From f2f662e6d00d8e1cd0c7320e5a5086ad7066c120 Mon Sep 17 00:00:00 2001 From: renierts Date: Thu, 18 Apr 2024 08:59:46 +0200 Subject: [PATCH 001/103] - Prepared a very basic package structure. - Added .gitignore - Added a directory for documentation. - Added a directory for unit tests. --- .gitignore | 160 +++++++++++++++++++++++++++ docs/Makefile | 20 ++++ docs/make.bat | 35 ++++++ docs/source/conf.py | 28 +++++ docs/source/index.rst | 20 ++++ src/fusionaihub/__init__.py | 0 src/fusionaihub/base/__init__.py | 0 src/fusionaihub/core/__init__.py | 0 src/fusionaihub/datasets/__init__.py | 0 src/fusionaihub/display/__init__.py | 0 src/fusionaihub/feature/__init__.py | 0 src/fusionaihub/util/__init__.py | 0 12 files changed, 263 insertions(+) create mode 100644 .gitignore create mode 100644 docs/Makefile create mode 100644 docs/make.bat create mode 100644 docs/source/conf.py create mode 100644 docs/source/index.rst create mode 100644 src/fusionaihub/__init__.py create mode 100644 src/fusionaihub/base/__init__.py create mode 100644 src/fusionaihub/core/__init__.py create mode 100644 src/fusionaihub/datasets/__init__.py create mode 100644 src/fusionaihub/display/__init__.py create mode 100644 src/fusionaihub/feature/__init__.py create mode 100644 src/fusionaihub/util/__init__.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6769e21 --- /dev/null +++ b/.gitignore @@ -0,0 +1,160 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ \ No newline at end of file diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 0000000..d0c3cbf --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,20 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line, and also +# from the environment for the first two. +SPHINXOPTS ?= +SPHINXBUILD ?= sphinx-build +SOURCEDIR = source +BUILDDIR = build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/docs/make.bat b/docs/make.bat new file mode 100644 index 0000000..dc1312a --- /dev/null +++ b/docs/make.bat @@ -0,0 +1,35 @@ +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set SOURCEDIR=source +set BUILDDIR=build + +%SPHINXBUILD% >NUL 2>NUL +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.https://www.sphinx-doc.org/ + exit /b 1 +) + +if "%1" == "" goto help + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% + +:end +popd diff --git a/docs/source/conf.py b/docs/source/conf.py new file mode 100644 index 0000000..05c079d --- /dev/null +++ b/docs/source/conf.py @@ -0,0 +1,28 @@ +# Configuration file for the Sphinx documentation builder. +# +# For the full list of built-in configuration values, see the documentation: +# https://www.sphinx-doc.org/en/master/usage/configuration.html + +# -- Project information ----------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information + +project = 'FusionAIHub' +copyright = '2024, Peter steiner, Max Curie, Nathaniel Chen, Azarakhsh Jalalvand' +author = 'Peter steiner, Max Curie, Nathaniel Chen, Azarakhsh Jalalvand' +release = '0.0' + +# -- General configuration --------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration + +extensions = [] + +templates_path = ['_templates'] +exclude_patterns = [] + + + +# -- Options for HTML output ------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output + +html_theme = 'alabaster' +html_static_path = ['_static'] diff --git a/docs/source/index.rst b/docs/source/index.rst new file mode 100644 index 0000000..845386f --- /dev/null +++ b/docs/source/index.rst @@ -0,0 +1,20 @@ +.. FusionAIHub documentation master file, created by + sphinx-quickstart on Thu Apr 18 08:53:16 2024. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to FusionAIHub's documentation! +======================================= + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/src/fusionaihub/__init__.py b/src/fusionaihub/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/fusionaihub/base/__init__.py b/src/fusionaihub/base/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/fusionaihub/core/__init__.py b/src/fusionaihub/core/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/fusionaihub/datasets/__init__.py b/src/fusionaihub/datasets/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/fusionaihub/display/__init__.py b/src/fusionaihub/display/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/fusionaihub/feature/__init__.py b/src/fusionaihub/feature/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/fusionaihub/util/__init__.py b/src/fusionaihub/util/__init__.py new file mode 100644 index 0000000..e69de29 From d04ed07469bfad422d97774614e10f447d727305 Mon Sep 17 00:00:00 2001 From: maxcurie <47543965+maxtcurie@users.noreply.github.com> Date: Thu, 18 Apr 2024 10:43:12 -0400 Subject: [PATCH 002/103] Initial publication With a script of fetching data, transferring data, and object (work-in-progress) that read and unify the dataset. --- Data_fetching/check_copy_and_rm.py | 166 ++++++++ Data_fetching/fetch_GAdata.py | 180 +++++++++ Data_fetching/fetch_toksearch.py | 593 +++++++++++++++++++++++++++++ Data_fetching/mygadata.py | 86 +++++ Dataset_prep/0read_data_run.ipynb | 258 +++++++++++++ Dataset_prep/data_prep_obj.py | 545 ++++++++++++++++++++++++++ 6 files changed, 1828 insertions(+) create mode 100644 Data_fetching/check_copy_and_rm.py create mode 100644 Data_fetching/fetch_GAdata.py create mode 100644 Data_fetching/fetch_toksearch.py create mode 100644 Data_fetching/mygadata.py create mode 100644 Dataset_prep/0read_data_run.ipynb create mode 100644 Dataset_prep/data_prep_obj.py diff --git a/Data_fetching/check_copy_and_rm.py b/Data_fetching/check_copy_and_rm.py new file mode 100644 index 0000000..e30ebd4 --- /dev/null +++ b/Data_fetching/check_copy_and_rm.py @@ -0,0 +1,166 @@ +import paramiko +import socket +import getpass +import numpy as np +import time +import os +import re + +#this script is intented to copy the file from iris and + +num_min=140000 +num_max=200000-1 + +subtask=2 #total paraelle one wants +residue=1 #transfer num%subtask==residue + +fetching_name_list=['actu','basic','profiles'] +diag_name=fetching_name_list[0] + +remote_directory = '/cscratch/curiem/Data_fetch_Basic' +local_directory = '/scratch/gpfs/EKOLEMEN/big_d3d_data/Basic_fetch' + +# Set up logging +paramiko.util.log_to_file("paramiko.log") + +# SSH settings for the proxy server +proxy_host = 'cybele.gat.com' +proxy_port = 2039 # Example port, modify as necessary +proxy_user = 'curiem' +proxy_password = getpass.getpass(f"Enter SSH password for {proxy_host}: ") + +# SSH settings for the destination server +destination_host = 'iris.gat.com' +destination_user = 'curiem' +destination_password = proxy_password + + +def create_ssh_connection(): + try: + # Tunneling through the proxy + proxy_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + proxy_sock.connect((proxy_host, proxy_port)) + + proxy_transport = paramiko.Transport(proxy_sock) + proxy_transport.connect(username=proxy_user, password=proxy_password) + proxy_channel = proxy_transport.open_channel('direct-tcpip', (destination_host, 22), (proxy_host, proxy_port)) + + # Create an SSH client and connect through the proxy channel + ssh_client = paramiko.SSHClient() + ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # Use with caution in production + ssh_client.connect(destination_host, username=destination_user, password=destination_password, sock=proxy_channel) + + return ssh_client, proxy_transport + except paramiko.AuthenticationException: + print("Authentication failed, please verify your credentials.") + return None, None + except paramiko.SSHException as sshException: + print(f"Could not establish SSH connection: {sshException}") + return None, None + except Exception as e: + print(f"Exception in connecting to the SSH Server: {e}") + return None, None + + +def extract_shot_numbers_remote(sftp, remote_path, suffix): + """ + Extract shot numbers from file names in a remote directory via SFTP, based on a given suffix. + + Args: + - sftp (paramiko.SFTPClient): An active SFTP client session. + - remote_path (str): The remote directory path to search for files. + - suffix (str): The suffix pattern to match in the file names. + + + + + Returns: + - set: A set of unique shot numbers extracted from the file names. + """ + try: + # List all files in the remote directory with their attributes + files_attr = sftp.listdir_attr(remote_path) + + # Regular expression pattern to match the shot numbers, incorporating the suffix variable + pattern = re.compile(rf'(\d+)_({suffix})\.h5') + + # Extract shot numbers that match the pattern from the file names + shot_numbers = { + int(match.group(1)) + for attr in files_attr + for match in [pattern.search(attr.filename)] if match + } + + return shot_numbers + except Exception as e: + print(f"Failed to extract shot numbers: {e}") + return set() + + + + +def copy_file(sftp, remote_path, local_path): + # Check the action and perform the corresponding task + sftp.get(remote_path, local_path) + message = f"File {remote_path} copied to {local_path} successfully." + return message + +def remove_file(sftp, remote_path): + sftp.remove(remote_path) + message = f"File {remote_path} removed successfully." + return message + +def copy_n_rm_file(sftp, remote_path, local_path): + message=copy_file(sftp, remote_path, local_path) + print(message) + message=remove_file(sftp, remote_path) + print(message) + + +def search_copy_and_delete(diag_name, remote_directory, local_directory, retries=3): + for attempt in range(retries): + try: + ssh_client, proxy_transport = create_ssh_connection() + + sftp = ssh_client.open_sftp() + while 1==1: + shot_numbers=extract_shot_numbers_remote(sftp, remote_directory, diag_name) + shot_numbers=list(shot_numbers) + + shot_numbers.sort() + shot_numbers=np.array(shot_numbers) + shot_numbers=shot_numbers[(num_min<=shot_numbers) & (shot_numbers<=num_max)] + + #print(shot_numbers) + if len(shot_numbers)<=2*subtask: + print('No files to copy, waiting for 10 min') + #wait for 10min + time.sleep(600) + continue + cp_shot_num=shot_numbers[:-2*subtask] + print(cp_shot_num) + for shot_num in cp_shot_num: + if int(shot_num)%subtask==residue: + for name_tmp in fetching_name_list: + remote_path=f'{remote_directory}/{shot_num}_{name_tmp}.h5' + local_path=f'{local_directory}/{shot_num}_{name_tmp}.h5' + copy_n_rm_file(sftp, remote_path, local_path) + + + ssh_client.close() + proxy_transport.close() + + break + except Exception as e: + print(f"Error processing on attempt {attempt + 1}: {e}") + if attempt < retries - 1: + time.sleep(5) + else: + print(f"Failed processing after {retries} attempts.") + ssh_client.close() + proxy_transport.close() + finally: + ssh_client.close() + proxy_transport.close() + +search_copy_and_delete(diag_name, remote_directory, local_directory, retries=3) \ No newline at end of file diff --git a/Data_fetching/fetch_GAdata.py b/Data_fetching/fetch_GAdata.py new file mode 100644 index 0000000..9007fcb --- /dev/null +++ b/Data_fetching/fetch_GAdata.py @@ -0,0 +1,180 @@ +import MDSplus +from mygadata import gadata +#import matplotlib.pyplot as plt +import h5py +import pickle +import numpy as np +import time +from tqdm import tqdm +import sys +import subprocess + + +#To run the code +#module purge & module load defaults +#python2.7 fetch_data.py + +#*******start of user block************ +output_path='/cscratch/curiem/Data_fetch_Basic' +ece_pcece=False +size_GB=400 +directory_path="/cscratch/curiem" #to check the total file sizes +shot_list=np.arange(170000,200000) + +interval=1000 +#shot_list=shot_list[:10] +#*******end of user block************ + +def size_limiter_sleep(directory_path="/cscratch/curiem", size_GB=450): + try: + size = subprocess.check_output(['du', '-sh', directory_path]).split()[0].decode('utf-8') + except subprocess.CalledProcessError as e: + print("Error fetching directory size: "+str(e)) + sys.exit(1) + + + print("Size of" +directory_path+": "+str(size)) + + if size[-1] == "G" and float(size[:-1]) > size_GB: + print("Size exceeds "+str(size_GB)+"GB. Sleeping for 1hr...") + + # Sleep for 1 hour + time.sleep(3600) # 3600 seconds = 1 hour + print("1 hour has passed. Checking size again...") + + try: + size = subprocess.check_output(['du', '-sh', directory_path]).split()[0].decode('utf-8') + except subprocess.CalledProcessError as e: + print("Error fetching directory size: "+str(e)) + sys.exit(1) + + if size[-1] == "G" and float(size[:-1]) > size_GB: + print("Size still exceeds "+str(size_GB)+"GB. Stoping") + sys.exit(1) + + + +def data2dict(shotn, signame, hf, atlconn) : + dict_group = hf.create_group(str(signame)) + try: + data = gadata(signame, shotn, connection=atlconn) + dict_group['xdata'] = data.xdata + dict_group['ydata'] = data.ydata + dict_group['zdata'] = data.zdata + dict_group['xunits'] = data.xunits + dict_group['yunits'] = data.yunits + dict_group['zunits'] = data.zunits + except: + print('%s not available, filled with NULL!' % (signame)) + dict_group['xdata'] = [] + dict_group['ydata'] = [] + dict_group['zdata'] = [] + dict_group['xunits'] = [] + dict_group['yunits'] = [] + dict_group['zunits'] = [] + del atlconn + #global atlconn + atlconn = MDSplus.Connection('atlas.gat.com') + pass + return atlconn + +atlconn = MDSplus.Connection('atlas.gat.com') +ech_gytname = ['lei','luk','r2d'] + +#shot_list = np.loadtxt('DIIID_BES_Shot_List_Fatima.txt',delimiter='\n',dtype=np.int32) +# shot_list = np.load('tm-control-shots.npy');shot_list=np.unique(shot_list).astype(np.int) +# shot_list = [np.int32(sys.argv[1])] +# shot_list=[193266,193273,193280] +cannot_find=['triangularity_u','triangularity_l','pech','neutronsrate']\ + +['fplastic', 'fzns',\ + 'fncrate01', 'fncrate02', 'fncrate03', 'fncrate04',\ + 'plasticfx1', 'plasticfx2', 'plasticfx3', 'plasticfx4',\ + 'neutronsrate1','neutronsrate2','neutronsrate3', 'neutronsrate4'] + +#basic is fundimental measured quantities (in contrast of fitted quantities) + +signal_list= { +'profiles':['betap','betan','pres', \ + 'wmhd','li',\ + 'q0','q95','qmin','qpsi','rhoqmin',\ + 'r0','aminor',\ + 'kappa','tritop','tribot',\ + 'alpha','psirz',\ + 'ssibry', 'ssimag',\ + 'rmaxis','zmaxis',\ + 'volume',\ + 'drsep','gapbot','gapin','gapout','gaptop',\ + 'zxpt1','zxpt2',\ + 'edensfit', 'etempfit',\ + 'trotfit','itempfit','idensfit',\ + 'n1rms','n2rms','n3rms'], + \ +'basic':['ip', 'ipsip', 'iptipp','pcbcoil', 'bcoil','bt','vloop']\ + +[ 'plasticfix', 'fzns']\ + +['fs00','fs01','fs02','fs03','fs04','fs05'],\ +'actu': ['pinjf_%dl' % k for k in [15,21,30,33]]+['pinjf_%dr' % k for k in [15,21,30,33]]\ + +['tinj_%dl' % k for k in [15,21,30,33]]+['tinj_%dr' % k for k in [15,21,30,33]]\ + +['echpwrc','echpwr']\ + +['ec%sfpwrc' % (x) for x in ech_gytname]\ + +['ec%sxmfrac' % (x) for x in ech_gytname]\ + +['ec%spolang' % (x) for x in ech_gytname]\ + +['gasa', 'gasb', 'gasc', 'gasd', 'gase']\ + +['c19', 'c79', 'c139', 'c199', 'c259', 'c319', \ + 'iu30', 'iu90', 'iu150', 'iu210', 'iu270', 'iu330', \ + 'il30', 'il90', 'il150', 'il210', 'il270', 'il330']\ + +['ecoila', 'ecoilb', 'e567up', 'e567dn', 'e89dn', 'e89up']\ + +['f1a','f2a','f3a','f4a','f5a','f6a','f7a','f8a','f9a',\ + 'f1b','f2b','f3b','f4b','f5b','f6b','f7b','f8b','f9b'] +} + + +for i in tqdm(range(len(shot_list))): + shotn=shot_list[i] + t1=time.time() + + for grpname,signals in signal_list.items(): + hf = h5py.File(output_path+'/'+ str(shotn)+'_'+grpname+'.h5','w') + for signame in signals: + atlconn=data2dict(shotn,signame,hf,atlconn) + hf.close() + + + if ece_pcece: + hf = h5py.File(output_path+'/'+ str(shotn)+'_ece.h5','w') + pece_group = hf.create_group('pcece') + ece_group = hf.create_group('ece') + rtece_group = hf.create_group('rtece') + + for k in range(40): + print('chn %i' % (k+1)) + pece_data = gadata('pcece%d' % (k+1), shotn, connection=atlconn) + pece_group['pcece%02d' % (k+1)] = pece_data.zdata + ece_data = gadata('tecef%02d' % (k+1), shotn, connection=atlconn) + ece_group['tecef%02d' % (k+1)] = ece_data.zdata + + rtece_data = gadata('ecsdata%d' % (k+97), shotn, connection=atlconn) + rtece_group['ecsdata%d' % (k+97)] = rtece_data.zdata + + pece_group['xdata'] = pece_data.xdata + pece_group['ydata'] = pece_data.ydata + pece_group['xunits'] = pece_data.xunits + pece_group['yunits'] = pece_data.yunits + pece_group['pceceunits'] = pece_data.zunits + + ece_group['xdata'] = ece_data.xdata + ece_group['ydata'] = ece_data.ydata + ece_group['xunits'] = ece_data.xunits + ece_group['yunits'] = ece_data.yunits + ece_group['eceunits'] = ece_data.zunits + + rtece_group['xdata'] = rtece_data.xdata + rtece_group['ydata'] = rtece_data.ydata + rtece_group['xunits'] = rtece_data.xunits + rtece_group['yunits'] = rtece_data.yunits + rtece_group['rteceunits'] = rtece_data.zunits + hf.close() + if i % interval == 0: + size_limiter_sleep(size_GB=size_GB) + print('Shot #%d'%(shotn,)) + print(i) +# print('time per shot:%ds' % (time.time()-t1)) diff --git a/Data_fetching/fetch_toksearch.py b/Data_fetching/fetch_toksearch.py new file mode 100644 index 0000000..3654647 --- /dev/null +++ b/Data_fetching/fetch_toksearch.py @@ -0,0 +1,593 @@ +from toksearch import MdsSignal,PtDataSignal +from toksearch import Pipeline +import numpy as np +import os +import time +import h5py +import subprocess +import sys + +#this one runs on iris, run the following +#module purge +#module load toksearch + +#for copy: +#scp -r -o 'ProxyCommand ssh -p 2039 curiem@cybele.gat.com -W %h:%p' curiem@iris.gat.com:/cscratch/curiem/Data_fetch_TS/15* ./ + +#***********start of user block****************** +#limit of the size +size_GB=400 + +#After fetching (interval) discharges, check the total directory size +interval=100 + +#Root directory of the user for total size check +directory_path="/cscratch/curiem" + +#list of discharges to fetch +shots = np.arange(150000,170000,dtype=int) + +# one can set start_shot the where to start. (usually used for restarting the fetching due to unexpected termination) +start_shot=min(shots) + +#path to save the files +path = '/cscratch/curiem/Data_fetch_CER/' + +#diag_names=[mag,mag_hi,bes,ece_cali,ece_s, co2_den, co2_pl, co2_s, ts,ts_rz,ts_error,cer, mse,custom] +diag_name='cer' + +#custom sig_names_custom, the suffix is fixed to be custom for now. +if diag_name=='custom': + sig_names_custom=[''] + names_custom=[''] + tree='' #ptdata fo PTDATA, other trees names for MDS+ +#***********end of user block****************** + +shots.sort() + +def size_limiter(directory_path="/cscratch/curiem", size_GB=450): + try: + size = subprocess.check_output(['du', '-sh', directory_path]).split()[0].decode('utf-8') + except subprocess.CalledProcessError as e: + print(f"Error fetching directory size: {e}") + return + + print(f"Size of {directory_path}: {size}") + + if size[-1] == "G" and float(size[:-1]) > size_GB: + print(f"Size exceeds {size_GB}GB. Stopping...") + sys.exit(1) + +def size_limiter_sleep(directory_path="/cscratch/curiem", size_GB=450): + try: + size = subprocess.check_output(['du', '-sh', directory_path]).split()[0].decode('utf-8') + except subprocess.CalledProcessError as e: + print(f"Error fetching directory size: {e}") + sys.exit(1) + + + print(f"Size of {directory_path}: {size}") + + if size[-1] == "G" and float(size[:-1]) > size_GB: + print(f"Size exceeds {size_GB}GB. Sleeping for 1hr...") + + # Sleep for 1 hour + time.sleep(3600) # 3600 seconds = 1 hour + print("1 hour has passed. Checking size again...") + + try: + size = subprocess.check_output(['du', '-sh', directory_path]).split()[0].decode('utf-8') + except subprocess.CalledProcessError as e: + print(f"Error fetching directory size: {e}") + sys.exit(1) + + if size[-1] == "G" and float(size[:-1]) > size_GB: + print(f"Size still exceeds {size_GB}GB. Stoping") + sys.exit(1) + +def save_dict_to_hdf5(dictionary, h5file): + for key, value in dictionary.items(): + if isinstance(value, dict): + group = h5file.create_group(key) + save_dict_to_hdf5(value, group) + else: + h5file.create_dataset(key, data=value) + +#generate the name and signal to fetch i ntoksearch +def signal_gen(diag_name='zipfit',sig_names_custom=[''],names_custom=[''],tree_custom=''): + signals=[] + names=[] + + + #Counter: fncrate** + #Adjustable scintillator: fplastic, fzns + #Fixed scintillator: plasticfx* + #Approximate calibrated signal: neutronsrate* + if diag_name=='neutron': + sig_names=['fplastic', 'fzns',\ + 'fncrate01', 'fncrate02', 'fncrate03', 'fncrate04',\ + 'plasticfx1', 'plasticfx2', 'plasticfx3', 'plasticfx4',\ + 'neutronsrate1','neutronsrate2','neutronsrate3', 'neutronsrate4'] + names= ['fplastic', 'fzns',\ + 'fncrate01', 'fncrate02', 'fncrate03', 'fncrate04',\ + 'plasticfx1', 'plasticfx2', 'plasticfx3', 'plasticfx4',\ + 'cali.neutronsrate1','cali.neutronsrate2','cali.neutronsrate3', 'cali.neutronsrate4'] + + elif diag_name=='mag_full': + sig_name_without_d=['mpi11m322', 'mpi1a322', 'mpi2a322', 'mpi3a322', 'mpi4a322', 'mpi5a322', 'mpi8a322', 'mpi89a322', 'mpi9a322', 'mpi79fa322', 'mpi79na322', 'mpi7fa322', 'mpi7na322', 'mpi67a322', 'mpi6fa322', 'mpi6na322', 'mpi66m322', 'mpi1b322', 'mpi2b322', 'mpi3b322', 'mpi4b322', 'mpi5b322', 'mpi8b322', 'mpi89b322', 'mpi9b322', 'mpi79b322', 'mpi7fb322', 'mpi7nb322', 'mpi67b322', 'mpi6fb322', 'mpi6nb322', 'mpi2a067', 'mpi11m067', 'mpi2b067', 'mpi67a097', 'mpi67a067', 'mpi66m067', 'mpi67b097', 'mpi67b067', 'mpi1a139', 'mpi2a139', 'mpi3a139', 'mpi4a139', 'mpi5a139', 'mpi79a147', 'mpi67a142', 'mpi67a157', 'mpi6na132', 'mpi6na157', 'mpi66m157', 'mpi6nb157', 'mpi6fb142', 'mpi67b157', 'mpi7nb142', 'mpi79b142', 'mpi5b139', 'mpi4b139', 'mpi3b139', 'mpi2b139', 'mpi1b139', 'mpi1b157', 'mpi1u157', 'mpi2u157', 'mpi3u157', 'mpi4u157', 'mpi5u157', 'mpi6u157', 'mpi7u157', 'dsl1u180', 'dsl2u180', 'dsl3u180', 'dsl4u157', 'dsl5u157', 'dsl6u157', 'mpi66m127', 'mpi66m132', 'mpi66m137', 'mpi66b137', 'mpi6nb137', 'mpi66m307', 'mpi66m312', 'mpi6na312', 'mpi66b312', 'mpi6nb312', 'mpi66m322', 'mpi1l020', 'mpi2l020', 'mpi1l050', 'mpi1l110', 'mpi1l180', 'mpi2l180', 'mpi3l180', 'mpi1l230', 'mpi1l320', 'mpi66m020', 'mpi66m067', 'mpi66m097', 'mpi66m127', 'mpi66m132', 'mpi66m137', 'mpi66m157', 'mpi66m200', 'mpi66m247', 'mpi66m277', 'mpi66m307', 'mpi66m312', 'mpi66m322', 'mpi66m340', 'mpi67a022', 'mpi67a037', 'mpi67a1', 'mpi67a052', 'mpi67a067', 'mpi67a082', 'mpi67a097', 'mpi67a2', 'mpi67a142', 'mpi67a157', 'mpi67a3', 'mpi67a217', 'mpi67a4', 'mpi67a262', 'mpi67a277', 'mpi67a5', 'mpi67a307', 'mpi67a337', 'mpi67a6', 'mpi67b022', 'mpi67b037', 'mpi67b1', 'mpi67b052', 'mpi67b097', 'mpi67b2', 'mpi67b157', 'mpi67b3', 'mpi67b217', 'mpi67b4', 'mpi67b277', 'mpi67b5', 'mpi67b337', 'mpi67b6', 'mpi79a072', 'mpi79a147', 'mpi79a222', 'mpi79a272', 'mpi79b067', 'mpi79b142', 'mpi79b217', 'mpi79b277', 'mpi5a139', 'mpi4a139', 'mpi3a139', 'mpi2a139', 'mpi1a139', 'mpi1b139', 'mpi2b139', 'mpi3b139', 'mpi4b139', 'mpi5b139', 'mpi5a199', 'mpi4a199', 'mpi3a199', 'mpi2a199', 'mpi1a199', 'mpi1b199', 'mpi2b199', 'mpi3b199', 'mpi4b199', 'mpi5b199', 'mpi1a011', 'mpi1a049', 'mpi1a109', 'mpi1a139', 'mpi1a199', 'mpi1a244', 'mpi1a274', 'mpi1a341', 'mpi1b011', 'mpi1b049', 'mpi1b109', 'mpi1b139', 'mpi1b199', 'mpi1b244', 'mpi1b274', 'mpi1b341', 'isl66m017', 'isl66m042', 'isl66m072', 'isl66m102', 'isl66m132', 'isl66m197', 'isl66m252', 'isl66m312', 'isl67a017', 'isl67a052', 'isl67a072', 'isl67a112', 'isl67a132', 'isl67a197', 'isl67a252', 'isl67a312', 'isl67b017', 'isl67b052', 'isl67b072', 'isl67b112', 'isl67b132', 'isl67b197', 'isl67b252', 'isl67b312', 'isl79a072', 'isl79a147', 'isl79a222', 'isl79a272', 'isl79b067', 'isl79b142', 'isl79b217', 'isl79b277', 'isl5a139', 'isl4a139', 'isl3a139', 'isl2a139', 'isl1a139', 'isl1b139', 'isl2b139', 'isl3b139', 'isl4b139', 'isl5b139', 'isl5a199', 'isl4a199', 'isl3a199', 'isl2a199', 'isl1a199', 'isl1b199', 'isl2b199', 'isl3b199', 'isl4b199', 'isl5b199', 'isl1a011', 'isl1a049', 'isl1a109', 'isl1a139', 'isl1a199', 'isl1a244', 'isl1a274', 'isl1a341', 'isl1b011', 'isl1b049', 'isl1b109', 'isl1b139', 'isl1b199', 'isl1b244', 'isl1b274', 'isl1b341', 'dsl12a067', 'dsl34a067', 'dsl59a067', 'dsl79a067', 'dsl67a067', 'dsl66m052', 'dsl67b067', 'dsl79b067', 'dsl59b067', 'dsl34b067', 'dsl12b067', 'dsl12a157', 'dsl34a157', 'dsl59a157', 'dsl79a157', 'dsl67a157', 'dsl66m152', 'dsl67b157', 'dsl79b157', 'dsl59b157', 'dsl34b157', 'dsl12b157', 'dsl67a067', 'dsl67a157', 'sl67fa345', 'sl67na345', 'dsl66m052', 'sl66a132', 'sl66b132', 'dsl66m152', 'sl66a312', 'sl66b312', 'sl67nb015', 'sl67fb015', 'dsl67b067', 'dsl67b157', 'esl66m019', 'esl019', 'esl66m079', 'esl079', 'esl66m139', 'esl139', 'esl66m199', 'esl199', 'esl66m259', 'esl259', 'esl66m319', 'esl319', 'esl67a004', 'esl67a034', 'esl67a064', 'esl67a094', 'esl67a124', 'esl67a154', 'esl67a184', 'esl67a214', 'esl67a244', 'esl67a274', 'esl67a304', 'esl67a334', 'esl67b004', 'esl67b034', 'esl67b064', 'esl67b094', 'esl67b124', 'esl67b154', 'esl67b184', 'esl67b214', 'esl67b244', 'esl67b274', 'esl67b304', 'esl67b334', 'bti66m053', 'bti66m132', 'bti66m233', 'bti66m312', 'psf1a', 'psf1a', 'psf1a', 'psf1a', 'psf6natotl', 'psf6na', 'psi11mtotl', 'psi11m', 'psi6atotl', 'psi6a', 'psf1a', 'psf6natotl', 'psi11mtotl', 'psi6atotl', 'psf2a', 'psf3a', 'psf4a', 'psf5a', 'psf8a', 'psf9a', 'psf7fa', 'psf7na', 'psf6fa', 'psf6na', 'psf6nb', 'psf6fb', 'psf7nb', 'psf7fb', 'psf9b', 'psf8b', 'psf5b', 'psf4b', 'psf3b', 'psf2b', 'psf1b', 'psi11m', 'psi12a', 'psi23a', 'psi34a', 'psi45a', 'psi58a', 'psi9a', 'psi7a', 'psi6a', 'psi6b', 'psi7b', 'psi9b', 'psi89nb', 'psi89fb', 'psi58b', 'psi45b', 'psi34b', 'psi23b', 'psi12b', 'psi1l', 'psi2l', 'psi3l', 'mpi1b', 'mpi66m020', 'mpi66m097', 'mpi66m020', 'mpi66m097', 'mpi66m067', 'mpi66m247', 'mpi66m097', 'mpi66m277', 'mpi66m127', 'mpi66m307', 'mpi66m157', 'mpi66m340', 'mpi66m200', 'mpi66m020', 'mpi66m247', 'mpi66m127', 'mpi66m277', 'mpi66m157', 'mpi66m307', 'mpi66m200', 'mpi66m340', 'mpi66m067', 'mpi67a022', 'mpi67a217', 'mpi67a037', 'mpi67a067', 'mpi67a052', 'mpi67a022', 'mpi67a067', 'mpi67a262', 'mpi67a082', 'mpi67a052', 'mpi67a097', 'mpi67a082', 'mpi67a142', 'mpi67a037', 'mpi67a217', 'mpi67a097', 'mpi67a262', 'mpi67a277', 'mpi67a277', 'mpi67a307', 'mpi67a307', 'mpi67a337', 'mpi67a337', 'mpi67a142', 'mpi67b022', 'mpi67b052', 'mpi67b037', 'mpi67b217', 'mpi67b052', 'mpi67b037', 'mpi67b097', 'mpi67b277', 'mpi67b157', 'mpi67b337', 'mpi67b217', 'mpi67b097', 'mpi67b277', 'mpi67b157', 'mpi67b337', 'mpi67b022', 'mpi79a072', 'mpi79a222', 'mpi79a147', 'mpi79a072', 'mpi79a222', 'mpi79a272', 'mpi79a272', 'mpi79a147', 'mpi79b067', 'mpi79b217', 'mpi79b142', 'mpi79b067', 'mpi79b217', 'mpi79b277', 'mpi79b277', 'mpi79b142', 'mpi1a011', 'mpi1a199', 'mpi1a049', 'mpi1a244', 'mpi1a109', 'mpi1a011', 'mpi1a139', 'mpi1a341', 'mpi1a199', 'mpi1a139', 'mpi1a244', 'mpi1a274', 'mpi1a274', 'mpi1a109', 'mpi1a341', 'mpi1a049', 'mpi1b011', 'mpi1b199', 'mpi1b049', 'mpi1b244', 'mpi1b109', 'mpi1b011', 'mpi1b139', 'mpi1b341', 'mpi1b199', 'mpi1b139', 'mpi1b244', 'mpi1b274', 'mpi1b274', 'mpi1b109', 'mpi1b341', 'mpi1b049', 'mpi5a199', 'mpi5a139', 'mpi4a199', 'mpi4a139', 'mpi3a199', 'mpi3a139', 'mpi2a199', 'mpi2a139', 'mpi1a199', 'mpi1a139', 'mpi1b199', 'mpi1b139', 'mpi2b199', 'mpi2b139', 'mpi3b199', 'mpi3b139', 'mpi4b199', 'mpi4b139', 'mpi5b199', 'mpi5b139', 'isl66m017', 'isl66m042', 'isl66m042', 'isl66m072', 'isl66m072', 'isl66m252', 'isl66m102', 'isl66m132', 'isl66m132', 'isl66m312', 'isl66m197', 'isl66m017', 'isl66m252', 'isl66m102', 'isl66m312', 'isl66m197', 'isl67a017', 'isl67a052', 'isl67a052', 'isl67a072', 'isl67a072', 'isl67a252', 'isl67a112', 'isl67a132', 'isl67a132', 'isl67a312', 'isl67a197', 'isl67a017', 'isl67a252', 'isl67a112', 'isl67a312', 'isl67a197', 'isl67b017', 'isl67b052', 'isl67b052', 'isl67b072', 'isl67b072', 'isl67b252', 'isl67b112', 'isl67b132', 'isl67b132', 'isl67b312', 'isl67b197', 'isl67b017', 'isl67b252', 'isl67b112', 'isl67b312', 'isl67b197', 'isl79a072', 'isl79a222', 'isl79a147', 'isl79a072', 'isl79a222', 'isl79a272', 'isl79a272', 'isl79a147', 'isl79b067', 'isl79b217', 'isl79b142', 'isl79b067', 'isl79b217', 'isl79b277', 'isl79b277', 'isl79b142', 'isl1a011', 'isl1a199', 'isl1a049', 'isl1a244', 'isl1a109', 'isl1a011', 'isl1a139', 'isl1a341', 'isl1a199', 'isl1a139', 'isl1a244', 'isl1a274', 'isl1a274', 'isl1a109', 'isl1a341', 'isl1a049', 'isl1b011', 'isl1b199', 'isl1b049', 'isl1b244', 'isl1b109', 'isl1b011', 'isl1b139', 'isl1b341', 'isl1b199', 'isl1b139', 'isl1b244', 'isl1b274', 'isl1b274', 'isl1b109', 'isl1b341', 'isl1b049', 'isl5a199', 'isl5a139', 'isl4a199', 'isl4a139', 'isl3a199', 'isl3a139', 'isl2a199', 'isl2a139', 'isl1a199', 'isl1a139', 'isl1b199', 'isl1b139', 'isl2b199', 'isl2b139', 'isl3b199', 'isl3b139', 'isl4b199', 'isl4b139', 'isl5b199', 'isl5b139', 'esl66m019', 'esl66m079', 'esl66m079', 'esl66m259', 'esl66m139', 'esl66m319', 'esl66m199', 'esl66m019', 'esl66m259', 'esl66m139', 'esl66m319', 'esl66m199', 'esl66m079', 'esl66m259', 'esl66m139', 'esl66m319', 'esl66m199', 'esl66m019', 'esl67a004', 'esl67a244', 'esl67a034', 'esl67a154', 'esl67a064', 'esl67a184', 'esl67a094', 'esl67a274', 'esl67a124', 'esl67a304', 'esl67a154', 'esl67a334', 'esl67a184', 'esl67a004', 'esl67a214', 'esl67a094', 'esl67a244', 'esl67a124', 'esl67a274', 'esl67a034', 'esl67a304', 'esl67a064', 'esl67a334', 'esl67a214', 'esl67b004', 'esl67b244', 'esl67b034', 'esl67b154', 'esl67b064', 'esl67b184', 'esl67b094', 'esl67b274', 'esl67b124', 'esl67b304', 'esl67b154', 'esl67b334', 'esl67b184', 'esl67b004', 'esl67b214', 'esl67b094', 'esl67b244', 'esl67b124', 'esl67b274', 'esl67b034', 'esl67b304', 'esl67b064', 'esl67b334', 'esl67b214', 'bti66m053', 'bti66m233', 'bti66m132', 'bti66m053', 'bti66m233', 'bti66m312', 'bti66m312', 'bti66m132', 'mpi2a067', 'mpi1u157', 'isl79a'] + + name_without_d=['mpi.11.m.322', 'mpi.1.a.322', 'mpi.2.a.322', 'mpi.3.a.322', 'mpi.4.a.322', 'mpi.5.a.322', 'mpi.8.a.322', 'mpi.89.a.322', 'mpi.9.a.322', 'mpi.79.fa.322', 'mpi.79.na.322', 'mpi.7.fa.322', 'mpi.7.na.322', 'mpi.67.a.322', 'mpi.6.fa.322', 'mpi.6.na.322', 'mpi.66.m.322', 'mpi.1.b.322', 'mpi.2.b.322', 'mpi.3.b.322', 'mpi.4.b.322', 'mpi.5.b.322', 'mpi.8.b.322', 'mpi.89.b.322', 'mpi.9.b.322', 'mpi.79.b.322', 'mpi.7.fb.322', 'mpi.7.nb.322', 'mpi.67.b.322', 'mpi.6.fb.322', 'mpi.6.nb.322', 'mpi.2.a.067', 'mpi.11.m.067', 'mpi.2.b.067', 'mpi.67.a.097', 'mpi.67.a.067', 'mpi.66.m.067', 'mpi.67.b.097', 'mpi.67.b.067', 'mpi.1.a.139', 'mpi.2.a.139', 'mpi.3.a.139', 'mpi.4.a.139', 'mpi.5.a.139', 'mpi.79.a.147', 'mpi.67.a.142', 'mpi.67.a.157', 'mpi.6.na.132', 'mpi.6.na.157', 'mpi.66.m.157', 'mpi.6.nb.157', 'mpi.6.fb.142', 'mpi.67.b.157', 'mpi.7.nb.142', 'mpi.79.b.142', 'mpi.5.b.139', 'mpi.4.b.139', 'mpi.3.b.139', 'mpi.2.b.139', 'mpi.1.b.139', 'mpi.1.b.157', 'mpi.1.u.157', 'mpi.2.u.157', 'mpi.3.u.157', 'mpi.4.u.157', 'mpi.5.u.157', 'mpi.6.u.157', 'mpi.7.u.157', 'dsl.1.u.180', 'dsl.2.u.180', 'dsl.3.u.180', 'dsl.4.u.157', 'dsl.5.u.157', 'dsl.6.u.157', 'mpi.66.m.127', 'mpi.66.m.132', 'mpi.66.m.137', 'mpi.66.b.137', 'mpi.6.nb.137', 'mpi.66.m.307', 'mpi.66.m.312', 'mpi.6.na.312', 'mpi.66.b.312', 'mpi.6.nb.312', 'mpi.66.m.322', 'mpi.1.l.020', 'mpi.2.l.020', 'mpi.1.l.050', 'mpi.1.l.110', 'mpi.1.l.180', 'mpi.2.l.180', 'mpi.3.l.180', 'mpi.1.l.230', 'mpi.1.l.320', 'mpi.66.m.020', 'mpi.66.m.067', 'mpi.66.m.097', 'mpi.66.m.127', 'mpi.66.m.132', 'mpi.66.m.137', 'mpi.66.m.157', 'mpi.66.m.200', 'mpi.66.m.247', 'mpi.66.m.277', 'mpi.66.m.307', 'mpi.66.m.312', 'mpi.66.m.322', 'mpi.66.m.340', 'mpi.67.a.022', 'mpi.67.a.037', 'mpi.67.a.1', 'mpi.67.a.052', 'mpi.67.a.067', 'mpi.67.a.082', 'mpi.67.a.097', 'mpi.67.a.2', 'mpi.67.a.142', 'mpi.67.a.157', 'mpi.67.a.3', 'mpi.67.a.217', 'mpi.67.a.4', 'mpi.67.a.262', 'mpi.67.a.277', 'mpi.67.a.5', 'mpi.67.a.307', 'mpi.67.a.337', 'mpi.67.a.6', 'mpi.67.b.022', 'mpi.67.b.037', 'mpi.67.b.1', 'mpi.67.b.052', 'mpi.67.b.097', 'mpi.67.b.2', 'mpi.67.b.157', 'mpi.67.b.3', 'mpi.67.b.217', 'mpi.67.b.4', 'mpi.67.b.277', 'mpi.67.b.5', 'mpi.67.b.337', 'mpi.67.b.6', 'mpi.79.a.072', 'mpi.79.a.147', 'mpi.79.a.222', 'mpi.79.a.272', 'mpi.79.b.067', 'mpi.79.b.142', 'mpi.79.b.217', 'mpi.79.b.277', 'mpi.5.a.139', 'mpi.4.a.139', 'mpi.3.a.139', 'mpi.2.a.139', 'mpi.1.a.139', 'mpi.1.b.139', 'mpi.2.b.139', 'mpi.3.b.139', 'mpi.4.b.139', 'mpi.5.b.139', 'mpi.5.a.199', 'mpi.4.a.199', 'mpi.3.a.199', 'mpi.2.a.199', 'mpi.1.a.199', 'mpi.1.b.199', 'mpi.2.b.199', 'mpi.3.b.199', 'mpi.4.b.199', 'mpi.5.b.199', 'mpi.1.a.011', 'mpi.1.a.049', 'mpi.1.a.109', 'mpi.1.a.139', 'mpi.1.a.199', 'mpi.1.a.244', 'mpi.1.a.274', 'mpi.1.a.341', 'mpi.1.b.011', 'mpi.1.b.049', 'mpi.1.b.109', 'mpi.1.b.139', 'mpi.1.b.199', 'mpi.1.b.244', 'mpi.1.b.274', 'mpi.1.b.341', 'isl.66.m.017', 'isl.66.m.042', 'isl.66.m.072', 'isl.66.m.102', 'isl.66.m.132', 'isl.66.m.197', 'isl.66.m.252', 'isl.66.m.312', 'isl.67.a.017', 'isl.67.a.052', 'isl.67.a.072', 'isl.67.a.112', 'isl.67.a.132', 'isl.67.a.197', 'isl.67.a.252', 'isl.67.a.312', 'isl.67.b.017', 'isl.67.b.052', 'isl.67.b.072', 'isl.67.b.112', 'isl.67.b.132', 'isl.67.b.197', 'isl.67.b.252', 'isl.67.b.312', 'isl.79.a.072', 'isl.79.a.147', 'isl.79.a.222', 'isl.79.a.272', 'isl.79.b.067', 'isl.79.b.142', 'isl.79.b.217', 'isl.79.b.277', 'isl.5.a.139', 'isl.4.a.139', 'isl.3.a.139', 'isl.2.a.139', 'isl.1.a.139', 'isl.1.b.139', 'isl.2.b.139', 'isl.3.b.139', 'isl.4.b.139', 'isl.5.b.139', 'isl.5.a.199', 'isl.4.a.199', 'isl.3.a.199', 'isl.2.a.199', 'isl.1.a.199', 'isl.1.b.199', 'isl.2.b.199', 'isl.3.b.199', 'isl.4.b.199', 'isl.5.b.199', 'isl.1.a.011', 'isl.1.a.049', 'isl.1.a.109', 'isl.1.a.139', 'isl.1.a.199', 'isl.1.a.244', 'isl.1.a.274', 'isl.1.a.341', 'isl.1.b.011', 'isl.1.b.049', 'isl.1.b.109', 'isl.1.b.139', 'isl.1.b.199', 'isl.1.b.244', 'isl.1.b.274', 'isl.1.b.341', 'dsl.12.a.067', 'dsl.34.a.067', 'dsl.59.a.067', 'dsl.79.a.067', 'dsl.67.a.067', 'dsl.66.m.052', 'dsl.67.b.067', 'dsl.79.b.067', 'dsl.59.b.067', 'dsl.34.b.067', 'dsl.12.b.067', 'dsl.12.a.157', 'dsl.34.a.157', 'dsl.59.a.157', 'dsl.79.a.157', 'dsl.67.a.157', 'dsl.66.m.152', 'dsl.67.b.157', 'dsl.79.b.157', 'dsl.59.b.157', 'dsl.34.b.157', 'dsl.12.b.157', 'dsl.67.a.067', 'dsl.67.a.157', 'sl.67.fa.345', 'sl.67.na.345', 'dsl.66.m.052', 'sl.66.a.132', 'sl.66.b.132', 'dsl.66.m.152', 'sl.66.a.312', 'sl.66.b.312', 'sl.67.nb.015', 'sl.67.fb.015', 'dsl.67.b.067', 'dsl.67.b.157', 'esl.66.m.019', 'esl.019..', 'esl.66.m.079', 'esl.079..', 'esl.66.m.139', 'esl.139..', 'esl.66.m.199', 'esl.199..', 'esl.66.m.259', 'esl.259..', 'esl.66.m.319', 'esl.319..', 'esl.67.a.004', 'esl.67.a.034', 'esl.67.a.064', 'esl.67.a.094', 'esl.67.a.124', 'esl.67.a.154', 'esl.67.a.184', 'esl.67.a.214', 'esl.67.a.244', 'esl.67.a.274', 'esl.67.a.304', 'esl.67.a.334', 'esl.67.b.004', 'esl.67.b.034', 'esl.67.b.064', 'esl.67.b.094', 'esl.67.b.124', 'esl.67.b.154', 'esl.67.b.184', 'esl.67.b.214', 'esl.67.b.244', 'esl.67.b.274', 'esl.67.b.304', 'esl.67.b.334', 'bti.66.m.053', 'bti.66.m.132', 'bti.66.m.233', 'bti.66.m.312', 'psf.1.a.', 'psf.1.a.', 'psf.1.a.', 'psf.1.a.', 'psf.6.natotl.', 'psf.6.na.', 'psi.11.mtotl.', 'psi.11.m.', 'psi.6.atotl.', 'psi.6.a.', 'psf.1.a.', 'psf.6.natotl.', 'psi.11.mtotl.', 'psi.6.atotl.', 'psf.2.a.', 'psf.3.a.', 'psf.4.a.', 'psf.5.a.', 'psf.8.a.', 'psf.9.a.', 'psf.7.fa.', 'psf.7.na.', 'psf.6.fa.', 'psf.6.na.', 'psf.6.nb.', 'psf.6.fb.', 'psf.7.nb.', 'psf.7.fb.', 'psf.9.b.', 'psf.8.b.', 'psf.5.b.', 'psf.4.b.', 'psf.3.b.', 'psf.2.b.', 'psf.1.b.', 'psi.11.m.', 'psi.12.a.', 'psi.23.a.', 'psi.34.a.', 'psi.45.a.', 'psi.58.a.', 'psi.9.a.', 'psi.7.a.', 'psi.6.a.', 'psi.6.b.', 'psi.7.b.', 'psi.9.b.', 'psi.89.nb.', 'psi.89.fb.', 'psi.58.b.', 'psi.45.b.', 'psi.34.b.', 'psi.23.b.', 'psi.12.b.', 'psi.1.l.', 'psi.2.l.', 'psi.3.l.', 'mpi.1.b.', 'mpi.66.m.020', 'mpi.66.m.097', 'mpi.66.m.020', 'mpi.66.m.097', 'mpi.66.m.067', 'mpi.66.m.247', 'mpi.66.m.097', 'mpi.66.m.277', 'mpi.66.m.127', 'mpi.66.m.307', 'mpi.66.m.157', 'mpi.66.m.340', 'mpi.66.m.200', 'mpi.66.m.020', 'mpi.66.m.247', 'mpi.66.m.127', 'mpi.66.m.277', 'mpi.66.m.157', 'mpi.66.m.307', 'mpi.66.m.200', 'mpi.66.m.340', 'mpi.66.m.067', 'mpi.67.a.022', 'mpi.67.a.217', 'mpi.67.a.037', 'mpi.67.a.067', 'mpi.67.a.052', 'mpi.67.a.022', 'mpi.67.a.067', 'mpi.67.a.262', 'mpi.67.a.082', 'mpi.67.a.052', 'mpi.67.a.097', 'mpi.67.a.082', 'mpi.67.a.142', 'mpi.67.a.037', 'mpi.67.a.217', 'mpi.67.a.097', 'mpi.67.a.262', 'mpi.67.a.277', 'mpi.67.a.277', 'mpi.67.a.307', 'mpi.67.a.307', 'mpi.67.a.337', 'mpi.67.a.337', 'mpi.67.a.142', 'mpi.67.b.022', 'mpi.67.b.052', 'mpi.67.b.037', 'mpi.67.b.217', 'mpi.67.b.052', 'mpi.67.b.037', 'mpi.67.b.097', 'mpi.67.b.277', 'mpi.67.b.157', 'mpi.67.b.337', 'mpi.67.b.217', 'mpi.67.b.097', 'mpi.67.b.277', 'mpi.67.b.157', 'mpi.67.b.337', 'mpi.67.b.022', 'mpi.79.a.072', 'mpi.79.a.222', 'mpi.79.a.147', 'mpi.79.a.072', 'mpi.79.a.222', 'mpi.79.a.272', 'mpi.79.a.272', 'mpi.79.a.147', 'mpi.79.b.067', 'mpi.79.b.217', 'mpi.79.b.142', 'mpi.79.b.067', 'mpi.79.b.217', 'mpi.79.b.277', 'mpi.79.b.277', 'mpi.79.b.142', 'mpi.1.a.011', 'mpi.1.a.199', 'mpi.1.a.049', 'mpi.1.a.244', 'mpi.1.a.109', 'mpi.1.a.011', 'mpi.1.a.139', 'mpi.1.a.341', 'mpi.1.a.199', 'mpi.1.a.139', 'mpi.1.a.244', 'mpi.1.a.274', 'mpi.1.a.274', 'mpi.1.a.109', 'mpi.1.a.341', 'mpi.1.a.049', 'mpi.1.b.011', 'mpi.1.b.199', 'mpi.1.b.049', 'mpi.1.b.244', 'mpi.1.b.109', 'mpi.1.b.011', 'mpi.1.b.139', 'mpi.1.b.341', 'mpi.1.b.199', 'mpi.1.b.139', 'mpi.1.b.244', 'mpi.1.b.274', 'mpi.1.b.274', 'mpi.1.b.109', 'mpi.1.b.341', 'mpi.1.b.049', 'mpi.5.a.199', 'mpi.5.a.139', 'mpi.4.a.199', 'mpi.4.a.139', 'mpi.3.a.199', 'mpi.3.a.139', 'mpi.2.a.199', 'mpi.2.a.139', 'mpi.1.a.199', 'mpi.1.a.139', 'mpi.1.b.199', 'mpi.1.b.139', 'mpi.2.b.199', 'mpi.2.b.139', 'mpi.3.b.199', 'mpi.3.b.139', 'mpi.4.b.199', 'mpi.4.b.139', 'mpi.5.b.199', 'mpi.5.b.139', 'isl.66.m.017', 'isl.66.m.042', 'isl.66.m.042', 'isl.66.m.072', 'isl.66.m.072', 'isl.66.m.252', 'isl.66.m.102', 'isl.66.m.132', 'isl.66.m.132', 'isl.66.m.312', 'isl.66.m.197', 'isl.66.m.017', 'isl.66.m.252', 'isl.66.m.102', 'isl.66.m.312', 'isl.66.m.197', 'isl.67.a.017', 'isl.67.a.052', 'isl.67.a.052', 'isl.67.a.072', 'isl.67.a.072', 'isl.67.a.252', 'isl.67.a.112', 'isl.67.a.132', 'isl.67.a.132', 'isl.67.a.312', 'isl.67.a.197', 'isl.67.a.017', 'isl.67.a.252', 'isl.67.a.112', 'isl.67.a.312', 'isl.67.a.197', 'isl.67.b.017', 'isl.67.b.052', 'isl.67.b.052', 'isl.67.b.072', 'isl.67.b.072', 'isl.67.b.252', 'isl.67.b.112', 'isl.67.b.132', 'isl.67.b.132', 'isl.67.b.312', 'isl.67.b.197', 'isl.67.b.017', 'isl.67.b.252', 'isl.67.b.112', 'isl.67.b.312', 'isl.67.b.197', 'isl.79.a.072', 'isl.79.a.222', 'isl.79.a.147', 'isl.79.a.072', 'isl.79.a.222', 'isl.79.a.272', 'isl.79.a.272', 'isl.79.a.147', 'isl.79.b.067', 'isl.79.b.217', 'isl.79.b.142', 'isl.79.b.067', 'isl.79.b.217', 'isl.79.b.277', 'isl.79.b.277', 'isl.79.b.142', 'isl.1.a.011', 'isl.1.a.199', 'isl.1.a.049', 'isl.1.a.244', 'isl.1.a.109', 'isl.1.a.011', 'isl.1.a.139', 'isl.1.a.341', 'isl.1.a.199', 'isl.1.a.139', 'isl.1.a.244', 'isl.1.a.274', 'isl.1.a.274', 'isl.1.a.109', 'isl.1.a.341', 'isl.1.a.049', 'isl.1.b.011', 'isl.1.b.199', 'isl.1.b.049', 'isl.1.b.244', 'isl.1.b.109', 'isl.1.b.011', 'isl.1.b.139', 'isl.1.b.341', 'isl.1.b.199', 'isl.1.b.139', 'isl.1.b.244', 'isl.1.b.274', 'isl.1.b.274', 'isl.1.b.109', 'isl.1.b.341', 'isl.1.b.049', 'isl.5.a.199', 'isl.5.a.139', 'isl.4.a.199', 'isl.4.a.139', 'isl.3.a.199', 'isl.3.a.139', 'isl.2.a.199', 'isl.2.a.139', 'isl.1.a.199', 'isl.1.a.139', 'isl.1.b.199', 'isl.1.b.139', 'isl.2.b.199', 'isl.2.b.139', 'isl.3.b.199', 'isl.3.b.139', 'isl.4.b.199', 'isl.4.b.139', 'isl.5.b.199', 'isl.5.b.139', 'esl.66.m.019', 'esl.66.m.079', 'esl.66.m.079', 'esl.66.m.259', 'esl.66.m.139', 'esl.66.m.319', 'esl.66.m.199', 'esl.66.m.019', 'esl.66.m.259', 'esl.66.m.139', 'esl.66.m.319', 'esl.66.m.199', 'esl.66.m.079', 'esl.66.m.259', 'esl.66.m.139', 'esl.66.m.319', 'esl.66.m.199', 'esl.66.m.019', 'esl.67.a.004', 'esl.67.a.244', 'esl.67.a.034', 'esl.67.a.154', 'esl.67.a.064', 'esl.67.a.184', 'esl.67.a.094', 'esl.67.a.274', 'esl.67.a.124', 'esl.67.a.304', 'esl.67.a.154', 'esl.67.a.334', 'esl.67.a.184', 'esl.67.a.004', 'esl.67.a.214', 'esl.67.a.094', 'esl.67.a.244', 'esl.67.a.124', 'esl.67.a.274', 'esl.67.a.034', 'esl.67.a.304', 'esl.67.a.064', 'esl.67.a.334', 'esl.67.a.214', 'esl.67.b.004', 'esl.67.b.244', 'esl.67.b.034', 'esl.67.b.154', 'esl.67.b.064', 'esl.67.b.184', 'esl.67.b.094', 'esl.67.b.274', 'esl.67.b.124', 'esl.67.b.304', 'esl.67.b.154', 'esl.67.b.334', 'esl.67.b.184', 'esl.67.b.004', 'esl.67.b.214', 'esl.67.b.094', 'esl.67.b.244', 'esl.67.b.124', 'esl.67.b.274', 'esl.67.b.034', 'esl.67.b.304', 'esl.67.b.064', 'esl.67.b.334', 'esl.67.b.214', 'bti.66.m.053', 'bti.66.m.233', 'bti.66.m.132', 'bti.66.m.053', 'bti.66.m.233', 'bti.66.m.312', 'bti.66.m.312', 'bti.66.m.132', 'mpi.2.a.067', 'mpi.1.u.157', 'isl.79.a.'] + + sig_name_with_d=['mpid66m020', 'mpid66m020', 'mpid66m067', 'mpid067u', 'mpid66m097', 'mpid097u', 'mpid66m127', 'mpid127u', 'mpid66m157', 'mpid157u', 'mpid66m200', 'mpid66m247', 'mpid66m277', 'mpid66m307', 'mpid66m340', 'mpid67a022', 'mpid67a037', 'mpid67a052', 'mpid67a067', 'mpid67a082', 'mpid67a097', 'mpid67a142', 'mpid67a217', 'mpid67a262', 'mpid67a277', 'mpid67a307', 'mpid67a337', 'mpid67b022', 'mpid67b037', 'mpid67b052', 'mpid67b097', 'mpid67b157', 'mpid67b217', 'mpid67b277', 'mpid67b337', 'mpid79a072', 'mpid79a147', 'mpid79a222', 'mpid79a272', 'mpid79b067', 'mpid79b142', 'mpid79b217', 'mpid79b277', 'mpid1a011', 'mpid1a049', 'mpid1a109', 'mpid1a139', 'mpid1a199', 'mpid1a244', 'mpid1a274', 'mpid1a341', 'mpid1b011', 'mpid1b049', 'mpid1b109', 'mpid1b139', 'mpid1b199', 'mpid1b244', 'mpid1b274', 'mpid1b341', 'mpid5a199', 'mpid4a199', 'mpid3a199', 'mpid2a199', 'mpid1a199', 'mpid1b199', 'mpid2b199', 'mpid3b199', 'mpid4b199', 'mpid5b199', 'isld66m017', 'isld66m042', 'isld66m072', 'isld079u', 'isld66m102', 'isld66m132', 'isld139u', 'isld66m197', 'isld199u', 'isld66m252', 'isld66m312', 'isld67a017', 'isld67a052', 'isld67a072', 'isld67a112', 'isld67a132', 'isld67a197', 'isld67a252', 'isld67a312', 'isld67b017', 'isld67b052', 'isld67b072', 'isld67b112', 'isld67b132', 'isld67b197', 'isld67b252', 'isld67b312', 'isld79a072', 'isld79a147', 'isld79a222', 'isld79a272', 'isld79b067', 'isld79b142', 'isld79b217', 'isld79b277', 'isld1a011', 'isld1a049', 'isld1a109', 'isld1a139', 'isld1a199', 'isld1a244', 'isld1a274', 'isld1a341', 'isld1b011', 'isld1b049', 'isld1b109', 'isld1b139', 'isld1b199', 'isld1b244', 'isld1b274', 'isld1b341', 'isld5a199', 'isld4a199', 'isld3a199', 'isld2a199', 'isld1a199', 'isld1b199', 'isld2b199', 'isld3b199', 'isld4b199', 'isld5b199', 'esld66m019', 'esld66m079', 'esld079u', 'esld66m139', 'esld139u', 'esld66m199', 'esld199u', 'esld66m259', 'esld66m319', 'esld079', 'esld139', 'esld199', 'esld67a004', 'esld67a034', 'esld67a064', 'esld67a094', 'esld67a124', 'esld67a154', 'esld67a184', 'esld67a214', 'esld67a244', 'esld67a274', 'esld67a304', 'esld67a334', 'esld67b004', 'esld67b034', 'esld67b064', 'esld67b094', 'esld67b124', 'esld67b154', 'esld67b184', 'esld67b214', 'esld67b244', 'esld67b274', 'esld67b304', 'esld67b334', 'btid66m053', 'btid66m132', 'btid66m233', 'btid66m312'] + + name_with_d=['mpid.66.m.020', 'mpid.66.m.020', 'mpid.66.m.067', 'mpid.067.u.', 'mpid.66.m.097', 'mpid.097.u.', 'mpid.66.m.127', 'mpid.127.u.', 'mpid.66.m.157', 'mpid.157.u.', 'mpid.66.m.200', 'mpid.66.m.247', 'mpid.66.m.277', 'mpid.66.m.307', 'mpid.66.m.340', 'mpid.67.a.022', 'mpid.67.a.037', 'mpid.67.a.052', 'mpid.67.a.067', 'mpid.67.a.082', 'mpid.67.a.097', 'mpid.67.a.142', 'mpid.67.a.217', 'mpid.67.a.262', 'mpid.67.a.277', 'mpid.67.a.307', 'mpid.67.a.337', 'mpid.67.b.022', 'mpid.67.b.037', 'mpid.67.b.052', 'mpid.67.b.097', 'mpid.67.b.157', 'mpid.67.b.217', 'mpid.67.b.277', 'mpid.67.b.337', 'mpid.79.a.072', 'mpid.79.a.147', 'mpid.79.a.222', 'mpid.79.a.272', 'mpid.79.b.067', 'mpid.79.b.142', 'mpid.79.b.217', 'mpid.79.b.277', 'mpid.1.a.011', 'mpid.1.a.049', 'mpid.1.a.109', 'mpid.1.a.139', 'mpid.1.a.199', 'mpid.1.a.244', 'mpid.1.a.274', 'mpid.1.a.341', 'mpid.1.b.011', 'mpid.1.b.049', 'mpid.1.b.109', 'mpid.1.b.139', 'mpid.1.b.199', 'mpid.1.b.244', 'mpid.1.b.274', 'mpid.1.b.341', 'mpid.5.a.199', 'mpid.4.a.199', 'mpid.3.a.199', 'mpid.2.a.199', 'mpid.1.a.199', 'mpid.1.b.199', 'mpid.2.b.199', 'mpid.3.b.199', 'mpid.4.b.199', 'mpid.5.b.199', 'isld.66.m.017', 'isld.66.m.042', 'isld.66.m.072', 'isld.079.u.', 'isld.66.m.102', 'isld.66.m.132', 'isld.139.u.', 'isld.66.m.197', 'isld.199.u.', 'isld.66.m.252', 'isld.66.m.312', 'isld.67.a.017', 'isld.67.a.052', 'isld.67.a.072', 'isld.67.a.112', 'isld.67.a.132', 'isld.67.a.197', 'isld.67.a.252', 'isld.67.a.312', 'isld.67.b.017', 'isld.67.b.052', 'isld.67.b.072', 'isld.67.b.112', 'isld.67.b.132', 'isld.67.b.197', 'isld.67.b.252', 'isld.67.b.312', 'isld.79.a.072', 'isld.79.a.147', 'isld.79.a.222', 'isld.79.a.272', 'isld.79.b.067', 'isld.79.b.142', 'isld.79.b.217', 'isld.79.b.277', 'isld.1.a.011', 'isld.1.a.049', 'isld.1.a.109', 'isld.1.a.139', 'isld.1.a.199', 'isld.1.a.244', 'isld.1.a.274', 'isld.1.a.341', 'isld.1.b.011', 'isld.1.b.049', 'isld.1.b.109', 'isld.1.b.139', 'isld.1.b.199', 'isld.1.b.244', 'isld.1.b.274', 'isld.1.b.341', 'isld.5.a.199', 'isld.4.a.199', 'isld.3.a.199', 'isld.2.a.199', 'isld.1.a.199', 'isld.1.b.199', 'isld.2.b.199', 'isld.3.b.199', 'isld.4.b.199', 'isld.5.b.199', 'esld.66.m.019', 'esld.66.m.079', 'esld.079.u.', 'esld.66.m.139', 'esld.139.u.', 'esld.66.m.199', 'esld.199.u.', 'esld.66.m.259', 'esld.66.m.319', 'esld.079..', 'esld.139..', 'esld.199..', 'esld.67.a.004', 'esld.67.a.034', 'esld.67.a.064', 'esld.67.a.094', 'esld.67.a.124', 'esld.67.a.154', 'esld.67.a.184', 'esld.67.a.214', 'esld.67.a.244', 'esld.67.a.274', 'esld.67.a.304', 'esld.67.a.334', 'esld.67.b.004', 'esld.67.b.034', 'esld.67.b.064', 'esld.67.b.094', 'esld.67.b.124', 'esld.67.b.154', 'esld.67.b.184', 'esld.67.b.214', 'esld.67.b.244', 'esld.67.b.274', 'esld.67.b.304', 'esld.67.b.334', 'btid.66.m.053', 'btid.66.m.132', 'btid.66.m.233', 'btid.66.m.312'] + sig_names=sig_name_with_d+sig_name_without_d + names=name_with_d+name_without_d + + for name in sig_names: + signals.append(PtDataSignal(name)) + + elif diag_name=='custom': + sig_names=sig_names_custom + names=names_custom + if tree_custom=='ptdata': + signals.append(PtDataSignal(name)) + else: + signals.append(MdsSignal(name, tree_custom, location='remote://atlas.gat.com')) + + elif diag_name=='mag_hi': + sig_names=[f"b{i}" for i in range(1, 9)] + names=[f"b{i}" for i in range(1, 9)] + for name in sig_names: + signals.append(PtDataSignal(name)) + + elif diag_name=='bes': + sig_names = [f"besfu{i:02}" for i in range(1, 65)] + + sig_names.append('bes_r') + sig_names.append('bes_z') + names=[f"{i:02}" for i in range(1, 65)] + + names.append('r') + names.append('z') + + for name in sig_names: + signals.append(PtDataSignal(name)) + + elif diag_name=='ece_cali': + channels = range(1,49) # 48 + + for chan in channels: + name = r'\TECEF%02d'%chan + signals.append(MdsSignal(name, 'ECE', location='remote://atlas.gat.com')) + names.append(r'%02d'%chan) + + elif diag_name=='ece_s': + channels = range(1,49) # 48 + + for chan in channels: + name = r'\TECE%02d'%chan + signals.append(MdsSignal(name, 'ECE', location='remote://atlas.gat.com')) + names.append(r'%02d'%chan) + + elif diag_name=='co2_den': + nums = range(1,15) + chords = ['r0', 'v1', 'v2', 'v3'] + phases = ['den'] + + for phase in phases: + for chord in chords: + for num in nums: + name = r'\den{}_uf_{}'.format(chord, num) + signals.append(MdsSignal(name, 'BCI', location='remote://atlas.gat.com')) + names.append(f'{chord}_{num}') + + elif diag_name=='co2_pl': + nums = range(1,15) + chords = ['r0', 'v1', 'v2', 'v3'] + phases = ['pl'] + + for phase in phases: + for chord in chords: + for num in nums: + name = r'\pl1{}_uf_{}'.format(chord, num) + signals.append(MdsSignal(name, 'BCI', location='remote://atlas.gat.com')) + names.append(f'{chord}_{num}') + + + elif diag_name=='ts': + #thomson_mds_scale={'density': 1e19, 'temp': 1e3} + thomson_mds_areas=['core','divertor','tangential'] + thomson_sig_names= ['density', 'temp'] + thomson_names=['dens','temp'] + treename='electrons' + + + + for thomson_mds_area in thomson_mds_areas: + for thomson_sig_name, thomson_name in zip(thomson_sig_names,thomson_names): + + name=r'TS.BLESSED.{}.{}'.format(thomson_mds_area,thomson_sig_name) + + signals.append(MdsSignal(name, treename, location='remote://atlas.gat.com')) + + names.append(r'{}.{}'.format(thomson_mds_area,thomson_name)) + + elif diag_name=='ts_rz': + #thomson_mds_scale={'density': 1e19, 'temp': 1e3} + thomson_mds_areas=['core','divertor','tangential'] + thomson_sig_names= ['r', 'z'] + treename='electrons' + + for thomson_mds_area in thomson_mds_areas: + for thomson_sig_name in thomson_sig_names: + name=r'TS.BLESSED.{}.{}'.format(thomson_mds_area,thomson_sig_name) + signals.append(MdsSignal(name, treename, location='remote://atlas.gat.com')) + + names.append(r'{}.{}'.format(thomson_mds_area,thomson_sig_name)) + + elif diag_name=='ts_error': + #thomson_mds_scale={'density': 1e19, 'temp': 1e3} + thomson_mds_areas=['core','divertor','tangential'] + thomson_sig_names= ['DENSITY_E', 'TEMP_E'] + thomson_names=['dens','temp'] + treename='electrons' + + for thomson_mds_area in thomson_mds_areas: + for thomson_sig_name, thomson_name in zip(thomson_sig_names,thomson_names): + signals.append(MdsSignal(name, treename, location='remote://atlas.gat.com')) + + names.append(r'{}.{}'.format(thomson_mds_area,thomson_name)) + + + elif diag_name=='mag': + sig_names=['DSL1U180', 'DSL2U180', 'DSL3U180', 'DSL4U157', 'DSL5U157', 'DSL6U157', 'MPI11M067', 'MPI11M322', 'MPI1A139', 'MPI1A322', 'MPI1B139', 'MPI1B157', 'MPI1B322', 'MPI1L180', 'MPI1U157', 'MPI2A067', 'MPI2A139', 'MPI2A322', 'MPI2B067', 'MPI2B139', 'MPI2B322', 'MPI2L180', 'MPI2U157', 'MPI3A139', 'MPI3A322', 'MPI3B139', 'MPI3B322', 'MPI3L180', 'MPI3U157', 'MPI4A139', 'MPI4A322', 'MPI4B139', 'MPI4B322', 'MPI4U157', 'MPI5A139', 'MPI5A322', 'MPI5B139', 'MPI5B322', 'MPI5U157', 'MPI66M067', 'MPI66M157', 'MPI66M247', 'MPI66M322', 'MPI67A097', 'MPI67A142', 'MPI67A157', 'MPI67A322', 'MPI67B097', 'MPI67B157', 'MPI67B322', 'MPI6FA322', 'MPI6FB142', 'MPI6FB322', 'MPI6NA132', 'MPI6NA157', 'MPI6NA322', 'MPI6NB157', 'MPI6NB322', 'MPI6U157', 'MPI79A147', 'MPI79B142', 'MPI79B322', 'MPI79FA322', 'MPI79NA322', 'MPI7FA322', 'MPI7FB322', 'MPI7NA322', 'MPI7NB142', 'MPI7NB322', 'MPI7U157', 'MPI89A322', 'MPI89B322', 'MPI8A322', 'MPI8B322', 'MPI9A322', 'MPI9B322', 'PSF1A', 'PSF1B', 'PSF2A', 'PSF2B', 'PSF3A', 'PSF3B', 'PSF4A', 'PSF4B', 'PSF5A', 'PSF5B', 'PSF6FA', 'PSF6FB', 'PSF6NA', 'PSF6NB', 'PSF7FA', 'PSF7FB', 'PSF7NA', 'PSF7NB', 'PSF8A', 'PSF8B', 'PSF9A', 'PSF9B', 'PSI11M', 'PSI12A', 'PSI12B', 'PSI1L', 'PSI23A', 'PSI23B', 'PSI2L', 'PSI34A', 'PSI34B', 'PSI3L', 'PSI45A', 'PSI45B', 'PSI58A', 'PSI58B', 'PSI6A', 'PSI6B', 'PSI7A', 'PSI7B', 'PSI89FB', 'PSI89NB', 'PSI9A', 'PSI9B'] + #Poloidal Flux Loops (Wb/rad): psf, psi. + #Poloidal Field Probes: mpi, dsl + + #E-coil Currents (A): can be found in actu + #F-coil Currents (A): can be found in actu + #I-coil Currents (A): can be found in actu + #C-coil Currents (A): can be found in actu + + #Miscellaneous data: can be found in basic + + #https://diii-d.gat.com/d3d-wiki/images/6/68/Mag_eq_2013_LABEL.pdf + names=['dsl.1u180', 'dsl.2u180', 'dsl.3u180', 'dsl.4u157', 'dsl.5u157', 'dsl.6u157', \ + 'mpi.11m067', 'mpi.11m322', 'mpi.1a139', 'mpi.1a322', 'mpi.1b139', 'mpi.1b157', 'mpi.1b322', \ + 'mpi.1l180', 'mpi.1u157', 'mpi.2a067', 'mpi.2a139', 'mpi.2a322', 'mpi.2b067', 'mpi.2b139', \ + 'mpi.2b322', 'mpi.2l180', 'mpi.2u157', 'mpi.3a139', 'mpi.3a322', 'mpi.3b139', 'mpi.3b322', \ + 'mpi.3l180', 'mpi.3u157', 'mpi.4a139', 'mpi.4a322', 'mpi.4b139', 'mpi.4b322', 'mpi.4u157', \ + 'mpi.5a139', 'mpi.5a322', 'mpi.5b139', 'mpi.5b322', 'mpi.5u157', 'mpi.66m067', 'mpi.66m157', \ + 'mpi.66m247', 'mpi.66m322', 'mpi.67a097', 'mpi.67a142', 'mpi.67a157', 'mpi.67a322', \ + 'mpi.67b097', 'mpi.67b157', 'mpi.67b322', 'mpi.6fa322', 'mpi.6fb142', 'mpi.6fb322', \ + 'mpi.6na132', 'mpi.6na157', 'mpi.6na322', 'mpi.6nb157', 'mpi.6nb322', 'mpi.6u157', \ + 'mpi.79a147', 'mpi.79b142', 'mpi.79b322', 'mpi.79fa322', 'mpi.79na322', 'mpi.7fa322', \ + 'mpi.7fb322', 'mpi.7na322', 'mpi.7nb142', 'mpi.7nb322', 'mpi.7u157', 'mpi.89a322', \ + 'mpi.89b322', 'mpi.8a322', 'mpi.8b322', 'mpi.9a322', 'mpi.9b322', \ + 'psf.1a', 'psf.1b', 'psf.2a', 'psf.2b', 'psf.3a', 'psf.3b', 'psf.4a', 'psf.4b', \ + 'psf.5a', 'psf.5b', 'psf.6fa', 'psf.6fb', 'psf.6na', 'psf.6nb', 'psf.7fa', \ + 'psf.7fb', 'psf.7na', 'psf.7nb', 'psf.8a', 'psf.8b', 'psf.9a', 'psf.9b', \ + 'psi.11m', 'psi.12a', 'psi.12b', 'psi.1l', 'psi.23a', 'psi.23b', 'psi.2l', 'psi.34a', \ + 'psi.34b', 'psi.3l', 'psi.45a', 'psi.45b', 'psi.58a', 'psi.58b', 'psi.6a', 'psi.6b', \ + 'psi.7a', 'psi.7b', 'psi.89fb', 'psi.89nb', 'psi.9a', 'psi.9b',\ + ] + + for name in sig_names: + signals.append(PtDataSignal(name)) + + elif diag_name=='cer': + channels = ["v%i"%i for i in range(1, 33)] + \ + ["t%i"%i for i in range(1, 49)] + + name_channels = ["v%02d"%i for i in range(1, 33)] + \ + ["t%02d"%i for i in range(1, 49)] + outputs=['amp','samp','ti','sti','rot','srot','r','phi','nz','fz','zeff','vb','svb'] + + sig_names=[r'\cerq{}{}'.format(output, channel) for channel in channels + for output in outputs] + names=[r'q.{}.{}'.format(output, channel) for channel in name_channels + for output in outputs] + + treename='ions' + signals=[] + for name in sig_names: + signals.append(MdsSignal(name, treename, location='remote://atlas.gat.com')) + + elif diag_name=='mse': + treename='mse' + sig_names=[r'\msep%02d'%i for i in range(1, 70)] + names=[r'%02d'%i for i in range(1, 70)] + + signals=[] + for name in sig_names: + signals.append(MdsSignal(name, treename, location='remote://atlas.gat.com')) + + return names, signals + +def fetch_ece_2d_array_data(path, shots, diag_name): + names, signals = signal_gen(diag_name) + + for n,shot in enumerate(shots): + if shot>=start_shot: + start = time.time() + pipeline = Pipeline([shot]) + + for i,name in enumerate(names): + pipeline.fetch(name, signals[i]) + + records = pipeline.compute_serial() + shot_data = dict(records[0]) + data_h5={} + + try: + data_h5['xdata']=shot_data[names[0]]['times'] + data_h5['xunits']=shot_data[names[0]]['units']['times'] + data_h5['yunits']='' + data_h5['zunits']=shot_data[names[0]]['units']['data'] + data_tmp=[] + for name in names: + if len(shot_data[name]['data'])<=10: + break + print(len(shot_data[name]['data'])) + data_tmp.append(shot_data[name]['data'][:len(data_h5['xdata'])]) + + data_tmp=np.array(data_tmp,dtype='float') + + data_h5['zdata']=data_tmp + data_h5['ydata']=[] + + if len(data_h5['xdata'])>3500000: + data_h5['xdata']=data_h5['xdata'][:3500000] + data_h5['zdata']=data_h5['zdata'][:,:3500000] + except: + data_h5['xdata']=[] + data_h5['ydata']=[] + data_h5['zdata']=[] + + data_h5['xunits']='' + data_h5['yunits']='' + data_h5['zunits']='' + + + with h5py.File(f'{path}{shot}_{diag_name}.h5', 'w') as h5file: + save_dict_to_hdf5(data_h5, h5file) + + if 1==0: + pass + if n % interval == 0: + size_limiter_sleep(size_GB=size_GB) + print(f'shot={shot}') + print(n, flush=True) + +#fetching the data +def fetch_single_data(path, shots, diag_name): + names, signals = signal_gen(diag_name) + + if not os.path.isdir(path): + os.makedirs(path) + + for n,shot in enumerate(shots): + if shot>=start_shot: + try: + start = time.time() + pipeline = Pipeline([shot]) + + for i,name in enumerate(names): + pipeline.fetch(name,signals[i]) + + records = pipeline.compute_serial() + shot_data = dict(records[0]) + #print(shot_data.keys()) + ##print(shot_data) + data_h5={} + #print(names) + for name in names: + data_h5[name]={} + #print(data_h5) + data_tmp=shot_data[name] + #print(name) + + try: + + total_len=len(data_tmp['times']) + dt=data_tmp['times'][1]-data_tmp['times'][0] + cut_index=int(np.min([total_len+1,7500/dt])) + + if diag_name in diag_3d: + #print(data_tmp.keys()) + data_h5[name]['xdata']=data_tmp['times'][:cut_index] + data_h5[name]['ydata']=data_tmp['rhon'][:] + data_h5[name]['zdata']=data_tmp['data'][:cut_index] + + data_h5[name]['xunits']=data_tmp['units']['times'] + data_h5[name]['yunits']='rhon' + data_h5[name]['zunits']=data_tmp['units']['data'] + else: + #print(data_tmp.keys()) + data_h5[name]['xdata']=data_tmp['times'][:cut_index] + data_h5[name]['ydata']=[] + data_h5[name]['zdata']=data_tmp['data'][:cut_index] + + data_h5[name]['xunits']=data_tmp['units']['times'] + data_h5[name]['yunits']='' + data_h5[name]['zunits']=data_tmp['units']['data'] + except: + data_h5[name]['xdata']=[] + data_h5[name]['ydata']=[] + data_h5[name]['zdata']=[] + + data_h5[name]['xunits']='' + data_h5[name]['yunits']='' + data_h5[name]['zunits']='' + + #print(data_h5.keys()) + # Save to h5 + with h5py.File(f'{path}{shot}_{diag_name}.h5', 'w') as hf: + for key in data_h5.keys(): + group = hf.create_group(key) + for subkey, value in data_h5[key].items(): + # Check if the value is a string type + if isinstance(value, np.ndarray) and np.issubdtype(value.dtype, np.str_): + # Create a special dtype for storing string data + str_dtype = h5py.string_dtype(encoding='utf-8') + group.create_dataset(subkey, data=value.astype(object), dtype=str_dtype) + else: + group.create_dataset(subkey, data=value) + + except: + pass + if n % interval == 0: + size_limiter_sleep(size_GB=size_GB) + print(f'shot={shot}') + print(n, flush=True) + +def fetch_co2_chunked_data(path, shots, diag_name): + chords=['r0', 'v1', 'v2', 'v3'] + nums = range(1,15) + names, signals = signal_gen(diag_name) + for n,shot in enumerate(shots): + if shot>=start_shot: + try: + start = time.time() + pipeline = Pipeline([shot]) + + for i,name in enumerate(names): + pipeline.fetch(name, signals[i]) + + records = pipeline.compute_serial() + shot_data = dict(records[0]) + data_h5={} + for chord in chords: + data_h5[chord]={} + for num in nums: + for i_chord,chord in enumerate(chords): + #print(f'num={num}') + #print(f'chord={chord}') + + + data_tmp=shot_data[f'{chord}_{num}'] + + try: + len(data_tmp['data']) + #print(len(data_tmp['data'])) + except: + break + + if num==1: + data_h5[chord]['xdata']=data_tmp['times'] + data_h5[chord]['ydata']=[] + data_h5[chord]['zdata']=data_tmp['data'] + + data_h5[chord]['xunits']=data_tmp['units']['times'] + data_h5[chord]['yunits']='' + data_h5[chord]['zunits']=data_tmp['units']['data'] + else: + data_h5[chord]['xdata']=np.concatenate([data_h5[chord]['xdata'],data_tmp['times']]) + data_h5[chord]['zdata']=np.concatenate([data_h5[chord]['zdata'],data_tmp['data']]) + shot_data=None + + # Save to h5 + with h5py.File(f'{path}{shot}_{diag_name}.h5', 'w') as hf: + for key in data_h5.keys(): + group = hf.create_group(key) + for subkey, value in data_h5[key].items(): + # Check if the value is a string type + if isinstance(value, np.ndarray) and np.issubdtype(value.dtype, np.str_): + # Create a special dtype for storing string data + str_dtype = h5py.string_dtype(encoding='utf-8') + group.create_dataset(subkey, data=value.astype(object), dtype=str_dtype) + else: + group.create_dataset(subkey, data=value) + except: + pass + + if n % interval == 0: + size_limiter_sleep(size_GB=size_GB) + print(f'shot={shot}') + print(n, flush=True) + +def fetch_co2_chunked_data_2d(path, shots, diag_name): + chords=['r0', 'v1', 'v2', 'v3'] + nums = range(1,15) + names, signals = signal_gen(diag_name) + for n,shot in enumerate(shots): + if shot>=start_shot: + try: + start = time.time() + pipeline = Pipeline([shot]) + + for i,name in enumerate(names): + pipeline.fetch(name, signals[i]) + + records = pipeline.compute_serial() + shot_data = dict(records[0]) + data_h5={} + for chord in chords: + data_h5[chord]={} + for num in nums: + for i_chord,chord in enumerate(chords): + #print(f'num={num}') + #print(f'chord={chord}') + + + data_tmp=shot_data[f'{chord}_{num}'] + + try: + len(data_tmp['data']) + #print(len(data_tmp['data'])) + except: + break + + if num==1: + data_h5[chord]['xdata']=data_tmp['times'] + data_h5[chord]['ydata']=[] + data_h5[chord]['zdata']=data_tmp['data'] + + data_h5[chord]['xunits']=data_tmp['units']['times'] + data_h5[chord]['yunits']='' + data_h5[chord]['zunits']=data_tmp['units']['data'] + else: + data_h5[chord]['xdata']=np.concatenate([data_h5[chord]['xdata'],data_tmp['times']]) + data_h5[chord]['zdata']=np.concatenate([data_h5[chord]['zdata'],data_tmp['data']]) + shot_data=None + data_h5_new={} + data_h5_new['xdata']=np.array(data_h5[chords[0]]['xdata']) + data_h5_new['zdata']=np.array([data_h5[chord]['zdata'] for chord in chords]) + data_h5_new['keys']=np.array(chords) + + data_h5=None + # Save to h5 + with h5py.File(f'{path}{shot}_{diag_name}.h5', 'w') as hf: + for key in data_h5_new.keys(): + group = hf.create_group(key) + for subkey, value in data_h5_new[key].items(): + # Check if the value is a string type + if isinstance(value, np.ndarray) and np.issubdtype(value.dtype, np.str_): + # Create a special dtype for storing string data + str_dtype = h5py.string_dtype(encoding='utf-8') + group.create_dataset(subkey, data=value.astype(object), dtype=str_dtype) + else: + group.create_dataset(subkey, data=value) + except: + pass + + if n % interval == 0: + size_limiter_sleep(size_GB=size_GB) + print(f'shot={shot}') + print(n, flush=True) + + +def fetch_data(path, shots, diag_name): + if diag_name in ['co2_den','co2_pl']: + fetch_co2_chunked_data(path, shots, diag_name) + elif diag_name in ['ece_s','ece_cali']: + fetch_ece_2d_array_data(path, shots, diag_name) + else: + fetch_single_data(path, shots, diag_name) + + + +if __name__ == "__main__": + fetch_data(path, shots, diag_name) + \ No newline at end of file diff --git a/Data_fetching/mygadata.py b/Data_fetching/mygadata.py new file mode 100644 index 0000000..073dfde --- /dev/null +++ b/Data_fetching/mygadata.py @@ -0,0 +1,86 @@ +import MDSplus +import numpy +import time +import sys + +class gadata: + """GA Data Obj""" + def __init__(self,signal,shot,tree=None,connection=None,nomds=False): + # Save object values + self.signal = signal + self.shot = shot + self.zdata = -1 + self.xdata = -1 + self.ydata = -1 + self.zunits = '' + self.xunits = '' + self.yunits = '' + self.rank = -1 + self.connection = connection + + ## Retrieve Data + t0 = time.time() + found = 0 + + # Create the MDSplus connection (thin) if not passed in + if self.connection is None: + print 'No connection!!!' + self.connection = MDSplus.Connection('atlas.gat.com') + + # Retrieve data from MDSplus (thin) + if nomds == False: + try: + if tree != None: + tag = self.signal + fstree = tree + found = 1 + else: + tag = self.connection.get('findsig("'+self.signal+'",_fstree)').value + fstree = self.connection.get('_fstree').value + self.connection.openTree(fstree,shot) + self.zdata = self.connection.get('_s = '+tag).data() + self.zunits = self.connection.get('units_of(_s)').data() + self.rank = numpy.rank(self.zdata) + self.xdata = self.connection.get('dim_of(_s)').data() + self.xunits = self.connection.get('units_of(dim_of(_s))').data() + if self.xunits == '' or self.xunits == ' ': + self.xunits = self.connection.get('units(dim_of(_s))').data() + if self.rank > 1: + self.ydata = self.connection.get('dim_of(_s,1)').data() + self.yunits = self.connection.get('units_of(dim_of(_s,1))').data() + if self.yunits == '' or self.yunits == ' ': + self.yunits = self.connection.get('units(dim_of(_s,1))').data() + + found = 1 + + # MDSplus seems to return 2-D arrays transposed. Change them back. + if numpy.rank(self.zdata) == 2: self.zdata = numpy.transpose(self.zdata) + if numpy.rank(self.ydata) == 2: self.ydata = numpy.transpose(self.ydata) + if numpy.rank(self.xdata) == 2: self.xdata = numpy.transpose(self.xdata) + + except Exception as e: + #print ' Signal not in MDSplus: %s' % (signal,) + pass + + + # Retrieve data from PTDATA + if found == 0: + self.zdata = self.connection.get('_s = ptdata2("'+signal+'",'+str(shot)+')') + if len(self.zdata) != 1: + self.xdata = self.connection.get('dim_of(_s)') + self.rank = 1 + found = 1 + + # Retrieve data from Pseudo-pointname + if found == 0: + self.zdata = self.connection.get('_s = pseudo("'+signal+'",'+str(shot)+')') + if len(self.zdata) != 1: + self.xdata = self.connection.get('dim_of(_s)') + self.rank = 1 + found = 1 + + if found == 0: + #print " No such signal: %s" % (signal,) + return + + print ' GADATA Retrieval Time : ',time.time() - t0 diff --git a/Dataset_prep/0read_data_run.ipynb b/Dataset_prep/0read_data_run.ipynb new file mode 100644 index 0000000..10d2fe5 --- /dev/null +++ b/Dataset_prep/0read_data_run.ipynb @@ -0,0 +1,258 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "df7f60cd-0236-4ab9-9082-ca9b7a29f660", + "metadata": {}, + "outputs": [], + "source": [ + "import data_prep_obj as data_prep\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "id": "443e7c7b-b0ed-477f-bc94-0c0af0e53a48", + "metadata": {}, + "source": [ + "## filter the discharge with file size" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "5db78b8f-06a8-4c64-a3dc-b3949df7d85e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "range(170000, 170011)\n", + "['ece_s', 'co2_s', 'ts', 'co2_pl']\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|████████████████████████████████████████████████████████████████████████████████| 11/11 [00:00<00:00, 12798.15it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'ece_s': [170000, 170001, 170002, 170003, 170004, 170005, 170006, 170007, 170008, 170009, 170010], 'co2_s': [170000, 170001, 170002, 170003, 170004, 170005, 170006, 170007, 170008, 170009, 170010], 'ts': [170000, 170001, 170002, 170003, 170004, 170005, 170006, 170007, 170008, 170009, 170010], 'co2_pl': [170000, 170001, 170002, 170003, 170004, 170005, 170006, 170007, 170008, 170009, 170010]}\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "spectro_analysis=False\n", + "\n", + "discharge_min=170000\n", + "discharge_max=170010\n", + "discharge_search_list=range(discharge_min,discharge_max+1)\n", + "suffix_list=['ece_s','co2_s','ts','co2_pl']\n", + "prep_obj_1=data_prep.DatasetPrep(discharge_search_list, suffix_list)\n", + "print(prep_obj_1.discharge_search_list)\n", + "print(prep_obj_1.suffix_list)\n", + "\n", + "discharge_list=prep_obj_1.filter_discharges()\n", + "print(discharge_list)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "26306ab3-df3c-4504-900f-1bfdb4ddcb05", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mag\n", + "dict_keys(['dsl', 'mpi', 'psf', 'psi'])\n" + ] + }, + { + "ename": "KeyError", + "evalue": "\"Unable to open object (object 'core.z' doesn't exist)\"", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[22], line 14\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[38;5;28mprint\u001b[39m(key)\n\u001b[1;32m 12\u001b[0m \u001b[38;5;28mprint\u001b[39m(file_dict[key]\u001b[38;5;241m.\u001b[39mkeys())\n\u001b[0;32m---> 14\u001b[0m \u001b[38;5;28mdict\u001b[39m\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mlist\u001b[39m(\u001b[43minput_file\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mcore.z\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mzdata\u001b[39m\u001b[38;5;124m'\u001b[39m])\n\u001b[1;32m 15\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;28mdict\u001b[39m)\n", + "File \u001b[0;32mh5py/_objects.pyx:54\u001b[0m, in \u001b[0;36mh5py._objects.with_phil.wrapper\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32mh5py/_objects.pyx:55\u001b[0m, in \u001b[0;36mh5py._objects.with_phil.wrapper\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32m~/.conda/envs/tfp2-gpu/lib/python3.10/site-packages/h5py/_hl/group.py:305\u001b[0m, in \u001b[0;36mGroup.__getitem__\u001b[0;34m(self, name)\u001b[0m\n\u001b[1;32m 303\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mInvalid HDF5 object reference\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 304\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(name, (\u001b[38;5;28mbytes\u001b[39m, \u001b[38;5;28mstr\u001b[39m)):\n\u001b[0;32m--> 305\u001b[0m oid \u001b[38;5;241m=\u001b[39m \u001b[43mh5o\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mopen\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mid\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_e\u001b[49m\u001b[43m(\u001b[49m\u001b[43mname\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mlapl\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_lapl\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 306\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 307\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mAccessing a group is done with bytes or str, \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 308\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m not \u001b[39m\u001b[38;5;132;01m{}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;241m.\u001b[39mformat(\u001b[38;5;28mtype\u001b[39m(name)))\n", + "File \u001b[0;32mh5py/_objects.pyx:54\u001b[0m, in \u001b[0;36mh5py._objects.with_phil.wrapper\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32mh5py/_objects.pyx:55\u001b[0m, in \u001b[0;36mh5py._objects.with_phil.wrapper\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32mh5py/h5o.pyx:190\u001b[0m, in \u001b[0;36mh5py.h5o.open\u001b[0;34m()\u001b[0m\n", + "\u001b[0;31mKeyError\u001b[0m: \"Unable to open object (object 'core.z' doesn't exist)\"" + ] + } + ], + "source": [ + "discharge=174823\n", + "suffix='mag'\n", + "\n", + "discharge_obj=data_prep.DichargePerp(discharge, [suffix])\n", + "input_file=discharge_obj.get_data(discharge,suffix)\n", + "input_multi_level=discharge_obj.data_division(input_file,suffix)\n", + "\n", + "file_dict=discharge_obj.get_full_data()\n", + "\n", + "for key in file_dict.keys():\n", + " print(key)\n", + " print(file_dict[key].keys())\n", + " for key2 in file_dict[key].keys():\n", + " \n", + " print(len(file_dict[key].keys()))\n", + "\n", + "dict=list(input_file['core.z']['zdata'])\n", + "print(dict)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "1ce0daa1-3d5c-4512-bf5e-bb48d3aa2886", + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "ufunc 'isfinite' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[8], line 5\u001b[0m\n\u001b[1;32m 3\u001b[0m plt\u001b[38;5;241m.\u001b[39mxlabel(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mTime (ms)\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m 4\u001b[0m plt\u001b[38;5;241m.\u001b[39mxlim(\u001b[38;5;241m2000\u001b[39m,\u001b[38;5;241m2700\u001b[39m)\n\u001b[0;32m----> 5\u001b[0m \u001b[43mplt\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mylim\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m,\u001b[49m\u001b[38;5;241;43m10\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m20\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 6\u001b[0m plt\u001b[38;5;241m.\u001b[39mshow()\n", + "File \u001b[0;32m~/.conda/envs/tfp2-gpu/lib/python3.10/site-packages/matplotlib/pyplot.py:1831\u001b[0m, in \u001b[0;36mylim\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 1829\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m args \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m kwargs:\n\u001b[1;32m 1830\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m ax\u001b[38;5;241m.\u001b[39mget_ylim()\n\u001b[0;32m-> 1831\u001b[0m ret \u001b[38;5;241m=\u001b[39m \u001b[43max\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mset_ylim\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1832\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m ret\n", + "File \u001b[0;32m~/.conda/envs/tfp2-gpu/lib/python3.10/site-packages/matplotlib/_api/deprecation.py:454\u001b[0m, in \u001b[0;36mmake_keyword_only..wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 448\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(args) \u001b[38;5;241m>\u001b[39m name_idx:\n\u001b[1;32m 449\u001b[0m warn_deprecated(\n\u001b[1;32m 450\u001b[0m since, message\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mPassing the \u001b[39m\u001b[38;5;132;01m%(name)s\u001b[39;00m\u001b[38;5;124m \u001b[39m\u001b[38;5;132;01m%(obj_type)s\u001b[39;00m\u001b[38;5;124m \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 451\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mpositionally is deprecated since Matplotlib \u001b[39m\u001b[38;5;132;01m%(since)s\u001b[39;00m\u001b[38;5;124m; the \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 452\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mparameter will become keyword-only \u001b[39m\u001b[38;5;132;01m%(removal)s\u001b[39;00m\u001b[38;5;124m.\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 453\u001b[0m name\u001b[38;5;241m=\u001b[39mname, obj_type\u001b[38;5;241m=\u001b[39m\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mparameter of \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mfunc\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m()\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m--> 454\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/.conda/envs/tfp2-gpu/lib/python3.10/site-packages/matplotlib/axes/_base.py:3882\u001b[0m, in \u001b[0;36m_AxesBase.set_ylim\u001b[0;34m(self, bottom, top, emit, auto, ymin, ymax)\u001b[0m\n\u001b[1;32m 3880\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCannot pass both \u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtop\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m and \u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mymax\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 3881\u001b[0m top \u001b[38;5;241m=\u001b[39m ymax\n\u001b[0;32m-> 3882\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43myaxis\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_set_lim\u001b[49m\u001b[43m(\u001b[49m\u001b[43mbottom\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtop\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43memit\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43memit\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mauto\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mauto\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/.conda/envs/tfp2-gpu/lib/python3.10/site-packages/matplotlib/axis.py:1185\u001b[0m, in \u001b[0;36mAxis._set_lim\u001b[0;34m(self, v0, v1, emit, auto)\u001b[0m\n\u001b[1;32m 1183\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39maxes\u001b[38;5;241m.\u001b[39m_process_unit_info([(name, (v0, v1))], convert\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m)\n\u001b[1;32m 1184\u001b[0m v0 \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39maxes\u001b[38;5;241m.\u001b[39m_validate_converted_limits(v0, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mconvert_units)\n\u001b[0;32m-> 1185\u001b[0m v1 \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43maxes\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_validate_converted_limits\u001b[49m\u001b[43m(\u001b[49m\u001b[43mv1\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mconvert_units\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1187\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m v0 \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mor\u001b[39;00m v1 \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 1188\u001b[0m \u001b[38;5;66;03m# Axes init calls set_xlim(0, 1) before get_xlim() can be called,\u001b[39;00m\n\u001b[1;32m 1189\u001b[0m \u001b[38;5;66;03m# so only grab the limits if we really need them.\u001b[39;00m\n\u001b[1;32m 1190\u001b[0m old0, old1 \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mget_view_interval()\n", + "File \u001b[0;32m~/.conda/envs/tfp2-gpu/lib/python3.10/site-packages/matplotlib/axes/_base.py:3569\u001b[0m, in \u001b[0;36m_AxesBase._validate_converted_limits\u001b[0;34m(self, limit, convert)\u001b[0m\n\u001b[1;32m 3566\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m limit \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 3567\u001b[0m converted_limit \u001b[38;5;241m=\u001b[39m convert(limit)\n\u001b[1;32m 3568\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m (\u001b[38;5;28misinstance\u001b[39m(converted_limit, Real)\n\u001b[0;32m-> 3569\u001b[0m \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[43mnp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43misfinite\u001b[49m\u001b[43m(\u001b[49m\u001b[43mconverted_limit\u001b[49m\u001b[43m)\u001b[49m):\n\u001b[1;32m 3570\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mAxis limits cannot be NaN or Inf\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 3571\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m converted_limit\n", + "\u001b[0;31mTypeError\u001b[0m: ufunc 'isfinite' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.clf()\n", + "plt.plot(dict['xdata'][:],dict['zdata'][:3,:].T)\n", + "plt.xlabel('Time (ms)')\n", + "plt.xlim(2000,2700)\n", + "plt.ylim(0,10**20)\n", + "plt.show()\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "ea02d260-c68f-4e5a-beb1-061833d86c9d", + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "#discharge_obj.plot_time_series(file_dict['co2_pl']['only']['r0'])\n", + "\n", + "if spectro_analysis:\n", + " freq, time, amp_f_t=discharge_obj.spectro_calc(file_dict['co2_pl']['only']['r0']['xdata'][:],\\\n", + " file_dict['co2_pl']['only']['r0']['zdata'][:],\\\n", + " plot=True)\n", + " \n", + " freq_enhanced, time_enhanced, amp_f_t_enhanced=discharge_obj.spec_filters(freq, time, amp_f_t)\n", + " \n", + " discharge_obj.spectro_plot(freq_enhanced, time_enhanced, amp_f_t_enhanced)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "c298ce0a-0d9c-4d3d-b89b-616eb757da17", + "metadata": {}, + "outputs": [ + { + "ename": "KeyError", + "evalue": "'co2_s'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[5], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m time_std \u001b[38;5;241m=\u001b[39mfile_dict[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mts\u001b[39m\u001b[38;5;124m'\u001b[39m][\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mcore.temp\u001b[39m\u001b[38;5;124m'\u001b[39m][\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mcore.temp\u001b[39m\u001b[38;5;124m'\u001b[39m][\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mxdata\u001b[39m\u001b[38;5;124m'\u001b[39m][:]\n\u001b[0;32m----> 2\u001b[0m time \u001b[38;5;241m=\u001b[39m\u001b[43mfile_dict\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mco2_s\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124monly\u001b[39m\u001b[38;5;124m'\u001b[39m][\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mr0\u001b[39m\u001b[38;5;124m'\u001b[39m][\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mxdata\u001b[39m\u001b[38;5;124m'\u001b[39m][:]\n\u001b[1;32m 3\u001b[0m data\u001b[38;5;241m=\u001b[39m file_dict[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mco2_s\u001b[39m\u001b[38;5;124m'\u001b[39m][\u001b[38;5;124m'\u001b[39m\u001b[38;5;124monly\u001b[39m\u001b[38;5;124m'\u001b[39m][\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mr0\u001b[39m\u001b[38;5;124m'\u001b[39m][\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mzdata\u001b[39m\u001b[38;5;124m'\u001b[39m][:]\n\u001b[1;32m 4\u001b[0m matched_time, matched_data\u001b[38;5;241m=\u001b[39mdischarge_obj\u001b[38;5;241m.\u001b[39mtime_matching(time, data, time_std, mode\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mmerge_asof\u001b[39m\u001b[38;5;124m'\u001b[39m)\n", + "\u001b[0;31mKeyError\u001b[0m: 'co2_s'" + ] + } + ], + "source": [ + " \n", + "time_std =file_dict['ts']['core.temp']['core.temp']['xdata'][:]\n", + "time =file_dict['co2_s']['only']['r0']['xdata'][:]\n", + "data= file_dict['co2_s']['only']['r0']['zdata'][:]\n", + "matched_time, matched_data=discharge_obj.time_matching(time, data, time_std, mode='merge_asof')\n", + "\n", + "plt.plot(matched_time,time_std)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f70167a3-4566-44df-83ce-463f3d065e20", + "metadata": {}, + "outputs": [], + "source": [ + "time =file_dict['ts']['core.temp']['core.temp']['xdata'][:]\n", + "data =file_dict['ts']['core.temp']['core.temp']['zdata'][20,:]\n", + "time_std =file_dict['co2_pl']['only']['r0']['xdata'][:]\n", + "\n", + "data_interp=discharge_obj.time_interp(time, data, time_std)\n", + "\n", + "plt.plot(time_std,data_interp)\n", + "plt.plot(time,data)\n", + "plt.xlim(2100,2110)\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Dataset_prep/data_prep_obj.py b/Dataset_prep/data_prep_obj.py new file mode 100644 index 0000000..99f2d12 --- /dev/null +++ b/Dataset_prep/data_prep_obj.py @@ -0,0 +1,545 @@ +import h5py +import numpy as np +import pandas as pd +import matplotlib.pyplot as plt +import scipy +from scipy import signal +import os +from tqdm import tqdm + +import glob +import cv2 + + + +# In[2]: + +file_normal_size = { + 'ece_cali': 600 * 1024**2, #600MB + 'ece_s': 25 * 1024**2, + 'co2_pl': 600 * 1024**2, + 'co2_den': 600 * 1024**2, + 'co2_s': 0.2 * 1024**2, + 'ts': 0.5 * 1024**2, + 'cer': 8 * 1024**2, + 'mse': 4 * 1024**2, + 'mag': 50 * 1024**2, + 'mag_hi': 1000 * 1024**2, + 'actu': 100 * 1024**2, + 'basic': 40 * 1024**2, + 'profiles': 5* 1024**2, + } + +#names of the cyrotrons +ech_gytname = ['lei','luk','r2d'] + +multi_level=['cer','mag','profiles','basic','actu','ts','ts_error','ts_rz'] +no_level=['ece_cali','ece_s'] + +file_keys={ 'co2_s':['r0', 'v1', 'v2', 'v3'],\ + 'co2_den':['r0', 'v1', 'v2', 'v3'],\ + 'co2_pl':['r0', 'v1', 'v2', 'v3'],\ + + 'ece_cali':[],\ + 'ece_s':[],\ + + 'ts':{r'{}.{}'.format(area,sig):[r'{}.{}'.format(area,sig)] for area in ['core','divertor','tangential'] + for sig in ['dens','temp']}, + 'ts_error':{r'{}.{}'.format(area,sig):[r'{}.{}'.format(area,sig)] for area in ['core','divertor','tangential'] + for sig in ['dens','temp']}, + + 'ts_rz':{r'{}.{}'.format(area,sig):[r'{}.{}'.format(area,sig)] for area in ['core','divertor','tangential'] + for sig in ['r', 'z']}, + + 'cer': { + output: [f'q.{output}.v{channel:02d}' for channel in range(1, 33)] + + [f'q.{output}.t{channel:02d}' for channel in range(1, 49)] + for output in ['amp', 'samp', 'ti', 'sti', 'rot', 'srot', 'r', 'phi', 'nz', 'fz', 'zeff', 'vb', 'svb'] + },\ + + 'mse':[r'%02d'%i for i in range(1, 70)],\ + + 'mag':{'dsl':['dsl.1u180', 'dsl.2u180', 'dsl.3u180', 'dsl.4u157', 'dsl.5u157', 'dsl.6u157'],\ + 'mpi':['mpi.11m067', 'mpi.11m322', 'mpi.1a139', 'mpi.1a322', 'mpi.1b139', 'mpi.1b157', 'mpi.1b322', \ + 'mpi.1l180', 'mpi.1u157', 'mpi.2a067', 'mpi.2a139', 'mpi.2a322', 'mpi.2b067', 'mpi.2b139', \ + 'mpi.2b322', 'mpi.2l180', 'mpi.2u157', 'mpi.3a139', 'mpi.3a322', 'mpi.3b139', 'mpi.3b322', \ + 'mpi.3l180', 'mpi.3u157', 'mpi.4a139', 'mpi.4a322', 'mpi.4b139', 'mpi.4b322', 'mpi.4u157', \ + 'mpi.5a139', 'mpi.5a322', 'mpi.5b139', 'mpi.5b322', 'mpi.5u157', 'mpi.66m067', 'mpi.66m157', \ + 'mpi.66m247', 'mpi.66m322', 'mpi.67a097', 'mpi.67a142', 'mpi.67a157', 'mpi.67a322', \ + 'mpi.67b097', 'mpi.67b157', 'mpi.67b322', 'mpi.6fa322', 'mpi.6fb142', 'mpi.6fb322', \ + 'mpi.6na132', 'mpi.6na157', 'mpi.6na322', 'mpi.6nb157', 'mpi.6nb322', 'mpi.6u157', \ + 'mpi.79a147', 'mpi.79b142', 'mpi.79b322', 'mpi.79fa322', 'mpi.79na322', 'mpi.7fa322', \ + 'mpi.7fb322', 'mpi.7na322', 'mpi.7nb142', 'mpi.7nb322', 'mpi.7u157', 'mpi.89a322', \ + 'mpi.89b322', 'mpi.8a322', 'mpi.8b322', 'mpi.9a322', 'mpi.9b322'],\ + 'psf':['psf.1a', 'psf.1b', 'psf.2a', 'psf.2b', 'psf.3a', 'psf.3b', 'psf.4a', 'psf.4b', \ + 'psf.5a', 'psf.5b', 'psf.6fa', 'psf.6fb', 'psf.6na', 'psf.6nb', 'psf.7fa', \ + 'psf.7fb', 'psf.7na', 'psf.7nb', 'psf.8a', 'psf.8b', 'psf.9a', 'psf.9b'],\ + 'psi':['psi.11m', 'psi.12a', 'psi.12b', 'psi.1l', 'psi.23a', 'psi.23b', 'psi.2l', 'psi.34a', \ + 'psi.34b', 'psi.3l', 'psi.45a', 'psi.45b', 'psi.58a', 'psi.58b', 'psi.6a', 'psi.6b', \ + 'psi.7a', 'psi.7b', 'psi.89fb', 'psi.89nb', 'psi.9a', 'psi.9b']\ + }, \ + 'mag_hi':[f'b{i}' for i in range(1,9)],\ + 'profiles':{'pressure': ['betap','betan','pres'], \ + 'other': ['wmhd','li'],\ + 'q_info':['q0','q95','qmin','qpsi'],\ + 'q_rho_info':['rhoqmin'],\ + 'mag_geo_para':['alpha','r0','aminor',\ + 'kappa','tritop','tribot',\ + 'rmaxis','zmaxis',\ + 'volume'],\ + 'mag_map':['psirz','ssibry', 'ssimag'],\ + 'divertor_geo':['drsep',\ + 'gapbot','gapin','gapout','gaptop',\ + 'zxpt1','zxpt2'],\ + 'profile':['edensfit', 'etempfit',\ + 'itempfit','idensfit',\ + 'trotfit'],\ + 'mag_mode_number':['n1rms','n2rms','n3rms']},\ + + 'basic':{'mag':['ip', 'ipsip', 'iptipp','pcbcoil', 'bcoil','bt','vloop'],\ + 'neutron':[ 'plasticfix', 'fzns'],\ + 'd_alpha':['fs00','fs01','fs02','fs03','fs04','fs05']},\ + 'actu': {'pinj': ['pinjf_%dl' % k for k in [15,21,30,33]]+['pinjf_%dr' % k for k in [15,21,30,33]],\ + 'tinj':['tinj_%dl' % k for k in [15,21,30,33]]+['tinj_%dr' % k for k in [15,21,30,33]],\ + 'ech':['echpwrc','echpwr']\ + +['ec%sfpwrc' % (x) for x in ech_gytname]\ + +['ec%sxmfrac' % (x) for x in ech_gytname]\ + +['ec%spolang' % (x) for x in ech_gytname], + 'gas':['gasa', 'gasb', 'gasc', 'gasd', 'gase'], + 'rmp_current':['c19', 'c79', 'c139', 'c199', 'c259', 'c319', \ + 'iu30', 'iu90', 'iu150', 'iu210', 'iu270', 'iu330', \ + 'il30', 'il90', 'il150', 'il210', 'il270', 'il330'], + 'coil_field_strength':['ecoila', 'ecoilb', 'e567up', 'e567dn', 'e89dn', 'e89up']\ + +['f1a','f2a','f3a','f4a','f5a','f6a','f7a','f8a','f9a',\ + 'f1b','f2b','f3b','f4b','f5b','f6b','f7b','f8b','f9b'] } + + } + +data_keys=['xdata','ydata','zdata'] +unit_keys=['xunits','yunits','zunits'] + + +spec_params_default={ + 'window': 'hamm', + 'scaling': 'density', # {'density', 'spectrum'} + 'detrend': 'linear', # {'linear', 'constant', False} + 'eps': 1e-11} + +#object that contains the functions to maniupulate one discharge +class DichargePerp(): + def __init__(self,discharge=174823,suffix_list=['co2_s']): + self.discharge=discharge + self.suffix_list=suffix_list + + def file_path_gen(self,discharge,suffix): + return f'/scratch/gpfs/EKOLEMEN/big_d3d_data/{str(discharge)[:2]}0000/{discharge}_{suffix}.h5' + + def get_data(self,discharge,suffix): + discharge_path=self.file_path_gen(discharge,suffix) + input_file = h5py.File(discharge_path, 'r') + return input_file + + #divide the data into sub catagory + def data_division(self,input_file,input_suffix): + if input_suffix in multi_level: + input_multi_level={} + for key in file_keys[input_suffix].keys(): + keys_of_this_catagory=file_keys[input_suffix][key] + input_multi_level[key]={key_i:input_file[key_i] for key_i in keys_of_this_catagory} + else: + input_multi_level={'only': input_file} + return input_multi_level + + def get_full_data(self): + file_dict={} + for suffix in self.suffix_list: + input_file=self.get_data(self.discharge,suffix) + file_dict[suffix]=self.data_division(input_file,suffix) + self.file_dict=file_dict + return file_dict + + @staticmethod + def spec_filters(freq, time, amp_f_t,spec_params=spec_params_default,thr=0.9, gaussblr_win=(31,3)): + def norm(amp_f_t): + mn = amp_f_t.mean() + std = amp_f_t.std() + return((amp_f_t-mn)/std) + + def rescale(amp_f_t): + return (amp_f_t-amp_f_t.min())/(amp_f_t.max()-amp_f_t.min()) + + def quantfilt(amp_f_t,thr=0.9): + filt = np.quantile(amp_f_t,thr,axis=0) + out = np.where(amp_f_t target: + high = mid - 1 + else: + return mid + # Update the best index if the current mid is closer to the target + if abs(time1[mid] - target) < abs(time1[best_idx] - target): + best_idx = mid + return best_idx + + # Align data1 to time_std + matched_data = [] + matched_time = [] + for t in time_std: + closest_idx = find_closest(t) + if mode=='2d': + matched_data.append(data1[:,closest_idx]) + else: + matched_data.append(data1[closest_idx]) + matched_time.append(time1[closest_idx]) + + return matched_time, matched_data + + @classmethod + def time_matching(cls,time, data, time_std, mode='merge_asof'): + if len(data.shape)==1: + if mode=='merge_asof': + return cls.time_matching_merge_asof_1d(time, data, time_std) + elif mode=='binary': + return cls.time_matching_binary_search(time, data, time_std, mode='1d') + elif len(data.shape)==2: + if mode=='merge_asof': + return cls.time_matching_merge_asof_2d(time, data, time_std) + elif mode=='binary': + return cls.time_matching_binary_search(time, data, time_std, mode='2d') + else: + print('The data has to be 1d arry or 2d array') + + @staticmethod + def time_interp_past_looking(time, data, time_std, mode='extrapolate'): + if mode=='extrapolate': + pass + elif mode=='fill': + pass + + @staticmethod + def time_interp(time, data, time_std): + return np.interp(time_std,time, data) + + + +class DatasetPrep(DichargePerp): + def __init__(self,discharge_search_list,suffix_list): + self.discharge_search_list=discharge_search_list + self.suffix_list=suffix_list + + def filter_discharges(self): + suffix_list=self.suffix_list + discharge_search_list=self.discharge_search_list + # Define the criteria for the files you're interested in + + criteria = {key:file_normal_size[key]*0.5 for key in suffix_list} + + discharge_list = {key: [] for key in suffix_list} + + for discharge in tqdm(discharge_search_list): + for suffix, size_limit in criteria.items(): + discharge_path=self.file_path_gen(discharge,suffix) + # Check if the file exists + if os.path.isfile(discharge_path): + # Get the size of the file + file_size = os.path.getsize(discharge_path) + if file_size > size_limit: + discharge_list[suffix].append(discharge) + + else: + pass + + return discharge_list + + +class data_obj_rest(): + + def save_dict_to_hdf5(dictionary, h5file): + for key, value in dictionary.items(): + if isinstance(value, dict): + group = h5file.create_group(key) + save_dict_to_hdf5(value, group) + else: + h5file.create_dataset(key, data=value) + + def TS_interp_(discharge,write_h5=True,plot=False): + TS_Z_min_set=[0.0, 0.03, 0.09, 0.1, 0.15, 0.16, 0.21, 0.22, 0.26, 0.27, 0.28,\ + 0.3, 0.31, 0.32, 0.36, 0.37, 0.39, 0.4, 0.41, 0.42, 0.43, 0.44, \ + 0.45, 0.46, 0.47, 0.48, 0.49, 0.5, 0.51, 0.52, 0.53, 0.54, 0.55,\ + 0.56, 0.57, 0.58, 0.59, 0.6, 0.61, 0.62, 0.63, 0.64, 0.65, 0.66,\ + 0.67, 0.68, 0.69, 0.7, 0.71, 0.72, 0.73, 0.74, 0.75, 0.76, 0.77, \ + 0.78, 0.79, 0.8, 0.81, 0.82, 0.83, 0.84, 0.85, 0.86, 0.87, 0.88, \ + 0.89, 0.9, 0.91, 0.92, 0.93] + str_shot=str(discharge)[:2] + path = f'/scratch/gpfs/EKOLEMEN/big_d3d_data/{str_shot}0000/' + + TS_file = h5py.File(path + str(discharge) + '_TS.h5', 'r') + TS_RZ_file = h5py.File(path + str(discharge) + '_TS_RZ.h5', 'r') + + TS_Z=TS_RZ_file['S.BLESSED.CORE.Z']['zdata'][:] + order_index=np.argsort(TS_Z) + TS_Z_sort=TS_Z[order_index] + + TS_interp={} + TS_keys=['TS.BLESSED.CORE.density','TS.BLESSED.CORE.temp'] + for key in TS_keys: + TS_interp_list=[] + TS_time=TS_file[key]['xdata'][:] + for i in range(len(TS_time)): + TS_data=TS_file[key]['zdata'][:,i]*0.1**19 + TS_data_sort=TS_data[order_index] + TS_interp_tmp=np.interp(TS_Z_min_set,TS_Z_sort,TS_data_sort) + TS_interp_list.append(TS_interp_tmp) + #########*********************start herere + TS_interp[key]={'xdata':np.array(TS_time),'ydata':np.array(TS_Z_min_set),'zdata':np.array(TS_interp_list).T*10.**19} + + if write_h5: + + with h5py.File(f'{path}{discharge}_TS_core_interp.h5', 'w') as h5file: + save_dict_to_hdf5(TS_interp, h5file) + + if plot: + plt.clf() + plt.scatter(TS_Z_min_set,TS_interp[key]['zdata'][:,600],label='interp') + plt.scatter(TS_Z_sort,(TS_file[key]['zdata'][:,600])[order_index],label='origin') + plt.legend() + plt.show() + + return 0 + + + def read_file(discharge,file_suffix,df_time): + + path=find_path(discharge) + file=h5py.File(f'{path}{discharge}_{file_suffix}.h5', 'r') + keys=file.keys() + + + for i,key in enumerate(keys): + dict_tmp={'xdata':file[key]['xdata']} + if len(file[key]['zdata'].shape)==2: + for j in range(file[key]['zdata'].shape[0]): + dict_tmp[key+str(j)]=file[key]['zdata'][j,:] + elif len(file[key]['zdata'].shape)==1: + dict_tmp[key]=file[key]['zdata'] + + df_tmp=pd.DataFrame(dict_tmp).astype('float32') + + if i ==0: + df= pd.merge_asof(df_time,df_tmp,on='xdata',direction='nearest') + else: + df= pd.merge_asof(df,df_tmp,on='xdata',direction='nearest') + + file.close() + return df + + def hdf5_generator(discharge_list,h5_profiles,data_filename='diag2diag.pkl'): + all_X=[] + all_y=[] + all_time=[] + discharg_read_list=[] + len_list=[] + for discharge in tqdm(discharge_list): + print(discharge) + try: + dfs={} + #creating the standard time + path=find_path(discharge) + + file = h5py.File(f'{path}{discharge}_shape.h5', 'r') + t_min=0 + t_max=file['R0']['xdata'][-1] + file.close() + + file=h5py.File(f'{path}{discharge}_TS.h5', 'r') + df_time=pd.DataFrame({'xdata':file[list(file.keys())[0]]['xdata']}) + time=file[list(file.keys())[0]]['xdata'][:] + + time_index=(time >= t_min) & (time <= t_max) + time_tmp=time[time_index] + df_time=pd.DataFrame({'xdata':time_tmp}) + file.close() + + #Read all the files + for file_suffix in h5_profiles: + df=read_file(discharge,file_suffix,df_time) + dfs[file_suffix]=df + + #summarize all the data in this dicharge + df_tmp=np.concatenate([dfs[key].to_numpy()[1:] for key in dfs.keys()], axis=1) + + key_list_dict={} + key_list=[] + for key in dfs.keys(): + key_list_dict[key]=list(dfs[key].keys()) + for key_ in key_list_dict[key]: + key_list.append(key_) + + #add this discharge to the total file + all_X.append(df_tmp) + all_time.append(df_time['xdata']) + all_time_tmp= np.concatenate(all_time, axis=0) + all_X_tmp = np.concatenate(all_X, axis=0) + len_list.append(df_time['xdata'].shape[0]) + discharg_read_list.append(discharge) + # Serialize the data and save to a file + with open(data_filename, 'wb') as file: + pickle.dump([all_X_tmp,all_time_tmp,discharg_read_list,len_list,key_list,key_list_dict], file) + + except Exception as e: + #if 2==1: + print(f"Error: {e}") + continue + finally: + #if 2==1: + try: + file.close() + except: + continue + + return [all_X_tmp] From 2124c02d532c92745910a374b4f1e207300ddff9 Mon Sep 17 00:00:00 2001 From: renierts Date: Fri, 19 Apr 2024 13:19:15 +0200 Subject: [PATCH 003/103] Cosmetic changes of Max's code. --- Dataset_prep/data_prep_obj.py | 545 ---------------- .../Data_fetching}/check_copy_and_rm.py | 0 .../Data_fetching}/fetch_GAdata.py | 0 .../Data_fetching}/fetch_toksearch.py | 0 .../Data_fetching}/mygadata.py | 0 .../Dataset_prep}/0read_data_run.ipynb | 0 examples/Dataset_prep/data_prep_obj.py | 583 ++++++++++++++++++ pyproject.toml | 28 + .../__init__.py | 0 .../base/__init__.py | 0 .../core/__init__.py | 0 .../datasets/__init__.py | 0 .../display/__init__.py | 0 .../feature/__init__.py | 0 .../util/__init__.py | 0 15 files changed, 611 insertions(+), 545 deletions(-) delete mode 100644 Dataset_prep/data_prep_obj.py rename {Data_fetching => examples/Data_fetching}/check_copy_and_rm.py (100%) rename {Data_fetching => examples/Data_fetching}/fetch_GAdata.py (100%) rename {Data_fetching => examples/Data_fetching}/fetch_toksearch.py (100%) rename {Data_fetching => examples/Data_fetching}/mygadata.py (100%) rename {Dataset_prep => examples/Dataset_prep}/0read_data_run.ipynb (100%) create mode 100644 examples/Dataset_prep/data_prep_obj.py create mode 100644 pyproject.toml rename src/{fusionaihub => fusion_ai_hub}/__init__.py (100%) rename src/{fusionaihub => fusion_ai_hub}/base/__init__.py (100%) rename src/{fusionaihub => fusion_ai_hub}/core/__init__.py (100%) rename src/{fusionaihub => fusion_ai_hub}/datasets/__init__.py (100%) rename src/{fusionaihub => fusion_ai_hub}/display/__init__.py (100%) rename src/{fusionaihub => fusion_ai_hub}/feature/__init__.py (100%) rename src/{fusionaihub => fusion_ai_hub}/util/__init__.py (100%) diff --git a/Dataset_prep/data_prep_obj.py b/Dataset_prep/data_prep_obj.py deleted file mode 100644 index 99f2d12..0000000 --- a/Dataset_prep/data_prep_obj.py +++ /dev/null @@ -1,545 +0,0 @@ -import h5py -import numpy as np -import pandas as pd -import matplotlib.pyplot as plt -import scipy -from scipy import signal -import os -from tqdm import tqdm - -import glob -import cv2 - - - -# In[2]: - -file_normal_size = { - 'ece_cali': 600 * 1024**2, #600MB - 'ece_s': 25 * 1024**2, - 'co2_pl': 600 * 1024**2, - 'co2_den': 600 * 1024**2, - 'co2_s': 0.2 * 1024**2, - 'ts': 0.5 * 1024**2, - 'cer': 8 * 1024**2, - 'mse': 4 * 1024**2, - 'mag': 50 * 1024**2, - 'mag_hi': 1000 * 1024**2, - 'actu': 100 * 1024**2, - 'basic': 40 * 1024**2, - 'profiles': 5* 1024**2, - } - -#names of the cyrotrons -ech_gytname = ['lei','luk','r2d'] - -multi_level=['cer','mag','profiles','basic','actu','ts','ts_error','ts_rz'] -no_level=['ece_cali','ece_s'] - -file_keys={ 'co2_s':['r0', 'v1', 'v2', 'v3'],\ - 'co2_den':['r0', 'v1', 'v2', 'v3'],\ - 'co2_pl':['r0', 'v1', 'v2', 'v3'],\ - - 'ece_cali':[],\ - 'ece_s':[],\ - - 'ts':{r'{}.{}'.format(area,sig):[r'{}.{}'.format(area,sig)] for area in ['core','divertor','tangential'] - for sig in ['dens','temp']}, - 'ts_error':{r'{}.{}'.format(area,sig):[r'{}.{}'.format(area,sig)] for area in ['core','divertor','tangential'] - for sig in ['dens','temp']}, - - 'ts_rz':{r'{}.{}'.format(area,sig):[r'{}.{}'.format(area,sig)] for area in ['core','divertor','tangential'] - for sig in ['r', 'z']}, - - 'cer': { - output: [f'q.{output}.v{channel:02d}' for channel in range(1, 33)] + - [f'q.{output}.t{channel:02d}' for channel in range(1, 49)] - for output in ['amp', 'samp', 'ti', 'sti', 'rot', 'srot', 'r', 'phi', 'nz', 'fz', 'zeff', 'vb', 'svb'] - },\ - - 'mse':[r'%02d'%i for i in range(1, 70)],\ - - 'mag':{'dsl':['dsl.1u180', 'dsl.2u180', 'dsl.3u180', 'dsl.4u157', 'dsl.5u157', 'dsl.6u157'],\ - 'mpi':['mpi.11m067', 'mpi.11m322', 'mpi.1a139', 'mpi.1a322', 'mpi.1b139', 'mpi.1b157', 'mpi.1b322', \ - 'mpi.1l180', 'mpi.1u157', 'mpi.2a067', 'mpi.2a139', 'mpi.2a322', 'mpi.2b067', 'mpi.2b139', \ - 'mpi.2b322', 'mpi.2l180', 'mpi.2u157', 'mpi.3a139', 'mpi.3a322', 'mpi.3b139', 'mpi.3b322', \ - 'mpi.3l180', 'mpi.3u157', 'mpi.4a139', 'mpi.4a322', 'mpi.4b139', 'mpi.4b322', 'mpi.4u157', \ - 'mpi.5a139', 'mpi.5a322', 'mpi.5b139', 'mpi.5b322', 'mpi.5u157', 'mpi.66m067', 'mpi.66m157', \ - 'mpi.66m247', 'mpi.66m322', 'mpi.67a097', 'mpi.67a142', 'mpi.67a157', 'mpi.67a322', \ - 'mpi.67b097', 'mpi.67b157', 'mpi.67b322', 'mpi.6fa322', 'mpi.6fb142', 'mpi.6fb322', \ - 'mpi.6na132', 'mpi.6na157', 'mpi.6na322', 'mpi.6nb157', 'mpi.6nb322', 'mpi.6u157', \ - 'mpi.79a147', 'mpi.79b142', 'mpi.79b322', 'mpi.79fa322', 'mpi.79na322', 'mpi.7fa322', \ - 'mpi.7fb322', 'mpi.7na322', 'mpi.7nb142', 'mpi.7nb322', 'mpi.7u157', 'mpi.89a322', \ - 'mpi.89b322', 'mpi.8a322', 'mpi.8b322', 'mpi.9a322', 'mpi.9b322'],\ - 'psf':['psf.1a', 'psf.1b', 'psf.2a', 'psf.2b', 'psf.3a', 'psf.3b', 'psf.4a', 'psf.4b', \ - 'psf.5a', 'psf.5b', 'psf.6fa', 'psf.6fb', 'psf.6na', 'psf.6nb', 'psf.7fa', \ - 'psf.7fb', 'psf.7na', 'psf.7nb', 'psf.8a', 'psf.8b', 'psf.9a', 'psf.9b'],\ - 'psi':['psi.11m', 'psi.12a', 'psi.12b', 'psi.1l', 'psi.23a', 'psi.23b', 'psi.2l', 'psi.34a', \ - 'psi.34b', 'psi.3l', 'psi.45a', 'psi.45b', 'psi.58a', 'psi.58b', 'psi.6a', 'psi.6b', \ - 'psi.7a', 'psi.7b', 'psi.89fb', 'psi.89nb', 'psi.9a', 'psi.9b']\ - }, \ - 'mag_hi':[f'b{i}' for i in range(1,9)],\ - 'profiles':{'pressure': ['betap','betan','pres'], \ - 'other': ['wmhd','li'],\ - 'q_info':['q0','q95','qmin','qpsi'],\ - 'q_rho_info':['rhoqmin'],\ - 'mag_geo_para':['alpha','r0','aminor',\ - 'kappa','tritop','tribot',\ - 'rmaxis','zmaxis',\ - 'volume'],\ - 'mag_map':['psirz','ssibry', 'ssimag'],\ - 'divertor_geo':['drsep',\ - 'gapbot','gapin','gapout','gaptop',\ - 'zxpt1','zxpt2'],\ - 'profile':['edensfit', 'etempfit',\ - 'itempfit','idensfit',\ - 'trotfit'],\ - 'mag_mode_number':['n1rms','n2rms','n3rms']},\ - - 'basic':{'mag':['ip', 'ipsip', 'iptipp','pcbcoil', 'bcoil','bt','vloop'],\ - 'neutron':[ 'plasticfix', 'fzns'],\ - 'd_alpha':['fs00','fs01','fs02','fs03','fs04','fs05']},\ - 'actu': {'pinj': ['pinjf_%dl' % k for k in [15,21,30,33]]+['pinjf_%dr' % k for k in [15,21,30,33]],\ - 'tinj':['tinj_%dl' % k for k in [15,21,30,33]]+['tinj_%dr' % k for k in [15,21,30,33]],\ - 'ech':['echpwrc','echpwr']\ - +['ec%sfpwrc' % (x) for x in ech_gytname]\ - +['ec%sxmfrac' % (x) for x in ech_gytname]\ - +['ec%spolang' % (x) for x in ech_gytname], - 'gas':['gasa', 'gasb', 'gasc', 'gasd', 'gase'], - 'rmp_current':['c19', 'c79', 'c139', 'c199', 'c259', 'c319', \ - 'iu30', 'iu90', 'iu150', 'iu210', 'iu270', 'iu330', \ - 'il30', 'il90', 'il150', 'il210', 'il270', 'il330'], - 'coil_field_strength':['ecoila', 'ecoilb', 'e567up', 'e567dn', 'e89dn', 'e89up']\ - +['f1a','f2a','f3a','f4a','f5a','f6a','f7a','f8a','f9a',\ - 'f1b','f2b','f3b','f4b','f5b','f6b','f7b','f8b','f9b'] } - - } - -data_keys=['xdata','ydata','zdata'] -unit_keys=['xunits','yunits','zunits'] - - -spec_params_default={ - 'window': 'hamm', - 'scaling': 'density', # {'density', 'spectrum'} - 'detrend': 'linear', # {'linear', 'constant', False} - 'eps': 1e-11} - -#object that contains the functions to maniupulate one discharge -class DichargePerp(): - def __init__(self,discharge=174823,suffix_list=['co2_s']): - self.discharge=discharge - self.suffix_list=suffix_list - - def file_path_gen(self,discharge,suffix): - return f'/scratch/gpfs/EKOLEMEN/big_d3d_data/{str(discharge)[:2]}0000/{discharge}_{suffix}.h5' - - def get_data(self,discharge,suffix): - discharge_path=self.file_path_gen(discharge,suffix) - input_file = h5py.File(discharge_path, 'r') - return input_file - - #divide the data into sub catagory - def data_division(self,input_file,input_suffix): - if input_suffix in multi_level: - input_multi_level={} - for key in file_keys[input_suffix].keys(): - keys_of_this_catagory=file_keys[input_suffix][key] - input_multi_level[key]={key_i:input_file[key_i] for key_i in keys_of_this_catagory} - else: - input_multi_level={'only': input_file} - return input_multi_level - - def get_full_data(self): - file_dict={} - for suffix in self.suffix_list: - input_file=self.get_data(self.discharge,suffix) - file_dict[suffix]=self.data_division(input_file,suffix) - self.file_dict=file_dict - return file_dict - - @staticmethod - def spec_filters(freq, time, amp_f_t,spec_params=spec_params_default,thr=0.9, gaussblr_win=(31,3)): - def norm(amp_f_t): - mn = amp_f_t.mean() - std = amp_f_t.std() - return((amp_f_t-mn)/std) - - def rescale(amp_f_t): - return (amp_f_t-amp_f_t.min())/(amp_f_t.max()-amp_f_t.min()) - - def quantfilt(amp_f_t,thr=0.9): - filt = np.quantile(amp_f_t,thr,axis=0) - out = np.where(amp_f_t target: - high = mid - 1 - else: - return mid - # Update the best index if the current mid is closer to the target - if abs(time1[mid] - target) < abs(time1[best_idx] - target): - best_idx = mid - return best_idx - - # Align data1 to time_std - matched_data = [] - matched_time = [] - for t in time_std: - closest_idx = find_closest(t) - if mode=='2d': - matched_data.append(data1[:,closest_idx]) - else: - matched_data.append(data1[closest_idx]) - matched_time.append(time1[closest_idx]) - - return matched_time, matched_data - - @classmethod - def time_matching(cls,time, data, time_std, mode='merge_asof'): - if len(data.shape)==1: - if mode=='merge_asof': - return cls.time_matching_merge_asof_1d(time, data, time_std) - elif mode=='binary': - return cls.time_matching_binary_search(time, data, time_std, mode='1d') - elif len(data.shape)==2: - if mode=='merge_asof': - return cls.time_matching_merge_asof_2d(time, data, time_std) - elif mode=='binary': - return cls.time_matching_binary_search(time, data, time_std, mode='2d') - else: - print('The data has to be 1d arry or 2d array') - - @staticmethod - def time_interp_past_looking(time, data, time_std, mode='extrapolate'): - if mode=='extrapolate': - pass - elif mode=='fill': - pass - - @staticmethod - def time_interp(time, data, time_std): - return np.interp(time_std,time, data) - - - -class DatasetPrep(DichargePerp): - def __init__(self,discharge_search_list,suffix_list): - self.discharge_search_list=discharge_search_list - self.suffix_list=suffix_list - - def filter_discharges(self): - suffix_list=self.suffix_list - discharge_search_list=self.discharge_search_list - # Define the criteria for the files you're interested in - - criteria = {key:file_normal_size[key]*0.5 for key in suffix_list} - - discharge_list = {key: [] for key in suffix_list} - - for discharge in tqdm(discharge_search_list): - for suffix, size_limit in criteria.items(): - discharge_path=self.file_path_gen(discharge,suffix) - # Check if the file exists - if os.path.isfile(discharge_path): - # Get the size of the file - file_size = os.path.getsize(discharge_path) - if file_size > size_limit: - discharge_list[suffix].append(discharge) - - else: - pass - - return discharge_list - - -class data_obj_rest(): - - def save_dict_to_hdf5(dictionary, h5file): - for key, value in dictionary.items(): - if isinstance(value, dict): - group = h5file.create_group(key) - save_dict_to_hdf5(value, group) - else: - h5file.create_dataset(key, data=value) - - def TS_interp_(discharge,write_h5=True,plot=False): - TS_Z_min_set=[0.0, 0.03, 0.09, 0.1, 0.15, 0.16, 0.21, 0.22, 0.26, 0.27, 0.28,\ - 0.3, 0.31, 0.32, 0.36, 0.37, 0.39, 0.4, 0.41, 0.42, 0.43, 0.44, \ - 0.45, 0.46, 0.47, 0.48, 0.49, 0.5, 0.51, 0.52, 0.53, 0.54, 0.55,\ - 0.56, 0.57, 0.58, 0.59, 0.6, 0.61, 0.62, 0.63, 0.64, 0.65, 0.66,\ - 0.67, 0.68, 0.69, 0.7, 0.71, 0.72, 0.73, 0.74, 0.75, 0.76, 0.77, \ - 0.78, 0.79, 0.8, 0.81, 0.82, 0.83, 0.84, 0.85, 0.86, 0.87, 0.88, \ - 0.89, 0.9, 0.91, 0.92, 0.93] - str_shot=str(discharge)[:2] - path = f'/scratch/gpfs/EKOLEMEN/big_d3d_data/{str_shot}0000/' - - TS_file = h5py.File(path + str(discharge) + '_TS.h5', 'r') - TS_RZ_file = h5py.File(path + str(discharge) + '_TS_RZ.h5', 'r') - - TS_Z=TS_RZ_file['S.BLESSED.CORE.Z']['zdata'][:] - order_index=np.argsort(TS_Z) - TS_Z_sort=TS_Z[order_index] - - TS_interp={} - TS_keys=['TS.BLESSED.CORE.density','TS.BLESSED.CORE.temp'] - for key in TS_keys: - TS_interp_list=[] - TS_time=TS_file[key]['xdata'][:] - for i in range(len(TS_time)): - TS_data=TS_file[key]['zdata'][:,i]*0.1**19 - TS_data_sort=TS_data[order_index] - TS_interp_tmp=np.interp(TS_Z_min_set,TS_Z_sort,TS_data_sort) - TS_interp_list.append(TS_interp_tmp) - #########*********************start herere - TS_interp[key]={'xdata':np.array(TS_time),'ydata':np.array(TS_Z_min_set),'zdata':np.array(TS_interp_list).T*10.**19} - - if write_h5: - - with h5py.File(f'{path}{discharge}_TS_core_interp.h5', 'w') as h5file: - save_dict_to_hdf5(TS_interp, h5file) - - if plot: - plt.clf() - plt.scatter(TS_Z_min_set,TS_interp[key]['zdata'][:,600],label='interp') - plt.scatter(TS_Z_sort,(TS_file[key]['zdata'][:,600])[order_index],label='origin') - plt.legend() - plt.show() - - return 0 - - - def read_file(discharge,file_suffix,df_time): - - path=find_path(discharge) - file=h5py.File(f'{path}{discharge}_{file_suffix}.h5', 'r') - keys=file.keys() - - - for i,key in enumerate(keys): - dict_tmp={'xdata':file[key]['xdata']} - if len(file[key]['zdata'].shape)==2: - for j in range(file[key]['zdata'].shape[0]): - dict_tmp[key+str(j)]=file[key]['zdata'][j,:] - elif len(file[key]['zdata'].shape)==1: - dict_tmp[key]=file[key]['zdata'] - - df_tmp=pd.DataFrame(dict_tmp).astype('float32') - - if i ==0: - df= pd.merge_asof(df_time,df_tmp,on='xdata',direction='nearest') - else: - df= pd.merge_asof(df,df_tmp,on='xdata',direction='nearest') - - file.close() - return df - - def hdf5_generator(discharge_list,h5_profiles,data_filename='diag2diag.pkl'): - all_X=[] - all_y=[] - all_time=[] - discharg_read_list=[] - len_list=[] - for discharge in tqdm(discharge_list): - print(discharge) - try: - dfs={} - #creating the standard time - path=find_path(discharge) - - file = h5py.File(f'{path}{discharge}_shape.h5', 'r') - t_min=0 - t_max=file['R0']['xdata'][-1] - file.close() - - file=h5py.File(f'{path}{discharge}_TS.h5', 'r') - df_time=pd.DataFrame({'xdata':file[list(file.keys())[0]]['xdata']}) - time=file[list(file.keys())[0]]['xdata'][:] - - time_index=(time >= t_min) & (time <= t_max) - time_tmp=time[time_index] - df_time=pd.DataFrame({'xdata':time_tmp}) - file.close() - - #Read all the files - for file_suffix in h5_profiles: - df=read_file(discharge,file_suffix,df_time) - dfs[file_suffix]=df - - #summarize all the data in this dicharge - df_tmp=np.concatenate([dfs[key].to_numpy()[1:] for key in dfs.keys()], axis=1) - - key_list_dict={} - key_list=[] - for key in dfs.keys(): - key_list_dict[key]=list(dfs[key].keys()) - for key_ in key_list_dict[key]: - key_list.append(key_) - - #add this discharge to the total file - all_X.append(df_tmp) - all_time.append(df_time['xdata']) - all_time_tmp= np.concatenate(all_time, axis=0) - all_X_tmp = np.concatenate(all_X, axis=0) - len_list.append(df_time['xdata'].shape[0]) - discharg_read_list.append(discharge) - # Serialize the data and save to a file - with open(data_filename, 'wb') as file: - pickle.dump([all_X_tmp,all_time_tmp,discharg_read_list,len_list,key_list,key_list_dict], file) - - except Exception as e: - #if 2==1: - print(f"Error: {e}") - continue - finally: - #if 2==1: - try: - file.close() - except: - continue - - return [all_X_tmp] diff --git a/Data_fetching/check_copy_and_rm.py b/examples/Data_fetching/check_copy_and_rm.py similarity index 100% rename from Data_fetching/check_copy_and_rm.py rename to examples/Data_fetching/check_copy_and_rm.py diff --git a/Data_fetching/fetch_GAdata.py b/examples/Data_fetching/fetch_GAdata.py similarity index 100% rename from Data_fetching/fetch_GAdata.py rename to examples/Data_fetching/fetch_GAdata.py diff --git a/Data_fetching/fetch_toksearch.py b/examples/Data_fetching/fetch_toksearch.py similarity index 100% rename from Data_fetching/fetch_toksearch.py rename to examples/Data_fetching/fetch_toksearch.py diff --git a/Data_fetching/mygadata.py b/examples/Data_fetching/mygadata.py similarity index 100% rename from Data_fetching/mygadata.py rename to examples/Data_fetching/mygadata.py diff --git a/Dataset_prep/0read_data_run.ipynb b/examples/Dataset_prep/0read_data_run.ipynb similarity index 100% rename from Dataset_prep/0read_data_run.ipynb rename to examples/Dataset_prep/0read_data_run.ipynb diff --git a/examples/Dataset_prep/data_prep_obj.py b/examples/Dataset_prep/data_prep_obj.py new file mode 100644 index 0000000..dd3b7e1 --- /dev/null +++ b/examples/Dataset_prep/data_prep_obj.py @@ -0,0 +1,583 @@ +""" +Data Preparation object from Max Curie with small adaptions by Peter Steiner. +""" +import h5py +import numpy as np +import pandas as pd +import matplotlib.pyplot as plt +from scipy import signal +import os +from tqdm import tqdm +import pickle +import cv2 + + +file_normal_size = { + 'ece_cali': 600 * 1024**2, # 600MB + 'ece_s': 25 * 1024**2, + 'co2_pl': 600 * 1024**2, + 'co2_den': 600 * 1024**2, + 'co2_s': 0.2 * 1024**2, + 'ts': 0.5 * 1024**2, + 'cer': 8 * 1024**2, + 'mse': 4 * 1024**2, + 'mag': 50 * 1024**2, + 'mag_hi': 1000 * 1024**2, + 'actu': 100 * 1024**2, + 'basic': 40 * 1024**2, + 'profiles': 5 * 1024**2, + } + +# names of the cyrotrons +ech_gytname = ['lei', 'luk', 'r2d'] + +multi_level = ['cer', 'mag', 'profiles', 'basic', 'actu', + 'ts', 'ts_error', 'ts_rz'] +no_level = ['ece_cali', 'ece_s'] + +file_keys = {'co2_s': ['r0', 'v1', 'v2', 'v3'], + 'co2_den': ['r0', 'v1', 'v2', 'v3'], + 'co2_pl': ['r0', 'v1', 'v2', 'v3'], + 'ece_cali': [], + 'ece_s': [], + 'ts': {r'{}.{}'.format(area,sig): + [r'{}.{}'.format(area,sig)] + for area in ['core', 'divertor', 'tangential'] + for sig in ['dens', 'temp']}, + 'ts_error': {r'{}.{}'.format(area, sig): + [r'{}.{}'.format(area, sig)] + for area in ['core', 'divertor', 'tangential'] + for sig in ['dens', 'temp']}, + 'ts_rz': {r'{}.{}'.format(area,sig): + [r'{}.{}'.format(area, sig)] + for area in ['core','divertor','tangential'] + for sig in ['r', 'z']}, + 'cer': {output: [f'q.{output}.v{channel:02d}' + for channel in range(1, 33)] + + [f'q.{output}.t{channel:02d}' + for channel in range(1, 49)] + for output in ['amp', 'samp', 'ti', 'sti', 'rot', 'srot', + 'r', 'phi', 'nz', 'fz', 'zeff', 'vb', + 'svb']}, + 'mse': [r'%02d' % i for i in range(1, 70)], + 'mag': {'dsl': ['dsl.1u180', 'dsl.2u180', 'dsl.3u180', + 'dsl.4u157', 'dsl.5u157', 'dsl.6u157'], + 'mpi': [ + 'mpi.11m067', 'mpi.11m322', 'mpi.1a139', 'mpi.1a322', + 'mpi.1b139', 'mpi.1b157', 'mpi.1b322', 'mpi.1l180', + 'mpi.1u157', 'mpi.2a067', 'mpi.2a139', 'mpi.2a322', + 'mpi.2b067', 'mpi.2b139', 'mpi.2b322', 'mpi.2l180', + 'mpi.2u157', 'mpi.3a139', 'mpi.3a322', 'mpi.3b139', + 'mpi.3b322', 'mpi.3l180', 'mpi.3u157', 'mpi.4a139', + 'mpi.4a322', 'mpi.4b139', 'mpi.4b322', 'mpi.4u157', + 'mpi.5a139', 'mpi.5a322', 'mpi.5b139', 'mpi.5b322', + 'mpi.5u157', 'mpi.66m067', 'mpi.66m157', 'mpi.66m247', + 'mpi.66m322', 'mpi.67a097', 'mpi.67a142', + 'mpi.67a157', 'mpi.67a322', 'mpi.67b097', + 'mpi.67b157', 'mpi.67b322', 'mpi.6fa322', + 'mpi.6fb142', 'mpi.6fb322', 'mpi.6na132', + 'mpi.6na157', 'mpi.6na322', 'mpi.6nb157', + 'mpi.6nb322', 'mpi.6u157', 'mpi.79a147', 'mpi.79b142', + 'mpi.79b322', 'mpi.79fa322', 'mpi.79na322', + 'mpi.7fa322', 'mpi.7fb322', 'mpi.7na322', + 'mpi.7nb142', 'mpi.7nb322', 'mpi.7u157', 'mpi.89a322', + 'mpi.89b322', 'mpi.8a322', 'mpi.8b322', 'mpi.9a322', + 'mpi.9b322'], + 'psf': ['psf.1a', 'psf.1b', 'psf.2a', 'psf.2b', 'psf.3a', + 'psf.3b', 'psf.4a', 'psf.4b', 'psf.5a', 'psf.5b', + 'psf.6fa', 'psf.6fb', 'psf.6na', 'psf.6nb', + 'psf.7fa', 'psf.7fb', 'psf.7na', 'psf.7nb', + 'psf.8a', 'psf.8b', 'psf.9a', 'psf.9b'], + 'psi': ['psi.11m', 'psi.12a', 'psi.12b', 'psi.1l', + 'psi.23a', 'psi.23b', 'psi.2l', 'psi.34a', + 'psi.34b', 'psi.3l', 'psi.45a', 'psi.45b', + 'psi.58a', 'psi.58b', 'psi.6a', 'psi.6b', + 'psi.7a', 'psi.7b', 'psi.89fb', 'psi.89nb', + 'psi.9a', 'psi.9b']}, + 'mag_hi': [f'b{i}' for i in range(1, 9)], + 'profiles': {'pressure': ['betap', 'betan', 'pres'], + 'other': ['wmhd', 'li'], + 'q_info': ['q0', 'q95', 'qmin', 'qpsi'], + 'q_rho_info': ['rhoqmin'], + 'mag_geo_para': ['alpha', 'r0', 'aminor', 'kappa', + 'tritop', 'tribot', 'rmaxis', + 'zmaxis', 'volume'], + 'mag_map': ['psirz', 'ssibry', 'ssimag'], + 'divertor_geo': ['drsep', 'gapbot', 'gapin', + 'gapout', 'gaptop', 'zxpt1', + 'zxpt2'], + 'profile': ['edensfit', 'etempfit', 'itempfit', + 'idensfit', 'trotfit'], + 'mag_mode_number': ['n1rms', 'n2rms', 'n3rms']}, + 'basic': {'mag': ['ip', 'ipsip', 'iptipp', 'pcbcoil', 'bcoil', + 'bt', 'vloop'], + 'neutron': ['plasticfix', 'fzns'], + 'd_alpha': ['fs00', 'fs01', 'fs02', 'fs03', 'fs04', + 'fs05']}, + 'actu': {'pinj': ['pinjf_%dl' % k for k in [15, 21, 30, 33]] + + ['pinjf_%dr' % k for k in [15, 21, 30, 33]], + 'tinj': ['tinj_%dl' % k for k in [15, 21, 30, 33]] + + ['tinj_%dr' % k for k in [15, 21, 30, 33]], + 'ech': ['echpwrc', 'echpwr'] + + ['ec%sfpwrc' % (x) for x in ech_gytname] + + ['ec%sxmfrac' % (x) for x in ech_gytname] + + ['ec%spolang' % (x) for x in ech_gytname], + 'gas': ['gasa', 'gasb', 'gasc', 'gasd', 'gase'], + 'rmp_current': ['c19', 'c79', 'c139', 'c199', 'c259', + 'c319', 'iu30', 'iu90', 'iu150', 'iu210', + 'iu270', 'iu330', 'il30', 'il90', + 'il150', 'il210', 'il270', 'il330'], + 'coil_field_strength': ['ecoila', 'ecoilb', 'e567up', + 'e567dn', 'e89dn', 'e89up'] + + ['f1a', 'f2a', 'f3a', 'f4a', + 'f5a', 'f6a', 'f7a', 'f8a', + 'f9a', 'f1b', 'f2b', 'f3b', + 'f4b', 'f5b', 'f6b', 'f7b', + 'f8b', 'f9b']}, } + +data_keys = ['xdata', 'ydata', 'zdata'] +unit_keys = ['xunits', 'yunits', 'zunits'] + +spec_params_default = {'window': 'hamm', + 'scaling': 'density', # {'density', 'spectrum'} + 'detrend': 'linear', # {'linear', 'constant', False} + 'eps': 1e-11} + +class DichargePerp(): + """object that contains the functions to manipulate one discharge.""" + def __init__(self, discharge=174823, suffix_list=('co2_s', )): + self.discharge = discharge + self.suffix_list = suffix_list + + def file_path_gen(self, discharge, suffix): + return (f'/scratch/gpfs/EKOLEMEN/big_d3d_data/' + f'{str(discharge)[:2]}0000/{discharge}_{suffix}.h5') + + def get_data(self,discharge, suffix): + discharge_path=self.file_path_gen(discharge, suffix) + input_file = h5py.File(discharge_path, 'r') + return input_file + + # divide the data into subcategory + def data_division(self, input_file, input_suffix): + if input_suffix in multi_level: + input_multi_level = {} + for key in file_keys[input_suffix].keys(): + keys_of_this_category = file_keys[input_suffix][key] + input_multi_level[key] = {key_i: input_file[key_i] + for key_i in keys_of_this_category} + else: + input_multi_level = {'only': input_file} + return input_multi_level + + def get_full_data(self): + file_dict = {} + for suffix in self.suffix_list: + input_file = self.get_data(self.discharge, suffix) + file_dict[suffix] = self.data_division(input_file, suffix) + self.file_dict = file_dict + return file_dict + + @staticmethod + def spec_filters(freq, time, amp_f_t, spec_params=spec_params_default, + thr=0.9, gaussblr_win=(31, 3)): + def norm(amp_f_t): + mn = amp_f_t.mean() + std = amp_f_t.std() + return (amp_f_t-mn) / std + + def rescale(amp_f_t): + return (amp_f_t-amp_f_t.min())/(amp_f_t.max()-amp_f_t.min()) + + def quantfilt(amp_f_t, thr=0.9): + filt = np.quantile(amp_f_t, thr, axis=0) + out = np.where(amp_f_t < filt, 0, amp_f_t) + return out + + # gaussian filtering + def gaussblr(amp_f_t, filt=(31, 3)): + amp_f_t = (rescale(amp_f_t)*255).astype('uint8') + out = cv2.GaussianBlur(amp_f_t,filt,0) + return rescale(out) + + # mean filtering + def meansub(amp_f_t): + mn = np.mean(amp_f_t, axis=1)[:, np.newaxis] + out = np.absolute(amp_f_t - mn) + return rescale(out) + + # morphological filtering + def morph(amp_f_t): + amp_f_t = (rescale(amp_f_t)*255).astype('uint8') + se1 = cv2.getStructuringElement(cv2.MORPH_RECT, (4, 4)) + se2 = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 1)) + mask = cv2.morphologyEx(amp_f_t, cv2.MORPH_CLOSE, se1) + mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, se2) + return rescale(mask) + + def apply_all(freq, time, amp_f_t, spec_params, thr=thr, + gaussblr_win=gaussblr_win): + + Sxx = np.log(amp_f_t + spec_params['eps']) + # rescale the pixels to (0,1) + Sxx = (Sxx-np.min(Sxx))/(np.max(Sxx)-np.min(Sxx)) + + Sxx_enhanced = quantfilt(Sxx, thr) + Sxx_enhanced = gaussblr(Sxx_enhanced, gaussblr_win) + Sxx_enhanced = meansub(Sxx_enhanced) + Sxx_enhanced = morph(Sxx_enhanced) + Sxx_enhanced = meansub(Sxx_enhanced) + + return freq, time, Sxx_enhanced + + return apply_all(freq, time, amp_f_t, spec_params, thr=thr, + gaussblr_win=gaussblr_win) + + @staticmethod + def spectro_calc(sig_time, data, spec_params=spec_params_default, + plot=False): + spec_params['fs'] = 1./np.mean(sig_time[1:]-sig_time[:-1]) + # default 1024 + spec_params['nperseg'] = max(int(0.6*spec_params['fs']), 1) + # default: nperseg / 4 + spec_params['noverlap'] = max(int(spec_params['nperseg']/4), 1) + print(spec_params) + + freq, time, amp_f_t = signal.spectrogram( + data, nperseg=spec_params['nperseg'], + noverlap=spec_params['noverlap'], fs=spec_params['fs'], + window=spec_params['window'], scaling=spec_params['scaling'], + detrend=spec_params['detrend']) + if plot: + plt.clf() + plt.imshow(amp_f_t.T,aspect='auto',cmap='hot', + extent=[time[0], time[-1], freq[-1], freq[0]]) + plt.colorbar() + plt.ylabel('kHz') + plt.xlabel('ms') + plt.gca().invert_yaxis() + plt.show() + return freq, time, amp_f_t + + @staticmethod + def spectro_plot(freq, time, amp_f_t): + plt.clf() + plt.imshow(amp_f_t,aspect='auto',cmap='hot', + extent=[time[0], time[-1], freq[-1], freq[0]]) + plt.colorbar() + plt.ylabel('kHz') + plt.xlabel('ms') + plt.gca().invert_yaxis() + plt.show() + + @staticmethod + def time_serie_plot(dict): + plt.clf() + if dict['zdata'][:].shape == 1: + plt.plot(dict['xdata'][:],dict['zdata'][:]) + else: + plt.plot(dict['xdata'][:],dict['zdata'][:].T) + plt.xlabel('Time (ms)') + plt.show() + + @staticmethod + def time_matching_merge_asof_1d(time1, data1, time_std): + # Convert input arrays to DataFrames + df1 = pd.DataFrame({'time1': time1, 'data1': data1}) + df2 = pd.DataFrame({'time_std': time_std}) + + # Sort the DataFrames by the time columns + df1.sort_values('time1', inplace=True) + df2.sort_values('time_std', inplace=True) + + # Perform the asof merge + merged_df = pd.merge_asof(df2, df1, left_on='time_std', + right_on='time1', direction='nearest') + + # Drop unnecessary columns and handle NaN values + merged_df.drop(columns='time_std', inplace=True) + merged_df.dropna(inplace=True) + + # Extract the matched time and data + matched_time = merged_df['time1'].values + matched_data = merged_df['data1'].values + + return matched_time, matched_data + + @staticmethod + def time_matching_merge_asof_2d(time1, data1, time_std): + # Create DataFrames + # Note: We assume time1 and time_std are already float arrays + # representing time in seconds + + # Transpose data1 to align time as rows + df1 = pd.DataFrame(data1.T, index=time1) + df_std = pd.DataFrame(index=time_std) + + # Reset index to include time in the DataFrame directly for merging + df1 = df1.reset_index().rename(columns={'index': 'time1'}) + df_std = df_std.reset_index().rename(columns={'index': 'time_std'}) + + # Perform merge_asof to find the closest matches + merged = pd.merge_asof(df_std.sort_values('time_std'), + df1.sort_values('time1'), left_on='time_std', + right_on='time1', direction='nearest') + + # Extract the aligned times (as float) + matched_time = merged['time1'].values + + # Extract indices from the merged DataFrame + indices = merged['time1'].apply( + lambda x: np.where(df1['time1'] == x)[0][0] + if x in df1['time1'].values else -1).values + + # Use indices to fetch data from the original 2D array, + # handle missing indices + matched_data = np.array([data1[:, int(idx)] if idx != -1 + else np.full(data1.shape[0], np.nan) + for idx in indices]).T + + return matched_time, matched_data + + @staticmethod + def time_matching_binary_search(time1, data1, time_std, mode='2d'): + # Function to find the closest time in time1 to each time in time_std + def find_closest(target): + # Binary search for the closest timestamp + low, high = 0, len(time1) - 1 + best_idx = low + while low <= high: + mid = (low + high) // 2 + if time1[mid] < target: + low = mid + 1 + elif time1[mid] > target: + high = mid - 1 + else: + return mid + # Update the best index if the current mid is closer to the + # target + if abs(time1[mid] - target) < abs(time1[best_idx] - target): + best_idx = mid + return best_idx + + # Align data1 to time_std + matched_data = [] + matched_time = [] + for t in time_std: + closest_idx = find_closest(t) + if mode == '2d': + matched_data.append(data1[:, closest_idx]) + else: + matched_data.append(data1[closest_idx]) + matched_time.append(time1[closest_idx]) + + return matched_time, matched_data + + @classmethod + def time_matching(cls,time, data, time_std, mode='merge_asof'): + if len(data.shape) == 1: + if mode == 'merge_asof': + return cls.time_matching_merge_asof_1d(time, data, time_std) + elif mode == 'binary': + return cls.time_matching_binary_search(time, data, time_std, + mode='1d') + elif len(data.shape) == 2: + if mode == 'merge_asof': + return cls.time_matching_merge_asof_2d(time, data, time_std) + elif mode == 'binary': + return cls.time_matching_binary_search(time, data, time_std, + mode='2d') + else: + print('The data has to be 1d array or 2d array') + + @staticmethod + def time_interp_past_looking(time, data, time_std, mode='extrapolate'): + if mode == 'extrapolate': + pass + elif mode == 'fill': + pass + + @staticmethod + def time_interp(time, data, time_std): + return np.interp(time_std, time, data) + + +class DatasetPrep(DichargePerp): + def __init__(self, discharge_search_list, suffix_list): + self.discharge_search_list = discharge_search_list + self.suffix_list = suffix_list + + def filter_discharges(self): + suffix_list = self.suffix_list + discharge_search_list = self.discharge_search_list + # Define the criteria for the files you're interested in + criteria = {key: file_normal_size[key]*0.5 for key in suffix_list} + + discharge_list = {key: [] for key in suffix_list} + + for discharge in tqdm(discharge_search_list): + for suffix, size_limit in criteria.items(): + discharge_path = self.file_path_gen(discharge,suffix) + # Check if the file exists + if os.path.isfile(discharge_path): + # Get the size of the file + file_size = os.path.getsize(discharge_path) + if file_size > size_limit: + discharge_list[suffix].append(discharge) + else: + pass + return discharge_list + + +class data_obj_rest(): + + def save_dict_to_hdf5(dictionary, h5file): + for key, value in dictionary.items(): + if isinstance(value, dict): + group = h5file.create_group(key) + save_dict_to_hdf5(value, group) + else: + h5file.create_dataset(key, data=value) + + def TS_interp_(discharge,write_h5=True,plot=False): + TS_Z_min_set = [0.0, 0.03, 0.09, 0.1, 0.15, 0.16, + 0.21, 0.22, 0.26, 0.27, 0.28, 0.3, 0.31, 0.32, 0.36, + 0.37, 0.39, 0.4, 0.41, 0.42, 0.43, 0.44, 0.45, 0.46, + 0.47, 0.48, 0.49, 0.5, 0.51, 0.52, 0.53, 0.54, 0.55, + 0.56, 0.57, 0.58, 0.59, 0.6, 0.61, 0.62, 0.63, 0.64, + 0.65, 0.66, 0.67, 0.68, 0.69, 0.7, 0.71, 0.72, 0.73, + 0.74, 0.75, 0.76, 0.77, 0.78, 0.79, 0.8, 0.81, 0.82, + 0.83, 0.84, 0.85, 0.86, 0.87, 0.88, 0.89, 0.9, 0.91, + 0.92, 0.93] + str_shot = str(discharge)[:2] + path = f'/scratch/gpfs/EKOLEMEN/big_d3d_data/{str_shot}0000/' + + TS_file = h5py.File(path + str(discharge) + '_TS.h5', 'r') + TS_RZ_file = h5py.File(path + str(discharge) + '_TS_RZ.h5', 'r') + + TS_Z = TS_RZ_file['S.BLESSED.CORE.Z']['zdata'][:] + order_index = np.argsort(TS_Z) + TS_Z_sort = TS_Z[order_index] + + TS_interp = {} + TS_keys = ['TS.BLESSED.CORE.density', 'TS.BLESSED.CORE.temp'] + for key in TS_keys: + TS_interp_list = [] + TS_time = TS_file[key]['xdata'][:] + for i in range(len(TS_time)): + TS_data = TS_file[key]['zdata'][:, i]*0.1**19 + TS_data_sort = TS_data[order_index] + TS_interp_tmp = np.interp(TS_Z_min_set, TS_Z_sort, + TS_data_sort) + TS_interp_list.append(TS_interp_tmp) + # start here + TS_interp[key] = {'xdata': np.array(TS_time), + 'ydata': np.array(TS_Z_min_set), + 'zdata': np.array(TS_interp_list).T*10.**19} + + if write_h5: + with h5py.File(f'{path}{discharge}_TS_core_interp.h5', 'w') as h5file: + save_dict_to_hdf5(TS_interp, h5file) + + if plot: + plt.clf() + plt.scatter(TS_Z_min_set, TS_interp[key]['zdata'][:, 600], + label='interp') + plt.scatter(TS_Z_sort, (TS_file[key]['zdata'][:,600])[order_index], + label='origin') + plt.legend() + plt.show() + + return 0 + + + def read_file(discharge, file_suffix, df_time): + + path = find_path(discharge) + file = h5py.File(f'{path}{discharge}_{file_suffix}.h5', 'r') + keys = file.keys() + + for i, key in enumerate(keys): + dict_tmp = {'xdata': file[key]['xdata']} + if len(file[key]['zdata'].shape) == 2: + for j in range(file[key]['zdata'].shape[0]): + dict_tmp[key+str(j)] = file[key]['zdata'][j, :] + elif len(file[key]['zdata'].shape) == 1: + dict_tmp[key] = file[key]['zdata'] + + df_tmp = pd.DataFrame(dict_tmp).astype('float32') + if i == 0: + df = pd.merge_asof(df_time, df_tmp, on='xdata', + direction='nearest') + else: + df = pd.merge_asof(df, df_tmp, on='xdata', + direction='nearest') + file.close() + return df + + def hdf5_generator(discharge_list, h5_profiles, + data_filename='diag2diag.pkl'): + all_X =[] + all_y = [] + all_time = [] + discharg_read_list = [] + len_list = [] + for discharge in tqdm(discharge_list): + print(discharge) + try: + dfs = {} + # creating the standard time + path=find_path(discharge) + + file = h5py.File(f'{path}{discharge}_shape.h5', 'r') + t_min = 0 + t_max = file['R0']['xdata'][-1] + file.close() + + file = h5py.File(f'{path}{discharge}_TS.h5', 'r') + df_time = pd.DataFrame({'xdata': file[list(file.keys())[0]]['xdata']}) + time = file[list(file.keys())[0]]['xdata'][:] + + time_index = (time >= t_min) & (time <= t_max) + time_tmp = time[time_index] + df_time = pd.DataFrame({'xdata': time_tmp}) + file.close() + + # Read all the files + for file_suffix in h5_profiles: + df = read_file(discharge, file_suffix, df_time) + dfs[file_suffix] = df + + # summarize all the data in this dicharge + df_tmp = np.concatenate( + [dfs[key].to_numpy()[1:] for key in dfs.keys()], axis=1) + + key_list_dict = {} + key_list = [] + for key in dfs.keys(): + key_list_dict[key]=list(dfs[key].keys()) + for key_ in key_list_dict[key]: + key_list.append(key_) + + # add this discharge to the total file + all_X.append(df_tmp) + all_time.append(df_time['xdata']) + all_time_tmp= np.concatenate(all_time, axis=0) + all_X_tmp = np.concatenate(all_X, axis=0) + len_list.append(df_time['xdata'].shape[0]) + discharg_read_list.append(discharge) + # Serialize the data and save to a file + with open(data_filename, 'wb') as file: + pickle.dump([all_X_tmp, all_time_tmp, discharg_read_list, + len_list, key_list, key_list_dict], file) + + except Exception as e: # if 2==1: + print(f"Error: {e}") + continue + finally: # if 2==1: + try: + file.close() + except: + continue + + return [all_X_tmp] diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..304962f --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,28 @@ +[project] +name = "fusion_ai_hub" +version = "0.0.1" +authors = [ + {name="Peter Steiner", email="peter.steiner@princeton.edu"}, + {name="Max Tian Curie", email="max.curie@princeton.edu"}, + {name="Azarakhsh Jalalvand", email="azarakhsh.jalalvand@princeton.edu"} +] +description = "FusionAIHub - Fetch nuclear fusion data, preprocess it, and use it for training machine learning models." +readme = "README.md" +requires-python = ">=3.9" +classifiers = [ + "Programming Language :: Python :: 3", + "License :: OSI Approved :: MIT License", + "Operating System :: OS Independent", +] +license = {file = "LICENSE"} +dependencies = [ + "h5py", "numpy", "pandas", "matplotlib", "scipy", "tqdm", "opencv-python" +] + +[project.urls] +Homepage = "https://github.com" +Documentation = "https://readthedocs.org" +Repository = "https://github.com/PlasmaControl/FusionAIHub" +Issues = "https://github.com/PlasmaControl/FusionAIHub/issues" +Changelog = "https://github.com" + diff --git a/src/fusionaihub/__init__.py b/src/fusion_ai_hub/__init__.py similarity index 100% rename from src/fusionaihub/__init__.py rename to src/fusion_ai_hub/__init__.py diff --git a/src/fusionaihub/base/__init__.py b/src/fusion_ai_hub/base/__init__.py similarity index 100% rename from src/fusionaihub/base/__init__.py rename to src/fusion_ai_hub/base/__init__.py diff --git a/src/fusionaihub/core/__init__.py b/src/fusion_ai_hub/core/__init__.py similarity index 100% rename from src/fusionaihub/core/__init__.py rename to src/fusion_ai_hub/core/__init__.py diff --git a/src/fusionaihub/datasets/__init__.py b/src/fusion_ai_hub/datasets/__init__.py similarity index 100% rename from src/fusionaihub/datasets/__init__.py rename to src/fusion_ai_hub/datasets/__init__.py diff --git a/src/fusionaihub/display/__init__.py b/src/fusion_ai_hub/display/__init__.py similarity index 100% rename from src/fusionaihub/display/__init__.py rename to src/fusion_ai_hub/display/__init__.py diff --git a/src/fusionaihub/feature/__init__.py b/src/fusion_ai_hub/feature/__init__.py similarity index 100% rename from src/fusionaihub/feature/__init__.py rename to src/fusion_ai_hub/feature/__init__.py diff --git a/src/fusionaihub/util/__init__.py b/src/fusion_ai_hub/util/__init__.py similarity index 100% rename from src/fusionaihub/util/__init__.py rename to src/fusion_ai_hub/util/__init__.py From 12f6c8b20c7bb31180d9db47ab2aa658bcb43193 Mon Sep 17 00:00:00 2001 From: maxcurie <47543965+maxtcurie@users.noreply.github.com> Date: Wed, 24 Apr 2024 17:56:11 -0400 Subject: [PATCH 004/103] Added normalization and flat top finder --- examples/Data_fetching/.gitignore | 162 +++++ examples/Data_fetching/fetch_GAdata.py | 51 +- examples/Data_fetching/fetch_toksearch.py | 34 +- examples/Dataset_prep/data_prep_obj.py | 694 +++++++++++++++++++++- 4 files changed, 898 insertions(+), 43 deletions(-) create mode 100644 examples/Data_fetching/.gitignore diff --git a/examples/Data_fetching/.gitignore b/examples/Data_fetching/.gitignore new file mode 100644 index 0000000..0c19d74 --- /dev/null +++ b/examples/Data_fetching/.gitignore @@ -0,0 +1,162 @@ + +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class +*tmp.py + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ \ No newline at end of file diff --git a/examples/Data_fetching/fetch_GAdata.py b/examples/Data_fetching/fetch_GAdata.py index 9007fcb..82e82f5 100644 --- a/examples/Data_fetching/fetch_GAdata.py +++ b/examples/Data_fetching/fetch_GAdata.py @@ -15,13 +15,14 @@ #python2.7 fetch_data.py #*******start of user block************ -output_path='/cscratch/curiem/Data_fetch_Basic' +output_path='/cscratch/curiem/Data_fetch_CO2_s' ece_pcece=False size_GB=400 directory_path="/cscratch/curiem" #to check the total file sizes -shot_list=np.arange(170000,200000) - +shots = list(np.arange(150000,170000,dtype=int)) +shot_list=shots interval=1000 +suffix_list=['co2_s'] #shot_list=shot_list[:10] #*******end of user block************ @@ -80,6 +81,7 @@ def data2dict(shotn, signame, hf, atlconn) : atlconn = MDSplus.Connection('atlas.gat.com') ech_gytname = ['lei','luk','r2d'] +co2_chords=['r0', 'v1', 'v2', 'v3'] #shot_list = np.loadtxt('DIIID_BES_Shot_List_Fatima.txt',delimiter='\n',dtype=np.int32) # shot_list = np.load('tm-control-shots.npy');shot_list=np.unique(shot_list).astype(np.int) @@ -93,7 +95,9 @@ def data2dict(shotn, signame, hf, atlconn) : #basic is fundimental measured quantities (in contrast of fitted quantities) -signal_list= { +signal_list_all= { +'co2_s':[r'\den{}'.format(chord) for chord in co2_chords],\ +'mag_hi':["b"+str(i) for i in range(1, 9)],\ 'profiles':['betap','betan','pres', \ 'wmhd','li',\ 'q0','q95','qmin','qpsi','rhoqmin',\ @@ -127,6 +131,45 @@ def data2dict(shotn, signame, hf, atlconn) : 'f1b','f2b','f3b','f4b','f5b','f6b','f7b','f8b','f9b'] } +name_list_all= { +'co2_s':[r'{}'.format(chord) for chord in co2_chords],\ +'mag_hi':["b"+str(i) for i in range(1, 9)],\ +'profiles':['betap','betan','pres', \ + 'wmhd','li',\ + 'q0','q95','qmin','qpsi','rhoqmin',\ + 'r0','aminor',\ + 'kappa','tritop','tribot',\ + 'alpha','psirz',\ + 'ssibry', 'ssimag',\ + 'rmaxis','zmaxis',\ + 'volume',\ + 'drsep','gapbot','gapin','gapout','gaptop',\ + 'zxpt1','zxpt2',\ + 'edensfit', 'etempfit',\ + 'trotfit','itempfit','idensfit',\ + 'n1rms','n2rms','n3rms'], + \ +'basic':['ip', 'ipsip', 'iptipp','pcbcoil', 'bcoil','bt','vloop']\ + +[ 'plasticfix', 'fzns']\ + +['fs00','fs01','fs02','fs03','fs04','fs05'],\ +'actu': ['pinjf_%dl' % k for k in [15,21,30,33]]+['pinjf_%dr' % k for k in [15,21,30,33]]\ + +['tinj_%dl' % k for k in [15,21,30,33]]+['tinj_%dr' % k for k in [15,21,30,33]]\ + +['echpwrc','echpwr']\ + +['ec%sfpwrc' % (x) for x in ech_gytname]\ + +['ec%sxmfrac' % (x) for x in ech_gytname]\ + +['ec%spolang' % (x) for x in ech_gytname]\ + +['gasa', 'gasb', 'gasc', 'gasd', 'gase']\ + +['c19', 'c79', 'c139', 'c199', 'c259', 'c319', \ + 'iu30', 'iu90', 'iu150', 'iu210', 'iu270', 'iu330', \ + 'il30', 'il90', 'il150', 'il210', 'il270', 'il330']\ + +['ecoila', 'ecoilb', 'e567up', 'e567dn', 'e89dn', 'e89up']\ + +['f1a','f2a','f3a','f4a','f5a','f6a','f7a','f8a','f9a',\ + 'f1b','f2b','f3b','f4b','f5b','f6b','f7b','f8b','f9b'] +} + +signal_list={suffix:signal_list_all[suffix] for suffix in suffix_list} + +name_list= {suffix:name_list_all[suffix] for suffix in suffix_list} for i in tqdm(range(len(shot_list))): shotn=shot_list[i] diff --git a/examples/Data_fetching/fetch_toksearch.py b/examples/Data_fetching/fetch_toksearch.py index 3654647..1aade03 100644 --- a/examples/Data_fetching/fetch_toksearch.py +++ b/examples/Data_fetching/fetch_toksearch.py @@ -6,6 +6,7 @@ import h5py import subprocess import sys +from tqdm import tqdm #this one runs on iris, run the following #module purge @@ -25,16 +26,17 @@ directory_path="/cscratch/curiem" #list of discharges to fetch -shots = np.arange(150000,170000,dtype=int) +shots = list(np.arange(150000,170000,dtype=int)) +#shots = list(np.arange(175910,190000,dtype=int)) # one can set start_shot the where to start. (usually used for restarting the fetching due to unexpected termination) start_shot=min(shots) #path to save the files -path = '/cscratch/curiem/Data_fetch_CER/' +path = f'/cscratch/curiem/Data_fetch_CO2_s/' -#diag_names=[mag,mag_hi,bes,ece_cali,ece_s, co2_den, co2_pl, co2_s, ts,ts_rz,ts_error,cer, mse,custom] -diag_name='cer' +#diag_names=[mag,mag_hi,bes,ece_cali,ece_s, co2_den, co2_pl, co2_s, ts,ts_rz,ts_error,custom] +diag_name='co2_s' #custom sig_names_custom, the suffix is fixed to be custom for now. if diag_name=='custom': @@ -170,6 +172,16 @@ def signal_gen(diag_name='zipfit',sig_names_custom=[''],names_custom=[''],tree_c signals.append(MdsSignal(name, 'ECE', location='remote://atlas.gat.com')) names.append(r'%02d'%chan) + elif diag_name=='co2_s': + chords = ['r0', 'v1', 'v2', 'v3'] + + + for chord in chords: + name = r'\den{}'.format(chord) + signals.append(MdsSignal(name, 'BCI', location='remote://atlas.gat.com')) + names.append(f'{chord}') + + elif diag_name=='co2_den': nums = range(1,15) chords = ['r0', 'v1', 'v2', 'v3'] @@ -226,7 +238,7 @@ def signal_gen(diag_name='zipfit',sig_names_custom=[''],names_custom=[''],tree_c names.append(r'{}.{}'.format(thomson_mds_area,thomson_sig_name)) - elif diag_name=='ts_error': + elif diag_name=='TS_ERROR': #thomson_mds_scale={'density': 1e19, 'temp': 1e3} thomson_mds_areas=['core','divertor','tangential'] thomson_sig_names= ['DENSITY_E', 'TEMP_E'] @@ -286,7 +298,7 @@ def signal_gen(diag_name='zipfit',sig_names_custom=[''],names_custom=[''],tree_c sig_names=[r'\cerq{}{}'.format(output, channel) for channel in channels for output in outputs] - names=[r'q.{}.{}'.format(output, channel) for channel in name_channels + names=[r'cer.{}.{}'.format(output, channel) for channel in name_channels for output in outputs] treename='ions' @@ -308,7 +320,7 @@ def signal_gen(diag_name='zipfit',sig_names_custom=[''],names_custom=[''],tree_c def fetch_ece_2d_array_data(path, shots, diag_name): names, signals = signal_gen(diag_name) - for n,shot in enumerate(shots): + for n,shot in tqdm(enumerate(shots)): if shot>=start_shot: start = time.time() pipeline = Pipeline([shot]) @@ -367,9 +379,9 @@ def fetch_single_data(path, shots, diag_name): if not os.path.isdir(path): os.makedirs(path) - for n,shot in enumerate(shots): + for n,shot in tqdm(enumerate(shots)): if shot>=start_shot: - try: + if 1==1: start = time.time() pipeline = Pipeline([shot]) @@ -435,7 +447,7 @@ def fetch_single_data(path, shots, diag_name): else: group.create_dataset(subkey, data=value) - except: + if 1==2: pass if n % interval == 0: size_limiter_sleep(size_GB=size_GB) @@ -446,7 +458,7 @@ def fetch_co2_chunked_data(path, shots, diag_name): chords=['r0', 'v1', 'v2', 'v3'] nums = range(1,15) names, signals = signal_gen(diag_name) - for n,shot in enumerate(shots): + for n,shot in tqdm(enumerate(shots)): if shot>=start_shot: try: start = time.time() diff --git a/examples/Dataset_prep/data_prep_obj.py b/examples/Dataset_prep/data_prep_obj.py index dd3b7e1..2420e4d 100644 --- a/examples/Dataset_prep/data_prep_obj.py +++ b/examples/Dataset_prep/data_prep_obj.py @@ -28,6 +28,437 @@ 'profiles': 5 * 1024**2, } + +avg_list={'co2_s': {'r0': 5.961484014154121, 'v1': -8.22111284268937, 'v2': 6.344910008129705, 'v3': 4.328119030528726}, \ + 'co2_den': {'r0': 6.9296784646054235, 'v1': -9.284441581907231, 'v2': 7.373509474284704, 'v3': 5.027566163746425}, 'co2_pl': {'r0': 1.7374204, 'v1': -2.6094196, 'v2': -1.1489629, 'v3': -1.1252769}, 'ece_cali': {'ece_cali': [0.20893963, 0.12774856, 0.13745612, 0.20247421, 0.34440163, + 0.60262373, 0.66603392, 0.76447305, 0.88263744, 1.02150685, + 1.16817018, 1.30320441, 1.4518409 , 1.56385316, 1.66534622, + 1.72105876, 1.74185541, 1.83246238, 1.93203416, 2.01143143, + 2.08425715, 2.11510808, 2.22542016, 2.29812408, 2.35032174, + 2.29788245, 2.22418809, 2.26958848, 2.27961308, 2.13412786, + 2.08813635, 2.12741291, 2.60351518, 2.49858828, 2.40936239, + 2.23847532, 2.03189087, 1.92861781, 1.79510848, 1.77163682, + 0.30883403, 0.44442737, 0.56559379, 0.54799893, 0.62026258, + 0.65768334, 0.68811054, 0.68055001] }, 'ece_s': {'ece_s': [0.08584737, 0.05780916, 0.061087 , 0.08869078, 0.14763243, + 0.2584688 , 0.28624459, 0.32994842, 0.38132434, 0.44180371, + 0.5039844 , 0.56298781, 0.62323814, 0.67640968, 0.71432546, + 0.74403155, 0.7484862 , 0.7900538 , 0.82948537, 0.86571757, + 0.89989974, 0.90831094, 0.95536707, 0.99480042, 1.01156296, + 0.99122688, 0.9654906 , 0.97362054, 0.96864245, 0.9185536 , + 0.90745512, 0.92003376, 1.11705779, 1.07533205, 1.03214442, + 0.96556191, 0.87798738, 0.82471379, 0.78254752, 0.7623152 , + 0.10797436, 0.17498507, 0.21833791, 0.23441809, 0.26207619, + 0.26715684, 0.30475438, 0.30516581] }, 'ts': {'core.dens': [0.0206573 , 0.02273723, 0.03008627, 0.02697151, 0.04085645, + 0.06387276, 0.0558053 , 0.06451483, 0.08294583, 0.09555718, + 0.17719237, 0.22596197, 0.34866633, 0.48804962, 0.70802082, + 0.96147464, 1.33869104, 1.54778518, 1.66705032, 1.68639355, + 1.76600186, 1.77834179, 1.81300757, 1.86991192, 1.82749834, + 1.83304439, 1.86443489, 1.91185937, 1.91697839, 1.92917273, + 1.94256332, 1.96919655, 2.04108931, 2.1734384 , 2.17873709, + 2.21568359, 2.2562559 , 2.2724558 , 2.37268523, 2.33087342] , 'core.temp': [0.04313143, 0.02095982, 0.03874498, 0.05936599, 0.06048159, + 0.0724493 , 0.12284724, 0.08397523, 0.1665927 , 0.15987559, + 0.20999825, 0.28544226, 0.53844154, 0.95033735, 1.1925813 , + 1.5936897 , 1.8543715 , 2.2159667 , 2.6548545 , 2.6115215 , + 2.8906064 , 2.9641142 , 3.0341778 , 3.1378953 , 3.2817786 , + 3.2998369 , 3.3953443 , 3.621902 , 3.7870445 , 4.0227976 , + 4.197787 , 4.3938704 , 5.1899633 , 6.3529873 , 6.4848704 , + 7.2024207 , 7.9320636 , 8.748535 , 9.514734 , 9.936282 ], + 'divertor.dens': [13.07862871, 4.09257651, 3.42569876, 4.34937471, 3.47240192, + 3.55858774, 4.13357949, 6.91416951] , 'divertor.temp': [ 4.912342 , 0.82680666, 1.638078 , 2.5478451 , 2.5880477 , + 3.275134 , 4.093607 , 10.133815 ] , 'tangential.dens': [2.31724222, 2.31432445, 2.28171407, 2.3820687 , 2.55593377, + 2.41514733] , 'tangential.temp': [0.94976425, 1.0228319 , 1.0419364 , 1.0851678 , 1.2703744 , + 1.2370783 ] }, 'ts_error': {'core.dens': [0.58320681, 0.55906454, 0.74842744, 0.55708311, 0.85056662, + 1.32191982, 1.4088409 , 2.07654662, 2.10008292, 2.98143154, + 5.02302231, 6.25136888, 6.88582818, 6.14681397, 7.05265831, + 6.68781645, 7.81220338, 8.52329903, 8.36451255, 9.11189696, + 8.55097338, 7.45192188, 7.37140851, 8.74282399, 8.54578735, + 7.21970752, 5.02604401, 4.80131268, 5.95745281, 6.88717577, + 6.95248688, 6.13058621, 8.39298857, 8.10257601, 7.24310376, + 6.49387289, 6.11134489, 5.51627359, 5.48644365, 6.25646235] , 'core.temp': [0.26047334, 0.09455868, 0.22123039, 0.32492593, 0.32333547, + 0.3222272 , 0.7120584 , 0.4540971 , 0.9215022 , 0.89692396, + 1.1397355 , 1.5596155 , 2.003468 , 2.306727 , 2.3110852 , + 2.8224263 , 2.3556364 , 2.5785322 , 2.7340143 , 2.7409067 , + 2.7862887 , 2.8193336 , 2.803931 , 2.7903335 , 3.0551565 , + 2.7775638 , 1.8546137 , 1.8820401 , 2.6592715 , 3.5817459 , + 3.1250322 , 2.8227775 , 4.4379373 , 5.4327197 , 5.3897243 , + 5.357903 , 5.418874 , 5.3132143 , 5.2673607 , 5.8839746 ], + 'divertor.dens': [23.36652036, 4.81574073, 4.69183499, 4.67569821, 4.45556532, + 5.47507145, 4.86280284, 6.50936229] , 'divertor.temp': [3.1028507 , 0.38552743, 0.7590671 , 0.7857776 , 0.91813165, + 1.195608 , 1.1747509 , 2.233286 ] , 'tangential.dens': [4.36654655, 3.76463633, 3.03009985, 3.18819823, 3.33737849, + 4.09021571] , 'tangential.temp': [4.1905775, 3.4313176, 3.1727965, 3.04693 , 3.6034732, 4.51128 ], + }, 'ts_rz': {'core.r': 1.9399999, 'core.z': 0.61496246, 'divertor.r': 1.49, 'divertor.z': -1.1383374, 'tangential.r': 1.8376166, 'tangential.z': -0.58}, 'cer': {'q.amp.t01': 7.365575667140224, 'q.amp.t02': 8.157370662714786, 'q.amp.t03': 1.022917013813834, 'q.amp.t04': 1.1358540348821744, 'q.amp.t05': 1.4359301184932869, 'q.amp.t06': 1.798909659944321, 'q.amp.t07': 2.258132799788921, 'q.amp.t08': 1.8259900132704272, 'q.amp.t09': 1.8612538832538386, 'q.amp.t10': 1.950598902871673, 'q.amp.t11': 1.8918496885602527, 'q.amp.t12': 4.177632544921422, 'q.amp.t13': 1.1566736570016736, 'q.amp.t14': 8.793024460072566, 'q.amp.t15': 6.184494718186617, 'q.amp.t16': 5.24787416537003, 'q.amp.t17': 5.603937098065813, 'q.amp.t18': 8.351020623443445, 'q.amp.t19': 9.24934463279777, 'q.amp.t20': 1.3115454660359367, 'q.amp.t21': 1.605919675123358, 'q.amp.t22': 2.0448285731406175, 'q.amp.t23': 1.773973113297526, 'q.amp.t24': 1.9964129206743333, 'q.amp.t25': 2.9891497738930313, 'q.amp.t26': 4.656204017307047, 'q.amp.t27': 4.726363585839978, 'q.amp.t28': 5.327921665289137, 'q.amp.t29': 6.167803076936029, 'q.amp.t30': 9.11209578504039, 'q.amp.t31': 1.3300276862483345, 'q.amp.t32': 1.4947338675232091, 'q.amp.t33': 0.0, 'q.amp.t34': 0.0, 'q.amp.t35': 0.0, 'q.amp.t36': 0.0, 'q.amp.t37': 0.0, 'q.amp.t38': 0.0, 'q.amp.t39': 0.0, 'q.amp.t40': 0.0, 'q.amp.t41': 1.8694734131011768, 'q.amp.t42': 1.9570089330720692, 'q.amp.t43': 1.4173439222973796, 'q.amp.t44': 1.5895198398390162, 'q.amp.t45': 9.581213921447954, 'q.amp.t46': 7.798332053248836, 'q.amp.t47': 5.459519239960618, 'q.amp.t48': 5.449372328763002, 'q.amp.v01': 4.721588230227177, 'q.amp.v02': 5.637406007864636, 'q.amp.v03': 9.611881171211603, 'q.amp.v04': 1.0890916544484255, 'q.amp.v05': 2.379584565586981, 'q.amp.v06': 1.7191710142084862, 'q.amp.v07': 2.765953286879433, 'q.amp.v08': 3.778196951693085, 'q.amp.v09': 3.3528156229094344, 'q.amp.v10': 3.3822363965819395, 'q.amp.v11': 2.6731479959940647, 'q.amp.v12': 4.621959444980175, 'q.amp.v13': 1.529350664580459, 'q.amp.v14': 1.2600414599833147, 'q.amp.v15': 1.0610924590642956, 'q.amp.v16': 1.049433753060746, 'q.amp.v17': 3.7266019352500592, 'q.amp.v18': 4.330219307940227, 'q.amp.v19': 4.934380633090356, 'q.amp.v20': 6.431354365003389, 'q.amp.v21': 7.5871881140759285, 'q.amp.v22': 9.99050378069198, 'q.amp.v23': 1.2989190785055555, 'q.amp.v24': 3.201309587033945, 'q.amp.v25': 3.3856173093593145, 'q.amp.v26': 3.0572356726019168, 'q.amp.v27': 1.5800422706756205, 'q.amp.v28': 1.6986589614076624, 'q.amp.v29': 1.357892996957103, 'q.amp.v30': 1.134681892564818, 'q.amp.v31': 1.0571639027252535, 'q.amp.v32': 1.1580549999262788, 'q.fz.t01': 4.204233, 'q.fz.t02': 3.6400461, 'q.fz.t03': 3.533241, 'q.fz.t04': 4.1553597, 'q.fz.t05': 4.433462, 'q.fz.t06': 4.7490053, 'q.fz.t07': 5.0005593, 'q.fz.t08': 7.025497, 'q.fz.t09': 7.933514, 'q.fz.t10': 7.2363815, 'q.fz.t11': 7.409593, 'q.fz.t12': 2.1582174, 'q.fz.t13': 2.276084, 'q.fz.t14': 2.981977, 'q.fz.t15': 3.2177117, 'q.fz.t16': 3.710607, 'q.fz.t17': 4.209257, 'q.fz.t18': 3.9218168, 'q.fz.t19': 3.4825828, 'q.fz.t20': 3.9753966, 'q.fz.t21': 4.5987105, 'q.fz.t22': 5.096258, 'q.fz.t23': 7.04531, 'q.fz.t24': 7.335176, 'q.fz.t25': 1.5873905, 'q.fz.t26': 1.9427528, 'q.fz.t27': 1.4891543, 'q.fz.t28': 1.2658725, 'q.fz.t29': 1.1138035, 'q.fz.t30': 1.2289429, 'q.fz.t31': 1.2596341, 'q.fz.t32': 1.2070146, 'q.fz.t33': 0.0, 'q.fz.t34': 0.0, 'q.fz.t35': 0.0, 'q.fz.t36': 0.0, 'q.fz.t37': 0.0, 'q.fz.t38': 0.0, 'q.fz.t39': 0.0, 'q.fz.t40': 0.0, 'q.fz.t41': 7.7980065, 'q.fz.t42': 7.1329446, 'q.fz.t43': 5.782453, 'q.fz.t44': 1.5657178, 'q.fz.t45': 2.7087288, 'q.fz.t46': 3.1731267, 'q.fz.t47': 3.346342, 'q.fz.t48': 4.8096166, 'q.fz.v01': 2.5911665, 'q.fz.v02': 2.732318, 'q.fz.v03': 3.7096417, 'q.fz.v04': 4.1693006, 'q.fz.v05': 6.006353, 'q.fz.v06': 4.7989817, 'q.fz.v07': 6.731536, 'q.fz.v08': 7.279144, 'q.fz.v09': 8.646964, 'q.fz.v10': 7.679645, 'q.fz.v11': 6.2914634, 'q.fz.v12': 1.7021661, 'q.fz.v13': 2.6311772, 'q.fz.v14': 2.7715864, 'q.fz.v15': 3.2831848, 'q.fz.v16': 4.6702294, 'q.fz.v17': 2.39616, 'q.fz.v18': 2.3349943, 'q.fz.v19': 2.5088992, 'q.fz.v20': 2.8182745, 'q.fz.v21': 3.2149248, 'q.fz.v22': 3.765172, 'q.fz.v23': 4.338247, 'q.fz.v24': 7.6669044, 'q.fz.v25': 8.584885, 'q.fz.v26': 6.8605747, 'q.fz.v27': 4.1305423, 'q.fz.v28': 1.5849978, 'q.fz.v29': 2.6591322, 'q.fz.v30': 2.885288, 'q.fz.v31': 3.835927, 'q.fz.v32': 5.7590485, 'q.nz.t01': 2.2040674920508483, 'q.nz.t02': 1.8742078977282348, 'q.nz.t03': 1.759626888922413, 'q.nz.t04': 1.9970193860623557, 'q.nz.t05': 2.0256906470659986, 'q.nz.t06': 1.9964167516683424, 'q.nz.t07': 1.9544599078416822, 'q.nz.t08': 3.056018357940367, 'q.nz.t09': 3.4459818655078953, 'q.nz.t10': 3.0225246839793916, 'q.nz.t11': 3.006101982202604, 'q.nz.t12': 5.534987558087899, 'q.nz.t13': 1.4400211642587073, 'q.nz.t14': 9.571370490818936, 'q.nz.t15': 7.133038686452381, 'q.nz.t16': 5.675022202492795, 'q.nz.t17': 2.1920193337091627, 'q.nz.t18': 2.0394677643156145, 'q.nz.t19': 1.767118541304506, 'q.nz.t20': 1.9468355892059288, 'q.nz.t21': 2.009657969990096, 'q.nz.t22': 2.059941150143154, 'q.nz.t23': 3.0943987253929532, 'q.nz.t24': 3.1001815423360375, 'q.nz.t25': 9.554159514502388, 'q.nz.t26': 1.1779376567504292, 'q.nz.t27': 8.970796704399437, 'q.nz.t28': 7.492423886637057, 'q.nz.t29': 6.418985522348764, 'q.nz.t30': 6.850787035395272, 'q.nz.t31': 6.63474522527407, 'q.nz.t32': 5.912981833410766, 'q.nz.t33': 0.0, 'q.nz.t34': 0.0, 'q.nz.t35': 0.0, 'q.nz.t36': 0.0, 'q.nz.t37': 0.0, 'q.nz.t38': 0.0, 'q.nz.t39': 0.0, 'q.nz.t40': 0.0, 'q.nz.t41': 3.3546600452547226, 'q.nz.t42': 2.943654146992897, 'q.nz.t43': 2.153903228900936, 'q.nz.t44': 1.9706023375201245, 'q.nz.t45': 1.1114525778823452, 'q.nz.t46': 8.4214724261572, 'q.nz.t47': 6.186338848823364, 'q.nz.t48': 5.943788317941251, 'q.nz.v01': 8.685495834310665, 'q.nz.v02': 9.469288334122316, 'q.nz.v03': 1.32437255720068, 'q.nz.v04': 1.4766333630412147, 'q.nz.v05': 2.4879690507653947, 'q.nz.v06': 1.521525009773873, 'q.nz.v07': 3.266377753539718, 'q.nz.v08': 3.5034031410944095, 'q.nz.v09': 4.095403055754451, 'q.nz.v10': 3.5720845353289215, 'q.nz.v11': 2.7741221312211573, 'q.nz.v12': 3.746774145833107, 'q.nz.v13': 1.0458242874678967, 'q.nz.v14': 7.481538261731509, 'q.nz.v15': 6.17594188104816, 'q.nz.v16': 5.6554490680539, 'q.nz.v17': 7.576793849831243, 'q.nz.v18': 7.651280857999023, 'q.nz.v19': 8.538191157230596, 'q.nz.v20': 9.912298061627684, 'q.nz.v21': 1.1447746899034914, 'q.nz.v22': 1.3399530672384754, 'q.nz.v23': 1.4910763212389597, 'q.nz.v24': 3.6626457216735027, 'q.nz.v25': 4.033292313687218, 'q.nz.v26': 3.1424954449196694, 'q.nz.v27': 1.546673879929729, 'q.nz.v28': 1.1716000350546338, 'q.nz.v29': 8.59536403052591, 'q.nz.v30': 6.485824573181788, 'q.nz.v31': 5.868196079741524, 'q.nz.v32': 5.48279817166634, 'q.phi.t01': 1.4158342, 'q.phi.t02': 1.6419647, 'q.phi.t03': 1.7796209, 'q.phi.t04': 1.8843746, 'q.phi.t05': 1.9756157, 'q.phi.t06': 2.112374, 'q.phi.t07': 2.213778, 'q.phi.t08': 3.2404945, 'q.phi.t09': 3.2414315, 'q.phi.t10': 3.244219, 'q.phi.t11': 3.2459667, 'q.phi.t12': 3.2476735, 'q.phi.t13': 3.2493649, 'q.phi.t14': 3.250998, 'q.phi.t15': 3.2526853, 'q.phi.t16': 3.254779, 'q.phi.t17': 1.2346414, 'q.phi.t18': 1.5704914, 'q.phi.t19': 1.7110407, 'q.phi.t20': 1.8425162, 'q.phi.t21': 2.0508344, 'q.phi.t22': 2.1646545, 'q.phi.t23': 3.2395003, 'q.phi.t24': 3.2432475, 'q.phi.t25': 2.2208953, 'q.phi.t26': 2.2115743, 'q.phi.t27': 2.2011662, 'q.phi.t28': 2.1917775, 'q.phi.t29': 2.1823633, 'q.phi.t30': 2.173928, 'q.phi.t31': 2.1641104, 'q.phi.t32': 2.1556656, 'q.phi.t33': 0.0, 'q.phi.t34': 0.0, 'q.phi.t35': 0.0, 'q.phi.t36': 0.0, 'q.phi.t37': 0.0, 'q.phi.t38': 0.0, 'q.phi.t39': 0.0, 'q.phi.t40': 0.0, 'q.phi.t41': 3.242373, 'q.phi.t42': 3.2450902, 'q.phi.t43': 3.246823, 'q.phi.t44': 3.2485733, 'q.phi.t45': 3.250207, 'q.phi.t46': 3.2518146, 'q.phi.t47': 3.253787, 'q.phi.t48': 3.2556193, 'q.phi.v01': 3.1552353, 'q.phi.v02': 3.1664567, 'q.phi.v03': 3.1858714, 'q.phi.v04': 3.1983168, 'q.phi.v05': 3.2079048, 'q.phi.v06': 3.217808, 'q.phi.v07': 3.2500367, 'q.phi.v08': 3.2506955, 'q.phi.v09': 3.2521024, 'q.phi.v10': 3.2535784, 'q.phi.v11': 3.255047, 'q.phi.v12': 3.2563503, 'q.phi.v13': 3.2576215, 'q.phi.v14': 3.258966, 'q.phi.v15': 3.2601864, 'q.phi.v16': 3.2615552, 'q.phi.v17': 3.1325324, 'q.phi.v18': 3.149359, 'q.phi.v19': 3.1601884, 'q.phi.v20': 3.172502, 'q.phi.v21': 3.1814127, 'q.phi.v22': 3.1905046, 'q.phi.v23': 3.2033, 'q.phi.v24': 3.2514384, 'q.phi.v25': 3.2528772, 'q.phi.v26': 3.254292, 'q.phi.v27': 3.2555747, 'q.phi.v28': 3.257062, 'q.phi.v29': 3.2583506, 'q.phi.v30': 3.2596054, 'q.phi.v31': 3.2609942, 'q.phi.v32': 3.2621477, 'q.r.t01': 1.7722763, 'q.r.t02': 1.8694036, 'q.r.t03': 1.935463, 'q.r.t04': 1.9875348, 'q.r.t05': 2.0380688, 'q.r.t06': 2.1196377, 'q.r.t07': 2.1854079, 'q.r.t08': 2.1861997, 'q.r.t09': 2.193839, 'q.r.t10': 2.2169368, 'q.r.t11': 2.231711, 'q.r.t12': 2.246378, 'q.r.t13': 2.2611327, 'q.r.t14': 2.275587, 'q.r.t15': 2.2902222, 'q.r.t16': 2.303844, 'q.r.t17': 1.7032841, 'q.r.t18': 1.8372735, 'q.r.t19': 1.9018376, 'q.r.t20': 1.9676175, 'q.r.t21': 2.082059, 'q.r.t22': 2.1529653, 'q.r.t23': 2.1781714, 'q.r.t24': 2.2088215, 'q.r.t25': 1.6711005, 'q.r.t26': 1.7269354, 'q.r.t27': 1.7944454, 'q.r.t28': 1.8605839, 'q.r.t29': 1.9325273, 'q.r.t30': 2.0023603, 'q.r.t31': 2.0908685, 'q.r.t32': 2.1740303, 'q.r.t33': 0.0, 'q.r.t34': 0.0, 'q.r.t35': 0.0, 'q.r.t36': 0.0, 'q.r.t37': 0.0, 'q.r.t38': 0.0, 'q.r.t39': 0.0, 'q.r.t40': 0.0, 'q.r.t41': 2.201573, 'q.r.t42': 2.2242768, 'q.r.t43': 2.2390454, 'q.r.t44': 2.2541907, 'q.r.t45': 2.2685537, 'q.r.t46': 2.2829068, 'q.r.t47': 2.2972333, 'q.r.t48': 2.3105485, 'q.r.v01': 1.8525336, 'q.r.v02': 1.9006062, 'q.r.v03': 1.9905531, 'q.r.v04': 2.0542908, 'q.r.v05': 2.1047585, 'q.r.v06': 2.1608272, 'q.r.v07': 2.1843927, 'q.r.v08': 2.1924214, 'q.r.v09': 2.207271, 'q.r.v10': 2.221899, 'q.r.v11': 2.2369516, 'q.r.v12': 2.2519107, 'q.r.v13': 2.2670078, 'q.r.v14': 2.2816644, 'q.r.v15': 2.296597, 'q.r.v16': 2.3113043, 'q.r.v17': 1.7647389, 'q.r.v18': 1.8242865, 'q.r.v19': 1.8737158, 'q.r.v20': 1.927339, 'q.r.v21': 1.9681208, 'q.r.v22': 2.0146272, 'q.r.v23': 2.0764105, 'q.r.v24': 2.1993642, 'q.r.v25': 2.2143726, 'q.r.v26': 2.2296164, 'q.r.v27': 2.2448251, 'q.r.v28': 2.2598283, 'q.r.v29': 2.2743604, 'q.r.v30': 2.2895699, 'q.r.v31': 2.303827, 'q.r.v32': 2.3183057, 'q.rot.t01': -2.3847632, 'q.rot.t02': -1.9957149, 'q.rot.t03': -1.60307, 'q.rot.t04': -1.4325776, 'q.rot.t05': -1.2505758, 'q.rot.t06': -9.954212, 'q.rot.t07': -7.997289, 'q.rot.t08': 8.010702, 'q.rot.t09': 7.6774797, 'q.rot.t10': 6.817082, 'q.rot.t11': 5.035964, 'q.rot.t12': 2.9977124, 'q.rot.t13': 2.8860898, 'q.rot.t14': 2.3811872, 'q.rot.t15': 2.0943706, 'q.rot.t16': 2.653827, 'q.rot.t17': -2.3004456, 'q.rot.t18': -2.1584108, 'q.rot.t19': -1.8171897, 'q.rot.t20': -1.4600872, 'q.rot.t21': -1.1107807, 'q.rot.t22': -9.092973, 'q.rot.t23': 8.205571, 'q.rot.t24': 7.193295, 'q.rot.t25': -1.4680237, 'q.rot.t26': -1.6822113, 'q.rot.t27': -1.6611089, 'q.rot.t28': -1.422544, 'q.rot.t29': -1.3432044, 'q.rot.t30': -1.0545943, 'q.rot.t31': -8.718235, 'q.rot.t32': -6.1222053, 'q.rot.t33': 0.0, 'q.rot.t34': 0.0, 'q.rot.t35': 0.0, 'q.rot.t36': 0.0, 'q.rot.t37': 0.0, 'q.rot.t38': 0.0, 'q.rot.t39': 0.0, 'q.rot.t40': 0.0, 'q.rot.t41': 7.4965515, 'q.rot.t42': 6.1379557, 'q.rot.t43': 3.7713354, 'q.rot.t44': 2.7453265, 'q.rot.t45': 3.1146224, 'q.rot.t46': 1.820835, 'q.rot.t47': 2.2500794, 'q.rot.t48': 3.1782095, 'q.rot.v01': -1.3925844, 'q.rot.v02': -1.3896463, 'q.rot.v03': -1.6903486, 'q.rot.v04': -1.9143895, 'q.rot.v05': 1.3205832, 'q.rot.v06': -1.2764299, 'q.rot.v07': 4.324845, 'q.rot.v08': 1.8375063, 'q.rot.v09': 1.6134, 'q.rot.v10': 1.292033, 'q.rot.v11': 8.679633, 'q.rot.v12': 1.2622303, 'q.rot.v13': 6.916336, 'q.rot.v14': 5.3275785, 'q.rot.v15': 8.413952, 'q.rot.v16': 7.757324, 'q.rot.v17': -0.9872524, 'q.rot.v18': -8.780852, 'q.rot.v19': -1.3447609, 'q.rot.v20': -1.5647489, 'q.rot.v21': -1.7553936, 'q.rot.v22': -1.7116125, 'q.rot.v23': -1.7133973, 'q.rot.v24': 1.7274137, 'q.rot.v25': 1.5225112, 'q.rot.v26': 1.2702804, 'q.rot.v27': 7.587389, 'q.rot.v28': 1.1470507, 'q.rot.v29': 5.3377457, 'q.rot.v30': 5.0145984, 'q.rot.v31': 6.285547, 'q.rot.v32': 5.9423165, 'q.samp.t01': 3.7185016937699484, 'q.samp.t02': 4.0991225633107025, 'q.samp.t03': 5.138078830295072, 'q.samp.t04': 5.753447933461739, 'q.samp.t05': 7.271146097411055, 'q.samp.t06': 9.108201371005999, 'q.samp.t07': 1.1364541755975273, 'q.samp.t08': 9.134836238484484, 'q.samp.t09': 9.309098412309206, 'q.samp.t10': 9.756085497023575, 'q.samp.t11': 9.462177565477019, 'q.samp.t12': 2.0934064928476683, 'q.samp.t13': 5.874773023726184, 'q.samp.t14': 4.594947270513834, 'q.samp.t15': 3.3056629338813117, 'q.samp.t16': 2.98904076898845, 'q.samp.t17': 2.9117638214297443, 'q.samp.t18': 4.22224627773251, 'q.samp.t19': 4.688168835072252, 'q.samp.t20': 6.6011814575795285, 'q.samp.t21': 8.196942389736998, 'q.samp.t22': 1.0389801206752116, 'q.samp.t23': 9.040658068346321, 'q.samp.t24': 9.98522997859002, 'q.samp.t25': 1.9177641635829077, 'q.samp.t26': 2.7837692718734814, 'q.samp.t27': 2.534072409667229, 'q.samp.t28': 2.8775635797007837, 'q.samp.t29': 6.668311330508418, 'q.samp.t30': 4.652206474706725, 'q.samp.t31': 6.843884844050896, 'q.samp.t32': 8.144888729663352, 'q.samp.t33': 0.0, 'q.samp.t34': 0.0, 'q.samp.t35': 0.0, 'q.samp.t36': 0.0, 'q.samp.t37': 0.0, 'q.samp.t38': 0.0, 'q.samp.t39': 0.0, 'q.samp.t40': 0.0, 'q.samp.t41': 9.422888879214979, 'q.samp.t42': 9.788531315568035, 'q.samp.t43': 7.08904099529718, 'q.samp.t44': 8.017986152896539, 'q.samp.t45': 4.8918361234802115, 'q.samp.t46': 4.0614601484378, 'q.samp.t47': 2.9050751960091903, 'q.samp.t48': 3.052681070728533, 'q.samp.v01': 2.9039923185115257, 'q.samp.v02': 3.19333650083941, 'q.samp.v03': 4.8275924641236765, 'q.samp.v04': 5.483175451400983, 'q.samp.v05': 1.193243556202485, 'q.samp.v06': 8.841005023052732, 'q.samp.v07': 1.390432337759377, 'q.samp.v08': 1.8980160170378466, 'q.samp.v09': 1.6817136508994124, 'q.samp.v10': 1.696180871824477, 'q.samp.v11': 1.3386390399885348, 'q.samp.v12': 2.3318732006291447, 'q.samp.v13': 7.914890603059868, 'q.samp.v14': 6.692041770130631, 'q.samp.v15': 5.8977628290291, 'q.samp.v16': 6.079308754405791, 'q.samp.v17': 2.244580851591701, 'q.samp.v18': 2.3010777284150143, 'q.samp.v19': 2.613197122115724, 'q.samp.v20': 3.479820245060454, 'q.samp.v21': 4.185192486123997, 'q.samp.v22': 5.331975122423753, 'q.samp.v23': 6.516614724773748, 'q.samp.v24': 1.6034390050840468, 'q.samp.v25': 1.711126037835743, 'q.samp.v26': 1.5435876284064147, 'q.samp.v27': 7.996920192668695, 'q.samp.v28': 1.0625206245047953, 'q.samp.v29': 7.144975118394542, 'q.samp.v30': 6.138707320901508, 'q.samp.v31': 6.056028436305475, 'q.samp.v32': 6.99324003893089, 'q.srot.t01': 2.4296384, 'q.srot.t02': 2.113976, 'q.srot.t03': 1.9477572, 'q.srot.t04': 2.082822, 'q.srot.t05': 1.9111469, 'q.srot.t06': 1.7716151, 'q.srot.t07': 1.7759767, 'q.srot.t08': 1.7522433, 'q.srot.t09': 0.93274546, 'q.srot.t10': 0.92299265, 'q.srot.t11': 0.93395764, 'q.srot.t12': 0.92169225, 'q.srot.t13': 1.1634864, 'q.srot.t14': 1.8922867, 'q.srot.t15': 2.1936705, 'q.srot.t16': 2.8385015, 'q.srot.t17': 3.2811584, 'q.srot.t18': 2.7078822, 'q.srot.t19': 2.5369382, 'q.srot.t20': 2.0737004, 'q.srot.t21': 2.0342867, 'q.srot.t22': 1.9763503, 'q.srot.t23': 2.130117, 'q.srot.t24': 1.9693037, 'q.srot.t25': 6.380378, 'q.srot.t26': 5.0635657, 'q.srot.t27': 3.4347632, 'q.srot.t28': 3.157648, 'q.srot.t29': 9.790262, 'q.srot.t30': 1.8235105, 'q.srot.t31': 1.8083441, 'q.srot.t32': 1.8174642, 'q.srot.t33': 0.0, 'q.srot.t34': 0.0, 'q.srot.t35': 0.0, 'q.srot.t36': 0.0, 'q.srot.t37': 0.0, 'q.srot.t38': 0.0, 'q.srot.t39': 0.0, 'q.srot.t40': 0.0, 'q.srot.t41': 1.0054191, 'q.srot.t42': 0.9325026, 'q.srot.t43': 0.941006, 'q.srot.t44': 0.97859544, 'q.srot.t45': 1.466512, 'q.srot.t46': 1.9379678, 'q.srot.t47': 2.2968967, 'q.srot.t48': 2.8244739, 'q.srot.v01': 2.8389626, 'q.srot.v02': 2.5174332, 'q.srot.v03': 2.3677096, 'q.srot.v04': 1.995266, 'q.srot.v05': 2.0589724, 'q.srot.v06': 1.8583242, 'q.srot.v07': 4.35304, 'q.srot.v08': 2.3297458, 'q.srot.v09': 1.3832113, 'q.srot.v10': 1.2886999, 'q.srot.v11': 1.0889724, 'q.srot.v12': 1.1452137, 'q.srot.v13': 1.6632997, 'q.srot.v14': 2.0623305, 'q.srot.v15': 2.537252, 'q.srot.v16': 2.9849122, 'q.srot.v17': 2.6618626, 'q.srot.v18': 1.9864521, 'q.srot.v19': 2.0396504, 'q.srot.v20': 2.0633473, 'q.srot.v21': 2.218516, 'q.srot.v22': 1.9041581, 'q.srot.v23': 1.8079349, 'q.srot.v24': 1.9033961, 'q.srot.v25': 1.8380018, 'q.srot.v26': 1.6592928, 'q.srot.v27': 1.3280432, 'q.srot.v28': 3.4786878, 'q.srot.v29': 1.879877, 'q.srot.v30': 2.2901008, 'q.srot.v31': 2.7558186, 'q.srot.v32': 3.3826969, 'q.sti.t01': 4.4445124, 'q.sti.t02': 3.9091215, 'q.sti.t03': 3.1619651, 'q.sti.t04': 2.4216423, 'q.sti.t05': 1.9060861, 'q.sti.t06': 1.3849615, 'q.sti.t07': 1.0602946, 'q.sti.t08': 1.1052141, 'q.sti.t09': 1.074515, 'q.sti.t10': 9.75853, 'q.sti.t11': 8.943891, 'q.sti.t12': 6.0646796, 'q.sti.t13': 7.9013453, 'q.sti.t14': 1.1463068, 'q.sti.t15': 1.1348057, 'q.sti.t16': 1.0910597, 'q.sti.t17': 4.343579, 'q.sti.t18': 4.1705146, 'q.sti.t19': 3.5991309, 'q.sti.t20': 2.7087078, 'q.sti.t21': 1.5816646, 'q.sti.t22': 1.2193693, 'q.sti.t23': 1.1826262, 'q.sti.t24': 9.878858, 'q.sti.t25': 2.8469882, 'q.sti.t26': 2.9784875, 'q.sti.t27': 2.7902005, 'q.sti.t28': 2.535, 'q.sti.t29': 2.064865, 'q.sti.t30': 1.7815655, 'q.sti.t31': 1.4309027, 'q.sti.t32': 1.133066, 'q.sti.t33': 0.0, 'q.sti.t34': 0.0, 'q.sti.t35': 0.0, 'q.sti.t36': 0.0, 'q.sti.t37': 0.0, 'q.sti.t38': 0.0, 'q.sti.t39': 0.0, 'q.sti.t40': 0.0, 'q.sti.t41': 1.0508133, 'q.sti.t42': 9.406803, 'q.sti.t43': 8.075108, 'q.sti.t44': 6.085332, 'q.sti.t45': 9.326926, 'q.sti.t46': 1.2176594, 'q.sti.t47': 1.1428167, 'q.sti.t48': 1.1788186, 'q.sti.v01': 3.5219831, 'q.sti.v02': 3.1112704, 'q.sti.v03': 2.3660235, 'q.sti.v04': 1.8034015, 'q.sti.v05': 4.8356166, 'q.sti.v06': 1.1000203, 'q.sti.v07': 1.3500566, 'q.sti.v08': 1.0715648, 'q.sti.v09': 9.615484, 'q.sti.v10': 8.788516, 'q.sti.v11': 7.557532, 'q.sti.v12': 5.575068, 'q.sti.v13': 6.084297, 'q.sti.v14': 6.9597077, 'q.sti.v15': 6.597585, 'q.sti.v16': 7.8261743, 'q.sti.v17': 3.80104, 'q.sti.v18': 3.6287231, 'q.sti.v19': 3.3591487, 'q.sti.v20': 2.9416616, 'q.sti.v21': 2.4931173, 'q.sti.v22': 2.0733666, 'q.sti.v23': 1.53432, 'q.sti.v24': 9.652374, 'q.sti.v25': 1.0177969, 'q.sti.v26': 9.793144, 'q.sti.v27': 7.3998113, 'q.sti.v28': 1.1399789, 'q.sti.v29': 6.039735, 'q.sti.v30': 6.893705, 'q.sti.v31': 6.563198, 'q.sti.v32': 7.891301, 'q.svb.t01': 1.0975463657459397, 'q.svb.t02': 8.701379430318081, 'q.svb.t03': 7.501591007622696, 'q.svb.t04': 7.174711603464664, 'q.svb.t05': 6.562895159220382, 'q.svb.t06': 5.361047586129132, 'q.svb.t07': 4.319275373539643, 'q.svb.t08': 4.537679835323352, 'q.svb.t09': 0.0, 'q.svb.t10': 0.0, 'q.svb.t11': 0.0, 'q.svb.t12': 0.0, 'q.svb.t13': 0.0, 'q.svb.t14': 0.0, 'q.svb.t15': 0.0, 'q.svb.t16': 0.0, 'q.svb.t17': 1.257698971050614, 'q.svb.t18': 1.0207443653452406, 'q.svb.t19': 8.331719011810069, 'q.svb.t20': 8.386550693081402, 'q.svb.t21': 6.099385640852873, 'q.svb.t22': 5.533974212620602, 'q.svb.t23': 5.056476019971902, 'q.svb.t24': 3.9486654661269234, 'q.svb.t25': 2.340491714905156, 'q.svb.t26': 2.487050937477803, 'q.svb.t27': 1.9708531772314966, 'q.svb.t28': 1.6513893394983596, 'q.svb.t29': 1.5115360887199059, 'q.svb.t30': 1.273930862034944, 'q.svb.t31': 1.2792371822810453, 'q.svb.t32': 1.1379843381155157, 'q.svb.t33': 0.0, 'q.svb.t34': 0.0, 'q.svb.t35': 0.0, 'q.svb.t36': 0.0, 'q.svb.t37': 0.0, 'q.svb.t38': 0.0, 'q.svb.t39': 0.0, 'q.svb.t40': 0.0, 'q.svb.t41': 0.0, 'q.svb.t42': 0.0, 'q.svb.t43': 0.0, 'q.svb.t44': 0.0, 'q.svb.t45': 0.0, 'q.svb.t46': 0.0, 'q.svb.t47': 0.0, 'q.svb.t48': 0.0, 'q.svb.v01': 3.026598303884274, 'q.svb.v02': 2.72470393469405, 'q.svb.v03': 2.6007904569116445, 'q.svb.v04': 2.592255679160619, 'q.svb.v05': 3.136600962108887, 'q.svb.v06': 3.786979498085022, 'q.svb.v07': 5.090777038133062, 'q.svb.v08': 8.619119092454056, 'q.svb.v09': 0.0, 'q.svb.v10': 0.0, 'q.svb.v11': 0.0, 'q.svb.v12': 0.0, 'q.svb.v13': 0.0, 'q.svb.v14': 0.0, 'q.svb.v15': 0.0, 'q.svb.v16': 0.0, 'q.svb.v17': 2.9240931669034085, 'q.svb.v18': 2.7683923689472, 'q.svb.v19': 2.5323852360886354, 'q.svb.v20': 2.5855631201097644, 'q.svb.v21': 2.36171310916594, 'q.svb.v22': 2.275791967588296, 'q.svb.v23': 2.4024094978777426, 'q.svb.v24': 4.2457802585147695, 'q.svb.v25': 0.0, 'q.svb.v26': 0.0, 'q.svb.v27': 0.0, 'q.svb.v28': 0.0, 'q.svb.v29': 0.0, 'q.svb.v30': 0.0, 'q.svb.v31': 0.0, 'q.svb.v32': 0.0, 'q.ti.t01': 4.4445124, 'q.ti.t02': 3.9091215, 'q.ti.t03': 3.1619651, 'q.ti.t04': 2.4216423, 'q.ti.t05': 1.9060861, 'q.ti.t06': 1.3849615, 'q.ti.t07': 1.0602947, 'q.ti.t08': 1.1052141, 'q.ti.t09': 1.074515, 'q.ti.t10': 9.75853, 'q.ti.t11': 8.943891, 'q.ti.t12': 6.064679, 'q.ti.t13': 7.9013453, 'q.ti.t14': 1.1463068, 'q.ti.t15': 1.1059191, 'q.ti.t16': 1.0597584, 'q.ti.t17': 4.343579, 'q.ti.t18': 4.1705146, 'q.ti.t19': 3.5991309, 'q.ti.t20': 2.7087076, 'q.ti.t21': 1.5816646, 'q.ti.t22': 1.2193693, 'q.ti.t23': 1.1787014, 'q.ti.t24': 9.878858, 'q.ti.t25': 2.8438785, 'q.ti.t26': 2.9767935, 'q.ti.t27': 2.7902005, 'q.ti.t28': 2.535, 'q.ti.t29': 2.0392203, 'q.ti.t30': 1.7815655, 'q.ti.t31': 1.4309027, 'q.ti.t32': 1.133066, 'q.ti.t33': 0.0, 'q.ti.t34': 0.0, 'q.ti.t35': 0.0, 'q.ti.t36': 0.0, 'q.ti.t37': 0.0, 'q.ti.t38': 0.0, 'q.ti.t39': 0.0, 'q.ti.t40': 0.0, 'q.ti.t41': 1.0502895, 'q.ti.t42': 9.406803, 'q.ti.t43': 8.075108, 'q.ti.t44': 6.0853314, 'q.ti.t45': 9.326926, 'q.ti.t46': 1.2176591, 'q.ti.t47': 1.1354518, 'q.ti.t48': 1.1570302, 'q.ti.v01': 3.5108714, 'q.ti.v02': 3.1104844, 'q.ti.v03': 2.1894689, 'q.ti.v04': 1.7988883, 'q.ti.v05': 1.7718189, 'q.ti.v06': 1.0997758, 'q.ti.v07': 1.0098087, 'q.ti.v08': 9.762994, 'q.ti.v09': 9.454263, 'q.ti.v10': 8.63621, 'q.ti.v11': 7.556453, 'q.ti.v12': 5.5750475, 'q.ti.v13': 5.9561596, 'q.ti.v14': 6.6164055, 'q.ti.v15': 5.989243, 'q.ti.v16': 7.049008, 'q.ti.v17': 3.8010397, 'q.ti.v18': 3.6287231, 'q.ti.v19': 3.3591487, 'q.ti.v20': 2.9416616, 'q.ti.v21': 2.4920833, 'q.ti.v22': 2.0728412, 'q.ti.v23': 1.53432, 'q.ti.v24': 9.480419, 'q.ti.v25': 9.2551775, 'q.ti.v26': 8.900423, 'q.ti.v27': 7.16228, 'q.ti.v28': 9.03963, 'q.ti.v29': 5.6736183, 'q.ti.v30': 6.3653255, 'q.ti.v31': 5.987595, 'q.ti.v32': 7.450848, 'q.vb.t01': 2.1844567312322245, 'q.vb.t02': 1.7357599651558955, 'q.vb.t03': 1.493768072633738, 'q.vb.t04': 1.4165849474112904, 'q.vb.t05': 1.2880414785445256, 'q.vb.t06': 1.039403406634315, 'q.vb.t07': 7.986340831993226, 'q.vb.t08': 8.946950348836737, 'q.vb.t09': 0.0, 'q.vb.t10': 0.0, 'q.vb.t11': 0.0, 'q.vb.t12': 0.0, 'q.vb.t13': 0.0, 'q.vb.t14': 0.0, 'q.vb.t15': 0.0, 'q.vb.t16': 0.0, 'q.vb.t17': 2.506797457092419, 'q.vb.t18': 2.033540742230331, 'q.vb.t19': 1.654857633910469, 'q.vb.t20': 1.6676801593999357, 'q.vb.t21': 1.1940802142525595, 'q.vb.t22': 1.0941983066987913, 'q.vb.t23': 9.985397775013032, 'q.vb.t24': 7.796755018229807, 'q.vb.t25': 4.666682879410613, 'q.vb.t26': 4.964808003724247, 'q.vb.t27': 3.9332219503492025, 'q.vb.t28': 3.2874877532067157, 'q.vb.t29': 3.0170612398467758, 'q.vb.t30': 2.539544941568546, 'q.vb.t31': 2.5480323127889104, 'q.vb.t32': 2.247998656674966, 'q.vb.t33': 0.0, 'q.vb.t34': 0.0, 'q.vb.t35': 0.0, 'q.vb.t36': 0.0, 'q.vb.t37': 0.0, 'q.vb.t38': 0.0, 'q.vb.t39': 0.0, 'q.vb.t40': 0.0, 'q.vb.t41': 0.0, 'q.vb.t42': 0.0, 'q.vb.t43': 0.0, 'q.vb.t44': 0.0, 'q.vb.t45': 0.0, 'q.vb.t46': 0.0, 'q.vb.t47': 0.0, 'q.vb.t48': 0.0, 'q.vb.v01': 5.52057132311089, 'q.vb.v02': 5.044556233189909, 'q.vb.v03': 4.529652706399572, 'q.vb.v04': 3.647955882992154, 'q.vb.v05': 5.854035493306811, 'q.vb.v06': 7.142078791535997, 'q.vb.v07': 6.696961798975115, 'q.vb.v08': 9.285657023866559, 'q.vb.v09': 0.0, 'q.vb.v10': 0.0, 'q.vb.v11': 0.0, 'q.vb.v12': 0.0, 'q.vb.v13': 0.0, 'q.vb.v14': 0.0, 'q.vb.v15': 0.0, 'q.vb.v16': 0.0, 'q.vb.v17': 5.119496822276769, 'q.vb.v18': 5.2704965546780755, 'q.vb.v19': 4.742565995856096, 'q.vb.v20': 4.653006741059613, 'q.vb.v21': 4.56031931975652, 'q.vb.v22': 4.147866229495723, 'q.vb.v23': 4.101778800011572, 'q.vb.v24': 6.293219095811536, 'q.vb.v25': 0.0, 'q.vb.v26': 0.0, 'q.vb.v27': 0.0, 'q.vb.v28': 0.0, 'q.vb.v29': 0.0, 'q.vb.v30': 0.0, 'q.vb.v31': 0.0, 'q.vb.v32': 0.0, 'q.zeff.t01': 2.2612698, 'q.zeff.t02': 2.0920138, 'q.zeff.t03': 2.0599723, 'q.zeff.t04': 2.2466078, 'q.zeff.t05': 2.330039, 'q.zeff.t06': 2.4247015, 'q.zeff.t07': 2.5001676, 'q.zeff.t08': 3.107649, 'q.zeff.t09': 3.380054, 'q.zeff.t10': 3.1709144, 'q.zeff.t11': 3.2228777, 'q.zeff.t12': 1.6474653, 'q.zeff.t13': 1.6828251, 'q.zeff.t14': 1.8945931, 'q.zeff.t15': 1.9653136, 'q.zeff.t16': 2.113182, 'q.zeff.t17': 2.2627773, 'q.zeff.t18': 2.1765451, 'q.zeff.t19': 2.044775, 'q.zeff.t20': 2.192619, 'q.zeff.t21': 2.3796132, 'q.zeff.t22': 2.5288773, 'q.zeff.t23': 3.113593, 'q.zeff.t24': 3.2005527, 'q.zeff.t25': 5.762172, 'q.zeff.t26': 6.8282595, 'q.zeff.t27': 5.4674625, 'q.zeff.t28': 4.797618, 'q.zeff.t29': 4.34141, 'q.zeff.t30': 4.686829, 'q.zeff.t31': 4.778902, 'q.zeff.t32': 4.621043, 'q.zeff.t33': 0.0, 'q.zeff.t34': 0.0, 'q.zeff.t35': 0.0, 'q.zeff.t36': 0.0, 'q.zeff.t37': 0.0, 'q.zeff.t38': 0.0, 'q.zeff.t39': 0.0, 'q.zeff.t40': 0.0, 'q.zeff.t41': 3.339402, 'q.zeff.t42': 3.1398833, 'q.zeff.t43': 2.7347357, 'q.zeff.t44': 1.4697152, 'q.zeff.t45': 1.8126185, 'q.zeff.t46': 1.9519382, 'q.zeff.t47': 2.0039027, 'q.zeff.t48': 2.442885, 'q.zeff.v01': 1.77735, 'q.zeff.v02': 1.8196954, 'q.zeff.v03': 2.1128926, 'q.zeff.v04': 2.2507904, 'q.zeff.v05': 2.8019059, 'q.zeff.v06': 2.4396944, 'q.zeff.v07': 3.019461, 'q.zeff.v08': 3.183743, 'q.zeff.v09': 3.5940893, 'q.zeff.v10': 3.3038936, 'q.zeff.v11': 2.887439, 'q.zeff.v12': 1.5106498, 'q.zeff.v13': 1.789353, 'q.zeff.v14': 1.8314759, 'q.zeff.v15': 1.9849554, 'q.zeff.v16': 2.401069, 'q.zeff.v17': 1.7188479, 'q.zeff.v18': 1.7004983, 'q.zeff.v19': 1.7526697, 'q.zeff.v20': 1.8454823, 'q.zeff.v21': 1.9644775, 'q.zeff.v22': 2.1295516, 'q.zeff.v23': 2.3014739, 'q.zeff.v24': 3.3000712, 'q.zeff.v25': 3.5754654, 'q.zeff.v26': 3.0581722, 'q.zeff.v27': 2.2391627, 'q.zeff.v28': 1.4754993, 'q.zeff.v29': 1.7977396, 'q.zeff.v30': 1.8655864, 'q.zeff.v31': 2.150778, 'q.zeff.v32': 2.7277145}, 'mse': {'01': 4.4034441139763905, '02': 4.223711487366412, '03': 3.4355744268204376, '04': 1.9848087446210485, '05': 0.6554613489837754, '06': -0.5935482502643474, '07': -2.4029736587406645, '08': -3.825359050398463, '09': -5.063401816387414, '10': -6.194690867275016, '11': -7.435660379725794, '12': 9.15021386514095, '13': 9.036298900795291, '14': 8.897508542052702, '15': 9.131811947235782, '16': 8.162807497657658, '17': 8.94490296733844, '18': 8.44594334634775, '19': 7.363103001166042, '20': 8.007587926952828, '21': 8.997857633323394, '22': 8.325847604169097, '23': 8.1083162464687, '24': 9.059707523594161, '25': 8.249408313230735, '26': 8.175835839051791, '27': -0.17892020170635287, '28': 1.0727893719273995, '29': 2.288830862706641, '30': 3.9873483044600055, '31': 4.9344658823669585, '32': 5.243358303654641, '33': 6.601051996680623, '34': 6.466255169979636, '35': 6.0560841036744195, '36': 5.596827915005316, '37': 0.0, '38': 2.5951066989102323, '39': 2.1485011814682893, '40': 2.0983396300691006, '41': -7.928559187844145, '42': -8.340881181199219, '43': -8.717172499873628, '44': -9.361519610628596, '45': 0.0, '46': 0.0, '47': 0.0, '48': 0.0, '49': 0.0, '50': 0.0, '51': 0.0, '52': 0.0, '53': 0.0, '54': 0.0, '55': 0.0, '56': 0.0, '57': 0.0, '58': 0.0, '59': 0.0, '60': 0.0, '61': 0.0, '62': 0.0, '63': 0.0, '64': 0.0, '65': 0.0, '66': 0.0, '67': 0.0, '68': 0.0, '69': 0.0}, 'mag': {'dsl.1u180': 0.2116360071376988, 'dsl.2u180': -0.5358678588549992, 'dsl.3u180': -1.0503062761889914, 'dsl.4u157': -0.46906073855912567, 'dsl.5u157': -0.9111533336139862, 'dsl.6u157': 0.0, 'mpi.11m067': 0.1250991329901948, 'mpi.11m322': 0.12342567732838816, 'mpi.1a139': 0.12324580068459905, 'mpi.1a322': 0.12961690764773975, 'mpi.1b139': 0.11731806796187313, 'mpi.1b157': 0.9997160932070107, 'mpi.1b322': 0.11046550255524726, 'mpi.1l180': -0.13557048642420946, 'mpi.1u157': 0.16983031826244618, 'mpi.2a067': 0.8603936261090249, 'mpi.2a139': 0.12104358016442447, 'mpi.2a322': 0.8685989768197638, 'mpi.2b067': 0.8480731083104137, 'mpi.2b139': 0.10449679160092427, 'mpi.2b322': 0.80901288538983, 'mpi.2l180': -0.175183515875356, 'mpi.2u157': 0.3108423958552275, 'mpi.3a139': 0.10359974593011809, 'mpi.3a322': 0.6680417623736723, 'mpi.3b139': 0.9162476536932616, 'mpi.3b322': 0.8349859413413926, 'mpi.3l180': -0.9463338824472581, 'mpi.3u157': 0.11850730249962756, 'mpi.4a139': 0.8613775644678748, 'mpi.4a322': -0.6723921156168208, 'mpi.4b139': 0.8128576650700339, 'mpi.4b322': 0.6318680733235027, 'mpi.4u157': 0.1804824741521429, 'mpi.5a139': 0.6888145078176819, 'mpi.5a322': -0.15254184953775507, 'mpi.5b139': 0.7622674872596633, 'mpi.5b322': -0.1584209550087022, 'mpi.5u157': -0.16794953672119087, 'mpi.66m067': 0.7673835199827153, 'mpi.66m157': 0.8297297206537214, 'mpi.66m247': 0.7842295513076465, 'mpi.66m322': 0.7861363420258888, 'mpi.67a097': 0.0, 'mpi.67a142': 0.0, 'mpi.67a157': 0.7814486959079036, 'mpi.67a322': 0.7761001132935448, 'mpi.67b097': 0.0, 'mpi.67b157': 0.8865108926386464, 'mpi.67b322': 0.9108067124303135, 'mpi.6fa322': 0.8276321161292266, 'mpi.6fb142': 0.8426590252142532, 'mpi.6fb322': 0.8405249757017424, 'mpi.6na132': 0.0, 'mpi.6na157': 0.9296675324844585, 'mpi.6na322': 0.9465508826256865, 'mpi.6nb157': 0.8589373420250368, 'mpi.6nb322': 0.8246171595501117, 'mpi.6u157': -0.11867271585098631, 'mpi.79a147': 0.1418307560341603, 'mpi.79b142': 0.8607225455465173, 'mpi.79b322': 0.46567054263003155, 'mpi.79fa322': 0.22242833861009595, 'mpi.79na322': 0.3918528049911174, 'mpi.7fa322': 0.6218026330623232, 'mpi.7fb322': 0.9717785284855095, 'mpi.7na322': 0.8374461362317073, 'mpi.7nb142': 0.10491927955398594, 'mpi.7nb322': 0.1064842101115938, 'mpi.7u157': -0.38055879273201754, 'mpi.89a322': 0.15418013152530818, 'mpi.89b322': -0.3701327666498955, 'mpi.8a322': 0.16683177870589816, 'mpi.8b322': -0.6971097182385364, 'mpi.9a322': 0.3263483736285859, 'mpi.9b322': -0.33315871437166206, 'psf.1a': -0.8880266210606417, 'psf.1b': 0.2855743054631432, 'psf.2a': 0.21427600104709418, 'psf.2b': 0.24767253630685104, 'psf.3a': -0.16872191695771477, 'psf.3b': -0.46729232522487507, 'psf.4a': 0.158073826955525, 'psf.4b': 0.7389100935403903, 'psf.5a': 0.18308289880286507, 'psf.5b': 0.3181921719630054, 'psf.6fa': -0.6726062373331546, 'psf.6fb': -0.34072424461167355, 'psf.6na': -0.595271265661772, 'psf.6nb': -0.5226050181589628, 'psf.7fa': -0.5062666507637559, 'psf.7fb': -0.7750859704558408, 'psf.7na': -0.45598301021819526, 'psf.7nb': -0.10129228991698518, 'psf.8a': 0.4514813862637605, 'psf.8b': 0.5417040324849811, 'psf.9a': 0.8813948525200033, 'psf.9b': 0.2722220940599372, 'psi.11m': 0.4711981673105707, 'psi.12a': 0.40292048131478353, 'psi.12b': 0.643724918571594, 'psi.1l': 0.2993204536039684, 'psi.23a': 0.2605279052457969, 'psi.23b': 0.13719770151675212, 'psi.2l': 0.21670738120181454, 'psi.34a': 0.9140376181839116, 'psi.34b': 0.2428927653316748, 'psi.3l': 0.6719724390339721, 'psi.45a': 0.16327553489978422, 'psi.45b': 0.19011346075902225, 'psi.58a': 0.13611076365894448, 'psi.58b': 0.3900761189815564, 'psi.6a': -0.5010220081189729, 'psi.6b': -0.4924840529135963, 'psi.7a': -0.45853945987628525, 'psi.7b': -0.7211205024044259, 'psi.89fb': 0.3959868734252936, 'psi.89nb': 0.29994969291967283, 'psi.9a': 0.6290517743804713, 'psi.9b': 0.3667016945338375}, 'mag_hi': {'b1': 0.11701677660255427, 'b2': -0.2071850622763094, 'b3': -0.24420301437226044, 'b4': -1.5940391270910297, 'b5': 0.4449676710822317, 'b6': 0.8329042336686285, 'b7': -0.2639952196831672, 'b8': 0.25551712675536464}, 'profiles': {'alpha': 1.3880891, 'aminor': 0.5890581, 'betan': 1.1177827, 'betap': 0.6457826, 'drsep': -0.33185187, 'edensfit': [4.5356841e+00, 4.5353332e+00, 4.5343118e+00, 4.5326672e+00, + 4.5304470e+00, 4.5276980e+00, 4.5244679e+00, 4.5208039e+00, + 4.5167527e+00, 4.5123615e+00, 4.5076776e+00, 4.5027485e+00, + 4.4976096e+00, 4.4922729e+00, 4.4867387e+00, 4.4810033e+00, + 4.4750609e+00, 4.4689040e+00, 4.4625292e+00, 4.4559278e+00, + 4.4490957e+00, 4.4420271e+00, 4.4347143e+00, 4.4271517e+00, + 4.4193306e+00, 4.4112453e+00, 4.4028878e+00, 4.3942513e+00, + 4.3853278e+00, 4.3761120e+00, 4.3665977e+00, 4.3567805e+00, + 4.3466549e+00, 4.3362164e+00, 4.3254609e+00, 4.3143821e+00, + 4.3029785e+00, 4.2912464e+00, 4.2791882e+00, 4.2668052e+00, + 4.2540994e+00, 4.2410760e+00, 4.2277408e+00, 4.2140999e+00, + 4.2001600e+00, 4.1859283e+00, 4.1714125e+00, 4.1566191e+00, + 4.1415553e+00, 4.1262302e+00, 4.1106496e+00, 4.0948229e+00, + 4.0787578e+00, 4.0624609e+00, 4.0459414e+00, 4.0292077e+00, + 4.0122676e+00, 3.9951286e+00, 3.9778001e+00, 3.9602902e+00, + 3.9426074e+00, 3.9247601e+00, 3.9067585e+00, 3.8886123e+00, + 3.8703306e+00, 3.8519254e+00, 3.8334067e+00, 3.8147869e+00, + 3.7960777e+00, 3.7772927e+00, 3.7584450e+00, 3.7395494e+00, + 3.7206216e+00, 3.7016768e+00, 3.6827335e+00, 3.6638091e+00, + 3.6449232e+00, 3.6260948e+00, 3.6073413e+00, 3.5886784e+00, + 3.5701165e+00, 3.5516560e+00, 3.5332794e+00, 3.5149333e+00, + 3.4965005e+00, 3.4777358e+00, 3.4581459e+00, 3.4367437e+00, + 3.4115496e+00, 3.3786054e+00, 3.3300743e+00, 3.2509277e+00, + 3.1144693e+00, 2.8805928e+00, 2.5096939e+00, 2.0071259e+00, + 1.4651403e+00, 1.0114849e+00, 7.0336020e-01, 5.1724249e-01, + 4.0718436e-01, 3.3888724e-01, 2.9388386e-01, 2.6098081e-01, + 2.3475574e-01, 2.1246266e-01, 1.9264990e-01, 1.7451517e-01, + 1.5759529e-01, 1.4161034e-01, 1.2638144e-01, 1.1178744e-01, + 9.7743101e-02, 8.4186077e-02, 7.1069628e-02, 5.8358017e-02, + 4.6023782e-02, 3.4045644e-02, 2.2407211e-02, 1.1095907e-02, + 6.6516011e-05] , 'etempfit': [2.4220154e+00, 2.4214387e+00, 2.4197226e+00, 2.4168880e+00, + 2.4129565e+00, 2.4079492e+00, 2.4018879e+00, 2.3947945e+00, + 2.3866911e+00, 2.3776004e+00, 2.3675442e+00, 2.3565454e+00, + 2.3446269e+00, 2.3318119e+00, 2.3181233e+00, 2.3035851e+00, + 2.2882206e+00, 2.2720535e+00, 2.2551084e+00, 2.2374089e+00, + 2.2189791e+00, 2.1998446e+00, 2.1800289e+00, 2.1595581e+00, + 2.1384559e+00, 2.1167483e+00, 2.0944605e+00, 2.0716178e+00, + 2.0482457e+00, 2.0243702e+00, 2.0000165e+00, 1.9752110e+00, + 1.9499800e+00, 1.9243487e+00, 1.8983438e+00, 1.8719916e+00, + 1.8453181e+00, 1.8183497e+00, 1.7911127e+00, 1.7636334e+00, + 1.7359381e+00, 1.7080530e+00, 1.6800044e+00, 1.6518185e+00, + 1.6235213e+00, 1.5951387e+00, 1.5666962e+00, 1.5382196e+00, + 1.5097338e+00, 1.4812645e+00, 1.4528364e+00, 1.4244747e+00, + 1.3962040e+00, 1.3680490e+00, 1.3400339e+00, 1.3121827e+00, + 1.2845196e+00, 1.2570682e+00, 1.2298518e+00, 1.2028937e+00, + 1.1762167e+00, 1.1498433e+00, 1.1237957e+00, 1.0980957e+00, + 1.0727639e+00, 1.0478214e+00, 1.0232879e+00, 9.9918294e-01, + 9.7552598e-01, 9.5233548e-01, 9.2962921e-01, 9.0742356e-01, + 8.8573372e-01, 8.6457407e-01, 8.4395826e-01, 8.2389915e-01, + 8.0440813e-01, 7.8549546e-01, 7.6716983e-01, 7.4943745e-01, + 7.3230088e-01, 7.1575594e-01, 6.9978791e-01, 6.8436301e-01, + 6.6941345e-01, 6.5481097e-01, 6.4032006e-01, 6.2551916e-01, + 6.0966951e-01, 5.9151500e-01, 5.6900853e-01, 5.3904068e-01, + 4.9744833e-01, 4.4027534e-01, 3.6689016e-01, 2.8336555e-01, + 2.0178452e-01, 1.3359994e-01, 8.3566703e-02, 5.0090287e-02, + 2.9161779e-02, 1.6698871e-02, 9.8744258e-03, 6.7463727e-03, + 5.3054085e-03, 4.7680927e-03, 4.7857161e-03, 5.1441803e-03, + 5.7253363e-03, 6.4355959e-03, 7.1991780e-03, 7.9307994e-03, + 8.5733244e-03, 9.0464065e-03, 9.2604784e-03, 9.1193225e-03, + 8.5468460e-03, 7.4588447e-03, 5.7576005e-03, 3.3539366e-03, + 1.6280974e-04] , 'gapbot': 0.14820898, 'gapin': 0.7065842, 'gapout': 0.86624295, 'gaptop': 0.26251456, 'idensfit': 0.0, 'itempfit': [3.3658493e+00, 3.3639359e+00, 3.3583255e+00, 3.3492119e+00, + 3.3367894e+00, 3.3212519e+00, 3.3027954e+00, 3.2816088e+00, + 3.2578609e+00, 3.2317181e+00, 3.2033443e+00, 3.1729033e+00, + 3.1405528e+00, 3.1064479e+00, 3.0707424e+00, 3.0335891e+00, + 2.9951367e+00, 2.9555285e+00, 2.9149008e+00, 2.8733857e+00, + 2.8311105e+00, 2.7881980e+00, 2.7447708e+00, 2.7009475e+00, + 2.6568446e+00, 2.6125698e+00, 2.5682263e+00, 2.5239141e+00, + 2.4797268e+00, 2.4357519e+00, 2.3920712e+00, 2.3487604e+00, + 2.3058889e+00, 2.2635181e+00, 2.2217050e+00, 2.1805022e+00, + 2.1399591e+00, 2.1001229e+00, 2.0610378e+00, 2.0227418e+00, + 1.9852654e+00, 1.9486343e+00, 1.9128703e+00, 1.8779912e+00, + 1.8440129e+00, 1.8109484e+00, 1.7788073e+00, 1.7475941e+00, + 1.7173102e+00, 1.6879524e+00, 1.6595114e+00, 1.6319745e+00, + 1.6053268e+00, 1.5795524e+00, 1.5546321e+00, 1.5305434e+00, + 1.5072625e+00, 1.4847598e+00, 1.4630024e+00, 1.4419531e+00, + 1.4215708e+00, 1.4018093e+00, 1.3826195e+00, 1.3639470e+00, + 1.3457325e+00, 1.3279104e+00, 1.3104095e+00, 1.2931497e+00, + 1.2760433e+00, 1.2590005e+00, 1.2419350e+00, 1.2247657e+00, + 1.2074181e+00, 1.1898285e+00, 1.1719429e+00, 1.1537200e+00, + 1.1351298e+00, 1.1161544e+00, 1.0967865e+00, 1.0770241e+00, + 1.0568674e+00, 1.0363148e+00, 1.0153584e+00, 9.9397826e-01, + 9.7213876e-01, 9.4978631e-01, 9.2684871e-01, 9.0322876e-01, + 8.7878633e-01, 8.5334712e-01, 8.2700497e-01, 8.0040210e-01, + 7.7393210e-01, 7.4748313e-01, 7.2095424e-01, 6.9439524e-01, + 6.6796720e-01, 6.4189869e-01, 6.1643296e-01, 5.9170145e-01, + 5.6734407e-01, 5.4309821e-01, 5.1890630e-01, 4.9470407e-01, + 4.7042117e-01, 4.4598174e-01, 4.2130587e-01, 3.9631027e-01, + 3.7090892e-01, 3.4501353e-01, 3.1853527e-01, 2.9138342e-01, + 2.6346681e-01, 2.3469406e-01, 2.0497368e-01, 1.7421424e-01, + 1.4232469e-01, 1.0921443e-01, 7.4793465e-02, 3.8972486e-02, + 1.6493300e-03] , 'kappa': 1.7348293, 'li': 0.94390005, 'n1rms': 0.66009593, 'n2rms': 0.14156547, 'n3rms': 0.41591975, 'pres': [3.8799832 , 3.8208804 , 3.7617288 , 3.7025287 , 3.6432812 , + 3.5839849 , 3.5246398 , 3.465247 , 3.405806 , 3.346316 , + 3.2867785 , 3.2271924 , 3.1675577 , 3.1078749 , 3.048144 , + 2.9883645 , 2.928537 , 2.868661 , 2.8087366 , 2.7487638 , + 2.6887434 , 2.6286736 , 2.568556 , 2.5083902 , 2.4481761 , + 2.3879137 , 2.3276029 , 2.2672439 , 2.2068367 , 2.146381 , + 2.085877 , 2.0253246 , 1.964724 , 1.9040751 , 1.8433781 , + 1.7826324 , 1.7218387 , 1.6609966 , 1.600106 , 1.5391674 , + 1.4781804 , 1.417145 , 1.3560615 , 1.2949294 , 1.2337492 , + 1.1725206 , 1.1112437 , 1.0499187 , 0.9885452 , 0.9271234 , + 0.8656533 , 0.80413485, 0.7425682 , 0.6809532 , 0.6192899 , + 0.55757827, 0.49581835, 0.4340101 , 0.37215358, 0.31024873, + 0.24829562, 0.18629415, 0.12424441, 0.06214636, 0. ], + 'psirz': [[-2.248029 , -2.2647698, -2.2815042, ..., -2.278046 , -2.2600079, + -2.2421792], + [-2.1922424, -2.2078395, -2.220571 , ..., -2.207576 , -2.1868343, + -2.1644835], + [-2.1645863, -2.1772082, -2.1814063, ..., -2.1391842, -2.1271017, + -2.1099272], + ..., + [ 1.5365763, 1.5546973, 1.5811306, ..., 1.4253633, 1.4077272, + 1.405437 ], + [ 1.4928653, 1.5113561, 1.5381261, ..., 1.3730242, 1.3541667, + 1.350844 ], + [ 1.4638444, 1.4831179, 1.5106446, ..., 1.3370574, 1.3164791, + 1.3117388]] , 'q0': 1.7078637, 'q95': 5.5338616, 'qmin': 1.6141915, 'qpsi': [1.7078637, 1.7099483, 1.7121781, 1.7201357, 1.7305489, 1.7426544, + 1.7557838, 1.7706956, 1.7861878, 1.8030581, 1.8205768, 1.8392042, + 1.8589801, 1.8798374, 1.9016149, 1.9242077, 1.9480541, 1.972941 , + 1.9987992, 2.0256884, 2.0537174, 2.0829725, 2.1133626, 2.1449468, + 2.1777916, 2.2119796, 2.2475495, 2.2845433, 2.3230157, 2.3630507, + 2.4047296, 2.448084 , 2.4933014, 2.5403776, 2.5894275, 2.640572 , + 2.6938844, 2.749661 , 2.8078249, 2.8685484, 2.9320755, 2.9985766, + 3.0683055, 3.1411672, 3.2176368, 3.298102 , 3.3826432, 3.4714127, + 3.5649242, 3.6638763, 3.76813 , 3.878379 , 3.995681 , 4.1205454, + 4.2535543, 4.3967257, 4.5504165, 4.7174673, 4.899979 , 5.101853 , + 5.3291564, 5.593391 , 5.91699 , 6.3851447, 8.225386 ], + 'r0': 1.7240232, 'rhoqmin': 0.25409117, 'rmaxis': 1.7240232, 'ssibry': -0.15830219, 'ssimag': -0.23296015, 'tribot': 0.42163247, 'tritop': 0.24729156, 'trotfit': [ 1.1178881e+01, 1.1166145e+01, 1.1129838e+01, 1.1072809e+01, + 1.0997907e+01, 1.0907958e+01, 1.0805675e+01, 1.0693574e+01, + 1.0573833e+01, 1.0448256e+01, 1.0318261e+01, 1.0184857e+01, + 1.0048780e+01, 9.9106045e+00, 9.7708139e+00, 9.6298399e+00, + 9.4880600e+00, 9.3457947e+00, 9.2033024e+00, 9.0607939e+00, + 8.9184275e+00, 8.7763052e+00, 8.6345387e+00, 8.4932766e+00, + 8.3526707e+00, 8.2128468e+00, 8.0739031e+00, 7.9358773e+00, + 7.7988024e+00, 7.6627779e+00, 7.5279579e+00, 7.3945155e+00, + 7.2626328e+00, 7.1324925e+00, 7.0042677e+00, 6.8781075e+00, + 6.7541265e+00, 6.6324277e+00, 6.5131001e+00, 6.3962231e+00, + 6.2818637e+00, 6.1700759e+00, 6.0609031e+00, 5.9543848e+00, + 5.8505449e+00, 5.7493901e+00, 5.6509199e+00, 5.5551100e+00, + 5.4619136e+00, 5.3712831e+00, 5.2831688e+00, 5.1975188e+00, + 5.1142612e+00, 5.0333042e+00, 4.9545555e+00, 4.8779216e+00, + 4.8033113e+00, 4.7306519e+00, 4.6598964e+00, 4.5910063e+00, + 4.5239525e+00, 4.4587111e+00, 4.3952575e+00, 4.3335652e+00, + 4.2736058e+00, 4.2153506e+00, 4.1587663e+00, 4.1038170e+00, + 4.0504603e+00, 3.9986494e+00, 3.9483304e+00, 3.8994465e+00, + 3.8519313e+00, 3.8057082e+00, 3.7606771e+00, 3.7166960e+00, + 3.6735594e+00, 3.6309628e+00, 3.5884795e+00, 3.5454943e+00, + 3.5010927e+00, 3.4538853e+00, 3.4017045e+00, 3.3411117e+00, + 3.2665458e+00, 3.1688790e+00, 3.0335891e+00, 2.8412867e+00, + 2.5807016e+00, 2.2789636e+00, 1.9998456e+00, 1.7846032e+00, + 1.6331966e+00, 1.5291175e+00, 1.4562464e+00, 1.4029994e+00, + 1.3616890e+00, 1.3270952e+00, 1.2953130e+00, 1.2632186e+00, + 1.2287284e+00, 1.1911110e+00, 1.1501706e+00, 1.1058643e+00, + 1.0582438e+00, 1.0074208e+00, 9.5354742e-01, 8.9680326e-01, + 8.3738607e-01, 7.7550691e-01, 7.1138865e-01, 6.4526004e-01, + 5.7735699e-01, 5.0792032e-01, 4.3719581e-01, 3.6543292e-01, + 2.9288468e-01, 2.1980725e-01, 1.4645962e-01, 7.3103122e-02, + -4.9694847e-07] , 'volume': 1.7259693, 'wmhd': 3.966949048719619, 'zmaxis': 0.24680848, 'zxpt1': -1.2522396, 'zxpt2': -9.159852}, 'basic': {'bcoil': -5.990131, 'bt': -1.0427779, 'fs00': 8.332785304891686, 'fs01': 4.248374559694631, 'fs02': 1.7381254844703842, 'fs03': 1.646644549000994, 'fs04': 9.562028858552386, 'fs05': 7.520950364368161, 'fzns': 0.484033, 'ip': 3.3863261144297367, 'ipsip': 0.51842695, 'iptipp': 5.229841979007027, 'pcbcoil': -1.1545527545993282, 'plasticfix': 0.2599349, 'vloop': -0.45126376}, 'actu': {'c139': -4.4351845, 'c19': -3.3684638, 'c199': -3.2324772, 'c259': -2.539195, 'c319': -3.2587526, 'c79': -2.4009955, 'e567dn': -1.0643165, 'e567up': -1.0135996, 'e89dn': -7.4507604, 'e89up': -7.4865856, 'echpwr': 0.0, 'echpwrc': 0.0, 'ecleifpwrc': 0.0, 'ecleipolang': 8.727084, 'ecleixmfrac': 0.0, 'eclukfpwrc': 0.0, 'eclukpolang': 8.756186, 'eclukxmfrac': 0.0, 'ecoila': -1.041964, 'ecoilb': -7.6013546, 'ecr2dfpwrc': 0.0, 'ecr2dpolang': 0.0, 'ecr2dxmfrac': 0.0, 'f1a': -4.8065014, 'f1b': -2.9144688, 'f2a': -1.962809, 'f2b': -1.5840825, 'f3a': -3.836005, 'f3b': -4.746713, 'f4a': 3.5178053, 'f4b': -1.9220513, 'f5a': 3.4853199, 'f5b': 3.5760345, 'f6a': -6.8836346, 'f6b': -4.5220923, 'f7a': -7.6399436, 'f7b': -1.2988014, 'f8a': -2.2256122, 'f8b': 7.789126, 'f9a': 2.1764817, 'f9b': 2.9280932, 'gasa': 0.1536917, 'gasb': 0.5315477, 'gasc': 0.85525614, 'gasd': -0.1554366, 'gase': 0.29506466, 'il150': -2.160308, 'il210': -2.4917176, 'il270': -4.6215053, 'il30': 2.1922653, 'il330': 1.8325212, 'il90': 4.8954763, 'iu150': 2.0466754, 'iu210': 7.2399707, 'iu270': -2.1176531, 'iu30': -4.2464705, 'iu330': -2.4605134, 'iu90': 1.900898, 'pinjf_15l': 2.34062922830653, 'pinjf_15r': 0.0, 'pinjf_21l': 1.3963391000427612, 'pinjf_21r': 0.0, 'pinjf_30l': 1.1971679135249702, 'pinjf_30r': 1.16375, 'pinjf_33l': 9.208016, 'pinjf_33r': 1.7745794324922033, 'tinj_15l': 0.27859437, 'tinj_15r': 0.0, 'tinj_21l': -0.10520654, 'tinj_21r': 0.0, 'tinj_30l': 0.11223377, 'tinj_30r': 0.8132082, 'tinj_33l': 0.9888372, 'tinj_33r': 0.12205868} + } + +std_list={'co2_s': {'r0': 5.745405918606057, 'v1': 3.810395534041371, 'v2': 6.231016540770837, 'v3': 4.2465028619306695}, \ + 'co2_den': {'r0': 5.6289092481579095, 'v1': 2.912285104312293, 'v2': 6.12717719926758, 'v3': 4.177042578575406}, 'co2_pl': {'r0': 1.4791672, 'v1': 0.82085747, 'v2': 0.3231884, 'v3': 0.32486433}, 'ece_cali': {'ece_cali': [0.09786963, 0.10079008, 0.1574895 , 0.21760247, 0.18035133, + 0.31157649, 0.3505673 , 0.38160059, 0.40321302, 0.43487164, + 0.47523601, 0.51852216, 0.56494506, 0.61561904, 0.66082642, + 0.67348341, 0.69121974, 0.69094223, 0.72099717, 0.75159125, + 0.78220523, 0.79333174, 0.83749626, 0.87894947, 0.90912915, + 0.96128567, 1.00186962, 1.03554838, 1.1951476 , 1.19809469, + 1.24667923, 1.20971236, 1.0619673 , 1.02198768, 0.98578077, + 0.94055391, 0.86067484, 0.8203012 , 0.79012133, 0.76271038, + 0.26904452, 0.2468038 , 0.2479244 , 0.26952798, 0.32369443, + 0.33592763, 0.38246246, 0.38132372] }, 'ece_s': {'ece_s': [0.114687 , 0.08366798, 0.09844785, 0.14414606, 0.18901012, + 0.34274004, 0.38226058, 0.43302474, 0.48602035, 0.55437337, + 0.62609554, 0.6944634 , 0.76682279, 0.83285472, 0.88339833, + 0.90783063, 0.92292159, 0.96315939, 1.01135911, 1.05618971, + 1.09760632, 1.10808709, 1.16574501, 1.21639803, 1.24148675, + 1.23640102, 1.22676555, 1.24784038, 1.29960164, 1.25800828, + 1.26608463, 1.26407363, 1.39350735, 1.34193075, 1.28875678, + 1.21015755, 1.10273169, 1.04177373, 0.99410535, 0.96263049, + 0.19285005, 0.24197354, 0.28205737, 0.30819233, 0.35447881, + 0.3703771 , 0.41397495, 0.41516397] }, 'ts': {'core.dens': [0.09009637, 0.1246462 , 0.13751305, 0.11230916, 0.16161898, + 0.18270145, 0.19247223, 0.20172502, 0.20071131, 0.21888553, + 0.2759216 , 0.33313844, 0.38896218, 0.54078836, 0.81198953, + 1.13863367, 1.62516062, 1.8885963 , 2.05421214, 2.08603166, + 2.18426708, 2.1832944 , 2.22083467, 2.2829591 , 2.2283948 , + 2.23321355, 2.26445802, 2.31493421, 2.31112649, 2.30810459, + 2.32603313, 2.32703027, 2.39034456, 2.51163667, 2.52618338, + 2.54924112, 2.58690051, 2.60558631, 2.69977472, 2.64503007] , 'core.temp': [ 0.36549127, 0.18336813, 0.36370885, 0.33128002, 0.33863834, + 0.27193868, 0.6283657 , 0.4361347 , 0.69380796, 0.79539466, + 1.3090588 , 0.774869 , 0.9514173 , 3.8916214 , 1.4947892 , + 2.4529097 , 2.3727765 , 2.6547513 , 3.1320906 , 3.0484638 , + 3.4406269 , 3.5003781 , 3.6002295 , 3.6814222 , 3.8173978 , + 3.8163757 , 3.8710248 , 4.1239395 , 5.1408224 , 4.608825 , + 4.6591983 , 4.839637 , 5.5766654 , 6.8003755 , 6.8736434 , + 7.649865 , 8.36901 , 9.252094 , 9.949551 , 10.37547 ], + 'divertor.dens': [47.49914813, 14.20428436, 11.133427 , 6.43790002, 5.25120498, + 5.0739493 , 5.29898497, 7.65303567] , 'divertor.temp': [31.19356 , 2.633911 , 3.694987 , 3.191222 , 3.471675 , + 4.568302 , 4.8678694, 21.484684 ] , 'tangential.dens': [2.67100272, 2.64005709, 2.58139803, 2.69044305, 2.95748536, + 2.70992074] , 'tangential.temp': [0.9906638, 1.0851467, 1.0965377, 1.1161762, 1.3257685, 1.2678239], + }, 'ts_error': {'core.dens': [2.03390072, 2.10485479, 2.62783276, 1.6415419 , 2.43299313, + 2.56577278, 3.68487102, 6.06250601, 4.0380187 , 6.41926325, + 6.71365983, 8.33360656, 7.06218857, 6.27190246, 7.15089777, + 6.83850218, 8.02113551, 8.72408579, 8.56905044, 9.37737117, + 8.93732885, 7.6073576 , 7.42508983, 8.74516791, 8.64998411, + 7.56778442, 5.54748605, 4.77975552, 5.87072137, 6.97867079, + 6.91693306, 5.90385008, 8.13107769, 7.73111672, 6.80614797, + 6.0762934 , 5.72340588, 5.24080812, 5.12614699, 6.00902723] , 'core.temp': [ 2.4193347, 0.6355519, 2.4517395, 2.0752492, 2.0720592, + 1.4242127, 3.9460711, 2.6645563, 4.0643225, 4.703413 , + 8.802657 , 4.892125 , 5.2362757, 7.4279757, 4.4578576, + 12.881488 , 7.4589615, 3.96558 , 4.20631 , 3.5847194, + 3.5123484, 3.870501 , 4.176492 , 3.926938 , 4.515934 , + 3.5749452, 2.0982497, 2.0690007, 5.645456 , 10.198552 , + 3.8913798, 3.2016876, 6.1467977, 6.088219 , 5.703063 , + 9.483672 , 9.650289 , 5.3096757, 5.3922567, 6.883821 ], + 'divertor.dens': [19.99890787, 5.58711705, 5.93633314, 4.59743392, 4.46138669, + 5.63270143, 5.00133781, 6.36193873] , 'divertor.temp': [21.115002 , 1.40787 , 2.1155045, 1.4588972, 1.5366217, + 1.9013653, 1.5258358, 9.975496 ] , 'tangential.dens': [4.2499412 , 3.67067413, 2.91871271, 3.03124709, 3.26729213, + 3.88534144] , 'tangential.temp': [4.2373137, 3.6197114, 3.297237 , 3.1625686, 3.9199874, 5.2858605], + }, 'ts_rz': {'core.r': 0.0, 'core.z': 0.18094002, 'divertor.r': 0.0, 'divertor.z': 0.07772846, 'tangential.r': 0.09884374, 'tangential.z': 0.07679844}, 'cer': {'q.amp.t01': 3.6742243611734366, 'q.amp.t02': 4.497065778190274, 'q.amp.t03': 0.585679664736041, 'q.amp.t04': 0.6681700038499909, 'q.amp.t05': 0.8400341887075012, 'q.amp.t06': 1.1096706010326942, 'q.amp.t07': 1.4950406652702724, 'q.amp.t08': 0.7894028516762569, 'q.amp.t09': 0.8095604552214455, 'q.amp.t10': 0.8592539287156591, 'q.amp.t11': 0.8246459015702233, 'q.amp.t12': 1.8911840470579198, 'q.amp.t13': 1.2269892727574876, 'q.amp.t14': 11.021255853065078, 'q.amp.t15': 6.517538119325146, 'q.amp.t16': 3.645702579934608, 'q.amp.t17': 2.9626616126065533, 'q.amp.t18': 4.461920843840134, 'q.amp.t19': 5.219875919143827, 'q.amp.t20': 0.7711295623103601, 'q.amp.t21': 0.9607387290745198, 'q.amp.t22': 1.2967755005627617, 'q.amp.t23': 0.7621002159300664, 'q.amp.t24': 0.8771211717687131, 'q.amp.t25': 0.25250745113953776, 'q.amp.t26': 0.32312413469433043, 'q.amp.t27': 0.36700652010379714, 'q.amp.t28': 0.34011518582675015, 'q.amp.t29': 0.41035650313224176, 'q.amp.t30': 0.6862589448616859, 'q.amp.t31': 0.1422231766519378, 'q.amp.t32': 0.13363916390387176, 'q.amp.t33': 1.0, 'q.amp.t34': 1.0, 'q.amp.t35': 1.0, 'q.amp.t36': 1.0, 'q.amp.t37': 1.0, 'q.amp.t38': 1.0, 'q.amp.t39': 1.0, 'q.amp.t40': 1.0, 'q.amp.t41': 0.820454570780345, 'q.amp.t42': 0.8615706987110681, 'q.amp.t43': 0.6071859859341784, 'q.amp.t44': 1.197938975574866, 'q.amp.t45': 12.215988509664738, 'q.amp.t46': 9.341327973655467, 'q.amp.t47': 4.472904296824212, 'q.amp.t48': 3.3943497818094106, 'q.amp.v01': 2.7021022327692243, 'q.amp.v02': 3.594882750764208, 'q.amp.v03': 6.831401471614823, 'q.amp.v04': 0.7781219769197429, 'q.amp.v05': 1.0292098050257321, 'q.amp.v06': 0.828806920384895, 'q.amp.v07': 1.6712402059898843, 'q.amp.v08': 2.3571753187076427, 'q.amp.v09': 2.0661672566941194, 'q.amp.v10': 2.0666336581297866, 'q.amp.v11': 1.636303202131786, 'q.amp.v12': 2.9035710427521946, 'q.amp.v13': 1.406901012506469, 'q.amp.v14': 1.2132083669798173, 'q.amp.v15': 0.9515863593652587, 'q.amp.v16': 0.7475270934312545, 'q.amp.v17': 1.5241737692624364, 'q.amp.v18': 2.2085915164394763, 'q.amp.v19': 2.9493900538170927, 'q.amp.v20': 4.278316653357043, 'q.amp.v21': 5.313271970417448, 'q.amp.v22': 7.348473162962035, 'q.amp.v23': 0.9864550778281945, 'q.amp.v24': 1.9815739140076505, 'q.amp.v25': 2.094777954809542, 'q.amp.v26': 1.877896825945974, 'q.amp.v27': 0.99577457078929, 'q.amp.v28': 1.0706412423084264, 'q.amp.v29': 1.3631287623060824, 'q.amp.v30': 1.1099369448842586, 'q.amp.v31': 0.8726016195652472, 'q.amp.v32': 0.747846216336958, 'q.fz.t01': 2.5610702, 'q.fz.t02': 2.2419143, 'q.fz.t03': 2.0739064, 'q.fz.t04': 2.3048103, 'q.fz.t05': 2.2102287, 'q.fz.t06': 2.1174932, 'q.fz.t07': 2.1484442, 'q.fz.t08': 1.8606663, 'q.fz.t09': 2.1638954, 'q.fz.t10': 1.8509163, 'q.fz.t11': 1.8586127, 'q.fz.t12': 0.9568721, 'q.fz.t13': 2.3727992, 'q.fz.t14': 3.6105218, 'q.fz.t15': 5.3829412, 'q.fz.t16': 8.190584, 'q.fz.t17': 2.516125, 'q.fz.t18': 2.4318311, 'q.fz.t19': 2.1081893, 'q.fz.t20': 2.281782, 'q.fz.t21': 2.13544, 'q.fz.t22': 2.1814096, 'q.fz.t23': 1.8892534, 'q.fz.t24': 1.9087192, 'q.fz.t25': 0.19636014, 'q.fz.t26': 0.18620646, 'q.fz.t27': 0.14421958, 'q.fz.t28': 0.09723423, 'q.fz.t29': 0.080668174, 'q.fz.t30': 0.10273581, 'q.fz.t31': 0.13109316, 'q.fz.t32': 0.087118275, 'q.fz.t33': 1.0, 'q.fz.t34': 1.0, 'q.fz.t35': 1.0, 'q.fz.t36': 1.0, 'q.fz.t37': 1.0, 'q.fz.t38': 1.0, 'q.fz.t39': 1.0, 'q.fz.t40': 1.0, 'q.fz.t41': 2.1368623, 'q.fz.t42': 1.7896428, 'q.fz.t43': 1.3443034, 'q.fz.t44': 1.2636999, 'q.fz.t45': 3.135505, 'q.fz.t46': 4.403919, 'q.fz.t47': 6.3148584, 'q.fz.t48': 12.685614, 'q.fz.v01': 1.7315592, 'q.fz.v02': 1.8227551, 'q.fz.v03': 2.3137145, 'q.fz.v04': 2.3250499, 'q.fz.v05': 2.3858676, 'q.fz.v06': 2.5525534, 'q.fz.v07': 0.43473968, 'q.fz.v08': 0.5022983, 'q.fz.v09': 0.6064986, 'q.fz.v10': 0.59657335, 'q.fz.v11': 0.6036746, 'q.fz.v12': 0.5246026, 'q.fz.v13': 1.5712994, 'q.fz.v14': 2.670019, 'q.fz.v15': 5.7964582, 'q.fz.v16': 12.772678, 'q.fz.v17': 1.4770436, 'q.fz.v18': 1.5119257, 'q.fz.v19': 1.6690897, 'q.fz.v20': 1.8544871, 'q.fz.v21': 2.0434837, 'q.fz.v22': 2.2924516, 'q.fz.v23': 2.4041765, 'q.fz.v24': 0.53790015, 'q.fz.v25': 0.6665211, 'q.fz.v26': 0.6257066, 'q.fz.v27': 0.72420514, 'q.fz.v28': 0.6818955, 'q.fz.v29': 2.099419, 'q.fz.v30': 3.9895964, 'q.fz.v31': 8.751686, 'q.fz.v32': 18.848782, 'q.nz.t01': 1.8000567304255077, 'q.nz.t02': 1.5198514890693995, 'q.nz.t03': 1.3964832069137714, 'q.nz.t04': 1.55576896188853, 'q.nz.t05': 1.532075329618876, 'q.nz.t06': 1.489951114271725, 'q.nz.t07': 1.4738470970183222, 'q.nz.t08': 1.3470839867272941, 'q.nz.t09': 1.545453686819252, 'q.nz.t10': 1.331910979996601, 'q.nz.t11': 1.3240655748694359, 'q.nz.t12': 2.521237186009569, 'q.nz.t13': 1.5335387415360704, 'q.nz.t14': 11.733388757341471, 'q.nz.t15': 7.458093441756309, 'q.nz.t16': 3.8320239502789915, 'q.nz.t17': 1.7696145003198824, 'q.nz.t18': 1.6650956097935417, 'q.nz.t19': 1.4193351140838706, 'q.nz.t20': 1.536083789860987, 'q.nz.t21': 1.5039945754866546, 'q.nz.t22': 1.5354984699503602, 'q.nz.t23': 1.3594522818957042, 'q.nz.t24': 1.36920411224594, 'q.nz.t25': 1.35919654435911, 'q.nz.t26': 0.1385567979843538, 'q.nz.t27': 1.0364586427274036, 'q.nz.t28': 0.6873277321969053, 'q.nz.t29': 0.5220410589729315, 'q.nz.t30': 0.6628815666314115, 'q.nz.t31': 0.8166394367570237, 'q.nz.t32': 0.624084232724485, 'q.nz.t33': 1.0, 'q.nz.t34': 1.0, 'q.nz.t35': 1.0, 'q.nz.t36': 1.0, 'q.nz.t37': 1.0, 'q.nz.t38': 1.0, 'q.nz.t39': 1.0, 'q.nz.t40': 1.0, 'q.nz.t41': 1.5067956340181943, 'q.nz.t42': 1.2946203136006909, 'q.nz.t43': 0.9306274804408158, 'q.nz.t44': 1.4867795964607113, 'q.nz.t45': 1.4096835042527558, 'q.nz.t46': 9.878047013918572, 'q.nz.t47': 5.004921672934357, 'q.nz.t48': 3.5867871743244724, 'q.nz.v01': 8.638615800637915, 'q.nz.v02': 9.571197720516919, 'q.nz.v03': 1.3141582254605229, 'q.nz.v04': 1.3655627369044254, 'q.nz.v05': 1.2431974288212828, 'q.nz.v06': 1.449234342107712, 'q.nz.v07': 0.34594843529510055, 'q.nz.v08': 0.3919617481959947, 'q.nz.v09': 0.4656578810829821, 'q.nz.v10': 0.4184092054419832, 'q.nz.v11': 0.3225577471145682, 'q.nz.v12': 1.3394459917220003, 'q.nz.v13': 0.8510205570498574, 'q.nz.v14': 6.765397546870859, 'q.nz.v15': 5.312698638438571, 'q.nz.v16': 3.8879037647080734, 'q.nz.v17': 7.122142989043909, 'q.nz.v18': 7.43082034334123, 'q.nz.v19': 8.510889639484471, 'q.nz.v20': 9.969817340951955, 'q.nz.v21': 1.1452717398355776, 'q.nz.v22': 1.3204355144623774, 'q.nz.v23': 1.4167224617018856, 'q.nz.v24': 0.4136158252410668, 'q.nz.v25': 0.48086928583570837, 'q.nz.v26': 0.3891753980772803, 'q.nz.v27': 0.301217687017372, 'q.nz.v28': 0.5697816410975993, 'q.nz.v29': 8.025255372506539, 'q.nz.v30': 6.082974345013147, 'q.nz.v31': 4.7113347776281485, 'q.nz.v32': 3.654429292304621, 'q.phi.t01': 0.13272643, 'q.phi.t02': 0.11352644, 'q.phi.t03': 0.10170898, 'q.phi.t04': 0.080421254, 'q.phi.t05': 0.07388382, 'q.phi.t06': 0.06287308, 'q.phi.t07': 0.055194948, 'q.phi.t08': 0.012827077, 'q.phi.t09': 0.012537763, 'q.phi.t10': 0.011689509, 'q.phi.t11': 0.011167041, 'q.phi.t12': 0.010662922, 'q.phi.t13': 0.010170325, 'q.phi.t14': 0.009701559, 'q.phi.t15': 0.0092174485, 'q.phi.t16': 0.00854954, 'q.phi.t17': 0.1479466, 'q.phi.t18': 0.11969676, 'q.phi.t19': 0.10758867, 'q.phi.t20': 0.09630294, 'q.phi.t21': 0.068198204, 'q.phi.t22': 0.05894337, 'q.phi.t23': 0.013136195, 'q.phi.t24': 0.01198341, 'q.phi.t25': 2.3841858e-07, 'q.phi.t26': 0.0, 'q.phi.t27': 0.0, 'q.phi.t28': 0.0, 'q.phi.t29': 2.3841858e-07, 'q.phi.t30': 0.0, 'q.phi.t31': 0.0, 'q.phi.t32': 0.0, 'q.phi.t33': 1.0, 'q.phi.t34': 1.0, 'q.phi.t35': 1.0, 'q.phi.t36': 1.0, 'q.phi.t37': 1.0, 'q.phi.t38': 1.0, 'q.phi.t39': 1.0, 'q.phi.t40': 1.0, 'q.phi.t41': 0.012249902, 'q.phi.t42': 0.011428051, 'q.phi.t43': 0.010913415, 'q.phi.t44': 0.010400009, 'q.phi.t45': 0.009927551, 'q.phi.t46': 0.009468742, 'q.phi.t47': 0.008869956, 'q.phi.t48': 0.008295988, 'q.phi.v01': 0.0, 'q.phi.v02': 2.3841858e-07, 'q.phi.v03': 2.3841858e-07, 'q.phi.v04': 2.3841858e-07, 'q.phi.v05': 2.3841858e-07, 'q.phi.v06': 4.7683716e-07, 'q.phi.v07': 4.7683716e-07, 'q.phi.v08': 0.0, 'q.phi.v09': 4.7683716e-07, 'q.phi.v10': 7.1525574e-07, 'q.phi.v11': 4.7683716e-07, 'q.phi.v12': 4.7683716e-07, 'q.phi.v13': 7.1525574e-07, 'q.phi.v14': 0.0, 'q.phi.v15': 2.3841858e-07, 'q.phi.v16': 2.3841858e-07, 'q.phi.v17': 0.0, 'q.phi.v18': 4.7683716e-07, 'q.phi.v19': 2.3841858e-07, 'q.phi.v20': 2.3841858e-07, 'q.phi.v21': 0.0, 'q.phi.v22': 2.3841858e-07, 'q.phi.v23': 4.7683716e-07, 'q.phi.v24': 2.3841858e-07, 'q.phi.v25': 4.7683716e-07, 'q.phi.v26': 4.7683716e-07, 'q.phi.v27': 2.3841858e-07, 'q.phi.v28': 4.7683716e-07, 'q.phi.v29': 4.7683716e-07, 'q.phi.v30': 2.3841858e-07, 'q.phi.v31': 0.0, 'q.phi.v32': 2.3841858e-07, 'q.r.t01': 0.0071082115, 'q.r.t02': 0.0092328545, 'q.r.t03': 0.010431289, 'q.r.t04': 0.00061812403, 'q.r.t05': 0.001955223, 'q.r.t06': 0.0029180527, 'q.r.t07': 0.004134178, 'q.r.t08': 0.004172579, 'q.r.t09': 0.0038026003, 'q.r.t10': 0.0027351785, 'q.r.t11': 0.002093114, 'q.r.t12': 0.0014874099, 'q.r.t13': 0.0009103463, 'q.r.t14': 0.0003765793, 'q.r.t15': 0.00013125254, 'q.r.t16': 0.00055929745, 'q.r.t17': 0.005320788, 'q.r.t18': 0.008634376, 'q.r.t19': 0.009828949, 'q.r.t20': 0.010968542, 'q.r.t21': 0.0028365136, 'q.r.t22': 0.0035661696, 'q.r.t23': 0.004570415, 'q.r.t24': 0.003101353, 'q.r.t25': 1.1920929e-07, 'q.r.t26': 1.1920929e-07, 'q.r.t27': 1.1920929e-07, 'q.r.t28': 1.1920929e-07, 'q.r.t29': 2.3841858e-07, 'q.r.t30': 0.0, 'q.r.t31': 2.3841858e-07, 'q.r.t32': 4.7683716e-07, 'q.r.t33': 1.0, 'q.r.t34': 1.0, 'q.r.t35': 1.0, 'q.r.t36': 1.0, 'q.r.t37': 1.0, 'q.r.t38': 1.0, 'q.r.t39': 1.0, 'q.r.t40': 1.0, 'q.r.t41': 0.0034365375, 'q.r.t42': 0.0024123, 'q.r.t43': 0.0017863461, 'q.r.t44': 0.001177845, 'q.r.t45': 0.0006325547, 'q.r.t46': 0.00011847825, 'q.r.t47': 0.00035800555, 'q.r.t48': 0.00075653073, 'q.r.v01': 2.3841858e-07, 'q.r.v02': 0.0, 'q.r.v03': 0.0, 'q.r.v04': 0.0, 'q.r.v05': 0.0, 'q.r.v06': 2.3841858e-07, 'q.r.v07': 0.0, 'q.r.v08': 4.7683716e-07, 'q.r.v09': 2.3841858e-07, 'q.r.v10': 0.0, 'q.r.v11': 0.0, 'q.r.v12': 4.7683716e-07, 'q.r.v13': 2.3841858e-07, 'q.r.v14': 2.3841858e-07, 'q.r.v15': 2.3841858e-07, 'q.r.v16': 0.0, 'q.r.v17': 1.1920929e-07, 'q.r.v18': 0.0, 'q.r.v19': 0.0, 'q.r.v20': 0.0, 'q.r.v21': 0.0, 'q.r.v22': 2.3841858e-07, 'q.r.v23': 2.3841858e-07, 'q.r.v24': 2.3841858e-07, 'q.r.v25': 2.3841858e-07, 'q.r.v26': 0.0, 'q.r.v27': 0.0, 'q.r.v28': 0.0, 'q.r.v29': 0.0, 'q.r.v30': 0.0, 'q.r.v31': 0.0, 'q.r.v32': 0.0, 'q.rot.t01': 1.0584956, 'q.rot.t02': 0.98052406, 'q.rot.t03': 0.7312093, 'q.rot.t04': 0.58357644, 'q.rot.t05': 0.46643734, 'q.rot.t06': 3.425218, 'q.rot.t07': 2.9725244, 'q.rot.t08': 3.2052307, 'q.rot.t09': 3.1751494, 'q.rot.t10': 3.0394974, 'q.rot.t11': 2.6937313, 'q.rot.t12': 0.78438824, 'q.rot.t13': 1.0875078, 'q.rot.t14': 1.0201707, 'q.rot.t15': 1.401351, 'q.rot.t16': 1.7625254, 'q.rot.t17': 0.95655787, 'q.rot.t18': 1.0528246, 'q.rot.t19': 0.90009326, 'q.rot.t20': 0.61450076, 'q.rot.t21': 0.39830786, 'q.rot.t22': 3.1170979, 'q.rot.t23': 3.2306235, 'q.rot.t24': 3.0793357, 'q.rot.t25': 0.19227098, 'q.rot.t26': 0.21665394, 'q.rot.t27': 0.22440991, 'q.rot.t28': 0.18544811, 'q.rot.t29': 0.17042944, 'q.rot.t30': 0.14584532, 'q.rot.t31': 1.2549577, 'q.rot.t32': 1.0159587, 'q.rot.t33': 1.0, 'q.rot.t34': 1.0, 'q.rot.t35': 1.0, 'q.rot.t36': 1.0, 'q.rot.t37': 1.0, 'q.rot.t38': 1.0, 'q.rot.t39': 1.0, 'q.rot.t40': 1.0, 'q.rot.t41': 3.1236048, 'q.rot.t42': 2.9443731, 'q.rot.t43': 1.7801925, 'q.rot.t44': 0.7161447, 'q.rot.t45': 1.4453521, 'q.rot.t46': 1.0040818, 'q.rot.t47': 1.4809836, 'q.rot.t48': 2.0574148, 'q.rot.v01': 0.8667328, 'q.rot.v02': 0.9236444, 'q.rot.v03': 1.8664792, 'q.rot.v04': 1.6288741, 'q.rot.v05': 4.4811645, 'q.rot.v06': 0.5642147, 'q.rot.v07': 14.094088, 'q.rot.v08': 0.9327698, 'q.rot.v09': 0.71124023, 'q.rot.v10': 0.62018, 'q.rot.v11': 4.175873, 'q.rot.v12': 3.3830893, 'q.rot.v13': 4.0332346, 'q.rot.v14': 3.2389736, 'q.rot.v15': 5.1073437, 'q.rot.v16': 7.2665772, 'q.rot.v17': 3.618921, 'q.rot.v18': 6.101798, 'q.rot.v19': 0.7811091, 'q.rot.v20': 0.8486184, 'q.rot.v21': 0.8416907, 'q.rot.v22': 0.85838914, 'q.rot.v23': 0.74766946, 'q.rot.v24': 0.67499083, 'q.rot.v25': 0.7299865, 'q.rot.v26': 0.6621096, 'q.rot.v27': 3.339983, 'q.rot.v28': 0.77593243, 'q.rot.v29': 3.58349, 'q.rot.v30': 3.328677, 'q.rot.v31': 5.3116746, 'q.rot.v32': 4.2585893, 'q.samp.t01': 1.8278166666600861, 'q.samp.t02': 2.24432543994863, 'q.samp.t03': 2.925475357014539, 'q.samp.t04': 3.3236534350407125, 'q.samp.t05': 4.189193476479421, 'q.samp.t06': 5.498161750849272, 'q.samp.t07': 0.748770635601018, 'q.samp.t08': 3.9466705795183987, 'q.samp.t09': 4.047394575226481, 'q.samp.t10': 4.2957084323999535, 'q.samp.t11': 4.1226869639045685, 'q.samp.t12': 0.9451229066343791, 'q.samp.t13': 6.120158542752198, 'q.samp.t14': 5.4753639555954745, 'q.samp.t15': 3.2148174285819047, 'q.samp.t16': 1.7650057186521917, 'q.samp.t17': 1.558962532161423, 'q.samp.t18': 2.215508282296239, 'q.samp.t19': 2.613936911611053, 'q.samp.t20': 3.853801003106092, 'q.samp.t21': 4.782089994052461, 'q.samp.t22': 0.6394803100215085, 'q.samp.t23': 3.7469736060912058, 'q.samp.t24': 4.385356361927468, 'q.samp.t25': 0.45223824235239124, 'q.samp.t26': 0.6101265008338573, 'q.samp.t27': 0.2855191113027562, 'q.samp.t28': 0.29117829746144896, 'q.samp.t29': 2.6704490220858887, 'q.samp.t30': 0.34821789031593003, 'q.samp.t31': 0.7212667569625577, 'q.samp.t32': 0.9644241177863292, 'q.samp.t33': 1.0, 'q.samp.t34': 1.0, 'q.samp.t35': 1.0, 'q.samp.t36': 1.0, 'q.samp.t37': 1.0, 'q.samp.t38': 1.0, 'q.samp.t39': 1.0, 'q.samp.t40': 1.0, 'q.samp.t41': 4.048360394544561, 'q.samp.t42': 4.307179240715854, 'q.samp.t43': 3.035575477992287, 'q.samp.t44': 5.979491004375934, 'q.samp.t45': 6.091165748913468, 'q.samp.t46': 4.642381236358487, 'q.samp.t47': 2.204936868328473, 'q.samp.t48': 1.6467128719518906, 'q.samp.v01': 1.3317353794068154, 'q.samp.v02': 1.798467934624127, 'q.samp.v03': 3.409900627299308, 'q.samp.v04': 3.889371246792467, 'q.samp.v05': 0.5088101752668, 'q.samp.v06': 4.029918819292124, 'q.samp.v07': 0.8302079084461371, 'q.samp.v08': 1.1723608684223459, 'q.samp.v09': 1.02889816447113, 'q.samp.v10': 1.0295128807272045, 'q.samp.v11': 0.8169370869648762, 'q.samp.v12': 1.4433429873798753, 'q.samp.v13': 6.959261163651761, 'q.samp.v14': 5.976713205911762, 'q.samp.v15': 4.642910225187484, 'q.samp.v16': 3.5846413935565113, 'q.samp.v17': 0.8558423438018726, 'q.samp.v18': 1.095670008776145, 'q.samp.v19': 1.4487471011337325, 'q.samp.v20': 2.031226665827341, 'q.samp.v21': 2.570766001646591, 'q.samp.v22': 3.5848818569684804, 'q.samp.v23': 4.928273194756436, 'q.samp.v24': 0.9893506323339352, 'q.samp.v25': 1.0321057240519933, 'q.samp.v26': 0.9299615462627404, 'q.samp.v27': 4.919869045556526, 'q.samp.v28': 0.5547130794851337, 'q.samp.v29': 6.730969079434122, 'q.samp.v30': 5.452255652309661, 'q.samp.v31': 4.223740123709568, 'q.samp.v32': 3.538712426460437, 'q.srot.t01': 1.0311024, 'q.srot.t02': 0.6722238, 'q.srot.t03': 0.46980792, 'q.srot.t04': 0.5960721, 'q.srot.t05': 0.4294759, 'q.srot.t06': 0.10215632, 'q.srot.t07': 0.11512821, 'q.srot.t08': 0.00036778962, 'q.srot.t09': 0.0006583625, 'q.srot.t10': 0.0005792685, 'q.srot.t11': 0.00040228586, 'q.srot.t12': 5.1498184e-05, 'q.srot.t13': 0.18391447, 'q.srot.t14': 0.8582198, 'q.srot.t15': 1.3654097, 'q.srot.t16': 1.1775268, 'q.srot.t17': 2.2514138, 'q.srot.t18': 1.4218524, 'q.srot.t19': 1.2812293, 'q.srot.t20': 0.38439545, 'q.srot.t21': 0.22960888, 'q.srot.t22': 0.09184053, 'q.srot.t23': 0.6463743, 'q.srot.t24': 0.0002877976, 'q.srot.t25': 2.4647539, 'q.srot.t26': 2.7061245, 'q.srot.t27': 1.0458543, 'q.srot.t28': 0.72293454, 'q.srot.t29': 6.174861, 'q.srot.t30': 0.13189287, 'q.srot.t31': 0.00014772954, 'q.srot.t32': 0.03905366, 'q.srot.t33': 1.0, 'q.srot.t34': 1.0, 'q.srot.t35': 1.0, 'q.srot.t36': 1.0, 'q.srot.t37': 1.0, 'q.srot.t38': 1.0, 'q.srot.t39': 1.0, 'q.srot.t40': 1.0, 'q.srot.t41': 0.2395889, 'q.srot.t42': 0.0005133568, 'q.srot.t43': 0.00018991211, 'q.srot.t44': 0.060007676, 'q.srot.t45': 0.50082403, 'q.srot.t46': 1.0221528, 'q.srot.t47': 1.1883096, 'q.srot.t48': 1.0996443, 'q.srot.v01': 1.2831513, 'q.srot.v02': 1.0040214, 'q.srot.v03': 5.392178, 'q.srot.v04': 0.9772943, 'q.srot.v05': 8.558659, 'q.srot.v06': 0.23100762, 'q.srot.v07': 13.519389, 'q.srot.v08': 1.1958808, 'q.srot.v09': 0.83702564, 'q.srot.v10': 0.6908447, 'q.srot.v11': 0.2968232, 'q.srot.v12': 0.33650878, 'q.srot.v13': 1.0185597, 'q.srot.v14': 1.0868621, 'q.srot.v15': 0.951111, 'q.srot.v16': 0.9886242, 'q.srot.v17': 0.98215896, 'q.srot.v18': 0.38937327, 'q.srot.v19': 0.5102488, 'q.srot.v20': 0.56209934, 'q.srot.v21': 0.77125096, 'q.srot.v22': 0.18749185, 'q.srot.v23': 1.3117501e-05, 'q.srot.v24': 0.35519093, 'q.srot.v25': 2.3624363, 'q.srot.v26': 1.7948493, 'q.srot.v27': 0.8193713, 'q.srot.v28': 2.2172928, 'q.srot.v29': 1.0971617, 'q.srot.v30': 1.0949678, 'q.srot.v31': 0.79558593, 'q.srot.v32': 0.7310001, 'q.sti.t01': 2.4535754, 'q.sti.t02': 2.2957687, 'q.sti.t03': 1.8089628, 'q.sti.t04': 1.15774, 'q.sti.t05': 0.7531064, 'q.sti.t06': 0.40843993, 'q.sti.t07': 0.32018137, 'q.sti.t08': 0.3223528, 'q.sti.t09': 0.31266585, 'q.sti.t10': 3.051336, 'q.sti.t11': 3.108616, 'q.sti.t12': 1.7980475, 'q.sti.t13': 2.9057193, 'q.sti.t14': 0.5804816, 'q.sti.t15': 0.73996013, 'q.sti.t16': 0.6059251, 'q.sti.t17': 2.3579688, 'q.sti.t18': 2.44144, 'q.sti.t19': 2.1733184, 'q.sti.t20': 1.4070269, 'q.sti.t21': 0.5494944, 'q.sti.t22': 0.35192227, 'q.sti.t23': 0.32335603, 'q.sti.t24': 3.0409665, 'q.sti.t25': 0.31683165, 'q.sti.t26': 0.29638985, 'q.sti.t27': 0.26263496, 'q.sti.t28': 0.22092822, 'q.sti.t29': 0.18384634, 'q.sti.t30': 0.118961714, 'q.sti.t31': 0.09370826, 'q.sti.t32': 0.07827044, 'q.sti.t33': 1.0, 'q.sti.t34': 1.0, 'q.sti.t35': 1.0, 'q.sti.t36': 1.0, 'q.sti.t37': 1.0, 'q.sti.t38': 1.0, 'q.sti.t39': 1.0, 'q.sti.t40': 1.0, 'q.sti.t41': 0.3004063, 'q.sti.t42': 3.0615451, 'q.sti.t43': 3.1224136, 'q.sti.t44': 1.4283706, 'q.sti.t45': 4.2551994, 'q.sti.t46': 0.7347871, 'q.sti.t47': 0.68417776, 'q.sti.t48': 0.59759253, 'q.sti.v01': 1.9679353, 'q.sti.v02': 1.75872, 'q.sti.v03': 3.2730813, 'q.sti.v04': 0.8892245, 'q.sti.v05': 16.690119, 'q.sti.v06': 0.30256218, 'q.sti.v07': 1.5840794, 'q.sti.v08': 0.21041831, 'q.sti.v09': 2.3881054, 'q.sti.v10': 2.3766034, 'q.sti.v11': 2.240516, 'q.sti.v12': 1.4643832, 'q.sti.v13': 2.4633808, 'q.sti.v14': 2.9543827, 'q.sti.v15': 2.5725179, 'q.sti.v16': 3.0835674, 'q.sti.v17': 1.8559331, 'q.sti.v18': 1.9125468, 'q.sti.v19': 1.7815672, 'q.sti.v20': 1.5355905, 'q.sti.v21': 1.3361585, 'q.sti.v22': 1.0653497, 'q.sti.v23': 0.70936614, 'q.sti.v24': 2.3996193, 'q.sti.v25': 0.26954785, 'q.sti.v26': 3.140912, 'q.sti.v27': 1.736824, 'q.sti.v28': 0.6167115, 'q.sti.v29': 2.828198, 'q.sti.v30': 3.0181115, 'q.sti.v31': 2.251119, 'q.sti.v32': 2.1409545, 'q.svb.t01': 0.8997340144230923, 'q.svb.t02': 6.985911464156428, 'q.svb.t03': 5.9302757762980365, 'q.svb.t04': 5.552703542526393, 'q.svb.t05': 5.043234353294287, 'q.svb.t06': 4.049125600843465, 'q.svb.t07': 2.7640371552445995, 'q.svb.t08': 2.0997353961565777, 'q.svb.t09': 1.0, 'q.svb.t10': 1.0, 'q.svb.t11': 1.0, 'q.svb.t12': 1.0, 'q.svb.t13': 1.0, 'q.svb.t14': 1.0, 'q.svb.t15': 1.0, 'q.svb.t16': 1.0, 'q.svb.t17': 1.0275891398383814, 'q.svb.t18': 0.8117850401277729, 'q.svb.t19': 6.521745072995529, 'q.svb.t20': 6.5354919263538385, 'q.svb.t21': 4.50490513310288, 'q.svb.t22': 4.027246391478892, 'q.svb.t23': 2.3145282321175293, 'q.svb.t24': 1.6806716730304587, 'q.svb.t25': 0.2233537819678367, 'q.svb.t26': 0.23726910551398067, 'q.svb.t27': 0.16608421765721598, 'q.svb.t28': 0.11580685028470158, 'q.svb.t29': 0.10262815066897177, 'q.svb.t30': 0.0999446817529053, 'q.svb.t31': 0.19057071807635784, 'q.svb.t32': 0.16419032471962533, 'q.svb.t33': 1.0, 'q.svb.t34': 1.0, 'q.svb.t35': 1.0, 'q.svb.t36': 1.0, 'q.svb.t37': 1.0, 'q.svb.t38': 1.0, 'q.svb.t39': 1.0, 'q.svb.t40': 1.0, 'q.svb.t41': 1.0, 'q.svb.t42': 1.0, 'q.svb.t43': 1.0, 'q.svb.t44': 1.0, 'q.svb.t45': 1.0, 'q.svb.t46': 1.0, 'q.svb.t47': 1.0, 'q.svb.t48': 1.0, 'q.svb.v01': 1.9507182205044729, 'q.svb.v02': 1.856336761361585, 'q.svb.v03': 1.8078762835420963, 'q.svb.v04': 1.238896867532696, 'q.svb.v05': 1.2679647919659904, 'q.svb.v06': 1.4863509551386316, 'q.svb.v07': 0.8529795947974776, 'q.svb.v08': 1.3883425029999796, 'q.svb.v09': 1.0, 'q.svb.v10': 1.0, 'q.svb.v11': 1.0, 'q.svb.v12': 1.0, 'q.svb.v13': 1.0, 'q.svb.v14': 1.0, 'q.svb.v15': 1.0, 'q.svb.v16': 1.0, 'q.svb.v17': 1.9142400613855244, 'q.svb.v18': 2.0451540413501528, 'q.svb.v19': 1.8436778129620255, 'q.svb.v20': 1.8794649268674797, 'q.svb.v21': 1.8409434766183335, 'q.svb.v22': 1.6964573841967014, 'q.svb.v23': 1.5583344262868304, 'q.svb.v24': 0.9624304424521886, 'q.svb.v25': 1.0, 'q.svb.v26': 1.0, 'q.svb.v27': 1.0, 'q.svb.v28': 1.0, 'q.svb.v29': 1.0, 'q.svb.v30': 1.0, 'q.svb.v31': 1.0, 'q.svb.v32': 1.0, 'q.ti.t01': 2.4535754, 'q.ti.t02': 2.2957687, 'q.ti.t03': 1.8089628, 'q.ti.t04': 1.1577399, 'q.ti.t05': 0.7531064, 'q.ti.t06': 0.4084399, 'q.ti.t07': 0.32018134, 'q.ti.t08': 0.3223528, 'q.ti.t09': 0.31266585, 'q.ti.t10': 3.051336, 'q.ti.t11': 3.108616, 'q.ti.t12': 1.7980475, 'q.ti.t13': 2.9057193, 'q.ti.t14': 0.5804816, 'q.ti.t15': 0.6658041, 'q.ti.t16': 0.5191875, 'q.ti.t17': 2.3579688, 'q.ti.t18': 2.44144, 'q.ti.t19': 2.1733184, 'q.ti.t20': 1.4070269, 'q.ti.t21': 0.5494944, 'q.ti.t22': 0.35192227, 'q.ti.t23': 0.3315027, 'q.ti.t24': 3.0409665, 'q.ti.t25': 0.31408992, 'q.ti.t26': 0.29237756, 'q.ti.t27': 0.26263496, 'q.ti.t28': 0.22092819, 'q.ti.t29': 0.15079777, 'q.ti.t30': 0.11896172, 'q.ti.t31': 0.093708254, 'q.ti.t32': 0.07827044, 'q.ti.t33': 1.0, 'q.ti.t34': 1.0, 'q.ti.t35': 1.0, 'q.ti.t36': 1.0, 'q.ti.t37': 1.0, 'q.ti.t38': 1.0, 'q.ti.t39': 1.0, 'q.ti.t40': 1.0, 'q.ti.t41': 0.3012531, 'q.ti.t42': 3.0615451, 'q.ti.t43': 3.1224134, 'q.ti.t44': 1.4283706, 'q.ti.t45': 4.2551994, 'q.ti.t46': 0.73478717, 'q.ti.t47': 0.67190003, 'q.ti.t48': 0.53835416, 'q.ti.v01': 1.9704082, 'q.ti.v02': 1.7598153, 'q.ti.v03': 1.4061909, 'q.ti.v04': 0.8610058, 'q.ti.v05': 0.55112714, 'q.ti.v06': 0.3030782, 'q.ti.v07': 0.304977, 'q.ti.v08': 2.588073, 'q.ti.v09': 2.692661, 'q.ti.v10': 2.6573627, 'q.ti.v11': 2.2427936, 'q.ti.v12': 1.4644275, 'q.ti.v13': 2.2145152, 'q.ti.v14': 2.2921307, 'q.ti.v15': 2.1862862, 'q.ti.v16': 2.4755995, 'q.ti.v17': 1.855933, 'q.ti.v18': 1.9125466, 'q.ti.v19': 1.7815672, 'q.ti.v20': 1.5355905, 'q.ti.v21': 1.3376175, 'q.ti.v22': 1.066069, 'q.ti.v23': 0.70936614, 'q.ti.v24': 2.762675, 'q.ti.v25': 2.5842628, 'q.ti.v26': 2.3140936, 'q.ti.v27': 1.856948, 'q.ti.v28': 2.6599035, 'q.ti.v29': 2.1095102, 'q.ti.v30': 2.1156027, 'q.ti.v31': 2.1939359, 'q.ti.v32': 2.1414938, 'q.vb.t01': 1.8054542770534823, 'q.vb.t02': 1.3988472866732684, 'q.vb.t03': 1.1891360654875107, 'q.vb.t04': 1.1221230802427213, 'q.vb.t05': 1.0247209990456418, 'q.vb.t06': 0.8322256626761793, 'q.vb.t07': 5.935390754944507, 'q.vb.t08': 4.278789420914912, 'q.vb.t09': 1.0, 'q.vb.t10': 1.0, 'q.vb.t11': 1.0, 'q.vb.t12': 1.0, 'q.vb.t13': 1.0, 'q.vb.t14': 1.0, 'q.vb.t15': 1.0, 'q.vb.t16': 1.0, 'q.vb.t17': 2.058117938493941, 'q.vb.t18': 1.626564932509398, 'q.vb.t19': 1.3095677281996625, 'q.vb.t20': 1.3108774573527733, 'q.vb.t21': 0.9146416752944486, 'q.vb.t22': 0.8108279965731637, 'q.vb.t23': 4.684635113381063, 'q.vb.t24': 3.395796323966792, 'q.vb.t25': 0.44697539137070486, 'q.vb.t26': 0.4746780640056185, 'q.vb.t27': 0.33224354392562244, 'q.vb.t28': 0.2318372982459605, 'q.vb.t29': 0.205323100098657, 'q.vb.t30': 0.1999957102416039, 'q.vb.t31': 0.38138288620146676, 'q.vb.t32': 0.3295175557837457, 'q.vb.t33': 1.0, 'q.vb.t34': 1.0, 'q.vb.t35': 1.0, 'q.vb.t36': 1.0, 'q.vb.t37': 1.0, 'q.vb.t38': 1.0, 'q.vb.t39': 1.0, 'q.vb.t40': 1.0, 'q.vb.t41': 1.0, 'q.vb.t42': 1.0, 'q.vb.t43': 1.0, 'q.vb.t44': 1.0, 'q.vb.t45': 1.0, 'q.vb.t46': 1.0, 'q.vb.t47': 1.0, 'q.vb.t48': 1.0, 'q.vb.v01': 4.067617030329637, 'q.vb.v02': 3.845854410177256, 'q.vb.v03': 3.8838594060787606, 'q.vb.v04': 3.0276088241098926, 'q.vb.v05': 2.6748448636533353, 'q.vb.v06': 3.197922948603975, 'q.vb.v07': 2.774731148457947, 'q.vb.v08': 3.992650050495805, 'q.vb.v09': 1.0, 'q.vb.v10': 1.0, 'q.vb.v11': 1.0, 'q.vb.v12': 1.0, 'q.vb.v13': 1.0, 'q.vb.v14': 1.0, 'q.vb.v15': 1.0, 'q.vb.v16': 1.0, 'q.vb.v17': 4.093724997282765, 'q.vb.v18': 4.182725221129888, 'q.vb.v19': 3.805340422249829, 'q.vb.v20': 3.9687604692385925, 'q.vb.v21': 3.745507787988093, 'q.vb.v22': 3.545866430650735, 'q.vb.v23': 3.406415168779047, 'q.vb.v24': 2.618412062274766, 'q.vb.v25': 1.0, 'q.vb.v26': 1.0, 'q.vb.v27': 1.0, 'q.vb.v28': 1.0, 'q.vb.v29': 1.0, 'q.vb.v30': 1.0, 'q.vb.v31': 1.0, 'q.vb.v32': 1.0, 'q.zeff.t01': 0.76832116, 'q.zeff.t02': 0.6725743, 'q.zeff.t03': 0.622172, 'q.zeff.t04': 0.69144315, 'q.zeff.t05': 0.66306865, 'q.zeff.t06': 0.63524795, 'q.zeff.t07': 0.6445333, 'q.zeff.t08': 0.5581999, 'q.zeff.t09': 0.6491686, 'q.zeff.t10': 0.55527484, 'q.zeff.t11': 0.55758375, 'q.zeff.t12': 0.28706163, 'q.zeff.t13': 0.71183974, 'q.zeff.t14': 1.0831565, 'q.zeff.t15': 1.6148825, 'q.zeff.t16': 2.4571753, 'q.zeff.t17': 0.7548375, 'q.zeff.t18': 0.7295493, 'q.zeff.t19': 0.6324568, 'q.zeff.t20': 0.68453455, 'q.zeff.t21': 0.640632, 'q.zeff.t22': 0.6544229, 'q.zeff.t23': 0.566776, 'q.zeff.t24': 0.57261574, 'q.zeff.t25': 0.58908045, 'q.zeff.t26': 0.5586194, 'q.zeff.t27': 0.4326587, 'q.zeff.t28': 0.2917027, 'q.zeff.t29': 0.24200453, 'q.zeff.t30': 0.30820745, 'q.zeff.t31': 0.3932795, 'q.zeff.t32': 0.26135483, 'q.zeff.t33': 1.0, 'q.zeff.t34': 1.0, 'q.zeff.t35': 1.0, 'q.zeff.t36': 1.0, 'q.zeff.t37': 1.0, 'q.zeff.t38': 1.0, 'q.zeff.t39': 1.0, 'q.zeff.t40': 1.0, 'q.zeff.t41': 0.6410587, 'q.zeff.t42': 0.5368929, 'q.zeff.t43': 0.40329102, 'q.zeff.t44': 0.37910998, 'q.zeff.t45': 0.9406515, 'q.zeff.t46': 1.3211757, 'q.zeff.t47': 1.8944576, 'q.zeff.t48': 3.8056843, 'q.zeff.v01': 0.5194677, 'q.zeff.v02': 0.5468265, 'q.zeff.v03': 0.6941144, 'q.zeff.v04': 0.69751495, 'q.zeff.v05': 0.7157603, 'q.zeff.v06': 0.765766, 'q.zeff.v07': 0.1304219, 'q.zeff.v08': 0.1506895, 'q.zeff.v09': 0.18194959, 'q.zeff.v10': 0.178972, 'q.zeff.v11': 0.18110238, 'q.zeff.v12': 0.15738076, 'q.zeff.v13': 0.47138986, 'q.zeff.v14': 0.80100566, 'q.zeff.v15': 1.7389375, 'q.zeff.v16': 3.8318033, 'q.zeff.v17': 0.4431131, 'q.zeff.v18': 0.4535777, 'q.zeff.v19': 0.50072694, 'q.zeff.v20': 0.5563461, 'q.zeff.v21': 0.61304516, 'q.zeff.v22': 0.6877355, 'q.zeff.v23': 0.7212529, 'q.zeff.v24': 0.16137005, 'q.zeff.v25': 0.19995633, 'q.zeff.v26': 0.187712, 'q.zeff.v27': 0.21726152, 'q.zeff.v28': 0.20456865, 'q.zeff.v29': 0.62982565, 'q.zeff.v30': 1.196879, 'q.zeff.v31': 2.625506, 'q.zeff.v32': 5.6546345}, 'mse': {'01': 0.8997145264493658, '02': 0.9291654163670424, '03': 1.2239338806023128, '04': 0.5602967480687685, '05': 0.3764332786100899, '06': 0.7730835293813003, '07': 0.6503995594143259, '08': 0.7151913787936196, '09': 0.8579714801460018, '10': 0.378788922396365, '11': 0.29606603472136706, '12': 1.0436660450210253, '13': 1.0728036367051537, '14': 0.6101377059495593, '15': 0.8534837982265241, '16': 0.502432212540774, '17': 0.5452765165559326, '18': 1.6845556209284998, '19': 3.3770129942721905, '20': 1.5317493984533457, '21': 2.9946678019411683, '22': 5.332477338342127, '23': 3.2333995572250265, '24': 4.341195073298562, '25': 4.668385173251156, '26': 7.0599768651979415, '27': 9.631131496851703, '28': 0.9604864291278, '29': 0.797258619183741, '30': 0.7926435890563741, '31': 0.797595097453551, '32': 1.4052885886784217, '33': 1.2615446896137206, '34': 0.5102796631626082, '35': 0.9580035250831439, '36': 0.7706263528805684, '37': 1.0, '38': 2.7104985803596024, '39': 2.4122857773810087, '40': 2.554536942312624, '41': 0.2854813559866989, '42': 0.3911795893687239, '43': 0.46187127312916704, '44': 0.578843714153426, '45': 1.0, '46': 1.0, '47': 1.0, '48': 1.0, '49': 1.0, '50': 1.0, '51': 1.0, '52': 1.0, '53': 1.0, '54': 1.0, '55': 1.0, '56': 1.0, '57': 1.0, '58': 1.0, '59': 1.0, '60': 1.0, '61': 1.0, '62': 1.0, '63': 1.0, '64': 1.0, '65': 1.0, '66': 1.0, '67': 1.0, '68': 1.0, '69': 1.0}, 'mag': {'dsl.1u180': 1.3665394566817426, 'dsl.2u180': 10.545082880982392, 'dsl.3u180': 0.4670512997884268, 'dsl.4u157': 0.6003884294219104, 'dsl.5u157': 1.6984652593380374, 'dsl.6u157': 1.0, 'mpi.11m067': 0.16656392376417187, 'mpi.11m322': 0.16872222236922385, 'mpi.1a139': 0.18919006284986054, 'mpi.1a322': 0.1763267960824297, 'mpi.1b139': 0.17254195836232136, 'mpi.1b157': 1.5539688684098105, 'mpi.1b322': 0.15165241031322488, 'mpi.1l180': 0.4456833999152836, 'mpi.1u157': 0.24862084655792535, 'mpi.2a067': 1.1742169117850252, 'mpi.2a139': 0.18344302997202044, 'mpi.2a322': 1.17208177223551, 'mpi.2b067': 1.0547360176895806, 'mpi.2b139': 0.16710137273159514, 'mpi.2b322': 1.1300637834928409, 'mpi.2l180': 0.2410919340878551, 'mpi.2u157': 0.29255740195721985, 'mpi.3a139': 0.15860601597627902, 'mpi.3a322': 0.9340032182189721, 'mpi.3b139': 1.4615585884600402, 'mpi.3b322': 1.1964772713334426, 'mpi.3l180': 2.9799546746961822, 'mpi.3u157': 0.639879243198098, 'mpi.4a139': 1.3140751398927613, 'mpi.4a322': 1.0848126643845262, 'mpi.4b139': 1.2404955599258813, 'mpi.4b322': 0.9692929886522644, 'mpi.4u157': 0.4091556358579255, 'mpi.5a139': 1.0785518721210596, 'mpi.5a322': 0.1986547309499558, 'mpi.5b139': 1.307388995370369, 'mpi.5b322': 0.1936168420348276, 'mpi.5u157': 0.27147764237379846, 'mpi.66m067': 1.0378597044287625, 'mpi.66m157': 0.9544356448122954, 'mpi.66m247': 1.0032589900543702, 'mpi.66m322': 0.986994831749115, 'mpi.67a097': 1.0, 'mpi.67a142': 1.0, 'mpi.67a157': 1.0018935837840004, 'mpi.67a322': 0.9721504698190963, 'mpi.67b097': 1.0, 'mpi.67b157': 1.1875425176607401, 'mpi.67b322': 1.18338814999804, 'mpi.6fa322': 1.0468863108642743, 'mpi.6fb142': 1.041421841479903, 'mpi.6fb322': 1.0582899203968752, 'mpi.6na132': 1.0, 'mpi.6na157': 1.2353729724606406, 'mpi.6na322': 1.1966814965476098, 'mpi.6nb157': 0.941266887188394, 'mpi.6nb322': 1.031429454888374, 'mpi.6u157': 0.12009195224367965, 'mpi.79a147': 0.5092794337062649, 'mpi.79b142': 1.1762590972962035, 'mpi.79b322': 0.5865158108253345, 'mpi.79fa322': 0.2818566064304053, 'mpi.79na322': 0.47942723613210503, 'mpi.7fa322': 0.7676198416550705, 'mpi.7fb322': 1.279419640857453, 'mpi.7na322': 1.0447830055326262, 'mpi.7nb142': 0.14201056978950752, 'mpi.7nb322': 0.14581115425296293, 'mpi.7u157': 0.6168873975205311, 'mpi.89a322': 0.25366253286923107, 'mpi.89b322': 0.4878710860839832, 'mpi.8a322': 0.25142685615876437, 'mpi.8b322': 0.9731706828150439, 'mpi.9a322': 11.228151548100886, 'mpi.9b322': 0.47384968969782576, 'psf.1a': 9.569087885095371, 'psf.1b': 0.5347735627468512, 'psf.2a': 0.5774414897331912, 'psf.2b': 0.6193063022070815, 'psf.3a': 5.48762693951259, 'psf.3b': 0.630033009515155, 'psf.4a': 0.22303367114026354, 'psf.4b': 1.162697644996093, 'psf.5a': 0.2512766777233064, 'psf.5b': 0.44175922745525775, 'psf.6fa': 0.7529365048449214, 'psf.6fb': 0.6397176993573206, 'psf.6na': 0.6368994097043048, 'psf.6nb': 0.5472141381542612, 'psf.7fa': 0.5562416936890954, 'psf.7fb': 0.9286073243059854, 'psf.7na': 0.7808351521994187, 'psf.7nb': 0.12139438429365632, 'psf.8a': 0.8993386337308744, 'psf.8b': 0.7687395368402219, 'psf.9a': 1.7846258143297054, 'psf.9b': 0.4260035193627201, 'psi.11m': 0.8011886699219769, 'psi.12a': 0.7544084724675946, 'psi.12b': 1.03222059482355, 'psi.1l': 0.4431949094969371, 'psi.23a': 0.7229740161191612, 'psi.23b': 0.4524705205654875, 'psi.2l': 0.3567416624694692, 'psi.34a': 1.4139371194932087, 'psi.34b': 0.5551877428956922, 'psi.3l': 1.7792188919189982, 'psi.45a': 0.22449820860760264, 'psi.45b': 0.26579316440586764, 'psi.58a': 0.1940212112172824, 'psi.58b': 0.5529876676547044, 'psi.6a': 0.5356894618992404, 'psi.6b': 0.5260144636065444, 'psi.7a': 0.49697892029025176, 'psi.7b': 0.849901708003483, 'psi.89fb': 0.5843777829378225, 'psi.89nb': 0.46304085865712874, 'psi.9a': 1.4760115478643263, 'psi.9b': 1.4537846955287543}, 'mag_hi': {'b1': 1.3629496421149572, 'b2': 1.3929384587464047, 'b3': 2.2186060150490734, 'b4': 2.1444736278439422, 'b5': 1.1156597328809692, 'b6': 1.2276349219153495, 'b7': 0.9332206726617731, 'b8': 2.1721045308180007}, 'profiles': {'alpha': 0.03439208, 'aminor': 0.010762345, 'betan': 0.5475808, 'betap': 0.30260155, 'drsep': 0.22332564, 'edensfit': [1.96998763e+00, 1.96965265e+00, 1.96868539e+00, 1.96714687e+00, + 1.96510017e+00, 1.96261013e+00, 1.95974267e+00, 1.95656383e+00, + 1.95313811e+00, 1.94952929e+00, 1.94579875e+00, 1.94200504e+00, + 1.93819487e+00, 1.93439126e+00, 1.93060589e+00, 1.92684793e+00, + 1.92312622e+00, 1.91944814e+00, 1.91582060e+00, 1.91224897e+00, + 1.90873814e+00, 1.90529084e+00, 1.90191054e+00, 1.89859974e+00, + 1.89536023e+00, 1.89219320e+00, 1.88909829e+00, 1.88607478e+00, + 1.88312042e+00, 1.88023257e+00, 1.87740731e+00, 1.87463987e+00, + 1.87192500e+00, 1.86925650e+00, 1.86662745e+00, 1.86403084e+00, + 1.86145902e+00, 1.85890448e+00, 1.85635984e+00, 1.85381746e+00, + 1.85126996e+00, 1.84871030e+00, 1.84613180e+00, 1.84352839e+00, + 1.84089434e+00, 1.83822453e+00, 1.83551431e+00, 1.83275974e+00, + 1.82995701e+00, 1.82710338e+00, 1.82419658e+00, 1.82123458e+00, + 1.81821609e+00, 1.81513977e+00, 1.81200552e+00, 1.80881310e+00, + 1.80556357e+00, 1.80225837e+00, 1.79889953e+00, 1.79549015e+00, + 1.79203379e+00, 1.78853464e+00, 1.78499770e+00, 1.78142869e+00, + 1.77783406e+00, 1.77422082e+00, 1.77059650e+00, 1.76696920e+00, + 1.76334786e+00, 1.75974202e+00, 1.75616133e+00, 1.75261557e+00, + 1.74911427e+00, 1.74566615e+00, 1.74227989e+00, 1.73896348e+00, + 1.73572397e+00, 1.73256791e+00, 1.72950137e+00, 1.72652948e+00, + 1.72365570e+00, 1.72087967e+00, 1.71819210e+00, 1.71556473e+00, + 1.71292913e+00, 1.71013367e+00, 1.70685840e+00, 1.70244324e+00, + 1.69555545e+00, 1.68355441e+00, 1.66135633e+00, 1.61966860e+00, + 1.54305041e+00, 1.41054392e+00, 1.20511734e+00, 9.35071945e-01, + 6.47390306e-01, 4.05246824e-01, 2.45237321e-01, 1.61884204e-01, + 1.25980809e-01, 1.10554196e-01, 1.02652937e-01, 9.74207893e-02, + 9.33647454e-02, 8.98179933e-02, 8.64018574e-02, 8.28979388e-02, + 7.91824162e-02, 7.51840547e-02, 7.08593726e-02, 6.61757067e-02, + 6.11015074e-02, 5.55998199e-02, 4.96245399e-02, 4.31186408e-02, + 3.60139832e-02, 2.82321181e-02, 1.96857005e-02, 1.02807963e-02, + 2.16195098e-04] , 'etempfit': [7.0288730e-01, 7.0272595e-01, 7.0224518e-01, 7.0145035e-01, + 7.0034713e-01, 6.9894111e-01, 6.9723850e-01, 6.9524544e-01, + 6.9296825e-01, 6.9041371e-01, 6.8758833e-01, 6.8449920e-01, + 6.8115324e-01, 6.7755765e-01, 6.7371988e-01, 6.6964734e-01, + 6.6534752e-01, 6.6082817e-01, 6.5609717e-01, 6.5116239e-01, + 6.4603180e-01, 6.4071363e-01, 6.3521594e-01, 6.2954706e-01, + 6.2371528e-01, 6.1772913e-01, 6.1159682e-01, 6.0532701e-01, + 5.9892821e-01, 5.9240890e-01, 5.8577758e-01, 5.7904285e-01, + 5.7221323e-01, 5.6529707e-01, 5.5830288e-01, 5.5123907e-01, + 5.4411387e-01, 5.3693557e-01, 5.2971214e-01, 5.2245164e-01, + 5.1516193e-01, 5.0785071e-01, 5.0052547e-01, 4.9319375e-01, + 4.8586270e-01, 4.7853994e-01, 4.7123286e-01, 4.6394867e-01, + 4.5669460e-01, 4.4947746e-01, 4.4230407e-01, 4.3518105e-01, + 4.2811471e-01, 4.2111129e-01, 4.1417697e-01, 4.0731752e-01, + 4.0053880e-01, 3.9384654e-01, 3.8724619e-01, 3.8074324e-01, + 3.7434310e-01, 3.6805111e-01, 3.6187318e-01, 3.5581544e-01, + 3.4988433e-01, 3.4408683e-01, 3.3843002e-01, 3.3292112e-01, + 3.2756731e-01, 3.2237598e-01, 3.1735501e-01, 3.1251374e-01, + 3.0786276e-01, 3.0341271e-01, 2.9917404e-01, 2.9515734e-01, + 2.9137287e-01, 2.8783041e-01, 2.8453961e-01, 2.8150916e-01, + 2.7874556e-01, 2.7625063e-01, 2.7401790e-01, 2.7202764e-01, + 2.7023625e-01, 2.6855758e-01, 2.6683477e-01, 2.6479325e-01, + 2.6196671e-01, 2.5758663e-01, 2.5043935e-01, 2.3873729e-01, + 2.2017275e-01, 1.9266720e-01, 1.5628818e-01, 1.1529670e-01, + 7.7055342e-02, 4.7546830e-02, 2.8219867e-02, 1.7210092e-02, + 1.2120394e-02, 1.0050688e-02, 8.5590035e-03, 7.0274780e-03, + 6.6206441e-03, 7.5825211e-03, 9.4528291e-03, 1.1721570e-02, + 1.4058099e-02, 1.6261898e-02, 1.8189194e-02, 1.9726520e-02, + 2.0762024e-02, 2.1199061e-02, 2.0946844e-02, 1.9917488e-02, + 1.8015740e-02, 1.5150971e-02, 1.1239736e-02, 6.1969892e-03, + 3.7178650e-04] , 'gapbot': 0.058352377, 'gapin': 0.23231529, 'gapout': 0.113628775, 'gaptop': 0.01811348, 'idensfit': 0.0, 'itempfit': [1.4651446 , 1.4644012 , 1.4621836 , 1.4585142 , 1.4534181 , + 1.4469208 , 1.4390473 , 1.4298232 , 1.4192779 , 1.407444 , + 1.3943527 , 1.3800374 , 1.3645339 , 1.3478783 , 1.3301079 , + 1.3112607 , 1.291375 , 1.2704924 , 1.2486562 , 1.225912 , + 1.2023073 , 1.1778913 , 1.1527147 , 1.1268293 , 1.100289 , + 1.0731498 , 1.0454705 , 1.0173112 , 0.98873395, 0.95980453, + 0.93059045, 0.9011624 , 0.87159544, 0.84196717, 0.8123588 , + 0.782853 , 0.75353533, 0.72449183, 0.695809 , 0.6675678 , + 0.6398421 , 0.61270183, 0.5862174 , 0.5604574 , 0.535488 , + 0.5113721 , 0.48816785, 0.46592915, 0.44470417, 0.42453328, + 0.40544942, 0.38747716, 0.370631 , 0.3549147 , 0.3403196 , + 0.32682344, 0.31439218, 0.30297902, 0.29252553, 0.2829663 , + 0.27423298, 0.26625463, 0.25896597, 0.25230882, 0.24623303, + 0.24069497, 0.23565643, 0.23108354, 0.22694439, 0.2232065 , + 0.21983862, 0.21681285, 0.21410665, 0.21170434, 0.209596 , + 0.20777357, 0.20622356, 0.20491786, 0.20380457, 0.20280126, + 0.20179972, 0.20067552, 0.19930044, 0.19755366, 0.19532935, + 0.19254011, 0.18911617, 0.18498065, 0.17995428, 0.17379615, + 0.16714436, 0.16128482, 0.15619045, 0.1518294 , 0.14862461, + 0.1469463 , 0.146792 , 0.1476222 , 0.14844745, 0.14832295, + 0.14752342, 0.14637703, 0.14481106, 0.14277145, 0.14021868, + 0.1371228 , 0.13345881, 0.12920247, 0.12432733, 0.11880224, + 0.11259045, 0.10564853, 0.09792653, 0.08936834, 0.07991221, + 0.06949169, 0.05803671, 0.04547529, 0.03173815, 0.0167855 , + 0.00239737] , 'kappa': 0.06537076, 'li': 0.17478785, 'n1rms': 2.589633, 'n2rms': 0.10186008, 'n3rms': 0.9188132, 'pres': [2.1506493 , 2.1088672 , 2.0675251 , 2.026617 , 1.9861356 , + 1.946074 , 1.9064249 , 1.8671813 , 1.8283354 , 1.7898797 , + 1.7518064 , 1.7141078 , 1.6767756 , 1.6398015 , 1.6031774 , + 1.5668947 , 1.5309446 , 1.4953184 , 1.4600072 , 1.4250017 , + 1.3902931 , 1.3558717 , 1.3217281 , 1.2878526 , 1.2542356 , + 1.2208673 , 1.1877376 , 1.1548364 , 1.1221535 , 1.0896788 , + 1.0574017 , 1.0253117 , 0.99339837, 0.9616511 , 0.9300591 , + 0.89861155, 0.8672976 , 0.8361063 , 0.8050268 , 0.7740481 , + 0.743159 , 0.7123486 , 0.68160564, 0.65091914, 0.6202779 , + 0.5896708 , 0.5590867 , 0.5285145 , 0.49794307, 0.46736133, + 0.43675822, 0.40612274, 0.3754439 , 0.3447108 , 0.31391248, + 0.28303817, 0.2520771 , 0.22101861, 0.18985204, 0.1585669 , + 0.12715271, 0.09559914, 0.06389593, 0.0320329 , 0. ], + 'psirz': [[0.14129125, 0.13514577, 0.12965776, ..., 0.12714179, 0.13222972, + 0.13807926], + [0.20120232, 0.1987931 , 0.19507204, ..., 0.184222 , 0.18300481, + 0.18066837], + [0.30478474, 0.3104994 , 0.311999 , ..., 0.28254128, 0.27729964, + 0.2694257 ], + ..., + [0.27281204, 0.3035524 , 0.33305743, ..., 0.31475332, 0.28702724, + 0.25214785], + [0.27448818, 0.3044838 , 0.3332662 , ..., 0.31799787, 0.29113248, + 0.25695613], + [0.2768575 , 0.3063038 , 0.33458984, ..., 0.32361588, 0.29733098, + 0.26356128]] , 'q0': 2.0748863, 'q95': 1.2246795, 'qmin': 1.3033785, 'qpsi': [2.0748863, 1.8750829, 1.7695903, 1.6900963, 1.6287279, 1.5777367, + 1.5348529, 1.4979168, 1.465878 , 1.43738 , 1.4120983, 1.3891954, + 1.368241 , 1.3490714, 1.3313949, 1.3150564, 1.2997528, 1.2855166, + 1.272165 , 1.2596081, 1.247785 , 1.2366158, 1.2260286, 1.2159903, + 1.2064697, 1.1974081, 1.1888005, 1.1805583, 1.1727095, 1.1652246, + 1.158089 , 1.1512678, 1.1447357, 1.1385149, 1.132597 , 1.1269469, + 1.1215913, 1.1164887, 1.111688 , 1.1071881, 1.1029843, 1.0990968, + 1.0954995, 1.0923166, 1.0895271, 1.0871042, 1.085137 , 1.0837414, + 1.0829916, 1.0828401, 1.0835409, 1.0852411, 1.0880446, 1.092187 , + 1.0979781, 1.1055795, 1.1158247, 1.1287743, 1.1455711, 1.1672921, + 1.1954839, 1.2327347, 1.2832315, 1.3472518, 1.4714088], + 'r0': 0.025924455, 'rhoqmin': 1.1380502, 'rmaxis': 0.025924463, 'ssibry': 0.9004214, 'ssimag': 0.07255553, 'tribot': 0.05944906, 'tritop': 0.03267913, 'trotfit': [4.3038993e+00, 4.3013768e+00, 4.2938833e+00, 4.2815661e+00, + 4.2645850e+00, 4.2430863e+00, 4.2172327e+00, 4.1871705e+00, + 4.1529617e+00, 4.1146126e+00, 4.0721712e+00, 4.0257764e+00, + 3.9756086e+00, 3.9218593e+00, 3.8647246e+00, 3.8044009e+00, + 3.7410829e+00, 3.6749783e+00, 3.6063237e+00, 3.5353794e+00, + 3.4624338e+00, 3.3877959e+00, 3.3117704e+00, 3.2346458e+00, + 3.1567075e+00, 3.0782614e+00, 2.9996374e+00, 2.9211895e+00, + 2.8432567e+00, 2.7661304e+00, 2.6900344e+00, 2.6151941e+00, + 2.5418668e+00, 2.4703064e+00, 2.4007568e+00, 2.3334444e+00, + 2.2685466e+00, 2.2062049e+00, 2.1465199e+00, 2.0895536e+00, + 2.0353358e+00, 1.9838686e+00, 1.9351406e+00, 1.8891231e+00, + 1.8457536e+00, 1.8049395e+00, 1.7665749e+00, 1.7305286e+00, + 1.6966435e+00, 1.6647664e+00, 1.6347535e+00, 1.6064662e+00, + 1.5797331e+00, 1.5543585e+00, 1.5301542e+00, 1.5069394e+00, + 1.4845402e+00, 1.4628177e+00, 1.4416800e+00, 1.4210504e+00, + 1.4008757e+00, 1.3811111e+00, 1.3617154e+00, 1.3426477e+00, + 1.3238704e+00, 1.3053502e+00, 1.2870573e+00, 1.2689674e+00, + 1.2510628e+00, 1.2333353e+00, 1.2157863e+00, 1.1984303e+00, + 1.1813067e+00, 1.1644838e+00, 1.1480531e+00, 1.1321242e+00, + 1.1168209e+00, 1.1022693e+00, 1.0886236e+00, 1.0760274e+00, + 1.0645651e+00, 1.0542067e+00, 1.0446072e+00, 1.0348189e+00, + 1.0227785e+00, 1.0043238e+00, 9.7138256e-01, 9.0899360e-01, + 7.9815090e-01, 6.4940232e-01, 5.1652062e-01, 4.3117580e-01, + 3.8775846e-01, 3.6699548e-01, 3.5542968e-01, 3.4825107e-01, + 3.4507245e-01, 3.4649354e-01, 3.5208672e-01, 3.5973561e-01, + 3.6680701e-01, 3.7160060e-01, 3.7320623e-01, 3.7116173e-01, + 3.6532223e-01, 3.5577232e-01, 3.4275833e-01, 3.2663661e-01, + 3.0783349e-01, 2.8681329e-01, 2.6405197e-01, 2.4001014e-01, + 2.1510875e-01, 1.8970183e-01, 1.6404724e-01, 1.3827549e-01, + 1.1235886e-01, 8.6085051e-02, 5.9040837e-02, 3.0611489e-02, + 1.8564142e-05] , 'volume': 0.06316917, 'wmhd': 2.024860638917357, 'zmaxis': 0.10383818, 'zxpt1': 1.0725417, 'zxpt2': 2.9350471}, 'basic': {'bcoil': 4.6244717, 'bt': 0.8028669, 'fs00': 31.765869612441158, 'fs01': 22.103930127270324, 'fs02': 2.157233248366985, 'fs03': 2.2341717610353564, 'fs04': 13.754733556324378, 'fs05': 13.859087172469472, 'fzns': 0.8206904, 'ip': 4.4734545005644994, 'ipsip': 0.4597382, 'iptipp': 4.689705088085923, 'pcbcoil': 0.1039442190804931, 'plasticfix': 0.4755034, 'vloop': 124.28687}, 'actu': {'c139': 71.08737, 'c19': 67.520294, 'c199': 7.2108, 'c259': 7.687822, 'c319': 7.300708, 'c79': 7.1696997, 'e567dn': 10.998907, 'e567up': 10.963783, 'e89dn': 87.3974, 'e89up': 87.5341, 'echpwr': 0.0, 'echpwrc': 0.0, 'ecleifpwrc': 0.0, 'ecleipolang': 9.536743e-07, 'ecleixmfrac': 0.0, 'eclukfpwrc': 0.0, 'eclukpolang': 9.536743e-07, 'eclukxmfrac': 0.0, 'ecoila': 11.069185, 'ecoilb': 87.8532, 'ecr2dfpwrc': 0.0, 'ecr2dpolang': 0.0, 'ecr2dxmfrac': 0.0, 'f1a': 8.936768, 'f1b': 5.3452334, 'f2a': 3.5034702, 'f2b': 2.8610616, 'f3a': 6.852167, 'f3b': 8.75426, 'f4a': 6.3455977, 'f4b': 5.285419, 'f5a': 6.447561, 'f5b': 7.1404305, 'f6a': 11.860106, 'f6b': 7.4348793, 'f7a': 12.896653, 'f7b': 2.3382711, 'f8a': 4.0502615, 'f8b': 15.275248, 'f9a': 4.141747, 'f9b': 5.4552393, 'gasa': 0.60449857, 'gasb': 78.70807, 'gasc': 35.242104, 'gasd': 60.4817, 'gase': 41.555187, 'il150': 3.8155057, 'il210': 4.2960906, 'il270': 5.4875183, 'il30': 4.3568645, 'il330': 3.8101854, 'il90': 54.87622, 'iu150': 4.3568115, 'iu210': 53.2896, 'iu270': 3.7841537, 'iu30': 5.317498, 'iu330': 4.378979, 'iu90': 3.9310224, 'pinjf_15l': 3.3547504973292326, 'pinjf_15r': 0.0, 'pinjf_21l': 3.9103906294176762, 'pinjf_21r': 0.0, 'pinjf_30l': 5.224467948830846, 'pinjf_30r': 11.814817, 'pinjf_33l': 37.990654, 'pinjf_33r': 4.948165165094461, 'tinj_15l': 0.3993036, 'tinj_15r': 0.0, 'tinj_21l': 0.29462504, 'tinj_21r': 0.0, 'tinj_30l': 0.488749, 'tinj_30r': 8.275181, 'tinj_33l': 4.0760055, 'tinj_33r': 0.34154385} + } + +norm_factor_list={'co2_s': {'r0': 10000000000000, 'v1': 100000000000000000, 'v2': 10000000000000, 'v3': 10000000000000}, \ + 'co2_den': {'r0': 10000000000000, 'v1': 100000000000000000, 'v2': 10000000000000, 'v3': 10000000000000}, 'co2_pl': {'r0': 100, 'v1': 10000, 'v2': 1000, 'v3': 1000}, 'ece_cali': {'ece_cali': 1}, 'ece_s': {'ece_s': 1}, 'ts': {'core.dens': 10000000000000000000, 'core.temp': 100, 'divertor.dens': 1000000000000000000, 'divertor.temp': 10, 'tangential.dens': 10000000000000000000, 'tangential.temp': 1000}, 'ts_error': {'core.dens': 100000000000000000, 'core.temp': 10, 'divertor.dens': 100000000000000000, 'divertor.temp': 10, 'tangential.dens': 100000000000000000, 'tangential.temp': 10}, 'ts_rz': {'core.r': 1, 'core.z': 1, 'divertor.r': 1, 'divertor.z': 1, 'tangential.r': 1, 'tangential.z': 0.1}, 'cer': {'q.amp.t01': 10000000000000000, 'q.amp.t02': 10000000000000000, 'q.amp.t03': 100000000000000000, 'q.amp.t04': 100000000000000000, 'q.amp.t05': 100000000000000000, 'q.amp.t06': 100000000000000000, 'q.amp.t07': 100000000000000000, 'q.amp.t08': 100000000000000000, 'q.amp.t09': 100000000000000000, 'q.amp.t10': 100000000000000000, 'q.amp.t11': 100000000000000000, 'q.amp.t12': 10000000000000000, 'q.amp.t13': 10000000000000000, 'q.amp.t14': 1000000000000000, 'q.amp.t15': 1000000000000000, 'q.amp.t16': 1000000000000000, 'q.amp.t17': 10000000000000000, 'q.amp.t18': 10000000000000000, 'q.amp.t19': 10000000000000000, 'q.amp.t20': 100000000000000000, 'q.amp.t21': 100000000000000000, 'q.amp.t22': 100000000000000000, 'q.amp.t23': 100000000000000000, 'q.amp.t24': 100000000000000000, 'q.amp.t25': 10000000000000000, 'q.amp.t26': 10000000000000000, 'q.amp.t27': 10000000000000000, 'q.amp.t28': 10000000000000000, 'q.amp.t29': 10000000000000000, 'q.amp.t30': 10000000000000000, 'q.amp.t31': 100000000000000000, 'q.amp.t32': 100000000000000000, 'q.amp.t33': 1.0, 'q.amp.t34': 1.0, 'q.amp.t35': 1.0, 'q.amp.t36': 1.0, 'q.amp.t37': 1.0, 'q.amp.t38': 1.0, 'q.amp.t39': 1.0, 'q.amp.t40': 1.0, 'q.amp.t41': 100000000000000000, 'q.amp.t42': 100000000000000000, 'q.amp.t43': 100000000000000000, 'q.amp.t44': 10000000000000000, 'q.amp.t45': 1000000000000000, 'q.amp.t46': 1000000000000000, 'q.amp.t47': 1000000000000000, 'q.amp.t48': 1000000000000000, 'q.amp.v01': 10000000000000000, 'q.amp.v02': 10000000000000000, 'q.amp.v03': 10000000000000000, 'q.amp.v04': 100000000000000000, 'q.amp.v05': 100000000000000000, 'q.amp.v06': 100000000000000000, 'q.amp.v07': 100000000000000000, 'q.amp.v08': 100000000000000000, 'q.amp.v09': 100000000000000000, 'q.amp.v10': 100000000000000000, 'q.amp.v11': 100000000000000000, 'q.amp.v12': 10000000000000000, 'q.amp.v13': 10000000000000000, 'q.amp.v14': 10000000000000000, 'q.amp.v15': 10000000000000000, 'q.amp.v16': 10000000000000000, 'q.amp.v17': 10000000000000000, 'q.amp.v18': 10000000000000000, 'q.amp.v19': 10000000000000000, 'q.amp.v20': 10000000000000000, 'q.amp.v21': 10000000000000000, 'q.amp.v22': 10000000000000000, 'q.amp.v23': 100000000000000000, 'q.amp.v24': 100000000000000000, 'q.amp.v25': 100000000000000000, 'q.amp.v26': 100000000000000000, 'q.amp.v27': 100000000000000000, 'q.amp.v28': 10000000000000000, 'q.amp.v29': 10000000000000000, 'q.amp.v30': 10000000000000000, 'q.amp.v31': 10000000000000000, 'q.amp.v32': 10000000000000000, 'q.fz.t01': 1, 'q.fz.t02': 1, 'q.fz.t03': 1, 'q.fz.t04': 1, 'q.fz.t05': 1, 'q.fz.t06': 1, 'q.fz.t07': 1, 'q.fz.t08': 1, 'q.fz.t09': 1, 'q.fz.t10': 1, 'q.fz.t11': 1, 'q.fz.t12': 1, 'q.fz.t13': 1, 'q.fz.t14': 1, 'q.fz.t15': 1, 'q.fz.t16': 1, 'q.fz.t17': 1, 'q.fz.t18': 1, 'q.fz.t19': 1, 'q.fz.t20': 1, 'q.fz.t21': 1, 'q.fz.t22': 1, 'q.fz.t23': 1, 'q.fz.t24': 1, 'q.fz.t25': 10, 'q.fz.t26': 10, 'q.fz.t27': 10, 'q.fz.t28': 10, 'q.fz.t29': 10, 'q.fz.t30': 10, 'q.fz.t31': 10, 'q.fz.t32': 10, 'q.fz.t33': 1.0, 'q.fz.t34': 1.0, 'q.fz.t35': 1.0, 'q.fz.t36': 1.0, 'q.fz.t37': 1.0, 'q.fz.t38': 1.0, 'q.fz.t39': 1.0, 'q.fz.t40': 1.0, 'q.fz.t41': 1, 'q.fz.t42': 1, 'q.fz.t43': 1, 'q.fz.t44': 1, 'q.fz.t45': 1, 'q.fz.t46': 1, 'q.fz.t47': 1, 'q.fz.t48': 1, 'q.fz.v01': 1, 'q.fz.v02': 1, 'q.fz.v03': 1, 'q.fz.v04': 1, 'q.fz.v05': 1, 'q.fz.v06': 1, 'q.fz.v07': 1, 'q.fz.v08': 1, 'q.fz.v09': 1, 'q.fz.v10': 1, 'q.fz.v11': 1, 'q.fz.v12': 1, 'q.fz.v13': 1, 'q.fz.v14': 1, 'q.fz.v15': 1, 'q.fz.v16': 1, 'q.fz.v17': 1, 'q.fz.v18': 1, 'q.fz.v19': 1, 'q.fz.v20': 1, 'q.fz.v21': 1, 'q.fz.v22': 1, 'q.fz.v23': 1, 'q.fz.v24': 1, 'q.fz.v25': 1, 'q.fz.v26': 1, 'q.fz.v27': 1, 'q.fz.v28': 1, 'q.fz.v29': 1, 'q.fz.v30': 1, 'q.fz.v31': 1, 'q.fz.v32': 1, 'q.nz.t01': 1000000000000000000, 'q.nz.t02': 1000000000000000000, 'q.nz.t03': 1000000000000000000, 'q.nz.t04': 1000000000000000000, 'q.nz.t05': 1000000000000000000, 'q.nz.t06': 1000000000000000000, 'q.nz.t07': 1000000000000000000, 'q.nz.t08': 1000000000000000000, 'q.nz.t09': 1000000000000000000, 'q.nz.t10': 1000000000000000000, 'q.nz.t11': 1000000000000000000, 'q.nz.t12': 100000000000000000, 'q.nz.t13': 100000000000000000, 'q.nz.t14': 10000000000000000, 'q.nz.t15': 10000000000000000, 'q.nz.t16': 10000000000000000, 'q.nz.t17': 1000000000000000000, 'q.nz.t18': 1000000000000000000, 'q.nz.t19': 1000000000000000000, 'q.nz.t20': 1000000000000000000, 'q.nz.t21': 1000000000000000000, 'q.nz.t22': 1000000000000000000, 'q.nz.t23': 1000000000000000000, 'q.nz.t24': 1000000000000000000, 'q.nz.t25': 1000000000000000000, 'q.nz.t26': 10000000000000000000, 'q.nz.t27': 1000000000000000000, 'q.nz.t28': 1000000000000000000, 'q.nz.t29': 1000000000000000000, 'q.nz.t30': 1000000000000000000, 'q.nz.t31': 1000000000000000000, 'q.nz.t32': 1000000000000000000, 'q.nz.t33': 1.0, 'q.nz.t34': 1.0, 'q.nz.t35': 1.0, 'q.nz.t36': 1.0, 'q.nz.t37': 1.0, 'q.nz.t38': 1.0, 'q.nz.t39': 1.0, 'q.nz.t40': 1.0, 'q.nz.t41': 1000000000000000000, 'q.nz.t42': 1000000000000000000, 'q.nz.t43': 1000000000000000000, 'q.nz.t44': 100000000000000000, 'q.nz.t45': 100000000000000000, 'q.nz.t46': 10000000000000000, 'q.nz.t47': 10000000000000000, 'q.nz.t48': 10000000000000000, 'q.nz.v01': 100000000000000000, 'q.nz.v02': 100000000000000000, 'q.nz.v03': 1000000000000000000, 'q.nz.v04': 1000000000000000000, 'q.nz.v05': 1000000000000000000, 'q.nz.v06': 1000000000000000000, 'q.nz.v07': 1000000000000000000, 'q.nz.v08': 1000000000000000000, 'q.nz.v09': 1000000000000000000, 'q.nz.v10': 1000000000000000000, 'q.nz.v11': 1000000000000000000, 'q.nz.v12': 100000000000000000, 'q.nz.v13': 100000000000000000, 'q.nz.v14': 10000000000000000, 'q.nz.v15': 10000000000000000, 'q.nz.v16': 10000000000000000, 'q.nz.v17': 100000000000000000, 'q.nz.v18': 100000000000000000, 'q.nz.v19': 100000000000000000, 'q.nz.v20': 100000000000000000, 'q.nz.v21': 1000000000000000000, 'q.nz.v22': 1000000000000000000, 'q.nz.v23': 1000000000000000000, 'q.nz.v24': 1000000000000000000, 'q.nz.v25': 1000000000000000000, 'q.nz.v26': 1000000000000000000, 'q.nz.v27': 1000000000000000000, 'q.nz.v28': 100000000000000000, 'q.nz.v29': 10000000000000000, 'q.nz.v30': 10000000000000000, 'q.nz.v31': 10000000000000000, 'q.nz.v32': 10000000000000000, 'q.phi.t01': 10, 'q.phi.t02': 10, 'q.phi.t03': 10, 'q.phi.t04': 10, 'q.phi.t05': 10, 'q.phi.t06': 10, 'q.phi.t07': 10, 'q.phi.t08': 100, 'q.phi.t09': 100, 'q.phi.t10': 100, 'q.phi.t11': 100, 'q.phi.t12': 100, 'q.phi.t13': 100, 'q.phi.t14': 100, 'q.phi.t15': 100, 'q.phi.t16': 100, 'q.phi.t17': 10, 'q.phi.t18': 10, 'q.phi.t19': 10, 'q.phi.t20': 10, 'q.phi.t21': 10, 'q.phi.t22': 10, 'q.phi.t23': 100, 'q.phi.t24': 100, 'q.phi.t25': 100, 'q.phi.t26': 100, 'q.phi.t27': 100, 'q.phi.t28': 100, 'q.phi.t29': 100, 'q.phi.t30': 100, 'q.phi.t31': 100, 'q.phi.t32': 100, 'q.phi.t33': 1.0, 'q.phi.t34': 1.0, 'q.phi.t35': 1.0, 'q.phi.t36': 1.0, 'q.phi.t37': 1.0, 'q.phi.t38': 1.0, 'q.phi.t39': 1.0, 'q.phi.t40': 1.0, 'q.phi.t41': 100, 'q.phi.t42': 100, 'q.phi.t43': 100, 'q.phi.t44': 100, 'q.phi.t45': 100, 'q.phi.t46': 100, 'q.phi.t47': 100, 'q.phi.t48': 100, 'q.phi.v01': 100, 'q.phi.v02': 100, 'q.phi.v03': 100, 'q.phi.v04': 100, 'q.phi.v05': 100, 'q.phi.v06': 100, 'q.phi.v07': 100, 'q.phi.v08': 100, 'q.phi.v09': 100, 'q.phi.v10': 100, 'q.phi.v11': 100, 'q.phi.v12': 100, 'q.phi.v13': 100, 'q.phi.v14': 100, 'q.phi.v15': 100, 'q.phi.v16': 100, 'q.phi.v17': 100, 'q.phi.v18': 100, 'q.phi.v19': 100, 'q.phi.v20': 100, 'q.phi.v21': 100, 'q.phi.v22': 100, 'q.phi.v23': 100, 'q.phi.v24': 100, 'q.phi.v25': 100, 'q.phi.v26': 100, 'q.phi.v27': 100, 'q.phi.v28': 100, 'q.phi.v29': 100, 'q.phi.v30': 100, 'q.phi.v31': 100, 'q.phi.v32': 100, 'q.r.t01': 1, 'q.r.t02': 1, 'q.r.t03': 1, 'q.r.t04': 1, 'q.r.t05': 1, 'q.r.t06': 1, 'q.r.t07': 1, 'q.r.t08': 1, 'q.r.t09': 1, 'q.r.t10': 1, 'q.r.t11': 1, 'q.r.t12': 1, 'q.r.t13': 1, 'q.r.t14': 1, 'q.r.t15': 1, 'q.r.t16': 1, 'q.r.t17': 1, 'q.r.t18': 1, 'q.r.t19': 1, 'q.r.t20': 1, 'q.r.t21': 1, 'q.r.t22': 1, 'q.r.t23': 1, 'q.r.t24': 1, 'q.r.t25': 1, 'q.r.t26': 1, 'q.r.t27': 1, 'q.r.t28': 1, 'q.r.t29': 1, 'q.r.t30': 1, 'q.r.t31': 1, 'q.r.t32': 1, 'q.r.t33': 1.0, 'q.r.t34': 1.0, 'q.r.t35': 1.0, 'q.r.t36': 1.0, 'q.r.t37': 1.0, 'q.r.t38': 1.0, 'q.r.t39': 1.0, 'q.r.t40': 1.0, 'q.r.t41': 1, 'q.r.t42': 1, 'q.r.t43': 1, 'q.r.t44': 1, 'q.r.t45': 1, 'q.r.t46': 1, 'q.r.t47': 1, 'q.r.t48': 1, 'q.r.v01': 1, 'q.r.v02': 1, 'q.r.v03': 1, 'q.r.v04': 1, 'q.r.v05': 1, 'q.r.v06': 1, 'q.r.v07': 1, 'q.r.v08': 1, 'q.r.v09': 1, 'q.r.v10': 1, 'q.r.v11': 1, 'q.r.v12': 1, 'q.r.v13': 1, 'q.r.v14': 1, 'q.r.v15': 1, 'q.r.v16': 1, 'q.r.v17': 1, 'q.r.v18': 1, 'q.r.v19': 1, 'q.r.v20': 1, 'q.r.v21': 1, 'q.r.v22': 1, 'q.r.v23': 1, 'q.r.v24': 1, 'q.r.v25': 1, 'q.r.v26': 1, 'q.r.v27': 1, 'q.r.v28': 1, 'q.r.v29': 1, 'q.r.v30': 1, 'q.r.v31': 1, 'q.r.v32': 1, 'q.rot.t01': 100, 'q.rot.t02': 100, 'q.rot.t03': 100, 'q.rot.t04': 100, 'q.rot.t05': 100, 'q.rot.t06': 10, 'q.rot.t07': 10, 'q.rot.t08': 10, 'q.rot.t09': 10, 'q.rot.t10': 10, 'q.rot.t11': 10, 'q.rot.t12': 10, 'q.rot.t13': 10, 'q.rot.t14': 10, 'q.rot.t15': 10, 'q.rot.t16': 10, 'q.rot.t17': 100, 'q.rot.t18': 100, 'q.rot.t19': 100, 'q.rot.t20': 100, 'q.rot.t21': 100, 'q.rot.t22': 10, 'q.rot.t23': 10, 'q.rot.t24': 10, 'q.rot.t25': 100, 'q.rot.t26': 100, 'q.rot.t27': 100, 'q.rot.t28': 100, 'q.rot.t29': 100, 'q.rot.t30': 100, 'q.rot.t31': 10, 'q.rot.t32': 10, 'q.rot.t33': 1.0, 'q.rot.t34': 1.0, 'q.rot.t35': 1.0, 'q.rot.t36': 1.0, 'q.rot.t37': 1.0, 'q.rot.t38': 1.0, 'q.rot.t39': 1.0, 'q.rot.t40': 1.0, 'q.rot.t41': 10, 'q.rot.t42': 10, 'q.rot.t43': 10, 'q.rot.t44': 10, 'q.rot.t45': 10, 'q.rot.t46': 10, 'q.rot.t47': 10, 'q.rot.t48': 10, 'q.rot.v01': 10, 'q.rot.v02': 10, 'q.rot.v03': 10, 'q.rot.v04': 10, 'q.rot.v05': 100, 'q.rot.v06': 10, 'q.rot.v07': 10, 'q.rot.v08': 10, 'q.rot.v09': 10, 'q.rot.v10': 10, 'q.rot.v11': 1, 'q.rot.v12': 1, 'q.rot.v13': 1, 'q.rot.v14': 1, 'q.rot.v15': 1, 'q.rot.v16': 1, 'q.rot.v17': 1, 'q.rot.v18': 1, 'q.rot.v19': 10, 'q.rot.v20': 10, 'q.rot.v21': 10, 'q.rot.v22': 10, 'q.rot.v23': 10, 'q.rot.v24': 10, 'q.rot.v25': 10, 'q.rot.v26': 10, 'q.rot.v27': 1, 'q.rot.v28': 10, 'q.rot.v29': 1, 'q.rot.v30': 1, 'q.rot.v31': 1, 'q.rot.v32': 1, 'q.samp.t01': 1000000000000000, 'q.samp.t02': 1000000000000000, 'q.samp.t03': 1000000000000000, 'q.samp.t04': 1000000000000000, 'q.samp.t05': 1000000000000000, 'q.samp.t06': 1000000000000000, 'q.samp.t07': 10000000000000000, 'q.samp.t08': 1000000000000000, 'q.samp.t09': 1000000000000000, 'q.samp.t10': 1000000000000000, 'q.samp.t11': 1000000000000000, 'q.samp.t12': 1000000000000000, 'q.samp.t13': 100000000000000, 'q.samp.t14': 100000000000000, 'q.samp.t15': 100000000000000, 'q.samp.t16': 100000000000000, 'q.samp.t17': 1000000000000000, 'q.samp.t18': 1000000000000000, 'q.samp.t19': 1000000000000000, 'q.samp.t20': 1000000000000000, 'q.samp.t21': 1000000000000000, 'q.samp.t22': 10000000000000000, 'q.samp.t23': 1000000000000000, 'q.samp.t24': 1000000000000000, 'q.samp.t25': 1000000000000000, 'q.samp.t26': 1000000000000000, 'q.samp.t27': 1000000000000000, 'q.samp.t28': 1000000000000000, 'q.samp.t29': 1000000000000000, 'q.samp.t30': 1000000000000000, 'q.samp.t31': 1000000000000000, 'q.samp.t32': 1000000000000000, 'q.samp.t33': 1.0, 'q.samp.t34': 1.0, 'q.samp.t35': 1.0, 'q.samp.t36': 1.0, 'q.samp.t37': 1.0, 'q.samp.t38': 1.0, 'q.samp.t39': 1.0, 'q.samp.t40': 1.0, 'q.samp.t41': 1000000000000000, 'q.samp.t42': 1000000000000000, 'q.samp.t43': 1000000000000000, 'q.samp.t44': 100000000000000, 'q.samp.t45': 100000000000000, 'q.samp.t46': 100000000000000, 'q.samp.t47': 100000000000000, 'q.samp.t48': 100000000000000, 'q.samp.v01': 1000000000000000, 'q.samp.v02': 1000000000000000, 'q.samp.v03': 1000000000000000, 'q.samp.v04': 1000000000000000, 'q.samp.v05': 10000000000000000, 'q.samp.v06': 1000000000000000, 'q.samp.v07': 10000000000000000, 'q.samp.v08': 10000000000000000, 'q.samp.v09': 10000000000000000, 'q.samp.v10': 10000000000000000, 'q.samp.v11': 10000000000000000, 'q.samp.v12': 1000000000000000, 'q.samp.v13': 100000000000000, 'q.samp.v14': 100000000000000, 'q.samp.v15': 100000000000000, 'q.samp.v16': 100000000000000, 'q.samp.v17': 1000000000000000, 'q.samp.v18': 1000000000000000, 'q.samp.v19': 1000000000000000, 'q.samp.v20': 1000000000000000, 'q.samp.v21': 1000000000000000, 'q.samp.v22': 1000000000000000, 'q.samp.v23': 1000000000000000, 'q.samp.v24': 10000000000000000, 'q.samp.v25': 10000000000000000, 'q.samp.v26': 10000000000000000, 'q.samp.v27': 1000000000000000, 'q.samp.v28': 1000000000000000, 'q.samp.v29': 100000000000000, 'q.samp.v30': 100000000000000, 'q.samp.v31': 100000000000000, 'q.samp.v32': 100000000000000, 'q.srot.t01': 1, 'q.srot.t02': 1, 'q.srot.t03': 1, 'q.srot.t04': 1, 'q.srot.t05': 1, 'q.srot.t06': 1, 'q.srot.t07': 1, 'q.srot.t08': 1, 'q.srot.t09': 1, 'q.srot.t10': 1, 'q.srot.t11': 1, 'q.srot.t12': 1, 'q.srot.t13': 1, 'q.srot.t14': 1, 'q.srot.t15': 1, 'q.srot.t16': 1, 'q.srot.t17': 1, 'q.srot.t18': 1, 'q.srot.t19': 1, 'q.srot.t20': 1, 'q.srot.t21': 1, 'q.srot.t22': 1, 'q.srot.t23': 1, 'q.srot.t24': 1, 'q.srot.t25': 1, 'q.srot.t26': 1, 'q.srot.t27': 1, 'q.srot.t28': 1, 'q.srot.t29': 1, 'q.srot.t30': 1, 'q.srot.t31': 1, 'q.srot.t32': 1, 'q.srot.t33': 1.0, 'q.srot.t34': 1.0, 'q.srot.t35': 1.0, 'q.srot.t36': 1.0, 'q.srot.t37': 1.0, 'q.srot.t38': 1.0, 'q.srot.t39': 1.0, 'q.srot.t40': 1.0, 'q.srot.t41': 1, 'q.srot.t42': 1, 'q.srot.t43': 1, 'q.srot.t44': 1, 'q.srot.t45': 1, 'q.srot.t46': 1, 'q.srot.t47': 1, 'q.srot.t48': 1, 'q.srot.v01': 1, 'q.srot.v02': 1, 'q.srot.v03': 1, 'q.srot.v04': 1, 'q.srot.v05': 100, 'q.srot.v06': 1, 'q.srot.v07': 1, 'q.srot.v08': 1, 'q.srot.v09': 1, 'q.srot.v10': 1, 'q.srot.v11': 1, 'q.srot.v12': 1, 'q.srot.v13': 1, 'q.srot.v14': 1, 'q.srot.v15': 1, 'q.srot.v16': 1, 'q.srot.v17': 1, 'q.srot.v18': 1, 'q.srot.v19': 1, 'q.srot.v20': 1, 'q.srot.v21': 1, 'q.srot.v22': 1, 'q.srot.v23': 1, 'q.srot.v24': 1, 'q.srot.v25': 1, 'q.srot.v26': 1, 'q.srot.v27': 1, 'q.srot.v28': 1, 'q.srot.v29': 1, 'q.srot.v30': 1, 'q.srot.v31': 1, 'q.srot.v32': 1, 'q.sti.t01': 100, 'q.sti.t02': 100, 'q.sti.t03': 100, 'q.sti.t04': 100, 'q.sti.t05': 100, 'q.sti.t06': 100, 'q.sti.t07': 100, 'q.sti.t08': 100, 'q.sti.t09': 100, 'q.sti.t10': 10, 'q.sti.t11': 10, 'q.sti.t12': 10, 'q.sti.t13': 10, 'q.sti.t14': 100, 'q.sti.t15': 100, 'q.sti.t16': 100, 'q.sti.t17': 100, 'q.sti.t18': 100, 'q.sti.t19': 100, 'q.sti.t20': 100, 'q.sti.t21': 100, 'q.sti.t22': 100, 'q.sti.t23': 100, 'q.sti.t24': 10, 'q.sti.t25': 100, 'q.sti.t26': 100, 'q.sti.t27': 100, 'q.sti.t28': 100, 'q.sti.t29': 100, 'q.sti.t30': 100, 'q.sti.t31': 100, 'q.sti.t32': 100, 'q.sti.t33': 1.0, 'q.sti.t34': 1.0, 'q.sti.t35': 1.0, 'q.sti.t36': 1.0, 'q.sti.t37': 1.0, 'q.sti.t38': 1.0, 'q.sti.t39': 1.0, 'q.sti.t40': 1.0, 'q.sti.t41': 100, 'q.sti.t42': 10, 'q.sti.t43': 10, 'q.sti.t44': 10, 'q.sti.t45': 10, 'q.sti.t46': 100, 'q.sti.t47': 100, 'q.sti.t48': 100, 'q.sti.v01': 100, 'q.sti.v02': 100, 'q.sti.v03': 100, 'q.sti.v04': 100, 'q.sti.v05': 1000, 'q.sti.v06': 100, 'q.sti.v07': 100, 'q.sti.v08': 100, 'q.sti.v09': 10, 'q.sti.v10': 10, 'q.sti.v11': 10, 'q.sti.v12': 10, 'q.sti.v13': 10, 'q.sti.v14': 10, 'q.sti.v15': 10, 'q.sti.v16': 10, 'q.sti.v17': 100, 'q.sti.v18': 100, 'q.sti.v19': 100, 'q.sti.v20': 100, 'q.sti.v21': 100, 'q.sti.v22': 100, 'q.sti.v23': 100, 'q.sti.v24': 10, 'q.sti.v25': 100, 'q.sti.v26': 10, 'q.sti.v27': 10, 'q.sti.v28': 100, 'q.sti.v29': 10, 'q.sti.v30': 10, 'q.sti.v31': 10, 'q.sti.v32': 10, 'q.svb.t01': 100000000000000, 'q.svb.t02': 10000000000000, 'q.svb.t03': 10000000000000, 'q.svb.t04': 10000000000000, 'q.svb.t05': 10000000000000, 'q.svb.t06': 10000000000000, 'q.svb.t07': 10000000000000, 'q.svb.t08': 10000000000000, 'q.svb.t09': 1.0, 'q.svb.t10': 1.0, 'q.svb.t11': 1.0, 'q.svb.t12': 1.0, 'q.svb.t13': 1.0, 'q.svb.t14': 1.0, 'q.svb.t15': 1.0, 'q.svb.t16': 1.0, 'q.svb.t17': 100000000000000, 'q.svb.t18': 100000000000000, 'q.svb.t19': 10000000000000, 'q.svb.t20': 10000000000000, 'q.svb.t21': 10000000000000, 'q.svb.t22': 10000000000000, 'q.svb.t23': 10000000000000, 'q.svb.t24': 10000000000000, 'q.svb.t25': 100000000000000, 'q.svb.t26': 100000000000000, 'q.svb.t27': 100000000000000, 'q.svb.t28': 100000000000000, 'q.svb.t29': 100000000000000, 'q.svb.t30': 100000000000000, 'q.svb.t31': 100000000000000, 'q.svb.t32': 100000000000000, 'q.svb.t33': 1.0, 'q.svb.t34': 1.0, 'q.svb.t35': 1.0, 'q.svb.t36': 1.0, 'q.svb.t37': 1.0, 'q.svb.t38': 1.0, 'q.svb.t39': 1.0, 'q.svb.t40': 1.0, 'q.svb.t41': 1.0, 'q.svb.t42': 1.0, 'q.svb.t43': 1.0, 'q.svb.t44': 1.0, 'q.svb.t45': 1.0, 'q.svb.t46': 1.0, 'q.svb.t47': 1.0, 'q.svb.t48': 1.0, 'q.svb.v01': 10000000000000, 'q.svb.v02': 10000000000000, 'q.svb.v03': 10000000000000, 'q.svb.v04': 10000000000000, 'q.svb.v05': 10000000000000, 'q.svb.v06': 10000000000000, 'q.svb.v07': 10000000000000, 'q.svb.v08': 10000000000000, 'q.svb.v09': 1.0, 'q.svb.v10': 1.0, 'q.svb.v11': 1.0, 'q.svb.v12': 1.0, 'q.svb.v13': 1.0, 'q.svb.v14': 1.0, 'q.svb.v15': 1.0, 'q.svb.v16': 1.0, 'q.svb.v17': 10000000000000, 'q.svb.v18': 10000000000000, 'q.svb.v19': 10000000000000, 'q.svb.v20': 10000000000000, 'q.svb.v21': 10000000000000, 'q.svb.v22': 10000000000000, 'q.svb.v23': 10000000000000, 'q.svb.v24': 10000000000000, 'q.svb.v25': 1.0, 'q.svb.v26': 1.0, 'q.svb.v27': 1.0, 'q.svb.v28': 1.0, 'q.svb.v29': 1.0, 'q.svb.v30': 1.0, 'q.svb.v31': 1.0, 'q.svb.v32': 1.0, 'q.ti.t01': 1000, 'q.ti.t02': 1000, 'q.ti.t03': 1000, 'q.ti.t04': 1000, 'q.ti.t05': 1000, 'q.ti.t06': 1000, 'q.ti.t07': 1000, 'q.ti.t08': 1000, 'q.ti.t09': 1000, 'q.ti.t10': 100, 'q.ti.t11': 100, 'q.ti.t12': 100, 'q.ti.t13': 100, 'q.ti.t14': 1000, 'q.ti.t15': 1000, 'q.ti.t16': 1000, 'q.ti.t17': 1000, 'q.ti.t18': 1000, 'q.ti.t19': 1000, 'q.ti.t20': 1000, 'q.ti.t21': 1000, 'q.ti.t22': 1000, 'q.ti.t23': 1000, 'q.ti.t24': 100, 'q.ti.t25': 1000, 'q.ti.t26': 1000, 'q.ti.t27': 1000, 'q.ti.t28': 1000, 'q.ti.t29': 1000, 'q.ti.t30': 1000, 'q.ti.t31': 1000, 'q.ti.t32': 1000, 'q.ti.t33': 1.0, 'q.ti.t34': 1.0, 'q.ti.t35': 1.0, 'q.ti.t36': 1.0, 'q.ti.t37': 1.0, 'q.ti.t38': 1.0, 'q.ti.t39': 1.0, 'q.ti.t40': 1.0, 'q.ti.t41': 1000, 'q.ti.t42': 100, 'q.ti.t43': 100, 'q.ti.t44': 100, 'q.ti.t45': 100, 'q.ti.t46': 1000, 'q.ti.t47': 1000, 'q.ti.t48': 1000, 'q.ti.v01': 1000, 'q.ti.v02': 1000, 'q.ti.v03': 1000, 'q.ti.v04': 1000, 'q.ti.v05': 1000, 'q.ti.v06': 1000, 'q.ti.v07': 1000, 'q.ti.v08': 100, 'q.ti.v09': 100, 'q.ti.v10': 100, 'q.ti.v11': 100, 'q.ti.v12': 100, 'q.ti.v13': 100, 'q.ti.v14': 100, 'q.ti.v15': 100, 'q.ti.v16': 100, 'q.ti.v17': 1000, 'q.ti.v18': 1000, 'q.ti.v19': 1000, 'q.ti.v20': 1000, 'q.ti.v21': 1000, 'q.ti.v22': 1000, 'q.ti.v23': 1000, 'q.ti.v24': 100, 'q.ti.v25': 100, 'q.ti.v26': 100, 'q.ti.v27': 100, 'q.ti.v28': 100, 'q.ti.v29': 100, 'q.ti.v30': 100, 'q.ti.v31': 100, 'q.ti.v32': 100, 'q.vb.t01': 1000000000000000, 'q.vb.t02': 1000000000000000, 'q.vb.t03': 1000000000000000, 'q.vb.t04': 1000000000000000, 'q.vb.t05': 1000000000000000, 'q.vb.t06': 1000000000000000, 'q.vb.t07': 100000000000000, 'q.vb.t08': 100000000000000, 'q.vb.t09': 1.0, 'q.vb.t10': 1.0, 'q.vb.t11': 1.0, 'q.vb.t12': 1.0, 'q.vb.t13': 1.0, 'q.vb.t14': 1.0, 'q.vb.t15': 1.0, 'q.vb.t16': 1.0, 'q.vb.t17': 1000000000000000, 'q.vb.t18': 1000000000000000, 'q.vb.t19': 1000000000000000, 'q.vb.t20': 1000000000000000, 'q.vb.t21': 1000000000000000, 'q.vb.t22': 1000000000000000, 'q.vb.t23': 100000000000000, 'q.vb.t24': 100000000000000, 'q.vb.t25': 1000000000000000, 'q.vb.t26': 1000000000000000, 'q.vb.t27': 1000000000000000, 'q.vb.t28': 1000000000000000, 'q.vb.t29': 1000000000000000, 'q.vb.t30': 1000000000000000, 'q.vb.t31': 1000000000000000, 'q.vb.t32': 1000000000000000, 'q.vb.t33': 1.0, 'q.vb.t34': 1.0, 'q.vb.t35': 1.0, 'q.vb.t36': 1.0, 'q.vb.t37': 1.0, 'q.vb.t38': 1.0, 'q.vb.t39': 1.0, 'q.vb.t40': 1.0, 'q.vb.t41': 1.0, 'q.vb.t42': 1.0, 'q.vb.t43': 1.0, 'q.vb.t44': 1.0, 'q.vb.t45': 1.0, 'q.vb.t46': 1.0, 'q.vb.t47': 1.0, 'q.vb.t48': 1.0, 'q.vb.v01': 100000000000000, 'q.vb.v02': 100000000000000, 'q.vb.v03': 100000000000000, 'q.vb.v04': 100000000000000, 'q.vb.v05': 100000000000000, 'q.vb.v06': 100000000000000, 'q.vb.v07': 100000000000000, 'q.vb.v08': 100000000000000, 'q.vb.v09': 1.0, 'q.vb.v10': 1.0, 'q.vb.v11': 1.0, 'q.vb.v12': 1.0, 'q.vb.v13': 1.0, 'q.vb.v14': 1.0, 'q.vb.v15': 1.0, 'q.vb.v16': 1.0, 'q.vb.v17': 100000000000000, 'q.vb.v18': 100000000000000, 'q.vb.v19': 100000000000000, 'q.vb.v20': 100000000000000, 'q.vb.v21': 100000000000000, 'q.vb.v22': 100000000000000, 'q.vb.v23': 100000000000000, 'q.vb.v24': 100000000000000, 'q.vb.v25': 1.0, 'q.vb.v26': 1.0, 'q.vb.v27': 1.0, 'q.vb.v28': 1.0, 'q.vb.v29': 1.0, 'q.vb.v30': 1.0, 'q.vb.v31': 1.0, 'q.vb.v32': 1.0, 'q.zeff.t01': 1, 'q.zeff.t02': 1, 'q.zeff.t03': 1, 'q.zeff.t04': 1, 'q.zeff.t05': 1, 'q.zeff.t06': 1, 'q.zeff.t07': 1, 'q.zeff.t08': 1, 'q.zeff.t09': 1, 'q.zeff.t10': 1, 'q.zeff.t11': 1, 'q.zeff.t12': 1, 'q.zeff.t13': 1, 'q.zeff.t14': 1, 'q.zeff.t15': 1, 'q.zeff.t16': 1, 'q.zeff.t17': 1, 'q.zeff.t18': 1, 'q.zeff.t19': 1, 'q.zeff.t20': 1, 'q.zeff.t21': 1, 'q.zeff.t22': 1, 'q.zeff.t23': 1, 'q.zeff.t24': 1, 'q.zeff.t25': 1, 'q.zeff.t26': 1, 'q.zeff.t27': 1, 'q.zeff.t28': 1, 'q.zeff.t29': 1, 'q.zeff.t30': 1, 'q.zeff.t31': 1, 'q.zeff.t32': 1, 'q.zeff.t33': 1.0, 'q.zeff.t34': 1.0, 'q.zeff.t35': 1.0, 'q.zeff.t36': 1.0, 'q.zeff.t37': 1.0, 'q.zeff.t38': 1.0, 'q.zeff.t39': 1.0, 'q.zeff.t40': 1.0, 'q.zeff.t41': 1, 'q.zeff.t42': 1, 'q.zeff.t43': 1, 'q.zeff.t44': 1, 'q.zeff.t45': 1, 'q.zeff.t46': 1, 'q.zeff.t47': 1, 'q.zeff.t48': 1, 'q.zeff.v01': 1, 'q.zeff.v02': 1, 'q.zeff.v03': 1, 'q.zeff.v04': 1, 'q.zeff.v05': 1, 'q.zeff.v06': 1, 'q.zeff.v07': 1, 'q.zeff.v08': 1, 'q.zeff.v09': 1, 'q.zeff.v10': 1, 'q.zeff.v11': 1, 'q.zeff.v12': 1, 'q.zeff.v13': 1, 'q.zeff.v14': 1, 'q.zeff.v15': 1, 'q.zeff.v16': 1, 'q.zeff.v17': 1, 'q.zeff.v18': 1, 'q.zeff.v19': 1, 'q.zeff.v20': 1, 'q.zeff.v21': 1, 'q.zeff.v22': 1, 'q.zeff.v23': 1, 'q.zeff.v24': 1, 'q.zeff.v25': 1, 'q.zeff.v26': 1, 'q.zeff.v27': 1, 'q.zeff.v28': 1, 'q.zeff.v29': 1, 'q.zeff.v30': 1, 'q.zeff.v31': 1, 'q.zeff.v32': 1}, 'mse': {'01': 1, '02': 1, '03': 1, '04': 1, '05': 1, '06': 1, '07': 1, '08': 1, '09': 1, '10': 1, '11': 1, '12': 1, '13': 1, '14': 1, '15': 1, '16': 1, '17': 1, '18': 1, '19': 1, '20': 1, '21': 1, '22': 1, '23': 1, '24': 1, '25': 1, '26': 1, '27': 0.1, '28': 1, '29': 1, '30': 1, '31': 1, '32': 1, '33': 1, '34': 1, '35': 1, '36': 1, '37': 1.0, '38': 10, '39': 10, '40': 10, '41': 1, '42': 1, '43': 1, '44': 1, '45': 1.0, '46': 1.0, '47': 1.0, '48': 1.0, '49': 1.0, '50': 1.0, '51': 1.0, '52': 1.0, '53': 1.0, '54': 1.0, '55': 1.0, '56': 1.0, '57': 1.0, '58': 1.0, '59': 1.0, '60': 1.0, '61': 1.0, '62': 1.0, '63': 1.0, '64': 1.0, '65': 1.0, '66': 1.0, '67': 1.0, '68': 1.0, '69': 1.0}, 'mag': {'dsl.1u180': 0.01, 'dsl.2u180': 0.001, 'dsl.3u180': 1, 'dsl.4u157': 0.1, 'dsl.5u157': 0.01, 'dsl.6u157': 1.0, 'mpi.11m067': 1, 'mpi.11m322': 1, 'mpi.1a139': 1, 'mpi.1a322': 1, 'mpi.1b139': 1, 'mpi.1b157': 0.1, 'mpi.1b322': 1, 'mpi.1l180': 0.1, 'mpi.1u157': 0.1, 'mpi.2a067': 0.1, 'mpi.2a139': 1, 'mpi.2a322': 0.1, 'mpi.2b067': 0.1, 'mpi.2b139': 1, 'mpi.2b322': 0.1, 'mpi.2l180': 0.1, 'mpi.2u157': 0.1, 'mpi.3a139': 1, 'mpi.3a322': 0.1, 'mpi.3b139': 0.1, 'mpi.3b322': 0.1, 'mpi.3l180': 0.01, 'mpi.3u157': 0.1, 'mpi.4a139': 0.1, 'mpi.4a322': 0.01, 'mpi.4b139': 0.1, 'mpi.4b322': 0.1, 'mpi.4u157': 0.1, 'mpi.5a139': 0.1, 'mpi.5a322': 0.1, 'mpi.5b139': 0.1, 'mpi.5b322': 0.1, 'mpi.5u157': 0.1, 'mpi.66m067': 0.1, 'mpi.66m157': 0.1, 'mpi.66m247': 0.1, 'mpi.66m322': 0.1, 'mpi.67a097': 1.0, 'mpi.67a142': 1.0, 'mpi.67a157': 0.1, 'mpi.67a322': 0.1, 'mpi.67b097': 1.0, 'mpi.67b157': 0.1, 'mpi.67b322': 0.1, 'mpi.6fa322': 0.1, 'mpi.6fb142': 0.1, 'mpi.6fb322': 0.1, 'mpi.6na132': 1.0, 'mpi.6na157': 0.1, 'mpi.6na322': 0.1, 'mpi.6nb157': 0.1, 'mpi.6nb322': 0.1, 'mpi.6u157': 0.1, 'mpi.79a147': 0.1, 'mpi.79b142': 0.1, 'mpi.79b322': 0.1, 'mpi.79fa322': 0.1, 'mpi.79na322': 0.1, 'mpi.7fa322': 0.1, 'mpi.7fb322': 0.1, 'mpi.7na322': 0.1, 'mpi.7nb142': 1, 'mpi.7nb322': 1, 'mpi.7u157': 0.1, 'mpi.89a322': 0.1, 'mpi.89b322': 0.1, 'mpi.8a322': 0.1, 'mpi.8b322': 0.1, 'mpi.9a322': 0.001, 'mpi.9b322': 0.1, 'psf.1a': 0.01, 'psf.1b': 0.01, 'psf.2a': 0.01, 'psf.2b': 0.01, 'psf.3a': 0.001, 'psf.3b': 0.01, 'psf.4a': 0.1, 'psf.4b': 0.01, 'psf.5a': 0.1, 'psf.5b': 0.1, 'psf.6fa': 0.1, 'psf.6fb': 0.01, 'psf.6na': 0.1, 'psf.6nb': 0.1, 'psf.7fa': 0.1, 'psf.7fb': 0.1, 'psf.7na': 0.1, 'psf.7nb': 1, 'psf.8a': 0.01, 'psf.8b': 0.1, 'psf.9a': 0.01, 'psf.9b': 0.1, 'psi.11m': 0.01, 'psi.12a': 0.01, 'psi.12b': 0.01, 'psi.1l': 0.1, 'psi.23a': 0.01, 'psi.23b': 0.01, 'psi.2l': 0.1, 'psi.34a': 0.01, 'psi.34b': 0.01, 'psi.3l': 0.01, 'psi.45a': 0.1, 'psi.45b': 0.1, 'psi.58a': 0.1, 'psi.58b': 0.1, 'psi.6a': 0.1, 'psi.6b': 0.1, 'psi.7a': 0.1, 'psi.7b': 0.1, 'psi.89fb': 0.1, 'psi.89nb': 0.1, 'psi.9a': 0.01, 'psi.9b': 0.01}, 'mag_hi': {'b1': 0.1, 'b2': 0.1, 'b3': 1, 'b4': 1, 'b5': 1, 'b6': 1, 'b7': 1, 'b8': 0.1}, 'profiles': {'alpha': 1, 'aminor': 1, 'betan': 1, 'betap': 1, 'drsep': 1, 'edensfit': 1, 'etempfit': 1, 'gapbot': 1, 'gapin': 0.1, 'gapout': 0.1, 'gaptop': 1, 'idensfit': 1.0, 'itempfit': 1, 'kappa': 1, 'li': 1, 'n1rms': 0.1, 'n2rms': 1, 'n3rms': 0.1, 'pres': 10000, 'psirz': 0.1, 'q0': 1, 'q95': 1, 'qmin': 1, 'qpsi': 1, 'r0': 1, 'rhoqmin': 0.1, 'rmaxis': 1, 'ssibry': 0.1, 'ssimag': 1, 'tribot': 1, 'tritop': 1, 'trotfit': 10, 'volume': 10, 'wmhd': 100000, 'zmaxis': 0.1, 'zxpt1': 1, 'zxpt2': 1}, 'basic': {'bcoil': 10000, 'bt': 1, 'fs00': 100000000000000, 'fs01': 10000000000000, 'fs02': 100000000000000, 'fs03': 1000000000000000, 'fs04': 100000000000000, 'fs05': 10000000000000, 'fzns': 0.1, 'ip': 100000, 'ipsip': 1, 'iptipp': 100000, 'pcbcoil': 100000, 'plasticfix': 1, 'vloop': 0.01}, 'actu': {'c139': 1, 'c19': 1, 'c199': 10, 'c259': 10, 'c319': 10, 'c79': 10, 'e567dn': 1000, 'e567up': 1000, 'e89dn': 100, 'e89up': 100, 'echpwr': 1.0, 'echpwrc': 1.0, 'ecleifpwrc': 1.0, 'ecleipolang': 10, 'ecleixmfrac': 1.0, 'eclukfpwrc': 1.0, 'eclukpolang': 10, 'eclukxmfrac': 1.0, 'ecoila': 1000, 'ecoilb': 100, 'ecr2dfpwrc': 1.0, 'ecr2dpolang': 1.0, 'ecr2dxmfrac': 1.0, 'f1a': 100, 'f1b': 100, 'f2a': 100, 'f2b': 100, 'f3a': 100, 'f3b': 100, 'f4a': 100, 'f4b': 100, 'f5a': 100, 'f5b': 100, 'f6a': 100, 'f6b': 100, 'f7a': 100, 'f7b': 1000, 'f8a': 100, 'f8b': 100, 'f9a': 100, 'f9b': 100, 'gasa': 1, 'gasb': 0.001, 'gasc': 0.001, 'gasd': 0.001, 'gase': 0.001, 'il150': 100, 'il210': 100, 'il270': 10, 'il30': 100, 'il330': 100, 'il90': 1, 'iu150': 100, 'iu210': 1, 'iu270': 100, 'iu30': 10, 'iu330': 100, 'iu90': 100, 'pinjf_15l': 100000, 'pinjf_15r': 1.0, 'pinjf_21l': 100000, 'pinjf_21r': 1.0, 'pinjf_30l': 100000, 'pinjf_30r': 10000, 'pinjf_33l': 10000, 'pinjf_33r': 100000, 'tinj_15l': 1, 'tinj_15r': 1.0, 'tinj_21l': 1, 'tinj_21r': 1.0, 'tinj_30l': 1, 'tinj_30r': 0.01, 'tinj_33l': 0.1, 'tinj_33r': 1} + } + # names of the cyrotrons ech_gytname = ['lei', 'luk', 'r2d'] @@ -35,11 +466,11 @@ 'ts', 'ts_error', 'ts_rz'] no_level = ['ece_cali', 'ece_s'] -file_keys = {'co2_s': ['r0', 'v1', 'v2', 'v3'], - 'co2_den': ['r0', 'v1', 'v2', 'v3'], - 'co2_pl': ['r0', 'v1', 'v2', 'v3'], - 'ece_cali': [], - 'ece_s': [], +file_keys = {'co2_s': {'co2_s': ['r0', 'v1', 'v2', 'v3']}, + 'co2_den': {'co2_den': ['r0', 'v1', 'v2', 'v3']}, + 'co2_pl': {'co2_pl': ['r0', 'v1', 'v2', 'v3']}, + 'ece_cali': {'ece_cali':[]}, + 'ece_s': {'ece_s':[]}, 'ts': {r'{}.{}'.format(area,sig): [r'{}.{}'.format(area,sig)] for area in ['core', 'divertor', 'tangential'] @@ -143,20 +574,113 @@ 'detrend': 'linear', # {'linear', 'constant', False} 'eps': 1e-11} + + class DichargePerp(): """object that contains the functions to manipulate one discharge.""" - def __init__(self, discharge=174823, suffix_list=('co2_s', )): - self.discharge = discharge - self.suffix_list = suffix_list + def __init__(self): + self.file_keys=file_keys + self.avg_list=avg_list + self.std_list=std_list + self.norm_factor_list=norm_factor_list + self.file_normal_size=file_normal_size + + @staticmethod + def file_path_gen(discharge, suffix): + return (f'/scratch/gpfs/EKOLEMEN/big_d3d_data/{str(discharge)[:2]}0000/{discharge}_{suffix}.h5') + + def hdf5_to_dict(self, group): + result = {} + for key in group.keys(): + if isinstance(group[key], h5py.Dataset): + result[key] = group[key][()] + elif isinstance(group[key], h5py.Group): + result[key] = self.hdf5_to_dict(group[key]) + return result + + def order_of_magnitude_normal_factor_calc(self,discharge): + norm_factor_list_tmp={} + for suffix in self.file_keys.keys(): + file_dict=self.get_data(discharge, suffix, norm=False) + norm_factor_list_tmp[suffix]={} + for key in file_dict.keys(): + mean_tmp=abs(np.mean(file_dict[key]['zdata'][:])) + try: + exponent=self.get_order_of_magnitude(mean_tmp) + norm_factor_list_tmp[suffix][key]=10**exponent + except: + norm_factor_list_tmp[suffix][key]=1. + return norm_factor_list_tmp + + def avg_factor_calc(self,discharge): + avg_factor={} + for suffix in self.file_keys.keys(): + file_dict=self.get_data(discharge, suffix, norm=True) + avg_factor[suffix]={} + for key in file_dict.keys(): + data=file_dict[key]['zdata'][:] + avg_tmp=np.mean(data,axis=len(data.shape)-1) + if np.isnan(avg_tmp).any(): + avg_tmp=0. + + avg_factor[suffix][key]=avg_tmp - def file_path_gen(self, discharge, suffix): - return (f'/scratch/gpfs/EKOLEMEN/big_d3d_data/' - f'{str(discharge)[:2]}0000/{discharge}_{suffix}.h5') + return avg_factor - def get_data(self,discharge, suffix): + def std_factor_calc(self,discharge): + std_factor={} + for suffix in self.file_keys.keys(): + file_dict=self.get_data(discharge, suffix, norm=True) + std_factor[suffix]={} + for key in file_dict.keys(): + data=file_dict[key]['zdata'][:] + std_tmp=np.std(data,axis=len(data.shape)-1) + if np.isnan(std_tmp).any(): + std_tmp=1. + std_factor[suffix][key]=std_tmp + + return std_factor + #all: apply tha same avg and mean to all the data + #individual:apply tha individual avg and individual mean to the individual data row + #std_all_avg_individual: apply tha individual avg to the individual data row, but apply the same std to the group + #mode=[all,individual,std_all_avg_individual] + @staticmethod + def norm_data(data,avg_,std_,mode='all'): + avg_=np.array(avg_) + std_=np.array(std_) + if mode == 'all': + std_all=(np.mean(std_**2))**0.5 + avg_all=np.mean(avg_) + elif mode=='std_all_avg_individual': + std_all=(np.mean(std_**2))**0.5 + avg_all=np.expand_dims(avg_,axis=1) + + elif mode=='individual': + std_all=np.expand_dims(avg_,axis=1) + avg_all=np.expand_dims(avg_,axis=1) + + + data_norm=(data-avg_all)/std_all + + return data_norm + + def get_data(self,discharge, suffix, norm=True): discharge_path=self.file_path_gen(discharge, suffix) input_file = h5py.File(discharge_path, 'r') - return input_file + input_dict_tmp = self.hdf5_to_dict(input_file) + if suffix in no_level: + input_dict={suffix:input_dict_tmp} + else: + input_dict=input_dict_tmp + + if norm and (suffix in self.norm_factor_list): + for key in input_dict.keys(): + if self.norm_factor_list[suffix][key]=='log': + input_dict[key]['zdata']=np.log(np.array(input_dict[key]['zdata'][:])) + else: + input_dict[key]['zdata']=np.array(input_dict[key]['zdata'][:])/self.norm_factor_list[suffix][key] + + return input_dict # divide the data into subcategory def data_division(self, input_file, input_suffix): @@ -167,20 +691,37 @@ def data_division(self, input_file, input_suffix): input_multi_level[key] = {key_i: input_file[key_i] for key_i in keys_of_this_category} else: - input_multi_level = {'only': input_file} + input_multi_level = {input_suffix: input_file} return input_multi_level - def get_full_data(self): - file_dict = {} - for suffix in self.suffix_list: - input_file = self.get_data(self.discharge, suffix) - file_dict[suffix] = self.data_division(input_file, suffix) - self.file_dict = file_dict - return file_dict - + + #norm_mode=[no, all,individual,std_all_avg_individual] + #no, means no normalizations + def get_full_data(self, discharge, suffix_list, norm_mode='all'): + all_file_dict = {} + for suffix in suffix_list: + file_dict=self.get_data(discharge, suffix, norm=True) + all_file_dict[suffix]={} + for key in file_dict.keys(): + if norm_mode=='no': + all_file_dict[suffix][key]={'xdata':file_dict[key]['xdata'][:],\ + 'zdata':file_dict[key]['zdata'][:]} + else: + all_file_dict[suffix][key]={'xdata':file_dict[key]['xdata'][:],\ + 'zdata':self.norm_data(file_dict[key]['zdata'][:],\ + self.std_list[suffix][key], + self.avg_list[suffix][key],\ + mode=norm_mode)} + return all_file_dict + + @staticmethod + def get_order_of_magnitude(num): + exponent = int(np.log10(abs(num))) + return exponent + + @staticmethod - def spec_filters(freq, time, amp_f_t, spec_params=spec_params_default, - thr=0.9, gaussblr_win=(31, 3)): + def spec_filters(freq, time, amp_f_t, spec_params=spec_params_default,thr=0.9, gaussblr_win=(31, 3)): def norm(amp_f_t): mn = amp_f_t.mean() std = amp_f_t.std() @@ -234,8 +775,7 @@ def apply_all(freq, time, amp_f_t, spec_params, thr=thr, gaussblr_win=gaussblr_win) @staticmethod - def spectro_calc(sig_time, data, spec_params=spec_params_default, - plot=False): + def spectro_calc(sig_time, data, spec_params=spec_params_default,plot=False): spec_params['fs'] = 1./np.mean(sig_time[1:]-sig_time[:-1]) # default 1024 spec_params['nperseg'] = max(int(0.6*spec_params['fs']), 1) @@ -401,9 +941,80 @@ def time_interp_past_looking(time, data, time_std, mode='extrapolate'): def time_interp(time, data, time_std): return np.interp(time_std, time, data) + + def time_matching(self, discharge=None, suffix_list=None): + if discharge is None: + discharge = self.discharge + if suffix_list is None: + suffix_list = self.suffix_list + for suffix in suffix_list: + file_dict=discharge_obj.get_data(discharge, suffix, norm=True) + + + def time_matching_windows(data): + file_dict=discharge_obj.get_data(self.discharge, suffix, norm=True) + + @staticmethod + def find_plateau(series, window_size=40, threshold=0.1, plot=False): + """ + Finds the start and end times of the plateau region in the given time series. + + Args: + series (pd.Series): Time series data with time as index and values as data. + window_size (int, optional): Window size for rolling average and standard deviation. Default is 40. + threshold (float, optional): Threshold for determining the plateau region. Default is 0.1. + + Returns: + tuple: (t_min, t_max) representing the start and end times of the plateau region. + """ + rolling_avg = series.rolling(window=window_size, center=True).mean() + data_rolling_std = series.rolling(window=window_size, center=True).std() + + # Normalize the rolling standard deviation + normalized_std = data_rolling_std / rolling_avg + + # Find the start and end indices of the plateau region + plateau_start = normalized_std[normalized_std < threshold].index[0] + plateau_end = normalized_std[normalized_std < threshold].index[-1] + + if plot: + plt.clf() + plt.plot(normalized_std.index,normalized_std.values) + plt.axvline(plateau_start,color='red') + plt.axvline(plateau_end,color='red') + plt.show() + + return plateau_start, plateau_end + + def flat_top_finder(self,discharge, window_size=500, plot=False): + file_dict = self.get_data(discharge, 'basic', norm=True) + time = file_dict['ip']['xdata'][:] + data = file_dict['ip']['zdata'][:] + time=time[data>3] + data=data[data>3] + dip = np.gradient(data, time) + + # Convert data and time to a pandas Series + series = pd.Series(data, index=time) + t_max, t_min=self.find_plateau(series,window_size=window_size, threshold=0.01, plot=plot) + + if plot: + plt.clf() + plt.plot(series.index, series.values) + plt.axvline(t_min,color='red') + plt.axvline(t_max,color='red') + + plt.ylim(0,20) + plt.show() + + return t_max, t_min + + def deal_with_missing_data(self): + pass + class DatasetPrep(DichargePerp): - def __init__(self, discharge_search_list, suffix_list): + def __init__(self, discharge_search_list=[174823], suffix_list=['ts']): self.discharge_search_list = discharge_search_list self.suffix_list = suffix_list @@ -429,6 +1040,32 @@ def filter_discharges(self): return discharge_list + def normalization(data): + pass + + def merge_multi_discharge(self,discharge_list_tmp,): + pass + + +class post_processing(): + def smooth_rolling_avg(self, time, data, smooth_point, center_window=10000, edge_window=500, time_spread=5): + indx_min=np.argmin(abs(time-(smooth_point-time_spread))) + indx_max=np.argmin(abs(time-(smooth_point+time_spread))) + smoothed_section=np.zeros(indx_max-indx_min+1) + for i in range(indx_min,indx_max+1): + current_time=time[i] + window_size=center_window-abs(smooth_point-current_time)/time_spread*(center_window-edge_window) + smoothed_section[i-indx_min]=np.mean(data[i-int(window_size/2):i+int(window_size/2)+1]) + return smoothed_section,indx_min,indx_max + + + def smooth_rolling_avg_and_put_back(self, time, data, smooth_point_list, center_window=10000, edge_window=500, time_spread=5): + data_smooth=data.copy() + for smooth_point in smooth_point_list: + smoothed_section,indx_min,indx_max=self.smooth_rolling_avg(time, data, smooth_point, center_window=center_window, edge_window=edge_window, time_spread=time_spread) + data_smooth[indx_min:indx_max+1]=smoothed_section + return data_smooth + class data_obj_rest(): def save_dict_to_hdf5(dictionary, h5file): @@ -439,7 +1076,7 @@ def save_dict_to_hdf5(dictionary, h5file): else: h5file.create_dataset(key, data=value) - def TS_interp_(discharge,write_h5=True,plot=False): + def TS_interp_Z(discharge,write_h5=True,plot=False): TS_Z_min_set = [0.0, 0.03, 0.09, 0.1, 0.15, 0.16, 0.21, 0.22, 0.26, 0.27, 0.28, 0.3, 0.31, 0.32, 0.36, 0.37, 0.39, 0.4, 0.41, 0.42, 0.43, 0.44, 0.45, 0.46, @@ -581,3 +1218,4 @@ def hdf5_generator(discharge_list, h5_profiles, continue return [all_X_tmp] + From 1ba5ff6a0936cde5c3e617def12e20b7590e251a Mon Sep 17 00:00:00 2001 From: maxcurie <47543965+maxtcurie@users.noreply.github.com> Date: Tue, 30 Apr 2024 10:29:13 -0400 Subject: [PATCH 005/103] Time series full pipeline Work Time series full pipeline take suffix, output aligned dict with window. --- examples/Data_fetching/fetch_toksearch.py | 10 +- examples/Dataset_prep/data_prep_obj.py | 348 +++++++++++++++--- .../Dataset_prep/tamplet_dataset_survey.py | 25 ++ .../Dataset_prep/tamplet_discharge_study.py | 52 +++ examples/Dataset_prep/tamplet_spectro.py | 15 + 5 files changed, 400 insertions(+), 50 deletions(-) create mode 100644 examples/Dataset_prep/tamplet_dataset_survey.py create mode 100644 examples/Dataset_prep/tamplet_discharge_study.py create mode 100644 examples/Dataset_prep/tamplet_spectro.py diff --git a/examples/Data_fetching/fetch_toksearch.py b/examples/Data_fetching/fetch_toksearch.py index 1aade03..4626cb8 100644 --- a/examples/Data_fetching/fetch_toksearch.py +++ b/examples/Data_fetching/fetch_toksearch.py @@ -339,9 +339,13 @@ def fetch_ece_2d_array_data(path, shots, diag_name): data_h5['zunits']=shot_data[names[0]]['units']['data'] data_tmp=[] for name in names: - if len(shot_data[name]['data'])<=10: + try : + len_tmp=len(shot_data[name]['data']) + if len_tmp<10: + break + except: break - print(len(shot_data[name]['data'])) + #print(len(shot_data[name]['data'])) data_tmp.append(shot_data[name]['data'][:len(data_h5['xdata'])]) data_tmp=np.array(data_tmp,dtype='float') @@ -365,8 +369,6 @@ def fetch_ece_2d_array_data(path, shots, diag_name): with h5py.File(f'{path}{shot}_{diag_name}.h5', 'w') as h5file: save_dict_to_hdf5(data_h5, h5file) - if 1==0: - pass if n % interval == 0: size_limiter_sleep(size_GB=size_GB) print(f'shot={shot}') diff --git a/examples/Dataset_prep/data_prep_obj.py b/examples/Dataset_prep/data_prep_obj.py index 2420e4d..6b4d670 100644 --- a/examples/Dataset_prep/data_prep_obj.py +++ b/examples/Dataset_prep/data_prep_obj.py @@ -714,12 +714,12 @@ def get_full_data(self, discharge, suffix_list, norm_mode='all'): mode=norm_mode)} return all_file_dict + @staticmethod def get_order_of_magnitude(num): exponent = int(np.log10(abs(num))) return exponent - @staticmethod def spec_filters(freq, time, amp_f_t, spec_params=spec_params_default,thr=0.9, gaussblr_win=(31, 3)): def norm(amp_f_t): @@ -821,7 +821,22 @@ def time_serie_plot(dict): plt.show() @staticmethod - def time_matching_merge_asof_1d(time1, data1, time_std): + def cut_time(time, data, t_min, t_max): + t_indx_min=np.argmin(abs(np.array(time)-t_min)) + t_indx_max=np.argmin(abs(np.array(time)-t_max)) + + return time[t_indx_min:t_indx_max], data[...,t_indx_min:t_indx_max] + + + # Function to get windowed data + @staticmethod + def get_windowed_data(df, center_index, window_size=5): + start = max(center_index - window_size, 0) + end = min(center_index + window_size + 1, len(df)) + return df.iloc[start:end].drop(columns=['xdata']) + + @staticmethod + def time_matching_merge_asof_1d(time1, data1, time_std, left_window=0, right_window=0): # Convert input arrays to DataFrames df1 = pd.DataFrame({'time1': time1, 'data1': data1}) df2 = pd.DataFrame({'time_std': time_std}) @@ -845,7 +860,7 @@ def time_matching_merge_asof_1d(time1, data1, time_std): return matched_time, matched_data @staticmethod - def time_matching_merge_asof_2d(time1, data1, time_std): + def time_matching_merge_asof_2d(time1, data1, time_std,left_window=0, right_window=0): # Create DataFrames # Note: We assume time1 and time_std are already float arrays # representing time in seconds @@ -880,7 +895,7 @@ def time_matching_merge_asof_2d(time1, data1, time_std): return matched_time, matched_data @staticmethod - def time_matching_binary_search(time1, data1, time_std, mode='2d'): + def time_matching_binary_search(time1, data1, time_std, left_window=0, right_window=0): # Function to find the closest time in time1 to each time in time_std def find_closest(target): # Binary search for the closest timestamp @@ -905,30 +920,188 @@ def find_closest(target): matched_time = [] for t in time_std: closest_idx = find_closest(t) - if mode == '2d': - matched_data.append(data1[:, closest_idx]) + matched_data.append(data1[..., closest_idx-left_window:closest_idx+right_window+1]) + matched_time.append(time1[closest_idx-left_window:closest_idx+right_window+1]) + matched_time=np.array(matched_time) + matched_data=np.array(matched_data) + + return matched_time, matched_data + + @staticmethod + def estimate_closest_indx_constant_dt(left_indx,time,target,dt): + time_distant=target-time[left_indx] + n_time=int(np.floor(time_distant/dt)) + indx_start=left_indx+n_time + return indx_start + + @staticmethod + def estimate_closest_indx_varing_dt(left_indx,time,target,dt,dt_std): + time_distant=target-time[left_indx] + n_time_min=int(np.floor(time_distant/(dt+dt_std))) + n_time_max=int(np.floor(time_distant/(dt-dt_std))) + indx_start=left_indx+n_time_min + indx_end=left_indx+n_time_max + return indx_start,indx_end + + @staticmethod + def find_closest_indx_constant_dt(indx_start,time,target): + if indx_start==0: + return 0 + #on target + if time[indx_start]==target: + return indx_start + #indx_start on the left + elif time[indx_start]target: + i=indx_start + while time[i]>target: + i-=1 + return i + + @staticmethod + def find_closest_indx_binary(time,target,indx_start,indx_end): + # Binary search for the closest timestamp + low, high = indx_start, indx_end + best_idx = low + while low <= high: + mid = (low + high) // 2 + if time[mid] < target: + low = mid + 1 + elif time[mid] > target: + high = mid - 1 else: - matched_data.append(data1[closest_idx]) - matched_time.append(time1[closest_idx]) + return mid + # Update the best index if the current mid is closer to the + # target + if abs(time[mid] - target) < abs(time[best_idx] - target): + best_idx = mid + return best_idx + + @staticmethod + def custom_padding(time, data, left_slicing_indx, right_slicing_indx, padding='last'): + #padding to the left + if left_slicing_indx<0: + padding_config = [(0, 0)] * (data.ndim - 1) + + padd_len=-left_slicing_indx + if padding=='nan': + data_tmp=numpy.pad(data[..., 0:right_slicing_indx+1],padding_config+(padd_len, 0),mode='empty') + time_tmp=numpy.pad(time[0:right_slicing_indx+1],padding_config+(padd_len, 0),mode='empty') + elif padding=='last': + data_tmp=numpy.pad(data[..., 0:right_slicing_indx+1],padding_config+(padd_len, 0),mode='constant',constant_values=data[...,0]) + time_tmp=numpy.pad(time[0:right_slicing_indx+1],padding_config+(padd_len, 0),mode='constant',constant_values=time[0]) + elif padding=='zeros': + data_tmp=numpy.pad(data[..., 0:right_slicing_indx+1],padding_config+(padd_len, 0),mode='constant',constant_values=0) + time_tmp=numpy.pad(time[0:right_slicing_indx+1],padding_config+(padd_len, 0),mode='constant',constant_values=0) + elif (right_slicing_indx+1)>len(time): + padd_len=right_slicing_indx-len(time) + padding_config = [(0, 0)] * (data.ndim - 1) + + if padding=='nan': + data_tmp=numpy.pad(data[..., left_slicing_indx:],padding_config+(0,padd_len),mode='empty') + time_tmp=numpy.pad(time[left_slicing_indx:],padding_config+(0,padd_len),mode='empty') + elif padding=='last': + data_tmp=numpy.pad(data[..., left_slicing_indx:],padding_config+(0,padd_len),mode='constant',constant_values=data[...,-1]) + time_tmp=numpy.pad(time[left_slicing_indx:],padding_config+(0,padd_len),mode='constant',constant_values=time[-1]) + elif padding=='zeros': + data_tmp=numpy.pad(data[..., left_slicing_indx:],padding_config+(0,padd_len),mode='constant',constant_values=0) + time_tmp=numpy.pad(time[left_slicing_indx:],padding_config+(0,padd_len),mode='constant',constant_values=0) + else: + data_tmp=data[..., left_slicing_indx:right_slicing_indx+1] + time_tmp=time[left_slicing_indx:right_slicing_indx+1] + + return time_tmp,data_tmp + + + #assume the time is sorted + def time_matching_dynamic_search(self,time, data, time_std, left_window=0, right_window=0, padding='last'): + + dt,dt_std,if_dt_even=self.check_even_time_spacing(time,time_start=0.01) + + # Align data to time_std + matched_data = [] + matched_time = [] + + left_indx=0 + #dt is constant + #print(f'std_norm={std_norm}') + if if_dt_even: + for target in time_std: + indx_start=self.estimate_closest_indx_constant_dt(left_indx,time,target,dt) + closest_idx=self.find_closest_indx_constant_dt(indx_start,time,target) + + left_slicing_indx=closest_idx-left_window + right_slicing_indx=closest_idx+right_window + time_tmp,data_tmp=self.custom_padding(time, data, left_slicing_indx,right_slicing_indx, padding=padding) + + matched_data.append(data_tmp) + matched_time.append(time_tmp) + + left_indx=closest_idx + + else: + for target in time_std: + indx_start,indx_end=self.estimate_closest_indx_varing_dt(left_indx,time,target,dt,dt_std) + closest_idx=self.find_closest_indx_binary(time,target,indx_start,indx_end) + + left_slicing_indx=closest_idx-left_window + right_slicing_indx=closest_idx+right_window + time_tmp,data_tmp=self.custom_padding(time, data, left_slicing_indx,right_slicing_indx, padding=padding) + + matched_time.append(time_tmp) + matched_data.append(data_tmp) + + + left_indx=closest_idx + + matched_time=np.array(matched_time) + matched_data=np.array(matched_data) + return matched_time, matched_data - @classmethod - def time_matching(cls,time, data, time_std, mode='merge_asof'): - if len(data.shape) == 1: - if mode == 'merge_asof': - return cls.time_matching_merge_asof_1d(time, data, time_std) - elif mode == 'binary': - return cls.time_matching_binary_search(time, data, time_std, - mode='1d') - elif len(data.shape) == 2: - if mode == 'merge_asof': - return cls.time_matching_merge_asof_2d(time, data, time_std) - elif mode == 'binary': - return cls.time_matching_binary_search(time, data, time_std, - mode='2d') + + def time_matching(self,time, data, time_std, left_window=0, right_window=0, mode='merge_asof', padding='last'): + if mode == 'merge_asof': + if len(data.shape) == 1: + return self.time_matching_merge_asof_1d(time, data, time_std,\ + left_window=left_window, right_window=right_window) + elif len(data.shape) == 2: + return self.time_matching_merge_asof_2d(time, data, time_std,\ + left_window=left_window, right_window=right_window) + else: + print('The data has to be 1d array or 2d array') + elif mode == 'binary': + return self.time_matching_binary_search(time, data, time_std,\ + left_window=left_window, right_window=right_window) + elif mode == 'dynamic': + return self.time_matching_dynamic_search(time, data, time_std,\ + left_window=left_window, right_window=right_window,padding=padding) + + @staticmethod + def check_even_time_spacing(time,time_start=0.01): + time_start_indx=np.argmin(abs(time-time_start)) + + time=np.array(time) + dt_tmp=time[time_start_indx+1:time_start_indx+101]-time[time_start_indx:time_start_indx+100] + + + dt=np.mean(dt_tmp) + dt_std=np.std(dt_tmp) + std_norm=dt_std/dt + + if std_norm>0.1**5: + if_dt_even=False else: - print('The data has to be 1d array or 2d array') + if_dt_even=True + + return dt,dt_std,if_dt_even + @staticmethod def time_interp_past_looking(time, data, time_std, mode='extrapolate'): @@ -937,22 +1110,24 @@ def time_interp_past_looking(time, data, time_std, mode='extrapolate'): elif mode == 'fill': pass - @staticmethod - def time_interp(time, data, time_std): - return np.interp(time_std, time, data) - - def time_matching(self, discharge=None, suffix_list=None): - if discharge is None: - discharge = self.discharge - if suffix_list is None: - suffix_list = self.suffix_list - for suffix in suffix_list: - file_dict=discharge_obj.get_data(discharge, suffix, norm=True) + def time_interp_1d(self, time, data, time_std, mode='normal'): + if mode=='normal': + return np.interp(time_std, time, data) + else: + return self.time_interp_past_looking(time, data, time_std, mode) + + def time_interp(self, time, data, time_std, mode='normal'): + if len(data.shape) == 1: + return self.time_interp_1d(time, data, time_std, mode=mode) + elif len(data.shape) == 2: + data_interp=[] + for i in range(data.shape[0]): + data_interp.append(self.time_interp_1d(time, data[i,:], time_std, mode=mode)) - def time_matching_windows(data): - file_dict=discharge_obj.get_data(self.discharge, suffix, norm=True) + return np.array(data_interp) + @staticmethod def find_plateau(series, window_size=40, threshold=0.1, plot=False): @@ -971,7 +1146,9 @@ def find_plateau(series, window_size=40, threshold=0.1, plot=False): data_rolling_std = series.rolling(window=window_size, center=True).std() # Normalize the rolling standard deviation - normalized_std = data_rolling_std / rolling_avg + normalized_std = data_rolling_std / abs(rolling_avg) + if min(normalized_std)>=threshold: + return 0,0 # Find the start and end indices of the plateau region plateau_start = normalized_std[normalized_std < threshold].index[0] @@ -980,31 +1157,38 @@ def find_plateau(series, window_size=40, threshold=0.1, plot=False): if plot: plt.clf() plt.plot(normalized_std.index,normalized_std.values) + plt.xlabel('time (ms)') + plt.ylabel(f'std/avg(window={window_size})') + plt.axvline(plateau_start,color='red') plt.axvline(plateau_end,color='red') plt.show() return plateau_start, plateau_end - def flat_top_finder(self,discharge, window_size=500, plot=False): + def flat_top_finder(self,discharge, window_size=500, threshold=0.01, plot=False): file_dict = self.get_data(discharge, 'basic', norm=True) time = file_dict['ip']['xdata'][:] data = file_dict['ip']['zdata'][:] - time=time[data>3] - data=data[data>3] - dip = np.gradient(data, time) + if max(data)<=3: + t_max, t_min = 0,0 + else: + time=time[data>3] + data=data[data>3] + + dip = np.gradient(data, time) - # Convert data and time to a pandas Series - series = pd.Series(data, index=time) - t_max, t_min=self.find_plateau(series,window_size=window_size, threshold=0.01, plot=plot) + # Convert data and time to a pandas Series + series = pd.Series(data, index=time) + t_max, t_min=self.find_plateau(series,window_size=window_size, threshold=threshold, plot=plot) if plot: plt.clf() plt.plot(series.index, series.values) plt.axvline(t_min,color='red') plt.axvline(t_max,color='red') - - plt.ylim(0,20) + plt.xlabel('time (ms)') + plt.ylabel(r'Plasma current $I_p$') plt.show() return t_max, t_min @@ -1012,6 +1196,75 @@ def flat_top_finder(self,discharge, window_size=500, plot=False): def deal_with_missing_data(self): pass + + def time_series_full_pipeline(self,discharge,suffix_list,time_std_key, time_std=[],custom_time_std=False,Ip_window_size=500, Ip_std_threshold=0.01, plot_Ip=False, norm_mode='all', interp_suffix=[], interp_mode='normal', time_matching_mode='dynamic', left_window={'ece_s':50}, right_window={'ece_s':50}, time_matching_padding='zeros', plot_matched_data=True): + ''' + + time_std: the standard time + + interp_suffix: the list suffix and key to + e.g. interp_suffix=[['ts','core.dens'],['ts','core.dens']] #e.g. [['ts','core.dens'],['ts','core.dens']] + interp_mode='normal' + + time_matching_mode = ['merge_asof','binary','dynamic'] only 'dynamic' works for now (04/29/2024) + + time_matching_padding=['zeros', 'last', 'nan'] + + plot_matched_data: plot the matched data + ''' + + #get all the data and normalize the data + all_file_dict=self.get_full_data(discharge, suffix_list, norm_mode=norm_mode) + if custom_time_std: + pass + else: + time_std=all_file_dict[time_std_key[0]][time_std_key[1]]['xdata'][:] + + t_min, t_max=self.flat_top_finder(discharge, window_size=Ip_window_size, threshold=Ip_std_threshold, plot=plot_Ip) + + #time_interp + for item in interp_suffix: + data_interp=self.time_interp(all_file_dict[item[0]][item[1]]['xdata'][:], \ + all_file_dict[item[0]][item[1]]['zdata'][:], \ + time_std, mode=interp_mode) + all_file_dict[item[0]][item[1]]['xdata']=time_std + all_file_dict[item[0]][item[1]]['zdata']=data_interp + + #cut_time for standard time + [key1,_]=time_std_key + for key2 in all_file_dict[key1].keys(): + time_cut,data_cut=self.cut_time(all_file_dict[key1][key2]['xdata'][:], \ + all_file_dict[key1][key2]['zdata'][:], \ + t_min, t_max) + all_file_dict[key1][key2]={'xdata':time_cut,'zdata':data_cut} + + time_std=time_cut + + #time matching + for key1 in all_file_dict.keys(): + if key1==time_std_key[0] and (not custom_time_std): + continue + for key2 in all_file_dict[key1].keys(): + matched_time, matched_data=self.time_matching(\ + all_file_dict[key1][key2]['xdata'][:], \ + all_file_dict[key1][key2]['zdata'][:], \ + time_std, \ + left_window=left_window[key1], \ + right_window=right_window[key1], \ + mode=time_matching_mode,\ + padding=time_matching_padding) + + all_file_dict[item[0]][item[1]]['xdata']=matched_time + all_file_dict[item[0]][item[1]]['zdata']=matched_data + + if plot_matched_data: + plt.clf() + for i in range(len(matched_time)): + plt.plot(matched_time[i,:],matched_data[i,:,:].T) + plt.xlabel('Time (ms)') + plt.ylabel(f'{key1}-{key2}') + plt.show() + return all_file_dict class DatasetPrep(DichargePerp): def __init__(self, discharge_search_list=[174823], suffix_list=['ts']): @@ -1066,6 +1319,9 @@ def smooth_rolling_avg_and_put_back(self, time, data, smooth_point_list, center_ data_smooth[indx_min:indx_max+1]=smoothed_section return data_smooth + def denorm_data(): + pass + class data_obj_rest(): def save_dict_to_hdf5(dictionary, h5file): diff --git a/examples/Dataset_prep/tamplet_dataset_survey.py b/examples/Dataset_prep/tamplet_dataset_survey.py new file mode 100644 index 0000000..ec88c55 --- /dev/null +++ b/examples/Dataset_prep/tamplet_dataset_survey.py @@ -0,0 +1,25 @@ +import data_prep_obj as data_prep +import pickle + +discharge_min=170000 +discharge_max=200000-1 + +discharge_search_list=range(discharge_min,discharge_max+1) +suffix_list=['ece_cali','co2_pl'] +prep_obj_1=data_prep.DatasetPrep(discharge_search_list, suffix_list) +print(prep_obj_1.discharge_search_list) +print(prep_obj_1.suffix_list) + +discharge_list=prep_obj_1.filter_discharges() +print(discharge_list) + + +with open('co2_ece_discharge.pkl', 'wb') as file: + pickle.dump(discharge_list, file) + +for key in discharge_list.keys(): + print(f'{key}:{len(discharge_list[key])}') + +over_lap=set(discharge_list['co2_pl']) & set(discharge_list['ece_cali']) + +print(f'overlap:{len(over_lap)}') \ No newline at end of file diff --git a/examples/Dataset_prep/tamplet_discharge_study.py b/examples/Dataset_prep/tamplet_discharge_study.py new file mode 100644 index 0000000..6f6998f --- /dev/null +++ b/examples/Dataset_prep/tamplet_discharge_study.py @@ -0,0 +1,52 @@ +import data_prep_obj as data_prep +import matplotlib.pyplot as plt +import numpy as np + +#************start of user block************ +discharge=174823 +suffix_list=['ts','ece_s'] + +#setting for finding flat top +Ip_window_size=500 +Ip_std_threshold=0.01 +plot_Ip=False + +#mode of normalization +norm_mode='all' + +#the key for the standard time [suffix, key] +custom_time_std=False +time_std_key=['ts','core.dens'] +time_std=[] + +#the list suffix and key to e +interp_suffix=[['ts','core.dens'],['ts','core.dens']] #e.g. [['ts','core.dens'],['ts','core.dens']] +interp_mode='normal' + +#time_matching_mode = ['merge_asof','binary','dynamic'] only 'dynamic' works for now (04/29/2024) +time_matching_mode='dynamic' + + +left_window={'ece_s':50} +right_window={'ece_s':50} + +time_matching_padding='zeros' #['zeros', 'last', 'nan'] + +plot_matched_data=True #plot the matched data + +#************end of user block************ +#initalize the object +discharge_obj=data_prep.DichargePerp() + +dict_=discharge_obj.time_series_full_pipeline(discharge,suffix_list,time_std_key,time_std=time_std,\ + custom_time_std=custom_time_std,\ + Ip_window_size=Ip_window_size, \ + Ip_std_threshold=Ip_std_threshold, \ + plot_Ip=plot_Ip, norm_mode=norm_mode, \ + interp_suffix=interp_suffix, \ + interp_mode=interp_mode, \ + time_matching_mode=time_matching_mode, \ + left_window=left_window, \ + right_window=right_window, \ + time_matching_padding=time_matching_padding, \ + plot_matched_data=plot_matched_data) \ No newline at end of file diff --git a/examples/Dataset_prep/tamplet_spectro.py b/examples/Dataset_prep/tamplet_spectro.py new file mode 100644 index 0000000..f51bd85 --- /dev/null +++ b/examples/Dataset_prep/tamplet_spectro.py @@ -0,0 +1,15 @@ +import data_prep_obj as data_prep + +discharge_obj=data_prep.DichargePerp() + +suffix_list=['co2_pl'] + +all_file_dict=discharge_obj.get_full_data(discharge, suffix_list, norm_mode='no') + +freq, time, amp_f_t=discharge_obj.spectro_calc(file_dict['co2_pl']['r0']['xdata'][:],\ + file_dict['co2_pl']['r0']['zdata'][:],\ + plot=True) + +freq_enhanced, time_enhanced, amp_f_t_enhanced=discharge_obj.spec_filters(freq, time, amp_f_t) + +discharge_obj.spectro_plot(freq_enhanced, time_enhanced, amp_f_t_enhanced) \ No newline at end of file From 9e67a55aed77da2e726231233ed3f26aea7f05a7 Mon Sep 17 00:00:00 2001 From: maxcurie <47543965+maxtcurie@users.noreply.github.com> Date: Tue, 30 Apr 2024 14:12:55 -0400 Subject: [PATCH 006/103] Closet index improvement Minor improvement on the finding the closest index. --- examples/Dataset_prep/data_prep_obj.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/examples/Dataset_prep/data_prep_obj.py b/examples/Dataset_prep/data_prep_obj.py index 6b4d670..a1678e6 100644 --- a/examples/Dataset_prep/data_prep_obj.py +++ b/examples/Dataset_prep/data_prep_obj.py @@ -955,12 +955,18 @@ def find_closest_indx_constant_dt(indx_start,time,target): i=indx_start while time[i] abs(time[i-1] - target): + return i-1 return i + #indx_start on the left elif time[indx_start]>target: i=indx_start while time[i]>target: i-=1 + if abs(time[i] - target) > abs(time[i+1] - target): + return i+1 return i @staticmethod From 60109eedfa09693133c80435f95f58be032c4240 Mon Sep 17 00:00:00 2001 From: maxcurie <47543965+maxtcurie@users.noreply.github.com> Date: Wed, 1 May 2024 10:45:35 -0400 Subject: [PATCH 007/103] Fixed padding and binary search bug --- examples/Dataset_prep/data_prep_obj.py | 60 +++++++++++++++----------- 1 file changed, 36 insertions(+), 24 deletions(-) diff --git a/examples/Dataset_prep/data_prep_obj.py b/examples/Dataset_prep/data_prep_obj.py index a1678e6..a48eb86 100644 --- a/examples/Dataset_prep/data_prep_obj.py +++ b/examples/Dataset_prep/data_prep_obj.py @@ -972,7 +972,7 @@ def find_closest_indx_constant_dt(indx_start,time,target): @staticmethod def find_closest_indx_binary(time,target,indx_start,indx_end): # Binary search for the closest timestamp - low, high = indx_start, indx_end + low, high = max(0,indx_start), min(indx_end,len(time)-1) best_idx = low while low <= high: mid = (low + high) // 2 @@ -992,32 +992,34 @@ def find_closest_indx_binary(time,target,indx_start,indx_end): @staticmethod def custom_padding(time, data, left_slicing_indx, right_slicing_indx, padding='last'): #padding to the left + if left_slicing_indx<0: padding_config = [(0, 0)] * (data.ndim - 1) padd_len=-left_slicing_indx + if padding=='nan': - data_tmp=numpy.pad(data[..., 0:right_slicing_indx+1],padding_config+(padd_len, 0),mode='empty') - time_tmp=numpy.pad(time[0:right_slicing_indx+1],padding_config+(padd_len, 0),mode='empty') + data_tmp=np.pad(data[..., 0:right_slicing_indx+1],padding_config+[(padd_len, 0)],mode='empty') + time_tmp=np.pad(time[0:right_slicing_indx+1],padding_config+[(padd_len, 0)],mode='empty') elif padding=='last': - data_tmp=numpy.pad(data[..., 0:right_slicing_indx+1],padding_config+(padd_len, 0),mode='constant',constant_values=data[...,0]) - time_tmp=numpy.pad(time[0:right_slicing_indx+1],padding_config+(padd_len, 0),mode='constant',constant_values=time[0]) + data_tmp=np.pad(data[..., 0:right_slicing_indx+1],padding_config+[(padd_len, 0)],mode='constant',constant_values=data[...,0]) + time_tmp=np.pad(time[0:right_slicing_indx+1],padding_config+[(padd_len, 0)],mode='constant',constant_values=time[0]) elif padding=='zeros': - data_tmp=numpy.pad(data[..., 0:right_slicing_indx+1],padding_config+(padd_len, 0),mode='constant',constant_values=0) - time_tmp=numpy.pad(time[0:right_slicing_indx+1],padding_config+(padd_len, 0),mode='constant',constant_values=0) + data_tmp=np.pad(data[..., 0:right_slicing_indx+1],padding_config+[(padd_len, 0)],mode='constant',constant_values=0) + time_tmp=np.pad(time[0:right_slicing_indx+1],padding_config+[(padd_len, 0)],mode='constant',constant_values=0) elif (right_slicing_indx+1)>len(time): padd_len=right_slicing_indx-len(time) padding_config = [(0, 0)] * (data.ndim - 1) if padding=='nan': - data_tmp=numpy.pad(data[..., left_slicing_indx:],padding_config+(0,padd_len),mode='empty') - time_tmp=numpy.pad(time[left_slicing_indx:],padding_config+(0,padd_len),mode='empty') + data_tmp=np.pad(data[..., left_slicing_indx:],padding_config+[(0,padd_len)],mode='empty') + time_tmp=np.pad(time[left_slicing_indx:],padding_config+[(0,padd_len)],mode='empty') elif padding=='last': - data_tmp=numpy.pad(data[..., left_slicing_indx:],padding_config+(0,padd_len),mode='constant',constant_values=data[...,-1]) - time_tmp=numpy.pad(time[left_slicing_indx:],padding_config+(0,padd_len),mode='constant',constant_values=time[-1]) + data_tmp=np.pad(data[..., left_slicing_indx:],padding_config+[(0,padd_len)],mode='constant',constant_values=data[...,-1]) + time_tmp=np.pad(time[left_slicing_indx:],padding_config+[(0,padd_len)],mode='constant',constant_values=time[-1]) elif padding=='zeros': - data_tmp=numpy.pad(data[..., left_slicing_indx:],padding_config+(0,padd_len),mode='constant',constant_values=0) - time_tmp=numpy.pad(time[left_slicing_indx:],padding_config+(0,padd_len),mode='constant',constant_values=0) + data_tmp=np.pad(data[..., left_slicing_indx:],padding_config+[(0,padd_len)],mode='constant',constant_values=0) + time_tmp=np.pad(time[left_slicing_indx:],padding_config+[(0,padd_len)],mode='constant',constant_values=0) else: data_tmp=data[..., left_slicing_indx:right_slicing_indx+1] time_tmp=time[left_slicing_indx:right_slicing_indx+1] @@ -1238,30 +1240,40 @@ def time_series_full_pipeline(self,discharge,suffix_list,time_std_key, time_std= #cut_time for standard time [key1,_]=time_std_key - for key2 in all_file_dict[key1].keys(): - time_cut,data_cut=self.cut_time(all_file_dict[key1][key2]['xdata'][:], \ - all_file_dict[key1][key2]['zdata'][:], \ - t_min, t_max) - all_file_dict[key1][key2]={'xdata':time_cut,'zdata':data_cut} + + if custom_time_std: + time_cut,data_cut=self.cut_time(time_std, time_std,t_min, t_max) + else: + for key2 in all_file_dict[key1].keys(): + time_cut,data_cut=self.cut_time(all_file_dict[key1][key2]['xdata'][:], \ + all_file_dict[key1][key2]['zdata'][:], \ + t_min, t_max) + all_file_dict[key1][key2]={'xdata':time_cut,'zdata':data_cut} time_std=time_cut #time matching for key1 in all_file_dict.keys(): - if key1==time_std_key[0] and (not custom_time_std): - continue for key2 in all_file_dict[key1].keys(): + print([key1,key2]) + try: + left_window_tmp=left_window[key1][key2] + right_window_tmp=right_window[key1][key2] + except: + left_window_tmp=0 + right_window_tmp=0 + matched_time, matched_data=self.time_matching(\ all_file_dict[key1][key2]['xdata'][:], \ all_file_dict[key1][key2]['zdata'][:], \ time_std, \ - left_window=left_window[key1], \ - right_window=right_window[key1], \ + left_window=left_window_tmp, \ + right_window=right_window_tmp, \ mode=time_matching_mode,\ padding=time_matching_padding) - all_file_dict[item[0]][item[1]]['xdata']=matched_time - all_file_dict[item[0]][item[1]]['zdata']=matched_data + all_file_dict[key1][key2]['xdata']=matched_time + all_file_dict[key1][key2]['zdata']=matched_data if plot_matched_data: plt.clf() From da9597a9d3e0e9d0076f83836af68e54eb2cf9ae Mon Sep 17 00:00:00 2001 From: maxcurie <47543965+maxtcurie@users.noreply.github.com> Date: Wed, 1 May 2024 10:57:51 -0400 Subject: [PATCH 008/103] Change default setting, indent error, and plotting error --- examples/Dataset_prep/data_prep_obj.py | 28 +++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/examples/Dataset_prep/data_prep_obj.py b/examples/Dataset_prep/data_prep_obj.py index a48eb86..a13a39c 100644 --- a/examples/Dataset_prep/data_prep_obj.py +++ b/examples/Dataset_prep/data_prep_obj.py @@ -1205,7 +1205,7 @@ def deal_with_missing_data(self): pass - def time_series_full_pipeline(self,discharge,suffix_list,time_std_key, time_std=[],custom_time_std=False,Ip_window_size=500, Ip_std_threshold=0.01, plot_Ip=False, norm_mode='all', interp_suffix=[], interp_mode='normal', time_matching_mode='dynamic', left_window={'ece_s':50}, right_window={'ece_s':50}, time_matching_padding='zeros', plot_matched_data=True): + def time_series_full_pipeline(self,discharge,suffix_list,time_std_key, time_std=[],custom_time_std=False,Ip_window_size=500, Ip_std_threshold=0.01, plot_Ip=False, norm_mode='all', interp_suffix=[], interp_mode='normal', time_matching_mode='dynamic', left_window={'ece_s':50}, right_window={'ece_s':50}, time_matching_padding='zeros', plot_matched_data=False): ''' time_std: the standard time @@ -1255,7 +1255,7 @@ def time_series_full_pipeline(self,discharge,suffix_list,time_std_key, time_std= #time matching for key1 in all_file_dict.keys(): for key2 in all_file_dict[key1].keys(): - print([key1,key2]) + try: left_window_tmp=left_window[key1][key2] right_window_tmp=right_window[key1][key2] @@ -1275,13 +1275,23 @@ def time_series_full_pipeline(self,discharge,suffix_list,time_std_key, time_std= all_file_dict[key1][key2]['xdata']=matched_time all_file_dict[key1][key2]['zdata']=matched_data - if plot_matched_data: - plt.clf() - for i in range(len(matched_time)): - plt.plot(matched_time[i,:],matched_data[i,:,:].T) - plt.xlabel('Time (ms)') - plt.ylabel(f'{key1}-{key2}') - plt.show() + if plot_matched_data: + for key1 in all_file_dict.keys(): + for key2 in all_file_dict[key1].keys(): + print([key1,key2]) + plt.clf() + if all_file_dict[key1][key2]['zdata'].shape[2]==1: + + plt.plot(all_file_dict[key1][key2]['xdata'][:,0],\ + all_file_dict[key1][key2]['zdata'][:,:,0]) + else: + for i in range(len(all_file_dict[key1][key2]['xdata'][:])): + plt.plot(all_file_dict[key1][key2]['xdata'][i,:].T,\ + all_file_dict[key1][key2]['zdata'][i,:,:].T) + plt.xlabel('Time (ms)') + plt.ylabel(f'{key1}-{key2}') + plt.show() + return all_file_dict class DatasetPrep(DichargePerp): From a22af0cbf8a49be572e53a234bd89a961561a4e8 Mon Sep 17 00:00:00 2001 From: renierts Date: Wed, 15 May 2024 09:20:07 -0400 Subject: [PATCH 009/103] - Added time domain filters - Added spectrogram utilities. - Further cosmetic changes in Max's code --- README.md | 3 + examples/Data_fetching/check_copy_and_rm.py | 99 +++--- examples/Data_fetching/fetch_GAdata.py | 299 +++++++++--------- examples/Data_fetching/fetch_toksearch.py | 171 +++++++--- pyproject.toml | 5 +- src/fusion_ai_hub/__init__.py | 1 + src/fusion_ai_hub/core/__init__.py | 4 + .../core/spectral_representation/__init__.py | 4 + .../core/spectral_representation/sft.py | 53 ++++ .../core/time_domain_filtering/__init__.py | 5 + .../core/time_domain_filtering/filtering.py | 131 ++++++++ .../core/time_domain_filtering/preemphasis.py | 137 ++++++++ src/fusion_ai_hub/sampling/__init__.py | 0 src/fusion_ai_hub/util/utils.py | 5 + 14 files changed, 665 insertions(+), 252 deletions(-) create mode 100644 src/fusion_ai_hub/core/spectral_representation/__init__.py create mode 100644 src/fusion_ai_hub/core/spectral_representation/sft.py create mode 100644 src/fusion_ai_hub/core/time_domain_filtering/__init__.py create mode 100644 src/fusion_ai_hub/core/time_domain_filtering/filtering.py create mode 100644 src/fusion_ai_hub/core/time_domain_filtering/preemphasis.py create mode 100644 src/fusion_ai_hub/sampling/__init__.py create mode 100644 src/fusion_ai_hub/util/utils.py diff --git a/README.md b/README.md index d793a80..7a531b0 100644 --- a/README.md +++ b/README.md @@ -1 +1,4 @@ # FusionAIHub + + +This will be the readme of the FusionAIHub. \ No newline at end of file diff --git a/examples/Data_fetching/check_copy_and_rm.py b/examples/Data_fetching/check_copy_and_rm.py index e30ebd4..1e7f12b 100644 --- a/examples/Data_fetching/check_copy_and_rm.py +++ b/examples/Data_fetching/check_copy_and_rm.py @@ -1,21 +1,21 @@ +"""This script is intended to copy the file from iris and...""" import paramiko +import paramiko.util import socket import getpass import numpy as np import time -import os import re -#this script is intented to copy the file from iris and -num_min=140000 -num_max=200000-1 +num_min = 140000 +num_max = 200000-1 -subtask=2 #total paraelle one wants -residue=1 #transfer num%subtask==residue +subtask = 2 # total paraelle one wants +residue = 1 # transfer num%subtask==residue -fetching_name_list=['actu','basic','profiles'] -diag_name=fetching_name_list[0] +fetching_name_list = ['actu', 'basic', 'profiles'] +diag_name = fetching_name_list[0] remote_directory = '/cscratch/curiem/Data_fetch_Basic' local_directory = '/scratch/gpfs/EKOLEMEN/big_d3d_data/Basic_fetch' @@ -43,12 +43,16 @@ def create_ssh_connection(): proxy_transport = paramiko.Transport(proxy_sock) proxy_transport.connect(username=proxy_user, password=proxy_password) - proxy_channel = proxy_transport.open_channel('direct-tcpip', (destination_host, 22), (proxy_host, proxy_port)) + proxy_channel = proxy_transport.open_channel( + kind='direct-tcpip', dest_addr=(destination_host, 22), + src_addr=(proxy_host, proxy_port)) # Create an SSH client and connect through the proxy channel ssh_client = paramiko.SSHClient() - ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # Use with caution in production - ssh_client.connect(destination_host, username=destination_user, password=destination_password, sock=proxy_channel) + # Use with caution in production + ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) + ssh_client.connect(destination_host, username=destination_user, + password=destination_password, sock=proxy_channel) return ssh_client, proxy_transport except paramiko.AuthenticationException: @@ -64,24 +68,30 @@ def create_ssh_connection(): def extract_shot_numbers_remote(sftp, remote_path, suffix): """ - Extract shot numbers from file names in a remote directory via SFTP, based on a given suffix. - - Args: - - sftp (paramiko.SFTPClient): An active SFTP client session. - - remote_path (str): The remote directory path to search for files. - - suffix (str): The suffix pattern to match in the file names. - - - - - Returns: - - set: A set of unique shot numbers extracted from the file names. + Extract shot numbers from file names in a remote directory via SFTP, based + on a given suffix. + + Parameters + ---------- + sftp : SFTP object + An active SFTP client session. + remote_path : str + The remote directory path to search for files. + suffix : str + The suffix pattern to match in the file names. + + Returns + ------- + + set + A set of unique shot numbers extracted from the file names. """ try: # List all files in the remote directory with their attributes files_attr = sftp.listdir_attr(remote_path) - # Regular expression pattern to match the shot numbers, incorporating the suffix variable + # Regular expression pattern to match the shot numbers, + # incorporating the suffix variable pattern = re.compile(rf'(\d+)_({suffix})\.h5') # Extract shot numbers that match the pattern from the file names @@ -96,9 +106,6 @@ def extract_shot_numbers_remote(sftp, remote_path, suffix): print(f"Failed to extract shot numbers: {e}") return set() - - - def copy_file(sftp, remote_path, local_path): # Check the action and perform the corresponding task sftp.get(remote_path, local_path) @@ -111,45 +118,46 @@ def remove_file(sftp, remote_path): return message def copy_n_rm_file(sftp, remote_path, local_path): - message=copy_file(sftp, remote_path, local_path) + message = copy_file(sftp, remote_path, local_path) print(message) - message=remove_file(sftp, remote_path) + message = remove_file(sftp, remote_path) print(message) -def search_copy_and_delete(diag_name, remote_directory, local_directory, retries=3): +def search_copy_and_delete(diag_name, remote_directory, local_directory, + retries=3): for attempt in range(retries): try: ssh_client, proxy_transport = create_ssh_connection() sftp = ssh_client.open_sftp() - while 1==1: - shot_numbers=extract_shot_numbers_remote(sftp, remote_directory, diag_name) - shot_numbers=list(shot_numbers) + while 1 == 1: + shot_numbers = extract_shot_numbers_remote( + sftp, remote_directory, diag_name) + shot_numbers = list(shot_numbers) shot_numbers.sort() - shot_numbers=np.array(shot_numbers) - shot_numbers=shot_numbers[(num_min<=shot_numbers) & (shot_numbers<=num_max)] + shot_numbers = np.array(shot_numbers) + shot_numbers = shot_numbers[ + (num_min <= shot_numbers) & (shot_numbers <= num_max)] - #print(shot_numbers) - if len(shot_numbers)<=2*subtask: + # print(shot_numbers) + if len(shot_numbers) <= 2*subtask: print('No files to copy, waiting for 10 min') - #wait for 10min + # wait for 10min time.sleep(600) continue - cp_shot_num=shot_numbers[:-2*subtask] + cp_shot_num = shot_numbers[:-2*subtask] print(cp_shot_num) for shot_num in cp_shot_num: - if int(shot_num)%subtask==residue: + if int(shot_num) % subtask == residue: for name_tmp in fetching_name_list: - remote_path=f'{remote_directory}/{shot_num}_{name_tmp}.h5' - local_path=f'{local_directory}/{shot_num}_{name_tmp}.h5' + remote_path = f'{remote_directory}/{shot_num}_{name_tmp}.h5' + local_path = f'{local_directory}/{shot_num}_{name_tmp}.h5' copy_n_rm_file(sftp, remote_path, local_path) - ssh_client.close() proxy_transport.close() - break except Exception as e: print(f"Error processing on attempt {attempt + 1}: {e}") @@ -163,4 +171,5 @@ def search_copy_and_delete(diag_name, remote_directory, local_directory, retries ssh_client.close() proxy_transport.close() -search_copy_and_delete(diag_name, remote_directory, local_directory, retries=3) \ No newline at end of file + +search_copy_and_delete(diag_name, remote_directory, local_directory, retries=3) diff --git a/examples/Data_fetching/fetch_GAdata.py b/examples/Data_fetching/fetch_GAdata.py index 9007fcb..40f3dac 100644 --- a/examples/Data_fetching/fetch_GAdata.py +++ b/examples/Data_fetching/fetch_GAdata.py @@ -1,6 +1,6 @@ import MDSplus from mygadata import gadata -#import matplotlib.pyplot as plt +# import matplotlib.pyplot as plt import h5py import pickle import numpy as np @@ -9,172 +9,165 @@ import sys import subprocess +# To run the code +# module purge & module load defaults +# python2.7 fetch_data.py -#To run the code -#module purge & module load defaults -#python2.7 fetch_data.py +# *******start of user block************ +output_path = '/cscratch/curiem/Data_fetch_Basic' +ece_pcece = False +size_GB = 400 +directory_path = "/cscratch/curiem" # to check the total file sizes +shot_list = np.arange(170000, 200000) -#*******start of user block************ -output_path='/cscratch/curiem/Data_fetch_Basic' -ece_pcece=False -size_GB=400 -directory_path="/cscratch/curiem" #to check the total file sizes -shot_list=np.arange(170000,200000) +interval = 1000 +# shot_list = shot_list[:10] +# *******end of user block************ -interval=1000 -#shot_list=shot_list[:10] -#*******end of user block************ def size_limiter_sleep(directory_path="/cscratch/curiem", size_GB=450): - try: - size = subprocess.check_output(['du', '-sh', directory_path]).split()[0].decode('utf-8') - except subprocess.CalledProcessError as e: - print("Error fetching directory size: "+str(e)) - sys.exit(1) - - - print("Size of" +directory_path+": "+str(size)) - - if size[-1] == "G" and float(size[:-1]) > size_GB: - print("Size exceeds "+str(size_GB)+"GB. Sleeping for 1hr...") - - # Sleep for 1 hour - time.sleep(3600) # 3600 seconds = 1 hour - print("1 hour has passed. Checking size again...") - - try: - size = subprocess.check_output(['du', '-sh', directory_path]).split()[0].decode('utf-8') - except subprocess.CalledProcessError as e: - print("Error fetching directory size: "+str(e)) - sys.exit(1) - - if size[-1] == "G" and float(size[:-1]) > size_GB: - print("Size still exceeds "+str(size_GB)+"GB. Stoping") - sys.exit(1) - - - -def data2dict(shotn, signame, hf, atlconn) : - dict_group = hf.create_group(str(signame)) - try: - data = gadata(signame, shotn, connection=atlconn) - dict_group['xdata'] = data.xdata - dict_group['ydata'] = data.ydata - dict_group['zdata'] = data.zdata - dict_group['xunits'] = data.xunits - dict_group['yunits'] = data.yunits - dict_group['zunits'] = data.zunits - except: - print('%s not available, filled with NULL!' % (signame)) - dict_group['xdata'] = [] - dict_group['ydata'] = [] - dict_group['zdata'] = [] - dict_group['xunits'] = [] - dict_group['yunits'] = [] - dict_group['zunits'] = [] - del atlconn - #global atlconn - atlconn = MDSplus.Connection('atlas.gat.com') - pass - return atlconn + try: + size = subprocess.check_output( + ['du', '-sh', directory_path]).split()[0].decode('utf-8') + except subprocess.CalledProcessError as e: + print("Error fetching directory size: "+str(e)) + sys.exit(1) + + print("Size of" + directory_path + ": "+str(size)) + + if size[-1] == "G" and float(size[:-1]) > size_GB: + print("Size exceeds "+str(size_GB)+"GB. Sleeping for 1hr...") + # Sleep for 1 hour + time.sleep(3600) # 3600 seconds = 1 hour + print("1 hour has passed. Checking size again...") + try: + size = subprocess.check_output( + ['du', '-sh', directory_path]).split()[0].decode('utf-8') + except subprocess.CalledProcessError as e: + print("Error fetching directory size: "+str(e)) + sys.exit(1) + + if size[-1] == "G" and float(size[:-1]) > size_GB: + print("Size still exceeds "+str(size_GB)+"GB. Stopping") + sys.exit(1) + + +def data2dict(shotn, signame, hf, atlconn): + dict_group = hf.create_group(str(signame)) + try: + data = gadata(signame, shotn, connection=atlconn) + dict_group['xdata'] = data.xdata + dict_group['ydata'] = data.ydata + dict_group['zdata'] = data.zdata + dict_group['xunits'] = data.xunits + dict_group['yunits'] = data.yunits + dict_group['zunits'] = data.zunits + except: + print('%s not available, filled with NULL!' % (signame)) + dict_group['xdata'] = [] + dict_group['ydata'] = [] + dict_group['zdata'] = [] + dict_group['xunits'] = [] + dict_group['yunits'] = [] + dict_group['zunits'] = [] + del atlconn + # global atlconn + atlconn = MDSplus.Connection('atlas.gat.com') + pass + return atlconn + atlconn = MDSplus.Connection('atlas.gat.com') -ech_gytname = ['lei','luk','r2d'] +ech_gytname = ['lei', 'luk', 'r2d'] -#shot_list = np.loadtxt('DIIID_BES_Shot_List_Fatima.txt',delimiter='\n',dtype=np.int32) -# shot_list = np.load('tm-control-shots.npy');shot_list=np.unique(shot_list).astype(np.int) +# shot_list = np.loadtxt('DIIID_BES_Shot_List_Fatima.txt', +# delimiter='\n', dtype=np.int32) +# shot_list = np.load('tm-control-shots.npy') +# shot_list = np.unique(shot_list).astype(np.int) # shot_list = [np.int32(sys.argv[1])] # shot_list=[193266,193273,193280] -cannot_find=['triangularity_u','triangularity_l','pech','neutronsrate']\ - +['fplastic', 'fzns',\ - 'fncrate01', 'fncrate02', 'fncrate03', 'fncrate04',\ - 'plasticfx1', 'plasticfx2', 'plasticfx3', 'plasticfx4',\ - 'neutronsrate1','neutronsrate2','neutronsrate3', 'neutronsrate4'] +cannot_find = (['triangularity_u', 'triangularity_l', 'pech', 'neutronsrate'] + + ['fplastic', 'fzns', 'fncrate01', 'fncrate02', 'fncrate03', + 'fncrate04', 'plasticfx1', 'plasticfx2', 'plasticfx3', + 'plasticfx4', 'neutronsrate1', 'neutronsrate2', + 'neutronsrate3', 'neutronsrate4']) -#basic is fundimental measured quantities (in contrast of fitted quantities) - -signal_list= { -'profiles':['betap','betan','pres', \ - 'wmhd','li',\ - 'q0','q95','qmin','qpsi','rhoqmin',\ - 'r0','aminor',\ - 'kappa','tritop','tribot',\ - 'alpha','psirz',\ - 'ssibry', 'ssimag',\ - 'rmaxis','zmaxis',\ - 'volume',\ - 'drsep','gapbot','gapin','gapout','gaptop',\ - 'zxpt1','zxpt2',\ - 'edensfit', 'etempfit',\ - 'trotfit','itempfit','idensfit',\ - 'n1rms','n2rms','n3rms'], - \ -'basic':['ip', 'ipsip', 'iptipp','pcbcoil', 'bcoil','bt','vloop']\ - +[ 'plasticfix', 'fzns']\ - +['fs00','fs01','fs02','fs03','fs04','fs05'],\ -'actu': ['pinjf_%dl' % k for k in [15,21,30,33]]+['pinjf_%dr' % k for k in [15,21,30,33]]\ - +['tinj_%dl' % k for k in [15,21,30,33]]+['tinj_%dr' % k for k in [15,21,30,33]]\ - +['echpwrc','echpwr']\ - +['ec%sfpwrc' % (x) for x in ech_gytname]\ - +['ec%sxmfrac' % (x) for x in ech_gytname]\ - +['ec%spolang' % (x) for x in ech_gytname]\ - +['gasa', 'gasb', 'gasc', 'gasd', 'gase']\ - +['c19', 'c79', 'c139', 'c199', 'c259', 'c319', \ - 'iu30', 'iu90', 'iu150', 'iu210', 'iu270', 'iu330', \ - 'il30', 'il90', 'il150', 'il210', 'il270', 'il330']\ - +['ecoila', 'ecoilb', 'e567up', 'e567dn', 'e89dn', 'e89up']\ - +['f1a','f2a','f3a','f4a','f5a','f6a','f7a','f8a','f9a',\ - 'f1b','f2b','f3b','f4b','f5b','f6b','f7b','f8b','f9b'] -} - +# basic is fundamental measured quantities (in contrast of fitted quantities) + +signal_list = {'profiles': ['betap', 'betan', 'pres', 'wmhd', 'li', + 'q0', 'q95', 'qmin', 'qpsi', 'rhoqmin', 'r0', + 'aminor', 'kappa', 'tritop', 'tribot', 'alpha', + 'psirz', 'ssibry', 'ssimag', 'rmaxis', 'zmaxis', + 'volume', 'drsep', 'gapbot', 'gapin', 'gapout', + 'gaptop', 'zxpt1', 'zxpt2', 'edensfit', 'etempfit', + 'trotfit', 'itempfit', 'idensfit', 'n1rms','n2rms', + 'n3rms'], + 'basic': ['ip', 'ipsip', 'iptipp', 'pcbcoil', 'bcoil', 'bt', + 'vloop'] + ['plasticfix', 'fzns'] + + ['fs00', 'fs01', 'fs02', 'fs03', 'fs04', 'fs05'], + 'actu': ['pinjf_%dl' % k for k in [15, 21, 30, 33]] + + ['pinjf_%dr' % k for k in [15,21,30,33]] + + ['tinj_%dl' % k for k in [15,21,30,33]] + + ['tinj_%dr' % k for k in [15,21,30,33]] + + ['echpwrc','echpwr'] + + ['ec%sfpwrc' % (x) for x in ech_gytname] + + ['ec%sxmfrac' % (x) for x in ech_gytname] + + ['ec%spolang' % (x) for x in ech_gytname] + + ['gasa', 'gasb', 'gasc', 'gasd', 'gase'] + + ['c19', 'c79', 'c139', 'c199', 'c259', 'c319', 'iu30', + 'iu90', 'iu150', 'iu210', 'iu270', 'iu330', 'il30', + 'il90', 'il150', 'il210', 'il270', 'il330'] + + ['ecoila', 'ecoilb', 'e567up', 'e567dn', 'e89dn', + 'e89up'] + + ['f1a','f2a','f3a','f4a','f5a','f6a','f7a','f8a','f9a', + 'f1b','f2b','f3b','f4b','f5b','f6b','f7b','f8b','f9b']} for i in tqdm(range(len(shot_list))): - shotn=shot_list[i] - t1=time.time() - - for grpname,signals in signal_list.items(): - hf = h5py.File(output_path+'/'+ str(shotn)+'_'+grpname+'.h5','w') - for signame in signals: - atlconn=data2dict(shotn,signame,hf,atlconn) - hf.close() - - - if ece_pcece: - hf = h5py.File(output_path+'/'+ str(shotn)+'_ece.h5','w') - pece_group = hf.create_group('pcece') - ece_group = hf.create_group('ece') - rtece_group = hf.create_group('rtece') + shotn = shot_list[i] + t1 = time.time() + + for grpname, signals in signal_list.items(): + hf = h5py.File(output_path + '/' + str(shotn) + '_'+grpname+'.h5', 'w') + for signame in signals: + atlconn = data2dict(shotn, signame, hf, atlconn) + hf.close() + + if ece_pcece: + hf = h5py.File(output_path + '/' + str(shotn)+'_ece.h5', 'w') + pece_group = hf.create_group('pcece') + ece_group = hf.create_group('ece') + rtece_group = hf.create_group('rtece') - for k in range(40): - print('chn %i' % (k+1)) - pece_data = gadata('pcece%d' % (k+1), shotn, connection=atlconn) - pece_group['pcece%02d' % (k+1)] = pece_data.zdata - ece_data = gadata('tecef%02d' % (k+1), shotn, connection=atlconn) - ece_group['tecef%02d' % (k+1)] = ece_data.zdata + for k in range(40): + print('chn %i' % (k+1)) + pece_data = gadata('pcece%d' % (k+1), shotn, connection=atlconn) + pece_group['pcece%02d' % (k+1)] = pece_data.zdata + ece_data = gadata('tecef%02d' % (k+1), shotn, connection=atlconn) + ece_group['tecef%02d' % (k+1)] = ece_data.zdata - rtece_data = gadata('ecsdata%d' % (k+97), shotn, connection=atlconn) - rtece_group['ecsdata%d' % (k+97)] = rtece_data.zdata + rtece_data = gadata('ecsdata%d' % (k+97), shotn, connection=atlconn) + rtece_group['ecsdata%d' % (k+97)] = rtece_data.zdata - pece_group['xdata'] = pece_data.xdata - pece_group['ydata'] = pece_data.ydata - pece_group['xunits'] = pece_data.xunits - pece_group['yunits'] = pece_data.yunits - pece_group['pceceunits'] = pece_data.zunits + pece_group['xdata'] = pece_data.xdata + pece_group['ydata'] = pece_data.ydata + pece_group['xunits'] = pece_data.xunits + pece_group['yunits'] = pece_data.yunits + pece_group['pceceunits'] = pece_data.zunits - ece_group['xdata'] = ece_data.xdata - ece_group['ydata'] = ece_data.ydata - ece_group['xunits'] = ece_data.xunits - ece_group['yunits'] = ece_data.yunits - ece_group['eceunits'] = ece_data.zunits - - rtece_group['xdata'] = rtece_data.xdata - rtece_group['ydata'] = rtece_data.ydata - rtece_group['xunits'] = rtece_data.xunits - rtece_group['yunits'] = rtece_data.yunits - rtece_group['rteceunits'] = rtece_data.zunits - hf.close() - if i % interval == 0: - size_limiter_sleep(size_GB=size_GB) - print('Shot #%d'%(shotn,)) - print(i) -# print('time per shot:%ds' % (time.time()-t1)) + ece_group['xdata'] = ece_data.xdata + ece_group['ydata'] = ece_data.ydata + ece_group['xunits'] = ece_data.xunits + ece_group['yunits'] = ece_data.yunits + ece_group['eceunits'] = ece_data.zunits + + rtece_group['xdata'] = rtece_data.xdata + rtece_group['ydata'] = rtece_data.ydata + rtece_group['xunits'] = rtece_data.xunits + rtece_group['yunits'] = rtece_data.yunits + rtece_group['rteceunits'] = rtece_data.zunits + hf.close() + if i % interval == 0: + size_limiter_sleep(size_GB=size_GB) + print('Shot #%d'%(shotn,)) + print(i) +# print('time per shot:%ds' % (time.time()-t1)) diff --git a/examples/Data_fetching/fetch_toksearch.py b/examples/Data_fetching/fetch_toksearch.py index 3654647..ea25ed2 100644 --- a/examples/Data_fetching/fetch_toksearch.py +++ b/examples/Data_fetching/fetch_toksearch.py @@ -1,4 +1,4 @@ -from toksearch import MdsSignal,PtDataSignal +from toksearch import MdsSignal, PtDataSignal from toksearch import Pipeline import numpy as np import os @@ -7,47 +7,50 @@ import subprocess import sys -#this one runs on iris, run the following -#module purge -#module load toksearch +# this one runs on iris, run the following +# module purge +# module load toksearch -#for copy: -#scp -r -o 'ProxyCommand ssh -p 2039 curiem@cybele.gat.com -W %h:%p' curiem@iris.gat.com:/cscratch/curiem/Data_fetch_TS/15* ./ +# for copy: +# scp -r -o 'ProxyCommand ssh -p 2039 curiem@cybele.gat.com -W %h:%p' curiem@iris.gat.com:/cscratch/curiem/Data_fetch_TS/15* ./ -#***********start of user block****************** -#limit of the size -size_GB=400 +# ***********start of user block****************** +# limit of the size +size_GB = 400 -#After fetching (interval) discharges, check the total directory size -interval=100 +# After fetching (interval) discharges, check the total directory size +interval = 100 -#Root directory of the user for total size check -directory_path="/cscratch/curiem" +# Root directory of the user for total size check +directory_path = "/cscratch/curiem" -#list of discharges to fetch -shots = np.arange(150000,170000,dtype=int) +# list of discharges to fetch +shots = np.arange(150000, 170000, dtype=int) -# one can set start_shot the where to start. (usually used for restarting the fetching due to unexpected termination) -start_shot=min(shots) +# one can set start_shot the where to start. +# (usually used for restarting the fetching due to unexpected termination) +start_shot = min(shots) -#path to save the files +# path to save the files path = '/cscratch/curiem/Data_fetch_CER/' -#diag_names=[mag,mag_hi,bes,ece_cali,ece_s, co2_den, co2_pl, co2_s, ts,ts_rz,ts_error,cer, mse,custom] -diag_name='cer' +# diag_names=[mag,mag_hi,bes,ece_cali,ece_s, co2_den, co2_pl, co2_s, ts,ts_rz,ts_error,cer, mse,custom] +diag_name = 'cer' -#custom sig_names_custom, the suffix is fixed to be custom for now. -if diag_name=='custom': - sig_names_custom=[''] - names_custom=[''] - tree='' #ptdata fo PTDATA, other trees names for MDS+ -#***********end of user block****************** +# custom sig_names_custom, the suffix is fixed to be custom for now. +if diag_name == 'custom': + sig_names_custom = [''] + names_custom = [''] + tree = '' # ptdata fo PTDATA, other trees names for MDS+ +# ***********end of user block****************** shots.sort() + def size_limiter(directory_path="/cscratch/curiem", size_GB=450): try: - size = subprocess.check_output(['du', '-sh', directory_path]).split()[0].decode('utf-8') + size = subprocess.check_output( + ['du', '-sh', directory_path]).split()[0].decode('utf-8') except subprocess.CalledProcessError as e: print(f"Error fetching directory size: {e}") return @@ -60,12 +63,12 @@ def size_limiter(directory_path="/cscratch/curiem", size_GB=450): def size_limiter_sleep(directory_path="/cscratch/curiem", size_GB=450): try: - size = subprocess.check_output(['du', '-sh', directory_path]).split()[0].decode('utf-8') + size = subprocess.check_output( + ['du', '-sh', directory_path]).split()[0].decode('utf-8') except subprocess.CalledProcessError as e: print(f"Error fetching directory size: {e}") sys.exit(1) - print(f"Size of {directory_path}: {size}") if size[-1] == "G" and float(size[:-1]) > size_GB: @@ -76,15 +79,17 @@ def size_limiter_sleep(directory_path="/cscratch/curiem", size_GB=450): print("1 hour has passed. Checking size again...") try: - size = subprocess.check_output(['du', '-sh', directory_path]).split()[0].decode('utf-8') + size = subprocess.check_output( + ['du', '-sh', directory_path]).split()[0].decode('utf-8') except subprocess.CalledProcessError as e: print(f"Error fetching directory size: {e}") sys.exit(1) if size[-1] == "G" and float(size[:-1]) > size_GB: - print(f"Size still exceeds {size_GB}GB. Stoping") + print(f"Size still exceeds {size_GB}GB. Stopping") sys.exit(1) + def save_dict_to_hdf5(dictionary, h5file): for key, value in dictionary.items(): if isinstance(value, dict): @@ -93,28 +98,90 @@ def save_dict_to_hdf5(dictionary, h5file): else: h5file.create_dataset(key, data=value) -#generate the name and signal to fetch i ntoksearch -def signal_gen(diag_name='zipfit',sig_names_custom=[''],names_custom=[''],tree_custom=''): - signals=[] - names=[] - - - #Counter: fncrate** - #Adjustable scintillator: fplastic, fzns - #Fixed scintillator: plasticfx* - #Approximate calibrated signal: neutronsrate* - if diag_name=='neutron': - sig_names=['fplastic', 'fzns',\ - 'fncrate01', 'fncrate02', 'fncrate03', 'fncrate04',\ - 'plasticfx1', 'plasticfx2', 'plasticfx3', 'plasticfx4',\ - 'neutronsrate1','neutronsrate2','neutronsrate3', 'neutronsrate4'] - names= ['fplastic', 'fzns',\ - 'fncrate01', 'fncrate02', 'fncrate03', 'fncrate04',\ - 'plasticfx1', 'plasticfx2', 'plasticfx3', 'plasticfx4',\ - 'cali.neutronsrate1','cali.neutronsrate2','cali.neutronsrate3', 'cali.neutronsrate4'] + +# generate the name and signal to fetch i ntoksearch +def signal_gen(diag_name='zipfit', sig_names_custom=[''], names_custom=[''], + tree_custom=''): + signals = [] + names = [] + # Counter: fncrate** + # Adjustable scintillator: fplastic, fzns + # Fixed scintillator: plasticfx* + # Approximate calibrated signal: neutronsrate* + if diag_name == 'neutron': + sig_names = ['fplastic', 'fzns', 'fncrate01', 'fncrate02', 'fncrate03', + 'fncrate04', 'plasticfx1', 'plasticfx2', 'plasticfx3', + 'plasticfx4', 'neutronsrate1', 'neutronsrate2', + 'neutronsrate3', 'neutronsrate4'] + names = ['fplastic', 'fzns', 'fncrate01', 'fncrate02', 'fncrate03', + 'fncrate04', 'plasticfx1', 'plasticfx2', 'plasticfx3', + 'plasticfx4', 'cali.neutronsrate1', 'cali.neutronsrate2', + 'cali.neutronsrate3', 'cali.neutronsrate4'] - elif diag_name=='mag_full': - sig_name_without_d=['mpi11m322', 'mpi1a322', 'mpi2a322', 'mpi3a322', 'mpi4a322', 'mpi5a322', 'mpi8a322', 'mpi89a322', 'mpi9a322', 'mpi79fa322', 'mpi79na322', 'mpi7fa322', 'mpi7na322', 'mpi67a322', 'mpi6fa322', 'mpi6na322', 'mpi66m322', 'mpi1b322', 'mpi2b322', 'mpi3b322', 'mpi4b322', 'mpi5b322', 'mpi8b322', 'mpi89b322', 'mpi9b322', 'mpi79b322', 'mpi7fb322', 'mpi7nb322', 'mpi67b322', 'mpi6fb322', 'mpi6nb322', 'mpi2a067', 'mpi11m067', 'mpi2b067', 'mpi67a097', 'mpi67a067', 'mpi66m067', 'mpi67b097', 'mpi67b067', 'mpi1a139', 'mpi2a139', 'mpi3a139', 'mpi4a139', 'mpi5a139', 'mpi79a147', 'mpi67a142', 'mpi67a157', 'mpi6na132', 'mpi6na157', 'mpi66m157', 'mpi6nb157', 'mpi6fb142', 'mpi67b157', 'mpi7nb142', 'mpi79b142', 'mpi5b139', 'mpi4b139', 'mpi3b139', 'mpi2b139', 'mpi1b139', 'mpi1b157', 'mpi1u157', 'mpi2u157', 'mpi3u157', 'mpi4u157', 'mpi5u157', 'mpi6u157', 'mpi7u157', 'dsl1u180', 'dsl2u180', 'dsl3u180', 'dsl4u157', 'dsl5u157', 'dsl6u157', 'mpi66m127', 'mpi66m132', 'mpi66m137', 'mpi66b137', 'mpi6nb137', 'mpi66m307', 'mpi66m312', 'mpi6na312', 'mpi66b312', 'mpi6nb312', 'mpi66m322', 'mpi1l020', 'mpi2l020', 'mpi1l050', 'mpi1l110', 'mpi1l180', 'mpi2l180', 'mpi3l180', 'mpi1l230', 'mpi1l320', 'mpi66m020', 'mpi66m067', 'mpi66m097', 'mpi66m127', 'mpi66m132', 'mpi66m137', 'mpi66m157', 'mpi66m200', 'mpi66m247', 'mpi66m277', 'mpi66m307', 'mpi66m312', 'mpi66m322', 'mpi66m340', 'mpi67a022', 'mpi67a037', 'mpi67a1', 'mpi67a052', 'mpi67a067', 'mpi67a082', 'mpi67a097', 'mpi67a2', 'mpi67a142', 'mpi67a157', 'mpi67a3', 'mpi67a217', 'mpi67a4', 'mpi67a262', 'mpi67a277', 'mpi67a5', 'mpi67a307', 'mpi67a337', 'mpi67a6', 'mpi67b022', 'mpi67b037', 'mpi67b1', 'mpi67b052', 'mpi67b097', 'mpi67b2', 'mpi67b157', 'mpi67b3', 'mpi67b217', 'mpi67b4', 'mpi67b277', 'mpi67b5', 'mpi67b337', 'mpi67b6', 'mpi79a072', 'mpi79a147', 'mpi79a222', 'mpi79a272', 'mpi79b067', 'mpi79b142', 'mpi79b217', 'mpi79b277', 'mpi5a139', 'mpi4a139', 'mpi3a139', 'mpi2a139', 'mpi1a139', 'mpi1b139', 'mpi2b139', 'mpi3b139', 'mpi4b139', 'mpi5b139', 'mpi5a199', 'mpi4a199', 'mpi3a199', 'mpi2a199', 'mpi1a199', 'mpi1b199', 'mpi2b199', 'mpi3b199', 'mpi4b199', 'mpi5b199', 'mpi1a011', 'mpi1a049', 'mpi1a109', 'mpi1a139', 'mpi1a199', 'mpi1a244', 'mpi1a274', 'mpi1a341', 'mpi1b011', 'mpi1b049', 'mpi1b109', 'mpi1b139', 'mpi1b199', 'mpi1b244', 'mpi1b274', 'mpi1b341', 'isl66m017', 'isl66m042', 'isl66m072', 'isl66m102', 'isl66m132', 'isl66m197', 'isl66m252', 'isl66m312', 'isl67a017', 'isl67a052', 'isl67a072', 'isl67a112', 'isl67a132', 'isl67a197', 'isl67a252', 'isl67a312', 'isl67b017', 'isl67b052', 'isl67b072', 'isl67b112', 'isl67b132', 'isl67b197', 'isl67b252', 'isl67b312', 'isl79a072', 'isl79a147', 'isl79a222', 'isl79a272', 'isl79b067', 'isl79b142', 'isl79b217', 'isl79b277', 'isl5a139', 'isl4a139', 'isl3a139', 'isl2a139', 'isl1a139', 'isl1b139', 'isl2b139', 'isl3b139', 'isl4b139', 'isl5b139', 'isl5a199', 'isl4a199', 'isl3a199', 'isl2a199', 'isl1a199', 'isl1b199', 'isl2b199', 'isl3b199', 'isl4b199', 'isl5b199', 'isl1a011', 'isl1a049', 'isl1a109', 'isl1a139', 'isl1a199', 'isl1a244', 'isl1a274', 'isl1a341', 'isl1b011', 'isl1b049', 'isl1b109', 'isl1b139', 'isl1b199', 'isl1b244', 'isl1b274', 'isl1b341', 'dsl12a067', 'dsl34a067', 'dsl59a067', 'dsl79a067', 'dsl67a067', 'dsl66m052', 'dsl67b067', 'dsl79b067', 'dsl59b067', 'dsl34b067', 'dsl12b067', 'dsl12a157', 'dsl34a157', 'dsl59a157', 'dsl79a157', 'dsl67a157', 'dsl66m152', 'dsl67b157', 'dsl79b157', 'dsl59b157', 'dsl34b157', 'dsl12b157', 'dsl67a067', 'dsl67a157', 'sl67fa345', 'sl67na345', 'dsl66m052', 'sl66a132', 'sl66b132', 'dsl66m152', 'sl66a312', 'sl66b312', 'sl67nb015', 'sl67fb015', 'dsl67b067', 'dsl67b157', 'esl66m019', 'esl019', 'esl66m079', 'esl079', 'esl66m139', 'esl139', 'esl66m199', 'esl199', 'esl66m259', 'esl259', 'esl66m319', 'esl319', 'esl67a004', 'esl67a034', 'esl67a064', 'esl67a094', 'esl67a124', 'esl67a154', 'esl67a184', 'esl67a214', 'esl67a244', 'esl67a274', 'esl67a304', 'esl67a334', 'esl67b004', 'esl67b034', 'esl67b064', 'esl67b094', 'esl67b124', 'esl67b154', 'esl67b184', 'esl67b214', 'esl67b244', 'esl67b274', 'esl67b304', 'esl67b334', 'bti66m053', 'bti66m132', 'bti66m233', 'bti66m312', 'psf1a', 'psf1a', 'psf1a', 'psf1a', 'psf6natotl', 'psf6na', 'psi11mtotl', 'psi11m', 'psi6atotl', 'psi6a', 'psf1a', 'psf6natotl', 'psi11mtotl', 'psi6atotl', 'psf2a', 'psf3a', 'psf4a', 'psf5a', 'psf8a', 'psf9a', 'psf7fa', 'psf7na', 'psf6fa', 'psf6na', 'psf6nb', 'psf6fb', 'psf7nb', 'psf7fb', 'psf9b', 'psf8b', 'psf5b', 'psf4b', 'psf3b', 'psf2b', 'psf1b', 'psi11m', 'psi12a', 'psi23a', 'psi34a', 'psi45a', 'psi58a', 'psi9a', 'psi7a', 'psi6a', 'psi6b', 'psi7b', 'psi9b', 'psi89nb', 'psi89fb', 'psi58b', 'psi45b', 'psi34b', 'psi23b', 'psi12b', 'psi1l', 'psi2l', 'psi3l', 'mpi1b', 'mpi66m020', 'mpi66m097', 'mpi66m020', 'mpi66m097', 'mpi66m067', 'mpi66m247', 'mpi66m097', 'mpi66m277', 'mpi66m127', 'mpi66m307', 'mpi66m157', 'mpi66m340', 'mpi66m200', 'mpi66m020', 'mpi66m247', 'mpi66m127', 'mpi66m277', 'mpi66m157', 'mpi66m307', 'mpi66m200', 'mpi66m340', 'mpi66m067', 'mpi67a022', 'mpi67a217', 'mpi67a037', 'mpi67a067', 'mpi67a052', 'mpi67a022', 'mpi67a067', 'mpi67a262', 'mpi67a082', 'mpi67a052', 'mpi67a097', 'mpi67a082', 'mpi67a142', 'mpi67a037', 'mpi67a217', 'mpi67a097', 'mpi67a262', 'mpi67a277', 'mpi67a277', 'mpi67a307', 'mpi67a307', 'mpi67a337', 'mpi67a337', 'mpi67a142', 'mpi67b022', 'mpi67b052', 'mpi67b037', 'mpi67b217', 'mpi67b052', 'mpi67b037', 'mpi67b097', 'mpi67b277', 'mpi67b157', 'mpi67b337', 'mpi67b217', 'mpi67b097', 'mpi67b277', 'mpi67b157', 'mpi67b337', 'mpi67b022', 'mpi79a072', 'mpi79a222', 'mpi79a147', 'mpi79a072', 'mpi79a222', 'mpi79a272', 'mpi79a272', 'mpi79a147', 'mpi79b067', 'mpi79b217', 'mpi79b142', 'mpi79b067', 'mpi79b217', 'mpi79b277', 'mpi79b277', 'mpi79b142', 'mpi1a011', 'mpi1a199', 'mpi1a049', 'mpi1a244', 'mpi1a109', 'mpi1a011', 'mpi1a139', 'mpi1a341', 'mpi1a199', 'mpi1a139', 'mpi1a244', 'mpi1a274', 'mpi1a274', 'mpi1a109', 'mpi1a341', 'mpi1a049', 'mpi1b011', 'mpi1b199', 'mpi1b049', 'mpi1b244', 'mpi1b109', 'mpi1b011', 'mpi1b139', 'mpi1b341', 'mpi1b199', 'mpi1b139', 'mpi1b244', 'mpi1b274', 'mpi1b274', 'mpi1b109', 'mpi1b341', 'mpi1b049', 'mpi5a199', 'mpi5a139', 'mpi4a199', 'mpi4a139', 'mpi3a199', 'mpi3a139', 'mpi2a199', 'mpi2a139', 'mpi1a199', 'mpi1a139', 'mpi1b199', 'mpi1b139', 'mpi2b199', 'mpi2b139', 'mpi3b199', 'mpi3b139', 'mpi4b199', 'mpi4b139', 'mpi5b199', 'mpi5b139', 'isl66m017', 'isl66m042', 'isl66m042', 'isl66m072', 'isl66m072', 'isl66m252', 'isl66m102', 'isl66m132', 'isl66m132', 'isl66m312', 'isl66m197', 'isl66m017', 'isl66m252', 'isl66m102', 'isl66m312', 'isl66m197', 'isl67a017', 'isl67a052', 'isl67a052', 'isl67a072', 'isl67a072', 'isl67a252', 'isl67a112', 'isl67a132', 'isl67a132', 'isl67a312', 'isl67a197', 'isl67a017', 'isl67a252', 'isl67a112', 'isl67a312', 'isl67a197', 'isl67b017', 'isl67b052', 'isl67b052', 'isl67b072', 'isl67b072', 'isl67b252', 'isl67b112', 'isl67b132', 'isl67b132', 'isl67b312', 'isl67b197', 'isl67b017', 'isl67b252', 'isl67b112', 'isl67b312', 'isl67b197', 'isl79a072', 'isl79a222', 'isl79a147', 'isl79a072', 'isl79a222', 'isl79a272', 'isl79a272', 'isl79a147', 'isl79b067', 'isl79b217', 'isl79b142', 'isl79b067', 'isl79b217', 'isl79b277', 'isl79b277', 'isl79b142', 'isl1a011', 'isl1a199', 'isl1a049', 'isl1a244', 'isl1a109', 'isl1a011', 'isl1a139', 'isl1a341', 'isl1a199', 'isl1a139', 'isl1a244', 'isl1a274', 'isl1a274', 'isl1a109', 'isl1a341', 'isl1a049', 'isl1b011', 'isl1b199', 'isl1b049', 'isl1b244', 'isl1b109', 'isl1b011', 'isl1b139', 'isl1b341', 'isl1b199', 'isl1b139', 'isl1b244', 'isl1b274', 'isl1b274', 'isl1b109', 'isl1b341', 'isl1b049', 'isl5a199', 'isl5a139', 'isl4a199', 'isl4a139', 'isl3a199', 'isl3a139', 'isl2a199', 'isl2a139', 'isl1a199', 'isl1a139', 'isl1b199', 'isl1b139', 'isl2b199', 'isl2b139', 'isl3b199', 'isl3b139', 'isl4b199', 'isl4b139', 'isl5b199', 'isl5b139', 'esl66m019', 'esl66m079', 'esl66m079', 'esl66m259', 'esl66m139', 'esl66m319', 'esl66m199', 'esl66m019', 'esl66m259', 'esl66m139', 'esl66m319', 'esl66m199', 'esl66m079', 'esl66m259', 'esl66m139', 'esl66m319', 'esl66m199', 'esl66m019', 'esl67a004', 'esl67a244', 'esl67a034', 'esl67a154', 'esl67a064', 'esl67a184', 'esl67a094', 'esl67a274', 'esl67a124', 'esl67a304', 'esl67a154', 'esl67a334', 'esl67a184', 'esl67a004', 'esl67a214', 'esl67a094', 'esl67a244', 'esl67a124', 'esl67a274', 'esl67a034', 'esl67a304', 'esl67a064', 'esl67a334', 'esl67a214', 'esl67b004', 'esl67b244', 'esl67b034', 'esl67b154', 'esl67b064', 'esl67b184', 'esl67b094', 'esl67b274', 'esl67b124', 'esl67b304', 'esl67b154', 'esl67b334', 'esl67b184', 'esl67b004', 'esl67b214', 'esl67b094', 'esl67b244', 'esl67b124', 'esl67b274', 'esl67b034', 'esl67b304', 'esl67b064', 'esl67b334', 'esl67b214', 'bti66m053', 'bti66m233', 'bti66m132', 'bti66m053', 'bti66m233', 'bti66m312', 'bti66m312', 'bti66m132', 'mpi2a067', 'mpi1u157', 'isl79a'] + elif diag_name == 'mag_full': + sig_name_without_d = [ + 'mpi11m322', 'mpi1a322', 'mpi2a322', 'mpi3a322', 'mpi4a322', + 'mpi5a322', 'mpi8a322', 'mpi89a322', 'mpi9a322', 'mpi79fa322', + 'mpi79na322', 'mpi7fa322', 'mpi7na322', 'mpi67a322', 'mpi6fa322', + 'mpi6na322', 'mpi66m322', 'mpi1b322', 'mpi2b322', 'mpi3b322', + 'mpi4b322', 'mpi5b322', 'mpi8b322', 'mpi89b322', 'mpi9b322', + 'mpi79b322', 'mpi7fb322', 'mpi7nb322', 'mpi67b322', 'mpi6fb322', + 'mpi6nb322', 'mpi2a067', 'mpi11m067', 'mpi2b067', 'mpi67a097', + 'mpi67a067', 'mpi66m067', 'mpi67b097', 'mpi67b067', 'mpi1a139', + 'mpi2a139', 'mpi3a139', 'mpi4a139', 'mpi5a139', 'mpi79a147', + 'mpi67a142', 'mpi67a157', 'mpi6na132', 'mpi6na157', 'mpi66m157', + 'mpi6nb157', 'mpi6fb142', 'mpi67b157', 'mpi7nb142', 'mpi79b142', + 'mpi5b139', 'mpi4b139', 'mpi3b139', 'mpi2b139', 'mpi1b139', + 'mpi1b157', 'mpi1u157', 'mpi2u157', 'mpi3u157', 'mpi4u157', + 'mpi5u157', 'mpi6u157', 'mpi7u157', 'dsl1u180', 'dsl2u180', + 'dsl3u180', 'dsl4u157', 'dsl5u157', 'dsl6u157', 'mpi66m127', + 'mpi66m132', 'mpi66m137', 'mpi66b137', 'mpi6nb137', 'mpi66m307', + 'mpi66m312', 'mpi6na312', 'mpi66b312', 'mpi6nb312', 'mpi66m322', + 'mpi1l020', 'mpi2l020', 'mpi1l050', 'mpi1l110', 'mpi1l180', + 'mpi2l180', 'mpi3l180', 'mpi1l230', 'mpi1l320', 'mpi66m020', + 'mpi66m067', 'mpi66m097', 'mpi66m127', 'mpi66m132', 'mpi66m137', + 'mpi66m157', 'mpi66m200', 'mpi66m247', 'mpi66m277', 'mpi66m307', + 'mpi66m312', 'mpi66m322', 'mpi66m340', 'mpi67a022', 'mpi67a037', + 'mpi67a1', 'mpi67a052', 'mpi67a067', 'mpi67a082', 'mpi67a097', + 'mpi67a2', 'mpi67a142', 'mpi67a157', 'mpi67a3', 'mpi67a217', + 'mpi67a4', 'mpi67a262', 'mpi67a277', 'mpi67a5', 'mpi67a307', + 'mpi67a337', 'mpi67a6', 'mpi67b022', 'mpi67b037', 'mpi67b1', + 'mpi67b052', 'mpi67b097', 'mpi67b2', 'mpi67b157', 'mpi67b3', + 'mpi67b217', 'mpi67b4', 'mpi67b277', 'mpi67b5', 'mpi67b337', + 'mpi67b6', 'mpi79a072', 'mpi79a147', 'mpi79a222', 'mpi79a272', + 'mpi79b067', 'mpi79b142', 'mpi79b217', 'mpi79b277', 'mpi5a139', + 'mpi4a139', 'mpi3a139', 'mpi2a139', 'mpi1a139', 'mpi1b139', + 'mpi2b139', 'mpi3b139', 'mpi4b139', 'mpi5b139', 'mpi5a199', + 'mpi4a199', 'mpi3a199', 'mpi2a199', 'mpi1a199', 'mpi1b199', + 'mpi2b199', 'mpi3b199', 'mpi4b199', 'mpi5b199', 'mpi1a011', + 'mpi1a049', 'mpi1a109', 'mpi1a139', 'mpi1a199', 'mpi1a244', + 'mpi1a274', 'mpi1a341', 'mpi1b011', 'mpi1b049', 'mpi1b109', + 'mpi1b139', 'mpi1b199', 'mpi1b244', 'mpi1b274', 'mpi1b341', + 'isl66m017', 'isl66m042', 'isl66m072', 'isl66m102', 'isl66m132', + 'isl66m197', 'isl66m252', 'isl66m312', 'isl67a017', 'isl67a052', + 'isl67a072', 'isl67a112', 'isl67a132', 'isl67a197', 'isl67a252', + 'isl67a312', 'isl67b017', 'isl67b052', 'isl67b072', 'isl67b112', + 'isl67b132', 'isl67b197', 'isl67b252', 'isl67b312', 'isl79a072', + 'isl79a147', 'isl79a222', 'isl79a272', 'isl79b067', 'isl79b142', + 'isl79b217', 'isl79b277', 'isl5a139', 'isl4a139', 'isl3a139', + 'isl2a139', 'isl1a139', 'isl1b139', 'isl2b139', 'isl3b139', + 'isl4b139', 'isl5b139', 'isl5a199', 'isl4a199', 'isl3a199', + 'isl2a199', 'isl1a199', 'isl1b199', 'isl2b199', 'isl3b199', + 'isl4b199', 'isl5b199', 'isl1a011', 'isl1a049', 'isl1a109', + 'isl1a139', 'isl1a199', 'isl1a244', 'isl1a274', 'isl1a341', + 'isl1b011', 'isl1b049', 'isl1b109', 'isl1b139', 'isl1b199', + 'isl1b244', 'isl1b274', 'isl1b341', 'dsl12a067', 'dsl34a067', + 'dsl59a067', 'dsl79a067', 'dsl67a067', 'dsl66m052', 'dsl67b067', + 'dsl79b067', 'dsl59b067', 'dsl34b067', 'dsl12b067', 'dsl12a157', + 'dsl34a157', 'dsl59a157', 'dsl79a157', 'dsl67a157', 'dsl66m152', + 'dsl67b157', 'dsl79b157', 'dsl59b157', 'dsl34b157', 'dsl12b157', + 'dsl67a067', 'dsl67a157', 'sl67fa345', 'sl67na345', 'dsl66m052', + 'sl66a132', 'sl66b132', 'dsl66m152', 'sl66a312', 'sl66b312', + 'sl67nb015', 'sl67fb015', 'dsl67b067', 'dsl67b157', 'esl66m019', + 'esl019', 'esl66m079', 'esl079', 'esl66m139', 'esl139', + 'esl66m199', 'esl199', 'esl66m259', 'esl259', 'esl66m319', + 'esl319', 'esl67a004', 'esl67a034', 'esl67a064', 'esl67a094', + 'esl67a124', 'esl67a154', 'esl67a184', 'esl67a214', 'esl67a244', 'esl67a274', 'esl67a304', 'esl67a334', 'esl67b004', 'esl67b034', 'esl67b064', 'esl67b094', 'esl67b124', 'esl67b154', 'esl67b184', 'esl67b214', 'esl67b244', 'esl67b274', 'esl67b304', 'esl67b334', 'bti66m053', 'bti66m132', 'bti66m233', 'bti66m312', 'psf1a', 'psf1a', 'psf1a', 'psf1a', 'psf6natotl', 'psf6na', 'psi11mtotl', 'psi11m', 'psi6atotl', 'psi6a', 'psf1a', 'psf6natotl', 'psi11mtotl', 'psi6atotl', 'psf2a', 'psf3a', 'psf4a', 'psf5a', 'psf8a', 'psf9a', 'psf7fa', 'psf7na', 'psf6fa', 'psf6na', 'psf6nb', 'psf6fb', 'psf7nb', 'psf7fb', 'psf9b', 'psf8b', 'psf5b', 'psf4b', 'psf3b', 'psf2b', 'psf1b', 'psi11m', 'psi12a', 'psi23a', 'psi34a', 'psi45a', 'psi58a', 'psi9a', 'psi7a', 'psi6a', 'psi6b', 'psi7b', 'psi9b', 'psi89nb', 'psi89fb', 'psi58b', 'psi45b', 'psi34b', 'psi23b', 'psi12b', 'psi1l', 'psi2l', 'psi3l', 'mpi1b', 'mpi66m020', 'mpi66m097', 'mpi66m020', 'mpi66m097', 'mpi66m067', 'mpi66m247', 'mpi66m097', 'mpi66m277', 'mpi66m127', 'mpi66m307', 'mpi66m157', 'mpi66m340', 'mpi66m200', 'mpi66m020', 'mpi66m247', 'mpi66m127', 'mpi66m277', 'mpi66m157', 'mpi66m307', 'mpi66m200', 'mpi66m340', 'mpi66m067', 'mpi67a022', 'mpi67a217', 'mpi67a037', 'mpi67a067', 'mpi67a052', 'mpi67a022', 'mpi67a067', 'mpi67a262', 'mpi67a082', 'mpi67a052', 'mpi67a097', 'mpi67a082', 'mpi67a142', 'mpi67a037', 'mpi67a217', 'mpi67a097', 'mpi67a262', 'mpi67a277', 'mpi67a277', 'mpi67a307', 'mpi67a307', 'mpi67a337', 'mpi67a337', 'mpi67a142', 'mpi67b022', 'mpi67b052', 'mpi67b037', 'mpi67b217', 'mpi67b052', 'mpi67b037', 'mpi67b097', 'mpi67b277', 'mpi67b157', 'mpi67b337', 'mpi67b217', 'mpi67b097', 'mpi67b277', 'mpi67b157', 'mpi67b337', 'mpi67b022', 'mpi79a072', 'mpi79a222', 'mpi79a147', 'mpi79a072', 'mpi79a222', 'mpi79a272', 'mpi79a272', 'mpi79a147', 'mpi79b067', 'mpi79b217', 'mpi79b142', 'mpi79b067', 'mpi79b217', 'mpi79b277', 'mpi79b277', 'mpi79b142', 'mpi1a011', 'mpi1a199', 'mpi1a049', 'mpi1a244', 'mpi1a109', 'mpi1a011', 'mpi1a139', 'mpi1a341', 'mpi1a199', 'mpi1a139', 'mpi1a244', 'mpi1a274', 'mpi1a274', 'mpi1a109', 'mpi1a341', 'mpi1a049', 'mpi1b011', 'mpi1b199', 'mpi1b049', 'mpi1b244', 'mpi1b109', 'mpi1b011', 'mpi1b139', 'mpi1b341', 'mpi1b199', 'mpi1b139', 'mpi1b244', 'mpi1b274', 'mpi1b274', 'mpi1b109', 'mpi1b341', 'mpi1b049', 'mpi5a199', 'mpi5a139', 'mpi4a199', 'mpi4a139', 'mpi3a199', 'mpi3a139', 'mpi2a199', 'mpi2a139', 'mpi1a199', 'mpi1a139', 'mpi1b199', 'mpi1b139', 'mpi2b199', 'mpi2b139', 'mpi3b199', 'mpi3b139', 'mpi4b199', 'mpi4b139', 'mpi5b199', 'mpi5b139', 'isl66m017', 'isl66m042', 'isl66m042', 'isl66m072', 'isl66m072', 'isl66m252', 'isl66m102', 'isl66m132', 'isl66m132', 'isl66m312', 'isl66m197', 'isl66m017', 'isl66m252', 'isl66m102', 'isl66m312', 'isl66m197', 'isl67a017', 'isl67a052', 'isl67a052', 'isl67a072', 'isl67a072', 'isl67a252', 'isl67a112', 'isl67a132', 'isl67a132', 'isl67a312', 'isl67a197', 'isl67a017', 'isl67a252', 'isl67a112', 'isl67a312', 'isl67a197', 'isl67b017', 'isl67b052', 'isl67b052', 'isl67b072', 'isl67b072', 'isl67b252', 'isl67b112', 'isl67b132', 'isl67b132', 'isl67b312', 'isl67b197', 'isl67b017', 'isl67b252', 'isl67b112', 'isl67b312', 'isl67b197', 'isl79a072', 'isl79a222', 'isl79a147', 'isl79a072', 'isl79a222', 'isl79a272', 'isl79a272', 'isl79a147', 'isl79b067', 'isl79b217', 'isl79b142', 'isl79b067', 'isl79b217', 'isl79b277', 'isl79b277', 'isl79b142', 'isl1a011', 'isl1a199', 'isl1a049', 'isl1a244', 'isl1a109', 'isl1a011', 'isl1a139', 'isl1a341', 'isl1a199', 'isl1a139', 'isl1a244', 'isl1a274', 'isl1a274', 'isl1a109', 'isl1a341', 'isl1a049', 'isl1b011', 'isl1b199', 'isl1b049', 'isl1b244', 'isl1b109', 'isl1b011', 'isl1b139', 'isl1b341', 'isl1b199', 'isl1b139', 'isl1b244', 'isl1b274', 'isl1b274', 'isl1b109', 'isl1b341', 'isl1b049', 'isl5a199', 'isl5a139', 'isl4a199', 'isl4a139', 'isl3a199', 'isl3a139', 'isl2a199', 'isl2a139', 'isl1a199', 'isl1a139', 'isl1b199', 'isl1b139', 'isl2b199', 'isl2b139', 'isl3b199', 'isl3b139', 'isl4b199', 'isl4b139', 'isl5b199', 'isl5b139', 'esl66m019', 'esl66m079', 'esl66m079', 'esl66m259', 'esl66m139', 'esl66m319', 'esl66m199', 'esl66m019', 'esl66m259', 'esl66m139', 'esl66m319', 'esl66m199', 'esl66m079', 'esl66m259', 'esl66m139', 'esl66m319', 'esl66m199', 'esl66m019', 'esl67a004', 'esl67a244', 'esl67a034', 'esl67a154', 'esl67a064', 'esl67a184', 'esl67a094', 'esl67a274', 'esl67a124', 'esl67a304', 'esl67a154', 'esl67a334', 'esl67a184', 'esl67a004', 'esl67a214', 'esl67a094', 'esl67a244', 'esl67a124', 'esl67a274', 'esl67a034', 'esl67a304', 'esl67a064', 'esl67a334', 'esl67a214', 'esl67b004', 'esl67b244', 'esl67b034', 'esl67b154', 'esl67b064', 'esl67b184', 'esl67b094', 'esl67b274', 'esl67b124', 'esl67b304', 'esl67b154', 'esl67b334', 'esl67b184', 'esl67b004', 'esl67b214', 'esl67b094', 'esl67b244', 'esl67b124', 'esl67b274', 'esl67b034', 'esl67b304', 'esl67b064', 'esl67b334', 'esl67b214', 'bti66m053', 'bti66m233', 'bti66m132', 'bti66m053', 'bti66m233', 'bti66m312', 'bti66m312', 'bti66m132', 'mpi2a067', 'mpi1u157', 'isl79a'] name_without_d=['mpi.11.m.322', 'mpi.1.a.322', 'mpi.2.a.322', 'mpi.3.a.322', 'mpi.4.a.322', 'mpi.5.a.322', 'mpi.8.a.322', 'mpi.89.a.322', 'mpi.9.a.322', 'mpi.79.fa.322', 'mpi.79.na.322', 'mpi.7.fa.322', 'mpi.7.na.322', 'mpi.67.a.322', 'mpi.6.fa.322', 'mpi.6.na.322', 'mpi.66.m.322', 'mpi.1.b.322', 'mpi.2.b.322', 'mpi.3.b.322', 'mpi.4.b.322', 'mpi.5.b.322', 'mpi.8.b.322', 'mpi.89.b.322', 'mpi.9.b.322', 'mpi.79.b.322', 'mpi.7.fb.322', 'mpi.7.nb.322', 'mpi.67.b.322', 'mpi.6.fb.322', 'mpi.6.nb.322', 'mpi.2.a.067', 'mpi.11.m.067', 'mpi.2.b.067', 'mpi.67.a.097', 'mpi.67.a.067', 'mpi.66.m.067', 'mpi.67.b.097', 'mpi.67.b.067', 'mpi.1.a.139', 'mpi.2.a.139', 'mpi.3.a.139', 'mpi.4.a.139', 'mpi.5.a.139', 'mpi.79.a.147', 'mpi.67.a.142', 'mpi.67.a.157', 'mpi.6.na.132', 'mpi.6.na.157', 'mpi.66.m.157', 'mpi.6.nb.157', 'mpi.6.fb.142', 'mpi.67.b.157', 'mpi.7.nb.142', 'mpi.79.b.142', 'mpi.5.b.139', 'mpi.4.b.139', 'mpi.3.b.139', 'mpi.2.b.139', 'mpi.1.b.139', 'mpi.1.b.157', 'mpi.1.u.157', 'mpi.2.u.157', 'mpi.3.u.157', 'mpi.4.u.157', 'mpi.5.u.157', 'mpi.6.u.157', 'mpi.7.u.157', 'dsl.1.u.180', 'dsl.2.u.180', 'dsl.3.u.180', 'dsl.4.u.157', 'dsl.5.u.157', 'dsl.6.u.157', 'mpi.66.m.127', 'mpi.66.m.132', 'mpi.66.m.137', 'mpi.66.b.137', 'mpi.6.nb.137', 'mpi.66.m.307', 'mpi.66.m.312', 'mpi.6.na.312', 'mpi.66.b.312', 'mpi.6.nb.312', 'mpi.66.m.322', 'mpi.1.l.020', 'mpi.2.l.020', 'mpi.1.l.050', 'mpi.1.l.110', 'mpi.1.l.180', 'mpi.2.l.180', 'mpi.3.l.180', 'mpi.1.l.230', 'mpi.1.l.320', 'mpi.66.m.020', 'mpi.66.m.067', 'mpi.66.m.097', 'mpi.66.m.127', 'mpi.66.m.132', 'mpi.66.m.137', 'mpi.66.m.157', 'mpi.66.m.200', 'mpi.66.m.247', 'mpi.66.m.277', 'mpi.66.m.307', 'mpi.66.m.312', 'mpi.66.m.322', 'mpi.66.m.340', 'mpi.67.a.022', 'mpi.67.a.037', 'mpi.67.a.1', 'mpi.67.a.052', 'mpi.67.a.067', 'mpi.67.a.082', 'mpi.67.a.097', 'mpi.67.a.2', 'mpi.67.a.142', 'mpi.67.a.157', 'mpi.67.a.3', 'mpi.67.a.217', 'mpi.67.a.4', 'mpi.67.a.262', 'mpi.67.a.277', 'mpi.67.a.5', 'mpi.67.a.307', 'mpi.67.a.337', 'mpi.67.a.6', 'mpi.67.b.022', 'mpi.67.b.037', 'mpi.67.b.1', 'mpi.67.b.052', 'mpi.67.b.097', 'mpi.67.b.2', 'mpi.67.b.157', 'mpi.67.b.3', 'mpi.67.b.217', 'mpi.67.b.4', 'mpi.67.b.277', 'mpi.67.b.5', 'mpi.67.b.337', 'mpi.67.b.6', 'mpi.79.a.072', 'mpi.79.a.147', 'mpi.79.a.222', 'mpi.79.a.272', 'mpi.79.b.067', 'mpi.79.b.142', 'mpi.79.b.217', 'mpi.79.b.277', 'mpi.5.a.139', 'mpi.4.a.139', 'mpi.3.a.139', 'mpi.2.a.139', 'mpi.1.a.139', 'mpi.1.b.139', 'mpi.2.b.139', 'mpi.3.b.139', 'mpi.4.b.139', 'mpi.5.b.139', 'mpi.5.a.199', 'mpi.4.a.199', 'mpi.3.a.199', 'mpi.2.a.199', 'mpi.1.a.199', 'mpi.1.b.199', 'mpi.2.b.199', 'mpi.3.b.199', 'mpi.4.b.199', 'mpi.5.b.199', 'mpi.1.a.011', 'mpi.1.a.049', 'mpi.1.a.109', 'mpi.1.a.139', 'mpi.1.a.199', 'mpi.1.a.244', 'mpi.1.a.274', 'mpi.1.a.341', 'mpi.1.b.011', 'mpi.1.b.049', 'mpi.1.b.109', 'mpi.1.b.139', 'mpi.1.b.199', 'mpi.1.b.244', 'mpi.1.b.274', 'mpi.1.b.341', 'isl.66.m.017', 'isl.66.m.042', 'isl.66.m.072', 'isl.66.m.102', 'isl.66.m.132', 'isl.66.m.197', 'isl.66.m.252', 'isl.66.m.312', 'isl.67.a.017', 'isl.67.a.052', 'isl.67.a.072', 'isl.67.a.112', 'isl.67.a.132', 'isl.67.a.197', 'isl.67.a.252', 'isl.67.a.312', 'isl.67.b.017', 'isl.67.b.052', 'isl.67.b.072', 'isl.67.b.112', 'isl.67.b.132', 'isl.67.b.197', 'isl.67.b.252', 'isl.67.b.312', 'isl.79.a.072', 'isl.79.a.147', 'isl.79.a.222', 'isl.79.a.272', 'isl.79.b.067', 'isl.79.b.142', 'isl.79.b.217', 'isl.79.b.277', 'isl.5.a.139', 'isl.4.a.139', 'isl.3.a.139', 'isl.2.a.139', 'isl.1.a.139', 'isl.1.b.139', 'isl.2.b.139', 'isl.3.b.139', 'isl.4.b.139', 'isl.5.b.139', 'isl.5.a.199', 'isl.4.a.199', 'isl.3.a.199', 'isl.2.a.199', 'isl.1.a.199', 'isl.1.b.199', 'isl.2.b.199', 'isl.3.b.199', 'isl.4.b.199', 'isl.5.b.199', 'isl.1.a.011', 'isl.1.a.049', 'isl.1.a.109', 'isl.1.a.139', 'isl.1.a.199', 'isl.1.a.244', 'isl.1.a.274', 'isl.1.a.341', 'isl.1.b.011', 'isl.1.b.049', 'isl.1.b.109', 'isl.1.b.139', 'isl.1.b.199', 'isl.1.b.244', 'isl.1.b.274', 'isl.1.b.341', 'dsl.12.a.067', 'dsl.34.a.067', 'dsl.59.a.067', 'dsl.79.a.067', 'dsl.67.a.067', 'dsl.66.m.052', 'dsl.67.b.067', 'dsl.79.b.067', 'dsl.59.b.067', 'dsl.34.b.067', 'dsl.12.b.067', 'dsl.12.a.157', 'dsl.34.a.157', 'dsl.59.a.157', 'dsl.79.a.157', 'dsl.67.a.157', 'dsl.66.m.152', 'dsl.67.b.157', 'dsl.79.b.157', 'dsl.59.b.157', 'dsl.34.b.157', 'dsl.12.b.157', 'dsl.67.a.067', 'dsl.67.a.157', 'sl.67.fa.345', 'sl.67.na.345', 'dsl.66.m.052', 'sl.66.a.132', 'sl.66.b.132', 'dsl.66.m.152', 'sl.66.a.312', 'sl.66.b.312', 'sl.67.nb.015', 'sl.67.fb.015', 'dsl.67.b.067', 'dsl.67.b.157', 'esl.66.m.019', 'esl.019..', 'esl.66.m.079', 'esl.079..', 'esl.66.m.139', 'esl.139..', 'esl.66.m.199', 'esl.199..', 'esl.66.m.259', 'esl.259..', 'esl.66.m.319', 'esl.319..', 'esl.67.a.004', 'esl.67.a.034', 'esl.67.a.064', 'esl.67.a.094', 'esl.67.a.124', 'esl.67.a.154', 'esl.67.a.184', 'esl.67.a.214', 'esl.67.a.244', 'esl.67.a.274', 'esl.67.a.304', 'esl.67.a.334', 'esl.67.b.004', 'esl.67.b.034', 'esl.67.b.064', 'esl.67.b.094', 'esl.67.b.124', 'esl.67.b.154', 'esl.67.b.184', 'esl.67.b.214', 'esl.67.b.244', 'esl.67.b.274', 'esl.67.b.304', 'esl.67.b.334', 'bti.66.m.053', 'bti.66.m.132', 'bti.66.m.233', 'bti.66.m.312', 'psf.1.a.', 'psf.1.a.', 'psf.1.a.', 'psf.1.a.', 'psf.6.natotl.', 'psf.6.na.', 'psi.11.mtotl.', 'psi.11.m.', 'psi.6.atotl.', 'psi.6.a.', 'psf.1.a.', 'psf.6.natotl.', 'psi.11.mtotl.', 'psi.6.atotl.', 'psf.2.a.', 'psf.3.a.', 'psf.4.a.', 'psf.5.a.', 'psf.8.a.', 'psf.9.a.', 'psf.7.fa.', 'psf.7.na.', 'psf.6.fa.', 'psf.6.na.', 'psf.6.nb.', 'psf.6.fb.', 'psf.7.nb.', 'psf.7.fb.', 'psf.9.b.', 'psf.8.b.', 'psf.5.b.', 'psf.4.b.', 'psf.3.b.', 'psf.2.b.', 'psf.1.b.', 'psi.11.m.', 'psi.12.a.', 'psi.23.a.', 'psi.34.a.', 'psi.45.a.', 'psi.58.a.', 'psi.9.a.', 'psi.7.a.', 'psi.6.a.', 'psi.6.b.', 'psi.7.b.', 'psi.9.b.', 'psi.89.nb.', 'psi.89.fb.', 'psi.58.b.', 'psi.45.b.', 'psi.34.b.', 'psi.23.b.', 'psi.12.b.', 'psi.1.l.', 'psi.2.l.', 'psi.3.l.', 'mpi.1.b.', 'mpi.66.m.020', 'mpi.66.m.097', 'mpi.66.m.020', 'mpi.66.m.097', 'mpi.66.m.067', 'mpi.66.m.247', 'mpi.66.m.097', 'mpi.66.m.277', 'mpi.66.m.127', 'mpi.66.m.307', 'mpi.66.m.157', 'mpi.66.m.340', 'mpi.66.m.200', 'mpi.66.m.020', 'mpi.66.m.247', 'mpi.66.m.127', 'mpi.66.m.277', 'mpi.66.m.157', 'mpi.66.m.307', 'mpi.66.m.200', 'mpi.66.m.340', 'mpi.66.m.067', 'mpi.67.a.022', 'mpi.67.a.217', 'mpi.67.a.037', 'mpi.67.a.067', 'mpi.67.a.052', 'mpi.67.a.022', 'mpi.67.a.067', 'mpi.67.a.262', 'mpi.67.a.082', 'mpi.67.a.052', 'mpi.67.a.097', 'mpi.67.a.082', 'mpi.67.a.142', 'mpi.67.a.037', 'mpi.67.a.217', 'mpi.67.a.097', 'mpi.67.a.262', 'mpi.67.a.277', 'mpi.67.a.277', 'mpi.67.a.307', 'mpi.67.a.307', 'mpi.67.a.337', 'mpi.67.a.337', 'mpi.67.a.142', 'mpi.67.b.022', 'mpi.67.b.052', 'mpi.67.b.037', 'mpi.67.b.217', 'mpi.67.b.052', 'mpi.67.b.037', 'mpi.67.b.097', 'mpi.67.b.277', 'mpi.67.b.157', 'mpi.67.b.337', 'mpi.67.b.217', 'mpi.67.b.097', 'mpi.67.b.277', 'mpi.67.b.157', 'mpi.67.b.337', 'mpi.67.b.022', 'mpi.79.a.072', 'mpi.79.a.222', 'mpi.79.a.147', 'mpi.79.a.072', 'mpi.79.a.222', 'mpi.79.a.272', 'mpi.79.a.272', 'mpi.79.a.147', 'mpi.79.b.067', 'mpi.79.b.217', 'mpi.79.b.142', 'mpi.79.b.067', 'mpi.79.b.217', 'mpi.79.b.277', 'mpi.79.b.277', 'mpi.79.b.142', 'mpi.1.a.011', 'mpi.1.a.199', 'mpi.1.a.049', 'mpi.1.a.244', 'mpi.1.a.109', 'mpi.1.a.011', 'mpi.1.a.139', 'mpi.1.a.341', 'mpi.1.a.199', 'mpi.1.a.139', 'mpi.1.a.244', 'mpi.1.a.274', 'mpi.1.a.274', 'mpi.1.a.109', 'mpi.1.a.341', 'mpi.1.a.049', 'mpi.1.b.011', 'mpi.1.b.199', 'mpi.1.b.049', 'mpi.1.b.244', 'mpi.1.b.109', 'mpi.1.b.011', 'mpi.1.b.139', 'mpi.1.b.341', 'mpi.1.b.199', 'mpi.1.b.139', 'mpi.1.b.244', 'mpi.1.b.274', 'mpi.1.b.274', 'mpi.1.b.109', 'mpi.1.b.341', 'mpi.1.b.049', 'mpi.5.a.199', 'mpi.5.a.139', 'mpi.4.a.199', 'mpi.4.a.139', 'mpi.3.a.199', 'mpi.3.a.139', 'mpi.2.a.199', 'mpi.2.a.139', 'mpi.1.a.199', 'mpi.1.a.139', 'mpi.1.b.199', 'mpi.1.b.139', 'mpi.2.b.199', 'mpi.2.b.139', 'mpi.3.b.199', 'mpi.3.b.139', 'mpi.4.b.199', 'mpi.4.b.139', 'mpi.5.b.199', 'mpi.5.b.139', 'isl.66.m.017', 'isl.66.m.042', 'isl.66.m.042', 'isl.66.m.072', 'isl.66.m.072', 'isl.66.m.252', 'isl.66.m.102', 'isl.66.m.132', 'isl.66.m.132', 'isl.66.m.312', 'isl.66.m.197', 'isl.66.m.017', 'isl.66.m.252', 'isl.66.m.102', 'isl.66.m.312', 'isl.66.m.197', 'isl.67.a.017', 'isl.67.a.052', 'isl.67.a.052', 'isl.67.a.072', 'isl.67.a.072', 'isl.67.a.252', 'isl.67.a.112', 'isl.67.a.132', 'isl.67.a.132', 'isl.67.a.312', 'isl.67.a.197', 'isl.67.a.017', 'isl.67.a.252', 'isl.67.a.112', 'isl.67.a.312', 'isl.67.a.197', 'isl.67.b.017', 'isl.67.b.052', 'isl.67.b.052', 'isl.67.b.072', 'isl.67.b.072', 'isl.67.b.252', 'isl.67.b.112', 'isl.67.b.132', 'isl.67.b.132', 'isl.67.b.312', 'isl.67.b.197', 'isl.67.b.017', 'isl.67.b.252', 'isl.67.b.112', 'isl.67.b.312', 'isl.67.b.197', 'isl.79.a.072', 'isl.79.a.222', 'isl.79.a.147', 'isl.79.a.072', 'isl.79.a.222', 'isl.79.a.272', 'isl.79.a.272', 'isl.79.a.147', 'isl.79.b.067', 'isl.79.b.217', 'isl.79.b.142', 'isl.79.b.067', 'isl.79.b.217', 'isl.79.b.277', 'isl.79.b.277', 'isl.79.b.142', 'isl.1.a.011', 'isl.1.a.199', 'isl.1.a.049', 'isl.1.a.244', 'isl.1.a.109', 'isl.1.a.011', 'isl.1.a.139', 'isl.1.a.341', 'isl.1.a.199', 'isl.1.a.139', 'isl.1.a.244', 'isl.1.a.274', 'isl.1.a.274', 'isl.1.a.109', 'isl.1.a.341', 'isl.1.a.049', 'isl.1.b.011', 'isl.1.b.199', 'isl.1.b.049', 'isl.1.b.244', 'isl.1.b.109', 'isl.1.b.011', 'isl.1.b.139', 'isl.1.b.341', 'isl.1.b.199', 'isl.1.b.139', 'isl.1.b.244', 'isl.1.b.274', 'isl.1.b.274', 'isl.1.b.109', 'isl.1.b.341', 'isl.1.b.049', 'isl.5.a.199', 'isl.5.a.139', 'isl.4.a.199', 'isl.4.a.139', 'isl.3.a.199', 'isl.3.a.139', 'isl.2.a.199', 'isl.2.a.139', 'isl.1.a.199', 'isl.1.a.139', 'isl.1.b.199', 'isl.1.b.139', 'isl.2.b.199', 'isl.2.b.139', 'isl.3.b.199', 'isl.3.b.139', 'isl.4.b.199', 'isl.4.b.139', 'isl.5.b.199', 'isl.5.b.139', 'esl.66.m.019', 'esl.66.m.079', 'esl.66.m.079', 'esl.66.m.259', 'esl.66.m.139', 'esl.66.m.319', 'esl.66.m.199', 'esl.66.m.019', 'esl.66.m.259', 'esl.66.m.139', 'esl.66.m.319', 'esl.66.m.199', 'esl.66.m.079', 'esl.66.m.259', 'esl.66.m.139', 'esl.66.m.319', 'esl.66.m.199', 'esl.66.m.019', 'esl.67.a.004', 'esl.67.a.244', 'esl.67.a.034', 'esl.67.a.154', 'esl.67.a.064', 'esl.67.a.184', 'esl.67.a.094', 'esl.67.a.274', 'esl.67.a.124', 'esl.67.a.304', 'esl.67.a.154', 'esl.67.a.334', 'esl.67.a.184', 'esl.67.a.004', 'esl.67.a.214', 'esl.67.a.094', 'esl.67.a.244', 'esl.67.a.124', 'esl.67.a.274', 'esl.67.a.034', 'esl.67.a.304', 'esl.67.a.064', 'esl.67.a.334', 'esl.67.a.214', 'esl.67.b.004', 'esl.67.b.244', 'esl.67.b.034', 'esl.67.b.154', 'esl.67.b.064', 'esl.67.b.184', 'esl.67.b.094', 'esl.67.b.274', 'esl.67.b.124', 'esl.67.b.304', 'esl.67.b.154', 'esl.67.b.334', 'esl.67.b.184', 'esl.67.b.004', 'esl.67.b.214', 'esl.67.b.094', 'esl.67.b.244', 'esl.67.b.124', 'esl.67.b.274', 'esl.67.b.034', 'esl.67.b.304', 'esl.67.b.064', 'esl.67.b.334', 'esl.67.b.214', 'bti.66.m.053', 'bti.66.m.233', 'bti.66.m.132', 'bti.66.m.053', 'bti.66.m.233', 'bti.66.m.312', 'bti.66.m.312', 'bti.66.m.132', 'mpi.2.a.067', 'mpi.1.u.157', 'isl.79.a.'] diff --git a/pyproject.toml b/pyproject.toml index 304962f..34eea6b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,6 +4,7 @@ version = "0.0.1" authors = [ {name="Peter Steiner", email="peter.steiner@princeton.edu"}, {name="Max Tian Curie", email="max.curie@princeton.edu"}, + {name="Nathaniel Chen", email="nathaniel@princeton.edu"}, {name="Azarakhsh Jalalvand", email="azarakhsh.jalalvand@princeton.edu"} ] description = "FusionAIHub - Fetch nuclear fusion data, preprocess it, and use it for training machine learning models." @@ -16,7 +17,8 @@ classifiers = [ ] license = {file = "LICENSE"} dependencies = [ - "h5py", "numpy", "pandas", "matplotlib", "scipy", "tqdm", "opencv-python" + "h5py", "numpy", "pandas", "matplotlib", "scipy", "tqdm", "opencv-python", + "paramiko" ] [project.urls] @@ -25,4 +27,3 @@ Documentation = "https://readthedocs.org" Repository = "https://github.com/PlasmaControl/FusionAIHub" Issues = "https://github.com/PlasmaControl/FusionAIHub/issues" Changelog = "https://github.com" - diff --git a/src/fusion_ai_hub/__init__.py b/src/fusion_ai_hub/__init__.py index e69de29..83986cb 100644 --- a/src/fusion_ai_hub/__init__.py +++ b/src/fusion_ai_hub/__init__.py @@ -0,0 +1 @@ +from . import core \ No newline at end of file diff --git a/src/fusion_ai_hub/core/__init__.py b/src/fusion_ai_hub/core/__init__.py index e69de29..a310d75 100644 --- a/src/fusion_ai_hub/core/__init__.py +++ b/src/fusion_ai_hub/core/__init__.py @@ -0,0 +1,4 @@ +from . import time_domain_filtering +from . import spectral_representation + +__all__ = ["time_domain_filtering", "spectral_representation", ] diff --git a/src/fusion_ai_hub/core/spectral_representation/__init__.py b/src/fusion_ai_hub/core/spectral_representation/__init__.py new file mode 100644 index 0000000..84a33b0 --- /dev/null +++ b/src/fusion_ai_hub/core/spectral_representation/__init__.py @@ -0,0 +1,4 @@ +from .sft import spectrogram, stft + + +__all__ = ["spectrogram", "stft"] diff --git a/src/fusion_ai_hub/core/spectral_representation/sft.py b/src/fusion_ai_hub/core/spectral_representation/sft.py new file mode 100644 index 0000000..34bae0a --- /dev/null +++ b/src/fusion_ai_hub/core/spectral_representation/sft.py @@ -0,0 +1,53 @@ +import numpy as np +from scipy import signal +from typing import Any, Literal, Optional, Tuple, Union + + +__all__ = ['spectrogram', 'stft'] + + +def spectrogram(y: np.ndarray, *, fs: float = 48000, n_fft: int = 2048, + hop_length: int = 256, win_length: int = 2048, + window: Union[str, float, Tuple[str, Any, ...]] = "hamming", + scaling: Literal["magnitude", "psd"] = "magnitude", + detrend: Literal["linear", "constant"] = "constant", + pad_mode: Literal["zeros", "edge", "even", "odd"] = 'zeros', + return_t_f: bool = False) \ + -> Union[np.ndarray, Tuple[np.ndarray, ...]]: + fft_window = signal.get_window(window, win_length, fftbins=True) + + sft = signal.ShortTimeFFT(fft_window, hop_length, fs, fft_mode='onesided', + mfft=n_fft, dual_win=None, scale_to=scaling, + phase_shift=None) + + t = sft.t(y.shape[0]) + f = sft.f + + spectrogram_matrix = sft.spectrogram(y, detr=detrend, padding=pad_mode) + + if return_t_f: + return spectrogram_matrix, t, f + return spectrogram_matrix + + +def stft(y: np.ndarray, *, fs: float = 48000, n_fft: int = 2048, + hop_length: Optional[int] = None, win_length: Optional[int] = None, + window: Union[str, float, Tuple[str, Any, ...]] = "hamming", + scaling: Literal["magnitude", "psd"] = "magnitude", + pad_mode: Literal["zeros", "edge", "even", "odd"] = 'zeros', + return_t_f: bool = False) \ + -> Union[np.ndarray, Tuple[np.ndarray, ...]]: + fft_window = signal.get_window(window, win_length, fftbins=True) + + sft = signal.ShortTimeFFT(fft_window, hop_length, fs, fft_mode='onesided', + mfft=n_fft, dual_win=None, scale_to=scaling, + phase_shift=None) + + t = sft.t(y.shape[0]) + f = sft.f + + stft_matrix = sft.stft(y, padding=pad_mode) + + if return_t_f: + return stft_matrix, t, f + return stft_matrix diff --git a/src/fusion_ai_hub/core/time_domain_filtering/__init__.py b/src/fusion_ai_hub/core/time_domain_filtering/__init__.py new file mode 100644 index 0000000..1212ec2 --- /dev/null +++ b/src/fusion_ai_hub/core/time_domain_filtering/__init__.py @@ -0,0 +1,5 @@ +from .filtering import lfilter, filtfilt +from .preemphasis import preemphasis, deemphasis + + +__all__ = ["lfilter", "filtfilt", "preemphasis", "deemphasis"] diff --git a/src/fusion_ai_hub/core/time_domain_filtering/filtering.py b/src/fusion_ai_hub/core/time_domain_filtering/filtering.py new file mode 100644 index 0000000..349e882 --- /dev/null +++ b/src/fusion_ai_hub/core/time_domain_filtering/filtering.py @@ -0,0 +1,131 @@ +""" +Filtering +========= + +Time-domain filters +------------------- +.. autosummary:: + :toctree: generated/ + + mel + chroma + wavelet + semitone_filterbank + +Window functions +---------------- +.. autosummary:: + :toctree: generated/ + + window_bandwidth + get_window +""" +import numpy as np +from scipy import signal +from typing import Optional, Tuple, Union +from numpy.typing import ArrayLike +from scipy.signal import get_window + + +__all__ = ["lfilter", "filtfilt"] + + +def lfilter(y: np.ndarray, *, b: ArrayLike, a: Optional[ArrayLike] = None, + zi: Optional[ArrayLike] = None, return_zf: bool = False) \ + -> Union[np.ndarray, Tuple[np.ndarray, np.ndarray]]: + """ + Filter a signal with a FIR or an IIR digital filter: + + y[n] = b[0]*x[n] + b[1]*x[n-1] + ... + b[M]*x[n-M] + - a[1]*y[n-1] - ... - a[N]*y[n-N] + + + Parameters + ---------- + y : np.ndarray [shape=(..., n_samples,)] + The signal on which to apply the digital filter. + Can be a multichannel signal. + + b : ArrayLike + The numerator coefficient vector in a 1-D sequence. + + a : ArrayLike + The denominator coefficient vector in a 1-D sequence. Note that only + the coefficients beginning from ``a[1]`` need to be supplied. If ``a`` + is ``None``, then the resulting filter is a FIR filter. + + zi : ArrayLike + Initial filter state. When making successive calls to non-overlapping + frames, this can be set to the ``zf`` returned from the previous call. + + return_zf : + If ``True``, return the final filter state. + If ``False``, only return the pre-emphasized signal. + + Returns + ------- + y_out : np.ndarray [shape=(..., n_samples,)] + Filtered signal. + zf : np.ndarray + If ``return_zf=True``, the final filter state is also returned. + """ + b = np.asarray(b, dtype=y.dtype) + + if a is None: + a = [1.0] + else: + a = np.insert(a, 0, 1.0) + + a = np.asarray(a, dtype=y.dtype) + + if zi is None: + zi = signal.lfilter_zi(b, a) + + zi = np.atleast_1d(zi) + + y_out, zf = signal.lfilter(b, a, y, zi=np.asarray(zi, dtype=y.dtype)) + + if return_zf: + return y_out, zf + + return y_out + + +def filtfilt(y: np.ndarray, *, b: ArrayLike, a: Optional[ArrayLike] = None) \ + -> np.ndarray: + """ + Filter a signal with a FIR or IIR digital filter forward and backward. + + This function applies a linear digital filter twice, once forward and once + backwards. The combined filter has zero phase and a filter order twice that + of the original. + + Parameters + ---------- + y : np.ndarray [shape=(..., n_samples,)] + The signal on which to apply the digital filter. + Can be a multichannel signal. + + b : ArrayLike + The numerator coefficient vector in a 1-D sequence. + + a : ArrayLike + The denominator coefficient vector in a 1-D sequence. Note that only + the coefficients beginning from ``a[1]`` need to be supplied. If ``a`` + is ``None``, then the resulting filter is a FIR filter. + + Returns + ------- + y_out : np.ndarray [shape=(..., n_samples)] + Filtered signal. + """ + b = np.asarray(b, dtype=y.dtype) + + if a is None: + a = [1.0] + else: + a = np.insert(a, 0, 1.0) + + a = np.asarray(a, dtype=y.dtype) + y_out = signal.filtfilt(b, a, y) + return y_out diff --git a/src/fusion_ai_hub/core/time_domain_filtering/preemphasis.py b/src/fusion_ai_hub/core/time_domain_filtering/preemphasis.py new file mode 100644 index 0000000..a09e3b4 --- /dev/null +++ b/src/fusion_ai_hub/core/time_domain_filtering/preemphasis.py @@ -0,0 +1,137 @@ +""" +Preemphasis +=========== + +.. autosummary:: + :toctree: generated/ + + preemphasis + deemphasis +""" +import numpy as np +from typing import Optional, Tuple, Union +from numpy.typing import ArrayLike +from .filtering import lfilter + + +__all__ = ['preemphasis', 'deemphasis'] + + +def preemphasis(y: np.ndarray, *, coef: float = 0.97, + zi: Optional[ArrayLike] = None, return_zf: bool = False) \ + -> Union[np.ndarray, Tuple[np.ndarray, np.ndarray]]: + """ + Pre-emphasis a signal with a first-order differencing filter: + + y[n] -> y[n] - coef * y[n-1] + + This function is taken from librosa and modified for own purposes. + + Parameters + ---------- + y : np.ndarray [shape=(..., n_samples,)] + The signal on which to apply the pre-emphasis filter. + Can be a multichannel signal. + + coef : float, default=0.97 + The pre-emphasis coefficient. It should be between 0 and 1. + + At the limit ``coef=0``, the signal is unchanged. + + At the limit ``coef=1``, the result is the first-order difference of + the signal. + + zi : ArrayLike + Initial filter state. When making successive calls to non-overlapping + frames, this can be set to the ``zf`` returned from the previous call. + + By default, ``zi`` is initialized as ``2*y[0] - y[1]``. + + return_zf : bool, default=False + If ``True``, return the final filter state. + If ``False``, only return the pre-emphasized signal. + + Returns + ------- + y_out : np.ndarray [shape=(..., n_samples,)] + pre-emphasized signal + zf : np.ndarray + If ``return_zf=True``, the final filter state is also returned. + """ + b = np.asarray([1.0, -coef], dtype=y.dtype) + + if zi is None: + zi = 2 * y[..., 0:1] - y[..., 1:2] + + y_out, zf = lfilter(y, b=b, zi=zi, return_zf=True) + + if return_zf: + return y_out, zf + + return y_out + + +def deemphasis(y: np.ndarray, *, coef: float = 0.97, + zi: Optional[ArrayLike] = None, return_zf: bool = False) \ + -> Union[np.ndarray, Tuple[np.ndarray, np.ndarray]]: + """ + De-emphasize an audio signal with the inverse operation of preemphasis. + + If y = preemphasis(x, coef=coef, zi=zi), the deemphasis is: + + >>> x[i] = y[i] + coef * x[i-1] + >>> x = deemphasis(y, coef=coef, zi=zi) + + Parameters + ---------- + y : np.ndarray [shape=(..., n_samples,)] + The signal on which to apply the pre-emphasis filter. + Can be a multichannel signal. + + coef : float, default=0.97 + The pre-emphasis coefficient. It should be between 0 and 1. + + At the limit ``coef=0``, the signal is unchanged. + + At the limit ``coef=1``, the result is the first-order difference of + the signal. + + zi : number + Initial filter state. If inverting a previous preemphasis(), the same + value should be used. + + By default, ``zi`` is initialized as + ``((2 - coef) * y[0] - y[1]) / (3 - coef)``. This value corresponds to + the transformation of the default initialization of ``zi`` in + ``preemphasis()``, ``2*x[0] - x[1]``. + + return_zf : boolean + If ``True``, return the final filter state. + If ``False``, only return the pre-emphasized signal. + + Returns + ------- + y_out : np.ndarray [shape=(..., n_samples)] + pre-emphasized signal + zf : np.ndarray + If ``return_zf=True``, the final filter state is also returned. + """ + b = np.array([1.0, -coef], dtype=y.dtype) + + if zi is None: + # initialize with all zeros + zi = np.zeros(list(y.shape[:-1]) + [1], dtype=y.dtype) + y_out, zf = lfilter(y, b=b, zi=zi, return_zf=True) + + # factor in the linear extrapolation + y_out -= (((2 - coef) * y[..., 0:1] - y[..., 1:2]) / (3 - coef) + * (coef ** np.arange(y.shape[-1])) + ) + + else: + y_out, zf = lfilter(y, b=b, zi=zi, return_zf=True) + + if return_zf: + return y_out, zf + else: + return y_out diff --git a/src/fusion_ai_hub/sampling/__init__.py b/src/fusion_ai_hub/sampling/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/fusion_ai_hub/util/utils.py b/src/fusion_ai_hub/util/utils.py new file mode 100644 index 0000000..6cd4b51 --- /dev/null +++ b/src/fusion_ai_hub/util/utils.py @@ -0,0 +1,5 @@ +import numpy as np +from typing import Any + + + From 21f6df985c4b6c82edcfe9502a8bcb14031e1972 Mon Sep 17 00:00:00 2001 From: renierts Date: Thu, 16 May 2024 19:08:14 -0400 Subject: [PATCH 010/103] Added docstrings for STFT and spectrogram. Added functionalities to resample a time-series and an empty module for time-series interpolation. --- .../core/fusion_signal/__init__.py | 0 .../core/fusion_signal/interpolation.py | 0 .../core/fusion_signal/resampling.py | 93 ++++++++++ .../core/spectral_representation/sft.py | 163 ++++++++++++++++++ 4 files changed, 256 insertions(+) create mode 100644 src/fusion_ai_hub/core/fusion_signal/__init__.py create mode 100644 src/fusion_ai_hub/core/fusion_signal/interpolation.py create mode 100644 src/fusion_ai_hub/core/fusion_signal/resampling.py diff --git a/src/fusion_ai_hub/core/fusion_signal/__init__.py b/src/fusion_ai_hub/core/fusion_signal/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/fusion_ai_hub/core/fusion_signal/interpolation.py b/src/fusion_ai_hub/core/fusion_signal/interpolation.py new file mode 100644 index 0000000..e69de29 diff --git a/src/fusion_ai_hub/core/fusion_signal/resampling.py b/src/fusion_ai_hub/core/fusion_signal/resampling.py new file mode 100644 index 0000000..a88eec5 --- /dev/null +++ b/src/fusion_ai_hub/core/fusion_signal/resampling.py @@ -0,0 +1,93 @@ +import numpy as np +from scipy import signal + + +def resample(y: np.ndarray, *, orig_fs: float, target_fs: float, + resample_type: str = "scipy", scale: bool = False, + axis: int = -1) -> np.ndarray: + """ + Resample a time series from orig_fs to target_fs. + + Parameters + ---------- + y : np.ndarray [shape=(..., n, ...)] + time series, with `n` samples along the specified axis. + + orig_fs : number > 0 [scalar] + original sampling frequency of ``y`` + + target_fs : number > 0 [scalar] + target sampling frequency + + resample_type : str (default: `scipy`) + resample type + + 'fft' or 'scipy' + `scipy.signal.resample` Fourier method. + 'polyphase' + `scipy.signal.resample_poly` polyphase filtering. (fast) + 'linear' + `samplerate` linear interpolation. (very fast, but not bandlimited) + + .. note:: + Not all options yield a bandlimited interpolator. If you use + `polyphase`, `linear`, or `zero_order_hold`, you need to be aware + of possible aliasing effects. + + .. note:: + When using ``res_type='polyphase'``, only integer sampling rates + are supported. + + scale : bool + Scale the resampled signal so that ``y`` and ``y_hat`` have + approximately equal total energy. + + axis : int + The target axis along which to resample. Defaults to the trailing axis. + + Returns + ------- + y_hat : np.ndarray [shape=(..., n * target_sr / orig_sr, ...)] + ``y`` resampled from ``orig_sr`` to ``target_sr`` along the target axis + + Raises + ------ + ValueError + If ``res_type='polyphase'`` and ``orig_sr`` or ``target_sr`` are not + both integer-valued. + + See Also + -------- + librosa.util.fix_length + scipy.signal.resample + """ + if orig_fs == target_fs: + return y + + ratio = float(target_fs) / orig_fs + + n_samples = int(np.ceil(y.shape[axis] * ratio)) + + if resample_type in ("scipy", "fft"): + y_hat = signal.resample(y, n_samples, axis=axis) + elif resample_type == "polyphase": + if int(orig_fs) != orig_fs or int(target_fs) != target_fs: + raise ValueError("polyphase resampling is only supported for " + "integer-valued sampling rates.") + + # For polyphase resampling, we need up- and down-sampling ratios + # We can get those from the greatest common divisor of the rates + # as long as the rates are integrable + orig_fs = int(orig_fs) + target_fs = int(target_fs) + gcd = np.gcd(orig_fs, target_fs) + y_hat = signal.resample_poly(y, target_fs // gcd, orig_fs // gcd, + axis=axis) + else: + raise NameError("Unknown resampling type.") + + if scale: + y_hat /= np.sqrt(ratio) + + # Match dtypes + return np.asarray(y_hat, dtype=y.dtype) diff --git a/src/fusion_ai_hub/core/spectral_representation/sft.py b/src/fusion_ai_hub/core/spectral_representation/sft.py index 34bae0a..bd9abc9 100644 --- a/src/fusion_ai_hub/core/spectral_representation/sft.py +++ b/src/fusion_ai_hub/core/spectral_representation/sft.py @@ -14,6 +14,90 @@ def spectrogram(y: np.ndarray, *, fs: float = 48000, n_fft: int = 2048, pad_mode: Literal["zeros", "edge", "even", "odd"] = 'zeros', return_t_f: bool = False) \ -> Union[np.ndarray, Tuple[np.ndarray, ...]]: + """ + Spectrogram. + + The spectrogram is the absolute square of the STFT, and thus is always + non-negative. This is a convenience function for calling ``stft`` / + ``stft_detrend``. It represents a signal in the time-frequency domain by + computing discrete Fourier transforms (DFT) over short overlapping windows. + + This function returns a real-valued matrix D such that it is the squared + absolute value of the complex STFT coefficients. + + Parameters + ---------- + y : np.ndarray [shape=(…, n)], real-valued + The input signal. Multi-channel supported. + fs : float + The sampling frequency in Hertz + n_fft : int + Length of the windowed signal after padding with zeros. The number of + rows in the matrix ``D`` is ``(1 + n_fft/2)``. It is always recommended + setting n_fft to a power of two for optimizing the speed of the fast + Fourier transform (FFT) algorithm. + hop_length : int + Number of audio samples between adjacent STFT columns. + + Smaller values increase the number of columns in ``D`` without + affecting the frequency resolution of the STFT. + + If unspecified, defaults to ``win_length // 4`` (see below). + win_length : int + Each frame of the input signal is windowed by window of length + ``win_length`` and then padded with zeros to match ``n_fft``. + + Smaller values improve the temporal resolution of the STFT (i.e. the + ability to discriminate impulses that are closely spaced in time) at + the expense of frequency resolution (i.e. the ability to discriminate + pure tones that are closely spaced in frequency). This effect is known + as the time-frequency localization trade-off and needs to be adjusted + according to the properties of the input signal y. + + If unspecified, defaults to ``win_length = n_fft``. + window : str, float, tuple + Either: + - a window specification (string, tuple, or number); see + ``scipy.signal.get_window`` for details + - a window function, such as ``scipy.signal.windows.hann`` + + Defaults to a raised cosine window (‘hamming’), which is adequate for + most applications in signal processing. + scaling : str + Normalization applied to the window function (‘magnitude’, ‘psd’ or + None). + + If not None, the FFTs can be either interpreted as a magnitude or a + power spectral density spectrum. + + The window function can be scaled by calling the ``scale_to`` method, + or it is set by the initializer parameter ``scale_to``. + detrend : str + If detr is set to ‘constant’, the mean is subtracted, if set to + “linear”, the linear trend is removed. This is achieved by calling + ``scipy.signal.detrend``. If detr is a function, detr is applied to + each segment. All other parameters have the same meaning as in stft. + + Note that due to the detrending, the original signal cannot be + reconstructed by the istft. + pad_mode : str + Kind of values which are added, when the sliding window sticks out on + either the lower or upper end of the input x. Zeros are added if the + default ‘zeros’ is set. For ‘edge’ either the first or the last value + of x is used. ‘even’ pads by reflecting the signal on the first or last + sample and ‘odd’ additionally multiplies it with -1. + return_t_f : + If ``return_t_f=True``, the time and frequency bins are also returned. + + Returns + ------- + spectrogram_matrix : np.ndarray [shape=(..., n_samples,)] + Real-valued matrix of magnitude spectrogram. + t : np.ndarray + If ``return_t_f=True``, the time steps are returned. + f : np.ndarray + If ``return_t_f=True``, the frequency bins are returned. + """ fft_window = signal.get_window(window, win_length, fftbins=True) sft = signal.ShortTimeFFT(fft_window, hop_length, fs, fft_mode='onesided', @@ -37,6 +121,85 @@ def stft(y: np.ndarray, *, fs: float = 48000, n_fft: int = 2048, pad_mode: Literal["zeros", "edge", "even", "odd"] = 'zeros', return_t_f: bool = False) \ -> Union[np.ndarray, Tuple[np.ndarray, ...]]: + """ + STFT. + + The STFT represents a signal in the time-frequency domain by computing + discrete Fourier transforms (DFT) over short overlapping windows. + + This function returns a complex-valued matrix D such that + + - ``np.abs(D[..., f, t])`` is the magnitude of frequency bin ``f`` + at frame ``t``, and + + - ``np.angle(D[..., f, t])`` is the phase of frequency bin ``f`` + at frame ``t``. + + Parameters + ---------- + y : np.ndarray [shape=(…, n)], real-valued + The input signal. Multi-channel supported. + fs : float + The sampling frequency in Hertz + n_fft : int + Length of the windowed signal after padding with zeros. The number of + rows in the matrix ``D`` is ``(1 + n_fft/2)``. It is always recommended + setting n_fft to a power of two for optimizing the speed of the fast + Fourier transform (FFT) algorithm. + hop_length : int + Number of audio samples between adjacent STFT columns. + + Smaller values increase the number of columns in ``D`` without + affecting the frequency resolution of the STFT. + + If unspecified, defaults to ``win_length // 4`` (see below). + win_length : int + Each frame of the input signal is windowed by window of length + ``win_length`` and then padded with zeros to match ``n_fft``. + + Smaller values improve the temporal resolution of the STFT (i.e. the + ability to discriminate impulses that are closely spaced in time) at + the expense of frequency resolution (i.e. the ability to discriminate + pure tones that are closely spaced in frequency). This effect is known + as the time-frequency localization trade-off and needs to be adjusted + according to the properties of the input signal y. + + If unspecified, defaults to ``win_length = n_fft``. + window : str, float, tuple + Either: + - a window specification (string, tuple, or number); see + ``scipy.signal.get_window`` for details + - a window function, such as ``scipy.signal.windows.hann`` + + Defaults to a raised cosine window (‘hamming’), which is adequate for + most applications in signal processing. + scaling : str + Normalization applied to the window function (‘magnitude’, ‘psd’ or + None). + + If not None, the FFTs can be either interpreted as a magnitude or a + power spectral density spectrum. + + The window function can be scaled by calling the ``scale_to`` method, + or it is set by the initializer parameter ``scale_to``. + pad_mode : str + Kind of values which are added, when the sliding window sticks out on + either the lower or upper end of the input x. Zeros are added if the + default ‘zeros’ is set. For ‘edge’ either the first or the last value + of x is used. ‘even’ pads by reflecting the signal on the first or last + sample and ‘odd’ additionally multiplies it with -1. + return_t_f : + If ``return_t_f=True``, the time and frequency bins are also returned. + + Returns + ------- + spectrogram_matrix : np.ndarray [shape=(..., n_samples,)] + Real-valued matrix of magnitude spectrogram. + t : np.ndarray + If ``return_t_f=True``, the time steps are returned. + f : np.ndarray + If ``return_t_f=True``, the frequency bins are returned. + """ fft_window = signal.get_window(window, win_length, fftbins=True) sft = signal.ShortTimeFFT(fft_window, hop_length, fs, fft_mode='onesided', From 1107a661f8f931ea2836b153ebb2a320b1b45528 Mon Sep 17 00:00:00 2001 From: renierts Date: Fri, 17 May 2024 09:50:19 -0400 Subject: [PATCH 011/103] Added linear interpolation to fill missing values in a time-series. --- .../core/fusion_signal/interpolation.py | 53 +++++++++++++++++++ .../core/fusion_signal/resampling.py | 11 ---- 2 files changed, 53 insertions(+), 11 deletions(-) diff --git a/src/fusion_ai_hub/core/fusion_signal/interpolation.py b/src/fusion_ai_hub/core/fusion_signal/interpolation.py index e69de29..df313a2 100644 --- a/src/fusion_ai_hub/core/fusion_signal/interpolation.py +++ b/src/fusion_ai_hub/core/fusion_signal/interpolation.py @@ -0,0 +1,53 @@ +import numpy as np +from scipy import interpolate +from typing import Optional + + +def interpolate_signal(y: np.ndarray, t_ori: np.ndarray, t_new: np.ndarray, + axis: Optional[int] = 0) -> np.ndarray: + """ + Resample and interpolate missing values in a multivariate time-series. + + Parameters + ---------- + y : np.ndarray, shape = (..., n) + The input signal to be interpolated. + t_ori : np.ndarray, shape = (n): + Array of original times. If None, assumes evenly spaced intervals. + t_new : np.ndarray: + Array of target times for resampling. + axis : int + Axis along which to interpolate. 0 for rows, 1 for columns. + + Returns + ------- + np.ndarray: Resampled and interpolated time-series. + """ + if axis not in [0, 1]: + raise ValueError("Axis must be 0 or 1.") + + # Transpose data if we are interpolating along columns + if axis == 1: + y = y.T + + num_samples, num_features = y.shape + if t_ori is None: + t_ori = np.arange(num_samples) + + # Prepare the resampled array + resampled_data = np.empty((len(t_new), num_features)) + + # Resample and interpolate each feature (row in transposed data) + for i in range(num_features): + feature_data = y[:, i] + nans = np.isnan(feature_data) + known_times = t_ori[~nans] + known_values = feature_data[~nans] + resampled_data[:, i] = np.interp(t_new, known_times, known_values) + + # Transpose back if needed + if axis == 1: + resampled_data = resampled_data.T + + return resampled_data + diff --git a/src/fusion_ai_hub/core/fusion_signal/resampling.py b/src/fusion_ai_hub/core/fusion_signal/resampling.py index a88eec5..1be5ad3 100644 --- a/src/fusion_ai_hub/core/fusion_signal/resampling.py +++ b/src/fusion_ai_hub/core/fusion_signal/resampling.py @@ -49,17 +49,6 @@ def resample(y: np.ndarray, *, orig_fs: float, target_fs: float, ------- y_hat : np.ndarray [shape=(..., n * target_sr / orig_sr, ...)] ``y`` resampled from ``orig_sr`` to ``target_sr`` along the target axis - - Raises - ------ - ValueError - If ``res_type='polyphase'`` and ``orig_sr`` or ``target_sr`` are not - both integer-valued. - - See Also - -------- - librosa.util.fix_length - scipy.signal.resample """ if orig_fs == target_fs: return y From 8ccf8c32a5993658cf96cc6a98223bec90f0322f Mon Sep 17 00:00:00 2001 From: Nathaniel Chen <79379842+nathanchenseanwalter@users.noreply.github.com> Date: Tue, 28 May 2024 08:34:17 -0400 Subject: [PATCH 012/103] Update data_prep_obj.py --- examples/Dataset_prep/data_prep_obj.py | 1642 ++++++++++++------------ 1 file changed, 821 insertions(+), 821 deletions(-) diff --git a/examples/Dataset_prep/data_prep_obj.py b/examples/Dataset_prep/data_prep_obj.py index a13a39c..7ebaaee 100644 --- a/examples/Dataset_prep/data_prep_obj.py +++ b/examples/Dataset_prep/data_prep_obj.py @@ -585,921 +585,921 @@ def __init__(self): self.norm_factor_list=norm_factor_list self.file_normal_size=file_normal_size - @staticmethod - def file_path_gen(discharge, suffix): - return (f'/scratch/gpfs/EKOLEMEN/big_d3d_data/{str(discharge)[:2]}0000/{discharge}_{suffix}.h5') - - def hdf5_to_dict(self, group): - result = {} - for key in group.keys(): - if isinstance(group[key], h5py.Dataset): - result[key] = group[key][()] - elif isinstance(group[key], h5py.Group): - result[key] = self.hdf5_to_dict(group[key]) - return result - - def order_of_magnitude_normal_factor_calc(self,discharge): - norm_factor_list_tmp={} - for suffix in self.file_keys.keys(): - file_dict=self.get_data(discharge, suffix, norm=False) - norm_factor_list_tmp[suffix]={} - for key in file_dict.keys(): - mean_tmp=abs(np.mean(file_dict[key]['zdata'][:])) - try: - exponent=self.get_order_of_magnitude(mean_tmp) - norm_factor_list_tmp[suffix][key]=10**exponent - except: - norm_factor_list_tmp[suffix][key]=1. - return norm_factor_list_tmp - - def avg_factor_calc(self,discharge): - avg_factor={} - for suffix in self.file_keys.keys(): - file_dict=self.get_data(discharge, suffix, norm=True) - avg_factor[suffix]={} - for key in file_dict.keys(): - data=file_dict[key]['zdata'][:] - avg_tmp=np.mean(data,axis=len(data.shape)-1) - if np.isnan(avg_tmp).any(): - avg_tmp=0. - - avg_factor[suffix][key]=avg_tmp - - return avg_factor - - def std_factor_calc(self,discharge): - std_factor={} - for suffix in self.file_keys.keys(): - file_dict=self.get_data(discharge, suffix, norm=True) - std_factor[suffix]={} - for key in file_dict.keys(): - data=file_dict[key]['zdata'][:] - std_tmp=np.std(data,axis=len(data.shape)-1) - if np.isnan(std_tmp).any(): - std_tmp=1. - std_factor[suffix][key]=std_tmp - - return std_factor + # @staticmethod + # def file_path_gen(discharge, suffix): + # return (f'/scratch/gpfs/EKOLEMEN/big_d3d_data/{str(discharge)[:2]}0000/{discharge}_{suffix}.h5') + + # def hdf5_to_dict(self, group): + # result = {} + # for key in group.keys(): + # if isinstance(group[key], h5py.Dataset): + # result[key] = group[key][()] + # elif isinstance(group[key], h5py.Group): + # result[key] = self.hdf5_to_dict(group[key]) + # return result + + # def order_of_magnitude_normal_factor_calc(self,discharge): + # norm_factor_list_tmp={} + # for suffix in self.file_keys.keys(): + # file_dict=self.get_data(discharge, suffix, norm=False) + # norm_factor_list_tmp[suffix]={} + # for key in file_dict.keys(): + # mean_tmp=abs(np.mean(file_dict[key]['zdata'][:])) + # try: + # exponent=self.get_order_of_magnitude(mean_tmp) + # norm_factor_list_tmp[suffix][key]=10**exponent + # except: + # norm_factor_list_tmp[suffix][key]=1. + # return norm_factor_list_tmp + + # def avg_factor_calc(self,discharge): + # avg_factor={} + # for suffix in self.file_keys.keys(): + # file_dict=self.get_data(discharge, suffix, norm=True) + # avg_factor[suffix]={} + # for key in file_dict.keys(): + # data=file_dict[key]['zdata'][:] + # avg_tmp=np.mean(data,axis=len(data.shape)-1) + # if np.isnan(avg_tmp).any(): + # avg_tmp=0. + + # avg_factor[suffix][key]=avg_tmp + + # return avg_factor + + # def std_factor_calc(self,discharge): + # std_factor={} + # for suffix in self.file_keys.keys(): + # file_dict=self.get_data(discharge, suffix, norm=True) + # std_factor[suffix]={} + # for key in file_dict.keys(): + # data=file_dict[key]['zdata'][:] + # std_tmp=np.std(data,axis=len(data.shape)-1) + # if np.isnan(std_tmp).any(): + # std_tmp=1. + # std_factor[suffix][key]=std_tmp + + # return std_factor #all: apply tha same avg and mean to all the data #individual:apply tha individual avg and individual mean to the individual data row #std_all_avg_individual: apply tha individual avg to the individual data row, but apply the same std to the group #mode=[all,individual,std_all_avg_individual] - @staticmethod - def norm_data(data,avg_,std_,mode='all'): - avg_=np.array(avg_) - std_=np.array(std_) - if mode == 'all': - std_all=(np.mean(std_**2))**0.5 - avg_all=np.mean(avg_) - elif mode=='std_all_avg_individual': - std_all=(np.mean(std_**2))**0.5 - avg_all=np.expand_dims(avg_,axis=1) - - elif mode=='individual': - std_all=np.expand_dims(avg_,axis=1) - avg_all=np.expand_dims(avg_,axis=1) - - - data_norm=(data-avg_all)/std_all - - return data_norm - - def get_data(self,discharge, suffix, norm=True): - discharge_path=self.file_path_gen(discharge, suffix) - input_file = h5py.File(discharge_path, 'r') - input_dict_tmp = self.hdf5_to_dict(input_file) - if suffix in no_level: - input_dict={suffix:input_dict_tmp} - else: - input_dict=input_dict_tmp - - if norm and (suffix in self.norm_factor_list): - for key in input_dict.keys(): - if self.norm_factor_list[suffix][key]=='log': - input_dict[key]['zdata']=np.log(np.array(input_dict[key]['zdata'][:])) - else: - input_dict[key]['zdata']=np.array(input_dict[key]['zdata'][:])/self.norm_factor_list[suffix][key] + # @staticmethod + # def norm_data(data,avg_,std_,mode='all'): + # avg_=np.array(avg_) + # std_=np.array(std_) + # if mode == 'all': + # std_all=(np.mean(std_**2))**0.5 + # avg_all=np.mean(avg_) + # elif mode=='std_all_avg_individual': + # std_all=(np.mean(std_**2))**0.5 + # avg_all=np.expand_dims(avg_,axis=1) + + # elif mode=='individual': + # std_all=np.expand_dims(avg_,axis=1) + # avg_all=np.expand_dims(avg_,axis=1) + + + # data_norm=(data-avg_all)/std_all + + # return data_norm + + # def get_data(self,discharge, suffix, norm=True): + # discharge_path=self.file_path_gen(discharge, suffix) + # input_file = h5py.File(discharge_path, 'r') + # input_dict_tmp = self.hdf5_to_dict(input_file) + # if suffix in no_level: + # input_dict={suffix:input_dict_tmp} + # else: + # input_dict=input_dict_tmp + + # if norm and (suffix in self.norm_factor_list): + # for key in input_dict.keys(): + # if self.norm_factor_list[suffix][key]=='log': + # input_dict[key]['zdata']=np.log(np.array(input_dict[key]['zdata'][:])) + # else: + # input_dict[key]['zdata']=np.array(input_dict[key]['zdata'][:])/self.norm_factor_list[suffix][key] - return input_dict + # return input_dict # divide the data into subcategory - def data_division(self, input_file, input_suffix): - if input_suffix in multi_level: - input_multi_level = {} - for key in file_keys[input_suffix].keys(): - keys_of_this_category = file_keys[input_suffix][key] - input_multi_level[key] = {key_i: input_file[key_i] - for key_i in keys_of_this_category} - else: - input_multi_level = {input_suffix: input_file} - return input_multi_level + # def data_division(self, input_file, input_suffix): + # if input_suffix in multi_level: + # input_multi_level = {} + # for key in file_keys[input_suffix].keys(): + # keys_of_this_category = file_keys[input_suffix][key] + # input_multi_level[key] = {key_i: input_file[key_i] + # for key_i in keys_of_this_category} + # else: + # input_multi_level = {input_suffix: input_file} + # return input_multi_level #norm_mode=[no, all,individual,std_all_avg_individual] #no, means no normalizations - def get_full_data(self, discharge, suffix_list, norm_mode='all'): - all_file_dict = {} - for suffix in suffix_list: - file_dict=self.get_data(discharge, suffix, norm=True) - all_file_dict[suffix]={} - for key in file_dict.keys(): - if norm_mode=='no': - all_file_dict[suffix][key]={'xdata':file_dict[key]['xdata'][:],\ - 'zdata':file_dict[key]['zdata'][:]} - else: - all_file_dict[suffix][key]={'xdata':file_dict[key]['xdata'][:],\ - 'zdata':self.norm_data(file_dict[key]['zdata'][:],\ - self.std_list[suffix][key], - self.avg_list[suffix][key],\ - mode=norm_mode)} - return all_file_dict - - - @staticmethod - def get_order_of_magnitude(num): - exponent = int(np.log10(abs(num))) - return exponent - - @staticmethod - def spec_filters(freq, time, amp_f_t, spec_params=spec_params_default,thr=0.9, gaussblr_win=(31, 3)): - def norm(amp_f_t): - mn = amp_f_t.mean() - std = amp_f_t.std() - return (amp_f_t-mn) / std + # def get_full_data(self, discharge, suffix_list, norm_mode='all'): + # all_file_dict = {} + # for suffix in suffix_list: + # file_dict=self.get_data(discharge, suffix, norm=True) + # all_file_dict[suffix]={} + # for key in file_dict.keys(): + # if norm_mode=='no': + # all_file_dict[suffix][key]={'xdata':file_dict[key]['xdata'][:],\ + # 'zdata':file_dict[key]['zdata'][:]} + # else: + # all_file_dict[suffix][key]={'xdata':file_dict[key]['xdata'][:],\ + # 'zdata':self.norm_data(file_dict[key]['zdata'][:],\ + # self.std_list[suffix][key], + # self.avg_list[suffix][key],\ + # mode=norm_mode)} + # return all_file_dict + + + # @staticmethod + # def get_order_of_magnitude(num): + # exponent = int(np.log10(abs(num))) + # return exponent + + # @staticmethod + # def spec_filters(freq, time, amp_f_t, spec_params=spec_params_default,thr=0.9, gaussblr_win=(31, 3)): + # def norm(amp_f_t): + # mn = amp_f_t.mean() + # std = amp_f_t.std() + # return (amp_f_t-mn) / std - def rescale(amp_f_t): - return (amp_f_t-amp_f_t.min())/(amp_f_t.max()-amp_f_t.min()) + # def rescale(amp_f_t): + # return (amp_f_t-amp_f_t.min())/(amp_f_t.max()-amp_f_t.min()) - def quantfilt(amp_f_t, thr=0.9): - filt = np.quantile(amp_f_t, thr, axis=0) - out = np.where(amp_f_t < filt, 0, amp_f_t) - return out + # def quantfilt(amp_f_t, thr=0.9): + # filt = np.quantile(amp_f_t, thr, axis=0) + # out = np.where(amp_f_t < filt, 0, amp_f_t) + # return out - # gaussian filtering - def gaussblr(amp_f_t, filt=(31, 3)): - amp_f_t = (rescale(amp_f_t)*255).astype('uint8') - out = cv2.GaussianBlur(amp_f_t,filt,0) - return rescale(out) + # # gaussian filtering + # def gaussblr(amp_f_t, filt=(31, 3)): + # amp_f_t = (rescale(amp_f_t)*255).astype('uint8') + # out = cv2.GaussianBlur(amp_f_t,filt,0) + # return rescale(out) - # mean filtering - def meansub(amp_f_t): - mn = np.mean(amp_f_t, axis=1)[:, np.newaxis] - out = np.absolute(amp_f_t - mn) - return rescale(out) + # # mean filtering + # def meansub(amp_f_t): + # mn = np.mean(amp_f_t, axis=1)[:, np.newaxis] + # out = np.absolute(amp_f_t - mn) + # return rescale(out) - # morphological filtering - def morph(amp_f_t): - amp_f_t = (rescale(amp_f_t)*255).astype('uint8') - se1 = cv2.getStructuringElement(cv2.MORPH_RECT, (4, 4)) - se2 = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 1)) - mask = cv2.morphologyEx(amp_f_t, cv2.MORPH_CLOSE, se1) - mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, se2) - return rescale(mask) + # # morphological filtering + # def morph(amp_f_t): + # amp_f_t = (rescale(amp_f_t)*255).astype('uint8') + # se1 = cv2.getStructuringElement(cv2.MORPH_RECT, (4, 4)) + # se2 = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 1)) + # mask = cv2.morphologyEx(amp_f_t, cv2.MORPH_CLOSE, se1) + # mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, se2) + # return rescale(mask) - def apply_all(freq, time, amp_f_t, spec_params, thr=thr, - gaussblr_win=gaussblr_win): + # def apply_all(freq, time, amp_f_t, spec_params, thr=thr, + # gaussblr_win=gaussblr_win): - Sxx = np.log(amp_f_t + spec_params['eps']) - # rescale the pixels to (0,1) - Sxx = (Sxx-np.min(Sxx))/(np.max(Sxx)-np.min(Sxx)) + # Sxx = np.log(amp_f_t + spec_params['eps']) + # # rescale the pixels to (0,1) + # Sxx = (Sxx-np.min(Sxx))/(np.max(Sxx)-np.min(Sxx)) - Sxx_enhanced = quantfilt(Sxx, thr) - Sxx_enhanced = gaussblr(Sxx_enhanced, gaussblr_win) - Sxx_enhanced = meansub(Sxx_enhanced) - Sxx_enhanced = morph(Sxx_enhanced) - Sxx_enhanced = meansub(Sxx_enhanced) + # Sxx_enhanced = quantfilt(Sxx, thr) + # Sxx_enhanced = gaussblr(Sxx_enhanced, gaussblr_win) + # Sxx_enhanced = meansub(Sxx_enhanced) + # Sxx_enhanced = morph(Sxx_enhanced) + # Sxx_enhanced = meansub(Sxx_enhanced) - return freq, time, Sxx_enhanced - - return apply_all(freq, time, amp_f_t, spec_params, thr=thr, - gaussblr_win=gaussblr_win) - - @staticmethod - def spectro_calc(sig_time, data, spec_params=spec_params_default,plot=False): - spec_params['fs'] = 1./np.mean(sig_time[1:]-sig_time[:-1]) - # default 1024 - spec_params['nperseg'] = max(int(0.6*spec_params['fs']), 1) - # default: nperseg / 4 - spec_params['noverlap'] = max(int(spec_params['nperseg']/4), 1) - print(spec_params) + # return freq, time, Sxx_enhanced + + # return apply_all(freq, time, amp_f_t, spec_params, thr=thr, + # gaussblr_win=gaussblr_win) + + # @staticmethod + # def spectro_calc(sig_time, data, spec_params=spec_params_default,plot=False): + # spec_params['fs'] = 1./np.mean(sig_time[1:]-sig_time[:-1]) + # # default 1024 + # spec_params['nperseg'] = max(int(0.6*spec_params['fs']), 1) + # # default: nperseg / 4 + # spec_params['noverlap'] = max(int(spec_params['nperseg']/4), 1) + # print(spec_params) - freq, time, amp_f_t = signal.spectrogram( - data, nperseg=spec_params['nperseg'], - noverlap=spec_params['noverlap'], fs=spec_params['fs'], - window=spec_params['window'], scaling=spec_params['scaling'], - detrend=spec_params['detrend']) - if plot: - plt.clf() - plt.imshow(amp_f_t.T,aspect='auto',cmap='hot', - extent=[time[0], time[-1], freq[-1], freq[0]]) - plt.colorbar() - plt.ylabel('kHz') - plt.xlabel('ms') - plt.gca().invert_yaxis() - plt.show() - return freq, time, amp_f_t + # freq, time, amp_f_t = signal.spectrogram( + # data, nperseg=spec_params['nperseg'], + # noverlap=spec_params['noverlap'], fs=spec_params['fs'], + # window=spec_params['window'], scaling=spec_params['scaling'], + # detrend=spec_params['detrend']) + # if plot: + # plt.clf() + # plt.imshow(amp_f_t.T,aspect='auto',cmap='hot', + # extent=[time[0], time[-1], freq[-1], freq[0]]) + # plt.colorbar() + # plt.ylabel('kHz') + # plt.xlabel('ms') + # plt.gca().invert_yaxis() + # plt.show() + # return freq, time, amp_f_t - @staticmethod - def spectro_plot(freq, time, amp_f_t): - plt.clf() - plt.imshow(amp_f_t,aspect='auto',cmap='hot', - extent=[time[0], time[-1], freq[-1], freq[0]]) - plt.colorbar() - plt.ylabel('kHz') - plt.xlabel('ms') - plt.gca().invert_yaxis() - plt.show() + # @staticmethod + # def spectro_plot(freq, time, amp_f_t): + # plt.clf() + # plt.imshow(amp_f_t,aspect='auto',cmap='hot', + # extent=[time[0], time[-1], freq[-1], freq[0]]) + # plt.colorbar() + # plt.ylabel('kHz') + # plt.xlabel('ms') + # plt.gca().invert_yaxis() + # plt.show() - @staticmethod - def time_serie_plot(dict): - plt.clf() - if dict['zdata'][:].shape == 1: - plt.plot(dict['xdata'][:],dict['zdata'][:]) - else: - plt.plot(dict['xdata'][:],dict['zdata'][:].T) - plt.xlabel('Time (ms)') - plt.show() + # @staticmethod + # def time_serie_plot(dict): + # plt.clf() + # if dict['zdata'][:].shape == 1: + # plt.plot(dict['xdata'][:],dict['zdata'][:]) + # else: + # plt.plot(dict['xdata'][:],dict['zdata'][:].T) + # plt.xlabel('Time (ms)') + # plt.show() - @staticmethod - def cut_time(time, data, t_min, t_max): - t_indx_min=np.argmin(abs(np.array(time)-t_min)) - t_indx_max=np.argmin(abs(np.array(time)-t_max)) + # @staticmethod + # def cut_time(time, data, t_min, t_max): + # t_indx_min=np.argmin(abs(np.array(time)-t_min)) + # t_indx_max=np.argmin(abs(np.array(time)-t_max)) - return time[t_indx_min:t_indx_max], data[...,t_indx_min:t_indx_max] + # return time[t_indx_min:t_indx_max], data[...,t_indx_min:t_indx_max] # Function to get windowed data - @staticmethod - def get_windowed_data(df, center_index, window_size=5): - start = max(center_index - window_size, 0) - end = min(center_index + window_size + 1, len(df)) - return df.iloc[start:end].drop(columns=['xdata']) - - @staticmethod - def time_matching_merge_asof_1d(time1, data1, time_std, left_window=0, right_window=0): - # Convert input arrays to DataFrames - df1 = pd.DataFrame({'time1': time1, 'data1': data1}) - df2 = pd.DataFrame({'time_std': time_std}) + # @staticmethod + # def get_windowed_data(df, center_index, window_size=5): + # start = max(center_index - window_size, 0) + # end = min(center_index + window_size + 1, len(df)) + # return df.iloc[start:end].drop(columns=['xdata']) + + # @staticmethod + # def time_matching_merge_asof_1d(time1, data1, time_std, left_window=0, right_window=0): + # # Convert input arrays to DataFrames + # df1 = pd.DataFrame({'time1': time1, 'data1': data1}) + # df2 = pd.DataFrame({'time_std': time_std}) - # Sort the DataFrames by the time columns - df1.sort_values('time1', inplace=True) - df2.sort_values('time_std', inplace=True) + # # Sort the DataFrames by the time columns + # df1.sort_values('time1', inplace=True) + # df2.sort_values('time_std', inplace=True) - # Perform the asof merge - merged_df = pd.merge_asof(df2, df1, left_on='time_std', - right_on='time1', direction='nearest') + # # Perform the asof merge + # merged_df = pd.merge_asof(df2, df1, left_on='time_std', + # right_on='time1', direction='nearest') - # Drop unnecessary columns and handle NaN values - merged_df.drop(columns='time_std', inplace=True) - merged_df.dropna(inplace=True) + # # Drop unnecessary columns and handle NaN values + # merged_df.drop(columns='time_std', inplace=True) + # merged_df.dropna(inplace=True) - # Extract the matched time and data - matched_time = merged_df['time1'].values - matched_data = merged_df['data1'].values + # # Extract the matched time and data + # matched_time = merged_df['time1'].values + # matched_data = merged_df['data1'].values - return matched_time, matched_data + # return matched_time, matched_data - @staticmethod - def time_matching_merge_asof_2d(time1, data1, time_std,left_window=0, right_window=0): - # Create DataFrames - # Note: We assume time1 and time_std are already float arrays - # representing time in seconds - - # Transpose data1 to align time as rows - df1 = pd.DataFrame(data1.T, index=time1) - df_std = pd.DataFrame(index=time_std) - - # Reset index to include time in the DataFrame directly for merging - df1 = df1.reset_index().rename(columns={'index': 'time1'}) - df_std = df_std.reset_index().rename(columns={'index': 'time_std'}) - - # Perform merge_asof to find the closest matches - merged = pd.merge_asof(df_std.sort_values('time_std'), - df1.sort_values('time1'), left_on='time_std', - right_on='time1', direction='nearest') - - # Extract the aligned times (as float) - matched_time = merged['time1'].values - - # Extract indices from the merged DataFrame - indices = merged['time1'].apply( - lambda x: np.where(df1['time1'] == x)[0][0] - if x in df1['time1'].values else -1).values + # @staticmethod + # def time_matching_merge_asof_2d(time1, data1, time_std,left_window=0, right_window=0): + # # Create DataFrames + # # Note: We assume time1 and time_std are already float arrays + # # representing time in seconds + + # # Transpose data1 to align time as rows + # df1 = pd.DataFrame(data1.T, index=time1) + # df_std = pd.DataFrame(index=time_std) + + # # Reset index to include time in the DataFrame directly for merging + # df1 = df1.reset_index().rename(columns={'index': 'time1'}) + # df_std = df_std.reset_index().rename(columns={'index': 'time_std'}) + + # # Perform merge_asof to find the closest matches + # merged = pd.merge_asof(df_std.sort_values('time_std'), + # df1.sort_values('time1'), left_on='time_std', + # right_on='time1', direction='nearest') + + # # Extract the aligned times (as float) + # matched_time = merged['time1'].values + + # # Extract indices from the merged DataFrame + # indices = merged['time1'].apply( + # lambda x: np.where(df1['time1'] == x)[0][0] + # if x in df1['time1'].values else -1).values - # Use indices to fetch data from the original 2D array, - # handle missing indices - matched_data = np.array([data1[:, int(idx)] if idx != -1 - else np.full(data1.shape[0], np.nan) - for idx in indices]).T + # # Use indices to fetch data from the original 2D array, + # # handle missing indices + # matched_data = np.array([data1[:, int(idx)] if idx != -1 + # else np.full(data1.shape[0], np.nan) + # for idx in indices]).T - return matched_time, matched_data + # return matched_time, matched_data - @staticmethod - def time_matching_binary_search(time1, data1, time_std, left_window=0, right_window=0): - # Function to find the closest time in time1 to each time in time_std - def find_closest(target): - # Binary search for the closest timestamp - low, high = 0, len(time1) - 1 - best_idx = low - while low <= high: - mid = (low + high) // 2 - if time1[mid] < target: - low = mid + 1 - elif time1[mid] > target: - high = mid - 1 - else: - return mid - # Update the best index if the current mid is closer to the - # target - if abs(time1[mid] - target) < abs(time1[best_idx] - target): - best_idx = mid - return best_idx - - # Align data1 to time_std - matched_data = [] - matched_time = [] - for t in time_std: - closest_idx = find_closest(t) - matched_data.append(data1[..., closest_idx-left_window:closest_idx+right_window+1]) - matched_time.append(time1[closest_idx-left_window:closest_idx+right_window+1]) - matched_time=np.array(matched_time) - matched_data=np.array(matched_data) - - return matched_time, matched_data - - @staticmethod - def estimate_closest_indx_constant_dt(left_indx,time,target,dt): - time_distant=target-time[left_indx] - n_time=int(np.floor(time_distant/dt)) - indx_start=left_indx+n_time - return indx_start - - @staticmethod - def estimate_closest_indx_varing_dt(left_indx,time,target,dt,dt_std): - time_distant=target-time[left_indx] - n_time_min=int(np.floor(time_distant/(dt+dt_std))) - n_time_max=int(np.floor(time_distant/(dt-dt_std))) - indx_start=left_indx+n_time_min - indx_end=left_indx+n_time_max - return indx_start,indx_end - - @staticmethod - def find_closest_indx_constant_dt(indx_start,time,target): - if indx_start==0: - return 0 - #on target - if time[indx_start]==target: - return indx_start - #indx_start on the left - elif time[indx_start] abs(time[i-1] - target): - return i-1 - return i - - #indx_start on the left - elif time[indx_start]>target: - i=indx_start - while time[i]>target: - i-=1 - if abs(time[i] - target) > abs(time[i+1] - target): - return i+1 - return i - - @staticmethod - def find_closest_indx_binary(time,target,indx_start,indx_end): - # Binary search for the closest timestamp - low, high = max(0,indx_start), min(indx_end,len(time)-1) - best_idx = low - while low <= high: - mid = (low + high) // 2 - if time[mid] < target: - low = mid + 1 - elif time[mid] > target: - high = mid - 1 - else: - return mid - # Update the best index if the current mid is closer to the - # target - if abs(time[mid] - target) < abs(time[best_idx] - target): - best_idx = mid - return best_idx + # @staticmethod + # def time_matching_binary_search(time1, data1, time_std, left_window=0, right_window=0): + # # Function to find the closest time in time1 to each time in time_std + # def find_closest(target): + # # Binary search for the closest timestamp + # low, high = 0, len(time1) - 1 + # best_idx = low + # while low <= high: + # mid = (low + high) // 2 + # if time1[mid] < target: + # low = mid + 1 + # elif time1[mid] > target: + # high = mid - 1 + # else: + # return mid + # # Update the best index if the current mid is closer to the + # # target + # if abs(time1[mid] - target) < abs(time1[best_idx] - target): + # best_idx = mid + # return best_idx + + # # Align data1 to time_std + # matched_data = [] + # matched_time = [] + # for t in time_std: + # closest_idx = find_closest(t) + # matched_data.append(data1[..., closest_idx-left_window:closest_idx+right_window+1]) + # matched_time.append(time1[closest_idx-left_window:closest_idx+right_window+1]) + # matched_time=np.array(matched_time) + # matched_data=np.array(matched_data) + + # return matched_time, matched_data + + # @staticmethod + # def estimate_closest_indx_constant_dt(left_indx,time,target,dt): + # time_distant=target-time[left_indx] + # n_time=int(np.floor(time_distant/dt)) + # indx_start=left_indx+n_time + # return indx_start + + # @staticmethod + # def estimate_closest_indx_varing_dt(left_indx,time,target,dt,dt_std): + # time_distant=target-time[left_indx] + # n_time_min=int(np.floor(time_distant/(dt+dt_std))) + # n_time_max=int(np.floor(time_distant/(dt-dt_std))) + # indx_start=left_indx+n_time_min + # indx_end=left_indx+n_time_max + # return indx_start,indx_end + + # @staticmethod + # def find_closest_indx_constant_dt(indx_start,time,target): + # if indx_start==0: + # return 0 + # #on target + # if time[indx_start]==target: + # return indx_start + # #indx_start on the left + # elif time[indx_start] abs(time[i-1] - target): + # return i-1 + # return i + + # #indx_start on the left + # elif time[indx_start]>target: + # i=indx_start + # while time[i]>target: + # i-=1 + # if abs(time[i] - target) > abs(time[i+1] - target): + # return i+1 + # return i + + # @staticmethod + # def find_closest_indx_binary(time,target,indx_start,indx_end): + # # Binary search for the closest timestamp + # low, high = max(0,indx_start), min(indx_end,len(time)-1) + # best_idx = low + # while low <= high: + # mid = (low + high) // 2 + # if time[mid] < target: + # low = mid + 1 + # elif time[mid] > target: + # high = mid - 1 + # else: + # return mid + # # Update the best index if the current mid is closer to the + # # target + # if abs(time[mid] - target) < abs(time[best_idx] - target): + # best_idx = mid + # return best_idx - @staticmethod - def custom_padding(time, data, left_slicing_indx, right_slicing_indx, padding='last'): - #padding to the left - - if left_slicing_indx<0: - padding_config = [(0, 0)] * (data.ndim - 1) - - padd_len=-left_slicing_indx - - if padding=='nan': - data_tmp=np.pad(data[..., 0:right_slicing_indx+1],padding_config+[(padd_len, 0)],mode='empty') - time_tmp=np.pad(time[0:right_slicing_indx+1],padding_config+[(padd_len, 0)],mode='empty') - elif padding=='last': - data_tmp=np.pad(data[..., 0:right_slicing_indx+1],padding_config+[(padd_len, 0)],mode='constant',constant_values=data[...,0]) - time_tmp=np.pad(time[0:right_slicing_indx+1],padding_config+[(padd_len, 0)],mode='constant',constant_values=time[0]) - elif padding=='zeros': - data_tmp=np.pad(data[..., 0:right_slicing_indx+1],padding_config+[(padd_len, 0)],mode='constant',constant_values=0) - time_tmp=np.pad(time[0:right_slicing_indx+1],padding_config+[(padd_len, 0)],mode='constant',constant_values=0) - elif (right_slicing_indx+1)>len(time): - padd_len=right_slicing_indx-len(time) - padding_config = [(0, 0)] * (data.ndim - 1) - - if padding=='nan': - data_tmp=np.pad(data[..., left_slicing_indx:],padding_config+[(0,padd_len)],mode='empty') - time_tmp=np.pad(time[left_slicing_indx:],padding_config+[(0,padd_len)],mode='empty') - elif padding=='last': - data_tmp=np.pad(data[..., left_slicing_indx:],padding_config+[(0,padd_len)],mode='constant',constant_values=data[...,-1]) - time_tmp=np.pad(time[left_slicing_indx:],padding_config+[(0,padd_len)],mode='constant',constant_values=time[-1]) - elif padding=='zeros': - data_tmp=np.pad(data[..., left_slicing_indx:],padding_config+[(0,padd_len)],mode='constant',constant_values=0) - time_tmp=np.pad(time[left_slicing_indx:],padding_config+[(0,padd_len)],mode='constant',constant_values=0) - else: - data_tmp=data[..., left_slicing_indx:right_slicing_indx+1] - time_tmp=time[left_slicing_indx:right_slicing_indx+1] - - return time_tmp,data_tmp + # @staticmethod + # def custom_padding(time, data, left_slicing_indx, right_slicing_indx, padding='last'): + # #padding to the left + + # if left_slicing_indx<0: + # padding_config = [(0, 0)] * (data.ndim - 1) + + # padd_len=-left_slicing_indx + + # if padding=='nan': + # data_tmp=np.pad(data[..., 0:right_slicing_indx+1],padding_config+[(padd_len, 0)],mode='empty') + # time_tmp=np.pad(time[0:right_slicing_indx+1],padding_config+[(padd_len, 0)],mode='empty') + # elif padding=='last': + # data_tmp=np.pad(data[..., 0:right_slicing_indx+1],padding_config+[(padd_len, 0)],mode='constant',constant_values=data[...,0]) + # time_tmp=np.pad(time[0:right_slicing_indx+1],padding_config+[(padd_len, 0)],mode='constant',constant_values=time[0]) + # elif padding=='zeros': + # data_tmp=np.pad(data[..., 0:right_slicing_indx+1],padding_config+[(padd_len, 0)],mode='constant',constant_values=0) + # time_tmp=np.pad(time[0:right_slicing_indx+1],padding_config+[(padd_len, 0)],mode='constant',constant_values=0) + # elif (right_slicing_indx+1)>len(time): + # padd_len=right_slicing_indx-len(time) + # padding_config = [(0, 0)] * (data.ndim - 1) + + # if padding=='nan': + # data_tmp=np.pad(data[..., left_slicing_indx:],padding_config+[(0,padd_len)],mode='empty') + # time_tmp=np.pad(time[left_slicing_indx:],padding_config+[(0,padd_len)],mode='empty') + # elif padding=='last': + # data_tmp=np.pad(data[..., left_slicing_indx:],padding_config+[(0,padd_len)],mode='constant',constant_values=data[...,-1]) + # time_tmp=np.pad(time[left_slicing_indx:],padding_config+[(0,padd_len)],mode='constant',constant_values=time[-1]) + # elif padding=='zeros': + # data_tmp=np.pad(data[..., left_slicing_indx:],padding_config+[(0,padd_len)],mode='constant',constant_values=0) + # time_tmp=np.pad(time[left_slicing_indx:],padding_config+[(0,padd_len)],mode='constant',constant_values=0) + # else: + # data_tmp=data[..., left_slicing_indx:right_slicing_indx+1] + # time_tmp=time[left_slicing_indx:right_slicing_indx+1] + + # return time_tmp,data_tmp #assume the time is sorted - def time_matching_dynamic_search(self,time, data, time_std, left_window=0, right_window=0, padding='last'): + # def time_matching_dynamic_search(self,time, data, time_std, left_window=0, right_window=0, padding='last'): - dt,dt_std,if_dt_even=self.check_even_time_spacing(time,time_start=0.01) - - # Align data to time_std - matched_data = [] - matched_time = [] - - left_indx=0 - #dt is constant - #print(f'std_norm={std_norm}') - if if_dt_even: - for target in time_std: - indx_start=self.estimate_closest_indx_constant_dt(left_indx,time,target,dt) - closest_idx=self.find_closest_indx_constant_dt(indx_start,time,target) + # dt,dt_std,if_dt_even=self.check_even_time_spacing(time,time_start=0.01) + + # # Align data to time_std + # matched_data = [] + # matched_time = [] + + # left_indx=0 + # #dt is constant + # #print(f'std_norm={std_norm}') + # if if_dt_even: + # for target in time_std: + # indx_start=self.estimate_closest_indx_constant_dt(left_indx,time,target,dt) + # closest_idx=self.find_closest_indx_constant_dt(indx_start,time,target) - left_slicing_indx=closest_idx-left_window - right_slicing_indx=closest_idx+right_window - time_tmp,data_tmp=self.custom_padding(time, data, left_slicing_indx,right_slicing_indx, padding=padding) + # left_slicing_indx=closest_idx-left_window + # right_slicing_indx=closest_idx+right_window + # time_tmp,data_tmp=self.custom_padding(time, data, left_slicing_indx,right_slicing_indx, padding=padding) - matched_data.append(data_tmp) - matched_time.append(time_tmp) + # matched_data.append(data_tmp) + # matched_time.append(time_tmp) - left_indx=closest_idx + # left_indx=closest_idx - else: - for target in time_std: - indx_start,indx_end=self.estimate_closest_indx_varing_dt(left_indx,time,target,dt,dt_std) - closest_idx=self.find_closest_indx_binary(time,target,indx_start,indx_end) + # else: + # for target in time_std: + # indx_start,indx_end=self.estimate_closest_indx_varing_dt(left_indx,time,target,dt,dt_std) + # closest_idx=self.find_closest_indx_binary(time,target,indx_start,indx_end) - left_slicing_indx=closest_idx-left_window - right_slicing_indx=closest_idx+right_window - time_tmp,data_tmp=self.custom_padding(time, data, left_slicing_indx,right_slicing_indx, padding=padding) + # left_slicing_indx=closest_idx-left_window + # right_slicing_indx=closest_idx+right_window + # time_tmp,data_tmp=self.custom_padding(time, data, left_slicing_indx,right_slicing_indx, padding=padding) - matched_time.append(time_tmp) - matched_data.append(data_tmp) + # matched_time.append(time_tmp) + # matched_data.append(data_tmp) - left_indx=closest_idx + # left_indx=closest_idx - matched_time=np.array(matched_time) - matched_data=np.array(matched_data) + # matched_time=np.array(matched_time) + # matched_data=np.array(matched_data) - return matched_time, matched_data + # return matched_time, matched_data - def time_matching(self,time, data, time_std, left_window=0, right_window=0, mode='merge_asof', padding='last'): - if mode == 'merge_asof': - if len(data.shape) == 1: - return self.time_matching_merge_asof_1d(time, data, time_std,\ - left_window=left_window, right_window=right_window) - elif len(data.shape) == 2: - return self.time_matching_merge_asof_2d(time, data, time_std,\ - left_window=left_window, right_window=right_window) - else: - print('The data has to be 1d array or 2d array') - elif mode == 'binary': - return self.time_matching_binary_search(time, data, time_std,\ - left_window=left_window, right_window=right_window) - elif mode == 'dynamic': - return self.time_matching_dynamic_search(time, data, time_std,\ - left_window=left_window, right_window=right_window,padding=padding) - - @staticmethod - def check_even_time_spacing(time,time_start=0.01): - time_start_indx=np.argmin(abs(time-time_start)) - - time=np.array(time) - dt_tmp=time[time_start_indx+1:time_start_indx+101]-time[time_start_indx:time_start_indx+100] + # def time_matching(self,time, data, time_std, left_window=0, right_window=0, mode='merge_asof', padding='last'): + # if mode == 'merge_asof': + # if len(data.shape) == 1: + # return self.time_matching_merge_asof_1d(time, data, time_std,\ + # left_window=left_window, right_window=right_window) + # elif len(data.shape) == 2: + # return self.time_matching_merge_asof_2d(time, data, time_std,\ + # left_window=left_window, right_window=right_window) + # else: + # print('The data has to be 1d array or 2d array') + # elif mode == 'binary': + # return self.time_matching_binary_search(time, data, time_std,\ + # left_window=left_window, right_window=right_window) + # elif mode == 'dynamic': + # return self.time_matching_dynamic_search(time, data, time_std,\ + # left_window=left_window, right_window=right_window,padding=padding) + + # @staticmethod + # def check_even_time_spacing(time,time_start=0.01): + # time_start_indx=np.argmin(abs(time-time_start)) + + # time=np.array(time) + # dt_tmp=time[time_start_indx+1:time_start_indx+101]-time[time_start_indx:time_start_indx+100] - dt=np.mean(dt_tmp) - dt_std=np.std(dt_tmp) - std_norm=dt_std/dt + # dt=np.mean(dt_tmp) + # dt_std=np.std(dt_tmp) + # std_norm=dt_std/dt - if std_norm>0.1**5: - if_dt_even=False - else: - if_dt_even=True + # if std_norm>0.1**5: + # if_dt_even=False + # else: + # if_dt_even=True - return dt,dt_std,if_dt_even + # return dt,dt_std,if_dt_even - @staticmethod - def time_interp_past_looking(time, data, time_std, mode='extrapolate'): - if mode == 'extrapolate': - pass - elif mode == 'fill': - pass + # @staticmethod + # def time_interp_past_looking(time, data, time_std, mode='extrapolate'): + # if mode == 'extrapolate': + # pass + # elif mode == 'fill': + # pass - def time_interp_1d(self, time, data, time_std, mode='normal'): - if mode=='normal': - return np.interp(time_std, time, data) - else: - return self.time_interp_past_looking(time, data, time_std, mode) + # def time_interp_1d(self, time, data, time_std, mode='normal'): + # if mode=='normal': + # return np.interp(time_std, time, data) + # else: + # return self.time_interp_past_looking(time, data, time_std, mode) - def time_interp(self, time, data, time_std, mode='normal'): - if len(data.shape) == 1: - return self.time_interp_1d(time, data, time_std, mode=mode) - elif len(data.shape) == 2: - data_interp=[] - for i in range(data.shape[0]): - data_interp.append(self.time_interp_1d(time, data[i,:], time_std, mode=mode)) - - return np.array(data_interp) + # def time_interp(self, time, data, time_std, mode='normal'): + # if len(data.shape) == 1: + # return self.time_interp_1d(time, data, time_std, mode=mode) + # elif len(data.shape) == 2: + # data_interp=[] + # for i in range(data.shape[0]): + # data_interp.append(self.time_interp_1d(time, data[i,:], time_std, mode=mode)) + + # return np.array(data_interp) - @staticmethod - def find_plateau(series, window_size=40, threshold=0.1, plot=False): - """ - Finds the start and end times of the plateau region in the given time series. - - Args: - series (pd.Series): Time series data with time as index and values as data. - window_size (int, optional): Window size for rolling average and standard deviation. Default is 40. - threshold (float, optional): Threshold for determining the plateau region. Default is 0.1. - - Returns: - tuple: (t_min, t_max) representing the start and end times of the plateau region. - """ - rolling_avg = series.rolling(window=window_size, center=True).mean() - data_rolling_std = series.rolling(window=window_size, center=True).std() - - # Normalize the rolling standard deviation - normalized_std = data_rolling_std / abs(rolling_avg) - if min(normalized_std)>=threshold: - return 0,0 - - # Find the start and end indices of the plateau region - plateau_start = normalized_std[normalized_std < threshold].index[0] - plateau_end = normalized_std[normalized_std < threshold].index[-1] - - if plot: - plt.clf() - plt.plot(normalized_std.index,normalized_std.values) - plt.xlabel('time (ms)') - plt.ylabel(f'std/avg(window={window_size})') - - plt.axvline(plateau_start,color='red') - plt.axvline(plateau_end,color='red') - plt.show() - - return plateau_start, plateau_end + # @staticmethod + # def find_plateau(series, window_size=40, threshold=0.1, plot=False): + # """ + # Finds the start and end times of the plateau region in the given time series. + + # Args: + # series (pd.Series): Time series data with time as index and values as data. + # window_size (int, optional): Window size for rolling average and standard deviation. Default is 40. + # threshold (float, optional): Threshold for determining the plateau region. Default is 0.1. + + # Returns: + # tuple: (t_min, t_max) representing the start and end times of the plateau region. + # """ + # rolling_avg = series.rolling(window=window_size, center=True).mean() + # data_rolling_std = series.rolling(window=window_size, center=True).std() + + # # Normalize the rolling standard deviation + # normalized_std = data_rolling_std / abs(rolling_avg) + # if min(normalized_std)>=threshold: + # return 0,0 + + # # Find the start and end indices of the plateau region + # plateau_start = normalized_std[normalized_std < threshold].index[0] + # plateau_end = normalized_std[normalized_std < threshold].index[-1] + + # if plot: + # plt.clf() + # plt.plot(normalized_std.index,normalized_std.values) + # plt.xlabel('time (ms)') + # plt.ylabel(f'std/avg(window={window_size})') + + # plt.axvline(plateau_start,color='red') + # plt.axvline(plateau_end,color='red') + # plt.show() + + # return plateau_start, plateau_end - def flat_top_finder(self,discharge, window_size=500, threshold=0.01, plot=False): - file_dict = self.get_data(discharge, 'basic', norm=True) - time = file_dict['ip']['xdata'][:] - data = file_dict['ip']['zdata'][:] - if max(data)<=3: - t_max, t_min = 0,0 - else: - time=time[data>3] - data=data[data>3] - - dip = np.gradient(data, time) - - # Convert data and time to a pandas Series - series = pd.Series(data, index=time) - t_max, t_min=self.find_plateau(series,window_size=window_size, threshold=threshold, plot=plot) - - if plot: - plt.clf() - plt.plot(series.index, series.values) - plt.axvline(t_min,color='red') - plt.axvline(t_max,color='red') - plt.xlabel('time (ms)') - plt.ylabel(r'Plasma current $I_p$') - plt.show() - - return t_max, t_min + # def flat_top_finder(self,discharge, window_size=500, threshold=0.01, plot=False): + # file_dict = self.get_data(discharge, 'basic', norm=True) + # time = file_dict['ip']['xdata'][:] + # data = file_dict['ip']['zdata'][:] + # if max(data)<=3: + # t_max, t_min = 0,0 + # else: + # time=time[data>3] + # data=data[data>3] + + # dip = np.gradient(data, time) + + # # Convert data and time to a pandas Series + # series = pd.Series(data, index=time) + # t_max, t_min=self.find_plateau(series,window_size=window_size, threshold=threshold, plot=plot) + + # if plot: + # plt.clf() + # plt.plot(series.index, series.values) + # plt.axvline(t_min,color='red') + # plt.axvline(t_max,color='red') + # plt.xlabel('time (ms)') + # plt.ylabel(r'Plasma current $I_p$') + # plt.show() + + # return t_max, t_min def deal_with_missing_data(self): pass - def time_series_full_pipeline(self,discharge,suffix_list,time_std_key, time_std=[],custom_time_std=False,Ip_window_size=500, Ip_std_threshold=0.01, plot_Ip=False, norm_mode='all', interp_suffix=[], interp_mode='normal', time_matching_mode='dynamic', left_window={'ece_s':50}, right_window={'ece_s':50}, time_matching_padding='zeros', plot_matched_data=False): - ''' - - time_std: the standard time - - interp_suffix: the list suffix and key to - e.g. interp_suffix=[['ts','core.dens'],['ts','core.dens']] #e.g. [['ts','core.dens'],['ts','core.dens']] - interp_mode='normal' - - time_matching_mode = ['merge_asof','binary','dynamic'] only 'dynamic' works for now (04/29/2024) - - time_matching_padding=['zeros', 'last', 'nan'] - - plot_matched_data: plot the matched data - ''' - - #get all the data and normalize the data - all_file_dict=self.get_full_data(discharge, suffix_list, norm_mode=norm_mode) - if custom_time_std: - pass - else: - time_std=all_file_dict[time_std_key[0]][time_std_key[1]]['xdata'][:] - - t_min, t_max=self.flat_top_finder(discharge, window_size=Ip_window_size, threshold=Ip_std_threshold, plot=plot_Ip) - - #time_interp - for item in interp_suffix: - data_interp=self.time_interp(all_file_dict[item[0]][item[1]]['xdata'][:], \ - all_file_dict[item[0]][item[1]]['zdata'][:], \ - time_std, mode=interp_mode) - all_file_dict[item[0]][item[1]]['xdata']=time_std - all_file_dict[item[0]][item[1]]['zdata']=data_interp - - #cut_time for standard time - [key1,_]=time_std_key - - if custom_time_std: - time_cut,data_cut=self.cut_time(time_std, time_std,t_min, t_max) - else: - for key2 in all_file_dict[key1].keys(): - time_cut,data_cut=self.cut_time(all_file_dict[key1][key2]['xdata'][:], \ - all_file_dict[key1][key2]['zdata'][:], \ - t_min, t_max) - all_file_dict[key1][key2]={'xdata':time_cut,'zdata':data_cut} + # def time_series_full_pipeline(self,discharge,suffix_list,time_std_key, time_std=[],custom_time_std=False,Ip_window_size=500, Ip_std_threshold=0.01, plot_Ip=False, norm_mode='all', interp_suffix=[], interp_mode='normal', time_matching_mode='dynamic', left_window={'ece_s':50}, right_window={'ece_s':50}, time_matching_padding='zeros', plot_matched_data=False): + # ''' + + # time_std: the standard time + + # interp_suffix: the list suffix and key to + # e.g. interp_suffix=[['ts','core.dens'],['ts','core.dens']] #e.g. [['ts','core.dens'],['ts','core.dens']] + # interp_mode='normal' + + # time_matching_mode = ['merge_asof','binary','dynamic'] only 'dynamic' works for now (04/29/2024) + + # time_matching_padding=['zeros', 'last', 'nan'] + + # plot_matched_data: plot the matched data + # ''' + + # #get all the data and normalize the data + # all_file_dict=self.get_full_data(discharge, suffix_list, norm_mode=norm_mode) + # if custom_time_std: + # pass + # else: + # time_std=all_file_dict[time_std_key[0]][time_std_key[1]]['xdata'][:] + + # t_min, t_max=self.flat_top_finder(discharge, window_size=Ip_window_size, threshold=Ip_std_threshold, plot=plot_Ip) + + # #time_interp + # for item in interp_suffix: + # data_interp=self.time_interp(all_file_dict[item[0]][item[1]]['xdata'][:], \ + # all_file_dict[item[0]][item[1]]['zdata'][:], \ + # time_std, mode=interp_mode) + # all_file_dict[item[0]][item[1]]['xdata']=time_std + # all_file_dict[item[0]][item[1]]['zdata']=data_interp + + # #cut_time for standard time + # [key1,_]=time_std_key + + # if custom_time_std: + # time_cut,data_cut=self.cut_time(time_std, time_std,t_min, t_max) + # else: + # for key2 in all_file_dict[key1].keys(): + # time_cut,data_cut=self.cut_time(all_file_dict[key1][key2]['xdata'][:], \ + # all_file_dict[key1][key2]['zdata'][:], \ + # t_min, t_max) + # all_file_dict[key1][key2]={'xdata':time_cut,'zdata':data_cut} - time_std=time_cut + # time_std=time_cut - #time matching - for key1 in all_file_dict.keys(): - for key2 in all_file_dict[key1].keys(): + # #time matching + # for key1 in all_file_dict.keys(): + # for key2 in all_file_dict[key1].keys(): - try: - left_window_tmp=left_window[key1][key2] - right_window_tmp=right_window[key1][key2] - except: - left_window_tmp=0 - right_window_tmp=0 + # try: + # left_window_tmp=left_window[key1][key2] + # right_window_tmp=right_window[key1][key2] + # except: + # left_window_tmp=0 + # right_window_tmp=0 - matched_time, matched_data=self.time_matching(\ - all_file_dict[key1][key2]['xdata'][:], \ - all_file_dict[key1][key2]['zdata'][:], \ - time_std, \ - left_window=left_window_tmp, \ - right_window=right_window_tmp, \ - mode=time_matching_mode,\ - padding=time_matching_padding) + # matched_time, matched_data=self.time_matching(\ + # all_file_dict[key1][key2]['xdata'][:], \ + # all_file_dict[key1][key2]['zdata'][:], \ + # time_std, \ + # left_window=left_window_tmp, \ + # right_window=right_window_tmp, \ + # mode=time_matching_mode,\ + # padding=time_matching_padding) - all_file_dict[key1][key2]['xdata']=matched_time - all_file_dict[key1][key2]['zdata']=matched_data + # all_file_dict[key1][key2]['xdata']=matched_time + # all_file_dict[key1][key2]['zdata']=matched_data - if plot_matched_data: - for key1 in all_file_dict.keys(): - for key2 in all_file_dict[key1].keys(): - print([key1,key2]) - plt.clf() - if all_file_dict[key1][key2]['zdata'].shape[2]==1: + # if plot_matched_data: + # for key1 in all_file_dict.keys(): + # for key2 in all_file_dict[key1].keys(): + # print([key1,key2]) + # plt.clf() + # if all_file_dict[key1][key2]['zdata'].shape[2]==1: - plt.plot(all_file_dict[key1][key2]['xdata'][:,0],\ - all_file_dict[key1][key2]['zdata'][:,:,0]) - else: - for i in range(len(all_file_dict[key1][key2]['xdata'][:])): - plt.plot(all_file_dict[key1][key2]['xdata'][i,:].T,\ - all_file_dict[key1][key2]['zdata'][i,:,:].T) - plt.xlabel('Time (ms)') - plt.ylabel(f'{key1}-{key2}') - plt.show() - - return all_file_dict - -class DatasetPrep(DichargePerp): - def __init__(self, discharge_search_list=[174823], suffix_list=['ts']): - self.discharge_search_list = discharge_search_list - self.suffix_list = suffix_list + # plt.plot(all_file_dict[key1][key2]['xdata'][:,0],\ + # all_file_dict[key1][key2]['zdata'][:,:,0]) + # else: + # for i in range(len(all_file_dict[key1][key2]['xdata'][:])): + # plt.plot(all_file_dict[key1][key2]['xdata'][i,:].T,\ + # all_file_dict[key1][key2]['zdata'][i,:,:].T) + # plt.xlabel('Time (ms)') + # plt.ylabel(f'{key1}-{key2}') + # plt.show() + + # return all_file_dict + +# class DatasetPrep(DichargePerp): +# def __init__(self, discharge_search_list=[174823], suffix_list=['ts']): +# self.discharge_search_list = discharge_search_list +# self.suffix_list = suffix_list - def filter_discharges(self): - suffix_list = self.suffix_list - discharge_search_list = self.discharge_search_list - # Define the criteria for the files you're interested in - criteria = {key: file_normal_size[key]*0.5 for key in suffix_list} +# def filter_discharges(self): +# suffix_list = self.suffix_list +# discharge_search_list = self.discharge_search_list +# # Define the criteria for the files you're interested in +# criteria = {key: file_normal_size[key]*0.5 for key in suffix_list} - discharge_list = {key: [] for key in suffix_list} +# discharge_list = {key: [] for key in suffix_list} - for discharge in tqdm(discharge_search_list): - for suffix, size_limit in criteria.items(): - discharge_path = self.file_path_gen(discharge,suffix) - # Check if the file exists - if os.path.isfile(discharge_path): - # Get the size of the file - file_size = os.path.getsize(discharge_path) - if file_size > size_limit: - discharge_list[suffix].append(discharge) - else: - pass - return discharge_list - - - def normalization(data): - pass - - def merge_multi_discharge(self,discharge_list_tmp,): - pass - - -class post_processing(): - def smooth_rolling_avg(self, time, data, smooth_point, center_window=10000, edge_window=500, time_spread=5): - indx_min=np.argmin(abs(time-(smooth_point-time_spread))) - indx_max=np.argmin(abs(time-(smooth_point+time_spread))) - smoothed_section=np.zeros(indx_max-indx_min+1) - for i in range(indx_min,indx_max+1): - current_time=time[i] - window_size=center_window-abs(smooth_point-current_time)/time_spread*(center_window-edge_window) - smoothed_section[i-indx_min]=np.mean(data[i-int(window_size/2):i+int(window_size/2)+1]) - return smoothed_section,indx_min,indx_max - - - def smooth_rolling_avg_and_put_back(self, time, data, smooth_point_list, center_window=10000, edge_window=500, time_spread=5): - data_smooth=data.copy() - for smooth_point in smooth_point_list: - smoothed_section,indx_min,indx_max=self.smooth_rolling_avg(time, data, smooth_point, center_window=center_window, edge_window=edge_window, time_spread=time_spread) - data_smooth[indx_min:indx_max+1]=smoothed_section - return data_smooth - - def denorm_data(): - pass - -class data_obj_rest(): +# for discharge in tqdm(discharge_search_list): +# for suffix, size_limit in criteria.items(): +# discharge_path = self.file_path_gen(discharge,suffix) +# # Check if the file exists +# if os.path.isfile(discharge_path): +# # Get the size of the file +# file_size = os.path.getsize(discharge_path) +# if file_size > size_limit: +# discharge_list[suffix].append(discharge) +# else: +# pass +# return discharge_list + + +# def normalization(data): +# pass + +# def merge_multi_discharge(self,discharge_list_tmp,): +# pass + + +# class post_processing(): +# def smooth_rolling_avg(self, time, data, smooth_point, center_window=10000, edge_window=500, time_spread=5): +# indx_min=np.argmin(abs(time-(smooth_point-time_spread))) +# indx_max=np.argmin(abs(time-(smooth_point+time_spread))) +# smoothed_section=np.zeros(indx_max-indx_min+1) +# for i in range(indx_min,indx_max+1): +# current_time=time[i] +# window_size=center_window-abs(smooth_point-current_time)/time_spread*(center_window-edge_window) +# smoothed_section[i-indx_min]=np.mean(data[i-int(window_size/2):i+int(window_size/2)+1]) +# return smoothed_section,indx_min,indx_max + + +# def smooth_rolling_avg_and_put_back(self, time, data, smooth_point_list, center_window=10000, edge_window=500, time_spread=5): +# data_smooth=data.copy() +# for smooth_point in smooth_point_list: +# smoothed_section,indx_min,indx_max=self.smooth_rolling_avg(time, data, smooth_point, center_window=center_window, edge_window=edge_window, time_spread=time_spread) +# data_smooth[indx_min:indx_max+1]=smoothed_section +# return data_smooth + +# def denorm_data(): +# pass + +# class data_obj_rest(): - def save_dict_to_hdf5(dictionary, h5file): - for key, value in dictionary.items(): - if isinstance(value, dict): - group = h5file.create_group(key) - save_dict_to_hdf5(value, group) - else: - h5file.create_dataset(key, data=value) - - def TS_interp_Z(discharge,write_h5=True,plot=False): - TS_Z_min_set = [0.0, 0.03, 0.09, 0.1, 0.15, 0.16, - 0.21, 0.22, 0.26, 0.27, 0.28, 0.3, 0.31, 0.32, 0.36, - 0.37, 0.39, 0.4, 0.41, 0.42, 0.43, 0.44, 0.45, 0.46, - 0.47, 0.48, 0.49, 0.5, 0.51, 0.52, 0.53, 0.54, 0.55, - 0.56, 0.57, 0.58, 0.59, 0.6, 0.61, 0.62, 0.63, 0.64, - 0.65, 0.66, 0.67, 0.68, 0.69, 0.7, 0.71, 0.72, 0.73, - 0.74, 0.75, 0.76, 0.77, 0.78, 0.79, 0.8, 0.81, 0.82, - 0.83, 0.84, 0.85, 0.86, 0.87, 0.88, 0.89, 0.9, 0.91, - 0.92, 0.93] - str_shot = str(discharge)[:2] - path = f'/scratch/gpfs/EKOLEMEN/big_d3d_data/{str_shot}0000/' +# # def save_dict_to_hdf5(dictionary, h5file): +# # for key, value in dictionary.items(): +# # if isinstance(value, dict): +# # group = h5file.create_group(key) +# # save_dict_to_hdf5(value, group) +# # else: +# # h5file.create_dataset(key, data=value) + +# def TS_interp_Z(discharge,write_h5=True,plot=False): +# TS_Z_min_set = [0.0, 0.03, 0.09, 0.1, 0.15, 0.16, +# 0.21, 0.22, 0.26, 0.27, 0.28, 0.3, 0.31, 0.32, 0.36, +# 0.37, 0.39, 0.4, 0.41, 0.42, 0.43, 0.44, 0.45, 0.46, +# 0.47, 0.48, 0.49, 0.5, 0.51, 0.52, 0.53, 0.54, 0.55, +# 0.56, 0.57, 0.58, 0.59, 0.6, 0.61, 0.62, 0.63, 0.64, +# 0.65, 0.66, 0.67, 0.68, 0.69, 0.7, 0.71, 0.72, 0.73, +# 0.74, 0.75, 0.76, 0.77, 0.78, 0.79, 0.8, 0.81, 0.82, +# 0.83, 0.84, 0.85, 0.86, 0.87, 0.88, 0.89, 0.9, 0.91, +# 0.92, 0.93] +# str_shot = str(discharge)[:2] +# path = f'/scratch/gpfs/EKOLEMEN/big_d3d_data/{str_shot}0000/' - TS_file = h5py.File(path + str(discharge) + '_TS.h5', 'r') - TS_RZ_file = h5py.File(path + str(discharge) + '_TS_RZ.h5', 'r') +# TS_file = h5py.File(path + str(discharge) + '_TS.h5', 'r') +# TS_RZ_file = h5py.File(path + str(discharge) + '_TS_RZ.h5', 'r') - TS_Z = TS_RZ_file['S.BLESSED.CORE.Z']['zdata'][:] - order_index = np.argsort(TS_Z) - TS_Z_sort = TS_Z[order_index] +# TS_Z = TS_RZ_file['S.BLESSED.CORE.Z']['zdata'][:] +# order_index = np.argsort(TS_Z) +# TS_Z_sort = TS_Z[order_index] - TS_interp = {} - TS_keys = ['TS.BLESSED.CORE.density', 'TS.BLESSED.CORE.temp'] - for key in TS_keys: - TS_interp_list = [] - TS_time = TS_file[key]['xdata'][:] - for i in range(len(TS_time)): - TS_data = TS_file[key]['zdata'][:, i]*0.1**19 - TS_data_sort = TS_data[order_index] - TS_interp_tmp = np.interp(TS_Z_min_set, TS_Z_sort, - TS_data_sort) - TS_interp_list.append(TS_interp_tmp) - # start here - TS_interp[key] = {'xdata': np.array(TS_time), - 'ydata': np.array(TS_Z_min_set), - 'zdata': np.array(TS_interp_list).T*10.**19} - - if write_h5: - with h5py.File(f'{path}{discharge}_TS_core_interp.h5', 'w') as h5file: - save_dict_to_hdf5(TS_interp, h5file) - - if plot: - plt.clf() - plt.scatter(TS_Z_min_set, TS_interp[key]['zdata'][:, 600], - label='interp') - plt.scatter(TS_Z_sort, (TS_file[key]['zdata'][:,600])[order_index], - label='origin') - plt.legend() - plt.show() +# TS_interp = {} +# TS_keys = ['TS.BLESSED.CORE.density', 'TS.BLESSED.CORE.temp'] +# for key in TS_keys: +# TS_interp_list = [] +# TS_time = TS_file[key]['xdata'][:] +# for i in range(len(TS_time)): +# TS_data = TS_file[key]['zdata'][:, i]*0.1**19 +# TS_data_sort = TS_data[order_index] +# TS_interp_tmp = np.interp(TS_Z_min_set, TS_Z_sort, +# TS_data_sort) +# TS_interp_list.append(TS_interp_tmp) +# # start here +# TS_interp[key] = {'xdata': np.array(TS_time), +# 'ydata': np.array(TS_Z_min_set), +# 'zdata': np.array(TS_interp_list).T*10.**19} + +# if write_h5: +# with h5py.File(f'{path}{discharge}_TS_core_interp.h5', 'w') as h5file: +# save_dict_to_hdf5(TS_interp, h5file) + +# if plot: +# plt.clf() +# plt.scatter(TS_Z_min_set, TS_interp[key]['zdata'][:, 600], +# label='interp') +# plt.scatter(TS_Z_sort, (TS_file[key]['zdata'][:,600])[order_index], +# label='origin') +# plt.legend() +# plt.show() - return 0 +# return 0 - def read_file(discharge, file_suffix, df_time): - - path = find_path(discharge) - file = h5py.File(f'{path}{discharge}_{file_suffix}.h5', 'r') - keys = file.keys() - - for i, key in enumerate(keys): - dict_tmp = {'xdata': file[key]['xdata']} - if len(file[key]['zdata'].shape) == 2: - for j in range(file[key]['zdata'].shape[0]): - dict_tmp[key+str(j)] = file[key]['zdata'][j, :] - elif len(file[key]['zdata'].shape) == 1: - dict_tmp[key] = file[key]['zdata'] + # def read_file(discharge, file_suffix, df_time): + + # path = find_path(discharge) + # file = h5py.File(f'{path}{discharge}_{file_suffix}.h5', 'r') + # keys = file.keys() + + # for i, key in enumerate(keys): + # dict_tmp = {'xdata': file[key]['xdata']} + # if len(file[key]['zdata'].shape) == 2: + # for j in range(file[key]['zdata'].shape[0]): + # dict_tmp[key+str(j)] = file[key]['zdata'][j, :] + # elif len(file[key]['zdata'].shape) == 1: + # dict_tmp[key] = file[key]['zdata'] - df_tmp = pd.DataFrame(dict_tmp).astype('float32') - if i == 0: - df = pd.merge_asof(df_time, df_tmp, on='xdata', - direction='nearest') - else: - df = pd.merge_asof(df, df_tmp, on='xdata', - direction='nearest') - file.close() - return df - - def hdf5_generator(discharge_list, h5_profiles, - data_filename='diag2diag.pkl'): - all_X =[] - all_y = [] - all_time = [] - discharg_read_list = [] - len_list = [] - for discharge in tqdm(discharge_list): - print(discharge) - try: - dfs = {} - # creating the standard time - path=find_path(discharge) + # df_tmp = pd.DataFrame(dict_tmp).astype('float32') + # if i == 0: + # df = pd.merge_asof(df_time, df_tmp, on='xdata', + # direction='nearest') + # else: + # df = pd.merge_asof(df, df_tmp, on='xdata', + # direction='nearest') + # file.close() + # return df + + # def hdf5_generator(discharge_list, h5_profiles, + # data_filename='diag2diag.pkl'): + # all_X =[] + # all_y = [] + # all_time = [] + # discharg_read_list = [] + # len_list = [] + # for discharge in tqdm(discharge_list): + # print(discharge) + # try: + # dfs = {} + # # creating the standard time + # path=find_path(discharge) - file = h5py.File(f'{path}{discharge}_shape.h5', 'r') - t_min = 0 - t_max = file['R0']['xdata'][-1] - file.close() + # file = h5py.File(f'{path}{discharge}_shape.h5', 'r') + # t_min = 0 + # t_max = file['R0']['xdata'][-1] + # file.close() - file = h5py.File(f'{path}{discharge}_TS.h5', 'r') - df_time = pd.DataFrame({'xdata': file[list(file.keys())[0]]['xdata']}) - time = file[list(file.keys())[0]]['xdata'][:] + # file = h5py.File(f'{path}{discharge}_TS.h5', 'r') + # df_time = pd.DataFrame({'xdata': file[list(file.keys())[0]]['xdata']}) + # time = file[list(file.keys())[0]]['xdata'][:] - time_index = (time >= t_min) & (time <= t_max) - time_tmp = time[time_index] - df_time = pd.DataFrame({'xdata': time_tmp}) - file.close() + # time_index = (time >= t_min) & (time <= t_max) + # time_tmp = time[time_index] + # df_time = pd.DataFrame({'xdata': time_tmp}) + # file.close() - # Read all the files - for file_suffix in h5_profiles: - df = read_file(discharge, file_suffix, df_time) - dfs[file_suffix] = df - - # summarize all the data in this dicharge - df_tmp = np.concatenate( - [dfs[key].to_numpy()[1:] for key in dfs.keys()], axis=1) - - key_list_dict = {} - key_list = [] - for key in dfs.keys(): - key_list_dict[key]=list(dfs[key].keys()) - for key_ in key_list_dict[key]: - key_list.append(key_) + # # Read all the files + # for file_suffix in h5_profiles: + # df = read_file(discharge, file_suffix, df_time) + # dfs[file_suffix] = df + + # # summarize all the data in this dicharge + # df_tmp = np.concatenate( + # [dfs[key].to_numpy()[1:] for key in dfs.keys()], axis=1) + + # key_list_dict = {} + # key_list = [] + # for key in dfs.keys(): + # key_list_dict[key]=list(dfs[key].keys()) + # for key_ in key_list_dict[key]: + # key_list.append(key_) - # add this discharge to the total file - all_X.append(df_tmp) - all_time.append(df_time['xdata']) - all_time_tmp= np.concatenate(all_time, axis=0) - all_X_tmp = np.concatenate(all_X, axis=0) - len_list.append(df_time['xdata'].shape[0]) - discharg_read_list.append(discharge) - # Serialize the data and save to a file - with open(data_filename, 'wb') as file: - pickle.dump([all_X_tmp, all_time_tmp, discharg_read_list, - len_list, key_list, key_list_dict], file) - - except Exception as e: # if 2==1: - print(f"Error: {e}") - continue - finally: # if 2==1: - try: - file.close() - except: - continue - - return [all_X_tmp] + # # add this discharge to the total file + # all_X.append(df_tmp) + # all_time.append(df_time['xdata']) + # all_time_tmp= np.concatenate(all_time, axis=0) + # all_X_tmp = np.concatenate(all_X, axis=0) + # len_list.append(df_time['xdata'].shape[0]) + # discharg_read_list.append(discharge) + # # Serialize the data and save to a file + # with open(data_filename, 'wb') as file: + # pickle.dump([all_X_tmp, all_time_tmp, discharg_read_list, + # len_list, key_list, key_list_dict], file) + + # except Exception as e: # if 2==1: + # print(f"Error: {e}") + # continue + # finally: # if 2==1: + # try: + # file.close() + # except: + # continue + + # return [all_X_tmp] From e0b3eca6cafb9d9d021936d0dcfd5ee3eee45115 Mon Sep 17 00:00:00 2001 From: Nathaniel Chen Date: Tue, 11 Jun 2024 13:57:56 -0400 Subject: [PATCH 013/103] Added functions --- src/fusion_ai_hub/base/util/dict_to_hdf5.py | 7 ++ src/fusion_ai_hub/base/util/divide_data.py | 11 ++++ src/fusion_ai_hub/base/util/generate_hdf5.py | 66 +++++++++++++++++++ src/fusion_ai_hub/base/util/hdf5_to_dict.py | 8 +++ src/fusion_ai_hub/base/util/read_file.py | 23 +++++++ .../core/magnitude_scaling/compute_norms.py | 42 ++++++++++++ .../core/magnitude_scaling/norm.py | 19 ++++++ .../core/magnitude_scaling/rescale.py | 0 .../core/time_domain_processing/cut_time.py | 6 ++ .../get_windowed_data.py | 6 ++ src/fusion_ai_hub/datasets/fetch/fetch.py | 0 src/fusion_ai_hub/datasets/toy_loader/load.py | 17 +++++ src/fusion_ai_hub/display/specshow.py | 10 +++ src/fusion_ai_hub/display/waveshow.py | 9 +++ src/fusion_ai_hub/sampling/match_times.py | 23 +++++++ 15 files changed, 247 insertions(+) create mode 100644 src/fusion_ai_hub/base/util/dict_to_hdf5.py create mode 100644 src/fusion_ai_hub/base/util/divide_data.py create mode 100644 src/fusion_ai_hub/base/util/generate_hdf5.py create mode 100644 src/fusion_ai_hub/base/util/hdf5_to_dict.py create mode 100644 src/fusion_ai_hub/base/util/read_file.py create mode 100644 src/fusion_ai_hub/core/magnitude_scaling/compute_norms.py create mode 100644 src/fusion_ai_hub/core/magnitude_scaling/norm.py create mode 100644 src/fusion_ai_hub/core/magnitude_scaling/rescale.py create mode 100644 src/fusion_ai_hub/core/time_domain_processing/cut_time.py create mode 100644 src/fusion_ai_hub/core/time_domain_processing/get_windowed_data.py create mode 100644 src/fusion_ai_hub/datasets/fetch/fetch.py create mode 100644 src/fusion_ai_hub/datasets/toy_loader/load.py create mode 100644 src/fusion_ai_hub/display/specshow.py create mode 100644 src/fusion_ai_hub/display/waveshow.py create mode 100644 src/fusion_ai_hub/sampling/match_times.py diff --git a/src/fusion_ai_hub/base/util/dict_to_hdf5.py b/src/fusion_ai_hub/base/util/dict_to_hdf5.py new file mode 100644 index 0000000..d1992b1 --- /dev/null +++ b/src/fusion_ai_hub/base/util/dict_to_hdf5.py @@ -0,0 +1,7 @@ +def save_dict_to_hdf5(dictionary, h5file): + for key, value in dictionary.items(): + if isinstance(value, dict): + group = h5file.create_group(key) + save_dict_to_hdf5(value, group) + else: + h5file.create_dataset(key, data=value) \ No newline at end of file diff --git a/src/fusion_ai_hub/base/util/divide_data.py b/src/fusion_ai_hub/base/util/divide_data.py new file mode 100644 index 0000000..2748d95 --- /dev/null +++ b/src/fusion_ai_hub/base/util/divide_data.py @@ -0,0 +1,11 @@ + # divide the data into subcategory +def data_division(self, input_file, input_suffix): + if input_suffix in multi_level: + input_multi_level = {} + for key in file_keys[input_suffix].keys(): + keys_of_this_category = file_keys[input_suffix][key] + input_multi_level[key] = {key_i: input_file[key_i] + for key_i in keys_of_this_category} + else: + input_multi_level = {input_suffix: input_file} + return input_multi_level \ No newline at end of file diff --git a/src/fusion_ai_hub/base/util/generate_hdf5.py b/src/fusion_ai_hub/base/util/generate_hdf5.py new file mode 100644 index 0000000..df52710 --- /dev/null +++ b/src/fusion_ai_hub/base/util/generate_hdf5.py @@ -0,0 +1,66 @@ +def hdf5_generator(discharge_list, h5_profiles, + data_filename='diag2diag.pkl'): + all_X =[] + all_y = [] + all_time = [] + discharg_read_list = [] + len_list = [] + for discharge in tqdm(discharge_list): + print(discharge) + try: + dfs = {} + # creating the standard time + path=find_path(discharge) + + file = h5py.File(f'{path}{discharge}_shape.h5', 'r') + t_min = 0 + t_max = file['R0']['xdata'][-1] + file.close() + + file = h5py.File(f'{path}{discharge}_TS.h5', 'r') + df_time = pd.DataFrame({'xdata': file[list(file.keys())[0]]['xdata']}) + time = file[list(file.keys())[0]]['xdata'][:] + + time_index = (time >= t_min) & (time <= t_max) + time_tmp = time[time_index] + df_time = pd.DataFrame({'xdata': time_tmp}) + file.close() + + # Read all the files + for file_suffix in h5_profiles: + df = read_file(discharge, file_suffix, df_time) + dfs[file_suffix] = df + + # summarize all the data in this dicharge + df_tmp = np.concatenate( + [dfs[key].to_numpy()[1:] for key in dfs.keys()], axis=1) + + key_list_dict = {} + key_list = [] + for key in dfs.keys(): + key_list_dict[key]=list(dfs[key].keys()) + for key_ in key_list_dict[key]: + key_list.append(key_) + + # add this discharge to the total file + all_X.append(df_tmp) + all_time.append(df_time['xdata']) + all_time_tmp= np.concatenate(all_time, axis=0) + all_X_tmp = np.concatenate(all_X, axis=0) + len_list.append(df_time['xdata'].shape[0]) + discharg_read_list.append(discharge) + # Serialize the data and save to a file + with open(data_filename, 'wb') as file: + pickle.dump([all_X_tmp, all_time_tmp, discharg_read_list, + len_list, key_list, key_list_dict], file) + + except Exception as e: # if 2==1: + print(f"Error: {e}") + continue + finally: # if 2==1: + try: + file.close() + except: + continue + + return [all_X_tmp] \ No newline at end of file diff --git a/src/fusion_ai_hub/base/util/hdf5_to_dict.py b/src/fusion_ai_hub/base/util/hdf5_to_dict.py new file mode 100644 index 0000000..8a7ec9f --- /dev/null +++ b/src/fusion_ai_hub/base/util/hdf5_to_dict.py @@ -0,0 +1,8 @@ +def hdf5_to_dict(self, group): + result = {} + for key in group.keys(): + if isinstance(group[key], h5py.Dataset): + result[key] = group[key][()] + elif isinstance(group[key], h5py.Group): + result[key] = self.hdf5_to_dict(group[key]) + return result \ No newline at end of file diff --git a/src/fusion_ai_hub/base/util/read_file.py b/src/fusion_ai_hub/base/util/read_file.py new file mode 100644 index 0000000..13515ab --- /dev/null +++ b/src/fusion_ai_hub/base/util/read_file.py @@ -0,0 +1,23 @@ +def read_file(discharge, file_suffix, df_time): + + path = find_path(discharge) + file = h5py.File(f'{path}{discharge}_{file_suffix}.h5', 'r') + keys = file.keys() + + for i, key in enumerate(keys): + dict_tmp = {'xdata': file[key]['xdata']} + if len(file[key]['zdata'].shape) == 2: + for j in range(file[key]['zdata'].shape[0]): + dict_tmp[key+str(j)] = file[key]['zdata'][j, :] + elif len(file[key]['zdata'].shape) == 1: + dict_tmp[key] = file[key]['zdata'] + + df_tmp = pd.DataFrame(dict_tmp).astype('float32') + if i == 0: + df = pd.merge_asof(df_time, df_tmp, on='xdata', + direction='nearest') + else: + df = pd.merge_asof(df, df_tmp, on='xdata', + direction='nearest') + file.close() + return df \ No newline at end of file diff --git a/src/fusion_ai_hub/core/magnitude_scaling/compute_norms.py b/src/fusion_ai_hub/core/magnitude_scaling/compute_norms.py new file mode 100644 index 0000000..f77a70c --- /dev/null +++ b/src/fusion_ai_hub/core/magnitude_scaling/compute_norms.py @@ -0,0 +1,42 @@ +def order_of_magnitude_normal_factor_calc(self,discharge): + norm_factor_list_tmp={} + for suffix in self.file_keys.keys(): + file_dict=self.get_data(discharge, suffix, norm=False) + norm_factor_list_tmp[suffix]={} + for key in file_dict.keys(): + mean_tmp=abs(np.mean(file_dict[key]['zdata'][:])) + try: + exponent=self.get_order_of_magnitude(mean_tmp) + norm_factor_list_tmp[suffix][key]=10**exponent + except: + norm_factor_list_tmp[suffix][key]=1. + return norm_factor_list_tmp + +def avg_factor_calc(self,discharge): + avg_factor={} + for suffix in self.file_keys.keys(): + file_dict=self.get_data(discharge, suffix, norm=True) + avg_factor[suffix]={} + for key in file_dict.keys(): + data=file_dict[key]['zdata'][:] + avg_tmp=np.mean(data,axis=len(data.shape)-1) + if np.isnan(avg_tmp).any(): + avg_tmp=0. + + avg_factor[suffix][key]=avg_tmp + + return avg_factor + +def std_factor_calc(self,discharge): + std_factor={} + for suffix in self.file_keys.keys(): + file_dict=self.get_data(discharge, suffix, norm=True) + std_factor[suffix]={} + for key in file_dict.keys(): + data=file_dict[key]['zdata'][:] + std_tmp=np.std(data,axis=len(data.shape)-1) + if np.isnan(std_tmp).any(): + std_tmp=1. + std_factor[suffix][key]=std_tmp + + return std_factor \ No newline at end of file diff --git a/src/fusion_ai_hub/core/magnitude_scaling/norm.py b/src/fusion_ai_hub/core/magnitude_scaling/norm.py new file mode 100644 index 0000000..61524d8 --- /dev/null +++ b/src/fusion_ai_hub/core/magnitude_scaling/norm.py @@ -0,0 +1,19 @@ +@staticmethod +def norm_data(data,avg_,std_,mode='all'): + avg_=np.array(avg_) + std_=np.array(std_) + if mode == 'all': + std_all=(np.mean(std_**2))**0.5 + avg_all=np.mean(avg_) + elif mode=='std_all_avg_individual': + std_all=(np.mean(std_**2))**0.5 + avg_all=np.expand_dims(avg_,axis=1) + + elif mode=='individual': + std_all=np.expand_dims(avg_,axis=1) + avg_all=np.expand_dims(avg_,axis=1) + + + data_norm=(data-avg_all)/std_all + + return data_norm \ No newline at end of file diff --git a/src/fusion_ai_hub/core/magnitude_scaling/rescale.py b/src/fusion_ai_hub/core/magnitude_scaling/rescale.py new file mode 100644 index 0000000..e69de29 diff --git a/src/fusion_ai_hub/core/time_domain_processing/cut_time.py b/src/fusion_ai_hub/core/time_domain_processing/cut_time.py new file mode 100644 index 0000000..f88553c --- /dev/null +++ b/src/fusion_ai_hub/core/time_domain_processing/cut_time.py @@ -0,0 +1,6 @@ +@staticmethod +def cut_time(time, data, t_min, t_max): + t_indx_min=np.argmin(abs(np.array(time)-t_min)) + t_indx_max=np.argmin(abs(np.array(time)-t_max)) + + return time[t_indx_min:t_indx_max], data[...,t_indx_min:t_indx_max] diff --git a/src/fusion_ai_hub/core/time_domain_processing/get_windowed_data.py b/src/fusion_ai_hub/core/time_domain_processing/get_windowed_data.py new file mode 100644 index 0000000..e73ab23 --- /dev/null +++ b/src/fusion_ai_hub/core/time_domain_processing/get_windowed_data.py @@ -0,0 +1,6 @@ +# Function to get windowed data +@staticmethod +def get_windowed_data(df, center_index, window_size=5): + start = max(center_index - window_size, 0) + end = min(center_index + window_size + 1, len(df)) + return df.iloc[start:end].drop(columns=['xdata']) \ No newline at end of file diff --git a/src/fusion_ai_hub/datasets/fetch/fetch.py b/src/fusion_ai_hub/datasets/fetch/fetch.py new file mode 100644 index 0000000..e69de29 diff --git a/src/fusion_ai_hub/datasets/toy_loader/load.py b/src/fusion_ai_hub/datasets/toy_loader/load.py new file mode 100644 index 0000000..448c2f4 --- /dev/null +++ b/src/fusion_ai_hub/datasets/toy_loader/load.py @@ -0,0 +1,17 @@ +def get_data(self,discharge, suffix, norm=True): + discharge_path=self.file_path_gen(discharge, suffix) + input_file = h5py.File(discharge_path, 'r') + input_dict_tmp = self.hdf5_to_dict(input_file) + if suffix in no_level: + input_dict={suffix:input_dict_tmp} + else: + input_dict=input_dict_tmp + + if norm and (suffix in self.norm_factor_list): + for key in input_dict.keys(): + if self.norm_factor_list[suffix][key]=='log': + input_dict[key]['zdata']=np.log(np.array(input_dict[key]['zdata'][:])) + else: + input_dict[key]['zdata']=np.array(input_dict[key]['zdata'][:])/self.norm_factor_list[suffix][key] + + return input_dict \ No newline at end of file diff --git a/src/fusion_ai_hub/display/specshow.py b/src/fusion_ai_hub/display/specshow.py new file mode 100644 index 0000000..c62f276 --- /dev/null +++ b/src/fusion_ai_hub/display/specshow.py @@ -0,0 +1,10 @@ +@staticmethod +def spectro_plot(freq, time, amp_f_t): + plt.clf() + plt.imshow(amp_f_t,aspect='auto',cmap='hot', + extent=[time[0], time[-1], freq[-1], freq[0]]) + plt.colorbar() + plt.ylabel('kHz') + plt.xlabel('ms') + plt.gca().invert_yaxis() + plt.show() \ No newline at end of file diff --git a/src/fusion_ai_hub/display/waveshow.py b/src/fusion_ai_hub/display/waveshow.py new file mode 100644 index 0000000..1054a7d --- /dev/null +++ b/src/fusion_ai_hub/display/waveshow.py @@ -0,0 +1,9 @@ +@staticmethod +def time_serie_plot(dict): + plt.clf() + if dict['zdata'][:].shape == 1: + plt.plot(dict['xdata'][:],dict['zdata'][:]) + else: + plt.plot(dict['xdata'][:],dict['zdata'][:].T) + plt.xlabel('Time (ms)') + plt.show() \ No newline at end of file diff --git a/src/fusion_ai_hub/sampling/match_times.py b/src/fusion_ai_hub/sampling/match_times.py new file mode 100644 index 0000000..2c5d178 --- /dev/null +++ b/src/fusion_ai_hub/sampling/match_times.py @@ -0,0 +1,23 @@ +@staticmethod +def time_matching_merge_asof_1d(time1, data1, time_std, left_window=0, right_window=0): + # Convert input arrays to DataFrames + df1 = pd.DataFrame({'time1': time1, 'data1': data1}) + df2 = pd.DataFrame({'time_std': time_std}) + + # Sort the DataFrames by the time columns + df1.sort_values('time1', inplace=True) + df2.sort_values('time_std', inplace=True) + + # Perform the asof merge + merged_df = pd.merge_asof(df2, df1, left_on='time_std', + right_on='time1', direction='nearest') + + # Drop unnecessary columns and handle NaN values + merged_df.drop(columns='time_std', inplace=True) + merged_df.dropna(inplace=True) + + # Extract the matched time and data + matched_time = merged_df['time1'].values + matched_data = merged_df['data1'].values + + return matched_time, matched_data \ No newline at end of file From 1a784e7d62752220248af31f3058868ddfa36fe0 Mon Sep 17 00:00:00 2001 From: Nathaniel Chen <79379842+nathanchenseanwalter@users.noreply.github.com> Date: Wed, 12 Jun 2024 05:30:57 -0700 Subject: [PATCH 014/103] Updates to syntax --- docs/functions.md | 106 +++++++++++++++ examples/Dataset_prep/data_prep_obj.py | 2 +- src/fusion_ai_hub/base/util/divide_data.py | 23 ++-- src/fusion_ai_hub/base/util/generate_hdf5.py | 2 + src/fusion_ai_hub/base/util/hdf5_to_dict.py | 43 ++++-- src/fusion_ai_hub/base/util/read_file.py | 122 ++++++++++++++---- .../core/magnitude_scaling/compute_norms.py | 106 +++++++++------ .../core/magnitude_scaling/norm.py | 3 +- .../core/time_domain_processing/cut_time.py | 38 +++++- .../get_windowed_data.py | 34 ++++- src/fusion_ai_hub/datasets/fetch/fetch.py | 11 ++ src/fusion_ai_hub/datasets/toy_loader/load.py | 22 ++++ src/fusion_ai_hub/display/specshow.py | 93 ++++++++++++- src/fusion_ai_hub/display/waveshow.py | 90 +++++++++++-- src/fusion_ai_hub/sampling/match_times.py | 4 + 15 files changed, 591 insertions(+), 108 deletions(-) create mode 100644 docs/functions.md diff --git a/docs/functions.md b/docs/functions.md new file mode 100644 index 0000000..9416d38 --- /dev/null +++ b/docs/functions.md @@ -0,0 +1,106 @@ +## Mermaid Diagram + +```mermaid +graph LR + + A[hub] + + subgraph base + direction LR + + A1[file.py] + A1 --> B1[load] + A1 --> B2[save] + A1 --> B3[merge] + end + + subgraph core + direction LR + + A2[scaling.py] + A2 --> B4[compute_norms] + A2 --> B5[norm] + A2 --> B6[rescale] + + A3[spectral.py] + A3 --> B7[spectrogram] + + A4[time_domain] + B8[filtering.py] + B9[preemphasis.py] + B10[windowing.py] + A4 --> B8 + A4 --> B9 + A4 --> B10 + B8 --> C1[lfilt] + B8 --> C2[filtfilt] + B9 --> C3[preemphasis] + B9 --> C4[deemphasis] + B10 --> C5[cut_time] + B10 --> C6[get_window] + B10 --> C7[splice_time] + end + + subgraph datasets + direction LR + + A5[query] + B11[retrieve.py] + B12[modify.py - permission] + A5 --> B11 + A5 --> B12 + end + + subgraph display + direction LR + + A6[display.py] + A6 --> B13[specshow] + A6 --> B14[waveshow] + end + + subgraph feature_extract + direction LR + + A7[filterbanks.py] + + A8[morphological_filters.py] + + A9[frame_operations.py] + + A10[delta_features.py] + A10 --> B30[closest_index] + A10 --> B31[time_matching_binary] + end + + subgraph resampling + direction LR + + A2000[interpolation.py] + A2000 --> B2000[interpolate_signal] + + A3000[resampling.py] + A3000 --> B3000[resample] + end + + subgraph util + direction LR + + A4000[util.py] + end + + subgraph physics + direction LR + + A41[flattop_finder.py] + end + + A --> base + A --> core + A --> datasets + A --> display + A --> feature_extract + A --> resampling + A --> util + A --> physics +``` diff --git a/examples/Dataset_prep/data_prep_obj.py b/examples/Dataset_prep/data_prep_obj.py index 7ebaaee..8c011d4 100644 --- a/examples/Dataset_prep/data_prep_obj.py +++ b/examples/Dataset_prep/data_prep_obj.py @@ -800,7 +800,7 @@ def __init__(self): # return freq, time, amp_f_t # @staticmethod - # def spectro_plot(freq, time, amp_f_t): + # def spectro_plot(freq, time, amp_f_tz): # plt.clf() # plt.imshow(amp_f_t,aspect='auto',cmap='hot', # extent=[time[0], time[-1], freq[-1], freq[0]]) diff --git a/src/fusion_ai_hub/base/util/divide_data.py b/src/fusion_ai_hub/base/util/divide_data.py index 2748d95..5e461a2 100644 --- a/src/fusion_ai_hub/base/util/divide_data.py +++ b/src/fusion_ai_hub/base/util/divide_data.py @@ -1,11 +1,12 @@ - # divide the data into subcategory -def data_division(self, input_file, input_suffix): - if input_suffix in multi_level: - input_multi_level = {} - for key in file_keys[input_suffix].keys(): - keys_of_this_category = file_keys[input_suffix][key] - input_multi_level[key] = {key_i: input_file[key_i] - for key_i in keys_of_this_category} - else: - input_multi_level = {input_suffix: input_file} - return input_multi_level \ No newline at end of file +# don't need this +# reference divide the data into subcategory +# def data_division(self, input_file, input_suffix): +# if input_suffix in multi_level: +# input_multi_level = {} +# for key in file_keys[input_suffix].keys(): +# keys_of_this_category = file_keys[input_suffix][key] +# input_multi_level[key] = {key_i: input_file[key_i] +# for key_i in keys_of_this_category} +# else: +# input_multi_level = {input_suffix: input_file} +# return input_multi_level \ No newline at end of file diff --git a/src/fusion_ai_hub/base/util/generate_hdf5.py b/src/fusion_ai_hub/base/util/generate_hdf5.py index df52710..20371ce 100644 --- a/src/fusion_ai_hub/base/util/generate_hdf5.py +++ b/src/fusion_ai_hub/base/util/generate_hdf5.py @@ -1,3 +1,5 @@ + +# reference def hdf5_generator(discharge_list, h5_profiles, data_filename='diag2diag.pkl'): all_X =[] diff --git a/src/fusion_ai_hub/base/util/hdf5_to_dict.py b/src/fusion_ai_hub/base/util/hdf5_to_dict.py index 8a7ec9f..a0fdb15 100644 --- a/src/fusion_ai_hub/base/util/hdf5_to_dict.py +++ b/src/fusion_ai_hub/base/util/hdf5_to_dict.py @@ -1,8 +1,35 @@ -def hdf5_to_dict(self, group): - result = {} - for key in group.keys(): - if isinstance(group[key], h5py.Dataset): - result[key] = group[key][()] - elif isinstance(group[key], h5py.Group): - result[key] = self.hdf5_to_dict(group[key]) - return result \ No newline at end of file +import h5py +from pathlib import Path + +def hdf5_to_dict(file_path: str) -> dict: + """ + Convert an HDF5 file to a dictionary. + + Parameters + ---------- + file_path : str + Path to the HDF5 file. + + Returns + ------- + dict + A dictionary containing the contents of the HDF5 file. + """ + with h5py.File(file_path, 'r') as f: + result = {} + for key in f.keys(): + if isinstance(f[key], h5py.Dataset): + result[key] = f[key][()] + elif isinstance(f[key], h5py.Group): + result[key] = hdf5_to_dict(f[key]) + return result + +# reference +# def hdf5_to_dict(self, group): +# result = {} +# for key in group.keys(): +# if isinstance(group[key], h5py.Dataset): +# result[key] = group[key][()] +# elif isinstance(group[key], h5py.Group): +# result[key] = self.hdf5_to_dict(group[key]) +# return result \ No newline at end of file diff --git a/src/fusion_ai_hub/base/util/read_file.py b/src/fusion_ai_hub/base/util/read_file.py index 13515ab..29f676d 100644 --- a/src/fusion_ai_hub/base/util/read_file.py +++ b/src/fusion_ai_hub/base/util/read_file.py @@ -1,23 +1,101 @@ -def read_file(discharge, file_suffix, df_time): - - path = find_path(discharge) - file = h5py.File(f'{path}{discharge}_{file_suffix}.h5', 'r') - keys = file.keys() - - for i, key in enumerate(keys): - dict_tmp = {'xdata': file[key]['xdata']} - if len(file[key]['zdata'].shape) == 2: - for j in range(file[key]['zdata'].shape[0]): - dict_tmp[key+str(j)] = file[key]['zdata'][j, :] - elif len(file[key]['zdata'].shape) == 1: - dict_tmp[key] = file[key]['zdata'] +import numpy as np +import h5py + +def read_data(file_path: str) -> np.ndarray: + """ + Read data from an HDF5 file. + + Parameters + ---------- + file_path : str + Path to the HDF5 file. + + Returns + ------- + np.ndarray + The data stored in the HDF5 file. + """ + with h5py.File(file_path, 'r') as f: + data = f['data'][()] + return data + +def read_time(file_path: str) -> np.ndarray: + """ + Read time from an HDF5 file. + + Parameters + ---------- + file_path : str + Path to the HDF5 file. + + Returns + ------- + np.ndarray + The time stored in the HDF5 file. + """ + with h5py.File(file_path, 'r') as f: + time = f['time'][()] + return time + +def read_attributes(file_path: str) -> list: + """ + Read attributes from an HDF5 file. + + Parameters + ---------- + file_path : str + Path to the HDF5 file. + + Returns + ------- + list + A list of attributes stored in the HDF5 file. + """ + with h5py.File(file_path, 'r') as f: + attributes = list(f.attrs.keys()) + return attributes + +def read_file(file_path: str) -> dict: + """ + Read data, time, and attributes from an HDF5 file. + + Parameters + ---------- + file_path : str + Path to the HDF5 file. + + Returns + ------- + dict + A dictionary containing the data, time, and attributes stored in the HDF5 file. + """ + with h5py.File(file_path, 'r') as f: + data = f['data'][()] + time = f['time'][()] + attributes = list(f.attrs.keys()) + return {'data': data, 'time': time, 'attributes': attributes} + +# reference +# def read_file(discharge, file_suffix, df_time): + +# path = find_path(discharge) +# file = h5py.File(f'{path}{discharge}_{file_suffix}.h5', 'r') +# keys = file.keys() + +# for i, key in enumerate(keys): +# dict_tmp = {'xdata': file[key]['xdata']} +# if len(file[key]['zdata'].shape) == 2: +# for j in range(file[key]['zdata'].shape[0]): +# dict_tmp[key+str(j)] = file[key]['zdata'][j, :] +# elif len(file[key]['zdata'].shape) == 1: +# dict_tmp[key] = file[key]['zdata'] - df_tmp = pd.DataFrame(dict_tmp).astype('float32') - if i == 0: - df = pd.merge_asof(df_time, df_tmp, on='xdata', - direction='nearest') - else: - df = pd.merge_asof(df, df_tmp, on='xdata', - direction='nearest') - file.close() - return df \ No newline at end of file +# df_tmp = pd.DataFrame(dict_tmp).astype('float32') +# if i == 0: +# df = pd.merge_asof(df_time, df_tmp, on='xdata', +# direction='nearest') +# else: +# df = pd.merge_asof(df, df_tmp, on='xdata', +# direction='nearest') +# file.close() +# return df \ No newline at end of file diff --git a/src/fusion_ai_hub/core/magnitude_scaling/compute_norms.py b/src/fusion_ai_hub/core/magnitude_scaling/compute_norms.py index f77a70c..e0116ed 100644 --- a/src/fusion_ai_hub/core/magnitude_scaling/compute_norms.py +++ b/src/fusion_ai_hub/core/magnitude_scaling/compute_norms.py @@ -1,42 +1,64 @@ -def order_of_magnitude_normal_factor_calc(self,discharge): - norm_factor_list_tmp={} - for suffix in self.file_keys.keys(): - file_dict=self.get_data(discharge, suffix, norm=False) - norm_factor_list_tmp[suffix]={} - for key in file_dict.keys(): - mean_tmp=abs(np.mean(file_dict[key]['zdata'][:])) - try: - exponent=self.get_order_of_magnitude(mean_tmp) - norm_factor_list_tmp[suffix][key]=10**exponent - except: - norm_factor_list_tmp[suffix][key]=1. - return norm_factor_list_tmp - -def avg_factor_calc(self,discharge): - avg_factor={} - for suffix in self.file_keys.keys(): - file_dict=self.get_data(discharge, suffix, norm=True) - avg_factor[suffix]={} - for key in file_dict.keys(): - data=file_dict[key]['zdata'][:] - avg_tmp=np.mean(data,axis=len(data.shape)-1) - if np.isnan(avg_tmp).any(): - avg_tmp=0. - - avg_factor[suffix][key]=avg_tmp - - return avg_factor - -def std_factor_calc(self,discharge): - std_factor={} - for suffix in self.file_keys.keys(): - file_dict=self.get_data(discharge, suffix, norm=True) - std_factor[suffix]={} - for key in file_dict.keys(): - data=file_dict[key]['zdata'][:] - std_tmp=np.std(data,axis=len(data.shape)-1) - if np.isnan(std_tmp).any(): - std_tmp=1. - std_factor[suffix][key]=std_tmp - - return std_factor \ No newline at end of file +import numpy as np + +# dalpha signal needs log, but no other signals +# density needs to multiply by 10^-19 + +def oom(x: float) -> int: + """ + Calculate the order of magnitude of a number. + + Parameters + ---------- + x : float + The input number. + + Returns + ------- + int: Order of magnitude of the input number. + """ + return int(np.floor(np.log10(abs(x)))) + + +# references (legacy) +# def order_of_magnitude_normal_factor_calc(self,discharge): +# norm_factor_list_tmp={} +# for suffix in self.file_keys.keys(): +# file_dict=self.get_data(discharge, suffix, norm=False) +# norm_factor_list_tmp[suffix]={} +# for key in file_dict.keys(): +# mean_tmp=abs(np.mean(file_dict[key]['zdata'][:])) +# try: +# exponent=self.get_order_of_magnitude(mean_tmp) +# norm_factor_list_tmp[suffix][key]=10**exponent +# except: +# norm_factor_list_tmp[suffix][key]=1. +# return norm_factor_list_tmp + +# def avg_factor_calc(self,discharge): +# avg_factor={} +# for suffix in self.file_keys.keys(): +# file_dict=self.get_data(discharge, suffix, norm=True) +# avg_factor[suffix]={} +# for key in file_dict.keys(): +# data=file_dict[key]['zdata'][:] +# avg_tmp=np.mean(data,axis=len(data.shape)-1) +# if np.isnan(avg_tmp).any(): +# avg_tmp=0. + +# avg_factor[suffix][key]=avg_tmp + +# return avg_factor + +# def std_factor_calc(self,discharge): +# std_factor={} +# for suffix in self.file_keys.keys(): +# file_dict=self.get_data(discharge, suffix, norm=True) +# std_factor[suffix]={} +# for key in file_dict.keys(): +# data=file_dict[key]['zdata'][:] +# std_tmp=np.std(data,axis=len(data.shape)-1) +# if np.isnan(std_tmp).any(): +# std_tmp=1. +# std_factor[suffix][key]=std_tmp + +# return std_factor \ No newline at end of file diff --git a/src/fusion_ai_hub/core/magnitude_scaling/norm.py b/src/fusion_ai_hub/core/magnitude_scaling/norm.py index 61524d8..317278b 100644 --- a/src/fusion_ai_hub/core/magnitude_scaling/norm.py +++ b/src/fusion_ai_hub/core/magnitude_scaling/norm.py @@ -1,4 +1,5 @@ -@staticmethod +import numpy as np + def norm_data(data,avg_,std_,mode='all'): avg_=np.array(avg_) std_=np.array(std_) diff --git a/src/fusion_ai_hub/core/time_domain_processing/cut_time.py b/src/fusion_ai_hub/core/time_domain_processing/cut_time.py index f88553c..d299e83 100644 --- a/src/fusion_ai_hub/core/time_domain_processing/cut_time.py +++ b/src/fusion_ai_hub/core/time_domain_processing/cut_time.py @@ -1,6 +1,34 @@ -@staticmethod -def cut_time(time, data, t_min, t_max): - t_indx_min=np.argmin(abs(np.array(time)-t_min)) - t_indx_max=np.argmin(abs(np.array(time)-t_max)) +import numpy as np - return time[t_indx_min:t_indx_max], data[...,t_indx_min:t_indx_max] +def cut_time(t: np.ndarray, data: np.ndarray, t_min: float, t_max: float) -> Tuple[np.ndarray, np.ndarray]: + """ + Cut the time-series data between two specified times. + + Parameters + ---------- + t : np.ndarray, shape = (n,) + Array of times. + data : np.ndarray, shape = (..., n) + The input data to be cut. + t_min : float + Minimum time to cut data. + t_max : float + Maximum time to cut data. + + Returns + ------- + np.ndarray: Cut time array. + np.ndarray: Cut data array. + """ + t_indx_min = np.argmin(abs(np.array(t) - t_min)) + t_indx_max = np.argmin(abs(np.array(t) - t_max)) + + return t[t_indx_min:t_indx_max], data[..., t_indx_min:t_indx_max] + +# reference +# @staticmethod +# def cut_time(time, data, t_min, t_max): +# t_indx_min=np.argmin(abs(np.array(time)-t_min)) +# t_indx_max=np.argmin(abs(np.array(time)-t_max)) + +# return time[t_indx_min:t_indx_max], data[...,t_indx_min:t_indx_max] diff --git a/src/fusion_ai_hub/core/time_domain_processing/get_windowed_data.py b/src/fusion_ai_hub/core/time_domain_processing/get_windowed_data.py index e73ab23..5fb6989 100644 --- a/src/fusion_ai_hub/core/time_domain_processing/get_windowed_data.py +++ b/src/fusion_ai_hub/core/time_domain_processing/get_windowed_data.py @@ -1,6 +1,32 @@ -# Function to get windowed data -@staticmethod -def get_windowed_data(df, center_index, window_size=5): +import pandas as pd + +def get_window(df: pd.DataFrame, center_index: int, window_size: int = 5) -> pd.DataFrame: + """ + Get windowed data. + + Parameters + ---------- + df : pd.DataFrame + The input DataFrame. + center_index : int + The center index of the window. + window_size : int + The size of the window. + + Returns + ------- + pd.DataFrame + The windowed data. + """ start = max(center_index - window_size, 0) end = min(center_index + window_size + 1, len(df)) - return df.iloc[start:end].drop(columns=['xdata']) \ No newline at end of file + windowed = df.iloc[start:end].drop(columns=['xdata']) + + return windowed + +# Function to get windowed data +# @staticmethod +# def get_windowed_data(df, center_index, window_size=5): +# start = max(center_index - window_size, 0) +# end = min(center_index + window_size + 1, len(df)) +# return df.iloc[start:end].drop(columns=['xdata']) \ No newline at end of file diff --git a/src/fusion_ai_hub/datasets/fetch/fetch.py b/src/fusion_ai_hub/datasets/fetch/fetch.py index e69de29..7e91ea6 100644 --- a/src/fusion_ai_hub/datasets/fetch/fetch.py +++ b/src/fusion_ai_hub/datasets/fetch/fetch.py @@ -0,0 +1,11 @@ + import tqdm + + """ + Get datasets from tigerdata + + 1. Send command to copy specific zip or tarball from tigerdata to scratch + + 2. Unzip or untar the file into scratch + + 3. Say what is copied, and also give a timer + """ \ No newline at end of file diff --git a/src/fusion_ai_hub/datasets/toy_loader/load.py b/src/fusion_ai_hub/datasets/toy_loader/load.py index 448c2f4..acba5df 100644 --- a/src/fusion_ai_hub/datasets/toy_loader/load.py +++ b/src/fusion_ai_hub/datasets/toy_loader/load.py @@ -1,3 +1,25 @@ +import h5py + +def load(file_path: str) -> dict: + """ + Read data, time, and attributes from an HDF5 file. + + Parameters + ---------- + file_path : str + Path to the HDF5 file. + + Returns + ------- + dict + A dictionary containing the data, time, and attributes stored in the HDF5 file. + """ + with h5py.File(file_path, 'r') as f: + data = f['data'][()] + time = f['time'][()] + attributes = list(f.attrs.keys()) + return {'data': data, 'time': time, 'attributes': attributes} + def get_data(self,discharge, suffix, norm=True): discharge_path=self.file_path_gen(discharge, suffix) input_file = h5py.File(discharge_path, 'r') diff --git a/src/fusion_ai_hub/display/specshow.py b/src/fusion_ai_hub/display/specshow.py index c62f276..23e5fb1 100644 --- a/src/fusion_ai_hub/display/specshow.py +++ b/src/fusion_ai_hub/display/specshow.py @@ -1,10 +1,93 @@ -@staticmethod -def spectro_plot(freq, time, amp_f_t): +import numpy as np +import seaborn as sns +import matplotlib.pyplot as plt +from typing import TYPE_CHECKING, Any, Optional + +from matplotlib.collections import QuadMesh + +def specshow(data: np.ndarray, + *, + x_coords: Optional[np.ndarray] = None, + y_coords: Optional[np.ndarray] = None, + x_axis: Optional[str] = None, + y_axis: Optional[str] = None, + sr: float = 22050, + hop_length: int = 512, + n_fft: Optional[int] = None, + win_length: Optional[int] = None, + fmin: Optional[float] = None, + fmax: Optional[float] = None, + auto_aspect=True, + **kwargs: Any, + ) -> QuadMesh: + """ + Display a spectrogram/chromagram/cqt/etc. + + Parameters + ---------- + data : np.ndarray [shape=(d, n)] + The audio samples. Multichannel audio will be downmixed. + x_coords : np.ndarray [shape=(n,)] + The x-coordinates for the waveform. By default, these are + assumed to be sample indices. + y_coords : np.ndarray [shape=(n,)] + The y-coordinates for the waveform. By default, these are + assumed to be sample values. + x_axis : str + Label for the x-axis. By default, this is 'Time'. + y_axis : str + Label for the y-axis. By default, this is 'Amplitude'. + sr : number > 0 [scalar] + The sample rate of the data. + hop_length : int > 0 + The number of samples between successive frames. + n_fft : int > 0 + The number of samples per frame. + win_length : int <= n_fft + The number of samples in each STFT window. + fmin : float > 0 + The frequency of the lowest spectrogram bin. + fmax : float > 0 + The frequency of the highest spectrogram bin. + auto_aspect : bool + Automatically set the aspect ratio of the plot to match the + spectrogram's aspect ratio. + kwargs : additional keyword arguments + + Returns + ------- + fig : matplotlib.figure.Figure + The figure containing the waveform and spectrogram plots. + ax : matplotlib.axes.Axes + The axis containing the waveform and spectrogram plots. + """ + plt.clf() - plt.imshow(amp_f_t,aspect='auto',cmap='hot', - extent=[time[0], time[-1], freq[-1], freq[0]]) + plt.imshow(data,aspect='auto',cmap='hot', + extent=[x_coords[0], x_coords[-1], y_coords[-1], y_coords[0]]) plt.colorbar() plt.ylabel('kHz') plt.xlabel('ms') plt.gca().invert_yaxis() - plt.show() \ No newline at end of file + plt.show() + +# @staticmethod +# def time_serie_plot(dict): +# plt.clf() +# if dict['zdata'][:].shape == 1: +# plt.plot(dict['xdata'][:],dict['zdata'][:]) +# else: +# plt.plot(dict['xdata'][:],dict['zdata'][:].T) +# plt.xlabel('Time (ms)') +# plt.show() + +# @staticmethod +# def spectro_plot(freq, time, amp_f_t): +# plt.clf() +# plt.imshow(amp_f_t,aspect='auto',cmap='hot', +# extent=[time[0], time[-1], freq[-1], freq[0]]) +# plt.colorbar() +# plt.ylabel('kHz') +# plt.xlabel('ms') +# plt.gca().invert_yaxis() +# plt.show() \ No newline at end of file diff --git a/src/fusion_ai_hub/display/waveshow.py b/src/fusion_ai_hub/display/waveshow.py index 1054a7d..d4a241f 100644 --- a/src/fusion_ai_hub/display/waveshow.py +++ b/src/fusion_ai_hub/display/waveshow.py @@ -1,9 +1,81 @@ -@staticmethod -def time_serie_plot(dict): - plt.clf() - if dict['zdata'][:].shape == 1: - plt.plot(dict['xdata'][:],dict['zdata'][:]) - else: - plt.plot(dict['xdata'][:],dict['zdata'][:].T) - plt.xlabel('Time (ms)') - plt.show() \ No newline at end of file +import numpy as np +import matplotlib.pyplot as plt +import seaborn as sns +from typing import TYPE_CHECKING, Any, Optional + +from matplotlib.collections import QuadMesh + +def waveshow( + y: np.ndarray, + *, + sr: float = 22050, + max_points: int = 11025, + axis: Optional[str] = "time", + offset: float = 0.0, + marker: Union[str, MplPath, MarkerStyle] = "", + where: str = "post", + label: Optional[str] = None, + transpose: bool = False, + ax: Optional[mplaxes.Axes] = None, + x_axis: Optional[Union[str, Deprecated]] = Deprecated(), + **kwargs: Any, + ) -> QuadMesh: + """ + Display a spectrogram/chromagram/cqt/etc. + + Parameters + ---------- + data : np.ndarray [shape=(d, n)] + The audio samples. Multichannel audio will be downmixed. + x_coords : np.ndarray [shape=(n,)] + The x-coordinates for the waveform. By default, these are + assumed to be sample indices. + y_coords : np.ndarray [shape=(n,)] + The y-coordinates for the waveform. By default, these are + assumed to be sample values. + x_axis : str + Label for the x-axis. By default, this is 'Time'. + y_axis : str + Label for the y-axis. By default, this is 'Amplitude'. + sr : number > 0 [scalar] + The sample rate of the data. + hop_length : int > 0 + The number of samples between successive frames. + n_fft : int > 0 + The number of samples per frame. + win_length : int <= n_fft + The number of samples in each STFT window. + fmin : float > 0 + The frequency of the lowest spectrogram bin. + fmax : float > 0 + The frequency of the highest spectrogram bin. + auto_aspect : bool + Automatically set the aspect ratio of the plot to match the + spectrogram's aspect ratio. + kwargs : additional keyword arguments + + Returns + ------- + fig : matplotlib.figure.Figure + The figure containing the waveform and spectrogram plots. + ax : matplotlib.axes.Axes + The axis containing the waveform and spectrogram plots. + See Also + -------- + librosa.display.waveshow + librosa.display.specshow + """ + + plt.clf + plt.plot(y) + plt.show() + +# @staticmethod +# def time_serie_plot(dict): +# plt.clf() +# if dict['zdata'][:].shape == 1: +# plt.plot(dict['xdata'][:],dict['zdata'][:]) +# else: +# plt.plot(dict['xdata'][:],dict['zdata'][:].T) +# plt.xlabel('Time (ms)') +# plt.show() \ No newline at end of file diff --git a/src/fusion_ai_hub/sampling/match_times.py b/src/fusion_ai_hub/sampling/match_times.py index 2c5d178..212b03b 100644 --- a/src/fusion_ai_hub/sampling/match_times.py +++ b/src/fusion_ai_hub/sampling/match_times.py @@ -1,3 +1,7 @@ +import pandas as pd + +def merge_times_1d(t) +# reference @staticmethod def time_matching_merge_asof_1d(time1, data1, time_std, left_window=0, right_window=0): # Convert input arrays to DataFrames From 1f87285d2dbaaad4e8db3d93ecea8fc7785f6815 Mon Sep 17 00:00:00 2001 From: Nathaniel Chen <79379842+nathanchenseanwalter@users.noreply.github.com> Date: Wed, 12 Jun 2024 09:45:49 -0700 Subject: [PATCH 015/103] file.py combines some base class functions --- src/fusion_ai_hub/base/file.py | 180 +++++++++++++++++++++++++++++++++ 1 file changed, 180 insertions(+) create mode 100644 src/fusion_ai_hub/base/file.py diff --git a/src/fusion_ai_hub/base/file.py b/src/fusion_ai_hub/base/file.py new file mode 100644 index 0000000..a81215d --- /dev/null +++ b/src/fusion_ai_hub/base/file.py @@ -0,0 +1,180 @@ +import numpy as np + +import h5py +import os +from pathlib import Path + +from typing import Any, Union + + +def load_data( + path: Union[str, int, Any[os.Pathlike]], + ) -> np.ndarray: + """_summary_ + + Parameters + ---------- + path : Union[str, int, Any[os.Pathlike]] + _description_ + + Returns + ------- + np.ndarray + _description_ + """ + + with h5py.File(path, 'r') as f: + data = f['data'][()] + return data + + +def load_time( + path: Union[str, int, Any[os.Pathlike]], + ) -> np.ndarray: + """_summary_ + + Parameters + ---------- + path : Union[str, int, Any[os.Pathlike]] + _description_ + + Returns + ------- + np.ndarray + _description_ + """ + + with h5py.File(path, 'r') as f: + time = f['time'][()] + return time + + +def load_attributes( + path: Union[str, int, Any[os.Pathlike]], + ) -> list: + """_summary_ + + Parameters + ---------- + path : Union[str, int, Any[os.Pathlike]] + _description_ + + Returns + ------- + list + _description_ + """ + + with h5py.File(path, 'r') as f: + attributes = list(f.attrs.keys()) + return attributes + + +def load( + path: Union[str, int, Any[os.Pathlike]], + ) -> np.ndarray: + """_summary_ + + Parameters + ---------- + path : Union[str, int, Any[os.Pathlike]] + _description_ + + Returns + ------- + np.ndarray + _description_ + """ + + with h5py.File(path, 'r') as f: + data = f['data'][()] + time = f['time'][()] + attributes = list(f.attrs.keys()) + + return {'data': data, + 'time': time, + 'attributes': attributes, + } + + +def dict_to_hdf5( + dictionary: dict, + h5file: h5py.File, + compression: str = None, + ) -> None: + """_summary_ + + Parameters + ---------- + dictionary : dict + _description_ + h5file : h5py.File + _description_ + compression : str, optional + _description_, by default None + """ + + for key, value in dictionary.items(): + if isinstance(value, dict): + group = h5file.create_group(key) + dict_to_hdf5(value, group, compression) + else: + if isinstance(value, (list, tuple)): + value = np.array(value) + h5file.create_dataset(key, + data=value, + compression=compression, + chunks=True, + ) + + +def save( + dictionary: dict, + path: Union[str, int, Any[os.Pathlike]], + compression: str = None, + ) -> None: + """_summary_ + + Parameters + ---------- + dictionary : dict + _description_ + path : Union[str, int, Any[os.Pathlike]] + _description_ + compression : str, optional + _description_, by default None + """ + + if not path.endswith('.h5'): + path += '.h5' + + path.mkdir(parents=True, exist_ok=True) + with h5py.File(path, 'w') as f: + dict_to_hdf5(dictionary, f, compression) + + print(f'Saved to {path}') + + +def merge( + path_1: Union[str, int, Any[os.Pathlike]], + path_2: Union[str, int, Any[os.Pathlike]], + path_out: Union[str, int, Any[os.Pathlike]], + ) -> None: + """_summary_ + + Parameters + ---------- + path_1 : Union[str, int, Any[os.Pathlike]] + _description_ + path_2 : Union[str, int, Any[os.Pathlike]] + _description_ + path_out : Union[str, int, Any[os.Pathlike]] + _description_ + + Returns + ------- + _type_ + _description_ + """ + + return None \ No newline at end of file From 6574656ec4087f90e12fa77323671b4eb7269e04 Mon Sep 17 00:00:00 2001 From: Nathaniel Chen <79379842+nathanchenseanwalter@users.noreply.github.com> Date: Wed, 12 Jun 2024 11:46:52 -0700 Subject: [PATCH 016/103] load and scaling updates --- docs/functions.md | 130 ++++++-------- src/fusion_ai_hub/base/file.py | 180 ------------------- src/fusion_ai_hub/base/load.py | 75 ++++++++ src/fusion_ai_hub/base/merge.py | 99 ++++++++++ src/fusion_ai_hub/base/save.py | 64 +++++++ src/fusion_ai_hub/base/util/dict_to_hdf5.py | 7 - src/fusion_ai_hub/base/util/divide_data.py | 12 -- src/fusion_ai_hub/base/util/generate_hdf5.py | 68 ------- src/fusion_ai_hub/base/util/hdf5_to_dict.py | 35 ---- src/fusion_ai_hub/base/util/read_file.py | 101 ----------- src/fusion_ai_hub/core/scaling.py | 105 +++++++++++ 11 files changed, 402 insertions(+), 474 deletions(-) delete mode 100644 src/fusion_ai_hub/base/file.py create mode 100644 src/fusion_ai_hub/base/load.py create mode 100644 src/fusion_ai_hub/base/merge.py create mode 100644 src/fusion_ai_hub/base/save.py delete mode 100644 src/fusion_ai_hub/base/util/dict_to_hdf5.py delete mode 100644 src/fusion_ai_hub/base/util/divide_data.py delete mode 100644 src/fusion_ai_hub/base/util/generate_hdf5.py delete mode 100644 src/fusion_ai_hub/base/util/hdf5_to_dict.py delete mode 100644 src/fusion_ai_hub/base/util/read_file.py create mode 100644 src/fusion_ai_hub/core/scaling.py diff --git a/docs/functions.md b/docs/functions.md index 9416d38..3b1acde 100644 --- a/docs/functions.md +++ b/docs/functions.md @@ -1,106 +1,94 @@ -## Mermaid Diagram +## Function Organization ```mermaid graph LR - - A[hub] - - subgraph base - direction LR - - A1[file.py] - A1 --> B1[load] - A1 --> B2[save] - A1 --> B3[merge] - end - - subgraph core + subgraph physics direction LR - - A2[scaling.py] - A2 --> B4[compute_norms] - A2 --> B5[norm] - A2 --> B6[rescale] - - A3[spectral.py] - A3 --> B7[spectrogram] - - A4[time_domain] - B8[filtering.py] - B9[preemphasis.py] - B10[windowing.py] - A4 --> B8 - A4 --> B9 - A4 --> B10 - B8 --> C1[lfilt] - B8 --> C2[filtfilt] - B9 --> C3[preemphasis] - B9 --> C4[deemphasis] - B10 --> C5[cut_time] - B10 --> C6[get_window] - B10 --> C7[splice_time] + A41[flattop_finder.py] end - subgraph datasets + subgraph util direction LR - - A5[query] - B11[retrieve.py] - B12[modify.py - permission] - A5 --> B11 - A5 --> B12 + A4000[util.py] end - subgraph display + subgraph resampling direction LR + A2000[interpolation.py] + A2000 --> B2000[interpolate_signal] - A6[display.py] - A6 --> B13[specshow] - A6 --> B14[waveshow] + A3000[resampling.py] + A3000 --> B3000[resample] end subgraph feature_extract direction LR - A7[filterbanks.py] - A8[morphological_filters.py] - A9[frame_operations.py] - A10[delta_features.py] A10 --> B30[closest_index] A10 --> B31[time_matching_binary] end - subgraph resampling + subgraph display direction LR + A6[display.py] + A6 --> B13[specshow] + A6 --> B14[waveshow] + end - A2000[interpolation.py] - A2000 --> B2000[interpolate_signal] - - A3000[resampling.py] - A3000 --> B3000[resample] + subgraph datasets + direction LR + A5[query] + B11[retrieve.py] + B12[modify.py - permission] + A5 --> B11 + A5 --> B12 end - subgraph util + subgraph core direction LR + A2[scaling.py] + A2 --> B4[signal_optimize] + A2 --> B5[get_scaling_factor] + A2 --> B6[normalize] + A2 --> Ba[standardize] - A4000[util.py] + A3[spectral.py] + A3 --> B7[spectrogram] + + A4[time_domain] + B8[filtering.py] + B9[preemphasis.py] + B10[windowing.py] + A4 --> B8 + A4 --> B9 + A4 --> B10 + B8 --> C1[lfilt] + B8 --> C2[filtfilt] + B9 --> C3[preemphasis] + B9 --> C4[deemphasis] + B10 --> C5[cut_time] + B10 --> C6[get_window] + B10 --> C7[splice_time] end - subgraph physics + subgraph base direction LR - - A41[flattop_finder.py] + base1[load.py] + base2[save.py] + base3[merge.py] + base1 --> base1a[list_signals] + base1 --> base1b[load_sample] + base1 --> base1c[load_time] + base1 --> base1d[load_attributes] + base1 --> base1e[load_channels] + base1 --> base1f[load] + base2 --> base2a[dict_to_hdf5] + base2 --> base2b[save] + base3 --> base3a[merge] end - A --> base - A --> core - A --> datasets - A --> display - A --> feature_extract - A --> resampling - A --> util - A --> physics + A[hub] ``` diff --git a/src/fusion_ai_hub/base/file.py b/src/fusion_ai_hub/base/file.py deleted file mode 100644 index a81215d..0000000 --- a/src/fusion_ai_hub/base/file.py +++ /dev/null @@ -1,180 +0,0 @@ -import numpy as np - -import h5py -import os -from pathlib import Path - -from typing import Any, Union - - -def load_data( - path: Union[str, int, Any[os.Pathlike]], - ) -> np.ndarray: - """_summary_ - - Parameters - ---------- - path : Union[str, int, Any[os.Pathlike]] - _description_ - - Returns - ------- - np.ndarray - _description_ - """ - - with h5py.File(path, 'r') as f: - data = f['data'][()] - return data - - -def load_time( - path: Union[str, int, Any[os.Pathlike]], - ) -> np.ndarray: - """_summary_ - - Parameters - ---------- - path : Union[str, int, Any[os.Pathlike]] - _description_ - - Returns - ------- - np.ndarray - _description_ - """ - - with h5py.File(path, 'r') as f: - time = f['time'][()] - return time - - -def load_attributes( - path: Union[str, int, Any[os.Pathlike]], - ) -> list: - """_summary_ - - Parameters - ---------- - path : Union[str, int, Any[os.Pathlike]] - _description_ - - Returns - ------- - list - _description_ - """ - - with h5py.File(path, 'r') as f: - attributes = list(f.attrs.keys()) - return attributes - - -def load( - path: Union[str, int, Any[os.Pathlike]], - ) -> np.ndarray: - """_summary_ - - Parameters - ---------- - path : Union[str, int, Any[os.Pathlike]] - _description_ - - Returns - ------- - np.ndarray - _description_ - """ - - with h5py.File(path, 'r') as f: - data = f['data'][()] - time = f['time'][()] - attributes = list(f.attrs.keys()) - - return {'data': data, - 'time': time, - 'attributes': attributes, - } - - -def dict_to_hdf5( - dictionary: dict, - h5file: h5py.File, - compression: str = None, - ) -> None: - """_summary_ - - Parameters - ---------- - dictionary : dict - _description_ - h5file : h5py.File - _description_ - compression : str, optional - _description_, by default None - """ - - for key, value in dictionary.items(): - if isinstance(value, dict): - group = h5file.create_group(key) - dict_to_hdf5(value, group, compression) - else: - if isinstance(value, (list, tuple)): - value = np.array(value) - h5file.create_dataset(key, - data=value, - compression=compression, - chunks=True, - ) - - -def save( - dictionary: dict, - path: Union[str, int, Any[os.Pathlike]], - compression: str = None, - ) -> None: - """_summary_ - - Parameters - ---------- - dictionary : dict - _description_ - path : Union[str, int, Any[os.Pathlike]] - _description_ - compression : str, optional - _description_, by default None - """ - - if not path.endswith('.h5'): - path += '.h5' - - path.mkdir(parents=True, exist_ok=True) - with h5py.File(path, 'w') as f: - dict_to_hdf5(dictionary, f, compression) - - print(f'Saved to {path}') - - -def merge( - path_1: Union[str, int, Any[os.Pathlike]], - path_2: Union[str, int, Any[os.Pathlike]], - path_out: Union[str, int, Any[os.Pathlike]], - ) -> None: - """_summary_ - - Parameters - ---------- - path_1 : Union[str, int, Any[os.Pathlike]] - _description_ - path_2 : Union[str, int, Any[os.Pathlike]] - _description_ - path_out : Union[str, int, Any[os.Pathlike]] - _description_ - - Returns - ------- - _type_ - _description_ - """ - - return None \ No newline at end of file diff --git a/src/fusion_ai_hub/base/load.py b/src/fusion_ai_hub/base/load.py new file mode 100644 index 0000000..a280c28 --- /dev/null +++ b/src/fusion_ai_hub/base/load.py @@ -0,0 +1,75 @@ +import numpy as np + +import h5py +import os +from pathlib import Path + +from typing import Any, Union + +def list_signals( + path: Union[str, int, Any[os.Pathlike]], + ) -> list: + + with h5py.File(path, 'r') as f: + signals = list(f.keys()) + + return signals + + +def load_sample( + path: Union[str, int, Any[os.Pathlike]], + signal: Union[str, list[str]], + ) -> np.ndarray: + + with h5py.File(path, 'r') as f: + data = f[signal] + sample = data["data"][()] + + return sample + + +def load_time( + path: Union[str, int, Any[os.Pathlike]], + signal: Union[str, list[str]], + ) -> np.ndarray: + + with h5py.File(path, 'r') as f: + data = f[signal] + time = data["time"][()] + + return time + + +def load_attributes( + path: Union[str, int, Any[os.Pathlike]], + signal: Union[str, list[str]], + ) -> list: + + with h5py.File(path, 'r') as f: + data = f[signal] + attributes = list(data.attrs.keys()) + + return attributes + + +def load_channels( + path: Union[str, int, Any[os.Pathlike]], + signal: Union[str, list[str]], + ) -> list: + + with h5py.File(path, 'r') as f: + data = f[signal] + channels = data.attrs["channel_ids"] + + return channels + + +def load( + path: Union[str, int, Any[os.Pathlike]], + signal: Union[str, list[str]], + ) -> np.ndarray: + + with h5py.File(path, 'r') as f: + data = f[signal] + + return data \ No newline at end of file diff --git a/src/fusion_ai_hub/base/merge.py b/src/fusion_ai_hub/base/merge.py new file mode 100644 index 0000000..b3a9308 --- /dev/null +++ b/src/fusion_ai_hub/base/merge.py @@ -0,0 +1,99 @@ +import numpy as np + +import h5py +import os +from pathlib import Path + +from typing import Any, Union + +def merge( + path_1: Union[str, int, Any[os.Pathlike]], + path_2: Union[str, int, Any[os.Pathlike]], + path_out: Union[str, int, Any[os.Pathlike]], + ) -> None: + """_summary_ + + Parameters + ---------- + path_1 : Union[str, int, Any[os.Pathlike]] + _description_ + path_2 : Union[str, int, Any[os.Pathlike]] + _description_ + path_out : Union[str, int, Any[os.Pathlike]] + _description_ + + Returns + ------- + _type_ + _description_ + """ + + return None + +# reference +# def hdf5_generator(discharge_list, h5_profiles, +# data_filename='diag2diag.pkl'): +# all_X =[] +# all_y = [] +# all_time = [] +# discharg_read_list = [] +# len_list = [] +# for discharge in tqdm(discharge_list): +# print(discharge) +# try: +# dfs = {} +# # creating the standard time +# path=find_path(discharge) + +# file = h5py.File(f'{path}{discharge}_shape.h5', 'r') +# t_min = 0 +# t_max = file['R0']['xdata'][-1] +# file.close() + +# file = h5py.File(f'{path}{discharge}_TS.h5', 'r') +# df_time = pd.DataFrame({'xdata': file[list(file.keys())[0]]['xdata']}) +# time = file[list(file.keys())[0]]['xdata'][:] + +# time_index = (time >= t_min) & (time <= t_max) +# time_tmp = time[time_index] +# df_time = pd.DataFrame({'xdata': time_tmp}) +# file.close() + +# # Read all the files +# for file_suffix in h5_profiles: +# df = read_file(discharge, file_suffix, df_time) +# dfs[file_suffix] = df + +# # summarize all the data in this dicharge +# df_tmp = np.concatenate( +# [dfs[key].to_numpy()[1:] for key in dfs.keys()], axis=1) + +# key_list_dict = {} +# key_list = [] +# for key in dfs.keys(): +# key_list_dict[key]=list(dfs[key].keys()) +# for key_ in key_list_dict[key]: +# key_list.append(key_) + +# # add this discharge to the total file +# all_X.append(df_tmp) +# all_time.append(df_time['xdata']) +# all_time_tmp= np.concatenate(all_time, axis=0) +# all_X_tmp = np.concatenate(all_X, axis=0) +# len_list.append(df_time['xdata'].shape[0]) +# discharg_read_list.append(discharge) +# # Serialize the data and save to a file +# with open(data_filename, 'wb') as file: +# pickle.dump([all_X_tmp, all_time_tmp, discharg_read_list, +# len_list, key_list, key_list_dict], file) + +# except Exception as e: # if 2==1: +# print(f"Error: {e}") +# continue +# finally: # if 2==1: +# try: +# file.close() +# except: +# continue + +# return [all_X_tmp] \ No newline at end of file diff --git a/src/fusion_ai_hub/base/save.py b/src/fusion_ai_hub/base/save.py new file mode 100644 index 0000000..06f61de --- /dev/null +++ b/src/fusion_ai_hub/base/save.py @@ -0,0 +1,64 @@ +import numpy as np + +import h5py +import os +from pathlib import Path + +from typing import Any, Union + +def dict_to_hdf5( + dictionary: dict, + h5file: h5py.File, + compression: str = None, + ) -> None: + """_summary_ + + Parameters + ---------- + dictionary : dict + _description_ + h5file : h5py.File + _description_ + compression : str, optional + _description_, by default None + """ + + for key, value in dictionary.items(): + if isinstance(value, dict): + group = h5file.create_group(key) + dict_to_hdf5(value, group, compression) + else: + if isinstance(value, (list, tuple)): + value = np.array(value) + h5file.create_dataset(key, + data=value, + compression=compression, + chunks=True, + ) + + +def save( + dictionary: dict, + path: Union[str, int, Any[os.Pathlike]], + compression: str = None, + ) -> None: + """_summary_ + + Parameters + ---------- + dictionary : dict + _description_ + path : Union[str, int, Any[os.Pathlike]] + _description_ + compression : str, optional + _description_, by default None + """ + + if not path.endswith('.h5'): + path += '.h5' + + path.mkdir(parents=True, exist_ok=True) + with h5py.File(path, 'w') as f: + dict_to_hdf5(dictionary, f, compression) + + print(f'Saved to {path}') \ No newline at end of file diff --git a/src/fusion_ai_hub/base/util/dict_to_hdf5.py b/src/fusion_ai_hub/base/util/dict_to_hdf5.py deleted file mode 100644 index d1992b1..0000000 --- a/src/fusion_ai_hub/base/util/dict_to_hdf5.py +++ /dev/null @@ -1,7 +0,0 @@ -def save_dict_to_hdf5(dictionary, h5file): - for key, value in dictionary.items(): - if isinstance(value, dict): - group = h5file.create_group(key) - save_dict_to_hdf5(value, group) - else: - h5file.create_dataset(key, data=value) \ No newline at end of file diff --git a/src/fusion_ai_hub/base/util/divide_data.py b/src/fusion_ai_hub/base/util/divide_data.py deleted file mode 100644 index 5e461a2..0000000 --- a/src/fusion_ai_hub/base/util/divide_data.py +++ /dev/null @@ -1,12 +0,0 @@ -# don't need this -# reference divide the data into subcategory -# def data_division(self, input_file, input_suffix): -# if input_suffix in multi_level: -# input_multi_level = {} -# for key in file_keys[input_suffix].keys(): -# keys_of_this_category = file_keys[input_suffix][key] -# input_multi_level[key] = {key_i: input_file[key_i] -# for key_i in keys_of_this_category} -# else: -# input_multi_level = {input_suffix: input_file} -# return input_multi_level \ No newline at end of file diff --git a/src/fusion_ai_hub/base/util/generate_hdf5.py b/src/fusion_ai_hub/base/util/generate_hdf5.py deleted file mode 100644 index 20371ce..0000000 --- a/src/fusion_ai_hub/base/util/generate_hdf5.py +++ /dev/null @@ -1,68 +0,0 @@ - -# reference -def hdf5_generator(discharge_list, h5_profiles, - data_filename='diag2diag.pkl'): - all_X =[] - all_y = [] - all_time = [] - discharg_read_list = [] - len_list = [] - for discharge in tqdm(discharge_list): - print(discharge) - try: - dfs = {} - # creating the standard time - path=find_path(discharge) - - file = h5py.File(f'{path}{discharge}_shape.h5', 'r') - t_min = 0 - t_max = file['R0']['xdata'][-1] - file.close() - - file = h5py.File(f'{path}{discharge}_TS.h5', 'r') - df_time = pd.DataFrame({'xdata': file[list(file.keys())[0]]['xdata']}) - time = file[list(file.keys())[0]]['xdata'][:] - - time_index = (time >= t_min) & (time <= t_max) - time_tmp = time[time_index] - df_time = pd.DataFrame({'xdata': time_tmp}) - file.close() - - # Read all the files - for file_suffix in h5_profiles: - df = read_file(discharge, file_suffix, df_time) - dfs[file_suffix] = df - - # summarize all the data in this dicharge - df_tmp = np.concatenate( - [dfs[key].to_numpy()[1:] for key in dfs.keys()], axis=1) - - key_list_dict = {} - key_list = [] - for key in dfs.keys(): - key_list_dict[key]=list(dfs[key].keys()) - for key_ in key_list_dict[key]: - key_list.append(key_) - - # add this discharge to the total file - all_X.append(df_tmp) - all_time.append(df_time['xdata']) - all_time_tmp= np.concatenate(all_time, axis=0) - all_X_tmp = np.concatenate(all_X, axis=0) - len_list.append(df_time['xdata'].shape[0]) - discharg_read_list.append(discharge) - # Serialize the data and save to a file - with open(data_filename, 'wb') as file: - pickle.dump([all_X_tmp, all_time_tmp, discharg_read_list, - len_list, key_list, key_list_dict], file) - - except Exception as e: # if 2==1: - print(f"Error: {e}") - continue - finally: # if 2==1: - try: - file.close() - except: - continue - - return [all_X_tmp] \ No newline at end of file diff --git a/src/fusion_ai_hub/base/util/hdf5_to_dict.py b/src/fusion_ai_hub/base/util/hdf5_to_dict.py deleted file mode 100644 index a0fdb15..0000000 --- a/src/fusion_ai_hub/base/util/hdf5_to_dict.py +++ /dev/null @@ -1,35 +0,0 @@ -import h5py -from pathlib import Path - -def hdf5_to_dict(file_path: str) -> dict: - """ - Convert an HDF5 file to a dictionary. - - Parameters - ---------- - file_path : str - Path to the HDF5 file. - - Returns - ------- - dict - A dictionary containing the contents of the HDF5 file. - """ - with h5py.File(file_path, 'r') as f: - result = {} - for key in f.keys(): - if isinstance(f[key], h5py.Dataset): - result[key] = f[key][()] - elif isinstance(f[key], h5py.Group): - result[key] = hdf5_to_dict(f[key]) - return result - -# reference -# def hdf5_to_dict(self, group): -# result = {} -# for key in group.keys(): -# if isinstance(group[key], h5py.Dataset): -# result[key] = group[key][()] -# elif isinstance(group[key], h5py.Group): -# result[key] = self.hdf5_to_dict(group[key]) -# return result \ No newline at end of file diff --git a/src/fusion_ai_hub/base/util/read_file.py b/src/fusion_ai_hub/base/util/read_file.py deleted file mode 100644 index 29f676d..0000000 --- a/src/fusion_ai_hub/base/util/read_file.py +++ /dev/null @@ -1,101 +0,0 @@ -import numpy as np -import h5py - -def read_data(file_path: str) -> np.ndarray: - """ - Read data from an HDF5 file. - - Parameters - ---------- - file_path : str - Path to the HDF5 file. - - Returns - ------- - np.ndarray - The data stored in the HDF5 file. - """ - with h5py.File(file_path, 'r') as f: - data = f['data'][()] - return data - -def read_time(file_path: str) -> np.ndarray: - """ - Read time from an HDF5 file. - - Parameters - ---------- - file_path : str - Path to the HDF5 file. - - Returns - ------- - np.ndarray - The time stored in the HDF5 file. - """ - with h5py.File(file_path, 'r') as f: - time = f['time'][()] - return time - -def read_attributes(file_path: str) -> list: - """ - Read attributes from an HDF5 file. - - Parameters - ---------- - file_path : str - Path to the HDF5 file. - - Returns - ------- - list - A list of attributes stored in the HDF5 file. - """ - with h5py.File(file_path, 'r') as f: - attributes = list(f.attrs.keys()) - return attributes - -def read_file(file_path: str) -> dict: - """ - Read data, time, and attributes from an HDF5 file. - - Parameters - ---------- - file_path : str - Path to the HDF5 file. - - Returns - ------- - dict - A dictionary containing the data, time, and attributes stored in the HDF5 file. - """ - with h5py.File(file_path, 'r') as f: - data = f['data'][()] - time = f['time'][()] - attributes = list(f.attrs.keys()) - return {'data': data, 'time': time, 'attributes': attributes} - -# reference -# def read_file(discharge, file_suffix, df_time): - -# path = find_path(discharge) -# file = h5py.File(f'{path}{discharge}_{file_suffix}.h5', 'r') -# keys = file.keys() - -# for i, key in enumerate(keys): -# dict_tmp = {'xdata': file[key]['xdata']} -# if len(file[key]['zdata'].shape) == 2: -# for j in range(file[key]['zdata'].shape[0]): -# dict_tmp[key+str(j)] = file[key]['zdata'][j, :] -# elif len(file[key]['zdata'].shape) == 1: -# dict_tmp[key] = file[key]['zdata'] - -# df_tmp = pd.DataFrame(dict_tmp).astype('float32') -# if i == 0: -# df = pd.merge_asof(df_time, df_tmp, on='xdata', -# direction='nearest') -# else: -# df = pd.merge_asof(df, df_tmp, on='xdata', -# direction='nearest') -# file.close() -# return df \ No newline at end of file diff --git a/src/fusion_ai_hub/core/scaling.py b/src/fusion_ai_hub/core/scaling.py new file mode 100644 index 0000000..49b0ab0 --- /dev/null +++ b/src/fusion_ai_hub/core/scaling.py @@ -0,0 +1,105 @@ +import numpy as np + +from typing import Union, Callable, Literal + + +def signal_optimize( + signal: Union[str, list], + apply: bool = True, +) -> dict: + """ + The idea is to have a user input a list of files and then the function will read through a library to see if the channel has any special scaling rules. If it will automatically apply the scaling. There's also an option to only output the scaling rule considerations without applying them. I'm thinking there could be some dictionary file with this. + + For example, the signal 'dalpha' needs to be log transformed, but no other signals need to be log transformed. The signal 'density' needs to be multiplied by 10^-19. + + Parameters + ---------- + signal : Union[str, list] + _description_ + + Returns + ------- + dict + _description_ + """ + + return None + + +def get_scaling_factor( + data: dict, + scaling: Union[Literal["mean", "std", "norm", "oom", "min", "max"], Callable] = "mean", +) -> dict: + """ + Apply a scaling operation specified by the `scaling` parameter to each array in the provided `data` dictionary. + Supports standard operations like 'mean', 'std', 'min', and 'max', or any function that operates over a numpy array. + Also supports getting order of magnitude (oom). + + Parameters + ---------- + data : dict + Dictionary where keys are channel identifiers and values are dicts with key 'zdata' pointing to numpy arrays. + scaling : Union[Literal["mean", "std", "min", "max"], Callable], optional + The scaling operation to apply. Can be one of 'mean', 'std', 'min', 'max', or a function that accepts a numpy array. + Defaults to 'mean'. + + Returns + ------- + dict + Dictionary with the same keys as `data`, where each value is the result of the scaling operation applied to `data[key]['zdata']`. + + Examples + -------- + >>> data = {'channel1': {'zdata': np.array([1, 2, 3])}} + >>> print(get_scaling_factor(data, scaling='max')) + {'channel1': 3} + """ + + # Map string identifiers to numpy functions + scaling_functions = { + "mean": np.mean, + "std": np.std, + "norm": np.linalg.norm, + "oom": lambda x: np.floor(np.log10(abs(x))), + "min": np.min, + "max": np.max, + } + + # If the scaling argument is a string, use the corresponding numpy function + if isinstance(scaling, str): + scaling_function = scaling_functions.get(scaling) + if scaling_function is None: + raise ValueError(f"Unsupported scaling operation: {scaling}") + elif callable(scaling): + scaling_function = scaling + else: + raise TypeError("Scaling must be either a string key for predefined functions or a callable.") + + scaled_values = {} + for key, value in data.items(): + try: + data_array = value['zdata'] + scaled_value = scaling_function(data_array) + if np.isnan(scaled_value).any(): + scaled_value = 0 # Handle NaN values, if any + scaled_values[key] = scaled_value + except Exception as e: + raise RuntimeError(f"Error processing {key}: {str(e)}") + + return scaled_values + +def normalize( + data: dict, + norm: dict, + std: dict, +) -> dict: + + return None + +def standardize( + data: dict, + mean: dict, + std: dict, +) -> dict: + + return None \ No newline at end of file From 4d82e93adbf7592485b0f0b8bbf4f4040e18c1ac Mon Sep 17 00:00:00 2001 From: Nathaniel Chen <79379842+nathanchenseanwalter@users.noreply.github.com> Date: Wed, 12 Jun 2024 13:57:32 -0700 Subject: [PATCH 017/103] init updates --- src/fusion_ai_hub/base/__init__.py | 13 ++++++++ src/fusion_ai_hub/core/scaling.py | 1 + src/fusion_ai_hub/display/display.py | 44 ++++++++++++++++++++++++++++ 3 files changed, 58 insertions(+) create mode 100644 src/fusion_ai_hub/display/display.py diff --git a/src/fusion_ai_hub/base/__init__.py b/src/fusion_ai_hub/base/__init__.py index e69de29..2507e73 100644 --- a/src/fusion_ai_hub/base/__init__.py +++ b/src/fusion_ai_hub/base/__init__.py @@ -0,0 +1,13 @@ +from .load import * +from .save import * +from .merge import * + +__all__ = ["list_signals", + "load_sample", + "load_time", + "load_attributes", + "load_channels", + "load", + "dict_to_hdf5", + "save", + "merge",] \ No newline at end of file diff --git a/src/fusion_ai_hub/core/scaling.py b/src/fusion_ai_hub/core/scaling.py index 49b0ab0..1867b18 100644 --- a/src/fusion_ai_hub/core/scaling.py +++ b/src/fusion_ai_hub/core/scaling.py @@ -2,6 +2,7 @@ from typing import Union, Callable, Literal +# actually just use sklearn.preprocessing def signal_optimize( signal: Union[str, list], diff --git a/src/fusion_ai_hub/display/display.py b/src/fusion_ai_hub/display/display.py new file mode 100644 index 0000000..fb02e88 --- /dev/null +++ b/src/fusion_ai_hub/display/display.py @@ -0,0 +1,44 @@ +import numpy as np +import matplotlib.pyplot as plt +import seaborn as sns + +def visualize(y: np.ndarray, + t: np.ndarray, + labels: list, + xlabel: str = None, + ylabel: str = None, + title: str = None, + ) -> plt.Figure: + + fig, axs = plt.subplots() + + for k, label in enumerate(labels): + sns.lineplot(x=t[:, k], y=y[:, k], label=label) + + axs.set_xlabel(xlabel) + axs.set_ylabel(ylabel) + axs.set_title(title) + plt.show() + + return fig + +def spectrogram(y: np.ndarray, + t: np.ndarray, + f: np.ndarray, + labels: list, + xlabel: str = None, + ylabel: str = None, + title: str = None, + ) -> plt.Figure: + + fig, axs = plt.subplots() + + for k, label in enumerate(labels): + sns.heatmap(y[:, :, k], xticklabels=t[:, k], yticklabels=f, ax=axs, label=label) + + axs.set_xlabel(xlabel) + axs.set_ylabel(ylabel) + axs.set_title(title) + plt.show() + + return fig \ No newline at end of file From d8afde8781adaeec22570ec767caf937fa45fc0a Mon Sep 17 00:00:00 2001 From: Nathaniel Chen <79379842+nathanchenseanwalter@users.noreply.github.com> Date: Thu, 13 Jun 2024 11:29:03 -0700 Subject: [PATCH 018/103] small edits --- src/fusion_ai_hub/base/load.py | 115 +++++++++++++++++++-------------- src/fusion_ai_hub/base/save.py | 30 ++++----- 2 files changed, 79 insertions(+), 66 deletions(-) diff --git a/src/fusion_ai_hub/base/load.py b/src/fusion_ai_hub/base/load.py index a280c28..363b18f 100644 --- a/src/fusion_ai_hub/base/load.py +++ b/src/fusion_ai_hub/base/load.py @@ -1,75 +1,92 @@ import numpy as np - import h5py -import os +from typing import Any, Union, List, Optional from pathlib import Path -from typing import Any, Union - -def list_signals( - path: Union[str, int, Any[os.Pathlike]], - ) -> list: +def list_signals(path: Union[str, Path], + ) -> List[str]: with h5py.File(path, 'r') as f: signals = list(f.keys()) return signals - -def load_sample( - path: Union[str, int, Any[os.Pathlike]], - signal: Union[str, list[str]], - ) -> np.ndarray: +def load_sample(path: Union[str, Path], + signal_name: Optional[Union[str, List[str]]] = None, + ) -> dict: + samples = {} with h5py.File(path, 'r') as f: - data = f[signal] - sample = data["data"][()] - - return sample - + if signal_name is None: + signal_name = list(f.keys()) + if isinstance(signal_name, str): + signal_name = [signal_name] + for signal in signal_name: + data = f[signal] + samples[signal] = data["data"][()] + + return samples -def load_time( - path: Union[str, int, Any[os.Pathlike]], - signal: Union[str, list[str]], - ) -> np.ndarray: +def load_time(path: Union[str, Path], + signal_name: Optional[Union[str, List[str]]] = None, + ) -> dict: + times = {} with h5py.File(path, 'r') as f: - data = f[signal] - time = data["time"][()] - - return time + if signal_name is None: + signal_name = list(f.keys()) + if isinstance(signal_name, str): + signal_name = [signal_name] + for signal in signal_name: + data = f[signal] + times[signal] = data["time"][()] + + return times - -def load_attributes( - path: Union[str, int, Any[os.Pathlike]], - signal: Union[str, list[str]], - ) -> list: +def load_attributes(path: Union[str, Path], + signal_name: Optional[Union[str, List[str]]] = None, + ) -> dict: + attributes = {} with h5py.File(path, 'r') as f: - data = f[signal] - attributes = list(data.attrs.keys()) - + if signal_name is None: + signal_name = list(f.keys()) + if isinstance(signal_name, str): + signal_name = [signal_name] + for signal in signal_name: + data = f[signal] + attributes[signal] = list(data.attrs.keys()) + return attributes - -def load_channels( - path: Union[str, int, Any[os.Pathlike]], - signal: Union[str, list[str]], - ) -> list: +def load_channels(path: Union[str, Path], + signal_name: Optional[Union[str, List[str]]] = None, + ) -> dict: + channels = {} with h5py.File(path, 'r') as f: - data = f[signal] - channels = data.attrs["channel_ids"] - + if signal_name is None: + signal_name = list(f.keys()) + if isinstance(signal_name, str): + signal_name = [signal_name] + for signal in signal_name: + data = f[signal] + channels[signal] = data.attrs["channel_ids"] + return channels - -def load( - path: Union[str, int, Any[os.Pathlike]], - signal: Union[str, list[str]], - ) -> np.ndarray: +def load(path: Union[str, Path], + signal_name: Optional[Union[str, List[str]]] = None, + ) -> dict: + loaded_data = {} with h5py.File(path, 'r') as f: - data = f[signal] - - return data \ No newline at end of file + if signal_name is None: + signal_name = list(f.keys()) + if isinstance(signal_name, str): + signal_name = [signal_name] + for signal in signal_name: + data = f[signal] + loaded_data[signal] = data + + return loaded_data \ No newline at end of file diff --git a/src/fusion_ai_hub/base/save.py b/src/fusion_ai_hub/base/save.py index 06f61de..d9e38b3 100644 --- a/src/fusion_ai_hub/base/save.py +++ b/src/fusion_ai_hub/base/save.py @@ -6,6 +6,8 @@ from typing import Any, Union +# also do other file formats + def dict_to_hdf5( dictionary: dict, h5file: h5py.File, @@ -40,25 +42,19 @@ def dict_to_hdf5( def save( dictionary: dict, path: Union[str, int, Any[os.Pathlike]], + file_format: str = 'h5', compression: str = None, ) -> None: - """_summary_ - - Parameters - ---------- - dictionary : dict - _description_ - path : Union[str, int, Any[os.Pathlike]] - _description_ - compression : str, optional - _description_, by default None - """ - - if not path.endswith('.h5'): - path += '.h5' - path.mkdir(parents=True, exist_ok=True) - with h5py.File(path, 'w') as f: - dict_to_hdf5(dictionary, f, compression) + if file_format == 'h5': + if not path.endswith('.h5'): + path += '.h5' + + path.mkdir(parents=True, exist_ok=True) + with h5py.File(path, 'w') as f: + dict_to_hdf5(dictionary, f, compression) + + else: + raise ValueError(f"Unsupported file format: {file_format}") print(f'Saved to {path}') \ No newline at end of file From 552254b3f8e3da189ebd6e5b59b83881af2b8307 Mon Sep 17 00:00:00 2001 From: Nathaniel Chen Date: Thu, 13 Jun 2024 20:48:08 -0400 Subject: [PATCH 019/103] Co-authored-by: Josh Josephy-Zack Co-authored-by: Alvin Garcia --- hackathon/Hackathon.ipynb | 363 +++++++++++++++++++++++++++++++++++ hackathon/co2_to_mse.ipynb | 384 +++++++++++++++++++++++++++++++++++++ requirements.txt | 10 + 3 files changed, 757 insertions(+) create mode 100644 hackathon/Hackathon.ipynb create mode 100644 hackathon/co2_to_mse.ipynb create mode 100644 requirements.txt diff --git a/hackathon/Hackathon.ipynb b/hackathon/Hackathon.ipynb new file mode 100644 index 0000000..3ce6293 --- /dev/null +++ b/hackathon/Hackathon.ipynb @@ -0,0 +1,363 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import h5py\n", + "from joblib import dump, load\n", + "import numpy as np\n", + "import pandas as pdx\n", + "from sklearn.neighbors import NearestNeighbors\n", + "from sklearn import preprocessing\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "import torch\n", + "import torch.nn as nn\n", + "import torch.nn.functional as F\n", + "from torch.utils.data import DataLoader, Dataset" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "affa2a7c", + "metadata": {}, + "outputs": [], + "source": [ + "sns.set_theme()\n", + "%matplotlib inline\n", + "\n", + "visualize=True" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "22223acf", + "metadata": {}, + "outputs": [], + "source": [ + "filename = \"/scratch/gpfs/EKOLEMEN/hackathon/170000.h5\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b59aaa81", + "metadata": {}, + "outputs": [], + "source": [ + "with h5py.File(filename, \"r\") as f:\n", + " co2_data = f[\"co2_phase\"]\n", + " print(co2_data.keys())\n", + " print(co2_data.attrs.keys())\n", + " co2_channels = co2_data.attrs[\"channel_ids\"]\n", + " co2_samples = co2_data[\"data\"][()]\n", + " co2_time_ms = co2_data[\"time\"][()]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f66df09d", + "metadata": {}, + "outputs": [], + "source": [ + "with h5py.File(filename, \"r\") as f:\n", + " mse_data = f[\"mse\"]\n", + " print(mse_data.attrs.keys())\n", + " print(mse_data.attrs[\"channel_ids\"])\n", + " mse_channels = mse_data.attrs[\"channel_ids\"]\n", + " mse_samples = mse_data[\"data\"][()]\n", + " mse_time_ms = mse_data[\"time\"][()]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f9b6bd80", + "metadata": {}, + "outputs": [], + "source": [ + "if visualize:\n", + " fig, axs = plt.subplots()\n", + "\n", + " for k, label in enumerate([\"01\", \"02\", \"03\", \"04\"]):\n", + " sns.lineplot(x=mse_time_ms[:, k], y=mse_samples[:, k], label=label)\n", + " axs.set_xlabel(\"Time (ms)\")\n", + " axs.set_ylabel(\"MSE\")\n", + " axs.set_xlim((1800, 1850))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "afa472f4", + "metadata": {}, + "outputs": [], + "source": [ + "if visualize:\n", + " fig, axs = plt.subplots()\n", + "\n", + " for k, label in enumerate([\"01\", \"02\", \"03\", \"04\"]):\n", + " sns.lineplot(x=mse_time_ms[:, k], y=mse_samples[:, k], label=label)\n", + " axs.set_xlabel(\"Time (ms)\")\n", + " axs.set_ylabel(\"MSE\")\n", + " axs.set_xlim((1800, 1850))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2871019c", + "metadata": {}, + "outputs": [], + "source": [ + "if visualize:\n", + " fig, axs = plt.subplots()\n", + "\n", + " axs.vlines(x=mse_time_ms[:, 0], ymin=-1600, ymax=800, linewidths=(0.1,))\n", + " for k, label in enumerate([\"r0\", \"v1\", \"v2\", \"v3\"]):\n", + " sns.lineplot(x=co2_time_ms[:, k], y=co2_samples[:, k], label=label)\n", + " axs.set_xlabel(\"Time (ms)\")\n", + " axs.set_ylabel(\"CO2\")\n", + " axs.set_xlim((1800, 1850))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "19b26fc5", + "metadata": {}, + "outputs": [], + "source": [ + "nbrs = NearestNeighbors(n_neighbors=1).fit(co2_time_ms[:, 0].reshape(-1, 1))\n", + "distances, indices = nbrs.kneighbors(mse_time_ms[:, 0].reshape(-1, 1))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1659f7f3", + "metadata": {}, + "outputs": [], + "source": [ + "fig, axs = plt.subplots()\n", + "\n", + "sns.histplot(data=distances, bins=\"sqrt\", ax=axs)\n", + "axs.set_xlabel(\"CO2 MSE Time difference (ms)\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0691dac0", + "metadata": {}, + "outputs": [], + "source": [ + "fig, axs = plt.subplots()\n", + "\n", + "sns.histplot(data=distances, bins=\"sqrt\", ax=axs)\n", + "axs.set_xlabel(\"ECE MSE Time difference (ms)\")" + ] + }, + { + "cell_type": "markdown", + "id": "fad233c8", + "metadata": {}, + "source": [ + "# How to deal with missing channels?\n", + "\n", + "## Ideas\n", + "\n", + "- Only use channels that are always available across different discharges?\n", + "- Channel interpolation?\n", + "- ..." + ] + }, + { + "cell_type": "markdown", + "id": "8a27106d", + "metadata": {}, + "source": [ + "# Preprocessing\n", + "\n", + "## Ideas\n", + "\n", + "- All data have different physical units, and we need to get rid of them\n", + "- We should normalize the inputs before the ML task:\n", + " - Standardization?\n", + " - Min-Max normalization?\n", + " - Robust methods like median- and percentile-based normalization?\n", + " - Advanced methods for making skew distribution more similar to normal distributions?\n", + "- Inside models, we can use batch normalization" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ae43b538", + "metadata": {}, + "outputs": [], + "source": [ + "fig, axs = plt.subplots()\n", + "\n", + "sns.histplot(data=co2_samples[:, 0], bins=\"sqrt\", ax=axs)\n", + "sns.histplot(data=co2_samples[:, 1], bins=\"sqrt\", ax=axs)\n", + "sns.histplot(data=co2_samples[:, 2], bins=\"sqrt\", ax=axs)\n", + "sns.histplot(data=co2_samples[:, 3], bins=\"sqrt\", ax=axs)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "955fb151", + "metadata": {}, + "outputs": [], + "source": [ + "fig, axs = plt.subplots()\n", + "\n", + "sns.histplot(data=X_trf[:, 0], bins=\"sqrt\", ax=axs)\n", + "sns.histplot(data=X_trf[:, 1], bins=\"sqrt\", ax=axs)\n", + "sns.histplot(data=X_trf[:, 2], bins=\"sqrt\", ax=axs)\n", + "sns.histplot(data=X_trf[:, 3], bins=\"sqrt\", ax=axs)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1e05feaf", + "metadata": {}, + "outputs": [], + "source": [ + "import torch\n", + "\n", + "import torch.nn as nn\n", + "\n", + "class MLP(nn.Module):\n", + " def __init__(self, input_size, output_size, hidden_sizes):\n", + " super(MLP, self).__init__()\n", + " \n", + " self.input_size = input_size\n", + " self.output_size = output_size\n", + " self.hidden_sizes = hidden_sizes\n", + " \n", + " self.layers = nn.ModuleList()\n", + " \n", + " # Add input layer\n", + " self.layers.append(nn.Linear(input_size, hidden_sizes[0]))\n", + " \n", + " # Add hidden layers\n", + " for i in range(len(hidden_sizes) - 1):\n", + " self.layers.append(nn.Linear(hidden_sizes[i], hidden_sizes[i+1]))\n", + " \n", + " # Add output layer\n", + " self.layers.append(nn.Linear(hidden_sizes[-1], output_size))\n", + " \n", + " def forward(self, x):\n", + " for layer in self.layers:\n", + " x = torch.relu(layer(x))\n", + " return x\n", + "\n", + "# Example usage\n", + "input_size = 5 # co2\n", + "output_size = 1 # mse\n", + "hidden_sizes = [20, 30, 40]\n", + "\n", + "model = MLP(input_size, output_size, hidden_sizes)\n", + "print(model)" + ] + }, + { + "cell_type": "markdown", + "id": "7dac0ed1", + "metadata": {}, + "source": [ + "Will be using valid padding (so start from before to after window)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "14188e30", + "metadata": {}, + "outputs": [], + "source": [ + "import torch\n", + "from torch.utils.data import Dataset\n", + "\n", + "class VariableWindowDataset(Dataset):\n", + " def __init__(self, data, labels, window_size):\n", + " self.data = data\n", + " self.labels = labels\n", + " self.window_size = window_size\n", + " \n", + " def __len__(self):\n", + " return len(self.data)\n", + " \n", + " def __getitem__(self, index):\n", + " x = self.data[index]\n", + " y = self.labels[index]\n", + " \n", + " start_index = index\n", + " end_index = start_index + self.window_size\n", + " x = x[start_index:end_index]\n", + " \n", + " return x, y\n", + "\n", + "# Example usage\n", + "data = [...] # Your data\n", + "labels = [...] # Your labels\n", + "window_size = 10\n", + "\n", + "dataset = VariableWindowDataset(data, labels, window_size)\n", + "\n", + "# Create a dataloader\n", + "batch_size = 32\n", + "dataloader = DataLoader(dataset, batch_size=batch_size, shuffle=True)" + ] + }, + { + "cell_type": "markdown", + "id": "5304b167", + "metadata": {}, + "source": [ + "# Evaluation" + ] + }, + { + "cell_type": "markdown", + "id": "7a3263f3", + "metadata": {}, + "source": [ + "# Potential applications?!" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/hackathon/co2_to_mse.ipynb b/hackathon/co2_to_mse.ipynb new file mode 100644 index 0000000..17d7228 --- /dev/null +++ b/hackathon/co2_to_mse.ipynb @@ -0,0 +1,384 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Hackathon: Get CO2 from MSE" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Setup Notes\n", + "I set up .venv in FUSIONAIHUB to work with all the packages above. You should be able to see it if you're in the FUSIONAIHUB directory and click on kernel.\n", + "\n", + "Don't use the HDF5 file. Use the preprocessed data." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import h5py\n", + "from joblib import dump, load\n", + "import numpy as np\n", + "import pandas as pd\n", + "from sklearn.neighbors import NearestNeighbors\n", + "from sklearn import preprocessing\n", + "import random\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "import os\n", + "from pathlib import Path\n", + "\n", + "import torch\n", + "import torch.nn as nn\n", + "import torch.nn.functional as F\n", + "from torch.utils.data import DataLoader, Dataset, random_split" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "class FusionDataset(Dataset):\n", + " \n", + " def __init__(self, file_list, window_size=1):\n", + " self.file_list = file_list\n", + " self.window_size = window_size\n", + " self.inputs = None\n", + " self.targets = None\n", + " self.setup()\n", + " \n", + " def setup(self):\n", + " inputs = [None] * len(self.file_list)\n", + " targets = [None] * len(self.file_list)\n", + " missing_columns = self._identify_missing_columns()\n", + " for k, f in enumerate(self.file_list):\n", + " ece, mse = self._load_joblib_file(f, missing_columns)\n", + " neighbors = NearestNeighbors(n_neighbors=1).fit(\n", + " np.array(ece.index).reshape(-1, 1))\n", + " distances, indices = neighbors.kneighbors(\n", + " np.asarray(mse.index).reshape(-1, 1))\n", + " indices = indices.flatten()\n", + " ece = [ece.iloc[idx-self.window_size+1:idx+1] for idx in indices]\n", + " inputs[k] = np.asarray(ece)\n", + " targets[k] = np.asarray(mse)\n", + " self.inputs = np.vstack(inputs)\n", + " self.targets = np.vstack(targets)\n", + " print(self.inputs.shape)\n", + " print(self.targets.shape)\n", + " \n", + " def _identify_missing_columns(self):\n", + " targets = []\n", + " for file in self.file_list:\n", + " targets.append(load(file)[\"mse\"])\n", + " df = pd.concat(targets)\n", + " missing_columns = df.columns[df.isna().any()]\n", + " return missing_columns\n", + " \n", + " def _load_joblib_file(self, file_name, missing_columns):\n", + " print(file_name)\n", + " data = load(file_name)\n", + " ece_dataset = data[\"ece_cali\"]\n", + " mse_dataset = data[\"mse\"].drop(missing_columns, axis=1, errors='ignore')\n", + " return ece_dataset, mse_dataset\n", + " \n", + " def __getitem__(self, index):\n", + " return (torch.tensor(self.inputs[index], dtype=torch.float32),\n", + " torch.tensor(self.targets[index], dtype=torch.float32).unsqueeze(0))\n", + " \n", + " def __len__(self):\n", + " return len(self.inputs)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dir = Path(\"/scratch/gpfs/EKOLEMEN/hackathon/preprocessed/\")\n", + "file_list = list(dir.glob(\"*.joblib\"))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dataset = FusionDataset(file_list, window_size=1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "split_ratio = 0.8\n", + "train_dataset, test_dataset = random_split(dataset, [split_ratio, 1 - split_ratio])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print('train_data length:', len(train_dataset))\n", + "print('test_data length:', len(test_dataset))" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "batch_size = 32\n", + "train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True)\n", + "test_loader = DataLoader(test_dataset, batch_size=batch_size, shuffle=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Preprocessing\n", + "\n", + "Do any preprocessing here if needed" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "data1 is smaller set input\n", + "data2 is bigger set output" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Dataset Module(s)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Goal: Trying to correlate 1 point for lower resolution with a window of data for higher resolution. So we want to be able to correlate the same time and find a fast consistent way to match the times" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Neural Network Modules" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [], + "source": [ + "class Config:\n", + " def __init__(self, input_dim, embed_dim, output_dim, hidden_dim, device = \"cpu\"):\n", + " self.IN_DIM = input_dim\n", + " self.EMBED_DIM = embed_dim\n", + " self.OUT_DIM = output_dim\n", + " self.HIDDEN = hidden_dim\n", + " self.DEVICE = device\n", + "\n", + "def build_model(in_dim, out_dim, layers, hidden, activation, normalize=lambda x: x):\n", + " model = [normalize(nn.Linear(in_dim, hidden))]\n", + " model += [activation()]\n", + " for i in range(layers - 1):\n", + " model += [normalize(nn.Linear(hidden, hidden))]\n", + " model += [activation()]\n", + " model += [normalize(nn.Linear(hidden, out_dim))]\n", + " return nn.Sequential(*model)\n", + "\n", + "class Decoder(nn.Module):\n", + "\n", + " def __init__(self, embed, hidden, out_dim, layers=2):\n", + " super().__init__()\n", + " self.fc1 = build_model(embed, hidden, layers, hidden, nn.ReLU)\n", + " self.fc2 = nn.Linear(hidden, out_dim)\n", + "\n", + " def forward(self, z):\n", + " x = F.relu(self.fc1(z))\n", + " return self.fc2(x), x\n", + "\n", + "class Encoder(nn.Module):\n", + "\n", + " def __init__(self, in_dim, hidden, embed, layers=2):\n", + " super().__init__()\n", + "\n", + " self.fc1 = nn.Linear(in_dim, hidden)\n", + " self.encoder = build_model(hidden, embed, layers, hidden, nn.ReLU)\n", + "\n", + " def forward(self, x):\n", + " embed = F.relu(self.fc1(x))\n", + " return self.encoder(F.relu(embed))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [], + "source": [ + "class HackNet(nn.Module):\n", + " def __init__(self, config):\n", + " super().__init__()\n", + "\n", + " self.encoder = Encoder(in_dim=config.IN_DIM, hidden=config.HIDDEN, embed=config.EMBED_DIM)\n", + " self.decoder = Decoder(embed=config.EMBED_DIM, hidden=config.HIDDEN, out_dim=config.OUT_DIM)\n", + " self._memory_unit = nn.GRU(config.EMBED_DIM, config.HIDDEN,\n", + " num_layers= 2,\n", + " batch_first=True)\n", + "\n", + " self.encoder = self.encoder.to(config.DEVICE)\n", + " self.decoder = self.decoder.to(config.DEVICE)\n", + " self._memory_unit = self._memory_unit.to(config.DEVICE)\n", + "\n", + " def forward(self, x): # B X T X IN_DIM\n", + "\n", + " embed = self.encoder(x) #B X T X EMBED_DIM\n", + " mem_out = self._memory_unit(embed)[0]\n", + "\n", + " pred, _ = self.decoder(torch.cat([embed, mem_out])) #B X T X OUT_DIM\n", + "\n", + " return pred" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_174944/2646173492.py:14: UserWarning: Using a target size (torch.Size([32, 1, 43])) that is different to the input size (torch.Size([64, 1, 43])). This will likely lead to incorrect results due to broadcasting. Please ensure they have the same size.\n", + " loss = F.smooth_l1_loss(pred, y) #decide loss function, start with L1 distance\n" + ] + }, + { + "ename": "RuntimeError", + "evalue": "The size of tensor a (64) must match the size of tensor b (32) at non-singleton dimension 0", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mRuntimeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[45], line 52\u001b[0m\n\u001b[1;32m 49\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m epoch \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mrange\u001b[39m(num_epochs):\n\u001b[1;32m 51\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m data_x, data_y \u001b[38;5;129;01min\u001b[39;00m train_loader:\n\u001b[0;32m---> 52\u001b[0m train_loss \u001b[38;5;241m=\u001b[39m \u001b[43mtrain_epoch\u001b[49m\u001b[43m(\u001b[49m\u001b[43mnet\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mopt\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata_x\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata_y\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 54\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m data_x, data_y \u001b[38;5;129;01min\u001b[39;00m test_loader:\n\u001b[1;32m 55\u001b[0m val_loss \u001b[38;5;241m=\u001b[39m val_epoch(net, opt, data_x, data_y)\n", + "Cell \u001b[0;32mIn[45], line 14\u001b[0m, in \u001b[0;36mtrain_epoch\u001b[0;34m(network, optim, data_x, data_y)\u001b[0m\n\u001b[1;32m 12\u001b[0m pred \u001b[38;5;241m=\u001b[39m network(x)\n\u001b[1;32m 13\u001b[0m \u001b[38;5;66;03m#compute loss func\u001b[39;00m\n\u001b[0;32m---> 14\u001b[0m loss \u001b[38;5;241m=\u001b[39m \u001b[43mF\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msmooth_l1_loss\u001b[49m\u001b[43m(\u001b[49m\u001b[43mpred\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43my\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;66;03m#decide loss function, start with L1 distance\u001b[39;00m\n\u001b[1;32m 15\u001b[0m \u001b[38;5;66;03m#peform optimization\u001b[39;00m\n\u001b[1;32m 16\u001b[0m optim\u001b[38;5;241m.\u001b[39mzero_grad()\n", + "File \u001b[0;32m/scratch/gpfs/nc1514/FusionAIHub/.venv/lib64/python3.11/site-packages/torch/nn/functional.py:3265\u001b[0m, in \u001b[0;36msmooth_l1_loss\u001b[0;34m(input, target, size_average, reduce, reduction, beta)\u001b[0m\n\u001b[1;32m 3262\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m size_average \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mor\u001b[39;00m reduce \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 3263\u001b[0m reduction \u001b[38;5;241m=\u001b[39m _Reduction\u001b[38;5;241m.\u001b[39mlegacy_get_string(size_average, reduce)\n\u001b[0;32m-> 3265\u001b[0m expanded_input, expanded_target \u001b[38;5;241m=\u001b[39m \u001b[43mtorch\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbroadcast_tensors\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtarget\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 3267\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m beta \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m0.0\u001b[39m:\n\u001b[1;32m 3268\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m torch\u001b[38;5;241m.\u001b[39m_C\u001b[38;5;241m.\u001b[39m_nn\u001b[38;5;241m.\u001b[39ml1_loss(expanded_input, expanded_target, _Reduction\u001b[38;5;241m.\u001b[39mget_enum(reduction))\n", + "File \u001b[0;32m/scratch/gpfs/nc1514/FusionAIHub/.venv/lib64/python3.11/site-packages/torch/functional.py:76\u001b[0m, in \u001b[0;36mbroadcast_tensors\u001b[0;34m(*tensors)\u001b[0m\n\u001b[1;32m 74\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m has_torch_function(tensors):\n\u001b[1;32m 75\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m handle_torch_function(broadcast_tensors, tensors, \u001b[38;5;241m*\u001b[39mtensors)\n\u001b[0;32m---> 76\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43m_VF\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbroadcast_tensors\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtensors\u001b[49m\u001b[43m)\u001b[49m\n", + "\u001b[0;31mRuntimeError\u001b[0m: The size of tensor a (64) must match the size of tensor b (32) at non-singleton dimension 0" + ] + } + ], + "source": [ + "def train_epoch(network, optim, data_x, data_y):\n", + " # data_x: (bs, window_size, x_dim); data_y: (bs, y_dim)\n", + "\n", + " dataset_size = data_x.shape[0]\n", + " network.train()\n", + " idxes = np.arange(0, dataset_size)\n", + " random.shuffle(idxes)\n", + "\n", + " x = data_x[idxes]\n", + " y = data_y[idxes]\n", + "\n", + " pred = network(x)\n", + " #compute loss func\n", + " loss = F.smooth_l1_loss(pred, y) #decide loss function, start with L1 distance\n", + " #peform optimization\n", + " optim.zero_grad()\n", + " loss.backward()\n", + " opt.step()\n", + "\n", + " return loss.item() #for logging\n", + "\n", + "\n", + "def val_epoch(network, optim, data_x, data_y):\n", + " network.eval()\n", + " dataset_size = data_x.shape[0]\n", + " val_idxes = np.arange(0, dataset_size)\n", + " random.shuffle(val_idxes)\n", + "\n", + " x = data_x[val_idxes]\n", + " y = data_y[val_idxes]\n", + "\n", + " with torch.no_grad():\n", + "\n", + " #compute model output\n", + " pred = network(x)\n", + " #compute loss func\n", + " loss = F.smooth_l1_loss(pred, y)\n", + "\n", + " return loss.item() #for logging\n", + "\n", + "\n", + "#training epoch code\n", + "config = Config(48, 64, 43, 64)\n", + "net = HackNet(config)\n", + "opt = torch.optim.Adam(net.parameters(), lr=3e-4)\n", + "\n", + "num_epochs = 100\n", + "\n", + "for epoch in range(num_epochs):\n", + "\n", + " for data_x, data_y in train_loader:\n", + " train_loss = train_epoch(net, opt, data_x, data_y)\n", + " \n", + " for data_x, data_y in test_loader:\n", + " val_loss = val_epoch(net, opt, data_x, data_y)\n", + " break" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.7" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..a2c1898 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,10 @@ +torch==1.12.1+cu116 +torchvision==0.13.1+cu116 +torchaudio==0.12.1+cu116 +numpy +pandas +scikit-learn +matplotlib +seaborn +jupyter +h5py \ No newline at end of file From 4c3d872b079cba4c18efaf7cd30540c621994576 Mon Sep 17 00:00:00 2001 From: Nathaniel Chen Date: Thu, 13 Jun 2024 21:25:17 -0400 Subject: [PATCH 020/103] stuff --- hackathon/co2_to_mse.ipynb | 147 ++++++++++++++++++++++++------------- 1 file changed, 98 insertions(+), 49 deletions(-) diff --git a/hackathon/co2_to_mse.ipynb b/hackathon/co2_to_mse.ipynb index 17d7228..d8e149c 100644 --- a/hackathon/co2_to_mse.ipynb +++ b/hackathon/co2_to_mse.ipynb @@ -19,11 +19,11 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ - "import h5py\n", + "# import h5py\n", "from joblib import dump, load\n", "import numpy as np\n", "import pandas as pd\n", @@ -45,7 +45,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -102,7 +102,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -112,16 +112,47 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/scratch/gpfs/EKOLEMEN/hackathon/preprocessed/170037.joblib\n", + "/scratch/gpfs/EKOLEMEN/hackathon/preprocessed/170014.joblib\n", + "/scratch/gpfs/EKOLEMEN/hackathon/preprocessed/170006.joblib\n", + "/scratch/gpfs/EKOLEMEN/hackathon/preprocessed/170020.joblib\n", + "/scratch/gpfs/EKOLEMEN/hackathon/preprocessed/170013.joblib\n", + "/scratch/gpfs/EKOLEMEN/hackathon/preprocessed/170012.joblib\n", + "/scratch/gpfs/EKOLEMEN/hackathon/preprocessed/170008.joblib\n", + "/scratch/gpfs/EKOLEMEN/hackathon/preprocessed/170015.joblib\n", + "/scratch/gpfs/EKOLEMEN/hackathon/preprocessed/170007.joblib\n", + "/scratch/gpfs/EKOLEMEN/hackathon/preprocessed/170003.joblib\n", + "/scratch/gpfs/EKOLEMEN/hackathon/preprocessed/170000.joblib\n", + "/scratch/gpfs/EKOLEMEN/hackathon/preprocessed/170002.joblib\n", + "/scratch/gpfs/EKOLEMEN/hackathon/preprocessed/170009.joblib\n", + "/scratch/gpfs/EKOLEMEN/hackathon/preprocessed/170005.joblib\n", + "/scratch/gpfs/EKOLEMEN/hackathon/preprocessed/170021.joblib\n", + "/scratch/gpfs/EKOLEMEN/hackathon/preprocessed/170004.joblib\n", + "/scratch/gpfs/EKOLEMEN/hackathon/preprocessed/170019.joblib\n", + "/scratch/gpfs/EKOLEMEN/hackathon/preprocessed/170011.joblib\n", + "/scratch/gpfs/EKOLEMEN/hackathon/preprocessed/170018.joblib\n", + "/scratch/gpfs/EKOLEMEN/hackathon/preprocessed/170017.joblib\n", + "/scratch/gpfs/EKOLEMEN/hackathon/preprocessed/170016.joblib\n", + "/scratch/gpfs/EKOLEMEN/hackathon/preprocessed/170038.joblib\n", + "(82552, 1, 48)\n", + "(82552, 43)\n" + ] + } + ], "source": [ "dataset = FusionDataset(file_list, window_size=1)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -131,9 +162,18 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "train_data length: 66042\n", + "test_data length: 16510\n" + ] + } + ], "source": [ "print('train_data length:', len(train_dataset))\n", "print('test_data length:', len(test_dataset))" @@ -141,7 +181,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ @@ -190,12 +230,13 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "class Config:\n", - " def __init__(self, input_dim, embed_dim, output_dim, hidden_dim, device = \"cpu\"):\n", + " def __init__(self, input_dim, embed_dim, hidden_dim, output_dim, device):\n", + " print('device:',device)\n", " self.IN_DIM = input_dim\n", " self.EMBED_DIM = embed_dim\n", " self.OUT_DIM = output_dim\n", @@ -237,7 +278,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 21, "metadata": {}, "outputs": [], "source": [ @@ -247,9 +288,7 @@ "\n", " self.encoder = Encoder(in_dim=config.IN_DIM, hidden=config.HIDDEN, embed=config.EMBED_DIM)\n", " self.decoder = Decoder(embed=config.EMBED_DIM, hidden=config.HIDDEN, out_dim=config.OUT_DIM)\n", - " self._memory_unit = nn.GRU(config.EMBED_DIM, config.HIDDEN,\n", - " num_layers= 2,\n", - " batch_first=True)\n", + " self._memory_unit = nn.GRU(config.EMBED_DIM, config.HIDDEN, num_layers= 2, batch_first=True)\n", "\n", " self.encoder = self.encoder.to(config.DEVICE)\n", " self.decoder = self.decoder.to(config.DEVICE)\n", @@ -260,39 +299,16 @@ " embed = self.encoder(x) #B X T X EMBED_DIM\n", " mem_out = self._memory_unit(embed)[0]\n", "\n", - " pred, _ = self.decoder(torch.cat([embed, mem_out])) #B X T X OUT_DIM\n", + " pred, _ = self.decoder(mem_out) #B X T X OUT_DIM\n", "\n", " return pred" ] }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 22, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/tmp/ipykernel_174944/2646173492.py:14: UserWarning: Using a target size (torch.Size([32, 1, 43])) that is different to the input size (torch.Size([64, 1, 43])). This will likely lead to incorrect results due to broadcasting. Please ensure they have the same size.\n", - " loss = F.smooth_l1_loss(pred, y) #decide loss function, start with L1 distance\n" - ] - }, - { - "ename": "RuntimeError", - "evalue": "The size of tensor a (64) must match the size of tensor b (32) at non-singleton dimension 0", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mRuntimeError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[45], line 52\u001b[0m\n\u001b[1;32m 49\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m epoch \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mrange\u001b[39m(num_epochs):\n\u001b[1;32m 51\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m data_x, data_y \u001b[38;5;129;01min\u001b[39;00m train_loader:\n\u001b[0;32m---> 52\u001b[0m train_loss \u001b[38;5;241m=\u001b[39m \u001b[43mtrain_epoch\u001b[49m\u001b[43m(\u001b[49m\u001b[43mnet\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mopt\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata_x\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata_y\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 54\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m data_x, data_y \u001b[38;5;129;01min\u001b[39;00m test_loader:\n\u001b[1;32m 55\u001b[0m val_loss \u001b[38;5;241m=\u001b[39m val_epoch(net, opt, data_x, data_y)\n", - "Cell \u001b[0;32mIn[45], line 14\u001b[0m, in \u001b[0;36mtrain_epoch\u001b[0;34m(network, optim, data_x, data_y)\u001b[0m\n\u001b[1;32m 12\u001b[0m pred \u001b[38;5;241m=\u001b[39m network(x)\n\u001b[1;32m 13\u001b[0m \u001b[38;5;66;03m#compute loss func\u001b[39;00m\n\u001b[0;32m---> 14\u001b[0m loss \u001b[38;5;241m=\u001b[39m \u001b[43mF\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msmooth_l1_loss\u001b[49m\u001b[43m(\u001b[49m\u001b[43mpred\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43my\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;66;03m#decide loss function, start with L1 distance\u001b[39;00m\n\u001b[1;32m 15\u001b[0m \u001b[38;5;66;03m#peform optimization\u001b[39;00m\n\u001b[1;32m 16\u001b[0m optim\u001b[38;5;241m.\u001b[39mzero_grad()\n", - "File \u001b[0;32m/scratch/gpfs/nc1514/FusionAIHub/.venv/lib64/python3.11/site-packages/torch/nn/functional.py:3265\u001b[0m, in \u001b[0;36msmooth_l1_loss\u001b[0;34m(input, target, size_average, reduce, reduction, beta)\u001b[0m\n\u001b[1;32m 3262\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m size_average \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mor\u001b[39;00m reduce \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 3263\u001b[0m reduction \u001b[38;5;241m=\u001b[39m _Reduction\u001b[38;5;241m.\u001b[39mlegacy_get_string(size_average, reduce)\n\u001b[0;32m-> 3265\u001b[0m expanded_input, expanded_target \u001b[38;5;241m=\u001b[39m \u001b[43mtorch\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbroadcast_tensors\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtarget\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 3267\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m beta \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m0.0\u001b[39m:\n\u001b[1;32m 3268\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m torch\u001b[38;5;241m.\u001b[39m_C\u001b[38;5;241m.\u001b[39m_nn\u001b[38;5;241m.\u001b[39ml1_loss(expanded_input, expanded_target, _Reduction\u001b[38;5;241m.\u001b[39mget_enum(reduction))\n", - "File \u001b[0;32m/scratch/gpfs/nc1514/FusionAIHub/.venv/lib64/python3.11/site-packages/torch/functional.py:76\u001b[0m, in \u001b[0;36mbroadcast_tensors\u001b[0;34m(*tensors)\u001b[0m\n\u001b[1;32m 74\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m has_torch_function(tensors):\n\u001b[1;32m 75\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m handle_torch_function(broadcast_tensors, tensors, \u001b[38;5;241m*\u001b[39mtensors)\n\u001b[0;32m---> 76\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43m_VF\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbroadcast_tensors\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtensors\u001b[49m\u001b[43m)\u001b[49m\n", - "\u001b[0;31mRuntimeError\u001b[0m: The size of tensor a (64) must match the size of tensor b (32) at non-singleton dimension 0" - ] - } - ], + "outputs": [], "source": [ "def train_epoch(network, optim, data_x, data_y):\n", " # data_x: (bs, window_size, x_dim); data_y: (bs, y_dim)\n", @@ -332,11 +348,43 @@ " #compute loss func\n", " loss = F.smooth_l1_loss(pred, y)\n", "\n", - " return loss.item() #for logging\n", - "\n", - "\n", + " return loss.item() #for logging#training epoch code" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "device: cpu\n", + "Epoch 0 Train Loss: 0.2336178719997406 Val Loss: 0.25213396549224854\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[23], line 13\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m epoch \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mrange\u001b[39m(num_epochs):\n\u001b[1;32m 12\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m data_x, data_y \u001b[38;5;129;01min\u001b[39;00m train_loader:\n\u001b[0;32m---> 13\u001b[0m train_loss \u001b[38;5;241m=\u001b[39m \u001b[43mtrain_epoch\u001b[49m\u001b[43m(\u001b[49m\u001b[43mnet\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mopt\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata_x\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata_y\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 15\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m data_x, data_y \u001b[38;5;129;01min\u001b[39;00m test_loader:\n\u001b[1;32m 16\u001b[0m val_loss \u001b[38;5;241m=\u001b[39m val_epoch(net, opt, data_x, data_y)\n", + "Cell \u001b[0;32mIn[22], line 17\u001b[0m, in \u001b[0;36mtrain_epoch\u001b[0;34m(network, optim, data_x, data_y)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[38;5;66;03m#peform optimization\u001b[39;00m\n\u001b[1;32m 16\u001b[0m optim\u001b[38;5;241m.\u001b[39mzero_grad()\n\u001b[0;32m---> 17\u001b[0m \u001b[43mloss\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbackward\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 18\u001b[0m opt\u001b[38;5;241m.\u001b[39mstep()\n\u001b[1;32m 20\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m loss\u001b[38;5;241m.\u001b[39mitem()\n", + "File \u001b[0;32m/scratch/gpfs/nc1514/FusionAIHub/.venv/lib64/python3.11/site-packages/torch/_tensor.py:525\u001b[0m, in \u001b[0;36mTensor.backward\u001b[0;34m(self, gradient, retain_graph, create_graph, inputs)\u001b[0m\n\u001b[1;32m 515\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m has_torch_function_unary(\u001b[38;5;28mself\u001b[39m):\n\u001b[1;32m 516\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m handle_torch_function(\n\u001b[1;32m 517\u001b[0m Tensor\u001b[38;5;241m.\u001b[39mbackward,\n\u001b[1;32m 518\u001b[0m (\u001b[38;5;28mself\u001b[39m,),\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 523\u001b[0m inputs\u001b[38;5;241m=\u001b[39minputs,\n\u001b[1;32m 524\u001b[0m )\n\u001b[0;32m--> 525\u001b[0m \u001b[43mtorch\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mautograd\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbackward\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 526\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mgradient\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mretain_graph\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcreate_graph\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43minputs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43minputs\u001b[49m\n\u001b[1;32m 527\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m/scratch/gpfs/nc1514/FusionAIHub/.venv/lib64/python3.11/site-packages/torch/autograd/__init__.py:267\u001b[0m, in \u001b[0;36mbackward\u001b[0;34m(tensors, grad_tensors, retain_graph, create_graph, grad_variables, inputs)\u001b[0m\n\u001b[1;32m 262\u001b[0m retain_graph \u001b[38;5;241m=\u001b[39m create_graph\n\u001b[1;32m 264\u001b[0m \u001b[38;5;66;03m# The reason we repeat the same comment below is that\u001b[39;00m\n\u001b[1;32m 265\u001b[0m \u001b[38;5;66;03m# some Python versions print out the first line of a multi-line function\u001b[39;00m\n\u001b[1;32m 266\u001b[0m \u001b[38;5;66;03m# calls in the traceback and some print out the last line\u001b[39;00m\n\u001b[0;32m--> 267\u001b[0m \u001b[43m_engine_run_backward\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 268\u001b[0m \u001b[43m \u001b[49m\u001b[43mtensors\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 269\u001b[0m \u001b[43m \u001b[49m\u001b[43mgrad_tensors_\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 270\u001b[0m \u001b[43m \u001b[49m\u001b[43mretain_graph\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 271\u001b[0m \u001b[43m \u001b[49m\u001b[43mcreate_graph\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 272\u001b[0m \u001b[43m \u001b[49m\u001b[43minputs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 273\u001b[0m \u001b[43m \u001b[49m\u001b[43mallow_unreachable\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 274\u001b[0m \u001b[43m \u001b[49m\u001b[43maccumulate_grad\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 275\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m/scratch/gpfs/nc1514/FusionAIHub/.venv/lib64/python3.11/site-packages/torch/autograd/graph.py:744\u001b[0m, in \u001b[0;36m_engine_run_backward\u001b[0;34m(t_outputs, *args, **kwargs)\u001b[0m\n\u001b[1;32m 742\u001b[0m unregister_hooks \u001b[38;5;241m=\u001b[39m _register_logging_hooks_on_whole_graph(t_outputs)\n\u001b[1;32m 743\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 744\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mVariable\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_execution_engine\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun_backward\u001b[49m\u001b[43m(\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;66;43;03m# Calls into the C++ engine to run the backward pass\u001b[39;49;00m\n\u001b[1;32m 745\u001b[0m \u001b[43m \u001b[49m\u001b[43mt_outputs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\n\u001b[1;32m 746\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;66;03m# Calls into the C++ engine to run the backward pass\u001b[39;00m\n\u001b[1;32m 747\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[1;32m 748\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m attach_logging_hooks:\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ "#training epoch code\n", - "config = Config(48, 64, 43, 64)\n", + "# input_dim, embed_dim, hidden_dim, output_dim\n", + "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n", + "config = Config(48, 64, 64, 43, device=device)\n", "net = HackNet(config)\n", "opt = torch.optim.Adam(net.parameters(), lr=3e-4)\n", "\n", @@ -349,7 +397,8 @@ " \n", " for data_x, data_y in test_loader:\n", " val_loss = val_epoch(net, opt, data_x, data_y)\n", - " break" + " \n", + " print(f\"Epoch {epoch} Train Loss: {train_loss} Val Loss: {val_loss}\")" ] }, { @@ -362,7 +411,7 @@ ], "metadata": { "kernelspec": { - "display_name": ".venv", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -380,5 +429,5 @@ } }, "nbformat": 4, - "nbformat_minor": 2 + "nbformat_minor": 4 } From f1d8aa02add68e8f85b38d20aa84cae27c6881fe Mon Sep 17 00:00:00 2001 From: Nathaniel Chen Date: Thu, 13 Jun 2024 21:54:12 -0400 Subject: [PATCH 021/103] gpu compatability --- hackathon/co2_to_mse.ipynb | 82 +++++++++++++++++++++++++++++++------- 1 file changed, 68 insertions(+), 14 deletions(-) diff --git a/hackathon/co2_to_mse.ipynb b/hackathon/co2_to_mse.ipynb index d8e149c..b7f90ef 100644 --- a/hackathon/co2_to_mse.ipynb +++ b/hackathon/co2_to_mse.ipynb @@ -181,7 +181,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -230,7 +230,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 15, "metadata": {}, "outputs": [], "source": [ @@ -278,10 +278,39 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "# updated HackNet (can work with GPU)\n", + "class HackNet(nn.Module):\n", + " def __init__(self, config):\n", + " super().__init__()\n", + " self.encoder = Encoder(in_dim=config.IN_DIM, hidden=config.HIDDEN, embed=config.EMBED_DIM)\n", + " self.decoder = Decoder(embed=config.EMBED_DIM, hidden=config.HIDDEN, out_dim=config.OUT_DIM)\n", + " self._memory_unit = nn.GRU(config.EMBED_DIM, config.HIDDEN, num_layers=2, batch_first=True)\n", + "\n", + " def forward(self, x):\n", + " embed = self.encoder(x)\n", + " mem_out = self._memory_unit(embed)[0]\n", + " pred, _ = self.decoder(mem_out)\n", + " return pred\n", + "\n", + " def to(self, device):\n", + " super().to(device)\n", + " self.encoder = self.encoder.to(device)\n", + " self.decoder = self.decoder.to(device)\n", + " self._memory_unit = self._memory_unit.to(device)\n", + " return self" + ] + }, + { + "cell_type": "code", + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ + "# original HackNet\n", "class HackNet(nn.Module):\n", " def __init__(self, config):\n", " super().__init__()\n", @@ -299,14 +328,14 @@ " embed = self.encoder(x) #B X T X EMBED_DIM\n", " mem_out = self._memory_unit(embed)[0]\n", "\n", - " pred, _ = self.decoder(mem_out) #B X T X OUT_DIM\n", + " pred, _ = self.decoder(torch.cat([embed, mem_out])) #B X T X OUT_DIM #B X T X OUT_DIM\n", "\n", " return pred" ] }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 17, "metadata": {}, "outputs": [], "source": [ @@ -327,7 +356,7 @@ " #peform optimization\n", " optim.zero_grad()\n", " loss.backward()\n", - " opt.step()\n", + " optim.step() # (nathan) was opt.step() before\n", "\n", " return loss.item() #for logging\n", "\n", @@ -353,15 +382,40 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "device: cpu\n", - "Epoch 0 Train Loss: 0.2336178719997406 Val Loss: 0.25213396549224854\n" + "device: cuda\n", + "Epoch 0 Train Loss: 0.255791574716568 Val Loss: 0.2838430106639862\n", + "Epoch 1 Train Loss: 0.23289497196674347 Val Loss: 0.2714169919490814\n", + "Epoch 2 Train Loss: 0.2525785565376282 Val Loss: 0.31792107224464417\n", + "Epoch 3 Train Loss: 0.24364440143108368 Val Loss: 0.2633882164955139\n", + "Epoch 4 Train Loss: 0.22275318205356598 Val Loss: 0.2613389492034912\n", + "Epoch 5 Train Loss: 0.2087143063545227 Val Loss: 0.24688249826431274\n", + "Epoch 6 Train Loss: 0.24294227361679077 Val Loss: 0.2491239607334137\n", + "Epoch 7 Train Loss: 0.23406414687633514 Val Loss: 0.20855343341827393\n", + "Epoch 8 Train Loss: 0.26939481496810913 Val Loss: 0.21229057013988495\n", + "Epoch 9 Train Loss: 0.2777935564517975 Val Loss: 0.24400869011878967\n", + "Epoch 10 Train Loss: 0.2552683353424072 Val Loss: 0.23029792308807373\n", + "Epoch 11 Train Loss: 0.3095128834247589 Val Loss: 0.24108797311782837\n", + "Epoch 12 Train Loss: 0.25221654772758484 Val Loss: 0.24853092432022095\n", + "Epoch 13 Train Loss: 0.2726132869720459 Val Loss: 0.2304145246744156\n", + "Epoch 14 Train Loss: 0.24462772905826569 Val Loss: 0.23836518824100494\n", + "Epoch 15 Train Loss: 0.2791774868965149 Val Loss: 0.26178693771362305\n", + "Epoch 16 Train Loss: 0.2374017834663391 Val Loss: 0.2145753651857376\n", + "Epoch 17 Train Loss: 0.26172196865081787 Val Loss: 0.22734738886356354\n", + "Epoch 18 Train Loss: 0.24134452641010284 Val Loss: 0.23207946121692657\n", + "Epoch 19 Train Loss: 0.2221219688653946 Val Loss: 0.26842987537384033\n", + "Epoch 20 Train Loss: 0.25536271929740906 Val Loss: 0.22756478190422058\n", + "Epoch 21 Train Loss: 0.25661006569862366 Val Loss: 0.23108401894569397\n", + "Epoch 22 Train Loss: 0.23620621860027313 Val Loss: 0.27084627747535706\n", + "Epoch 23 Train Loss: 0.21768540143966675 Val Loss: 0.1903669238090515\n", + "Epoch 24 Train Loss: 0.26772356033325195 Val Loss: 0.21332523226737976\n", + "Epoch 25 Train Loss: 0.25931689143180847 Val Loss: 0.24254707992076874\n" ] }, { @@ -371,11 +425,11 @@ "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[23], line 13\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m epoch \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mrange\u001b[39m(num_epochs):\n\u001b[1;32m 12\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m data_x, data_y \u001b[38;5;129;01min\u001b[39;00m train_loader:\n\u001b[0;32m---> 13\u001b[0m train_loss \u001b[38;5;241m=\u001b[39m \u001b[43mtrain_epoch\u001b[49m\u001b[43m(\u001b[49m\u001b[43mnet\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mopt\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata_x\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata_y\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 15\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m data_x, data_y \u001b[38;5;129;01min\u001b[39;00m test_loader:\n\u001b[1;32m 16\u001b[0m val_loss \u001b[38;5;241m=\u001b[39m val_epoch(net, opt, data_x, data_y)\n", - "Cell \u001b[0;32mIn[22], line 17\u001b[0m, in \u001b[0;36mtrain_epoch\u001b[0;34m(network, optim, data_x, data_y)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[38;5;66;03m#peform optimization\u001b[39;00m\n\u001b[1;32m 16\u001b[0m optim\u001b[38;5;241m.\u001b[39mzero_grad()\n\u001b[0;32m---> 17\u001b[0m \u001b[43mloss\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbackward\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 18\u001b[0m opt\u001b[38;5;241m.\u001b[39mstep()\n\u001b[1;32m 20\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m loss\u001b[38;5;241m.\u001b[39mitem()\n", - "File \u001b[0;32m/scratch/gpfs/nc1514/FusionAIHub/.venv/lib64/python3.11/site-packages/torch/_tensor.py:525\u001b[0m, in \u001b[0;36mTensor.backward\u001b[0;34m(self, gradient, retain_graph, create_graph, inputs)\u001b[0m\n\u001b[1;32m 515\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m has_torch_function_unary(\u001b[38;5;28mself\u001b[39m):\n\u001b[1;32m 516\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m handle_torch_function(\n\u001b[1;32m 517\u001b[0m Tensor\u001b[38;5;241m.\u001b[39mbackward,\n\u001b[1;32m 518\u001b[0m (\u001b[38;5;28mself\u001b[39m,),\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 523\u001b[0m inputs\u001b[38;5;241m=\u001b[39minputs,\n\u001b[1;32m 524\u001b[0m )\n\u001b[0;32m--> 525\u001b[0m \u001b[43mtorch\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mautograd\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbackward\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 526\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mgradient\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mretain_graph\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcreate_graph\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43minputs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43minputs\u001b[49m\n\u001b[1;32m 527\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m/scratch/gpfs/nc1514/FusionAIHub/.venv/lib64/python3.11/site-packages/torch/autograd/__init__.py:267\u001b[0m, in \u001b[0;36mbackward\u001b[0;34m(tensors, grad_tensors, retain_graph, create_graph, grad_variables, inputs)\u001b[0m\n\u001b[1;32m 262\u001b[0m retain_graph \u001b[38;5;241m=\u001b[39m create_graph\n\u001b[1;32m 264\u001b[0m \u001b[38;5;66;03m# The reason we repeat the same comment below is that\u001b[39;00m\n\u001b[1;32m 265\u001b[0m \u001b[38;5;66;03m# some Python versions print out the first line of a multi-line function\u001b[39;00m\n\u001b[1;32m 266\u001b[0m \u001b[38;5;66;03m# calls in the traceback and some print out the last line\u001b[39;00m\n\u001b[0;32m--> 267\u001b[0m \u001b[43m_engine_run_backward\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 268\u001b[0m \u001b[43m \u001b[49m\u001b[43mtensors\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 269\u001b[0m \u001b[43m \u001b[49m\u001b[43mgrad_tensors_\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 270\u001b[0m \u001b[43m \u001b[49m\u001b[43mretain_graph\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 271\u001b[0m \u001b[43m \u001b[49m\u001b[43mcreate_graph\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 272\u001b[0m \u001b[43m \u001b[49m\u001b[43minputs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 273\u001b[0m \u001b[43m \u001b[49m\u001b[43mallow_unreachable\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 274\u001b[0m \u001b[43m \u001b[49m\u001b[43maccumulate_grad\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 275\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m/scratch/gpfs/nc1514/FusionAIHub/.venv/lib64/python3.11/site-packages/torch/autograd/graph.py:744\u001b[0m, in \u001b[0;36m_engine_run_backward\u001b[0;34m(t_outputs, *args, **kwargs)\u001b[0m\n\u001b[1;32m 742\u001b[0m unregister_hooks \u001b[38;5;241m=\u001b[39m _register_logging_hooks_on_whole_graph(t_outputs)\n\u001b[1;32m 743\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 744\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mVariable\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_execution_engine\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun_backward\u001b[49m\u001b[43m(\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;66;43;03m# Calls into the C++ engine to run the backward pass\u001b[39;49;00m\n\u001b[1;32m 745\u001b[0m \u001b[43m \u001b[49m\u001b[43mt_outputs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\n\u001b[1;32m 746\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;66;03m# Calls into the C++ engine to run the backward pass\u001b[39;00m\n\u001b[1;32m 747\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[1;32m 748\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m attach_logging_hooks:\n", + "Cell \u001b[0;32mIn[18], line 13\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m epoch \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mrange\u001b[39m(num_epochs):\n\u001b[1;32m 12\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m data_x, data_y \u001b[38;5;129;01min\u001b[39;00m train_loader:\n\u001b[0;32m---> 13\u001b[0m train_loss \u001b[38;5;241m=\u001b[39m \u001b[43mtrain_epoch\u001b[49m\u001b[43m(\u001b[49m\u001b[43mnet\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mopt\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata_x\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata_y\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 15\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m data_x, data_y \u001b[38;5;129;01min\u001b[39;00m test_loader:\n\u001b[1;32m 16\u001b[0m val_loss \u001b[38;5;241m=\u001b[39m val_epoch(net, opt, data_x, data_y)\n", + "Cell \u001b[0;32mIn[17], line 18\u001b[0m, in \u001b[0;36mtrain_epoch\u001b[0;34m(network, optim, data_x, data_y)\u001b[0m\n\u001b[1;32m 16\u001b[0m optim\u001b[38;5;241m.\u001b[39mzero_grad()\n\u001b[1;32m 17\u001b[0m loss\u001b[38;5;241m.\u001b[39mbackward()\n\u001b[0;32m---> 18\u001b[0m \u001b[43moptim\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mstep\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 20\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m loss\u001b[38;5;241m.\u001b[39mitem()\n", + "File \u001b[0;32m/scratch/gpfs/nc1514/FusionAIHub/.venv/lib64/python3.11/site-packages/torch/optim/optimizer.py:391\u001b[0m, in \u001b[0;36mOptimizer.profile_hook_step..wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 386\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 387\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mRuntimeError\u001b[39;00m(\n\u001b[1;32m 388\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mfunc\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m must return None or a tuple of (new_args, new_kwargs), but got \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mresult\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 389\u001b[0m )\n\u001b[0;32m--> 391\u001b[0m out \u001b[38;5;241m=\u001b[39m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 392\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_optimizer_step_code()\n\u001b[1;32m 394\u001b[0m \u001b[38;5;66;03m# call optimizer step post hooks\u001b[39;00m\n", + "File \u001b[0;32m/scratch/gpfs/nc1514/FusionAIHub/.venv/lib64/python3.11/site-packages/torch/optim/optimizer.py:79\u001b[0m, in \u001b[0;36m_use_grad_for_differentiable.._use_grad\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 77\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[1;32m 78\u001b[0m torch\u001b[38;5;241m.\u001b[39m_dynamo\u001b[38;5;241m.\u001b[39mgraph_break()\n\u001b[0;32m---> 79\u001b[0m \u001b[43mtorch\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mset_grad_enabled\u001b[49m\u001b[43m(\u001b[49m\u001b[43mprev_grad\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 80\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m ret\n", + "File \u001b[0;32m/scratch/gpfs/nc1514/FusionAIHub/.venv/lib64/python3.11/site-packages/torch/autograd/grad_mode.py:186\u001b[0m, in \u001b[0;36mset_grad_enabled.__init__\u001b[0;34m(self, mode)\u001b[0m\n\u001b[1;32m 184\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprev \u001b[38;5;241m=\u001b[39m torch\u001b[38;5;241m.\u001b[39mis_grad_enabled()\n\u001b[1;32m 185\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmode \u001b[38;5;241m=\u001b[39m mode\n\u001b[0;32m--> 186\u001b[0m \u001b[43mtorch\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_C\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_set_grad_enabled\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmode\u001b[49m\u001b[43m)\u001b[49m\n", "\u001b[0;31mKeyboardInterrupt\u001b[0m: " ] } From 30f014c8a652374f45afb3de3b04df3b090ea3c8 Mon Sep 17 00:00:00 2001 From: Nathaniel Chen Date: Sat, 15 Jun 2024 16:15:43 -0400 Subject: [PATCH 022/103] most recent with debugging --- hackathon/co2_to_mse.ipynb | 65127 ++++++++++++++++++++++++++++++++++- 1 file changed, 65058 insertions(+), 69 deletions(-) diff --git a/hackathon/co2_to_mse.ipynb b/hackathon/co2_to_mse.ipynb index b7f90ef..db1c682 100644 --- a/hackathon/co2_to_mse.ipynb +++ b/hackathon/co2_to_mse.ipynb @@ -230,7 +230,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 93, "metadata": {}, "outputs": [], "source": [ @@ -256,7 +256,7 @@ "\n", " def __init__(self, embed, hidden, out_dim, layers=2):\n", " super().__init__()\n", - " self.fc1 = build_model(embed, hidden, layers, hidden, nn.ReLU)\n", + " self.fc1 = build_model(embed+hidden, hidden, layers, hidden, nn.ReLU)\n", " self.fc2 = nn.Linear(hidden, out_dim)\n", "\n", " def forward(self, z):\n", @@ -278,7 +278,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 94, "metadata": {}, "outputs": [], "source": [ @@ -293,7 +293,7 @@ " def forward(self, x):\n", " embed = self.encoder(x)\n", " mem_out = self._memory_unit(embed)[0]\n", - " pred, _ = self.decoder(mem_out)\n", + " pred, _ = self.decoder(torch.cat([embed, mem_out],axis=2))\n", " return pred\n", "\n", " def to(self, device):\n", @@ -306,36 +306,7 @@ }, { "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "# original HackNet\n", - "class HackNet(nn.Module):\n", - " def __init__(self, config):\n", - " super().__init__()\n", - "\n", - " self.encoder = Encoder(in_dim=config.IN_DIM, hidden=config.HIDDEN, embed=config.EMBED_DIM)\n", - " self.decoder = Decoder(embed=config.EMBED_DIM, hidden=config.HIDDEN, out_dim=config.OUT_DIM)\n", - " self._memory_unit = nn.GRU(config.EMBED_DIM, config.HIDDEN, num_layers= 2, batch_first=True)\n", - "\n", - " self.encoder = self.encoder.to(config.DEVICE)\n", - " self.decoder = self.decoder.to(config.DEVICE)\n", - " self._memory_unit = self._memory_unit.to(config.DEVICE)\n", - "\n", - " def forward(self, x): # B X T X IN_DIM\n", - "\n", - " embed = self.encoder(x) #B X T X EMBED_DIM\n", - " mem_out = self._memory_unit(embed)[0]\n", - "\n", - " pred, _ = self.decoder(torch.cat([embed, mem_out])) #B X T X OUT_DIM #B X T X OUT_DIM\n", - "\n", - " return pred" - ] - }, - { - "cell_type": "code", - "execution_count": 17, + "execution_count": 97, "metadata": {}, "outputs": [], "source": [ @@ -349,7 +320,6 @@ "\n", " x = data_x[idxes]\n", " y = data_y[idxes]\n", - "\n", " pred = network(x)\n", " #compute loss func\n", " loss = F.smooth_l1_loss(pred, y) #decide loss function, start with L1 distance\n", @@ -382,7 +352,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 100, "metadata": {}, "outputs": [ { @@ -390,32 +360,23 @@ "output_type": "stream", "text": [ "device: cuda\n", - "Epoch 0 Train Loss: 0.255791574716568 Val Loss: 0.2838430106639862\n", - "Epoch 1 Train Loss: 0.23289497196674347 Val Loss: 0.2714169919490814\n", - "Epoch 2 Train Loss: 0.2525785565376282 Val Loss: 0.31792107224464417\n", - "Epoch 3 Train Loss: 0.24364440143108368 Val Loss: 0.2633882164955139\n", - "Epoch 4 Train Loss: 0.22275318205356598 Val Loss: 0.2613389492034912\n", - "Epoch 5 Train Loss: 0.2087143063545227 Val Loss: 0.24688249826431274\n", - "Epoch 6 Train Loss: 0.24294227361679077 Val Loss: 0.2491239607334137\n", - "Epoch 7 Train Loss: 0.23406414687633514 Val Loss: 0.20855343341827393\n", - "Epoch 8 Train Loss: 0.26939481496810913 Val Loss: 0.21229057013988495\n", - "Epoch 9 Train Loss: 0.2777935564517975 Val Loss: 0.24400869011878967\n", - "Epoch 10 Train Loss: 0.2552683353424072 Val Loss: 0.23029792308807373\n", - "Epoch 11 Train Loss: 0.3095128834247589 Val Loss: 0.24108797311782837\n", - "Epoch 12 Train Loss: 0.25221654772758484 Val Loss: 0.24853092432022095\n", - "Epoch 13 Train Loss: 0.2726132869720459 Val Loss: 0.2304145246744156\n", - "Epoch 14 Train Loss: 0.24462772905826569 Val Loss: 0.23836518824100494\n", - "Epoch 15 Train Loss: 0.2791774868965149 Val Loss: 0.26178693771362305\n", - "Epoch 16 Train Loss: 0.2374017834663391 Val Loss: 0.2145753651857376\n", - "Epoch 17 Train Loss: 0.26172196865081787 Val Loss: 0.22734738886356354\n", - "Epoch 18 Train Loss: 0.24134452641010284 Val Loss: 0.23207946121692657\n", - "Epoch 19 Train Loss: 0.2221219688653946 Val Loss: 0.26842987537384033\n", - "Epoch 20 Train Loss: 0.25536271929740906 Val Loss: 0.22756478190422058\n", - "Epoch 21 Train Loss: 0.25661006569862366 Val Loss: 0.23108401894569397\n", - "Epoch 22 Train Loss: 0.23620621860027313 Val Loss: 0.27084627747535706\n", - "Epoch 23 Train Loss: 0.21768540143966675 Val Loss: 0.1903669238090515\n", - "Epoch 24 Train Loss: 0.26772356033325195 Val Loss: 0.21332523226737976\n", - "Epoch 25 Train Loss: 0.25931689143180847 Val Loss: 0.24254707992076874\n" + "Epoch 0 Train Loss: 0.25513583421707153 Val Loss: 0.24469204246997833\n", + "Epoch 1 Train Loss: 0.2659304738044739 Val Loss: 0.23944751918315887\n", + "Epoch 2 Train Loss: 0.2457357496023178 Val Loss: 0.24234223365783691\n", + "Epoch 3 Train Loss: 0.25822871923446655 Val Loss: 0.23999018967151642\n", + "Epoch 4 Train Loss: 0.21395975351333618 Val Loss: 0.22520765662193298\n", + "Epoch 5 Train Loss: 0.2915404140949249 Val Loss: 0.25070616602897644\n", + "Epoch 6 Train Loss: 0.23592528700828552 Val Loss: 0.2476009577512741\n", + "Epoch 7 Train Loss: 0.24763169884681702 Val Loss: 0.26266419887542725\n", + "Epoch 8 Train Loss: 0.2499246895313263 Val Loss: 0.252627432346344\n", + "Epoch 9 Train Loss: 0.2591034173965454 Val Loss: 0.2148347795009613\n", + "Epoch 10 Train Loss: 0.24732984602451324 Val Loss: 0.25751248002052307\n", + "Epoch 11 Train Loss: 0.21846677362918854 Val Loss: 0.3136787712574005\n", + "Epoch 12 Train Loss: 0.20617620646953583 Val Loss: 0.27623942494392395\n", + "Epoch 13 Train Loss: 0.2601115107536316 Val Loss: 0.22286640107631683\n", + "Epoch 14 Train Loss: 0.2129838913679123 Val Loss: 0.2422345131635666\n", + "Epoch 15 Train Loss: 0.21845406293869019 Val Loss: 0.2498026043176651\n", + "Epoch 16 Train Loss: 0.2497348189353943 Val Loss: 0.27690985798835754\n" ] }, { @@ -425,11 +386,13 @@ "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[18], line 13\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m epoch \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mrange\u001b[39m(num_epochs):\n\u001b[1;32m 12\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m data_x, data_y \u001b[38;5;129;01min\u001b[39;00m train_loader:\n\u001b[0;32m---> 13\u001b[0m train_loss \u001b[38;5;241m=\u001b[39m \u001b[43mtrain_epoch\u001b[49m\u001b[43m(\u001b[49m\u001b[43mnet\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mopt\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata_x\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata_y\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 15\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m data_x, data_y \u001b[38;5;129;01min\u001b[39;00m test_loader:\n\u001b[1;32m 16\u001b[0m val_loss \u001b[38;5;241m=\u001b[39m val_epoch(net, opt, data_x, data_y)\n", - "Cell \u001b[0;32mIn[17], line 18\u001b[0m, in \u001b[0;36mtrain_epoch\u001b[0;34m(network, optim, data_x, data_y)\u001b[0m\n\u001b[1;32m 16\u001b[0m optim\u001b[38;5;241m.\u001b[39mzero_grad()\n\u001b[1;32m 17\u001b[0m loss\u001b[38;5;241m.\u001b[39mbackward()\n\u001b[0;32m---> 18\u001b[0m \u001b[43moptim\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mstep\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 20\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m loss\u001b[38;5;241m.\u001b[39mitem()\n", - "File \u001b[0;32m/scratch/gpfs/nc1514/FusionAIHub/.venv/lib64/python3.11/site-packages/torch/optim/optimizer.py:391\u001b[0m, in \u001b[0;36mOptimizer.profile_hook_step..wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 386\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 387\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mRuntimeError\u001b[39;00m(\n\u001b[1;32m 388\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mfunc\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m must return None or a tuple of (new_args, new_kwargs), but got \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mresult\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 389\u001b[0m )\n\u001b[0;32m--> 391\u001b[0m out \u001b[38;5;241m=\u001b[39m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 392\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_optimizer_step_code()\n\u001b[1;32m 394\u001b[0m \u001b[38;5;66;03m# call optimizer step post hooks\u001b[39;00m\n", - "File \u001b[0;32m/scratch/gpfs/nc1514/FusionAIHub/.venv/lib64/python3.11/site-packages/torch/optim/optimizer.py:79\u001b[0m, in \u001b[0;36m_use_grad_for_differentiable.._use_grad\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 77\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[1;32m 78\u001b[0m torch\u001b[38;5;241m.\u001b[39m_dynamo\u001b[38;5;241m.\u001b[39mgraph_break()\n\u001b[0;32m---> 79\u001b[0m \u001b[43mtorch\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mset_grad_enabled\u001b[49m\u001b[43m(\u001b[49m\u001b[43mprev_grad\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 80\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m ret\n", - "File \u001b[0;32m/scratch/gpfs/nc1514/FusionAIHub/.venv/lib64/python3.11/site-packages/torch/autograd/grad_mode.py:186\u001b[0m, in \u001b[0;36mset_grad_enabled.__init__\u001b[0;34m(self, mode)\u001b[0m\n\u001b[1;32m 184\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprev \u001b[38;5;241m=\u001b[39m torch\u001b[38;5;241m.\u001b[39mis_grad_enabled()\n\u001b[1;32m 185\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmode \u001b[38;5;241m=\u001b[39m mode\n\u001b[0;32m--> 186\u001b[0m \u001b[43mtorch\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_C\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_set_grad_enabled\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmode\u001b[49m\u001b[43m)\u001b[49m\n", + "Cell \u001b[0;32mIn[100], line 13\u001b[0m\n\u001b[1;32m 9\u001b[0m num_epochs \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m100\u001b[39m\n\u001b[1;32m 11\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m epoch \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mrange\u001b[39m(num_epochs):\n\u001b[0;32m---> 13\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mdata_x\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata_y\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mtrain_loader\u001b[49m\u001b[43m:\u001b[49m\n\u001b[1;32m 14\u001b[0m \u001b[43m \u001b[49m\u001b[43mtrain_loss\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mtrain_epoch\u001b[49m\u001b[43m(\u001b[49m\u001b[43mnet\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mopt\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata_x\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata_y\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 16\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m data_x, data_y \u001b[38;5;129;01min\u001b[39;00m test_loader:\n", + "File \u001b[0;32m/scratch/gpfs/nc1514/FusionAIHub/.venv/lib64/python3.11/site-packages/torch/utils/data/dataloader.py:631\u001b[0m, in \u001b[0;36m_BaseDataLoaderIter.__next__\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 628\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_sampler_iter \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 629\u001b[0m \u001b[38;5;66;03m# TODO(https://github.com/pytorch/pytorch/issues/76750)\u001b[39;00m\n\u001b[1;32m 630\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_reset() \u001b[38;5;66;03m# type: ignore[call-arg]\u001b[39;00m\n\u001b[0;32m--> 631\u001b[0m data \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_next_data\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 632\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_num_yielded \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;241m1\u001b[39m\n\u001b[1;32m 633\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_dataset_kind \u001b[38;5;241m==\u001b[39m _DatasetKind\u001b[38;5;241m.\u001b[39mIterable \u001b[38;5;129;01mand\u001b[39;00m \\\n\u001b[1;32m 634\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_IterableDataset_len_called \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m \\\n\u001b[1;32m 635\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_num_yielded \u001b[38;5;241m>\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_IterableDataset_len_called:\n", + "File \u001b[0;32m/scratch/gpfs/nc1514/FusionAIHub/.venv/lib64/python3.11/site-packages/torch/utils/data/dataloader.py:675\u001b[0m, in \u001b[0;36m_SingleProcessDataLoaderIter._next_data\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 673\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_next_data\u001b[39m(\u001b[38;5;28mself\u001b[39m):\n\u001b[1;32m 674\u001b[0m index \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_next_index() \u001b[38;5;66;03m# may raise StopIteration\u001b[39;00m\n\u001b[0;32m--> 675\u001b[0m data \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_dataset_fetcher\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfetch\u001b[49m\u001b[43m(\u001b[49m\u001b[43mindex\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;66;03m# may raise StopIteration\u001b[39;00m\n\u001b[1;32m 676\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_pin_memory:\n\u001b[1;32m 677\u001b[0m data \u001b[38;5;241m=\u001b[39m _utils\u001b[38;5;241m.\u001b[39mpin_memory\u001b[38;5;241m.\u001b[39mpin_memory(data, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_pin_memory_device)\n", + "File \u001b[0;32m/scratch/gpfs/nc1514/FusionAIHub/.venv/lib64/python3.11/site-packages/torch/utils/data/_utils/fetch.py:49\u001b[0m, in \u001b[0;36m_MapDatasetFetcher.fetch\u001b[0;34m(self, possibly_batched_index)\u001b[0m\n\u001b[1;32m 47\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mauto_collation:\n\u001b[1;32m 48\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mhasattr\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdataset, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m__getitems__\u001b[39m\u001b[38;5;124m\"\u001b[39m) \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdataset\u001b[38;5;241m.\u001b[39m__getitems__:\n\u001b[0;32m---> 49\u001b[0m data \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdataset\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m__getitems__\u001b[49m\u001b[43m(\u001b[49m\u001b[43mpossibly_batched_index\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 50\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 51\u001b[0m data \u001b[38;5;241m=\u001b[39m [\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdataset[idx] \u001b[38;5;28;01mfor\u001b[39;00m idx \u001b[38;5;129;01min\u001b[39;00m possibly_batched_index]\n", + "File \u001b[0;32m/scratch/gpfs/nc1514/FusionAIHub/.venv/lib64/python3.11/site-packages/torch/utils/data/dataset.py:419\u001b[0m, in \u001b[0;36mSubset.__getitems__\u001b[0;34m(self, indices)\u001b[0m\n\u001b[1;32m 417\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdataset\u001b[38;5;241m.\u001b[39m__getitems__([\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mindices[idx] \u001b[38;5;28;01mfor\u001b[39;00m idx \u001b[38;5;129;01min\u001b[39;00m indices]) \u001b[38;5;66;03m# type: ignore[attr-defined]\u001b[39;00m\n\u001b[1;32m 418\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m--> 419\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43m[\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdataset\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mindices\u001b[49m\u001b[43m[\u001b[49m\u001b[43midx\u001b[49m\u001b[43m]\u001b[49m\u001b[43m]\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43midx\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mindices\u001b[49m\u001b[43m]\u001b[49m\n", + "File \u001b[0;32m/scratch/gpfs/nc1514/FusionAIHub/.venv/lib64/python3.11/site-packages/torch/utils/data/dataset.py:419\u001b[0m, in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 417\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdataset\u001b[38;5;241m.\u001b[39m__getitems__([\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mindices[idx] \u001b[38;5;28;01mfor\u001b[39;00m idx \u001b[38;5;129;01min\u001b[39;00m indices]) \u001b[38;5;66;03m# type: ignore[attr-defined]\u001b[39;00m\n\u001b[1;32m 418\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m--> 419\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m [\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdataset\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mindices\u001b[49m\u001b[43m[\u001b[49m\u001b[43midx\u001b[49m\u001b[43m]\u001b[49m\u001b[43m]\u001b[49m \u001b[38;5;28;01mfor\u001b[39;00m idx \u001b[38;5;129;01min\u001b[39;00m indices]\n", + "Cell \u001b[0;32mIn[2], line 46\u001b[0m, in \u001b[0;36mFusionDataset.__getitem__\u001b[0;34m(self, index)\u001b[0m\n\u001b[1;32m 44\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__getitem__\u001b[39m(\u001b[38;5;28mself\u001b[39m, index):\n\u001b[1;32m 45\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m (torch\u001b[38;5;241m.\u001b[39mtensor(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39minputs[index], dtype\u001b[38;5;241m=\u001b[39mtorch\u001b[38;5;241m.\u001b[39mfloat32),\n\u001b[0;32m---> 46\u001b[0m \u001b[43mtorch\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtensor\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtargets\u001b[49m\u001b[43m[\u001b[49m\u001b[43mindex\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdtype\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtorch\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfloat32\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241m.\u001b[39munsqueeze(\u001b[38;5;241m0\u001b[39m))\n", "\u001b[0;31mKeyboardInterrupt\u001b[0m: " ] } @@ -438,9 +401,10 @@ "#training epoch code\n", "# input_dim, embed_dim, hidden_dim, output_dim\n", "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n", - "config = Config(48, 64, 64, 43, device=device)\n", + "# input_dim, embed_dim, hidden_dim, output_dim\n", + "config = Config(48, 24, 64, 43, device=device)\n", "net = HackNet(config)\n", - "opt = torch.optim.Adam(net.parameters(), lr=3e-4)\n", + "opt = torch.optim.Adam(net.parameters(), lr=3e-3)\n", "\n", "num_epochs = 100\n", "\n", @@ -455,6 +419,65031 @@ " print(f\"Epoch {epoch} Train Loss: {train_loss} Val Loss: {val_loss}\")" ] }, + { + "cell_type": "code", + "execution_count": 102, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "device: cuda\n", + "Epoch 0 Train Loss: 0.2882300447383823 Val Loss: 0.2893289668962013\n", + "Epoch 1 Train Loss: 0.289524489407276 Val Loss: 0.2895522813579833\n", + "Epoch 2 Train Loss: 0.28950670627198477 Val Loss: 0.28919077809004823\n", + "Epoch 3 Train Loss: 0.28949106930820057 Val Loss: 0.2895732760256113\n", + "Epoch 4 Train Loss: 0.2895325559169747 Val Loss: 0.28947223578543624\n", + "Epoch 5 Train Loss: 0.28953749303121207 Val Loss: 0.28922719964685367\n", + "Epoch 6 Train Loss: 0.2895047937036138 Val Loss: 0.2893783446950044\n", + "Epoch 7 Train Loss: 0.28951890379652495 Val Loss: 0.28954099661620086\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "KeyboardInterrupt\n", + "\n" + ] + } + ], + "source": [ + "import torch\n", + "import torch.nn as nn\n", + "import torch.nn.functional as F\n", + "import numpy as np\n", + "import random\n", + "\n", + "class Config:\n", + " def __init__(self, input_dim, embed_dim, hidden_dim, output_dim, device):\n", + " print('device:', device)\n", + " self.IN_DIM = input_dim\n", + " self.EMBED_DIM = embed_dim\n", + " self.OUT_DIM = output_dim\n", + " self.HIDDEN = hidden_dim\n", + " self.DEVICE = device\n", + "\n", + "def build_model(in_dim, out_dim, layers, hidden, activation, normalize=lambda x: x):\n", + " model = [normalize(nn.Linear(in_dim, hidden))]\n", + " model += [activation()]\n", + " for i in range(layers - 1):\n", + " model += [normalize(nn.Linear(hidden, hidden))]\n", + " model += [activation()]\n", + " model += [normalize(nn.Linear(hidden, out_dim))]\n", + " return nn.Sequential(*model)\n", + "\n", + "class Decoder(nn.Module):\n", + " def __init__(self, embed, hidden, out_dim, layers=2):\n", + " super().__init__()\n", + " self.fc1 = build_model(embed + hidden, hidden, layers, hidden, nn.ReLU)\n", + " self.fc2 = nn.Linear(hidden, out_dim)\n", + "\n", + " def forward(self, z):\n", + " x = F.relu(self.fc1(z))\n", + " return self.fc2(x), x\n", + "\n", + "class Encoder(nn.Module):\n", + " def __init__(self, in_dim, hidden, embed, layers=2):\n", + " super().__init__()\n", + " self.fc1 = nn.Linear(in_dim, hidden)\n", + " self.encoder = build_model(hidden, embed, layers, hidden, nn.ReLU)\n", + "\n", + " def forward(self, x):\n", + " embed = F.relu(self.fc1(x))\n", + " return self.encoder(F.relu(embed))\n", + "\n", + "class HackNet(nn.Module):\n", + " def __init__(self, config):\n", + " super().__init__()\n", + " self.encoder = Encoder(in_dim=config.IN_DIM, hidden=config.HIDDEN, embed=config.EMBED_DIM)\n", + " self.decoder = Decoder(embed=config.EMBED_DIM, hidden=config.HIDDEN, out_dim=config.OUT_DIM)\n", + " self._memory_unit = nn.GRU(config.EMBED_DIM, config.HIDDEN, num_layers=2, batch_first=True)\n", + "\n", + " def forward(self, x):\n", + " embed = self.encoder(x)\n", + " mem_out = self._memory_unit(embed)[0]\n", + " pred, _ = self.decoder(torch.cat([embed, mem_out], axis=2))\n", + " return pred\n", + "\n", + " def to(self, device):\n", + " super().to(device)\n", + " self.encoder = self.encoder.to(device)\n", + " self.decoder = self.decoder.to(device)\n", + " self._memory_unit = self._memory_unit.to(device)\n", + " return self\n", + "\n", + "def init_weights(m):\n", + " if isinstance(m, nn.Linear):\n", + " torch.nn.init.xavier_uniform_(m.weight)\n", + " if m.bias is not None:\n", + " torch.nn.init.zeros_(m.bias)\n", + "\n", + "def train_epoch(network, optim, data_x, data_y, device):\n", + " network.train()\n", + " data_x, data_y = data_x.to(device), data_y.to(device)\n", + " pred = network(data_x)\n", + " loss = F.smooth_l1_loss(pred, data_y)\n", + " optim.zero_grad()\n", + " loss.backward()\n", + " optim.step()\n", + " return loss.item()\n", + "\n", + "def val_epoch(network, data_x, data_y, device):\n", + " network.eval()\n", + " data_x, data_y = data_x.to(device), data_y.to(device)\n", + " with torch.no_grad():\n", + " pred = network(data_x)\n", + " loss = F.smooth_l1_loss(pred, data_y)\n", + " return loss.item()\n", + "\n", + "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n", + "config = Config(48, 32, 32, 43, device=device)\n", + "net = HackNet(config).to(device)\n", + "net.apply(init_weights)\n", + "opt = torch.optim.Adam(net.parameters(), lr=3e-2)\n", + "scheduler = torch.optim.lr_scheduler.StepLR(opt, step_size=30, gamma=0.1)\n", + "\n", + "num_epochs = 100\n", + "\n", + "for epoch in range(num_epochs):\n", + " train_losses = []\n", + " for data_x, data_y in train_loader:\n", + " train_loss = train_epoch(net, opt, data_x, data_y, device)\n", + " train_losses.append(train_loss)\n", + "\n", + " val_losses = []\n", + " for data_x, data_y in test_loader:\n", + " val_loss = val_epoch(net, data_x, data_y, device)\n", + " val_losses.append(val_loss)\n", + " \n", + " scheduler.step()\n", + " print(f\"Epoch {epoch} Train Loss: {np.mean(train_losses)} Val Loss: {np.mean(val_losses)}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "device: cuda\n", + "Data X Sample: tensor([[2.5248, 2.8795, 3.3178, 3.4744, 3.7137, 3.6817, 3.6853, 3.8954, 3.8080,\n", + " 3.7376, 3.8988, 3.7470, 3.7128, 3.4790, 3.5080, 3.1878, 3.2737, 3.3619,\n", + " 3.5064, 3.3047, 3.4620, 3.4384, 3.1159, 2.9795, 2.9353, 2.8261, 2.8238,\n", + " 2.8387, 2.5047, 2.5972, 2.6701, 2.8683, 3.0031, 2.1581, 3.3385, 3.7164,\n", + " 3.7874, 4.3385, 4.8045, 4.7465, 1.9950, 1.1809, 1.1580, 2.0782, 3.0643,\n", + " 3.2765, 2.2301, 3.1355]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5874, -0.7096, -0.5364, -0.9002, -1.0180, -0.5296, 0.1658, 0.4428,\n", + " 0.4455, 0.4555, 0.6139, -1.2103, -0.1196, -1.0701, -1.0084, -0.3170,\n", + " -0.4965, -0.0202, 0.8535, -0.4856, 3.2938, -0.7402, 0.9853, -0.3912,\n", + " 2.1636, -0.3847, 0.6208, -0.0277, -0.0251, 0.1360, -0.5399, 0.7173,\n", + " 0.7008, -0.1736, 0.8664, 0.7216, 0.5774, -0.5460, 0.4623, 0.4803,\n", + " 0.2581, 0.5875, 0.7075]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1526, 0.1948, -0.8397, -0.1771, 0.1925, 0.4051, -0.0299, 0.2512,\n", + " -0.2499, -0.9009, 0.1035, 0.0727, -0.3053, -0.1178, -0.2528, 0.0234,\n", + " 0.1070, -0.0471, 0.2589, 0.5721, 0.0606, -0.1789, 0.1521, 0.1133,\n", + " -0.2962, 0.0208, -0.4979, 0.0808, 0.0643, 0.5250, -0.4063, -0.0677,\n", + " 1.0211, -0.0668, -0.2354, 0.3427, -0.2702, -0.5066, 0.2909, 0.3038,\n", + " -0.2086, -0.0199, -0.0342]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0019626065623015165\n", + "Grad encoder.fc1.bias: 0.0006645735120400786\n", + "Grad encoder.encoder.0.weight: 0.0010383427143096924\n", + "Grad encoder.encoder.0.bias: 0.0009610212873667479\n", + "Grad encoder.encoder.2.weight: 0.0013235664227977395\n", + "Grad encoder.encoder.2.bias: 0.0015217209002003074\n", + "Grad encoder.encoder.4.weight: 0.0023265699855983257\n", + "Grad encoder.encoder.4.bias: 0.0032013687305152416\n", + "Grad decoder.fc1.0.weight: 0.0006504359771497548\n", + "Grad decoder.fc1.0.bias: 0.0023963681887835264\n", + "Grad decoder.fc1.2.weight: 0.0008163329912349582\n", + "Grad decoder.fc1.2.bias: 0.003047160804271698\n", + "Grad decoder.fc1.4.weight: 0.000589795527048409\n", + "Grad decoder.fc1.4.bias: 0.003081107046455145\n", + "Grad decoder.fc2.weight: 0.0005353273008950055\n", + "Grad decoder.fc2.bias: 0.004170812200754881\n", + "Grad _memory_unit.weight_ih_l0: 0.0001168445814982988\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00012427015462890267\n", + "Grad _memory_unit.bias_hh_l0: 7.101728988345712e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.631285603158176e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00045630845124833286\n", + "Grad _memory_unit.bias_hh_l1: 0.00023757017333991826\n", + "Data X Sample: tensor([[1.5934, 1.7318, 1.8918, 2.0226, 2.1002, 2.1038, 2.1461, 2.2799, 2.3629,\n", + " 2.3111, 2.3507, 2.3273, 2.3968, 2.2357, 2.1537, 2.1854, 2.1840, 2.2226,\n", + " 2.3025, 2.3153, 2.4340, 2.4326, 2.4749, 2.3859, 2.4718, 2.4813, 2.5308,\n", + " 2.5940, 2.3105, 2.4170, 2.4007, 2.4373, 2.2176, 1.4463, 1.9266, 1.7828,\n", + " 1.6951, 1.5027, 1.6036, 1.5746, 1.2361, 0.7528, 0.7417, 1.2228, 2.0019,\n", + " 1.9957, 1.3734, 1.9392]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 5.5152e-01, 1.2389e-01, 7.6703e-02, 1.2072e+00, 1.1326e+00,\n", + " 2.3322e-01, -4.2521e-01, -6.4957e-01, -3.9461e-01, -4.8878e-01,\n", + " -5.3414e-01, -6.1981e-03, -8.7905e-01, 2.4246e-01, 1.9656e+00,\n", + " 9.9103e-01, -2.5015e-01, 1.1732e+00, 3.8035e-02, 6.0857e-01,\n", + " -5.6636e-01, 1.1638e+00, -2.7437e-01, 5.7454e-01, -5.1581e-01,\n", + " 8.2909e+00, 1.2895e+00, 7.8885e-01, 6.3427e-01, 1.1981e+00,\n", + " 9.0160e-01, -9.5900e-01, 1.0718e+00, 3.9178e-01, 8.9680e-01,\n", + " 3.4802e-01, 7.0630e-01, 9.7600e-01, -4.3414e-01, -6.5642e-01,\n", + " -6.6117e-01, -5.7699e-01, -5.8067e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.0650, -0.0628, -0.1273, -0.0221, 0.1008, 0.1072, -0.0018, -0.0772,\n", + " 0.0776, -0.0784, 0.0644, -0.0018, -0.0049, -0.0519, -0.0474, -0.0605,\n", + " 0.0805, -0.0465, 0.0456, 0.1295, -0.0196, 0.0564, -0.0250, 0.0487,\n", + " 0.0877, 0.0552, -0.0101, -0.0377, -0.0490, 0.0916, -0.0358, -0.0176,\n", + " 0.1528, -0.0518, 0.0113, 0.0152, -0.0094, 0.0157, -0.0032, 0.0450,\n", + " -0.0261, 0.0555, 0.0282]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002842979156412184\n", + "Grad encoder.fc1.bias: 0.0001127902214648202\n", + "Grad encoder.encoder.0.weight: 0.00014062674017623067\n", + "Grad encoder.encoder.0.bias: 0.00015602758503518999\n", + "Grad encoder.encoder.2.weight: 0.00014727655798196793\n", + "Grad encoder.encoder.2.bias: 0.00021784740965813398\n", + "Grad encoder.encoder.4.weight: 0.0003416147083044052\n", + "Grad encoder.encoder.4.bias: 0.0005747794639319181\n", + "Grad decoder.fc1.0.weight: 0.00012863497249782085\n", + "Grad decoder.fc1.0.bias: 0.0006387124303728342\n", + "Grad decoder.fc1.2.weight: 0.00012282823445275426\n", + "Grad decoder.fc1.2.bias: 0.0009198386105708778\n", + "Grad decoder.fc1.4.weight: 0.00011133018415421247\n", + "Grad decoder.fc1.4.bias: 0.0012767617590725422\n", + "Grad decoder.fc2.weight: 0.00010900987399509177\n", + "Grad decoder.fc2.bias: 0.002697062911465764\n", + "Grad _memory_unit.weight_ih_l0: 2.7649217372527346e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.116521085961722e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.3722923288005404e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.4107776223681867e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00012296237400732934\n", + "Grad _memory_unit.bias_hh_l1: 6.519615999422967e-05\n", + "Data X Sample: tensor([[1.4618, 1.5992, 1.7070, 1.8323, 1.9704, 1.9963, 2.1816, 1.9364, 2.3897,\n", + " 3.8024, 4.0796, 4.0021, 4.0280, 3.8061, 3.6820, 3.6021, 3.4687, 3.4548,\n", + " 3.5188, 3.3438, 3.3025, 3.2394, 3.1207, 2.9795, 2.8321, 2.9619, 2.9144,\n", + " 2.9733, 2.8517, 2.9509, 3.1461, 3.1916, 3.4387, 2.4784, 4.2577, 4.7380,\n", + " 4.8887, 5.4277, 5.8187, 5.6657, 1.1359, 0.6552, 0.6427, 1.0965, 1.6213,\n", + " 1.8070, 1.2034, 1.7828]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.3289, -0.2833, -0.4220, -0.0382, 0.8130, 0.0208, 0.3546, 0.7691,\n", + " 1.1328, 0.9304, 0.9086, -0.3150, 0.5052, 0.2559, 0.1866, -0.1845,\n", + " 0.1642, 0.1533, 0.1329, 0.5693, -0.6910, -1.6812, 0.0307, 0.1660,\n", + " -0.4731, -0.4931, 0.9756, -0.2904, 0.0657, -0.5701, -1.5307, -0.9811,\n", + " -0.9099, -0.1476, -0.7549, -0.6975, 0.9839, 0.7952, 0.1391, 0.6043,\n", + " 0.0615, -0.1816, 1.1114]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.0304, -0.0542, -0.0872, 0.0041, 0.2009, 0.0507, -0.0199, -0.0731,\n", + " 0.0333, -0.0531, 0.1052, -0.0549, -0.0372, -0.1598, -0.0685, -0.0805,\n", + " 0.1110, -0.0650, 0.0673, 0.1116, -0.0431, 0.1666, -0.0639, 0.0137,\n", + " 0.1734, -0.0276, 0.0115, -0.0450, -0.0819, 0.1308, 0.0216, -0.0731,\n", + " 0.0580, -0.0403, 0.0420, -0.0356, 0.0394, 0.0996, -0.0549, 0.0660,\n", + " -0.0007, 0.0214, 0.0123]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002100505807902664\n", + "Grad encoder.fc1.bias: 9.21677565202117e-05\n", + "Grad encoder.encoder.0.weight: 0.0001289430947508663\n", + "Grad encoder.encoder.0.bias: 0.00015746105054859072\n", + "Grad encoder.encoder.2.weight: 0.0001086465417756699\n", + "Grad encoder.encoder.2.bias: 0.00020128577307332307\n", + "Grad encoder.encoder.4.weight: 0.00025690929032862186\n", + "Grad encoder.encoder.4.bias: 0.0006500038434751332\n", + "Grad decoder.fc1.0.weight: 8.58145795064047e-05\n", + "Grad decoder.fc1.0.bias: 0.0004996833158656955\n", + "Grad decoder.fc1.2.weight: 7.669971091672778e-05\n", + "Grad decoder.fc1.2.bias: 0.0006358613027259707\n", + "Grad decoder.fc1.4.weight: 7.448135875165462e-05\n", + "Grad decoder.fc1.4.bias: 0.0009995580185204744\n", + "Grad decoder.fc2.weight: 7.686539902351797e-05\n", + "Grad decoder.fc2.bias: 0.002122601494193077\n", + "Grad _memory_unit.weight_ih_l0: 1.5838977560633793e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.7122190658701584e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.5102599718375131e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0172945621889085e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.596235759090632e-05\n", + "Grad _memory_unit.bias_hh_l1: 5.111842619953677e-05\n", + "Data X Sample: tensor([[1.4268, 1.7012, 1.7926, 1.9460, 1.9875, 1.9727, 2.1200, 2.1749, 2.1676,\n", + " 2.1768, 2.2619, 2.2630, 2.2126, 2.2003, 2.3201, 2.1922, 2.1636, 2.2148,\n", + " 2.1724, 2.3358, 2.2622, 2.3331, 2.3592, 2.2809, 2.4155, 2.4369, 2.3656,\n", + " 2.3329, 2.1717, 2.2762, 2.3132, 2.2576, 2.3056, 1.4898, 1.9977, 1.8217,\n", + " 1.6754, 1.4709, 1.4959, 1.5349, 1.2313, 0.6851, 0.6791, 1.1826, 1.7641,\n", + " 2.0014, 1.2034, 1.7906]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.1149, 0.2445, 0.5449, -0.1190, -0.3838, -1.1280, -1.1928, -1.1500,\n", + " 0.1690, -0.9654, -1.0615, 0.3193, 0.5432, 0.8140, 1.2366, -0.1692,\n", + " 1.3854, 2.1338, 0.1198, 0.8355, 1.4396, 0.3804, 0.8692, -1.9088,\n", + " 0.7774, -0.2105, -0.1965, 0.6683, 1.0763, 1.2188, 1.6276, 0.9480,\n", + " 1.0850, 0.9225, 0.3523, 0.8584, 0.4998, -0.4242, -0.5252, -0.8909,\n", + " -1.0881, -0.6969, -1.0785]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.0018, -0.0363, -0.0127, 0.0447, 0.1042, 0.0039, -0.0080, -0.0626,\n", + " 0.0221, -0.0052, 0.0415, 0.0019, 0.0183, -0.0905, -0.0212, -0.0497,\n", + " 0.0430, -0.0145, 0.0203, 0.0128, -0.0516, 0.0916, -0.0159, 0.0205,\n", + " 0.1030, -0.0584, 0.0032, -0.0046, -0.0345, 0.0494, 0.0214, -0.0042,\n", + " 0.0025, -0.0289, 0.0110, -0.0304, 0.0647, 0.0701, -0.0333, 0.0626,\n", + " -0.0156, -0.0353, -0.0127]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00022920202172826976\n", + "Grad encoder.fc1.bias: 9.829751797951758e-05\n", + "Grad encoder.encoder.0.weight: 0.0001207537716254592\n", + "Grad encoder.encoder.0.bias: 0.00014072805061005056\n", + "Grad encoder.encoder.2.weight: 0.00011954762157984078\n", + "Grad encoder.encoder.2.bias: 0.00023805501405149698\n", + "Grad encoder.encoder.4.weight: 0.0002856881474144757\n", + "Grad encoder.encoder.4.bias: 0.0007844069041311741\n", + "Grad decoder.fc1.0.weight: 0.00011368098057573661\n", + "Grad decoder.fc1.0.bias: 0.0005642512114718556\n", + "Grad decoder.fc1.2.weight: 9.12231917027384e-05\n", + "Grad decoder.fc1.2.bias: 0.0006932855467312038\n", + "Grad decoder.fc1.4.weight: 8.874213381204754e-05\n", + "Grad decoder.fc1.4.bias: 0.001072871033102274\n", + "Grad decoder.fc2.weight: 8.341463399119675e-05\n", + "Grad decoder.fc2.bias: 0.002246562158688903\n", + "Grad _memory_unit.weight_ih_l0: 2.3364800654235296e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.9016566006466746e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.1676263713743538e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.4029441445018165e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011929281754419208\n", + "Grad _memory_unit.bias_hh_l1: 6.484198092948645e-05\n", + "Data X Sample: tensor([[1.6379, 1.8250, 2.0060, 2.1822, 2.3529, 2.4662, 2.5560, 2.6263, 2.6387,\n", + " 2.6792, 2.8551, 2.7830, 2.7941, 2.6092, 2.5143, 2.5231, 2.5064, 2.4489,\n", + " 2.5586, 2.4418, 2.4929, 2.5183, 2.5857, 2.4966, 2.5168, 2.5988, 2.4961,\n", + " 2.5736, 2.2411, 2.4465, 2.5232, 2.3847, 2.2110, 1.4463, 1.9143, 1.8193,\n", + " 1.7718, 1.6909, 1.5973, 1.5349, 1.1550, 0.7567, 0.7417, 1.3060, 1.8711,\n", + " 2.1386, 1.4006, 2.0564]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 5.6420e-01, -3.4734e-01, -3.9432e-01, 1.0478e+00, 6.8445e-01,\n", + " -4.2805e-01, -5.6113e-01, -4.4826e-02, -5.9518e-01, -1.4279e-01,\n", + " -2.2390e-01, -1.3008e-01, 1.1070e-01, 1.7626e-01, -6.6980e-01,\n", + " -3.6265e-01, 3.1150e-01, 1.0332e+00, -5.4104e-01, 7.6238e-02,\n", + " 4.6400e-01, -5.4150e-01, -6.8294e-01, 8.6895e-01, 1.6356e+00,\n", + " 3.6355e-01, 1.9118e-01, 6.4674e-01, -3.1334e-01, 7.7640e-01,\n", + " -4.9861e-01, 8.4579e-01, 2.1095e-01, -1.4642e-01, 5.3153e-01,\n", + " -6.0051e-01, 9.7765e-01, 1.5113e-01, -9.9737e-04, 1.3253e-01,\n", + " -1.9349e-01, -2.5989e-01, -5.4902e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-6.3044e-03, -2.0778e-02, -4.6462e-03, 6.4170e-02, 7.3142e-02,\n", + " -3.0919e-02, -1.8602e-02, -7.7755e-02, 3.0564e-02, 5.0866e-02,\n", + " 1.6898e-02, -3.6340e-03, 2.5550e-02, -6.8196e-02, 1.0881e-02,\n", + " -6.3080e-02, 2.1183e-02, -5.4159e-04, -1.4310e-03, 3.3319e-02,\n", + " -4.2839e-02, 6.9560e-02, 1.1123e-02, -4.0283e-03, 6.5857e-02,\n", + " -7.8433e-02, 3.8620e-02, 3.3025e-02, -5.7788e-05, 3.6411e-02,\n", + " 2.3656e-02, 2.8189e-02, -5.0644e-02, -6.0019e-04, 1.1192e-02,\n", + " -1.9848e-02, 3.1338e-02, 7.3853e-02, -7.4001e-03, 2.6292e-02,\n", + " -1.5739e-02, -4.3986e-02, -4.1256e-02]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00021673760784324259\n", + "Grad encoder.fc1.bias: 7.858202297938988e-05\n", + "Grad encoder.encoder.0.weight: 9.591842535883188e-05\n", + "Grad encoder.encoder.0.bias: 9.391657658852637e-05\n", + "Grad encoder.encoder.2.weight: 0.0001118936634156853\n", + "Grad encoder.encoder.2.bias: 0.00017248326912522316\n", + "Grad encoder.encoder.4.weight: 0.0002865348942577839\n", + "Grad encoder.encoder.4.bias: 0.0005196648417040706\n", + "Grad decoder.fc1.0.weight: 9.144101932179183e-05\n", + "Grad decoder.fc1.0.bias: 0.00041782311745919287\n", + "Grad decoder.fc1.2.weight: 8.486032311338931e-05\n", + "Grad decoder.fc1.2.bias: 0.0005652990657836199\n", + "Grad decoder.fc1.4.weight: 6.81982928654179e-05\n", + "Grad decoder.fc1.4.bias: 0.0007034649606794119\n", + "Grad decoder.fc2.weight: 9.235832840204239e-05\n", + "Grad decoder.fc2.bias: 0.0020600969437509775\n", + "Grad _memory_unit.weight_ih_l0: 1.757560130499769e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.4061660951701924e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.3593041330750566e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0452042261022143e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.754896068945527e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.183818236924708e-05\n", + "Data X Sample: tensor([[2.5343, 2.9319, 3.1886, 3.4547, 3.4405, 3.6625, 3.6529, 3.8372, 3.8665,\n", + " 3.8908, 3.8639, 3.8638, 3.7150, 3.6589, 3.5231, 3.5488, 3.5143, 3.4316,\n", + " 3.4548, 3.2601, 3.1921, 3.2226, 2.9857, 2.8516, 2.7833, 2.7529, 2.6986,\n", + " 2.7897, 2.6678, 2.7839, 2.7856, 2.8462, 2.9635, 2.1352, 3.6130, 4.0083,\n", + " 4.1965, 4.6008, 5.0771, 5.0813, 1.8422, 1.0575, 1.1257, 2.0179, 2.8423,\n", + " 3.2251, 2.1213, 3.0808]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2487, -0.0573, 1.2744, -0.3673, -0.5211, -0.8845, 0.1490, 0.1213,\n", + " -0.2628, -0.1268, 0.4119, -0.0454, 0.3170, 0.3783, 0.7529, 0.2551,\n", + " 0.1962, -0.8568, -0.3075, -0.0485, -0.2044, -0.7789, -0.1216, 1.5788,\n", + " -0.2723, 1.1304, 0.6258, -0.7079, -0.7764, -0.7090, -0.3677, -0.5129,\n", + " -0.2227, -0.1185, -0.0589, 0.0360, 0.0849, -0.7231, 1.1238, 0.3249,\n", + " 0.3257, 0.5300, 0.1368]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.0615, -0.0309, -0.0401, 0.0646, 0.1361, -0.0696, 0.0071, -0.0053,\n", + " -0.0018, 0.0647, 0.0298, -0.0057, -0.0240, -0.1138, -0.0067, -0.1148,\n", + " 0.0854, -0.0060, 0.0187, 0.0958, -0.0406, 0.1568, -0.0268, -0.0190,\n", + " 0.0951, -0.0471, 0.0647, 0.0916, -0.0461, 0.0372, 0.0569, -0.0228,\n", + " -0.0811, 0.0015, 0.0407, -0.0173, 0.0161, 0.0454, 0.0163, 0.0021,\n", + " 0.0210, -0.0091, 0.0014]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001581970718689263\n", + "Grad encoder.fc1.bias: 6.284788832999766e-05\n", + "Grad encoder.encoder.0.weight: 9.062056778930128e-05\n", + "Grad encoder.encoder.0.bias: 9.806676098378375e-05\n", + "Grad encoder.encoder.2.weight: 0.00010312763333786279\n", + "Grad encoder.encoder.2.bias: 0.00017939379904419184\n", + "Grad encoder.encoder.4.weight: 0.0003115404106210917\n", + "Grad encoder.encoder.4.bias: 0.000690851709805429\n", + "Grad decoder.fc1.0.weight: 9.212752047460526e-05\n", + "Grad decoder.fc1.0.bias: 0.00048402021639049053\n", + "Grad decoder.fc1.2.weight: 9.799441613722593e-05\n", + "Grad decoder.fc1.2.bias: 0.0006937130820006132\n", + "Grad decoder.fc1.4.weight: 0.00010264730372000486\n", + "Grad decoder.fc1.4.bias: 0.0009936952264979482\n", + "Grad decoder.fc2.weight: 9.19113153940998e-05\n", + "Grad decoder.fc2.bias: 0.002495157066732645\n", + "Grad _memory_unit.weight_ih_l0: 1.6012365449569188e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.893417695304379e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.6203459381358698e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.13018395495601e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010753184324130416\n", + "Grad _memory_unit.bias_hh_l1: 5.7194421970052645e-05\n", + "Data X Sample: tensor([[2.6691, 2.9130, 3.2968, 3.3979, 3.6010, 3.7524, 3.8409, 3.7293, 3.8763,\n", + " 3.9730, 4.0161, 3.9047, 3.8992, 3.7380, 3.5004, 3.5885, 3.4844, 3.4954,\n", + " 3.4548, 3.4089, 3.3222, 3.2945, 2.9279, 2.9279, 2.7721, 2.7608, 2.7918,\n", + " 2.8061, 2.6921, 2.7609, 2.8346, 2.8766, 2.9943, 2.1603, 3.6792, 4.0059,\n", + " 4.2791, 4.6750, 5.2545, 5.1692, 1.9568, 1.1869, 1.1479, 2.1040, 2.7710,\n", + " 3.2079, 2.1757, 3.0729]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4675, -0.4302, -0.8047, -0.4297, -0.4597, 0.0539, 0.3406, -0.0301,\n", + " 0.2082, 0.3677, 0.1624, -1.0793, -0.5087, -0.8830, -0.4000, 0.0129,\n", + " 0.0755, -0.6234, -0.4633, -0.2665, -0.5121, -0.2095, -0.3583, -1.1933,\n", + " 1.6288, 0.5720, 0.5711, -0.0805, -0.4169, -0.4040, 0.6443, -0.4340,\n", + " -0.9043, -0.2647, -0.8266, 0.1814, -0.1820, 0.7996, 0.0000, 0.3650,\n", + " 0.2776, 0.2312, 0.9750]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.0704, -0.0442, -0.0393, 0.0534, 0.1262, -0.0889, 0.0041, 0.0147,\n", + " -0.0113, 0.0289, 0.0738, 0.0195, -0.0545, -0.1268, -0.0284, -0.1045,\n", + " 0.0814, -0.0250, -0.0021, 0.0925, -0.0434, 0.1460, -0.0197, -0.0256,\n", + " 0.1170, -0.0124, 0.0470, 0.0455, -0.0849, -0.0074, 0.0210, -0.0377,\n", + " -0.0671, -0.0200, -0.0024, -0.0438, 0.0057, 0.0365, 0.0212, 0.0104,\n", + " 0.0334, 0.0199, 0.0393]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 9.347345621790737e-05\n", + "Grad encoder.fc1.bias: 4.644235013984144e-05\n", + "Grad encoder.encoder.0.weight: 5.016288560000248e-05\n", + "Grad encoder.encoder.0.bias: 6.14980817772448e-05\n", + "Grad encoder.encoder.2.weight: 4.869962140219286e-05\n", + "Grad encoder.encoder.2.bias: 9.688292630016804e-05\n", + "Grad encoder.encoder.4.weight: 0.0001683949667494744\n", + "Grad encoder.encoder.4.bias: 0.0004754920955747366\n", + "Grad decoder.fc1.0.weight: 6.679294165223837e-05\n", + "Grad decoder.fc1.0.bias: 0.0004127959837205708\n", + "Grad decoder.fc1.2.weight: 7.404907955788076e-05\n", + "Grad decoder.fc1.2.bias: 0.0007963462267071009\n", + "Grad decoder.fc1.4.weight: 6.623588706133887e-05\n", + "Grad decoder.fc1.4.bias: 0.0009633275913074613\n", + "Grad decoder.fc2.weight: 6.1908365751151e-05\n", + "Grad decoder.fc2.bias: 0.002803538693115115\n", + "Grad _memory_unit.weight_ih_l0: 1.263546528207371e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.44677830778528e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.392549165757373e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.90672436071327e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.775736205279827e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.6542274503735825e-05\n", + "Data X Sample: tensor([[1.2284, 1.4594, 1.6935, 1.8542, 1.8526, 1.9845, 2.0568, 2.1564, 2.1920,\n", + " 2.2211, 2.2301, 2.2162, 2.1949, 2.1566, 2.1587, 2.1088, 2.0079, 2.1974,\n", + " 2.1022, 2.1294, 1.9997, 2.0131, 1.9375, 1.9182, 1.9425, 2.0634, 2.0246,\n", + " 2.0026, 1.7415, 1.8472, 1.9772, 1.8404, 1.8106, 1.2633, 1.8898, 1.7804,\n", + " 1.4473, 1.3172, 1.2487, 1.1320, 1.1597, 0.6253, 0.6103, 1.1022, 1.6808,\n", + " 1.9213, 1.1490, 1.8219]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3169, 0.6177, 2.3557, -0.5232, -1.6964, -0.3023, -0.6702, -0.9353,\n", + " -0.8876, -0.8032, -0.6802, -0.0885, 0.6816, 0.6205, -0.2286, 0.2403,\n", + " -0.4967, -0.6726, -0.5102, 0.2156, -0.0136, -0.1196, -0.0039, 0.2071,\n", + " 0.4971, 0.1109, 0.0642, -0.0541, 0.6820, 1.4297, 1.1339, 0.6193,\n", + " 1.8965, 1.0129, -0.0148, 0.9312, -0.5862, 0.2376, -0.0197, -0.5902,\n", + " -0.2571, 0.0124, -0.1463]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.0101, -0.0382, -0.0107, 0.0408, 0.0364, -0.0345, -0.0125, -0.0314,\n", + " 0.0197, 0.0285, 0.0188, 0.0267, 0.0051, -0.0425, 0.0199, -0.0471,\n", + " 0.0050, -0.0101, -0.0298, 0.0336, -0.0226, 0.0536, 0.0148, -0.0088,\n", + " 0.0535, -0.0121, 0.0304, 0.0248, -0.0317, -0.0229, -0.0044, 0.0139,\n", + " -0.0359, -0.0150, -0.0058, -0.0315, -0.0066, 0.0282, 0.0061, -0.0092,\n", + " 0.0087, 0.0072, 0.0154]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00012960497406311333\n", + "Grad encoder.fc1.bias: 7.46246223570779e-05\n", + "Grad encoder.encoder.0.weight: 5.21929505339358e-05\n", + "Grad encoder.encoder.0.bias: 9.24843770917505e-05\n", + "Grad encoder.encoder.2.weight: 5.0184084102511406e-05\n", + "Grad encoder.encoder.2.bias: 0.00015582324704155326\n", + "Grad encoder.encoder.4.weight: 0.00015022308798506856\n", + "Grad encoder.encoder.4.bias: 0.00048152319504879415\n", + "Grad decoder.fc1.0.weight: 5.0364804337732494e-05\n", + "Grad decoder.fc1.0.bias: 0.00033302593510597944\n", + "Grad decoder.fc1.2.weight: 5.489880277309567e-05\n", + "Grad decoder.fc1.2.bias: 0.0005097784451209009\n", + "Grad decoder.fc1.4.weight: 5.202984903007746e-05\n", + "Grad decoder.fc1.4.bias: 0.0006205684621818364\n", + "Grad decoder.fc2.weight: 6.111860420787707e-05\n", + "Grad decoder.fc2.bias: 0.002014091471210122\n", + "Grad _memory_unit.weight_ih_l0: 9.211193173541687e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.4274915631394833e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.3349528671824373e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.802157258789521e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.512503361795098e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.0141963836504146e-05\n", + "Data X Sample: tensor([[1.5075, 1.8235, 1.8768, 1.9395, 2.0575, 2.1200, 2.1693, 2.2444, 2.2653,\n", + " 2.3222, 2.2682, 2.4363, 2.2415, 2.2521, 2.2521, 2.2318, 2.2013, 2.2961,\n", + " 2.3417, 2.3674, 2.4045, 2.4709, 2.4652, 2.4202, 2.4905, 2.4970, 2.5574,\n", + " 2.5124, 2.3903, 2.4596, 2.3727, 2.3433, 2.1934, 1.3845, 1.8580, 1.7926,\n", + " 1.6145, 1.4788, 1.4832, 1.5292, 1.2409, 0.7050, 0.6892, 1.2544, 1.9028,\n", + " 1.9899, 1.3530, 1.9861]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1283, 1.2933, 0.8209, -0.7797, 1.4195, 0.4671, 0.1076, -0.5079,\n", + " 0.7473, 0.7922, 0.7832, 0.3778, 0.4194, -0.4507, -0.0349, -0.1757,\n", + " 0.6302, -0.9867, -0.4483, 1.0659, -0.3780, -0.2558, -0.6247, 0.7951,\n", + " 0.7176, 0.3650, 0.0030, 0.2696, -0.5703, -0.7387, -0.2203, 0.0049,\n", + " -0.4032, -0.5521, 0.1252, 1.3965, 0.0000, 0.2770, 0.2870, 0.1161,\n", + " 0.7397, 0.3217, -0.2064]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.0157, -0.0480, -0.0227, 0.0208, 0.0188, -0.0155, -0.0349, -0.0403,\n", + " 0.0135, 0.0197, 0.0361, 0.0188, 0.0178, -0.0197, 0.0275, -0.0402,\n", + " -0.0073, -0.0066, -0.0350, 0.0366, -0.0455, 0.0329, 0.0110, 0.0065,\n", + " 0.0598, -0.0013, 0.0313, 0.0279, -0.0315, -0.0199, 0.0141, 0.0101,\n", + " -0.0195, -0.0259, -0.0349, -0.0360, -0.0022, 0.0249, 0.0090, 0.0074,\n", + " 0.0161, 0.0046, 0.0062]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00015595601871609688\n", + "Grad encoder.fc1.bias: 7.828828529454768e-05\n", + "Grad encoder.encoder.0.weight: 6.877581472508609e-05\n", + "Grad encoder.encoder.0.bias: 0.00010961630323436111\n", + "Grad encoder.encoder.2.weight: 6.488058716058731e-05\n", + "Grad encoder.encoder.2.bias: 0.0001668087934376672\n", + "Grad encoder.encoder.4.weight: 0.00014149905473459512\n", + "Grad encoder.encoder.4.bias: 0.00043273469782434404\n", + "Grad decoder.fc1.0.weight: 4.473251465242356e-05\n", + "Grad decoder.fc1.0.bias: 0.0002994294627569616\n", + "Grad decoder.fc1.2.weight: 4.976379932486452e-05\n", + "Grad decoder.fc1.2.bias: 0.0005571279907599092\n", + "Grad decoder.fc1.4.weight: 4.7616322262911126e-05\n", + "Grad decoder.fc1.4.bias: 0.0006140291225165129\n", + "Grad decoder.fc2.weight: 5.145472096046433e-05\n", + "Grad decoder.fc2.bias: 0.0019202356925234199\n", + "Grad _memory_unit.weight_ih_l0: 8.597556188760791e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.161924021493178e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.1777759027609136e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.255288670014124e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.035248952684924e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.22670784953516e-05\n", + "Data X Sample: tensor([[2.6383, 3.0062, 3.1420, 3.2886, 3.5190, 3.6699, 3.8208, 3.8003, 3.8495,\n", + " 3.9588, 3.8258, 3.9281, 3.6507, 3.6098, 3.4500, 3.4394, 3.4545, 3.5302,\n", + " 3.3784, 3.3121, 3.2559, 3.1675, 2.8966, 2.8592, 2.7627, 2.8000, 2.7092,\n", + " 2.8550, 2.8239, 2.7577, 2.7401, 2.8462, 2.9547, 2.1237, 3.5909, 3.9889,\n", + " 4.2338, 4.5770, 5.1278, 5.0785, 1.9186, 1.1670, 1.0913, 2.0552, 2.8383,\n", + " 3.1221, 2.0601, 2.9478]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0706, -0.9240, 0.0302, 0.2048, 0.7744, -0.0926, -1.0446, 0.6808,\n", + " -0.7083, -0.5112, -0.7897, -0.6923, -0.1950, -1.2618, -0.7505, 0.0267,\n", + " -0.0427, -1.0368, -0.5863, -0.0858, -0.3053, -0.4752, -0.2049, -0.7204,\n", + " -0.3595, 0.1419, 0.7379, -0.7751, -1.2272, 0.3417, 1.4910, 0.3782,\n", + " 0.7128, 0.0237, 0.6396, -0.3636, -0.9268, 0.8274, -0.7130, -0.0146,\n", + " 0.2294, -0.2666, 1.8182]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.0325, -0.0950, -0.0615, 0.0116, 0.0863, -0.0420, -0.0068, 0.0097,\n", + " -0.0202, -0.0439, 0.1444, 0.0205, -0.0617, -0.1089, -0.0529, -0.0899,\n", + " 0.0636, -0.0468, -0.0523, 0.0764, -0.0927, 0.0836, -0.0210, 0.0430,\n", + " 0.1323, 0.0501, 0.0166, 0.0162, -0.1165, -0.0386, -0.0025, -0.0537,\n", + " -0.0268, -0.0929, -0.0663, -0.0910, -0.0205, -0.0057, 0.0390, 0.0593,\n", + " 0.0479, 0.0775, 0.0839]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 7.58562600822188e-05\n", + "Grad encoder.fc1.bias: 2.9042672395007685e-05\n", + "Grad encoder.encoder.0.weight: 4.350837480160408e-05\n", + "Grad encoder.encoder.0.bias: 4.894780431641266e-05\n", + "Grad encoder.encoder.2.weight: 3.5602708521764725e-05\n", + "Grad encoder.encoder.2.bias: 6.206378748174757e-05\n", + "Grad encoder.encoder.4.weight: 0.00011622787860687822\n", + "Grad encoder.encoder.4.bias: 0.00019876565784215927\n", + "Grad decoder.fc1.0.weight: 3.984891372965649e-05\n", + "Grad decoder.fc1.0.bias: 0.00018795111100189388\n", + "Grad decoder.fc1.2.weight: 5.752961078542285e-05\n", + "Grad decoder.fc1.2.bias: 0.00041667991899885237\n", + "Grad decoder.fc1.4.weight: 5.561729267355986e-05\n", + "Grad decoder.fc1.4.bias: 0.0005467993323691189\n", + "Grad decoder.fc2.weight: 8.015456842258573e-05\n", + "Grad decoder.fc2.bias: 0.002570564392954111\n", + "Grad _memory_unit.weight_ih_l0: 8.231237188738305e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.2212159163027536e-05\n", + "Grad _memory_unit.bias_hh_l0: 7.1194313022715505e-06\n", + "Grad _memory_unit.weight_ih_l1: 5.099248483020347e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.19557181885466e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.2473372155218385e-05\n", + "Data X Sample: tensor([[1.3504, 1.5279, 1.7010, 1.8673, 1.9038, 2.1230, 1.9767, 1.8214, 3.1782,\n", + " 4.2874, 4.3016, 4.3897, 3.9547, 3.8661, 3.7879, 3.7963, 3.7611, 3.5902,\n", + " 3.6324, 3.5279, 3.5332, 3.2930, 2.9978, 2.8783, 2.8865, 3.0115, 2.9410,\n", + " 2.8468, 3.0772, 3.1343, 3.1811, 3.3574, 3.7973, 2.8538, 4.6645, 4.9763,\n", + " 5.0833, 5.4039, 6.0849, 5.9466, 1.1407, 0.6333, 0.6063, 1.1281, 1.6332,\n", + " 1.8756, 1.1898, 1.7124]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4358, -0.3594, -0.7974, -1.0760, -0.3521, -0.1541, -0.0035, 0.3341,\n", + " 2.3051, 0.6950, 0.7200, -0.8142, 0.1392, 0.3662, 0.0923, -0.5592,\n", + " -0.3656, 0.1515, 1.7384, -2.1481, 0.6506, 0.6198, -0.1417, -0.1197,\n", + " -0.4597, 0.9590, -0.2344, 0.8523, -0.6966, 0.6480, 0.3512, -0.6696,\n", + " -0.2380, 0.1986, -0.8825, 0.3455, 0.0000, -0.7815, -0.0068, 0.6006,\n", + " 0.7620, 1.2158, 0.6102]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.0364, -0.1587, -0.0867, 0.0038, 0.0988, -0.0854, 0.0034, 0.0195,\n", + " 0.0304, -0.0941, 0.1994, 0.0504, -0.0617, -0.1380, -0.1046, -0.1487,\n", + " 0.0689, -0.0847, -0.0612, 0.0636, -0.0927, 0.1189, -0.0817, 0.0183,\n", + " 0.1896, 0.0963, 0.0047, -0.0458, -0.1772, -0.0455, -0.0332, -0.0415,\n", + " 0.0104, -0.1182, -0.1121, -0.1255, -0.0231, 0.0196, 0.0283, 0.1105,\n", + " 0.0836, 0.1116, 0.0879]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00011654828995233402\n", + "Grad encoder.fc1.bias: 4.473655280889943e-05\n", + "Grad encoder.encoder.0.weight: 4.335006087785587e-05\n", + "Grad encoder.encoder.0.bias: 4.941381121170707e-05\n", + "Grad encoder.encoder.2.weight: 5.0322960305493325e-05\n", + "Grad encoder.encoder.2.bias: 7.74177024140954e-05\n", + "Grad encoder.encoder.4.weight: 0.00012375490041449666\n", + "Grad encoder.encoder.4.bias: 0.00025085959350690246\n", + "Grad decoder.fc1.0.weight: 5.2847804909106344e-05\n", + "Grad decoder.fc1.0.bias: 0.00023653189418837428\n", + "Grad decoder.fc1.2.weight: 6.877461419207975e-05\n", + "Grad decoder.fc1.2.bias: 0.0004375304561108351\n", + "Grad decoder.fc1.4.weight: 6.415724055841565e-05\n", + "Grad decoder.fc1.4.bias: 0.0006833568913862109\n", + "Grad decoder.fc2.weight: 8.408240682911128e-05\n", + "Grad decoder.fc2.bias: 0.0021253509912639856\n", + "Grad _memory_unit.weight_ih_l0: 1.3541255611926317e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.765881825122051e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.0142042810912244e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.144269147829618e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.700856490875594e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.0745923140784726e-05\n", + "Data X Sample: tensor([[1.3706, 1.6357, 1.7160, 1.9438, 2.0489, 2.1672, 2.3218, 2.3239, 2.4386,\n", + " 2.4849, 2.5569, 2.4733, 2.3990, 2.4102, 2.2949, 2.2537, 2.2831, 2.2961,\n", + " 2.3768, 2.2168, 2.2647, 2.3331, 2.2628, 2.2732, 2.2897, 2.3063, 2.3043,\n", + " 2.2636, 2.0052, 2.0666, 2.1487, 2.1222, 2.1406, 1.4578, 2.1055, 2.0406,\n", + " 1.8583, 1.6405, 1.5529, 1.4101, 1.1263, 0.6313, 0.6629, 1.0907, 1.6332,\n", + " 1.9213, 1.3054, 1.9470]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.8845, 0.3122, 0.1366, 0.0111, -0.4372, -1.1291, -1.9877, -0.9260,\n", + " -0.6579, -1.0596, -0.9297, 0.0061, -4.2844, 0.1387, 1.2293, 0.8714,\n", + " 0.3687, 0.0546, 0.3908, 0.1433, 0.3825, 0.8502, 0.0296, 0.3740,\n", + " -1.0741, -0.1258, -1.7049, 1.1212, 0.6777, 0.6426, 0.9459, 0.4749,\n", + " 0.0310, -0.2673, 0.4113, -0.2057, -1.0293, -0.8483, -0.4704, -0.6442,\n", + " -0.3850, -0.2322, -0.3288]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.0268, -0.0626, -0.0049, 0.0037, -0.0025, -0.0279, -0.0454, -0.0459,\n", + " 0.0064, 0.0362, 0.0291, 0.0050, 0.0504, -0.0041, 0.0145, -0.0367,\n", + " -0.0352, -0.0028, -0.0556, 0.0309, -0.0430, -0.0004, -0.0311, -0.0274,\n", + " 0.0595, 0.0244, 0.0472, 0.0091, -0.0074, 0.0075, 0.0362, 0.0324,\n", + " 0.0054, -0.0114, -0.0529, -0.0252, 0.0092, 0.0219, 0.0071, 0.0419,\n", + " 0.0276, 0.0128, -0.0266]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00013101089280098677\n", + "Grad encoder.fc1.bias: 4.830402758670971e-05\n", + "Grad encoder.encoder.0.weight: 5.413032340584323e-05\n", + "Grad encoder.encoder.0.bias: 5.946305100223981e-05\n", + "Grad encoder.encoder.2.weight: 5.5119679018389434e-05\n", + "Grad encoder.encoder.2.bias: 0.00010780931916087866\n", + "Grad encoder.encoder.4.weight: 0.00017070861940737814\n", + "Grad encoder.encoder.4.bias: 0.000373210059478879\n", + "Grad decoder.fc1.0.weight: 5.528995461645536e-05\n", + "Grad decoder.fc1.0.bias: 0.00029365677619352937\n", + "Grad decoder.fc1.2.weight: 4.446891398401931e-05\n", + "Grad decoder.fc1.2.bias: 0.0003460936131887138\n", + "Grad decoder.fc1.4.weight: 4.673952207667753e-05\n", + "Grad decoder.fc1.4.bias: 0.0005827822024002671\n", + "Grad decoder.fc2.weight: 6.977077282499522e-05\n", + "Grad decoder.fc2.bias: 0.0019616561476141214\n", + "Grad _memory_unit.weight_ih_l0: 1.18873667815933e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.8668666598387063e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.0552779713179916e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.221025498438394e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.226609548320994e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.32253439410124e-05\n", + "Data X Sample: tensor([[1.3579, 1.5002, 1.6454, 1.7142, 1.7655, 1.9609, 2.1877, 2.1990, 3.8299,\n", + " 4.4074, 4.3683, 4.2144, 3.9836, 4.0161, 3.7551, 3.7061, 3.5253, 3.6385,\n", + " 3.5849, 3.7157, 3.5086, 3.5364, 2.8628, 2.8592, 2.8865, 2.9619, 3.0875,\n", + " 3.0385, 3.2680, 3.3636, 3.4610, 3.5149, 3.8941, 2.7485, 4.6572, 4.8864,\n", + " 4.9870, 5.4701, 5.9454, 5.9211, 1.0500, 0.5815, 0.6103, 1.0620, 1.6332,\n", + " 1.5725, 1.0606, 1.6811]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3229, -0.3779, 0.2249, 0.8131, 0.1135, 0.7413, 0.3628, 0.7357,\n", + " 0.5985, 1.0843, 0.6835, -0.5477, -1.2893, 0.0977, -1.1084, -0.8576,\n", + " -0.2310, 1.4506, -0.5843, 2.5455, -0.3468, -0.3170, -1.5679, -1.0120,\n", + " 0.7508, -0.7128, -1.1682, -1.2020, -0.3960, -0.7549, -1.3854, -0.6272,\n", + " -0.5635, -1.4729, -0.4833, -0.2115, -0.2469, -0.1625, -0.5988, 0.5289,\n", + " 0.2582, 0.5276, -0.1922]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1001, -0.2119, -0.1168, -0.0171, 0.0846, -0.1276, 0.0266, 0.0971,\n", + " 0.0623, -0.1081, 0.2360, 0.0710, -0.0709, -0.1681, -0.1748, -0.2150,\n", + " 0.0847, -0.1298, -0.0514, 0.0755, -0.0969, 0.1530, -0.1259, -0.0323,\n", + " 0.2024, 0.1700, -0.0275, -0.0821, -0.2288, -0.0481, -0.0646, -0.0420,\n", + " 0.0197, -0.1247, -0.1489, -0.1587, -0.0406, -0.0206, 0.0413, 0.1445,\n", + " 0.1433, 0.1667, 0.1292]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001354703854303807\n", + "Grad encoder.fc1.bias: 6.0732032579835504e-05\n", + "Grad encoder.encoder.0.weight: 5.2921332098776475e-05\n", + "Grad encoder.encoder.0.bias: 6.547992961714044e-05\n", + "Grad encoder.encoder.2.weight: 5.489822069648653e-05\n", + "Grad encoder.encoder.2.bias: 0.0001117392530431971\n", + "Grad encoder.encoder.4.weight: 0.00015976901340764016\n", + "Grad encoder.encoder.4.bias: 0.0002774382883217186\n", + "Grad decoder.fc1.0.weight: 6.349844625219703e-05\n", + "Grad decoder.fc1.0.bias: 0.0002883257402572781\n", + "Grad decoder.fc1.2.weight: 7.373082189587876e-05\n", + "Grad decoder.fc1.2.bias: 0.0004178449744358659\n", + "Grad decoder.fc1.4.weight: 6.297741492744535e-05\n", + "Grad decoder.fc1.4.bias: 0.000557794701308012\n", + "Grad decoder.fc2.weight: 9.402028081240132e-05\n", + "Grad decoder.fc2.bias: 0.002240361412987113\n", + "Grad _memory_unit.weight_ih_l0: 9.389880688104313e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.4142889995127916e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.002503818715923e-06\n", + "Grad _memory_unit.weight_ih_l1: 7.239233582367888e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.714450526284054e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.056392233702354e-05\n", + "Data X Sample: tensor([[1.4109, 1.5454, 1.8332, 2.0488, 2.0592, 2.1200, 2.1585, 2.0428, 3.3320,\n", + " 4.1957, 4.3746, 4.2514, 4.1056, 4.0134, 3.9039, 3.5666, 3.5567, 3.7062,\n", + " 3.5580, 3.5427, 3.5602, 3.2425, 3.0122, 2.8268, 2.9222, 2.9358, 2.9277,\n", + " 3.0875, 3.1569, 3.2817, 3.3315, 3.4210, 3.9073, 2.8858, 4.7675, 5.0371,\n", + " 5.1364, 5.5602, 6.0532, 6.0204, 1.1120, 0.6393, 0.6770, 1.2113, 1.7006,\n", + " 2.0700, 1.3394, 1.8766]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5127, 0.2543, 0.5108, 0.6697, 0.6288, 0.4932, 0.3121, 0.1970,\n", + " -0.9763, -0.7257, -0.2070, -0.1733, -0.3593, -0.0997, -1.4797, -0.1254,\n", + " -0.1855, 1.1282, 1.1182, 0.0831, 0.4313, -1.0997, -0.0735, -0.1475,\n", + " -0.9175, -0.6737, -0.4181, -0.2501, -0.8842, -0.0208, 0.3139, 0.3205,\n", + " 0.8733, -0.5806, -0.6233, 1.3035, 1.0412, 0.3449, 0.7044, -0.1252,\n", + " -0.5601, -1.2288, -0.4818]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1139, -0.2226, -0.1268, -0.0156, 0.0666, -0.1341, 0.0255, 0.1094,\n", + " 0.0568, -0.0633, 0.2430, 0.0495, -0.0742, -0.1831, -0.1878, -0.2318,\n", + " 0.0779, -0.1372, -0.0768, 0.0919, -0.1012, 0.1432, -0.1393, -0.0524,\n", + " 0.1933, 0.1968, -0.0198, -0.0589, -0.2101, -0.0481, -0.0726, -0.0512,\n", + " 0.0119, -0.1375, -0.1568, -0.1482, -0.0556, -0.0500, 0.0484, 0.1612,\n", + " 0.1580, 0.1927, 0.1255]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002681819605641067\n", + "Grad encoder.fc1.bias: 9.89282489172183e-05\n", + "Grad encoder.encoder.0.weight: 0.00011264100612606853\n", + "Grad encoder.encoder.0.bias: 0.00012562275514937937\n", + "Grad encoder.encoder.2.weight: 0.00011831340088974684\n", + "Grad encoder.encoder.2.bias: 0.0002197995490860194\n", + "Grad encoder.encoder.4.weight: 0.00032741177710704505\n", + "Grad encoder.encoder.4.bias: 0.0007408825913444161\n", + "Grad decoder.fc1.0.weight: 0.00011840357183245942\n", + "Grad decoder.fc1.0.bias: 0.0005485680885612965\n", + "Grad decoder.fc1.2.weight: 0.00011354147136444226\n", + "Grad decoder.fc1.2.bias: 0.0007729992503300309\n", + "Grad decoder.fc1.4.weight: 9.545210923533887e-05\n", + "Grad decoder.fc1.4.bias: 0.0009130099206231534\n", + "Grad decoder.fc2.weight: 0.00010792051034513861\n", + "Grad decoder.fc2.bias: 0.0028267749585211277\n", + "Grad _memory_unit.weight_ih_l0: 2.8578984711202793e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.29963183705695e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.4658429538249038e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.7150012354250066e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001408058451488614\n", + "Grad _memory_unit.bias_hh_l1: 7.587175059597939e-05\n", + "Data X Sample: tensor([[1.4841, 1.7726, 1.9444, 2.1122, 2.1787, 2.3130, 2.3033, 2.4701, 2.3897,\n", + " 2.4865, 2.5347, 2.5532, 2.4567, 2.3966, 2.3428, 2.3248, 2.3082, 2.4199,\n", + " 2.4140, 2.3693, 2.4536, 2.5229, 2.4773, 2.4832, 2.4568, 2.4212, 2.3656,\n", + " 2.4227, 2.2654, 2.2860, 2.2432, 2.3654, 2.2220, 1.4326, 1.9045, 1.7439,\n", + " 1.5968, 1.4444, 1.5276, 1.5916, 1.1788, 0.7289, 0.7397, 1.3032, 1.9187,\n", + " 2.1844, 1.3462, 1.9392]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.1223, 0.5531, 0.8098, 0.5458, -0.7820, 0.2636, -1.4761, -1.6764,\n", + " -0.5509, -1.0891, -0.0176, 0.1715, -0.1379, 0.1461, 0.7713, -0.4600,\n", + " -0.2962, -0.2695, 0.1218, -0.3472, -0.5528, 0.1489, 1.8512, -0.1237,\n", + " 0.3905, 0.3947, 0.1723, -0.2215, 0.7221, 1.0686, 0.6886, 1.0054,\n", + " 1.2789, 0.0443, 0.1060, 0.4499, 0.2389, 0.5703, -0.4557, -0.4599,\n", + " -0.5829, -0.9922, 1.2841]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.0327, -0.0647, 0.0028, -0.0094, -0.0117, -0.0314, -0.0525, -0.0357,\n", + " 0.0059, 0.0354, 0.0061, 0.0031, 0.0769, 0.0202, 0.0197, -0.0427,\n", + " -0.0603, -0.0041, -0.0442, 0.0381, -0.0292, 0.0035, -0.0237, -0.0564,\n", + " 0.0340, 0.0401, 0.0554, 0.0057, -0.0016, 0.0237, 0.0384, 0.0610,\n", + " 0.0071, 0.0020, -0.0764, -0.0256, -0.0108, 0.0345, 0.0239, 0.0410,\n", + " 0.0314, 0.0230, -0.0385]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00017469195881858468\n", + "Grad encoder.fc1.bias: 6.522225157823414e-05\n", + "Grad encoder.encoder.0.weight: 7.436025043716654e-05\n", + "Grad encoder.encoder.0.bias: 8.142440492520109e-05\n", + "Grad encoder.encoder.2.weight: 8.56199039844796e-05\n", + "Grad encoder.encoder.2.bias: 0.00015918792632874101\n", + "Grad encoder.encoder.4.weight: 0.0002406066923867911\n", + "Grad encoder.encoder.4.bias: 0.0004658913239836693\n", + "Grad decoder.fc1.0.weight: 8.578988490626216e-05\n", + "Grad decoder.fc1.0.bias: 0.00042722499347291887\n", + "Grad decoder.fc1.2.weight: 8.100667037069798e-05\n", + "Grad decoder.fc1.2.bias: 0.000585385481826961\n", + "Grad decoder.fc1.4.weight: 5.98479418840725e-05\n", + "Grad decoder.fc1.4.bias: 0.000652216374874115\n", + "Grad decoder.fc2.weight: 8.14255399745889e-05\n", + "Grad decoder.fc2.bias: 0.0015629995614290237\n", + "Grad _memory_unit.weight_ih_l0: 1.5653287846362218e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.479082831996493e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.3888748071622103e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.892874004435726e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.562757284380496e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.674536467064172e-05\n", + "Data X Sample: tensor([[2.5683, 2.9509, 3.1720, 3.3673, 3.3705, 3.6007, 3.7438, 3.6697, 3.9032,\n", + " 3.8671, 3.9368, 4.1540, 3.8415, 3.8389, 3.8282, 3.6828, 3.5693, 3.5631,\n", + " 3.4630, 3.3772, 3.3565, 3.3052, 3.0267, 2.9337, 2.9823, 2.9697, 2.9250,\n", + " 3.0426, 2.8239, 2.8723, 2.9256, 3.0341, 3.1131, 2.2244, 3.5689, 3.9889,\n", + " 4.1375, 4.3173, 4.7158, 4.7777, 1.9806, 1.1192, 1.0752, 1.9375, 2.9731,\n", + " 3.1050, 2.1417, 2.8540]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1585, 0.6448, 0.9805, 0.5646, 0.1160, 0.4875, 0.1693, 0.4895,\n", + " -0.5783, -0.5246, -0.5928, 0.6749, -0.0428, -0.6859, -0.9230, -0.7271,\n", + " -1.2327, -0.4225, -0.9289, -0.0511, 0.4239, 1.3048, 1.2021, 0.1515,\n", + " -0.1714, -0.6812, 0.8118, 1.0220, 0.8311, 0.7763, 0.9381, -1.2818,\n", + " 0.0781, -0.6214, 0.7141, -0.8483, -0.0333, -0.4031, 0.4008, -0.1470,\n", + " -0.9518, 0.1726, 1.1572]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.0646, -0.1319, -0.0478, -0.0349, 0.0592, -0.0520, 0.0458, 0.0128,\n", + " 0.0132, 0.0003, 0.1092, 0.0234, -0.0167, -0.1048, -0.0947, -0.1159,\n", + " -0.0292, -0.0697, -0.0540, 0.0615, -0.0505, 0.0303, -0.0523, -0.0249,\n", + " 0.0514, 0.1006, -0.0071, 0.0117, -0.0956, -0.0109, -0.0159, -0.0089,\n", + " 0.0003, -0.1324, -0.1057, -0.0732, -0.0225, -0.0380, 0.0345, 0.1030,\n", + " 0.0864, 0.1034, 0.0805]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00016562016389798373\n", + "Grad encoder.fc1.bias: 6.057642895029858e-05\n", + "Grad encoder.encoder.0.weight: 7.496529724448919e-05\n", + "Grad encoder.encoder.0.bias: 8.396919292863458e-05\n", + "Grad encoder.encoder.2.weight: 8.478248491883278e-05\n", + "Grad encoder.encoder.2.bias: 0.000174171436810866\n", + "Grad encoder.encoder.4.weight: 0.00021154253045096993\n", + "Grad encoder.encoder.4.bias: 0.0004556691274046898\n", + "Grad decoder.fc1.0.weight: 6.957795994821936e-05\n", + "Grad decoder.fc1.0.bias: 0.0003873988753184676\n", + "Grad decoder.fc1.2.weight: 5.462273475131951e-05\n", + "Grad decoder.fc1.2.bias: 0.0004430100379977375\n", + "Grad decoder.fc1.4.weight: 6.095365824876353e-05\n", + "Grad decoder.fc1.4.bias: 0.0007206443115137517\n", + "Grad decoder.fc2.weight: 8.18222833913751e-05\n", + "Grad decoder.fc2.bias: 0.00143832853063941\n", + "Grad _memory_unit.weight_ih_l0: 1.3307817425811663e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.7158304874319583e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.5102943507372402e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.650600648252293e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.129889076575637e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.9170528654940426e-05\n", + "Data X Sample: tensor([[2.6447, 2.9465, 2.2344, 1.9548, 2.2624, 2.2836, 3.7068, 3.9664, 4.0862,\n", + " 3.9161, 4.1272, 4.0352, 3.9814, 3.7598, 3.6341, 3.5502, 3.6039, 3.5844,\n", + " 3.5704, 3.5130, 3.3614, 3.3297, 3.0219, 2.9127, 2.7702, 2.8104, 2.7146,\n", + " 2.7204, 2.7025, 2.7184, 2.8381, 2.7357, 3.0845, 2.2816, 3.9316, 4.3196,\n", + " 4.4895, 4.9798, 5.5398, 5.4331, 1.8613, 0.9141, 0.8569, 1.3405, 1.9147,\n", + " 1.8699, 1.3802, 1.9470]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1838, 0.0902, 0.7909, -0.0875, -0.5777, -1.5393, -1.6290, -1.5913,\n", + " -0.3578, -0.8062, -0.2520, 0.8483, 0.1880, 0.1216, 0.0122, 0.3526,\n", + " -0.2832, 0.6333, -0.8039, -0.2782, 0.4150, 2.6178, -0.7957, 1.0132,\n", + " 0.0919, 0.8460, 1.1681, 1.2133, 1.0232, 0.8470, 0.2224, 0.0861,\n", + " -0.1073, -1.1154, 0.5436, 0.7393, -0.2571, 0.5567, 0.5479, 0.5499,\n", + " 0.8435, -0.2072, -0.3058]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1206, -0.1672, -0.0487, -0.0508, 0.1219, -0.0575, 0.1105, 0.0285,\n", + " 0.0047, -0.0727, 0.1544, 0.0224, -0.0432, -0.1831, -0.1747, -0.1814,\n", + " 0.0104, -0.0872, -0.0357, 0.0583, -0.0686, 0.0609, -0.0369, -0.0052,\n", + " 0.0474, 0.1419, -0.0420, -0.0196, -0.1554, -0.0415, -0.0563, -0.0398,\n", + " -0.0197, -0.2009, -0.1154, -0.1472, -0.0269, -0.0370, 0.0352, 0.1800,\n", + " 0.1003, 0.1617, 0.1613]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00014775678573641926\n", + "Grad encoder.fc1.bias: 5.9108235291205347e-05\n", + "Grad encoder.encoder.0.weight: 6.183025834616274e-05\n", + "Grad encoder.encoder.0.bias: 8.305103983730078e-05\n", + "Grad encoder.encoder.2.weight: 6.96661154506728e-05\n", + "Grad encoder.encoder.2.bias: 0.00014268403174355626\n", + "Grad encoder.encoder.4.weight: 0.00016665735165588558\n", + "Grad encoder.encoder.4.bias: 0.00036463732249103487\n", + "Grad decoder.fc1.0.weight: 5.202555257710628e-05\n", + "Grad decoder.fc1.0.bias: 0.00030801037792116404\n", + "Grad decoder.fc1.2.weight: 5.242582119535655e-05\n", + "Grad decoder.fc1.2.bias: 0.0004637989623006433\n", + "Grad decoder.fc1.4.weight: 5.137463813298382e-05\n", + "Grad decoder.fc1.4.bias: 0.0006721830577589571\n", + "Grad decoder.fc2.weight: 0.00010172134352615103\n", + "Grad decoder.fc2.bias: 0.0020012506283819675\n", + "Grad _memory_unit.weight_ih_l0: 9.250144103134517e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.896929279610049e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.071543556463439e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.1038349485897925e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.0632220993284136e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.233762981835753e-05\n", + "Data X Sample: tensor([[2.7783, 2.3421, 2.0300, 2.0575, 2.1087, 2.1451, 3.4634, 4.1041, 4.2034,\n", + " 4.2526, 4.2699, 4.2163, 4.1944, 3.9397, 3.8913, 3.5803, 3.5300, 3.6540,\n", + " 3.7397, 3.4851, 3.3173, 3.4292, 2.9689, 2.9298, 2.8697, 2.9305, 2.8398,\n", + " 2.9243, 2.9904, 2.9312, 2.9431, 3.0673, 3.3749, 2.4487, 4.1032, 4.4413,\n", + " 4.8120, 5.2899, 5.9137, 5.8388, 1.4509, 0.8165, 0.7114, 1.2429, 1.8037,\n", + " 2.0071, 1.2510, 1.8375]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6796, 0.3260, -2.1592, -0.7482, -0.1468, -0.1772, 0.0793, 0.0761,\n", + " 0.6332, -0.7272, -0.5448, -0.7625, 0.7204, -1.1452, -0.2982, -1.1815,\n", + " -1.4877, 0.2280, 0.9050, 0.8570, -1.1403, 0.1438, -0.9038, 0.7460,\n", + " -0.1113, 0.3733, -0.1058, 0.7271, 0.1575, 0.7561, 0.0831, -0.8101,\n", + " 0.3448, -0.3421, -0.9014, -0.1584, 0.7333, 0.9172, 0.1391, -0.5035,\n", + " -0.4068, -0.3058, -0.7132]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1788, -0.1993, -0.0438, -0.0416, 0.1768, -0.0500, 0.1395, 0.0321,\n", + " 0.0278, -0.1027, 0.1853, 0.0361, -0.0591, -0.2510, -0.2196, -0.2358,\n", + " 0.0289, -0.1149, -0.0451, 0.0385, -0.0749, 0.0879, -0.0372, -0.0154,\n", + " 0.0494, 0.1739, -0.0687, -0.0420, -0.2088, -0.0608, -0.0896, -0.0509,\n", + " -0.0328, -0.2429, -0.1311, -0.2176, -0.0032, -0.0243, 0.0209, 0.2645,\n", + " 0.1336, 0.1937, 0.1966]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002966426545754075\n", + "Grad encoder.fc1.bias: 0.0001496870390838012\n", + "Grad encoder.encoder.0.weight: 0.00011246701615164056\n", + "Grad encoder.encoder.0.bias: 0.00016679409600328654\n", + "Grad encoder.encoder.2.weight: 9.981605398934335e-05\n", + "Grad encoder.encoder.2.bias: 0.000290706375380978\n", + "Grad encoder.encoder.4.weight: 0.0002599564322736114\n", + "Grad encoder.encoder.4.bias: 0.0008421152597293258\n", + "Grad decoder.fc1.0.weight: 7.855428702896461e-05\n", + "Grad decoder.fc1.0.bias: 0.0005427950527518988\n", + "Grad decoder.fc1.2.weight: 6.0533115174621344e-05\n", + "Grad decoder.fc1.2.bias: 0.0006799745606258512\n", + "Grad decoder.fc1.4.weight: 6.6819840867538e-05\n", + "Grad decoder.fc1.4.bias: 0.0009723472176119685\n", + "Grad decoder.fc2.weight: 8.136945689329877e-05\n", + "Grad decoder.fc2.bias: 0.0024223392829298973\n", + "Grad _memory_unit.weight_ih_l0: 1.5238522792060394e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.122204700252041e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.2510539565701038e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.143765055341646e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00012299453373998404\n", + "Grad _memory_unit.bias_hh_l1: 6.553814455401152e-05\n", + "Data X Sample: tensor([[1.3611, 1.5250, 1.7085, 1.8061, 1.9687, 1.9049, 1.9782, 1.8001, 3.1465,\n", + " 4.0314, 4.2477, 4.1287, 3.9947, 3.9834, 3.9140, 3.6363, 3.6668, 3.4896,\n", + " 3.3020, 3.2433, 3.3369, 3.3558, 2.9014, 2.7332, 2.7176, 2.7791, 2.8265,\n", + " 2.9651, 2.8759, 2.8919, 3.0376, 3.1778, 3.5487, 2.6043, 4.3263, 4.7161,\n", + " 4.9811, 5.2607, 5.7299, 5.7083, 1.0595, 0.6154, 0.6184, 1.1338, 1.5540,\n", + " 1.8184, 1.1558, 1.5951]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.7260, -0.8748, -0.1245, 0.6065, -1.1642, -0.5563, 0.4428, 0.5985,\n", + " 0.4000, 0.4779, 0.3714, -0.1676, -0.1974, -1.4578, 0.1496, -0.6340,\n", + " -0.8258, 0.3635, -0.6457, -1.3525, -2.0442, -0.5524, 0.1074, -0.3089,\n", + " -1.0362, -0.9699, -0.3599, -0.0126, 0.3243, 0.0319, 0.1195, 0.1438,\n", + " -0.9476, -0.7160, -1.0271, 0.0918, 0.4717, -0.1765, -0.0131, 0.7465,\n", + " 0.7384, 0.3417, -0.1250]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1251, -0.2129, -0.0191, -0.0594, 0.1536, 0.0123, 0.1110, 0.0287,\n", + " 0.0231, -0.1285, 0.1678, 0.0144, -0.0425, -0.2251, -0.2001, -0.2219,\n", + " -0.0047, -0.0984, -0.0498, 0.0235, -0.0307, 0.1125, -0.0336, -0.0115,\n", + " 0.0449, 0.1523, -0.0657, -0.0541, -0.2284, -0.0407, -0.1069, -0.0115,\n", + " -0.0308, -0.2281, -0.1262, -0.2202, -0.0239, 0.0027, 0.0245, 0.2398,\n", + " 0.1308, 0.1763, 0.1546]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005003680707886815\n", + "Grad encoder.fc1.bias: 0.00018270648433826864\n", + "Grad encoder.encoder.0.weight: 0.0001882487558759749\n", + "Grad encoder.encoder.0.bias: 0.00021060007566120476\n", + "Grad encoder.encoder.2.weight: 0.00015520118176937103\n", + "Grad encoder.encoder.2.bias: 0.00030288263224065304\n", + "Grad encoder.encoder.4.weight: 0.00043271860340610147\n", + "Grad encoder.encoder.4.bias: 0.0009179447661153972\n", + "Grad decoder.fc1.0.weight: 0.0001156773287220858\n", + "Grad decoder.fc1.0.bias: 0.0005771616124548018\n", + "Grad decoder.fc1.2.weight: 0.00012215602328069508\n", + "Grad decoder.fc1.2.bias: 0.000848691095598042\n", + "Grad decoder.fc1.4.weight: 9.803341527003795e-05\n", + "Grad decoder.fc1.4.bias: 0.0008319992339238524\n", + "Grad decoder.fc2.weight: 0.00014466072025243193\n", + "Grad decoder.fc2.bias: 0.0026848295237869024\n", + "Grad _memory_unit.weight_ih_l0: 2.6985848307958804e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.9610320527572185e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.277432577102445e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.6163901818799786e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001522980455774814\n", + "Grad _memory_unit.bias_hh_l1: 8.22304209577851e-05\n", + "Data X Sample: tensor([[2.4993, 3.0135, 3.1450, 3.2514, 3.4285, 3.5741, 3.7269, 3.8770, 3.8543,\n", + " 3.9904, 4.0257, 3.8716, 3.8149, 3.8225, 3.6946, 3.5324, 3.5976, 3.6037,\n", + " 3.5456, 3.3382, 3.2633, 3.3022, 2.9689, 2.9184, 2.8434, 2.8365, 2.8025,\n", + " 2.7938, 2.7927, 2.8494, 2.9501, 2.9015, 2.9679, 2.1375, 3.5762, 4.0399,\n", + " 4.2889, 4.5717, 5.0961, 4.9706, 2.0093, 1.1610, 1.1621, 1.9346, 2.8621,\n", + " 3.1393, 2.1893, 3.1120]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1555, -0.0367, -0.4750, -1.3760, -0.6322, 0.4936, 0.1463, -0.3702,\n", + " -0.5025, -0.1301, 0.1139, -0.7200, -1.0121, 1.0976, -0.4110, 0.4088,\n", + " -0.3362, -0.3055, -0.2026, 0.0224, 0.2911, 0.5209, 0.3831, 0.6804,\n", + " -0.8776, -1.0750, 0.1339, -0.2673, 0.0683, 0.2452, 0.0161, -0.9711,\n", + " -0.1171, -0.2838, 0.0714, 0.5501, 0.0000, -0.3175, -0.4942, -0.2127,\n", + " -0.1572, 0.4605, 0.0981]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1877, -0.1920, -0.0118, -0.0415, 0.1676, -0.0229, 0.1150, 0.0181,\n", + " 0.0352, -0.1046, 0.1374, 0.0254, -0.0567, -0.2504, -0.1867, -0.2042,\n", + " 0.0036, -0.1198, -0.0523, 0.0271, -0.0600, 0.0760, 0.0080, -0.0269,\n", + " 0.0239, 0.1360, -0.0723, -0.0690, -0.1989, -0.0479, -0.1126, -0.0145,\n", + " -0.0642, -0.2241, -0.1241, -0.2202, 0.0171, -0.0138, 0.0026, 0.2574,\n", + " 0.1257, 0.1713, 0.1708]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00032534857746213675\n", + "Grad encoder.fc1.bias: 0.00013130140723660588\n", + "Grad encoder.encoder.0.weight: 0.00012418831465765834\n", + "Grad encoder.encoder.0.bias: 0.00015013577649369836\n", + "Grad encoder.encoder.2.weight: 0.00010074816236738116\n", + "Grad encoder.encoder.2.bias: 0.0002527481992729008\n", + "Grad encoder.encoder.4.weight: 0.0002361733204452321\n", + "Grad encoder.encoder.4.bias: 0.0006420502904802561\n", + "Grad decoder.fc1.0.weight: 7.077985355863348e-05\n", + "Grad decoder.fc1.0.bias: 0.0004311883240006864\n", + "Grad decoder.fc1.2.weight: 5.869439337402582e-05\n", + "Grad decoder.fc1.2.bias: 0.0005088531179353595\n", + "Grad decoder.fc1.4.weight: 5.860564124304801e-05\n", + "Grad decoder.fc1.4.bias: 0.0007508579874411225\n", + "Grad decoder.fc2.weight: 0.00010734111856436357\n", + "Grad decoder.fc2.bias: 0.0020772248972207308\n", + "Grad _memory_unit.weight_ih_l0: 1.1743853065127041e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.45534010900883e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.3187693184590898e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.089232440193882e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.038017014972866e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.798619193024933e-05\n", + "Data X Sample: tensor([[1.6125, 1.8614, 1.9850, 2.1778, 2.3272, 2.3749, 2.4589, 2.5511, 2.6290,\n", + " 2.6745, 2.6647, 2.7771, 2.6431, 2.5193, 2.5068, 2.5614, 2.5457, 2.5824,\n", + " 2.5049, 2.4902, 2.4585, 2.5704, 2.4628, 2.5710, 2.5769, 2.5126, 2.5015,\n", + " 2.5083, 2.4076, 2.4334, 2.4147, 2.3267, 2.3320, 1.5081, 1.9634, 1.9458,\n", + " 1.7049, 1.6564, 1.6100, 1.5803, 1.2266, 0.7090, 0.7276, 1.3433, 1.9147,\n", + " 2.1615, 1.4074, 2.0252]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2382, 0.6008, 0.6455, 0.3326, -0.3833, 0.7193, -0.3816, -0.5666,\n", + " 0.2124, 0.0489, 0.2146, 0.3804, -0.9783, 0.4176, -0.4601, 0.2584,\n", + " -0.1585, 0.6173, -0.0482, 0.2055, 0.0881, -0.0915, -0.3637, -0.0483,\n", + " -0.4548, 0.1933, 0.0623, 1.5808, -0.6025, 0.2987, 0.0638, 0.2856,\n", + " 1.3140, -0.5343, -0.0899, -0.6008, 0.0059, -0.0134, 0.2870, 0.8508,\n", + " 0.0397, 0.4470, -0.3461]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.0715, -0.0626, 0.0773, 0.0013, 0.0309, 0.0421, -0.0859, -0.1444,\n", + " -0.0261, -0.0009, -0.0714, 0.0136, 0.1655, 0.0601, 0.0603, 0.0273,\n", + " -0.0829, 0.0083, -0.0491, 0.0211, -0.0347, -0.0070, 0.0402, -0.0197,\n", + " -0.0197, 0.0245, 0.0846, 0.0126, 0.0587, 0.0754, 0.0613, 0.1247,\n", + " 0.0371, 0.0018, -0.0666, -0.0427, 0.0205, 0.0755, -0.0218, 0.0926,\n", + " -0.0209, 0.0038, -0.0838]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002822059905156493\n", + "Grad encoder.fc1.bias: 0.00016785635671112686\n", + "Grad encoder.encoder.0.weight: 0.00011004539555869997\n", + "Grad encoder.encoder.0.bias: 0.00019477120076771826\n", + "Grad encoder.encoder.2.weight: 0.00010454122093506157\n", + "Grad encoder.encoder.2.bias: 0.00031592807499691844\n", + "Grad encoder.encoder.4.weight: 0.00022014077694620937\n", + "Grad encoder.encoder.4.bias: 0.0007515577599406242\n", + "Grad decoder.fc1.0.weight: 0.00011327808897476643\n", + "Grad decoder.fc1.0.bias: 0.0005780977080576122\n", + "Grad decoder.fc1.2.weight: 0.00010214951180387288\n", + "Grad decoder.fc1.2.bias: 0.0007493873126804829\n", + "Grad decoder.fc1.4.weight: 8.803936361800879e-05\n", + "Grad decoder.fc1.4.bias: 0.0007435449515469372\n", + "Grad decoder.fc2.weight: 0.00012815705849789083\n", + "Grad decoder.fc2.bias: 0.001982638845220208\n", + "Grad _memory_unit.weight_ih_l0: 2.4055187168414705e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.38506540376693e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.4750434022280388e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.1916690709767863e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00012639714987017214\n", + "Grad _memory_unit.bias_hh_l1: 6.868242780910805e-05\n", + "Data X Sample: tensor([[1.4162, 1.5483, 1.6980, 1.8258, 2.0387, 2.1834, 2.1924, 2.1067, 3.0049,\n", + " 4.0915, 4.3112, 4.3682, 4.1079, 3.9152, 3.6643, 3.5885, 3.6117, 3.5534,\n", + " 3.5869, 3.5520, 3.5307, 3.2884, 2.9568, 2.8134, 2.9091, 2.9175, 3.0929,\n", + " 3.1854, 3.0737, 3.2195, 3.3385, 3.3602, 3.9073, 2.8217, 4.6645, 5.0250,\n", + " 5.0951, 5.4357, 5.8947, 5.9750, 1.0834, 0.6353, 0.6023, 1.0477, 1.6253,\n", + " 1.8241, 1.1966, 1.7124]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.0401, 0.2572, -0.3807, 0.0759, -0.6501, 0.3454, -0.4490, 0.7275,\n", + " -0.6518, -0.5967, -0.8328, -0.9694, -0.7721, -0.4449, -1.7597, -1.4416,\n", + " -1.5110, -0.4021, -0.2742, -0.0683, -0.3387, -0.0367, -0.0776, 0.0666,\n", + " -0.1707, -0.5117, -0.0995, 0.0179, 0.5391, 1.6693, 1.4052, 0.7154,\n", + " 0.4393, 0.6834, -0.1794, -0.9722, 0.8233, -0.7806, 0.7936, -0.0518,\n", + " -0.8678, -0.7089, 0.6216]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3281, -0.2994, -0.0717, -0.0432, 0.2531, -0.0761, 0.2201, 0.1317,\n", + " 0.1561, -0.1067, 0.2961, 0.0248, -0.1261, -0.4013, -0.3205, -0.3995,\n", + " -0.0346, -0.1685, -0.0613, -0.0150, -0.0531, 0.1396, -0.0352, -0.0844,\n", + " 0.0412, 0.2470, -0.1081, -0.0973, -0.3486, -0.1486, -0.1997, -0.0656,\n", + " -0.0879, -0.3317, -0.2082, -0.3626, 0.0215, 0.0364, 0.0063, 0.4293,\n", + " 0.2917, 0.3083, 0.2560]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005265429499559104\n", + "Grad encoder.fc1.bias: 0.000266488001216203\n", + "Grad encoder.encoder.0.weight: 0.00019556301413103938\n", + "Grad encoder.encoder.0.bias: 0.000304851564578712\n", + "Grad encoder.encoder.2.weight: 0.0001618437236174941\n", + "Grad encoder.encoder.2.bias: 0.00045242763007991016\n", + "Grad encoder.encoder.4.weight: 0.000387036707252264\n", + "Grad encoder.encoder.4.bias: 0.001243715756572783\n", + "Grad decoder.fc1.0.weight: 0.00015287441783584654\n", + "Grad decoder.fc1.0.bias: 0.000875069061294198\n", + "Grad decoder.fc1.2.weight: 0.00015941078891046345\n", + "Grad decoder.fc1.2.bias: 0.0012479987926781178\n", + "Grad decoder.fc1.4.weight: 0.00014589427155442536\n", + "Grad decoder.fc1.4.bias: 0.0014744065701961517\n", + "Grad decoder.fc2.weight: 0.00021273763559293002\n", + "Grad decoder.fc2.bias: 0.0032688819337636232\n", + "Grad _memory_unit.weight_ih_l0: 2.4660777853569016e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.979004708933644e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.2900461519602686e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.556995266582817e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00017420538642909378\n", + "Grad _memory_unit.bias_hh_l1: 9.45408537518233e-05\n", + "Data X Sample: tensor([[-0.0011, 0.0044, 0.0060, 0.0131, -0.0068, 0.0000, 0.0123, -0.0014,\n", + " 0.0342, 0.0126, 0.0095, 0.0136, 0.0155, 0.0273, 0.0101, -0.0014,\n", + " -0.0409, -0.0290, -0.0351, -0.0242, -0.0294, -0.0230, -0.0145, -0.0324,\n", + " -0.0225, -0.0444, -0.0240, -0.0326, -0.0798, 0.0131, 0.0000, 0.0055,\n", + " 0.0000, 0.0000, 0.0221, 0.0389, 0.0079, 0.0265, 0.0570, 0.0000,\n", + " 0.0191, 0.0199, 0.0040, 0.0115, 0.0079, 0.0057, -0.0408, 0.0000]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.1435, 0.4756, 0.0449, 1.4532, 0.0385, -0.8546, -0.8050, -1.2066,\n", + " -1.4359, -0.9422, -1.4212, -0.2624, 1.0076, -0.0262, -1.1076, -0.0315,\n", + " 0.8129, 0.0638, 1.0384, 0.6215, 1.1380, -0.1329, -0.3045, -0.6039,\n", + " 0.1104, -0.1644, -0.4889, 0.2947, 1.0712, 0.6417, 0.6954, 0.7699,\n", + " 0.2507, 1.2288, 1.0033, 0.5621, 0.7329, 0.8024, -0.5988, -1.1682,\n", + " -0.7399, -1.5292, -0.7467]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.1707, -0.0398, -0.0822, 0.0791, -0.0194, 0.0250, -0.2514, -0.2110,\n", + " -0.0066, 0.0650, -0.0673, -0.0039, 0.1725, 0.1121, 0.2159, 0.1421,\n", + " -0.0898, 0.0257, 0.0067, 0.0857, -0.0858, -0.0105, 0.0871, 0.1038,\n", + " -0.0407, -0.0369, 0.1468, 0.1631, 0.1364, 0.1703, 0.1658, 0.1930,\n", + " 0.1259, 0.0504, -0.1139, 0.0229, -0.0279, 0.0678, 0.0045, -0.0085,\n", + " -0.0975, -0.0496, -0.2296]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000246810435783118\n", + "Grad encoder.fc1.bias: 0.00010939320782199502\n", + "Grad encoder.encoder.0.weight: 8.952599455369636e-05\n", + "Grad encoder.encoder.0.bias: 0.00013481233327183872\n", + "Grad encoder.encoder.2.weight: 6.773851782782003e-05\n", + "Grad encoder.encoder.2.bias: 0.00019330839859321713\n", + "Grad encoder.encoder.4.weight: 0.00017364730592817068\n", + "Grad encoder.encoder.4.bias: 0.0006163072539493442\n", + "Grad decoder.fc1.0.weight: 7.747500785626471e-05\n", + "Grad decoder.fc1.0.bias: 0.0005225669592618942\n", + "Grad decoder.fc1.2.weight: 7.468116382369772e-05\n", + "Grad decoder.fc1.2.bias: 0.0006251290906220675\n", + "Grad decoder.fc1.4.weight: 7.108040153980255e-05\n", + "Grad decoder.fc1.4.bias: 0.0007107463316060603\n", + "Grad decoder.fc2.weight: 0.00013673072680830956\n", + "Grad decoder.fc2.bias: 0.0022417749278247356\n", + "Grad _memory_unit.weight_ih_l0: 1.5628938854206353e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.050500865560025e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.209072954428848e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.050104952417314e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011401603114791214\n", + "Grad _memory_unit.bias_hh_l1: 6.126166408648714e-05\n", + "Data X Sample: tensor([[1.5817, 1.8425, 1.9850, 2.1209, 2.2829, 2.3705, 2.3911, 2.4219, 2.4556,\n", + " 2.4770, 2.5854, 2.5629, 2.4700, 2.4293, 2.4160, 2.4083, 2.3554, 2.5011,\n", + " 2.4987, 2.5032, 2.5419, 2.5474, 2.5881, 2.5290, 2.5281, 2.6223, 2.6320,\n", + " 2.6266, 2.3105, 2.4858, 2.3762, 2.3405, 2.2220, 1.4807, 1.8604, 1.7074,\n", + " 1.6223, 1.4762, 1.5339, 1.6058, 1.2504, 0.7010, 0.7417, 1.3319, 1.8513,\n", + " 2.1215, 1.4414, 2.1268]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.9544, 0.1709, 1.3852, 0.1637, 0.3991, 0.8690, -0.5339, -0.6065,\n", + " -1.0284, -0.4770, -0.3075, 0.3815, -0.5286, 0.5027, 0.4584, 1.0718,\n", + " -0.3003, 0.9293, -0.3215, 1.3759, -1.6224, -1.1015, -1.2590, 0.1676,\n", + " -0.1292, 4.0589, -0.6774, -0.6443, 0.5806, 1.3026, 0.2961, 0.6611,\n", + " 1.2520, 0.1995, -0.7063, 0.0785, 0.0000, 0.0705, 0.2253, -0.4190,\n", + " -0.2921, -1.0022, -0.1578]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 1.1991e-01, -4.1932e-02, 8.9268e-03, 3.0695e-02, -1.3182e-02,\n", + " 6.8257e-03, -1.4050e-01, -1.2237e-01, -1.7497e-02, 2.8485e-02,\n", + " -1.1911e-01, -3.2351e-03, 1.7491e-01, 1.2054e-01, 1.5256e-01,\n", + " 8.6370e-02, -5.0705e-02, 6.9114e-02, 1.5388e-04, 4.3440e-02,\n", + " -6.5369e-02, -4.6055e-04, 2.9869e-02, 9.8780e-03, 2.5263e-02,\n", + " -1.5718e-02, 1.5379e-01, 5.0877e-02, 1.1290e-01, 1.1882e-01,\n", + " 1.5836e-01, 1.2293e-01, 7.0043e-02, 1.0997e-01, -5.1400e-02,\n", + " 1.1038e-02, -7.3408e-03, 8.7073e-02, 1.5042e-02, -6.1722e-03,\n", + " -4.1530e-02, -1.3329e-02, -1.6195e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00023678955039940774\n", + "Grad encoder.fc1.bias: 0.00012534830602817237\n", + "Grad encoder.encoder.0.weight: 8.675674325786531e-05\n", + "Grad encoder.encoder.0.bias: 0.00014302569616120309\n", + "Grad encoder.encoder.2.weight: 7.677286339458078e-05\n", + "Grad encoder.encoder.2.bias: 0.00021074703545309603\n", + "Grad encoder.encoder.4.weight: 0.00017608747293706983\n", + "Grad encoder.encoder.4.bias: 0.0005603116587735713\n", + "Grad decoder.fc1.0.weight: 6.835981184849516e-05\n", + "Grad decoder.fc1.0.bias: 0.0004284817259758711\n", + "Grad decoder.fc1.2.weight: 7.359150185948238e-05\n", + "Grad decoder.fc1.2.bias: 0.0006982005434110761\n", + "Grad decoder.fc1.4.weight: 7.864616782171652e-05\n", + "Grad decoder.fc1.4.bias: 0.0008729270775802433\n", + "Grad decoder.fc2.weight: 0.0001349678059341386\n", + "Grad decoder.fc2.bias: 0.0017437140922993422\n", + "Grad _memory_unit.weight_ih_l0: 1.4692241165903397e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.6313302441849373e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.4432534953812137e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.083045941020828e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.872488251654431e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.753027678816579e-05\n", + "Data X Sample: tensor([[1.5117, 1.6881, 1.8272, 1.9482, 1.9892, 2.1097, 2.1107, 2.2047, 2.2408,\n", + " 2.2242, 2.2492, 2.3974, 2.1727, 2.1812, 2.2041, 2.2305, 2.2108, 2.1800,\n", + " 2.2405, 2.1740, 2.3677, 2.4158, 2.3158, 2.3534, 2.3967, 2.4578, 2.3549,\n", + " 2.3819, 2.2376, 2.3581, 2.3272, 2.3958, 2.2484, 1.4715, 1.9928, 1.8680,\n", + " 1.6892, 1.5027, 1.5973, 1.5916, 1.2266, 0.7428, 0.6912, 1.2802, 1.7839,\n", + " 1.8813, 1.2510, 1.7359]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.6273, 0.3528, 0.6578, 0.8395, -1.3051, -1.4234, -1.4497, -1.3194,\n", + " -0.9798, -1.4264, -1.4986, -0.3728, 1.0594, 0.4797, -2.5041, 1.4892,\n", + " 1.0573, 0.5325, 0.8582, -0.5704, -0.0776, -0.0828, -0.2943, -0.1546,\n", + " 0.1042, 0.0531, 1.3632, 0.5654, 1.5488, 1.6911, 1.2898, 0.5418,\n", + " 0.5940, 1.2149, 1.3561, -0.5428, 0.9953, 0.7178, -0.5252, -1.7797,\n", + " -1.8169, -1.1132, -0.9801]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.1323, -0.0336, -0.0033, 0.0318, -0.0131, 0.0041, -0.1623, -0.1358,\n", + " -0.0254, 0.0303, -0.1288, 0.0016, 0.1786, 0.1306, 0.1727, 0.1027,\n", + " -0.0408, 0.0797, 0.0216, 0.0545, -0.0735, 0.0010, 0.0266, 0.0223,\n", + " 0.0308, -0.0206, 0.1677, 0.0728, 0.1269, 0.1436, 0.1940, 0.1330,\n", + " 0.0841, 0.1293, -0.0608, 0.0192, -0.0112, 0.0911, 0.0275, -0.0267,\n", + " -0.0562, -0.0278, -0.1782]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00045948970364406705\n", + "Grad encoder.fc1.bias: 0.0002446244761813432\n", + "Grad encoder.encoder.0.weight: 0.0001615121291251853\n", + "Grad encoder.encoder.0.bias: 0.00026968345628120005\n", + "Grad encoder.encoder.2.weight: 0.00013729091733694077\n", + "Grad encoder.encoder.2.bias: 0.00040280254324898124\n", + "Grad encoder.encoder.4.weight: 0.0003672885650303215\n", + "Grad encoder.encoder.4.bias: 0.0010953812161460519\n", + "Grad decoder.fc1.0.weight: 0.00011996034299954772\n", + "Grad decoder.fc1.0.bias: 0.0006450720829889178\n", + "Grad decoder.fc1.2.weight: 0.0001277310075238347\n", + "Grad decoder.fc1.2.bias: 0.0009270319133065641\n", + "Grad decoder.fc1.4.weight: 0.00011428867583163083\n", + "Grad decoder.fc1.4.bias: 0.0009932770626619458\n", + "Grad decoder.fc2.weight: 0.00017550513439346105\n", + "Grad decoder.fc2.bias: 0.002056106459349394\n", + "Grad _memory_unit.weight_ih_l0: 2.3585651433677413e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.9542635931866243e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.178532122343313e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.2361670087557286e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001415239239577204\n", + "Grad _memory_unit.bias_hh_l1: 7.523519889218733e-05\n", + "Data X Sample: tensor([[ 0.0180, 0.0189, 0.0225, 0.0087, 0.0085, 0.0236, 0.0185, 0.0142,\n", + " 0.0195, 0.0190, 0.0349, 0.0253, 0.0111, 0.0000, 0.0151, 0.0164,\n", + " -0.1289, -0.1296, -0.1590, -0.1618, -0.1718, -0.1041, -0.1735, -0.1584,\n", + " -0.1370, -0.3134, -0.2771, -0.4772, -0.0902, -0.0884, -0.1190, -0.0553,\n", + " -0.0352, -0.0458, -0.0466, -0.0170, -0.0098, -0.0477, 0.0000, -0.0284,\n", + " -0.0334, -0.0060, 0.0000, 0.0057, -0.0159, -0.0343, 0.0816, -0.0156]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.8175, 1.5359, 1.8956, 0.5484, 0.6279, -1.1034, 0.3634, -1.2921,\n", + " 0.9743, 1.4401, 1.1860, 0.6312, 0.4120, 0.5221, -0.1081, 0.2017,\n", + " -0.3129, -0.0118, -0.3533, 0.1950, -0.3095, -0.6196, 0.5046, 0.0270,\n", + " -0.2016, -0.5550, -0.1432, 1.6944, -1.1280, -0.2240, 1.2968, 0.1891,\n", + " -0.0185, -0.3238, -0.0962, 0.0209, -0.8287, -0.0920, 0.2870, 1.2114,\n", + " 1.6217, 0.6614, -0.7956]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2850, -0.0232, -0.1316, 0.1156, -0.0347, 0.0425, -0.3840, -0.3329,\n", + " -0.0157, 0.0644, -0.1068, 0.0120, 0.2464, 0.1770, 0.3038, 0.2269,\n", + " -0.0693, 0.0263, 0.0636, 0.1123, -0.1212, -0.0034, 0.1026, 0.1613,\n", + " -0.0367, -0.0599, 0.1934, 0.2254, 0.2313, 0.2794, 0.2687, 0.2901,\n", + " 0.2337, 0.0902, -0.1460, 0.0546, -0.0066, 0.0895, 0.0274, -0.0276,\n", + " -0.1884, -0.0995, -0.3640]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00019923498621210456\n", + "Grad encoder.fc1.bias: 0.00013369586667977273\n", + "Grad encoder.encoder.0.weight: 8.872227044776082e-05\n", + "Grad encoder.encoder.0.bias: 0.00017490907339379191\n", + "Grad encoder.encoder.2.weight: 7.722647569607943e-05\n", + "Grad encoder.encoder.2.bias: 0.0002518003748264164\n", + "Grad encoder.encoder.4.weight: 0.0002103869046550244\n", + "Grad encoder.encoder.4.bias: 0.0007339398143813014\n", + "Grad decoder.fc1.0.weight: 9.590131230652332e-05\n", + "Grad decoder.fc1.0.bias: 0.000608297879807651\n", + "Grad decoder.fc1.2.weight: 0.00013059367483947426\n", + "Grad decoder.fc1.2.bias: 0.0009707052377052605\n", + "Grad decoder.fc1.4.weight: 0.00011548949260031804\n", + "Grad decoder.fc1.4.bias: 0.0010425065411254764\n", + "Grad decoder.fc2.weight: 0.00021502906747628003\n", + "Grad decoder.fc2.bias: 0.0027578624431043863\n", + "Grad _memory_unit.weight_ih_l0: 1.9242199414293282e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.386657332768664e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.477796781226061e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.2154780051787384e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00015929603250697255\n", + "Grad _memory_unit.bias_hh_l1: 8.556897228118032e-05\n", + "Data X Sample: tensor([[1.7175, 2.3158, 2.6356, 2.7988, 2.8685, 3.1778, 3.1121, 3.1629, 3.3515,\n", + " 3.3316, 3.4642, 3.3847, 3.3622, 3.2172, 3.2432, 3.2179, 3.1966, 3.1936,\n", + " 3.2297, 3.2303, 3.2216, 3.0465, 2.9520, 2.7924, 2.6763, 2.6354, 2.4455,\n", + " 2.4268, 2.0399, 2.0470, 1.9037, 1.8404, 1.6170, 1.0481, 1.6178, 1.7634,\n", + " 1.8839, 2.1997, 2.5227, 2.6158, 1.5463, 0.8882, 0.9418, 1.6878, 2.5926,\n", + " 2.7848, 1.8289, 2.4787]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2716, 0.2747, -0.4364, 0.7720, 0.8169, -0.3762, -0.5940, 0.6995,\n", + " -0.4072, -0.2919, -0.3235, 0.2213, -0.1138, 0.3489, -0.4367, 0.1867,\n", + " -0.4925, 1.7341, 0.6113, -0.8633, -1.1649, 1.1979, 0.6011, 0.7562,\n", + " 0.3553, 0.4388, -0.4261, 0.5546, 0.4018, -0.1895, 0.6746, -1.1702,\n", + " -0.2780, 1.2047, 0.2702, -0.5472, 0.4246, 0.5417, -0.7130, 0.0791,\n", + " -1.5565, 0.0931, 0.6469]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.0121, -0.0181, -0.0434, -0.0180, -0.0100, -0.0869, -0.0789, -0.0361,\n", + " 0.0518, 0.0840, -0.0033, -0.0385, -0.0165, -0.0090, 0.0611, -0.0199,\n", + " -0.0359, -0.0057, -0.0168, 0.0282, -0.0138, -0.0529, -0.0376, -0.0740,\n", + " -0.0202, 0.0851, 0.0850, 0.0507, 0.0408, 0.0719, 0.0882, -0.0146,\n", + " -0.0336, 0.0024, -0.0477, -0.0486, -0.0322, 0.0356, 0.0440, 0.0376,\n", + " 0.0318, 0.0592, -0.0302]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003196452744305134\n", + "Grad encoder.fc1.bias: 0.0001792948751244694\n", + "Grad encoder.encoder.0.weight: 0.00013020067126490176\n", + "Grad encoder.encoder.0.bias: 0.00021884392481297255\n", + "Grad encoder.encoder.2.weight: 0.00010715040843933821\n", + "Grad encoder.encoder.2.bias: 0.0003342135460115969\n", + "Grad encoder.encoder.4.weight: 0.0002407551946816966\n", + "Grad encoder.encoder.4.bias: 0.0007852376438677311\n", + "Grad decoder.fc1.0.weight: 7.662992720725015e-05\n", + "Grad decoder.fc1.0.bias: 0.0004871446581091732\n", + "Grad decoder.fc1.2.weight: 9.454997780267149e-05\n", + "Grad decoder.fc1.2.bias: 0.0007112072198651731\n", + "Grad decoder.fc1.4.weight: 0.00011396967602195218\n", + "Grad decoder.fc1.4.bias: 0.0010608076117932796\n", + "Grad decoder.fc2.weight: 0.00018533447291702032\n", + "Grad decoder.fc2.bias: 0.0017126285238191485\n", + "Grad _memory_unit.weight_ih_l0: 2.0066529032192193e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.667673056246713e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.53803409577813e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.297960787080228e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011751972488127649\n", + "Grad _memory_unit.bias_hh_l1: 6.348070019157603e-05\n", + "Data X Sample: tensor([[1.4321, 1.5352, 1.8542, 2.0379, 2.0489, 2.1760, 2.2386, 2.1465, 3.8275,\n", + " 4.2984, 4.2858, 4.2728, 4.0191, 3.8116, 3.7778, 3.6281, 3.5583, 3.5747,\n", + " 3.5642, 3.6302, 3.5430, 3.3420, 2.9086, 2.9127, 2.7871, 3.0533, 3.0476,\n", + " 3.1568, 3.1084, 3.2784, 3.2545, 3.3768, 3.8215, 2.7508, 4.4537, 4.9982,\n", + " 5.1895, 5.6026, 5.9771, 5.8445, 1.1597, 0.6273, 0.6811, 1.2228, 1.7284,\n", + " 2.0357, 1.2510, 1.8062]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2544, -1.0885, -0.3990, -0.0046, -0.0694, -0.1813, 0.2367, 0.1557,\n", + " 0.7390, 0.4098, 0.6022, 0.6995, -0.5440, -1.1753, 0.7669, -0.3885,\n", + " -0.5350, 0.3154, -0.3203, -0.4054, -0.3229, -0.1457, -0.1275, 0.1750,\n", + " 0.2381, 0.0103, 1.8119, 0.0121, -0.0777, -0.2094, -0.0086, -0.5439,\n", + " -0.5028, -0.8018, -0.1925, -0.7518, 0.4963, -0.6532, -1.0062, 0.4003,\n", + " 0.6671, 0.4494, 1.0845]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3606, -0.2319, -0.1653, -0.0504, 0.2098, -0.1558, 0.1439, 0.2457,\n", + " 0.2784, 0.1475, 0.2163, -0.1595, -0.2706, -0.3881, -0.1943, -0.3665,\n", + " -0.2395, -0.0931, -0.1014, -0.0967, 0.0357, -0.0179, -0.1200, -0.1129,\n", + " -0.0543, 0.0929, 0.0755, -0.0889, -0.2109, -0.1614, -0.1002, -0.1626,\n", + " -0.1905, -0.2664, -0.1290, -0.1975, 0.0262, 0.1856, -0.0453, 0.3774,\n", + " 0.4777, 0.3300, 0.0961]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006254666950553656\n", + "Grad encoder.fc1.bias: 0.0002551232173573226\n", + "Grad encoder.encoder.0.weight: 0.00021620608458761126\n", + "Grad encoder.encoder.0.bias: 0.00027717213379219174\n", + "Grad encoder.encoder.2.weight: 0.0001645484589971602\n", + "Grad encoder.encoder.2.bias: 0.0004039710620418191\n", + "Grad encoder.encoder.4.weight: 0.0003216785262338817\n", + "Grad encoder.encoder.4.bias: 0.0009022322483360767\n", + "Grad decoder.fc1.0.weight: 8.977909601526335e-05\n", + "Grad decoder.fc1.0.bias: 0.0004819108289666474\n", + "Grad decoder.fc1.2.weight: 9.788305032998323e-05\n", + "Grad decoder.fc1.2.bias: 0.0007120537338778377\n", + "Grad decoder.fc1.4.weight: 0.00010083950473926961\n", + "Grad decoder.fc1.4.bias: 0.0009138965397141874\n", + "Grad decoder.fc2.weight: 0.00018242347869090736\n", + "Grad decoder.fc2.bias: 0.0022473291028290987\n", + "Grad _memory_unit.weight_ih_l0: 1.8388707758276723e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.441437002038583e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.888875340227969e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.021361620398238e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.815198427531868e-05\n", + "Grad _memory_unit.bias_hh_l1: 5.2532064728438854e-05\n", + "Data X Sample: tensor([[1.4746, 1.7274, 1.8482, 1.9613, 2.0933, 2.1009, 2.2509, 2.5170, 2.4532,\n", + " 2.5323, 2.5474, 2.5571, 2.5455, 2.3584, 2.4412, 2.3932, 2.3350, 2.4064,\n", + " 2.3727, 2.3711, 2.3898, 2.3744, 2.3857, 2.3401, 2.3329, 2.4656, 2.4428,\n", + " 2.4104, 2.1960, 2.1878, 2.2572, 2.3350, 2.2484, 1.4463, 1.9193, 1.8120,\n", + " 1.6007, 1.4974, 1.5846, 1.5718, 1.1454, 0.6552, 0.7073, 1.2802, 1.7323,\n", + " 1.9270, 1.3258, 1.7359]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.9330, 0.5172, -0.6177, 1.1918, 0.0850, -0.1338, -0.2211, -0.6969,\n", + " -0.2590, -0.4119, -0.5368, -0.2743, -0.5777, -0.0854, -1.3618, 0.3866,\n", + " -0.1345, -1.1888, 0.0822, 1.4022, 1.5856, 1.7482, -1.0051, 0.7333,\n", + " 0.1303, 0.9692, -1.5088, -1.0131, 0.5671, -0.4457, -1.0755, -1.0206,\n", + " -0.2336, 0.3437, 0.0779, 0.8958, 0.4852, 0.7916, -0.5970, -0.5090,\n", + " -0.2960, -0.4331, 0.0723]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.1921, 0.0196, -0.0299, 0.0178, -0.0198, -0.0563, -0.2851, -0.2200,\n", + " -0.0773, -0.0247, -0.1092, 0.0198, 0.1875, 0.1785, 0.2065, 0.1769,\n", + " -0.0160, 0.0625, 0.0814, 0.0948, -0.1329, -0.0579, 0.0371, 0.0411,\n", + " 0.0073, 0.0334, 0.1627, 0.1345, 0.1745, 0.2212, 0.3087, 0.1773,\n", + " 0.1300, 0.1709, -0.1028, 0.0470, -0.0292, 0.0572, 0.0894, -0.0516,\n", + " -0.1416, -0.0729, -0.1826]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000511928228661418\n", + "Grad encoder.fc1.bias: 0.0003381858696229756\n", + "Grad encoder.encoder.0.weight: 0.00017243242473341525\n", + "Grad encoder.encoder.0.bias: 0.0003685820265673101\n", + "Grad encoder.encoder.2.weight: 0.00011762631038436666\n", + "Grad encoder.encoder.2.bias: 0.0004476480244193226\n", + "Grad encoder.encoder.4.weight: 0.00024051868240348995\n", + "Grad encoder.encoder.4.bias: 0.0006701538222841918\n", + "Grad decoder.fc1.0.weight: 7.62702984502539e-05\n", + "Grad decoder.fc1.0.bias: 0.0005924276192672551\n", + "Grad decoder.fc1.2.weight: 8.775490277912468e-05\n", + "Grad decoder.fc1.2.bias: 0.0007802544860169291\n", + "Grad decoder.fc1.4.weight: 8.635445556137711e-05\n", + "Grad decoder.fc1.4.bias: 0.000821433961391449\n", + "Grad decoder.fc2.weight: 0.00019730717758648098\n", + "Grad decoder.fc2.bias: 0.002014891244471073\n", + "Grad _memory_unit.weight_ih_l0: 1.5517307474510744e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.398265420808457e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.008180283359252e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.977020454243757e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00015354582865256816\n", + "Grad _memory_unit.bias_hh_l1: 8.308019459946081e-05\n", + "Data X Sample: tensor([[2.1684, 2.4892, 2.7423, 2.9562, 2.9300, 3.0408, 3.2508, 3.0195, 3.2563,\n", + " 3.2021, 3.3436, 3.3458, 3.2468, 3.3154, 3.2306, 3.3655, 3.2784, 3.2846,\n", + " 3.2173, 3.2006, 3.0621, 3.0955, 2.9640, 2.7695, 2.7270, 2.5910, 2.5627,\n", + " 2.6103, 2.2133, 2.2926, 2.2152, 2.1167, 2.0108, 1.4006, 2.1251, 2.3106,\n", + " 2.6193, 2.8543, 3.0615, 2.8967, 1.8040, 0.9181, 0.9519, 1.7624, 2.5807,\n", + " 2.7619, 1.9173, 2.5882]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6728, 0.4429, 0.3264, -0.1997, -2.5263, -0.4819, -1.7192, 0.5634,\n", + " -0.6459, -0.4792, -0.6036, 1.1495, -0.7496, 0.5899, 0.0992, -0.3919,\n", + " -0.2246, -0.3890, 0.0208, -0.0490, -0.5503, -1.9204, 1.1855, -0.2843,\n", + " 0.2724, -0.0223, -0.1048, -0.1667, 0.9285, 0.0358, -0.4509, -0.0218,\n", + " -0.0288, 1.0357, 0.0082, 1.5659, 0.3306, 0.7428, 0.2870, -0.7155,\n", + " 0.5665, 0.3979, -1.3286]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1075, -0.1344, -0.1026, -0.1127, 0.0205, -0.0950, 0.0381, 0.1052,\n", + " 0.1526, 0.1069, 0.0542, -0.0692, -0.1174, -0.1145, -0.0466, -0.1491,\n", + " -0.0862, -0.0628, 0.0064, -0.0136, -0.0700, -0.0671, -0.1106, -0.0182,\n", + " -0.0334, 0.1508, 0.0704, -0.0090, 0.0114, -0.0467, 0.0393, -0.1322,\n", + " -0.0805, -0.1375, -0.0321, -0.0537, 0.0223, 0.0016, -0.0250, 0.1365,\n", + " 0.1823, 0.2370, 0.1131]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002836753847077489\n", + "Grad encoder.fc1.bias: 0.00012439422425813973\n", + "Grad encoder.encoder.0.weight: 0.00013250400661490858\n", + "Grad encoder.encoder.0.bias: 0.0001947164855664596\n", + "Grad encoder.encoder.2.weight: 0.0001009174739010632\n", + "Grad encoder.encoder.2.bias: 0.00026197568513453007\n", + "Grad encoder.encoder.4.weight: 0.00023006144328974187\n", + "Grad encoder.encoder.4.bias: 0.0005975021049380302\n", + "Grad decoder.fc1.0.weight: 9.384213626617566e-05\n", + "Grad decoder.fc1.0.bias: 0.0005692814011126757\n", + "Grad decoder.fc1.2.weight: 0.00011188241478521377\n", + "Grad decoder.fc1.2.bias: 0.0007441997295245528\n", + "Grad decoder.fc1.4.weight: 0.00011196990817552432\n", + "Grad decoder.fc1.4.bias: 0.0008900141110643744\n", + "Grad decoder.fc2.weight: 0.0002012952318182215\n", + "Grad decoder.fc2.bias: 0.0020023216493427753\n", + "Grad _memory_unit.weight_ih_l0: 1.77627443918027e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.7148223782423884e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.0374442101456225e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0874755389522761e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00013479977496899664\n", + "Grad _memory_unit.bias_hh_l1: 7.326965715037659e-05\n", + "Data X Sample: tensor([[1.4608, 1.6051, 1.7145, 1.8170, 1.9670, 2.0817, 2.1847, 1.8966, 3.0024,\n", + " 3.9935, 4.2921, 4.2748, 4.1456, 3.8607, 3.8610, 3.6254, 3.6794, 3.5322,\n", + " 3.4465, 3.6134, 3.5283, 3.3894, 3.0074, 2.8191, 2.8190, 2.7477, 2.9090,\n", + " 2.8713, 3.0112, 3.2096, 3.1496, 3.2276, 3.8655, 2.7828, 4.6547, 4.8523,\n", + " 5.0538, 5.3562, 5.9835, 5.7736, 1.0834, 0.6293, 0.6548, 1.1223, 1.5738,\n", + " 1.7784, 1.3190, 1.7359]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0773, -0.8382, 0.5849, -0.7227, 0.1244, -0.4445, -0.2477, 0.1299,\n", + " 0.5589, 0.2197, 0.2581, -1.0744, -1.0837, -0.6962, -0.2347, -1.3818,\n", + " -0.9870, -1.3399, -0.3637, -0.5548, 0.0520, -0.6211, 0.4416, -0.9790,\n", + " 0.8783, -0.0542, 0.2208, 0.0952, 0.3410, -0.2731, -0.8821, -0.0064,\n", + " -0.7852, 0.0467, -0.9845, 0.1285, 0.4768, -0.0459, -0.2505, 0.4167,\n", + " 0.1661, 0.2079, -0.4201]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3039, -0.3401, -0.1486, -0.2271, 0.1546, -0.0793, 0.2310, 0.2828,\n", + " 0.3049, 0.1109, 0.2769, -0.1674, -0.2674, -0.4021, -0.2723, -0.3810,\n", + " -0.2610, -0.1426, -0.0251, -0.1451, -0.0846, -0.0816, -0.1934, 0.0276,\n", + " -0.0624, 0.1261, 0.0146, -0.0903, -0.1491, -0.1957, -0.0707, -0.2394,\n", + " -0.1899, -0.4283, -0.1619, -0.1610, 0.1599, 0.0733, -0.0700, 0.4678,\n", + " 0.4710, 0.4224, 0.2416]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.001333969528786838\n", + "Grad encoder.fc1.bias: 0.0006046767812222242\n", + "Grad encoder.encoder.0.weight: 0.00047517780330963433\n", + "Grad encoder.encoder.0.bias: 0.0006878986023366451\n", + "Grad encoder.encoder.2.weight: 0.00033805944258347154\n", + "Grad encoder.encoder.2.bias: 0.0008844883996061981\n", + "Grad encoder.encoder.4.weight: 0.0006579288747161627\n", + "Grad encoder.encoder.4.bias: 0.0019551776349544525\n", + "Grad decoder.fc1.0.weight: 0.000175885230419226\n", + "Grad decoder.fc1.0.bias: 0.0011151115177199244\n", + "Grad decoder.fc1.2.weight: 0.00018238012853544205\n", + "Grad decoder.fc1.2.bias: 0.0011969675542786717\n", + "Grad decoder.fc1.4.weight: 0.00016167506691999733\n", + "Grad decoder.fc1.4.bias: 0.0011498054955154657\n", + "Grad decoder.fc2.weight: 0.00024009357730392367\n", + "Grad decoder.fc2.bias: 0.002784088719636202\n", + "Grad _memory_unit.weight_ih_l0: 4.163016637903638e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00011717719462467358\n", + "Grad _memory_unit.bias_hh_l0: 6.330377800622955e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.8839744370779954e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002592351520434022\n", + "Grad _memory_unit.bias_hh_l1: 0.00014069357712287456\n", + "Data X Sample: tensor([[1.6157, 1.9255, 2.1653, 2.3811, 2.5287, 2.6460, 2.5544, 2.5908, 2.6680,\n", + " 2.6587, 2.6425, 2.5337, 2.4101, 2.3011, 2.2773, 2.1635, 2.1604, 2.1704,\n", + " 2.0795, 2.0847, 1.9629, 1.9596, 1.8965, 1.8113, 1.7529, 1.7395, 1.6756,\n", + " 1.7456, 1.2905, 1.3592, 1.2353, 1.1993, 1.1660, 0.8193, 1.2525, 1.3961,\n", + " 1.5417, 1.8287, 2.0790, 2.0768, 1.3841, 0.8324, 0.8205, 1.3462, 2.1644,\n", + " 2.3673, 1.5638, 2.2832]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.5192, -1.4509, -0.4870, -0.7322, -0.7310, 0.5701, 0.9076, 1.3023,\n", + " 0.9337, 1.4085, 2.9814, -0.3895, -1.3297, -2.4485, -0.4704, -1.0736,\n", + " -1.1605, -0.1467, 0.1803, 0.2851, -1.6008, 0.6021, 0.0284, 0.1229,\n", + " -0.4231, -0.1098, -0.1354, 0.2290, -0.3977, -0.7600, -1.4491, -1.3094,\n", + " -2.2860, -2.2323, -0.4873, -0.8564, -0.5002, 0.4612, 1.0523, 4.0255,\n", + " 3.2867, 2.1215, 2.0581]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.0445, -0.0850, -0.0726, -0.0822, -0.0193, -0.0614, -0.0203, 0.0207,\n", + " 0.0844, 0.0536, 0.0107, -0.0191, -0.0524, -0.0496, 0.0241, -0.0505,\n", + " -0.0531, -0.0369, 0.0026, -0.0017, -0.0819, -0.0810, -0.0563, -0.0027,\n", + " -0.0036, 0.1013, 0.0564, 0.0047, 0.0377, -0.0370, 0.0610, -0.0959,\n", + " -0.0467, -0.0743, -0.0047, -0.0189, 0.0176, -0.0222, 0.0279, 0.0515,\n", + " 0.0742, 0.1377, 0.1025]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.002151437569409609\n", + "Grad encoder.fc1.bias: 0.0013869330286979675\n", + "Grad encoder.encoder.0.weight: 0.0007301964797079563\n", + "Grad encoder.encoder.0.bias: 0.0015149731189012527\n", + "Grad encoder.encoder.2.weight: 0.0004944164538756013\n", + "Grad encoder.encoder.2.bias: 0.0019526093965396285\n", + "Grad encoder.encoder.4.weight: 0.0010118652135133743\n", + "Grad encoder.encoder.4.bias: 0.004815803840756416\n", + "Grad decoder.fc1.0.weight: 0.00025279546389356256\n", + "Grad decoder.fc1.0.bias: 0.002167070982977748\n", + "Grad decoder.fc1.2.weight: 0.00019825747585855424\n", + "Grad decoder.fc1.2.bias: 0.0021051554940640926\n", + "Grad decoder.fc1.4.weight: 0.00014911839389242232\n", + "Grad decoder.fc1.4.bias: 0.0019591129384934902\n", + "Grad decoder.fc2.weight: 0.00017630979709792882\n", + "Grad decoder.fc2.bias: 0.002832989441230893\n", + "Grad _memory_unit.weight_ih_l0: 7.71210907259956e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0002735156158450991\n", + "Grad _memory_unit.bias_hh_l0: 0.00014715627185069025\n", + "Grad _memory_unit.weight_ih_l1: 2.9372426070040092e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0005746810929849744\n", + "Grad _memory_unit.bias_hh_l1: 0.0003075897111557424\n", + "Data X Sample: tensor([[1.2889, 1.7507, 1.9309, 1.9154, 2.1428, 2.1760, 2.2109, 2.2955, 2.1969,\n", + " 2.2211, 2.2428, 2.0624, 1.8864, 1.8622, 1.7124, 1.7915, 1.8428, 1.8686,\n", + " 1.8152, 1.7351, 1.7494, 1.6580, 1.6483, 1.5193, 1.4358, 1.4731, 1.4279,\n", + " 1.4928, 1.0373, 1.1037, 1.0639, 1.0058, 0.9284, 0.6408, 0.9658, 0.9996,\n", + " 1.0973, 1.2854, 1.3945, 1.4271, 1.2409, 0.6990, 0.7033, 1.3405, 1.7839,\n", + " 1.9270, 1.3054, 1.9313]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.8737, -1.5293, -1.1859, -1.0504, -0.6656, 1.1472, 1.1925, 2.5415,\n", + " 1.5779, 2.4980, 4.2989, -0.4488, 0.6865, -1.6136, -1.9345, -2.3881,\n", + " -2.6032, -0.6617, 0.3501, -0.9223, -0.6408, -0.4471, -0.4426, -0.9909,\n", + " -0.3210, -0.1695, 0.3513, -0.4929, -0.5683, -1.9534, -1.3744, -1.5228,\n", + " -1.4902, -3.1509, -1.2711, -0.3491, 1.0340, 0.1524, -0.1564, 7.0072,\n", + " 7.3401, 5.0234, 2.8623]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.0274, -0.0805, -0.0578, -0.0894, -0.0300, -0.0361, -0.0170, 0.0377,\n", + " 0.0708, 0.0565, 0.0139, -0.0325, -0.0574, -0.0462, 0.0106, -0.0491,\n", + " -0.0700, -0.0270, -0.0044, -0.0046, -0.0479, -0.0689, -0.0627, 0.0073,\n", + " -0.0122, 0.0814, 0.0468, 0.0085, 0.0192, -0.0427, 0.0398, -0.0897,\n", + " -0.0563, -0.0867, -0.0040, -0.0190, 0.0091, -0.0141, 0.0193, 0.0306,\n", + " 0.0875, 0.1341, 0.0975]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00037998915649950504\n", + "Grad encoder.fc1.bias: 0.00023125515144784003\n", + "Grad encoder.encoder.0.weight: 0.00012388844334054738\n", + "Grad encoder.encoder.0.bias: 0.0001536223862785846\n", + "Grad encoder.encoder.2.weight: 9.867634798865765e-05\n", + "Grad encoder.encoder.2.bias: 0.00018303372780792415\n", + "Grad encoder.encoder.4.weight: 0.00018774342606775463\n", + "Grad encoder.encoder.4.bias: 0.00038330801180563867\n", + "Grad decoder.fc1.0.weight: 7.682045543333516e-05\n", + "Grad decoder.fc1.0.bias: 0.000373100716387853\n", + "Grad decoder.fc1.2.weight: 9.675890760263428e-05\n", + "Grad decoder.fc1.2.bias: 0.0005024377023801208\n", + "Grad decoder.fc1.4.weight: 0.00010013225255534053\n", + "Grad decoder.fc1.4.bias: 0.0006857085390947759\n", + "Grad decoder.fc2.weight: 0.0001676346582826227\n", + "Grad decoder.fc2.bias: 0.0017830370925366879\n", + "Grad _memory_unit.weight_ih_l0: 1.6986066839308478e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.9076280043227598e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.638169851503335e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.260271326638758e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.995682244654745e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.3608812120510265e-05\n", + "Data X Sample: tensor([[1.4735, 1.6560, 1.8377, 1.8717, 2.0523, 2.0434, 2.2093, 2.1167, 3.6224,\n", + " 4.3663, 4.2160, 4.3293, 3.9947, 4.0161, 3.7375, 3.7033, 3.6102, 3.5941,\n", + " 3.6365, 3.6748, 3.5577, 3.5242, 2.9785, 2.9222, 2.8321, 2.8574, 3.0342,\n", + " 3.0793, 3.1674, 3.2588, 3.1916, 3.4597, 3.8435, 2.8332, 4.6302, 5.0761,\n", + " 5.0538, 5.4966, 5.9961, 5.9154, 1.1025, 0.6950, 0.6831, 1.1883, 1.7086,\n", + " 1.7155, 1.2646, 1.8141]], device='cuda:0')\n", + "Data Y Sample: tensor([[-6.4049e-01, -7.2132e-01, 1.0825e-01, -6.3397e-01, -1.1398e-03,\n", + " 1.5014e-01, -8.0542e-02, 1.9650e-01, 8.0313e-01, 6.8573e-01,\n", + " 5.1420e-01, -2.1726e-01, 2.8906e-01, -1.3483e+00, -8.0634e-01,\n", + " 4.6637e-01, -9.6321e-02, 7.3173e-01, 1.8478e+00, 2.4781e-01,\n", + " -8.5148e-01, -4.1814e-01, -1.2210e+00, 3.0181e-01, 5.9008e-01,\n", + " 2.3201e+00, 7.4147e-01, -4.8985e-01, 1.3253e-01, 2.7913e-01,\n", + " -4.7313e-01, 4.4113e-01, -1.7995e-01, -3.8964e-01, -9.7415e-01,\n", + " -3.1817e-02, -7.4931e-01, 4.7220e-01, -1.9703e-02, 4.7798e-01,\n", + " 8.3565e-01, 3.8637e-01, 6.4728e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1557, -0.3073, -0.1012, -0.2369, 0.0299, -0.0093, 0.0777, 0.1922,\n", + " 0.1786, 0.0584, 0.2403, -0.1696, -0.2159, -0.2776, -0.1877, -0.2435,\n", + " -0.2699, -0.1088, -0.0359, -0.0528, -0.0375, -0.1311, -0.1007, 0.0362,\n", + " -0.0477, 0.0961, -0.0016, -0.0658, -0.1318, -0.1616, -0.0811, -0.1762,\n", + " -0.1855, -0.3203, -0.1640, -0.1327, 0.0461, 0.0350, -0.0019, 0.2948,\n", + " 0.3027, 0.3399, 0.2267]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00022328225895762444\n", + "Grad encoder.fc1.bias: 0.0002169461513403803\n", + "Grad encoder.encoder.0.weight: 8.788480772636831e-05\n", + "Grad encoder.encoder.0.bias: 0.0002110385539708659\n", + "Grad encoder.encoder.2.weight: 9.145504736807197e-05\n", + "Grad encoder.encoder.2.bias: 0.00035416235914453864\n", + "Grad encoder.encoder.4.weight: 0.00020161613065283746\n", + "Grad encoder.encoder.4.bias: 0.0006748362211510539\n", + "Grad decoder.fc1.0.weight: 8.824858377920464e-05\n", + "Grad decoder.fc1.0.bias: 0.00063564587617293\n", + "Grad decoder.fc1.2.weight: 0.00013617098738905042\n", + "Grad decoder.fc1.2.bias: 0.001178335165604949\n", + "Grad decoder.fc1.4.weight: 0.00011676477151922882\n", + "Grad decoder.fc1.4.bias: 0.0011134373489767313\n", + "Grad decoder.fc2.weight: 0.00020355588640086353\n", + "Grad decoder.fc2.bias: 0.0020150053314864635\n", + "Grad _memory_unit.weight_ih_l0: 1.793055889720563e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.350587111432105e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.968345481553115e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.034937577060191e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00015636537864338607\n", + "Grad _memory_unit.bias_hh_l1: 8.466400322504342e-05\n", + "Data X Sample: tensor([[1.9042, 2.6101, 2.7874, 3.1355, 3.1758, 3.2264, 3.3340, 3.4213, 3.4906,\n", + " 3.6049, 3.4610, 3.5795, 3.4510, 3.4135, 3.5105, 3.2876, 3.2768, 3.2846,\n", + " 3.4176, 3.3475, 3.3124, 3.1353, 2.9544, 2.8764, 2.7833, 2.6589, 2.5574,\n", + " 2.4879, 2.2515, 2.2566, 2.1242, 2.1001, 1.9756, 1.3067, 2.0859, 2.3301,\n", + " 2.5407, 2.7722, 3.0551, 2.9251, 1.7706, 1.0077, 1.0024, 1.8916, 2.7115,\n", + " 3.0135, 2.0329, 2.7915]], device='cuda:0')\n", + "Data Y Sample: tensor([[-7.2369e-01, -4.1982e-01, 1.8793e+01, -6.4740e-01, -6.0322e-01,\n", + " -6.6684e-01, 1.8424e-01, 7.6924e-01, 1.3891e+00, 6.9459e-01,\n", + " 9.2159e-01, -4.7326e-01, 2.8084e-01, -4.8218e-02, 3.3633e-01,\n", + " -3.2280e-02, -2.6842e-01, 2.6298e-02, 3.1567e-01, 1.2326e+00,\n", + " 7.4324e-01, 1.0233e-01, 5.6058e-01, -5.3637e-01, 1.2847e+00,\n", + " 1.4962e+00, 1.5239e+00, -5.3032e-01, -7.3997e-01, -3.9268e-01,\n", + " 1.4580e-02, -1.3164e+00, -5.7324e-01, -3.1188e-01, -2.1705e-01,\n", + " 1.2824e-01, -1.0105e+00, -6.5961e-01, 4.0193e-03, 8.8911e-01,\n", + " 1.1409e+00, 7.1803e-01, 2.2330e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1123, -0.2195, -0.0640, -0.1665, 0.0008, 0.0030, 0.0262, 0.0927,\n", + " 0.1003, 0.0515, 0.1160, -0.1031, -0.1534, -0.1796, -0.0845, -0.1318,\n", + " -0.1790, -0.0767, -0.0411, -0.0293, -0.0392, -0.1154, -0.0888, 0.0156,\n", + " -0.0219, 0.0595, 0.0163, -0.0456, -0.0536, -0.1129, -0.0288, -0.1460,\n", + " -0.1235, -0.2034, -0.0451, -0.0691, 0.0287, -0.0023, 0.0085, 0.1787,\n", + " 0.1730, 0.2283, 0.1583]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0016921887872740626\n", + "Grad encoder.fc1.bias: 0.0009411824285052717\n", + "Grad encoder.encoder.0.weight: 0.0005668653175234795\n", + "Grad encoder.encoder.0.bias: 0.0010215546935796738\n", + "Grad encoder.encoder.2.weight: 0.00036973238456994295\n", + "Grad encoder.encoder.2.bias: 0.001298877876251936\n", + "Grad encoder.encoder.4.weight: 0.0007106398115865886\n", + "Grad encoder.encoder.4.bias: 0.0029021361842751503\n", + "Grad decoder.fc1.0.weight: 0.00014909854508005083\n", + "Grad decoder.fc1.0.bias: 0.001228297594934702\n", + "Grad decoder.fc1.2.weight: 0.00013815666898153722\n", + "Grad decoder.fc1.2.bias: 0.00127147336024791\n", + "Grad decoder.fc1.4.weight: 0.00012156202865298837\n", + "Grad decoder.fc1.4.bias: 0.001337136491201818\n", + "Grad decoder.fc2.weight: 0.00014790556451771408\n", + "Grad decoder.fc2.bias: 0.002376437420025468\n", + "Grad _memory_unit.weight_ih_l0: 3.533713243086822e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00013570018927566707\n", + "Grad _memory_unit.bias_hh_l0: 7.344758341787383e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.7880069208331406e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00032941249082796276\n", + "Grad _memory_unit.bias_hh_l1: 0.00017507205484434962\n", + "Data X Sample: tensor([[1.6019, 1.8570, 2.0315, 2.0488, 2.1753, 2.1436, 2.3202, 2.3509, 2.3287,\n", + " 2.3032, 2.4839, 2.3974, 2.3790, 2.3148, 2.2268, 2.3631, 2.3067, 2.3657,\n", + " 2.3934, 2.4213, 2.4634, 2.5490, 2.4724, 2.5882, 2.5806, 2.5832, 2.5707,\n", + " 2.5981, 2.2897, 2.4629, 2.4952, 2.4400, 2.1318, 1.3731, 1.8776, 1.6807,\n", + " 1.5751, 1.4550, 1.5402, 1.5292, 1.2982, 0.7109, 0.7437, 1.3290, 1.8592,\n", + " 2.1500, 1.3530, 2.1503]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5714, 0.2627, -1.4971, 0.7228, 1.0265, -0.0931, -0.4974, -0.7953,\n", + " 0.1300, -0.8240, -0.3671, 0.8547, 0.1159, 1.3760, 0.4090, 0.4646,\n", + " 1.1893, 0.0144, -0.4221, 0.6038, 0.5287, 0.1024, -1.0374, 0.1203,\n", + " 0.0698, -0.0821, -0.4822, -0.6497, 0.7760, 0.3070, 0.1112, 2.2568,\n", + " 0.7458, 0.4216, 0.8282, 1.0132, 0.5757, 0.2650, 1.1764, -0.5948,\n", + " -0.4726, -0.5713, -0.6790]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3605, 0.0910, 0.0342, 0.0439, 0.0268, -0.0575, -0.3572, -0.2758,\n", + " -0.1877, -0.1930, -0.2882, 0.1529, 0.3091, 0.3119, 0.2519, 0.2817,\n", + " 0.0869, 0.0456, 0.0930, 0.0895, -0.1638, -0.0390, 0.1001, 0.0450,\n", + " 0.0878, 0.0481, 0.2013, 0.0313, 0.2357, 0.2846, 0.4525, 0.2742,\n", + " 0.2886, 0.3333, 0.0005, 0.1771, -0.0667, -0.0936, 0.1601, -0.1975,\n", + " -0.2458, -0.1149, -0.1923]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007737851119600236\n", + "Grad encoder.fc1.bias: 0.0004199981631245464\n", + "Grad encoder.encoder.0.weight: 0.00023564687580801547\n", + "Grad encoder.encoder.0.bias: 0.0003607137477956712\n", + "Grad encoder.encoder.2.weight: 0.0001838477182900533\n", + "Grad encoder.encoder.2.bias: 0.00048316415632143617\n", + "Grad encoder.encoder.4.weight: 0.0003775092773139477\n", + "Grad encoder.encoder.4.bias: 0.0010332572273910046\n", + "Grad decoder.fc1.0.weight: 0.00012645959213841707\n", + "Grad decoder.fc1.0.bias: 0.0007113819010555744\n", + "Grad decoder.fc1.2.weight: 0.00014942778216209263\n", + "Grad decoder.fc1.2.bias: 0.0009866132168099284\n", + "Grad decoder.fc1.4.weight: 0.0001338561560260132\n", + "Grad decoder.fc1.4.bias: 0.0011041469406336546\n", + "Grad decoder.fc2.weight: 0.00019218603847548366\n", + "Grad decoder.fc2.bias: 0.0018540886230766773\n", + "Grad _memory_unit.weight_ih_l0: 3.024959733011201e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.841107849846594e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.1686900911154225e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.5033838280942291e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00015266938135027885\n", + "Grad _memory_unit.bias_hh_l1: 8.140965655911714e-05\n", + "Data X Sample: tensor([[1.5255, 1.7828, 2.2028, 2.3724, 2.4638, 2.5974, 2.7424, 2.7697, 2.7632,\n", + " 2.8703, 2.8614, 2.9271, 2.8185, 2.7892, 2.7262, 2.7009, 2.6793, 2.8145,\n", + " 2.9282, 2.9718, 2.8977, 2.8781, 2.6893, 2.5271, 2.2953, 2.2593, 2.1711,\n", + " 2.2147, 1.8248, 1.7194, 1.6308, 1.6027, 1.3420, 0.8994, 1.2305, 1.2453,\n", + " 1.3608, 1.6379, 1.8825, 1.8413, 1.3220, 0.7448, 0.8124, 1.4381, 2.0297,\n", + " 2.3102, 1.6045, 2.1659]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0505, 0.5857, 0.6104, 0.7450, 0.2279, 0.3908, 0.4625, 0.1509,\n", + " -0.1195, -0.3050, 0.1697, 2.6913, -1.2577, 0.2761, 0.7528, 0.7133,\n", + " 1.6269, 1.1055, 1.0297, 0.7514, 0.6715, -2.2408, -0.6625, 0.2762,\n", + " -1.2906, -2.4729, 0.1963, -0.6187, -1.3214, -0.0997, 0.7882, 1.1743,\n", + " 0.2516, 0.5875, 0.5328, 1.7644, -0.0868, 0.0000, -0.5970, 0.0806,\n", + " -0.3360, -0.8155, -0.3229]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.1980, 0.0511, 0.0351, -0.0145, -0.0130, -0.0668, -0.1773, -0.1574,\n", + " -0.1418, -0.1443, -0.2173, 0.0266, 0.1925, 0.1955, 0.1567, 0.1616,\n", + " 0.0373, 0.0373, 0.0196, 0.0481, -0.1441, -0.0536, 0.0423, -0.0131,\n", + " 0.0385, 0.0445, 0.1209, -0.0311, 0.1463, 0.1558, 0.2216, 0.1244,\n", + " 0.1008, 0.1607, 0.0177, 0.0924, -0.0059, -0.0706, 0.1154, -0.0779,\n", + " -0.1350, -0.0475, -0.0699]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001538561627967283\n", + "Grad encoder.fc1.bias: 0.0002795720938593149\n", + "Grad encoder.encoder.0.weight: 6.393811054294929e-05\n", + "Grad encoder.encoder.0.bias: 0.0002841647365130484\n", + "Grad encoder.encoder.2.weight: 7.234262739075348e-05\n", + "Grad encoder.encoder.2.bias: 0.00034241555840708315\n", + "Grad encoder.encoder.4.weight: 0.00015589511895086616\n", + "Grad encoder.encoder.4.bias: 0.0006734570488333702\n", + "Grad decoder.fc1.0.weight: 6.409931665984914e-05\n", + "Grad decoder.fc1.0.bias: 0.0004684140149038285\n", + "Grad decoder.fc1.2.weight: 0.00010183871199842542\n", + "Grad decoder.fc1.2.bias: 0.0006784916040487587\n", + "Grad decoder.fc1.4.weight: 0.00012062033783877268\n", + "Grad decoder.fc1.4.bias: 0.0009701173985376954\n", + "Grad decoder.fc2.weight: 0.0002674594579730183\n", + "Grad decoder.fc2.bias: 0.002776928711682558\n", + "Grad _memory_unit.weight_ih_l0: 1.760737541189883e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.479037256212905e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.5581455449573696e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.492701792623848e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00012963690096512437\n", + "Grad _memory_unit.bias_hh_l1: 7.003716746112332e-05\n", + "Data X Sample: tensor([[0.0371, 0.0583, 0.0887, 0.1006, 0.0956, 0.1120, 0.1356, 0.1334, 0.1684,\n", + " 0.1532, 0.1332, 0.1480, 0.1664, 0.1827, 0.1614, 0.1997, 0.2107, 0.2205,\n", + " 0.2333, 0.2176, 0.2748, 0.2388, 0.2410, 0.2004, 0.2233, 0.2377, 0.2398,\n", + " 0.3141, 0.1804, 0.2391, 0.1925, 0.1769, 0.1474, 0.0984, 0.1618, 0.1776,\n", + " 0.1475, 0.1378, 0.1394, 0.1362, 0.0764, 0.0398, 0.0424, 0.0660, 0.0832,\n", + " 0.0915, 0.0408, 0.1095]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3424, 0.1109, 0.0660, -0.1473, 0.2656, -0.9980, -0.3752, -0.3426,\n", + " -0.0230, -0.7617, 0.0214, 0.1624, 0.6333, 0.5875, 0.8565, 0.2554,\n", + " 0.5564, 0.2547, 0.0225, -0.0941, 1.1632, 0.8075, -0.5341, -0.8402,\n", + " -0.0140, -1.0191, -0.6082, -0.4205, 1.3890, 0.3876, 0.1802, 0.1516,\n", + " 0.5872, 1.1466, 0.2988, 0.4106, 0.0000, -0.8333, 2.2782, -0.1043,\n", + " -0.2341, -0.2593, -0.8071]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.8176, 0.3202, -0.1600, 0.3384, -0.0752, -0.0375, -0.8917, -0.9312,\n", + " -0.2500, -0.2107, -0.4368, 0.3067, 0.5684, 0.4561, 0.4833, 0.5225,\n", + " 0.3222, 0.1067, 0.2170, 0.2827, -0.0996, 0.1312, 0.1797, 0.3106,\n", + " 0.0261, -0.0030, 0.1688, 0.2745, 0.5432, 0.6148, 0.5892, 0.6689,\n", + " 0.7165, 0.4083, 0.0262, 0.3187, 0.0262, -0.0863, 0.3129, -0.5005,\n", + " -0.7334, -0.5031, -0.6358]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0036796636413782835\n", + "Grad encoder.fc1.bias: 0.001772125018760562\n", + "Grad encoder.encoder.0.weight: 0.0012213315349072218\n", + "Grad encoder.encoder.0.bias: 0.0018660423811525106\n", + "Grad encoder.encoder.2.weight: 0.0008321331115439534\n", + "Grad encoder.encoder.2.bias: 0.0023856242187321186\n", + "Grad encoder.encoder.4.weight: 0.0015875542303547263\n", + "Grad encoder.encoder.4.bias: 0.00532109197229147\n", + "Grad decoder.fc1.0.weight: 0.0003312692861072719\n", + "Grad decoder.fc1.0.bias: 0.002288742223754525\n", + "Grad decoder.fc1.2.weight: 0.0002798387431539595\n", + "Grad decoder.fc1.2.bias: 0.002191721461713314\n", + "Grad decoder.fc1.4.weight: 0.00024340415257029235\n", + "Grad decoder.fc1.4.bias: 0.002240882720798254\n", + "Grad decoder.fc2.weight: 0.00027081926236860454\n", + "Grad decoder.fc2.bias: 0.0031219921074807644\n", + "Grad _memory_unit.weight_ih_l0: 8.945081935962662e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00026268616784363985\n", + "Grad _memory_unit.bias_hh_l0: 0.0001421277702320367\n", + "Grad _memory_unit.weight_ih_l1: 4.058273771079257e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.000600587110966444\n", + "Grad _memory_unit.bias_hh_l1: 0.0003207064000889659\n", + "Data X Sample: tensor([[-0.0159, -0.0029, 0.0000, 0.0153, -0.0034, 0.0029, -0.0046, -0.0014,\n", + " -0.0049, 0.0111, 0.0190, 0.0000, 0.0067, 0.0055, -0.0151, 0.0068,\n", + " 0.0016, 0.0135, 0.0062, -0.0019, 0.0196, 0.0061, 0.0000, 0.0172,\n", + " 0.0113, 0.0261, 0.0400, 0.0245, -0.0382, 0.0393, 0.0140, 0.0166,\n", + " 0.0154, 0.0160, 0.0221, 0.0389, 0.0295, 0.0212, 0.0127, -0.0170,\n", + " 0.0143, 0.0080, -0.0061, 0.0000, 0.0277, 0.0229, 0.0000, -0.0313]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.8798, 1.1329, -0.9121, 0.9003, 0.6301, 0.1903, -0.6109, -0.7108,\n", + " -0.2828, -0.7402, -0.8986, 0.0514, 0.1287, 1.1753, -0.8635, -0.0152,\n", + " 0.8538, -1.2507, -1.0433, -0.6300, -0.8396, -1.4866, -1.9069, -2.4949,\n", + " 0.5436, -3.3642, -0.7580, 0.2467, 0.4633, 0.8323, 0.5722, 1.1797,\n", + " 0.3837, 0.8884, 1.5326, 0.8800, -0.9937, 0.7966, 0.7551, -0.7823,\n", + " -0.7110, -0.8698, -0.8900]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.9112, 0.4222, -0.1418, 0.3824, -0.0724, -0.1031, -1.0192, -1.0924,\n", + " -0.3227, -0.2573, -0.5350, 0.3618, 0.6525, 0.5264, 0.5215, 0.5734,\n", + " 0.4184, 0.1535, 0.2399, 0.3392, -0.0784, 0.1898, 0.1730, 0.2982,\n", + " 0.0481, -0.0227, 0.1957, 0.2722, 0.6506, 0.7234, 0.6752, 0.7594,\n", + " 0.8152, 0.5003, 0.0631, 0.3920, 0.0547, -0.0989, 0.3504, -0.5947,\n", + " -0.8540, -0.6138, -0.7363]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.001087847864255309\n", + "Grad encoder.fc1.bias: 0.0009712043101899326\n", + "Grad encoder.encoder.0.weight: 0.0004109345900360495\n", + "Grad encoder.encoder.0.bias: 0.001256192335858941\n", + "Grad encoder.encoder.2.weight: 0.0002529603079892695\n", + "Grad encoder.encoder.2.bias: 0.0014157590921968222\n", + "Grad encoder.encoder.4.weight: 0.0005522251594811678\n", + "Grad encoder.encoder.4.bias: 0.0030757999047636986\n", + "Grad decoder.fc1.0.weight: 0.00020610941282939166\n", + "Grad decoder.fc1.0.bias: 0.0017363522201776505\n", + "Grad decoder.fc1.2.weight: 0.00025500584160909057\n", + "Grad decoder.fc1.2.bias: 0.0019300326239317656\n", + "Grad decoder.fc1.4.weight: 0.0001955654297489673\n", + "Grad decoder.fc1.4.bias: 0.0015141454059630632\n", + "Grad decoder.fc2.weight: 0.00031643136753700674\n", + "Grad decoder.fc2.bias: 0.001976950792595744\n", + "Grad _memory_unit.weight_ih_l0: 4.91312712256331e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0003138989850413054\n", + "Grad _memory_unit.bias_hh_l0: 0.0001710455835564062\n", + "Grad _memory_unit.weight_ih_l1: 3.017649578396231e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0005962502909824252\n", + "Grad _memory_unit.bias_hh_l1: 0.0003251142334192991\n", + "Data X Sample: tensor([[1.3462, 1.5716, 1.6033, 1.7383, 1.9943, 2.1716, 2.1107, 1.8455, 2.6729,\n", + " 3.9540, 4.3080, 4.2942, 3.9614, 3.8498, 3.8182, 3.6500, 3.5882, 3.5863,\n", + " 3.4506, 3.4070, 3.4326, 3.4384, 2.9351, 2.7714, 2.7683, 2.8182, 2.8877,\n", + " 2.8387, 2.9696, 2.9673, 3.2510, 3.2828, 3.9051, 2.8492, 4.5542, 4.9545,\n", + " 5.2938, 5.6079, 6.1039, 5.9182, 1.0643, 0.6193, 0.6225, 1.0219, 1.5817,\n", + " 1.6640, 1.0062, 1.5951]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5638, -0.3881, -0.3756, 0.5244, -0.4109, 0.8845, 0.2909, 0.3119,\n", + " 0.3713, 0.5362, 0.7492, -0.2052, -0.7596, -1.6784, -0.9394, -0.2868,\n", + " -0.6641, 1.0867, -0.1708, 0.4821, 0.4989, 0.2847, 0.1479, -0.1106,\n", + " 1.3599, 0.7144, -0.2752, -0.9894, -0.2425, -0.6924, -0.6167, -2.0578,\n", + " -0.7708, -0.4085, -0.9421, 0.1657, -0.9960, 0.0936, -0.5252, 0.3791,\n", + " 0.4590, 0.2930, -1.1761]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3433, -0.5229, -0.1643, -0.3724, -0.0255, 0.0761, 0.1248, 0.4131,\n", + " 0.3213, 0.0990, 0.3942, -0.2924, -0.3287, -0.5634, -0.3064, -0.4178,\n", + " -0.4652, -0.1636, -0.0707, -0.1432, -0.0854, -0.2242, -0.1257, 0.0182,\n", + " -0.0250, -0.0012, -0.1688, -0.2008, -0.2921, -0.3368, -0.3237, -0.2551,\n", + " -0.3761, -0.4809, -0.3056, -0.2878, 0.0277, 0.0506, 0.0249, 0.5097,\n", + " 0.5170, 0.5210, 0.4211]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0010450547561049461\n", + "Grad encoder.fc1.bias: 0.0005434780032373965\n", + "Grad encoder.encoder.0.weight: 0.00037601840449497104\n", + "Grad encoder.encoder.0.bias: 0.000613735755905509\n", + "Grad encoder.encoder.2.weight: 0.00022818194702267647\n", + "Grad encoder.encoder.2.bias: 0.0007421114714816213\n", + "Grad encoder.encoder.4.weight: 0.0004529652069322765\n", + "Grad encoder.encoder.4.bias: 0.0013047445099800825\n", + "Grad decoder.fc1.0.weight: 0.00010648988245520741\n", + "Grad decoder.fc1.0.bias: 0.00073770631570369\n", + "Grad decoder.fc1.2.weight: 0.0001243829756276682\n", + "Grad decoder.fc1.2.bias: 0.0008318532491102815\n", + "Grad decoder.fc1.4.weight: 0.00013175075582694262\n", + "Grad decoder.fc1.4.bias: 0.0008644938934594393\n", + "Grad decoder.fc2.weight: 0.00024748544092290103\n", + "Grad decoder.fc2.bias: 0.0021854531951248646\n", + "Grad _memory_unit.weight_ih_l0: 2.890816904255189e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.9369613154558465e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.263198595959693e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.3271185707708355e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001769071677699685\n", + "Grad _memory_unit.bias_hh_l1: 9.516809222986922e-05\n", + "Data X Sample: tensor([[1.5223, 1.6881, 1.8587, 1.9504, 2.1514, 2.2615, 2.4373, 2.4417, 2.4727,\n", + " 2.5528, 2.4903, 2.5999, 2.5166, 2.5083, 2.4740, 2.2852, 2.3287, 2.5263,\n", + " 2.5420, 2.4548, 2.3702, 2.4234, 2.4098, 2.4107, 2.4023, 2.4003, 2.4135,\n", + " 2.3737, 2.1856, 2.2238, 2.2187, 2.3516, 2.2286, 1.4601, 1.9315, 1.7877,\n", + " 1.6322, 1.4815, 1.5276, 1.5576, 1.1263, 0.7269, 0.6770, 1.2802, 1.7284,\n", + " 1.9442, 1.2306, 1.8297]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7327, 0.7901, -0.3416, 0.9862, -0.3782, 1.8391, -1.3314, -0.9125,\n", + " 0.8202, -0.9295, -0.6398, 0.0142, -0.4887, 0.1591, 1.1880, -0.4203,\n", + " 0.0765, -0.0424, -1.4544, 0.3749, -0.0338, 0.2371, -0.0343, 0.0120,\n", + " -0.1998, -0.1584, -0.0050, 0.8764, -0.0342, 0.9624, 0.8759, 0.4409,\n", + " 0.8822, 0.7269, -1.0698, 0.6548, -0.9968, -0.7815, -0.4341, -0.6476,\n", + " -0.7611, -0.5834, -0.5490]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.0404, -0.1032, 0.0105, -0.1015, -0.0543, 0.0015, -0.0109, 0.0531,\n", + " 0.0385, 0.0475, 0.0525, -0.0769, -0.0472, -0.1003, -0.0546, -0.0721,\n", + " -0.1374, 0.0109, -0.0363, -0.0210, 0.0158, -0.0907, -0.0435, -0.0021,\n", + " -0.0506, 0.0323, 0.0045, -0.0111, -0.0342, -0.0800, -0.0508, -0.0712,\n", + " -0.1322, -0.1130, -0.0222, -0.0649, -0.0211, 0.0225, 0.0371, 0.0530,\n", + " 0.1141, 0.1288, 0.1213]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.001783883897587657\n", + "Grad encoder.fc1.bias: 0.0007600900717079639\n", + "Grad encoder.encoder.0.weight: 0.0005284321377985179\n", + "Grad encoder.encoder.0.bias: 0.0006729415035806596\n", + "Grad encoder.encoder.2.weight: 0.00040767458267509937\n", + "Grad encoder.encoder.2.bias: 0.0008924690773710608\n", + "Grad encoder.encoder.4.weight: 0.0009112687548622489\n", + "Grad encoder.encoder.4.bias: 0.0021110279485583305\n", + "Grad decoder.fc1.0.weight: 0.00026113184867426753\n", + "Grad decoder.fc1.0.bias: 0.0009573979768902063\n", + "Grad decoder.fc1.2.weight: 0.00037391186924651265\n", + "Grad decoder.fc1.2.bias: 0.0016013237182050943\n", + "Grad decoder.fc1.4.weight: 0.0002899324463214725\n", + "Grad decoder.fc1.4.bias: 0.001429674681276083\n", + "Grad decoder.fc2.weight: 0.0004034136363770813\n", + "Grad decoder.fc2.bias: 0.003553576534613967\n", + "Grad _memory_unit.weight_ih_l0: 5.756043174187653e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.985900108702481e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.059865023009479e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.552193447831087e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002601519809104502\n", + "Grad _memory_unit.bias_hh_l1: 0.00013977433263789862\n", + "Data X Sample: tensor([[1.5403, 1.7726, 1.8798, 2.0947, 2.2180, 2.3999, 2.4497, 2.5127, 2.5216,\n", + " 2.5591, 2.5918, 2.6973, 2.5721, 2.4402, 2.4765, 2.4944, 2.3680, 2.4741,\n", + " 2.4347, 2.4046, 2.4511, 2.3898, 2.3809, 2.4107, 2.3404, 2.4134, 2.4002,\n", + " 2.4104, 2.0884, 2.1976, 2.2642, 2.2411, 2.2352, 1.4463, 1.9585, 1.8704,\n", + " 1.6833, 1.5663, 1.5085, 1.5718, 1.2170, 0.6930, 0.7114, 1.1797, 1.7601,\n", + " 2.0414, 1.3870, 1.9548]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.6694, 0.2208, 1.4576, 0.9159, -0.3843, -0.5773, -1.5970, -0.9010,\n", + " -0.8992, -1.7301, -1.3097, 0.2099, 0.2195, 1.1526, -0.0072, 0.5393,\n", + " 0.9665, -0.2209, 0.5199, 0.0194, -0.3078, 1.7140, -1.2518, 0.4209,\n", + " 0.6771, 0.8688, -0.0516, 1.0053, 0.2756, 1.5599, 0.9502, 0.8406,\n", + " 0.8249, 0.6402, 0.2705, 0.7651, 0.4927, -0.6183, 0.5479, -1.3191,\n", + " -1.2166, -0.8812, 0.1918]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.0495, -0.0931, 0.0124, -0.0899, -0.0435, -0.0042, -0.0054, 0.0543,\n", + " 0.0543, 0.0812, 0.0454, -0.0649, -0.0632, -0.0951, -0.0387, -0.0608,\n", + " -0.1347, 0.0114, -0.0366, -0.0281, 0.0268, -0.0794, -0.0503, -0.0006,\n", + " -0.0596, 0.0099, 0.0177, 0.0073, -0.0147, -0.0705, -0.0402, -0.0843,\n", + " -0.1397, -0.1070, -0.0047, -0.0490, -0.0241, 0.0385, 0.0371, 0.0329,\n", + " 0.1188, 0.1302, 0.1066]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0020768246613442898\n", + "Grad encoder.fc1.bias: 0.0011103887809440494\n", + "Grad encoder.encoder.0.weight: 0.0006504469783976674\n", + "Grad encoder.encoder.0.bias: 0.0011199493892490864\n", + "Grad encoder.encoder.2.weight: 0.00042390075395815074\n", + "Grad encoder.encoder.2.bias: 0.0015218533808365464\n", + "Grad encoder.encoder.4.weight: 0.0009371998021379113\n", + "Grad encoder.encoder.4.bias: 0.0034637998323887587\n", + "Grad decoder.fc1.0.weight: 0.00021014924277551472\n", + "Grad decoder.fc1.0.bias: 0.0014735048171132803\n", + "Grad decoder.fc1.2.weight: 0.00022114555758889765\n", + "Grad decoder.fc1.2.bias: 0.0016465962398797274\n", + "Grad decoder.fc1.4.weight: 0.00016330016660504043\n", + "Grad decoder.fc1.4.bias: 0.0016269281040877104\n", + "Grad decoder.fc2.weight: 0.0002110259811161086\n", + "Grad decoder.fc2.bias: 0.0034968347754329443\n", + "Grad _memory_unit.weight_ih_l0: 4.760385490953922e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00013282836880534887\n", + "Grad _memory_unit.bias_hh_l0: 7.15505811967887e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.5633213226683438e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00036754028405994177\n", + "Grad _memory_unit.bias_hh_l1: 0.00019379652803763747\n", + "Data X Sample: tensor([[1.6167, 1.8410, 2.0150, 2.0881, 2.2863, 2.3027, 2.4389, 2.4517, 2.5582,\n", + " 2.4817, 2.5156, 2.5045, 2.4101, 2.3829, 2.5042, 2.3344, 2.2689, 2.4044,\n", + " 2.4016, 2.3488, 2.4021, 2.4495, 2.4387, 2.4431, 2.4042, 2.5205, 2.4722,\n", + " 2.4961, 2.1925, 2.2042, 2.1312, 2.0780, 1.7336, 1.1374, 1.5810, 1.5299,\n", + " 1.4729, 1.4391, 1.4832, 1.3902, 1.3268, 0.7209, 0.7397, 1.2601, 1.8949,\n", + " 2.1558, 1.3870, 2.1112]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4790, -1.2738, 0.3758, -0.5636, -1.3128, 1.3001, 1.0624, 1.1946,\n", + " 1.0447, 0.7456, 0.5485, -0.8388, -1.3935, -0.3651, 0.5473, 0.1588,\n", + " -0.3928, 0.7207, 1.5671, -0.8876, 0.0734, -1.2039, 0.8407, -0.4399,\n", + " -0.7497, -0.6372, 1.5613, -1.8691, -0.4153, 0.0428, -1.3802, -0.3910,\n", + " -0.1505, -1.3914, -0.0811, -0.6842, -1.0105, -0.6596, 0.0040, 0.3807,\n", + " 0.7843, 0.9069, 0.5991]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.0631, 0.0584, 0.0586, -0.0403, -0.0363, -0.0634, -0.0970, -0.0346,\n", + " -0.0508, 0.0197, -0.1415, -0.0116, 0.0395, 0.0821, 0.0687, 0.0312,\n", + " -0.0198, 0.0638, 0.0018, 0.0339, 0.0122, -0.0240, -0.0417, -0.0310,\n", + " -0.0458, -0.0027, 0.1009, 0.0106, 0.0772, 0.0592, 0.0945, 0.0243,\n", + " -0.0666, 0.0539, 0.0679, 0.0403, -0.0320, 0.0214, 0.0200, -0.1292,\n", + " 0.0287, -0.0081, -0.0244]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00038637081161141396\n", + "Grad encoder.fc1.bias: 0.0003309617459308356\n", + "Grad encoder.encoder.0.weight: 0.00012834445806220174\n", + "Grad encoder.encoder.0.bias: 0.000382305181119591\n", + "Grad encoder.encoder.2.weight: 9.842060535447672e-05\n", + "Grad encoder.encoder.2.bias: 0.00039416144136339426\n", + "Grad encoder.encoder.4.weight: 0.0002455308276694268\n", + "Grad encoder.encoder.4.bias: 0.0006263628602027893\n", + "Grad decoder.fc1.0.weight: 7.667588943149894e-05\n", + "Grad decoder.fc1.0.bias: 0.0005073593929409981\n", + "Grad decoder.fc1.2.weight: 9.7541073046159e-05\n", + "Grad decoder.fc1.2.bias: 0.0005137764383107424\n", + "Grad decoder.fc1.4.weight: 0.00012078924919478595\n", + "Grad decoder.fc1.4.bias: 0.0009009293280541897\n", + "Grad decoder.fc2.weight: 0.0002117827971233055\n", + "Grad decoder.fc2.bias: 0.0017163223819807172\n", + "Grad _memory_unit.weight_ih_l0: 1.4899206689733546e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.949711339781061e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.189076960552484e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.220205356541555e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001321320014540106\n", + "Grad _memory_unit.bias_hh_l1: 7.127872959244996e-05\n", + "Data X Sample: tensor([[1.2221, 1.4055, 1.6063, 1.7230, 1.8014, 1.8843, 2.0321, 2.0073, 3.0928,\n", + " 3.9367, 3.9812, 3.9690, 3.7328, 3.6698, 3.6341, 3.6021, 3.5504, 3.5534,\n", + " 3.4878, 3.4460, 3.2461, 3.0526, 2.6797, 2.6722, 2.6463, 2.7634, 2.8504,\n", + " 2.9937, 2.8933, 2.9804, 3.1566, 3.1032, 3.4167, 2.5471, 4.1106, 4.4534,\n", + " 4.7372, 5.0752, 5.4954, 5.4501, 1.0261, 0.6014, 0.5901, 1.0075, 1.5421,\n", + " 1.6068, 1.1490, 1.6186]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0434, 0.4118, 0.0223, -0.1072, 0.6447, 0.0759, 0.1470, -0.1892,\n", + " 0.0605, -0.3732, 1.0457, -0.1802, -0.1712, 0.5440, -0.9827, -0.7998,\n", + " 0.4904, -0.7920, 0.1699, -0.2052, -0.4534, -1.0089, -0.0371, -0.9621,\n", + " 0.0271, 0.6521, 0.0151, -0.9015, 0.4203, 0.2713, -0.4710, -0.4989,\n", + " -0.3168, 0.9949, 0.1279, 0.2638, 0.1281, 0.3394, -0.5181, 0.0368,\n", + " -0.0584, 0.0431, 0.2054]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1627, -0.1017, -0.0810, -0.1671, -0.0116, 0.0295, 0.1147, 0.1746,\n", + " 0.1212, 0.2493, 0.0472, -0.1253, -0.1291, -0.1835, -0.0569, -0.1583,\n", + " -0.2285, 0.0078, -0.0476, -0.0501, 0.0524, -0.0977, -0.1743, -0.0100,\n", + " -0.1468, -0.0363, 0.0134, 0.0511, 0.0086, -0.1378, -0.0349, -0.1765,\n", + " -0.2068, -0.2302, 0.0034, -0.0386, -0.0326, 0.0718, 0.0438, 0.0869,\n", + " 0.2478, 0.2592, 0.1338]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005034396890550852\n", + "Grad encoder.fc1.bias: 0.0003784381551668048\n", + "Grad encoder.encoder.0.weight: 0.0001575816422700882\n", + "Grad encoder.encoder.0.bias: 0.00044505129335448146\n", + "Grad encoder.encoder.2.weight: 0.0001651479979045689\n", + "Grad encoder.encoder.2.bias: 0.0006515157874673605\n", + "Grad encoder.encoder.4.weight: 0.00042530856444500387\n", + "Grad encoder.encoder.4.bias: 0.0016659880056977272\n", + "Grad decoder.fc1.0.weight: 0.00015368580352514982\n", + "Grad decoder.fc1.0.bias: 0.0009304583654738963\n", + "Grad decoder.fc1.2.weight: 0.00017417485651094466\n", + "Grad decoder.fc1.2.bias: 0.0011311093112453818\n", + "Grad decoder.fc1.4.weight: 0.0001745699264574796\n", + "Grad decoder.fc1.4.bias: 0.0013204315910115838\n", + "Grad decoder.fc2.weight: 0.00019044904911424965\n", + "Grad decoder.fc2.bias: 0.002655879594385624\n", + "Grad _memory_unit.weight_ih_l0: 2.406030398560688e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00010436802404001355\n", + "Grad _memory_unit.bias_hh_l0: 5.774826422566548e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.7369597117067315e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00020221777958795428\n", + "Grad _memory_unit.bias_hh_l1: 0.00011014902702299878\n", + "Data X Sample: tensor([[1.7048, 1.7973, 1.9579, 2.1166, 2.3204, 2.3911, 2.4096, 2.5951, 2.6631,\n", + " 2.7108, 2.6552, 2.6700, 2.6298, 2.5765, 2.5320, 2.5491, 2.5284, 2.6037,\n", + " 2.5131, 2.5143, 2.5248, 2.5413, 2.4965, 2.5176, 2.5356, 2.5022, 2.4562,\n", + " 2.3941, 2.3035, 2.3548, 2.2922, 2.3322, 2.0592, 1.3205, 1.7918, 1.6953,\n", + " 1.6204, 1.5822, 1.5402, 1.5065, 1.2647, 0.7050, 0.7296, 1.2917, 1.8552,\n", + " 2.0929, 1.4006, 2.0799]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 3.6170e-01, 1.8271e-01, 5.9599e-01, 8.2736e-02, -7.1963e-01,\n", + " -1.8254e-01, -2.0790e+00, -1.1732e+00, -5.9693e-01, -1.2641e+00,\n", + " -1.0095e+00, 1.9441e-01, 5.6103e-01, -9.2155e-01, 1.1664e+00,\n", + " 6.2508e-01, 2.6507e-01, -1.4369e-01, -1.4007e+00, 1.2737e-03,\n", + " -6.7420e-02, 1.8851e-01, 4.4647e-01, 1.1058e+00, 4.7374e-01,\n", + " 1.0890e+00, -2.5176e-01, 4.0708e-01, 8.8230e-01, 1.0631e+00,\n", + " 3.4220e-01, 4.9317e-01, 1.1976e+00, 4.5279e-01, 1.7569e+00,\n", + " 9.3938e-01, 0.0000e+00, -4.8646e-01, -1.4048e-01, -1.2143e+00,\n", + " -3.7855e-01, -7.8437e-02, -9.7180e-02]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.1827, 0.1515, 0.0948, 0.0544, 0.0061, -0.0976, -0.1939, -0.1221,\n", + " -0.1457, -0.0862, -0.2562, 0.0760, 0.1638, 0.2030, 0.1312, 0.1459,\n", + " 0.0891, 0.0879, 0.0217, 0.0653, -0.0012, 0.0197, -0.0024, -0.0475,\n", + " 0.0245, -0.0458, 0.1634, 0.0084, 0.1555, 0.1970, 0.2383, 0.1099,\n", + " 0.0542, 0.2011, 0.1222, 0.1723, -0.0592, -0.0366, 0.0667, -0.2493,\n", + " -0.0612, -0.1348, -0.1352]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000721675984095782\n", + "Grad encoder.fc1.bias: 0.00028156201005913317\n", + "Grad encoder.encoder.0.weight: 0.00024023103469517082\n", + "Grad encoder.encoder.0.bias: 0.00030420010443776846\n", + "Grad encoder.encoder.2.weight: 0.0002190214436268434\n", + "Grad encoder.encoder.2.bias: 0.0005760380299761891\n", + "Grad encoder.encoder.4.weight: 0.0005322223296388984\n", + "Grad encoder.encoder.4.bias: 0.001426516566425562\n", + "Grad decoder.fc1.0.weight: 0.0001749910443322733\n", + "Grad decoder.fc1.0.bias: 0.0009763584239408374\n", + "Grad decoder.fc1.2.weight: 0.00018301312229596078\n", + "Grad decoder.fc1.2.bias: 0.0011961740674450994\n", + "Grad decoder.fc1.4.weight: 0.00016948151460383087\n", + "Grad decoder.fc1.4.bias: 0.0015023862943053246\n", + "Grad decoder.fc2.weight: 0.0001965972187463194\n", + "Grad decoder.fc2.bias: 0.0024934152606874704\n", + "Grad _memory_unit.weight_ih_l0: 2.9788721803925e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.581431080121547e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.597275645006448e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.7359492630930617e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00018016339163295925\n", + "Grad _memory_unit.bias_hh_l1: 9.733768820296973e-05\n", + "Data X Sample: tensor([[-0.0011, 0.0058, 0.0120, 0.0087, 0.0051, 0.0192, 0.0077, 0.0014,\n", + " 0.0293, 0.0142, 0.0286, 0.0156, 0.0067, 0.0191, 0.0303, 0.0096,\n", + " -0.0613, -0.0580, -0.0991, -0.0595, -0.0687, -0.0566, -0.0892, -0.0496,\n", + " -0.0544, -0.1123, -0.0879, -0.1550, -0.0208, 0.0000, -0.0140, -0.0166,\n", + " -0.0132, -0.0137, 0.0025, 0.0146, 0.0138, 0.0000, 0.0190, -0.0085,\n", + " 0.0000, -0.0020, 0.0121, 0.0029, 0.0159, 0.0057, 0.0136, -0.0860]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5378, 0.8863, 0.2964, 0.4826, 0.1584, -0.3335, -1.2718, -0.9539,\n", + " -0.8099, -0.8871, -0.6936, -0.3393, 0.2708, 0.4220, 0.3360, 1.6385,\n", + " 1.7115, 0.6189, -4.6845, 0.7132, 0.8249, 0.4689, 0.0167, 0.0930,\n", + " -0.2212, -0.0280, 0.0803, 0.6367, 0.5302, 0.4420, 1.4888, 1.5293,\n", + " 0.7660, 1.2466, -0.1958, 0.2639, 0.0213, -0.4199, -0.3712, -0.5220,\n", + " -0.4953, -1.2387, -0.6317]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4873, 0.4741, 0.0588, 0.2411, -0.0493, -0.2689, -0.6534, -0.6690,\n", + " -0.3107, -0.2299, -0.5083, 0.2380, 0.3852, 0.3832, 0.2145, 0.3295,\n", + " 0.3376, 0.1735, 0.1030, 0.1656, 0.0275, 0.0893, -0.0310, -0.0184,\n", + " 0.0393, -0.0554, 0.1355, 0.0937, 0.4758, 0.4642, 0.4973, 0.3957,\n", + " 0.4146, 0.4585, 0.1654, 0.3096, 0.0462, -0.0350, 0.1344, -0.5296,\n", + " -0.4706, -0.4609, -0.3783]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001730159274302423\n", + "Grad encoder.fc1.bias: 0.00016792606038507074\n", + "Grad encoder.encoder.0.weight: 5.9166181017644703e-05\n", + "Grad encoder.encoder.0.bias: 0.00017399023636244237\n", + "Grad encoder.encoder.2.weight: 4.6654116886202246e-05\n", + "Grad encoder.encoder.2.bias: 0.00021265074610710144\n", + "Grad encoder.encoder.4.weight: 0.00010227492748526856\n", + "Grad encoder.encoder.4.bias: 0.0005301912315189838\n", + "Grad decoder.fc1.0.weight: 4.4650187192019075e-05\n", + "Grad decoder.fc1.0.bias: 0.00035196830867789686\n", + "Grad decoder.fc1.2.weight: 6.53666938887909e-05\n", + "Grad decoder.fc1.2.bias: 0.00047352732508443296\n", + "Grad decoder.fc1.4.weight: 6.92578250891529e-05\n", + "Grad decoder.fc1.4.bias: 0.0006255168118514121\n", + "Grad decoder.fc2.weight: 0.00014082454435992986\n", + "Grad decoder.fc2.bias: 0.0018334714695811272\n", + "Grad _memory_unit.weight_ih_l0: 9.270856025977992e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.7343775804620236e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.5685843866085634e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.684526513505261e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010096653568325564\n", + "Grad _memory_unit.bias_hh_l1: 5.46116461919155e-05\n", + "Data X Sample: tensor([[1.4640, 1.6153, 1.8016, 1.8870, 1.9823, 2.0523, 1.9798, 2.2047, 3.5053,\n", + " 4.0867, 4.4032, 4.1832, 4.0768, 4.0134, 3.7929, 3.7676, 3.7124, 3.4973,\n", + " 3.5952, 3.3066, 3.3786, 3.3190, 2.7472, 2.7371, 2.7758, 2.8861, 2.8291,\n", + " 2.8999, 2.8239, 3.0819, 3.1776, 3.1916, 3.7797, 2.7393, 4.5984, 4.8158,\n", + " 5.1266, 5.3959, 5.9328, 5.8530, 1.1741, 0.6711, 0.6629, 1.1482, 1.7006,\n", + " 1.8699, 1.2714, 1.8532]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6036, -0.5184, -0.9531, -1.4762, -0.5531, -0.8036, -0.3541, 0.2979,\n", + " 0.4101, 0.4296, 0.2312, -0.3785, -0.4457, -0.1305, -0.4944, -0.4145,\n", + " 0.0789, -0.0230, 0.1590, -0.5707, -0.5677, -1.5747, 0.9283, 0.2819,\n", + " -0.2211, -1.0447, 0.1307, 0.5889, -0.3110, 0.0219, -0.9195, 1.3387,\n", + " -0.1700, 1.0935, -0.4789, -1.4361, 0.4852, 0.2799, -0.5970, 0.8988,\n", + " 0.7062, 0.2706, 0.1130]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1721, -0.1576, -0.1273, -0.0978, -0.0767, 0.0594, 0.1047, 0.1938,\n", + " 0.1453, 0.2194, 0.1010, -0.0993, -0.1234, -0.2242, -0.1663, -0.2079,\n", + " -0.1700, -0.0433, -0.0900, -0.0979, -0.0186, -0.1149, -0.1365, -0.0185,\n", + " -0.0880, 0.0243, -0.0453, -0.0377, -0.0710, -0.1418, -0.1349, -0.2138,\n", + " -0.1700, -0.2433, -0.0223, -0.0554, 0.0011, -0.0067, 0.0538, 0.1892,\n", + " 0.2417, 0.2430, 0.2181]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000129729975014925\n", + "Grad encoder.fc1.bias: 0.0003414954408071935\n", + "Grad encoder.encoder.0.weight: 5.024827623856254e-05\n", + "Grad encoder.encoder.0.bias: 0.0004578696098178625\n", + "Grad encoder.encoder.2.weight: 5.6745135225355625e-05\n", + "Grad encoder.encoder.2.bias: 0.0005351171130314469\n", + "Grad encoder.encoder.4.weight: 0.00012652817531488836\n", + "Grad encoder.encoder.4.bias: 0.001498596160672605\n", + "Grad decoder.fc1.0.weight: 7.414239371428266e-05\n", + "Grad decoder.fc1.0.bias: 0.000749248662032187\n", + "Grad decoder.fc1.2.weight: 9.09032387426123e-05\n", + "Grad decoder.fc1.2.bias: 0.0006969024543650448\n", + "Grad decoder.fc1.4.weight: 7.7632641477976e-05\n", + "Grad decoder.fc1.4.bias: 0.0007139951921999454\n", + "Grad decoder.fc2.weight: 0.00016097449406515807\n", + "Grad decoder.fc2.bias: 0.002199651440605521\n", + "Grad _memory_unit.weight_ih_l0: 1.6624238924123347e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00015091864042915404\n", + "Grad _memory_unit.bias_hh_l0: 8.128165063681081e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.2843275726481806e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002764744567684829\n", + "Grad _memory_unit.bias_hh_l1: 0.00014952794299460948\n", + "Data X Sample: tensor([[1.5181, 1.6706, 1.8828, 1.9854, 2.0523, 2.1009, 2.0213, 2.3693, 3.5199,\n", + " 4.2605, 4.1716, 4.2748, 4.1300, 3.9806, 3.8509, 3.6021, 3.6322, 3.6811,\n", + " 3.5126, 3.6432, 3.4375, 3.4109, 2.8460, 2.8478, 2.8152, 2.9436, 3.1355,\n", + " 3.1405, 3.1500, 3.2588, 3.2790, 3.3574, 3.8479, 2.8881, 4.4783, 4.8645,\n", + " 4.9791, 5.5549, 6.1609, 5.7849, 1.1502, 0.6432, 0.7437, 1.1740, 1.7958,\n", + " 1.9156, 1.2578, 1.8453]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3386, -0.3514, -0.4464, -0.4918, 0.8408, 0.6512, 0.2060, 0.4742,\n", + " 0.3316, 0.6379, 0.4949, -0.1753, -0.4162, -0.3033, -0.1632, -1.3728,\n", + " -1.2259, -2.9317, 1.1021, -0.5051, -0.5248, 0.4256, -0.7859, 0.8151,\n", + " 1.0658, 1.1087, 1.2385, 0.8496, -0.4128, -0.7689, -0.0450, -0.6799,\n", + " 0.1150, -0.1466, 0.0137, -2.5280, 0.0000, -0.3886, 0.3478, 0.3295,\n", + " 0.2618, 0.2123, 1.2806]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1703, -0.1650, -0.1248, -0.0811, -0.0898, 0.0722, 0.0983, 0.1976,\n", + " 0.1420, 0.2054, 0.1141, -0.0982, -0.1155, -0.2188, -0.1712, -0.2027,\n", + " -0.1587, -0.0557, -0.0944, -0.1010, -0.0380, -0.1189, -0.1185, -0.0221,\n", + " -0.0801, 0.0401, -0.0605, -0.0586, -0.0823, -0.1285, -0.1522, -0.2134,\n", + " -0.1591, -0.2412, -0.0272, -0.0691, 0.0031, -0.0319, 0.0435, 0.2071,\n", + " 0.2297, 0.2345, 0.2221]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000530422548763454\n", + "Grad encoder.fc1.bias: 0.00047959235962480307\n", + "Grad encoder.encoder.0.weight: 0.0001699468120932579\n", + "Grad encoder.encoder.0.bias: 0.0005450248718261719\n", + "Grad encoder.encoder.2.weight: 0.00011215326958335936\n", + "Grad encoder.encoder.2.bias: 0.0006601337809115648\n", + "Grad encoder.encoder.4.weight: 0.00025363086024299264\n", + "Grad encoder.encoder.4.bias: 0.0011380789801478386\n", + "Grad decoder.fc1.0.weight: 0.0001023564618662931\n", + "Grad decoder.fc1.0.bias: 0.0008927111630328\n", + "Grad decoder.fc1.2.weight: 0.00013146697892807424\n", + "Grad decoder.fc1.2.bias: 0.0010682030115276575\n", + "Grad decoder.fc1.4.weight: 0.00010803678014781326\n", + "Grad decoder.fc1.4.bias: 0.001068970886990428\n", + "Grad decoder.fc2.weight: 0.00018125293718185276\n", + "Grad decoder.fc2.bias: 0.0014626990305259824\n", + "Grad _memory_unit.weight_ih_l0: 2.236006548628211e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0001405862276442349\n", + "Grad _memory_unit.bias_hh_l0: 7.58256355766207e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.5140819414227735e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002795579785015434\n", + "Grad _memory_unit.bias_hh_l1: 0.0001516712800366804\n", + "Data X Sample: tensor([[1.6751, 1.9022, 1.9790, 2.1209, 2.3409, 2.3896, 2.5560, 2.5823, 2.7266,\n", + " 2.7140, 2.6838, 2.7986, 2.5921, 2.4811, 2.4614, 2.4766, 2.4749, 2.4122,\n", + " 2.5668, 2.4567, 2.6033, 2.5306, 2.5664, 2.5290, 2.4924, 2.5544, 2.6133,\n", + " 2.5777, 2.2897, 2.4465, 2.4147, 2.4234, 2.2418, 1.3365, 1.8923, 1.8631,\n", + " 1.7030, 1.6617, 1.6226, 1.5462, 1.2647, 0.7866, 0.7114, 1.2773, 1.8711,\n", + " 2.2415, 1.4618, 2.1190]], device='cuda:0')\n", + "Data Y Sample: tensor([[-7.0095e-01, 6.6572e-01, 7.0035e-01, 2.0883e-01, 3.4264e-01,\n", + " -1.0964e+00, 1.5289e-01, 1.9379e-01, -3.5912e-01, -7.1731e-02,\n", + " -4.2212e-03, 7.1854e-01, 5.0235e-01, -4.5751e-01, -8.5375e-01,\n", + " 5.2650e-01, -9.0569e-01, 1.7147e-01, 2.2728e-01, -1.5079e-01,\n", + " -6.8936e-01, -7.9010e-01, -6.1632e-02, -1.2371e+00, 9.4143e+00,\n", + " -2.2529e-01, -4.9134e-01, -1.1898e+00, -4.4131e-01, -2.2194e-01,\n", + " 2.2441e-01, -3.1431e-02, 3.1900e-01, -2.5843e-02, 2.9449e-01,\n", + " 5.7327e-01, -1.0105e+00, -7.0551e-01, 4.0193e-03, -2.8812e-02,\n", + " -2.8830e-01, -1.5633e-01, -8.2002e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2990, 0.2721, 0.1337, 0.1118, 0.0309, -0.1745, -0.3537, -0.2926,\n", + " -0.2799, -0.2421, -0.3507, 0.1920, 0.2532, 0.3114, 0.1638, 0.2504,\n", + " 0.1889, 0.1501, 0.0505, 0.1208, -0.0251, 0.0170, 0.0523, -0.0576,\n", + " 0.0723, -0.0134, 0.1785, -0.0041, 0.2557, 0.3029, 0.3955, 0.1835,\n", + " 0.2020, 0.3684, 0.1193, 0.2658, -0.0954, -0.0500, 0.1336, -0.3967,\n", + " -0.1960, -0.2688, -0.1564]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00035329157253727317\n", + "Grad encoder.fc1.bias: 0.00021455988462548703\n", + "Grad encoder.encoder.0.weight: 0.00015564955538138747\n", + "Grad encoder.encoder.0.bias: 0.00030684733064845204\n", + "Grad encoder.encoder.2.weight: 0.00013100312207825482\n", + "Grad encoder.encoder.2.bias: 0.0004954248433932662\n", + "Grad encoder.encoder.4.weight: 0.00029443512903526425\n", + "Grad encoder.encoder.4.bias: 0.0011187921045348048\n", + "Grad decoder.fc1.0.weight: 0.00011246665235375986\n", + "Grad decoder.fc1.0.bias: 0.0008602729067206383\n", + "Grad decoder.fc1.2.weight: 0.0001279352291021496\n", + "Grad decoder.fc1.2.bias: 0.0008633797988295555\n", + "Grad decoder.fc1.4.weight: 0.00010174546332564205\n", + "Grad decoder.fc1.4.bias: 0.0009890457149595022\n", + "Grad decoder.fc2.weight: 0.00018469417409505695\n", + "Grad decoder.fc2.bias: 0.0018255698960274458\n", + "Grad _memory_unit.weight_ih_l0: 2.9477401767508127e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00010768348874989897\n", + "Grad _memory_unit.bias_hh_l0: 5.828591747558676e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.3635248251375742e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00021423460566438735\n", + "Grad _memory_unit.bias_hh_l1: 0.00011590003850869834\n", + "Data X Sample: tensor([[ 0.0095, 0.0131, 0.0285, 0.0328, 0.0034, 0.0250, 0.0200, 0.0085,\n", + " 0.0195, 0.0158, 0.0254, -0.0097, 0.0067, 0.0082, -0.0076, 0.0164,\n", + " -0.0723, -0.0987, -0.1115, -0.1209, -0.1080, -0.0750, -0.1542, -0.1470,\n", + " -0.1182, -0.2377, -0.2264, -0.4405, -0.0347, -0.0590, -0.0840, -0.0718,\n", + " -0.0506, -0.0572, -0.0613, -0.0073, -0.0197, -0.0345, -0.0063, -0.0085,\n", + " -0.0334, 0.0080, -0.0020, -0.0086, 0.0238, 0.0229, 0.0204, 0.0313]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.8726, 1.1877, 1.0522, 0.1584, -0.0618, 0.1830, -0.5531, -0.3075,\n", + " 0.1277, -0.6724, -0.3959, 0.1667, -0.5668, 0.4586, 0.5500, 0.9131,\n", + " 0.9751, 0.8083, -1.0455, -0.7284, 0.5730, 0.6206, 0.0370, -0.0883,\n", + " 0.2075, 0.3440, -0.3202, -0.1825, 0.8418, 0.1691, 0.4463, 1.3716,\n", + " 0.5627, 0.7932, 0.7323, 0.8537, 0.9776, 0.6288, -0.9960, -0.2382,\n", + " -0.2192, -0.2782, -0.4899]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5411, 0.5853, 0.1356, 0.2623, -0.0817, -0.3749, -0.7298, -0.7650,\n", + " -0.3925, -0.3287, -0.5669, 0.2694, 0.4036, 0.4421, 0.1976, 0.3956,\n", + " 0.4371, 0.2201, 0.1173, 0.1926, 0.0298, 0.0951, -0.0377, -0.0683,\n", + " 0.0606, -0.0324, 0.1363, 0.0731, 0.5677, 0.5197, 0.5524, 0.3866,\n", + " 0.4799, 0.5408, 0.1836, 0.3449, 0.0749, -0.0044, 0.0888, -0.5913,\n", + " -0.5015, -0.5330, -0.3902]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007509021088480949\n", + "Grad encoder.fc1.bias: 0.00039406094583682716\n", + "Grad encoder.encoder.0.weight: 0.00022654571512248367\n", + "Grad encoder.encoder.0.bias: 0.0003970270627178252\n", + "Grad encoder.encoder.2.weight: 0.00014007520803716034\n", + "Grad encoder.encoder.2.bias: 0.0005886799772270024\n", + "Grad encoder.encoder.4.weight: 0.00033196178264915943\n", + "Grad encoder.encoder.4.bias: 0.001383569440804422\n", + "Grad decoder.fc1.0.weight: 9.556521399645135e-05\n", + "Grad decoder.fc1.0.bias: 0.0006977308075875044\n", + "Grad decoder.fc1.2.weight: 0.00012329014134593308\n", + "Grad decoder.fc1.2.bias: 0.0009506404167041183\n", + "Grad decoder.fc1.4.weight: 0.00010430035035824403\n", + "Grad decoder.fc1.4.bias: 0.0010284429881721735\n", + "Grad decoder.fc2.weight: 0.00018184228974860162\n", + "Grad decoder.fc2.bias: 0.002042910782620311\n", + "Grad _memory_unit.weight_ih_l0: 2.415610470052343e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.30839601601474e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.997645399067551e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.08556405393756e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00015818382962606847\n", + "Grad _memory_unit.bias_hh_l1: 8.46845650812611e-05\n", + "Data X Sample: tensor([[1.4671, 1.8221, 1.9339, 2.0291, 2.1514, 2.3292, 2.4358, 2.4417, 2.4727,\n", + " 2.5244, 2.6172, 2.5960, 2.5144, 2.5547, 2.3933, 2.5751, 2.4938, 2.4315,\n", + " 2.4842, 2.5050, 2.4266, 2.4311, 2.4387, 2.4126, 2.4305, 2.3272, 2.4109,\n", + " 2.4064, 2.1578, 2.3352, 2.3657, 2.2797, 2.2902, 1.5081, 1.9536, 1.7512,\n", + " 1.5614, 1.4709, 1.5339, 1.5718, 1.2695, 0.6910, 0.7336, 1.2457, 1.7323,\n", + " 2.0471, 1.3122, 1.9313]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6435, 0.7351, -0.6086, 1.0773, 2.0579, -0.1166, -0.4639, -0.4828,\n", + " 0.6532, -0.4856, -0.3383, -0.7022, 0.2577, 0.8026, -0.7520, 1.2285,\n", + " -0.0512, 0.3924, -0.1965, 0.0587, -1.0627, -2.8680, 2.8579, -0.7382,\n", + " 0.3011, -0.3832, 0.2683, 0.4689, 0.8194, 1.1704, 0.8317, -0.3057,\n", + " 0.8096, 1.0554, 0.0985, 0.1832, 0.4852, 0.7916, 1.0291, -0.2785,\n", + " -0.3446, -0.0780, -0.7582]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3437, 0.2968, 0.1704, 0.1314, 0.0290, -0.1987, -0.4071, -0.3807,\n", + " -0.3311, -0.3223, -0.3727, 0.2242, 0.2697, 0.3327, 0.1486, 0.2759,\n", + " 0.2269, 0.1593, 0.0638, 0.1354, -0.0438, -0.0015, 0.0829, -0.0254,\n", + " 0.0514, 0.0199, 0.1369, 0.0095, 0.2994, 0.3071, 0.4292, 0.2056,\n", + " 0.2604, 0.3935, 0.1333, 0.2905, -0.0719, -0.0656, 0.1236, -0.4166,\n", + " -0.2439, -0.3103, -0.1362]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00039055803790688515\n", + "Grad encoder.fc1.bias: 0.00020433173631317914\n", + "Grad encoder.encoder.0.weight: 0.00011194762191735208\n", + "Grad encoder.encoder.0.bias: 0.0002184878831030801\n", + "Grad encoder.encoder.2.weight: 8.500271360389888e-05\n", + "Grad encoder.encoder.2.bias: 0.0003204170207027346\n", + "Grad encoder.encoder.4.weight: 0.00019355895346961915\n", + "Grad encoder.encoder.4.bias: 0.0008710600668564439\n", + "Grad decoder.fc1.0.weight: 7.443393405992538e-05\n", + "Grad decoder.fc1.0.bias: 0.0004530092410277575\n", + "Grad decoder.fc1.2.weight: 0.00010992182069458067\n", + "Grad decoder.fc1.2.bias: 0.0006756533985026181\n", + "Grad decoder.fc1.4.weight: 9.224743553204462e-05\n", + "Grad decoder.fc1.4.bias: 0.0008503671851940453\n", + "Grad decoder.fc2.weight: 0.00019335729302838445\n", + "Grad decoder.fc2.bias: 0.00230267271399498\n", + "Grad _memory_unit.weight_ih_l0: 1.4448180991166737e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.1718434911454096e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.7807316908147186e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.471273758914322e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.496185521129519e-05\n", + "Grad _memory_unit.bias_hh_l1: 5.106920434627682e-05\n", + "Data X Sample: tensor([[1.5944, 1.8163, 1.9504, 2.0750, 2.1445, 2.2615, 2.3926, 2.4829, 2.5631,\n", + " 2.5402, 2.5093, 2.6389, 2.4434, 2.4620, 2.4235, 2.3467, 2.3696, 2.3561,\n", + " 2.5420, 2.4660, 2.5321, 2.5229, 2.5303, 2.6206, 2.5863, 2.6485, 2.5840,\n", + " 2.5817, 2.3694, 2.5317, 2.5092, 2.3599, 2.2198, 1.4120, 1.8996, 1.7196,\n", + " 1.6263, 1.4921, 1.4832, 1.5207, 1.3029, 0.7508, 0.7336, 1.3060, 1.8869,\n", + " 2.1215, 1.4346, 2.0486]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 5.4156e-01, 4.0173e-01, -3.2081e-01, 3.0766e-01, -8.3195e-01,\n", + " -6.4904e-01, -1.1380e+00, -2.4479e-01, -1.4517e+00, -4.6397e-01,\n", + " 1.0385e-03, 4.1310e-01, -7.0575e-01, -2.4862e-01, 1.3470e+00,\n", + " -9.6141e-04, -1.8562e-01, 9.0559e-01, -5.1718e-01, 1.1022e-01,\n", + " -3.4772e-01, -1.1905e-01, 2.7964e-02, 1.6080e-01, -3.8881e-01,\n", + " 1.8309e+00, -9.4662e-01, 2.4221e-01, 5.1782e-01, 5.0404e-01,\n", + " 9.5463e-01, 4.7498e-02, 4.7205e-01, 9.3373e-01, 2.7712e-01,\n", + " 7.0187e-01, -1.0622e+00, -7.5055e-02, -1.5613e-02, 5.7138e-02,\n", + " -3.4440e-01, -4.0168e-01, -6.7082e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3695, 0.3232, 0.1863, 0.1478, 0.0209, -0.2187, -0.4451, -0.4289,\n", + " -0.3542, -0.3582, -0.3883, 0.2416, 0.2837, 0.3455, 0.1565, 0.2909,\n", + " 0.2481, 0.1708, 0.0779, 0.1452, -0.0490, -0.0150, 0.0911, -0.0102,\n", + " 0.0389, 0.0343, 0.1191, 0.0318, 0.3287, 0.3202, 0.4525, 0.2178,\n", + " 0.2866, 0.4170, 0.1384, 0.3037, -0.0507, -0.0607, 0.1172, -0.4334,\n", + " -0.2608, -0.3473, -0.1479]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006275606574490666\n", + "Grad encoder.fc1.bias: 0.00025756211834959686\n", + "Grad encoder.encoder.0.weight: 0.00018976558931171894\n", + "Grad encoder.encoder.0.bias: 0.00022249417088460177\n", + "Grad encoder.encoder.2.weight: 0.0001248044427484274\n", + "Grad encoder.encoder.2.bias: 0.00032217660918831825\n", + "Grad encoder.encoder.4.weight: 0.000312875141389668\n", + "Grad encoder.encoder.4.bias: 0.0006567910313606262\n", + "Grad decoder.fc1.0.weight: 0.00011379606439732015\n", + "Grad decoder.fc1.0.bias: 0.0005169159849174321\n", + "Grad decoder.fc1.2.weight: 0.0001489872083766386\n", + "Grad decoder.fc1.2.bias: 0.0006642350344918668\n", + "Grad decoder.fc1.4.weight: 0.00014594299136660993\n", + "Grad decoder.fc1.4.bias: 0.0009313263581134379\n", + "Grad decoder.fc2.weight: 0.00026593252550810575\n", + "Grad decoder.fc2.bias: 0.002041605766862631\n", + "Grad _memory_unit.weight_ih_l0: 2.1649904738296755e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.066128556383774e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.7071561160264537e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0699254744395148e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.555427823215723e-05\n", + "Grad _memory_unit.bias_hh_l1: 5.0982860557269305e-05\n", + "Data X Sample: tensor([[1.5340, 1.8614, 2.1007, 2.3134, 2.4434, 2.5856, 2.5051, 2.5880, 2.5045,\n", + " 2.6065, 2.4363, 2.3273, 2.2614, 2.2330, 2.1487, 2.0144, 2.1070, 2.0911,\n", + " 1.9886, 1.9285, 1.9187, 1.8539, 1.8073, 1.7083, 1.6647, 1.7030, 1.5691,\n", + " 1.6926, 1.2316, 1.2216, 1.1688, 1.1302, 1.0296, 0.7323, 1.1937, 1.3207,\n", + " 1.5044, 1.7677, 2.0156, 1.9803, 1.3172, 0.7727, 0.7781, 1.4122, 2.1169,\n", + " 2.4531, 1.5162, 2.3223]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.8249, -1.4059, 0.0535, -0.9864, -1.0120, -0.2549, 1.5165, 1.8362,\n", + " 1.6668, 2.4538, 2.6653, -0.6375, -0.4601, -0.8856, -1.0855, -1.2548,\n", + " -2.1820, -0.7860, -0.1974, -0.3728, 0.2552, -0.3103, 0.0511, -0.0530,\n", + " -0.2801, -0.1664, 1.3971, 1.1796, -0.7595, -0.4204, -1.0646, -1.0222,\n", + " 1.7958, -2.4547, -1.2640, -0.3717, 0.0000, 0.0000, -0.6571, 4.8220,\n", + " 5.0045, 3.8045, 2.6107]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1390, -0.1260, -0.0710, -0.1060, -0.0553, 0.0548, 0.0979, 0.1677,\n", + " 0.1059, 0.1104, 0.1141, -0.0112, -0.0517, -0.1182, -0.0868, -0.1833,\n", + " -0.1471, -0.0482, -0.0185, -0.1012, -0.0918, -0.0767, -0.0217, -0.0208,\n", + " -0.0784, -0.0011, -0.0744, -0.0663, -0.1296, -0.1258, -0.1019, -0.1717,\n", + " -0.1291, -0.1967, -0.0962, -0.0950, 0.0399, -0.0457, -0.0144, 0.1643,\n", + " 0.2189, 0.1288, 0.2067]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00048897007945925\n", + "Grad encoder.fc1.bias: 0.0003323216224089265\n", + "Grad encoder.encoder.0.weight: 0.0001603679556865245\n", + "Grad encoder.encoder.0.bias: 0.00031289030448533595\n", + "Grad encoder.encoder.2.weight: 9.796000813366845e-05\n", + "Grad encoder.encoder.2.bias: 0.00037405826151371\n", + "Grad encoder.encoder.4.weight: 0.0002319996419828385\n", + "Grad encoder.encoder.4.bias: 0.0005459104431793094\n", + "Grad decoder.fc1.0.weight: 8.026226714719087e-05\n", + "Grad decoder.fc1.0.bias: 0.0004169141175225377\n", + "Grad decoder.fc1.2.weight: 0.00011331515270285308\n", + "Grad decoder.fc1.2.bias: 0.000565966940484941\n", + "Grad decoder.fc1.4.weight: 0.00010286147880833596\n", + "Grad decoder.fc1.4.bias: 0.0006651405710726976\n", + "Grad decoder.fc2.weight: 0.00021003815345466137\n", + "Grad decoder.fc2.bias: 0.0018537860596552491\n", + "Grad _memory_unit.weight_ih_l0: 1.674355189607013e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.8024069251841865e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.5597897800034843e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.860586265451275e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.523834160063416e-05\n", + "Grad _memory_unit.bias_hh_l1: 5.05737989442423e-05\n", + "Data X Sample: tensor([[1.1839, 1.3414, 1.4681, 1.4956, 1.6630, 1.7237, 1.8103, 1.8043, 1.8112,\n", + " 1.9478, 1.8780, 1.8910, 1.9197, 1.7749, 1.8435, 1.8147, 1.8004, 1.7777,\n", + " 1.7945, 1.8169, 1.8500, 1.8662, 1.8314, 1.8400, 1.8505, 1.9276, 1.9367,\n", + " 1.8965, 1.6964, 1.8406, 1.6903, 1.7630, 1.7336, 1.1900, 1.7624, 1.7536,\n", + " 1.4867, 1.2085, 0.9825, 0.8426, 0.9784, 0.6114, 0.5740, 1.0276, 1.4509,\n", + " 1.5554, 1.1422, 1.5169]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5893, 0.0018, -0.8428, 0.2940, -0.0983, -0.0024, 0.0521, -0.4331,\n", + " -0.8261, -0.1745, -0.5007, -0.1822, -0.0593, 0.7924, 0.3916, 0.8034,\n", + " 0.7430, -0.3053, -0.0748, 0.4989, 0.5861, 0.1879, 0.4507, -0.3262,\n", + " -0.2067, 0.7725, -0.8372, -0.0913, -0.7162, 0.1801, 0.1593, -0.7729,\n", + " 0.2960, 1.0203, 0.0023, 0.2081, -0.6306, 0.3945, 0.0000, -0.3396,\n", + " -0.1519, -0.1427, -0.2678]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3731, 0.3491, 0.1712, 0.1362, -0.0564, -0.2410, -0.4596, -0.4579,\n", + " -0.3321, -0.3371, -0.3627, 0.2042, 0.2422, 0.3268, 0.1526, 0.2914,\n", + " 0.2413, 0.1736, 0.0955, 0.1287, -0.0334, -0.0219, 0.0405, 0.0128,\n", + " 0.0030, 0.0424, 0.0642, 0.0825, 0.3504, 0.3134, 0.3961, 0.1945,\n", + " 0.2728, 0.3587, 0.1145, 0.2448, 0.0177, -0.0043, 0.0554, -0.4044,\n", + " -0.2526, -0.3672, -0.1803]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0014825946418568492\n", + "Grad encoder.fc1.bias: 0.001054349122568965\n", + "Grad encoder.encoder.0.weight: 0.00048402469838038087\n", + "Grad encoder.encoder.0.bias: 0.0012664510868489742\n", + "Grad encoder.encoder.2.weight: 0.0002274114522151649\n", + "Grad encoder.encoder.2.bias: 0.0014481190592050552\n", + "Grad encoder.encoder.4.weight: 0.0005374652100726962\n", + "Grad encoder.encoder.4.bias: 0.0033593724947422743\n", + "Grad decoder.fc1.0.weight: 0.0001719885040074587\n", + "Grad decoder.fc1.0.bias: 0.001767486333847046\n", + "Grad decoder.fc1.2.weight: 0.00018017525144387037\n", + "Grad decoder.fc1.2.bias: 0.0016788803040981293\n", + "Grad decoder.fc1.4.weight: 0.00014700740575790405\n", + "Grad decoder.fc1.4.bias: 0.0014643254689872265\n", + "Grad decoder.fc2.weight: 0.0002777056652121246\n", + "Grad decoder.fc2.bias: 0.0024637251626700163\n", + "Grad _memory_unit.weight_ih_l0: 6.148982356535271e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00034737068926915526\n", + "Grad _memory_unit.bias_hh_l0: 0.0001866370439529419\n", + "Grad _memory_unit.weight_ih_l1: 2.6635450922185555e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0006041314918547869\n", + "Grad _memory_unit.bias_hh_l1: 0.0003266774001531303\n", + "Data X Sample: tensor([[2.6765, 2.8183, 2.3456, 2.2215, 2.4041, 2.3646, 3.4619, 3.9522, 4.1033,\n", + " 4.0851, 4.2001, 4.0547, 4.0102, 3.7652, 3.6668, 3.6678, 3.5772, 3.3967,\n", + " 3.6365, 3.4795, 3.4031, 3.3098, 2.9881, 2.8058, 2.7345, 2.8000, 2.7892,\n", + " 2.8509, 2.9349, 2.8690, 2.9781, 2.9733, 3.2187, 2.3732, 3.9390, 4.3780,\n", + " 4.6783, 5.1998, 5.6919, 5.5721, 1.6847, 0.9678, 0.8488, 1.3979, 1.7878,\n", + " 2.1443, 1.5230, 2.0643]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1503, 0.7914, 0.0731, -0.8249, -1.2528, -1.1477, 0.6118, 0.6447,\n", + " 0.5444, 0.7506, 1.0032, 0.9204, 1.1392, -0.6439, -0.6699, -0.7956,\n", + " -0.6831, -0.1398, 0.5144, 0.1225, -0.3184, 0.0828, 0.5508, -0.1519,\n", + " -0.1277, -0.1853, 0.7808, 0.0099, -1.0106, -1.3754, -0.8364, -0.8775,\n", + " 0.0717, -0.4641, -0.5349, -0.7885, 0.1343, -0.3184, -0.0156, 0.6721,\n", + " 0.9780, 1.0701, 0.6485]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2991, -0.2462, -0.1537, -0.1418, -0.0354, 0.1418, 0.1491, 0.3749,\n", + " 0.1698, 0.2392, 0.2920, -0.1190, -0.1817, -0.2755, -0.1932, -0.3535,\n", + " -0.2925, -0.1044, -0.1343, -0.1510, -0.1490, -0.1623, 0.0125, -0.0296,\n", + " -0.1368, -0.0276, -0.1422, -0.1357, -0.3038, -0.2094, -0.2567, -0.2562,\n", + " -0.2830, -0.3754, -0.2788, -0.2354, 0.0138, -0.0490, -0.0178, 0.3772,\n", + " 0.3915, 0.2417, 0.3150]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0026433279272168875\n", + "Grad encoder.fc1.bias: 0.0012920609442517161\n", + "Grad encoder.encoder.0.weight: 0.0007552980678156018\n", + "Grad encoder.encoder.0.bias: 0.0012742022518068552\n", + "Grad encoder.encoder.2.weight: 0.0003424164024181664\n", + "Grad encoder.encoder.2.bias: 0.0015384848229587078\n", + "Grad encoder.encoder.4.weight: 0.0007968568243086338\n", + "Grad encoder.encoder.4.bias: 0.0037222490645945072\n", + "Grad decoder.fc1.0.weight: 0.000159389222972095\n", + "Grad decoder.fc1.0.bias: 0.0014336516615003347\n", + "Grad decoder.fc1.2.weight: 0.00015026843175292015\n", + "Grad decoder.fc1.2.bias: 0.0015425144229084253\n", + "Grad decoder.fc1.4.weight: 0.00011586696200538427\n", + "Grad decoder.fc1.4.bias: 0.0013667807215824723\n", + "Grad decoder.fc2.weight: 0.0001786945213098079\n", + "Grad decoder.fc2.bias: 0.002090218011289835\n", + "Grad _memory_unit.weight_ih_l0: 4.536245251074433e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00016405810310970992\n", + "Grad _memory_unit.bias_hh_l0: 8.73936151037924e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.771598545019515e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00038634322118014097\n", + "Grad _memory_unit.bias_hh_l1: 0.00020261101599317044\n", + "Data X Sample: tensor([[1.4459, 1.5963, 1.7926, 1.8979, 2.1565, 2.2732, 2.0491, 2.0130, 2.7876,\n", + " 3.9856, 4.2477, 4.2786, 4.3631, 4.0733, 3.7526, 3.8127, 3.7108, 3.7082,\n", + " 3.5415, 3.5985, 3.5307, 3.3940, 2.8267, 2.8726, 2.8528, 2.9776, 2.9916,\n", + " 2.9978, 2.9557, 3.1998, 3.4225, 3.3823, 3.9469, 2.8812, 4.7185, 5.0955,\n", + " 5.1502, 5.5152, 6.1356, 5.9892, 1.0882, 0.6154, 0.6346, 1.1338, 1.6768,\n", + " 1.8984, 1.1966, 1.7437]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4345, 0.5348, -0.5080, -0.1105, -1.0041, -0.0627, 1.1913, 0.7405,\n", + " -0.5237, 1.0421, 0.9126, 0.2246, -0.7610, -0.6712, -1.0662, -1.0678,\n", + " 0.1171, 0.8432, 0.3213, 0.7102, 0.7604, 2.3351, 0.3272, -0.2190,\n", + " 1.3900, 0.3921, -0.6846, 0.7000, -1.1200, -0.3563, 0.0597, -1.1916,\n", + " -1.0660, -0.6484, -0.5990, -0.5132, -0.5085, 0.9093, -0.0156, 1.0056,\n", + " 1.1121, 0.8227, 0.7209]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2815, -0.2615, -0.1067, -0.0902, -0.0026, 0.1678, 0.0718, 0.3543,\n", + " 0.1499, 0.2399, 0.2771, -0.1550, -0.2075, -0.2831, -0.1810, -0.3360,\n", + " -0.2547, -0.1106, -0.1533, -0.1450, -0.1175, -0.1660, 0.0384, -0.0379,\n", + " -0.1164, -0.0462, -0.1253, -0.1073, -0.3132, -0.1916, -0.2684, -0.1958,\n", + " -0.3337, -0.3268, -0.2476, -0.2538, -0.0259, -0.0427, 0.0059, 0.3385,\n", + " 0.3371, 0.2368, 0.2914]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003648835117928684\n", + "Grad encoder.fc1.bias: 0.0003256603376939893\n", + "Grad encoder.encoder.0.weight: 0.0001172187621705234\n", + "Grad encoder.encoder.0.bias: 0.00035550520988181233\n", + "Grad encoder.encoder.2.weight: 5.7042700063902885e-05\n", + "Grad encoder.encoder.2.bias: 0.00040726058068685234\n", + "Grad encoder.encoder.4.weight: 0.00012438154953997582\n", + "Grad encoder.encoder.4.bias: 0.001061459188349545\n", + "Grad decoder.fc1.0.weight: 5.548456101678312e-05\n", + "Grad decoder.fc1.0.bias: 0.000537123647518456\n", + "Grad decoder.fc1.2.weight: 6.816934910602868e-05\n", + "Grad decoder.fc1.2.bias: 0.000504160241689533\n", + "Grad decoder.fc1.4.weight: 7.893516158219427e-05\n", + "Grad decoder.fc1.4.bias: 0.0006415670504793525\n", + "Grad decoder.fc2.weight: 0.00015304340922739357\n", + "Grad decoder.fc2.bias: 0.0016344189643859863\n", + "Grad _memory_unit.weight_ih_l0: 1.7473437765147537e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.437575161224231e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.511276711127721e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.55433893573354e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00015958062431309372\n", + "Grad _memory_unit.bias_hh_l1: 8.580918074585497e-05\n", + "Data X Sample: tensor([[1.4120, 1.7595, 1.8903, 2.0750, 2.1309, 2.3071, 2.3125, 2.3523, 2.5020,\n", + " 2.4517, 2.5537, 2.6155, 2.4434, 2.3993, 2.3101, 2.3125, 2.2422, 2.4663,\n", + " 2.4243, 2.3525, 2.4143, 2.4495, 2.4435, 2.4393, 2.4736, 2.4839, 2.4508,\n", + " 2.4512, 2.2688, 2.3188, 2.2012, 2.2715, 2.2550, 1.4326, 1.9242, 1.7707,\n", + " 1.5889, 1.5345, 1.5466, 1.5406, 1.2409, 0.6970, 0.7013, 1.2773, 1.8394,\n", + " 2.0814, 1.2782, 1.8922]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0235, 0.2066, -0.1133, -0.8553, 0.2540, 0.1322, 1.4696, -0.2339,\n", + " 0.3808, 0.7208, 0.5556, -0.4631, 0.8383, 0.3342, 0.6894, -0.0152,\n", + " 0.5268, 0.2381, 0.8550, -1.3796, 1.8400, 0.2314, -0.1241, -0.1129,\n", + " -0.3641, 0.7981, -0.2716, 0.6126, -0.2519, 0.1948, 0.1435, -0.6334,\n", + " 0.2518, -0.0899, -0.4020, 1.2567, -0.5754, -0.7806, -0.7130, 0.8337,\n", + " -0.2563, 0.2398, 0.5418]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3318, 0.2318, 0.1401, 0.1782, -0.0349, -0.1716, -0.3394, -0.3456,\n", + " -0.2524, -0.2992, -0.2612, 0.1585, 0.1860, 0.2593, 0.1202, 0.2342,\n", + " 0.1505, 0.0865, 0.0504, 0.0668, -0.0205, -0.0760, 0.0828, 0.0314,\n", + " -0.0138, 0.0722, 0.0175, 0.0575, 0.2524, 0.1990, 0.2897, 0.1451,\n", + " 0.2448, 0.2840, 0.1290, 0.2163, -0.0195, -0.0731, 0.0461, -0.2983,\n", + " -0.1990, -0.2433, -0.0807]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00017740616749506444\n", + "Grad encoder.fc1.bias: 0.0002377182390773669\n", + "Grad encoder.encoder.0.weight: 6.450504588428885e-05\n", + "Grad encoder.encoder.0.bias: 0.000322474108543247\n", + "Grad encoder.encoder.2.weight: 4.93128172820434e-05\n", + "Grad encoder.encoder.2.bias: 0.00031018839217722416\n", + "Grad encoder.encoder.4.weight: 0.00011430664744693786\n", + "Grad encoder.encoder.4.bias: 0.0006475296104326844\n", + "Grad decoder.fc1.0.weight: 5.351912113837898e-05\n", + "Grad decoder.fc1.0.bias: 0.00035787647357210517\n", + "Grad decoder.fc1.2.weight: 7.775389531161636e-05\n", + "Grad decoder.fc1.2.bias: 0.0004764452460221946\n", + "Grad decoder.fc1.4.weight: 9.104538185056299e-05\n", + "Grad decoder.fc1.4.bias: 0.0007300962461158633\n", + "Grad decoder.fc2.weight: 0.00018470376380719244\n", + "Grad decoder.fc2.bias: 0.002039543120190501\n", + "Grad _memory_unit.weight_ih_l0: 1.115821760322433e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.827194788958877e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.702974234125577e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.981018486840185e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.414437226951122e-05\n", + "Grad _memory_unit.bias_hh_l1: 5.149489879840985e-05\n", + "Data X Sample: tensor([[1.4173, 1.6269, 1.8377, 1.9023, 1.9567, 2.0478, 2.0167, 1.9193, 3.2417,\n", + " 4.0235, 4.0701, 4.2475, 3.9836, 3.7489, 3.6441, 3.4763, 3.4765, 3.3503,\n", + " 3.2834, 3.3103, 3.3074, 3.3588, 3.0387, 2.7695, 2.8603, 2.9253, 2.8584,\n", + " 2.8958, 2.9419, 2.9378, 3.1846, 3.1530, 3.5707, 2.6913, 4.3091, 4.5848,\n", + " 4.8769, 5.2634, 5.7363, 5.5778, 1.0834, 0.6851, 0.6750, 1.2343, 1.6134,\n", + " 1.8527, 1.2578, 1.6264]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0938, -0.6394, -0.3843, 0.3611, 0.2740, 0.6443, 0.3389, 0.6862,\n", + " 0.8401, 0.7245, 0.7255, -0.6518, 0.6649, -0.7541, -2.8554, 0.6164,\n", + " -0.4362, -0.8759, 0.2046, 0.2091, 0.5257, 0.4140, 0.7409, 0.8225,\n", + " 0.5466, 0.7210, -0.0078, -0.3994, -0.2422, 0.0904, -1.0360, -0.1798,\n", + " -0.8280, -0.4167, -0.3722, 0.0665, 0.9392, -0.5073, 0.0000, 0.7267,\n", + " 0.6132, 1.0261, 2.0341]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1993, -0.1856, -0.0335, -0.0663, -0.0036, 0.1281, 0.0326, 0.2280,\n", + " 0.0898, 0.1554, 0.1971, -0.1256, -0.1481, -0.2110, -0.1249, -0.2339,\n", + " -0.1932, -0.0683, -0.1319, -0.1117, -0.0682, -0.1375, 0.0512, -0.0278,\n", + " -0.0925, -0.0473, -0.0861, -0.0788, -0.2386, -0.1595, -0.2154, -0.1209,\n", + " -0.2764, -0.2416, -0.1635, -0.1893, -0.0247, -0.0188, 0.0237, 0.2167,\n", + " 0.2329, 0.1553, 0.2178]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00023938954109326005\n", + "Grad encoder.fc1.bias: 0.00016466001397930086\n", + "Grad encoder.encoder.0.weight: 8.167883788701147e-05\n", + "Grad encoder.encoder.0.bias: 0.00018246298714075238\n", + "Grad encoder.encoder.2.weight: 5.592517482000403e-05\n", + "Grad encoder.encoder.2.bias: 0.00024017697433009744\n", + "Grad encoder.encoder.4.weight: 0.0001332797110080719\n", + "Grad encoder.encoder.4.bias: 0.00039016801747493446\n", + "Grad decoder.fc1.0.weight: 5.5373107898049057e-05\n", + "Grad decoder.fc1.0.bias: 0.0003289830347057432\n", + "Grad decoder.fc1.2.weight: 8.055107173277065e-05\n", + "Grad decoder.fc1.2.bias: 0.0005175844999030232\n", + "Grad decoder.fc1.4.weight: 9.338017116533592e-05\n", + "Grad decoder.fc1.4.bias: 0.0008160490542650223\n", + "Grad decoder.fc2.weight: 0.00017461313109379262\n", + "Grad decoder.fc2.bias: 0.0019390973029658198\n", + "Grad _memory_unit.weight_ih_l0: 1.389666158502223e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.791641600197181e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.5256948245223612e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.293389560596552e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.080818952294067e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.282407462596893e-05\n", + "Data X Sample: tensor([[1.4799, 1.6240, 1.8016, 2.0422, 2.0967, 2.1097, 2.2401, 2.2260, 4.0057,\n", + " 4.3948, 4.3334, 4.2670, 4.1056, 3.9670, 3.7829, 3.6391, 3.5960, 3.6598,\n", + " 3.5952, 3.6357, 3.6191, 3.3205, 2.9881, 2.8669, 2.9053, 3.0925, 3.0449,\n", + " 3.0956, 3.0876, 3.2653, 3.3875, 3.4016, 3.8259, 2.8515, 4.6204, 4.9277,\n", + " 5.1423, 5.4542, 6.0849, 5.8104, 1.1932, 0.6412, 0.6487, 1.2285, 1.6927,\n", + " 1.9442, 1.2782, 1.9079]], device='cuda:0')\n", + "Data Y Sample: tensor([[-2.4519e-01, -8.5967e-01, -1.2340e+00, 3.0196e-01, 6.7989e-01,\n", + " -8.8767e-01, 3.4351e-01, 6.4776e-01, 8.2475e-02, 3.2015e-01,\n", + " 9.2010e-01, 3.4747e-01, 1.2331e+00, -8.3033e-02, -1.6967e-01,\n", + " 5.7627e-01, -2.2697e-01, 6.2182e-01, 2.3617e+00, -3.2986e+00,\n", + " 1.7234e-02, 3.2961e-02, 1.6777e+00, -4.2897e-01, 2.8892e-01,\n", + " 9.7366e-01, -5.5553e-01, -6.5594e-01, -1.2718e-01, -6.9766e-01,\n", + " 2.2964e-01, 2.4131e-01, -4.1018e-01, -2.9482e-01, -6.6499e-01,\n", + " 1.0392e-03, -1.0138e+00, -1.3986e-02, -9.4701e-01, 3.9990e-01,\n", + " 5.7127e-01, 1.6213e-02, 1.1636e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2085, -0.2028, -0.0254, -0.0865, 0.0052, 0.1368, 0.0435, 0.2347,\n", + " 0.0978, 0.1538, 0.2115, -0.1366, -0.1509, -0.2289, -0.1357, -0.2446,\n", + " -0.2026, -0.0682, -0.1333, -0.1145, -0.0652, -0.1359, 0.0542, -0.0236,\n", + " -0.0834, -0.0460, -0.0844, -0.0847, -0.2524, -0.1864, -0.2309, -0.1191,\n", + " -0.2914, -0.2598, -0.1708, -0.1911, -0.0242, -0.0091, 0.0347, 0.2218,\n", + " 0.2382, 0.1641, 0.2315]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001859704207163304\n", + "Grad encoder.fc1.bias: 0.00018750612798612565\n", + "Grad encoder.encoder.0.weight: 5.630937812384218e-05\n", + "Grad encoder.encoder.0.bias: 0.00018340058159083128\n", + "Grad encoder.encoder.2.weight: 4.5534761738963425e-05\n", + "Grad encoder.encoder.2.bias: 0.0002362691011512652\n", + "Grad encoder.encoder.4.weight: 0.00011623769387369975\n", + "Grad encoder.encoder.4.bias: 0.0005885175196453929\n", + "Grad decoder.fc1.0.weight: 5.391543891164474e-05\n", + "Grad decoder.fc1.0.bias: 0.00037847631028853357\n", + "Grad decoder.fc1.2.weight: 6.948604277567938e-05\n", + "Grad decoder.fc1.2.bias: 0.0005129076889716089\n", + "Grad decoder.fc1.4.weight: 7.313152309507132e-05\n", + "Grad decoder.fc1.4.bias: 0.0006656328914687037\n", + "Grad decoder.fc2.weight: 0.00014960163389332592\n", + "Grad decoder.fc2.bias: 0.001742859953083098\n", + "Grad _memory_unit.weight_ih_l0: 9.111935469263699e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.130217348574661e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.2642750991508365e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.449385182349943e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.640013740863651e-05\n", + "Grad _memory_unit.bias_hh_l1: 5.262571357889101e-05\n", + "Data X Sample: tensor([[1.6889, 2.3129, 2.6401, 2.8294, 3.0546, 3.0953, 3.1938, 3.1998, 3.4443,\n", + " 3.3237, 3.5466, 3.4159, 3.2712, 3.2854, 3.1019, 3.1645, 3.1275, 3.2710,\n", + " 3.2318, 3.3159, 3.2584, 3.2134, 3.0291, 2.7810, 2.6013, 2.4813, 2.3816,\n", + " 2.4023, 2.0329, 2.0142, 1.9002, 1.8293, 1.6786, 1.0596, 1.6570, 1.7853,\n", + " 1.9350, 2.1971, 2.5671, 2.6272, 1.5177, 0.9220, 0.9701, 1.6935, 2.4935,\n", + " 2.6018, 1.9853, 2.6273]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3800, -0.5603, 1.2451, 0.3427, -0.0482, 0.1952, -0.3341, 0.0102,\n", + " 0.6054, -0.1094, -0.1893, 0.7912, 0.1817, -0.1720, 1.4922, 0.3182,\n", + " 0.0208, 0.3999, 0.3980, 0.2616, -0.5519, -0.4528, -0.6111, -0.3937,\n", + " 0.2638, -0.0999, 0.2904, 0.3530, 0.1062, 0.2971, 0.0342, -0.4395,\n", + " -0.0300, -0.1782, 0.5117, 1.3035, -0.4285, -0.5073, -0.5988, -0.1414,\n", + " -0.1005, 0.0306, 0.2999]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.0881, -0.1000, 0.0174, -0.0857, -0.0223, 0.0575, 0.0372, 0.0972,\n", + " 0.0664, 0.0690, 0.0879, -0.0403, -0.0378, -0.0905, -0.0515, -0.1065,\n", + " -0.1206, -0.0232, -0.0203, -0.0812, -0.0437, -0.0731, 0.0206, -0.0119,\n", + " -0.0641, -0.0095, -0.0397, -0.0372, -0.1160, -0.1165, -0.0806, -0.0912,\n", + " -0.1360, -0.1494, -0.0505, -0.0857, 0.0291, -0.0123, -0.0064, 0.0824,\n", + " 0.1393, 0.0711, 0.1622]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001946785778272897\n", + "Grad encoder.fc1.bias: 0.0002570529468357563\n", + "Grad encoder.encoder.0.weight: 5.820856677019037e-05\n", + "Grad encoder.encoder.0.bias: 0.0002601341111585498\n", + "Grad encoder.encoder.2.weight: 4.23872479586862e-05\n", + "Grad encoder.encoder.2.bias: 0.00023742869962006807\n", + "Grad encoder.encoder.4.weight: 9.176274761557579e-05\n", + "Grad encoder.encoder.4.bias: 0.0003536593576427549\n", + "Grad decoder.fc1.0.weight: 4.197133966954425e-05\n", + "Grad decoder.fc1.0.bias: 0.00026359118055552244\n", + "Grad decoder.fc1.2.weight: 4.659287151298486e-05\n", + "Grad decoder.fc1.2.bias: 0.0003047860518563539\n", + "Grad decoder.fc1.4.weight: 7.126291166059673e-05\n", + "Grad decoder.fc1.4.bias: 0.000651976210065186\n", + "Grad decoder.fc2.weight: 0.00016669330943841487\n", + "Grad decoder.fc2.bias: 0.0022748804185539484\n", + "Grad _memory_unit.weight_ih_l0: 7.818028279871214e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.24534994433634e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.768812035152223e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.170500116946641e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.32727930881083e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.945542994188145e-05\n", + "Data X Sample: tensor([[1.3695, 1.5322, 1.7400, 1.7733, 1.7792, 1.9727, 2.0229, 2.0698, 1.8552,\n", + " 3.2289, 3.9495, 4.0761, 3.9858, 3.8579, 3.7097, 3.4750, 3.4860, 3.3697,\n", + " 3.3763, 3.3679, 3.3124, 3.3175, 3.0050, 2.7447, 2.7739, 2.8339, 2.8051,\n", + " 2.8713, 2.9245, 2.8723, 2.9711, 3.0839, 3.4145, 2.6135, 4.3165, 4.6553,\n", + " 4.9182, 5.3429, 5.7806, 5.6459, 1.0834, 0.6452, 0.6103, 1.1596, 1.5936,\n", + " 1.7955, 1.2374, 1.6889]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.7132, -1.0174, -1.1866, 0.0211, 0.0930, 0.3163, 0.1657, 0.6224,\n", + " 0.9612, 0.9006, 0.9048, -0.0985, -0.0632, -0.3181, -0.3513, -0.6654,\n", + " -0.8900, -1.2835, -2.5224, -1.1277, -0.8537, -0.4874, -1.6969, -1.9410,\n", + " 0.5585, -0.1550, -2.7501, -1.3647, -2.2624, -1.9747, -1.3307, -1.5493,\n", + " -2.4366, -2.5226, -1.8050, -1.5544, -0.8471, 0.8024, -0.5596, 0.6628,\n", + " 0.5748, 1.2851, 2.0562]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1603, -0.1854, -0.0024, -0.1022, -0.0033, 0.1117, 0.0440, 0.1873,\n", + " 0.0819, 0.1146, 0.1815, -0.1308, -0.1144, -0.1990, -0.1175, -0.1971,\n", + " -0.1836, -0.0440, -0.1076, -0.0923, -0.0426, -0.1073, 0.0368, -0.0179,\n", + " -0.0584, -0.0136, -0.0584, -0.0745, -0.2137, -0.1812, -0.1965, -0.1000,\n", + " -0.2464, -0.2317, -0.1225, -0.1500, -0.0268, -0.0017, 0.0449, 0.1666,\n", + " 0.1956, 0.1457, 0.2057]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004701642319560051\n", + "Grad encoder.fc1.bias: 0.00032676575938239694\n", + "Grad encoder.encoder.0.weight: 0.00015932571841403842\n", + "Grad encoder.encoder.0.bias: 0.00041384249925613403\n", + "Grad encoder.encoder.2.weight: 8.378468919545412e-05\n", + "Grad encoder.encoder.2.bias: 0.000492230465169996\n", + "Grad encoder.encoder.4.weight: 0.00020176001999061555\n", + "Grad encoder.encoder.4.bias: 0.0013575413031503558\n", + "Grad decoder.fc1.0.weight: 7.92227583588101e-05\n", + "Grad decoder.fc1.0.bias: 0.0006661558873020113\n", + "Grad decoder.fc1.2.weight: 0.00010267367179039866\n", + "Grad decoder.fc1.2.bias: 0.000865597918163985\n", + "Grad decoder.fc1.4.weight: 9.648462582845241e-05\n", + "Grad decoder.fc1.4.bias: 0.0009700135560706258\n", + "Grad decoder.fc2.weight: 0.00016100182256195694\n", + "Grad decoder.fc2.bias: 0.002573097590357065\n", + "Grad _memory_unit.weight_ih_l0: 1.4941190784156788e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.665287946816534e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.638635826064274e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.193456207867712e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00016314319509547204\n", + "Grad _memory_unit.bias_hh_l1: 8.716599404579028e-05\n", + "Data X Sample: tensor([[1.6475, 1.9969, 1.9865, 2.1363, 2.2624, 2.4883, 2.5714, 2.5823, 2.6338,\n", + " 2.6523, 2.7282, 2.6505, 2.6143, 2.5056, 2.6127, 2.5464, 2.4702, 2.4605,\n", + " 2.5462, 2.4957, 2.4438, 2.6179, 2.5496, 2.4202, 2.4999, 2.6067, 2.6027,\n", + " 2.6674, 2.3382, 2.4269, 2.4777, 2.3571, 2.1098, 1.3044, 1.8408, 1.7123,\n", + " 1.6538, 1.5981, 1.6163, 1.4952, 1.2791, 0.7886, 0.7478, 1.3347, 1.9028,\n", + " 2.1157, 1.4142, 2.1425]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3031, 0.2759, 0.1446, -0.1944, 0.5515, 0.4858, -0.2221, 0.0368,\n", + " -0.1402, 0.0172, -0.3055, 1.6503, 0.6678, 0.2071, -0.1266, -0.0869,\n", + " -0.7289, -1.3222, -0.2374, 0.3906, -0.5519, 0.1985, -0.2321, -0.3302,\n", + " -0.7792, -0.7382, -1.4094, 0.6524, -1.0322, -1.2168, -0.0148, -0.0143,\n", + " -1.1261, -0.0139, -0.0519, -0.0810, 0.0501, 0.0000, 0.5660, 0.8905,\n", + " -1.1940, 0.4091, -1.3533]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3766, 0.2206, 0.1248, 0.2375, -0.0278, -0.1596, -0.3262, -0.3468,\n", + " -0.2183, -0.3218, -0.2221, 0.1654, 0.1555, 0.2485, 0.1356, 0.2511,\n", + " 0.1302, 0.0506, 0.0655, 0.0506, 0.0273, -0.1250, 0.0893, 0.0717,\n", + " -0.0260, 0.1240, -0.0175, 0.0630, 0.2280, 0.1749, 0.2720, 0.1512,\n", + " 0.2924, 0.2802, 0.1581, 0.2173, -0.0437, -0.1036, 0.0158, -0.2857,\n", + " -0.2016, -0.2160, -0.0735]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00021399643446784467\n", + "Grad encoder.fc1.bias: 0.00047393416753038764\n", + "Grad encoder.encoder.0.weight: 6.746284634573385e-05\n", + "Grad encoder.encoder.0.bias: 0.00043047990766353905\n", + "Grad encoder.encoder.2.weight: 5.304819569573738e-05\n", + "Grad encoder.encoder.2.bias: 0.0004105268744751811\n", + "Grad encoder.encoder.4.weight: 0.0001227474567713216\n", + "Grad encoder.encoder.4.bias: 0.0007887782994657755\n", + "Grad decoder.fc1.0.weight: 5.6095675972756e-05\n", + "Grad decoder.fc1.0.bias: 0.0004633859789464623\n", + "Grad decoder.fc1.2.weight: 7.885647937655449e-05\n", + "Grad decoder.fc1.2.bias: 0.0005475805955938995\n", + "Grad decoder.fc1.4.weight: 8.306826930493116e-05\n", + "Grad decoder.fc1.4.bias: 0.0006382731953635812\n", + "Grad decoder.fc2.weight: 0.00015007790352683514\n", + "Grad decoder.fc2.bias: 0.0018660572823137045\n", + "Grad _memory_unit.weight_ih_l0: 1.1733882274711505e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.311021181521937e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.936536450055428e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.155471732607111e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00014050716708879918\n", + "Grad _memory_unit.bias_hh_l1: 7.515324978157878e-05\n", + "Data X Sample: tensor([[1.4332, 1.7580, 1.8873, 2.0226, 2.2299, 2.2953, 2.4420, 2.4261, 2.4752,\n", + " 2.6713, 2.6996, 2.6038, 2.5499, 2.5274, 2.4387, 2.4753, 2.4309, 2.5089,\n", + " 2.5255, 2.4530, 2.5100, 2.4250, 2.3736, 2.3305, 2.2953, 2.3089, 2.3603,\n", + " 2.2881, 2.1301, 2.2467, 2.3272, 2.3654, 2.2110, 1.3960, 1.9560, 1.8096,\n", + " 1.6381, 1.4709, 1.6100, 1.5831, 1.2218, 0.7567, 0.6892, 1.2285, 1.7244,\n", + " 2.0471, 1.2782, 1.9079]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0932, 0.5926, -0.8646, 0.1752, -0.2571, -1.3029, 1.2668, -0.8818,\n", + " 0.3573, 0.5326, 0.4862, -0.4684, 0.3049, 0.0463, -0.3477, 1.3186,\n", + " 0.6586, 0.2707, 1.4467, 1.1662, 1.5525, 0.1262, 1.5135, 0.3883,\n", + " 0.2870, -0.9546, 0.6374, -0.3946, 0.1317, -0.3821, -0.1276, 0.6944,\n", + " 0.0992, -0.0642, -0.5552, -0.0301, 0.0501, -0.0920, -0.1701, 0.2691,\n", + " 0.4458, -0.2903, -0.2074]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3333, 0.1874, 0.1098, 0.2074, -0.0283, -0.1288, -0.2772, -0.3016,\n", + " -0.1942, -0.2864, -0.1984, 0.1307, 0.1413, 0.2260, 0.1216, 0.2299,\n", + " 0.1025, 0.0447, 0.0571, 0.0417, 0.0110, -0.1089, 0.0777, 0.0692,\n", + " -0.0323, 0.1083, -0.0190, 0.0535, 0.1904, 0.1511, 0.2204, 0.1284,\n", + " 0.2462, 0.2321, 0.1375, 0.1897, -0.0373, -0.0883, 0.0210, -0.2470,\n", + " -0.1803, -0.1869, -0.0517]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00042951348586939275\n", + "Grad encoder.fc1.bias: 0.0006799191469326615\n", + "Grad encoder.encoder.0.weight: 0.00014423782704398036\n", + "Grad encoder.encoder.0.bias: 0.0009799080435186625\n", + "Grad encoder.encoder.2.weight: 0.00010491256398381665\n", + "Grad encoder.encoder.2.bias: 0.0010790042579174042\n", + "Grad encoder.encoder.4.weight: 0.00023602857254445553\n", + "Grad encoder.encoder.4.bias: 0.003021273761987686\n", + "Grad decoder.fc1.0.weight: 0.00011340558558003977\n", + "Grad decoder.fc1.0.bias: 0.001438245875760913\n", + "Grad decoder.fc1.2.weight: 0.00012663962843362242\n", + "Grad decoder.fc1.2.bias: 0.001341696479357779\n", + "Grad decoder.fc1.4.weight: 0.00011833690223284066\n", + "Grad decoder.fc1.4.bias: 0.001343739335425198\n", + "Grad decoder.fc2.weight: 0.00017986334569286555\n", + "Grad decoder.fc2.bias: 0.0025252329651266336\n", + "Grad _memory_unit.weight_ih_l0: 1.991817043744959e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00020276749273762107\n", + "Grad _memory_unit.bias_hh_l0: 0.00010943102824967355\n", + "Grad _memory_unit.weight_ih_l1: 1.7489981473772787e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00039756338810548186\n", + "Grad _memory_unit.bias_hh_l1: 0.00021310060401447117\n", + "Data X Sample: tensor([[1.5425, 1.7638, 1.8798, 2.0357, 2.0967, 2.2438, 2.3480, 2.3992, 2.4947,\n", + " 2.4960, 2.5632, 2.5220, 2.5144, 2.4865, 2.4034, 2.4342, 2.3994, 2.3967,\n", + " 2.3644, 2.4158, 2.3702, 2.4479, 2.3712, 2.3725, 2.4680, 2.5205, 2.4482,\n", + " 2.4920, 2.1162, 2.3810, 2.3062, 2.2604, 2.2396, 1.4692, 1.9094, 1.7488,\n", + " 1.5968, 1.5106, 1.5846, 1.6030, 1.1788, 0.7090, 0.7073, 1.2630, 1.8116,\n", + " 2.0757, 1.3394, 1.8844]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0064, 0.8880, 0.1582, -0.8274, -1.5734, 0.7216, 0.2832, -0.2133,\n", + " 0.0547, 0.0229, 0.2989, -0.8035, 0.1013, -1.1462, 0.0090, -0.5021,\n", + " 0.4933, -0.8719, 1.1632, 0.1531, -0.2921, 0.0726, 0.1247, -0.4860,\n", + " 0.4844, 1.0755, 0.4279, -0.5259, -0.0140, -0.2295, -0.6585, -0.5136,\n", + " -0.0341, -0.2486, 0.6236, -1.2330, 0.4246, -0.7806, -0.9499, -0.2177,\n", + " 0.3749, -0.4092, 0.8774]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3696, 0.2161, 0.1150, 0.2409, -0.0266, -0.1546, -0.3103, -0.3341,\n", + " -0.2079, -0.3092, -0.2147, 0.1519, 0.1484, 0.2437, 0.1392, 0.2486,\n", + " 0.1188, 0.0508, 0.0661, 0.0495, 0.0280, -0.1251, 0.0773, 0.0715,\n", + " -0.0287, 0.1284, -0.0238, 0.0607, 0.2076, 0.1655, 0.2508, 0.1450,\n", + " 0.2826, 0.2701, 0.1583, 0.2025, -0.0492, -0.0920, 0.0074, -0.2728,\n", + " -0.1986, -0.2019, -0.0743]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00011636763520073146\n", + "Grad encoder.fc1.bias: 0.0003132683923467994\n", + "Grad encoder.encoder.0.weight: 3.9753460441716015e-05\n", + "Grad encoder.encoder.0.bias: 0.0002989310887642205\n", + "Grad encoder.encoder.2.weight: 3.1790576031198725e-05\n", + "Grad encoder.encoder.2.bias: 0.0003061310271732509\n", + "Grad encoder.encoder.4.weight: 7.916314643807709e-05\n", + "Grad encoder.encoder.4.bias: 0.0007464932277798653\n", + "Grad decoder.fc1.0.weight: 4.2898613173747435e-05\n", + "Grad decoder.fc1.0.bias: 0.00039483042201027274\n", + "Grad decoder.fc1.2.weight: 4.645699300453998e-05\n", + "Grad decoder.fc1.2.bias: 0.000415246729971841\n", + "Grad decoder.fc1.4.weight: 5.550761488848366e-05\n", + "Grad decoder.fc1.4.bias: 0.0005054175853729248\n", + "Grad decoder.fc2.weight: 0.00012780069664586335\n", + "Grad decoder.fc2.bias: 0.001352193532511592\n", + "Grad _memory_unit.weight_ih_l0: 8.84894689079374e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.582977999234572e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.513792242098134e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.819187208544463e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011300845653750002\n", + "Grad _memory_unit.bias_hh_l1: 6.026941991876811e-05\n", + "Data X Sample: tensor([[1.5414, 1.6692, 1.9609, 1.9854, 1.9943, 2.0729, 2.1985, 2.3083, 3.7640,\n", + " 4.2052, 4.2731, 4.3371, 4.1367, 4.0624, 3.9846, 3.9933, 3.8523, 3.6637,\n", + " 3.6613, 3.5967, 3.6436, 3.3971, 2.9592, 2.9031, 2.8058, 3.0376, 3.0209,\n", + " 3.1487, 3.1674, 3.2326, 3.2965, 3.2690, 3.7951, 2.8217, 4.5738, 4.9520,\n", + " 5.1050, 5.4648, 6.0342, 5.9636, 1.1502, 0.7189, 0.7538, 1.2400, 1.8433,\n", + " 2.0014, 1.3054, 1.7750]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1132, -0.0619, -0.2767, -0.0704, 0.9453, 0.4557, 0.4045, 0.4744,\n", + " 0.5363, 0.2755, 0.3799, -0.6835, -0.3239, -0.1651, 0.0716, -0.4228,\n", + " -0.5467, -1.3349, -0.1477, 1.6456, 0.2006, -0.1613, -0.1218, 1.8710,\n", + " 0.7277, 0.3830, 0.6115, 0.5304, 0.0741, -0.5913, -0.1486, 0.5475,\n", + " -0.3606, -0.6545, 0.4290, 0.9205, -0.8471, -0.5073, -0.5596, 0.5697,\n", + " 0.4522, 0.9578, -0.3379]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1841, -0.2482, -0.0209, -0.1484, -0.0108, 0.1023, 0.1018, 0.2016,\n", + " 0.1137, 0.1167, 0.2026, -0.1440, -0.1014, -0.2491, -0.1496, -0.2335,\n", + " -0.2030, -0.0632, -0.1004, -0.1112, -0.0786, -0.0897, -0.0112, -0.0347,\n", + " -0.0151, 0.0360, -0.0458, -0.1046, -0.2208, -0.2403, -0.2057, -0.1327,\n", + " -0.2265, -0.2736, -0.1072, -0.1240, 0.0011, -0.0217, 0.0532, 0.1971,\n", + " 0.2106, 0.1729, 0.2381]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005279729957692325\n", + "Grad encoder.fc1.bias: 0.0003310591564513743\n", + "Grad encoder.encoder.0.weight: 0.00016674678772687912\n", + "Grad encoder.encoder.0.bias: 0.00033997470745816827\n", + "Grad encoder.encoder.2.weight: 8.924209396354854e-05\n", + "Grad encoder.encoder.2.bias: 0.0004366842331364751\n", + "Grad encoder.encoder.4.weight: 0.00023012325982563198\n", + "Grad encoder.encoder.4.bias: 0.0011332690482959151\n", + "Grad decoder.fc1.0.weight: 7.559870573459193e-05\n", + "Grad decoder.fc1.0.bias: 0.0005916868685744703\n", + "Grad decoder.fc1.2.weight: 8.476953371427953e-05\n", + "Grad decoder.fc1.2.bias: 0.0006963949417695403\n", + "Grad decoder.fc1.4.weight: 8.801277726888657e-05\n", + "Grad decoder.fc1.4.bias: 0.000994045753031969\n", + "Grad decoder.fc2.weight: 0.00016270550258923322\n", + "Grad decoder.fc2.bias: 0.002347328932955861\n", + "Grad _memory_unit.weight_ih_l0: 1.5140511095523834e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.925337270833552e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.6919718948192894e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.673212505527772e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001327945210505277\n", + "Grad _memory_unit.bias_hh_l1: 7.030433334875852e-05\n", + "Data X Sample: tensor([[2.7433, 2.8548, 2.5199, 1.9591, 2.2641, 2.4707, 3.6067, 4.1751, 4.1473,\n", + " 4.0994, 4.2794, 4.0566, 3.9037, 3.9343, 3.7122, 3.7389, 3.7045, 3.5322,\n", + " 3.7026, 3.4944, 3.4399, 3.3205, 2.9086, 2.9852, 2.7946, 2.8339, 2.7545,\n", + " 2.8509, 2.8759, 2.8494, 2.9956, 2.9568, 3.2363, 2.3503, 4.0665, 4.4558,\n", + " 4.6586, 5.1229, 5.5905, 5.5664, 1.9329, 0.9838, 0.8892, 1.5127, 1.8988,\n", + " 1.8470, 1.4006, 1.8922]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2707, 0.0696, -0.9926, -0.3649, 0.7000, 0.5876, 0.2554, 0.1704,\n", + " -0.2544, 0.3836, 0.1408, 0.2653, -0.0084, 0.7507, -0.2382, 0.1718,\n", + " 0.0219, -1.3480, 0.8106, -1.5682, 0.5342, 1.2884, -0.1370, 1.0726,\n", + " 0.0237, -0.4300, 0.5598, -0.9473, -0.5558, -0.5650, -0.2678, -0.0716,\n", + " 0.1728, -1.1405, 0.4531, -0.6303, -0.2391, -0.5073, -0.5988, 0.3168,\n", + " 0.3211, -0.1328, 0.1893]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1884, -0.2592, -0.0384, -0.2202, -0.0307, 0.0527, 0.1674, 0.2173,\n", + " 0.1501, 0.1311, 0.2080, -0.1047, -0.0711, -0.2233, -0.1364, -0.2570,\n", + " -0.2159, -0.0803, -0.0555, -0.1199, -0.1033, -0.0638, -0.0401, -0.0486,\n", + " -0.0267, 0.1017, -0.0155, -0.1004, -0.1863, -0.2563, -0.1823, -0.1750,\n", + " -0.1737, -0.3057, -0.1193, -0.1029, 0.0417, -0.0482, 0.0223, 0.2096,\n", + " 0.2390, 0.2063, 0.2747]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00030362524557858706\n", + "Grad encoder.fc1.bias: 0.00016822274483274668\n", + "Grad encoder.encoder.0.weight: 8.284199429908767e-05\n", + "Grad encoder.encoder.0.bias: 0.00016668604803271592\n", + "Grad encoder.encoder.2.weight: 4.974098555976525e-05\n", + "Grad encoder.encoder.2.bias: 0.00022759383136872202\n", + "Grad encoder.encoder.4.weight: 0.00011253939010202885\n", + "Grad encoder.encoder.4.bias: 0.0004820788453798741\n", + "Grad decoder.fc1.0.weight: 5.3497995395446196e-05\n", + "Grad decoder.fc1.0.bias: 0.00041249001515097916\n", + "Grad decoder.fc1.2.weight: 7.392236875602975e-05\n", + "Grad decoder.fc1.2.bias: 0.0005581746809184551\n", + "Grad decoder.fc1.4.weight: 7.567906868644059e-05\n", + "Grad decoder.fc1.4.bias: 0.0007276384858414531\n", + "Grad decoder.fc2.weight: 0.0001701102446531877\n", + "Grad decoder.fc2.bias: 0.0021361035760492086\n", + "Grad _memory_unit.weight_ih_l0: 9.42569113249192e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.8760859752073884e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.0758980099344626e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.418562068371102e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.263542258646339e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.436527524376288e-05\n", + "Data X Sample: tensor([[1.6008, 1.7930, 1.7746, 2.0291, 2.1787, 2.2349, 2.3033, 2.2870, 2.6021,\n", + " 2.5354, 2.5315, 2.5434, 2.4501, 2.4538, 2.4311, 2.4247, 2.4215, 2.3232,\n", + " 2.4574, 2.3674, 2.4634, 2.4617, 2.5230, 2.4794, 2.4999, 2.5675, 2.5574,\n", + " 2.6225, 2.2619, 2.4138, 2.4007, 2.3847, 2.2506, 1.4807, 1.8776, 1.7390,\n", + " 1.6302, 1.4762, 1.5466, 1.5462, 1.2791, 0.7229, 0.6629, 1.1855, 1.8552,\n", + " 2.0814, 1.3530, 1.8297]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1293, 0.5737, 0.1643, 0.0787, 0.2144, 0.5180, -1.1391, -0.4630,\n", + " -0.5273, -0.7574, -0.2488, -0.0048, 0.1467, -0.5562, 0.7195, -0.0085,\n", + " -0.1527, -0.3264, 0.0345, 0.4968, 0.1281, -0.8988, -0.7885, 0.2897,\n", + " -0.1545, -0.8657, -1.0083, 0.0438, 0.6688, -0.0064, 0.0999, -0.6522,\n", + " 0.4750, 0.8709, 1.2629, 0.6590, -0.9211, -0.6916, -1.8131, -0.2004,\n", + " -0.3540, -0.0797, -0.3755]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4024, 0.2364, 0.0972, 0.2773, -0.0246, -0.1731, -0.3331, -0.3650,\n", + " -0.2136, -0.3233, -0.2204, 0.1710, 0.1426, 0.2599, 0.1713, 0.2629,\n", + " 0.1285, 0.0542, 0.0803, 0.0421, 0.0445, -0.1304, 0.0713, 0.0711,\n", + " -0.0208, 0.1289, -0.0479, 0.0604, 0.2206, 0.1933, 0.2572, 0.1512,\n", + " 0.3155, 0.2984, 0.1629, 0.2090, -0.0584, -0.0798, 0.0044, -0.2894,\n", + " -0.2210, -0.2208, -0.1073]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000707047525793314\n", + "Grad encoder.fc1.bias: 0.0004184903227724135\n", + "Grad encoder.encoder.0.weight: 0.00021300512889865786\n", + "Grad encoder.encoder.0.bias: 0.00039851211477071047\n", + "Grad encoder.encoder.2.weight: 0.00010850024409592152\n", + "Grad encoder.encoder.2.bias: 0.0005416189087554812\n", + "Grad encoder.encoder.4.weight: 0.0002793952589854598\n", + "Grad encoder.encoder.4.bias: 0.0012334638740867376\n", + "Grad decoder.fc1.0.weight: 8.841493399813771e-05\n", + "Grad decoder.fc1.0.bias: 0.0007413632702082396\n", + "Grad decoder.fc1.2.weight: 9.91505803540349e-05\n", + "Grad decoder.fc1.2.bias: 0.0009826216846704483\n", + "Grad decoder.fc1.4.weight: 0.00010329922952223569\n", + "Grad decoder.fc1.4.bias: 0.0011526376474648714\n", + "Grad decoder.fc2.weight: 0.0001864109217422083\n", + "Grad decoder.fc2.bias: 0.0026804523076862097\n", + "Grad _memory_unit.weight_ih_l0: 2.2631553292740136e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.32900046184659e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.406947507755831e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0706997272791341e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00017923038103617728\n", + "Grad _memory_unit.bias_hh_l1: 9.343984856968746e-05\n", + "Data X Sample: tensor([[1.4735, 1.6706, 1.8452, 2.0269, 2.1206, 2.0817, 1.9905, 2.8577, 3.9788,\n", + " 4.3284, 4.3175, 4.2358, 3.9969, 4.0379, 3.8308, 3.7170, 3.6526, 3.6250,\n", + " 3.5973, 3.4219, 3.5356, 3.2639, 2.8243, 2.8210, 2.8528, 2.9985, 2.9996,\n", + " 3.0752, 3.0841, 3.3537, 3.3315, 3.4818, 3.8479, 2.8698, 4.5444, 4.7380,\n", + " 5.1069, 5.4701, 5.9708, 5.8303, 1.1359, 0.7269, 0.6548, 1.1682, 1.6927,\n", + " 1.9442, 1.2578, 1.8610]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3836, -0.3365, 0.2366, -0.2645, -1.0510, -0.7006, 0.0625, 0.0290,\n", + " 0.1640, 0.0939, 0.3489, -0.1488, -0.5937, 0.4020, -2.0490, -0.6718,\n", + " 0.2562, 0.0829, 0.2963, -0.6713, -0.1682, 0.1547, 0.8887, 0.4234,\n", + " 1.7026, 0.2512, 0.0667, -0.2971, -0.0640, -0.6226, -0.1903, 0.3654,\n", + " -0.4635, -0.7192, -0.9877, 0.0321, 0.0849, -0.4703, 0.7297, 0.5119,\n", + " 0.5901, 0.3318, 0.9454]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2664, -0.3631, -0.0910, -0.2110, -0.0181, 0.0916, 0.1793, 0.2898,\n", + " 0.2129, 0.1750, 0.2675, -0.1494, -0.1093, -0.3136, -0.2107, -0.3634,\n", + " -0.2425, -0.1115, -0.0999, -0.1691, -0.1567, -0.0680, -0.0495, -0.0569,\n", + " 0.0256, 0.0897, -0.0432, -0.1521, -0.2580, -0.3486, -0.2628, -0.1981,\n", + " -0.2498, -0.3528, -0.1502, -0.1378, 0.0085, -0.0454, 0.0605, 0.2729,\n", + " 0.3034, 0.2790, 0.3169]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005059583927504718\n", + "Grad encoder.fc1.bias: 0.00045180675806477666\n", + "Grad encoder.encoder.0.weight: 0.00012962940672878176\n", + "Grad encoder.encoder.0.bias: 0.0004186700680293143\n", + "Grad encoder.encoder.2.weight: 7.601899415021762e-05\n", + "Grad encoder.encoder.2.bias: 0.0004942470113746822\n", + "Grad encoder.encoder.4.weight: 0.0001711942459223792\n", + "Grad encoder.encoder.4.bias: 0.000791234546341002\n", + "Grad decoder.fc1.0.weight: 6.944524648133665e-05\n", + "Grad decoder.fc1.0.bias: 0.0006133655551820993\n", + "Grad decoder.fc1.2.weight: 7.002213533269241e-05\n", + "Grad decoder.fc1.2.bias: 0.0005533178918994963\n", + "Grad decoder.fc1.4.weight: 6.813026266172528e-05\n", + "Grad decoder.fc1.4.bias: 0.0006464948528446257\n", + "Grad decoder.fc2.weight: 0.00015745055861771107\n", + "Grad decoder.fc2.bias: 0.0015832632780075073\n", + "Grad _memory_unit.weight_ih_l0: 1.527131644252222e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.27878907835111e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.4336233511567116e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.37893673835788e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001539325894555077\n", + "Grad _memory_unit.bias_hh_l1: 8.297684689750895e-05\n", + "Data X Sample: tensor([[1.4130, 1.5963, 1.7145, 1.8411, 1.9294, 2.0198, 1.9274, 1.7745, 2.8364,\n", + " 3.9177, 4.2160, 4.2163, 3.8282, 3.9207, 3.7879, 3.6459, 3.5976, 3.5476,\n", + " 3.6448, 3.4963, 3.4498, 3.2853, 3.0387, 2.9146, 3.0048, 3.0846, 3.3912,\n", + " 3.4138, 3.2125, 3.2653, 3.4855, 3.4265, 4.0019, 2.9064, 4.6131, 4.9253,\n", + " 5.1050, 5.4489, 6.0215, 5.8530, 1.0643, 0.6154, 0.6103, 1.0764, 1.6689,\n", + " 1.7555, 1.1354, 1.7750]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.8773, -0.3606, -1.2720, -0.2177, 0.2699, 0.6003, -0.0206, 0.1033,\n", + " 0.3719, -0.0301, 0.3176, 0.0499, 0.4381, -0.0759, 0.2010, 0.2646,\n", + " 0.7435, -1.1610, -0.1943, -0.0195, 0.5114, -0.1025, -0.6895, -0.0413,\n", + " 3.2125, 0.0307, -0.7002, 0.1371, 0.6243, -0.0217, 0.8162, 0.2114,\n", + " 0.3551, -0.2807, -0.8428, -0.0165, 0.0000, -0.0911, 1.1507, -0.0113,\n", + " 0.1259, 0.3052, 0.9341]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2893, -0.3936, -0.1030, -0.2041, -0.0201, 0.0985, 0.1930, 0.3026,\n", + " 0.2337, 0.1932, 0.2896, -0.1627, -0.1239, -0.3398, -0.2424, -0.4100,\n", + " -0.2467, -0.1226, -0.1263, -0.1939, -0.1805, -0.0751, -0.0497, -0.0666,\n", + " 0.0357, 0.0803, -0.0448, -0.1775, -0.2728, -0.3702, -0.3003, -0.1986,\n", + " -0.2802, -0.3742, -0.1680, -0.1502, -0.0068, -0.0509, 0.0718, 0.3016,\n", + " 0.3260, 0.3054, 0.3259]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00032236482365988195\n", + "Grad encoder.fc1.bias: 0.0002982885343953967\n", + "Grad encoder.encoder.0.weight: 0.00010377941362094134\n", + "Grad encoder.encoder.0.bias: 0.0003433313686400652\n", + "Grad encoder.encoder.2.weight: 6.208530976437032e-05\n", + "Grad encoder.encoder.2.bias: 0.00034852090175263584\n", + "Grad encoder.encoder.4.weight: 0.00015874415112193674\n", + "Grad encoder.encoder.4.bias: 0.0006827620672993362\n", + "Grad decoder.fc1.0.weight: 6.643949018325657e-05\n", + "Grad decoder.fc1.0.bias: 0.00048266659723594785\n", + "Grad decoder.fc1.2.weight: 8.097632962744683e-05\n", + "Grad decoder.fc1.2.bias: 0.0005403603427112103\n", + "Grad decoder.fc1.4.weight: 8.863974653650075e-05\n", + "Grad decoder.fc1.4.bias: 0.0006784232100471854\n", + "Grad decoder.fc2.weight: 0.00016898929607123137\n", + "Grad decoder.fc2.bias: 0.0019859024323523045\n", + "Grad _memory_unit.weight_ih_l0: 1.1870552043546923e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.78066537855193e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.158344770781696e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.268746230693068e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001236511889146641\n", + "Grad _memory_unit.bias_hh_l1: 6.556895823450759e-05\n", + "Data X Sample: tensor([[2.4240, 2.9101, 3.2817, 3.3585, 3.5771, 3.6021, 3.7531, 3.6371, 3.9373,\n", + " 3.9714, 3.9432, 4.1014, 3.9769, 3.8389, 3.7753, 3.6650, 3.5630, 3.4799,\n", + " 3.5787, 3.5446, 3.4056, 3.3925, 3.1785, 2.9795, 2.9541, 2.8652, 2.8078,\n", + " 2.8183, 2.7406, 2.8002, 2.8556, 2.8379, 2.8623, 2.0619, 3.4953, 3.8575,\n", + " 4.2437, 4.4975, 5.0074, 4.8316, 2.0856, 1.1590, 1.2550, 1.9748, 2.9176,\n", + " 3.1221, 2.1825, 2.9557]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.9052e-01, -2.3283e-01, 5.5303e-01, -4.6678e-01, 7.3588e-02,\n", + " -1.1076e+00, 5.8715e-01, -1.5538e-03, -1.0921e-01, 4.0173e-02,\n", + " -3.0860e-02, 4.9494e-01, -6.8061e-01, -3.8104e-01, 8.1828e-01,\n", + " -9.3019e-03, 5.0297e-02, 4.6561e-01, -3.5035e-01, 5.2282e-01,\n", + " -5.1371e-01, -2.9497e-01, -4.8103e+00, -7.1561e-02, -8.4679e-02,\n", + " -1.7120e-01, 1.9755e+00, -1.5291e-01, -5.4970e-01, -7.1039e-01,\n", + " -2.7139e-02, 9.8895e-01, -2.0200e-01, 2.0307e-02, -5.0369e-02,\n", + " 3.8263e-01, -9.9369e-01, 1.0277e+00, -1.0390e-02, 7.6103e-02,\n", + " 2.0268e-01, 7.6386e-02, -6.8948e-02]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2655, -0.3338, -0.0963, -0.2765, -0.0286, 0.0197, 0.2546, 0.2709,\n", + " 0.2309, 0.2009, 0.2233, -0.0875, -0.0635, -0.2542, -0.1954, -0.3869,\n", + " -0.2374, -0.1394, -0.0447, -0.1715, -0.1853, -0.0437, -0.0644, -0.0737,\n", + " -0.0074, 0.1409, -0.0115, -0.1238, -0.1694, -0.3295, -0.2173, -0.2167,\n", + " -0.2005, -0.3747, -0.1709, -0.1020, 0.0409, -0.0784, 0.0282, 0.2585,\n", + " 0.3080, 0.3233, 0.3541]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004435835871845484\n", + "Grad encoder.fc1.bias: 0.0002659738529473543\n", + "Grad encoder.encoder.0.weight: 0.00014688378723803908\n", + "Grad encoder.encoder.0.bias: 0.0002399808872723952\n", + "Grad encoder.encoder.2.weight: 8.065406291279942e-05\n", + "Grad encoder.encoder.2.bias: 0.00020196927653159946\n", + "Grad encoder.encoder.4.weight: 0.0001786823704605922\n", + "Grad encoder.encoder.4.bias: 0.00034057869925163686\n", + "Grad decoder.fc1.0.weight: 6.319973181234673e-05\n", + "Grad decoder.fc1.0.bias: 0.00026099872775375843\n", + "Grad decoder.fc1.2.weight: 9.385548764839768e-05\n", + "Grad decoder.fc1.2.bias: 0.0004676464304793626\n", + "Grad decoder.fc1.4.weight: 9.090871026273817e-05\n", + "Grad decoder.fc1.4.bias: 0.0005942570860497653\n", + "Grad decoder.fc2.weight: 0.00019059446640312672\n", + "Grad decoder.fc2.bias: 0.001784409862011671\n", + "Grad _memory_unit.weight_ih_l0: 1.4083476344239898e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.8506962078390643e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.0079864296130836e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.0526466515730135e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.158361793495715e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.289581945864484e-05\n", + "Data X Sample: tensor([[1.4364, 1.6866, 1.8858, 1.9482, 2.0660, 2.0434, 1.9720, 2.4403, 3.5639,\n", + " 4.2494, 4.5332, 4.3137, 4.0723, 3.9915, 3.8610, 3.6828, 3.6039, 3.6095,\n", + " 3.4486, 3.5167, 3.5013, 3.2210, 2.8387, 2.8573, 2.8453, 2.9227, 2.9383,\n", + " 2.9447, 2.9765, 3.2424, 3.2301, 3.4016, 3.7841, 2.8240, 4.6131, 4.8450,\n", + " 5.1128, 5.6318, 5.9645, 5.8558, 1.2075, 0.6930, 0.6952, 1.2170, 1.7522,\n", + " 1.8641, 1.3530, 1.7515]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4921, -0.5322, -0.6754, -0.5967, -0.7627, 0.0540, 0.0175, 0.2736,\n", + " -0.5936, 0.3850, -0.1190, -0.4248, 3.8473, 1.1480, -0.4839, -0.0433,\n", + " 1.6287, 1.0568, -0.2533, -0.1085, -0.0569, -0.0357, -0.4027, 0.1915,\n", + " 0.4257, 0.2356, 0.6441, 0.6608, 0.2034, 0.3039, -0.5466, 0.0044,\n", + " -0.1518, -0.4353, -0.2054, 0.5648, 0.4717, -0.1765, 0.0382, 0.1586,\n", + " 0.5986, 0.2546, 0.8268]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3099, -0.4011, -0.1189, -0.2135, -0.0195, 0.0970, 0.2256, 0.3126,\n", + " 0.2498, 0.2271, 0.2926, -0.1604, -0.1252, -0.3370, -0.2687, -0.4457,\n", + " -0.2558, -0.1344, -0.1306, -0.2207, -0.2023, -0.0799, -0.0492, -0.0782,\n", + " 0.0411, 0.0783, -0.0428, -0.1827, -0.2598, -0.3714, -0.3069, -0.1944,\n", + " -0.2907, -0.3946, -0.1934, -0.1611, -0.0185, -0.0559, 0.0718, 0.3207,\n", + " 0.3518, 0.3411, 0.3430]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0009063143515959382\n", + "Grad encoder.fc1.bias: 0.0004730048531200737\n", + "Grad encoder.encoder.0.weight: 0.0002746855025179684\n", + "Grad encoder.encoder.0.bias: 0.0004432544228620827\n", + "Grad encoder.encoder.2.weight: 0.00014677250874228776\n", + "Grad encoder.encoder.2.bias: 0.0004233958898112178\n", + "Grad encoder.encoder.4.weight: 0.00037320610135793686\n", + "Grad encoder.encoder.4.bias: 0.0009416240500286222\n", + "Grad decoder.fc1.0.weight: 0.00012367796443868428\n", + "Grad decoder.fc1.0.bias: 0.000609394337516278\n", + "Grad decoder.fc1.2.weight: 0.00017541515990160406\n", + "Grad decoder.fc1.2.bias: 0.0009535616263747215\n", + "Grad decoder.fc1.4.weight: 0.00015363740385510027\n", + "Grad decoder.fc1.4.bias: 0.001146066002547741\n", + "Grad decoder.fc2.weight: 0.00024037853290792555\n", + "Grad decoder.fc2.bias: 0.0027554540429264307\n", + "Grad _memory_unit.weight_ih_l0: 2.8203552574268542e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.8497495299670845e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.5555498723406345e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.314700330112828e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00014512636698782444\n", + "Grad _memory_unit.bias_hh_l1: 7.673667278140783e-05\n", + "Data X Sample: tensor([[1.5000, 1.8177, 1.9354, 2.0597, 2.1514, 2.1819, 2.2863, 2.3850, 2.4361,\n", + " 2.5007, 2.4744, 2.4811, 2.3968, 2.4593, 2.3101, 2.3207, 2.2516, 2.2458,\n", + " 2.2942, 2.2930, 2.3898, 2.4617, 2.4869, 2.4183, 2.3047, 2.4186, 2.3363,\n", + " 2.3370, 2.0191, 2.0830, 1.9142, 1.8127, 1.5510, 1.0001, 1.4290, 1.4131,\n", + " 1.3883, 1.3516, 1.3247, 1.3221, 1.2695, 0.7428, 0.6892, 1.3462, 1.8751,\n", + " 2.1100, 1.3870, 1.9939]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1465, 0.7191, 0.1204, 0.4607, 0.5399, 1.0187, 0.1627, -0.3622,\n", + " -0.5284, -0.3130, -0.2800, 0.7790, 0.5902, 0.8119, -0.1482, -0.0977,\n", + " 0.1139, 3.9403, 0.4525, -0.5929, -0.0851, -4.8461, 1.6092, 0.1298,\n", + " 0.6161, -0.2341, -0.1239, 0.4893, 0.3517, -0.7245, -0.2914, -0.9006,\n", + " 0.0672, 0.5777, 1.0900, -0.2120, -0.3045, -0.0597, 1.1574, -0.3266,\n", + " -0.3357, -0.3000, 0.1932]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3066, 0.1800, 0.0524, 0.1903, -0.0073, -0.1175, -0.2309, -0.2730,\n", + " -0.1516, -0.2393, -0.1899, 0.1260, 0.1055, 0.2217, 0.1667, 0.2170,\n", + " 0.0696, 0.0370, 0.0745, -0.0122, 0.0209, -0.0709, 0.0523, 0.0220,\n", + " -0.0206, 0.0330, -0.0471, 0.0268, 0.1565, 0.1978, 0.1722, 0.1047,\n", + " 0.2167, 0.2094, 0.1158, 0.1494, -0.0559, -0.0306, 0.0341, -0.2242,\n", + " -0.1801, -0.1715, -0.0915]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004928479320369661\n", + "Grad encoder.fc1.bias: 0.00021821976406499743\n", + "Grad encoder.encoder.0.weight: 0.00013240179396234453\n", + "Grad encoder.encoder.0.bias: 0.00021631286654155701\n", + "Grad encoder.encoder.2.weight: 7.683377771172673e-05\n", + "Grad encoder.encoder.2.bias: 0.0002685122308321297\n", + "Grad encoder.encoder.4.weight: 0.0001715715043246746\n", + "Grad encoder.encoder.4.bias: 0.0006108727538958192\n", + "Grad decoder.fc1.0.weight: 5.468806921271607e-05\n", + "Grad decoder.fc1.0.bias: 0.0003138801548629999\n", + "Grad decoder.fc1.2.weight: 7.373889093287289e-05\n", + "Grad decoder.fc1.2.bias: 0.0004860519547946751\n", + "Grad decoder.fc1.4.weight: 7.123172690626234e-05\n", + "Grad decoder.fc1.4.bias: 0.0005829348810948431\n", + "Grad decoder.fc2.weight: 0.00016306873294524848\n", + "Grad decoder.fc2.bias: 0.0021877784747630358\n", + "Grad _memory_unit.weight_ih_l0: 1.2301871720410418e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.110351124429144e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.1496882507344708e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.811380106024444e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.446584641002119e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.9490096241934225e-05\n", + "Data X Sample: tensor([[1.5456, 1.7667, 1.9143, 2.1100, 2.1992, 2.2850, 2.2586, 2.4403, 2.4361,\n", + " 2.4091, 2.5601, 2.5415, 2.5144, 2.4838, 2.4185, 2.4889, 2.3381, 2.3715,\n", + " 2.4347, 2.3581, 2.4291, 2.4341, 2.4026, 2.4412, 2.4455, 2.5388, 2.3816,\n", + " 2.5246, 2.2133, 2.3090, 2.3272, 2.2825, 2.2220, 1.4418, 1.8874, 1.7147,\n", + " 1.6243, 1.4841, 1.5783, 1.5235, 1.2504, 0.7169, 0.7215, 1.2429, 1.8632,\n", + " 2.2187, 1.3122, 1.8922]], device='cuda:0')\n", + "Data Y Sample: tensor([[-2.2346, -2.2856, 0.5153, 0.6548, 0.7415, -0.0082, 0.7104, -0.9213,\n", + " 0.2033, 0.2981, 0.2709, 0.6537, -1.2095, -0.2929, 0.0821, 0.9379,\n", + " 0.7194, -0.1467, -0.2463, -0.1551, 0.4086, -1.1852, -1.0715, -0.4842,\n", + " -0.3962, -1.1261, 0.6651, 0.3702, -0.8898, 0.7789, -0.4931, 0.5282,\n", + " -0.2599, -0.0764, -0.0585, 1.9673, 0.8233, 0.0000, 0.2870, 1.5739,\n", + " 1.1875, -1.0012, 0.7558]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 3.7238e-01, 2.3582e-01, 6.9280e-02, 2.5335e-01, 1.4792e-02,\n", + " -1.5487e-01, -2.9262e-01, -3.4028e-01, -1.9022e-01, -2.8829e-01,\n", + " -2.2462e-01, 1.7456e-01, 1.2015e-01, 2.5844e-01, 1.9888e-01,\n", + " 2.4851e-01, 1.0441e-01, 5.5247e-02, 9.2266e-02, -9.5181e-06,\n", + " 5.6595e-02, -7.8547e-02, 6.4689e-02, 2.0303e-02, -9.9092e-03,\n", + " 4.8739e-02, -5.3752e-02, 2.9230e-02, 1.9613e-01, 2.5496e-01,\n", + " 2.3608e-01, 1.3826e-01, 2.8449e-01, 2.8435e-01, 1.5068e-01,\n", + " 1.8681e-01, -8.1649e-02, -3.0353e-02, 3.0267e-02, -2.8270e-01,\n", + " -2.2176e-01, -2.1885e-01, -1.4119e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005191998789086938\n", + "Grad encoder.fc1.bias: 0.0004610627656802535\n", + "Grad encoder.encoder.0.weight: 0.00014838232891634107\n", + "Grad encoder.encoder.0.bias: 0.0003746504953596741\n", + "Grad encoder.encoder.2.weight: 7.860834011808038e-05\n", + "Grad encoder.encoder.2.bias: 0.0005231981631368399\n", + "Grad encoder.encoder.4.weight: 0.00018634348816704005\n", + "Grad encoder.encoder.4.bias: 0.0009522770415060222\n", + "Grad decoder.fc1.0.weight: 7.953136082505807e-05\n", + "Grad decoder.fc1.0.bias: 0.0006476271664723754\n", + "Grad decoder.fc1.2.weight: 9.545308421365917e-05\n", + "Grad decoder.fc1.2.bias: 0.0008689416572451591\n", + "Grad decoder.fc1.4.weight: 8.662191976327449e-05\n", + "Grad decoder.fc1.4.bias: 0.0008221617317758501\n", + "Grad decoder.fc2.weight: 0.00015614564472343773\n", + "Grad decoder.fc2.bias: 0.0017570359632372856\n", + "Grad _memory_unit.weight_ih_l0: 1.7151136489701457e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.974156374577433e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.282836405560374e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0926381037279498e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001593430934008211\n", + "Grad _memory_unit.bias_hh_l1: 8.485725265927613e-05\n", + "Data X Sample: tensor([[1.6835, 1.9066, 1.9324, 2.0860, 2.1394, 2.2335, 2.3588, 2.3722, 2.3556,\n", + " 2.4280, 2.5061, 2.4792, 2.3857, 2.3720, 2.3479, 2.3700, 2.3334, 2.3348,\n", + " 2.4553, 2.4492, 2.4119, 2.5015, 2.5592, 2.5825, 2.5863, 2.6511, 2.5707,\n", + " 2.7041, 2.4631, 2.4269, 2.5197, 2.4870, 2.2264, 1.4028, 1.9340, 1.7877,\n", + " 1.6892, 1.5848, 1.5276, 1.5604, 1.4079, 0.7329, 0.7195, 1.3204, 1.8552,\n", + " 2.2415, 1.3938, 1.9392]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6819, 0.2837, 0.1307, 0.2250, 0.0216, -0.9308, 0.2082, -0.2956,\n", + " 0.3950, 0.4636, 0.2503, -0.0470, 0.7426, 0.9284, 1.3801, 1.5891,\n", + " 1.7348, 0.5762, 0.4569, 0.0451, 0.3375, 0.9705, 0.6189, 0.9591,\n", + " -0.6918, 0.0407, 1.5501, -1.0815, -1.1810, 0.4776, -0.0076, -0.8729,\n", + " -0.4179, 0.0261, -0.5532, 1.2564, 0.0501, 0.0940, 0.2870, -0.0033,\n", + " 0.1533, -1.2731, 0.1894]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4583, 0.3165, 0.1299, 0.3494, 0.0538, -0.1666, -0.4014, -0.4605,\n", + " -0.2369, -0.3522, -0.2711, 0.2421, 0.2232, 0.3282, 0.2487, 0.3173,\n", + " 0.1904, 0.1126, 0.1249, 0.0261, 0.0636, -0.0825, 0.0963, 0.0307,\n", + " 0.0045, 0.0549, -0.0388, 0.0682, 0.2620, 0.3372, 0.3340, 0.1984,\n", + " 0.3597, 0.3939, 0.1904, 0.2215, -0.0937, 0.0028, 0.0180, -0.3620,\n", + " -0.2824, -0.3104, -0.2150]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00026573019567877054\n", + "Grad encoder.fc1.bias: 0.0003399592824280262\n", + "Grad encoder.encoder.0.weight: 8.143029117491096e-05\n", + "Grad encoder.encoder.0.bias: 0.00032508480944670737\n", + "Grad encoder.encoder.2.weight: 6.95016497047618e-05\n", + "Grad encoder.encoder.2.bias: 0.0004174628993496299\n", + "Grad encoder.encoder.4.weight: 0.000158037175424397\n", + "Grad encoder.encoder.4.bias: 0.000970488297753036\n", + "Grad decoder.fc1.0.weight: 6.13137599430047e-05\n", + "Grad decoder.fc1.0.bias: 0.0005558363627642393\n", + "Grad decoder.fc1.2.weight: 7.364049088209867e-05\n", + "Grad decoder.fc1.2.bias: 0.0006117098964750767\n", + "Grad decoder.fc1.4.weight: 7.58444148232229e-05\n", + "Grad decoder.fc1.4.bias: 0.0008692248375155032\n", + "Grad decoder.fc2.weight: 0.00015491130761802197\n", + "Grad decoder.fc2.bias: 0.0024312641471624374\n", + "Grad _memory_unit.weight_ih_l0: 1.3301037142809946e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.801344039151445e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.535258317948319e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.585195478692185e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00014065427239984274\n", + "Grad _memory_unit.bias_hh_l1: 7.483565423171967e-05\n", + "Data X Sample: tensor([[1.3929, 1.6604, 1.7596, 1.8935, 1.9601, 1.9005, 2.0291, 2.1209, 3.4613,\n", + " 4.1752, 4.0003, 4.0333, 3.9658, 3.9179, 3.6971, 3.6281, 3.5803, 3.4683,\n", + " 3.4052, 3.3270, 3.4743, 3.3542, 2.8966, 2.8898, 2.8603, 2.9462, 2.9756,\n", + " 2.9407, 2.9974, 3.1867, 3.2371, 3.3685, 3.7357, 2.7874, 4.4513, 4.6504,\n", + " 4.7549, 5.2872, 5.6919, 5.4444, 1.1263, 0.6373, 0.6609, 1.1080, 1.7205,\n", + " 1.9099, 1.1762, 1.7437]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5689, -0.0041, -1.9641, -0.4437, 0.1229, 1.0359, 0.6884, 0.6634,\n", + " -0.5272, 0.4653, 0.3439, -0.8116, -0.4421, -0.9547, -2.6971, -0.7339,\n", + " 0.1892, -0.2998, 0.3813, 0.1799, 0.7523, 0.0084, -0.0079, -0.2875,\n", + " -0.9715, 0.1545, -0.8207, -0.8147, -0.5703, -1.3804, -1.0765, -0.4037,\n", + " -0.8761, -1.1143, -0.7301, -0.7039, -0.5148, -0.4189, 1.0291, 0.6467,\n", + " 0.5745, 0.1091, 0.4628]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1393, -0.1922, -0.0436, -0.0997, -0.0595, 0.0445, 0.0623, 0.1350,\n", + " 0.0783, 0.1079, 0.1665, -0.1159, -0.0972, -0.1713, -0.1479, -0.2012,\n", + " -0.1422, -0.0298, -0.0997, -0.0907, -0.0898, -0.0711, 0.0003, -0.0436,\n", + " 0.0407, 0.0374, -0.0154, -0.1041, -0.1327, -0.1535, -0.1824, -0.0945,\n", + " -0.1921, -0.1846, -0.0931, -0.1308, -0.0806, -0.0063, 0.0844, 0.1203,\n", + " 0.1693, 0.2071, 0.1714]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007437927415594459\n", + "Grad encoder.fc1.bias: 0.00039856499643065035\n", + "Grad encoder.encoder.0.weight: 0.00022624699340667576\n", + "Grad encoder.encoder.0.bias: 0.000460025854408741\n", + "Grad encoder.encoder.2.weight: 0.00011939683463424444\n", + "Grad encoder.encoder.2.bias: 0.0005238376324996352\n", + "Grad encoder.encoder.4.weight: 0.0002749687700998038\n", + "Grad encoder.encoder.4.bias: 0.0013431760016828775\n", + "Grad decoder.fc1.0.weight: 9.103503543883562e-05\n", + "Grad decoder.fc1.0.bias: 0.0007245018496178091\n", + "Grad decoder.fc1.2.weight: 0.0001121761160902679\n", + "Grad decoder.fc1.2.bias: 0.000958265911322087\n", + "Grad decoder.fc1.4.weight: 0.00010441805352456868\n", + "Grad decoder.fc1.4.bias: 0.001057671383023262\n", + "Grad decoder.fc2.weight: 0.00017975045193452388\n", + "Grad decoder.fc2.bias: 0.002519989153370261\n", + "Grad _memory_unit.weight_ih_l0: 1.7233542166650295e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.110799197107553e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.9050304621923715e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0774905604193918e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001594183559063822\n", + "Grad _memory_unit.bias_hh_l1: 8.526835881639272e-05\n", + "Data X Sample: tensor([[2.7104, 3.0106, 3.1270, 3.1792, 3.1997, 3.5344, 3.8347, 3.9196, 3.9520,\n", + " 3.8671, 4.0066, 3.9398, 3.8194, 3.6644, 3.5861, 3.5994, 3.5551, 3.5341,\n", + " 3.4899, 3.3010, 3.1872, 3.2363, 2.9689, 2.9184, 2.6538, 2.6929, 2.7279,\n", + " 2.7245, 2.7129, 2.8657, 2.8276, 2.8600, 2.9657, 2.2862, 3.7503, 4.1883,\n", + " 4.4187, 4.7466, 5.1658, 5.2118, 1.9615, 1.1550, 1.0671, 1.8657, 2.8027,\n", + " 3.0878, 1.8357, 2.7836]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1741, -0.4941, 1.7543, 0.1362, 0.2575, 1.5796, 0.3696, 0.3677,\n", + " 0.1564, 0.5652, 0.1593, 0.2590, -0.2022, 0.5007, 0.0277, -0.4137,\n", + " 0.1530, 1.6933, 0.1445, 0.0792, 0.1685, 0.5575, 0.8058, -0.1444,\n", + " 0.4432, 0.2556, 0.4967, 0.3383, -0.3079, 0.0026, 0.0356, 0.6662,\n", + " -0.0640, 0.1864, -0.4303, -0.1200, 0.5757, -0.8004, 0.4422, 0.3591,\n", + " 0.2024, 0.3647, 0.5189]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1570, -0.2013, -0.0963, -0.1643, -0.0673, -0.0108, 0.1186, 0.1774,\n", + " 0.1464, 0.1754, 0.1501, -0.0720, -0.0805, -0.1109, -0.1279, -0.2396,\n", + " -0.1747, -0.0546, -0.0694, -0.1001, -0.1286, -0.0546, -0.0289, -0.0394,\n", + " 0.0050, 0.1162, 0.0280, -0.0658, -0.0726, -0.1788, -0.1271, -0.1503,\n", + " -0.1424, -0.2112, -0.1097, -0.1021, -0.0604, -0.0230, 0.0594, 0.1212,\n", + " 0.2276, 0.2848, 0.2102]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0012249797582626343\n", + "Grad encoder.fc1.bias: 0.0005473302444443107\n", + "Grad encoder.encoder.0.weight: 0.0003391942591406405\n", + "Grad encoder.encoder.0.bias: 0.0006087702931836247\n", + "Grad encoder.encoder.2.weight: 0.0001735326659400016\n", + "Grad encoder.encoder.2.bias: 0.0006830921629443765\n", + "Grad encoder.encoder.4.weight: 0.0003837599069811404\n", + "Grad encoder.encoder.4.bias: 0.0013080022763460875\n", + "Grad decoder.fc1.0.weight: 0.00010650461626937613\n", + "Grad decoder.fc1.0.bias: 0.0009540739702060819\n", + "Grad decoder.fc1.2.weight: 0.00012023025919916108\n", + "Grad decoder.fc1.2.bias: 0.0009529180824756622\n", + "Grad decoder.fc1.4.weight: 0.00011580753925954923\n", + "Grad decoder.fc1.4.bias: 0.0011066467268392444\n", + "Grad decoder.fc2.weight: 0.00017842708621174097\n", + "Grad decoder.fc2.bias: 0.0022596800699830055\n", + "Grad _memory_unit.weight_ih_l0: 2.0561514247674495e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00012232006702106446\n", + "Grad _memory_unit.bias_hh_l0: 6.463073805207387e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.2659562344197184e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002717234892770648\n", + "Grad _memory_unit.bias_hh_l1: 0.00014476188516709954\n", + "Data X Sample: tensor([[1.5117, 1.7755, 1.8948, 2.0597, 2.1650, 2.3337, 2.4481, 2.4503, 2.4703,\n", + " 2.4786, 2.4934, 2.4967, 2.4745, 2.4102, 2.4488, 2.4507, 2.3994, 2.4702,\n", + " 2.4801, 2.3414, 2.4438, 2.4939, 2.4387, 2.5004, 2.4661, 2.6014, 2.4801,\n", + " 2.4920, 2.2897, 2.3188, 2.3517, 2.4345, 2.2748, 1.4463, 1.9143, 1.7366,\n", + " 1.6636, 1.4550, 1.5593, 1.5604, 1.2361, 0.7129, 0.7316, 1.2515, 1.9147,\n", + " 2.0014, 1.3054, 1.8922]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 5.5330e-01, 1.3401e+00, 1.0879e+00, 4.1119e-01, -3.8778e-01,\n", + " -5.6834e-01, -8.4399e-01, -8.7046e-01, -1.2222e+00, -6.7693e-01,\n", + " -8.1842e-01, 1.0410e-01, 6.4141e-01, 6.2639e-01, 7.8348e-01,\n", + " 1.4747e-01, -5.6517e-01, -9.0085e-02, 6.7701e-01, 1.0006e-01,\n", + " 8.3273e-01, 4.0213e-01, -3.5921e-02, 3.0637e-01, 1.1761e+00,\n", + " 2.8977e-02, -2.0691e+00, 5.4293e-01, -2.4396e-01, 2.2546e-01,\n", + " 2.3902e-01, -6.2991e-02, 9.5486e-01, 9.5490e-02, 1.1677e+00,\n", + " 4.4850e-01, -1.9440e-03, -4.0969e-01, -4.0658e-01, -8.5525e-01,\n", + " -6.6998e-01, -5.5892e-01, -1.0539e+00]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4316, 0.3305, 0.1514, 0.3255, 0.0794, -0.1744, -0.3898, -0.4453,\n", + " -0.2689, -0.3459, -0.2817, 0.2322, 0.1832, 0.3181, 0.2320, 0.2940,\n", + " 0.1694, 0.1296, 0.1295, 0.0557, 0.0808, -0.0351, 0.0814, 0.0216,\n", + " 0.0082, 0.0414, -0.0191, 0.0437, 0.2624, 0.3723, 0.3288, 0.1932,\n", + " 0.3348, 0.3762, 0.1791, 0.2403, -0.0976, 0.0233, 0.0400, -0.3788,\n", + " -0.2735, -0.3239, -0.2419]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001595532230567187\n", + "Grad encoder.fc1.bias: 0.00047344472841359675\n", + "Grad encoder.encoder.0.weight: 5.731804412789643e-05\n", + "Grad encoder.encoder.0.bias: 0.0004909768467769027\n", + "Grad encoder.encoder.2.weight: 5.364712706068531e-05\n", + "Grad encoder.encoder.2.bias: 0.00043698184890672565\n", + "Grad encoder.encoder.4.weight: 0.00010995910270139575\n", + "Grad encoder.encoder.4.bias: 0.0010046164970844984\n", + "Grad decoder.fc1.0.weight: 6.689874862786382e-05\n", + "Grad decoder.fc1.0.bias: 0.0006736456416547298\n", + "Grad decoder.fc1.2.weight: 8.231309038819745e-05\n", + "Grad decoder.fc1.2.bias: 0.0006938822334632277\n", + "Grad decoder.fc1.4.weight: 8.250385872088373e-05\n", + "Grad decoder.fc1.4.bias: 0.0007246772293001413\n", + "Grad decoder.fc2.weight: 0.00015916702977847308\n", + "Grad decoder.fc2.bias: 0.001341959577985108\n", + "Grad _memory_unit.weight_ih_l0: 1.543124562886078e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0001219143669004552\n", + "Grad _memory_unit.bias_hh_l0: 6.541470065712929e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0691966963349842e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00023286031500902027\n", + "Grad _memory_unit.bias_hh_l1: 0.00012516448623500764\n", + "Data X Sample: tensor([[1.6008, 1.9051, 2.0796, 2.1231, 2.1889, 2.1657, 2.2771, 2.3523, 2.4264,\n", + " 2.3901, 2.3634, 2.4091, 2.4234, 2.2684, 2.2268, 2.2879, 2.2516, 2.2497,\n", + " 2.4656, 2.3563, 2.3555, 2.4893, 2.4628, 2.5176, 2.6069, 2.4865, 2.5388,\n", + " 2.5695, 2.2376, 2.2369, 2.1907, 2.1305, 1.7644, 1.1488, 1.5908, 1.5664,\n", + " 1.4808, 1.4338, 1.3945, 1.3476, 1.2361, 0.7408, 0.7599, 1.4122, 1.9147,\n", + " 2.1386, 1.4346, 1.9548]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.1694, 0.3139, -0.1894, 0.2065, 0.5524, 0.6872, 0.3783, -0.4375,\n", + " -0.1532, -0.2707, -0.3882, -0.2278, -0.0812, 1.0593, -0.0059, 0.5927,\n", + " 0.3329, 0.0558, -0.1084, -1.8687, -0.4612, -0.0934, 0.3007, -0.6375,\n", + " 0.8024, 0.6838, -0.7414, -0.8438, -0.9277, -0.9239, -0.1168, 0.0574,\n", + " 1.3440, 0.0899, 0.5631, 0.6444, 0.4852, -0.7725, 0.2253, 0.0631,\n", + " 0.0795, -0.3799, -0.0491]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3897, 0.3083, 0.1443, 0.2923, 0.0679, -0.1613, -0.3587, -0.4034,\n", + " -0.2617, -0.3109, -0.2605, 0.2026, 0.1519, 0.2917, 0.2063, 0.2631,\n", + " 0.1437, 0.1259, 0.1160, 0.0601, 0.0761, -0.0215, 0.0668, 0.0212,\n", + " 0.0038, 0.0409, -0.0153, 0.0377, 0.2422, 0.3509, 0.2984, 0.1722,\n", + " 0.2957, 0.3343, 0.1566, 0.2218, -0.0854, 0.0265, 0.0434, -0.3523,\n", + " -0.2445, -0.2985, -0.2235]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00063959916587919\n", + "Grad encoder.fc1.bias: 0.00035731674870476127\n", + "Grad encoder.encoder.0.weight: 0.00018532443209551275\n", + "Grad encoder.encoder.0.bias: 0.0004387244407553226\n", + "Grad encoder.encoder.2.weight: 9.955013229046017e-05\n", + "Grad encoder.encoder.2.bias: 0.0004971267771907151\n", + "Grad encoder.encoder.4.weight: 0.00025642913533374667\n", + "Grad encoder.encoder.4.bias: 0.0013356802519410849\n", + "Grad decoder.fc1.0.weight: 9.004713501781225e-05\n", + "Grad decoder.fc1.0.bias: 0.0007192523335106671\n", + "Grad decoder.fc1.2.weight: 0.00011787581024691463\n", + "Grad decoder.fc1.2.bias: 0.0008256121654994786\n", + "Grad decoder.fc1.4.weight: 0.00010476798343006521\n", + "Grad decoder.fc1.4.bias: 0.0009458095883019269\n", + "Grad decoder.fc2.weight: 0.000193082814803347\n", + "Grad decoder.fc2.bias: 0.0022722277790308\n", + "Grad _memory_unit.weight_ih_l0: 1.6901309209060855e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.672763265669346e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.663528332253918e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.512834367342293e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00015471974620595574\n", + "Grad _memory_unit.bias_hh_l1: 8.258468005806208e-05\n", + "Data X Sample: tensor([[1.5456, 1.6633, 1.8572, 1.9395, 2.1002, 2.2394, 2.4342, 2.4446, 2.4337,\n", + " 2.5196, 2.5823, 2.5921, 2.6099, 2.4620, 2.4866, 2.4411, 2.4136, 2.3986,\n", + " 2.4574, 2.4418, 2.4340, 2.3913, 2.3038, 2.2732, 2.3329, 2.4291, 2.3363,\n", + " 2.4023, 2.1093, 2.2959, 2.2957, 2.2521, 2.2594, 1.4372, 1.9291, 1.7245,\n", + " 1.6125, 1.4815, 1.6036, 1.6058, 1.2122, 0.7209, 0.7356, 1.1912, 1.7601,\n", + " 1.9785, 1.2782, 1.9392]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5935, 0.9453, 1.0496, 0.7225, 0.7185, -0.0731, -0.6026, -0.4798,\n", + " -0.1939, -0.7056, -0.7783, -1.1622, 0.5085, 1.1936, -0.7624, 1.3465,\n", + " 0.7513, -0.4990, 0.0443, 0.9937, 0.1896, -1.0728, -0.4796, 0.3932,\n", + " 1.1996, 0.1130, 0.3775, -1.7337, -0.1752, -0.1217, 1.0455, -0.1941,\n", + " -0.0394, 0.6690, -0.8729, -0.1145, 0.9536, -0.3495, -0.2783, -0.4417,\n", + " -0.3863, -0.1186, -1.6834]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3665, 0.2943, 0.1333, 0.2665, 0.0589, -0.1499, -0.3389, -0.3767,\n", + " -0.2628, -0.2952, -0.2511, 0.1817, 0.1443, 0.2869, 0.1937, 0.2491,\n", + " 0.1298, 0.1244, 0.1136, 0.0636, 0.0546, -0.0137, 0.0600, 0.0179,\n", + " 0.0012, 0.0430, -0.0093, 0.0371, 0.2263, 0.3422, 0.2814, 0.1612,\n", + " 0.2729, 0.3121, 0.1323, 0.2035, -0.0773, 0.0289, 0.0568, -0.3311,\n", + " -0.2343, -0.2821, -0.2037]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0008928716415539384\n", + "Grad encoder.fc1.bias: 0.00048126070760190487\n", + "Grad encoder.encoder.0.weight: 0.00023944530403241515\n", + "Grad encoder.encoder.0.bias: 0.0004523088864516467\n", + "Grad encoder.encoder.2.weight: 0.0001313719985773787\n", + "Grad encoder.encoder.2.bias: 0.0006634884048253298\n", + "Grad encoder.encoder.4.weight: 0.0003096440923400223\n", + "Grad encoder.encoder.4.bias: 0.0014233940746635199\n", + "Grad decoder.fc1.0.weight: 9.128481178777292e-05\n", + "Grad decoder.fc1.0.bias: 0.0008222748874686658\n", + "Grad decoder.fc1.2.weight: 0.00011743495269911364\n", + "Grad decoder.fc1.2.bias: 0.0010971517767757177\n", + "Grad decoder.fc1.4.weight: 0.00011511610500747338\n", + "Grad decoder.fc1.4.bias: 0.0012410222552716732\n", + "Grad decoder.fc2.weight: 0.00019187480211257935\n", + "Grad decoder.fc2.bias: 0.0021514578256756067\n", + "Grad _memory_unit.weight_ih_l0: 2.1039893908891827e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.288492295425385e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.381510032340884e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.2884018360637128e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00022727122996002436\n", + "Grad _memory_unit.bias_hh_l1: 0.00011860910308314487\n", + "Data X Sample: tensor([[-0.0074, -0.0073, -0.0030, 0.0044, 0.0000, 0.0015, 0.0123, -0.0028,\n", + " 0.0122, 0.0158, 0.0095, 0.0019, -0.0022, -0.0055, 0.0126, -0.0014,\n", + " -0.0031, 0.0135, 0.0041, 0.0019, 0.0098, 0.0061, -0.0024, 0.0095,\n", + " -0.0056, 0.0052, 0.0107, 0.0489, -0.0416, 0.0328, 0.0070, 0.0304,\n", + " 0.0066, 0.0000, 0.0025, 0.0170, 0.0039, 0.0186, -0.0317, 0.0142,\n", + " 0.0286, 0.0159, 0.0040, 0.0115, 0.0119, 0.0172, -0.0612, 0.0156]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.5320, 2.0854, 0.1945, 1.6241, 0.3828, -0.3959, -1.0229, -0.7654,\n", + " -1.0290, -0.8365, -1.0707, -0.3458, 0.1223, 1.3577, 0.5897, 0.1188,\n", + " 0.2779, 0.6660, 0.5084, 0.2472, -0.0497, 0.3567, 2.4350, 0.9105,\n", + " -0.1248, -0.5543, 0.5727, -0.2056, 0.7550, 0.9186, 0.4975, -0.4962,\n", + " 1.4500, 0.5465, 0.0229, 0.5691, 0.4289, -0.7231, -0.0131, -0.7115,\n", + " -0.7838, -1.0608, -0.4865]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 9.4205e-01, 8.2122e-01, 3.1783e-01, 6.4279e-01, 9.2502e-02,\n", + " -4.4039e-01, -9.2810e-01, -1.0878e+00, -5.8308e-01, -7.0251e-01,\n", + " -6.0687e-01, 3.7834e-01, 4.3087e-01, 7.0050e-01, 4.5549e-01,\n", + " 6.2172e-01, 4.9762e-01, 2.8383e-01, 2.1649e-01, 1.7587e-01,\n", + " 1.6558e-01, 5.7249e-02, 9.3955e-02, 3.4131e-02, 3.0611e-02,\n", + " 6.0821e-02, 1.2116e-02, 5.4636e-02, 6.8859e-01, 9.1100e-01,\n", + " 6.0580e-01, 5.0620e-01, 7.5149e-01, 7.2360e-01, 2.7457e-01,\n", + " 4.1478e-01, 1.0806e-03, 1.2354e-01, 9.9968e-03, -7.4376e-01,\n", + " -7.5143e-01, -7.4029e-01, -6.6760e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00022975023603066802\n", + "Grad encoder.fc1.bias: 0.0004916564794257283\n", + "Grad encoder.encoder.0.weight: 7.039597403490916e-05\n", + "Grad encoder.encoder.0.bias: 0.0003889866347890347\n", + "Grad encoder.encoder.2.weight: 4.9015219701686874e-05\n", + "Grad encoder.encoder.2.bias: 0.00039630907122045755\n", + "Grad encoder.encoder.4.weight: 0.0001321937597822398\n", + "Grad encoder.encoder.4.bias: 0.0009301588288508356\n", + "Grad decoder.fc1.0.weight: 6.140064215287566e-05\n", + "Grad decoder.fc1.0.bias: 0.0005343547672964633\n", + "Grad decoder.fc1.2.weight: 9.223912638844922e-05\n", + "Grad decoder.fc1.2.bias: 0.000639182748273015\n", + "Grad decoder.fc1.4.weight: 8.460164826828986e-05\n", + "Grad decoder.fc1.4.bias: 0.0006829469348303974\n", + "Grad decoder.fc2.weight: 0.0001938172208610922\n", + "Grad decoder.fc2.bias: 0.0014623666647821665\n", + "Grad _memory_unit.weight_ih_l0: 1.4104715774010401e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.182722715195268e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.989703302271664e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.991847036872059e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00017646595370024443\n", + "Grad _memory_unit.bias_hh_l1: 9.596929885447025e-05\n", + "Data X Sample: tensor([[2.5916, 2.0843, 1.9264, 1.9788, 2.0387, 2.0567, 3.2477, 4.0814, 4.3035,\n", + " 4.2289, 4.3365, 4.2514, 3.9925, 3.8579, 3.8030, 3.8428, 3.7312, 3.5805,\n", + " 3.6695, 3.5149, 3.4767, 3.5226, 2.9520, 2.8115, 2.7158, 2.8130, 2.8531,\n", + " 2.9121, 2.8933, 2.9476, 2.9466, 3.0811, 3.3265, 2.3938, 4.1596, 4.5361,\n", + " 4.8611, 5.3429, 6.0215, 5.8303, 1.3268, 0.6950, 0.6710, 1.2199, 1.8394,\n", + " 1.8870, 1.2918, 1.8297]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2443, -0.3081, 0.2370, -0.2523, 0.8890, 0.2059, 0.4252, 0.0208,\n", + " 0.1813, 0.0685, 0.3578, -0.3901, 0.2813, -0.4072, 0.7207, -0.6889,\n", + " 0.0020, 1.2499, 0.2622, 0.0913, 0.5650, -1.3070, -0.0090, 0.8283,\n", + " 0.2529, 0.7706, 0.4871, -0.9287, -0.5060, -0.7368, -0.1169, 0.4267,\n", + " -0.3228, -0.2653, -1.0538, -0.1042, -0.8958, -0.3631, 0.9794, 0.2788,\n", + " 0.5031, 0.2551, -0.1047]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3309, -0.2954, -0.1340, -0.2739, -0.0405, 0.0586, 0.2080, 0.3401,\n", + " 0.1764, 0.3475, 0.2865, -0.1692, -0.1881, -0.2601, -0.2647, -0.3559,\n", + " -0.3223, -0.0895, -0.1260, -0.1449, -0.1923, -0.0896, -0.0108, -0.0844,\n", + " 0.0306, 0.0949, 0.0155, -0.0873, -0.1620, -0.2530, -0.2388, -0.1944,\n", + " -0.2607, -0.3719, -0.2922, -0.2316, -0.0503, 0.0577, 0.0948, 0.3073,\n", + " 0.3721, 0.4310, 0.3341]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007142682443372905\n", + "Grad encoder.fc1.bias: 0.0006251260638237\n", + "Grad encoder.encoder.0.weight: 0.00021357402147259563\n", + "Grad encoder.encoder.0.bias: 0.0005143593880347908\n", + "Grad encoder.encoder.2.weight: 0.00010191558976657689\n", + "Grad encoder.encoder.2.bias: 0.0005408565630204976\n", + "Grad encoder.encoder.4.weight: 0.00025610910961404443\n", + "Grad encoder.encoder.4.bias: 0.000954081944655627\n", + "Grad decoder.fc1.0.weight: 0.00011072344204876572\n", + "Grad decoder.fc1.0.bias: 0.0007980427471920848\n", + "Grad decoder.fc1.2.weight: 0.00012740885722450912\n", + "Grad decoder.fc1.2.bias: 0.0009055995033122599\n", + "Grad decoder.fc1.4.weight: 0.00012029655044898391\n", + "Grad decoder.fc1.4.bias: 0.000931219314225018\n", + "Grad decoder.fc2.weight: 0.00022303746663965285\n", + "Grad decoder.fc2.bias: 0.0016146455891430378\n", + "Grad _memory_unit.weight_ih_l0: 2.85630849248264e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.581412890227512e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.5178829421056435e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.3519500498659909e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001818120217649266\n", + "Grad _memory_unit.bias_hh_l1: 9.707922436064109e-05\n", + "Data X Sample: tensor([[1.5234, 1.5978, 1.6784, 1.9263, 1.9175, 2.0375, 2.1569, 2.6533, 4.1985,\n", + " 4.3253, 4.2826, 4.1871, 4.1212, 3.9397, 4.0981, 3.6254, 3.6369, 3.7411,\n", + " 3.5209, 3.5651, 3.4915, 3.4400, 3.0315, 2.9108, 2.8058, 2.8417, 2.8504,\n", + " 2.8305, 2.7962, 2.9312, 3.1041, 3.1170, 3.7247, 2.6981, 4.5763, 4.7988,\n", + " 5.1128, 5.4065, 5.7680, 5.7792, 1.1311, 0.6253, 0.6063, 1.0821, 1.5143,\n", + " 1.8298, 1.2374, 1.8062]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1707, -0.3021, 0.1648, 0.0091, 0.5053, 0.4566, 0.1612, 0.2098,\n", + " -0.1845, 0.3567, 0.0406, 0.7523, -0.4132, -0.3205, -0.1931, -0.3183,\n", + " -0.3249, 1.4272, 1.6032, 0.9639, 0.1364, -0.4488, 1.8192, 0.1164,\n", + " 1.0531, 0.2319, 0.5920, 0.2145, 0.3757, -0.3110, -0.5883, -0.8212,\n", + " -0.7125, -0.5808, 0.5160, 0.2458, 0.3652, 0.7314, -0.5813, 0.2221,\n", + " 0.5327, -0.0048, 0.2985]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2892, -0.2681, -0.1238, -0.2035, -0.0344, 0.0939, 0.1610, 0.3171,\n", + " 0.1663, 0.3471, 0.2700, -0.1796, -0.1986, -0.2464, -0.2514, -0.3230,\n", + " -0.3090, -0.0663, -0.1527, -0.1623, -0.1607, -0.1008, -0.0078, -0.0953,\n", + " 0.0403, 0.0485, 0.0076, -0.0896, -0.1777, -0.2268, -0.2463, -0.1532,\n", + " -0.2579, -0.3230, -0.2706, -0.2262, -0.0688, 0.0806, 0.0945, 0.2938,\n", + " 0.3570, 0.3822, 0.2788]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0015827359165996313\n", + "Grad encoder.fc1.bias: 0.0011250954121351242\n", + "Grad encoder.encoder.0.weight: 0.00040298333624377847\n", + "Grad encoder.encoder.0.bias: 0.001113365637138486\n", + "Grad encoder.encoder.2.weight: 0.0001820103934733197\n", + "Grad encoder.encoder.2.bias: 0.0011785962851718068\n", + "Grad encoder.encoder.4.weight: 0.00041517996578477323\n", + "Grad encoder.encoder.4.bias: 0.0027299351058900356\n", + "Grad decoder.fc1.0.weight: 0.0001336944114882499\n", + "Grad decoder.fc1.0.bias: 0.0014260365860536695\n", + "Grad decoder.fc1.2.weight: 0.00013525881513487548\n", + "Grad decoder.fc1.2.bias: 0.0013999970396980643\n", + "Grad decoder.fc1.4.weight: 0.0001331729581579566\n", + "Grad decoder.fc1.4.bias: 0.001475717406719923\n", + "Grad decoder.fc2.weight: 0.00017826502153184265\n", + "Grad decoder.fc2.bias: 0.0020324664656072855\n", + "Grad _memory_unit.weight_ih_l0: 4.413366332300939e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00022157396597322077\n", + "Grad _memory_unit.bias_hh_l0: 0.00011768689728341997\n", + "Grad _memory_unit.weight_ih_l1: 1.839333344832994e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00041345294448547065\n", + "Grad _memory_unit.bias_hh_l1: 0.0002212685940321535\n", + "Data X Sample: tensor([[1.4321, 1.9401, 2.0526, 2.2740, 2.3580, 2.4677, 2.5236, 2.5951, 2.6949,\n", + " 2.6381, 2.7885, 2.7207, 2.7031, 2.6392, 2.5370, 2.6243, 2.5347, 2.5302,\n", + " 2.5833, 2.5645, 2.5910, 2.6531, 2.5833, 2.6340, 2.4905, 2.3507, 2.3549,\n", + " 2.2799, 1.9427, 1.9225, 1.7883, 1.7326, 1.5114, 0.9520, 1.3604, 1.3620,\n", + " 1.3805, 1.4788, 1.5783, 1.5831, 1.4175, 0.7826, 0.7154, 1.3893, 1.9821,\n", + " 2.4360, 1.5230, 2.1034]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4171, 0.2233, -0.7443, 0.3156, 0.0163, 0.1215, 0.6145, 0.0819,\n", + " -0.7508, 0.0527, 0.0376, -0.1830, 0.3979, -0.1386, 0.0392, -0.2661,\n", + " -0.7301, -1.0645, 0.1819, 0.4293, 0.2412, -1.5624, -0.3555, -0.0449,\n", + " 0.6069, 5.5429, -0.9838, -0.9240, -0.8598, -1.0040, -1.0802, -0.6954,\n", + " -0.1298, -0.6422, -0.8043, 0.0619, -0.7561, -0.5278, -0.0197, -0.0887,\n", + " 0.0636, 0.3246, -0.6207]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.0587, 0.0432, -0.0122, -0.0421, -0.0285, -0.0394, -0.0524, -0.0325,\n", + " -0.0166, -0.0402, -0.0485, 0.0379, 0.0119, 0.0858, 0.0267, 0.0026,\n", + " -0.0010, 0.0091, 0.0470, -0.0579, -0.1145, -0.0148, -0.0063, -0.0134,\n", + " 0.0203, 0.0413, -0.0048, -0.0176, 0.0402, 0.0768, 0.0837, -0.0364,\n", + " 0.0449, -0.0019, -0.0158, -0.0008, -0.0081, -0.0074, 0.0511, -0.0535,\n", + " 0.0334, 0.0267, 0.0449]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004224094736855477\n", + "Grad encoder.fc1.bias: 0.0006669288268312812\n", + "Grad encoder.encoder.0.weight: 0.00010676031524781138\n", + "Grad encoder.encoder.0.bias: 0.0004662270948756486\n", + "Grad encoder.encoder.2.weight: 5.2215109462849796e-05\n", + "Grad encoder.encoder.2.bias: 0.00030377216171473265\n", + "Grad encoder.encoder.4.weight: 0.0001128042204072699\n", + "Grad encoder.encoder.4.bias: 0.0003911503008566797\n", + "Grad decoder.fc1.0.weight: 5.3364838095149025e-05\n", + "Grad decoder.fc1.0.bias: 0.0003043709439225495\n", + "Grad decoder.fc1.2.weight: 7.728573837084696e-05\n", + "Grad decoder.fc1.2.bias: 0.0004371957038529217\n", + "Grad decoder.fc1.4.weight: 9.099859016714618e-05\n", + "Grad decoder.fc1.4.bias: 0.0008096685050986707\n", + "Grad decoder.fc2.weight: 0.00021515174012165517\n", + "Grad decoder.fc2.bias: 0.00206500431522727\n", + "Grad _memory_unit.weight_ih_l0: 1.4368887605087366e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.2152531528263353e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.2449187124730088e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.602347639272921e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.819418583996594e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.172158540110104e-05\n", + "Data X Sample: tensor([[1.4353, 1.5687, 1.7806, 1.7711, 1.8799, 2.2025, 2.2447, 2.1592, 3.8885,\n", + " 4.2668, 4.3810, 4.2631, 3.9969, 3.8307, 3.6744, 3.6090, 3.5158, 3.6656,\n", + " 3.5622, 3.5855, 3.6141, 3.4047, 2.9448, 2.7600, 2.7289, 2.8783, 2.9330,\n", + " 2.9937, 3.1674, 3.0753, 3.2755, 3.3049, 3.7753, 2.7485, 4.5665, 4.9034,\n", + " 4.9595, 5.5496, 6.0912, 5.9182, 1.0643, 0.6592, 0.6346, 1.1424, 1.6848,\n", + " 1.6640, 1.1762, 1.7124]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4751, -0.7887, -1.5808, -0.8245, -0.3529, -0.5695, 0.1355, 0.5436,\n", + " 1.3852, 0.6200, 0.8639, -0.4678, -0.5364, 0.0944, -1.2587, -0.9108,\n", + " -0.2055, 0.1964, -0.3300, 0.1817, -1.7323, -1.4487, 0.0198, -0.4626,\n", + " 0.0821, -0.8242, -0.2009, 0.4873, 0.5572, 0.7544, -0.0552, -0.4586,\n", + " -0.3162, -0.7511, -0.7724, -0.6689, 0.0000, -0.0459, 0.8554, 0.5866,\n", + " 0.6819, 0.4872, -0.4683]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2741, -0.2521, -0.1193, -0.2013, -0.0330, 0.1069, 0.1559, 0.3287,\n", + " 0.1570, 0.3719, 0.2669, -0.1925, -0.2068, -0.2351, -0.2396, -0.2802,\n", + " -0.3324, -0.0586, -0.1591, -0.1655, -0.1399, -0.1102, -0.0249, -0.1066,\n", + " 0.0425, 0.0399, 0.0184, -0.0793, -0.1628, -0.1957, -0.2304, -0.1632,\n", + " -0.2374, -0.3170, -0.2606, -0.2203, -0.0578, 0.1014, 0.0794, 0.3117,\n", + " 0.3660, 0.3745, 0.2581]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0011193363461643457\n", + "Grad encoder.fc1.bias: 0.0005389983998611569\n", + "Grad encoder.encoder.0.weight: 0.000269271491561085\n", + "Grad encoder.encoder.0.bias: 0.0004803048796020448\n", + "Grad encoder.encoder.2.weight: 0.00011912627815036103\n", + "Grad encoder.encoder.2.bias: 0.0005482954438775778\n", + "Grad encoder.encoder.4.weight: 0.00023968509049154818\n", + "Grad encoder.encoder.4.bias: 0.0010142277460545301\n", + "Grad decoder.fc1.0.weight: 6.649791612289846e-05\n", + "Grad decoder.fc1.0.bias: 0.0005884328857064247\n", + "Grad decoder.fc1.2.weight: 8.355078898603097e-05\n", + "Grad decoder.fc1.2.bias: 0.0006880261935293674\n", + "Grad decoder.fc1.4.weight: 7.733621896477416e-05\n", + "Grad decoder.fc1.4.bias: 0.00066713074920699\n", + "Grad decoder.fc2.weight: 0.00017398274212609977\n", + "Grad decoder.fc2.bias: 0.0016603359254077077\n", + "Grad _memory_unit.weight_ih_l0: 1.5951636669342406e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.3338531870394945e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.9542858101194724e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.261848051915877e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.000144444071338512\n", + "Grad _memory_unit.bias_hh_l1: 7.722581358393654e-05\n", + "Data X Sample: tensor([[1.5860, 1.8177, 2.0391, 2.0991, 2.2316, 2.4662, 2.4558, 2.5085, 2.6338,\n", + " 2.7756, 2.6965, 2.7401, 2.6875, 2.5029, 2.4689, 2.4370, 2.4230, 2.5418,\n", + " 2.5049, 2.5013, 2.4757, 2.5612, 2.5447, 2.4889, 2.4755, 2.4865, 2.5174,\n", + " 2.6103, 2.3521, 2.4400, 2.3832, 2.3875, 2.2748, 1.4601, 2.0222, 1.8777,\n", + " 1.7344, 1.6723, 1.5973, 1.5689, 1.2934, 0.6990, 0.7862, 1.3003, 1.8830,\n", + " 2.0643, 1.3870, 2.0095]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1520, 0.4355, -0.1809, 0.6629, 0.3972, 0.6577, -0.4231, 0.0090,\n", + " -0.3944, -0.2680, -0.4485, 0.7757, 1.8164, 0.1359, 0.9500, -0.2100,\n", + " -1.3164, 0.0094, 1.2302, 0.1919, -0.6314, -0.3053, 0.2196, 0.8084,\n", + " 1.0453, 1.1004, -1.2172, 0.3394, 0.6339, 0.3812, 0.7192, -0.3657,\n", + " 0.2548, 0.5505, 0.7191, 0.1154, -1.0105, 0.7816, -1.8131, -0.1169,\n", + " 0.1852, -0.2232, -0.5450]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3016, 0.2578, 0.1289, 0.1731, 0.0379, -0.0979, -0.3042, -0.2853,\n", + " -0.2534, -0.2309, -0.2254, 0.1323, 0.1012, 0.2523, 0.1319, 0.1990,\n", + " 0.1169, 0.0970, 0.0990, 0.0696, 0.0099, -0.0050, 0.0355, 0.0277,\n", + " 0.0225, 0.0378, 0.0120, 0.0269, 0.1842, 0.2957, 0.2553, 0.1267,\n", + " 0.2028, 0.2140, 0.0804, 0.1369, -0.0204, 0.0281, 0.0492, -0.2624,\n", + " -0.1695, -0.2308, -0.1763]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0011599957942962646\n", + "Grad encoder.fc1.bias: 0.0007469019619747996\n", + "Grad encoder.encoder.0.weight: 0.00027039251290261745\n", + "Grad encoder.encoder.0.bias: 0.0006368787726387382\n", + "Grad encoder.encoder.2.weight: 0.00013359251897782087\n", + "Grad encoder.encoder.2.bias: 0.0007066457765176892\n", + "Grad encoder.encoder.4.weight: 0.0002678807359188795\n", + "Grad encoder.encoder.4.bias: 0.0014187827473506331\n", + "Grad decoder.fc1.0.weight: 7.864844519644976e-05\n", + "Grad decoder.fc1.0.bias: 0.0006517688743770123\n", + "Grad decoder.fc1.2.weight: 9.001840953715146e-05\n", + "Grad decoder.fc1.2.bias: 0.0007108608260750771\n", + "Grad decoder.fc1.4.weight: 8.820584480417892e-05\n", + "Grad decoder.fc1.4.bias: 0.0007908859406597912\n", + "Grad decoder.fc2.weight: 0.00019753134984057397\n", + "Grad decoder.fc2.bias: 0.0020408981945365667\n", + "Grad _memory_unit.weight_ih_l0: 1.704182977846358e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.695243064314127e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.6295608879299834e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.838816938805394e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00014852712047286332\n", + "Grad _memory_unit.bias_hh_l1: 7.844289939384907e-05\n", + "Data X Sample: tensor([[1.5191, 1.8337, 1.8648, 1.9591, 2.1514, 2.3174, 2.4050, 2.5468, 2.5313,\n", + " 2.5449, 2.6045, 2.5882, 2.5788, 2.4375, 2.4589, 2.4219, 2.3790, 2.5282,\n", + " 2.5131, 2.4883, 2.4462, 2.4571, 2.3785, 2.3630, 2.3517, 2.5100, 2.3283,\n", + " 2.4186, 2.2862, 2.3319, 2.2292, 2.2079, 2.2528, 1.4486, 1.9217, 1.7682,\n", + " 1.5987, 1.4629, 1.6163, 1.5888, 1.1359, 0.7129, 0.7154, 1.2371, 1.7086,\n", + " 1.9842, 1.2782, 1.9548]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 6.2723e-01, 3.7989e-02, 5.9622e-01, -2.2936e-02, -6.1728e-01,\n", + " 2.1322e-01, -7.5111e-01, -4.1953e-01, -1.3762e+00, -4.7543e-01,\n", + " -7.4824e-01, 4.3088e-01, -5.4631e-02, 5.2832e-01, 1.2559e-01,\n", + " -8.8137e-01, -4.8961e-01, -4.1001e-01, -3.4703e-01, -5.3192e-01,\n", + " -4.4505e-01, 6.7242e-05, -4.0212e-01, -1.4958e-01, -1.3583e-01,\n", + " -7.1274e-02, 1.7584e-02, 6.4024e-01, 7.1591e-01, 4.3153e-01,\n", + " 1.1028e+00, 1.1234e+00, 1.0196e-01, 1.0935e+00, -4.4989e-01,\n", + " -4.7581e-01, -8.4715e-01, 4.9108e-01, -1.2290e-01, -6.8164e-01,\n", + " -6.6261e-01, -1.3284e-01, 9.6492e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3813, 0.3111, 0.1824, 0.2550, 0.0592, -0.1192, -0.4053, -0.3729,\n", + " -0.3052, -0.3007, -0.2641, 0.1772, 0.1232, 0.2793, 0.1465, 0.2327,\n", + " 0.1822, 0.1205, 0.1098, 0.1218, 0.0576, -0.0027, 0.0657, 0.0565,\n", + " 0.0403, 0.0749, 0.0249, 0.0330, 0.2354, 0.3318, 0.3116, 0.1799,\n", + " 0.2618, 0.2817, 0.1295, 0.1966, -0.0396, 0.0229, 0.0527, -0.3462,\n", + " -0.2153, -0.3030, -0.2368]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00023041001986712217\n", + "Grad encoder.fc1.bias: 0.0002443540724925697\n", + "Grad encoder.encoder.0.weight: 6.804525037296116e-05\n", + "Grad encoder.encoder.0.bias: 0.0002565684262663126\n", + "Grad encoder.encoder.2.weight: 5.1162776799174026e-05\n", + "Grad encoder.encoder.2.bias: 0.0003372782957740128\n", + "Grad encoder.encoder.4.weight: 0.00010319924331270158\n", + "Grad encoder.encoder.4.bias: 0.0007203706772997975\n", + "Grad decoder.fc1.0.weight: 4.657461613533087e-05\n", + "Grad decoder.fc1.0.bias: 0.0003972912672907114\n", + "Grad decoder.fc1.2.weight: 5.7429628213867545e-05\n", + "Grad decoder.fc1.2.bias: 0.00040868372889235616\n", + "Grad decoder.fc1.4.weight: 6.140732148196548e-05\n", + "Grad decoder.fc1.4.bias: 0.0005737003521062434\n", + "Grad decoder.fc2.weight: 0.00016605574637651443\n", + "Grad decoder.fc2.bias: 0.0018342511029914021\n", + "Grad _memory_unit.weight_ih_l0: 1.1236944374104496e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.3269581510685384e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.3847678676247597e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.283508810156491e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.122202027356252e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.8934547521639615e-05\n", + "Data X Sample: tensor([[2.1164, 2.5081, 2.7273, 2.8972, 2.9863, 3.0570, 3.2046, 3.2722, 3.3271,\n", + " 3.4469, 3.4578, 3.4743, 3.3489, 3.1382, 3.3062, 3.2726, 3.2076, 3.3078,\n", + " 3.3474, 3.3196, 3.2657, 3.0220, 2.9640, 2.8859, 2.7833, 2.7347, 2.6293,\n", + " 2.6796, 2.4284, 2.2173, 2.1172, 2.1913, 2.2528, 1.5081, 2.3261, 2.5003,\n", + " 2.6587, 2.7377, 2.9981, 2.8258, 1.6943, 0.9778, 0.9721, 1.6820, 2.4578,\n", + " 2.8019, 1.8833, 2.4552]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.1526, -0.6638, -0.7104, -0.8337, -0.6606, 0.1722, 1.0723, 0.8559,\n", + " 0.4070, 0.6290, 0.6563, 0.4024, -0.8838, 0.9594, 0.7029, -0.2149,\n", + " -0.4350, 0.1472, 1.8197, -0.8499, 0.1858, 0.9041, 0.2826, -0.5408,\n", + " -0.1973, -1.2234, -0.1272, -0.4309, 0.0835, -0.7293, -1.5291, -0.5208,\n", + " -1.4081, -0.2146, -0.4718, -0.5158, -1.0105, 0.1511, -2.2862, 0.9971,\n", + " 0.8911, 0.9955, 1.1287]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1722, -0.1671, -0.0556, -0.1699, -0.0572, 0.0239, 0.0996, 0.1775,\n", + " 0.1130, 0.2089, 0.1274, -0.0642, -0.0931, -0.1094, -0.1192, -0.1693,\n", + " -0.1611, -0.0636, -0.0203, -0.1028, -0.1204, -0.0290, -0.0271, -0.0741,\n", + " 0.0044, 0.0437, 0.0124, -0.0029, -0.0383, -0.1060, -0.0887, -0.1510,\n", + " -0.1319, -0.1766, -0.1030, -0.1158, 0.0078, 0.0134, 0.0163, 0.1797,\n", + " 0.2358, 0.2544, 0.1951]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00028887944063171744\n", + "Grad encoder.fc1.bias: 0.0003129211254417896\n", + "Grad encoder.encoder.0.weight: 0.00010458103497512639\n", + "Grad encoder.encoder.0.bias: 0.0002912438358180225\n", + "Grad encoder.encoder.2.weight: 6.305777787929401e-05\n", + "Grad encoder.encoder.2.bias: 0.00032280158484354615\n", + "Grad encoder.encoder.4.weight: 0.0001768507354427129\n", + "Grad encoder.encoder.4.bias: 0.0006780261173844337\n", + "Grad decoder.fc1.0.weight: 6.686399865429848e-05\n", + "Grad decoder.fc1.0.bias: 0.0004927335539832711\n", + "Grad decoder.fc1.2.weight: 7.383096090052277e-05\n", + "Grad decoder.fc1.2.bias: 0.0005526369204744697\n", + "Grad decoder.fc1.4.weight: 6.753085472155362e-05\n", + "Grad decoder.fc1.4.bias: 0.0006633715238422155\n", + "Grad decoder.fc2.weight: 0.00015692684974055737\n", + "Grad decoder.fc2.bias: 0.0020375559106469154\n", + "Grad _memory_unit.weight_ih_l0: 2.16982516576536e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.46607664343901e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.385177867836319e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.336082828463987e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00012062580208294094\n", + "Grad _memory_unit.bias_hh_l1: 6.426592881325632e-05\n", + "Data X Sample: tensor([[2.6288, 2.2823, 2.0105, 2.1056, 2.2487, 2.2585, 3.1198, 3.8869, 4.2522,\n", + " 4.2020, 4.3239, 4.1540, 4.1234, 3.9316, 3.9745, 3.7293, 3.6432, 3.6153,\n", + " 3.6055, 3.5874, 3.4841, 3.3542, 2.9110, 2.8306, 2.8359, 2.8705, 2.8797,\n", + " 2.8958, 2.9072, 3.0491, 2.9536, 3.1778, 3.3463, 2.4487, 4.1204, 4.4875,\n", + " 4.9005, 5.3270, 5.9391, 5.8133, 1.2886, 0.7548, 0.7215, 1.3146, 1.8235,\n", + " 1.9957, 1.4074, 2.0252]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.6123, 0.0295, 0.1929, -0.3928, -0.0110, 0.1860, 0.3250, -0.4242,\n", + " -1.2875, -0.4208, -0.2311, 0.9579, -2.3390, -0.3567, -0.6927, 0.8388,\n", + " 1.1484, 1.1607, -0.0915, 1.0100, 0.4867, -0.2492, 1.6234, -0.4087,\n", + " 1.4611, 0.0510, 0.6161, -0.6179, 0.5220, -0.2064, 0.2183, 0.3332,\n", + " 0.5075, -0.2272, 1.2699, -0.7236, -1.0365, -0.7895, -0.2578, -0.0781,\n", + " -0.0622, -0.8015, 0.1627]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2359, -0.2190, -0.0709, -0.2130, -0.0313, 0.0873, 0.1447, 0.2613,\n", + " 0.1277, 0.2958, 0.1954, -0.1289, -0.1486, -0.1886, -0.1805, -0.2132,\n", + " -0.2595, -0.0652, -0.0733, -0.1440, -0.1213, -0.0695, -0.0238, -0.0916,\n", + " 0.0184, 0.0215, 0.0087, -0.0192, -0.0998, -0.1467, -0.1510, -0.1650,\n", + " -0.1938, -0.2647, -0.1885, -0.1725, 0.0019, 0.0517, 0.0335, 0.2817,\n", + " 0.3164, 0.3139, 0.2484]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002522759314160794\n", + "Grad encoder.fc1.bias: 0.0006205973913893104\n", + "Grad encoder.encoder.0.weight: 9.866524487733841e-05\n", + "Grad encoder.encoder.0.bias: 0.0005766655085608363\n", + "Grad encoder.encoder.2.weight: 7.758590072626248e-05\n", + "Grad encoder.encoder.2.bias: 0.0005709260003641248\n", + "Grad encoder.encoder.4.weight: 0.0001776442804839462\n", + "Grad encoder.encoder.4.bias: 0.000813454098533839\n", + "Grad decoder.fc1.0.weight: 6.755086360499263e-05\n", + "Grad decoder.fc1.0.bias: 0.0005448695737868547\n", + "Grad decoder.fc1.2.weight: 0.0001012691791402176\n", + "Grad decoder.fc1.2.bias: 0.0007741081062704325\n", + "Grad decoder.fc1.4.weight: 8.699536556378007e-05\n", + "Grad decoder.fc1.4.bias: 0.0009095825953409076\n", + "Grad decoder.fc2.weight: 0.00015282316599041224\n", + "Grad decoder.fc2.bias: 0.00164763571228832\n", + "Grad _memory_unit.weight_ih_l0: 2.0649496946134605e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.876670573139563e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.5743836886249483e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.010507372091524e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00012927691568620503\n", + "Grad _memory_unit.bias_hh_l1: 6.852550723124295e-05\n", + "Data X Sample: tensor([[2.0442, 2.4775, 2.8385, 2.9431, 3.1212, 3.3782, 3.3417, 3.3901, 3.3466,\n", + " 3.3901, 3.3595, 3.3400, 3.3378, 3.3372, 3.3390, 3.2657, 3.2800, 3.2594,\n", + " 3.2111, 3.0220, 2.8658, 2.8597, 2.7279, 2.6416, 2.4399, 2.3820, 2.1551,\n", + " 2.2310, 2.0815, 2.1845, 2.1312, 1.9868, 1.7512, 1.2678, 2.3188, 2.7168,\n", + " 3.0952, 3.1697, 3.5368, 3.4358, 1.8231, 1.0415, 0.9862, 1.9662, 2.6322,\n", + " 2.9220, 1.9717, 2.7915]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2806, 0.6281, 1.3905, 0.5271, 0.3808, -0.2269, 0.5713, 0.1543,\n", + " 0.1078, 0.1811, 0.0210, -0.4020, 0.1264, 0.4240, 0.0178, -0.0674,\n", + " 0.2536, -0.6678, 0.0511, 4.1619, 0.3237, -2.1564, 1.3853, 1.9374,\n", + " -0.9716, 3.1213, -0.0908, -0.0387, 0.0587, -0.1887, 0.0754, -0.1282,\n", + " 0.5986, 0.1142, 0.2238, 1.0148, -0.0868, -0.0459, -0.9264, -0.3202,\n", + " -0.3260, -0.2106, -0.8092]], device='cuda:0')\n", + "Prediction Sample: tensor([[-2.4730e-01, -2.4373e-01, -7.7406e-02, -2.5887e-01, -5.1756e-02,\n", + " 5.3904e-02, 1.4457e-01, 2.4882e-01, 1.5496e-01, 2.5541e-01,\n", + " 1.7809e-01, -7.2006e-02, -1.2511e-01, -1.5135e-01, -1.4318e-01,\n", + " -2.2451e-01, -2.0562e-01, -1.0437e-01, 3.1207e-04, -1.3306e-01,\n", + " -1.6940e-01, -2.7814e-02, -3.5059e-02, -8.1815e-02, 1.7469e-02,\n", + " 2.3190e-02, 9.3612e-03, -1.4874e-03, -5.6396e-02, -1.5139e-01,\n", + " -1.0015e-01, -1.8946e-01, -1.6140e-01, -2.3412e-01, -1.4852e-01,\n", + " -1.5885e-01, 3.0523e-02, 1.1674e-02, 8.2898e-03, 2.7280e-01,\n", + " 3.1274e-01, 3.2544e-01, 2.6156e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0008531895000487566\n", + "Grad encoder.fc1.bias: 0.0011104431468993425\n", + "Grad encoder.encoder.0.weight: 0.00022743357112631202\n", + "Grad encoder.encoder.0.bias: 0.0010013466235250235\n", + "Grad encoder.encoder.2.weight: 0.00012277369387447834\n", + "Grad encoder.encoder.2.bias: 0.0010425727814435959\n", + "Grad encoder.encoder.4.weight: 0.0002870334719773382\n", + "Grad encoder.encoder.4.bias: 0.0021897461265325546\n", + "Grad decoder.fc1.0.weight: 0.00010196249058935791\n", + "Grad decoder.fc1.0.bias: 0.0011587943881750107\n", + "Grad decoder.fc1.2.weight: 0.0001212576826219447\n", + "Grad decoder.fc1.2.bias: 0.0010681473650038242\n", + "Grad decoder.fc1.4.weight: 9.689170110505074e-05\n", + "Grad decoder.fc1.4.bias: 0.0008829573052935302\n", + "Grad decoder.fc2.weight: 0.0002135910326614976\n", + "Grad decoder.fc2.bias: 0.0016069731209427118\n", + "Grad _memory_unit.weight_ih_l0: 3.0968847568146884e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00020065133867319673\n", + "Grad _memory_unit.bias_hh_l0: 0.00010874407598748803\n", + "Grad _memory_unit.weight_ih_l1: 1.931113365571946e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0003637057961896062\n", + "Grad _memory_unit.bias_hh_l1: 0.00019802554743364453\n", + "Data X Sample: tensor([[1.3759, 1.4900, 1.6709, 1.8061, 1.9055, 1.9683, 2.0522, 1.9165, 3.2587,\n", + " 4.1009, 4.1652, 4.3507, 4.0191, 4.0515, 3.7904, 3.5488, 3.5803, 3.5979,\n", + " 3.4919, 3.4739, 3.3393, 3.2501, 2.8990, 2.8439, 2.7739, 2.8888, 2.9117,\n", + " 2.9366, 3.0008, 3.1048, 3.1811, 3.2745, 3.8479, 2.7805, 4.5788, 4.9520,\n", + " 5.0873, 5.5231, 5.9011, 5.8104, 1.1836, 0.6472, 0.6386, 1.0391, 1.5500,\n", + " 1.7498, 1.1490, 1.7046]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1789, -1.0267, 0.3945, -0.3003, -1.3796, 0.3162, -1.0190, 0.7149,\n", + " -0.6757, -0.6222, -0.7607, -0.5950, 0.0138, 0.9188, -0.5494, -1.7155,\n", + " -0.1332, -0.2504, -0.0667, -0.2020, -0.0991, -0.5656, -0.0907, -0.4954,\n", + " 0.0606, -0.2680, 0.0741, 0.4332, 0.9552, 1.2262, 0.2554, 2.0461,\n", + " -0.5719, -1.1381, -2.2671, -0.2896, -0.0182, 0.7181, -0.3730, -1.7805,\n", + " 0.0851, 1.4624, 0.5792]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2037, -0.2131, -0.0695, -0.1423, -0.0037, 0.1651, 0.1186, 0.2635,\n", + " 0.1360, 0.2824, 0.1954, -0.1262, -0.1623, -0.1846, -0.1810, -0.2196,\n", + " -0.2318, -0.0353, -0.0884, -0.1898, -0.0978, -0.0742, 0.0059, -0.0808,\n", + " 0.0359, -0.0514, -0.0363, -0.0319, -0.1680, -0.1501, -0.1823, -0.1121,\n", + " -0.2178, -0.2299, -0.1945, -0.2001, -0.0182, 0.0611, 0.0384, 0.2839,\n", + " 0.3310, 0.2841, 0.2218]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003708342555910349\n", + "Grad encoder.fc1.bias: 0.0006662430241703987\n", + "Grad encoder.encoder.0.weight: 0.00010948805720545352\n", + "Grad encoder.encoder.0.bias: 0.0004957953933626413\n", + "Grad encoder.encoder.2.weight: 7.732550147920847e-05\n", + "Grad encoder.encoder.2.bias: 0.0004170956090092659\n", + "Grad encoder.encoder.4.weight: 0.00017071992624551058\n", + "Grad encoder.encoder.4.bias: 0.0007706442847847939\n", + "Grad decoder.fc1.0.weight: 7.538394856965169e-05\n", + "Grad decoder.fc1.0.bias: 0.0005257611046545208\n", + "Grad decoder.fc1.2.weight: 7.454489241354167e-05\n", + "Grad decoder.fc1.2.bias: 0.0005219774320721626\n", + "Grad decoder.fc1.4.weight: 7.92621067375876e-05\n", + "Grad decoder.fc1.4.bias: 0.0006519003072753549\n", + "Grad decoder.fc2.weight: 0.00017673340335022658\n", + "Grad decoder.fc2.bias: 0.0018128255615010858\n", + "Grad _memory_unit.weight_ih_l0: 1.8331380488234572e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.965937164844945e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.7024252883857116e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.768795851210598e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011449402518337592\n", + "Grad _memory_unit.bias_hh_l1: 6.131510599516332e-05\n", + "Data X Sample: tensor([[1.5287, 1.7027, 1.9294, 2.0269, 2.2111, 2.1451, 2.0722, 2.6178, 3.7909,\n", + " 4.2779, 4.2858, 4.2884, 4.2344, 4.0433, 3.9216, 3.7389, 3.7014, 3.5670,\n", + " 3.4424, 3.4609, 3.5136, 3.3665, 2.9279, 2.8077, 2.8697, 2.9723, 2.8744,\n", + " 2.9529, 3.0078, 3.1933, 3.2545, 3.3547, 3.7137, 2.7599, 4.5126, 4.8182,\n", + " 5.1305, 5.4542, 5.9391, 5.7991, 1.1550, 0.7129, 0.7175, 1.2687, 1.8275,\n", + " 2.0414, 1.2510, 1.9548]], device='cuda:0')\n", + "Data Y Sample: tensor([[-3.4385e-01, -4.9378e-01, -6.0731e-01, -1.0346e-01, 1.1205e-01,\n", + " 3.3339e-01, 6.8631e-01, 2.0341e-01, 1.4111e-01, 3.1934e-01,\n", + " 3.2914e-01, 1.1124e+00, -1.5978e-01, 2.1973e-01, 5.7066e-01,\n", + " -7.0878e-01, 3.6854e-01, -2.0560e-01, 1.0793e+00, -3.4659e-01,\n", + " -1.1528e+00, 3.4231e+00, -4.5318e-01, -1.2042e+00, -3.5154e-01,\n", + " -4.4323e-01, -7.7375e-01, -8.1562e-01, -1.2414e+00, -4.7188e-01,\n", + " 1.9118e-02, -4.5414e-01, 2.7227e-01, -2.4474e-01, -3.1224e-01,\n", + " -1.5186e-01, -1.0781e-03, -7.8147e-01, 8.4476e-01, 3.0517e-01,\n", + " 5.0516e-01, 8.2931e-01, -4.0708e-02]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2053, -0.2128, -0.0598, -0.1726, -0.0117, 0.1445, 0.1313, 0.2538,\n", + " 0.1283, 0.2589, 0.1799, -0.1130, -0.1440, -0.1789, -0.1704, -0.2058,\n", + " -0.2258, -0.0470, -0.0569, -0.1742, -0.1002, -0.0649, 0.0069, -0.0715,\n", + " 0.0293, -0.0408, -0.0332, -0.0230, -0.1431, -0.1394, -0.1629, -0.1195,\n", + " -0.2033, -0.2333, -0.1862, -0.1867, 0.0031, 0.0443, 0.0285, 0.2782,\n", + " 0.3196, 0.2821, 0.2336]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005420913221314549\n", + "Grad encoder.fc1.bias: 0.0003833825176116079\n", + "Grad encoder.encoder.0.weight: 0.0001474158198107034\n", + "Grad encoder.encoder.0.bias: 0.00039620581082999706\n", + "Grad encoder.encoder.2.weight: 7.705356983933598e-05\n", + "Grad encoder.encoder.2.bias: 0.0004314732796046883\n", + "Grad encoder.encoder.4.weight: 0.00016359443543478847\n", + "Grad encoder.encoder.4.bias: 0.0006327557493932545\n", + "Grad decoder.fc1.0.weight: 7.107359124347568e-05\n", + "Grad decoder.fc1.0.bias: 0.0005078084650449455\n", + "Grad decoder.fc1.2.weight: 9.609197149984539e-05\n", + "Grad decoder.fc1.2.bias: 0.0006388876354321837\n", + "Grad decoder.fc1.4.weight: 8.65147594595328e-05\n", + "Grad decoder.fc1.4.bias: 0.0008134876843541861\n", + "Grad decoder.fc2.weight: 0.00017594230303075165\n", + "Grad decoder.fc2.bias: 0.0017699048621580005\n", + "Grad _memory_unit.weight_ih_l0: 1.7744563592714258e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.9721551476977766e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.680903344298713e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.325416274601594e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00012373871868476272\n", + "Grad _memory_unit.bias_hh_l1: 6.613649020437151e-05\n", + "Data X Sample: tensor([[1.2666, 1.4157, 1.7160, 1.7798, 1.8645, 2.0965, 2.1785, 2.2714, 3.8788,\n", + " 4.2905, 4.3365, 4.2007, 4.0968, 3.9425, 3.7677, 3.8620, 3.6998, 3.6192,\n", + " 3.6530, 3.5837, 3.4498, 3.4032, 2.9978, 2.9050, 2.9203, 3.0481, 3.1062,\n", + " 3.1242, 3.0182, 3.2686, 3.2825, 3.3464, 3.8061, 2.8240, 4.6940, 4.9666,\n", + " 5.1836, 5.5337, 6.0785, 5.7480, 1.0213, 0.6273, 0.5982, 1.1080, 1.7205,\n", + " 1.7383, 1.1286, 1.6342]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.9312, -0.5477, -1.0009, -0.3865, 0.1928, -0.7733, 0.3747, 0.9446,\n", + " 2.1543, 0.2855, 0.7873, -1.4264, -0.7674, -0.6414, -0.5495, -0.7353,\n", + " 0.5131, -1.7774, -0.7031, -0.1968, 0.6808, 0.0306, 1.0743, 0.1827,\n", + " 0.1768, -0.7741, -0.7591, 0.5613, 0.4108, -0.2204, -0.8762, -0.7252,\n", + " -0.3507, -0.5081, 0.3936, -0.8412, -0.6306, -0.6596, -0.0156, 0.7383,\n", + " 0.9929, 0.5959, 0.7475]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2050, -0.2282, -0.0690, -0.1832, -0.0069, 0.1636, 0.1457, 0.2670,\n", + " 0.1514, 0.2568, 0.1843, -0.1030, -0.1424, -0.1740, -0.1719, -0.2257,\n", + " -0.2239, -0.0497, -0.0377, -0.1936, -0.1131, -0.0584, 0.0145, -0.0625,\n", + " 0.0277, -0.0543, -0.0457, -0.0245, -0.1564, -0.1485, -0.1636, -0.1157,\n", + " -0.2084, -0.2361, -0.1985, -0.1940, 0.0080, 0.0380, 0.0225, 0.2886,\n", + " 0.3425, 0.2952, 0.2447]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0013637908268719912\n", + "Grad encoder.fc1.bias: 0.0008718367316760123\n", + "Grad encoder.encoder.0.weight: 0.0003422439331188798\n", + "Grad encoder.encoder.0.bias: 0.0009747633012011647\n", + "Grad encoder.encoder.2.weight: 0.00016387682990171015\n", + "Grad encoder.encoder.2.bias: 0.0011207172647118568\n", + "Grad encoder.encoder.4.weight: 0.0003474910627119243\n", + "Grad encoder.encoder.4.bias: 0.0026630915235728025\n", + "Grad decoder.fc1.0.weight: 0.00011193577665835619\n", + "Grad decoder.fc1.0.bias: 0.0013061673380434513\n", + "Grad decoder.fc1.2.weight: 0.00011676648864522576\n", + "Grad decoder.fc1.2.bias: 0.001237917342223227\n", + "Grad decoder.fc1.4.weight: 0.00010781905439216644\n", + "Grad decoder.fc1.4.bias: 0.0013039596378803253\n", + "Grad decoder.fc2.weight: 0.0002111514040734619\n", + "Grad decoder.fc2.bias: 0.002527182223275304\n", + "Grad _memory_unit.weight_ih_l0: 2.3067101210472174e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00014411573647521436\n", + "Grad _memory_unit.bias_hh_l0: 7.758964784443378e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.3816130376653746e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0003244932449888438\n", + "Grad _memory_unit.bias_hh_l1: 0.00017298471357207745\n", + "Data X Sample: tensor([[1.5552, 1.6794, 1.8888, 1.9919, 2.0643, 2.1701, 2.2309, 2.4034, 3.9862,\n", + " 4.2716, 4.4063, 4.3059, 3.9791, 4.0433, 3.7576, 3.6459, 3.5724, 3.6269,\n", + " 3.6406, 3.5558, 3.5528, 3.5150, 3.0701, 3.0138, 2.8697, 2.9802, 3.0289,\n", + " 3.0141, 2.9627, 3.2162, 3.1916, 3.3436, 3.7599, 2.7920, 4.5444, 4.8523,\n", + " 5.1325, 5.3588, 5.8187, 5.7480, 1.1311, 0.6930, 0.7033, 1.1998, 1.6570,\n", + " 1.9099, 1.1830, 1.8844]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6417, -0.4251, -0.0655, -1.0310, -0.2297, -0.2702, -0.0298, -0.0301,\n", + " 0.4695, 0.6650, 0.6078, 0.3695, 0.5116, -0.0387, -0.2128, -0.0337,\n", + " -0.7082, 0.2784, -1.0627, 0.0465, -0.3701, -0.4174, 1.4613, 2.4483,\n", + " -1.5643, -1.3603, 0.2178, -0.5246, -1.1122, -0.1843, -0.1032, -0.9872,\n", + " -0.6007, -1.1543, 0.5578, -0.5821, -1.0293, -0.7725, 0.2253, 0.4589,\n", + " 0.6597, 0.7310, 1.1842]], device='cuda:0')\n", + "Prediction Sample: tensor([[-2.7877e-01, -2.9055e-01, -8.0245e-02, -2.6922e-01, -2.0478e-02,\n", + " 1.5318e-01, 1.8295e-01, 3.0091e-01, 1.6860e-01, 2.6617e-01,\n", + " 2.0634e-01, -9.2087e-02, -1.5051e-01, -2.0620e-01, -1.7710e-01,\n", + " -2.5986e-01, -2.4375e-01, -1.1401e-01, -1.8584e-04, -1.9358e-01,\n", + " -1.6075e-01, -4.6750e-02, 5.1275e-04, -8.4024e-02, 2.4242e-02,\n", + " -4.7396e-02, -3.6374e-02, -2.5397e-02, -1.3485e-01, -1.7064e-01,\n", + " -1.5793e-01, -1.6093e-01, -2.0602e-01, -2.7540e-01, -2.0274e-01,\n", + " -2.1092e-01, 4.2611e-02, 6.1611e-03, 7.5486e-03, 3.5817e-01,\n", + " 3.7157e-01, 3.3911e-01, 2.9493e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0008313333964906633\n", + "Grad encoder.fc1.bias: 0.00042213377309963107\n", + "Grad encoder.encoder.0.weight: 0.00022954812448006123\n", + "Grad encoder.encoder.0.bias: 0.0003898583527188748\n", + "Grad encoder.encoder.2.weight: 0.00013186244177632034\n", + "Grad encoder.encoder.2.bias: 0.0004779526498168707\n", + "Grad encoder.encoder.4.weight: 0.00029833847656846046\n", + "Grad encoder.encoder.4.bias: 0.001183243584819138\n", + "Grad decoder.fc1.0.weight: 0.00011277628800598904\n", + "Grad decoder.fc1.0.bias: 0.0008145872852765024\n", + "Grad decoder.fc1.2.weight: 0.00014529084728565067\n", + "Grad decoder.fc1.2.bias: 0.0009447631891816854\n", + "Grad decoder.fc1.4.weight: 0.0001227938337251544\n", + "Grad decoder.fc1.4.bias: 0.0012216895120218396\n", + "Grad decoder.fc2.weight: 0.0001967319694813341\n", + "Grad decoder.fc2.bias: 0.0018539924640208483\n", + "Grad _memory_unit.weight_ih_l0: 3.944421769119799e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.499298175796866e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.050198524259031e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.4067986739974003e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002314677112735808\n", + "Grad _memory_unit.bias_hh_l1: 0.00012246971891727298\n", + "Data X Sample: tensor([[1.4120, 1.5206, 1.6709, 1.8957, 1.8714, 2.0081, 1.9936, 1.9151, 3.3832,\n", + " 4.1088, 4.2953, 4.2884, 4.0612, 3.8607, 3.6719, 3.7143, 3.6573, 3.7372,\n", + " 3.5539, 3.5465, 3.5013, 3.5471, 3.1014, 2.8688, 2.9353, 2.9802, 2.9996,\n", + " 3.0222, 3.1292, 3.2424, 3.2650, 3.5149, 3.7819, 2.8332, 4.6498, 4.9545,\n", + " 5.1266, 5.4807, 6.0152, 5.9012, 1.0500, 0.6233, 0.5922, 1.0678, 1.5857,\n", + " 1.7955, 1.2102, 1.8141]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.3611e-01, -5.0962e+00, 8.4825e-01, -1.6385e-01, 1.1754e+00,\n", + " -1.0932e-01, 7.7393e-02, 1.8805e-01, 5.0874e-01, 6.8920e-01,\n", + " 5.8962e-01, 2.7995e-01, -1.0012e-01, 1.2633e-01, 1.3658e-01,\n", + " -1.0066e+00, 3.4530e-01, -6.1369e-02, -1.6729e-01, 3.1717e-01,\n", + " 3.3262e-01, -1.4283e-01, 3.6846e-01, 5.5083e-02, -5.9577e-02,\n", + " 4.5507e-01, 9.8505e-01, -3.9646e-01, -1.6282e-01, 4.3938e-02,\n", + " -5.8753e-02, 8.9355e-02, 1.1007e-01, -3.5160e-01, -2.0123e-01,\n", + " -1.2140e+00, -8.9523e-04, 0.0000e+00, 1.1113e+00, 2.0523e-01,\n", + " 3.8237e-01, 7.4225e-01, -5.3414e-02]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2895, -0.3098, -0.0869, -0.2672, -0.0178, 0.1894, 0.1910, 0.3179,\n", + " 0.1762, 0.2592, 0.2287, -0.0865, -0.1631, -0.2119, -0.1860, -0.2813,\n", + " -0.2563, -0.1265, -0.0075, -0.2144, -0.1658, -0.0490, 0.0106, -0.0871,\n", + " 0.0189, -0.0711, -0.0556, -0.0475, -0.1695, -0.1795, -0.1813, -0.1532,\n", + " -0.2116, -0.2814, -0.2159, -0.2446, 0.0274, 0.0011, 0.0082, 0.3851,\n", + " 0.3902, 0.3407, 0.2906]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.001812271191738546\n", + "Grad encoder.fc1.bias: 0.0008947385940700769\n", + "Grad encoder.encoder.0.weight: 0.0004177335649728775\n", + "Grad encoder.encoder.0.bias: 0.0007648934260942042\n", + "Grad encoder.encoder.2.weight: 0.00020322343334555626\n", + "Grad encoder.encoder.2.bias: 0.0007768028299324214\n", + "Grad encoder.encoder.4.weight: 0.0004069111018907279\n", + "Grad encoder.encoder.4.bias: 0.0017903028056025505\n", + "Grad decoder.fc1.0.weight: 0.00012777729716617614\n", + "Grad decoder.fc1.0.bias: 0.0008950151386670768\n", + "Grad decoder.fc1.2.weight: 0.00015996246656868607\n", + "Grad decoder.fc1.2.bias: 0.0011199447326362133\n", + "Grad decoder.fc1.4.weight: 0.00011265801003901288\n", + "Grad decoder.fc1.4.bias: 0.0011971316998824477\n", + "Grad decoder.fc2.weight: 0.00017378917254973203\n", + "Grad decoder.fc2.bias: 0.0027170092798769474\n", + "Grad _memory_unit.weight_ih_l0: 4.284453098080121e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.539465488865972e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.677933611674234e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.6345655240002088e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00023985747247934341\n", + "Grad _memory_unit.bias_hh_l1: 0.0001269799831788987\n", + "Data X Sample: tensor([[2.5630, 3.0106, 3.3614, 3.0961, 2.8651, 3.5167, 3.8963, 3.8614, 3.9422,\n", + " 4.0836, 3.9178, 3.9768, 3.8393, 3.8225, 3.6568, 3.5775, 3.5190, 3.6211,\n", + " 3.5209, 3.3903, 3.3246, 3.2777, 3.0556, 2.9909, 2.7664, 2.8679, 2.7465,\n", + " 2.8061, 2.8100, 2.8363, 2.8486, 2.8600, 3.0031, 2.2610, 3.6547, 4.1518,\n", + " 4.3223, 4.7864, 5.4510, 5.3196, 1.9377, 1.1311, 1.1439, 2.2016, 2.9137,\n", + " 3.0878, 1.8901, 2.6898]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6065, -0.4751, 0.4469, -0.5386, -0.3985, 0.5556, 0.1873, -0.1674,\n", + " 0.8886, 0.1862, 0.2563, 0.5580, -0.9653, -0.5510, -0.2213, -0.4314,\n", + " 0.5203, -0.8357, 0.3025, -0.4204, 0.4236, 0.1352, -0.4506, -0.1821,\n", + " -1.4218, -0.2169, 0.3732, 1.1131, 0.6837, 0.3554, 0.6078, -0.4930,\n", + " 0.7400, -0.1217, 1.3081, 1.0024, 0.4756, -0.6782, 0.2253, 0.4483,\n", + " 0.5749, 0.6645, 0.9422]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3374, -0.3815, -0.1273, -0.3764, -0.0717, 0.1290, 0.1992, 0.3340,\n", + " 0.2131, 0.2259, 0.2303, -0.0462, -0.1580, -0.2019, -0.1479, -0.2837,\n", + " -0.2306, -0.1886, 0.0522, -0.1953, -0.2468, -0.0070, -0.0594, -0.0945,\n", + " 0.0630, -0.0285, -0.0153, -0.0555, -0.0968, -0.2149, -0.1224, -0.2371,\n", + " -0.1430, -0.2714, -0.1428, -0.2157, 0.0526, -0.0415, -0.0129, 0.4010,\n", + " 0.3849, 0.3866, 0.3205]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.002605472458526492\n", + "Grad encoder.fc1.bias: 0.0015992228873074055\n", + "Grad encoder.encoder.0.weight: 0.0005793867167085409\n", + "Grad encoder.encoder.0.bias: 0.0015153621789067984\n", + "Grad encoder.encoder.2.weight: 0.00027706395485438406\n", + "Grad encoder.encoder.2.bias: 0.001599763287231326\n", + "Grad encoder.encoder.4.weight: 0.0005309088155627251\n", + "Grad encoder.encoder.4.bias: 0.004187191836535931\n", + "Grad decoder.fc1.0.weight: 0.00014933469356037676\n", + "Grad decoder.fc1.0.bias: 0.0017125275917351246\n", + "Grad decoder.fc1.2.weight: 0.00015260936925187707\n", + "Grad decoder.fc1.2.bias: 0.0016804449260234833\n", + "Grad decoder.fc1.4.weight: 9.607191168470308e-05\n", + "Grad decoder.fc1.4.bias: 0.0014957505045458674\n", + "Grad decoder.fc2.weight: 0.00015413133951369673\n", + "Grad decoder.fc2.bias: 0.0025831598322838545\n", + "Grad _memory_unit.weight_ih_l0: 3.32302697643172e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00016752391820773482\n", + "Grad _memory_unit.bias_hh_l0: 8.970563067123294e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.7492508050054312e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0004200100083835423\n", + "Grad _memory_unit.bias_hh_l1: 0.00022128166165202856\n", + "Data X Sample: tensor([[1.5053, 1.7041, 1.8437, 1.9657, 2.0780, 2.2747, 2.3926, 2.3097, 2.5167,\n", + " 2.5070, 2.6076, 2.5960, 2.4834, 2.4429, 2.4538, 2.4042, 2.3177, 2.3580,\n", + " 2.4140, 2.4492, 2.3923, 2.4495, 2.3905, 2.3553, 2.3817, 2.4265, 2.4189,\n", + " 2.4023, 2.1856, 2.3745, 2.2887, 2.2521, 2.2132, 1.4440, 2.0173, 1.7901,\n", + " 1.6322, 1.4841, 1.5973, 1.5235, 1.3220, 0.7428, 0.7215, 1.2343, 1.7482,\n", + " 1.9671, 1.4006, 1.9392]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1985, 0.2582, -0.0369, -0.2410, 0.3961, -0.4713, -0.2628, -0.1506,\n", + " -0.7969, -0.5878, -0.2656, 0.9691, -0.1904, 0.5302, 0.8681, 0.4666,\n", + " -0.2455, 1.0325, -0.3798, 0.1890, 0.6420, 0.3384, 0.3910, 0.3467,\n", + " -0.1076, -0.3174, 0.3934, 0.7768, 0.5114, -0.3705, 0.1723, -0.2371,\n", + " 0.5678, 0.4897, 1.0922, 0.3355, 0.1343, 0.1511, 0.9946, -0.2022,\n", + " -0.0866, -0.3300, -1.2576]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3187, 0.2334, 0.1276, 0.1914, 0.0283, -0.1136, -0.3291, -0.2772,\n", + " -0.2243, -0.2123, -0.2334, 0.1323, 0.0905, 0.2729, 0.1431, 0.2122,\n", + " 0.1507, 0.0522, 0.0969, 0.0794, 0.0293, 0.0283, 0.0645, 0.0297,\n", + " 0.0741, 0.0699, 0.0172, 0.0691, 0.1631, 0.2313, 0.2336, 0.1517,\n", + " 0.2060, 0.2123, 0.1125, 0.1044, -0.0262, -0.0277, 0.0362, -0.2625,\n", + " -0.1673, -0.1878, -0.1876]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0009591336129233241\n", + "Grad encoder.fc1.bias: 0.00048198451986536384\n", + "Grad encoder.encoder.0.weight: 0.00021445692982524633\n", + "Grad encoder.encoder.0.bias: 0.0004385151551105082\n", + "Grad encoder.encoder.2.weight: 0.00011201018060091883\n", + "Grad encoder.encoder.2.bias: 0.0005789604038000107\n", + "Grad encoder.encoder.4.weight: 0.00021374782954808325\n", + "Grad encoder.encoder.4.bias: 0.001505002612248063\n", + "Grad decoder.fc1.0.weight: 5.87753820582293e-05\n", + "Grad decoder.fc1.0.bias: 0.0006450923392549157\n", + "Grad decoder.fc1.2.weight: 5.383283132687211e-05\n", + "Grad decoder.fc1.2.bias: 0.0006256819469854236\n", + "Grad decoder.fc1.4.weight: 4.8315814638044685e-05\n", + "Grad decoder.fc1.4.bias: 0.0007633362547494471\n", + "Grad decoder.fc2.weight: 0.00010542924428591505\n", + "Grad decoder.fc2.bias: 0.0016063700895756483\n", + "Grad _memory_unit.weight_ih_l0: 1.2514058653323445e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.861067620571703e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.1055460567586124e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.176117494760547e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001634063373785466\n", + "Grad _memory_unit.bias_hh_l1: 8.505239384248853e-05\n", + "Data X Sample: tensor([[ 0.0021, 0.0029, 0.0105, 0.0000, 0.0051, 0.0029, 0.0077, 0.0085,\n", + " -0.0073, 0.0079, 0.0095, 0.0136, -0.0022, -0.0027, 0.0101, 0.0055,\n", + " -0.0157, -0.0329, -0.0413, -0.0205, -0.0442, -0.0184, -0.0217, -0.0267,\n", + " -0.0150, -0.0366, -0.0266, -0.0122, -0.0624, 0.0098, -0.0070, 0.0000,\n", + " 0.0088, 0.0000, 0.0098, 0.0462, 0.0157, 0.0318, 0.0127, 0.0170,\n", + " 0.0191, 0.0119, 0.0020, -0.0115, 0.0674, -0.0057, -0.0136, -0.0235]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.1694, 0.6725, 0.1376, 0.5969, -0.5670, -0.6903, -1.1875, -1.0759,\n", + " -0.7302, -1.1224, -0.8827, 1.2351, -0.3657, 1.0414, 1.2274, 0.3001,\n", + " -0.2201, -0.2427, 0.3006, 0.2563, 0.4178, 0.2226, -0.1170, -0.5729,\n", + " 0.0122, -1.0435, -0.4796, 0.3211, -0.3299, 0.7543, 0.2743, 0.3162,\n", + " 0.5032, 0.0130, -0.6782, 0.2944, -0.5148, 0.7428, 0.2253, -0.8117,\n", + " -0.4951, -0.3549, -0.2494]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.6477, 0.4251, 0.1582, 0.4053, 0.0690, -0.3346, -0.6869, -0.7744,\n", + " -0.4774, -0.4900, -0.5395, 0.2772, 0.2150, 0.5353, 0.2700, 0.3749,\n", + " 0.3398, 0.1313, 0.1878, 0.1168, 0.0713, 0.1293, 0.1258, 0.0386,\n", + " 0.1582, 0.0195, 0.0292, 0.1357, 0.4808, 0.5760, 0.4966, 0.4111,\n", + " 0.4850, 0.5001, 0.2549, 0.2140, -0.0917, -0.0073, 0.0692, -0.6065,\n", + " -0.5623, -0.4317, -0.4396]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00016811843670438975\n", + "Grad encoder.fc1.bias: 0.00017310232215095311\n", + "Grad encoder.encoder.0.weight: 5.668020457960665e-05\n", + "Grad encoder.encoder.0.bias: 0.00016109096759464592\n", + "Grad encoder.encoder.2.weight: 3.7868303479626775e-05\n", + "Grad encoder.encoder.2.bias: 0.00018545688362792134\n", + "Grad encoder.encoder.4.weight: 0.00010435646981932223\n", + "Grad encoder.encoder.4.bias: 0.0005409262957982719\n", + "Grad decoder.fc1.0.weight: 4.919993079965934e-05\n", + "Grad decoder.fc1.0.bias: 0.000383539852919057\n", + "Grad decoder.fc1.2.weight: 6.431848305510357e-05\n", + "Grad decoder.fc1.2.bias: 0.0005241354228928685\n", + "Grad decoder.fc1.4.weight: 5.257730663288385e-05\n", + "Grad decoder.fc1.4.bias: 0.0007142819231376052\n", + "Grad decoder.fc2.weight: 0.0001233132934430614\n", + "Grad decoder.fc2.bias: 0.0025033107958734035\n", + "Grad _memory_unit.weight_ih_l0: 1.474602959206095e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.6006563934497535e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.4019889679038897e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.542742201214423e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010014537838287652\n", + "Grad _memory_unit.bias_hh_l1: 5.32931080670096e-05\n", + "Data X Sample: tensor([[1.3589, 1.4973, 1.7746, 1.7033, 1.8526, 2.0567, 2.0861, 2.1990, 3.6005,\n", + " 4.3079, 4.3524, 4.4052, 4.2099, 3.9288, 3.9089, 3.7020, 3.5599, 3.6966,\n", + " 3.6282, 3.6729, 3.4915, 3.3818, 2.9954, 2.7619, 2.7946, 2.8731, 3.0476,\n", + " 3.2058, 2.9419, 3.0885, 3.2895, 3.3768, 3.9161, 2.8835, 4.6033, 4.9204,\n", + " 5.1522, 5.5947, 5.9454, 5.9495, 0.9832, 0.6253, 0.6164, 1.1108, 1.6451,\n", + " 1.6926, 1.2238, 1.6342]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0287, 0.4889, 1.6965, 0.3779, 1.3720, 0.7514, 0.0334, -0.1500,\n", + " 0.1805, -0.2415, -1.0504, -0.0329, 0.1600, 0.2944, 0.1857, -0.3012,\n", + " -0.0403, 0.4271, 0.8416, 0.4828, 0.0452, -1.2514, 0.2625, -0.3630,\n", + " -0.0713, -0.8911, 0.0843, -1.1254, -0.3744, 0.0321, -0.0853, -0.1712,\n", + " 0.1517, 0.7038, 1.1866, -0.5075, 0.0621, -0.5101, -0.9104, -1.1413,\n", + " -0.8813, -0.4590, -0.0808]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.0981, -0.1462, -0.0258, -0.0453, -0.0321, 0.1613, 0.0664, 0.1727,\n", + " 0.0738, 0.1278, 0.1285, -0.1107, -0.0956, -0.1443, -0.1348, -0.1333,\n", + " -0.1407, -0.0160, -0.0745, -0.1555, -0.0197, -0.0304, 0.0168, -0.0662,\n", + " 0.0254, -0.0650, -0.0890, -0.0637, -0.1610, -0.0709, -0.1945, -0.0408,\n", + " -0.1700, -0.1329, -0.0933, -0.1675, -0.0437, 0.0045, 0.0311, 0.2011,\n", + " 0.2201, 0.1810, 0.1109]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002930827613454312\n", + "Grad encoder.fc1.bias: 0.00011794389865826815\n", + "Grad encoder.encoder.0.weight: 7.880599150666967e-05\n", + "Grad encoder.encoder.0.bias: 0.00011731523409252986\n", + "Grad encoder.encoder.2.weight: 6.231003499124199e-05\n", + "Grad encoder.encoder.2.bias: 0.00020855205366387963\n", + "Grad encoder.encoder.4.weight: 0.00012549461098387837\n", + "Grad encoder.encoder.4.bias: 0.0005115048843435943\n", + "Grad decoder.fc1.0.weight: 5.1863520639017224e-05\n", + "Grad decoder.fc1.0.bias: 0.00035776745062321424\n", + "Grad decoder.fc1.2.weight: 7.19719537300989e-05\n", + "Grad decoder.fc1.2.bias: 0.0006334690842777491\n", + "Grad decoder.fc1.4.weight: 6.288331496762112e-05\n", + "Grad decoder.fc1.4.bias: 0.0008600010769441724\n", + "Grad decoder.fc2.weight: 0.00011419619841035455\n", + "Grad decoder.fc2.bias: 0.002201384399086237\n", + "Grad _memory_unit.weight_ih_l0: 1.7680340533843264e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.804416337516159e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.007753028010484e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.00481644141837e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.230055002262816e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.873018406215124e-05\n", + "Data X Sample: tensor([[1.3791, 1.4958, 1.7340, 1.9067, 1.9158, 2.0316, 2.0121, 2.0414, 2.6583,\n", + " 3.8845, 4.1938, 4.1560, 4.0435, 3.9016, 3.7879, 3.7184, 3.6290, 3.5844,\n", + " 3.3350, 3.3010, 3.4645, 3.4522, 3.1424, 2.8898, 2.7908, 2.8208, 2.9064,\n", + " 2.8876, 2.8655, 3.0360, 3.0936, 3.1226, 3.5047, 2.6043, 4.2699, 4.6529,\n", + " 4.9870, 5.2819, 5.8947, 5.7310, 1.0500, 0.6213, 0.6245, 1.0534, 1.5658,\n", + " 1.9442, 1.1898, 1.6968]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.7025, -1.3909, 0.1394, -0.9946, -0.4950, -0.9910, -0.0612, 0.1248,\n", + " 0.6052, 0.5034, 0.5723, 0.1055, 0.3351, -0.7604, -0.2877, -0.5101,\n", + " -1.0197, 0.2400, 0.0590, -1.6624, -0.5877, 1.7560, -1.1217, 0.5291,\n", + " 1.4729, 2.2501, 0.1885, 0.3511, 0.8773, -0.3926, -0.4670, -0.0794,\n", + " -1.1669, -1.0523, 0.0055, -0.7837, 0.3997, 0.7314, 1.1574, 0.6612,\n", + " 0.7899, 0.3325, 0.7166]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.0849, -0.1346, -0.0234, -0.0481, -0.0385, 0.1442, 0.0646, 0.1536,\n", + " 0.0666, 0.1071, 0.1136, -0.0989, -0.0806, -0.1293, -0.1229, -0.1201,\n", + " -0.1249, -0.0110, -0.0602, -0.1398, -0.0211, -0.0223, 0.0152, -0.0577,\n", + " 0.0213, -0.0523, -0.0883, -0.0581, -0.1458, -0.0639, -0.1760, -0.0444,\n", + " -0.1520, -0.1183, -0.0722, -0.1529, -0.0445, -0.0060, 0.0242, 0.1776,\n", + " 0.2003, 0.1716, 0.1078]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00013362876779865474\n", + "Grad encoder.fc1.bias: 0.0009226883412338793\n", + "Grad encoder.encoder.0.weight: 5.048693128628656e-05\n", + "Grad encoder.encoder.0.bias: 0.0007161499233916402\n", + "Grad encoder.encoder.2.weight: 4.9393303925171494e-05\n", + "Grad encoder.encoder.2.bias: 0.0005238246521912515\n", + "Grad encoder.encoder.4.weight: 0.00010814956476679072\n", + "Grad encoder.encoder.4.bias: 0.0011990937637165189\n", + "Grad decoder.fc1.0.weight: 6.773693894501776e-05\n", + "Grad decoder.fc1.0.bias: 0.0008269267855212092\n", + "Grad decoder.fc1.2.weight: 9.208335541188717e-05\n", + "Grad decoder.fc1.2.bias: 0.000898247177246958\n", + "Grad decoder.fc1.4.weight: 7.419328903779387e-05\n", + "Grad decoder.fc1.4.bias: 0.0009879159042611718\n", + "Grad decoder.fc2.weight: 0.00012621413043234497\n", + "Grad decoder.fc2.bias: 0.0017841537483036518\n", + "Grad _memory_unit.weight_ih_l0: 1.961664565897081e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00014392263256013393\n", + "Grad _memory_unit.bias_hh_l0: 7.576754433102906e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.983559721149504e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002753087319433689\n", + "Grad _memory_unit.bias_hh_l1: 0.000146473350469023\n", + "Data X Sample: tensor([[1.2995, 1.3793, 1.5462, 1.7645, 1.7928, 1.8504, 2.0568, 2.1749, 2.2262,\n", + " 3.6981, 4.0193, 4.0975, 3.8149, 3.6017, 3.5861, 3.4052, 3.3586, 3.2981,\n", + " 3.3928, 3.2898, 3.3860, 3.3558, 2.9014, 2.8058, 2.7101, 2.7268, 2.8744,\n", + " 2.8999, 2.7268, 2.8854, 3.0551, 3.2248, 3.4937, 2.5448, 4.1817, 4.5385,\n", + " 4.9201, 5.1547, 5.4891, 5.6175, 0.9498, 0.5696, 0.5841, 1.0678, 1.5460,\n", + " 1.7784, 1.1626, 1.6577]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0435, 0.2226, 0.0745, 0.8272, 0.5111, -0.0723, -0.0675, -0.2703,\n", + " 0.3008, -0.6132, -0.2454, 0.8265, 0.5749, 0.9212, 1.7827, 0.2150,\n", + " 0.6096, 0.7923, 0.3591, 1.7110, -1.5192, 0.3107, -2.0080, 0.0224,\n", + " -0.1669, -0.2306, -0.4632, 0.8909, -0.7115, 0.3591, -0.3232, -0.1453,\n", + " 0.3012, 0.1392, 0.3047, 0.6504, -0.5002, 0.1524, -1.1945, -0.0284,\n", + " -0.3578, -0.0308, -0.5712]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.0714, -0.1282, -0.0186, -0.0542, -0.0453, 0.1304, 0.0650, 0.1353,\n", + " 0.0608, 0.0912, 0.1041, -0.0886, -0.0669, -0.1159, -0.1176, -0.1139,\n", + " -0.1110, -0.0053, -0.0434, -0.1235, -0.0177, -0.0121, 0.0133, -0.0496,\n", + " 0.0152, -0.0361, -0.0885, -0.0464, -0.1338, -0.0631, -0.1614, -0.0473,\n", + " -0.1388, -0.1068, -0.0550, -0.1407, -0.0510, -0.0138, 0.0227, 0.1556,\n", + " 0.1839, 0.1668, 0.1095]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00026505166897550225\n", + "Grad encoder.fc1.bias: 0.0011306910309940577\n", + "Grad encoder.encoder.0.weight: 9.261246304959059e-05\n", + "Grad encoder.encoder.0.bias: 0.000705624115653336\n", + "Grad encoder.encoder.2.weight: 6.646756082773209e-05\n", + "Grad encoder.encoder.2.bias: 0.0005503495340235531\n", + "Grad encoder.encoder.4.weight: 0.0001347862125840038\n", + "Grad encoder.encoder.4.bias: 0.0007102508097887039\n", + "Grad decoder.fc1.0.weight: 5.605308979284018e-05\n", + "Grad decoder.fc1.0.bias: 0.0005708845565095544\n", + "Grad decoder.fc1.2.weight: 8.161235018633306e-05\n", + "Grad decoder.fc1.2.bias: 0.0008175615221261978\n", + "Grad decoder.fc1.4.weight: 6.701071833958849e-05\n", + "Grad decoder.fc1.4.bias: 0.0008268145611509681\n", + "Grad decoder.fc2.weight: 0.0001124666232499294\n", + "Grad decoder.fc2.bias: 0.001713292207568884\n", + "Grad _memory_unit.weight_ih_l0: 1.212645565829007e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.948411075631157e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.179293318884447e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.233472388179507e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00018210661073680967\n", + "Grad _memory_unit.bias_hh_l1: 9.679891809355468e-05\n", + "Data X Sample: tensor([[1.2231, 1.4026, 1.4575, 1.4803, 1.6750, 1.7606, 1.8211, 1.8483, 3.0976,\n", + " 3.7976, 3.8575, 3.8969, 3.5708, 3.5771, 3.5988, 3.5324, 3.5473, 3.6250,\n", + " 3.5353, 3.4256, 3.2191, 3.1476, 2.8484, 2.7065, 2.6613, 2.7686, 2.7972,\n", + " 2.7653, 2.8308, 2.8919, 3.0411, 3.1087, 3.4915, 2.5013, 4.0469, 4.4729,\n", + " 4.7038, 4.9931, 5.5588, 5.3139, 0.9307, 0.5556, 0.5659, 0.9817, 1.4073,\n", + " 1.4181, 1.0538, 1.4231]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0897, 0.1944, 0.2875, -0.2729, -0.0232, 1.6866, -0.6809, 0.2982,\n", + " -0.7299, 0.4757, 1.6755, 0.4626, -0.8002, 0.2504, 0.7401, 0.4582,\n", + " -0.1984, 0.1314, -0.0582, -0.1673, -1.8872, -1.0126, 0.2099, -0.2369,\n", + " 0.0750, 2.3509, 0.5367, 0.0211, 0.0366, 0.2493, -1.2563, -0.0884,\n", + " 3.2348, -0.7523, 0.7017, 0.1724, 0.8781, 0.0849, -1.0094, -0.1998,\n", + " 0.7016, -0.2295, 0.1178]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.0678, -0.1362, -0.0240, -0.0591, -0.0380, 0.1379, 0.0709, 0.1347,\n", + " 0.0602, 0.0827, 0.1067, -0.0722, -0.0598, -0.1130, -0.1268, -0.1213,\n", + " -0.0980, -0.0032, -0.0196, -0.1211, -0.0242, 0.0037, 0.0124, -0.0360,\n", + " 0.0190, -0.0292, -0.1013, -0.0312, -0.1380, -0.0661, -0.1456, -0.0537,\n", + " -0.1274, -0.0990, -0.0518, -0.1385, -0.0530, -0.0241, 0.0155, 0.1496,\n", + " 0.1830, 0.1772, 0.1286]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004687162581831217\n", + "Grad encoder.fc1.bias: 0.00033691542921587825\n", + "Grad encoder.encoder.0.weight: 0.00014211921370588243\n", + "Grad encoder.encoder.0.bias: 0.00037111114943400025\n", + "Grad encoder.encoder.2.weight: 8.394793258048594e-05\n", + "Grad encoder.encoder.2.bias: 0.0004432097193785012\n", + "Grad encoder.encoder.4.weight: 0.0001629033067729324\n", + "Grad encoder.encoder.4.bias: 0.001271190820261836\n", + "Grad decoder.fc1.0.weight: 6.980420585023239e-05\n", + "Grad decoder.fc1.0.bias: 0.0008225305355153978\n", + "Grad decoder.fc1.2.weight: 8.493084169458598e-05\n", + "Grad decoder.fc1.2.bias: 0.0009528911905363202\n", + "Grad decoder.fc1.4.weight: 6.192341243149713e-05\n", + "Grad decoder.fc1.4.bias: 0.0008277160814031959\n", + "Grad decoder.fc2.weight: 0.00010391038085799664\n", + "Grad decoder.fc2.bias: 0.0014490491012111306\n", + "Grad _memory_unit.weight_ih_l0: 1.6247508028754964e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00013548035349231213\n", + "Grad _memory_unit.bias_hh_l0: 7.131550228223205e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.788564057089388e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00028538404149003327\n", + "Grad _memory_unit.bias_hh_l1: 0.00015200822963379323\n", + "Data X Sample: tensor([[1.3526, 1.5920, 1.6799, 1.8105, 1.9021, 1.8990, 1.9828, 2.0641, 2.7583,\n", + " 3.7360, 4.2287, 4.0547, 3.9880, 3.8389, 3.6996, 3.6062, 3.5410, 3.4432,\n", + " 3.3309, 3.2638, 3.3050, 3.3680, 2.9785, 2.8649, 2.8809, 2.9123, 2.8824,\n", + " 2.9407, 2.8447, 3.0229, 3.1496, 3.1004, 3.4695, 2.5265, 4.2675, 4.6553,\n", + " 5.0185, 5.2660, 5.9581, 5.7452, 1.0404, 0.6791, 0.6245, 1.0305, 1.6491,\n", + " 1.8241, 1.1490, 1.6655]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1535, -0.2908, 0.0226, 0.2856, 0.5811, -0.3677, -0.2580, -0.3000,\n", + " 0.0232, 0.0364, 0.4894, 0.1645, 0.0395, 0.0146, -0.2225, 0.6457,\n", + " 1.0616, 0.0628, 2.0496, 1.0198, -0.6891, -0.6530, -3.6312, -0.7510,\n", + " 2.0583, -0.0324, -0.5083, -0.1660, -0.3352, -0.9536, -0.6604, -0.3840,\n", + " 0.0309, 0.2837, 0.3807, 0.5737, 0.5223, -0.0533, 0.6865, -0.0851,\n", + " 0.0746, -0.6358, -0.4184]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.0907, -0.1600, -0.0382, -0.0774, -0.0346, 0.1534, 0.0968, 0.1641,\n", + " 0.0765, 0.0940, 0.1233, -0.0864, -0.0686, -0.1369, -0.1458, -0.1459,\n", + " -0.1069, -0.0117, -0.0302, -0.1346, -0.0369, 0.0060, 0.0137, -0.0383,\n", + " 0.0230, -0.0301, -0.1141, -0.0459, -0.1575, -0.0827, -0.1699, -0.0696,\n", + " -0.1475, -0.1233, -0.0653, -0.1531, -0.0557, -0.0356, 0.0129, 0.1842,\n", + " 0.2100, 0.2061, 0.1484]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00016548347775824368\n", + "Grad encoder.fc1.bias: 0.0006524050259031355\n", + "Grad encoder.encoder.0.weight: 6.633528391830623e-05\n", + "Grad encoder.encoder.0.bias: 0.00039748300332576036\n", + "Grad encoder.encoder.2.weight: 5.2422972657950595e-05\n", + "Grad encoder.encoder.2.bias: 0.0003040006849914789\n", + "Grad encoder.encoder.4.weight: 0.00011999165872111917\n", + "Grad encoder.encoder.4.bias: 0.0007146078860387206\n", + "Grad decoder.fc1.0.weight: 5.2621664508478716e-05\n", + "Grad decoder.fc1.0.bias: 0.0005578130367211998\n", + "Grad decoder.fc1.2.weight: 6.920168380020186e-05\n", + "Grad decoder.fc1.2.bias: 0.0007524790707975626\n", + "Grad decoder.fc1.4.weight: 6.249759462662041e-05\n", + "Grad decoder.fc1.4.bias: 0.0008675812277942896\n", + "Grad decoder.fc2.weight: 0.00015236328181345016\n", + "Grad decoder.fc2.bias: 0.0023610536009073257\n", + "Grad _memory_unit.weight_ih_l0: 1.4611197002523113e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.420052861561999e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.865356120513752e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.329945906851208e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00015655963215976954\n", + "Grad _memory_unit.bias_hh_l1: 8.306121890200302e-05\n", + "Data X Sample: tensor([[2.2394, 1.8687, 1.8678, 2.0116, 2.1377, 2.1186, 2.9457, 3.9877, 4.1180,\n", + " 4.3569, 4.3302, 4.3935, 4.1744, 4.0597, 3.7627, 3.6719, 3.5850, 3.6579,\n", + " 3.5828, 3.4758, 3.4203, 3.3726, 2.9930, 2.8134, 2.7458, 2.7686, 2.8717,\n", + " 2.7897, 2.7615, 2.9181, 2.9886, 3.1060, 3.2847, 2.5288, 4.2454, 4.4267,\n", + " 4.8395, 5.3668, 6.0595, 5.9523, 1.2027, 0.7050, 0.6851, 1.2544, 1.7759,\n", + " 1.9270, 1.2510, 1.8688]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7819, 1.0141, -1.1048, 0.3398, 0.8281, 1.0402, 0.4861, -0.2401,\n", + " 0.0586, -0.2827, 0.0135, 0.5589, 1.0666, 1.1541, -0.2324, -0.6821,\n", + " -0.7356, -0.0131, 0.1576, 0.8874, 0.9501, -0.2747, 0.8419, 0.5878,\n", + " 1.3044, 0.5613, 0.4312, -0.1817, -0.4031, -0.5708, -0.1796, -0.1061,\n", + " -1.2477, -1.9300, -0.7163, -1.7424, -0.0249, -0.0140, 1.0325, -0.2837,\n", + " -0.0222, 0.7342, -0.6279]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1388, -0.1888, -0.0540, -0.1370, -0.0366, 0.1311, 0.1392, 0.1707,\n", + " 0.0980, 0.0825, 0.1405, -0.0636, -0.0718, -0.1549, -0.1501, -0.1598,\n", + " -0.1158, -0.0392, -0.0195, -0.1389, -0.0885, -0.0009, 0.0137, -0.0200,\n", + " 0.0190, -0.0238, -0.0975, -0.0673, -0.1483, -0.1107, -0.1591, -0.1208,\n", + " -0.1492, -0.1659, -0.0665, -0.1575, -0.0286, -0.0637, -0.0056, 0.2174,\n", + " 0.2315, 0.2274, 0.1911]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00018776755314320326\n", + "Grad encoder.fc1.bias: 0.00018757799989543855\n", + "Grad encoder.encoder.0.weight: 7.350134546868503e-05\n", + "Grad encoder.encoder.0.bias: 0.00018069946963805705\n", + "Grad encoder.encoder.2.weight: 6.0127520555397496e-05\n", + "Grad encoder.encoder.2.bias: 0.0003422196605242789\n", + "Grad encoder.encoder.4.weight: 0.0001397735031787306\n", + "Grad encoder.encoder.4.bias: 0.0009609400294721127\n", + "Grad decoder.fc1.0.weight: 6.014315295033157e-05\n", + "Grad decoder.fc1.0.bias: 0.000641188642475754\n", + "Grad decoder.fc1.2.weight: 6.771843618480489e-05\n", + "Grad decoder.fc1.2.bias: 0.0007334885885939002\n", + "Grad decoder.fc1.4.weight: 5.902578413952142e-05\n", + "Grad decoder.fc1.4.bias: 0.0007026251405477524\n", + "Grad decoder.fc2.weight: 0.00015520068700425327\n", + "Grad decoder.fc2.bias: 0.0020334406290203333\n", + "Grad _memory_unit.weight_ih_l0: 1.9489614714984782e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.611267887521535e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.1822025852743536e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.737018106330652e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00018703412206377834\n", + "Grad _memory_unit.bias_hh_l1: 9.971250256057829e-05\n", + "Data X Sample: tensor([[1.3292, 1.5701, 1.8272, 1.8673, 1.8765, 2.0390, 2.0968, 2.2615, 3.7665,\n", + " 3.9777, 4.0383, 4.1345, 3.9059, 3.6671, 3.6946, 3.6377, 3.5174, 3.4277,\n", + " 3.4300, 3.3456, 3.3786, 3.1659, 2.7929, 2.8878, 2.8697, 3.0298, 2.9996,\n", + " 3.0712, 3.1743, 3.1310, 3.2580, 3.3326, 3.6345, 2.6524, 4.3655, 4.5750,\n", + " 4.8985, 5.1759, 5.8060, 5.6743, 0.9784, 0.6412, 0.6770, 1.1826, 1.6015,\n", + " 1.8870, 1.2510, 1.6655]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4657, -0.0339, 1.2846, -0.0111, 0.1811, -0.0682, 1.1691, -0.1822,\n", + " 1.4976, 0.2999, -0.0418, -0.6999, 0.6024, -0.9325, 0.0271, 0.0953,\n", + " -0.5150, 0.4840, -0.3984, -0.4748, 0.8268, 0.2430, -0.5776, -1.7295,\n", + " 0.4430, 0.2044, -0.5662, 0.0447, -0.9347, -0.3969, 0.3743, -0.4169,\n", + " -0.5775, 0.2021, -0.3341, -0.2428, -0.8736, -0.4204, 0.5443, -0.2145,\n", + " -0.1087, -0.2191, -0.0824]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1017, -0.1907, -0.0376, -0.1053, -0.0205, 0.1573, 0.1141, 0.1587,\n", + " 0.0877, 0.0780, 0.1427, -0.0562, -0.0564, -0.1406, -0.1732, -0.1573,\n", + " -0.1077, -0.0214, 0.0083, -0.1330, -0.0524, 0.0225, 0.0078, -0.0022,\n", + " 0.0187, -0.0138, -0.1130, -0.0239, -0.1527, -0.0992, -0.1461, -0.0844,\n", + " -0.1355, -0.1356, -0.0641, -0.1517, -0.0489, -0.0466, -0.0064, 0.1950,\n", + " 0.2234, 0.2288, 0.1837]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003239460347685963\n", + "Grad encoder.fc1.bias: 0.00028456607833504677\n", + "Grad encoder.encoder.0.weight: 0.00011157319386256859\n", + "Grad encoder.encoder.0.bias: 0.00034764548763632774\n", + "Grad encoder.encoder.2.weight: 8.402919047512114e-05\n", + "Grad encoder.encoder.2.bias: 0.0005546235479414463\n", + "Grad encoder.encoder.4.weight: 0.00021655989985447377\n", + "Grad encoder.encoder.4.bias: 0.0009108377853408456\n", + "Grad decoder.fc1.0.weight: 6.508153455797583e-05\n", + "Grad decoder.fc1.0.bias: 0.0005732347490265965\n", + "Grad decoder.fc1.2.weight: 7.745092443656176e-05\n", + "Grad decoder.fc1.2.bias: 0.0007345148478634655\n", + "Grad decoder.fc1.4.weight: 5.516396777238697e-05\n", + "Grad decoder.fc1.4.bias: 0.0006752617191523314\n", + "Grad decoder.fc2.weight: 0.00011530434130690992\n", + "Grad decoder.fc2.bias: 0.0019281503045931458\n", + "Grad _memory_unit.weight_ih_l0: 2.3873722966527566e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.177965017035604e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.8991187466308475e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.824406904750504e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00013973150635138154\n", + "Grad _memory_unit.bias_hh_l1: 7.518852362409234e-05\n", + "Data X Sample: tensor([[2.7423, 3.1053, 2.9241, 2.7332, 2.6056, 2.9215, 3.6467, 3.8330, 4.0203,\n", + " 4.0457, 4.1081, 4.0488, 3.8682, 3.8743, 3.7652, 3.4462, 3.4514, 3.5070,\n", + " 3.4796, 3.3382, 3.1529, 3.1782, 2.9255, 2.7542, 2.7646, 2.7738, 2.6826,\n", + " 2.8591, 2.8447, 2.7871, 2.7821, 2.7329, 3.0845, 2.2565, 3.7454, 4.2394,\n", + " 4.4383, 4.7996, 5.3560, 5.4359, 1.8709, 1.1152, 1.0226, 1.7595, 2.7036,\n", + " 2.6990, 1.7473, 2.5334]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3956, -0.5472, 0.3332, -0.9454, 0.0093, -0.0189, -0.2206, -0.5392,\n", + " -0.3330, 0.0685, -0.5947, 0.9508, 1.6357, -0.1938, -0.0405, -0.1236,\n", + " 0.3594, -1.4465, -0.3796, -0.7199, -0.5393, 0.7373, -2.8742, 0.7159,\n", + " 0.1371, 0.0359, 0.3422, 1.0377, 0.1434, 0.4175, 0.6381, 1.0728,\n", + " 0.5638, 0.7309, -0.0299, 0.1458, 0.4925, -0.4106, -0.2578, 0.1781,\n", + " 0.2422, 0.0562, 0.4636]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2024, -0.2278, -0.0788, -0.2183, -0.0606, 0.0610, 0.1637, 0.1922,\n", + " 0.1261, 0.0781, 0.1377, -0.0253, -0.0550, -0.1603, -0.1372, -0.1741,\n", + " -0.1274, -0.0865, 0.0105, -0.1208, -0.1170, 0.0226, -0.0061, -0.0314,\n", + " 0.0100, 0.0315, -0.0503, -0.0508, -0.1056, -0.1583, -0.1330, -0.1802,\n", + " -0.1333, -0.1859, -0.0456, -0.1459, -0.0057, -0.0894, -0.0208, 0.2357,\n", + " 0.2534, 0.2663, 0.2456]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006884612957946956\n", + "Grad encoder.fc1.bias: 0.00038082548417150974\n", + "Grad encoder.encoder.0.weight: 0.00017468101577833295\n", + "Grad encoder.encoder.0.bias: 0.0003909428487531841\n", + "Grad encoder.encoder.2.weight: 0.00010348732757847756\n", + "Grad encoder.encoder.2.bias: 0.0006047839997336268\n", + "Grad encoder.encoder.4.weight: 0.0002594931866042316\n", + "Grad encoder.encoder.4.bias: 0.0021493597887456417\n", + "Grad decoder.fc1.0.weight: 9.085441706702113e-05\n", + "Grad decoder.fc1.0.bias: 0.0011109055485576391\n", + "Grad decoder.fc1.2.weight: 8.720064215594903e-05\n", + "Grad decoder.fc1.2.bias: 0.0009298496297560632\n", + "Grad decoder.fc1.4.weight: 6.975368887651712e-05\n", + "Grad decoder.fc1.4.bias: 0.0008796725887805223\n", + "Grad decoder.fc2.weight: 0.00013312403461895883\n", + "Grad decoder.fc2.bias: 0.001539357122965157\n", + "Grad _memory_unit.weight_ih_l0: 2.9364613510551862e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00018536676361691207\n", + "Grad _memory_unit.bias_hh_l0: 9.81638440862298e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.124484151659999e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00034688026062212884\n", + "Grad _memory_unit.bias_hh_l1: 0.0001852835703175515\n", + "Data X Sample: tensor([[1.3123, 1.6575, 1.7445, 1.9089, 1.9379, 2.0316, 2.1277, 2.0812, 3.4565,\n", + " 4.1957, 4.3207, 4.4422, 4.1212, 4.0515, 3.7602, 3.7827, 3.7014, 3.6443,\n", + " 3.5250, 3.4181, 3.6289, 3.4920, 2.9881, 2.8134, 2.8096, 2.9671, 2.8771,\n", + " 2.8754, 2.9384, 3.1736, 3.2965, 3.2828, 3.7929, 2.7874, 4.6425, 4.9399,\n", + " 5.1502, 5.6821, 6.1863, 5.9324, 1.0547, 0.6472, 0.6791, 1.0850, 1.7323,\n", + " 1.8813, 1.2306, 1.7437]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4076, -0.0466, 1.0355, 0.0742, 0.6996, 0.4728, 0.2002, -0.3362,\n", + " -0.2636, 0.1789, -0.5843, 1.0686, -0.4891, -0.0492, -0.6143, -0.1390,\n", + " 0.0421, -0.7621, 0.5349, -1.2716, 0.8970, 5.2309, 0.7069, -0.7525,\n", + " 0.5243, 0.3697, -1.2026, -0.6246, -0.5579, -0.0477, -0.0815, 0.5258,\n", + " 0.3672, -0.7070, -0.0941, -0.1315, 0.0000, -0.5460, 0.5443, 0.1929,\n", + " -0.7575, -0.3226, -1.2164]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1735, -0.2429, -0.0796, -0.1408, -0.0127, 0.1929, 0.1712, 0.2472,\n", + " 0.1435, 0.1351, 0.1912, -0.1073, -0.0914, -0.2139, -0.2172, -0.2279,\n", + " -0.1432, -0.0432, -0.0323, -0.1666, -0.0714, 0.0089, 0.0256, -0.0345,\n", + " 0.0174, -0.0339, -0.1446, -0.0798, -0.2208, -0.1568, -0.2326, -0.1232,\n", + " -0.2269, -0.1945, -0.1167, -0.2092, -0.0750, -0.0567, 0.0075, 0.2855,\n", + " 0.3015, 0.2996, 0.2318]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005168410134501755\n", + "Grad encoder.fc1.bias: 0.0009972588159143925\n", + "Grad encoder.encoder.0.weight: 0.00015124442870728672\n", + "Grad encoder.encoder.0.bias: 0.0006617967155762017\n", + "Grad encoder.encoder.2.weight: 9.959368617273867e-05\n", + "Grad encoder.encoder.2.bias: 0.0006307451985776424\n", + "Grad encoder.encoder.4.weight: 0.00022285772138275206\n", + "Grad encoder.encoder.4.bias: 0.0009183615911751986\n", + "Grad decoder.fc1.0.weight: 6.955799472052604e-05\n", + "Grad decoder.fc1.0.bias: 0.0006082862964831293\n", + "Grad decoder.fc1.2.weight: 7.418378663714975e-05\n", + "Grad decoder.fc1.2.bias: 0.0005786640103906393\n", + "Grad decoder.fc1.4.weight: 6.018124986439943e-05\n", + "Grad decoder.fc1.4.bias: 0.0007097073830664158\n", + "Grad decoder.fc2.weight: 0.00016789165965747088\n", + "Grad decoder.fc2.bias: 0.0016426184447482228\n", + "Grad _memory_unit.weight_ih_l0: 2.2681157133774832e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.856622399529442e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.7237203539698385e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.711320904491004e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011415388871682808\n", + "Grad _memory_unit.bias_hh_l1: 6.0389498685253784e-05\n", + "Data X Sample: tensor([[2.5259, 2.9873, 3.2577, 3.2120, 3.4115, 3.6404, 3.6745, 3.7904, 3.8031,\n", + " 3.9319, 3.9178, 3.9690, 3.7239, 3.6916, 3.5080, 3.4941, 3.4592, 3.5418,\n", + " 3.4465, 3.3717, 3.3614, 3.0695, 2.9978, 2.8516, 2.7514, 2.7477, 2.7146,\n", + " 2.6388, 2.6782, 2.8494, 2.7366, 2.8020, 2.9195, 2.1169, 3.5419, 3.9281,\n", + " 4.0686, 4.5664, 5.0707, 4.8118, 1.9329, 1.1371, 1.1520, 1.9318, 2.8265,\n", + " 3.0764, 2.1349, 3.0104]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 8.3427e-02, 5.9106e-01, 4.4920e-01, -1.8194e-01, -7.8159e-01,\n", + " 9.2154e-01, -4.1934e-02, 2.8020e-01, -6.2738e-01, -4.5263e-01,\n", + " -6.5657e-01, 2.3009e-01, -1.4984e-03, -1.9184e-01, 3.5531e-01,\n", + " -9.4295e-01, 1.0683e-01, -6.4331e-01, -9.0257e-01, 7.2839e-01,\n", + " -1.0193e+00, -5.4681e-01, -8.2184e-01, -5.1145e-01, -1.0687e+00,\n", + " 5.4736e+00, -1.8561e-01, -9.2842e-02, 8.1592e-01, 5.2838e-01,\n", + " 1.0336e+00, 7.8106e-01, 4.1646e-01, 2.3414e-01, -1.2099e+00,\n", + " -2.1333e-01, -6.4728e-01, 5.4174e-01, 2.8698e-01, -1.5337e+00,\n", + " -1.7069e-01, 7.9783e-03, -4.8520e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2562, -0.2845, -0.1082, -0.2754, -0.0752, 0.0560, 0.1739, 0.2394,\n", + " 0.1501, 0.1012, 0.1671, -0.0397, -0.0696, -0.1939, -0.1519, -0.2003,\n", + " -0.1486, -0.1204, 0.0114, -0.1149, -0.1373, 0.0301, -0.0269, -0.0455,\n", + " 0.0233, 0.0430, -0.0451, -0.0636, -0.1118, -0.1999, -0.1378, -0.2310,\n", + " -0.1504, -0.2034, -0.0443, -0.1660, -0.0136, -0.1025, -0.0276, 0.2868,\n", + " 0.2901, 0.3166, 0.2852]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0010347745846956968\n", + "Grad encoder.fc1.bias: 0.0008245979552157223\n", + "Grad encoder.encoder.0.weight: 0.00025422987528145313\n", + "Grad encoder.encoder.0.bias: 0.0007301747100427747\n", + "Grad encoder.encoder.2.weight: 0.00013899464101996273\n", + "Grad encoder.encoder.2.bias: 0.0009174898732453585\n", + "Grad encoder.encoder.4.weight: 0.0003274924820289016\n", + "Grad encoder.encoder.4.bias: 0.002731800777837634\n", + "Grad decoder.fc1.0.weight: 0.00010754916729638353\n", + "Grad decoder.fc1.0.bias: 0.0013792996760457754\n", + "Grad decoder.fc1.2.weight: 0.00010290076897945255\n", + "Grad decoder.fc1.2.bias: 0.001183507265523076\n", + "Grad decoder.fc1.4.weight: 7.418794848490506e-05\n", + "Grad decoder.fc1.4.bias: 0.0009898189455270767\n", + "Grad decoder.fc2.weight: 0.00017496669897809625\n", + "Grad decoder.fc2.bias: 0.002086650114506483\n", + "Grad _memory_unit.weight_ih_l0: 3.219133577658795e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00020307762315496802\n", + "Grad _memory_unit.bias_hh_l0: 0.00010777572606457397\n", + "Grad _memory_unit.weight_ih_l1: 1.4297012057795655e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00037923105992376804\n", + "Grad _memory_unit.bias_hh_l1: 0.00020236425916664302\n", + "Data X Sample: tensor([[1.2826, 1.5337, 1.7025, 1.6421, 1.7843, 2.0626, 1.9813, 1.9392, 2.0334,\n", + " 3.0868, 3.9749, 4.0975, 3.9370, 3.7298, 3.6820, 3.5433, 3.4073, 3.4799,\n", + " 3.4445, 3.4535, 3.4473, 3.3450, 2.9399, 2.8134, 2.7214, 2.8731, 2.9410,\n", + " 2.9366, 2.9627, 2.9935, 3.0096, 3.2469, 3.6763, 2.5814, 4.2920, 4.6942,\n", + " 4.9595, 5.3535, 5.8377, 5.7282, 1.0166, 0.5417, 0.6407, 1.1539, 1.4231,\n", + " 1.6354, 1.0402, 1.5169]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.9255, 0.1084, -0.6530, 0.5901, 0.7838, 0.1469, 1.1333, 1.0998,\n", + " 0.4943, -0.7500, 0.2927, 0.5141, 0.6227, -0.0480, -0.0254, 0.7102,\n", + " -0.3432, -0.2906, -0.2812, 0.5113, -0.2871, 0.2742, -0.1245, -1.0446,\n", + " 0.1577, -0.1359, 0.8290, 1.5073, 1.8614, 1.2192, 0.5592, 0.2104,\n", + " -0.4902, 0.3335, -0.2766, 0.9353, 0.8913, 1.1954, -0.4122, -0.9539,\n", + " -0.6968, 0.1259, 0.3006]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1995, -0.2582, -0.0813, -0.1556, -0.0137, 0.1835, 0.1850, 0.2617,\n", + " 0.1630, 0.1503, 0.2068, -0.1107, -0.0931, -0.2282, -0.2356, -0.2428,\n", + " -0.1534, -0.0575, -0.0420, -0.1614, -0.0748, 0.0079, 0.0302, -0.0271,\n", + " 0.0021, -0.0243, -0.1413, -0.0840, -0.2202, -0.1816, -0.2465, -0.1446,\n", + " -0.2568, -0.2149, -0.1216, -0.2203, -0.0786, -0.0565, 0.0098, 0.3095,\n", + " 0.3248, 0.3216, 0.2478]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00017859697982203215\n", + "Grad encoder.fc1.bias: 0.00021887508046347648\n", + "Grad encoder.encoder.0.weight: 7.369157538050786e-05\n", + "Grad encoder.encoder.0.bias: 0.0003569691616576165\n", + "Grad encoder.encoder.2.weight: 5.064547804067843e-05\n", + "Grad encoder.encoder.2.bias: 0.00039058999391272664\n", + "Grad encoder.encoder.4.weight: 9.549965034238994e-05\n", + "Grad encoder.encoder.4.bias: 0.0006031758966855705\n", + "Grad decoder.fc1.0.weight: 4.4236712710699067e-05\n", + "Grad decoder.fc1.0.bias: 0.0004021925269626081\n", + "Grad decoder.fc1.2.weight: 5.7052908232435584e-05\n", + "Grad decoder.fc1.2.bias: 0.0004826954973395914\n", + "Grad decoder.fc1.4.weight: 5.511398921953514e-05\n", + "Grad decoder.fc1.4.bias: 0.0005529665504582226\n", + "Grad decoder.fc2.weight: 0.00014663136971648782\n", + "Grad decoder.fc2.bias: 0.0015183290233835578\n", + "Grad _memory_unit.weight_ih_l0: 1.1163145245518535e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.228896432323381e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.324569140910171e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.5664613682893105e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.246038098353893e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.9133064749184996e-05\n", + "Data X Sample: tensor([[1.6475, 1.7813, 1.9189, 2.0488, 2.2402, 2.4574, 2.4327, 2.5582, 2.6753,\n", + " 2.6129, 2.7440, 2.6973, 2.5544, 2.5792, 2.5194, 2.3631, 2.4293, 2.5185,\n", + " 2.5214, 2.4306, 2.4953, 2.5153, 2.4483, 2.5309, 2.4887, 2.4500, 2.4908,\n", + " 2.5613, 2.2341, 2.3515, 2.3797, 2.4207, 2.3144, 1.5127, 2.0320, 1.8777,\n", + " 1.7246, 1.6538, 1.5593, 1.6087, 1.2886, 0.7607, 0.6791, 1.3692, 1.9385,\n", + " 2.0414, 1.4414, 1.9704]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.5445, 0.6996, -0.6810, -0.2643, 0.5989, 0.1115, -0.4849, -0.4508,\n", + " -0.4522, -0.2076, -0.2970, 0.0980, 0.4854, 0.6870, 0.3423, 0.1988,\n", + " 0.1568, 0.5965, -0.7527, -1.3489, -0.8058, -0.3441, -1.3053, -1.0380,\n", + " -0.8731, -0.7223, -0.4354, -0.5157, 1.1035, 0.1413, 0.3642, 1.1680,\n", + " 0.2111, 0.5714, 0.1439, 0.2052, 0.3148, 0.1511, -1.8131, -0.0942,\n", + " -0.1051, -0.2204, -0.3685]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.1986, 0.1477, 0.0630, 0.0575, -0.0117, -0.0706, -0.1842, -0.1668,\n", + " -0.1587, -0.1709, -0.1440, 0.0860, 0.0690, 0.1783, 0.0713, 0.1446,\n", + " 0.1261, 0.0293, 0.0639, 0.0273, -0.0445, 0.0358, 0.0507, 0.0139,\n", + " 0.0303, 0.0467, -0.0382, 0.0168, 0.0564, 0.1395, 0.1275, 0.0549,\n", + " 0.1086, 0.0971, 0.0728, -0.0064, -0.0533, -0.0703, 0.0227, -0.1294,\n", + " -0.1018, -0.0515, -0.0589]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0023597627878189087\n", + "Grad encoder.fc1.bias: 0.001257666852325201\n", + "Grad encoder.encoder.0.weight: 0.0005311837885528803\n", + "Grad encoder.encoder.0.bias: 0.001172770163975656\n", + "Grad encoder.encoder.2.weight: 0.0003091244725510478\n", + "Grad encoder.encoder.2.bias: 0.0016445202054455876\n", + "Grad encoder.encoder.4.weight: 0.0007194173522293568\n", + "Grad encoder.encoder.4.bias: 0.004347239620983601\n", + "Grad decoder.fc1.0.weight: 0.00019686522136908025\n", + "Grad decoder.fc1.0.bias: 0.001988368108868599\n", + "Grad decoder.fc1.2.weight: 0.0002214062842540443\n", + "Grad decoder.fc1.2.bias: 0.002121522556990385\n", + "Grad decoder.fc1.4.weight: 0.00016092308214865625\n", + "Grad decoder.fc1.4.bias: 0.002104346640408039\n", + "Grad decoder.fc2.weight: 0.00020524265710264444\n", + "Grad decoder.fc2.bias: 0.003415252547711134\n", + "Grad _memory_unit.weight_ih_l0: 5.0290862418478355e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00014848518185317516\n", + "Grad _memory_unit.bias_hh_l0: 7.888198888394982e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.7324286091024987e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0004168583545833826\n", + "Grad _memory_unit.bias_hh_l1: 0.00022119184723123908\n", + "Data X Sample: tensor([[2.8186, 3.1796, 3.3779, 3.7171, 3.8691, 4.0412, 4.0412, 4.1283, 4.1204,\n", + " 4.0583, 4.0383, 3.8930, 3.9525, 3.8525, 3.6719, 3.5269, 3.6778, 3.6115,\n", + " 3.8595, 3.6674, 3.7491, 3.6941, 3.2436, 3.0883, 2.9128, 2.9018, 2.9144,\n", + " 2.9203, 2.9904, 3.0721, 3.0936, 3.2745, 3.6015, 2.4990, 3.8998, 4.1786,\n", + " 4.4285, 4.8235, 5.4193, 5.4274, 2.0761, 1.2466, 1.1560, 2.0839, 3.0484,\n", + " 3.4995, 2.2436, 3.3701]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2686, -0.5751, -1.0842, -0.0322, -0.1486, 0.2007, -0.5204, 1.1262,\n", + " -0.1599, 0.9895, 0.8892, 0.2327, 0.0411, 0.1979, -0.0332, 0.1722,\n", + " 0.0822, -0.0673, -0.5204, 0.2802, -1.6021, -0.2618, 1.1328, -2.1005,\n", + " 3.8817, 1.3494, -0.0439, 0.1486, 0.1820, -0.1588, -0.1470, -0.5639,\n", + " 0.0281, -0.1722, 0.6321, 0.2895, 0.8781, -0.3349, -0.0482, 0.1712,\n", + " 0.0158, -0.5718, -0.1651]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2250, -0.2721, -0.1327, -0.2445, -0.1115, 0.0478, 0.1088, 0.2423,\n", + " 0.1329, 0.1102, 0.1659, -0.0563, -0.0885, -0.1615, -0.1190, -0.1579,\n", + " -0.1177, -0.1113, -0.0237, -0.0844, -0.1333, 0.0323, -0.0711, -0.0479,\n", + " 0.0517, 0.0578, -0.0245, -0.0670, -0.0909, -0.1764, -0.0943, -0.2561,\n", + " -0.1163, -0.1491, 0.0136, -0.1498, -0.0446, -0.0977, -0.0232, 0.2648,\n", + " 0.2710, 0.3154, 0.2313]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00016161026724148542\n", + "Grad encoder.fc1.bias: 0.0007192670600488782\n", + "Grad encoder.encoder.0.weight: 6.652285082964227e-05\n", + "Grad encoder.encoder.0.bias: 0.0006745562423020601\n", + "Grad encoder.encoder.2.weight: 5.999239510856569e-05\n", + "Grad encoder.encoder.2.bias: 0.0006273639155551791\n", + "Grad encoder.encoder.4.weight: 0.0001372545666527003\n", + "Grad encoder.encoder.4.bias: 0.0011621639132499695\n", + "Grad decoder.fc1.0.weight: 7.079929491737857e-05\n", + "Grad decoder.fc1.0.bias: 0.0006434374372474849\n", + "Grad decoder.fc1.2.weight: 8.687948866281658e-05\n", + "Grad decoder.fc1.2.bias: 0.0006040178705006838\n", + "Grad decoder.fc1.4.weight: 7.997656211955473e-05\n", + "Grad decoder.fc1.4.bias: 0.0007901140488684177\n", + "Grad decoder.fc2.weight: 0.0001921869843499735\n", + "Grad decoder.fc2.bias: 0.0024329342413693666\n", + "Grad _memory_unit.weight_ih_l0: 2.5504958102828823e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.583850285504013e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.799888120032847e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.252743459190242e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001796334981918335\n", + "Grad _memory_unit.bias_hh_l1: 9.711671737022698e-05\n", + "Data X Sample: tensor([[ 0.0117, 0.0160, 0.0316, 0.0262, -0.0068, 0.0295, 0.0200, 0.0156,\n", + " 0.0293, 0.0142, 0.0254, 0.0097, -0.0044, -0.0136, -0.0252, 0.0068,\n", + " -0.0409, -0.0580, -0.0929, -0.1023, -0.0442, -0.0628, -0.1470, -0.1393,\n", + " -0.1107, -0.2090, -0.2398, -0.3671, -0.0624, -0.0721, -0.0735, -0.0718,\n", + " -0.0660, -0.0549, -0.0662, -0.0195, -0.0354, -0.0318, -0.0697, -0.0199,\n", + " -0.0334, -0.0040, 0.0020, -0.0029, -0.0317, 0.0172, 0.0408, -0.0235]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3901, 0.3622, 0.3780, -1.0683, -1.4500, -1.2235, 0.9698, -1.0057,\n", + " 0.4729, 0.5949, 0.4325, -1.7718, -1.0095, -0.0588, -0.3085, -0.8892,\n", + " -0.4922, 1.1216, -0.2578, 0.7170, 0.0982, 1.0281, 0.5233, 0.5957,\n", + " -0.3980, -0.5553, 0.2196, 0.5930, 0.2460, -1.0255, 0.4054, -0.8306,\n", + " -0.4994, 0.3180, -0.0739, 1.2329, 0.0059, -0.0920, 0.0545, -0.0565,\n", + " 1.3907, -1.6856, -0.2746]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 6.7288e-01, 4.6839e-01, 1.8234e-01, 3.4237e-01, 1.8076e-02,\n", + " -3.4079e-01, -7.1543e-01, -8.1078e-01, -4.6281e-01, -5.0432e-01,\n", + " -5.1057e-01, 3.5181e-01, 2.2200e-01, 5.0724e-01, 2.1668e-01,\n", + " 3.6750e-01, 3.8496e-01, 1.1634e-01, 1.9082e-01, 1.3311e-01,\n", + " 8.2084e-02, 1.2825e-01, 1.0551e-01, 7.9527e-04, 1.2452e-01,\n", + " 3.9336e-02, 2.6154e-03, 9.4014e-02, 4.1025e-01, 4.9947e-01,\n", + " 4.9895e-01, 4.2769e-01, 4.8388e-01, 4.9355e-01, 2.5884e-01,\n", + " 1.6439e-01, -1.8181e-01, 4.3820e-03, 2.3186e-02, -6.1173e-01,\n", + " -5.6625e-01, -3.8969e-01, -3.9649e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00030772091122344136\n", + "Grad encoder.fc1.bias: 0.0003241970553062856\n", + "Grad encoder.encoder.0.weight: 7.599530363222584e-05\n", + "Grad encoder.encoder.0.bias: 0.00031806505285203457\n", + "Grad encoder.encoder.2.weight: 5.200849045650102e-05\n", + "Grad encoder.encoder.2.bias: 0.0003569266991689801\n", + "Grad encoder.encoder.4.weight: 0.00010464074875926599\n", + "Grad encoder.encoder.4.bias: 0.000637983379419893\n", + "Grad decoder.fc1.0.weight: 4.521714072325267e-05\n", + "Grad decoder.fc1.0.bias: 0.00040910401730798185\n", + "Grad decoder.fc1.2.weight: 5.796813275082968e-05\n", + "Grad decoder.fc1.2.bias: 0.0004840390174649656\n", + "Grad decoder.fc1.4.weight: 5.8069137594429776e-05\n", + "Grad decoder.fc1.4.bias: 0.0006920243613421917\n", + "Grad decoder.fc2.weight: 0.00016191182658076286\n", + "Grad decoder.fc2.bias: 0.0016386680072173476\n", + "Grad _memory_unit.weight_ih_l0: 1.0498198207642417e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.9454120774753392e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.0821995601872914e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.412665930431103e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.239133265102282e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.824177838396281e-05\n", + "Data X Sample: tensor([[1.4512, 1.5497, 1.7070, 1.9110, 1.9226, 2.0994, 2.1307, 2.3012, 3.7958,\n", + " 4.3853, 4.3683, 4.3001, 4.1056, 3.9343, 3.8005, 3.8387, 3.7926, 3.7933,\n", + " 3.7439, 3.5465, 3.4228, 3.2716, 2.8460, 2.8287, 2.7796, 2.8626, 2.9597,\n", + " 3.1364, 3.0667, 3.2129, 3.1776, 3.2358, 3.9249, 2.8560, 4.5788, 5.0007,\n", + " 5.1797, 5.3906, 6.1863, 5.8814, 1.0547, 0.5954, 0.6225, 1.1625, 1.6332,\n", + " 1.9270, 1.2102, 1.7593]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4078, -0.7576, 1.9552, 0.2874, 0.5016, 0.3822, 0.4540, 0.4206,\n", + " 0.7239, 0.7485, 0.3583, -0.3509, -0.5456, -0.5862, -0.2621, -0.6957,\n", + " 0.3278, 0.1202, -1.1398, -0.8411, -0.7530, -0.3558, -0.9534, 0.1617,\n", + " -1.0422, 0.1642, -0.9028, 0.4427, -0.6119, 0.0695, -0.8853, 0.6076,\n", + " -0.9505, -1.0944, -1.0882, -0.0362, 0.0000, -0.3175, 0.0000, -0.0310,\n", + " 0.4654, -0.3723, 0.0067]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1840, -0.2325, -0.0656, -0.1157, -0.0027, 0.1822, 0.1380, 0.2492,\n", + " 0.1570, 0.1797, 0.2180, -0.1390, -0.1054, -0.2562, -0.2332, -0.2163,\n", + " -0.1509, -0.0457, -0.0924, -0.1354, -0.0286, 0.0016, 0.0244, -0.0391,\n", + " 0.0190, -0.0307, -0.1198, -0.1006, -0.2296, -0.2011, -0.2789, -0.1407,\n", + " -0.2993, -0.2010, -0.1301, -0.2063, -0.1087, -0.0068, 0.0467, 0.2929,\n", + " 0.3005, 0.3110, 0.2306]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004354354168754071\n", + "Grad encoder.fc1.bias: 0.0006352941272780299\n", + "Grad encoder.encoder.0.weight: 9.836346725933254e-05\n", + "Grad encoder.encoder.0.bias: 0.00046240107621997595\n", + "Grad encoder.encoder.2.weight: 6.265267438720912e-05\n", + "Grad encoder.encoder.2.bias: 0.0004180520190857351\n", + "Grad encoder.encoder.4.weight: 0.00013180315727367997\n", + "Grad encoder.encoder.4.bias: 0.0006855344399809837\n", + "Grad decoder.fc1.0.weight: 6.0149686760269105e-05\n", + "Grad decoder.fc1.0.bias: 0.0005132233491167426\n", + "Grad decoder.fc1.2.weight: 7.133425970096141e-05\n", + "Grad decoder.fc1.2.bias: 0.0005717385793104768\n", + "Grad decoder.fc1.4.weight: 6.767200829926878e-05\n", + "Grad decoder.fc1.4.bias: 0.0006313803605735302\n", + "Grad decoder.fc2.weight: 0.00014784825907554477\n", + "Grad decoder.fc2.bias: 0.001466762158088386\n", + "Grad _memory_unit.weight_ih_l0: 1.625099866942037e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.196661782567389e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.8033324522548355e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.413611456286162e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.895632345229387e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.769422230310738e-05\n", + "Data X Sample: tensor([[2.0739, 1.7085, 1.8828, 1.9898, 2.1838, 2.1318, 2.3002, 3.9962, 4.4231,\n", + " 4.3079, 4.4285, 4.3663, 4.2410, 4.0379, 3.9947, 3.7963, 3.9089, 3.8088,\n", + " 3.5374, 3.5353, 3.5381, 3.4461, 3.1882, 2.9088, 2.8828, 2.8470, 2.7732,\n", + " 2.8917, 2.8447, 2.9738, 3.1006, 3.2497, 3.5443, 2.5952, 4.5175, 5.0080,\n", + " 5.1187, 5.4701, 6.2433, 6.0402, 1.2027, 0.6811, 0.6912, 1.2515, 1.7680,\n", + " 2.0071, 1.2578, 1.8532]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6105, -0.0544, -0.6038, -0.5132, 0.1258, -0.0597, 0.5839, 0.7846,\n", + " -0.6831, -0.5538, -0.4960, -0.0365, 0.6825, -0.8384, 0.0769, 0.2192,\n", + " -0.9069, 1.0146, 0.9827, 3.3165, 1.9075, 1.6917, 2.2034, -0.3548,\n", + " 0.4019, 1.5782, 0.6382, -0.6550, -0.1726, 0.8011, -0.0556, -0.1781,\n", + " -1.3026, -0.7336, 2.1503, 0.3211, -0.9268, -0.7806, -0.4768, -0.2400,\n", + " 0.1108, -0.8559, 0.5018]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1834, -0.2224, -0.0676, -0.1326, -0.0104, 0.1614, 0.1312, 0.2409,\n", + " 0.1386, 0.1705, 0.2078, -0.1438, -0.1015, -0.2618, -0.2165, -0.1849,\n", + " -0.1535, -0.0430, -0.0939, -0.1139, -0.0291, -0.0015, 0.0130, -0.0368,\n", + " 0.0374, -0.0183, -0.0993, -0.1034, -0.2125, -0.1938, -0.2582, -0.1590,\n", + " -0.2793, -0.2010, -0.1195, -0.1816, -0.0937, -0.0083, 0.0455, 0.2777,\n", + " 0.2798, 0.3010, 0.2344]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004368327499832958\n", + "Grad encoder.fc1.bias: 0.0002664321509655565\n", + "Grad encoder.encoder.0.weight: 9.799128019949421e-05\n", + "Grad encoder.encoder.0.bias: 0.00025680361432023346\n", + "Grad encoder.encoder.2.weight: 6.400088750524446e-05\n", + "Grad encoder.encoder.2.bias: 0.00031682325061410666\n", + "Grad encoder.encoder.4.weight: 0.00014046119758859277\n", + "Grad encoder.encoder.4.bias: 0.0007298764539882541\n", + "Grad decoder.fc1.0.weight: 4.937214180245064e-05\n", + "Grad decoder.fc1.0.bias: 0.0004640529805328697\n", + "Grad decoder.fc1.2.weight: 6.02737745794002e-05\n", + "Grad decoder.fc1.2.bias: 0.0005509894108399749\n", + "Grad decoder.fc1.4.weight: 6.247924466151744e-05\n", + "Grad decoder.fc1.4.bias: 0.0006453775567933917\n", + "Grad decoder.fc2.weight: 0.0001446790702175349\n", + "Grad decoder.fc2.bias: 0.0016958472551777959\n", + "Grad _memory_unit.weight_ih_l0: 1.0749433386081364e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.9738013583701104e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.0757393940584734e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.864474249188788e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010705705790314823\n", + "Grad _memory_unit.bias_hh_l1: 5.663430056301877e-05\n", + "Data X Sample: tensor([[2.5874, 2.8708, 3.1901, 3.2667, 3.4405, 3.4902, 3.6298, 3.7961, 3.7982,\n", + " 3.9161, 3.8163, 4.0566, 3.8881, 3.8252, 3.7904, 3.6432, 3.5929, 3.6443,\n", + " 3.5580, 3.4089, 3.3443, 3.2256, 3.0050, 2.8497, 2.7890, 2.7373, 2.6959,\n", + " 2.8020, 2.7406, 2.7020, 2.7926, 2.7274, 2.8667, 2.0688, 3.4757, 3.7821,\n", + " 4.0509, 4.3729, 4.7665, 4.6245, 1.9090, 1.1451, 1.0934, 1.9892, 2.8146,\n", + " 3.1450, 2.0941, 3.0338]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4679, -0.2338, 0.1646, -0.1491, -0.5546, -0.1628, 0.6238, 0.4670,\n", + " -1.2251, 0.6614, 0.8880, 0.5181, -0.2589, 0.0256, -0.5410, -0.7932,\n", + " -0.7519, 0.4181, 0.2237, 0.4210, 0.3158, -0.7889, 0.9101, -0.1198,\n", + " 0.8831, 0.5068, 0.0838, 1.0287, 0.2591, 0.2212, -0.7612, 0.5808,\n", + " -1.1360, -0.9930, -0.2715, -0.4730, 0.5692, -0.0751, 2.2782, 0.8067,\n", + " 1.1138, 0.3751, 1.7965]], device='cuda:0')\n", + "Prediction Sample: tensor([[-1.5962e-01, -1.8919e-01, -8.8282e-02, -1.7340e-01, -1.0534e-01,\n", + " 2.2854e-02, 5.3227e-02, 1.7206e-01, 1.0071e-01, 1.1765e-01,\n", + " 1.1064e-01, -6.6951e-02, -6.4533e-02, -1.2755e-01, -8.2999e-02,\n", + " -9.0538e-02, -9.9362e-02, -7.0252e-02, -4.2876e-02, -4.5923e-02,\n", + " -7.5787e-02, 1.8922e-02, -6.0708e-02, -4.5859e-02, 3.2690e-02,\n", + " 5.8271e-02, -1.5991e-04, -4.5058e-02, -5.5022e-02, -1.3370e-01,\n", + " -7.6413e-02, -2.1030e-01, -1.0907e-01, -1.0605e-01, 3.5367e-02,\n", + " -8.7521e-02, -4.3630e-02, -6.4899e-02, -1.7727e-02, 1.8531e-01,\n", + " 2.0712e-01, 2.4481e-01, 1.7418e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003544401843100786\n", + "Grad encoder.fc1.bias: 0.00043677276698872447\n", + "Grad encoder.encoder.0.weight: 8.334384619956836e-05\n", + "Grad encoder.encoder.0.bias: 0.0003843284212052822\n", + "Grad encoder.encoder.2.weight: 4.522000745055266e-05\n", + "Grad encoder.encoder.2.bias: 0.0003147820825688541\n", + "Grad encoder.encoder.4.weight: 8.717512537259609e-05\n", + "Grad encoder.encoder.4.bias: 0.0005884783458895981\n", + "Grad decoder.fc1.0.weight: 4.600908869178966e-05\n", + "Grad decoder.fc1.0.bias: 0.00044172373600304127\n", + "Grad decoder.fc1.2.weight: 6.562134512932971e-05\n", + "Grad decoder.fc1.2.bias: 0.0005788644193671644\n", + "Grad decoder.fc1.4.weight: 6.605054659303278e-05\n", + "Grad decoder.fc1.4.bias: 0.0006601283675990999\n", + "Grad decoder.fc2.weight: 0.00013695091183762997\n", + "Grad decoder.fc2.bias: 0.001703346031717956\n", + "Grad _memory_unit.weight_ih_l0: 1.180662729893811e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.611239950871095e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.470955562079325e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.001805220672395e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.000131197230075486\n", + "Grad _memory_unit.bias_hh_l1: 6.980068428674713e-05\n", + "Data X Sample: tensor([[-0.0021, 0.0015, 0.0030, 0.0087, -0.0102, 0.0074, -0.0077, 0.0014,\n", + " 0.0049, 0.0063, -0.0127, 0.0039, -0.0067, -0.0300, 0.0000, -0.0109,\n", + " 0.0189, 0.0213, 0.0145, 0.0167, 0.0147, 0.0260, 0.0120, 0.0134,\n", + " 0.0131, 0.0078, 0.0480, 0.0286, -0.0069, 0.0164, -0.0070, 0.0166,\n", + " -0.0022, -0.0252, -0.0025, 0.0073, 0.0000, 0.0000, -0.0634, -0.0170,\n", + " 0.0334, 0.0000, 0.0040, 0.0057, 0.0159, 0.0000, 0.0000, -0.0469]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 2.1424, 0.2475, 2.4353, 0.6455, 0.8320, -0.6513, -1.4234, -1.3675,\n", + " -0.5139, -0.8814, -0.8362, 0.1323, 1.0887, 1.5048, 1.7583, 1.7221,\n", + " 0.5972, -0.4375, 0.1900, 0.8883, -0.1908, -1.1005, 0.1173, -0.2311,\n", + " -1.4692, -0.5646, -0.0282, -0.3005, 1.4105, 1.0264, 1.7407, -0.0064,\n", + " 0.4734, 0.9586, 0.6538, -0.0266, 0.8291, 0.1370, -1.1357, -1.0116,\n", + " -0.9473, -0.3526, -0.5312]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.8320, 0.5866, 0.2179, 0.4482, 0.0026, -0.3925, -0.9309, -0.9887,\n", + " -0.6208, -0.6641, -0.6781, 0.4296, 0.3586, 0.6491, 0.2682, 0.5403,\n", + " 0.4288, 0.1493, 0.2141, 0.2014, 0.0271, 0.1924, 0.1901, 0.0830,\n", + " 0.1350, 0.0054, 0.0303, 0.1561, 0.5734, 0.6460, 0.6145, 0.5299,\n", + " 0.6445, 0.5949, 0.3027, 0.2713, -0.2364, 0.0098, -0.0347, -0.7209,\n", + " -0.6669, -0.5340, -0.5340]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004248566401656717\n", + "Grad encoder.fc1.bias: 0.000843481975607574\n", + "Grad encoder.encoder.0.weight: 0.00012552121188491583\n", + "Grad encoder.encoder.0.bias: 0.0007814414566382766\n", + "Grad encoder.encoder.2.weight: 9.612437861505896e-05\n", + "Grad encoder.encoder.2.bias: 0.0008415448246523738\n", + "Grad encoder.encoder.4.weight: 0.00022884485952090472\n", + "Grad encoder.encoder.4.bias: 0.001468653790652752\n", + "Grad decoder.fc1.0.weight: 9.632699220674112e-05\n", + "Grad decoder.fc1.0.bias: 0.000979489297606051\n", + "Grad decoder.fc1.2.weight: 0.00011819271458080038\n", + "Grad decoder.fc1.2.bias: 0.0009085547644644976\n", + "Grad decoder.fc1.4.weight: 9.989023965317756e-05\n", + "Grad decoder.fc1.4.bias: 0.0009228824637830257\n", + "Grad decoder.fc2.weight: 0.0001849925611168146\n", + "Grad decoder.fc2.bias: 0.0021456435788422823\n", + "Grad _memory_unit.weight_ih_l0: 2.6146264644921757e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0001696231192909181\n", + "Grad _memory_unit.bias_hh_l0: 9.041295561473817e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.540370431030169e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0003386145399417728\n", + "Grad _memory_unit.bias_hh_l1: 0.00018281815573573112\n", + "Data X Sample: tensor([[1.4502, 1.6517, 1.9459, 1.9548, 2.1121, 2.0110, 1.9150, 3.4397, 4.1107,\n", + " 4.3347, 4.4983, 4.3488, 4.2721, 4.0324, 4.0350, 3.8114, 3.7910, 3.8068,\n", + " 3.5353, 3.4181, 3.5749, 3.3649, 2.9737, 2.8191, 2.7777, 2.7843, 2.8877,\n", + " 2.9733, 2.9349, 3.0852, 3.1461, 3.1861, 3.6521, 2.7508, 4.5591, 4.9545,\n", + " 5.0538, 5.5099, 6.2497, 6.0261, 1.1168, 0.6751, 0.7195, 1.1740, 1.6491,\n", + " 1.9899, 1.3734, 1.7202]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5557, 0.3574, 0.7021, 1.4321, 0.4847, 0.6818, -0.1805, -1.2302,\n", + " -0.5194, -0.1759, -0.4333, 0.7011, 0.7982, 0.6392, 0.8491, 1.1960,\n", + " -0.6083, -0.9284, 1.0575, 1.3601, 0.0821, 0.4487, 2.1211, -1.0050,\n", + " 1.3893, 0.6989, -0.6945, -0.5188, -0.0827, 0.2501, -0.3139, 0.1822,\n", + " -0.1609, 0.7745, -0.6468, -0.3712, 0.1438, -0.7172, 0.3953, -0.8700,\n", + " -0.6119, 0.0383, 0.5600]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1790, -0.2181, -0.0422, -0.1113, 0.0202, 0.1906, 0.1209, 0.2368,\n", + " 0.1425, 0.2094, 0.2176, -0.1724, -0.1103, -0.2854, -0.2241, -0.1903,\n", + " -0.1794, -0.0244, -0.1102, -0.0962, 0.0061, -0.0069, 0.0188, -0.0468,\n", + " 0.0269, -0.0349, -0.0893, -0.0969, -0.2321, -0.2244, -0.2862, -0.1452,\n", + " -0.3208, -0.2109, -0.1344, -0.1718, -0.1142, 0.0274, 0.0653, 0.2699,\n", + " 0.2749, 0.2889, 0.2410]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0009127123048529029\n", + "Grad encoder.fc1.bias: 0.0004679239063989371\n", + "Grad encoder.encoder.0.weight: 0.0002171105588786304\n", + "Grad encoder.encoder.0.bias: 0.0005068553145974874\n", + "Grad encoder.encoder.2.weight: 0.0001302347518503666\n", + "Grad encoder.encoder.2.bias: 0.0007117640343494713\n", + "Grad encoder.encoder.4.weight: 0.0002900545368902385\n", + "Grad encoder.encoder.4.bias: 0.001667739707045257\n", + "Grad decoder.fc1.0.weight: 8.639501174911857e-05\n", + "Grad decoder.fc1.0.bias: 0.0009004012681543827\n", + "Grad decoder.fc1.2.weight: 9.25814820220694e-05\n", + "Grad decoder.fc1.2.bias: 0.0009437368134967983\n", + "Grad decoder.fc1.4.weight: 9.330036118626595e-05\n", + "Grad decoder.fc1.4.bias: 0.00115136057138443\n", + "Grad decoder.fc2.weight: 0.00016472558490931988\n", + "Grad decoder.fc2.bias: 0.0021404430735856295\n", + "Grad _memory_unit.weight_ih_l0: 2.313119148311671e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.285805572289973e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.973733302904293e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.1252273907302879e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002279005420859903\n", + "Grad _memory_unit.bias_hh_l1: 0.00012047489144606516\n", + "Data X Sample: tensor([[1.6040, 1.7755, 1.9654, 2.0182, 2.1855, 2.1878, 2.3202, 2.3367, 2.3507,\n", + " 2.3791, 2.4744, 2.4149, 2.3724, 2.2848, 2.2445, 2.2811, 2.2548, 2.2845,\n", + " 2.3665, 2.4195, 2.4757, 2.4663, 2.5279, 2.5042, 2.5619, 2.6119, 2.6320,\n", + " 2.4961, 2.3799, 2.5317, 2.5022, 2.4345, 2.2044, 1.4280, 1.9193, 1.7780,\n", + " 1.6577, 1.4868, 1.6797, 1.5689, 1.2457, 0.8205, 0.7255, 1.3319, 1.8751,\n", + " 1.9728, 1.4142, 2.0252]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4676, 0.7677, 0.1031, 0.3292, 0.0036, 0.0330, -0.6573, -0.5469,\n", + " -0.2682, -0.6219, -0.7808, -0.6444, 0.8182, 0.2775, -0.4816, -0.1929,\n", + " 0.0710, 0.0590, 0.1355, 0.9290, -0.6044, -0.9330, 0.2784, 0.1992,\n", + " 0.7066, 0.3562, -0.3249, 0.2803, 0.1126, 0.1538, 0.7952, -0.1482,\n", + " 1.7273, -0.0226, 2.2705, 0.4374, 0.0540, 0.1545, -0.0068, -0.4493,\n", + " -0.6892, -0.4113, -0.9778]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4646, 0.3806, 0.2065, 0.3358, 0.0769, -0.1930, -0.4786, -0.5021,\n", + " -0.2708, -0.3511, -0.3108, 0.3001, 0.2043, 0.3375, 0.1892, 0.3526,\n", + " 0.2640, 0.0876, 0.1455, 0.1593, 0.0407, 0.0563, 0.1415, 0.0579,\n", + " 0.1071, 0.1026, 0.0089, 0.0706, 0.2139, 0.2621, 0.3521, 0.2616,\n", + " 0.3561, 0.3712, 0.2234, 0.2133, -0.1262, -0.0654, -0.0100, -0.3452,\n", + " -0.2810, -0.2903, -0.2979]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00043193757301196456\n", + "Grad encoder.fc1.bias: 0.0007167825242504478\n", + "Grad encoder.encoder.0.weight: 0.00012802600394934416\n", + "Grad encoder.encoder.0.bias: 0.0004986223066225648\n", + "Grad encoder.encoder.2.weight: 9.46071813814342e-05\n", + "Grad encoder.encoder.2.bias: 0.000560033367946744\n", + "Grad encoder.encoder.4.weight: 0.00024270638823509216\n", + "Grad encoder.encoder.4.bias: 0.0010642424458637834\n", + "Grad decoder.fc1.0.weight: 8.433256152784452e-05\n", + "Grad decoder.fc1.0.bias: 0.0007258155383169651\n", + "Grad decoder.fc1.2.weight: 9.799170948099345e-05\n", + "Grad decoder.fc1.2.bias: 0.0008609081269241869\n", + "Grad decoder.fc1.4.weight: 9.100180614041165e-05\n", + "Grad decoder.fc1.4.bias: 0.0009498742874711752\n", + "Grad decoder.fc2.weight: 0.00016257105744443834\n", + "Grad decoder.fc2.bias: 0.00198597414419055\n", + "Grad _memory_unit.weight_ih_l0: 2.633447729749605e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.151260847924277e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.871587457775604e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.2405796951497905e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001561665121698752\n", + "Grad _memory_unit.bias_hh_l1: 8.230862295022234e-05\n", + "Data X Sample: tensor([[-0.0021, 0.0029, 0.0075, 0.0197, -0.0034, 0.0015, 0.0123, 0.0043,\n", + " 0.0122, 0.0174, 0.0095, 0.0175, 0.0133, -0.0109, 0.0000, -0.0014,\n", + " -0.0063, -0.0019, 0.0000, -0.0019, 0.0098, -0.0061, 0.0048, -0.0095,\n", + " 0.0019, -0.0078, 0.0160, 0.0408, -0.0243, 0.0360, 0.0420, 0.0055,\n", + " 0.0044, 0.0046, 0.0172, 0.0195, 0.0079, 0.0265, -0.0317, -0.0113,\n", + " -0.0143, 0.0179, -0.0081, 0.0086, 0.0079, 0.0286, 0.0000, 0.0235]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.0182, 0.6265, 0.2968, -0.2021, -1.7067, -1.8048, -1.7675, -1.9899,\n", + " -1.3981, -0.9235, -1.1741, 1.1666, 0.1821, 1.0332, 0.1230, 1.2346,\n", + " -1.2329, 0.0367, -0.0512, 0.0133, 0.2908, 0.3188, 0.4751, 0.1144,\n", + " -0.2191, 0.3177, 0.5861, 0.7946, 1.0027, 0.6505, 1.4520, 0.0359,\n", + " 0.4656, 0.3858, 1.3317, -0.7436, 0.4768, 0.0705, -0.5970, -1.1708,\n", + " -1.0132, -0.8126, 0.3078]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.7880, 0.5608, 0.2052, 0.4309, -0.0314, -0.3813, -0.8967, -0.9436,\n", + " -0.5997, -0.6324, -0.6587, 0.4008, 0.3700, 0.6179, 0.2844, 0.5782,\n", + " 0.3617, 0.1628, 0.1894, 0.2069, -0.0250, 0.1830, 0.2372, 0.1108,\n", + " 0.0993, -0.0369, 0.0206, 0.1788, 0.6164, 0.6365, 0.5648, 0.4899,\n", + " 0.6255, 0.5613, 0.2622, 0.3100, -0.2150, 0.0038, -0.0637, -0.6642,\n", + " -0.6137, -0.5463, -0.5306]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004215018998365849\n", + "Grad encoder.fc1.bias: 0.0006370748160406947\n", + "Grad encoder.encoder.0.weight: 9.889598732115701e-05\n", + "Grad encoder.encoder.0.bias: 0.0005086350138299167\n", + "Grad encoder.encoder.2.weight: 6.632106669712812e-05\n", + "Grad encoder.encoder.2.bias: 0.0004998972872272134\n", + "Grad encoder.encoder.4.weight: 0.0001620128023205325\n", + "Grad encoder.encoder.4.bias: 0.0009537470759823918\n", + "Grad decoder.fc1.0.weight: 7.246325549203902e-05\n", + "Grad decoder.fc1.0.bias: 0.0006668033311143517\n", + "Grad decoder.fc1.2.weight: 8.606589835835621e-05\n", + "Grad decoder.fc1.2.bias: 0.0006374482763931155\n", + "Grad decoder.fc1.4.weight: 6.844146992079914e-05\n", + "Grad decoder.fc1.4.bias: 0.0005975963431410491\n", + "Grad decoder.fc2.weight: 0.0001571996253915131\n", + "Grad decoder.fc2.bias: 0.001503262552432716\n", + "Grad _memory_unit.weight_ih_l0: 1.9410250388318673e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.701863069087267e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.203822754789144e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.1042578080378007e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00016908740508370101\n", + "Grad _memory_unit.bias_hh_l1: 9.084838529815897e-05\n", + "Data X Sample: tensor([[1.4990, 1.7697, 1.8557, 2.0488, 2.2077, 2.2909, 2.3095, 2.4616, 2.6265,\n", + " 2.5765, 2.5410, 2.6038, 2.4878, 2.5138, 2.4664, 2.5532, 2.4529, 2.4895,\n", + " 2.4677, 2.4176, 2.4242, 2.4877, 2.3953, 2.4488, 2.4136, 2.5179, 2.4242,\n", + " 2.3982, 2.1301, 2.3450, 2.3062, 2.3101, 2.2704, 1.4898, 1.9119, 1.8120,\n", + " 1.6027, 1.4894, 1.5846, 1.6172, 1.2361, 0.7587, 0.6669, 1.2199, 1.7918,\n", + " 2.1443, 1.3394, 1.9313]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.3376, 0.5058, -0.5184, 0.0684, -0.0396, -0.0548, 0.7261, -0.7933,\n", + " 0.4020, 0.2843, 0.4100, 0.5673, -0.5833, 0.0828, -0.3792, -0.6886,\n", + " 0.3084, 0.4072, 0.3733, 0.9598, 0.0089, -0.5867, 0.2526, 0.9386,\n", + " -0.6680, -0.4211, -0.7635, 0.6343, -0.4094, -0.7242, 1.0645, 0.8705,\n", + " 0.1530, -0.9953, -0.2576, 0.0230, -0.8131, -0.7928, -0.4768, 0.8225,\n", + " 0.6012, -1.5479, -0.2546]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3091, 0.2547, 0.1429, 0.2005, 0.0184, -0.1290, -0.3090, -0.3263,\n", + " -0.1795, -0.2296, -0.2088, 0.1839, 0.1229, 0.2210, 0.1243, 0.2578,\n", + " 0.1560, 0.0594, 0.0826, 0.0881, 0.0057, 0.0339, 0.0994, 0.0400,\n", + " 0.0573, 0.0560, -0.0151, 0.0225, 0.1633, 0.1751, 0.2068, 0.1437,\n", + " 0.2243, 0.2172, 0.1550, 0.1384, -0.0776, -0.0507, -0.0050, -0.2160,\n", + " -0.1756, -0.1735, -0.1809]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005693899001926184\n", + "Grad encoder.fc1.bias: 0.000795049942098558\n", + "Grad encoder.encoder.0.weight: 0.00015351668116636574\n", + "Grad encoder.encoder.0.bias: 0.0008298660395666957\n", + "Grad encoder.encoder.2.weight: 0.00010900853521889076\n", + "Grad encoder.encoder.2.bias: 0.000886483583599329\n", + "Grad encoder.encoder.4.weight: 0.00028021325124427676\n", + "Grad encoder.encoder.4.bias: 0.00228584255091846\n", + "Grad decoder.fc1.0.weight: 0.00010826845391420648\n", + "Grad decoder.fc1.0.bias: 0.0010906148236244917\n", + "Grad decoder.fc1.2.weight: 0.00013100338401272893\n", + "Grad decoder.fc1.2.bias: 0.0011680652387440205\n", + "Grad decoder.fc1.4.weight: 0.0001179503378807567\n", + "Grad decoder.fc1.4.bias: 0.0011755547020584345\n", + "Grad decoder.fc2.weight: 0.00021979468874633312\n", + "Grad decoder.fc2.bias: 0.0029629587661474943\n", + "Grad _memory_unit.weight_ih_l0: 2.9740809623035602e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.365448204334825e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.1877104851882905e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.4027840734343044e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002201222232542932\n", + "Grad _memory_unit.bias_hh_l1: 0.00011678255395963788\n", + "Data X Sample: tensor([[1.4512, 1.8658, 2.0541, 2.1319, 2.1992, 2.2629, 2.3264, 2.3495, 2.3434,\n", + " 2.4296, 2.4966, 2.4402, 2.3391, 2.4156, 2.3630, 2.3467, 2.3082, 2.4044,\n", + " 2.4099, 2.4195, 2.3923, 2.4617, 2.4749, 2.4832, 2.3892, 2.4917, 2.3763,\n", + " 2.3941, 2.0052, 1.9160, 1.8197, 1.7658, 1.4762, 1.0001, 1.3653, 1.3377,\n", + " 1.3765, 1.3675, 1.3628, 1.3448, 1.2886, 0.7747, 0.7720, 1.2859, 1.9742,\n", + " 2.1615, 1.5094, 2.0564]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2734, 0.6948, 0.3522, -1.4601, -1.6922, -1.5809, 1.0994, 0.6788,\n", + " 0.1113, 1.0889, 1.1349, -0.3322, -0.8702, -0.2092, 0.4327, -0.9720,\n", + " -1.1614, -0.3071, -0.7461, 0.0538, 0.6029, 1.0413, 0.9653, -0.1245,\n", + " 0.7816, 0.5240, -0.9848, 0.2211, -0.4936, 0.2290, 0.0532, -1.3258,\n", + " -0.6234, -0.2006, 0.1769, -0.2167, -0.5085, 0.1511, 0.9946, 1.1601,\n", + " 0.8134, 0.7754, 1.4364]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.0717, 0.0446, 0.0300, -0.0314, -0.0551, -0.0414, -0.0844, -0.0632,\n", + " -0.0356, -0.0661, -0.0796, 0.0139, 0.0597, 0.0637, 0.0278, 0.0844,\n", + " 0.0330, 0.0223, 0.0146, -0.0009, -0.0712, 0.0451, 0.0262, -0.0009,\n", + " 0.0182, 0.0148, -0.0146, -0.0203, 0.0680, 0.0555, 0.0367, -0.0365,\n", + " 0.0172, 0.0106, 0.0692, 0.0211, -0.0237, -0.0483, -0.0039, -0.0167,\n", + " 0.0149, 0.0182, -0.0064]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007483436493203044\n", + "Grad encoder.fc1.bias: 0.0005386340781114995\n", + "Grad encoder.encoder.0.weight: 0.0001609285391168669\n", + "Grad encoder.encoder.0.bias: 0.0004865535884164274\n", + "Grad encoder.encoder.2.weight: 8.294664439745247e-05\n", + "Grad encoder.encoder.2.bias: 0.0005628672079183161\n", + "Grad encoder.encoder.4.weight: 0.00019186013378202915\n", + "Grad encoder.encoder.4.bias: 0.0009546088404022157\n", + "Grad decoder.fc1.0.weight: 6.430607754737139e-05\n", + "Grad decoder.fc1.0.bias: 0.0006021361332386732\n", + "Grad decoder.fc1.2.weight: 6.668732385151088e-05\n", + "Grad decoder.fc1.2.bias: 0.0005398305947892368\n", + "Grad decoder.fc1.4.weight: 5.3804717026650906e-05\n", + "Grad decoder.fc1.4.bias: 0.0005325516103766859\n", + "Grad decoder.fc2.weight: 0.00014723280037287623\n", + "Grad decoder.fc2.bias: 0.00165242375805974\n", + "Grad _memory_unit.weight_ih_l0: 1.5616253222106025e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.330651376629248e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.403615119168535e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.315528248203918e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00015155496657826006\n", + "Grad _memory_unit.bias_hh_l1: 8.063102723099291e-05\n", + "Data X Sample: tensor([[1.4099, 1.5832, 1.7100, 1.8892, 1.7996, 2.1053, 2.1569, 2.1720, 4.0106,\n", + " 4.3205, 4.2921, 4.4792, 3.9392, 3.9670, 3.9896, 3.6637, 3.6558, 3.5554,\n", + " 3.5250, 3.5390, 3.5234, 3.4507, 2.8966, 2.8936, 2.8209, 2.8679, 2.9517,\n", + " 2.9447, 2.9627, 3.1310, 3.3000, 3.3298, 3.7973, 2.7348, 4.5861, 4.8499,\n", + " 5.0892, 5.4728, 5.9328, 5.9438, 1.0929, 0.6074, 0.6023, 1.1252, 1.7165,\n", + " 1.9270, 1.1626, 1.5873]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2100, 0.4104, 0.8781, 0.2520, 1.3591, -1.4886, 0.4099, 0.7798,\n", + " 0.6775, 0.7211, 0.8061, -3.6802, 0.1422, -0.5170, -0.4260, -0.4251,\n", + " -0.3692, 0.6757, -0.3996, -0.8727, 0.4399, -0.2183, 12.7800, 1.4877,\n", + " 1.4605, 1.9213, -0.2122, -0.6568, -1.5618, -0.9462, -0.4776, -0.7272,\n", + " -0.7450, -0.9343, -0.9296, -0.5872, -0.8471, 0.8024, 0.6434, 0.7612,\n", + " 0.6558, 0.5654, 0.2792]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2171, -0.2266, -0.0639, -0.1649, 0.0140, 0.1666, 0.1423, 0.2756,\n", + " 0.1506, 0.2438, 0.1659, -0.2026, -0.0809, -0.3134, -0.2064, -0.1516,\n", + " -0.2343, -0.0146, -0.0880, -0.0745, -0.0091, -0.0009, -0.0203, -0.0725,\n", + " 0.0496, 0.0069, -0.0432, -0.0985, -0.1780, -0.2403, -0.2432, -0.1978,\n", + " -0.2708, -0.2324, -0.0914, -0.0870, -0.0329, 0.0096, 0.0239, 0.2828,\n", + " 0.2841, 0.2838, 0.2962]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0013989679282531142\n", + "Grad encoder.fc1.bias: 0.0008234913111664355\n", + "Grad encoder.encoder.0.weight: 0.00030178489396348596\n", + "Grad encoder.encoder.0.bias: 0.0006436303956434131\n", + "Grad encoder.encoder.2.weight: 0.00013561999367084354\n", + "Grad encoder.encoder.2.bias: 0.0006655758479610085\n", + "Grad encoder.encoder.4.weight: 0.0003593007568269968\n", + "Grad encoder.encoder.4.bias: 0.001679014298133552\n", + "Grad decoder.fc1.0.weight: 0.00010370231757406145\n", + "Grad decoder.fc1.0.bias: 0.0009503270266577601\n", + "Grad decoder.fc1.2.weight: 9.689340367913246e-05\n", + "Grad decoder.fc1.2.bias: 0.0007896646275185049\n", + "Grad decoder.fc1.4.weight: 8.208671351894736e-05\n", + "Grad decoder.fc1.4.bias: 0.0007995618507266045\n", + "Grad decoder.fc2.weight: 0.00018199360056314617\n", + "Grad decoder.fc2.bias: 0.0017200729344040155\n", + "Grad _memory_unit.weight_ih_l0: 3.540737816365436e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.167125972453505e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.8781788791529834e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.2515908565546852e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00023341644555330276\n", + "Grad _memory_unit.bias_hh_l1: 0.00012007604527752846\n", + "Data X Sample: tensor([[2.1556, 2.5256, 2.7964, 2.9671, 3.1946, 3.3664, 3.3756, 3.2864, 3.2246,\n", + " 3.2953, 3.3309, 3.4588, 3.4421, 3.3154, 3.2785, 3.3601, 3.3617, 3.3310,\n", + " 3.1739, 3.0574, 2.9149, 2.7572, 2.7568, 2.6111, 2.4455, 2.2697, 2.1658,\n", + " 2.1902, 2.2133, 2.1190, 2.1102, 2.0255, 1.8084, 1.2770, 2.2967, 2.6803,\n", + " 3.0048, 3.1883, 3.5242, 3.5351, 1.8852, 0.9459, 1.0307, 1.7825, 2.5529,\n", + " 2.7905, 1.9445, 2.8071]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.5114e-01, -5.7500e-01, 2.1292e-01, -4.6893e-01, 2.3953e-01,\n", + " 4.1608e-01, 3.6866e-01, 3.6088e-01, 2.8536e-01, 1.4701e-03,\n", + " -3.7303e-02, -5.9347e-02, 9.2551e-02, -3.2457e-01, 5.1308e-02,\n", + " -2.7009e-02, -3.3302e-01, -1.9997e-01, 4.6754e-01, -1.3303e-01,\n", + " 1.2393e-01, 4.3280e-02, -6.3977e-01, 2.9806e-02, 1.7056e+00,\n", + " -2.3221e-01, -1.7260e-01, -1.3419e+00, -6.3876e-01, -6.9446e-01,\n", + " -3.5929e-01, -4.0367e-01, 9.7923e-01, 3.8876e-01, 1.3563e-01,\n", + " -9.9465e-02, -1.8196e-01, -1.7655e-01, 0.0000e+00, 1.7346e-01,\n", + " -3.4245e-02, 1.4994e-01, 1.2548e+00]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3138, -0.3361, -0.1486, -0.3832, -0.1414, 0.0435, 0.1388, 0.3343,\n", + " 0.1545, 0.1995, 0.1735, -0.1641, -0.0730, -0.2772, -0.1422, -0.1567,\n", + " -0.2884, -0.1226, -0.0489, -0.0264, -0.0997, 0.0237, -0.1084, -0.0950,\n", + " 0.0865, 0.1110, 0.0599, -0.0868, -0.0607, -0.2493, -0.1231, -0.3223,\n", + " -0.1360, -0.2346, -0.0068, -0.0628, 0.0029, -0.0728, -0.0405, 0.3380,\n", + " 0.3196, 0.3563, 0.3486]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0010846562217921019\n", + "Grad encoder.fc1.bias: 0.0008418260840699077\n", + "Grad encoder.encoder.0.weight: 0.00021794901113025844\n", + "Grad encoder.encoder.0.bias: 0.0007925519021227956\n", + "Grad encoder.encoder.2.weight: 0.00011404441465856507\n", + "Grad encoder.encoder.2.bias: 0.0008533061482012272\n", + "Grad encoder.encoder.4.weight: 0.0002566725015640259\n", + "Grad encoder.encoder.4.bias: 0.0020747873932123184\n", + "Grad decoder.fc1.0.weight: 9.795047662919387e-05\n", + "Grad decoder.fc1.0.bias: 0.001018082955852151\n", + "Grad decoder.fc1.2.weight: 0.00010780175216495991\n", + "Grad decoder.fc1.2.bias: 0.000943628721870482\n", + "Grad decoder.fc1.4.weight: 8.864436676958576e-05\n", + "Grad decoder.fc1.4.bias: 0.0008488385938107967\n", + "Grad decoder.fc2.weight: 0.0001723676105029881\n", + "Grad decoder.fc2.bias: 0.0014514283975586295\n", + "Grad _memory_unit.weight_ih_l0: 2.8208492949488573e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00014190524234436452\n", + "Grad _memory_unit.bias_hh_l0: 7.47248122934252e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.1173637176398188e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00027979208971373737\n", + "Grad _memory_unit.bias_hh_l1: 0.00014809321146458387\n", + "Data X Sample: tensor([[1.2497, 1.4099, 1.5988, 1.6815, 1.7484, 1.9639, 2.0275, 2.0116, 1.9650,\n", + " 2.0268, 2.0683, 2.1052, 1.9219, 2.0121, 1.9873, 1.9050, 1.8648, 1.9808,\n", + " 1.9969, 2.0885, 2.0463, 2.0453, 2.0242, 2.0308, 2.0514, 2.1496, 2.0592,\n", + " 2.1127, 1.7832, 1.9258, 1.9702, 1.9260, 1.8524, 1.3044, 1.8972, 1.7415,\n", + " 1.4375, 1.1608, 1.0649, 0.9987, 1.0309, 0.6213, 0.6306, 1.1654, 1.5817,\n", + " 1.7155, 1.1082, 1.6968]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.8978, 1.2879, 1.8162, -1.4594, -0.1854, 0.1384, -0.2956, -0.6189,\n", + " 1.1809, 1.8157, 1.3661, -0.6465, 0.8372, -0.7884, -0.5286, -0.5426,\n", + " -0.8389, 1.1744, 0.7651, 1.0685, 1.6311, 1.1657, 1.1453, 1.1706,\n", + " 0.9664, 0.5716, -0.2306, 0.1715, 1.3402, -0.1184, -0.4857, 0.5508,\n", + " 0.9459, -0.5134, 1.3524, -0.5395, 0.3306, -0.6423, 0.7285, -0.0721,\n", + " 0.3927, 0.0972, -0.7808]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2536, 0.2275, 0.1544, 0.1602, -0.0182, -0.0872, -0.3070, -0.3234,\n", + " -0.1478, -0.2099, -0.1735, 0.1662, 0.1149, 0.1501, 0.0986, 0.2441,\n", + " 0.1515, 0.0970, 0.0682, 0.0738, 0.0058, 0.0320, 0.1285, 0.0942,\n", + " 0.0263, 0.0255, -0.0378, 0.0362, 0.1895, 0.1628, 0.1668, 0.1240,\n", + " 0.1765, 0.1569, 0.1492, 0.1077, -0.0342, -0.0237, -0.0241, -0.2041,\n", + " -0.1522, -0.1862, -0.1654]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004741115844808519\n", + "Grad encoder.fc1.bias: 0.0004818255838472396\n", + "Grad encoder.encoder.0.weight: 0.00011809986608568579\n", + "Grad encoder.encoder.0.bias: 0.0004551959573291242\n", + "Grad encoder.encoder.2.weight: 7.783441105857491e-05\n", + "Grad encoder.encoder.2.bias: 0.00046044884948059916\n", + "Grad encoder.encoder.4.weight: 0.00018504340550862253\n", + "Grad encoder.encoder.4.bias: 0.0011071525514125824\n", + "Grad decoder.fc1.0.weight: 7.814969285391271e-05\n", + "Grad decoder.fc1.0.bias: 0.0007394477725028992\n", + "Grad decoder.fc1.2.weight: 8.749090920900926e-05\n", + "Grad decoder.fc1.2.bias: 0.0007705598836764693\n", + "Grad decoder.fc1.4.weight: 6.726801802869886e-05\n", + "Grad decoder.fc1.4.bias: 0.0007760136504657567\n", + "Grad decoder.fc2.weight: 0.00016431420226581395\n", + "Grad decoder.fc2.bias: 0.0022362053859978914\n", + "Grad _memory_unit.weight_ih_l0: 2.957752803922631e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00014297099551185966\n", + "Grad _memory_unit.bias_hh_l0: 7.422021735692397e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.015445013763383e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002712530258577317\n", + "Grad _memory_unit.bias_hh_l1: 0.00014459018711932003\n", + "Data X Sample: tensor([[1.4862, 1.7216, 1.8768, 1.9220, 2.1804, 2.3101, 2.4034, 2.6206, 2.5801,\n", + " 2.5244, 2.6901, 2.7557, 2.6121, 2.4893, 2.5042, 2.4657, 2.5079, 2.5147,\n", + " 2.5131, 2.4920, 2.4364, 2.5092, 2.3977, 2.3820, 2.3592, 2.3820, 2.2963,\n", + " 2.2799, 2.1301, 2.1878, 2.2082, 2.2079, 2.2044, 1.4212, 1.9291, 1.7731,\n", + " 1.6125, 1.4921, 1.6353, 1.6427, 1.2027, 0.6930, 0.7498, 1.1166, 1.7601,\n", + " 1.8870, 1.3870, 2.0017]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.8418, -0.5833, 0.4988, -0.4631, -0.5564, 0.0843, 0.0369, -0.4170,\n", + " 0.3691, 0.1058, 0.3989, -0.0452, -0.9604, 0.3271, 0.5988, -0.1719,\n", + " -0.3057, 0.4697, -0.5094, -0.2747, 0.1255, 0.8264, 0.0842, 6.0206,\n", + " -0.5436, 0.8641, -1.3351, 0.6858, -0.4403, -0.2552, 0.9513, 0.6008,\n", + " -0.0801, -0.0673, -0.1708, 0.9979, 0.6097, 0.0940, -0.9129, -0.6240,\n", + " 0.5646, -0.0699, 0.3210]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 2.3632e-01, 2.2112e-01, 1.4511e-01, 1.4884e-01, -1.9397e-02,\n", + " -7.8998e-02, -2.8322e-01, -2.9466e-01, -1.3148e-01, -1.8863e-01,\n", + " -1.6306e-01, 1.5412e-01, 1.1863e-01, 1.4284e-01, 9.4711e-02,\n", + " 2.2862e-01, 1.5412e-01, 9.4848e-02, 5.9514e-02, 6.1569e-02,\n", + " -1.6293e-04, 2.7543e-02, 1.2516e-01, 7.3327e-02, 2.8667e-02,\n", + " 2.5755e-02, -3.1560e-02, 1.7417e-02, 1.7478e-01, 1.5213e-01,\n", + " 1.5632e-01, 1.1472e-01, 1.6729e-01, 1.5067e-01, 1.4817e-01,\n", + " 9.4061e-02, -4.0256e-02, -2.5337e-02, -1.7225e-02, -1.9066e-01,\n", + " -1.4263e-01, -1.6318e-01, -1.4506e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00022149283904582262\n", + "Grad encoder.fc1.bias: 0.0010257198009639978\n", + "Grad encoder.encoder.0.weight: 7.587873551528901e-05\n", + "Grad encoder.encoder.0.bias: 0.0009622488869354129\n", + "Grad encoder.encoder.2.weight: 5.5664633691776544e-05\n", + "Grad encoder.encoder.2.bias: 0.0008316109888255596\n", + "Grad encoder.encoder.4.weight: 0.00013112061424180865\n", + "Grad encoder.encoder.4.bias: 0.0020865313708782196\n", + "Grad decoder.fc1.0.weight: 7.40416653570719e-05\n", + "Grad decoder.fc1.0.bias: 0.0008911382756195962\n", + "Grad decoder.fc1.2.weight: 8.682620682520792e-05\n", + "Grad decoder.fc1.2.bias: 0.0007076876354403794\n", + "Grad decoder.fc1.4.weight: 5.843223334522918e-05\n", + "Grad decoder.fc1.4.bias: 0.0005240793107077479\n", + "Grad decoder.fc2.weight: 0.0001672563812462613\n", + "Grad decoder.fc2.bias: 0.001675963751040399\n", + "Grad _memory_unit.weight_ih_l0: 2.0443552784854546e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0001551549503346905\n", + "Grad _memory_unit.bias_hh_l0: 8.385513501707464e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.312637596129207e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00027445529121905565\n", + "Grad _memory_unit.bias_hh_l1: 0.00014807652041781694\n", + "Data X Sample: tensor([[1.2338, 1.3808, 1.5327, 1.6333, 1.7006, 1.8018, 1.9305, 2.0286, 3.4223,\n", + " 3.7818, 3.9749, 3.8580, 3.6130, 3.4953, 3.3390, 3.2931, 3.1982, 3.2652,\n", + " 3.3020, 3.1392, 3.2191, 3.1583, 2.8725, 2.7810, 2.7420, 2.8783, 2.9570,\n", + " 2.9733, 2.7545, 3.0262, 3.0271, 3.1723, 3.2517, 2.2885, 3.8826, 4.2905,\n", + " 4.6547, 5.0381, 5.4193, 5.3281, 0.9259, 0.5218, 0.5457, 0.9271, 1.3201,\n", + " 1.6011, 0.9994, 1.5482]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4680, -0.6576, 0.4491, 0.0139, 0.6964, 0.3724, 0.8281, 0.5250,\n", + " 0.0517, 0.4447, 0.9180, 0.1586, 0.0558, -0.6873, 0.2785, -0.1226,\n", + " -1.1688, 1.0594, 0.0536, 0.3688, -0.8784, -0.6729, -1.0348, -0.0179,\n", + " -0.7516, -0.2689, -0.7863, -0.2772, -0.3795, 0.2081, 0.9079, 0.5331,\n", + " -1.2545, -1.0065, 0.4923, -0.1605, -0.4351, -0.4206, 0.7114, 0.2620,\n", + " 0.7765, 0.1807, 0.0211]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1879, -0.1656, -0.0350, -0.1895, -0.0164, 0.0907, 0.1429, 0.1979,\n", + " 0.1292, 0.1678, 0.0888, -0.1042, -0.0147, -0.1921, -0.1501, -0.1332,\n", + " -0.1859, -0.0213, -0.0070, -0.0514, -0.0482, 0.0084, 0.0063, -0.0288,\n", + " -0.0207, 0.0535, -0.0207, -0.0226, -0.0826, -0.1828, -0.1302, -0.1745,\n", + " -0.1789, -0.2018, -0.0393, -0.0534, 0.0217, -0.0336, -0.0197, 0.2000,\n", + " 0.2474, 0.2298, 0.2814]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00021413571084849536\n", + "Grad encoder.fc1.bias: 0.0008643647888675332\n", + "Grad encoder.encoder.0.weight: 8.021266694413498e-05\n", + "Grad encoder.encoder.0.bias: 0.0008633123943582177\n", + "Grad encoder.encoder.2.weight: 6.345009023789316e-05\n", + "Grad encoder.encoder.2.bias: 0.0008001360110938549\n", + "Grad encoder.encoder.4.weight: 0.00014239340089261532\n", + "Grad encoder.encoder.4.bias: 0.0020896759815514088\n", + "Grad decoder.fc1.0.weight: 7.525314867962152e-05\n", + "Grad decoder.fc1.0.bias: 0.0009845541790127754\n", + "Grad decoder.fc1.2.weight: 9.592631249688566e-05\n", + "Grad decoder.fc1.2.bias: 0.0010127162095159292\n", + "Grad decoder.fc1.4.weight: 8.542244177078828e-05\n", + "Grad decoder.fc1.4.bias: 0.001123341964557767\n", + "Grad decoder.fc2.weight: 0.00016922476061154157\n", + "Grad decoder.fc2.bias: 0.002485351637005806\n", + "Grad _memory_unit.weight_ih_l0: 1.6612386389169842e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0001565069251228124\n", + "Grad _memory_unit.bias_hh_l0: 8.413442992605269e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.189345039165346e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002733059518504888\n", + "Grad _memory_unit.bias_hh_l1: 0.00014756723248865455\n", + "Data X Sample: tensor([[1.9954, 2.5416, 2.6852, 2.9212, 2.9095, 3.0983, 3.1753, 3.2211, 3.3344,\n", + " 3.3127, 3.4229, 3.3847, 3.4021, 3.3808, 3.1927, 3.2425, 3.2753, 3.2652,\n", + " 3.3144, 3.2545, 3.2019, 3.2088, 2.9375, 2.8764, 2.7345, 2.7347, 2.6027,\n", + " 2.7000, 2.3972, 2.2762, 2.1627, 2.1388, 2.2660, 1.4921, 2.3605, 2.5052,\n", + " 2.6292, 2.7669, 2.9157, 2.8712, 1.7850, 0.9698, 0.9802, 1.7251, 2.3626,\n", + " 2.8591, 1.8833, 2.5100]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0447, -0.6315, -0.2524, -0.2673, -0.0287, 0.8062, -0.0219, 0.0226,\n", + " -0.3577, -0.3666, -0.3686, 1.1302, 0.7126, -1.1840, 0.1351, 1.0283,\n", + " -0.0235, -0.4510, 0.0890, 0.3863, 0.1483, 0.1929, 0.1283, 0.0326,\n", + " 0.0755, -0.1055, 0.2045, 0.2996, 0.2348, -0.9073, 1.2135, 1.3257,\n", + " 0.4687, 0.7250, -0.7193, 3.0809, 0.8233, -0.7806, 0.0545, -0.3290,\n", + " -0.2669, 1.1019, -0.0619]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.0966, -0.0582, 0.0163, -0.1243, -0.0753, -0.0331, 0.0256, 0.0683,\n", + " 0.0581, 0.0727, -0.0092, -0.0543, 0.0347, -0.0786, -0.0496, -0.0252,\n", + " -0.1034, -0.0081, -0.0049, -0.0152, -0.0479, 0.0142, 0.0143, -0.0407,\n", + " -0.0221, 0.0433, 0.0244, -0.0339, 0.0376, -0.0637, -0.0567, -0.1156,\n", + " -0.0989, -0.0988, 0.0291, 0.0021, 0.0318, -0.0294, -0.0325, 0.1024,\n", + " 0.1385, 0.1152, 0.1186]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003212385345250368\n", + "Grad encoder.fc1.bias: 0.00010013885184889659\n", + "Grad encoder.encoder.0.weight: 8.042576519073918e-05\n", + "Grad encoder.encoder.0.bias: 0.00011061925033573061\n", + "Grad encoder.encoder.2.weight: 4.0853890823200345e-05\n", + "Grad encoder.encoder.2.bias: 0.0001338633883278817\n", + "Grad encoder.encoder.4.weight: 9.262468665838242e-05\n", + "Grad encoder.encoder.4.bias: 0.00034422692260704935\n", + "Grad decoder.fc1.0.weight: 3.655518594314344e-05\n", + "Grad decoder.fc1.0.bias: 0.00024153245612978935\n", + "Grad decoder.fc1.2.weight: 4.303995592636056e-05\n", + "Grad decoder.fc1.2.bias: 0.0004064874374307692\n", + "Grad decoder.fc1.4.weight: 4.9003749154508114e-05\n", + "Grad decoder.fc1.4.bias: 0.0006650413852185011\n", + "Grad decoder.fc2.weight: 0.00012292143946979195\n", + "Grad decoder.fc2.bias: 0.002113685244694352\n", + "Grad _memory_unit.weight_ih_l0: 1.0719728379626758e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.4654741789854597e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.54119389259722e-06\n", + "Grad _memory_unit.weight_ih_l1: 4.074832304468146e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.611471013049595e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.4258926714537665e-05\n", + "Data X Sample: tensor([[1.5011, 1.7682, 1.9249, 1.9701, 2.0780, 2.1377, 2.2617, 2.2189, 2.3043,\n", + " 2.3064, 2.3380, 2.4091, 2.3458, 2.2384, 2.0780, 2.2442, 2.1479, 2.2419,\n", + " 2.2529, 2.3432, 2.3898, 2.4602, 2.3761, 2.4546, 2.4962, 2.5649, 2.5574,\n", + " 2.5940, 2.3209, 2.3548, 2.4252, 2.4179, 2.2638, 1.4212, 1.8776, 1.7828,\n", + " 1.6479, 1.4788, 1.6100, 1.5661, 1.2361, 0.6970, 0.6993, 1.2888, 1.8077,\n", + " 1.8984, 1.3326, 1.8766]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 5.1368e-02, 8.7720e-01, 1.2910e+00, 1.5132e-01, 8.2399e-01,\n", + " 1.0191e+00, -9.6747e-04, -3.4737e-01, 2.2632e-01, -4.4506e-01,\n", + " -7.0873e-01, 8.0875e-01, 2.3410e-01, -2.2658e-01, -5.8374e-03,\n", + " 2.9943e-01, 5.3673e-01, -1.0560e+00, 2.7546e-01, 8.1587e-01,\n", + " 2.7979e-01, -1.4743e-01, 4.2982e-01, 2.4822e-01, 9.1281e-01,\n", + " -5.5906e-01, 7.9646e-01, -1.1682e+00, 9.9613e-01, 6.1152e-01,\n", + " -9.0903e-01, 3.3850e-01, 3.1938e-01, 1.1012e+00, 1.1862e-01,\n", + " -7.6430e-01, 9.7765e-01, 1.5113e-01, -2.2862e+00, -8.2436e-02,\n", + " -3.4148e-01, -3.6701e-01, -1.0467e+00]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2892, 0.2899, 0.1927, 0.2389, 0.0075, -0.0941, -0.3762, -0.4031,\n", + " -0.1368, -0.2178, -0.1856, 0.2365, 0.1671, 0.1533, 0.1274, 0.2751,\n", + " 0.2133, 0.1396, 0.0891, 0.0766, 0.0503, 0.0495, 0.1753, 0.1047,\n", + " 0.0497, 0.0350, -0.0342, 0.0790, 0.2304, 0.2102, 0.2313, 0.1740,\n", + " 0.2281, 0.2166, 0.1963, 0.1450, -0.0419, -0.0045, -0.0389, -0.2491,\n", + " -0.1743, -0.2419, -0.2292]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003724546986632049\n", + "Grad encoder.fc1.bias: 0.0001980496454052627\n", + "Grad encoder.encoder.0.weight: 0.00011553228250704706\n", + "Grad encoder.encoder.0.bias: 0.00021479889983311296\n", + "Grad encoder.encoder.2.weight: 6.469937216024846e-05\n", + "Grad encoder.encoder.2.bias: 0.0002700967015698552\n", + "Grad encoder.encoder.4.weight: 0.00018711974553298205\n", + "Grad encoder.encoder.4.bias: 0.0007449454860761762\n", + "Grad decoder.fc1.0.weight: 8.048766176216304e-05\n", + "Grad decoder.fc1.0.bias: 0.0007577134529128671\n", + "Grad decoder.fc1.2.weight: 8.940070983953774e-05\n", + "Grad decoder.fc1.2.bias: 0.0009333777707070112\n", + "Grad decoder.fc1.4.weight: 7.321823795791715e-05\n", + "Grad decoder.fc1.4.bias: 0.0009789939504116774\n", + "Grad decoder.fc2.weight: 0.00015576234727632254\n", + "Grad decoder.fc2.bias: 0.0016038191970437765\n", + "Grad _memory_unit.weight_ih_l0: 2.820408553816378e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.98637406155467e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.1415234338492155e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.039164635585621e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002044484717771411\n", + "Grad _memory_unit.bias_hh_l1: 0.00010727374319685623\n", + "Data X Sample: tensor([[1.3335, 1.5308, 1.6844, 1.8258, 1.9089, 1.9830, 2.0999, 2.4659, 4.0814,\n", + " 4.1199, 4.2033, 4.2416, 4.0013, 3.8607, 3.8257, 3.7444, 3.6243, 3.6966,\n", + " 3.5622, 3.4367, 3.4252, 3.2869, 2.9665, 2.8306, 2.7045, 2.8365, 2.8158,\n", + " 2.8795, 2.8378, 2.9476, 3.0726, 3.2745, 3.7269, 2.7737, 4.3925, 4.8620,\n", + " 5.0833, 5.2501, 5.9201, 5.6232, 1.0500, 0.6313, 0.5962, 1.0161, 1.5698,\n", + " 1.8184, 1.1694, 1.6889]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 2.6984e-01, 6.4709e-01, 1.6354e+00, -1.3171e+00, 7.0550e-01,\n", + " -2.1757e-01, 3.1109e-01, 3.7166e-01, 1.7127e+00, 7.7230e-01,\n", + " 1.1607e+00, 1.5369e+00, -5.4708e-04, -1.0305e+00, -1.3614e-01,\n", + " -6.5027e-01, -1.9855e+00, -1.0500e+00, 1.4610e+00, -5.1717e-02,\n", + " 4.4805e-01, -3.9631e-01, 4.4364e+00, 3.6508e-01, -1.2048e+00,\n", + " 2.6411e+00, -1.1691e-01, -5.3427e-01, -2.0353e-01, -4.0686e-01,\n", + " 1.6514e-01, -4.1164e-02, -2.8123e-01, 3.1609e-01, -1.1504e-01,\n", + " -1.1248e-01, 0.0000e+00, 7.9524e-01, -2.5781e-01, 2.7999e-01,\n", + " 8.8394e-01, 8.8497e-01, -7.4595e-02]], device='cuda:0')\n", + "Prediction Sample: tensor([[-1.7096e-01, -1.6609e-01, -2.5842e-02, -1.6262e-01, -9.6694e-03,\n", + " 1.1664e-01, 1.4441e-01, 2.0433e-01, 1.5235e-01, 1.9257e-01,\n", + " 1.0336e-01, -1.3071e-01, -2.8933e-02, -2.0440e-01, -1.6837e-01,\n", + " -1.6864e-01, -2.0922e-01, -2.6681e-02, -2.7487e-02, -8.2723e-02,\n", + " -5.4162e-02, -9.6808e-03, -1.4362e-04, -3.5191e-02, -1.2240e-02,\n", + " 3.9453e-02, -3.9871e-02, -6.5754e-02, -1.0381e-01, -1.8680e-01,\n", + " -1.6074e-01, -1.6558e-01, -1.9738e-01, -2.1607e-01, -6.8080e-02,\n", + " -5.4317e-02, 4.9084e-03, -2.2463e-02, -2.3327e-02, 2.1940e-01,\n", + " 2.6049e-01, 2.3389e-01, 2.5929e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003363981086295098\n", + "Grad encoder.fc1.bias: 0.0012604028452187777\n", + "Grad encoder.encoder.0.weight: 0.00010168748849537224\n", + "Grad encoder.encoder.0.bias: 0.0009078203584067523\n", + "Grad encoder.encoder.2.weight: 7.246808672789484e-05\n", + "Grad encoder.encoder.2.bias: 0.0007149233133532107\n", + "Grad encoder.encoder.4.weight: 0.00018626432574819773\n", + "Grad encoder.encoder.4.bias: 0.000849065079819411\n", + "Grad decoder.fc1.0.weight: 7.414964056806639e-05\n", + "Grad decoder.fc1.0.bias: 0.0004970053560100496\n", + "Grad decoder.fc1.2.weight: 9.608580876374617e-05\n", + "Grad decoder.fc1.2.bias: 0.0006712391041219234\n", + "Grad decoder.fc1.4.weight: 7.535959593951702e-05\n", + "Grad decoder.fc1.4.bias: 0.0006960816099308431\n", + "Grad decoder.fc2.weight: 0.00019542274822015315\n", + "Grad decoder.fc2.bias: 0.0019705998711287975\n", + "Grad _memory_unit.weight_ih_l0: 3.446365735726431e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.24915075302124e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.180178413866088e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.594533932802733e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00016543531091883779\n", + "Grad _memory_unit.bias_hh_l1: 9.155456791631877e-05\n", + "Data X Sample: tensor([[1.3738, 1.5876, 1.7476, 1.8126, 1.8372, 1.8887, 1.9412, 2.0514, 1.9528,\n", + " 2.0521, 2.1128, 2.0507, 2.0439, 2.0476, 1.9847, 1.9871, 1.9120, 1.9866,\n", + " 2.0568, 2.0513, 2.0757, 2.1218, 2.1568, 2.1759, 2.1865, 2.1809, 2.1738,\n", + " 2.2636, 2.0399, 2.1026, 2.1312, 2.0310, 2.0834, 1.4509, 2.0173, 1.8728,\n", + " 1.6204, 1.3755, 1.2613, 1.2058, 1.1072, 0.6492, 0.6326, 1.1855, 1.7125,\n", + " 1.8527, 1.1898, 1.6655]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.6456, 1.2744, -0.4102, 0.2020, -0.5356, -0.2872, 0.1739, -1.1598,\n", + " 0.5707, 0.8485, 0.9582, -0.1742, -0.5852, 0.9795, 0.3500, 0.8314,\n", + " 0.2278, 0.5685, -0.3189, 0.3022, -0.0403, 0.7893, 1.2583, -0.2922,\n", + " -0.3433, 0.7083, -1.1719, -0.7532, -1.7569, -0.3458, 0.6909, -0.5814,\n", + " 0.4646, 0.4182, 1.3005, 0.2582, -0.6473, -0.7806, 0.0545, 0.2092,\n", + " -0.6319, 0.4465, -0.3711]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3458, 0.3539, 0.2310, 0.2775, 0.0153, -0.1147, -0.4561, -0.4724,\n", + " -0.1797, -0.2723, -0.2316, 0.2791, 0.2037, 0.1993, 0.1565, 0.3184,\n", + " 0.2632, 0.1664, 0.1061, 0.1077, 0.0589, 0.0733, 0.2078, 0.1299,\n", + " 0.0677, 0.0500, -0.0273, 0.1055, 0.2925, 0.2791, 0.2865, 0.2282,\n", + " 0.2741, 0.2594, 0.2102, 0.1793, -0.0410, 0.0111, -0.0472, -0.2962,\n", + " -0.2156, -0.3018, -0.2914]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003045727498829365\n", + "Grad encoder.fc1.bias: 0.000813398277387023\n", + "Grad encoder.encoder.0.weight: 7.845486106816679e-05\n", + "Grad encoder.encoder.0.bias: 0.0005315853049978614\n", + "Grad encoder.encoder.2.weight: 5.568192864302546e-05\n", + "Grad encoder.encoder.2.bias: 0.0004865557129960507\n", + "Grad encoder.encoder.4.weight: 0.0001483411033404991\n", + "Grad encoder.encoder.4.bias: 0.000965812592767179\n", + "Grad decoder.fc1.0.weight: 5.687697193934582e-05\n", + "Grad decoder.fc1.0.bias: 0.0005055286455899477\n", + "Grad decoder.fc1.2.weight: 7.54365828470327e-05\n", + "Grad decoder.fc1.2.bias: 0.0005904032732360065\n", + "Grad decoder.fc1.4.weight: 7.212811033241451e-05\n", + "Grad decoder.fc1.4.bias: 0.0007013999274931848\n", + "Grad decoder.fc2.weight: 0.0001944118703249842\n", + "Grad decoder.fc2.bias: 0.0018312946194782853\n", + "Grad _memory_unit.weight_ih_l0: 1.955447623913642e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.1919771067332476e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.929254696937278e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.059156582225114e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010884365474339575\n", + "Grad _memory_unit.bias_hh_l1: 5.926854646531865e-05\n", + "Data X Sample: tensor([[1.4014, 1.5308, 1.6544, 1.8804, 2.0131, 2.0434, 2.0861, 2.0528, 3.3173,\n", + " 4.1910, 4.3048, 4.1306, 4.0080, 3.8907, 3.6542, 3.7102, 3.6762, 3.5167,\n", + " 3.6014, 3.5725, 3.4228, 3.2731, 2.9857, 2.8210, 2.8922, 2.9985, 3.0342,\n", + " 3.0467, 3.0876, 3.2555, 3.3560, 3.3906, 3.9227, 2.8927, 4.6351, 4.9788,\n", + " 4.9555, 5.5390, 6.0532, 5.8558, 1.0882, 0.5875, 0.5901, 1.0620, 1.5738,\n", + " 1.8756, 1.1898, 1.7202]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1617, 0.4253, -0.2380, 0.3095, -0.8703, 0.9001, -1.0300, 1.0232,\n", + " -0.7960, -0.6944, -0.6996, -0.6912, -0.0404, -0.5897, -0.5959, -0.8958,\n", + " -0.4009, 0.2655, -0.6308, 0.4167, -2.2219, -0.3597, -0.1795, -0.4803,\n", + " -0.2191, -1.3416, 0.0343, 0.0352, -0.0886, -0.6207, 0.5785, 0.1458,\n", + " -1.0741, 0.5418, 1.0551, -0.2810, -0.6417, -0.4031, 0.0545, -0.0869,\n", + " -0.4496, -1.0710, 0.7183]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2069, -0.2172, -0.0327, -0.1849, -0.0037, 0.1564, 0.1907, 0.2616,\n", + " 0.1939, 0.2421, 0.1607, -0.1797, -0.0529, -0.2703, -0.2336, -0.2512,\n", + " -0.2774, -0.0556, -0.0601, -0.1235, -0.0696, -0.0216, -0.0101, -0.0411,\n", + " -0.0048, 0.0448, -0.0453, -0.1097, -0.1328, -0.2287, -0.2258, -0.1915,\n", + " -0.2540, -0.2919, -0.1252, -0.0720, -0.0054, -0.0137, -0.0204, 0.3062,\n", + " 0.3265, 0.2878, 0.2916]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0010067534167319536\n", + "Grad encoder.fc1.bias: 0.0007717600674368441\n", + "Grad encoder.encoder.0.weight: 0.00021009072952438146\n", + "Grad encoder.encoder.0.bias: 0.0005184687906876206\n", + "Grad encoder.encoder.2.weight: 0.0001018588081933558\n", + "Grad encoder.encoder.2.bias: 0.00041547237196937203\n", + "Grad encoder.encoder.4.weight: 0.0002460474497638643\n", + "Grad encoder.encoder.4.bias: 0.0008740008343011141\n", + "Grad decoder.fc1.0.weight: 5.491467527463101e-05\n", + "Grad decoder.fc1.0.bias: 0.00043342442950233817\n", + "Grad decoder.fc1.2.weight: 5.3812822443433106e-05\n", + "Grad decoder.fc1.2.bias: 0.0005025584250688553\n", + "Grad decoder.fc1.4.weight: 5.035087451688014e-05\n", + "Grad decoder.fc1.4.bias: 0.0005372509476728737\n", + "Grad decoder.fc2.weight: 0.00016955325554590672\n", + "Grad decoder.fc2.bias: 0.001959831453859806\n", + "Grad _memory_unit.weight_ih_l0: 1.3501315152097959e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.9088658266118728e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.5703444660175592e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.136420324764913e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.590241486672312e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.474086745176464e-05\n", + "Data X Sample: tensor([[1.4374, 1.5803, 1.8377, 1.9329, 2.0250, 2.0051, 2.0260, 2.6007, 3.8543,\n", + " 4.3411, 4.2033, 4.4247, 4.0280, 4.1224, 3.8459, 3.7799, 3.6982, 3.7101,\n", + " 3.5394, 3.5260, 3.5086, 3.3037, 2.7881, 2.7924, 2.9353, 2.9358, 2.9970,\n", + " 3.0018, 3.0182, 3.2096, 3.2021, 3.3934, 3.9491, 2.8377, 4.4881, 4.8888,\n", + " 5.0991, 5.3721, 5.9391, 5.9268, 1.1072, 0.6492, 0.6609, 1.1969, 1.6729,\n", + " 1.7898, 1.2510, 1.8062]], device='cuda:0')\n", + "Data Y Sample: tensor([[-3.7961e-01, -2.0753e-01, 5.1526e-01, 1.4492e-01, 6.3922e-01,\n", + " 6.8372e-01, 1.9613e-01, -1.2085e-01, 1.2011e+00, 7.7821e-04,\n", + " 4.2756e-01, 9.0208e-01, 8.4082e-01, -3.1753e-01, 4.3004e-01,\n", + " 1.0264e-01, -4.4831e-01, -2.1606e-01, 6.4929e-01, 1.8331e+00,\n", + " -7.2175e-02, 4.7231e-01, -3.6082e-01, -1.5449e+00, -1.0423e+00,\n", + " 3.1006e-01, -1.3063e-01, 1.5543e-01, 5.8778e-01, 5.0659e-01,\n", + " 2.0748e-01, 8.8426e-01, 2.1155e-01, -8.4883e-01, 7.5894e-01,\n", + " -1.5264e+00, 6.2893e-01, 8.5322e-01, 9.2924e-02, 2.6379e-01,\n", + " -1.5803e-01, -4.2479e-01, 5.8607e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2272, -0.2403, -0.0411, -0.1975, -0.0018, 0.1792, 0.1966, 0.2910,\n", + " 0.1998, 0.2552, 0.1901, -0.2033, -0.0760, -0.3026, -0.2573, -0.2862,\n", + " -0.3072, -0.0713, -0.0782, -0.1342, -0.0836, -0.0315, -0.0107, -0.0449,\n", + " 0.0144, 0.0359, -0.0490, -0.1399, -0.1548, -0.2445, -0.2529, -0.2030,\n", + " -0.2787, -0.3167, -0.1523, -0.0900, -0.0175, -0.0076, -0.0174, 0.3426,\n", + " 0.3483, 0.3095, 0.3058]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00048384180990979075\n", + "Grad encoder.fc1.bias: 0.00016490643611177802\n", + "Grad encoder.encoder.0.weight: 0.00010984869004460052\n", + "Grad encoder.encoder.0.bias: 0.00016824417980387807\n", + "Grad encoder.encoder.2.weight: 7.394146814476699e-05\n", + "Grad encoder.encoder.2.bias: 0.00029190845089033246\n", + "Grad encoder.encoder.4.weight: 0.000197027504327707\n", + "Grad encoder.encoder.4.bias: 0.0008666841313242912\n", + "Grad decoder.fc1.0.weight: 7.245206506922841e-05\n", + "Grad decoder.fc1.0.bias: 0.0006084320484660566\n", + "Grad decoder.fc1.2.weight: 9.350523760076612e-05\n", + "Grad decoder.fc1.2.bias: 0.0008149496279656887\n", + "Grad decoder.fc1.4.weight: 7.886580715421587e-05\n", + "Grad decoder.fc1.4.bias: 0.0008746909443289042\n", + "Grad decoder.fc2.weight: 0.00016620181850157678\n", + "Grad decoder.fc2.bias: 0.0021034523379057646\n", + "Grad _memory_unit.weight_ih_l0: 3.403236041776836e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00011680374154821038\n", + "Grad _memory_unit.bias_hh_l0: 6.074219345464371e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0420767466712277e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002334678720217198\n", + "Grad _memory_unit.bias_hh_l1: 0.0001240208512172103\n", + "Data X Sample: tensor([[ 0.0149, 0.0160, 0.0255, 0.0175, 0.0171, 0.0309, 0.0185, 0.0128,\n", + " 0.0317, 0.0221, 0.0539, 0.0117, 0.0200, 0.0191, 0.0151, 0.0123,\n", + " -0.1305, -0.1489, -0.1879, -0.1730, -0.1914, -0.1225, -0.1976, -0.1871,\n", + " -0.1464, -0.3082, -0.3037, -0.5017, -0.0798, -0.1015, -0.1085, -0.0497,\n", + " -0.0176, -0.0618, -0.0319, 0.0073, -0.0157, -0.0212, -0.0507, -0.0113,\n", + " -0.0095, -0.0020, -0.0061, 0.0029, 0.0357, 0.0000, -0.0272, -0.0235]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 6.0292e-01, 1.0372e+00, -3.5242e-01, 3.1193e-01, -3.9384e-01,\n", + " 4.5728e-01, -5.8107e-01, -7.9866e-01, -2.6063e-01, -2.3154e-01,\n", + " -8.9347e-02, 3.4406e-01, 3.4162e-02, 3.0642e-01, 5.4604e-01,\n", + " 4.4885e-01, 6.0203e-01, -4.8929e-01, 9.1836e-01, 8.3930e-01,\n", + " -5.8706e-01, 5.6069e-01, 4.2866e-04, 1.2299e+00, 9.2359e-01,\n", + " 6.3169e-01, -4.3260e-01, 5.0708e-03, -5.7170e-01, 1.0540e+00,\n", + " -4.7387e-01, 3.9210e-01, 7.1893e-01, 5.7717e-01, 9.4283e-01,\n", + " -1.9581e-01, -5.0849e-01, 3.9452e-01, 4.0193e-03, -5.7140e-02,\n", + " -2.2672e-01, -1.6614e-01, -4.4950e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 5.7717e-01, 5.1334e-01, 2.0117e-01, 3.4810e-01, -7.6557e-02,\n", + " -2.6241e-01, -7.1783e-01, -7.5227e-01, -3.6840e-01, -4.7356e-01,\n", + " -4.8792e-01, 3.7802e-01, 2.6830e-01, 3.7906e-01, 1.9958e-01,\n", + " 3.7169e-01, 3.4510e-01, 1.5508e-01, 1.7257e-01, 1.0620e-01,\n", + " 7.6416e-02, 1.3448e-01, 2.0356e-01, 9.4252e-02, 6.9603e-02,\n", + " -1.6167e-04, 3.4462e-02, 2.1503e-01, 5.6959e-01, 6.0464e-01,\n", + " 4.7266e-01, 4.3767e-01, 4.6157e-01, 4.0913e-01, 2.7829e-01,\n", + " 2.4276e-01, -6.8595e-02, 6.6354e-02, -4.8257e-02, -5.0475e-01,\n", + " -4.4628e-01, -4.6036e-01, -3.9789e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002492075436748564\n", + "Grad encoder.fc1.bias: 0.0007603903068229556\n", + "Grad encoder.encoder.0.weight: 8.69055584189482e-05\n", + "Grad encoder.encoder.0.bias: 0.0006649699062108994\n", + "Grad encoder.encoder.2.weight: 7.563199324067682e-05\n", + "Grad encoder.encoder.2.bias: 0.0007319383439607918\n", + "Grad encoder.encoder.4.weight: 0.00022719110711477697\n", + "Grad encoder.encoder.4.bias: 0.0019641369581222534\n", + "Grad decoder.fc1.0.weight: 0.00010125015251105651\n", + "Grad decoder.fc1.0.bias: 0.0011308202520012856\n", + "Grad decoder.fc1.2.weight: 0.00013337832933757454\n", + "Grad decoder.fc1.2.bias: 0.0011957769747823477\n", + "Grad decoder.fc1.4.weight: 0.00010565926640992984\n", + "Grad decoder.fc1.4.bias: 0.00104042689781636\n", + "Grad decoder.fc2.weight: 0.00023694150149822235\n", + "Grad decoder.fc2.bias: 0.002016658429056406\n", + "Grad _memory_unit.weight_ih_l0: 2.9453289243974723e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00022643522243015468\n", + "Grad _memory_unit.bias_hh_l0: 0.00011925703438464552\n", + "Grad _memory_unit.weight_ih_l1: 1.81168616109062e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0004350373928900808\n", + "Grad _memory_unit.bias_hh_l1: 0.00023500928364228457\n", + "Data X Sample: tensor([[1.3886, 1.6007, 1.8798, 1.8586, 1.9362, 2.0773, 2.0999, 2.1592, 3.6517,\n", + " 4.1057, 4.0447, 4.2475, 3.9503, 3.6971, 3.7602, 3.4449, 3.4577, 3.3813,\n", + " 3.2441, 3.3475, 3.3443, 3.2838, 2.8701, 2.7829, 2.8772, 2.8888, 2.8051,\n", + " 2.9937, 2.9072, 3.0688, 3.1706, 3.1972, 3.5399, 2.6638, 4.4023, 4.7793,\n", + " 4.7471, 5.2978, 5.7806, 5.6402, 1.2122, 0.6870, 0.7053, 1.1941, 1.7720,\n", + " 1.8527, 1.3054, 1.8766]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3959, -1.1721, 0.3464, 0.1694, 1.0457, 1.5148, 0.0023, 0.4768,\n", + " -0.1360, 0.7357, 0.6178, -0.1277, -1.1198, -0.8409, -0.8757, 0.1001,\n", + " -0.3064, -0.4941, 0.2021, -0.1421, -0.1174, -0.2472, -0.0883, 0.8411,\n", + " 0.0681, 0.6164, 0.6217, 0.0215, 0.7271, -0.3636, -0.3598, 0.3602,\n", + " -0.7837, -1.1710, -0.2851, -0.4467, 0.8892, 0.7579, -0.4066, 0.9766,\n", + " 0.8432, 0.8313, 0.0890]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3007, -0.3226, -0.0689, -0.2612, -0.0137, 0.2171, 0.2445, 0.3692,\n", + " 0.2261, 0.2985, 0.2721, -0.2584, -0.1276, -0.3997, -0.3288, -0.3920,\n", + " -0.3887, -0.1280, -0.1179, -0.1585, -0.1262, -0.0521, -0.0300, -0.0538,\n", + " 0.0491, 0.0350, -0.0495, -0.2044, -0.1987, -0.3029, -0.3300, -0.2645,\n", + " -0.3441, -0.4086, -0.2222, -0.1265, -0.0403, -0.0143, -0.0163, 0.4564,\n", + " 0.4158, 0.3876, 0.3687]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007097941124811769\n", + "Grad encoder.fc1.bias: 0.00037999096093699336\n", + "Grad encoder.encoder.0.weight: 0.00020195219258312136\n", + "Grad encoder.encoder.0.bias: 0.0004045023233629763\n", + "Grad encoder.encoder.2.weight: 0.00011219729640288278\n", + "Grad encoder.encoder.2.bias: 0.0004923288361169398\n", + "Grad encoder.encoder.4.weight: 0.00025608838768675923\n", + "Grad encoder.encoder.4.bias: 0.0012054925318807364\n", + "Grad decoder.fc1.0.weight: 6.631589349126443e-05\n", + "Grad decoder.fc1.0.bias: 0.0005196916172280908\n", + "Grad decoder.fc1.2.weight: 9.151776612270623e-05\n", + "Grad decoder.fc1.2.bias: 0.0007992073660716414\n", + "Grad decoder.fc1.4.weight: 9.87777893897146e-05\n", + "Grad decoder.fc1.4.bias: 0.000978335039690137\n", + "Grad decoder.fc2.weight: 0.00023810872517060488\n", + "Grad decoder.fc2.bias: 0.002275011735036969\n", + "Grad _memory_unit.weight_ih_l0: 2.116364885296207e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.3010968763846904e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.8232922229799442e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.227561582112685e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.96828350960277e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.740251461043954e-05\n", + "Data X Sample: tensor([[1.3801, 1.5279, 1.6514, 1.9176, 2.1428, 2.2674, 2.3341, 2.1777, 3.7787,\n", + " 4.4232, 4.3365, 4.3312, 4.1877, 4.0379, 3.7955, 3.6883, 3.6652, 3.6830,\n", + " 3.5704, 3.5409, 3.5970, 3.4553, 2.9785, 2.9470, 2.8809, 2.9253, 2.9064,\n", + " 3.0671, 2.9765, 3.1474, 3.2545, 3.3160, 3.7181, 2.8217, 4.7307, 4.9982,\n", + " 5.3213, 5.5735, 6.0912, 5.8473, 0.9975, 0.5795, 0.5881, 1.0764, 1.5341,\n", + " 1.7955, 1.2578, 1.7593]], device='cuda:0')\n", + "Data Y Sample: tensor([[-6.0360e-01, -2.2594e-01, -8.5454e-01, -4.4239e-01, 8.0261e-02,\n", + " -2.1865e-01, -3.2649e-03, -9.8278e-02, 6.0494e-01, 4.9749e-01,\n", + " 6.2094e-01, -2.6278e-03, -6.1185e+00, -1.2165e+00, -4.5739e-01,\n", + " -9.5540e-01, -4.0171e-01, -7.4770e-01, -1.2657e-01, -3.8523e-01,\n", + " 3.8845e-02, 1.9348e-01, 1.3760e-01, -2.2704e-01, -3.9000e-01,\n", + " -1.8735e-01, 6.8338e-01, 3.2690e-02, 1.3327e-01, -3.7699e-01,\n", + " -3.2661e-01, -1.9833e-01, -5.6717e-01, -4.5678e-01, 8.4585e-02,\n", + " -2.8685e-01, -7.4931e-01, -7.2314e-01, 1.2050e+00, 5.3598e-01,\n", + " 5.1287e-01, 6.6658e-01, 4.2245e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3299, -0.3641, -0.0957, -0.2952, -0.0427, 0.2195, 0.2481, 0.3924,\n", + " 0.2269, 0.3101, 0.3024, -0.2804, -0.1598, -0.4383, -0.3463, -0.4316,\n", + " -0.4235, -0.1701, -0.1463, -0.1653, -0.1543, -0.0751, -0.0511, -0.0656,\n", + " 0.0767, 0.0369, -0.0358, -0.2373, -0.2047, -0.3217, -0.3553, -0.2940,\n", + " -0.3519, -0.4406, -0.2395, -0.1387, -0.0532, -0.0219, -0.0162, 0.5034,\n", + " 0.4294, 0.4106, 0.3833]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00024040356220211834\n", + "Grad encoder.fc1.bias: 0.001007912796922028\n", + "Grad encoder.encoder.0.weight: 8.858546061674133e-05\n", + "Grad encoder.encoder.0.bias: 0.0007426924421451986\n", + "Grad encoder.encoder.2.weight: 6.848359043942764e-05\n", + "Grad encoder.encoder.2.bias: 0.0007025636732578278\n", + "Grad encoder.encoder.4.weight: 0.00018629684927873313\n", + "Grad encoder.encoder.4.bias: 0.0011562209110707045\n", + "Grad decoder.fc1.0.weight: 8.055783109739423e-05\n", + "Grad decoder.fc1.0.bias: 0.0006021178560331464\n", + "Grad decoder.fc1.2.weight: 0.00010241226118523628\n", + "Grad decoder.fc1.2.bias: 0.0007115327753126621\n", + "Grad decoder.fc1.4.weight: 8.474879723507911e-05\n", + "Grad decoder.fc1.4.bias: 0.0006284513510763645\n", + "Grad decoder.fc2.weight: 0.00020010063599329442\n", + "Grad decoder.fc2.bias: 0.0016646430594846606\n", + "Grad _memory_unit.weight_ih_l0: 3.166820897604339e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.910638280212879e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.981232632417232e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.5912484741420485e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001807265216484666\n", + "Grad _memory_unit.bias_hh_l1: 9.690628940006718e-05\n", + "Data X Sample: tensor([[1.5318, 1.6735, 1.7611, 1.8914, 1.9704, 2.0714, 2.1877, 2.0854, 2.9609,\n", + " 3.7818, 4.2287, 4.0722, 3.9103, 3.8579, 3.6568, 3.4257, 3.4702, 3.2826,\n", + " 3.2565, 3.2805, 3.3786, 3.3343, 2.8002, 2.8172, 2.8828, 2.8261, 2.7332,\n", + " 2.8020, 3.0182, 3.0229, 3.0166, 3.1391, 3.4277, 2.5082, 4.2111, 4.6066,\n", + " 4.8552, 5.2024, 5.6475, 5.7026, 1.0357, 0.5974, 0.6447, 1.1596, 1.7165,\n", + " 1.9442, 1.2442, 1.6733]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 4.8594e-01, 2.0945e-01, -2.9935e-01, 5.8262e-01, 9.1108e-01,\n", + " 2.5013e-01, 3.0095e-01, -5.5149e-05, -4.1225e-01, 9.5703e-02,\n", + " -3.5865e-01, -2.5037e-01, 1.3540e-01, 7.6485e-01, -5.5069e-01,\n", + " 6.3462e-01, 7.1918e-01, -2.5146e-01, 2.3521e-01, -2.7234e-01,\n", + " 5.1227e-01, -2.5975e-01, -3.5150e-01, -7.9338e-02, -1.4979e-01,\n", + " -2.0200e-01, -3.5783e-01, 6.4582e-02, -9.7816e-01, -1.6104e+00,\n", + " -6.1277e-01, -8.0442e-01, 9.1561e-02, -2.7900e-01, -1.7045e+00,\n", + " 5.8865e-01, 9.7979e-01, -7.6230e-02, 0.0000e+00, -2.4770e-01,\n", + " -1.1828e+00, -2.7580e-01, -1.3160e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3111, -0.3420, -0.0948, -0.2780, -0.0670, 0.1822, 0.2080, 0.3593,\n", + " 0.2088, 0.2878, 0.2869, -0.2577, -0.1659, -0.4008, -0.3110, -0.4088,\n", + " -0.3992, -0.1791, -0.1505, -0.1483, -0.1488, -0.0812, -0.0536, -0.0672,\n", + " 0.0694, 0.0374, -0.0195, -0.2252, -0.1802, -0.2937, -0.3342, -0.2809,\n", + " -0.3280, -0.4076, -0.2224, -0.1399, -0.0620, -0.0227, -0.0158, 0.4665,\n", + " 0.3969, 0.3827, 0.3445]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005142659647390246\n", + "Grad encoder.fc1.bias: 0.00030200413311831653\n", + "Grad encoder.encoder.0.weight: 0.00014408465358428657\n", + "Grad encoder.encoder.0.bias: 0.0002953968069050461\n", + "Grad encoder.encoder.2.weight: 8.857884677127004e-05\n", + "Grad encoder.encoder.2.bias: 0.0003706588177010417\n", + "Grad encoder.encoder.4.weight: 0.00025582965463399887\n", + "Grad encoder.encoder.4.bias: 0.0008980137063190341\n", + "Grad decoder.fc1.0.weight: 7.775487028993666e-05\n", + "Grad decoder.fc1.0.bias: 0.0005723938811570406\n", + "Grad decoder.fc1.2.weight: 0.0001284791942453012\n", + "Grad decoder.fc1.2.bias: 0.000910908100195229\n", + "Grad decoder.fc1.4.weight: 0.0001146253925981\n", + "Grad decoder.fc1.4.bias: 0.0010104407556355\n", + "Grad decoder.fc2.weight: 0.00022126006660982966\n", + "Grad decoder.fc2.bias: 0.0020208684727549553\n", + "Grad _memory_unit.weight_ih_l0: 3.163750079693273e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.575599011033773e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.037692997371778e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.1257703590672463e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001902142830658704\n", + "Grad _memory_unit.bias_hh_l1: 0.00010085530084325\n", + "Data X Sample: tensor([[1.5637, 1.7085, 1.8873, 2.0466, 2.1155, 2.2674, 2.4019, 2.5127, 2.5094,\n", + " 2.6523, 2.5347, 2.6759, 2.5477, 2.5983, 2.4942, 2.4452, 2.4498, 2.4973,\n", + " 2.4553, 2.4102, 2.4610, 2.3683, 2.3881, 2.3916, 2.2240, 2.3533, 2.3949,\n", + " 2.3003, 2.2966, 2.2598, 2.2537, 2.2936, 2.1934, 1.4509, 1.9683, 1.7731,\n", + " 1.5869, 1.4470, 1.6670, 1.5888, 1.2313, 0.6890, 0.7579, 1.2429, 1.7442,\n", + " 2.0471, 1.3122, 2.0174]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7407, 0.7409, 1.7293, 0.4117, 0.8023, -0.3652, 1.2089, -0.5596,\n", + " 0.4572, 0.4213, 0.4584, -0.4346, -0.0274, -1.1791, -0.4136, -0.1328,\n", + " 0.1894, 0.9788, 0.3218, -0.6198, 1.5100, 1.1836, -1.0555, 0.8923,\n", + " 1.5695, 1.7872, 0.3451, 0.6710, 0.4952, -0.1464, 1.0409, 0.3770,\n", + " 0.0975, 0.3445, -0.0847, -1.0449, -0.6417, 0.5417, -0.4768, 0.1659,\n", + " 1.1033, -0.2098, 0.1933]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3621, 0.3646, 0.2155, 0.2662, 0.0137, -0.1311, -0.4210, -0.4082,\n", + " -0.1658, -0.2634, -0.2302, 0.2310, 0.1264, 0.2107, 0.1770, 0.2744,\n", + " 0.2371, 0.1251, 0.0790, 0.1155, 0.1196, 0.0849, 0.1588, 0.1105,\n", + " 0.0979, 0.0482, 0.0007, 0.1200, 0.2479, 0.3026, 0.2572, 0.1968,\n", + " 0.2528, 0.2219, 0.1825, 0.2081, -0.0405, 0.0057, -0.0233, -0.2999,\n", + " -0.2029, -0.2782, -0.2777]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00030083165620453656\n", + "Grad encoder.fc1.bias: 0.0002489113248884678\n", + "Grad encoder.encoder.0.weight: 8.144465391524136e-05\n", + "Grad encoder.encoder.0.bias: 0.00027257477631792426\n", + "Grad encoder.encoder.2.weight: 5.359442002372816e-05\n", + "Grad encoder.encoder.2.bias: 0.0002544746967032552\n", + "Grad encoder.encoder.4.weight: 0.00012221465294715017\n", + "Grad encoder.encoder.4.bias: 0.0004650931223295629\n", + "Grad decoder.fc1.0.weight: 5.3602852858603e-05\n", + "Grad decoder.fc1.0.bias: 0.0003548171662259847\n", + "Grad decoder.fc1.2.weight: 7.270371133927256e-05\n", + "Grad decoder.fc1.2.bias: 0.0004823371418751776\n", + "Grad decoder.fc1.4.weight: 7.924871169961989e-05\n", + "Grad decoder.fc1.4.bias: 0.0007480010390281677\n", + "Grad decoder.fc2.weight: 0.00021075806580483913\n", + "Grad decoder.fc2.bias: 0.0022868700325489044\n", + "Grad _memory_unit.weight_ih_l0: 1.4405572983378079e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.8004402338410728e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.5358395103248768e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.388957899616798e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.482910586986691e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.985211515100673e-05\n", + "Data X Sample: tensor([[1.6973, 1.7711, 1.9264, 2.1559, 2.0472, 1.9064, 2.0275, 3.8827, 4.3035,\n", + " 4.3584, 4.4793, 4.3994, 4.2610, 4.0406, 3.7122, 3.8182, 3.7690, 3.6192,\n", + " 3.5580, 3.3419, 3.4645, 3.2716, 2.8026, 2.7867, 2.7721, 2.8757, 2.8371,\n", + " 2.8346, 2.8690, 2.9018, 3.0481, 3.1308, 3.4541, 2.6272, 4.4145, 4.8012,\n", + " 4.9673, 5.4383, 6.0976, 6.0573, 1.2504, 0.6771, 0.7114, 1.2945, 1.7403,\n", + " 2.1043, 1.3734, 1.9313]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2507, 0.0432, 0.7476, -0.5751, -0.3304, 0.5829, 0.2034, 0.1871,\n", + " 0.2100, -0.0069, 0.0829, -0.1860, 1.0110, 0.5508, 2.4336, -0.4593,\n", + " -0.6838, -0.8149, 0.0796, 0.0245, -1.0077, 0.5691, -0.6346, -0.2892,\n", + " 0.7506, -0.2764, -0.4333, 0.1856, -1.8205, -0.5612, 0.0748, 0.3551,\n", + " -0.7990, 0.0587, -0.5908, 0.3542, -0.4582, 0.7314, -1.1505, 0.0968,\n", + " 0.0042, 0.6866, 0.4632]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2436, -0.2747, -0.0967, -0.2141, -0.0707, 0.1352, 0.1429, 0.3172,\n", + " 0.1803, 0.2731, 0.2463, -0.2391, -0.1723, -0.3227, -0.2417, -0.3428,\n", + " -0.3594, -0.1594, -0.1569, -0.1260, -0.1183, -0.0955, -0.0642, -0.0729,\n", + " 0.0612, 0.0335, 0.0062, -0.1963, -0.1600, -0.2468, -0.2857, -0.2451,\n", + " -0.2862, -0.3364, -0.2140, -0.1203, -0.0691, -0.0058, -0.0111, 0.3745,\n", + " 0.3426, 0.3281, 0.2699]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00043801809079013765\n", + "Grad encoder.fc1.bias: 0.0002999907301273197\n", + "Grad encoder.encoder.0.weight: 0.00011343178630340844\n", + "Grad encoder.encoder.0.bias: 0.000300765095744282\n", + "Grad encoder.encoder.2.weight: 7.238341640913859e-05\n", + "Grad encoder.encoder.2.bias: 0.0003811807546298951\n", + "Grad encoder.encoder.4.weight: 0.0001631535415071994\n", + "Grad encoder.encoder.4.bias: 0.000774092972278595\n", + "Grad decoder.fc1.0.weight: 4.128490763832815e-05\n", + "Grad decoder.fc1.0.bias: 0.0003430546203162521\n", + "Grad decoder.fc1.2.weight: 4.85424607177265e-05\n", + "Grad decoder.fc1.2.bias: 0.00045311939902603626\n", + "Grad decoder.fc1.4.weight: 4.582472320180386e-05\n", + "Grad decoder.fc1.4.bias: 0.0005760429194197059\n", + "Grad decoder.fc2.weight: 0.0001358661102131009\n", + "Grad decoder.fc2.bias: 0.0017174017848446965\n", + "Grad _memory_unit.weight_ih_l0: 1.1996203284070361e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.7701496946974657e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.510893980594119e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.777972208103165e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.40307368687354e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.900641604559496e-05\n", + "Data X Sample: tensor([[1.6708, 1.8279, 1.9744, 2.1122, 2.3119, 2.3852, 2.4959, 2.5695, 2.6265,\n", + " 2.6555, 2.5886, 2.7479, 2.5033, 2.4729, 2.4538, 2.4657, 2.4545, 2.4837,\n", + " 2.5627, 2.4678, 2.5321, 2.5796, 2.5110, 2.5500, 2.4755, 2.5231, 2.4269,\n", + " 2.4553, 2.3174, 2.4400, 2.3552, 2.2493, 1.8546, 1.2129, 1.6962, 1.5834,\n", + " 1.5260, 1.5133, 1.5402, 1.4498, 1.2361, 0.6472, 0.7175, 1.3462, 2.0098,\n", + " 1.9156, 1.5094, 1.9235]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1126, -0.1440, -0.0961, 0.0332, -0.7962, 0.0432, -0.5823, 0.1559,\n", + " -1.2091, -0.5875, -0.1328, 0.1605, 1.6319, -0.2480, 0.8083, -0.0049,\n", + " 2.2468, 1.4583, 0.0968, 1.1166, 0.6746, 0.1851, 0.3577, 1.0172,\n", + " 1.3772, -0.1393, 0.9990, -0.2649, 0.0744, 0.1274, -0.2973, -0.5451,\n", + " -0.0924, 0.3629, 0.7761, 0.9133, 0.1767, 0.4911, 0.4404, -0.3340,\n", + " -0.1613, -0.0922, -0.9114]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3244, 0.3167, 0.1778, 0.2378, 0.0092, -0.1202, -0.3518, -0.3479,\n", + " -0.1313, -0.2190, -0.2021, 0.1904, 0.0967, 0.1874, 0.1628, 0.2407,\n", + " 0.1925, 0.1056, 0.0691, 0.0936, 0.1244, 0.0762, 0.1256, 0.0872,\n", + " 0.0906, 0.0308, 0.0059, 0.1060, 0.1994, 0.2698, 0.2168, 0.1590,\n", + " 0.2103, 0.1921, 0.1696, 0.1898, -0.0473, -0.0031, -0.0121, -0.2690,\n", + " -0.1737, -0.2349, -0.2298]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001189085523947142\n", + "Grad encoder.fc1.bias: 0.00018850332708097994\n", + "Grad encoder.encoder.0.weight: 4.1900508222170174e-05\n", + "Grad encoder.encoder.0.bias: 0.00024878053227439523\n", + "Grad encoder.encoder.2.weight: 3.417022526264191e-05\n", + "Grad encoder.encoder.2.bias: 0.00026549817994236946\n", + "Grad encoder.encoder.4.weight: 6.700448284391314e-05\n", + "Grad encoder.encoder.4.bias: 0.0007180903339758515\n", + "Grad decoder.fc1.0.weight: 3.334361463203095e-05\n", + "Grad decoder.fc1.0.bias: 0.00037956127198413014\n", + "Grad decoder.fc1.2.weight: 5.2978422900196165e-05\n", + "Grad decoder.fc1.2.bias: 0.0005048370803706348\n", + "Grad decoder.fc1.4.weight: 5.17014559591189e-05\n", + "Grad decoder.fc1.4.bias: 0.0006335160578601062\n", + "Grad decoder.fc2.weight: 0.00014179584104567766\n", + "Grad decoder.fc2.bias: 0.0019405506318435073\n", + "Grad _memory_unit.weight_ih_l0: 6.259606834646547e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.122590326005593e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.2241109036258422e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.231626007822342e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.091728523140773e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.3555784941418096e-05\n", + "Data X Sample: tensor([[1.5011, 1.6357, 1.8107, 1.9438, 1.9840, 2.0434, 2.0260, 2.0996, 2.1481,\n", + " 2.1768, 2.2587, 2.2338, 2.1993, 2.1539, 2.1260, 2.1129, 2.1148, 2.1936,\n", + " 2.2488, 2.2503, 2.2401, 2.2168, 2.3134, 2.3572, 2.3554, 2.2854, 2.4109,\n", + " 2.3452, 2.2411, 2.3155, 2.2082, 2.3157, 2.2572, 1.5379, 2.0982, 1.9117,\n", + " 1.6853, 1.4868, 1.5276, 1.5633, 1.2075, 0.6572, 0.7073, 1.2084, 1.7244,\n", + " 1.9671, 1.2850, 1.7906]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0723, 0.2854, -0.1023, 0.1251, 0.9170, 0.1799, -0.3888, -0.1029,\n", + " 0.0756, -0.3351, 0.0446, -0.1172, 0.3669, 1.0021, 0.8575, 0.1350,\n", + " 0.4006, 1.3026, 1.4054, 1.4973, 1.4814, 0.9587, 0.0631, 0.2984,\n", + " 0.3862, 0.2228, 0.1814, -0.1427, 0.1280, 0.7291, 0.1570, 0.7699,\n", + " 0.2792, 0.4141, -0.2652, -0.0512, 0.4915, 0.7357, -0.0156, -0.0555,\n", + " -0.2417, 0.0228, -0.4240]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3171, 0.3074, 0.1670, 0.2323, 0.0058, -0.1229, -0.3376, -0.3356,\n", + " -0.1275, -0.2105, -0.1975, 0.1767, 0.0910, 0.1847, 0.1612, 0.2340,\n", + " 0.1800, 0.1024, 0.0670, 0.0913, 0.1226, 0.0729, 0.1117, 0.0819,\n", + " 0.0922, 0.0287, 0.0107, 0.1082, 0.1909, 0.2674, 0.2097, 0.1517,\n", + " 0.1983, 0.1898, 0.1672, 0.1817, -0.0492, -0.0028, -0.0093, -0.2612,\n", + " -0.1695, -0.2243, -0.2204]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00026324938517063856\n", + "Grad encoder.fc1.bias: 0.00023496556968893856\n", + "Grad encoder.encoder.0.weight: 8.59177962411195e-05\n", + "Grad encoder.encoder.0.bias: 0.00030441529816016555\n", + "Grad encoder.encoder.2.weight: 6.771388143533841e-05\n", + "Grad encoder.encoder.2.bias: 0.000453151878900826\n", + "Grad encoder.encoder.4.weight: 0.00015635586169082671\n", + "Grad encoder.encoder.4.bias: 0.0008334442391060293\n", + "Grad decoder.fc1.0.weight: 7.098561036400497e-05\n", + "Grad decoder.fc1.0.bias: 0.0007709459168836474\n", + "Grad decoder.fc1.2.weight: 8.498616080032662e-05\n", + "Grad decoder.fc1.2.bias: 0.0008917683735489845\n", + "Grad decoder.fc1.4.weight: 7.61351257096976e-05\n", + "Grad decoder.fc1.4.bias: 0.0009730611345730722\n", + "Grad decoder.fc2.weight: 0.00017952897178474814\n", + "Grad decoder.fc2.bias: 0.001862677396275103\n", + "Grad _memory_unit.weight_ih_l0: 2.338168451387901e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.386839519720525e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.889752744929865e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0810152161866426e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00022254078066907823\n", + "Grad _memory_unit.bias_hh_l1: 0.00011785300739575177\n", + "Data X Sample: tensor([[1.4777, 1.6196, 1.8467, 1.9744, 2.1394, 2.3086, 2.3541, 2.5000, 2.4898,\n", + " 2.5354, 2.3983, 2.4675, 2.5100, 2.4375, 2.4639, 2.3645, 2.3255, 2.5050,\n", + " 2.4491, 2.3823, 2.3996, 2.3760, 2.2917, 2.3706, 2.3441, 2.4003, 2.4215,\n", + " 2.3533, 2.1856, 2.2631, 2.2257, 2.2604, 2.2594, 1.4601, 1.9242, 1.8071,\n", + " 1.6420, 1.4735, 1.5719, 1.5235, 1.1597, 0.7169, 0.6851, 1.3032, 1.8156,\n", + " 2.0528, 1.2850, 1.8062]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2262, 0.3375, -0.2161, 0.7368, 0.8495, 0.0855, 0.3249, 0.0246,\n", + " -0.4197, -0.4960, -0.4171, 0.6210, 0.5356, 0.6509, -0.3231, 0.1340,\n", + " -0.1157, -0.7772, -0.5580, -0.6896, 0.6856, 0.5126, 0.8152, -0.5161,\n", + " -0.0533, 0.0086, -0.4467, -1.0828, -0.3474, 0.1569, 0.5459, 0.3701,\n", + " 0.3752, 0.8513, -1.0649, 0.0080, 0.5692, 0.7816, -0.0156, -0.1977,\n", + " -0.1756, -0.6170, -0.4398]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3370, 0.3177, 0.1591, 0.2460, 0.0110, -0.1365, -0.3432, -0.3485,\n", + " -0.1307, -0.2209, -0.2087, 0.1819, 0.0881, 0.1997, 0.1792, 0.2476,\n", + " 0.1785, 0.1004, 0.0725, 0.0957, 0.1305, 0.0782, 0.1091, 0.0789,\n", + " 0.0998, 0.0260, 0.0147, 0.1198, 0.1915, 0.2855, 0.2205, 0.1549,\n", + " 0.2104, 0.2036, 0.1706, 0.1953, -0.0567, -0.0069, 0.0013, -0.2750,\n", + " -0.1848, -0.2347, -0.2299]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0008149745408445597\n", + "Grad encoder.fc1.bias: 0.0003921736788470298\n", + "Grad encoder.encoder.0.weight: 0.00021344466949813068\n", + "Grad encoder.encoder.0.bias: 0.00048073945799842477\n", + "Grad encoder.encoder.2.weight: 0.00014481760445050895\n", + "Grad encoder.encoder.2.bias: 0.000596904952544719\n", + "Grad encoder.encoder.4.weight: 0.0003003277233801782\n", + "Grad encoder.encoder.4.bias: 0.0012415533419698477\n", + "Grad decoder.fc1.0.weight: 8.09386110631749e-05\n", + "Grad decoder.fc1.0.bias: 0.000668416207190603\n", + "Grad decoder.fc1.2.weight: 8.836417691782117e-05\n", + "Grad decoder.fc1.2.bias: 0.0007466778624802828\n", + "Grad decoder.fc1.4.weight: 7.670873310416937e-05\n", + "Grad decoder.fc1.4.bias: 0.0008037191000767052\n", + "Grad decoder.fc2.weight: 0.00016436124860774726\n", + "Grad decoder.fc2.bias: 0.0019453609129413962\n", + "Grad _memory_unit.weight_ih_l0: 2.3316953956964426e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.374254735419527e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.340201510582119e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.943125067162327e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00016439361206721514\n", + "Grad _memory_unit.bias_hh_l1: 8.600404544267803e-05\n", + "Data X Sample: tensor([[1.6602, 1.8672, 2.0451, 2.2762, 2.4297, 2.5458, 2.6037, 2.7654, 2.6802,\n", + " 2.7708, 2.8297, 2.8141, 2.7474, 2.6883, 2.5673, 2.6982, 2.5944, 2.5669,\n", + " 2.6639, 2.6259, 2.5321, 2.5811, 2.5833, 2.5596, 2.6069, 2.6067, 2.5254,\n", + " 2.5083, 2.2931, 2.3483, 2.4042, 2.3930, 2.2748, 1.5333, 1.9487, 1.9020,\n", + " 1.7089, 1.6723, 1.7114, 1.6399, 1.2838, 0.7348, 0.7538, 1.3692, 1.9742,\n", + " 2.2358, 1.3870, 2.1425]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4363, 1.1282, 0.6256, 0.4635, 0.0962, -0.2408, -0.3212, -0.6872,\n", + " -0.2825, -0.5121, -0.2366, 0.1588, 0.7582, 0.1956, 0.3367, -0.6556,\n", + " -0.5049, -0.7524, -0.9027, -0.0240, -0.5065, 0.2869, 0.4640, -0.5201,\n", + " -0.4520, -1.2039, 0.4922, -0.5954, -0.8915, -0.5249, -0.0387, 0.2670,\n", + " 0.2306, 0.8499, 1.3400, 2.3347, -0.3338, -0.3770, 0.0109, -0.4914,\n", + " -0.6471, -0.6213, -1.3191]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3544, 0.3279, 0.1509, 0.2565, 0.0141, -0.1503, -0.3492, -0.3600,\n", + " -0.1343, -0.2291, -0.2207, 0.1843, 0.0894, 0.2158, 0.1973, 0.2601,\n", + " 0.1796, 0.1025, 0.0763, 0.0986, 0.1341, 0.0826, 0.1043, 0.0708,\n", + " 0.1085, 0.0234, 0.0194, 0.1303, 0.1934, 0.3039, 0.2344, 0.1593,\n", + " 0.2196, 0.2205, 0.1737, 0.2021, -0.0663, -0.0058, 0.0115, -0.2878,\n", + " -0.1992, -0.2422, -0.2361]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00037139150663278997\n", + "Grad encoder.fc1.bias: 0.0005377770285122097\n", + "Grad encoder.encoder.0.weight: 0.00010647639282979071\n", + "Grad encoder.encoder.0.bias: 0.00045216179569251835\n", + "Grad encoder.encoder.2.weight: 8.694851567270234e-05\n", + "Grad encoder.encoder.2.bias: 0.0004422080528456718\n", + "Grad encoder.encoder.4.weight: 0.00018530138186179101\n", + "Grad encoder.encoder.4.bias: 0.0010291594080626965\n", + "Grad decoder.fc1.0.weight: 7.180720422184095e-05\n", + "Grad decoder.fc1.0.bias: 0.0006711235619150102\n", + "Grad decoder.fc1.2.weight: 8.751121640671045e-05\n", + "Grad decoder.fc1.2.bias: 0.0008256579749286175\n", + "Grad decoder.fc1.4.weight: 7.843591447453946e-05\n", + "Grad decoder.fc1.4.bias: 0.0008652891265228391\n", + "Grad decoder.fc2.weight: 0.00018884713063016534\n", + "Grad decoder.fc2.bias: 0.0018885773606598377\n", + "Grad _memory_unit.weight_ih_l0: 1.9770381186390296e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0001300552539760247\n", + "Grad _memory_unit.bias_hh_l0: 6.764058343833312e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.175437298836187e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.000251264835242182\n", + "Grad _memory_unit.bias_hh_l1: 0.00013364262122195214\n", + "Data X Sample: tensor([[1.4714, 1.8017, 2.1893, 2.3833, 2.3887, 2.6209, 2.7100, 2.6944, 2.7803,\n", + " 2.7582, 2.8678, 2.8278, 2.6653, 2.7783, 2.7842, 2.7269, 2.6903, 2.8126,\n", + " 2.8745, 2.9235, 2.8781, 2.9669, 2.6532, 2.4374, 2.4267, 2.3089, 2.1658,\n", + " 2.1820, 1.7762, 1.7751, 1.6693, 1.5972, 1.3596, 0.8811, 1.2182, 1.2526,\n", + " 1.3470, 1.6856, 1.8952, 1.8668, 1.2218, 0.8045, 0.7498, 1.4955, 2.1010,\n", + " 2.3731, 1.6521, 2.1034]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2168, -0.0731, 0.3410, 0.7768, -0.5587, -0.9638, -3.0592, -3.2014,\n", + " 0.5377, -0.7317, -0.5890, 0.3692, -0.2340, -0.3256, -0.1265, -1.4132,\n", + " -0.5183, 0.2224, 0.3934, -0.1526, -0.6191, 0.0497, -0.2195, 1.1961,\n", + " 0.7446, -0.8004, 0.9828, 0.1526, 1.0993, 2.0771, 1.2541, 0.6928,\n", + " 1.8865, -0.7297, 0.0685, -0.4562, -0.2284, -0.6931, 0.0000, 0.6594,\n", + " 0.9046, 0.7610, 1.2247]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.1035, 0.0997, 0.0724, -0.0065, -0.0384, -0.0633, -0.1151, -0.0877,\n", + " -0.0555, -0.0863, -0.0798, 0.0124, 0.0472, 0.0756, 0.0461, 0.0558,\n", + " 0.0177, 0.0298, 0.0159, 0.0173, -0.0291, 0.0234, 0.0267, 0.0467,\n", + " 0.0330, 0.0174, 0.0303, 0.0412, 0.0913, 0.1012, 0.0610, 0.0095,\n", + " 0.0024, 0.0089, 0.0181, 0.0377, -0.0167, 0.0077, 0.0068, -0.0607,\n", + " -0.0075, 0.0034, -0.0056]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00014548504259437323\n", + "Grad encoder.fc1.bias: 0.00033581035677343607\n", + "Grad encoder.encoder.0.weight: 4.249139965395443e-05\n", + "Grad encoder.encoder.0.bias: 0.0002607990463729948\n", + "Grad encoder.encoder.2.weight: 4.233224899508059e-05\n", + "Grad encoder.encoder.2.bias: 0.00030054806848056614\n", + "Grad encoder.encoder.4.weight: 0.00010061071952804923\n", + "Grad encoder.encoder.4.bias: 0.0005672269035130739\n", + "Grad decoder.fc1.0.weight: 4.9576799938222393e-05\n", + "Grad decoder.fc1.0.bias: 0.00040188408456742764\n", + "Grad decoder.fc1.2.weight: 7.429829565808177e-05\n", + "Grad decoder.fc1.2.bias: 0.0006474477704614401\n", + "Grad decoder.fc1.4.weight: 8.19975248305127e-05\n", + "Grad decoder.fc1.4.bias: 0.0009116152068600059\n", + "Grad decoder.fc2.weight: 0.00019277981482446194\n", + "Grad decoder.fc2.bias: 0.002287399023771286\n", + "Grad _memory_unit.weight_ih_l0: 1.654797961236909e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.163517587585375e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.3414959287038073e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.243787877087016e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010345579357817769\n", + "Grad _memory_unit.bias_hh_l1: 5.580238939728588e-05\n", + "Data X Sample: tensor([[0.0499, 0.0612, 0.0766, 0.0875, 0.1229, 0.1355, 0.1464, 0.1661, 0.1733,\n", + " 0.1848, 0.1650, 0.1909, 0.1975, 0.1663, 0.1917, 0.2188, 0.2547, 0.2283,\n", + " 0.2375, 0.2250, 0.2674, 0.2572, 0.2313, 0.2539, 0.2684, 0.2742, 0.2771,\n", + " 0.2733, 0.1700, 0.2587, 0.1855, 0.2459, 0.1760, 0.1488, 0.1887, 0.1873,\n", + " 0.1750, 0.1564, 0.2028, 0.1646, 0.0668, 0.0299, 0.0525, 0.0861, 0.1150,\n", + " 0.1372, 0.0816, 0.0547]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 2.3423, 0.5433, 0.4213, 0.2656, 1.0091, -0.2114, -1.1460, -0.8673,\n", + " -0.5435, -0.5561, -0.5715, 0.9711, 0.6544, 0.8235, 0.9549, 0.3716,\n", + " 1.9237, -0.1614, 0.7559, 0.9461, 0.5405, 0.3224, -0.3344, 0.2841,\n", + " 0.5607, -0.2371, 0.5842, 0.9225, 0.3616, 0.3249, 1.0360, 0.2235,\n", + " 0.8364, 0.2628, 0.8251, 0.1230, -0.2796, -0.0549, 0.9027, -0.6403,\n", + " -0.6380, -0.2566, 0.1400]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.6361, 0.4924, 0.1570, 0.4248, -0.0627, -0.2901, -0.6986, -0.6940,\n", + " -0.4193, -0.4963, -0.5037, 0.2569, 0.2043, 0.3986, 0.2033, 0.3907,\n", + " 0.2257, 0.1185, 0.1436, 0.1516, 0.1859, 0.1405, 0.1244, 0.1116,\n", + " 0.1205, -0.0422, 0.0470, 0.3532, 0.4857, 0.6540, 0.4518, 0.3775,\n", + " 0.4548, 0.4037, 0.2575, 0.2942, -0.0693, 0.0280, 0.0013, -0.4975,\n", + " -0.4542, -0.4319, -0.3348]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005921103293076158\n", + "Grad encoder.fc1.bias: 0.0005221851170063019\n", + "Grad encoder.encoder.0.weight: 0.00013666003360413015\n", + "Grad encoder.encoder.0.bias: 0.00037983281072229147\n", + "Grad encoder.encoder.2.weight: 8.994395466288552e-05\n", + "Grad encoder.encoder.2.bias: 0.00034868402872234583\n", + "Grad encoder.encoder.4.weight: 0.000217349617742002\n", + "Grad encoder.encoder.4.bias: 0.000898765167221427\n", + "Grad decoder.fc1.0.weight: 6.169961852720007e-05\n", + "Grad decoder.fc1.0.bias: 0.0004401030018925667\n", + "Grad decoder.fc1.2.weight: 6.646574183832854e-05\n", + "Grad decoder.fc1.2.bias: 0.0005065459990873933\n", + "Grad decoder.fc1.4.weight: 6.121055776020512e-05\n", + "Grad decoder.fc1.4.bias: 0.0006981531623750925\n", + "Grad decoder.fc2.weight: 0.00016723405860830098\n", + "Grad decoder.fc2.bias: 0.001924784854054451\n", + "Grad _memory_unit.weight_ih_l0: 1.7042433682945557e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.9172606193460524e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.067051173071377e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.720302397094201e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.706303196959198e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.518364949035458e-05\n", + "Data X Sample: tensor([[1.5966, 1.7449, 1.9534, 2.0641, 2.1889, 2.3499, 2.3218, 2.4361, 2.3507,\n", + " 2.4723, 2.4807, 2.4811, 2.3857, 2.3066, 2.3529, 2.3823, 2.3806, 2.3735,\n", + " 2.4677, 2.4678, 2.5370, 2.5199, 2.4941, 2.5271, 2.5656, 2.6432, 2.5414,\n", + " 2.5777, 2.2411, 2.4072, 2.2607, 2.2134, 2.1098, 1.4051, 1.8923, 1.6709,\n", + " 1.5575, 1.4815, 1.5783, 1.5661, 1.2361, 0.7309, 0.7579, 1.3232, 1.8949,\n", + " 1.9785, 1.4414, 1.9470]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 8.7457e-01, 1.4820e+00, 3.3171e-01, 5.3583e-01, 9.1759e-01,\n", + " -5.4084e-01, -9.3233e-01, -7.4513e-01, -8.8243e-01, -8.2717e-01,\n", + " -7.0605e-01, 5.8292e-01, 7.1337e-01, 7.8363e-01, 5.0068e-01,\n", + " 1.2707e+00, 4.9567e-01, 1.1432e-02, 7.4171e-02, 1.1775e-01,\n", + " 1.2162e-03, -4.3098e-01, 8.6980e-02, 5.4763e-01, -3.4377e+00,\n", + " -3.4184e-01, 6.1980e-01, 1.1327e+00, 1.1863e-03, 4.7216e-01,\n", + " 3.7914e-01, 7.1548e-01, 5.8052e-01, 9.8801e-01, 9.3012e-01,\n", + " -2.0111e-01, 1.5759e-02, 0.0000e+00, 1.1574e+00, -6.9713e-01,\n", + " -7.5803e-01, -7.7847e-01, -1.4741e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3793, 0.3323, 0.1579, 0.2813, 0.0276, -0.1674, -0.3614, -0.3790,\n", + " -0.1536, -0.2479, -0.2352, 0.1754, 0.0942, 0.2371, 0.2067, 0.2791,\n", + " 0.1738, 0.1135, 0.0878, 0.1158, 0.1378, 0.0802, 0.0860, 0.0780,\n", + " 0.1235, 0.0203, 0.0213, 0.1566, 0.2025, 0.3250, 0.2545, 0.1728,\n", + " 0.2287, 0.2489, 0.1785, 0.2142, -0.0655, -0.0010, 0.0241, -0.2912,\n", + " -0.2183, -0.2509, -0.2389]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006130099063739181\n", + "Grad encoder.fc1.bias: 0.0003727792063727975\n", + "Grad encoder.encoder.0.weight: 0.00015678684576414526\n", + "Grad encoder.encoder.0.bias: 0.00039313960587605834\n", + "Grad encoder.encoder.2.weight: 9.073370893020183e-05\n", + "Grad encoder.encoder.2.bias: 0.00048140058061107993\n", + "Grad encoder.encoder.4.weight: 0.0002414601476630196\n", + "Grad encoder.encoder.4.bias: 0.001158157829195261\n", + "Grad decoder.fc1.0.weight: 7.050810381770134e-05\n", + "Grad decoder.fc1.0.bias: 0.000533205340616405\n", + "Grad decoder.fc1.2.weight: 6.731747271260247e-05\n", + "Grad decoder.fc1.2.bias: 0.0005002619582228363\n", + "Grad decoder.fc1.4.weight: 7.368720252998173e-05\n", + "Grad decoder.fc1.4.bias: 0.0007537053897976875\n", + "Grad decoder.fc2.weight: 0.000159172122948803\n", + "Grad decoder.fc2.bias: 0.0017021977109834552\n", + "Grad _memory_unit.weight_ih_l0: 2.042883716057986e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.50213483418338e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.4832746930769645e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.953551746846642e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001089339712052606\n", + "Grad _memory_unit.bias_hh_l1: 5.603479439741932e-05\n", + "Data X Sample: tensor([[1.4162, 1.5483, 1.6980, 1.8258, 2.0387, 2.1834, 2.1924, 2.1067, 3.0049,\n", + " 4.0915, 4.3112, 4.3682, 4.1079, 3.9152, 3.6643, 3.5885, 3.6117, 3.5534,\n", + " 3.5869, 3.5520, 3.5307, 3.2884, 2.9568, 2.8134, 2.9091, 2.9175, 3.0929,\n", + " 3.1854, 3.0737, 3.2195, 3.3385, 3.3602, 3.9073, 2.8217, 4.6645, 5.0250,\n", + " 5.0951, 5.4357, 5.8947, 5.9750, 1.0834, 0.6353, 0.6023, 1.0477, 1.6253,\n", + " 1.8241, 1.1966, 1.7124]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4855, 0.2181, 0.9733, 0.7077, -0.1928, 0.5302, -1.0823, -0.6461,\n", + " -0.3067, -0.3466, -0.4009, 4.8659, 0.5937, -0.4133, -0.2873, -0.8093,\n", + " 1.3650, 0.0475, 0.1713, 0.5408, 0.0537, 0.0321, 0.1026, 0.5960,\n", + " -1.4812, 0.3718, -0.3522, -0.0533, -0.6023, -0.1526, -0.5875, 0.3440,\n", + " 0.1849, 0.3687, 0.2335, 0.6354, -0.1484, -0.6330, -0.5562, -0.6359,\n", + " -0.1870, -0.5946, -0.2127]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3283, -0.2463, -0.0802, -0.1627, 0.0699, 0.1342, 0.2075, 0.4093,\n", + " 0.2835, 0.4429, 0.2529, -0.2862, -0.2254, -0.3110, -0.2257, -0.4582,\n", + " -0.4044, -0.2159, -0.2209, -0.1766, -0.1204, -0.1965, -0.0418, -0.0787,\n", + " -0.1247, -0.0127, 0.0250, -0.1055, -0.2073, -0.3156, -0.2993, -0.2351,\n", + " -0.4535, -0.3878, -0.3950, -0.1401, 0.0036, 0.0654, -0.0516, 0.3819,\n", + " 0.4716, 0.4029, 0.3398]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0009491491364315152\n", + "Grad encoder.fc1.bias: 0.0005796790355816483\n", + "Grad encoder.encoder.0.weight: 0.00021614189608953893\n", + "Grad encoder.encoder.0.bias: 0.000519921537488699\n", + "Grad encoder.encoder.2.weight: 0.00015446652832906693\n", + "Grad encoder.encoder.2.bias: 0.0007504981476813555\n", + "Grad encoder.encoder.4.weight: 0.00038317087455652654\n", + "Grad encoder.encoder.4.bias: 0.0016070296987891197\n", + "Grad decoder.fc1.0.weight: 0.00012006470933556557\n", + "Grad decoder.fc1.0.bias: 0.0007435169536620378\n", + "Grad decoder.fc1.2.weight: 0.00015424318553414196\n", + "Grad decoder.fc1.2.bias: 0.0012202977668493986\n", + "Grad decoder.fc1.4.weight: 0.00013080661301501095\n", + "Grad decoder.fc1.4.bias: 0.0014258248265832663\n", + "Grad decoder.fc2.weight: 0.00023348326794803143\n", + "Grad decoder.fc2.bias: 0.002748714527115226\n", + "Grad _memory_unit.weight_ih_l0: 5.227854853728786e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.633446198771708e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.1679206585977226e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.7113830836024135e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001563999685458839\n", + "Grad _memory_unit.bias_hh_l1: 8.344294474227354e-05\n", + "Data X Sample: tensor([[1.5021, 1.7726, 1.8287, 1.9832, 2.0626, 2.2482, 2.3187, 2.4105, 2.4361,\n", + " 2.4675, 2.4966, 2.6233, 2.5233, 2.4293, 2.3277, 2.2387, 2.3177, 2.3909,\n", + " 2.3934, 2.2986, 2.2990, 2.3484, 2.3303, 2.3668, 2.3104, 2.4003, 2.3709,\n", + " 2.3982, 2.1127, 2.1845, 2.2607, 2.1941, 2.2044, 1.4234, 1.8678, 1.7366,\n", + " 1.6046, 1.4523, 1.5656, 1.4668, 1.1836, 0.6532, 0.7073, 1.2113, 1.6610,\n", + " 1.8927, 1.4074, 1.8453]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3826, 0.7584, 0.4672, 1.2961, 0.1715, -0.4704, -0.4011, -0.7078,\n", + " -0.3589, -0.4194, -0.6490, -2.1380, 0.6213, -0.1816, -0.0768, -0.0945,\n", + " 1.2289, 1.0382, -0.0320, 0.1231, -0.2193, -0.6039, 0.2005, -0.1770,\n", + " -0.1642, 4.4372, -0.7698, 1.6706, -0.4911, 0.0936, -0.0399, -0.7178,\n", + " 0.6456, 0.4518, 0.1992, -0.3104, -0.6687, 0.1005, -0.7367, -0.5631,\n", + " -0.6002, -0.7735, -0.3234]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3287, 0.2886, 0.1515, 0.2427, 0.0270, -0.1375, -0.3208, -0.3305,\n", + " -0.1431, -0.2277, -0.2065, 0.1394, 0.0995, 0.2187, 0.1768, 0.2550,\n", + " 0.1546, 0.1057, 0.0873, 0.0993, 0.0925, 0.0522, 0.0640, 0.0806,\n", + " 0.1102, 0.0235, 0.0186, 0.1470, 0.1714, 0.2771, 0.2279, 0.1466,\n", + " 0.1870, 0.2229, 0.1565, 0.1650, -0.0504, 0.0039, 0.0257, -0.2389,\n", + " -0.1919, -0.2045, -0.1839]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003626744437497109\n", + "Grad encoder.fc1.bias: 0.00034860882442444563\n", + "Grad encoder.encoder.0.weight: 9.34820418478921e-05\n", + "Grad encoder.encoder.0.bias: 0.0003512632683850825\n", + "Grad encoder.encoder.2.weight: 7.863612700020894e-05\n", + "Grad encoder.encoder.2.bias: 0.0004438352771103382\n", + "Grad encoder.encoder.4.weight: 0.00022381222515832633\n", + "Grad encoder.encoder.4.bias: 0.0013808533549308777\n", + "Grad decoder.fc1.0.weight: 0.00010416957957204431\n", + "Grad decoder.fc1.0.bias: 0.0007973291212692857\n", + "Grad decoder.fc1.2.weight: 0.00015840984997339547\n", + "Grad decoder.fc1.2.bias: 0.0011011800961568952\n", + "Grad decoder.fc1.4.weight: 0.00013106648111715913\n", + "Grad decoder.fc1.4.bias: 0.001258030766621232\n", + "Grad decoder.fc2.weight: 0.0002809811558108777\n", + "Grad decoder.fc2.bias: 0.0021593838464468718\n", + "Grad _memory_unit.weight_ih_l0: 5.061634874437004e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00015733367763459682\n", + "Grad _memory_unit.bias_hh_l0: 8.270172111224383e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.3138617759977933e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00029606022872030735\n", + "Grad _memory_unit.bias_hh_l1: 0.00015803554560989141\n", + "Data X Sample: tensor([[2.5248, 2.8781, 3.3193, 3.3017, 3.2680, 3.5506, 3.7330, 3.7336, 3.8519,\n", + " 4.0457, 3.9812, 4.0411, 3.7616, 3.7952, 3.5761, 3.6226, 3.4954, 3.6076,\n", + " 3.6654, 3.4237, 3.4449, 3.3098, 2.9496, 2.8993, 2.8396, 2.8417, 2.7066,\n", + " 2.7408, 2.6574, 2.8494, 2.7926, 2.9015, 3.0383, 2.1786, 3.6522, 3.9572,\n", + " 4.1099, 4.3067, 4.7665, 4.7323, 1.8613, 1.1092, 1.1722, 1.8973, 2.8225,\n", + " 3.1050, 2.1349, 3.0026]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4969, -0.9681, 0.5634, -0.5434, -0.1418, -0.3337, 0.0790, -0.0113,\n", + " -0.8558, -0.0297, 0.1119, 0.1108, -1.4028, 0.9084, -0.0572, -1.1517,\n", + " 0.9313, 0.3668, -1.2166, 0.1076, 0.4689, -0.4561, -1.7471, -0.6062,\n", + " -0.0066, -1.2239, 0.0157, -0.5122, -0.0939, 0.0695, 0.2935, 0.0213,\n", + " 0.1423, 0.5305, 0.1333, 0.6817, -0.2391, -0.1625, 0.2589, 0.0651,\n", + " -0.1453, 0.0561, -0.6152]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3825, -0.3109, -0.1052, -0.3192, -0.0634, 0.0332, 0.2026, 0.4154,\n", + " 0.2514, 0.3601, 0.2939, -0.2282, -0.2239, -0.2593, -0.1792, -0.4380,\n", + " -0.3880, -0.2737, -0.1727, -0.1135, -0.1635, -0.1739, -0.0677, -0.0627,\n", + " -0.1071, 0.0633, 0.0876, -0.0532, -0.1276, -0.2917, -0.2356, -0.2923,\n", + " -0.3639, -0.3638, -0.3543, -0.1684, -0.0061, 0.0356, -0.0600, 0.3810,\n", + " 0.4640, 0.4595, 0.3729]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0008836860070005059\n", + "Grad encoder.fc1.bias: 0.0007453318103216588\n", + "Grad encoder.encoder.0.weight: 0.00022914280998520553\n", + "Grad encoder.encoder.0.bias: 0.000629095477052033\n", + "Grad encoder.encoder.2.weight: 0.000174854532815516\n", + "Grad encoder.encoder.2.bias: 0.0008208076469600201\n", + "Grad encoder.encoder.4.weight: 0.00041584085556678474\n", + "Grad encoder.encoder.4.bias: 0.0017782123759388924\n", + "Grad decoder.fc1.0.weight: 0.0001687788899289444\n", + "Grad decoder.fc1.0.bias: 0.0011559375561773777\n", + "Grad decoder.fc1.2.weight: 0.00019167612481396645\n", + "Grad decoder.fc1.2.bias: 0.0012442725710570812\n", + "Grad decoder.fc1.4.weight: 0.00015702471137046814\n", + "Grad decoder.fc1.4.bias: 0.0013286848552525043\n", + "Grad decoder.fc2.weight: 0.0002793242456391454\n", + "Grad decoder.fc2.bias: 0.0025568946730345488\n", + "Grad _memory_unit.weight_ih_l0: 8.409769361605868e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00022843996703159064\n", + "Grad _memory_unit.bias_hh_l0: 0.00011957048263866454\n", + "Grad _memory_unit.weight_ih_l1: 2.133226917067077e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0004608591552823782\n", + "Grad _memory_unit.bias_hh_l1: 0.00024478681734763086\n", + "Data X Sample: tensor([[1.6358, 1.8469, 2.0586, 2.1253, 2.1992, 2.2732, 2.3726, 2.3992, 2.4361,\n", + " 2.4375, 2.4427, 2.5590, 2.3080, 2.3420, 2.2495, 2.4042, 2.3727, 2.3619,\n", + " 2.4347, 2.4381, 2.5174, 2.5367, 2.6315, 2.5137, 2.4887, 2.5283, 2.3896,\n", + " 2.4553, 2.1301, 2.1583, 1.9912, 2.0255, 1.6852, 1.0527, 1.5418, 1.5153,\n", + " 1.4434, 1.4523, 1.5022, 1.3647, 1.2409, 0.7448, 0.8023, 1.4122, 1.8988,\n", + " 2.2015, 1.4278, 2.1112]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.4683, -1.4162, 1.4938, 1.2497, -0.4706, -0.2408, 0.4706, 0.6375,\n", + " 0.8353, 0.8624, 0.7243, -0.8479, -0.0523, -0.8501, -0.6177, -0.4536,\n", + " -0.0900, -0.8141, -1.0047, -0.1456, 1.1426, -0.1184, 0.3170, -0.2927,\n", + " -0.5309, -0.1788, 0.8888, -0.0268, -1.6270, 0.1107, -1.2265, -0.0764,\n", + " -1.5770, -1.1962, -0.6520, 0.0237, -0.8350, -0.3712, -1.8037, 0.5988,\n", + " 0.6469, 0.6521, -0.3047]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.1091, 0.0889, 0.0864, 0.0087, 0.0047, -0.0547, -0.1009, -0.1100,\n", + " -0.0470, -0.0987, -0.0602, 0.0241, 0.0757, 0.0991, 0.0545, 0.0441,\n", + " 0.0260, 0.0354, 0.0412, 0.0060, -0.0303, 0.0200, 0.0264, 0.0657,\n", + " 0.0243, 0.0177, 0.0152, 0.0989, 0.0750, 0.1036, 0.0893, 0.0086,\n", + " 0.0153, 0.0285, 0.0083, 0.0191, -0.0116, 0.0160, 0.0163, -0.0478,\n", + " -0.0064, 0.0060, 0.0195]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00040278135566040874\n", + "Grad encoder.fc1.bias: 0.0004667804460041225\n", + "Grad encoder.encoder.0.weight: 0.00011814112076535821\n", + "Grad encoder.encoder.0.bias: 0.0003585906815715134\n", + "Grad encoder.encoder.2.weight: 7.725920295342803e-05\n", + "Grad encoder.encoder.2.bias: 0.000317610363708809\n", + "Grad encoder.encoder.4.weight: 0.00015934684779495\n", + "Grad encoder.encoder.4.bias: 0.0005819638608954847\n", + "Grad decoder.fc1.0.weight: 6.299697997746989e-05\n", + "Grad decoder.fc1.0.bias: 0.00035768182715401053\n", + "Grad decoder.fc1.2.weight: 6.828278856119141e-05\n", + "Grad decoder.fc1.2.bias: 0.0004528863646555692\n", + "Grad decoder.fc1.4.weight: 6.632096483372152e-05\n", + "Grad decoder.fc1.4.bias: 0.000523170514497906\n", + "Grad decoder.fc2.weight: 0.00020268044318072498\n", + "Grad decoder.fc2.bias: 0.0018080020090565085\n", + "Grad _memory_unit.weight_ih_l0: 1.9307901311549358e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.487025994923897e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.4567091056960635e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.920741725480184e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.673396612517536e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.101682498003356e-05\n", + "Data X Sample: tensor([[1.4236, 1.6604, 1.8407, 2.0357, 1.9823, 1.9197, 1.7949, 2.6959, 4.1644,\n", + " 4.5922, 4.5269, 4.4442, 4.0879, 4.2478, 3.9569, 3.8278, 3.8240, 3.5882,\n", + " 3.6530, 3.5056, 3.4522, 3.4782, 2.9785, 2.8230, 2.8058, 2.9253, 2.9517,\n", + " 2.9203, 2.8863, 3.1507, 3.1251, 3.2055, 3.7511, 2.8698, 4.6425, 5.0226,\n", + " 5.2289, 5.6662, 6.2497, 6.0942, 1.0309, 0.6313, 0.6366, 1.2371, 1.7958,\n", + " 2.0071, 1.2782, 1.7828]], device='cuda:0')\n", + "Data Y Sample: tensor([[-6.6229e-02, 1.9411e-01, 3.0880e-01, -7.2577e-01, 8.0791e-02,\n", + " -1.0337e-01, 7.0708e-01, 1.3964e-01, -3.4372e-01, 3.8325e-01,\n", + " 4.8155e-01, -3.4245e-01, -2.2911e-01, -1.0734e+00, 7.4714e-02,\n", + " 3.7237e-01, 4.3206e-01, 3.3263e-01, 4.6935e-01, -7.1365e-01,\n", + " -9.9967e-01, -1.0431e+00, -5.5659e-01, -6.9356e-01, -1.0345e+00,\n", + " 3.3640e-01, 9.5451e-01, -5.5334e-01, -6.5980e-01, -5.9615e-01,\n", + " -1.0943e+00, -2.7357e-01, -1.8592e-01, -2.1087e-01, 2.1120e-01,\n", + " 2.3538e-03, -1.0781e-03, 1.5450e-01, 1.7270e-02, 1.7913e-01,\n", + " 3.0380e-01, 1.5878e-01, 6.3158e-02]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2426, -0.1905, -0.0560, -0.1306, 0.0515, 0.1448, 0.1960, 0.3341,\n", + " 0.2100, 0.3169, 0.2421, -0.2539, -0.1803, -0.2180, -0.1862, -0.3435,\n", + " -0.3267, -0.1098, -0.1816, -0.1373, -0.0875, -0.1779, -0.0160, -0.0023,\n", + " -0.1381, 0.0106, -0.0092, -0.0868, -0.2091, -0.2330, -0.2399, -0.2151,\n", + " -0.3517, -0.3200, -0.2855, -0.1603, -0.0066, 0.0616, -0.0312, 0.2910,\n", + " 0.3924, 0.3328, 0.2674]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005874308990314603\n", + "Grad encoder.fc1.bias: 0.00033298900234512985\n", + "Grad encoder.encoder.0.weight: 0.0001988858712138608\n", + "Grad encoder.encoder.0.bias: 0.0005021545803174376\n", + "Grad encoder.encoder.2.weight: 0.0001203429710585624\n", + "Grad encoder.encoder.2.bias: 0.0006390094058588147\n", + "Grad encoder.encoder.4.weight: 0.0003120769397355616\n", + "Grad encoder.encoder.4.bias: 0.001230699010193348\n", + "Grad decoder.fc1.0.weight: 0.00012025387695757672\n", + "Grad decoder.fc1.0.bias: 0.0009463622700423002\n", + "Grad decoder.fc1.2.weight: 0.00015608179091941565\n", + "Grad decoder.fc1.2.bias: 0.0010751017834991217\n", + "Grad decoder.fc1.4.weight: 0.00012768075976055115\n", + "Grad decoder.fc1.4.bias: 0.0011155243264511228\n", + "Grad decoder.fc2.weight: 0.00023192357912193984\n", + "Grad decoder.fc2.bias: 0.0019564740359783173\n", + "Grad _memory_unit.weight_ih_l0: 5.0650960474740714e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00012294217594899237\n", + "Grad _memory_unit.bias_hh_l0: 6.409649358829483e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.428440555173438e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002703787758946419\n", + "Grad _memory_unit.bias_hh_l1: 0.00014348991680890322\n", + "Data X Sample: tensor([[2.9003, 3.3208, 3.7220, 3.9401, 4.1252, 4.1752, 4.3339, 4.4321, 4.3474,\n", + " 4.1989, 4.1526, 4.1871, 3.9015, 3.8743, 3.6240, 3.5023, 3.4702, 3.4993,\n", + " 3.6530, 3.5613, 3.5675, 3.4905, 2.8990, 2.8096, 2.8265, 2.9514, 2.9863,\n", + " 2.9488, 3.0529, 3.2293, 3.3000, 3.3851, 3.5531, 2.5768, 4.1841, 4.7988,\n", + " 5.0067, 5.4622, 6.1166, 5.8558, 2.2049, 1.4119, 1.2611, 2.3365, 3.4171,\n", + " 3.5853, 2.3660, 3.4404]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6296, -0.5808, 0.8218, -0.2674, 0.3466, 0.4847, 0.6007, 0.4680,\n", + " 0.7088, 0.1612, 1.1930, -0.2162, -1.2880, 0.0432, 0.1029, 0.0210,\n", + " 0.6794, 0.4301, 0.9080, 0.3687, 2.1310, 0.3573, 0.9850, 0.4598,\n", + " 0.7433, 1.2867, 0.2204, 0.1721, 0.1086, -0.0088, -0.2547, 0.5858,\n", + " -0.2922, -0.1739, -0.7500, -0.5018, -0.2248, -0.5083, -0.2733, 0.2346,\n", + " -0.7095, -0.2779, -0.5254]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.4125, -0.4051, -0.1599, -0.4123, -0.1709, -0.0030, 0.2177, 0.4155,\n", + " 0.2705, 0.2910, 0.3742, -0.1863, -0.2304, -0.2131, -0.1564, -0.4286,\n", + " -0.3647, -0.2670, -0.1464, -0.1213, -0.2401, -0.1721, -0.1251, -0.0186,\n", + " -0.0742, 0.1135, 0.1401, -0.0735, -0.1170, -0.3215, -0.1857, -0.3973,\n", + " -0.2553, -0.3435, -0.2450, -0.1951, -0.0186, 0.0042, -0.0747, 0.4052,\n", + " 0.4728, 0.4781, 0.3797]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003843627346213907\n", + "Grad encoder.fc1.bias: 0.00026554998476058245\n", + "Grad encoder.encoder.0.weight: 8.531483035767451e-05\n", + "Grad encoder.encoder.0.bias: 0.0002515852975193411\n", + "Grad encoder.encoder.2.weight: 4.6832421503495425e-05\n", + "Grad encoder.encoder.2.bias: 0.00026807369431480765\n", + "Grad encoder.encoder.4.weight: 8.715495641808957e-05\n", + "Grad encoder.encoder.4.bias: 0.0005831104936078191\n", + "Grad decoder.fc1.0.weight: 4.451481800060719e-05\n", + "Grad decoder.fc1.0.bias: 0.00032067735446617007\n", + "Grad decoder.fc1.2.weight: 5.51284865650814e-05\n", + "Grad decoder.fc1.2.bias: 0.00041705372859723866\n", + "Grad decoder.fc1.4.weight: 6.874414975754917e-05\n", + "Grad decoder.fc1.4.bias: 0.0006764208665117621\n", + "Grad decoder.fc2.weight: 0.0001817310694605112\n", + "Grad decoder.fc2.bias: 0.001920458860695362\n", + "Grad _memory_unit.weight_ih_l0: 1.4561571333615575e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.844215850927867e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.6135871192091145e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.813674761157017e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.04625781509094e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.776251833187416e-05\n", + "Data X Sample: tensor([[1.1383, 1.3240, 1.5477, 1.6749, 1.8270, 1.9197, 2.7362, 4.0118, 3.9935,\n", + " 4.1009, 4.1526, 3.9067, 3.9814, 3.5798, 3.4298, 3.6035, 3.5300, 3.4161,\n", + " 3.2235, 3.2136, 3.2093, 3.1782, 2.8387, 2.7084, 2.7308, 2.7817, 2.7785,\n", + " 2.7163, 2.9349, 2.9312, 3.0446, 3.0535, 3.3067, 2.4395, 4.1253, 4.5215,\n", + " 4.7136, 5.2475, 5.6539, 5.5863, 0.8973, 0.5257, 0.5376, 0.9759, 1.3756,\n", + " 1.5210, 1.1898, 1.5560]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4526, -0.4125, 0.0981, 2.2176, 0.4597, 0.4279, 0.9008, 0.6048,\n", + " 0.3279, -0.0718, -0.1568, -0.8063, -0.6618, -0.3854, 1.0803, 0.3831,\n", + " 0.6524, 0.6993, 0.8735, -0.1920, 0.6038, -1.0645, -1.4291, -2.3298,\n", + " -0.0171, 1.1773, 0.4283, 0.2876, -0.2930, 0.4312, 0.3667, 1.3670,\n", + " -0.7197, 0.2577, -0.3544, 0.4284, 0.5069, -0.0606, -1.0094, 0.5399,\n", + " -0.5845, -0.2087, -0.5811]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2685, -0.2278, -0.0748, -0.2213, -0.0461, 0.0461, 0.2123, 0.2953,\n", + " 0.2164, 0.2269, 0.2498, -0.1372, -0.1335, -0.1502, -0.1542, -0.3273,\n", + " -0.2685, -0.1356, -0.0905, -0.1260, -0.1370, -0.1207, -0.0225, 0.0143,\n", + " -0.1363, 0.0722, 0.0409, -0.0330, -0.1319, -0.2263, -0.1868, -0.2424,\n", + " -0.2570, -0.2896, -0.2122, -0.1584, 0.0058, 0.0119, -0.0456, 0.2729,\n", + " 0.3792, 0.3390, 0.2913]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007478810148313642\n", + "Grad encoder.fc1.bias: 0.0008384252432733774\n", + "Grad encoder.encoder.0.weight: 0.00020482456602621824\n", + "Grad encoder.encoder.0.bias: 0.0009268502471968532\n", + "Grad encoder.encoder.2.weight: 0.00011321839701849967\n", + "Grad encoder.encoder.2.bias: 0.0009942140895873308\n", + "Grad encoder.encoder.4.weight: 0.0002930928603745997\n", + "Grad encoder.encoder.4.bias: 0.002237556269392371\n", + "Grad decoder.fc1.0.weight: 0.00011093271314166486\n", + "Grad decoder.fc1.0.bias: 0.0012006491888314486\n", + "Grad decoder.fc1.2.weight: 0.00013867460074834526\n", + "Grad decoder.fc1.2.bias: 0.0011727497912943363\n", + "Grad decoder.fc1.4.weight: 0.0001232637878274545\n", + "Grad decoder.fc1.4.bias: 0.0012559929164126515\n", + "Grad decoder.fc2.weight: 0.00025671685580164194\n", + "Grad decoder.fc2.bias: 0.0020100134424865246\n", + "Grad _memory_unit.weight_ih_l0: 4.003194408142008e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00023250274534802884\n", + "Grad _memory_unit.bias_hh_l0: 0.00012183627404738218\n", + "Grad _memory_unit.weight_ih_l1: 1.5028213965706527e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00045122846495360136\n", + "Grad _memory_unit.bias_hh_l1: 0.00024318689247593284\n", + "Data X Sample: tensor([[1.6019, 1.8512, 2.0361, 2.1712, 2.2146, 2.2069, 2.2771, 2.3424, 2.3922,\n", + " 2.4217, 2.3792, 2.4577, 2.3680, 2.3393, 2.2899, 2.4096, 2.2674, 2.3909,\n", + " 2.4223, 2.4195, 2.4585, 2.4893, 2.5351, 2.5443, 2.5562, 2.5597, 2.5894,\n", + " 2.6837, 2.3382, 2.4465, 2.3517, 2.3765, 2.1296, 1.3479, 1.8384, 1.7050,\n", + " 1.6066, 1.5716, 1.5466, 1.4214, 1.3316, 0.7508, 0.7437, 1.3089, 2.0772,\n", + " 2.2473, 1.3870, 2.0252]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6493, -0.5974, 0.3897, -0.1726, -0.0252, 0.0277, -0.2628, 0.1939,\n", + " -0.2448, -0.2217, -0.4153, 1.4703, -0.4981, 0.5748, 0.6353, 1.1413,\n", + " -0.8118, 0.5981, 0.1135, -0.4988, -0.1722, -0.8394, -0.5671, -0.5099,\n", + " -0.2675, -1.0646, -0.2908, 0.1426, -0.0344, 1.2603, -0.4209, 0.6847,\n", + " -0.6420, 0.1971, -0.0810, 0.1923, -0.0182, 0.7428, 0.2870, -0.0053,\n", + " 0.8748, 0.8861, -0.2930]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5644, 0.4681, 0.2216, 0.4565, 0.1271, -0.2296, -0.5099, -0.5502,\n", + " -0.2334, -0.3961, -0.3437, 0.2236, 0.2016, 0.4022, 0.3426, 0.4710,\n", + " 0.2934, 0.1565, 0.1544, 0.1761, 0.1714, 0.0856, 0.1161, 0.1352,\n", + " 0.2151, 0.0671, 0.0398, 0.2265, 0.2628, 0.4407, 0.3786, 0.2584,\n", + " 0.3757, 0.4074, 0.2650, 0.3139, -0.1146, -0.0313, 0.0680, -0.3989,\n", + " -0.3860, -0.3926, -0.3730]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005728211835958064\n", + "Grad encoder.fc1.bias: 0.0004912082804366946\n", + "Grad encoder.encoder.0.weight: 0.0001151318137999624\n", + "Grad encoder.encoder.0.bias: 0.00042010186007246375\n", + "Grad encoder.encoder.2.weight: 7.214370998553932e-05\n", + "Grad encoder.encoder.2.bias: 0.0004166993894614279\n", + "Grad encoder.encoder.4.weight: 0.00017566447786521167\n", + "Grad encoder.encoder.4.bias: 0.001139436848461628\n", + "Grad decoder.fc1.0.weight: 7.543151150457561e-05\n", + "Grad decoder.fc1.0.bias: 0.0006322856061160564\n", + "Grad decoder.fc1.2.weight: 9.491766104474664e-05\n", + "Grad decoder.fc1.2.bias: 0.0006495526758953929\n", + "Grad decoder.fc1.4.weight: 7.925070531200618e-05\n", + "Grad decoder.fc1.4.bias: 0.0006934435805305839\n", + "Grad decoder.fc2.weight: 0.00019529988639988005\n", + "Grad decoder.fc2.bias: 0.0018415350932627916\n", + "Grad _memory_unit.weight_ih_l0: 3.150659176753834e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00012346361472737044\n", + "Grad _memory_unit.bias_hh_l0: 6.546432268805802e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0481475328560919e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002298048639204353\n", + "Grad _memory_unit.bias_hh_l1: 0.00012349900498520583\n", + "Data X Sample: tensor([[1.6008, 1.9051, 2.0796, 2.1231, 2.1889, 2.1657, 2.2771, 2.3523, 2.4264,\n", + " 2.3901, 2.3634, 2.4091, 2.4234, 2.2684, 2.2268, 2.2879, 2.2516, 2.2497,\n", + " 2.4656, 2.3563, 2.3555, 2.4893, 2.4628, 2.5176, 2.6069, 2.4865, 2.5388,\n", + " 2.5695, 2.2376, 2.2369, 2.1907, 2.1305, 1.7644, 1.1488, 1.5908, 1.5664,\n", + " 1.4808, 1.4338, 1.3945, 1.3476, 1.2361, 0.7408, 0.7599, 1.4122, 1.9147,\n", + " 2.1386, 1.4346, 1.9548]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1742, -0.4394, 0.6787, 0.8095, 0.0374, 0.1968, -0.5125, 0.1614,\n", + " -0.3383, -0.3418, -0.5125, 0.1187, -0.6418, -0.8888, 0.2510, 0.7139,\n", + " 0.4842, -0.0312, -0.0356, 0.6635, 0.2821, -0.1051, 0.6935, -0.2016,\n", + " -1.0008, 0.2210, 1.4410, -0.0165, -0.3011, -0.0394, -0.2605, 0.4418,\n", + " 0.4162, -1.6914, 1.0939, -0.1186, -0.0333, -0.0920, 0.5660, 0.0949,\n", + " 1.4822, -0.0120, 0.9895]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.6154, 0.5110, 0.2402, 0.4947, 0.1410, -0.2549, -0.5598, -0.6061,\n", + " -0.2554, -0.4372, -0.3764, 0.2432, 0.2261, 0.4463, 0.3779, 0.5138,\n", + " 0.3308, 0.1715, 0.1638, 0.1954, 0.1849, 0.0925, 0.1253, 0.1453,\n", + " 0.2414, 0.0804, 0.0416, 0.2430, 0.2941, 0.4835, 0.4180, 0.2875,\n", + " 0.4164, 0.4524, 0.2878, 0.3430, -0.1242, -0.0362, 0.0777, -0.4368,\n", + " -0.4332, -0.4364, -0.4147]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006187139661051333\n", + "Grad encoder.fc1.bias: 0.00032777065644040704\n", + "Grad encoder.encoder.0.weight: 0.0002444681595079601\n", + "Grad encoder.encoder.0.bias: 0.0005452318000607193\n", + "Grad encoder.encoder.2.weight: 0.00015560959582217038\n", + "Grad encoder.encoder.2.bias: 0.0007492752047255635\n", + "Grad encoder.encoder.4.weight: 0.00042377907084301114\n", + "Grad encoder.encoder.4.bias: 0.002219094429165125\n", + "Grad decoder.fc1.0.weight: 0.00014656130224466324\n", + "Grad decoder.fc1.0.bias: 0.0013100110227242112\n", + "Grad decoder.fc1.2.weight: 0.00017617983394302428\n", + "Grad decoder.fc1.2.bias: 0.0013417265145108104\n", + "Grad decoder.fc1.4.weight: 0.00015183021605480462\n", + "Grad decoder.fc1.4.bias: 0.0015078767901286483\n", + "Grad decoder.fc2.weight: 0.00028138543711975217\n", + "Grad decoder.fc2.bias: 0.002724875696003437\n", + "Grad _memory_unit.weight_ih_l0: 7.769894727971405e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0003005569742526859\n", + "Grad _memory_unit.bias_hh_l0: 0.00015703574172221124\n", + "Grad _memory_unit.weight_ih_l1: 2.1357376681407914e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0005680933827534318\n", + "Grad _memory_unit.bias_hh_l1: 0.0003065356577280909\n", + "Data X Sample: tensor([[2.7126, 3.0412, 3.0383, 2.6610, 2.8497, 3.2515, 3.8409, 3.9607, 4.0301,\n", + " 3.9382, 4.2319, 4.0742, 3.8238, 3.6835, 3.6845, 3.4120, 3.3759, 3.4354,\n", + " 3.4073, 3.5093, 3.4547, 3.2256, 2.8436, 2.8497, 2.7364, 2.6537, 2.7785,\n", + " 2.7938, 2.6574, 2.8526, 2.8801, 2.8324, 3.1307, 2.3686, 3.7993, 4.2418,\n", + " 4.4777, 4.8288, 5.4510, 5.3565, 1.9234, 1.1650, 1.0994, 1.8428, 2.5688,\n", + " 2.5160, 1.6521, 2.4161]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3865, -0.0320, -0.1597, -0.0323, -0.1838, 1.0379, 0.2678, 0.1168,\n", + " 0.6914, 0.0719, 0.0802, -0.9001, -0.4797, -0.2989, 0.8317, -0.9673,\n", + " -0.0611, 5.3402, -0.3221, -0.4537, -1.0518, 0.4841, -0.6269, -0.1492,\n", + " 0.4584, -0.1000, 0.4190, -0.4187, -0.3226, -0.1388, 0.4201, -1.4229,\n", + " -0.3152, 0.1742, 0.7733, -0.3559, 0.7316, 0.8870, -0.0231, 0.1371,\n", + " 0.0568, 0.1035, -0.1407]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3798, -0.3661, -0.1247, -0.3580, -0.1655, -0.0159, 0.2172, 0.3326,\n", + " 0.2673, 0.2374, 0.3125, -0.1056, -0.1619, -0.1776, -0.1636, -0.3626,\n", + " -0.2739, -0.2052, -0.0633, -0.1422, -0.2184, -0.1257, -0.0845, -0.0213,\n", + " -0.0781, 0.0951, 0.1140, -0.0186, -0.0679, -0.2739, -0.1835, -0.3108,\n", + " -0.2238, -0.2942, -0.1541, -0.1517, 0.0309, -0.0152, -0.0630, 0.3594,\n", + " 0.4109, 0.3937, 0.3485]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.001066052820533514\n", + "Grad encoder.fc1.bias: 0.0007918748306110501\n", + "Grad encoder.encoder.0.weight: 0.0002299607003806159\n", + "Grad encoder.encoder.0.bias: 0.0007284417515620589\n", + "Grad encoder.encoder.2.weight: 0.00011790527787525207\n", + "Grad encoder.encoder.2.bias: 0.0008111574570648372\n", + "Grad encoder.encoder.4.weight: 0.00029885422554798424\n", + "Grad encoder.encoder.4.bias: 0.002118993317708373\n", + "Grad decoder.fc1.0.weight: 8.978049299912527e-05\n", + "Grad decoder.fc1.0.bias: 0.0009851552313193679\n", + "Grad decoder.fc1.2.weight: 0.00010238562390441075\n", + "Grad decoder.fc1.2.bias: 0.0008986854227259755\n", + "Grad decoder.fc1.4.weight: 9.209632116835564e-05\n", + "Grad decoder.fc1.4.bias: 0.0008931225165724754\n", + "Grad decoder.fc2.weight: 0.0002082552673527971\n", + "Grad decoder.fc2.bias: 0.0019907038658857346\n", + "Grad _memory_unit.weight_ih_l0: 2.811822560033761e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00017434386245440692\n", + "Grad _memory_unit.bias_hh_l0: 9.20341262826696e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.258056545339059e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.000329517264617607\n", + "Grad _memory_unit.bias_hh_l1: 0.00017787996330298483\n", + "Data X Sample: tensor([[1.3441, 1.4419, 1.6529, 1.8039, 2.0199, 2.2025, 2.1092, 2.2813, 3.9398,\n", + " 4.2937, 4.3778, 4.2650, 3.9836, 3.9043, 3.7980, 3.7197, 3.6558, 3.6057,\n", + " 3.6303, 3.6283, 3.5651, 3.2915, 3.0122, 2.8688, 2.9466, 3.0220, 3.2207,\n", + " 3.1935, 3.1500, 3.3308, 3.3595, 3.5039, 3.9337, 2.8034, 4.6106, 5.0055,\n", + " 5.1109, 5.5046, 6.0595, 5.8814, 1.0070, 0.5875, 0.5922, 1.0477, 1.5777,\n", + " 1.7383, 1.1966, 1.8453]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0580, -0.1362, 0.7904, 0.0650, -0.3747, 0.0170, -0.2331, 0.6662,\n", + " -0.8406, -0.7002, -0.9494, -0.2567, 0.1175, -1.6651, 0.5073, -1.0775,\n", + " -0.3828, 0.0032, 1.1299, 0.0359, 0.7405, 0.9603, 0.6129, 0.7021,\n", + " 0.3623, 0.3729, -0.6417, 0.6552, 0.7597, 0.8875, -0.1381, -0.2629,\n", + " 1.5405, -0.9484, -0.1845, 0.2781, -0.6417, -0.7806, -0.4768, -0.5992,\n", + " 0.5653, 0.2249, -1.0031]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2208, -0.2064, -0.0564, -0.0872, -0.0495, 0.0933, 0.1709, 0.2463,\n", + " 0.1942, 0.2094, 0.2276, -0.1612, -0.1164, -0.1700, -0.1754, -0.2691,\n", + " -0.2046, -0.0724, -0.1161, -0.1489, -0.1065, -0.1162, -0.0135, -0.0262,\n", + " -0.1092, 0.0352, -0.0366, -0.0955, -0.1554, -0.1598, -0.2414, -0.1858,\n", + " -0.2394, -0.2285, -0.1247, -0.1447, 0.0038, -0.0149, -0.0313, 0.2782,\n", + " 0.2965, 0.2617, 0.1893]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000303181674098596\n", + "Grad encoder.fc1.bias: 0.00021162076154723763\n", + "Grad encoder.encoder.0.weight: 8.667261863593012e-05\n", + "Grad encoder.encoder.0.bias: 0.00018823481514118612\n", + "Grad encoder.encoder.2.weight: 5.702405542251654e-05\n", + "Grad encoder.encoder.2.bias: 0.0002572365337982774\n", + "Grad encoder.encoder.4.weight: 0.00013842256157658994\n", + "Grad encoder.encoder.4.bias: 0.0006619879277423024\n", + "Grad decoder.fc1.0.weight: 5.519805563380942e-05\n", + "Grad decoder.fc1.0.bias: 0.0004988859873265028\n", + "Grad decoder.fc1.2.weight: 7.046051905490458e-05\n", + "Grad decoder.fc1.2.bias: 0.0005798788624815643\n", + "Grad decoder.fc1.4.weight: 7.401548646157607e-05\n", + "Grad decoder.fc1.4.bias: 0.0008054807549342513\n", + "Grad decoder.fc2.weight: 0.00018052289669867605\n", + "Grad decoder.fc2.bias: 0.0018798981327563524\n", + "Grad _memory_unit.weight_ih_l0: 2.1350206225179136e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.15229577710852e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.291503501008265e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.882972229504958e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001663631701376289\n", + "Grad _memory_unit.bias_hh_l1: 8.874551713233814e-05\n", + "Data X Sample: tensor([[1.9360, 2.4513, 2.8174, 2.8425, 2.9061, 3.0953, 3.1445, 3.2793, 3.3393,\n", + " 3.3443, 3.4451, 3.5152, 3.3089, 3.2527, 3.3819, 3.2712, 3.2627, 3.2981,\n", + " 3.2689, 3.2898, 3.0793, 3.1353, 2.9158, 2.8249, 2.6107, 2.6014, 2.3656,\n", + " 2.3493, 2.1023, 2.0732, 1.8792, 1.8487, 1.6676, 1.1053, 1.6888, 1.8388,\n", + " 2.0569, 2.3243, 2.5544, 2.6329, 1.6800, 0.9380, 0.9600, 1.8772, 2.3666,\n", + " 2.8076, 1.8425, 2.8540]], device='cuda:0')\n", + "Data Y Sample: tensor([[-6.7307e-02, 1.4396e-01, 3.7743e-01, -1.7137e-01, -1.4349e-01,\n", + " 3.0005e-01, 6.0221e-01, 1.0579e-01, 2.9851e-02, 1.2438e-02,\n", + " 4.6681e-02, 8.9837e-01, 2.1359e-01, 5.0788e-01, -1.2054e+00,\n", + " 8.5284e-01, -1.5243e+00, 4.0253e+00, -2.1832e+00, -1.1192e+00,\n", + " -5.7042e-01, -1.9976e-01, -4.1422e-01, -2.9231e-01, -2.0728e-01,\n", + " -1.5434e+00, 5.8610e-02, -1.4344e-01, -7.7907e-01, -2.8022e-01,\n", + " -5.3517e-01, -8.6243e-01, -2.2376e-01, -6.2920e-01, 5.1332e-01,\n", + " 1.5166e+00, -1.0781e-03, 7.9659e-01, 7.5508e-01, 1.7519e-01,\n", + " 4.1875e-02, 3.7997e-01, -1.0614e+00]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.4120, -0.4293, -0.1424, -0.4101, -0.2069, -0.0139, 0.2346, 0.3469,\n", + " 0.3079, 0.2575, 0.3469, -0.1067, -0.1787, -0.1974, -0.1831, -0.4039,\n", + " -0.3130, -0.2324, -0.0724, -0.1735, -0.2418, -0.1452, -0.1050, -0.0359,\n", + " -0.0756, 0.0754, 0.1190, -0.0507, -0.0665, -0.2969, -0.2101, -0.3216,\n", + " -0.2195, -0.3104, -0.1590, -0.1599, 0.0301, -0.0181, -0.0701, 0.4111,\n", + " 0.4303, 0.4222, 0.3507]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00013741137809120119\n", + "Grad encoder.fc1.bias: 0.00048130707000382245\n", + "Grad encoder.encoder.0.weight: 4.8680725740268826e-05\n", + "Grad encoder.encoder.0.bias: 0.00041371386032551527\n", + "Grad encoder.encoder.2.weight: 3.6331621231511235e-05\n", + "Grad encoder.encoder.2.bias: 0.00032642684527672827\n", + "Grad encoder.encoder.4.weight: 9.225576650351286e-05\n", + "Grad encoder.encoder.4.bias: 0.0006358502432703972\n", + "Grad decoder.fc1.0.weight: 4.3870888475794345e-05\n", + "Grad decoder.fc1.0.bias: 0.00035069260047748685\n", + "Grad decoder.fc1.2.weight: 6.0568614571820945e-05\n", + "Grad decoder.fc1.2.bias: 0.00042719999328255653\n", + "Grad decoder.fc1.4.weight: 6.14353411947377e-05\n", + "Grad decoder.fc1.4.bias: 0.0005821650847792625\n", + "Grad decoder.fc2.weight: 0.0001648634934099391\n", + "Grad decoder.fc2.bias: 0.0018799003446474671\n", + "Grad _memory_unit.weight_ih_l0: 1.6096597391879186e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.2617739129345864e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.9270097002154216e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.916177310107742e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010789453517645597\n", + "Grad _memory_unit.bias_hh_l1: 5.863669503014535e-05\n", + "Data X Sample: tensor([[1.5456, 1.7099, 1.8903, 1.9657, 2.0728, 2.0788, 2.1754, 2.2458, 2.3141,\n", + " 2.3633, 2.3761, 2.3000, 2.3302, 2.2439, 2.1890, 2.2004, 2.1777, 2.1916,\n", + " 2.3231, 2.3414, 2.3555, 2.5291, 2.3929, 2.4565, 2.4887, 2.5701, 2.5334,\n", + " 2.5695, 2.4041, 2.4498, 2.4322, 2.3682, 2.2374, 1.4463, 1.9854, 1.8461,\n", + " 1.7030, 1.5292, 1.6100, 1.5746, 1.2218, 0.7249, 0.7255, 1.2343, 1.8473,\n", + " 2.0128, 1.3326, 1.8922]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7702, -0.2257, 0.7306, -1.5088, 0.6500, 0.7364, 1.1275, -0.7736,\n", + " 0.3637, 0.3052, 0.3442, 0.5783, -0.2526, -0.4422, -0.2222, 0.5856,\n", + " -0.3809, -1.0686, -1.3815, -0.6331, -1.6018, -0.8721, -0.8283, -1.7125,\n", + " -0.1713, 0.2493, -0.4532, 0.5109, -0.4691, 0.2044, -0.0753, -0.1885,\n", + " 0.5866, -1.5228, 0.1056, -0.7327, -0.4229, 0.0940, -0.9499, 0.1427,\n", + " 0.1504, -0.8586, 0.5513]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5464, 0.4777, 0.2607, 0.4532, 0.1253, -0.2375, -0.5146, -0.5567,\n", + " -0.2155, -0.3772, -0.3720, 0.2024, 0.2668, 0.4299, 0.3662, 0.4887,\n", + " 0.3402, 0.1959, 0.1249, 0.1815, 0.1200, 0.0812, 0.1047, 0.0822,\n", + " 0.2169, 0.0549, 0.0744, 0.1786, 0.2640, 0.4499, 0.3723, 0.2897,\n", + " 0.3460, 0.4505, 0.3111, 0.2849, -0.1176, -0.0131, 0.0668, -0.4077,\n", + " -0.3990, -0.4110, -0.4260]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003489219525363296\n", + "Grad encoder.fc1.bias: 0.0003231012378819287\n", + "Grad encoder.encoder.0.weight: 0.00011640101729426533\n", + "Grad encoder.encoder.0.bias: 0.0003670027363114059\n", + "Grad encoder.encoder.2.weight: 8.121751307044178e-05\n", + "Grad encoder.encoder.2.bias: 0.00043074460700154305\n", + "Grad encoder.encoder.4.weight: 0.00022060021001379937\n", + "Grad encoder.encoder.4.bias: 0.0010031990241259336\n", + "Grad decoder.fc1.0.weight: 7.452203863067552e-05\n", + "Grad decoder.fc1.0.bias: 0.0005826510023325682\n", + "Grad decoder.fc1.2.weight: 0.00010558009671512991\n", + "Grad decoder.fc1.2.bias: 0.00093796756118536\n", + "Grad decoder.fc1.4.weight: 8.895275095710531e-05\n", + "Grad decoder.fc1.4.bias: 0.0009819942060858011\n", + "Grad decoder.fc2.weight: 0.00016547665291000158\n", + "Grad decoder.fc2.bias: 0.0020231339149177074\n", + "Grad _memory_unit.weight_ih_l0: 2.5216468202415854e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.876351547660306e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.1672978618880734e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.960028364730533e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011053397611249238\n", + "Grad _memory_unit.bias_hh_l1: 5.8724759583128616e-05\n", + "Data X Sample: tensor([[1.5202, 1.7667, 1.9249, 1.9788, 2.0916, 2.1731, 2.2093, 2.2586, 2.3141,\n", + " 2.4091, 2.3253, 2.3584, 2.2259, 2.1594, 2.1991, 2.2797, 2.2076, 2.2961,\n", + " 2.3293, 2.3916, 2.4242, 2.4740, 2.5230, 2.4660, 2.5281, 2.5231, 2.5734,\n", + " 2.5002, 2.4458, 2.4105, 2.3797, 2.3709, 2.1560, 1.3960, 1.8678, 1.7585,\n", + " 1.5968, 1.4709, 1.5656, 1.5831, 1.2552, 0.7329, 0.7255, 1.2831, 1.8671,\n", + " 1.9270, 1.2986, 1.9079]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.3082, 1.1882, 0.9614, -0.3836, 0.3754, 0.3415, -0.8642, -1.0107,\n", + " -0.5968, -0.9879, -0.9256, 1.5735, 0.0435, 1.0572, 0.2179, 0.1215,\n", + " 0.7701, 0.0761, 0.4365, -0.4508, -0.1134, -0.4189, -0.3418, -0.3249,\n", + " 0.1796, 0.0313, -0.9829, -0.2561, -0.0260, 0.0190, 1.1320, 0.9985,\n", + " 0.3585, 0.8480, 1.3928, -0.4289, -0.6687, -0.0597, -0.7367, -0.9291,\n", + " -0.9058, -0.6203, -1.0248]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4928, 0.4315, 0.2463, 0.4080, 0.1071, -0.2116, -0.4693, -0.5015,\n", + " -0.1999, -0.3448, -0.3448, 0.1764, 0.2487, 0.3875, 0.3277, 0.4470,\n", + " 0.3084, 0.1819, 0.1058, 0.1615, 0.0934, 0.0655, 0.0896, 0.0715,\n", + " 0.1851, 0.0433, 0.0706, 0.1530, 0.2401, 0.4049, 0.3284, 0.2656,\n", + " 0.3035, 0.4049, 0.2919, 0.2555, -0.0978, -0.0086, 0.0561, -0.3678,\n", + " -0.3574, -0.3714, -0.3902]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001748618669807911\n", + "Grad encoder.fc1.bias: 0.00029951459146104753\n", + "Grad encoder.encoder.0.weight: 5.9856476582353935e-05\n", + "Grad encoder.encoder.0.bias: 0.0004838713211938739\n", + "Grad encoder.encoder.2.weight: 4.085362161276862e-05\n", + "Grad encoder.encoder.2.bias: 0.00048637427971698344\n", + "Grad encoder.encoder.4.weight: 8.98498619790189e-05\n", + "Grad encoder.encoder.4.bias: 0.0010161579120904207\n", + "Grad decoder.fc1.0.weight: 4.36750560766086e-05\n", + "Grad decoder.fc1.0.bias: 0.0005456723738461733\n", + "Grad decoder.fc1.2.weight: 5.2636176405940205e-05\n", + "Grad decoder.fc1.2.bias: 0.0005448008887469769\n", + "Grad decoder.fc1.4.weight: 5.020617390982807e-05\n", + "Grad decoder.fc1.4.bias: 0.0005308702820912004\n", + "Grad decoder.fc2.weight: 0.00013159606896806508\n", + "Grad decoder.fc2.bias: 0.0016471242997795343\n", + "Grad _memory_unit.weight_ih_l0: 1.2064017937518656e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00011260737664997578\n", + "Grad _memory_unit.bias_hh_l0: 5.937535752309486e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.503673259634525e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00020548171596601605\n", + "Grad _memory_unit.bias_hh_l1: 0.00011016957432730123\n", + "Data X Sample: tensor([[1.6305, 1.8410, 1.9775, 2.0925, 2.1599, 2.2600, 2.3464, 2.3977, 2.4190,\n", + " 2.4912, 2.4649, 2.4577, 2.3591, 2.3366, 2.4261, 2.3235, 2.3491, 2.3696,\n", + " 2.3830, 2.4195, 2.4953, 2.4648, 2.4146, 2.4279, 2.5224, 2.4944, 2.5281,\n", + " 2.4798, 2.1301, 2.1649, 2.0472, 1.9039, 1.6522, 1.0481, 1.4928, 1.4423,\n", + " 1.4237, 1.3861, 1.4008, 1.3363, 1.2695, 0.7767, 0.7437, 1.3319, 1.9742,\n", + " 2.1272, 1.3802, 1.9470]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1384, 0.0944, 0.1602, 0.4743, 0.0802, -0.5199, -0.7088, -0.1847,\n", + " -0.4107, -0.2171, -0.1209, -0.6942, -0.4318, -1.8987, -0.7171, -0.0196,\n", + " 0.2976, 0.1638, -0.2688, -0.3389, 1.0017, -0.9728, -0.0494, -0.3590,\n", + " -0.9502, -0.9389, -1.0514, 0.5338, -0.2920, -0.4578, -0.6147, 0.0806,\n", + " 2.0011, 0.7544, 1.4423, -0.6151, 0.0540, 0.4351, 0.7551, -0.4000,\n", + " -0.1687, -0.0698, 0.5455]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3385, 0.3017, 0.1998, 0.2575, 0.0517, -0.1239, -0.3363, -0.3350,\n", + " -0.1553, -0.2484, -0.2434, 0.1004, 0.1894, 0.2737, 0.2120, 0.3180,\n", + " 0.2180, 0.1365, 0.0668, 0.1017, 0.0304, 0.0331, 0.0484, 0.0572,\n", + " 0.1205, 0.0270, 0.0450, 0.0897, 0.1722, 0.2841, 0.2145, 0.1840,\n", + " 0.1921, 0.2623, 0.2156, 0.1497, -0.0552, 0.0066, 0.0295, -0.2417,\n", + " -0.2351, -0.2399, -0.2563]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00045568187488242984\n", + "Grad encoder.fc1.bias: 0.0004161708347965032\n", + "Grad encoder.encoder.0.weight: 9.715995838632807e-05\n", + "Grad encoder.encoder.0.bias: 0.0003548411186784506\n", + "Grad encoder.encoder.2.weight: 6.165385275380686e-05\n", + "Grad encoder.encoder.2.bias: 0.00037706081639043987\n", + "Grad encoder.encoder.4.weight: 0.00011806209658971056\n", + "Grad encoder.encoder.4.bias: 0.0006264219991862774\n", + "Grad decoder.fc1.0.weight: 4.7654037189204246e-05\n", + "Grad decoder.fc1.0.bias: 0.0003910026862286031\n", + "Grad decoder.fc1.2.weight: 5.8583846112014726e-05\n", + "Grad decoder.fc1.2.bias: 0.00044671521754935384\n", + "Grad decoder.fc1.4.weight: 5.558194243349135e-05\n", + "Grad decoder.fc1.4.bias: 0.0005458295927383006\n", + "Grad decoder.fc2.weight: 0.0001270012289751321\n", + "Grad decoder.fc2.bias: 0.0015730296727269888\n", + "Grad _memory_unit.weight_ih_l0: 1.744558358041104e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.141261135577224e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.8998480047448538e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.401644325000234e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011190888471901417\n", + "Grad _memory_unit.bias_hh_l1: 6.159376789582893e-05\n", + "Data X Sample: tensor([[1.6040, 1.6852, 1.8903, 2.0072, 2.1531, 2.2644, 2.4558, 2.3892, 2.4971,\n", + " 2.6018, 2.5252, 2.4889, 2.5810, 2.4756, 2.4715, 2.4370, 2.3711, 2.4122,\n", + " 2.4388, 2.4176, 2.4192, 2.4984, 2.4965, 2.4240, 2.4342, 2.4578, 2.4535,\n", + " 2.4186, 2.3313, 2.3352, 2.3797, 2.2742, 2.2792, 1.5035, 1.9315, 1.7561,\n", + " 1.6204, 1.4868, 1.5846, 1.5661, 1.3554, 0.6791, 0.7114, 1.2314, 1.8156,\n", + " 1.9899, 1.3122, 1.8844]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4117, 1.9602, -0.0569, 0.2284, 0.5703, -0.5282, 1.3827, -0.1776,\n", + " 0.6968, 0.7614, 0.5045, -0.4016, -0.4180, 0.6267, 0.7745, 0.1181,\n", + " -0.0504, 0.4959, 0.4878, 0.8930, 0.6495, 0.0861, 0.7880, 1.0599,\n", + " -0.3306, 1.5031, -0.4730, -0.6374, -0.9191, 0.7609, -0.9262, 0.2272,\n", + " -0.4795, -0.2815, 0.7608, -0.0209, -0.4229, 0.0940, -0.2265, -0.2418,\n", + " 0.0139, -0.9322, -0.2953]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3800, 0.3332, 0.2158, 0.3038, 0.0728, -0.1537, -0.3744, -0.3870,\n", + " -0.1666, -0.2686, -0.2877, 0.1246, 0.2104, 0.3011, 0.2484, 0.3510,\n", + " 0.2483, 0.1501, 0.0704, 0.1208, 0.0513, 0.0480, 0.0591, 0.0445,\n", + " 0.1290, 0.0160, 0.0672, 0.0997, 0.1933, 0.3148, 0.2462, 0.2168,\n", + " 0.2158, 0.3121, 0.2541, 0.1957, -0.0697, 0.0078, 0.0340, -0.2924,\n", + " -0.2709, -0.2842, -0.3073]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00047902530059218407\n", + "Grad encoder.fc1.bias: 0.0002322127838851884\n", + "Grad encoder.encoder.0.weight: 0.0001229480840265751\n", + "Grad encoder.encoder.0.bias: 0.00025383319007232785\n", + "Grad encoder.encoder.2.weight: 8.553253428544849e-05\n", + "Grad encoder.encoder.2.bias: 0.00030075007816776633\n", + "Grad encoder.encoder.4.weight: 0.00020999900880269706\n", + "Grad encoder.encoder.4.bias: 0.0007576091447845101\n", + "Grad decoder.fc1.0.weight: 8.682414045324549e-05\n", + "Grad decoder.fc1.0.bias: 0.000591954798437655\n", + "Grad decoder.fc1.2.weight: 0.00011288069072179496\n", + "Grad decoder.fc1.2.bias: 0.0009984513744711876\n", + "Grad decoder.fc1.4.weight: 0.00010162948456127197\n", + "Grad decoder.fc1.4.bias: 0.0010919752530753613\n", + "Grad decoder.fc2.weight: 0.00017628236673772335\n", + "Grad decoder.fc2.bias: 0.0026118955574929714\n", + "Grad _memory_unit.weight_ih_l0: 3.7286270526237786e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.269290265161544e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.376432843855582e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.2039830835419707e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.000168875019880943\n", + "Grad _memory_unit.bias_hh_l1: 8.910122414818034e-05\n", + "Data X Sample: tensor([[1.3801, 1.8585, 2.0962, 2.2696, 2.4143, 2.5001, 2.5113, 2.7072, 2.5728,\n", + " 2.7550, 2.8487, 2.7323, 2.5988, 2.5874, 2.6026, 2.6230, 2.5300, 2.6636,\n", + " 2.6205, 2.6464, 2.6646, 2.7051, 2.6411, 2.5596, 2.4793, 2.4029, 2.2990,\n", + " 2.2310, 1.9254, 1.8701, 1.8057, 1.7575, 1.4388, 0.9589, 1.3898, 1.3426,\n", + " 1.4395, 1.4762, 1.6860, 1.6796, 1.3697, 0.7906, 0.8023, 1.4065, 2.0495,\n", + " 2.3159, 1.5162, 2.1503]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0495, 1.0148, 0.4889, -1.1863, -0.0621, 1.4894, -0.1342, -0.0689,\n", + " -0.2893, -0.4852, -0.6201, 0.0467, -0.0244, -0.5601, -0.4340, -0.3922,\n", + " -0.1059, 0.2103, -0.8422, 0.0928, 0.5092, 0.6843, -0.0642, 0.5914,\n", + " -0.0572, 1.0165, -0.0080, 0.0288, -0.1531, -0.3294, 1.0903, -0.5099,\n", + " 0.8514, 0.2345, 0.7330, 0.8284, 0.0501, 0.0940, 0.7285, -0.3758,\n", + " -0.4632, -0.1093, 0.3932]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1835, -0.2042, -0.0542, -0.1121, -0.1215, 0.0476, 0.1144, 0.1931,\n", + " 0.1511, 0.1059, 0.2114, -0.0866, -0.0993, -0.1378, -0.1307, -0.1921,\n", + " -0.1445, -0.0423, -0.0756, -0.1190, -0.1028, -0.0587, -0.0272, -0.0200,\n", + " -0.0304, 0.0430, -0.0045, -0.0866, -0.1027, -0.1377, -0.1973, -0.1700,\n", + " -0.1473, -0.1625, -0.0428, -0.1346, -0.0294, 0.0002, -0.0017, 0.2147,\n", + " 0.2230, 0.2297, 0.1545]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002660809550434351\n", + "Grad encoder.fc1.bias: 0.0001950022706296295\n", + "Grad encoder.encoder.0.weight: 6.84823899064213e-05\n", + "Grad encoder.encoder.0.bias: 0.00015600424376316369\n", + "Grad encoder.encoder.2.weight: 6.376774399541318e-05\n", + "Grad encoder.encoder.2.bias: 0.00030010222690179944\n", + "Grad encoder.encoder.4.weight: 0.00012904606410302222\n", + "Grad encoder.encoder.4.bias: 0.0005781002109870315\n", + "Grad decoder.fc1.0.weight: 5.376929766498506e-05\n", + "Grad decoder.fc1.0.bias: 0.00040135555900633335\n", + "Grad decoder.fc1.2.weight: 8.166846237145364e-05\n", + "Grad decoder.fc1.2.bias: 0.0006250087171792984\n", + "Grad decoder.fc1.4.weight: 6.681839295197278e-05\n", + "Grad decoder.fc1.4.bias: 0.0006471368251368403\n", + "Grad decoder.fc2.weight: 0.0001257269614143297\n", + "Grad decoder.fc2.bias: 0.001664738287217915\n", + "Grad _memory_unit.weight_ih_l0: 2.159446376026608e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.540279719047248e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.420989742153324e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.364005457726307e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00012629137199837714\n", + "Grad _memory_unit.bias_hh_l1: 6.699000368826091e-05\n", + "Data X Sample: tensor([[2.5768, 2.9392, 3.2772, 3.2558, 3.4661, 3.5314, 3.7068, 3.7052, 3.8690,\n", + " 3.7787, 3.9051, 3.8424, 3.8238, 3.6807, 3.5710, 3.6637, 3.6133, 3.5012,\n", + " 3.4589, 3.2973, 3.2756, 3.2425, 3.0339, 2.7981, 2.7270, 2.7294, 2.7412,\n", + " 2.8061, 2.6678, 2.7184, 2.6526, 2.8131, 2.8447, 2.0734, 3.4169, 3.7846,\n", + " 4.1591, 4.5054, 4.9250, 4.8912, 1.8900, 1.1311, 1.1237, 1.9232, 2.8463,\n", + " 3.1507, 2.0261, 2.9948]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0082, -0.3764, -2.3161, -0.5584, 0.2673, 0.3174, 0.4172, 0.3748,\n", + " 1.2634, 0.0980, 0.0348, 0.3309, -0.7115, -0.3324, -1.2285, 1.4243,\n", + " -0.5369, 1.6470, -1.5609, -0.4462, -2.1472, 0.4889, -1.0041, 0.3921,\n", + " -0.4877, -1.6372, -0.0344, -0.6758, -0.9243, -0.1587, -0.2348, 0.3346,\n", + " 0.1321, 0.0324, -0.2057, -0.4495, -0.6348, 0.0533, -1.1505, -0.1096,\n", + " 0.0679, 0.0318, 0.1279]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2314, -0.2797, -0.1014, -0.1232, -0.1692, 0.0449, 0.1169, 0.2315,\n", + " 0.1456, 0.1334, 0.2517, -0.1497, -0.1605, -0.2121, -0.1529, -0.2247,\n", + " -0.1647, -0.0651, -0.1669, -0.1188, -0.1146, -0.0934, -0.0716, -0.0527,\n", + " 0.0197, 0.0701, 0.0165, -0.1442, -0.1064, -0.1533, -0.2627, -0.2218,\n", + " -0.1540, -0.1857, -0.0242, -0.1302, -0.0728, -0.0277, 0.0199, 0.2803,\n", + " 0.2126, 0.2918, 0.1551]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0010341955348849297\n", + "Grad encoder.fc1.bias: 0.0006561654736287892\n", + "Grad encoder.encoder.0.weight: 0.00022602980607189238\n", + "Grad encoder.encoder.0.bias: 0.0005346406833268702\n", + "Grad encoder.encoder.2.weight: 0.0001360623282380402\n", + "Grad encoder.encoder.2.bias: 0.000653567723929882\n", + "Grad encoder.encoder.4.weight: 0.0002613515534903854\n", + "Grad encoder.encoder.4.bias: 0.001060734735801816\n", + "Grad decoder.fc1.0.weight: 0.00011486079165479168\n", + "Grad decoder.fc1.0.bias: 0.000748423277400434\n", + "Grad decoder.fc1.2.weight: 0.0001249243796337396\n", + "Grad decoder.fc1.2.bias: 0.0009075126145035028\n", + "Grad decoder.fc1.4.weight: 0.00011548120528459549\n", + "Grad decoder.fc1.4.bias: 0.0009815129451453686\n", + "Grad decoder.fc2.weight: 0.00019556008919607848\n", + "Grad decoder.fc2.bias: 0.0022411984391510487\n", + "Grad _memory_unit.weight_ih_l0: 3.5545381251722574e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.8577389204874635e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.3187843908090144e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.526411870145239e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00013292109360918403\n", + "Grad _memory_unit.bias_hh_l1: 7.046840619295835e-05\n", + "Data X Sample: tensor([[1.4958, 1.9575, 2.3140, 2.3702, 2.5099, 2.5001, 2.4450, 2.6007, 2.7071,\n", + " 2.6508, 2.7377, 2.7596, 2.6653, 2.6883, 2.5370, 2.5751, 2.5944, 2.6404,\n", + " 2.7568, 2.7896, 2.7701, 2.8506, 2.7423, 2.6932, 2.4962, 2.4186, 2.3816,\n", + " 2.3819, 1.8629, 1.9258, 1.7638, 1.7575, 1.4784, 0.9726, 1.3824, 1.4545,\n", + " 1.4355, 1.5371, 1.7367, 1.7477, 1.4461, 0.8006, 0.8549, 1.4725, 2.0931,\n", + " 2.2873, 1.5842, 2.4083]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4033, 0.2540, 1.6381, -0.4506, -0.8340, 0.7328, 0.7900, 0.4724,\n", + " -0.3115, -0.4159, -0.3911, 1.1936, 0.2460, -0.7359, 0.0894, 0.0064,\n", + " 1.2192, -0.3487, -1.0024, -0.0450, -0.2050, 0.0731, 0.0194, -0.3932,\n", + " 0.2819, -0.3120, 0.3985, 0.5324, -0.4716, 0.0146, -1.1179, 0.5634,\n", + " -0.6786, -0.0469, -0.9211, -0.2215, 0.2642, -0.0920, 0.5660, 0.4362,\n", + " -0.0453, -0.0540, 0.5544]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2184, -0.2552, -0.0824, -0.1304, -0.1216, 0.0633, 0.1376, 0.2394,\n", + " 0.1773, 0.1313, 0.2380, -0.1168, -0.1333, -0.1942, -0.1531, -0.2361,\n", + " -0.1472, -0.0464, -0.1041, -0.1341, -0.1188, -0.0607, -0.0418, -0.0180,\n", + " -0.0094, 0.0458, -0.0110, -0.1155, -0.1229, -0.1760, -0.2379, -0.2080,\n", + " -0.1718, -0.1890, -0.0514, -0.1353, -0.0414, -0.0039, 0.0123, 0.2501,\n", + " 0.2385, 0.2884, 0.1872]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.002562181558459997\n", + "Grad encoder.fc1.bias: 0.0014863264514133334\n", + "Grad encoder.encoder.0.weight: 0.0006604068912565708\n", + "Grad encoder.encoder.0.bias: 0.0016346573829650879\n", + "Grad encoder.encoder.2.weight: 0.0003371897037141025\n", + "Grad encoder.encoder.2.bias: 0.0019582281820476055\n", + "Grad encoder.encoder.4.weight: 0.0008269056561402977\n", + "Grad encoder.encoder.4.bias: 0.0053377351723611355\n", + "Grad decoder.fc1.0.weight: 0.00018188334070146084\n", + "Grad decoder.fc1.0.bias: 0.0019619097001850605\n", + "Grad decoder.fc1.2.weight: 0.00013948624837212265\n", + "Grad decoder.fc1.2.bias: 0.00177569012157619\n", + "Grad decoder.fc1.4.weight: 0.00010453232243889943\n", + "Grad decoder.fc1.4.bias: 0.0016624527052044868\n", + "Grad decoder.fc2.weight: 0.00016663793940097094\n", + "Grad decoder.fc2.bias: 0.0030299597419798374\n", + "Grad _memory_unit.weight_ih_l0: 4.2765455873450264e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0001731024676701054\n", + "Grad _memory_unit.bias_hh_l0: 9.137298911809921e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.6333940948243253e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0003936252905987203\n", + "Grad _memory_unit.bias_hh_l1: 0.00020555539231281728\n", + "Data X Sample: tensor([[1.4289, 1.5934, 1.6844, 1.8083, 1.9021, 2.1244, 2.1431, 1.9676, 3.1831,\n", + " 3.9303, 3.9717, 4.0644, 4.0146, 3.8034, 3.8661, 3.5351, 3.4922, 3.3948,\n", + " 3.4052, 3.3549, 3.3271, 3.2608, 2.9086, 2.7485, 2.7646, 2.7347, 2.8131,\n", + " 2.8265, 2.8725, 2.9378, 3.0586, 3.2358, 3.5201, 2.5128, 4.3214, 4.6261,\n", + " 4.9437, 5.1865, 5.6602, 5.6374, 1.2457, 0.6034, 0.6144, 1.0936, 1.4390,\n", + " 1.8012, 1.1830, 1.7046]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4994, -1.0269, 0.7932, -0.2041, -0.2193, -1.7014, 0.7624, 0.6230,\n", + " 0.1134, 0.4897, 0.5824, 0.4511, 0.7788, -0.8778, -0.6941, -0.8899,\n", + " -0.2826, 0.1250, -0.8814, -0.8366, -0.7139, -0.0821, -0.5490, 0.6163,\n", + " -0.0890, 0.1286, 0.0606, -0.5320, 0.0086, -0.1147, -0.3074, -0.0441,\n", + " -0.1925, -0.8125, -0.3527, -0.6974, -0.3740, 0.1370, 0.5686, 0.6557,\n", + " 1.0896, 0.6936, 0.0066]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3009, -0.3439, -0.0949, -0.1273, -0.0623, 0.1418, 0.2207, 0.3350,\n", + " 0.2366, 0.1786, 0.3474, -0.1790, -0.1769, -0.3204, -0.2694, -0.3705,\n", + " -0.1701, -0.0474, -0.1233, -0.1763, -0.1486, -0.0571, 0.0023, 0.0081,\n", + " -0.0572, 0.0334, -0.0707, -0.1450, -0.2355, -0.2555, -0.3528, -0.2550,\n", + " -0.3173, -0.2911, -0.1440, -0.1976, -0.0296, 0.0015, 0.0392, 0.3510,\n", + " 0.3356, 0.3797, 0.2767]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004756716953124851\n", + "Grad encoder.fc1.bias: 0.00030642125057056546\n", + "Grad encoder.encoder.0.weight: 0.00016630928439553827\n", + "Grad encoder.encoder.0.bias: 0.00043939516763202846\n", + "Grad encoder.encoder.2.weight: 0.00013097544433549047\n", + "Grad encoder.encoder.2.bias: 0.0007304231403395534\n", + "Grad encoder.encoder.4.weight: 0.0002691601403057575\n", + "Grad encoder.encoder.4.bias: 0.0018258624477311969\n", + "Grad decoder.fc1.0.weight: 0.00010947822011075914\n", + "Grad decoder.fc1.0.bias: 0.0009994514985010028\n", + "Grad decoder.fc1.2.weight: 0.00012036799307679757\n", + "Grad decoder.fc1.2.bias: 0.0010454034199938178\n", + "Grad decoder.fc1.4.weight: 8.724088547751307e-05\n", + "Grad decoder.fc1.4.bias: 0.0009213618468493223\n", + "Grad decoder.fc2.weight: 0.00015639122284483165\n", + "Grad decoder.fc2.bias: 0.002009109128266573\n", + "Grad _memory_unit.weight_ih_l0: 5.8280227676732466e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0002200665039708838\n", + "Grad _memory_unit.bias_hh_l0: 0.00011365492537152022\n", + "Grad _memory_unit.weight_ih_l1: 1.292659726459533e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0003584185033105314\n", + "Grad _memory_unit.bias_hh_l1: 0.00018861678836401552\n", + "Data X Sample: tensor([[1.4799, 1.6182, 1.7085, 1.7864, 2.0114, 2.0965, 2.1446, 2.1649, 3.7152,\n", + " 4.0314, 4.2541, 4.1852, 3.9725, 3.8525, 3.6341, 3.5693, 3.4529, 3.4683,\n", + " 3.4135, 3.3921, 3.3663, 3.3205, 2.9785, 2.8306, 2.7871, 2.7686, 2.8824,\n", + " 3.0508, 3.0494, 3.1605, 3.2371, 3.2276, 3.6059, 2.6798, 4.4023, 4.7258,\n", + " 4.8965, 5.1653, 5.7616, 5.6799, 1.1550, 0.6353, 0.6407, 1.0735, 1.6729,\n", + " 1.8527, 1.2102, 1.7124]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.9253, -1.3447, -0.3396, -0.4245, 0.1535, 1.5454, 0.6870, 0.7148,\n", + " 0.0195, 0.5621, 0.4402, -0.1740, -0.0222, -0.6456, -1.3401, -0.2283,\n", + " -0.4201, -0.8049, -1.4706, 1.8099, 0.8324, 1.4225, -0.3138, -0.5832,\n", + " -1.8246, -0.8216, 0.1555, -0.6526, 0.0804, -0.6482, -0.3299, -0.4853,\n", + " -0.7337, -0.6864, -1.1171, -1.1141, -0.5148, -0.6782, 0.0000, 0.6509,\n", + " 0.6634, 0.9382, 0.5066]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2622, -0.3069, -0.0851, -0.1248, -0.0567, 0.1360, 0.2030, 0.2967,\n", + " 0.2173, 0.1687, 0.2938, -0.1512, -0.1549, -0.2807, -0.2370, -0.3343,\n", + " -0.1503, -0.0336, -0.0895, -0.1594, -0.1321, -0.0419, 0.0015, 0.0157,\n", + " -0.0566, 0.0303, -0.0734, -0.1159, -0.2070, -0.2352, -0.3018, -0.2277,\n", + " -0.2840, -0.2577, -0.1207, -0.1687, -0.0271, 0.0076, 0.0315, 0.3019,\n", + " 0.3018, 0.3467, 0.2621]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00028626617859117687\n", + "Grad encoder.fc1.bias: 0.00015942644677124918\n", + "Grad encoder.encoder.0.weight: 9.031864465214312e-05\n", + "Grad encoder.encoder.0.bias: 0.00018365384312346578\n", + "Grad encoder.encoder.2.weight: 6.636579928454012e-05\n", + "Grad encoder.encoder.2.bias: 0.0003036287962459028\n", + "Grad encoder.encoder.4.weight: 0.00014159578131511807\n", + "Grad encoder.encoder.4.bias: 0.0003828981425613165\n", + "Grad decoder.fc1.0.weight: 5.371559745981358e-05\n", + "Grad decoder.fc1.0.bias: 0.0003869899082928896\n", + "Grad decoder.fc1.2.weight: 6.359624967444688e-05\n", + "Grad decoder.fc1.2.bias: 0.0005695543950423598\n", + "Grad decoder.fc1.4.weight: 5.339717972674407e-05\n", + "Grad decoder.fc1.4.bias: 0.0006964420317672193\n", + "Grad decoder.fc2.weight: 0.0001438525359844789\n", + "Grad decoder.fc2.bias: 0.002108392771333456\n", + "Grad _memory_unit.weight_ih_l0: 1.6475516531500034e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.7754471375374123e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.528361281089019e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.141162884887308e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.956545985303819e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.671657032100484e-05\n", + "Data X Sample: tensor([[1.3335, 1.4419, 1.6153, 1.6421, 1.7348, 1.8902, 1.9428, 2.0102, 2.3580,\n", + " 3.5670, 4.0066, 3.8736, 3.8771, 3.8416, 3.6643, 3.4613, 3.3523, 3.4935,\n", + " 3.3185, 3.3382, 3.2633, 3.2716, 2.8195, 2.7199, 2.7420, 2.6850, 2.6773,\n", + " 2.8672, 2.8066, 2.8821, 2.9746, 3.0120, 3.4981, 2.5173, 4.2478, 4.4899,\n", + " 4.7667, 5.1812, 5.6665, 5.6175, 1.0213, 0.5835, 0.6063, 1.0419, 1.5222,\n", + " 1.5897, 1.0674, 1.6108]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1954, 0.5515, 0.4161, 0.2461, -1.3604, 1.2684, 0.1175, 0.1523,\n", + " 0.6616, 0.5262, -0.6196, 2.7038, 1.3296, 1.5212, -0.7124, 0.7104,\n", + " -0.7492, 2.1279, 0.5791, 0.1728, 0.7841, -0.0230, 0.2998, 0.1621,\n", + " -0.0483, 1.6358, 0.2544, -1.1176, 0.0284, -0.7704, -0.3343, -0.6244,\n", + " 4.0104, 0.9658, 0.3684, 1.8007, 0.0245, 0.7825, -0.9104, -0.6356,\n", + " 0.2881, 0.3784, 0.1601]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1994, -0.2577, -0.0657, -0.1048, -0.0460, 0.1338, 0.1709, 0.2389,\n", + " 0.1861, 0.1460, 0.2373, -0.1171, -0.1222, -0.2365, -0.2035, -0.2816,\n", + " -0.1264, -0.0070, -0.0462, -0.1417, -0.0975, -0.0249, -0.0076, 0.0236,\n", + " -0.0501, 0.0225, -0.0745, -0.0787, -0.1801, -0.2077, -0.2406, -0.1834,\n", + " -0.2370, -0.2079, -0.0884, -0.1358, -0.0311, 0.0205, 0.0309, 0.2313,\n", + " 0.2511, 0.2965, 0.2390]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007786217029206455\n", + "Grad encoder.fc1.bias: 0.0002655738207977265\n", + "Grad encoder.encoder.0.weight: 0.00018315069610252976\n", + "Grad encoder.encoder.0.bias: 0.0003263783873990178\n", + "Grad encoder.encoder.2.weight: 0.00013508368283510208\n", + "Grad encoder.encoder.2.bias: 0.0005613588728010654\n", + "Grad encoder.encoder.4.weight: 0.00035667017800733447\n", + "Grad encoder.encoder.4.bias: 0.0016378844156861305\n", + "Grad decoder.fc1.0.weight: 0.00010042593203252181\n", + "Grad decoder.fc1.0.bias: 0.0006631737924180925\n", + "Grad decoder.fc1.2.weight: 9.21535975066945e-05\n", + "Grad decoder.fc1.2.bias: 0.00091734086163342\n", + "Grad decoder.fc1.4.weight: 8.170675573637709e-05\n", + "Grad decoder.fc1.4.bias: 0.0009377308888360858\n", + "Grad decoder.fc2.weight: 0.0001391843252349645\n", + "Grad decoder.fc2.bias: 0.002112527610734105\n", + "Grad _memory_unit.weight_ih_l0: 2.9056614948785864e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.566864951513708e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.103184619452804e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.2489284927141853e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00017540238332003355\n", + "Grad _memory_unit.bias_hh_l1: 9.349520405521616e-05\n", + "Data X Sample: tensor([[1.4608, 1.6444, 1.8107, 1.9657, 2.0421, 2.1804, 2.2293, 3.0451, 4.3548,\n", + " 4.3268, 4.4444, 4.3390, 4.0723, 3.8770, 3.8989, 3.6514, 3.6306, 3.6269,\n", + " 3.5704, 3.6004, 3.5356, 3.5165, 2.9930, 2.8039, 2.9466, 2.9044, 3.1222,\n", + " 3.0752, 3.0841, 3.2129, 3.3455, 3.4486, 3.7445, 2.8149, 4.6376, 4.8766,\n", + " 5.1089, 5.3482, 5.9391, 5.7225, 1.1884, 0.7548, 0.6568, 1.2228, 1.6848,\n", + " 1.8641, 1.3326, 1.8766]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0581, -0.1409, -0.2002, -0.0192, 0.0036, -0.2570, 0.3617, 0.0757,\n", + " -0.1417, 0.2282, 0.2765, -0.4934, 0.1914, 0.3353, 0.1056, 0.0126,\n", + " 0.1080, -0.8938, 0.0971, -0.5878, -1.5359, -0.6276, -0.2888, -0.5319,\n", + " -1.5953, 1.1898, -0.5821, 0.9142, 0.4237, -0.9160, -0.1787, -0.0914,\n", + " -1.5109, -0.2191, -0.5987, -0.0948, -0.9601, -0.8004, -0.3712, 0.2764,\n", + " 0.5001, 0.1274, 0.5864]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1825, -0.2521, -0.0700, -0.1090, -0.0494, 0.1330, 0.1653, 0.2178,\n", + " 0.1833, 0.1407, 0.2154, -0.0936, -0.1102, -0.2164, -0.1939, -0.2731,\n", + " -0.1344, -0.0059, -0.0169, -0.1383, -0.0927, -0.0223, -0.0025, 0.0274,\n", + " -0.0582, 0.0185, -0.0798, -0.0662, -0.1689, -0.1928, -0.2064, -0.1633,\n", + " -0.2123, -0.1880, -0.0840, -0.1226, -0.0311, 0.0194, 0.0176, 0.2129,\n", + " 0.2422, 0.2825, 0.2374]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007887009414844215\n", + "Grad encoder.fc1.bias: 0.0006555924192070961\n", + "Grad encoder.encoder.0.weight: 0.00017265802307520062\n", + "Grad encoder.encoder.0.bias: 0.0005922947311773896\n", + "Grad encoder.encoder.2.weight: 0.00011872143659275025\n", + "Grad encoder.encoder.2.bias: 0.0007206541486084461\n", + "Grad encoder.encoder.4.weight: 0.0002553236554376781\n", + "Grad encoder.encoder.4.bias: 0.0018129147356376052\n", + "Grad decoder.fc1.0.weight: 0.00010518130875425413\n", + "Grad decoder.fc1.0.bias: 0.0009829348418861628\n", + "Grad decoder.fc1.2.weight: 0.00012482184683904052\n", + "Grad decoder.fc1.2.bias: 0.0010288257617503405\n", + "Grad decoder.fc1.4.weight: 9.054326801560819e-05\n", + "Grad decoder.fc1.4.bias: 0.0010528868297114968\n", + "Grad decoder.fc2.weight: 0.00021607762027997524\n", + "Grad decoder.fc2.bias: 0.0023669779766350985\n", + "Grad _memory_unit.weight_ih_l0: 4.839730172534473e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.247765799751505e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.471864303923212e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.3304366802913137e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00016305327881127596\n", + "Grad _memory_unit.bias_hh_l1: 8.606165647506714e-05\n", + "Data X Sample: tensor([[-0.0011, 0.0087, 0.0060, 0.0066, -0.0017, 0.0221, 0.0000, 0.0014,\n", + " 0.0171, 0.0126, 0.0000, 0.0156, 0.0133, 0.0136, 0.0227, 0.0014,\n", + " -0.0849, -0.0909, -0.0991, -0.0855, -0.1080, -0.0612, -0.0747, -0.0802,\n", + " -0.0638, -0.1097, -0.1066, -0.1713, -0.0243, -0.0229, -0.0420, -0.0221,\n", + " 0.0044, -0.0023, 0.0074, 0.0268, -0.0039, 0.0239, 0.0190, 0.0000,\n", + " 0.0239, 0.0139, -0.0061, -0.0115, 0.0159, 0.0286, -0.0272, 0.0078]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.4312e+00, 1.4052e+00, -1.7181e-01, 2.3922e+00, 1.5931e-01,\n", + " 8.2047e-01, -3.0698e-01, -9.0521e-01, -3.7184e-01, -4.0217e-01,\n", + " -9.3734e-01, 3.4460e-01, 6.9639e-01, 9.5787e-01, -3.7667e-01,\n", + " 7.7575e-01, -4.6670e-01, 4.2752e-01, 9.8153e-01, 2.3856e-01,\n", + " 3.0412e-01, 5.4656e-01, -7.9239e-02, 1.4350e+00, -1.4705e-01,\n", + " -3.1097e+00, -2.5530e-01, 1.3099e-01, 1.5678e+00, 1.1098e+00,\n", + " -6.3217e-02, 8.6711e-01, 1.0490e+00, 9.2008e-01, 8.2796e-03,\n", + " 8.4004e-01, -8.0452e-04, -1.0105e-01, -3.5266e-01, -7.4807e-01,\n", + " -3.5866e-01, -5.1562e-01, -9.3527e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.8258, 0.6019, 0.2647, 0.5606, -0.0738, -0.3995, -0.9458, -0.9036,\n", + " -0.5867, -0.6675, -0.7352, 0.1600, 0.4852, 0.5250, 0.3278, 0.5584,\n", + " 0.4638, 0.2121, 0.0647, 0.2381, -0.1242, -0.0258, 0.0742, 0.0541,\n", + " 0.0708, 0.0582, 0.1206, 0.2362, 0.6294, 0.7352, 0.5707, 0.5721,\n", + " 0.5906, 0.6364, 0.4179, 0.3351, -0.0596, -0.0192, -0.0465, -0.6289,\n", + " -0.6860, -0.5550, -0.4708]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00032666343031451106\n", + "Grad encoder.fc1.bias: 0.00021011161152273417\n", + "Grad encoder.encoder.0.weight: 0.000113205227535218\n", + "Grad encoder.encoder.0.bias: 0.00023929924645926803\n", + "Grad encoder.encoder.2.weight: 6.68910433887504e-05\n", + "Grad encoder.encoder.2.bias: 0.00024974439293146133\n", + "Grad encoder.encoder.4.weight: 0.00014995216042734683\n", + "Grad encoder.encoder.4.bias: 0.0007391879335045815\n", + "Grad decoder.fc1.0.weight: 5.917622911510989e-05\n", + "Grad decoder.fc1.0.bias: 0.000489269383251667\n", + "Grad decoder.fc1.2.weight: 5.715841689379886e-05\n", + "Grad decoder.fc1.2.bias: 0.0005659856833517551\n", + "Grad decoder.fc1.4.weight: 5.714682265534066e-05\n", + "Grad decoder.fc1.4.bias: 0.0006729383021593094\n", + "Grad decoder.fc2.weight: 0.000156863869051449\n", + "Grad decoder.fc2.bias: 0.0016915694577619433\n", + "Grad _memory_unit.weight_ih_l0: 1.785789390851278e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.696218770230189e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.564048893167637e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.80259051680332e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00012962211621925235\n", + "Grad _memory_unit.bias_hh_l1: 6.954963464522734e-05\n", + "Data X Sample: tensor([[1.5987, 1.8687, 1.9775, 2.0728, 2.2043, 2.5252, 2.5113, 2.5851, 2.7071,\n", + " 2.6713, 2.7060, 2.7518, 2.5322, 2.5520, 2.4639, 2.5095, 2.3994, 2.4683,\n", + " 2.5235, 2.4046, 2.5100, 2.5842, 2.5086, 2.5424, 2.5262, 2.6615, 2.5361,\n", + " 2.5858, 2.3070, 2.5055, 2.3867, 2.4621, 2.1648, 1.4212, 1.9364, 1.8193,\n", + " 1.7207, 1.6273, 1.6860, 1.5746, 1.2743, 0.7050, 0.7518, 1.3979, 1.8751,\n", + " 2.0471, 1.4278, 1.9235]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4244, 0.3714, 0.4280, 0.3368, 0.4592, -1.1921, -0.4339, -0.2285,\n", + " -0.0380, 0.2758, 0.0587, 0.2730, 0.1912, -1.1805, 1.7406, 0.9252,\n", + " 0.4607, 0.0156, 1.8067, 0.5778, 1.3426, 0.6344, 1.1332, 0.6744,\n", + " 0.4305, 0.1574, -0.9222, -0.3782, 0.2278, 0.2086, 0.1896, 0.7993,\n", + " 0.1853, 0.5207, 0.0110, -0.0983, -0.0317, 0.7357, -0.9960, -0.1439,\n", + " -0.3630, -0.1149, -0.5695]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5178, 0.3944, 0.2482, 0.3632, 0.0823, -0.1667, -0.5225, -0.5435,\n", + " -0.2670, -0.3740, -0.3888, 0.1691, 0.3349, 0.3609, 0.3095, 0.4187,\n", + " 0.3457, 0.1831, 0.0847, 0.1680, -0.0386, 0.0449, 0.0961, 0.0611,\n", + " 0.0986, 0.0162, 0.0964, 0.1171, 0.3003, 0.4376, 0.3500, 0.3424,\n", + " 0.3324, 0.4270, 0.2985, 0.2522, -0.0585, 0.0206, -0.0090, -0.3931,\n", + " -0.4028, -0.3956, -0.3955]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00023207654885482043\n", + "Grad encoder.fc1.bias: 0.00037842121673747897\n", + "Grad encoder.encoder.0.weight: 9.41063481150195e-05\n", + "Grad encoder.encoder.0.bias: 0.0003694607294164598\n", + "Grad encoder.encoder.2.weight: 7.493686280213296e-05\n", + "Grad encoder.encoder.2.bias: 0.0003746519796550274\n", + "Grad encoder.encoder.4.weight: 0.00020181108266115189\n", + "Grad encoder.encoder.4.bias: 0.000714761670678854\n", + "Grad decoder.fc1.0.weight: 9.466953633818775e-05\n", + "Grad decoder.fc1.0.bias: 0.0005802232190035284\n", + "Grad decoder.fc1.2.weight: 0.00010061533976113424\n", + "Grad decoder.fc1.2.bias: 0.0006520294700749218\n", + "Grad decoder.fc1.4.weight: 8.174152753781527e-05\n", + "Grad decoder.fc1.4.bias: 0.0008455536444671452\n", + "Grad decoder.fc2.weight: 0.00017375971947330981\n", + "Grad decoder.fc2.bias: 0.0021880571730434895\n", + "Grad _memory_unit.weight_ih_l0: 4.650205301004462e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.712938971351832e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.8817376005463302e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.66810550581431e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011292268754914403\n", + "Grad _memory_unit.bias_hh_l1: 6.211742584127933e-05\n", + "Data X Sample: tensor([[1.3855, 1.6124, 1.8482, 1.9023, 2.0216, 2.0685, 2.1985, 1.9988, 3.3417,\n", + " 4.0820, 4.1843, 4.1228, 4.1545, 3.9479, 3.8484, 3.5775, 3.4765, 3.6656,\n", + " 3.6633, 3.5688, 3.4031, 3.3695, 3.0122, 2.8688, 2.8058, 2.9149, 2.8877,\n", + " 2.9366, 2.9835, 3.1147, 3.1881, 3.3215, 3.7863, 2.7920, 4.6229, 4.9180,\n", + " 5.2210, 5.5814, 6.1419, 5.8331, 1.1072, 0.6213, 0.6912, 1.1424, 1.7205,\n", + " 1.8641, 1.1898, 1.8844]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.9492, 0.2483, 0.7600, 0.4275, 0.4208, 1.6188, 0.2353, -0.2849,\n", + " -0.3612, -0.8289, -0.3800, -0.0579, 0.1010, 0.2262, -0.9156, -0.5133,\n", + " 1.0934, -0.3154, 0.8209, 0.3284, 0.2252, 0.1258, 1.5929, -0.8404,\n", + " -0.3932, 0.8406, -0.4287, -1.1668, -0.7401, -0.2092, 0.6618, 0.1399,\n", + " 3.3022, 0.4930, 1.0792, 0.2761, 0.0000, -0.4102, 0.6819, 0.0757,\n", + " -0.6790, -0.5924, -0.1894]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2803, -0.3641, -0.1136, -0.2099, -0.0305, 0.1903, 0.2712, 0.3418,\n", + " 0.2786, 0.2272, 0.2949, -0.1575, -0.1648, -0.3305, -0.2793, -0.3849,\n", + " -0.2280, -0.0276, -0.0591, -0.2136, -0.1300, -0.0476, -0.0277, 0.0370,\n", + " -0.0661, -0.0057, -0.0689, -0.1174, -0.2205, -0.3166, -0.2996, -0.2293,\n", + " -0.3291, -0.3385, -0.1886, -0.1528, 0.0025, 0.0785, 0.0379, 0.3392,\n", + " 0.3741, 0.3898, 0.3166]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0011894344352185726\n", + "Grad encoder.fc1.bias: 0.0008557685650885105\n", + "Grad encoder.encoder.0.weight: 0.00023756313021294773\n", + "Grad encoder.encoder.0.bias: 0.0006917733117006719\n", + "Grad encoder.encoder.2.weight: 0.00014059283421374857\n", + "Grad encoder.encoder.2.bias: 0.0009039374999701977\n", + "Grad encoder.encoder.4.weight: 0.00025339677813462913\n", + "Grad encoder.encoder.4.bias: 0.0022753546945750713\n", + "Grad decoder.fc1.0.weight: 8.51819640956819e-05\n", + "Grad decoder.fc1.0.bias: 0.000893135613296181\n", + "Grad decoder.fc1.2.weight: 0.00010407941590528935\n", + "Grad decoder.fc1.2.bias: 0.0009504210902377963\n", + "Grad decoder.fc1.4.weight: 7.463866495527327e-05\n", + "Grad decoder.fc1.4.bias: 0.0008441169047728181\n", + "Grad decoder.fc2.weight: 0.00016772912931628525\n", + "Grad decoder.fc2.bias: 0.0019435454159975052\n", + "Grad _memory_unit.weight_ih_l0: 2.1794154235976748e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.525605128146708e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.070288898423314e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.606108167441562e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00020003090321552008\n", + "Grad _memory_unit.bias_hh_l1: 0.00010516886686673388\n", + "Data X Sample: tensor([[2.5343, 2.9596, 3.1630, 3.3235, 3.5583, 3.5624, 3.5759, 3.7663, 3.9227,\n", + " 3.8671, 3.9590, 3.8307, 3.7461, 3.5499, 3.7299, 3.4750, 3.3837, 3.4316,\n", + " 3.3846, 3.3531, 3.0964, 3.1414, 2.8869, 2.9012, 2.8152, 2.8313, 2.8398,\n", + " 2.8061, 2.8968, 2.8264, 2.9081, 3.0065, 3.0053, 2.1741, 3.6620, 3.9621,\n", + " 4.2574, 4.6618, 5.0581, 4.9167, 1.9090, 1.0873, 1.0630, 1.9174, 2.8740,\n", + " 3.1965, 2.0329, 3.0104]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1502, 0.0694, -0.1125, 0.2153, -0.7487, -1.8897, -2.1304, -1.5342,\n", + " -1.2084, -0.6661, -0.2117, -0.1266, -0.4574, -0.3621, -0.5745, -1.5501,\n", + " -0.7513, -0.2178, 1.1179, 1.1729, 0.5527, 1.0153, 0.1884, -0.5168,\n", + " -0.2828, -0.1158, 0.0698, 0.5556, 1.3202, 1.3688, -0.0972, 0.0182,\n", + " 0.5276, 0.7782, 0.5688, -0.0867, 0.5069, 0.6423, -1.0094, 0.1579,\n", + " 1.0282, -0.3895, 0.6341]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1589, -0.2110, -0.0923, -0.1873, -0.1294, 0.0377, 0.1045, 0.1575,\n", + " 0.1311, 0.0610, 0.1126, -0.0353, -0.0595, -0.1022, -0.0811, -0.1324,\n", + " -0.1619, -0.0164, -0.0257, -0.1178, -0.1133, -0.0210, -0.0122, 0.0202,\n", + " -0.0050, 0.0120, 0.0591, -0.0144, -0.0151, -0.1161, -0.0992, -0.1243,\n", + " -0.1068, -0.1581, -0.0183, -0.0690, -0.0050, 0.0566, 0.0238, 0.1777,\n", + " 0.2173, 0.1986, 0.1613]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000350313464878127\n", + "Grad encoder.fc1.bias: 0.0006387180183082819\n", + "Grad encoder.encoder.0.weight: 0.00010903382644755766\n", + "Grad encoder.encoder.0.bias: 0.0006346584996208549\n", + "Grad encoder.encoder.2.weight: 8.344883099198341e-05\n", + "Grad encoder.encoder.2.bias: 0.000725307036191225\n", + "Grad encoder.encoder.4.weight: 0.00022015563445165753\n", + "Grad encoder.encoder.4.bias: 0.002476900350302458\n", + "Grad decoder.fc1.0.weight: 0.00011453642218839377\n", + "Grad decoder.fc1.0.bias: 0.0010977897327393293\n", + "Grad decoder.fc1.2.weight: 0.00014400701911654323\n", + "Grad decoder.fc1.2.bias: 0.0011435271007940173\n", + "Grad decoder.fc1.4.weight: 0.00010274135274812579\n", + "Grad decoder.fc1.4.bias: 0.0010054042795673013\n", + "Grad decoder.fc2.weight: 0.00020496542856562883\n", + "Grad decoder.fc2.bias: 0.0023443331010639668\n", + "Grad _memory_unit.weight_ih_l0: 2.6903546313405968e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00011247378279222175\n", + "Grad _memory_unit.bias_hh_l0: 6.198098708409816e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.3956592738395557e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002655377611517906\n", + "Grad _memory_unit.bias_hh_l1: 0.00014213149552233517\n", + "Data X Sample: tensor([[1.5838, 1.8439, 2.0060, 2.1209, 2.2624, 2.3852, 2.4651, 2.5156, 2.6143,\n", + " 2.6397, 2.6425, 2.6505, 2.5144, 2.5738, 2.5496, 2.3659, 2.3963, 2.4895,\n", + " 2.5957, 2.4474, 2.5346, 2.5765, 2.5134, 2.5538, 2.5243, 2.5806, 2.4722,\n", + " 2.5491, 2.3243, 2.4203, 2.4287, 2.3599, 2.3298, 1.4692, 2.0148, 1.8680,\n", + " 1.7089, 1.5901, 1.6100, 1.5661, 1.2743, 0.7090, 0.7680, 1.2802, 2.0297,\n", + " 2.1672, 1.3870, 1.8922]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1544, 0.8737, -0.3191, 0.1554, 1.2082, 0.0928, -0.0023, -0.1940,\n", + " -0.2737, -0.0738, -0.1473, -0.4104, 0.2125, -0.8065, 0.1188, 0.3578,\n", + " -0.0346, -0.6491, -0.4092, 0.4494, 0.1402, 0.6625, 0.2144, -0.7240,\n", + " -0.6393, 0.0588, 0.6760, 0.6744, -0.3405, 0.5157, 0.1414, 0.0458,\n", + " 0.2768, -0.4383, 1.8271, 0.1561, -1.0105, -0.6596, -2.2862, -0.1284,\n", + " -0.0484, 0.0591, -0.2049]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4194, 0.3243, 0.1954, 0.3033, 0.0809, -0.1103, -0.4082, -0.4482,\n", + " -0.2109, -0.3187, -0.3103, 0.1658, 0.2626, 0.2740, 0.2547, 0.3545,\n", + " 0.2835, 0.1322, 0.0744, 0.1200, -0.0045, 0.0822, 0.1246, 0.0463,\n", + " 0.0757, -0.0278, 0.0587, 0.0676, 0.2201, 0.3717, 0.2797, 0.2607,\n", + " 0.2896, 0.3469, 0.2584, 0.2476, -0.0592, -0.0070, 0.0244, -0.3539,\n", + " -0.3553, -0.3565, -0.3279]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0012198598124086857\n", + "Grad encoder.fc1.bias: 0.002578339772298932\n", + "Grad encoder.encoder.0.weight: 0.000293706456432119\n", + "Grad encoder.encoder.0.bias: 0.0018389257602393627\n", + "Grad encoder.encoder.2.weight: 0.00019491820421535522\n", + "Grad encoder.encoder.2.bias: 0.0016546049155294895\n", + "Grad encoder.encoder.4.weight: 0.0004544476978480816\n", + "Grad encoder.encoder.4.bias: 0.003922689706087112\n", + "Grad decoder.fc1.0.weight: 0.00016922320355661213\n", + "Grad decoder.fc1.0.bias: 0.0016813516849651933\n", + "Grad decoder.fc1.2.weight: 0.000212413928238675\n", + "Grad decoder.fc1.2.bias: 0.0018100196029990911\n", + "Grad decoder.fc1.4.weight: 0.00015844573499634862\n", + "Grad decoder.fc1.4.bias: 0.0017340463818982244\n", + "Grad decoder.fc2.weight: 0.000271068507572636\n", + "Grad decoder.fc2.bias: 0.003325937781482935\n", + "Grad _memory_unit.weight_ih_l0: 5.140652137924917e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00015192184946499765\n", + "Grad _memory_unit.bias_hh_l0: 8.489353785989806e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.0187882910249755e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00037443064502440393\n", + "Grad _memory_unit.bias_hh_l1: 0.00019963330123573542\n", + "Data X Sample: tensor([[1.6040, 1.7318, 1.7731, 1.7908, 1.8475, 2.0331, 2.3418, 2.0457, 3.4198,\n", + " 4.0504, 4.0130, 4.0274, 4.0169, 3.8143, 3.4676, 3.5461, 3.5095, 3.4122,\n", + " 3.4135, 3.3679, 3.4179, 3.2899, 3.0146, 2.8287, 2.8002, 2.8626, 2.9170,\n", + " 3.0304, 2.9523, 3.1834, 3.1916, 3.3298, 3.5707, 2.5517, 4.3410, 4.6383,\n", + " 4.9988, 5.2819, 5.8947, 5.6459, 1.2170, 0.6711, 0.6508, 1.0649, 1.7284,\n", + " 1.7269, 1.2442, 1.6889]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6143, -0.9646, -0.1081, 0.0059, 0.0325, -0.0121, 0.3640, 0.3852,\n", + " 0.1015, 0.6004, 0.5649, -0.3285, -0.6729, -1.3042, 0.3296, -1.7002,\n", + " -1.0928, -0.7774, -0.6154, -1.6586, -0.6885, -1.0435, -0.6752, -1.4575,\n", + " -0.6270, -1.2514, 0.5449, -0.0260, -0.1300, -0.5179, -0.7334, -0.3216,\n", + " -1.2434, -0.0159, 0.4343, 0.6358, 0.8291, 0.7672, 0.0000, 0.4568,\n", + " 0.7793, 0.6057, 0.1672]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3224, -0.4138, -0.1254, -0.2535, -0.0344, 0.2108, 0.3030, 0.3965,\n", + " 0.3080, 0.2711, 0.3347, -0.1632, -0.1821, -0.3653, -0.3242, -0.4276,\n", + " -0.2695, -0.0374, -0.0481, -0.2203, -0.1222, -0.0460, -0.0236, 0.0368,\n", + " -0.0692, -0.0223, -0.0660, -0.1125, -0.2468, -0.3652, -0.3202, -0.2514,\n", + " -0.3769, -0.3840, -0.2496, -0.1891, -0.0066, 0.1152, 0.0448, 0.3781,\n", + " 0.4317, 0.4357, 0.3612]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006584603106603026\n", + "Grad encoder.fc1.bias: 0.0007800452876836061\n", + "Grad encoder.encoder.0.weight: 0.00014185320469550788\n", + "Grad encoder.encoder.0.bias: 0.0006934380508027971\n", + "Grad encoder.encoder.2.weight: 9.594555740477517e-05\n", + "Grad encoder.encoder.2.bias: 0.0006165527738630772\n", + "Grad encoder.encoder.4.weight: 0.00020207166380714625\n", + "Grad encoder.encoder.4.bias: 0.0010091930162161589\n", + "Grad decoder.fc1.0.weight: 8.078827522695065e-05\n", + "Grad decoder.fc1.0.bias: 0.0005613276734948158\n", + "Grad decoder.fc1.2.weight: 9.895711991703138e-05\n", + "Grad decoder.fc1.2.bias: 0.0005822614184580743\n", + "Grad decoder.fc1.4.weight: 8.398256613872945e-05\n", + "Grad decoder.fc1.4.bias: 0.00064102653414011\n", + "Grad decoder.fc2.weight: 0.0002092793583869934\n", + "Grad decoder.fc2.bias: 0.0018696888582780957\n", + "Grad _memory_unit.weight_ih_l0: 2.3481474272557534e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.850081601645797e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.286108014639467e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0400113751529716e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001445503148715943\n", + "Grad _memory_unit.bias_hh_l1: 7.817867299309e-05\n", + "Data X Sample: tensor([[1.5637, 1.8585, 2.0090, 2.1800, 2.3938, 2.4972, 2.6376, 2.5724, 2.7071,\n", + " 2.6966, 2.7472, 2.7479, 2.6609, 2.6010, 2.5824, 2.5778, 2.5016, 2.5650,\n", + " 2.5999, 2.5385, 2.5984, 2.5888, 2.5737, 2.6378, 2.5919, 2.5649, 2.6000,\n", + " 2.6633, 2.1925, 2.4138, 2.3587, 2.4649, 2.3276, 1.4875, 1.9781, 1.8752,\n", + " 1.7187, 1.6432, 1.5846, 1.5831, 1.3363, 0.7309, 0.7195, 1.3146, 1.8751,\n", + " 2.2129, 1.4210, 2.0330]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.2984, 1.2089, 0.0270, -0.4788, -1.1795, -1.2442, -1.4062, -0.8554,\n", + " -1.6349, -0.9069, -1.8811, 1.2708, 1.2125, -0.4429, 0.5672, 0.0528,\n", + " 0.4319, -0.3541, 0.0538, -0.3028, -0.1918, 0.1080, -0.3900, 1.7458,\n", + " 0.3441, -0.3988, -0.6771, 0.0921, 0.1616, 0.5446, 0.8427, 0.0761,\n", + " -0.0066, -0.4097, -0.5276, -0.7236, 0.5193, 0.6895, -0.2578, -1.6191,\n", + " -1.3394, -1.6718, -0.9327]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3325, 0.2768, 0.1573, 0.2426, 0.0541, -0.0968, -0.3348, -0.3725,\n", + " -0.1661, -0.2567, -0.2513, 0.1423, 0.2044, 0.2103, 0.2040, 0.2809,\n", + " 0.2322, 0.1012, 0.0685, 0.0949, 0.0131, 0.0714, 0.1014, 0.0299,\n", + " 0.0609, -0.0246, 0.0342, 0.0454, 0.1757, 0.2954, 0.2294, 0.2080,\n", + " 0.2361, 0.2859, 0.2218, 0.2052, -0.0498, -0.0080, 0.0185, -0.2975,\n", + " -0.2896, -0.2889, -0.2534]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0014553151559084654\n", + "Grad encoder.fc1.bias: 0.0018167116213589907\n", + "Grad encoder.encoder.0.weight: 0.0003105454670730978\n", + "Grad encoder.encoder.0.bias: 0.0013920809142291546\n", + "Grad encoder.encoder.2.weight: 0.00020027357095386833\n", + "Grad encoder.encoder.2.bias: 0.0014167556073516607\n", + "Grad encoder.encoder.4.weight: 0.00043243131949566305\n", + "Grad encoder.encoder.4.bias: 0.0032478286884725094\n", + "Grad decoder.fc1.0.weight: 0.00015522960165981203\n", + "Grad decoder.fc1.0.bias: 0.0014252604451030493\n", + "Grad decoder.fc1.2.weight: 0.0002067871391773224\n", + "Grad decoder.fc1.2.bias: 0.001763006905093789\n", + "Grad decoder.fc1.4.weight: 0.00016471608250867575\n", + "Grad decoder.fc1.4.bias: 0.0018407837487757206\n", + "Grad decoder.fc2.weight: 0.00028172138263471425\n", + "Grad decoder.fc2.bias: 0.0032219872809946537\n", + "Grad _memory_unit.weight_ih_l0: 5.485276415129192e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.22495819395408e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.392419916461222e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.075853080896195e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.000273321260465309\n", + "Grad _memory_unit.bias_hh_l1: 0.00014742737403139472\n", + "Data X Sample: tensor([[1.2857, 1.4623, 1.6198, 1.6355, 1.7040, 1.9064, 2.0368, 1.9846, 3.6469,\n", + " 4.3063, 4.3207, 4.2358, 4.2210, 3.9888, 3.7980, 3.6445, 3.6621, 3.6811,\n", + " 3.5209, 3.4758, 3.5013, 3.4629, 3.1544, 2.8554, 2.8509, 3.0246, 2.9703,\n", + " 3.0141, 2.9696, 3.1540, 3.1846, 3.3105, 3.7885, 2.7599, 4.6008, 4.9836,\n", + " 5.2387, 5.4807, 6.0785, 5.9097, 0.9593, 0.5576, 0.5719, 1.0276, 1.4707,\n", + " 1.5782, 1.1218, 1.6577]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3492, -0.5008, 1.1140, 0.0626, -0.2681, -0.2793, -1.3123, 0.8390,\n", + " -0.8655, -0.6375, -0.8254, -0.1626, 1.4390, -2.5782, 0.1510, -0.7994,\n", + " -1.0418, -0.7947, 0.4345, -1.3003, -0.9843, -1.4423, -0.9446, 0.2162,\n", + " -0.8530, -0.9674, 0.4712, 0.5588, 0.5852, 0.7413, -0.0417, 0.5356,\n", + " -0.0961, -0.2249, 0.7642, 0.1606, -0.4229, 0.3805, 0.5660, -0.3001,\n", + " 0.4911, -0.5595, -1.6147]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.4011, -0.4868, -0.1507, -0.2797, -0.0365, 0.2300, 0.3482, 0.4669,\n", + " 0.3565, 0.3458, 0.4038, -0.1913, -0.2232, -0.4417, -0.3826, -0.5097,\n", + " -0.3127, -0.0713, -0.0690, -0.2381, -0.1276, -0.0635, -0.0273, 0.0240,\n", + " -0.0795, -0.0335, -0.0590, -0.1238, -0.2857, -0.4267, -0.3734, -0.3090,\n", + " -0.4483, -0.4574, -0.3120, -0.2220, -0.0038, 0.1222, 0.0566, 0.4665,\n", + " 0.5158, 0.5165, 0.4260]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0025807637721300125\n", + "Grad encoder.fc1.bias: 0.0011421238305047154\n", + "Grad encoder.encoder.0.weight: 0.00045316125033423305\n", + "Grad encoder.encoder.0.bias: 0.0009911395609378815\n", + "Grad encoder.encoder.2.weight: 0.00027068081544712186\n", + "Grad encoder.encoder.2.bias: 0.001110580051317811\n", + "Grad encoder.encoder.4.weight: 0.0004691147187259048\n", + "Grad encoder.encoder.4.bias: 0.001979753142222762\n", + "Grad decoder.fc1.0.weight: 0.00015724038530606776\n", + "Grad decoder.fc1.0.bias: 0.0011091532651335\n", + "Grad decoder.fc1.2.weight: 0.0001699160784482956\n", + "Grad decoder.fc1.2.bias: 0.0009057209827005863\n", + "Grad decoder.fc1.4.weight: 0.00011945707956328988\n", + "Grad decoder.fc1.4.bias: 0.0009922226890921593\n", + "Grad decoder.fc2.weight: 0.000193697793292813\n", + "Grad decoder.fc2.bias: 0.0020863462705165148\n", + "Grad _memory_unit.weight_ih_l0: 4.835658546653576e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00013872870476916432\n", + "Grad _memory_unit.bias_hh_l0: 7.602224650327116e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.100357596646063e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002764523378573358\n", + "Grad _memory_unit.bias_hh_l1: 0.000150782783748582\n", + "Data X Sample: tensor([[1.5817, 1.8687, 2.0165, 2.0794, 2.1258, 2.2305, 2.2602, 2.3211, 2.3946,\n", + " 2.4217, 2.4903, 2.4519, 2.3924, 2.3366, 2.3857, 2.3631, 2.3303, 2.3967,\n", + " 2.4470, 2.4548, 2.5640, 2.5781, 2.5592, 2.5137, 2.5825, 2.6119, 2.5681,\n", + " 2.6348, 2.3452, 2.4793, 2.4287, 2.3018, 2.1670, 1.4006, 1.8751, 1.7245,\n", + " 1.5889, 1.4603, 1.5909, 1.5831, 1.2552, 0.7607, 0.6669, 1.4007, 1.8751,\n", + " 2.0814, 1.4074, 2.0095]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1132, 0.5030, -0.3291, 0.1267, 0.0926, 0.2869, -0.6292, -0.1375,\n", + " -0.4641, -0.3822, -0.0989, 0.6403, 0.5593, 0.7244, -0.6699, -0.3547,\n", + " 0.7085, 1.1651, 0.0226, 0.4129, -1.0129, -0.9666, 0.3805, -0.3291,\n", + " 0.1278, 0.0854, -0.6215, -0.1893, 0.6800, -0.3871, 0.2304, 0.6118,\n", + " 0.3032, 0.5087, 0.4915, -0.1775, 0.3148, -0.6596, 0.0040, 0.0733,\n", + " -0.3988, -0.3192, -0.0659]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3263, 0.2874, 0.1533, 0.2324, 0.0504, -0.1095, -0.3336, -0.3816,\n", + " -0.1640, -0.2588, -0.2433, 0.1494, 0.1872, 0.2048, 0.1946, 0.2729,\n", + " 0.2365, 0.0825, 0.0745, 0.0937, 0.0262, 0.0796, 0.0950, 0.0290,\n", + " 0.0655, -0.0193, 0.0282, 0.0420, 0.1828, 0.2970, 0.2355, 0.2058,\n", + " 0.2441, 0.2823, 0.2162, 0.2070, -0.0519, -0.0199, 0.0184, -0.3015,\n", + " -0.2959, -0.2881, -0.2398]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0021756074856966734\n", + "Grad encoder.fc1.bias: 0.001173662836663425\n", + "Grad encoder.encoder.0.weight: 0.00038317422149702907\n", + "Grad encoder.encoder.0.bias: 0.0009408087935298681\n", + "Grad encoder.encoder.2.weight: 0.0002109259512508288\n", + "Grad encoder.encoder.2.bias: 0.0009563657222315669\n", + "Grad encoder.encoder.4.weight: 0.0004129804146941751\n", + "Grad encoder.encoder.4.bias: 0.0021222017239779234\n", + "Grad decoder.fc1.0.weight: 0.00013027623936068267\n", + "Grad decoder.fc1.0.bias: 0.0009113384876400232\n", + "Grad decoder.fc1.2.weight: 0.00016928528202697635\n", + "Grad decoder.fc1.2.bias: 0.0009829108603298664\n", + "Grad decoder.fc1.4.weight: 0.00012945274647790939\n", + "Grad decoder.fc1.4.bias: 0.0011317848693579435\n", + "Grad decoder.fc2.weight: 0.0002873069024644792\n", + "Grad decoder.fc2.bias: 0.002623581327497959\n", + "Grad _memory_unit.weight_ih_l0: 5.495669392985292e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00017511422629468143\n", + "Grad _memory_unit.bias_hh_l0: 9.790693002287298e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.2415402781916782e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00028722811839543283\n", + "Grad _memory_unit.bias_hh_l1: 0.00015898459241725504\n", + "Data X Sample: tensor([[-0.0074, -0.0073, 0.0015, 0.0131, 0.0051, 0.0029, 0.0062, 0.0028,\n", + " -0.0122, 0.0126, 0.0190, 0.0156, 0.0155, 0.0109, -0.0101, -0.0027,\n", + " -0.0299, -0.0174, -0.0227, -0.0149, -0.0270, -0.0153, -0.0048, -0.0134,\n", + " -0.0150, -0.0052, 0.0213, 0.0367, -0.0416, 0.0131, 0.0070, 0.0083,\n", + " 0.0000, 0.0046, 0.0196, 0.0438, 0.0374, 0.0159, 0.0444, -0.0085,\n", + " -0.0334, 0.0159, 0.0101, 0.0000, -0.0040, 0.0572, -0.0340, 0.0156]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.8610, 0.6050, 1.1884, 0.1187, -0.9353, -0.6714, -0.9203, -0.6146,\n", + " -0.0411, -0.6833, -0.5806, -0.1769, 0.5535, 0.0935, 1.0070, 1.1732,\n", + " 0.0317, 0.5458, 0.5182, 1.0165, -0.1173, -0.8059, -0.7722, -0.9411,\n", + " -0.8693, -0.4276, -2.1880, -0.5295, -0.1558, -0.0382, 0.3937, -0.0218,\n", + " -0.5342, 0.2711, 0.5320, -0.7032, 0.4497, 0.7579, -0.6489, -0.6886,\n", + " -0.4572, -0.3024, -0.1893]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.9133, 0.7051, 0.2306, 0.6330, -0.1808, -0.4937, -1.1652, -1.1668,\n", + " -0.7511, -0.8264, -0.8284, 0.2622, 0.5510, 0.5563, 0.2098, 0.5350,\n", + " 0.5197, 0.1207, 0.1316, 0.2444, -0.0706, 0.0585, 0.1237, 0.0820,\n", + " 0.0309, 0.0250, 0.1034, 0.2727, 0.8567, 0.9224, 0.7096, 0.7226,\n", + " 0.7921, 0.7735, 0.4438, 0.4233, -0.0420, -0.0821, -0.0898, -0.7933,\n", + " -0.8869, -0.6633, -0.4826]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.003193872980773449\n", + "Grad encoder.fc1.bias: 0.0015234483871608973\n", + "Grad encoder.encoder.0.weight: 0.0005551330978050828\n", + "Grad encoder.encoder.0.bias: 0.0011623454047366977\n", + "Grad encoder.encoder.2.weight: 0.00031196209602057934\n", + "Grad encoder.encoder.2.bias: 0.0012001473223790526\n", + "Grad encoder.encoder.4.weight: 0.0004988193977624178\n", + "Grad encoder.encoder.4.bias: 0.0022442389745265245\n", + "Grad decoder.fc1.0.weight: 0.00012448604684323072\n", + "Grad decoder.fc1.0.bias: 0.0008964615408331156\n", + "Grad decoder.fc1.2.weight: 0.0001533180329715833\n", + "Grad decoder.fc1.2.bias: 0.0011863835388794541\n", + "Grad decoder.fc1.4.weight: 0.0001429131079930812\n", + "Grad decoder.fc1.4.bias: 0.0014279622118920088\n", + "Grad decoder.fc2.weight: 0.0002664976054802537\n", + "Grad decoder.fc2.bias: 0.002524296287447214\n", + "Grad _memory_unit.weight_ih_l0: 5.4705353250028566e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00013723110896535218\n", + "Grad _memory_unit.bias_hh_l0: 7.381083560176194e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.6121424778248183e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002373070892645046\n", + "Grad _memory_unit.bias_hh_l1: 0.0001265607716049999\n", + "Data X Sample: tensor([[1.5372, 1.7362, 1.9489, 1.9963, 2.1855, 2.2718, 2.3819, 2.3225, 2.5362,\n", + " 2.5576, 2.4554, 2.6311, 2.5699, 2.4729, 2.4008, 2.3713, 2.2909, 2.3947,\n", + " 2.4243, 2.3674, 2.4781, 2.4939, 2.5978, 2.4488, 2.4887, 2.5388, 2.4482,\n", + " 2.4553, 2.2688, 2.3548, 2.3062, 2.3101, 2.2044, 1.4349, 1.9021, 1.7731,\n", + " 1.6145, 1.4815, 1.5402, 1.5519, 1.2122, 0.7109, 0.7518, 1.2572, 1.8433,\n", + " 1.9785, 1.3462, 1.9001]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0178, 0.6734, -0.8140, -0.3271, -0.0180, 0.3587, 0.0861, -0.2646,\n", + " 0.5399, 0.1014, -0.1786, -0.3689, 0.8016, 0.5141, 1.6726, 0.7257,\n", + " 0.6301, 0.9267, 0.6493, -0.1036, -0.2392, 0.3842, 0.2746, 0.6109,\n", + " 0.3947, -0.3761, -1.2761, -0.1307, -0.3695, 0.0869, -0.3901, 0.1954,\n", + " 0.7392, 0.0830, 0.5881, 0.3335, -0.5085, 0.1511, -1.1818, -0.0468,\n", + " -0.3752, 0.0487, -0.7126]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3665, 0.3357, 0.1631, 0.2674, 0.0626, -0.1323, -0.3839, -0.4358,\n", + " -0.1801, -0.2831, -0.2640, 0.1789, 0.2099, 0.2387, 0.2162, 0.3061,\n", + " 0.2741, 0.0860, 0.0826, 0.1136, 0.0594, 0.1141, 0.1070, 0.0246,\n", + " 0.0813, -0.0215, 0.0338, 0.0507, 0.2181, 0.3468, 0.2687, 0.2318,\n", + " 0.2946, 0.3312, 0.2354, 0.2371, -0.0664, -0.0330, 0.0148, -0.3481,\n", + " -0.3386, -0.3404, -0.2893]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.004202938638627529\n", + "Grad encoder.fc1.bias: 0.001898429705761373\n", + "Grad encoder.encoder.0.weight: 0.0008639036095701158\n", + "Grad encoder.encoder.0.bias: 0.0017804771196097136\n", + "Grad encoder.encoder.2.weight: 0.0006074701086618006\n", + "Grad encoder.encoder.2.bias: 0.00237484835088253\n", + "Grad encoder.encoder.4.weight: 0.00132602802477777\n", + "Grad encoder.encoder.4.bias: 0.005468301475048065\n", + "Grad decoder.fc1.0.weight: 0.0002726752427406609\n", + "Grad decoder.fc1.0.bias: 0.002166817896068096\n", + "Grad decoder.fc1.2.weight: 0.00018769424059428275\n", + "Grad decoder.fc1.2.bias: 0.0019953257869929075\n", + "Grad decoder.fc1.4.weight: 0.0001543263060739264\n", + "Grad decoder.fc1.4.bias: 0.002017143415287137\n", + "Grad decoder.fc2.weight: 0.0002163455355912447\n", + "Grad decoder.fc2.bias: 0.0029955124482512474\n", + "Grad _memory_unit.weight_ih_l0: 9.116277942666784e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00029958266532048583\n", + "Grad _memory_unit.bias_hh_l0: 0.00015675883332733065\n", + "Grad _memory_unit.weight_ih_l1: 3.011101762240287e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0005155622493475676\n", + "Grad _memory_unit.bias_hh_l1: 0.0002704584621824324\n", + "Data X Sample: tensor([[1.7026, 1.9692, 2.0766, 2.2106, 2.3272, 2.5266, 2.5359, 2.5936, 2.6949,\n", + " 2.7440, 2.7726, 2.7070, 2.7452, 2.5847, 2.6682, 2.5450, 2.4812, 2.5727,\n", + " 2.4677, 2.4846, 2.5223, 2.6087, 2.6893, 2.5996, 2.6632, 2.6772, 2.7332,\n", + " 2.7123, 2.4562, 2.5055, 2.5092, 2.4179, 2.2418, 1.5127, 2.0124, 1.8971,\n", + " 1.7462, 1.7094, 1.6417, 1.6030, 1.2600, 0.7707, 0.7437, 1.3290, 2.0455,\n", + " 2.1729, 1.5502, 1.9626]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5191, -0.0630, 0.1232, -0.1099, 0.8026, -0.4884, -0.4934, -0.3280,\n", + " -0.0102, -0.3266, -0.6014, -1.3743, -0.2584, -0.4106, 0.9040, -0.2603,\n", + " 0.9143, -0.1653, 1.4619, -0.8604, 0.0070, 0.4506, 0.8231, 0.6718,\n", + " 0.0188, 0.6762, 0.0262, -1.0220, 0.1540, 0.2443, -0.0436, 0.8388,\n", + " 0.5577, -0.0974, 1.3682, 0.8629, 0.4796, -0.1310, 0.0000, -0.4839,\n", + " -0.4737, -0.7750, 0.1159]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3746, 0.3475, 0.1655, 0.2701, 0.0663, -0.1367, -0.3951, -0.4544,\n", + " -0.1785, -0.2919, -0.2645, 0.1845, 0.2073, 0.2421, 0.2102, 0.3070,\n", + " 0.2876, 0.0808, 0.0911, 0.1181, 0.0645, 0.1128, 0.1055, 0.0332,\n", + " 0.0779, -0.0138, 0.0277, 0.0572, 0.2260, 0.3493, 0.2815, 0.2422,\n", + " 0.3083, 0.3367, 0.2413, 0.2360, -0.0672, -0.0455, 0.0094, -0.3579,\n", + " -0.3485, -0.3465, -0.2858]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0014445227570831776\n", + "Grad encoder.fc1.bias: 0.000788256002124399\n", + "Grad encoder.encoder.0.weight: 0.00030851870542392135\n", + "Grad encoder.encoder.0.bias: 0.0010278441477566957\n", + "Grad encoder.encoder.2.weight: 0.00021749618463218212\n", + "Grad encoder.encoder.2.bias: 0.0010901049245148897\n", + "Grad encoder.encoder.4.weight: 0.0004417710879351944\n", + "Grad encoder.encoder.4.bias: 0.0010587169090285897\n", + "Grad decoder.fc1.0.weight: 0.00013454807049129158\n", + "Grad decoder.fc1.0.bias: 0.0007528493879362941\n", + "Grad decoder.fc1.2.weight: 0.00010954413301078603\n", + "Grad decoder.fc1.2.bias: 0.0009453287348151207\n", + "Grad decoder.fc1.4.weight: 8.181610610336065e-05\n", + "Grad decoder.fc1.4.bias: 0.000987243140116334\n", + "Grad decoder.fc2.weight: 0.00016141626110766083\n", + "Grad decoder.fc2.bias: 0.002246347488835454\n", + "Grad _memory_unit.weight_ih_l0: 3.601177377277054e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.61773917474784e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.0909693780122325e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.7956026567844674e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00017783015209715813\n", + "Grad _memory_unit.bias_hh_l1: 9.790214244276285e-05\n", + "Data X Sample: tensor([[1.4077, 1.4128, 1.6183, 1.8017, 2.1787, 3.8983, 4.0751, 4.0800, 4.3206,\n", + " 4.1531, 4.1716, 3.9982, 3.8194, 3.6453, 3.5181, 3.4079, 3.4105, 3.5147,\n", + " 3.3453, 3.0722, 3.3050, 3.1261, 2.7954, 2.7313, 2.6219, 2.7216, 2.7599,\n", + " 2.7530, 2.9037, 2.9967, 2.9781, 3.1585, 3.2341, 2.4212, 3.9954, 4.4534,\n", + " 4.8513, 5.3721, 5.8884, 5.7480, 0.9068, 0.5397, 0.5699, 1.0965, 1.4826,\n", + " 1.6926, 1.2170, 1.6186]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0157, -0.1230, 0.8941, -0.5959, 0.3103, -0.5368, -0.3910, 0.5006,\n", + " -0.0944, 0.3439, 0.2071, 0.1403, -0.5467, 0.0703, -0.2732, -0.5688,\n", + " -0.3870, 2.4825, 0.0044, -0.5146, 0.5930, 0.1668, 0.0745, -0.9234,\n", + " -1.3413, -0.4914, -0.3832, -0.0738, -0.6595, -0.0846, 0.5351, -0.0342,\n", + " -0.4518, 0.4953, 1.3945, 0.5264, -0.0656, -0.3422, -0.6018, -0.2507,\n", + " 0.0665, 0.6229, -0.2689]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2321, -0.2729, -0.1064, -0.1636, -0.1171, 0.0495, 0.1336, 0.2468,\n", + " 0.2144, 0.2413, 0.2286, -0.0947, -0.1555, -0.2231, -0.1868, -0.2678,\n", + " -0.1828, -0.0612, -0.0612, -0.1097, -0.0515, -0.0443, -0.0500, -0.0535,\n", + " -0.0391, 0.0218, 0.0168, -0.0566, -0.1111, -0.2109, -0.1968, -0.2215,\n", + " -0.2062, -0.2081, -0.1264, -0.1198, -0.0661, 0.0313, 0.0269, 0.2579,\n", + " 0.3025, 0.3254, 0.2398]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0011783749796450138\n", + "Grad encoder.fc1.bias: 0.0007013490539975464\n", + "Grad encoder.encoder.0.weight: 0.00020833637972828\n", + "Grad encoder.encoder.0.bias: 0.0005989083438180387\n", + "Grad encoder.encoder.2.weight: 0.0001611329207662493\n", + "Grad encoder.encoder.2.bias: 0.0008113819640129805\n", + "Grad encoder.encoder.4.weight: 0.00029688593349419534\n", + "Grad encoder.encoder.4.bias: 0.0017695063725113869\n", + "Grad decoder.fc1.0.weight: 0.00011402042582631111\n", + "Grad decoder.fc1.0.bias: 0.0008326442912220955\n", + "Grad decoder.fc1.2.weight: 0.00011286995140835643\n", + "Grad decoder.fc1.2.bias: 0.0008671883260831237\n", + "Grad decoder.fc1.4.weight: 8.838393114274368e-05\n", + "Grad decoder.fc1.4.bias: 0.0007596658542752266\n", + "Grad decoder.fc2.weight: 0.00015747566067148\n", + "Grad decoder.fc2.bias: 0.0015217942418530583\n", + "Grad _memory_unit.weight_ih_l0: 2.8027694497723132e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.4167841881280765e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.2377738534705713e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.4020364687894471e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001596793590579182\n", + "Grad _memory_unit.bias_hh_l1: 8.616513514425606e-05\n", + "Data X Sample: tensor([[1.4597, 1.8818, 2.1818, 2.4774, 2.4348, 2.5266, 2.6114, 2.7711, 2.7412,\n", + " 2.9478, 2.8646, 2.8083, 2.8162, 2.8055, 2.7716, 2.6339, 2.6384, 2.8725,\n", + " 2.8559, 2.7394, 2.8732, 2.8904, 2.7785, 2.5328, 2.3554, 2.2776, 2.1765,\n", + " 2.1943, 1.8040, 1.7620, 1.6168, 1.6414, 1.3860, 0.9177, 1.2721, 1.2794,\n", + " 1.3057, 1.6326, 1.9015, 1.8243, 1.3507, 0.7727, 0.8246, 1.4869, 2.0257,\n", + " 2.5961, 1.5094, 2.2597]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5874, 0.2069, -0.2294, 0.5985, -1.2492, -0.9277, -1.9748, -2.1774,\n", + " -1.1075, -0.8076, -0.7262, 0.0031, 0.4888, 0.0251, 0.1562, -0.1577,\n", + " -1.0954, 0.9831, 0.2381, -0.9229, 0.8439, 1.9515, -0.0528, -0.7070,\n", + " -1.5883, 0.7772, 0.9339, 0.9675, 1.5116, 1.2837, 0.9872, -0.2725,\n", + " 0.6679, 0.0840, 0.1157, -0.1978, -0.5002, -0.1769, -0.2341, -0.5048,\n", + " -0.2935, -0.5898, -0.0083]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.5102, -0.5219, -0.2034, -0.4805, -0.2562, 0.0179, 0.3138, 0.4527,\n", + " 0.3421, 0.3587, 0.4264, -0.1010, -0.2797, -0.3536, -0.3586, -0.4806,\n", + " -0.3867, -0.2074, -0.0810, -0.2141, -0.1473, -0.0768, -0.0867, -0.0685,\n", + " -0.0807, 0.0448, 0.1379, 0.0485, -0.0558, -0.2958, -0.2438, -0.3395,\n", + " -0.2664, -0.4619, -0.2557, -0.2156, -0.0314, 0.0464, 0.0316, 0.5700,\n", + " 0.6171, 0.5688, 0.4963]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0009898081189021468\n", + "Grad encoder.fc1.bias: 0.0005472427001222968\n", + "Grad encoder.encoder.0.weight: 0.0002039944229181856\n", + "Grad encoder.encoder.0.bias: 0.0005227247020229697\n", + "Grad encoder.encoder.2.weight: 0.00015811074990779161\n", + "Grad encoder.encoder.2.bias: 0.0008399342186748981\n", + "Grad encoder.encoder.4.weight: 0.0003387625911273062\n", + "Grad encoder.encoder.4.bias: 0.0021172198466956615\n", + "Grad decoder.fc1.0.weight: 0.00010077800834551454\n", + "Grad decoder.fc1.0.bias: 0.0009039107244461775\n", + "Grad decoder.fc1.2.weight: 0.00011679658928187564\n", + "Grad decoder.fc1.2.bias: 0.0009514816338196397\n", + "Grad decoder.fc1.4.weight: 0.00010614847997203469\n", + "Grad decoder.fc1.4.bias: 0.001035472028888762\n", + "Grad decoder.fc2.weight: 0.00017239600128959864\n", + "Grad decoder.fc2.bias: 0.0017864549299702048\n", + "Grad _memory_unit.weight_ih_l0: 3.139457476208918e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.935477333376184e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.3003990867873654e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0951984222629108e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00017489350284449756\n", + "Grad _memory_unit.bias_hh_l1: 9.25753774936311e-05\n", + "Data X Sample: tensor([[1.7334, 1.9313, 2.0511, 2.2674, 2.3358, 2.3425, 2.4188, 2.5411, 2.4410,\n", + " 2.4612, 2.5474, 2.5746, 2.5055, 2.3884, 2.3555, 2.3303, 2.3098, 2.4412,\n", + " 2.5193, 2.5590, 2.5714, 2.6117, 2.5857, 2.6913, 2.7120, 2.7268, 2.7732,\n", + " 2.7612, 2.3694, 2.4269, 2.4217, 2.3682, 2.0394, 1.3090, 1.8188, 1.7074,\n", + " 1.6459, 1.5742, 1.6100, 1.4356, 1.2409, 0.7946, 0.7457, 1.3491, 2.1089,\n", + " 2.2129, 1.4414, 2.0877]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.2074, 0.6594, -2.6384, 0.5033, 1.7012, -0.5884, -0.6061, -0.1785,\n", + " -0.2746, -0.4872, -0.5042, -0.0450, -0.2559, 0.9989, -0.2795, 0.6855,\n", + " 0.1668, 0.2391, -0.3561, -0.1255, -0.5005, -0.3237, -0.1660, -0.5181,\n", + " -1.1273, -0.3745, 0.1835, -0.3805, 0.4925, 0.2469, 0.0998, 0.7450,\n", + " 0.6001, 0.8557, 0.5117, 0.4979, -0.2391, 0.4911, 0.3478, -0.4085,\n", + " -0.4602, -0.8061, -0.6765]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.1541, 0.1238, 0.0529, 0.0479, -0.0464, -0.0727, -0.1583, -0.1501,\n", + " -0.0274, -0.1051, -0.0977, 0.0470, 0.0712, 0.1230, 0.0604, 0.1114,\n", + " 0.0950, 0.0051, 0.0517, 0.0022, -0.0238, 0.0517, 0.0144, 0.0087,\n", + " -0.0008, 0.0028, -0.0073, 0.0249, 0.1216, 0.1552, 0.0962, 0.0621,\n", + " 0.1256, 0.0950, 0.0843, 0.0662, -0.0303, -0.0358, -0.0042, -0.0909,\n", + " -0.0770, -0.0579, -0.0744]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.002596281236037612\n", + "Grad encoder.fc1.bias: 0.0014863538090139627\n", + "Grad encoder.encoder.0.weight: 0.0005007461877539754\n", + "Grad encoder.encoder.0.bias: 0.001443527638912201\n", + "Grad encoder.encoder.2.weight: 0.00044257083209231496\n", + "Grad encoder.encoder.2.bias: 0.0022511626593768597\n", + "Grad encoder.encoder.4.weight: 0.0010087547125294805\n", + "Grad encoder.encoder.4.bias: 0.005941660609096289\n", + "Grad decoder.fc1.0.weight: 0.0002354794996790588\n", + "Grad decoder.fc1.0.bias: 0.0023031134624034166\n", + "Grad decoder.fc1.2.weight: 0.0002403086400590837\n", + "Grad decoder.fc1.2.bias: 0.002335558645427227\n", + "Grad decoder.fc1.4.weight: 0.0002002946857828647\n", + "Grad decoder.fc1.4.bias: 0.0023073451593518257\n", + "Grad decoder.fc2.weight: 0.0002518506080377847\n", + "Grad decoder.fc2.bias: 0.0033279687631875277\n", + "Grad _memory_unit.weight_ih_l0: 6.046213457011618e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00015965172497089952\n", + "Grad _memory_unit.bias_hh_l0: 8.509005419909954e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.4489341740263626e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00043834204552695155\n", + "Grad _memory_unit.bias_hh_l1: 0.0002293006982654333\n", + "Data X Sample: tensor([[1.4820, 1.5920, 1.7085, 1.8192, 1.9755, 2.0847, 2.1631, 2.0301, 2.9585,\n", + " 3.8893, 4.1589, 3.9262, 3.8948, 3.6862, 3.6668, 3.4736, 3.3743, 3.4142,\n", + " 3.3536, 3.2006, 3.3074, 3.2241, 2.8604, 2.7714, 2.7927, 2.8235, 2.8957,\n", + " 2.9284, 3.0459, 2.9345, 3.0831, 3.1833, 3.4541, 2.4784, 4.2037, 4.5385,\n", + " 4.9024, 5.2263, 5.5334, 5.4700, 1.1072, 0.5815, 0.6204, 1.0907, 1.5698,\n", + " 1.8127, 1.1082, 1.6655]], device='cuda:0')\n", + "Data Y Sample: tensor([[-4.4875e-01, -5.3259e-01, 1.1324e-02, 4.1655e-01, 4.5932e-01,\n", + " 8.3638e-02, 1.5909e-03, -3.5566e-01, -1.6940e-01, 4.4779e-01,\n", + " -3.6273e-01, -3.6459e-01, -2.2379e-01, -5.1381e-02, 1.3109e+00,\n", + " 1.7779e+00, 1.1749e+00, 6.8526e-01, -9.7353e-01, -9.5904e-01,\n", + " -3.4621e-01, -2.4122e-01, 3.6070e-01, 3.2586e-01, 2.6343e+00,\n", + " 6.6535e-01, -2.4223e-01, -8.4872e-01, -1.4784e-01, -1.2603e-01,\n", + " 2.3991e-01, -5.2331e-01, 4.6548e-01, -2.0957e-01, 4.8162e-01,\n", + " 2.5080e-01, 6.2066e-02, -5.1006e-01, 0.0000e+00, -6.9180e-01,\n", + " -6.0999e-01, -7.1684e-01, 5.9001e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2644, -0.3203, -0.1698, -0.1540, -0.0791, 0.0809, 0.1721, 0.3370,\n", + " 0.2489, 0.3683, 0.3045, -0.1920, -0.2422, -0.3233, -0.2600, -0.3496,\n", + " -0.2367, -0.0687, -0.1522, -0.1183, -0.0279, -0.0861, -0.0859, -0.1021,\n", + " -0.0482, 0.0336, 0.0245, -0.0628, -0.1770, -0.2412, -0.2663, -0.2931,\n", + " -0.2727, -0.2849, -0.2134, -0.1264, -0.1223, 0.0031, 0.0736, 0.3402,\n", + " 0.3888, 0.4417, 0.2947]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005279268370941281\n", + "Grad encoder.fc1.bias: 0.0007434067083522677\n", + "Grad encoder.encoder.0.weight: 0.00011400268704164773\n", + "Grad encoder.encoder.0.bias: 0.0005709261167794466\n", + "Grad encoder.encoder.2.weight: 0.00010587206634227186\n", + "Grad encoder.encoder.2.bias: 0.0005727849202230573\n", + "Grad encoder.encoder.4.weight: 0.00025292273494414985\n", + "Grad encoder.encoder.4.bias: 0.0012031856458634138\n", + "Grad decoder.fc1.0.weight: 0.00010777550050988793\n", + "Grad decoder.fc1.0.bias: 0.0006447474588640034\n", + "Grad decoder.fc1.2.weight: 0.00012778848758898675\n", + "Grad decoder.fc1.2.bias: 0.0008358466438949108\n", + "Grad decoder.fc1.4.weight: 0.00010266268509440124\n", + "Grad decoder.fc1.4.bias: 0.0007526554400101304\n", + "Grad decoder.fc2.weight: 0.0001601602853043005\n", + "Grad decoder.fc2.bias: 0.002206971403211355\n", + "Grad _memory_unit.weight_ih_l0: 2.552265505073592e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.660475188866258e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.25817958987318e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.2878890629508533e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001803043414838612\n", + "Grad _memory_unit.bias_hh_l1: 9.78249590843916e-05\n", + "Data X Sample: tensor([[ 0.0202, 0.0058, 0.0346, 0.0219, 0.0068, 0.0206, 0.0216, 0.0128,\n", + " 0.0220, 0.0095, 0.0190, -0.0078, 0.0044, -0.0082, -0.0101, 0.0055,\n", + " -0.0409, -0.0638, -0.1012, -0.1023, -0.0564, -0.0551, -0.1398, -0.1489,\n", + " -0.1013, -0.2090, -0.2504, -0.4038, -0.0486, -0.0852, -0.0665, -0.0525,\n", + " -0.0616, -0.0320, -0.0613, -0.0292, -0.0275, -0.0345, -0.0444, -0.0199,\n", + " 0.0239, -0.0100, -0.0141, -0.0172, 0.0119, 0.0343, 0.0476, -0.0078]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4571, 0.2400, -0.3485, 0.5799, 1.0566, 0.2614, -0.1902, -0.2001,\n", + " -0.1064, -0.2371, -0.1096, 0.5422, 0.9179, 0.7172, -0.1835, 0.1825,\n", + " -0.2107, 0.4708, -0.9195, 0.2233, -1.7895, -0.6553, -1.3011, -0.5540,\n", + " -0.7732, -0.4506, -0.2502, 0.4388, 0.2189, 0.2589, -0.3850, 0.0936,\n", + " 0.2391, 0.2169, -0.0494, 0.4852, -0.6306, 0.7816, -2.2862, -0.2761,\n", + " -0.3441, -0.4705, -0.7963]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5228, 0.4131, 0.0896, 0.3342, -0.1327, -0.2735, -0.6322, -0.7105,\n", + " -0.2748, -0.3885, -0.3837, 0.1814, 0.2558, 0.3489, 0.0973, 0.2256,\n", + " 0.3060, 0.0463, 0.1314, 0.0783, 0.0281, 0.0102, 0.0228, -0.0256,\n", + " -0.0431, 0.0489, 0.0288, 0.1468, 0.4614, 0.5612, 0.3916, 0.4476,\n", + " 0.4454, 0.4780, 0.2657, 0.1603, -0.1153, -0.0550, -0.0426, -0.4342,\n", + " -0.4641, -0.3372, -0.2679]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0008680670289322734\n", + "Grad encoder.fc1.bias: 0.0008553923107683659\n", + "Grad encoder.encoder.0.weight: 0.00017627635679673404\n", + "Grad encoder.encoder.0.bias: 0.0007520058425143361\n", + "Grad encoder.encoder.2.weight: 0.0001313117245445028\n", + "Grad encoder.encoder.2.bias: 0.0008055774960666895\n", + "Grad encoder.encoder.4.weight: 0.000255364750046283\n", + "Grad encoder.encoder.4.bias: 0.0014411680167540908\n", + "Grad decoder.fc1.0.weight: 0.00011936845112359151\n", + "Grad decoder.fc1.0.bias: 0.0008193370886147022\n", + "Grad decoder.fc1.2.weight: 0.00015034877287689596\n", + "Grad decoder.fc1.2.bias: 0.0008388072601519525\n", + "Grad decoder.fc1.4.weight: 0.00011364072997821495\n", + "Grad decoder.fc1.4.bias: 0.0009333930793218315\n", + "Grad decoder.fc2.weight: 0.00020395613682921976\n", + "Grad decoder.fc2.bias: 0.001825458137318492\n", + "Grad _memory_unit.weight_ih_l0: 2.6339461328461766e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.900023436173797e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.8398924516513944e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.296893424296286e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00017286714864894748\n", + "Grad _memory_unit.bias_hh_l1: 9.332361514680088e-05\n", + "Data X Sample: tensor([[1.4884, 1.6983, 1.8482, 2.0247, 2.2180, 2.2276, 2.2494, 2.3921, 3.7860,\n", + " 4.2826, 4.3112, 4.4559, 4.0124, 3.9179, 3.9190, 3.7321, 3.6951, 3.6501,\n", + " 3.5993, 3.6320, 3.4743, 3.4185, 3.1062, 2.8821, 2.8941, 2.9723, 3.0263,\n", + " 3.0549, 3.0737, 3.3210, 3.3805, 3.3851, 3.8457, 2.8286, 4.6180, 4.8037,\n", + " 5.0244, 5.3217, 6.0088, 5.7537, 1.1311, 0.6930, 0.6548, 1.2457, 1.7839,\n", + " 2.0814, 1.2306, 1.7437]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3164, -0.6138, 0.4157, 0.9586, -0.3208, -0.8268, 0.6984, 0.8083,\n", + " -0.7077, -0.7386, -0.5693, -1.1486, -0.2764, -1.7359, -1.3279, -1.0982,\n", + " -1.2611, -0.0746, -0.7809, -0.5797, 0.3452, -0.5332, -0.7342, -0.0857,\n", + " 0.7419, -0.3124, 0.9156, 1.2584, 0.8012, 0.0285, 0.5154, -0.2330,\n", + " 1.1048, 0.0952, 0.4760, 0.0644, 0.7922, -0.3755, 0.5660, -1.6817,\n", + " -0.7098, -1.1440, -0.3710]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1203, -0.1678, -0.1194, -0.0490, -0.0613, 0.0548, 0.0649, 0.2045,\n", + " 0.1417, 0.2611, 0.1746, -0.1695, -0.1744, -0.2100, -0.1488, -0.1908,\n", + " -0.1576, -0.0206, -0.1447, -0.0719, 0.0297, -0.0670, -0.0874, -0.1065,\n", + " -0.0137, 0.0277, 0.0136, -0.0460, -0.1244, -0.1293, -0.1874, -0.1861,\n", + " -0.1722, -0.1566, -0.1098, -0.0626, -0.1106, -0.0010, 0.0673, 0.1951,\n", + " 0.2371, 0.2807, 0.1519]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0009108364465646446\n", + "Grad encoder.fc1.bias: 0.0015108633087947965\n", + "Grad encoder.encoder.0.weight: 0.0001710811338853091\n", + "Grad encoder.encoder.0.bias: 0.0011033567134290934\n", + "Grad encoder.encoder.2.weight: 0.00012514580157585442\n", + "Grad encoder.encoder.2.bias: 0.0009716766653582454\n", + "Grad encoder.encoder.4.weight: 0.0002159993164241314\n", + "Grad encoder.encoder.4.bias: 0.0022185412235558033\n", + "Grad decoder.fc1.0.weight: 0.00010369289520895109\n", + "Grad decoder.fc1.0.bias: 0.0010365559719502926\n", + "Grad decoder.fc1.2.weight: 0.00011991804058197886\n", + "Grad decoder.fc1.2.bias: 0.0008157138363458216\n", + "Grad decoder.fc1.4.weight: 9.7324897069484e-05\n", + "Grad decoder.fc1.4.bias: 0.0007438314496539533\n", + "Grad decoder.fc2.weight: 0.00018055702093988657\n", + "Grad decoder.fc2.bias: 0.001605846337042749\n", + "Grad _memory_unit.weight_ih_l0: 2.608515933388844e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.839317549951375e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.4138767407275736e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.3155713531887159e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001981896348297596\n", + "Grad _memory_unit.bias_hh_l1: 0.00010703392035793513\n", + "Data X Sample: tensor([[1.3992, 1.6065, 1.6724, 1.7580, 1.8065, 1.9477, 2.0799, 2.0329, 3.6981,\n", + " 4.0615, 4.3239, 4.0177, 4.0191, 3.8607, 3.6845, 3.4093, 3.4231, 3.4470,\n", + " 3.4073, 3.2229, 3.3737, 3.1935, 2.8074, 2.7409, 2.8302, 2.8861, 2.8345,\n", + " 2.9407, 2.8378, 2.9705, 3.1636, 3.0507, 3.4717, 2.7027, 4.4317, 4.7064,\n", + " 5.1227, 5.3747, 5.9011, 5.7650, 1.0738, 0.6173, 0.6710, 1.0707, 1.6095,\n", + " 1.7383, 1.1762, 1.6108]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.8850, -0.5926, -1.0822, -1.1537, 0.4129, -0.1731, 0.4097, 0.3843,\n", + " 0.6419, 0.4765, 0.7053, -0.5100, -0.9844, -0.3542, 0.6344, -1.0349,\n", + " -1.5547, -0.4265, -0.9920, -0.1130, -0.4348, -0.5323, -1.9974, -0.1539,\n", + " -0.6754, 3.0516, -0.3711, -0.5920, 0.0933, -0.8959, -0.4361, -0.9786,\n", + " -0.5796, -0.8103, -1.2780, -0.5982, -0.8958, -0.4097, 0.9794, 0.4383,\n", + " 1.0276, 0.8727, -0.4901]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.0812, -0.1277, -0.1017, -0.0338, -0.0615, 0.0441, 0.0381, 0.1540,\n", + " 0.1065, 0.2136, 0.1269, -0.1533, -0.1484, -0.1706, -0.1099, -0.1428,\n", + " -0.1319, -0.0120, -0.1324, -0.0590, 0.0383, -0.0591, -0.0890, -0.0983,\n", + " -0.0008, 0.0219, 0.0134, -0.0399, -0.1018, -0.0972, -0.1518, -0.1523,\n", + " -0.1320, -0.1188, -0.0674, -0.0367, -0.0971, -0.0088, 0.0584, 0.1508,\n", + " 0.1859, 0.2229, 0.1109]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0009342270786873996\n", + "Grad encoder.fc1.bias: 0.0007700005080550909\n", + "Grad encoder.encoder.0.weight: 0.00017229121294803917\n", + "Grad encoder.encoder.0.bias: 0.0006234326283447444\n", + "Grad encoder.encoder.2.weight: 0.00013290366041474044\n", + "Grad encoder.encoder.2.bias: 0.0006546168588101864\n", + "Grad encoder.encoder.4.weight: 0.000263325113337487\n", + "Grad encoder.encoder.4.bias: 0.0011242059990763664\n", + "Grad decoder.fc1.0.weight: 0.00012600199261214584\n", + "Grad decoder.fc1.0.bias: 0.0007055093301460147\n", + "Grad decoder.fc1.2.weight: 0.00011440052185207605\n", + "Grad decoder.fc1.2.bias: 0.0006261717062443495\n", + "Grad decoder.fc1.4.weight: 9.51176043599844e-05\n", + "Grad decoder.fc1.4.bias: 0.0007046395912766457\n", + "Grad decoder.fc2.weight: 0.00013875997683499008\n", + "Grad decoder.fc2.bias: 0.0020316829904913902\n", + "Grad _memory_unit.weight_ih_l0: 3.3054388040909544e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.132675505592488e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.0512810553773306e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.5550225725746714e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001402964990120381\n", + "Grad _memory_unit.bias_hh_l1: 7.674983498873189e-05\n", + "Data X Sample: tensor([[1.4353, 1.5687, 1.7806, 1.7711, 1.8799, 2.2025, 2.2447, 2.1592, 3.8885,\n", + " 4.2668, 4.3810, 4.2631, 3.9969, 3.8307, 3.6744, 3.6090, 3.5158, 3.6656,\n", + " 3.5622, 3.5855, 3.6141, 3.4047, 2.9448, 2.7600, 2.7289, 2.8783, 2.9330,\n", + " 2.9937, 3.1674, 3.0753, 3.2755, 3.3049, 3.7753, 2.7485, 4.5665, 4.9034,\n", + " 4.9595, 5.5496, 6.0912, 5.9182, 1.0643, 0.6592, 0.6346, 1.1424, 1.6848,\n", + " 1.6640, 1.1762, 1.7124]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1572, -1.0962, 0.2978, 0.5267, 0.3384, -0.0093, 0.2216, 0.2305,\n", + " 1.0959, 0.1486, 0.3523, -0.2393, -1.1237, -0.5455, -0.0797, 0.1713,\n", + " 0.3012, 1.9136, -1.0894, -0.7258, 0.6650, -1.5092, 0.2970, -0.3990,\n", + " -1.5617, -3.3942, 0.5170, 0.0671, -1.4732, -0.4386, 0.3604, 0.4487,\n", + " -0.7979, -0.8956, -0.3867, 0.1486, 0.3346, 0.4465, 0.7827, 0.3038,\n", + " 0.3836, 0.3694, 0.2062]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.0767, -0.1159, -0.0910, -0.0285, -0.0615, 0.0394, 0.0319, 0.1385,\n", + " 0.0969, 0.1930, 0.1182, -0.1492, -0.1408, -0.1633, -0.1007, -0.1269,\n", + " -0.1187, -0.0096, -0.1294, -0.0571, 0.0389, -0.0534, -0.0897, -0.0918,\n", + " 0.0031, 0.0208, 0.0125, -0.0394, -0.0966, -0.0919, -0.1447, -0.1454,\n", + " -0.1225, -0.1103, -0.0496, -0.0346, -0.0895, -0.0104, 0.0574, 0.1422,\n", + " 0.1712, 0.2032, 0.0998]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005394348409026861\n", + "Grad encoder.fc1.bias: 0.0005140446592122316\n", + "Grad encoder.encoder.0.weight: 0.00013254396617412567\n", + "Grad encoder.encoder.0.bias: 0.0005021698889322579\n", + "Grad encoder.encoder.2.weight: 0.00010215015936410055\n", + "Grad encoder.encoder.2.bias: 0.0006930557428859174\n", + "Grad encoder.encoder.4.weight: 0.0002756827452685684\n", + "Grad encoder.encoder.4.bias: 0.0023560733534395695\n", + "Grad decoder.fc1.0.weight: 9.6397205197718e-05\n", + "Grad decoder.fc1.0.bias: 0.0010390572715550661\n", + "Grad decoder.fc1.2.weight: 0.00010761995508801192\n", + "Grad decoder.fc1.2.bias: 0.0009058564901351929\n", + "Grad decoder.fc1.4.weight: 9.202852379530668e-05\n", + "Grad decoder.fc1.4.bias: 0.0008273877901956439\n", + "Grad decoder.fc2.weight: 0.00015387324674520642\n", + "Grad decoder.fc2.bias: 0.0018749227747321129\n", + "Grad _memory_unit.weight_ih_l0: 2.3592378056491725e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00010709053458413109\n", + "Grad _memory_unit.bias_hh_l0: 5.9079276979900897e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.2694546967395581e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00022787296620663255\n", + "Grad _memory_unit.bias_hh_l1: 0.0001229353219969198\n", + "Data X Sample: tensor([[1.5011, 1.7507, 1.8422, 1.9635, 2.0626, 2.0788, 2.1045, 3.8699, 4.2669,\n", + " 4.4074, 4.5840, 4.4598, 4.2543, 3.9943, 3.9443, 3.7102, 3.6856, 3.6211,\n", + " 3.6840, 3.5651, 3.5185, 3.3864, 2.9086, 2.8840, 2.8415, 2.9097, 2.9437,\n", + " 3.0181, 3.0459, 3.1507, 3.2161, 3.2690, 3.8875, 2.8652, 4.6842, 4.9593,\n", + " 5.1640, 5.6026, 6.1926, 6.1339, 1.0977, 0.6930, 0.6791, 1.1711, 1.7244,\n", + " 1.8413, 1.2986, 1.9548]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 2.7831e-01, 5.1204e-02, -8.8367e-01, -4.8123e-04, -1.5066e+00,\n", + " 4.5739e-01, 1.0362e+00, 1.0274e+00, -6.8952e-01, 6.4655e-01,\n", + " 7.7241e-01, -1.1496e+00, 2.4847e-02, 2.2410e-01, 8.3045e-01,\n", + " -1.6557e+00, -7.4157e-01, -3.9820e-01, -1.1207e+00, -4.0331e-01,\n", + " -1.1135e+00, -7.6498e-01, -1.7676e+00, -1.0164e+00, -7.0041e-01,\n", + " -3.5242e-01, 7.9091e-01, -2.7416e-01, 2.4267e-01, -4.6116e-01,\n", + " -1.4905e+00, -1.5845e+00, -4.4768e-01, -9.0916e-01, -8.0382e-01,\n", + " 4.7881e-01, -4.5720e-02, 9.0933e-01, 4.0193e-03, 7.5206e-01,\n", + " 6.8425e-01, 3.0734e-01, 1.1454e+00]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.0711, -0.0994, -0.0774, -0.0353, -0.0606, 0.0357, 0.0340, 0.1280,\n", + " 0.0929, 0.1787, 0.1096, -0.1426, -0.1309, -0.1495, -0.0929, -0.1097,\n", + " -0.1150, -0.0039, -0.1154, -0.0559, 0.0388, -0.0510, -0.0849, -0.0784,\n", + " -0.0019, 0.0185, 0.0087, -0.0351, -0.0863, -0.0838, -0.1331, -0.1345,\n", + " -0.1116, -0.1076, -0.0429, -0.0363, -0.0798, -0.0052, 0.0516, 0.1316,\n", + " 0.1633, 0.1909, 0.0972]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0013478896580636501\n", + "Grad encoder.fc1.bias: 0.0008963306318037212\n", + "Grad encoder.encoder.0.weight: 0.000268864183453843\n", + "Grad encoder.encoder.0.bias: 0.0008215783163905144\n", + "Grad encoder.encoder.2.weight: 0.0002231586549896747\n", + "Grad encoder.encoder.2.bias: 0.0009958026930689812\n", + "Grad encoder.encoder.4.weight: 0.0005164071917533875\n", + "Grad encoder.encoder.4.bias: 0.002310563810169697\n", + "Grad decoder.fc1.0.weight: 0.0001503114472143352\n", + "Grad decoder.fc1.0.bias: 0.0010582361137494445\n", + "Grad decoder.fc1.2.weight: 0.0002087543543893844\n", + "Grad decoder.fc1.2.bias: 0.0016073610167950392\n", + "Grad decoder.fc1.4.weight: 0.00016186325228773057\n", + "Grad decoder.fc1.4.bias: 0.0016727984184399247\n", + "Grad decoder.fc2.weight: 0.00021914961689617485\n", + "Grad decoder.fc2.bias: 0.0036929412744939327\n", + "Grad _memory_unit.weight_ih_l0: 5.971949576633051e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00014175432443153113\n", + "Grad _memory_unit.bias_hh_l0: 7.657625246793032e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.96945638890611e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00025137318880297244\n", + "Grad _memory_unit.bias_hh_l1: 0.00013478612527251244\n", + "Data X Sample: tensor([[1.4311, 1.5789, 1.7956, 1.9526, 2.0233, 1.9668, 2.0645, 2.0911, 3.9105,\n", + " 4.2479, 4.2858, 4.3040, 4.1877, 4.0706, 3.8837, 3.8278, 3.7564, 3.6772,\n", + " 3.5374, 3.5651, 3.6313, 3.4690, 3.0460, 2.9699, 3.0217, 3.0716, 3.0929,\n", + " 3.1527, 3.0737, 3.2948, 3.3420, 3.4293, 3.9139, 2.7897, 4.6155, 4.7964,\n", + " 5.3193, 5.5337, 6.1609, 5.9381, 1.0834, 0.6432, 0.6184, 1.1855, 1.6253,\n", + " 1.8184, 1.2782, 1.8375]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1634, 0.1387, 0.0990, -0.3312, 0.6110, 2.2503, 0.4105, 0.3380,\n", + " -0.5101, 0.6835, 0.3955, -0.2653, -0.0569, -0.1027, 0.6039, 0.7989,\n", + " 0.6471, -0.6007, -0.2267, -2.1981, 0.3262, -0.6900, 0.1243, 0.4193,\n", + " 0.6584, 1.1119, -0.5162, -0.1157, -0.4725, -0.3957, -0.6987, -0.2493,\n", + " -0.8518, 0.2629, 0.1699, -0.2533, 0.7333, 0.7952, 0.0929, 0.1653,\n", + " 0.5587, -0.1942, -0.4672]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1094, -0.1360, -0.1003, -0.0574, -0.0700, 0.0408, 0.0700, 0.1741,\n", + " 0.1190, 0.2151, 0.1536, -0.1706, -0.1581, -0.1874, -0.1234, -0.1444,\n", + " -0.1373, -0.0123, -0.1439, -0.0753, 0.0295, -0.0570, -0.1047, -0.0791,\n", + " -0.0030, 0.0319, 0.0167, -0.0369, -0.0984, -0.1057, -0.1598, -0.1755,\n", + " -0.1228, -0.1502, -0.0630, -0.0521, -0.0883, -0.0121, 0.0603, 0.1859,\n", + " 0.2086, 0.2452, 0.1332]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005608954816125333\n", + "Grad encoder.fc1.bias: 0.00038553873309865594\n", + "Grad encoder.encoder.0.weight: 0.00011445217387517914\n", + "Grad encoder.encoder.0.bias: 0.0003539682656992227\n", + "Grad encoder.encoder.2.weight: 9.086858335649595e-05\n", + "Grad encoder.encoder.2.bias: 0.00042279085027985275\n", + "Grad encoder.encoder.4.weight: 0.00018473187810741365\n", + "Grad encoder.encoder.4.bias: 0.0008710789261385798\n", + "Grad decoder.fc1.0.weight: 7.39503011573106e-05\n", + "Grad decoder.fc1.0.bias: 0.0004058192134834826\n", + "Grad decoder.fc1.2.weight: 9.184450027532876e-05\n", + "Grad decoder.fc1.2.bias: 0.0005496508674696088\n", + "Grad decoder.fc1.4.weight: 7.552385068265721e-05\n", + "Grad decoder.fc1.4.bias: 0.0006644336972385645\n", + "Grad decoder.fc2.weight: 0.0001477214100304991\n", + "Grad decoder.fc2.bias: 0.002143996302038431\n", + "Grad _memory_unit.weight_ih_l0: 2.3113005227060057e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.139765173429623e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.378689871169627e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.630365300632548e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010426146036479622\n", + "Grad _memory_unit.bias_hh_l1: 5.6504686654079705e-05\n", + "Data X Sample: tensor([[1.5860, 1.8381, 1.9053, 2.0335, 2.2231, 2.3602, 2.4265, 2.4417, 2.4874,\n", + " 2.5607, 2.5410, 2.5804, 2.4945, 2.4674, 2.4689, 2.3973, 2.3271, 2.4064,\n", + " 2.4223, 2.3656, 2.5346, 2.6209, 2.6074, 2.5996, 2.6294, 2.5597, 2.5760,\n", + " 2.6266, 2.3521, 2.4138, 2.3797, 2.3709, 2.2660, 1.4829, 1.9291, 1.7634,\n", + " 1.6341, 1.4762, 1.6100, 1.6285, 1.3459, 0.7408, 0.7195, 1.2945, 1.8156,\n", + " 2.0586, 1.3666, 1.8297]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6979, 0.7003, 1.3425, 1.2421, 1.7330, -0.0029, -0.6251, -0.2572,\n", + " -0.3973, -0.7513, -0.7741, 1.1718, 1.7282, 0.2609, -0.0115, 0.1921,\n", + " 0.9244, -1.3031, 1.0758, 0.3756, 0.5976, -0.5130, 0.7506, -0.2339,\n", + " 0.5747, -0.6987, -0.3794, -0.1682, 0.2168, 0.3586, 0.0369, -0.1006,\n", + " -0.0966, 0.8414, -0.0187, 0.6108, -0.3045, 0.4140, -0.7367, -0.5118,\n", + " -0.3985, -0.8495, 0.1904]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3327, 0.3700, 0.0773, 0.1855, 0.0318, -0.1439, -0.3372, -0.3696,\n", + " -0.1012, -0.2419, -0.2174, 0.1658, 0.1014, 0.2356, 0.2103, 0.3020,\n", + " 0.2739, -0.0050, 0.0638, 0.0619, 0.0796, 0.0585, 0.0809, 0.0171,\n", + " 0.0681, 0.0182, -0.0218, 0.0084, 0.1663, 0.2571, 0.2351, 0.1817,\n", + " 0.3098, 0.2757, 0.2126, 0.1973, -0.0709, -0.1011, 0.0029, -0.3098,\n", + " -0.2745, -0.2568, -0.2435]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0008165808394551277\n", + "Grad encoder.fc1.bias: 0.0006114947609603405\n", + "Grad encoder.encoder.0.weight: 0.00015641030040569603\n", + "Grad encoder.encoder.0.bias: 0.0005924432771280408\n", + "Grad encoder.encoder.2.weight: 0.00010154274059459567\n", + "Grad encoder.encoder.2.bias: 0.000677882693707943\n", + "Grad encoder.encoder.4.weight: 0.00020260705787222832\n", + "Grad encoder.encoder.4.bias: 0.0015164155047386885\n", + "Grad decoder.fc1.0.weight: 7.727626507403329e-05\n", + "Grad decoder.fc1.0.bias: 0.000785378972068429\n", + "Grad decoder.fc1.2.weight: 9.18749428819865e-05\n", + "Grad decoder.fc1.2.bias: 0.000810774858109653\n", + "Grad decoder.fc1.4.weight: 8.525687735527754e-05\n", + "Grad decoder.fc1.4.bias: 0.0009091458050534129\n", + "Grad decoder.fc2.weight: 0.00016309908824041486\n", + "Grad decoder.fc2.bias: 0.0021160212345421314\n", + "Grad _memory_unit.weight_ih_l0: 1.9359713405719958e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.2840623538941145e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.9840844945283607e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.401315426453948e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001286487968172878\n", + "Grad _memory_unit.bias_hh_l1: 6.890087388455868e-05\n", + "Data X Sample: tensor([[1.3462, 1.6371, 1.6724, 1.8389, 1.9926, 2.0552, 2.0968, 1.8370, 3.2075,\n", + " 4.1705, 4.3334, 4.4306, 4.0879, 3.9779, 3.7097, 3.5816, 3.5426, 3.6521,\n", + " 3.5064, 3.5558, 3.4620, 3.3603, 2.8170, 2.8172, 2.8002, 2.8861, 2.8345,\n", + " 2.9814, 3.0043, 3.1212, 3.1391, 3.2248, 3.8369, 2.7782, 4.6278, 4.8110,\n", + " 5.2013, 5.4781, 6.0025, 5.9097, 1.0595, 0.6313, 0.6245, 1.0620, 1.6491,\n", + " 1.8355, 1.2850, 1.8062]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5416, -0.6466, -1.3500, -0.2154, -0.6545, -0.0596, 0.2917, 0.1953,\n", + " 0.1150, 0.6034, 0.2149, 0.0835, -0.7040, -0.1047, 0.8618, -0.8300,\n", + " -1.8349, -0.2513, -1.0161, 0.0405, -0.4349, -0.8030, 0.4145, -0.6879,\n", + " -0.4693, -0.5417, -0.3521, -0.5766, 0.0696, -0.3820, -0.7819, -0.3113,\n", + " 0.0321, -0.0949, -0.8121, -0.0867, 0.4717, -0.5278, -0.5750, 0.4642,\n", + " 0.6245, 0.0773, 1.1081]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1564, -0.1734, -0.1319, -0.0905, -0.0490, 0.0780, 0.1460, 0.2695,\n", + " 0.1753, 0.2973, 0.2318, -0.2382, -0.1975, -0.2613, -0.1849, -0.2004,\n", + " -0.1993, -0.0161, -0.1775, -0.1214, 0.0162, -0.0848, -0.1270, -0.0741,\n", + " -0.0098, 0.0272, 0.0019, -0.0550, -0.1438, -0.1388, -0.2178, -0.2277,\n", + " -0.1663, -0.2432, -0.1410, -0.0896, -0.0860, 0.0015, 0.0731, 0.2777,\n", + " 0.3039, 0.3436, 0.2024]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.002794090425595641\n", + "Grad encoder.fc1.bias: 0.0013643588172271848\n", + "Grad encoder.encoder.0.weight: 0.0004193574422970414\n", + "Grad encoder.encoder.0.bias: 0.0011323548387736082\n", + "Grad encoder.encoder.2.weight: 0.0002459936949890107\n", + "Grad encoder.encoder.2.bias: 0.0011791503056883812\n", + "Grad encoder.encoder.4.weight: 0.0004366752691566944\n", + "Grad encoder.encoder.4.bias: 0.002433866960927844\n", + "Grad decoder.fc1.0.weight: 0.00012795311340596527\n", + "Grad decoder.fc1.0.bias: 0.0009509732481092215\n", + "Grad decoder.fc1.2.weight: 0.00013050291454419494\n", + "Grad decoder.fc1.2.bias: 0.0010348543291911483\n", + "Grad decoder.fc1.4.weight: 0.00010747126361820847\n", + "Grad decoder.fc1.4.bias: 0.0010520208161324263\n", + "Grad decoder.fc2.weight: 0.00021372563787735999\n", + "Grad decoder.fc2.bias: 0.0020077312365174294\n", + "Grad _memory_unit.weight_ih_l0: 3.90840505133383e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.956448775483295e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.482158303493634e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.3708518054045271e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002039844694081694\n", + "Grad _memory_unit.bias_hh_l1: 0.00010952299635391682\n", + "Data X Sample: tensor([[1.7323, 1.9692, 2.1217, 2.2740, 2.3238, 2.4206, 2.6407, 2.6107, 2.7046,\n", + " 2.6460, 2.7409, 2.7304, 2.6609, 2.6010, 2.5496, 2.5984, 2.6007, 2.6269,\n", + " 2.5689, 2.5608, 2.6253, 2.6546, 2.6773, 2.6683, 2.6932, 2.7190, 2.6000,\n", + " 2.6674, 2.3729, 2.5481, 2.2467, 2.3682, 2.1032, 1.3914, 1.8604, 1.7342,\n", + " 1.7049, 1.6299, 1.6607, 1.5235, 1.3172, 0.7926, 0.7983, 1.4237, 1.9940,\n", + " 2.1901, 1.4958, 2.0799]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.2551, 0.6801, 0.0778, 0.5406, 0.0758, -0.7500, -1.2278, -0.7051,\n", + " -0.6978, -1.4036, -1.2359, 0.5157, 0.9749, 0.0647, 0.3110, 1.4999,\n", + " 0.1475, 0.5741, 0.3203, 0.6961, 0.5152, 0.4109, -0.2695, 0.0737,\n", + " -0.0848, 0.5806, 1.1131, 0.0250, 1.0162, -0.3845, 0.4877, 1.1378,\n", + " 1.2246, 0.0167, 0.6275, 2.2878, -0.0344, 0.0182, 0.1391, -1.4974,\n", + " -1.3580, -0.8364, -0.4465]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3281, 0.3730, 0.0616, 0.1735, 0.0293, -0.1437, -0.3253, -0.3442,\n", + " -0.1044, -0.2412, -0.2183, 0.1577, 0.0886, 0.2377, 0.2142, 0.2965,\n", + " 0.2606, -0.0179, 0.0663, 0.0581, 0.0698, 0.0407, 0.0799, 0.0191,\n", + " 0.0592, 0.0228, -0.0301, -0.0083, 0.1523, 0.2441, 0.2279, 0.1769,\n", + " 0.3002, 0.2699, 0.2047, 0.1842, -0.0649, -0.1055, -0.0010, -0.2875,\n", + " -0.2566, -0.2365, -0.2359]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0015094344271346927\n", + "Grad encoder.fc1.bias: 0.0007998807122930884\n", + "Grad encoder.encoder.0.weight: 0.00023732053523417562\n", + "Grad encoder.encoder.0.bias: 0.0006496783462353051\n", + "Grad encoder.encoder.2.weight: 0.0001690560602582991\n", + "Grad encoder.encoder.2.bias: 0.0007269496563822031\n", + "Grad encoder.encoder.4.weight: 0.0002827708958648145\n", + "Grad encoder.encoder.4.bias: 0.001709122909232974\n", + "Grad decoder.fc1.0.weight: 8.02218564786017e-05\n", + "Grad decoder.fc1.0.bias: 0.0006096290308050811\n", + "Grad decoder.fc1.2.weight: 7.910390559118241e-05\n", + "Grad decoder.fc1.2.bias: 0.0005051904590800405\n", + "Grad decoder.fc1.4.weight: 9.552796836942434e-05\n", + "Grad decoder.fc1.4.bias: 0.0008212074171751738\n", + "Grad decoder.fc2.weight: 0.00021018880943302065\n", + "Grad decoder.fc2.bias: 0.002062701852992177\n", + "Grad _memory_unit.weight_ih_l0: 4.227835961501114e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00015777270891703665\n", + "Grad _memory_unit.bias_hh_l0: 8.408489520661533e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.229112604050897e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00022995573817752302\n", + "Grad _memory_unit.bias_hh_l1: 0.0001247007749043405\n", + "Data X Sample: tensor([[1.3154, 1.4696, 1.6409, 1.8236, 1.8543, 1.9933, 2.1153, 2.3992, 3.9080,\n", + " 4.0899, 4.0954, 4.1676, 4.0191, 3.9425, 3.6114, 3.6459, 3.5599, 3.4780,\n", + " 3.5085, 3.4219, 3.4007, 3.4246, 3.0580, 2.8878, 2.8903, 3.0716, 2.9703,\n", + " 2.9121, 3.0459, 3.2358, 3.2615, 3.2939, 3.7687, 2.7599, 4.4243, 4.7185,\n", + " 5.0027, 5.2051, 5.7046, 5.6147, 1.0213, 0.6253, 0.6245, 1.0620, 1.5936,\n", + " 1.8241, 1.1490, 1.7515]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5888, -0.4754, -1.2338, -0.0954, -0.6836, 0.4958, 0.5299, 0.5312,\n", + " 0.5586, 0.4414, 0.4412, -0.8115, -0.1544, -0.9036, -0.4411, -0.4619,\n", + " -0.1243, 1.7386, 2.5989, -0.6141, -0.5928, -0.2087, 0.3776, -0.4606,\n", + " 0.0974, 5.4862, 1.0669, 0.1072, -0.1505, -0.5446, -0.7639, 0.4403,\n", + " -0.7222, -0.3998, -0.6736, -0.2266, -0.4582, 0.7450, -0.0231, 0.5726,\n", + " 0.3880, 0.5931, 0.1078]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2061, -0.2040, -0.1526, -0.1104, -0.0129, 0.1166, 0.1910, 0.3323,\n", + " 0.2237, 0.3607, 0.2958, -0.2784, -0.2284, -0.3102, -0.2179, -0.2451,\n", + " -0.2288, -0.0254, -0.1926, -0.1546, -0.0103, -0.1009, -0.1232, -0.0628,\n", + " -0.0226, -0.0109, -0.0196, -0.0693, -0.1865, -0.1658, -0.2588, -0.2688,\n", + " -0.2175, -0.3060, -0.1890, -0.1329, -0.0631, 0.0091, 0.0664, 0.3577,\n", + " 0.3829, 0.4062, 0.2618]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00019925797823816538\n", + "Grad encoder.fc1.bias: 0.0008791907457634807\n", + "Grad encoder.encoder.0.weight: 5.453830090118572e-05\n", + "Grad encoder.encoder.0.bias: 0.0005286461673676968\n", + "Grad encoder.encoder.2.weight: 4.598729719873518e-05\n", + "Grad encoder.encoder.2.bias: 0.00040695787174627185\n", + "Grad encoder.encoder.4.weight: 0.00011211200035177171\n", + "Grad encoder.encoder.4.bias: 0.0007058819755911827\n", + "Grad decoder.fc1.0.weight: 3.8783426134614274e-05\n", + "Grad decoder.fc1.0.bias: 0.0003343353164382279\n", + "Grad decoder.fc1.2.weight: 5.4620053560938686e-05\n", + "Grad decoder.fc1.2.bias: 0.0004017469473183155\n", + "Grad decoder.fc1.4.weight: 8.002216054592282e-05\n", + "Grad decoder.fc1.4.bias: 0.0006379277328960598\n", + "Grad decoder.fc2.weight: 0.00018392277706880122\n", + "Grad decoder.fc2.bias: 0.001997559331357479\n", + "Grad _memory_unit.weight_ih_l0: 9.964334822143428e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.570091212168336e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.9474635337246582e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.505305696511641e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.029268454061821e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.729519812623039e-05\n", + "Data X Sample: tensor([[1.3091, 1.5730, 1.7295, 1.9023, 1.9909, 2.0832, 2.1461, 2.1834, 3.7616,\n", + " 4.0441, 4.1811, 4.1462, 3.8992, 3.7734, 3.6542, 3.4886, 3.4372, 3.3832,\n", + " 3.3742, 3.4070, 3.3369, 3.2318, 3.0026, 2.8249, 2.8246, 3.0037, 3.1222,\n", + " 3.0875, 3.0251, 3.2457, 3.3805, 3.3022, 3.5465, 2.6272, 4.2993, 4.7307,\n", + " 4.8120, 5.1600, 5.7680, 5.5154, 1.0882, 0.6273, 0.6002, 1.0592, 1.5183,\n", + " 1.9957, 1.1898, 1.8062]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6390, 0.6492, 0.8212, 0.8989, 0.5413, 0.7674, -0.3820, -0.5331,\n", + " -0.1513, -0.0706, 0.5674, 0.4767, -0.6441, -0.4271, 1.2093, 1.1932,\n", + " 0.9082, 0.0410, 0.1729, -0.0583, -0.4449, -0.0746, 0.0943, -0.4068,\n", + " -0.1763, 0.0422, -0.5879, -1.2261, -0.4607, -0.8939, -0.7655, -1.1654,\n", + " 0.1930, -1.2104, 0.5237, -0.2872, 0.9799, 0.3394, 0.5010, -0.9227,\n", + " 0.3264, -0.3687, -0.2031]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2279, -0.2202, -0.1662, -0.1174, 0.0140, 0.1433, 0.2160, 0.3668,\n", + " 0.2474, 0.3926, 0.3277, -0.3074, -0.2472, -0.3405, -0.2383, -0.2712,\n", + " -0.2450, -0.0243, -0.2009, -0.1679, -0.0203, -0.1091, -0.1209, -0.0551,\n", + " -0.0229, -0.0300, -0.0331, -0.0802, -0.2155, -0.1837, -0.2869, -0.2862,\n", + " -0.2518, -0.3403, -0.2190, -0.1541, -0.0566, 0.0142, 0.0690, 0.3947,\n", + " 0.4223, 0.4419, 0.2920]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005554004455916584\n", + "Grad encoder.fc1.bias: 0.00028717739041894674\n", + "Grad encoder.encoder.0.weight: 0.00011884816194651648\n", + "Grad encoder.encoder.0.bias: 0.00026206689653918147\n", + "Grad encoder.encoder.2.weight: 9.631194552639499e-05\n", + "Grad encoder.encoder.2.bias: 0.000394693372072652\n", + "Grad encoder.encoder.4.weight: 0.00026576974778436124\n", + "Grad encoder.encoder.4.bias: 0.0011505235452204943\n", + "Grad decoder.fc1.0.weight: 6.987211963860318e-05\n", + "Grad decoder.fc1.0.bias: 0.0005461231339722872\n", + "Grad decoder.fc1.2.weight: 0.00010267601464875042\n", + "Grad decoder.fc1.2.bias: 0.0008694263524375856\n", + "Grad decoder.fc1.4.weight: 0.00011554355296539143\n", + "Grad decoder.fc1.4.bias: 0.001114067854359746\n", + "Grad decoder.fc2.weight: 0.00017839040083345026\n", + "Grad decoder.fc2.bias: 0.002421408426016569\n", + "Grad _memory_unit.weight_ih_l0: 2.2431107936426997e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.36480731877964e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.3343258362729102e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.573667062388267e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011317813186906278\n", + "Grad _memory_unit.bias_hh_l1: 5.90553208894562e-05\n", + "Data X Sample: tensor([[1.5138, 1.6910, 1.8437, 1.9067, 2.0080, 2.1333, 1.9921, 2.7228, 3.7860,\n", + " 4.5101, 4.5776, 4.5455, 4.2099, 4.0488, 4.0098, 3.7430, 3.7470, 3.7527,\n", + " 3.6303, 3.4460, 3.4817, 3.2716, 2.9086, 2.8707, 2.8584, 2.9018, 2.9383,\n", + " 2.9610, 2.9835, 3.0622, 3.1636, 3.3740, 3.7533, 2.7828, 4.6645, 4.8888,\n", + " 5.2741, 5.4754, 6.1863, 5.9835, 1.1836, 0.6353, 0.6467, 1.1711, 1.6967,\n", + " 1.8527, 1.2714, 1.7906]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2697, 0.1650, -0.9283, -0.5646, -0.4277, -0.1441, -0.0023, 0.5677,\n", + " -0.6368, -0.6035, -0.8630, 0.1654, 0.3153, -0.3959, -0.1261, -0.8432,\n", + " 1.0067, -0.8369, -0.0100, -0.8637, -0.5096, -0.7287, -0.5413, 0.6453,\n", + " -0.6721, -0.1477, -0.1155, -0.5589, -0.4665, 1.1173, 0.3111, 0.7644,\n", + " -0.6087, 0.0700, 1.1962, -0.1938, 0.0501, -0.0920, 0.5889, -0.0212,\n", + " 0.1022, -0.0731, -0.3165]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2407, -0.2202, -0.1764, -0.1066, 0.0557, 0.1697, 0.2297, 0.3783,\n", + " 0.2571, 0.4079, 0.3313, -0.3220, -0.2604, -0.3573, -0.2388, -0.2824,\n", + " -0.2544, -0.0187, -0.2073, -0.1735, -0.0231, -0.1204, -0.1097, -0.0527,\n", + " -0.0197, -0.0513, -0.0463, -0.0944, -0.2445, -0.2032, -0.3107, -0.2840,\n", + " -0.2773, -0.3583, -0.2370, -0.1635, -0.0504, 0.0196, 0.0778, 0.4039,\n", + " 0.4341, 0.4488, 0.3090]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004934913013130426\n", + "Grad encoder.fc1.bias: 0.00035416852915659547\n", + "Grad encoder.encoder.0.weight: 0.00010811853280756623\n", + "Grad encoder.encoder.0.bias: 0.00031152350129559636\n", + "Grad encoder.encoder.2.weight: 8.45157919684425e-05\n", + "Grad encoder.encoder.2.bias: 0.00030061358120292425\n", + "Grad encoder.encoder.4.weight: 0.00022791954688727856\n", + "Grad encoder.encoder.4.bias: 0.000510581536218524\n", + "Grad decoder.fc1.0.weight: 7.238844409584999e-05\n", + "Grad decoder.fc1.0.bias: 0.00040203292155638337\n", + "Grad decoder.fc1.2.weight: 0.00011321317288093269\n", + "Grad decoder.fc1.2.bias: 0.0007480132044292986\n", + "Grad decoder.fc1.4.weight: 0.00011975243978668004\n", + "Grad decoder.fc1.4.bias: 0.0009147932869382203\n", + "Grad decoder.fc2.weight: 0.0001926388795254752\n", + "Grad decoder.fc2.bias: 0.002081856830045581\n", + "Grad _memory_unit.weight_ih_l0: 2.5565603209543042e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.0403934185160324e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.205807297490537e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.32876173465047e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011005732085322961\n", + "Grad _memory_unit.bias_hh_l1: 5.81754429731518e-05\n", + "Data X Sample: tensor([[2.5693, 3.0091, 3.2457, 3.4001, 3.3756, 3.8216, 3.7654, 3.9650, 3.9788,\n", + " 3.9967, 3.9939, 4.0956, 3.7439, 3.8089, 3.7778, 3.4859, 3.5284, 3.3561,\n", + " 3.5085, 3.4330, 3.2633, 3.2118, 2.9424, 2.8669, 2.8546, 2.8052, 2.7519,\n", + " 2.7653, 2.7129, 2.9640, 2.8941, 2.9429, 3.0207, 2.1878, 3.6939, 4.0521,\n", + " 4.3970, 4.7810, 5.2736, 5.2175, 1.9138, 1.1690, 1.1398, 2.0380, 3.0128,\n", + " 3.1736, 2.0737, 2.8384]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2394, 0.1781, 0.1412, -1.1186, 1.2248, -0.7451, 0.2771, 0.1992,\n", + " 0.0927, 0.2244, 0.0049, 0.3833, 0.1003, -0.5397, 0.2966, 0.1857,\n", + " -0.7050, 0.1166, -0.5963, -0.4562, 0.1795, 0.1482, 0.2952, -1.0541,\n", + " -0.5633, -0.2751, -1.7843, -1.5593, -1.4759, -0.8690, -0.5482, -0.6152,\n", + " -0.2636, -0.9657, -0.9410, -0.4903, -0.2391, -0.1310, 0.0000, 0.2261,\n", + " 0.0475, 0.4212, 0.5297]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.0541, 0.0438, -0.0414, -0.0280, -0.0895, -0.0458, -0.1067, -0.0569,\n", + " 0.0065, -0.0374, -0.0108, -0.0359, -0.0452, 0.0459, 0.0746, 0.0830,\n", + " -0.0120, -0.0371, -0.0430, -0.0207, -0.0097, -0.0069, -0.0105, -0.0387,\n", + " 0.0310, -0.0460, 0.0105, -0.0637, 0.0372, 0.0877, 0.0051, -0.0131,\n", + " 0.0680, 0.0388, 0.0629, 0.0401, -0.0521, -0.0274, 0.0309, 0.0203,\n", + " -0.0074, -0.0012, -0.0491]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0008020219393074512\n", + "Grad encoder.fc1.bias: 0.0006365090957842767\n", + "Grad encoder.encoder.0.weight: 0.00016123466775752604\n", + "Grad encoder.encoder.0.bias: 0.0005134849925525486\n", + "Grad encoder.encoder.2.weight: 0.00010848970850929618\n", + "Grad encoder.encoder.2.bias: 0.0005213976837694645\n", + "Grad encoder.encoder.4.weight: 0.00022517412435263395\n", + "Grad encoder.encoder.4.bias: 0.0008598285494372249\n", + "Grad decoder.fc1.0.weight: 7.949527207529172e-05\n", + "Grad decoder.fc1.0.bias: 0.000599538441747427\n", + "Grad decoder.fc1.2.weight: 7.950454892124981e-05\n", + "Grad decoder.fc1.2.bias: 0.0007129249279387295\n", + "Grad decoder.fc1.4.weight: 8.312259160447866e-05\n", + "Grad decoder.fc1.4.bias: 0.0007933189626783133\n", + "Grad decoder.fc2.weight: 0.0001911488943733275\n", + "Grad decoder.fc2.bias: 0.0014949759934097528\n", + "Grad _memory_unit.weight_ih_l0: 1.9793742467300035e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.28365490026772e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.7856771339429542e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0031892088591121e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00013285060413181782\n", + "Grad _memory_unit.bias_hh_l1: 6.924752233317122e-05\n", + "Data X Sample: tensor([[2.6001, 2.9829, 3.1375, 3.2776, 3.4098, 3.5403, 3.7068, 3.8429, 3.8104,\n", + " 3.7534, 3.8829, 3.8814, 3.7616, 3.6207, 3.8308, 3.3710, 3.3492, 3.5708,\n", + " 3.4919, 3.3624, 3.2682, 3.2547, 2.9351, 2.8745, 2.8528, 2.7529, 2.7092,\n", + " 2.7816, 2.6539, 2.8461, 2.7751, 2.8739, 2.9349, 2.1718, 3.5983, 4.0205,\n", + " 4.1591, 4.5319, 5.1468, 4.8997, 1.8470, 1.1391, 1.0731, 2.1097, 3.0841,\n", + " 3.0535, 2.1145, 2.7524]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1655, -0.2004, 0.3434, -0.5956, -0.3248, -1.1160, 0.3228, 0.1673,\n", + " 0.7130, 0.4869, 0.2570, -0.4708, -0.0694, -0.1021, -0.0182, 0.0330,\n", + " 0.5874, 0.1708, -0.1056, 0.0532, -0.2304, 0.9713, -0.5294, -0.5523,\n", + " -0.1441, -0.3404, -0.2736, -0.0292, -0.4790, -0.9116, 0.0233, 0.6409,\n", + " -0.2613, -0.0544, 0.1499, 0.0817, 0.0000, -0.1765, -0.0197, 0.1901,\n", + " 0.3379, -0.1030, -0.0398]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 1.0128e-01, 8.4880e-02, -2.4748e-02, 1.8391e-04, -6.3405e-02,\n", + " -3.9683e-02, -1.2153e-01, -8.1165e-02, -2.1263e-02, -7.9891e-02,\n", + " -3.9245e-02, -1.6706e-02, -7.3498e-03, 7.8905e-02, 8.8636e-02,\n", + " 1.2206e-01, 8.9763e-03, -2.4568e-02, -2.7734e-02, -8.8114e-03,\n", + " 3.0290e-03, 7.8092e-03, 4.3055e-05, -1.7260e-02, 3.8815e-02,\n", + " -3.8356e-02, 4.7070e-03, -5.7953e-02, 4.2154e-02, 1.0551e-01,\n", + " 2.2642e-02, 1.6404e-02, 9.7838e-02, 5.8176e-02, 7.0443e-02,\n", + " 6.4230e-02, -4.6079e-02, -2.5122e-02, 3.2780e-02, -1.6229e-02,\n", + " -3.5030e-02, -3.3571e-02, -7.7929e-02]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004946964327245951\n", + "Grad encoder.fc1.bias: 0.000790851772762835\n", + "Grad encoder.encoder.0.weight: 0.00011429807636886835\n", + "Grad encoder.encoder.0.bias: 0.0006088404916226864\n", + "Grad encoder.encoder.2.weight: 8.380615327041596e-05\n", + "Grad encoder.encoder.2.bias: 0.0006205091485753655\n", + "Grad encoder.encoder.4.weight: 0.00018573766283225268\n", + "Grad encoder.encoder.4.bias: 0.0014591615181416273\n", + "Grad decoder.fc1.0.weight: 8.89385337359272e-05\n", + "Grad decoder.fc1.0.bias: 0.0007666099118068814\n", + "Grad decoder.fc1.2.weight: 9.497077553533018e-05\n", + "Grad decoder.fc1.2.bias: 0.0006934618577361107\n", + "Grad decoder.fc1.4.weight: 7.796170393703505e-05\n", + "Grad decoder.fc1.4.bias: 0.0007108731660991907\n", + "Grad decoder.fc2.weight: 0.00017654034309089184\n", + "Grad decoder.fc2.bias: 0.002544376300647855\n", + "Grad _memory_unit.weight_ih_l0: 1.761032035574317e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.048108818707988e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.9797181671019644e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.1391267435101327e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00015313623589463532\n", + "Grad _memory_unit.bias_hh_l1: 8.333471487276256e-05\n", + "Data X Sample: tensor([[-0.0138, -0.0058, -0.0060, 0.0109, 0.0000, 0.0088, -0.0015, 0.0028,\n", + " -0.0024, 0.0047, -0.0127, 0.0175, -0.0022, 0.0055, 0.0101, 0.0041,\n", + " 0.0047, 0.0116, 0.0124, 0.0093, 0.0074, 0.0077, 0.0072, 0.0134,\n", + " 0.0094, 0.0235, 0.0400, 0.0489, -0.0278, 0.0164, -0.0210, 0.0166,\n", + " 0.0000, -0.0046, 0.0123, 0.0365, 0.0236, 0.0186, 0.0127, -0.0340,\n", + " 0.0334, 0.0040, 0.0243, 0.0029, -0.0159, -0.0114, -0.0204, -0.0626]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1852, -0.2679, -0.5207, -1.8472, -3.6287, -2.8026, -3.5933, -3.4585,\n", + " -2.2070, -2.2037, -2.0899, 0.8929, 0.5041, 2.3966, 0.0751, -0.8052,\n", + " -0.0634, 0.1410, -0.5947, -0.0811, -0.7752, -0.0585, -0.5584, -0.0967,\n", + " -0.3910, -1.2825, 1.4152, 1.1337, 2.5459, 2.0364, 2.2400, 1.6844,\n", + " 1.7992, 1.7542, 0.1237, 0.2392, -0.6001, -0.3495, -0.2783, -2.0472,\n", + " -1.2275, -0.4356, -0.9654]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 8.1647e-01, 9.0994e-01, 1.6577e-01, 4.0842e-01, -2.4689e-01,\n", + " -5.8536e-01, -1.2079e+00, -1.1879e+00, -8.2017e-01, -8.4471e-01,\n", + " -9.1699e-01, 2.1443e-01, 5.5260e-01, 7.7702e-01, 2.9323e-01,\n", + " 6.0677e-01, 5.0503e-01, 1.5788e-01, 6.3344e-02, 2.5898e-01,\n", + " 4.3301e-02, 8.7295e-02, 1.0266e-01, 6.5706e-02, -5.5784e-02,\n", + " -2.1986e-02, 1.4903e-01, 3.2964e-01, 9.6286e-01, 9.9574e-01,\n", + " 8.1359e-01, 7.1720e-01, 7.9481e-01, 7.6436e-01, 4.2685e-01,\n", + " 4.0028e-01, -7.3980e-04, 6.4936e-02, -1.4003e-01, -7.8739e-01,\n", + " -7.0224e-01, -6.2001e-01, -5.7321e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0011931625194847584\n", + "Grad encoder.fc1.bias: 0.001572772511281073\n", + "Grad encoder.encoder.0.weight: 0.0002384600229561329\n", + "Grad encoder.encoder.0.bias: 0.0012835143133997917\n", + "Grad encoder.encoder.2.weight: 0.00014511350309476256\n", + "Grad encoder.encoder.2.bias: 0.0009708013385534286\n", + "Grad encoder.encoder.4.weight: 0.0002657508885022253\n", + "Grad encoder.encoder.4.bias: 0.001621375558897853\n", + "Grad decoder.fc1.0.weight: 8.522634016117081e-05\n", + "Grad decoder.fc1.0.bias: 0.0007032848661765456\n", + "Grad decoder.fc1.2.weight: 0.00010124740947503597\n", + "Grad decoder.fc1.2.bias: 0.0007133688777685165\n", + "Grad decoder.fc1.4.weight: 9.233338641934097e-05\n", + "Grad decoder.fc1.4.bias: 0.0007903220830485225\n", + "Grad decoder.fc2.weight: 0.0001776287390384823\n", + "Grad decoder.fc2.bias: 0.001719524385407567\n", + "Grad _memory_unit.weight_ih_l0: 2.4386577933910303e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.000130191765492782\n", + "Grad _memory_unit.bias_hh_l0: 6.88008512952365e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0081930668093264e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00020130576740484685\n", + "Grad _memory_unit.bias_hh_l1: 0.00010800205927807838\n", + "Data X Sample: tensor([[1.4756, 1.6429, 1.7881, 1.9460, 2.0284, 2.1893, 2.1523, 2.9713, 4.1863,\n", + " 4.3363, 4.2953, 4.1969, 4.1833, 3.9888, 3.9619, 3.9481, 3.7941, 3.7043,\n", + " 3.7521, 3.6320, 3.6141, 3.3313, 3.0098, 2.8859, 2.7777, 2.9723, 2.9064,\n", + " 2.8387, 2.9245, 3.1147, 3.2545, 3.4099, 3.7379, 2.7668, 4.4415, 4.9009,\n", + " 5.1659, 5.3482, 6.0849, 5.7906, 1.0595, 0.6831, 0.6225, 1.1855, 1.6531,\n", + " 1.8927, 1.2646, 1.7202]], device='cuda:0')\n", + "Data Y Sample: tensor([[-3.3756e-01, -5.7971e-01, -7.4326e-01, -5.3742e-01, -2.4590e-01,\n", + " -1.8076e-01, 2.0166e-01, 4.3634e-01, 1.6875e-01, 3.1390e-01,\n", + " 1.9796e-01, -4.0189e-01, 6.6080e-02, -5.4444e-01, -1.6948e-01,\n", + " -9.0179e-01, -1.6388e+00, -6.4610e-01, -2.0362e+00, 6.5652e-02,\n", + " -7.3538e-01, -1.6647e+00, 2.8697e-01, 1.3629e+00, 3.9335e-04,\n", + " 8.3151e-01, -6.1367e-01, -4.8515e-01, -9.7621e-01, -1.2043e+00,\n", + " -3.7085e-01, -4.1489e-01, -1.0231e+00, -4.4898e-01, 1.3043e-02,\n", + " -1.4394e-01, -1.9668e-02, -7.7253e-01, -5.9701e-01, 5.3494e-01,\n", + " 5.6081e-01, 3.3493e-01, 7.1889e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1649, -0.1375, -0.1317, -0.0640, 0.1109, 0.1715, 0.1601, 0.2496,\n", + " 0.1781, 0.2700, 0.2108, -0.2776, -0.2001, -0.2820, -0.1683, -0.2049,\n", + " -0.1920, 0.0075, -0.1387, -0.1083, 0.0007, -0.0952, -0.0590, -0.0110,\n", + " 0.0230, -0.0772, -0.0691, -0.1177, -0.2324, -0.1758, -0.2731, -0.1668,\n", + " -0.2770, -0.2723, -0.1728, -0.1219, -0.0363, 0.0392, 0.0888, 0.2680,\n", + " 0.2964, 0.3211, 0.2344]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.001312096370384097\n", + "Grad encoder.fc1.bias: 0.0007757376879453659\n", + "Grad encoder.encoder.0.weight: 0.00023984935251064599\n", + "Grad encoder.encoder.0.bias: 0.0007164576090872288\n", + "Grad encoder.encoder.2.weight: 0.00016337333363480866\n", + "Grad encoder.encoder.2.bias: 0.000765229866374284\n", + "Grad encoder.encoder.4.weight: 0.00031650089658796787\n", + "Grad encoder.encoder.4.bias: 0.0016701584681868553\n", + "Grad decoder.fc1.0.weight: 8.639490260975435e-05\n", + "Grad decoder.fc1.0.bias: 0.0006813881918787956\n", + "Grad decoder.fc1.2.weight: 0.00010420223406981677\n", + "Grad decoder.fc1.2.bias: 0.0009101445903070271\n", + "Grad decoder.fc1.4.weight: 9.683464304544032e-05\n", + "Grad decoder.fc1.4.bias: 0.0009972357656806707\n", + "Grad decoder.fc2.weight: 0.00016084664093796164\n", + "Grad decoder.fc2.bias: 0.0020734574645757675\n", + "Grad _memory_unit.weight_ih_l0: 2.9501799872377887e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0001244416052941233\n", + "Grad _memory_unit.bias_hh_l0: 6.60106452414766e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0187951374973636e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00019921890634577721\n", + "Grad _memory_unit.bias_hh_l1: 0.00010702481085900217\n", + "Data X Sample: tensor([[1.3526, 1.5308, 1.7280, 1.8148, 1.8509, 2.0567, 2.1261, 3.7009, 4.3230,\n", + " 4.2273, 4.4634, 4.2183, 4.1700, 3.9888, 3.8661, 3.6377, 3.5913, 3.5728,\n", + " 3.6654, 3.4237, 3.5994, 3.4522, 2.9616, 2.8840, 2.8096, 2.9018, 3.0289,\n", + " 3.0589, 3.0251, 3.1998, 3.2930, 3.2607, 3.7071, 2.8469, 4.5224, 4.8693,\n", + " 5.0126, 5.3509, 5.9898, 5.7736, 1.0786, 0.6154, 0.6184, 1.0563, 1.6174,\n", + " 1.7269, 1.1694, 1.6733]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.3273, 1.1994, 0.1330, -0.6249, 0.0817, 0.2609, -0.8270, 0.4439,\n", + " -0.6494, -0.6094, -0.3837, -0.1202, -0.8560, 0.3645, 0.8368, -0.9253,\n", + " -0.4391, 0.8475, -0.9608, -1.3467, -1.6321, -0.8989, -0.8995, 1.1335,\n", + " -0.4235, -0.4707, -0.2531, 0.0659, -0.0498, 0.1912, -0.2820, 0.6786,\n", + " 1.0155, 0.5946, -1.3323, -1.1764, -0.0333, 0.0000, 0.7285, 0.2018,\n", + " -1.0660, 0.4317, 0.6427]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1640, -0.1357, -0.1246, -0.0667, 0.1158, 0.1631, 0.1510, 0.2288,\n", + " 0.1739, 0.2468, 0.1987, -0.2721, -0.1860, -0.2751, -0.1750, -0.2061,\n", + " -0.1832, 0.0061, -0.1313, -0.0905, 0.0043, -0.0838, -0.0477, -0.0006,\n", + " 0.0337, -0.0760, -0.0717, -0.1309, -0.2314, -0.1721, -0.2751, -0.1492,\n", + " -0.2834, -0.2627, -0.1653, -0.1179, -0.0343, 0.0354, 0.0939, 0.2575,\n", + " 0.2776, 0.3162, 0.2303]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00012691153096966445\n", + "Grad encoder.fc1.bias: 0.0007022771169431508\n", + "Grad encoder.encoder.0.weight: 3.399873821763322e-05\n", + "Grad encoder.encoder.0.bias: 0.00041478578350506723\n", + "Grad encoder.encoder.2.weight: 3.869056308758445e-05\n", + "Grad encoder.encoder.2.bias: 0.0003453789686318487\n", + "Grad encoder.encoder.4.weight: 0.00011816294863820076\n", + "Grad encoder.encoder.4.bias: 0.0009220218635164201\n", + "Grad decoder.fc1.0.weight: 5.259669342194684e-05\n", + "Grad decoder.fc1.0.bias: 0.00043754198122769594\n", + "Grad decoder.fc1.2.weight: 7.924989040475339e-05\n", + "Grad decoder.fc1.2.bias: 0.0005850490415468812\n", + "Grad decoder.fc1.4.weight: 6.784760626032948e-05\n", + "Grad decoder.fc1.4.bias: 0.0006134251598268747\n", + "Grad decoder.fc2.weight: 0.00015307158173527569\n", + "Grad decoder.fc2.bias: 0.0017963272985070944\n", + "Grad _memory_unit.weight_ih_l0: 1.1550563613127451e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.412206180859357e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.428231164230965e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.165460035845172e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.914381032809615e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.7226869355654344e-05\n", + "Data X Sample: tensor([[1.6167, 1.8308, 1.9399, 2.0597, 2.1343, 2.2777, 2.3865, 2.4318, 2.4532,\n", + " 2.5433, 2.5156, 2.5746, 2.4767, 2.4347, 2.4034, 2.4520, 2.3884, 2.4586,\n", + " 2.5069, 2.5050, 2.4168, 2.5750, 2.5230, 2.4908, 2.5131, 2.5518, 2.4642,\n", + " 2.5613, 2.2376, 2.3876, 2.4602, 2.3875, 2.2748, 1.4326, 1.9045, 1.7901,\n", + " 1.6302, 1.4735, 1.5846, 1.5406, 1.1884, 0.6950, 0.7134, 1.2859, 1.8790,\n", + " 1.9442, 1.3734, 1.8532]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.9014, -0.3947, -0.7517, 0.6095, -0.6722, -0.7101, -0.3795, -0.8697,\n", + " 0.5773, 0.7327, 1.0254, 2.6478, -0.9359, 0.7479, -0.6207, -0.0277,\n", + " -0.1339, 0.1407, 0.5582, 0.3151, 0.2183, 0.2702, -0.3993, 0.0444,\n", + " 0.0241, 0.0620, 0.3704, -0.8512, -0.1507, 0.4195, 0.0399, -0.1304,\n", + " 0.1265, 1.0883, -0.8460, -0.0707, 0.0059, -0.6423, 0.5660, 0.6487,\n", + " -1.0710, -0.9261, 0.0683]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3584, 0.4295, 0.1109, 0.2219, 0.0375, -0.1509, -0.3992, -0.4054,\n", + " -0.1889, -0.2732, -0.2602, 0.1565, 0.1871, 0.3165, 0.2207, 0.3449,\n", + " 0.2712, 0.0721, 0.0381, 0.1227, 0.0802, 0.0602, 0.0651, 0.0534,\n", + " 0.0588, 0.0305, 0.0087, 0.0260, 0.2323, 0.3050, 0.2717, 0.2155,\n", + " 0.3043, 0.3072, 0.2237, 0.2278, -0.0320, -0.0026, -0.0110, -0.2781,\n", + " -0.2353, -0.2992, -0.3336]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00024746826966293156\n", + "Grad encoder.fc1.bias: 0.00120869732927531\n", + "Grad encoder.encoder.0.weight: 8.498917304677889e-05\n", + "Grad encoder.encoder.0.bias: 0.0005489675095304847\n", + "Grad encoder.encoder.2.weight: 6.17714031250216e-05\n", + "Grad encoder.encoder.2.bias: 0.00040781887946650386\n", + "Grad encoder.encoder.4.weight: 0.00012291109305806458\n", + "Grad encoder.encoder.4.bias: 0.0006983663770370185\n", + "Grad decoder.fc1.0.weight: 4.465329766389914e-05\n", + "Grad decoder.fc1.0.bias: 0.0003364269796293229\n", + "Grad decoder.fc1.2.weight: 6.087695874157362e-05\n", + "Grad decoder.fc1.2.bias: 0.0004630129842553288\n", + "Grad decoder.fc1.4.weight: 6.324302376015112e-05\n", + "Grad decoder.fc1.4.bias: 0.0005771913565695286\n", + "Grad decoder.fc2.weight: 0.00014062674017623067\n", + "Grad decoder.fc2.bias: 0.0013744940515607595\n", + "Grad _memory_unit.weight_ih_l0: 1.3224842405179515e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.2589199690846726e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.847874591476284e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.66656581213465e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.841815047664568e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.714159538503736e-05\n", + "Data X Sample: tensor([[2.6065, 3.0266, 3.2577, 3.2077, 3.2971, 3.5167, 3.6699, 3.7563, 3.8690,\n", + " 3.8987, 3.9337, 3.9632, 3.8504, 3.8689, 3.6769, 3.6664, 3.6951, 3.6347,\n", + " 3.6014, 3.4981, 3.3958, 3.3389, 2.9568, 2.8955, 2.9203, 2.7921, 2.8078,\n", + " 2.8101, 2.7268, 2.8199, 2.8976, 2.8462, 2.9437, 2.1626, 3.6081, 3.8940,\n", + " 4.1453, 4.3782, 4.8172, 4.7153, 1.9329, 1.0774, 1.1217, 2.0437, 2.7908,\n", + " 3.0535, 2.0873, 2.8931]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 2.6179e-03, 4.3824e-01, -4.6011e-01, -1.0122e+00, -2.8892e-01,\n", + " 1.0168e-01, 2.9346e-01, -5.4011e-01, -1.0369e+00, -1.0839e-01,\n", + " -3.2547e-01, -1.7323e+00, -1.2888e+00, 4.4882e-01, -1.4082e-01,\n", + " -2.6097e-01, -5.7888e-01, -1.0552e+00, -2.7489e-01, 4.4663e-01,\n", + " -7.9060e-02, -9.4646e-01, 8.6142e-01, -1.2475e+00, -1.0669e+00,\n", + " -8.0792e-02, 4.1459e-01, -1.7681e-01, -4.8452e-01, 9.1525e-02,\n", + " 4.5377e-01, -3.1812e-01, 3.3857e-01, -4.9775e-01, 7.3410e-03,\n", + " 5.7577e-01, -8.9523e-04, 4.1638e-01, 5.0583e-01, -1.6977e-01,\n", + " 1.4430e-01, -2.8040e-01, 1.3749e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1510, -0.1924, -0.1563, -0.2033, -0.0974, 0.0288, 0.0815, 0.2190,\n", + " 0.1428, 0.1692, 0.1770, -0.2045, -0.1656, -0.1800, -0.0757, -0.1451,\n", + " -0.2137, -0.0188, -0.0917, -0.0575, -0.0069, -0.0478, -0.0868, -0.0238,\n", + " 0.0806, 0.0232, 0.0352, -0.0702, -0.1047, -0.1385, -0.1757, -0.1563,\n", + " -0.1210, -0.1766, -0.0827, -0.0754, -0.0834, 0.0352, 0.0561, 0.2108,\n", + " 0.2469, 0.2930, 0.2039]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00039460742846131325\n", + "Grad encoder.fc1.bias: 0.0008402746170759201\n", + "Grad encoder.encoder.0.weight: 0.00010047263640444726\n", + "Grad encoder.encoder.0.bias: 0.0007197378436103463\n", + "Grad encoder.encoder.2.weight: 8.690620597917587e-05\n", + "Grad encoder.encoder.2.bias: 0.0006771121989004314\n", + "Grad encoder.encoder.4.weight: 0.0001765342167345807\n", + "Grad encoder.encoder.4.bias: 0.0017148402985185385\n", + "Grad decoder.fc1.0.weight: 7.924764940980822e-05\n", + "Grad decoder.fc1.0.bias: 0.000770202255807817\n", + "Grad decoder.fc1.2.weight: 8.900310058379546e-05\n", + "Grad decoder.fc1.2.bias: 0.0006099177990108728\n", + "Grad decoder.fc1.4.weight: 7.572620961582288e-05\n", + "Grad decoder.fc1.4.bias: 0.0006284697446972132\n", + "Grad decoder.fc2.weight: 0.0001684969465713948\n", + "Grad decoder.fc2.bias: 0.001968365628272295\n", + "Grad _memory_unit.weight_ih_l0: 1.4319492038339376e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00010473594738868997\n", + "Grad _memory_unit.bias_hh_l0: 5.660799070028588e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.640737516747322e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00019427620281931013\n", + "Grad _memory_unit.bias_hh_l1: 0.00010415968426968902\n", + "Data X Sample: tensor([[1.6708, 1.7769, 1.9534, 1.9854, 2.0131, 2.1731, 2.1246, 4.2347, 4.2571,\n", + " 4.3268, 4.4000, 4.3565, 4.2432, 4.0488, 3.9190, 3.8073, 3.8083, 3.7198,\n", + " 3.6489, 3.5837, 3.4939, 3.4262, 3.0387, 2.9298, 2.8021, 2.8705, 2.8265,\n", + " 2.8428, 2.9627, 3.0622, 3.1006, 3.3326, 3.5663, 2.7210, 4.4881, 4.8547,\n", + " 5.1305, 5.4701, 6.2750, 6.0204, 1.2457, 0.6910, 0.6730, 1.2917, 1.7363,\n", + " 1.9328, 1.3190, 1.7750]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0673, 0.5296, 0.5046, 0.6711, -0.0789, -0.0547, -0.7864, -0.7194,\n", + " -0.6483, -0.3131, -1.1207, 0.3362, 0.0116, -0.0648, 0.1360, 0.3855,\n", + " -0.4016, 0.1933, -0.5264, 1.3681, -1.5903, -0.1663, -1.6715, 0.0206,\n", + " 1.0963, 0.1790, 0.0558, -0.1863, -0.3991, 0.0787, 0.0222, -0.2032,\n", + " 0.2553, 0.4253, 0.1711, 0.0479, -1.0129, -0.0484, 0.4124, -0.7444,\n", + " -0.6982, -0.6841, -0.1251]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1608, -0.1675, -0.1407, -0.1484, 0.0888, 0.1594, 0.1718, 0.2452,\n", + " 0.1782, 0.2052, 0.2297, -0.2528, -0.1967, -0.2755, -0.1712, -0.2119,\n", + " -0.2053, 0.0047, -0.0794, -0.0872, -0.0323, -0.0778, -0.0427, 0.0307,\n", + " 0.0589, -0.0715, -0.0591, -0.1266, -0.2430, -0.2120, -0.2786, -0.1626,\n", + " -0.2968, -0.3046, -0.2002, -0.1325, -0.0524, 0.0637, 0.1103, 0.2495,\n", + " 0.3011, 0.3216, 0.2721]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00036604143679142\n", + "Grad encoder.fc1.bias: 0.0011354531161487103\n", + "Grad encoder.encoder.0.weight: 8.715453441254795e-05\n", + "Grad encoder.encoder.0.bias: 0.0006328663439489901\n", + "Grad encoder.encoder.2.weight: 6.881315493956208e-05\n", + "Grad encoder.encoder.2.bias: 0.00043860034202225506\n", + "Grad encoder.encoder.4.weight: 0.00013929957640357316\n", + "Grad encoder.encoder.4.bias: 0.00047202370478771627\n", + "Grad decoder.fc1.0.weight: 5.5112195695983246e-05\n", + "Grad decoder.fc1.0.bias: 0.00043672218453139067\n", + "Grad decoder.fc1.2.weight: 7.169794116634876e-05\n", + "Grad decoder.fc1.2.bias: 0.0005144368042238057\n", + "Grad decoder.fc1.4.weight: 7.558254583273083e-05\n", + "Grad decoder.fc1.4.bias: 0.0006500306772068143\n", + "Grad decoder.fc2.weight: 0.0001753972755977884\n", + "Grad decoder.fc2.bias: 0.001979698659852147\n", + "Grad _memory_unit.weight_ih_l0: 1.2941298336954787e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.497153738862835e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.8844373698811978e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.160392331366893e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.163710299413651e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.4121719838585705e-05\n", + "Data X Sample: tensor([[2.5853, 2.9276, 3.2382, 3.3957, 3.4593, 3.7480, 3.5589, 3.8699, 3.8885,\n", + " 3.9209, 3.8956, 3.9320, 3.7972, 3.7325, 3.6895, 3.6609, 3.6243, 3.4180,\n", + " 3.5126, 3.4051, 3.2510, 3.1399, 2.9062, 2.8382, 2.7946, 2.7947, 2.8265,\n", + " 2.8387, 2.7823, 2.9509, 2.7191, 2.9512, 2.9833, 2.1535, 3.5517, 4.1105,\n", + " 4.1807, 4.5213, 5.0264, 4.9735, 1.9806, 1.1212, 1.0610, 1.9777, 2.9811,\n", + " 3.2136, 2.1689, 2.9557]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6662, 0.1938, 0.8584, -0.0099, -1.1262, -1.2738, -2.2819, -1.6312,\n", + " -0.4746, -0.6338, -0.7389, 1.3875, 0.8265, -0.4499, 0.9804, 0.5466,\n", + " 1.1821, 0.3656, 0.1533, 0.1331, 0.6025, 0.0747, -0.1813, -0.3349,\n", + " 0.6172, -0.2795, 0.1343, 0.8878, 1.0197, 1.0052, 1.3776, -0.5207,\n", + " 3.7724, 0.8046, -0.4075, -0.8797, -0.8282, 0.5210, 0.0000, 0.3456,\n", + " 1.0259, 0.1248, 0.0644]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2093, -0.2639, -0.2087, -0.3017, -0.1310, 0.0202, 0.1301, 0.2896,\n", + " 0.1878, 0.1944, 0.2328, -0.2236, -0.1962, -0.2061, -0.0906, -0.1966,\n", + " -0.2766, -0.0442, -0.0986, -0.0895, -0.0361, -0.0488, -0.1074, -0.0129,\n", + " 0.0917, 0.0356, 0.0709, -0.0747, -0.1178, -0.1781, -0.1927, -0.2087,\n", + " -0.1208, -0.2473, -0.1204, -0.0977, -0.0811, 0.0307, 0.0539, 0.2878,\n", + " 0.3278, 0.3649, 0.2735]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0011127139441668987\n", + "Grad encoder.fc1.bias: 0.0005981951835565269\n", + "Grad encoder.encoder.0.weight: 0.00022645463468506932\n", + "Grad encoder.encoder.0.bias: 0.0006092784460633993\n", + "Grad encoder.encoder.2.weight: 0.00016734309610910714\n", + "Grad encoder.encoder.2.bias: 0.0007202744018286467\n", + "Grad encoder.encoder.4.weight: 0.0003565454389899969\n", + "Grad encoder.encoder.4.bias: 0.001591704087331891\n", + "Grad decoder.fc1.0.weight: 9.533410775475204e-05\n", + "Grad decoder.fc1.0.bias: 0.0005832648603245616\n", + "Grad decoder.fc1.2.weight: 0.00010552640742389485\n", + "Grad decoder.fc1.2.bias: 0.0006025545299053192\n", + "Grad decoder.fc1.4.weight: 0.000102280690043699\n", + "Grad decoder.fc1.4.bias: 0.0008520957198925316\n", + "Grad decoder.fc2.weight: 0.00017950167239177972\n", + "Grad decoder.fc2.bias: 0.0016478168545290828\n", + "Grad _memory_unit.weight_ih_l0: 5.483329368871637e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.484551653964445e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.1690032705664635e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.6477861208841205e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00013576343189924955\n", + "Grad _memory_unit.bias_hh_l1: 7.741336594335735e-05\n", + "Data X Sample: tensor([[2.6181, 1.9590, 1.9654, 2.1406, 2.1121, 2.1524, 2.1924, 4.1410, 4.4158,\n", + " 4.3426, 4.3683, 4.3507, 4.2410, 4.0161, 3.9745, 3.9331, 3.7045, 3.7391,\n", + " 3.7521, 3.4665, 3.4522, 3.4078, 2.9785, 2.8688, 2.7908, 2.7582, 2.6640,\n", + " 2.8550, 2.9314, 2.9443, 3.0271, 3.1060, 3.3903, 2.5219, 4.3851, 4.8474,\n", + " 4.9614, 5.4728, 6.2370, 6.0346, 1.1884, 0.7030, 0.7013, 1.2544, 1.7641,\n", + " 1.9556, 1.3258, 2.0330]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0080, -0.0418, 0.0375, -0.6569, 0.2350, 0.4071, 0.4791, 0.6214,\n", + " 0.4497, 0.2614, 0.1120, -0.0524, -0.7640, -1.3322, -0.0834, -0.2734,\n", + " -0.3778, 0.4998, 3.7983, 0.4144, -4.5177, -0.8879, 0.2000, 0.9251,\n", + " -0.7827, -3.4318, -0.0170, 0.0189, 0.4095, -0.5933, -0.5629, -0.9544,\n", + " 0.1856, -0.8846, 0.1755, -0.4183, -0.3467, 0.9007, -0.7546, 0.4111,\n", + " 0.4548, 1.0926, -0.2091]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1770, -0.2148, -0.1712, -0.2232, -0.0033, 0.0871, 0.1823, 0.2792,\n", + " 0.2130, 0.1962, 0.2631, -0.2238, -0.1853, -0.2581, -0.1681, -0.2208,\n", + " -0.2224, -0.0121, -0.0591, -0.1061, -0.0552, -0.0477, -0.0741, 0.0261,\n", + " 0.0771, -0.0074, -0.0010, -0.1045, -0.1961, -0.2298, -0.2623, -0.2114,\n", + " -0.2485, -0.3153, -0.1974, -0.1297, -0.0613, 0.0584, 0.0946, 0.2696,\n", + " 0.3400, 0.3650, 0.3058]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0036253174766898155\n", + "Grad encoder.fc1.bias: 0.002137791598215699\n", + "Grad encoder.encoder.0.weight: 0.000643961364403367\n", + "Grad encoder.encoder.0.bias: 0.001856225891970098\n", + "Grad encoder.encoder.2.weight: 0.0005149855860508978\n", + "Grad encoder.encoder.2.bias: 0.002216809429228306\n", + "Grad encoder.encoder.4.weight: 0.0009225240792147815\n", + "Grad encoder.encoder.4.bias: 0.004414983093738556\n", + "Grad decoder.fc1.0.weight: 0.00020483233674895018\n", + "Grad decoder.fc1.0.bias: 0.0016883102944120765\n", + "Grad decoder.fc1.2.weight: 0.00026677671121433377\n", + "Grad decoder.fc1.2.bias: 0.00181420031003654\n", + "Grad decoder.fc1.4.weight: 0.00020304725330788642\n", + "Grad decoder.fc1.4.bias: 0.0018096653511747718\n", + "Grad decoder.fc2.weight: 0.00026467590942047536\n", + "Grad decoder.fc2.bias: 0.002835010178387165\n", + "Grad _memory_unit.weight_ih_l0: 0.00015371023619081825\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0003081974573433399\n", + "Grad _memory_unit.bias_hh_l0: 0.00016296216927003115\n", + "Grad _memory_unit.weight_ih_l1: 2.812678212649189e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.000437107722973451\n", + "Grad _memory_unit.bias_hh_l1: 0.00023156344832386822\n", + "Data X Sample: tensor([[-0.0212, 0.0000, -0.0135, -0.0066, -0.0068, -0.0162, -0.0139, -0.0213,\n", + " -0.0195, -0.0032, -0.0032, -0.0058, -0.0022, -0.0136, -0.0227, 0.0178,\n", + " 0.0849, 0.1122, 0.1136, 0.1060, 0.1399, 0.0750, 0.1157, 0.1088,\n", + " 0.0863, 0.2037, 0.2131, 0.3875, 0.0347, 0.0917, 0.0770, 0.0525,\n", + " 0.0110, 0.0320, 0.0098, 0.0341, 0.0039, -0.0027, -0.0127, -0.0057,\n", + " 0.0239, 0.0000, 0.0222, 0.0144, -0.0119, 0.0000, -0.0068, -0.0235]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3623, 0.9207, 0.9549, 0.3266, 0.3095, -0.6303, -0.4214, -0.2669,\n", + " -0.3957, 0.0632, -0.1874, 0.3179, 0.0094, -0.3443, -0.0872, 0.1062,\n", + " -0.9784, 0.4477, 0.0436, 1.0730, -0.1570, 0.7795, 0.8789, 1.0855,\n", + " -0.4350, 0.1339, 1.0804, -0.3409, -0.2266, 0.4866, 0.8559, -0.1919,\n", + " -0.5129, 0.4425, 0.5472, -0.8627, 0.2077, 0.1511, -1.8131, -0.2686,\n", + " -0.1764, -0.6346, -0.1944]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.8486, 0.8876, 0.1821, 0.4411, -0.2291, -0.6532, -1.3300, -1.3036,\n", + " -0.9637, -0.9770, -1.0499, 0.2607, 0.6161, 0.8899, 0.3214, 0.7124,\n", + " 0.4011, 0.2709, 0.0295, 0.2858, 0.0730, 0.0702, 0.0909, 0.1049,\n", + " -0.0979, -0.0519, 0.2063, 0.4245, 1.1120, 1.1151, 0.9200, 0.7695,\n", + " 0.8403, 0.7562, 0.4730, 0.4889, -0.0317, 0.1023, -0.1226, -0.8227,\n", + " -0.7172, -0.7018, -0.6746]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003461309242993593\n", + "Grad encoder.fc1.bias: 0.0017813306767493486\n", + "Grad encoder.encoder.0.weight: 0.00013771778321824968\n", + "Grad encoder.encoder.0.bias: 0.0014918670058250427\n", + "Grad encoder.encoder.2.weight: 0.00014905116404406726\n", + "Grad encoder.encoder.2.bias: 0.0014865288976579905\n", + "Grad encoder.encoder.4.weight: 0.00033994094701483846\n", + "Grad encoder.encoder.4.bias: 0.0040483660995960236\n", + "Grad decoder.fc1.0.weight: 0.0001433734578313306\n", + "Grad decoder.fc1.0.bias: 0.0016524889506399632\n", + "Grad decoder.fc1.2.weight: 0.00019879294268321246\n", + "Grad decoder.fc1.2.bias: 0.0014767252141609788\n", + "Grad decoder.fc1.4.weight: 0.00014974293299019337\n", + "Grad decoder.fc1.4.bias: 0.0012382634449750185\n", + "Grad decoder.fc2.weight: 0.00023497715301346034\n", + "Grad decoder.fc2.bias: 0.0025805446784943342\n", + "Grad _memory_unit.weight_ih_l0: 4.4165950384922326e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0002082478313241154\n", + "Grad _memory_unit.bias_hh_l0: 0.0001150180323747918\n", + "Grad _memory_unit.weight_ih_l1: 2.2965097741689533e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0003954228013753891\n", + "Grad _memory_unit.bias_hh_l1: 0.00021305428526829928\n", + "Data X Sample: tensor([[1.2253, 1.5424, 1.7656, 1.8345, 1.9670, 2.0302, 2.0075, 2.0343, 2.0163,\n", + " 2.0410, 1.9827, 1.8676, 1.7443, 1.7531, 1.6922, 1.7546, 1.7642, 1.7390,\n", + " 1.6974, 1.5938, 1.5678, 1.5324, 1.4676, 1.4182, 1.3438, 1.3791, 1.3586,\n", + " 1.3908, 1.0026, 0.9858, 1.0149, 0.9312, 0.8404, 0.5904, 0.9045, 0.8853,\n", + " 0.9537, 1.0548, 1.1663, 1.1888, 1.1645, 0.6651, 0.6710, 1.2658, 1.7006,\n", + " 1.9328, 1.1626, 1.8141]], device='cuda:0')\n", + "Data Y Sample: tensor([[-2.3535, -1.4861, -1.1672, -1.0553, -0.7601, 1.3531, 1.7945, 2.9312,\n", + " 2.6869, 3.9823, 5.3746, 0.2089, -0.9993, -2.1278, -1.8451, -2.7703,\n", + " -1.8214, -0.4965, -0.0951, -0.6719, 0.0186, 0.0746, -0.1786, 0.2190,\n", + " -0.4351, -0.1121, -0.1581, -0.4813, -0.7319, -1.9529, -2.2055, -1.7682,\n", + " 1.1503, -3.4625, -1.8219, -2.2747, 0.1438, 0.4612, 0.3953, 8.7827,\n", + " 8.5576, 6.9218, 2.6484]], device='cuda:0')\n", + "Prediction Sample: tensor([[-1.1020, -1.0021, -0.6762, -0.9237, -0.4395, -0.0837, 0.6219, 1.0757,\n", + " 0.8329, 0.8060, 1.0774, -0.3538, -0.6112, -0.5945, -0.5047, -0.9867,\n", + " -0.7709, -0.3964, -0.1337, -0.4497, -0.3075, 0.0378, -0.0839, -0.1056,\n", + " -0.0712, -0.0081, 0.3759, 0.1916, -0.2553, -0.5743, -0.6335, -0.6994,\n", + " -0.5782, -1.0052, -0.6679, -0.5769, -0.0366, 0.0298, 0.0420, 1.4119,\n", + " 1.5301, 1.2473, 1.2369]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0013206073781475425\n", + "Grad encoder.fc1.bias: 0.001406446797773242\n", + "Grad encoder.encoder.0.weight: 0.0003247999702580273\n", + "Grad encoder.encoder.0.bias: 0.0011894999770447612\n", + "Grad encoder.encoder.2.weight: 0.0003010994696523994\n", + "Grad encoder.encoder.2.bias: 0.0017397922929376364\n", + "Grad encoder.encoder.4.weight: 0.0006648200796917081\n", + "Grad encoder.encoder.4.bias: 0.004076611250638962\n", + "Grad decoder.fc1.0.weight: 0.00017168222984764725\n", + "Grad decoder.fc1.0.bias: 0.0015985420905053616\n", + "Grad decoder.fc1.2.weight: 0.00017514311184640974\n", + "Grad decoder.fc1.2.bias: 0.0016063989605754614\n", + "Grad decoder.fc1.4.weight: 0.00014022448158357292\n", + "Grad decoder.fc1.4.bias: 0.0016019162721931934\n", + "Grad decoder.fc2.weight: 0.00019878201419487596\n", + "Grad decoder.fc2.bias: 0.00222596013918519\n", + "Grad _memory_unit.weight_ih_l0: 7.269135676324368e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00034596119076013565\n", + "Grad _memory_unit.bias_hh_l0: 0.00017762306379154325\n", + "Grad _memory_unit.weight_ih_l1: 2.259472785226535e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.000457331829238683\n", + "Grad _memory_unit.bias_hh_l1: 0.00024332378234248608\n", + "Data X Sample: tensor([[-0.0095, -0.0015, 0.0060, -0.0066, -0.0085, 0.0029, 0.0046, 0.0014,\n", + " 0.0049, 0.0063, -0.0159, 0.0019, 0.0022, -0.0055, -0.0202, 0.0055,\n", + " 0.0000, 0.0174, -0.0021, 0.0167, 0.0368, 0.0077, 0.0265, 0.0229,\n", + " 0.0113, 0.0078, 0.0373, 0.0775, -0.0347, -0.0033, 0.0210, 0.0193,\n", + " -0.0088, 0.0000, 0.0196, 0.0268, 0.0039, -0.0027, -0.0444, 0.0057,\n", + " 0.0430, 0.0100, 0.0061, 0.0000, -0.0159, 0.0286, -0.0136, -0.0156]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.4725, 0.8270, 1.2601, 1.7146, 0.1499, 0.0469, -1.3976, -1.0265,\n", + " 0.0723, -0.7702, -1.1363, 0.2072, 1.3642, 1.0903, 0.9197, 0.6439,\n", + " 1.0037, -0.1548, -0.0345, 0.5884, -0.1435, 0.9401, -1.2886, -0.1111,\n", + " -0.6890, -0.0261, -0.0610, 0.6721, 1.6540, 1.5005, 1.8016, -0.0039,\n", + " 1.9492, 0.7317, 1.4703, -0.7878, 0.0849, 0.7996, -0.7546, -0.8105,\n", + " -0.5457, -1.1214, -0.4910]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.8168, 0.8512, 0.1769, 0.4199, -0.2114, -0.6454, -1.2994, -1.2710,\n", + " -0.9346, -0.9546, -1.0247, 0.2847, 0.6008, 0.8782, 0.3212, 0.7054,\n", + " 0.3850, 0.2848, 0.0317, 0.2797, 0.0711, 0.0713, 0.0767, 0.1035,\n", + " -0.0994, -0.0574, 0.2253, 0.4185, 1.0792, 1.0919, 0.9125, 0.7623,\n", + " 0.7991, 0.7136, 0.4715, 0.4643, -0.0506, 0.0937, -0.1196, -0.8204,\n", + " -0.6956, -0.6858, -0.6489]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00044281809823587537\n", + "Grad encoder.fc1.bias: 0.0011637835996225476\n", + "Grad encoder.encoder.0.weight: 0.00011721951887011528\n", + "Grad encoder.encoder.0.bias: 0.0009039630531333387\n", + "Grad encoder.encoder.2.weight: 9.894813410937786e-05\n", + "Grad encoder.encoder.2.bias: 0.0008569603669457138\n", + "Grad encoder.encoder.4.weight: 0.00027347332797944546\n", + "Grad encoder.encoder.4.bias: 0.0016754691023379564\n", + "Grad decoder.fc1.0.weight: 7.55347209633328e-05\n", + "Grad decoder.fc1.0.bias: 0.0006303427508100867\n", + "Grad decoder.fc1.2.weight: 7.953259046189487e-05\n", + "Grad decoder.fc1.2.bias: 0.0006979206809774041\n", + "Grad decoder.fc1.4.weight: 7.390475366264582e-05\n", + "Grad decoder.fc1.4.bias: 0.00086762267164886\n", + "Grad decoder.fc2.weight: 0.0001769990922184661\n", + "Grad decoder.fc2.bias: 0.002721435157582164\n", + "Grad _memory_unit.weight_ih_l0: 2.1355146600399166e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.58134306629654e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.04299082927173e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.44772364164237e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001284884347114712\n", + "Grad _memory_unit.bias_hh_l1: 6.763263081666082e-05\n", + "Data X Sample: tensor([[1.3886, 1.6415, 1.7866, 1.8279, 2.0267, 2.0228, 2.0907, 1.9747, 3.9862,\n", + " 4.2968, 4.3778, 4.3624, 4.0857, 4.0679, 3.6341, 3.7102, 3.6007, 3.5844,\n", + " 3.6571, 3.6748, 3.4277, 3.5410, 3.0845, 2.8802, 2.8697, 2.8679, 2.8744,\n", + " 2.9570, 2.8794, 3.0426, 3.1076, 3.3823, 3.6873, 2.8080, 4.5273, 4.9228,\n", + " 5.2643, 5.6291, 5.8947, 6.0147, 1.0357, 0.6333, 0.6811, 1.0649, 1.5540,\n", + " 1.8641, 1.1898, 1.7124]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4801, -0.4524, -0.5349, -0.2392, -0.2097, 0.1560, 0.4789, 0.3165,\n", + " 0.3061, 0.6307, 0.7016, -1.1559, -0.7783, -0.6534, 0.5320, -0.4473,\n", + " -5.4991, 0.9183, -0.1622, -0.3447, 0.1200, 0.2860, 1.6808, 0.8604,\n", + " 0.0269, 0.2254, 0.7377, -0.5016, -0.3068, -0.8869, 1.0909, 0.2372,\n", + " 0.6880, -0.8041, -0.5979, 0.2253, 0.4717, 0.2376, 1.1238, 0.5603,\n", + " 0.6235, 0.6698, 0.9191]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2544, -0.2526, -0.1774, -0.1566, 0.0554, 0.0760, 0.2000, 0.2691,\n", + " 0.3205, 0.2550, 0.2690, -0.1906, -0.1737, -0.2742, -0.2282, -0.3216,\n", + " -0.2083, -0.0702, -0.1054, -0.1663, -0.0842, -0.0356, -0.0588, 0.0042,\n", + " 0.0207, -0.0185, 0.0061, -0.1645, -0.2194, -0.2879, -0.3454, -0.2183,\n", + " -0.3334, -0.3501, -0.2053, -0.1485, -0.0123, 0.0189, 0.0802, 0.3647,\n", + " 0.3870, 0.4020, 0.3198]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0026626475155353546\n", + "Grad encoder.fc1.bias: 0.0017145039746537805\n", + "Grad encoder.encoder.0.weight: 0.00044118589721620083\n", + "Grad encoder.encoder.0.bias: 0.0014652167446911335\n", + "Grad encoder.encoder.2.weight: 0.0003265365958213806\n", + "Grad encoder.encoder.2.bias: 0.0015614402946084738\n", + "Grad encoder.encoder.4.weight: 0.0005999442655593157\n", + "Grad encoder.encoder.4.bias: 0.0032341235782951117\n", + "Grad decoder.fc1.0.weight: 0.000155516347149387\n", + "Grad decoder.fc1.0.bias: 0.0009237125050276518\n", + "Grad decoder.fc1.2.weight: 0.00015221988724078983\n", + "Grad decoder.fc1.2.bias: 0.0008328945259563625\n", + "Grad decoder.fc1.4.weight: 0.00012305124255362898\n", + "Grad decoder.fc1.4.bias: 0.0010715617099776864\n", + "Grad decoder.fc2.weight: 0.0002070989867206663\n", + "Grad decoder.fc2.bias: 0.0019737272523343563\n", + "Grad _memory_unit.weight_ih_l0: 0.00010481585923116654\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0002458496892359108\n", + "Grad _memory_unit.bias_hh_l0: 0.00013656402006745338\n", + "Grad _memory_unit.weight_ih_l1: 2.5512665160931647e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00029592623468488455\n", + "Grad _memory_unit.bias_hh_l1: 0.00016517883341293782\n", + "Data X Sample: tensor([[1.4873, 1.7507, 1.9249, 1.9919, 1.9175, 1.7385, 1.6516, 3.6740, 4.2742,\n", + " 4.5148, 4.4952, 4.4286, 4.2810, 4.0842, 4.0073, 3.8155, 3.8083, 3.7198,\n", + " 3.5869, 3.4516, 3.4228, 3.3190, 3.1062, 2.8058, 2.6801, 2.7164, 2.8531,\n", + " 2.8346, 2.8413, 2.9378, 2.9116, 3.1170, 3.4959, 2.6524, 4.3925, 4.8134,\n", + " 5.0814, 5.6026, 6.3828, 6.0232, 1.2266, 0.6771, 0.7114, 1.2343, 1.7244,\n", + " 1.9671, 1.1898, 1.7593]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3570, -0.4131, 0.9773, -0.2437, -0.0839, -0.0545, 0.4227, 0.4139,\n", + " -0.0095, 0.1523, 0.4608, 0.5460, -0.7287, 0.0388, 1.2323, 0.3674,\n", + " 0.2960, -0.2636, 0.4894, 0.6474, 0.0384, 0.4637, -0.1886, -0.2904,\n", + " 0.4718, 0.4363, -0.5485, -0.7169, -0.1367, 0.8696, -1.4750, -0.4723,\n", + " -0.1673, 0.1283, 0.6373, 0.2429, 0.0540, 0.1545, -0.0104, 0.2592,\n", + " 0.4450, 0.3273, -0.0981]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2379, -0.2243, -0.1491, -0.1343, 0.0650, 0.0746, 0.1736, 0.2323,\n", + " 0.2969, 0.2334, 0.2264, -0.1665, -0.1595, -0.2479, -0.2015, -0.2918,\n", + " -0.1903, -0.0723, -0.0924, -0.1516, -0.0780, -0.0377, -0.0417, 0.0018,\n", + " 0.0071, -0.0301, -0.0056, -0.1599, -0.2018, -0.2701, -0.3165, -0.1848,\n", + " -0.3206, -0.3156, -0.1855, -0.1347, -0.0007, 0.0168, 0.0692, 0.3268,\n", + " 0.3487, 0.3553, 0.2897]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002640011953189969\n", + "Grad encoder.fc1.bias: 0.0007019700133241713\n", + "Grad encoder.encoder.0.weight: 6.230401777429506e-05\n", + "Grad encoder.encoder.0.bias: 0.0004625811125151813\n", + "Grad encoder.encoder.2.weight: 5.6792308896547183e-05\n", + "Grad encoder.encoder.2.bias: 0.00040842604357749224\n", + "Grad encoder.encoder.4.weight: 0.00013107951963320374\n", + "Grad encoder.encoder.4.bias: 0.0006291580502875149\n", + "Grad decoder.fc1.0.weight: 5.172497913008556e-05\n", + "Grad decoder.fc1.0.bias: 0.0005026846774853766\n", + "Grad decoder.fc1.2.weight: 6.683783431071788e-05\n", + "Grad decoder.fc1.2.bias: 0.0005933898501098156\n", + "Grad decoder.fc1.4.weight: 6.69977453071624e-05\n", + "Grad decoder.fc1.4.bias: 0.0006134958239272237\n", + "Grad decoder.fc2.weight: 0.00016290831263177097\n", + "Grad decoder.fc2.bias: 0.001636191038414836\n", + "Grad _memory_unit.weight_ih_l0: 1.436205184290884e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.406653766229283e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.3855529687134549e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.30215572527959e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.584771810797974e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.0086692024488e-05\n", + "Data X Sample: tensor([[2.7465, 2.6450, 2.1412, 2.2806, 2.4075, 2.3469, 3.5651, 4.0275, 4.1766,\n", + " 4.1957, 4.0479, 4.1754, 3.8393, 3.9179, 3.8308, 3.7033, 3.6165, 3.6579,\n", + " 3.7088, 3.5855, 3.4277, 3.4277, 2.8821, 2.8401, 2.8321, 2.9462, 2.9410,\n", + " 2.8591, 2.8378, 3.0524, 3.1391, 3.1143, 3.3375, 2.4441, 4.0346, 4.5507,\n", + " 4.6488, 5.1892, 5.8060, 5.6090, 1.5463, 0.8742, 0.7862, 1.3519, 1.8711,\n", + " 2.1729, 1.4550, 2.1737]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.7008, 0.0441, 0.4789, 0.4179, 0.3058, 0.7493, 0.2735, 0.1163,\n", + " -0.8597, -0.0036, 0.4208, 0.1642, 0.9651, -0.7838, 0.0687, -1.2318,\n", + " 0.3499, -2.1825, -0.4341, -0.7133, -1.6460, 3.1649, 1.4008, 0.0178,\n", + " -0.7682, -0.3645, 1.2939, 0.9501, -0.3856, 0.0124, 0.1632, -1.7071,\n", + " -0.6639, 0.7030, 0.5484, 1.1426, -0.4903, -0.6411, -0.1229, 0.3459,\n", + " 0.3620, 0.0887, 1.7897]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1673, -0.1781, -0.1252, -0.1387, -0.0358, 0.0276, 0.1095, 0.1900,\n", + " 0.2147, 0.1670, 0.1819, -0.1154, -0.1348, -0.1641, -0.1181, -0.1917,\n", + " -0.1660, -0.0539, -0.0680, -0.1208, -0.0635, -0.0281, -0.0573, -0.0093,\n", + " 0.0167, 0.0038, 0.0137, -0.1134, -0.1187, -0.1965, -0.2258, -0.1547,\n", + " -0.2014, -0.2204, -0.1205, -0.1058, -0.0361, 0.0272, 0.0430, 0.2353,\n", + " 0.2730, 0.2762, 0.2083]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005651699611917138\n", + "Grad encoder.fc1.bias: 0.0013096074108034372\n", + "Grad encoder.encoder.0.weight: 0.00013546393893193454\n", + "Grad encoder.encoder.0.bias: 0.0010208600433543324\n", + "Grad encoder.encoder.2.weight: 9.513801342109218e-05\n", + "Grad encoder.encoder.2.bias: 0.0010441199410706758\n", + "Grad encoder.encoder.4.weight: 0.00018948351498693228\n", + "Grad encoder.encoder.4.bias: 0.002763075288385153\n", + "Grad decoder.fc1.0.weight: 0.00010253034270135686\n", + "Grad decoder.fc1.0.bias: 0.0011482876725494862\n", + "Grad decoder.fc1.2.weight: 0.00011979667033301666\n", + "Grad decoder.fc1.2.bias: 0.000948331959079951\n", + "Grad decoder.fc1.4.weight: 0.00010088784620165825\n", + "Grad decoder.fc1.4.bias: 0.000686130893882364\n", + "Grad decoder.fc2.weight: 0.00019562963279895484\n", + "Grad decoder.fc2.bias: 0.002041412051767111\n", + "Grad _memory_unit.weight_ih_l0: 3.10738651023712e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00013733102241531014\n", + "Grad _memory_unit.bias_hh_l0: 7.878684846218675e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.9256580344517715e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.000285033427644521\n", + "Grad _memory_unit.bias_hh_l1: 0.0001549622684251517\n", + "Data X Sample: tensor([[1.5096, 1.7784, 1.9264, 1.9329, 2.0660, 2.2762, 2.3772, 2.3935, 2.4703,\n", + " 2.5181, 2.5061, 2.6019, 2.4367, 2.3420, 2.3706, 2.4233, 2.3240, 2.4276,\n", + " 2.4140, 2.4195, 2.4781, 2.4464, 2.3905, 2.4049, 2.4774, 2.5544, 2.4215,\n", + " 2.5083, 2.2619, 2.2664, 2.1942, 2.2355, 2.2638, 1.4624, 1.9364, 1.8096,\n", + " 1.6420, 1.5292, 1.5466, 1.5491, 1.2647, 0.6731, 0.7377, 1.2056, 2.0019,\n", + " 1.9270, 1.3122, 2.0095]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 2.1078e+00, 1.3193e+00, -1.3037e+00, 2.8621e+00, -3.8998e-01,\n", + " -4.9495e-01, -1.4211e+00, -1.3140e+00, -8.6159e-01, -1.2790e+00,\n", + " -1.3754e+00, -2.2005e-01, 6.2873e+00, 1.0214e+00, 1.0407e-01,\n", + " 5.4066e-01, 6.0702e-01, 4.2907e-01, -7.4154e-01, 1.8143e+00,\n", + " 5.9058e-01, 2.7559e-01, 5.5357e-01, -2.7285e-01, 6.9002e-01,\n", + " 5.9486e-01, 7.9606e-01, 7.3314e-01, 6.6575e-01, 1.3171e+00,\n", + " 1.6182e+00, -1.9043e-01, 1.1260e+00, 1.6723e-01, 7.3318e-01,\n", + " 3.8133e-01, -8.9523e-04, -8.2621e-01, 1.1113e+00, -1.8940e+00,\n", + " -1.4346e+00, -1.5365e+00, -1.3093e+00]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3214, 0.3443, 0.1301, 0.2535, 0.0981, -0.1166, -0.3537, -0.4044,\n", + " -0.1868, -0.2877, -0.2252, 0.2081, 0.1373, 0.2692, 0.1694, 0.3138,\n", + " 0.2276, 0.0913, 0.0594, 0.1167, 0.0995, 0.0323, 0.0337, 0.0842,\n", + " 0.0104, 0.0464, -0.0276, 0.0288, 0.2038, 0.2362, 0.2733, 0.2245,\n", + " 0.2707, 0.2463, 0.2461, 0.2343, -0.0581, -0.0177, -0.0152, -0.2518,\n", + " -0.2202, -0.3059, -0.2805]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.001096848864108324\n", + "Grad encoder.fc1.bias: 0.0012402079300954938\n", + "Grad encoder.encoder.0.weight: 0.00018925494805444032\n", + "Grad encoder.encoder.0.bias: 0.0009213907178491354\n", + "Grad encoder.encoder.2.weight: 0.00011478619126137346\n", + "Grad encoder.encoder.2.bias: 0.000888961716555059\n", + "Grad encoder.encoder.4.weight: 0.0002228155208285898\n", + "Grad encoder.encoder.4.bias: 0.0023989637847989798\n", + "Grad decoder.fc1.0.weight: 8.019787492230535e-05\n", + "Grad decoder.fc1.0.bias: 0.0009909217478707433\n", + "Grad decoder.fc1.2.weight: 8.888174488674849e-05\n", + "Grad decoder.fc1.2.bias: 0.0008981383871287107\n", + "Grad decoder.fc1.4.weight: 7.190206088125706e-05\n", + "Grad decoder.fc1.4.bias: 0.0009032441303133965\n", + "Grad decoder.fc2.weight: 0.00018850631022360176\n", + "Grad decoder.fc2.bias: 0.0020186963956803083\n", + "Grad _memory_unit.weight_ih_l0: 1.4330998055811506e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.167614916805178e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.8822879762155935e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0249252227367833e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002109487249981612\n", + "Grad _memory_unit.bias_hh_l1: 0.00011218836880289018\n", + "Data X Sample: tensor([[2.4452, 2.9509, 3.1585, 3.3301, 3.4371, 3.7053, 3.7130, 3.8046, 4.0301,\n", + " 3.7518, 3.9717, 3.9846, 3.7794, 3.7243, 3.5660, 3.4544, 3.3869, 3.5205,\n", + " 3.3226, 3.2750, 3.3639, 3.2654, 2.9399, 2.9356, 2.6970, 2.7921, 2.7865,\n", + " 2.6919, 2.6782, 2.7806, 2.7366, 2.8517, 2.9657, 2.0963, 3.6032, 4.0472,\n", + " 4.4187, 4.7386, 5.2989, 5.1863, 2.0236, 1.1451, 1.1075, 2.0724, 2.8978,\n", + " 3.0535, 2.0193, 2.8931]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1503, -0.2109, -0.5963, 1.1628, 0.2477, 0.7847, 0.1021, 0.1102,\n", + " 0.2170, -0.1663, 0.1039, -0.8484, 0.3611, 0.6615, -0.1635, -0.3519,\n", + " -0.9256, -0.2836, 0.3536, -0.1744, 0.6306, 0.9745, -0.6136, -0.1432,\n", + " -0.1173, 0.7924, 0.3185, 0.4808, -0.2584, 0.0416, -0.4685, -1.4301,\n", + " -0.4223, -1.8095, 0.8528, 1.2114, 0.4206, 0.0000, -0.5988, -0.2823,\n", + " 0.0216, 0.0358, -0.6846]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1765, -0.2018, -0.1299, -0.1835, -0.0965, 0.0047, 0.0987, 0.1688,\n", + " 0.2032, 0.1565, 0.1551, -0.0997, -0.1334, -0.1305, -0.0681, -0.1756,\n", + " -0.1974, -0.0865, -0.0882, -0.1303, -0.0634, -0.0438, -0.0918, -0.0221,\n", + " 0.0171, 0.0058, 0.0550, -0.1041, -0.0623, -0.1894, -0.1880, -0.1423,\n", + " -0.1344, -0.1995, -0.0710, -0.0722, -0.0433, 0.0145, 0.0142, 0.2418,\n", + " 0.2475, 0.2521, 0.1777]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00762467086315155\n", + "Grad encoder.fc1.bias: 0.0036473218351602554\n", + "Grad encoder.encoder.0.weight: 0.0011176123516634107\n", + "Grad encoder.encoder.0.bias: 0.0029921112582087517\n", + "Grad encoder.encoder.2.weight: 0.0006520116003230214\n", + "Grad encoder.encoder.2.bias: 0.0031841518357396126\n", + "Grad encoder.encoder.4.weight: 0.001104236114770174\n", + "Grad encoder.encoder.4.bias: 0.006591427139937878\n", + "Grad decoder.fc1.0.weight: 0.00034072078415192664\n", + "Grad decoder.fc1.0.bias: 0.0020361575298011303\n", + "Grad decoder.fc1.2.weight: 0.0003232086601201445\n", + "Grad decoder.fc1.2.bias: 0.001482093590311706\n", + "Grad decoder.fc1.4.weight: 0.00023528235033154488\n", + "Grad decoder.fc1.4.bias: 0.0014321735361590981\n", + "Grad decoder.fc2.weight: 0.00039885990554466844\n", + "Grad decoder.fc2.bias: 0.0025407716166228056\n", + "Grad _memory_unit.weight_ih_l0: 0.00016618573863524944\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0004358685982879251\n", + "Grad _memory_unit.bias_hh_l0: 0.00024066082551144063\n", + "Grad _memory_unit.weight_ih_l1: 4.7183799324557185e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0005460079992190003\n", + "Grad _memory_unit.bias_hh_l1: 0.00029897544300183654\n", + "Data X Sample: tensor([[1.5265, 1.7522, 1.8678, 2.0116, 2.0797, 2.3042, 2.3726, 2.4048, 2.4581,\n", + " 2.4833, 2.5156, 2.4792, 2.4345, 2.3802, 2.4286, 2.3905, 2.2862, 2.3503,\n", + " 2.3851, 2.3507, 2.3579, 2.4066, 2.4194, 2.3916, 2.4812, 2.4813, 2.4855,\n", + " 2.4839, 2.1405, 2.2369, 2.1277, 2.2217, 2.2440, 1.4829, 1.8874, 1.7488,\n", + " 1.5575, 1.4894, 1.5402, 1.5094, 1.1597, 0.7548, 0.7114, 1.2314, 1.7641,\n", + " 2.0014, 1.3326, 1.9079]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5775, 0.2633, -1.1128, 1.5808, 0.4197, 0.8166, -0.3287, -0.3148,\n", + " 0.1028, -0.3225, -0.4150, 0.6136, 0.3263, 1.7118, -1.2541, 0.4489,\n", + " 0.3030, -0.0711, -0.0860, 0.2563, -0.2901, -0.2620, -0.2207, 0.4353,\n", + " 0.2724, -0.1660, 0.9299, -0.5903, 0.1021, 0.6950, 0.2967, 0.1810,\n", + " 0.0140, 0.3353, 0.3628, 0.9309, -0.8958, -0.0869, 0.9794, -0.4495,\n", + " -0.5462, -0.3776, -0.2324]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3597, 0.3853, 0.1440, 0.3120, 0.1278, -0.1365, -0.3854, -0.4628,\n", + " -0.2098, -0.3291, -0.2541, 0.2484, 0.1546, 0.2975, 0.2091, 0.3503,\n", + " 0.2766, 0.1064, 0.0637, 0.1415, 0.1239, 0.0448, 0.0482, 0.0917,\n", + " 0.0034, 0.0427, -0.0305, 0.0362, 0.2200, 0.2740, 0.3219, 0.2542,\n", + " 0.3172, 0.2942, 0.2873, 0.2797, -0.0859, -0.0314, -0.0057, -0.2970,\n", + " -0.2721, -0.3609, -0.3223]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00015322875697165728\n", + "Grad encoder.fc1.bias: 0.0005206959904171526\n", + "Grad encoder.encoder.0.weight: 5.938405229244381e-05\n", + "Grad encoder.encoder.0.bias: 0.000515914405696094\n", + "Grad encoder.encoder.2.weight: 5.809710273751989e-05\n", + "Grad encoder.encoder.2.bias: 0.0006290863966569304\n", + "Grad encoder.encoder.4.weight: 0.00012617718311958015\n", + "Grad encoder.encoder.4.bias: 0.0017071054317057133\n", + "Grad decoder.fc1.0.weight: 5.7345016102772206e-05\n", + "Grad decoder.fc1.0.bias: 0.0007769447402097285\n", + "Grad decoder.fc1.2.weight: 7.695070235058665e-05\n", + "Grad decoder.fc1.2.bias: 0.0008808082202449441\n", + "Grad decoder.fc1.4.weight: 7.736824045423418e-05\n", + "Grad decoder.fc1.4.bias: 0.0009262072271667421\n", + "Grad decoder.fc2.weight: 0.0001637024397496134\n", + "Grad decoder.fc2.bias: 0.0022775062825530767\n", + "Grad _memory_unit.weight_ih_l0: 1.6636340660625137e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0001143229310400784\n", + "Grad _memory_unit.bias_hh_l0: 5.943125506746583e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.208474471553927e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00018747161084320396\n", + "Grad _memory_unit.bias_hh_l1: 9.923533070832491e-05\n", + "Data X Sample: tensor([[1.4926, 1.6575, 1.8332, 2.0357, 1.9977, 1.9609, 1.8688, 1.7035, 2.5289,\n", + " 3.8782, 4.1748, 4.1969, 4.0413, 3.8743, 3.6845, 3.4585, 3.4860, 3.5109,\n", + " 3.5126, 3.4460, 3.4252, 3.3313, 2.9544, 2.8592, 2.8903, 3.0350, 2.9890,\n", + " 3.0508, 3.0355, 3.1998, 3.2930, 3.3409, 3.7907, 2.8698, 4.4881, 4.8231,\n", + " 5.2623, 5.5390, 6.0595, 5.8246, 1.1645, 0.6851, 0.6629, 1.2170, 1.7482,\n", + " 1.9899, 1.2170, 1.7750]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1990, -0.9318, -0.1369, -0.2154, -1.2907, 0.4378, 0.4008, 0.3802,\n", + " 0.5952, 0.2424, 0.2855, -0.5385, -0.0905, 0.0113, -1.0464, -0.4210,\n", + " -0.6968, -0.0219, -0.2116, -0.5550, 2.2870, -0.5428, -0.0449, -0.8173,\n", + " -1.2778, -0.5734, 0.2541, -0.1708, -0.2681, -0.9533, 0.2138, -0.9561,\n", + " -0.4514, -0.7454, -0.5829, -0.6738, 0.7316, -0.7204, -0.0231, 0.5075,\n", + " 0.4012, 0.2722, 0.2565]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2135, -0.1651, -0.0885, -0.0492, 0.0569, 0.0516, 0.1261, 0.1815,\n", + " 0.2777, 0.2180, 0.1659, -0.1119, -0.1223, -0.1836, -0.1691, -0.2488,\n", + " -0.1585, -0.0920, -0.0924, -0.1375, -0.0512, -0.0211, -0.0308, -0.0162,\n", + " -0.0438, -0.0188, -0.0117, -0.1545, -0.1561, -0.2320, -0.2811, -0.1386,\n", + " -0.2780, -0.2448, -0.1304, -0.1178, 0.0143, 0.0111, 0.0199, 0.2840,\n", + " 0.2873, 0.2720, 0.2139]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00025516620371490717\n", + "Grad encoder.fc1.bias: 0.0008816937333904207\n", + "Grad encoder.encoder.0.weight: 6.117041630204767e-05\n", + "Grad encoder.encoder.0.bias: 0.0006705303676426411\n", + "Grad encoder.encoder.2.weight: 6.634106102865189e-05\n", + "Grad encoder.encoder.2.bias: 0.000717096496373415\n", + "Grad encoder.encoder.4.weight: 0.000208109529921785\n", + "Grad encoder.encoder.4.bias: 0.0015097360592335463\n", + "Grad decoder.fc1.0.weight: 7.339749572565779e-05\n", + "Grad decoder.fc1.0.bias: 0.0006946192588657141\n", + "Grad decoder.fc1.2.weight: 9.823770960792899e-05\n", + "Grad decoder.fc1.2.bias: 0.000987654086202383\n", + "Grad decoder.fc1.4.weight: 8.700189209775999e-05\n", + "Grad decoder.fc1.4.bias: 0.00103669217787683\n", + "Grad decoder.fc2.weight: 0.00018793840717989951\n", + "Grad decoder.fc2.bias: 0.002353676361963153\n", + "Grad _memory_unit.weight_ih_l0: 2.559953645686619e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0001660787675064057\n", + "Grad _memory_unit.bias_hh_l0: 8.662721666041762e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.1396716217859648e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00021425035083666444\n", + "Grad _memory_unit.bias_hh_l1: 0.00011421189992688596\n", + "Data X Sample: tensor([[1.6687, 1.7740, 2.0571, 2.0160, 2.2128, 2.2836, 2.3295, 2.4588, 2.3897,\n", + " 2.4865, 2.4014, 2.5590, 2.4434, 2.3420, 2.4059, 2.4630, 2.4152, 2.3657,\n", + " 2.4677, 2.4678, 2.5076, 2.5138, 2.4917, 2.6168, 2.5769, 2.6589, 2.5707,\n", + " 2.7082, 2.2272, 2.4007, 2.3762, 2.3378, 2.1318, 1.4006, 1.8874, 1.6977,\n", + " 1.6420, 1.4868, 1.5719, 1.5633, 1.2457, 0.7787, 0.7498, 1.2945, 1.8909,\n", + " 2.0414, 1.4006, 2.1190]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.0587, 0.6597, 0.4176, 0.8108, -0.8772, -0.0636, -1.3399, -1.1527,\n", + " -0.9151, -0.5066, -0.8418, 0.2716, -0.1000, 0.1738, 1.4368, -3.0007,\n", + " -0.3285, 0.2090, -0.0241, 0.5417, -0.6111, 0.1851, 0.0348, -1.3270,\n", + " 0.8477, -0.1818, -0.2415, -0.1398, 1.0958, 0.9286, -0.1307, 1.1309,\n", + " 0.2102, 0.3996, 0.1104, 1.4275, 0.0000, 0.7916, 0.2253, -0.4744,\n", + " -0.4090, -0.2761, 0.1452]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3735, 0.4061, 0.1532, 0.3363, 0.1432, -0.1363, -0.3917, -0.4540,\n", + " -0.2185, -0.3286, -0.2659, 0.2622, 0.1821, 0.3350, 0.2392, 0.3679,\n", + " 0.3099, 0.1127, 0.0627, 0.1551, 0.1215, 0.0708, 0.0562, 0.0739,\n", + " 0.0106, 0.0330, -0.0137, 0.0271, 0.2178, 0.3041, 0.3488, 0.2539,\n", + " 0.3377, 0.3233, 0.3002, 0.2791, -0.1047, -0.0357, -0.0045, -0.3035,\n", + " -0.2886, -0.3735, -0.3475]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0009576123557053506\n", + "Grad encoder.fc1.bias: 0.0011087424354627728\n", + "Grad encoder.encoder.0.weight: 0.00019787493511103094\n", + "Grad encoder.encoder.0.bias: 0.0009335527429357171\n", + "Grad encoder.encoder.2.weight: 0.00013877883611712605\n", + "Grad encoder.encoder.2.bias: 0.0010083976667374372\n", + "Grad encoder.encoder.4.weight: 0.000307926326058805\n", + "Grad encoder.encoder.4.bias: 0.002340544480830431\n", + "Grad decoder.fc1.0.weight: 7.784521585563198e-05\n", + "Grad decoder.fc1.0.bias: 0.0008962007705122232\n", + "Grad decoder.fc1.2.weight: 7.244199514389038e-05\n", + "Grad decoder.fc1.2.bias: 0.0010913696605712175\n", + "Grad decoder.fc1.4.weight: 5.922657874180004e-05\n", + "Grad decoder.fc1.4.bias: 0.0010851032566279173\n", + "Grad decoder.fc2.weight: 0.00013024873624090105\n", + "Grad decoder.fc2.bias: 0.0020326797384768724\n", + "Grad _memory_unit.weight_ih_l0: 2.310311174369417e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00013898525503464043\n", + "Grad _memory_unit.bias_hh_l0: 7.081204239511862e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0807085345732048e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002018181694438681\n", + "Grad _memory_unit.bias_hh_l1: 0.00010578206274658442\n", + "Data X Sample: tensor([[2.1132, 2.5183, 2.7844, 2.8316, 2.9112, 3.1557, 3.0382, 3.1033, 3.2465,\n", + " 3.2384, 3.1977, 3.1880, 3.1935, 3.2718, 3.0818, 3.1385, 3.1699, 3.2304,\n", + " 3.2607, 3.0146, 2.9934, 2.9133, 2.8267, 2.7199, 2.5769, 2.5832, 2.4215,\n", + " 2.5083, 2.0468, 2.1714, 2.2082, 2.1112, 1.9822, 1.3708, 2.0026, 2.4249,\n", + " 2.7177, 2.9444, 3.2072, 3.0386, 1.7563, 1.0316, 1.0287, 1.7682, 2.4499,\n", + " 2.8477, 1.9445, 2.5491]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1993, 0.1155, 0.5188, 0.0785, 0.9138, 0.8763, 0.8417, 0.4072,\n", + " 1.0726, 0.2070, 0.2656, 1.5186, 0.7019, 0.2055, -0.4889, -0.4822,\n", + " 0.7467, -0.1758, -0.5607, -0.5561, -1.0420, -0.7280, -0.6592, -1.4325,\n", + " -1.2638, -0.2836, 0.1018, -0.9774, -0.1180, -0.1660, 0.0258, 1.1571,\n", + " -0.7034, -0.5300, 0.1038, -0.8173, 0.0849, -0.7231, 0.0382, 0.2377,\n", + " -0.3740, 0.0342, -0.5158]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 2.5557e-01, 2.7642e-01, 1.0560e-01, 2.0439e-01, 6.1546e-02,\n", + " -1.0333e-01, -2.7431e-01, -2.7739e-01, -1.4414e-01, -1.9804e-01,\n", + " -1.8719e-01, 1.5761e-01, 1.2537e-01, 2.6001e-01, 1.7065e-01,\n", + " 2.5115e-01, 1.7759e-01, 6.8210e-02, 3.9821e-02, 9.3084e-02,\n", + " 5.7118e-02, 4.3829e-02, 6.0935e-03, 3.6911e-02, -1.8365e-04,\n", + " 3.0922e-02, -4.9091e-03, 1.9595e-02, 1.5833e-01, 2.0211e-01,\n", + " 2.2197e-01, 1.5693e-01, 2.0329e-01, 1.9726e-01, 1.8122e-01,\n", + " 1.5414e-01, -5.0927e-02, -3.8573e-03, -2.4952e-02, -1.7474e-01,\n", + " -1.5658e-01, -2.2200e-01, -2.3255e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005194530822336674\n", + "Grad encoder.fc1.bias: 0.0010566448327153921\n", + "Grad encoder.encoder.0.weight: 0.00013896686141379178\n", + "Grad encoder.encoder.0.bias: 0.0009326612344011664\n", + "Grad encoder.encoder.2.weight: 8.883515693014488e-05\n", + "Grad encoder.encoder.2.bias: 0.0009288484579883516\n", + "Grad encoder.encoder.4.weight: 0.00020589606720022857\n", + "Grad encoder.encoder.4.bias: 0.0022268809843808413\n", + "Grad decoder.fc1.0.weight: 7.417236338369548e-05\n", + "Grad decoder.fc1.0.bias: 0.0008863523253239691\n", + "Grad decoder.fc1.2.weight: 7.301615551114082e-05\n", + "Grad decoder.fc1.2.bias: 0.0006868981290608644\n", + "Grad decoder.fc1.4.weight: 5.9278987464495e-05\n", + "Grad decoder.fc1.4.bias: 0.0006869367207400501\n", + "Grad decoder.fc2.weight: 0.00013606040738523006\n", + "Grad decoder.fc2.bias: 0.0018825288861989975\n", + "Grad _memory_unit.weight_ih_l0: 1.5007884940132499e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0001495116885052994\n", + "Grad _memory_unit.bias_hh_l0: 7.963394455146044e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.1422293027862906e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00021861516870558262\n", + "Grad _memory_unit.bias_hh_l1: 0.000116930459626019\n", + "Data X Sample: tensor([[1.5297, 1.8192, 1.9053, 2.0422, 2.0865, 2.1554, 2.2463, 2.2174, 2.3043,\n", + " 2.3759, 2.4078, 2.4207, 2.2770, 2.3120, 2.3025, 2.4383, 2.3130, 2.3445,\n", + " 2.4305, 2.4083, 2.4806, 2.4403, 2.4291, 2.5157, 2.6031, 2.7059, 2.5947,\n", + " 2.5206, 2.3521, 2.3876, 2.4392, 2.4870, 2.1604, 1.4234, 1.9511, 1.7050,\n", + " 1.6164, 1.5292, 1.6543, 1.5576, 1.2409, 0.7309, 0.7235, 1.3376, 1.8235,\n", + " 2.0700, 1.3734, 1.9079]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.3573, 0.6627, 0.0155, -0.1624, -0.2833, -0.7264, -0.9152, -0.8976,\n", + " 0.5173, 0.6740, 0.5818, -0.4119, 0.9253, 0.1039, 0.8999, 1.5972,\n", + " 0.7928, -3.5731, 0.3792, -0.3107, -1.5054, 0.1714, -1.1545, -0.1302,\n", + " -0.5737, -0.5549, 0.5244, -0.4905, 0.3376, -1.0465, 0.1075, -0.1388,\n", + " -0.3869, -0.5769, 0.7913, 1.1322, -0.0333, -0.3755, -0.9499, -0.9779,\n", + " -0.3807, -0.2168, 0.6511]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3189, 0.3321, 0.1107, 0.2720, 0.0992, -0.1208, -0.3086, -0.3203,\n", + " -0.1737, -0.2462, -0.2232, 0.1959, 0.1534, 0.3163, 0.2232, 0.3144,\n", + " 0.2317, 0.0748, 0.0405, 0.1172, 0.0717, 0.0675, 0.0295, 0.0394,\n", + " 0.0079, 0.0327, -0.0069, 0.0077, 0.1736, 0.2522, 0.2668, 0.1827,\n", + " 0.2691, 0.2515, 0.2241, 0.2128, -0.0807, -0.0321, -0.0100, -0.2183,\n", + " -0.2128, -0.2717, -0.2931]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0009013103554025292\n", + "Grad encoder.fc1.bias: 0.0006673817988485098\n", + "Grad encoder.encoder.0.weight: 0.00020075388601981103\n", + "Grad encoder.encoder.0.bias: 0.0007293131784535944\n", + "Grad encoder.encoder.2.weight: 0.00015213183360174298\n", + "Grad encoder.encoder.2.bias: 0.0008593447273597121\n", + "Grad encoder.encoder.4.weight: 0.0003968144883401692\n", + "Grad encoder.encoder.4.bias: 0.0020516645163297653\n", + "Grad decoder.fc1.0.weight: 8.447462460026145e-05\n", + "Grad decoder.fc1.0.bias: 0.0008264606585726142\n", + "Grad decoder.fc1.2.weight: 7.81188573455438e-05\n", + "Grad decoder.fc1.2.bias: 0.0010920441709458828\n", + "Grad decoder.fc1.4.weight: 6.977200973778963e-05\n", + "Grad decoder.fc1.4.bias: 0.00109871628228575\n", + "Grad decoder.fc2.weight: 0.00014641761663369834\n", + "Grad decoder.fc2.bias: 0.002379265846684575\n", + "Grad _memory_unit.weight_ih_l0: 2.2056259695091285e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.546950266463682e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.439767144504003e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0500817552383523e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00015760146197862923\n", + "Grad _memory_unit.bias_hh_l1: 8.240441093221307e-05\n", + "Data X Sample: tensor([[1.4650, 1.4915, 1.6424, 1.7514, 1.8611, 1.9594, 2.0291, 1.9790, 2.0944,\n", + " 3.7187, 4.1462, 4.0235, 3.9281, 3.8225, 3.5811, 3.5351, 3.5127, 3.6115,\n", + " 3.4919, 3.5725, 3.3860, 3.3450, 3.0387, 2.8478, 2.9222, 2.8888, 2.8664,\n", + " 2.9733, 3.0078, 3.1081, 3.1076, 3.1999, 3.5487, 2.6707, 4.3434, 4.6285,\n", + " 4.8474, 5.3562, 5.8694, 5.5891, 1.0309, 0.6373, 0.6103, 1.1855, 1.6531,\n", + " 1.7784, 1.1762, 1.6108]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.6375, -0.8204, 0.4047, -0.0496, 0.8004, 0.1315, 0.8357, 0.8983,\n", + " 0.5247, 0.7862, 0.5017, -0.3087, 0.3435, -0.3861, 0.1195, 2.1341,\n", + " 0.3027, 0.7004, -2.2028, -0.7548, -0.4131, 5.0150, -0.0804, 0.2907,\n", + " -0.8434, -0.1976, 0.1583, -0.4056, -0.4615, 0.1470, -1.3773, -0.7752,\n", + " -0.1943, 0.0519, -0.4089, 0.3185, -0.6001, 0.7428, -0.8437, 0.6270,\n", + " 0.6256, 0.5209, 0.2421]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1826, -0.1452, -0.0567, -0.0137, 0.0977, 0.1156, 0.1240, 0.1862,\n", + " 0.2126, 0.1641, 0.1460, -0.1492, -0.1426, -0.2213, -0.1706, -0.2160,\n", + " -0.1396, -0.0723, -0.1142, -0.1161, -0.0438, -0.0319, -0.0401, -0.0060,\n", + " 0.0021, -0.0356, -0.0481, -0.2019, -0.1994, -0.2333, -0.3065, -0.1148,\n", + " -0.3064, -0.2543, -0.1201, -0.1191, -0.0025, 0.0303, 0.0427, 0.2424,\n", + " 0.2244, 0.2306, 0.1850]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00039458947139792144\n", + "Grad encoder.fc1.bias: 0.0009411359205842018\n", + "Grad encoder.encoder.0.weight: 8.601066656410694e-05\n", + "Grad encoder.encoder.0.bias: 0.000560096581466496\n", + "Grad encoder.encoder.2.weight: 5.721832349081524e-05\n", + "Grad encoder.encoder.2.bias: 0.000556666636839509\n", + "Grad encoder.encoder.4.weight: 0.00016459646576549858\n", + "Grad encoder.encoder.4.bias: 0.001265268074348569\n", + "Grad decoder.fc1.0.weight: 5.068501195637509e-05\n", + "Grad decoder.fc1.0.bias: 0.0005243204068392515\n", + "Grad decoder.fc1.2.weight: 6.605169619433582e-05\n", + "Grad decoder.fc1.2.bias: 0.0008525897283107042\n", + "Grad decoder.fc1.4.weight: 6.349280738504604e-05\n", + "Grad decoder.fc1.4.bias: 0.0008746524108573794\n", + "Grad decoder.fc2.weight: 0.00015500086010433733\n", + "Grad decoder.fc2.bias: 0.0019100737990811467\n", + "Grad _memory_unit.weight_ih_l0: 1.0540264156588819e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.864256672793999e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.064729389734566e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.91890818416141e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00013278558617457747\n", + "Grad _memory_unit.bias_hh_l1: 6.994493014644831e-05\n", + "Data X Sample: tensor([[1.2231, 1.4216, 1.6334, 1.8433, 1.9038, 2.1834, 2.0506, 2.2771, 4.0228,\n", + " 4.1862, 4.2223, 3.9495, 3.9348, 3.8552, 3.6492, 3.5857, 3.5033, 3.5438,\n", + " 3.5043, 3.4051, 3.4669, 3.3787, 3.0291, 2.9451, 2.8134, 2.8365, 2.9730,\n", + " 2.9610, 2.9557, 3.0229, 3.1076, 3.3602, 3.6829, 2.8194, 4.3532, 4.6942,\n", + " 4.9044, 5.3244, 5.7236, 5.5267, 0.9545, 0.6074, 0.6103, 1.0276, 1.6134,\n", + " 1.8184, 1.2714, 1.7046]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6885, -0.4487, 0.2363, -0.3563, -1.2117, -0.2457, 0.5588, 0.3841,\n", + " 0.5265, 0.5060, 0.6976, -1.0525, -0.1335, -1.7282, -0.2763, -0.2084,\n", + " 0.8269, -0.4932, -0.7092, 1.4815, 0.6846, -3.2422, 0.2455, 0.8229,\n", + " 0.6213, -2.1575, -1.6734, -0.7222, -0.9858, 0.0272, -0.3659, -1.6406,\n", + " -1.6424, -0.8248, -0.4980, -0.0691, 0.0213, 0.1123, 0.9794, 0.7320,\n", + " 0.7059, 0.8519, 0.8650]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2067, -0.1595, -0.0557, 0.0097, 0.1484, 0.1557, 0.1434, 0.2054,\n", + " 0.2258, 0.1729, 0.1506, -0.1758, -0.1598, -0.2657, -0.2035, -0.2491,\n", + " -0.1333, -0.0815, -0.1386, -0.1209, -0.0497, -0.0319, -0.0387, -0.0033,\n", + " 0.0174, -0.0499, -0.0683, -0.2409, -0.2424, -0.2646, -0.3513, -0.1171,\n", + " -0.3567, -0.2833, -0.1330, -0.1279, 0.0046, 0.0242, 0.0552, 0.2652,\n", + " 0.2251, 0.2480, 0.2055]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004903246299363673\n", + "Grad encoder.fc1.bias: 0.0013683941215276718\n", + "Grad encoder.encoder.0.weight: 0.00014465051935985684\n", + "Grad encoder.encoder.0.bias: 0.0012642653891816735\n", + "Grad encoder.encoder.2.weight: 0.00014062566333450377\n", + "Grad encoder.encoder.2.bias: 0.001293059322051704\n", + "Grad encoder.encoder.4.weight: 0.00039486921741627157\n", + "Grad encoder.encoder.4.bias: 0.0028386125341057777\n", + "Grad decoder.fc1.0.weight: 0.00012364071153569967\n", + "Grad decoder.fc1.0.bias: 0.0010968913557007909\n", + "Grad decoder.fc1.2.weight: 0.000112184789031744\n", + "Grad decoder.fc1.2.bias: 0.0010363352485001087\n", + "Grad decoder.fc1.4.weight: 9.165849041892216e-05\n", + "Grad decoder.fc1.4.bias: 0.0009592324495315552\n", + "Grad decoder.fc2.weight: 0.00016845512436702847\n", + "Grad decoder.fc2.bias: 0.0020199359860271215\n", + "Grad _memory_unit.weight_ih_l0: 4.6455275878543034e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0002662288607098162\n", + "Grad _memory_unit.bias_hh_l0: 0.00013612900511361659\n", + "Grad _memory_unit.weight_ih_l1: 2.0762874555657618e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00034788899938575923\n", + "Grad _memory_unit.bias_hh_l1: 0.0001811090623959899\n", + "Data X Sample: tensor([[1.5032, 1.8760, 2.0676, 2.2193, 2.3119, 2.5222, 2.5036, 2.4687, 2.4923,\n", + " 2.3980, 2.4839, 2.3097, 2.2437, 2.1730, 2.0276, 2.0377, 1.9969, 1.9963,\n", + " 1.8957, 1.8653, 1.8157, 1.7804, 1.7134, 1.6357, 1.5671, 1.5149, 1.4625,\n", + " 1.5172, 1.1969, 1.2544, 1.1828, 1.0860, 1.0164, 0.7071, 1.0834, 1.2623,\n", + " 1.4001, 1.5928, 1.8508, 1.8810, 1.3936, 0.7587, 0.7801, 1.4294, 1.9702,\n", + " 2.2644, 1.4006, 2.1268]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.5764, -1.6991, -0.8713, -0.9184, -0.5323, -0.1116, 1.1507, 2.3396,\n", + " 1.0770, 2.6324, 4.3909, -0.7385, -0.2587, -1.3274, -1.9613, -1.6468,\n", + " -0.7493, -0.1313, -0.8819, -0.4627, 0.1866, -0.1185, 0.1462, -0.5540,\n", + " -0.2586, -0.3737, 0.5434, 0.2119, -0.0429, -1.2999, -1.6969, -1.4301,\n", + " -2.0646, -1.7473, -1.7296, -1.6051, -0.9002, -0.3276, -1.0346, 6.3265,\n", + " 6.0156, 5.5054, 2.6091]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.0519, -0.0511, -0.0218, -0.0508, -0.0258, 0.0286, 0.0206, 0.0763,\n", + " 0.0733, 0.0548, 0.0320, -0.0316, -0.0658, -0.0328, -0.0156, -0.0580,\n", + " -0.0742, -0.0230, -0.0158, -0.0504, -0.0243, -0.0035, -0.0254, -0.0067,\n", + " -0.0226, -0.0152, -0.0170, -0.0648, -0.0567, -0.1007, -0.0920, -0.0534,\n", + " -0.1052, -0.0769, -0.0088, -0.0445, -0.0317, 0.0247, -0.0079, 0.0576,\n", + " 0.1098, 0.0892, 0.0802]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005534035735763609\n", + "Grad encoder.fc1.bias: 0.0004579251108225435\n", + "Grad encoder.encoder.0.weight: 0.00015823598369024694\n", + "Grad encoder.encoder.0.bias: 0.0005740289343520999\n", + "Grad encoder.encoder.2.weight: 0.00014872741303406656\n", + "Grad encoder.encoder.2.bias: 0.0007128517027013004\n", + "Grad encoder.encoder.4.weight: 0.0003648426791187376\n", + "Grad encoder.encoder.4.bias: 0.0019456095760688186\n", + "Grad decoder.fc1.0.weight: 9.39869205467403e-05\n", + "Grad decoder.fc1.0.bias: 0.000823928217869252\n", + "Grad decoder.fc1.2.weight: 6.76157942507416e-05\n", + "Grad decoder.fc1.2.bias: 0.0008890627068467438\n", + "Grad decoder.fc1.4.weight: 6.237170600797981e-05\n", + "Grad decoder.fc1.4.bias: 0.0008423889521509409\n", + "Grad decoder.fc2.weight: 9.544717613607645e-05\n", + "Grad decoder.fc2.bias: 0.001679836306720972\n", + "Grad _memory_unit.weight_ih_l0: 3.5009219573112205e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00014292883861344308\n", + "Grad _memory_unit.bias_hh_l0: 7.347277278313413e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.4329285477288067e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00020161682914476842\n", + "Grad _memory_unit.bias_hh_l1: 0.00010560108057688922\n", + "Data X Sample: tensor([[2.4590, 2.7936, 2.9842, 3.1071, 3.2049, 3.3561, 3.5451, 3.4880, 3.5419,\n", + " 3.7439, 3.7560, 3.7450, 3.7594, 3.6098, 3.6996, 3.4476, 3.4372, 3.3890,\n", + " 3.4300, 3.3791, 3.2461, 3.2042, 2.9592, 2.7867, 2.6951, 2.6354, 2.7146,\n", + " 2.6796, 2.5360, 2.4957, 2.6106, 2.6777, 2.6027, 1.8674, 3.2012, 3.5851,\n", + " 3.7461, 3.8932, 4.2467, 4.1904, 1.9520, 1.0973, 1.0873, 1.9519, 2.6917,\n", + " 2.9678, 1.9513, 2.8696]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.0100, -0.4204, -1.2983, -0.5521, -1.1200, 0.0592, 0.8080, 0.7599,\n", + " 0.8397, 0.8184, 0.7939, 0.5792, 0.5470, 0.7250, 0.3964, -0.0340,\n", + " -0.3453, -0.6858, -0.5940, -0.4168, -1.0672, -0.3220, -0.8437, -0.1249,\n", + " 0.2589, 0.0297, 1.9186, 2.0600, 0.3128, -0.8886, -0.4504, 0.4890,\n", + " -0.2816, 0.0114, 0.5128, 0.4058, -0.0457, 0.3945, 2.2782, 0.7936,\n", + " 0.7582, 0.8852, 0.9141]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1504, -0.1257, -0.0358, -0.0326, 0.0693, 0.1207, 0.1083, 0.1704,\n", + " 0.1525, 0.1009, 0.1252, -0.1295, -0.1243, -0.1966, -0.1371, -0.1693,\n", + " -0.1012, -0.0518, -0.0792, -0.0812, -0.0486, -0.0138, -0.0307, 0.0006,\n", + " 0.0203, -0.0339, -0.0739, -0.1812, -0.1780, -0.2038, -0.2559, -0.1018,\n", + " -0.2641, -0.2084, -0.0906, -0.1115, -0.0205, 0.0203, 0.0305, 0.1797,\n", + " 0.1726, 0.1972, 0.1642]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0008341303910128772\n", + "Grad encoder.fc1.bias: 0.0012158656027168036\n", + "Grad encoder.encoder.0.weight: 0.0002324810193385929\n", + "Grad encoder.encoder.0.bias: 0.0009531576070003211\n", + "Grad encoder.encoder.2.weight: 0.00021704589016735554\n", + "Grad encoder.encoder.2.bias: 0.0012604668736457825\n", + "Grad encoder.encoder.4.weight: 0.0005717122694477439\n", + "Grad encoder.encoder.4.bias: 0.003298762021586299\n", + "Grad decoder.fc1.0.weight: 0.00015667556726839393\n", + "Grad decoder.fc1.0.bias: 0.0013437682064250112\n", + "Grad decoder.fc1.2.weight: 0.0001347125507891178\n", + "Grad decoder.fc1.2.bias: 0.0015506759518757463\n", + "Grad decoder.fc1.4.weight: 0.00011260085739195347\n", + "Grad decoder.fc1.4.bias: 0.0013055301969870925\n", + "Grad decoder.fc2.weight: 0.00017657353600952774\n", + "Grad decoder.fc2.bias: 0.0023799515329301357\n", + "Grad _memory_unit.weight_ih_l0: 3.940462556784041e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00022702952264808118\n", + "Grad _memory_unit.bias_hh_l0: 0.00011665323108900338\n", + "Grad _memory_unit.weight_ih_l1: 1.9528828488546424e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00029934218036942184\n", + "Grad _memory_unit.bias_hh_l1: 0.00015760163660161197\n", + "Data X Sample: tensor([[1.4693, 1.8978, 2.1983, 2.3265, 2.5390, 2.5443, 2.6268, 2.7186, 2.7266,\n", + " 2.8309, 2.9471, 3.0030, 2.7408, 2.7674, 2.7186, 2.7160, 2.7501, 2.5669,\n", + " 2.8188, 2.7487, 2.8192, 2.8858, 2.6797, 2.5405, 2.4136, 2.3168, 2.2297,\n", + " 2.2962, 1.7936, 1.8930, 1.6763, 1.6635, 1.4036, 0.8765, 1.2893, 1.3256,\n", + " 1.3057, 1.6246, 1.8635, 1.8612, 1.3984, 0.8264, 0.7943, 1.4553, 2.1565,\n", + " 2.1786, 1.5230, 2.2128]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.0393, 0.7149, 0.0229, -0.4884, 0.7502, -0.9783, 0.8747, 0.6547,\n", + " -0.4418, -0.3146, -0.5913, -0.6977, 0.8022, -0.9440, -0.2289, -0.0183,\n", + " -1.5828, -2.2121, 0.4164, 0.3670, -0.7151, 0.0932, -0.6881, -0.4681,\n", + " -0.1652, -0.0256, 1.2285, -0.9774, 0.0739, -1.0501, -0.6648, -0.0581,\n", + " 0.4171, 0.1576, -0.0704, -0.2540, -0.0333, 0.7428, 0.5660, -0.2767,\n", + " 0.1837, 2.0987, 0.6088]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.1647, 0.1639, 0.0684, 0.1186, 0.0145, -0.0471, -0.1761, -0.1453,\n", + " -0.0857, -0.1015, -0.1193, 0.0837, 0.0823, 0.1989, 0.1347, 0.1646,\n", + " 0.0973, 0.0289, 0.0095, 0.0480, 0.0121, 0.0427, 0.0010, 0.0205,\n", + " -0.0214, -0.0015, -0.0070, -0.0018, 0.0951, 0.1067, 0.1102, 0.0666,\n", + " 0.0963, 0.1107, 0.1046, 0.0770, -0.0108, -0.0007, -0.0318, -0.0829,\n", + " -0.0718, -0.1178, -0.1459]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00027368467999622226\n", + "Grad encoder.fc1.bias: 0.0006973552517592907\n", + "Grad encoder.encoder.0.weight: 9.968047379516065e-05\n", + "Grad encoder.encoder.0.bias: 0.0005785074317827821\n", + "Grad encoder.encoder.2.weight: 9.786528971744701e-05\n", + "Grad encoder.encoder.2.bias: 0.0006166985840536654\n", + "Grad encoder.encoder.4.weight: 0.0002545798779465258\n", + "Grad encoder.encoder.4.bias: 0.0008143355953507125\n", + "Grad decoder.fc1.0.weight: 7.266366446856409e-05\n", + "Grad decoder.fc1.0.bias: 0.0005849661538377404\n", + "Grad decoder.fc1.2.weight: 8.171323861461133e-05\n", + "Grad decoder.fc1.2.bias: 0.0008239862509071827\n", + "Grad decoder.fc1.4.weight: 8.033357153180987e-05\n", + "Grad decoder.fc1.4.bias: 0.0009408872574567795\n", + "Grad decoder.fc2.weight: 0.00016022514319047332\n", + "Grad decoder.fc2.bias: 0.0022035217843949795\n", + "Grad _memory_unit.weight_ih_l0: 2.1163426936254837e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.151134973857552e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.6673571483115666e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0090496289194562e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011745280062314123\n", + "Grad _memory_unit.bias_hh_l1: 6.093182309996337e-05\n", + "Data X Sample: tensor([[1.4724, 1.6342, 1.8137, 2.0641, 2.1053, 2.1834, 2.0460, 2.1607, 3.5175,\n", + " 4.3458, 4.3175, 4.3390, 4.1123, 4.0897, 3.9392, 3.8661, 3.6605, 3.6792,\n", + " 3.7067, 3.6134, 3.5037, 3.4292, 2.9833, 3.0348, 2.8640, 2.9149, 2.9970,\n", + " 3.0508, 2.9835, 3.2882, 3.3280, 3.3768, 3.8347, 2.8011, 4.5542, 4.8815,\n", + " 5.1246, 5.4118, 6.0912, 5.8530, 1.1072, 0.6632, 0.6103, 1.1453, 1.7165,\n", + " 1.9728, 1.3190, 1.7437]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 2.8003e-01, 1.0633e+00, 3.0287e-01, 4.6162e-01, 1.0843e+00,\n", + " 1.5872e+00, -1.2641e-01, -3.2094e-02, 7.8893e-01, -3.2443e-01,\n", + " -4.6496e-01, 9.1092e-01, -8.7228e-01, 5.7844e-01, 7.5065e-01,\n", + " 1.4073e+00, 3.7431e-01, -9.4319e-04, 9.5976e-01, 1.0507e+00,\n", + " -3.2592e-01, -2.2086e-01, -9.6097e-02, 4.8052e-01, -1.2428e+00,\n", + " 6.8135e-01, 1.7174e-01, 3.9929e-01, 2.3309e-01, 9.5089e-01,\n", + " 6.2206e-01, 4.9044e-01, 1.0263e-01, -1.5343e-01, 2.7146e-02,\n", + " 6.9586e-01, 1.0623e+00, -6.8366e-01, -5.5616e-01, -9.2627e-01,\n", + " -1.3849e+00, -7.4186e-01, 1.2507e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2442, -0.1697, -0.0400, 0.0489, 0.1939, 0.1878, 0.1612, 0.2380,\n", + " 0.2511, 0.2009, 0.1560, -0.1694, -0.1582, -0.2601, -0.2439, -0.3231,\n", + " -0.1022, -0.0939, -0.1529, -0.1094, -0.0471, 0.0163, -0.0106, -0.0125,\n", + " -0.0010, -0.0425, -0.1046, -0.2498, -0.2786, -0.2922, -0.3767, -0.1369,\n", + " -0.3895, -0.2833, -0.1325, -0.1650, 0.0021, -0.0160, 0.0322, 0.2832,\n", + " 0.2365, 0.2867, 0.2347]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00018699385691434145\n", + "Grad encoder.fc1.bias: 0.00042077171383425593\n", + "Grad encoder.encoder.0.weight: 5.4695545259164646e-05\n", + "Grad encoder.encoder.0.bias: 0.0003361143753863871\n", + "Grad encoder.encoder.2.weight: 5.499465623870492e-05\n", + "Grad encoder.encoder.2.bias: 0.00038868095725774765\n", + "Grad encoder.encoder.4.weight: 0.00015479786088690162\n", + "Grad encoder.encoder.4.bias: 0.00046308967284858227\n", + "Grad decoder.fc1.0.weight: 5.899177267565392e-05\n", + "Grad decoder.fc1.0.bias: 0.0004515057953540236\n", + "Grad decoder.fc1.2.weight: 5.760533895227127e-05\n", + "Grad decoder.fc1.2.bias: 0.0005894898204132915\n", + "Grad decoder.fc1.4.weight: 7.519590144511312e-05\n", + "Grad decoder.fc1.4.bias: 0.0007927009137347341\n", + "Grad decoder.fc2.weight: 0.00014752567221876234\n", + "Grad decoder.fc2.bias: 0.0019224334973841906\n", + "Grad _memory_unit.weight_ih_l0: 1.3538498933485243e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.08524319936987e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.105148450937122e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.132642622309504e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.103049524128437e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.72975880256854e-05\n", + "Data X Sample: tensor([[1.4406, 1.7391, 1.8768, 1.9591, 2.2180, 2.2718, 2.3249, 2.5014, 2.4434,\n", + " 2.5971, 2.6045, 2.6466, 2.5699, 2.4865, 2.5017, 2.4301, 2.3837, 2.4663,\n", + " 2.5069, 2.5088, 2.5027, 2.5352, 2.3761, 2.2752, 2.2935, 2.3455, 2.3603,\n", + " 2.3533, 2.1439, 2.1550, 2.1802, 2.2576, 2.1956, 1.4532, 1.9242, 1.7512,\n", + " 1.6440, 1.4338, 1.6036, 1.5604, 1.1597, 0.7169, 0.6871, 1.1510, 1.7878,\n", + " 1.9213, 1.3326, 1.7202]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.9356, 0.0427, 0.9356, 0.7108, -1.1793, -1.0167, -0.4123, -0.5874,\n", + " -0.4956, -0.7084, -0.6907, -0.3251, -1.4143, 0.2318, 0.4011, 0.6981,\n", + " -0.3707, 1.5926, -0.4460, 0.3408, 0.3407, -0.0341, 0.7748, 0.7945,\n", + " 0.5692, -0.0091, 0.4682, -0.4456, 0.6763, 0.9882, 0.6214, 0.2915,\n", + " 0.0400, 0.8979, 0.8481, -0.5303, -0.8471, 0.8024, -0.5596, -0.7131,\n", + " -0.3922, -1.2425, -1.4171]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3018, 0.3160, 0.1042, 0.2669, 0.0861, -0.1030, -0.2643, -0.2853,\n", + " -0.1457, -0.2053, -0.2011, 0.1627, 0.1275, 0.2953, 0.2408, 0.2830,\n", + " 0.2367, 0.0620, 0.0315, 0.1114, 0.0680, 0.0711, 0.0255, 0.0263,\n", + " -0.0120, 0.0136, -0.0147, -0.0083, 0.1401, 0.2105, 0.2334, 0.1426,\n", + " 0.2212, 0.2492, 0.2178, 0.1935, -0.0563, -0.0517, -0.0176, -0.2124,\n", + " -0.1994, -0.2349, -0.2560]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0008272309205494821\n", + "Grad encoder.fc1.bias: 0.00045060768024995923\n", + "Grad encoder.encoder.0.weight: 0.00018796761287376285\n", + "Grad encoder.encoder.0.bias: 0.0005614141700789332\n", + "Grad encoder.encoder.2.weight: 0.0001235728559549898\n", + "Grad encoder.encoder.2.bias: 0.0007226602174341679\n", + "Grad encoder.encoder.4.weight: 0.00033103604800999165\n", + "Grad encoder.encoder.4.bias: 0.0019841697067022324\n", + "Grad decoder.fc1.0.weight: 8.188995707314461e-05\n", + "Grad decoder.fc1.0.bias: 0.0008266132208518684\n", + "Grad decoder.fc1.2.weight: 7.307444320758805e-05\n", + "Grad decoder.fc1.2.bias: 0.0010850345715880394\n", + "Grad decoder.fc1.4.weight: 6.222196680027992e-05\n", + "Grad decoder.fc1.4.bias: 0.0011853160103783011\n", + "Grad decoder.fc2.weight: 0.0001418681349605322\n", + "Grad decoder.fc2.bias: 0.0028275528457015753\n", + "Grad _memory_unit.weight_ih_l0: 2.9168353648856282e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00012934308324474841\n", + "Grad _memory_unit.bias_hh_l0: 6.677259807474911e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.1791754332080018e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00018919630383607\n", + "Grad _memory_unit.bias_hh_l1: 9.81409102678299e-05\n", + "Data X Sample: tensor([[1.3653, 1.5235, 1.6920, 1.8017, 1.8901, 2.0257, 2.1138, 2.3935, 3.7518,\n", + " 4.1578, 4.2826, 4.1209, 3.7883, 3.8579, 3.8232, 3.7813, 3.7564, 3.6753,\n", + " 3.5725, 3.3698, 3.5013, 3.1889, 2.7954, 2.7466, 2.7814, 2.9384, 2.9277,\n", + " 3.1813, 3.0841, 3.1867, 3.1881, 3.3768, 3.7995, 2.7485, 4.4758, 4.8718,\n", + " 4.8375, 5.2051, 5.8821, 5.7423, 1.0977, 0.6034, 0.6083, 1.0506, 1.6015,\n", + " 1.8584, 1.2782, 1.7593]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5068, 0.0161, -0.7384, 0.0561, 0.1145, 0.8345, 0.4384, 0.5704,\n", + " 0.3832, 0.6337, 0.4763, -0.2927, -0.2239, -0.6281, -1.9311, -0.7418,\n", + " -1.7256, 0.0218, -0.1281, -0.0268, -0.2589, 1.0764, 0.4874, 0.2323,\n", + " 0.2005, 0.0453, 0.2629, 0.1615, -0.5394, 0.0783, 0.1872, -0.9153,\n", + " -0.0178, -0.0800, -0.3632, 1.3294, 0.8291, 0.2376, 0.0382, 0.6534,\n", + " 0.4749, 0.6760, -0.2007]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2001, -0.1586, -0.0422, -0.0147, 0.0797, 0.1321, 0.1352, 0.2254,\n", + " 0.2197, 0.1814, 0.1664, -0.1155, -0.1386, -0.1794, -0.1768, -0.2631,\n", + " -0.1226, -0.0820, -0.0890, -0.1019, -0.0600, 0.0111, -0.0059, -0.0260,\n", + " -0.0386, -0.0217, -0.0860, -0.1720, -0.2091, -0.2452, -0.2872, -0.1393,\n", + " -0.2962, -0.2333, -0.1224, -0.1620, -0.0243, -0.0061, -0.0071, 0.2398,\n", + " 0.2471, 0.2520, 0.2172]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006375298835337162\n", + "Grad encoder.fc1.bias: 0.001052066800184548\n", + "Grad encoder.encoder.0.weight: 0.00014786991232540458\n", + "Grad encoder.encoder.0.bias: 0.0005689810495823622\n", + "Grad encoder.encoder.2.weight: 9.714074258226901e-05\n", + "Grad encoder.encoder.2.bias: 0.0004940099897794425\n", + "Grad encoder.encoder.4.weight: 0.00025027533411048353\n", + "Grad encoder.encoder.4.bias: 0.001039843074977398\n", + "Grad decoder.fc1.0.weight: 7.667075988138095e-05\n", + "Grad decoder.fc1.0.bias: 0.0005792576703242958\n", + "Grad decoder.fc1.2.weight: 9.554797725286335e-05\n", + "Grad decoder.fc1.2.bias: 0.0009180913330055773\n", + "Grad decoder.fc1.4.weight: 9.012295049615204e-05\n", + "Grad decoder.fc1.4.bias: 0.0009721852838993073\n", + "Grad decoder.fc2.weight: 0.00015277705097105354\n", + "Grad decoder.fc2.bias: 0.001784816849976778\n", + "Grad _memory_unit.weight_ih_l0: 1.35014897750807e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.9905957237351686e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.1057872800156474e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.255955774278846e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00012442372099030763\n", + "Grad _memory_unit.bias_hh_l1: 6.497437425423414e-05\n", + "Data X Sample: tensor([[1.6475, 1.9066, 2.1142, 2.2128, 2.3699, 2.4309, 2.5929, 2.5837, 2.5142,\n", + " 2.5528, 2.5410, 2.6135, 2.5854, 2.5411, 2.5093, 2.5642, 2.5079, 2.4431,\n", + " 2.5296, 2.4641, 2.6499, 2.6148, 2.6219, 2.6435, 2.5712, 2.6432, 2.5174,\n", + " 2.5940, 2.2133, 2.3352, 2.1942, 2.2272, 1.9140, 1.2678, 1.7036, 1.6320,\n", + " 1.5378, 1.5186, 1.5022, 1.4469, 1.2647, 0.7667, 0.7518, 1.2773, 2.1050,\n", + " 2.1786, 1.5298, 2.1034]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6696, 0.8011, 0.0232, 1.1758, 0.1014, 0.3092, -0.8331, -0.7906,\n", + " -0.9342, -0.7643, -0.8562, 1.0826, -0.5035, 1.4695, 0.6643, 0.5876,\n", + " 2.3509, -1.3963, -0.3545, -0.3548, 0.1199, -0.4359, 0.2763, -0.5760,\n", + " 0.7959, -0.2443, 0.1493, 0.9686, 1.1972, 0.6505, 0.8709, 0.0740,\n", + " -0.0446, 0.6677, -0.0263, -0.3191, 0.0033, -0.3175, -0.7681, -0.4319,\n", + " -0.4523, -0.8376, 0.5780]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3307, 0.3522, 0.1121, 0.2890, 0.0823, -0.1308, -0.2982, -0.3324,\n", + " -0.1582, -0.2333, -0.2203, 0.1745, 0.1318, 0.3208, 0.2837, 0.3111,\n", + " 0.2738, 0.0763, 0.0373, 0.1273, 0.0825, 0.0705, 0.0304, 0.0186,\n", + " -0.0046, 0.0139, -0.0161, -0.0067, 0.1593, 0.2326, 0.2693, 0.1586,\n", + " 0.2465, 0.2941, 0.2483, 0.2143, -0.0484, -0.0616, -0.0170, -0.2467,\n", + " -0.2350, -0.2728, -0.2800]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000982181285507977\n", + "Grad encoder.fc1.bias: 0.0004998135264031589\n", + "Grad encoder.encoder.0.weight: 0.00023453171888832003\n", + "Grad encoder.encoder.0.bias: 0.0006697807693853974\n", + "Grad encoder.encoder.2.weight: 0.000161281117470935\n", + "Grad encoder.encoder.2.bias: 0.0008785530808381736\n", + "Grad encoder.encoder.4.weight: 0.0003706839052028954\n", + "Grad encoder.encoder.4.bias: 0.002021104097366333\n", + "Grad decoder.fc1.0.weight: 7.985375123098493e-05\n", + "Grad decoder.fc1.0.bias: 0.0007301609148271382\n", + "Grad decoder.fc1.2.weight: 4.430660555954091e-05\n", + "Grad decoder.fc1.2.bias: 0.0007511974545195699\n", + "Grad decoder.fc1.4.weight: 4.696025644079782e-05\n", + "Grad decoder.fc1.4.bias: 0.0007565909763798118\n", + "Grad decoder.fc2.weight: 0.00010814502456923947\n", + "Grad decoder.fc2.bias: 0.001944636576808989\n", + "Grad _memory_unit.weight_ih_l0: 3.506044959067367e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00012867544137407094\n", + "Grad _memory_unit.bias_hh_l0: 6.687382119707763e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.3956472685094923e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00021218002075329423\n", + "Grad _memory_unit.bias_hh_l1: 0.00010910107812378556\n", + "Data X Sample: tensor([[1.4693, 1.7871, 2.0917, 2.3024, 2.3170, 2.3661, 2.4019, 2.5212, 2.5850,\n", + " 2.5591, 2.5347, 2.6330, 2.6320, 2.5656, 2.4462, 2.5519, 2.4796, 2.4799,\n", + " 2.4677, 2.5813, 2.6033, 2.5872, 2.5833, 2.5557, 2.4793, 2.5257, 2.3310,\n", + " 2.3126, 1.8421, 1.9094, 1.7533, 1.7658, 1.4916, 0.9703, 1.3726, 1.3620,\n", + " 1.4001, 1.4258, 1.5339, 1.5235, 1.3984, 0.7627, 0.7356, 1.3405, 2.0297,\n", + " 2.3044, 1.4618, 2.0721]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.9675, -1.1204, -1.7311, -0.7646, -0.0626, 0.2984, -0.0097, 0.7438,\n", + " 0.9781, 0.9514, 1.0759, -0.0761, 0.3431, -1.8224, -0.1573, -0.7019,\n", + " -1.0657, -0.1605, -0.3961, -1.1210, -1.1731, -0.6271, -1.2018, -1.8667,\n", + " -0.5729, -1.5817, 0.4338, 1.0209, 0.4194, -0.3525, -0.0276, -2.6590,\n", + " -0.1534, -1.0214, -2.1671, -0.7529, -0.0274, -0.0751, 2.2782, 0.6745,\n", + " 0.8949, 0.4971, 0.6573]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2419, 0.2571, 0.0843, 0.1927, 0.0287, -0.1088, -0.2488, -0.2550,\n", + " -0.1224, -0.1714, -0.1728, 0.1291, 0.0815, 0.2571, 0.2293, 0.2358,\n", + " 0.1898, 0.0439, 0.0223, 0.0848, 0.0541, 0.0426, 0.0007, -0.0003,\n", + " 0.0016, -0.0006, -0.0073, -0.0072, 0.1304, 0.1694, 0.2052, 0.1145,\n", + " 0.1802, 0.2226, 0.1926, 0.1406, -0.0246, -0.0368, -0.0290, -0.1756,\n", + " -0.1690, -0.2040, -0.2027]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0008406232809647918\n", + "Grad encoder.fc1.bias: 0.0015580507460981607\n", + "Grad encoder.encoder.0.weight: 0.00021472101798281074\n", + "Grad encoder.encoder.0.bias: 0.0014180599246174097\n", + "Grad encoder.encoder.2.weight: 0.00013833778211846948\n", + "Grad encoder.encoder.2.bias: 0.0012635773746296763\n", + "Grad encoder.encoder.4.weight: 0.0003630376304499805\n", + "Grad encoder.encoder.4.bias: 0.002232588827610016\n", + "Grad decoder.fc1.0.weight: 0.00010860696784220636\n", + "Grad decoder.fc1.0.bias: 0.0010657405946403742\n", + "Grad decoder.fc1.2.weight: 9.768988820724189e-05\n", + "Grad decoder.fc1.2.bias: 0.0013384395278990269\n", + "Grad decoder.fc1.4.weight: 7.582301623187959e-05\n", + "Grad decoder.fc1.4.bias: 0.0010732277296483517\n", + "Grad decoder.fc2.weight: 0.00015479545982088894\n", + "Grad decoder.fc2.bias: 0.0023212707601487637\n", + "Grad _memory_unit.weight_ih_l0: 4.214668661006726e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00010402141197118908\n", + "Grad _memory_unit.bias_hh_l0: 6.0682985349558294e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.8410470147500746e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00022877196897752583\n", + "Grad _memory_unit.bias_hh_l1: 0.00012196711031720042\n", + "Data X Sample: tensor([[1.5647, 1.6866, 1.9369, 1.9701, 2.0353, 2.2895, 2.4604, 2.5454, 2.5167,\n", + " 2.5702, 2.6584, 2.6233, 2.5766, 2.5056, 2.4513, 2.4233, 2.4435, 2.5050,\n", + " 2.5358, 2.4697, 2.4904, 2.5643, 2.3857, 2.4011, 2.3854, 2.4003, 2.4535,\n", + " 2.4675, 2.2133, 2.3384, 2.2712, 2.3709, 2.3298, 1.5013, 2.0001, 1.8144,\n", + " 1.6381, 1.4974, 1.6036, 1.6143, 1.2218, 0.6632, 0.6952, 1.2744, 1.9028,\n", + " 1.9099, 1.3462, 1.9783]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.4321, 1.0480, 0.3113, 0.6683, -0.5868, -0.8677, -0.8065, -0.6514,\n", + " -0.9838, -0.6685, -0.6116, 0.5784, -2.4856, 0.2121, -1.4862, 1.6255,\n", + " 0.3274, -0.8707, -3.2451, -0.1305, -0.7923, 1.3137, -1.5557, 0.1278,\n", + " 0.2911, -0.4098, 0.6384, 0.3752, 0.9849, 0.9043, 0.9253, 1.8582,\n", + " 0.3663, 0.5643, 1.5849, -0.4239, -0.9561, -0.1310, -0.5988, -0.9490,\n", + " -0.6120, -1.0053, -0.5020]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.1787, 0.1752, 0.0509, 0.1205, -0.0031, -0.0756, -0.2041, -0.1966,\n", + " -0.0888, -0.1400, -0.1305, 0.0984, 0.0568, 0.2129, 0.1994, 0.1971,\n", + " 0.1272, 0.0116, 0.0145, 0.0403, 0.0190, 0.0261, 0.0004, -0.0138,\n", + " 0.0089, -0.0250, -0.0121, -0.0163, 0.0986, 0.1224, 0.1435, 0.0720,\n", + " 0.1406, 0.1695, 0.1459, 0.0954, -0.0083, -0.0279, -0.0138, -0.1066,\n", + " -0.1335, -0.1609, -0.1425]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000732750166207552\n", + "Grad encoder.fc1.bias: 0.0009952530963346362\n", + "Grad encoder.encoder.0.weight: 0.00020645586482714862\n", + "Grad encoder.encoder.0.bias: 0.0009073714609257877\n", + "Grad encoder.encoder.2.weight: 0.0001546318962937221\n", + "Grad encoder.encoder.2.bias: 0.0008472627960145473\n", + "Grad encoder.encoder.4.weight: 0.00035568707971833646\n", + "Grad encoder.encoder.4.bias: 0.0020258587319403887\n", + "Grad decoder.fc1.0.weight: 8.939452527556568e-05\n", + "Grad decoder.fc1.0.bias: 0.0008662558975629508\n", + "Grad decoder.fc1.2.weight: 8.148621418513358e-05\n", + "Grad decoder.fc1.2.bias: 0.0011152371298521757\n", + "Grad decoder.fc1.4.weight: 7.960317452671006e-05\n", + "Grad decoder.fc1.4.bias: 0.0011066917795687914\n", + "Grad decoder.fc2.weight: 0.00014611604274250567\n", + "Grad decoder.fc2.bias: 0.0021034630481153727\n", + "Grad _memory_unit.weight_ih_l0: 2.368548302911222e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00013207615120336413\n", + "Grad _memory_unit.bias_hh_l0: 6.736141949659213e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.2690196854237001e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00019259535474702716\n", + "Grad _memory_unit.bias_hh_l1: 9.988871170207858e-05\n", + "Data X Sample: tensor([[1.4608, 1.7114, 1.9008, 1.9373, 1.9977, 2.0478, 2.0475, 2.7200, 3.8568,\n", + " 4.4042, 4.3048, 4.3137, 4.1389, 4.0324, 4.0300, 3.7362, 3.7580, 3.6173,\n", + " 3.5869, 3.5223, 3.3982, 3.2302, 2.9375, 2.7848, 2.8077, 2.9201, 2.8771,\n", + " 2.9203, 3.0459, 3.1769, 3.1916, 3.2110, 3.8347, 2.8171, 4.5861, 4.7599,\n", + " 5.0145, 5.4383, 5.9328, 5.7821, 1.2313, 0.6711, 0.6791, 1.2228, 1.7323,\n", + " 1.8756, 1.2714, 1.8844]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.7158, -1.8263, -0.3597, -1.2764, 0.4426, 0.0494, 0.5287, 0.7044,\n", + " 2.2217, 0.9945, 0.5684, -0.8355, -0.4067, -0.0383, -1.1139, -0.8892,\n", + " -1.1017, -1.3637, -0.2485, 0.0056, 0.6907, -0.3289, -0.0958, 0.2870,\n", + " -0.1901, -0.7465, 1.1327, 1.2017, 1.4555, 0.1682, -1.0416, -1.2433,\n", + " -0.5007, -0.8886, -0.8387, 0.9687, 0.9776, -0.0751, 2.2782, 0.9425,\n", + " 0.8688, 0.9063, 1.0534]], device='cuda:0')\n", + "Prediction Sample: tensor([[-3.0997e-01, -3.2500e-01, -1.3868e-01, -2.1407e-01, -3.4177e-02,\n", + " 2.3252e-01, 2.7856e-01, 4.5127e-01, 2.5852e-01, 1.8810e-01,\n", + " 3.7157e-01, -2.3790e-01, -1.7415e-01, -3.0829e-01, -1.9384e-01,\n", + " -3.2354e-01, -2.5345e-01, -1.4791e-01, -9.9756e-02, -1.4816e-01,\n", + " -1.3525e-01, 1.0976e-02, -9.5175e-02, -4.7320e-02, 3.0312e-02,\n", + " -4.3281e-03, -1.2675e-01, -2.3013e-01, -2.5599e-01, -3.8178e-01,\n", + " -4.0158e-01, -2.6739e-01, -3.2249e-01, -4.0680e-01, -2.2926e-01,\n", + " -2.6090e-01, -1.1955e-01, -6.6284e-02, -6.2611e-05, 3.8219e-01,\n", + " 3.5643e-01, 4.5906e-01, 3.0620e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003392232465557754\n", + "Grad encoder.fc1.bias: 0.00020949805912096053\n", + "Grad encoder.encoder.0.weight: 9.637877519708127e-05\n", + "Grad encoder.encoder.0.bias: 0.00031802928424440324\n", + "Grad encoder.encoder.2.weight: 0.00010670421033864841\n", + "Grad encoder.encoder.2.bias: 0.00043020735029131174\n", + "Grad encoder.encoder.4.weight: 0.00027951778611168265\n", + "Grad encoder.encoder.4.bias: 0.001211017370223999\n", + "Grad decoder.fc1.0.weight: 0.00010470845154486597\n", + "Grad decoder.fc1.0.bias: 0.0006275329506024718\n", + "Grad decoder.fc1.2.weight: 0.00013140092778485268\n", + "Grad decoder.fc1.2.bias: 0.0009225433459505439\n", + "Grad decoder.fc1.4.weight: 0.00011707762314472347\n", + "Grad decoder.fc1.4.bias: 0.0010049392003566027\n", + "Grad decoder.fc2.weight: 0.0001348459772998467\n", + "Grad decoder.fc2.bias: 0.0021106440108269453\n", + "Grad _memory_unit.weight_ih_l0: 2.928910544142127e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0001166657530120574\n", + "Grad _memory_unit.bias_hh_l0: 6.009172284393571e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.2933842299389653e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00016168416186701506\n", + "Grad _memory_unit.bias_hh_l1: 8.46501425257884e-05\n", + "Data X Sample: tensor([[1.5435, 1.6662, 1.7851, 1.8717, 1.8918, 1.9683, 2.0861, 2.0939, 2.2628,\n", + " 3.5891, 4.1970, 4.1871, 3.9214, 3.8034, 3.5761, 3.6158, 3.4765, 3.4470,\n", + " 3.3722, 3.4144, 3.4007, 3.2746, 2.8990, 2.7542, 2.7589, 2.9279, 2.8558,\n", + " 2.9488, 2.8933, 3.0819, 2.9851, 3.1944, 3.5531, 2.5746, 4.3753, 4.7599,\n", + " 4.8415, 5.2157, 5.7997, 5.5920, 1.1311, 0.6751, 0.6366, 1.1309, 1.6134,\n", + " 1.8413, 1.2578, 1.7046]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.8498, -0.2168, -0.9294, -0.2945, -0.3380, 0.1206, 0.0983, 0.7290,\n", + " 1.1296, 0.5710, 0.8982, -0.3400, 0.4074, -0.1145, -0.0831, -0.4810,\n", + " -0.3716, -1.0379, -0.0145, -0.7820, 0.2217, 0.3944, 1.1882, 10.9126,\n", + " -1.4953, 0.5462, -0.4615, -0.1149, -0.4062, -0.1801, -1.1806, -0.6467,\n", + " -0.5855, -0.4437, -0.2974, 0.3518, 0.4533, 0.2150, 0.0000, 1.0380,\n", + " 1.1254, 0.8856, 0.7433]], device='cuda:0')\n", + "Prediction Sample: tensor([[-3.6069e-01, -3.8234e-01, -1.6027e-01, -2.7028e-01, -3.5525e-02,\n", + " 2.6199e-01, 3.3135e-01, 5.2191e-01, 3.0230e-01, 2.2121e-01,\n", + " 4.3537e-01, -2.5073e-01, -2.0863e-01, -3.4743e-01, -2.2762e-01,\n", + " -3.7942e-01, -2.8946e-01, -1.6950e-01, -9.7007e-02, -1.7259e-01,\n", + " -1.7224e-01, 3.9418e-03, -9.2410e-02, -3.9597e-02, 2.4059e-02,\n", + " -1.1889e-02, -1.3160e-01, -2.4370e-01, -2.9683e-01, -4.3500e-01,\n", + " -4.3865e-01, -3.1168e-01, -3.6668e-01, -4.7017e-01, -2.8516e-01,\n", + " -3.0323e-01, -1.2896e-01, -6.8133e-02, 4.7771e-04, 4.4032e-01,\n", + " 4.3025e-01, 5.2123e-01, 3.7828e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0017922123661264777\n", + "Grad encoder.fc1.bias: 0.0015136849833652377\n", + "Grad encoder.encoder.0.weight: 0.00048765784595161676\n", + "Grad encoder.encoder.0.bias: 0.0015718919457867742\n", + "Grad encoder.encoder.2.weight: 0.00039003934944048524\n", + "Grad encoder.encoder.2.bias: 0.0016630383906885982\n", + "Grad encoder.encoder.4.weight: 0.0008926229784265161\n", + "Grad encoder.encoder.4.bias: 0.004034215584397316\n", + "Grad decoder.fc1.0.weight: 0.00018607226957101375\n", + "Grad decoder.fc1.0.bias: 0.0014997008256614208\n", + "Grad decoder.fc1.2.weight: 0.00020412387675605714\n", + "Grad decoder.fc1.2.bias: 0.0017639815341681242\n", + "Grad decoder.fc1.4.weight: 0.0001749948860378936\n", + "Grad decoder.fc1.4.bias: 0.0016926138196140528\n", + "Grad decoder.fc2.weight: 0.00019360762962605804\n", + "Grad decoder.fc2.bias: 0.0026190439239144325\n", + "Grad _memory_unit.weight_ih_l0: 5.721047273254953e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00024857820244506\n", + "Grad _memory_unit.bias_hh_l0: 0.00012717080244328827\n", + "Grad _memory_unit.weight_ih_l1: 2.462852353346534e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0003449590294621885\n", + "Grad _memory_unit.bias_hh_l1: 0.00017904849664773792\n", + "Data X Sample: tensor([[1.5159, 1.5759, 1.6814, 1.8739, 1.8748, 2.0184, 2.1061, 2.0343, 3.0537,\n", + " 4.0472, 4.3334, 4.2514, 4.0435, 4.0243, 3.9266, 3.8551, 3.6715, 3.6192,\n", + " 3.6097, 3.6339, 3.4866, 3.3404, 2.8676, 2.8020, 2.8040, 2.9697, 3.0422,\n", + " 2.9610, 3.0945, 3.1179, 3.2755, 3.4901, 3.9887, 2.9316, 4.7307, 4.9204,\n", + " 5.2249, 5.4092, 5.9898, 5.8303, 1.0452, 0.6114, 0.6346, 1.1309, 1.6095,\n", + " 1.7383, 1.2578, 1.7124]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5391, -1.0623, -0.2251, -0.8616, 0.4009, 0.2345, 0.0733, 0.1717,\n", + " 0.3408, 0.0732, 0.4441, -0.3176, -0.4816, 0.7970, 0.0421, 0.2128,\n", + " 0.3839, -0.2402, 0.3445, -0.1075, 0.2337, -0.1009, 0.8345, 0.3466,\n", + " 0.5314, -0.0142, -0.2574, -0.0822, 0.3452, -0.3089, -0.3558, -0.3014,\n", + " -0.6921, -0.1868, -0.8008, -0.1272, -0.8958, -0.6143, -0.4066, 0.4332,\n", + " 0.4748, 0.4990, 0.8126]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3452, -0.3414, -0.1319, -0.1962, 0.0146, 0.2298, 0.2912, 0.4851,\n", + " 0.3361, 0.2854, 0.3900, -0.2008, -0.2289, -0.2875, -0.2459, -0.4046,\n", + " -0.2736, -0.1554, -0.1138, -0.1745, -0.1517, -0.0042, -0.0378, -0.0379,\n", + " -0.0378, -0.0208, -0.1046, -0.2248, -0.3126, -0.3975, -0.4142, -0.2809,\n", + " -0.3867, -0.4324, -0.2909, -0.3070, -0.0890, -0.0349, -0.0112, 0.4273,\n", + " 0.4613, 0.4756, 0.3835]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00022676435764878988\n", + "Grad encoder.fc1.bias: 0.003285015234723687\n", + "Grad encoder.encoder.0.weight: 0.00010815334098879248\n", + "Grad encoder.encoder.0.bias: 0.0024809460155665874\n", + "Grad encoder.encoder.2.weight: 0.00010492221190361306\n", + "Grad encoder.encoder.2.bias: 0.0016550116706639528\n", + "Grad encoder.encoder.4.weight: 0.00029966706642881036\n", + "Grad encoder.encoder.4.bias: 0.0025884564965963364\n", + "Grad decoder.fc1.0.weight: 0.00010597828077152371\n", + "Grad decoder.fc1.0.bias: 0.0008204744663089514\n", + "Grad decoder.fc1.2.weight: 0.00012021496513625607\n", + "Grad decoder.fc1.2.bias: 0.0007688868790864944\n", + "Grad decoder.fc1.4.weight: 0.0001232493232237175\n", + "Grad decoder.fc1.4.bias: 0.0008596789557486773\n", + "Grad decoder.fc2.weight: 0.00021144769561942667\n", + "Grad decoder.fc2.bias: 0.001715754042379558\n", + "Grad _memory_unit.weight_ih_l0: 6.0950453189434484e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00018511549569666386\n", + "Grad _memory_unit.bias_hh_l0: 0.00010390135867055506\n", + "Grad _memory_unit.weight_ih_l1: 2.217259861936327e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00025675559299997985\n", + "Grad _memory_unit.bias_hh_l1: 0.00014156904944684356\n", + "Data X Sample: tensor([[1.3070, 1.3706, 1.5161, 1.6989, 1.8901, 2.0257, 1.8966, 2.0073, 2.4093,\n", + " 3.3142, 4.1557, 4.0118, 3.9015, 3.7843, 3.6492, 3.4599, 3.3916, 3.4451,\n", + " 3.4630, 3.3940, 3.4449, 3.3236, 2.9014, 2.8325, 2.8640, 3.0037, 3.0502,\n", + " 3.0875, 3.0459, 3.3144, 3.3000, 3.3906, 3.7115, 2.6959, 4.4317, 4.7210,\n", + " 4.9614, 5.3084, 5.8440, 5.7395, 0.9927, 0.5636, 0.5719, 1.0391, 1.4033,\n", + " 1.6240, 1.2170, 1.5482]], device='cuda:0')\n", + "Data Y Sample: tensor([[-7.0254e-01, -1.2551e+00, 3.4575e-01, -9.2988e-02, 3.1120e-01,\n", + " 8.0795e-01, -2.5779e-01, 4.6659e-01, 1.4325e+00, 6.0996e-01,\n", + " 4.0699e-01, -3.3959e-01, 1.6095e-01, -4.7952e-01, 1.3729e+00,\n", + " -9.1710e-01, 5.3059e-01, 8.7055e-01, 5.0908e-01, -5.5829e-01,\n", + " 4.4810e+00, -2.4057e-02, -6.8589e-01, 5.1018e-01, -9.3780e-01,\n", + " 2.8684e+00, -1.6425e+00, -1.7767e-01, -1.1156e+00, -6.6693e-01,\n", + " 2.7335e-01, -2.4223e-01, -1.1083e+00, -6.2647e-01, -9.5046e-01,\n", + " -1.0555e+00, 3.2988e-03, -9.1056e-02, 0.0000e+00, 7.7418e-01,\n", + " 7.6408e-01, 8.3096e-01, 5.1318e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3116, -0.2870, -0.0919, -0.1607, 0.0099, 0.1694, 0.2211, 0.3966,\n", + " 0.3193, 0.2907, 0.3288, -0.1310, -0.2192, -0.2080, -0.2167, -0.3711,\n", + " -0.2470, -0.1388, -0.0953, -0.1515, -0.1299, -0.0137, 0.0075, -0.0384,\n", + " -0.0854, -0.0361, -0.0678, -0.1812, -0.2746, -0.3300, -0.3399, -0.2324,\n", + " -0.3493, -0.3513, -0.2587, -0.2879, -0.0599, -0.0065, -0.0354, 0.3769,\n", + " 0.4355, 0.3872, 0.3535]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001842690398916602\n", + "Grad encoder.fc1.bias: 0.0015953117981553078\n", + "Grad encoder.encoder.0.weight: 8.056322985794395e-05\n", + "Grad encoder.encoder.0.bias: 0.0011370638385415077\n", + "Grad encoder.encoder.2.weight: 6.494691479019821e-05\n", + "Grad encoder.encoder.2.bias: 0.0007817420409992337\n", + "Grad encoder.encoder.4.weight: 0.00017066433792933822\n", + "Grad encoder.encoder.4.bias: 0.001979936845600605\n", + "Grad decoder.fc1.0.weight: 7.651867781532928e-05\n", + "Grad decoder.fc1.0.bias: 0.0008528069593012333\n", + "Grad decoder.fc1.2.weight: 8.943898137658834e-05\n", + "Grad decoder.fc1.2.bias: 0.0010443006176501513\n", + "Grad decoder.fc1.4.weight: 7.289983477676287e-05\n", + "Grad decoder.fc1.4.bias: 0.0008738737087696791\n", + "Grad decoder.fc2.weight: 0.00015566640649922192\n", + "Grad decoder.fc2.bias: 0.001866861479356885\n", + "Grad _memory_unit.weight_ih_l0: 1.2902093658340164e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00010111205483553931\n", + "Grad _memory_unit.bias_hh_l0: 5.329282066668384e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.391715138917789e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00017548445612192154\n", + "Grad _memory_unit.bias_hh_l1: 9.137809684034437e-05\n", + "Data X Sample: tensor([[1.3473, 1.3735, 1.6213, 1.8345, 2.1565, 3.6758, 4.2045, 4.2461, 4.1009,\n", + " 4.1831, 4.0574, 3.7820, 3.6507, 3.6780, 3.6467, 3.2452, 3.2501, 3.2923,\n", + " 3.3102, 3.3252, 3.2069, 3.0955, 2.7375, 2.6932, 2.6557, 2.8626, 2.8265,\n", + " 2.8305, 2.8655, 2.9574, 2.9606, 3.0065, 3.2055, 2.3938, 3.9856, 4.5799,\n", + " 4.8611, 5.2713, 5.9518, 5.7849, 1.0022, 0.6134, 0.5800, 1.0075, 1.5064,\n", + " 1.6697, 1.1558, 1.7437]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2203, -0.3503, -0.5723, 0.1201, 0.1520, 0.2673, -0.3835, 0.1004,\n", + " 0.1961, 0.2560, 0.6265, -0.2944, 0.4301, 0.2853, 0.0437, -0.1198,\n", + " 0.1655, -0.7399, -0.0041, -0.1510, -0.4917, -1.6486, -1.8772, 1.1592,\n", + " -0.6581, 2.1131, -0.0686, 0.4462, 0.8584, 0.5297, 0.4011, 0.7378,\n", + " -0.4147, -1.5199, -0.2949, 0.6788, 0.6291, -0.7172, 0.0000, 0.8261,\n", + " -0.3771, 0.0108, 0.5070]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2880, -0.2584, -0.0758, -0.1709, -0.0115, 0.1377, 0.1832, 0.3459,\n", + " 0.2985, 0.2753, 0.2919, -0.0971, -0.2009, -0.1640, -0.1750, -0.3313,\n", + " -0.2410, -0.1329, -0.0742, -0.1344, -0.1164, -0.0216, 0.0127, -0.0409,\n", + " -0.0943, -0.0456, -0.0415, -0.1509, -0.2315, -0.2954, -0.2843, -0.2022,\n", + " -0.3075, -0.3067, -0.2347, -0.2677, -0.0508, 0.0043, -0.0507, 0.3367,\n", + " 0.4029, 0.3399, 0.3241]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001783036714186892\n", + "Grad encoder.fc1.bias: 0.004072705749422312\n", + "Grad encoder.encoder.0.weight: 9.42339829634875e-05\n", + "Grad encoder.encoder.0.bias: 0.002748980652540922\n", + "Grad encoder.encoder.2.weight: 8.551133214496076e-05\n", + "Grad encoder.encoder.2.bias: 0.0019246595911681652\n", + "Grad encoder.encoder.4.weight: 0.0002431485045235604\n", + "Grad encoder.encoder.4.bias: 0.004175635054707527\n", + "Grad decoder.fc1.0.weight: 0.00011266806541243568\n", + "Grad decoder.fc1.0.bias: 0.0012106343638151884\n", + "Grad decoder.fc1.2.weight: 0.00015755274216644466\n", + "Grad decoder.fc1.2.bias: 0.0012576411245390773\n", + "Grad decoder.fc1.4.weight: 0.00012867248733527958\n", + "Grad decoder.fc1.4.bias: 0.001071722712367773\n", + "Grad decoder.fc2.weight: 0.00025635462952777743\n", + "Grad decoder.fc2.bias: 0.001768135349266231\n", + "Grad _memory_unit.weight_ih_l0: 3.691163510666229e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00032765668584033847\n", + "Grad _memory_unit.bias_hh_l0: 0.00017433214816264808\n", + "Grad _memory_unit.weight_ih_l1: 2.1674564777640626e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.000430682091973722\n", + "Grad _memory_unit.bias_hh_l1: 0.00023077614605426788\n", + "Data X Sample: tensor([[1.6146, 1.9605, 2.0586, 2.1363, 2.3324, 2.4279, 2.5144, 2.4858, 2.4483,\n", + " 2.4738, 2.4776, 2.5240, 2.3458, 2.4484, 2.3958, 2.3946, 2.4545, 2.5282,\n", + " 2.5193, 2.4492, 2.6278, 2.6087, 2.6194, 2.5805, 2.6238, 2.7425, 2.6906,\n", + " 2.7204, 2.4423, 2.4924, 2.3692, 2.3405, 2.0152, 1.2816, 1.7648, 1.6758,\n", + " 1.6361, 1.6114, 1.6163, 1.4498, 1.3029, 0.7787, 0.7498, 1.3261, 2.0812,\n", + " 2.1329, 1.5094, 2.0564]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5900, 0.5703, 0.4697, 1.0942, 0.8628, 0.0774, -0.0993, -0.0521,\n", + " -0.2877, -0.2628, -0.4488, 1.7420, 1.7621, 0.7371, 0.9710, 0.5269,\n", + " 0.9058, 0.8339, 0.2336, 0.7376, 0.1106, -0.1123, 1.3040, -2.6548,\n", + " 1.1016, -0.4162, 0.3486, -0.1566, -0.7514, 0.4827, -0.1809, -0.3801,\n", + " 0.4721, 0.2798, 0.6350, -0.7088, -1.0526, 0.0000, 1.1604, -0.3891,\n", + " -0.1729, -0.4521, -0.7702]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.6348, 0.5677, 0.1983, 0.5220, 0.1015, -0.2740, -0.6063, -0.7117,\n", + " -0.2901, -0.4509, -0.3763, 0.2846, 0.2676, 0.5373, 0.4785, 0.5590,\n", + " 0.5113, 0.1911, 0.0809, 0.2462, 0.1709, 0.0748, 0.0903, 0.1111,\n", + " 0.0329, -0.0061, 0.0132, 0.0868, 0.3604, 0.4620, 0.5024, 0.3533,\n", + " 0.4719, 0.5866, 0.3634, 0.3745, -0.0410, -0.0753, -0.0299, -0.5131,\n", + " -0.4796, -0.4824, -0.4903]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.001574990339577198\n", + "Grad encoder.fc1.bias: 0.000877603015396744\n", + "Grad encoder.encoder.0.weight: 0.0004053936863783747\n", + "Grad encoder.encoder.0.bias: 0.0011733457213267684\n", + "Grad encoder.encoder.2.weight: 0.0003119972243439406\n", + "Grad encoder.encoder.2.bias: 0.001356565859168768\n", + "Grad encoder.encoder.4.weight: 0.0006658585625700653\n", + "Grad encoder.encoder.4.bias: 0.0028546503745019436\n", + "Grad decoder.fc1.0.weight: 0.00012910481018479913\n", + "Grad decoder.fc1.0.bias: 0.001084039337001741\n", + "Grad decoder.fc1.2.weight: 0.00011453768820501864\n", + "Grad decoder.fc1.2.bias: 0.0011903075501322746\n", + "Grad decoder.fc1.4.weight: 9.944499470293522e-05\n", + "Grad decoder.fc1.4.bias: 0.0012623696820810437\n", + "Grad decoder.fc2.weight: 0.00017838709754869342\n", + "Grad decoder.fc2.bias: 0.0022970919962972403\n", + "Grad _memory_unit.weight_ih_l0: 4.480750794755295e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00010755640687420964\n", + "Grad _memory_unit.bias_hh_l0: 5.696176231140271e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.701453402347397e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002507980680093169\n", + "Grad _memory_unit.bias_hh_l1: 0.00013014553405810148\n", + "Data X Sample: tensor([[1.2656, 1.4871, 1.6303, 1.7536, 1.8594, 1.9683, 1.9982, 1.9619, 2.1408,\n", + " 2.1958, 2.1603, 2.1422, 2.0661, 2.0585, 2.0377, 1.9912, 2.0016, 2.0485,\n", + " 2.1765, 2.0699, 2.1297, 2.1050, 2.1327, 2.0518, 2.0570, 2.0164, 1.9820,\n", + " 2.0760, 1.8734, 1.9487, 1.9212, 1.9122, 1.7952, 1.2221, 1.8212, 1.7390,\n", + " 1.5634, 1.2430, 1.1536, 1.0497, 1.0786, 0.6273, 0.6144, 1.0477, 1.6451,\n", + " 1.8184, 1.1830, 1.6733]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 8.4943e-01, 1.0556e+00, -5.1204e-01, 1.1242e+00, 1.0370e+00,\n", + " 8.4828e-01, -6.4620e-01, -7.7196e-01, -1.7760e-02, -7.7827e-01,\n", + " -6.7615e-01, 9.1519e-01, 3.2956e-01, -4.4283e-01, -7.0078e-01,\n", + " -2.3838e-01, -1.1919e+00, -1.7275e-01, 3.7657e-01, 6.3682e-02,\n", + " 5.9551e-02, 2.8856e+00, -4.5583e-01, 2.5998e-01, -4.0043e-01,\n", + " 1.0137e+00, 5.0383e-01, 1.0969e-02, 1.1331e+00, 8.0258e-01,\n", + " 4.3120e-01, 3.5071e-01, 1.2119e+00, 3.8307e-01, 1.9160e-03,\n", + " -2.5028e-03, 0.0000e+00, -1.0105e-01, 0.0000e+00, -4.8505e-01,\n", + " -4.8507e-01, -8.2419e-01, -1.4564e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5346, 0.4774, 0.1841, 0.4342, 0.0931, -0.2217, -0.5078, -0.5932,\n", + " -0.2403, -0.3727, -0.3151, 0.2433, 0.2090, 0.4454, 0.3948, 0.4715,\n", + " 0.4237, 0.1574, 0.0747, 0.2105, 0.1540, 0.0639, 0.0694, 0.1023,\n", + " 0.0329, -0.0136, 0.0089, 0.0723, 0.2899, 0.3758, 0.4120, 0.2949,\n", + " 0.3855, 0.4768, 0.3052, 0.3151, -0.0382, -0.0566, -0.0290, -0.4385,\n", + " -0.3910, -0.4046, -0.4102]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0008470739703625441\n", + "Grad encoder.fc1.bias: 0.0008343340596184134\n", + "Grad encoder.encoder.0.weight: 0.00023147414322011173\n", + "Grad encoder.encoder.0.bias: 0.0007012588321231306\n", + "Grad encoder.encoder.2.weight: 0.0001764591143000871\n", + "Grad encoder.encoder.2.bias: 0.0006217582849785686\n", + "Grad encoder.encoder.4.weight: 0.0004152581677772105\n", + "Grad encoder.encoder.4.bias: 0.0012957905419170856\n", + "Grad decoder.fc1.0.weight: 7.770116644678637e-05\n", + "Grad decoder.fc1.0.bias: 0.0005695861764252186\n", + "Grad decoder.fc1.2.weight: 8.406034612562507e-05\n", + "Grad decoder.fc1.2.bias: 0.0006789349718019366\n", + "Grad decoder.fc1.4.weight: 8.036826329771429e-05\n", + "Grad decoder.fc1.4.bias: 0.0008165878825820982\n", + "Grad decoder.fc2.weight: 0.00018190167611464858\n", + "Grad decoder.fc2.bias: 0.002032738644629717\n", + "Grad _memory_unit.weight_ih_l0: 2.2743026420357637e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.598871550522745e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.6844554415438324e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0507395927561447e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001322791795246303\n", + "Grad _memory_unit.bias_hh_l1: 7.215609366539866e-05\n", + "Data X Sample: tensor([[ 0.0127, 0.0131, 0.0225, 0.0044, 0.0051, 0.0280, 0.0200, 0.0128,\n", + " 0.0415, 0.0158, 0.0381, -0.0058, 0.0333, 0.0109, 0.0303, 0.0109,\n", + " -0.1242, -0.1451, -0.1879, -0.1432, -0.1865, -0.1148, -0.1783, -0.1641,\n", + " -0.1539, -0.2978, -0.2984, -0.4813, -0.0763, -0.0491, -0.0840, -0.0580,\n", + " -0.0308, -0.0618, -0.0221, 0.0170, -0.0020, -0.0239, -0.0444, -0.0057,\n", + " -0.0143, -0.0060, 0.0000, -0.0029, -0.0119, -0.0172, 0.0272, -0.0704]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.9652, 0.7785, -0.0039, -0.8322, -0.2351, -0.1304, -1.1311, -1.0558,\n", + " -1.0294, -0.6473, -1.2095, -0.6616, 0.8142, 1.2314, 0.1872, 0.6847,\n", + " 0.4657, -0.2720, -0.9521, 0.6999, -0.8348, 0.5694, -0.4639, -0.3492,\n", + " 0.9747, 0.1556, -0.2078, 0.4476, 1.1706, 0.7920, 0.6458, 0.8914,\n", + " 0.5458, 0.5220, 0.3903, 0.7048, 0.9727, 0.0705, 0.2253, -0.3780,\n", + " -0.2693, -0.3593, 0.0265]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5504, 0.3884, 0.1832, 0.3634, -0.0352, -0.2114, -0.6282, -0.6988,\n", + " -0.3199, -0.4390, -0.3398, 0.2530, 0.2505, 0.4458, 0.2739, 0.4031,\n", + " 0.3189, 0.1592, 0.1205, 0.1780, 0.1347, 0.0269, 0.0333, 0.1591,\n", + " -0.0084, -0.0601, 0.0754, 0.2265, 0.4096, 0.5091, 0.4903, 0.3707,\n", + " 0.3918, 0.4709, 0.2545, 0.2139, 0.0149, 0.0226, -0.0397, -0.4658,\n", + " -0.4221, -0.3501, -0.3063]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005744195077568293\n", + "Grad encoder.fc1.bias: 0.0012102787150070071\n", + "Grad encoder.encoder.0.weight: 0.00017436378402635455\n", + "Grad encoder.encoder.0.bias: 0.0009542913758195937\n", + "Grad encoder.encoder.2.weight: 0.0001343829499091953\n", + "Grad encoder.encoder.2.bias: 0.0008007080759853125\n", + "Grad encoder.encoder.4.weight: 0.0002949940680991858\n", + "Grad encoder.encoder.4.bias: 0.001089074183255434\n", + "Grad decoder.fc1.0.weight: 7.670740887988359e-05\n", + "Grad decoder.fc1.0.bias: 0.0005398565554060042\n", + "Grad decoder.fc1.2.weight: 8.517819514963776e-05\n", + "Grad decoder.fc1.2.bias: 0.0009167284006252885\n", + "Grad decoder.fc1.4.weight: 8.792034350335598e-05\n", + "Grad decoder.fc1.4.bias: 0.0010880252812057734\n", + "Grad decoder.fc2.weight: 0.00019527772383298725\n", + "Grad decoder.fc2.bias: 0.0024288047570735216\n", + "Grad _memory_unit.weight_ih_l0: 1.725515721773263e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.340329542174004e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.3785712983226404e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.015269824885763e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011475830979179591\n", + "Grad _memory_unit.bias_hh_l1: 6.034077887306921e-05\n", + "Data X Sample: tensor([[1.4120, 1.5628, 1.7611, 1.7689, 1.8492, 1.9948, 2.1369, 2.0031, 2.8487,\n", + " 3.7187, 4.0320, 4.0897, 3.8948, 3.6044, 3.5609, 3.6240, 3.5819, 3.4122,\n", + " 3.3185, 3.4237, 3.3369, 3.1460, 2.8243, 2.7886, 2.8021, 2.8679, 2.9090,\n", + " 2.9896, 2.9349, 3.0524, 3.0726, 3.1723, 3.4717, 2.5425, 4.3483, 4.5531,\n", + " 4.9536, 5.3217, 5.6158, 5.5948, 1.1120, 0.6313, 0.6508, 1.1281, 1.6451,\n", + " 1.7155, 1.1830, 1.6968]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3034, -0.7347, -0.1202, -0.4861, -0.0850, -0.4451, -0.1120, 0.5125,\n", + " 0.3510, 0.8896, 0.9591, -0.9032, 0.1840, 0.1071, -0.3881, -1.8045,\n", + " -1.7191, 0.2651, 0.0039, -0.1472, -0.6254, 0.7252, 1.3584, 0.1140,\n", + " -0.6989, 0.5410, -1.0165, -0.4612, 0.4956, -0.4175, -0.1897, 0.9422,\n", + " -0.2621, -0.5297, -0.9752, -0.4750, -0.2970, 0.0846, 0.5659, 0.8542,\n", + " 0.7910, 0.9102, 0.3914]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.4026, -0.3545, -0.0942, -0.2066, 0.0260, 0.1616, 0.2333, 0.4382,\n", + " 0.4180, 0.4045, 0.3783, -0.1412, -0.2643, -0.2175, -0.2509, -0.4660,\n", + " -0.3139, -0.1830, -0.1709, -0.1243, -0.1266, -0.0507, 0.0360, -0.0576,\n", + " -0.0972, -0.0436, 0.0197, -0.2091, -0.2862, -0.3476, -0.3669, -0.2393,\n", + " -0.4230, -0.4071, -0.3310, -0.3425, -0.0487, -0.0117, -0.0557, 0.4543,\n", + " 0.5027, 0.4650, 0.3987]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00019182490359526128\n", + "Grad encoder.fc1.bias: 0.00010500971984583884\n", + "Grad encoder.encoder.0.weight: 5.457518273033202e-05\n", + "Grad encoder.encoder.0.bias: 0.0001223970903083682\n", + "Grad encoder.encoder.2.weight: 5.3818839660380036e-05\n", + "Grad encoder.encoder.2.bias: 0.00017749452672433108\n", + "Grad encoder.encoder.4.weight: 0.00012918161519337445\n", + "Grad encoder.encoder.4.bias: 0.0005866900901310146\n", + "Grad decoder.fc1.0.weight: 4.446757884579711e-05\n", + "Grad decoder.fc1.0.bias: 0.0003861189470626414\n", + "Grad decoder.fc1.2.weight: 5.388144199969247e-05\n", + "Grad decoder.fc1.2.bias: 0.0006533133564516902\n", + "Grad decoder.fc1.4.weight: 5.7837045460473746e-05\n", + "Grad decoder.fc1.4.bias: 0.0006619150517508388\n", + "Grad decoder.fc2.weight: 0.00016350214718841016\n", + "Grad decoder.fc2.bias: 0.0018605263903737068\n", + "Grad _memory_unit.weight_ih_l0: 8.778357369010337e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.7910045901080593e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.4682827895740047e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.0494745664764196e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.966582052176818e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.079131758771837e-05\n", + "Data X Sample: tensor([[-0.0032, -0.0015, 0.0045, 0.0066, 0.0051, 0.0103, -0.0092, 0.0099,\n", + " 0.0122, 0.0079, 0.0254, 0.0136, -0.0022, 0.0082, 0.0050, 0.0055,\n", + " -0.0110, -0.0097, -0.0103, -0.0056, 0.0098, 0.0046, 0.0265, 0.0095,\n", + " 0.0075, -0.0026, 0.0160, 0.0000, -0.0451, -0.0066, -0.0315, 0.0304,\n", + " -0.0066, 0.0000, 0.0172, 0.0170, 0.0020, 0.0106, -0.0254, 0.0000,\n", + " 0.0382, -0.0100, 0.0020, -0.0287, 0.0159, -0.0114, 0.0544, -0.0704]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.3327, 1.0094, -0.4406, 0.3049, -0.8751, -1.5964, -1.2898, -1.1784,\n", + " -0.4501, -0.7099, -0.7525, -0.8634, 0.8489, -0.2326, 0.6799, -0.1214,\n", + " 0.3323, 0.0826, -0.2665, -0.6874, -0.3114, -1.0211, -1.5653, 0.0424,\n", + " -0.4485, -1.1441, -0.8165, -0.4630, 0.0822, 1.1108, -0.3694, 1.0347,\n", + " -0.1246, 0.7107, 1.1510, 0.7810, 0.8291, -0.7248, -0.7546, -0.7518,\n", + " -0.9038, -0.5497, -0.9585]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.7642, 0.4953, 0.1923, 0.4447, -0.1738, -0.3750, -0.9006, -0.9429,\n", + " -0.5041, -0.6184, -0.5366, 0.3000, 0.3604, 0.5934, 0.3392, 0.4992,\n", + " 0.3879, 0.1710, 0.1077, 0.2054, 0.1569, 0.0263, 0.0112, 0.1741,\n", + " 0.0135, -0.1207, 0.1854, 0.3538, 0.6673, 0.7651, 0.6903, 0.5008,\n", + " 0.5842, 0.6001, 0.2888, 0.2717, 0.0321, 0.0446, -0.0341, -0.6477,\n", + " -0.5786, -0.4309, -0.4147]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006825198652222753\n", + "Grad encoder.fc1.bias: 0.00032959660165943205\n", + "Grad encoder.encoder.0.weight: 0.0002131879737135023\n", + "Grad encoder.encoder.0.bias: 0.00040074263233691454\n", + "Grad encoder.encoder.2.weight: 0.00017012371972668916\n", + "Grad encoder.encoder.2.bias: 0.00046683294931426644\n", + "Grad encoder.encoder.4.weight: 0.0005181372398510575\n", + "Grad encoder.encoder.4.bias: 0.0015522735193371773\n", + "Grad decoder.fc1.0.weight: 0.00013708477490581572\n", + "Grad decoder.fc1.0.bias: 0.00072375254239887\n", + "Grad decoder.fc1.2.weight: 0.00023666888591833413\n", + "Grad decoder.fc1.2.bias: 0.001226089196279645\n", + "Grad decoder.fc1.4.weight: 0.0001946057891473174\n", + "Grad decoder.fc1.4.bias: 0.0011989610502496362\n", + "Grad decoder.fc2.weight: 0.0002462253032717854\n", + "Grad decoder.fc2.bias: 0.002450482686981559\n", + "Grad _memory_unit.weight_ih_l0: 2.1144307538634166e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.8048896132968366e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.507405952201225e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.2968781447852962e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00014112578355707228\n", + "Grad _memory_unit.bias_hh_l1: 7.458066829713061e-05\n", + "Data X Sample: tensor([[2.0697, 2.4804, 2.6987, 2.9190, 3.0273, 3.1572, 3.2138, 3.3205, 3.3515,\n", + " 3.4074, 3.4515, 3.4549, 3.3378, 3.2636, 3.1574, 3.3355, 3.2249, 3.2497,\n", + " 3.3205, 3.3921, 3.2878, 3.1001, 3.0677, 2.8993, 2.7552, 2.6850, 2.5334,\n", + " 2.5532, 2.3694, 2.4072, 2.2572, 2.2134, 2.1604, 1.4601, 2.2894, 2.4493,\n", + " 2.5073, 2.7536, 2.9474, 2.9166, 1.7086, 0.9121, 0.9236, 1.6878, 2.6679,\n", + " 2.9506, 1.8697, 2.6585]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 3.0940e-01, -1.1433e+00, -7.8022e-01, 2.2496e-05, -2.3049e-01,\n", + " 1.4916e+00, 1.0474e+00, 5.6894e-01, 1.2559e+00, 6.2007e-01,\n", + " 9.2721e-01, -1.3826e+00, -1.3607e-01, -7.4109e-01, -5.4799e-01,\n", + " -5.5632e-01, 5.3751e-02, 4.2524e-01, 1.7090e-01, 2.9573e-02,\n", + " -1.8729e-01, 3.2883e-01, 7.9655e-01, -2.1432e-01, 6.2025e-01,\n", + " -2.0718e-01, 1.4338e-01, 7.8588e-01, 2.9128e-02, -8.1707e-01,\n", + " 4.2894e-01, 3.6888e-02, -4.3785e-01, -7.8159e-01, -3.3139e-02,\n", + " 3.1683e-01, 1.3434e-01, -7.5055e-02, 4.0193e-03, 7.9960e-01,\n", + " 9.0002e-01, 6.6075e-01, 2.7962e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2936, -0.3181, -0.1160, -0.2819, -0.1605, 0.0214, 0.1088, 0.2938,\n", + " 0.2625, 0.2413, 0.2827, -0.0516, -0.2012, -0.1209, -0.1007, -0.2807,\n", + " -0.2334, -0.1469, -0.1090, -0.1059, -0.1168, -0.0476, -0.0633, -0.0508,\n", + " -0.0059, -0.0063, 0.1086, -0.1050, -0.1019, -0.2320, -0.1838, -0.2146,\n", + " -0.1880, -0.2313, -0.1542, -0.2151, -0.0733, -0.0005, -0.0637, 0.3217,\n", + " 0.3512, 0.3256, 0.2805]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003316882939543575\n", + "Grad encoder.fc1.bias: 0.000978515250608325\n", + "Grad encoder.encoder.0.weight: 0.00010589852172415704\n", + "Grad encoder.encoder.0.bias: 0.0006850178469903767\n", + "Grad encoder.encoder.2.weight: 9.236743790097535e-05\n", + "Grad encoder.encoder.2.bias: 0.0005805104738101363\n", + "Grad encoder.encoder.4.weight: 0.00022195192286744714\n", + "Grad encoder.encoder.4.bias: 0.0013906083768233657\n", + "Grad decoder.fc1.0.weight: 5.9949754358967766e-05\n", + "Grad decoder.fc1.0.bias: 0.0005609840736724436\n", + "Grad decoder.fc1.2.weight: 7.58786773076281e-05\n", + "Grad decoder.fc1.2.bias: 0.0007265660678967834\n", + "Grad decoder.fc1.4.weight: 8.53133897180669e-05\n", + "Grad decoder.fc1.4.bias: 0.0007732093799859285\n", + "Grad decoder.fc2.weight: 0.0001706263137748465\n", + "Grad decoder.fc2.bias: 0.001880633644759655\n", + "Grad _memory_unit.weight_ih_l0: 1.5964087651809677e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00010385872155893594\n", + "Grad _memory_unit.bias_hh_l0: 5.5491658713435754e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.583490853197873e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00014379710773937404\n", + "Grad _memory_unit.bias_hh_l1: 7.772103708703071e-05\n", + "Data X Sample: tensor([[1.6825, 1.6794, 2.0330, 2.1035, 2.1002, 1.9521, 2.1770, 3.8841, 4.3328,\n", + " 4.3900, 4.4761, 4.2144, 4.1589, 3.8988, 3.8156, 3.7156, 3.7643, 3.5708,\n", + " 3.5209, 3.3345, 3.3614, 3.2807, 2.9014, 2.7638, 2.8096, 2.9044, 2.8691,\n", + " 3.0059, 2.8759, 3.0360, 3.0376, 3.2690, 3.4607, 2.5700, 4.3778, 4.6942,\n", + " 5.0047, 5.5258, 6.1356, 6.1537, 1.2122, 0.7567, 0.7559, 1.2400, 1.8354,\n", + " 2.0528, 1.3190, 1.8532]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4319, 0.3025, 0.2399, 1.0395, 0.7246, 0.5720, 0.0722, -0.4437,\n", + " 0.5885, -0.2378, 0.1588, -0.7001, -0.0540, 0.0117, -0.0894, -0.2042,\n", + " 0.1041, -0.7254, -0.6797, -1.3775, 0.0793, -0.1752, -0.9892, -0.5640,\n", + " -0.2618, 0.1454, 0.1354, -0.3988, -0.6585, 0.3193, -0.4975, -0.2710,\n", + " 0.5961, 0.2726, -0.7347, -0.7375, 0.0000, 0.4144, -0.2578, -0.4830,\n", + " -0.0094, 0.6067, 0.6915]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3969, -0.3943, -0.1222, -0.2735, -0.0409, 0.1108, 0.2280, 0.4230,\n", + " 0.4110, 0.4011, 0.3696, -0.1312, -0.2599, -0.2136, -0.2215, -0.4596,\n", + " -0.3254, -0.1873, -0.1996, -0.1241, -0.1206, -0.0779, -0.0214, -0.0639,\n", + " -0.0642, -0.0041, 0.1076, -0.1859, -0.2116, -0.3212, -0.3151, -0.2509,\n", + " -0.3720, -0.3999, -0.3005, -0.2983, -0.0522, -0.0211, -0.0567, 0.4572,\n", + " 0.4994, 0.4776, 0.3795]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00041714328108355403\n", + "Grad encoder.fc1.bias: 0.00017256163118872792\n", + "Grad encoder.encoder.0.weight: 0.00013589556328952312\n", + "Grad encoder.encoder.0.bias: 0.00024748657597228885\n", + "Grad encoder.encoder.2.weight: 0.00011987028119619936\n", + "Grad encoder.encoder.2.bias: 0.0003105525975115597\n", + "Grad encoder.encoder.4.weight: 0.00033143465407192707\n", + "Grad encoder.encoder.4.bias: 0.0009836910758167505\n", + "Grad decoder.fc1.0.weight: 9.96729067992419e-05\n", + "Grad decoder.fc1.0.bias: 0.0005301603814586997\n", + "Grad decoder.fc1.2.weight: 0.0001920310314744711\n", + "Grad decoder.fc1.2.bias: 0.0011338742915540934\n", + "Grad decoder.fc1.4.weight: 0.0001526760752312839\n", + "Grad decoder.fc1.4.bias: 0.0012462593149393797\n", + "Grad decoder.fc2.weight: 0.00019783239986281842\n", + "Grad decoder.fc2.bias: 0.002926285844296217\n", + "Grad _memory_unit.weight_ih_l0: 1.981563400477171e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.7463202059152536e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.5081994206411764e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.1261450708843768e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001013285800581798\n", + "Grad _memory_unit.bias_hh_l1: 5.4223120969254524e-05\n", + "Data X Sample: tensor([[1.5329, 1.6080, 1.8407, 1.8498, 1.9840, 2.0316, 2.1538, 2.2231, 3.6713,\n", + " 4.2463, 4.4127, 4.4072, 4.2454, 4.0433, 3.8636, 3.6705, 3.7139, 3.5824,\n", + " 3.6055, 3.6209, 3.4645, 3.3603, 3.0604, 2.8669, 2.8490, 2.9070, 2.9250,\n", + " 2.9937, 3.0390, 3.2358, 3.2965, 3.3657, 3.8985, 2.8469, 4.6033, 5.0153,\n", + " 5.2525, 5.4913, 6.0976, 5.9409, 1.1359, 0.6751, 0.6811, 1.2113, 1.6570,\n", + " 1.8241, 1.2510, 1.7828]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4456, -1.4760, -0.0300, -0.4190, 0.3164, 0.2842, 0.3115, 0.6201,\n", + " 0.3268, 0.6114, 0.3141, 2.4378, -0.4863, -0.1726, 0.2830, 0.4038,\n", + " 0.3560, -0.1561, -0.5324, 0.6423, -0.1591, -0.2636, -1.0512, -0.5768,\n", + " -0.7884, -0.3346, -1.1072, -0.1393, -0.7452, -0.1566, 0.0872, -0.1959,\n", + " 0.2927, -0.3024, -0.5975, -1.2207, 0.7312, 0.7348, 0.4404, 0.1888,\n", + " 0.2968, 0.9561, 0.0330]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3446, -0.3541, -0.1060, -0.2589, -0.0659, 0.0808, 0.1867, 0.3539,\n", + " 0.3497, 0.3570, 0.3202, -0.1193, -0.2355, -0.1856, -0.1861, -0.4005,\n", + " -0.3038, -0.1668, -0.1956, -0.1129, -0.0952, -0.0864, -0.0423, -0.0686,\n", + " -0.0612, 0.0025, 0.1242, -0.1575, -0.1651, -0.2710, -0.2681, -0.2197,\n", + " -0.3193, -0.3499, -0.2491, -0.2575, -0.0496, -0.0149, -0.0561, 0.4048,\n", + " 0.4367, 0.4130, 0.3178]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004457763279788196\n", + "Grad encoder.fc1.bias: 0.0005952591309323907\n", + "Grad encoder.encoder.0.weight: 0.00011262951011303812\n", + "Grad encoder.encoder.0.bias: 0.00034807276097126305\n", + "Grad encoder.encoder.2.weight: 9.635327296564355e-05\n", + "Grad encoder.encoder.2.bias: 0.0004058201448060572\n", + "Grad encoder.encoder.4.weight: 0.0002067181485472247\n", + "Grad encoder.encoder.4.bias: 0.0008637031423859298\n", + "Grad decoder.fc1.0.weight: 5.7791763538261876e-05\n", + "Grad decoder.fc1.0.bias: 0.00045236723963171244\n", + "Grad decoder.fc1.2.weight: 7.932963490020484e-05\n", + "Grad decoder.fc1.2.bias: 0.0007179188542068005\n", + "Grad decoder.fc1.4.weight: 8.592325320933014e-05\n", + "Grad decoder.fc1.4.bias: 0.0010609617456793785\n", + "Grad decoder.fc2.weight: 0.00012827920727431774\n", + "Grad decoder.fc2.bias: 0.002101372228935361\n", + "Grad _memory_unit.weight_ih_l0: 1.5701496522524394e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.256932879798114e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.338446574867703e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.040758075367194e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010817784641403705\n", + "Grad _memory_unit.bias_hh_l1: 5.755539677920751e-05\n", + "Data X Sample: tensor([[1.4512, 1.7027, 1.9234, 2.1625, 2.0899, 2.1333, 2.1277, 2.2033, 3.4125,\n", + " 4.2210, 4.2921, 4.2124, 4.2321, 4.0570, 4.0325, 3.6801, 3.7155, 3.6250,\n", + " 3.6551, 3.7120, 3.5062, 3.3894, 3.0050, 2.8993, 2.9466, 2.9645, 2.9810,\n", + " 3.0671, 3.0980, 3.2064, 3.2895, 3.2939, 3.8281, 2.7622, 4.5959, 4.7647,\n", + " 5.1069, 5.6477, 6.0976, 5.9580, 1.0929, 0.6731, 0.6710, 1.2658, 1.7759,\n", + " 2.1958, 1.3326, 1.8766]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3209, 0.5766, -0.4805, 0.7259, 1.0574, 0.5008, -0.1980, -0.4800,\n", + " 0.1207, -0.2412, -0.1035, 0.4659, 0.5940, 0.1603, -0.0031, 0.2112,\n", + " 0.1028, 0.4779, -0.1321, 0.4673, 0.4716, -1.4499, 0.6415, -0.7863,\n", + " 0.2599, -0.3726, -1.0382, -0.8222, -0.4364, 0.5929, -0.0799, -0.0562,\n", + " -0.5565, 0.3802, 0.2247, 0.3577, 0.3282, 0.6282, -0.5562, -0.6071,\n", + " -0.1263, -0.3785, 0.0447]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2797, -0.3038, -0.0868, -0.2471, -0.0957, 0.0562, 0.1389, 0.2844,\n", + " 0.2728, 0.2939, 0.2713, -0.1002, -0.2115, -0.1523, -0.1368, -0.3196,\n", + " -0.2777, -0.1377, -0.1640, -0.1010, -0.0741, -0.0933, -0.0552, -0.0664,\n", + " -0.0568, -0.0016, 0.1209, -0.1195, -0.1262, -0.2218, -0.2131, -0.1841,\n", + " -0.2595, -0.2892, -0.2008, -0.2207, -0.0518, 0.0057, -0.0517, 0.3334,\n", + " 0.3687, 0.3294, 0.2558]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00017956350347958505\n", + "Grad encoder.fc1.bias: 0.00199020653963089\n", + "Grad encoder.encoder.0.weight: 6.600795313715935e-05\n", + "Grad encoder.encoder.0.bias: 0.0013592327013611794\n", + "Grad encoder.encoder.2.weight: 5.4409778385888785e-05\n", + "Grad encoder.encoder.2.bias: 0.0009162675705738366\n", + "Grad encoder.encoder.4.weight: 0.00013414530258160084\n", + "Grad encoder.encoder.4.bias: 0.0020904308184981346\n", + "Grad decoder.fc1.0.weight: 5.882073674001731e-05\n", + "Grad decoder.fc1.0.bias: 0.0007371798856183887\n", + "Grad decoder.fc1.2.weight: 7.41392359486781e-05\n", + "Grad decoder.fc1.2.bias: 0.0007959766080603004\n", + "Grad decoder.fc1.4.weight: 6.74231123412028e-05\n", + "Grad decoder.fc1.4.bias: 0.0007022880017757416\n", + "Grad decoder.fc2.weight: 0.00011672361142700538\n", + "Grad decoder.fc2.bias: 0.0012835949892178178\n", + "Grad _memory_unit.weight_ih_l0: 1.4372855730471201e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0001696902181720361\n", + "Grad _memory_unit.bias_hh_l0: 8.87254936969839e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0164932973566465e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00023199192946776748\n", + "Grad _memory_unit.bias_hh_l1: 0.00012272995081730187\n", + "Data X Sample: tensor([[1.2115, 1.3327, 1.5071, 1.6793, 1.7467, 1.8666, 1.9505, 1.8782, 3.1953,\n", + " 3.8750, 3.8988, 3.8463, 3.6862, 3.4190, 3.4954, 3.3150, 3.2407, 3.2130,\n", + " 3.3557, 3.1857, 3.3173, 3.0389, 2.8773, 2.7466, 2.7289, 2.7738, 2.7758,\n", + " 2.8836, 2.8447, 3.0229, 2.9571, 3.1253, 3.1901, 2.3777, 3.9415, 4.3050,\n", + " 4.6606, 4.9878, 5.4067, 5.2827, 0.9211, 0.5556, 0.5275, 0.9817, 1.4430,\n", + " 1.6926, 1.1354, 1.5795]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1603, 0.3842, 0.2354, -0.3390, 0.6202, 0.0499, 0.2511, 0.2564,\n", + " -0.1225, 0.0938, -0.5459, -0.6466, -2.0150, 0.5095, -0.3710, 0.1678,\n", + " 0.9051, 0.6569, -1.2189, 0.3396, -0.8123, -0.1266, -0.7936, -0.4125,\n", + " -0.7794, 0.0173, -0.3108, -1.7454, -0.6231, 0.0604, 0.1267, 0.2771,\n", + " 0.8563, 0.7929, -0.0821, 0.8716, -0.9576, 0.3842, 0.5010, -1.2108,\n", + " -0.6983, -0.3406, 0.3204]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2227, -0.2388, -0.0557, -0.1959, -0.0783, 0.0523, 0.1014, 0.2175,\n", + " 0.2108, 0.2467, 0.2130, -0.0804, -0.1814, -0.1226, -0.1043, -0.2535,\n", + " -0.2276, -0.1038, -0.1267, -0.0792, -0.0524, -0.0857, -0.0428, -0.0603,\n", + " -0.0649, -0.0097, 0.0899, -0.0892, -0.1065, -0.1823, -0.1735, -0.1429,\n", + " -0.2320, -0.2324, -0.1591, -0.1923, -0.0420, 0.0161, -0.0465, 0.2587,\n", + " 0.3019, 0.2528, 0.2046]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00020494693308137357\n", + "Grad encoder.fc1.bias: 0.0014132261276245117\n", + "Grad encoder.encoder.0.weight: 5.64256843063049e-05\n", + "Grad encoder.encoder.0.bias: 0.0009563415660522878\n", + "Grad encoder.encoder.2.weight: 5.7699286116985604e-05\n", + "Grad encoder.encoder.2.bias: 0.0007826416986063123\n", + "Grad encoder.encoder.4.weight: 0.00014493826893158257\n", + "Grad encoder.encoder.4.bias: 0.001487931003794074\n", + "Grad decoder.fc1.0.weight: 5.372595478547737e-05\n", + "Grad decoder.fc1.0.bias: 0.0006028598290868104\n", + "Grad decoder.fc1.2.weight: 6.555320578627288e-05\n", + "Grad decoder.fc1.2.bias: 0.0005511301569640636\n", + "Grad decoder.fc1.4.weight: 5.116415923112072e-05\n", + "Grad decoder.fc1.4.bias: 0.0004922327934764326\n", + "Grad decoder.fc2.weight: 0.00013449312245938927\n", + "Grad decoder.fc2.bias: 0.0018235701136291027\n", + "Grad _memory_unit.weight_ih_l0: 9.329361091658939e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.117386071011424e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.773192267748527e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.985434993111994e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001525686529930681\n", + "Grad _memory_unit.bias_hh_l1: 7.993490726221353e-05\n", + "Data X Sample: tensor([[1.3897, 1.5847, 1.8332, 1.9132, 2.0182, 2.0670, 2.0260, 1.9307, 3.3076,\n", + " 4.2289, 4.3239, 4.2806, 4.1411, 3.9043, 3.7803, 3.6609, 3.6117, 3.6695,\n", + " 3.6881, 3.5390, 3.4645, 3.2670, 2.7713, 2.7657, 2.8171, 2.9776, 3.0529,\n", + " 3.0589, 3.0737, 3.1507, 3.2371, 3.3823, 3.8083, 2.8034, 4.6082, 4.8766,\n", + " 4.9968, 5.5205, 6.0342, 5.8133, 1.0309, 0.6532, 0.6346, 1.1309, 1.7086,\n", + " 1.9270, 1.1490, 1.6108]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4454, -0.7807, -1.0532, -0.8234, -0.5823, -0.1281, 0.3058, 0.4651,\n", + " 1.4105, 0.5630, 0.6714, -0.0846, -0.6394, 0.0357, -1.0726, 0.1481,\n", + " 1.1874, -0.2240, -0.8044, 0.3571, -0.8665, -0.7465, 0.3343, -0.0655,\n", + " -0.1682, 0.1077, -1.1181, 0.0361, 0.3035, -0.5058, 0.4288, -1.1168,\n", + " 0.0112, -0.9902, -0.6720, -0.0072, -0.7434, -0.0459, 1.0291, 0.3876,\n", + " 0.7787, 0.2283, -0.2954]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2032, -0.2248, -0.0455, -0.1961, -0.0813, 0.0486, 0.0939, 0.1919,\n", + " 0.1854, 0.2264, 0.2009, -0.0813, -0.1770, -0.1217, -0.0932, -0.2262,\n", + " -0.2234, -0.0939, -0.1169, -0.0742, -0.0455, -0.0953, -0.0440, -0.0565,\n", + " -0.0673, -0.0145, 0.0873, -0.0783, -0.0975, -0.1701, -0.1632, -0.1305,\n", + " -0.2250, -0.2249, -0.1498, -0.1799, -0.0411, 0.0274, -0.0426, 0.2364,\n", + " 0.2814, 0.2231, 0.1884]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0009967738296836615\n", + "Grad encoder.fc1.bias: 0.0005190563388168812\n", + "Grad encoder.encoder.0.weight: 0.00022418337175622582\n", + "Grad encoder.encoder.0.bias: 0.0006195625173859298\n", + "Grad encoder.encoder.2.weight: 0.00016755040269345045\n", + "Grad encoder.encoder.2.bias: 0.000703341793268919\n", + "Grad encoder.encoder.4.weight: 0.00031112419674173\n", + "Grad encoder.encoder.4.bias: 0.0016398746520280838\n", + "Grad decoder.fc1.0.weight: 7.75462031015195e-05\n", + "Grad decoder.fc1.0.bias: 0.0006502807373180985\n", + "Grad decoder.fc1.2.weight: 8.510392945026979e-05\n", + "Grad decoder.fc1.2.bias: 0.0009111273102462292\n", + "Grad decoder.fc1.4.weight: 7.651818305021152e-05\n", + "Grad decoder.fc1.4.bias: 0.00109359051566571\n", + "Grad decoder.fc2.weight: 0.00012418134429026395\n", + "Grad decoder.fc2.bias: 0.002022643806412816\n", + "Grad _memory_unit.weight_ih_l0: 2.0726611182908528e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.5430136853829026e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.9744678613496944e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.277864592149854e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00013049475091975182\n", + "Grad _memory_unit.bias_hh_l1: 6.900983862578869e-05\n", + "Data X Sample: tensor([[0.0138, 0.0364, 0.0406, 0.0831, 0.0837, 0.0913, 0.1233, 0.1136, 0.1367,\n", + " 0.1216, 0.0983, 0.1285, 0.1287, 0.1309, 0.1538, 0.1737, 0.1918, 0.2186,\n", + " 0.2375, 0.2343, 0.2773, 0.2281, 0.2651, 0.2749, 0.2496, 0.3187, 0.3170,\n", + " 0.4160, 0.1873, 0.2227, 0.2030, 0.1934, 0.1342, 0.0893, 0.1324, 0.1581,\n", + " 0.1337, 0.1219, 0.1268, 0.1220, 0.0239, 0.0139, 0.0364, 0.0545, 0.0793,\n", + " 0.0858, 0.0544, 0.0235]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7993, 1.6363, -3.4057, 0.9720, -1.2941, -0.6933, -0.2163, 0.0741,\n", + " 0.6069, 0.8471, 0.7946, -0.4651, 0.8513, -0.4771, -0.0693, 0.4947,\n", + " -0.3446, 0.6370, -1.3717, -1.3016, -1.4595, -1.5914, -2.2237, -0.4708,\n", + " -0.1660, -0.8453, 0.1225, 0.4270, -0.0825, 0.0704, -0.1377, -1.0493,\n", + " 0.0779, -0.6660, -0.7769, 0.7211, 0.4246, -0.8831, 0.2870, 1.0228,\n", + " 0.8901, -0.0109, 0.1156]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5068, 0.3633, 0.1568, 0.2961, 0.0209, -0.1796, -0.5053, -0.5345,\n", + " -0.2549, -0.3562, -0.2898, 0.2150, 0.1752, 0.3510, 0.2549, 0.3441,\n", + " 0.2649, 0.1311, 0.1107, 0.1618, 0.1080, 0.0250, -0.0257, 0.1330,\n", + " 0.0585, 0.0086, 0.0621, 0.1531, 0.2893, 0.3932, 0.3764, 0.2730,\n", + " 0.3355, 0.3498, 0.1794, 0.2063, 0.0157, 0.0492, -0.0189, -0.3906,\n", + " -0.3139, -0.3147, -0.3307]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00034679833333939314\n", + "Grad encoder.fc1.bias: 0.0005461707478389144\n", + "Grad encoder.encoder.0.weight: 8.479671669192612e-05\n", + "Grad encoder.encoder.0.bias: 0.000542429625056684\n", + "Grad encoder.encoder.2.weight: 7.453111902577803e-05\n", + "Grad encoder.encoder.2.bias: 0.0006484511541202664\n", + "Grad encoder.encoder.4.weight: 0.0001441311906091869\n", + "Grad encoder.encoder.4.bias: 0.0009124588104896247\n", + "Grad decoder.fc1.0.weight: 4.833363345824182e-05\n", + "Grad decoder.fc1.0.bias: 0.0004114134353585541\n", + "Grad decoder.fc1.2.weight: 5.4937860113568604e-05\n", + "Grad decoder.fc1.2.bias: 0.0005396458436734974\n", + "Grad decoder.fc1.4.weight: 5.440646782517433e-05\n", + "Grad decoder.fc1.4.bias: 0.0006557979504577816\n", + "Grad decoder.fc2.weight: 0.00011787119728978723\n", + "Grad decoder.fc2.bias: 0.0020048804581165314\n", + "Grad _memory_unit.weight_ih_l0: 1.0718084013205953e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.5314977139933035e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.923701711348258e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.285529368848074e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.168686665361747e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.8148845962714404e-05\n", + "Data X Sample: tensor([[1.4088, 1.5104, 1.6920, 1.8433, 1.9636, 2.1259, 2.0660, 1.9477, 2.7949,\n", + " 4.0757, 4.2921, 4.3020, 4.0191, 3.9506, 3.6971, 3.7102, 3.7265, 3.6637,\n", + " 3.4589, 3.4163, 3.3958, 3.3741, 2.9279, 2.8573, 2.8002, 2.8339, 2.8371,\n", + " 2.8958, 2.8308, 3.0622, 3.2650, 3.3602, 3.9689, 2.8560, 4.5788, 4.9982,\n", + " 5.2289, 5.4913, 6.0722, 5.9097, 1.0786, 0.6333, 0.6346, 1.1711, 1.6768,\n", + " 1.7955, 1.1830, 1.8610]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2227, -0.3043, 0.3053, -0.0723, 0.7075, 0.3535, 0.9276, 0.6353,\n", + " 1.1505, 0.6441, 0.6389, 0.0537, 0.0288, -0.2913, -0.4057, -0.3593,\n", + " -1.3222, -0.3200, -1.8449, -0.3822, 0.3104, 5.2214, -0.5661, 0.5356,\n", + " -1.0535, -0.9647, 0.2383, -0.0645, -0.1428, -0.1562, -0.4913, -0.0114,\n", + " -0.0523, 0.2196, -0.2740, 0.4674, -1.0293, 0.6373, 0.0000, 0.3643,\n", + " 0.6764, 0.7530, -0.1447]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1452, -0.1776, -0.0271, -0.1745, -0.0561, 0.0497, 0.0828, 0.1442,\n", + " 0.1378, 0.1902, 0.1516, -0.0974, -0.1570, -0.1165, -0.0783, -0.1743,\n", + " -0.1986, -0.0621, -0.1106, -0.0561, -0.0203, -0.1009, -0.0484, -0.0406,\n", + " -0.0520, -0.0085, 0.0742, -0.0631, -0.0823, -0.1432, -0.1460, -0.1007,\n", + " -0.2148, -0.2077, -0.1302, -0.1370, -0.0373, 0.0412, -0.0191, 0.1703,\n", + " 0.2258, 0.1853, 0.1536]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001398800959577784\n", + "Grad encoder.fc1.bias: 0.00014850555453449488\n", + "Grad encoder.encoder.0.weight: 4.6897992433514446e-05\n", + "Grad encoder.encoder.0.bias: 0.00014142392319627106\n", + "Grad encoder.encoder.2.weight: 5.85204797971528e-05\n", + "Grad encoder.encoder.2.bias: 0.00022699739201925695\n", + "Grad encoder.encoder.4.weight: 0.00016102497465908527\n", + "Grad encoder.encoder.4.bias: 0.0010074188467115164\n", + "Grad decoder.fc1.0.weight: 5.973515726509504e-05\n", + "Grad decoder.fc1.0.bias: 0.0005199982551857829\n", + "Grad decoder.fc1.2.weight: 7.547335553681478e-05\n", + "Grad decoder.fc1.2.bias: 0.0008002078393474221\n", + "Grad decoder.fc1.4.weight: 6.742688128724694e-05\n", + "Grad decoder.fc1.4.bias: 0.0010118014179170132\n", + "Grad decoder.fc2.weight: 9.407914330950007e-05\n", + "Grad decoder.fc2.bias: 0.0018065631156787276\n", + "Grad _memory_unit.weight_ih_l0: 1.9336754121468402e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.697709664469585e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.7711288566933945e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.315275747212581e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.000114766153274104\n", + "Grad _memory_unit.bias_hh_l1: 6.135812145657837e-05\n", + "Data X Sample: tensor([[2.5333, 2.8635, 3.2592, 3.3039, 3.5207, 3.5771, 3.6406, 3.8088, 3.7884,\n", + " 3.8608, 3.7941, 3.8502, 3.8327, 3.7216, 3.6467, 3.4777, 3.4797, 3.5051,\n", + " 3.4961, 3.3921, 3.2682, 3.1583, 3.0532, 2.7657, 2.8396, 2.8104, 2.7519,\n", + " 2.8509, 2.7962, 3.0098, 2.9571, 2.9429, 3.0911, 2.2336, 3.6473, 4.0035,\n", + " 4.3282, 4.5823, 5.1595, 5.1522, 2.0140, 1.1550, 1.2126, 1.9892, 3.1238,\n", + " 3.1908, 2.0873, 3.2606]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5529, -0.2670, -1.0024, -0.1683, -0.4828, 0.9626, 0.5088, 0.7711,\n", + " -0.9525, 0.9769, 0.8026, 0.8571, -0.3868, 0.1702, -0.4546, -1.2611,\n", + " -0.3264, -0.4643, 0.9290, 0.3110, 1.1008, 0.5602, -0.1370, 0.1986,\n", + " 0.6512, 0.7818, -0.6130, -0.9872, 0.3607, -0.3944, -0.8996, -0.4340,\n", + " -0.3604, -0.2698, -0.9290, -1.5756, 1.0407, -0.5802, 2.2782, 1.0243,\n", + " 0.7206, 1.2187, 0.7279]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1696, -0.2351, -0.0774, -0.2762, -0.1492, -0.0269, 0.0488, 0.1131,\n", + " 0.1226, 0.1217, 0.1140, -0.0608, -0.1453, -0.0936, -0.0147, -0.1495,\n", + " -0.1776, -0.0980, -0.1209, -0.0859, -0.0608, -0.0915, -0.1255, -0.0295,\n", + " 0.0398, -0.0168, 0.1603, -0.0459, -0.0038, -0.1451, -0.0763, -0.1293,\n", + " -0.1026, -0.1539, -0.0304, -0.0649, -0.0255, 0.0138, -0.0371, 0.1685,\n", + " 0.1864, 0.1751, 0.1525]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007207420421764255\n", + "Grad encoder.fc1.bias: 0.0004258273111190647\n", + "Grad encoder.encoder.0.weight: 0.00015112826076801866\n", + "Grad encoder.encoder.0.bias: 0.0004602010303642601\n", + "Grad encoder.encoder.2.weight: 0.00012677608174271882\n", + "Grad encoder.encoder.2.bias: 0.0005448315059766173\n", + "Grad encoder.encoder.4.weight: 0.00027063488960266113\n", + "Grad encoder.encoder.4.bias: 0.001550939865410328\n", + "Grad decoder.fc1.0.weight: 6.769916217308491e-05\n", + "Grad decoder.fc1.0.bias: 0.0006387266330420971\n", + "Grad decoder.fc1.2.weight: 0.00010063596710097045\n", + "Grad decoder.fc1.2.bias: 0.001014546025544405\n", + "Grad decoder.fc1.4.weight: 8.192838868126273e-05\n", + "Grad decoder.fc1.4.bias: 0.0011541469721123576\n", + "Grad decoder.fc2.weight: 0.00010950539581244811\n", + "Grad decoder.fc2.bias: 0.0015852032229304314\n", + "Grad _memory_unit.weight_ih_l0: 1.9726890968740918e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.758315819548443e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.328798629809171e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.788614079297986e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00014011257735546678\n", + "Grad _memory_unit.bias_hh_l1: 7.411980186589062e-05\n", + "Data X Sample: tensor([[-0.0095, -0.0044, -0.0135, -0.0044, -0.0051, 0.0000, 0.0031, -0.0085,\n", + " 0.0024, 0.0047, 0.0032, -0.0058, 0.0111, -0.0136, 0.0126, -0.0041,\n", + " 0.0031, 0.0232, 0.0186, 0.0093, 0.0344, -0.0031, 0.0000, -0.0057,\n", + " 0.0075, 0.0235, 0.0320, 0.0367, 0.0104, 0.0295, -0.0140, -0.0028,\n", + " 0.0066, -0.0069, 0.0025, 0.0389, 0.0138, 0.0186, 0.0570, -0.0113,\n", + " -0.0143, 0.0060, -0.0020, 0.0057, 0.0000, -0.0114, 0.0000, -0.0235]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 7.8129e-01, 5.9795e-01, 5.8988e-01, 1.3827e+00, 1.0122e-01,\n", + " 6.9602e-01, -4.0209e-01, -9.2510e-01, -6.7759e-01, -9.1374e-01,\n", + " -4.5453e-01, 8.3154e-01, -5.1868e-01, -1.2970e-01, 2.1513e+00,\n", + " -2.1137e-02, 1.3658e+00, 1.0786e+00, 8.2824e-01, 1.4694e-01,\n", + " 1.3243e+00, -5.9166e-01, -6.1890e-01, 1.3994e-01, -6.1721e+00,\n", + " -2.8560e-01, -7.5976e-01, 3.4649e-01, 6.0199e-01, 1.3126e+00,\n", + " 1.3310e+00, 8.4849e-01, 8.0166e-01, 6.6358e-02, -1.7614e-01,\n", + " 9.6140e-01, -1.0781e-03, -7.8147e-01, -6.7737e-03, -5.2311e-01,\n", + " -6.2599e-01, -3.6677e-01, -3.4299e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.9339, 0.6221, 0.2136, 0.4834, -0.2083, -0.4795, -1.0086, -1.0580,\n", + " -0.5992, -0.7008, -0.6682, 0.3037, 0.3733, 0.6253, 0.3600, 0.5310,\n", + " 0.4196, 0.1398, 0.1067, 0.1934, 0.1474, 0.0349, -0.0325, 0.1447,\n", + " 0.0663, -0.1096, 0.2252, 0.3949, 0.7451, 0.8728, 0.7585, 0.4996,\n", + " 0.7076, 0.5812, 0.2840, 0.3478, 0.0638, 0.0633, -0.0338, -0.7612,\n", + " -0.6246, -0.4665, -0.5435]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00012818431423511356\n", + "Grad encoder.fc1.bias: 0.0008951636264100671\n", + "Grad encoder.encoder.0.weight: 4.424593862495385e-05\n", + "Grad encoder.encoder.0.bias: 0.000693349982611835\n", + "Grad encoder.encoder.2.weight: 4.282144800527021e-05\n", + "Grad encoder.encoder.2.bias: 0.0005628305370919406\n", + "Grad encoder.encoder.4.weight: 0.00012643521768040955\n", + "Grad encoder.encoder.4.bias: 0.001210605725646019\n", + "Grad decoder.fc1.0.weight: 6.697551725665107e-05\n", + "Grad decoder.fc1.0.bias: 0.000549277407117188\n", + "Grad decoder.fc1.2.weight: 8.503497519996017e-05\n", + "Grad decoder.fc1.2.bias: 0.0009770866017788649\n", + "Grad decoder.fc1.4.weight: 7.36695365048945e-05\n", + "Grad decoder.fc1.4.bias: 0.0009717713110148907\n", + "Grad decoder.fc2.weight: 0.00012952470569871366\n", + "Grad decoder.fc2.bias: 0.0015280806692317128\n", + "Grad _memory_unit.weight_ih_l0: 1.32209361254354e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00010397048754384741\n", + "Grad _memory_unit.bias_hh_l0: 5.5250195146072656e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.936441529134754e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00016214692732319236\n", + "Grad _memory_unit.bias_hh_l1: 8.730711124371737e-05\n", + "Data X Sample: tensor([[1.4480, 1.3604, 1.4004, 1.5437, 1.8526, 2.0744, 2.1323, 1.9548, 3.5517,\n", + " 4.0757, 4.3365, 4.4052, 4.1811, 4.0761, 3.9190, 3.8032, 3.7202, 3.5070,\n", + " 3.5828, 3.5316, 3.5847, 3.4400, 3.0122, 2.8535, 2.8659, 2.8365, 2.8371,\n", + " 3.0018, 2.9765, 2.9935, 3.2790, 3.3713, 3.7445, 2.8469, 4.6204, 4.9034,\n", + " 5.1935, 5.4330, 5.9708, 5.8587, 0.9975, 0.5357, 0.5436, 0.9329, 1.3716,\n", + " 1.5496, 1.0946, 1.5873]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.7359e-01, -1.8217e-01, -7.3277e-01, -6.0249e-02, 1.1240e+00,\n", + " -6.8587e-05, 1.5084e-01, 9.4390e-02, -1.0931e-01, -5.4306e-02,\n", + " 3.0021e-01, 2.5708e-01, -1.1048e+00, -1.9862e-01, 8.5635e-02,\n", + " -6.1761e-01, 3.5603e-01, 7.3452e-01, -5.5785e-01, -7.5045e-01,\n", + " -1.9147e+00, -1.3414e+00, 5.0956e-01, -8.7966e-01, -1.2866e+00,\n", + " 5.4049e-01, -9.8843e-01, -7.4885e-01, -4.1563e-01, -3.5100e-01,\n", + " -7.0348e-01, -1.8536e-01, -4.4399e-01, -8.0219e-01, -9.9476e-01,\n", + " -5.8385e-01, -1.0367e+00, 7.1777e-01, 9.8338e-01, 4.3585e-01,\n", + " 4.9249e-01, 2.5254e-01, 1.2471e+00]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1352, -0.1558, 0.0063, -0.1244, 0.0109, 0.1047, 0.1185, 0.1487,\n", + " 0.1273, 0.2172, 0.1610, -0.1214, -0.1632, -0.1448, -0.1179, -0.1939,\n", + " -0.1734, -0.0359, -0.1017, -0.0455, -0.0055, -0.1010, -0.0139, -0.0328,\n", + " -0.0938, -0.0019, 0.0225, -0.0532, -0.1264, -0.1491, -0.1737, -0.1002,\n", + " -0.2797, -0.2450, -0.1631, -0.1626, -0.0345, 0.0516, 0.0020, 0.1607,\n", + " 0.2348, 0.1873, 0.1691]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004670705820899457\n", + "Grad encoder.fc1.bias: 0.0012404978042468429\n", + "Grad encoder.encoder.0.weight: 0.00010618024680297822\n", + "Grad encoder.encoder.0.bias: 0.0009863495361059904\n", + "Grad encoder.encoder.2.weight: 0.0001069809150067158\n", + "Grad encoder.encoder.2.bias: 0.0007697803666815162\n", + "Grad encoder.encoder.4.weight: 0.0002441738033667207\n", + "Grad encoder.encoder.4.bias: 0.0015826334711164236\n", + "Grad decoder.fc1.0.weight: 7.939893839647993e-05\n", + "Grad decoder.fc1.0.bias: 0.0006653012242168188\n", + "Grad decoder.fc1.2.weight: 0.00010785937774926424\n", + "Grad decoder.fc1.2.bias: 0.0012587467208504677\n", + "Grad decoder.fc1.4.weight: 9.064543701242656e-05\n", + "Grad decoder.fc1.4.bias: 0.0012519469019025564\n", + "Grad decoder.fc2.weight: 0.00015921385784167796\n", + "Grad decoder.fc2.bias: 0.001585530349984765\n", + "Grad _memory_unit.weight_ih_l0: 1.7692713299766183e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00013771737576462328\n", + "Grad _memory_unit.bias_hh_l0: 7.058007759042084e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0547972124186344e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00018997809092979878\n", + "Grad _memory_unit.bias_hh_l1: 0.0001003638026304543\n", + "Data X Sample: tensor([[2.5640, 3.0936, 3.1811, 2.9168, 2.8600, 3.6566, 3.8486, 3.9025, 3.8958,\n", + " 3.9983, 3.9527, 3.9184, 3.7173, 3.8634, 3.5937, 3.5201, 3.5001, 3.4838,\n", + " 3.5498, 3.3531, 3.3222, 3.2716, 2.9303, 2.8669, 2.7270, 2.7791, 2.7572,\n", + " 2.7408, 2.7476, 2.9542, 2.9571, 2.8987, 2.9635, 2.2908, 3.7478, 4.1324,\n", + " 4.3616, 4.8367, 5.3750, 5.3310, 1.8327, 1.1252, 1.1176, 2.0753, 2.7987,\n", + " 2.8248, 1.7065, 2.3692]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6015, 0.5821, -0.1346, -0.0784, -1.6383, -0.6834, 0.8825, 0.8189,\n", + " -0.2113, 0.5289, 0.7645, -0.2110, -0.3842, -0.9343, 0.6888, 0.2366,\n", + " -0.4872, -2.9535, -1.8824, -2.1484, 0.5380, -0.4516, -0.3441, -0.2238,\n", + " -1.3674, -0.5928, 0.3395, 0.8667, -0.1000, -0.4545, -1.0481, -0.1337,\n", + " -0.5140, -1.0382, 0.0962, 0.0110, -0.5085, 0.1511, -0.0156, 0.8508,\n", + " 0.9169, 0.5031, 0.3217]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1698, -0.2340, -0.0623, -0.2625, -0.1298, 0.0152, 0.0892, 0.1629,\n", + " 0.1191, 0.1509, 0.1827, -0.0987, -0.1626, -0.1288, -0.0738, -0.1795,\n", + " -0.1736, -0.0797, -0.1124, -0.0766, -0.0568, -0.0839, -0.0995, -0.0159,\n", + " 0.0059, 0.0043, 0.1159, -0.0464, -0.0489, -0.1263, -0.1119, -0.1575,\n", + " -0.1571, -0.2023, -0.0947, -0.1241, -0.0398, 0.0203, -0.0235, 0.1970,\n", + " 0.2317, 0.2230, 0.1810]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000558976549655199\n", + "Grad encoder.fc1.bias: 0.0003236634947825223\n", + "Grad encoder.encoder.0.weight: 0.00011556764366105199\n", + "Grad encoder.encoder.0.bias: 0.00036621594335883856\n", + "Grad encoder.encoder.2.weight: 9.021183359436691e-05\n", + "Grad encoder.encoder.2.bias: 0.00043101131450384855\n", + "Grad encoder.encoder.4.weight: 0.0001707582559902221\n", + "Grad encoder.encoder.4.bias: 0.0008563048904761672\n", + "Grad decoder.fc1.0.weight: 4.173861816525459e-05\n", + "Grad decoder.fc1.0.bias: 0.0003928678925149143\n", + "Grad decoder.fc1.2.weight: 4.057432306581177e-05\n", + "Grad decoder.fc1.2.bias: 0.0005450879107229412\n", + "Grad decoder.fc1.4.weight: 4.716747935162857e-05\n", + "Grad decoder.fc1.4.bias: 0.0007525400724261999\n", + "Grad decoder.fc2.weight: 0.00011368020932422951\n", + "Grad decoder.fc2.bias: 0.0021675194147974253\n", + "Grad _memory_unit.weight_ih_l0: 1.571713073644787e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.8085257983766496e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.0903709810227156e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.162746103655081e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.524432632839307e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.4726402848027647e-05\n", + "Data X Sample: tensor([[1.4396, 1.6794, 1.9279, 2.0400, 2.1019, 2.1348, 2.0784, 3.4113, 4.1277,\n", + " 4.4817, 4.4952, 4.4442, 4.1367, 4.1170, 4.2015, 3.8333, 3.7344, 3.6250,\n", + " 3.5436, 3.5279, 3.4498, 3.3236, 2.9881, 2.7924, 2.7007, 2.8757, 2.9410,\n", + " 2.9407, 2.9904, 3.0852, 3.2126, 3.3022, 3.7731, 2.7737, 4.6743, 4.9861,\n", + " 5.2053, 5.4966, 6.0659, 6.0686, 1.1407, 0.6592, 0.6811, 1.2343, 1.7046,\n", + " 1.8927, 1.2510, 1.7750]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3905, -0.3931, -0.2000, -0.5296, -0.5555, 1.3735, 0.4142, 0.4093,\n", + " -0.0238, 0.6367, 0.4110, -0.0073, 0.4521, 0.4423, -0.4438, -0.1321,\n", + " -1.0266, -0.5129, -0.7697, -0.3340, -0.1667, -0.8253, 0.1969, -0.6228,\n", + " -0.3364, 0.3138, -0.5730, 0.3081, 0.6720, -0.7350, 0.0144, 0.1546,\n", + " -0.2319, -0.8618, 1.4822, -0.2180, -0.6001, 0.0000, 0.8163, 0.2120,\n", + " 0.4970, 0.1198, 0.6923]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1596, -0.1794, 0.0088, -0.1352, 0.0187, 0.1229, 0.1503, 0.1744,\n", + " 0.1377, 0.2392, 0.1901, -0.1289, -0.1730, -0.1696, -0.1435, -0.2256,\n", + " -0.1717, -0.0392, -0.0945, -0.0541, -0.0130, -0.0993, -0.0117, -0.0326,\n", + " -0.1132, 0.0068, 0.0126, -0.0454, -0.1460, -0.1628, -0.1843, -0.1251,\n", + " -0.3014, -0.2747, -0.1815, -0.1881, -0.0334, 0.0486, -0.0005, 0.1899,\n", + " 0.2654, 0.2074, 0.2057]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00021685450337827206\n", + "Grad encoder.fc1.bias: 0.00060795689933002\n", + "Grad encoder.encoder.0.weight: 5.7505571021465585e-05\n", + "Grad encoder.encoder.0.bias: 0.0004866347589995712\n", + "Grad encoder.encoder.2.weight: 6.545992800965905e-05\n", + "Grad encoder.encoder.2.bias: 0.00045858806697651744\n", + "Grad encoder.encoder.4.weight: 0.0001748668437357992\n", + "Grad encoder.encoder.4.bias: 0.001484091393649578\n", + "Grad decoder.fc1.0.weight: 5.81037238589488e-05\n", + "Grad decoder.fc1.0.bias: 0.0005693802377209067\n", + "Grad decoder.fc1.2.weight: 6.976025179028511e-05\n", + "Grad decoder.fc1.2.bias: 0.0007343357428908348\n", + "Grad decoder.fc1.4.weight: 6.554298306582496e-05\n", + "Grad decoder.fc1.4.bias: 0.0008461411925964057\n", + "Grad decoder.fc2.weight: 0.0001325193006778136\n", + "Grad decoder.fc2.bias: 0.0017688617808744311\n", + "Grad _memory_unit.weight_ih_l0: 1.7009175280691124e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00013050755660515279\n", + "Grad _memory_unit.bias_hh_l0: 6.95171402185224e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.463512469665147e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00018103394540958107\n", + "Grad _memory_unit.bias_hh_l1: 9.720091475173831e-05\n", + "Data X Sample: tensor([[1.4512, 1.7027, 1.9234, 2.1625, 2.0899, 2.1333, 2.1277, 2.2033, 3.4125,\n", + " 4.2210, 4.2921, 4.2124, 4.2321, 4.0570, 4.0325, 3.6801, 3.7155, 3.6250,\n", + " 3.6551, 3.7120, 3.5062, 3.3894, 3.0050, 2.8993, 2.9466, 2.9645, 2.9810,\n", + " 3.0671, 3.0980, 3.2064, 3.2895, 3.2939, 3.8281, 2.7622, 4.5959, 4.7647,\n", + " 5.1069, 5.6477, 6.0976, 5.9580, 1.0929, 0.6731, 0.6710, 1.2658, 1.7759,\n", + " 2.1958, 1.3326, 1.8766]], device='cuda:0')\n", + "Data Y Sample: tensor([[-7.1838e-03, 2.6254e-01, -1.1458e+00, 9.0510e-01, -1.1780e-03,\n", + " 1.6436e-01, 3.3265e-01, 5.5601e-01, -7.0643e-02, 2.3826e-01,\n", + " 2.9727e-01, -4.4205e-01, -9.1483e-01, -6.1308e-01, -8.1727e-01,\n", + " -8.0451e-01, -1.5551e+00, -3.1089e-01, -1.0301e+00, -1.9041e+00,\n", + " -3.3255e-01, -1.3854e+00, -1.4379e+00, -5.3953e-01, 7.7570e-01,\n", + " -9.7136e-01, 2.7813e-01, -4.4915e-01, -5.4302e-01, -4.9860e-01,\n", + " -7.4907e-02, -1.4283e+00, -1.0592e+00, -1.5579e-01, -5.4476e-01,\n", + " -7.3596e-01, 7.3289e-01, -1.3100e-01, -5.9875e-01, 4.5367e-01,\n", + " 2.6851e-01, 4.1148e-01, -1.7072e+00]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1915, -0.2083, 0.0136, -0.1645, 0.0039, 0.1155, 0.1709, 0.1943,\n", + " 0.1516, 0.2649, 0.2206, -0.1393, -0.1808, -0.1962, -0.1682, -0.2601,\n", + " -0.1797, -0.0588, -0.0871, -0.0631, -0.0146, -0.0981, -0.0162, -0.0444,\n", + " -0.1321, 0.0074, 0.0197, -0.0292, -0.1437, -0.1698, -0.2020, -0.1445,\n", + " -0.3210, -0.3014, -0.1997, -0.2030, -0.0307, 0.0411, -0.0110, 0.2314,\n", + " 0.2953, 0.2358, 0.2423]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00041139087988995016\n", + "Grad encoder.fc1.bias: 0.0005329586565494537\n", + "Grad encoder.encoder.0.weight: 0.00010535003093536943\n", + "Grad encoder.encoder.0.bias: 0.00046400303835980594\n", + "Grad encoder.encoder.2.weight: 9.45217689150013e-05\n", + "Grad encoder.encoder.2.bias: 0.0005979927373118699\n", + "Grad encoder.encoder.4.weight: 0.0002491724444553256\n", + "Grad encoder.encoder.4.bias: 0.002291301731020212\n", + "Grad decoder.fc1.0.weight: 7.309941429411992e-05\n", + "Grad decoder.fc1.0.bias: 0.0007900189375504851\n", + "Grad decoder.fc1.2.weight: 8.768665429670364e-05\n", + "Grad decoder.fc1.2.bias: 0.0008762358920648694\n", + "Grad decoder.fc1.4.weight: 7.111579179763794e-05\n", + "Grad decoder.fc1.4.bias: 0.0008087342139333487\n", + "Grad decoder.fc2.weight: 0.0001670315832598135\n", + "Grad decoder.fc2.bias: 0.0019892952404916286\n", + "Grad _memory_unit.weight_ih_l0: 1.920641261676792e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00018255766190122813\n", + "Grad _memory_unit.bias_hh_l0: 9.66459047049284e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.203754436573945e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002467915473971516\n", + "Grad _memory_unit.bias_hh_l1: 0.00013252344797365367\n", + "Data X Sample: tensor([[1.5021, 1.7740, 1.8587, 1.9679, 2.2009, 2.2408, 2.2802, 2.3736, 2.4459,\n", + " 2.3870, 2.4934, 2.5532, 2.3835, 2.3339, 2.3681, 2.2879, 2.2737, 2.3154,\n", + " 2.3727, 2.4269, 2.3677, 2.3760, 2.4218, 2.4221, 2.4417, 2.4395, 2.4935,\n", + " 2.4798, 2.1093, 2.2500, 2.1347, 2.2659, 2.2308, 1.3960, 1.8555, 1.7780,\n", + " 1.5948, 1.4444, 1.5085, 1.5150, 1.1884, 0.6890, 0.6892, 1.3032, 1.8513,\n", + " 1.8699, 1.3530, 1.8532]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2497, 0.7037, 0.4798, 0.6052, -0.1942, 0.5177, -0.8452, -0.0978,\n", + " 0.8411, -0.3498, -0.2184, 0.3960, -0.0149, 0.1120, 1.5774, 0.0488,\n", + " 0.4675, -0.6554, -0.1682, 0.3559, 0.6582, 0.8361, 0.8175, 1.1172,\n", + " -0.0892, 1.3219, 0.6879, 0.4339, 1.0301, 0.6540, 0.2040, 0.3543,\n", + " -0.2739, 0.4658, 0.9793, 0.1274, -0.0457, -0.7055, -2.2862, -0.1807,\n", + " -0.0473, 0.1151, -1.2471]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3476, 0.3149, 0.1324, 0.1837, 0.0067, -0.1586, -0.3172, -0.3250,\n", + " -0.1685, -0.2135, -0.2101, 0.1042, 0.1209, 0.2502, 0.2152, 0.2614,\n", + " 0.2039, 0.0670, 0.0515, 0.0934, 0.0370, 0.0005, -0.0325, 0.0142,\n", + " 0.0586, 0.0640, 0.0097, 0.0460, 0.1815, 0.2252, 0.2070, 0.1100,\n", + " 0.2373, 0.1953, 0.1047, 0.1270, 0.0136, 0.0317, -0.0221, -0.2328,\n", + " -0.1749, -0.2229, -0.2587]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0008165194885805249\n", + "Grad encoder.fc1.bias: 0.0005199410952627659\n", + "Grad encoder.encoder.0.weight: 0.0001731373486109078\n", + "Grad encoder.encoder.0.bias: 0.0005733431316912174\n", + "Grad encoder.encoder.2.weight: 0.00013131076411809772\n", + "Grad encoder.encoder.2.bias: 0.000615580880548805\n", + "Grad encoder.encoder.4.weight: 0.00027126132044941187\n", + "Grad encoder.encoder.4.bias: 0.001654433086514473\n", + "Grad decoder.fc1.0.weight: 8.548982441425323e-05\n", + "Grad decoder.fc1.0.bias: 0.0007882717764005065\n", + "Grad decoder.fc1.2.weight: 0.00010340534936403856\n", + "Grad decoder.fc1.2.bias: 0.0011944461148232222\n", + "Grad decoder.fc1.4.weight: 8.668338705319911e-05\n", + "Grad decoder.fc1.4.bias: 0.0012937423307448626\n", + "Grad decoder.fc2.weight: 0.00015668851847294718\n", + "Grad decoder.fc2.bias: 0.0024937244597822428\n", + "Grad _memory_unit.weight_ih_l0: 2.5498466129647568e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00011904520215466619\n", + "Grad _memory_unit.bias_hh_l0: 6.11701761954464e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0993544492521323e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00017675416893325746\n", + "Grad _memory_unit.bias_hh_l1: 9.330943430541083e-05\n", + "Data X Sample: tensor([[1.6623, 1.9051, 2.0932, 2.2609, 2.3682, 2.3926, 2.4697, 2.5070, 2.5923,\n", + " 2.5860, 2.6647, 2.7245, 2.5899, 2.5901, 2.5320, 2.4739, 2.4938, 2.4953,\n", + " 2.5916, 2.5608, 2.5223, 2.5214, 2.5206, 2.4870, 2.4793, 2.6041, 2.5281,\n", + " 2.5328, 2.2619, 2.3679, 2.3307, 2.3046, 1.9844, 1.2884, 1.7918, 1.6782,\n", + " 1.6223, 1.5424, 1.5719, 1.4441, 1.2982, 0.7508, 0.7680, 1.3921, 1.9147,\n", + " 2.3159, 1.4346, 1.9704]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 5.3462e-01, -2.2468e-01, -8.0764e-01, 1.0541e-04, 1.6895e+00,\n", + " 8.9997e-01, 4.2644e-01, 5.8744e-01, 3.6954e-01, -4.7645e-02,\n", + " 4.4706e-02, -4.0717e-01, 2.2249e+00, -3.1858e-01, -1.2529e+00,\n", + " -7.0202e-01, 7.2271e-01, -5.1918e-01, 5.2718e-01, 2.0598e-01,\n", + " 2.4004e-01, 8.0226e-01, 3.4975e-01, -7.8760e-01, -1.5881e-01,\n", + " 3.9783e-01, -4.8758e-01, 2.9396e-01, -1.8655e-01, 6.0155e-02,\n", + " -1.9156e-01, -3.6011e-01, -9.8084e-01, 6.5253e-01, 1.2473e-01,\n", + " 1.4540e-01, 8.4931e-02, 0.0000e+00, 3.8169e-02, 1.4034e-01,\n", + " 2.2989e-01, -1.0398e-02, -4.7689e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3258, 0.3030, 0.1243, 0.1530, -0.0112, -0.1563, -0.3013, -0.2985,\n", + " -0.1701, -0.2081, -0.1954, 0.0902, 0.1132, 0.2401, 0.2007, 0.2440,\n", + " 0.1952, 0.0589, 0.0431, 0.0807, 0.0120, -0.0089, -0.0365, 0.0074,\n", + " 0.0601, 0.0739, 0.0046, 0.0361, 0.1838, 0.2212, 0.1940, 0.0945,\n", + " 0.2251, 0.1775, 0.0893, 0.0985, 0.0184, 0.0315, -0.0155, -0.2034,\n", + " -0.1617, -0.2007, -0.2329]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00018926570191979408\n", + "Grad encoder.fc1.bias: 0.000604701170232147\n", + "Grad encoder.encoder.0.weight: 4.858537431573495e-05\n", + "Grad encoder.encoder.0.bias: 0.0005013351328670979\n", + "Grad encoder.encoder.2.weight: 6.561685586348176e-05\n", + "Grad encoder.encoder.2.bias: 0.0005457918159663677\n", + "Grad encoder.encoder.4.weight: 0.00018445587193127722\n", + "Grad encoder.encoder.4.bias: 0.0013058860786259174\n", + "Grad decoder.fc1.0.weight: 5.0635437219170853e-05\n", + "Grad decoder.fc1.0.bias: 0.00044673954835161567\n", + "Grad decoder.fc1.2.weight: 6.372236384777352e-05\n", + "Grad decoder.fc1.2.bias: 0.0005579898715950549\n", + "Grad decoder.fc1.4.weight: 5.51110933884047e-05\n", + "Grad decoder.fc1.4.bias: 0.0006817548419348896\n", + "Grad decoder.fc2.weight: 0.00014160941645968705\n", + "Grad decoder.fc2.bias: 0.001947184675373137\n", + "Grad _memory_unit.weight_ih_l0: 1.2361157132545486e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.798229100648314e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.6462617319775745e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.648971975664608e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00014141047722660005\n", + "Grad _memory_unit.bias_hh_l1: 7.438219472533092e-05\n", + "Data X Sample: tensor([[1.5488, 1.5701, 1.8287, 1.9832, 2.0558, 2.1407, 2.2263, 2.7228, 4.2522,\n", + " 4.3395, 4.2255, 4.2007, 3.9636, 3.8361, 3.8509, 3.5939, 3.6353, 3.6134,\n", + " 3.6282, 3.6023, 3.5626, 3.5043, 3.0339, 2.8878, 2.9691, 2.9070, 2.9756,\n", + " 3.0426, 3.0321, 3.2358, 3.2860, 3.3768, 3.7599, 2.7737, 4.5788, 4.8791,\n", + " 5.1325, 5.5655, 6.0532, 5.8899, 1.1072, 0.6791, 0.6609, 1.2285, 1.8751,\n", + " 1.8756, 1.2102, 1.7984]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.7147, -0.5686, -0.7281, -0.3225, -0.5698, -0.3862, -0.0625, 0.0241,\n", + " -0.1438, 0.4605, 0.2230, 0.1735, 0.2620, -0.0802, -0.1620, -0.5043,\n", + " -0.4505, 1.9105, 0.4569, 1.7860, -1.6702, -0.5384, -0.1739, -0.7787,\n", + " -0.8184, 2.9690, 1.2149, -0.1906, 0.2720, 0.1565, -0.4239, 0.3197,\n", + " -0.6632, -0.3385, 0.0153, -0.4502, 0.9536, 0.0705, 0.0000, 0.2446,\n", + " 0.3085, 0.9768, -0.0666]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2522, -0.2654, -0.0163, -0.1852, -0.0163, 0.1157, 0.2191, 0.2703,\n", + " 0.1965, 0.3280, 0.2822, -0.1450, -0.1905, -0.2490, -0.2161, -0.3427,\n", + " -0.1668, -0.0957, -0.0773, -0.1158, -0.0401, -0.0799, -0.0424, -0.0784,\n", + " -0.1473, 0.0242, 0.0264, -0.0083, -0.1570, -0.1924, -0.2353, -0.2058,\n", + " -0.3487, -0.3457, -0.2263, -0.2402, -0.0198, 0.0216, -0.0368, 0.3193,\n", + " 0.3715, 0.3056, 0.3122]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0012101270258426666\n", + "Grad encoder.fc1.bias: 0.0005956688546575606\n", + "Grad encoder.encoder.0.weight: 0.00026176852406933904\n", + "Grad encoder.encoder.0.bias: 0.0006840050918981433\n", + "Grad encoder.encoder.2.weight: 0.00019530634745024145\n", + "Grad encoder.encoder.2.bias: 0.000771262333728373\n", + "Grad encoder.encoder.4.weight: 0.0004707016923930496\n", + "Grad encoder.encoder.4.bias: 0.0022795714903622866\n", + "Grad decoder.fc1.0.weight: 0.00010239108087262139\n", + "Grad decoder.fc1.0.bias: 0.0009604314109310508\n", + "Grad decoder.fc1.2.weight: 0.00012229583808220923\n", + "Grad decoder.fc1.2.bias: 0.0017166642937809229\n", + "Grad decoder.fc1.4.weight: 0.00010246080637443811\n", + "Grad decoder.fc1.4.bias: 0.001789967413060367\n", + "Grad decoder.fc2.weight: 0.000164951357874088\n", + "Grad decoder.fc2.bias: 0.0026128378231078386\n", + "Grad _memory_unit.weight_ih_l0: 2.4318665964528918e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.195987902581692e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.324113979237154e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.3238823157735169e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002105928142555058\n", + "Grad _memory_unit.bias_hh_l1: 0.00011069821630371734\n", + "Data X Sample: tensor([[1.2306, 1.4478, 1.7130, 1.7296, 1.8338, 1.9683, 2.0044, 2.1152, 1.9504,\n", + " 3.2084, 3.9464, 4.1969, 3.8948, 3.8280, 3.7223, 3.5406, 3.4010, 3.3832,\n", + " 3.3350, 3.3903, 3.3933, 3.3848, 2.8701, 2.7962, 2.7251, 2.6876, 2.7545,\n", + " 2.7530, 2.6470, 2.9312, 2.9116, 3.0977, 3.4409, 2.6363, 4.3532, 4.7842,\n", + " 4.9339, 5.3084, 5.7743, 5.6799, 1.0691, 0.6233, 0.6588, 1.1539, 1.5658,\n", + " 1.7383, 1.1558, 1.5169]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6845, 0.2641, 0.3578, 0.0786, -0.1342, 0.8602, 0.3106, -0.2917,\n", + " 0.3331, -0.2972, -0.6750, -0.4421, 0.4104, -0.1770, 1.4273, 0.9822,\n", + " -0.1479, 0.0526, 0.0671, -0.1380, 0.5311, -2.3086, 0.4924, 0.1017,\n", + " 1.8866, 1.4134, 0.3747, -0.4420, -0.1413, 0.8503, -0.4140, -1.3515,\n", + " 0.0112, -0.6332, 0.3163, -2.2132, -0.7230, -0.5101, -0.4521, -0.4159,\n", + " -0.6177, 0.0643, 0.3464]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2721, -0.2930, -0.0319, -0.2069, -0.0168, 0.1381, 0.2521, 0.2996,\n", + " 0.2074, 0.3395, 0.3109, -0.1616, -0.2050, -0.2748, -0.2395, -0.3692,\n", + " -0.1798, -0.1004, -0.0880, -0.1351, -0.0595, -0.0911, -0.0496, -0.0728,\n", + " -0.1467, 0.0268, 0.0287, -0.0169, -0.1717, -0.1997, -0.2445, -0.2229,\n", + " -0.3630, -0.3796, -0.2397, -0.2531, -0.0212, 0.0163, -0.0394, 0.3526,\n", + " 0.4008, 0.3330, 0.3341]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0009465596522204578\n", + "Grad encoder.fc1.bias: 0.0008656147983856499\n", + "Grad encoder.encoder.0.weight: 0.00021434668451547623\n", + "Grad encoder.encoder.0.bias: 0.0007219900144264102\n", + "Grad encoder.encoder.2.weight: 0.0001909104030346498\n", + "Grad encoder.encoder.2.bias: 0.0009498866274952888\n", + "Grad encoder.encoder.4.weight: 0.0004716182011179626\n", + "Grad encoder.encoder.4.bias: 0.002890167757868767\n", + "Grad decoder.fc1.0.weight: 0.00012083000910934061\n", + "Grad decoder.fc1.0.bias: 0.0010630883043631911\n", + "Grad decoder.fc1.2.weight: 0.00014295561413746327\n", + "Grad decoder.fc1.2.bias: 0.001439773477613926\n", + "Grad decoder.fc1.4.weight: 0.00010007813398260623\n", + "Grad decoder.fc1.4.bias: 0.0011566746979951859\n", + "Grad decoder.fc2.weight: 0.00022534011804964393\n", + "Grad decoder.fc2.bias: 0.0026867638807743788\n", + "Grad _memory_unit.weight_ih_l0: 3.208477937732823e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0001849598775152117\n", + "Grad _memory_unit.bias_hh_l0: 0.00010206683509750292\n", + "Grad _memory_unit.weight_ih_l1: 1.7579070117790252e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0003336503868922591\n", + "Grad _memory_unit.bias_hh_l1: 0.00018035140237770975\n", + "Data X Sample: tensor([[1.4268, 1.5046, 1.6995, 1.8105, 1.9533, 1.9756, 2.0722, 1.9321, 3.0635,\n", + " 3.9493, 4.1874, 4.1267, 3.9658, 3.7080, 3.6593, 3.3683, 3.3350, 3.4819,\n", + " 3.3226, 3.3754, 3.4547, 3.4170, 3.1038, 2.8210, 2.8115, 2.8966, 2.8558,\n", + " 2.8632, 2.9210, 2.9902, 3.0411, 3.1281, 3.5289, 2.4990, 4.2331, 4.6334,\n", + " 4.7530, 5.2157, 5.6349, 5.5977, 1.0547, 0.6393, 0.6487, 1.0850, 1.6531,\n", + " 1.8413, 1.1626, 1.7750]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1571, -1.0561, -1.3416, -0.7121, -1.6317, -0.6698, 0.4849, 0.2530,\n", + " 0.9541, 0.4604, 0.8453, -1.6916, -0.4550, 0.0326, -0.5656, -0.7415,\n", + " 0.3716, 0.2051, -0.8385, -0.2961, -0.9102, -1.4665, -1.0467, 0.7512,\n", + " -0.0752, -3.4432, 1.2675, -0.3803, 0.1786, 0.1080, -0.3654, -0.0590,\n", + " -1.3332, -1.0510, -0.9313, -0.5179, -0.6748, 0.1123, 0.9027, 0.7288,\n", + " 0.8383, 0.7822, 0.7799]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2783, -0.2988, -0.0356, -0.2068, -0.0126, 0.1456, 0.2558, 0.3102,\n", + " 0.2079, 0.3502, 0.3204, -0.1654, -0.2056, -0.2864, -0.2481, -0.3814,\n", + " -0.1822, -0.1007, -0.0805, -0.1383, -0.0569, -0.0911, -0.0498, -0.0818,\n", + " -0.1450, 0.0324, 0.0296, -0.0138, -0.1838, -0.2070, -0.2487, -0.2261,\n", + " -0.3687, -0.3855, -0.2482, -0.2592, -0.0254, 0.0165, -0.0396, 0.3587,\n", + " 0.4076, 0.3411, 0.3461]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00019824656192213297\n", + "Grad encoder.fc1.bias: 0.0002975593670271337\n", + "Grad encoder.encoder.0.weight: 4.8615467676427215e-05\n", + "Grad encoder.encoder.0.bias: 0.0002619390143081546\n", + "Grad encoder.encoder.2.weight: 5.976968532195315e-05\n", + "Grad encoder.encoder.2.bias: 0.0003319712704978883\n", + "Grad encoder.encoder.4.weight: 0.00012635310122277588\n", + "Grad encoder.encoder.4.bias: 0.0006717799114994705\n", + "Grad decoder.fc1.0.weight: 5.07633994857315e-05\n", + "Grad decoder.fc1.0.bias: 0.0004676992248278111\n", + "Grad decoder.fc1.2.weight: 5.697270535165444e-05\n", + "Grad decoder.fc1.2.bias: 0.0006561693735420704\n", + "Grad decoder.fc1.4.weight: 7.418900349875912e-05\n", + "Grad decoder.fc1.4.bias: 0.0010438787285238504\n", + "Grad decoder.fc2.weight: 0.00016832513210829347\n", + "Grad decoder.fc2.bias: 0.0020664907060563564\n", + "Grad _memory_unit.weight_ih_l0: 1.2028539458697196e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.830718146171421e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.1322240829467773e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.132011549198069e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010125239350600168\n", + "Grad _memory_unit.bias_hh_l1: 5.38844324182719e-05\n", + "Data X Sample: tensor([[1.5096, 1.7245, 1.8482, 1.9591, 2.1070, 2.2364, 2.3526, 2.3637, 2.5216,\n", + " 2.3933, 2.4998, 2.6233, 2.4656, 2.3938, 2.4336, 2.2428, 2.2642, 2.3831,\n", + " 2.4057, 2.4530, 2.4021, 2.4219, 2.3592, 2.4259, 2.4061, 2.4421, 2.4375,\n", + " 2.4512, 2.2584, 2.3614, 2.2537, 2.2024, 2.2264, 1.4326, 1.9143, 1.7196,\n", + " 1.5810, 1.4576, 1.5466, 1.5150, 1.2409, 0.6990, 0.7457, 1.1367, 1.7680,\n", + " 2.0128, 1.4006, 1.7906]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.1913, -0.0925, 0.1070, -0.0817, -2.1984, -1.3719, -0.9736, -0.5894,\n", + " -2.3144, -0.5170, -0.3238, 0.8885, 0.8945, 0.2270, 0.1743, 0.8056,\n", + " 0.8504, 2.7650, -0.7398, 0.7919, 0.1404, 0.2223, 1.1249, 1.4169,\n", + " 1.4977, 0.6220, -1.2622, 0.7475, 0.4192, 0.2836, 0.7608, 0.1368,\n", + " 0.0484, 0.6189, 0.0118, 1.6104, -0.8471, -0.4903, 0.9175, -0.4217,\n", + " -0.6651, -0.4979, 0.2795]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4763, 0.4254, 0.1710, 0.2971, 0.0485, -0.1882, -0.4086, -0.4403,\n", + " -0.2366, -0.3028, -0.2717, 0.1661, 0.1809, 0.2974, 0.2593, 0.3401,\n", + " 0.2648, 0.0746, 0.1111, 0.1185, 0.0487, -0.0179, 0.0037, 0.0273,\n", + " 0.0572, 0.1093, 0.0100, 0.0643, 0.2220, 0.2939, 0.2939, 0.1652,\n", + " 0.3617, 0.2975, 0.1619, 0.1951, -0.0233, 0.0076, -0.0154, -0.3121,\n", + " -0.2634, -0.3144, -0.3280]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001841209304984659\n", + "Grad encoder.fc1.bias: 0.000375334988348186\n", + "Grad encoder.encoder.0.weight: 7.438789180014282e-05\n", + "Grad encoder.encoder.0.bias: 0.00033072332735173404\n", + "Grad encoder.encoder.2.weight: 8.377227641176432e-05\n", + "Grad encoder.encoder.2.bias: 0.00044257374247536063\n", + "Grad encoder.encoder.4.weight: 0.00018750244635157287\n", + "Grad encoder.encoder.4.bias: 0.0017227940261363983\n", + "Grad decoder.fc1.0.weight: 6.526298966491595e-05\n", + "Grad decoder.fc1.0.bias: 0.000653096241876483\n", + "Grad decoder.fc1.2.weight: 8.676087600179017e-05\n", + "Grad decoder.fc1.2.bias: 0.0007007503299973905\n", + "Grad decoder.fc1.4.weight: 8.067004819167778e-05\n", + "Grad decoder.fc1.4.bias: 0.0008034557104110718\n", + "Grad decoder.fc2.weight: 0.00019422901095822453\n", + "Grad decoder.fc2.bias: 0.0022518441546708345\n", + "Grad _memory_unit.weight_ih_l0: 1.4135453966446221e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00012664368841797113\n", + "Grad _memory_unit.bias_hh_l0: 6.599231710424647e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.682666131993756e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00018120254389941692\n", + "Grad _memory_unit.bias_hh_l1: 9.712395694805309e-05\n", + "Data X Sample: tensor([[1.5743, 1.7595, 1.9354, 2.0335, 2.0865, 2.2615, 2.2848, 2.2913, 2.3409,\n", + " 2.3838, 2.4046, 2.4422, 2.3435, 2.3638, 2.2773, 2.4247, 2.3098, 2.3328,\n", + " 2.3768, 2.4195, 2.4659, 2.5291, 2.5110, 2.5023, 2.5769, 2.6380, 2.6267,\n", + " 2.5328, 2.4423, 2.4596, 2.4252, 2.4069, 2.2308, 1.4051, 1.8923, 1.7561,\n", + " 1.6617, 1.5477, 1.6100, 1.6172, 1.3316, 0.7806, 0.7437, 1.3519, 1.8592,\n", + " 2.0700, 1.4346, 2.0564]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.6442, 1.1850, 0.5375, 0.6276, -1.4660, -1.0787, -0.4742, -0.1625,\n", + " 0.8988, 1.1173, 0.9015, 1.0470, 0.3599, 0.9150, -0.3239, 0.4198,\n", + " -0.4490, -0.1287, -0.9915, 0.7670, 0.0860, 0.6309, 0.2166, -0.5744,\n", + " 0.7051, 1.8431, -0.9561, 0.5008, 0.6456, -0.4922, 0.6730, 0.7059,\n", + " -0.1809, -1.2313, -0.4541, 0.1276, -0.0182, -0.7806, -0.3730, -0.4169,\n", + " -1.0504, -1.3035, 0.4902]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5655, 0.4999, 0.1937, 0.3670, 0.0694, -0.2246, -0.4808, -0.5202,\n", + " -0.2755, -0.3586, -0.3165, 0.2024, 0.2232, 0.3480, 0.3078, 0.3978,\n", + " 0.3126, 0.0869, 0.1365, 0.1405, 0.0591, -0.0184, 0.0204, 0.0265,\n", + " 0.0643, 0.1318, 0.0184, 0.0771, 0.2573, 0.3450, 0.3501, 0.2014,\n", + " 0.4390, 0.3648, 0.1916, 0.2428, -0.0372, -0.0031, -0.0049, -0.3668,\n", + " -0.3218, -0.3758, -0.3864]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00016549071006011218\n", + "Grad encoder.fc1.bias: 0.001360997324809432\n", + "Grad encoder.encoder.0.weight: 4.797101428266615e-05\n", + "Grad encoder.encoder.0.bias: 0.0012090678792446852\n", + "Grad encoder.encoder.2.weight: 5.272909766063094e-05\n", + "Grad encoder.encoder.2.bias: 0.0009829580085352063\n", + "Grad encoder.encoder.4.weight: 0.00015514143160544336\n", + "Grad encoder.encoder.4.bias: 0.0017051389440894127\n", + "Grad decoder.fc1.0.weight: 7.389673555735499e-05\n", + "Grad decoder.fc1.0.bias: 0.0007172629120759666\n", + "Grad decoder.fc1.2.weight: 0.00010154474875889719\n", + "Grad decoder.fc1.2.bias: 0.0011352503206580877\n", + "Grad decoder.fc1.4.weight: 9.074120316654444e-05\n", + "Grad decoder.fc1.4.bias: 0.0011187884956598282\n", + "Grad decoder.fc2.weight: 0.00018348362937103957\n", + "Grad decoder.fc2.bias: 0.0016749188071116805\n", + "Grad _memory_unit.weight_ih_l0: 1.7855192709248513e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0001407301751896739\n", + "Grad _memory_unit.bias_hh_l0: 7.298070704564452e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.1173686289112084e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00023026109556667507\n", + "Grad _memory_unit.bias_hh_l1: 0.00012256414629518986\n", + "Data X Sample: tensor([[1.3812, 1.5352, 1.7205, 1.7842, 1.9567, 2.1230, 2.1138, 2.2984, 3.5077,\n", + " 4.1357, 4.2985, 4.2144, 4.1167, 3.9561, 3.7526, 3.6596, 3.6196, 3.7101,\n", + " 3.5415, 3.5167, 3.6264, 3.2547, 2.9496, 2.7829, 2.7852, 2.9541, 3.0183,\n", + " 3.0834, 3.0945, 3.2424, 3.2196, 3.3464, 3.8875, 2.8560, 4.5640, 5.0396,\n", + " 5.2249, 5.5311, 5.9898, 5.8956, 1.0261, 0.5656, 0.6204, 1.0592, 1.6253,\n", + " 1.8184, 1.1490, 1.6264]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6690, -0.1478, 0.8450, -0.0215, 0.1872, 0.6437, -0.0443, 0.4797,\n", + " 0.5213, 0.5451, 1.2988, -1.6602, -0.6224, -0.9055, 0.0653, -1.3971,\n", + " -0.7741, -0.8734, 0.9361, 0.0952, -0.9257, -1.0475, 0.2799, 1.0058,\n", + " 0.1364, 0.0807, -0.0198, -0.1193, -0.7998, -0.0517, -0.4240, 0.9155,\n", + " 0.5295, 0.2058, -0.7256, -0.0143, -0.5075, 0.4144, 0.0929, 0.3242,\n", + " 0.6304, 0.5018, -0.3449]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2734, -0.2973, -0.0342, -0.2031, -0.0524, 0.1285, 0.2369, 0.2846,\n", + " 0.1776, 0.3335, 0.3324, -0.1796, -0.1847, -0.3027, -0.2516, -0.3613,\n", + " -0.1853, -0.0956, -0.0803, -0.1465, -0.0495, -0.1021, -0.0571, -0.0915,\n", + " -0.1289, 0.0470, 0.0450, -0.0090, -0.1591, -0.1837, -0.2544, -0.2158,\n", + " -0.3378, -0.3849, -0.2266, -0.2666, -0.0370, 0.0142, -0.0457, 0.3712,\n", + " 0.3817, 0.3348, 0.3418]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0011334475129842758\n", + "Grad encoder.fc1.bias: 0.0009299550438299775\n", + "Grad encoder.encoder.0.weight: 0.00022082513896748424\n", + "Grad encoder.encoder.0.bias: 0.000776778208091855\n", + "Grad encoder.encoder.2.weight: 0.00018978647131007165\n", + "Grad encoder.encoder.2.bias: 0.0008200634038075805\n", + "Grad encoder.encoder.4.weight: 0.0003996183804702014\n", + "Grad encoder.encoder.4.bias: 0.002014428609982133\n", + "Grad decoder.fc1.0.weight: 0.00010009209654526785\n", + "Grad decoder.fc1.0.bias: 0.0008043199777603149\n", + "Grad decoder.fc1.2.weight: 0.0001069854770321399\n", + "Grad decoder.fc1.2.bias: 0.0011687774676829576\n", + "Grad decoder.fc1.4.weight: 0.00011089540203101933\n", + "Grad decoder.fc1.4.bias: 0.0013007174711674452\n", + "Grad decoder.fc2.weight: 0.00016776109987404197\n", + "Grad decoder.fc2.bias: 0.002047470537945628\n", + "Grad _memory_unit.weight_ih_l0: 3.6366433050716296e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00011292622366454452\n", + "Grad _memory_unit.bias_hh_l0: 5.784985842183232e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.1515035112097394e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00019677482487168163\n", + "Grad _memory_unit.bias_hh_l1: 0.00010109238064615056\n", + "Data X Sample: tensor([[1.4417, 1.8672, 2.0721, 2.2346, 2.3272, 2.4191, 2.5082, 2.5667, 2.6558,\n", + " 2.6444, 2.6362, 2.7771, 2.6454, 2.5738, 2.6203, 2.5860, 2.5315, 2.6636,\n", + " 2.5916, 2.5050, 2.5616, 2.6102, 2.6797, 2.6111, 2.5431, 2.4134, 2.2750,\n", + " 2.2310, 1.9427, 1.9487, 1.7183, 1.6635, 1.4762, 0.9772, 1.3530, 1.3426,\n", + " 1.3490, 1.4046, 1.5149, 1.5406, 1.3602, 0.7408, 0.8023, 1.3232, 2.1248,\n", + " 2.1443, 1.4278, 2.1972]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4125, -0.5710, -0.7857, 0.4467, 0.6425, -0.5989, 0.1477, -0.1276,\n", + " -0.2073, -0.1440, -0.2975, -0.1065, -0.0299, 0.9043, 1.7466, 1.0558,\n", + " 0.2436, 0.8857, 0.3955, 0.0711, 0.2068, -0.6134, -0.2331, -0.5987,\n", + " -0.8928, -0.5786, -1.6217, 0.5275, 0.1750, -0.3878, 0.4038, -0.7020,\n", + " 0.0783, 1.0681, -0.7279, -0.7668, 0.7316, 0.6219, -0.0231, -0.3502,\n", + " -0.3215, -0.4412, -0.9192]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2071, -0.2645, -0.1309, -0.3131, -0.1970, -0.0077, 0.0645, 0.1978,\n", + " 0.1148, 0.1930, 0.1884, -0.0991, -0.1324, -0.1377, -0.0569, -0.2533,\n", + " -0.1429, -0.1152, -0.0405, -0.1228, -0.0825, -0.0847, -0.1224, -0.0712,\n", + " -0.0099, 0.0312, 0.1518, 0.0457, -0.0191, -0.0586, -0.0656, -0.1771,\n", + " -0.1181, -0.1622, -0.0866, -0.1467, -0.0482, -0.0181, -0.0666, 0.2544,\n", + " 0.2684, 0.2409, 0.2426]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006319148233160377\n", + "Grad encoder.fc1.bias: 0.0005374071188271046\n", + "Grad encoder.encoder.0.weight: 0.00011680572788463905\n", + "Grad encoder.encoder.0.bias: 0.00048312090802937746\n", + "Grad encoder.encoder.2.weight: 0.00011498804087750614\n", + "Grad encoder.encoder.2.bias: 0.000541044631972909\n", + "Grad encoder.encoder.4.weight: 0.0002261543122585863\n", + "Grad encoder.encoder.4.bias: 0.0010529201244935393\n", + "Grad decoder.fc1.0.weight: 6.351921911118552e-05\n", + "Grad decoder.fc1.0.bias: 0.0005210668314248323\n", + "Grad decoder.fc1.2.weight: 6.550073157995939e-05\n", + "Grad decoder.fc1.2.bias: 0.000609232229180634\n", + "Grad decoder.fc1.4.weight: 7.020021439529955e-05\n", + "Grad decoder.fc1.4.bias: 0.0008588797645643353\n", + "Grad decoder.fc2.weight: 0.00015890593931544572\n", + "Grad decoder.fc2.bias: 0.0017037778161466122\n", + "Grad _memory_unit.weight_ih_l0: 2.2143975002109073e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.768851067638025e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.4938626665971242e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.045461981964763e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001120535162044689\n", + "Grad _memory_unit.bias_hh_l1: 5.803977546747774e-05\n", + "Data X Sample: tensor([[2.4855, 2.8926, 3.1089, 3.3214, 3.3398, 3.3546, 3.6283, 3.7435, 3.8104,\n", + " 3.9351, 3.7782, 3.9476, 3.7128, 3.7489, 3.7904, 3.6254, 3.5944, 3.5399,\n", + " 3.4568, 3.4721, 3.3663, 3.2073, 3.0050, 2.8936, 2.7233, 2.7373, 2.6799,\n", + " 2.6796, 2.5360, 2.6168, 2.7611, 2.6556, 2.6973, 1.9635, 3.2968, 3.7359,\n", + " 4.0254, 4.1238, 4.5193, 4.6018, 1.8375, 1.1132, 1.0893, 1.9375, 2.9057,\n", + " 3.0307, 2.0465, 3.0104]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1684, -0.5356, -0.3409, -0.1220, -0.5498, -0.3537, 0.3817, 0.0752,\n", + " 0.3259, 0.0332, 0.1257, 0.0832, -1.0119, 0.2681, 1.7365, 0.8794,\n", + " 0.2259, 0.1316, 0.8517, 0.2688, -0.0983, -0.3964, 0.1429, -0.4551,\n", + " 1.0956, 0.4018, -0.0339, 0.0138, -0.2048, 0.2820, 0.4156, -0.1331,\n", + " 0.5064, -0.1431, 0.8524, -0.4982, 0.0000, -0.1011, -0.7678, 0.1509,\n", + " 0.0818, 0.5182, -0.0687]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3213, -0.4912, -0.2388, -0.5167, -0.3036, 0.0342, 0.1499, 0.3559,\n", + " 0.1942, 0.2604, 0.3505, -0.1787, -0.2610, -0.2384, -0.1245, -0.3905,\n", + " -0.2623, -0.1909, -0.1380, -0.2068, -0.1557, -0.1471, -0.2168, -0.0400,\n", + " 0.0611, 0.0432, 0.2521, -0.0216, -0.0580, -0.1389, -0.0993, -0.2745,\n", + " -0.1348, -0.2939, -0.1330, -0.1972, -0.1020, -0.0226, -0.0811, 0.4149,\n", + " 0.4104, 0.4042, 0.3384]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0021448915358632803\n", + "Grad encoder.fc1.bias: 0.0012355686631053686\n", + "Grad encoder.encoder.0.weight: 0.0004033083969261497\n", + "Grad encoder.encoder.0.bias: 0.0012324568815529346\n", + "Grad encoder.encoder.2.weight: 0.00033620704198256135\n", + "Grad encoder.encoder.2.bias: 0.0014543989673256874\n", + "Grad encoder.encoder.4.weight: 0.0005614866968244314\n", + "Grad encoder.encoder.4.bias: 0.0038135419599711895\n", + "Grad decoder.fc1.0.weight: 0.00012347669689916074\n", + "Grad decoder.fc1.0.bias: 0.001272784429602325\n", + "Grad decoder.fc1.2.weight: 0.00010872884013224393\n", + "Grad decoder.fc1.2.bias: 0.0012504123151302338\n", + "Grad decoder.fc1.4.weight: 0.00010160906822420657\n", + "Grad decoder.fc1.4.bias: 0.0012026329059153795\n", + "Grad decoder.fc2.weight: 0.00018400434055365622\n", + "Grad decoder.fc2.bias: 0.001747401780448854\n", + "Grad _memory_unit.weight_ih_l0: 6.27890694886446e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00028430880047380924\n", + "Grad _memory_unit.bias_hh_l0: 0.00014367621042765677\n", + "Grad _memory_unit.weight_ih_l1: 1.8297883798368275e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0003837207914330065\n", + "Grad _memory_unit.bias_hh_l1: 0.0001997831859625876\n", + "Data X Sample: tensor([[1.3908, 1.4711, 1.6874, 1.8476, 1.8799, 2.0375, 2.0984, 2.0755, 3.7787,\n", + " 4.1452, 4.2509, 4.1793, 4.1389, 3.9043, 3.7602, 3.4435, 3.3319, 3.5205,\n", + " 3.4403, 3.3270, 3.3124, 3.2547, 2.9399, 2.7523, 2.8434, 2.8470, 2.8158,\n", + " 2.8101, 2.8308, 3.0066, 3.1356, 3.0728, 3.5223, 2.6707, 4.4145, 4.8207,\n", + " 5.0047, 5.4145, 5.7933, 5.7225, 1.0309, 0.6034, 0.6184, 1.1080, 1.6967,\n", + " 1.7155, 1.1354, 1.5873]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5915, -0.4996, 0.0277, -0.1649, 0.6199, -0.0600, 0.6584, 0.6313,\n", + " 0.9277, 0.4091, 0.6873, -0.3242, 0.6912, -1.3826, 0.2229, -1.0954,\n", + " -0.7924, -0.4125, 0.6407, -1.2443, 1.2177, 9.6047, -0.1891, 0.0514,\n", + " 0.4116, -1.5904, -0.1369, -0.2284, 0.0435, -0.4586, -0.3673, -0.4730,\n", + " -0.2059, -0.2591, -1.5767, 0.4350, 0.0203, 0.9436, -0.5750, 0.7927,\n", + " 0.7983, 0.3298, 0.3222]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2913, -0.3380, -0.0499, -0.2689, -0.0580, 0.1621, 0.2440, 0.3161,\n", + " 0.1741, 0.3287, 0.3627, -0.2158, -0.2199, -0.3316, -0.2542, -0.3660,\n", + " -0.2294, -0.0941, -0.0823, -0.1631, -0.0641, -0.1216, -0.0833, -0.0738,\n", + " -0.0833, 0.0391, 0.0539, -0.0321, -0.1853, -0.1771, -0.2312, -0.2246,\n", + " -0.3331, -0.4123, -0.2353, -0.2714, -0.0372, 0.0276, -0.0348, 0.3932,\n", + " 0.4006, 0.3464, 0.3483]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0011138706468045712\n", + "Grad encoder.fc1.bias: 0.001048967125825584\n", + "Grad encoder.encoder.0.weight: 0.00021920586004853249\n", + "Grad encoder.encoder.0.bias: 0.0008769980049692094\n", + "Grad encoder.encoder.2.weight: 0.00017126926104538143\n", + "Grad encoder.encoder.2.bias: 0.0011608474887907505\n", + "Grad encoder.encoder.4.weight: 0.00032486129202879965\n", + "Grad encoder.encoder.4.bias: 0.0022511635906994343\n", + "Grad decoder.fc1.0.weight: 9.291372407460585e-05\n", + "Grad decoder.fc1.0.bias: 0.0010114014148712158\n", + "Grad decoder.fc1.2.weight: 9.1179070295766e-05\n", + "Grad decoder.fc1.2.bias: 0.0007870071567595005\n", + "Grad decoder.fc1.4.weight: 6.85074701323174e-05\n", + "Grad decoder.fc1.4.bias: 0.0006597154424525797\n", + "Grad decoder.fc2.weight: 0.00016796891577541828\n", + "Grad decoder.fc2.bias: 0.002267161151394248\n", + "Grad _memory_unit.weight_ih_l0: 3.401081994525157e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00010302002192474902\n", + "Grad _memory_unit.bias_hh_l0: 5.9359455917729065e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.4267119695432484e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002240394678665325\n", + "Grad _memory_unit.bias_hh_l1: 0.00011972328502452001\n", + "Data X Sample: tensor([[1.3833, 1.5031, 1.7370, 1.6574, 1.8031, 1.9079, 2.0629, 2.0017, 3.1294,\n", + " 4.2668, 4.3080, 4.1482, 4.0013, 3.8907, 3.7955, 3.6336, 3.5300, 3.4683,\n", + " 3.4919, 3.4535, 3.5945, 3.5548, 3.1472, 2.9375, 2.7721, 2.8548, 2.8824,\n", + " 2.8428, 2.8031, 3.1081, 3.0971, 3.3630, 3.6015, 2.6981, 4.4954, 4.9204,\n", + " 5.1758, 5.4781, 5.9581, 5.8331, 1.0309, 0.5895, 0.6306, 1.2228, 1.4509,\n", + " 1.6926, 1.1490, 1.6889]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3503, -0.9996, -0.4755, -0.4432, -1.2058, -0.6560, 0.4160, 0.3552,\n", + " 0.3100, 0.5623, 0.5632, -0.6433, -0.0163, -0.4491, 0.0396, -0.5127,\n", + " -0.6465, -0.1409, 0.0476, -0.5223, 0.9152, -1.1512, -0.3157, 0.7747,\n", + " -0.2643, -2.7867, -0.0626, -0.4854, -0.3878, -0.6224, -0.9307, -0.5970,\n", + " -0.2211, -0.3983, -1.0463, -0.2053, 0.9926, 0.1545, 0.7551, 0.6347,\n", + " 0.5203, 0.7247, 0.7251]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2499, -0.2942, -0.0217, -0.2034, -0.0714, 0.1242, 0.2059, 0.2708,\n", + " 0.1633, 0.3179, 0.3532, -0.2062, -0.1704, -0.3125, -0.2453, -0.3301,\n", + " -0.1933, -0.0670, -0.0678, -0.1471, -0.0348, -0.0904, -0.0686, -0.0792,\n", + " -0.0980, 0.0651, 0.0421, -0.0059, -0.1609, -0.1673, -0.2429, -0.2137,\n", + " -0.3140, -0.3788, -0.2090, -0.2722, -0.0400, 0.0312, -0.0366, 0.3631,\n", + " 0.3646, 0.3281, 0.3204]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000326638575643301\n", + "Grad encoder.fc1.bias: 0.0005337741458788514\n", + "Grad encoder.encoder.0.weight: 9.859762212727219e-05\n", + "Grad encoder.encoder.0.bias: 0.00040595774771645665\n", + "Grad encoder.encoder.2.weight: 8.03395378170535e-05\n", + "Grad encoder.encoder.2.bias: 0.0004079905920661986\n", + "Grad encoder.encoder.4.weight: 0.00020431521988939494\n", + "Grad encoder.encoder.4.bias: 0.0008786391699686646\n", + "Grad decoder.fc1.0.weight: 5.27982774656266e-05\n", + "Grad decoder.fc1.0.bias: 0.0003995224251411855\n", + "Grad decoder.fc1.2.weight: 6.176347960717976e-05\n", + "Grad decoder.fc1.2.bias: 0.0005126011092215776\n", + "Grad decoder.fc1.4.weight: 6.271987513173372e-05\n", + "Grad decoder.fc1.4.bias: 0.0006716230418533087\n", + "Grad decoder.fc2.weight: 0.000153185726958327\n", + "Grad decoder.fc2.bias: 0.0014067855663597584\n", + "Grad _memory_unit.weight_ih_l0: 1.754724871716462e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.70193408546038e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.6199773856205866e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.296547664736863e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.608130494598299e-05\n", + "Grad _memory_unit.bias_hh_l1: 5.1720329793170094e-05\n", + "Data X Sample: tensor([[2.7614, 2.5868, 1.9955, 1.9351, 2.1650, 2.4029, 3.8270, 4.1155, 4.2571,\n", + " 4.0851, 4.2541, 4.3624, 4.0857, 3.8907, 3.7829, 3.7567, 3.6935, 3.7275,\n", + " 3.6861, 3.5353, 3.4890, 3.4047, 3.0773, 3.0558, 2.8340, 2.8731, 2.7359,\n", + " 2.7979, 2.6851, 2.9640, 3.1216, 2.9678, 3.2121, 2.4098, 4.0248, 4.5945,\n", + " 4.6960, 5.2236, 5.9581, 5.6260, 1.6609, 0.8006, 0.7559, 1.2744, 1.7759,\n", + " 1.8527, 1.1966, 1.9313]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2974, -0.2944, -0.0812, 0.5350, 0.5875, 0.6848, 1.0684, 1.0548,\n", + " -0.6667, -0.5611, -0.7266, 0.0489, -0.1785, -0.6159, -0.7301, 0.1192,\n", + " -0.4704, 0.1498, -0.5814, 0.8300, -0.2590, 0.5044, 0.1201, 0.0280,\n", + " 0.1945, 0.1673, -1.0252, 0.2660, 0.5962, -0.4649, -1.1357, -0.5540,\n", + " -0.9760, 0.8019, -0.2616, 0.6345, -0.6417, 0.0940, -0.7130, -0.2753,\n", + " -0.4570, -0.8102, -0.2939]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2214, -0.2637, -0.0256, -0.2164, -0.1059, 0.0838, 0.1597, 0.2410,\n", + " 0.1302, 0.2653, 0.3149, -0.1913, -0.1537, -0.2756, -0.2035, -0.2722,\n", + " -0.1944, -0.0603, -0.0682, -0.1314, -0.0230, -0.0858, -0.0733, -0.0700,\n", + " -0.0649, 0.0620, 0.0554, -0.0113, -0.1244, -0.1290, -0.2079, -0.1896,\n", + " -0.2527, -0.3263, -0.1744, -0.2446, -0.0386, 0.0387, -0.0340, 0.3217,\n", + " 0.3188, 0.2913, 0.2768]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004352363175712526\n", + "Grad encoder.fc1.bias: 0.00025211527827195823\n", + "Grad encoder.encoder.0.weight: 0.0001097115091397427\n", + "Grad encoder.encoder.0.bias: 0.00026560912374407053\n", + "Grad encoder.encoder.2.weight: 9.887141641229391e-05\n", + "Grad encoder.encoder.2.bias: 0.00042845093412324786\n", + "Grad encoder.encoder.4.weight: 0.00028962932992726564\n", + "Grad encoder.encoder.4.bias: 0.0018051782390102744\n", + "Grad decoder.fc1.0.weight: 8.464647544315085e-05\n", + "Grad decoder.fc1.0.bias: 0.0008117202669382095\n", + "Grad decoder.fc1.2.weight: 9.355279325973243e-05\n", + "Grad decoder.fc1.2.bias: 0.0008187698549591005\n", + "Grad decoder.fc1.4.weight: 7.965735858306289e-05\n", + "Grad decoder.fc1.4.bias: 0.0008465615683235228\n", + "Grad decoder.fc2.weight: 0.0001675060484558344\n", + "Grad decoder.fc2.bias: 0.002361662220209837\n", + "Grad _memory_unit.weight_ih_l0: 2.0564109945553355e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00011557651305338368\n", + "Grad _memory_unit.bias_hh_l0: 6.004479655530304e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0396421203040518e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00020180763385724276\n", + "Grad _memory_unit.bias_hh_l1: 0.00010495661990717053\n", + "Data X Sample: tensor([[1.4608, 1.5643, 1.6063, 1.7492, 1.9106, 2.0449, 2.1261, 2.4474, 3.9837,\n", + " 4.1910, 4.1557, 4.2553, 3.9281, 3.8252, 3.7475, 3.5543, 3.5630, 3.5554,\n", + " 3.5704, 3.4814, 3.4718, 3.2501, 2.7929, 2.8077, 2.8359, 2.9723, 2.9943,\n", + " 3.1283, 3.1500, 3.2850, 3.2301, 3.3519, 3.7181, 2.7462, 4.3729, 4.7283,\n", + " 4.9988, 5.3615, 5.8187, 5.5579, 1.0404, 0.5915, 0.5942, 1.0104, 1.5579,\n", + " 1.6926, 1.2578, 1.7671]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 7.3975e-01, 4.1210e-01, -3.0600e-01, 1.1597e+00, 8.2561e-01,\n", + " 7.0467e-01, 1.8882e-02, 9.9078e-02, 3.5924e-02, 3.1175e-01,\n", + " 1.4611e-03, -2.6824e-01, 2.2470e-01, 4.3998e-01, 1.0518e-01,\n", + " 3.5554e-02, 6.1810e-01, -3.3088e-01, 7.6351e-02, 2.1912e-01,\n", + " -3.3254e-01, -4.1755e-01, 8.3002e-01, -2.0237e-03, -2.1982e-01,\n", + " -1.1853e-01, -3.4962e-01, -2.4175e-01, -1.6061e+00, -4.9459e-01,\n", + " -4.4466e-02, 1.4044e-01, -7.1027e-01, -5.6952e-01, 1.4651e+00,\n", + " 3.7625e-01, -4.4929e-01, 2.1861e-01, 5.9060e-01, -7.5013e-01,\n", + " -2.0136e-01, -2.4082e-01, -5.1482e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3195, 0.3137, 0.1763, 0.3534, 0.1028, -0.0138, -0.3454, -0.3694,\n", + " -0.1430, -0.2055, -0.0402, 0.2197, 0.1102, 0.0874, 0.1252, 0.2646,\n", + " 0.2422, 0.0733, 0.1699, 0.0772, 0.0364, -0.0320, 0.1277, 0.0813,\n", + " -0.0200, 0.0879, -0.0872, 0.0765, 0.0517, 0.2185, 0.2254, 0.0962,\n", + " 0.2622, 0.2011, 0.1280, 0.0365, -0.0335, -0.0454, -0.0028, -0.1888,\n", + " -0.2044, -0.2786, -0.1385]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.008314504288136959\n", + "Grad encoder.fc1.bias: 0.0028675002977252007\n", + "Grad encoder.encoder.0.weight: 0.0018019273411482573\n", + "Grad encoder.encoder.0.bias: 0.003048641374334693\n", + "Grad encoder.encoder.2.weight: 0.0012260442599654198\n", + "Grad encoder.encoder.2.bias: 0.00319247180595994\n", + "Grad encoder.encoder.4.weight: 0.0023242353927344084\n", + "Grad encoder.encoder.4.bias: 0.00903458334505558\n", + "Grad decoder.fc1.0.weight: 0.0004340956802479923\n", + "Grad decoder.fc1.0.bias: 0.003246996784582734\n", + "Grad decoder.fc1.2.weight: 0.0003587332321330905\n", + "Grad decoder.fc1.2.bias: 0.00323747331276536\n", + "Grad decoder.fc1.4.weight: 0.00027592486003413796\n", + "Grad decoder.fc1.4.bias: 0.0031974827870726585\n", + "Grad decoder.fc2.weight: 0.0002341038198210299\n", + "Grad decoder.fc2.bias: 0.0035221825819462538\n", + "Grad _memory_unit.weight_ih_l0: 0.00015792420890647918\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0003815723757725209\n", + "Grad _memory_unit.bias_hh_l0: 0.00020313145068939775\n", + "Grad _memory_unit.weight_ih_l1: 4.753578105010092e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0007797427242621779\n", + "Grad _memory_unit.bias_hh_l1: 0.0004067976260557771\n", + "Data X Sample: tensor([[1.5372, 1.7755, 1.9324, 2.0313, 2.1702, 2.2320, 2.3665, 2.3906, 2.4605,\n", + " 2.6018, 2.5474, 2.6428, 2.4390, 2.5465, 2.4008, 2.4014, 2.3051, 2.4605,\n", + " 2.4718, 2.3637, 2.4683, 2.4602, 2.4724, 2.3859, 2.4605, 2.4656, 2.3949,\n", + " 2.5165, 2.2307, 2.3286, 2.2607, 2.3212, 2.2352, 1.4898, 1.8996, 1.7780,\n", + " 1.5830, 1.5053, 1.6100, 1.5434, 1.2600, 0.7309, 0.7518, 1.2228, 1.8433,\n", + " 2.0242, 1.4006, 1.9783]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5656, 0.4325, 3.6186, 0.5522, 1.6397, -0.2451, -0.2103, -0.5019,\n", + " -0.8138, -0.3918, -0.8569, -0.2362, -0.3792, 0.9482, 0.3609, -0.1576,\n", + " -0.5751, 1.0338, 0.0582, 0.9143, 0.0255, -0.5223, -0.4059, 0.4551,\n", + " 0.8369, 0.0214, -0.8902, -0.3107, 0.5972, 0.7815, 0.1543, -0.5249,\n", + " 0.5918, 0.8408, 0.3349, 1.0738, -0.2698, 0.6373, -0.8437, -0.7149,\n", + " -0.7834, -1.0461, -1.3924]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4127, 0.3474, 0.1780, 0.3450, 0.1016, -0.1148, -0.3770, -0.4261,\n", + " -0.1839, -0.2377, -0.1901, 0.2267, 0.1745, 0.2088, 0.1953, 0.2916,\n", + " 0.2276, 0.0921, 0.1435, 0.0964, 0.0788, 0.0252, 0.0929, 0.0401,\n", + " 0.0036, 0.0872, -0.0235, 0.0746, 0.1648, 0.2468, 0.2753, 0.1416,\n", + " 0.3221, 0.2749, 0.1833, 0.1821, -0.0270, -0.0250, 0.0199, -0.2679,\n", + " -0.2478, -0.3208, -0.2464]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002858435327652842\n", + "Grad encoder.fc1.bias: 0.00032727891812101007\n", + "Grad encoder.encoder.0.weight: 0.00012734100164379925\n", + "Grad encoder.encoder.0.bias: 0.0003264725673943758\n", + "Grad encoder.encoder.2.weight: 0.00014801378711126745\n", + "Grad encoder.encoder.2.bias: 0.0005064047290943563\n", + "Grad encoder.encoder.4.weight: 0.0004151306056883186\n", + "Grad encoder.encoder.4.bias: 0.0015349354362115264\n", + "Grad decoder.fc1.0.weight: 9.262691310141236e-05\n", + "Grad decoder.fc1.0.bias: 0.0006880512228235602\n", + "Grad decoder.fc1.2.weight: 0.00010675084195099771\n", + "Grad decoder.fc1.2.bias: 0.0009109914535656571\n", + "Grad decoder.fc1.4.weight: 0.00012004363816231489\n", + "Grad decoder.fc1.4.bias: 0.001250853412784636\n", + "Grad decoder.fc2.weight: 0.00021588888193946332\n", + "Grad decoder.fc2.bias: 0.0023702809121459723\n", + "Grad _memory_unit.weight_ih_l0: 3.549094981281087e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.688717545941472e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.0674512749537826e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.1486699804663658e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00020737809245474637\n", + "Grad _memory_unit.bias_hh_l1: 0.00010803332406794652\n", + "Data X Sample: tensor([[1.5223, 1.8512, 2.0571, 2.1647, 2.1958, 2.2747, 2.3295, 2.3495, 2.3678,\n", + " 2.4264, 2.4776, 2.5649, 2.3391, 2.3938, 2.4261, 2.3303, 2.2768, 2.4064,\n", + " 2.4264, 2.5255, 2.6303, 2.6316, 2.6146, 2.5996, 2.6651, 2.7216, 2.7652,\n", + " 2.8020, 2.4631, 2.4957, 2.5581, 2.4207, 2.1296, 1.3800, 1.8996, 1.7439,\n", + " 1.5810, 1.5345, 1.6163, 1.5661, 1.3220, 0.7787, 0.7235, 1.3720, 1.8711,\n", + " 2.2873, 1.4278, 2.0799]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3111, -0.1510, 0.1449, 0.5842, -0.3506, -1.0746, -0.0479, -0.6246,\n", + " 0.1005, -0.8106, -0.2758, 0.5915, -0.6880, 0.9845, 0.8492, -0.6291,\n", + " 0.2612, 0.2872, -0.6253, -0.0920, 0.0357, -0.4284, 0.2105, 1.2631,\n", + " 0.2390, 0.3922, -0.5918, 0.3204, -0.8105, 0.5613, -0.1381, 0.6410,\n", + " 0.7647, 0.3258, -0.2122, 0.5098, -1.0105, -0.0751, 2.2964, -0.2156,\n", + " -0.2837, -0.2149, -0.3636]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.0006, -0.0571, 0.0095, -0.0664, -0.0482, 0.0385, 0.0103, 0.0589,\n", + " 0.0127, 0.0743, 0.1193, -0.0715, -0.0299, -0.0682, -0.0518, -0.0568,\n", + " -0.0801, 0.0022, -0.0237, -0.0503, 0.0122, -0.0278, -0.0199, -0.0096,\n", + " -0.0274, 0.0648, 0.0074, 0.0171, -0.0368, 0.0141, -0.0650, -0.0711,\n", + " -0.0575, -0.1330, -0.0699, -0.1184, -0.0373, 0.0253, 0.0012, 0.1032,\n", + " 0.1274, 0.1009, 0.0721]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0041800448670983315\n", + "Grad encoder.fc1.bias: 0.0021282038651406765\n", + "Grad encoder.encoder.0.weight: 0.000811839709058404\n", + "Grad encoder.encoder.0.bias: 0.002224392257630825\n", + "Grad encoder.encoder.2.weight: 0.0005229158559814095\n", + "Grad encoder.encoder.2.bias: 0.002299427753314376\n", + "Grad encoder.encoder.4.weight: 0.0009983525378629565\n", + "Grad encoder.encoder.4.bias: 0.006240720860660076\n", + "Grad decoder.fc1.0.weight: 0.00024174082500394434\n", + "Grad decoder.fc1.0.bias: 0.002584833651781082\n", + "Grad decoder.fc1.2.weight: 0.0002262843045173213\n", + "Grad decoder.fc1.2.bias: 0.0029372682329267263\n", + "Grad decoder.fc1.4.weight: 0.0001974583719857037\n", + "Grad decoder.fc1.4.bias: 0.00300662312656641\n", + "Grad decoder.fc2.weight: 0.0002200160379288718\n", + "Grad decoder.fc2.bias: 0.0038999547250568867\n", + "Grad _memory_unit.weight_ih_l0: 5.5818003602325916e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00022852863185107708\n", + "Grad _memory_unit.bias_hh_l0: 0.00011613513197517022\n", + "Grad _memory_unit.weight_ih_l1: 2.3472846805816516e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0005169378709979355\n", + "Grad _memory_unit.bias_hh_l1: 0.0002711906563490629\n", + "Data X Sample: tensor([[-0.0074, -0.0015, -0.0030, 0.0109, 0.0137, 0.0000, 0.0108, -0.0043,\n", + " 0.0146, 0.0032, 0.0286, 0.0175, 0.0133, 0.0164, 0.0252, 0.0109,\n", + " -0.0425, -0.0368, -0.0475, -0.0186, -0.0294, -0.0291, -0.0217, -0.0324,\n", + " -0.0244, -0.0470, -0.0240, -0.0204, -0.0451, 0.0098, -0.0210, -0.0028,\n", + " 0.0088, -0.0183, 0.0123, 0.0462, 0.0177, 0.0106, 0.0507, 0.0028,\n", + " 0.0048, 0.0080, 0.0040, 0.0057, 0.0396, 0.0000, 0.0136, 0.0235]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 2.0021e+00, 2.1132e+00, -2.7459e-01, 1.0351e+00, -5.3011e-01,\n", + " -3.7271e-01, -9.7490e-01, -1.3051e+00, -1.0789e+00, -1.1631e+00,\n", + " -8.3066e-01, 1.2556e+00, 1.1208e+00, 3.7336e-01, 2.1620e+00,\n", + " 1.6338e+00, -6.6153e-01, 8.2853e-01, 7.2335e-01, 3.6246e-03,\n", + " 1.2854e+00, 6.2332e+00, 2.5561e-01, 1.2087e-01, -6.5810e-02,\n", + " 9.5454e-01, 6.8939e-01, 1.6314e+00, 9.7572e-01, 1.0474e+00,\n", + " 9.3898e-01, -2.8972e-01, 5.9493e-01, 4.0233e-01, 1.1054e+00,\n", + " 6.3839e-01, 9.3923e-01, -4.9032e-01, -5.5963e-01, -1.0763e+00,\n", + " -7.4827e-01, -6.8351e-01, -9.9729e-02]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.8855, 0.6465, 0.2401, 0.5206, -0.2845, -0.5140, -1.0173, -1.0304,\n", + " -0.6977, -0.6605, -0.7339, 0.3613, 0.4178, 0.5459, 0.2637, 0.3885,\n", + " 0.3438, 0.1193, 0.1420, 0.1088, 0.1059, 0.0646, 0.1293, -0.0211,\n", + " -0.0838, -0.0715, 0.2815, 0.4322, 0.8270, 0.9596, 0.7921, 0.4209,\n", + " 0.7000, 0.5528, 0.3420, 0.2802, -0.0183, -0.0310, 0.1404, -0.7124,\n", + " -0.5870, -0.5361, -0.4279]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0016663888236507773\n", + "Grad encoder.fc1.bias: 0.0013771422673016787\n", + "Grad encoder.encoder.0.weight: 0.00033886911114677787\n", + "Grad encoder.encoder.0.bias: 0.0012860976858064532\n", + "Grad encoder.encoder.2.weight: 0.00023822396178729832\n", + "Grad encoder.encoder.2.bias: 0.001268362975679338\n", + "Grad encoder.encoder.4.weight: 0.00045234253047965467\n", + "Grad encoder.encoder.4.bias: 0.0031128355767577887\n", + "Grad decoder.fc1.0.weight: 0.00011652393004624173\n", + "Grad decoder.fc1.0.bias: 0.001297541311942041\n", + "Grad decoder.fc1.2.weight: 0.00012182067439425737\n", + "Grad decoder.fc1.2.bias: 0.0016701305285096169\n", + "Grad decoder.fc1.4.weight: 0.000120797791169025\n", + "Grad decoder.fc1.4.bias: 0.001860584132373333\n", + "Grad decoder.fc2.weight: 0.0001914751628646627\n", + "Grad decoder.fc2.bias: 0.003319978713989258\n", + "Grad _memory_unit.weight_ih_l0: 2.5697472665342502e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00012211906141601503\n", + "Grad _memory_unit.bias_hh_l0: 6.216119800228626e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.1823660315712914e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00027115020202472806\n", + "Grad _memory_unit.bias_hh_l1: 0.00014146510511636734\n", + "Data X Sample: tensor([[-0.0042, -0.0029, 0.0060, 0.0109, 0.0000, -0.0074, 0.0031, 0.0014,\n", + " -0.0049, 0.0047, 0.0222, 0.0058, -0.0022, -0.0082, -0.0050, -0.0014,\n", + " 0.0063, -0.0019, 0.0041, -0.0019, 0.0270, 0.0092, 0.0169, -0.0095,\n", + " 0.0094, 0.0209, 0.0320, 0.0245, -0.0069, 0.0131, 0.0000, -0.0055,\n", + " -0.0110, 0.0069, -0.0172, 0.0049, -0.0098, 0.0292, 0.0254, -0.0085,\n", + " 0.0000, 0.0080, 0.0000, 0.0144, -0.0159, 0.0114, 0.0544, -0.0156]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.5030, 0.7862, -0.8590, 1.6004, 1.5285, -0.0672, -0.8594, -1.0952,\n", + " -0.6646, -0.8176, -0.8315, 0.2079, 1.5252, 0.8021, 0.9981, 1.0975,\n", + " 1.0076, -0.4546, -0.0642, -0.2096, -0.5422, 0.1375, -1.6359, 0.9929,\n", + " -0.1123, -0.2864, -0.6413, -0.1752, 0.6630, 0.5371, 0.4320, 0.6983,\n", + " 0.5782, 0.1576, -0.6891, -0.5919, 0.8291, -0.7231, 0.7297, -0.8793,\n", + " -0.6365, -1.2037, -0.3482]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 1.0058, 0.7313, 0.2679, 0.5913, -0.3445, -0.5911, -1.1777, -1.1646,\n", + " -0.8203, -0.7608, -0.8635, 0.4049, 0.4944, 0.6246, 0.2760, 0.4447,\n", + " 0.3939, 0.1227, 0.1427, 0.1288, 0.1155, 0.0829, 0.1633, -0.0276,\n", + " -0.1063, -0.0977, 0.3379, 0.5121, 0.9691, 1.0964, 0.9109, 0.4746,\n", + " 0.8022, 0.6147, 0.3942, 0.3264, -0.0168, -0.0538, 0.1634, -0.8109,\n", + " -0.6682, -0.6027, -0.4801]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0015706752892583609\n", + "Grad encoder.fc1.bias: 0.0009582341881468892\n", + "Grad encoder.encoder.0.weight: 0.00031417535501532257\n", + "Grad encoder.encoder.0.bias: 0.0009435075335204601\n", + "Grad encoder.encoder.2.weight: 0.0002199414448114112\n", + "Grad encoder.encoder.2.bias: 0.001068889512680471\n", + "Grad encoder.encoder.4.weight: 0.00042069406481459737\n", + "Grad encoder.encoder.4.bias: 0.002905589295551181\n", + "Grad decoder.fc1.0.weight: 0.00011083149729529396\n", + "Grad decoder.fc1.0.bias: 0.0012305539567023516\n", + "Grad decoder.fc1.2.weight: 0.00010431824921397492\n", + "Grad decoder.fc1.2.bias: 0.001443403773009777\n", + "Grad decoder.fc1.4.weight: 0.00010362215107306838\n", + "Grad decoder.fc1.4.bias: 0.0015782148111611605\n", + "Grad decoder.fc2.weight: 0.0001591079926583916\n", + "Grad decoder.fc2.bias: 0.002491812687367201\n", + "Grad _memory_unit.weight_ih_l0: 2.067217974399682e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00010822822514455765\n", + "Grad _memory_unit.bias_hh_l0: 5.577184492722154e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.1497824743855745e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00023849718854762614\n", + "Grad _memory_unit.bias_hh_l1: 0.00012522457109298557\n", + "Data X Sample: tensor([[1.7005, 1.9299, 1.9324, 2.1166, 2.1702, 2.4206, 2.4420, 2.6504, 2.5508,\n", + " 2.5749, 2.5791, 2.6155, 2.5854, 2.5574, 2.4790, 2.4725, 2.4482, 2.4354,\n", + " 2.5069, 2.5311, 2.5812, 2.6332, 2.6484, 2.5786, 2.5919, 2.6276, 2.5867,\n", + " 2.6592, 2.3243, 2.3810, 2.3832, 2.3682, 2.2396, 1.4372, 1.9364, 1.7755,\n", + " 1.7325, 1.6034, 1.6290, 1.5235, 1.2695, 0.7149, 0.7397, 1.3003, 1.9068,\n", + " 2.0414, 1.5230, 2.0095]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7445, 0.2373, 0.8191, -0.1847, 1.6528, 0.5898, -1.0404, -0.8305,\n", + " -0.0825, 0.0833, -0.1593, -0.1853, 1.2376, -0.0969, -0.2917, -0.8736,\n", + " -0.0477, -1.0539, 0.0515, 0.4011, 0.0093, 0.4197, 0.9253, 0.9911,\n", + " 1.2581, 0.6827, 0.7012, -0.6730, -0.5401, -0.7272, 0.6250, 0.0919,\n", + " 1.2432, 0.1736, -0.2317, 0.1701, -0.8287, 0.5417, -0.9129, -0.2527,\n", + " 1.0017, 1.0521, 0.1219]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2237, 0.1763, 0.1034, 0.1588, 0.0393, -0.0461, -0.2208, -0.2111,\n", + " -0.1226, -0.1110, -0.1019, 0.1159, 0.1061, 0.1199, 0.0924, 0.1593,\n", + " 0.1056, 0.0667, 0.0573, 0.0442, 0.0378, 0.0274, 0.0448, 0.0274,\n", + " 0.0061, 0.0545, -0.0204, 0.0432, 0.1076, 0.1532, 0.1330, 0.0489,\n", + " 0.1475, 0.1141, 0.0894, 0.0657, 0.0015, 0.0078, 0.0087, -0.1176,\n", + " -0.0980, -0.1522, -0.1306]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.001266862265765667\n", + "Grad encoder.fc1.bias: 0.0007390358368866146\n", + "Grad encoder.encoder.0.weight: 0.0002478002570569515\n", + "Grad encoder.encoder.0.bias: 0.0007910848362371325\n", + "Grad encoder.encoder.2.weight: 0.00016619544476270676\n", + "Grad encoder.encoder.2.bias: 0.0008678666781634092\n", + "Grad encoder.encoder.4.weight: 0.00034627894638106227\n", + "Grad encoder.encoder.4.bias: 0.002777568530291319\n", + "Grad decoder.fc1.0.weight: 8.611691737314686e-05\n", + "Grad decoder.fc1.0.bias: 0.0010108654387295246\n", + "Grad decoder.fc1.2.weight: 8.222088945331052e-05\n", + "Grad decoder.fc1.2.bias: 0.001099355984479189\n", + "Grad decoder.fc1.4.weight: 6.723349360981956e-05\n", + "Grad decoder.fc1.4.bias: 0.0009797154925763607\n", + "Grad decoder.fc2.weight: 0.00011344991798978299\n", + "Grad decoder.fc2.bias: 0.0018950579687952995\n", + "Grad _memory_unit.weight_ih_l0: 1.982051799132023e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.994638821808621e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.0676040700636804e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.126337888825219e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00018001491844188422\n", + "Grad _memory_unit.bias_hh_l1: 9.271208546124399e-05\n", + "Data X Sample: tensor([[1.2815, 1.4915, 1.4921, 1.5984, 1.5777, 1.7443, 1.7517, 1.7916, 1.7478,\n", + " 1.8040, 1.7924, 1.8715, 1.8575, 1.7804, 1.8032, 1.8544, 1.7768, 1.8048,\n", + " 1.8379, 1.8523, 1.9064, 1.8922, 1.9495, 1.9526, 1.9707, 2.0164, 1.9500,\n", + " 1.9781, 1.7832, 1.9487, 1.9212, 1.8956, 1.8084, 1.2266, 1.8506, 1.7780,\n", + " 1.5634, 1.4073, 1.1663, 1.0866, 1.0547, 0.6193, 0.5962, 0.9731, 1.5698,\n", + " 1.6526, 1.0878, 1.5247]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.8524, 0.5849, -0.1047, 2.5480, 0.2301, 1.8701, -1.5542, -0.9799,\n", + " 0.3586, -0.4304, -0.3227, 0.6170, 0.2146, 0.0854, -0.2546, 0.8374,\n", + " 0.7936, 0.3907, 0.4729, 0.3042, -0.6721, 0.7345, -0.8043, -0.5384,\n", + " -0.3867, 1.5122, 0.0591, 0.3042, -0.1160, -0.6887, -0.2667, -0.0995,\n", + " -0.9092, 0.5559, 0.2659, 0.1219, 0.9926, 0.1545, 0.0000, -0.6529,\n", + " -0.6296, -0.6721, 0.8192]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2615, 0.2027, 0.1265, 0.2262, 0.0794, -0.0359, -0.2674, -0.2841,\n", + " -0.1233, -0.1300, -0.1190, 0.1772, 0.1401, 0.1334, 0.1109, 0.1859,\n", + " 0.1341, 0.0861, 0.0961, 0.0548, 0.0629, 0.0431, 0.0838, 0.0384,\n", + " -0.0123, 0.0299, -0.0366, 0.0701, 0.1158, 0.1823, 0.1720, 0.0761,\n", + " 0.1816, 0.1666, 0.1198, 0.0979, 0.0005, 0.0100, 0.0024, -0.1588,\n", + " -0.1320, -0.2191, -0.1635]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00014504589489661157\n", + "Grad encoder.fc1.bias: 9.381369454786181e-05\n", + "Grad encoder.encoder.0.weight: 3.8733189285267144e-05\n", + "Grad encoder.encoder.0.bias: 0.00011612077651079744\n", + "Grad encoder.encoder.2.weight: 4.1509949369356036e-05\n", + "Grad encoder.encoder.2.bias: 0.00018694000027608126\n", + "Grad encoder.encoder.4.weight: 0.00011389116843929514\n", + "Grad encoder.encoder.4.bias: 0.0005316720344126225\n", + "Grad decoder.fc1.0.weight: 5.0895498134195805e-05\n", + "Grad decoder.fc1.0.bias: 0.0004939250648021698\n", + "Grad decoder.fc1.2.weight: 7.797820580890402e-05\n", + "Grad decoder.fc1.2.bias: 0.0010852646082639694\n", + "Grad decoder.fc1.4.weight: 6.88730287947692e-05\n", + "Grad decoder.fc1.4.bias: 0.001079566776752472\n", + "Grad decoder.fc2.weight: 0.00012495138798840344\n", + "Grad decoder.fc2.bias: 0.0017531794728711247\n", + "Grad _memory_unit.weight_ih_l0: 1.0353240213589743e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.570133412722498e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.8435534002492204e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.681836228177417e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.957450674846768e-05\n", + "Grad _memory_unit.bias_hh_l1: 5.25410650880076e-05\n", + "Data X Sample: tensor([[ 0.0149, 0.0146, 0.0180, 0.0175, 0.0102, 0.0221, 0.0123, 0.0185,\n", + " 0.0195, 0.0095, 0.0032, 0.0195, -0.0178, -0.0027, 0.0050, 0.0041,\n", + " -0.0645, -0.0600, -0.0929, -0.0874, -0.0638, -0.0551, -0.1590, -0.1355,\n", + " -0.1013, -0.2194, -0.2318, -0.3548, -0.0520, -0.0688, -0.0840, -0.0663,\n", + " -0.0528, -0.0481, -0.0441, -0.0195, -0.0295, -0.0186, -0.0444, -0.0227,\n", + " 0.0143, -0.0100, 0.0101, -0.0057, 0.0198, 0.0000, 0.0340, 0.0235]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 6.5004e-01, 5.5430e-01, 9.4699e-02, 6.7257e-01, -8.8597e-01,\n", + " -9.1089e-02, -8.8194e-01, -9.2804e-01, -3.2104e-01, -8.3461e-01,\n", + " -7.7156e-01, 1.1576e-01, 8.7784e-02, 8.8103e-01, 6.0472e-01,\n", + " 1.2304e+00, 1.1068e+00, 5.3956e-01, -1.1194e+00, 1.3628e+00,\n", + " -1.1831e+00, 4.8661e-01, -1.3463e-02, 6.9643e-01, 2.3390e-03,\n", + " 2.4159e+00, 9.6987e-01, 1.0397e+00, -4.2458e-01, 1.9920e+00,\n", + " 4.6249e-01, 1.0526e+00, 4.7741e-01, 7.1158e-01, 5.0118e-01,\n", + " -4.7472e-01, 6.2773e-02, -1.7655e-01, 7.2971e-01, -8.2635e-01,\n", + " -4.3188e-01, -9.0305e-01, -1.1668e+00]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.6161, 0.4407, 0.1565, 0.3854, -0.0392, -0.2448, -0.6487, -0.6698,\n", + " -0.3969, -0.4178, -0.4064, 0.3430, 0.2811, 0.3898, 0.2240, 0.3054,\n", + " 0.2636, 0.1422, 0.1690, 0.1082, 0.1075, 0.0661, 0.0984, 0.0300,\n", + " -0.0193, 0.0125, 0.1337, 0.2357, 0.4670, 0.6324, 0.5000, 0.2841,\n", + " 0.4359, 0.4315, 0.2411, 0.1932, -0.0331, 0.0278, 0.1373, -0.4481,\n", + " -0.3916, -0.4125, -0.3414]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 9.41711914492771e-05\n", + "Grad encoder.fc1.bias: 0.0007277898257598281\n", + "Grad encoder.encoder.0.weight: 3.443142122705467e-05\n", + "Grad encoder.encoder.0.bias: 0.0002515222586225718\n", + "Grad encoder.encoder.2.weight: 3.08660019072704e-05\n", + "Grad encoder.encoder.2.bias: 0.00020300349569879472\n", + "Grad encoder.encoder.4.weight: 8.662384061608464e-05\n", + "Grad encoder.encoder.4.bias: 0.000602490734308958\n", + "Grad decoder.fc1.0.weight: 3.8820726331323385e-05\n", + "Grad decoder.fc1.0.bias: 0.0003403297159820795\n", + "Grad decoder.fc1.2.weight: 6.682103412458673e-05\n", + "Grad decoder.fc1.2.bias: 0.0007517974590882659\n", + "Grad decoder.fc1.4.weight: 6.19314523646608e-05\n", + "Grad decoder.fc1.4.bias: 0.0007758509018458426\n", + "Grad decoder.fc2.weight: 0.0001600061950739473\n", + "Grad decoder.fc2.bias: 0.0018439757404848933\n", + "Grad _memory_unit.weight_ih_l0: 8.349933523277286e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.439442298258655e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.8448779883328825e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.363658717920771e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.909573858138174e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.7133962905500084e-05\n", + "Data X Sample: tensor([[1.3918, 1.5483, 1.7911, 1.7186, 1.9909, 1.9904, 1.9890, 2.1607, 3.9373,\n", + " 4.1973, 4.3334, 4.3079, 4.0146, 3.9725, 3.7929, 3.7786, 3.6558, 3.6405,\n", + " 3.5456, 3.5576, 3.5136, 3.5134, 3.1857, 3.0195, 2.8321, 2.9044, 2.9410,\n", + " 2.9243, 2.9557, 3.1540, 3.2196, 3.3602, 3.8171, 2.7920, 4.5493, 4.9253,\n", + " 5.1384, 5.6371, 5.9581, 5.7707, 1.0786, 0.6173, 0.6427, 1.1453, 1.5896,\n", + " 1.7841, 1.1898, 1.8141]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7198, 0.4226, -0.5241, 0.7477, 0.8020, 0.1822, -0.7598, -0.0995,\n", + " -1.1777, 0.0402, -0.9439, -0.4718, -0.8658, -0.3016, -1.0726, -0.1342,\n", + " 1.6756, 0.2976, 1.1931, 1.4610, 0.0634, 0.8795, 0.4931, -0.0254,\n", + " 0.5081, 0.2817, -0.3315, 0.5231, -0.3668, -0.1582, 0.9745, 0.5447,\n", + " 0.0151, 1.0169, 0.0732, 0.4720, 0.9291, -0.6991, -0.2536, -1.1830,\n", + " -0.4259, -0.6936, 0.1491]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.0907, -0.1624, -0.0456, -0.1812, 0.0044, 0.0973, 0.1028, 0.1611,\n", + " 0.0593, 0.1304, 0.1085, -0.1388, -0.0835, -0.1679, -0.0999, -0.1474,\n", + " -0.1450, 0.0086, -0.0239, -0.0742, 0.0015, -0.0582, -0.0406, -0.0145,\n", + " 0.0396, 0.0394, -0.0055, -0.0009, -0.1191, -0.1037, -0.0930, -0.0884,\n", + " -0.1542, -0.1867, -0.1077, -0.1212, -0.0219, 0.0583, 0.0324, 0.0982,\n", + " 0.1782, 0.1891, 0.1857]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00039660761831328273\n", + "Grad encoder.fc1.bias: 0.00046860010479576886\n", + "Grad encoder.encoder.0.weight: 0.00010292739898432046\n", + "Grad encoder.encoder.0.bias: 0.000554471742361784\n", + "Grad encoder.encoder.2.weight: 9.036247502081096e-05\n", + "Grad encoder.encoder.2.bias: 0.0006609003758057952\n", + "Grad encoder.encoder.4.weight: 0.00021477785776369274\n", + "Grad encoder.encoder.4.bias: 0.00204199249856174\n", + "Grad decoder.fc1.0.weight: 8.035580685827881e-05\n", + "Grad decoder.fc1.0.bias: 0.0009281615493819118\n", + "Grad decoder.fc1.2.weight: 0.00010446277156006545\n", + "Grad decoder.fc1.2.bias: 0.0014547903556376696\n", + "Grad decoder.fc1.4.weight: 8.433010225417092e-05\n", + "Grad decoder.fc1.4.bias: 0.001412085723131895\n", + "Grad decoder.fc2.weight: 0.0001384401402901858\n", + "Grad decoder.fc2.bias: 0.001994868041947484\n", + "Grad _memory_unit.weight_ih_l0: 2.6751278710435145e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00015167114906944335\n", + "Grad _memory_unit.bias_hh_l0: 7.712480146437883e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.1880411875608843e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002552164369262755\n", + "Grad _memory_unit.bias_hh_l1: 0.00013273177319206297\n", + "Data X Sample: tensor([[1.5658, 1.8046, 2.0451, 2.1844, 2.2999, 2.5193, 2.5436, 2.6377, 2.6656,\n", + " 2.7187, 2.7377, 2.6213, 2.5277, 2.4320, 2.4563, 2.5054, 2.4608, 2.5127,\n", + " 2.5482, 2.5050, 2.5100, 2.3898, 2.5327, 2.4908, 2.4136, 2.5492, 2.5334,\n", + " 2.5654, 2.1578, 2.4105, 2.2327, 2.2880, 1.9580, 1.2381, 1.7036, 1.6174,\n", + " 1.4926, 1.4841, 1.5339, 1.4044, 1.1884, 0.7209, 0.7680, 1.4294, 1.8949,\n", + " 2.1215, 1.4890, 2.1972]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6114, 0.0341, -0.1898, -1.1642, 1.1827, -0.1137, 0.4283, 0.1441,\n", + " -0.1299, -0.3831, -0.0502, -0.1503, 0.9776, 0.2541, 1.2512, 0.5362,\n", + " 0.6287, 0.6930, 0.1735, 0.2224, -0.2475, 0.0242, 0.1537, -0.0374,\n", + " -0.1847, -0.0374, -0.0921, 0.3286, 0.5372, 0.4544, 0.2517, 0.0324,\n", + " -0.8398, 0.4492, 1.0906, -0.0742, -0.0182, -0.0920, -0.3730, -0.6795,\n", + " -0.0470, 0.1572, -0.3073]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3123, 0.2485, 0.1298, 0.2744, 0.1134, -0.0542, -0.3256, -0.3452,\n", + " -0.1521, -0.1675, -0.1580, 0.2230, 0.1830, 0.1787, 0.1540, 0.2400,\n", + " 0.1794, 0.1159, 0.0956, 0.0770, 0.0898, 0.0765, 0.1137, 0.0366,\n", + " 0.0017, 0.0360, -0.0339, 0.0775, 0.1588, 0.2363, 0.2069, 0.0810,\n", + " 0.2378, 0.2285, 0.1512, 0.1421, -0.0091, 0.0128, 0.0349, -0.1988,\n", + " -0.1870, -0.2792, -0.2291]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.001003338722512126\n", + "Grad encoder.fc1.bias: 0.0008621744345873594\n", + "Grad encoder.encoder.0.weight: 0.00028502638451755047\n", + "Grad encoder.encoder.0.bias: 0.0010304644238203764\n", + "Grad encoder.encoder.2.weight: 0.00021020675194449723\n", + "Grad encoder.encoder.2.bias: 0.0010809698142111301\n", + "Grad encoder.encoder.4.weight: 0.0004355241544544697\n", + "Grad encoder.encoder.4.bias: 0.0030714308377355337\n", + "Grad decoder.fc1.0.weight: 0.00013154615589883178\n", + "Grad decoder.fc1.0.bias: 0.0014047713484615088\n", + "Grad decoder.fc1.2.weight: 0.0001009273182717152\n", + "Grad decoder.fc1.2.bias: 0.0015159021131694317\n", + "Grad decoder.fc1.4.weight: 7.717721746303141e-05\n", + "Grad decoder.fc1.4.bias: 0.0014291510451585054\n", + "Grad decoder.fc2.weight: 0.0001310689258389175\n", + "Grad decoder.fc2.bias: 0.002567724324762821\n", + "Grad _memory_unit.weight_ih_l0: 2.5999552235589363e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00013782564201392233\n", + "Grad _memory_unit.bias_hh_l0: 7.16659560566768e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.4695116078655701e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.000245570729020983\n", + "Grad _memory_unit.bias_hh_l1: 0.0001283942983718589\n", + "Data X Sample: tensor([[1.3504, 1.5060, 1.7235, 1.8914, 1.9379, 2.0022, 2.1800, 2.1110, 3.7128,\n", + " 4.2257, 4.3714, 4.2533, 4.1345, 3.9043, 3.8509, 3.7512, 3.6573, 3.5708,\n", + " 3.5291, 3.5186, 3.5700, 3.3404, 2.9568, 2.8268, 2.7796, 2.8626, 2.9890,\n", + " 3.0345, 2.9002, 3.1998, 3.1041, 3.2994, 3.7401, 2.7691, 4.6057, 4.9374,\n", + " 5.1286, 5.4330, 6.0152, 5.8218, 1.1072, 0.5994, 0.6204, 1.1108, 1.6253,\n", + " 1.8870, 1.2646, 1.7828]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3231, 0.1559, 0.3031, -0.0776, 1.0427, -0.7152, -0.0399, -0.3217,\n", + " 0.5476, -0.3844, 0.2740, 0.7057, 0.1660, 0.5120, 0.1439, 0.0467,\n", + " 0.8691, 0.8464, 0.1926, 0.0708, 0.0175, -0.1620, 0.4592, 0.3952,\n", + " 0.7929, 0.2431, -0.0910, -0.4786, -0.1187, -0.4630, 0.3458, 0.4843,\n", + " 0.4388, -0.6287, -0.4721, 0.1988, 0.1725, 0.4654, 0.9761, -1.0965,\n", + " -0.3350, -0.3345, -0.2621]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.0822, -0.1402, -0.0556, -0.1826, -0.0209, 0.0535, 0.0755, 0.1511,\n", + " 0.0698, 0.1081, 0.0772, -0.0900, -0.0482, -0.1099, -0.0575, -0.1292,\n", + " -0.1273, 0.0029, 0.0047, -0.0840, 0.0012, -0.0226, -0.0438, -0.0109,\n", + " 0.0314, 0.0453, 0.0092, 0.0314, -0.0870, -0.0903, -0.0471, -0.0898,\n", + " -0.0903, -0.1329, -0.0711, -0.0994, -0.0036, 0.0431, 0.0045, 0.0780,\n", + " 0.1799, 0.1674, 0.1704]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0014362878864631057\n", + "Grad encoder.fc1.bias: 0.001198053127154708\n", + "Grad encoder.encoder.0.weight: 0.00036273739533498883\n", + "Grad encoder.encoder.0.bias: 0.0014149846974760294\n", + "Grad encoder.encoder.2.weight: 0.00026074357447214425\n", + "Grad encoder.encoder.2.bias: 0.0015433370135724545\n", + "Grad encoder.encoder.4.weight: 0.0005581473815254867\n", + "Grad encoder.encoder.4.bias: 0.00442107580602169\n", + "Grad decoder.fc1.0.weight: 0.0001693177764536813\n", + "Grad decoder.fc1.0.bias: 0.0018611494451761246\n", + "Grad decoder.fc1.2.weight: 0.00012389021867420524\n", + "Grad decoder.fc1.2.bias: 0.0024154619313776493\n", + "Grad decoder.fc1.4.weight: 0.00010412757546873763\n", + "Grad decoder.fc1.4.bias: 0.0026864069513976574\n", + "Grad decoder.fc2.weight: 0.00016390057862736285\n", + "Grad decoder.fc2.bias: 0.0042528267949819565\n", + "Grad _memory_unit.weight_ih_l0: 3.972717604483478e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00014633891987614334\n", + "Grad _memory_unit.bias_hh_l0: 7.584423292428255e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.8052698578685522e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0003368123434484005\n", + "Grad _memory_unit.bias_hh_l1: 0.00017397174087818712\n", + "Data X Sample: tensor([[1.4343, 1.5410, 1.7836, 1.7602, 1.9328, 2.1200, 2.1646, 2.0215, 3.3027,\n", + " 4.2020, 4.0828, 3.9768, 3.8593, 3.5580, 3.5887, 3.4134, 3.3775, 3.4103,\n", + " 3.4300, 3.4312, 3.3933, 3.3190, 3.0339, 2.8115, 2.7758, 2.7660, 2.7918,\n", + " 2.7612, 2.8170, 2.9345, 3.0691, 3.2358, 3.3705, 2.5768, 4.2454, 4.5702,\n", + " 4.9162, 5.2846, 5.7933, 5.6601, 1.1120, 0.6313, 0.6124, 1.1223, 1.5183,\n", + " 1.6983, 1.0810, 1.6499]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4941, -0.7483, -1.5369, 0.1728, -0.4945, -0.3353, 0.2117, 0.5537,\n", + " 0.3918, 0.6617, 0.5770, 0.0152, 0.6970, -0.5446, -0.0754, 0.4060,\n", + " -0.3093, 3.9070, 0.1034, -0.3885, -0.5701, -0.6386, -0.4529, -0.5225,\n", + " -0.6670, -0.0636, 0.0304, -0.3807, -0.4778, 0.0373, -0.7927, -0.7564,\n", + " -1.1847, -1.1247, 0.3891, -0.6770, 0.0540, 0.1545, 0.7551, 0.6778,\n", + " 0.7829, 0.7241, 0.1981]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.0833, -0.1443, -0.0638, -0.1758, -0.0099, 0.0571, 0.0788, 0.1526,\n", + " 0.0789, 0.1116, 0.0703, -0.0895, -0.0497, -0.1147, -0.0595, -0.1357,\n", + " -0.1177, 0.0037, 0.0044, -0.0852, -0.0052, -0.0216, -0.0437, -0.0116,\n", + " 0.0410, 0.0477, 0.0025, 0.0275, -0.0912, -0.0973, -0.0523, -0.0910,\n", + " -0.0958, -0.1307, -0.0706, -0.0922, -0.0056, 0.0370, 0.0092, 0.0738,\n", + " 0.1779, 0.1744, 0.1745]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00046731901238672435\n", + "Grad encoder.fc1.bias: 0.0004926191177219152\n", + "Grad encoder.encoder.0.weight: 0.00013289449270814657\n", + "Grad encoder.encoder.0.bias: 0.0006131062982603908\n", + "Grad encoder.encoder.2.weight: 0.00010899853077717125\n", + "Grad encoder.encoder.2.bias: 0.0006086342036724091\n", + "Grad encoder.encoder.4.weight: 0.00021930679213255644\n", + "Grad encoder.encoder.4.bias: 0.0014099979307502508\n", + "Grad decoder.fc1.0.weight: 8.080869156401604e-05\n", + "Grad decoder.fc1.0.bias: 0.0007213822100311518\n", + "Grad decoder.fc1.2.weight: 7.838397868908942e-05\n", + "Grad decoder.fc1.2.bias: 0.0007694907253608108\n", + "Grad decoder.fc1.4.weight: 6.268310971790925e-05\n", + "Grad decoder.fc1.4.bias: 0.0006042101886123419\n", + "Grad decoder.fc2.weight: 0.00012334110215306282\n", + "Grad decoder.fc2.bias: 0.0019927620887756348\n", + "Grad _memory_unit.weight_ih_l0: 1.5192925275187008e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.697085675317794e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.124446422792971e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.272212992073037e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00013566683628596365\n", + "Grad _memory_unit.bias_hh_l1: 7.19144954928197e-05\n", + "Data X Sample: tensor([[1.5488, 1.8294, 1.9759, 2.0969, 2.1480, 2.2069, 2.1600, 2.2231, 2.3702,\n", + " 2.3348, 2.3824, 2.4422, 2.3103, 2.3148, 2.2243, 2.1840, 2.1872, 2.3096,\n", + " 2.3748, 2.3507, 2.4904, 2.4984, 2.4170, 2.4259, 2.5056, 2.6250, 2.5334,\n", + " 2.5695, 2.3729, 2.4203, 2.4322, 2.4511, 2.1868, 1.4234, 1.8923, 1.7901,\n", + " 1.6046, 1.5557, 1.5656, 1.5803, 1.3029, 0.7567, 0.7397, 1.3491, 1.9226,\n", + " 2.1729, 1.4210, 1.9235]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4187, 0.8065, 0.0566, 0.0536, 0.6850, 0.3721, -0.6929, -0.2628,\n", + " -0.7355, -0.6212, 0.0333, -0.7169, 0.5778, 1.3294, 1.1474, -0.1149,\n", + " 0.5603, 0.0206, -0.0282, 0.5917, 1.6188, 0.5797, 0.6484, 0.1027,\n", + " 0.2359, 0.0424, 0.3781, 0.3418, 1.7312, 1.0033, 1.2198, -0.3767,\n", + " 0.8177, 0.8933, -0.3466, 1.3540, -1.0105, 0.0000, 1.8119, -0.3527,\n", + " -0.0361, -0.3982, -0.5542]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2684, 0.2075, 0.1089, 0.2424, 0.1087, -0.0387, -0.2853, -0.2927,\n", + " -0.1285, -0.1330, -0.1422, 0.1988, 0.1733, 0.1700, 0.1399, 0.2161,\n", + " 0.1585, 0.1133, 0.0807, 0.0694, 0.0767, 0.0717, 0.1096, 0.0281,\n", + " -0.0037, 0.0320, -0.0333, 0.0711, 0.1365, 0.2065, 0.1665, 0.0680,\n", + " 0.2053, 0.2062, 0.1387, 0.1201, -0.0117, 0.0100, 0.0233, -0.1646,\n", + " -0.1524, -0.2318, -0.2082]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00019871999393217266\n", + "Grad encoder.fc1.bias: 0.00019856131984852254\n", + "Grad encoder.encoder.0.weight: 4.907238690066151e-05\n", + "Grad encoder.encoder.0.bias: 0.0002718954929150641\n", + "Grad encoder.encoder.2.weight: 3.719457163242623e-05\n", + "Grad encoder.encoder.2.bias: 0.0003663423703983426\n", + "Grad encoder.encoder.4.weight: 9.137490269495174e-05\n", + "Grad encoder.encoder.4.bias: 0.0014740073820576072\n", + "Grad decoder.fc1.0.weight: 5.347510887077078e-05\n", + "Grad decoder.fc1.0.bias: 0.000684608705341816\n", + "Grad decoder.fc1.2.weight: 5.594202229985967e-05\n", + "Grad decoder.fc1.2.bias: 0.0007976454216986895\n", + "Grad decoder.fc1.4.weight: 4.66283927380573e-05\n", + "Grad decoder.fc1.4.bias: 0.0007419331232085824\n", + "Grad decoder.fc2.weight: 0.00010350087541155517\n", + "Grad decoder.fc2.bias: 0.001784669584594667\n", + "Grad _memory_unit.weight_ih_l0: 8.045101822062861e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.96117092249915e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.180050382274203e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.2613557929580566e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00014589400961995125\n", + "Grad _memory_unit.bias_hh_l1: 7.67327583162114e-05\n", + "Data X Sample: tensor([[ 0.0180, 0.0087, 0.0180, 0.0219, 0.0017, 0.0147, 0.0123, 0.0142,\n", + " 0.0244, 0.0316, 0.0412, 0.0117, 0.0244, 0.0136, 0.0202, 0.0082,\n", + " -0.1289, -0.1412, -0.1714, -0.1451, -0.1767, -0.1072, -0.1759, -0.1546,\n", + " -0.1333, -0.2769, -0.2504, -0.4405, -0.0347, -0.0852, -0.0770, -0.0525,\n", + " -0.0132, -0.0801, -0.0123, 0.0219, 0.0039, -0.0186, -0.0127, 0.0057,\n", + " -0.0048, 0.0139, 0.0141, 0.0029, -0.0040, 0.0114, 0.0204, 0.0078]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7984, 0.7303, 0.5384, 0.4675, 1.2078, 0.8293, -0.8451, -0.4703,\n", + " -0.5201, -0.0944, -0.4114, 0.1044, 0.1932, 1.3032, -0.4656, -0.1167,\n", + " 0.7482, -0.1771, -1.0838, 0.5091, -0.0623, -1.7223, -0.4432, -0.0116,\n", + " 0.9050, 1.0914, 0.1026, 0.1952, 0.0741, 0.6985, -0.2817, -0.4250,\n", + " 0.3112, 0.7053, 0.5318, -0.2908, 0.5472, -0.0751, -2.2862, -0.4217,\n", + " -0.4303, -0.4513, -0.4284]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5636, 0.3871, 0.1398, 0.3437, 0.0173, -0.1965, -0.6048, -0.6020,\n", + " -0.3530, -0.3843, -0.3689, 0.3436, 0.2722, 0.3998, 0.2316, 0.3015,\n", + " 0.2901, 0.1611, 0.1665, 0.1442, 0.0960, 0.0708, 0.1054, 0.0399,\n", + " -0.0099, 0.0461, 0.1295, 0.1921, 0.4170, 0.5809, 0.4337, 0.2864,\n", + " 0.4015, 0.4326, 0.2430, 0.1834, -0.0609, 0.0225, 0.1146, -0.4127,\n", + " -0.3570, -0.3756, -0.3436]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00010248904436593875\n", + "Grad encoder.fc1.bias: 0.0005274968571029603\n", + "Grad encoder.encoder.0.weight: 4.1594488720875233e-05\n", + "Grad encoder.encoder.0.bias: 0.0003675683110486716\n", + "Grad encoder.encoder.2.weight: 3.339094837429002e-05\n", + "Grad encoder.encoder.2.bias: 0.00039941369323059916\n", + "Grad encoder.encoder.4.weight: 6.918208237038925e-05\n", + "Grad encoder.encoder.4.bias: 0.0005504730506800115\n", + "Grad decoder.fc1.0.weight: 3.48397261404898e-05\n", + "Grad decoder.fc1.0.bias: 0.00036075792741030455\n", + "Grad decoder.fc1.2.weight: 3.8150181353557855e-05\n", + "Grad decoder.fc1.2.bias: 0.00042647519148886204\n", + "Grad decoder.fc1.4.weight: 3.920056769857183e-05\n", + "Grad decoder.fc1.4.bias: 0.0005463528214022517\n", + "Grad decoder.fc2.weight: 0.0001077049455489032\n", + "Grad decoder.fc2.bias: 0.002094709314405918\n", + "Grad _memory_unit.weight_ih_l0: 8.595035978942178e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.318073504487984e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.7336482414975762e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.5367420423426665e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.493823457276449e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.455244586803019e-05\n", + "Data X Sample: tensor([[1.3632, 1.5716, 1.6935, 1.8367, 2.0165, 2.0847, 2.0583, 2.1990, 3.6615,\n", + " 4.2257, 4.2509, 4.1521, 4.0723, 4.0024, 3.8207, 3.6226, 3.4325, 3.5244,\n", + " 3.3990, 3.2861, 3.3050, 3.3512, 3.0267, 2.7542, 2.8040, 2.8940, 2.7625,\n", + " 2.8550, 2.9349, 2.9378, 3.1111, 3.1612, 3.5883, 2.6592, 4.4464, 4.6383,\n", + " 4.9280, 5.2528, 5.6856, 5.5863, 1.0977, 0.6293, 0.6285, 1.1596, 1.5500,\n", + " 1.8070, 1.1558, 1.6499]], device='cuda:0')\n", + "Data Y Sample: tensor([[-3.5385, -0.5878, -1.0749, 0.3919, 0.7959, 0.5974, 0.2369, 0.4419,\n", + " 0.9728, 0.7793, 0.8455, -0.2306, 1.3971, -1.1452, 0.1294, -0.3886,\n", + " -0.3059, 1.3425, -2.0565, -0.0196, 0.0276, 1.2088, -0.2900, -0.4528,\n", + " -1.6323, -0.9895, -1.4017, -0.0946, -0.2380, -0.8286, -0.9240, -1.1579,\n", + " -0.4417, -0.6648, 0.6555, -1.1142, 0.0000, -0.0911, 0.0000, 0.7168,\n", + " 0.7588, 0.6295, 1.3798]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.0724, -0.1590, -0.0857, -0.1736, 0.0654, 0.1083, 0.1179, 0.1703,\n", + " 0.0999, 0.1358, 0.0579, -0.1152, -0.0744, -0.1444, -0.0846, -0.1716,\n", + " -0.0980, 0.0199, -0.0041, -0.0757, -0.0143, -0.0358, -0.0409, 0.0038,\n", + " 0.0701, 0.0571, -0.0289, 0.0226, -0.1338, -0.1408, -0.0805, -0.0937,\n", + " -0.1498, -0.1624, -0.1059, -0.0766, -0.0284, 0.0280, 0.0554, 0.0436,\n", + " 0.1768, 0.2226, 0.2084]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00015230067947413772\n", + "Grad encoder.fc1.bias: 0.00046311583719216287\n", + "Grad encoder.encoder.0.weight: 4.334221011959016e-05\n", + "Grad encoder.encoder.0.bias: 0.00031939696054905653\n", + "Grad encoder.encoder.2.weight: 5.546244574361481e-05\n", + "Grad encoder.encoder.2.bias: 0.00036603055195882916\n", + "Grad encoder.encoder.4.weight: 0.00013858330203220248\n", + "Grad encoder.encoder.4.bias: 0.0007911041611805558\n", + "Grad decoder.fc1.0.weight: 6.772657070541754e-05\n", + "Grad decoder.fc1.0.bias: 0.0005287842941470444\n", + "Grad decoder.fc1.2.weight: 0.00010336697596358135\n", + "Grad decoder.fc1.2.bias: 0.0010686132591217756\n", + "Grad decoder.fc1.4.weight: 7.84353178460151e-05\n", + "Grad decoder.fc1.4.bias: 0.0010361361782997847\n", + "Grad decoder.fc2.weight: 0.0001306003105128184\n", + "Grad decoder.fc2.bias: 0.0017817290499806404\n", + "Grad _memory_unit.weight_ih_l0: 1.6235268049058504e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.268706470611505e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.2521027858601883e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.79435686126817e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010438001481816173\n", + "Grad _memory_unit.bias_hh_l1: 5.453053745441139e-05\n", + "Data X Sample: tensor([[ 0.0180, 0.0218, 0.0180, 0.0262, 0.0068, 0.0250, 0.0200, 0.0170,\n", + " 0.0537, 0.0300, 0.0286, 0.0214, 0.0178, 0.0436, 0.0126, 0.0178,\n", + " -0.1368, -0.1606, -0.1879, -0.1692, -0.2036, -0.1056, -0.1880, -0.2042,\n", + " -0.1577, -0.3369, -0.3090, -0.5588, -0.0624, -0.1015, -0.0665, -0.0663,\n", + " -0.0220, -0.0732, -0.0025, 0.0000, -0.0079, 0.0000, 0.0063, 0.0199,\n", + " 0.0048, 0.0119, -0.0040, 0.0172, 0.0119, 0.0572, -0.0136, 0.0313]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2563, 0.2989, 1.0765, 0.6458, 0.7345, -0.0628, 1.5073, -0.8859,\n", + " 0.8762, 1.0248, 0.9490, -0.5662, -1.2257, 0.3556, -0.8488, -0.8284,\n", + " -0.7210, -0.1693, -0.0807, 0.1428, -0.2817, -1.7921, 0.0422, -1.4139,\n", + " -0.6116, -0.7416, -1.0787, 0.8009, -0.1150, 0.5939, -0.1339, -0.9260,\n", + " -0.6802, 0.6017, 0.2791, 0.1790, -0.7582, 0.7428, 0.5660, 0.3485,\n", + " -1.2888, -0.6568, -0.7191]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5200, 0.3548, 0.1318, 0.3166, 0.0348, -0.1789, -0.5665, -0.5508,\n", + " -0.3229, -0.3513, -0.3420, 0.3223, 0.2551, 0.3736, 0.2163, 0.2956,\n", + " 0.2800, 0.1592, 0.1478, 0.1519, 0.0895, 0.0668, 0.1036, 0.0424,\n", + " -0.0057, 0.0637, 0.1088, 0.1729, 0.3753, 0.5212, 0.3887, 0.2710,\n", + " 0.3759, 0.4039, 0.2269, 0.1762, -0.0659, 0.0147, 0.0889, -0.3857,\n", + " -0.3246, -0.3446, -0.3258]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00015772305778227746\n", + "Grad encoder.fc1.bias: 0.00010949446732411161\n", + "Grad encoder.encoder.0.weight: 3.887190541718155e-05\n", + "Grad encoder.encoder.0.bias: 0.0001295628899242729\n", + "Grad encoder.encoder.2.weight: 3.628145714174025e-05\n", + "Grad encoder.encoder.2.bias: 0.0002160409785574302\n", + "Grad encoder.encoder.4.weight: 7.473536243196577e-05\n", + "Grad encoder.encoder.4.bias: 0.0007189583848230541\n", + "Grad decoder.fc1.0.weight: 4.000866101705469e-05\n", + "Grad decoder.fc1.0.bias: 0.0003705999697558582\n", + "Grad decoder.fc1.2.weight: 4.701327998191118e-05\n", + "Grad decoder.fc1.2.bias: 0.00045259451144374907\n", + "Grad decoder.fc1.4.weight: 3.841172292595729e-05\n", + "Grad decoder.fc1.4.bias: 0.00046200252836570144\n", + "Grad decoder.fc2.weight: 8.258482557721436e-05\n", + "Grad decoder.fc2.bias: 0.001718106446787715\n", + "Grad _memory_unit.weight_ih_l0: 9.70366545516299e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.6477580326609313e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.4558763470849954e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.0233602451044135e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.262140909209847e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.3453161197248846e-05\n", + "Data X Sample: tensor([[1.4841, 1.4813, 1.6769, 1.8717, 1.9653, 2.0685, 2.1384, 2.5312, 3.8470,\n", + " 4.2305, 4.2097, 4.1988, 3.9969, 3.8470, 3.7248, 3.7211, 3.6338, 3.6656,\n", + " 3.7088, 3.5632, 3.3958, 3.3297, 2.8942, 2.7581, 2.7777, 2.8626, 2.8211,\n", + " 3.0549, 2.8898, 3.0459, 3.1671, 3.3022, 3.8105, 2.7828, 4.6425, 4.8620,\n", + " 5.0283, 5.4993, 5.9328, 5.8700, 1.0309, 0.6193, 0.6184, 1.0678, 1.6095,\n", + " 1.6926, 1.1626, 1.7437]], device='cuda:0')\n", + "Data Y Sample: tensor([[-3.2815e-01, -3.3014e-01, -3.3286e-01, -3.5201e-01, -1.2350e+00,\n", + " 3.9902e-01, 5.9877e-01, 6.1444e-01, 1.0437e+00, 6.6597e-01,\n", + " 7.3652e-01, -3.0608e-01, -1.8599e-02, -5.1178e-01, 3.7180e-01,\n", + " -4.1765e-01, -9.8484e-02, 2.9218e-02, 2.9499e+00, 3.8312e-02,\n", + " 4.9738e-02, 6.5856e-01, 6.7137e-02, 2.7116e-01, -2.3957e-01,\n", + " 1.2793e+00, 3.0535e-01, 1.2589e+00, -6.7102e-01, 1.6325e-01,\n", + " -1.5856e-01, -9.7433e-02, -3.0888e-01, -5.2303e-01, 2.6906e-01,\n", + " 3.4690e-01, -1.0781e-03, 0.0000e+00, 1.1148e+00, 6.1073e-01,\n", + " 6.2962e-01, 8.3434e-01, -5.6685e-02]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1065, -0.2254, -0.1317, -0.2280, 0.0759, 0.1277, 0.1603, 0.2266,\n", + " 0.1441, 0.1715, 0.0877, -0.1437, -0.0950, -0.1834, -0.1155, -0.2363,\n", + " -0.1253, 0.0036, -0.0130, -0.0973, -0.0269, -0.0397, -0.0515, -0.0008,\n", + " 0.0889, 0.0786, -0.0249, 0.0282, -0.1709, -0.1797, -0.0994, -0.1254,\n", + " -0.1665, -0.2028, -0.1474, -0.0838, -0.0432, 0.0118, 0.0641, 0.0800,\n", + " 0.2287, 0.2929, 0.2602]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00028342893347144127\n", + "Grad encoder.fc1.bias: 0.0011093789944425225\n", + "Grad encoder.encoder.0.weight: 8.536988752894104e-05\n", + "Grad encoder.encoder.0.bias: 0.0008603812311775982\n", + "Grad encoder.encoder.2.weight: 9.557117300573736e-05\n", + "Grad encoder.encoder.2.bias: 0.0007856219308450818\n", + "Grad encoder.encoder.4.weight: 0.00029834528686478734\n", + "Grad encoder.encoder.4.bias: 0.001936833723448217\n", + "Grad decoder.fc1.0.weight: 0.0001313465618295595\n", + "Grad decoder.fc1.0.bias: 0.0011647422797977924\n", + "Grad decoder.fc1.2.weight: 0.00018926618213299662\n", + "Grad decoder.fc1.2.bias: 0.002046828158199787\n", + "Grad decoder.fc1.4.weight: 0.00013200948887970299\n", + "Grad decoder.fc1.4.bias: 0.001705168280750513\n", + "Grad decoder.fc2.weight: 0.0001632214116398245\n", + "Grad decoder.fc2.bias: 0.0012707518180832267\n", + "Grad _memory_unit.weight_ih_l0: 3.8123249396448955e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00011861070379382\n", + "Grad _memory_unit.bias_hh_l0: 6.280847446760163e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.561699900776148e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00022184563567861915\n", + "Grad _memory_unit.bias_hh_l1: 0.00011896318756043911\n", + "Data X Sample: tensor([[1.6040, 1.8847, 2.0556, 2.1428, 2.3119, 2.3970, 2.4404, 2.5113, 2.5411,\n", + " 2.5765, 2.5823, 2.7090, 2.4589, 2.4565, 2.5093, 2.4288, 2.4215, 2.4276,\n", + " 2.5420, 2.4660, 2.5689, 2.5627, 2.5110, 2.5252, 2.4474, 2.5701, 2.5201,\n", + " 2.5083, 2.2029, 2.3712, 2.3377, 2.3847, 2.3078, 1.4440, 1.9242, 1.7609,\n", + " 1.6164, 1.5159, 1.6100, 1.6399, 1.2313, 0.7229, 0.8064, 1.2113, 1.8751,\n", + " 2.0185, 1.4482, 2.1268]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.1369, 0.7109, 0.3528, 0.2109, -0.5688, -0.4697, -0.9944, -1.0700,\n", + " -0.0698, -0.8819, -0.5141, 0.6191, -0.5037, 0.3026, -1.2617, 0.4680,\n", + " -0.5612, 3.0605, -0.3713, -1.2218, -0.4203, -1.8660, -0.6418, -0.0709,\n", + " 0.1756, -0.3340, -0.0038, 0.4424, 0.6377, 1.1109, 1.4416, 1.4328,\n", + " 0.9014, 0.2034, 0.9382, 0.0045, 0.0033, -0.6173, -0.4942, -0.6682,\n", + " -0.8048, -0.8794, -0.8715]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2432, 0.1847, 0.0721, 0.1803, 0.0665, -0.0618, -0.2616, -0.2308,\n", + " -0.1106, -0.1118, -0.1501, 0.1511, 0.1638, 0.1869, 0.1374, 0.2043,\n", + " 0.1386, 0.0988, 0.0471, 0.0699, 0.0444, 0.0574, 0.0881, 0.0070,\n", + " 0.0056, 0.0519, -0.0200, 0.0557, 0.1344, 0.1823, 0.1194, 0.0671,\n", + " 0.1732, 0.1772, 0.1010, 0.0840, -0.0149, 0.0090, 0.0119, -0.1404,\n", + " -0.1213, -0.1727, -0.1952]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00032425980316475034\n", + "Grad encoder.fc1.bias: 0.0003376687236595899\n", + "Grad encoder.encoder.0.weight: 7.003535574767739e-05\n", + "Grad encoder.encoder.0.bias: 0.00031151645816862583\n", + "Grad encoder.encoder.2.weight: 5.551390495384112e-05\n", + "Grad encoder.encoder.2.bias: 0.0003859231946989894\n", + "Grad encoder.encoder.4.weight: 0.00014874279440846294\n", + "Grad encoder.encoder.4.bias: 0.0010777240386232734\n", + "Grad decoder.fc1.0.weight: 5.984384915791452e-05\n", + "Grad decoder.fc1.0.bias: 0.0005544570740312338\n", + "Grad decoder.fc1.2.weight: 8.067033922998235e-05\n", + "Grad decoder.fc1.2.bias: 0.0009192383731715381\n", + "Grad decoder.fc1.4.weight: 6.840772402938455e-05\n", + "Grad decoder.fc1.4.bias: 0.0010446582455188036\n", + "Grad decoder.fc2.weight: 0.00011071308108512312\n", + "Grad decoder.fc2.bias: 0.0014783655060455203\n", + "Grad _memory_unit.weight_ih_l0: 1.3303787454788107e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.089473804924637e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.168349237763323e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.690232112305239e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010786847997223958\n", + "Grad _memory_unit.bias_hh_l1: 5.595075344899669e-05\n", + "Data X Sample: tensor([[1.3345, 1.4682, 1.6183, 1.8345, 1.8679, 2.1539, 2.1862, 1.9946, 2.9976,\n", + " 3.9777, 4.3143, 4.2319, 4.0502, 3.8334, 3.8232, 3.5803, 3.5457, 3.6966,\n", + " 3.4093, 3.4349, 3.3884, 3.4231, 2.9448, 2.8630, 2.8922, 2.8026, 2.9916,\n", + " 3.1201, 2.9210, 3.1605, 3.2580, 3.4099, 3.7995, 2.8881, 4.5935, 5.0371,\n", + " 5.3449, 5.5417, 6.3194, 6.1254, 1.0309, 0.6134, 0.6124, 1.0362, 1.6253,\n", + " 1.8070, 1.1694, 1.6420]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1469, 0.2239, 1.2800, -0.1095, 2.4359, -0.4984, -0.2912, -0.2438,\n", + " -0.1900, 0.0456, -0.2236, 0.3468, 1.5913, 0.8590, 1.0635, 1.9774,\n", + " 0.9295, -0.2829, 0.4527, -0.3936, 0.1830, 0.4984, -0.0475, 0.1012,\n", + " 0.1871, 0.1368, 0.0629, -0.7200, 0.4388, -0.3990, -0.0545, -0.7069,\n", + " 0.1035, 0.0607, -1.2469, -1.3159, -0.2169, -0.6223, -0.0482, 0.1506,\n", + " -0.1755, -0.4941, -0.1302]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2333, -0.4066, -0.2619, -0.3920, 0.0139, 0.1386, 0.2250, 0.3478,\n", + " 0.2311, 0.2402, 0.1695, -0.1744, -0.1403, -0.2369, -0.1788, -0.3831,\n", + " -0.2114, -0.0869, -0.0427, -0.1780, -0.0719, -0.0459, -0.0943, -0.0396,\n", + " 0.0974, 0.0984, 0.0351, 0.0588, -0.2325, -0.2343, -0.1226, -0.2030,\n", + " -0.1263, -0.2608, -0.2118, -0.1399, -0.0892, -0.0277, 0.0268, 0.2347,\n", + " 0.3490, 0.4310, 0.3390]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00010494723392184824\n", + "Grad encoder.fc1.bias: 0.0011953942012041807\n", + "Grad encoder.encoder.0.weight: 4.501298099057749e-05\n", + "Grad encoder.encoder.0.bias: 0.0009409254416823387\n", + "Grad encoder.encoder.2.weight: 4.7209767217282206e-05\n", + "Grad encoder.encoder.2.bias: 0.0008900546235963702\n", + "Grad encoder.encoder.4.weight: 0.0001483962987549603\n", + "Grad encoder.encoder.4.bias: 0.002511638682335615\n", + "Grad decoder.fc1.0.weight: 8.066706504905596e-05\n", + "Grad decoder.fc1.0.bias: 0.0009714380139485002\n", + "Grad decoder.fc1.2.weight: 9.834140655584633e-05\n", + "Grad decoder.fc1.2.bias: 0.0009033931419253349\n", + "Grad decoder.fc1.4.weight: 8.57429695315659e-05\n", + "Grad decoder.fc1.4.bias: 0.0009267317946068943\n", + "Grad decoder.fc2.weight: 0.00017473503248766065\n", + "Grad decoder.fc2.bias: 0.0021892436780035496\n", + "Grad _memory_unit.weight_ih_l0: 1.8466338588041253e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00017978429968934506\n", + "Grad _memory_unit.bias_hh_l0: 9.271676390198991e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.1967919817834627e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002804239047691226\n", + "Grad _memory_unit.bias_hh_l1: 0.00014749192632734776\n", + "Data X Sample: tensor([[1.2709, 1.4958, 1.6829, 1.8170, 1.9806, 2.1186, 2.1184, 2.1592, 2.2823,\n", + " 2.3001, 2.2619, 2.4149, 2.2614, 2.1621, 2.2294, 2.2113, 2.1479, 2.1994,\n", + " 2.1930, 2.2781, 2.2230, 2.2474, 2.2483, 2.1568, 2.0326, 2.0921, 2.0006,\n", + " 2.1657, 1.8213, 1.8603, 1.8582, 1.8735, 1.8634, 1.2724, 1.8776, 1.7804,\n", + " 1.4906, 1.2509, 1.1029, 1.0895, 1.0834, 0.6831, 0.6285, 1.1194, 1.7601,\n", + " 1.8470, 1.2238, 1.8062]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.2416, 1.0204, 0.7938, -0.7815, 0.7584, 0.2081, -1.5933, -1.1072,\n", + " -0.8772, -0.8723, -0.7311, -1.1496, 0.5626, 0.5128, 0.9584, 0.9728,\n", + " 0.1049, -0.1117, -0.5878, -0.0702, -0.7138, -0.0566, 1.1098, -0.9318,\n", + " -0.2686, -0.0189, 1.5803, 0.3809, 2.1182, 0.8460, 1.0575, 1.3585,\n", + " 0.9241, 0.8783, 0.8792, 0.2834, 0.7316, 0.1005, -0.7367, -0.9213,\n", + " -0.7404, -0.6586, -0.6933]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2523, 0.1889, 0.0792, 0.1874, 0.0617, -0.0776, -0.2925, -0.2488,\n", + " -0.1277, -0.1253, -0.1594, 0.1556, 0.1771, 0.2014, 0.1369, 0.2045,\n", + " 0.1499, 0.1157, 0.0481, 0.0895, 0.0372, 0.0517, 0.0837, 0.0145,\n", + " 0.0166, 0.0694, -0.0117, 0.0753, 0.1569, 0.1986, 0.1410, 0.0872,\n", + " 0.1785, 0.2011, 0.1024, 0.0738, -0.0133, 0.0169, 0.0048, -0.1495,\n", + " -0.1260, -0.1716, -0.2017]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005191758973523974\n", + "Grad encoder.fc1.bias: 0.00042298101470805705\n", + "Grad encoder.encoder.0.weight: 0.00011552663636393845\n", + "Grad encoder.encoder.0.bias: 0.0003854905371554196\n", + "Grad encoder.encoder.2.weight: 9.262295498047024e-05\n", + "Grad encoder.encoder.2.bias: 0.0005413382314145565\n", + "Grad encoder.encoder.4.weight: 0.00023531619808636606\n", + "Grad encoder.encoder.4.bias: 0.0011354549787938595\n", + "Grad decoder.fc1.0.weight: 8.734524453757331e-05\n", + "Grad decoder.fc1.0.bias: 0.0005832460010424256\n", + "Grad decoder.fc1.2.weight: 0.00012860374408774078\n", + "Grad decoder.fc1.2.bias: 0.0010844123316928744\n", + "Grad decoder.fc1.4.weight: 8.899137901607901e-05\n", + "Grad decoder.fc1.4.bias: 0.0009427180048078299\n", + "Grad decoder.fc2.weight: 0.00017209950601682067\n", + "Grad decoder.fc2.bias: 0.0024444512091577053\n", + "Grad _memory_unit.weight_ih_l0: 3.7797053664689884e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.967982335481793e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.7921403418295085e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.404141767125111e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00014897620712872595\n", + "Grad _memory_unit.bias_hh_l1: 7.785514753777534e-05\n", + "Data X Sample: tensor([[1.4056, 1.6779, 1.7656, 1.8279, 1.9106, 2.0552, 2.1893, 2.5965, 4.3450,\n", + " 4.4137, 4.2826, 4.3059, 4.2011, 4.0106, 3.8837, 3.7061, 3.6982, 3.6869,\n", + " 3.5725, 3.6450, 3.6559, 3.4124, 3.0171, 2.8955, 2.8565, 3.0350, 3.0582,\n", + " 3.2017, 3.2680, 3.4192, 3.4085, 3.5067, 3.8369, 2.8698, 4.6057, 4.9642,\n", + " 5.1502, 5.4648, 5.9581, 5.8076, 1.1311, 0.6651, 0.6407, 1.0219, 1.5658,\n", + " 1.7898, 1.2578, 1.7437]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1112, -0.8343, -0.7082, -0.8914, -0.0559, 0.7115, 0.3663, 0.4649,\n", + " 0.9923, 0.2409, 0.5414, -1.1864, 0.3250, -1.0602, -0.7519, 0.0154,\n", + " -0.9789, 1.6738, 0.0712, 0.0445, 0.1775, -1.3882, 0.7912, -0.5916,\n", + " -0.8179, -0.3511, -1.0351, -0.7572, 0.2052, 0.1357, -0.0560, 0.1068,\n", + " -0.3778, -0.5203, -1.0213, -0.4063, -0.2391, -0.6411, 0.4404, 0.4189,\n", + " 0.3693, 0.6023, 1.2474]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2588, -0.4404, -0.2615, -0.3587, 0.0163, 0.1541, 0.2502, 0.3751,\n", + " 0.2692, 0.2537, 0.1997, -0.1880, -0.1332, -0.2693, -0.2098, -0.4157,\n", + " -0.2030, -0.0817, -0.0463, -0.1861, -0.0864, -0.0322, -0.0783, -0.0451,\n", + " 0.1071, 0.1140, -0.0108, 0.0326, -0.2478, -0.2423, -0.1573, -0.2155,\n", + " -0.1531, -0.2745, -0.2116, -0.1563, -0.0805, -0.0462, 0.0274, 0.2674,\n", + " 0.3819, 0.4531, 0.3554]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002062715357169509\n", + "Grad encoder.fc1.bias: 0.0008849248988553882\n", + "Grad encoder.encoder.0.weight: 5.6787852372508496e-05\n", + "Grad encoder.encoder.0.bias: 0.0005991189391352236\n", + "Grad encoder.encoder.2.weight: 5.1738981710514054e-05\n", + "Grad encoder.encoder.2.bias: 0.000529857468791306\n", + "Grad encoder.encoder.4.weight: 0.0001282830344280228\n", + "Grad encoder.encoder.4.bias: 0.0007388911908492446\n", + "Grad decoder.fc1.0.weight: 5.909793253522366e-05\n", + "Grad decoder.fc1.0.bias: 0.0004084176034666598\n", + "Grad decoder.fc1.2.weight: 8.29315249575302e-05\n", + "Grad decoder.fc1.2.bias: 0.0008005693089216948\n", + "Grad decoder.fc1.4.weight: 6.254408071981743e-05\n", + "Grad decoder.fc1.4.bias: 0.0007365104393102229\n", + "Grad decoder.fc2.weight: 0.00013969647989142686\n", + "Grad decoder.fc2.bias: 0.0017169788479804993\n", + "Grad _memory_unit.weight_ih_l0: 1.3944825695944019e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.2497795725939795e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.3180246241972782e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.466694230766734e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.210488209035248e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.340373586979695e-05\n", + "Data X Sample: tensor([[ 0.0064, 0.0204, 0.0135, 0.0262, 0.0137, 0.0354, 0.0431, 0.0554,\n", + " 0.0488, 0.0790, 0.0888, 0.0935, 0.1043, 0.1036, 0.1059, 0.1477,\n", + " 0.1478, 0.1760, 0.1714, 0.1711, 0.1987, 0.1715, 0.1976, 0.1661,\n", + " 0.1727, 0.1802, 0.2025, 0.2284, 0.1318, 0.1539, 0.1575, 0.1520,\n", + " 0.1100, 0.0984, 0.1397, 0.1532, 0.1377, 0.1776, 0.1458, 0.1816,\n", + " 0.0525, 0.0060, 0.0121, 0.0344, 0.0515, 0.0457, 0.0476, -0.0078]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3335, 0.9999, -0.7638, 0.0299, 0.2507, 1.0010, -0.1267, -0.4951,\n", + " 0.1180, -0.2634, -0.3445, 0.3070, 1.0689, -0.3772, -0.6081, 0.5380,\n", + " -0.2924, -0.2453, 0.2388, -0.3384, -0.9223, 0.4602, 0.7204, 1.2372,\n", + " -0.2218, -0.5333, -0.9588, 1.0562, 0.9276, 0.3341, 1.0577, 0.9998,\n", + " 0.6519, 0.4427, -0.1204, 0.6518, -1.0105, 0.9093, -0.0156, -0.3124,\n", + " -0.3952, -0.5508, -0.6405]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4755, 0.3170, 0.1299, 0.2991, 0.0702, -0.1709, -0.5369, -0.5240,\n", + " -0.2994, -0.3321, -0.3304, 0.2909, 0.2458, 0.3586, 0.2093, 0.2931,\n", + " 0.2718, 0.1697, 0.1152, 0.1770, 0.0696, 0.0734, 0.1110, 0.0495,\n", + " 0.0185, 0.0805, 0.0611, 0.1600, 0.3500, 0.4692, 0.3473, 0.2875,\n", + " 0.3504, 0.3934, 0.2111, 0.1690, -0.0715, 0.0110, 0.0504, -0.3754,\n", + " -0.3130, -0.3363, -0.3094]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00018663359514903277\n", + "Grad encoder.fc1.bias: 0.00021991919493302703\n", + "Grad encoder.encoder.0.weight: 4.995681956643239e-05\n", + "Grad encoder.encoder.0.bias: 0.00018884397286456078\n", + "Grad encoder.encoder.2.weight: 4.504418029682711e-05\n", + "Grad encoder.encoder.2.bias: 0.00024400537949986756\n", + "Grad encoder.encoder.4.weight: 0.00013450402184389532\n", + "Grad encoder.encoder.4.bias: 0.0006437161355279386\n", + "Grad decoder.fc1.0.weight: 5.502960993908346e-05\n", + "Grad decoder.fc1.0.bias: 0.0004041032516397536\n", + "Grad decoder.fc1.2.weight: 7.557818753411993e-05\n", + "Grad decoder.fc1.2.bias: 0.0007039627525955439\n", + "Grad decoder.fc1.4.weight: 6.570979894604534e-05\n", + "Grad decoder.fc1.4.bias: 0.0007959957583807409\n", + "Grad decoder.fc2.weight: 0.00014144921442493796\n", + "Grad decoder.fc2.bias: 0.0019519329071044922\n", + "Grad _memory_unit.weight_ih_l0: 1.703316593193449e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.045001383521594e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.1617666132224258e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.652962383668637e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.684498268645257e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.1155333747155964e-05\n", + "Data X Sample: tensor([[ 0.0095, 0.0073, 0.0150, 0.0219, -0.0068, 0.0044, 0.0185, 0.0142,\n", + " -0.0073, 0.0047, -0.0286, -0.0117, -0.0178, -0.0463, -0.0303, -0.0014,\n", + " 0.0267, 0.0445, 0.0103, -0.0037, 0.0564, 0.0077, -0.0506, -0.0420,\n", + " -0.0319, -0.0810, -0.0826, -0.1346, 0.0139, -0.0262, -0.0350, -0.0525,\n", + " -0.0550, -0.0229, -0.0662, -0.0195, -0.0157, -0.0239, -0.0507, 0.0000,\n", + " -0.0191, 0.0060, -0.0081, 0.0144, 0.0119, -0.0114, 0.0476, 0.0860]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.2789e+00, 2.6210e+00, -1.2065e+00, 4.9855e-02, 1.5824e-01,\n", + " 1.0972e+00, -8.5823e-02, -7.8805e-01, 7.7441e-01, 1.2366e+00,\n", + " 9.8022e-01, 1.5725e+00, 2.9237e-01, 1.1199e+00, -1.7972e-03,\n", + " 1.5785e-01, 7.0949e-01, -4.0545e-02, 4.3300e-01, -3.4147e-01,\n", + " 4.1903e-01, 7.0011e-01, -7.3704e-01, 5.4721e-01, 1.0692e+00,\n", + " 1.3153e+00, 4.9866e-01, -7.8824e-01, -6.4224e-01, -2.2266e-01,\n", + " -1.8175e+00, -1.3003e+00, 8.4868e-01, 2.3567e-01, -6.2963e-01,\n", + " 2.6203e-01, -8.1308e-01, -4.0306e-01, -7.1302e-01, -4.7572e-02,\n", + " 2.7358e-01, 1.7466e+00, 1.1429e+00]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 5.7753e-01, 3.8678e-01, 1.5264e-01, 3.6510e-01, 7.1612e-02,\n", + " -2.0922e-01, -6.4126e-01, -6.3383e-01, -3.5925e-01, -4.0696e-01,\n", + " -3.9730e-01, 3.4638e-01, 2.8020e-01, 4.2710e-01, 2.3872e-01,\n", + " 3.3783e-01, 3.4946e-01, 1.8799e-01, 1.3100e-01, 2.0797e-01,\n", + " 8.0640e-02, 8.6869e-02, 1.2386e-01, 5.9585e-02, 2.4673e-02,\n", + " 9.2361e-02, 7.9315e-02, 1.8345e-01, 4.3478e-01, 5.6162e-01,\n", + " 4.2205e-01, 3.6322e-01, 4.2892e-01, 4.6844e-01, 2.6163e-01,\n", + " 2.0571e-01, -8.9568e-02, -3.2742e-04, 6.3703e-02, -4.6463e-01,\n", + " -3.9073e-01, -4.0250e-01, -3.7027e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002805717522278428\n", + "Grad encoder.fc1.bias: 0.0003211317234672606\n", + "Grad encoder.encoder.0.weight: 6.7629232944455e-05\n", + "Grad encoder.encoder.0.bias: 0.0002629398659337312\n", + "Grad encoder.encoder.2.weight: 4.545782576315105e-05\n", + "Grad encoder.encoder.2.bias: 0.0002896138757932931\n", + "Grad encoder.encoder.4.weight: 0.00013205087452661246\n", + "Grad encoder.encoder.4.bias: 0.0007096012122929096\n", + "Grad decoder.fc1.0.weight: 7.588681182824075e-05\n", + "Grad decoder.fc1.0.bias: 0.0004561314999591559\n", + "Grad decoder.fc1.2.weight: 0.00010543855023570359\n", + "Grad decoder.fc1.2.bias: 0.0007586297579109669\n", + "Grad decoder.fc1.4.weight: 7.849794928915799e-05\n", + "Grad decoder.fc1.4.bias: 0.0007586849387735128\n", + "Grad decoder.fc2.weight: 0.00014436365745496005\n", + "Grad decoder.fc2.bias: 0.0019172313623130322\n", + "Grad _memory_unit.weight_ih_l0: 1.620673356228508e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.912133615813218e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.177967326133512e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.012830221559852e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.582520968047902e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.647174500860274e-05\n", + "Data X Sample: tensor([[1.7705, 2.3814, 2.6672, 2.9518, 3.0734, 3.1263, 3.1799, 3.3276, 3.1831,\n", + " 3.4912, 3.5657, 3.4802, 3.3267, 3.2200, 3.2179, 3.1823, 3.1935, 3.3213,\n", + " 3.2318, 3.3735, 3.1013, 3.2057, 3.1568, 2.8783, 2.7458, 2.6197, 2.4908,\n", + " 2.5777, 2.1821, 2.1223, 1.9702, 1.9067, 1.6632, 1.1008, 1.6815, 1.8825,\n", + " 1.9783, 2.2607, 2.6812, 2.7123, 1.6466, 0.9420, 0.9681, 1.7165, 2.3904,\n", + " 2.8591, 1.9377, 2.5412]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4450, 0.6184, 0.1440, -0.5044, -1.1846, 0.2434, -0.8753, -0.4276,\n", + " 0.2679, -0.1827, 0.1962, 0.1914, 0.7273, 1.3509, -0.8846, 0.4743,\n", + " -0.1987, -5.2901, -1.0105, 0.0400, 0.2820, 0.5226, 1.3364, 1.1017,\n", + " 1.0260, 0.2780, 0.2058, 0.2039, 0.6784, -0.2870, 0.4509, 0.0872,\n", + " 0.7727, 0.3473, 1.0009, 0.1063, 0.5815, 0.4465, -0.5252, -0.1079,\n", + " -0.1455, -0.4502, 0.2195]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1505, -0.2093, -0.1262, -0.2332, -0.0879, 0.0160, 0.0546, 0.2114,\n", + " 0.1130, 0.1016, 0.1323, -0.0938, -0.0370, -0.0949, -0.0565, -0.2095,\n", + " -0.1319, -0.0121, -0.0245, -0.0766, -0.0164, -0.0005, -0.0206, -0.0234,\n", + " 0.0190, 0.1210, 0.0290, 0.0656, -0.1064, -0.0651, -0.0719, -0.1203,\n", + " -0.0672, -0.1180, -0.0829, -0.1694, -0.0576, -0.0150, 0.0102, 0.1354,\n", + " 0.2520, 0.2123, 0.1961]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00023609264462720603\n", + "Grad encoder.fc1.bias: 0.0009426006581634283\n", + "Grad encoder.encoder.0.weight: 6.441389268729836e-05\n", + "Grad encoder.encoder.0.bias: 0.0006279179942794144\n", + "Grad encoder.encoder.2.weight: 5.271015834296122e-05\n", + "Grad encoder.encoder.2.bias: 0.0005127632175572217\n", + "Grad encoder.encoder.4.weight: 0.00015490976511500776\n", + "Grad encoder.encoder.4.bias: 0.0011758815962821245\n", + "Grad decoder.fc1.0.weight: 7.352762622758746e-05\n", + "Grad decoder.fc1.0.bias: 0.0005357068730518222\n", + "Grad decoder.fc1.2.weight: 8.542329305782914e-05\n", + "Grad decoder.fc1.2.bias: 0.0006272124592214823\n", + "Grad decoder.fc1.4.weight: 6.356647645588964e-05\n", + "Grad decoder.fc1.4.bias: 0.0005060713738203049\n", + "Grad decoder.fc2.weight: 0.00014972146891523153\n", + "Grad decoder.fc2.bias: 0.0017639263533055782\n", + "Grad _memory_unit.weight_ih_l0: 1.8614829969010316e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.013974340632558e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.6322253183461726e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.522961252310779e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00015143791097216308\n", + "Grad _memory_unit.bias_hh_l1: 8.001417154446244e-05\n", + "Data X Sample: tensor([[2.5651, 2.9917, 3.1871, 2.6370, 2.7063, 3.1749, 3.8717, 3.9465, 4.0374,\n", + " 3.9303, 3.9908, 4.1501, 3.7727, 3.6698, 3.6290, 3.6254, 3.5709, 3.4857,\n", + " 3.4899, 3.3456, 3.2437, 3.1062, 2.9689, 2.7924, 2.7721, 2.7190, 2.7625,\n", + " 2.7694, 2.7615, 2.8854, 2.8556, 2.9236, 3.0735, 2.2473, 3.7184, 4.0740,\n", + " 4.2594, 4.7174, 5.3813, 5.1863, 2.0952, 1.1849, 1.1014, 1.9203, 2.4776,\n", + " 2.4931, 1.6317, 2.1737]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.4604, 1.2050, -0.4388, 0.9343, 0.4497, 0.2908, 0.3208, 1.0137,\n", + " -0.7852, -0.4562, -0.7072, 0.2796, 0.1296, -0.0343, 0.0095, -0.1753,\n", + " 0.2105, 0.7558, -0.4429, -0.5231, -0.5693, -1.0706, -0.6218, -0.4432,\n", + " -0.5111, -1.2138, 0.1573, 0.7766, -0.0105, -0.3888, -0.2063, -0.8218,\n", + " -1.3439, -0.0419, -0.3141, -1.1794, -0.9268, 0.0000, -0.7130, 0.9028,\n", + " 0.2911, -0.2478, 0.9577]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2311, -0.3465, -0.1684, -0.2372, -0.0068, 0.0947, 0.1877, 0.2962,\n", + " 0.2377, 0.1961, 0.1908, -0.1548, -0.1007, -0.2472, -0.1765, -0.3098,\n", + " -0.1583, -0.0398, -0.0533, -0.1430, -0.0715, -0.0112, -0.0334, -0.0332,\n", + " 0.1007, 0.1085, -0.0511, -0.0295, -0.1730, -0.1881, -0.1743, -0.1743,\n", + " -0.1680, -0.2347, -0.1414, -0.1418, -0.0391, -0.0266, 0.0293, 0.2222,\n", + " 0.3226, 0.3533, 0.2914]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005592855741269886\n", + "Grad encoder.fc1.bias: 0.0003161844506394118\n", + "Grad encoder.encoder.0.weight: 0.00010588290024315938\n", + "Grad encoder.encoder.0.bias: 0.0003791932831518352\n", + "Grad encoder.encoder.2.weight: 6.597227184101939e-05\n", + "Grad encoder.encoder.2.bias: 0.0005088977050036192\n", + "Grad encoder.encoder.4.weight: 0.00018293209723196924\n", + "Grad encoder.encoder.4.bias: 0.0018055937252938747\n", + "Grad decoder.fc1.0.weight: 5.941088238614611e-05\n", + "Grad decoder.fc1.0.bias: 0.0006271824240684509\n", + "Grad decoder.fc1.2.weight: 5.885196151211858e-05\n", + "Grad decoder.fc1.2.bias: 0.0007875286391936243\n", + "Grad decoder.fc1.4.weight: 5.804773900308646e-05\n", + "Grad decoder.fc1.4.bias: 0.0009545644279569387\n", + "Grad decoder.fc2.weight: 0.00013650074834004045\n", + "Grad decoder.fc2.bias: 0.0018748119473457336\n", + "Grad _memory_unit.weight_ih_l0: 1.272414101549657e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.905054811388254e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.5367384296259843e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.9434659053513315e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001228288747370243\n", + "Grad _memory_unit.bias_hh_l1: 6.280452362261713e-05\n", + "Data X Sample: tensor([[1.3080, 1.5075, 1.6514, 1.8236, 1.7826, 1.9845, 1.9844, 2.2245, 3.9227,\n", + " 4.1594, 4.2223, 4.1715, 4.1012, 3.8225, 3.8030, 3.5885, 3.5599, 3.5476,\n", + " 3.4878, 3.6004, 3.4817, 3.4354, 3.0677, 2.8039, 2.8134, 2.7791, 2.8584,\n", + " 2.9529, 2.9072, 3.1114, 3.1636, 3.3049, 3.6763, 2.7759, 4.5175, 4.7696,\n", + " 4.9791, 5.3588, 5.8567, 5.5835, 0.9498, 0.5596, 0.6164, 1.0448, 1.5896,\n", + " 1.7669, 1.1898, 1.7359]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4467, -0.4577, -1.6107, -1.2248, -0.4205, -0.6839, 0.2001, 0.7891,\n", + " 0.6587, 0.5713, 0.5638, -0.4326, 0.0095, 0.2773, -1.0035, -1.3443,\n", + " 0.0577, -0.2205, -0.4854, 0.5778, -0.3628, 0.0696, 0.4438, -0.1809,\n", + " 0.2553, -0.2209, 0.5814, -0.7703, 0.4523, 0.0682, 0.4383, -0.4515,\n", + " -1.0586, 0.3386, -1.0996, -1.5800, 0.7316, -0.6429, -0.0231, 0.5042,\n", + " 0.4871, 0.6421, -0.0148]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2212, -0.3138, -0.1335, -0.1526, 0.1275, 0.1782, 0.2184, 0.2735,\n", + " 0.2485, 0.2042, 0.1407, -0.1745, -0.0998, -0.2697, -0.2045, -0.3246,\n", + " -0.0960, -0.0051, -0.0511, -0.1123, -0.0743, -0.0019, 0.0073, -0.0205,\n", + " 0.0917, 0.0888, -0.1357, -0.0614, -0.2200, -0.2099, -0.2068, -0.1324,\n", + " -0.2538, -0.2472, -0.1397, -0.1352, -0.0227, -0.0453, 0.0586, 0.1855,\n", + " 0.2910, 0.3548, 0.2971]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00036653527058660984\n", + "Grad encoder.fc1.bias: 0.00021486656623892486\n", + "Grad encoder.encoder.0.weight: 7.72334897192195e-05\n", + "Grad encoder.encoder.0.bias: 0.00026241177693009377\n", + "Grad encoder.encoder.2.weight: 5.24056376889348e-05\n", + "Grad encoder.encoder.2.bias: 0.00034622076782397926\n", + "Grad encoder.encoder.4.weight: 0.00017755641601979733\n", + "Grad encoder.encoder.4.bias: 0.0013269721530377865\n", + "Grad decoder.fc1.0.weight: 6.0418631619540974e-05\n", + "Grad decoder.fc1.0.bias: 0.0005329512059688568\n", + "Grad decoder.fc1.2.weight: 7.88337056292221e-05\n", + "Grad decoder.fc1.2.bias: 0.0008280489128082991\n", + "Grad decoder.fc1.4.weight: 8.129671186907217e-05\n", + "Grad decoder.fc1.4.bias: 0.001066812896169722\n", + "Grad decoder.fc2.weight: 0.00014903392002452165\n", + "Grad decoder.fc2.bias: 0.0023212023079395294\n", + "Grad _memory_unit.weight_ih_l0: 1.7295376892434433e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.984972136095166e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.169222352677025e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.510145223932341e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010231413034489378\n", + "Grad _memory_unit.bias_hh_l1: 5.247873195912689e-05\n", + "Data X Sample: tensor([[2.5471, 2.9989, 3.2697, 3.3891, 3.4832, 3.5962, 3.7469, 3.7748, 3.7787,\n", + " 3.9461, 3.7782, 4.0196, 3.8593, 3.8443, 3.6063, 3.6281, 3.5567, 3.5418,\n", + " 3.5353, 3.4981, 3.3173, 3.3037, 3.0026, 2.9050, 2.8640, 2.8966, 2.8638,\n", + " 2.8713, 2.8655, 2.9902, 3.0551, 3.1004, 3.1197, 2.2084, 3.6890, 4.0716,\n", + " 4.1709, 4.6856, 5.1214, 5.0955, 1.8995, 1.1391, 1.1702, 2.0322, 2.8304,\n", + " 3.2308, 2.2165, 3.1355]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.6537e-01, -1.1124e-01, 1.6871e-03, -1.0187e-01, -1.1066e-01,\n", + " -9.3581e-01, -2.3680e-01, 2.3154e-01, 3.6396e-01, -1.0336e-01,\n", + " -1.9720e-01, 1.6003e+00, 4.9168e-02, 5.8981e-02, 2.5278e-01,\n", + " 4.8080e-01, 6.0588e-02, -4.3675e-01, 2.4908e-01, -5.4469e-02,\n", + " 2.6737e-01, 3.8047e-01, -2.2117e-01, 3.6687e-02, 1.1350e+00,\n", + " 3.2517e-01, -1.5867e+00, -1.6043e+00, -2.6673e+00, -1.5149e+00,\n", + " -7.2391e-01, 5.1939e-01, -1.8893e+00, -5.9561e-01, -1.3617e+00,\n", + " -1.6313e+00, -6.3477e-01, -5.9679e-02, -2.3062e-02, -1.8755e-01,\n", + " -8.1951e-02, -2.1666e-01, -6.2200e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2345, -0.3273, -0.1501, -0.2184, -0.0129, 0.0738, 0.1687, 0.2838,\n", + " 0.2320, 0.1745, 0.1966, -0.1473, -0.0943, -0.2467, -0.1755, -0.2789,\n", + " -0.1514, -0.0352, -0.0527, -0.1265, -0.0709, 0.0019, -0.0191, -0.0317,\n", + " 0.0997, 0.1024, -0.0541, -0.0468, -0.1605, -0.1833, -0.1847, -0.1672,\n", + " -0.1746, -0.2268, -0.1286, -0.1470, -0.0349, -0.0163, 0.0310, 0.2186,\n", + " 0.3119, 0.3335, 0.2760]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00020474630582612008\n", + "Grad encoder.fc1.bias: 0.000706090300809592\n", + "Grad encoder.encoder.0.weight: 4.8381611122749746e-05\n", + "Grad encoder.encoder.0.bias: 0.0004110289446543902\n", + "Grad encoder.encoder.2.weight: 3.334195935167372e-05\n", + "Grad encoder.encoder.2.bias: 0.00042268267134204507\n", + "Grad encoder.encoder.4.weight: 8.41419241623953e-05\n", + "Grad encoder.encoder.4.bias: 0.0010770015651360154\n", + "Grad decoder.fc1.0.weight: 3.650345024652779e-05\n", + "Grad decoder.fc1.0.bias: 0.00045263831270858645\n", + "Grad decoder.fc1.2.weight: 4.4479325879365206e-05\n", + "Grad decoder.fc1.2.bias: 0.0005592666566371918\n", + "Grad decoder.fc1.4.weight: 5.198788858251646e-05\n", + "Grad decoder.fc1.4.bias: 0.0006289468728937209\n", + "Grad decoder.fc2.weight: 0.00014102902787271887\n", + "Grad decoder.fc2.bias: 0.0014963241992518306\n", + "Grad _memory_unit.weight_ih_l0: 5.4101255955174565e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.361693911254406e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.8065083824913017e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.927470061171334e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.407532343175262e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.9840786232380196e-05\n", + "Data X Sample: tensor([[1.7536, 2.2081, 2.7032, 2.6829, 3.0375, 3.1572, 3.2107, 3.2864, 3.4125,\n", + " 3.3695, 3.3944, 3.4101, 3.3045, 3.2963, 3.2154, 3.1139, 3.0410, 3.2304,\n", + " 3.1781, 3.1689, 3.2486, 3.0664, 2.9881, 2.7199, 2.6013, 2.5335, 2.4162,\n", + " 2.3452, 2.0850, 2.0437, 1.8617, 1.8348, 1.5752, 1.0664, 1.5197, 1.7317,\n", + " 1.8170, 2.1865, 2.5354, 2.5080, 1.5177, 0.9559, 0.9761, 1.7882, 2.4895,\n", + " 2.5103, 1.8017, 2.5569]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 3.4954e-01, -3.6176e-01, 4.5962e-01, 7.9367e-01, 8.7027e-01,\n", + " 1.0936e-01, 2.8009e-01, -1.2824e-01, -4.4371e-01, -2.9946e-01,\n", + " -3.9934e-01, -8.0883e-01, 1.6588e-01, -1.9567e-01, -1.3690e+00,\n", + " 9.8965e-01, 4.9797e-01, 4.2842e-01, 1.5828e-03, 4.5259e-01,\n", + " 1.8132e-01, 4.8340e+00, 8.7426e-01, 1.5438e-01, 4.3983e-01,\n", + " 1.3859e+00, -5.6907e-01, -7.6848e-01, 1.1187e+00, 1.8890e-01,\n", + " 9.9140e-02, 9.9330e-02, 1.5124e+00, -5.2302e-01, -5.6050e-01,\n", + " 7.4200e-01, 5.0088e-02, 0.0000e+00, 2.8698e-01, 7.9916e-01,\n", + " -9.1554e-01, 3.6684e-02, 4.6083e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2137, -0.2619, -0.1274, -0.2314, -0.0925, -0.0004, 0.0810, 0.2326,\n", + " 0.1745, 0.1254, 0.1732, -0.0958, -0.0580, -0.1549, -0.1016, -0.2257,\n", + " -0.1545, -0.0420, -0.0344, -0.0985, -0.0452, 0.0048, -0.0072, -0.0398,\n", + " 0.0407, 0.0978, 0.0095, 0.0009, -0.1106, -0.1186, -0.1225, -0.1369,\n", + " -0.1036, -0.1537, -0.0877, -0.1689, -0.0391, -0.0090, -0.0024, 0.1873,\n", + " 0.2832, 0.2410, 0.2228]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 8.310620614793152e-05\n", + "Grad encoder.fc1.bias: 0.0009484353940933943\n", + "Grad encoder.encoder.0.weight: 3.546796506270766e-05\n", + "Grad encoder.encoder.0.bias: 0.0005837589269503951\n", + "Grad encoder.encoder.2.weight: 3.489670780254528e-05\n", + "Grad encoder.encoder.2.bias: 0.0004997440846636891\n", + "Grad encoder.encoder.4.weight: 0.00011046216241084039\n", + "Grad encoder.encoder.4.bias: 0.0006790279876440763\n", + "Grad decoder.fc1.0.weight: 5.0528982683317736e-05\n", + "Grad decoder.fc1.0.bias: 0.00040856943815015256\n", + "Grad decoder.fc1.2.weight: 6.397488323273137e-05\n", + "Grad decoder.fc1.2.bias: 0.00048069635522551835\n", + "Grad decoder.fc1.4.weight: 6.722463149344549e-05\n", + "Grad decoder.fc1.4.bias: 0.0006857482949271798\n", + "Grad decoder.fc2.weight: 0.00013967826089356095\n", + "Grad decoder.fc2.bias: 0.0017433669418096542\n", + "Grad _memory_unit.weight_ih_l0: 1.4707252375956159e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.31080989073962e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.3629143470316194e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.12215262663085e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.137645247392356e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.956435441272333e-05\n", + "Data X Sample: tensor([[1.5106, 1.8119, 1.8933, 2.0313, 2.0899, 2.3395, 2.3742, 2.4290, 2.5118,\n", + " 2.5576, 2.5442, 2.5980, 2.5255, 2.5083, 2.5244, 2.4165, 2.3633, 2.4431,\n", + " 2.4842, 2.4474, 2.4291, 2.3821, 2.3881, 2.4088, 2.3798, 2.4500, 2.4082,\n", + " 2.4431, 2.2654, 2.2533, 2.3972, 2.3378, 2.2440, 1.5104, 1.9536, 1.8315,\n", + " 1.6577, 1.4921, 1.6290, 1.6001, 1.2743, 0.7468, 0.7457, 1.2314, 1.8235,\n", + " 2.0242, 1.3190, 1.8844]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1634, -1.2428, 0.1773, -0.1434, 1.1878, -0.1396, 1.1960, -0.6881,\n", + " 0.4946, 0.3906, 0.5484, 0.1541, 0.6958, 0.6181, -0.8154, -0.4528,\n", + " -0.2171, 0.7743, -1.8780, -1.3054, 0.5517, -1.6247, -1.6690, -1.2336,\n", + " -1.0735, -0.5507, 0.3797, -0.4631, -0.2649, -0.9492, -0.6168, 0.5356,\n", + " -0.8877, -0.1532, -1.2157, 0.5349, -0.3615, -0.0920, 0.2870, -0.7222,\n", + " -0.1383, 0.7627, 0.9518]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3774, 0.3147, 0.1206, 0.2864, 0.1102, -0.1523, -0.4228, -0.4096,\n", + " -0.2013, -0.2637, -0.2629, 0.2313, 0.2217, 0.3030, 0.2164, 0.3301,\n", + " 0.2533, 0.1471, 0.0576, 0.1473, 0.0235, 0.0948, 0.1240, 0.0287,\n", + " 0.0545, 0.1041, -0.0174, 0.0575, 0.2656, 0.3040, 0.2217, 0.2045,\n", + " 0.3068, 0.3191, 0.1547, 0.1576, -0.0351, 0.0096, 0.0304, -0.2772,\n", + " -0.2648, -0.3134, -0.2955]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002867350704036653\n", + "Grad encoder.fc1.bias: 0.0005506777088157833\n", + "Grad encoder.encoder.0.weight: 7.22093100193888e-05\n", + "Grad encoder.encoder.0.bias: 0.00043668760918080807\n", + "Grad encoder.encoder.2.weight: 5.0124006520491093e-05\n", + "Grad encoder.encoder.2.bias: 0.0004489175626076758\n", + "Grad encoder.encoder.4.weight: 0.0001490877039032057\n", + "Grad encoder.encoder.4.bias: 0.0006276664207689464\n", + "Grad decoder.fc1.0.weight: 5.679902824340388e-05\n", + "Grad decoder.fc1.0.bias: 0.00038349523674696684\n", + "Grad decoder.fc1.2.weight: 9.726350253913552e-05\n", + "Grad decoder.fc1.2.bias: 0.0008769461419433355\n", + "Grad decoder.fc1.4.weight: 9.619125921744853e-05\n", + "Grad decoder.fc1.4.bias: 0.001095213578082621\n", + "Grad decoder.fc2.weight: 0.0001798227458493784\n", + "Grad decoder.fc2.bias: 0.0023844095412641764\n", + "Grad _memory_unit.weight_ih_l0: 1.648385114094708e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.72305400762707e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.4777784346952103e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.812671472289367e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.716942102182657e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.53480715805199e-05\n", + "Data X Sample: tensor([[1.7451, 2.0231, 2.1893, 2.2653, 2.4041, 2.4559, 2.5267, 2.5752, 2.6338,\n", + " 2.5639, 2.6647, 2.6038, 2.5211, 2.5056, 2.4311, 2.4411, 2.4482, 2.5263,\n", + " 2.5627, 2.6501, 2.5959, 2.5842, 2.6725, 2.6970, 2.6914, 2.7451, 2.7252,\n", + " 2.7408, 2.4007, 2.4924, 2.4357, 2.2659, 2.0284, 1.3159, 1.8629, 1.7074,\n", + " 1.6007, 1.5848, 1.5593, 1.5008, 1.2647, 0.8284, 0.8165, 1.3577, 2.0970,\n", + " 2.2930, 1.5434, 2.1737]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.1300, 0.1753, -1.3291, -0.7896, -0.6302, 0.0962, 0.6927, 0.4926,\n", + " -0.1404, -0.1163, -0.2045, 0.4868, 0.2397, -0.7338, -0.1759, 0.6711,\n", + " 0.6810, 0.1967, 1.3384, -0.3596, -0.3271, -0.1386, 0.0816, -0.4552,\n", + " -0.1877, -0.4235, 0.4992, 0.3517, 1.4067, -0.1772, 0.4876, 0.2807,\n", + " 0.4107, -0.4985, 0.9256, -0.9092, -0.8287, -0.0920, 0.7285, 0.2491,\n", + " -0.3421, -0.1862, -0.9618]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3376, 0.2927, 0.1180, 0.2408, 0.0967, -0.1446, -0.3892, -0.3715,\n", + " -0.1952, -0.2502, -0.2481, 0.2015, 0.2000, 0.2772, 0.1964, 0.3038,\n", + " 0.2252, 0.1349, 0.0463, 0.1376, 0.0195, 0.0935, 0.1064, 0.0276,\n", + " 0.0583, 0.0952, -0.0105, 0.0478, 0.2538, 0.2869, 0.1986, 0.1895,\n", + " 0.2746, 0.2808, 0.1385, 0.1360, -0.0230, 0.0189, 0.0333, -0.2489,\n", + " -0.2350, -0.2885, -0.2735]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 7.288518099812791e-05\n", + "Grad encoder.fc1.bias: 0.000701847136951983\n", + "Grad encoder.encoder.0.weight: 4.081166480318643e-05\n", + "Grad encoder.encoder.0.bias: 0.0006772783817723393\n", + "Grad encoder.encoder.2.weight: 3.95850875065662e-05\n", + "Grad encoder.encoder.2.bias: 0.0006796566303819418\n", + "Grad encoder.encoder.4.weight: 0.00011412473395466805\n", + "Grad encoder.encoder.4.bias: 0.0025640421081334352\n", + "Grad decoder.fc1.0.weight: 7.091203588061035e-05\n", + "Grad decoder.fc1.0.bias: 0.0008759275660850108\n", + "Grad decoder.fc1.2.weight: 7.949733844725415e-05\n", + "Grad decoder.fc1.2.bias: 0.0007505188696086407\n", + "Grad decoder.fc1.4.weight: 7.574537448817864e-05\n", + "Grad decoder.fc1.4.bias: 0.0007272508228197694\n", + "Grad decoder.fc2.weight: 0.0001940444635692984\n", + "Grad decoder.fc2.bias: 0.002170522464439273\n", + "Grad _memory_unit.weight_ih_l0: 1.324698496318888e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0001559619267936796\n", + "Grad _memory_unit.bias_hh_l0: 8.17966865724884e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.516956197330728e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00023951634648256004\n", + "Grad _memory_unit.bias_hh_l1: 0.0001274010428460315\n", + "Data X Sample: tensor([[1.4056, 1.6080, 1.8092, 1.8105, 2.0045, 2.0670, 2.1246, 1.9889, 3.6029,\n", + " 4.3632, 4.4222, 4.3351, 3.8682, 3.8879, 3.9695, 3.7225, 3.6888, 3.7179,\n", + " 3.6613, 3.6153, 3.5577, 3.4966, 3.2122, 2.9451, 2.8603, 2.8287, 2.8531,\n", + " 2.9610, 3.0182, 3.2064, 3.2091, 3.5039, 3.8545, 2.7393, 4.6106, 4.9569,\n", + " 5.2249, 5.4092, 5.7553, 5.8785, 1.1263, 0.7090, 0.6447, 1.2343, 1.7205,\n", + " 1.7669, 1.2238, 1.8062]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6501, -0.0686, -0.4119, 0.0992, -0.6133, -0.7587, 0.0333, 0.3831,\n", + " 0.6325, 0.3156, 0.2599, -0.5047, 0.1958, -1.4069, -0.9211, -0.3872,\n", + " -0.0074, -1.8419, -1.5428, 0.9237, -1.3094, -0.8254, -0.7277, -1.2647,\n", + " -0.6384, -1.7471, -2.3879, -2.4606, -2.9250, -2.8606, -1.7704, -1.0614,\n", + " -1.4422, -1.6720, -2.5638, -0.4583, -0.6699, 0.7314, 0.0073, 0.2631,\n", + " 0.2017, 0.5358, 0.4495]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2712, -0.3284, -0.1460, -0.1219, 0.1406, 0.1952, 0.2362, 0.2934,\n", + " 0.2812, 0.2170, 0.1831, -0.1704, -0.1076, -0.3081, -0.2222, -0.3213,\n", + " -0.1118, -0.0158, -0.0460, -0.1214, -0.1158, -0.0120, 0.0415, -0.0307,\n", + " 0.0927, 0.0451, -0.1758, -0.1310, -0.2421, -0.2256, -0.2459, -0.1383,\n", + " -0.2904, -0.2834, -0.1517, -0.1660, -0.0020, -0.0535, 0.0600, 0.2456,\n", + " 0.3253, 0.3358, 0.2873]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005123572191223502\n", + "Grad encoder.fc1.bias: 0.0007031160057522357\n", + "Grad encoder.encoder.0.weight: 0.0001232898503076285\n", + "Grad encoder.encoder.0.bias: 0.0005585907492786646\n", + "Grad encoder.encoder.2.weight: 7.433722203131765e-05\n", + "Grad encoder.encoder.2.bias: 0.0006582991918548942\n", + "Grad encoder.encoder.4.weight: 0.00017451879102736712\n", + "Grad encoder.encoder.4.bias: 0.0011383180972188711\n", + "Grad decoder.fc1.0.weight: 6.414701056201011e-05\n", + "Grad decoder.fc1.0.bias: 0.0005707796663045883\n", + "Grad decoder.fc1.2.weight: 9.073648834601045e-05\n", + "Grad decoder.fc1.2.bias: 0.0007244478911161423\n", + "Grad decoder.fc1.4.weight: 6.630308052990586e-05\n", + "Grad decoder.fc1.4.bias: 0.0006847468903288245\n", + "Grad decoder.fc2.weight: 0.00013304616732057184\n", + "Grad decoder.fc2.bias: 0.0019275365630164742\n", + "Grad _memory_unit.weight_ih_l0: 1.8330285456613638e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.480058876448311e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.0578092517098412e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.125743988784961e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010814207780640572\n", + "Grad _memory_unit.bias_hh_l1: 5.6811633839970455e-05\n", + "Data X Sample: tensor([[1.7175, 2.3158, 2.6356, 2.7988, 2.8685, 3.1778, 3.1121, 3.1629, 3.3515,\n", + " 3.3316, 3.4642, 3.3847, 3.3622, 3.2172, 3.2432, 3.2179, 3.1966, 3.1936,\n", + " 3.2297, 3.2303, 3.2216, 3.0465, 2.9520, 2.7924, 2.6763, 2.6354, 2.4455,\n", + " 2.4268, 2.0399, 2.0470, 1.9037, 1.8404, 1.6170, 1.0481, 1.6178, 1.7634,\n", + " 1.8839, 2.1997, 2.5227, 2.6158, 1.5463, 0.8882, 0.9418, 1.6878, 2.5926,\n", + " 2.7848, 1.8289, 2.4787]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0805, -0.5232, 0.3404, 0.6369, -0.4593, 0.6423, 0.2453, 0.1132,\n", + " 0.5341, -0.1142, -0.1451, 0.2802, 0.5176, 1.1345, 0.0459, 0.3509,\n", + " 0.1284, 0.7060, 0.1687, 0.2993, 0.5037, 0.1179, 0.5540, -0.3003,\n", + " -0.2314, 0.0247, -0.6161, 0.0593, 0.3832, 0.0408, -0.0279, -0.4828,\n", + " -0.7812, 0.2199, -0.0608, 0.1488, -0.0107, 0.7579, -0.4066, 0.1006,\n", + " 0.0270, -0.2398, -0.5151]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2968, -0.3516, -0.1594, -0.2602, -0.1108, -0.0178, 0.1108, 0.2750,\n", + " 0.2299, 0.1637, 0.2412, -0.1110, -0.0811, -0.2362, -0.1490, -0.2557,\n", + " -0.1969, -0.0814, -0.0473, -0.1247, -0.0767, 0.0065, -0.0120, -0.0673,\n", + " 0.0962, 0.0768, 0.0085, -0.0526, -0.1216, -0.1729, -0.1588, -0.1869,\n", + " -0.1191, -0.1997, -0.1051, -0.1670, -0.0174, -0.0140, -0.0033, 0.2751,\n", + " 0.3311, 0.2877, 0.2580]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00017202696471940726\n", + "Grad encoder.fc1.bias: 0.000695271126460284\n", + "Grad encoder.encoder.0.weight: 5.31580371898599e-05\n", + "Grad encoder.encoder.0.bias: 0.0005558258853852749\n", + "Grad encoder.encoder.2.weight: 3.716029095812701e-05\n", + "Grad encoder.encoder.2.bias: 0.0004635591758415103\n", + "Grad encoder.encoder.4.weight: 0.00011790548887802288\n", + "Grad encoder.encoder.4.bias: 0.0010928837582468987\n", + "Grad decoder.fc1.0.weight: 6.086220673751086e-05\n", + "Grad decoder.fc1.0.bias: 0.0005754061276093125\n", + "Grad decoder.fc1.2.weight: 8.272013656096533e-05\n", + "Grad decoder.fc1.2.bias: 0.000807605218142271\n", + "Grad decoder.fc1.4.weight: 7.672440551687032e-05\n", + "Grad decoder.fc1.4.bias: 0.0008267200319096446\n", + "Grad decoder.fc2.weight: 0.00014545088924933225\n", + "Grad decoder.fc2.bias: 0.0019812099635601044\n", + "Grad _memory_unit.weight_ih_l0: 1.3507345101970714e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.072624041233212e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.2084015149157494e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.9482721301028505e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00014569141785614192\n", + "Grad _memory_unit.bias_hh_l1: 7.815418211976066e-05\n", + "Data X Sample: tensor([[1.5212, 1.6575, 1.8527, 2.0663, 2.0233, 1.9079, 1.6685, 3.2921, 4.2058,\n", + " 4.4390, 4.4571, 4.4559, 3.9969, 4.0515, 3.8484, 3.8524, 3.7548, 3.7217,\n", + " 3.5209, 3.4274, 3.4056, 3.3236, 2.9954, 2.7829, 2.7533, 2.7085, 2.7385,\n", + " 2.7979, 2.6782, 2.8526, 3.0306, 3.0424, 3.5443, 2.6249, 4.3900, 4.8426,\n", + " 5.0932, 5.6901, 6.1039, 6.1395, 1.1645, 0.7070, 0.6730, 1.2572, 1.6848,\n", + " 1.9728, 1.2170, 1.7359]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1696, -0.8841, 1.1073, -0.2946, -0.1704, -0.1426, -0.0071, 0.1103,\n", + " -0.0713, 0.2089, 0.3010, -0.8272, 0.2183, -0.6786, -0.6441, -1.2892,\n", + " 0.3199, -0.0946, -0.3593, 0.2054, -0.1428, 0.7072, -0.4230, -0.1790,\n", + " 0.4918, -0.0626, 0.3721, -0.1264, -0.6912, -0.9111, 0.3649, -0.8008,\n", + " -0.7199, -0.2707, 0.7265, 0.4296, -0.0868, 0.0000, 0.8554, 0.3894,\n", + " 0.2524, 0.6069, 0.9398]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2757, -0.3403, -0.1641, -0.1271, 0.1123, 0.1858, 0.2447, 0.3072,\n", + " 0.2845, 0.2243, 0.2130, -0.1734, -0.1089, -0.3180, -0.2295, -0.3199,\n", + " -0.1291, -0.0215, -0.0366, -0.1274, -0.1298, -0.0179, 0.0288, -0.0407,\n", + " 0.0993, 0.0476, -0.1728, -0.1413, -0.2424, -0.2301, -0.2559, -0.1595,\n", + " -0.2856, -0.2980, -0.1662, -0.1660, -0.0095, -0.0542, 0.0599, 0.2691,\n", + " 0.3452, 0.3375, 0.2814]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00011036791693186387\n", + "Grad encoder.fc1.bias: 0.00012554472777992487\n", + "Grad encoder.encoder.0.weight: 3.516238939482719e-05\n", + "Grad encoder.encoder.0.bias: 0.00013160883099772036\n", + "Grad encoder.encoder.2.weight: 2.227815093647223e-05\n", + "Grad encoder.encoder.2.bias: 0.0001548579166410491\n", + "Grad encoder.encoder.4.weight: 7.012006244622171e-05\n", + "Grad encoder.encoder.4.bias: 0.0005052959895692766\n", + "Grad decoder.fc1.0.weight: 3.911706153303385e-05\n", + "Grad decoder.fc1.0.bias: 0.000314448494464159\n", + "Grad decoder.fc1.2.weight: 4.4452557631302625e-05\n", + "Grad decoder.fc1.2.bias: 0.0003938870213460177\n", + "Grad decoder.fc1.4.weight: 4.7711619117762893e-05\n", + "Grad decoder.fc1.4.bias: 0.0004822697374038398\n", + "Grad decoder.fc2.weight: 0.00011419061047490686\n", + "Grad decoder.fc2.bias: 0.0015809740871191025\n", + "Grad _memory_unit.weight_ih_l0: 9.584858162270393e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.922131145372987e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.062172643491067e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.527254532149527e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.849021883681417e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.6043340514879674e-05\n", + "Data X Sample: tensor([[1.5075, 1.8235, 1.8768, 1.9395, 2.0575, 2.1200, 2.1693, 2.2444, 2.2653,\n", + " 2.3222, 2.2682, 2.4363, 2.2415, 2.2521, 2.2521, 2.2318, 2.2013, 2.2961,\n", + " 2.3417, 2.3674, 2.4045, 2.4709, 2.4652, 2.4202, 2.4905, 2.4970, 2.5574,\n", + " 2.5124, 2.3903, 2.4596, 2.3727, 2.3433, 2.1934, 1.3845, 1.8580, 1.7926,\n", + " 1.6145, 1.4788, 1.4832, 1.5292, 1.2409, 0.7050, 0.6892, 1.2544, 1.9028,\n", + " 1.9899, 1.3530, 1.9861]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5123, 0.8958, 0.3684, -0.5754, -0.3527, -0.1572, -0.7681, -0.4400,\n", + " -0.4171, -0.6999, -0.5782, -0.6828, 1.7373, 1.3203, 0.2115, 0.6605,\n", + " 0.1345, 1.6649, 0.4948, 0.4948, 0.0541, -1.3924, -0.4965, 1.5132,\n", + " 0.2097, 1.8786, -0.5146, 0.8306, 0.6753, 0.9608, 1.1809, -0.0871,\n", + " 1.2243, 0.6832, 1.2525, -0.7024, 0.0000, -0.1625, -0.5596, -0.7212,\n", + " -0.2021, -0.6885, -0.8491]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3069, 0.2798, 0.1043, 0.2126, 0.1091, -0.1195, -0.3399, -0.3357,\n", + " -0.1749, -0.2358, -0.2188, 0.1858, 0.1600, 0.2288, 0.1767, 0.2935,\n", + " 0.2101, 0.1183, 0.0554, 0.1373, 0.0496, 0.1092, 0.0937, 0.0371,\n", + " 0.0671, 0.0989, -0.0141, 0.0331, 0.2102, 0.2597, 0.1803, 0.1836,\n", + " 0.2646, 0.2420, 0.1473, 0.1373, -0.0385, 0.0127, 0.0487, -0.2362,\n", + " -0.2239, -0.2792, -0.2622]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004953123861923814\n", + "Grad encoder.fc1.bias: 0.0021110244560986757\n", + "Grad encoder.encoder.0.weight: 0.00011239791638217866\n", + "Grad encoder.encoder.0.bias: 0.0012405343586578965\n", + "Grad encoder.encoder.2.weight: 7.307955820579082e-05\n", + "Grad encoder.encoder.2.bias: 0.0008822409436106682\n", + "Grad encoder.encoder.4.weight: 0.00018721396918408573\n", + "Grad encoder.encoder.4.bias: 0.0009687847341410816\n", + "Grad decoder.fc1.0.weight: 7.503919914597645e-05\n", + "Grad decoder.fc1.0.bias: 0.0006089969538152218\n", + "Grad decoder.fc1.2.weight: 0.00010335030674468726\n", + "Grad decoder.fc1.2.bias: 0.0009737025247886777\n", + "Grad decoder.fc1.4.weight: 7.86388263804838e-05\n", + "Grad decoder.fc1.4.bias: 0.000963298138231039\n", + "Grad decoder.fc2.weight: 0.00013199116801843047\n", + "Grad decoder.fc2.bias: 0.0022473647259175777\n", + "Grad _memory_unit.weight_ih_l0: 1.5280715160770342e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.5379198379814625e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.047598536591977e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.384532520722132e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001047611003741622\n", + "Grad _memory_unit.bias_hh_l1: 5.5558553867740557e-05\n", + "Data X Sample: tensor([[ 0.0032, 0.0073, -0.0030, 0.0109, -0.0051, -0.0059, 0.0062, -0.0099,\n", + " -0.0073, 0.0032, -0.0159, 0.0058, -0.0111, -0.0518, -0.0378, 0.0096,\n", + " 0.0409, 0.0561, 0.0372, 0.0205, 0.0662, 0.0276, 0.0096, 0.0115,\n", + " 0.0075, 0.0287, -0.0053, 0.0408, -0.0139, 0.0229, 0.0070, 0.0055,\n", + " -0.0352, -0.0114, -0.0392, -0.0195, 0.0000, 0.0000, -0.0190, -0.0312,\n", + " -0.0286, 0.0040, -0.0020, -0.0029, 0.0357, 0.0114, 0.0544, 0.0469]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0374, -0.1014, -0.4577, 0.1717, 1.1703, 0.4048, 1.2275, -0.4504,\n", + " 0.4051, 0.4431, 0.6679, 1.0617, -0.4421, 1.0663, -0.2732, -0.4478,\n", + " -0.6177, -0.7249, -0.2505, -1.0855, -0.8089, -1.6900, -1.3762, -1.1837,\n", + " -0.6603, 1.1230, -0.8987, 0.0332, -0.3368, -0.5374, -0.0654, 0.0377,\n", + " -0.4842, -0.7424, -0.4713, -0.5162, 0.3306, 0.0940, 0.5660, 0.0907,\n", + " 0.2074, 0.1145, -0.1102]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.6381, 0.4254, 0.1337, 0.3618, 0.0545, -0.2418, -0.6903, -0.7478,\n", + " -0.4406, -0.5057, -0.4773, 0.3519, 0.2826, 0.4545, 0.2451, 0.4003,\n", + " 0.3668, 0.1656, 0.1431, 0.2185, 0.0939, 0.1598, 0.1323, 0.1188,\n", + " 0.0329, 0.0726, 0.1201, 0.2235, 0.5282, 0.6349, 0.4666, 0.5065,\n", + " 0.5314, 0.4961, 0.3036, 0.2622, -0.1303, -0.0083, 0.0889, -0.5646,\n", + " -0.4951, -0.4872, -0.3924]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005696783191524446\n", + "Grad encoder.fc1.bias: 0.0024485306348651648\n", + "Grad encoder.encoder.0.weight: 0.00012972198601346463\n", + "Grad encoder.encoder.0.bias: 0.0012196735478937626\n", + "Grad encoder.encoder.2.weight: 7.721151632722467e-05\n", + "Grad encoder.encoder.2.bias: 0.0009581454214639962\n", + "Grad encoder.encoder.4.weight: 0.00019183321273885667\n", + "Grad encoder.encoder.4.bias: 0.0010031018173322082\n", + "Grad decoder.fc1.0.weight: 7.460454071406275e-05\n", + "Grad decoder.fc1.0.bias: 0.0006749654421582818\n", + "Grad decoder.fc1.2.weight: 8.465524297207594e-05\n", + "Grad decoder.fc1.2.bias: 0.0007737865089438856\n", + "Grad decoder.fc1.4.weight: 6.549368117703125e-05\n", + "Grad decoder.fc1.4.bias: 0.0007912891451269388\n", + "Grad decoder.fc2.weight: 0.00013653292262461036\n", + "Grad decoder.fc2.bias: 0.0020624897442758083\n", + "Grad _memory_unit.weight_ih_l0: 1.6200625395867974e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.543324419297278e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.0541770936688408e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.439469638688024e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011703845666488633\n", + "Grad _memory_unit.bias_hh_l1: 6.131542613729835e-05\n", + "Data X Sample: tensor([[1.6708, 1.9808, 2.0947, 2.2718, 2.3085, 2.4883, 2.6099, 2.6717, 2.6583,\n", + " 2.7266, 2.6076, 2.6973, 2.5965, 2.5220, 2.6329, 2.4794, 2.4733, 2.5940,\n", + " 2.5338, 2.5404, 2.6523, 2.6393, 2.6532, 2.6130, 2.6970, 2.7425, 2.6506,\n", + " 2.7082, 2.4978, 2.4989, 2.3307, 2.3737, 2.1670, 1.3456, 1.8898, 1.8023,\n", + " 1.6243, 1.6220, 1.6100, 1.5491, 1.3316, 0.7667, 0.7882, 1.3577, 2.0297,\n", + " 2.1500, 1.5298, 2.2285]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4785, 0.0754, 0.0261, 1.3494, 1.3026, 0.3636, -0.3633, -0.5379,\n", + " -0.4664, -0.5805, -0.8237, 0.3591, 0.4270, 0.5358, 0.2242, 0.1596,\n", + " -0.3058, 0.1141, -0.2930, 0.2381, -0.5905, -0.1839, -0.0980, -0.1564,\n", + " 0.3763, -0.3932, -0.2414, -0.3113, -0.1021, -0.4724, 0.2642, 0.3050,\n", + " 0.2704, -0.3068, -0.5147, 0.8943, 0.4768, -0.0459, 1.0291, -0.5908,\n", + " -0.3779, -0.8253, -0.9722]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2943, 0.2708, 0.1045, 0.1831, 0.1113, -0.1069, -0.3231, -0.3263,\n", + " -0.1639, -0.2255, -0.2059, 0.1814, 0.1456, 0.2145, 0.1649, 0.2791,\n", + " 0.1944, 0.1062, 0.0582, 0.1375, 0.0584, 0.1073, 0.0717, 0.0371,\n", + " 0.0706, 0.1069, -0.0131, 0.0332, 0.1964, 0.2446, 0.1776, 0.1756,\n", + " 0.2539, 0.2193, 0.1392, 0.1319, -0.0385, 0.0174, 0.0471, -0.2246,\n", + " -0.2132, -0.2729, -0.2535]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00044381868792697787\n", + "Grad encoder.fc1.bias: 0.0009844000451266766\n", + "Grad encoder.encoder.0.weight: 9.976981527870521e-05\n", + "Grad encoder.encoder.0.bias: 0.0008062258129939437\n", + "Grad encoder.encoder.2.weight: 6.028631833032705e-05\n", + "Grad encoder.encoder.2.bias: 0.0007225234294310212\n", + "Grad encoder.encoder.4.weight: 0.00017061442486010492\n", + "Grad encoder.encoder.4.bias: 0.0016444094944745302\n", + "Grad decoder.fc1.0.weight: 6.058991129975766e-05\n", + "Grad decoder.fc1.0.bias: 0.0006691760499961674\n", + "Grad decoder.fc1.2.weight: 6.828641198808327e-05\n", + "Grad decoder.fc1.2.bias: 0.0007641349220648408\n", + "Grad decoder.fc1.4.weight: 5.5575394071638584e-05\n", + "Grad decoder.fc1.4.bias: 0.0007226807647384703\n", + "Grad decoder.fc2.weight: 0.00011961717245867476\n", + "Grad decoder.fc2.bias: 0.0016227563610300422\n", + "Grad _memory_unit.weight_ih_l0: 1.5929730579955503e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.239247836172581e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.278451524442062e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.925055458850693e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001354870619252324\n", + "Grad _memory_unit.bias_hh_l1: 7.113444007700309e-05\n", + "Data X Sample: tensor([[2.6616, 2.8883, 2.9812, 2.7682, 2.7148, 2.9333, 3.6067, 3.7407, 3.9178,\n", + " 4.0141, 4.0352, 4.0060, 3.9192, 3.6371, 3.5307, 3.6008, 3.4875, 3.3832,\n", + " 3.5229, 3.3661, 3.3516, 3.1598, 2.8484, 2.8382, 2.6557, 2.7503, 2.8078,\n", + " 2.8468, 2.7857, 2.9214, 2.8381, 2.9540, 3.1285, 2.3182, 3.8385, 4.1859,\n", + " 4.3970, 4.7280, 5.3179, 5.2657, 1.9377, 1.1690, 1.0368, 1.9031, 2.4261,\n", + " 2.6647, 1.7269, 2.4709]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1257, -0.9588, -1.4588, -1.0897, -0.6066, -1.1504, 0.5278, 0.7586,\n", + " 1.0236, 0.2417, 1.0471, -1.0176, 0.9836, -0.4203, -0.1329, -1.3432,\n", + " -0.4432, -0.0910, -0.1497, -0.5742, -1.4026, -0.1131, -0.1663, -1.2855,\n", + " -0.7350, -0.3360, 0.8078, -0.4506, -0.3485, -0.3616, -1.3499, -1.4778,\n", + " -0.3526, -1.0584, -0.1731, -0.3302, -0.0457, -0.3712, 2.2782, 0.8013,\n", + " 0.8159, 0.5848, 0.6343]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2390, -0.2882, -0.1511, -0.1955, -0.0617, 0.0309, 0.1337, 0.2668,\n", + " 0.1955, 0.1763, 0.2083, -0.1400, -0.0636, -0.2308, -0.1599, -0.2149,\n", + " -0.1702, -0.0369, -0.0322, -0.0884, -0.0614, 0.0116, -0.0264, -0.0478,\n", + " 0.0998, 0.0961, -0.0416, -0.0611, -0.1199, -0.1643, -0.1708, -0.1771,\n", + " -0.1328, -0.2094, -0.1083, -0.1236, -0.0304, -0.0274, 0.0245, 0.2406,\n", + " 0.2967, 0.2885, 0.2251]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001766546629369259\n", + "Grad encoder.fc1.bias: 0.001141177024692297\n", + "Grad encoder.encoder.0.weight: 7.192192424554378e-05\n", + "Grad encoder.encoder.0.bias: 0.0008934257784858346\n", + "Grad encoder.encoder.2.weight: 6.158774340292439e-05\n", + "Grad encoder.encoder.2.bias: 0.0008176683913916349\n", + "Grad encoder.encoder.4.weight: 0.00014853381435386837\n", + "Grad encoder.encoder.4.bias: 0.002515619620680809\n", + "Grad decoder.fc1.0.weight: 8.765832899371162e-05\n", + "Grad decoder.fc1.0.bias: 0.001175565179437399\n", + "Grad decoder.fc1.2.weight: 9.489006333751604e-05\n", + "Grad decoder.fc1.2.bias: 0.0010502268560230732\n", + "Grad decoder.fc1.4.weight: 7.558192010037601e-05\n", + "Grad decoder.fc1.4.bias: 0.0008920153486542404\n", + "Grad decoder.fc2.weight: 0.00016111685545183718\n", + "Grad decoder.fc2.bias: 0.0025700449477881193\n", + "Grad _memory_unit.weight_ih_l0: 2.2093045117799193e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00012102600885555148\n", + "Grad _memory_unit.bias_hh_l0: 6.59726865706034e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.1614354662015103e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00022545753745362163\n", + "Grad _memory_unit.bias_hh_l1: 0.0001216827513417229\n", + "Data X Sample: tensor([[1.6443, 2.1440, 2.5830, 2.7463, 2.9385, 2.8714, 3.0305, 3.0806, 3.1611,\n", + " 3.1926, 3.1120, 3.2231, 3.0737, 3.1518, 2.9557, 3.0018, 3.0268, 3.0679,\n", + " 3.1430, 3.1299, 3.1063, 3.1598, 2.8749, 2.7504, 2.5525, 2.4630, 2.3523,\n", + " 2.3941, 1.9913, 2.0502, 1.8232, 1.7658, 1.5796, 1.0298, 1.5197, 1.6661,\n", + " 1.7895, 2.0857, 2.3262, 2.3832, 1.6704, 0.8125, 0.8670, 1.6706, 2.4499,\n", + " 2.6304, 1.7269, 2.6820]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4088, -0.7581, -0.8879, 0.2952, -0.0431, 0.0642, 0.5471, -0.1036,\n", + " -0.3912, -0.2452, -0.2844, -0.4783, 0.8625, -0.4759, 0.7407, -0.1151,\n", + " -0.6822, -0.1214, 0.1206, 0.1055, 0.1642, 10.0214, 0.9628, 0.4491,\n", + " -0.1393, 1.2003, -0.2379, -0.0220, -0.3369, -0.8111, 1.0987, 0.6558,\n", + " 0.6509, 0.1105, -0.1869, 0.2327, 0.8233, -0.6423, -0.9129, 1.4205,\n", + " -0.1537, 0.0205, -1.2399]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1759, -0.1970, -0.1210, -0.1881, -0.0994, -0.0326, 0.0235, 0.1617,\n", + " 0.1238, 0.1110, 0.1413, -0.0686, -0.0220, -0.1169, -0.0563, -0.1427,\n", + " -0.1483, -0.0277, -0.0124, -0.0523, -0.0189, 0.0131, -0.0095, -0.0540,\n", + " 0.0563, 0.0776, 0.0233, 0.0138, -0.0631, -0.0948, -0.0883, -0.1187,\n", + " -0.0635, -0.0989, -0.0659, -0.1196, -0.0415, 0.0051, 0.0215, 0.1552,\n", + " 0.2163, 0.1647, 0.1509]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 8.161600271705538e-05\n", + "Grad encoder.fc1.bias: 0.0007651750929653645\n", + "Grad encoder.encoder.0.weight: 3.232157541788183e-05\n", + "Grad encoder.encoder.0.bias: 0.000585421803407371\n", + "Grad encoder.encoder.2.weight: 3.116471998509951e-05\n", + "Grad encoder.encoder.2.bias: 0.0004865519003942609\n", + "Grad encoder.encoder.4.weight: 9.118453453993425e-05\n", + "Grad encoder.encoder.4.bias: 0.0009972411207854748\n", + "Grad decoder.fc1.0.weight: 4.3366377212805673e-05\n", + "Grad decoder.fc1.0.bias: 0.00043480878230184317\n", + "Grad decoder.fc1.2.weight: 6.732212204951793e-05\n", + "Grad decoder.fc1.2.bias: 0.000775575521402061\n", + "Grad decoder.fc1.4.weight: 6.245087570277974e-05\n", + "Grad decoder.fc1.4.bias: 0.0007962287636473775\n", + "Grad decoder.fc2.weight: 0.00012940402666572481\n", + "Grad decoder.fc2.bias: 0.0020047707948833704\n", + "Grad _memory_unit.weight_ih_l0: 1.0722116712713614e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.189714233390987e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.826282772934064e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.9792937463498674e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011821922089438885\n", + "Grad _memory_unit.bias_hh_l1: 6.329055031528696e-05\n", + "Data X Sample: tensor([[1.3738, 1.5949, 1.8587, 1.9591, 2.0028, 2.0316, 2.0398, 2.0655, 3.3149,\n", + " 4.1310, 4.2890, 4.0917, 4.0834, 3.9697, 3.7677, 3.5543, 3.4702, 3.5070,\n", + " 3.6055, 3.5056, 3.4449, 3.3037, 2.8917, 2.7714, 2.9053, 2.9384, 2.9597,\n", + " 2.9855, 3.2194, 3.3046, 3.3490, 3.2193, 3.8897, 2.7370, 4.6425, 5.0007,\n", + " 5.1325, 5.5205, 5.8757, 5.7792, 1.1072, 0.6034, 0.7073, 1.0793, 1.6848,\n", + " 1.9957, 1.2170, 1.7515]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.0415, -0.4118, 1.7448, 1.1806, -0.2647, 0.3944, 0.2810, 0.4144,\n", + " 0.6528, 0.6073, 0.5566, -0.8081, 0.4846, -0.0315, 1.0947, 0.2828,\n", + " 0.6226, -0.6970, -3.6118, 0.2799, -0.3742, 5.8735, -0.2658, 2.7276,\n", + " -0.7705, 4.5837, -0.7076, -0.2074, -0.4247, 1.1025, -0.4151, -0.8370,\n", + " 0.4275, 0.2228, -0.8221, -0.2252, 0.2309, 0.6895, 0.1391, 1.0631,\n", + " 0.3507, 0.3772, -0.6977]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2001, -0.2120, -0.1029, -0.1027, 0.0541, 0.1169, 0.1447, 0.2187,\n", + " 0.1708, 0.1834, 0.1543, -0.1335, -0.0628, -0.2087, -0.1462, -0.2002,\n", + " -0.1374, -0.0035, -0.0147, -0.0715, -0.0566, -0.0136, 0.0169, -0.0318,\n", + " 0.0380, 0.0439, -0.1193, -0.0757, -0.1604, -0.1598, -0.1768, -0.1233,\n", + " -0.1943, -0.2116, -0.1145, -0.1275, -0.0128, -0.0300, 0.0367, 0.1979,\n", + " 0.2678, 0.2275, 0.1796]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00013130209117662162\n", + "Grad encoder.fc1.bias: 0.0009346131701022387\n", + "Grad encoder.encoder.0.weight: 3.4269098250661045e-05\n", + "Grad encoder.encoder.0.bias: 0.0005470789037644863\n", + "Grad encoder.encoder.2.weight: 2.2283929865807295e-05\n", + "Grad encoder.encoder.2.bias: 0.00030444428557530046\n", + "Grad encoder.encoder.4.weight: 5.597932613454759e-05\n", + "Grad encoder.encoder.4.bias: 0.0002367685956414789\n", + "Grad decoder.fc1.0.weight: 2.7068183044320904e-05\n", + "Grad decoder.fc1.0.bias: 0.0002121797006111592\n", + "Grad decoder.fc1.2.weight: 4.0371669456362724e-05\n", + "Grad decoder.fc1.2.bias: 0.00033768665161915123\n", + "Grad decoder.fc1.4.weight: 4.7347566578537226e-05\n", + "Grad decoder.fc1.4.bias: 0.0005275204894132912\n", + "Grad decoder.fc2.weight: 0.00012714877084363252\n", + "Grad decoder.fc2.bias: 0.002351181348785758\n", + "Grad _memory_unit.weight_ih_l0: 6.112152277637506e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.2750064342981204e-05\n", + "Grad _memory_unit.bias_hh_l0: 7.1945351010072045e-06\n", + "Grad _memory_unit.weight_ih_l1: 3.250588633818552e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.255137901054695e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.2051241103326902e-05\n", + "Data X Sample: tensor([[1.5700, 1.6662, 1.8242, 1.9635, 1.9704, 2.0832, 2.1307, 3.0621, 4.2278,\n", + " 4.2763, 4.3778, 4.1521, 4.1611, 4.0461, 3.8232, 3.7731, 3.6746, 3.6676,\n", + " 3.6427, 3.4981, 3.4620, 3.4124, 2.9665, 2.7771, 2.7890, 2.9070, 2.9224,\n", + " 3.0181, 2.9280, 3.1802, 3.3000, 3.2248, 3.7247, 2.7508, 4.5861, 4.8353,\n", + " 5.0538, 5.5417, 6.0342, 5.7282, 1.1502, 0.7010, 0.6791, 1.1194, 1.7601,\n", + " 1.8984, 1.1898, 1.7359]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5382, -0.6576, 0.4164, -0.2595, 0.2131, 1.1236, 0.2499, 0.3077,\n", + " 0.9789, 0.2364, -0.0389, 1.2819, -0.2059, -0.4988, -0.4095, -0.4631,\n", + " 0.1099, -0.5819, 0.0414, 0.2307, -0.0426, -0.8144, -0.2260, 0.3598,\n", + " -0.2934, -0.2069, -0.5361, -0.0246, -0.2265, -0.3837, -0.6984, 0.5315,\n", + " -0.7544, -0.7751, 1.0316, -0.8661, -0.3357, 0.8631, 0.9834, 0.2990,\n", + " 0.3557, 0.6817, 0.6444]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1871, -0.2004, -0.0972, -0.1082, 0.0352, 0.1038, 0.1374, 0.2120,\n", + " 0.1641, 0.1784, 0.1536, -0.1294, -0.0550, -0.1934, -0.1412, -0.1922,\n", + " -0.1465, -0.0044, -0.0122, -0.0730, -0.0476, -0.0120, 0.0090, -0.0307,\n", + " 0.0309, 0.0470, -0.1105, -0.0682, -0.1485, -0.1497, -0.1706, -0.1196,\n", + " -0.1782, -0.2035, -0.1139, -0.1254, -0.0157, -0.0229, 0.0338, 0.1927,\n", + " 0.2641, 0.2208, 0.1683]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002533514052629471\n", + "Grad encoder.fc1.bias: 0.00012017347762594\n", + "Grad encoder.encoder.0.weight: 5.9307480114512146e-05\n", + "Grad encoder.encoder.0.bias: 0.0001703377638477832\n", + "Grad encoder.encoder.2.weight: 3.9562211895827204e-05\n", + "Grad encoder.encoder.2.bias: 0.00020568784384522587\n", + "Grad encoder.encoder.4.weight: 0.0001376219734083861\n", + "Grad encoder.encoder.4.bias: 0.0008457311196252704\n", + "Grad decoder.fc1.0.weight: 5.0547321734484285e-05\n", + "Grad decoder.fc1.0.bias: 0.0003963976923841983\n", + "Grad decoder.fc1.2.weight: 6.528802623506635e-05\n", + "Grad decoder.fc1.2.bias: 0.0005960621638223529\n", + "Grad decoder.fc1.4.weight: 6.607663817703724e-05\n", + "Grad decoder.fc1.4.bias: 0.0007534128380939364\n", + "Grad decoder.fc2.weight: 0.00012983394844923168\n", + "Grad decoder.fc2.bias: 0.001772819203324616\n", + "Grad _memory_unit.weight_ih_l0: 1.4857198038953356e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.078604640904814e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.6350992154912092e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.2433841776510235e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.094169217860326e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.79702721349895e-05\n", + "Data X Sample: tensor([[ 0.0032, 0.0000, 0.0135, 0.0044, 0.0000, 0.0147, 0.0154, 0.0071,\n", + " 0.0220, 0.0126, 0.0127, 0.0214, 0.0200, 0.0191, 0.0252, 0.0014,\n", + " -0.0723, -0.0793, -0.0971, -0.0744, -0.0957, -0.0674, -0.0578, -0.0706,\n", + " -0.0638, -0.1384, -0.1225, -0.1754, -0.0659, -0.0098, -0.0280, -0.0249,\n", + " 0.0066, -0.0320, 0.0123, 0.0438, 0.0000, 0.0080, 0.0761, 0.0113,\n", + " 0.0573, 0.0159, -0.0020, -0.0201, 0.0198, 0.0057, 0.0000, 0.0000]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.9411, 0.5693, -0.0104, 0.6889, -0.7336, -1.1971, -0.9885, -0.9179,\n", + " -0.6071, -0.8490, -1.0308, -1.7308, -0.6821, -0.3736, -0.2426, 0.3046,\n", + " -0.5948, 0.4046, 0.2697, -0.2203, 0.1488, 0.7249, -0.6426, -1.3396,\n", + " 0.3146, 0.0211, -0.2441, 1.1506, 0.4397, 0.8318, 0.5701, -0.2679,\n", + " 0.3223, -0.0582, -0.1743, 0.8937, 0.7329, -0.5929, 0.7565, -0.5456,\n", + " -0.7435, -0.7365, 0.1416]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4315, 0.2943, 0.0836, 0.2570, 0.1116, -0.1130, -0.4290, -0.4905,\n", + " -0.2556, -0.2988, -0.2646, 0.2524, 0.2001, 0.2882, 0.1794, 0.3325,\n", + " 0.2064, 0.1237, 0.1199, 0.1532, 0.0712, 0.0932, 0.0977, 0.1137,\n", + " 0.0267, 0.0923, 0.0194, 0.1458, 0.2752, 0.3673, 0.2962, 0.3062,\n", + " 0.3533, 0.3294, 0.1695, 0.1905, -0.0988, -0.0012, 0.0418, -0.3424,\n", + " -0.3248, -0.3469, -0.2732]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005760842468589544\n", + "Grad encoder.fc1.bias: 0.002272088313475251\n", + "Grad encoder.encoder.0.weight: 0.00013637219672091305\n", + "Grad encoder.encoder.0.bias: 0.0015662636142224073\n", + "Grad encoder.encoder.2.weight: 9.408647019881755e-05\n", + "Grad encoder.encoder.2.bias: 0.0012184442020952702\n", + "Grad encoder.encoder.4.weight: 0.00024650554405525327\n", + "Grad encoder.encoder.4.bias: 0.002428736537694931\n", + "Grad decoder.fc1.0.weight: 0.00010610627941787243\n", + "Grad decoder.fc1.0.bias: 0.0011672438122332096\n", + "Grad decoder.fc1.2.weight: 0.00014234348782338202\n", + "Grad decoder.fc1.2.bias: 0.0013169348239898682\n", + "Grad decoder.fc1.4.weight: 9.706261334940791e-05\n", + "Grad decoder.fc1.4.bias: 0.0011767633259296417\n", + "Grad decoder.fc2.weight: 0.00016576724010519683\n", + "Grad decoder.fc2.bias: 0.0025120899081230164\n", + "Grad _memory_unit.weight_ih_l0: 1.738381433824543e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00010093043965753168\n", + "Grad _memory_unit.bias_hh_l0: 5.525171582121402e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.2007356417598203e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00022107250697445124\n", + "Grad _memory_unit.bias_hh_l1: 0.00011760315101128072\n", + "Data X Sample: tensor([[1.5287, 1.7027, 1.9294, 2.0269, 2.2111, 2.1451, 2.0722, 2.6178, 3.7909,\n", + " 4.2779, 4.2858, 4.2884, 4.2344, 4.0433, 3.9216, 3.7389, 3.7014, 3.5670,\n", + " 3.4424, 3.4609, 3.5136, 3.3665, 2.9279, 2.8077, 2.8697, 2.9723, 2.8744,\n", + " 2.9529, 3.0078, 3.1933, 3.2545, 3.3547, 3.7137, 2.7599, 4.5126, 4.8182,\n", + " 5.1305, 5.4542, 5.9391, 5.7991, 1.1550, 0.7129, 0.7175, 1.2687, 1.8275,\n", + " 2.0414, 1.2510, 1.9548]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3555, 1.0677, -0.1566, 0.7740, 0.8531, -0.4960, 0.2114, -0.1024,\n", + " -0.8918, -0.2492, -0.8302, 2.3681, -0.7364, 0.4306, 0.5881, 0.6184,\n", + " 0.2498, 0.0072, -0.5541, -1.1793, -1.0513, -0.3731, -1.4421, 4.6488,\n", + " 1.9748, -1.1962, 0.3451, -0.7773, -0.5872, -0.6933, 0.7764, -0.8999,\n", + " -0.0146, -0.6462, 0.6748, 0.3739, 1.0532, 0.0000, -0.2886, 0.1095,\n", + " 0.1099, 0.5564, -0.9279]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1742, -0.1861, -0.0813, -0.1073, 0.0231, 0.1016, 0.1345, 0.1981,\n", + " 0.1541, 0.1771, 0.1577, -0.1275, -0.0496, -0.1803, -0.1414, -0.1895,\n", + " -0.1590, -0.0036, -0.0139, -0.0733, -0.0386, -0.0206, 0.0064, -0.0290,\n", + " 0.0119, 0.0438, -0.1097, -0.0665, -0.1432, -0.1406, -0.1760, -0.1111,\n", + " -0.1757, -0.2016, -0.1168, -0.1313, -0.0226, -0.0130, 0.0321, 0.1903,\n", + " 0.2583, 0.2109, 0.1525]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000523157010320574\n", + "Grad encoder.fc1.bias: 0.0009028339991346002\n", + "Grad encoder.encoder.0.weight: 0.00011156861000927165\n", + "Grad encoder.encoder.0.bias: 0.0007831696420907974\n", + "Grad encoder.encoder.2.weight: 7.421291229547933e-05\n", + "Grad encoder.encoder.2.bias: 0.0007678332040086389\n", + "Grad encoder.encoder.4.weight: 0.00024236211902461946\n", + "Grad encoder.encoder.4.bias: 0.00148053839802742\n", + "Grad decoder.fc1.0.weight: 7.680135604459792e-05\n", + "Grad decoder.fc1.0.bias: 0.0007425416260957718\n", + "Grad decoder.fc1.2.weight: 8.142294245772064e-05\n", + "Grad decoder.fc1.2.bias: 0.0008172629168257117\n", + "Grad decoder.fc1.4.weight: 7.401403127005324e-05\n", + "Grad decoder.fc1.4.bias: 0.0009448421187698841\n", + "Grad decoder.fc2.weight: 0.00013327164924703538\n", + "Grad decoder.fc2.bias: 0.00205357582308352\n", + "Grad _memory_unit.weight_ih_l0: 1.360996702715056e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.188983727246523e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.8504786061821505e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.065066140261479e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00015308501315303147\n", + "Grad _memory_unit.bias_hh_l1: 7.978548819664866e-05\n", + "Data X Sample: tensor([[1.3780, 1.5337, 1.7415, 1.8345, 2.0062, 2.0979, 2.0799, 1.8114, 2.6241,\n", + " 3.9303, 4.3810, 4.1637, 4.1411, 4.0215, 3.7475, 3.6226, 3.6196, 3.6289,\n", + " 3.5064, 3.5111, 3.5454, 3.3802, 3.0628, 2.8210, 2.7908, 2.8365, 2.9170,\n", + " 2.9284, 2.9627, 3.0459, 3.1706, 3.3105, 3.8655, 2.8881, 4.6694, 4.8888,\n", + " 5.1836, 5.5072, 5.8567, 5.8218, 1.1072, 0.6612, 0.6386, 1.1137, 1.5262,\n", + " 1.8298, 1.3326, 1.7750]], device='cuda:0')\n", + "Data Y Sample: tensor([[-3.5629e-01, -4.6175e-01, -5.5931e-01, -2.4547e-01, -3.0685e-01,\n", + " -1.0543e+00, -1.1759e-01, 2.0705e-01, -1.3368e-01, 4.0780e-01,\n", + " 5.8747e-01, -7.5269e-01, 8.5565e-01, 1.9582e-01, -4.1864e-01,\n", + " 2.7596e-01, -7.2499e-01, -9.0655e-01, -4.3091e-01, -7.4653e-01,\n", + " 1.7554e-01, -3.9823e-01, -7.9889e-01, -1.3914e+00, 4.5524e-01,\n", + " 1.0884e+00, 2.4428e-01, 6.9871e-01, -3.0593e-01, 3.2516e-01,\n", + " 1.0552e-01, -6.2542e-01, -2.7983e-01, 2.2171e-01, -5.9385e-01,\n", + " -4.1911e-01, -2.6554e-04, -7.8147e-01, 1.7270e-02, 3.9118e-01,\n", + " 3.9278e-01, 5.5432e-01, -1.6093e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1750, -0.1856, -0.0755, -0.0920, 0.0440, 0.1268, 0.1461, 0.1935,\n", + " 0.1541, 0.1881, 0.1632, -0.1357, -0.0583, -0.1887, -0.1508, -0.2027,\n", + " -0.1660, -0.0031, -0.0218, -0.0736, -0.0418, -0.0373, 0.0126, -0.0288,\n", + " -0.0004, 0.0326, -0.1286, -0.0825, -0.1614, -0.1438, -0.1956, -0.1059,\n", + " -0.2005, -0.2161, -0.1276, -0.1416, -0.0266, -0.0148, 0.0389, 0.1990,\n", + " 0.2597, 0.2084, 0.1448]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 6.645983376074582e-05\n", + "Grad encoder.fc1.bias: 0.0008703134953975677\n", + "Grad encoder.encoder.0.weight: 2.8522237698780373e-05\n", + "Grad encoder.encoder.0.bias: 0.0009006723412312567\n", + "Grad encoder.encoder.2.weight: 2.9995813747518696e-05\n", + "Grad encoder.encoder.2.bias: 0.0006955111166462302\n", + "Grad encoder.encoder.4.weight: 0.00011039340461138636\n", + "Grad encoder.encoder.4.bias: 0.0019446071237325668\n", + "Grad decoder.fc1.0.weight: 5.1715625886572525e-05\n", + "Grad decoder.fc1.0.bias: 0.0006219865754246712\n", + "Grad decoder.fc1.2.weight: 7.285454194061458e-05\n", + "Grad decoder.fc1.2.bias: 0.0006276760250329971\n", + "Grad decoder.fc1.4.weight: 6.123615457909182e-05\n", + "Grad decoder.fc1.4.bias: 0.0005999243585392833\n", + "Grad decoder.fc2.weight: 0.00015084390179254115\n", + "Grad decoder.fc2.bias: 0.001759135047905147\n", + "Grad _memory_unit.weight_ih_l0: 1.7996777387452312e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00013332114031072706\n", + "Grad _memory_unit.bias_hh_l0: 7.056447793729603e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.25865606404841e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00020003700046800077\n", + "Grad _memory_unit.bias_hh_l1: 0.00010699241829570383\n", + "Data X Sample: tensor([[1.6920, 1.9386, 2.1127, 2.1975, 2.2811, 2.3690, 2.4450, 2.4389, 2.4801,\n", + " 2.5465, 2.5886, 2.5960, 2.5655, 2.5438, 2.5093, 2.5108, 2.5032, 2.4895,\n", + " 2.4842, 2.5199, 2.6425, 2.7250, 2.6074, 2.7332, 2.7702, 2.7817, 2.8717,\n", + " 2.7816, 2.5360, 2.5841, 2.6071, 2.4925, 2.2242, 1.4807, 2.0099, 1.8631,\n", + " 1.7541, 1.6591, 1.6733, 1.5916, 1.3554, 0.7428, 0.8327, 1.3548, 1.9940,\n", + " 2.1215, 1.4686, 2.1034]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2718, 0.0141, 0.5393, 0.7743, 1.1951, 0.7135, -0.4129, -0.2955,\n", + " 0.1343, -0.4116, -0.5116, -0.5335, 1.6473, -1.1998, -0.0726, 0.3097,\n", + " 0.3863, -1.0580, 0.0906, -0.8087, -0.2412, 0.1719, -0.9424, -0.3660,\n", + " -0.8535, 0.0846, 0.2873, 0.6845, 0.5603, -0.0604, -0.0244, -0.0550,\n", + " 0.0607, 0.6311, -0.4605, -0.3292, -0.0457, 0.0761, -0.0156, -0.0877,\n", + " -0.3122, -0.3214, 0.1401]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4907, 0.4351, 0.1514, 0.2970, 0.1854, -0.1436, -0.4935, -0.5692,\n", + " -0.2371, -0.3461, -0.3162, 0.3019, 0.2534, 0.3215, 0.2830, 0.3878,\n", + " 0.3269, 0.1392, 0.1040, 0.2004, 0.1346, 0.1309, 0.0634, 0.0860,\n", + " 0.1014, 0.1968, -0.0047, 0.0810, 0.2771, 0.3824, 0.3121, 0.3012,\n", + " 0.4270, 0.3444, 0.2489, 0.2036, -0.0886, 0.0190, 0.0094, -0.3733,\n", + " -0.3752, -0.4419, -0.4038]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00021435668168123811\n", + "Grad encoder.fc1.bias: 0.0002636294811964035\n", + "Grad encoder.encoder.0.weight: 4.944981628796086e-05\n", + "Grad encoder.encoder.0.bias: 0.0002482141135260463\n", + "Grad encoder.encoder.2.weight: 3.316370566608384e-05\n", + "Grad encoder.encoder.2.bias: 0.0003250864101573825\n", + "Grad encoder.encoder.4.weight: 0.00010109609866049141\n", + "Grad encoder.encoder.4.bias: 0.0012720937374979258\n", + "Grad decoder.fc1.0.weight: 4.3262487452011555e-05\n", + "Grad decoder.fc1.0.bias: 0.0005376921035349369\n", + "Grad decoder.fc1.2.weight: 6.904746987856925e-05\n", + "Grad decoder.fc1.2.bias: 0.0009050827356986701\n", + "Grad decoder.fc1.4.weight: 6.551899423357099e-05\n", + "Grad decoder.fc1.4.bias: 0.0009402367868460715\n", + "Grad decoder.fc2.weight: 0.00015753020124975592\n", + "Grad decoder.fc2.bias: 0.0025191076565533876\n", + "Grad _memory_unit.weight_ih_l0: 9.951460924639832e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.323286263272166e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.791101335082203e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.905300556856673e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011852137686219066\n", + "Grad _memory_unit.bias_hh_l1: 6.172111898194999e-05\n", + "Data X Sample: tensor([[-0.0042, 0.0000, 0.0015, -0.0022, 0.0017, 0.0088, 0.0015, -0.0028,\n", + " 0.0000, 0.0032, 0.0127, -0.0019, -0.0111, 0.0027, -0.0177, 0.0000,\n", + " 0.0110, 0.0213, 0.0248, 0.0167, 0.0245, 0.0015, 0.0169, 0.0248,\n", + " 0.0113, 0.0157, 0.0373, 0.0449, -0.0069, 0.0295, 0.0385, 0.0111,\n", + " 0.0154, -0.0069, -0.0025, 0.0316, 0.0020, -0.0027, 0.0254, 0.0000,\n", + " 0.0430, 0.0239, 0.0101, -0.0029, -0.0119, -0.0229, -0.0544, -0.0626]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.8604, 1.1357, 1.1957, 1.8454, 1.2406, 1.3385, -0.8510, -1.1730,\n", + " -0.7938, -0.8696, -0.9533, 0.4149, -0.0556, 1.9374, 1.3405, 0.5265,\n", + " 0.9383, 0.0698, 0.3747, 0.4585, 0.8672, 0.7317, -0.5370, 0.4007,\n", + " 1.5814, -0.5693, 0.7167, -0.1910, 2.1748, 1.0544, 1.8577, 1.0589,\n", + " -0.2335, -0.2911, -0.1589, 0.3502, -0.5862, -0.1765, 0.9746, -1.0168,\n", + " -0.7393, -1.6919, -0.6790]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 1.1431, 0.7638, 0.1781, 0.5822, -0.2020, -0.5838, -1.3672, -1.4820,\n", + " -0.9938, -0.9749, -1.0771, 0.4826, 0.6387, 0.7941, 0.3730, 0.7186,\n", + " 0.6097, 0.1291, 0.1243, 0.2643, 0.1153, 0.2124, 0.1472, 0.2164,\n", + " -0.0089, 0.0327, 0.3641, 0.6351, 1.1465, 1.1914, 0.9911, 0.9339,\n", + " 1.0369, 0.7333, 0.5846, 0.4218, -0.1754, -0.1130, 0.0150, -1.0559,\n", + " -0.9738, -0.8352, -0.5772]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00015861661813687533\n", + "Grad encoder.fc1.bias: 9.492808021605015e-05\n", + "Grad encoder.encoder.0.weight: 4.6226898120949045e-05\n", + "Grad encoder.encoder.0.bias: 0.000125977661809884\n", + "Grad encoder.encoder.2.weight: 3.1533880246570334e-05\n", + "Grad encoder.encoder.2.bias: 0.00018838477262761444\n", + "Grad encoder.encoder.4.weight: 9.37035511014983e-05\n", + "Grad encoder.encoder.4.bias: 0.0006047255592420697\n", + "Grad decoder.fc1.0.weight: 4.8976329708239064e-05\n", + "Grad decoder.fc1.0.bias: 0.0004568198637571186\n", + "Grad decoder.fc1.2.weight: 8.435749623458833e-05\n", + "Grad decoder.fc1.2.bias: 0.0008324556401930749\n", + "Grad decoder.fc1.4.weight: 8.148970664478838e-05\n", + "Grad decoder.fc1.4.bias: 0.0008946707239374518\n", + "Grad decoder.fc2.weight: 0.00015278728096745908\n", + "Grad decoder.fc2.bias: 0.0016828782390803099\n", + "Grad _memory_unit.weight_ih_l0: 1.199117014039075e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.8533728254842572e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.4801467841607518e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.064903805556241e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.002749382285401e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.227499812259339e-05\n", + "Data X Sample: tensor([[1.7069, 1.9022, 2.0721, 2.2609, 2.4177, 2.5355, 2.6268, 2.6220, 2.7437,\n", + " 2.7124, 2.7948, 2.7148, 2.7075, 2.5383, 2.6076, 2.5833, 2.5410, 2.5785,\n", + " 2.5957, 2.5980, 2.6450, 2.7281, 2.6339, 2.6874, 2.6107, 2.7373, 2.5760,\n", + " 2.4635, 2.5117, 2.6430, 2.4917, 2.5119, 2.2616, 1.4692, 1.9340, 1.8850,\n", + " 1.7600, 1.6246, 1.6290, 1.6455, 1.3936, 0.7906, 0.8023, 1.3319, 1.9742,\n", + " 2.3559, 1.4074, 2.0486]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3937, -0.4877, -0.0091, 0.2459, -1.0665, 0.1972, -0.4320, -0.2451,\n", + " 0.0841, -0.3341, -0.1869, -0.8502, 0.9457, -0.2429, -0.5519, -0.0670,\n", + " 0.3154, -0.8288, 0.2052, -0.9112, 0.1831, 0.4402, 0.4534, 1.3554,\n", + " -0.3656, 0.0642, -1.4681, 0.4070, 0.1425, 0.4013, 0.7971, 0.0047,\n", + " 0.1370, 0.2294, -0.6432, 0.3625, 0.1767, -0.6411, 0.3478, -0.2785,\n", + " -0.4799, -0.2150, -0.7326]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3894, 0.3565, 0.1347, 0.2288, 0.1273, -0.1269, -0.4087, -0.4728,\n", + " -0.2058, -0.2791, -0.2558, 0.2299, 0.2025, 0.2604, 0.2236, 0.3049,\n", + " 0.2539, 0.1070, 0.0789, 0.1574, 0.1086, 0.0997, 0.0350, 0.0824,\n", + " 0.0885, 0.1694, -0.0025, 0.0636, 0.2479, 0.3217, 0.2457, 0.2459,\n", + " 0.3347, 0.2600, 0.2125, 0.1372, -0.0687, 0.0240, 0.0024, -0.2984,\n", + " -0.2949, -0.3473, -0.3180]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003308141604065895\n", + "Grad encoder.fc1.bias: 0.0006360691040754318\n", + "Grad encoder.encoder.0.weight: 7.438813190674409e-05\n", + "Grad encoder.encoder.0.bias: 0.000512756290845573\n", + "Grad encoder.encoder.2.weight: 5.1235390856163576e-05\n", + "Grad encoder.encoder.2.bias: 0.0005494856741279364\n", + "Grad encoder.encoder.4.weight: 0.00013924669474363327\n", + "Grad encoder.encoder.4.bias: 0.001767525216564536\n", + "Grad decoder.fc1.0.weight: 5.383100869948976e-05\n", + "Grad decoder.fc1.0.bias: 0.0006825770251452923\n", + "Grad decoder.fc1.2.weight: 7.654396176803857e-05\n", + "Grad decoder.fc1.2.bias: 0.0008900286629796028\n", + "Grad decoder.fc1.4.weight: 6.625651440117508e-05\n", + "Grad decoder.fc1.4.bias: 0.0008498555980622768\n", + "Grad decoder.fc2.weight: 0.00013616059732157737\n", + "Grad decoder.fc2.bias: 0.0018738603685051203\n", + "Grad _memory_unit.weight_ih_l0: 1.2495781447796617e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0001033572043525055\n", + "Grad _memory_unit.bias_hh_l0: 5.312689972925e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.166723323985934e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00016050582053139806\n", + "Grad _memory_unit.bias_hh_l1: 8.4290535596665e-05\n", + "Data X Sample: tensor([[2.5810, 2.9640, 3.2321, 3.4154, 3.5020, 3.5992, 3.6853, 3.8032, 3.8373,\n", + " 3.9193, 3.9400, 4.0216, 3.6818, 3.6098, 3.5735, 3.6404, 3.5850, 3.5554,\n", + " 3.4279, 3.2880, 3.2731, 3.2394, 2.9399, 2.8039, 2.7946, 2.8339, 2.8611,\n", + " 2.8958, 2.6643, 2.8952, 2.8801, 2.9512, 2.9921, 2.0734, 3.5860, 4.0351,\n", + " 4.2810, 4.5160, 5.0327, 4.8969, 2.0236, 1.2088, 1.1075, 1.9375, 2.9295,\n", + " 3.2422, 2.1757, 3.1120]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1850, -1.1412, 1.2860, 0.1183, -0.2140, -1.6565, -0.2094, 0.6006,\n", + " -0.5669, -0.6288, -0.4235, -0.9494, -0.0673, 0.3273, 0.3916, 0.3930,\n", + " 0.0869, 0.2351, 1.5538, 0.4502, 0.3455, -0.2561, -0.3499, 0.2047,\n", + " 0.3706, 0.0100, -0.8833, -2.0061, -0.5404, 0.4681, -0.6457, 0.1254,\n", + " -0.8461, -0.2656, -1.0207, -0.3210, -0.0182, -0.0920, -0.7130, 1.3153,\n", + " 0.0050, 0.3158, 0.5570]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2649, -0.3069, -0.1471, -0.2881, -0.1880, -0.0445, 0.0879, 0.2263,\n", + " 0.1638, 0.1735, 0.2177, -0.1147, -0.0645, -0.1876, -0.1330, -0.2299,\n", + " -0.2579, -0.1005, -0.0654, -0.1195, -0.0530, -0.0379, -0.0689, -0.0535,\n", + " 0.0691, 0.0680, 0.0415, -0.0291, -0.0603, -0.1450, -0.1575, -0.1663,\n", + " -0.0670, -0.1929, -0.0909, -0.1279, -0.0513, -0.0026, 0.0055, 0.2764,\n", + " 0.2858, 0.2559, 0.1875]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003650893340818584\n", + "Grad encoder.fc1.bias: 0.00043851189548149705\n", + "Grad encoder.encoder.0.weight: 7.525543333031237e-05\n", + "Grad encoder.encoder.0.bias: 0.00039970839861780405\n", + "Grad encoder.encoder.2.weight: 4.9108086386695504e-05\n", + "Grad encoder.encoder.2.bias: 0.0003954587155021727\n", + "Grad encoder.encoder.4.weight: 0.0001580280950292945\n", + "Grad encoder.encoder.4.bias: 0.001318442984484136\n", + "Grad decoder.fc1.0.weight: 5.726004019379616e-05\n", + "Grad decoder.fc1.0.bias: 0.0006024934118613601\n", + "Grad decoder.fc1.2.weight: 6.53498645988293e-05\n", + "Grad decoder.fc1.2.bias: 0.0007391787366941571\n", + "Grad decoder.fc1.4.weight: 7.236279634526e-05\n", + "Grad decoder.fc1.4.bias: 0.0011083781719207764\n", + "Grad decoder.fc2.weight: 0.00014209619257599115\n", + "Grad decoder.fc2.bias: 0.0023730136454105377\n", + "Grad _memory_unit.weight_ih_l0: 1.7218993889400735e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.950548100168817e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.6216168407700025e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.484289770014584e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011829874711111188\n", + "Grad _memory_unit.bias_hh_l1: 6.156617018859833e-05\n", + "Data X Sample: tensor([[2.6022, 3.1169, 3.6168, 3.7434, 3.9544, 4.0426, 4.0966, 4.1354, 4.1717,\n", + " 4.1215, 4.0288, 4.1423, 3.7927, 3.7298, 3.5559, 3.7512, 3.7187, 3.5515,\n", + " 3.7769, 3.6804, 3.8178, 3.8089, 3.1906, 2.9833, 2.9297, 2.9070, 2.9144,\n", + " 2.9814, 3.0147, 3.1540, 3.2126, 3.3823, 3.5311, 2.5860, 3.8164, 4.2661,\n", + " 4.4403, 4.9374, 5.4067, 5.3934, 2.0522, 1.2307, 1.2773, 2.2073, 3.2070,\n", + " 3.4081, 2.2776, 3.2059]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.7347, -0.9605, -1.0316, -0.9023, -0.0619, -0.0792, 0.3676, 0.5797,\n", + " 1.0817, 0.4462, -0.4989, -0.4883, 0.8398, 0.0650, 0.6431, 0.7233,\n", + " -0.3185, 0.1630, 0.6229, 0.0219, -0.1250, -0.3028, 0.6417, -0.5027,\n", + " -0.7761, 0.0410, 0.2184, 0.6323, -0.7954, -0.4049, -0.5058, -0.4576,\n", + " -0.8918, -0.6030, -0.6150, 0.3291, 0.3282, 0.7652, 0.0000, 0.2929,\n", + " 0.0595, 0.4828, -0.4920]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2843, -0.3257, -0.1525, -0.3118, -0.1979, -0.0521, 0.0882, 0.2369,\n", + " 0.1676, 0.1776, 0.2283, -0.1206, -0.0708, -0.1995, -0.1380, -0.2416,\n", + " -0.2714, -0.1094, -0.0684, -0.1224, -0.0576, -0.0443, -0.0746, -0.0557,\n", + " 0.0739, 0.0678, 0.0532, -0.0270, -0.0628, -0.1568, -0.1618, -0.1739,\n", + " -0.0718, -0.2033, -0.0962, -0.1330, -0.0526, -0.0017, 0.0103, 0.2886,\n", + " 0.2957, 0.2677, 0.2007]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00014859656221233308\n", + "Grad encoder.fc1.bias: 0.00010465008381288499\n", + "Grad encoder.encoder.0.weight: 4.523191455518827e-05\n", + "Grad encoder.encoder.0.bias: 0.00015118293231353164\n", + "Grad encoder.encoder.2.weight: 3.7193367461441085e-05\n", + "Grad encoder.encoder.2.bias: 0.0002179421717301011\n", + "Grad encoder.encoder.4.weight: 9.035344555741176e-05\n", + "Grad encoder.encoder.4.bias: 0.000521389243658632\n", + "Grad decoder.fc1.0.weight: 4.293190431781113e-05\n", + "Grad decoder.fc1.0.bias: 0.00032857575570233166\n", + "Grad decoder.fc1.2.weight: 4.5990025682840496e-05\n", + "Grad decoder.fc1.2.bias: 0.00039374473271891475\n", + "Grad decoder.fc1.4.weight: 4.5197317376732826e-05\n", + "Grad decoder.fc1.4.bias: 0.0005010642344132066\n", + "Grad decoder.fc2.weight: 0.00011769531556637958\n", + "Grad decoder.fc2.bias: 0.0018951782258227468\n", + "Grad _memory_unit.weight_ih_l0: 1.2730612979794387e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.67120631178841e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.4418417777051218e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.8061119741760194e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.291373185580596e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.767531961784698e-05\n", + "Data X Sample: tensor([[1.9328, 2.5678, 2.7964, 2.9125, 3.1468, 3.2382, 3.2385, 3.3574, 3.3588,\n", + " 3.4785, 3.4991, 3.4821, 3.3400, 3.3808, 3.3693, 3.2261, 3.2784, 3.2323,\n", + " 3.3701, 3.2303, 3.3737, 3.3481, 3.1809, 3.0100, 2.9222, 2.8208, 2.6187,\n", + " 2.6225, 2.3417, 2.3090, 2.0962, 2.1029, 1.9272, 1.2793, 2.0247, 2.1817,\n", + " 2.3775, 2.4886, 2.8776, 2.8542, 1.6513, 0.9818, 0.9802, 1.8169, 2.6203,\n", + " 2.7333, 1.9105, 2.6742]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3173, 0.5524, 0.0231, -0.1518, -0.3098, -0.3462, -0.6707, 0.6213,\n", + " -0.3404, -0.1618, -0.2595, -0.3036, 1.9935, -1.2133, -0.7818, -0.8252,\n", + " -1.7224, 0.4230, -0.9165, -0.5453, -1.8806, -0.3003, 0.6609, -0.0359,\n", + " 0.0983, 0.2261, 0.0263, -0.7848, -0.0566, 0.3904, -0.1893, -0.4235,\n", + " -0.5005, -0.3539, -0.1560, -0.7230, 0.4246, 0.0000, -0.7130, 1.3524,\n", + " 0.7158, 0.3739, 0.4823]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2793, -0.2805, -0.1306, -0.3008, -0.1842, -0.0686, 0.0536, 0.2035,\n", + " 0.1532, 0.1640, 0.1901, -0.0954, -0.0545, -0.1736, -0.1074, -0.2197,\n", + " -0.2518, -0.0956, -0.0388, -0.0951, -0.0516, -0.0427, -0.0545, -0.0596,\n", + " 0.0431, 0.0486, 0.0530, -0.0005, -0.0559, -0.1692, -0.1336, -0.1507,\n", + " -0.0786, -0.1682, -0.0891, -0.1285, -0.0392, 0.0185, 0.0058, 0.2421,\n", + " 0.2819, 0.2222, 0.1985]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00017202281742356718\n", + "Grad encoder.fc1.bias: 0.00103494874201715\n", + "Grad encoder.encoder.0.weight: 6.01663559791632e-05\n", + "Grad encoder.encoder.0.bias: 0.0007806908106431365\n", + "Grad encoder.encoder.2.weight: 5.541420978261158e-05\n", + "Grad encoder.encoder.2.bias: 0.00066391471773386\n", + "Grad encoder.encoder.4.weight: 0.00016342647722922266\n", + "Grad encoder.encoder.4.bias: 0.001733969198539853\n", + "Grad decoder.fc1.0.weight: 7.956484478199854e-05\n", + "Grad decoder.fc1.0.bias: 0.0007134375628083944\n", + "Grad decoder.fc1.2.weight: 0.00012437862460501492\n", + "Grad decoder.fc1.2.bias: 0.0011172819649800658\n", + "Grad decoder.fc1.4.weight: 9.861463331617415e-05\n", + "Grad decoder.fc1.4.bias: 0.001027011196129024\n", + "Grad decoder.fc2.weight: 0.00020280042372178286\n", + "Grad decoder.fc2.bias: 0.002098614349961281\n", + "Grad _memory_unit.weight_ih_l0: 2.034215140156448e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00014908317825756967\n", + "Grad _memory_unit.bias_hh_l0: 7.678373367525637e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.953280485002324e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00022868083033245057\n", + "Grad _memory_unit.bias_hh_l1: 0.00012334069469943643\n", + "Data X Sample: tensor([[2.7783, 2.3421, 2.0300, 2.0575, 2.1087, 2.1451, 3.4634, 4.1041, 4.2034,\n", + " 4.2526, 4.2699, 4.2163, 4.1944, 3.9397, 3.8913, 3.5803, 3.5300, 3.6540,\n", + " 3.7397, 3.4851, 3.3173, 3.4292, 2.9689, 2.9298, 2.8697, 2.9305, 2.8398,\n", + " 2.9243, 2.9904, 2.9312, 2.9431, 3.0673, 3.3749, 2.4487, 4.1032, 4.4413,\n", + " 4.8120, 5.2899, 5.9137, 5.8388, 1.4509, 0.8165, 0.7114, 1.2429, 1.8037,\n", + " 2.0071, 1.2510, 1.8375]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1276, 0.2094, 0.1145, -0.4735, 0.0568, 0.1037, 0.4892, 0.3972,\n", + " 1.0427, 0.1630, 0.3973, 1.2569, 0.4552, 0.2668, 0.2179, 1.1797,\n", + " 1.7024, 1.2314, -0.4115, -1.1395, 0.1208, 0.3201, -0.1815, 1.5812,\n", + " 0.1365, 0.1246, 1.2206, 0.2011, -0.1824, 0.0066, 0.3681, -1.1565,\n", + " -0.4155, -0.8388, -0.0760, -0.7494, 0.0000, 0.4351, 0.0173, 0.4462,\n", + " 0.2631, 0.3430, 1.3013]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2475, -0.2702, -0.0993, -0.2188, -0.0422, 0.0780, 0.1850, 0.2446,\n", + " 0.1739, 0.2038, 0.2369, -0.1637, -0.0692, -0.2465, -0.2051, -0.2627,\n", + " -0.2358, -0.0414, -0.0212, -0.0953, -0.0701, -0.0573, -0.0460, -0.0268,\n", + " 0.0170, 0.0684, -0.0777, -0.0619, -0.1537, -0.1840, -0.2212, -0.1710,\n", + " -0.1935, -0.2764, -0.1512, -0.1522, -0.0369, -0.0235, 0.0482, 0.2702,\n", + " 0.3106, 0.2937, 0.2218]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00016900477930903435\n", + "Grad encoder.fc1.bias: 0.0012451919028535485\n", + "Grad encoder.encoder.0.weight: 5.341223732102662e-05\n", + "Grad encoder.encoder.0.bias: 0.0008208960643969476\n", + "Grad encoder.encoder.2.weight: 4.4098829675931484e-05\n", + "Grad encoder.encoder.2.bias: 0.000523763766977936\n", + "Grad encoder.encoder.4.weight: 0.0001567088474985212\n", + "Grad encoder.encoder.4.bias: 0.0008472880581393838\n", + "Grad decoder.fc1.0.weight: 6.74352704663761e-05\n", + "Grad decoder.fc1.0.bias: 0.0005040277610532939\n", + "Grad decoder.fc1.2.weight: 0.00011237028229516\n", + "Grad decoder.fc1.2.bias: 0.0008410086738876998\n", + "Grad decoder.fc1.4.weight: 8.966089080786332e-05\n", + "Grad decoder.fc1.4.bias: 0.0008145521860569715\n", + "Grad decoder.fc2.weight: 0.00019271463679615408\n", + "Grad decoder.fc2.bias: 0.0022421744652092457\n", + "Grad _memory_unit.weight_ih_l0: 2.060433689621277e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.161500980146229e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.801504135481082e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.604612619616091e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00012199144111946225\n", + "Grad _memory_unit.bias_hh_l1: 6.363080319715664e-05\n", + "Data X Sample: tensor([[1.5212, 1.8410, 2.0270, 2.1319, 2.3085, 2.3071, 2.4342, 2.5170, 2.5972,\n", + " 2.5244, 2.5823, 2.5162, 2.5522, 2.4784, 2.3731, 2.4520, 2.3979, 2.4741,\n", + " 2.5338, 2.4753, 2.4978, 2.6148, 2.6315, 2.5557, 2.6557, 2.6511, 2.6426,\n", + " 2.6266, 2.2897, 2.4334, 2.2992, 2.4290, 2.2484, 1.4349, 1.9536, 1.7342,\n", + " 1.6007, 1.5027, 1.5719, 1.6313, 1.2647, 0.7129, 0.7356, 1.3376, 1.9306,\n", + " 2.1901, 1.2986, 1.9157]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3664, 1.0391, 0.1790, 0.6152, 0.3113, 0.5340, -0.3715, -0.5714,\n", + " -0.5938, -0.6366, -0.3680, -1.1968, 0.2919, -0.4045, -0.7061, 0.1331,\n", + " -0.2925, -1.7533, 0.0938, 0.2760, 0.8838, 0.0922, -0.0704, -0.4139,\n", + " -0.4353, 0.0759, -0.3343, -0.4656, -0.7404, 0.1610, 0.2119, 0.5421,\n", + " 0.1721, 0.8537, 0.4089, -0.8027, 0.0000, -0.8483, -0.2505, -0.1919,\n", + " -0.4637, -0.4110, -1.5353]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2979, 0.2786, 0.1332, 0.1498, 0.0536, -0.1019, -0.3271, -0.3724,\n", + " -0.1852, -0.2222, -0.1983, 0.1414, 0.1782, 0.2121, 0.1647, 0.2177,\n", + " 0.1700, 0.0676, 0.0570, 0.1092, 0.0738, 0.0550, 0.0012, 0.0817,\n", + " 0.0758, 0.1257, 0.0059, 0.0409, 0.2273, 0.2647, 0.1757, 0.1914,\n", + " 0.2372, 0.1529, 0.1709, 0.0604, -0.0269, 0.0325, -0.0046, -0.2088,\n", + " -0.2025, -0.2419, -0.2477]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003485335619188845\n", + "Grad encoder.fc1.bias: 0.0017391418805345893\n", + "Grad encoder.encoder.0.weight: 8.394377073273063e-05\n", + "Grad encoder.encoder.0.bias: 0.0010512713342905045\n", + "Grad encoder.encoder.2.weight: 6.273177859839052e-05\n", + "Grad encoder.encoder.2.bias: 0.0007918782066553831\n", + "Grad encoder.encoder.4.weight: 0.00018181055202148855\n", + "Grad encoder.encoder.4.bias: 0.0012466147309169173\n", + "Grad decoder.fc1.0.weight: 7.174930942710489e-05\n", + "Grad decoder.fc1.0.bias: 0.0005737764877267182\n", + "Grad decoder.fc1.2.weight: 8.290621917694807e-05\n", + "Grad decoder.fc1.2.bias: 0.0006924272747710347\n", + "Grad decoder.fc1.4.weight: 6.449289503507316e-05\n", + "Grad decoder.fc1.4.bias: 0.0006688976427540183\n", + "Grad decoder.fc2.weight: 0.0001474446471547708\n", + "Grad decoder.fc2.bias: 0.0018300807569175959\n", + "Grad _memory_unit.weight_ih_l0: 2.704479447857011e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.7921606639865786e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.46141641784925e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0597628715913743e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010715298412833363\n", + "Grad _memory_unit.bias_hh_l1: 5.826572305522859e-05\n", + "Data X Sample: tensor([[1.4300, 1.8687, 1.9775, 2.1035, 2.1821, 2.2659, 2.3002, 2.3140, 2.4044,\n", + " 2.4659, 2.4998, 2.5064, 2.3413, 2.3584, 2.3025, 2.3153, 2.3916, 2.3193,\n", + " 2.4347, 2.4734, 2.5984, 2.4740, 2.4797, 2.4011, 2.5149, 2.5048, 2.3230,\n", + " 2.4104, 1.9566, 1.9749, 1.8337, 1.7658, 1.5224, 0.9886, 1.3824, 1.3499,\n", + " 1.3549, 1.3649, 1.3881, 1.3647, 1.2504, 0.7886, 0.7397, 1.3519, 1.9345,\n", + " 2.1329, 1.3462, 1.9626]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2745, -0.3971, -0.6576, -1.3651, -1.1242, -0.3274, 0.5474, 0.6860,\n", + " 0.0795, 0.8099, 0.6998, -0.4135, 0.4018, -1.2860, -1.3973, -0.6218,\n", + " -0.4570, 1.1767, -0.0135, 0.0789, 0.4847, 1.8815, -0.8507, 1.1689,\n", + " 1.1197, -0.0478, 0.1698, 0.2877, -0.3783, -1.1976, -0.6381, 0.2573,\n", + " -1.4961, -1.1593, -0.5005, -1.0896, -0.7465, 0.7357, -2.2862, 0.7550,\n", + " 0.9426, 0.2954, 0.0166]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.1191, 0.0781, 0.0483, -0.0257, -0.0327, -0.0516, -0.1421, -0.1182,\n", + " -0.0814, -0.0957, -0.0575, 0.0003, 0.1042, 0.0980, 0.0506, 0.0534,\n", + " -0.0024, 0.0366, 0.0018, 0.0348, 0.0236, 0.0424, -0.0174, 0.0384,\n", + " 0.0379, 0.0797, 0.0097, 0.0223, 0.1054, 0.1189, 0.0124, 0.0596,\n", + " 0.0510, -0.0004, 0.0255, -0.0394, -0.0268, 0.0411, 0.0403, -0.0420,\n", + " -0.0085, -0.0361, -0.1035]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00028341508004814386\n", + "Grad encoder.fc1.bias: 0.0006044238107278943\n", + "Grad encoder.encoder.0.weight: 8.535259985364974e-05\n", + "Grad encoder.encoder.0.bias: 0.0005201251478865743\n", + "Grad encoder.encoder.2.weight: 4.927352711092681e-05\n", + "Grad encoder.encoder.2.bias: 0.00040585457463748753\n", + "Grad encoder.encoder.4.weight: 0.00011007834109477699\n", + "Grad encoder.encoder.4.bias: 0.00042611401295289397\n", + "Grad decoder.fc1.0.weight: 4.833961065742187e-05\n", + "Grad decoder.fc1.0.bias: 0.00032610882772132754\n", + "Grad decoder.fc1.2.weight: 5.556789619731717e-05\n", + "Grad decoder.fc1.2.bias: 0.00041953829349949956\n", + "Grad decoder.fc1.4.weight: 5.283930659061298e-05\n", + "Grad decoder.fc1.4.bias: 0.0005638781003654003\n", + "Grad decoder.fc2.weight: 0.00013346642663236707\n", + "Grad decoder.fc2.bias: 0.0017145081656053662\n", + "Grad _memory_unit.weight_ih_l0: 1.5797466403455473e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.4630422558402643e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.3280805433169007e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.216204954194836e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.019102486083284e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.6965902836527675e-05\n", + "Data X Sample: tensor([[2.7274, 2.6290, 2.1638, 2.2456, 2.3068, 2.2040, 3.2138, 4.1212, 4.1082,\n", + " 4.1531, 4.2223, 4.2845, 3.9392, 3.8416, 3.7122, 3.7444, 3.6039, 3.4838,\n", + " 3.4217, 3.4628, 3.3909, 3.3144, 3.1110, 2.8230, 2.7326, 2.6876, 2.8105,\n", + " 2.7979, 2.7060, 2.8592, 2.8031, 2.8158, 3.0911, 2.3709, 3.9733, 4.3026,\n", + " 4.6153, 5.0699, 5.5525, 5.5324, 1.7325, 0.9260, 0.8003, 1.3347, 1.7046,\n", + " 2.0986, 1.4482, 2.2597]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.2693, 0.1060, -1.0441, -1.2441, -1.2060, -0.2651, -0.1094, 0.7519,\n", + " 0.3277, 0.7503, 0.4855, -0.6557, -0.2396, -0.7274, -1.0423, -0.5764,\n", + " -1.6823, 1.8713, 0.7270, 0.9174, 0.7898, 1.5503, 1.0333, 0.2243,\n", + " -0.3465, 0.1269, 0.6215, -0.5968, 0.1608, -0.0374, -0.1981, -0.6211,\n", + " -0.2418, -0.4781, -1.6410, -1.4446, -0.5085, -0.7055, -0.0156, 0.8425,\n", + " 0.8755, 0.9833, 1.2121]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3076, -0.3119, -0.1270, -0.3224, -0.1392, -0.0059, 0.1511, 0.2736,\n", + " 0.1555, 0.1876, 0.2489, -0.1463, -0.0794, -0.2514, -0.1832, -0.2634,\n", + " -0.2742, -0.0873, -0.0439, -0.1067, -0.0723, -0.0524, -0.0703, -0.0251,\n", + " 0.0362, 0.0777, 0.0106, -0.0254, -0.1173, -0.1821, -0.1764, -0.2074,\n", + " -0.1340, -0.2789, -0.1252, -0.1684, -0.0275, -0.0295, 0.0323, 0.3076,\n", + " 0.3315, 0.3157, 0.2593]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004680949205067009\n", + "Grad encoder.fc1.bias: 0.0006690127192996442\n", + "Grad encoder.encoder.0.weight: 0.00010301785368937999\n", + "Grad encoder.encoder.0.bias: 0.0005330631393007934\n", + "Grad encoder.encoder.2.weight: 7.362062024185434e-05\n", + "Grad encoder.encoder.2.bias: 0.0005617931601591408\n", + "Grad encoder.encoder.4.weight: 0.00017230209778063\n", + "Grad encoder.encoder.4.bias: 0.001452318741939962\n", + "Grad decoder.fc1.0.weight: 6.159208714962006e-05\n", + "Grad decoder.fc1.0.bias: 0.0005754464073106647\n", + "Grad decoder.fc1.2.weight: 7.628026651218534e-05\n", + "Grad decoder.fc1.2.bias: 0.000626645574811846\n", + "Grad decoder.fc1.4.weight: 6.165899685584009e-05\n", + "Grad decoder.fc1.4.bias: 0.0006787016754969954\n", + "Grad decoder.fc2.weight: 0.0001359593152301386\n", + "Grad decoder.fc2.bias: 0.001565614016726613\n", + "Grad _memory_unit.weight_ih_l0: 2.066576234938111e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.133424464380369e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.628338501788676e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.334683348541148e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00014638915308751166\n", + "Grad _memory_unit.bias_hh_l1: 7.671561616007239e-05\n", + "Data X Sample: tensor([[1.5085, 1.7332, 1.9444, 1.9941, 2.0148, 2.1023, 2.1970, 2.2004, 2.2335,\n", + " 2.2843, 2.2999, 2.3837, 2.3058, 2.2684, 2.1184, 2.2756, 2.2013, 2.2632,\n", + " 2.3149, 2.3432, 2.3530, 2.4188, 2.4194, 2.3840, 2.4530, 2.4787, 2.4855,\n", + " 2.4145, 2.1856, 2.3745, 2.4287, 2.4234, 2.1780, 1.4097, 1.9119, 1.7099,\n", + " 1.6184, 1.4815, 1.5783, 1.5633, 1.1597, 0.7607, 0.7033, 1.2802, 1.8116,\n", + " 1.9556, 1.2646, 1.8766]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.8099, -1.4260, -0.5747, 0.5569, -0.0454, 0.5544, 0.3277, -0.0312,\n", + " 0.2479, 0.2316, 0.1128, -0.0028, -0.5138, -0.4021, 0.2714, -0.0941,\n", + " 0.3084, -0.5807, 0.1690, -0.0738, 0.9195, 1.3876, 0.1493, 1.3518,\n", + " 1.1267, 1.2585, 2.1436, 2.3679, -1.0817, 0.7523, 1.4184, -0.5040,\n", + " -0.4707, 0.0536, -0.5736, -1.6908, -0.4229, -0.7806, -0.3730, -0.5820,\n", + " 0.1475, -0.0862, -0.7842]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2838, 0.2736, 0.1395, 0.1420, 0.0385, -0.0972, -0.3136, -0.3459,\n", + " -0.1883, -0.2116, -0.1817, 0.1266, 0.1697, 0.2064, 0.1503, 0.2048,\n", + " 0.1584, 0.0516, 0.0590, 0.1046, 0.0660, 0.0374, 0.0024, 0.0869,\n", + " 0.0704, 0.1106, -0.0007, 0.0355, 0.2182, 0.2432, 0.1668, 0.1764,\n", + " 0.2141, 0.1315, 0.1599, 0.0402, -0.0125, 0.0229, 0.0027, -0.1922,\n", + " -0.1818, -0.2197, -0.2322]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00027944560861214995\n", + "Grad encoder.fc1.bias: 0.0010885803494602442\n", + "Grad encoder.encoder.0.weight: 7.285964238690212e-05\n", + "Grad encoder.encoder.0.bias: 0.000703894067555666\n", + "Grad encoder.encoder.2.weight: 6.625147216254845e-05\n", + "Grad encoder.encoder.2.bias: 0.0006523070624098182\n", + "Grad encoder.encoder.4.weight: 0.00015587135567329824\n", + "Grad encoder.encoder.4.bias: 0.001511963433586061\n", + "Grad decoder.fc1.0.weight: 5.9291331126587465e-05\n", + "Grad decoder.fc1.0.bias: 0.0006045425543561578\n", + "Grad decoder.fc1.2.weight: 8.427970169577748e-05\n", + "Grad decoder.fc1.2.bias: 0.0008385340915992856\n", + "Grad decoder.fc1.4.weight: 6.490714440587908e-05\n", + "Grad decoder.fc1.4.bias: 0.0007417919114232063\n", + "Grad decoder.fc2.weight: 0.00012731258175335824\n", + "Grad decoder.fc2.bias: 0.0017627924680709839\n", + "Grad _memory_unit.weight_ih_l0: 2.0323985154391266e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0001363716583000496\n", + "Grad _memory_unit.bias_hh_l0: 6.889241194585338e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.91458114690613e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00022506083769258112\n", + "Grad _memory_unit.bias_hh_l1: 0.00011792799341492355\n", + "Data X Sample: tensor([[1.7133, 1.8949, 2.1412, 2.2893, 2.4177, 2.5045, 2.5390, 2.7044, 2.6631,\n", + " 2.7282, 2.7060, 2.6213, 2.6165, 2.6283, 2.5295, 2.5860, 2.5850, 2.6153,\n", + " 2.6143, 2.6278, 2.6965, 2.7250, 2.6026, 2.6932, 2.7289, 2.7242, 2.6746,\n", + " 2.7245, 2.5741, 2.5644, 2.5057, 2.4234, 2.3804, 1.4646, 2.0394, 1.8825,\n", + " 1.7344, 1.6723, 1.6290, 1.5803, 1.3936, 0.8026, 0.7902, 1.4467, 1.9028,\n", + " 2.2587, 1.4618, 2.2285]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.1352, -0.9526, -0.0758, -0.0711, -0.0710, -1.2668, -0.1118, -0.3167,\n", + " 0.0196, 0.0191, 0.0158, 0.9455, 0.1588, -0.2146, -1.2322, 0.0655,\n", + " -0.2653, -0.2487, -0.3942, -0.4868, -0.3435, -1.1378, -0.1238, -0.5084,\n", + " 0.1937, -0.0687, 0.5060, -0.6149, -1.0586, 2.4230, -0.8728, 1.3464,\n", + " -0.8940, -0.7912, 0.5673, -1.4876, -0.0333, 0.7428, 0.2870, -0.7985,\n", + " 0.0885, 0.0391, -0.3200]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2470, 0.2465, 0.1280, 0.0940, 0.0222, -0.1055, -0.2882, -0.2964,\n", + " -0.1738, -0.1972, -0.1669, 0.1032, 0.1505, 0.1985, 0.1410, 0.1748,\n", + " 0.1389, 0.0360, 0.0480, 0.0996, 0.0514, 0.0444, -0.0020, 0.0682,\n", + " 0.0664, 0.1082, 0.0081, 0.0331, 0.2047, 0.2151, 0.1419, 0.1450,\n", + " 0.1725, 0.1028, 0.1273, 0.0198, -0.0110, 0.0266, 0.0258, -0.1701,\n", + " -0.1476, -0.1836, -0.2049]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00020659317669924349\n", + "Grad encoder.fc1.bias: 0.0007934817112982273\n", + "Grad encoder.encoder.0.weight: 6.53022580081597e-05\n", + "Grad encoder.encoder.0.bias: 0.0007898234762251377\n", + "Grad encoder.encoder.2.weight: 5.350224091671407e-05\n", + "Grad encoder.encoder.2.bias: 0.0006854410748928785\n", + "Grad encoder.encoder.4.weight: 0.0001616540685063228\n", + "Grad encoder.encoder.4.bias: 0.0022928486578166485\n", + "Grad decoder.fc1.0.weight: 7.022393401712179e-05\n", + "Grad decoder.fc1.0.bias: 0.0007684995653107762\n", + "Grad decoder.fc1.2.weight: 9.825878078117967e-05\n", + "Grad decoder.fc1.2.bias: 0.0009614578448235989\n", + "Grad decoder.fc1.4.weight: 7.334443216677755e-05\n", + "Grad decoder.fc1.4.bias: 0.0009058639407157898\n", + "Grad decoder.fc2.weight: 0.00013615249190479517\n", + "Grad decoder.fc2.bias: 0.0018712036544457078\n", + "Grad _memory_unit.weight_ih_l0: 1.832771158660762e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00015242763038259\n", + "Grad _memory_unit.bias_hh_l0: 7.90246922406368e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.166915333480574e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002143047022400424\n", + "Grad _memory_unit.bias_hh_l1: 0.00011348249245202169\n", + "Data X Sample: tensor([[1.4597, 1.8148, 2.0060, 2.1319, 2.2043, 2.2732, 2.3017, 2.3935, 2.4874,\n", + " 2.3822, 2.4807, 2.4850, 2.3746, 2.3120, 2.3529, 2.2606, 2.2391, 2.3038,\n", + " 2.3851, 2.3767, 2.5444, 2.4571, 2.4074, 2.5042, 2.4755, 2.4134, 2.3869,\n", + " 2.5328, 1.9913, 2.0601, 1.8092, 1.7658, 1.5136, 1.0069, 1.3996, 1.3377,\n", + " 1.3628, 1.2960, 1.3057, 1.3590, 1.1979, 0.7428, 0.8023, 1.3290, 2.0415,\n", + " 2.1558, 1.4414, 2.1190]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2414, -0.1038, 0.0292, -0.1347, -0.5832, 1.2942, 0.1295, -0.0313,\n", + " 0.6497, -0.0614, -0.1214, -0.9085, -0.5178, -0.3498, -0.3180, -0.6873,\n", + " 0.1146, 0.3929, 0.1893, -0.2569, -0.7516, 0.1164, -0.3199, 0.2556,\n", + " 0.6461, -0.4568, -0.1481, -0.3284, 0.5848, 0.3934, -0.6546, 0.2509,\n", + " 0.5464, 0.6077, 0.8664, -0.0601, -0.0107, -0.0139, 0.4422, -0.1542,\n", + " -0.1176, -0.0932, 0.3780]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.0902, -0.0997, -0.0490, -0.1755, -0.1018, -0.0268, -0.0248, 0.0904,\n", + " 0.0075, 0.0387, 0.0641, -0.0606, 0.0190, -0.0411, -0.0320, -0.0843,\n", + " -0.1515, -0.0299, -0.0003, -0.0211, 0.0017, 0.0092, -0.0283, -0.0093,\n", + " 0.0156, 0.0468, 0.0397, 0.0330, -0.0236, -0.0140, -0.0613, -0.0626,\n", + " -0.0415, -0.0954, -0.0417, -0.1136, -0.0326, 0.0125, 0.0438, 0.1020,\n", + " 0.1480, 0.1028, 0.0717]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007214810466393828\n", + "Grad encoder.fc1.bias: 0.000529094657395035\n", + "Grad encoder.encoder.0.weight: 0.00014720813487656415\n", + "Grad encoder.encoder.0.bias: 0.0004908820847049356\n", + "Grad encoder.encoder.2.weight: 8.973399962997064e-05\n", + "Grad encoder.encoder.2.bias: 0.0005663782358169556\n", + "Grad encoder.encoder.4.weight: 0.0002574000973254442\n", + "Grad encoder.encoder.4.bias: 0.0020071915350854397\n", + "Grad decoder.fc1.0.weight: 9.07269713934511e-05\n", + "Grad decoder.fc1.0.bias: 0.0009219671483151615\n", + "Grad decoder.fc1.2.weight: 0.00015679524221923202\n", + "Grad decoder.fc1.2.bias: 0.0014942237176001072\n", + "Grad decoder.fc1.4.weight: 0.0001076782209565863\n", + "Grad decoder.fc1.4.bias: 0.001283971592783928\n", + "Grad decoder.fc2.weight: 0.0001653866929700598\n", + "Grad decoder.fc2.bias: 0.0028366264887154102\n", + "Grad _memory_unit.weight_ih_l0: 3.20597791869659e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.699734851485118e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.064859967911616e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.892326488625258e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00017144645971711725\n", + "Grad _memory_unit.bias_hh_l1: 8.79178405739367e-05\n", + "Data X Sample: tensor([[1.5170, 1.8527, 2.0751, 2.2849, 2.4041, 2.5532, 2.5590, 2.4985, 2.5338,\n", + " 2.5291, 2.4712, 2.5064, 2.2814, 2.2193, 2.0049, 2.0965, 2.1211, 2.0775,\n", + " 2.0217, 1.9043, 1.9089, 1.8264, 1.7832, 1.7312, 1.6122, 1.6220, 1.5291,\n", + " 1.5784, 1.2350, 1.2675, 1.1408, 1.1219, 1.0472, 0.7255, 1.1520, 1.2842,\n", + " 1.3785, 1.6644, 2.0093, 1.9690, 1.2218, 0.7707, 0.7963, 1.3893, 2.1407,\n", + " 2.3445, 1.4414, 2.0721]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.7463, -1.1944, -1.0738, -1.1336, -0.4284, -0.0384, 1.1794, 2.2579,\n", + " 1.2079, 1.7362, 2.4761, -1.6475, -1.2392, -2.1282, -0.8180, -1.7708,\n", + " -1.1039, -0.5688, 0.3471, -0.2985, -0.4377, 0.1915, -0.0725, -0.2389,\n", + " -0.3226, -0.3661, 0.2997, 1.1793, -0.6730, -1.0401, -1.4046, -0.3500,\n", + " -2.4295, -1.5759, -1.3861, -1.4915, 0.1438, 0.6522, -0.1564, 5.4730,\n", + " 4.8813, 4.7034, 3.3269]], device='cuda:0')\n", + "Prediction Sample: tensor([[-2.9778e-01, -2.8964e-01, -1.2638e-01, -3.5551e-01, -1.9566e-01,\n", + " -7.9460e-02, 4.9103e-02, 2.2926e-01, 1.2089e-01, 1.7005e-01,\n", + " 1.7905e-01, -1.0060e-01, -8.0154e-02, -2.0105e-01, -1.1504e-01,\n", + " -2.1451e-01, -2.8164e-01, -1.1929e-01, -5.0302e-02, -9.0215e-02,\n", + " -4.1571e-02, -4.8409e-02, -7.3730e-02, -4.8703e-02, 5.2443e-02,\n", + " 5.8307e-02, 9.6550e-02, 1.1140e-02, -6.0169e-02, -1.7810e-01,\n", + " -1.1279e-01, -1.7751e-01, -7.5416e-02, -2.0871e-01, -7.9006e-02,\n", + " -1.5349e-01, -2.6846e-02, -1.8390e-04, 2.2606e-02, 2.5598e-01,\n", + " 2.7553e-01, 2.6537e-01, 2.4635e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00022152431483846158\n", + "Grad encoder.fc1.bias: 0.0013203698908910155\n", + "Grad encoder.encoder.0.weight: 6.677852798020467e-05\n", + "Grad encoder.encoder.0.bias: 0.0008376863552257419\n", + "Grad encoder.encoder.2.weight: 5.8344689023215324e-05\n", + "Grad encoder.encoder.2.bias: 0.0006635365425609052\n", + "Grad encoder.encoder.4.weight: 0.0001532640162622556\n", + "Grad encoder.encoder.4.bias: 0.0013573098694905639\n", + "Grad decoder.fc1.0.weight: 5.828998837387189e-05\n", + "Grad decoder.fc1.0.bias: 0.0006013900274410844\n", + "Grad decoder.fc1.2.weight: 8.500742114847526e-05\n", + "Grad decoder.fc1.2.bias: 0.0008316230960190296\n", + "Grad decoder.fc1.4.weight: 6.9712899858132e-05\n", + "Grad decoder.fc1.4.bias: 0.00082639220636338\n", + "Grad decoder.fc2.weight: 0.00014953096979297698\n", + "Grad decoder.fc2.bias: 0.0014169689966365695\n", + "Grad _memory_unit.weight_ih_l0: 2.4280565412482247e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0001198969766846858\n", + "Grad _memory_unit.bias_hh_l0: 6.164416845422238e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.696935765328817e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00020652386592701077\n", + "Grad _memory_unit.bias_hh_l1: 0.00010875613952521235\n", + "Data X Sample: tensor([[1.4162, 1.5250, 1.7205, 1.8017, 2.0131, 2.0714, 2.1477, 1.9960, 2.7876,\n", + " 4.0346, 4.4285, 4.2845, 3.8438, 3.7871, 3.6895, 3.5816, 3.5237, 3.5399,\n", + " 3.6737, 3.5409, 3.5430, 3.5379, 3.0243, 2.7638, 2.8040, 2.9488, 2.9330,\n", + " 2.9447, 2.9488, 3.1245, 3.1741, 3.1474, 3.7467, 2.7233, 4.5935, 4.9472,\n", + " 5.1758, 5.5311, 5.9771, 5.9324, 1.0118, 0.5775, 0.6184, 1.1080, 1.5658,\n", + " 1.8184, 1.2918, 1.8062]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4699, 0.2458, -0.5599, 0.6403, -0.5183, 0.2433, 0.2465, 0.3740,\n", + " 0.2449, 0.7463, 0.8096, 0.1010, -1.3735, -0.4354, 0.8593, -1.4171,\n", + " -1.0777, -1.1509, 0.4749, 0.2139, -1.2583, 0.1703, -1.2006, 1.5009,\n", + " -2.3990, -0.2314, 0.9613, -0.2076, 0.1560, 0.0074, 0.1229, -0.0687,\n", + " -0.8516, -1.0107, 2.7703, 1.4301, 0.7329, 0.2324, 0.0000, 1.0291,\n", + " 0.6997, 1.0078, 0.7781]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3002, -0.2831, -0.0729, -0.2448, -0.0039, 0.1182, 0.2131, 0.2914,\n", + " 0.1672, 0.2354, 0.2866, -0.1827, -0.1066, -0.3255, -0.2636, -0.3001,\n", + " -0.2725, -0.0474, -0.0194, -0.0746, -0.0740, -0.0773, -0.0234, -0.0172,\n", + " -0.0257, 0.0665, -0.0971, -0.0825, -0.2212, -0.2282, -0.2675, -0.2173,\n", + " -0.2811, -0.3630, -0.1960, -0.2432, -0.0374, -0.0427, 0.0821, 0.3168,\n", + " 0.3524, 0.3509, 0.2946]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00012160040205344558\n", + "Grad encoder.fc1.bias: 0.0013627272564917803\n", + "Grad encoder.encoder.0.weight: 5.189053626963869e-05\n", + "Grad encoder.encoder.0.bias: 0.0009394795633852482\n", + "Grad encoder.encoder.2.weight: 4.515490945777856e-05\n", + "Grad encoder.encoder.2.bias: 0.0006794040091335773\n", + "Grad encoder.encoder.4.weight: 0.00013920359197072685\n", + "Grad encoder.encoder.4.bias: 0.0013762767193838954\n", + "Grad decoder.fc1.0.weight: 5.4888259910512716e-05\n", + "Grad decoder.fc1.0.bias: 0.0005245987558737397\n", + "Grad decoder.fc1.2.weight: 7.6621028711088e-05\n", + "Grad decoder.fc1.2.bias: 0.0006530939135700464\n", + "Grad decoder.fc1.4.weight: 5.95607707509771e-05\n", + "Grad decoder.fc1.4.bias: 0.0006005644681863487\n", + "Grad decoder.fc2.weight: 0.00013736147957388312\n", + "Grad decoder.fc2.bias: 0.0017562643624842167\n", + "Grad _memory_unit.weight_ih_l0: 1.4991713214840274e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.238791972165927e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.8275524022756144e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.038922831270611e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00014274228306021541\n", + "Grad _memory_unit.bias_hh_l1: 7.60882394388318e-05\n", + "Data X Sample: tensor([[1.4438, 1.5046, 1.7611, 1.9504, 2.0933, 2.0405, 2.0953, 1.8810, 2.7559,\n", + " 3.8608, 4.0986, 3.9417, 3.8327, 3.6207, 3.5962, 3.4558, 3.4655, 3.3020,\n", + " 3.2751, 3.3717, 3.2805, 3.2731, 2.8821, 2.8115, 2.7814, 2.8470, 2.8318,\n", + " 3.0345, 2.9419, 3.0819, 3.0691, 3.2082, 3.5487, 2.5677, 4.2258, 4.5239,\n", + " 4.8277, 5.1945, 5.6665, 5.5267, 1.0261, 0.6373, 0.6386, 1.1482, 1.6967,\n", + " 1.9328, 1.2850, 1.8141]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7397, 0.2927, 1.2613, 0.3359, -0.1446, 0.3095, 0.6972, 0.3518,\n", + " 0.5475, 0.2179, 0.0503, -1.3217, -1.3777, -1.3250, -1.1789, 0.4395,\n", + " -0.2554, -0.2709, -0.3818, 0.8499, 0.5369, 0.2754, -0.7376, 0.2693,\n", + " 2.0170, -0.2212, -1.1945, -0.3542, -0.3152, 0.0060, -0.0928, -1.3599,\n", + " -0.1654, 0.2240, 0.3507, 0.4346, -0.2248, 0.4777, 0.5928, 0.0789,\n", + " 0.6890, -0.7168, -1.1238]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2697, -0.2549, -0.0561, -0.2019, 0.0170, 0.1326, 0.1934, 0.2567,\n", + " 0.1543, 0.2269, 0.2665, -0.1652, -0.1065, -0.3041, -0.2521, -0.2864,\n", + " -0.2536, -0.0429, -0.0185, -0.0653, -0.0698, -0.0809, -0.0131, -0.0210,\n", + " -0.0372, 0.0484, -0.1085, -0.0934, -0.2219, -0.2151, -0.2635, -0.1937,\n", + " -0.2872, -0.3410, -0.1901, -0.2436, -0.0402, -0.0395, 0.0831, 0.2910,\n", + " 0.3233, 0.3176, 0.2656]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004925723187625408\n", + "Grad encoder.fc1.bias: 0.0002888069720938802\n", + "Grad encoder.encoder.0.weight: 0.000107580293843057\n", + "Grad encoder.encoder.0.bias: 0.0004005242371931672\n", + "Grad encoder.encoder.2.weight: 7.704115705564618e-05\n", + "Grad encoder.encoder.2.bias: 0.0005361682851798832\n", + "Grad encoder.encoder.4.weight: 0.00021172661217860878\n", + "Grad encoder.encoder.4.bias: 0.001988673582673073\n", + "Grad decoder.fc1.0.weight: 5.850703382748179e-05\n", + "Grad decoder.fc1.0.bias: 0.0006627336260862648\n", + "Grad decoder.fc1.2.weight: 6.283301627263427e-05\n", + "Grad decoder.fc1.2.bias: 0.0007382746553048491\n", + "Grad decoder.fc1.4.weight: 5.977720866212621e-05\n", + "Grad decoder.fc1.4.bias: 0.0008172670495696366\n", + "Grad decoder.fc2.weight: 0.00015570018149446696\n", + "Grad decoder.fc2.bias: 0.001957582077011466\n", + "Grad _memory_unit.weight_ih_l0: 3.1194696930469945e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0001437747268937528\n", + "Grad _memory_unit.bias_hh_l0: 7.446177187375724e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.720127880224027e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00023328255338128656\n", + "Grad _memory_unit.bias_hh_l1: 0.00012100161984562874\n", + "Data X Sample: tensor([[1.9466, 2.3115, 2.6566, 2.8031, 2.9146, 3.0010, 3.0967, 3.1203, 3.0220,\n", + " 3.0094, 3.2580, 3.2309, 3.0692, 3.1572, 3.1120, 2.9443, 2.9529, 2.9770,\n", + " 3.0170, 2.8584, 2.8560, 2.7189, 2.5978, 2.4584, 2.3948, 2.3638, 2.1019,\n", + " 2.1535, 1.9913, 2.0470, 2.0227, 1.9813, 1.7864, 1.1717, 2.0124, 2.4030,\n", + " 2.6823, 2.7404, 2.9537, 2.9620, 1.7372, 1.0077, 1.0145, 1.6734, 2.4578,\n", + " 2.7848, 1.7813, 2.4630]], device='cuda:0')\n", + "Data Y Sample: tensor([[-7.2658e-01, 2.2553e-04, -1.4089e-01, -1.0986e+00, -3.2023e-01,\n", + " -3.0041e+00, 8.6872e-01, 7.0720e-01, 4.2715e-01, 9.7509e-01,\n", + " 1.0657e+00, -1.1281e+00, -9.3646e-01, -2.9947e-01, -1.1087e+00,\n", + " -6.7604e-01, -1.8873e+00, -1.4340e+00, -4.0110e-01, -9.0552e-01,\n", + " -4.4555e-01, -7.9410e-01, -1.1959e-01, 2.8036e-02, 7.5248e-01,\n", + " -1.0971e+00, -3.2725e-01, -1.9556e-01, 3.5368e-01, -5.7691e-01,\n", + " -2.3577e-01, -1.1495e-01, -1.9155e+00, -3.4626e-01, 1.6360e-01,\n", + " -6.1472e-01, -3.7266e-01, 7.3568e-01, 4.0193e-03, 9.4921e-01,\n", + " 8.1262e-01, 8.4998e-01, 4.3631e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2358, -0.2450, -0.1012, -0.2973, -0.1627, -0.0573, 0.0281, 0.1964,\n", + " 0.0793, 0.1264, 0.1570, -0.1003, -0.0804, -0.1851, -0.1071, -0.1844,\n", + " -0.2354, -0.0929, -0.0592, -0.0562, -0.0249, -0.0286, -0.0686, -0.0341,\n", + " 0.0567, 0.0600, 0.0821, -0.0011, -0.0670, -0.1562, -0.1121, -0.1589,\n", + " -0.0872, -0.1830, -0.0683, -0.1536, -0.0416, -0.0074, 0.0508, 0.2023,\n", + " 0.2257, 0.2454, 0.2128]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005718987667933106\n", + "Grad encoder.fc1.bias: 0.0015876165125519037\n", + "Grad encoder.encoder.0.weight: 0.0001254737435374409\n", + "Grad encoder.encoder.0.bias: 0.0011937192175537348\n", + "Grad encoder.encoder.2.weight: 8.415401680395007e-05\n", + "Grad encoder.encoder.2.bias: 0.0010580667294561863\n", + "Grad encoder.encoder.4.weight: 0.00023966659500729293\n", + "Grad encoder.encoder.4.bias: 0.002493923995643854\n", + "Grad decoder.fc1.0.weight: 7.50744147808291e-05\n", + "Grad decoder.fc1.0.bias: 0.0008553160587325692\n", + "Grad decoder.fc1.2.weight: 0.00010687160829547793\n", + "Grad decoder.fc1.2.bias: 0.0011258138110861182\n", + "Grad decoder.fc1.4.weight: 7.756476406939328e-05\n", + "Grad decoder.fc1.4.bias: 0.0009509797091595829\n", + "Grad decoder.fc2.weight: 0.00017481858958490193\n", + "Grad decoder.fc2.bias: 0.002140153432264924\n", + "Grad _memory_unit.weight_ih_l0: 3.55391348421108e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00018140164320357144\n", + "Grad _memory_unit.bias_hh_l0: 9.381418931297958e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.216742293763673e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00028249682509340346\n", + "Grad _memory_unit.bias_hh_l1: 0.0001487583213020116\n", + "Data X Sample: tensor([[1.5181, 1.6633, 1.8843, 1.8739, 2.0404, 2.1539, 2.2555, 2.2714, 3.7469,\n", + " 4.0851, 4.1748, 4.0761, 3.8793, 3.8798, 3.7324, 3.5037, 3.4734, 3.4296,\n", + " 3.4981, 3.3252, 3.2486, 3.3435, 2.9110, 2.8669, 2.8941, 2.9854, 2.9250,\n", + " 2.9121, 3.0529, 3.2326, 3.3385, 3.3022, 3.5333, 2.5768, 4.2380, 4.6869,\n", + " 4.9024, 5.1415, 5.6665, 5.6204, 1.1072, 0.6532, 0.7013, 1.1711, 1.7323,\n", + " 1.8241, 1.2374, 1.7046]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2925, -0.1404, 0.7475, 0.0403, 0.6286, -0.5476, -0.6070, -0.0140,\n", + " -0.5648, -0.4094, -0.0172, 1.4825, 0.5920, -0.0359, 0.0363, 0.8757,\n", + " -1.0052, 0.8800, 0.0483, 5.1882, -1.2602, -0.0551, 0.0000, 0.7099,\n", + " -2.3905, -1.1841, 0.1954, -1.0577, -0.5310, 0.3403, 0.9152, -0.0625,\n", + " 0.4464, 0.4407, -0.3786, -0.2240, 0.5590, 0.0752, 0.8093, -0.5836,\n", + " -0.3465, 0.1748, 0.4528]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2451, -0.2454, -0.0457, -0.1556, 0.0470, 0.1671, 0.1940, 0.2341,\n", + " 0.1626, 0.2390, 0.2673, -0.1535, -0.1195, -0.3010, -0.2631, -0.3019,\n", + " -0.2498, -0.0429, -0.0245, -0.0618, -0.0751, -0.0947, -0.0033, -0.0268,\n", + " -0.0535, 0.0295, -0.1337, -0.1229, -0.2415, -0.2155, -0.2838, -0.1762,\n", + " -0.3161, -0.3410, -0.2045, -0.2580, -0.0523, -0.0385, 0.0911, 0.2857,\n", + " 0.3119, 0.3027, 0.2449]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00039464430301450193\n", + "Grad encoder.fc1.bias: 0.0002888628514483571\n", + "Grad encoder.encoder.0.weight: 9.287825378123671e-05\n", + "Grad encoder.encoder.0.bias: 0.0003080824390053749\n", + "Grad encoder.encoder.2.weight: 6.449782085837796e-05\n", + "Grad encoder.encoder.2.bias: 0.00030878951656632125\n", + "Grad encoder.encoder.4.weight: 0.00018347011064179242\n", + "Grad encoder.encoder.4.bias: 0.0008161392761394382\n", + "Grad decoder.fc1.0.weight: 5.9095917094964534e-05\n", + "Grad decoder.fc1.0.bias: 0.0004898311453871429\n", + "Grad decoder.fc1.2.weight: 7.594045018777251e-05\n", + "Grad decoder.fc1.2.bias: 0.0006902711465954781\n", + "Grad decoder.fc1.4.weight: 6.444583414122462e-05\n", + "Grad decoder.fc1.4.bias: 0.0007508618291467428\n", + "Grad decoder.fc2.weight: 0.0001236683747265488\n", + "Grad decoder.fc2.bias: 0.0019501624628901482\n", + "Grad _memory_unit.weight_ih_l0: 3.4863925975514576e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.544092396623455e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.0348079488030635e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.73275678511709e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.752401870675385e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.104042818653397e-05\n", + "Data X Sample: tensor([[1.6337, 1.7012, 1.9459, 2.0597, 2.0848, 2.0184, 2.2694, 4.0516, 4.3401,\n", + " 4.3648, 4.4825, 4.3488, 4.0612, 4.1251, 3.8888, 3.9030, 3.8633, 3.6695,\n", + " 3.7294, 3.5465, 3.5258, 3.4139, 3.0171, 2.8688, 2.8959, 2.9985, 3.0449,\n", + " 3.0956, 3.1257, 3.1572, 3.2895, 3.3491, 3.7401, 2.8149, 4.4121, 4.8572,\n", + " 5.2741, 5.5761, 6.1736, 6.0544, 1.1932, 0.6552, 0.6892, 1.2371, 1.8592,\n", + " 1.9842, 1.2850, 1.8766]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5523, -0.2284, -0.4566, 1.0180, -0.4375, 0.5764, -1.1085, 0.6829,\n", + " -0.6877, -0.5968, -0.3939, -1.2615, -0.1901, -0.2477, 0.1319, -0.4797,\n", + " -0.4346, 0.3745, -1.4922, -0.2100, 0.3996, 0.4149, -0.6762, -0.4502,\n", + " -0.2534, -0.2551, 1.0539, 0.8253, 0.7226, 0.1998, -1.1901, -0.5010,\n", + " -0.3674, 0.7869, -0.9746, 1.0362, -0.6417, -0.0920, -0.7130, -0.3778,\n", + " 0.6422, 0.7536, -1.0048]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2249, -0.2339, -0.0387, -0.1431, 0.0483, 0.1674, 0.1860, 0.2201,\n", + " 0.1483, 0.2194, 0.2560, -0.1568, -0.1187, -0.2963, -0.2569, -0.2858,\n", + " -0.2385, -0.0379, -0.0323, -0.0539, -0.0676, -0.0901, -0.0074, -0.0224,\n", + " -0.0441, 0.0272, -0.1325, -0.1281, -0.2355, -0.2075, -0.2798, -0.1666,\n", + " -0.3092, -0.3302, -0.1904, -0.2490, -0.0534, -0.0365, 0.0977, 0.2693,\n", + " 0.2897, 0.2901, 0.2298]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003499943413771689\n", + "Grad encoder.fc1.bias: 0.0003037534188479185\n", + "Grad encoder.encoder.0.weight: 8.834330947138369e-05\n", + "Grad encoder.encoder.0.bias: 0.0004842469934374094\n", + "Grad encoder.encoder.2.weight: 5.789831266156398e-05\n", + "Grad encoder.encoder.2.bias: 0.0004942297819070518\n", + "Grad encoder.encoder.4.weight: 0.0001696088584139943\n", + "Grad encoder.encoder.4.bias: 0.0007525840774178505\n", + "Grad decoder.fc1.0.weight: 5.4034258937463164e-05\n", + "Grad decoder.fc1.0.bias: 0.00045338599011301994\n", + "Grad decoder.fc1.2.weight: 6.235840555746108e-05\n", + "Grad decoder.fc1.2.bias: 0.0006028255447745323\n", + "Grad decoder.fc1.4.weight: 5.056489317212254e-05\n", + "Grad decoder.fc1.4.bias: 0.0006310536991804838\n", + "Grad decoder.fc2.weight: 0.00012316912761889398\n", + "Grad decoder.fc2.bias: 0.0019413881236687303\n", + "Grad _memory_unit.weight_ih_l0: 2.929529182438273e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.4906001272029243e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.5634192095603794e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.154048034863081e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.767796341795474e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.1088333091465756e-05\n", + "Data X Sample: tensor([[1.4130, 1.5585, 1.8137, 1.9635, 2.0165, 2.1362, 2.1662, 3.1899, 4.1155,\n", + " 4.3663, 4.3112, 4.4111, 3.9925, 3.9152, 3.9014, 3.9139, 3.8413, 3.5264,\n", + " 3.6448, 3.4870, 3.5013, 3.4231, 3.0267, 2.9356, 2.8021, 2.8470, 2.9916,\n", + " 2.9570, 2.8239, 3.0950, 3.2231, 3.3436, 3.7159, 2.7027, 4.4881, 4.9423,\n", + " 5.1758, 5.4065, 6.0088, 5.7849, 1.0595, 0.6313, 0.6427, 1.1080, 1.6332,\n", + " 1.9728, 1.3054, 1.9626]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.0062e-01, 3.0751e-03, 5.1721e-01, -1.2500e-01, -2.7964e-01,\n", + " 3.1213e-01, 9.2191e-02, 1.2214e-01, 1.8091e+00, 3.3639e-01,\n", + " 1.1633e-01, 5.7217e-01, 1.1334e-01, 2.4027e-01, -9.0411e-01,\n", + " -6.0617e-03, -9.8730e-02, -6.4060e-01, 1.2259e+00, 6.3805e-01,\n", + " 2.7950e-02, 1.2802e+00, 7.5689e-01, -6.8096e-01, 3.2860e-01,\n", + " 6.4565e-01, -5.5648e-01, -2.6795e-02, 3.1499e-01, -5.5344e-01,\n", + " -3.7191e-01, 2.4979e-01, -2.4723e-01, -4.9619e-01, 1.2319e-03,\n", + " -3.9233e-01, 0.0000e+00, -8.0041e-01, -3.7122e-01, 2.8152e-01,\n", + " 1.4481e-01, 6.1257e-02, -3.5388e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2077, -0.2228, -0.0337, -0.1201, 0.0536, 0.1719, 0.1757, 0.2092,\n", + " 0.1377, 0.2109, 0.2427, -0.1588, -0.1187, -0.2895, -0.2471, -0.2730,\n", + " -0.2258, -0.0332, -0.0382, -0.0484, -0.0596, -0.0854, -0.0090, -0.0273,\n", + " -0.0405, 0.0249, -0.1362, -0.1312, -0.2344, -0.2013, -0.2747, -0.1551,\n", + " -0.3052, -0.3143, -0.1777, -0.2424, -0.0534, -0.0351, 0.0976, 0.2546,\n", + " 0.2720, 0.2765, 0.2160]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006078635342419147\n", + "Grad encoder.fc1.bias: 0.0019193857442587614\n", + "Grad encoder.encoder.0.weight: 0.00014842147356830537\n", + "Grad encoder.encoder.0.bias: 0.001161487540230155\n", + "Grad encoder.encoder.2.weight: 0.00011382138472981751\n", + "Grad encoder.encoder.2.bias: 0.0010928953997790813\n", + "Grad encoder.encoder.4.weight: 0.00024239372578449547\n", + "Grad encoder.encoder.4.bias: 0.001481199054978788\n", + "Grad decoder.fc1.0.weight: 9.420743299415335e-05\n", + "Grad decoder.fc1.0.bias: 0.0008450897876173258\n", + "Grad decoder.fc1.2.weight: 0.0001346463686786592\n", + "Grad decoder.fc1.2.bias: 0.0010508003178983927\n", + "Grad decoder.fc1.4.weight: 9.230133582605049e-05\n", + "Grad decoder.fc1.4.bias: 0.0008980577695183456\n", + "Grad decoder.fc2.weight: 0.00020037617650814354\n", + "Grad decoder.fc2.bias: 0.0023080792743712664\n", + "Grad _memory_unit.weight_ih_l0: 3.20285398629494e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.303000216372311e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.190462666680105e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.3119017239660025e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001426819944754243\n", + "Grad _memory_unit.bias_hh_l1: 7.616317452630028e-05\n", + "Data X Sample: tensor([[1.6411, 1.9779, 2.1337, 2.2434, 2.3648, 2.3381, 2.4990, 2.5653, 2.5264,\n", + " 2.4928, 2.5537, 2.6350, 2.4678, 2.5356, 2.4916, 2.4274, 2.4042, 2.4721,\n", + " 2.6391, 2.5720, 2.6008, 2.6944, 2.6652, 2.7619, 2.6519, 2.6903, 2.7359,\n", + " 2.7449, 2.4805, 2.4989, 2.4917, 2.4373, 2.0812, 1.3411, 1.8531, 1.7682,\n", + " 1.6735, 1.6326, 1.5973, 1.4838, 1.3459, 0.8205, 0.7478, 1.4811, 1.7284,\n", + " 2.0929, 1.4346, 2.0799]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2461, -1.0275, -0.1993, 0.0317, 0.0609, 0.1111, 0.2613, -0.4854,\n", + " -0.0686, -0.1090, -0.3050, 0.3216, -0.0457, -0.6548, 0.0662, -0.6796,\n", + " -1.0255, 0.6772, 1.3266, 1.1157, 0.7298, 1.3677, 0.1560, 0.2492,\n", + " 0.7603, 0.9598, -1.0390, -0.0854, 0.6018, -0.2226, -0.5702, 1.1273,\n", + " 0.1089, 0.5049, 0.0832, 0.4718, 0.8233, -0.7806, -0.2265, -0.9389,\n", + " -0.3905, -1.0429, 0.0871]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4688, 0.4083, 0.1849, 0.2759, 0.0492, -0.1762, -0.5019, -0.5685,\n", + " -0.3119, -0.3236, -0.2762, 0.2474, 0.2453, 0.3604, 0.2526, 0.3090,\n", + " 0.2551, 0.0549, 0.1363, 0.1590, 0.0751, 0.0314, 0.0587, 0.0983,\n", + " 0.0585, 0.0839, 0.0418, 0.1371, 0.3287, 0.3953, 0.3436, 0.2916,\n", + " 0.3677, 0.3131, 0.2035, 0.1295, -0.0096, -0.0246, 0.0280, -0.3699,\n", + " -0.3376, -0.3679, -0.3278]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00035610125632956624\n", + "Grad encoder.fc1.bias: 0.0004568150034174323\n", + "Grad encoder.encoder.0.weight: 8.354723104275763e-05\n", + "Grad encoder.encoder.0.bias: 0.0004185232101008296\n", + "Grad encoder.encoder.2.weight: 7.074574386933818e-05\n", + "Grad encoder.encoder.2.bias: 0.0005764828529208899\n", + "Grad encoder.encoder.4.weight: 0.00016529082495253533\n", + "Grad encoder.encoder.4.bias: 0.0011464809067547321\n", + "Grad decoder.fc1.0.weight: 4.5615557610290125e-05\n", + "Grad decoder.fc1.0.bias: 0.00046676487545482814\n", + "Grad decoder.fc1.2.weight: 4.54264045401942e-05\n", + "Grad decoder.fc1.2.bias: 0.0004264557792339474\n", + "Grad decoder.fc1.4.weight: 4.233380968798883e-05\n", + "Grad decoder.fc1.4.bias: 0.0005127724725753069\n", + "Grad decoder.fc2.weight: 0.00014953625213820487\n", + "Grad decoder.fc2.bias: 0.0017722512129694223\n", + "Grad _memory_unit.weight_ih_l0: 2.349082387809176e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00010073842713609338\n", + "Grad _memory_unit.bias_hh_l0: 5.2095572755206376e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.2094271672540344e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00016681819397490472\n", + "Grad _memory_unit.bias_hh_l1: 8.605975745012984e-05\n", + "Data X Sample: tensor([[1.5000, 1.7784, 1.8467, 2.0466, 2.1070, 2.1922, 2.2863, 2.2771, 2.3263,\n", + " 2.3822, 2.3063, 2.3643, 2.2969, 2.2112, 2.2521, 2.2551, 2.2296, 2.2497,\n", + " 2.3810, 2.3525, 2.3432, 2.4617, 2.3520, 2.3420, 2.3366, 2.5022, 2.3469,\n", + " 2.4716, 2.2272, 2.0994, 2.0437, 1.8487, 1.5906, 1.0230, 1.4731, 1.4156,\n", + " 1.3824, 1.3357, 1.2930, 1.2597, 1.2743, 0.7289, 0.7033, 1.2257, 1.9464,\n", + " 2.0986, 1.3326, 2.0095]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1259, -1.0410, -1.1533, -0.7499, 0.2590, -0.6581, 0.6040, 0.7066,\n", + " 0.6280, 0.5260, 0.9484, -0.3008, 0.0687, -0.3804, -0.9386, -1.0855,\n", + " 0.2979, 0.6612, -1.7225, 0.1670, -0.2371, -0.0828, 0.7418, -0.5754,\n", + " 0.4904, -0.4555, 0.6071, 0.8617, -1.1637, -0.9434, -1.0826, -0.4496,\n", + " -0.0617, -0.8429, 0.5780, -0.4825, 0.0000, -0.6596, 0.9946, 0.8541,\n", + " 0.4424, 0.7544, 0.0099]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4068, 0.3567, 0.1712, 0.2303, 0.0332, -0.1550, -0.4381, -0.4918,\n", + " -0.2686, -0.2749, -0.2361, 0.2151, 0.2044, 0.3080, 0.2066, 0.2621,\n", + " 0.2059, 0.0441, 0.1204, 0.1355, 0.0696, 0.0225, 0.0318, 0.0750,\n", + " 0.0533, 0.0737, 0.0297, 0.1148, 0.2820, 0.3393, 0.2939, 0.2505,\n", + " 0.3128, 0.2642, 0.1666, 0.1095, 0.0044, -0.0160, 0.0219, -0.3162,\n", + " -0.2831, -0.3169, -0.2772]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002987399057019502\n", + "Grad encoder.fc1.bias: 0.0005980120040476322\n", + "Grad encoder.encoder.0.weight: 6.965547800064087e-05\n", + "Grad encoder.encoder.0.bias: 0.0004997802316211164\n", + "Grad encoder.encoder.2.weight: 4.106502456124872e-05\n", + "Grad encoder.encoder.2.bias: 0.0004353189142420888\n", + "Grad encoder.encoder.4.weight: 0.00010800763266161084\n", + "Grad encoder.encoder.4.bias: 0.000894585158675909\n", + "Grad decoder.fc1.0.weight: 4.2520114220678806e-05\n", + "Grad decoder.fc1.0.bias: 0.00043470412492752075\n", + "Grad decoder.fc1.2.weight: 6.823602598160505e-05\n", + "Grad decoder.fc1.2.bias: 0.0007143502589315176\n", + "Grad decoder.fc1.4.weight: 6.117914745118469e-05\n", + "Grad decoder.fc1.4.bias: 0.000740391667932272\n", + "Grad decoder.fc2.weight: 0.00015569328388664871\n", + "Grad decoder.fc2.bias: 0.0021827910095453262\n", + "Grad _memory_unit.weight_ih_l0: 1.776704448275268e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.833105751662515e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.0481995054287836e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.6306625992874615e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.851768845692277e-05\n", + "Grad _memory_unit.bias_hh_l1: 5.133856029715389e-05\n", + "Data X Sample: tensor([[2.7985, 2.8518, 2.2750, 2.2434, 2.3358, 2.2585, 3.3124, 4.0417, 4.0106,\n", + " 4.0883, 4.1081, 3.9787, 4.0746, 3.8879, 3.6290, 3.6281, 3.5661, 3.5167,\n", + " 3.5291, 3.3642, 3.4179, 3.3359, 3.1110, 2.8382, 2.7552, 2.7947, 2.7279,\n", + " 2.7938, 2.6539, 2.7675, 2.8136, 2.8573, 3.1153, 2.2702, 3.9464, 4.3269,\n", + " 4.6252, 5.0434, 5.7173, 5.3735, 1.7086, 0.9360, 0.8650, 1.3548, 1.9187,\n", + " 2.1786, 1.5230, 1.9626]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2427, 0.1967, -1.1274, -1.1882, -1.6379, -1.2308, 0.3393, 0.4015,\n", + " 0.8116, 0.7077, 0.8208, -0.4862, -0.6580, -1.2558, -1.1579, -0.9126,\n", + " -0.8872, 0.1419, -0.8658, -0.0161, -0.5931, -0.4391, 0.9074, -0.7086,\n", + " 0.2238, 0.0326, 1.6790, -0.7781, -1.1339, 0.3888, -0.1818, -0.5385,\n", + " 0.2161, -0.6135, -0.6120, -0.9436, 0.4915, 0.1511, -0.0156, 0.8585,\n", + " 0.7921, 0.9398, 1.0060]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1637, -0.2238, -0.0522, -0.1576, -0.0653, 0.0745, 0.1266, 0.1892,\n", + " 0.1293, 0.1441, 0.2115, -0.1311, -0.0887, -0.2329, -0.2031, -0.2308,\n", + " -0.2122, -0.0551, -0.0452, -0.0597, -0.0414, -0.0356, -0.0485, -0.0303,\n", + " 0.0046, 0.0522, -0.0526, -0.0966, -0.1488, -0.1583, -0.2135, -0.1343,\n", + " -0.1891, -0.2413, -0.1235, -0.1965, -0.0516, -0.0247, 0.0696, 0.2240,\n", + " 0.2404, 0.2602, 0.1888]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002964555751532316\n", + "Grad encoder.fc1.bias: 0.00048450197209604084\n", + "Grad encoder.encoder.0.weight: 6.234352622414008e-05\n", + "Grad encoder.encoder.0.bias: 0.0004344978369772434\n", + "Grad encoder.encoder.2.weight: 3.678679058793932e-05\n", + "Grad encoder.encoder.2.bias: 0.0003345294971950352\n", + "Grad encoder.encoder.4.weight: 8.768400584813207e-05\n", + "Grad encoder.encoder.4.bias: 0.0007340512238442898\n", + "Grad decoder.fc1.0.weight: 3.5908440622733906e-05\n", + "Grad decoder.fc1.0.bias: 0.00035581999691203237\n", + "Grad decoder.fc1.2.weight: 3.8534082705155015e-05\n", + "Grad decoder.fc1.2.bias: 0.0003935387940146029\n", + "Grad decoder.fc1.4.weight: 4.209922917652875e-05\n", + "Grad decoder.fc1.4.bias: 0.0004898400511592627\n", + "Grad decoder.fc2.weight: 0.00011715829168679193\n", + "Grad decoder.fc2.bias: 0.0015631438000127673\n", + "Grad _memory_unit.weight_ih_l0: 8.381917723454535e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.7590729587245733e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.4537336937792134e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.841041689156555e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.845597115694545e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.08966773445718e-05\n", + "Data X Sample: tensor([[1.5435, 1.7522, 1.8678, 1.9526, 2.0950, 2.2202, 2.4481, 2.5553, 2.4434,\n", + " 2.6381, 2.5505, 2.6466, 2.5366, 2.5083, 2.5118, 2.4260, 2.3460, 2.4992,\n", + " 2.3851, 2.4567, 2.3996, 2.4556, 2.4387, 2.3687, 2.4005, 2.4134, 2.4109,\n", + " 2.5165, 2.2792, 2.4138, 2.2887, 2.3046, 2.3188, 1.5058, 1.9511, 1.7439,\n", + " 1.6400, 1.4762, 1.5973, 1.6172, 1.2886, 0.7548, 0.7316, 1.2429, 1.8671,\n", + " 2.0014, 1.4210, 1.9548]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.2565e+00, 1.0024e+00, 4.4816e-01, 5.4257e-01, 1.3002e+00,\n", + " -5.6303e-01, -6.8426e-01, -2.3152e-01, 1.6199e-01, -5.9339e-01,\n", + " -4.1923e-01, 2.0482e+00, -8.5820e-01, -5.5330e-01, 2.6084e+01,\n", + " 1.1622e+00, 1.4889e+00, -2.0510e-01, 1.0136e+00, 3.9413e-01,\n", + " -2.3334e-01, 8.5033e-02, 2.3619e-01, 1.0640e+00, -4.6880e-02,\n", + " -1.8598e-01, 5.3011e-01, 3.4652e-01, 5.6601e-01, -1.9755e-02,\n", + " -5.2940e-01, 3.0542e-02, 3.5050e-01, -3.4913e-01, 2.7464e-01,\n", + " -3.6627e-01, 9.7267e-01, -6.7815e-01, -5.9701e-01, -3.7979e-01,\n", + " -5.9004e-01, -7.1194e-01, -1.0025e+00]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4986, 0.4284, 0.1920, 0.2904, 0.0396, -0.2022, -0.5236, -0.5897,\n", + " -0.3191, -0.3378, -0.2920, 0.2697, 0.2495, 0.3830, 0.2657, 0.3094,\n", + " 0.2632, 0.0591, 0.1552, 0.1676, 0.0804, 0.0304, 0.0373, 0.0698,\n", + " 0.0573, 0.0652, 0.0445, 0.1510, 0.3307, 0.4233, 0.3587, 0.3015,\n", + " 0.3865, 0.3392, 0.1915, 0.1542, 0.0087, -0.0243, 0.0287, -0.3918,\n", + " -0.3545, -0.3997, -0.3376]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 5.8617832110030577e-05\n", + "Grad encoder.fc1.bias: 0.00026275566779077053\n", + "Grad encoder.encoder.0.weight: 2.3805252567399293e-05\n", + "Grad encoder.encoder.0.bias: 0.00017732035485096276\n", + "Grad encoder.encoder.2.weight: 2.4309936634381302e-05\n", + "Grad encoder.encoder.2.bias: 0.0002011809265241027\n", + "Grad encoder.encoder.4.weight: 9.644612873671576e-05\n", + "Grad encoder.encoder.4.bias: 0.0008231307147070765\n", + "Grad decoder.fc1.0.weight: 4.080763028468937e-05\n", + "Grad decoder.fc1.0.bias: 0.00044368254020810127\n", + "Grad decoder.fc1.2.weight: 5.5770095059415326e-05\n", + "Grad decoder.fc1.2.bias: 0.0006040201988071203\n", + "Grad decoder.fc1.4.weight: 4.916427133139223e-05\n", + "Grad decoder.fc1.4.bias: 0.0005840228404849768\n", + "Grad decoder.fc2.weight: 0.000151589309098199\n", + "Grad decoder.fc2.bias: 0.002100572222843766\n", + "Grad _memory_unit.weight_ih_l0: 9.948857041308656e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.794920823769644e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.5116321921814233e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.467799044505227e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010416000441182405\n", + "Grad _memory_unit.bias_hh_l1: 5.519711339729838e-05\n", + "Data X Sample: tensor([[0.0721, 0.0757, 0.0977, 0.1224, 0.1315, 0.1429, 0.1618, 0.1704, 0.1782,\n", + " 0.1896, 0.1776, 0.1831, 0.1886, 0.1854, 0.1891, 0.2215, 0.2359, 0.2534,\n", + " 0.2457, 0.2455, 0.2895, 0.2572, 0.2651, 0.2577, 0.2609, 0.2873, 0.2691,\n", + " 0.3100, 0.1839, 0.2391, 0.1960, 0.2211, 0.1826, 0.1304, 0.1985, 0.1581,\n", + " 0.1809, 0.1564, 0.1585, 0.1589, 0.0573, 0.0418, 0.0364, 0.0517, 0.1269,\n", + " 0.0801, 0.1088, 0.1173]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1382, -0.2173, -0.9464, 1.2257, 1.0903, 0.4363, -0.3572, -0.2170,\n", + " -0.2688, -0.1283, -0.2556, -0.0418, 1.1452, 0.3096, 0.3205, 0.5408,\n", + " 0.7548, -0.0747, 0.3777, 0.9318, -1.6052, 0.6277, -0.8277, 0.3377,\n", + " 0.1871, 0.2757, 0.1455, 0.2783, 0.1884, 0.0900, 0.4868, -0.2442,\n", + " 0.9721, 0.3630, 1.5417, 0.8334, 0.3148, -0.8198, -2.2862, -0.0775,\n", + " -0.4286, -0.2524, -0.4840]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5369, 0.4475, 0.1962, 0.3008, -0.0270, -0.2469, -0.6034, -0.6774,\n", + " -0.3919, -0.3998, -0.3482, 0.2964, 0.2562, 0.4108, 0.2535, 0.2988,\n", + " 0.2895, 0.0443, 0.1727, 0.1518, 0.0982, 0.0272, 0.0197, 0.0488,\n", + " 0.0431, 0.0137, 0.0847, 0.2257, 0.4131, 0.5196, 0.4356, 0.3579,\n", + " 0.4282, 0.3684, 0.2210, 0.1586, 0.0152, -0.0347, 0.0559, -0.4639,\n", + " -0.4047, -0.4376, -0.3186]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001297875278396532\n", + "Grad encoder.fc1.bias: 0.0004213018110021949\n", + "Grad encoder.encoder.0.weight: 3.683767135953531e-05\n", + "Grad encoder.encoder.0.bias: 0.0003100165631622076\n", + "Grad encoder.encoder.2.weight: 2.8355723770800978e-05\n", + "Grad encoder.encoder.2.bias: 0.00029374397126957774\n", + "Grad encoder.encoder.4.weight: 8.916099613998085e-05\n", + "Grad encoder.encoder.4.bias: 0.0006454016547650099\n", + "Grad decoder.fc1.0.weight: 3.41862287314143e-05\n", + "Grad decoder.fc1.0.bias: 0.0003691181482281536\n", + "Grad decoder.fc1.2.weight: 5.217805664869957e-05\n", + "Grad decoder.fc1.2.bias: 0.0006285379640758038\n", + "Grad decoder.fc1.4.weight: 5.3492982260650024e-05\n", + "Grad decoder.fc1.4.bias: 0.0007175778737291694\n", + "Grad decoder.fc2.weight: 0.00015956528659444302\n", + "Grad decoder.fc2.bias: 0.0020292492117732763\n", + "Grad _memory_unit.weight_ih_l0: 1.070477537723491e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.887984217319172e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.0011568519985303e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.55944098373584e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.0975904741790146e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.7112182579003274e-05\n", + "Data X Sample: tensor([[1.5817, 1.9561, 2.2284, 2.2849, 2.4570, 2.5753, 2.5991, 2.7044, 2.6875,\n", + " 2.6571, 2.6679, 2.6057, 2.3635, 2.3229, 2.1537, 2.1211, 2.1384, 2.1162,\n", + " 2.1373, 2.0252, 2.0463, 1.9733, 1.8459, 1.8113, 1.7492, 1.7761, 1.7183,\n", + " 1.7946, 1.2316, 1.3592, 1.2143, 1.2159, 1.1088, 0.8353, 1.2623, 1.3912,\n", + " 1.5614, 1.8207, 2.0473, 2.0626, 1.3220, 0.7826, 0.7983, 1.4352, 2.1644,\n", + " 2.0929, 1.6113, 2.3379]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.6359, -1.3687, -0.9948, -0.6528, -0.4021, 0.4288, 0.2506, 1.5347,\n", + " 0.6657, 1.4418, 3.2280, -0.8503, -1.0429, -1.0723, -0.7735, -2.2560,\n", + " -0.4818, -0.3668, 0.0759, -0.0756, 0.1178, 0.3597, -0.0594, -0.0823,\n", + " 0.2468, 0.1659, 0.3076, 0.3386, 0.0546, -0.4448, -0.6478, -0.3181,\n", + " -0.3275, -2.2647, -1.9669, -0.4928, 1.0570, -0.3319, 0.5906, 3.9301,\n", + " 3.9592, 3.3124, 3.0208]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1969, -0.2559, -0.0962, -0.2487, -0.1750, -0.0332, 0.0340, 0.1836,\n", + " 0.1036, 0.1236, 0.1635, -0.0812, -0.0908, -0.1830, -0.1256, -0.2111,\n", + " -0.2314, -0.1177, -0.0537, -0.0726, -0.0432, -0.0259, -0.0746, -0.0600,\n", + " 0.0491, 0.0283, 0.0715, -0.0350, -0.0810, -0.1400, -0.1112, -0.1263,\n", + " -0.0734, -0.1685, -0.0814, -0.1705, -0.0335, -0.0187, 0.0288, 0.2201,\n", + " 0.2249, 0.2271, 0.2012]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00013560091610997915\n", + "Grad encoder.fc1.bias: 0.00040215745684690773\n", + "Grad encoder.encoder.0.weight: 4.364168125903234e-05\n", + "Grad encoder.encoder.0.bias: 0.00035992407356388867\n", + "Grad encoder.encoder.2.weight: 3.7781577702844515e-05\n", + "Grad encoder.encoder.2.bias: 0.00040827717748470604\n", + "Grad encoder.encoder.4.weight: 0.00010158216900890693\n", + "Grad encoder.encoder.4.bias: 0.0016151124145835638\n", + "Grad decoder.fc1.0.weight: 4.709684071713127e-05\n", + "Grad decoder.fc1.0.bias: 0.000654578790999949\n", + "Grad decoder.fc1.2.weight: 6.949391536181793e-05\n", + "Grad decoder.fc1.2.bias: 0.0008239602320827544\n", + "Grad decoder.fc1.4.weight: 5.224796404945664e-05\n", + "Grad decoder.fc1.4.bias: 0.0007106742123141885\n", + "Grad decoder.fc2.weight: 0.00013409272651188076\n", + "Grad decoder.fc2.bias: 0.0022872707340866327\n", + "Grad _memory_unit.weight_ih_l0: 1.5265311958501115e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.722383063286543e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.570836608763784e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.789371243736241e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00015187906683422625\n", + "Grad _memory_unit.bias_hh_l1: 8.019241795409471e-05\n", + "Data X Sample: tensor([[2.6256, 2.9130, 3.1901, 3.1880, 3.3910, 3.5859, 3.6467, 3.6939, 3.8251,\n", + " 3.7882, 4.0066, 3.9359, 3.9436, 3.9207, 3.7047, 3.6377, 3.6652, 3.5882,\n", + " 3.5167, 3.5204, 3.4694, 3.3665, 3.0628, 2.8802, 2.7758, 2.8574, 2.9197,\n", + " 2.8876, 2.9314, 2.9574, 2.9466, 2.9789, 3.0009, 2.1718, 3.5713, 3.9889,\n", + " 4.1984, 4.4445, 4.9186, 4.7720, 1.9711, 1.1291, 1.0772, 1.9318, 2.8859,\n", + " 2.9792, 2.0465, 3.1199]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2185, -2.0766, 0.2336, -1.4254, 0.1455, -0.4653, 0.7407, 0.7773,\n", + " 0.3628, 0.6600, 0.6038, -0.3353, -1.1013, -0.5256, -0.6584, -0.9233,\n", + " -1.0522, -0.0618, -0.4044, -0.3914, -0.0547, 0.1735, -0.2888, -0.4043,\n", + " 0.2840, 0.1149, -0.1729, 1.9802, -0.6217, -0.4666, -0.9116, -0.4991,\n", + " -0.4361, -0.7460, -0.6638, -0.6217, -1.0105, 0.7357, 2.2782, 0.7452,\n", + " 0.7498, 1.0244, 0.6312]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1821, -0.2597, -0.0965, -0.2301, -0.1749, -0.0229, 0.0497, 0.1813,\n", + " 0.1064, 0.1076, 0.1734, -0.0911, -0.0953, -0.1900, -0.1373, -0.2159,\n", + " -0.2207, -0.1148, -0.0709, -0.0776, -0.0477, -0.0261, -0.0808, -0.0539,\n", + " 0.0542, 0.0310, 0.0629, -0.0581, -0.0848, -0.1327, -0.1350, -0.1216,\n", + " -0.0805, -0.1774, -0.0779, -0.1687, -0.0441, -0.0272, 0.0400, 0.2264,\n", + " 0.2209, 0.2336, 0.1808]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001354111300315708\n", + "Grad encoder.fc1.bias: 0.000902652507647872\n", + "Grad encoder.encoder.0.weight: 5.738147228839807e-05\n", + "Grad encoder.encoder.0.bias: 0.0008196339476853609\n", + "Grad encoder.encoder.2.weight: 5.192003300180659e-05\n", + "Grad encoder.encoder.2.bias: 0.000559360662009567\n", + "Grad encoder.encoder.4.weight: 0.00014955824008211493\n", + "Grad encoder.encoder.4.bias: 0.000626279681455344\n", + "Grad decoder.fc1.0.weight: 5.433461410575546e-05\n", + "Grad decoder.fc1.0.bias: 0.0004755842383019626\n", + "Grad decoder.fc1.2.weight: 7.046728569548577e-05\n", + "Grad decoder.fc1.2.bias: 0.0005488819442689419\n", + "Grad decoder.fc1.4.weight: 4.997326323064044e-05\n", + "Grad decoder.fc1.4.bias: 0.0005451749311760068\n", + "Grad decoder.fc2.weight: 0.00012495422561187297\n", + "Grad decoder.fc2.bias: 0.0015923820901662111\n", + "Grad _memory_unit.weight_ih_l0: 1.87153673323337e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.158279625698924e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.332115218450781e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.85332485975232e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010797374125104398\n", + "Grad _memory_unit.bias_hh_l1: 5.788398993900046e-05\n", + "Data X Sample: tensor([[1.2231, 1.4026, 1.4575, 1.4803, 1.6750, 1.7606, 1.8211, 1.8483, 3.0976,\n", + " 3.7976, 3.8575, 3.8969, 3.5708, 3.5771, 3.5988, 3.5324, 3.5473, 3.6250,\n", + " 3.5353, 3.4256, 3.2191, 3.1476, 2.8484, 2.7065, 2.6613, 2.7686, 2.7972,\n", + " 2.7653, 2.8308, 2.8919, 3.0411, 3.1087, 3.4915, 2.5013, 4.0469, 4.4729,\n", + " 4.7038, 4.9931, 5.5588, 5.3139, 0.9307, 0.5556, 0.5659, 0.9817, 1.4073,\n", + " 1.4181, 1.0538, 1.4231]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1886, 0.1562, -1.3046, -0.3614, -0.5859, -0.2406, -0.5060, -0.0136,\n", + " 0.4975, 0.2266, -0.7965, -0.5719, 0.9098, -0.0581, -0.6924, -0.2758,\n", + " 0.2342, -0.9112, -0.5338, -0.7164, -2.5936, -0.8890, -1.7772, -1.5791,\n", + " -1.2378, -0.5349, -1.2096, 0.1629, -0.0990, 0.2474, 0.4895, -0.9574,\n", + " 2.7043, 0.6132, -0.0821, 0.5986, -0.5257, -0.1220, 0.5928, 0.3655,\n", + " 0.0787, -0.0850, 0.9782]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1863, -0.2268, -0.0222, -0.0696, 0.0395, 0.1545, 0.1660, 0.2117,\n", + " 0.1812, 0.2114, 0.2221, -0.1303, -0.1195, -0.2808, -0.2323, -0.2731,\n", + " -0.1983, -0.0539, -0.0200, -0.0730, -0.0699, -0.0650, -0.0157, -0.0678,\n", + " -0.0549, 0.0084, -0.1197, -0.1396, -0.2172, -0.2031, -0.2548, -0.1323,\n", + " -0.2756, -0.2786, -0.1540, -0.2302, -0.0209, -0.0342, 0.0509, 0.2578,\n", + " 0.2785, 0.2597, 0.2109]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00031909096287563443\n", + "Grad encoder.fc1.bias: 0.00032816140446811914\n", + "Grad encoder.encoder.0.weight: 6.425194442272186e-05\n", + "Grad encoder.encoder.0.bias: 0.00031968584517017007\n", + "Grad encoder.encoder.2.weight: 4.5911619963590056e-05\n", + "Grad encoder.encoder.2.bias: 0.0004439202602952719\n", + "Grad encoder.encoder.4.weight: 0.00014075348735786974\n", + "Grad encoder.encoder.4.bias: 0.002202584408223629\n", + "Grad decoder.fc1.0.weight: 5.457515362650156e-05\n", + "Grad decoder.fc1.0.bias: 0.0007927788537926972\n", + "Grad decoder.fc1.2.weight: 6.606007082154974e-05\n", + "Grad decoder.fc1.2.bias: 0.000824596150778234\n", + "Grad decoder.fc1.4.weight: 5.5687021813355386e-05\n", + "Grad decoder.fc1.4.bias: 0.0007690485799685121\n", + "Grad decoder.fc2.weight: 0.00014280887262430042\n", + "Grad decoder.fc2.bias: 0.0021161509212106466\n", + "Grad _memory_unit.weight_ih_l0: 1.6898133253562264e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00014536191883962601\n", + "Grad _memory_unit.bias_hh_l0: 7.454349542967975e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.526890840381384e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00024162203771993518\n", + "Grad _memory_unit.bias_hh_l1: 0.00012732511095236987\n", + "Data X Sample: tensor([[1.5372, 1.6662, 1.9594, 2.0925, 2.2589, 2.1834, 1.9505, 2.6419, 3.9349,\n", + " 4.2810, 4.3683, 4.3546, 4.1700, 4.0243, 3.9947, 3.7963, 3.7234, 3.6482,\n", + " 3.6468, 3.3865, 3.5283, 3.3114, 2.9158, 2.8039, 2.8021, 2.8888, 3.0209,\n", + " 3.0793, 3.0425, 3.1278, 3.2196, 3.2580, 3.7995, 2.7851, 4.5788, 4.8547,\n", + " 5.0204, 5.5311, 5.9454, 5.7707, 1.2313, 0.6811, 0.7033, 1.2630, 1.8909,\n", + " 1.9270, 1.3394, 1.9939]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.8015, -0.5013, -0.1663, 0.1339, 1.6162, -0.3207, 0.4035, 0.4211,\n", + " 0.1840, 0.4529, 0.5448, 0.2561, -0.0948, -0.8013, -0.9663, -0.5390,\n", + " 0.0991, -0.9693, -0.1893, -0.6868, 0.1820, -0.8995, -0.3001, -0.0847,\n", + " -0.1562, -0.3571, -0.4228, -1.0273, -0.2804, -0.2540, -0.7440, -0.3781,\n", + " -0.1321, -0.6576, 0.6347, -0.3457, -0.8471, -0.4903, -0.5988, 0.3556,\n", + " 0.3503, 0.7331, -0.3916]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1726, -0.2278, -0.0211, -0.0932, 0.0107, 0.1341, 0.1660, 0.2089,\n", + " 0.1789, 0.1819, 0.2198, -0.1320, -0.1081, -0.2769, -0.2287, -0.2583,\n", + " -0.1985, -0.0550, -0.0191, -0.0780, -0.0673, -0.0519, -0.0307, -0.0595,\n", + " -0.0387, 0.0138, -0.1009, -0.1392, -0.1974, -0.1937, -0.2481, -0.1312,\n", + " -0.2484, -0.2730, -0.1450, -0.2143, -0.0206, -0.0290, 0.0505, 0.2533,\n", + " 0.2710, 0.2608, 0.2071]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005892039625905454\n", + "Grad encoder.fc1.bias: 0.0004592552431859076\n", + "Grad encoder.encoder.0.weight: 0.00011854284821311012\n", + "Grad encoder.encoder.0.bias: 0.0004880898632109165\n", + "Grad encoder.encoder.2.weight: 7.091321458574384e-05\n", + "Grad encoder.encoder.2.bias: 0.0005744227091781795\n", + "Grad encoder.encoder.4.weight: 0.00019912996503990144\n", + "Grad encoder.encoder.4.bias: 0.0018772720359265804\n", + "Grad decoder.fc1.0.weight: 7.200392428785563e-05\n", + "Grad decoder.fc1.0.bias: 0.0008421264356002212\n", + "Grad decoder.fc1.2.weight: 0.00010671037307474762\n", + "Grad decoder.fc1.2.bias: 0.0016045302618294954\n", + "Grad decoder.fc1.4.weight: 8.832664752844721e-05\n", + "Grad decoder.fc1.4.bias: 0.001594343688338995\n", + "Grad decoder.fc2.weight: 0.000143542536534369\n", + "Grad decoder.fc2.bias: 0.003306498983874917\n", + "Grad _memory_unit.weight_ih_l0: 2.2843818442197517e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.335003126878291e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.3481144782854244e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.03336604096694e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00015263078967109323\n", + "Grad _memory_unit.bias_hh_l1: 7.844827632652596e-05\n", + "Data X Sample: tensor([[1.5149, 1.6823, 1.9714, 1.9591, 2.0831, 2.1451, 2.1970, 2.2118, 2.2775,\n", + " 2.3380, 2.3285, 2.3993, 2.3058, 2.1594, 2.2773, 2.2688, 2.2454, 2.3174,\n", + " 2.3521, 2.3767, 2.4094, 2.4219, 2.4773, 2.4718, 2.4924, 2.5074, 2.5015,\n", + " 2.5287, 2.2584, 2.4170, 2.4427, 2.4455, 2.2506, 1.4532, 1.9658, 1.7974,\n", + " 1.6951, 1.5000, 1.5973, 1.5547, 1.2170, 0.6791, 0.7094, 1.2400, 1.8949,\n", + " 2.0357, 1.3666, 1.9548]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1202, 1.1262, -0.0394, -0.9819, 0.8106, -0.4286, 0.5914, -0.5082,\n", + " 0.5919, 0.5779, 0.4225, 0.5271, 0.3723, 0.2146, -1.0470, 0.1579,\n", + " 0.1790, -0.6098, -0.8980, -1.4443, -0.0626, -1.6170, -0.7408, -1.5718,\n", + " 7.3761, -0.2525, -0.1971, -0.3068, 0.5406, -0.3715, -0.9566, -1.4469,\n", + " -0.6137, -0.6814, -0.9801, -0.0966, 0.0501, 0.0000, 0.7285, -0.3606,\n", + " 0.4787, 0.3486, -1.0695]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 4.3183e-01, 4.5249e-01, 2.0391e-01, 2.8763e-01, 9.2894e-02,\n", + " -1.9332e-01, -4.2885e-01, -4.9408e-01, -2.4089e-01, -3.0544e-01,\n", + " -2.5327e-01, 2.7545e-01, 2.0539e-01, 3.2387e-01, 2.8547e-01,\n", + " 3.0766e-01, 2.8068e-01, 5.1893e-02, 1.5947e-01, 1.6595e-01,\n", + " 9.3259e-02, 4.2708e-02, -1.3807e-02, -1.7131e-04, 6.9201e-02,\n", + " 6.0028e-02, -8.1786e-03, 5.1189e-02, 2.1864e-01, 3.4733e-01,\n", + " 2.9956e-01, 1.9867e-01, 3.5819e-01, 3.0201e-01, 1.7756e-01,\n", + " 1.5610e-01, 2.3250e-02, -2.3175e-02, 4.8919e-02, -3.4204e-01,\n", + " -3.2428e-01, -3.9597e-01, -3.3644e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 9.003124432638288e-05\n", + "Grad encoder.fc1.bias: 0.00042283639777451754\n", + "Grad encoder.encoder.0.weight: 3.356155502842739e-05\n", + "Grad encoder.encoder.0.bias: 0.0003167573595419526\n", + "Grad encoder.encoder.2.weight: 2.8182264941278845e-05\n", + "Grad encoder.encoder.2.bias: 0.00044520021765492857\n", + "Grad encoder.encoder.4.weight: 6.977174780331552e-05\n", + "Grad encoder.encoder.4.bias: 0.0018634924199432135\n", + "Grad decoder.fc1.0.weight: 4.944351894664578e-05\n", + "Grad decoder.fc1.0.bias: 0.0007695779204368591\n", + "Grad decoder.fc1.2.weight: 6.491826206911355e-05\n", + "Grad decoder.fc1.2.bias: 0.0007851875270716846\n", + "Grad decoder.fc1.4.weight: 4.755925328936428e-05\n", + "Grad decoder.fc1.4.bias: 0.000721472897566855\n", + "Grad decoder.fc2.weight: 9.336255607195199e-05\n", + "Grad decoder.fc2.bias: 0.0016778025310486555\n", + "Grad _memory_unit.weight_ih_l0: 7.370779712800868e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.433832408627495e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.464691301109269e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.212972948560491e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00015287156566046178\n", + "Grad _memory_unit.bias_hh_l1: 8.196790440706536e-05\n", + "Data X Sample: tensor([[2.7592, 2.4163, 1.9805, 2.2084, 2.3341, 2.2084, 3.1368, 4.1084, 4.2400,\n", + " 4.2984, 4.2541, 4.0975, 3.9747, 3.9752, 3.7980, 3.5515, 3.5205, 3.6366,\n", + " 3.5002, 3.5353, 3.4571, 3.3282, 3.1303, 2.9623, 2.8809, 2.8208, 2.7865,\n", + " 2.9162, 2.8204, 2.8854, 2.9151, 3.0590, 3.3001, 2.4670, 4.1253, 4.4996,\n", + " 4.7353, 5.1971, 5.7870, 5.7537, 1.5606, 0.8006, 0.7073, 1.2601, 1.8037,\n", + " 2.1558, 1.3530, 1.9939]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0347, -0.2847, 0.5806, -1.2570, -0.5192, -0.3058, -0.1961, -0.4659,\n", + " 0.3082, -0.3181, -0.4435, 0.9144, 1.0042, -0.3342, 2.0015, -0.1159,\n", + " -0.5796, 0.0371, -0.3181, 0.1320, 0.4476, 1.3639, 0.7811, 1.5498,\n", + " 0.1566, 0.1283, 0.3565, -0.7012, -0.2179, 0.2629, 0.8882, -0.5263,\n", + " 0.2214, -0.4592, 0.3080, -0.2135, 0.4925, -0.7895, -0.2578, -0.1344,\n", + " -0.5112, -0.2493, -0.0398]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1881, -0.2648, -0.0616, -0.1709, -0.0931, 0.0568, 0.1352, 0.2155,\n", + " 0.1865, 0.1584, 0.2132, -0.1010, -0.1000, -0.2494, -0.2022, -0.2622,\n", + " -0.2194, -0.0994, -0.0281, -0.1044, -0.0795, -0.0293, -0.0625, -0.0688,\n", + " -0.0058, 0.0164, -0.0274, -0.1113, -0.1444, -0.1775, -0.2058, -0.1412,\n", + " -0.1600, -0.2361, -0.1226, -0.1910, -0.0205, -0.0281, 0.0294, 0.2721,\n", + " 0.2767, 0.2693, 0.2196]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000135530048282817\n", + "Grad encoder.fc1.bias: 0.0005933843785896897\n", + "Grad encoder.encoder.0.weight: 4.732548404717818e-05\n", + "Grad encoder.encoder.0.bias: 0.00034932763082906604\n", + "Grad encoder.encoder.2.weight: 3.1085379305295646e-05\n", + "Grad encoder.encoder.2.bias: 0.0002415275084786117\n", + "Grad encoder.encoder.4.weight: 9.486409544479102e-05\n", + "Grad encoder.encoder.4.bias: 0.0005630670348182321\n", + "Grad decoder.fc1.0.weight: 3.632017251220532e-05\n", + "Grad decoder.fc1.0.bias: 0.00032822968205437064\n", + "Grad decoder.fc1.2.weight: 4.9586680688662454e-05\n", + "Grad decoder.fc1.2.bias: 0.0004407681408338249\n", + "Grad decoder.fc1.4.weight: 5.089921614853665e-05\n", + "Grad decoder.fc1.4.bias: 0.0006385813467204571\n", + "Grad decoder.fc2.weight: 0.00011971451749559492\n", + "Grad decoder.fc2.bias: 0.0014081468107178807\n", + "Grad _memory_unit.weight_ih_l0: 1.3890426998841576e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.2832413378637284e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.2625757335626986e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.6540658331650775e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.096120341680944e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.185500099789351e-05\n", + "Data X Sample: tensor([[1.4141, 1.7376, 1.9895, 2.0947, 2.0865, 2.0876, 2.0938, 2.1252, 3.3393,\n", + " 4.0978, 4.3556, 4.2806, 4.1789, 4.1142, 4.0098, 3.7457, 3.7014, 3.5766,\n", + " 3.7542, 3.6766, 3.6264, 3.4109, 2.9978, 2.8955, 2.9260, 2.9227, 3.0049,\n", + " 3.1691, 2.9453, 3.1671, 3.3175, 3.3547, 3.8017, 2.8034, 4.5689, 4.9836,\n", + " 5.1187, 5.5496, 6.0405, 5.9580, 1.1645, 0.6930, 0.6972, 1.2658, 1.7205,\n", + " 1.9613, 1.3734, 1.9001]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1063, 0.2393, 0.0540, 1.2078, 0.6621, -0.7359, 0.3116, 0.7303,\n", + " -0.7730, -0.5686, -0.4951, -0.1005, 0.7578, -0.4390, 0.6106, 0.2528,\n", + " -0.2311, -0.1228, 0.3846, 0.4850, 0.0801, 0.2440, 1.0272, 1.1259,\n", + " 0.8525, 0.3749, -0.7505, -0.1525, -0.5278, 0.4055, 0.6638, 0.6716,\n", + " 0.1949, 0.0125, 0.7100, 0.5335, -0.0333, 0.0940, 0.7936, 0.6807,\n", + " -1.3877, 1.2168, -0.0931]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2003, -0.2726, -0.0436, -0.1312, -0.0190, 0.1218, 0.1893, 0.2470,\n", + " 0.2292, 0.1990, 0.2451, -0.1248, -0.1152, -0.3006, -0.2448, -0.2969,\n", + " -0.2243, -0.0839, -0.0159, -0.1100, -0.0907, -0.0408, -0.0466, -0.0735,\n", + " -0.0404, 0.0098, -0.0885, -0.1485, -0.2000, -0.2161, -0.2619, -0.1581,\n", + " -0.2356, -0.2865, -0.1551, -0.2144, -0.0117, -0.0281, 0.0402, 0.2998,\n", + " 0.3139, 0.3010, 0.2481]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001475749013479799\n", + "Grad encoder.fc1.bias: 0.0004922577645629644\n", + "Grad encoder.encoder.0.weight: 4.5799679355695844e-05\n", + "Grad encoder.encoder.0.bias: 0.0003293461923021823\n", + "Grad encoder.encoder.2.weight: 3.401549838599749e-05\n", + "Grad encoder.encoder.2.bias: 0.0002714164729695767\n", + "Grad encoder.encoder.4.weight: 9.839578706305474e-05\n", + "Grad encoder.encoder.4.bias: 0.0006226309924386442\n", + "Grad decoder.fc1.0.weight: 4.475614332477562e-05\n", + "Grad decoder.fc1.0.bias: 0.0003651987644843757\n", + "Grad decoder.fc1.2.weight: 6.718409713357687e-05\n", + "Grad decoder.fc1.2.bias: 0.0007352513493970037\n", + "Grad decoder.fc1.4.weight: 6.018151543685235e-05\n", + "Grad decoder.fc1.4.bias: 0.0007965744007378817\n", + "Grad decoder.fc2.weight: 0.00013827276416122913\n", + "Grad decoder.fc2.bias: 0.0019128738204017282\n", + "Grad _memory_unit.weight_ih_l0: 1.5705170881119557e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.240978912799619e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.7558486433699727e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.402709237183444e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.39969075564295e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.340958210173994e-05\n", + "Data X Sample: tensor([[1.4173, 1.5876, 1.7551, 1.8017, 1.9243, 2.0302, 2.1538, 2.3140, 3.9666,\n", + " 4.2178, 4.3810, 4.2709, 4.1079, 4.0433, 3.7929, 3.7827, 3.6573, 3.6830,\n", + " 3.5663, 3.5390, 3.4203, 3.4170, 3.0267, 2.8382, 2.7589, 2.8000, 2.8211,\n", + " 2.9651, 2.9002, 2.9443, 3.1531, 3.2580, 3.6785, 2.7508, 4.5395, 4.9034,\n", + " 5.0656, 5.4489, 5.9074, 5.7565, 1.1025, 0.6472, 0.6043, 1.1338, 1.6174,\n", + " 1.7269, 1.2238, 1.7515]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2187, -0.5470, 0.2862, 0.0916, 1.1678, 0.0942, 0.4980, -0.0529,\n", + " 0.3882, -0.3105, -0.4232, 0.7118, 0.2247, 0.9745, 0.9665, 0.7568,\n", + " 0.2165, 0.4411, -0.4865, 0.7392, 0.6060, -0.9516, 1.2157, -0.3354,\n", + " -1.5866, 0.2286, 0.1200, -0.0389, -1.1041, -0.3219, -0.4145, -0.4401,\n", + " 0.3122, 0.2382, -0.0347, 0.1899, 0.4925, -0.8400, 0.0000, -0.0352,\n", + " -0.4337, -0.3737, -0.0740]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2038, -0.2683, -0.0430, -0.1257, -0.0100, 0.1242, 0.1929, 0.2544,\n", + " 0.2396, 0.2110, 0.2457, -0.1197, -0.1174, -0.2985, -0.2426, -0.3023,\n", + " -0.2276, -0.0846, -0.0141, -0.1144, -0.0895, -0.0407, -0.0422, -0.0747,\n", + " -0.0553, 0.0079, -0.0920, -0.1463, -0.2031, -0.2176, -0.2618, -0.1623,\n", + " -0.2392, -0.2867, -0.1593, -0.2166, -0.0070, -0.0252, 0.0364, 0.3032,\n", + " 0.3240, 0.3066, 0.2541]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00017516009393148124\n", + "Grad encoder.fc1.bias: 0.0001547621504869312\n", + "Grad encoder.encoder.0.weight: 4.550287849269807e-05\n", + "Grad encoder.encoder.0.bias: 0.00017526152078062296\n", + "Grad encoder.encoder.2.weight: 3.921458846889436e-05\n", + "Grad encoder.encoder.2.bias: 0.00024823317653499544\n", + "Grad encoder.encoder.4.weight: 0.0001267358602490276\n", + "Grad encoder.encoder.4.bias: 0.0005792228039354086\n", + "Grad decoder.fc1.0.weight: 5.4876603826414794e-05\n", + "Grad decoder.fc1.0.bias: 0.0004942233208566904\n", + "Grad decoder.fc1.2.weight: 7.477303734049201e-05\n", + "Grad decoder.fc1.2.bias: 0.0008699164027348161\n", + "Grad decoder.fc1.4.weight: 7.246072345878929e-05\n", + "Grad decoder.fc1.4.bias: 0.000958304270170629\n", + "Grad decoder.fc2.weight: 0.0001432788703823462\n", + "Grad decoder.fc2.bias: 0.0018199781188741326\n", + "Grad _memory_unit.weight_ih_l0: 1.6803111066110432e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.399951623985544e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.8105676392442547e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.999621746217599e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00012499865260906518\n", + "Grad _memory_unit.bias_hh_l1: 6.567018863279372e-05\n", + "Data X Sample: tensor([[2.8844, 3.3776, 3.6243, 3.7302, 3.9510, 4.2076, 4.1891, 4.1552, 4.3621,\n", + " 4.1657, 4.3714, 4.1073, 3.8637, 3.8334, 3.8686, 3.6500, 3.7045, 3.6888,\n", + " 3.7687, 3.7436, 3.8031, 3.8380, 3.2267, 3.1112, 3.0254, 2.9227, 2.9170,\n", + " 2.9651, 3.0702, 3.1867, 3.1356, 3.3353, 3.6521, 2.6089, 4.0174, 4.5118,\n", + " 4.8926, 5.0832, 5.6032, 5.4473, 2.1620, 1.2526, 1.2409, 2.1958, 3.0128,\n", + " 3.6139, 2.3048, 3.4092]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1931, -1.0042, -0.8512, -0.3933, -0.0045, -0.8590, 0.6591, 0.7740,\n", + " 0.9859, 0.2168, 0.6966, -1.8515, 0.7416, -0.4166, 0.3063, 0.0117,\n", + " 0.3279, 0.1532, 0.6581, -0.0172, -1.6059, 1.5858, 1.7314, 0.3694,\n", + " -0.7176, 0.5145, 0.3856, 0.1643, -0.0618, 0.2032, -0.2567, -0.4923,\n", + " -0.4346, -0.7646, 0.3401, 0.0286, -0.5002, 0.1524, -0.8827, 0.3167,\n", + " 0.4100, 0.3977, -0.1920]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2767, -0.3686, -0.1322, -0.3534, -0.2268, -0.0564, 0.0600, 0.2495,\n", + " 0.1689, 0.1592, 0.2196, -0.0825, -0.1465, -0.2595, -0.1499, -0.2930,\n", + " -0.3037, -0.1895, -0.0785, -0.1189, -0.0892, -0.0382, -0.0957, -0.0859,\n", + " 0.0504, -0.0019, 0.1330, -0.0515, -0.0955, -0.1920, -0.1346, -0.1683,\n", + " -0.0722, -0.2162, -0.1174, -0.1874, -0.0276, -0.0169, 0.0265, 0.3222,\n", + " 0.3000, 0.2994, 0.2900]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00011527354217832908\n", + "Grad encoder.fc1.bias: 8.176508708857e-05\n", + "Grad encoder.encoder.0.weight: 3.263499093009159e-05\n", + "Grad encoder.encoder.0.bias: 9.970930841518566e-05\n", + "Grad encoder.encoder.2.weight: 2.5896433726302348e-05\n", + "Grad encoder.encoder.2.bias: 0.00014045432908460498\n", + "Grad encoder.encoder.4.weight: 6.622935325140134e-05\n", + "Grad encoder.encoder.4.bias: 0.00036055324017070234\n", + "Grad decoder.fc1.0.weight: 2.62385219684802e-05\n", + "Grad decoder.fc1.0.bias: 0.0002336616162210703\n", + "Grad decoder.fc1.2.weight: 3.630753781180829e-05\n", + "Grad decoder.fc1.2.bias: 0.00042859732639044523\n", + "Grad decoder.fc1.4.weight: 4.1741128370631486e-05\n", + "Grad decoder.fc1.4.bias: 0.0005828995490446687\n", + "Grad decoder.fc2.weight: 0.00011485316645121202\n", + "Grad decoder.fc2.bias: 0.0019014382269233465\n", + "Grad _memory_unit.weight_ih_l0: 7.293311682587955e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.0730901926290244e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.581843025633134e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.459676690908964e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.138077878858894e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.186034155078232e-05\n", + "Data X Sample: tensor([[1.5509, 1.8206, 2.0195, 2.2106, 2.2641, 2.4500, 2.4481, 2.5780, 2.6631,\n", + " 2.6634, 2.7155, 2.8278, 2.5854, 2.5792, 2.4664, 2.4356, 2.3869, 2.4992,\n", + " 2.4801, 2.5218, 2.5370, 2.5750, 2.5833, 2.5271, 2.5656, 2.6223, 2.6080,\n", + " 2.6225, 2.3799, 2.4334, 2.4672, 2.4732, 2.1516, 1.4120, 1.9143, 1.7780,\n", + " 1.7069, 1.6140, 1.6480, 1.5519, 1.3745, 0.7528, 0.7276, 1.3634, 1.8354,\n", + " 2.2816, 1.5026, 2.0721]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1044, -0.4474, -0.1593, 0.6808, 0.5533, -0.3411, 0.2238, -0.0156,\n", + " -0.5856, 0.1172, -0.2507, -0.3989, -0.5155, 0.2039, 0.3434, 0.3378,\n", + " -0.2957, 0.9009, -0.3074, -0.5211, -0.0564, 0.3420, -0.2067, 0.6828,\n", + " 1.3439, 0.2640, 0.5410, -2.4091, -0.0982, 0.5234, 0.1193, 1.0305,\n", + " 0.0540, 0.7625, -0.3314, -0.6613, -1.0105, -0.6596, -1.8131, 0.0342,\n", + " -0.1666, -0.4705, 0.2292]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3808, 0.3920, 0.1923, 0.2466, 0.1036, -0.1670, -0.3557, -0.4297,\n", + " -0.1858, -0.2649, -0.2317, 0.2641, 0.1721, 0.2833, 0.2572, 0.2786,\n", + " 0.2257, 0.0277, 0.1481, 0.1335, 0.0975, 0.0544, -0.0289, -0.0312,\n", + " 0.0393, 0.0282, -0.0322, 0.0151, 0.1723, 0.2931, 0.2376, 0.1504,\n", + " 0.3127, 0.2672, 0.1613, 0.1652, 0.0150, 0.0116, 0.0474, -0.2947,\n", + " -0.2798, -0.3438, -0.2956]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00022469715622719377\n", + "Grad encoder.fc1.bias: 0.0012225001119077206\n", + "Grad encoder.encoder.0.weight: 5.6718690757406875e-05\n", + "Grad encoder.encoder.0.bias: 0.0008345483802258968\n", + "Grad encoder.encoder.2.weight: 4.250370693625882e-05\n", + "Grad encoder.encoder.2.bias: 0.0006578045431524515\n", + "Grad encoder.encoder.4.weight: 0.00012807725579477847\n", + "Grad encoder.encoder.4.bias: 0.0024447226896882057\n", + "Grad decoder.fc1.0.weight: 6.097745426814072e-05\n", + "Grad decoder.fc1.0.bias: 0.0009318046504631639\n", + "Grad decoder.fc1.2.weight: 7.808753434801474e-05\n", + "Grad decoder.fc1.2.bias: 0.0008838623762130737\n", + "Grad decoder.fc1.4.weight: 6.656711047980934e-05\n", + "Grad decoder.fc1.4.bias: 0.0008887405274435878\n", + "Grad decoder.fc2.weight: 0.0001749311777530238\n", + "Grad decoder.fc2.bias: 0.002214726060628891\n", + "Grad _memory_unit.weight_ih_l0: 1.258086285815807e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00015579831961076707\n", + "Grad _memory_unit.bias_hh_l0: 8.027403964661062e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.175155926437583e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.000258145882980898\n", + "Grad _memory_unit.bias_hh_l1: 0.00013665494043380022\n", + "Data X Sample: tensor([[1.5828, 1.8323, 2.0886, 2.2674, 2.3733, 2.3999, 2.5282, 2.6433, 2.7193,\n", + " 2.7376, 2.7314, 2.7362, 2.8185, 2.5411, 2.5471, 2.5901, 2.5583, 2.5882,\n", + " 2.6205, 2.5943, 2.5910, 2.5245, 2.5737, 2.5748, 2.4943, 2.6223, 2.4775,\n", + " 2.4961, 2.3590, 2.3646, 2.4077, 2.3930, 2.3232, 1.5013, 2.0148, 1.9117,\n", + " 1.7875, 1.6723, 1.6607, 1.6200, 1.2409, 0.7249, 0.7356, 1.3921, 1.9702,\n", + " 2.2758, 1.4686, 2.0955]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.6718, 1.4153, 0.2452, -0.7741, -0.4019, -1.0527, -1.9126, -1.4565,\n", + " -1.1886, -1.9734, -0.9022, 0.9164, 0.1657, 0.5211, -0.1778, 0.7847,\n", + " 0.8480, 0.0849, 0.2011, 0.6414, 0.4050, -0.0933, 0.3787, 0.6423,\n", + " -0.0103, 0.3469, 0.7367, -0.2724, 1.7216, 1.2348, 1.3158, 0.7152,\n", + " 0.8571, 1.5903, 1.1700, 0.6681, 0.9839, 0.0000, -0.2578, -1.5373,\n", + " -1.2655, -0.9766, -1.0719]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3939, 0.3980, 0.1975, 0.2603, 0.1132, -0.1661, -0.3623, -0.4382,\n", + " -0.1907, -0.2710, -0.2359, 0.2718, 0.1759, 0.2906, 0.2602, 0.2927,\n", + " 0.2287, 0.0299, 0.1563, 0.1365, 0.1031, 0.0561, -0.0221, -0.0268,\n", + " 0.0371, 0.0240, -0.0388, 0.0144, 0.1719, 0.2956, 0.2424, 0.1536,\n", + " 0.3265, 0.2817, 0.1647, 0.1792, 0.0092, 0.0145, 0.0483, -0.3022,\n", + " -0.2912, -0.3521, -0.3016]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00012581193004734814\n", + "Grad encoder.fc1.bias: 0.0004534931213129312\n", + "Grad encoder.encoder.0.weight: 3.1524221412837505e-05\n", + "Grad encoder.encoder.0.bias: 0.000309471768559888\n", + "Grad encoder.encoder.2.weight: 2.1674131858162582e-05\n", + "Grad encoder.encoder.2.bias: 0.00026095329667441547\n", + "Grad encoder.encoder.4.weight: 5.868491643923335e-05\n", + "Grad encoder.encoder.4.bias: 0.0006485017947852612\n", + "Grad decoder.fc1.0.weight: 2.6833502488443628e-05\n", + "Grad decoder.fc1.0.bias: 0.0002961269055958837\n", + "Grad decoder.fc1.2.weight: 3.3588406950002536e-05\n", + "Grad decoder.fc1.2.bias: 0.0003733829944394529\n", + "Grad decoder.fc1.4.weight: 2.9585717129521072e-05\n", + "Grad decoder.fc1.4.bias: 0.0003792931092903018\n", + "Grad decoder.fc2.weight: 0.00012020708527415991\n", + "Grad decoder.fc2.bias: 0.0017955643124878407\n", + "Grad _memory_unit.weight_ih_l0: 4.306551090849098e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.7715921785566024e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.781318112800363e-06\n", + "Grad _memory_unit.weight_ih_l1: 3.215108336007688e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.2493185901548713e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.2870914108352736e-05\n", + "Data X Sample: tensor([[2.5747, 2.8926, 3.1525, 3.0699, 3.2510, 3.3885, 3.4033, 3.4440, 3.5907,\n", + " 3.5986, 3.7846, 3.8405, 3.6684, 3.5962, 3.5357, 3.4613, 3.4624, 3.5089,\n", + " 3.4259, 3.3717, 3.1750, 3.0878, 2.9399, 2.7619, 2.6970, 2.5335, 2.5174,\n", + " 2.5124, 2.4354, 2.3876, 2.4497, 2.4538, 2.4685, 1.7393, 2.9340, 3.3930,\n", + " 3.5829, 3.8243, 4.2341, 4.1564, 1.9329, 1.0754, 1.0812, 1.9748, 2.7630,\n", + " 2.9906, 2.0533, 2.8227]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.2424, -0.8120, 0.9465, 0.1799, 0.0126, 1.1829, 0.5296, 0.9160,\n", + " 1.7508, 0.8395, 0.3564, -0.3531, -0.5672, -1.4327, -0.4912, -0.6185,\n", + " -1.0437, -0.2108, -0.8942, -0.6301, -0.3955, -0.0588, -0.2353, -0.0597,\n", + " -0.2552, -0.1157, 0.9404, 0.8207, 0.2167, -0.6583, -1.7688, -0.4144,\n", + " -0.4590, -1.3849, 0.5925, -0.2163, -0.6306, -0.0751, 0.0040, 0.8605,\n", + " 0.9613, 0.6569, 0.7815]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2960, -0.3819, -0.1300, -0.4007, -0.2285, -0.0639, 0.0652, 0.2693,\n", + " 0.1830, 0.1823, 0.2247, -0.0856, -0.1544, -0.2740, -0.1372, -0.3019,\n", + " -0.3396, -0.2004, -0.0695, -0.1328, -0.0907, -0.0428, -0.0882, -0.0827,\n", + " 0.0312, -0.0067, 0.1508, -0.0363, -0.0939, -0.2026, -0.1224, -0.1844,\n", + " -0.0613, -0.2273, -0.1315, -0.1827, -0.0084, 0.0032, 0.0055, 0.3439,\n", + " 0.3237, 0.3158, 0.3265]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00015273412282112986\n", + "Grad encoder.fc1.bias: 0.0006802245625294745\n", + "Grad encoder.encoder.0.weight: 4.6955683501437306e-05\n", + "Grad encoder.encoder.0.bias: 0.0004095850163139403\n", + "Grad encoder.encoder.2.weight: 3.0213454010663554e-05\n", + "Grad encoder.encoder.2.bias: 0.00040514650754630566\n", + "Grad encoder.encoder.4.weight: 6.930629024282098e-05\n", + "Grad encoder.encoder.4.bias: 0.0011095409281551838\n", + "Grad decoder.fc1.0.weight: 3.9988492062548175e-05\n", + "Grad decoder.fc1.0.bias: 0.0005076436209492385\n", + "Grad decoder.fc1.2.weight: 5.279279503156431e-05\n", + "Grad decoder.fc1.2.bias: 0.0005754128214903176\n", + "Grad decoder.fc1.4.weight: 4.5953474909765646e-05\n", + "Grad decoder.fc1.4.bias: 0.0005644080229103565\n", + "Grad decoder.fc2.weight: 0.00013840009341947734\n", + "Grad decoder.fc2.bias: 0.001705934526398778\n", + "Grad _memory_unit.weight_ih_l0: 7.481233296857681e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.915948349866085e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.11947260343004e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.861127308686264e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011715618165908381\n", + "Grad _memory_unit.bias_hh_l1: 6.180037598824129e-05\n", + "Data X Sample: tensor([[1.5053, 1.8789, 2.0886, 2.3986, 2.4502, 2.5532, 2.6361, 2.7455, 2.7461,\n", + " 2.7582, 2.7885, 2.9037, 2.6698, 2.6856, 2.6329, 2.6941, 2.6840, 2.6830,\n", + " 2.8043, 2.7003, 2.8952, 2.8062, 2.7279, 2.5825, 2.4849, 2.3820, 2.2937,\n", + " 2.3126, 1.9427, 1.9094, 1.7848, 1.7105, 1.5092, 0.9383, 1.3628, 1.3718,\n", + " 1.4198, 1.5000, 1.7177, 1.7335, 1.3793, 0.8225, 0.7740, 1.3950, 2.0614,\n", + " 2.3445, 1.5366, 2.2676]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1077, -0.0954, 0.3390, -1.7763, 1.3115, 0.2807, 0.7372, 0.1767,\n", + " -0.3285, -0.4184, -0.2140, -0.1693, -0.0939, 0.9366, 0.3393, 0.7284,\n", + " -0.1836, 1.1995, 0.4827, 0.4856, 0.2703, 0.9177, -0.0519, 0.3109,\n", + " 0.8154, 0.2296, -1.1717, -0.7552, -0.0118, -0.6597, 0.2245, 0.0475,\n", + " 0.3564, 0.4898, -0.1179, -0.5636, 0.0476, -0.6429, -0.7367, -0.4077,\n", + " -0.4970, -0.5289, -0.7250]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1283, -0.1893, -0.0669, -0.2331, -0.1356, -0.0332, 0.0196, 0.1370,\n", + " 0.0914, 0.0741, 0.1101, -0.0511, -0.0487, -0.1282, -0.0399, -0.1597,\n", + " -0.2184, -0.0876, -0.0149, -0.0786, -0.0254, -0.0007, -0.0475, -0.0695,\n", + " -0.0084, -0.0078, 0.0700, -0.0028, -0.0720, -0.0744, -0.0801, -0.1036,\n", + " -0.0335, -0.1036, -0.0754, -0.1263, -0.0139, 0.0216, 0.0443, 0.1817,\n", + " 0.1861, 0.1587, 0.1679]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00025800697039812803\n", + "Grad encoder.fc1.bias: 0.000455709669040516\n", + "Grad encoder.encoder.0.weight: 6.17891491856426e-05\n", + "Grad encoder.encoder.0.bias: 0.0003860053839161992\n", + "Grad encoder.encoder.2.weight: 4.223608266329393e-05\n", + "Grad encoder.encoder.2.bias: 0.0003530415124259889\n", + "Grad encoder.encoder.4.weight: 9.7973934316542e-05\n", + "Grad encoder.encoder.4.bias: 0.0004015634476672858\n", + "Grad decoder.fc1.0.weight: 4.2532010411377996e-05\n", + "Grad decoder.fc1.0.bias: 0.00033637392334640026\n", + "Grad decoder.fc1.2.weight: 7.255571836140007e-05\n", + "Grad decoder.fc1.2.bias: 0.0008165730396285653\n", + "Grad decoder.fc1.4.weight: 5.8820605772780254e-05\n", + "Grad decoder.fc1.4.bias: 0.0007311435183510184\n", + "Grad decoder.fc2.weight: 0.00013927007967140526\n", + "Grad decoder.fc2.bias: 0.001661190646700561\n", + "Grad _memory_unit.weight_ih_l0: 1.368266293866327e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.3396335968282074e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.19923495023977e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.045502803113777e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.524258009856567e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.4825701479567215e-05\n", + "Data X Sample: tensor([[1.6125, 1.9619, 2.0451, 2.1188, 2.2931, 2.3734, 2.3819, 2.4290, 2.3873,\n", + " 2.4359, 2.6425, 2.5278, 2.3901, 2.4620, 2.3151, 2.3795, 2.3790, 2.4160,\n", + " 2.4388, 2.4957, 2.5714, 2.5398, 2.6194, 2.5462, 2.5787, 2.7242, 2.6693,\n", + " 2.6470, 2.4354, 2.5448, 2.3342, 2.3903, 2.0284, 1.3365, 1.8212, 1.7050,\n", + " 1.5909, 1.6140, 1.5339, 1.4583, 1.3220, 0.7508, 0.7518, 1.3979, 2.0178,\n", + " 2.1443, 1.5094, 2.1268]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2744, -0.0514, 0.2105, 0.8566, -0.8352, -0.9558, 0.2677, -0.2630,\n", + " -0.8868, -0.2726, -0.3762, -1.3119, 0.8087, -0.2372, 0.0616, -0.2889,\n", + " -0.6280, 0.5537, -2.2589, 2.7190, 0.7346, -2.1875, 0.4716, 1.3368,\n", + " -1.4370, 0.4423, -0.2164, -0.7192, 0.4026, 0.5837, -0.0791, 0.1071,\n", + " -0.0119, 0.6324, 0.9297, 1.0061, 0.0213, 0.8296, 0.9794, -0.3541,\n", + " -0.3594, 0.0907, -0.8757]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4422, 0.4173, 0.2061, 0.2961, 0.1368, -0.1650, -0.3882, -0.4801,\n", + " -0.1994, -0.2928, -0.2547, 0.3067, 0.1966, 0.3252, 0.2892, 0.3350,\n", + " 0.2471, 0.0397, 0.1857, 0.1373, 0.1224, 0.0637, 0.0026, -0.0211,\n", + " 0.0304, 0.0091, -0.0526, 0.0268, 0.1872, 0.3152, 0.2667, 0.1688,\n", + " 0.3706, 0.3386, 0.1806, 0.2175, -0.0018, 0.0279, 0.0506, -0.3315,\n", + " -0.3340, -0.3783, -0.3235]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00042312368168495595\n", + "Grad encoder.fc1.bias: 0.0009508201037533581\n", + "Grad encoder.encoder.0.weight: 0.00010622468107612804\n", + "Grad encoder.encoder.0.bias: 0.0005361796938814223\n", + "Grad encoder.encoder.2.weight: 7.24947894923389e-05\n", + "Grad encoder.encoder.2.bias: 0.0006306099239736795\n", + "Grad encoder.encoder.4.weight: 0.00019311599317006767\n", + "Grad encoder.encoder.4.bias: 0.0019191367318853736\n", + "Grad decoder.fc1.0.weight: 7.91708953329362e-05\n", + "Grad decoder.fc1.0.bias: 0.000804204260930419\n", + "Grad decoder.fc1.2.weight: 0.00010148488217964768\n", + "Grad decoder.fc1.2.bias: 0.000984695740044117\n", + "Grad decoder.fc1.4.weight: 8.70590447448194e-05\n", + "Grad decoder.fc1.4.bias: 0.0010627370793372393\n", + "Grad decoder.fc2.weight: 0.00015863805310800672\n", + "Grad decoder.fc2.bias: 0.0014038619119673967\n", + "Grad _memory_unit.weight_ih_l0: 3.0482051442959346e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0001376225263811648\n", + "Grad _memory_unit.bias_hh_l0: 7.047866529319435e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0686489076761063e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002515798551030457\n", + "Grad _memory_unit.bias_hh_l1: 0.00013263148139230907\n", + "Data X Sample: tensor([[1.6157, 1.8862, 1.9594, 2.0138, 2.1514, 2.3999, 2.4188, 2.5709, 2.6851,\n", + " 2.6271, 2.5601, 2.6564, 2.4878, 2.4266, 2.3580, 2.4178, 2.3240, 2.4818,\n", + " 2.3996, 2.4232, 2.3824, 2.5214, 2.4508, 2.4049, 2.3742, 2.5623, 2.4748,\n", + " 2.5573, 2.2099, 2.2762, 2.2117, 2.2438, 1.8326, 1.1923, 1.6080, 1.5858,\n", + " 1.5221, 1.4947, 1.4515, 1.3675, 1.3984, 0.7806, 0.7538, 1.3204, 1.9464,\n", + " 2.0014, 1.3258, 2.0095]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4118, 1.0961, -0.4594, 0.6155, 1.2968, 1.0319, -0.0301, 0.6687,\n", + " -0.4915, 0.7498, 0.5909, 0.9848, -0.0062, 1.1249, -0.2891, -0.0042,\n", + " 0.4691, -0.0311, -0.4437, -0.0364, -0.1505, 1.7053, -0.9928, -2.5066,\n", + " -0.1837, -0.0861, -0.8300, 0.1802, 0.5779, -0.5936, 0.4248, -0.1486,\n", + " 0.1777, -0.7296, -0.2451, -0.3476, 0.1343, 0.1511, 0.0040, 0.7298,\n", + " 0.3400, 0.6892, 0.6275]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3482, 0.3237, 0.1773, 0.2067, 0.0999, -0.1216, -0.3093, -0.3811,\n", + " -0.1631, -0.2429, -0.2070, 0.2377, 0.1651, 0.2590, 0.2284, 0.2730,\n", + " 0.1716, 0.0256, 0.1441, 0.0972, 0.0929, 0.0581, -0.0032, -0.0200,\n", + " 0.0235, -0.0046, -0.0486, 0.0146, 0.1590, 0.2666, 0.1962, 0.1255,\n", + " 0.2862, 0.2550, 0.1317, 0.1551, 0.0200, 0.0418, 0.0434, -0.2380,\n", + " -0.2568, -0.2943, -0.2521]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00022583948157262057\n", + "Grad encoder.fc1.bias: 0.0007361656753346324\n", + "Grad encoder.encoder.0.weight: 7.200636900961399e-05\n", + "Grad encoder.encoder.0.bias: 0.0005740872002206743\n", + "Grad encoder.encoder.2.weight: 4.775451816385612e-05\n", + "Grad encoder.encoder.2.bias: 0.0005460764514282346\n", + "Grad encoder.encoder.4.weight: 0.00016820759628899395\n", + "Grad encoder.encoder.4.bias: 0.001486700726673007\n", + "Grad decoder.fc1.0.weight: 5.7423472753725946e-05\n", + "Grad decoder.fc1.0.bias: 0.0006213709712028503\n", + "Grad decoder.fc1.2.weight: 6.89644948579371e-05\n", + "Grad decoder.fc1.2.bias: 0.000814524304587394\n", + "Grad decoder.fc1.4.weight: 6.305850547505543e-05\n", + "Grad decoder.fc1.4.bias: 0.0008493616478517652\n", + "Grad decoder.fc2.weight: 0.00016390910604968667\n", + "Grad decoder.fc2.bias: 0.0021137415897101164\n", + "Grad _memory_unit.weight_ih_l0: 1.93503474292811e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.68761383369565e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.096197517355904e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.32255227578571e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00012035395775455981\n", + "Grad _memory_unit.bias_hh_l1: 6.447338091675192e-05\n", + "Data X Sample: tensor([[1.5891, 1.8425, 1.9023, 1.9985, 1.9772, 2.1127, 2.1631, 2.6944, 4.0887,\n", + " 4.2494, 4.3239, 4.2845, 4.2477, 3.9943, 3.8812, 3.7266, 3.6039, 3.6966,\n", + " 3.7604, 3.6562, 3.6510, 3.4170, 3.0990, 2.8878, 2.7852, 3.0194, 2.9330,\n", + " 2.8632, 3.1639, 3.1278, 3.2475, 3.3519, 3.6829, 2.7645, 4.4954, 4.9253,\n", + " 5.0833, 5.5523, 5.9771, 5.9722, 1.2313, 0.6930, 0.6690, 1.2515, 1.6451,\n", + " 1.9156, 1.2238, 1.8062]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.1567, 0.6257, 0.1041, 1.3040, -0.8227, 0.2603, -1.0258, -0.3954,\n", + " -1.1877, -0.9656, -0.7152, 0.6176, 0.4875, 0.2055, 0.5464, 0.4442,\n", + " 0.3179, -0.1042, -0.4417, -0.3732, 1.4928, 1.5362, 7.7958, -2.0238,\n", + " 0.2990, -0.9645, 0.0915, 0.8730, -1.0230, 1.1622, 0.4498, 0.6169,\n", + " -0.4455, 0.6739, -0.9522, -0.3404, -0.0520, -0.7858, 0.2739, -0.4233,\n", + " -0.5532, -1.0386, -0.2343]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2187, -0.2763, -0.0445, -0.1654, -0.0023, 0.1147, 0.2106, 0.2742,\n", + " 0.2779, 0.2419, 0.2354, -0.1050, -0.1176, -0.2832, -0.2005, -0.3134,\n", + " -0.2560, -0.1109, -0.0126, -0.1526, -0.0940, -0.0382, -0.0320, -0.0707,\n", + " -0.1005, -0.0014, -0.0704, -0.1328, -0.1812, -0.2137, -0.2467, -0.1822,\n", + " -0.2135, -0.2735, -0.1454, -0.1871, 0.0233, 0.0068, -0.0063, 0.3314,\n", + " 0.3491, 0.3254, 0.2725]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00025785129400901496\n", + "Grad encoder.fc1.bias: 0.00017485662829130888\n", + "Grad encoder.encoder.0.weight: 6.097671575844288e-05\n", + "Grad encoder.encoder.0.bias: 0.00020523648709058762\n", + "Grad encoder.encoder.2.weight: 4.512206214712933e-05\n", + "Grad encoder.encoder.2.bias: 0.00025554627063684165\n", + "Grad encoder.encoder.4.weight: 0.00011583821469685063\n", + "Grad encoder.encoder.4.bias: 0.0006231938023120165\n", + "Grad decoder.fc1.0.weight: 5.040957694291137e-05\n", + "Grad decoder.fc1.0.bias: 0.0004230874474160373\n", + "Grad decoder.fc1.2.weight: 6.23954547336325e-05\n", + "Grad decoder.fc1.2.bias: 0.0007538897334598005\n", + "Grad decoder.fc1.4.weight: 4.8488152970094234e-05\n", + "Grad decoder.fc1.4.bias: 0.0006949277594685555\n", + "Grad decoder.fc2.weight: 0.0001103723407140933\n", + "Grad decoder.fc2.bias: 0.0017853599274531007\n", + "Grad _memory_unit.weight_ih_l0: 1.698086634860374e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.759778726613149e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.5120960597414523e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.69155633659102e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.17117906990461e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.262969014234841e-05\n", + "Data X Sample: tensor([[ 0.0180, 0.0087, 0.0270, 0.0350, 0.0085, 0.0236, 0.0123, 0.0028,\n", + " 0.0195, 0.0190, 0.0349, 0.0039, 0.0044, 0.0136, -0.0025, 0.0164,\n", + " -0.0786, -0.0793, -0.1198, -0.1209, -0.1129, -0.0658, -0.1518, -0.1317,\n", + " -0.1070, -0.2298, -0.2318, -0.4079, -0.0069, -0.0819, -0.0980, -0.0718,\n", + " -0.0418, -0.0572, -0.0417, -0.0243, -0.0236, -0.0265, -0.0063, -0.0142,\n", + " -0.0048, 0.0000, 0.0000, -0.0057, 0.0159, 0.0057, -0.0068, 0.0156]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2833, 0.3281, -0.1781, 0.1584, -0.4499, -0.0964, -0.6027, -0.2912,\n", + " -0.3953, -0.4651, -0.2324, 0.4546, 0.0775, 0.2680, 0.0533, 0.4221,\n", + " 0.8094, -0.5374, -0.7029, -0.4796, -0.2233, 0.1325, -0.1332, -0.2566,\n", + " -0.4533, 0.5584, 0.0823, -0.4923, 0.1248, 0.0846, 1.0233, 0.1555,\n", + " 0.4636, 0.4722, 0.5164, -0.2231, 0.2928, -0.6596, 2.2782, -0.1405,\n", + " -0.0807, -0.2109, -0.0121]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.6403, 0.5352, 0.2556, 0.3964, 0.0893, -0.2317, -0.5894, -0.7201,\n", + " -0.3470, -0.4553, -0.3682, 0.4416, 0.2590, 0.4628, 0.3432, 0.4150,\n", + " 0.3836, 0.0490, 0.2762, 0.1699, 0.1960, 0.0815, 0.0207, -0.0144,\n", + " 0.0205, -0.0648, -0.0175, 0.1243, 0.3698, 0.5503, 0.4424, 0.3218,\n", + " 0.5377, 0.5205, 0.2740, 0.2909, -0.0159, 0.0388, 0.0975, -0.5175,\n", + " -0.5149, -0.5250, -0.4182]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00025434786221012473\n", + "Grad encoder.fc1.bias: 0.00037620437797158957\n", + "Grad encoder.encoder.0.weight: 5.264262654236518e-05\n", + "Grad encoder.encoder.0.bias: 0.0002704988291952759\n", + "Grad encoder.encoder.2.weight: 3.46474553225562e-05\n", + "Grad encoder.encoder.2.bias: 0.0003758847597055137\n", + "Grad encoder.encoder.4.weight: 8.266339136753231e-05\n", + "Grad encoder.encoder.4.bias: 0.0008773740264587104\n", + "Grad decoder.fc1.0.weight: 3.7637211789842695e-05\n", + "Grad decoder.fc1.0.bias: 0.00042955417302437127\n", + "Grad decoder.fc1.2.weight: 4.8993264499586076e-05\n", + "Grad decoder.fc1.2.bias: 0.0003811569476965815\n", + "Grad decoder.fc1.4.weight: 3.690530138555914e-05\n", + "Grad decoder.fc1.4.bias: 0.0003952413680963218\n", + "Grad decoder.fc2.weight: 0.00011913944035768509\n", + "Grad decoder.fc2.bias: 0.001650543068535626\n", + "Grad _memory_unit.weight_ih_l0: 6.930279141670326e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.4368411181494594e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.3632812371943146e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.606762558978517e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.082870383281261e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.796316716237925e-05\n", + "Data X Sample: tensor([[1.4629, 1.7099, 1.9489, 1.9854, 2.1872, 2.2644, 2.4435, 2.5269, 2.5191,\n", + " 2.5465, 2.5981, 2.6116, 2.5144, 2.5029, 2.6001, 2.4985, 2.4435, 2.5205,\n", + " 2.5296, 2.5385, 2.4511, 2.5214, 2.3929, 2.3649, 2.4230, 2.4578, 2.4295,\n", + " 2.4390, 2.1856, 2.2762, 2.2922, 2.3267, 2.2242, 1.4829, 1.9340, 1.7877,\n", + " 1.5909, 1.4947, 1.5529, 1.5406, 1.1550, 0.7050, 0.7397, 1.2027, 1.8235,\n", + " 1.9270, 1.3462, 1.9313]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 7.6810e-01, 5.3031e-01, 1.2212e+00, 9.0612e-01, 1.0613e+00,\n", + " 6.0058e-01, -4.6584e-01, -7.8579e-01, -2.2881e-01, -7.1935e-01,\n", + " -3.8215e-01, -6.8673e-01, 3.6492e-01, -2.7608e-02, -1.6245e-01,\n", + " 1.0586e+00, 8.3578e-01, 2.9029e-02, -5.2438e-02, 1.1196e+00,\n", + " 3.6635e-01, 6.6670e-01, -2.6383e-01, 3.7769e-01, 1.6996e+00,\n", + " -4.2560e-01, 1.5980e+00, 1.0534e+00, 5.9862e-01, 8.4410e-01,\n", + " 1.2134e+00, 1.0543e+00, -5.5750e-02, 2.8805e-01, 8.1434e-01,\n", + " -1.3338e-01, -1.0781e-03, -1.0105e-01, 1.1148e+00, -7.3260e-01,\n", + " -4.9435e-01, -3.5065e-02, 1.9511e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3323, 0.3035, 0.1709, 0.1936, 0.0999, -0.1114, -0.2879, -0.3597,\n", + " -0.1474, -0.2276, -0.2008, 0.2307, 0.1616, 0.2468, 0.2277, 0.2663,\n", + " 0.1648, 0.0316, 0.1373, 0.0886, 0.1014, 0.0715, 0.0050, -0.0201,\n", + " 0.0215, -0.0131, -0.0515, 0.0061, 0.1553, 0.2597, 0.1831, 0.1162,\n", + " 0.2711, 0.2583, 0.1326, 0.1484, 0.0155, 0.0525, 0.0335, -0.2205,\n", + " -0.2467, -0.2727, -0.2460]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0011194983962923288\n", + "Grad encoder.fc1.bias: 0.0010196123039349914\n", + "Grad encoder.encoder.0.weight: 0.00021455914247781038\n", + "Grad encoder.encoder.0.bias: 0.0010336700361222029\n", + "Grad encoder.encoder.2.weight: 0.00011978308612015098\n", + "Grad encoder.encoder.2.bias: 0.0010533735621720552\n", + "Grad encoder.encoder.4.weight: 0.00023991269699763507\n", + "Grad encoder.encoder.4.bias: 0.0032795981969684362\n", + "Grad decoder.fc1.0.weight: 7.836447184672579e-05\n", + "Grad decoder.fc1.0.bias: 0.0010876292362809181\n", + "Grad decoder.fc1.2.weight: 8.149370842147619e-05\n", + "Grad decoder.fc1.2.bias: 0.0010070160496979952\n", + "Grad decoder.fc1.4.weight: 6.395347736543044e-05\n", + "Grad decoder.fc1.4.bias: 0.0008650330128148198\n", + "Grad decoder.fc2.weight: 0.00014470367750618607\n", + "Grad decoder.fc2.bias: 0.0019418693846091628\n", + "Grad _memory_unit.weight_ih_l0: 2.8553833544719964e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0002204677148256451\n", + "Grad _memory_unit.bias_hh_l0: 0.00011204071779502556\n", + "Grad _memory_unit.weight_ih_l1: 1.0746293810370844e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00033785373670980334\n", + "Grad _memory_unit.bias_hh_l1: 0.0001753150427248329\n", + "Data X Sample: tensor([[1.5329, 1.7930, 1.9459, 2.0488, 2.1224, 2.1996, 2.2679, 2.3693, 2.4337,\n", + " 2.4422, 2.4744, 2.4655, 2.4301, 2.3802, 2.3328, 2.3399, 2.3067, 2.2323,\n", + " 2.3108, 2.3005, 2.3996, 2.4678, 2.4628, 2.4584, 2.4549, 2.4917, 2.3576,\n", + " 2.3574, 2.0746, 2.1125, 1.9422, 1.8652, 1.6082, 1.0138, 1.3972, 1.3937,\n", + " 1.3647, 1.3649, 1.3247, 1.3193, 1.3316, 0.7468, 0.7195, 1.2831, 1.8949,\n", + " 2.0014, 1.4006, 1.8844]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.8001, -1.2402, -0.5468, -1.3110, 0.0225, 1.0660, 0.6812, 0.4869,\n", + " -1.2549, 0.6009, 0.6937, -0.7150, 0.4310, -1.0028, -0.5299, -0.9056,\n", + " -0.6142, -0.1050, -1.5885, -0.7182, -2.0218, -0.5817, -0.9364, -0.1904,\n", + " 0.3451, -0.3253, -0.3584, 0.1996, -0.4786, -0.5784, -0.4324, 0.0205,\n", + " -0.7989, -0.2532, -1.2608, 0.9135, 0.1343, 0.6288, -1.8131, 0.7678,\n", + " 0.5381, 0.8333, -0.0122]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.1420, 0.0799, 0.0759, -0.0018, 0.0159, -0.0335, -0.1058, -0.1031,\n", + " -0.0563, -0.1027, -0.0605, 0.0520, 0.0893, 0.0901, 0.0885, 0.0829,\n", + " -0.0236, 0.0115, 0.0427, 0.0117, 0.0467, 0.0705, -0.0170, -0.0233,\n", + " -0.0026, -0.0194, -0.0128, -0.0102, 0.0530, 0.1343, 0.0180, 0.0082,\n", + " 0.0717, 0.0607, 0.0057, 0.0176, 0.0099, 0.0661, 0.0582, -0.0261,\n", + " -0.0324, -0.0496, -0.0949]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003426226321607828\n", + "Grad encoder.fc1.bias: 0.0003770628245547414\n", + "Grad encoder.encoder.0.weight: 7.592637848574668e-05\n", + "Grad encoder.encoder.0.bias: 0.00033067952608689666\n", + "Grad encoder.encoder.2.weight: 4.7404071665368974e-05\n", + "Grad encoder.encoder.2.bias: 0.00032189866760745645\n", + "Grad encoder.encoder.4.weight: 0.00011434355837991461\n", + "Grad encoder.encoder.4.bias: 0.0006936212885193527\n", + "Grad decoder.fc1.0.weight: 5.006569699617103e-05\n", + "Grad decoder.fc1.0.bias: 0.0004840912588406354\n", + "Grad decoder.fc1.2.weight: 7.11815373506397e-05\n", + "Grad decoder.fc1.2.bias: 0.0007395449792966247\n", + "Grad decoder.fc1.4.weight: 6.210264109540731e-05\n", + "Grad decoder.fc1.4.bias: 0.0006455582333728671\n", + "Grad decoder.fc2.weight: 0.00014502737030852586\n", + "Grad decoder.fc2.bias: 0.001535559305921197\n", + "Grad _memory_unit.weight_ih_l0: 1.02054254966788e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.758595994440839e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.9590777810662985e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.621444077201886e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010766227205749601\n", + "Grad _memory_unit.bias_hh_l1: 5.6543503887951374e-05\n", + "Data X Sample: tensor([[1.2528, 1.5235, 1.7551, 1.8301, 1.8082, 1.8976, 2.0445, 2.0925, 3.8568,\n", + " 4.1310, 4.3016, 4.0683, 4.0635, 3.9288, 3.6341, 3.5050, 3.5095, 3.4258,\n", + " 3.5704, 3.4051, 3.3418, 3.4063, 2.8725, 2.8611, 2.8453, 2.8835, 2.8318,\n", + " 2.8468, 2.9592, 3.0786, 3.1916, 3.2911, 3.6081, 2.6272, 4.3704, 4.8718,\n", + " 5.1325, 5.2872, 5.8757, 5.6090, 0.9736, 0.6373, 0.6265, 1.1912, 1.6887,\n", + " 1.7612, 1.0674, 1.6420]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5112, 0.3724, -0.3269, 0.6808, 0.3954, 0.0524, -0.5667, -0.3207,\n", + " 0.2487, -0.6286, -0.4106, 0.2792, -3.4833, 1.0167, 0.8951, 0.9932,\n", + " 1.1480, 0.4131, -0.2396, 0.2299, 0.4694, -1.5363, -0.1054, -0.9636,\n", + " -0.2672, -0.1459, 0.4580, -0.0250, -0.1519, -0.0241, 0.7359, 1.4168,\n", + " -0.0470, 1.5860, 0.2358, 0.6365, 0.1438, 0.4612, -0.6047, -0.2595,\n", + " -0.1025, -1.2130, -0.5664]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2484, -0.2679, -0.0311, -0.0894, 0.1096, 0.1996, 0.2369, 0.3079,\n", + " 0.3042, 0.3430, 0.2503, -0.1241, -0.1518, -0.3115, -0.2072, -0.3473,\n", + " -0.2657, -0.1072, -0.0254, -0.1631, -0.0914, -0.0756, 0.0011, -0.1048,\n", + " -0.1811, -0.0300, -0.1293, -0.1558, -0.2351, -0.2344, -0.2876, -0.1998,\n", + " -0.3071, -0.3019, -0.1707, -0.2136, 0.0273, 0.0098, -0.0146, 0.3693,\n", + " 0.3886, 0.3481, 0.2759]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004228602338116616\n", + "Grad encoder.fc1.bias: 0.0002854585472960025\n", + "Grad encoder.encoder.0.weight: 8.23098307591863e-05\n", + "Grad encoder.encoder.0.bias: 0.00032678694697096944\n", + "Grad encoder.encoder.2.weight: 4.885366070084274e-05\n", + "Grad encoder.encoder.2.bias: 0.00040787921170704067\n", + "Grad encoder.encoder.4.weight: 0.00012858740228693932\n", + "Grad encoder.encoder.4.bias: 0.0015932696405798197\n", + "Grad decoder.fc1.0.weight: 6.086815119488165e-05\n", + "Grad decoder.fc1.0.bias: 0.0006509944214485586\n", + "Grad decoder.fc1.2.weight: 8.243593765655532e-05\n", + "Grad decoder.fc1.2.bias: 0.0009592035203240812\n", + "Grad decoder.fc1.4.weight: 6.843570008641109e-05\n", + "Grad decoder.fc1.4.bias: 0.0009219571948051453\n", + "Grad decoder.fc2.weight: 0.00016218930250033736\n", + "Grad decoder.fc2.bias: 0.0016511615831404924\n", + "Grad _memory_unit.weight_ih_l0: 1.2469053217500914e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00010287067561876029\n", + "Grad _memory_unit.bias_hh_l0: 5.4796233598608524e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.748665666440502e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00019349830108694732\n", + "Grad _memory_unit.bias_hh_l1: 0.00010366569040343165\n", + "Data X Sample: tensor([[1.6666, 1.9197, 2.0856, 2.1669, 2.3050, 2.5856, 2.5806, 2.5695, 2.6290,\n", + " 2.7297, 2.7948, 2.8083, 2.7408, 2.6092, 2.5849, 2.6831, 2.6369, 2.5785,\n", + " 2.7196, 2.5645, 2.5076, 2.6117, 2.5086, 2.6187, 2.5900, 2.6328, 2.6160,\n", + " 2.6266, 2.4076, 2.4924, 2.4952, 2.4455, 2.2902, 1.4875, 2.0099, 1.8412,\n", + " 1.7344, 1.6776, 1.5783, 1.5888, 1.3220, 0.7468, 0.8266, 1.3433, 1.9662,\n", + " 2.0929, 1.5570, 2.1737]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.1919, -0.0102, 0.9115, -0.4841, 1.0083, -0.0090, -0.4169, -0.3312,\n", + " -1.4134, -0.4452, -0.1645, 0.6783, 0.2960, 0.3432, 0.4943, 0.5683,\n", + " 0.9569, 0.3784, 0.2190, 0.2753, -0.1539, 2.5078, 1.3080, 0.4061,\n", + " 0.6859, 2.2615, -0.6283, 0.1774, -0.0849, 0.2530, 0.3208, 0.8463,\n", + " -0.0322, 0.8086, 0.8320, -0.0949, 0.0000, -0.6596, -0.0156, -0.3222,\n", + " -0.1952, -0.2492, -1.3188]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4445, 0.3911, 0.1962, 0.2987, 0.1443, -0.1442, -0.3711, -0.4736,\n", + " -0.1803, -0.2791, -0.2602, 0.3145, 0.2048, 0.3171, 0.3010, 0.3443,\n", + " 0.2418, 0.0614, 0.1791, 0.1208, 0.1521, 0.0978, 0.0347, -0.0153,\n", + " 0.0356, -0.0172, -0.0628, 0.0242, 0.1994, 0.3218, 0.2690, 0.1631,\n", + " 0.3667, 0.3850, 0.1895, 0.2292, -0.0092, 0.0567, 0.0319, -0.3172,\n", + " -0.3448, -0.3586, -0.3326]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0013333981623873115\n", + "Grad encoder.fc1.bias: 0.0007788880611769855\n", + "Grad encoder.encoder.0.weight: 0.00024189287796616554\n", + "Grad encoder.encoder.0.bias: 0.0009188280091620982\n", + "Grad encoder.encoder.2.weight: 0.00012503532343544066\n", + "Grad encoder.encoder.2.bias: 0.0009430292993783951\n", + "Grad encoder.encoder.4.weight: 0.00023887578572612256\n", + "Grad encoder.encoder.4.bias: 0.0023562023416161537\n", + "Grad decoder.fc1.0.weight: 6.827473407611251e-05\n", + "Grad decoder.fc1.0.bias: 0.0008534995722584426\n", + "Grad decoder.fc1.2.weight: 6.746227154508233e-05\n", + "Grad decoder.fc1.2.bias: 0.0008868615259416401\n", + "Grad decoder.fc1.4.weight: 6.0694394051097333e-05\n", + "Grad decoder.fc1.4.bias: 0.0008574469829909503\n", + "Grad decoder.fc2.weight: 0.00015326998254749924\n", + "Grad decoder.fc2.bias: 0.0019467207603156567\n", + "Grad _memory_unit.weight_ih_l0: 2.9596762033179402e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00015543238259851933\n", + "Grad _memory_unit.bias_hh_l0: 7.965563418110833e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.098407301469706e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00025838444707915187\n", + "Grad _memory_unit.bias_hh_l1: 0.00013328716158866882\n", + "Data X Sample: tensor([[1.6348, 1.9240, 2.0781, 2.0772, 2.1002, 2.1819, 2.2524, 2.3296, 2.2872,\n", + " 2.4454, 2.4839, 2.4305, 2.4434, 2.3039, 2.2016, 2.3248, 2.2815, 2.3290,\n", + " 2.3727, 2.4809, 2.5493, 2.4923, 2.6002, 2.5767, 2.5187, 2.6380, 2.6027,\n", + " 2.5940, 2.3035, 2.4924, 2.5022, 2.2880, 2.2044, 1.4509, 1.9609, 1.7999,\n", + " 1.7069, 1.6326, 1.5593, 1.4611, 1.2886, 0.7667, 0.7356, 1.3405, 1.8830,\n", + " 2.0986, 1.4414, 1.9001]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5451, 1.2938, 0.7472, -0.0240, 0.8276, 0.4922, -0.3970, -0.0790,\n", + " -0.2619, -0.7370, -0.0657, 0.7758, 0.0335, 0.0668, 0.3743, -0.3807,\n", + " 0.1826, -0.5914, -0.8433, -0.4295, -0.6879, -0.5616, -0.9031, -0.0890,\n", + " 0.2027, 1.6672, -0.1109, 0.1583, 0.1732, 0.8097, 0.0379, -0.1962,\n", + " 0.6847, 0.8656, -0.2978, 1.1477, 0.0000, -0.7055, 0.0000, -0.1867,\n", + " -0.1432, -0.2129, -0.8593]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4475, 0.3940, 0.1922, 0.3089, 0.1484, -0.1429, -0.3711, -0.4760,\n", + " -0.1787, -0.2770, -0.2589, 0.3157, 0.2053, 0.3147, 0.3054, 0.3502,\n", + " 0.2472, 0.0675, 0.1797, 0.1204, 0.1548, 0.0996, 0.0408, -0.0129,\n", + " 0.0398, -0.0160, -0.0709, 0.0247, 0.1961, 0.3182, 0.2728, 0.1605,\n", + " 0.3678, 0.3952, 0.1912, 0.2312, -0.0105, 0.0550, 0.0322, -0.3196,\n", + " -0.3499, -0.3593, -0.3356]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004021832428406924\n", + "Grad encoder.fc1.bias: 0.0008250618120655417\n", + "Grad encoder.encoder.0.weight: 0.00011122742580482736\n", + "Grad encoder.encoder.0.bias: 0.000630259863100946\n", + "Grad encoder.encoder.2.weight: 7.673685468034819e-05\n", + "Grad encoder.encoder.2.bias: 0.0005219036829657853\n", + "Grad encoder.encoder.4.weight: 0.0002306563255842775\n", + "Grad encoder.encoder.4.bias: 0.0011561012361198664\n", + "Grad decoder.fc1.0.weight: 6.513960397569463e-05\n", + "Grad decoder.fc1.0.bias: 0.0005243015475571156\n", + "Grad decoder.fc1.2.weight: 8.867293217917904e-05\n", + "Grad decoder.fc1.2.bias: 0.0007357193389907479\n", + "Grad decoder.fc1.4.weight: 7.631647167727351e-05\n", + "Grad decoder.fc1.4.bias: 0.0008726058877073228\n", + "Grad decoder.fc2.weight: 0.0001595217763679102\n", + "Grad decoder.fc2.bias: 0.002059630583971739\n", + "Grad _memory_unit.weight_ih_l0: 2.812842467392329e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.316692163934931e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.8299915609532036e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.363326403719839e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.173957758117467e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.3070198444183916e-05\n", + "Data X Sample: tensor([[1.1606, 1.3808, 1.5161, 1.6421, 1.7553, 1.8814, 1.9181, 1.9051, 3.3149,\n", + " 3.8782, 3.9686, 3.8054, 3.5553, 3.5989, 3.4348, 3.2425, 3.1495, 3.2846,\n", + " 3.2297, 3.2303, 3.1136, 3.1537, 2.8556, 2.6913, 2.7570, 2.8235, 2.9330,\n", + " 2.8917, 2.9557, 2.9869, 2.9641, 3.0314, 3.1725, 2.3480, 3.8483, 4.3172,\n", + " 4.6448, 5.0779, 5.4257, 5.2969, 0.9259, 0.5576, 0.5376, 1.0276, 1.4033,\n", + " 1.6125, 1.0402, 1.5795]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6768, -0.0905, -0.3670, 0.3735, 0.2341, 0.6649, 0.4479, 0.2531,\n", + " 0.0217, 0.3413, 0.3474, 1.5759, -0.5456, 0.1893, 0.7854, -0.1064,\n", + " 0.5468, -0.4745, -0.0895, -0.2725, -0.9959, -0.5977, -0.0020, 1.0326,\n", + " 0.3455, -0.5331, -0.2584, 0.1799, 0.6855, 0.5041, -0.0320, 0.5730,\n", + " -0.2802, 0.0941, 1.6543, -0.6680, 0.0000, 0.6282, 0.7684, 0.3574,\n", + " 0.0355, 0.2686, 0.4913]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2493, -0.2592, -0.0189, -0.0952, 0.1237, 0.2034, 0.2202, 0.2985,\n", + " 0.2759, 0.3470, 0.2508, -0.1381, -0.1723, -0.3143, -0.1975, -0.3408,\n", + " -0.2588, -0.0979, -0.0431, -0.1487, -0.0806, -0.0858, 0.0075, -0.1123,\n", + " -0.1922, -0.0381, -0.1113, -0.1490, -0.2338, -0.2295, -0.2856, -0.2056,\n", + " -0.3330, -0.3085, -0.1710, -0.2127, 0.0233, 0.0136, -0.0138, 0.3634,\n", + " 0.3815, 0.3482, 0.2680]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00039548403583467007\n", + "Grad encoder.fc1.bias: 0.0009804277215152979\n", + "Grad encoder.encoder.0.weight: 0.0001027051912387833\n", + "Grad encoder.encoder.0.bias: 0.0006568273529410362\n", + "Grad encoder.encoder.2.weight: 8.016375795705244e-05\n", + "Grad encoder.encoder.2.bias: 0.0006259914953261614\n", + "Grad encoder.encoder.4.weight: 0.0002615824341773987\n", + "Grad encoder.encoder.4.bias: 0.0015936002600938082\n", + "Grad decoder.fc1.0.weight: 8.457931835437194e-05\n", + "Grad decoder.fc1.0.bias: 0.0006910752854309976\n", + "Grad decoder.fc1.2.weight: 0.00013550558651331812\n", + "Grad decoder.fc1.2.bias: 0.0013360187876969576\n", + "Grad decoder.fc1.4.weight: 0.00010846431541722268\n", + "Grad decoder.fc1.4.bias: 0.0013998359208926558\n", + "Grad decoder.fc2.weight: 0.0001909544807858765\n", + "Grad decoder.fc2.bias: 0.0029176410753279924\n", + "Grad _memory_unit.weight_ih_l0: 3.488361107883975e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.752030847361311e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.118141466984525e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.498537110630423e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00013008160749450326\n", + "Grad _memory_unit.bias_hh_l1: 6.823597504990175e-05\n", + "Data X Sample: tensor([[1.7154, 1.8148, 2.0571, 2.1516, 2.3255, 2.4692, 2.5313, 2.5198, 2.6412,\n", + " 2.6460, 2.6679, 2.6389, 2.6476, 2.5465, 2.5345, 2.4383, 2.4388, 2.5630,\n", + " 2.5668, 2.4065, 2.4438, 2.4495, 2.4508, 2.4336, 2.4117, 2.5414, 2.5174,\n", + " 2.5695, 2.2897, 2.3155, 2.2677, 2.2189, 1.9382, 1.2495, 1.7305, 1.6709,\n", + " 1.5594, 1.5477, 1.6353, 1.4101, 1.2886, 0.7229, 0.7639, 1.3032, 2.0614,\n", + " 2.2072, 1.4414, 2.0877]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3188, -0.1457, 0.0578, -0.3665, -0.3081, 0.3656, 0.6085, 0.1191,\n", + " 0.1931, -0.1546, -0.2459, 0.1305, 1.6684, 0.4060, -0.2002, 0.8738,\n", + " -0.4253, 0.9479, 0.1932, -0.1906, 0.0601, 3.2648, -6.1327, -0.2115,\n", + " 0.7288, -0.1269, -0.0556, -0.4621, -0.4369, -0.1334, -0.5403, 0.3470,\n", + " 0.2482, 0.4205, -0.4569, -0.5591, 0.0203, -0.5278, -1.1357, -0.0765,\n", + " -0.1113, -0.2489, 0.3266]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.1825, 0.1212, 0.0831, 0.0522, 0.0378, -0.0494, -0.1503, -0.1627,\n", + " -0.0803, -0.1285, -0.1014, 0.0853, 0.1109, 0.1243, 0.1308, 0.1392,\n", + " 0.0211, 0.0328, 0.0511, 0.0227, 0.0560, 0.0816, 0.0092, -0.0167,\n", + " 0.0124, -0.0292, -0.0285, 0.0028, 0.0841, 0.1561, 0.0591, 0.0206,\n", + " 0.1022, 0.1248, 0.0355, 0.0548, 0.0112, 0.0688, 0.0553, -0.0681,\n", + " -0.0912, -0.0888, -0.1383]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000830027274787426\n", + "Grad encoder.fc1.bias: 0.00041698242421261966\n", + "Grad encoder.encoder.0.weight: 0.00015152862761169672\n", + "Grad encoder.encoder.0.bias: 0.0005117260152474046\n", + "Grad encoder.encoder.2.weight: 8.977392280939966e-05\n", + "Grad encoder.encoder.2.bias: 0.000591854564845562\n", + "Grad encoder.encoder.4.weight: 0.00020380683417897671\n", + "Grad encoder.encoder.4.bias: 0.002017012797296047\n", + "Grad decoder.fc1.0.weight: 6.096682045608759e-05\n", + "Grad decoder.fc1.0.bias: 0.000717253191396594\n", + "Grad decoder.fc1.2.weight: 6.827419565524906e-05\n", + "Grad decoder.fc1.2.bias: 0.0007335358532145619\n", + "Grad decoder.fc1.4.weight: 5.944058284512721e-05\n", + "Grad decoder.fc1.4.bias: 0.000841404777020216\n", + "Grad decoder.fc2.weight: 0.00012646942923311144\n", + "Grad decoder.fc2.bias: 0.0018425296293571591\n", + "Grad _memory_unit.weight_ih_l0: 2.2318983610603027e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0001446458336431533\n", + "Grad _memory_unit.bias_hh_l0: 7.34132481738925e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.726475814706646e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00023181379947345704\n", + "Grad _memory_unit.bias_hh_l1: 0.00012053646787535399\n", + "Data X Sample: tensor([[1.4099, 1.6750, 1.8557, 2.0335, 2.2572, 2.3941, 2.5005, 2.5369, 2.5753,\n", + " 2.6034, 2.6362, 2.6525, 2.5632, 2.5629, 2.4841, 2.4821, 2.4435, 2.5553,\n", + " 2.4801, 2.4790, 2.4978, 2.4801, 2.3809, 2.3362, 2.2953, 2.3533, 2.3976,\n", + " 2.4431, 2.0746, 2.2664, 2.2257, 2.1941, 2.2220, 1.4692, 1.9634, 1.7585,\n", + " 1.6676, 1.5557, 1.5719, 1.6143, 1.1216, 0.6233, 0.7053, 1.2314, 1.8275,\n", + " 1.8984, 1.3326, 1.8844]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.6052, 0.3080, 0.6549, 0.3551, -0.6678, -2.1403, -1.5498, -1.5125,\n", + " -1.1057, -1.4934, -1.3239, 0.2880, 0.7661, 0.8793, 1.1732, 1.7001,\n", + " 1.0297, -0.3229, 0.1760, -0.1131, -0.5617, -0.7313, 0.5063, -0.6854,\n", + " 0.3988, -0.5485, 0.5155, 1.3171, 1.8194, 1.3055, 0.9569, 0.7347,\n", + " 0.6561, 0.6629, 0.3069, -0.5294, -0.3026, -0.6173, -0.2890, -1.2933,\n", + " -1.6142, -1.2654, -0.2907]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2689, 0.2218, 0.1235, 0.1406, 0.0712, -0.0740, -0.2322, -0.2767,\n", + " -0.1251, -0.1865, -0.1663, 0.1631, 0.1463, 0.1978, 0.1916, 0.2335,\n", + " 0.1053, 0.0489, 0.0914, 0.0524, 0.0748, 0.0848, 0.0268, -0.0046,\n", + " 0.0286, -0.0255, -0.0598, 0.0145, 0.1328, 0.2168, 0.1383, 0.0687,\n", + " 0.1935, 0.2177, 0.0866, 0.1072, 0.0241, 0.0627, 0.0397, -0.1477,\n", + " -0.1917, -0.1913, -0.2056]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00019656411313917488\n", + "Grad encoder.fc1.bias: 0.0012617218308150768\n", + "Grad encoder.encoder.0.weight: 5.4516305681318045e-05\n", + "Grad encoder.encoder.0.bias: 0.0006528353551402688\n", + "Grad encoder.encoder.2.weight: 4.192597043584101e-05\n", + "Grad encoder.encoder.2.bias: 0.00048254142166115344\n", + "Grad encoder.encoder.4.weight: 0.00011099537368863821\n", + "Grad encoder.encoder.4.bias: 0.0010558634530752897\n", + "Grad decoder.fc1.0.weight: 5.146138573763892e-05\n", + "Grad decoder.fc1.0.bias: 0.0005296701565384865\n", + "Grad decoder.fc1.2.weight: 7.209948671516031e-05\n", + "Grad decoder.fc1.2.bias: 0.0007179123349487782\n", + "Grad decoder.fc1.4.weight: 7.051385910017416e-05\n", + "Grad decoder.fc1.4.bias: 0.0008872394682839513\n", + "Grad decoder.fc2.weight: 0.00016719875566195697\n", + "Grad decoder.fc2.bias: 0.0018862338038161397\n", + "Grad _memory_unit.weight_ih_l0: 1.0350000593462028e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.261045488528907e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.778432776220143e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.556843461818062e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00016484099614899606\n", + "Grad _memory_unit.bias_hh_l1: 8.73838143888861e-05\n", + "Data X Sample: tensor([[1.4629, 1.6284, 1.7325, 1.8367, 1.9158, 1.9963, 2.0475, 1.9193, 3.1855,\n", + " 4.1736, 4.0828, 4.0372, 3.8904, 3.7734, 3.7576, 3.5433, 3.5048, 3.4490,\n", + " 3.3102, 3.2824, 3.4080, 3.3297, 2.9207, 2.8306, 2.8865, 2.8078, 2.8265,\n", + " 2.8346, 2.9419, 2.9705, 2.9711, 3.1806, 3.5179, 2.5906, 4.2724, 4.7428,\n", + " 4.9575, 5.2713, 5.8060, 5.6232, 1.1025, 0.6552, 0.6629, 1.0506, 1.6531,\n", + " 1.8355, 1.1830, 1.6655]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2812, -0.5400, -0.6339, -1.0298, -0.5514, 0.4883, 0.0170, 0.1072,\n", + " -0.0919, 0.7428, 0.6092, 0.0975, -0.7273, -0.4840, -0.0198, -0.5245,\n", + " -0.9311, -0.4481, -1.3301, -1.1283, -2.4981, 0.5179, 0.0597, 0.8470,\n", + " 0.1347, -1.3330, 0.4250, -0.7156, 0.2173, -0.7406, -1.6964, 0.0497,\n", + " -0.7685, -1.4825, -1.3656, -0.2143, -0.5037, -0.7815, 0.0173, 0.5289,\n", + " 0.6644, 0.8338, 1.1059]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2031, -0.2103, -0.0060, -0.1092, 0.0793, 0.1544, 0.1595, 0.2433,\n", + " 0.1775, 0.2422, 0.2070, -0.1507, -0.1544, -0.2726, -0.1579, -0.2514,\n", + " -0.2146, -0.0713, -0.0690, -0.0990, -0.0462, -0.0654, -0.0139, -0.0676,\n", + " -0.1390, -0.0185, -0.0745, -0.1069, -0.1801, -0.1795, -0.2347, -0.1902,\n", + " -0.2886, -0.2650, -0.1283, -0.1768, -0.0024, 0.0170, 0.0199, 0.2837,\n", + " 0.2992, 0.3054, 0.2037]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000769943231716752\n", + "Grad encoder.fc1.bias: 0.0006397112738341093\n", + "Grad encoder.encoder.0.weight: 0.00014811799337621778\n", + "Grad encoder.encoder.0.bias: 0.000518381129950285\n", + "Grad encoder.encoder.2.weight: 9.559952741255984e-05\n", + "Grad encoder.encoder.2.bias: 0.0006003069574944675\n", + "Grad encoder.encoder.4.weight: 0.0002153406385332346\n", + "Grad encoder.encoder.4.bias: 0.0008725016377866268\n", + "Grad decoder.fc1.0.weight: 6.482918979600072e-05\n", + "Grad decoder.fc1.0.bias: 0.0005131667130626738\n", + "Grad decoder.fc1.2.weight: 6.806487363064662e-05\n", + "Grad decoder.fc1.2.bias: 0.0005839934456162155\n", + "Grad decoder.fc1.4.weight: 5.200933082960546e-05\n", + "Grad decoder.fc1.4.bias: 0.0005583593156188726\n", + "Grad decoder.fc2.weight: 0.00016294175293296576\n", + "Grad decoder.fc2.bias: 0.001966856885701418\n", + "Grad _memory_unit.weight_ih_l0: 2.4319904696312733e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.853980837855488e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.1910687539493665e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.194330232276116e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00012641439388971776\n", + "Grad _memory_unit.bias_hh_l1: 6.710426532663405e-05\n", + "Data X Sample: tensor([[1.3165, 1.3516, 1.5342, 1.7230, 1.9004, 1.8534, 1.9720, 2.1862, 3.3344,\n", + " 3.8261, 3.8353, 3.7197, 3.5575, 3.3808, 3.3693, 3.1714, 3.1888, 3.3542,\n", + " 3.3061, 3.3921, 3.3737, 3.3894, 2.8821, 2.7810, 2.7214, 2.8182, 2.7945,\n", + " 2.8224, 2.8204, 3.0491, 2.9256, 3.0673, 3.2825, 2.3503, 3.7527, 4.1591,\n", + " 4.5858, 4.9507, 5.5017, 5.2061, 0.9641, 0.5397, 0.5659, 1.0190, 1.5262,\n", + " 1.6354, 1.0674, 1.5873]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1605, 0.3457, -0.2571, 0.2271, 0.3860, 0.4077, -0.6778, 0.1988,\n", + " -0.0743, 0.2375, 0.0987, -0.1796, -0.5586, -0.1149, -0.3174, -0.0275,\n", + " 0.0177, -1.5595, -0.5940, 0.2033, -1.7885, -1.9169, -0.6807, -2.0680,\n", + " 0.7021, -0.7181, 1.9319, 0.5824, 0.3648, -0.2235, -0.2710, -0.2437,\n", + " -0.8188, -0.1228, 0.3552, 0.0547, 0.0000, 0.6282, -0.5562, 0.8003,\n", + " 0.4590, -0.3476, 0.5246]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1796, -0.1887, -0.0038, -0.1169, 0.0592, 0.1353, 0.1426, 0.2224,\n", + " 0.1552, 0.2139, 0.1888, -0.1373, -0.1357, -0.2425, -0.1422, -0.2247,\n", + " -0.1966, -0.0602, -0.0588, -0.0885, -0.0389, -0.0477, -0.0193, -0.0559,\n", + " -0.1253, -0.0094, -0.0639, -0.0840, -0.1605, -0.1652, -0.2089, -0.1816,\n", + " -0.2577, -0.2394, -0.1167, -0.1624, -0.0073, 0.0167, 0.0200, 0.2514,\n", + " 0.2764, 0.2878, 0.1901]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0016878049355000257\n", + "Grad encoder.fc1.bias: 0.0010869484394788742\n", + "Grad encoder.encoder.0.weight: 0.00031106144888326526\n", + "Grad encoder.encoder.0.bias: 0.0010825050994753838\n", + "Grad encoder.encoder.2.weight: 0.0001685322349658236\n", + "Grad encoder.encoder.2.bias: 0.0011494664940983057\n", + "Grad encoder.encoder.4.weight: 0.0003234003088437021\n", + "Grad encoder.encoder.4.bias: 0.001916509005241096\n", + "Grad decoder.fc1.0.weight: 9.415971726411954e-05\n", + "Grad decoder.fc1.0.bias: 0.0008930607000365853\n", + "Grad decoder.fc1.2.weight: 8.614399848738685e-05\n", + "Grad decoder.fc1.2.bias: 0.0009817508980631828\n", + "Grad decoder.fc1.4.weight: 5.8941768656950444e-05\n", + "Grad decoder.fc1.4.bias: 0.0007119159563444555\n", + "Grad decoder.fc2.weight: 0.0001387036609230563\n", + "Grad decoder.fc2.bias: 0.0019400406163185835\n", + "Grad _memory_unit.weight_ih_l0: 3.798773104790598e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00012853187217842788\n", + "Grad _memory_unit.bias_hh_l0: 6.693022442050278e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.4049201126908883e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00023622598382644355\n", + "Grad _memory_unit.bias_hh_l1: 0.00012409577902872115\n", + "Data X Sample: tensor([[1.3642, 1.6240, 1.6950, 1.7930, 1.8662, 1.9123, 2.0968, 2.3367, 3.7689,\n", + " 3.9082, 3.9781, 3.9670, 3.5353, 3.6862, 3.4222, 3.4832, 3.3759, 3.5728,\n", + " 3.4837, 3.5111, 3.3884, 3.3251, 3.0050, 2.8840, 2.7439, 2.8835, 2.9037,\n", + " 2.9733, 3.1292, 3.0786, 3.2475, 3.1999, 3.3859, 2.3663, 3.9047, 4.2224,\n", + " 4.4836, 5.1362, 5.5715, 5.5154, 1.1693, 0.6253, 0.6063, 1.1022, 1.5698,\n", + " 1.8355, 1.2510, 1.6029]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1452, -0.8366, -0.6815, -0.2200, -0.4116, 0.3619, -0.7671, -0.4756,\n", + " 0.2850, -0.2382, -0.1746, 0.3766, -3.1604, 0.0158, -0.4445, 0.3165,\n", + " -0.9793, -0.5979, -0.7159, -3.9908, -0.7660, -0.3748, 0.7539, -0.2494,\n", + " -1.7303, 1.5052, -0.7353, -0.6166, 0.2034, 0.1170, 0.0894, 0.0847,\n", + " 3.6764, 1.1840, 0.6445, -0.5807, 0.7406, -0.1562, 0.5443, 0.1381,\n", + " 0.2205, -0.1539, -0.7118]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1631, -0.1692, 0.0016, -0.1148, 0.0540, 0.1297, 0.1289, 0.2058,\n", + " 0.1344, 0.1953, 0.1753, -0.1290, -0.1273, -0.2209, -0.1284, -0.2045,\n", + " -0.1794, -0.0488, -0.0537, -0.0758, -0.0311, -0.0372, -0.0181, -0.0471,\n", + " -0.1197, -0.0055, -0.0609, -0.0664, -0.1516, -0.1558, -0.1920, -0.1745,\n", + " -0.2418, -0.2207, -0.1084, -0.1578, -0.0125, 0.0167, 0.0231, 0.2252,\n", + " 0.2580, 0.2724, 0.1787]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007603556732647121\n", + "Grad encoder.fc1.bias: 0.0009415578097105026\n", + "Grad encoder.encoder.0.weight: 0.00014304614160209894\n", + "Grad encoder.encoder.0.bias: 0.0007684652809984982\n", + "Grad encoder.encoder.2.weight: 8.993657684186473e-05\n", + "Grad encoder.encoder.2.bias: 0.0006962210754863918\n", + "Grad encoder.encoder.4.weight: 0.00024581767502240837\n", + "Grad encoder.encoder.4.bias: 0.0019267841707915068\n", + "Grad decoder.fc1.0.weight: 7.338974683079869e-05\n", + "Grad decoder.fc1.0.bias: 0.0008395189070142806\n", + "Grad decoder.fc1.2.weight: 8.3230908785481e-05\n", + "Grad decoder.fc1.2.bias: 0.0009481236920692027\n", + "Grad decoder.fc1.4.weight: 6.762301200069487e-05\n", + "Grad decoder.fc1.4.bias: 0.0009565192158333957\n", + "Grad decoder.fc2.weight: 0.00014675772399641573\n", + "Grad decoder.fc2.bias: 0.0019238452659919858\n", + "Grad _memory_unit.weight_ih_l0: 3.112044942099601e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.582651546224952e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.048817183705978e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.782448276178911e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001673623191891238\n", + "Grad _memory_unit.bias_hh_l1: 8.735396841075271e-05\n", + "Data X Sample: tensor([[1.1924, 1.4376, 1.6303, 1.8433, 1.9038, 1.9550, 2.1261, 2.0627, 3.2002,\n", + " 4.1025, 4.3334, 4.1832, 4.0146, 3.9397, 3.6643, 3.6363, 3.6243, 3.6405,\n", + " 3.6964, 3.6469, 3.5111, 3.2823, 2.8869, 2.8191, 2.7852, 2.9567, 2.9517,\n", + " 2.9937, 2.9904, 3.2064, 3.2231, 3.3878, 3.7071, 2.7462, 4.4954, 4.9058,\n", + " 5.0322, 5.5867, 6.0215, 5.8643, 1.0118, 0.5974, 0.5881, 1.0649, 1.5936,\n", + " 1.7612, 1.2374, 1.7046]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.9450, 1.5391, -0.6643, -0.6555, 0.4438, 0.2952, -1.1880, 0.3966,\n", + " -0.8136, -0.6256, -0.7465, -0.2383, 0.2026, -0.8959, -0.5773, -0.2362,\n", + " -0.6282, -0.8340, -0.0103, -0.6639, -0.0462, 0.0736, 0.2156, -0.0689,\n", + " -0.7365, -0.4565, 1.3666, 0.0666, -0.0827, 0.1299, 0.9668, 1.3970,\n", + " 0.7625, -0.2613, 0.1201, 0.8039, 0.0501, -0.4031, 0.5660, -1.8334,\n", + " 0.5376, -2.0398, -0.1222]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1706, -0.1656, 0.0059, -0.0997, 0.0793, 0.1505, 0.1259, 0.2080,\n", + " 0.1194, 0.1969, 0.1747, -0.1443, -0.1462, -0.2339, -0.1228, -0.1997,\n", + " -0.1719, -0.0399, -0.0720, -0.0640, -0.0264, -0.0463, -0.0101, -0.0448,\n", + " -0.1215, -0.0116, -0.0664, -0.0717, -0.1660, -0.1615, -0.2037, -0.1774,\n", + " -0.2671, -0.2275, -0.1071, -0.1651, -0.0168, 0.0160, 0.0387, 0.2216,\n", + " 0.2510, 0.2726, 0.1738]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003671984886750579\n", + "Grad encoder.fc1.bias: 0.0009006047621369362\n", + "Grad encoder.encoder.0.weight: 8.016131323529407e-05\n", + "Grad encoder.encoder.0.bias: 0.0006590268458239734\n", + "Grad encoder.encoder.2.weight: 5.4844265832798555e-05\n", + "Grad encoder.encoder.2.bias: 0.0005301822093315423\n", + "Grad encoder.encoder.4.weight: 0.00014382993686012924\n", + "Grad encoder.encoder.4.bias: 0.001072126324288547\n", + "Grad decoder.fc1.0.weight: 5.070547922514379e-05\n", + "Grad decoder.fc1.0.bias: 0.0004769658553414047\n", + "Grad decoder.fc1.2.weight: 5.702843191102147e-05\n", + "Grad decoder.fc1.2.bias: 0.0005883576814085245\n", + "Grad decoder.fc1.4.weight: 5.328896440914832e-05\n", + "Grad decoder.fc1.4.bias: 0.0007150107994675636\n", + "Grad decoder.fc2.weight: 0.00010883346840273589\n", + "Grad decoder.fc2.bias: 0.0017899672966450453\n", + "Grad _memory_unit.weight_ih_l0: 1.9396435163798742e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.203929999377578e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.689455479616299e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.776288500986993e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00013431084516923875\n", + "Grad _memory_unit.bias_hh_l1: 7.011095294728875e-05\n", + "Data X Sample: tensor([[1.9530, 2.5503, 2.7453, 3.0327, 3.0341, 3.0732, 3.0829, 3.2098, 3.1831,\n", + " 3.2068, 3.2326, 3.2328, 3.2113, 3.2063, 3.2432, 3.0975, 3.0787, 3.2904,\n", + " 3.2937, 3.1113, 2.9198, 2.8613, 2.6484, 2.5729, 2.4924, 2.4212, 2.3150,\n", + " 2.3411, 2.0191, 2.1387, 2.1277, 2.1443, 1.8722, 1.2495, 2.0443, 2.3568,\n", + " 2.6292, 2.9285, 3.1755, 3.0527, 1.6370, 1.0575, 1.0044, 1.8227, 2.7036,\n", + " 3.0307, 1.9513, 2.5412]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2159, -0.5431, 0.5505, 0.4758, -2.2876, 0.2301, -0.8288, 0.5385,\n", + " -0.4836, -0.4319, -0.4754, 1.0064, -0.4536, -0.5021, -1.1496, 0.4217,\n", + " -0.3767, -0.6887, -0.0327, -0.4793, 0.0836, 0.1201, 0.2858, 0.3073,\n", + " 0.3182, 1.4185, -0.7579, 0.4598, 0.3708, 1.3722, -0.6057, 0.0070,\n", + " -0.3217, -1.0883, -0.1739, 0.1034, -0.0333, 0.7428, 0.2870, 1.0911,\n", + " -0.0897, 0.4923, 0.1213]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1244, -0.1679, -0.0439, -0.2154, -0.0883, -0.0201, 0.0025, 0.1497,\n", + " 0.0518, 0.0755, 0.0942, -0.1030, -0.0637, -0.1519, -0.0259, -0.0938,\n", + " -0.1622, -0.0450, -0.0541, -0.0439, 0.0069, 0.0365, -0.0562, -0.0509,\n", + " 0.0267, 0.0249, 0.0633, 0.0253, -0.0486, -0.1049, -0.0781, -0.1454,\n", + " -0.0748, -0.0873, -0.0399, -0.0717, -0.0258, 0.0400, 0.0526, 0.1370,\n", + " 0.1631, 0.2146, 0.1381]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00017467373982071877\n", + "Grad encoder.fc1.bias: 0.00016078155022114515\n", + "Grad encoder.encoder.0.weight: 5.027814768254757e-05\n", + "Grad encoder.encoder.0.bias: 0.00020999650587327778\n", + "Grad encoder.encoder.2.weight: 4.247951801517047e-05\n", + "Grad encoder.encoder.2.bias: 0.00028759357519447803\n", + "Grad encoder.encoder.4.weight: 0.0001508383429609239\n", + "Grad encoder.encoder.4.bias: 0.0011814322788268328\n", + "Grad decoder.fc1.0.weight: 4.798035297426395e-05\n", + "Grad decoder.fc1.0.bias: 0.0004930585855618119\n", + "Grad decoder.fc1.2.weight: 5.491647607414052e-05\n", + "Grad decoder.fc1.2.bias: 0.0007253664080053568\n", + "Grad decoder.fc1.4.weight: 5.7271678088000044e-05\n", + "Grad decoder.fc1.4.bias: 0.0007858050521463156\n", + "Grad decoder.fc2.weight: 0.00013056446914561093\n", + "Grad decoder.fc2.bias: 0.0019075960153713822\n", + "Grad _memory_unit.weight_ih_l0: 1.4856241250527091e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.673583993688226e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.4293640055693686e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.966217031527776e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00013782436144538224\n", + "Grad _memory_unit.bias_hh_l1: 7.122892566258088e-05\n", + "Data X Sample: tensor([[1.5499, 1.7027, 1.8527, 1.9832, 2.1719, 2.2585, 2.3511, 2.5255, 2.6046,\n", + " 2.5291, 2.5949, 2.5298, 2.5499, 2.5111, 2.5093, 2.5095, 2.4450, 2.4721,\n", + " 2.4512, 2.3934, 2.3824, 2.3867, 2.3857, 2.3171, 2.2953, 2.3794, 2.4269,\n", + " 2.3778, 2.2237, 2.2926, 2.2152, 2.2411, 2.2132, 1.4852, 1.9830, 1.7512,\n", + " 1.6951, 1.5345, 1.6100, 1.6087, 1.2313, 0.7129, 0.6952, 1.2228, 1.7759,\n", + " 2.0528, 1.4278, 2.0017]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.9254, 0.8788, -1.0555, -0.3222, 0.3559, -0.3088, -0.1971, -0.4053,\n", + " -1.1230, -0.2768, -0.0526, -0.3889, 0.0153, 0.0228, 0.0500, 0.0742,\n", + " -0.6602, -0.2099, 0.1051, -0.0276, -1.0568, 0.7150, -0.0028, -0.5267,\n", + " 0.0331, 0.8426, -0.1948, -0.2929, 1.1879, 0.4838, 0.9016, 0.0700,\n", + " 0.1741, 0.0863, 0.4532, 0.1258, -1.0105, 0.0000, 1.8119, -0.1515,\n", + " -0.0743, -0.3218, -0.4134]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5297, 0.4185, 0.1366, 0.3601, 0.1477, -0.1515, -0.4477, -0.5787,\n", + " -0.2231, -0.3369, -0.3067, 0.3319, 0.2438, 0.3922, 0.3582, 0.4526,\n", + " 0.2860, 0.1204, 0.1558, 0.1432, 0.1303, 0.1239, 0.1197, 0.0385,\n", + " 0.0675, -0.0062, -0.0945, 0.0816, 0.2292, 0.3755, 0.3246, 0.1856,\n", + " 0.4428, 0.4964, 0.1947, 0.2601, -0.0176, 0.0308, 0.0397, -0.3911,\n", + " -0.4337, -0.4133, -0.3989]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004021176719106734\n", + "Grad encoder.fc1.bias: 0.0007259997073560953\n", + "Grad encoder.encoder.0.weight: 8.712125418242067e-05\n", + "Grad encoder.encoder.0.bias: 0.0004919786006212234\n", + "Grad encoder.encoder.2.weight: 6.21434228378348e-05\n", + "Grad encoder.encoder.2.bias: 0.00047355276183225214\n", + "Grad encoder.encoder.4.weight: 0.00018507029744796455\n", + "Grad encoder.encoder.4.bias: 0.0013989140279591084\n", + "Grad decoder.fc1.0.weight: 5.9260171838104725e-05\n", + "Grad decoder.fc1.0.bias: 0.0006351112388074398\n", + "Grad decoder.fc1.2.weight: 7.271389767993242e-05\n", + "Grad decoder.fc1.2.bias: 0.0007112460443750024\n", + "Grad decoder.fc1.4.weight: 7.736396219115704e-05\n", + "Grad decoder.fc1.4.bias: 0.0011246694484725595\n", + "Grad decoder.fc2.weight: 0.0001457101316191256\n", + "Grad decoder.fc2.bias: 0.0016174617921933532\n", + "Grad _memory_unit.weight_ih_l0: 1.7334261428914033e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.55748837441206e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.8790330765768886e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.048013801773777e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00017791148275136948\n", + "Grad _memory_unit.bias_hh_l1: 9.30180394789204e-05\n", + "Data X Sample: tensor([[1.4533, 1.5191, 1.6920, 1.8279, 1.9226, 2.0081, 2.0552, 1.9733, 3.6469,\n", + " 4.0836, 4.1113, 4.0722, 3.9947, 3.8907, 3.6441, 3.6363, 3.5127, 3.4354,\n", + " 3.3763, 3.2117, 3.4522, 3.3588, 2.9640, 2.7332, 2.7270, 2.8182, 2.7306,\n", + " 2.7612, 2.7580, 2.9116, 3.0796, 3.0645, 3.5025, 2.5952, 4.4047, 4.6747,\n", + " 4.9044, 5.3217, 5.9898, 5.7338, 1.1359, 0.6552, 0.6407, 1.0333, 1.6332,\n", + " 1.8527, 1.1694, 1.5169]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2232, -0.2817, -1.2631, -0.5556, 0.6588, -0.3931, 0.5086, 0.5055,\n", + " -0.0242, 0.6948, 0.4168, -0.8099, -1.7270, -0.5325, -0.3183, -0.1737,\n", + " 0.2040, 0.8808, -1.7492, -1.4316, 0.9400, -0.5130, 0.0667, -0.7868,\n", + " 0.5811, 0.6431, 0.7997, -0.0170, -0.4841, -0.4584, -0.2513, -0.1722,\n", + " -0.5768, 0.0022, 0.0578, -0.7557, 0.7063, 0.8238, 0.3483, 0.6369,\n", + " 0.8441, 0.7224, 0.2953]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1678, -0.1622, -0.0081, -0.0995, 0.0826, 0.1562, 0.1224, 0.2086,\n", + " 0.1203, 0.2005, 0.1619, -0.1304, -0.1440, -0.2182, -0.1077, -0.1979,\n", + " -0.1516, -0.0294, -0.0654, -0.0603, -0.0326, -0.0348, -0.0096, -0.0464,\n", + " -0.1146, -0.0034, -0.0626, -0.0489, -0.1623, -0.1703, -0.1906, -0.1891,\n", + " -0.2625, -0.2155, -0.1024, -0.1558, -0.0193, 0.0077, 0.0362, 0.2055,\n", + " 0.2533, 0.2785, 0.1855]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005277061718516052\n", + "Grad encoder.fc1.bias: 0.0002578279236331582\n", + "Grad encoder.encoder.0.weight: 0.00012333120685070753\n", + "Grad encoder.encoder.0.bias: 0.0003981193876825273\n", + "Grad encoder.encoder.2.weight: 0.00010496293543837965\n", + "Grad encoder.encoder.2.bias: 0.0006003404851071537\n", + "Grad encoder.encoder.4.weight: 0.00037810541107319295\n", + "Grad encoder.encoder.4.bias: 0.0023736616130918264\n", + "Grad decoder.fc1.0.weight: 0.00011737865133909509\n", + "Grad decoder.fc1.0.bias: 0.001046343008056283\n", + "Grad decoder.fc1.2.weight: 0.00013778518768958747\n", + "Grad decoder.fc1.2.bias: 0.001362245879136026\n", + "Grad decoder.fc1.4.weight: 0.0001111925594159402\n", + "Grad decoder.fc1.4.bias: 0.0014721134211868048\n", + "Grad decoder.fc2.weight: 0.0001767437206581235\n", + "Grad decoder.fc2.bias: 0.003153823781758547\n", + "Grad _memory_unit.weight_ih_l0: 4.8905651055974886e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.069125422276556e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.977440792368725e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.2694425095105544e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001858803880168125\n", + "Grad _memory_unit.bias_hh_l1: 9.92803688859567e-05\n", + "Data X Sample: tensor([[1.8013, 2.2707, 2.5800, 2.8163, 2.9146, 2.9863, 3.1707, 3.2410, 3.3027,\n", + " 3.3458, 3.4610, 3.4237, 3.3622, 3.1900, 3.2684, 3.2247, 3.1605, 3.2826,\n", + " 3.3515, 3.2601, 3.2289, 3.2226, 3.0363, 2.7504, 2.6501, 2.5205, 2.3976,\n", + " 2.4227, 1.9774, 1.9847, 1.8477, 1.7906, 1.5730, 1.0275, 1.6031, 1.6904,\n", + " 1.8308, 2.1759, 2.4656, 2.5421, 1.6847, 0.9400, 0.8872, 1.7107, 2.4459,\n", + " 2.6075, 1.7813, 2.7602]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7098, -0.5571, 0.9787, 0.4196, 0.9722, -0.5326, -0.0311, -0.2671,\n", + " -0.4978, -0.2330, -0.4344, -0.8817, -0.1294, -0.5498, -1.5998, 0.4484,\n", + " 0.6152, 0.2425, 1.4769, 0.7026, 0.0861, -0.1856, 0.4231, -0.0844,\n", + " -0.0469, 1.4505, 0.3944, -0.1299, 0.6038, 0.1178, -0.8503, -0.1504,\n", + " 1.1548, -0.0987, -0.5508, 1.5236, 0.8233, -0.7806, 0.0545, 1.0504,\n", + " -1.1559, 0.0954, 0.3596]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.0579, -0.1039, -0.0540, -0.1680, -0.0660, -0.0103, -0.0177, 0.0966,\n", + " 0.0087, 0.0102, 0.0405, -0.0761, -0.0078, -0.0764, 0.0319, -0.0372,\n", + " -0.1318, -0.0025, -0.0264, -0.0299, 0.0066, 0.0569, -0.0143, -0.0515,\n", + " 0.0101, 0.0095, 0.0459, 0.0437, -0.0418, -0.0150, -0.0507, -0.1204,\n", + " -0.0482, -0.0307, -0.0376, -0.0594, -0.0342, 0.0367, 0.0834, 0.0851,\n", + " 0.1133, 0.1394, 0.0794]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004402885679155588\n", + "Grad encoder.fc1.bias: 0.0008249972597695887\n", + "Grad encoder.encoder.0.weight: 9.981526818592101e-05\n", + "Grad encoder.encoder.0.bias: 0.0006935822893865407\n", + "Grad encoder.encoder.2.weight: 7.781027670716867e-05\n", + "Grad encoder.encoder.2.bias: 0.0006868068594485521\n", + "Grad encoder.encoder.4.weight: 0.00025024826754815876\n", + "Grad encoder.encoder.4.bias: 0.001868843799456954\n", + "Grad decoder.fc1.0.weight: 9.25180283957161e-05\n", + "Grad decoder.fc1.0.bias: 0.0008885582210496068\n", + "Grad decoder.fc1.2.weight: 0.00010101814405061305\n", + "Grad decoder.fc1.2.bias: 0.0009180178167298436\n", + "Grad decoder.fc1.4.weight: 8.99171645869501e-05\n", + "Grad decoder.fc1.4.bias: 0.0011055609211325645\n", + "Grad decoder.fc2.weight: 0.00016128175775520504\n", + "Grad decoder.fc2.bias: 0.0023736434523016214\n", + "Grad _memory_unit.weight_ih_l0: 3.937871952075511e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00010567018034635112\n", + "Grad _memory_unit.bias_hh_l0: 5.6355544074904174e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0991802810167428e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00021813545026816428\n", + "Grad _memory_unit.bias_hh_l1: 0.00011623707541730255\n", + "Data X Sample: tensor([[1.5329, 1.6939, 1.9399, 2.0641, 2.1702, 2.2055, 2.2355, 2.7867, 3.8641,\n", + " 4.1862, 4.3334, 4.3195, 4.1167, 4.0979, 3.9291, 3.6719, 3.6778, 3.6250,\n", + " 3.6530, 3.4460, 3.4718, 3.2945, 2.8195, 2.8153, 2.7402, 2.8182, 2.9144,\n", + " 2.9121, 2.9974, 3.2522, 3.2056, 3.2441, 3.8061, 2.8286, 4.5616, 4.7647,\n", + " 5.1168, 5.3800, 5.9137, 5.8360, 1.1550, 0.6592, 0.6791, 1.3003, 1.6887,\n", + " 1.9099, 1.3122, 1.8766]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.5256, 0.8210, -0.1483, 0.5601, 0.7002, 0.3822, 0.6850, -0.3264,\n", + " 0.0825, -0.6216, -0.1900, -1.0145, -0.2066, -0.0125, 1.3815, 0.6459,\n", + " 0.6893, 0.9237, 0.9465, 0.4681, -0.6465, 0.6303, 1.0656, 0.3716,\n", + " 0.7028, 0.8702, -0.1529, -0.0036, -0.3765, 0.4257, 0.1780, 0.7142,\n", + " -0.2042, 0.7500, -0.5592, 0.4820, 0.5283, -0.0606, 0.4914, 0.1274,\n", + " -0.0087, -0.2004, -0.1030]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1900, -0.1951, -0.0283, -0.1165, 0.0814, 0.1679, 0.1419, 0.2367,\n", + " 0.1551, 0.2304, 0.1806, -0.1304, -0.1518, -0.2364, -0.1204, -0.2316,\n", + " -0.1619, -0.0353, -0.0629, -0.0781, -0.0521, -0.0320, -0.0116, -0.0626,\n", + " -0.1154, 0.0030, -0.0591, -0.0456, -0.1728, -0.1942, -0.2031, -0.2207,\n", + " -0.2774, -0.2351, -0.1152, -0.1582, -0.0174, -0.0014, 0.0295, 0.2323,\n", + " 0.2889, 0.3141, 0.2188]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00040311142220161855\n", + "Grad encoder.fc1.bias: 0.0006983888451941311\n", + "Grad encoder.encoder.0.weight: 8.531066123396158e-05\n", + "Grad encoder.encoder.0.bias: 0.0005389726720750332\n", + "Grad encoder.encoder.2.weight: 6.24844542471692e-05\n", + "Grad encoder.encoder.2.bias: 0.0006416084943339229\n", + "Grad encoder.encoder.4.weight: 0.000189262063940987\n", + "Grad encoder.encoder.4.bias: 0.0013436087174341083\n", + "Grad decoder.fc1.0.weight: 6.806422607041895e-05\n", + "Grad decoder.fc1.0.bias: 0.0007907889084890485\n", + "Grad decoder.fc1.2.weight: 6.90089218551293e-05\n", + "Grad decoder.fc1.2.bias: 0.0009949825471267104\n", + "Grad decoder.fc1.4.weight: 5.5846561735961586e-05\n", + "Grad decoder.fc1.4.bias: 0.0009145041694864631\n", + "Grad decoder.fc2.weight: 0.0001430999836884439\n", + "Grad decoder.fc2.bias: 0.002467662561684847\n", + "Grad _memory_unit.weight_ih_l0: 1.2496190720412415e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.055151970940642e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.1581075745634735e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.406106306007132e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00014931481564417481\n", + "Grad _memory_unit.bias_hh_l1: 7.749828364467248e-05\n", + "Data X Sample: tensor([[1.4300, 1.7391, 1.8708, 2.0029, 2.1224, 2.2290, 2.0784, 1.9264, 2.7876,\n", + " 3.9098, 4.3714, 4.3741, 4.1145, 3.9834, 3.8030, 3.6322, 3.6039, 3.7353,\n", + " 3.5766, 3.4832, 3.4424, 3.3573, 2.9062, 2.9451, 2.8434, 2.8365, 2.8904,\n", + " 2.9692, 3.0355, 3.2555, 3.3735, 3.3906, 3.9227, 2.8675, 4.6596, 5.0785,\n", + " 5.2564, 5.4251, 6.0278, 5.8587, 1.1788, 0.7090, 0.6831, 1.1395, 1.8314,\n", + " 2.0128, 1.2510, 1.8453]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4811, -0.3468, -0.8899, -0.7038, 0.5877, 0.2838, 0.2612, 0.3964,\n", + " -0.2781, 0.5475, 0.4676, -1.2033, -0.2361, -0.5307, 0.2308, -1.0913,\n", + " -0.3456, -1.0263, 0.0711, -0.3219, -0.4748, -0.0498, -0.3410, 0.3522,\n", + " 0.1089, 0.2815, 0.5081, -0.4147, 0.0216, 0.4889, -0.3591, -0.2994,\n", + " -0.1821, 0.1054, -0.5286, 0.9285, 0.7329, 0.5269, 0.3478, 0.5613,\n", + " 0.4734, 1.1187, 0.5300]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2175, -0.2265, -0.0428, -0.1218, 0.1018, 0.1936, 0.1635, 0.2667,\n", + " 0.1839, 0.2619, 0.2016, -0.1423, -0.1722, -0.2695, -0.1370, -0.2667,\n", + " -0.1768, -0.0438, -0.0724, -0.0910, -0.0707, -0.0428, -0.0100, -0.0741,\n", + " -0.1204, -0.0012, -0.0635, -0.0563, -0.1940, -0.2210, -0.2259, -0.2477,\n", + " -0.3131, -0.2656, -0.1324, -0.1667, -0.0155, -0.0065, 0.0324, 0.2643,\n", + " 0.3220, 0.3484, 0.2449]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000182187111931853\n", + "Grad encoder.fc1.bias: 0.0005969819030724466\n", + "Grad encoder.encoder.0.weight: 6.310440949164331e-05\n", + "Grad encoder.encoder.0.bias: 0.00046865519834682345\n", + "Grad encoder.encoder.2.weight: 5.933427019044757e-05\n", + "Grad encoder.encoder.2.bias: 0.0005263170460239053\n", + "Grad encoder.encoder.4.weight: 0.0001817695883801207\n", + "Grad encoder.encoder.4.bias: 0.0018106030765920877\n", + "Grad decoder.fc1.0.weight: 7.029800326563418e-05\n", + "Grad decoder.fc1.0.bias: 0.0007623349083587527\n", + "Grad decoder.fc1.2.weight: 8.529844490112737e-05\n", + "Grad decoder.fc1.2.bias: 0.0008163547609001398\n", + "Grad decoder.fc1.4.weight: 7.378066948149353e-05\n", + "Grad decoder.fc1.4.bias: 0.0009381022537127137\n", + "Grad decoder.fc2.weight: 0.00016416133439633995\n", + "Grad decoder.fc2.bias: 0.0022236029617488384\n", + "Grad _memory_unit.weight_ih_l0: 2.193074942624662e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.59925091592595e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.069814505986869e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.86545751907397e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.000183028110768646\n", + "Grad _memory_unit.bias_hh_l1: 9.792130731511861e-05\n", + "Data X Sample: tensor([[2.6383, 3.1388, 3.5237, 3.7412, 3.9152, 4.0898, 4.0057, 4.0076, 3.9935,\n", + " 4.0283, 4.0225, 4.1228, 3.8637, 3.6753, 3.6467, 3.6609, 3.5976, 3.5728,\n", + " 3.7687, 3.7231, 3.8055, 3.7002, 3.2918, 3.1016, 2.9860, 3.0063, 2.9224,\n", + " 2.9529, 2.8378, 3.0688, 3.1636, 3.2165, 3.6345, 2.5379, 3.9316, 4.2345,\n", + " 4.4462, 4.9268, 5.3877, 5.1097, 1.9806, 1.1949, 1.2247, 2.0896, 3.0643,\n", + " 3.4995, 2.2912, 3.6750]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6438, -0.3060, -1.3828, -0.8053, -0.6179, -0.1006, 0.6864, 0.6259,\n", + " 1.1878, 0.2778, 0.4330, -0.5766, -0.0895, -0.4023, -1.4880, -0.8890,\n", + " 0.0038, -0.8232, 0.0439, 2.3234, -0.5877, 1.0734, -0.9633, 0.4043,\n", + " -0.0251, -0.9639, 0.0266, -0.3167, -1.2428, 0.0668, -0.8266, 1.3513,\n", + " 1.4252, 1.0534, 0.2561, -0.2737, -0.9002, -0.7393, 0.5010, 0.7470,\n", + " -0.3330, -0.1149, -1.2071]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2143, -0.2488, -0.0738, -0.2766, -0.1158, 0.0217, 0.0620, 0.2385,\n", + " 0.1139, 0.1487, 0.1501, -0.1219, -0.0935, -0.2225, -0.0867, -0.1786,\n", + " -0.2160, -0.0945, -0.0557, -0.0974, -0.0632, 0.0104, -0.0627, -0.0744,\n", + " -0.0022, 0.0263, 0.0630, 0.0143, -0.0698, -0.1434, -0.1070, -0.2143,\n", + " -0.1083, -0.1811, -0.0693, -0.1105, -0.0013, 0.0057, -0.0096, 0.2489,\n", + " 0.2779, 0.2992, 0.2293]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002999106072820723\n", + "Grad encoder.fc1.bias: 0.0004076713230460882\n", + "Grad encoder.encoder.0.weight: 6.998746539466083e-05\n", + "Grad encoder.encoder.0.bias: 0.00034988822881132364\n", + "Grad encoder.encoder.2.weight: 4.479104245547205e-05\n", + "Grad encoder.encoder.2.bias: 0.000332637777319178\n", + "Grad encoder.encoder.4.weight: 0.00015522864123340696\n", + "Grad encoder.encoder.4.bias: 0.0010956405894830823\n", + "Grad decoder.fc1.0.weight: 5.07224649481941e-05\n", + "Grad decoder.fc1.0.bias: 0.00047639370313845575\n", + "Grad decoder.fc1.2.weight: 7.522803207393736e-05\n", + "Grad decoder.fc1.2.bias: 0.0010372295510023832\n", + "Grad decoder.fc1.4.weight: 7.107782585080713e-05\n", + "Grad decoder.fc1.4.bias: 0.001132217701524496\n", + "Grad decoder.fc2.weight: 0.00016357270942535251\n", + "Grad decoder.fc2.bias: 0.00270270393230021\n", + "Grad _memory_unit.weight_ih_l0: 1.561662065796554e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.069125472800806e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.6288311346434057e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.397238965088036e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010378838487667963\n", + "Grad _memory_unit.bias_hh_l1: 5.405496267485432e-05\n", + "Data X Sample: tensor([[1.4247, 1.5643, 1.6769, 1.7142, 1.8355, 2.0744, 2.1184, 2.0372, 3.6884,\n", + " 4.3411, 4.3112, 4.3195, 4.2210, 3.8443, 3.7425, 3.7498, 3.6825, 3.5612,\n", + " 3.4940, 3.3326, 3.4841, 3.4415, 2.9881, 2.8325, 2.8190, 2.8470, 2.9623,\n", + " 2.9203, 3.0737, 3.1016, 3.1496, 3.3713, 3.7863, 2.7965, 4.6033, 4.9496,\n", + " 5.2033, 5.7007, 6.0722, 6.0885, 1.0166, 0.6114, 0.6285, 1.0936, 1.5936,\n", + " 1.6583, 1.1762, 1.4935]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5876, -0.7730, -0.8112, -0.7892, -0.1009, -0.4436, 0.1966, 0.4506,\n", + " 0.5967, 0.4315, 0.3202, -1.0514, 0.2956, -1.4156, -1.2252, -0.9087,\n", + " -1.9473, 0.4264, 0.6034, 0.3060, -0.6676, -0.6503, -0.0723, 1.1045,\n", + " 0.2568, -2.6842, -0.5115, -1.0008, -1.6015, -0.6336, -0.5394, -1.3363,\n", + " -0.7583, -1.2433, -0.4623, -0.9671, 0.0000, -0.0597, -0.7367, 0.5134,\n", + " 0.4322, 0.7001, 0.5821]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2550, -0.2681, -0.0617, -0.1334, 0.1237, 0.2232, 0.1908, 0.3084,\n", + " 0.2151, 0.2949, 0.2267, -0.1580, -0.1951, -0.3165, -0.1552, -0.3041,\n", + " -0.1985, -0.0549, -0.0855, -0.1075, -0.0962, -0.0551, -0.0145, -0.0816,\n", + " -0.1176, -0.0061, -0.0664, -0.0648, -0.2163, -0.2550, -0.2514, -0.2834,\n", + " -0.3502, -0.3041, -0.1536, -0.1747, -0.0143, -0.0070, 0.0380, 0.3059,\n", + " 0.3635, 0.3948, 0.2798]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003209933056496084\n", + "Grad encoder.fc1.bias: 0.0005499003455042839\n", + "Grad encoder.encoder.0.weight: 6.927800131961703e-05\n", + "Grad encoder.encoder.0.bias: 0.0004681155551224947\n", + "Grad encoder.encoder.2.weight: 4.3368389015085995e-05\n", + "Grad encoder.encoder.2.bias: 0.0005021750694140792\n", + "Grad encoder.encoder.4.weight: 0.00011534416989888996\n", + "Grad encoder.encoder.4.bias: 0.0006480811280198395\n", + "Grad decoder.fc1.0.weight: 4.211572741041891e-05\n", + "Grad decoder.fc1.0.bias: 0.00036938482662662864\n", + "Grad decoder.fc1.2.weight: 4.782373798661865e-05\n", + "Grad decoder.fc1.2.bias: 0.0005009414162486792\n", + "Grad decoder.fc1.4.weight: 3.762411870411597e-05\n", + "Grad decoder.fc1.4.bias: 0.0004987984430044889\n", + "Grad decoder.fc2.weight: 0.0001193899879581295\n", + "Grad decoder.fc2.bias: 0.001623942400328815\n", + "Grad _memory_unit.weight_ih_l0: 1.1555255696293898e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.905152905441355e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.585088284628e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.564981736621121e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.839251727797091e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.586136153899133e-05\n", + "Data X Sample: tensor([[1.5011, 1.7318, 1.9204, 2.0116, 2.1036, 2.2290, 2.3695, 2.5042, 2.4801,\n", + " 2.5433, 2.5949, 2.6038, 2.6232, 2.4811, 2.4891, 2.4534, 2.4026, 2.4895,\n", + " 2.3727, 2.4120, 2.4192, 2.5551, 2.3977, 2.3534, 2.3742, 2.4291, 2.4428,\n", + " 2.4798, 2.2411, 2.4072, 2.4322, 2.3461, 2.3166, 1.4440, 1.9487, 1.7804,\n", + " 1.6086, 1.4894, 1.5909, 1.5689, 1.1741, 0.7468, 0.7356, 1.2687, 1.8394,\n", + " 1.8927, 1.4006, 1.9548]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 2.0489, 1.4077, -0.1883, 1.4082, 0.8577, -0.5449, -1.1428, -1.2558,\n", + " -0.7778, -0.9792, -0.9383, 1.5007, 2.0615, 0.1042, -0.2975, 1.0242,\n", + " 1.0034, 1.0753, 1.0679, 0.2871, -0.4234, -0.2165, -0.2270, -0.0041,\n", + " -0.3343, 0.2684, 1.8146, -0.2208, 0.9493, 1.5409, 0.3989, 0.9132,\n", + " 0.3276, 1.4471, 1.4074, -0.1312, 0.9953, 0.4465, -0.2890, -1.0462,\n", + " -1.3821, -0.1295, 0.1110]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 3.4809e-01, 2.6707e-01, 6.3954e-02, 2.0960e-01, 7.8810e-02,\n", + " -1.1401e-01, -2.9003e-01, -3.7734e-01, -1.4173e-01, -2.1185e-01,\n", + " -2.2388e-01, 1.8441e-01, 1.6195e-01, 2.6400e-01, 2.3388e-01,\n", + " 3.1422e-01, 1.6308e-01, 6.9568e-02, 4.3896e-02, 5.1838e-02,\n", + " 1.5140e-02, 5.8651e-02, 5.1220e-02, 7.0265e-03, 2.7996e-02,\n", + " -3.7886e-03, -5.5840e-02, 5.4415e-02, 1.8158e-01, 2.4813e-01,\n", + " 1.9405e-01, 1.0885e-01, 2.5912e-01, 2.7958e-01, 1.2509e-01,\n", + " 1.5300e-01, -2.6180e-04, 2.4387e-02, 2.2792e-02, -2.4618e-01,\n", + " -2.4489e-01, -2.3050e-01, -2.3607e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00016493820294272155\n", + "Grad encoder.fc1.bias: 0.0010782857425510883\n", + "Grad encoder.encoder.0.weight: 5.0584334530867636e-05\n", + "Grad encoder.encoder.0.bias: 0.0007519720820710063\n", + "Grad encoder.encoder.2.weight: 5.267640153761022e-05\n", + "Grad encoder.encoder.2.bias: 0.0007725301547907293\n", + "Grad encoder.encoder.4.weight: 0.0001595685025677085\n", + "Grad encoder.encoder.4.bias: 0.0027018473483622074\n", + "Grad decoder.fc1.0.weight: 7.417502638418227e-05\n", + "Grad decoder.fc1.0.bias: 0.001081931171938777\n", + "Grad decoder.fc1.2.weight: 0.00010624064452713355\n", + "Grad decoder.fc1.2.bias: 0.001287079881876707\n", + "Grad decoder.fc1.4.weight: 8.090645133052021e-05\n", + "Grad decoder.fc1.4.bias: 0.0011929080355912447\n", + "Grad decoder.fc2.weight: 0.0001690290664555505\n", + "Grad decoder.fc2.bias: 0.002081814920529723\n", + "Grad _memory_unit.weight_ih_l0: 1.4367487892741337e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00015198350592982024\n", + "Grad _memory_unit.bias_hh_l0: 7.780775194987655e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.997029908641707e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002843074325937778\n", + "Grad _memory_unit.bias_hh_l1: 0.0001501197402831167\n", + "Data X Sample: tensor([[1.5669, 1.8483, 2.0361, 2.2565, 2.4502, 2.5384, 2.6777, 2.6448, 2.6973,\n", + " 2.6966, 2.7314, 2.8083, 2.7053, 2.5901, 2.6203, 2.6886, 2.6998, 2.7062,\n", + " 2.6350, 2.5906, 2.5493, 2.5735, 2.5110, 2.5176, 2.6182, 2.5518, 2.4935,\n", + " 2.4553, 2.3174, 2.4236, 2.3482, 2.3626, 2.3430, 1.5219, 2.0369, 1.9239,\n", + " 1.7049, 1.6882, 1.6163, 1.6455, 1.2266, 0.8045, 0.7781, 1.3146, 2.1367,\n", + " 2.2129, 1.5434, 2.2676]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4013, 0.4617, 1.1199, -0.4357, -0.4476, 0.0297, -0.7618, -0.4915,\n", + " -0.3802, -0.7266, -0.5898, 0.8787, 0.8581, 1.4703, 0.1532, 0.0477,\n", + " 0.9972, 0.1527, 0.6675, 0.9981, 0.8605, 0.9960, -0.4984, 0.9408,\n", + " 0.9342, 0.7671, -0.2882, -0.2912, -0.1576, 0.0959, 1.2076, 0.7073,\n", + " -0.0075, 1.4621, 0.6195, -0.3114, 0.0000, 0.7314, 1.1574, -0.7700,\n", + " -0.7925, -1.0086, -1.2268]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2705, 0.2093, 0.0622, 0.1398, 0.0523, -0.0864, -0.2319, -0.2900,\n", + " -0.1218, -0.1728, -0.1809, 0.1310, 0.1287, 0.2077, 0.1809, 0.2596,\n", + " 0.1168, 0.0497, 0.0148, 0.0279, -0.0069, 0.0499, 0.0255, 0.0055,\n", + " 0.0259, -0.0067, -0.0482, 0.0373, 0.1612, 0.2064, 0.1367, 0.0716,\n", + " 0.1911, 0.1922, 0.0919, 0.1056, 0.0151, 0.0301, 0.0196, -0.1717,\n", + " -0.1772, -0.1637, -0.1820]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00016923999646678567\n", + "Grad encoder.fc1.bias: 0.0008034984348341823\n", + "Grad encoder.encoder.0.weight: 4.788638398167677e-05\n", + "Grad encoder.encoder.0.bias: 0.0004305377078708261\n", + "Grad encoder.encoder.2.weight: 3.410586577956565e-05\n", + "Grad encoder.encoder.2.bias: 0.0004559587105177343\n", + "Grad encoder.encoder.4.weight: 8.362354128621519e-05\n", + "Grad encoder.encoder.4.bias: 0.0013970716390758753\n", + "Grad decoder.fc1.0.weight: 4.5470776967704296e-05\n", + "Grad decoder.fc1.0.bias: 0.0006194381276145577\n", + "Grad decoder.fc1.2.weight: 6.0437407228164375e-05\n", + "Grad decoder.fc1.2.bias: 0.0006192016880959272\n", + "Grad decoder.fc1.4.weight: 4.997205542167649e-05\n", + "Grad decoder.fc1.4.bias: 0.000583016371820122\n", + "Grad decoder.fc2.weight: 0.00014155791723169386\n", + "Grad decoder.fc2.bias: 0.0018526035128161311\n", + "Grad _memory_unit.weight_ih_l0: 9.862728802545462e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.961818558513187e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.5195498892571777e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.941215593134984e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010265489981975406\n", + "Grad _memory_unit.bias_hh_l1: 5.3763415053253993e-05\n", + "Data X Sample: tensor([[1.3674, 1.4842, 1.7190, 1.8651, 2.0165, 2.0640, 2.1831, 2.0528, 3.3979,\n", + " 4.1894, 4.2763, 4.3059, 4.0280, 3.9207, 3.8207, 3.6787, 3.5929, 3.5921,\n", + " 3.5952, 3.5018, 3.4988, 3.4032, 3.0171, 2.8859, 2.8134, 2.9723, 2.9197,\n", + " 3.0018, 2.9835, 3.2686, 3.4190, 3.3602, 3.7929, 2.7737, 4.5420, 5.0080,\n", + " 5.2230, 5.5099, 6.0849, 6.0488, 1.1311, 0.6154, 0.6245, 1.1223, 1.6689,\n", + " 1.9671, 1.1966, 1.7906]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5415, 0.1895, 0.3627, 0.3809, 0.5212, 0.2821, -0.0275, -0.3692,\n", + " -0.5332, -0.4056, 0.1467, 1.7336, -1.2322, -0.0675, -0.3020, -0.5422,\n", + " 0.8366, 0.4098, 0.9167, 2.2315, 0.4208, 2.1645, -0.2578, 1.4470,\n", + " 1.1867, -0.3797, -1.9042, -0.6198, -0.6442, -0.9053, -0.1262, 0.2307,\n", + " -0.6816, 0.2752, 1.5200, 0.1087, -0.4493, -0.2653, -0.2296, -0.6689,\n", + " -0.5722, -0.1602, 0.8911]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3213, -0.3468, -0.0816, -0.1847, 0.1543, 0.2715, 0.2558, 0.3844,\n", + " 0.2704, 0.3514, 0.2843, -0.1822, -0.2432, -0.3933, -0.1880, -0.3798,\n", + " -0.2438, -0.0624, -0.1034, -0.1455, -0.1290, -0.0687, -0.0230, -0.0920,\n", + " -0.1237, -0.0256, -0.0633, -0.0709, -0.2717, -0.3139, -0.3017, -0.3455,\n", + " -0.4107, -0.3881, -0.1993, -0.1982, -0.0123, -0.0055, 0.0473, 0.3851,\n", + " 0.4485, 0.4725, 0.3495]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003106820513494313\n", + "Grad encoder.fc1.bias: 0.0015919392462819815\n", + "Grad encoder.encoder.0.weight: 0.00010757040581665933\n", + "Grad encoder.encoder.0.bias: 0.0009331168839707971\n", + "Grad encoder.encoder.2.weight: 8.765038364799693e-05\n", + "Grad encoder.encoder.2.bias: 0.0008510359330102801\n", + "Grad encoder.encoder.4.weight: 0.00027096032863482833\n", + "Grad encoder.encoder.4.bias: 0.002353312913328409\n", + "Grad decoder.fc1.0.weight: 8.729550609132275e-05\n", + "Grad decoder.fc1.0.bias: 0.0010559749789536\n", + "Grad decoder.fc1.2.weight: 0.00011252499098191038\n", + "Grad decoder.fc1.2.bias: 0.001105626579374075\n", + "Grad decoder.fc1.4.weight: 8.774282468948513e-05\n", + "Grad decoder.fc1.4.bias: 0.001020717667415738\n", + "Grad decoder.fc2.weight: 0.00016075496387202293\n", + "Grad decoder.fc2.bias: 0.002005284186452627\n", + "Grad _memory_unit.weight_ih_l0: 3.4681244869716465e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.688004941679537e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.662015660665929e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.08613348857034e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00017709405801724643\n", + "Grad _memory_unit.bias_hh_l1: 9.278819197788835e-05\n", + "Data X Sample: tensor([[2.6850, 2.7805, 2.2254, 2.0728, 2.1924, 2.2261, 3.4002, 4.0090, 4.1033,\n", + " 4.1183, 4.1652, 4.0703, 3.9680, 3.8743, 3.9165, 3.6869, 3.5819, 3.5708,\n", + " 3.5271, 3.4442, 3.4007, 3.3558, 2.9785, 2.8401, 2.7702, 2.7268, 2.6240,\n", + " 2.6674, 2.6713, 2.8919, 2.7751, 2.9070, 3.0999, 2.3480, 3.9807, 4.3148,\n", + " 4.6901, 4.9931, 5.6349, 5.4331, 1.6847, 0.8842, 0.8488, 1.3376, 1.8632,\n", + " 2.1215, 1.4142, 2.0564]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1291, 0.6694, -0.0613, 0.6827, 0.0375, -0.0517, -1.2443, -1.1233,\n", + " -0.4239, -0.4666, -0.0765, 0.1367, 0.2664, -0.3701, 0.3249, -0.3169,\n", + " -0.4518, -3.1872, 0.2702, 0.2410, 0.6948, 0.4218, 0.1188, 0.3539,\n", + " 0.0283, 0.0606, -0.8016, 0.7573, 0.4814, 1.1423, 0.1174, 0.5519,\n", + " 0.7375, 1.0070, -1.3377, 1.2756, 0.6291, -0.8227, 0.5847, 0.1433,\n", + " 0.1413, 0.2049, 0.4927]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2846, -0.3291, -0.0825, -0.2288, 0.0309, 0.1607, 0.2002, 0.3367,\n", + " 0.2256, 0.2588, 0.2355, -0.1676, -0.1721, -0.3449, -0.1704, -0.3066,\n", + " -0.2289, -0.0731, -0.0824, -0.1315, -0.1132, -0.0207, -0.0555, -0.0727,\n", + " -0.0539, 0.0115, -0.0178, -0.0365, -0.1807, -0.2554, -0.2358, -0.3069,\n", + " -0.2898, -0.3154, -0.1372, -0.1504, -0.0144, -0.0017, 0.0319, 0.3391,\n", + " 0.3888, 0.4281, 0.3151]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.001063401228748262\n", + "Grad encoder.fc1.bias: 0.0007092168089002371\n", + "Grad encoder.encoder.0.weight: 0.0001830735127441585\n", + "Grad encoder.encoder.0.bias: 0.0007127902936190367\n", + "Grad encoder.encoder.2.weight: 0.00012154053547419608\n", + "Grad encoder.encoder.2.bias: 0.0007757052080705762\n", + "Grad encoder.encoder.4.weight: 0.0003246666747145355\n", + "Grad encoder.encoder.4.bias: 0.0030181731563061476\n", + "Grad decoder.fc1.0.weight: 9.463761671213433e-05\n", + "Grad decoder.fc1.0.bias: 0.0011592770460993052\n", + "Grad decoder.fc1.2.weight: 9.260978549718857e-05\n", + "Grad decoder.fc1.2.bias: 0.0013502014335244894\n", + "Grad decoder.fc1.4.weight: 7.497199112549424e-05\n", + "Grad decoder.fc1.4.bias: 0.0012447856133803725\n", + "Grad decoder.fc2.weight: 0.00015843204164411873\n", + "Grad decoder.fc2.bias: 0.0025285398587584496\n", + "Grad _memory_unit.weight_ih_l0: 3.8157184462761506e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00016435395809821784\n", + "Grad _memory_unit.bias_hh_l0: 8.428923320025206e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.164124387287302e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00029193219961598516\n", + "Grad _memory_unit.bias_hh_l1: 0.00014981839922256768\n", + "Data X Sample: tensor([[1.1669, 1.5381, 1.6514, 1.7798, 1.8577, 1.8504, 2.0383, 2.0925, 2.0700,\n", + " 2.1421, 2.2016, 2.1792, 2.0994, 2.1021, 2.0453, 2.0787, 1.9513, 2.0833,\n", + " 2.0630, 2.0847, 2.0316, 2.0897, 2.0869, 2.0404, 1.9294, 2.0608, 1.9740,\n", + " 1.9536, 1.7589, 1.8832, 1.9177, 1.9288, 1.8568, 1.2587, 1.8653, 1.7488,\n", + " 1.4808, 1.2695, 1.1156, 1.0100, 1.0213, 0.6452, 0.6144, 1.1051, 1.6134,\n", + " 1.8241, 1.1422, 1.6733]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 2.0829e-01, 2.7954e-01, 5.9361e-02, 3.7304e-01, 6.9334e-01,\n", + " 2.3879e-01, -2.5194e-01, -4.3064e-01, -2.5578e-01, -2.5186e-01,\n", + " -2.2904e-01, 1.2225e+00, -8.0702e-01, 1.0094e-01, -1.5422e-03,\n", + " 1.3979e-01, 5.9426e-01, 1.2744e-01, -2.8039e-01, 7.3483e-01,\n", + " 6.4915e-01, 4.9385e-01, 4.4479e-01, 3.8965e-01, 1.7920e-01,\n", + " 8.2431e-01, -3.9717e-01, -1.7460e+00, 9.5502e-01, 7.6588e-01,\n", + " -1.6226e-01, 8.2771e-01, 2.5166e-01, 2.7472e-01, 3.0507e-01,\n", + " -7.5045e-01, -3.1478e-01, 7.6072e-02, 1.1723e+00, -3.3322e-01,\n", + " -1.7820e-01, -4.5296e-01, -3.5406e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2884, 0.2061, 0.0662, 0.1751, 0.0608, -0.0691, -0.2426, -0.3060,\n", + " -0.1121, -0.1604, -0.1642, 0.1476, 0.1337, 0.2003, 0.1645, 0.2587,\n", + " 0.1193, 0.0609, 0.0158, 0.0228, -0.0031, 0.0310, 0.0163, 0.0280,\n", + " 0.0215, 0.0049, -0.0521, 0.0416, 0.1581, 0.2014, 0.1444, 0.0907,\n", + " 0.1976, 0.2008, 0.1129, 0.1177, 0.0028, 0.0234, 0.0021, -0.1886,\n", + " -0.1770, -0.1647, -0.1776]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003350957704242319\n", + "Grad encoder.fc1.bias: 0.00014539888070430607\n", + "Grad encoder.encoder.0.weight: 9.36163414735347e-05\n", + "Grad encoder.encoder.0.bias: 0.00025294613442383707\n", + "Grad encoder.encoder.2.weight: 7.105983240762725e-05\n", + "Grad encoder.encoder.2.bias: 0.00035398569889366627\n", + "Grad encoder.encoder.4.weight: 0.00018453705706633627\n", + "Grad encoder.encoder.4.bias: 0.001177657162770629\n", + "Grad decoder.fc1.0.weight: 6.224522076081485e-05\n", + "Grad decoder.fc1.0.bias: 0.000494087056722492\n", + "Grad decoder.fc1.2.weight: 8.327554678544402e-05\n", + "Grad decoder.fc1.2.bias: 0.0006976134609431028\n", + "Grad decoder.fc1.4.weight: 6.705532723572105e-05\n", + "Grad decoder.fc1.4.bias: 0.0008420677040703595\n", + "Grad decoder.fc2.weight: 0.0001377663284074515\n", + "Grad decoder.fc2.bias: 0.0023229399230331182\n", + "Grad _memory_unit.weight_ih_l0: 2.6295359930372797e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.698995614191517e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.986381852882914e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.855103038105881e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00012759014498442411\n", + "Grad _memory_unit.bias_hh_l1: 6.707918510073796e-05\n", + "Data X Sample: tensor([[1.2953, 1.5745, 1.9249, 1.9854, 2.0660, 2.0758, 2.1508, 2.8861, 3.8128,\n", + " 4.3379, 4.2477, 4.2183, 4.1855, 3.9016, 3.7299, 3.5679, 3.5158, 3.5515,\n", + " 3.5622, 3.4219, 3.5381, 3.3757, 2.9351, 2.7886, 2.8171, 2.8835, 2.9756,\n", + " 3.1527, 3.0459, 3.0983, 3.3455, 3.2497, 3.7929, 2.8377, 4.4586, 4.9058,\n", + " 5.0696, 5.3853, 5.8440, 5.6544, 1.0882, 0.6293, 0.7235, 1.1998, 1.8433,\n", + " 1.9156, 1.2578, 1.8141]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4964, -0.2649, -0.6213, 0.1774, 1.9626, 1.7489, 0.1417, 0.2411,\n", + " 0.0091, 0.3421, 0.4056, -0.0654, -1.1182, 0.4165, 1.3042, 0.1991,\n", + " -0.4989, 0.6963, 1.6947, -0.0491, 0.4673, 1.5607, 2.4577, -1.3591,\n", + " 0.4273, -0.9947, -0.2033, -1.1494, -0.7045, -0.3635, -0.5179, 0.1146,\n", + " -1.2700, -0.7372, 0.4057, -0.3358, -0.5827, -0.8262, -0.2454, 0.5936,\n", + " 0.5501, 0.2072, 1.2713]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2887, -0.3281, -0.0571, -0.2019, 0.1061, 0.2234, 0.2347, 0.3371,\n", + " 0.2379, 0.2912, 0.2560, -0.1806, -0.2113, -0.3625, -0.1704, -0.3405,\n", + " -0.2375, -0.0506, -0.1001, -0.1346, -0.1069, -0.0442, -0.0344, -0.0768,\n", + " -0.0968, -0.0197, -0.0337, -0.0587, -0.2375, -0.2766, -0.2742, -0.3076,\n", + " -0.3644, -0.3545, -0.1676, -0.1705, -0.0092, 0.0045, 0.0469, 0.3509,\n", + " 0.4098, 0.4251, 0.3211]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001813796116039157\n", + "Grad encoder.fc1.bias: 0.0003915748675353825\n", + "Grad encoder.encoder.0.weight: 5.2959898312110454e-05\n", + "Grad encoder.encoder.0.bias: 0.00023106996377464384\n", + "Grad encoder.encoder.2.weight: 3.281119279563427e-05\n", + "Grad encoder.encoder.2.bias: 0.00021819703397341073\n", + "Grad encoder.encoder.4.weight: 9.061002492671832e-05\n", + "Grad encoder.encoder.4.bias: 0.0006061079911887646\n", + "Grad decoder.fc1.0.weight: 3.5756893339566886e-05\n", + "Grad decoder.fc1.0.bias: 0.0003216551849618554\n", + "Grad decoder.fc1.2.weight: 5.650698585668579e-05\n", + "Grad decoder.fc1.2.bias: 0.0005371677689254284\n", + "Grad decoder.fc1.4.weight: 5.1600829465314746e-05\n", + "Grad decoder.fc1.4.bias: 0.0006186498212628067\n", + "Grad decoder.fc2.weight: 0.00016113043238874525\n", + "Grad decoder.fc2.bias: 0.001739588100463152\n", + "Grad _memory_unit.weight_ih_l0: 1.2132038136769552e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.4778761144261807e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.3685304111277219e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.09772644363693e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.419750570785254e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.421086512389593e-05\n", + "Data X Sample: tensor([[1.4374, 1.6531, 1.8813, 2.0357, 2.1924, 2.0979, 1.9551, 3.3744, 4.1399,\n", + " 4.4674, 4.4539, 4.4228, 4.1567, 4.1579, 3.9140, 3.8059, 3.7564, 3.6405,\n", + " 3.7294, 3.6097, 3.5185, 3.3588, 2.9616, 2.8210, 2.8171, 2.8078, 2.9517,\n", + " 3.0671, 3.0321, 3.0098, 3.1916, 3.2524, 3.6345, 2.7965, 4.6106, 4.9447,\n", + " 5.2662, 5.6265, 6.0469, 6.2105, 1.1454, 0.7567, 0.6871, 1.2716, 1.8592,\n", + " 1.9785, 1.3326, 2.0174]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6164, 0.3062, -0.3219, 0.6612, 0.2745, 0.8476, 0.3342, -0.5203,\n", + " -0.4198, -0.1658, -0.7347, -0.3951, 0.0551, 0.0573, 0.6531, 0.9437,\n", + " -0.5220, -2.8215, -0.2809, -0.0915, -1.5897, 1.4545, 0.0896, -2.2358,\n", + " 0.1049, 0.8298, 0.1371, -0.1114, 0.5713, 0.5868, 0.2856, -0.8199,\n", + " -0.1636, -0.4389, -0.0105, 0.2838, 0.5301, -0.7141, -0.5993, -1.3346,\n", + " -0.5817, 0.1789, -0.6226]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2804, -0.3226, -0.0486, -0.1917, 0.1053, 0.2231, 0.2347, 0.3237,\n", + " 0.2326, 0.2800, 0.2465, -0.1850, -0.2098, -0.3556, -0.1664, -0.3358,\n", + " -0.2364, -0.0459, -0.1102, -0.1313, -0.1007, -0.0428, -0.0376, -0.0739,\n", + " -0.0952, -0.0204, -0.0298, -0.0656, -0.2311, -0.2687, -0.2780, -0.2945,\n", + " -0.3662, -0.3491, -0.1595, -0.1586, -0.0085, 0.0036, 0.0510, 0.3447,\n", + " 0.3984, 0.4126, 0.3062]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00017778364417608827\n", + "Grad encoder.fc1.bias: 0.0008237665751948953\n", + "Grad encoder.encoder.0.weight: 5.539035191759467e-05\n", + "Grad encoder.encoder.0.bias: 0.0005492160562425852\n", + "Grad encoder.encoder.2.weight: 4.227121826261282e-05\n", + "Grad encoder.encoder.2.bias: 0.00042930373456329107\n", + "Grad encoder.encoder.4.weight: 0.0001280815777136013\n", + "Grad encoder.encoder.4.bias: 0.000938091310672462\n", + "Grad decoder.fc1.0.weight: 4.661450657295063e-05\n", + "Grad decoder.fc1.0.bias: 0.00042151467641815543\n", + "Grad decoder.fc1.2.weight: 7.087293488439173e-05\n", + "Grad decoder.fc1.2.bias: 0.0007068664417602122\n", + "Grad decoder.fc1.4.weight: 6.516043504234403e-05\n", + "Grad decoder.fc1.4.bias: 0.0008144676103256643\n", + "Grad decoder.fc2.weight: 0.00016654215869493783\n", + "Grad decoder.fc2.bias: 0.0017233248800039291\n", + "Grad _memory_unit.weight_ih_l0: 1.2495734154072125e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.260898226173595e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.286737046437338e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.915177098358981e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011663405894069001\n", + "Grad _memory_unit.bias_hh_l1: 6.157642201287672e-05\n", + "Data X Sample: tensor([[2.6797, 2.9611, 3.2021, 3.3476, 3.1758, 3.5918, 3.8116, 3.8245, 3.8665,\n", + " 4.0472, 4.0225, 4.0878, 3.8904, 3.7789, 3.6088, 3.4449, 3.4482, 3.5264,\n", + " 3.5126, 3.3475, 3.3344, 3.1169, 2.9809, 2.8573, 2.7702, 2.7712, 2.7865,\n", + " 2.7816, 2.8239, 2.8657, 2.8486, 2.9512, 3.0427, 2.2359, 3.7012, 4.0375,\n", + " 4.3204, 4.7439, 5.2926, 5.2288, 1.9472, 1.2088, 1.1277, 1.9490, 2.9256,\n", + " 3.2194, 1.9989, 2.9322]], device='cuda:0')\n", + "Data Y Sample: tensor([[-2.1402e-04, 1.3359e-01, -1.3233e+00, -4.6811e-01, -2.9803e-02,\n", + " -2.5961e-01, 8.0274e-02, 3.5167e-02, 3.8473e-03, -3.5659e-02,\n", + " 1.2019e-01, -1.6753e-01, -6.4379e-01, 1.3455e-01, 1.7192e-01,\n", + " 5.4490e-01, -6.9590e-01, 2.1851e-01, 1.0974e-01, 4.1917e-01,\n", + " 4.2087e-01, -2.1937e+00, 1.4400e+00, -5.9189e-01, 3.2500e-01,\n", + " 6.3114e-01, 3.0376e-01, -1.2367e-01, 1.4645e-02, -1.8718e-01,\n", + " -4.9816e-01, -1.5067e-01, 4.4952e-01, 6.6273e-01, -5.0189e-01,\n", + " -8.1046e-02, -5.8274e-01, 8.6315e-01, 0.0000e+00, -1.7137e-01,\n", + " -2.7304e-02, -3.7286e-01, 2.9364e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3857, -0.4777, -0.1571, -0.4639, -0.2346, -0.0031, 0.1046, 0.3571,\n", + " 0.1867, 0.2182, 0.2489, -0.1786, -0.1731, -0.3650, -0.1373, -0.3338,\n", + " -0.3638, -0.1989, -0.1395, -0.1741, -0.1444, -0.0019, -0.1094, -0.1234,\n", + " 0.0572, -0.0095, 0.1807, 0.0167, -0.0882, -0.1943, -0.1602, -0.3035,\n", + " -0.1307, -0.2911, -0.1206, -0.1298, -0.0170, -0.0106, -0.0089, 0.4529,\n", + " 0.4288, 0.4300, 0.3443]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002997295814566314\n", + "Grad encoder.fc1.bias: 0.00042959238635376096\n", + "Grad encoder.encoder.0.weight: 6.141103222034872e-05\n", + "Grad encoder.encoder.0.bias: 0.00034976733149960637\n", + "Grad encoder.encoder.2.weight: 3.924595512216911e-05\n", + "Grad encoder.encoder.2.bias: 0.00039920094422996044\n", + "Grad encoder.encoder.4.weight: 0.0001077658889698796\n", + "Grad encoder.encoder.4.bias: 0.0014137588441371918\n", + "Grad decoder.fc1.0.weight: 4.509317295742221e-05\n", + "Grad decoder.fc1.0.bias: 0.0006291613099165261\n", + "Grad decoder.fc1.2.weight: 7.11731263436377e-05\n", + "Grad decoder.fc1.2.bias: 0.0009619033080525696\n", + "Grad decoder.fc1.4.weight: 6.18721533101052e-05\n", + "Grad decoder.fc1.4.bias: 0.001040775328874588\n", + "Grad decoder.fc2.weight: 0.0001296094706049189\n", + "Grad decoder.fc2.bias: 0.0023333176504820585\n", + "Grad _memory_unit.weight_ih_l0: 1.2776406947523355e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.443250458687544e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.3326996344840154e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.7236180762411095e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011274334246991202\n", + "Grad _memory_unit.bias_hh_l1: 5.746787792304531e-05\n", + "Data X Sample: tensor([[2.7062, 2.9553, 3.2261, 3.3323, 3.5959, 3.6257, 3.7392, 3.8117, 3.8177,\n", + " 3.9177, 3.9146, 3.9729, 3.7594, 3.8470, 3.5634, 3.4380, 3.4765, 3.4915,\n", + " 3.4548, 3.3270, 3.3320, 3.0833, 2.9134, 2.7810, 2.8246, 2.7791, 2.7492,\n", + " 2.9488, 2.7962, 2.8264, 2.8696, 2.8517, 3.0537, 2.1329, 3.6081, 4.0035,\n", + " 4.2319, 4.6220, 5.2862, 5.1125, 1.8756, 1.1530, 1.1661, 2.0121, 2.8383,\n", + " 3.2823, 2.0669, 3.1277]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5513, 0.1236, 0.2744, 0.9986, 0.1538, -1.0133, -0.1621, 0.9879,\n", + " -0.6270, -0.4736, -0.5664, -0.1500, 0.0737, -1.5324, -0.8617, -0.6261,\n", + " 0.3675, -0.2792, 0.2333, -0.5273, -0.5063, -0.3823, -0.5409, -1.0358,\n", + " -0.1034, 0.0987, 0.6975, 0.4939, -1.4700, 0.9901, 0.4810, 0.3358,\n", + " -0.4102, 1.3192, -1.9744, -0.5518, -0.6417, 0.5417, 0.2870, -0.9228,\n", + " 0.2581, 0.0584, -0.0337]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3946, -0.4876, -0.1560, -0.4817, -0.2466, -0.0103, 0.0980, 0.3625,\n", + " 0.1874, 0.2184, 0.2509, -0.1821, -0.1742, -0.3660, -0.1349, -0.3398,\n", + " -0.3812, -0.2037, -0.1388, -0.1754, -0.1429, 0.0012, -0.1110, -0.1278,\n", + " 0.0612, -0.0166, 0.1944, 0.0193, -0.0876, -0.1966, -0.1602, -0.2973,\n", + " -0.1292, -0.2918, -0.1280, -0.1313, -0.0170, -0.0021, -0.0067, 0.4585,\n", + " 0.4387, 0.4307, 0.3528]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00031019566813483834\n", + "Grad encoder.fc1.bias: 0.00026609908672980964\n", + "Grad encoder.encoder.0.weight: 5.6670429330552e-05\n", + "Grad encoder.encoder.0.bias: 0.00024959209258668125\n", + "Grad encoder.encoder.2.weight: 3.2520078093511984e-05\n", + "Grad encoder.encoder.2.bias: 0.00030939813586883247\n", + "Grad encoder.encoder.4.weight: 6.319945532595739e-05\n", + "Grad encoder.encoder.4.bias: 0.000742316129617393\n", + "Grad decoder.fc1.0.weight: 3.001513505296316e-05\n", + "Grad decoder.fc1.0.bias: 0.0003406951727811247\n", + "Grad decoder.fc1.2.weight: 4.2238363676005974e-05\n", + "Grad decoder.fc1.2.bias: 0.0005443727131932974\n", + "Grad decoder.fc1.4.weight: 3.6862478737020865e-05\n", + "Grad decoder.fc1.4.bias: 0.0005504140863195062\n", + "Grad decoder.fc2.weight: 0.00012393208453431726\n", + "Grad decoder.fc2.bias: 0.0020506761502474546\n", + "Grad _memory_unit.weight_ih_l0: 5.509009952220367e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.926488195953425e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.5569730749120936e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.9168538731028093e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.11508619133383e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.770465627894737e-05\n", + "Data X Sample: tensor([[1.3939, 1.3662, 1.5823, 1.8870, 1.9499, 1.9020, 2.0583, 2.1550, 3.6005,\n", + " 4.0662, 4.0669, 4.2007, 3.9569, 3.6535, 3.7274, 3.6897, 3.6432, 3.5051,\n", + " 3.4837, 3.5242, 3.5111, 3.2180, 2.8050, 2.8268, 2.8040, 2.9776, 2.9597,\n", + " 3.0263, 3.2298, 3.1147, 3.4050, 3.2856, 3.6983, 2.7576, 4.4930, 4.7283,\n", + " 5.0067, 5.4807, 5.8757, 5.8587, 0.9307, 0.5676, 0.5679, 1.0448, 1.6372,\n", + " 1.8070, 1.2306, 1.7906]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1565, 0.2567, 0.2910, 1.0399, 0.6048, 1.0783, -0.3379, -0.3595,\n", + " -0.9336, -0.2844, -0.3344, -0.0232, -0.1345, 0.2242, 0.2851, 0.4118,\n", + " 0.6133, -0.3948, -1.4459, -1.1160, -1.4354, -1.2588, -1.7747, -2.1913,\n", + " -1.4512, -0.8195, -0.1892, -0.0066, 0.3646, 0.0028, 0.2699, -0.1960,\n", + " 0.1028, -0.7079, 0.6197, -0.1317, -0.1007, -0.5444, -0.4294, -0.7535,\n", + " -1.3271, 0.2492, 1.9232]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2256, -0.2686, -0.0171, -0.1593, 0.0876, 0.1942, 0.2061, 0.2579,\n", + " 0.1925, 0.2244, 0.2015, -0.1704, -0.1773, -0.2927, -0.1378, -0.2896,\n", + " -0.2149, -0.0265, -0.1096, -0.1149, -0.0735, -0.0234, -0.0392, -0.0615,\n", + " -0.0964, -0.0212, -0.0222, -0.0698, -0.1982, -0.2228, -0.2548, -0.2334,\n", + " -0.3300, -0.3007, -0.1292, -0.1291, -0.0023, 0.0036, 0.0525, 0.2907,\n", + " 0.3422, 0.3408, 0.2479]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00021798517263960093\n", + "Grad encoder.fc1.bias: 0.001435853773728013\n", + "Grad encoder.encoder.0.weight: 8.280410838779062e-05\n", + "Grad encoder.encoder.0.bias: 0.0009778449311852455\n", + "Grad encoder.encoder.2.weight: 4.481001815292984e-05\n", + "Grad encoder.encoder.2.bias: 0.0006178158801048994\n", + "Grad encoder.encoder.4.weight: 0.00010615594510454684\n", + "Grad encoder.encoder.4.bias: 0.0008411779999732971\n", + "Grad decoder.fc1.0.weight: 3.8212689105421305e-05\n", + "Grad decoder.fc1.0.bias: 0.00035708327777683735\n", + "Grad decoder.fc1.2.weight: 4.737614654004574e-05\n", + "Grad decoder.fc1.2.bias: 0.0004253553634043783\n", + "Grad decoder.fc1.4.weight: 4.579284359351732e-05\n", + "Grad decoder.fc1.4.bias: 0.000579748535528779\n", + "Grad decoder.fc2.weight: 0.00014109247422311455\n", + "Grad decoder.fc2.bias: 0.0017435969784855843\n", + "Grad _memory_unit.weight_ih_l0: 1.2170667105237953e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.3512496378971264e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.7588641387410462e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.238271114649251e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.797917689662427e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.6612702135462314e-05\n", + "Data X Sample: tensor([[1.5562, 1.8716, 1.8783, 2.0860, 2.0797, 2.2158, 2.2756, 2.4119, 2.3190,\n", + " 2.3601, 2.3253, 2.4636, 2.3946, 2.3066, 2.2975, 2.3125, 2.2815, 2.3831,\n", + " 2.3810, 2.4325, 2.4757, 2.5183, 2.5399, 2.5309, 2.5750, 2.6746, 2.5867,\n", + " 2.6266, 2.3209, 2.5022, 2.4322, 2.4704, 2.1164, 1.3960, 1.8923, 1.7196,\n", + " 1.6636, 1.5027, 1.6100, 1.5633, 1.2361, 0.7229, 0.6791, 1.3376, 1.8790,\n", + " 2.1672, 1.4482, 2.0174]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3007, 1.0060, 1.5937, 0.3526, -0.1791, -0.3647, -0.4113, -0.2691,\n", + " -0.4915, -0.4010, -0.4459, 0.4420, 0.4867, -0.0718, -0.4222, 1.5629,\n", + " 0.2953, 0.3107, 0.2466, -0.5403, -0.0717, -4.6345, -1.8246, 0.8299,\n", + " 0.9647, 1.2191, -1.5726, -0.2981, -0.6471, -1.2172, -0.4795, -1.3725,\n", + " 0.1281, 1.0625, 1.0995, 0.1781, -0.6001, -0.0459, 0.8163, -0.3378,\n", + " -0.3434, -0.4993, 0.2185]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4124, 0.2688, 0.0936, 0.2756, 0.0957, -0.0888, -0.3399, -0.4494,\n", + " -0.1436, -0.2383, -0.2223, 0.2447, 0.2230, 0.2868, 0.2292, 0.3267,\n", + " 0.1834, 0.1158, 0.0285, 0.0303, -0.0107, 0.0371, 0.0285, 0.0662,\n", + " 0.0370, 0.0203, -0.0514, 0.0443, 0.2424, 0.3027, 0.2074, 0.1535,\n", + " 0.2908, 0.2904, 0.1662, 0.1677, -0.0149, 0.0343, 0.0058, -0.2780,\n", + " -0.2739, -0.2608, -0.2554]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00027742719976231456\n", + "Grad encoder.fc1.bias: 0.0012885215692222118\n", + "Grad encoder.encoder.0.weight: 6.066633068257943e-05\n", + "Grad encoder.encoder.0.bias: 0.0007449251133948565\n", + "Grad encoder.encoder.2.weight: 4.419228935148567e-05\n", + "Grad encoder.encoder.2.bias: 0.0005240094615146518\n", + "Grad encoder.encoder.4.weight: 0.00012295341002754867\n", + "Grad encoder.encoder.4.bias: 0.0007399512687698007\n", + "Grad decoder.fc1.0.weight: 4.7391524276463315e-05\n", + "Grad decoder.fc1.0.bias: 0.00043692064355127513\n", + "Grad decoder.fc1.2.weight: 6.703491817461327e-05\n", + "Grad decoder.fc1.2.bias: 0.0006569053512066603\n", + "Grad decoder.fc1.4.weight: 6.041668530087918e-05\n", + "Grad decoder.fc1.4.bias: 0.0006121838232502341\n", + "Grad decoder.fc2.weight: 0.00016714769299142063\n", + "Grad decoder.fc2.bias: 0.0017948998138308525\n", + "Grad _memory_unit.weight_ih_l0: 1.671180871198885e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.347234011627734e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.4174805477960035e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.8475947045953944e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00013989568105898798\n", + "Grad _memory_unit.bias_hh_l1: 7.549025758635253e-05\n", + "Data X Sample: tensor([[1.7026, 1.8847, 2.0556, 2.1363, 2.2709, 2.2850, 2.3002, 2.4574, 2.3897,\n", + " 2.4991, 2.4744, 2.5415, 2.4856, 2.3502, 2.3277, 2.3344, 2.3287, 2.4296,\n", + " 2.4305, 2.4641, 2.4683, 2.6056, 2.5544, 2.5920, 2.5525, 2.5779, 2.5681,\n", + " 2.5695, 2.3799, 2.4629, 2.4637, 2.4234, 1.9558, 1.3296, 1.8065, 1.7026,\n", + " 1.6046, 1.5451, 1.5909, 1.4101, 1.3411, 0.7707, 0.8003, 1.3634, 1.9543,\n", + " 2.1215, 1.4142, 1.9783]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4012, 0.3771, 0.7364, -1.1649, -0.0494, -0.5097, -0.7154, -0.8409,\n", + " -0.8884, -1.2899, -0.7130, 0.3739, 1.4425, -5.3018, 1.0405, 0.7067,\n", + " 0.8307, -0.3004, 1.0075, -0.9967, 1.1236, 0.4238, 0.8638, -0.1485,\n", + " -0.0628, 1.4791, 0.0511, 1.2497, 0.7535, 0.5980, 1.4825, 1.5420,\n", + " 0.8540, 0.3485, 0.8275, 0.6482, 1.0121, -0.0140, 0.7332, -1.3925,\n", + " -1.2856, -0.9136, 0.0560]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4162, 0.2696, 0.1000, 0.2841, 0.0968, -0.0847, -0.3430, -0.4538,\n", + " -0.1419, -0.2377, -0.2189, 0.2526, 0.2282, 0.2837, 0.2254, 0.3237,\n", + " 0.1845, 0.1231, 0.0314, 0.0290, -0.0076, 0.0366, 0.0243, 0.0719,\n", + " 0.0409, 0.0249, -0.0518, 0.0397, 0.2440, 0.3018, 0.2087, 0.1522,\n", + " 0.2920, 0.2919, 0.1692, 0.1671, -0.0190, 0.0380, 0.0043, -0.2795,\n", + " -0.2752, -0.2666, -0.2582]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00039034115616232157\n", + "Grad encoder.fc1.bias: 0.0023244672920554876\n", + "Grad encoder.encoder.0.weight: 0.00010829287202795967\n", + "Grad encoder.encoder.0.bias: 0.0014833203749731183\n", + "Grad encoder.encoder.2.weight: 6.763765850337222e-05\n", + "Grad encoder.encoder.2.bias: 0.0009379273978993297\n", + "Grad encoder.encoder.4.weight: 0.00015752406034152955\n", + "Grad encoder.encoder.4.bias: 0.0015362867852672935\n", + "Grad decoder.fc1.0.weight: 5.66569906368386e-05\n", + "Grad decoder.fc1.0.bias: 0.000574542791582644\n", + "Grad decoder.fc1.2.weight: 6.960849714232609e-05\n", + "Grad decoder.fc1.2.bias: 0.0006002068403176963\n", + "Grad decoder.fc1.4.weight: 5.396924098022282e-05\n", + "Grad decoder.fc1.4.bias: 0.0004975022748112679\n", + "Grad decoder.fc2.weight: 0.00014386768452823162\n", + "Grad decoder.fc2.bias: 0.0016006220830604434\n", + "Grad _memory_unit.weight_ih_l0: 1.5149385035329033e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.558840974932536e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.926681867800653e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.269515092251822e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00018841306155081838\n", + "Grad _memory_unit.bias_hh_l1: 9.925508493324742e-05\n", + "Data X Sample: tensor([[ 0.0127, 0.0117, 0.0120, 0.0109, 0.0171, 0.0309, 0.0216, 0.0142,\n", + " 0.0293, 0.0363, 0.0476, 0.0136, 0.0244, 0.0354, 0.0328, 0.0191,\n", + " -0.1289, -0.1451, -0.1797, -0.1655, -0.1963, -0.1148, -0.1759, -0.1622,\n", + " -0.1464, -0.2873, -0.2717, -0.4813, -0.0451, -0.0983, -0.0910, -0.0525,\n", + " -0.0176, -0.0893, -0.0025, 0.0268, 0.0039, 0.0000, -0.0570, -0.0142,\n", + " -0.0191, -0.0020, -0.0141, -0.0057, 0.0159, -0.0114, -0.0068, -0.0156]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.8755, -0.7615, -1.1150, 0.1723, 3.7086, 0.5625, -0.5821, -1.1973,\n", + " 0.8667, 0.8933, 0.9612, 1.5055, 2.0814, 1.2623, 0.6746, 0.9561,\n", + " 0.3962, 0.0639, -0.5087, -1.4273, 0.5777, 0.5431, 0.6052, -0.0383,\n", + " -0.2078, 0.6599, 1.0475, 0.6257, 1.0577, 0.9892, -0.2713, -0.9826,\n", + " 0.6863, -0.9271, 0.8272, 0.3490, -0.0333, 0.8274, -0.6541, -0.6387,\n", + " 0.3465, 0.3602, 0.2925]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 6.0882e-01, 3.7565e-01, 1.2805e-01, 3.9683e-01, 3.4916e-04,\n", + " -1.8607e-01, -5.7781e-01, -7.1395e-01, -2.9968e-01, -3.9940e-01,\n", + " -3.2073e-01, 3.7340e-01, 3.1930e-01, 4.0116e-01, 2.6585e-01,\n", + " 3.9217e-01, 3.1979e-01, 1.8025e-01, 4.9158e-02, 5.1118e-02,\n", + " -2.8867e-02, 1.6209e-03, 3.7031e-02, 1.3527e-01, 4.2728e-02,\n", + " 3.1536e-02, -2.0372e-02, 1.6224e-01, 4.5867e-01, 5.2298e-01,\n", + " 3.9325e-01, 2.8655e-01, 4.4814e-01, 4.3493e-01, 2.4851e-01,\n", + " 1.8950e-01, -3.5072e-02, 3.4270e-02, 2.1449e-02, -4.6551e-01,\n", + " -4.4883e-01, -3.9963e-01, -3.0643e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003735775826498866\n", + "Grad encoder.fc1.bias: 0.000569190364331007\n", + "Grad encoder.encoder.0.weight: 9.676060290075839e-05\n", + "Grad encoder.encoder.0.bias: 0.00045516571844927967\n", + "Grad encoder.encoder.2.weight: 5.465713547891937e-05\n", + "Grad encoder.encoder.2.bias: 0.0003259539371356368\n", + "Grad encoder.encoder.4.weight: 0.00011910797184100375\n", + "Grad encoder.encoder.4.bias: 0.0010346374474465847\n", + "Grad decoder.fc1.0.weight: 4.526169504970312e-05\n", + "Grad decoder.fc1.0.bias: 0.0004191711195744574\n", + "Grad decoder.fc1.2.weight: 5.166833580005914e-05\n", + "Grad decoder.fc1.2.bias: 0.0005644322955049574\n", + "Grad decoder.fc1.4.weight: 4.5444532588589936e-05\n", + "Grad decoder.fc1.4.bias: 0.0006499442970380187\n", + "Grad decoder.fc2.weight: 0.00014840386575087905\n", + "Grad decoder.fc2.bias: 0.002347469562664628\n", + "Grad _memory_unit.weight_ih_l0: 9.04082571651088e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.944976171827875e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.684776518435683e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.9261029744229745e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.883207192411646e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.780357994604856e-05\n", + "Data X Sample: tensor([[2.5640, 3.0805, 3.1780, 3.4700, 3.5481, 3.5388, 3.7962, 3.8699, 3.9080,\n", + " 3.9240, 3.8512, 3.8814, 3.7949, 3.6589, 3.5962, 3.4613, 3.3539, 3.4645,\n", + " 3.4052, 3.3847, 3.2854, 3.1965, 2.9134, 2.7561, 2.7552, 2.7242, 2.7492,\n", + " 2.7694, 2.7337, 2.7544, 2.8906, 2.8739, 2.9063, 2.1054, 3.6204, 3.9986,\n", + " 4.2456, 4.5690, 5.1278, 5.0728, 1.8995, 1.0714, 1.1378, 2.0896, 2.9493,\n", + " 3.3166, 2.2165, 3.1199]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4605, -0.2994, 0.3895, 0.0726, 0.0575, 0.6105, 0.1231, 0.0758,\n", + " 0.1178, -0.0045, 0.1591, -0.0350, -0.7411, -0.5724, -0.8031, -0.3801,\n", + " -0.0420, -0.6117, 0.4663, -0.7052, 0.7183, -2.8068, 1.1359, -0.0577,\n", + " 0.7521, 0.1356, 0.2393, -0.4797, -0.7371, -0.0697, 0.1144, 0.4446,\n", + " -0.1416, -0.5851, -0.2070, -0.6211, 0.1137, -0.6411, -0.1229, 0.0180,\n", + " 0.2827, -0.3193, 0.7817]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3413, -0.4204, -0.1099, -0.4204, -0.2317, -0.0151, 0.0869, 0.3258,\n", + " 0.1790, 0.1951, 0.2231, -0.1703, -0.1376, -0.3078, -0.1324, -0.3118,\n", + " -0.3722, -0.1741, -0.1053, -0.1679, -0.1083, 0.0212, -0.0912, -0.1186,\n", + " 0.0346, -0.0246, 0.1627, 0.0050, -0.0838, -0.1754, -0.1534, -0.2348,\n", + " -0.1328, -0.2527, -0.1422, -0.1372, -0.0134, 0.0270, -0.0010, 0.3967,\n", + " 0.4144, 0.3692, 0.3129]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003108908422291279\n", + "Grad encoder.fc1.bias: 0.0013282820582389832\n", + "Grad encoder.encoder.0.weight: 8.108666224870831e-05\n", + "Grad encoder.encoder.0.bias: 0.001071844482794404\n", + "Grad encoder.encoder.2.weight: 5.485278234118596e-05\n", + "Grad encoder.encoder.2.bias: 0.0008253740379586816\n", + "Grad encoder.encoder.4.weight: 0.00011774049198720604\n", + "Grad encoder.encoder.4.bias: 0.0016641592374071479\n", + "Grad decoder.fc1.0.weight: 5.7993234804598615e-05\n", + "Grad decoder.fc1.0.bias: 0.0006781074916943908\n", + "Grad decoder.fc1.2.weight: 8.769780106376857e-05\n", + "Grad decoder.fc1.2.bias: 0.000952785077970475\n", + "Grad decoder.fc1.4.weight: 7.098284550011158e-05\n", + "Grad decoder.fc1.4.bias: 0.0008419315563514829\n", + "Grad decoder.fc2.weight: 0.00019033851276617497\n", + "Grad decoder.fc2.bias: 0.0019323901506140828\n", + "Grad _memory_unit.weight_ih_l0: 1.743545180943329e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.603381477063522e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.078447793493979e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.547085599275306e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00019539956701919436\n", + "Grad _memory_unit.bias_hh_l1: 0.00010441946506034583\n", + "Data X Sample: tensor([[2.8176, 3.1664, 3.7235, 3.9598, 3.9288, 4.1399, 4.3539, 4.2759, 4.2815,\n", + " 4.3379, 4.4190, 4.2144, 4.1190, 3.9452, 3.8812, 3.6869, 3.6919, 3.6192,\n", + " 3.6654, 3.7324, 3.5479, 3.5257, 3.1110, 2.7905, 2.7158, 2.6955, 2.6347,\n", + " 2.7286, 2.8690, 2.9673, 2.9676, 3.0424, 3.4189, 2.5540, 4.2086, 4.7185,\n", + " 4.9083, 5.5178, 6.1356, 5.9523, 2.1954, 1.2128, 1.3379, 2.3221, 3.2506,\n", + " 3.6940, 2.4680, 3.5968]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0396, 0.0376, -0.7580, -0.0760, 0.0918, 0.3058, -0.3033, 0.3292,\n", + " -0.0406, 0.3367, 0.0419, 1.7234, -0.7247, 1.0926, -0.0758, 0.5475,\n", + " -0.8522, -0.8899, -0.2223, 1.0768, -0.7091, 0.0641, -0.4691, -1.5674,\n", + " 2.2043, 0.0706, 0.5285, -0.3518, 0.6142, -0.5149, -0.0221, -0.4786,\n", + " 2.3936, 0.2183, 0.2772, -0.6399, 1.0570, 0.3924, -0.4508, 0.3048,\n", + " 0.2459, 0.1226, 0.3891]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3934, -0.4972, -0.1367, -0.4849, -0.2720, -0.0197, 0.1127, 0.3788,\n", + " 0.2026, 0.2103, 0.2706, -0.2044, -0.1644, -0.3637, -0.1605, -0.3651,\n", + " -0.4245, -0.2081, -0.1337, -0.1896, -0.1271, 0.0208, -0.1054, -0.1242,\n", + " 0.0561, -0.0250, 0.1931, -0.0101, -0.1003, -0.1956, -0.1828, -0.2649,\n", + " -0.1490, -0.3011, -0.1736, -0.1513, -0.0237, 0.0213, 0.0092, 0.4641,\n", + " 0.4658, 0.4236, 0.3525]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.001691319397650659\n", + "Grad encoder.fc1.bias: 0.0009639090858399868\n", + "Grad encoder.encoder.0.weight: 0.00026722776237875223\n", + "Grad encoder.encoder.0.bias: 0.0009388571488671005\n", + "Grad encoder.encoder.2.weight: 0.00015049426292534918\n", + "Grad encoder.encoder.2.bias: 0.0009505684720352292\n", + "Grad encoder.encoder.4.weight: 0.0002561969158705324\n", + "Grad encoder.encoder.4.bias: 0.0030114620458334684\n", + "Grad decoder.fc1.0.weight: 8.17877589724958e-05\n", + "Grad decoder.fc1.0.bias: 0.0010143857216462493\n", + "Grad decoder.fc1.2.weight: 5.994734601699747e-05\n", + "Grad decoder.fc1.2.bias: 0.0008479437092319131\n", + "Grad decoder.fc1.4.weight: 4.926338078803383e-05\n", + "Grad decoder.fc1.4.bias: 0.0007473372388631105\n", + "Grad decoder.fc2.weight: 0.0001263034500880167\n", + "Grad decoder.fc2.bias: 0.0012649211566895247\n", + "Grad _memory_unit.weight_ih_l0: 2.675472387636546e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00015051724039949477\n", + "Grad _memory_unit.bias_hh_l0: 7.615143113071099e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.764828635321464e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002464231802150607\n", + "Grad _memory_unit.bias_hh_l1: 0.0001278051786357537\n", + "Data X Sample: tensor([[1.4417, 1.4128, 1.5943, 1.7798, 1.8218, 2.0994, 2.1954, 2.0258, 3.5736,\n", + " 4.2921, 4.2858, 4.3156, 4.1700, 4.0297, 4.0477, 3.7457, 3.7580, 3.6095,\n", + " 3.6427, 3.5465, 3.4645, 3.3879, 2.9496, 2.7943, 2.8903, 2.8966, 2.9836,\n", + " 2.9325, 3.0945, 3.1278, 3.2406, 3.3795, 3.8105, 2.7691, 4.6792, 5.1928,\n", + " 5.1915, 5.4940, 6.0976, 6.0034, 0.9832, 0.5676, 0.5719, 1.0965, 1.5579,\n", + " 1.7612, 1.2238, 1.7280]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1643, 0.4040, -0.9346, 0.4747, 0.8409, 0.5467, 1.0722, -0.2885,\n", + " 0.1631, -0.0331, 0.2501, -0.0203, 0.2366, 0.4475, -1.0594, -0.0343,\n", + " -0.0584, 0.2407, 0.5164, 0.1060, 0.3371, 1.7088, 0.0566, 0.2472,\n", + " -0.5168, 0.5098, 0.3200, -4.0733, -0.9570, -0.0832, 0.2249, 0.4644,\n", + " 3.5113, 0.5645, 0.8421, -0.8495, 0.1697, -0.7141, -0.2296, -1.1618,\n", + " -0.1606, -0.7812, 0.5014]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1875, -0.2496, -0.0106, -0.1173, 0.0586, 0.1651, 0.1863, 0.2381,\n", + " 0.1806, 0.1812, 0.1691, -0.1794, -0.1342, -0.2632, -0.1396, -0.2657,\n", + " -0.2092, -0.0329, -0.1010, -0.1140, -0.0515, 0.0025, -0.0545, -0.0477,\n", + " -0.0695, -0.0043, -0.0428, -0.0957, -0.1779, -0.1962, -0.2344, -0.1906,\n", + " -0.3008, -0.2627, -0.1156, -0.1031, -0.0089, -0.0033, 0.0619, 0.2556,\n", + " 0.3069, 0.3007, 0.2023]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0008933219942264259\n", + "Grad encoder.fc1.bias: 0.0012729682493954897\n", + "Grad encoder.encoder.0.weight: 0.0001674978411756456\n", + "Grad encoder.encoder.0.bias: 0.0009785445872694254\n", + "Grad encoder.encoder.2.weight: 9.014878742164001e-05\n", + "Grad encoder.encoder.2.bias: 0.0007724583265371621\n", + "Grad encoder.encoder.4.weight: 0.0001614188659004867\n", + "Grad encoder.encoder.4.bias: 0.001051827217452228\n", + "Grad decoder.fc1.0.weight: 5.907170634600334e-05\n", + "Grad decoder.fc1.0.bias: 0.0005268839886412024\n", + "Grad decoder.fc1.2.weight: 5.843813414685428e-05\n", + "Grad decoder.fc1.2.bias: 0.0006707609863951802\n", + "Grad decoder.fc1.4.weight: 4.648473986890167e-05\n", + "Grad decoder.fc1.4.bias: 0.0005018424708396196\n", + "Grad decoder.fc2.weight: 0.00013924675295129418\n", + "Grad decoder.fc2.bias: 0.001764559419825673\n", + "Grad _memory_unit.weight_ih_l0: 2.047890484391246e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.203586286166683e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.384481740591582e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.112712748697959e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010929739073617384\n", + "Grad _memory_unit.bias_hh_l1: 5.9665013395715505e-05\n", + "Data X Sample: tensor([[1.6040, 1.8425, 2.0526, 2.0860, 2.1582, 2.3469, 2.3372, 2.3608, 2.3605,\n", + " 2.4896, 2.4807, 2.4324, 2.4257, 2.3748, 2.2975, 2.2865, 2.2532, 2.4122,\n", + " 2.3748, 2.3581, 2.4217, 2.4510, 2.4845, 2.4641, 2.4155, 2.4996, 2.4588,\n", + " 2.4961, 2.0815, 2.1190, 1.9527, 1.9675, 1.6500, 1.0664, 1.5075, 1.4545,\n", + " 1.4277, 1.3781, 1.3691, 1.3363, 1.2170, 0.7667, 0.7437, 1.3433, 1.9504,\n", + " 2.0528, 1.3938, 1.9079]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1269, 0.0320, -0.2689, 0.3747, -0.2730, 0.0455, -0.2142, -0.0796,\n", + " 0.6805, -0.0815, -0.0975, 0.1864, 0.0563, 0.2211, -0.0369, 0.5616,\n", + " 0.5509, 0.5787, -0.5401, -0.1202, -0.1718, -1.4747, 0.4220, -1.7607,\n", + " -1.3621, -0.7397, 0.3567, 2.2018, 0.0302, -0.5511, -0.0059, 0.0257,\n", + " 0.0493, -0.1230, 3.5093, 0.0743, 0.7015, 0.8238, -0.7678, -0.0967,\n", + " -0.1575, -0.1056, -0.5350]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3995, 0.2537, 0.1085, 0.2825, 0.0876, -0.0782, -0.3300, -0.4333,\n", + " -0.1345, -0.2191, -0.1923, 0.2529, 0.2234, 0.2443, 0.1983, 0.2843,\n", + " 0.1777, 0.1251, 0.0421, 0.0283, 0.0131, 0.0254, 0.0130, 0.0830,\n", + " 0.0494, 0.0535, -0.0461, 0.0268, 0.2303, 0.2836, 0.2032, 0.1349,\n", + " 0.2684, 0.2580, 0.1524, 0.1473, -0.0373, 0.0443, -0.0086, -0.2617,\n", + " -0.2513, -0.2526, -0.2396]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007964281248860061\n", + "Grad encoder.fc1.bias: 0.0004485864774324\n", + "Grad encoder.encoder.0.weight: 0.00013822066830471158\n", + "Grad encoder.encoder.0.bias: 0.0005944907898083329\n", + "Grad encoder.encoder.2.weight: 7.35587818780914e-05\n", + "Grad encoder.encoder.2.bias: 0.0005798768252134323\n", + "Grad encoder.encoder.4.weight: 0.00014457151701208204\n", + "Grad encoder.encoder.4.bias: 0.0014962702989578247\n", + "Grad decoder.fc1.0.weight: 5.072193016530946e-05\n", + "Grad decoder.fc1.0.bias: 0.0005397893255576491\n", + "Grad decoder.fc1.2.weight: 5.1837851060554385e-05\n", + "Grad decoder.fc1.2.bias: 0.0006648975540883839\n", + "Grad decoder.fc1.4.weight: 5.633902037516236e-05\n", + "Grad decoder.fc1.4.bias: 0.0007179308449849486\n", + "Grad decoder.fc2.weight: 0.00014702709449920803\n", + "Grad decoder.fc2.bias: 0.0019798572175204754\n", + "Grad _memory_unit.weight_ih_l0: 1.735403566271998e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.03013497008942e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.57313253718894e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.527626050636172e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001564252161188051\n", + "Grad _memory_unit.bias_hh_l1: 8.178799180313945e-05\n", + "Data X Sample: tensor([[1.5934, 1.7580, 1.8933, 1.9635, 2.0865, 2.2011, 2.0707, 2.8108, 4.1326,\n", + " 4.3853, 4.2128, 4.4364, 4.1500, 4.1579, 3.7677, 3.5926, 3.6180, 3.6927,\n", + " 3.5704, 3.5948, 3.4718, 3.2899, 2.9014, 2.7924, 2.9147, 2.9541, 3.0316,\n", + " 3.0426, 3.2749, 3.2129, 3.3420, 3.4293, 3.9513, 2.8675, 4.5861, 4.7574,\n", + " 5.0342, 5.5019, 5.9391, 5.8984, 1.2838, 0.7169, 0.6993, 1.1969, 1.7244,\n", + " 1.8470, 1.2986, 1.7828]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6528, -0.1286, -0.0643, 0.1043, 0.0567, 0.5249, 0.2996, 0.2025,\n", + " 0.3175, 0.0256, 0.5731, 0.2086, -0.4592, -0.3393, -0.1970, -0.8685,\n", + " -0.2091, 1.0332, 1.1324, 0.5507, 0.7780, 0.0561, 0.3391, 0.4058,\n", + " 0.7144, 0.1927, -3.2100, -2.6179, -3.4489, -3.1515, -1.9465, -0.2920,\n", + " -1.0778, -1.7405, -0.5764, -1.1412, -0.4037, -0.7204, -0.7367, 0.1336,\n", + " 0.3387, 0.2649, 0.8199]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1811, -0.2453, -0.0167, -0.1246, 0.0329, 0.1378, 0.1800, 0.2382,\n", + " 0.1887, 0.1763, 0.1736, -0.1640, -0.1173, -0.2460, -0.1411, -0.2598,\n", + " -0.2047, -0.0387, -0.0861, -0.1116, -0.0491, 0.0134, -0.0502, -0.0406,\n", + " -0.0670, 0.0097, -0.0348, -0.0887, -0.1639, -0.1880, -0.2207, -0.1859,\n", + " -0.2805, -0.2538, -0.1208, -0.1035, -0.0128, -0.0063, 0.0514, 0.2478,\n", + " 0.3077, 0.3012, 0.2047]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00023347574460785836\n", + "Grad encoder.fc1.bias: 0.000795531552284956\n", + "Grad encoder.encoder.0.weight: 5.811336086480878e-05\n", + "Grad encoder.encoder.0.bias: 0.0005208642687648535\n", + "Grad encoder.encoder.2.weight: 3.844467210001312e-05\n", + "Grad encoder.encoder.2.bias: 0.0004218643589410931\n", + "Grad encoder.encoder.4.weight: 8.013948536245152e-05\n", + "Grad encoder.encoder.4.bias: 0.00046693356125615537\n", + "Grad decoder.fc1.0.weight: 3.747371374629438e-05\n", + "Grad decoder.fc1.0.bias: 0.0003274826449342072\n", + "Grad decoder.fc1.2.weight: 4.855178121943027e-05\n", + "Grad decoder.fc1.2.bias: 0.00044381263433024287\n", + "Grad decoder.fc1.4.weight: 4.5641038013854995e-05\n", + "Grad decoder.fc1.4.bias: 0.0005570617504417896\n", + "Grad decoder.fc2.weight: 0.00015777470252942294\n", + "Grad decoder.fc2.bias: 0.0019660666584968567\n", + "Grad _memory_unit.weight_ih_l0: 1.0814238521561492e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.271720925113186e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.7426216800231487e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.8414708544441964e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.250138150993735e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.7974066799506545e-05\n", + "Data X Sample: tensor([[1.5032, 1.7624, 2.0240, 2.0794, 2.2094, 2.0022, 1.9058, 2.5610, 3.9984,\n", + " 4.1578, 4.5015, 4.3098, 4.1212, 3.9179, 3.8459, 3.7485, 3.7139, 3.6095,\n", + " 3.6282, 3.4925, 3.3590, 3.3466, 2.8122, 2.7943, 2.8453, 3.0115, 3.0955,\n", + " 3.1568, 3.2506, 3.3505, 3.3840, 3.3713, 3.9975, 2.8835, 4.5567, 4.9642,\n", + " 4.9870, 5.4675, 5.9898, 5.6941, 1.1645, 0.7329, 0.7377, 1.2572, 1.9464,\n", + " 2.0128, 1.3598, 1.8766]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1759, 0.4837, 1.3877, 0.8289, -0.4996, -0.5790, 0.2407, 0.5019,\n", + " -0.7109, -0.5860, -0.7800, -0.3393, 0.6360, -0.5502, -0.8113, 0.0637,\n", + " -1.2836, -1.8347, -0.1832, 0.1934, -0.7197, 0.0561, -1.2345, -0.4137,\n", + " -0.5489, -0.0531, -0.6031, -2.0249, 1.7814, 0.2837, -0.7762, -0.5464,\n", + " 0.0342, -0.3734, 0.5501, -0.8169, -0.0333, -0.6423, -0.7130, 0.0973,\n", + " -0.2381, 0.8364, 0.9135]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1960, -0.2681, -0.0278, -0.1309, 0.0272, 0.1414, 0.1909, 0.2602,\n", + " 0.2022, 0.1822, 0.1886, -0.1767, -0.1245, -0.2629, -0.1503, -0.2748,\n", + " -0.2127, -0.0447, -0.0949, -0.1190, -0.0555, 0.0137, -0.0526, -0.0421,\n", + " -0.0594, 0.0110, -0.0335, -0.1025, -0.1746, -0.1949, -0.2341, -0.1937,\n", + " -0.2902, -0.2699, -0.1290, -0.1083, -0.0150, -0.0114, 0.0555, 0.2679,\n", + " 0.3222, 0.3194, 0.2129]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00015713711036369205\n", + "Grad encoder.fc1.bias: 0.0007114487234503031\n", + "Grad encoder.encoder.0.weight: 4.957625060342252e-05\n", + "Grad encoder.encoder.0.bias: 0.0004555603372864425\n", + "Grad encoder.encoder.2.weight: 4.0351755160372704e-05\n", + "Grad encoder.encoder.2.bias: 0.0003581283090170473\n", + "Grad encoder.encoder.4.weight: 9.180935740005225e-05\n", + "Grad encoder.encoder.4.bias: 0.0004813917330466211\n", + "Grad decoder.fc1.0.weight: 3.7579771742457524e-05\n", + "Grad decoder.fc1.0.bias: 0.0002908674068748951\n", + "Grad decoder.fc1.2.weight: 4.3493240809766576e-05\n", + "Grad decoder.fc1.2.bias: 0.00035474338801577687\n", + "Grad decoder.fc1.4.weight: 4.433933281688951e-05\n", + "Grad decoder.fc1.4.bias: 0.0004555266350507736\n", + "Grad decoder.fc2.weight: 0.00015468912897631526\n", + "Grad decoder.fc2.bias: 0.0018810054752975702\n", + "Grad _memory_unit.weight_ih_l0: 1.0132677743968088e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.785055767162703e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.5756007996969856e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.863036338065285e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.402523311204277e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.9246391932247207e-05\n", + "Data X Sample: tensor([[1.3345, 1.6429, 1.8257, 1.8717, 2.0523, 2.1259, 2.1800, 2.0187, 3.3393,\n", + " 4.2336, 4.2097, 4.3877, 4.0524, 4.0461, 3.8661, 3.6226, 3.6511, 3.6560,\n", + " 3.5498, 3.4386, 3.5234, 3.4032, 2.9375, 2.7810, 2.8884, 2.8444, 2.9224,\n", + " 2.9570, 2.9210, 3.2195, 3.2615, 3.3436, 3.7709, 2.8080, 4.6866, 5.0809,\n", + " 5.1463, 5.4012, 5.9708, 5.8643, 1.1836, 0.6771, 0.6750, 1.1912, 1.6372,\n", + " 1.8012, 1.2374, 1.8766]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5989, -0.2019, 0.1534, -0.2189, -1.0788, -1.2876, 0.1881, 0.4332,\n", + " 0.3287, 0.1401, 0.3977, -0.5829, 0.4130, -0.6864, -0.7276, -0.1639,\n", + " -0.1347, -0.7720, 0.1137, -0.1148, 0.2635, -0.4708, 0.2822, -0.1898,\n", + " -0.0832, -0.0526, 1.0780, 0.4328, -0.2222, -0.1503, -0.8429, 0.1028,\n", + " 0.2319, -0.5772, -0.1340, -1.6148, -0.6001, 0.0705, 0.0000, 0.6144,\n", + " 0.6183, 0.7328, 0.4045]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2390, -0.3293, -0.0563, -0.1727, -0.0054, 0.1369, 0.2082, 0.2992,\n", + " 0.2251, 0.1912, 0.2201, -0.1958, -0.1395, -0.3019, -0.1702, -0.3101,\n", + " -0.2373, -0.0716, -0.1140, -0.1372, -0.0783, 0.0144, -0.0618, -0.0492,\n", + " -0.0344, 0.0078, -0.0144, -0.1218, -0.1841, -0.2104, -0.2555, -0.2155,\n", + " -0.2974, -0.3003, -0.1412, -0.1171, -0.0208, -0.0214, 0.0600, 0.3193,\n", + " 0.3533, 0.3572, 0.2402]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002060645492747426\n", + "Grad encoder.fc1.bias: 0.001495281234383583\n", + "Grad encoder.encoder.0.weight: 8.917690138332546e-05\n", + "Grad encoder.encoder.0.bias: 0.0010534476023167372\n", + "Grad encoder.encoder.2.weight: 5.896637594560161e-05\n", + "Grad encoder.encoder.2.bias: 0.0005723091890104115\n", + "Grad encoder.encoder.4.weight: 0.00010564352123765275\n", + "Grad encoder.encoder.4.bias: 0.0010080835781991482\n", + "Grad decoder.fc1.0.weight: 4.042763976030983e-05\n", + "Grad decoder.fc1.0.bias: 0.0004235572414472699\n", + "Grad decoder.fc1.2.weight: 5.445029819384217e-05\n", + "Grad decoder.fc1.2.bias: 0.0005446228897199035\n", + "Grad decoder.fc1.4.weight: 5.2874536777380854e-05\n", + "Grad decoder.fc1.4.bias: 0.0006862554000690579\n", + "Grad decoder.fc2.weight: 0.00014058178931009024\n", + "Grad decoder.fc2.bias: 0.0015654423041269183\n", + "Grad _memory_unit.weight_ih_l0: 1.1353277841408271e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.7277506382670254e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.4241197024821304e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.71798557555303e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.151278936769813e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.7357149014715105e-05\n", + "Data X Sample: tensor([[-0.0064, 0.0029, 0.0045, 0.0000, 0.0051, -0.0044, 0.0077, -0.0028,\n", + " -0.0098, 0.0016, -0.0032, 0.0000, -0.0089, -0.0027, -0.0050, 0.0000,\n", + " 0.0047, 0.0039, 0.0062, -0.0056, 0.0294, 0.0153, 0.0145, 0.0038,\n", + " 0.0038, 0.0131, -0.0053, -0.0286, -0.0416, 0.0066, 0.0245, 0.0028,\n", + " -0.0110, -0.0092, -0.0049, 0.0243, 0.0020, 0.0000, -0.0127, 0.0028,\n", + " 0.0286, -0.0139, 0.0101, 0.0115, 0.0079, 0.0400, -0.0340, 0.0156]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 9.0011e-01, 5.7923e-01, 5.9696e-01, -9.3823e-01, -2.7925e+00,\n", + " -1.9770e+00, -2.8863e+00, -2.5423e+00, -1.4285e+00, -1.9252e+00,\n", + " -1.4551e+00, 6.9005e-02, -4.2235e-01, 8.5849e-01, 4.3034e-03,\n", + " 5.8028e-01, 1.1051e-01, -3.3504e-01, -3.2680e-01, -3.9094e-01,\n", + " 6.0668e+00, -1.2832e-01, 3.5961e-01, 1.6500e-01, 5.8025e-01,\n", + " -2.6253e-01, 1.3382e-01, 5.1493e-01, 1.0633e+00, 1.2404e+00,\n", + " 8.6475e-01, 1.1480e+00, 1.2774e+00, 1.6039e-02, -7.4763e-01,\n", + " 5.0405e-01, -5.1480e-01, -8.4825e-01, 1.0291e+00, -1.2505e+00,\n", + " -8.1706e-01, -9.2231e-01, -1.2393e+00]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.8053, 0.5435, 0.1664, 0.5192, -0.2583, -0.5134, -0.9307, -0.9635,\n", + " -0.6129, -0.6555, -0.6609, 0.4719, 0.4944, 0.5641, 0.3382, 0.4594,\n", + " 0.4843, 0.2264, 0.0700, 0.1342, -0.0375, -0.0482, 0.0296, 0.1708,\n", + " 0.0253, 0.0341, 0.1976, 0.3971, 0.7858, 0.8440, 0.6940, 0.4193,\n", + " 0.5963, 0.4894, 0.3220, 0.1838, -0.0957, 0.0605, -0.0248, -0.6903,\n", + " -0.5939, -0.5024, -0.3754]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00039107140037231147\n", + "Grad encoder.fc1.bias: 0.0010602942202240229\n", + "Grad encoder.encoder.0.weight: 8.2054000813514e-05\n", + "Grad encoder.encoder.0.bias: 0.0007075336179696023\n", + "Grad encoder.encoder.2.weight: 5.841994425281882e-05\n", + "Grad encoder.encoder.2.bias: 0.0005651029641740024\n", + "Grad encoder.encoder.4.weight: 0.00013108568964526057\n", + "Grad encoder.encoder.4.bias: 0.0013900438789278269\n", + "Grad decoder.fc1.0.weight: 5.1973311201436445e-05\n", + "Grad decoder.fc1.0.bias: 0.0005329111590981483\n", + "Grad decoder.fc1.2.weight: 6.639365165028721e-05\n", + "Grad decoder.fc1.2.bias: 0.0006847383338026702\n", + "Grad decoder.fc1.4.weight: 6.250575825106353e-05\n", + "Grad decoder.fc1.4.bias: 0.0007588618900626898\n", + "Grad decoder.fc2.weight: 0.00017754356667865068\n", + "Grad decoder.fc2.bias: 0.0020009158179163933\n", + "Grad _memory_unit.weight_ih_l0: 1.4810331776970997e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.571601599920541e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.933737025363371e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.69163580116583e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001596657239133492\n", + "Grad _memory_unit.bias_hh_l1: 8.45068134367466e-05\n", + "Data X Sample: tensor([[1.6348, 1.7362, 1.8542, 2.1078, 2.2163, 2.1878, 2.2956, 2.3793, 3.8519,\n", + " 4.1183, 4.2921, 4.2241, 4.0235, 3.9915, 3.6820, 3.6295, 3.6070, 3.6424,\n", + " 3.5167, 3.5874, 3.5626, 3.3879, 3.0797, 2.8726, 2.9203, 3.1108, 3.1914,\n", + " 3.1731, 3.1431, 3.3308, 3.2336, 3.4155, 3.8941, 2.8515, 4.5640, 4.8572,\n", + " 5.0951, 5.3853, 6.0088, 5.8643, 1.2075, 0.7030, 0.6730, 1.2199, 1.8196,\n", + " 1.9442, 1.3462, 1.8375]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2552, -0.2499, -0.6247, -0.3452, 0.1724, 0.5806, 0.6762, 0.2578,\n", + " 1.1825, 0.0249, 0.4725, 0.6377, 0.0311, -0.1857, 0.3668, 0.3104,\n", + " 0.2689, -0.9630, 0.8236, 0.1187, 0.5593, 0.0655, 0.1870, 0.2781,\n", + " 0.3230, 0.0909, -0.2911, -1.0954, -2.4885, -0.9282, -1.3423, 0.5466,\n", + " -1.3559, -0.9949, -0.5360, -0.4458, 0.0540, 0.7966, 0.0000, 0.4161,\n", + " 0.5293, 0.5371, 0.6112]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2837, -0.3816, -0.0915, -0.2378, -0.0748, 0.0939, 0.2073, 0.3252,\n", + " 0.2418, 0.2051, 0.2559, -0.1856, -0.1419, -0.3137, -0.1854, -0.3371,\n", + " -0.2647, -0.1089, -0.1161, -0.1406, -0.1032, 0.0169, -0.0616, -0.0540,\n", + " -0.0170, 0.0104, 0.0277, -0.1124, -0.1670, -0.2148, -0.2561, -0.2340,\n", + " -0.2759, -0.3163, -0.1619, -0.1409, -0.0353, -0.0271, 0.0487, 0.3615,\n", + " 0.3835, 0.3878, 0.2748]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006777126109227538\n", + "Grad encoder.fc1.bias: 0.00039905685116536915\n", + "Grad encoder.encoder.0.weight: 0.00014164557796902955\n", + "Grad encoder.encoder.0.bias: 0.0004311962111387402\n", + "Grad encoder.encoder.2.weight: 0.00010444344661664218\n", + "Grad encoder.encoder.2.bias: 0.0005073911743238568\n", + "Grad encoder.encoder.4.weight: 0.00021758710499852896\n", + "Grad encoder.encoder.4.bias: 0.0012911291560158134\n", + "Grad decoder.fc1.0.weight: 7.198526145657524e-05\n", + "Grad decoder.fc1.0.bias: 0.0006016641855239868\n", + "Grad decoder.fc1.2.weight: 8.029400487430394e-05\n", + "Grad decoder.fc1.2.bias: 0.0008791989530436695\n", + "Grad decoder.fc1.4.weight: 6.72884052619338e-05\n", + "Grad decoder.fc1.4.bias: 0.0008194891270250082\n", + "Grad decoder.fc2.weight: 0.0001686879841145128\n", + "Grad decoder.fc2.bias: 0.002334285993129015\n", + "Grad _memory_unit.weight_ih_l0: 3.646360710263252e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.647011079825461e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.1707178752403706e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.4096155609877314e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00017012270109262317\n", + "Grad _memory_unit.bias_hh_l1: 9.215364116244018e-05\n", + "Data X Sample: tensor([[1.5297, 1.7070, 2.0075, 1.9788, 1.9789, 2.1436, 2.1677, 2.1905, 2.3141,\n", + " 2.2432, 2.3253, 2.2416, 2.1860, 2.2030, 2.1310, 2.1443, 2.1117, 2.1007,\n", + " 2.2405, 2.1814, 2.2499, 2.3178, 2.3279, 2.3057, 2.2897, 2.4656, 2.3922,\n", + " 2.3289, 2.0711, 2.2631, 2.1347, 2.1499, 2.2748, 1.5653, 2.2011, 1.7926,\n", + " 1.6971, 1.4974, 1.6036, 1.5604, 1.2075, 0.7548, 0.7579, 1.3232, 1.7601,\n", + " 1.9499, 1.3190, 1.8766]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.4840, 0.8070, 0.6827, 1.1028, -0.2067, -0.3816, -0.3882, -0.8554,\n", + " -0.6537, -0.1247, -0.4999, 0.0598, 0.4736, 1.5648, 0.4241, 2.1833,\n", + " 0.6172, -0.5193, -0.4946, -1.1435, -0.4076, -0.9491, -0.0415, -0.2179,\n", + " -0.2683, -1.0605, 1.2298, -0.6850, 1.0888, 0.4955, 1.1380, 0.2524,\n", + " 0.5711, 0.1855, 0.1588, 1.2015, -0.0868, -0.7725, -0.2783, -0.3392,\n", + " -0.4618, -0.4722, 0.1927]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3898, 0.2784, 0.1142, 0.2903, 0.0820, -0.0912, -0.3445, -0.4013,\n", + " -0.1417, -0.2138, -0.1940, 0.2433, 0.2125, 0.2477, 0.1767, 0.2772,\n", + " 0.2077, 0.1339, 0.0774, 0.0695, 0.0342, 0.0010, 0.0123, 0.1059,\n", + " 0.0419, 0.0873, -0.0367, 0.0102, 0.2005, 0.2568, 0.2198, 0.1365,\n", + " 0.2547, 0.2457, 0.1414, 0.1314, -0.0597, 0.0403, -0.0249, -0.2617,\n", + " -0.2353, -0.2455, -0.2431]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007246511522680521\n", + "Grad encoder.fc1.bias: 0.0009475270635448396\n", + "Grad encoder.encoder.0.weight: 0.0001464999804738909\n", + "Grad encoder.encoder.0.bias: 0.0010266606695950031\n", + "Grad encoder.encoder.2.weight: 0.00010836928413482383\n", + "Grad encoder.encoder.2.bias: 0.001013276050798595\n", + "Grad encoder.encoder.4.weight: 0.0002554271195549518\n", + "Grad encoder.encoder.4.bias: 0.0032736463472247124\n", + "Grad decoder.fc1.0.weight: 9.031052468344569e-05\n", + "Grad decoder.fc1.0.bias: 0.001258394680917263\n", + "Grad decoder.fc1.2.weight: 0.0001200001934194006\n", + "Grad decoder.fc1.2.bias: 0.0014658673899248242\n", + "Grad decoder.fc1.4.weight: 9.803321154322475e-05\n", + "Grad decoder.fc1.4.bias: 0.0014097359962761402\n", + "Grad decoder.fc2.weight: 0.00021020651911385357\n", + "Grad decoder.fc2.bias: 0.003189723938703537\n", + "Grad _memory_unit.weight_ih_l0: 2.608023896755185e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00017641537124291062\n", + "Grad _memory_unit.bias_hh_l0: 8.977243851404637e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.2619457265827805e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00031786441104486585\n", + "Grad _memory_unit.bias_hh_l1: 0.00016625761054456234\n", + "Data X Sample: tensor([[2.6457, 3.0208, 3.2216, 3.1158, 3.0922, 3.5638, 3.7484, 3.8131, 3.9373,\n", + " 4.0030, 3.9241, 3.8677, 3.8149, 3.7571, 3.5458, 3.5023, 3.5284, 3.5147,\n", + " 3.3453, 3.2303, 3.1848, 3.2976, 3.0171, 2.9146, 2.7664, 2.7973, 2.7519,\n", + " 2.8101, 2.6782, 2.8297, 2.7716, 2.7578, 2.9503, 2.1832, 3.7674, 4.0132,\n", + " 4.3931, 4.7625, 5.3813, 5.2771, 1.9663, 1.0993, 1.1419, 1.9806, 2.6758,\n", + " 3.0249, 1.9513, 2.7133]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1643, 0.6683, -1.0021, -0.2467, -1.2565, -0.0096, -1.7596, 0.7630,\n", + " -0.6216, -0.5740, -0.4397, -0.7197, 0.6388, 0.8404, 0.9264, -0.1242,\n", + " 0.9956, 0.6293, 0.8760, 0.1581, -0.1700, -0.4549, -0.1311, -1.1137,\n", + " -0.5237, -0.3477, 0.2986, -0.0265, -0.7516, 0.9828, -0.3225, -0.3868,\n", + " -0.3259, 1.3526, -0.7891, 0.2211, -0.0333, 0.7428, 0.5660, 1.4389,\n", + " 0.4471, -0.4462, 0.5811]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.4118, -0.5138, -0.1714, -0.4242, -0.2542, -0.0029, 0.1783, 0.4247,\n", + " 0.2843, 0.2599, 0.3493, -0.1721, -0.1640, -0.3481, -0.2069, -0.4050,\n", + " -0.3831, -0.2068, -0.1255, -0.1772, -0.1518, 0.0144, -0.0647, -0.0952,\n", + " 0.0136, -0.0046, 0.1413, -0.0761, -0.1448, -0.2183, -0.2504, -0.2817,\n", + " -0.2159, -0.3491, -0.2328, -0.2192, -0.0570, -0.0077, 0.0071, 0.4860,\n", + " 0.4969, 0.4572, 0.3638]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0008800016948953271\n", + "Grad encoder.fc1.bias: 0.0009240733925253153\n", + "Grad encoder.encoder.0.weight: 0.00017531600315123796\n", + "Grad encoder.encoder.0.bias: 0.0009353045024909079\n", + "Grad encoder.encoder.2.weight: 0.00011433979670982808\n", + "Grad encoder.encoder.2.bias: 0.000995144248008728\n", + "Grad encoder.encoder.4.weight: 0.00024818885140120983\n", + "Grad encoder.encoder.4.bias: 0.0036783746909350157\n", + "Grad decoder.fc1.0.weight: 8.884457929525524e-05\n", + "Grad decoder.fc1.0.bias: 0.001365229836665094\n", + "Grad decoder.fc1.2.weight: 9.75500006461516e-05\n", + "Grad decoder.fc1.2.bias: 0.0014271035324782133\n", + "Grad decoder.fc1.4.weight: 7.550195732619613e-05\n", + "Grad decoder.fc1.4.bias: 0.0013237285893410444\n", + "Grad decoder.fc2.weight: 0.00016278857947327197\n", + "Grad decoder.fc2.bias: 0.002997928997501731\n", + "Grad _memory_unit.weight_ih_l0: 2.9747834560112096e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00019441780750639737\n", + "Grad _memory_unit.bias_hh_l0: 9.919881995301694e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.2141834304202348e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00034014738048426807\n", + "Grad _memory_unit.bias_hh_l1: 0.00017708985251374543\n", + "Data X Sample: tensor([[2.5333, 2.8635, 3.2592, 3.3039, 3.5207, 3.5771, 3.6406, 3.8088, 3.7884,\n", + " 3.8608, 3.7941, 3.8502, 3.8327, 3.7216, 3.6467, 3.4777, 3.4797, 3.5051,\n", + " 3.4961, 3.3921, 3.2682, 3.1583, 3.0532, 2.7657, 2.8396, 2.8104, 2.7519,\n", + " 2.8509, 2.7962, 3.0098, 2.9571, 2.9429, 3.0911, 2.2336, 3.6473, 4.0035,\n", + " 4.3282, 4.5823, 5.1595, 5.1522, 2.0140, 1.1550, 1.2126, 1.9892, 3.1238,\n", + " 3.1908, 2.0873, 3.2606]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1579, -0.3842, 0.3502, -0.4911, -0.8322, -0.1603, -0.0277, 0.4605,\n", + " -0.0590, 0.2956, 0.3049, -1.0682, -0.4261, -0.7255, -1.5784, -0.5215,\n", + " 0.4943, 1.0219, 1.0509, 0.1161, 1.1958, 0.8707, 0.1466, 0.8837,\n", + " 1.0681, 0.0139, 0.1776, 0.0786, 0.4154, -0.0681, -0.9824, -0.3033,\n", + " -0.4574, 0.2968, 0.2374, -1.5816, 0.4963, -0.6532, 0.7551, 0.3356,\n", + " 0.2305, 0.0991, 0.5315]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2417, -0.3229, -0.0881, -0.2331, -0.1012, 0.0590, 0.1654, 0.2846,\n", + " 0.2162, 0.1974, 0.2330, -0.1384, -0.1131, -0.2426, -0.1586, -0.2848,\n", + " -0.2502, -0.0999, -0.0890, -0.1215, -0.0890, 0.0057, -0.0524, -0.0485,\n", + " -0.0362, 0.0084, 0.0339, -0.0824, -0.1334, -0.1753, -0.2165, -0.1995,\n", + " -0.2228, -0.2704, -0.1612, -0.1520, -0.0422, -0.0111, 0.0245, 0.3128,\n", + " 0.3494, 0.3349, 0.2447]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00033046246971935034\n", + "Grad encoder.fc1.bias: 0.0008563987794332206\n", + "Grad encoder.encoder.0.weight: 8.824109681881964e-05\n", + "Grad encoder.encoder.0.bias: 0.0007800217135809362\n", + "Grad encoder.encoder.2.weight: 6.537181616295129e-05\n", + "Grad encoder.encoder.2.bias: 0.0008707302040420473\n", + "Grad encoder.encoder.4.weight: 0.00014609142090193927\n", + "Grad encoder.encoder.4.bias: 0.003117277752608061\n", + "Grad decoder.fc1.0.weight: 7.101499068085104e-05\n", + "Grad decoder.fc1.0.bias: 0.0011819759383797646\n", + "Grad decoder.fc1.2.weight: 9.128945384873077e-05\n", + "Grad decoder.fc1.2.bias: 0.0010987163987010717\n", + "Grad decoder.fc1.4.weight: 6.949004455236718e-05\n", + "Grad decoder.fc1.4.bias: 0.0009706370765343308\n", + "Grad decoder.fc2.weight: 0.00016122465603984892\n", + "Grad decoder.fc2.bias: 0.001608306192792952\n", + "Grad _memory_unit.weight_ih_l0: 1.8221300706500188e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0001438251492800191\n", + "Grad _memory_unit.bias_hh_l0: 7.447827374562621e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0002739145420492e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00029798055766150355\n", + "Grad _memory_unit.bias_hh_l1: 0.0001584323908900842\n", + "Data X Sample: tensor([[-0.0085, 0.0087, 0.0075, 0.0197, -0.0068, 0.0118, 0.0046, 0.0114,\n", + " 0.0220, 0.0111, 0.0190, 0.0019, 0.0266, 0.0136, 0.0177, 0.0055,\n", + " -0.0818, -0.0890, -0.0971, -0.0874, -0.0883, -0.0704, -0.0699, -0.0573,\n", + " -0.0619, -0.1306, -0.1039, -0.1346, -0.0624, -0.0098, -0.0490, -0.0249,\n", + " 0.0022, -0.0298, 0.0025, 0.0413, 0.0315, 0.0027, 0.0380, 0.0085,\n", + " 0.0525, 0.0139, 0.0081, -0.0029, 0.0119, -0.0114, -0.0476, 0.0235]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.8036, 0.0845, 0.4469, -1.0404, -1.6762, 0.7532, 0.7728, -0.6086,\n", + " 0.9831, 1.2037, 1.1460, -0.5870, 0.5882, 2.8173, 0.2914, 1.3461,\n", + " 1.2934, -0.2289, -0.8583, 0.6650, -0.7012, 1.4722, 0.4378, -0.2796,\n", + " -0.2393, -0.4117, -0.8103, 0.6080, 0.6275, 0.2084, -0.7443, -0.2621,\n", + " -0.3490, 0.5116, 0.2074, -0.4967, -0.0333, -0.6423, -0.3730, -0.5054,\n", + " -2.8053, -0.6643, -1.4865]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.9092, 0.6271, 0.1918, 0.5815, -0.2804, -0.5872, -1.0690, -1.0713,\n", + " -0.7319, -0.7657, -0.7672, 0.5140, 0.5360, 0.6570, 0.3674, 0.5244,\n", + " 0.5687, 0.2779, 0.1304, 0.2093, 0.0108, -0.0409, 0.0696, 0.2396,\n", + " 0.0240, 0.0048, 0.2198, 0.4110, 0.8353, 0.9458, 0.7972, 0.5002,\n", + " 0.6742, 0.5670, 0.3422, 0.2472, -0.1538, 0.0775, -0.0188, -0.7860,\n", + " -0.6919, -0.5890, -0.4714]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0010662800632417202\n", + "Grad encoder.fc1.bias: 0.0011172336526215076\n", + "Grad encoder.encoder.0.weight: 0.00019408619846217334\n", + "Grad encoder.encoder.0.bias: 0.0007969759753905237\n", + "Grad encoder.encoder.2.weight: 0.0001416723825968802\n", + "Grad encoder.encoder.2.bias: 0.0008320963243022561\n", + "Grad encoder.encoder.4.weight: 0.0003139669424854219\n", + "Grad encoder.encoder.4.bias: 0.002921195700764656\n", + "Grad decoder.fc1.0.weight: 9.494525147601962e-05\n", + "Grad decoder.fc1.0.bias: 0.0010791599052026868\n", + "Grad decoder.fc1.2.weight: 0.0001336779969278723\n", + "Grad decoder.fc1.2.bias: 0.0018396158702671528\n", + "Grad decoder.fc1.4.weight: 0.00010352536628488451\n", + "Grad decoder.fc1.4.bias: 0.001639478956349194\n", + "Grad decoder.fc2.weight: 0.0001730561489239335\n", + "Grad decoder.fc2.bias: 0.0033267936669290066\n", + "Grad _memory_unit.weight_ih_l0: 3.3504224120406434e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00015636321040801704\n", + "Grad _memory_unit.bias_hh_l0: 8.057076047407463e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.806028174352832e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002936477540060878\n", + "Grad _memory_unit.bias_hh_l1: 0.0001528903958387673\n", + "Data X Sample: tensor([[2.0082, 2.5911, 2.8775, 3.0065, 3.1024, 3.3193, 3.3818, 3.4213, 3.4345,\n", + " 3.3695, 3.5149, 3.6691, 3.5464, 3.3972, 3.4500, 3.2876, 3.2705, 3.2962,\n", + " 3.3680, 3.4460, 3.1946, 3.1077, 2.9954, 2.9184, 2.7402, 2.7373, 2.5601,\n", + " 2.5532, 2.1544, 2.2926, 2.1277, 2.0725, 1.9184, 1.3937, 2.1448, 2.3228,\n", + " 2.6095, 2.7722, 3.0171, 2.9847, 1.8518, 0.9897, 0.9802, 1.7796, 2.6124,\n", + " 2.8591, 1.8901, 2.7680]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4581, -0.6338, 0.3975, -0.2929, 1.4551, -0.1713, 0.7564, 0.4732,\n", + " -0.5880, -0.3346, -0.4318, 0.1434, 0.2472, 0.1514, 0.0581, -1.1499,\n", + " 0.5746, -0.5335, -0.4230, -1.2234, -0.9770, -0.8920, 0.1253, -0.8655,\n", + " -0.1365, 0.0536, 0.0565, -0.8842, -1.0578, 0.3693, -0.0581, 0.4504,\n", + " 0.2963, 0.6524, 1.0192, -0.1291, 0.0501, 0.0940, 0.7285, 0.4512,\n", + " 1.0477, 1.2342, 0.0243]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 2.1370e-01, 8.7128e-02, 9.5044e-02, 1.2449e-01, 1.3341e-02,\n", + " 1.9479e-04, -1.5976e-01, -1.3983e-01, -3.6916e-02, -5.8617e-02,\n", + " -3.4507e-02, 7.5908e-02, 1.2829e-01, 1.1471e-01, 2.1098e-02,\n", + " 9.0717e-02, 1.6157e-02, 8.3637e-02, 4.5777e-02, 1.0934e-02,\n", + " 4.7416e-02, 2.4483e-02, -3.9514e-02, 6.8284e-02, -1.8859e-02,\n", + " 5.1702e-02, -4.2035e-02, 2.3106e-02, 7.6328e-02, 1.0143e-01,\n", + " 7.3789e-02, 6.6243e-02, 8.8396e-02, 7.3012e-02, 2.4526e-02,\n", + " 2.5261e-02, -3.4726e-02, 5.9172e-02, -3.4323e-02, -5.7328e-02,\n", + " -2.8581e-03, -4.6188e-02, -1.2010e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0017579521518200636\n", + "Grad encoder.fc1.bias: 0.0013136807829141617\n", + "Grad encoder.encoder.0.weight: 0.0002743263030424714\n", + "Grad encoder.encoder.0.bias: 0.0012810449115931988\n", + "Grad encoder.encoder.2.weight: 0.00016913340368773788\n", + "Grad encoder.encoder.2.bias: 0.001255559385754168\n", + "Grad encoder.encoder.4.weight: 0.00036938031553290784\n", + "Grad encoder.encoder.4.bias: 0.004026256501674652\n", + "Grad decoder.fc1.0.weight: 0.00011924546561203897\n", + "Grad decoder.fc1.0.bias: 0.0015886661130934954\n", + "Grad decoder.fc1.2.weight: 0.0001065546675818041\n", + "Grad decoder.fc1.2.bias: 0.00149693398270756\n", + "Grad decoder.fc1.4.weight: 8.20075802039355e-05\n", + "Grad decoder.fc1.4.bias: 0.0013514036545529962\n", + "Grad decoder.fc2.weight: 0.00019044549844693393\n", + "Grad decoder.fc2.bias: 0.0026801738422363997\n", + "Grad _memory_unit.weight_ih_l0: 3.688380456878804e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00022487813839688897\n", + "Grad _memory_unit.bias_hh_l0: 0.00011439700028859079\n", + "Grad _memory_unit.weight_ih_l1: 1.3932319234299939e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0004784470656886697\n", + "Grad _memory_unit.bias_hh_l1: 0.00025006194482557476\n", + "Data X Sample: tensor([[-0.0095, -0.0029, 0.0030, -0.0066, -0.0034, -0.0015, 0.0062, -0.0043,\n", + " 0.0049, -0.0016, -0.0095, -0.0058, 0.0022, -0.0191, 0.0000, 0.0109,\n", + " 0.0126, 0.0251, 0.0268, 0.0279, 0.0172, 0.0092, 0.0096, 0.0172,\n", + " 0.0038, 0.0313, 0.0240, 0.0367, 0.0278, 0.0164, 0.0105, 0.0083,\n", + " -0.0176, -0.0069, -0.0049, 0.0219, -0.0039, 0.0106, 0.0127, -0.0284,\n", + " -0.0048, 0.0000, -0.0020, -0.0172, 0.0238, 0.0000, -0.0272, -0.0235]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.0890, 0.3666, 1.0739, 1.0050, -0.6526, -1.1421, -0.8948, -0.9301,\n", + " -1.0078, -0.9626, -0.8058, 2.0180, 0.5832, 1.3453, 0.3178, 1.2835,\n", + " 0.5601, 1.0057, 0.1566, 1.5867, -0.3900, 1.5472, -0.1714, 1.2972,\n", + " -0.9539, -1.3251, 1.2677, 0.6298, 0.2983, 0.7085, 0.7737, 0.7479,\n", + " 1.2379, 1.0708, 1.3856, 1.1689, 0.8892, 0.1123, 0.9794, -0.7226,\n", + " -0.7712, -0.6943, 0.0567]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.9512, 0.6603, 0.2101, 0.5953, -0.2779, -0.6211, -1.1161, -1.1137,\n", + " -0.7774, -0.8010, -0.8036, 0.5150, 0.5526, 0.6844, 0.3915, 0.5546,\n", + " 0.5944, 0.3016, 0.1468, 0.2361, 0.0252, -0.0323, 0.0836, 0.2473,\n", + " 0.0131, -0.0140, 0.2123, 0.4315, 0.8634, 0.9820, 0.8386, 0.5279,\n", + " 0.7063, 0.6031, 0.3490, 0.2833, -0.1687, 0.0863, -0.0247, -0.8172,\n", + " -0.7249, -0.6185, -0.4984]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00020276891882531345\n", + "Grad encoder.fc1.bias: 0.0015293556498363614\n", + "Grad encoder.encoder.0.weight: 7.57695670472458e-05\n", + "Grad encoder.encoder.0.bias: 0.0008324075024574995\n", + "Grad encoder.encoder.2.weight: 5.717073872801848e-05\n", + "Grad encoder.encoder.2.bias: 0.0006181548233143985\n", + "Grad encoder.encoder.4.weight: 0.0001323802280239761\n", + "Grad encoder.encoder.4.bias: 0.0010073549346998334\n", + "Grad decoder.fc1.0.weight: 5.482505730469711e-05\n", + "Grad decoder.fc1.0.bias: 0.0004442156059667468\n", + "Grad decoder.fc1.2.weight: 9.868132474366575e-05\n", + "Grad decoder.fc1.2.bias: 0.0009498413419350982\n", + "Grad decoder.fc1.4.weight: 7.950252620503306e-05\n", + "Grad decoder.fc1.4.bias: 0.0010009988909587264\n", + "Grad decoder.fc2.weight: 0.00017286461661569774\n", + "Grad decoder.fc2.bias: 0.0020848929416388273\n", + "Grad _memory_unit.weight_ih_l0: 1.8530010493122973e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.043941539246589e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.163109067827463e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.351714091579197e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010259097325615585\n", + "Grad _memory_unit.bias_hh_l1: 5.255595169728622e-05\n", + "Data X Sample: tensor([[1.5159, 1.6036, 1.8467, 2.0510, 2.0967, 2.2025, 2.1662, 2.2132, 3.2124,\n", + " 4.0709, 4.4507, 4.3273, 4.1722, 3.9207, 3.8913, 3.6856, 3.6825, 3.5999,\n", + " 3.4837, 3.5427, 3.4498, 3.3022, 2.8773, 2.7695, 2.8134, 2.9619, 3.0476,\n", + " 3.0467, 3.1188, 3.2653, 3.2406, 3.3740, 3.9667, 2.8698, 4.7994, 5.0274,\n", + " 5.2957, 5.7033, 5.9898, 5.9863, 1.1072, 0.6452, 0.6427, 1.1769, 1.7165,\n", + " 1.9899, 1.2578, 1.7515]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1175, -0.9203, -1.8439, -0.4218, -0.0363, 0.4791, 0.3358, 0.9501,\n", + " 1.1551, 0.7934, 0.3527, 0.9505, -0.0167, -0.0908, 0.1370, 1.2708,\n", + " 0.5322, 0.3843, 0.1439, 1.7346, -0.5560, 0.5897, 0.0166, 0.4543,\n", + " 0.0925, -0.6774, -0.0688, -0.9179, -0.3809, -1.3640, 0.0601, 0.0311,\n", + " -0.4290, -0.9285, -0.0436, -0.1503, -0.8471, 0.7348, -0.2895, 0.3222,\n", + " 0.6115, 0.9700, -0.5912]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2055, -0.2805, -0.0517, -0.0595, 0.1048, 0.2001, 0.2044, 0.2984,\n", + " 0.2463, 0.2645, 0.2064, -0.1957, -0.1525, -0.2774, -0.1463, -0.3003,\n", + " -0.2086, -0.0292, -0.1077, -0.0899, -0.0514, -0.0309, -0.0332, -0.0592,\n", + " -0.1077, 0.0004, -0.0758, -0.1393, -0.2399, -0.2391, -0.2852, -0.1860,\n", + " -0.3820, -0.2993, -0.1732, -0.1382, -0.0140, -0.0261, 0.0797, 0.2739,\n", + " 0.3285, 0.3201, 0.2137]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0009601713973097503\n", + "Grad encoder.fc1.bias: 0.0009960706811398268\n", + "Grad encoder.encoder.0.weight: 0.00016878460883162916\n", + "Grad encoder.encoder.0.bias: 0.0008927572052925825\n", + "Grad encoder.encoder.2.weight: 9.266294364351779e-05\n", + "Grad encoder.encoder.2.bias: 0.0008677688892930746\n", + "Grad encoder.encoder.4.weight: 0.0001925661927089095\n", + "Grad encoder.encoder.4.bias: 0.0016906217206269503\n", + "Grad decoder.fc1.0.weight: 7.573189213871956e-05\n", + "Grad decoder.fc1.0.bias: 0.0007958424394018948\n", + "Grad decoder.fc1.2.weight: 6.991025293245912e-05\n", + "Grad decoder.fc1.2.bias: 0.0007333907997235656\n", + "Grad decoder.fc1.4.weight: 6.325777212623507e-05\n", + "Grad decoder.fc1.4.bias: 0.0008422877290286124\n", + "Grad decoder.fc2.weight: 0.0001574468769831583\n", + "Grad decoder.fc2.bias: 0.0020134628284722567\n", + "Grad _memory_unit.weight_ih_l0: 2.8362996090436354e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00011121392890345305\n", + "Grad _memory_unit.bias_hh_l0: 5.761608190368861e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.125262315326836e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00021503173047676682\n", + "Grad _memory_unit.bias_hh_l1: 0.00011287213419564068\n", + "Data X Sample: tensor([[1.4343, 1.9808, 2.2449, 2.4249, 2.5714, 2.6416, 2.7023, 2.7626, 2.7852,\n", + " 2.8719, 2.8075, 2.8375, 2.6786, 2.6419, 2.6127, 2.6517, 2.6070, 2.6423,\n", + " 2.7981, 2.7096, 2.7088, 2.8597, 2.8315, 2.6531, 2.4943, 2.3899, 2.2404,\n", + " 2.2310, 1.8976, 1.9291, 1.8127, 1.6718, 1.4674, 0.9886, 1.4045, 1.3548,\n", + " 1.4631, 1.5292, 1.7874, 1.8101, 1.3650, 0.7986, 0.7801, 1.4610, 1.9583,\n", + " 2.3387, 1.5910, 2.2050]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1740, 0.3016, -0.3504, 0.1329, -0.0656, -0.4933, -0.4270, -0.1175,\n", + " 0.1419, -0.3034, -0.3684, 0.1748, -0.1860, 0.2356, 1.1534, -0.4985,\n", + " 1.0061, -0.3601, -1.9760, 0.7556, 0.5794, -0.5960, 0.3584, 0.4379,\n", + " -3.4119, -0.9387, 0.6048, -0.0128, 0.3304, -0.0375, 0.2833, 0.4249,\n", + " 0.2024, 0.6400, 1.0708, -0.2631, -0.2391, 0.4911, -0.2895, 0.0259,\n", + " -0.1724, 0.0897, 0.2026]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3093, 0.1879, 0.1286, 0.1895, 0.0290, -0.0493, -0.2456, -0.2433,\n", + " -0.1104, -0.1304, -0.1192, 0.1202, 0.1855, 0.1905, 0.0803, 0.2027,\n", + " 0.0843, 0.1154, 0.0690, 0.0421, 0.0451, 0.0169, -0.0278, 0.0797,\n", + " -0.0016, 0.0362, -0.0484, 0.0147, 0.1493, 0.1954, 0.1368, 0.1244,\n", + " 0.1742, 0.1463, 0.0634, 0.0887, -0.0270, 0.0748, -0.0482, -0.1238,\n", + " -0.0993, -0.1448, -0.2066]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001485870743636042\n", + "Grad encoder.fc1.bias: 9.00708109838888e-05\n", + "Grad encoder.encoder.0.weight: 4.516951958066784e-05\n", + "Grad encoder.encoder.0.bias: 0.00014940132678020746\n", + "Grad encoder.encoder.2.weight: 3.76424977730494e-05\n", + "Grad encoder.encoder.2.bias: 0.0002223688061349094\n", + "Grad encoder.encoder.4.weight: 8.41284854686819e-05\n", + "Grad encoder.encoder.4.bias: 0.00044706626795232296\n", + "Grad decoder.fc1.0.weight: 3.474006734904833e-05\n", + "Grad decoder.fc1.0.bias: 0.0003211519797332585\n", + "Grad decoder.fc1.2.weight: 4.608662857208401e-05\n", + "Grad decoder.fc1.2.bias: 0.00043591385474428535\n", + "Grad decoder.fc1.4.weight: 4.619215542334132e-05\n", + "Grad decoder.fc1.4.bias: 0.0005199479637667537\n", + "Grad decoder.fc2.weight: 0.00013546172704081982\n", + "Grad decoder.fc2.bias: 0.0018078092252835631\n", + "Grad _memory_unit.weight_ih_l0: 9.869624591374304e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.941930142696947e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.549951957713347e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.2485893370903796e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.458633626811206e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.8741982280043885e-05\n", + "Data X Sample: tensor([[1.4353, 1.6706, 1.7851, 1.9023, 2.0199, 2.0817, 2.2109, 2.1550, 3.8446,\n", + " 4.1136, 4.0828, 4.1190, 3.7772, 3.6889, 3.6315, 3.5256, 3.5331, 3.5109,\n", + " 3.4940, 3.4777, 3.5430, 3.3649, 2.8532, 2.8210, 2.8509, 2.9593, 2.9490,\n", + " 2.9203, 3.0182, 3.1867, 3.0446, 3.2607, 3.6103, 2.7325, 4.4586, 4.8037,\n", + " 5.1207, 5.3800, 5.8694, 5.7594, 1.1120, 0.6811, 0.6528, 1.1424, 1.5857,\n", + " 1.8241, 1.2238, 1.8844]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4572, 0.6613, 0.0709, 1.0084, 0.7678, 0.5248, -0.2985, -0.4799,\n", + " 0.3914, -0.4896, 0.0915, 0.5777, 0.4495, -0.1018, -0.7624, 0.2452,\n", + " -0.4784, 0.4936, 1.0377, -0.0039, 0.0455, -0.3064, -0.2655, -1.2523,\n", + " -1.2807, 0.3258, -0.8748, 0.5075, -0.7523, -0.1588, -0.0911, 0.0897,\n", + " -1.3720, -0.9059, 0.0255, 0.2607, -0.7092, -0.7141, 0.5906, -0.7321,\n", + " -0.3875, -1.3808, -0.2386]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2578, -0.3587, -0.0871, -0.1583, 0.0328, 0.1654, 0.2653, 0.3701,\n", + " 0.3212, 0.3023, 0.2790, -0.1969, -0.1453, -0.3208, -0.1991, -0.3631,\n", + " -0.2594, -0.0624, -0.0851, -0.1267, -0.0956, -0.0158, -0.0473, -0.0583,\n", + " -0.1073, 0.0235, -0.0422, -0.1291, -0.2260, -0.2619, -0.3074, -0.2427,\n", + " -0.3746, -0.3550, -0.2259, -0.1590, -0.0113, -0.0312, 0.0576, 0.3518,\n", + " 0.4168, 0.4062, 0.2933]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002654484997037798\n", + "Grad encoder.fc1.bias: 0.0006707401480525732\n", + "Grad encoder.encoder.0.weight: 7.58972528274171e-05\n", + "Grad encoder.encoder.0.bias: 0.0004634037031792104\n", + "Grad encoder.encoder.2.weight: 5.742576831835322e-05\n", + "Grad encoder.encoder.2.bias: 0.0004331002419348806\n", + "Grad encoder.encoder.4.weight: 0.00014257302973419428\n", + "Grad encoder.encoder.4.bias: 0.0011241980828344822\n", + "Grad decoder.fc1.0.weight: 4.9991322157438844e-05\n", + "Grad decoder.fc1.0.bias: 0.0005283283535391092\n", + "Grad decoder.fc1.2.weight: 8.72371019795537e-05\n", + "Grad decoder.fc1.2.bias: 0.000937678967602551\n", + "Grad decoder.fc1.4.weight: 7.430081313941628e-05\n", + "Grad decoder.fc1.4.bias: 0.0009455198305658996\n", + "Grad decoder.fc2.weight: 0.00017555132217239588\n", + "Grad decoder.fc2.bias: 0.002535958541557193\n", + "Grad _memory_unit.weight_ih_l0: 1.5087949577718973e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.288161966949701e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.25227010762319e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.234443960944191e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011676001304294914\n", + "Grad _memory_unit.bias_hh_l1: 6.144249346107244e-05\n", + "Data X Sample: tensor([[1.3844, 1.4944, 1.6784, 1.7580, 1.8082, 2.0493, 2.1184, 2.1266, 3.7201,\n", + " 4.2984, 4.4254, 4.3079, 4.1145, 3.9997, 3.8182, 3.7703, 3.6165, 3.6869,\n", + " 3.7212, 3.6041, 3.6411, 3.3833, 3.0869, 2.8745, 2.7420, 2.8914, 2.9597,\n", + " 2.9570, 2.9488, 3.1605, 3.2336, 3.3519, 3.7555, 2.7759, 4.6229, 4.9690,\n", + " 5.1227, 5.5311, 5.9835, 5.9863, 1.0643, 0.5476, 0.5881, 1.0735, 1.5103,\n", + " 1.7155, 1.1014, 1.6029]], device='cuda:0')\n", + "Data Y Sample: tensor([[-2.4946e-02, 6.4602e-01, 1.6558e-01, 6.0559e-01, 4.6199e-01,\n", + " 1.6727e+00, -2.9372e-04, 3.7128e-01, -8.1858e-01, -5.6709e-01,\n", + " -2.4164e-01, -4.3682e-02, 1.9333e-01, 1.6445e+00, 6.0035e-01,\n", + " -2.7319e-02, 7.0589e-01, 5.5843e-01, 2.0359e-01, 1.8634e+00,\n", + " -1.0193e+00, 3.4419e-01, 3.8988e-01, 1.0102e+00, 1.1721e+00,\n", + " 4.4927e-01, -7.4992e-01, 2.9221e-01, 2.5868e-01, -4.6604e-01,\n", + " 1.7526e-01, 5.1575e-01, 2.6619e+00, -6.7046e-01, -4.3882e-01,\n", + " 7.2750e-01, 1.6529e-01, -4.1022e-01, 3.0638e-01, -1.9256e-01,\n", + " -2.0800e+00, 5.7363e-01, -4.1713e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2765, -0.3854, -0.0974, -0.1724, 0.0332, 0.1733, 0.2853, 0.3948,\n", + " 0.3430, 0.3208, 0.2997, -0.2055, -0.1518, -0.3450, -0.2150, -0.3865,\n", + " -0.2723, -0.0703, -0.0827, -0.1339, -0.1072, -0.0157, -0.0502, -0.0617,\n", + " -0.1088, 0.0213, -0.0439, -0.1362, -0.2400, -0.2786, -0.3238, -0.2575,\n", + " -0.3938, -0.3781, -0.2459, -0.1684, -0.0118, -0.0308, 0.0586, 0.3752,\n", + " 0.4394, 0.4290, 0.3184]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007165210554376245\n", + "Grad encoder.fc1.bias: 0.0011054626666009426\n", + "Grad encoder.encoder.0.weight: 0.00014663579349871725\n", + "Grad encoder.encoder.0.bias: 0.0007572656613774598\n", + "Grad encoder.encoder.2.weight: 0.00011811828153440729\n", + "Grad encoder.encoder.2.bias: 0.0007776593556627631\n", + "Grad encoder.encoder.4.weight: 0.00028447090880945325\n", + "Grad encoder.encoder.4.bias: 0.0012951225508004427\n", + "Grad decoder.fc1.0.weight: 9.270625741919503e-05\n", + "Grad decoder.fc1.0.bias: 0.0006663693930022418\n", + "Grad decoder.fc1.2.weight: 0.00012815713125746697\n", + "Grad decoder.fc1.2.bias: 0.0013325512409210205\n", + "Grad decoder.fc1.4.weight: 9.74481736193411e-05\n", + "Grad decoder.fc1.4.bias: 0.0011128752958029509\n", + "Grad decoder.fc2.weight: 0.00018411471683066338\n", + "Grad decoder.fc2.bias: 0.002333532553166151\n", + "Grad _memory_unit.weight_ih_l0: 4.129940862185322e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.716528150718659e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.764254506677389e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.1278712008788716e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00015528214862570167\n", + "Grad _memory_unit.bias_hh_l1: 8.414889452978969e-05\n", + "Data X Sample: tensor([[1.4162, 1.7129, 1.8738, 1.9723, 1.9687, 1.9388, 1.8041, 2.3935, 3.7591,\n", + " 4.4042, 4.4095, 4.3273, 4.1323, 4.1551, 3.9014, 3.7485, 3.6746, 3.6869,\n", + " 3.6076, 3.6041, 3.4939, 3.3496, 3.0050, 2.8993, 2.8603, 2.8835, 2.8984,\n", + " 3.0018, 2.8378, 3.1245, 3.2371, 3.2884, 3.9095, 2.9041, 4.5886, 4.9253,\n", + " 5.0322, 5.5046, 5.9074, 5.8870, 1.1502, 0.6632, 0.6588, 1.1395, 1.7641,\n", + " 1.9556, 1.2238, 1.8141]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1942, 0.0732, 0.1499, -0.5544, 0.0308, 1.0005, 0.3081, 0.5218,\n", + " 0.6675, 0.5566, 0.6646, 0.6274, -0.4579, -0.9303, -0.3816, -0.4167,\n", + " 1.1968, -0.0590, -0.7150, -1.3584, 1.1077, -0.8347, -1.1982, 0.1695,\n", + " -1.5229, -1.6519, -1.0322, 0.1118, -1.7689, -1.8337, -1.6511, -0.4472,\n", + " -1.1590, -1.5214, -1.7268, -1.0625, -0.3740, 0.2376, 0.0382, 0.4722,\n", + " 0.4693, 0.6601, 1.2575]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2529, -0.3524, -0.0794, -0.1576, 0.0375, 0.1642, 0.2642, 0.3681,\n", + " 0.3161, 0.3064, 0.2791, -0.1932, -0.1418, -0.3234, -0.2015, -0.3600,\n", + " -0.2568, -0.0622, -0.0734, -0.1231, -0.0954, -0.0143, -0.0455, -0.0588,\n", + " -0.1146, 0.0185, -0.0459, -0.1219, -0.2292, -0.2651, -0.3057, -0.2401,\n", + " -0.3771, -0.3556, -0.2351, -0.1655, -0.0144, -0.0218, 0.0538, 0.3447,\n", + " 0.4120, 0.4014, 0.3029]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0009381849085912108\n", + "Grad encoder.fc1.bias: 0.00042284466326236725\n", + "Grad encoder.encoder.0.weight: 0.00017795937310438603\n", + "Grad encoder.encoder.0.bias: 0.00042481167474761605\n", + "Grad encoder.encoder.2.weight: 0.00012645646347664297\n", + "Grad encoder.encoder.2.bias: 0.0005534360534511507\n", + "Grad encoder.encoder.4.weight: 0.00023986294399946928\n", + "Grad encoder.encoder.4.bias: 0.0016200789250433445\n", + "Grad decoder.fc1.0.weight: 7.324681064346805e-05\n", + "Grad decoder.fc1.0.bias: 0.0005681714974343777\n", + "Grad decoder.fc1.2.weight: 8.675872959429398e-05\n", + "Grad decoder.fc1.2.bias: 0.0010922972578555346\n", + "Grad decoder.fc1.4.weight: 6.985236541368067e-05\n", + "Grad decoder.fc1.4.bias: 0.0008850565645843744\n", + "Grad decoder.fc2.weight: 0.00017645001935306937\n", + "Grad decoder.fc2.bias: 0.0020141550339758396\n", + "Grad _memory_unit.weight_ih_l0: 3.861964796669781e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00010484060476301238\n", + "Grad _memory_unit.bias_hh_l0: 5.49765391042456e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0366344213252887e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00016840832540765405\n", + "Grad _memory_unit.bias_hh_l1: 8.707647066330537e-05\n", + "Data X Sample: tensor([[2.7136, 2.9684, 3.1540, 3.2820, 3.4456, 3.7112, 3.6976, 3.8046, 3.8617,\n", + " 3.9919, 3.9241, 3.7898, 3.7483, 3.7162, 3.7097, 3.2561, 3.3900, 3.4780,\n", + " 3.3102, 3.2657, 3.2461, 3.1659, 2.9833, 2.7352, 2.7383, 2.7138, 2.7412,\n", + " 2.8265, 2.6643, 2.7380, 2.7961, 2.7716, 2.8931, 2.1146, 3.5223, 3.9791,\n", + " 4.1178, 4.5081, 4.9947, 4.9281, 1.9329, 1.0754, 1.0954, 1.9059, 2.8225,\n", + " 3.0764, 2.0737, 2.8931]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3084, 0.4730, 0.0183, -0.0548, -0.3657, -0.7161, -2.0878, -1.9895,\n", + " -0.6928, -1.0750, -0.7817, -0.3808, 0.2411, -0.5388, 0.7900, 0.3284,\n", + " -0.3829, -0.0084, -0.1077, -0.3855, -0.8908, -1.2541, -0.2251, 0.1178,\n", + " -0.0210, -0.1599, 0.9428, 0.5800, 1.1850, 1.5993, 1.4865, 0.7517,\n", + " -0.1557, 0.3563, -0.3435, -0.3949, 0.7456, -0.2114, -0.7577, 1.0475,\n", + " 0.9773, 0.5257, 0.7479]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2698, -0.3722, -0.1139, -0.2851, -0.1329, 0.0481, 0.2032, 0.3438,\n", + " 0.2737, 0.2672, 0.2819, -0.1432, -0.1154, -0.2785, -0.1966, -0.3328,\n", + " -0.2864, -0.1196, -0.0585, -0.1380, -0.1165, -0.0066, -0.0595, -0.0649,\n", + " -0.0696, 0.0135, 0.0498, -0.0658, -0.1384, -0.2032, -0.2456, -0.2293,\n", + " -0.2403, -0.3146, -0.2224, -0.1795, -0.0427, -0.0026, 0.0072, 0.3618,\n", + " 0.4075, 0.3841, 0.3114]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000545170099940151\n", + "Grad encoder.fc1.bias: 0.0004256887477822602\n", + "Grad encoder.encoder.0.weight: 9.679226786829531e-05\n", + "Grad encoder.encoder.0.bias: 0.00047375046415254474\n", + "Grad encoder.encoder.2.weight: 6.399626727215946e-05\n", + "Grad encoder.encoder.2.bias: 0.00046311665209941566\n", + "Grad encoder.encoder.4.weight: 0.00011704354255925864\n", + "Grad encoder.encoder.4.bias: 0.0010681357234716415\n", + "Grad decoder.fc1.0.weight: 5.4204530897550285e-05\n", + "Grad decoder.fc1.0.bias: 0.0004664122243411839\n", + "Grad decoder.fc1.2.weight: 5.955641972832382e-05\n", + "Grad decoder.fc1.2.bias: 0.0006360610714182258\n", + "Grad decoder.fc1.4.weight: 5.8000037824967876e-05\n", + "Grad decoder.fc1.4.bias: 0.0006813867948949337\n", + "Grad decoder.fc2.weight: 0.00015230616554617882\n", + "Grad decoder.fc2.bias: 0.0017795676831156015\n", + "Grad _memory_unit.weight_ih_l0: 1.3752510312770028e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.748347757617012e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.977988333441317e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.892003057146212e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010550874867476523\n", + "Grad _memory_unit.bias_hh_l1: 5.50184486201033e-05\n", + "Data X Sample: tensor([[1.4767, 1.6925, 1.7566, 1.7995, 1.9482, 2.1053, 2.0167, 2.1138, 2.7120,\n", + " 3.7092, 4.1716, 4.1248, 3.8415, 3.8170, 3.6870, 3.6609, 3.5976, 3.4180,\n", + " 3.4259, 3.1968, 3.4522, 3.2425, 2.7375, 2.8268, 2.8546, 2.9567, 2.8078,\n", + " 3.0345, 2.8170, 2.9935, 3.1076, 3.1170, 3.4827, 2.5860, 4.2699, 4.6626,\n", + " 4.8788, 5.1574, 5.7806, 5.6856, 1.2695, 0.6791, 0.6386, 1.1194, 1.6174,\n", + " 1.7669, 1.1626, 1.6186]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 7.5745e-02, 6.3907e-01, 2.2145e+00, 1.0149e-01, 1.0031e+00,\n", + " 5.0934e-01, 4.3227e-01, 2.2334e-01, 4.9857e-01, -2.2498e-01,\n", + " -6.7830e-01, -8.0246e-02, -6.7185e-01, -3.0695e-01, 4.4634e-01,\n", + " 7.4995e-01, 6.9477e-01, 3.2850e-01, 1.4028e+00, -1.1377e-01,\n", + " 1.2495e+00, -1.9331e-02, 1.8341e-01, 1.8474e+00, 5.1437e-01,\n", + " -1.0053e+00, 1.2384e-03, -8.5324e-01, -7.3316e-01, -4.5369e-01,\n", + " -3.1497e-01, 5.5497e-01, -7.7788e-01, 1.6508e-01, 4.0234e-01,\n", + " 2.8660e-02, -2.5710e-01, 4.1931e-01, 3.0347e-01, -1.3611e-01,\n", + " 2.5487e-01, -3.5562e-01, -7.0041e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1888, -0.2650, -0.0383, -0.0960, 0.0654, 0.1545, 0.1977, 0.2862,\n", + " 0.2321, 0.2614, 0.2125, -0.1740, -0.1290, -0.2710, -0.1604, -0.2866,\n", + " -0.2033, -0.0351, -0.0639, -0.0839, -0.0550, -0.0193, -0.0336, -0.0564,\n", + " -0.1205, 0.0093, -0.0548, -0.0984, -0.2098, -0.2315, -0.2627, -0.1851,\n", + " -0.3433, -0.2887, -0.1923, -0.1487, -0.0248, -0.0051, 0.0549, 0.2581,\n", + " 0.3234, 0.3158, 0.2454]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003075063868891448\n", + "Grad encoder.fc1.bias: 0.0008747053798288107\n", + "Grad encoder.encoder.0.weight: 5.9676283854059875e-05\n", + "Grad encoder.encoder.0.bias: 0.0006278223008848727\n", + "Grad encoder.encoder.2.weight: 4.493728920351714e-05\n", + "Grad encoder.encoder.2.bias: 0.0005113997613079846\n", + "Grad encoder.encoder.4.weight: 0.00012337432417552918\n", + "Grad encoder.encoder.4.bias: 0.0009723540861159563\n", + "Grad decoder.fc1.0.weight: 4.1693070670589805e-05\n", + "Grad decoder.fc1.0.bias: 0.0003764733555726707\n", + "Grad decoder.fc1.2.weight: 4.472447108128108e-05\n", + "Grad decoder.fc1.2.bias: 0.000464896991616115\n", + "Grad decoder.fc1.4.weight: 4.149269807385281e-05\n", + "Grad decoder.fc1.4.bias: 0.0005522026913240552\n", + "Grad decoder.fc2.weight: 0.00013369094813242555\n", + "Grad decoder.fc2.bias: 0.0021882900036871433\n", + "Grad _memory_unit.weight_ih_l0: 1.1126354365842417e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.051868043257855e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.6927995602600276e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.0280100367672276e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.501883374061435e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.9471146010328084e-05\n", + "Data X Sample: tensor([[1.4077, 1.5293, 1.6649, 1.8389, 1.8987, 2.0699, 2.1461, 2.0925, 3.6786,\n", + " 4.3458, 4.3714, 4.1676, 4.0435, 4.0134, 3.7475, 3.7963, 3.6416, 3.6037,\n", + " 3.6943, 3.5539, 3.4596, 3.3037, 3.0701, 2.9050, 2.8321, 2.9462, 2.9863,\n", + " 2.9855, 3.0945, 3.2915, 3.3910, 3.4984, 3.8347, 2.8789, 4.6498, 4.9690,\n", + " 5.2387, 5.3774, 5.7553, 5.8133, 1.0643, 0.5855, 0.6002, 1.0850, 1.6610,\n", + " 1.8527, 1.1830, 1.6655]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0947, -0.3009, 0.9624, -0.2047, 0.5393, -0.1979, -0.1008, 0.3051,\n", + " 0.5797, 0.3183, 0.4129, -0.0952, -0.2096, -0.2981, -0.2334, -0.0666,\n", + " -1.1981, -1.9480, 0.3698, -1.0854, -1.4393, -1.4139, 0.6051, 0.2882,\n", + " -0.2768, -1.7293, -0.1616, 0.2019, 0.1862, 0.0829, -0.7467, -0.2535,\n", + " -0.4462, -0.0863, -0.3914, -1.1233, -0.4969, -0.9005, -1.1206, 0.7553,\n", + " 0.4815, 0.4277, 1.4124]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1584, -0.2285, -0.0183, -0.0560, 0.0931, 0.1688, 0.1714, 0.2584,\n", + " 0.1910, 0.2495, 0.1916, -0.1799, -0.1396, -0.2553, -0.1393, -0.2601,\n", + " -0.1769, -0.0144, -0.0748, -0.0649, -0.0294, -0.0241, -0.0278, -0.0623,\n", + " -0.1235, 0.0065, -0.0633, -0.0981, -0.2208, -0.2192, -0.2589, -0.1602,\n", + " -0.3456, -0.2635, -0.1801, -0.1479, -0.0338, -0.0038, 0.0646, 0.2239,\n", + " 0.2846, 0.2803, 0.2166]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00023421956575475633\n", + "Grad encoder.fc1.bias: 0.0012432471849024296\n", + "Grad encoder.encoder.0.weight: 6.790852057747543e-05\n", + "Grad encoder.encoder.0.bias: 0.0007731318473815918\n", + "Grad encoder.encoder.2.weight: 5.9606158174574375e-05\n", + "Grad encoder.encoder.2.bias: 0.0006052403477951884\n", + "Grad encoder.encoder.4.weight: 0.00013958300405647606\n", + "Grad encoder.encoder.4.bias: 0.0010567810386419296\n", + "Grad decoder.fc1.0.weight: 6.506760837510228e-05\n", + "Grad decoder.fc1.0.bias: 0.0005591742228716612\n", + "Grad decoder.fc1.2.weight: 0.00010953424498438835\n", + "Grad decoder.fc1.2.bias: 0.0012485077604651451\n", + "Grad decoder.fc1.4.weight: 8.378396887565032e-05\n", + "Grad decoder.fc1.4.bias: 0.0010690141934901476\n", + "Grad decoder.fc2.weight: 0.00013665106962434947\n", + "Grad decoder.fc2.bias: 0.0018120683962479234\n", + "Grad _memory_unit.weight_ih_l0: 1.849517138907686e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.9261750720907e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.2630818168399855e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.158434073062381e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001244716258952394\n", + "Grad _memory_unit.bias_hh_l1: 6.634414603468031e-05\n", + "Data X Sample: tensor([[2.5248, 2.8795, 3.3178, 3.4744, 3.7137, 3.6817, 3.6853, 3.8954, 3.8080,\n", + " 3.7376, 3.8988, 3.7470, 3.7128, 3.4790, 3.5080, 3.1878, 3.2737, 3.3619,\n", + " 3.5064, 3.3047, 3.4620, 3.4384, 3.1159, 2.9795, 2.9353, 2.8261, 2.8238,\n", + " 2.8387, 2.5047, 2.5972, 2.6701, 2.8683, 3.0031, 2.1581, 3.3385, 3.7164,\n", + " 3.7874, 4.3385, 4.8045, 4.7465, 1.9950, 1.1809, 1.1580, 2.0782, 3.0643,\n", + " 3.2765, 2.2301, 3.1355]], device='cuda:0')\n", + "Data Y Sample: tensor([[-8.4225e-01, -1.5706e+00, -1.4398e+00, -4.0087e-01, 6.1345e-02,\n", + " -3.1837e-01, -1.7336e-01, 5.4405e-01, 5.4163e-01, 7.1846e-01,\n", + " -1.6129e-02, -1.1059e-01, 3.5316e-01, -1.9560e-01, -8.7357e-01,\n", + " -6.4385e-03, -5.3468e-03, -2.3710e+00, 1.0880e+00, -7.0561e-04,\n", + " -1.0066e+00, 9.1737e-01, 1.8661e+00, 4.5708e+00, -1.7966e+00,\n", + " -8.4390e-01, -2.0313e-01, -2.2693e-01, 1.9789e-01, -8.2682e-01,\n", + " -2.4504e-01, 1.0645e+00, 6.0628e-01, 6.9400e-01, 2.0362e-01,\n", + " 4.6878e-02, 4.9267e-01, 8.4972e-01, 0.0000e+00, 7.0293e-02,\n", + " 6.7675e-01, 2.2396e-01, 4.2385e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1061, -0.1820, -0.0216, -0.0980, -0.0236, 0.0807, 0.1288, 0.2194,\n", + " 0.1667, 0.1947, 0.1706, -0.1336, -0.0747, -0.1733, -0.1334, -0.2043,\n", + " -0.1805, -0.0249, -0.0354, -0.0770, -0.0181, 0.0032, -0.0457, -0.0545,\n", + " -0.1095, 0.0345, -0.0294, -0.0516, -0.1352, -0.1450, -0.1986, -0.1282,\n", + " -0.2182, -0.2009, -0.1541, -0.1389, -0.0503, 0.0170, 0.0186, 0.1923,\n", + " 0.2685, 0.2515, 0.1784]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00017606954497750849\n", + "Grad encoder.fc1.bias: 0.0016320752911269665\n", + "Grad encoder.encoder.0.weight: 4.71502571599558e-05\n", + "Grad encoder.encoder.0.bias: 0.0009950995445251465\n", + "Grad encoder.encoder.2.weight: 5.0731177907437086e-05\n", + "Grad encoder.encoder.2.bias: 0.0007801546016708016\n", + "Grad encoder.encoder.4.weight: 0.00014474480121862143\n", + "Grad encoder.encoder.4.bias: 0.0013813910773023963\n", + "Grad decoder.fc1.0.weight: 6.302403198787943e-05\n", + "Grad decoder.fc1.0.bias: 0.000624016800429672\n", + "Grad decoder.fc1.2.weight: 8.97561913006939e-05\n", + "Grad decoder.fc1.2.bias: 0.0008153431117534637\n", + "Grad decoder.fc1.4.weight: 7.286693289643154e-05\n", + "Grad decoder.fc1.4.bias: 0.0007630620966665447\n", + "Grad decoder.fc2.weight: 0.00016535428585484624\n", + "Grad decoder.fc2.bias: 0.002063932828605175\n", + "Grad _memory_unit.weight_ih_l0: 1.8987439034390263e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.697986777406186e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.5818927901564166e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.325238013640046e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00016842022887431085\n", + "Grad _memory_unit.bias_hh_l1: 8.944758883444592e-05\n", + "Data X Sample: tensor([[ 0.0180, 0.0102, 0.0225, -0.0044, 0.0017, 0.0221, 0.0262, 0.0185,\n", + " 0.0195, 0.0237, 0.0286, 0.0253, 0.0355, 0.0218, 0.0151, 0.0096,\n", + " -0.1164, -0.1315, -0.1735, -0.1544, -0.1742, -0.1056, -0.1687, -0.1622,\n", + " -0.1539, -0.2769, -0.2611, -0.5017, -0.0624, -0.0688, -0.0910, -0.0359,\n", + " -0.0264, -0.0526, 0.0098, 0.0195, -0.0118, -0.0080, -0.0190, -0.0142,\n", + " 0.0239, 0.0000, 0.0061, 0.0029, 0.0079, 0.0057, 0.0136, 0.0156]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.9191, -0.0160, 0.7020, 0.3046, 0.2308, -0.5595, 0.9192, -0.7339,\n", + " 0.7835, 1.4515, 1.0236, 0.2165, 0.7485, 0.6237, 0.0172, 0.5224,\n", + " 1.5415, 0.1109, 0.5082, 0.5370, 0.6591, -0.0952, 0.2296, -0.8912,\n", + " -0.1196, -0.7145, -0.9860, -0.5256, -0.6815, 0.7436, 0.3087, -0.0317,\n", + " -0.0355, 1.3076, -0.7932, 0.3444, -0.2441, -0.7806, 0.7285, -1.6281,\n", + " -0.3014, 0.3402, -1.6744]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.6503, 0.5062, 0.1868, 0.3850, 0.1043, -0.2910, -0.6419, -0.6971,\n", + " -0.4475, -0.4610, -0.4103, 0.3395, 0.2304, 0.4094, 0.2827, 0.4345,\n", + " 0.4636, 0.2261, 0.1390, 0.2293, 0.1098, 0.0416, 0.0475, 0.1244,\n", + " -0.0025, 0.0224, 0.0045, 0.1335, 0.3591, 0.5451, 0.4698, 0.3474,\n", + " 0.4765, 0.4752, 0.2615, 0.3217, -0.1604, 0.0114, 0.0023, -0.5490,\n", + " -0.4706, -0.4609, -0.3584]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001297519775107503\n", + "Grad encoder.fc1.bias: 0.0002125932223862037\n", + "Grad encoder.encoder.0.weight: 3.367873068782501e-05\n", + "Grad encoder.encoder.0.bias: 0.00014216694398783147\n", + "Grad encoder.encoder.2.weight: 3.6784647818421945e-05\n", + "Grad encoder.encoder.2.bias: 0.0002861524699255824\n", + "Grad encoder.encoder.4.weight: 0.00010532303713262081\n", + "Grad encoder.encoder.4.bias: 0.0009350191685371101\n", + "Grad decoder.fc1.0.weight: 5.0948110583703965e-05\n", + "Grad decoder.fc1.0.bias: 0.000500753871165216\n", + "Grad decoder.fc1.2.weight: 6.218190537765622e-05\n", + "Grad decoder.fc1.2.bias: 0.0006519220187328756\n", + "Grad decoder.fc1.4.weight: 5.8406571042723954e-05\n", + "Grad decoder.fc1.4.bias: 0.0007368774386122823\n", + "Grad decoder.fc2.weight: 0.00015697418712079525\n", + "Grad decoder.fc2.bias: 0.0021274015307426453\n", + "Grad _memory_unit.weight_ih_l0: 1.4081862900638953e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.279607573058456e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.237930625095032e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.394055733631831e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00017598914564587176\n", + "Grad _memory_unit.bias_hh_l1: 9.219598723575473e-05\n", + "Data X Sample: tensor([[1.3345, 1.6094, 1.8753, 1.9744, 2.0848, 2.2084, 2.2910, 2.2487, 2.2067,\n", + " 2.2258, 2.0461, 2.0351, 2.0107, 1.8322, 1.7729, 1.7218, 1.7689, 1.8454,\n", + " 1.8028, 1.7240, 1.7298, 1.5845, 1.5808, 1.5785, 1.4452, 1.4496, 1.3906,\n", + " 1.4071, 1.0512, 1.0841, 1.0883, 0.9893, 0.8932, 0.6682, 0.9486, 1.0142,\n", + " 1.0914, 1.2880, 1.3628, 1.3476, 1.2743, 0.7348, 0.7316, 1.2199, 1.9464,\n", + " 2.0185, 1.2238, 1.8610]], device='cuda:0')\n", + "Data Y Sample: tensor([[-2.2134, -1.4613, -0.2246, -0.8237, -0.1119, 0.6567, 1.8397, 2.3612,\n", + " 1.7115, 2.6602, 4.0956, -1.6335, -2.0360, -2.8643, 0.2257, -2.7674,\n", + " -2.2954, -1.1024, 0.4740, -0.3910, -0.7730, -0.1610, 0.1166, -0.1311,\n", + " -0.3910, 0.0423, 0.2849, 0.4561, -0.8443, -2.4568, -1.9744, -1.1801,\n", + " -2.2464, -3.8374, -0.7520, -1.3666, 0.3207, 0.6970, 0.3953, 7.2446,\n", + " 7.0740, 5.1654, 2.4380]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3106, -0.3991, -0.1359, -0.3839, -0.2148, -0.0168, 0.1644, 0.3767,\n", + " 0.2469, 0.2870, 0.2889, -0.1426, -0.1190, -0.2814, -0.2003, -0.3279,\n", + " -0.3291, -0.1715, -0.0346, -0.1528, -0.1342, -0.0128, -0.0770, -0.0836,\n", + " -0.0717, 0.0036, 0.1275, -0.0118, -0.1043, -0.1888, -0.1976, -0.2427,\n", + " -0.1749, -0.3126, -0.2525, -0.2087, -0.0406, 0.0099, -0.0467, 0.3942,\n", + " 0.4475, 0.3871, 0.3673]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006031740922480822\n", + "Grad encoder.fc1.bias: 0.00034185757976956666\n", + "Grad encoder.encoder.0.weight: 0.00010893237049458548\n", + "Grad encoder.encoder.0.bias: 0.00046514079440385103\n", + "Grad encoder.encoder.2.weight: 8.451243047602475e-05\n", + "Grad encoder.encoder.2.bias: 0.0005638576694764197\n", + "Grad encoder.encoder.4.weight: 0.00021025838213972747\n", + "Grad encoder.encoder.4.bias: 0.0019608873408287764\n", + "Grad decoder.fc1.0.weight: 7.736433326499537e-05\n", + "Grad decoder.fc1.0.bias: 0.0008362845401279628\n", + "Grad decoder.fc1.2.weight: 8.216738933697343e-05\n", + "Grad decoder.fc1.2.bias: 0.0012448905035853386\n", + "Grad decoder.fc1.4.weight: 7.136244676075876e-05\n", + "Grad decoder.fc1.4.bias: 0.0011743414215743542\n", + "Grad decoder.fc2.weight: 0.00014774846204090863\n", + "Grad decoder.fc2.bias: 0.002484287368133664\n", + "Grad _memory_unit.weight_ih_l0: 1.4273569831857458e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.028282900340855e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.105294283363037e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.44714452594053e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00016132820746861398\n", + "Grad _memory_unit.bias_hh_l1: 8.382711530430242e-05\n", + "Data X Sample: tensor([[1.4968, 1.5934, 1.7881, 1.7842, 1.8697, 2.1362, 2.1446, 2.0301, 3.1172,\n", + " 4.0488, 3.9717, 4.0157, 3.8282, 3.6235, 3.6215, 3.3067, 3.2831, 3.3174,\n", + " 3.2297, 3.3717, 3.2927, 3.1843, 2.8122, 2.8382, 2.7533, 2.9332, 2.9463,\n", + " 3.0059, 2.9210, 3.2588, 3.2161, 3.2137, 3.5597, 2.6135, 4.2650, 4.7550,\n", + " 4.8454, 5.1256, 5.5841, 5.5466, 1.0691, 0.6034, 0.7033, 1.1223, 1.6332,\n", + " 1.7726, 1.1966, 1.7828]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1530, 0.3268, -0.4057, 0.1638, 2.7557, 1.0276, 0.2129, 0.7766,\n", + " 0.0795, 1.2444, 0.7027, -0.4451, -0.4555, -1.2263, -0.7818, -0.4053,\n", + " -0.8616, -6.0988, -0.3183, 1.0302, -0.3800, 0.4973, 0.9598, 4.6295,\n", + " -0.2471, 1.5929, 0.2674, -0.1640, -0.1460, 0.5006, -0.8202, 0.4504,\n", + " -0.5923, -0.9880, 0.1655, 0.0237, -0.0344, 0.7952, 0.1391, 0.7698,\n", + " 0.3307, 0.4738, -0.0756]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1722, -0.2435, -0.0302, -0.0872, 0.0692, 0.1449, 0.1848, 0.2681,\n", + " 0.2049, 0.2542, 0.1982, -0.1755, -0.1304, -0.2617, -0.1579, -0.2664,\n", + " -0.1687, -0.0379, -0.0571, -0.0775, -0.0620, -0.0164, -0.0447, -0.0526,\n", + " -0.1229, 0.0137, -0.0520, -0.0843, -0.1979, -0.2279, -0.2442, -0.1751,\n", + " -0.3236, -0.2708, -0.1865, -0.1450, -0.0402, -0.0117, 0.0423, 0.2362,\n", + " 0.3007, 0.2989, 0.2486]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00026182306464761496\n", + "Grad encoder.fc1.bias: 0.0008974905940704048\n", + "Grad encoder.encoder.0.weight: 5.674166823155247e-05\n", + "Grad encoder.encoder.0.bias: 0.0006760932737961411\n", + "Grad encoder.encoder.2.weight: 4.3936859583482146e-05\n", + "Grad encoder.encoder.2.bias: 0.0005104524898342788\n", + "Grad encoder.encoder.4.weight: 0.00010332248348277062\n", + "Grad encoder.encoder.4.bias: 0.0007248399197123945\n", + "Grad decoder.fc1.0.weight: 4.336129131843336e-05\n", + "Grad decoder.fc1.0.bias: 0.0003652839222922921\n", + "Grad decoder.fc1.2.weight: 5.193297329242341e-05\n", + "Grad decoder.fc1.2.bias: 0.0005109990015625954\n", + "Grad decoder.fc1.4.weight: 4.591162723954767e-05\n", + "Grad decoder.fc1.4.bias: 0.000465969875222072\n", + "Grad decoder.fc2.weight: 0.0001649333571549505\n", + "Grad decoder.fc2.bias: 0.001276812399737537\n", + "Grad _memory_unit.weight_ih_l0: 1.0713313713495154e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.029275467270054e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.6367954231100157e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.595441168930847e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.864592771511525e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.102298044017516e-05\n", + "Data X Sample: tensor([[1.6125, 1.7959, 2.0285, 2.0903, 2.1650, 2.2232, 2.2740, 2.3395, 2.4117,\n", + " 2.4960, 2.4712, 2.5356, 2.4745, 2.2821, 2.3227, 2.2893, 2.2532, 2.3193,\n", + " 2.3686, 2.3656, 2.4291, 2.4831, 2.4628, 2.4431, 2.4324, 2.4917, 2.4322,\n", + " 2.5287, 2.1509, 2.2304, 2.0542, 1.9841, 1.6632, 1.0710, 1.5271, 1.4764,\n", + " 1.4375, 1.4179, 1.3501, 1.3278, 1.2504, 0.7368, 0.7518, 1.3835, 1.9147,\n", + " 2.1272, 1.3326, 1.8922]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.8292, -1.7656, -2.3190, -0.8335, 0.4882, 1.6375, 0.0350, 0.5006,\n", + " 0.1631, 1.0154, 0.4946, -1.1825, -1.0963, -0.3257, 0.2442, -0.9308,\n", + " -1.0903, -0.0296, -0.9800, -1.0254, -0.5340, -1.2471, -0.7868, 0.1396,\n", + " 0.9281, 1.2890, 1.0220, 0.9646, -0.8257, -1.1422, -0.0854, -1.1636,\n", + " -0.5977, 0.2849, 0.6236, -0.7317, -0.7303, -0.0751, -0.9960, 0.6851,\n", + " 0.7882, 0.5335, -0.1485]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3684, 0.2750, 0.1495, 0.1835, 0.0867, -0.1320, -0.3057, -0.3489,\n", + " -0.2177, -0.2199, -0.2347, 0.1342, 0.1400, 0.2310, 0.1503, 0.2622,\n", + " 0.2258, 0.1112, 0.0603, 0.1039, 0.0561, 0.0559, 0.0082, 0.0452,\n", + " -0.0354, -0.0109, -0.0319, 0.0153, 0.1719, 0.2555, 0.1983, 0.1713,\n", + " 0.2326, 0.2011, 0.1347, 0.1941, -0.0611, 0.0006, -0.0296, -0.2479,\n", + " -0.1949, -0.2460, -0.2259]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002708037500269711\n", + "Grad encoder.fc1.bias: 0.0002786245022434741\n", + "Grad encoder.encoder.0.weight: 4.924773020320572e-05\n", + "Grad encoder.encoder.0.bias: 0.00024061088333837688\n", + "Grad encoder.encoder.2.weight: 4.112828173674643e-05\n", + "Grad encoder.encoder.2.bias: 0.00026240921579301357\n", + "Grad encoder.encoder.4.weight: 8.762424113228917e-05\n", + "Grad encoder.encoder.4.bias: 0.0005222179461270571\n", + "Grad decoder.fc1.0.weight: 3.626707984949462e-05\n", + "Grad decoder.fc1.0.bias: 0.0003029718354810029\n", + "Grad decoder.fc1.2.weight: 4.366961366031319e-05\n", + "Grad decoder.fc1.2.bias: 0.00046557356836274266\n", + "Grad decoder.fc1.4.weight: 4.689797788159922e-05\n", + "Grad decoder.fc1.4.bias: 0.0006600184133276343\n", + "Grad decoder.fc2.weight: 0.00011325292871333659\n", + "Grad decoder.fc2.bias: 0.0016383419279009104\n", + "Grad _memory_unit.weight_ih_l0: 1.0580581147223711e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.238538581877947e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.2286795026739128e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.121879555896157e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.973119161557406e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.702840695041232e-05\n", + "Data X Sample: tensor([[2.4845, 2.6508, 2.9316, 3.0305, 3.0854, 3.2839, 3.2924, 3.3375, 3.5980,\n", + " 3.6807, 3.6926, 3.6048, 3.5664, 3.6180, 3.4323, 3.3724, 3.3287, 3.2846,\n", + " 3.3680, 3.2898, 3.1431, 3.1399, 2.9110, 2.7638, 2.7233, 2.5806, 2.5441,\n", + " 2.5410, 2.4076, 2.5841, 2.4882, 2.5699, 2.5367, 1.8079, 2.9831, 3.3103,\n", + " 3.4708, 3.6123, 4.0122, 3.8840, 1.7277, 1.0216, 1.0449, 1.8485, 2.5252,\n", + " 2.9449, 1.9173, 2.8149]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4482, 0.3589, 0.5081, -0.1340, 0.3831, -1.3160, 0.5088, 0.1179,\n", + " -0.4469, -0.4537, -0.6402, -0.1484, 0.6696, 0.3733, -0.0320, 0.9493,\n", + " -0.1894, -0.0373, -0.1105, -1.0689, -0.2879, -0.0160, -0.4457, -0.4160,\n", + " -0.1328, -0.2490, -0.4774, 0.3506, 0.4902, 0.9055, 0.5094, 0.1843,\n", + " -0.0718, 0.8933, -0.0448, -0.8577, -0.6417, -0.7806, -0.9499, -0.0173,\n", + " -0.5597, -0.2362, 0.2225]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1424, -0.2164, -0.0434, -0.1478, -0.0476, 0.0593, 0.1613, 0.2465,\n", + " 0.1966, 0.2158, 0.1903, -0.1332, -0.0738, -0.1975, -0.1623, -0.2271,\n", + " -0.1797, -0.0557, -0.0253, -0.0964, -0.0670, 0.0068, -0.0613, -0.0439,\n", + " -0.1074, 0.0398, -0.0104, -0.0460, -0.1127, -0.1600, -0.1935, -0.1654,\n", + " -0.2070, -0.2340, -0.1677, -0.1351, -0.0400, -0.0025, -0.0128, 0.2316,\n", + " 0.3029, 0.2888, 0.2286]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00015681840886827558\n", + "Grad encoder.fc1.bias: 0.001281773904338479\n", + "Grad encoder.encoder.0.weight: 5.743907968280837e-05\n", + "Grad encoder.encoder.0.bias: 0.0009255793411284685\n", + "Grad encoder.encoder.2.weight: 5.418597720563412e-05\n", + "Grad encoder.encoder.2.bias: 0.0007650818442925811\n", + "Grad encoder.encoder.4.weight: 0.00014260210446082056\n", + "Grad encoder.encoder.4.bias: 0.001595730776898563\n", + "Grad decoder.fc1.0.weight: 7.336999988183379e-05\n", + "Grad decoder.fc1.0.bias: 0.0006932695396244526\n", + "Grad decoder.fc1.2.weight: 0.00011254104902036488\n", + "Grad decoder.fc1.2.bias: 0.0012173126451671124\n", + "Grad decoder.fc1.4.weight: 8.382949454244226e-05\n", + "Grad decoder.fc1.4.bias: 0.0010523356031626463\n", + "Grad decoder.fc2.weight: 0.0001784021151252091\n", + "Grad decoder.fc2.bias: 0.0019331553485244513\n", + "Grad _memory_unit.weight_ih_l0: 1.4667331015516538e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.194374433718622e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.8870089813135564e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.95726737123914e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00017019218648783863\n", + "Grad _memory_unit.bias_hh_l1: 9.060807497007772e-05\n", + "Data X Sample: tensor([[1.5806, 1.7930, 2.0000, 2.0269, 2.1053, 2.2526, 2.3772, 2.2771, 2.3849,\n", + " 2.4580, 2.5093, 2.5259, 2.3147, 2.3175, 2.3807, 2.3262, 2.3020, 2.3561,\n", + " 2.4140, 2.4641, 2.5002, 2.5398, 2.5279, 2.4565, 2.5975, 2.5962, 2.5094,\n", + " 2.4798, 2.2827, 2.5186, 2.3692, 2.3820, 2.1978, 1.4303, 1.8825, 1.7050,\n", + " 1.6204, 1.4841, 1.5909, 1.6058, 1.3316, 0.7408, 0.7518, 1.2831, 1.8711,\n", + " 2.0471, 1.3462, 1.9235]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0793, 0.3193, -0.2248, -1.7823, 0.3312, -0.7690, -0.4345, -0.2531,\n", + " 0.3933, 0.4551, 0.4907, -0.2613, 0.5788, -0.3494, -0.8217, 0.4321,\n", + " -0.4880, 1.1909, 0.3487, 0.5463, 1.1164, 0.9245, 0.4028, 0.1492,\n", + " 0.5092, 4.9335, -1.0488, 1.2076, 0.7655, 0.8194, -0.8722, 1.5529,\n", + " -0.3424, -0.1860, -0.6205, -0.1181, -0.8287, -0.7806, 0.2870, -0.2013,\n", + " -0.3235, -0.2814, 0.0096]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3695, 0.2831, 0.1431, 0.1761, 0.0865, -0.1386, -0.3082, -0.3476,\n", + " -0.2184, -0.2238, -0.2430, 0.1268, 0.1360, 0.2393, 0.1628, 0.2686,\n", + " 0.2429, 0.1079, 0.0581, 0.1063, 0.0491, 0.0640, 0.0142, 0.0387,\n", + " -0.0394, -0.0068, -0.0306, 0.0107, 0.1641, 0.2495, 0.1974, 0.1678,\n", + " 0.2325, 0.2038, 0.1386, 0.1956, -0.0580, -0.0132, -0.0275, -0.2544,\n", + " -0.1976, -0.2521, -0.2300]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000735051347874105\n", + "Grad encoder.fc1.bias: 0.0015187205281108618\n", + "Grad encoder.encoder.0.weight: 0.00012830954801756889\n", + "Grad encoder.encoder.0.bias: 0.0011079481337219477\n", + "Grad encoder.encoder.2.weight: 0.00010423812636872754\n", + "Grad encoder.encoder.2.bias: 0.0010236455127596855\n", + "Grad encoder.encoder.4.weight: 0.00024659844348207116\n", + "Grad encoder.encoder.4.bias: 0.0029521924443542957\n", + "Grad decoder.fc1.0.weight: 9.506769856670871e-05\n", + "Grad decoder.fc1.0.bias: 0.0010985315311700106\n", + "Grad decoder.fc1.2.weight: 9.402249997947365e-05\n", + "Grad decoder.fc1.2.bias: 0.001092047430574894\n", + "Grad decoder.fc1.4.weight: 8.654902194393799e-05\n", + "Grad decoder.fc1.4.bias: 0.0011736499145627022\n", + "Grad decoder.fc2.weight: 0.0001889839768409729\n", + "Grad decoder.fc2.bias: 0.002411532448604703\n", + "Grad _memory_unit.weight_ih_l0: 2.409620356047526e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00014978664694353938\n", + "Grad _memory_unit.bias_hh_l0: 7.743663445580751e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.1737464774341788e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00027416576631367207\n", + "Grad _memory_unit.bias_hh_l1: 0.00014361632929649204\n", + "Data X Sample: tensor([[1.5202, 1.7799, 1.9309, 1.9154, 2.1463, 2.2865, 2.3526, 2.4205, 2.5069,\n", + " 2.4596, 2.5664, 2.5882, 2.5544, 2.5356, 2.4311, 2.4493, 2.4104, 2.4160,\n", + " 2.5482, 2.5236, 2.4634, 2.3867, 2.4532, 2.4145, 2.4155, 2.4865, 2.3922,\n", + " 2.4675, 2.1301, 2.1943, 2.2642, 2.2051, 2.2110, 1.4372, 1.9658, 1.8096,\n", + " 1.6538, 1.4841, 1.6100, 1.5831, 1.1693, 0.7189, 0.7235, 1.3060, 1.8473,\n", + " 2.0014, 1.2646, 2.0486]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2042, 0.4452, 0.0120, 0.2635, 0.6071, 0.3339, -0.2581, -0.1706,\n", + " -1.0378, -0.5687, -0.2162, 0.1557, 0.2418, 0.0239, -0.0208, 0.8642,\n", + " 0.3147, -0.9573, -0.1124, -0.3214, -0.4645, -0.8366, 0.0426, 0.0345,\n", + " -0.9888, 0.7266, 0.2553, -0.3161, 1.3259, -0.2408, 0.5300, -0.1258,\n", + " 0.1291, 0.2186, 0.8015, 1.0563, 0.4915, 0.7816, 1.8119, -0.1354,\n", + " -0.2180, -0.5597, 0.1684]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2740, 0.1623, 0.1306, 0.0880, 0.0282, -0.0579, -0.1977, -0.1929,\n", + " -0.1190, -0.1333, -0.1306, 0.0491, 0.1155, 0.1556, 0.0622, 0.1813,\n", + " 0.1052, 0.0628, 0.0440, 0.0365, 0.0288, 0.0512, -0.0272, 0.0299,\n", + " -0.0432, -0.0014, -0.0455, -0.0097, 0.1033, 0.1478, 0.0897, 0.1228,\n", + " 0.1499, 0.0877, 0.0542, 0.1102, -0.0173, 0.0125, -0.0441, -0.1129,\n", + " -0.0674, -0.1328, -0.1550]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0009243786334991455\n", + "Grad encoder.fc1.bias: 0.0005146204493939877\n", + "Grad encoder.encoder.0.weight: 0.00019056841847486794\n", + "Grad encoder.encoder.0.bias: 0.0007770203519612551\n", + "Grad encoder.encoder.2.weight: 0.000148063525557518\n", + "Grad encoder.encoder.2.bias: 0.000889248913154006\n", + "Grad encoder.encoder.4.weight: 0.0002973187656607479\n", + "Grad encoder.encoder.4.bias: 0.0021994204726070166\n", + "Grad decoder.fc1.0.weight: 9.307830623583868e-05\n", + "Grad decoder.fc1.0.bias: 0.0008636669954285026\n", + "Grad decoder.fc1.2.weight: 7.960906077641994e-05\n", + "Grad decoder.fc1.2.bias: 0.001075731823220849\n", + "Grad decoder.fc1.4.weight: 5.946533929090947e-05\n", + "Grad decoder.fc1.4.bias: 0.0007240681443363428\n", + "Grad decoder.fc2.weight: 0.00011164469469804317\n", + "Grad decoder.fc2.bias: 0.0015786716248840094\n", + "Grad _memory_unit.weight_ih_l0: 2.911612500611227e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.87632743595168e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.0961131162475795e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.4637771528214216e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.000188245830941014\n", + "Grad _memory_unit.bias_hh_l1: 9.955422137863934e-05\n", + "Data X Sample: tensor([[1.5669, 1.9153, 2.1232, 2.2325, 2.3802, 2.4898, 2.5452, 2.5823, 2.3995,\n", + " 2.3996, 2.5125, 2.3896, 2.2969, 2.1103, 2.0629, 1.9556, 1.9592, 1.9228,\n", + " 1.8916, 1.8839, 1.7985, 1.7804, 1.7543, 1.6128, 1.5596, 1.5541, 1.4519,\n", + " 1.5499, 1.2003, 1.1823, 1.1023, 1.1164, 1.0208, 0.7323, 1.1055, 1.2453,\n", + " 1.4159, 1.5795, 1.7811, 1.8328, 1.2886, 0.8006, 0.8246, 1.3519, 1.9900,\n", + " 2.2072, 1.5502, 2.1894]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.9179, -1.2601, -0.9805, -1.3957, -0.7232, 0.4885, 1.9970, 2.1929,\n", + " 1.9119, 2.7323, 3.8518, -0.6296, -0.7052, -1.8589, -2.9389, -3.1748,\n", + " -2.1321, -1.9148, -1.1308, -0.8488, -0.8052, -0.6716, -0.5184, -0.4623,\n", + " -0.3730, 0.1545, 0.8082, -0.4829, -0.6667, -1.2954, -1.6962, -1.0404,\n", + " -1.8722, -2.0243, -0.5693, -1.3693, -0.4451, 0.5249, -0.2095, 6.3290,\n", + " 6.5510, 4.1773, 2.4591]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.6883, -0.7795, -0.3412, -0.7467, -0.4822, -0.0909, 0.2485, 0.7186,\n", + " 0.4334, 0.5181, 0.5463, -0.2186, -0.2615, -0.5338, -0.3721, -0.5789,\n", + " -0.5651, -0.3872, -0.0737, -0.2808, -0.3279, -0.0543, -0.1064, -0.1720,\n", + " -0.0014, -0.0126, 0.3300, -0.0129, -0.1074, -0.3059, -0.3238, -0.4578,\n", + " -0.2204, -0.5248, -0.4304, -0.3806, -0.0624, 0.0318, -0.1172, 0.7760,\n", + " 0.7694, 0.6720, 0.6897]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00042887497693300247\n", + "Grad encoder.fc1.bias: 0.0016171664465218782\n", + "Grad encoder.encoder.0.weight: 0.00010564248077571392\n", + "Grad encoder.encoder.0.bias: 0.001033334294334054\n", + "Grad encoder.encoder.2.weight: 9.247616253560409e-05\n", + "Grad encoder.encoder.2.bias: 0.0007601935649290681\n", + "Grad encoder.encoder.4.weight: 0.00022557568445336074\n", + "Grad encoder.encoder.4.bias: 0.001633552834391594\n", + "Grad decoder.fc1.0.weight: 8.599657303420827e-05\n", + "Grad decoder.fc1.0.bias: 0.0007167577277868986\n", + "Grad decoder.fc1.2.weight: 0.00012033460370730609\n", + "Grad decoder.fc1.2.bias: 0.0011215991107746959\n", + "Grad decoder.fc1.4.weight: 9.288357250625268e-05\n", + "Grad decoder.fc1.4.bias: 0.0008132326183840632\n", + "Grad decoder.fc2.weight: 0.00018954419647343457\n", + "Grad decoder.fc2.bias: 0.0021930711809545755\n", + "Grad _memory_unit.weight_ih_l0: 2.6718576918938197e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.88041831785813e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.76609384350013e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.1875045856868383e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001757343125063926\n", + "Grad _memory_unit.bias_hh_l1: 9.595397568773478e-05\n", + "Data X Sample: tensor([[1.4905, 1.5818, 1.8362, 1.9504, 2.0165, 2.0802, 1.9982, 2.0159, 3.2807,\n", + " 4.1341, 4.4127, 4.3176, 4.2454, 3.9397, 3.8232, 3.7922, 3.7423, 3.6153,\n", + " 3.5271, 3.4423, 3.5332, 3.4002, 3.0749, 2.8840, 2.9260, 2.9776, 2.9783,\n", + " 3.0793, 3.0008, 3.2850, 3.2545, 3.3381, 3.7797, 2.8332, 4.6082, 4.8742,\n", + " 5.0499, 5.4887, 6.0342, 5.9381, 1.1072, 0.6393, 0.7255, 1.1510, 1.8513,\n", + " 1.9957, 1.3598, 1.8375]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3922, -0.1045, -0.1850, 1.0342, 0.4600, 0.2134, 0.5712, -0.5001,\n", + " 0.0715, -0.6382, -0.9797, 0.2240, -0.4668, -0.2073, 0.7646, 1.0208,\n", + " -0.1470, 0.7905, -2.3307, -1.2663, 0.9405, -2.0839, 4.2167, -0.1795,\n", + " -0.5805, 0.9077, -0.0861, 0.0404, -0.4963, 0.1490, 0.4133, 0.8855,\n", + " 0.6784, 0.1711, -0.0536, -0.0118, -0.5257, 0.4777, 0.1500, -0.2512,\n", + " -0.2588, -0.5172, -0.9826]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2141, -0.2922, -0.0802, -0.1721, -0.0337, 0.0904, 0.2185, 0.3147,\n", + " 0.2433, 0.2522, 0.2286, -0.1784, -0.1162, -0.2859, -0.2038, -0.2858,\n", + " -0.1822, -0.0862, -0.0552, -0.1131, -0.1158, 0.0019, -0.0747, -0.0519,\n", + " -0.0778, 0.0533, -0.0181, -0.0926, -0.1424, -0.2133, -0.2515, -0.2291,\n", + " -0.2660, -0.2970, -0.1813, -0.1396, -0.0314, -0.0304, -0.0063, 0.3022,\n", + " 0.3434, 0.3558, 0.2823]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007059606723487377\n", + "Grad encoder.fc1.bias: 0.0012757047079503536\n", + "Grad encoder.encoder.0.weight: 0.000131003005662933\n", + "Grad encoder.encoder.0.bias: 0.0009804348228499293\n", + "Grad encoder.encoder.2.weight: 9.911116649163887e-05\n", + "Grad encoder.encoder.2.bias: 0.000841009896248579\n", + "Grad encoder.encoder.4.weight: 0.00023622139997314662\n", + "Grad encoder.encoder.4.bias: 0.0013222744455561042\n", + "Grad decoder.fc1.0.weight: 8.411359885940328e-05\n", + "Grad decoder.fc1.0.bias: 0.0006791629130020738\n", + "Grad decoder.fc1.2.weight: 9.707082062959671e-05\n", + "Grad decoder.fc1.2.bias: 0.0008721598424017429\n", + "Grad decoder.fc1.4.weight: 7.388665108010173e-05\n", + "Grad decoder.fc1.4.bias: 0.0008731980342417955\n", + "Grad decoder.fc2.weight: 0.00014364854723680764\n", + "Grad decoder.fc2.bias: 0.0016700644046068192\n", + "Grad _memory_unit.weight_ih_l0: 2.3823429728508927e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.443686288548633e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.596644091885537e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0328136340831406e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001443978981114924\n", + "Grad _memory_unit.bias_hh_l1: 7.559255755040795e-05\n", + "Data X Sample: tensor([[1.5372, 1.7624, 1.9189, 2.0313, 2.1070, 2.2114, 2.3772, 2.3892, 2.4312,\n", + " 2.5433, 2.6394, 2.5551, 2.5277, 2.5193, 2.3857, 2.3467, 2.3696, 2.4431,\n", + " 2.4470, 2.4790, 2.3996, 2.4984, 2.4363, 2.4546, 2.4455, 2.5048, 2.5494,\n", + " 2.4594, 2.1509, 2.3384, 2.4077, 2.3433, 2.2308, 1.4738, 1.9879, 1.8096,\n", + " 1.6361, 1.4841, 1.5909, 1.6001, 1.1550, 0.7050, 0.7195, 1.3060, 1.7680,\n", + " 2.0757, 1.3462, 1.9861]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2531, 0.9947, -0.3504, 0.7824, 1.1640, 0.0651, -0.5258, -0.5674,\n", + " -0.7006, -0.7537, -0.1973, 0.6176, 0.5735, 0.9991, -0.0804, 0.8428,\n", + " 1.2246, 2.2538, 0.7971, 1.0871, 0.0556, 0.2296, -3.4647, 0.1882,\n", + " 1.2266, 0.9979, -0.1426, -1.9943, 0.3783, -0.4357, 0.9480, 0.2782,\n", + " 0.6268, 0.4452, -0.5687, -0.2198, 0.9536, 0.7428, 1.1604, -0.1140,\n", + " -0.2499, -0.3863, -0.7403]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3553, 0.2718, 0.1247, 0.1437, 0.0589, -0.1143, -0.2825, -0.2874,\n", + " -0.1836, -0.2039, -0.2186, 0.1012, 0.1300, 0.2399, 0.1542, 0.2585,\n", + " 0.2205, 0.0890, 0.0597, 0.0899, 0.0388, 0.0751, 0.0170, 0.0302,\n", + " -0.0373, 0.0196, -0.0382, -0.0075, 0.1291, 0.2157, 0.1557, 0.1591,\n", + " 0.2133, 0.1762, 0.1123, 0.1583, -0.0513, -0.0203, -0.0303, -0.2271,\n", + " -0.1626, -0.2221, -0.2148]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.001054192427545786\n", + "Grad encoder.fc1.bias: 0.0012999409809708595\n", + "Grad encoder.encoder.0.weight: 0.00016403605695813894\n", + "Grad encoder.encoder.0.bias: 0.0008663024054840207\n", + "Grad encoder.encoder.2.weight: 0.00012444167805369943\n", + "Grad encoder.encoder.2.bias: 0.0009008052875287831\n", + "Grad encoder.encoder.4.weight: 0.000248208933044225\n", + "Grad encoder.encoder.4.bias: 0.001686680130660534\n", + "Grad decoder.fc1.0.weight: 8.545850869268179e-05\n", + "Grad decoder.fc1.0.bias: 0.0007701448630541563\n", + "Grad decoder.fc1.2.weight: 8.7106236605905e-05\n", + "Grad decoder.fc1.2.bias: 0.0011323192156851292\n", + "Grad decoder.fc1.4.weight: 7.49367754906416e-05\n", + "Grad decoder.fc1.4.bias: 0.0010508040431886911\n", + "Grad decoder.fc2.weight: 0.00017285898502450436\n", + "Grad decoder.fc2.bias: 0.0021285093389451504\n", + "Grad _memory_unit.weight_ih_l0: 2.599684194137808e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.538500019814819e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.614094021031633e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.1037420335924253e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00015290822193492204\n", + "Grad _memory_unit.bias_hh_l1: 8.243481715908274e-05\n", + "Data X Sample: tensor([[1.5467, 1.6735, 1.7686, 1.9941, 2.1531, 2.3646, 2.3988, 2.5014, 2.5362,\n", + " 2.6350, 2.6362, 2.6875, 2.4656, 2.4456, 2.5269, 2.5108, 2.3476, 2.4953,\n", + " 2.5462, 2.4623, 2.4732, 2.4188, 2.3785, 2.3038, 2.3310, 2.4186, 2.2590,\n", + " 2.3493, 2.1856, 2.2500, 2.0962, 2.2659, 2.1934, 1.4326, 1.9364, 1.7950,\n", + " 1.5732, 1.5318, 1.6353, 1.6228, 1.1502, 0.7169, 0.6770, 1.1539, 1.7442,\n", + " 2.0128, 1.3598, 2.0330]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0099, -0.4742, 0.1866, 0.0681, 0.4770, -0.0898, -0.2549, -0.3346,\n", + " 0.1782, 0.3230, 0.1553, 0.8016, 0.4972, 0.6795, -0.0319, 1.1170,\n", + " -1.1286, 0.6298, -0.8601, -0.3055, 0.0052, -1.2282, -0.5718, -1.5112,\n", + " -1.0263, -0.2383, 1.1498, -0.7277, -0.1129, 0.4971, 1.0143, 1.3259,\n", + " 0.6773, 0.4487, 0.1056, -0.8515, 0.0000, 0.5417, 0.2870, -0.6516,\n", + " 0.5480, 0.1162, 1.1454]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3741, 0.2891, 0.1201, 0.1525, 0.0560, -0.1252, -0.3036, -0.3011,\n", + " -0.1943, -0.2172, -0.2286, 0.1093, 0.1354, 0.2574, 0.1699, 0.2759,\n", + " 0.2343, 0.0927, 0.0613, 0.0960, 0.0366, 0.0771, 0.0230, 0.0310,\n", + " -0.0300, 0.0267, -0.0332, -0.0108, 0.1342, 0.2291, 0.1659, 0.1680,\n", + " 0.2268, 0.1943, 0.1139, 0.1632, -0.0558, -0.0220, -0.0269, -0.2442,\n", + " -0.1790, -0.2347, -0.2279]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007494867313653231\n", + "Grad encoder.fc1.bias: 0.0010263489093631506\n", + "Grad encoder.encoder.0.weight: 0.00012865537428297102\n", + "Grad encoder.encoder.0.bias: 0.0007829798851162195\n", + "Grad encoder.encoder.2.weight: 9.570490510668606e-05\n", + "Grad encoder.encoder.2.bias: 0.0007655446534045041\n", + "Grad encoder.encoder.4.weight: 0.00023026751296129078\n", + "Grad encoder.encoder.4.bias: 0.0014732209965586662\n", + "Grad decoder.fc1.0.weight: 7.390537939500064e-05\n", + "Grad decoder.fc1.0.bias: 0.0006543018971569836\n", + "Grad decoder.fc1.2.weight: 6.42714585410431e-05\n", + "Grad decoder.fc1.2.bias: 0.0008383734384551644\n", + "Grad decoder.fc1.4.weight: 5.811503069708124e-05\n", + "Grad decoder.fc1.4.bias: 0.0007801747415214777\n", + "Grad decoder.fc2.weight: 0.00014099912368692458\n", + "Grad decoder.fc2.bias: 0.002006109803915024\n", + "Grad _memory_unit.weight_ih_l0: 2.2375805201590993e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.0814163842005655e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.7711328584700823e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.027518899529241e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010658538667485118\n", + "Grad _memory_unit.bias_hh_l1: 5.730129123548977e-05\n", + "Data X Sample: tensor([[1.5202, 1.6706, 1.8888, 2.1188, 2.2658, 2.2718, 2.5190, 2.6064, 2.5533,\n", + " 2.6002, 2.6774, 2.6817, 2.5189, 2.6147, 2.5068, 2.4739, 2.4545, 2.4624,\n", + " 2.4883, 2.4511, 2.3456, 2.4234, 2.3447, 2.3572, 2.4042, 2.3977, 2.4349,\n", + " 2.3941, 2.1405, 2.3024, 2.2572, 2.1609, 2.2286, 1.4692, 1.9143, 1.7634,\n", + " 1.6243, 1.5080, 1.6670, 1.5831, 1.1025, 0.7189, 0.6649, 1.3692, 1.6887,\n", + " 2.1844, 1.4006, 1.8688]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5488, -0.4054, -0.7071, -1.8161, 0.6064, -0.9293, -0.5260, -0.0766,\n", + " 0.3284, 0.3963, 0.3622, -0.2648, -0.5746, 0.3646, 0.4920, 0.7547,\n", + " -0.6238, 0.0908, -0.1580, 0.2790, 0.7202, -0.1342, -1.0150, 0.1558,\n", + " 0.9595, -0.6954, -1.0257, -1.0988, -1.2234, 0.4855, 1.0976, -0.4366,\n", + " -0.4025, -0.3834, 0.5969, -0.0405, 0.0501, -0.3755, 0.7285, -0.2204,\n", + " -0.8136, -0.1015, -0.0602]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4337, 0.3679, 0.1119, 0.1975, 0.0871, -0.1807, -0.3712, -0.3861,\n", + " -0.2458, -0.2709, -0.2859, 0.1555, 0.1431, 0.3051, 0.2399, 0.3373,\n", + " 0.3193, 0.1149, 0.0663, 0.1379, 0.0444, 0.0865, 0.0487, 0.0301,\n", + " -0.0109, 0.0343, -0.0194, -0.0194, 0.1532, 0.2827, 0.2234, 0.1881,\n", + " 0.2772, 0.2645, 0.1511, 0.2150, -0.0773, -0.0476, -0.0104, -0.3327,\n", + " -0.2577, -0.3081, -0.2732]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00043766197632066905\n", + "Grad encoder.fc1.bias: 0.0011203809408470988\n", + "Grad encoder.encoder.0.weight: 7.95486121205613e-05\n", + "Grad encoder.encoder.0.bias: 0.0005435774219222367\n", + "Grad encoder.encoder.2.weight: 6.120376929175109e-05\n", + "Grad encoder.encoder.2.bias: 0.00039674172876402736\n", + "Grad encoder.encoder.4.weight: 0.00011924133286811411\n", + "Grad encoder.encoder.4.bias: 0.0006387157482095063\n", + "Grad decoder.fc1.0.weight: 5.058618262410164e-05\n", + "Grad decoder.fc1.0.bias: 0.000393143855035305\n", + "Grad decoder.fc1.2.weight: 5.151209552423097e-05\n", + "Grad decoder.fc1.2.bias: 0.0005779571365565062\n", + "Grad decoder.fc1.4.weight: 5.180175503483042e-05\n", + "Grad decoder.fc1.4.bias: 0.0006699776276946068\n", + "Grad decoder.fc2.weight: 0.00013213432976044714\n", + "Grad decoder.fc2.bias: 0.00210891873575747\n", + "Grad _memory_unit.weight_ih_l0: 1.3361612218432128e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.340188388596289e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.3213811800815165e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.333969849947607e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010242230928270146\n", + "Grad _memory_unit.bias_hh_l1: 5.3888488764641806e-05\n", + "Data X Sample: tensor([[1.5562, 1.7813, 1.9279, 2.0379, 2.1719, 2.4058, 2.4389, 2.5227, 2.5411,\n", + " 2.5923, 2.4966, 2.5610, 2.3746, 2.4647, 2.4614, 2.4083, 2.3523, 2.4489,\n", + " 2.4822, 2.4418, 2.4340, 2.5000, 2.5520, 2.6111, 2.5656, 2.6955, 2.5094,\n", + " 2.5736, 2.3348, 2.4007, 2.3202, 2.2438, 2.2396, 1.4395, 1.8629, 1.7147,\n", + " 1.6086, 1.4603, 1.5149, 1.5689, 1.1454, 0.7767, 0.7619, 1.2486, 1.9028,\n", + " 2.0757, 1.3530, 2.0095]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3750, 0.4679, 0.1151, 0.1370, -0.8548, -0.3481, -1.0031, -0.8146,\n", + " -1.7422, -0.8149, -0.6403, 0.5460, -0.5578, 0.7970, -0.2863, 0.1537,\n", + " -0.1369, -0.0617, -0.1968, 0.4731, 0.2224, -0.7563, -0.2122, -0.3909,\n", + " 1.8028, 5.8198, 0.9145, -1.6349, -0.1028, 0.4815, 0.3529, -0.3070,\n", + " 1.2361, -0.2210, 0.0124, -1.6851, 0.5757, -0.5554, -0.4066, -0.4827,\n", + " -0.3569, -0.5529, -1.0010]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 4.7461e-01, 4.3082e-01, 1.1201e-01, 2.2948e-01, 1.0952e-01,\n", + " -2.1923e-01, -4.1407e-01, -4.4292e-01, -2.7519e-01, -3.0170e-01,\n", + " -3.1967e-01, 1.8536e-01, 1.4519e-01, 3.3574e-01, 2.8621e-01,\n", + " 3.6911e-01, 3.8331e-01, 1.3638e-01, 7.1377e-02, 1.6436e-01,\n", + " 6.2566e-02, 9.9657e-02, 6.8196e-02, 2.3059e-02, 6.1623e-04,\n", + " 4.8491e-02, -1.7755e-02, -3.4355e-02, 1.6030e-01, 3.1617e-01,\n", + " 2.5877e-01, 2.0505e-01, 3.1436e-01, 3.1668e-01, 1.8353e-01,\n", + " 2.4837e-01, -9.6082e-02, -6.0536e-02, -1.7982e-04, -3.9916e-01,\n", + " -3.0840e-01, -3.6531e-01, -3.1257e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00024648377439007163\n", + "Grad encoder.fc1.bias: 0.0003705991548486054\n", + "Grad encoder.encoder.0.weight: 6.708003638777882e-05\n", + "Grad encoder.encoder.0.bias: 0.0003374390653334558\n", + "Grad encoder.encoder.2.weight: 6.682990351691842e-05\n", + "Grad encoder.encoder.2.bias: 0.0003736665239557624\n", + "Grad encoder.encoder.4.weight: 0.00020803538791369647\n", + "Grad encoder.encoder.4.bias: 0.0013502081856131554\n", + "Grad decoder.fc1.0.weight: 7.58002424845472e-05\n", + "Grad decoder.fc1.0.bias: 0.000657523691188544\n", + "Grad decoder.fc1.2.weight: 9.55446157604456e-05\n", + "Grad decoder.fc1.2.bias: 0.0009490331285633147\n", + "Grad decoder.fc1.4.weight: 8.408176654484123e-05\n", + "Grad decoder.fc1.4.bias: 0.0009005334577523172\n", + "Grad decoder.fc2.weight: 0.00016898714238777757\n", + "Grad decoder.fc2.bias: 0.0022812853567302227\n", + "Grad _memory_unit.weight_ih_l0: 2.2213906049728394e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.813284224132076e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.159107291139662e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.000329757516738e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00014510343316942453\n", + "Grad _memory_unit.bias_hh_l1: 7.690927304793149e-05\n", + "Data X Sample: tensor([[ 0.0138, 0.0189, 0.0210, 0.0306, 0.0068, 0.0339, 0.0231, 0.0213,\n", + " 0.0122, 0.0316, 0.0381, 0.0175, 0.0222, 0.0245, 0.0277, 0.0191,\n", + " -0.1132, -0.1219, -0.1549, -0.1413, -0.1497, -0.0949, -0.1325, -0.1145,\n", + " -0.0995, -0.2272, -0.2158, -0.3752, -0.0243, -0.0360, -0.0595, -0.0414,\n", + " -0.0132, -0.0389, 0.0074, 0.0365, -0.0079, -0.0027, -0.0063, -0.0255,\n", + " 0.0286, 0.0199, 0.0040, 0.0057, 0.0317, 0.0457, 0.0476, -0.0078]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.4886, 1.4517, 0.5906, 1.3277, 0.4561, -0.7125, -1.6728, -1.4004,\n", + " -0.6951, -0.9702, -0.7882, -0.7756, 0.4147, 0.6832, -0.0626, 0.3165,\n", + " -0.2978, 0.7103, 0.2149, -0.1984, 0.2079, -0.6283, -0.3484, -0.6848,\n", + " -0.3700, 0.0556, -1.1670, 0.3435, 1.3074, 0.8891, 0.2589, 1.8359,\n", + " 0.6047, 0.7719, 0.4276, 0.7892, -0.6348, 0.3946, -1.0868, -1.3013,\n", + " -0.6123, -0.5625, -0.7497]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5281, 0.4178, 0.1422, 0.2525, 0.0488, -0.2295, -0.5236, -0.5444,\n", + " -0.3241, -0.3469, -0.3080, 0.2305, 0.1562, 0.3510, 0.2471, 0.3749,\n", + " 0.3887, 0.1440, 0.0905, 0.1552, 0.0677, 0.0729, 0.0543, 0.0672,\n", + " 0.0121, 0.0594, -0.0013, 0.0380, 0.2348, 0.3653, 0.3301, 0.2697,\n", + " 0.3700, 0.3536, 0.1869, 0.2357, -0.0658, -0.0276, -0.0153, -0.4260,\n", + " -0.3547, -0.3710, -0.2961]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005953987129032612\n", + "Grad encoder.fc1.bias: 0.0009576153825037181\n", + "Grad encoder.encoder.0.weight: 9.715402848087251e-05\n", + "Grad encoder.encoder.0.bias: 0.0005690719117410481\n", + "Grad encoder.encoder.2.weight: 7.336017733905464e-05\n", + "Grad encoder.encoder.2.bias: 0.0005458152154460549\n", + "Grad encoder.encoder.4.weight: 0.00015702229575254023\n", + "Grad encoder.encoder.4.bias: 0.0012181401252746582\n", + "Grad decoder.fc1.0.weight: 6.188063707668334e-05\n", + "Grad decoder.fc1.0.bias: 0.0006409614579752088\n", + "Grad decoder.fc1.2.weight: 5.447979492601007e-05\n", + "Grad decoder.fc1.2.bias: 0.0005656405701301992\n", + "Grad decoder.fc1.4.weight: 4.1582290577935055e-05\n", + "Grad decoder.fc1.4.bias: 0.0005978714325465262\n", + "Grad decoder.fc2.weight: 0.00013040745398029685\n", + "Grad decoder.fc2.bias: 0.0018227427499368787\n", + "Grad _memory_unit.weight_ih_l0: 1.5152356354519725e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.493663047673181e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.099384412053041e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.521876225131564e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00013083296653348953\n", + "Grad _memory_unit.bias_hh_l1: 7.023042417131364e-05\n", + "Data X Sample: tensor([[1.4226, 1.7099, 1.8693, 2.0969, 2.1872, 2.2585, 2.4004, 2.4063, 2.5020,\n", + " 2.5291, 2.5759, 2.5941, 2.5233, 2.4756, 2.4488, 2.3016, 2.2847, 2.4238,\n", + " 2.3521, 2.3209, 2.4168, 2.3790, 2.4580, 2.4374, 2.4436, 2.5544, 2.5041,\n", + " 2.4961, 2.2723, 2.3843, 2.3132, 2.3682, 2.2352, 1.5196, 1.9511, 1.7950,\n", + " 1.6105, 1.4815, 1.5719, 1.5377, 1.2552, 0.6851, 0.6912, 1.2429, 1.7958,\n", + " 2.0242, 1.4142, 2.0408]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4128, -0.0204, 0.5930, 0.9557, 0.9951, -0.7376, -0.6491, -0.7059,\n", + " -0.7356, -0.7427, -0.5588, 0.3041, 0.5018, 0.2117, -1.4181, -0.3178,\n", + " 0.5161, 0.0800, -0.6597, 1.2397, 0.0926, 0.9564, 0.6839, -0.4732,\n", + " 0.1935, 0.0489, 0.0731, -0.2362, 0.7159, 0.5736, 0.6611, 0.3723,\n", + " 0.6116, 0.6567, 1.0345, -0.6051, -0.7493, 0.9007, -0.2944, -0.3897,\n", + " -0.6395, -0.3105, -0.2414]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4757, 0.4513, 0.1119, 0.2359, 0.1149, -0.2353, -0.4243, -0.4601,\n", + " -0.2730, -0.3013, -0.3162, 0.1977, 0.1376, 0.3459, 0.2992, 0.3734,\n", + " 0.3947, 0.1463, 0.0743, 0.1659, 0.0710, 0.1019, 0.0742, 0.0141,\n", + " 0.0130, 0.0709, -0.0153, -0.0415, 0.1567, 0.3190, 0.2716, 0.2114,\n", + " 0.3204, 0.3335, 0.1894, 0.2474, -0.0902, -0.0494, 0.0049, -0.4134,\n", + " -0.3228, -0.3838, -0.3249]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00015496450942009687\n", + "Grad encoder.fc1.bias: 0.0004348362563177943\n", + "Grad encoder.encoder.0.weight: 4.039730265503749e-05\n", + "Grad encoder.encoder.0.bias: 0.00024271762231364846\n", + "Grad encoder.encoder.2.weight: 3.762646883842535e-05\n", + "Grad encoder.encoder.2.bias: 0.00027235448942519724\n", + "Grad encoder.encoder.4.weight: 8.322745270561427e-05\n", + "Grad encoder.encoder.4.bias: 0.0007145066047087312\n", + "Grad decoder.fc1.0.weight: 4.12517438235227e-05\n", + "Grad decoder.fc1.0.bias: 0.0004444104270078242\n", + "Grad decoder.fc1.2.weight: 5.0511422159615904e-05\n", + "Grad decoder.fc1.2.bias: 0.0005175723927095532\n", + "Grad decoder.fc1.4.weight: 4.29502542829141e-05\n", + "Grad decoder.fc1.4.bias: 0.0005159564898349345\n", + "Grad decoder.fc2.weight: 0.00011243868357269093\n", + "Grad decoder.fc2.bias: 0.0017657323041930795\n", + "Grad _memory_unit.weight_ih_l0: 9.216489161190111e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.7527632230194286e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.9031305782846175e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.044883098686114e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.498616807628423e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.3840518628712744e-05\n", + "Data X Sample: tensor([[1.5966, 1.7449, 1.9534, 2.0641, 2.1889, 2.3499, 2.3218, 2.4361, 2.3507,\n", + " 2.4723, 2.4807, 2.4811, 2.3857, 2.3066, 2.3529, 2.3823, 2.3806, 2.3735,\n", + " 2.4677, 2.4678, 2.5370, 2.5199, 2.4941, 2.5271, 2.5656, 2.6432, 2.5414,\n", + " 2.5777, 2.2411, 2.4072, 2.2607, 2.2134, 2.1098, 1.4051, 1.8923, 1.6709,\n", + " 1.5575, 1.4815, 1.5783, 1.5661, 1.2361, 0.7309, 0.7579, 1.3232, 1.8949,\n", + " 1.9785, 1.4414, 1.9470]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2622, 0.6101, -0.7497, -0.1796, 0.0597, 0.3532, 0.3417, 0.3977,\n", + " 0.3200, 0.4487, 0.0824, 0.1299, 0.1042, 0.5774, -0.8023, 0.0919,\n", + " 0.4732, 1.0200, 0.9330, -1.1526, 0.5620, -0.9235, -0.3877, -0.6458,\n", + " -0.2243, -1.3836, -0.7252, 0.2805, -0.1983, 0.2172, -0.4165, 0.2769,\n", + " 0.7337, -0.6201, -1.1964, 0.0572, -0.6417, -0.0920, -0.7130, -0.4154,\n", + " 0.9345, -0.2983, -0.3661]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4688, 0.4619, 0.1130, 0.2352, 0.1197, -0.2462, -0.4251, -0.4669,\n", + " -0.2721, -0.3007, -0.3161, 0.2028, 0.1314, 0.3469, 0.3052, 0.3721,\n", + " 0.3974, 0.1499, 0.0721, 0.1638, 0.0754, 0.1033, 0.0739, 0.0039,\n", + " 0.0185, 0.0825, -0.0121, -0.0450, 0.1569, 0.3218, 0.2813, 0.2121,\n", + " 0.3200, 0.3391, 0.1931, 0.2464, -0.0860, -0.0389, 0.0089, -0.4180,\n", + " -0.3268, -0.3931, -0.3311]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0015312921022996306\n", + "Grad encoder.fc1.bias: 0.0008921865955926478\n", + "Grad encoder.encoder.0.weight: 0.00025166035629808903\n", + "Grad encoder.encoder.0.bias: 0.001074364990927279\n", + "Grad encoder.encoder.2.weight: 0.00018754680058918893\n", + "Grad encoder.encoder.2.bias: 0.001309660729020834\n", + "Grad encoder.encoder.4.weight: 0.0004030380514450371\n", + "Grad encoder.encoder.4.bias: 0.0034307611640542746\n", + "Grad decoder.fc1.0.weight: 0.00013542566739488393\n", + "Grad decoder.fc1.0.bias: 0.0014992386568337679\n", + "Grad decoder.fc1.2.weight: 0.00014967998140491545\n", + "Grad decoder.fc1.2.bias: 0.0019138428615406156\n", + "Grad decoder.fc1.4.weight: 0.0001361026952508837\n", + "Grad decoder.fc1.4.bias: 0.0018081029411405325\n", + "Grad decoder.fc2.weight: 0.00022095695021562278\n", + "Grad decoder.fc2.bias: 0.0032958851661533117\n", + "Grad _memory_unit.weight_ih_l0: 3.6074248782824725e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00014749901311006397\n", + "Grad _memory_unit.bias_hh_l0: 7.64667711337097e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.7684615158941597e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0003203812811989337\n", + "Grad _memory_unit.bias_hh_l1: 0.00016795621195342392\n", + "Data X Sample: tensor([[1.1627, 1.3546, 1.4936, 1.5809, 1.8509, 1.7768, 3.2955, 4.1098, 4.1521,\n", + " 4.2905, 4.0732, 3.9593, 3.7461, 3.6426, 3.5407, 3.4257, 3.3633, 3.3619,\n", + " 3.3660, 3.2861, 3.3639, 3.3297, 2.9689, 2.8344, 2.7120, 2.7347, 2.7732,\n", + " 2.8468, 2.8655, 2.9804, 3.0971, 3.0949, 3.3089, 2.3732, 4.0591, 4.5872,\n", + " 4.8474, 5.2263, 5.7616, 5.6374, 0.9498, 0.5277, 0.5356, 0.9530, 1.4509,\n", + " 1.4524, 1.0742, 1.4387]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3695, -0.7131, 0.9787, 0.8716, -0.2381, 0.0443, 0.2892, 0.2276,\n", + " 0.7041, -0.4467, -0.5174, -0.3953, -0.2195, 0.2936, -0.8688, 0.2890,\n", + " -0.4134, -0.8694, -0.7060, 0.9657, -1.2116, 0.1889, -0.2415, -0.5654,\n", + " -0.3155, -0.2451, -0.7642, -1.4608, 0.1068, -1.0704, -1.3048, 0.3865,\n", + " -0.1327, -0.3160, -0.4910, 0.6463, -0.8394, 0.5488, 0.5826, 0.0874,\n", + " -0.0188, 0.1330, 0.6933]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1344, -0.1704, -0.0388, -0.1229, -0.0842, 0.0401, 0.1197, 0.2113,\n", + " 0.1435, 0.1541, 0.1647, -0.1340, -0.0778, -0.1823, -0.1471, -0.1584,\n", + " -0.1453, -0.0577, -0.0540, -0.0811, -0.0601, 0.0174, -0.0468, -0.0523,\n", + " -0.0451, 0.0495, -0.0150, -0.0758, -0.0786, -0.1080, -0.1885, -0.1465,\n", + " -0.1525, -0.1827, -0.1058, -0.1415, -0.0332, 0.0220, -0.0225, 0.2152,\n", + " 0.2389, 0.2366, 0.1631]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007246208842843771\n", + "Grad encoder.fc1.bias: 0.0003026244812645018\n", + "Grad encoder.encoder.0.weight: 9.725378185976297e-05\n", + "Grad encoder.encoder.0.bias: 0.000341104983817786\n", + "Grad encoder.encoder.2.weight: 7.230517803691328e-05\n", + "Grad encoder.encoder.2.bias: 0.00043608222040347755\n", + "Grad encoder.encoder.4.weight: 0.00012334321218077093\n", + "Grad encoder.encoder.4.bias: 0.0009801012929528952\n", + "Grad decoder.fc1.0.weight: 4.774787157657556e-05\n", + "Grad decoder.fc1.0.bias: 0.00042742042569443583\n", + "Grad decoder.fc1.2.weight: 3.84844170184806e-05\n", + "Grad decoder.fc1.2.bias: 0.00038332503754645586\n", + "Grad decoder.fc1.4.weight: 4.121486563235521e-05\n", + "Grad decoder.fc1.4.bias: 0.0005995124229229987\n", + "Grad decoder.fc2.weight: 0.00010834653949132189\n", + "Grad decoder.fc2.bias: 0.0015985665377229452\n", + "Grad _memory_unit.weight_ih_l0: 1.2015992069791537e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.2258288885932416e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.1578598534688354e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.31812247572816e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.889366290532053e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.594105848809704e-05\n", + "Data X Sample: tensor([[1.3611, 1.4623, 1.7415, 1.8892, 1.9397, 1.8681, 1.9043, 2.0088, 3.1880,\n", + " 4.1152, 4.1272, 4.1637, 3.8704, 3.8934, 3.7627, 3.6268, 3.5316, 3.5264,\n", + " 3.4341, 3.4163, 3.4301, 3.3359, 2.8942, 2.8535, 2.7833, 2.9880, 2.9836,\n", + " 2.9855, 2.9210, 3.0491, 3.1986, 3.4486, 3.6103, 2.6844, 4.3876, 4.6942,\n", + " 4.9162, 5.2475, 5.6285, 5.5069, 1.1407, 0.5755, 0.6144, 1.1223, 1.5738,\n", + " 1.9385, 1.1966, 1.7359]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6813, -1.0569, -1.1345, -0.8471, 0.0753, 0.3400, 0.1088, 0.3518,\n", + " 0.1383, 0.4883, 0.6347, 0.7236, -1.2133, 0.3508, 0.2146, 0.5626,\n", + " -1.4319, -1.0106, 0.3301, -0.0474, -0.3882, -0.1830, 0.4044, -1.0326,\n", + " -1.1377, -3.5226, 0.2483, -0.1920, 0.7498, -0.7754, -0.3633, -0.6703,\n", + " -0.5475, -0.9767, 0.7473, -0.8463, 0.0213, 0.3857, -0.3712, 0.6775,\n", + " 0.8111, 0.6407, 0.7367]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1911, -0.2241, -0.0468, -0.1244, -0.0343, 0.0838, 0.1621, 0.2550,\n", + " 0.1737, 0.1914, 0.2018, -0.1676, -0.1219, -0.2579, -0.1817, -0.2067,\n", + " -0.1455, -0.0667, -0.0704, -0.0778, -0.0898, 0.0090, -0.0422, -0.0520,\n", + " -0.0324, 0.0466, -0.0344, -0.1073, -0.1213, -0.1657, -0.2358, -0.1905,\n", + " -0.2244, -0.2344, -0.1277, -0.1545, -0.0325, 0.0153, -0.0026, 0.2599,\n", + " 0.2624, 0.2835, 0.2171]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0008820552611723542\n", + "Grad encoder.fc1.bias: 0.0004073446034453809\n", + "Grad encoder.encoder.0.weight: 0.00012827879982069135\n", + "Grad encoder.encoder.0.bias: 0.0004825429932679981\n", + "Grad encoder.encoder.2.weight: 8.373565651709214e-05\n", + "Grad encoder.encoder.2.bias: 0.0005469865864142776\n", + "Grad encoder.encoder.4.weight: 0.0001530785666545853\n", + "Grad encoder.encoder.4.bias: 0.0014131645439192653\n", + "Grad decoder.fc1.0.weight: 5.567517291638069e-05\n", + "Grad decoder.fc1.0.bias: 0.0006066685309633613\n", + "Grad decoder.fc1.2.weight: 4.947492925566621e-05\n", + "Grad decoder.fc1.2.bias: 0.0006935556884855032\n", + "Grad decoder.fc1.4.weight: 4.7966088459361345e-05\n", + "Grad decoder.fc1.4.bias: 0.0006257821223698556\n", + "Grad decoder.fc2.weight: 0.0001140084132202901\n", + "Grad decoder.fc2.bias: 0.0013840680476278067\n", + "Grad _memory_unit.weight_ih_l0: 1.4354011000250466e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.546623626491055e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.362559073138982e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.373703738267068e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011431032908149064\n", + "Grad _memory_unit.bias_hh_l1: 5.950067861704156e-05\n", + "Data X Sample: tensor([[1.5011, 1.6051, 1.7911, 1.8061, 2.0489, 2.1259, 2.1523, 1.9349, 2.9561,\n", + " 3.9730, 4.0352, 3.8502, 3.9370, 3.7243, 3.6391, 3.5173, 3.4498, 3.4122,\n", + " 3.2999, 3.3865, 3.4130, 3.3619, 3.0725, 2.8573, 2.8659, 2.9567, 2.8584,\n", + " 2.8876, 2.8725, 2.8199, 3.0726, 3.0479, 3.4409, 2.4670, 4.1155, 4.5896,\n", + " 4.8080, 5.2475, 5.6792, 5.5097, 1.0929, 0.6472, 0.6629, 1.1625, 1.6887,\n", + " 1.7841, 1.2578, 1.6108]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.9200, 0.1770, -1.0045, -0.4226, -1.3006, -0.4862, 0.2381, 0.5773,\n", + " 1.4159, 1.0293, 0.8732, -0.4128, -0.2740, -0.1064, -0.8800, -0.7491,\n", + " -0.1493, 1.7466, -0.8202, 1.1350, -1.1419, 1.4025, -1.9943, 0.4421,\n", + " -0.5151, -0.3227, -0.4319, 1.6658, -0.9226, -0.6141, -0.6279, -0.5359,\n", + " -2.1736, -0.0846, -0.7249, -0.4759, -0.0344, 0.7952, 1.0325, 0.4937,\n", + " 0.3325, 0.7680, -0.5322]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2012, -0.2284, -0.0476, -0.1263, -0.0257, 0.0842, 0.1645, 0.2559,\n", + " 0.1758, 0.1956, 0.2047, -0.1684, -0.1289, -0.2648, -0.1839, -0.2108,\n", + " -0.1438, -0.0667, -0.0723, -0.0743, -0.0918, 0.0074, -0.0375, -0.0483,\n", + " -0.0294, 0.0471, -0.0328, -0.1067, -0.1226, -0.1734, -0.2378, -0.1956,\n", + " -0.2323, -0.2385, -0.1273, -0.1545, -0.0327, 0.0165, -0.0006, 0.2628,\n", + " 0.2635, 0.2890, 0.2256]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002671449619811028\n", + "Grad encoder.fc1.bias: 0.0023163699079304934\n", + "Grad encoder.encoder.0.weight: 7.702455332037061e-05\n", + "Grad encoder.encoder.0.bias: 0.0013808225048705935\n", + "Grad encoder.encoder.2.weight: 7.928561535663903e-05\n", + "Grad encoder.encoder.2.bias: 0.0009038172429427505\n", + "Grad encoder.encoder.4.weight: 0.00018364607240073383\n", + "Grad encoder.encoder.4.bias: 0.0017567274626344442\n", + "Grad decoder.fc1.0.weight: 8.060294203460217e-05\n", + "Grad decoder.fc1.0.bias: 0.0008813454769551754\n", + "Grad decoder.fc1.2.weight: 0.00011941278353333473\n", + "Grad decoder.fc1.2.bias: 0.0014109129551798105\n", + "Grad decoder.fc1.4.weight: 9.473061072640121e-05\n", + "Grad decoder.fc1.4.bias: 0.0014214070979505777\n", + "Grad decoder.fc2.weight: 0.00016092928126454353\n", + "Grad decoder.fc2.bias: 0.002616702113300562\n", + "Grad _memory_unit.weight_ih_l0: 2.1518295397982e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.682591967750341e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.079991776961833e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.232667823904194e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00018989101226907223\n", + "Grad _memory_unit.bias_hh_l1: 0.00010000180918723345\n", + "Data X Sample: tensor([[2.5895, 3.0077, 3.1570, 3.4023, 3.4815, 3.5653, 3.7839, 3.7350, 3.8226,\n", + " 4.1136, 3.9559, 3.9943, 3.7861, 3.6889, 3.4550, 3.5160, 3.4577, 3.4490,\n", + " 3.3144, 3.3531, 3.2584, 3.6880, 3.1183, 2.8020, 2.7214, 2.8000, 2.7492,\n", + " 2.6633, 2.8517, 2.9411, 2.9921, 2.9872, 3.0427, 2.2862, 3.6963, 4.1591,\n", + " 4.3892, 4.7360, 5.3686, 5.1267, 2.0618, 1.1550, 1.1318, 2.0896, 2.9176,\n", + " 3.1965, 2.1893, 3.0964]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7662, -0.8217, -2.3431, 0.8946, -0.4632, 0.8976, -1.4861, 0.8492,\n", + " -0.5988, -0.4462, -0.5437, 0.2271, 0.9076, 0.6055, -0.3253, -0.7178,\n", + " -0.0631, 0.2871, -0.6179, -0.0840, 0.0696, 0.2273, 0.4052, 0.3576,\n", + " 0.1187, 0.2443, 0.5356, 1.0270, -0.1831, -1.1481, 1.2029, 0.6624,\n", + " 0.4058, -0.1387, 1.0088, 1.0322, -0.4229, 0.7428, -0.4768, -0.1401,\n", + " -1.9822, 0.1702, -1.0436]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.0963, -0.1531, -0.0341, -0.1419, -0.1217, -0.0003, 0.0365, 0.1572,\n", + " 0.0970, 0.1200, 0.1008, -0.1036, -0.0335, -0.1140, -0.1056, -0.0920,\n", + " -0.1530, -0.0617, -0.0388, -0.0786, -0.0371, 0.0338, -0.0555, -0.0477,\n", + " -0.0026, 0.0264, 0.0344, -0.0203, -0.0075, -0.0595, -0.1260, -0.0877,\n", + " -0.0599, -0.1244, -0.0665, -0.0976, -0.0148, 0.0565, -0.0473, 0.1861,\n", + " 0.2006, 0.1815, 0.1148]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00028786383336409926\n", + "Grad encoder.fc1.bias: 0.00013987888814881444\n", + "Grad encoder.encoder.0.weight: 4.9586691602598876e-05\n", + "Grad encoder.encoder.0.bias: 0.0001597980735823512\n", + "Grad encoder.encoder.2.weight: 3.832720540231094e-05\n", + "Grad encoder.encoder.2.bias: 0.0002457027439959347\n", + "Grad encoder.encoder.4.weight: 9.0420973720029e-05\n", + "Grad encoder.encoder.4.bias: 0.001527838408946991\n", + "Grad decoder.fc1.0.weight: 4.443257057573646e-05\n", + "Grad decoder.fc1.0.bias: 0.000572537537664175\n", + "Grad decoder.fc1.2.weight: 5.66522212466225e-05\n", + "Grad decoder.fc1.2.bias: 0.0008016736246645451\n", + "Grad decoder.fc1.4.weight: 5.1796094339806587e-05\n", + "Grad decoder.fc1.4.bias: 0.0008489856263622642\n", + "Grad decoder.fc2.weight: 0.00011888046719832346\n", + "Grad decoder.fc2.bias: 0.0024871090427041054\n", + "Grad _memory_unit.weight_ih_l0: 1.0428322639199905e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.124744974542409e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.737985000247136e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.6097987908287905e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00016063985822256655\n", + "Grad _memory_unit.bias_hh_l1: 8.381719817407429e-05\n", + "Data X Sample: tensor([[1.5966, 1.8527, 1.9669, 2.1559, 2.2709, 2.2909, 2.3449, 2.3693, 2.4019,\n", + " 2.4881, 2.5378, 2.5902, 2.4123, 2.3284, 2.3353, 2.3153, 2.3476, 2.3619,\n", + " 2.5668, 2.4864, 2.5272, 2.6408, 2.6002, 2.5443, 2.6595, 2.7085, 2.6586,\n", + " 2.5206, 2.4041, 2.4105, 2.3797, 2.3599, 2.1626, 1.4372, 1.8629, 1.7463,\n", + " 1.5889, 1.5398, 1.6226, 1.6455, 1.2743, 0.7229, 0.7538, 1.2974, 1.9345,\n", + " 2.1500, 1.5366, 2.0017]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.9611e-01, -7.9937e-02, 1.9718e-01, 4.8874e-01, -7.3059e-01,\n", + " 1.4076e-01, -6.9255e-02, -5.6323e-01, 3.0780e-01, 3.7231e-01,\n", + " 4.3925e-01, -1.1445e+00, 6.4806e-01, 2.2196e-01, 4.9805e-01,\n", + " 1.1908e+00, -7.1714e-02, 6.5125e-01, -2.5667e-01, -8.6972e-01,\n", + " -1.5352e-01, 4.4578e-01, 3.5962e-01, -5.7550e-01, -7.1406e-01,\n", + " 1.0840e+00, -6.5375e-01, 2.6990e-01, -5.8606e-01, 1.1284e+00,\n", + " -4.7439e-01, 8.4810e-01, -1.0648e+00, -7.2823e-01, 7.5882e-01,\n", + " 4.2893e-01, -1.8197e-02, 0.0000e+00, -9.4994e-01, -9.2866e-01,\n", + " 1.5296e+00, 3.7124e-01, 1.2630e-03]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3585, 0.4020, 0.1105, 0.1754, 0.0994, -0.2311, -0.3692, -0.3923,\n", + " -0.2294, -0.2412, -0.2735, 0.1665, 0.1163, 0.2995, 0.2592, 0.3140,\n", + " 0.3002, 0.1278, 0.0488, 0.1088, 0.0622, 0.0854, 0.0402, -0.0231,\n", + " 0.0537, 0.1022, 0.0150, -0.0314, 0.1537, 0.2661, 0.2449, 0.1901,\n", + " 0.2509, 0.2802, 0.1602, 0.1915, -0.0422, 0.0190, -0.0055, -0.3187,\n", + " -0.2648, -0.3271, -0.2990]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007037188624963164\n", + "Grad encoder.fc1.bias: 0.0005513880169019103\n", + "Grad encoder.encoder.0.weight: 0.0001429075055057183\n", + "Grad encoder.encoder.0.bias: 0.0005981262074783444\n", + "Grad encoder.encoder.2.weight: 0.00012299098307266831\n", + "Grad encoder.encoder.2.bias: 0.0008294754079543054\n", + "Grad encoder.encoder.4.weight: 0.00026001204969361424\n", + "Grad encoder.encoder.4.bias: 0.0020905043929815292\n", + "Grad decoder.fc1.0.weight: 9.540680184727535e-05\n", + "Grad decoder.fc1.0.bias: 0.0008412942988798022\n", + "Grad decoder.fc1.2.weight: 8.285230433102697e-05\n", + "Grad decoder.fc1.2.bias: 0.000756403140258044\n", + "Grad decoder.fc1.4.weight: 7.587229629280046e-05\n", + "Grad decoder.fc1.4.bias: 0.000685575301758945\n", + "Grad decoder.fc2.weight: 0.00017637656128499657\n", + "Grad decoder.fc2.bias: 0.002074119634926319\n", + "Grad _memory_unit.weight_ih_l0: 4.1660608985694125e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00013109558494761586\n", + "Grad _memory_unit.bias_hh_l0: 6.859795394120738e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.6344318282790482e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002238671004306525\n", + "Grad _memory_unit.bias_hh_l1: 0.00011977078975178301\n", + "Data X Sample: tensor([[1.3727, 1.5847, 1.8197, 1.8454, 2.0711, 1.9948, 2.1153, 1.9633, 3.3076,\n", + " 4.1641, 4.2572, 4.4792, 4.1012, 3.9043, 3.8585, 3.6131, 3.5677, 3.5534,\n", + " 3.5394, 3.4460, 3.3958, 3.3772, 2.9737, 2.7027, 2.8621, 2.8652, 2.9783,\n", + " 3.0385, 2.9974, 3.0524, 3.1846, 3.3823, 3.8721, 2.8240, 4.6523, 4.9763,\n", + " 5.0460, 5.4887, 5.9518, 5.9097, 1.1120, 0.6273, 0.6245, 1.1482, 1.6451,\n", + " 1.7612, 1.2578, 1.6655]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0603, 0.0368, -0.4900, 0.6865, 0.0513, 0.6455, -0.1703, -0.1400,\n", + " 0.0340, 0.0341, -0.5344, -0.5793, 0.1193, 0.7451, 1.2237, 0.9029,\n", + " 0.5301, 0.0261, 0.3525, -1.0601, -0.1537, 0.3560, -0.9950, 0.4610,\n", + " -0.3922, 0.7532, -1.6010, 0.3273, 0.1114, -0.6365, 1.5262, -0.2007,\n", + " 0.5045, -1.1099, 0.1666, 1.3343, 0.8781, -0.7060, 0.0000, 0.0252,\n", + " 0.2615, -1.2908, -0.7751]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2507, -0.2690, -0.0572, -0.1090, 0.0404, 0.1367, 0.1926, 0.2912,\n", + " 0.1928, 0.2270, 0.2293, -0.1957, -0.1760, -0.3265, -0.2067, -0.2508,\n", + " -0.1336, -0.0693, -0.0910, -0.0695, -0.1079, 0.0047, -0.0273, -0.0448,\n", + " -0.0098, 0.0430, -0.0589, -0.1305, -0.1692, -0.2234, -0.2815, -0.2268,\n", + " -0.2996, -0.2745, -0.1371, -0.1662, -0.0331, 0.0076, 0.0230, 0.2953,\n", + " 0.2750, 0.3252, 0.2673]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0035382751375436783\n", + "Grad encoder.fc1.bias: 0.0016009962419047952\n", + "Grad encoder.encoder.0.weight: 0.0004397918819449842\n", + "Grad encoder.encoder.0.bias: 0.0015141244512051344\n", + "Grad encoder.encoder.2.weight: 0.00023972435155883431\n", + "Grad encoder.encoder.2.bias: 0.0014354755403473973\n", + "Grad encoder.encoder.4.weight: 0.0004014227888546884\n", + "Grad encoder.encoder.4.bias: 0.002870694501325488\n", + "Grad decoder.fc1.0.weight: 0.00011649815860437229\n", + "Grad decoder.fc1.0.bias: 0.0009170637931674719\n", + "Grad decoder.fc1.2.weight: 0.0001136610735557042\n", + "Grad decoder.fc1.2.bias: 0.0012752424227073789\n", + "Grad decoder.fc1.4.weight: 0.00011414616892579943\n", + "Grad decoder.fc1.4.bias: 0.0011131372302770615\n", + "Grad decoder.fc2.weight: 0.0002789886493701488\n", + "Grad decoder.fc2.bias: 0.0024413245264440775\n", + "Grad _memory_unit.weight_ih_l0: 5.132604201207869e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00017526387819088995\n", + "Grad _memory_unit.bias_hh_l0: 9.139687608694658e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.104766281263437e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00025284511502832174\n", + "Grad _memory_unit.bias_hh_l1: 0.00013576055062003434\n", + "Data X Sample: tensor([[1.3070, 1.3706, 1.5161, 1.6989, 1.8901, 2.0257, 1.8966, 2.0073, 2.4093,\n", + " 3.3142, 4.1557, 4.0118, 3.9015, 3.7843, 3.6492, 3.4599, 3.3916, 3.4451,\n", + " 3.4630, 3.3940, 3.4449, 3.3236, 2.9014, 2.8325, 2.8640, 3.0037, 3.0502,\n", + " 3.0875, 3.0459, 3.3144, 3.3000, 3.3906, 3.7115, 2.6959, 4.4317, 4.7210,\n", + " 4.9614, 5.3084, 5.8440, 5.7395, 0.9927, 0.5636, 0.5719, 1.0391, 1.4033,\n", + " 1.6240, 1.2170, 1.5482]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1587, 1.1761, -1.1608, 0.5960, 0.0779, 0.1003, -0.2164, -1.1643,\n", + " -0.8183, 0.4916, -0.1566, 2.1296, 0.2572, -0.5703, -0.0883, -1.0028,\n", + " -0.8430, -0.0437, 3.5431, -0.1856, 0.1702, -0.8120, -0.4575, 0.0052,\n", + " 0.2017, -0.7045, -0.4113, -0.5012, -1.4559, -0.1284, -0.2156, 0.1287,\n", + " 0.7516, -0.0059, -0.3409, 0.4165, 0.0454, 0.9317, 0.9557, -1.3274,\n", + " 0.4454, -0.3652, 0.3143]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2391, -0.2537, -0.0454, -0.0917, 0.0568, 0.1460, 0.1798, 0.2762,\n", + " 0.1736, 0.2189, 0.2250, -0.1938, -0.1815, -0.3209, -0.1961, -0.2419,\n", + " -0.1219, -0.0590, -0.0941, -0.0568, -0.0950, 0.0057, -0.0204, -0.0431,\n", + " -0.0086, 0.0416, -0.0692, -0.1280, -0.1771, -0.2239, -0.2803, -0.2145,\n", + " -0.3046, -0.2662, -0.1324, -0.1656, -0.0383, 0.0057, 0.0317, 0.2799,\n", + " 0.2580, 0.3126, 0.2581]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003064578049816191\n", + "Grad encoder.fc1.bias: 0.00010908214608207345\n", + "Grad encoder.encoder.0.weight: 5.243601117399521e-05\n", + "Grad encoder.encoder.0.bias: 0.0001501123479101807\n", + "Grad encoder.encoder.2.weight: 4.21778422605712e-05\n", + "Grad encoder.encoder.2.bias: 0.00023218709975481033\n", + "Grad encoder.encoder.4.weight: 9.336390940006822e-05\n", + "Grad encoder.encoder.4.bias: 0.0008161533623933792\n", + "Grad decoder.fc1.0.weight: 3.613446460803971e-05\n", + "Grad decoder.fc1.0.bias: 0.0003800016129389405\n", + "Grad decoder.fc1.2.weight: 3.5653596569318324e-05\n", + "Grad decoder.fc1.2.bias: 0.00044246824108995497\n", + "Grad decoder.fc1.4.weight: 3.714881313499063e-05\n", + "Grad decoder.fc1.4.bias: 0.0005376680637709796\n", + "Grad decoder.fc2.weight: 8.864650590112433e-05\n", + "Grad decoder.fc2.bias: 0.0018880069255828857\n", + "Grad _memory_unit.weight_ih_l0: 8.345232345163822e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.982067599077709e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.5646786778233945e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.3307369449175894e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.314941128948703e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.2423158700112253e-05\n", + "Data X Sample: tensor([[1.5032, 1.6852, 1.9189, 2.0269, 2.0267, 2.0861, 2.1924, 2.2842, 2.2921,\n", + " 2.3838, 2.2809, 2.3662, 2.3946, 2.2003, 2.2016, 2.1799, 2.1793, 2.2961,\n", + " 2.3706, 2.3860, 2.3972, 2.4020, 2.4146, 2.4450, 2.4905, 2.5388, 2.5894,\n", + " 2.5573, 2.3209, 2.4826, 2.5232, 2.4538, 2.2176, 1.4074, 1.9462, 1.7999,\n", + " 1.6715, 1.5053, 1.5402, 1.5349, 1.3172, 0.6711, 0.7599, 1.2371, 1.8751,\n", + " 2.0814, 1.2782, 1.9470]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5309, 0.8591, 0.4374, 1.0085, 0.1868, 0.3250, -0.6329, -1.0670,\n", + " -0.4465, -0.5037, -0.6059, 0.6928, -0.3399, -0.3933, 0.8394, 0.3829,\n", + " 0.4893, 0.1389, 0.4481, 1.1031, -0.1645, -0.2561, -0.0760, -1.4061,\n", + " 0.0783, 0.3309, 0.5368, -0.5167, 0.0245, -0.2270, 0.7878, 0.0990,\n", + " 0.3911, 0.0706, 0.4730, 0.0222, -1.0293, -0.7725, 0.2253, -0.4282,\n", + " -0.4924, 0.0029, 0.0642]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3245, 0.3855, 0.1074, 0.1668, 0.0904, -0.2235, -0.3710, -0.3955,\n", + " -0.2264, -0.2198, -0.2587, 0.1665, 0.1094, 0.2751, 0.2416, 0.2809,\n", + " 0.2837, 0.1376, 0.0386, 0.0875, 0.0709, 0.0848, 0.0316, -0.0311,\n", + " 0.0629, 0.1148, 0.0130, -0.0143, 0.1550, 0.2546, 0.2353, 0.2018,\n", + " 0.2366, 0.2819, 0.1680, 0.1769, -0.0322, 0.0285, -0.0194, -0.3117,\n", + " -0.2543, -0.3143, -0.2909]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007630002219229937\n", + "Grad encoder.fc1.bias: 0.0007384131313301623\n", + "Grad encoder.encoder.0.weight: 0.00013701006537303329\n", + "Grad encoder.encoder.0.bias: 0.0007663558935746551\n", + "Grad encoder.encoder.2.weight: 0.00011733257269952446\n", + "Grad encoder.encoder.2.bias: 0.0008466357830911875\n", + "Grad encoder.encoder.4.weight: 0.00021744403056800365\n", + "Grad encoder.encoder.4.bias: 0.0015739918453618884\n", + "Grad decoder.fc1.0.weight: 8.467291627312079e-05\n", + "Grad decoder.fc1.0.bias: 0.0007849892135709524\n", + "Grad decoder.fc1.2.weight: 8.881508983904496e-05\n", + "Grad decoder.fc1.2.bias: 0.001114250859245658\n", + "Grad decoder.fc1.4.weight: 8.398444333579391e-05\n", + "Grad decoder.fc1.4.bias: 0.0011502566048875451\n", + "Grad decoder.fc2.weight: 0.00015719934890512377\n", + "Grad decoder.fc2.bias: 0.0022682487033307552\n", + "Grad _memory_unit.weight_ih_l0: 2.4620605472591706e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.329817839898169e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.897980761597864e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.1523308785399422e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00022018974414095283\n", + "Grad _memory_unit.bias_hh_l1: 0.0001162964545073919\n", + "Data X Sample: tensor([[1.3961, 1.6400, 1.8482, 2.0597, 2.1121, 2.1082, 2.2586, 2.2061, 2.2164,\n", + " 2.1784, 2.1286, 2.0332, 2.0351, 1.8622, 1.7502, 1.7423, 1.8161, 1.7932,\n", + " 1.7904, 1.7091, 1.6881, 1.6580, 1.6097, 1.5174, 1.5015, 1.4966, 1.3826,\n", + " 1.5009, 1.1205, 1.1299, 1.0079, 1.0086, 0.9086, 0.6431, 0.9682, 1.0386,\n", + " 1.1268, 1.2297, 1.3691, 1.3703, 1.2075, 0.6930, 0.6892, 1.2314, 1.8314,\n", + " 2.1272, 1.3462, 1.8532]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.5085e+00, -1.0805e+00, -6.4261e-01, -7.9224e-01, -5.6788e-01,\n", + " -2.9721e-01, 2.6315e+00, 2.9496e+00, 2.0078e+00, 2.9198e+00,\n", + " 4.6080e+00, -5.8006e-01, -2.5475e-01, -1.9212e+00, -1.0358e+00,\n", + " -1.8094e+00, -1.4666e+00, -7.6515e-01, -2.3010e-01, -6.6736e-01,\n", + " -9.3834e-01, 1.6694e-01, -2.2900e-01, -6.6202e-01, -4.9652e-01,\n", + " -7.1935e-04, 9.4824e-01, 7.7956e-01, -1.8847e+00, -1.3755e+00,\n", + " -1.6065e+00, 4.5062e-01, -3.2759e+00, -3.4577e+00, -1.3397e+00,\n", + " -9.4305e-01, -7.3525e-01, -6.9914e-01, 1.4252e-01, 8.3205e+00,\n", + " 7.4588e+00, 5.5787e+00, 3.7702e+00]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.8599, -0.8608, -0.3722, -0.7110, -0.4401, 0.0561, 0.3080, 0.8502,\n", + " 0.4568, 0.6012, 0.7190, -0.2468, -0.3997, -0.6677, -0.5036, -0.6395,\n", + " -0.6453, -0.4065, -0.1353, -0.3016, -0.3229, 0.0147, -0.0570, -0.1214,\n", + " 0.0941, -0.0080, 0.3443, 0.0914, -0.0917, -0.3616, -0.4352, -0.5129,\n", + " -0.2557, -0.6661, -0.4244, -0.4709, -0.0349, 0.1264, -0.1025, 1.0004,\n", + " 0.9908, 0.8286, 0.8501]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.002131073735654354\n", + "Grad encoder.fc1.bias: 0.0025313920341432095\n", + "Grad encoder.encoder.0.weight: 0.0003042708558496088\n", + "Grad encoder.encoder.0.bias: 0.0018282876117154956\n", + "Grad encoder.encoder.2.weight: 0.00018943565373774618\n", + "Grad encoder.encoder.2.bias: 0.0018113430123776197\n", + "Grad encoder.encoder.4.weight: 0.0003347547026351094\n", + "Grad encoder.encoder.4.bias: 0.0029217428527772427\n", + "Grad decoder.fc1.0.weight: 0.00011104358418378979\n", + "Grad decoder.fc1.0.bias: 0.0011794889578595757\n", + "Grad decoder.fc1.2.weight: 0.00012150783004472032\n", + "Grad decoder.fc1.2.bias: 0.0014438923681154847\n", + "Grad decoder.fc1.4.weight: 9.587840759195387e-05\n", + "Grad decoder.fc1.4.bias: 0.0010527018457651138\n", + "Grad decoder.fc2.weight: 0.00017438978829886764\n", + "Grad decoder.fc2.bias: 0.0016314643435180187\n", + "Grad _memory_unit.weight_ih_l0: 4.328434806666337e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00013369816588237882\n", + "Grad _memory_unit.bias_hh_l0: 7.211064803414047e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.5821447959751822e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00027967322967015207\n", + "Grad _memory_unit.bias_hh_l1: 0.00014969275798648596\n", + "Data X Sample: tensor([[1.4884, 1.6837, 1.8137, 1.9373, 2.0421, 2.2732, 2.3156, 2.4190, 2.4215,\n", + " 2.4644, 2.5759, 2.5921, 2.4456, 2.4293, 2.3832, 2.4944, 2.3428, 2.3909,\n", + " 2.3830, 2.3451, 2.3628, 2.3499, 2.3206, 2.3381, 2.3423, 2.3977, 2.3816,\n", + " 2.3166, 2.1856, 2.2304, 2.2012, 2.2024, 2.1846, 1.4280, 1.9291, 1.6880,\n", + " 1.5732, 1.4629, 1.4769, 1.5406, 1.1741, 0.7010, 0.6993, 1.1682, 1.7442,\n", + " 1.9099, 1.2714, 1.8922]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.5425, 0.4048, 0.6535, -0.2235, -0.1337, -0.7548, -0.2072, -0.4525,\n", + " -0.8950, -0.4704, -0.4741, 1.1290, -0.0148, -0.2814, 0.5051, 1.0225,\n", + " -0.0768, 1.5578, -0.5555, 1.4653, -1.3000, 0.1253, 0.5075, 1.4748,\n", + " -0.7246, 1.0075, -0.9324, 0.3438, -0.5511, 1.3025, 0.6036, -0.1094,\n", + " 1.3851, 0.4755, 0.2341, -0.2486, -0.9601, -0.8004, 0.9027, -0.2023,\n", + " -0.3201, -0.3650, -0.1404]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3237, 0.3808, 0.1087, 0.1900, 0.0962, -0.2045, -0.3912, -0.4185,\n", + " -0.2258, -0.2174, -0.2454, 0.1833, 0.1165, 0.2654, 0.2301, 0.2795,\n", + " 0.2827, 0.1501, 0.0474, 0.0790, 0.0815, 0.0849, 0.0383, -0.0194,\n", + " 0.0697, 0.1251, 0.0005, -0.0015, 0.1547, 0.2480, 0.2418, 0.2181,\n", + " 0.2484, 0.3019, 0.1770, 0.1796, -0.0311, 0.0327, -0.0313, -0.3150,\n", + " -0.2640, -0.3169, -0.2934]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0020894191693514585\n", + "Grad encoder.fc1.bias: 0.0015098019503057003\n", + "Grad encoder.encoder.0.weight: 0.0002454647037666291\n", + "Grad encoder.encoder.0.bias: 0.0012479217257350683\n", + "Grad encoder.encoder.2.weight: 0.00014188422937877476\n", + "Grad encoder.encoder.2.bias: 0.001190091366879642\n", + "Grad encoder.encoder.4.weight: 0.0002398202195763588\n", + "Grad encoder.encoder.4.bias: 0.0024321500677615404\n", + "Grad decoder.fc1.0.weight: 7.745161565253511e-05\n", + "Grad decoder.fc1.0.bias: 0.0007227476453408599\n", + "Grad decoder.fc1.2.weight: 7.509977876907215e-05\n", + "Grad decoder.fc1.2.bias: 0.0006527853547595441\n", + "Grad decoder.fc1.4.weight: 6.797673995606601e-05\n", + "Grad decoder.fc1.4.bias: 0.0006772778579033911\n", + "Grad decoder.fc2.weight: 0.00014633458340540528\n", + "Grad decoder.fc2.bias: 0.0015659175114706159\n", + "Grad _memory_unit.weight_ih_l0: 3.9895538066048175e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00015485036419704556\n", + "Grad _memory_unit.bias_hh_l0: 7.97352404333651e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.5445248209289275e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002203496260335669\n", + "Grad _memory_unit.bias_hh_l1: 0.00011758835171349347\n", + "Data X Sample: tensor([[1.5860, 1.8512, 2.0210, 2.1406, 2.2863, 2.3837, 2.5159, 2.5255, 2.5508,\n", + " 2.5892, 2.6298, 2.6272, 2.5965, 2.5656, 2.4185, 2.4397, 2.4246, 2.4779,\n", + " 2.5338, 2.5255, 2.4634, 2.5138, 2.5664, 2.4622, 2.6294, 2.6014, 2.4588,\n", + " 2.5287, 2.2688, 2.3679, 2.3062, 2.3322, 2.2990, 1.4326, 1.9732, 1.8704,\n", + " 1.7443, 1.6405, 1.5973, 1.5860, 1.2361, 0.7149, 0.7478, 1.2687, 1.9226,\n", + " 2.1844, 1.4482, 2.1268]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6665, 0.1219, 1.0224, 0.8358, 0.6472, -0.3641, -0.1696, -0.4212,\n", + " -0.6346, -0.5247, -0.3670, 0.8487, -0.5135, 0.6450, 0.7173, 1.2782,\n", + " 1.1355, -0.6765, -0.1362, 1.7237, 0.9437, 0.3917, -0.9547, -0.5715,\n", + " -1.9905, 0.6589, 0.6126, 0.6845, -0.1474, -0.1752, -0.1179, -0.4991,\n", + " 0.0675, 0.1408, -0.2667, 0.2757, -0.4532, 0.8296, 0.4422, -0.2981,\n", + " -0.5282, -0.6372, -0.5745]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3311, 0.3841, 0.1080, 0.1909, 0.0980, -0.2035, -0.4009, -0.4263,\n", + " -0.2327, -0.2307, -0.2532, 0.1897, 0.1233, 0.2751, 0.2345, 0.2904,\n", + " 0.2770, 0.1485, 0.0549, 0.0763, 0.0763, 0.0895, 0.0406, -0.0162,\n", + " 0.0750, 0.1232, 0.0034, 0.0046, 0.1623, 0.2605, 0.2480, 0.2263,\n", + " 0.2557, 0.3079, 0.1732, 0.1834, -0.0283, 0.0349, -0.0280, -0.3152,\n", + " -0.2738, -0.3214, -0.2999]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005928745958954096\n", + "Grad encoder.fc1.bias: 0.00137390720192343\n", + "Grad encoder.encoder.0.weight: 0.00010732726514106616\n", + "Grad encoder.encoder.0.bias: 0.0009331718320026994\n", + "Grad encoder.encoder.2.weight: 9.965542994905263e-05\n", + "Grad encoder.encoder.2.bias: 0.0008183871977962554\n", + "Grad encoder.encoder.4.weight: 0.00018024396558757871\n", + "Grad encoder.encoder.4.bias: 0.000860926229506731\n", + "Grad decoder.fc1.0.weight: 6.346287409542128e-05\n", + "Grad decoder.fc1.0.bias: 0.0005572841037064791\n", + "Grad decoder.fc1.2.weight: 6.468479841714725e-05\n", + "Grad decoder.fc1.2.bias: 0.0005016888026148081\n", + "Grad decoder.fc1.4.weight: 6.588324322365224e-05\n", + "Grad decoder.fc1.4.bias: 0.0004804321797564626\n", + "Grad decoder.fc2.weight: 0.00017211833619512618\n", + "Grad decoder.fc2.bias: 0.0018112346297129989\n", + "Grad _memory_unit.weight_ih_l0: 2.911857700382825e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.54529794701375e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.752096017706208e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.2118841368646827e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001108509604819119\n", + "Grad _memory_unit.bias_hh_l1: 6.335487705655396e-05\n", + "Data X Sample: tensor([[1.2528, 1.5148, 1.5372, 1.6312, 1.6306, 1.7075, 1.7240, 1.8143, 1.8478,\n", + " 1.8720, 1.9446, 1.9241, 1.8220, 1.7395, 1.8132, 1.7860, 1.7626, 1.8705,\n", + " 1.8069, 1.8876, 2.0046, 1.9596, 1.9278, 1.9640, 1.9463, 1.9824, 1.9340,\n", + " 1.9373, 1.7693, 1.9029, 1.8862, 1.8514, 1.8524, 1.2930, 1.7942, 1.7901,\n", + " 1.5496, 1.4179, 1.2360, 1.1519, 0.9832, 0.6094, 0.5740, 1.0678, 1.4311,\n", + " 1.6411, 1.0402, 1.5404]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.0889, 1.2495, 2.2424, 0.3517, -0.1000, -0.1068, -1.1194, -1.1710,\n", + " -1.1612, -0.9554, -0.7462, -0.4215, 0.6439, 0.6131, -0.0196, 0.6311,\n", + " 1.1539, -0.6803, 0.9104, 0.7686, 0.6232, 0.2571, -1.2055, -0.1406,\n", + " -0.9067, -0.2582, 0.0025, 0.7532, 0.6830, 1.3743, 0.3756, 1.4339,\n", + " 0.9003, 1.0557, 0.8337, 0.1257, -0.3045, 0.7314, 0.0109, -0.7621,\n", + " -0.6337, -0.5595, -1.4862]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3328, 0.3640, 0.1084, 0.2070, 0.0984, -0.1715, -0.4059, -0.4242,\n", + " -0.2213, -0.2239, -0.2302, 0.1936, 0.1287, 0.2626, 0.2117, 0.2923,\n", + " 0.2610, 0.1480, 0.0633, 0.0703, 0.0757, 0.0794, 0.0481, 0.0040,\n", + " 0.0731, 0.1248, -0.0112, 0.0119, 0.1553, 0.2425, 0.2420, 0.2292,\n", + " 0.2620, 0.3101, 0.1693, 0.1789, -0.0261, 0.0344, -0.0358, -0.3008,\n", + " -0.2733, -0.3044, -0.2845]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002710259868763387\n", + "Grad encoder.fc1.bias: 0.00013765806215815246\n", + "Grad encoder.encoder.0.weight: 5.7275166909676045e-05\n", + "Grad encoder.encoder.0.bias: 0.00019936609896831214\n", + "Grad encoder.encoder.2.weight: 4.414501745486632e-05\n", + "Grad encoder.encoder.2.bias: 0.0002606158086564392\n", + "Grad encoder.encoder.4.weight: 0.00011868528963532299\n", + "Grad encoder.encoder.4.bias: 0.001242152415215969\n", + "Grad decoder.fc1.0.weight: 4.641067425836809e-05\n", + "Grad decoder.fc1.0.bias: 0.0005379262729547918\n", + "Grad decoder.fc1.2.weight: 4.8778136260807514e-05\n", + "Grad decoder.fc1.2.bias: 0.0006713304901495576\n", + "Grad decoder.fc1.4.weight: 4.678880941355601e-05\n", + "Grad decoder.fc1.4.bias: 0.000685844337567687\n", + "Grad decoder.fc2.weight: 0.00013281706196721643\n", + "Grad decoder.fc2.bias: 0.0020067221485078335\n", + "Grad _memory_unit.weight_ih_l0: 1.5349693057942204e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.662571831839159e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.45600419677794e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.763870492752176e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00013080047210678458\n", + "Grad _memory_unit.bias_hh_l1: 6.922413012944162e-05\n", + "Data X Sample: tensor([[-0.0074, -0.0015, 0.0015, 0.0066, 0.0017, -0.0044, 0.0123, 0.0028,\n", + " 0.0073, 0.0032, -0.0222, -0.0117, -0.0044, -0.0218, 0.0000, 0.0041,\n", + " 0.0110, 0.0039, -0.0021, 0.0167, 0.0123, 0.0046, 0.0120, -0.0095,\n", + " -0.0019, 0.0104, 0.0027, -0.0163, -0.0139, 0.0229, -0.0070, 0.0193,\n", + " -0.0110, -0.0046, -0.0025, 0.0365, -0.0098, -0.0053, 0.0190, 0.0142,\n", + " 0.0143, -0.0020, 0.0081, -0.0172, 0.0079, 0.0229, -0.0068, -0.0156]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.9804, 1.2013, 0.1711, 1.3474, -0.0280, 0.5380, -1.2325, -0.8177,\n", + " -0.7445, -0.8261, -0.9218, 0.6180, 0.3438, 0.4603, -0.2473, 0.2698,\n", + " 0.5084, -0.3847, -0.8019, -0.3071, 0.6116, -0.5338, 0.7423, 0.3588,\n", + " -0.5845, 0.3724, 0.3082, 0.9360, 1.9193, 1.2392, 2.0790, -0.2921,\n", + " 0.6038, 0.6176, 0.2770, 0.2384, 0.8291, -0.1765, -0.0131, -0.8272,\n", + " -0.6273, -0.6145, -1.2607]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.7498, 0.6429, 0.2073, 0.3854, -0.3929, -0.6967, -1.2294, -1.1585,\n", + " -0.8391, -0.7630, -0.7254, 0.4465, 0.3586, 0.5444, 0.2716, 0.5006,\n", + " 0.4560, 0.1738, 0.0450, -0.0215, 0.1091, 0.1007, 0.1134, 0.0064,\n", + " 0.1023, 0.0432, 0.2895, 0.4524, 0.8367, 0.8287, 0.8132, 0.6203,\n", + " 0.7131, 0.5812, 0.3514, 0.2944, 0.0608, 0.1400, -0.0360, -0.7262,\n", + " -0.7296, -0.5421, -0.4617]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.003517541568726301\n", + "Grad encoder.fc1.bias: 0.0015524738701060414\n", + "Grad encoder.encoder.0.weight: 0.0004414349386934191\n", + "Grad encoder.encoder.0.bias: 0.0015068240463733673\n", + "Grad encoder.encoder.2.weight: 0.0002674735151231289\n", + "Grad encoder.encoder.2.bias: 0.0016505029052495956\n", + "Grad encoder.encoder.4.weight: 0.00045982212759554386\n", + "Grad encoder.encoder.4.bias: 0.0045004854910075665\n", + "Grad decoder.fc1.0.weight: 0.00011528611503308639\n", + "Grad decoder.fc1.0.bias: 0.0012371817138046026\n", + "Grad decoder.fc1.2.weight: 9.769638563739136e-05\n", + "Grad decoder.fc1.2.bias: 0.0013004356296733022\n", + "Grad decoder.fc1.4.weight: 9.070220403373241e-05\n", + "Grad decoder.fc1.4.bias: 0.0011994370725005865\n", + "Grad decoder.fc2.weight: 0.00019438387244008482\n", + "Grad decoder.fc2.bias: 0.0024125517811626196\n", + "Grad _memory_unit.weight_ih_l0: 7.01424214639701e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00032904124236665666\n", + "Grad _memory_unit.bias_hh_l0: 0.0001668094628257677\n", + "Grad _memory_unit.weight_ih_l1: 1.936539229063783e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00038059771759435534\n", + "Grad _memory_unit.bias_hh_l1: 0.00019957002950832248\n", + "Data X Sample: tensor([[2.7136, 2.8038, 3.1796, 3.1158, 3.3790, 3.4415, 3.6036, 3.6200, 3.8324,\n", + " 3.8450, 3.7560, 3.9807, 3.7661, 3.7243, 3.6013, 3.5775, 3.5064, 3.5882,\n", + " 3.4073, 3.4181, 3.2731, 3.1537, 2.9616, 2.8821, 2.7589, 2.7477, 2.7172,\n", + " 2.6959, 2.6019, 2.6529, 2.5966, 2.6473, 2.7611, 2.0299, 3.3017, 3.7870,\n", + " 4.0195, 4.0602, 4.5637, 4.4146, 1.8709, 1.1252, 1.1217, 1.9174, 2.7155,\n", + " 2.9849, 1.9581, 2.7836]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0907, 0.7771, 1.3812, -0.9220, 0.0714, 1.7753, 0.0348, -0.4488,\n", + " -0.3794, -0.1756, -0.5100, 0.6641, -0.2442, -0.0488, 0.3239, 0.4135,\n", + " 1.1482, -0.6798, -0.0279, 0.4666, -0.7592, 0.5904, 0.1981, 0.4938,\n", + " 0.3717, 0.4388, 0.2805, 0.6926, 0.6267, 0.0845, 0.1757, -0.0554,\n", + " 0.4300, 0.3184, 0.7390, 0.9955, 1.0359, 0.0936, 0.2630, -0.6069,\n", + " -0.6792, -1.1650, 0.4416]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2242, -0.2450, -0.0696, -0.1636, -0.0634, 0.0712, 0.1316, 0.2383,\n", + " 0.1722, 0.2025, 0.2237, -0.1096, -0.1338, -0.2482, -0.1609, -0.2416,\n", + " -0.1703, -0.1073, -0.0601, -0.1009, -0.0800, 0.0235, -0.0220, -0.0428,\n", + " -0.0194, 0.0212, -0.0070, -0.0594, -0.1023, -0.1781, -0.2193, -0.1738,\n", + " -0.1777, -0.2329, -0.1375, -0.1692, -0.0240, -0.0103, -0.0397, 0.3052,\n", + " 0.3071, 0.3010, 0.2519]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0013982558157294989\n", + "Grad encoder.fc1.bias: 0.0008072903146967292\n", + "Grad encoder.encoder.0.weight: 0.00020432974270079285\n", + "Grad encoder.encoder.0.bias: 0.000832360761705786\n", + "Grad encoder.encoder.2.weight: 0.00015329752932302654\n", + "Grad encoder.encoder.2.bias: 0.00108744902536273\n", + "Grad encoder.encoder.4.weight: 0.0003175042802467942\n", + "Grad encoder.encoder.4.bias: 0.0030534740071743727\n", + "Grad decoder.fc1.0.weight: 0.00010437708988320082\n", + "Grad decoder.fc1.0.bias: 0.001100210938602686\n", + "Grad decoder.fc1.2.weight: 8.973486546892673e-05\n", + "Grad decoder.fc1.2.bias: 0.0011753605213016272\n", + "Grad decoder.fc1.4.weight: 6.971977563807741e-05\n", + "Grad decoder.fc1.4.bias: 0.0009762901463545859\n", + "Grad decoder.fc2.weight: 0.00014094520884100348\n", + "Grad decoder.fc2.bias: 0.001857086317613721\n", + "Grad _memory_unit.weight_ih_l0: 4.99273810419254e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.000228178731049411\n", + "Grad _memory_unit.bias_hh_l0: 0.00011650658416328952\n", + "Grad _memory_unit.weight_ih_l1: 1.3391123502515256e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0003426693147048354\n", + "Grad _memory_unit.bias_hh_l1: 0.00017928198212757707\n", + "Data X Sample: tensor([[1.5000, 1.5905, 1.7521, 1.9438, 2.0489, 2.2305, 2.2062, 1.9974, 2.8950,\n", + " 4.1831, 4.3080, 4.2942, 4.2188, 3.9343, 3.8560, 3.7786, 3.6070, 3.5999,\n", + " 3.5374, 3.5130, 3.4620, 3.3006, 3.0701, 2.8096, 2.7852, 2.8417, 2.8531,\n", + " 2.8224, 2.8725, 3.1540, 3.1321, 3.1861, 3.7423, 2.7851, 4.5837, 4.9082,\n", + " 5.0479, 5.3986, 6.0722, 5.8587, 1.1311, 0.6890, 0.6265, 1.1166, 1.6967,\n", + " 1.8470, 1.3258, 1.8141]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1464, -0.0527, 0.4486, -0.3813, -0.0369, -0.2789, 0.2021, 0.3163,\n", + " 0.2705, 0.3981, 0.1143, 0.2782, 1.1337, 0.1891, -0.2247, -0.1406,\n", + " 0.4666, -1.1736, 0.2564, 1.0800, 0.6037, 0.6866, 0.3488, -0.0677,\n", + " 0.6993, 0.6404, -0.5002, -0.6741, -0.0442, -0.8619, -0.3084, -1.1886,\n", + " -0.6216, -0.8036, -0.6005, -0.0788, 0.0540, -0.6532, -0.5690, 0.2759,\n", + " 0.6770, 0.3301, 0.8684]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2976, -0.2944, -0.0468, -0.0605, 0.2069, 0.2934, 0.2581, 0.3453,\n", + " 0.2223, 0.3088, 0.2913, -0.2111, -0.2668, -0.4145, -0.2158, -0.3401,\n", + " -0.1458, -0.0740, -0.1007, -0.0757, -0.1112, -0.0061, 0.0008, -0.0327,\n", + " -0.0192, 0.0161, -0.1539, -0.1661, -0.2873, -0.3283, -0.3471, -0.2637,\n", + " -0.4142, -0.3738, -0.2204, -0.2020, -0.0190, -0.0418, 0.0519, 0.3657,\n", + " 0.3468, 0.3871, 0.3482]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.003631061874330044\n", + "Grad encoder.fc1.bias: 0.002071657218039036\n", + "Grad encoder.encoder.0.weight: 0.0004519137437455356\n", + "Grad encoder.encoder.0.bias: 0.0018121061148121953\n", + "Grad encoder.encoder.2.weight: 0.0002728425897657871\n", + "Grad encoder.encoder.2.bias: 0.0017019116785377264\n", + "Grad encoder.encoder.4.weight: 0.00048586016055196524\n", + "Grad encoder.encoder.4.bias: 0.0032801113557070494\n", + "Grad decoder.fc1.0.weight: 0.0001352097897324711\n", + "Grad decoder.fc1.0.bias: 0.0009863519808277488\n", + "Grad decoder.fc1.2.weight: 0.00014665929484181106\n", + "Grad decoder.fc1.2.bias: 0.001458369311876595\n", + "Grad decoder.fc1.4.weight: 0.00013528720592148602\n", + "Grad decoder.fc1.4.bias: 0.0013185259886085987\n", + "Grad decoder.fc2.weight: 0.0002940591366495937\n", + "Grad decoder.fc2.bias: 0.0026616144459694624\n", + "Grad _memory_unit.weight_ih_l0: 8.377558697247878e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0002341501385672018\n", + "Grad _memory_unit.bias_hh_l0: 0.000123243109555915\n", + "Grad _memory_unit.weight_ih_l1: 3.093011400778778e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002871024189516902\n", + "Grad _memory_unit.bias_hh_l1: 0.00016046717064455152\n", + "Data X Sample: tensor([[2.6086, 2.9334, 3.1750, 3.3585, 3.5993, 3.5211, 3.6637, 3.8145, 3.8348,\n", + " 3.8403, 4.0859, 3.9008, 3.8194, 3.6562, 3.7223, 3.5474, 3.5441, 3.5902,\n", + " 3.4816, 3.4516, 3.3737, 3.3925, 3.0532, 2.9756, 2.8828, 2.9828, 2.9570,\n", + " 2.8795, 2.7788, 2.8657, 2.9256, 2.8628, 2.9789, 2.1008, 3.4512, 3.9816,\n", + " 4.2614, 4.6406, 5.2229, 4.9224, 1.9615, 1.1172, 1.0246, 2.0724, 2.9414,\n", + " 3.1393, 2.2029, 3.1981]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0597, -0.2092, -0.6788, -0.1925, 0.3122, 0.3799, 0.6609, 0.2343,\n", + " 0.2441, 0.0580, 0.2741, -0.6451, 0.4598, -0.3515, -0.3496, -0.9515,\n", + " 0.7964, 1.7017, -0.3904, -0.0617, -1.3933, 0.5244, 2.8892, -2.2471,\n", + " 0.2945, 0.1188, -1.0189, -0.0574, -1.2712, 0.1320, -1.0569, -0.3146,\n", + " -0.2389, 0.0030, -0.7926, -0.1072, -0.5148, -0.7725, 0.2253, 0.3138,\n", + " 0.2370, 0.4958, -0.0580]], device='cuda:0')\n", + "Prediction Sample: tensor([[-1.2837e-01, -1.5963e-01, -5.3644e-02, -1.0162e-01, -6.7722e-02,\n", + " 4.8325e-02, 5.6333e-02, 1.5737e-01, 8.8787e-02, 1.3754e-01,\n", + " 1.5818e-01, -9.0536e-02, -9.0150e-02, -1.6529e-01, -1.0516e-01,\n", + " -1.4051e-01, -1.3812e-01, -6.6272e-02, -6.9764e-02, -7.9655e-02,\n", + " -3.9638e-02, 2.6278e-02, -7.8847e-03, -3.7757e-02, -9.4260e-03,\n", + " 1.8520e-02, -6.9849e-03, -4.4077e-02, -6.6085e-02, -9.4404e-02,\n", + " -1.7196e-01, -1.1440e-01, -1.1221e-01, -1.6197e-01, -9.7388e-02,\n", + " -1.4324e-01, -3.9312e-02, -1.4652e-04, -2.7636e-02, 2.2435e-01,\n", + " 2.1528e-01, 2.2785e-01, 1.5747e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00019275359227322042\n", + "Grad encoder.fc1.bias: 0.00038516445783898234\n", + "Grad encoder.encoder.0.weight: 5.853260154253803e-05\n", + "Grad encoder.encoder.0.bias: 0.00033810618333518505\n", + "Grad encoder.encoder.2.weight: 4.452869325177744e-05\n", + "Grad encoder.encoder.2.bias: 0.00040817252011038363\n", + "Grad encoder.encoder.4.weight: 8.93748365342617e-05\n", + "Grad encoder.encoder.4.bias: 0.0013632199261337519\n", + "Grad decoder.fc1.0.weight: 4.1911804146366194e-05\n", + "Grad decoder.fc1.0.bias: 0.0005210888339206576\n", + "Grad decoder.fc1.2.weight: 4.657640238292515e-05\n", + "Grad decoder.fc1.2.bias: 0.0005353591404855251\n", + "Grad decoder.fc1.4.weight: 3.965838550357148e-05\n", + "Grad decoder.fc1.4.bias: 0.00047221421846188605\n", + "Grad decoder.fc2.weight: 0.00015071171219460666\n", + "Grad decoder.fc2.bias: 0.0018196571618318558\n", + "Grad _memory_unit.weight_ih_l0: 7.757536877761595e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.687575271120295e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.031417120131664e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.769819952343823e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.000144709600135684\n", + "Grad _memory_unit.bias_hh_l1: 7.637004455318674e-05\n", + "Data X Sample: tensor([[1.5117, 1.5905, 1.6123, 1.8105, 1.9140, 1.9992, 2.0876, 2.0599, 3.5370,\n", + " 4.1626, 4.1621, 4.2339, 4.0812, 3.7898, 3.7677, 3.6500, 3.5913, 3.6173,\n", + " 3.6654, 3.6004, 3.4277, 3.2486, 2.7785, 2.7962, 2.8715, 2.9541, 2.9490,\n", + " 3.0018, 3.0425, 3.1507, 3.1321, 3.3436, 3.8985, 2.8126, 4.5640, 4.8985,\n", + " 5.1502, 5.5920, 6.0722, 5.8502, 1.1645, 0.6193, 0.5780, 0.9989, 1.5896,\n", + " 1.7555, 1.1286, 1.5951]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5456, -1.1755, 0.1368, 0.6887, -1.1264, -0.2166, 0.3602, 0.6510,\n", + " 0.5158, 0.9665, 0.6641, 1.3953, -0.2913, 0.4180, -0.9116, -0.1187,\n", + " 0.5321, 0.9815, 0.5346, 0.0417, 1.4414, -1.6138, -1.6137, 2.1244,\n", + " 0.6293, 2.1942, 1.4021, 0.7456, 0.0141, 0.5138, -0.9782, 0.3829,\n", + " -0.0210, -1.2222, 0.2904, 0.2757, 0.9839, 0.0103, 1.0325, 0.6880,\n", + " 0.8217, 0.9389, -0.8053]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2414, -0.2314, -0.0354, -0.0579, 0.1704, 0.2473, 0.2017, 0.2872,\n", + " 0.1692, 0.2646, 0.2500, -0.1753, -0.2337, -0.3407, -0.1803, -0.2817,\n", + " -0.1345, -0.0663, -0.0916, -0.0542, -0.0817, -0.0043, 0.0009, -0.0302,\n", + " -0.0217, 0.0298, -0.1276, -0.1273, -0.2469, -0.2706, -0.2911, -0.2269,\n", + " -0.3505, -0.3217, -0.1930, -0.1932, -0.0294, -0.0326, 0.0419, 0.3087,\n", + " 0.3045, 0.3347, 0.3007]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00046185540850274265\n", + "Grad encoder.fc1.bias: 0.00019341384177096188\n", + "Grad encoder.encoder.0.weight: 0.00010157596261706203\n", + "Grad encoder.encoder.0.bias: 0.00029335214640013874\n", + "Grad encoder.encoder.2.weight: 9.221932850778103e-05\n", + "Grad encoder.encoder.2.bias: 0.0005025218124501407\n", + "Grad encoder.encoder.4.weight: 0.00022052756685297936\n", + "Grad encoder.encoder.4.bias: 0.0013275109231472015\n", + "Grad decoder.fc1.0.weight: 8.361175423488021e-05\n", + "Grad decoder.fc1.0.bias: 0.0006847105687484145\n", + "Grad decoder.fc1.2.weight: 8.105194137897342e-05\n", + "Grad decoder.fc1.2.bias: 0.0008850192534737289\n", + "Grad decoder.fc1.4.weight: 7.274797098943964e-05\n", + "Grad decoder.fc1.4.bias: 0.0011206085328012705\n", + "Grad decoder.fc2.weight: 0.00015168126265052706\n", + "Grad decoder.fc2.bias: 0.0015670501161366701\n", + "Grad _memory_unit.weight_ih_l0: 2.7249197955825366e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.295235940953717e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.888175681116991e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.312673005799297e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00018965970957651734\n", + "Grad _memory_unit.bias_hh_l1: 9.978794696507975e-05\n", + "Data X Sample: tensor([[2.7274, 2.8504, 2.1998, 2.2062, 2.2470, 2.1244, 3.1368, 4.0459, 4.0960,\n", + " 4.1262, 4.0510, 4.0449, 3.9392, 3.9397, 3.7299, 3.5953, 3.6275, 3.6656,\n", + " 3.6324, 3.5353, 3.3369, 3.4354, 3.0749, 2.8993, 2.8284, 2.7059, 2.6133,\n", + " 2.6307, 2.6851, 2.7151, 2.7436, 2.9181, 3.1923, 2.3297, 3.9243, 4.3950,\n", + " 4.5642, 5.0143, 5.5081, 5.3451, 1.7277, 0.9021, 0.7902, 1.2802, 1.7958,\n", + " 2.1844, 1.3666, 2.1816]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3670, -0.0691, -0.6037, -0.0713, 0.2554, 0.0376, -0.1116, 0.1022,\n", + " 0.9898, 0.4154, 0.2970, 0.0397, 0.9726, -0.1609, 0.7958, 0.2212,\n", + " -0.8499, -1.6747, -0.4410, 0.8896, 0.3782, 0.0605, 0.4643, 0.6936,\n", + " 0.0922, -0.8080, -0.9622, -1.2279, -0.8154, -0.3406, -0.4053, -0.1967,\n", + " -0.5311, 0.1396, 0.2450, 0.1236, -0.9601, -0.6143, 0.4422, 0.2228,\n", + " 0.3020, -0.3244, 0.3907]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1145, -0.1188, -0.0234, -0.0584, 0.0363, 0.1133, 0.0812, 0.1813,\n", + " 0.0930, 0.1452, 0.1765, -0.1016, -0.1245, -0.1824, -0.1175, -0.1477,\n", + " -0.1077, -0.0360, -0.0548, -0.0377, -0.0105, 0.0263, -0.0101, -0.0316,\n", + " -0.0109, 0.0558, -0.0622, -0.0607, -0.1446, -0.1391, -0.1842, -0.1337,\n", + " -0.1765, -0.1706, -0.1182, -0.1505, -0.0546, 0.0018, 0.0168, 0.1829,\n", + " 0.2117, 0.2250, 0.1652]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.001661457004956901\n", + "Grad encoder.fc1.bias: 0.0020143266301602125\n", + "Grad encoder.encoder.0.weight: 0.00020242077880539\n", + "Grad encoder.encoder.0.bias: 0.0015067046042531729\n", + "Grad encoder.encoder.2.weight: 0.0001437752798665315\n", + "Grad encoder.encoder.2.bias: 0.001393781160004437\n", + "Grad encoder.encoder.4.weight: 0.00030105526093393564\n", + "Grad encoder.encoder.4.bias: 0.0030716154724359512\n", + "Grad decoder.fc1.0.weight: 9.312717884313315e-05\n", + "Grad decoder.fc1.0.bias: 0.0009053393150679767\n", + "Grad decoder.fc1.2.weight: 9.194023732561618e-05\n", + "Grad decoder.fc1.2.bias: 0.0007021743804216385\n", + "Grad decoder.fc1.4.weight: 8.004994015209377e-05\n", + "Grad decoder.fc1.4.bias: 0.0006143759237602353\n", + "Grad decoder.fc2.weight: 0.0001980869856197387\n", + "Grad decoder.fc2.bias: 0.0019247684394940734\n", + "Grad _memory_unit.weight_ih_l0: 4.4776654249290004e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0002469227183610201\n", + "Grad _memory_unit.bias_hh_l0: 0.00012594935833476484\n", + "Grad _memory_unit.weight_ih_l1: 1.6351783415302634e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00031197353382594883\n", + "Grad _memory_unit.bias_hh_l1: 0.00016497590695507824\n", + "Data X Sample: tensor([[1.3568, 1.5264, 1.7656, 1.8979, 1.9909, 2.0493, 2.1338, 1.9946, 3.5102,\n", + " 4.1736, 4.2223, 4.3527, 4.1833, 3.8907, 3.7829, 3.6637, 3.6652, 3.5786,\n", + " 3.6055, 3.6023, 3.4522, 3.4415, 2.9857, 2.7657, 2.6801, 2.7817, 2.8291,\n", + " 2.9407, 2.9245, 3.1147, 3.2441, 3.3077, 3.8523, 2.8286, 4.6106, 4.9958,\n", + " 5.0676, 5.5125, 6.0405, 5.8700, 1.1263, 0.6233, 0.6204, 1.1682, 1.5896,\n", + " 1.8984, 1.2306, 1.7515]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3102, 0.3613, 0.3774, 0.2107, 0.2962, 0.8741, -0.2076, -0.4363,\n", + " -0.3429, -0.0692, -0.1129, -0.1897, 0.1789, 0.3378, 0.3589, -0.2458,\n", + " -0.5047, 1.0390, 0.0864, 0.2640, 0.1680, 0.4038, -0.7858, -0.6562,\n", + " -0.4544, -0.4096, -0.6994, -0.8564, 0.1396, -0.3773, 0.3677, 0.9581,\n", + " 0.3583, -0.1456, -0.8728, 0.7324, -0.9065, -0.7172, 0.3953, 0.1195,\n", + " 0.0063, -0.2268, -0.6340]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1824, -0.1899, -0.0416, -0.0739, 0.0824, 0.1700, 0.1441, 0.2463,\n", + " 0.1342, 0.2081, 0.2290, -0.1379, -0.1842, -0.2653, -0.1591, -0.2332,\n", + " -0.1324, -0.0636, -0.0772, -0.0483, -0.0516, 0.0126, -0.0119, -0.0347,\n", + " -0.0162, 0.0541, -0.0870, -0.0879, -0.1938, -0.2038, -0.2437, -0.1917,\n", + " -0.2658, -0.2558, -0.1672, -0.1873, -0.0471, -0.0182, 0.0265, 0.2600,\n", + " 0.2777, 0.3021, 0.2476]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.004030328243970871\n", + "Grad encoder.fc1.bias: 0.0027651330456137657\n", + "Grad encoder.encoder.0.weight: 0.00048502563731744885\n", + "Grad encoder.encoder.0.bias: 0.002382843056693673\n", + "Grad encoder.encoder.2.weight: 0.00032118032686412334\n", + "Grad encoder.encoder.2.bias: 0.002592349424958229\n", + "Grad encoder.encoder.4.weight: 0.0005860909004695714\n", + "Grad encoder.encoder.4.bias: 0.005106250289827585\n", + "Grad decoder.fc1.0.weight: 0.0001595296198502183\n", + "Grad decoder.fc1.0.bias: 0.0015551166143268347\n", + "Grad decoder.fc1.2.weight: 0.00010791164095280692\n", + "Grad decoder.fc1.2.bias: 0.0019929255358874798\n", + "Grad decoder.fc1.4.weight: 7.585834828205407e-05\n", + "Grad decoder.fc1.4.bias: 0.001494833966717124\n", + "Grad decoder.fc2.weight: 0.00014016727800481021\n", + "Grad decoder.fc2.bias: 0.002455540234223008\n", + "Grad _memory_unit.weight_ih_l0: 7.431368430843577e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00031531674903817475\n", + "Grad _memory_unit.bias_hh_l0: 0.00015965785132721066\n", + "Grad _memory_unit.weight_ih_l1: 1.786163920769468e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00041115109343081713\n", + "Grad _memory_unit.bias_hh_l1: 0.0002099736302625388\n", + "Data X Sample: tensor([[1.5467, 1.7041, 1.7941, 1.9460, 2.0284, 2.1613, 2.2540, 2.2771, 2.2799,\n", + " 2.3222, 2.3792, 2.3175, 2.2881, 2.1730, 2.2773, 2.2072, 2.1573, 2.3406,\n", + " 2.3624, 2.3414, 2.3653, 2.4464, 2.4291, 2.4927, 2.5056, 2.5701, 2.5414,\n", + " 2.4553, 2.3521, 2.3810, 2.4462, 2.3986, 2.3210, 1.4829, 1.9732, 1.7731,\n", + " 1.6243, 1.5159, 1.5719, 1.5434, 1.2122, 0.6353, 0.6528, 1.1625, 1.8275,\n", + " 1.9957, 1.3258, 1.8297]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6249, 0.0610, -0.1390, 0.4698, 0.4430, -1.7710, -0.2827, -0.9996,\n", + " -0.8693, -0.5614, -0.7057, 0.4166, 1.4476, 0.8278, 0.6257, -0.2157,\n", + " 0.3409, 0.4222, 0.2103, 0.3606, 0.6009, -1.2506, 1.9475, -0.3637,\n", + " 0.1923, -0.8220, -1.6706, 0.5821, 0.7890, -0.2724, -0.6322, 0.3363,\n", + " 0.5175, 0.1960, 1.3569, 0.9860, -0.5893, -0.0869, 0.8000, -0.6719,\n", + " -0.6268, -0.6301, -0.3249]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4185, 0.4291, 0.1425, 0.2867, 0.1431, -0.1485, -0.5069, -0.5132,\n", + " -0.2492, -0.3008, -0.2750, 0.2745, 0.1734, 0.2877, 0.2147, 0.3597,\n", + " 0.2712, 0.1886, 0.1022, 0.0818, 0.1209, 0.0954, 0.0874, 0.0409,\n", + " 0.1019, 0.1404, -0.0493, 0.0389, 0.1902, 0.3148, 0.3217, 0.2742,\n", + " 0.3584, 0.3933, 0.2096, 0.2130, -0.0286, 0.0444, -0.0331, -0.3538,\n", + " -0.3478, -0.3657, -0.3649]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0018699190113693476\n", + "Grad encoder.fc1.bias: 0.0017507511656731367\n", + "Grad encoder.encoder.0.weight: 0.00025727751199156046\n", + "Grad encoder.encoder.0.bias: 0.0016188531881198287\n", + "Grad encoder.encoder.2.weight: 0.00019804740441031754\n", + "Grad encoder.encoder.2.bias: 0.0017506418516859412\n", + "Grad encoder.encoder.4.weight: 0.0004727027553599328\n", + "Grad encoder.encoder.4.bias: 0.005454637110233307\n", + "Grad decoder.fc1.0.weight: 0.0001380294852424413\n", + "Grad decoder.fc1.0.bias: 0.0016750055365264416\n", + "Grad decoder.fc1.2.weight: 0.00013501712237484753\n", + "Grad decoder.fc1.2.bias: 0.0018987912917509675\n", + "Grad decoder.fc1.4.weight: 0.0001151005199062638\n", + "Grad decoder.fc1.4.bias: 0.0014419823419302702\n", + "Grad decoder.fc2.weight: 0.00022743886802345514\n", + "Grad decoder.fc2.bias: 0.002339758211746812\n", + "Grad _memory_unit.weight_ih_l0: 5.253390918369405e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0003350506885908544\n", + "Grad _memory_unit.bias_hh_l0: 0.00017114670481532812\n", + "Grad _memory_unit.weight_ih_l1: 2.1992742404108867e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0004463199875317514\n", + "Grad _memory_unit.bias_hh_l1: 0.000235947867622599\n", + "Data X Sample: tensor([[2.7168, 2.8591, 2.4237, 2.1166, 2.3290, 2.3911, 3.6575, 3.9934, 4.0838,\n", + " 4.1989, 4.2097, 4.2007, 4.0879, 3.9888, 3.7728, 3.6322, 3.6699, 3.5708,\n", + " 3.6241, 3.5651, 3.4080, 3.3542, 3.0074, 2.9165, 2.7983, 2.8156, 2.7625,\n", + " 2.7326, 2.8274, 2.8985, 2.9011, 3.0314, 3.2495, 2.3343, 3.9537, 4.3659,\n", + " 4.7667, 5.0752, 5.6792, 5.6402, 1.8375, 0.9439, 0.9014, 1.4294, 1.9107,\n", + " 2.0871, 1.4686, 2.1034]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3494, 0.8452, -0.6016, 0.4172, 0.8637, -0.3335, 0.0351, 0.0986,\n", + " -0.4908, -0.0825, -0.5126, 0.8755, 0.4125, -1.1724, -0.4632, -0.6655,\n", + " -0.3952, 0.1058, 0.5934, -0.8234, -1.0903, 2.0512, -1.0495, -0.4298,\n", + " 0.0612, -2.0254, -1.0056, 0.0256, -0.5191, -0.8357, -0.6531, -0.8046,\n", + " -0.0944, -0.0182, -0.0962, -1.0041, 0.5815, -0.0911, 0.8307, 0.0134,\n", + " 0.3203, 0.1335, 0.6088]], device='cuda:0')\n", + "Prediction Sample: tensor([[-6.6657e-02, -1.1082e-01, -4.7642e-02, -5.5628e-02, -6.2003e-02,\n", + " 4.1127e-02, 1.0005e-02, 1.1735e-01, 4.8188e-02, 9.7988e-02,\n", + " 1.2034e-01, -6.5063e-02, -7.3027e-02, -1.1281e-01, -8.0851e-02,\n", + " -9.4169e-02, -1.2062e-01, -4.9502e-02, -7.0551e-02, -6.9390e-02,\n", + " -1.3827e-02, 3.2343e-02, -7.8453e-03, -4.1084e-02, 4.6529e-06,\n", + " 2.2801e-02, -1.7519e-02, -3.9483e-02, -5.4406e-02, -4.5634e-02,\n", + " -1.4775e-01, -8.2144e-02, -8.1837e-02, -1.1564e-01, -7.8031e-02,\n", + " -1.3230e-01, -5.1549e-02, 7.7174e-03, -1.1360e-02, 1.7814e-01,\n", + " 1.7040e-01, 1.8762e-01, 9.3463e-02]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0014803351368755102\n", + "Grad encoder.fc1.bias: 0.0008962852298282087\n", + "Grad encoder.encoder.0.weight: 0.0002429447486065328\n", + "Grad encoder.encoder.0.bias: 0.0009524596389383078\n", + "Grad encoder.encoder.2.weight: 0.00021549765369854867\n", + "Grad encoder.encoder.2.bias: 0.0014353995211422443\n", + "Grad encoder.encoder.4.weight: 0.00046170124551281333\n", + "Grad encoder.encoder.4.bias: 0.005424427799880505\n", + "Grad decoder.fc1.0.weight: 0.0001287852501263842\n", + "Grad decoder.fc1.0.bias: 0.0015063539613038301\n", + "Grad decoder.fc1.2.weight: 0.00011740758054656908\n", + "Grad decoder.fc1.2.bias: 0.0021276776678860188\n", + "Grad decoder.fc1.4.weight: 8.237463771365583e-05\n", + "Grad decoder.fc1.4.bias: 0.0015343711711466312\n", + "Grad decoder.fc2.weight: 0.00015803280984982848\n", + "Grad decoder.fc2.bias: 0.0024780607782304287\n", + "Grad _memory_unit.weight_ih_l0: 4.313675162848085e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0003395276144146919\n", + "Grad _memory_unit.bias_hh_l0: 0.0001700337597867474\n", + "Grad _memory_unit.weight_ih_l1: 1.5516570783802308e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0004114669281989336\n", + "Grad _memory_unit.bias_hh_l1: 0.00021120274323038757\n", + "Data X Sample: tensor([[1.1754, 1.2948, 1.4605, 1.5087, 1.6870, 1.7193, 1.9828, 1.9065, 3.4931,\n", + " 3.9066, 3.8639, 3.8054, 3.7528, 3.4790, 3.3516, 3.2507, 3.1935, 3.3174,\n", + " 3.1925, 3.2601, 3.1823, 3.0955, 2.8146, 2.7561, 2.7533, 2.8783, 2.7732,\n", + " 2.9447, 2.7060, 2.8526, 3.0306, 2.9954, 3.1615, 2.3274, 3.7919, 4.3221,\n", + " 4.6822, 5.0010, 5.4574, 5.2742, 0.8829, 0.5018, 0.5436, 0.9759, 1.4152,\n", + " 1.5954, 1.0130, 1.4466]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4249, -0.3112, 1.0102, 0.1102, 0.2797, 0.4131, 0.5525, 0.0999,\n", + " -0.8531, -0.0564, 0.6632, 0.8909, -0.0318, 0.8932, -0.0405, 0.3783,\n", + " 0.0680, 0.8042, 0.7276, -1.3879, -0.2519, 0.5167, -0.6727, -0.3274,\n", + " 0.4355, -0.7781, -1.6923, -1.3558, 0.0635, -0.4499, -1.4685, -1.1941,\n", + " -0.4561, -0.4071, -1.1472, 0.1688, -0.9303, 0.3924, 0.4764, -0.0711,\n", + " 0.6483, 0.0293, -0.5545]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1829, -0.1911, -0.0619, -0.0897, 0.0165, 0.1046, 0.1247, 0.2409,\n", + " 0.1504, 0.2060, 0.2251, -0.1135, -0.1650, -0.2423, -0.1508, -0.2295,\n", + " -0.1547, -0.0879, -0.0807, -0.0702, -0.0526, 0.0141, -0.0248, -0.0481,\n", + " -0.0226, 0.0701, -0.0503, -0.0794, -0.1524, -0.1717, -0.2325, -0.1910,\n", + " -0.2271, -0.2410, -0.1575, -0.1845, -0.0403, -0.0243, -0.0006, 0.2777,\n", + " 0.3026, 0.3067, 0.2290]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.019983865320682526\n", + "Grad encoder.fc1.bias: 0.009864442981779575\n", + "Grad encoder.encoder.0.weight: 0.0023852852173149586\n", + "Grad encoder.encoder.0.bias: 0.009687477722764015\n", + "Grad encoder.encoder.2.weight: 0.0020051475148648024\n", + "Grad encoder.encoder.2.bias: 0.01258382759988308\n", + "Grad encoder.encoder.4.weight: 0.003474191762506962\n", + "Grad encoder.encoder.4.bias: 0.023784926161170006\n", + "Grad decoder.fc1.0.weight: 0.0009234565077349544\n", + "Grad decoder.fc1.0.bias: 0.005242491140961647\n", + "Grad decoder.fc1.2.weight: 0.0008212846587412059\n", + "Grad decoder.fc1.2.bias: 0.005254492163658142\n", + "Grad decoder.fc1.4.weight: 0.0007357918657362461\n", + "Grad decoder.fc1.4.bias: 0.003403013339266181\n", + "Grad decoder.fc2.weight: 0.001248195068910718\n", + "Grad decoder.fc2.bias: 0.0046162367798388\n", + "Grad _memory_unit.weight_ih_l0: 0.0005635627312585711\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0016486634267494082\n", + "Grad _memory_unit.bias_hh_l0: 0.000878460006788373\n", + "Grad _memory_unit.weight_ih_l1: 0.0002705613733269274\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.001958039589226246\n", + "Grad _memory_unit.bias_hh_l1: 0.0011446783319115639\n", + "Data X Sample: tensor([[1.5393, 1.6240, 1.7671, 1.9263, 2.0011, 2.1377, 2.1924, 2.3253, 4.0423,\n", + " 4.3047, 4.2763, 4.2650, 4.0191, 3.9452, 3.8812, 3.7580, 3.7061, 3.6598,\n", + " 3.5663, 3.5167, 3.5945, 3.4017, 3.1110, 2.9814, 2.9410, 3.0194, 3.0316,\n", + " 3.2669, 3.0043, 3.1736, 3.2860, 3.3657, 3.7181, 2.7325, 4.5028, 4.9715,\n", + " 5.1050, 5.4357, 6.0469, 5.9097, 1.1693, 0.6313, 0.6204, 1.0850, 1.6650,\n", + " 1.9442, 1.2102, 1.7828]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4929, -0.0377, 0.4803, -0.3583, -0.2844, 0.0076, 0.1315, 0.0797,\n", + " -0.3177, 0.2096, 0.0735, 0.3642, -1.8246, -0.2251, -0.5968, -0.8419,\n", + " -0.2404, -0.7700, 0.0442, -1.2905, -0.0532, 0.0063, -0.3212, 1.2128,\n", + " 0.6211, -2.4219, 0.7292, 0.6505, 0.2663, -0.6787, -0.1813, -0.2565,\n", + " -0.9904, -0.3799, -0.6471, 0.0683, 0.4852, -0.8971, 0.8163, 0.5840,\n", + " 0.5029, 0.5461, -0.2712]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1794, -0.1886, -0.0539, -0.0629, 0.0518, 0.1296, 0.1236, 0.2461,\n", + " 0.1379, 0.2110, 0.2289, -0.1284, -0.1775, -0.2528, -0.1504, -0.2322,\n", + " -0.1432, -0.0758, -0.0869, -0.0579, -0.0490, 0.0111, -0.0261, -0.0493,\n", + " -0.0187, 0.0734, -0.0774, -0.0957, -0.1782, -0.1765, -0.2464, -0.1936,\n", + " -0.2513, -0.2468, -0.1589, -0.1903, -0.0439, -0.0283, 0.0232, 0.2790,\n", + " 0.2976, 0.3079, 0.2250]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0008697303710505366\n", + "Grad encoder.fc1.bias: 0.0005933038773946464\n", + "Grad encoder.encoder.0.weight: 0.00011268793605268002\n", + "Grad encoder.encoder.0.bias: 0.00048509740736335516\n", + "Grad encoder.encoder.2.weight: 9.541166946291924e-05\n", + "Grad encoder.encoder.2.bias: 0.0005545270396396518\n", + "Grad encoder.encoder.4.weight: 0.00020786507229786366\n", + "Grad encoder.encoder.4.bias: 0.0011423297692090273\n", + "Grad decoder.fc1.0.weight: 7.222239946713671e-05\n", + "Grad decoder.fc1.0.bias: 0.00046420982107520103\n", + "Grad decoder.fc1.2.weight: 7.197950617410243e-05\n", + "Grad decoder.fc1.2.bias: 0.0008177445852197707\n", + "Grad decoder.fc1.4.weight: 6.687892891932279e-05\n", + "Grad decoder.fc1.4.bias: 0.0007289859931915998\n", + "Grad decoder.fc2.weight: 0.00016039874753914773\n", + "Grad decoder.fc2.bias: 0.001780836028046906\n", + "Grad _memory_unit.weight_ih_l0: 2.8107901016483083e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.3355117415776476e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.1287163437809795e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.4589320926461369e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.17691140784882e-05\n", + "Grad _memory_unit.bias_hh_l1: 5.500886982190423e-05\n", + "Data X Sample: tensor([[1.5997, 1.8541, 1.9204, 2.1013, 2.2811, 2.3926, 2.5313, 2.6149, 2.6387,\n", + " 2.7140, 2.6933, 2.7791, 2.5877, 2.5820, 2.4816, 2.5778, 2.5535, 2.5843,\n", + " 2.5648, 2.5236, 2.3947, 2.4648, 2.3544, 2.4775, 2.4455, 2.5518, 2.4935,\n", + " 2.4390, 2.2897, 2.3614, 2.3587, 2.2659, 2.3100, 1.5493, 2.0271, 1.8436,\n", + " 1.6636, 1.6193, 1.6607, 1.5718, 1.2504, 0.7189, 0.7457, 1.2974, 1.9306,\n", + " 2.1729, 1.3938, 2.0877]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.1858, 0.2781, -0.5097, 0.9697, 1.3342, 0.5725, -0.3830, -0.3241,\n", + " -0.3512, -0.4986, -0.5739, 0.3423, 0.4207, 0.7288, 0.8908, 1.0562,\n", + " 0.6248, 3.7087, -0.5899, 0.5129, -0.0138, 0.3804, 0.5946, 0.9866,\n", + " -0.6673, 0.0793, -0.7187, -0.3336, -0.3776, 0.1685, 1.5315, -0.1196,\n", + " 0.5171, 1.1075, 4.2054, 1.1830, -0.0868, -0.4035, 1.0291, -0.3235,\n", + " -0.6913, -0.3813, -1.0527]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3542, 0.3827, 0.1260, 0.2367, 0.1368, -0.1336, -0.4274, -0.4327,\n", + " -0.1871, -0.2430, -0.2406, 0.2378, 0.1286, 0.2299, 0.1680, 0.2942,\n", + " 0.2251, 0.1790, 0.0826, 0.0798, 0.1299, 0.0870, 0.0686, 0.0319,\n", + " 0.0958, 0.1340, -0.0711, 0.0053, 0.1594, 0.2602, 0.2674, 0.2135,\n", + " 0.2856, 0.3281, 0.1894, 0.1727, -0.0229, 0.0228, -0.0309, -0.3122,\n", + " -0.2787, -0.3106, -0.3178]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.001481112907640636\n", + "Grad encoder.fc1.bias: 0.0009870564099401236\n", + "Grad encoder.encoder.0.weight: 0.0001771540119079873\n", + "Grad encoder.encoder.0.bias: 0.0008517273236066103\n", + "Grad encoder.encoder.2.weight: 0.00013126320845913142\n", + "Grad encoder.encoder.2.bias: 0.0010661687701940536\n", + "Grad encoder.encoder.4.weight: 0.0002499071415513754\n", + "Grad encoder.encoder.4.bias: 0.002084645675495267\n", + "Grad decoder.fc1.0.weight: 9.26980865187943e-05\n", + "Grad decoder.fc1.0.bias: 0.0009457573760300875\n", + "Grad decoder.fc1.2.weight: 9.334751666756347e-05\n", + "Grad decoder.fc1.2.bias: 0.0015683404635637999\n", + "Grad decoder.fc1.4.weight: 8.149744098773226e-05\n", + "Grad decoder.fc1.4.bias: 0.0014801003271713853\n", + "Grad decoder.fc2.weight: 0.0001714893151074648\n", + "Grad decoder.fc2.bias: 0.0023977584205567837\n", + "Grad _memory_unit.weight_ih_l0: 2.9431006623781286e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.490116306347772e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.4779844756703824e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0764440048660617e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00019793366664089262\n", + "Grad _memory_unit.bias_hh_l1: 0.00010465031664352864\n", + "Data X Sample: tensor([[2.6648, 2.6494, 2.1518, 2.0488, 2.1292, 2.2467, 3.6406, 4.0062, 4.2156,\n", + " 4.2716, 4.0637, 4.1657, 3.9925, 4.0188, 3.7904, 3.6979, 3.6102, 3.7353,\n", + " 3.6200, 3.5874, 3.3860, 3.3037, 3.0026, 2.9031, 2.8359, 2.8835, 2.8904,\n", + " 2.9162, 2.8863, 3.0753, 3.0551, 3.1944, 3.2539, 2.4556, 4.1008, 4.5458,\n", + " 4.7392, 5.3668, 5.7870, 5.8331, 1.6036, 0.8723, 0.7680, 1.3663, 1.8473,\n", + " 2.0128, 1.3394, 1.8766]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2907, -0.3873, 0.6594, -0.2659, 1.1467, 1.4878, -0.2037, 0.4364,\n", + " 0.7279, 0.3907, 0.1413, 0.5003, -1.4673, 0.2655, 0.0958, 0.2654,\n", + " 0.1605, -0.7427, -0.0588, 6.3976, 0.6123, 1.1947, -0.7256, 0.1796,\n", + " -1.8368, -0.4825, 1.3747, -0.4978, -0.0167, -0.4897, -0.0263, 0.1115,\n", + " -0.6950, -0.7524, -0.1409, 0.3605, -0.6001, -0.6782, 0.0000, 0.6977,\n", + " 0.2444, 0.1566, -0.0197]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1611, -0.1679, -0.0408, -0.0635, 0.0294, 0.0898, 0.1055, 0.2236,\n", + " 0.1266, 0.2084, 0.2153, -0.1151, -0.1569, -0.2241, -0.1358, -0.2140,\n", + " -0.1456, -0.0684, -0.0730, -0.0515, -0.0369, 0.0064, -0.0303, -0.0457,\n", + " -0.0274, 0.0786, -0.0685, -0.0865, -0.1468, -0.1525, -0.2316, -0.1736,\n", + " -0.2262, -0.2296, -0.1494, -0.1773, -0.0440, -0.0171, 0.0259, 0.2645,\n", + " 0.2928, 0.2979, 0.2098]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0008572554215788841\n", + "Grad encoder.fc1.bias: 0.0004677243414334953\n", + "Grad encoder.encoder.0.weight: 0.0001686006726231426\n", + "Grad encoder.encoder.0.bias: 0.0006801994750276208\n", + "Grad encoder.encoder.2.weight: 0.00012226292164996266\n", + "Grad encoder.encoder.2.bias: 0.0009140679612755775\n", + "Grad encoder.encoder.4.weight: 0.0003001596196554601\n", + "Grad encoder.encoder.4.bias: 0.003673110157251358\n", + "Grad decoder.fc1.0.weight: 0.0001245312741957605\n", + "Grad decoder.fc1.0.bias: 0.0016069014091044664\n", + "Grad decoder.fc1.2.weight: 0.00011806923430413008\n", + "Grad decoder.fc1.2.bias: 0.0023384704254567623\n", + "Grad decoder.fc1.4.weight: 9.467396012041718e-05\n", + "Grad decoder.fc1.4.bias: 0.0022444911301136017\n", + "Grad decoder.fc2.weight: 0.00015401621931232512\n", + "Grad decoder.fc2.bias: 0.003644464537501335\n", + "Grad _memory_unit.weight_ih_l0: 2.3595859602210112e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0001330687227891758\n", + "Grad _memory_unit.bias_hh_l0: 6.84950573486276e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0830498467839789e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00032100631506182253\n", + "Grad _memory_unit.bias_hh_l1: 0.0001683981972746551\n", + "Data X Sample: tensor([[2.7698, 3.3937, 3.6724, 3.8877, 4.0040, 4.2180, 4.3354, 4.4065, 4.3523,\n", + " 4.1926, 4.1970, 4.1267, 4.0013, 3.9179, 3.7627, 3.4216, 3.3586, 3.4780,\n", + " 3.5580, 3.4721, 3.3590, 3.2976, 2.9279, 2.8172, 2.8396, 2.8548, 2.9836,\n", + " 3.0263, 3.2194, 3.3505, 3.3175, 3.4652, 3.5245, 2.5883, 4.1596, 4.6383,\n", + " 5.0204, 5.4516, 5.9518, 5.8757, 2.0713, 1.3542, 1.2308, 2.2418, 3.2585,\n", + " 3.7626, 2.3728, 3.4874]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4544, 0.0149, -0.3579, 1.9397, -0.5791, -1.0455, -0.5636, 0.5392,\n", + " 1.5013, 0.6135, -0.5668, 1.0765, 0.3856, 0.8856, -0.7364, 0.2031,\n", + " 0.8314, -0.6012, -0.7708, 0.7554, 0.2013, 1.0404, -2.6344, 2.0895,\n", + " 2.7882, 0.6007, 1.0261, -0.2050, 0.3188, -0.3047, -0.3279, 0.0096,\n", + " 0.5249, 1.6995, 1.1217, -1.0516, -0.9787, -0.0948, 0.2739, 0.3483,\n", + " 0.9606, -0.9695, 0.6034]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1468, -0.1550, -0.0373, -0.0718, 0.0032, 0.0632, 0.0945, 0.2082,\n", + " 0.1160, 0.1806, 0.2028, -0.1037, -0.1343, -0.2032, -0.1242, -0.1946,\n", + " -0.1383, -0.0639, -0.0619, -0.0553, -0.0345, 0.0122, -0.0349, -0.0393,\n", + " -0.0223, 0.0734, -0.0609, -0.0840, -0.1267, -0.1310, -0.2143, -0.1603,\n", + " -0.1965, -0.2113, -0.1340, -0.1672, -0.0356, -0.0158, 0.0209, 0.2514,\n", + " 0.2834, 0.2816, 0.1922]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003534965799190104\n", + "Grad encoder.fc1.bias: 0.0003180833882652223\n", + "Grad encoder.encoder.0.weight: 6.559734174516052e-05\n", + "Grad encoder.encoder.0.bias: 0.00040225929114967585\n", + "Grad encoder.encoder.2.weight: 4.560721936286427e-05\n", + "Grad encoder.encoder.2.bias: 0.00046266126446425915\n", + "Grad encoder.encoder.4.weight: 0.00014448085858020931\n", + "Grad encoder.encoder.4.bias: 0.0019542179070413113\n", + "Grad decoder.fc1.0.weight: 8.125064050545916e-05\n", + "Grad decoder.fc1.0.bias: 0.0009282209794037044\n", + "Grad decoder.fc1.2.weight: 7.254515367094427e-05\n", + "Grad decoder.fc1.2.bias: 0.001286148326471448\n", + "Grad decoder.fc1.4.weight: 5.5937452998477966e-05\n", + "Grad decoder.fc1.4.bias: 0.001077052322216332\n", + "Grad decoder.fc2.weight: 0.00011467179865576327\n", + "Grad decoder.fc2.bias: 0.001881629228591919\n", + "Grad _memory_unit.weight_ih_l0: 1.672370854066685e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.708328823558986e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.4571232137968764e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.204231224022806e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001957291242433712\n", + "Grad _memory_unit.bias_hh_l1: 0.00010287800978403538\n", + "Data X Sample: tensor([[1.7154, 1.9372, 2.0571, 2.1844, 2.2794, 2.5399, 2.5144, 2.5809, 2.6607,\n", + " 2.7376, 2.6552, 2.6700, 2.5921, 2.6747, 2.5597, 2.6325, 2.5237, 2.5089,\n", + " 2.5999, 2.5887, 2.6278, 2.7755, 2.6556, 2.7886, 2.6632, 2.7320, 2.7359,\n", + " 2.6959, 2.4874, 2.6037, 2.3937, 2.3295, 2.2616, 1.4509, 1.9585, 1.8607,\n", + " 1.6853, 1.6326, 1.6290, 1.5661, 1.3411, 0.7906, 0.7599, 1.3491, 1.9742,\n", + " 2.1558, 1.4346, 2.2441]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5490, -1.4771, 0.4098, 0.6014, -0.3422, -0.0831, 0.4381, 0.1595,\n", + " 0.1277, 0.1248, 0.0532, -0.8847, 0.0640, -0.4096, -0.0794, 0.8886,\n", + " 0.2078, 0.1024, -0.0980, -0.1581, -0.9644, 0.1694, -0.6960, -0.8541,\n", + " 0.6927, -0.7016, 0.5154, -0.8395, -0.3243, -0.7589, 0.6322, -0.9471,\n", + " -1.0850, -1.1680, -0.2860, 1.1059, -0.5754, -0.0920, -0.7130, -0.5027,\n", + " -0.2243, 0.8240, 0.4233]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2656, 0.3100, 0.0859, 0.1964, 0.1043, -0.0950, -0.3211, -0.3225,\n", + " -0.1111, -0.1783, -0.1661, 0.1830, 0.0891, 0.1598, 0.1207, 0.2350,\n", + " 0.1759, 0.1542, 0.0769, 0.0485, 0.0889, 0.0433, 0.0504, 0.0304,\n", + " 0.0749, 0.1359, -0.1023, -0.0148, 0.0991, 0.1690, 0.1876, 0.1418,\n", + " 0.2124, 0.2463, 0.1512, 0.1022, -0.0110, -0.0008, -0.0159, -0.2199,\n", + " -0.2015, -0.2095, -0.2133]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003281235694885254\n", + "Grad encoder.fc1.bias: 0.00036476063542068005\n", + "Grad encoder.encoder.0.weight: 8.28309275675565e-05\n", + "Grad encoder.encoder.0.bias: 0.0003943763440474868\n", + "Grad encoder.encoder.2.weight: 6.645193934673443e-05\n", + "Grad encoder.encoder.2.bias: 0.00038207898614928126\n", + "Grad encoder.encoder.4.weight: 0.00019506602257024497\n", + "Grad encoder.encoder.4.bias: 0.0011957731330767274\n", + "Grad decoder.fc1.0.weight: 6.535534339491278e-05\n", + "Grad decoder.fc1.0.bias: 0.0004933116142638028\n", + "Grad decoder.fc1.2.weight: 8.775074820732698e-05\n", + "Grad decoder.fc1.2.bias: 0.0009295525378547609\n", + "Grad decoder.fc1.4.weight: 6.214900349732488e-05\n", + "Grad decoder.fc1.4.bias: 0.0008711171103641391\n", + "Grad decoder.fc2.weight: 0.0001486218679929152\n", + "Grad decoder.fc2.bias: 0.0027946247719228268\n", + "Grad _memory_unit.weight_ih_l0: 2.0188566850265488e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.437935033114627e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.9135189834050834e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.007821866660379e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010669646871974692\n", + "Grad _memory_unit.bias_hh_l1: 5.5650511058047414e-05\n", + "Data X Sample: tensor([[1.6040, 1.8570, 2.0917, 2.1013, 2.2948, 2.4618, 2.4281, 2.5908, 2.6241,\n", + " 2.6745, 2.5727, 2.7148, 2.6032, 2.5274, 2.5496, 2.5122, 2.4388, 2.4895,\n", + " 2.6143, 2.4083, 2.4561, 2.4709, 2.4363, 2.4393, 2.4905, 2.5022, 2.4349,\n", + " 2.5042, 2.2341, 2.3286, 2.3832, 2.2355, 1.9272, 1.2633, 1.7599, 1.6807,\n", + " 1.6066, 1.5371, 1.5402, 1.4271, 1.2600, 0.7528, 0.7518, 1.3807, 1.9385,\n", + " 2.0300, 1.4006, 2.0643]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3485, 0.6292, 0.2535, 0.8222, -0.6031, -1.1139, 0.1747, -0.2143,\n", + " -0.1202, -0.3868, -0.0313, -6.7571, 0.3640, -1.2299, 0.0125, -0.1591,\n", + " -0.2767, -0.0474, 1.1169, 0.2413, 0.4672, -0.2753, 0.8295, 0.0149,\n", + " 0.2539, 0.2268, -0.0623, -0.0231, 0.1112, -0.4413, -0.4002, 0.5188,\n", + " -0.2948, 0.3869, -1.0053, 0.2766, -0.0107, 0.5779, 0.5046, -0.2210,\n", + " -0.1183, -0.4708, -0.4820]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2153, 0.2430, 0.0724, 0.1559, 0.0784, -0.0676, -0.2623, -0.2462,\n", + " -0.0804, -0.1342, -0.1175, 0.1385, 0.0629, 0.1181, 0.0788, 0.1847,\n", + " 0.1289, 0.1284, 0.0619, 0.0313, 0.0719, 0.0347, 0.0304, 0.0315,\n", + " 0.0588, 0.1256, -0.0969, -0.0143, 0.0741, 0.1239, 0.1351, 0.1076,\n", + " 0.1644, 0.1857, 0.1193, 0.0651, -0.0113, -0.0007, -0.0135, -0.1616,\n", + " -0.1381, -0.1374, -0.1547]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00019460995099507272\n", + "Grad encoder.fc1.bias: 0.00025327486218884587\n", + "Grad encoder.encoder.0.weight: 4.8734415031503886e-05\n", + "Grad encoder.encoder.0.bias: 0.0002974994422402233\n", + "Grad encoder.encoder.2.weight: 4.847509990213439e-05\n", + "Grad encoder.encoder.2.bias: 0.00033433130010962486\n", + "Grad encoder.encoder.4.weight: 0.00013289478374645114\n", + "Grad encoder.encoder.4.bias: 0.00124423298984766\n", + "Grad decoder.fc1.0.weight: 7.715630636084825e-05\n", + "Grad decoder.fc1.0.bias: 0.000667754327878356\n", + "Grad decoder.fc1.2.weight: 8.282202907139435e-05\n", + "Grad decoder.fc1.2.bias: 0.0009094047709368169\n", + "Grad decoder.fc1.4.weight: 5.570035500568338e-05\n", + "Grad decoder.fc1.4.bias: 0.000703742727637291\n", + "Grad decoder.fc2.weight: 0.00011498558887979016\n", + "Grad decoder.fc2.bias: 0.0016561057418584824\n", + "Grad _memory_unit.weight_ih_l0: 1.454683024348924e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.5240114306798205e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.9692964744754136e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.931761163286865e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00015383378195110708\n", + "Grad _memory_unit.bias_hh_l1: 7.956330227898434e-05\n", + "Data X Sample: tensor([[1.5000, 1.5978, 1.7911, 1.9154, 2.0899, 2.1348, 1.9690, 2.7101, 3.8031,\n", + " 4.2431, 4.4666, 4.2455, 4.0346, 3.9234, 3.7929, 3.6910, 3.6353, 3.5960,\n", + " 3.5394, 3.5911, 3.3639, 3.2164, 2.8508, 2.9241, 2.9654, 3.0194, 3.0556,\n", + " 3.2425, 3.0633, 3.3701, 3.4540, 3.5039, 4.0459, 2.8835, 4.5861, 4.8596,\n", + " 4.9437, 5.4781, 5.9645, 5.7991, 0.9879, 0.6651, 0.6710, 1.1453, 1.6848,\n", + " 1.8355, 1.2986, 1.7906]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5070, -0.1894, -0.3781, 0.1960, 0.5033, -0.4779, 0.4122, 0.2249,\n", + " 0.2864, 0.1927, -0.0819, -0.1240, -0.0090, 0.1604, 0.3469, -0.7227,\n", + " -0.0997, 0.6581, -0.6301, -0.5022, -1.5506, 0.9547, 0.3367, -0.1033,\n", + " 0.9310, -0.2674, 0.1880, 0.1698, -0.5669, 0.1407, 0.0676, -0.1500,\n", + " 0.3348, -0.1775, -0.3075, -0.1466, -1.0526, 0.0705, -0.5970, 0.3821,\n", + " 0.5248, 0.7094, -0.0609]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2170, -0.2596, -0.0532, -0.0503, 0.0998, 0.1478, 0.1777, 0.3153,\n", + " 0.1655, 0.3018, 0.3058, -0.2123, -0.2382, -0.3397, -0.1755, -0.3187,\n", + " -0.1902, -0.0827, -0.1319, -0.0660, -0.0555, -0.0267, -0.0725, -0.0633,\n", + " -0.0237, 0.1053, -0.1119, -0.1706, -0.2340, -0.2154, -0.3434, -0.2323,\n", + " -0.3336, -0.3566, -0.2066, -0.1928, -0.0421, -0.0513, 0.1044, 0.3925,\n", + " 0.4025, 0.4023, 0.2736]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007323471363633871\n", + "Grad encoder.fc1.bias: 0.00036169454688206315\n", + "Grad encoder.encoder.0.weight: 0.0002249731041956693\n", + "Grad encoder.encoder.0.bias: 0.0007152273901738226\n", + "Grad encoder.encoder.2.weight: 0.00021501749870367348\n", + "Grad encoder.encoder.2.bias: 0.0009993109852075577\n", + "Grad encoder.encoder.4.weight: 0.0004949241410940886\n", + "Grad encoder.encoder.4.bias: 0.0038992837071418762\n", + "Grad decoder.fc1.0.weight: 0.00017894072516355664\n", + "Grad decoder.fc1.0.bias: 0.0015223725931718946\n", + "Grad decoder.fc1.2.weight: 0.00012406057794578373\n", + "Grad decoder.fc1.2.bias: 0.0016099661588668823\n", + "Grad decoder.fc1.4.weight: 8.753456495469436e-05\n", + "Grad decoder.fc1.4.bias: 0.0019381152233108878\n", + "Grad decoder.fc2.weight: 0.00014286053192336112\n", + "Grad decoder.fc2.bias: 0.003220277139917016\n", + "Grad _memory_unit.weight_ih_l0: 4.1560626414138824e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00012709076690953225\n", + "Grad _memory_unit.bias_hh_l0: 6.871583173051476e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.651805723668076e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00032676756381988525\n", + "Grad _memory_unit.bias_hh_l1: 0.0001686066680122167\n", + "Data X Sample: tensor([[2.4070, 2.8795, 3.0969, 3.2776, 3.3534, 3.6228, 3.8239, 3.6825, 3.7982,\n", + " 3.7755, 3.7877, 3.6671, 3.4421, 3.5389, 3.3718, 3.1823, 3.2768, 3.3542,\n", + " 3.4692, 3.2378, 3.3467, 3.3879, 3.1038, 2.9947, 2.8828, 2.9044, 2.8025,\n", + " 2.8713, 2.5707, 2.5939, 2.5441, 2.6998, 2.8557, 2.0436, 3.1595, 3.4197,\n", + " 3.6832, 4.0814, 4.6461, 4.4458, 1.8995, 1.0535, 1.0651, 1.9088, 2.6600,\n", + " 2.9906, 2.1077, 3.1746]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.2800, -0.7235, -0.3814, -0.7395, -1.1631, 0.2165, -0.1287, 0.5570,\n", + " 1.2151, 0.9844, 0.0421, -0.9204, 0.4286, -0.4482, -0.8657, 0.3239,\n", + " 0.1821, -0.1542, 0.9896, -0.8066, 0.5152, 1.4586, -0.9989, 1.5473,\n", + " 1.0903, -1.1662, 0.2276, 1.0511, 0.3337, -0.4165, 0.3905, -0.2341,\n", + " -0.3578, 0.1395, 0.4880, 0.5906, -0.2169, 0.8248, 0.4914, -0.4067,\n", + " 0.5717, 1.2094, -0.2042]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1347, -0.1644, -0.0381, -0.0885, -0.0192, 0.0360, 0.0984, 0.2178,\n", + " 0.1196, 0.1868, 0.2183, -0.1166, -0.1220, -0.1915, -0.1303, -0.2089,\n", + " -0.1492, -0.0594, -0.0510, -0.0625, -0.0279, 0.0127, -0.0558, -0.0369,\n", + " -0.0302, 0.0851, -0.0553, -0.0781, -0.1233, -0.1239, -0.2152, -0.1561,\n", + " -0.1788, -0.2206, -0.1428, -0.1633, -0.0428, -0.0173, 0.0409, 0.2628,\n", + " 0.3138, 0.3018, 0.2002]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00011076318332925439\n", + "Grad encoder.fc1.bias: 0.0005058125825598836\n", + "Grad encoder.encoder.0.weight: 4.428198735695332e-05\n", + "Grad encoder.encoder.0.bias: 0.0003120661713182926\n", + "Grad encoder.encoder.2.weight: 3.816346361418255e-05\n", + "Grad encoder.encoder.2.bias: 0.00029888460994698107\n", + "Grad encoder.encoder.4.weight: 0.0001402060006512329\n", + "Grad encoder.encoder.4.bias: 0.0009404248557984829\n", + "Grad decoder.fc1.0.weight: 5.829736983287148e-05\n", + "Grad decoder.fc1.0.bias: 0.0004024941590614617\n", + "Grad decoder.fc1.2.weight: 8.998638077173382e-05\n", + "Grad decoder.fc1.2.bias: 0.0007685378659516573\n", + "Grad decoder.fc1.4.weight: 7.021587225608528e-05\n", + "Grad decoder.fc1.4.bias: 0.0007449304684996605\n", + "Grad decoder.fc2.weight: 0.0001382703921990469\n", + "Grad decoder.fc2.bias: 0.002220863476395607\n", + "Grad _memory_unit.weight_ih_l0: 1.339304890279891e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.60924454475753e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.9473307222360745e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.744141733681317e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010481662320671603\n", + "Grad _memory_unit.bias_hh_l1: 5.436774154077284e-05\n", + "Data X Sample: tensor([[1.4990, 1.9080, 2.0992, 2.2959, 2.4092, 2.4471, 2.4574, 2.6050, 2.5948,\n", + " 2.7219, 2.7948, 2.8063, 2.7008, 2.6365, 2.5320, 2.5040, 2.4812, 2.5514,\n", + " 2.5606, 2.5869, 2.5616, 2.6408, 2.5857, 2.5901, 2.4887, 2.3716, 2.2351,\n", + " 2.1861, 1.9774, 1.8898, 1.8197, 1.7381, 1.4652, 0.9406, 1.3702, 1.3572,\n", + " 1.4631, 1.4735, 1.5656, 1.5576, 1.3172, 0.7707, 0.7902, 1.4065, 2.0455,\n", + " 2.2873, 1.4958, 2.1190]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0736, -0.3719, 0.4465, -0.0989, -0.2639, 0.6465, -0.4523, -0.0580,\n", + " 0.0478, 0.0167, 0.1170, 0.0122, 0.0634, 0.3417, 0.3913, 1.5582,\n", + " -0.1279, -0.2014, -0.2147, 0.4836, -0.0559, -1.0122, -1.1697, 0.5136,\n", + " 0.4909, -0.0503, -0.1869, -0.4943, 0.3717, -0.4272, -0.3598, 0.2386,\n", + " 0.4548, 0.0436, 0.0710, 0.1326, -0.5204, 0.5269, 0.0000, -0.0955,\n", + " -0.2554, -0.2469, 0.2008]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2243, 0.2538, 0.0743, 0.1488, 0.0761, -0.0788, -0.2661, -0.2539,\n", + " -0.0831, -0.1450, -0.1460, 0.1322, 0.0784, 0.1434, 0.0861, 0.1876,\n", + " 0.1284, 0.1342, 0.0734, 0.0317, 0.0644, 0.0412, 0.0327, 0.0220,\n", + " 0.0488, 0.1103, -0.0939, -0.0129, 0.0868, 0.1405, 0.1361, 0.1113,\n", + " 0.1637, 0.1875, 0.1201, 0.0722, -0.0012, -0.0010, -0.0147, -0.1718,\n", + " -0.1392, -0.1591, -0.1710]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00021417775133159012\n", + "Grad encoder.fc1.bias: 0.00026674335822463036\n", + "Grad encoder.encoder.0.weight: 7.66083539929241e-05\n", + "Grad encoder.encoder.0.bias: 0.00032847069087438285\n", + "Grad encoder.encoder.2.weight: 5.832418901263736e-05\n", + "Grad encoder.encoder.2.bias: 0.00034557649632915854\n", + "Grad encoder.encoder.4.weight: 0.00015842185530345887\n", + "Grad encoder.encoder.4.bias: 0.001094843610189855\n", + "Grad decoder.fc1.0.weight: 7.385764183709398e-05\n", + "Grad decoder.fc1.0.bias: 0.0005954598891548812\n", + "Grad decoder.fc1.2.weight: 0.00010340733570046723\n", + "Grad decoder.fc1.2.bias: 0.001026368816383183\n", + "Grad decoder.fc1.4.weight: 7.921180804260075e-05\n", + "Grad decoder.fc1.4.bias: 0.0010590472957119346\n", + "Grad decoder.fc2.weight: 0.00012834640801884234\n", + "Grad decoder.fc2.bias: 0.002000053646042943\n", + "Grad _memory_unit.weight_ih_l0: 1.3194451639719773e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.294753984548151e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.325096986372955e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.650243449257687e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001335769338766113\n", + "Grad _memory_unit.bias_hh_l1: 6.97864597896114e-05\n", + "Data X Sample: tensor([[1.6708, 1.9459, 2.0992, 2.1363, 2.1787, 2.3130, 2.3495, 2.3779, 2.5191,\n", + " 2.4659, 2.5188, 2.6155, 2.4501, 2.4293, 2.2798, 2.3016, 2.3476, 2.4566,\n", + " 2.5049, 2.5050, 2.6033, 2.6117, 2.5664, 2.6244, 2.6144, 2.6798, 2.5734,\n", + " 2.6633, 2.4215, 2.4400, 2.4952, 2.4290, 2.1846, 1.4074, 1.9119, 1.8169,\n", + " 1.7462, 1.6405, 1.6036, 1.4952, 1.3745, 0.8205, 0.7559, 1.4180, 1.9623,\n", + " 2.2072, 1.5094, 2.0877]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 9.7680e-01, 6.3340e-01, 7.4115e-02, -9.2853e-01, 1.6060e+00,\n", + " 6.3842e-01, 6.4343e-01, -2.6369e-01, 1.9268e-01, -4.3043e-01,\n", + " -4.0356e-01, -4.6855e-01, -6.6737e-01, 8.8876e-01, -3.0853e-01,\n", + " -1.7135e-01, -2.4244e-01, -3.3533e-02, 6.2901e-01, 1.8082e-01,\n", + " -7.4064e-01, -1.0757e+00, 1.0174e+00, -1.5587e-01, 4.8059e-01,\n", + " 1.5849e-01, -1.5878e-01, -1.2136e+00, 2.1655e-01, 8.4962e-05,\n", + " -3.9114e-01, 4.5619e-01, 2.6445e-01, 2.7980e-01, 8.9347e-01,\n", + " 4.6722e-01, -8.6812e-02, 7.0514e-02, 8.5538e-01, -6.0285e-01,\n", + " -2.0933e-01, -5.2833e-01, -1.5384e+00]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3026, 0.3504, 0.0817, 0.1955, 0.1117, -0.1334, -0.3481, -0.3487,\n", + " -0.1102, -0.2071, -0.2187, 0.1849, 0.1249, 0.2244, 0.1538, 0.2470,\n", + " 0.1922, 0.1775, 0.1077, 0.0645, 0.0770, 0.0610, 0.0584, 0.0086,\n", + " 0.0634, 0.1318, -0.0976, -0.0038, 0.1179, 0.2007, 0.2059, 0.1463,\n", + " 0.2223, 0.2737, 0.1472, 0.1201, 0.0023, -0.0051, -0.0030, -0.2532,\n", + " -0.2109, -0.2561, -0.2558]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00021581476903520525\n", + "Grad encoder.fc1.bias: 0.0015651071444153786\n", + "Grad encoder.encoder.0.weight: 9.094963752431795e-05\n", + "Grad encoder.encoder.0.bias: 0.0009507577051408589\n", + "Grad encoder.encoder.2.weight: 6.833877705503255e-05\n", + "Grad encoder.encoder.2.bias: 0.0007157601648941636\n", + "Grad encoder.encoder.4.weight: 0.00016150769079104066\n", + "Grad encoder.encoder.4.bias: 0.00101210898719728\n", + "Grad decoder.fc1.0.weight: 5.933679494773969e-05\n", + "Grad decoder.fc1.0.bias: 0.00047864086809568107\n", + "Grad decoder.fc1.2.weight: 5.583603342529386e-05\n", + "Grad decoder.fc1.2.bias: 0.0004715659888461232\n", + "Grad decoder.fc1.4.weight: 5.9504247474251315e-05\n", + "Grad decoder.fc1.4.bias: 0.0005991015350446105\n", + "Grad decoder.fc2.weight: 0.00014776657917536795\n", + "Grad decoder.fc2.bias: 0.0022453272249549627\n", + "Grad _memory_unit.weight_ih_l0: 1.8848726540454663e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.993544982629828e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.191643190803006e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.3696597862872295e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010218592069577426\n", + "Grad _memory_unit.bias_hh_l1: 5.388649515225552e-05\n", + "Data X Sample: tensor([[2.5460, 2.9145, 3.0443, 3.3082, 3.3295, 3.4578, 3.6129, 3.6782, 3.7762,\n", + " 3.8845, 3.9337, 3.9398, 3.8016, 3.6944, 3.5332, 3.3546, 3.3743, 3.4219,\n", + " 3.3660, 3.2861, 3.1872, 3.1077, 2.8460, 2.8325, 2.7064, 2.6694, 2.7892,\n", + " 2.7490, 2.5949, 2.8690, 2.7541, 2.9402, 2.9261, 2.0825, 3.5248, 3.9499,\n", + " 4.1552, 4.5054, 5.0074, 4.8770, 2.0618, 1.1013, 1.0893, 1.8571, 2.8106,\n", + " 3.3509, 2.0397, 3.0651]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5938, 0.2031, -0.3190, -0.1619, -1.1372, -2.2082, -2.0249, -1.7111,\n", + " -0.6773, -0.8059, -0.6557, 1.4485, 0.0365, 0.4191, -0.8676, -0.3944,\n", + " -0.5001, -1.3261, -0.3241, -0.5855, -2.3386, -0.1346, -0.2341, -0.3052,\n", + " -0.1797, 1.6175, -0.2771, 0.7116, 1.4745, 0.9606, 1.0525, 0.1730,\n", + " 0.0387, 0.4587, -0.0188, 0.4345, 0.0000, 0.7101, -1.0346, -0.0635,\n", + " 0.1001, 0.4390, 0.8981]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1354, -0.1834, -0.0420, -0.1210, -0.0395, 0.0233, 0.1198, 0.2443,\n", + " 0.1205, 0.1795, 0.2429, -0.1346, -0.1209, -0.1879, -0.1411, -0.2313,\n", + " -0.1592, -0.0548, -0.0496, -0.0694, -0.0279, 0.0304, -0.0724, -0.0167,\n", + " -0.0335, 0.0959, -0.0501, -0.0645, -0.1345, -0.1264, -0.2143, -0.1618,\n", + " -0.1678, -0.2463, -0.1559, -0.1740, -0.0528, -0.0218, 0.0557, 0.2783,\n", + " 0.3522, 0.3343, 0.2177]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00022324873134493828\n", + "Grad encoder.fc1.bias: 0.0012593959691002965\n", + "Grad encoder.encoder.0.weight: 0.00010399863822385669\n", + "Grad encoder.encoder.0.bias: 0.0008570171776227653\n", + "Grad encoder.encoder.2.weight: 8.575792890042067e-05\n", + "Grad encoder.encoder.2.bias: 0.0007072658045217395\n", + "Grad encoder.encoder.4.weight: 0.00022752978838980198\n", + "Grad encoder.encoder.4.bias: 0.0018380244728177786\n", + "Grad decoder.fc1.0.weight: 9.06083223526366e-05\n", + "Grad decoder.fc1.0.bias: 0.0008142449078150094\n", + "Grad decoder.fc1.2.weight: 0.00010292803926859051\n", + "Grad decoder.fc1.2.bias: 0.0010252012871205807\n", + "Grad decoder.fc1.4.weight: 7.585619459860027e-05\n", + "Grad decoder.fc1.4.bias: 0.0009640961652621627\n", + "Grad decoder.fc2.weight: 0.0001524300896562636\n", + "Grad decoder.fc2.bias: 0.0024231800343841314\n", + "Grad _memory_unit.weight_ih_l0: 1.5216461179079488e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.511483949609101e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.951245500706136e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.882325917307753e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00017856372869573534\n", + "Grad _memory_unit.bias_hh_l1: 9.38220473472029e-05\n", + "Data X Sample: tensor([[1.4353, 1.7944, 1.9489, 2.0444, 2.2163, 2.2644, 2.3372, 2.2643, 2.3653,\n", + " 2.2953, 2.2016, 2.1559, 2.0262, 1.8894, 1.8158, 1.7587, 1.8082, 1.7932,\n", + " 1.7243, 1.6421, 1.6709, 1.6534, 1.6362, 1.5670, 1.4658, 1.4470, 1.4226,\n", + " 1.5254, 1.1587, 1.1954, 1.1198, 1.0058, 0.9482, 0.7003, 1.0393, 1.0872,\n", + " 1.2408, 1.4258, 1.6036, 1.5349, 1.3268, 0.7727, 0.7195, 1.3319, 1.8592,\n", + " 2.0814, 1.4346, 1.9392]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.8283, -1.7868, -0.9812, -1.0341, -0.4295, 0.4106, 1.1011, 3.0282,\n", + " 1.6919, 3.0407, 4.3191, -0.9070, -0.7325, -1.6739, -0.2028, -2.7169,\n", + " -2.4197, -0.3189, -0.5040, -0.4944, -0.2343, 0.3635, 0.2819, 0.1129,\n", + " -0.0840, -0.2456, 0.5997, -0.0324, -0.8624, -1.0648, -1.7596, -0.9384,\n", + " -1.7952, -3.1836, -0.0417, -2.2685, 0.3439, 0.0000, -0.2296, 6.2809,\n", + " 5.4459, 4.0609, 2.5597]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.0871, -0.1173, -0.0199, -0.0805, -0.0441, -0.0048, 0.0699, 0.1521,\n", + " 0.1005, 0.1372, 0.1376, -0.0667, -0.0649, -0.1075, -0.1034, -0.1550,\n", + " -0.1306, -0.0298, -0.0084, -0.0782, -0.0235, 0.0351, -0.0595, -0.0077,\n", + " -0.0369, 0.0662, -0.0425, -0.0311, -0.0567, -0.0730, -0.1338, -0.0999,\n", + " -0.0949, -0.1594, -0.0895, -0.1092, -0.0155, -0.0042, 0.0067, 0.1998,\n", + " 0.2744, 0.2402, 0.1526]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000727312988601625\n", + "Grad encoder.fc1.bias: 0.000464464130345732\n", + "Grad encoder.encoder.0.weight: 0.0002756198518909514\n", + "Grad encoder.encoder.0.bias: 0.0009856591932475567\n", + "Grad encoder.encoder.2.weight: 0.000180471470230259\n", + "Grad encoder.encoder.2.bias: 0.0009578919853083789\n", + "Grad encoder.encoder.4.weight: 0.00037689803866669536\n", + "Grad encoder.encoder.4.bias: 0.0027744797989726067\n", + "Grad decoder.fc1.0.weight: 0.00011289658868918195\n", + "Grad decoder.fc1.0.bias: 0.001017905306071043\n", + "Grad decoder.fc1.2.weight: 8.52832745295018e-05\n", + "Grad decoder.fc1.2.bias: 0.0010301157599315047\n", + "Grad decoder.fc1.4.weight: 6.150796252768487e-05\n", + "Grad decoder.fc1.4.bias: 0.001027349499054253\n", + "Grad decoder.fc2.weight: 0.00014379668573383242\n", + "Grad decoder.fc2.bias: 0.0021188370883464813\n", + "Grad _memory_unit.weight_ih_l0: 1.718399471428711e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.080996147124097e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.742692933883518e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.697932910057716e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001918635971378535\n", + "Grad _memory_unit.bias_hh_l1: 9.746045543579385e-05\n", + "Data X Sample: tensor([[1.7939, 1.9605, 2.3952, 2.5583, 2.6295, 2.8242, 2.9257, 2.9415, 3.0049,\n", + " 2.8577, 2.9249, 2.8648, 2.7275, 2.5247, 2.5017, 2.4862, 2.4608, 2.5398,\n", + " 2.4470, 2.4790, 2.3775, 2.3239, 2.2218, 2.1034, 2.0476, 2.0242, 1.9180,\n", + " 1.9659, 1.5923, 1.5884, 1.4873, 1.3319, 1.3530, 0.9566, 1.5197, 1.6977,\n", + " 1.8741, 2.2978, 2.5861, 2.5506, 1.3888, 0.8603, 0.9034, 1.5557, 2.2992,\n", + " 2.6018, 1.6181, 2.4083]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.7777, -1.1631, -1.3388, -1.1823, -0.3795, 0.1059, -0.8294, 0.4753,\n", + " 0.4462, 0.9893, 0.9049, -0.0377, -0.9579, -0.6470, -1.2414, -1.0977,\n", + " -1.7139, -0.0462, 0.6734, -0.7506, 0.4215, 0.0247, -0.0655, 0.1645,\n", + " 1.2673, -0.0927, -0.0788, 0.1874, 0.8965, -0.7945, -0.4955, -0.2059,\n", + " -0.3513, -1.3283, -0.5578, -0.7217, -0.4931, 0.2066, 0.9761, 1.7951,\n", + " 1.4111, 0.7014, 1.8256]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1501, -0.1924, -0.0404, -0.1291, -0.0629, -0.0070, 0.1352, 0.2346,\n", + " 0.1485, 0.1874, 0.2223, -0.1202, -0.1067, -0.1801, -0.1418, -0.2409,\n", + " -0.1641, -0.0673, -0.0338, -0.0888, -0.0504, 0.0338, -0.0763, -0.0166,\n", + " -0.0399, 0.0873, -0.0433, -0.0644, -0.1044, -0.1301, -0.2076, -0.1574,\n", + " -0.1515, -0.2504, -0.1383, -0.1489, -0.0286, -0.0231, 0.0269, 0.2955,\n", + " 0.3716, 0.3327, 0.2249]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 7.775046105962247e-05\n", + "Grad encoder.fc1.bias: 0.00026591395726427436\n", + "Grad encoder.encoder.0.weight: 2.8434697014745325e-05\n", + "Grad encoder.encoder.0.bias: 0.0002342657680856064\n", + "Grad encoder.encoder.2.weight: 2.7022126232623123e-05\n", + "Grad encoder.encoder.2.bias: 0.00020887611026410013\n", + "Grad encoder.encoder.4.weight: 9.35925345402211e-05\n", + "Grad encoder.encoder.4.bias: 0.00041897789924405515\n", + "Grad decoder.fc1.0.weight: 4.206008816254325e-05\n", + "Grad decoder.fc1.0.bias: 0.0002639659505803138\n", + "Grad decoder.fc1.2.weight: 5.202583270147443e-05\n", + "Grad decoder.fc1.2.bias: 0.00038570750621147454\n", + "Grad decoder.fc1.4.weight: 5.158733983989805e-05\n", + "Grad decoder.fc1.4.bias: 0.0005680726608261466\n", + "Grad decoder.fc2.weight: 0.00013075268361717463\n", + "Grad decoder.fc2.bias: 0.001485493965446949\n", + "Grad _memory_unit.weight_ih_l0: 1.2595453881658614e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.9077438992098905e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.138697552960366e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.414049726619851e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.451788845472038e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.4072358428384177e-05\n", + "Data X Sample: tensor([[1.6517, 1.8425, 2.0586, 2.1363, 2.3341, 2.5222, 2.5883, 2.6405, 2.6827,\n", + " 2.6950, 2.7377, 2.7752, 2.7430, 2.6092, 2.4992, 2.5669, 2.4828, 2.5495,\n", + " 2.4863, 2.5050, 2.5002, 2.5260, 2.5134, 2.4584, 2.5619, 2.5440, 2.5228,\n", + " 2.5491, 2.2341, 2.2991, 2.2607, 2.3405, 2.1032, 1.3571, 1.8580, 1.7172,\n", + " 1.6558, 1.5822, 1.6670, 1.4526, 1.2457, 0.7548, 0.7983, 1.2084, 1.9187,\n", + " 2.1615, 1.4074, 2.1972]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6818, 0.3329, 0.6778, 0.0106, -1.4884, 0.2807, 0.0540, -1.0523,\n", + " 0.0477, 0.0750, 0.1402, 0.6906, -0.7938, -0.4712, -0.1443, 0.0129,\n", + " 0.4230, 0.0046, -0.2513, 0.1654, -0.1730, 0.2246, -0.7074, 0.6733,\n", + " 0.2607, -0.1590, -0.4640, 0.8120, -0.2105, -0.2885, -0.9926, -0.8921,\n", + " 0.7672, 0.2075, 0.7313, -0.2940, -0.6417, -0.0557, 0.7285, -0.6801,\n", + " -0.0947, 1.2121, 1.4463]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2635, 0.2826, 0.1076, 0.1494, 0.0550, -0.1297, -0.3096, -0.2712,\n", + " -0.0994, -0.1705, -0.1771, 0.1266, 0.1080, 0.2100, 0.1040, 0.1894,\n", + " 0.1356, 0.1659, 0.0934, 0.0600, 0.0667, 0.0695, 0.0117, 0.0166,\n", + " 0.0461, 0.1202, -0.0756, 0.0131, 0.1334, 0.1772, 0.1620, 0.1410,\n", + " 0.1774, 0.2108, 0.1065, 0.0785, 0.0068, 0.0385, -0.0163, -0.1842,\n", + " -0.1218, -0.1751, -0.2279]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00031300654518418014\n", + "Grad encoder.fc1.bias: 0.0001452131400583312\n", + "Grad encoder.encoder.0.weight: 0.00014100343105383217\n", + "Grad encoder.encoder.0.bias: 0.0003342467243783176\n", + "Grad encoder.encoder.2.weight: 0.00010624317656038329\n", + "Grad encoder.encoder.2.bias: 0.00035267695784568787\n", + "Grad encoder.encoder.4.weight: 0.0002516511594876647\n", + "Grad encoder.encoder.4.bias: 0.0012316943611949682\n", + "Grad decoder.fc1.0.weight: 8.65905312821269e-05\n", + "Grad decoder.fc1.0.bias: 0.0005120416753925383\n", + "Grad decoder.fc1.2.weight: 7.186014408944175e-05\n", + "Grad decoder.fc1.2.bias: 0.00059788569342345\n", + "Grad decoder.fc1.4.weight: 6.95836206432432e-05\n", + "Grad decoder.fc1.4.bias: 0.0007268163026310503\n", + "Grad decoder.fc2.weight: 0.0001261736761080101\n", + "Grad decoder.fc2.bias: 0.00169489742256701\n", + "Grad _memory_unit.weight_ih_l0: 1.6830321328598075e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.4579036107752472e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.4018973161000758e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.64087053539697e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010773236135719344\n", + "Grad _memory_unit.bias_hh_l1: 5.510495975613594e-05\n", + "Data X Sample: tensor([[1.4427, 1.9080, 2.1758, 2.3855, 2.3819, 2.5517, 2.6623, 2.6788, 2.7949,\n", + " 2.8561, 2.8297, 2.8200, 2.7319, 2.7455, 2.5849, 2.6558, 2.6526, 2.6752,\n", + " 2.8105, 2.7989, 2.6572, 2.7939, 2.7520, 2.5099, 2.4699, 2.4186, 2.3230,\n", + " 2.2922, 1.9185, 1.9160, 1.7918, 1.7492, 1.4630, 0.9589, 1.3923, 1.3548,\n", + " 1.4021, 1.5212, 1.7304, 1.7221, 1.2695, 0.8006, 0.8225, 1.4869, 1.9781,\n", + " 2.3788, 1.5366, 2.1581]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.8667e-02, -3.8061e-01, 2.8044e-01, 4.2037e-01, 4.2388e-01,\n", + " 2.7621e-03, -1.3127e-01, 1.7041e-01, -2.9774e-01, 2.1914e-01,\n", + " 2.6060e-02, 2.8293e-01, 2.5490e-03, 1.3965e-02, -6.9421e-01,\n", + " -5.1206e-01, -7.9540e-01, -1.3279e-01, -5.2271e-01, -2.2924e-01,\n", + " -1.0934e+00, -3.7590e-01, 4.9134e-01, 1.0052e+00, 4.8985e-01,\n", + " 3.9167e+00, 2.8866e-01, -3.7680e-01, -4.7691e-01, -3.1433e-01,\n", + " -4.5247e-03, 1.2281e+00, -5.5430e-01, -3.9882e-02, 3.0996e-02,\n", + " -5.1453e-01, -5.0367e-01, 8.2377e-01, 1.7270e-02, -2.5556e-01,\n", + " -6.7434e-02, 5.3443e-01, -2.5309e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.0323, 0.0128, 0.0301, -0.0098, -0.0194, -0.0367, -0.0534, 0.0385,\n", + " 0.0210, 0.0367, 0.0520, -0.0179, -0.0140, 0.0023, -0.0515, -0.0400,\n", + " -0.0527, 0.0554, 0.0184, -0.0224, 0.0314, 0.0594, -0.0545, 0.0114,\n", + " 0.0020, 0.1031, -0.0461, 0.0101, -0.0070, -0.0037, -0.0308, -0.0188,\n", + " 0.0012, -0.0290, -0.0253, -0.0485, -0.0260, 0.0327, 0.0163, 0.0670,\n", + " 0.1528, 0.1236, 0.0162]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002639894955791533\n", + "Grad encoder.fc1.bias: 0.0005019939853809774\n", + "Grad encoder.encoder.0.weight: 0.00011254019045736641\n", + "Grad encoder.encoder.0.bias: 0.000443137192633003\n", + "Grad encoder.encoder.2.weight: 0.00010206619481323287\n", + "Grad encoder.encoder.2.bias: 0.0003743131528608501\n", + "Grad encoder.encoder.4.weight: 0.0003474197001196444\n", + "Grad encoder.encoder.4.bias: 0.0011893217451870441\n", + "Grad decoder.fc1.0.weight: 0.00012716332275886089\n", + "Grad decoder.fc1.0.bias: 0.0005578704876825213\n", + "Grad decoder.fc1.2.weight: 0.00016712058277335018\n", + "Grad decoder.fc1.2.bias: 0.0010332934325560927\n", + "Grad decoder.fc1.4.weight: 0.00013961418881081045\n", + "Grad decoder.fc1.4.bias: 0.0011510609183460474\n", + "Grad decoder.fc2.weight: 0.0001931996230268851\n", + "Grad decoder.fc2.bias: 0.002355335047468543\n", + "Grad _memory_unit.weight_ih_l0: 3.576041490305215e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.6915953387506306e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.1836847736267373e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0168468179472256e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011137605179101229\n", + "Grad _memory_unit.bias_hh_l1: 5.750948184868321e-05\n", + "Data X Sample: tensor([[1.5393, 1.7871, 1.7716, 1.9263, 2.0404, 2.0537, 2.1739, 2.1351, 2.2701,\n", + " 2.2811, 2.3285, 2.3565, 2.2614, 2.2711, 2.1613, 2.1730, 2.1101, 2.2748,\n", + " 2.2612, 2.2781, 2.2745, 2.3255, 2.3568, 2.4183, 2.4211, 2.5440, 2.3869,\n", + " 2.4839, 2.1717, 2.3155, 2.4952, 2.3350, 2.3166, 1.5424, 1.9879, 1.8461,\n", + " 1.6951, 1.5504, 1.5656, 1.5377, 1.1788, 0.7109, 0.6407, 1.2142, 1.7522,\n", + " 1.9385, 1.2714, 1.7359]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.0967, -0.2987, -0.2944, 0.0204, 0.5779, 0.0582, -0.1871, -0.3666,\n", + " -1.0765, -0.1817, -0.3582, 0.1120, 0.9661, 0.3923, 0.5268, 0.1601,\n", + " 1.2704, 0.0308, 0.7210, -0.5250, -1.0147, -0.0942, -0.6728, -0.2178,\n", + " -0.4838, -0.0568, 0.9112, -0.3637, 0.2102, 0.5718, 1.5093, -0.3004,\n", + " -0.1550, 0.3812, 0.9094, 0.0561, -0.0317, 0.0761, -1.6134, -0.3790,\n", + " -0.3726, -0.2370, -0.2526]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3695, 0.3949, 0.1319, 0.2204, 0.1031, -0.1754, -0.4216, -0.3999,\n", + " -0.1496, -0.2502, -0.2653, 0.1879, 0.1547, 0.3089, 0.1861, 0.2869,\n", + " 0.2423, 0.2114, 0.1215, 0.1137, 0.0786, 0.0885, 0.0506, 0.0258,\n", + " 0.0704, 0.1410, -0.0891, 0.0114, 0.1909, 0.2452, 0.2375, 0.1895,\n", + " 0.2666, 0.3010, 0.1526, 0.1489, 0.0074, 0.0216, -0.0206, -0.2922,\n", + " -0.2359, -0.2906, -0.3293]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00026648264611139894\n", + "Grad encoder.fc1.bias: 0.000879842322319746\n", + "Grad encoder.encoder.0.weight: 0.00010121391096618026\n", + "Grad encoder.encoder.0.bias: 0.0008320816559717059\n", + "Grad encoder.encoder.2.weight: 7.732147059869021e-05\n", + "Grad encoder.encoder.2.bias: 0.0005837532225996256\n", + "Grad encoder.encoder.4.weight: 0.0002134256501449272\n", + "Grad encoder.encoder.4.bias: 0.0006647780537605286\n", + "Grad decoder.fc1.0.weight: 8.438648364972323e-05\n", + "Grad decoder.fc1.0.bias: 0.0004103284445591271\n", + "Grad decoder.fc1.2.weight: 0.00010419212048873305\n", + "Grad decoder.fc1.2.bias: 0.0006050796946510673\n", + "Grad decoder.fc1.4.weight: 8.118200639728457e-05\n", + "Grad decoder.fc1.4.bias: 0.0005444714915938675\n", + "Grad decoder.fc2.weight: 0.00015726996934972703\n", + "Grad decoder.fc2.bias: 0.001805851235985756\n", + "Grad _memory_unit.weight_ih_l0: 2.0734734789584763e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.3131418856792152e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.4091236153035425e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.055456990201492e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.534874021075666e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.9812126487959176e-05\n", + "Data X Sample: tensor([[1.5202, 1.7507, 1.9399, 2.0335, 2.1821, 2.3499, 2.3064, 2.3622, 2.3824,\n", + " 2.4407, 2.4332, 2.5259, 2.3924, 2.2930, 2.3328, 2.4397, 2.3491, 2.4122,\n", + " 2.4409, 2.4902, 2.4266, 2.5138, 2.5279, 2.5596, 2.5525, 2.6432, 2.5867,\n", + " 2.5858, 2.2654, 2.2828, 2.3167, 2.2991, 2.1758, 1.4257, 1.8580, 1.6636,\n", + " 1.5987, 1.4709, 1.5149, 1.5888, 1.2122, 0.7567, 0.6770, 1.2773, 1.8592,\n", + " 1.9957, 1.2850, 2.0174]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 4.5143e-01, 1.0223e+00, 1.9290e+00, 1.4110e+00, 3.9135e-03,\n", + " -1.2249e-01, -3.2815e-01, -7.0081e-01, -6.2550e-01, -6.3828e-01,\n", + " -7.2899e-01, -4.5924e-01, 8.4794e-01, 5.8588e-01, -1.7425e-01,\n", + " 1.1772e+00, -1.1985e-01, 2.8797e-01, -7.3217e-01, -1.9982e-01,\n", + " 6.7323e-02, -1.2099e+00, -6.3095e+00, 7.4935e-01, 4.5074e-01,\n", + " 7.5494e-01, -1.6591e+00, -1.4137e+00, -2.8766e-01, -1.2960e+00,\n", + " -1.3604e-01, 1.9614e-01, -4.2209e-01, 1.7680e-01, -2.1979e+00,\n", + " 9.0625e-02, -3.4673e-01, 0.0000e+00, 3.8169e-02, -4.7250e-01,\n", + " -4.3897e-01, -5.6794e-01, -5.9011e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4128, 0.4373, 0.1381, 0.2462, 0.1237, -0.1911, -0.4662, -0.4477,\n", + " -0.1695, -0.2855, -0.2941, 0.2106, 0.1746, 0.3481, 0.2212, 0.3294,\n", + " 0.2932, 0.2318, 0.1290, 0.1347, 0.0830, 0.1016, 0.0722, 0.0330,\n", + " 0.0803, 0.1512, -0.0990, 0.0038, 0.2129, 0.2729, 0.2614, 0.2054,\n", + " 0.3076, 0.3314, 0.1722, 0.1747, -0.0005, 0.0104, -0.0160, -0.3343,\n", + " -0.2842, -0.3309, -0.3700]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00013881016639061272\n", + "Grad encoder.fc1.bias: 0.0003650807775557041\n", + "Grad encoder.encoder.0.weight: 4.894323501503095e-05\n", + "Grad encoder.encoder.0.bias: 0.00028847192879766226\n", + "Grad encoder.encoder.2.weight: 4.47482307208702e-05\n", + "Grad encoder.encoder.2.bias: 0.00022441762848757207\n", + "Grad encoder.encoder.4.weight: 0.00013270482304506004\n", + "Grad encoder.encoder.4.bias: 0.0006103509804233909\n", + "Grad decoder.fc1.0.weight: 5.31069454154931e-05\n", + "Grad decoder.fc1.0.bias: 0.00030981292366050184\n", + "Grad decoder.fc1.2.weight: 7.250357884913683e-05\n", + "Grad decoder.fc1.2.bias: 0.0006112637929618359\n", + "Grad decoder.fc1.4.weight: 7.274436939042062e-05\n", + "Grad decoder.fc1.4.bias: 0.0007301353616639972\n", + "Grad decoder.fc2.weight: 0.00017071857291739434\n", + "Grad decoder.fc2.bias: 0.0023368322290480137\n", + "Grad _memory_unit.weight_ih_l0: 9.762665285961702e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.13086093228776e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.656924723647535e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.871319106314331e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.842259608674794e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.578697214834392e-05\n", + "Data X Sample: tensor([[1.4682, 1.7391, 1.8392, 1.9810, 2.2163, 2.3322, 2.4604, 2.4148, 2.5606,\n", + " 2.5923, 2.6425, 2.7090, 2.5255, 2.5356, 2.4967, 2.4069, 2.3617, 2.5302,\n", + " 2.5400, 2.5645, 2.4389, 2.4724, 2.3279, 2.3000, 2.3197, 2.3272, 2.3656,\n", + " 2.3697, 2.1752, 2.2173, 2.2607, 2.2411, 2.2110, 1.3823, 1.9487, 1.7609,\n", + " 1.6695, 1.5159, 1.6543, 1.5803, 1.1550, 0.6811, 0.7154, 1.2199, 1.7641,\n", + " 1.9385, 1.2918, 1.9235]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5607, -0.3171, 0.6329, -0.7736, 0.9486, 3.1551, -0.8965, -0.6263,\n", + " 0.6127, 0.6668, 0.8863, -0.0562, -1.4392, 3.1046, -0.8435, -0.5084,\n", + " -0.1064, -0.0053, 0.5743, 0.3984, -0.4950, -1.0313, 0.1826, -0.5241,\n", + " -0.1100, 0.2475, 0.6909, 0.9155, 1.3029, -0.2736, 0.8727, 0.0393,\n", + " 1.1280, -1.5607, -0.3364, -1.1910, -0.8131, 0.0000, -0.9499, 0.5548,\n", + " -0.0512, 0.4523, 1.0570]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3815, 0.3980, 0.1317, 0.2221, 0.1109, -0.1692, -0.4300, -0.4103,\n", + " -0.1600, -0.2642, -0.2744, 0.1896, 0.1585, 0.3214, 0.2031, 0.3046,\n", + " 0.2667, 0.2137, 0.1176, 0.1246, 0.0767, 0.0939, 0.0676, 0.0326,\n", + " 0.0726, 0.1342, -0.0947, -0.0053, 0.1978, 0.2484, 0.2345, 0.1903,\n", + " 0.2806, 0.2971, 0.1583, 0.1614, -0.0063, 0.0097, -0.0140, -0.3093,\n", + " -0.2617, -0.3045, -0.3371]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 8.750567212700844e-05\n", + "Grad encoder.fc1.bias: 0.0010802147444337606\n", + "Grad encoder.encoder.0.weight: 4.018356412416324e-05\n", + "Grad encoder.encoder.0.bias: 0.0007631320040673018\n", + "Grad encoder.encoder.2.weight: 3.9391310565406457e-05\n", + "Grad encoder.encoder.2.bias: 0.0005550182540901005\n", + "Grad encoder.encoder.4.weight: 0.00013920586206950247\n", + "Grad encoder.encoder.4.bias: 0.0010020118206739426\n", + "Grad decoder.fc1.0.weight: 6.292915350059047e-05\n", + "Grad decoder.fc1.0.bias: 0.0004078064812347293\n", + "Grad decoder.fc1.2.weight: 8.034284837776795e-05\n", + "Grad decoder.fc1.2.bias: 0.0005410808953456581\n", + "Grad decoder.fc1.4.weight: 7.560729864053428e-05\n", + "Grad decoder.fc1.4.bias: 0.0006003056769259274\n", + "Grad decoder.fc2.weight: 0.0001539570657769218\n", + "Grad decoder.fc2.bias: 0.0018160772742703557\n", + "Grad _memory_unit.weight_ih_l0: 1.8528411601437256e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.867281626909971e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.6336710763862357e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.9620865613396745e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011139112029923126\n", + "Grad _memory_unit.bias_hh_l1: 5.8409535995451733e-05\n", + "Data X Sample: tensor([[1.6411, 1.8148, 2.0661, 2.0641, 2.1770, 2.2320, 2.2648, 2.3424, 2.3751,\n", + " 2.4201, 2.3792, 2.4363, 2.4678, 2.3475, 2.2848, 2.3577, 2.3130, 2.3348,\n", + " 2.4636, 2.4957, 2.5395, 2.4770, 2.5182, 2.5214, 2.5787, 2.6276, 2.5467,\n", + " 2.5246, 2.4145, 2.5055, 2.5162, 2.5340, 2.2792, 1.4898, 1.9683, 1.9142,\n", + " 1.7364, 1.5928, 1.5466, 1.4668, 1.3077, 0.7946, 0.7599, 1.3778, 1.9940,\n", + " 2.0643, 1.3666, 2.0486]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.1049, 0.0979, -0.4898, 1.4146, 2.1566, 1.5330, 0.2140, -0.2461,\n", + " 0.2076, -0.3434, -0.3039, 1.2502, -0.7006, 0.4426, 0.9649, 0.7697,\n", + " -0.4924, -1.1908, -1.8606, -1.6769, -1.0020, -1.6686, -2.0299, -0.9517,\n", + " -1.2261, -0.5351, -0.7728, -0.8504, -0.3082, -0.5908, 0.5552, 1.0555,\n", + " -0.2681, -1.1597, 0.0396, 0.6668, -0.2060, 0.0000, 1.1148, -0.4913,\n", + " -0.3317, -0.5096, -0.5482]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4626, 0.4822, 0.1474, 0.2744, 0.1537, -0.1920, -0.5035, -0.4860,\n", + " -0.1908, -0.3308, -0.3242, 0.2339, 0.1946, 0.3898, 0.2632, 0.3732,\n", + " 0.3478, 0.2515, 0.1370, 0.1576, 0.0977, 0.1215, 0.0992, 0.0438,\n", + " 0.0921, 0.1590, -0.1242, -0.0253, 0.2264, 0.3016, 0.2799, 0.2218,\n", + " 0.3567, 0.3563, 0.1907, 0.2092, -0.0237, -0.0047, 0.0026, -0.3846,\n", + " -0.3410, -0.3853, -0.4142]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001502223894931376\n", + "Grad encoder.fc1.bias: 0.0004500873328652233\n", + "Grad encoder.encoder.0.weight: 6.827512697782367e-05\n", + "Grad encoder.encoder.0.bias: 0.0003822381841018796\n", + "Grad encoder.encoder.2.weight: 5.126883843331598e-05\n", + "Grad encoder.encoder.2.bias: 0.00028553028823807836\n", + "Grad encoder.encoder.4.weight: 0.00012674074969254434\n", + "Grad encoder.encoder.4.bias: 0.00026435416657477617\n", + "Grad decoder.fc1.0.weight: 4.523036113823764e-05\n", + "Grad decoder.fc1.0.bias: 0.00020074559142813087\n", + "Grad decoder.fc1.2.weight: 4.567601718008518e-05\n", + "Grad decoder.fc1.2.bias: 0.00033149446244351566\n", + "Grad decoder.fc1.4.weight: 5.5666721891611814e-05\n", + "Grad decoder.fc1.4.bias: 0.0005617761635221541\n", + "Grad decoder.fc2.weight: 0.00012549562961794436\n", + "Grad decoder.fc2.bias: 0.0013393474509939551\n", + "Grad _memory_unit.weight_ih_l0: 1.2814522051485255e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.313186567131197e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.151537258527242e-06\n", + "Grad _memory_unit.weight_ih_l1: 4.321345386415487e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.490276139928028e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.910976061481051e-05\n", + "Data X Sample: tensor([[2.5630, 3.0834, 3.2847, 2.8972, 3.0068, 3.3031, 3.7330, 3.8415, 4.0569,\n", + " 4.0030, 4.1050, 4.0411, 3.8948, 3.7816, 3.5962, 3.5310, 3.4734, 3.3774,\n", + " 3.3763, 3.4237, 3.3443, 3.1904, 2.9640, 2.8230, 2.6688, 2.7373, 2.6373,\n", + " 2.7408, 2.6088, 2.8166, 2.7331, 2.8766, 3.0999, 2.2496, 3.7331, 4.1080,\n", + " 4.3990, 4.8367, 5.4764, 5.2657, 2.0522, 1.2148, 1.1398, 1.9031, 2.8225,\n", + " 2.8191, 1.8425, 2.4943]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3776, 0.1691, -2.0564, 0.0889, 0.4918, 0.6419, 0.2074, -0.0061,\n", + " -0.1039, -0.0329, -0.3449, 0.5696, 0.3260, -0.0241, 1.1580, -0.3313,\n", + " 0.6535, 0.3581, -0.9727, 0.3980, 0.1806, 0.0903, -0.8410, 0.6147,\n", + " -0.2744, -0.8214, -0.6801, -0.3142, -0.7897, -0.7006, -0.2440, -1.5156,\n", + " -0.1599, -0.7074, -0.4234, -2.5204, 1.0359, 0.8631, -0.2890, 0.0358,\n", + " -0.1587, 0.1757, 0.9177]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1316, -0.1641, -0.0027, -0.1516, -0.0447, -0.0238, 0.0958, 0.1470,\n", + " 0.1205, 0.1054, 0.1433, -0.1094, -0.1159, -0.1768, -0.0906, -0.1873,\n", + " -0.1359, -0.0490, -0.0266, -0.0335, -0.0639, 0.0042, -0.0717, -0.0341,\n", + " 0.0173, 0.0453, -0.0032, -0.0613, -0.0983, -0.1685, -0.1882, -0.1249,\n", + " -0.1779, -0.1953, -0.1058, -0.0944, -0.0451, -0.0159, 0.0514, 0.1810,\n", + " 0.2772, 0.2470, 0.1858]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001558023359393701\n", + "Grad encoder.fc1.bias: 0.0005297204479575157\n", + "Grad encoder.encoder.0.weight: 6.086740177124739e-05\n", + "Grad encoder.encoder.0.bias: 0.00046990683767944574\n", + "Grad encoder.encoder.2.weight: 4.338693543104455e-05\n", + "Grad encoder.encoder.2.bias: 0.0004004946385975927\n", + "Grad encoder.encoder.4.weight: 9.944461635313928e-05\n", + "Grad encoder.encoder.4.bias: 0.0006740632234141231\n", + "Grad decoder.fc1.0.weight: 4.8370806325692683e-05\n", + "Grad decoder.fc1.0.bias: 0.0003246586420573294\n", + "Grad decoder.fc1.2.weight: 5.567562038777396e-05\n", + "Grad decoder.fc1.2.bias: 0.000569293275475502\n", + "Grad decoder.fc1.4.weight: 6.249254511203617e-05\n", + "Grad decoder.fc1.4.bias: 0.0007013817667029798\n", + "Grad decoder.fc2.weight: 0.0001388582168146968\n", + "Grad decoder.fc2.bias: 0.0024605689104646444\n", + "Grad _memory_unit.weight_ih_l0: 9.786092959984671e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.500519596855156e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.903256452351343e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.69049973617075e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.484457455575466e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.850993380183354e-05\n", + "Data X Sample: tensor([[1.5202, 1.7056, 1.8888, 2.0051, 2.1804, 2.2850, 2.2894, 2.5127, 2.4801,\n", + " 2.5765, 2.5664, 2.5921, 2.5610, 2.4538, 2.4311, 2.4493, 2.3932, 2.3251,\n", + " 2.4016, 2.3637, 2.4315, 2.4035, 2.4580, 2.4756, 2.5712, 2.6119, 2.5547,\n", + " 2.6021, 2.1023, 2.2893, 2.3587, 2.3322, 2.2506, 1.4578, 2.0075, 1.7682,\n", + " 1.6479, 1.4894, 1.6163, 1.6455, 1.2122, 0.6791, 0.7134, 1.1941, 2.0217,\n", + " 2.0128, 1.3122, 1.9939]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 9.0575e-01, -7.9295e-01, 6.3290e-01, -1.6313e+00, 4.2454e+00,\n", + " 5.3369e-02, 1.0892e+00, -6.0441e-01, 5.5825e-01, 7.7640e-01,\n", + " 8.6821e-01, 9.5394e-01, 9.5899e-01, 1.4199e-02, -3.7172e-02,\n", + " -1.0822e+00, -3.6219e-01, 1.5100e+00, 2.3905e+00, 1.4386e+00,\n", + " 2.7725e+00, 2.1719e+00, 1.3801e+00, 1.7687e+00, 1.6862e+00,\n", + " 1.0380e+00, -3.3651e-01, 1.5971e-01, 6.8160e-01, -4.4629e-01,\n", + " -1.6242e-02, -6.6797e-01, 6.0500e-01, -1.4381e-04, -6.1535e-01,\n", + " -6.3867e-01, 6.0965e-01, 8.2744e-01, -9.1288e-01, 1.0896e+00,\n", + " -1.1376e-01, -1.3533e+00, 2.1938e-02]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4272, 0.4379, 0.1336, 0.2572, 0.1424, -0.1766, -0.4554, -0.4433,\n", + " -0.1702, -0.3005, -0.2956, 0.2159, 0.1751, 0.3578, 0.2571, 0.3523,\n", + " 0.3189, 0.2209, 0.1232, 0.1374, 0.0830, 0.1071, 0.0954, 0.0401,\n", + " 0.0820, 0.1396, -0.1243, -0.0336, 0.2054, 0.2571, 0.2518, 0.2001,\n", + " 0.3366, 0.3140, 0.1799, 0.1926, -0.0383, -0.0121, 0.0072, -0.3504,\n", + " -0.3185, -0.3527, -0.3741]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 3.2476644264534116e-05\n", + "Grad encoder.fc1.bias: 0.0002606597845442593\n", + "Grad encoder.encoder.0.weight: 1.4077237210585736e-05\n", + "Grad encoder.encoder.0.bias: 0.0003516697324812412\n", + "Grad encoder.encoder.2.weight: 1.760218947310932e-05\n", + "Grad encoder.encoder.2.bias: 0.0003971932455897331\n", + "Grad encoder.encoder.4.weight: 4.999685552320443e-05\n", + "Grad encoder.encoder.4.bias: 0.0013147176941856742\n", + "Grad decoder.fc1.0.weight: 3.332003325340338e-05\n", + "Grad decoder.fc1.0.bias: 0.0004437565803527832\n", + "Grad decoder.fc1.2.weight: 3.350291808601469e-05\n", + "Grad decoder.fc1.2.bias: 0.0003688262077048421\n", + "Grad decoder.fc1.4.weight: 3.643650052254088e-05\n", + "Grad decoder.fc1.4.bias: 0.0004392624250613153\n", + "Grad decoder.fc2.weight: 9.957930160453543e-05\n", + "Grad decoder.fc2.bias: 0.0013597329379990697\n", + "Grad _memory_unit.weight_ih_l0: 3.9276733332371805e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.1975774113088846e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.7350877644494176e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.3484946015960304e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.625667007640004e-05\n", + "Grad _memory_unit.bias_hh_l1: 5.0212969654239714e-05\n", + "Data X Sample: tensor([[1.6507, 1.8716, 2.1683, 2.1559, 2.2777, 2.5871, 2.5945, 2.6689, 2.7437,\n", + " 2.7045, 2.8170, 2.7869, 2.6542, 2.6092, 2.6329, 2.6531, 2.5189, 2.5553,\n", + " 2.6659, 2.5645, 2.5959, 2.6255, 2.6002, 2.6493, 2.5506, 2.6667, 2.7679,\n", + " 2.7163, 2.5256, 2.5317, 2.4847, 2.4262, 2.2660, 1.4944, 2.0075, 1.8801,\n", + " 1.7659, 1.6485, 1.6670, 1.6143, 1.2600, 0.7906, 0.7841, 1.4151, 1.9306,\n", + " 2.1272, 1.4074, 1.9939]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1445, -0.0778, 0.2049, 0.4700, -0.3836, -0.1730, -0.1843, -1.1485,\n", + " 0.1936, 0.1143, 0.3114, 1.1332, 0.5873, 0.7346, 0.3825, -0.6303,\n", + " 1.0220, -0.7215, -1.2324, -0.7514, -0.9770, -1.0993, -0.8555, -0.7075,\n", + " -0.6714, -0.9164, 1.1983, 0.0239, -0.6060, 0.4980, 0.7949, -0.1001,\n", + " -0.9302, 1.8612, -0.2669, -0.2837, -0.4229, -0.4031, 0.2870, 1.0074,\n", + " -0.2248, 0.1693, 0.8493]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4178, 0.4265, 0.1327, 0.2476, 0.1372, -0.1745, -0.4434, -0.4300,\n", + " -0.1666, -0.2944, -0.2916, 0.2091, 0.1755, 0.3532, 0.2622, 0.3460,\n", + " 0.3091, 0.2078, 0.1181, 0.1335, 0.0756, 0.1044, 0.0921, 0.0393,\n", + " 0.0816, 0.1331, -0.1192, -0.0344, 0.2053, 0.2478, 0.2437, 0.1930,\n", + " 0.3299, 0.3002, 0.1735, 0.1843, -0.0389, -0.0110, 0.0068, -0.3379,\n", + " -0.3105, -0.3469, -0.3650]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00013861339539289474\n", + "Grad encoder.fc1.bias: 0.0007381124305538833\n", + "Grad encoder.encoder.0.weight: 5.769758718088269e-05\n", + "Grad encoder.encoder.0.bias: 0.00040071713738143444\n", + "Grad encoder.encoder.2.weight: 4.4769723899662495e-05\n", + "Grad encoder.encoder.2.bias: 0.0004224329604767263\n", + "Grad encoder.encoder.4.weight: 0.000118507698061876\n", + "Grad encoder.encoder.4.bias: 0.0008979098638519645\n", + "Grad decoder.fc1.0.weight: 5.633436012431048e-05\n", + "Grad decoder.fc1.0.bias: 0.0004036366590298712\n", + "Grad decoder.fc1.2.weight: 6.50398142170161e-05\n", + "Grad decoder.fc1.2.bias: 0.000452846463304013\n", + "Grad decoder.fc1.4.weight: 7.052467117318884e-05\n", + "Grad decoder.fc1.4.bias: 0.000620034639723599\n", + "Grad decoder.fc2.weight: 0.0001848852843977511\n", + "Grad decoder.fc2.bias: 0.0023083628620952368\n", + "Grad _memory_unit.weight_ih_l0: 1.4795569768466521e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.7399006285122596e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.4941033441573381e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.404379407991655e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.642581476829946e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.939969974453561e-05\n", + "Data X Sample: tensor([[1.5382, 1.6750, 1.8347, 2.0072, 2.0831, 2.1819, 2.1538, 2.1933, 3.5419,\n", + " 4.4801, 4.4063, 4.3994, 4.0679, 3.9016, 3.9291, 3.6992, 3.6369, 3.7004,\n", + " 3.6324, 3.5502, 3.3982, 3.2226, 2.8821, 2.8153, 2.8528, 2.9697, 3.0529,\n", + " 3.0916, 3.1257, 3.2031, 3.1881, 3.3713, 3.9447, 2.8904, 4.5886, 4.8693,\n", + " 5.1187, 5.5072, 6.0025, 5.9211, 1.1645, 0.6552, 0.6427, 1.1769, 1.7878,\n", + " 2.0128, 1.3326, 1.9313]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3991, -0.1735, 0.9027, 0.8725, 0.4435, 0.7583, 0.2797, -0.0349,\n", + " -0.9268, 0.2755, -0.3343, -0.2068, 0.2893, -0.4104, 0.0023, -0.0629,\n", + " 0.1768, 0.9654, 0.5499, 0.8126, 1.8416, 0.0253, 0.7531, 0.1573,\n", + " -0.7668, -0.2718, -0.7537, -0.8480, 0.0848, 0.5652, 0.7066, -0.3953,\n", + " -0.2967, 1.0187, -0.5118, -0.8057, 0.2424, -0.6456, -0.1405, 0.4110,\n", + " -0.7911, 0.4873, -0.4962]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1360, -0.1609, 0.0049, -0.1135, 0.0547, 0.0592, 0.1134, 0.1269,\n", + " 0.1398, 0.1344, 0.0639, -0.1255, -0.1341, -0.1909, -0.0680, -0.1906,\n", + " -0.1462, -0.0512, -0.0483, -0.0640, -0.0842, -0.0367, -0.0703, -0.0425,\n", + " 0.0278, -0.0009, -0.0223, -0.0974, -0.1337, -0.2158, -0.1880, -0.0969,\n", + " -0.2301, -0.2248, -0.0768, -0.0440, -0.0043, -0.0016, 0.0465, 0.1702,\n", + " 0.2382, 0.1844, 0.1696]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002532840589992702\n", + "Grad encoder.fc1.bias: 0.001200819038785994\n", + "Grad encoder.encoder.0.weight: 0.00011994267697446048\n", + "Grad encoder.encoder.0.bias: 0.0006525307544507086\n", + "Grad encoder.encoder.2.weight: 8.436023199465126e-05\n", + "Grad encoder.encoder.2.bias: 0.0004778285219799727\n", + "Grad encoder.encoder.4.weight: 0.00018067751079797745\n", + "Grad encoder.encoder.4.bias: 0.0009717418579384685\n", + "Grad decoder.fc1.0.weight: 6.529007805511355e-05\n", + "Grad decoder.fc1.0.bias: 0.0003910520172212273\n", + "Grad decoder.fc1.2.weight: 7.64037249609828e-05\n", + "Grad decoder.fc1.2.bias: 0.00044584745774045587\n", + "Grad decoder.fc1.4.weight: 6.498440052382648e-05\n", + "Grad decoder.fc1.4.bias: 0.0006465290789492428\n", + "Grad decoder.fc2.weight: 0.00012999214231967926\n", + "Grad decoder.fc2.bias: 0.0021375459618866444\n", + "Grad _memory_unit.weight_ih_l0: 1.5140908544708509e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.839430089807138e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.5702978998888284e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.389219495555153e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.100452785380185e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.706240386236459e-05\n", + "Data X Sample: tensor([[ 0.0021, 0.0015, 0.0105, 0.0153, 0.0051, 0.0236, 0.0216, 0.0043,\n", + " 0.0293, 0.0095, 0.0286, 0.0097, 0.0111, 0.0136, 0.0177, 0.0027,\n", + " -0.0928, -0.1199, -0.1425, -0.1134, -0.1349, -0.0980, -0.1518, -0.1241,\n", + " -0.1145, -0.2168, -0.1891, -0.3181, -0.0243, -0.0622, -0.0630, -0.0249,\n", + " -0.0220, -0.0366, -0.0172, 0.0146, 0.0039, 0.0080, -0.0444, 0.0113,\n", + " 0.0286, 0.0100, 0.0222, 0.0115, 0.0198, -0.0057, -0.0272, -0.0156]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.0887, 0.3611, 1.0823, -1.2877, 0.7039, -0.1413, -0.8185, -1.1584,\n", + " 0.5535, -0.5948, -0.6405, 0.0588, 0.0783, 0.3360, 0.3629, 1.1363,\n", + " 0.6671, 0.2340, -0.2753, -0.1605, -0.2167, -0.8059, -0.2281, -0.5883,\n", + " 0.7551, -0.3622, 0.3950, 0.5063, 0.4538, 1.3913, 0.3930, 0.7191,\n", + " -0.0048, 0.8208, 0.2508, 0.5999, -0.8958, -0.8004, 0.9794, -0.6341,\n", + " -0.6628, -0.5076, -1.1314]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.6082, 0.5064, 0.1726, 0.3514, 0.0476, -0.3334, -0.6776, -0.7105,\n", + " -0.2965, -0.4475, -0.4222, 0.3312, 0.2147, 0.4756, 0.3517, 0.3794,\n", + " 0.3937, 0.2526, 0.1573, 0.1503, 0.1011, 0.0712, 0.0579, 0.0923,\n", + " 0.0813, 0.1344, -0.0363, 0.0796, 0.4401, 0.4598, 0.4677, 0.3658,\n", + " 0.4688, 0.4448, 0.2702, 0.2111, -0.0817, 0.0089, -0.0114, -0.5167,\n", + " -0.4731, -0.4226, -0.4327]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 9.388725447934121e-05\n", + "Grad encoder.fc1.bias: 0.0015845387242734432\n", + "Grad encoder.encoder.0.weight: 4.14291862398386e-05\n", + "Grad encoder.encoder.0.bias: 0.0011512056225910783\n", + "Grad encoder.encoder.2.weight: 5.658582813339308e-05\n", + "Grad encoder.encoder.2.bias: 0.0009354292415082455\n", + "Grad encoder.encoder.4.weight: 0.00020316090376581997\n", + "Grad encoder.encoder.4.bias: 0.0018841736018657684\n", + "Grad decoder.fc1.0.weight: 9.066517668543383e-05\n", + "Grad decoder.fc1.0.bias: 0.0006072769174352288\n", + "Grad decoder.fc1.2.weight: 9.769144526217133e-05\n", + "Grad decoder.fc1.2.bias: 0.0005247765220701694\n", + "Grad decoder.fc1.4.weight: 7.600197568535805e-05\n", + "Grad decoder.fc1.4.bias: 0.0005264916690066457\n", + "Grad decoder.fc2.weight: 0.00016448098176624626\n", + "Grad decoder.fc2.bias: 0.0014574830420315266\n", + "Grad _memory_unit.weight_ih_l0: 3.977769665652886e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00012306716234888881\n", + "Grad _memory_unit.bias_hh_l0: 6.624600064242259e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.1295634976704605e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00017837958876043558\n", + "Grad _memory_unit.bias_hh_l1: 9.532758849672973e-05\n", + "Data X Sample: tensor([[1.5711, 1.7769, 2.0030, 2.0641, 2.2094, 2.2173, 2.3249, 2.3523, 2.3849,\n", + " 2.4707, 2.5030, 2.4091, 2.3901, 2.3393, 2.3479, 2.3563, 2.2894, 2.4431,\n", + " 2.4429, 2.4697, 2.5002, 2.5918, 2.6002, 2.6206, 2.5900, 2.6458, 2.6187,\n", + " 2.6837, 2.3625, 2.5022, 2.3902, 2.3267, 2.1758, 1.4143, 1.9217, 1.7731,\n", + " 1.6105, 1.5265, 1.6226, 1.5945, 1.2982, 0.7428, 0.7195, 1.4036, 2.0455,\n", + " 2.0814, 1.3870, 2.0564]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 2.5590e-01, 2.1055e-01, -7.7836e-01, 4.1653e-01, 6.2691e-01,\n", + " -4.5220e-02, -2.4749e-01, -6.2018e-01, 1.6691e-01, 6.6390e-02,\n", + " -2.0459e-01, 2.1604e+00, 1.0775e+00, -4.1549e-01, -3.4106e-01,\n", + " 6.3155e-01, 4.8777e-01, 1.9542e-01, 4.2997e-01, 4.0960e-01,\n", + " 3.6822e-01, 1.3527e+00, 4.2243e-01, 3.0129e-01, -4.0711e-01,\n", + " 1.4320e+00, 2.0212e-01, -3.5289e-01, -3.4611e-04, -1.1982e-01,\n", + " 5.0044e-01, 2.4519e-01, 7.7552e-02, -2.4048e-01, -3.4016e-01,\n", + " -9.8043e-01, 4.9151e-01, 1.5113e-01, 4.0193e-03, -1.7097e-01,\n", + " -1.4720e-01, -5.5032e-01, -2.4083e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4709, 0.4945, 0.1490, 0.2999, 0.1869, -0.1885, -0.4793, -0.4804,\n", + " -0.1817, -0.3332, -0.3175, 0.2490, 0.1848, 0.3862, 0.3279, 0.3802,\n", + " 0.3738, 0.2262, 0.1268, 0.1607, 0.1124, 0.1265, 0.1239, 0.0499,\n", + " 0.1025, 0.1544, -0.1373, -0.0635, 0.2138, 0.2754, 0.2834, 0.2188,\n", + " 0.3967, 0.3546, 0.2130, 0.2277, -0.0838, -0.0452, 0.0290, -0.4051,\n", + " -0.3741, -0.4260, -0.4154]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005771437427029014\n", + "Grad encoder.fc1.bias: 0.0005464407149702311\n", + "Grad encoder.encoder.0.weight: 0.00025148154236376286\n", + "Grad encoder.encoder.0.bias: 0.0007122684037312865\n", + "Grad encoder.encoder.2.weight: 0.00014921012916602194\n", + "Grad encoder.encoder.2.bias: 0.0006759044481441379\n", + "Grad encoder.encoder.4.weight: 0.00030407169833779335\n", + "Grad encoder.encoder.4.bias: 0.0015823248540982604\n", + "Grad decoder.fc1.0.weight: 9.649903222452849e-05\n", + "Grad decoder.fc1.0.bias: 0.0006453476962633431\n", + "Grad decoder.fc1.2.weight: 6.754235801054165e-05\n", + "Grad decoder.fc1.2.bias: 0.0007059871568344533\n", + "Grad decoder.fc1.4.weight: 5.386506381910294e-05\n", + "Grad decoder.fc1.4.bias: 0.0007333983085118234\n", + "Grad decoder.fc2.weight: 0.00015450859791599214\n", + "Grad decoder.fc2.bias: 0.0022282253485172987\n", + "Grad _memory_unit.weight_ih_l0: 1.582758704898879e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.734596874797717e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.992826896137558e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.076010090007912e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00014639002620242536\n", + "Grad _memory_unit.bias_hh_l1: 7.491919677704573e-05\n", + "Data X Sample: tensor([[2.1768, 2.3872, 2.6055, 2.8775, 2.8139, 2.9451, 3.0937, 3.1814, 3.2075,\n", + " 3.3190, 3.4705, 3.3107, 3.2823, 3.1954, 3.1978, 3.0702, 2.9796, 3.0737,\n", + " 3.1037, 2.9551, 2.8732, 2.7939, 2.6556, 2.5042, 2.3441, 2.3820, 2.2830,\n", + " 2.2310, 2.0260, 2.1125, 2.0052, 2.1278, 1.9492, 1.3571, 2.2673, 2.4444,\n", + " 2.7550, 2.8490, 3.1502, 3.0187, 1.7611, 0.9957, 0.9094, 1.7165, 2.5609,\n", + " 2.7619, 1.8833, 2.4943]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3165, -1.0230, -1.6372, 0.4281, 0.9720, -1.5987, 0.8451, 0.7523,\n", + " -0.5464, 0.3780, 0.9687, -1.1985, 0.4437, 0.1799, -0.6691, -0.4727,\n", + " -0.4153, 0.4304, -0.0372, -0.1140, -1.7050, -0.6183, 0.3275, -0.8149,\n", + " 0.2048, -0.4187, 0.9982, -0.6514, -0.8143, 0.2337, -0.0161, -1.3771,\n", + " -0.3814, -0.2681, 0.0781, -0.5488, -1.0622, 0.0761, -1.8131, 0.7387,\n", + " 0.7938, 0.8801, 0.5491]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1136, -0.1132, 0.0082, -0.1588, -0.0661, -0.0298, 0.0695, 0.1338,\n", + " 0.1009, 0.1169, 0.1013, -0.0704, -0.0748, -0.1091, -0.0672, -0.1391,\n", + " -0.1485, -0.0415, -0.0036, -0.0598, -0.0417, 0.0011, -0.0379, -0.0008,\n", + " -0.0139, 0.0229, 0.0357, -0.0103, -0.0442, -0.1280, -0.1266, -0.0760,\n", + " -0.1173, -0.1713, -0.0833, -0.0939, -0.0306, 0.0460, 0.0072, 0.1550,\n", + " 0.2350, 0.2016, 0.1728]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00023138115648180246\n", + "Grad encoder.fc1.bias: 0.0010711757931858301\n", + "Grad encoder.encoder.0.weight: 0.00010791344539029524\n", + "Grad encoder.encoder.0.bias: 0.0009878624696284533\n", + "Grad encoder.encoder.2.weight: 7.70801561884582e-05\n", + "Grad encoder.encoder.2.bias: 0.0007887037354521453\n", + "Grad encoder.encoder.4.weight: 0.00017655474948696792\n", + "Grad encoder.encoder.4.bias: 0.0016272850334644318\n", + "Grad decoder.fc1.0.weight: 8.406602864852175e-05\n", + "Grad decoder.fc1.0.bias: 0.0006735888309776783\n", + "Grad decoder.fc1.2.weight: 0.00012772930494975299\n", + "Grad decoder.fc1.2.bias: 0.0011799471685662866\n", + "Grad decoder.fc1.4.weight: 0.00010694812226574868\n", + "Grad decoder.fc1.4.bias: 0.0012384922010824084\n", + "Grad decoder.fc2.weight: 0.00018103624461218715\n", + "Grad decoder.fc2.bias: 0.0034007669892162085\n", + "Grad _memory_unit.weight_ih_l0: 2.0148023395449854e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.584546205587685e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.138622873346321e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.252514817286283e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00012921483721584082\n", + "Grad _memory_unit.bias_hh_l1: 7.005866791587323e-05\n", + "Data X Sample: tensor([[1.4629, 1.7114, 1.8843, 1.9854, 2.0763, 2.2335, 2.3926, 2.4474, 2.4044,\n", + " 2.6223, 2.5949, 2.5649, 2.4789, 2.5165, 2.4816, 2.4684, 2.3869, 2.4276,\n", + " 2.4636, 2.4399, 2.4634, 2.4341, 2.4339, 2.4336, 2.3479, 2.4735, 2.3949,\n", + " 2.3778, 2.1682, 2.2566, 2.3062, 2.2604, 2.2924, 1.5013, 1.9683, 1.7804,\n", + " 1.6322, 1.5265, 1.5783, 1.5803, 1.2886, 0.7408, 0.6669, 1.2371, 1.8116,\n", + " 2.0586, 1.3326, 1.9157]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 2.4917e+00, -6.4582e-01, 2.3366e+00, 1.9745e+00, 6.7675e-01,\n", + " 9.9049e-01, 6.0476e-01, -1.7850e+00, 1.0719e+00, 1.4423e+00,\n", + " 1.0180e+00, 8.3969e-01, -7.3333e-02, 9.2435e-01, 1.5699e+00,\n", + " -8.5985e-01, -7.4386e-03, 9.7639e-01, -4.1859e-02, 3.5532e-01,\n", + " 2.4257e-01, 1.0055e+01, -1.0727e+00, -6.6863e-01, -1.5089e+00,\n", + " 4.0184e-01, -7.4047e-01, -8.6500e-01, 1.1459e+00, -9.9844e-01,\n", + " -1.6930e+00, -5.5662e-01, -5.1129e-01, -6.7217e-03, -1.0256e+00,\n", + " 7.9566e-01, -3.3321e-02, -7.8062e-01, 2.8698e-01, 6.8364e-01,\n", + " 1.1294e-01, 1.2510e+00, -2.9373e-02]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3722, 0.3725, 0.1171, 0.2361, 0.1336, -0.1477, -0.3688, -0.3720,\n", + " -0.1324, -0.2442, -0.2502, 0.1882, 0.1498, 0.3012, 0.2595, 0.3012,\n", + " 0.2676, 0.1659, 0.1029, 0.1063, 0.0854, 0.0832, 0.0890, 0.0448,\n", + " 0.0822, 0.1220, -0.0882, -0.0406, 0.1736, 0.1988, 0.2089, 0.1764,\n", + " 0.2928, 0.2726, 0.1614, 0.1653, -0.0693, -0.0308, 0.0115, -0.2921,\n", + " -0.2770, -0.3197, -0.3111]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00015834823716431856\n", + "Grad encoder.fc1.bias: 0.00030858308309689164\n", + "Grad encoder.encoder.0.weight: 7.006761006778106e-05\n", + "Grad encoder.encoder.0.bias: 0.00034950170083902776\n", + "Grad encoder.encoder.2.weight: 4.688966873800382e-05\n", + "Grad encoder.encoder.2.bias: 0.00036796528729610145\n", + "Grad encoder.encoder.4.weight: 0.00010306353215128183\n", + "Grad encoder.encoder.4.bias: 0.0007266501197591424\n", + "Grad decoder.fc1.0.weight: 4.4193595385877416e-05\n", + "Grad decoder.fc1.0.bias: 0.00037025060737505555\n", + "Grad decoder.fc1.2.weight: 5.561565194511786e-05\n", + "Grad decoder.fc1.2.bias: 0.000927089829929173\n", + "Grad decoder.fc1.4.weight: 5.330274871084839e-05\n", + "Grad decoder.fc1.4.bias: 0.0010203392012044787\n", + "Grad decoder.fc2.weight: 0.000126933358842507\n", + "Grad decoder.fc2.bias: 0.0025400954764336348\n", + "Grad _memory_unit.weight_ih_l0: 6.17062505625654e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.5782996342750266e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.317040737892967e-06\n", + "Grad _memory_unit.weight_ih_l1: 3.6873670978820883e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.132706039352342e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.130284312646836e-05\n", + "Data X Sample: tensor([[1.4947, 1.8177, 2.0195, 2.0991, 2.2641, 2.3705, 2.3418, 2.4772, 2.4288,\n", + " 2.5054, 2.5061, 2.5726, 2.5477, 2.4784, 2.3958, 2.3358, 2.3082, 2.4489,\n", + " 2.5792, 2.5069, 2.5076, 2.5689, 2.5592, 2.5252, 2.6482, 2.6694, 2.5627,\n", + " 2.5083, 2.3382, 2.4039, 2.2992, 2.3516, 2.2396, 1.4601, 1.9560, 1.7585,\n", + " 1.6164, 1.5212, 1.5846, 1.6115, 1.2504, 0.7209, 0.7579, 1.2343, 1.8156,\n", + " 2.1844, 1.4006, 2.0643]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.3262, 0.8876, 0.8690, 0.2715, 0.2342, 0.9071, -0.2830, -0.1437,\n", + " 0.4656, -0.2712, -0.4878, 0.5541, -1.2655, 0.5601, 0.5803, 0.1666,\n", + " 0.1140, 0.8003, -0.4275, -0.0565, 0.9374, -0.2629, 0.8709, 0.2437,\n", + " 0.5687, 0.7724, 0.6290, -0.4596, 1.0313, 0.5420, 1.4964, -0.3269,\n", + " -0.2343, 0.9899, 1.7254, -0.6445, -1.0105, -0.8819, 2.2782, -0.3294,\n", + " -0.1255, -0.0241, -0.9620]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3177, 0.3155, 0.1042, 0.1957, 0.1103, -0.1216, -0.3102, -0.3121,\n", + " -0.1093, -0.1995, -0.2128, 0.1556, 0.1249, 0.2537, 0.2180, 0.2570,\n", + " 0.2161, 0.1354, 0.0867, 0.0819, 0.0741, 0.0689, 0.0742, 0.0370,\n", + " 0.0712, 0.1044, -0.0731, -0.0399, 0.1462, 0.1579, 0.1667, 0.1476,\n", + " 0.2404, 0.2240, 0.1340, 0.1369, -0.0603, -0.0272, 0.0085, -0.2380,\n", + " -0.2258, -0.2683, -0.2586]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 5.6097233027685434e-05\n", + "Grad encoder.fc1.bias: 0.00018959672888740897\n", + "Grad encoder.encoder.0.weight: 4.894838639302179e-05\n", + "Grad encoder.encoder.0.bias: 0.00013013702118769288\n", + "Grad encoder.encoder.2.weight: 3.6697660107165575e-05\n", + "Grad encoder.encoder.2.bias: 0.0001447698741685599\n", + "Grad encoder.encoder.4.weight: 9.061256423592567e-05\n", + "Grad encoder.encoder.4.bias: 0.0003757040831260383\n", + "Grad decoder.fc1.0.weight: 4.260435889591463e-05\n", + "Grad decoder.fc1.0.bias: 0.00024208796094171703\n", + "Grad decoder.fc1.2.weight: 6.498218135675415e-05\n", + "Grad decoder.fc1.2.bias: 0.0005956476088613272\n", + "Grad decoder.fc1.4.weight: 5.55119440832641e-05\n", + "Grad decoder.fc1.4.bias: 0.0006772576598450541\n", + "Grad decoder.fc2.weight: 0.00010453947470523417\n", + "Grad decoder.fc2.bias: 0.0016154341865330935\n", + "Grad _memory_unit.weight_ih_l0: 1.0427608685859013e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.481327763031004e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.973791409516707e-06\n", + "Grad _memory_unit.weight_ih_l1: 4.892172910331283e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.265229265205562e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.739153933362104e-05\n", + "Data X Sample: tensor([[-0.0053, -0.0029, 0.0000, 0.0044, -0.0017, 0.0059, -0.0015, 0.0000,\n", + " -0.0049, 0.0047, 0.0032, -0.0117, 0.0155, 0.0000, -0.0101, 0.0014,\n", + " 0.0299, 0.0213, 0.0268, 0.0242, 0.0491, 0.0092, 0.0120, 0.0057,\n", + " -0.0075, 0.0392, 0.0133, 0.0530, 0.0208, 0.0360, 0.0140, 0.0000,\n", + " 0.0000, 0.0069, -0.0049, 0.0170, -0.0177, -0.0133, -0.0190, -0.0255,\n", + " -0.0048, 0.0159, 0.0020, -0.0029, 0.0198, -0.0114, 0.0000, -0.0078]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.7345, 0.9119, 0.4964, 1.9853, -0.4633, 0.0521, -1.3215, -1.1954,\n", + " 0.2017, -0.6618, -0.6202, 0.2672, -0.1065, 0.2128, -0.7469, -0.2331,\n", + " 1.0412, -0.0474, 0.2287, -0.0167, -0.3990, 0.9834, 0.8321, -0.3507,\n", + " -0.5958, 0.1791, -0.6653, -0.3055, 0.9347, 0.9666, 0.5443, -0.0277,\n", + " 0.8089, 0.3690, -0.0078, 1.2812, -0.1820, 0.4207, 0.5686, -0.6933,\n", + " -0.5617, -1.1494, -1.5227]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.7881, 0.5394, 0.1705, 0.3900, -0.4884, -0.7221, -1.0819, -0.9822,\n", + " -0.6857, -0.7366, -0.7966, 0.3130, 0.3510, 0.5686, 0.4192, 0.3743,\n", + " 0.3800, 0.1219, 0.0352, 0.0264, 0.1293, -0.0413, 0.0539, 0.0779,\n", + " 0.0059, -0.0256, 0.3046, 0.3787, 0.9595, 0.7745, 0.7661, 0.4910,\n", + " 0.5783, 0.4416, 0.3486, 0.1678, -0.1068, -0.0390, -0.0144, -0.7046,\n", + " -0.6296, -0.4533, -0.3678]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00023528438759967685\n", + "Grad encoder.fc1.bias: 0.00046127772657200694\n", + "Grad encoder.encoder.0.weight: 0.00010696646495489404\n", + "Grad encoder.encoder.0.bias: 0.000522792455740273\n", + "Grad encoder.encoder.2.weight: 7.406678923871368e-05\n", + "Grad encoder.encoder.2.bias: 0.00048038503155112267\n", + "Grad encoder.encoder.4.weight: 0.00016170713934116066\n", + "Grad encoder.encoder.4.bias: 0.001384407514706254\n", + "Grad decoder.fc1.0.weight: 6.241101073101163e-05\n", + "Grad decoder.fc1.0.bias: 0.0005006807623431087\n", + "Grad decoder.fc1.2.weight: 0.00011364777310518548\n", + "Grad decoder.fc1.2.bias: 0.0007101885275915265\n", + "Grad decoder.fc1.4.weight: 7.928007107693702e-05\n", + "Grad decoder.fc1.4.bias: 0.0006003461894579232\n", + "Grad decoder.fc2.weight: 0.00014710471441503614\n", + "Grad decoder.fc2.bias: 0.0019791012164205313\n", + "Grad _memory_unit.weight_ih_l0: 1.3311325346876401e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.326698687393218e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.997787644038908e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.332816494454164e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010735264368122444\n", + "Grad _memory_unit.bias_hh_l1: 5.7933139032684267e-05\n", + "Data X Sample: tensor([[1.4884, 1.5395, 1.6093, 1.8061, 1.8765, 1.9904, 2.2062, 2.1124, 2.6924,\n", + " 4.0362, 4.0764, 4.1462, 3.9481, 3.8525, 3.6315, 3.3943, 3.3712, 3.3503,\n", + " 3.4816, 3.2340, 3.4375, 3.5854, 3.1882, 2.9909, 2.8077, 2.8000, 2.8158,\n", + " 2.8061, 2.8343, 2.9247, 3.0796, 3.2441, 3.4673, 2.5219, 4.2699, 4.6164,\n", + " 4.9241, 5.2766, 5.8187, 5.6629, 1.0691, 0.5676, 0.5922, 1.0879, 1.5738,\n", + " 1.7097, 1.1354, 1.6577]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6889, 0.3663, 2.6359, 0.4902, 0.6093, -0.0652, -1.4602, -0.5920,\n", + " -0.0574, -0.6637, -0.5380, 0.6474, 1.3323, 0.5332, -0.4439, 0.8000,\n", + " -0.4233, 0.0518, 0.4123, 0.5319, -1.1295, -0.1878, -0.0351, 0.3858,\n", + " -0.6219, 0.1959, -0.2872, -0.8391, -0.2122, -1.3530, 0.2616, 0.3388,\n", + " 0.8948, -0.2382, -0.5583, 0.9166, 0.0000, 0.0000, 0.2739, -0.3400,\n", + " -0.2353, -0.0306, -0.4496]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1750, -0.1999, 0.0320, -0.1372, 0.0271, 0.1092, 0.1605, 0.1829,\n", + " 0.1423, 0.1524, 0.1350, -0.1615, -0.1496, -0.2310, -0.1197, -0.2228,\n", + " -0.2057, -0.0557, -0.0605, -0.1061, -0.0785, -0.0510, -0.0568, -0.0118,\n", + " 0.0145, -0.0190, -0.0307, -0.1234, -0.1640, -0.2002, -0.2254, -0.0865,\n", + " -0.2431, -0.2867, -0.0957, -0.1067, -0.0044, 0.0363, 0.0396, 0.2663,\n", + " 0.2756, 0.2097, 0.1858]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0012642594520002604\n", + "Grad encoder.fc1.bias: 0.0012027861084789038\n", + "Grad encoder.encoder.0.weight: 0.0005617464194074273\n", + "Grad encoder.encoder.0.bias: 0.0017853068420663476\n", + "Grad encoder.encoder.2.weight: 0.000381748890504241\n", + "Grad encoder.encoder.2.bias: 0.0017227656207978725\n", + "Grad encoder.encoder.4.weight: 0.000792514649219811\n", + "Grad encoder.encoder.4.bias: 0.004911193624138832\n", + "Grad decoder.fc1.0.weight: 0.00021756536443717778\n", + "Grad decoder.fc1.0.bias: 0.0017330028349533677\n", + "Grad decoder.fc1.2.weight: 0.00013180667883716524\n", + "Grad decoder.fc1.2.bias: 0.00179184484295547\n", + "Grad decoder.fc1.4.weight: 9.180848428513855e-05\n", + "Grad decoder.fc1.4.bias: 0.0014581639552488923\n", + "Grad decoder.fc2.weight: 0.00016669873730279505\n", + "Grad decoder.fc2.bias: 0.002737118862569332\n", + "Grad _memory_unit.weight_ih_l0: 3.837722761090845e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00014601970906369388\n", + "Grad _memory_unit.bias_hh_l0: 7.549312431365252e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.0788544134120457e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00032735237618908286\n", + "Grad _memory_unit.bias_hh_l1: 0.00016947253607213497\n", + "Data X Sample: tensor([[ 0.0000, -0.0044, 0.0270, 0.0066, 0.0102, 0.0236, 0.0231, 0.0199,\n", + " 0.0342, 0.0142, 0.0476, 0.0117, 0.0244, 0.0327, 0.0378, 0.0096,\n", + " -0.1053, -0.1335, -0.1528, -0.1469, -0.1374, -0.0842, -0.1349, -0.1279,\n", + " -0.0995, -0.2194, -0.1891, -0.3385, -0.0555, -0.0393, -0.0280, -0.0442,\n", + " -0.0110, -0.0343, -0.0074, 0.0243, 0.0020, 0.0159, 0.0254, 0.0000,\n", + " 0.0143, 0.0100, -0.0141, 0.0029, 0.0040, 0.0343, -0.0136, -0.0391]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.2421, 0.4281, -1.4354, 3.3983, 0.3027, -4.4306, -1.1134, -1.0721,\n", + " -2.1029, -1.2367, -1.0485, -0.1533, 1.1446, -0.4252, 0.7882, 0.7158,\n", + " 1.0024, -0.4132, -0.6622, -0.1933, -0.2179, -1.5207, -0.5896, -0.4280,\n", + " -0.6238, -0.4682, 1.3434, 1.9109, 0.7378, 0.7794, 0.3900, -0.1169,\n", + " -0.0809, 0.4778, -0.5986, 0.4677, -0.5204, 0.5269, -0.2895, -0.4896,\n", + " -0.3824, -0.4746, -0.8008]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5040, 0.4060, 0.1380, 0.3111, 0.0827, -0.2201, -0.4951, -0.5524,\n", + " -0.2182, -0.3204, -0.2933, 0.2643, 0.1691, 0.3689, 0.3053, 0.2977,\n", + " 0.3120, 0.1994, 0.1366, 0.1057, 0.1239, 0.0469, 0.0774, 0.0980,\n", + " 0.0813, 0.1371, -0.0212, 0.0282, 0.3246, 0.3266, 0.3366, 0.2896,\n", + " 0.3540, 0.3747, 0.2161, 0.1768, -0.1043, -0.0202, 0.0027, -0.3889,\n", + " -0.3696, -0.3718, -0.3420]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00015520757006015629\n", + "Grad encoder.fc1.bias: 0.000476498797070235\n", + "Grad encoder.encoder.0.weight: 6.457201379816979e-05\n", + "Grad encoder.encoder.0.bias: 0.0005426097195595503\n", + "Grad encoder.encoder.2.weight: 4.9456961278337985e-05\n", + "Grad encoder.encoder.2.bias: 0.0005655798595398664\n", + "Grad encoder.encoder.4.weight: 0.00012764557322952896\n", + "Grad encoder.encoder.4.bias: 0.0020405154209583998\n", + "Grad decoder.fc1.0.weight: 6.351235788315535e-05\n", + "Grad decoder.fc1.0.bias: 0.0007504867389798164\n", + "Grad decoder.fc1.2.weight: 7.704950257902965e-05\n", + "Grad decoder.fc1.2.bias: 0.0005971193313598633\n", + "Grad decoder.fc1.4.weight: 6.32377850706689e-05\n", + "Grad decoder.fc1.4.bias: 0.0006141089252196252\n", + "Grad decoder.fc2.weight: 0.0001277307455893606\n", + "Grad decoder.fc2.bias: 0.001943838084116578\n", + "Grad _memory_unit.weight_ih_l0: 1.3194236089475453e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00011371097934897989\n", + "Grad _memory_unit.bias_hh_l0: 5.917191447224468e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.307505711651174e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001836777082644403\n", + "Grad _memory_unit.bias_hh_l1: 9.555548604112118e-05\n", + "Data X Sample: tensor([[1.4353, 1.5818, 1.7521, 1.7842, 1.9243, 1.9609, 2.1092, 1.9988, 3.4321,\n", + " 4.2242, 4.2509, 4.1910, 4.0302, 3.8907, 3.7526, 3.5474, 3.4985, 3.5999,\n", + " 3.5787, 3.7287, 3.6019, 3.5762, 3.0869, 2.9088, 2.7721, 2.9932, 2.8451,\n", + " 3.0059, 2.8517, 3.1081, 3.0971, 3.3574, 3.7159, 2.7485, 4.5886, 4.9836,\n", + " 5.1207, 5.4039, 6.0342, 5.9750, 1.0595, 0.6452, 0.6225, 1.1367, 1.6412,\n", + " 1.7326, 1.2170, 1.6733]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4121, -0.8247, -0.8731, -0.2276, -0.3916, -0.4769, 0.0031, 0.5780,\n", + " 0.2273, 0.7901, 0.7472, -0.6974, -0.1700, -0.3622, -0.1410, -0.9914,\n", + " -0.7014, -0.6013, -0.5806, -0.1358, 0.9596, 0.0050, 0.8326, 1.2858,\n", + " -0.5005, 0.4024, -0.2225, 0.4718, -0.1231, -0.3347, -0.5144, -0.0283,\n", + " -0.6542, -0.5255, 0.5359, -0.6363, -0.0071, 0.5129, -0.2241, 0.6263,\n", + " 0.9562, 1.0932, 1.1790]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1771, -0.2171, 0.0135, -0.1945, -0.0647, 0.0387, 0.1636, 0.2057,\n", + " 0.1351, 0.1336, 0.1900, -0.1475, -0.1293, -0.2289, -0.1401, -0.2258,\n", + " -0.2109, -0.0641, -0.0408, -0.0975, -0.0771, -0.0208, -0.0620, 0.0136,\n", + " 0.0244, 0.0140, 0.0157, -0.0895, -0.1182, -0.1720, -0.2190, -0.1076,\n", + " -0.1920, -0.2822, -0.1111, -0.1241, -0.0328, 0.0421, 0.0368, 0.2861,\n", + " 0.3046, 0.2710, 0.2204]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007651485502719879\n", + "Grad encoder.fc1.bias: 0.00048142203013412654\n", + "Grad encoder.encoder.0.weight: 0.00032405846286565065\n", + "Grad encoder.encoder.0.bias: 0.000885212211869657\n", + "Grad encoder.encoder.2.weight: 0.00020157356630079448\n", + "Grad encoder.encoder.2.bias: 0.0008412633324041963\n", + "Grad encoder.encoder.4.weight: 0.00040338115650229156\n", + "Grad encoder.encoder.4.bias: 0.0024233339354395866\n", + "Grad decoder.fc1.0.weight: 0.00010011211998062208\n", + "Grad decoder.fc1.0.bias: 0.0007530025904998183\n", + "Grad decoder.fc1.2.weight: 7.46526347938925e-05\n", + "Grad decoder.fc1.2.bias: 0.0009684986434876919\n", + "Grad decoder.fc1.4.weight: 6.155071605462581e-05\n", + "Grad decoder.fc1.4.bias: 0.0011757006868720055\n", + "Grad decoder.fc2.weight: 0.00013027734530624002\n", + "Grad decoder.fc2.bias: 0.002969758352264762\n", + "Grad _memory_unit.weight_ih_l0: 1.2083220099157188e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.3018397516570985e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.7659191144048236e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.79924300534185e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001300463336519897\n", + "Grad _memory_unit.bias_hh_l1: 6.618848419748247e-05\n", + "Data X Sample: tensor([[2.7020, 2.7528, 2.2885, 2.0182, 2.0831, 2.2556, 3.9780, 3.9778, 4.3181,\n", + " 4.1610, 4.1557, 4.1891, 3.9614, 3.8552, 3.6366, 3.7799, 3.6448, 3.6888,\n", + " 3.5704, 3.5576, 3.5037, 3.4201, 3.0508, 2.9680, 2.8340, 2.9358, 2.8158,\n", + " 2.8672, 2.7684, 2.8199, 3.0026, 3.0811, 3.3507, 2.3732, 4.0665, 4.4145,\n", + " 4.6999, 5.2475, 5.8821, 5.7395, 1.7086, 0.8404, 0.8084, 1.3118, 1.6689,\n", + " 1.8870, 1.2102, 1.8453]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0255, -0.5467, 0.1028, -1.6234, -0.7388, -0.7921, 0.4521, 0.6419,\n", + " -0.6506, 0.6416, 0.7438, -0.4940, -0.4656, -1.8493, -1.0556, -1.2471,\n", + " -1.2875, -1.4037, -0.3859, -0.2903, -0.3041, 0.2405, -0.4540, 0.2325,\n", + " 0.2649, 0.0257, 1.1474, 1.1167, -0.8311, -0.5509, -0.6068, -0.2307,\n", + " -0.2515, -0.5508, -0.0093, -1.9262, -0.7465, -0.8198, 1.1723, 0.7627,\n", + " 1.1413, 0.9116, 1.2496]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1729, -0.1916, 0.0107, -0.2191, -0.0971, -0.0118, 0.1483, 0.2002,\n", + " 0.1310, 0.1428, 0.1891, -0.1188, -0.1155, -0.1974, -0.1266, -0.2056,\n", + " -0.2154, -0.0644, -0.0246, -0.0876, -0.0676, -0.0172, -0.0515, 0.0299,\n", + " 0.0039, 0.0235, 0.0544, -0.0533, -0.0691, -0.1526, -0.1902, -0.1077,\n", + " -0.1593, -0.2663, -0.1223, -0.1264, -0.0362, 0.0593, 0.0241, 0.2662,\n", + " 0.3107, 0.2848, 0.2328]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004968463908880949\n", + "Grad encoder.fc1.bias: 0.0013937000185251236\n", + "Grad encoder.encoder.0.weight: 0.00020745197252836078\n", + "Grad encoder.encoder.0.bias: 0.0012606934178620577\n", + "Grad encoder.encoder.2.weight: 0.00012233448796905577\n", + "Grad encoder.encoder.2.bias: 0.001023783814162016\n", + "Grad encoder.encoder.4.weight: 0.00023371280985884368\n", + "Grad encoder.encoder.4.bias: 0.0022606595885008574\n", + "Grad decoder.fc1.0.weight: 7.860379992052913e-05\n", + "Grad decoder.fc1.0.bias: 0.0007773453835397959\n", + "Grad decoder.fc1.2.weight: 6.667767593171448e-05\n", + "Grad decoder.fc1.2.bias: 0.0007134940242394805\n", + "Grad decoder.fc1.4.weight: 6.705426494590938e-05\n", + "Grad decoder.fc1.4.bias: 0.0008217449067160487\n", + "Grad decoder.fc2.weight: 0.00012824343866668642\n", + "Grad decoder.fc2.bias: 0.001967811258509755\n", + "Grad _memory_unit.weight_ih_l0: 1.0796278729685582e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.313602403271943e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.242663140350487e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.103684311005054e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00013880411279387772\n", + "Grad _memory_unit.bias_hh_l1: 7.078754424583167e-05\n", + "Data X Sample: tensor([[1.3144, 1.5468, 1.7626, 1.9591, 2.0011, 2.1804, 2.2001, 2.0996, 3.0513,\n", + " 3.9856, 4.3429, 4.2592, 4.1434, 3.9725, 3.8787, 3.7539, 3.6621, 3.6560,\n", + " 3.5580, 3.5353, 3.4767, 3.3114, 3.0026, 2.8535, 2.8227, 2.9985, 3.0582,\n", + " 3.0875, 3.0980, 3.3832, 3.2475, 3.5205, 3.9425, 2.8904, 4.6621, 5.0153,\n", + " 5.0538, 5.5629, 5.9645, 5.9239, 1.0500, 0.6393, 0.6346, 1.1108, 1.9028,\n", + " 1.9385, 1.2918, 1.7828]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5031, -0.6414, -0.4775, -0.5176, 0.1481, -0.5722, 0.2580, 0.1811,\n", + " -0.1409, 0.5829, 0.3825, 0.9579, 0.9126, -0.0367, -1.3180, -0.6826,\n", + " -0.0903, 1.0477, 0.0852, 0.2633, -0.6689, 0.0754, 1.2854, -0.9406,\n", + " -0.0598, 0.2894, 0.8348, 0.2501, 0.4451, -0.3025, -0.6238, -0.7193,\n", + " 0.1830, -1.0046, -0.3165, 0.5972, 0.4852, -0.7725, 0.1407, 0.5678,\n", + " 0.5319, 0.2573, -0.3107]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1985, -0.2384, 0.0076, -0.2129, -0.0905, 0.0290, 0.1823, 0.2328,\n", + " 0.1423, 0.1470, 0.2259, -0.1555, -0.1389, -0.2508, -0.1608, -0.2464,\n", + " -0.2285, -0.0730, -0.0396, -0.1000, -0.0833, -0.0164, -0.0621, 0.0219,\n", + " 0.0246, 0.0233, 0.0287, -0.0910, -0.1177, -0.1716, -0.2362, -0.1235,\n", + " -0.1951, -0.3019, -0.1261, -0.1441, -0.0399, 0.0498, 0.0381, 0.3216,\n", + " 0.3344, 0.3100, 0.2470]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00018829098553396761\n", + "Grad encoder.fc1.bias: 0.00025660236133262515\n", + "Grad encoder.encoder.0.weight: 7.197367085609585e-05\n", + "Grad encoder.encoder.0.bias: 0.0003644921234808862\n", + "Grad encoder.encoder.2.weight: 4.749302752315998e-05\n", + "Grad encoder.encoder.2.bias: 0.00032732271938584745\n", + "Grad encoder.encoder.4.weight: 0.00010867735545616597\n", + "Grad encoder.encoder.4.bias: 0.0006457478739321232\n", + "Grad decoder.fc1.0.weight: 3.8752354157622904e-05\n", + "Grad decoder.fc1.0.bias: 0.0002872481709346175\n", + "Grad decoder.fc1.2.weight: 4.393681592773646e-05\n", + "Grad decoder.fc1.2.bias: 0.0003900387091562152\n", + "Grad decoder.fc1.4.weight: 4.482012809603475e-05\n", + "Grad decoder.fc1.4.bias: 0.0005628031212836504\n", + "Grad decoder.fc2.weight: 0.00013833884440828115\n", + "Grad decoder.fc2.bias: 0.001971898600459099\n", + "Grad _memory_unit.weight_ih_l0: 9.507726645097136e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.8823251341236755e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.5619494661223143e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.493766482482897e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.1008591728750616e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.206956171197817e-05\n", + "Data X Sample: tensor([[1.5849, 1.8177, 1.9008, 2.0991, 2.1411, 2.1701, 2.2247, 2.3452, 2.3214,\n", + " 2.3380, 2.4205, 2.3779, 2.2481, 2.2984, 2.2294, 2.3289, 2.2658, 2.2767,\n", + " 2.3706, 2.3804, 2.4487, 2.5199, 2.4797, 2.5214, 2.4980, 2.5492, 2.5441,\n", + " 2.5899, 2.3972, 2.4269, 2.3762, 2.5091, 2.2088, 1.4097, 1.9438, 1.8412,\n", + " 1.6538, 1.5318, 1.5846, 1.5377, 1.2982, 0.7707, 0.7235, 1.2142, 1.8394,\n", + " 2.1729, 1.3666, 1.8844]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2842, 0.3564, -1.4846, 0.0162, -0.3405, 0.8751, 0.9652, -0.3867,\n", + " 0.4942, 0.5824, 0.2272, 0.6812, -0.6301, -0.6831, 0.5238, 1.0745,\n", + " -1.0695, 0.9359, 1.5100, 0.3797, 0.4478, -0.2653, 0.1001, -0.4712,\n", + " 7.7509, -0.7335, -1.3354, 1.5038, -0.2926, -0.6167, -0.7745, 0.3522,\n", + " -0.4975, -0.1458, -0.5382, -0.2071, -0.0333, -0.7928, 0.0000, -0.1860,\n", + " 0.1219, 1.2048, -0.4488]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5222, 0.4755, 0.0910, 0.3876, 0.2049, -0.1322, -0.4177, -0.4998,\n", + " -0.1772, -0.3119, -0.2738, 0.2781, 0.2001, 0.3700, 0.3571, 0.3922,\n", + " 0.3622, 0.2034, 0.1448, 0.1301, 0.1573, 0.1063, 0.1896, 0.0866,\n", + " 0.0937, 0.1538, -0.0929, -0.0681, 0.2042, 0.2607, 0.2628, 0.2246,\n", + " 0.3947, 0.3999, 0.2178, 0.2445, -0.1383, -0.0842, 0.0591, -0.3854,\n", + " -0.4082, -0.4369, -0.3811]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003324975841678679\n", + "Grad encoder.fc1.bias: 0.00024747636052779853\n", + "Grad encoder.encoder.0.weight: 0.00013089679123368114\n", + "Grad encoder.encoder.0.bias: 0.0004018978797830641\n", + "Grad encoder.encoder.2.weight: 8.975098899099976e-05\n", + "Grad encoder.encoder.2.bias: 0.0003810110210906714\n", + "Grad encoder.encoder.4.weight: 0.00017773930449038744\n", + "Grad encoder.encoder.4.bias: 0.0011985695455223322\n", + "Grad decoder.fc1.0.weight: 5.284926010062918e-05\n", + "Grad decoder.fc1.0.bias: 0.0004484615055844188\n", + "Grad decoder.fc1.2.weight: 5.259884346742183e-05\n", + "Grad decoder.fc1.2.bias: 0.0004995903000235558\n", + "Grad decoder.fc1.4.weight: 4.57671339972876e-05\n", + "Grad decoder.fc1.4.bias: 0.0005210774252191186\n", + "Grad decoder.fc2.weight: 0.00011152127262903377\n", + "Grad decoder.fc2.bias: 0.0016300283605232835\n", + "Grad _memory_unit.weight_ih_l0: 9.832709110924043e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.287447882234119e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.341129584237933e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.794233402411919e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.799292507115752e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.0807055484037846e-05\n", + "Data X Sample: tensor([[ 0.0159, 0.0175, 0.0255, 0.0175, 0.0102, 0.0339, 0.0154, 0.0256,\n", + " 0.0366, 0.0190, 0.0222, 0.0175, 0.0044, 0.0273, 0.0000, 0.0068,\n", + " -0.1132, -0.1335, -0.1714, -0.1618, -0.1349, -0.1026, -0.2024, -0.1851,\n", + " -0.1577, -0.2821, -0.2824, -0.5751, -0.0624, -0.1114, -0.1295, -0.0718,\n", + " -0.0528, -0.0641, -0.0466, -0.0170, 0.0020, -0.0451, -0.0570, -0.0057,\n", + " 0.0048, 0.0060, -0.0020, -0.0029, 0.0436, 0.0229, -0.0136, 0.0000]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.2506, 0.7514, 0.3828, 1.0619, -0.5554, -0.4593, -1.1740, -0.6596,\n", + " -1.1845, -0.7638, -1.0045, 0.2936, 0.3920, -0.1740, 0.3682, -0.3209,\n", + " 1.0479, -0.6565, 0.4863, -1.3642, -1.2372, 0.5568, -0.6097, -4.0514,\n", + " 0.5266, -0.1850, 1.1607, 0.0327, 0.1204, 1.4410, 0.4900, -0.0316,\n", + " 0.5014, 0.9638, 0.7273, -0.6485, -0.4592, -0.3710, 0.0382, -0.6897,\n", + " -0.6499, -0.7352, -0.7712]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5726, 0.4352, 0.1253, 0.3872, 0.1021, -0.1769, -0.5220, -0.6249,\n", + " -0.2531, -0.3526, -0.2940, 0.3154, 0.2018, 0.3932, 0.3227, 0.3436,\n", + " 0.3353, 0.2006, 0.1523, 0.1107, 0.1587, 0.0577, 0.1223, 0.1286,\n", + " 0.0855, 0.1377, -0.0076, 0.0321, 0.3602, 0.3645, 0.3613, 0.3102,\n", + " 0.3962, 0.4385, 0.2349, 0.2051, -0.1204, -0.0162, 0.0140, -0.4092,\n", + " -0.4284, -0.4184, -0.3660]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00022387929493561387\n", + "Grad encoder.fc1.bias: 0.0001690643694018945\n", + "Grad encoder.encoder.0.weight: 9.915746340993792e-05\n", + "Grad encoder.encoder.0.bias: 0.00024441012647002935\n", + "Grad encoder.encoder.2.weight: 6.518609006889164e-05\n", + "Grad encoder.encoder.2.bias: 0.00026877084746956825\n", + "Grad encoder.encoder.4.weight: 0.00012740562669932842\n", + "Grad encoder.encoder.4.bias: 0.000788295641541481\n", + "Grad decoder.fc1.0.weight: 3.701825698954053e-05\n", + "Grad decoder.fc1.0.bias: 0.00031630537705495954\n", + "Grad decoder.fc1.2.weight: 4.604014247888699e-05\n", + "Grad decoder.fc1.2.bias: 0.0004944259417243302\n", + "Grad decoder.fc1.4.weight: 3.660362563095987e-05\n", + "Grad decoder.fc1.4.bias: 0.0005224447231739759\n", + "Grad decoder.fc2.weight: 0.00010187607404077426\n", + "Grad decoder.fc2.bias: 0.0016955643659457564\n", + "Grad _memory_unit.weight_ih_l0: 4.94792857352877e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.115745494142175e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.6399575542891398e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.1652252800995484e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.581937148235738e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.8896927688037977e-05\n", + "Data X Sample: tensor([[1.7228, 2.1236, 2.3666, 2.4599, 2.6756, 2.7786, 2.8934, 3.0124, 3.0049,\n", + " 3.0315, 3.0359, 2.8433, 2.8074, 2.8083, 2.6001, 2.5519, 2.6180, 2.6598,\n", + " 2.5689, 2.5088, 2.4904, 2.4326, 2.3761, 2.3000, 2.2353, 2.1783, 2.0965,\n", + " 2.1739, 1.7311, 1.7325, 1.7568, 1.6608, 1.5752, 1.1168, 1.7452, 1.8971,\n", + " 2.0845, 2.3879, 2.8269, 2.7577, 1.4604, 0.8364, 0.8448, 1.5357, 2.2754,\n", + " 2.3445, 1.5230, 2.5803]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.9123, -1.2316, -1.0640, -1.1213, -1.0319, -0.1679, 0.0229, 0.3909,\n", + " 0.6834, 0.5539, 0.4814, -3.3511, -0.1253, -0.2576, 1.1678, -0.0056,\n", + " 0.1700, -0.4695, -0.3916, -0.5446, -0.2508, -1.3283, -0.2862, -0.1131,\n", + " 0.4802, 0.0804, 0.4560, -0.0667, 1.0804, -0.0140, 0.6519, -0.0933,\n", + " 2.6930, -0.8179, 0.1409, 0.7625, 0.9799, 0.4269, -0.7513, 0.6189,\n", + " 1.7117, 1.1114, 0.8420]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1973, -0.2229, -0.0155, -0.1977, -0.1209, -0.0088, 0.1543, 0.2060,\n", + " 0.1583, 0.1899, 0.1949, -0.0926, -0.1145, -0.1952, -0.1406, -0.2570,\n", + " -0.2255, -0.1011, 0.0048, -0.1074, -0.0851, -0.0088, -0.0534, -0.0079,\n", + " -0.0093, 0.0092, 0.0500, -0.0535, -0.0756, -0.1518, -0.1896, -0.1110,\n", + " -0.1455, -0.2452, -0.1171, -0.1311, -0.0214, 0.0390, -0.0108, 0.3218,\n", + " 0.3436, 0.2880, 0.2495]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00010727009794209152\n", + "Grad encoder.fc1.bias: 0.00031853115069679916\n", + "Grad encoder.encoder.0.weight: 4.174625064479187e-05\n", + "Grad encoder.encoder.0.bias: 0.00025308088515885174\n", + "Grad encoder.encoder.2.weight: 2.8353213565424085e-05\n", + "Grad encoder.encoder.2.bias: 0.000289703079033643\n", + "Grad encoder.encoder.4.weight: 7.346653728745878e-05\n", + "Grad encoder.encoder.4.bias: 0.0008995672105811536\n", + "Grad decoder.fc1.0.weight: 3.340798139106482e-05\n", + "Grad decoder.fc1.0.bias: 0.0003695912891998887\n", + "Grad decoder.fc1.2.weight: 4.837541564484127e-05\n", + "Grad decoder.fc1.2.bias: 0.0005393699393607676\n", + "Grad decoder.fc1.4.weight: 4.8859368689591065e-05\n", + "Grad decoder.fc1.4.bias: 0.0006577310850843787\n", + "Grad decoder.fc2.weight: 0.00013058257172815502\n", + "Grad decoder.fc2.bias: 0.0020683722104877234\n", + "Grad _memory_unit.weight_ih_l0: 8.879986125975847e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.0589304009918123e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.6382167561678216e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.835250026895665e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.336016617249697e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.34804787801113e-05\n", + "Data X Sample: tensor([[1.6220, 1.7726, 2.0150, 2.1122, 2.2504, 2.2261, 2.3356, 2.4375, 2.4508,\n", + " 2.4817, 2.4617, 2.5220, 2.2858, 2.3584, 2.4109, 2.3043, 2.3240, 2.4741,\n", + " 2.5007, 2.4753, 2.4806, 2.6393, 2.5544, 2.5233, 2.5224, 2.5701, 2.6613,\n", + " 2.6674, 2.4180, 2.4400, 2.4182, 2.3820, 2.1604, 1.4051, 1.8874, 1.7707,\n", + " 1.6361, 1.4947, 1.6226, 1.6370, 1.3459, 0.7309, 0.7559, 1.2888, 1.9662,\n", + " 2.2187, 1.4074, 1.9861]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1794, 0.2538, 0.0568, 0.7259, 0.2674, 0.4700, -0.4369, -0.1252,\n", + " -0.5875, -0.3532, -0.1073, 0.3386, -0.4202, -0.8592, 0.0464, -0.2385,\n", + " -0.0285, 0.3277, 0.1273, 0.5054, -0.2132, 1.2710, -0.1145, 0.0827,\n", + " -0.3819, -0.8208, -0.7909, -0.2175, 1.3976, 0.4540, -0.0481, 0.7165,\n", + " 0.4645, 1.1592, 0.2646, 1.1414, 0.5692, 0.1511, 1.8119, -0.2463,\n", + " -0.0508, 0.2894, -0.1849]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4610, 0.3990, 0.0635, 0.3337, 0.1455, -0.1026, -0.3661, -0.4430,\n", + " -0.1660, -0.2675, -0.2519, 0.2393, 0.1874, 0.3249, 0.2982, 0.3394,\n", + " 0.2768, 0.1587, 0.1248, 0.0980, 0.1131, 0.0730, 0.1544, 0.0772,\n", + " 0.0759, 0.1267, -0.0491, -0.0325, 0.2022, 0.2307, 0.2243, 0.2025,\n", + " 0.3208, 0.3515, 0.1723, 0.1858, -0.1110, -0.0507, 0.0254, -0.3085,\n", + " -0.3425, -0.3480, -0.3030]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00019127348787151277\n", + "Grad encoder.fc1.bias: 0.0005621587624773383\n", + "Grad encoder.encoder.0.weight: 6.403595762094483e-05\n", + "Grad encoder.encoder.0.bias: 0.0005093900253996253\n", + "Grad encoder.encoder.2.weight: 4.482895747059956e-05\n", + "Grad encoder.encoder.2.bias: 0.0004915168974548578\n", + "Grad encoder.encoder.4.weight: 0.00013036385644227266\n", + "Grad encoder.encoder.4.bias: 0.0007001461926847696\n", + "Grad decoder.fc1.0.weight: 5.609673462458886e-05\n", + "Grad decoder.fc1.0.bias: 0.0004142625257372856\n", + "Grad decoder.fc1.2.weight: 6.343534187180921e-05\n", + "Grad decoder.fc1.2.bias: 0.0005558699485845864\n", + "Grad decoder.fc1.4.weight: 5.006250648875721e-05\n", + "Grad decoder.fc1.4.bias: 0.000530485063791275\n", + "Grad decoder.fc2.weight: 0.00013997158384881914\n", + "Grad decoder.fc2.bias: 0.0020858445204794407\n", + "Grad _memory_unit.weight_ih_l0: 1.7292913980782032e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.3604988352162763e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.8778453270206228e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.6272818912693765e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.573092393111438e-05\n", + "Grad _memory_unit.bias_hh_l1: 5.138197593623772e-05\n", + "Data X Sample: tensor([[1.3992, 1.5541, 1.6604, 1.6399, 1.9055, 1.9948, 2.1323, 2.0173, 2.5631,\n", + " 3.9161, 4.1399, 4.0742, 3.9569, 4.0052, 3.7526, 3.5447, 3.5709, 3.5012,\n", + " 3.4630, 3.4014, 3.3663, 3.4445, 3.2388, 2.9260, 2.8002, 2.8417, 2.8025,\n", + " 2.8305, 2.7962, 2.9116, 3.0411, 3.1751, 3.4497, 2.5723, 4.3238, 4.7574,\n", + " 4.9260, 5.3031, 5.9454, 5.6629, 1.0738, 0.6313, 0.6265, 0.9845, 1.6095,\n", + " 1.6640, 1.0606, 1.6420]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.9125, 0.3081, 0.8280, 0.2606, -0.1951, -0.2494, 0.1014, 0.1618,\n", + " 1.3285, 0.1293, -0.3111, -1.1188, -1.1640, 0.1323, 0.8964, 0.3996,\n", + " 0.2844, 0.0481, -0.3229, 0.2941, 1.7845, -0.2914, -1.5891, 0.1119,\n", + " 0.1638, -0.3772, -2.2222, -0.4790, -0.6676, -0.7524, -1.3469, -1.1439,\n", + " 3.1749, 0.1341, -0.8941, -0.7158, 0.9995, 0.1524, -0.8827, 0.6380,\n", + " 0.4287, 0.7188, 0.2301]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2450, -0.3062, -0.0187, -0.1756, -0.0747, 0.0865, 0.2208, 0.2948,\n", + " 0.2093, 0.2190, 0.2651, -0.1871, -0.1845, -0.3108, -0.2068, -0.3349,\n", + " -0.2558, -0.0979, -0.0407, -0.1243, -0.1082, -0.0118, -0.0747, -0.0236,\n", + " 0.0424, 0.0307, 0.0037, -0.1467, -0.1855, -0.2226, -0.3018, -0.1403,\n", + " -0.2620, -0.3246, -0.1478, -0.1645, -0.0325, 0.0546, 0.0431, 0.3974,\n", + " 0.3890, 0.3648, 0.2813]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00041009107371792197\n", + "Grad encoder.fc1.bias: 0.0007912591099739075\n", + "Grad encoder.encoder.0.weight: 0.0001617780071683228\n", + "Grad encoder.encoder.0.bias: 0.0007703344454057515\n", + "Grad encoder.encoder.2.weight: 0.00010353460675105453\n", + "Grad encoder.encoder.2.bias: 0.0008082658750936389\n", + "Grad encoder.encoder.4.weight: 0.00023470951418858021\n", + "Grad encoder.encoder.4.bias: 0.0017929569585248828\n", + "Grad decoder.fc1.0.weight: 7.827900844858959e-05\n", + "Grad decoder.fc1.0.bias: 0.0006374827935360372\n", + "Grad decoder.fc1.2.weight: 8.126017200993374e-05\n", + "Grad decoder.fc1.2.bias: 0.000491039827466011\n", + "Grad decoder.fc1.4.weight: 6.673368625342846e-05\n", + "Grad decoder.fc1.4.bias: 0.0005403049290180206\n", + "Grad decoder.fc2.weight: 0.0001671298814471811\n", + "Grad decoder.fc2.bias: 0.0021257386542856693\n", + "Grad _memory_unit.weight_ih_l0: 2.0341811250546016e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00011194389662705362\n", + "Grad _memory_unit.bias_hh_l0: 5.8534387790132314e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.470697139273398e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00018704547255765647\n", + "Grad _memory_unit.bias_hh_l1: 9.755667997524142e-05\n", + "Data X Sample: tensor([[1.9138, 1.6459, 1.8557, 2.0903, 2.1804, 2.0655, 1.7810, 3.2027, 4.2791,\n", + " 4.4580, 4.3873, 4.0820, 4.2210, 3.9970, 3.7829, 3.6869, 3.6951, 3.6772,\n", + " 3.5498, 3.5427, 3.4252, 3.4139, 2.9038, 2.7619, 2.7495, 2.7582, 2.7785,\n", + " 2.7694, 2.8621, 2.9574, 2.9781, 3.0977, 3.4937, 2.5242, 4.3483, 4.8693,\n", + " 5.0814, 5.4993, 6.1483, 6.0005, 1.1025, 0.6791, 0.6750, 1.1338, 1.7839,\n", + " 2.0357, 1.3190, 1.9157]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0282, -0.1321, -0.2304, -0.8896, 0.3456, 0.3883, 0.2279, 0.2240,\n", + " -0.5215, -0.1417, -0.3665, -0.0951, 0.4512, -0.0570, 0.4439, 1.0651,\n", + " 1.7065, 0.5032, 0.4715, 0.9119, -0.2020, -0.1526, 0.2473, 0.2544,\n", + " 0.7143, 0.5363, 1.2401, -0.1911, -0.1438, 0.3484, 0.7297, 0.1062,\n", + " 1.1880, 0.0883, -0.1222, -1.2797, 0.2309, 0.0182, 0.5227, -0.1167,\n", + " 0.2473, 0.1688, 0.8658]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2582, -0.3180, -0.0250, -0.1591, -0.0640, 0.1059, 0.2251, 0.3065,\n", + " 0.2251, 0.2381, 0.2644, -0.1992, -0.1996, -0.3262, -0.2104, -0.3490,\n", + " -0.2636, -0.1020, -0.0538, -0.1300, -0.1111, -0.0152, -0.0749, -0.0365,\n", + " 0.0464, 0.0304, -0.0040, -0.1680, -0.2050, -0.2363, -0.3191, -0.1402,\n", + " -0.2845, -0.3305, -0.1480, -0.1654, -0.0248, 0.0599, 0.0453, 0.4095,\n", + " 0.3954, 0.3683, 0.2768]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0011195255210623145\n", + "Grad encoder.fc1.bias: 0.000587265647482127\n", + "Grad encoder.encoder.0.weight: 0.00046451925300061703\n", + "Grad encoder.encoder.0.bias: 0.001071124104782939\n", + "Grad encoder.encoder.2.weight: 0.00028612028108909726\n", + "Grad encoder.encoder.2.bias: 0.0010278432164341211\n", + "Grad encoder.encoder.4.weight: 0.0005493443459272385\n", + "Grad encoder.encoder.4.bias: 0.0031049593817442656\n", + "Grad decoder.fc1.0.weight: 0.0001318837603321299\n", + "Grad decoder.fc1.0.bias: 0.0009459381690248847\n", + "Grad decoder.fc1.2.weight: 0.00014055910287424922\n", + "Grad decoder.fc1.2.bias: 0.001548474538139999\n", + "Grad decoder.fc1.4.weight: 0.00010985496919602156\n", + "Grad decoder.fc1.4.bias: 0.0014828089624643326\n", + "Grad decoder.fc2.weight: 0.0001582194963702932\n", + "Grad decoder.fc2.bias: 0.0030896945390850306\n", + "Grad _memory_unit.weight_ih_l0: 1.4787965483264998e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.73901566490531e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.039177888946142e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.1365869795554318e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00015833745419513434\n", + "Grad _memory_unit.bias_hh_l1: 8.035206701606512e-05\n", + "Data X Sample: tensor([[1.4449, 1.5424, 1.7430, 1.8411, 1.9089, 2.0361, 2.0106, 2.2118, 3.5224,\n", + " 4.1799, 4.2668, 4.1248, 3.9037, 3.7652, 3.7022, 3.5584, 3.5347, 3.6018,\n", + " 3.6158, 3.4070, 3.4277, 3.2348, 2.7785, 2.7523, 2.8434, 2.9462, 2.9517,\n", + " 3.0671, 3.0945, 3.2129, 3.2056, 3.3298, 3.7313, 2.7920, 4.4488, 4.7015,\n", + " 4.8729, 5.4118, 5.9898, 5.7679, 1.0452, 0.6233, 0.6265, 1.2257, 1.7046,\n", + " 1.8184, 1.1626, 1.7593]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4975, -1.0328, 0.5328, -0.2957, -0.9310, -0.6537, 0.8333, 0.5226,\n", + " 0.7932, 0.5696, 0.5107, -0.5155, -0.1041, -0.0442, 0.1188, -0.5043,\n", + " -0.8117, -0.6960, -0.1315, -0.0610, -1.0856, -2.0109, -0.1545, 0.4883,\n", + " -1.1614, 0.0142, 2.4747, 0.4394, 0.2873, -0.5766, -0.0332, -0.9002,\n", + " -0.8156, -0.7395, -1.4500, -1.2189, 0.4963, 0.1545, -0.0104, 0.6486,\n", + " 0.7681, 0.4540, 0.4241]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2369, -0.2883, -0.0340, -0.1528, -0.0673, 0.0961, 0.2022, 0.2872,\n", + " 0.2002, 0.2231, 0.2420, -0.1839, -0.1884, -0.2952, -0.1932, -0.3184,\n", + " -0.2407, -0.0911, -0.0521, -0.1123, -0.0964, -0.0041, -0.0699, -0.0337,\n", + " 0.0446, 0.0375, 0.0033, -0.1477, -0.1891, -0.2181, -0.2920, -0.1352,\n", + " -0.2622, -0.2986, -0.1387, -0.1584, -0.0296, 0.0586, 0.0454, 0.3690,\n", + " 0.3657, 0.3527, 0.2604]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 7.453987200278789e-05\n", + "Grad encoder.fc1.bias: 0.00030934647656977177\n", + "Grad encoder.encoder.0.weight: 2.5973924493882805e-05\n", + "Grad encoder.encoder.0.bias: 0.00030202162452042103\n", + "Grad encoder.encoder.2.weight: 2.0521383703453466e-05\n", + "Grad encoder.encoder.2.bias: 0.0002824592520482838\n", + "Grad encoder.encoder.4.weight: 5.871077155461535e-05\n", + "Grad encoder.encoder.4.bias: 0.0009543282794766128\n", + "Grad decoder.fc1.0.weight: 3.386086973478086e-05\n", + "Grad decoder.fc1.0.bias: 0.00032563088461756706\n", + "Grad decoder.fc1.2.weight: 4.50386869488284e-05\n", + "Grad decoder.fc1.2.bias: 0.0003711554454639554\n", + "Grad decoder.fc1.4.weight: 5.185764894122258e-05\n", + "Grad decoder.fc1.4.bias: 0.0005544704617932439\n", + "Grad decoder.fc2.weight: 0.00014393612218555063\n", + "Grad decoder.fc2.bias: 0.00197770562954247\n", + "Grad _memory_unit.weight_ih_l0: 4.800337137567112e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.462712579173967e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.8634332920773886e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.490637709546718e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.780080679571256e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.617898594005965e-05\n", + "Data X Sample: tensor([[1.6623, 2.0231, 2.2750, 2.5626, 2.7404, 2.7314, 2.9211, 2.8591, 2.8047,\n", + " 2.8751, 2.7948, 2.7070, 2.6076, 2.5220, 2.3126, 2.2920, 2.3114, 2.2632,\n", + " 2.2509, 2.2149, 2.2156, 2.1555, 2.0748, 1.9793, 1.8881, 1.9171, 1.8008,\n", + " 1.8313, 1.4605, 1.4312, 1.3788, 1.3071, 1.2232, 0.8719, 1.3775, 1.5323,\n", + " 1.7836, 2.0751, 2.4847, 2.4030, 1.4127, 0.8145, 0.8327, 1.5041, 2.2477,\n", + " 2.5560, 1.7541, 2.2285]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.2740, -1.2293, -0.4185, -0.9441, -0.9902, -0.0978, -0.0453, 1.3687,\n", + " 0.4876, 1.2873, 1.6655, 0.5544, 0.6260, -1.0168, -1.2000, -1.3454,\n", + " -1.4289, 0.4511, 0.1400, -0.0503, -0.7962, 0.0978, 0.3567, 0.1649,\n", + " 0.0290, 0.0438, 1.0508, 0.7550, 0.2030, -0.3661, -1.2021, -0.4364,\n", + " -0.3308, -1.8064, -0.4487, -0.8027, -0.4653, 0.3122, 0.7106, 2.2113,\n", + " 2.6380, 2.1631, 0.4806]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2073, -0.2308, -0.0506, -0.1857, -0.1385, -0.0045, 0.1343, 0.2033,\n", + " 0.1574, 0.2044, 0.1832, -0.0875, -0.1232, -0.1931, -0.1369, -0.2616,\n", + " -0.2097, -0.1147, -0.0032, -0.0940, -0.0844, 0.0065, -0.0532, -0.0308,\n", + " 0.0043, 0.0149, 0.0610, -0.0575, -0.0786, -0.1507, -0.1837, -0.1122,\n", + " -0.1425, -0.2133, -0.1080, -0.1232, -0.0125, 0.0369, -0.0119, 0.3167,\n", + " 0.3298, 0.2905, 0.2455]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001520491496194154\n", + "Grad encoder.fc1.bias: 0.0006722670514136553\n", + "Grad encoder.encoder.0.weight: 4.6707216824870557e-05\n", + "Grad encoder.encoder.0.bias: 0.0005026191938668489\n", + "Grad encoder.encoder.2.weight: 3.967600787291303e-05\n", + "Grad encoder.encoder.2.bias: 0.0006343088462017477\n", + "Grad encoder.encoder.4.weight: 0.00012677660561166704\n", + "Grad encoder.encoder.4.bias: 0.0022492744028568268\n", + "Grad decoder.fc1.0.weight: 6.718201620969921e-05\n", + "Grad decoder.fc1.0.bias: 0.0007306259358301759\n", + "Grad decoder.fc1.2.weight: 8.333368168678135e-05\n", + "Grad decoder.fc1.2.bias: 0.0007651916821487248\n", + "Grad decoder.fc1.4.weight: 7.508168346248567e-05\n", + "Grad decoder.fc1.4.bias: 0.0008899134118109941\n", + "Grad decoder.fc2.weight: 0.00016390292148571461\n", + "Grad decoder.fc2.bias: 0.0015391584020107985\n", + "Grad _memory_unit.weight_ih_l0: 1.719057217997033e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0001345101627521217\n", + "Grad _memory_unit.bias_hh_l0: 7.005303632467985e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.275253665284254e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00020725313515868038\n", + "Grad _memory_unit.bias_hh_l1: 0.00010847741214092821\n", + "Data X Sample: tensor([[1.3504, 1.4871, 1.6679, 1.8433, 1.9209, 1.9565, 1.9012, 1.8129, 2.9414,\n", + " 3.9398, 4.1272, 4.0079, 3.8837, 3.6835, 3.6114, 3.4695, 3.4152, 3.4625,\n", + " 3.3144, 3.4237, 3.5111, 3.4292, 2.8845, 2.8688, 2.8265, 2.8783, 2.8558,\n", + " 2.9162, 2.9037, 3.1474, 3.0796, 3.2027, 3.5597, 2.6547, 4.2356, 4.5458,\n", + " 4.9005, 5.1706, 5.7616, 5.5381, 0.9688, 0.5954, 0.6144, 1.1309, 1.6967,\n", + " 1.8184, 1.1762, 1.7046]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5772, -0.9622, -0.6206, -0.5847, 0.4435, -0.0235, 0.1384, 0.7095,\n", + " 1.0918, 0.5956, 0.5419, -0.0449, -0.2588, -0.7071, -0.7406, -0.8194,\n", + " 0.2544, -0.9967, -0.1545, -0.6020, 0.9716, -0.8397, -0.4464, -0.5365,\n", + " -0.3036, -0.1100, -1.5270, -1.3145, -1.4929, -0.8884, -1.5002, -2.4020,\n", + " -1.0602, -1.5860, -1.3260, -2.1827, -0.2391, 0.7348, -0.5596, 0.7535,\n", + " 0.6240, 0.6613, 0.6273]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2132, -0.2448, -0.0412, -0.1516, -0.0746, 0.0699, 0.1636, 0.2512,\n", + " 0.1579, 0.1891, 0.2133, -0.1567, -0.1697, -0.2519, -0.1648, -0.2668,\n", + " -0.2045, -0.0765, -0.0518, -0.0762, -0.0744, 0.0091, -0.0504, -0.0220,\n", + " 0.0354, 0.0458, 0.0259, -0.1136, -0.1600, -0.1875, -0.2501, -0.1295,\n", + " -0.2313, -0.2534, -0.1226, -0.1513, -0.0336, 0.0517, 0.0416, 0.3094,\n", + " 0.3202, 0.3250, 0.2357]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00026212033117190003\n", + "Grad encoder.fc1.bias: 0.00019791614613495767\n", + "Grad encoder.encoder.0.weight: 9.673559543443844e-05\n", + "Grad encoder.encoder.0.bias: 0.00029181555146351457\n", + "Grad encoder.encoder.2.weight: 6.634385499637574e-05\n", + "Grad encoder.encoder.2.bias: 0.00028666906291618943\n", + "Grad encoder.encoder.4.weight: 0.00012814281217288226\n", + "Grad encoder.encoder.4.bias: 0.0007263933657668531\n", + "Grad decoder.fc1.0.weight: 4.314997204346582e-05\n", + "Grad decoder.fc1.0.bias: 0.00029750767862424254\n", + "Grad decoder.fc1.2.weight: 6.280573143158108e-05\n", + "Grad decoder.fc1.2.bias: 0.0006706881104037166\n", + "Grad decoder.fc1.4.weight: 5.621593663818203e-05\n", + "Grad decoder.fc1.4.bias: 0.0007246314780786633\n", + "Grad decoder.fc2.weight: 0.00014500803081318736\n", + "Grad decoder.fc2.bias: 0.0016940169734880328\n", + "Grad _memory_unit.weight_ih_l0: 8.096556484815665e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.748804217844736e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.4201737940311432e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.874834419548279e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.240352377062663e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.2572337659075856e-05\n", + "Data X Sample: tensor([[1.3971, 1.5468, 1.7145, 1.8323, 1.9567, 2.0935, 2.2216, 2.2402, 3.8397,\n", + " 4.4106, 4.3429, 4.3020, 3.9747, 4.0515, 3.8383, 3.8264, 3.7454, 3.6908,\n", + " 3.7212, 3.4795, 3.6755, 3.4537, 2.9640, 2.8611, 2.8865, 2.9828, 3.0129,\n", + " 3.0875, 3.0147, 3.2293, 3.3560, 3.4735, 3.7907, 2.8309, 4.7994, 5.0663,\n", + " 5.1325, 5.5894, 6.0976, 6.0998, 1.0834, 0.5915, 0.5861, 1.1022, 1.7244,\n", + " 1.7784, 1.1966, 1.7202]], device='cuda:0')\n", + "Data Y Sample: tensor([[-2.3099e-01, -4.3632e-01, 7.4856e-01, 1.7523e+00, -2.4622e-01,\n", + " 1.1156e+00, 6.8618e-02, -1.7735e-04, -3.7156e-01, 3.6984e-01,\n", + " 6.0859e-01, -1.8708e-01, -5.3610e-01, -1.0176e+00, -9.5828e-01,\n", + " 1.1272e-01, -4.3686e-01, 5.7887e-02, -7.4509e-01, -1.3709e+00,\n", + " -4.3681e-01, -2.8874e-01, -2.4327e-01, -3.8371e-01, 3.1856e-02,\n", + " 8.0080e-01, 5.1290e-01, 1.1839e+00, 6.8313e-01, 4.3893e-01,\n", + " -2.6871e-01, 2.1524e-01, 6.6719e-02, -2.5010e-01, -8.8722e-01,\n", + " -3.0661e-01, 8.3786e-01, 6.6363e-01, -7.0304e-01, 4.7251e-01,\n", + " 5.9985e-01, 6.5722e-01, 8.5101e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2089, -0.2379, -0.0442, -0.1441, -0.0579, 0.0803, 0.1564, 0.2443,\n", + " 0.1526, 0.1902, 0.1963, -0.1614, -0.1769, -0.2503, -0.1584, -0.2562,\n", + " -0.1994, -0.0687, -0.0627, -0.0644, -0.0669, 0.0028, -0.0470, -0.0235,\n", + " 0.0400, 0.0483, 0.0264, -0.1163, -0.1650, -0.1935, -0.2510, -0.1257,\n", + " -0.2420, -0.2495, -0.1174, -0.1425, -0.0354, 0.0527, 0.0482, 0.2901,\n", + " 0.3030, 0.3167, 0.2263]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00038011622382327914\n", + "Grad encoder.fc1.bias: 0.0001801997859729454\n", + "Grad encoder.encoder.0.weight: 0.00013573035539593548\n", + "Grad encoder.encoder.0.bias: 0.000327869551256299\n", + "Grad encoder.encoder.2.weight: 8.936651283875108e-05\n", + "Grad encoder.encoder.2.bias: 0.00033011354389600456\n", + "Grad encoder.encoder.4.weight: 0.00017549688345752656\n", + "Grad encoder.encoder.4.bias: 0.0010943273082375526\n", + "Grad decoder.fc1.0.weight: 5.191438685869798e-05\n", + "Grad decoder.fc1.0.bias: 0.00033790484303608537\n", + "Grad decoder.fc1.2.weight: 6.842495349701494e-05\n", + "Grad decoder.fc1.2.bias: 0.0007586487918160856\n", + "Grad decoder.fc1.4.weight: 6.533849955303594e-05\n", + "Grad decoder.fc1.4.bias: 0.0008749403059482574\n", + "Grad decoder.fc2.weight: 0.0001231610804097727\n", + "Grad decoder.fc2.bias: 0.001805553212761879\n", + "Grad _memory_unit.weight_ih_l0: 1.2979834536963608e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.617633253976237e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.429527583240997e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.1230120991240256e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.687609079061076e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.408707172842696e-05\n", + "Data X Sample: tensor([[1.3727, 1.6080, 1.7265, 1.8389, 1.9960, 2.0331, 2.0861, 2.0457, 3.6347,\n", + " 4.1167, 4.2414, 4.0878, 4.0857, 3.9043, 3.9417, 3.7102, 3.6070, 3.6037,\n", + " 3.5622, 3.5316, 3.5037, 3.3910, 2.9279, 2.8000, 2.8340, 2.8339, 3.0076,\n", + " 3.0467, 2.8933, 3.1081, 3.3070, 3.3878, 3.8127, 2.8606, 4.6302, 5.0177,\n", + " 5.2249, 5.4251, 6.0342, 5.9665, 1.0213, 0.6293, 0.6083, 1.0994, 1.6095,\n", + " 1.8527, 1.1218, 1.7828]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4382, 0.3238, 0.0069, -0.8808, 0.2997, -0.3636, -0.2647, 0.8094,\n", + " -0.7743, -0.6489, -0.7191, -0.8755, 0.0627, 0.2727, -0.2098, -0.2858,\n", + " 0.5370, 0.2652, 0.0438, -0.0561, 0.0791, 0.9227, 0.6752, 0.4490,\n", + " 0.0905, 0.2289, 0.0722, -1.0904, 0.4436, 1.3761, 0.8681, 0.4278,\n", + " 0.2518, 0.2327, 1.0517, -0.1395, 0.8233, 0.7181, -0.2265, 0.0658,\n", + " -0.2995, -0.5243, 0.6374]], device='cuda:0')\n", + "Prediction Sample: tensor([[-1.9951e-01, -2.2707e-01, -4.4240e-02, -1.3764e-01, -4.0764e-02,\n", + " 8.7965e-02, 1.5041e-01, 2.2968e-01, 1.5007e-01, 1.8988e-01,\n", + " 1.7111e-01, -1.5736e-01, -1.7511e-01, -2.4158e-01, -1.4994e-01,\n", + " -2.4376e-01, -1.9160e-01, -6.1185e-02, -6.3551e-02, -5.5680e-02,\n", + " -6.0931e-02, -1.3052e-04, -4.3572e-02, -2.3967e-02, 4.0693e-02,\n", + " 4.7307e-02, 2.4791e-02, -1.1419e-01, -1.6131e-01, -1.9846e-01,\n", + " -2.4233e-01, -1.1821e-01, -2.4576e-01, -2.4161e-01, -1.0814e-01,\n", + " -1.2685e-01, -3.1351e-02, 5.4483e-02, 4.8190e-02, 2.6546e-01,\n", + " 2.8366e-01, 3.0132e-01, 2.1801e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003942765761166811\n", + "Grad encoder.fc1.bias: 0.00028660098905675113\n", + "Grad encoder.encoder.0.weight: 0.00015282296226359904\n", + "Grad encoder.encoder.0.bias: 0.0003806836321018636\n", + "Grad encoder.encoder.2.weight: 0.00010263350850436836\n", + "Grad encoder.encoder.2.bias: 0.00044308931683190167\n", + "Grad encoder.encoder.4.weight: 0.00021025753812864423\n", + "Grad encoder.encoder.4.bias: 0.0012786774896085262\n", + "Grad decoder.fc1.0.weight: 6.321355613181368e-05\n", + "Grad decoder.fc1.0.bias: 0.0005145996110513806\n", + "Grad decoder.fc1.2.weight: 6.923784530954435e-05\n", + "Grad decoder.fc1.2.bias: 0.0007956293411552906\n", + "Grad decoder.fc1.4.weight: 6.51994050713256e-05\n", + "Grad decoder.fc1.4.bias: 0.0009110807441174984\n", + "Grad decoder.fc2.weight: 0.00011804249515989795\n", + "Grad decoder.fc2.bias: 0.0023538144305348396\n", + "Grad _memory_unit.weight_ih_l0: 9.711973689263687e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.2904768381267786e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.8661879696301185e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.5643663472437765e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.167603275272995e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.8967507609631866e-05\n", + "Data X Sample: tensor([[-0.0032, 0.0073, 0.0015, 0.0109, -0.0034, 0.0250, 0.0139, 0.0099,\n", + " 0.0220, 0.0095, 0.0286, -0.0019, -0.0022, 0.0164, 0.0000, 0.0109,\n", + " -0.0676, -0.0696, -0.0971, -0.0967, -0.1031, -0.0704, -0.0868, -0.0840,\n", + " -0.0694, -0.1515, -0.1225, -0.2651, -0.0382, -0.0197, -0.0385, -0.0359,\n", + " -0.0154, -0.0389, 0.0074, 0.0268, -0.0020, 0.0027, 0.0380, 0.0113,\n", + " 0.0382, 0.0060, -0.0101, 0.0086, -0.0198, 0.0114, -0.0476, -0.0235]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.1600, 1.0805, 0.1507, -0.2474, -0.5991, -1.9280, -1.0442, -1.2462,\n", + " -0.7246, -0.3896, -0.5847, 0.5985, 0.5064, 0.3742, -0.3297, -0.3780,\n", + " 1.2956, -0.0069, 1.8112, 0.3276, 0.3945, -0.0761, -0.3347, -0.5229,\n", + " -1.3975, -1.7956, 0.2508, 0.0556, 0.2100, 0.8295, 1.0886, 0.2559,\n", + " -0.2943, 0.2307, 1.6810, -0.2867, 0.4497, 0.0000, 0.9794, -0.6297,\n", + " -0.6818, -0.4712, -0.4820]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.8331, 0.5624, 0.1034, 0.5795, 0.0317, -0.2892, -0.8086, -0.9744,\n", + " -0.5519, -0.5692, -0.5415, 0.4921, 0.3449, 0.5427, 0.4218, 0.4311,\n", + " 0.4326, 0.2243, 0.1763, 0.1529, 0.2143, 0.0663, 0.1407, 0.1532,\n", + " 0.0634, 0.0643, 0.1401, 0.2031, 0.6450, 0.6879, 0.6184, 0.4841,\n", + " 0.5465, 0.7201, 0.3741, 0.3048, -0.1398, 0.0511, 0.0029, -0.6533,\n", + " -0.5994, -0.5447, -0.4882]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002746462414506823\n", + "Grad encoder.fc1.bias: 0.0002805482654366642\n", + "Grad encoder.encoder.0.weight: 0.00010204940190305933\n", + "Grad encoder.encoder.0.bias: 0.00030822251574136317\n", + "Grad encoder.encoder.2.weight: 5.912330379942432e-05\n", + "Grad encoder.encoder.2.bias: 0.00029173947405070066\n", + "Grad encoder.encoder.4.weight: 0.00011155549145769328\n", + "Grad encoder.encoder.4.bias: 0.0007575418567284942\n", + "Grad decoder.fc1.0.weight: 3.7271722248988226e-05\n", + "Grad decoder.fc1.0.bias: 0.0003056181303691119\n", + "Grad decoder.fc1.2.weight: 3.998825923190452e-05\n", + "Grad decoder.fc1.2.bias: 0.00046797306276857853\n", + "Grad decoder.fc1.4.weight: 4.5793996832799166e-05\n", + "Grad decoder.fc1.4.bias: 0.0006544932257384062\n", + "Grad decoder.fc2.weight: 0.00011731658014468849\n", + "Grad decoder.fc2.bias: 0.0022804494947195053\n", + "Grad _memory_unit.weight_ih_l0: 4.737972631119192e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.1461359210661612e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.1222507964703254e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.2721959541959222e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.511847120942548e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.8659878807957284e-05\n", + "Data X Sample: tensor([[1.5860, 1.7507, 1.9714, 1.9788, 2.0677, 2.1849, 2.3295, 2.3708, 2.2799,\n", + " 2.3775, 2.3761, 2.3701, 2.3724, 2.2711, 2.2470, 2.3467, 2.2831, 2.3599,\n", + " 2.3190, 2.3972, 2.4634, 2.5260, 2.5520, 2.5462, 2.5825, 2.6694, 2.6160,\n", + " 2.6470, 2.4423, 2.4531, 2.5197, 2.3654, 2.1582, 1.3594, 1.8163, 1.7366,\n", + " 1.5732, 1.4974, 1.5846, 1.5462, 1.2695, 0.7548, 0.7134, 1.3548, 1.9504,\n", + " 1.9556, 1.2442, 1.9235]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.8018, 0.3940, 0.0249, -0.4706, -1.3253, -0.8619, -0.7337, -0.4271,\n", + " -0.6961, -0.5967, -0.5894, 0.8079, 0.2329, 1.0854, 1.8391, 1.1980,\n", + " 0.7293, 0.6050, 0.9759, 0.2175, 0.8778, -0.2660, -0.3118, 0.5679,\n", + " -0.8539, -0.6921, -0.3754, -0.4665, 0.6740, 0.9464, 0.8954, 1.1244,\n", + " 0.7102, 1.3725, -0.0589, -0.1326, 0.1767, -0.1310, -0.5988, -0.6593,\n", + " -0.3973, -0.3100, -0.0551]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4262, 0.3531, 0.0385, 0.3127, 0.1414, -0.0843, -0.3400, -0.4112,\n", + " -0.2109, -0.2460, -0.2811, 0.2334, 0.1833, 0.2982, 0.2623, 0.3098,\n", + " 0.2191, 0.1255, 0.1161, 0.1178, 0.0909, 0.0701, 0.1094, 0.0545,\n", + " 0.0514, 0.0727, 0.0011, 0.0043, 0.1894, 0.2532, 0.2292, 0.2007,\n", + " 0.2706, 0.3680, 0.1696, 0.1927, -0.0799, -0.0117, 0.0014, -0.2980,\n", + " -0.2749, -0.2795, -0.2733]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00023477475042454898\n", + "Grad encoder.fc1.bias: 0.0002727217215579003\n", + "Grad encoder.encoder.0.weight: 9.657027840148658e-05\n", + "Grad encoder.encoder.0.bias: 0.000511686026584357\n", + "Grad encoder.encoder.2.weight: 6.236741319298744e-05\n", + "Grad encoder.encoder.2.bias: 0.0006223107920959592\n", + "Grad encoder.encoder.4.weight: 0.00011738236935343593\n", + "Grad encoder.encoder.4.bias: 0.0020484509877860546\n", + "Grad decoder.fc1.0.weight: 5.940216942690313e-05\n", + "Grad decoder.fc1.0.bias: 0.0007609249441884458\n", + "Grad decoder.fc1.2.weight: 9.433726518182084e-05\n", + "Grad decoder.fc1.2.bias: 0.0012311077443882823\n", + "Grad decoder.fc1.4.weight: 7.649763574590907e-05\n", + "Grad decoder.fc1.4.bias: 0.0012061272282153368\n", + "Grad decoder.fc2.weight: 0.00013019649486523122\n", + "Grad decoder.fc2.bias: 0.001850923290476203\n", + "Grad _memory_unit.weight_ih_l0: 1.0401320650998969e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.70501680765301e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.474367597140372e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.808949026686605e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001755345001583919\n", + "Grad _memory_unit.bias_hh_l1: 9.093638800550252e-05\n", + "Data X Sample: tensor([[1.5658, 1.7551, 2.0466, 2.0444, 2.0814, 2.1907, 2.3064, 2.3339, 2.2823,\n", + " 2.4170, 2.3761, 2.4850, 2.3191, 2.3366, 2.2394, 2.3590, 2.2894, 2.2922,\n", + " 2.3892, 2.3656, 2.4438, 2.4678, 2.4026, 2.4374, 2.4436, 2.4813, 2.4455,\n", + " 2.4145, 2.2133, 2.1976, 2.0647, 1.9481, 1.6478, 1.0413, 1.5295, 1.5104,\n", + " 1.4375, 1.4497, 1.4008, 1.3420, 1.2791, 0.7090, 0.7902, 1.4007, 1.9147,\n", + " 2.0242, 1.3326, 1.9861]], device='cuda:0')\n", + "Data Y Sample: tensor([[-2.0471e-01, 5.5285e-01, 3.8464e-01, -8.3757e-01, -2.3791e-01,\n", + " 7.1910e-01, 5.6036e-01, -2.0594e-01, -1.7058e+00, -1.9366e-02,\n", + " -4.2285e-01, 3.2628e-01, -3.6904e-02, -7.2509e-01, 4.4746e-01,\n", + " 1.3198e-01, 3.7597e-01, -6.3624e-01, -1.0362e+00, 6.9045e-01,\n", + " -4.3217e-01, 5.0211e-01, -2.1878e-02, -9.0552e-01, 1.5620e-03,\n", + " 3.4467e-02, -1.0895e+00, -3.0282e-01, -7.8549e-01, -1.3225e-01,\n", + " -7.9907e-01, -3.8478e-01, 2.2267e-01, 5.8112e-01, -6.4787e-02,\n", + " 4.4292e-01, -7.5610e-01, -3.7102e-01, 3.8169e-02, -1.5324e-01,\n", + " -1.4902e-01, -3.4246e-01, -6.0201e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3108, 0.2608, 0.0395, 0.2150, 0.0829, -0.0581, -0.2651, -0.3098,\n", + " -0.1691, -0.1751, -0.2130, 0.1665, 0.1260, 0.2139, 0.1786, 0.2269,\n", + " 0.1515, 0.0910, 0.0779, 0.0835, 0.0583, 0.0451, 0.0635, 0.0425,\n", + " 0.0407, 0.0606, 0.0028, 0.0016, 0.1569, 0.1875, 0.1660, 0.1444,\n", + " 0.1904, 0.2596, 0.1289, 0.1230, -0.0485, 0.0030, -0.0151, -0.2038,\n", + " -0.1848, -0.1835, -0.1849]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00011211284436285496\n", + "Grad encoder.fc1.bias: 0.000859899097122252\n", + "Grad encoder.encoder.0.weight: 5.396572669269517e-05\n", + "Grad encoder.encoder.0.bias: 0.0006226818659342825\n", + "Grad encoder.encoder.2.weight: 4.420054756337777e-05\n", + "Grad encoder.encoder.2.bias: 0.0004858840547967702\n", + "Grad encoder.encoder.4.weight: 0.00010139392543351278\n", + "Grad encoder.encoder.4.bias: 0.0008248338708654046\n", + "Grad decoder.fc1.0.weight: 4.2909920011879876e-05\n", + "Grad decoder.fc1.0.bias: 0.0003125955699943006\n", + "Grad decoder.fc1.2.weight: 4.6965629735495895e-05\n", + "Grad decoder.fc1.2.bias: 0.0003214168827980757\n", + "Grad decoder.fc1.4.weight: 4.443843135959469e-05\n", + "Grad decoder.fc1.4.bias: 0.00044465920655056834\n", + "Grad decoder.fc2.weight: 0.00012881595466751605\n", + "Grad decoder.fc2.bias: 0.0018227332038804889\n", + "Grad _memory_unit.weight_ih_l0: 1.500086818850832e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.783803862868808e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.11862604576163e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.46705905435374e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.919115498429164e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.7809688112465665e-05\n", + "Data X Sample: tensor([[1.7048, 1.9503, 2.0571, 2.2390, 2.2572, 2.4736, 2.5205, 2.6192, 2.5484,\n", + " 2.7598, 2.7028, 2.7012, 2.5766, 2.5683, 2.6203, 2.6052, 2.4969, 2.5089,\n", + " 2.6122, 2.5943, 2.6597, 2.6561, 2.6797, 2.7275, 2.6876, 2.7477, 2.7519,\n", + " 2.7082, 2.5290, 2.6365, 2.3622, 2.3792, 2.2374, 1.4051, 1.8310, 1.7682,\n", + " 1.6951, 1.6061, 1.6417, 1.5320, 1.4222, 0.7906, 0.7498, 1.3634, 1.9543,\n", + " 2.0871, 1.4958, 2.1425]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.8715, 0.9304, -0.8972, 0.8355, -0.0067, 0.4296, -0.4539, -0.5755,\n", + " 0.0737, -0.5623, -0.5579, 1.2520, 0.5084, 0.1543, 1.7845, 0.8313,\n", + " 0.4026, 0.6093, 0.2650, 0.3555, -0.0052, 0.1434, 0.0855, -0.3137,\n", + " -0.1233, -0.3128, 0.3640, 0.3901, 0.3696, 0.6873, 0.2585, 1.0142,\n", + " 1.2475, 0.9395, 1.2202, 0.9590, -0.6348, 0.7314, 0.0109, -0.5141,\n", + " -0.5845, -0.3080, -0.4460]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4056, 0.3420, 0.0456, 0.2943, 0.1350, -0.0781, -0.3342, -0.3986,\n", + " -0.2162, -0.2361, -0.2815, 0.2247, 0.1738, 0.2871, 0.2480, 0.2933,\n", + " 0.2117, 0.1207, 0.1096, 0.1246, 0.0863, 0.0656, 0.0909, 0.0462,\n", + " 0.0455, 0.0639, 0.0025, 0.0060, 0.1849, 0.2539, 0.2288, 0.1882,\n", + " 0.2544, 0.3564, 0.1686, 0.1831, -0.0672, -0.0047, -0.0010, -0.2892,\n", + " -0.2536, -0.2627, -0.2583]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001752357929944992\n", + "Grad encoder.fc1.bias: 0.0012877718545496464\n", + "Grad encoder.encoder.0.weight: 7.279298006324098e-05\n", + "Grad encoder.encoder.0.bias: 0.0007617858937010169\n", + "Grad encoder.encoder.2.weight: 5.223073821980506e-05\n", + "Grad encoder.encoder.2.bias: 0.0006450179498642683\n", + "Grad encoder.encoder.4.weight: 0.00012827070895582438\n", + "Grad encoder.encoder.4.bias: 0.0012347642332315445\n", + "Grad decoder.fc1.0.weight: 6.300378299783915e-05\n", + "Grad decoder.fc1.0.bias: 0.0004842256021220237\n", + "Grad decoder.fc1.2.weight: 8.945177251007408e-05\n", + "Grad decoder.fc1.2.bias: 0.0008409913862124085\n", + "Grad decoder.fc1.4.weight: 7.616182847414166e-05\n", + "Grad decoder.fc1.4.bias: 0.0008886135183274746\n", + "Grad decoder.fc2.weight: 0.00017438734357710928\n", + "Grad decoder.fc2.bias: 0.0019889504183083773\n", + "Grad _memory_unit.weight_ih_l0: 2.3852941012592055e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.330315515398979e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.097892426420003e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.935751793615054e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001332965330220759\n", + "Grad _memory_unit.bias_hh_l1: 7.224697765195742e-05\n", + "Data X Sample: tensor([[1.2338, 1.3254, 1.4560, 1.6049, 1.7109, 1.8165, 1.9489, 1.9406, 3.4101,\n", + " 3.9588, 3.8480, 3.8541, 3.6507, 3.3944, 3.4424, 3.3286, 3.2910, 3.2807,\n", + " 3.2152, 3.2136, 3.2584, 3.1782, 2.8146, 2.8058, 2.7326, 2.8339, 2.8611,\n", + " 2.9039, 2.8031, 2.9509, 3.0761, 3.0839, 3.1813, 2.3251, 3.8581, 4.3488,\n", + " 4.6094, 4.8791, 5.3243, 5.3310, 0.8782, 0.5078, 0.5052, 0.9357, 1.4707,\n", + " 1.4581, 1.0130, 1.5091]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 4.1528e-01, 3.9203e-01, 9.4949e-01, 8.8019e-01, 3.0617e-01,\n", + " 2.0464e-01, -1.4851e-01, 2.4215e-01, 3.5543e-01, 2.6966e-01,\n", + " 1.8552e-01, 5.7935e-01, -4.1769e-02, 9.5837e-01, 1.3377e+00,\n", + " 1.4245e-01, 6.6032e-01, 4.9315e-02, -7.9925e-01, 3.5537e-01,\n", + " -6.4295e-01, 6.7876e-01, 9.8133e-01, -1.5182e-01, -1.2354e+00,\n", + " -3.5205e-01, -6.7123e-01, 3.6568e-01, -6.1089e-01, 8.4039e-01,\n", + " -3.1410e-01, -4.8779e-01, -3.6324e-01, -1.9100e-01, 4.1300e-01,\n", + " 3.8640e-01, -2.2995e-01, -6.4556e-01, 1.2679e-03, -1.0744e-01,\n", + " -8.9604e-01, -4.3546e-02, -6.1027e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1862, -0.2188, -0.0599, -0.1275, 0.0033, 0.1185, 0.1561, 0.2150,\n", + " 0.1686, 0.2143, 0.1190, -0.1434, -0.1718, -0.2304, -0.1491, -0.2413,\n", + " -0.1668, -0.0560, -0.0544, -0.0343, -0.0650, 0.0119, -0.0522, -0.0378,\n", + " 0.0618, 0.0530, 0.0004, -0.1154, -0.1663, -0.2267, -0.2233, -0.1280,\n", + " -0.2562, -0.2261, -0.0932, -0.0806, -0.0192, 0.0461, 0.0421, 0.2204,\n", + " 0.2530, 0.2853, 0.2265]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00016313366359099746\n", + "Grad encoder.fc1.bias: 0.0009657049085944891\n", + "Grad encoder.encoder.0.weight: 7.037707837298512e-05\n", + "Grad encoder.encoder.0.bias: 0.0006930987001396716\n", + "Grad encoder.encoder.2.weight: 5.1573009841376916e-05\n", + "Grad encoder.encoder.2.bias: 0.0005351031431928277\n", + "Grad encoder.encoder.4.weight: 0.00011046922008972615\n", + "Grad encoder.encoder.4.bias: 0.0008967160247266293\n", + "Grad decoder.fc1.0.weight: 4.497321424423717e-05\n", + "Grad decoder.fc1.0.bias: 0.0003688816796056926\n", + "Grad decoder.fc1.2.weight: 4.7534878831356764e-05\n", + "Grad decoder.fc1.2.bias: 0.0005048281163908541\n", + "Grad decoder.fc1.4.weight: 4.957609053235501e-05\n", + "Grad decoder.fc1.4.bias: 0.0006266765994951129\n", + "Grad decoder.fc2.weight: 0.00012690246512647718\n", + "Grad decoder.fc2.bias: 0.0021535141859203577\n", + "Grad _memory_unit.weight_ih_l0: 7.989973710209597e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.795044878846966e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.516570020816289e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.345034540165216e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.984054875327274e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.677343531511724e-05\n", + "Data X Sample: tensor([[2.7996, 2.8052, 2.2089, 2.1231, 2.3290, 2.4427, 3.7330, 4.2390, 4.2351,\n", + " 4.1989, 4.2636, 4.1151, 4.0191, 3.9915, 3.7148, 3.7143, 3.5819, 3.7507,\n", + " 3.6716, 3.5037, 3.4890, 3.3190, 3.0243, 2.9337, 2.8922, 2.8626, 2.6933,\n", + " 2.8224, 2.8378, 2.9116, 3.0166, 3.0866, 3.2627, 2.4510, 4.0542, 4.3853,\n", + " 4.7254, 5.1494, 5.7553, 5.7083, 1.8995, 0.9181, 0.7963, 1.3405, 1.9107,\n", + " 2.0986, 1.2850, 1.9783]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3943, 0.6748, 0.9124, 0.0060, 0.1480, 0.1408, -0.0502, -0.2632,\n", + " -0.6720, 0.2003, -0.2416, -5.7421, -0.6990, -0.3040, -0.1287, 0.2512,\n", + " -0.5880, 1.8234, 0.3643, 0.5374, -0.0550, 1.3238, -0.1039, -0.1869,\n", + " -0.6887, -0.5554, 0.3612, 1.0770, -0.0938, 0.3634, 0.2193, -0.3652,\n", + " 0.2821, -0.8665, -0.0167, -0.4109, -0.5075, 0.2511, 0.1391, -0.4817,\n", + " -0.2682, -0.1181, 0.2798]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1814, -0.2101, -0.0726, -0.1352, -0.0599, 0.0703, 0.1222, 0.2073,\n", + " 0.1343, 0.1795, 0.1281, -0.1211, -0.1479, -0.2022, -0.1383, -0.2202,\n", + " -0.1456, -0.0655, -0.0559, -0.0303, -0.0605, 0.0327, -0.0540, -0.0390,\n", + " 0.0614, 0.0581, 0.0206, -0.0895, -0.1296, -0.1748, -0.1985, -0.1304,\n", + " -0.1979, -0.1877, -0.0766, -0.0932, -0.0314, 0.0260, 0.0284, 0.2226,\n", + " 0.2447, 0.2785, 0.2095]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00015617741155438125\n", + "Grad encoder.fc1.bias: 0.0001712151279207319\n", + "Grad encoder.encoder.0.weight: 6.0998885601293296e-05\n", + "Grad encoder.encoder.0.bias: 0.00014632126840297133\n", + "Grad encoder.encoder.2.weight: 4.6723078412469476e-05\n", + "Grad encoder.encoder.2.bias: 0.00018589425599202514\n", + "Grad encoder.encoder.4.weight: 0.00010395232675364241\n", + "Grad encoder.encoder.4.bias: 0.000504167634062469\n", + "Grad decoder.fc1.0.weight: 3.30862239934504e-05\n", + "Grad decoder.fc1.0.bias: 0.0002344065287616104\n", + "Grad decoder.fc1.2.weight: 3.620946881710552e-05\n", + "Grad decoder.fc1.2.bias: 0.0004011516575701535\n", + "Grad decoder.fc1.4.weight: 4.249811900081113e-05\n", + "Grad decoder.fc1.4.bias: 0.0006034424877725542\n", + "Grad decoder.fc2.weight: 0.00011355392780387774\n", + "Grad decoder.fc2.bias: 0.0019206301076337695\n", + "Grad _memory_unit.weight_ih_l0: 5.6479175327694975e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.758066329988651e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.4152446965454146e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.0466169391729636e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.977035471005365e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.1274164939532056e-05\n", + "Data X Sample: tensor([[1.2995, 1.5366, 1.7671, 2.0160, 1.9687, 1.9742, 1.9058, 1.9264, 3.4272,\n", + " 4.2810, 4.3175, 4.2475, 3.9880, 3.8988, 3.9039, 3.4052, 3.3963, 3.5941,\n", + " 3.5869, 3.6320, 3.5037, 3.3940, 3.0436, 3.0005, 2.9635, 3.0638, 3.0263,\n", + " 2.9937, 3.2263, 3.2686, 3.3805, 3.4652, 3.9117, 2.7965, 4.5861, 5.0007,\n", + " 5.1600, 5.4966, 6.0088, 5.7906, 1.0595, 0.5974, 0.6649, 1.1108, 1.6451,\n", + " 1.9270, 1.2238, 1.7437]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4088, -1.1050, 1.0531, -0.8527, -0.3165, 0.5890, 0.9390, 0.6722,\n", + " 0.2738, 0.6299, 1.0500, 0.4590, -0.6746, -0.6583, -0.7789, -1.4520,\n", + " -0.7150, -0.0491, -0.2593, -0.6512, 0.0081, 0.6159, 1.8098, 0.5366,\n", + " 1.9975, 1.4645, 0.8799, -0.5578, -0.4771, -0.5127, -0.1192, 0.2822,\n", + " -0.7838, -1.1468, 0.3752, -0.8222, -0.0317, -0.6596, 2.5716, 0.7028,\n", + " 0.8231, 0.8028, 0.6095]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1844, -0.2034, -0.0602, -0.1244, -0.0085, 0.1072, 0.1407, 0.2166,\n", + " 0.1477, 0.2016, 0.1221, -0.1350, -0.1680, -0.2151, -0.1439, -0.2240,\n", + " -0.1521, -0.0500, -0.0629, -0.0214, -0.0586, 0.0226, -0.0501, -0.0351,\n", + " 0.0569, 0.0628, 0.0046, -0.1035, -0.1565, -0.2027, -0.2114, -0.1357,\n", + " -0.2417, -0.2119, -0.0929, -0.0937, -0.0274, 0.0392, 0.0408, 0.2080,\n", + " 0.2429, 0.2830, 0.2196]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 7.674061635043472e-05\n", + "Grad encoder.fc1.bias: 0.00033173520932905376\n", + "Grad encoder.encoder.0.weight: 2.6403147785458714e-05\n", + "Grad encoder.encoder.0.bias: 0.00031425172346644104\n", + "Grad encoder.encoder.2.weight: 2.319912164239213e-05\n", + "Grad encoder.encoder.2.bias: 0.00044109561713412404\n", + "Grad encoder.encoder.4.weight: 6.727920845150948e-05\n", + "Grad encoder.encoder.4.bias: 0.0020970995537936687\n", + "Grad decoder.fc1.0.weight: 4.649459879146889e-05\n", + "Grad decoder.fc1.0.bias: 0.0007341485470533371\n", + "Grad decoder.fc1.2.weight: 5.899063035030849e-05\n", + "Grad decoder.fc1.2.bias: 0.0006871802033856511\n", + "Grad decoder.fc1.4.weight: 4.380748941912316e-05\n", + "Grad decoder.fc1.4.bias: 0.0006042274762876332\n", + "Grad decoder.fc2.weight: 0.00010315131657989696\n", + "Grad decoder.fc2.bias: 0.0017527672462165356\n", + "Grad _memory_unit.weight_ih_l0: 7.862056918384042e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00011339782940922305\n", + "Grad _memory_unit.bias_hh_l0: 5.850975139765069e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.639640221488662e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001916655310196802\n", + "Grad _memory_unit.bias_hh_l1: 9.96147864498198e-05\n", + "Data X Sample: tensor([[2.6181, 2.9509, 3.2968, 3.4110, 3.5754, 3.6699, 3.9318, 3.8699, 3.9740,\n", + " 3.8608, 3.9019, 3.8483, 3.8837, 3.6971, 3.5660, 3.4490, 3.3570, 3.5109,\n", + " 3.4692, 3.3326, 3.3124, 3.2318, 2.9592, 2.7771, 2.7946, 2.7764, 2.6853,\n", + " 2.8509, 2.7060, 2.8657, 2.8171, 2.7992, 2.9679, 2.1603, 3.6351, 4.1348,\n", + " 4.2515, 4.7333, 5.1975, 5.0728, 1.8422, 1.1610, 1.2005, 1.9806, 3.1000,\n", + " 3.3280, 2.1621, 3.0026]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1599, -0.4029, -1.4838, -0.0514, -0.4615, -0.3128, 0.1678, -0.0977,\n", + " 0.5159, 0.1536, 0.2731, -0.3627, 0.0531, 0.0362, -0.2776, -0.5428,\n", + " 0.0106, 0.1825, 1.6741, 0.7072, -0.0177, -3.1102, 0.0795, 0.7766,\n", + " -0.7481, 0.4699, 0.0410, 0.6604, 0.2131, -0.1773, 0.2703, -0.2259,\n", + " 0.2543, -0.9363, -0.1257, 0.6824, 0.9536, 0.0383, -0.5970, 0.4923,\n", + " 0.6439, 0.0268, 0.7162]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1860, -0.1920, -0.0702, -0.1647, -0.1170, 0.0141, 0.0881, 0.1897,\n", + " 0.0981, 0.1567, 0.1353, -0.0971, -0.1274, -0.1747, -0.1215, -0.1905,\n", + " -0.1450, -0.0770, -0.0551, -0.0215, -0.0522, 0.0365, -0.0468, -0.0294,\n", + " 0.0421, 0.0524, 0.0582, -0.0562, -0.0799, -0.1250, -0.1637, -0.1279,\n", + " -0.1439, -0.1659, -0.0732, -0.1068, -0.0308, 0.0194, 0.0103, 0.2248,\n", + " 0.2432, 0.2667, 0.2051]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00012593202700372785\n", + "Grad encoder.fc1.bias: 0.0003804350271821022\n", + "Grad encoder.encoder.0.weight: 4.919192724628374e-05\n", + "Grad encoder.encoder.0.bias: 0.0002850669843610376\n", + "Grad encoder.encoder.2.weight: 4.876857565250248e-05\n", + "Grad encoder.encoder.2.bias: 0.00029320293106138706\n", + "Grad encoder.encoder.4.weight: 0.00012040560250170529\n", + "Grad encoder.encoder.4.bias: 0.0006658904603682458\n", + "Grad decoder.fc1.0.weight: 5.0903967348858714e-05\n", + "Grad decoder.fc1.0.bias: 0.0003445870243012905\n", + "Grad decoder.fc1.2.weight: 5.5004620662657544e-05\n", + "Grad decoder.fc1.2.bias: 0.0005698880995623767\n", + "Grad decoder.fc1.4.weight: 4.385408101370558e-05\n", + "Grad decoder.fc1.4.bias: 0.0005762110813520849\n", + "Grad decoder.fc2.weight: 0.0001459693448850885\n", + "Grad decoder.fc2.bias: 0.002060530474409461\n", + "Grad _memory_unit.weight_ih_l0: 8.912938028515782e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.2234023567289114e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.264893555548042e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.004598733648891e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.183778507169336e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.8061603845562786e-05\n", + "Data X Sample: tensor([[1.6591, 1.8847, 2.0766, 2.2084, 2.3460, 2.3557, 2.4358, 2.5667, 2.6924,\n", + " 2.6776, 2.6584, 2.6233, 2.6298, 2.6010, 2.4286, 2.4602, 2.4309, 2.4934,\n", + " 2.5173, 2.5497, 2.4904, 2.5735, 2.5303, 2.4469, 2.4511, 2.5962, 2.5068,\n", + " 2.5817, 2.4145, 2.2893, 2.3447, 2.3903, 1.9690, 1.2976, 1.7550, 1.7172,\n", + " 1.6204, 1.5822, 1.5783, 1.4696, 1.2791, 0.7528, 0.7882, 1.3003, 2.1288,\n", + " 2.2473, 1.6589, 2.0955]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0827, 0.3530, -0.6742, 0.4220, 0.7073, -0.7015, 0.0572, -0.0885,\n", + " -0.8931, -0.3852, -0.1790, 0.7719, 0.3759, -0.1212, 0.5242, 1.0168,\n", + " 0.4534, 0.3813, 0.4039, 0.0684, 0.1585, 0.0079, 0.3467, -0.0904,\n", + " -0.0024, -0.3054, -0.7903, -0.1178, -0.5532, -0.3637, -0.6941, 0.3787,\n", + " 0.2351, -0.2217, 1.0426, 0.6598, -0.5893, 0.1123, 0.9794, -0.3188,\n", + " -0.1248, -0.3514, -0.5628]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 4.6022e-01, 4.0418e-01, 7.5851e-02, 3.3694e-01, 1.8031e-01,\n", + " -7.5501e-02, -3.9707e-01, -4.4907e-01, -2.7218e-01, -2.9070e-01,\n", + " -3.3903e-01, 2.5396e-01, 2.0846e-01, 3.2545e-01, 2.8652e-01,\n", + " 3.4916e-01, 2.5830e-01, 1.2088e-01, 1.1133e-01, 1.7664e-01,\n", + " 9.6117e-02, 8.2320e-02, 8.2567e-02, 4.2916e-02, 3.8964e-02,\n", + " 4.1311e-02, 2.2563e-04, 6.9248e-03, 2.0561e-01, 3.2404e-01,\n", + " 2.7020e-01, 2.0281e-01, 2.9427e-01, 4.0802e-01, 1.8363e-01,\n", + " 2.1636e-01, -6.2203e-02, -1.2640e-02, 7.8023e-03, -3.4679e-01,\n", + " -2.7977e-01, -3.0523e-01, -3.0861e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000198719761101529\n", + "Grad encoder.fc1.bias: 0.00022508419351652265\n", + "Grad encoder.encoder.0.weight: 7.486958929803222e-05\n", + "Grad encoder.encoder.0.bias: 0.0002758558257482946\n", + "Grad encoder.encoder.2.weight: 7.096190529409796e-05\n", + "Grad encoder.encoder.2.bias: 0.00041888616397045553\n", + "Grad encoder.encoder.4.weight: 0.00014619901776313782\n", + "Grad encoder.encoder.4.bias: 0.0013736285036429763\n", + "Grad decoder.fc1.0.weight: 5.713117934647016e-05\n", + "Grad decoder.fc1.0.bias: 0.000631254049949348\n", + "Grad decoder.fc1.2.weight: 8.894770871847868e-05\n", + "Grad decoder.fc1.2.bias: 0.0009823654545471072\n", + "Grad decoder.fc1.4.weight: 6.999984179856256e-05\n", + "Grad decoder.fc1.4.bias: 0.0009808560134842992\n", + "Grad decoder.fc2.weight: 0.0001352448161924258\n", + "Grad decoder.fc2.bias: 0.002396482275798917\n", + "Grad _memory_unit.weight_ih_l0: 9.81223456619773e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.524729542434216e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.5125689464621246e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.075698820495745e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011153148807352409\n", + "Grad _memory_unit.bias_hh_l1: 5.907830927753821e-05\n", + "Data X Sample: tensor([[1.2794, 1.4667, 1.6529, 1.7077, 1.7723, 1.8504, 1.9320, 2.0528, 1.8771,\n", + " 3.6270, 4.2223, 4.2864, 4.0324, 3.7298, 3.6416, 3.5926, 3.5300, 3.4045,\n", + " 3.4796, 3.3624, 3.3492, 3.4354, 3.0845, 2.9108, 2.8471, 2.8339, 2.8345,\n", + " 2.7653, 2.7094, 2.8854, 3.1111, 3.0314, 3.3859, 2.5402, 4.2699, 4.6942,\n", + " 4.8887, 5.3482, 5.9518, 5.6459, 1.0547, 0.5895, 0.6124, 1.0276, 1.4231,\n", + " 1.7269, 1.0606, 1.5091]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4904, 0.5777, 0.2321, 0.4712, 0.4851, -0.0972, 0.4532, 0.2296,\n", + " -0.0766, 0.2507, -0.1815, 0.8030, 0.3641, -0.4823, -0.5685, 0.6169,\n", + " 0.3626, 0.8625, -0.5789, 0.0804, 0.3045, -2.1856, 0.0389, -0.3531,\n", + " 1.2898, 0.1934, -0.2545, -0.4023, -0.4193, -0.2331, -0.3668, 0.9450,\n", + " 0.2912, 0.5464, -0.4655, 0.9851, -0.7353, -0.8356, -0.6018, 0.3327,\n", + " 0.4738, -0.0938, -0.3601]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1828, -0.1907, -0.0599, -0.1211, -0.0062, 0.1085, 0.1371, 0.2145,\n", + " 0.1495, 0.1978, 0.1255, -0.1104, -0.1554, -0.1970, -0.1392, -0.2219,\n", + " -0.1409, -0.0503, -0.0441, -0.0231, -0.0664, 0.0367, -0.0429, -0.0386,\n", + " 0.0433, 0.0582, -0.0093, -0.0977, -0.1639, -0.1905, -0.1901, -0.1392,\n", + " -0.2281, -0.2014, -0.1027, -0.1029, -0.0138, 0.0272, 0.0257, 0.2061,\n", + " 0.2481, 0.2703, 0.2211]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00021623091015499085\n", + "Grad encoder.fc1.bias: 0.0007857728051021695\n", + "Grad encoder.encoder.0.weight: 8.378004713449627e-05\n", + "Grad encoder.encoder.0.bias: 0.0005428490694612265\n", + "Grad encoder.encoder.2.weight: 6.20502614765428e-05\n", + "Grad encoder.encoder.2.bias: 0.00044914433965459466\n", + "Grad encoder.encoder.4.weight: 0.00013478792971000075\n", + "Grad encoder.encoder.4.bias: 0.0010251663625240326\n", + "Grad decoder.fc1.0.weight: 5.2369745390024036e-05\n", + "Grad decoder.fc1.0.bias: 0.00041724054608494043\n", + "Grad decoder.fc1.2.weight: 7.28793820599094e-05\n", + "Grad decoder.fc1.2.bias: 0.0007456464227288961\n", + "Grad decoder.fc1.4.weight: 5.500916813616641e-05\n", + "Grad decoder.fc1.4.bias: 0.0007237840909510851\n", + "Grad decoder.fc2.weight: 0.00011653800902422518\n", + "Grad decoder.fc2.bias: 0.0020102562848478556\n", + "Grad _memory_unit.weight_ih_l0: 1.1875065865751822e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.370926373871043e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.8806200134567916e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.674372914654668e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.548624464310706e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.477086986298673e-05\n", + "Data X Sample: tensor([[1.8894, 1.6881, 2.1352, 2.1341, 2.1121, 1.9432, 1.9335, 3.6598, 4.1033,\n", + " 4.2921, 4.3207, 4.3351, 4.1389, 4.0788, 3.8888, 3.7485, 3.6511, 3.6269,\n", + " 3.6014, 3.4963, 3.3271, 3.3114, 2.9640, 2.8726, 2.6932, 2.7895, 2.7945,\n", + " 2.9284, 2.8898, 3.0295, 2.9816, 3.0756, 3.4013, 2.5379, 4.2454, 4.6212,\n", + " 4.9437, 5.3138, 6.0405, 5.8218, 1.1932, 0.7149, 0.7518, 1.3347, 2.0336,\n", + " 2.1272, 1.3462, 1.8532]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2848, -0.0363, 0.7029, -0.3182, -0.2406, -0.5843, -1.3909, -1.3708,\n", + " -0.7571, -1.0452, -0.3236, -0.2472, 1.3954, 0.5689, -0.8746, -0.0624,\n", + " 1.4736, -0.3192, -0.9995, 0.7801, 1.0860, -0.8115, 0.2626, -1.6665,\n", + " 0.0406, 0.5228, 0.4338, -0.4043, 1.0948, 1.3829, 1.2883, -0.1817,\n", + " -0.0955, 0.0093, 0.6692, -0.1792, 0.7246, 0.2862, -0.5640, 0.3058,\n", + " 0.2576, 0.0411, 0.7500]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1897, -0.1973, -0.0626, -0.1202, 0.0018, 0.1151, 0.1422, 0.2160,\n", + " 0.1635, 0.2064, 0.1237, -0.1001, -0.1551, -0.1982, -0.1403, -0.2325,\n", + " -0.1376, -0.0550, -0.0334, -0.0279, -0.0762, 0.0406, -0.0421, -0.0440,\n", + " 0.0443, 0.0526, -0.0187, -0.1014, -0.1730, -0.2009, -0.1873, -0.1405,\n", + " -0.2306, -0.2024, -0.1034, -0.0995, -0.0038, 0.0219, 0.0183, 0.2133,\n", + " 0.2562, 0.2680, 0.2299]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00039600778836756945\n", + "Grad encoder.fc1.bias: 0.0005934549844823778\n", + "Grad encoder.encoder.0.weight: 0.0001356204302283004\n", + "Grad encoder.encoder.0.bias: 0.0004709837376140058\n", + "Grad encoder.encoder.2.weight: 8.347121183760464e-05\n", + "Grad encoder.encoder.2.bias: 0.00042938938713632524\n", + "Grad encoder.encoder.4.weight: 0.00015708740102127194\n", + "Grad encoder.encoder.4.bias: 0.0010095376055687666\n", + "Grad decoder.fc1.0.weight: 4.5106728066457435e-05\n", + "Grad decoder.fc1.0.bias: 0.00040181796066462994\n", + "Grad decoder.fc1.2.weight: 3.690861922223121e-05\n", + "Grad decoder.fc1.2.bias: 0.000369453540770337\n", + "Grad decoder.fc1.4.weight: 3.7280718970578164e-05\n", + "Grad decoder.fc1.4.bias: 0.0005294152069836855\n", + "Grad decoder.fc2.weight: 0.00011251810792600736\n", + "Grad decoder.fc2.bias: 0.001978738699108362\n", + "Grad _memory_unit.weight_ih_l0: 9.151131052931305e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.0824419556884095e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.118811971740797e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.052953954669647e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.083616168936715e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.635685036191717e-05\n", + "Data X Sample: tensor([[1.4523, 1.7405, 1.9008, 1.9919, 2.2248, 2.2629, 2.5344, 2.4900, 2.6436,\n", + " 2.5449, 2.6457, 2.6720, 2.6742, 2.5983, 2.5597, 2.4766, 2.4073, 2.5185,\n", + " 2.5296, 2.5683, 2.5051, 2.4035, 2.3110, 2.2370, 2.3460, 2.3559, 2.3043,\n", + " 2.3003, 2.2203, 2.2598, 2.2607, 2.2134, 2.1736, 1.4486, 1.9070, 1.7415,\n", + " 1.6361, 1.5371, 1.5719, 1.5945, 1.2600, 0.6393, 0.6811, 1.2630, 1.6650,\n", + " 1.9442, 1.3870, 1.8219]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0793, 0.7092, 1.0430, 0.6146, 0.6524, 0.7226, -0.0998, -0.1102,\n", + " 0.8204, 0.8678, 0.8343, 1.5152, -1.3522, 0.3142, -0.4974, -0.1430,\n", + " 0.8961, 0.7146, -0.3777, -0.0042, 0.0388, 0.1107, -0.3254, 0.5418,\n", + " -0.3083, -0.1123, -1.1763, 0.5182, 0.5890, -1.5698, -0.6904, -0.2133,\n", + " -0.1546, 0.1805, -0.4901, -1.4636, 0.8233, -0.7806, -0.4768, 0.4652,\n", + " 0.8849, 0.2741, -0.2774]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4284, 0.3814, 0.0798, 0.3029, 0.1788, -0.0511, -0.3660, -0.4026,\n", + " -0.2455, -0.2688, -0.3080, 0.2303, 0.1952, 0.2913, 0.2530, 0.3462,\n", + " 0.2444, 0.0934, 0.1032, 0.1755, 0.0839, 0.0804, 0.0782, 0.0353,\n", + " 0.0382, 0.0315, -0.0197, -0.0025, 0.1709, 0.2928, 0.2348, 0.1804,\n", + " 0.2749, 0.3513, 0.1610, 0.2049, -0.0400, -0.0190, 0.0052, -0.3114,\n", + " -0.2472, -0.2729, -0.2806]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007647468009963632\n", + "Grad encoder.fc1.bias: 0.000572955294046551\n", + "Grad encoder.encoder.0.weight: 0.0002799526846501976\n", + "Grad encoder.encoder.0.bias: 0.0006778957322239876\n", + "Grad encoder.encoder.2.weight: 0.00018293879111297429\n", + "Grad encoder.encoder.2.bias: 0.0006520127062685788\n", + "Grad encoder.encoder.4.weight: 0.00034515210427343845\n", + "Grad encoder.encoder.4.bias: 0.0017806482501327991\n", + "Grad decoder.fc1.0.weight: 8.451029862044379e-05\n", + "Grad decoder.fc1.0.bias: 0.0005677171284332871\n", + "Grad decoder.fc1.2.weight: 8.45592949190177e-05\n", + "Grad decoder.fc1.2.bias: 0.0012372599449008703\n", + "Grad decoder.fc1.4.weight: 7.572799222543836e-05\n", + "Grad decoder.fc1.4.bias: 0.0013833472039550543\n", + "Grad decoder.fc2.weight: 0.00013737833069171757\n", + "Grad decoder.fc2.bias: 0.003066959325224161\n", + "Grad _memory_unit.weight_ih_l0: 1.1310328773106448e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.9090977730229497e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.124312257161364e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.405808901239652e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.196085011353716e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.764961340697482e-05\n", + "Data X Sample: tensor([[1.3388, 1.4274, 1.5747, 1.6946, 1.7962, 1.9388, 2.0768, 2.0868, 3.4101,\n", + " 4.0978, 4.2541, 4.1579, 3.9925, 3.9397, 3.8409, 3.8962, 3.7517, 3.7062,\n", + " 3.6117, 3.6209, 3.4890, 3.5287, 3.0725, 2.8306, 2.8415, 2.9541, 2.9650,\n", + " 3.0181, 2.8968, 3.1867, 3.2475, 3.2773, 3.6719, 2.8332, 4.5861, 4.9593,\n", + " 5.1522, 5.4675, 6.0785, 5.8303, 1.0118, 0.5954, 0.5618, 1.0276, 1.4549,\n", + " 1.7555, 1.1490, 1.6342]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.1923, -0.4200, -0.4384, 0.6535, 0.8454, -0.3527, 0.3841, 0.4910,\n", + " 1.0830, 0.4677, 0.5853, -1.1039, 0.0255, 0.3955, -0.4493, 0.0466,\n", + " -0.0357, 0.8050, 0.9026, 0.1089, 0.2539, 0.3830, -0.9267, 0.5621,\n", + " 0.0581, 1.4329, -1.6206, -0.4400, -0.2547, 0.4265, -0.3537, 1.2781,\n", + " -1.0971, -0.4676, -0.3688, 0.6241, -0.5002, -0.6173, 0.9834, 0.5754,\n", + " 0.3007, 0.6563, -0.1001]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2218, -0.2197, -0.0538, -0.1049, 0.0847, 0.1843, 0.1831, 0.2386,\n", + " 0.2236, 0.2687, 0.1199, -0.1030, -0.1907, -0.2296, -0.1523, -0.2757,\n", + " -0.1508, -0.0539, -0.0193, -0.0380, -0.1034, 0.0284, -0.0346, -0.0562,\n", + " 0.0391, 0.0392, -0.0639, -0.1376, -0.2348, -0.2719, -0.2075, -0.1472,\n", + " -0.2975, -0.2456, -0.1298, -0.0970, 0.0277, 0.0309, 0.0150, 0.2310,\n", + " 0.2854, 0.2723, 0.2676]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00029051100136712193\n", + "Grad encoder.fc1.bias: 0.0008251711842603981\n", + "Grad encoder.encoder.0.weight: 7.531113806180656e-05\n", + "Grad encoder.encoder.0.bias: 0.0006416337564587593\n", + "Grad encoder.encoder.2.weight: 6.773835775675252e-05\n", + "Grad encoder.encoder.2.bias: 0.0005825999542139471\n", + "Grad encoder.encoder.4.weight: 0.0001859598996816203\n", + "Grad encoder.encoder.4.bias: 0.0014603798044845462\n", + "Grad decoder.fc1.0.weight: 9.091594256460667e-05\n", + "Grad decoder.fc1.0.bias: 0.0007372913532890379\n", + "Grad decoder.fc1.2.weight: 9.514106932329014e-05\n", + "Grad decoder.fc1.2.bias: 0.0008011970203369856\n", + "Grad decoder.fc1.4.weight: 7.075627218000591e-05\n", + "Grad decoder.fc1.4.bias: 0.0008045141585171223\n", + "Grad decoder.fc2.weight: 0.00014228952932171524\n", + "Grad decoder.fc2.bias: 0.0020620361901819706\n", + "Grad _memory_unit.weight_ih_l0: 2.082606079056859e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.790072024567053e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.790254752151668e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.79595188255189e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001362030889140442\n", + "Grad _memory_unit.bias_hh_l1: 7.26933212717995e-05\n", + "Data X Sample: tensor([[1.5860, 1.8993, 2.0406, 2.2565, 2.2692, 2.2335, 2.4158, 2.4261, 2.3824,\n", + " 2.4501, 2.4903, 2.5785, 2.4478, 2.4211, 2.3882, 2.3495, 2.2988, 2.4586,\n", + " 2.4264, 2.5683, 2.5493, 2.5857, 2.6074, 2.6626, 2.6050, 2.6537, 2.5787,\n", + " 2.6755, 2.4423, 2.5710, 2.4287, 2.3875, 2.1978, 1.4738, 1.9094, 1.8388,\n", + " 1.7226, 1.6432, 1.5402, 1.5235, 1.2791, 0.7806, 0.7437, 1.3118, 1.9543,\n", + " 2.2415, 1.4142, 2.0799]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.9862, 0.2550, 0.0958, 0.0147, -0.8049, 0.5431, -0.9905, -0.2429,\n", + " -1.7641, -0.6462, -0.5584, -0.2818, -0.2671, 0.4441, -0.3588, 1.0245,\n", + " 0.2700, -0.8003, -0.1769, -1.6890, -0.3921, -0.6122, 0.6858, -0.1770,\n", + " 0.2003, 1.0768, -0.0293, 0.2971, 0.8917, 0.3027, 0.6543, -0.1788,\n", + " 0.0736, 0.1526, -0.7485, -0.4052, 0.5472, -0.6596, 0.0040, -0.2351,\n", + " -0.1616, -0.1560, 0.0381]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3770, 0.3413, 0.0806, 0.2543, 0.1589, -0.0343, -0.3258, -0.3460,\n", + " -0.2139, -0.2311, -0.2658, 0.1943, 0.1701, 0.2539, 0.2096, 0.3194,\n", + " 0.2165, 0.0677, 0.0898, 0.1561, 0.0670, 0.0748, 0.0623, 0.0294,\n", + " 0.0387, 0.0317, -0.0310, -0.0086, 0.1448, 0.2485, 0.1980, 0.1521,\n", + " 0.2444, 0.2882, 0.1328, 0.1781, -0.0184, -0.0176, -0.0038, -0.2590,\n", + " -0.2027, -0.2314, -0.2451]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003196911420673132\n", + "Grad encoder.fc1.bias: 0.000399062322685495\n", + "Grad encoder.encoder.0.weight: 0.00011848308349726722\n", + "Grad encoder.encoder.0.bias: 0.00043898363946937025\n", + "Grad encoder.encoder.2.weight: 8.696077566128224e-05\n", + "Grad encoder.encoder.2.bias: 0.0004708229098469019\n", + "Grad encoder.encoder.4.weight: 0.00016953480371739715\n", + "Grad encoder.encoder.4.bias: 0.0012655913596972823\n", + "Grad decoder.fc1.0.weight: 5.034386049374007e-05\n", + "Grad decoder.fc1.0.bias: 0.0005626826314255595\n", + "Grad decoder.fc1.2.weight: 5.1056515076197684e-05\n", + "Grad decoder.fc1.2.bias: 0.0007378467125818133\n", + "Grad decoder.fc1.4.weight: 5.38824824616313e-05\n", + "Grad decoder.fc1.4.bias: 0.0008985669119283557\n", + "Grad decoder.fc2.weight: 0.00013503871741704643\n", + "Grad decoder.fc2.bias: 0.002445068210363388\n", + "Grad _memory_unit.weight_ih_l0: 9.481982488068752e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.2370935261715204e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.23238948819926e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.783082658832427e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.295160270994529e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.853924474446103e-05\n", + "Data X Sample: tensor([[1.4735, 1.7376, 1.8963, 2.0881, 2.1924, 2.1510, 2.0968, 2.7526, 4.0301,\n", + " 4.1989, 4.3365, 4.3390, 4.1922, 3.9861, 3.8989, 3.6691, 3.6919, 3.6347,\n", + " 3.6014, 3.5056, 3.5602, 3.3313, 2.9038, 2.8688, 2.8941, 3.0846, 3.0316,\n", + " 3.0304, 3.1569, 3.2784, 3.3245, 3.4486, 3.8963, 2.8080, 4.5837, 4.8620,\n", + " 5.0165, 5.3588, 6.0215, 5.8416, 1.1263, 0.7209, 0.6871, 1.2343, 1.8156,\n", + " 1.9156, 1.3190, 2.0643]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.1489, -0.1420, 0.2448, -0.6658, -0.7261, -0.6130, 0.6372, 0.8382,\n", + " 0.0359, 0.7583, 0.4462, -0.3697, 0.3394, -1.6113, -1.7209, -0.7403,\n", + " -0.2422, -0.0334, 1.0466, 0.3775, 0.4152, -0.6378, 0.0462, -0.6422,\n", + " -0.1341, -0.1801, 0.1908, 0.7640, 0.3231, -0.5644, -0.4587, -0.4804,\n", + " -0.3367, -1.2700, 0.2498, -0.8249, 0.4915, -0.6764, -0.0059, 0.9697,\n", + " 1.0782, 1.2198, 0.9496]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2355, -0.2282, -0.0554, -0.1024, 0.0934, 0.1936, 0.1905, 0.2489,\n", + " 0.2401, 0.2775, 0.1293, -0.0969, -0.1933, -0.2320, -0.1552, -0.2856,\n", + " -0.1470, -0.0584, -0.0076, -0.0513, -0.1172, 0.0335, -0.0326, -0.0589,\n", + " 0.0367, 0.0408, -0.0794, -0.1454, -0.2459, -0.2825, -0.2069, -0.1500,\n", + " -0.2960, -0.2521, -0.1365, -0.1019, 0.0381, 0.0273, 0.0065, 0.2453,\n", + " 0.3018, 0.2744, 0.2757]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002517156535759568\n", + "Grad encoder.fc1.bias: 0.00019246424199081957\n", + "Grad encoder.encoder.0.weight: 8.527926547685638e-05\n", + "Grad encoder.encoder.0.bias: 0.00029717839788645506\n", + "Grad encoder.encoder.2.weight: 4.736972914543003e-05\n", + "Grad encoder.encoder.2.bias: 0.00031391269294545054\n", + "Grad encoder.encoder.4.weight: 8.42490917420946e-05\n", + "Grad encoder.encoder.4.bias: 0.0009298559161834419\n", + "Grad decoder.fc1.0.weight: 3.2550397008890286e-05\n", + "Grad decoder.fc1.0.bias: 0.0003809104673564434\n", + "Grad decoder.fc1.2.weight: 3.8449583371402696e-05\n", + "Grad decoder.fc1.2.bias: 0.0005297168972902\n", + "Grad decoder.fc1.4.weight: 4.2099862184841186e-05\n", + "Grad decoder.fc1.4.bias: 0.0006391115020960569\n", + "Grad decoder.fc2.weight: 0.00010162327816942707\n", + "Grad decoder.fc2.bias: 0.0019077176693826914\n", + "Grad _memory_unit.weight_ih_l0: 5.87610202273936e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.5196731662144884e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.3321943444898352e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.380494263183209e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.560213609598577e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.440036354935728e-05\n", + "Data X Sample: tensor([[1.3504, 1.5279, 1.7010, 1.8673, 1.9038, 2.1230, 1.9767, 1.8214, 3.1782,\n", + " 4.2874, 4.3016, 4.3897, 3.9547, 3.8661, 3.7879, 3.7963, 3.7611, 3.5902,\n", + " 3.6324, 3.5279, 3.5332, 3.2930, 2.9978, 2.8783, 2.8865, 3.0115, 2.9410,\n", + " 2.8468, 3.0772, 3.1343, 3.1811, 3.3574, 3.7973, 2.8538, 4.6645, 4.9763,\n", + " 5.0833, 5.4039, 6.0849, 5.9466, 1.1407, 0.6333, 0.6063, 1.1281, 1.6332,\n", + " 1.8756, 1.1898, 1.7124]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.7295, -0.5652, 0.0782, 0.8992, 0.6974, 0.0300, -0.1947, 0.5001,\n", + " 1.5130, -0.2875, 0.3482, 0.5159, 0.3071, -1.0189, 0.6654, -0.3364,\n", + " 0.1254, 0.3773, 0.7609, -0.2290, 0.0732, 0.0200, 0.3064, 0.3201,\n", + " -0.0416, 0.0035, 0.2316, -0.2121, -0.3849, -0.0803, 0.8078, -0.1824,\n", + " -0.6290, -0.7209, 0.0544, 0.3548, -0.5685, 0.7952, 1.0325, 0.7815,\n", + " -0.0418, 0.8631, 0.2957]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2562, -0.2398, -0.0510, -0.0964, 0.1295, 0.2212, 0.2040, 0.2615,\n", + " 0.2630, 0.3046, 0.1335, -0.0992, -0.2158, -0.2480, -0.1603, -0.3032,\n", + " -0.1509, -0.0577, -0.0048, -0.0542, -0.1297, 0.0265, -0.0257, -0.0636,\n", + " 0.0365, 0.0383, -0.0960, -0.1615, -0.2716, -0.3146, -0.2186, -0.1539,\n", + " -0.3274, -0.2750, -0.1503, -0.1076, 0.0475, 0.0334, 0.0101, 0.2562,\n", + " 0.3158, 0.2796, 0.2926]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00013192996266297996\n", + "Grad encoder.fc1.bias: 0.0006366831948980689\n", + "Grad encoder.encoder.0.weight: 5.5839507695054635e-05\n", + "Grad encoder.encoder.0.bias: 0.00041803691419772804\n", + "Grad encoder.encoder.2.weight: 4.244219962856732e-05\n", + "Grad encoder.encoder.2.bias: 0.000356254109647125\n", + "Grad encoder.encoder.4.weight: 9.525789937470108e-05\n", + "Grad encoder.encoder.4.bias: 0.0008986011962406337\n", + "Grad decoder.fc1.0.weight: 3.581752025638707e-05\n", + "Grad decoder.fc1.0.bias: 0.00037295621586963534\n", + "Grad decoder.fc1.2.weight: 4.054334567626938e-05\n", + "Grad decoder.fc1.2.bias: 0.0006122778286226094\n", + "Grad decoder.fc1.4.weight: 3.915857814718038e-05\n", + "Grad decoder.fc1.4.bias: 0.0005751490243710577\n", + "Grad decoder.fc2.weight: 0.00011711997649399564\n", + "Grad decoder.fc2.bias: 0.0015368600143119693\n", + "Grad _memory_unit.weight_ih_l0: 8.856301064952277e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.120493733556941e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.6498155420995317e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.847533207590459e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.207560651702806e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.8293262807419524e-05\n", + "Data X Sample: tensor([[2.8229, 2.4120, 1.9895, 2.1253, 2.1445, 2.3366, 3.6313, 4.1439, 4.2644,\n", + " 4.3205, 4.0986, 4.1891, 3.9925, 4.0134, 3.7122, 3.7006, 3.7029, 3.7333,\n", + " 3.5911, 3.6395, 3.5430, 3.3772, 3.0460, 2.8688, 2.8134, 2.8156, 2.8931,\n", + " 3.0181, 2.9419, 2.9640, 3.0201, 3.1419, 3.3551, 2.4121, 4.0616, 4.5094,\n", + " 4.8887, 5.2077, 5.9074, 5.7310, 1.4986, 0.7567, 0.7073, 1.3749, 1.8433,\n", + " 2.0643, 1.3394, 2.0486]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.0376, -0.9331, -0.5167, -0.4278, -0.2325, 1.2773, 1.0878, 1.4663,\n", + " 0.7016, 0.8591, 0.9273, -1.7881, 1.1426, -0.2409, -0.6541, -0.6447,\n", + " -0.7341, -0.7084, -1.9424, -1.1314, -1.1436, -0.1162, -1.3883, -1.7085,\n", + " -0.8016, -1.2895, 1.0830, 0.1393, 0.3748, -0.6425, -0.9553, -0.8308,\n", + " -0.0489, -0.2950, -0.5074, 0.1422, -1.0105, -0.0751, -1.8131, 0.7186,\n", + " 0.8897, 0.7362, 0.4436]], device='cuda:0')\n", + "Prediction Sample: tensor([[-2.4525e-01, -2.4418e-01, -6.8566e-02, -1.2006e-01, 3.8660e-02,\n", + " 1.5381e-01, 1.6453e-01, 2.4563e-01, 2.1994e-01, 2.6029e-01,\n", + " 1.5528e-01, -8.4722e-02, -1.8539e-01, -2.2742e-01, -1.5739e-01,\n", + " -2.8261e-01, -1.3926e-01, -7.8105e-02, -4.5020e-03, -5.3161e-02,\n", + " -1.2157e-01, 4.2983e-02, -3.3358e-02, -6.4575e-02, 4.5312e-02,\n", + " 4.3753e-02, -6.1550e-02, -1.3093e-01, -2.2302e-01, -2.5574e-01,\n", + " -1.9806e-01, -1.5283e-01, -2.5502e-01, -2.3957e-01, -1.3288e-01,\n", + " -1.1486e-01, 2.6311e-02, 1.4657e-02, -2.7774e-04, 2.7318e-01,\n", + " 3.1022e-01, 2.7797e-01, 2.7512e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00021649884001817554\n", + "Grad encoder.fc1.bias: 0.0001109900331357494\n", + "Grad encoder.encoder.0.weight: 8.549173799110577e-05\n", + "Grad encoder.encoder.0.bias: 0.00019655530923046172\n", + "Grad encoder.encoder.2.weight: 5.661976319970563e-05\n", + "Grad encoder.encoder.2.bias: 0.0002087844186462462\n", + "Grad encoder.encoder.4.weight: 0.00011042659025406465\n", + "Grad encoder.encoder.4.bias: 0.0006774226203560829\n", + "Grad decoder.fc1.0.weight: 3.78376389562618e-05\n", + "Grad decoder.fc1.0.bias: 0.0002761501236818731\n", + "Grad decoder.fc1.2.weight: 5.912961933063343e-05\n", + "Grad decoder.fc1.2.bias: 0.0007902133511379361\n", + "Grad decoder.fc1.4.weight: 5.076943489257246e-05\n", + "Grad decoder.fc1.4.bias: 0.0007369276136159897\n", + "Grad decoder.fc2.weight: 0.00011777527834055945\n", + "Grad decoder.fc2.bias: 0.001861028140410781\n", + "Grad _memory_unit.weight_ih_l0: 5.813449661218328e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.7387106709065847e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.231132935383357e-06\n", + "Grad _memory_unit.weight_ih_l1: 3.6962728700018488e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.129558849148452e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.6273262847098522e-05\n", + "Data X Sample: tensor([[1.4979, 1.8833, 1.9790, 2.1428, 2.2470, 2.3440, 2.4034, 2.4034, 2.4654,\n", + " 2.4454, 2.5886, 2.5726, 2.3968, 2.3829, 2.3201, 2.3207, 2.2988, 2.3754,\n", + " 2.3706, 2.4232, 2.4242, 2.5520, 2.4941, 2.4183, 2.4361, 2.3742, 2.3523,\n", + " 2.4471, 2.0086, 2.0273, 1.8652, 1.7050, 1.5026, 0.9635, 1.3677, 1.3596,\n", + " 1.3470, 1.3357, 1.3881, 1.3561, 1.2886, 0.8065, 0.7538, 1.2802, 2.0019,\n", + " 2.1958, 1.3802, 1.9704]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1545, -0.3169, 0.3861, -0.1151, -0.7089, -1.5660, -0.9246, -0.5002,\n", + " 0.8923, -0.1867, -0.4433, -0.5084, -0.2094, 0.5955, 1.2060, 0.3836,\n", + " 2.0126, -0.3024, -0.0736, 0.5587, -0.6614, 0.4442, 0.6445, -0.0968,\n", + " 0.4594, 0.8151, 0.4514, 0.9998, 0.4187, 0.7838, 1.0732, 0.3850,\n", + " -0.1114, 0.3308, -0.2160, 0.0576, 0.4998, -0.8262, 0.2630, -0.1978,\n", + " -0.4512, -0.1346, 1.1055]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.1041, 0.0796, 0.0215, 0.0317, -0.0112, -0.0019, -0.1370, -0.0829,\n", + " -0.0776, -0.0257, -0.0601, 0.0442, 0.0385, 0.0577, 0.0273, 0.0889,\n", + " 0.0301, -0.0098, 0.0231, 0.0428, 0.0063, 0.0511, -0.0148, 0.0003,\n", + " 0.0389, 0.0297, -0.0113, -0.0061, 0.0579, 0.0785, 0.0390, 0.0347,\n", + " 0.0972, 0.0461, 0.0319, 0.0186, 0.0150, 0.0089, -0.0429, 0.0124,\n", + " 0.0300, 0.0007, -0.0377]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005133409285917878\n", + "Grad encoder.fc1.bias: 0.0010502450168132782\n", + "Grad encoder.encoder.0.weight: 0.00018969029770232737\n", + "Grad encoder.encoder.0.bias: 0.0010474615264683962\n", + "Grad encoder.encoder.2.weight: 0.00012935331324115396\n", + "Grad encoder.encoder.2.bias: 0.0008995251264423132\n", + "Grad encoder.encoder.4.weight: 0.00026386918034404516\n", + "Grad encoder.encoder.4.bias: 0.0021736756898462772\n", + "Grad decoder.fc1.0.weight: 8.935278310673311e-05\n", + "Grad decoder.fc1.0.bias: 0.0009180255583487451\n", + "Grad decoder.fc1.2.weight: 7.644658035133034e-05\n", + "Grad decoder.fc1.2.bias: 0.0012068613432347775\n", + "Grad decoder.fc1.4.weight: 7.794848352205008e-05\n", + "Grad decoder.fc1.4.bias: 0.0015273633180186152\n", + "Grad decoder.fc2.weight: 0.00015968814841471612\n", + "Grad decoder.fc2.bias: 0.002782858442515135\n", + "Grad _memory_unit.weight_ih_l0: 1.8221626305603422e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.908511128742248e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.079271431895904e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.666056601214223e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00019478157628327608\n", + "Grad _memory_unit.bias_hh_l1: 0.00010124461550731212\n", + "Data X Sample: tensor([[1.5287, 1.6983, 1.8467, 2.0247, 2.0182, 2.0773, 2.1754, 2.2402, 2.3043,\n", + " 2.4612, 2.4141, 2.3117, 2.3236, 2.2821, 2.2218, 2.1936, 2.1604, 2.2961,\n", + " 2.3521, 2.3488, 2.4045, 2.4280, 2.5158, 2.4336, 2.5112, 2.5570, 2.4881,\n", + " 2.5736, 2.3139, 2.4793, 2.3482, 2.4069, 2.2352, 1.4280, 1.9168, 1.8582,\n", + " 1.6400, 1.5239, 1.5529, 1.5888, 1.2170, 0.6831, 0.6669, 1.2831, 1.7323,\n", + " 2.0986, 1.3326, 1.9783]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7924, -0.5308, 0.6262, -0.8452, 0.4056, 0.7360, -0.0981, 0.4954,\n", + " 0.1690, 0.0984, 0.0967, -0.6708, 0.0045, -0.4541, 0.5583, -0.0330,\n", + " -0.0327, -0.0845, 1.5349, -0.1511, 0.3860, -0.0541, 0.5765, -0.1106,\n", + " -0.7879, -0.9626, 0.5274, -0.2039, -0.0942, -1.0272, 0.1923, 0.3340,\n", + " 0.0948, 0.3834, -0.3605, -0.5342, 0.0501, -0.7806, 0.2870, -0.2201,\n", + " 0.7637, 0.5457, 1.3188]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3257, 0.2942, 0.0725, 0.1928, 0.1260, -0.0349, -0.2943, -0.2984,\n", + " -0.1866, -0.1919, -0.2159, 0.1585, 0.1380, 0.2139, 0.1611, 0.2862,\n", + " 0.1906, 0.0483, 0.0811, 0.1388, 0.0507, 0.0683, 0.0408, 0.0285,\n", + " 0.0494, 0.0393, -0.0395, 0.0049, 0.1294, 0.2056, 0.1699, 0.1321,\n", + " 0.2229, 0.2229, 0.1087, 0.1515, 0.0122, -0.0092, -0.0121, -0.2055,\n", + " -0.1583, -0.1915, -0.2054]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00022508038091473281\n", + "Grad encoder.fc1.bias: 0.0007304234895855188\n", + "Grad encoder.encoder.0.weight: 8.786765101831406e-05\n", + "Grad encoder.encoder.0.bias: 0.0005037967930547893\n", + "Grad encoder.encoder.2.weight: 6.267084245337173e-05\n", + "Grad encoder.encoder.2.bias: 0.000421680771978572\n", + "Grad encoder.encoder.4.weight: 0.000132810790091753\n", + "Grad encoder.encoder.4.bias: 0.0009820915292948484\n", + "Grad decoder.fc1.0.weight: 4.075859396834858e-05\n", + "Grad decoder.fc1.0.bias: 0.00039642228512093425\n", + "Grad decoder.fc1.2.weight: 4.03786834795028e-05\n", + "Grad decoder.fc1.2.bias: 0.0006760062533430755\n", + "Grad decoder.fc1.4.weight: 4.967951463186182e-05\n", + "Grad decoder.fc1.4.bias: 0.0008796870242804289\n", + "Grad decoder.fc2.weight: 0.00010775355622172356\n", + "Grad decoder.fc2.bias: 0.0019513142760843039\n", + "Grad _memory_unit.weight_ih_l0: 8.67123617354082e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.9028050852939487e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.5106295652221888e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.041061856696615e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.334966307505965e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.853504287893884e-05\n", + "Data X Sample: tensor([[1.9700, 2.4178, 2.7228, 2.8338, 2.8685, 3.0349, 3.1229, 3.0380, 3.1538,\n", + " 3.1610, 3.2453, 3.2757, 3.1580, 3.1791, 3.1372, 3.1002, 2.9859, 2.9460,\n", + " 3.0087, 2.9142, 2.7063, 2.7143, 2.6074, 2.5634, 2.3798, 2.3246, 2.2937,\n", + " 2.4268, 1.8803, 2.0175, 1.9562, 2.0393, 1.8260, 1.2495, 1.9315, 2.2960,\n", + " 2.5722, 2.8172, 2.9981, 3.0045, 1.6800, 0.9698, 0.9600, 1.7567, 2.5648,\n", + " 2.7905, 1.6589, 2.5803]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7215, 0.2819, 1.5816, 0.2545, -0.4602, -1.0186, -2.8611, -1.9208,\n", + " -1.1049, -0.6770, 0.9041, 0.7780, 0.3203, 0.1011, 0.4611, 0.5388,\n", + " -0.9108, -0.4697, -0.4178, -0.2174, -0.9997, -0.8232, -0.1690, 0.2640,\n", + " 0.0734, -0.4141, 0.4670, 2.2864, 0.8419, 1.5990, 1.6308, 1.1717,\n", + " 0.5255, 0.3376, 1.1621, -0.6478, 0.4999, -0.4865, 0.3461, -0.7349,\n", + " 0.9049, 0.5563, -0.2406]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2675, -0.2433, -0.0901, -0.2098, -0.1461, -0.0051, 0.1051, 0.2213,\n", + " 0.1499, 0.2417, 0.1872, -0.0465, -0.1504, -0.1758, -0.1344, -0.2623,\n", + " -0.1796, -0.1451, 0.0029, -0.0516, -0.1038, 0.0313, -0.0365, -0.0585,\n", + " 0.0080, 0.0142, 0.0430, -0.0452, -0.1000, -0.1533, -0.1265, -0.1428,\n", + " -0.1265, -0.2120, -0.1254, -0.1397, 0.0270, 0.0098, -0.0442, 0.3404,\n", + " 0.3521, 0.2735, 0.2884]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00015034536772873253\n", + "Grad encoder.fc1.bias: 0.0001154080091509968\n", + "Grad encoder.encoder.0.weight: 6.144838698673993e-05\n", + "Grad encoder.encoder.0.bias: 0.00019281223649159074\n", + "Grad encoder.encoder.2.weight: 4.1502797103021294e-05\n", + "Grad encoder.encoder.2.bias: 0.0002698485041037202\n", + "Grad encoder.encoder.4.weight: 9.406462777405977e-05\n", + "Grad encoder.encoder.4.bias: 0.0010225728619843721\n", + "Grad decoder.fc1.0.weight: 3.6074998206458986e-05\n", + "Grad decoder.fc1.0.bias: 0.0003784582077059895\n", + "Grad decoder.fc1.2.weight: 3.886184640577994e-05\n", + "Grad decoder.fc1.2.bias: 0.0006929583032615483\n", + "Grad decoder.fc1.4.weight: 3.872186061926186e-05\n", + "Grad decoder.fc1.4.bias: 0.0007876326562836766\n", + "Grad decoder.fc2.weight: 0.00011774766608141363\n", + "Grad decoder.fc2.bias: 0.002188716549426317\n", + "Grad _memory_unit.weight_ih_l0: 9.749692253535613e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.295947969192639e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.2052288588602096e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.3034442569478415e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011290976544842124\n", + "Grad _memory_unit.bias_hh_l1: 5.736123421229422e-05\n", + "Data X Sample: tensor([[ 0.0106, 0.0087, 0.0195, 0.0044, 0.0034, 0.0250, 0.0216, 0.0071,\n", + " 0.0122, 0.0221, 0.0349, 0.0019, 0.0200, 0.0300, 0.0151, 0.0082,\n", + " -0.0975, -0.1257, -0.1280, -0.1116, -0.1521, -0.0919, -0.1012, -0.0916,\n", + " -0.0826, -0.1593, -0.1545, -0.2570, -0.0763, -0.0360, -0.0280, -0.0166,\n", + " -0.0022, -0.0137, 0.0270, 0.0219, 0.0118, 0.0212, 0.0634, 0.0142,\n", + " 0.0573, 0.0100, 0.0040, 0.0000, 0.0238, -0.0114, -0.0340, -0.0391]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[-0.8591, -0.5096, -0.4581, -1.0767, 0.4399, -0.7896, -0.6951, -0.8450,\n", + " 0.7666, 0.8375, 0.9873, 0.8911, -0.2183, 1.0310, 2.1048, -0.0594,\n", + " -0.0682, -0.0468, 2.2162, 0.4864, 0.9074, 2.3313, 0.7835, -0.5246,\n", + " 0.5920, 1.4735, 0.0256, -0.7658, 0.6171, -0.0839, -1.0708, -0.8393,\n", + " 0.0624, 0.0951, -0.5411, -0.5437, 0.4246, 0.0940, 0.2870, -1.6336,\n", + " -1.0376, -0.0378, -0.4670]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5660, 0.4394, 0.1246, 0.3219, 0.1181, -0.1122, -0.5649, -0.6220,\n", + " -0.3664, -0.3710, -0.3260, 0.3084, 0.2406, 0.3437, 0.2490, 0.3729,\n", + " 0.3551, 0.0977, 0.1209, 0.2127, 0.1117, 0.0693, 0.0582, 0.0866,\n", + " 0.0599, 0.0416, -0.0223, 0.1108, 0.3366, 0.4486, 0.3748, 0.2869,\n", + " 0.4042, 0.4143, 0.2098, 0.2207, 0.0168, 0.0071, -0.0018, -0.4084,\n", + " -0.3346, -0.3484, -0.3264]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00013181287795305252\n", + "Grad encoder.fc1.bias: 0.0005646891659125686\n", + "Grad encoder.encoder.0.weight: 5.736345337936655e-05\n", + "Grad encoder.encoder.0.bias: 0.0003434114623814821\n", + "Grad encoder.encoder.2.weight: 4.7881425416562706e-05\n", + "Grad encoder.encoder.2.bias: 0.00022957116016186774\n", + "Grad encoder.encoder.4.weight: 0.00011918876407435164\n", + "Grad encoder.encoder.4.bias: 0.0008399690850637853\n", + "Grad decoder.fc1.0.weight: 4.618828825186938e-05\n", + "Grad decoder.fc1.0.bias: 0.00035229677450843155\n", + "Grad decoder.fc1.2.weight: 5.901995245949365e-05\n", + "Grad decoder.fc1.2.bias: 0.0006271141464821994\n", + "Grad decoder.fc1.4.weight: 5.5781005357857794e-05\n", + "Grad decoder.fc1.4.bias: 0.0007034427835606039\n", + "Grad decoder.fc2.weight: 0.000158972354256548\n", + "Grad decoder.fc2.bias: 0.002392204012721777\n", + "Grad _memory_unit.weight_ih_l0: 1.2353518286545295e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.311218435759656e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.357785342610441e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.34677838004427e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.953699241625145e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.257133332430385e-05\n", + "Data X Sample: tensor([[-0.0011, 0.0029, 0.0105, 0.0131, -0.0017, 0.0118, 0.0139, 0.0156,\n", + " 0.0220, 0.0142, 0.0286, 0.0039, 0.0155, 0.0354, 0.0126, 0.0109,\n", + " -0.0692, -0.0735, -0.0805, -0.0725, -0.1006, -0.0551, -0.0819, -0.0592,\n", + " -0.0713, -0.1149, -0.1012, -0.1591, -0.0520, -0.0295, -0.0070, -0.0055,\n", + " -0.0132, -0.0343, 0.0000, 0.0389, 0.0000, 0.0000, 0.0634, -0.0057,\n", + " 0.0239, 0.0060, 0.0040, 0.0201, 0.0079, 0.0457, -0.0476, 0.0313]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[-3.0519, 0.3995, 1.5879, 0.1634, 1.5751, -1.0401, -0.0207, -0.7700,\n", + " 0.6821, 0.6840, 1.0154, 0.2329, 0.6055, -0.5633, 0.5689, 0.7168,\n", + " 0.5427, 0.2254, -0.4111, -1.0683, 0.5079, -0.1898, -0.6111, -0.3540,\n", + " 1.4992, -0.1921, -1.3559, -3.1031, -1.7347, -1.4826, -1.5491, -1.0408,\n", + " 0.1813, 0.8339, -0.1993, 0.6024, 0.0059, 0.0940, 0.0545, -1.4009,\n", + " -0.2454, -0.5046, -0.7669]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.6019, 0.4612, 0.1255, 0.3245, 0.0590, -0.1800, -0.6384, -0.6917,\n", + " -0.4332, -0.4243, -0.3855, 0.3282, 0.2691, 0.3707, 0.2702, 0.3783,\n", + " 0.3707, 0.0904, 0.1131, 0.2110, 0.1181, 0.0597, 0.0540, 0.0771,\n", + " 0.0466, 0.0210, 0.0127, 0.1640, 0.4165, 0.5218, 0.4385, 0.3135,\n", + " 0.4345, 0.4396, 0.2257, 0.2309, 0.0237, 0.0139, 0.0034, -0.4561,\n", + " -0.3721, -0.3795, -0.3398]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00023536334629170597\n", + "Grad encoder.fc1.bias: 0.0008445921121165156\n", + "Grad encoder.encoder.0.weight: 9.302882972406223e-05\n", + "Grad encoder.encoder.0.bias: 0.0005355711909942329\n", + "Grad encoder.encoder.2.weight: 6.769043829990551e-05\n", + "Grad encoder.encoder.2.bias: 0.0004468618717510253\n", + "Grad encoder.encoder.4.weight: 0.00012682324449997395\n", + "Grad encoder.encoder.4.bias: 0.0006893217796459794\n", + "Grad decoder.fc1.0.weight: 4.1105507989414036e-05\n", + "Grad decoder.fc1.0.bias: 0.0003694208571687341\n", + "Grad decoder.fc1.2.weight: 2.8869824745925143e-05\n", + "Grad decoder.fc1.2.bias: 0.00034551884164102376\n", + "Grad decoder.fc1.4.weight: 2.5362234737258404e-05\n", + "Grad decoder.fc1.4.bias: 0.00041152338963001966\n", + "Grad decoder.fc2.weight: 0.00010716301039792597\n", + "Grad decoder.fc2.bias: 0.0016296260291710496\n", + "Grad _memory_unit.weight_ih_l0: 4.8594783947919495e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.7004891308024526e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.399489974573953e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.577830739232013e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.415890286210924e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.860678771161474e-05\n", + "Data X Sample: tensor([[1.2592, 1.3866, 1.4981, 1.5962, 1.7382, 1.8548, 1.9351, 1.8299, 3.2197,\n", + " 3.8640, 3.8861, 3.7879, 3.8371, 3.7053, 3.3743, 3.4667, 3.4278, 3.4296,\n", + " 3.5126, 3.3493, 3.2780, 3.1476, 2.7761, 2.6092, 2.6407, 2.7529, 2.7412,\n", + " 2.7816, 2.6747, 2.8592, 2.8626, 3.0231, 3.3177, 2.4624, 3.9415, 4.2807,\n", + " 4.4993, 4.8632, 5.3877, 5.2090, 0.9832, 0.5317, 0.5436, 1.0018, 1.4549,\n", + " 1.5782, 1.1014, 1.4935]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0953, -0.0528, 0.5273, 1.4612, 0.1060, 0.0701, -0.2653, -0.0236,\n", + " 0.3385, 0.0953, -0.0326, 0.5923, -1.1609, -1.0805, -1.3045, -0.3266,\n", + " 0.7653, 0.4342, -1.1803, -0.1047, -0.6090, 1.3425, -1.2692, -0.1244,\n", + " 0.2940, 1.8093, -1.3144, -1.4093, 0.3306, 0.3731, 0.2838, -0.2244,\n", + " -0.4284, -1.1538, -0.2693, -0.9535, 0.2315, -0.5781, 0.7114, 0.6371,\n", + " 0.8872, 0.1363, -0.8751]], device='cuda:0')\n", + "Prediction Sample: tensor([[-2.6540e-01, -2.6863e-01, -7.4386e-02, -2.0869e-01, -6.1706e-02,\n", + " 6.4023e-02, 1.3826e-01, 2.3033e-01, 1.8886e-01, 2.5110e-01,\n", + " 2.1271e-01, -5.8699e-02, -1.6281e-01, -2.1241e-01, -1.5479e-01,\n", + " -2.8741e-01, -1.6798e-01, -1.1902e-01, 1.7397e-02, -6.3299e-02,\n", + " -1.3096e-01, 3.9172e-02, -2.0551e-02, -6.0569e-02, 7.8799e-03,\n", + " 3.2867e-02, 3.8936e-05, -7.1154e-02, -1.6152e-01, -2.1056e-01,\n", + " -1.5734e-01, -1.6138e-01, -1.8374e-01, -2.4806e-01, -1.6154e-01,\n", + " -1.3671e-01, 2.9389e-02, 3.7421e-03, -2.0185e-02, 3.2374e-01,\n", + " 3.5225e-01, 2.8858e-01, 2.9925e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00032844519591890275\n", + "Grad encoder.fc1.bias: 0.0007835719152353704\n", + "Grad encoder.encoder.0.weight: 0.0001347015640931204\n", + "Grad encoder.encoder.0.bias: 0.0007031607674434781\n", + "Grad encoder.encoder.2.weight: 0.00011433747567934915\n", + "Grad encoder.encoder.2.bias: 0.0006090163951739669\n", + "Grad encoder.encoder.4.weight: 0.00023536162916570902\n", + "Grad encoder.encoder.4.bias: 0.0015558333834633231\n", + "Grad decoder.fc1.0.weight: 7.985960837686434e-05\n", + "Grad decoder.fc1.0.bias: 0.0007223297143355012\n", + "Grad decoder.fc1.2.weight: 6.344316352624446e-05\n", + "Grad decoder.fc1.2.bias: 0.000766136625315994\n", + "Grad decoder.fc1.4.weight: 6.213558663148433e-05\n", + "Grad decoder.fc1.4.bias: 0.0008637860300950706\n", + "Grad decoder.fc2.weight: 0.0001599421229911968\n", + "Grad decoder.fc2.bias: 0.0021200513001531363\n", + "Grad _memory_unit.weight_ih_l0: 1.5105424608918838e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.80991361150518e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.7283331039361656e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.4543841037666425e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.000124971367768012\n", + "Grad _memory_unit.bias_hh_l1: 6.652966112596914e-05\n", + "Data X Sample: tensor([[2.5630, 3.0834, 3.2847, 2.8972, 3.0068, 3.3031, 3.7330, 3.8415, 4.0569,\n", + " 4.0030, 4.1050, 4.0411, 3.8948, 3.7816, 3.5962, 3.5310, 3.4734, 3.3774,\n", + " 3.3763, 3.4237, 3.3443, 3.1904, 2.9640, 2.8230, 2.6688, 2.7373, 2.6373,\n", + " 2.7408, 2.6088, 2.8166, 2.7331, 2.8766, 3.0999, 2.2496, 3.7331, 4.1080,\n", + " 4.3990, 4.8367, 5.4764, 5.2657, 2.0522, 1.2148, 1.1398, 1.9031, 2.8225,\n", + " 2.8191, 1.8425, 2.4943]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5046, -0.7526, -0.8748, -0.6211, -0.1423, 0.3017, -0.1168, -0.5318,\n", + " -2.0346, -0.1632, 0.4610, 0.6743, 1.5043, 0.7970, -0.4769, -0.1092,\n", + " 0.3246, -0.0490, 2.6633, 0.6075, -0.2500, 0.4750, -1.4976, -0.1660,\n", + " -0.2914, 0.5464, 0.1536, 0.3242, 0.4623, -0.5487, -0.7810, 0.9701,\n", + " -0.9948, 0.3311, 1.1833, -0.0081, 1.0050, -0.0140, -0.7911, 0.0949,\n", + " -0.3052, 0.1061, 1.0851]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2346, -0.2200, -0.0597, -0.2318, -0.1433, -0.0383, 0.0517, 0.1693,\n", + " 0.1156, 0.2097, 0.1631, -0.0380, -0.1033, -0.1568, -0.1003, -0.1977,\n", + " -0.1841, -0.1259, 0.0155, -0.0487, -0.0805, 0.0320, -0.0308, -0.0548,\n", + " 0.0056, 0.0011, 0.0684, 0.0022, -0.0451, -0.1250, -0.0853, -0.1179,\n", + " -0.0797, -0.1858, -0.1187, -0.1108, 0.0549, 0.0317, -0.0500, 0.3032,\n", + " 0.3186, 0.2323, 0.2532]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0009511564276181161\n", + "Grad encoder.fc1.bias: 0.0005010843742638826\n", + "Grad encoder.encoder.0.weight: 0.0003397881519049406\n", + "Grad encoder.encoder.0.bias: 0.0007656397647224367\n", + "Grad encoder.encoder.2.weight: 0.00022904948855284601\n", + "Grad encoder.encoder.2.bias: 0.0008879097877070308\n", + "Grad encoder.encoder.4.weight: 0.00041578366653993726\n", + "Grad encoder.encoder.4.bias: 0.00276179239153862\n", + "Grad decoder.fc1.0.weight: 0.00011404085671529174\n", + "Grad decoder.fc1.0.bias: 0.001035475404933095\n", + "Grad decoder.fc1.2.weight: 7.102404197212309e-05\n", + "Grad decoder.fc1.2.bias: 0.0012890361249446869\n", + "Grad decoder.fc1.4.weight: 6.179902266012505e-05\n", + "Grad decoder.fc1.4.bias: 0.0012807443272322416\n", + "Grad decoder.fc2.weight: 0.00017647321510594338\n", + "Grad decoder.fc2.bias: 0.003161814995110035\n", + "Grad _memory_unit.weight_ih_l0: 1.3786906492896378e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.457863153424114e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.9945669666631147e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0071125871036202e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001645701559027657\n", + "Grad _memory_unit.bias_hh_l1: 8.416816126555204e-05\n", + "Data X Sample: tensor([[1.5287, 1.6298, 1.8212, 1.8498, 1.8731, 1.8784, 1.8966, 1.8271, 2.3165,\n", + " 3.4785, 4.0479, 4.0995, 3.7883, 3.5935, 3.5407, 3.4859, 3.4341, 3.3967,\n", + " 3.4919, 3.3345, 3.3614, 3.2761, 2.9375, 2.9260, 3.0067, 3.0115, 2.8824,\n", + " 2.8591, 2.8413, 3.0426, 3.0376, 3.1170, 3.5003, 2.5173, 4.2135, 4.6845,\n", + " 4.9300, 5.1256, 5.6919, 5.6629, 1.1932, 0.6452, 0.6690, 1.1309, 1.6887,\n", + " 1.8241, 1.2374, 1.7671]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4655, -1.3143, 0.4263, -1.1704, -2.0395, -0.4369, 0.2077, 0.4910,\n", + " 0.5144, 0.5843, 0.7010, -0.2757, -0.2222, -0.9194, -0.7631, -1.1544,\n", + " -0.7063, -0.3744, 0.7426, -0.9395, -0.0577, -1.4678, -0.3471, 0.0379,\n", + " -0.2841, -0.2633, 0.8873, 0.2045, -0.6865, -0.0619, -0.4567, -0.1771,\n", + " -1.3811, -0.6343, -0.8537, -0.9445, 0.0000, -0.6143, 0.0000, 0.7401,\n", + " 0.8786, 0.7597, 0.4988]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2812, -0.2925, -0.0756, -0.2073, -0.0344, 0.0900, 0.1573, 0.2541,\n", + " 0.2120, 0.2691, 0.2291, -0.0703, -0.1812, -0.2335, -0.1608, -0.3127,\n", + " -0.1754, -0.1147, 0.0155, -0.0742, -0.1427, 0.0397, -0.0202, -0.0699,\n", + " 0.0032, 0.0375, -0.0170, -0.0857, -0.1936, -0.2418, -0.1741, -0.1736,\n", + " -0.2179, -0.2741, -0.1821, -0.1432, 0.0340, 0.0036, -0.0155, 0.3380,\n", + " 0.3742, 0.3027, 0.3090]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00019328613416291773\n", + "Grad encoder.fc1.bias: 0.00019157104543410242\n", + "Grad encoder.encoder.0.weight: 6.347090675262734e-05\n", + "Grad encoder.encoder.0.bias: 0.00019110478751827031\n", + "Grad encoder.encoder.2.weight: 5.0500362704042345e-05\n", + "Grad encoder.encoder.2.bias: 0.0002777678600978106\n", + "Grad encoder.encoder.4.weight: 9.047496132552624e-05\n", + "Grad encoder.encoder.4.bias: 0.0009527012007310987\n", + "Grad decoder.fc1.0.weight: 3.35346776410006e-05\n", + "Grad decoder.fc1.0.bias: 0.00039721850771456957\n", + "Grad decoder.fc1.2.weight: 3.6070108762942255e-05\n", + "Grad decoder.fc1.2.bias: 0.0005520234699361026\n", + "Grad decoder.fc1.4.weight: 3.4923643397632986e-05\n", + "Grad decoder.fc1.4.bias: 0.0005865484708920121\n", + "Grad decoder.fc2.weight: 0.00010978248610626906\n", + "Grad decoder.fc2.bias: 0.0019527404801920056\n", + "Grad _memory_unit.weight_ih_l0: 4.4753005568054505e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.447767085162923e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.811049151001498e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.202352672815323e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.172914047259837e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.729059608303942e-05\n", + "Data X Sample: tensor([[1.6220, 1.7697, 1.9249, 2.0488, 2.1377, 2.1451, 2.2417, 2.2501, 2.2482,\n", + " 2.3001, 2.3792, 2.4305, 2.3591, 2.3120, 2.2041, 2.3330, 2.1809, 2.3406,\n", + " 2.2757, 2.3879, 2.4561, 2.5291, 2.4749, 2.4698, 2.5600, 2.4552, 2.5521,\n", + " 2.4675, 2.3660, 2.4924, 2.3692, 2.3599, 2.2616, 1.4486, 1.9683, 1.8169,\n", + " 1.6676, 1.5106, 1.5719, 1.6001, 1.2886, 0.7408, 0.7114, 1.2257, 1.9107,\n", + " 2.0357, 1.3938, 1.9626]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1640, 0.5743, -0.3383, -0.2217, 1.4731, -0.1492, -0.3028, -0.1101,\n", + " -0.4571, -0.6949, -0.3458, -1.0475, 0.8686, 1.7602, 0.6269, 0.5676,\n", + " 0.6134, -0.0142, 0.2311, 0.2847, 0.6985, -0.6299, -0.4012, -0.1424,\n", + " 0.1629, 0.6034, 1.1675, 0.8507, 1.1786, 0.8750, 0.8320, 0.1555,\n", + " 0.6789, -0.0666, -0.5862, 0.4613, -0.0457, 0.6288, 0.0040, -0.1419,\n", + " -0.1793, -0.4426, -0.5356]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3497, 0.3024, 0.0929, 0.1931, 0.1301, -0.0685, -0.3290, -0.3439,\n", + " -0.1964, -0.2064, -0.2060, 0.1776, 0.1552, 0.2358, 0.1717, 0.2965,\n", + " 0.2243, 0.0761, 0.0970, 0.1513, 0.0811, 0.0881, 0.0439, 0.0315,\n", + " 0.0644, 0.0433, -0.0692, 0.0185, 0.1464, 0.2273, 0.1942, 0.1477,\n", + " 0.2542, 0.2511, 0.1088, 0.1809, 0.0335, 0.0053, -0.0038, -0.2398,\n", + " -0.2019, -0.2273, -0.2324]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 8.06838070275262e-05\n", + "Grad encoder.fc1.bias: 0.00017388563719578087\n", + "Grad encoder.encoder.0.weight: 2.5616898710723035e-05\n", + "Grad encoder.encoder.0.bias: 9.119363676290959e-05\n", + "Grad encoder.encoder.2.weight: 2.4467677576467395e-05\n", + "Grad encoder.encoder.2.bias: 0.00020895444322377443\n", + "Grad encoder.encoder.4.weight: 6.141330231912434e-05\n", + "Grad encoder.encoder.4.bias: 0.0009256534976884723\n", + "Grad decoder.fc1.0.weight: 3.0021110433153808e-05\n", + "Grad decoder.fc1.0.bias: 0.0003566484956536442\n", + "Grad decoder.fc1.2.weight: 4.24445461248979e-05\n", + "Grad decoder.fc1.2.bias: 0.0006500527961179614\n", + "Grad decoder.fc1.4.weight: 3.8836376916151494e-05\n", + "Grad decoder.fc1.4.bias: 0.0006559228640981019\n", + "Grad decoder.fc2.weight: 0.00012307902215979993\n", + "Grad decoder.fc2.bias: 0.0021044553723186255\n", + "Grad _memory_unit.weight_ih_l0: 5.779735602118308e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.449542368296534e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.813563150994014e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.37020674123778e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.460863657295704e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.951118535245769e-05\n", + "Data X Sample: tensor([[-0.0011, 0.0058, 0.0090, 0.0153, 0.0017, 0.0044, 0.0077, 0.0014,\n", + " 0.0342, 0.0205, 0.0476, 0.0019, 0.0133, 0.0055, 0.0227, 0.0082,\n", + " -0.0881, -0.0870, -0.1384, -0.0986, -0.1202, -0.0674, -0.1012, -0.0783,\n", + " -0.0826, -0.1515, -0.1225, -0.2406, -0.0416, 0.0033, -0.0210, -0.0111,\n", + " 0.0044, -0.0343, 0.0098, 0.0243, 0.0079, 0.0186, 0.0190, -0.0170,\n", + " 0.0382, 0.0100, 0.0081, 0.0115, -0.0079, 0.0229, 0.0000, -0.0313]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5807, 0.0512, 1.5850, -1.9793, 0.9192, -8.5193, -0.3349, -0.1443,\n", + " 0.6523, 0.9761, 0.7366, 2.0129, -0.5603, 0.1826, -0.5144, 0.4986,\n", + " 1.4868, 0.2353, 0.8538, 0.8273, -0.0357, -0.6932, 0.7362, -1.5090,\n", + " -0.6810, 0.3144, 0.9688, -1.9793, 0.4019, 0.3244, -0.3544, 0.2501,\n", + " 0.3254, -0.6450, 0.9998, 0.3674, 0.8233, -0.0920, -0.7130, -0.5382,\n", + " -1.3853, -0.2811, 0.8196]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 5.3468e-01, 4.1093e-01, 1.4987e-01, 2.8478e-01, 1.3743e-01,\n", + " -1.2815e-01, -5.4184e-01, -6.0633e-01, -3.2609e-01, -3.4148e-01,\n", + " -2.7276e-01, 2.9322e-01, 2.4253e-01, 3.5047e-01, 2.5489e-01,\n", + " 3.6111e-01, 3.6473e-01, 1.3421e-01, 1.3402e-01, 2.1986e-01,\n", + " 1.4104e-01, 9.7331e-02, 5.6722e-02, 8.0913e-02, 8.3459e-02,\n", + " 6.2310e-02, -8.1871e-02, 9.8476e-02, 2.9800e-01, 4.1295e-01,\n", + " 3.4591e-01, 2.6653e-01, 3.9590e-01, 4.0469e-01, 1.7430e-01,\n", + " 2.3600e-01, 3.7654e-02, 2.5929e-02, -1.0952e-04, -3.9800e-01,\n", + " -3.5077e-01, -3.6068e-01, -3.3116e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005459233070723712\n", + "Grad encoder.fc1.bias: 0.0006855481187812984\n", + "Grad encoder.encoder.0.weight: 0.00018474487296771258\n", + "Grad encoder.encoder.0.bias: 0.0006308969459496439\n", + "Grad encoder.encoder.2.weight: 0.00013591132301371545\n", + "Grad encoder.encoder.2.bias: 0.0007646525627933443\n", + "Grad encoder.encoder.4.weight: 0.0002445136778987944\n", + "Grad encoder.encoder.4.bias: 0.0019527398981153965\n", + "Grad decoder.fc1.0.weight: 6.969365495024249e-05\n", + "Grad decoder.fc1.0.bias: 0.0008105642627924681\n", + "Grad decoder.fc1.2.weight: 5.9140485973330215e-05\n", + "Grad decoder.fc1.2.bias: 0.0010210389737039804\n", + "Grad decoder.fc1.4.weight: 4.9355789087712765e-05\n", + "Grad decoder.fc1.4.bias: 0.00105705123860389\n", + "Grad decoder.fc2.weight: 0.00014479107630904764\n", + "Grad decoder.fc2.bias: 0.0024173452984541655\n", + "Grad _memory_unit.weight_ih_l0: 1.1000041013176087e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.693958180723712e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.5680803446448408e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.835958058421966e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00013750445214100182\n", + "Grad _memory_unit.bias_hh_l1: 7.097997877281159e-05\n", + "Data X Sample: tensor([[1.1977, 1.3356, 1.4605, 1.5765, 1.5913, 1.7650, 1.9844, 1.8881, 3.3906,\n", + " 3.7834, 3.8163, 3.8249, 3.7750, 3.5308, 3.3844, 3.3163, 3.2438, 3.2362,\n", + " 3.3061, 3.0369, 3.0817, 3.0970, 2.7929, 2.6989, 2.7064, 2.7242, 2.9543,\n", + " 2.7979, 2.7962, 2.8657, 2.9431, 3.1004, 3.1087, 2.3572, 3.8704, 4.2880,\n", + " 4.6035, 5.0938, 5.3940, 5.4501, 0.8925, 0.5536, 0.5517, 0.9644, 1.4866,\n", + " 1.5096, 1.0742, 1.4544]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 9.4182e-02, 1.9066e-01, -7.0604e-01, 7.5355e-01, -4.0627e-01,\n", + " 4.9594e-01, -1.7437e-01, 1.1428e-01, -2.0074e-03, 1.3583e-01,\n", + " -5.8682e-02, -1.2205e+00, -1.1393e+00, -6.2187e-01, -1.7932e-01,\n", + " -3.2120e-01, -4.1710e-02, 3.1686e+00, 8.7986e-01, -8.9530e-01,\n", + " -4.6012e-01, 3.3000e-01, 4.7604e-01, 2.8349e+00, 8.1620e-01,\n", + " 9.6599e-01, 4.8683e-01, -1.1266e+00, -1.5768e-02, -2.1460e-01,\n", + " -1.2087e-01, 1.1263e-01, 1.0446e+00, 2.1009e-01, 1.3815e+00,\n", + " 7.4414e-01, -8.2815e-01, -1.2207e-01, -2.9754e-01, 4.7940e-01,\n", + " -4.3972e-01, 7.4292e-01, -2.3201e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3046, -0.3256, -0.0733, -0.2092, -0.0056, 0.1218, 0.1918, 0.2893,\n", + " 0.2355, 0.2868, 0.2551, -0.1030, -0.2067, -0.2704, -0.1751, -0.3391,\n", + " -0.1856, -0.1112, 0.0087, -0.0891, -0.1650, 0.0341, -0.0166, -0.0746,\n", + " 0.0025, 0.0419, -0.0337, -0.1112, -0.2249, -0.2774, -0.2009, -0.1942,\n", + " -0.2625, -0.3180, -0.2133, -0.1486, 0.0410, 0.0029, -0.0076, 0.3604,\n", + " 0.3996, 0.3331, 0.3288]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00027675455203279853\n", + "Grad encoder.fc1.bias: 0.0004331616801209748\n", + "Grad encoder.encoder.0.weight: 9.791810589376837e-05\n", + "Grad encoder.encoder.0.bias: 0.00031110746203921735\n", + "Grad encoder.encoder.2.weight: 6.70414010528475e-05\n", + "Grad encoder.encoder.2.bias: 0.0003150619158986956\n", + "Grad encoder.encoder.4.weight: 0.00012955872807651758\n", + "Grad encoder.encoder.4.bias: 0.0008334614103659987\n", + "Grad decoder.fc1.0.weight: 3.937145811505616e-05\n", + "Grad decoder.fc1.0.bias: 0.00033007393358275294\n", + "Grad decoder.fc1.2.weight: 4.386982982396148e-05\n", + "Grad decoder.fc1.2.bias: 0.0006062679458409548\n", + "Grad decoder.fc1.4.weight: 4.051116411574185e-05\n", + "Grad decoder.fc1.4.bias: 0.0006973965791985393\n", + "Grad decoder.fc2.weight: 0.0001325792691204697\n", + "Grad decoder.fc2.bias: 0.002061752835288644\n", + "Grad _memory_unit.weight_ih_l0: 6.390896487573627e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.280889566463884e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.241947029484436e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.992128768004477e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.340521213132888e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.290673339506611e-05\n", + "Data X Sample: tensor([[2.5534, 2.9858, 3.2412, 3.4285, 3.4576, 3.6434, 3.7685, 3.8599, 3.7762,\n", + " 3.8640, 3.9654, 3.9885, 3.8171, 3.7898, 3.8787, 3.4750, 3.5520, 3.6985,\n", + " 3.4486, 3.4609, 3.4056, 3.1736, 2.9568, 2.9795, 2.9654, 2.9201, 2.9090,\n", + " 2.9203, 2.9072, 3.0229, 3.0516, 3.0756, 3.1461, 2.1924, 3.7110, 4.0545,\n", + " 4.2830, 4.5690, 5.1468, 5.1040, 1.9854, 1.1391, 1.1499, 1.9145, 3.0247,\n", + " 3.2251, 2.2301, 3.0026]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1039, -0.6418, -0.3496, 0.4965, 0.3470, 0.1298, 0.2452, 0.0094,\n", + " 0.4515, -0.0193, 0.1180, 0.1562, -0.2982, 0.0197, 0.4011, 0.3812,\n", + " 0.3948, 0.1908, 1.1024, 0.3135, 0.0459, 0.3503, 0.7785, -1.2887,\n", + " 1.0082, -0.9389, -0.8179, -0.7684, -0.8023, -2.0369, -2.0335, -0.3317,\n", + " -0.9826, -0.5395, -0.0522, -0.8598, 0.0000, 0.6219, -0.0231, 0.0880,\n", + " 0.1750, 0.0188, 0.1204]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2878, -0.3012, -0.0848, -0.2702, -0.1518, -0.0198, 0.1162, 0.2188,\n", + " 0.1714, 0.2488, 0.2299, -0.0643, -0.1542, -0.2151, -0.1441, -0.2911,\n", + " -0.2003, -0.1500, 0.0058, -0.0754, -0.1385, 0.0209, -0.0221, -0.0629,\n", + " -0.0129, 0.0153, 0.0654, -0.0355, -0.0886, -0.1805, -0.1435, -0.1606,\n", + " -0.1423, -0.2527, -0.1691, -0.1252, 0.0272, 0.0049, -0.0393, 0.3548,\n", + " 0.3704, 0.3020, 0.3053]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 7.588696462335065e-05\n", + "Grad encoder.fc1.bias: 0.00033545494079589844\n", + "Grad encoder.encoder.0.weight: 3.407262556720525e-05\n", + "Grad encoder.encoder.0.bias: 0.00025103852385655046\n", + "Grad encoder.encoder.2.weight: 2.7827552912640385e-05\n", + "Grad encoder.encoder.2.bias: 0.00031813900568522513\n", + "Grad encoder.encoder.4.weight: 6.978434248594567e-05\n", + "Grad encoder.encoder.4.bias: 0.0008585175382904708\n", + "Grad decoder.fc1.0.weight: 3.36686207447201e-05\n", + "Grad decoder.fc1.0.bias: 0.00040605507092550397\n", + "Grad decoder.fc1.2.weight: 9.052160748979077e-05\n", + "Grad decoder.fc1.2.bias: 0.0010490934364497662\n", + "Grad decoder.fc1.4.weight: 7.114026811905205e-05\n", + "Grad decoder.fc1.4.bias: 0.000959642929956317\n", + "Grad decoder.fc2.weight: 0.00017416516493540257\n", + "Grad decoder.fc2.bias: 0.002952848793938756\n", + "Grad _memory_unit.weight_ih_l0: 7.237322279252112e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.37422058894299e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.326653884665575e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.830278728855774e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.25654569780454e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.3566142267081887e-05\n", + "Data X Sample: tensor([[1.3653, 1.4929, 1.6995, 1.8258, 1.8235, 2.0699, 2.0152, 2.0372, 3.3930,\n", + " 4.2036, 4.1557, 4.1326, 3.9991, 3.7816, 3.8282, 3.5160, 3.5001, 3.5999,\n", + " 3.4837, 3.3847, 3.5185, 3.4078, 3.2026, 3.0062, 2.8546, 2.9932, 2.9117,\n", + " 3.0222, 2.8725, 3.0393, 3.1776, 3.3160, 3.7445, 2.7142, 4.5812, 4.8620,\n", + " 5.0853, 5.4489, 5.9201, 5.8927, 0.9641, 0.5775, 0.6023, 1.1596, 1.5381,\n", + " 1.8756, 1.0538, 1.8610]], device='cuda:0')\n", + "Data Y Sample: tensor([[-7.5961e-01, -9.5894e-01, 1.4215e-03, -4.6831e-01, 1.1121e+00,\n", + " 3.6757e-01, 7.7732e-01, 6.8129e-01, 4.3465e-01, 5.1610e-01,\n", + " 2.0228e-01, 2.1897e+00, -1.0641e+00, 5.7179e-01, 3.7110e-01,\n", + " 5.3700e-01, 4.9812e-02, 7.5737e-01, 1.4614e+00, 7.0829e-01,\n", + " 3.2675e-01, -1.8260e-01, 8.7928e-01, 5.8586e-02, 2.0191e-01,\n", + " 2.1863e+00, 5.1685e-02, -7.6120e-01, 9.6164e-02, 1.3561e-01,\n", + " -1.1114e+00, -9.5907e-02, -7.9431e-01, -1.1040e+00, -4.3591e-02,\n", + " -7.1361e-01, 4.8520e-01, 7.9156e-01, 2.2533e-01, 4.6369e-01,\n", + " 7.1135e-01, 6.9039e-01, 4.2429e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2814, -0.3077, -0.0537, -0.1879, 0.0399, 0.1567, 0.2116, 0.2943,\n", + " 0.2394, 0.2758, 0.2469, -0.1290, -0.2070, -0.2709, -0.1799, -0.3318,\n", + " -0.1833, -0.0853, 0.0141, -0.0915, -0.1606, 0.0304, -0.0131, -0.0670,\n", + " -0.0066, 0.0478, -0.0620, -0.1249, -0.2451, -0.2887, -0.2053, -0.1940,\n", + " -0.2903, -0.3318, -0.2266, -0.1459, 0.0451, 0.0099, -0.0021, 0.3327,\n", + " 0.3873, 0.3328, 0.3141]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00010363326873630285\n", + "Grad encoder.fc1.bias: 0.0002557388797868043\n", + "Grad encoder.encoder.0.weight: 2.99093262583483e-05\n", + "Grad encoder.encoder.0.bias: 0.00020542857237160206\n", + "Grad encoder.encoder.2.weight: 2.6793113647727296e-05\n", + "Grad encoder.encoder.2.bias: 0.000282651511952281\n", + "Grad encoder.encoder.4.weight: 6.442352605517954e-05\n", + "Grad encoder.encoder.4.bias: 0.0008715791627764702\n", + "Grad decoder.fc1.0.weight: 2.895289071602747e-05\n", + "Grad decoder.fc1.0.bias: 0.0003244337858632207\n", + "Grad decoder.fc1.2.weight: 3.8478567148558795e-05\n", + "Grad decoder.fc1.2.bias: 0.0004695431562140584\n", + "Grad decoder.fc1.4.weight: 3.861938967020251e-05\n", + "Grad decoder.fc1.4.bias: 0.0004896919708698988\n", + "Grad decoder.fc2.weight: 0.00015752996841911227\n", + "Grad decoder.fc2.bias: 0.0019996585324406624\n", + "Grad _memory_unit.weight_ih_l0: 5.739896096201846e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.481563569745049e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.3335702533368021e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.786210416161339e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.491026604431681e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.8570137146743946e-05\n", + "Data X Sample: tensor([[ 0.0149, 0.0160, 0.0240, 0.0087, 0.0085, 0.0354, 0.0293, 0.0128,\n", + " 0.0366, 0.0300, 0.0254, 0.0312, 0.0111, 0.0109, 0.0126, 0.0232,\n", + " -0.1101, -0.1238, -0.1797, -0.1544, -0.1472, -0.1072, -0.1976, -0.1775,\n", + " -0.1558, -0.3187, -0.3090, -0.5465, -0.0694, -0.0721, -0.0910, -0.0801,\n", + " -0.0352, -0.0664, -0.0539, 0.0024, -0.0236, -0.0398, -0.0570, -0.0340,\n", + " -0.0095, -0.0060, 0.0182, 0.0057, 0.0357, 0.0114, 0.0204, 0.0156]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6359, 0.6633, -0.8836, 0.9187, 0.4034, -0.9630, 0.0656, -1.0620,\n", + " -0.2599, -0.4928, -0.7504, 0.3774, -0.2755, -0.8066, 1.1852, 1.0913,\n", + " -0.1289, -0.1084, -0.8496, 0.2778, -0.2666, -1.3762, -1.5870, -0.4039,\n", + " -0.2276, -0.5566, -0.2606, 0.8521, 0.9217, 1.2415, 1.3497, -0.3449,\n", + " 0.5049, 1.3544, 0.4246, 0.2908, 0.0540, 0.7966, -0.7095, -0.5524,\n", + " -0.8225, -0.7385, -0.9409]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5422, 0.4221, 0.1845, 0.3125, 0.1810, -0.1301, -0.5389, -0.6164,\n", + " -0.2927, -0.3364, -0.2493, 0.2953, 0.2641, 0.3749, 0.2660, 0.3917,\n", + " 0.3833, 0.1559, 0.1418, 0.2246, 0.1644, 0.1074, 0.0733, 0.0735,\n", + " 0.0960, 0.0722, -0.1338, 0.0759, 0.2712, 0.3925, 0.3395, 0.2514,\n", + " 0.4051, 0.4021, 0.1713, 0.2613, 0.0510, 0.0372, 0.0162, -0.4031,\n", + " -0.3833, -0.3795, -0.3538]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 8.480703399982303e-05\n", + "Grad encoder.fc1.bias: 4.5773045712849125e-05\n", + "Grad encoder.encoder.0.weight: 3.244456820539199e-05\n", + "Grad encoder.encoder.0.bias: 7.151944737415761e-05\n", + "Grad encoder.encoder.2.weight: 3.010269210790284e-05\n", + "Grad encoder.encoder.2.bias: 0.00011094746878370643\n", + "Grad encoder.encoder.4.weight: 6.859460700070485e-05\n", + "Grad encoder.encoder.4.bias: 0.0003354054060764611\n", + "Grad decoder.fc1.0.weight: 2.5625908165238798e-05\n", + "Grad decoder.fc1.0.bias: 0.00016356026753783226\n", + "Grad decoder.fc1.2.weight: 4.154666748945601e-05\n", + "Grad decoder.fc1.2.bias: 0.0005603496683761477\n", + "Grad decoder.fc1.4.weight: 4.979078221367672e-05\n", + "Grad decoder.fc1.4.bias: 0.0007860912592150271\n", + "Grad decoder.fc2.weight: 0.00011983472359133884\n", + "Grad decoder.fc2.bias: 0.0019608414731919765\n", + "Grad _memory_unit.weight_ih_l0: 5.480444542627083e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.029600394365843e-06\n", + "Grad _memory_unit.bias_hh_l0: 4.683141469286056e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.4583291633462068e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.0040268029551953e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.5437959518749267e-05\n", + "Data X Sample: tensor([[1.4661, 1.6633, 1.7235, 1.7711, 2.0097, 2.0184, 2.0707, 2.0045, 3.0390,\n", + " 4.0583, 4.3873, 4.2339, 4.0768, 3.9915, 3.8888, 3.5926, 3.5378, 3.5573,\n", + " 3.4692, 3.4981, 3.3884, 3.2976, 2.9038, 2.8707, 2.7852, 2.8914, 2.8345,\n", + " 2.8672, 3.0251, 3.1998, 3.3175, 3.2939, 3.8897, 2.8423, 4.6400, 4.9107,\n", + " 5.1423, 5.3244, 5.9771, 5.8700, 1.1025, 0.6711, 0.6508, 1.1482, 1.6848,\n", + " 1.7040, 1.1626, 1.8453]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5401, -0.5467, -0.2639, -0.3858, 0.3755, 0.0654, 0.6713, 0.4471,\n", + " 0.4861, 0.6186, 0.3085, -0.1591, -0.6637, 0.1603, -4.5521, 0.2222,\n", + " 0.0200, -0.1958, -0.2844, -1.2321, -0.2477, -0.6375, -0.8079, 0.6812,\n", + " -0.3436, 0.1100, -0.2975, -1.2790, -0.4773, -0.1927, -0.6958, -1.8836,\n", + " -0.3499, 0.1523, -0.7674, -0.1135, 0.5021, 0.8238, 0.0173, 0.4874,\n", + " 0.2936, 0.3097, 1.5357]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2657, -0.2916, -0.0386, -0.1753, 0.0654, 0.1784, 0.2233, 0.2936,\n", + " 0.2340, 0.2643, 0.2391, -0.1474, -0.2060, -0.2706, -0.1824, -0.3208,\n", + " -0.1920, -0.0760, 0.0124, -0.0977, -0.1510, 0.0168, -0.0111, -0.0576,\n", + " -0.0118, 0.0443, -0.0798, -0.1381, -0.2477, -0.2838, -0.2052, -0.1867,\n", + " -0.2990, -0.3378, -0.2331, -0.1456, 0.0500, 0.0129, -0.0006, 0.3181,\n", + " 0.3754, 0.3271, 0.2999]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 4.730117507278919e-05\n", + "Grad encoder.fc1.bias: 0.0008848997531458735\n", + "Grad encoder.encoder.0.weight: 2.7845009753946215e-05\n", + "Grad encoder.encoder.0.bias: 0.0008200389565899968\n", + "Grad encoder.encoder.2.weight: 3.440069122007117e-05\n", + "Grad encoder.encoder.2.bias: 0.0007482231594622135\n", + "Grad encoder.encoder.4.weight: 0.000108848194940947\n", + "Grad encoder.encoder.4.bias: 0.0018321971874684095\n", + "Grad decoder.fc1.0.weight: 5.4108499170979485e-05\n", + "Grad decoder.fc1.0.bias: 0.0006380658596754074\n", + "Grad decoder.fc1.2.weight: 6.223679520189762e-05\n", + "Grad decoder.fc1.2.bias: 0.0006334429490379989\n", + "Grad decoder.fc1.4.weight: 6.183164805406705e-05\n", + "Grad decoder.fc1.4.bias: 0.0007253378862515092\n", + "Grad decoder.fc2.weight: 0.00016679477994330227\n", + "Grad decoder.fc2.bias: 0.0020010266453027725\n", + "Grad _memory_unit.weight_ih_l0: 1.2680179679591674e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.037611744133756e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.623135828296654e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.890313332201913e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00016638005035929382\n", + "Grad _memory_unit.bias_hh_l1: 8.670640818309039e-05\n", + "Data X Sample: tensor([[ 0.0138, 0.0160, 0.0285, 0.0175, 0.0205, 0.0339, 0.0077, 0.0170,\n", + " 0.0317, 0.0300, 0.0539, 0.0253, 0.0333, 0.0436, 0.0000, 0.0219,\n", + " -0.1226, -0.1664, -0.1920, -0.1730, -0.1791, -0.1102, -0.2097, -0.1794,\n", + " -0.1501, -0.3134, -0.3170, -0.5547, -0.0694, -0.0753, -0.0595, -0.0608,\n", + " -0.0330, -0.0732, -0.0392, -0.0097, -0.0216, -0.0080, -0.0127, 0.0113,\n", + " 0.0000, -0.0020, 0.0020, 0.0029, 0.0000, -0.0343, -0.0136, -0.0235]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 3.7461e-01, 4.9577e-01, 1.6735e+00, 8.0054e-01, -8.8423e-02,\n", + " -6.3562e-01, -7.9910e-01, -9.0598e-01, -9.7519e-01, -8.6882e-01,\n", + " -8.8760e-01, -2.2212e-01, 9.8964e-01, 6.1518e-01, -6.9191e-01,\n", + " -1.5223e-02, -1.1317e+00, 8.2469e-01, -5.4910e-01, 7.0303e-01,\n", + " -3.5750e-01, 7.6682e-01, 1.3622e+00, 1.1568e-01, 7.4435e-01,\n", + " -6.0866e-04, 1.4257e+00, 7.7526e-01, 4.0357e-01, 1.0374e+00,\n", + " 1.0633e+00, -2.9616e-02, 3.0802e-01, 8.1333e-01, 9.1683e-01,\n", + " 9.8202e-01, -7.5610e-01, 0.0000e+00, -8.5479e-01, -6.2461e-01,\n", + " -4.8614e-01, -6.5826e-01, -7.9067e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5729, 0.4478, 0.2083, 0.3390, 0.1942, -0.1537, -0.5654, -0.6558,\n", + " -0.3039, -0.3593, -0.2648, 0.3036, 0.2850, 0.4085, 0.2882, 0.4148,\n", + " 0.3959, 0.1629, 0.1503, 0.2352, 0.1815, 0.1027, 0.0759, 0.0771,\n", + " 0.0993, 0.0778, -0.1386, 0.0804, 0.2865, 0.4192, 0.3662, 0.2670,\n", + " 0.4191, 0.4267, 0.1791, 0.2727, 0.0578, 0.0498, 0.0233, -0.4298,\n", + " -0.4165, -0.4038, -0.3808]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001295313413720578\n", + "Grad encoder.fc1.bias: 0.000608868314884603\n", + "Grad encoder.encoder.0.weight: 4.6362281864276156e-05\n", + "Grad encoder.encoder.0.bias: 0.0003925575001630932\n", + "Grad encoder.encoder.2.weight: 3.07130794681143e-05\n", + "Grad encoder.encoder.2.bias: 0.00039028743049129844\n", + "Grad encoder.encoder.4.weight: 8.331660501426086e-05\n", + "Grad encoder.encoder.4.bias: 0.0007427802192978561\n", + "Grad decoder.fc1.0.weight: 3.2465974072692916e-05\n", + "Grad decoder.fc1.0.bias: 0.00031419473816640675\n", + "Grad decoder.fc1.2.weight: 5.1175738917663693e-05\n", + "Grad decoder.fc1.2.bias: 0.0005542203434742987\n", + "Grad decoder.fc1.4.weight: 5.56477862119209e-05\n", + "Grad decoder.fc1.4.bias: 0.000704925216268748\n", + "Grad decoder.fc2.weight: 0.0001641369890421629\n", + "Grad decoder.fc2.bias: 0.0017180652357637882\n", + "Grad _memory_unit.weight_ih_l0: 7.49985429138178e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.4362509318743832e-05\n", + "Grad _memory_unit.bias_hh_l0: 7.732796802883968e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.81665961665567e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.586050272337161e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.3393506126012653e-05\n", + "Data X Sample: tensor([[1.6082, 1.8862, 2.0947, 2.1559, 2.2641, 2.4780, 2.5683, 2.5780, 2.6290,\n", + " 2.7108, 2.7472, 2.7401, 2.6320, 2.5302, 2.5446, 2.5354, 2.5127, 2.5746,\n", + " 2.5296, 2.4809, 2.5419, 2.5428, 2.4098, 2.4488, 2.5337, 2.5649, 2.5467,\n", + " 2.6062, 2.3590, 2.3024, 2.3167, 2.4373, 2.2286, 1.4646, 1.9634, 1.8825,\n", + " 1.6971, 1.6670, 1.6100, 1.5633, 1.2695, 0.7587, 0.7740, 1.3462, 1.9583,\n", + " 2.0757, 1.4754, 1.9157]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5739, 0.7099, 0.0260, 0.7652, 0.2862, -0.5557, -0.3317, -0.4638,\n", + " -0.2757, -0.5580, -0.3575, -0.0644, -0.3339, -0.0296, -0.2053, -0.1832,\n", + " -0.0217, 0.3942, -0.4436, -0.2784, -0.6046, -0.4473, -0.3894, 0.2184,\n", + " 5.8044, 0.6132, -0.5222, -0.5612, 0.2884, 0.5327, 0.5405, 0.9871,\n", + " 0.8763, 0.9551, 0.3178, 0.7423, -0.1634, -0.7204, -1.1505, -0.5309,\n", + " -0.3930, -0.3994, -0.5705]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4078, 0.3366, 0.1477, 0.2600, 0.1682, -0.1042, -0.3760, -0.4329,\n", + " -0.2024, -0.2433, -0.2108, 0.1959, 0.1993, 0.2963, 0.2095, 0.3390,\n", + " 0.2611, 0.1161, 0.1107, 0.1681, 0.1430, 0.0961, 0.0694, 0.0426,\n", + " 0.0688, 0.0472, -0.1173, 0.0194, 0.1700, 0.2726, 0.2275, 0.1677,\n", + " 0.2884, 0.2911, 0.1293, 0.2222, 0.0499, 0.0301, 0.0188, -0.2945,\n", + " -0.2821, -0.2798, -0.2944]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0011004859115928411\n", + "Grad encoder.fc1.bias: 0.000575389654841274\n", + "Grad encoder.encoder.0.weight: 0.0003590930427890271\n", + "Grad encoder.encoder.0.bias: 0.0009609793778508902\n", + "Grad encoder.encoder.2.weight: 0.00020424407557584345\n", + "Grad encoder.encoder.2.bias: 0.0009124687639996409\n", + "Grad encoder.encoder.4.weight: 0.0003244275867473334\n", + "Grad encoder.encoder.4.bias: 0.002676788717508316\n", + "Grad decoder.fc1.0.weight: 7.977039786055684e-05\n", + "Grad decoder.fc1.0.bias: 0.0008257938316091895\n", + "Grad decoder.fc1.2.weight: 5.724724178435281e-05\n", + "Grad decoder.fc1.2.bias: 0.0011562632862478495\n", + "Grad decoder.fc1.4.weight: 6.226215919014066e-05\n", + "Grad decoder.fc1.4.bias: 0.001099101733416319\n", + "Grad decoder.fc2.weight: 0.00016678303654771298\n", + "Grad decoder.fc2.bias: 0.002370353089645505\n", + "Grad _memory_unit.weight_ih_l0: 1.0006147931562737e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.5109114833176136e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.8329745216760784e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.513329819630599e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00015935994451865554\n", + "Grad _memory_unit.bias_hh_l1: 8.016727224458009e-05\n", + "Data X Sample: tensor([[1.6793, 1.8469, 1.9113, 1.9766, 2.1531, 2.2128, 2.2679, 2.3239, 2.3751,\n", + " 2.3522, 2.2968, 2.4266, 2.3502, 2.3638, 2.3378, 2.3330, 2.1919, 2.3561,\n", + " 2.4099, 2.5143, 2.3972, 2.5107, 2.5399, 2.5004, 2.5206, 2.6432, 2.5174,\n", + " 2.5940, 2.4423, 2.4498, 2.5651, 2.3544, 2.1560, 1.4028, 1.9413, 1.7901,\n", + " 1.6125, 1.5106, 1.6163, 1.5945, 1.3172, 0.7468, 0.7013, 1.2974, 1.8988,\n", + " 1.9899, 1.3530, 1.9313]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5694, 0.3314, 0.2560, 0.7954, -0.6393, 0.8808, 0.1211, -0.4227,\n", + " 0.5392, -0.3712, -0.3725, 0.0607, 0.7401, 1.2016, -0.5096, -0.2914,\n", + " 1.0962, 1.2445, -0.1788, 0.4378, -0.0158, -0.6518, 0.0826, -0.9915,\n", + " 1.2846, -0.1338, 0.6686, -0.8797, -0.8299, -0.3099, 0.1322, 0.0935,\n", + " 0.0513, 0.6211, 0.3407, 0.8277, 0.8892, -0.0869, -0.6489, -0.4650,\n", + " -0.3367, -0.3534, -0.5011]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3981, 0.3228, 0.1471, 0.2551, 0.1635, -0.1029, -0.3671, -0.4267,\n", + " -0.1961, -0.2360, -0.2047, 0.1862, 0.1926, 0.2887, 0.2026, 0.3315,\n", + " 0.2474, 0.1156, 0.1061, 0.1606, 0.1452, 0.0941, 0.0692, 0.0474,\n", + " 0.0663, 0.0444, -0.1136, 0.0188, 0.1696, 0.2676, 0.2216, 0.1635,\n", + " 0.2784, 0.2817, 0.1253, 0.2164, 0.0490, 0.0296, 0.0140, -0.2871,\n", + " -0.2777, -0.2690, -0.2861]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00019534167950041592\n", + "Grad encoder.fc1.bias: 0.00013244531874079257\n", + "Grad encoder.encoder.0.weight: 7.020003977231681e-05\n", + "Grad encoder.encoder.0.bias: 0.0001674414670560509\n", + "Grad encoder.encoder.2.weight: 5.028353552916087e-05\n", + "Grad encoder.encoder.2.bias: 0.00022792852541897446\n", + "Grad encoder.encoder.4.weight: 9.221455547958612e-05\n", + "Grad encoder.encoder.4.bias: 0.0006963335908949375\n", + "Grad decoder.fc1.0.weight: 2.9171711503295228e-05\n", + "Grad decoder.fc1.0.bias: 0.0003045997000299394\n", + "Grad decoder.fc1.2.weight: 3.3426968002459034e-05\n", + "Grad decoder.fc1.2.bias: 0.0004584577400237322\n", + "Grad decoder.fc1.4.weight: 3.525950887706131e-05\n", + "Grad decoder.fc1.4.bias: 0.0005580860888585448\n", + "Grad decoder.fc2.weight: 0.00011825470573967323\n", + "Grad decoder.fc2.bias: 0.0018958556465804577\n", + "Grad _memory_unit.weight_ih_l0: 4.597505267156521e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.3970795155037194e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.2788277672370896e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.649917860253481e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.369279460865073e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.8319822376943193e-05\n", + "Data X Sample: tensor([[1.3844, 1.5687, 1.7010, 1.8804, 1.9653, 2.1510, 2.0953, 2.4034, 4.0667,\n", + " 4.2905, 4.3334, 4.2416, 4.0635, 4.0134, 3.8005, 3.7293, 3.6432, 3.8436,\n", + " 3.6881, 3.6209, 3.5700, 3.4093, 2.8532, 2.8459, 2.8471, 3.0063, 2.9250,\n", + " 3.0467, 3.0182, 3.2260, 3.2825, 3.3132, 3.8589, 2.8560, 4.6327, 4.8864,\n", + " 5.1443, 5.6397, 6.2433, 6.0828, 1.1168, 0.6313, 0.6528, 1.0534, 1.6055,\n", + " 1.7898, 1.0810, 1.8062]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6684, -0.1648, 0.3966, -0.6342, -0.2049, 0.1927, 0.3900, 0.8622,\n", + " 0.8440, 1.3520, 1.3365, -1.9699, -0.3121, -1.1048, -1.4822, -1.4704,\n", + " -1.5133, -0.0349, -0.7394, -0.3282, -0.6833, 0.5128, -1.8129, -1.9005,\n", + " 0.2144, 1.1602, -1.3289, -1.5191, -1.1137, -0.5096, -1.5174, 0.5638,\n", + " -1.1172, -1.4295, -1.2212, -0.3405, 0.0000, -0.1310, 0.3478, 0.8750,\n", + " 1.0917, 0.9710, 0.6320]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2941, -0.2882, -0.0046, -0.1575, 0.1436, 0.2627, 0.2696, 0.3268,\n", + " 0.2526, 0.2894, 0.2407, -0.1985, -0.2331, -0.3094, -0.1905, -0.3228,\n", + " -0.2115, -0.0678, -0.0137, -0.1131, -0.1553, -0.0326, -0.0049, -0.0279,\n", + " -0.0305, 0.0269, -0.1285, -0.1910, -0.2770, -0.3128, -0.2318, -0.1837,\n", + " -0.3569, -0.3905, -0.2615, -0.1705, 0.0769, 0.0169, -0.0047, 0.3352,\n", + " 0.3806, 0.3412, 0.3111]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002245126524940133\n", + "Grad encoder.fc1.bias: 0.0005605204496532679\n", + "Grad encoder.encoder.0.weight: 8.161747246049345e-05\n", + "Grad encoder.encoder.0.bias: 0.0004600181709975004\n", + "Grad encoder.encoder.2.weight: 5.871040775673464e-05\n", + "Grad encoder.encoder.2.bias: 0.0004031502176076174\n", + "Grad encoder.encoder.4.weight: 0.0001297593698836863\n", + "Grad encoder.encoder.4.bias: 0.0008381297229789197\n", + "Grad decoder.fc1.0.weight: 4.6649784053443e-05\n", + "Grad decoder.fc1.0.bias: 0.00037036207504570484\n", + "Grad decoder.fc1.2.weight: 5.0695227400865406e-05\n", + "Grad decoder.fc1.2.bias: 0.0005273534916341305\n", + "Grad decoder.fc1.4.weight: 5.2345752919791266e-05\n", + "Grad decoder.fc1.4.bias: 0.0006206082762219012\n", + "Grad decoder.fc2.weight: 0.00013778780703432858\n", + "Grad decoder.fc2.bias: 0.0020985042210668325\n", + "Grad _memory_unit.weight_ih_l0: 9.583838618709706e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.401692422106862e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.274020152981393e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.962393748224713e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.982103124959394e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.150668246438727e-05\n", + "Data X Sample: tensor([[1.4788, 1.7930, 2.0571, 2.2303, 2.3324, 2.5208, 2.4620, 2.5823, 2.5801,\n", + " 2.5370, 2.5061, 2.4129, 2.2703, 2.2466, 2.0982, 1.9898, 2.0897, 2.0408,\n", + " 2.0402, 1.9062, 1.9580, 1.8784, 1.8266, 1.6854, 1.6929, 1.6716, 1.6064,\n", + " 1.6722, 1.2524, 1.3395, 1.1793, 1.1440, 1.0538, 0.7666, 1.1913, 1.3523,\n", + " 1.4159, 1.6114, 1.8952, 1.8725, 1.2313, 0.7727, 0.7619, 1.3663, 2.0495,\n", + " 2.2873, 1.5026, 2.3301]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.3759, -1.2092, 0.2614, -0.2769, -0.4295, -0.5190, 0.6643, 1.8338,\n", + " 1.2066, 2.3257, 2.2543, -0.9131, -0.7171, -0.6522, -0.4384, -0.9699,\n", + " -0.6780, -0.6051, 0.3680, 0.0818, -0.6046, 0.7225, -0.1882, 0.1851,\n", + " 0.2431, -0.2293, 0.6119, 0.5813, 0.1313, -1.3110, -0.8845, -1.7092,\n", + " -2.1091, -1.2774, -0.9307, -1.0369, 0.5590, -0.0948, -0.6471, 4.1304,\n", + " 4.8961, 3.2407, 1.7511]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2635, -0.2647, -0.0740, -0.2500, -0.1518, -0.0159, 0.1211, 0.2366,\n", + " 0.1560, 0.2450, 0.2146, -0.1152, -0.1397, -0.2099, -0.1447, -0.2602,\n", + " -0.2246, -0.1395, -0.0159, -0.0826, -0.1065, -0.0111, -0.0353, -0.0411,\n", + " -0.0280, 0.0224, 0.0501, -0.0460, -0.0572, -0.1445, -0.1376, -0.1526,\n", + " -0.1295, -0.2483, -0.1813, -0.1265, 0.0293, 0.0070, -0.0526, 0.3401,\n", + " 0.3544, 0.3188, 0.2849]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006521359318867326\n", + "Grad encoder.fc1.bias: 0.0008355305762961507\n", + "Grad encoder.encoder.0.weight: 0.00027345045236870646\n", + "Grad encoder.encoder.0.bias: 0.0011506215669214725\n", + "Grad encoder.encoder.2.weight: 0.00017636055417824537\n", + "Grad encoder.encoder.2.bias: 0.0009897231357172132\n", + "Grad encoder.encoder.4.weight: 0.0003233317984268069\n", + "Grad encoder.encoder.4.bias: 0.0019441163167357445\n", + "Grad decoder.fc1.0.weight: 8.316029561683536e-05\n", + "Grad decoder.fc1.0.bias: 0.0006544530624523759\n", + "Grad decoder.fc1.2.weight: 6.327965093078092e-05\n", + "Grad decoder.fc1.2.bias: 0.0008085396839305758\n", + "Grad decoder.fc1.4.weight: 7.364417251665145e-05\n", + "Grad decoder.fc1.4.bias: 0.0011262909974902868\n", + "Grad decoder.fc2.weight: 0.0001721500448184088\n", + "Grad decoder.fc2.bias: 0.002377911237999797\n", + "Grad _memory_unit.weight_ih_l0: 1.4792083675274625e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.8661659598583356e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.6017969755921513e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.014719813014381e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011673077096929774\n", + "Grad _memory_unit.bias_hh_l1: 6.054600089555606e-05\n", + "Data X Sample: tensor([[1.9519, 2.4542, 2.6581, 2.7201, 2.8651, 2.9303, 3.0089, 3.0692, 3.1465,\n", + " 3.1800, 3.2453, 3.2854, 3.2179, 3.1000, 3.0692, 3.0866, 2.9812, 2.9751,\n", + " 2.9757, 2.8974, 2.7897, 2.7679, 2.5592, 2.5538, 2.4868, 2.4970, 2.3256,\n", + " 2.3126, 2.0260, 2.0077, 2.0052, 1.9371, 1.8678, 1.2518, 1.9732, 2.3179,\n", + " 2.5840, 2.7987, 2.9727, 2.9308, 1.6943, 1.0256, 0.9660, 1.7251, 2.5529,\n", + " 2.7390, 1.8765, 2.5569]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2075, 0.2129, -0.5957, -0.1794, 0.6017, 0.8006, -0.1521, -0.6234,\n", + " -0.4517, -0.2333, -0.2062, 0.6936, -1.1591, -0.4919, 0.4342, -0.0198,\n", + " -1.7149, 0.1473, 0.2316, 0.0125, -0.0145, 1.3345, -0.3741, 0.5013,\n", + " 0.1668, -0.9412, -0.1740, 0.0284, -0.2193, -0.0616, 0.4476, 0.0561,\n", + " 0.8419, 0.3370, 0.2994, -0.9169, -0.9960, -0.6173, 0.0000, -0.1279,\n", + " 0.0176, -0.0104, -0.5616]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2543, -0.2642, -0.0649, -0.2323, -0.1146, 0.0227, 0.1428, 0.2429,\n", + " 0.1677, 0.2336, 0.2231, -0.1327, -0.1482, -0.2215, -0.1550, -0.2618,\n", + " -0.2162, -0.1230, -0.0286, -0.0859, -0.1107, -0.0156, -0.0357, -0.0363,\n", + " -0.0266, 0.0266, 0.0245, -0.0769, -0.0842, -0.1608, -0.1598, -0.1532,\n", + " -0.1629, -0.2615, -0.1923, -0.1343, 0.0241, 0.0083, -0.0388, 0.3303,\n", + " 0.3444, 0.3221, 0.2740]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00033424817956984043\n", + "Grad encoder.fc1.bias: 0.0007739349966868758\n", + "Grad encoder.encoder.0.weight: 0.00014671591634396464\n", + "Grad encoder.encoder.0.bias: 0.0009328573360107839\n", + "Grad encoder.encoder.2.weight: 9.605849481886253e-05\n", + "Grad encoder.encoder.2.bias: 0.0008741929195821285\n", + "Grad encoder.encoder.4.weight: 0.00019383893231861293\n", + "Grad encoder.encoder.4.bias: 0.002892490942031145\n", + "Grad decoder.fc1.0.weight: 7.336712587857619e-05\n", + "Grad decoder.fc1.0.bias: 0.001045080367475748\n", + "Grad decoder.fc1.2.weight: 7.845832442399114e-05\n", + "Grad decoder.fc1.2.bias: 0.000961252604611218\n", + "Grad decoder.fc1.4.weight: 6.852448132121935e-05\n", + "Grad decoder.fc1.4.bias: 0.0009155934676527977\n", + "Grad decoder.fc2.weight: 0.00020446481357794255\n", + "Grad decoder.fc2.bias: 0.0023556791711598635\n", + "Grad _memory_unit.weight_ih_l0: 1.3347698768484406e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00012263022654224187\n", + "Grad _memory_unit.bias_hh_l0: 6.438558921217918e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.604724487464409e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00021802910487167537\n", + "Grad _memory_unit.bias_hh_l1: 0.00011473834456410259\n", + "Data X Sample: tensor([[1.4555, 1.8760, 2.0736, 2.1953, 2.2265, 2.3381, 2.4835, 2.4034, 2.6021,\n", + " 2.4533, 2.6774, 2.6252, 2.4212, 2.4947, 2.4034, 2.4548, 2.4246, 2.4973,\n", + " 2.4718, 2.4716, 2.4978, 2.5689, 2.5279, 2.5634, 2.4380, 2.4996, 2.2724,\n", + " 2.3452, 1.9080, 1.9618, 1.8477, 1.7409, 1.5048, 0.9795, 1.3236, 1.3548,\n", + " 1.3864, 1.3728, 1.5085, 1.4668, 1.2409, 0.7687, 0.7619, 1.3319, 2.0376,\n", + " 2.1157, 1.3462, 1.9783]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6230, -0.6886, -0.5015, -1.8682, -0.1358, 0.3532, -0.5433, -0.1131,\n", + " 0.1221, -0.1626, -0.1153, 0.4475, -0.5675, 0.3826, 0.9169, 0.3288,\n", + " 0.0630, -1.8922, 0.7299, 0.0098, -0.6630, -0.7537, -0.6811, -2.4818,\n", + " 0.3798, 0.3907, -0.5652, 0.7926, 0.1030, 0.1536, -0.0470, 0.2677,\n", + " -0.1825, -0.1589, 0.9167, -1.0200, -0.5204, 0.0000, -0.5596, -0.0648,\n", + " -0.1013, -0.3805, 0.0178]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.0741, -0.1151, 0.0004, -0.1347, -0.1145, -0.0689, -0.0451, 0.0473,\n", + " 0.0179, 0.1077, 0.0598, -0.0581, -0.0175, -0.0618, -0.0539, -0.0551,\n", + " -0.1446, -0.0491, -0.0030, -0.0213, -0.0109, 0.0206, -0.0369, -0.0125,\n", + " 0.0087, 0.0003, 0.0611, 0.0152, 0.0727, -0.0018, -0.0199, -0.0373,\n", + " -0.0020, -0.0825, -0.0772, -0.0167, 0.0453, 0.0559, -0.0530, 0.1589,\n", + " 0.1662, 0.1593, 0.1061]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 7.770911179250106e-05\n", + "Grad encoder.fc1.bias: 6.529146048706025e-05\n", + "Grad encoder.encoder.0.weight: 2.70063137577381e-05\n", + "Grad encoder.encoder.0.bias: 9.041020530276e-05\n", + "Grad encoder.encoder.2.weight: 2.8196889616083354e-05\n", + "Grad encoder.encoder.2.bias: 0.00015126439393498003\n", + "Grad encoder.encoder.4.weight: 6.747654697392136e-05\n", + "Grad encoder.encoder.4.bias: 0.0007435541483573616\n", + "Grad decoder.fc1.0.weight: 3.3970984077313915e-05\n", + "Grad decoder.fc1.0.bias: 0.00033780495868995786\n", + "Grad decoder.fc1.2.weight: 7.273712253663689e-05\n", + "Grad decoder.fc1.2.bias: 0.000699091178830713\n", + "Grad decoder.fc1.4.weight: 6.646608380833641e-05\n", + "Grad decoder.fc1.4.bias: 0.0008512645727023482\n", + "Grad decoder.fc2.weight: 0.00015037119737826288\n", + "Grad decoder.fc2.bias: 0.002101566642522812\n", + "Grad _memory_unit.weight_ih_l0: 7.8087869042065e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.512835221248679e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.4184102585422806e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.7760805753350724e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.423503848258406e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.926763019990176e-05\n", + "Data X Sample: tensor([[1.7090, 2.0653, 2.1488, 2.2609, 2.2948, 2.4073, 2.3803, 2.4829, 2.5386,\n", + " 2.6050, 2.5918, 2.6428, 2.5677, 2.4511, 2.4488, 2.3932, 2.3806, 2.5534,\n", + " 2.5400, 2.5924, 2.6327, 2.6515, 2.6749, 2.6149, 2.5956, 2.6772, 2.7013,\n", + " 2.6184, 2.2480, 2.3876, 2.3377, 2.3322, 2.1098, 1.3639, 1.8408, 1.8071,\n", + " 1.7089, 1.6326, 1.6987, 1.5122, 1.4556, 0.8045, 0.7781, 1.3979, 2.1962,\n", + " 2.2187, 1.4958, 2.0877]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 5.7137e-02, 1.1638e-01, 3.6892e-01, -8.5396e-01, -7.9073e-02,\n", + " 7.3322e-01, -1.7874e-01, -6.1912e-02, 1.1897e-01, -2.0569e-01,\n", + " -4.7092e-01, 4.0782e-01, 3.0447e-01, 5.1250e-01, -3.8772e-02,\n", + " 7.1291e-01, 5.9948e-01, -6.2591e-01, 3.8594e-01, -1.2749e+00,\n", + " -5.5429e-01, -8.7035e-01, 4.2339e-01, -6.8476e-01, 8.1209e-01,\n", + " -4.1281e-01, 2.2495e-01, -1.1708e+00, -1.0437e+00, -2.7307e-01,\n", + " 8.6440e-02, 4.2875e-02, -5.9259e-01, 9.6866e-02, -4.4407e-01,\n", + " -4.7079e-01, 1.3434e-01, 7.3568e-01, -1.8131e+00, 1.8831e-01,\n", + " 1.0311e-01, -1.0460e-04, -7.1424e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3487, 0.2614, 0.1413, 0.1982, 0.1128, -0.1102, -0.3375, -0.3951,\n", + " -0.1802, -0.2106, -0.1935, 0.1395, 0.1620, 0.2557, 0.1698, 0.2843,\n", + " 0.1773, 0.1036, 0.0783, 0.1273, 0.1234, 0.0705, 0.0491, 0.0523,\n", + " 0.0473, 0.0319, -0.0737, 0.0249, 0.1818, 0.2553, 0.2008, 0.1476,\n", + " 0.2297, 0.2415, 0.1061, 0.1788, 0.0436, 0.0340, -0.0078, -0.2517,\n", + " -0.2496, -0.2160, -0.2369]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00011400080984458327\n", + "Grad encoder.fc1.bias: 0.0010329849319532514\n", + "Grad encoder.encoder.0.weight: 4.595361679093912e-05\n", + "Grad encoder.encoder.0.bias: 0.0008731384878046811\n", + "Grad encoder.encoder.2.weight: 4.122842801734805e-05\n", + "Grad encoder.encoder.2.bias: 0.0006393225630745292\n", + "Grad encoder.encoder.4.weight: 0.0001142780965892598\n", + "Grad encoder.encoder.4.bias: 0.0009228249546140432\n", + "Grad decoder.fc1.0.weight: 4.822842311114073e-05\n", + "Grad decoder.fc1.0.bias: 0.0003196467296220362\n", + "Grad decoder.fc1.2.weight: 5.999070344842039e-05\n", + "Grad decoder.fc1.2.bias: 0.0003601771022658795\n", + "Grad decoder.fc1.4.weight: 5.375486216507852e-05\n", + "Grad decoder.fc1.4.bias: 0.00038501102244481444\n", + "Grad decoder.fc2.weight: 0.00016612255421932787\n", + "Grad decoder.fc2.bias: 0.0015710716834291816\n", + "Grad _memory_unit.weight_ih_l0: 1.8511236703488976e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.612505239900202e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.54345902451314e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.134033810667461e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010600039240671322\n", + "Grad _memory_unit.bias_hh_l1: 5.691262776963413e-05\n", + "Data X Sample: tensor([[1.4183, 1.9488, 2.2795, 2.3571, 2.4707, 2.5134, 2.5929, 2.6930, 2.8218,\n", + " 2.8435, 2.9027, 2.8336, 2.6653, 2.6910, 2.6455, 2.7146, 2.6510, 2.7159,\n", + " 2.7196, 2.7468, 2.8560, 2.9133, 2.8701, 2.5977, 2.5206, 2.3455, 2.3629,\n", + " 2.2799, 1.7970, 1.8996, 1.6728, 1.6386, 1.4322, 0.9543, 1.3187, 1.3864,\n", + " 1.3824, 1.6299, 1.8825, 1.8385, 1.3650, 0.8145, 0.8084, 1.5844, 2.0733,\n", + " 2.4016, 1.6249, 2.3379]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5761, -1.6952, -0.5241, -1.3927, -2.5942, 0.2300, -0.4747, 0.7913,\n", + " 1.8057, 1.7030, 1.0101, -1.1406, -1.6032, -0.7589, 0.7604, -0.4744,\n", + " -0.6121, 0.2251, -1.0597, 0.2483, 0.7369, -1.1133, -1.0973, 0.0310,\n", + " -0.5425, -0.8312, -0.5885, 0.5924, -0.0182, -1.1609, -0.9819, -1.1140,\n", + " -1.0664, -1.7932, -0.9069, -1.0291, 0.9776, 0.7357, -0.6613, 0.6659,\n", + " 0.7533, 0.8369, 0.9298]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2322, -0.2413, -0.0646, -0.2718, -0.1935, -0.0574, 0.0707, 0.2106,\n", + " 0.1166, 0.2243, 0.1905, -0.1171, -0.1087, -0.1884, -0.1275, -0.2143,\n", + " -0.2358, -0.1395, -0.0204, -0.0680, -0.0765, -0.0180, -0.0616, -0.0425,\n", + " -0.0190, 0.0104, 0.0884, -0.0115, 0.0014, -0.1034, -0.1083, -0.1235,\n", + " -0.0815, -0.2165, -0.1660, -0.1120, 0.0344, 0.0224, -0.0652, 0.3245,\n", + " 0.3302, 0.2966, 0.2683]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002861272660084069\n", + "Grad encoder.fc1.bias: 0.001445739297196269\n", + "Grad encoder.encoder.0.weight: 0.00010217355156783015\n", + "Grad encoder.encoder.0.bias: 0.000845023721922189\n", + "Grad encoder.encoder.2.weight: 6.30272988928482e-05\n", + "Grad encoder.encoder.2.bias: 0.00055840885033831\n", + "Grad encoder.encoder.4.weight: 0.00010904311056947336\n", + "Grad encoder.encoder.4.bias: 0.0011552381329238415\n", + "Grad decoder.fc1.0.weight: 3.845668470603414e-05\n", + "Grad decoder.fc1.0.bias: 0.0004237838729750365\n", + "Grad decoder.fc1.2.weight: 4.830639227293432e-05\n", + "Grad decoder.fc1.2.bias: 0.0005490464391186833\n", + "Grad decoder.fc1.4.weight: 4.881511995336041e-05\n", + "Grad decoder.fc1.4.bias: 0.0006196346366778016\n", + "Grad decoder.fc2.weight: 0.00012310227612033486\n", + "Grad decoder.fc2.bias: 0.0018373319180682302\n", + "Grad _memory_unit.weight_ih_l0: 6.162407771626022e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.655887849163264e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.9315153622301295e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.4633976611075923e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.583327533211559e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.968402961618267e-05\n", + "Data X Sample: tensor([[-0.0053, 0.0029, 0.0105, 0.0066, 0.0000, -0.0088, 0.0062, 0.0014,\n", + " 0.0146, 0.0111, -0.0032, 0.0039, -0.0067, -0.0191, 0.0076, -0.0041,\n", + " -0.0079, -0.0097, -0.0021, -0.0186, 0.0049, 0.0000, -0.0072, -0.0115,\n", + " -0.0038, 0.0000, 0.0080, -0.0408, -0.0243, 0.0229, 0.0140, -0.0083,\n", + " 0.0022, 0.0000, -0.0025, 0.0438, 0.0039, -0.0027, 0.0254, 0.0057,\n", + " 0.0095, 0.0139, 0.0040, 0.0172, 0.0317, 0.0000, 0.0136, -0.0235]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3888, 0.3132, -0.7659, -0.5694, -0.8634, -0.1094, -0.9645, -0.8098,\n", + " -0.8623, -0.7421, -0.7626, -0.3831, 0.3955, 0.5962, 0.3392, 0.3504,\n", + " -0.0163, 0.4988, -0.4047, 0.2884, -0.1699, -1.8594, -0.7271, -0.6694,\n", + " -0.3566, 0.1996, 0.2062, 0.9316, 1.1070, 0.7025, -0.0373, 0.4690,\n", + " 1.1388, -0.1535, 0.5508, -0.1625, -0.0107, -0.0869, 1.1339, -0.5988,\n", + " -0.5581, -0.3729, -0.2768]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 1.2860, 0.8732, 0.4310, 0.5502, -0.5512, -1.0524, -1.7636, -1.7592,\n", + " -1.2814, -1.2958, -1.2635, 0.5308, 0.8042, 1.0197, 0.7157, 0.7946,\n", + " 0.6424, 0.1062, 0.1327, 0.2355, 0.4069, -0.0240, 0.1207, 0.0860,\n", + " 0.0425, -0.1665, 0.4184, 0.7854, 1.3818, 1.5430, 1.2644, 0.6947,\n", + " 0.9425, 0.8521, 0.4689, 0.4970, 0.1019, 0.0938, 0.0632, -1.2518,\n", + " -1.1309, -0.9227, -0.6987]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007036692695692182\n", + "Grad encoder.fc1.bias: 0.003850025124847889\n", + "Grad encoder.encoder.0.weight: 0.00023417180636897683\n", + "Grad encoder.encoder.0.bias: 0.00263042445294559\n", + "Grad encoder.encoder.2.weight: 0.0001646559830987826\n", + "Grad encoder.encoder.2.bias: 0.0019009250681847334\n", + "Grad encoder.encoder.4.weight: 0.00034428859362378716\n", + "Grad encoder.encoder.4.bias: 0.004176178947091103\n", + "Grad decoder.fc1.0.weight: 0.00014138164988253266\n", + "Grad decoder.fc1.0.bias: 0.001549123669974506\n", + "Grad decoder.fc1.2.weight: 0.000143838842632249\n", + "Grad decoder.fc1.2.bias: 0.0015645117964595556\n", + "Grad decoder.fc1.4.weight: 0.00012774748029187322\n", + "Grad decoder.fc1.4.bias: 0.0014897045912221074\n", + "Grad decoder.fc2.weight: 0.0002735791786108166\n", + "Grad decoder.fc2.bias: 0.0028534717857837677\n", + "Grad _memory_unit.weight_ih_l0: 4.140587043366395e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00022751011420041323\n", + "Grad _memory_unit.bias_hh_l0: 0.00011932748020626605\n", + "Grad _memory_unit.weight_ih_l1: 1.6026269804569893e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.000399265147279948\n", + "Grad _memory_unit.bias_hh_l1: 0.0002123717567883432\n", + "Data X Sample: tensor([[1.6666, 1.8818, 2.0165, 2.1734, 2.4007, 2.5163, 2.5390, 2.5610, 2.6534,\n", + " 2.6223, 2.7250, 2.6466, 2.6676, 2.5547, 2.4816, 2.4643, 2.4277, 2.5243,\n", + " 2.5235, 2.5032, 2.5395, 2.5061, 2.5905, 2.5157, 2.5356, 2.5753, 2.5867,\n", + " 2.6592, 2.3799, 2.3450, 2.3377, 2.3046, 2.0240, 1.3433, 1.7942, 1.7512,\n", + " 1.6145, 1.5504, 1.6353, 1.4668, 1.3363, 0.7408, 0.7518, 1.3319, 1.9900,\n", + " 2.3159, 1.3734, 2.0174]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2325, 0.4036, 0.7739, 0.4145, 0.5632, -0.3524, -0.1502, -0.3453,\n", + " -0.2089, -0.5194, -0.3803, 0.6222, 0.7052, 0.8634, 0.3171, 0.6234,\n", + " -0.8180, -1.1922, -0.1003, 0.9663, 1.4541, -1.3953, 0.1963, -0.3756,\n", + " 1.8042, -0.2382, 0.1910, -0.3070, 0.7175, -0.4334, -0.0031, -0.4563,\n", + " -0.0841, 0.6070, -0.3922, 0.0153, 1.1078, -0.1562, -0.4557, -1.3504,\n", + " -0.2822, -1.2887, -1.2432]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3525, 0.2532, 0.1432, 0.1923, 0.1091, -0.1063, -0.3327, -0.3978,\n", + " -0.1868, -0.2219, -0.1978, 0.1360, 0.1562, 0.2526, 0.1764, 0.2854,\n", + " 0.1578, 0.1101, 0.0781, 0.1193, 0.1236, 0.0655, 0.0583, 0.0544,\n", + " 0.0378, 0.0212, -0.0668, 0.0244, 0.1838, 0.2677, 0.2001, 0.1466,\n", + " 0.2302, 0.2483, 0.1160, 0.1810, 0.0381, 0.0310, -0.0013, -0.2540,\n", + " -0.2588, -0.2207, -0.2418]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00013243597641121596\n", + "Grad encoder.fc1.bias: 0.000280177453532815\n", + "Grad encoder.encoder.0.weight: 4.768867802340537e-05\n", + "Grad encoder.encoder.0.bias: 0.00025128264678642154\n", + "Grad encoder.encoder.2.weight: 3.148335235891864e-05\n", + "Grad encoder.encoder.2.bias: 0.00032202459988184273\n", + "Grad encoder.encoder.4.weight: 6.931600364623591e-05\n", + "Grad encoder.encoder.4.bias: 0.0018342360854148865\n", + "Grad decoder.fc1.0.weight: 4.0644215914653614e-05\n", + "Grad decoder.fc1.0.bias: 0.000590992218349129\n", + "Grad decoder.fc1.2.weight: 4.564021583064459e-05\n", + "Grad decoder.fc1.2.bias: 0.0005268011009320617\n", + "Grad decoder.fc1.4.weight: 3.57544377038721e-05\n", + "Grad decoder.fc1.4.bias: 0.00040424041799269617\n", + "Grad decoder.fc2.weight: 0.0001203967331093736\n", + "Grad decoder.fc2.bias: 0.0019221007823944092\n", + "Grad _memory_unit.weight_ih_l0: 9.118689376919065e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.946985326474532e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.743204772239551e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.5209047786775045e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001555457420181483\n", + "Grad _memory_unit.bias_hh_l1: 8.15380917629227e-05\n", + "Data X Sample: tensor([[1.4809, 1.6313, 1.7911, 1.9591, 1.9977, 2.1966, 2.2109, 2.2075, 3.6810,\n", + " 4.1278, 4.1145, 4.1014, 3.8060, 3.9288, 3.5508, 3.6199, 3.5190, 3.4277,\n", + " 3.4506, 3.4126, 3.3933, 3.2716, 2.8749, 2.8669, 2.8396, 3.0115, 3.0236,\n", + " 3.1160, 3.1569, 3.1507, 3.4155, 3.1778, 3.6389, 2.6249, 4.3998, 4.6845,\n", + " 4.9890, 5.2077, 5.6792, 5.7083, 1.1645, 0.6313, 0.6427, 1.1625, 1.7363,\n", + " 1.9156, 1.1966, 1.8297]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2303, 0.5389, 0.5452, 0.6117, 0.4103, 0.2985, -0.5143, -0.1015,\n", + " -0.3067, -0.4286, -0.6611, 0.1737, -0.4713, 0.0616, -0.3302, -0.2556,\n", + " 3.2123, 0.0607, 0.2007, 0.7499, -0.6635, 4.4018, 0.1009, 0.2908,\n", + " 0.0792, 1.0739, 0.1359, -0.2288, 0.6903, -0.0796, 0.0833, -0.0697,\n", + " -0.1266, 0.6669, 0.2709, 1.1056, -0.9002, 0.3394, -0.2715, -0.4327,\n", + " -0.7770, 0.1374, -0.3966]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2705, -0.3015, -0.0635, -0.1772, 0.0234, 0.1861, 0.2512, 0.3805,\n", + " 0.2448, 0.2805, 0.3003, -0.2421, -0.2196, -0.3394, -0.2112, -0.3225,\n", + " -0.2198, -0.0671, -0.0870, -0.1186, -0.1417, -0.0346, -0.0511, -0.0669,\n", + " -0.0067, 0.0743, -0.0949, -0.2072, -0.2289, -0.2621, -0.2958, -0.1861,\n", + " -0.3205, -0.3480, -0.2759, -0.2012, 0.0122, 0.0073, 0.0095, 0.3674,\n", + " 0.3856, 0.4188, 0.3005]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00026202553999610245\n", + "Grad encoder.fc1.bias: 0.00017208921781275421\n", + "Grad encoder.encoder.0.weight: 8.67797207320109e-05\n", + "Grad encoder.encoder.0.bias: 0.0002346271649003029\n", + "Grad encoder.encoder.2.weight: 5.886186772841029e-05\n", + "Grad encoder.encoder.2.bias: 0.0002660299651324749\n", + "Grad encoder.encoder.4.weight: 0.00010097034828504547\n", + "Grad encoder.encoder.4.bias: 0.0006994129507802427\n", + "Grad decoder.fc1.0.weight: 3.3098280255217105e-05\n", + "Grad decoder.fc1.0.bias: 0.00029353663558140397\n", + "Grad decoder.fc1.2.weight: 3.7336143577704206e-05\n", + "Grad decoder.fc1.2.bias: 0.0005443859263323247\n", + "Grad decoder.fc1.4.weight: 4.4253363739699125e-05\n", + "Grad decoder.fc1.4.bias: 0.0005817973287776113\n", + "Grad decoder.fc2.weight: 0.00012359046377241611\n", + "Grad decoder.fc2.bias: 0.0018589507089927793\n", + "Grad _memory_unit.weight_ih_l0: 4.762243861478055e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.4923374692443758e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.036337021621875e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.918382506322814e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.88029581902083e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.5378642021678388e-05\n", + "Data X Sample: tensor([[1.4693, 1.8119, 2.1412, 2.2456, 2.3733, 2.4692, 2.4235, 2.5056, 2.5411,\n", + " 2.5449, 2.6298, 2.6116, 2.5322, 2.5792, 2.4942, 2.4889, 2.5472, 2.5127,\n", + " 2.6164, 2.7170, 2.6597, 2.6913, 2.6459, 2.5939, 2.4943, 2.4317, 2.2670,\n", + " 2.3819, 1.9636, 1.8898, 1.8337, 1.7602, 1.4718, 0.9497, 1.4094, 1.3499,\n", + " 1.3864, 1.4868, 1.6163, 1.5888, 1.3220, 0.7846, 0.8205, 1.3376, 1.9742,\n", + " 2.1729, 1.5298, 2.1894]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3811, -0.6246, -1.0198, -1.1942, 0.3760, -0.4403, -1.1662, -0.2497,\n", + " -0.3783, -0.0306, -0.5158, 0.1448, 0.8632, 1.0156, 0.3165, 0.8448,\n", + " 1.1422, 0.8353, 0.5064, -1.5205, -0.7928, -1.3417, -1.2137, -0.6128,\n", + " -0.5180, -0.8109, -0.4498, 0.5484, -0.6511, 1.3797, -0.2360, 0.0335,\n", + " 0.3787, -1.4581, 1.0006, -0.8894, -0.0333, 0.0940, 0.5660, 0.5467,\n", + " -0.4063, 1.0312, -0.8681]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1899, -0.2085, -0.0540, -0.2539, -0.1874, -0.0692, 0.0340, 0.1771,\n", + " 0.0808, 0.1870, 0.1510, -0.1149, -0.0833, -0.1689, -0.1007, -0.1623,\n", + " -0.2280, -0.1147, -0.0313, -0.0606, -0.0514, -0.0155, -0.0656, -0.0494,\n", + " 0.0019, 0.0016, 0.0942, 0.0007, 0.0291, -0.0698, -0.0959, -0.0973,\n", + " -0.0580, -0.1736, -0.1356, -0.0890, 0.0396, 0.0333, -0.0606, 0.2875,\n", + " 0.2826, 0.2585, 0.2208]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000877309706993401\n", + "Grad encoder.fc1.bias: 0.0005373663152568042\n", + "Grad encoder.encoder.0.weight: 0.0002890598843805492\n", + "Grad encoder.encoder.0.bias: 0.0008563207811675966\n", + "Grad encoder.encoder.2.weight: 0.00019575122860260308\n", + "Grad encoder.encoder.2.bias: 0.0009161455673165619\n", + "Grad encoder.encoder.4.weight: 0.0002974968811031431\n", + "Grad encoder.encoder.4.bias: 0.0026016058400273323\n", + "Grad decoder.fc1.0.weight: 7.617256051162258e-05\n", + "Grad decoder.fc1.0.bias: 0.0007735089748166502\n", + "Grad decoder.fc1.2.weight: 5.306314415065572e-05\n", + "Grad decoder.fc1.2.bias: 0.000995143549516797\n", + "Grad decoder.fc1.4.weight: 4.854821600019932e-05\n", + "Grad decoder.fc1.4.bias: 0.0009952201507985592\n", + "Grad decoder.fc2.weight: 0.0001349556987406686\n", + "Grad decoder.fc2.bias: 0.002412371803075075\n", + "Grad _memory_unit.weight_ih_l0: 9.674200555309653e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.3228436222998425e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.7541027773404494e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.163657755882014e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00014878003275953233\n", + "Grad _memory_unit.bias_hh_l1: 7.536665361840278e-05\n", + "Data X Sample: tensor([[2.6415, 2.9684, 3.2276, 3.4941, 3.5361, 3.5653, 3.6591, 3.9040, 3.7201,\n", + " 4.0393, 3.9432, 4.0138, 3.9214, 3.8579, 3.7122, 3.6473, 3.6573, 3.6946,\n", + " 3.4837, 3.5056, 3.3369, 3.3359, 2.9978, 2.8878, 2.9091, 2.8757, 2.7838,\n", + " 2.7653, 2.8725, 2.9509, 2.9466, 2.8628, 3.0559, 2.1603, 3.5346, 3.9962,\n", + " 4.2555, 4.5452, 4.9376, 4.8997, 1.9568, 1.1371, 1.1297, 1.9863, 2.9018,\n", + " 3.3623, 2.0397, 2.9244]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2433, 0.1539, 0.7419, 0.8880, -1.8764, -0.3105, 1.7212, 0.3709,\n", + " -0.5194, -0.6147, -0.6273, 0.0389, 1.0219, -0.6728, -0.8319, -0.7620,\n", + " 0.0599, 0.0190, 1.1566, 1.0825, -0.0786, 0.3274, 0.8728, 3.3113,\n", + " 0.4822, 5.5363, -0.2101, -0.3932, -0.6343, -0.6921, 0.2416, 0.0340,\n", + " -1.1169, 1.7259, -0.9619, -1.1709, -0.6417, 0.7428, -0.2265, -0.7698,\n", + " -0.7700, 0.4649, 0.7633]], device='cuda:0')\n", + "Prediction Sample: tensor([[-2.7144e-01, -2.9847e-01, -1.1201e-01, -2.8591e-01, -2.1238e-01,\n", + " -4.2149e-02, 1.2066e-01, 2.8289e-01, 1.5377e-01, 2.3911e-01,\n", + " 2.5449e-01, -1.6240e-01, -1.5441e-01, -2.6159e-01, -1.5642e-01,\n", + " -2.7837e-01, -2.4399e-01, -1.3859e-01, -7.8755e-02, -8.8193e-02,\n", + " -1.0509e-01, -2.6943e-02, -6.0036e-02, -6.4150e-02, -8.7246e-05,\n", + " 3.3809e-02, 7.3783e-02, -6.5587e-02, -4.6077e-02, -1.3838e-01,\n", + " -1.9162e-01, -1.5604e-01, -1.3554e-01, -2.4408e-01, -1.8705e-01,\n", + " -1.5750e-01, -4.1457e-03, -4.2172e-03, -3.5308e-02, 3.7838e-01,\n", + " 3.6581e-01, 3.7516e-01, 2.9284e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003305419231764972\n", + "Grad encoder.fc1.bias: 0.00021637865575030446\n", + "Grad encoder.encoder.0.weight: 0.00010742098675109446\n", + "Grad encoder.encoder.0.bias: 0.00029789749532938004\n", + "Grad encoder.encoder.2.weight: 7.249397458508611e-05\n", + "Grad encoder.encoder.2.bias: 0.00035346540971659124\n", + "Grad encoder.encoder.4.weight: 0.00011734809959307313\n", + "Grad encoder.encoder.4.bias: 0.0010806581703945994\n", + "Grad decoder.fc1.0.weight: 3.709081283886917e-05\n", + "Grad decoder.fc1.0.bias: 0.0004003952781204134\n", + "Grad decoder.fc1.2.weight: 4.379745223559439e-05\n", + "Grad decoder.fc1.2.bias: 0.0007133773760870099\n", + "Grad decoder.fc1.4.weight: 5.392567254602909e-05\n", + "Grad decoder.fc1.4.bias: 0.000925435044337064\n", + "Grad decoder.fc2.weight: 0.00012760466779582202\n", + "Grad decoder.fc2.bias: 0.0023820523638278246\n", + "Grad _memory_unit.weight_ih_l0: 5.375101409299532e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.4520805052598007e-05\n", + "Grad _memory_unit.bias_hh_l0: 7.663114047318231e-06\n", + "Grad _memory_unit.weight_ih_l1: 3.446408754825825e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.621460488531739e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.433951496845111e-05\n", + "Data X Sample: tensor([[1.8162, 2.4222, 2.7213, 2.9606, 3.0153, 3.2515, 3.3001, 3.3162, 3.4272,\n", + " 3.4722, 3.5625, 3.4159, 3.3711, 3.4272, 3.2860, 3.2261, 3.2501, 3.3851,\n", + " 3.4259, 3.2898, 3.2289, 3.2363, 3.0677, 2.9413, 2.8096, 2.6955, 2.5787,\n", + " 2.5695, 2.2272, 2.2042, 2.0472, 1.9758, 1.7952, 1.2015, 1.8163, 2.0090,\n", + " 2.1159, 2.4064, 2.8206, 2.8258, 1.6847, 0.9917, 0.9620, 1.6591, 2.4657,\n", + " 2.7333, 1.9717, 2.6507]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0699, -0.2448, -2.2707, -1.0203, -0.6222, -0.5673, -0.5958, -0.6511,\n", + " 0.0340, -0.2702, -0.7575, 0.4057, -0.9004, 1.2963, 0.0361, 0.2596,\n", + " -0.2651, -0.4617, 0.7654, -0.6678, -1.2656, -0.6508, -0.1831, 0.1129,\n", + " -0.2985, -0.4084, -0.5021, 0.4306, 0.3867, 0.1730, 1.1106, 0.2106,\n", + " 1.3173, 0.2786, 0.1280, -0.3075, -0.9960, 0.0936, 1.1507, -0.6391,\n", + " 0.0069, -0.4180, -0.1956]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2466, -0.2621, -0.0923, -0.3002, -0.2221, -0.0712, 0.0798, 0.2437,\n", + " 0.1167, 0.2347, 0.2119, -0.1407, -0.1205, -0.2227, -0.1286, -0.2363,\n", + " -0.2554, -0.1394, -0.0493, -0.0731, -0.0779, -0.0289, -0.0670, -0.0585,\n", + " -0.0110, 0.0125, 0.0981, -0.0138, -0.0034, -0.1081, -0.1376, -0.1321,\n", + " -0.0888, -0.2195, -0.1670, -0.1345, 0.0218, 0.0094, -0.0600, 0.3533,\n", + " 0.3495, 0.3313, 0.2845]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00029542919946834445\n", + "Grad encoder.fc1.bias: 0.00021499217837117612\n", + "Grad encoder.encoder.0.weight: 9.575579315423965e-05\n", + "Grad encoder.encoder.0.bias: 0.00025756610557436943\n", + "Grad encoder.encoder.2.weight: 5.653976768371649e-05\n", + "Grad encoder.encoder.2.bias: 0.00030212540877982974\n", + "Grad encoder.encoder.4.weight: 0.00012070016236975789\n", + "Grad encoder.encoder.4.bias: 0.001011864049360156\n", + "Grad decoder.fc1.0.weight: 5.231947579886764e-05\n", + "Grad decoder.fc1.0.bias: 0.00045130285434424877\n", + "Grad decoder.fc1.2.weight: 0.00011383515811758116\n", + "Grad decoder.fc1.2.bias: 0.0014000157825648785\n", + "Grad decoder.fc1.4.weight: 0.00010230160114588216\n", + "Grad decoder.fc1.4.bias: 0.0013721911236643791\n", + "Grad decoder.fc2.weight: 0.00020362033683340997\n", + "Grad decoder.fc2.bias: 0.0030660354532301426\n", + "Grad _memory_unit.weight_ih_l0: 1.1208412615815178e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.7244164812145755e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.5571493349852972e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.722522473661229e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.390170842176303e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.388618981465697e-05\n", + "Data X Sample: tensor([[1.3568, 1.4478, 1.6965, 1.8739, 1.9158, 2.0434, 2.0876, 2.2103, 3.6029,\n", + " 4.2257, 4.2858, 4.2592, 4.1522, 3.8416, 3.6315, 3.7006, 3.6290, 3.5515,\n", + " 3.5663, 3.3940, 3.4449, 3.1476, 2.8387, 2.7466, 2.7345, 2.9697, 2.8478,\n", + " 2.9855, 2.8100, 2.9640, 3.2161, 3.2441, 3.8149, 2.8400, 4.5518, 4.8572,\n", + " 5.1443, 5.5841, 5.9391, 5.7480, 1.0691, 0.5596, 0.6225, 1.1080, 1.6055,\n", + " 1.8584, 1.1626, 1.7671]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3558, -0.1834, 1.2807, -0.3908, 0.0910, -0.0064, 0.1316, 0.3776,\n", + " 0.5771, 0.4400, 0.3213, 0.8428, -0.8711, 0.1363, -1.1952, 0.3151,\n", + " -0.5003, -0.3460, -0.2940, -0.4217, -0.3530, -0.1952, 1.0969, -0.3641,\n", + " 0.0921, 0.2080, -0.6346, -0.3495, -0.8023, -0.5580, -0.3950, -0.8401,\n", + " -0.4130, 0.0123, 1.3024, -0.7877, 0.7923, 0.0000, 0.0000, 0.5198,\n", + " 0.3049, 0.3331, 0.1530]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2220, -0.2756, -0.0851, -0.1899, -0.0343, 0.1157, 0.2021, 0.3445,\n", + " 0.2116, 0.2518, 0.2653, -0.2206, -0.1767, -0.2987, -0.1818, -0.2884,\n", + " -0.2104, -0.0599, -0.0884, -0.0958, -0.1099, -0.0213, -0.0581, -0.0720,\n", + " -0.0019, 0.0828, -0.0506, -0.1524, -0.1750, -0.2164, -0.2678, -0.1673,\n", + " -0.2626, -0.2831, -0.2351, -0.1847, -0.0126, 0.0039, 0.0077, 0.3249,\n", + " 0.3564, 0.4013, 0.2681]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002052594645647332\n", + "Grad encoder.fc1.bias: 0.0001202352432301268\n", + "Grad encoder.encoder.0.weight: 6.377507816068828e-05\n", + "Grad encoder.encoder.0.bias: 0.0001570275635458529\n", + "Grad encoder.encoder.2.weight: 4.593094126903452e-05\n", + "Grad encoder.encoder.2.bias: 0.0001934032334247604\n", + "Grad encoder.encoder.4.weight: 7.885103696025908e-05\n", + "Grad encoder.encoder.4.bias: 0.0005726065719500184\n", + "Grad decoder.fc1.0.weight: 3.0177830922184512e-05\n", + "Grad decoder.fc1.0.bias: 0.00026013568276539445\n", + "Grad decoder.fc1.2.weight: 4.654717486118898e-05\n", + "Grad decoder.fc1.2.bias: 0.0006245611584745347\n", + "Grad decoder.fc1.4.weight: 4.041303327539936e-05\n", + "Grad decoder.fc1.4.bias: 0.0005554945673793554\n", + "Grad decoder.fc2.weight: 0.00013927309191785753\n", + "Grad decoder.fc2.bias: 0.0022726557217538357\n", + "Grad _memory_unit.weight_ih_l0: 5.395254447648767e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.4344342162075918e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.164861355908215e-06\n", + "Grad _memory_unit.weight_ih_l1: 3.070051661779871e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.2849755118368194e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.2230327886063606e-05\n", + "Data X Sample: tensor([[0.0393, 0.0626, 0.0691, 0.0743, 0.0854, 0.0899, 0.1171, 0.1036, 0.1196,\n", + " 0.1295, 0.1015, 0.1383, 0.1265, 0.1281, 0.1211, 0.1518, 0.1714, 0.1799,\n", + " 0.2024, 0.2157, 0.2061, 0.1960, 0.2217, 0.2080, 0.1989, 0.2586, 0.2717,\n", + " 0.3712, 0.1041, 0.2260, 0.1750, 0.1769, 0.1408, 0.1167, 0.1569, 0.1581,\n", + " 0.1337, 0.1352, 0.2028, 0.1220, 0.0764, 0.0498, 0.0485, 0.0459, 0.0912,\n", + " 0.0801, 0.0816, 0.0938]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.6985, 1.5681, -0.1240, -0.8124, 0.6218, 0.2860, 0.8409, -1.0039,\n", + " 0.5102, 0.8293, 1.1034, 1.1617, -0.9147, 0.9972, 0.2134, 1.6084,\n", + " 0.5146, 0.1852, -0.7774, 0.0441, -0.8675, -0.6450, -0.1503, -0.7343,\n", + " 6.1404, -0.4994, -0.2457, 0.0491, 0.4398, 0.0925, -0.4539, -0.3678,\n", + " -0.9597, 0.0372, 0.1532, -0.7657, -0.4229, 0.0940, 0.2870, -1.1999,\n", + " -0.0963, -0.4348, 1.1531]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4554, 0.3198, 0.1875, 0.2311, 0.1219, -0.1455, -0.4519, -0.5395,\n", + " -0.2629, -0.3253, -0.2659, 0.1832, 0.2166, 0.3306, 0.2582, 0.3406,\n", + " 0.2022, 0.1747, 0.1068, 0.1484, 0.1274, 0.0480, 0.0725, 0.0680,\n", + " 0.0254, 0.0199, -0.0394, 0.0769, 0.2635, 0.3866, 0.2868, 0.2195,\n", + " 0.2943, 0.3531, 0.1957, 0.1875, 0.0283, 0.0434, -0.0016, -0.3515,\n", + " -0.3516, -0.3027, -0.3226]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00035700039006769657\n", + "Grad encoder.fc1.bias: 0.0007461186032742262\n", + "Grad encoder.encoder.0.weight: 0.00010869002289837226\n", + "Grad encoder.encoder.0.bias: 0.0006252222810871899\n", + "Grad encoder.encoder.2.weight: 7.463940710294992e-05\n", + "Grad encoder.encoder.2.bias: 0.0005666784709319472\n", + "Grad encoder.encoder.4.weight: 0.0001491617877036333\n", + "Grad encoder.encoder.4.bias: 0.001665019430220127\n", + "Grad decoder.fc1.0.weight: 4.6746146836085245e-05\n", + "Grad decoder.fc1.0.bias: 0.0005529879126697779\n", + "Grad decoder.fc1.2.weight: 5.351864092517644e-05\n", + "Grad decoder.fc1.2.bias: 0.000764892902225256\n", + "Grad decoder.fc1.4.weight: 4.8820402298588306e-05\n", + "Grad decoder.fc1.4.bias: 0.000760468072257936\n", + "Grad decoder.fc2.weight: 0.00013525177200790495\n", + "Grad decoder.fc2.bias: 0.001999997766688466\n", + "Grad _memory_unit.weight_ih_l0: 7.558111065009143e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.190756251569837e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.6584275726927444e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.165800419286825e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010614316852297634\n", + "Grad _memory_unit.bias_hh_l1: 5.485291694640182e-05\n", + "Data X Sample: tensor([[1.3038, 1.4580, 1.7115, 1.7798, 1.8918, 1.9815, 2.0275, 2.0641, 3.0439,\n", + " 3.9446, 4.0447, 4.1287, 3.8771, 3.8443, 3.7854, 3.6158, 3.5583, 3.4335,\n", + " 3.3866, 3.3921, 3.3982, 3.4660, 3.0098, 2.9069, 2.8021, 2.8052, 2.8105,\n", + " 2.8387, 2.6851, 2.9902, 3.1356, 3.1640, 3.4431, 2.5334, 4.2380, 4.7283,\n", + " 4.9929, 5.2210, 5.8377, 5.7026, 0.9736, 0.6074, 0.6204, 1.0477, 1.5064,\n", + " 1.7898, 1.1558, 1.7124]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1984, 0.0271, -0.5515, 0.4062, 0.3884, 1.0410, 0.0832, 0.1742,\n", + " -0.2250, 0.2121, -0.3567, -0.0368, 0.2538, -1.0137, 2.5737, 0.7210,\n", + " -0.3100, -0.0933, -0.9667, -0.1705, -0.3523, 0.2556, 0.7525, -1.8853,\n", + " -0.2309, -0.7584, 0.6852, -0.1167, -0.0431, 0.5343, -0.3997, -0.5876,\n", + " -0.3360, 0.4544, -0.6341, 1.1417, 0.0893, -0.1800, -0.6028, -0.3476,\n", + " -0.8179, -0.3803, 0.4338]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1873, -0.2473, -0.0787, -0.1863, -0.0442, 0.0930, 0.1701, 0.2995,\n", + " 0.1848, 0.2272, 0.2293, -0.1971, -0.1484, -0.2633, -0.1613, -0.2582,\n", + " -0.2025, -0.0560, -0.0733, -0.0893, -0.0932, -0.0210, -0.0581, -0.0731,\n", + " -0.0099, 0.0624, -0.0345, -0.1265, -0.1507, -0.1954, -0.2381, -0.1494,\n", + " -0.2311, -0.2466, -0.2034, -0.1662, -0.0135, 0.0067, 0.0065, 0.2871,\n", + " 0.3241, 0.3606, 0.2415]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003186904941685498\n", + "Grad encoder.fc1.bias: 0.0012222534278407693\n", + "Grad encoder.encoder.0.weight: 9.636346658226103e-05\n", + "Grad encoder.encoder.0.bias: 0.0008542332798242569\n", + "Grad encoder.encoder.2.weight: 6.856117397546768e-05\n", + "Grad encoder.encoder.2.bias: 0.0007142227841541171\n", + "Grad encoder.encoder.4.weight: 0.00014116137754172087\n", + "Grad encoder.encoder.4.bias: 0.0012749203015118837\n", + "Grad decoder.fc1.0.weight: 5.606801278190687e-05\n", + "Grad decoder.fc1.0.bias: 0.0005347274127416313\n", + "Grad decoder.fc1.2.weight: 7.090297003742307e-05\n", + "Grad decoder.fc1.2.bias: 0.0008619402069598436\n", + "Grad decoder.fc1.4.weight: 6.357330130413175e-05\n", + "Grad decoder.fc1.4.bias: 0.0009348026942461729\n", + "Grad decoder.fc2.weight: 0.0001586337311891839\n", + "Grad decoder.fc2.bias: 0.0017487815348431468\n", + "Grad _memory_unit.weight_ih_l0: 1.1432361134211533e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.6384535885881633e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.4910338904883247e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.602719738817541e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.676694753579795e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.9673843022901565e-05\n", + "Data X Sample: tensor([[1.6379, 1.9051, 2.0030, 2.0641, 2.2316, 2.2320, 2.3048, 2.2969, 2.3897,\n", + " 2.4454, 2.4490, 2.4363, 2.4745, 2.3802, 2.4109, 2.3877, 2.3460, 2.3348,\n", + " 2.4388, 2.4604, 2.5395, 2.5107, 2.5279, 2.5576, 2.5900, 2.7738, 2.5760,\n", + " 2.7000, 2.4076, 2.5186, 2.4707, 2.4373, 2.1780, 1.4418, 1.9217, 1.7585,\n", + " 1.6499, 1.5583, 1.5593, 1.5065, 1.3650, 0.7607, 0.7296, 1.3089, 2.0098,\n", + " 2.0071, 1.3666, 1.9783]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3351, 0.1811, -0.0851, 0.4087, -0.0611, -0.0742, -0.8293, -0.3935,\n", + " -0.4527, -0.4012, 0.2845, 0.8422, -0.5696, 0.2386, 0.7034, 0.3861,\n", + " 0.4956, -0.2984, -0.5279, -0.2069, 1.1973, -0.3783, 0.8294, 0.6537,\n", + " -0.1048, -0.4499, -0.2443, 0.4106, 0.2693, -0.2692, 0.1460, -0.3612,\n", + " 0.3267, -0.3976, 0.7618, -0.6062, 0.1343, 0.3945, 0.0000, -0.3036,\n", + " -0.0860, -0.4653, -0.3556]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5836, 0.4521, 0.2143, 0.3994, 0.2805, -0.1349, -0.4990, -0.6254,\n", + " -0.3099, -0.4276, -0.3298, 0.2424, 0.2496, 0.4005, 0.3377, 0.4953,\n", + " 0.2768, 0.2457, 0.1542, 0.2044, 0.2160, 0.1094, 0.1647, 0.0829,\n", + " 0.0396, -0.0074, -0.1257, 0.0030, 0.2141, 0.4472, 0.3115, 0.2277,\n", + " 0.3962, 0.4739, 0.2827, 0.3328, 0.0212, 0.0107, 0.0742, -0.4697,\n", + " -0.4825, -0.4447, -0.4685]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007002276834100485\n", + "Grad encoder.fc1.bias: 0.0007977659697644413\n", + "Grad encoder.encoder.0.weight: 0.00021776588982902467\n", + "Grad encoder.encoder.0.bias: 0.0008777236798778176\n", + "Grad encoder.encoder.2.weight: 0.00013096522889100015\n", + "Grad encoder.encoder.2.bias: 0.0008431862806901336\n", + "Grad encoder.encoder.4.weight: 0.00024386435688938946\n", + "Grad encoder.encoder.4.bias: 0.0023352596908807755\n", + "Grad decoder.fc1.0.weight: 7.871630805311725e-05\n", + "Grad decoder.fc1.0.bias: 0.0009008646593429148\n", + "Grad decoder.fc1.2.weight: 7.308743079192936e-05\n", + "Grad decoder.fc1.2.bias: 0.0008646997157484293\n", + "Grad decoder.fc1.4.weight: 5.4366748372558504e-05\n", + "Grad decoder.fc1.4.bias: 0.0006825546734035015\n", + "Grad decoder.fc2.weight: 0.0001249281340278685\n", + "Grad decoder.fc2.bias: 0.0019136357586830854\n", + "Grad _memory_unit.weight_ih_l0: 1.20231034088647e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.248957313597202e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.8369859137455933e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.911085958767217e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001465605164412409\n", + "Grad _memory_unit.bias_hh_l1: 7.488099799957126e-05\n", + "Data X Sample: tensor([[1.4268, 1.7376, 1.8407, 1.9548, 2.0609, 2.0596, 2.1230, 2.1862, 2.2067,\n", + " 2.3159, 2.3316, 2.3428, 2.2681, 2.2221, 2.2596, 2.1594, 2.1510, 2.2613,\n", + " 2.3273, 2.3284, 2.3383, 2.4418, 2.3857, 2.4259, 2.3385, 2.4970, 2.4828,\n", + " 2.4431, 2.2966, 2.4007, 2.3062, 2.3792, 2.2770, 1.5104, 1.9536, 1.7853,\n", + " 1.6479, 1.5265, 1.5846, 1.6058, 1.3125, 0.7149, 0.7013, 1.2687, 1.9583,\n", + " 2.1272, 1.3190, 1.9548]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5074, 0.1258, 0.1087, -0.0566, 0.0410, -1.0110, 0.0327, -0.3443,\n", + " 0.6449, -0.0490, -0.0800, -0.4755, 0.4282, 0.8499, -0.4219, 0.8780,\n", + " 0.8057, -0.2200, -0.5892, 0.0403, 1.1340, 0.4846, -0.3760, -0.0644,\n", + " -0.8153, 0.3349, 0.0061, -0.5372, 0.8018, 0.6196, 0.8471, -0.2591,\n", + " 0.6264, 0.3037, 1.3348, 0.6385, -1.0622, 0.7816, -0.0059, -0.0648,\n", + " 0.0406, -0.2697, -0.2120]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5351, 0.4132, 0.1977, 0.3663, 0.2453, -0.1319, -0.4603, -0.5701,\n", + " -0.2814, -0.3865, -0.3119, 0.2153, 0.2284, 0.3626, 0.3067, 0.4524,\n", + " 0.2495, 0.2297, 0.1411, 0.1747, 0.1885, 0.0855, 0.1415, 0.0659,\n", + " 0.0315, -0.0094, -0.1076, 0.0048, 0.1993, 0.4009, 0.2858, 0.2104,\n", + " 0.3521, 0.4333, 0.2639, 0.2940, 0.0160, 0.0175, 0.0579, -0.4262,\n", + " -0.4343, -0.3971, -0.4232]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003139438049402088\n", + "Grad encoder.fc1.bias: 0.000585022266022861\n", + "Grad encoder.encoder.0.weight: 0.00011727923265425488\n", + "Grad encoder.encoder.0.bias: 0.0005559074925258756\n", + "Grad encoder.encoder.2.weight: 8.349171548616141e-05\n", + "Grad encoder.encoder.2.bias: 0.0005203622858971357\n", + "Grad encoder.encoder.4.weight: 0.00016064284136518836\n", + "Grad encoder.encoder.4.bias: 0.0009373007342219353\n", + "Grad decoder.fc1.0.weight: 5.0289112550672144e-05\n", + "Grad decoder.fc1.0.bias: 0.00037164456443861127\n", + "Grad decoder.fc1.2.weight: 6.542756455019116e-05\n", + "Grad decoder.fc1.2.bias: 0.0008465952123515308\n", + "Grad decoder.fc1.4.weight: 5.3829273383598775e-05\n", + "Grad decoder.fc1.4.bias: 0.0008707253728061914\n", + "Grad decoder.fc2.weight: 0.00013349764049053192\n", + "Grad decoder.fc2.bias: 0.001828240929171443\n", + "Grad _memory_unit.weight_ih_l0: 9.618155672797002e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.5937501050066203e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.3789682270726189e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.651293693314074e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.898632273077965e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.527959779603407e-05\n", + "Data X Sample: tensor([[2.1800, 1.7857, 1.8467, 2.0597, 2.0558, 2.1451, 3.1830, 3.9863, 4.1570,\n", + " 4.1404, 4.1557, 4.2514, 4.0102, 3.8334, 3.7551, 3.6965, 3.6825, 3.6869,\n", + " 3.6902, 3.4386, 3.3835, 3.4246, 2.9592, 2.9203, 2.7646, 2.7138, 2.8105,\n", + " 2.9121, 2.7719, 2.9378, 2.9676, 3.0977, 3.3353, 2.5608, 4.1596, 4.5921,\n", + " 4.8710, 5.2342, 6.0215, 5.7934, 1.1263, 0.6651, 0.6669, 1.2343, 1.7720,\n", + " 2.0071, 1.3530, 1.8062]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0364, -0.5548, -0.0909, -0.3648, 0.6469, 0.4237, 0.2189, 0.0434,\n", + " 0.3462, -0.1620, 0.2586, 0.8656, -0.5545, 0.7656, 0.1971, -0.2544,\n", + " -0.2501, 0.5063, -0.4929, -0.5782, 0.3074, -0.5957, -0.3417, 0.9351,\n", + " 0.7153, 1.4688, -0.7781, -0.0570, -0.1660, -0.1718, 0.0374, 0.0316,\n", + " -0.4063, 0.9117, -0.6625, 0.3754, 0.0033, -0.8262, -0.2890, -0.1082,\n", + " -0.2218, 0.1195, -1.0890]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1621, -0.2306, -0.0750, -0.1593, -0.0417, 0.0892, 0.1487, 0.2721,\n", + " 0.1691, 0.2005, 0.1994, -0.1995, -0.1332, -0.2497, -0.1497, -0.2353,\n", + " -0.1914, -0.0440, -0.0784, -0.0926, -0.0782, -0.0235, -0.0567, -0.0810,\n", + " -0.0118, 0.0546, -0.0349, -0.1309, -0.1468, -0.1827, -0.2328, -0.1350,\n", + " -0.2218, -0.2223, -0.1694, -0.1565, -0.0098, 0.0062, 0.0113, 0.2602,\n", + " 0.2935, 0.3271, 0.2030]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000618122867308557\n", + "Grad encoder.fc1.bias: 0.0002862475230358541\n", + "Grad encoder.encoder.0.weight: 0.00019385587074793875\n", + "Grad encoder.encoder.0.bias: 0.00045995268737897277\n", + "Grad encoder.encoder.2.weight: 0.0001128835792769678\n", + "Grad encoder.encoder.2.bias: 0.00047824549255892634\n", + "Grad encoder.encoder.4.weight: 0.00021604516950901598\n", + "Grad encoder.encoder.4.bias: 0.0015806545270606875\n", + "Grad decoder.fc1.0.weight: 6.85366103425622e-05\n", + "Grad decoder.fc1.0.bias: 0.0006676411721855402\n", + "Grad decoder.fc1.2.weight: 8.141018770402297e-05\n", + "Grad decoder.fc1.2.bias: 0.0011262609623372555\n", + "Grad decoder.fc1.4.weight: 7.507183909183368e-05\n", + "Grad decoder.fc1.4.bias: 0.00100855459459126\n", + "Grad decoder.fc2.weight: 0.0001560117962071672\n", + "Grad decoder.fc2.bias: 0.002198314294219017\n", + "Grad _memory_unit.weight_ih_l0: 1.1948822248086799e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.939633749425411e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.533364724717103e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.685107564408099e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001469591516070068\n", + "Grad _memory_unit.bias_hh_l1: 7.580114470329136e-05\n", + "Data X Sample: tensor([[1.6072, 1.9095, 2.0330, 2.1013, 2.0677, 2.2173, 2.2879, 2.3268, 2.3702,\n", + " 2.4264, 2.4839, 2.4441, 2.3302, 2.4102, 2.2294, 2.2879, 2.2422, 2.3116,\n", + " 2.4181, 2.4102, 2.4904, 2.4969, 2.4580, 2.4450, 2.5037, 2.5884, 2.5760,\n", + " 2.6552, 2.3521, 2.3745, 2.3377, 2.1416, 1.8722, 1.2037, 1.6668, 1.5834,\n", + " 1.5181, 1.5053, 1.4198, 1.3476, 1.3220, 0.7607, 0.7154, 1.4294, 1.9385,\n", + " 2.0757, 1.3122, 2.0486]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1878, 0.7304, -0.0552, 0.2656, 0.5382, 0.5455, 0.8366, -0.0070,\n", + " 0.0868, -0.0608, -0.0845, -0.6895, -0.4157, -0.2326, 0.1274, -0.1561,\n", + " -0.7856, 0.1389, 0.9577, 0.4845, -0.0463, -0.4021, 0.4419, 1.1464,\n", + " 1.5443, -1.9558, -0.2188, -0.3910, 0.2454, 0.3289, -0.3550, 0.0680,\n", + " -0.0664, 1.1081, 0.3508, -0.9630, -0.5862, 0.4722, 0.0382, 0.0036,\n", + " -0.1757, -0.1967, -0.0095]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3882, 0.2867, 0.1503, 0.2434, 0.1312, -0.1207, -0.3490, -0.4098,\n", + " -0.2078, -0.2673, -0.2532, 0.1341, 0.1721, 0.2630, 0.2145, 0.3259,\n", + " 0.1606, 0.1668, 0.0908, 0.0977, 0.1084, 0.0372, 0.0782, 0.0287,\n", + " 0.0084, -0.0102, -0.0490, 0.0168, 0.1709, 0.2815, 0.2056, 0.1597,\n", + " 0.2264, 0.3005, 0.1923, 0.1839, 0.0076, 0.0369, 0.0045, -0.2947,\n", + " -0.2910, -0.2526, -0.2931]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00012904602044727653\n", + "Grad encoder.fc1.bias: 0.0003700705128721893\n", + "Grad encoder.encoder.0.weight: 7.136671047192067e-05\n", + "Grad encoder.encoder.0.bias: 0.000300253537716344\n", + "Grad encoder.encoder.2.weight: 6.099697566241957e-05\n", + "Grad encoder.encoder.2.bias: 0.00035921751987189054\n", + "Grad encoder.encoder.4.weight: 0.0001374221610603854\n", + "Grad encoder.encoder.4.bias: 0.001319849630817771\n", + "Grad decoder.fc1.0.weight: 6.369796028593555e-05\n", + "Grad decoder.fc1.0.bias: 0.000621998799033463\n", + "Grad decoder.fc1.2.weight: 7.850494876038283e-05\n", + "Grad decoder.fc1.2.bias: 0.0007976371562108397\n", + "Grad decoder.fc1.4.weight: 7.538100180681795e-05\n", + "Grad decoder.fc1.4.bias: 0.0008803535019978881\n", + "Grad decoder.fc2.weight: 0.00014232461398933083\n", + "Grad decoder.fc2.bias: 0.0019263927824795246\n", + "Grad _memory_unit.weight_ih_l0: 1.6156427591340616e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.594166138209403e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.5535824028775096e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.266044121934101e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001424542861059308\n", + "Grad _memory_unit.bias_hh_l1: 7.572198228444904e-05\n", + "Data X Sample: tensor([[2.5237, 2.9946, 3.3013, 3.3542, 3.6266, 3.6242, 3.6498, 3.7322, 3.7982,\n", + " 3.8561, 3.9844, 3.9632, 3.8327, 3.7843, 3.5634, 3.4531, 3.4592, 3.5380,\n", + " 3.4961, 3.3512, 3.2927, 3.1016, 2.9158, 2.8821, 2.7852, 2.8261, 2.7918,\n", + " 2.8061, 2.7129, 2.8526, 2.9011, 2.8545, 3.0185, 2.2107, 3.6694, 3.9718,\n", + " 4.1394, 4.6008, 5.0771, 5.0075, 1.9663, 1.1291, 1.1601, 2.0868, 2.8859,\n", + " 3.1336, 2.2368, 3.1746]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.3740, -0.4002, -1.9353, -1.3391, 0.4626, -0.1099, 0.8613, 0.6159,\n", + " 1.2387, 0.2172, 0.7402, -1.6775, -0.4647, -0.5626, -1.2333, -1.3364,\n", + " -0.9600, 0.2219, 0.7940, 0.0711, 0.0104, 1.1625, -0.2131, 0.3585,\n", + " 0.9560, 0.1846, -0.1545, 0.1062, 0.3918, 0.4787, -0.9928, -0.4049,\n", + " -0.7928, -1.3194, -0.5438, -1.4202, 0.4915, -0.0751, -1.8131, 0.9410,\n", + " 0.7777, 0.6511, 0.6358]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1751, -0.2405, -0.0875, -0.1793, -0.1050, 0.0384, 0.1163, 0.2465,\n", + " 0.1459, 0.1799, 0.1889, -0.1834, -0.1231, -0.2413, -0.1422, -0.2278,\n", + " -0.1966, -0.0635, -0.0833, -0.0978, -0.0766, -0.0236, -0.0564, -0.0817,\n", + " -0.0006, 0.0353, -0.0015, -0.1186, -0.1079, -0.1559, -0.2173, -0.1281,\n", + " -0.1849, -0.2023, -0.1374, -0.1494, -0.0114, -0.0014, 0.0041, 0.2729,\n", + " 0.2852, 0.3116, 0.1921]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001668942568358034\n", + "Grad encoder.fc1.bias: 7.975414337124676e-05\n", + "Grad encoder.encoder.0.weight: 6.950739771127701e-05\n", + "Grad encoder.encoder.0.bias: 9.733483602758497e-05\n", + "Grad encoder.encoder.2.weight: 5.558629709412344e-05\n", + "Grad encoder.encoder.2.bias: 0.0001499724166933447\n", + "Grad encoder.encoder.4.weight: 0.00013312851660884917\n", + "Grad encoder.encoder.4.bias: 0.0005862241960130632\n", + "Grad decoder.fc1.0.weight: 6.19499187450856e-05\n", + "Grad decoder.fc1.0.bias: 0.00041934254113584757\n", + "Grad decoder.fc1.2.weight: 7.329721847781911e-05\n", + "Grad decoder.fc1.2.bias: 0.0008853755425661802\n", + "Grad decoder.fc1.4.weight: 7.321069278987125e-05\n", + "Grad decoder.fc1.4.bias: 0.0009810703340917826\n", + "Grad decoder.fc2.weight: 0.00013410583778750151\n", + "Grad decoder.fc2.bias: 0.0018781672697514296\n", + "Grad _memory_unit.weight_ih_l0: 1.1489272765174974e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.907695852627512e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.5670104403398e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.119004981679609e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.922175427665934e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.07960033044219e-05\n", + "Data X Sample: tensor([[1.5223, 1.7318, 1.8888, 2.0685, 2.0797, 2.1392, 2.0229, 3.3858, 4.3474,\n", + " 4.3347, 4.6887, 4.5007, 4.1877, 4.0052, 3.9190, 3.7635, 3.7580, 3.7101,\n", + " 3.6530, 3.3921, 3.6191, 3.4935, 3.1062, 2.8917, 2.8152, 2.8861, 2.8131,\n", + " 2.8020, 3.0078, 3.0491, 3.0971, 3.1253, 3.6301, 2.7599, 4.5542, 4.9180,\n", + " 5.2780, 5.4622, 6.1293, 5.9495, 1.1550, 0.6532, 0.6851, 1.2113, 1.7442,\n", + " 2.0700, 1.2986, 2.0174]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6240, -0.6000, 0.3806, 0.4466, -0.0522, 1.0692, 0.1263, 0.1501,\n", + " 0.9369, 0.3959, 0.1122, -0.1072, -0.2229, 0.1549, -1.8652, -0.1991,\n", + " -0.4308, -2.0133, 1.4474, -0.1965, -0.3608, 0.4677, -0.8165, -0.7152,\n", + " -0.0651, 0.0080, -0.8464, -0.8812, -0.5188, -0.7688, -0.8025, -0.3745,\n", + " 0.0492, -0.7643, 0.5209, 0.1638, -0.2391, -0.5073, -0.1229, -0.0085,\n", + " 0.2696, -0.1893, -1.3632]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2058, -0.2494, -0.0390, -0.1064, 0.0842, 0.1933, 0.1759, 0.2954,\n", + " 0.2104, 0.2668, 0.1968, -0.2641, -0.2022, -0.3376, -0.1665, -0.2493,\n", + " -0.2203, -0.0159, -0.1338, -0.1025, -0.0856, -0.0913, -0.0305, -0.1191,\n", + " -0.0159, 0.0311, -0.0886, -0.2404, -0.2203, -0.2748, -0.3252, -0.1200,\n", + " -0.3621, -0.2847, -0.1906, -0.1901, -0.0033, 0.0307, 0.0492, 0.2711,\n", + " 0.2858, 0.3212, 0.1947]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004615354700945318\n", + "Grad encoder.fc1.bias: 0.0012060508597642183\n", + "Grad encoder.encoder.0.weight: 0.00015358044765889645\n", + "Grad encoder.encoder.0.bias: 0.000913029711227864\n", + "Grad encoder.encoder.2.weight: 9.100907482206821e-05\n", + "Grad encoder.encoder.2.bias: 0.0007719898130744696\n", + "Grad encoder.encoder.4.weight: 0.0001527424610685557\n", + "Grad encoder.encoder.4.bias: 0.0017834054306149483\n", + "Grad decoder.fc1.0.weight: 4.9011265218723565e-05\n", + "Grad decoder.fc1.0.bias: 0.0006521688774228096\n", + "Grad decoder.fc1.2.weight: 4.669382906286046e-05\n", + "Grad decoder.fc1.2.bias: 0.0007860181503929198\n", + "Grad decoder.fc1.4.weight: 5.1720628107432276e-05\n", + "Grad decoder.fc1.4.bias: 0.0008497199742123485\n", + "Grad decoder.fc2.weight: 0.0001171134426840581\n", + "Grad decoder.fc2.bias: 0.0015518481377512217\n", + "Grad _memory_unit.weight_ih_l0: 6.923436103534186e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.374695734237321e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.7513486454845406e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.927927420794731e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001238481781911105\n", + "Grad _memory_unit.bias_hh_l1: 6.390504131559283e-05\n", + "Data X Sample: tensor([[1.4353, 1.5963, 1.7340, 1.9373, 2.0148, 2.1510, 2.0213, 2.8151, 3.9666,\n", + " 4.3900, 4.6030, 4.4734, 4.1900, 4.0488, 3.9896, 3.8620, 3.9482, 3.6057,\n", + " 3.6840, 3.4963, 3.4964, 3.4354, 2.9014, 2.7791, 2.7702, 2.7268, 2.9117,\n", + " 2.9651, 2.8898, 3.0295, 3.1356, 3.2911, 3.9095, 2.8240, 4.6106, 5.0080,\n", + " 5.0696, 5.4834, 6.1609, 6.0005, 1.1311, 0.6054, 0.6386, 1.1252, 1.7244,\n", + " 1.8813, 1.2238, 1.9548]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4151, 0.1628, 0.2779, -0.4328, -0.4883, -0.1318, -0.0414, 0.2148,\n", + " 0.6777, 0.3264, 0.2644, -1.3860, -1.6863, 0.2297, -0.9390, -0.2156,\n", + " -0.3535, -1.2947, -0.1733, -0.1003, -0.2863, -1.0709, -0.1756, 1.9703,\n", + " 1.8541, -1.3661, 0.5400, 0.5610, 0.3607, -0.1778, 0.2245, -0.6190,\n", + " -0.0624, -0.9702, -0.0513, 0.6487, -1.0293, -0.6782, -0.5970, 0.5167,\n", + " 0.3646, 0.7861, 0.6727]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2075, -0.2465, -0.0363, -0.1030, 0.0994, 0.2008, 0.1753, 0.2910,\n", + " 0.2076, 0.2669, 0.1843, -0.2665, -0.2071, -0.3442, -0.1663, -0.2394,\n", + " -0.2130, -0.0112, -0.1399, -0.1017, -0.0863, -0.0954, -0.0289, -0.1181,\n", + " -0.0041, 0.0278, -0.0909, -0.2511, -0.2188, -0.2846, -0.3300, -0.1181,\n", + " -0.3705, -0.2845, -0.1812, -0.1837, -0.0054, 0.0296, 0.0588, 0.2587,\n", + " 0.2727, 0.3171, 0.1915]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004091041046194732\n", + "Grad encoder.fc1.bias: 0.00033866841113194823\n", + "Grad encoder.encoder.0.weight: 0.00013888462854083627\n", + "Grad encoder.encoder.0.bias: 0.0004291344666853547\n", + "Grad encoder.encoder.2.weight: 9.500377927906811e-05\n", + "Grad encoder.encoder.2.bias: 0.00047750264639034867\n", + "Grad encoder.encoder.4.weight: 0.00015486939810216427\n", + "Grad encoder.encoder.4.bias: 0.0012860428541898727\n", + "Grad decoder.fc1.0.weight: 4.826540680369362e-05\n", + "Grad decoder.fc1.0.bias: 0.0004961628583259881\n", + "Grad decoder.fc1.2.weight: 4.715353134088218e-05\n", + "Grad decoder.fc1.2.bias: 0.0007732082158327103\n", + "Grad decoder.fc1.4.weight: 5.2190316637279466e-05\n", + "Grad decoder.fc1.4.bias: 0.000967281055636704\n", + "Grad decoder.fc2.weight: 0.00014471063332166523\n", + "Grad decoder.fc2.bias: 0.0025022418703883886\n", + "Grad _memory_unit.weight_ih_l0: 6.3907154981279746e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.4163386115105823e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.2628085642063525e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.296559836802771e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.267046698369086e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.82505711261183e-05\n", + "Data X Sample: tensor([[1.3462, 1.4419, 1.6694, 1.7973, 1.8116, 1.9624, 2.0552, 1.9250, 2.9780,\n", + " 4.0678, 4.3778, 4.3702, 4.0990, 4.0297, 3.8989, 3.6691, 3.6353, 3.6347,\n", + " 3.6964, 3.6097, 3.4890, 3.4400, 2.8676, 2.9222, 2.8847, 2.9201, 3.0769,\n", + " 3.0100, 3.0529, 3.1867, 3.2790, 3.3270, 3.9227, 2.8972, 4.6768, 5.0153,\n", + " 5.2977, 5.4887, 6.0469, 5.8984, 0.9688, 0.5875, 0.6164, 1.0994, 1.5222,\n", + " 1.8070, 1.1354, 1.5717]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4328, -0.1708, 0.3758, -0.2318, 0.4401, 0.3119, 0.3968, 0.1358,\n", + " -0.1879, 0.2927, 0.1715, -1.1967, 0.2766, -0.1660, -1.2537, -0.3012,\n", + " -0.0833, 0.6345, -1.0725, -0.0218, -0.5025, 0.5217, 0.1440, 0.2112,\n", + " -0.3264, -0.0330, -0.9399, -0.1370, -2.1840, -1.1082, -0.6063, -0.9315,\n", + " -0.7894, -0.8133, -0.3268, 0.2527, 0.0000, 0.0533, -0.0231, 0.1514,\n", + " 0.2600, 0.7148, 1.2091]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1991, -0.2397, -0.0400, -0.1073, 0.0891, 0.1888, 0.1675, 0.2797,\n", + " 0.1938, 0.2503, 0.1707, -0.2587, -0.2011, -0.3328, -0.1639, -0.2247,\n", + " -0.1977, -0.0097, -0.1378, -0.0982, -0.0829, -0.0890, -0.0312, -0.1080,\n", + " 0.0113, 0.0303, -0.0842, -0.2408, -0.2039, -0.2756, -0.3188, -0.1196,\n", + " -0.3538, -0.2706, -0.1666, -0.1702, -0.0127, 0.0237, 0.0630, 0.2431,\n", + " 0.2584, 0.3126, 0.1879]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005165863549336791\n", + "Grad encoder.fc1.bias: 0.0009608599939383566\n", + "Grad encoder.encoder.0.weight: 0.00016364567272830755\n", + "Grad encoder.encoder.0.bias: 0.0007077180780470371\n", + "Grad encoder.encoder.2.weight: 9.674898319644853e-05\n", + "Grad encoder.encoder.2.bias: 0.0006417876575142145\n", + "Grad encoder.encoder.4.weight: 0.00016232268535532057\n", + "Grad encoder.encoder.4.bias: 0.0017261866014450788\n", + "Grad decoder.fc1.0.weight: 5.173688623472117e-05\n", + "Grad decoder.fc1.0.bias: 0.0006527778459712863\n", + "Grad decoder.fc1.2.weight: 6.121030310168862e-05\n", + "Grad decoder.fc1.2.bias: 0.000988250132650137\n", + "Grad decoder.fc1.4.weight: 5.6688768381718546e-05\n", + "Grad decoder.fc1.4.bias: 0.0008693080162629485\n", + "Grad decoder.fc2.weight: 0.0001328194048255682\n", + "Grad decoder.fc2.bias: 0.001973387785255909\n", + "Grad _memory_unit.weight_ih_l0: 8.687776244187262e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.407765325391665e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.853066532930825e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.658923444367247e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010759918222902343\n", + "Grad _memory_unit.bias_hh_l1: 5.6126613344531506e-05\n", + "Data X Sample: tensor([[1.5361, 1.7828, 1.9264, 2.0226, 2.1411, 2.3690, 2.3803, 2.3708, 2.4581,\n", + " 2.5291, 2.5537, 2.6038, 2.6054, 2.4320, 2.3882, 2.3399, 2.3334, 2.4508,\n", + " 2.4099, 2.4232, 2.5787, 2.5964, 2.4941, 2.4985, 2.4417, 2.4970, 2.5334,\n", + " 2.6021, 2.2341, 2.3712, 2.2047, 2.2963, 2.1846, 1.4418, 1.8923, 1.7682,\n", + " 1.6400, 1.4735, 1.5276, 1.5320, 1.2982, 0.7229, 0.7053, 1.2400, 1.7165,\n", + " 2.0185, 1.4278, 2.0408]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6171, -0.5510, 0.7663, 0.2741, 0.5117, 0.9052, -0.7029, -0.1879,\n", + " 0.1911, -0.1555, -0.3673, 0.2871, 0.5729, 0.3389, -0.2241, 0.0665,\n", + " 0.2677, -0.2401, -0.6042, 0.0112, 0.4343, -0.2292, -0.1879, -1.3536,\n", + " -0.1557, 0.0931, -0.1213, 0.2265, 0.1363, -0.5585, 0.5782, 0.3029,\n", + " -0.4464, 0.0385, 0.3725, 1.5949, 0.9776, -0.6596, 0.0040, -0.1170,\n", + " -0.4486, -0.0684, -0.8645]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3114, 0.2239, 0.1121, 0.1738, 0.0487, -0.1322, -0.2942, -0.3423,\n", + " -0.1726, -0.2093, -0.2214, 0.0983, 0.1297, 0.2069, 0.1710, 0.2447,\n", + " 0.1265, 0.1250, 0.0520, 0.0392, 0.0560, -0.0014, 0.0407, -0.0011,\n", + " -0.0025, -0.0013, -0.0273, 0.0268, 0.1689, 0.2122, 0.1578, 0.1279,\n", + " 0.1688, 0.2212, 0.1553, 0.1137, -0.0091, 0.0371, -0.0246, -0.2225,\n", + " -0.2182, -0.1720, -0.2073]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005843244725838304\n", + "Grad encoder.fc1.bias: 0.00041196501115337014\n", + "Grad encoder.encoder.0.weight: 0.00017599674174562097\n", + "Grad encoder.encoder.0.bias: 0.0005866899155080318\n", + "Grad encoder.encoder.2.weight: 0.00010854371066670865\n", + "Grad encoder.encoder.2.bias: 0.000683868711348623\n", + "Grad encoder.encoder.4.weight: 0.0001682686706772074\n", + "Grad encoder.encoder.4.bias: 0.0016949500422924757\n", + "Grad decoder.fc1.0.weight: 5.68221730645746e-05\n", + "Grad decoder.fc1.0.bias: 0.000636672368273139\n", + "Grad decoder.fc1.2.weight: 5.811591836391017e-05\n", + "Grad decoder.fc1.2.bias: 0.0007737927371636033\n", + "Grad decoder.fc1.4.weight: 5.072027852293104e-05\n", + "Grad decoder.fc1.4.bias: 0.0006823017611168325\n", + "Grad decoder.fc2.weight: 0.0001267990010092035\n", + "Grad decoder.fc2.bias: 0.0019371086964383721\n", + "Grad _memory_unit.weight_ih_l0: 8.332056495419238e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.794564589858055e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.0949784306576476e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.861790668859612e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00013978269998915493\n", + "Grad _memory_unit.bias_hh_l1: 7.26762373233214e-05\n", + "Data X Sample: tensor([[-0.0106, 0.0044, -0.0030, 0.0044, -0.0051, -0.0044, 0.0154, -0.0014,\n", + " 0.0122, -0.0016, 0.0063, -0.0097, 0.0044, 0.0027, 0.0076, -0.0096,\n", + " 0.0094, 0.0135, -0.0083, 0.0149, 0.0196, 0.0184, 0.0193, 0.0286,\n", + " 0.0094, 0.0078, 0.0400, 0.0612, -0.0312, 0.0688, 0.0210, 0.0111,\n", + " -0.0044, -0.0069, 0.0025, 0.0316, 0.0039, 0.0133, 0.0063, 0.0170,\n", + " 0.0286, 0.0219, 0.0061, -0.0029, 0.0079, -0.0114, -0.0068, -0.0156]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 2.0182, 1.9007, 0.3703, 1.3442, -0.4211, -0.3318, -1.1303, -0.9992,\n", + " -0.0229, -1.0147, -0.6651, -0.3473, 0.4298, 0.5209, -1.0950, -0.0151,\n", + " -0.0513, 1.2870, 1.1531, 0.2331, -0.1445, 0.0512, 0.0997, -0.2843,\n", + " -0.1625, -3.6879, 0.3258, 0.2488, 0.7404, 0.9629, 0.0664, 0.7651,\n", + " 0.3600, 0.4995, 0.0276, -0.9198, -0.7561, -0.3710, 0.7297, -0.7787,\n", + " -0.8798, -0.4176, -1.5510]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.8648, 0.5936, 0.2600, 0.3994, -0.7336, -0.8732, -1.3220, -1.2090,\n", + " -0.9852, -0.9752, -1.0131, 0.2991, 0.5096, 0.5679, 0.4412, 0.5244,\n", + " 0.3056, 0.0693, -0.0282, -0.0534, 0.1717, -0.2118, 0.0482, -0.0604,\n", + " -0.1188, -0.1501, 0.4294, 0.7122, 1.1067, 0.9917, 0.8291, 0.4406,\n", + " 0.6408, 0.4943, 0.4471, 0.2028, -0.0425, 0.0535, -0.0512, -0.8673,\n", + " -0.7131, -0.5593, -0.3642]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 7.321606972254813e-05\n", + "Grad encoder.fc1.bias: 0.0007917787879705429\n", + "Grad encoder.encoder.0.weight: 2.679434146557469e-05\n", + "Grad encoder.encoder.0.bias: 0.000577398925088346\n", + "Grad encoder.encoder.2.weight: 1.9175613488187082e-05\n", + "Grad encoder.encoder.2.bias: 0.0003597507020458579\n", + "Grad encoder.encoder.4.weight: 5.2146071539027616e-05\n", + "Grad encoder.encoder.4.bias: 0.0008050892502069473\n", + "Grad decoder.fc1.0.weight: 2.9282940886332653e-05\n", + "Grad decoder.fc1.0.bias: 0.0004296097031328827\n", + "Grad decoder.fc1.2.weight: 4.710874054580927e-05\n", + "Grad decoder.fc1.2.bias: 0.0008576855761930346\n", + "Grad decoder.fc1.4.weight: 4.505141987465322e-05\n", + "Grad decoder.fc1.4.bias: 0.0009900513105094433\n", + "Grad decoder.fc2.weight: 0.0001316218840656802\n", + "Grad decoder.fc2.bias: 0.002094889525324106\n", + "Grad _memory_unit.weight_ih_l0: 5.5587793212907854e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.0730876713059843e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.1320262274239212e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.6581581096252194e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.188299448695034e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.172978904331103e-05\n", + "Data X Sample: tensor([[1.4523, 1.7187, 1.8497, 1.9591, 2.1531, 2.3233, 2.4081, 2.5383, 2.5606,\n", + " 2.5939, 2.6647, 2.6798, 2.6054, 2.5656, 2.4639, 2.4342, 2.3979, 2.4702,\n", + " 2.5813, 2.4995, 2.4781, 2.5092, 2.3809, 2.3572, 2.3329, 2.3899, 2.3150,\n", + " 2.4023, 2.1023, 2.2893, 2.2642, 2.2466, 2.2286, 1.4692, 1.9315, 1.7731,\n", + " 1.6204, 1.5000, 1.6163, 1.5860, 1.2313, 0.6731, 0.6871, 1.2056, 1.8235,\n", + " 1.8641, 1.3666, 1.8844]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.0791, 0.7408, -1.7796, 0.5698, -0.3565, -0.1304, -0.4680, -0.9173,\n", + " -0.9452, -0.6060, -0.8438, 0.4797, -0.4760, -0.1246, 0.2837, -0.2446,\n", + " -0.5078, -0.2621, 0.0844, -0.3630, -0.2022, -0.3215, 0.0496, 0.9071,\n", + " -0.0796, -1.9121, -0.6104, 0.5257, 0.7009, -0.0407, 0.3677, 2.4477,\n", + " -0.4343, 0.3400, 1.6615, 1.1530, -0.0630, -0.7725, -0.8437, -0.5623,\n", + " -0.5495, -0.5327, -0.1036]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2896, 0.2051, 0.1027, 0.1567, 0.0243, -0.1319, -0.2804, -0.3189,\n", + " -0.1667, -0.1924, -0.2123, 0.0878, 0.1171, 0.1877, 0.1551, 0.2211,\n", + " 0.1150, 0.1144, 0.0426, 0.0280, 0.0434, -0.0090, 0.0310, -0.0068,\n", + " -0.0020, 0.0011, -0.0200, 0.0278, 0.1708, 0.1920, 0.1453, 0.1156,\n", + " 0.1534, 0.2013, 0.1483, 0.0961, -0.0157, 0.0361, -0.0351, -0.2022,\n", + " -0.1966, -0.1487, -0.1824]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005301350611262023\n", + "Grad encoder.fc1.bias: 0.0006214648601599038\n", + "Grad encoder.encoder.0.weight: 0.00016581348609179258\n", + "Grad encoder.encoder.0.bias: 0.0006666237022727728\n", + "Grad encoder.encoder.2.weight: 0.00010794412810355425\n", + "Grad encoder.encoder.2.bias: 0.0006080319872125983\n", + "Grad encoder.encoder.4.weight: 0.00017775040760170668\n", + "Grad encoder.encoder.4.bias: 0.0014878998044878244\n", + "Grad decoder.fc1.0.weight: 5.352185689844191e-05\n", + "Grad decoder.fc1.0.bias: 0.0005600103177130222\n", + "Grad decoder.fc1.2.weight: 5.086660530650988e-05\n", + "Grad decoder.fc1.2.bias: 0.0008153241942636669\n", + "Grad decoder.fc1.4.weight: 5.362758383853361e-05\n", + "Grad decoder.fc1.4.bias: 0.000934916315600276\n", + "Grad decoder.fc2.weight: 0.0001367920485790819\n", + "Grad decoder.fc2.bias: 0.0017759022302925587\n", + "Grad _memory_unit.weight_ih_l0: 7.765343070786912e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.0082001103437506e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.569563573866617e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.351218533178326e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011608428758336231\n", + "Grad _memory_unit.bias_hh_l1: 5.933722422923893e-05\n", + "Data X Sample: tensor([[ 0.0011, -0.0029, 0.0000, -0.0022, -0.0102, -0.0147, -0.0077, -0.0071,\n", + " 0.0122, -0.0126, -0.0317, -0.0058, -0.0044, -0.0436, -0.0328, 0.0178,\n", + " 0.0818, 0.0793, 0.0785, 0.0614, 0.1202, 0.0582, 0.0530, 0.0763,\n", + " 0.0638, 0.0940, 0.0986, 0.1509, -0.0243, 0.0164, 0.0280, 0.0138,\n", + " -0.0242, 0.0092, -0.0172, -0.0073, -0.0079, -0.0265, -0.0063, 0.0113,\n", + " 0.0143, -0.0020, 0.0182, 0.0115, 0.0079, -0.0172, -0.0544, -0.0547]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[-1.4680e-04, -4.5964e-01, 3.7713e-01, 1.6306e-01, -2.0747e-01,\n", + " -7.9890e-02, -9.0943e-01, -3.3494e-01, 2.0040e-01, -6.5196e-01,\n", + " -1.9797e-01, 3.9701e-01, 1.1971e+00, 1.0019e+00, 8.4451e-01,\n", + " 4.6128e-01, 3.4474e-02, 2.8360e-01, 1.4236e+00, 7.4778e-01,\n", + " -4.6405e-01, -3.3458e-01, 1.3680e+00, -3.1785e-01, -5.0824e-01,\n", + " 2.0429e-01, 5.3966e-01, -7.9677e-02, 1.0470e+00, 3.6027e-01,\n", + " 5.5825e-02, 8.8280e-01, 6.7188e-01, 1.9835e-01, 4.6259e-01,\n", + " -5.4467e-01, -1.0622e+00, 1.5113e-01, -1.5613e-02, -2.5272e-01,\n", + " -2.8008e-01, -7.5998e-02, -2.6575e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5320, 0.3889, 0.2070, 0.3136, 0.0330, -0.2538, -0.5471, -0.6085,\n", + " -0.3125, -0.3886, -0.3577, 0.2098, 0.2259, 0.3518, 0.2897, 0.3552,\n", + " 0.2622, 0.1899, 0.1112, 0.0994, 0.0921, -0.0441, 0.0298, 0.0322,\n", + " 0.0100, 0.0484, 0.0054, 0.1325, 0.3363, 0.3938, 0.3408, 0.2584,\n", + " 0.3117, 0.3946, 0.2626, 0.1652, -0.0395, 0.0674, -0.0632, -0.4076,\n", + " -0.3808, -0.3276, -0.3316]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00016393342230003327\n", + "Grad encoder.fc1.bias: 0.00047100719530135393\n", + "Grad encoder.encoder.0.weight: 4.627147063729353e-05\n", + "Grad encoder.encoder.0.bias: 0.00038239959394559264\n", + "Grad encoder.encoder.2.weight: 3.9973019738681614e-05\n", + "Grad encoder.encoder.2.bias: 0.00028709255275316536\n", + "Grad encoder.encoder.4.weight: 9.807664901018143e-05\n", + "Grad encoder.encoder.4.bias: 0.0005039204261265695\n", + "Grad decoder.fc1.0.weight: 4.2459549149498343e-05\n", + "Grad decoder.fc1.0.bias: 0.0003294805937912315\n", + "Grad decoder.fc1.2.weight: 7.514893513871357e-05\n", + "Grad decoder.fc1.2.bias: 0.0007552566821686924\n", + "Grad decoder.fc1.4.weight: 6.469647632911801e-05\n", + "Grad decoder.fc1.4.bias: 0.0007623351411893964\n", + "Grad decoder.fc2.weight: 0.00013775717525277287\n", + "Grad decoder.fc2.bias: 0.0019335750257596374\n", + "Grad _memory_unit.weight_ih_l0: 1.0253628715872765e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.5185125448624603e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.346014849143103e-06\n", + "Grad _memory_unit.weight_ih_l1: 4.31161561209592e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.195805715629831e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.6681675080908462e-05\n", + "Data X Sample: tensor([[1.3558, 1.4667, 1.6303, 1.6771, 1.9123, 2.0817, 2.0999, 1.9931, 1.8820,\n", + " 3.5686, 3.9432, 4.1287, 3.8593, 3.7952, 3.6795, 3.4927, 3.3586, 3.4567,\n", + " 3.5167, 3.2898, 3.3860, 3.2333, 2.9327, 2.7962, 2.7402, 2.8391, 2.8158,\n", + " 2.8917, 2.7545, 2.8657, 3.0061, 3.1336, 3.4387, 2.5883, 4.2993, 4.6480,\n", + " 5.0224, 5.2104, 5.7933, 5.6544, 1.0309, 0.5954, 0.6103, 1.0907, 1.4509,\n", + " 1.6583, 1.0810, 1.7280]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4894, 0.7700, 0.2680, 0.2774, 0.6292, -1.1609, 0.2735, 0.4733,\n", + " 0.4272, -0.0399, -0.3065, -0.2109, -0.1350, 0.9064, 1.1503, 1.5098,\n", + " 0.4020, -0.3221, 0.1230, 0.1381, 0.9543, 0.8367, 0.2208, 0.1927,\n", + " -0.6420, -0.0432, -0.2756, -0.2728, 0.0976, 0.3246, 0.0849, 0.0895,\n", + " -0.3468, 0.3190, -0.7133, 0.0451, -0.5168, 0.0000, 0.0000, -1.2342,\n", + " -1.1466, -0.4880, -0.0564]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1454, -0.2167, -0.0750, -0.1422, -0.0319, 0.0914, 0.1285, 0.2364,\n", + " 0.1317, 0.1537, 0.1396, -0.2032, -0.1362, -0.2549, -0.1585, -0.1773,\n", + " -0.1447, -0.0181, -0.0987, -0.0893, -0.0675, -0.0295, -0.0670, -0.0639,\n", + " 0.0738, 0.0522, -0.0360, -0.1657, -0.1213, -0.2002, -0.2477, -0.1347,\n", + " -0.2271, -0.1946, -0.1092, -0.1164, -0.0388, -0.0124, 0.0439, 0.1979,\n", + " 0.2188, 0.3070, 0.1757]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00022168084979057312\n", + "Grad encoder.fc1.bias: 0.00024071132065728307\n", + "Grad encoder.encoder.0.weight: 7.787412323523313e-05\n", + "Grad encoder.encoder.0.bias: 0.0002310598938493058\n", + "Grad encoder.encoder.2.weight: 5.265814979793504e-05\n", + "Grad encoder.encoder.2.bias: 0.00034403419704176486\n", + "Grad encoder.encoder.4.weight: 0.00010832308180397376\n", + "Grad encoder.encoder.4.bias: 0.001125071314163506\n", + "Grad decoder.fc1.0.weight: 4.261041613062844e-05\n", + "Grad decoder.fc1.0.bias: 0.00047918956261128187\n", + "Grad decoder.fc1.2.weight: 6.512629624921829e-05\n", + "Grad decoder.fc1.2.bias: 0.0007997247157618403\n", + "Grad decoder.fc1.4.weight: 6.394320371327922e-05\n", + "Grad decoder.fc1.4.bias: 0.0009445789619348943\n", + "Grad decoder.fc2.weight: 0.00013863212370779365\n", + "Grad decoder.fc2.bias: 0.0021454470697790384\n", + "Grad _memory_unit.weight_ih_l0: 8.177175004675519e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.9982601669617e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.1021711038192734e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.865984010393731e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00012011957005597651\n", + "Grad _memory_unit.bias_hh_l1: 6.335029320325702e-05\n", + "Data X Sample: tensor([[1.5531, 1.8337, 1.9850, 2.0969, 2.1292, 2.2011, 2.3064, 2.3154, 2.3922,\n", + " 2.4644, 2.5156, 2.5025, 2.4279, 2.4184, 2.3832, 2.3713, 2.2485, 2.3328,\n", + " 2.4223, 2.2986, 2.3432, 2.4387, 2.4797, 2.5214, 2.4248, 2.5179, 2.3097,\n", + " 2.3737, 2.0746, 2.0797, 1.8267, 1.7879, 1.5158, 1.0161, 1.3898, 1.3888,\n", + " 1.3942, 1.3437, 1.3818, 1.3760, 1.2122, 0.7528, 0.7720, 1.3433, 1.9226,\n", + " 2.1272, 1.3462, 1.8922]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 2.9684e-01, -8.3092e-01, 4.4786e-01, -7.1277e-03, 9.0831e-01,\n", + " 6.5005e-01, 5.4845e-01, 6.7108e-01, -3.8341e-01, -3.4287e-01,\n", + " -2.6959e-01, 5.5847e-01, 2.9976e-01, -7.2678e-01, -4.8573e-01,\n", + " 1.8821e-01, 1.6433e-01, 5.4684e-01, -7.6116e-02, 4.9318e-01,\n", + " 1.4600e-03, 4.4482e-02, -1.5825e-02, -8.8881e-02, -6.0250e-01,\n", + " -2.9756e-01, 2.9843e-01, -2.7557e-01, -1.9519e+00, 4.3678e-01,\n", + " -2.9663e-01, -8.8165e-01, -1.2404e-01, -3.8150e-01, -6.8367e-01,\n", + " 4.8486e-01, -8.2869e-01, -9.2008e-02, 5.4455e-02, 5.0880e-01,\n", + " 8.2456e-01, -1.0526e-02, -1.5813e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3391, 0.2412, 0.1281, 0.2044, 0.0402, -0.1372, -0.3170, -0.3519,\n", + " -0.1781, -0.2203, -0.2304, 0.1104, 0.1323, 0.2075, 0.1671, 0.2462,\n", + " 0.1457, 0.1218, 0.0573, 0.0464, 0.0528, -0.0155, 0.0333, 0.0069,\n", + " 0.0035, 0.0140, -0.0251, 0.0286, 0.1844, 0.2038, 0.1695, 0.1393,\n", + " 0.1775, 0.2319, 0.1700, 0.1201, -0.0362, 0.0423, -0.0515, -0.2335,\n", + " -0.2231, -0.1761, -0.2169]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00013397555449046195\n", + "Grad encoder.fc1.bias: 0.0009948862716555595\n", + "Grad encoder.encoder.0.weight: 5.421519745141268e-05\n", + "Grad encoder.encoder.0.bias: 0.0005202819011174142\n", + "Grad encoder.encoder.2.weight: 3.5596254747360945e-05\n", + "Grad encoder.encoder.2.bias: 0.00041941608651541173\n", + "Grad encoder.encoder.4.weight: 9.618978947401047e-05\n", + "Grad encoder.encoder.4.bias: 0.0010400580940768123\n", + "Grad decoder.fc1.0.weight: 4.782902396982536e-05\n", + "Grad decoder.fc1.0.bias: 0.000502977694850415\n", + "Grad decoder.fc1.2.weight: 6.635133468080312e-05\n", + "Grad decoder.fc1.2.bias: 0.0007770046358928084\n", + "Grad decoder.fc1.4.weight: 5.506159504875541e-05\n", + "Grad decoder.fc1.4.bias: 0.0008228376973420382\n", + "Grad decoder.fc2.weight: 0.0001394405117025599\n", + "Grad decoder.fc2.bias: 0.0022060610353946686\n", + "Grad _memory_unit.weight_ih_l0: 1.7798693079384975e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.580254168715328e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.141098906984553e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.50540993976756e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011854551121359691\n", + "Grad _memory_unit.bias_hh_l1: 6.380633567459881e-05\n", + "Data X Sample: tensor([[1.5478, 1.6633, 1.7716, 2.0029, 2.1958, 2.2011, 2.4173, 2.4630, 2.5582,\n", + " 2.4691, 2.6616, 2.5980, 2.5366, 2.4947, 2.3630, 2.4083, 2.3538, 2.4354,\n", + " 2.4760, 2.3953, 2.3677, 2.3147, 2.3905, 2.3401, 2.2860, 2.3455, 2.3709,\n", + " 2.3085, 2.1821, 2.3057, 2.2677, 2.2245, 2.1802, 1.4189, 1.8604, 1.7390,\n", + " 1.6007, 1.4815, 1.5022, 1.5179, 1.2695, 0.7090, 0.6346, 1.2343, 1.7641,\n", + " 2.0471, 1.3802, 2.1190]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0510, 0.4421, 0.0166, -0.1649, -0.9739, -0.4893, -0.3011, -0.4537,\n", + " 0.0524, 0.0453, -0.3634, 1.2551, 0.1552, 1.0599, -0.2210, 0.0530,\n", + " -1.0473, -0.3280, 0.1499, 0.7485, 1.3309, 0.6986, -0.0503, 0.8513,\n", + " 0.1843, 1.1075, -0.5151, 0.7114, 0.3975, 0.8235, 1.3051, 0.8192,\n", + " 0.3057, 0.6748, 0.4927, 0.4182, -0.0457, 0.1511, -0.0156, -0.1307,\n", + " -0.2865, -0.1779, -0.2315]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4192, 0.3202, 0.1614, 0.2766, 0.0809, -0.1690, -0.3810, -0.4289,\n", + " -0.2070, -0.2795, -0.2742, 0.1555, 0.1668, 0.2558, 0.2191, 0.3084,\n", + " 0.2066, 0.1503, 0.0865, 0.0758, 0.0714, -0.0150, 0.0486, 0.0085,\n", + " 0.0182, 0.0286, -0.0455, 0.0254, 0.2061, 0.2480, 0.2229, 0.1696,\n", + " 0.2322, 0.3045, 0.2109, 0.1627, -0.0483, 0.0466, -0.0440, -0.2983,\n", + " -0.2909, -0.2447, -0.2802]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00012787376181222498\n", + "Grad encoder.fc1.bias: 0.00016677254461683333\n", + "Grad encoder.encoder.0.weight: 4.13334091717843e-05\n", + "Grad encoder.encoder.0.bias: 0.0001370642421534285\n", + "Grad encoder.encoder.2.weight: 2.274625512654893e-05\n", + "Grad encoder.encoder.2.bias: 0.00016137922648340464\n", + "Grad encoder.encoder.4.weight: 4.6879766159690917e-05\n", + "Grad encoder.encoder.4.bias: 0.0002828313736245036\n", + "Grad decoder.fc1.0.weight: 2.213951120211277e-05\n", + "Grad decoder.fc1.0.bias: 0.0001753495162120089\n", + "Grad decoder.fc1.2.weight: 2.4006756575545296e-05\n", + "Grad decoder.fc1.2.bias: 0.0002788968849927187\n", + "Grad decoder.fc1.4.weight: 2.7634761863737367e-05\n", + "Grad decoder.fc1.4.bias: 0.00038780050817877054\n", + "Grad decoder.fc2.weight: 9.82068813755177e-05\n", + "Grad decoder.fc2.bias: 0.0017344823572784662\n", + "Grad _memory_unit.weight_ih_l0: 3.6852418361377204e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.31034094010829e-05\n", + "Grad _memory_unit.bias_hh_l0: 6.922639840922784e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.140341166523285e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.5579578252509236e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.8244143575429916e-05\n", + "Data X Sample: tensor([[1.5096, 1.6255, 1.6394, 1.8761, 1.9243, 1.9756, 2.1230, 2.0443, 2.8364,\n", + " 3.8592, 4.0828, 4.1482, 3.7217, 3.9097, 3.5634, 3.5939, 3.5897, 3.3677,\n", + " 3.3680, 3.4646, 3.3663, 3.3022, 2.9809, 2.7523, 2.7326, 2.7738, 2.8105,\n", + " 2.7816, 2.9419, 2.9902, 3.0656, 3.1502, 3.5311, 2.5677, 4.2478, 4.6285,\n", + " 4.8139, 5.2634, 5.8123, 5.6487, 1.1550, 0.6333, 0.6245, 1.0707, 1.5381,\n", + " 1.8070, 1.2238, 1.8219]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3723, 0.1800, -2.1267, 0.4692, 0.5328, 0.3573, 0.1672, -0.2039,\n", + " -0.1939, -0.6398, 0.1722, 0.8205, 0.9675, 0.6323, -0.4586, 0.9585,\n", + " 1.2847, 0.6087, 0.5269, -0.8129, -0.1617, 1.3200, 0.2370, -0.6841,\n", + " -0.4296, 0.5820, -0.1186, 0.0962, -0.5452, -0.1688, -0.3219, 0.5756,\n", + " 0.6978, 0.0348, 0.2829, 0.0768, -0.4196, -0.1543, -0.5562, -0.4885,\n", + " -0.2096, -2.0706, -0.8934]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1535, -0.2459, -0.0897, -0.1679, -0.0825, 0.0670, 0.1286, 0.2469,\n", + " 0.1336, 0.1565, 0.1807, -0.1916, -0.1278, -0.2550, -0.1778, -0.2156,\n", + " -0.1608, -0.0460, -0.0771, -0.0960, -0.0679, -0.0200, -0.0675, -0.0650,\n", + " 0.0690, 0.0450, -0.0313, -0.1478, -0.1293, -0.1948, -0.2430, -0.1568,\n", + " -0.2132, -0.1969, -0.1268, -0.1334, -0.0495, -0.0258, 0.0298, 0.2370,\n", + " 0.2576, 0.3283, 0.2043]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00014158111298456788\n", + "Grad encoder.fc1.bias: 0.00045911624329164624\n", + "Grad encoder.encoder.0.weight: 4.851404810324311e-05\n", + "Grad encoder.encoder.0.bias: 0.00033515383256599307\n", + "Grad encoder.encoder.2.weight: 3.9013641071505845e-05\n", + "Grad encoder.encoder.2.bias: 0.00036427407758310437\n", + "Grad encoder.encoder.4.weight: 9.060936281457543e-05\n", + "Grad encoder.encoder.4.bias: 0.0009532844414934516\n", + "Grad decoder.fc1.0.weight: 4.522856033872813e-05\n", + "Grad decoder.fc1.0.bias: 0.0004985291743651032\n", + "Grad decoder.fc1.2.weight: 4.988043656339869e-05\n", + "Grad decoder.fc1.2.bias: 0.0005336106405593455\n", + "Grad decoder.fc1.4.weight: 3.981432382715866e-05\n", + "Grad decoder.fc1.4.bias: 0.0005423673428595066\n", + "Grad decoder.fc2.weight: 0.00013029792171437293\n", + "Grad decoder.fc2.bias: 0.0020072886254638433\n", + "Grad _memory_unit.weight_ih_l0: 7.3935316322604194e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.5434251660481095e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.3929975213832222e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.772597094415687e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010234685032628477\n", + "Grad _memory_unit.bias_hh_l1: 5.328847328200936e-05\n", + "Data X Sample: tensor([[1.4958, 1.6196, 1.7746, 1.9242, 1.9482, 2.2541, 2.1862, 2.1124, 3.6420,\n", + " 4.2494, 4.2287, 4.3468, 4.1167, 3.9888, 3.9796, 3.7717, 3.6904, 3.6405,\n", + " 3.6200, 3.5688, 3.4817, 3.5088, 3.0171, 2.8592, 2.8096, 2.8705, 2.9383,\n", + " 3.0100, 3.0251, 3.0950, 3.2336, 3.4182, 3.8457, 2.8812, 4.5910, 4.9934,\n", + " 5.1345, 5.5708, 6.0595, 6.0175, 1.1788, 0.6313, 0.6629, 1.1395, 1.6491,\n", + " 1.7955, 1.2374, 1.6264]], device='cuda:0')\n", + "Data Y Sample: tensor([[-2.4841e-01, -6.0358e-01, 1.1945e+00, -1.0791e+00, -6.5591e-01,\n", + " -2.9145e-01, 1.0078e-01, -4.4574e-02, 6.5665e-01, 3.1309e-01,\n", + " -2.3681e-01, -1.9771e-01, 4.5802e-01, -6.3499e-01, -6.7357e-01,\n", + " 4.4323e-01, -4.6896e-02, -4.9188e-02, 6.2690e-01, 5.3514e-01,\n", + " -1.1160e+00, 1.6989e+00, 2.8721e-01, 3.8322e+00, 1.1031e+00,\n", + " -5.2246e-01, -8.5640e-01, 3.7505e-01, -5.1757e-01, -2.1766e-01,\n", + " -7.4833e-01, -6.5781e-02, -3.7120e-01, -8.9249e-01, 1.1805e-02,\n", + " -1.2560e-01, -1.0138e+00, -4.1061e-01, -2.5781e-01, 3.3499e-03,\n", + " -4.3355e-01, -4.1111e-01, -3.4567e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1529, -0.2487, -0.0845, -0.1640, -0.0613, 0.0811, 0.1447, 0.2551,\n", + " 0.1474, 0.1644, 0.1870, -0.1945, -0.1295, -0.2623, -0.1870, -0.2236,\n", + " -0.1610, -0.0421, -0.0697, -0.0992, -0.0702, -0.0217, -0.0648, -0.0615,\n", + " 0.0674, 0.0488, -0.0443, -0.1574, -0.1449, -0.2121, -0.2527, -0.1659,\n", + " -0.2330, -0.2085, -0.1363, -0.1345, -0.0490, -0.0253, 0.0325, 0.2361,\n", + " 0.2665, 0.3374, 0.2148]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006275690975598991\n", + "Grad encoder.fc1.bias: 0.00037730392068624496\n", + "Grad encoder.encoder.0.weight: 0.00018464807362761348\n", + "Grad encoder.encoder.0.bias: 0.0006328122690320015\n", + "Grad encoder.encoder.2.weight: 0.00010214437497779727\n", + "Grad encoder.encoder.2.bias: 0.0006153484573587775\n", + "Grad encoder.encoder.4.weight: 0.000183872805791907\n", + "Grad encoder.encoder.4.bias: 0.0024094560649245977\n", + "Grad decoder.fc1.0.weight: 5.4629374062642455e-05\n", + "Grad decoder.fc1.0.bias: 0.0007621629629284143\n", + "Grad decoder.fc1.2.weight: 3.633400046965107e-05\n", + "Grad decoder.fc1.2.bias: 0.0009510982781648636\n", + "Grad decoder.fc1.4.weight: 3.4369819331914186e-05\n", + "Grad decoder.fc1.4.bias: 0.0007747194031253457\n", + "Grad decoder.fc2.weight: 0.0001214668809552677\n", + "Grad decoder.fc2.bias: 0.0021696873009204865\n", + "Grad _memory_unit.weight_ih_l0: 7.068340437399456e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.262623770046048e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.206708086305298e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.802664418297354e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001840416225604713\n", + "Grad _memory_unit.bias_hh_l1: 9.460650471737608e-05\n", + "Data X Sample: tensor([[1.5085, 1.5963, 1.6754, 1.7711, 1.9943, 1.9447, 2.1600, 2.1720, 3.5224,\n", + " 4.2668, 4.4159, 4.4013, 4.0635, 3.9261, 3.9190, 3.6951, 3.6951, 3.6695,\n", + " 3.5869, 3.4516, 3.5185, 3.2792, 2.9062, 2.8363, 2.8302, 2.8888, 2.9090,\n", + " 2.9488, 2.9349, 3.2391, 3.3525, 3.4293, 3.8699, 2.7988, 4.7846, 4.9934,\n", + " 5.2151, 5.5364, 6.1039, 5.9097, 1.1025, 0.5994, 0.6103, 1.1080, 1.5936,\n", + " 1.7269, 1.1694, 1.6577]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.9811, 0.4988, 0.2078, 0.3854, 0.9324, -0.5730, -0.0405, -0.3945,\n", + " 0.2329, -0.0306, -0.1465, 0.8594, -0.7798, -0.9602, -0.0877, -0.7225,\n", + " -0.1884, -0.0039, -0.2178, -0.7110, 0.3379, -0.1549, -0.2508, -0.6278,\n", + " -1.0739, 0.1201, -1.0059, 0.6018, 0.2502, 0.1469, -0.7286, 1.2601,\n", + " -0.0062, 0.0564, 0.8291, -0.8279, -0.4699, -0.2820, -0.2296, -0.5848,\n", + " -0.6776, -0.5292, -1.2027]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1666, -0.2632, -0.0815, -0.1655, -0.0361, 0.1032, 0.1636, 0.2684,\n", + " 0.1655, 0.1821, 0.1961, -0.2011, -0.1394, -0.2819, -0.1984, -0.2388,\n", + " -0.1644, -0.0435, -0.0661, -0.1062, -0.0791, -0.0289, -0.0630, -0.0610,\n", + " 0.0711, 0.0421, -0.0601, -0.1754, -0.1664, -0.2411, -0.2713, -0.1752,\n", + " -0.2624, -0.2275, -0.1457, -0.1402, -0.0480, -0.0252, 0.0385, 0.2456,\n", + " 0.2789, 0.3502, 0.2339]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00015738792717456818\n", + "Grad encoder.fc1.bias: 0.0007677902467548847\n", + "Grad encoder.encoder.0.weight: 4.2560655856505036e-05\n", + "Grad encoder.encoder.0.bias: 0.0004408516106195748\n", + "Grad encoder.encoder.2.weight: 3.745029243873432e-05\n", + "Grad encoder.encoder.2.bias: 0.00031744848820380867\n", + "Grad encoder.encoder.4.weight: 9.939017763826996e-05\n", + "Grad encoder.encoder.4.bias: 0.0006417884724214673\n", + "Grad decoder.fc1.0.weight: 4.551686652121134e-05\n", + "Grad decoder.fc1.0.bias: 0.0002897568920161575\n", + "Grad decoder.fc1.2.weight: 5.892293484066613e-05\n", + "Grad decoder.fc1.2.bias: 0.0004785231431014836\n", + "Grad decoder.fc1.4.weight: 4.962814273312688e-05\n", + "Grad decoder.fc1.4.bias: 0.0005080394330434501\n", + "Grad decoder.fc2.weight: 0.00012982833140995353\n", + "Grad decoder.fc2.bias: 0.0016717218095436692\n", + "Grad _memory_unit.weight_ih_l0: 1.0349036529078148e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.616678102640435e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.399513530486729e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.2516958274063654e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.257268639979884e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.8165397452539764e-05\n", + "Data X Sample: tensor([[1.4926, 1.6124, 1.6559, 1.7383, 1.9448, 2.0066, 2.0691, 2.1067, 2.1701,\n", + " 3.6507, 4.0732, 4.1696, 4.0790, 3.7952, 3.6668, 3.4626, 3.4498, 3.4142,\n", + " 3.5869, 3.4312, 3.3958, 3.4139, 3.0195, 2.8230, 2.7552, 2.8548, 2.8797,\n", + " 2.8958, 2.9488, 3.0393, 3.0936, 3.2110, 3.5333, 2.5997, 4.3704, 4.6261,\n", + " 4.9083, 5.2607, 5.8821, 5.6402, 1.0452, 0.5875, 0.6184, 1.0161, 1.5579,\n", + " 1.6411, 1.1830, 1.6029]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.9752, -0.4666, -0.5710, -0.3170, 0.3978, 0.5850, 0.7785, -0.0796,\n", + " 0.5283, -0.4820, -0.9850, 0.0341, 0.0327, 0.7944, 0.2820, 0.4006,\n", + " 0.1912, -0.7496, -0.8742, -0.0258, -0.5474, 0.7972, -0.1231, -0.1314,\n", + " 0.0572, -0.4494, 0.0356, 0.1466, -0.8650, -0.2273, -0.4928, 0.4372,\n", + " -0.6105, -0.6360, -0.6458, 0.5047, -0.0177, 0.0228, -0.1865, -0.9354,\n", + " -0.2599, -0.2118, 0.0659]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1673, -0.2672, -0.0849, -0.1671, -0.0505, 0.0963, 0.1633, 0.2703,\n", + " 0.1674, 0.1822, 0.2055, -0.1940, -0.1326, -0.2765, -0.2023, -0.2462,\n", + " -0.1688, -0.0496, -0.0567, -0.1126, -0.0797, -0.0228, -0.0626, -0.0619,\n", + " 0.0633, 0.0390, -0.0609, -0.1687, -0.1687, -0.2336, -0.2669, -0.1794,\n", + " -0.2544, -0.2260, -0.1465, -0.1452, -0.0488, -0.0270, 0.0338, 0.2555,\n", + " 0.2897, 0.3508, 0.2363]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00011414037726353854\n", + "Grad encoder.fc1.bias: 0.00011422840179875493\n", + "Grad encoder.encoder.0.weight: 3.976952575612813e-05\n", + "Grad encoder.encoder.0.bias: 0.0001108877913793549\n", + "Grad encoder.encoder.2.weight: 3.4589880669955164e-05\n", + "Grad encoder.encoder.2.bias: 0.0001824359205784276\n", + "Grad encoder.encoder.4.weight: 7.714872481301427e-05\n", + "Grad encoder.encoder.4.bias: 0.0007880315533839166\n", + "Grad decoder.fc1.0.weight: 3.939485031878576e-05\n", + "Grad decoder.fc1.0.bias: 0.00030953751411288977\n", + "Grad decoder.fc1.2.weight: 5.6362696341238916e-05\n", + "Grad decoder.fc1.2.bias: 0.0004699378041550517\n", + "Grad decoder.fc1.4.weight: 4.642517160391435e-05\n", + "Grad decoder.fc1.4.bias: 0.0005410749581642449\n", + "Grad decoder.fc2.weight: 0.00013711754581891\n", + "Grad decoder.fc2.bias: 0.002247567055746913\n", + "Grad _memory_unit.weight_ih_l0: 6.354758170346031e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.44457218691241e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.338880585739389e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.362422603458981e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.978787471074611e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.1799059545155615e-05\n", + "Data X Sample: tensor([[ 0.0117, 0.0044, 0.0285, 0.0109, 0.0137, 0.0250, 0.0200, 0.0156,\n", + " 0.0342, 0.0237, 0.0476, 0.0175, 0.0200, 0.0436, 0.0025, 0.0164,\n", + " -0.1179, -0.1489, -0.1755, -0.1655, -0.1742, -0.1026, -0.1831, -0.1737,\n", + " -0.1408, -0.3056, -0.2877, -0.5139, -0.0763, -0.0917, -0.1155, -0.0553,\n", + " -0.0132, -0.0618, -0.0245, -0.0024, -0.0098, -0.0027, -0.0254, 0.0057,\n", + " 0.0095, -0.0100, 0.0141, 0.0086, 0.0000, -0.0114, -0.0272, 0.0704]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4483, 0.4566, 0.5217, 0.7558, -0.0346, 0.6416, -0.8183, -0.5147,\n", + " -0.4978, -0.3554, -0.1372, 0.9702, -0.3041, 0.3536, -0.1944, 0.6394,\n", + " 1.0260, 0.0484, 0.3013, 0.4713, 0.9360, 0.6043, 0.7765, -0.4477,\n", + " -0.3521, 0.4359, 0.1900, -0.3383, 0.0608, 0.1214, 0.2050, 0.6107,\n", + " 0.4610, 1.0236, 1.3640, 1.0406, 0.1343, -0.7055, -1.8131, -0.2635,\n", + " -0.1226, -0.3595, 0.0054]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.8628, 0.6083, 0.3352, 0.5835, 0.1111, -0.3502, -0.7919, -0.8811,\n", + " -0.4160, -0.5783, -0.4998, 0.3732, 0.3701, 0.5299, 0.4322, 0.5227,\n", + " 0.4709, 0.2382, 0.2121, 0.1897, 0.1239, -0.0481, 0.0348, 0.0922,\n", + " 0.0539, 0.0991, -0.0465, 0.1463, 0.4800, 0.5673, 0.5322, 0.4076,\n", + " 0.4831, 0.5942, 0.4147, 0.3098, -0.1492, 0.0922, -0.0910, -0.6189,\n", + " -0.5867, -0.5266, -0.5562]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00035266298800706863\n", + "Grad encoder.fc1.bias: 0.00021867452596779913\n", + "Grad encoder.encoder.0.weight: 0.00011087489110650495\n", + "Grad encoder.encoder.0.bias: 0.00032634148374199867\n", + "Grad encoder.encoder.2.weight: 6.566826050402597e-05\n", + "Grad encoder.encoder.2.bias: 0.00031947644311003387\n", + "Grad encoder.encoder.4.weight: 0.00011950795305892825\n", + "Grad encoder.encoder.4.bias: 0.0008886953582987189\n", + "Grad decoder.fc1.0.weight: 3.6593573895515874e-05\n", + "Grad decoder.fc1.0.bias: 0.0003694529877975583\n", + "Grad decoder.fc1.2.weight: 3.265322447987273e-05\n", + "Grad decoder.fc1.2.bias: 0.0005007304716855288\n", + "Grad decoder.fc1.4.weight: 3.790290065808222e-05\n", + "Grad decoder.fc1.4.bias: 0.0006073381518945098\n", + "Grad decoder.fc2.weight: 0.00014583903248421848\n", + "Grad decoder.fc2.bias: 0.0019414738053455949\n", + "Grad _memory_unit.weight_ih_l0: 5.93642971580266e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.9617549444083124e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.5411247659358196e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.903108336089645e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.252097566379234e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.711294993991032e-05\n", + "Data X Sample: tensor([[2.6595, 2.8213, 3.1149, 3.1617, 3.2920, 3.4636, 3.4773, 3.6186, 3.8714,\n", + " 3.7755, 3.7592, 3.7879, 3.7861, 3.6889, 3.6643, 3.5871, 3.5284, 3.5534,\n", + " 3.5229, 3.5242, 3.3124, 3.2807, 2.8749, 2.9337, 2.7176, 2.6746, 2.7119,\n", + " 2.6878, 2.6782, 2.6692, 2.7576, 2.7716, 2.7831, 2.0253, 3.3091, 3.6970,\n", + " 4.0332, 4.1238, 4.4749, 4.4259, 1.9759, 1.1272, 1.1136, 1.8858, 2.6996,\n", + " 2.9735, 1.9241, 2.8306]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 2.3898, 0.3894, 0.0119, 0.0254, -1.0964, -0.8045, -0.1312, 0.6422,\n", + " -0.5600, -0.4710, -0.2976, -0.7770, -0.5739, -0.3697, -0.4659, -0.8210,\n", + " -0.0529, 0.5431, -0.8561, -0.2930, -0.4742, 0.5710, 1.1420, 0.3205,\n", + " 0.6058, -0.0752, -0.6555, 0.0814, 0.3718, -1.6298, 0.5534, -1.9418,\n", + " 0.6174, -0.4706, 1.2937, -0.4340, 0.8233, -0.7806, -0.4768, 0.0684,\n", + " 0.4068, 0.1843, -1.5100]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2079, -0.2645, -0.1096, -0.2620, -0.2489, -0.0767, 0.0414, 0.2262,\n", + " 0.0891, 0.1997, 0.1719, -0.1289, -0.0929, -0.2000, -0.1383, -0.2251,\n", + " -0.2393, -0.1333, -0.0394, -0.1120, -0.0519, -0.0252, -0.0729, -0.0669,\n", + " 0.0236, -0.0209, 0.0811, -0.0179, -0.0214, -0.1159, -0.1396, -0.1470,\n", + " -0.0861, -0.1829, -0.1014, -0.1275, -0.0070, -0.0114, -0.0428, 0.3209,\n", + " 0.3355, 0.3089, 0.2459]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000119678137707524\n", + "Grad encoder.fc1.bias: 0.0014439936494454741\n", + "Grad encoder.encoder.0.weight: 6.495595880551264e-05\n", + "Grad encoder.encoder.0.bias: 0.0011972220381721854\n", + "Grad encoder.encoder.2.weight: 6.018800922902301e-05\n", + "Grad encoder.encoder.2.bias: 0.001020955853164196\n", + "Grad encoder.encoder.4.weight: 0.0001665887248236686\n", + "Grad encoder.encoder.4.bias: 0.0030648107640445232\n", + "Grad decoder.fc1.0.weight: 8.28736592666246e-05\n", + "Grad decoder.fc1.0.bias: 0.0009727091528475285\n", + "Grad decoder.fc1.2.weight: 9.488279465585947e-05\n", + "Grad decoder.fc1.2.bias: 0.0011996040120720863\n", + "Grad decoder.fc1.4.weight: 7.752339297439903e-05\n", + "Grad decoder.fc1.4.bias: 0.0010637976229190826\n", + "Grad decoder.fc2.weight: 0.00019837157742585987\n", + "Grad decoder.fc2.bias: 0.0018000972922891378\n", + "Grad _memory_unit.weight_ih_l0: 2.0157416656729765e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00017197171109728515\n", + "Grad _memory_unit.bias_hh_l0: 8.896073268260807e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.022938795358641e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00027878856053575873\n", + "Grad _memory_unit.bias_hh_l1: 0.00014619604917243123\n", + "Data X Sample: tensor([[1.5647, 1.7303, 1.9083, 1.9788, 2.1275, 2.2953, 2.4081, 2.4233, 2.5533,\n", + " 2.5813, 2.5664, 2.6486, 2.5899, 2.4593, 2.4689, 2.4014, 2.3696, 2.4122,\n", + " 2.5482, 2.5348, 2.4438, 2.4540, 2.3471, 2.4221, 2.3291, 2.4839, 2.4002,\n", + " 2.4594, 2.1405, 2.3352, 2.2887, 2.3405, 2.2330, 1.4532, 1.9070, 1.7269,\n", + " 1.5928, 1.4709, 1.5973, 1.5633, 1.2122, 0.6930, 0.7195, 1.2630, 1.7680,\n", + " 1.9385, 1.2510, 1.8922]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2803, 0.0825, -0.5892, 0.6911, 0.6679, -0.1174, -1.1046, -0.2287,\n", + " -0.8378, 0.0911, -0.6116, 0.7146, -0.6060, 1.5678, 0.8727, 0.7239,\n", + " 0.3393, -0.6131, 0.9650, 0.8102, -0.3797, -0.1791, 0.6092, -1.2579,\n", + " -0.1049, -0.8692, -0.9509, -0.9669, 0.4679, -0.3042, 0.7585, -0.2429,\n", + " 0.7718, 0.6934, 0.4474, 0.4030, 0.9776, -0.0751, -1.8131, 0.0565,\n", + " -0.0099, -0.2541, -0.3585]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5163, 0.3862, 0.1863, 0.3744, 0.1150, -0.1855, -0.4376, -0.4950,\n", + " -0.2334, -0.3290, -0.3155, 0.2141, 0.2132, 0.3069, 0.2592, 0.3593,\n", + " 0.2843, 0.1486, 0.1177, 0.0919, 0.0799, -0.0063, 0.0490, 0.0173,\n", + " 0.0279, 0.0482, -0.1002, 0.0096, 0.2167, 0.2852, 0.2840, 0.1938,\n", + " 0.2820, 0.3522, 0.2606, 0.2261, -0.1096, 0.0373, -0.0373, -0.3694,\n", + " -0.3480, -0.3100, -0.3309]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003449086216278374\n", + "Grad encoder.fc1.bias: 0.0002998021082021296\n", + "Grad encoder.encoder.0.weight: 0.00010774358088383451\n", + "Grad encoder.encoder.0.bias: 0.00036583791370503604\n", + "Grad encoder.encoder.2.weight: 7.107722922228277e-05\n", + "Grad encoder.encoder.2.bias: 0.0004546698182821274\n", + "Grad encoder.encoder.4.weight: 0.00012954039266332984\n", + "Grad encoder.encoder.4.bias: 0.0015234689926728606\n", + "Grad decoder.fc1.0.weight: 5.837714343215339e-05\n", + "Grad decoder.fc1.0.bias: 0.0005894408677704632\n", + "Grad decoder.fc1.2.weight: 5.5441545555368066e-05\n", + "Grad decoder.fc1.2.bias: 0.000637784949503839\n", + "Grad decoder.fc1.4.weight: 4.97262371936813e-05\n", + "Grad decoder.fc1.4.bias: 0.0006727305008098483\n", + "Grad decoder.fc2.weight: 0.00014147440379019827\n", + "Grad decoder.fc2.bias: 0.0024382907431572676\n", + "Grad _memory_unit.weight_ih_l0: 9.584130566508975e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.054067438933998e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.1611448978073895e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.312609002634417e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001480410574004054\n", + "Grad _memory_unit.bias_hh_l1: 7.686967001063749e-05\n", + "Data X Sample: tensor([[1.5966, 1.6983, 1.8167, 1.8717, 2.0711, 2.1377, 2.1831, 2.4744, 3.7836,\n", + " 4.2052, 4.1557, 4.0177, 3.8748, 3.6644, 3.5962, 3.5392, 3.4922, 3.4026,\n", + " 3.4093, 3.4200, 3.4424, 3.2960, 2.8628, 2.9317, 2.8865, 3.0324, 3.1088,\n", + " 3.2547, 3.0910, 3.3308, 3.3035, 3.3823, 3.7819, 2.7187, 4.2920, 4.6966,\n", + " 4.8474, 5.2051, 5.6602, 5.5381, 1.0977, 0.6173, 0.7053, 1.1309, 1.6332,\n", + " 1.8470, 1.1898, 1.8297]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.9767, -0.2041, -0.7134, -1.3007, 0.1415, -1.1933, 0.3011, 0.7168,\n", + " 0.6754, 0.6382, 0.5091, -0.8441, -3.4112, -1.0797, -0.0470, -0.6509,\n", + " -0.2765, -0.6318, 0.1918, -0.2776, -0.6413, -0.0192, 0.4600, 0.1799,\n", + " -0.0970, 0.8263, 0.8132, 0.5990, 0.2167, 0.1578, -0.1981, -1.2845,\n", + " -0.6604, -0.1193, -0.6002, -0.4310, -1.0293, -0.6782, 1.1604, 0.7040,\n", + " 0.7567, 0.7963, 0.0805]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1719, -0.2686, -0.0712, -0.1717, -0.0397, 0.1091, 0.1807, 0.2702,\n", + " 0.1825, 0.1995, 0.2121, -0.1757, -0.1162, -0.2663, -0.2076, -0.2660,\n", + " -0.1848, -0.0621, -0.0349, -0.1311, -0.0804, -0.0181, -0.0575, -0.0607,\n", + " 0.0309, 0.0148, -0.0746, -0.1618, -0.1927, -0.2447, -0.2629, -0.1851,\n", + " -0.2654, -0.2449, -0.1619, -0.1507, -0.0365, -0.0267, 0.0271, 0.2663,\n", + " 0.3159, 0.3419, 0.2486]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00024702688097022474\n", + "Grad encoder.fc1.bias: 0.0015705529367551208\n", + "Grad encoder.encoder.0.weight: 7.701320282649249e-05\n", + "Grad encoder.encoder.0.bias: 0.001023830845952034\n", + "Grad encoder.encoder.2.weight: 5.064906144980341e-05\n", + "Grad encoder.encoder.2.bias: 0.0007953820750117302\n", + "Grad encoder.encoder.4.weight: 0.00011118996189907193\n", + "Grad encoder.encoder.4.bias: 0.0017887440044432878\n", + "Grad decoder.fc1.0.weight: 6.379572732839733e-05\n", + "Grad decoder.fc1.0.bias: 0.0007226259913295507\n", + "Grad decoder.fc1.2.weight: 5.5718821386108175e-05\n", + "Grad decoder.fc1.2.bias: 0.000604878063313663\n", + "Grad decoder.fc1.4.weight: 5.1322054787306115e-05\n", + "Grad decoder.fc1.4.bias: 0.0006339470855891705\n", + "Grad decoder.fc2.weight: 0.0001825845829444006\n", + "Grad decoder.fc2.bias: 0.002175569534301758\n", + "Grad _memory_unit.weight_ih_l0: 1.1233687473577447e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00010201014811173081\n", + "Grad _memory_unit.bias_hh_l0: 5.2831892389804125e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.944081178517081e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00017722518532536924\n", + "Grad _memory_unit.bias_hh_l1: 9.240843792213127e-05\n", + "Data X Sample: tensor([[ 0.0159, 0.0087, 0.0346, 0.0241, -0.0017, 0.0295, 0.0077, 0.0114,\n", + " 0.0195, 0.0205, 0.0190, 0.0156, 0.0200, 0.0136, 0.0000, 0.0150,\n", + " -0.1006, -0.1451, -0.1838, -0.1618, -0.1619, -0.1179, -0.1735, -0.1985,\n", + " -0.1389, -0.3343, -0.2957, -0.5343, -0.0486, -0.0590, -0.1260, -0.0636,\n", + " -0.0440, -0.0618, -0.0245, 0.0000, -0.0295, -0.0424, -0.0634, -0.0227,\n", + " -0.0239, -0.0060, 0.0081, 0.0000, 0.0079, 0.0286, 0.0204, 0.0156]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5945, -0.1015, -0.7111, 0.7513, 0.6250, -0.1283, -0.3864, -0.2869,\n", + " -1.2621, -0.4959, -0.1939, 0.2750, -0.5406, 0.4819, -0.2437, 0.0762,\n", + " 0.0105, 1.6619, 1.1991, 0.4544, 0.6299, 1.0235, -0.0548, 1.6541,\n", + " 0.4732, 0.1079, -0.5899, -0.2765, 0.1662, -0.2179, 0.4089, -0.0381,\n", + " 0.7974, 0.6566, 0.8167, -0.9778, 0.5692, 0.7357, -1.1818, -0.0923,\n", + " -0.0188, -0.2195, -1.0562]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.9163, 0.6440, 0.3281, 0.6240, 0.0840, -0.3582, -0.8430, -0.9283,\n", + " -0.4580, -0.6177, -0.5341, 0.3998, 0.4030, 0.5866, 0.4488, 0.5402,\n", + " 0.5342, 0.2152, 0.2070, 0.1939, 0.1177, -0.0400, 0.0231, 0.0946,\n", + " 0.0391, 0.1153, -0.0824, 0.1486, 0.5012, 0.5973, 0.5630, 0.4159,\n", + " 0.5087, 0.6085, 0.4152, 0.3367, -0.1828, 0.0838, -0.0871, -0.6671,\n", + " -0.6163, -0.5559, -0.5612]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005009957822039723\n", + "Grad encoder.fc1.bias: 0.0017884359695017338\n", + "Grad encoder.encoder.0.weight: 0.000152561318827793\n", + "Grad encoder.encoder.0.bias: 0.001526661217212677\n", + "Grad encoder.encoder.2.weight: 9.225816756952554e-05\n", + "Grad encoder.encoder.2.bias: 0.001355743850581348\n", + "Grad encoder.encoder.4.weight: 0.0002324269589735195\n", + "Grad encoder.encoder.4.bias: 0.004241100512444973\n", + "Grad decoder.fc1.0.weight: 0.00010476327588548884\n", + "Grad decoder.fc1.0.bias: 0.001649817219004035\n", + "Grad decoder.fc1.2.weight: 0.00011051840556319803\n", + "Grad decoder.fc1.2.bias: 0.0014105550944805145\n", + "Grad decoder.fc1.4.weight: 9.54170900513418e-05\n", + "Grad decoder.fc1.4.bias: 0.0011848266003653407\n", + "Grad decoder.fc2.weight: 0.00021865559392608702\n", + "Grad decoder.fc2.bias: 0.002817192580550909\n", + "Grad _memory_unit.weight_ih_l0: 2.439677518850658e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0002019755484070629\n", + "Grad _memory_unit.bias_hh_l0: 0.00010633104102453217\n", + "Grad _memory_unit.weight_ih_l1: 1.2473876267904416e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0003995751612819731\n", + "Grad _memory_unit.bias_hh_l1: 0.00021068139176350087\n", + "Data X Sample: tensor([[1.3929, 1.4813, 1.6484, 1.6793, 1.7109, 1.7738, 1.8550, 1.8895, 3.4418,\n", + " 3.8545, 4.0859, 3.8775, 3.7306, 3.5499, 3.3567, 3.4531, 3.3146, 3.4451,\n", + " 3.4341, 3.4665, 3.4596, 3.3879, 3.0797, 2.8878, 2.8190, 2.7843, 2.6853,\n", + " 2.7286, 2.6990, 2.8068, 2.8101, 2.9872, 3.1879, 2.3320, 3.7772, 4.2345,\n", + " 4.5819, 5.0779, 5.6158, 5.5381, 0.9832, 0.5775, 0.6144, 1.0620, 1.5064,\n", + " 1.6183, 1.0946, 1.5560]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1669, -0.2103, -0.0269, -0.5654, -0.7801, -0.1894, -0.7311, -0.1762,\n", + " -0.0292, -0.0998, 0.2113, 0.8275, 0.5760, 1.1571, -0.5030, 0.8329,\n", + " -0.4913, 0.7573, -1.2774, -1.8726, -1.9191, -0.2873, 1.0792, 0.3587,\n", + " 2.7898, 1.8504, -0.5643, 0.6435, 0.7360, -0.1710, -0.0431, 0.1359,\n", + " 1.1871, -0.6962, -1.5392, 0.9608, -0.6486, -0.7723, -0.2341, 0.2255,\n", + " -0.5972, -0.0405, -0.8830]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1822, -0.2750, -0.0696, -0.1736, -0.0401, 0.1120, 0.1859, 0.2772,\n", + " 0.1879, 0.2097, 0.2114, -0.1772, -0.1127, -0.2724, -0.2116, -0.2768,\n", + " -0.1961, -0.0726, -0.0344, -0.1392, -0.0814, -0.0151, -0.0594, -0.0626,\n", + " 0.0248, 0.0043, -0.0778, -0.1624, -0.1970, -0.2517, -0.2671, -0.1921,\n", + " -0.2705, -0.2543, -0.1656, -0.1487, -0.0273, -0.0312, 0.0225, 0.2761,\n", + " 0.3293, 0.3416, 0.2522]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000103268917882815\n", + "Grad encoder.fc1.bias: 0.0010414711432531476\n", + "Grad encoder.encoder.0.weight: 3.4018441510852426e-05\n", + "Grad encoder.encoder.0.bias: 0.0006305367569439113\n", + "Grad encoder.encoder.2.weight: 3.1858424335950986e-05\n", + "Grad encoder.encoder.2.bias: 0.0004100500955246389\n", + "Grad encoder.encoder.4.weight: 8.634502592030913e-05\n", + "Grad encoder.encoder.4.bias: 0.0005357660120353103\n", + "Grad decoder.fc1.0.weight: 4.2501076677581295e-05\n", + "Grad decoder.fc1.0.bias: 0.0003336195950396359\n", + "Grad decoder.fc1.2.weight: 6.375637167366222e-05\n", + "Grad decoder.fc1.2.bias: 0.0006438068812713027\n", + "Grad decoder.fc1.4.weight: 5.4889329476282e-05\n", + "Grad decoder.fc1.4.bias: 0.0006772432825528085\n", + "Grad decoder.fc2.weight: 0.00017488717276137322\n", + "Grad decoder.fc2.bias: 0.0018448628252372146\n", + "Grad _memory_unit.weight_ih_l0: 8.957260433817282e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.6807203287025914e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.9037350284634158e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.630099854490254e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.173527021426708e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.2388106521684676e-05\n", + "Data X Sample: tensor([[2.4240, 2.9101, 3.2817, 3.3585, 3.5771, 3.6021, 3.7531, 3.6371, 3.9373,\n", + " 3.9714, 3.9432, 4.1014, 3.9769, 3.8389, 3.7753, 3.6650, 3.5630, 3.4799,\n", + " 3.5787, 3.5446, 3.4056, 3.3925, 3.1785, 2.9795, 2.9541, 2.8652, 2.8078,\n", + " 2.8183, 2.7406, 2.8002, 2.8556, 2.8379, 2.8623, 2.0619, 3.4953, 3.8575,\n", + " 4.2437, 4.4975, 5.0074, 4.8316, 2.0856, 1.1590, 1.2550, 1.9748, 2.9176,\n", + " 3.1221, 2.1825, 2.9557]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.7271, -0.4170, 0.2837, -0.9209, 0.3922, 2.2029, 0.2644, 0.2764,\n", + " 0.9432, 0.1593, 0.0072, -0.2317, -0.5595, -0.6609, 0.5180, 0.4926,\n", + " 0.7032, 0.1838, -0.1272, -0.9201, -0.3539, -2.6570, 0.5509, -0.4537,\n", + " 0.2684, -0.6732, 0.5960, 0.0884, -0.1218, -0.1924, -0.3481, -0.3358,\n", + " -0.3817, -0.1682, -0.2001, -0.4102, 0.5933, 0.1370, -0.0197, -0.0048,\n", + " 0.1231, -0.1070, -0.2283]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1865, -0.2374, -0.0929, -0.2459, -0.2490, -0.0774, 0.0104, 0.2099,\n", + " 0.0514, 0.1839, 0.1245, -0.1208, -0.0643, -0.1672, -0.1213, -0.1908,\n", + " -0.2373, -0.1312, -0.0272, -0.1093, -0.0323, -0.0020, -0.0801, -0.0652,\n", + " 0.0172, -0.0367, 0.0809, 0.0179, -0.0012, -0.0872, -0.1087, -0.1333,\n", + " -0.0539, -0.1659, -0.0787, -0.1006, 0.0062, -0.0028, -0.0547, 0.2937,\n", + " 0.3160, 0.2698, 0.2226]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0010254484368488193\n", + "Grad encoder.fc1.bias: 0.001384207746013999\n", + "Grad encoder.encoder.0.weight: 0.00028887184453196824\n", + "Grad encoder.encoder.0.bias: 0.0011971840867772698\n", + "Grad encoder.encoder.2.weight: 0.00017969115287996829\n", + "Grad encoder.encoder.2.bias: 0.0012120511382818222\n", + "Grad encoder.encoder.4.weight: 0.0003051761887036264\n", + "Grad encoder.encoder.4.bias: 0.0034319348633289337\n", + "Grad decoder.fc1.0.weight: 0.00010701794235501438\n", + "Grad decoder.fc1.0.bias: 0.0014850650914013386\n", + "Grad decoder.fc1.2.weight: 0.00010113834287039936\n", + "Grad decoder.fc1.2.bias: 0.0018434756202623248\n", + "Grad decoder.fc1.4.weight: 8.547329343855381e-05\n", + "Grad decoder.fc1.4.bias: 0.0015916002448648214\n", + "Grad decoder.fc2.weight: 0.00017973134526982903\n", + "Grad decoder.fc2.bias: 0.003144708462059498\n", + "Grad _memory_unit.weight_ih_l0: 1.895255991257727e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.550203347112983e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.649845868698321e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.130038961302489e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00023245577176567167\n", + "Grad _memory_unit.bias_hh_l1: 0.000121635603136383\n", + "Data X Sample: tensor([[ 0.0032, 0.0131, 0.0316, 0.0153, 0.0137, 0.0309, 0.0139, 0.0170,\n", + " 0.0293, 0.0142, 0.0222, 0.0019, 0.0111, 0.0273, -0.0151, 0.0096,\n", + " -0.0881, -0.1064, -0.1384, -0.1432, -0.1276, -0.0949, -0.1856, -0.1737,\n", + " -0.1239, -0.2716, -0.2904, -0.5180, -0.0416, -0.1146, -0.0805, -0.0663,\n", + " -0.0616, -0.0709, -0.0245, -0.0195, -0.0374, -0.0504, -0.0634, 0.0057,\n", + " 0.0000, -0.0060, -0.0081, -0.0029, 0.0000, 0.0400, 0.0204, 0.0391]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.9462, 0.8900, 0.8885, -0.4295, -0.6037, 0.4489, -1.5066, -1.1932,\n", + " -1.0505, -0.9605, -1.1055, 0.7935, 0.6865, 0.3190, 1.8279, 0.5411,\n", + " -0.3025, 0.1098, 0.3213, 0.5795, 0.1210, 0.5244, 0.9863, 0.6287,\n", + " 1.1884, -2.1928, 0.3878, -0.2637, 1.4669, 0.7126, 0.0225, 1.2876,\n", + " -0.1085, 0.0089, 0.1059, -0.0803, 0.4756, -0.6782, 0.1407, -0.5825,\n", + " -0.6049, -0.1104, 0.0904]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.7382, 0.5298, 0.2617, 0.5124, 0.1071, -0.2639, -0.6705, -0.7229,\n", + " -0.3732, -0.4824, -0.4258, 0.3084, 0.3239, 0.4721, 0.3598, 0.4490,\n", + " 0.4329, 0.1590, 0.1645, 0.1630, 0.0769, -0.0013, 0.0062, 0.0772,\n", + " 0.0219, 0.1199, -0.1174, 0.0970, 0.3560, 0.4463, 0.4426, 0.3031,\n", + " 0.4058, 0.4933, 0.3238, 0.2871, -0.1294, 0.0604, -0.0946, -0.5242,\n", + " -0.4728, -0.4515, -0.4444]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00010963170643663034\n", + "Grad encoder.fc1.bias: 0.00038971073809079826\n", + "Grad encoder.encoder.0.weight: 4.586437717080116e-05\n", + "Grad encoder.encoder.0.bias: 0.0002844176487997174\n", + "Grad encoder.encoder.2.weight: 4.631124102161266e-05\n", + "Grad encoder.encoder.2.bias: 0.0004001397464890033\n", + "Grad encoder.encoder.4.weight: 0.0001011319545796141\n", + "Grad encoder.encoder.4.bias: 0.0014986343448981643\n", + "Grad decoder.fc1.0.weight: 5.69030707993079e-05\n", + "Grad decoder.fc1.0.bias: 0.0007070190040394664\n", + "Grad decoder.fc1.2.weight: 5.687476368620992e-05\n", + "Grad decoder.fc1.2.bias: 0.0006191096035763621\n", + "Grad decoder.fc1.4.weight: 4.1326456994283944e-05\n", + "Grad decoder.fc1.4.bias: 0.0006009259377606213\n", + "Grad decoder.fc2.weight: 0.00013977363414596766\n", + "Grad decoder.fc2.bias: 0.0018191685667261481\n", + "Grad _memory_unit.weight_ih_l0: 8.763724508753512e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.505268563865684e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.982758087455295e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.513459655048791e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011636752606136724\n", + "Grad _memory_unit.bias_hh_l1: 6.103504711063579e-05\n", + "Data X Sample: tensor([[1.7387, 1.8920, 2.0451, 2.1822, 2.1480, 2.2674, 2.3326, 2.3622, 2.3922,\n", + " 2.4422, 2.5220, 2.5064, 2.4478, 2.3666, 2.4135, 2.4001, 2.3947, 2.4547,\n", + " 2.4512, 2.5255, 2.5149, 2.5459, 2.5616, 2.5519, 2.5844, 2.7268, 2.6400,\n", + " 2.6796, 2.3903, 2.4039, 2.4147, 2.4041, 2.1516, 1.4349, 1.9609, 1.7877,\n", + " 1.6794, 1.5742, 1.5339, 1.5122, 1.3841, 0.7627, 0.7518, 1.2687, 1.9147,\n", + " 2.1672, 1.4346, 2.0955]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 2.9787e-01, 1.1706e-01, 4.9050e-01, 5.6912e-01, -6.5620e-01,\n", + " -3.0011e-01, -4.7681e-01, -4.3763e-01, 2.1799e-02, -4.3448e-01,\n", + " -4.2963e-01, 2.7341e-01, 4.5099e-01, -7.6737e-01, 1.2830e-01,\n", + " 5.4907e-02, -1.1654e-02, 2.8027e-01, 2.1979e-01, -2.7596e-02,\n", + " 3.7718e-01, -4.1321e+00, 2.6759e-01, -9.4034e-01, -6.6599e-02,\n", + " -9.8641e-02, -3.7348e-03, 1.9078e-01, 8.2640e-02, 1.8274e-01,\n", + " -7.2141e-01, 1.3292e+00, 4.4560e-02, 4.4064e-01, -5.5109e-01,\n", + " -1.6444e-01, 0.0000e+00, 7.6718e-01, -1.9703e-02, -3.5796e-01,\n", + " -1.8229e-01, -6.5499e-01, 6.6668e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4912, 0.3772, 0.1541, 0.3681, 0.1191, -0.1574, -0.4061, -0.4570,\n", + " -0.2309, -0.3085, -0.3001, 0.2019, 0.1999, 0.3002, 0.2461, 0.3344,\n", + " 0.2901, 0.1045, 0.1091, 0.0830, 0.0643, 0.0324, 0.0298, 0.0153,\n", + " 0.0135, 0.0593, -0.1338, 0.0006, 0.1750, 0.2622, 0.2644, 0.1570,\n", + " 0.2708, 0.3305, 0.2370, 0.2268, -0.0903, 0.0182, -0.0364, -0.3504,\n", + " -0.3181, -0.3022, -0.3042]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001752872485667467\n", + "Grad encoder.fc1.bias: 0.00020213978132233024\n", + "Grad encoder.encoder.0.weight: 5.621779564535245e-05\n", + "Grad encoder.encoder.0.bias: 0.0002571367076598108\n", + "Grad encoder.encoder.2.weight: 4.290915603633039e-05\n", + "Grad encoder.encoder.2.bias: 0.0003350428305566311\n", + "Grad encoder.encoder.4.weight: 8.350670395884663e-05\n", + "Grad encoder.encoder.4.bias: 0.0009490516968071461\n", + "Grad decoder.fc1.0.weight: 3.468879731371999e-05\n", + "Grad decoder.fc1.0.bias: 0.0003731604665517807\n", + "Grad decoder.fc1.2.weight: 3.511802788125351e-05\n", + "Grad decoder.fc1.2.bias: 0.0004631312913261354\n", + "Grad decoder.fc1.4.weight: 3.5855766327586025e-05\n", + "Grad decoder.fc1.4.bias: 0.0006101182661950588\n", + "Grad decoder.fc2.weight: 0.00012562023766804487\n", + "Grad decoder.fc2.bias: 0.0017865594709292054\n", + "Grad _memory_unit.weight_ih_l0: 5.55627320864005e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.1197352402377874e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.1321391614037566e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.064376414840808e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.29380117263645e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.7407095078378916e-05\n", + "Data X Sample: tensor([[1.3345, 1.4682, 1.6183, 1.8345, 1.8679, 2.1539, 2.1862, 1.9946, 2.9976,\n", + " 3.9777, 4.3143, 4.2319, 4.0502, 3.8334, 3.8232, 3.5803, 3.5457, 3.6966,\n", + " 3.4093, 3.4349, 3.3884, 3.4231, 2.9448, 2.8630, 2.8922, 2.8026, 2.9916,\n", + " 3.1201, 2.9210, 3.1605, 3.2580, 3.4099, 3.7995, 2.8881, 4.5935, 5.0371,\n", + " 5.3449, 5.5417, 6.3194, 6.1254, 1.0309, 0.6134, 0.6124, 1.0362, 1.6253,\n", + " 1.8070, 1.1694, 1.6420]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5522, 0.1223, 0.2016, 0.7242, 0.5574, -0.0358, 0.3438, 0.1296,\n", + " -0.1008, -0.6050, -0.8549, 0.6253, 0.5727, -0.5075, 1.1356, 0.5006,\n", + " 0.5701, 1.3932, 0.6763, -0.5156, 0.6304, 1.3965, -0.1337, -0.0052,\n", + " -0.6359, -0.6738, -0.4697, -1.2639, -0.9495, -0.9608, -0.5961, 0.2539,\n", + " -0.6477, 0.0039, -1.3430, -0.5741, -0.9576, -0.3276, -0.2715, -0.9109,\n", + " -0.6407, -1.1520, -0.1456]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2201, -0.2970, -0.0445, -0.1472, 0.0637, 0.1991, 0.2362, 0.3025,\n", + " 0.2421, 0.2499, 0.2190, -0.1922, -0.1311, -0.3184, -0.2361, -0.3185,\n", + " -0.2079, -0.0855, -0.0400, -0.1704, -0.1098, -0.0382, -0.0516, -0.0686,\n", + " 0.0088, -0.0318, -0.1370, -0.2173, -0.2655, -0.3249, -0.3202, -0.2135,\n", + " -0.3579, -0.3010, -0.1954, -0.1639, 0.0132, -0.0487, 0.0309, 0.2888,\n", + " 0.3535, 0.3384, 0.2552]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 8.750002598389983e-05\n", + "Grad encoder.fc1.bias: 0.00021082365128677338\n", + "Grad encoder.encoder.0.weight: 3.285806451458484e-05\n", + "Grad encoder.encoder.0.bias: 0.0002346868859604001\n", + "Grad encoder.encoder.2.weight: 2.1521913367905654e-05\n", + "Grad encoder.encoder.2.bias: 0.00024270066933240741\n", + "Grad encoder.encoder.4.weight: 4.4722364691551775e-05\n", + "Grad encoder.encoder.4.bias: 0.0009631944703869522\n", + "Grad decoder.fc1.0.weight: 2.4401681002927944e-05\n", + "Grad decoder.fc1.0.bias: 0.0004092292510904372\n", + "Grad decoder.fc1.2.weight: 3.3514828828629106e-05\n", + "Grad decoder.fc1.2.bias: 0.0004347271751612425\n", + "Grad decoder.fc1.4.weight: 3.8317175494739786e-05\n", + "Grad decoder.fc1.4.bias: 0.0005074861692264676\n", + "Grad decoder.fc2.weight: 0.00011659719166345894\n", + "Grad decoder.fc2.bias: 0.001840747892856598\n", + "Grad _memory_unit.weight_ih_l0: 4.188892489764839e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.0747007511090487e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.1206710041733459e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.127381321770372e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.24921269970946e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.736390524660237e-05\n", + "Data X Sample: tensor([[2.6256, 3.0499, 2.5424, 2.0881, 2.3016, 2.5635, 3.7299, 3.9054, 4.0155,\n", + " 4.1025, 4.0828, 3.9593, 3.9015, 3.8470, 3.6441, 3.5652, 3.5347, 3.6095,\n", + " 3.4981, 3.5576, 3.3614, 3.2915, 2.9857, 2.8859, 2.7420, 2.7608, 2.6826,\n", + " 2.5899, 2.7060, 2.6627, 2.7996, 2.8020, 3.0889, 2.2771, 3.9047, 4.3342,\n", + " 4.3695, 4.8765, 5.3750, 5.4530, 1.8613, 1.0614, 0.9478, 1.5701, 2.0970,\n", + " 2.0014, 1.3326, 2.0486]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3038, -0.7285, 0.1894, -0.4907, -0.3493, -0.8027, -0.6625, 0.6237,\n", + " -0.6850, -0.3917, -0.6103, -0.5365, -0.0234, -0.4590, 0.0225, -1.3656,\n", + " 0.0804, 0.9954, -0.4232, -0.1358, 0.2079, -0.4555, -0.3285, 0.2942,\n", + " -0.1490, 0.8353, -1.6324, 0.4111, -0.1650, -0.7349, -0.2158, 1.1599,\n", + " -1.1991, 1.1857, 0.7517, 0.2964, 0.0501, 0.8580, 0.7285, 0.1803,\n", + " 0.5131, 0.1124, -0.2864]], device='cuda:0')\n", + "Prediction Sample: tensor([[-2.3571e-01, -3.0482e-01, -9.0166e-02, -2.0790e-01, -9.4618e-02,\n", + " 7.3910e-02, 1.6355e-01, 2.8423e-01, 1.8496e-01, 2.3081e-01,\n", + " 2.1843e-01, -1.6798e-01, -1.1055e-01, -2.7877e-01, -2.1183e-01,\n", + " -3.0642e-01, -2.3085e-01, -1.2423e-01, -4.2706e-02, -1.5946e-01,\n", + " -9.2594e-02, -2.1397e-02, -6.3736e-02, -7.0545e-02, 3.5257e-03,\n", + " -2.9398e-02, -4.2335e-02, -1.1919e-01, -1.7138e-01, -2.3538e-01,\n", + " -2.5260e-01, -2.0880e-01, -2.4000e-01, -2.5937e-01, -1.6273e-01,\n", + " -1.5785e-01, 7.9539e-03, -4.9860e-02, 1.2784e-04, 3.2285e-01,\n", + " 3.6756e-01, 3.4157e-01, 2.6134e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00029395223828032613\n", + "Grad encoder.fc1.bias: 0.00018054910469800234\n", + "Grad encoder.encoder.0.weight: 7.935446046758443e-05\n", + "Grad encoder.encoder.0.bias: 0.00024397679953835905\n", + "Grad encoder.encoder.2.weight: 3.956608270527795e-05\n", + "Grad encoder.encoder.2.bias: 0.0002769716957118362\n", + "Grad encoder.encoder.4.weight: 7.024001388344914e-05\n", + "Grad encoder.encoder.4.bias: 0.0009699015645310283\n", + "Grad decoder.fc1.0.weight: 4.0736969822319224e-05\n", + "Grad decoder.fc1.0.bias: 0.0004907406400889158\n", + "Grad decoder.fc1.2.weight: 4.9268950533587486e-05\n", + "Grad decoder.fc1.2.bias: 0.001030094106681645\n", + "Grad decoder.fc1.4.weight: 4.363457628642209e-05\n", + "Grad decoder.fc1.4.bias: 0.00082686438690871\n", + "Grad decoder.fc2.weight: 0.00011656437709461898\n", + "Grad decoder.fc2.bias: 0.0019580908119678497\n", + "Grad _memory_unit.weight_ih_l0: 9.215157660946716e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.4366130421403795e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.777505167410709e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.196601366857067e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010091775038745254\n", + "Grad _memory_unit.bias_hh_l1: 5.126272662892006e-05\n", + "Data X Sample: tensor([[1.5478, 1.8002, 1.9309, 2.0969, 2.1377, 2.2615, 2.4543, 2.4815, 2.4264,\n", + " 2.5781, 2.5505, 2.6194, 2.4567, 2.4756, 2.4084, 2.3823, 2.4152, 2.4489,\n", + " 2.4677, 2.4567, 2.5248, 2.5490, 2.4749, 2.4832, 2.4887, 2.5440, 2.5707,\n", + " 2.5981, 2.3209, 2.2991, 2.2957, 2.4345, 2.2154, 1.4578, 1.9438, 1.7220,\n", + " 1.5751, 1.4497, 1.5846, 1.6143, 1.3268, 0.7269, 0.7114, 1.3032, 2.0257,\n", + " 2.1043, 1.3666, 2.0721]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0235, -0.5603, -0.3117, -0.1457, 0.7060, 0.5802, 0.1687, 0.0149,\n", + " 0.5615, 0.9486, 0.8198, 0.9952, -0.9750, 0.1663, -0.0332, 0.9753,\n", + " -0.4136, 0.3142, 0.3975, -0.5227, -0.8043, 0.3204, 0.6157, 0.5652,\n", + " 0.0048, -1.0224, -0.4537, 0.8652, 0.8717, -0.6749, 1.2377, 0.7794,\n", + " -0.0774, 0.5493, -0.1407, 0.2965, -0.3615, -0.7806, 0.0545, 0.7579,\n", + " -0.0741, -0.2151, 1.3432]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3307, 0.2462, 0.1051, 0.2222, 0.0454, -0.1144, -0.3044, -0.3035,\n", + " -0.1872, -0.2026, -0.2231, 0.1087, 0.1310, 0.1978, 0.1534, 0.2205,\n", + " 0.1768, 0.0519, 0.0729, 0.0518, 0.0320, 0.0402, 0.0027, 0.0065,\n", + " 0.0021, 0.0442, -0.0827, 0.0098, 0.1314, 0.1791, 0.1687, 0.1033,\n", + " 0.1775, 0.2140, 0.1682, 0.1468, -0.0508, 0.0117, -0.0520, -0.2260,\n", + " -0.1860, -0.1825, -0.1874]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005224826745688915\n", + "Grad encoder.fc1.bias: 0.0017347467364743352\n", + "Grad encoder.encoder.0.weight: 0.0001826661900850013\n", + "Grad encoder.encoder.0.bias: 0.001354024512693286\n", + "Grad encoder.encoder.2.weight: 0.00010303969611413777\n", + "Grad encoder.encoder.2.bias: 0.0009617375326342881\n", + "Grad encoder.encoder.4.weight: 0.00016883922216948122\n", + "Grad encoder.encoder.4.bias: 0.0016377049032598734\n", + "Grad decoder.fc1.0.weight: 5.995227911625989e-05\n", + "Grad decoder.fc1.0.bias: 0.0007160051027312875\n", + "Grad decoder.fc1.2.weight: 5.672559200320393e-05\n", + "Grad decoder.fc1.2.bias: 0.0007489253766834736\n", + "Grad decoder.fc1.4.weight: 4.767368591274135e-05\n", + "Grad decoder.fc1.4.bias: 0.0005306230159476399\n", + "Grad decoder.fc2.weight: 0.00012293338659219444\n", + "Grad decoder.fc2.bias: 0.0016628224402666092\n", + "Grad _memory_unit.weight_ih_l0: 1.0066152754006907e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.125351188122295e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.1697585907531902e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.195186076889513e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011808858107542619\n", + "Grad _memory_unit.bias_hh_l1: 6.0665708588203415e-05\n", + "Data X Sample: tensor([[1.5764, 1.8978, 1.9895, 2.0269, 2.1855, 2.4338, 2.5621, 2.5354, 2.5606,\n", + " 2.6934, 2.6616, 2.6291, 2.6609, 2.5901, 2.5572, 2.6011, 2.5048, 2.4586,\n", + " 2.5709, 2.5125, 2.4659, 2.5995, 2.5255, 2.3706, 2.4643, 2.5126, 2.4535,\n", + " 2.5450, 2.2584, 2.3777, 2.3027, 2.3626, 2.2242, 1.4189, 1.8825, 1.8315,\n", + " 1.7226, 1.6538, 1.6733, 1.5207, 1.2552, 0.7607, 0.7700, 1.3003, 1.9226,\n", + " 2.0986, 1.2918, 2.0330]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.7252e-01, 3.8334e-01, 1.2544e+00, 1.4284e-01, -6.8494e-01,\n", + " 5.9211e-01, 1.6950e-01, 1.5021e-01, -7.4571e-01, -2.2012e-01,\n", + " 1.1346e-01, -4.6883e-01, 6.2910e-01, -9.0491e-03, -7.1342e-02,\n", + " 5.2665e-01, 3.3123e-01, -1.7826e-01, 6.8057e-01, -5.1400e-02,\n", + " -3.4731e-01, 1.2198e+00, 6.8899e-01, -3.8775e-01, 9.1111e-01,\n", + " -6.0662e-01, 3.5709e-05, -7.7150e-01, 8.5540e-01, -1.1644e-01,\n", + " 1.9638e-01, 2.7845e-01, 5.3164e-01, 1.0823e-02, -6.5240e-02,\n", + " 1.6103e+00, 4.9151e-01, 1.5113e-01, -2.2862e+00, -8.0910e-02,\n", + " -1.4794e-01, -2.6634e-01, -1.8064e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.1415, 0.0643, 0.0264, 0.0615, -0.0656, -0.0872, -0.2070, -0.1171,\n", + " -0.1461, -0.0857, -0.1132, 0.0084, 0.0620, 0.0659, 0.0507, 0.0768,\n", + " 0.0376, -0.0022, 0.0224, 0.0068, 0.0072, 0.0415, -0.0280, -0.0175,\n", + " 0.0104, 0.0097, -0.0194, 0.0239, 0.0790, 0.1046, 0.0699, 0.0248,\n", + " 0.0884, 0.0934, 0.0918, 0.0559, -0.0333, -0.0017, -0.0459, -0.0505,\n", + " -0.0229, -0.0294, -0.0565]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0011154480744153261\n", + "Grad encoder.fc1.bias: 0.0005278855096548796\n", + "Grad encoder.encoder.0.weight: 0.0003656214685179293\n", + "Grad encoder.encoder.0.bias: 0.0009063543984666467\n", + "Grad encoder.encoder.2.weight: 0.00020632859377656132\n", + "Grad encoder.encoder.2.bias: 0.0008903080015443265\n", + "Grad encoder.encoder.4.weight: 0.00028809296782128513\n", + "Grad encoder.encoder.4.bias: 0.002736845752224326\n", + "Grad decoder.fc1.0.weight: 8.262792835012078e-05\n", + "Grad decoder.fc1.0.bias: 0.0009276615455746651\n", + "Grad decoder.fc1.2.weight: 5.454412894323468e-05\n", + "Grad decoder.fc1.2.bias: 0.0012676437618210912\n", + "Grad decoder.fc1.4.weight: 5.0703398301266134e-05\n", + "Grad decoder.fc1.4.bias: 0.0009065994527190924\n", + "Grad decoder.fc2.weight: 0.00011091094347648323\n", + "Grad decoder.fc2.bias: 0.0017963764257729053\n", + "Grad _memory_unit.weight_ih_l0: 1.1560297025425825e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.8024405259639025e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.4958009817055427e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.636285434069578e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00016281567513942719\n", + "Grad _memory_unit.bias_hh_l1: 8.34735983517021e-05\n", + "Data X Sample: tensor([[1.6613, 1.8847, 1.9294, 2.0641, 2.1360, 2.2674, 2.3110, 2.3253, 2.4215,\n", + " 2.3854, 2.4712, 2.3526, 2.3546, 2.2875, 2.1840, 2.3563, 2.2752, 2.3193,\n", + " 2.3768, 2.3823, 2.5076, 2.4602, 2.4387, 2.4259, 2.4962, 2.5675, 2.5334,\n", + " 2.5654, 2.2792, 2.4072, 2.3937, 2.4373, 2.2770, 1.4120, 1.8751, 1.7877,\n", + " 1.7049, 1.6564, 1.5783, 1.4214, 1.3459, 0.6970, 0.7094, 1.2687, 2.0019,\n", + " 2.0357, 1.4958, 2.1190]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2861, 0.4421, -0.7833, 0.2826, 1.8928, -0.2055, -0.6665, -0.2641,\n", + " 0.7782, -0.7656, -0.6394, 0.9290, 1.7982, 0.2757, -0.6864, 0.4159,\n", + " 1.2632, -0.1382, -0.0066, 0.0409, -0.1737, 0.8898, -0.1488, -3.2886,\n", + " 0.3679, 6.1101, 0.2257, 2.0533, 0.1337, -0.0657, 0.7436, 1.3155,\n", + " -0.0114, 0.7033, 0.1389, -0.9385, 0.1767, 0.8024, 0.9175, -0.5667,\n", + " -1.0191, -0.5973, 0.0154]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 3.3216e-01, 2.5491e-01, 1.0188e-01, 2.2566e-01, 6.0856e-02,\n", + " -1.0966e-01, -3.0034e-01, -3.0128e-01, -1.8472e-01, -2.0085e-01,\n", + " -2.1874e-01, 1.0868e-01, 1.2766e-01, 1.9773e-01, 1.5813e-01,\n", + " 2.2623e-01, 1.8692e-01, 4.3974e-02, 7.8522e-02, 5.6175e-02,\n", + " 3.1483e-02, 5.3727e-02, -1.5106e-04, 4.0761e-03, 1.4070e-03,\n", + " 5.5611e-02, -9.5340e-02, 5.2889e-03, 1.1974e-01, 1.7448e-01,\n", + " 1.6681e-01, 1.0498e-01, 1.8524e-01, 2.1795e-01, 1.6796e-01,\n", + " 1.5472e-01, -4.4356e-02, 5.6506e-03, -4.7218e-02, -2.2659e-01,\n", + " -1.8860e-01, -1.8763e-01, -1.8743e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006742868572473526\n", + "Grad encoder.fc1.bias: 0.0013588895089924335\n", + "Grad encoder.encoder.0.weight: 0.00020545106963254511\n", + "Grad encoder.encoder.0.bias: 0.0010938732884824276\n", + "Grad encoder.encoder.2.weight: 0.00012616111780516803\n", + "Grad encoder.encoder.2.bias: 0.0009064737241715193\n", + "Grad encoder.encoder.4.weight: 0.0002007588918786496\n", + "Grad encoder.encoder.4.bias: 0.002223443239927292\n", + "Grad decoder.fc1.0.weight: 8.243034972110763e-05\n", + "Grad decoder.fc1.0.bias: 0.0010466580279171467\n", + "Grad decoder.fc1.2.weight: 8.867510769050568e-05\n", + "Grad decoder.fc1.2.bias: 0.0016656226944178343\n", + "Grad decoder.fc1.4.weight: 8.721105405129492e-05\n", + "Grad decoder.fc1.4.bias: 0.0018972596153616905\n", + "Grad decoder.fc2.weight: 0.00018406970775686204\n", + "Grad decoder.fc2.bias: 0.0034340082202106714\n", + "Grad _memory_unit.weight_ih_l0: 1.0527834092499688e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.759724106406793e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.4802086045383476e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.594812930416083e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00016127791604958475\n", + "Grad _memory_unit.bias_hh_l1: 8.239227463491261e-05\n", + "Data X Sample: tensor([[1.3250, 1.5483, 1.6679, 1.7820, 1.7979, 1.9889, 2.1015, 2.1223, 2.0114,\n", + " 3.4280, 4.1621, 4.0722, 3.9569, 3.7053, 3.5887, 3.5392, 3.4812, 3.4374,\n", + " 3.4424, 3.3977, 3.2535, 3.2256, 2.8604, 2.7848, 2.6351, 2.8156, 2.8424,\n", + " 2.8468, 2.8100, 2.9214, 2.9571, 3.0618, 3.4871, 2.5700, 4.2773, 4.4704,\n", + " 4.7805, 5.0964, 5.6412, 5.5778, 1.0118, 0.6233, 0.6528, 1.0477, 1.5381,\n", + " 1.8470, 1.1558, 1.6108]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.7629e-01, 1.8310e-01, 9.1759e-01, 2.0257e-01, 8.7929e-01,\n", + " 1.0449e+00, -2.9525e-02, 2.5328e-02, -1.8253e-01, -1.2124e-01,\n", + " 9.3036e-02, -1.4257e-01, 4.4226e-01, -1.4741e-01, -1.2527e-01,\n", + " -4.5617e-01, -2.0475e+00, 1.0153e+00, -5.2963e-02, 1.6951e-01,\n", + " -1.4803e+00, -7.8951e-02, -1.0731e+00, 2.0221e-01, 1.4366e+00,\n", + " 1.9764e+00, -2.3713e-01, -5.9785e-01, -1.4358e+00, -8.9311e-01,\n", + " -2.1145e-04, -1.0948e+00, -8.0765e-01, 8.7446e-01, 3.2883e-01,\n", + " 5.7600e-01, 4.8475e-01, 6.2185e-02, -1.0478e+00, 4.0968e-01,\n", + " 2.0669e-01, -8.9924e-01, -2.5871e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2548, -0.3253, -0.0955, -0.1874, -0.0120, 0.1388, 0.2110, 0.3283,\n", + " 0.2357, 0.2660, 0.2499, -0.1826, -0.1218, -0.3049, -0.2422, -0.3483,\n", + " -0.2209, -0.1252, -0.0459, -0.1720, -0.1109, -0.0168, -0.0730, -0.0829,\n", + " -0.0289, -0.0127, -0.0830, -0.1460, -0.2405, -0.2891, -0.2975, -0.2368,\n", + " -0.3093, -0.2983, -0.2183, -0.1760, 0.0247, -0.0703, 0.0227, 0.3290,\n", + " 0.4014, 0.3712, 0.2684]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 9.652869630372152e-05\n", + "Grad encoder.fc1.bias: 6.667590059805661e-05\n", + "Grad encoder.encoder.0.weight: 2.0378378394525498e-05\n", + "Grad encoder.encoder.0.bias: 6.123582716099918e-05\n", + "Grad encoder.encoder.2.weight: 2.1361316612455994e-05\n", + "Grad encoder.encoder.2.bias: 9.278148354496807e-05\n", + "Grad encoder.encoder.4.weight: 6.368691538227722e-05\n", + "Grad encoder.encoder.4.bias: 0.0003780852712225169\n", + "Grad decoder.fc1.0.weight: 3.077875589951873e-05\n", + "Grad decoder.fc1.0.bias: 0.00026079584495164454\n", + "Grad decoder.fc1.2.weight: 5.774324381491169e-05\n", + "Grad decoder.fc1.2.bias: 0.0008024921407923102\n", + "Grad decoder.fc1.4.weight: 5.2407711336854845e-05\n", + "Grad decoder.fc1.4.bias: 0.0008204411715269089\n", + "Grad decoder.fc2.weight: 0.0001286549959331751\n", + "Grad decoder.fc2.bias: 0.0023155754897743464\n", + "Grad _memory_unit.weight_ih_l0: 8.811516636342276e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.521238275221549e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.312260064878501e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.5770087833952857e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.425193714676425e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.2445659599034116e-05\n", + "Data X Sample: tensor([[1.6464, 1.9270, 2.0661, 2.1363, 2.1497, 2.2953, 2.3572, 2.3921, 2.3873,\n", + " 2.5149, 2.5030, 2.4519, 2.3968, 2.3366, 2.2672, 2.3289, 2.3727, 2.3947,\n", + " 2.4140, 2.4492, 2.4879, 2.5122, 2.5327, 2.5118, 2.5637, 2.5701, 2.5920,\n", + " 2.6796, 2.3868, 2.5775, 2.4777, 2.4373, 2.1406, 1.3777, 1.8555, 1.7293,\n", + " 1.7148, 1.6246, 1.5276, 1.4271, 1.2838, 0.7448, 0.7356, 1.3232, 1.8552,\n", + " 2.1386, 1.4754, 2.0408]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3880, 0.7008, -0.1771, -0.0440, 1.3507, -0.1667, 0.5256, 0.3466,\n", + " 0.3266, -0.0111, -0.1969, 0.5416, 0.9334, 0.8826, 0.1137, 0.9035,\n", + " 0.6444, -0.4157, -0.2462, -0.7915, 0.2920, 0.8496, 1.0775, 1.0682,\n", + " 0.6042, 0.8802, -0.1873, -0.8247, 0.3281, 0.8541, 0.4197, 0.2870,\n", + " 0.1338, 0.1341, -0.2990, 0.3310, 0.8291, 0.1370, 0.7297, -0.0419,\n", + " 0.1667, 0.4068, 1.1962]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4362, 0.3584, 0.1282, 0.3249, 0.1405, -0.1239, -0.3587, -0.3958,\n", + " -0.2178, -0.2712, -0.2629, 0.1689, 0.1624, 0.2638, 0.2226, 0.3133,\n", + " 0.2807, 0.0595, 0.1167, 0.0894, 0.0495, 0.0848, 0.0150, 0.0133,\n", + " 0.0142, 0.0848, -0.1534, -0.0141, 0.1225, 0.2245, 0.2234, 0.1448,\n", + " 0.2640, 0.3014, 0.2149, 0.2234, -0.0539, -0.0055, -0.0246, -0.3106,\n", + " -0.2794, -0.2783, -0.2634]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006311162142083049\n", + "Grad encoder.fc1.bias: 0.0014743506908416748\n", + "Grad encoder.encoder.0.weight: 0.00017871911404654384\n", + "Grad encoder.encoder.0.bias: 0.0014094245852902532\n", + "Grad encoder.encoder.2.weight: 9.924709593178704e-05\n", + "Grad encoder.encoder.2.bias: 0.0011016508797183633\n", + "Grad encoder.encoder.4.weight: 0.0001779716112650931\n", + "Grad encoder.encoder.4.bias: 0.002078948076814413\n", + "Grad decoder.fc1.0.weight: 7.748678763164207e-05\n", + "Grad decoder.fc1.0.bias: 0.0009088634396903217\n", + "Grad decoder.fc1.2.weight: 6.835315434727818e-05\n", + "Grad decoder.fc1.2.bias: 0.0006429546047002077\n", + "Grad decoder.fc1.4.weight: 5.569199493038468e-05\n", + "Grad decoder.fc1.4.bias: 0.00048674020217731595\n", + "Grad decoder.fc2.weight: 0.00015542382607236505\n", + "Grad decoder.fc2.bias: 0.0016913971630856395\n", + "Grad _memory_unit.weight_ih_l0: 1.2707346286333632e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.49154351069592e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.9382604882121086e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.658265192527324e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00016793525719549507\n", + "Grad _memory_unit.bias_hh_l1: 8.724606595933437e-05\n", + "Data X Sample: tensor([[1.3335, 1.4929, 1.7370, 1.9001, 2.0028, 2.2570, 2.2355, 2.6533, 4.1839,\n", + " 4.3426, 4.3207, 4.3760, 4.0590, 3.9888, 3.9417, 3.7950, 3.7202, 3.6540,\n", + " 3.7583, 3.5111, 3.6092, 3.3374, 3.0436, 2.9394, 3.0029, 3.0951, 3.1941,\n", + " 3.3240, 3.2506, 3.4618, 3.4470, 3.5067, 3.8853, 2.8011, 4.6596, 4.9788,\n", + " 5.0263, 5.5973, 6.0722, 5.9097, 1.0213, 0.6472, 0.6063, 1.1912, 1.7442,\n", + " 1.9328, 1.2782, 1.8141]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6910, -0.7357, -1.2796, -0.7639, 0.3242, -0.4978, -0.1872, -0.0205,\n", + " -0.0742, 0.0748, 0.3697, -0.3568, -1.7327, -1.1264, -1.2294, -0.2973,\n", + " -0.4403, 0.7061, 1.3372, -3.2049, 0.1787, 0.2027, -0.0429, -1.1766,\n", + " 0.1986, 0.8910, 1.4876, -0.6513, 0.3954, -0.1451, 0.0861, -0.7473,\n", + " -0.0849, -0.5284, -1.0686, -0.4165, 0.9536, -0.0459, 0.8554, 0.5590,\n", + " 0.3832, 0.6110, 1.6351]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2471, -0.3094, -0.0966, -0.1947, -0.0119, 0.1283, 0.1907, 0.3091,\n", + " 0.2158, 0.2520, 0.2380, -0.1687, -0.1128, -0.2902, -0.2256, -0.3319,\n", + " -0.2140, -0.1203, -0.0332, -0.1570, -0.1020, -0.0144, -0.0747, -0.0833,\n", + " -0.0395, -0.0100, -0.0696, -0.1198, -0.2305, -0.2759, -0.2696, -0.2254,\n", + " -0.2888, -0.2903, -0.2176, -0.1714, 0.0297, -0.0640, 0.0291, 0.3087,\n", + " 0.3888, 0.3519, 0.2655]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 3.714725244208239e-05\n", + "Grad encoder.fc1.bias: 4.074161915923469e-05\n", + "Grad encoder.encoder.0.weight: 1.3346887499210425e-05\n", + "Grad encoder.encoder.0.bias: 3.951428516302258e-05\n", + "Grad encoder.encoder.2.weight: 1.4422182175621856e-05\n", + "Grad encoder.encoder.2.bias: 6.41295628156513e-05\n", + "Grad encoder.encoder.4.weight: 3.8075340853538364e-05\n", + "Grad encoder.encoder.4.bias: 0.00034099791082553566\n", + "Grad decoder.fc1.0.weight: 2.1165356884012e-05\n", + "Grad decoder.fc1.0.bias: 0.00021446595201268792\n", + "Grad decoder.fc1.2.weight: 2.873469202313572e-05\n", + "Grad decoder.fc1.2.bias: 0.0003291941247880459\n", + "Grad decoder.fc1.4.weight: 3.512857801979408e-05\n", + "Grad decoder.fc1.4.bias: 0.0005456008366309106\n", + "Grad decoder.fc2.weight: 0.00010814854613272473\n", + "Grad decoder.fc2.bias: 0.0019525442039594054\n", + "Grad _memory_unit.weight_ih_l0: 3.2507073228771333e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.5054913092171773e-05\n", + "Grad _memory_unit.bias_hh_l0: 7.695902240811847e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.7859669014796964e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.9265258237719536e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.027950540650636e-05\n", + "Data X Sample: tensor([[1.5053, 1.6619, 1.8993, 2.0029, 2.0387, 1.9653, 1.9243, 2.5454, 4.0325,\n", + " 4.3695, 4.3905, 4.3410, 4.0768, 3.8770, 3.9443, 3.8346, 3.7344, 3.7720,\n", + " 3.5828, 3.5632, 3.5626, 3.4017, 2.9183, 2.7371, 2.8715, 2.8626, 2.9330,\n", + " 2.7979, 2.9904, 3.0491, 3.1181, 3.2607, 3.8369, 2.8629, 4.5469, 4.8110,\n", + " 5.1679, 5.4728, 6.0278, 5.7991, 1.1836, 0.6831, 0.7053, 1.1654, 1.7205,\n", + " 1.9556, 1.2714, 1.8219]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.7014, -0.3002, -0.1198, -0.0036, 0.8791, 0.4037, 0.3739, 0.2934,\n", + " -0.1394, 0.6248, 0.0565, 0.2705, -0.5137, -0.4050, 0.4826, 0.7908,\n", + " 0.7580, 0.7415, -0.1646, 0.9830, 0.2099, 0.1280, 0.6890, 0.2248,\n", + " -0.0889, -0.3806, -1.1412, 0.2236, -0.1227, -0.8170, -0.6468, -0.2875,\n", + " -0.1980, -0.5160, -0.5543, 0.2707, -0.2391, 0.5097, 0.4404, 0.0294,\n", + " 0.1992, -0.0857, 0.1132]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2449, -0.3037, -0.0964, -0.1890, 0.0010, 0.1349, 0.1877, 0.3034,\n", + " 0.2142, 0.2476, 0.2341, -0.1655, -0.1146, -0.2896, -0.2221, -0.3255,\n", + " -0.2054, -0.1143, -0.0305, -0.1552, -0.1026, -0.0161, -0.0743, -0.0830,\n", + " -0.0389, -0.0074, -0.0719, -0.1205, -0.2333, -0.2759, -0.2660, -0.2228,\n", + " -0.2912, -0.2904, -0.2205, -0.1727, 0.0323, -0.0622, 0.0374, 0.2986,\n", + " 0.3810, 0.3462, 0.2609]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00010505664977245033\n", + "Grad encoder.fc1.bias: 0.0006219936767593026\n", + "Grad encoder.encoder.0.weight: 2.735375164775178e-05\n", + "Grad encoder.encoder.0.bias: 0.00039542955346405506\n", + "Grad encoder.encoder.2.weight: 2.4356731955776922e-05\n", + "Grad encoder.encoder.2.bias: 0.00028967898106202483\n", + "Grad encoder.encoder.4.weight: 5.936663364991546e-05\n", + "Grad encoder.encoder.4.bias: 0.0006517181172966957\n", + "Grad decoder.fc1.0.weight: 3.183240914950147e-05\n", + "Grad decoder.fc1.0.bias: 0.0003453260869719088\n", + "Grad decoder.fc1.2.weight: 3.282821489847265e-05\n", + "Grad decoder.fc1.2.bias: 0.0003550287801772356\n", + "Grad decoder.fc1.4.weight: 3.090645986958407e-05\n", + "Grad decoder.fc1.4.bias: 0.00045110241626389325\n", + "Grad decoder.fc2.weight: 0.00010656478843884543\n", + "Grad decoder.fc2.bias: 0.0017438583308830857\n", + "Grad _memory_unit.weight_ih_l0: 4.970287591277156e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.828769745770842e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.574443538440391e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.5559329515090212e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.4550615459447727e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.80753865808947e-05\n", + "Data X Sample: tensor([[1.6835, 1.8905, 2.0060, 2.1975, 2.2811, 2.4780, 2.5822, 2.6519, 2.5606,\n", + " 2.6571, 2.6520, 2.6272, 2.6565, 2.5547, 2.4059, 2.4725, 2.4372, 2.4044,\n", + " 2.5709, 2.4995, 2.5861, 2.6393, 2.5761, 2.5252, 2.5956, 2.5597, 2.4855,\n", + " 2.5858, 2.2966, 2.4039, 2.3727, 2.3129, 2.1824, 1.3891, 1.8751, 1.7877,\n", + " 1.6715, 1.6087, 1.5973, 1.4611, 1.3220, 0.7488, 0.7599, 1.3003, 1.7601,\n", + " 2.2930, 1.3258, 2.1034]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.6104e-01, 4.5188e-01, -1.3380e-01, 1.4864e+00, 5.1602e-01,\n", + " -1.6702e-02, -2.4289e-02, -4.2424e-01, -2.8217e-01, -4.9993e-01,\n", + " -4.5852e-01, -3.4616e-01, 6.3251e-02, 3.8091e-02, -6.9865e-01,\n", + " 2.3419e-01, 1.5468e-03, -5.9655e-01, -7.5859e-02, 6.5158e-01,\n", + " 1.2889e+00, -5.4556e-01, 1.0199e-01, 5.3473e-02, 2.0236e+00,\n", + " 3.6257e-01, -6.0340e-02, -5.0334e-01, 8.9125e-02, -6.6143e-01,\n", + " 1.3207e-01, -8.9816e-01, 7.3372e-01, 7.7012e-01, 7.4299e-01,\n", + " 8.7515e-02, -8.9580e-01, -8.6851e-02, 1.1339e+00, -2.9433e-01,\n", + " -2.6578e-01, 1.5296e-01, -1.0718e-02]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4934, 0.4170, 0.1527, 0.3784, 0.1763, -0.1447, -0.4159, -0.4617,\n", + " -0.2572, -0.3190, -0.2996, 0.2037, 0.1936, 0.3111, 0.2588, 0.3743,\n", + " 0.3414, 0.0730, 0.1483, 0.1108, 0.0591, 0.1158, 0.0218, 0.0233,\n", + " 0.0278, 0.0996, -0.1842, -0.0052, 0.1480, 0.2731, 0.2681, 0.1810,\n", + " 0.3174, 0.3546, 0.2401, 0.2601, -0.0394, -0.0078, -0.0137, -0.3605,\n", + " -0.3320, -0.3322, -0.3057]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 9.862417209660634e-05\n", + "Grad encoder.fc1.bias: 5.410632002167404e-05\n", + "Grad encoder.encoder.0.weight: 2.4653107175254263e-05\n", + "Grad encoder.encoder.0.bias: 5.940813571214676e-05\n", + "Grad encoder.encoder.2.weight: 1.7794456653064117e-05\n", + "Grad encoder.encoder.2.bias: 0.0001010379201034084\n", + "Grad encoder.encoder.4.weight: 4.1784311179071665e-05\n", + "Grad encoder.encoder.4.bias: 0.00032906359410844743\n", + "Grad decoder.fc1.0.weight: 2.5458281015744433e-05\n", + "Grad decoder.fc1.0.bias: 0.00024829473113641143\n", + "Grad decoder.fc1.2.weight: 3.512885086820461e-05\n", + "Grad decoder.fc1.2.bias: 0.00030279665952548385\n", + "Grad decoder.fc1.4.weight: 3.119055327260867e-05\n", + "Grad decoder.fc1.4.bias: 0.0003204949607606977\n", + "Grad decoder.fc2.weight: 0.00010916506289504468\n", + "Grad decoder.fc2.bias: 0.0016066665994003415\n", + "Grad _memory_unit.weight_ih_l0: 5.091472758067539e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.8774547899956815e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.4357416148413904e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.2271319721767213e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.240567017812282e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.234883479308337e-05\n", + "Data X Sample: tensor([[1.2550, 1.4405, 1.5372, 1.6596, 1.7160, 1.9270, 2.0306, 2.1195, 3.4565,\n", + " 3.9493, 4.1652, 3.9670, 3.8637, 3.8443, 3.6820, 3.5201, 3.4938, 3.5070,\n", + " 3.3619, 3.2973, 3.4007, 3.2394, 2.9640, 2.7695, 2.8040, 2.8731, 2.9224,\n", + " 3.0304, 3.0737, 3.0000, 3.2126, 3.3105, 3.5333, 2.5585, 4.2527, 4.7137,\n", + " 4.8474, 5.3482, 5.7489, 5.7055, 1.0882, 0.5696, 0.5396, 0.9989, 1.4033,\n", + " 1.5897, 1.1286, 1.6108]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4494, -1.1157, -0.7270, -1.0743, 0.0489, 0.3586, 0.0580, 0.3533,\n", + " 0.6567, 0.6306, 0.5234, -0.9194, -0.4070, -1.5123, -1.0779, -1.4650,\n", + " -1.6297, 0.1443, 0.8376, 0.1040, -0.5480, 0.0368, 0.9067, -0.5932,\n", + " 0.5939, 1.5485, -0.0191, -1.0371, 0.3565, -0.6115, -0.2674, 0.1754,\n", + " -1.3866, -1.0969, -0.8553, -0.7836, 0.0000, 0.5129, 0.9794, 0.7863,\n", + " 0.7243, 0.9079, 0.5254]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2383, -0.2861, -0.0890, -0.1851, 0.0183, 0.1351, 0.1774, 0.2860,\n", + " 0.2029, 0.2329, 0.2225, -0.1592, -0.1134, -0.2813, -0.2092, -0.3060,\n", + " -0.1908, -0.1016, -0.0224, -0.1465, -0.0991, -0.0179, -0.0680, -0.0765,\n", + " -0.0407, 0.0011, -0.0706, -0.1110, -0.2279, -0.2702, -0.2504, -0.2150,\n", + " -0.2869, -0.2865, -0.2202, -0.1734, 0.0369, -0.0533, 0.0500, 0.2750,\n", + " 0.3626, 0.3320, 0.2537]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003493698313832283\n", + "Grad encoder.fc1.bias: 0.00048582610907033086\n", + "Grad encoder.encoder.0.weight: 9.851579670794308e-05\n", + "Grad encoder.encoder.0.bias: 0.00031896610744297504\n", + "Grad encoder.encoder.2.weight: 6.833304360043257e-05\n", + "Grad encoder.encoder.2.bias: 0.000335885415552184\n", + "Grad encoder.encoder.4.weight: 0.00013317595585249364\n", + "Grad encoder.encoder.4.bias: 0.0009699262445792556\n", + "Grad decoder.fc1.0.weight: 4.847817763220519e-05\n", + "Grad decoder.fc1.0.bias: 0.0004335537669248879\n", + "Grad decoder.fc1.2.weight: 5.048461753176525e-05\n", + "Grad decoder.fc1.2.bias: 0.0005999980494379997\n", + "Grad decoder.fc1.4.weight: 5.698415043298155e-05\n", + "Grad decoder.fc1.4.bias: 0.0008097247336991131\n", + "Grad decoder.fc2.weight: 0.00015436584362760186\n", + "Grad decoder.fc2.bias: 0.002029344905167818\n", + "Grad _memory_unit.weight_ih_l0: 1.0074047168018296e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.1906065740040503e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.1792490113293752e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.5338742893363815e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.102040737867355e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.134395203436725e-05\n", + "Data X Sample: tensor([[1.6029, 1.8119, 2.0120, 2.1712, 2.2965, 2.4854, 2.4543, 2.5724, 2.6436,\n", + " 2.5844, 2.6172, 2.6739, 2.6232, 2.5901, 2.5194, 2.4835, 2.5142, 2.5669,\n", + " 2.4822, 2.4492, 2.4929, 2.5183, 2.4990, 2.4374, 2.4887, 2.4656, 2.5494,\n", + " 2.6103, 2.2619, 2.3548, 2.2957, 2.2936, 2.2836, 1.4692, 2.0492, 1.8825,\n", + " 1.6990, 1.6273, 1.6226, 1.5888, 1.2313, 0.7747, 0.7498, 1.3232, 1.7680,\n", + " 2.1901, 1.5094, 2.0643]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4927, 0.3450, -0.1967, 0.2179, 0.1858, -1.1203, -0.2181, -0.6064,\n", + " -0.1841, -0.2286, -0.1105, 0.0247, 0.0305, 0.0506, 0.5613, -0.5740,\n", + " -0.0329, -0.1115, 0.0555, 0.4328, -0.8577, 5.4081, -1.3913, -1.4093,\n", + " -0.2342, -1.4494, -0.2874, -1.2594, 0.2424, 0.4724, 0.6318, 0.1475,\n", + " -0.0634, 0.2840, 1.5262, 0.0939, 0.8379, 0.7996, 0.0382, -0.1886,\n", + " -0.2811, -0.3867, -0.3662]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5139, 0.4424, 0.1716, 0.3922, 0.1825, -0.1648, -0.4484, -0.4942,\n", + " -0.2793, -0.3421, -0.3195, 0.2168, 0.2129, 0.3367, 0.2700, 0.3983,\n", + " 0.3641, 0.0823, 0.1600, 0.1204, 0.0635, 0.1240, 0.0227, 0.0263,\n", + " 0.0347, 0.1003, -0.1871, 0.0040, 0.1741, 0.3018, 0.2937, 0.2011,\n", + " 0.3374, 0.3771, 0.2400, 0.2661, -0.0257, -0.0006, -0.0059, -0.3804,\n", + " -0.3516, -0.3565, -0.3281]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00011026585707440972\n", + "Grad encoder.fc1.bias: 0.00048744463128969073\n", + "Grad encoder.encoder.0.weight: 3.6021308915223926e-05\n", + "Grad encoder.encoder.0.bias: 0.0004460425116121769\n", + "Grad encoder.encoder.2.weight: 2.8150807338533923e-05\n", + "Grad encoder.encoder.2.bias: 0.00037442351458594203\n", + "Grad encoder.encoder.4.weight: 9.310121822636575e-05\n", + "Grad encoder.encoder.4.bias: 0.0007862155325710773\n", + "Grad decoder.fc1.0.weight: 4.178504241281189e-05\n", + "Grad decoder.fc1.0.bias: 0.00034695788053795695\n", + "Grad decoder.fc1.2.weight: 6.222960655577481e-05\n", + "Grad decoder.fc1.2.bias: 0.0005375475157052279\n", + "Grad decoder.fc1.4.weight: 4.777373396791518e-05\n", + "Grad decoder.fc1.4.bias: 0.0005390747683122754\n", + "Grad decoder.fc2.weight: 0.00014272292901296169\n", + "Grad decoder.fc2.bias: 0.002023499459028244\n", + "Grad _memory_unit.weight_ih_l0: 9.23508468986256e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.311996624688618e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.7734844732331112e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.1884754864440765e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.656620826106519e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.451201700954698e-05\n", + "Data X Sample: tensor([[1.5138, 1.8396, 1.9429, 2.0881, 2.1138, 2.2320, 2.2940, 2.4318, 2.4679,\n", + " 2.4960, 2.5696, 2.5687, 2.4567, 2.4075, 2.3655, 2.3221, 2.2799, 2.3870,\n", + " 2.4223, 2.3897, 2.4683, 2.5076, 2.4435, 2.5366, 2.5787, 2.5884, 2.4402,\n", + " 2.5002, 2.1786, 2.3221, 2.2887, 2.2024, 2.1868, 1.4189, 1.8923, 1.7682,\n", + " 1.6420, 1.4338, 1.6543, 1.6228, 1.2361, 0.7587, 0.7356, 1.2429, 1.8235,\n", + " 2.0128, 1.4006, 2.0330]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.1229, 0.6186, 0.7128, 0.3283, -0.7466, -0.2866, -1.6486, -1.8147,\n", + " -0.5031, -1.1682, 0.0115, 0.1520, -0.4707, 0.7598, 0.8544, 0.1555,\n", + " 0.0325, 0.0174, 0.5162, -0.1919, 0.3319, 0.0891, 2.7081, -0.8603,\n", + " 0.4692, 0.8402, 0.2940, 0.2670, 0.8133, 1.2898, 0.8121, 1.7803,\n", + " 0.9363, 0.2025, 0.7923, 0.3390, -0.4777, 0.5703, -0.4557, -1.0157,\n", + " -0.6556, -0.3177, 1.2992]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5085, 0.4400, 0.1737, 0.3874, 0.1806, -0.1675, -0.4500, -0.4940,\n", + " -0.2796, -0.3436, -0.3211, 0.2132, 0.2139, 0.3349, 0.2682, 0.3989,\n", + " 0.3608, 0.0830, 0.1596, 0.1208, 0.0636, 0.1251, 0.0240, 0.0251,\n", + " 0.0373, 0.0969, -0.1829, 0.0049, 0.1791, 0.3064, 0.2990, 0.2032,\n", + " 0.3401, 0.3784, 0.2353, 0.2615, -0.0196, 0.0030, 0.0016, -0.3798,\n", + " -0.3509, -0.3577, -0.3281]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005357627524062991\n", + "Grad encoder.fc1.bias: 0.000251430319622159\n", + "Grad encoder.encoder.0.weight: 0.0001487150730099529\n", + "Grad encoder.encoder.0.bias: 0.00036757535417564213\n", + "Grad encoder.encoder.2.weight: 8.011160389287397e-05\n", + "Grad encoder.encoder.2.bias: 0.0003592756111174822\n", + "Grad encoder.encoder.4.weight: 0.00013310287613421679\n", + "Grad encoder.encoder.4.bias: 0.0011106745805591345\n", + "Grad decoder.fc1.0.weight: 3.750503310584463e-05\n", + "Grad decoder.fc1.0.bias: 0.00043747812742367387\n", + "Grad decoder.fc1.2.weight: 3.002535959240049e-05\n", + "Grad decoder.fc1.2.bias: 0.0006922875763848424\n", + "Grad decoder.fc1.4.weight: 3.06731672026217e-05\n", + "Grad decoder.fc1.4.bias: 0.0006770134204998612\n", + "Grad decoder.fc2.weight: 0.0001065024989657104\n", + "Grad decoder.fc2.bias: 0.001306968042626977\n", + "Grad _memory_unit.weight_ih_l0: 1.1207471288798843e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.784714474226348e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.4414515792159364e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.232657374814153e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010544220276642591\n", + "Grad _memory_unit.bias_hh_l1: 5.279872857499868e-05\n", + "Data X Sample: tensor([[-0.0106, 0.0087, 0.0105, -0.0175, -0.0154, 0.0015, 0.0031, 0.0057,\n", + " 0.0073, 0.0047, -0.0159, -0.0078, -0.0022, 0.0136, 0.0076, -0.0027,\n", + " -0.0016, -0.0019, 0.0021, 0.0019, 0.0196, 0.0015, 0.0145, 0.0095,\n", + " -0.0019, 0.0052, 0.0160, 0.0367, -0.0139, 0.0393, 0.0070, -0.0055,\n", + " -0.0066, -0.0023, 0.0074, 0.0316, -0.0020, 0.0106, 0.0063, -0.0142,\n", + " 0.0286, 0.0239, 0.0040, 0.0057, 0.0000, 0.0515, 0.0340, -0.0313]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 2.1207, 1.2177, 0.6232, 1.0234, 0.9681, 0.6045, -1.6891, -1.2837,\n", + " -1.1048, -0.6664, -0.6086, 0.3980, -0.1800, 0.4464, 0.0862, 0.4005,\n", + " 0.3693, 0.2573, -1.9026, -0.0378, -1.5818, 0.9175, -3.1601, 0.5572,\n", + " -0.2235, 0.9064, 0.2080, 0.9262, 1.5842, 1.0027, 0.7913, 0.2212,\n", + " -0.2182, 1.0750, 0.8334, 0.4834, 0.0000, -0.8399, -0.7678, -0.5866,\n", + " -0.5815, -0.8215, -0.8911]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 1.0727e+00, 7.3145e-01, 2.1075e-01, 4.9861e-01, -9.2903e-01,\n", + " -1.0953e+00, -1.6884e+00, -1.4794e+00, -1.2571e+00, -1.1867e+00,\n", + " -1.1508e+00, 4.9092e-01, 6.3733e-01, 7.7097e-01, 5.5227e-01,\n", + " 5.5667e-01, 6.0485e-01, -2.7102e-01, 5.4748e-02, 4.6561e-02,\n", + " -4.2558e-02, -1.2810e-02, -5.8461e-02, 5.2122e-02, -6.3811e-02,\n", + " -1.3808e-01, 3.6794e-01, 7.7161e-01, 1.3661e+00, 1.2086e+00,\n", + " 1.0174e+00, 6.5450e-01, 8.7159e-01, 6.7085e-01, 5.1178e-01,\n", + " 2.8191e-01, -1.2583e-01, 1.0282e-02, -1.3735e-03, -9.2970e-01,\n", + " -8.4443e-01, -7.5580e-01, -4.1096e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002489947946742177\n", + "Grad encoder.fc1.bias: 0.000949978013522923\n", + "Grad encoder.encoder.0.weight: 8.883709961082786e-05\n", + "Grad encoder.encoder.0.bias: 0.0005085988086648285\n", + "Grad encoder.encoder.2.weight: 5.006224091630429e-05\n", + "Grad encoder.encoder.2.bias: 0.000488822057377547\n", + "Grad encoder.encoder.4.weight: 0.00010102657688548788\n", + "Grad encoder.encoder.4.bias: 0.0009809067705646157\n", + "Grad decoder.fc1.0.weight: 4.247910692356527e-05\n", + "Grad decoder.fc1.0.bias: 0.00049471331294626\n", + "Grad decoder.fc1.2.weight: 4.4191343476995826e-05\n", + "Grad decoder.fc1.2.bias: 0.0003729587479028851\n", + "Grad decoder.fc1.4.weight: 4.0857132262317464e-05\n", + "Grad decoder.fc1.4.bias: 0.0003952828119508922\n", + "Grad decoder.fc2.weight: 0.00016239986871369183\n", + "Grad decoder.fc2.bias: 0.0018686861731112003\n", + "Grad _memory_unit.weight_ih_l0: 8.62810429680394e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.720767199411057e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.8958162399940193e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.5498360375640914e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.508621587883681e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.8382164095528424e-05\n", + "Data X Sample: tensor([[1.3738, 1.5031, 1.6108, 1.9416, 1.9960, 1.9565, 1.8981, 1.8129, 2.9072,\n", + " 4.0520, 4.3143, 4.1813, 3.9525, 3.9125, 3.8106, 3.5748, 3.5599, 3.7082,\n", + " 3.6158, 3.5688, 3.5479, 3.3221, 2.9665, 2.7733, 2.8922, 2.8470, 2.9277,\n", + " 3.0956, 3.0043, 3.0000, 3.3035, 3.3381, 3.7775, 2.8332, 4.6694, 4.9253,\n", + " 5.1128, 5.5576, 6.0405, 5.8303, 1.0547, 0.6313, 0.6002, 1.0419, 1.5579,\n", + " 1.8984, 1.2510, 1.7437]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0834, -0.9286, 2.6436, -0.1210, 0.2084, 0.3887, -0.0186, 0.4507,\n", + " 0.0559, 0.5873, 0.5788, -0.7687, -1.2831, -0.8035, -1.0700, -1.2376,\n", + " -0.5776, 2.8329, -0.2912, -1.5660, -0.2256, -0.8792, -0.1261, -1.3064,\n", + " -0.9939, -0.5986, 0.5369, -1.5083, -0.0502, -0.4615, -0.6322, -0.2597,\n", + " 0.2498, -1.0478, 0.5525, -0.5354, 0.2309, 0.0000, -0.5562, 0.4764,\n", + " 0.9254, 0.3260, 0.2825]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2182, -0.2469, -0.0561, -0.1612, 0.0969, 0.1778, 0.1735, 0.2432,\n", + " 0.1874, 0.2066, 0.1955, -0.1449, -0.1186, -0.2688, -0.1811, -0.2650,\n", + " -0.1619, -0.0719, -0.0194, -0.1274, -0.0905, -0.0343, -0.0562, -0.0571,\n", + " -0.0428, -0.0049, -0.0850, -0.1309, -0.2402, -0.2848, -0.2343, -0.1904,\n", + " -0.3126, -0.2893, -0.2220, -0.1837, 0.0453, -0.0278, 0.0830, 0.2234,\n", + " 0.3074, 0.2877, 0.2261]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005369551945477724\n", + "Grad encoder.fc1.bias: 0.0005661228788085282\n", + "Grad encoder.encoder.0.weight: 0.0001597180962562561\n", + "Grad encoder.encoder.0.bias: 0.00047907233238220215\n", + "Grad encoder.encoder.2.weight: 9.634913294576108e-05\n", + "Grad encoder.encoder.2.bias: 0.00042732254951260984\n", + "Grad encoder.encoder.4.weight: 0.0001564992417115718\n", + "Grad encoder.encoder.4.bias: 0.001166480127722025\n", + "Grad decoder.fc1.0.weight: 4.8071877245092764e-05\n", + "Grad decoder.fc1.0.bias: 0.0005363868549466133\n", + "Grad decoder.fc1.2.weight: 5.003302430850454e-05\n", + "Grad decoder.fc1.2.bias: 0.0007676073582842946\n", + "Grad decoder.fc1.4.weight: 4.449360494618304e-05\n", + "Grad decoder.fc1.4.bias: 0.0007710765348747373\n", + "Grad decoder.fc2.weight: 0.00013550749281421304\n", + "Grad decoder.fc2.bias: 0.0021427820902317762\n", + "Grad _memory_unit.weight_ih_l0: 7.415237178065581e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.6812329451786354e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.449039609724423e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.504770120343892e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.689013389404863e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.4757442335831e-05\n", + "Data X Sample: tensor([[1.5403, 1.7420, 1.9309, 1.9832, 2.0387, 2.0788, 2.1246, 2.1919, 2.3116,\n", + " 2.3490, 2.2809, 2.2766, 2.2969, 2.1675, 2.0680, 2.2045, 2.1573, 2.1955,\n", + " 2.2488, 2.2781, 2.3432, 2.4464, 2.5038, 2.4641, 2.3873, 2.5544, 2.4722,\n", + " 2.4390, 2.2099, 2.3679, 2.3097, 2.4262, 2.2902, 1.4807, 2.0099, 1.7901,\n", + " 1.6990, 1.5080, 1.5402, 1.5547, 1.2457, 0.7070, 0.7437, 1.2658, 1.7482,\n", + " 1.9099, 1.3326, 1.8532]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1495, 0.5174, -0.4749, 1.0744, 0.7185, -0.2238, -0.3105, -0.3323,\n", + " -0.3794, -0.4729, -0.1681, 1.8429, 1.6936, 0.8519, -0.0542, 1.0737,\n", + " 0.3550, 1.2059, 1.0949, 0.8689, 1.4085, 1.5846, 0.7319, 0.8736,\n", + " 0.8870, 0.2306, -0.3114, -0.0481, -0.5770, 0.8236, 0.9933, 0.5761,\n", + " 0.2149, 0.0851, 0.5151, 1.0301, -0.6306, 0.4473, 0.0000, -0.1729,\n", + " -0.1347, -0.0331, -0.4595]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5291, 0.4673, 0.1847, 0.4025, 0.2058, -0.1855, -0.4730, -0.5226,\n", + " -0.2953, -0.3740, -0.3444, 0.2224, 0.2285, 0.3465, 0.2895, 0.4284,\n", + " 0.3716, 0.0948, 0.1702, 0.1331, 0.0704, 0.1410, 0.0328, 0.0221,\n", + " 0.0457, 0.0852, -0.1855, -0.0071, 0.1937, 0.3337, 0.3312, 0.2183,\n", + " 0.3595, 0.4093, 0.2441, 0.2734, -0.0119, 0.0018, 0.0410, -0.4025,\n", + " -0.3823, -0.3862, -0.3545]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002405154809821397\n", + "Grad encoder.fc1.bias: 0.0004555532359518111\n", + "Grad encoder.encoder.0.weight: 9.187762043438852e-05\n", + "Grad encoder.encoder.0.bias: 0.0003548967943061143\n", + "Grad encoder.encoder.2.weight: 6.0405509429983795e-05\n", + "Grad encoder.encoder.2.bias: 0.00031060725450515747\n", + "Grad encoder.encoder.4.weight: 0.00013535929610952735\n", + "Grad encoder.encoder.4.bias: 0.0008056947262957692\n", + "Grad decoder.fc1.0.weight: 4.928703492623754e-05\n", + "Grad decoder.fc1.0.bias: 0.0004400180478114635\n", + "Grad decoder.fc1.2.weight: 5.6495842727599666e-05\n", + "Grad decoder.fc1.2.bias: 0.0005788309499621391\n", + "Grad decoder.fc1.4.weight: 4.452615394257009e-05\n", + "Grad decoder.fc1.4.bias: 0.0005686108488589525\n", + "Grad decoder.fc2.weight: 0.0001441952626919374\n", + "Grad decoder.fc2.bias: 0.0017388327978551388\n", + "Grad _memory_unit.weight_ih_l0: 1.3435603250400163e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.0488583686528727e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.2486509149312042e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.212804353504907e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.63707687635906e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.442005254328251e-05\n", + "Data X Sample: tensor([[2.5916, 2.0843, 1.9264, 1.9788, 2.0387, 2.0567, 3.2477, 4.0814, 4.3035,\n", + " 4.2289, 4.3365, 4.2514, 3.9925, 3.8579, 3.8030, 3.8428, 3.7312, 3.5805,\n", + " 3.6695, 3.5149, 3.4767, 3.5226, 2.9520, 2.8115, 2.7158, 2.8130, 2.8531,\n", + " 2.9121, 2.8933, 2.9476, 2.9466, 3.0811, 3.3265, 2.3938, 4.1596, 4.5361,\n", + " 4.8611, 5.3429, 6.0215, 5.8303, 1.3268, 0.6950, 0.6710, 1.2199, 1.8394,\n", + " 1.8870, 1.2918, 1.8297]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.7587e-01, 5.3072e-02, 2.1880e+00, -8.2929e-02, 8.2470e-01,\n", + " 7.6295e-01, 4.6302e-01, 1.1767e-01, 4.3985e-01, -1.5965e-02,\n", + " 2.9159e-01, -1.7120e-01, -9.1447e-01, -5.7465e-03, 6.9478e-01,\n", + " -8.9036e-01, -1.2431e-03, -6.0272e-01, -2.7925e-01, -5.1712e-01,\n", + " -8.7320e-01, 4.7687e-01, -2.2248e-01, 1.8834e-01, 1.2682e+00,\n", + " 2.6001e+00, -6.8375e-01, -2.0213e+00, -3.2284e+00, -2.4730e+00,\n", + " -2.0795e+00, -1.1037e+00, -9.8268e-01, -1.8601e+00, -5.3388e+00,\n", + " -4.6913e-01, 6.3666e-02, 1.0045e-01, -7.3667e-01, 1.2178e-01,\n", + " 8.5770e-02, 2.6136e-01, 1.8153e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1965, -0.2291, -0.0730, -0.1617, 0.0254, 0.1160, 0.1312, 0.2310,\n", + " 0.1533, 0.1854, 0.1822, -0.1316, -0.1002, -0.2334, -0.1604, -0.2435,\n", + " -0.1617, -0.0728, -0.0136, -0.1154, -0.0703, -0.0081, -0.0623, -0.0610,\n", + " -0.0341, 0.0170, -0.0511, -0.0835, -0.1950, -0.2320, -0.1911, -0.1838,\n", + " -0.2447, -0.2431, -0.1937, -0.1758, 0.0329, -0.0222, 0.0663, 0.2162,\n", + " 0.2966, 0.2862, 0.2164]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007502382504753768\n", + "Grad encoder.fc1.bias: 0.0009827920002862811\n", + "Grad encoder.encoder.0.weight: 0.00021596399892587215\n", + "Grad encoder.encoder.0.bias: 0.0006604467635042965\n", + "Grad encoder.encoder.2.weight: 0.00014204479521140456\n", + "Grad encoder.encoder.2.bias: 0.0006581135094165802\n", + "Grad encoder.encoder.4.weight: 0.0002648131048772484\n", + "Grad encoder.encoder.4.bias: 0.0018843172583729029\n", + "Grad decoder.fc1.0.weight: 7.22013646736741e-05\n", + "Grad decoder.fc1.0.bias: 0.0006953896954655647\n", + "Grad decoder.fc1.2.weight: 7.029945845715702e-05\n", + "Grad decoder.fc1.2.bias: 0.0007879970362409949\n", + "Grad decoder.fc1.4.weight: 5.9340040024835616e-05\n", + "Grad decoder.fc1.4.bias: 0.0008250167593359947\n", + "Grad decoder.fc2.weight: 0.00015251692093443125\n", + "Grad decoder.fc2.bias: 0.0019326129695400596\n", + "Grad _memory_unit.weight_ih_l0: 1.2258225069672335e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.4583939597941935e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.3091695766197518e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.210221727087628e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011423983960412443\n", + "Grad _memory_unit.bias_hh_l1: 5.72163553442806e-05\n", + "Data X Sample: tensor([[1.5128, 1.6094, 1.6844, 1.8848, 1.9806, 2.0272, 2.1292, 2.2558, 3.9495,\n", + " 4.1231, 4.2699, 4.1423, 4.1278, 3.7571, 3.7829, 3.6035, 3.5284, 3.5167,\n", + " 3.3660, 3.3549, 3.4031, 3.2333, 2.9881, 2.9146, 2.7721, 2.8365, 2.8318,\n", + " 2.9162, 2.9696, 3.0066, 3.2475, 3.1916, 3.6279, 2.7096, 4.3655, 4.7161,\n", + " 4.9831, 5.2634, 5.6412, 5.5267, 1.1359, 0.6173, 0.6002, 1.0764, 1.6491,\n", + " 1.7669, 1.2850, 1.6577]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1731, -0.0373, -0.5277, -0.3997, 0.8340, 2.1966, 0.2581, 0.5903,\n", + " -0.1282, 0.3356, 0.3152, -0.4590, -0.8222, -0.2457, 0.2075, -1.7363,\n", + " -0.5335, -0.5109, -0.0095, -3.9343, 0.0295, -0.3713, -0.4815, -0.6751,\n", + " 0.3338, 5.4119, -0.2368, -0.3321, -0.4994, -0.8845, -0.8644, -0.9125,\n", + " -1.4141, -0.8734, -0.0811, -0.6386, -0.8958, 0.8296, 0.4422, 0.4959,\n", + " 0.7023, 0.8259, 0.6693]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2111, -0.2311, -0.0418, -0.1492, 0.1189, 0.1878, 0.1670, 0.2267,\n", + " 0.1810, 0.1950, 0.1834, -0.1333, -0.1214, -0.2637, -0.1638, -0.2523,\n", + " -0.1590, -0.0633, -0.0159, -0.1247, -0.0838, -0.0353, -0.0551, -0.0499,\n", + " -0.0391, -0.0068, -0.0865, -0.1369, -0.2400, -0.2896, -0.2214, -0.1770,\n", + " -0.3130, -0.2861, -0.2168, -0.1932, 0.0530, -0.0084, 0.0881, 0.2086,\n", + " 0.2877, 0.2737, 0.2213]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0008156289113685489\n", + "Grad encoder.fc1.bias: 0.0007580663659609854\n", + "Grad encoder.encoder.0.weight: 0.0002476684167049825\n", + "Grad encoder.encoder.0.bias: 0.0008266248623840511\n", + "Grad encoder.encoder.2.weight: 0.0001483694650232792\n", + "Grad encoder.encoder.2.bias: 0.0008321325294673443\n", + "Grad encoder.encoder.4.weight: 0.00025031479890458286\n", + "Grad encoder.encoder.4.bias: 0.0019758185371756554\n", + "Grad decoder.fc1.0.weight: 7.098018249962479e-05\n", + "Grad decoder.fc1.0.bias: 0.000727209378965199\n", + "Grad decoder.fc1.2.weight: 7.211843330878764e-05\n", + "Grad decoder.fc1.2.bias: 0.0011442269897088408\n", + "Grad decoder.fc1.4.weight: 6.255618791328743e-05\n", + "Grad decoder.fc1.4.bias: 0.0009789691539481282\n", + "Grad decoder.fc2.weight: 0.00017359563207719475\n", + "Grad decoder.fc2.bias: 0.0026294291019439697\n", + "Grad _memory_unit.weight_ih_l0: 1.67019843502203e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.98797734407708e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.540984446066432e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.758778908988461e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00016679748659953475\n", + "Grad _memory_unit.bias_hh_l1: 8.515553781762719e-05\n", + "Data X Sample: tensor([[1.4777, 1.7638, 1.8452, 1.9373, 2.0404, 2.2261, 2.4250, 2.4020, 2.4801,\n", + " 2.6160, 2.5727, 2.7207, 2.5011, 2.5220, 2.4866, 2.4794, 2.4513, 2.4354,\n", + " 2.5007, 2.4269, 2.3849, 2.3545, 2.3351, 2.3401, 2.3423, 2.3742, 2.3443,\n", + " 2.3697, 2.1752, 2.3352, 2.2782, 2.2328, 2.1560, 1.4692, 1.9438, 1.7634,\n", + " 1.6617, 1.4947, 1.5276, 1.5604, 1.1502, 0.6930, 0.7073, 1.2228, 1.6213,\n", + " 1.8699, 1.3530, 1.9392]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4651, 1.1405, 0.3948, 0.5826, 0.1619, -0.8723, -0.2048, -0.3924,\n", + " -0.3767, -0.5741, -0.5152, 0.1427, 0.5396, -0.4257, 0.1735, -0.1208,\n", + " -0.0124, -0.5917, -0.5841, -0.8047, 0.3733, -0.9362, -2.2543, -0.0537,\n", + " -0.0922, -0.6452, 0.2290, -0.0215, -0.0767, 0.4111, 0.7138, -0.0105,\n", + " 0.3485, 1.0061, -1.6925, -0.0229, -0.0868, -0.6782, -0.2783, -0.2705,\n", + " -0.1309, -0.2647, -0.9256]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 4.0137e-01, 3.5448e-01, 1.3309e-01, 2.8420e-01, 1.4692e-01,\n", + " -1.6321e-01, -3.7573e-01, -4.1605e-01, -2.3081e-01, -2.9287e-01,\n", + " -2.8075e-01, 1.5830e-01, 1.5984e-01, 2.5588e-01, 2.1792e-01,\n", + " 3.1781e-01, 2.5863e-01, 7.3458e-02, 1.2264e-01, 8.2290e-02,\n", + " 4.7089e-02, 1.0783e-01, 1.5021e-02, -2.4651e-04, 2.3120e-02,\n", + " 5.2549e-02, -1.3360e-01, -8.9580e-03, 1.6795e-01, 2.5971e-01,\n", + " 2.5812e-01, 1.6916e-01, 2.7376e-01, 3.0628e-01, 1.9087e-01,\n", + " 1.9834e-01, -9.1580e-03, -7.8009e-04, 4.9871e-02, -3.0643e-01,\n", + " -2.9256e-01, -2.7082e-01, -2.5832e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002909241011366248\n", + "Grad encoder.fc1.bias: 0.0007854810683056712\n", + "Grad encoder.encoder.0.weight: 9.531915566185489e-05\n", + "Grad encoder.encoder.0.bias: 0.0005490155890583992\n", + "Grad encoder.encoder.2.weight: 5.416182102635503e-05\n", + "Grad encoder.encoder.2.bias: 0.0004155667847953737\n", + "Grad encoder.encoder.4.weight: 9.956280700862408e-05\n", + "Grad encoder.encoder.4.bias: 0.0006028131465427577\n", + "Grad decoder.fc1.0.weight: 4.902435466647148e-05\n", + "Grad decoder.fc1.0.bias: 0.0004035423626191914\n", + "Grad decoder.fc1.2.weight: 5.3813899285160005e-05\n", + "Grad decoder.fc1.2.bias: 0.0004303809837438166\n", + "Grad decoder.fc1.4.weight: 4.994399205315858e-05\n", + "Grad decoder.fc1.4.bias: 0.0005106115131638944\n", + "Grad decoder.fc2.weight: 0.0001715483667794615\n", + "Grad decoder.fc2.bias: 0.0019218814559280872\n", + "Grad _memory_unit.weight_ih_l0: 1.311190499109216e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.5842280340148136e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.8624770746100694e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.710339908342576e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.907453593565151e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.5754171878797933e-05\n", + "Data X Sample: tensor([[1.5340, 1.6692, 1.8648, 2.0029, 2.1275, 2.2998, 2.4589, 2.4985, 2.5289,\n", + " 2.6792, 2.6869, 2.7187, 2.5877, 2.5302, 2.4891, 2.4479, 2.3476, 2.5360,\n", + " 2.5668, 2.4641, 2.4830, 2.4372, 2.3303, 2.3897, 2.3836, 2.4082, 2.3390,\n", + " 2.3533, 2.2029, 2.2500, 2.2887, 2.2797, 2.2308, 1.4395, 1.9487, 1.7828,\n", + " 1.6656, 1.5027, 1.5276, 1.6143, 1.2218, 0.6353, 0.7276, 1.2371, 1.8354,\n", + " 2.0414, 1.3326, 1.9704]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.7591, 0.7417, -0.2944, 0.2570, -0.0468, -0.6359, -0.5877, -0.3053,\n", + " 0.2514, -0.2663, -0.1102, -0.3966, 0.8176, -0.3451, -0.5775, 0.4477,\n", + " -0.1345, -0.4700, 0.3924, -0.6472, -0.8405, -0.0088, 0.8325, 0.8460,\n", + " -0.6556, -0.4144, 0.5064, -0.9604, 0.3245, 0.6690, 0.3450, -0.0360,\n", + " -0.2845, 0.4138, -0.4177, -0.2748, -0.5085, -0.0751, 0.0040, -0.0339,\n", + " -0.2576, -0.1370, 0.6318]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3606, 0.3195, 0.1187, 0.2494, 0.1261, -0.1580, -0.3463, -0.3808,\n", + " -0.2076, -0.2677, -0.2583, 0.1401, 0.1385, 0.2259, 0.1970, 0.2836,\n", + " 0.2260, 0.0642, 0.1120, 0.0672, 0.0393, 0.0959, 0.0112, -0.0085,\n", + " 0.0152, 0.0462, -0.1183, -0.0108, 0.1562, 0.2350, 0.2332, 0.1545,\n", + " 0.2449, 0.2754, 0.1726, 0.1732, -0.0111, 0.0006, 0.0503, -0.2774,\n", + " -0.2625, -0.2363, -0.2271]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00023346951638814062\n", + "Grad encoder.fc1.bias: 0.004825593437999487\n", + "Grad encoder.encoder.0.weight: 0.00011533597717061639\n", + "Grad encoder.encoder.0.bias: 0.0035317952279001474\n", + "Grad encoder.encoder.2.weight: 9.814967052079737e-05\n", + "Grad encoder.encoder.2.bias: 0.0021553351543843746\n", + "Grad encoder.encoder.4.weight: 0.0003105212526861578\n", + "Grad encoder.encoder.4.bias: 0.005433590151369572\n", + "Grad decoder.fc1.0.weight: 0.0001502010563854128\n", + "Grad decoder.fc1.0.bias: 0.0016686070011928678\n", + "Grad decoder.fc1.2.weight: 0.0001689042546786368\n", + "Grad decoder.fc1.2.bias: 0.0011220303131267428\n", + "Grad decoder.fc1.4.weight: 0.00012701161904260516\n", + "Grad decoder.fc1.4.bias: 0.000839988118968904\n", + "Grad decoder.fc2.weight: 0.00027209921972826123\n", + "Grad decoder.fc2.bias: 0.0017154177185148\n", + "Grad _memory_unit.weight_ih_l0: 4.510357030085288e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00024645280791446567\n", + "Grad _memory_unit.bias_hh_l0: 0.00012832926586270332\n", + "Grad _memory_unit.weight_ih_l1: 1.6083529772004113e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0004086281405761838\n", + "Grad _memory_unit.bias_hh_l1: 0.00021324898989405483\n", + "Data X Sample: tensor([[ 0.0074, 0.0000, 0.0060, 0.0044, 0.0000, 0.0059, 0.0046, 0.0028,\n", + " 0.0073, 0.0000, -0.0159, -0.0097, 0.0067, -0.0055, 0.0000, -0.0027,\n", + " -0.0047, 0.0019, 0.0021, 0.0000, -0.0049, 0.0031, 0.0096, -0.0057,\n", + " 0.0113, -0.0052, 0.0346, 0.0326, -0.0139, 0.0098, -0.0175, 0.0111,\n", + " -0.0132, -0.0160, 0.0147, 0.0170, 0.0039, 0.0186, 0.0127, -0.0170,\n", + " 0.0000, 0.0100, 0.0000, -0.0029, 0.0159, 0.0057, 0.0204, -0.0235]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.7051, 1.0785, 1.6576, 0.9009, 1.7479, -0.1543, -0.6211, -1.2007,\n", + " -1.7362, -0.6102, -1.0312, 0.5158, -1.0660, 0.8804, 0.4000, 0.3101,\n", + " -0.6594, -0.6003, 0.8913, 0.4908, 0.8722, 0.0289, 0.6340, 0.4902,\n", + " 1.0550, 0.1407, -0.9766, 0.4751, 0.9384, 0.2795, 0.6734, 0.4998,\n", + " 0.4841, 0.6294, 0.2612, 3.0270, -0.1820, 0.2376, -1.1357, -0.8456,\n", + " -0.9446, -1.1334, -0.5989]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 1.1406, 0.7677, 0.2186, 0.5273, -1.0118, -1.2546, -1.8465, -1.6539,\n", + " -1.2933, -1.2744, -1.2333, 0.5219, 0.6492, 0.7730, 0.5809, 0.5357,\n", + " 0.5906, -0.2610, 0.0512, 0.0274, -0.0631, -0.0035, -0.0841, 0.0347,\n", + " -0.0784, -0.1884, 0.4611, 0.8057, 1.5498, 1.3171, 1.1138, 0.7967,\n", + " 0.9587, 0.7569, 0.6323, 0.2808, -0.1496, -0.0337, 0.1306, -1.0042,\n", + " -0.9363, -0.7222, -0.4061]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006370954215526581\n", + "Grad encoder.fc1.bias: 0.001520336139947176\n", + "Grad encoder.encoder.0.weight: 0.0001984065747819841\n", + "Grad encoder.encoder.0.bias: 0.001370562007650733\n", + "Grad encoder.encoder.2.weight: 0.00012951105600222945\n", + "Grad encoder.encoder.2.bias: 0.0011561827268451452\n", + "Grad encoder.encoder.4.weight: 0.00027554482221603394\n", + "Grad encoder.encoder.4.bias: 0.002140175551176071\n", + "Grad decoder.fc1.0.weight: 8.746828098082915e-05\n", + "Grad decoder.fc1.0.bias: 0.0008452371112070978\n", + "Grad decoder.fc1.2.weight: 9.373867214890197e-05\n", + "Grad decoder.fc1.2.bias: 0.0008281368063762784\n", + "Grad decoder.fc1.4.weight: 8.221920870710164e-05\n", + "Grad decoder.fc1.4.bias: 0.0007702306611463428\n", + "Grad decoder.fc2.weight: 0.0002179584844270721\n", + "Grad decoder.fc2.bias: 0.0019103351514786482\n", + "Grad _memory_unit.weight_ih_l0: 2.385582592978608e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.648886821698397e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.976083098677918e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.037361683615018e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00016110320575535297\n", + "Grad _memory_unit.bias_hh_l1: 8.308784163091332e-05\n", + "Data X Sample: tensor([[1.5244, 1.7930, 1.9219, 2.1253, 2.1650, 2.2232, 2.2124, 2.2842, 2.2921,\n", + " 2.4249, 2.3951, 2.3078, 2.2614, 2.2521, 2.3151, 2.1744, 2.1667, 2.2864,\n", + " 2.3851, 2.3525, 2.3677, 2.4326, 2.4556, 2.4603, 2.4624, 2.4813, 2.4668,\n", + " 2.5858, 2.2307, 2.2435, 2.2082, 1.9675, 1.6940, 1.0939, 1.6129, 1.5080,\n", + " 1.4218, 1.4232, 1.4071, 1.3193, 1.3697, 0.7528, 0.7538, 1.3060, 1.8909,\n", + " 2.1615, 1.3734, 1.7984]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6166, 1.0314, 0.4300, -0.6484, -1.5862, -1.2638, -3.3404, -2.3871,\n", + " -1.1750, -1.3007, -1.5583, -0.3490, 1.0929, 0.1038, 0.8724, 0.0348,\n", + " 0.9907, -0.8925, -0.3942, -1.7660, -0.2755, 0.5924, -0.1850, -0.2758,\n", + " -0.9153, 1.7135, 2.2121, 2.0786, 1.9930, 0.6824, 1.1709, 0.4473,\n", + " 1.0705, 0.1975, -0.6808, 0.5740, -0.5002, -0.6480, 0.0000, -0.8434,\n", + " -0.0285, -0.2132, -0.3924]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3056, 0.2676, 0.1030, 0.2152, 0.1086, -0.1438, -0.2995, -0.3289,\n", + " -0.1698, -0.2282, -0.2195, 0.1191, 0.1084, 0.1816, 0.1666, 0.2402,\n", + " 0.1803, 0.0547, 0.1034, 0.0491, 0.0302, 0.0829, 0.0081, -0.0178,\n", + " 0.0081, 0.0365, -0.1050, -0.0154, 0.1355, 0.1965, 0.1949, 0.1343,\n", + " 0.2039, 0.2364, 0.1471, 0.1437, -0.0148, 0.0062, 0.0499, -0.2336,\n", + " -0.2210, -0.1895, -0.1854]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 8.009432349354029e-05\n", + "Grad encoder.fc1.bias: 5.564693856285885e-05\n", + "Grad encoder.encoder.0.weight: 3.0166114811436273e-05\n", + "Grad encoder.encoder.0.bias: 7.922233635326847e-05\n", + "Grad encoder.encoder.2.weight: 3.421578003326431e-05\n", + "Grad encoder.encoder.2.bias: 0.00015966800856404006\n", + "Grad encoder.encoder.4.weight: 0.00011198189167771488\n", + "Grad encoder.encoder.4.bias: 0.0010436965385451913\n", + "Grad decoder.fc1.0.weight: 5.5037282436387613e-05\n", + "Grad decoder.fc1.0.bias: 0.0005624778568744659\n", + "Grad decoder.fc1.2.weight: 8.561667345929891e-05\n", + "Grad decoder.fc1.2.bias: 0.0010948104318231344\n", + "Grad decoder.fc1.4.weight: 7.508901762776077e-05\n", + "Grad decoder.fc1.4.bias: 0.0012065861374139786\n", + "Grad decoder.fc2.weight: 0.00013780337758362293\n", + "Grad decoder.fc2.bias: 0.0019588039722293615\n", + "Grad _memory_unit.weight_ih_l0: 1.5679746866226196e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.0660706367343664e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.08000817312859e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.884993697691243e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00013901852071285248\n", + "Grad _memory_unit.bias_hh_l1: 7.128361176000908e-05\n", + "Data X Sample: tensor([[1.2104, 1.2293, 1.3959, 1.5306, 1.6716, 1.8607, 1.8627, 2.0017, 2.5679,\n", + " 3.8150, 3.9368, 4.0878, 3.8149, 3.8361, 3.5559, 3.4982, 3.3837, 3.3735,\n", + " 3.4011, 3.3586, 3.3393, 3.3221, 2.9616, 2.7466, 2.7007, 2.7582, 2.7439,\n", + " 2.8428, 2.8100, 2.9771, 3.0516, 3.1447, 3.4607, 2.5540, 4.2454, 4.5993,\n", + " 4.7903, 5.0779, 5.6349, 5.5069, 0.8686, 0.4680, 0.5052, 0.8841, 1.3240,\n", + " 1.4753, 0.9994, 1.5326]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2945, 0.4750, 0.3559, 0.5269, 0.0274, 0.3514, -0.2260, -0.4142,\n", + " -0.7913, -0.5645, -0.8627, 0.0040, 0.7300, -0.9941, 0.0627, -0.2963,\n", + " 0.1592, 0.4254, -0.3734, 0.3378, 0.3576, -0.0399, 0.3935, 0.5575,\n", + " -0.5290, 0.3737, 0.1208, -1.5824, -0.0900, -0.1099, -0.2254, -0.4181,\n", + " 0.3613, -0.2071, 0.5384, -0.2609, 0.1653, -0.4102, -0.4418, -0.6211,\n", + " 0.3541, 0.4443, -0.5378]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2397, -0.2428, -0.0239, -0.1392, 0.2176, 0.2579, 0.2083, 0.2565,\n", + " 0.2221, 0.2337, 0.1940, -0.1392, -0.1759, -0.3176, -0.1495, -0.2863,\n", + " -0.1850, -0.0530, -0.0230, -0.1528, -0.0855, -0.0686, -0.0562, -0.0670,\n", + " -0.0521, -0.0194, -0.1026, -0.1846, -0.2781, -0.3550, -0.2610, -0.1817,\n", + " -0.3767, -0.3423, -0.2375, -0.2235, 0.0715, 0.0295, 0.1092, 0.2182,\n", + " 0.3079, 0.2944, 0.2453]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004902639775536954\n", + "Grad encoder.fc1.bias: 0.0004949786234647036\n", + "Grad encoder.encoder.0.weight: 0.00014229572843760252\n", + "Grad encoder.encoder.0.bias: 0.0005785385146737099\n", + "Grad encoder.encoder.2.weight: 8.306903328048065e-05\n", + "Grad encoder.encoder.2.bias: 0.0005369605496525764\n", + "Grad encoder.encoder.4.weight: 0.0001376588479615748\n", + "Grad encoder.encoder.4.bias: 0.0017874905606731772\n", + "Grad decoder.fc1.0.weight: 5.922254058532417e-05\n", + "Grad decoder.fc1.0.bias: 0.0009288756409659982\n", + "Grad decoder.fc1.2.weight: 6.286943971645087e-05\n", + "Grad decoder.fc1.2.bias: 0.0008840701775625348\n", + "Grad decoder.fc1.4.weight: 6.401925202226266e-05\n", + "Grad decoder.fc1.4.bias: 0.0009343563579022884\n", + "Grad decoder.fc2.weight: 0.0001548330910736695\n", + "Grad decoder.fc2.bias: 0.0024558929726481438\n", + "Grad _memory_unit.weight_ih_l0: 9.805671652429737e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.9587666833540425e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.182010211981833e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.5630927161255386e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.000119233169243671\n", + "Grad _memory_unit.bias_hh_l1: 6.229498831089586e-05\n", + "Data X Sample: tensor([[1.6316, 1.7682, 1.9459, 2.0466, 1.9755, 1.8401, 2.2417, 3.9352, 4.4280,\n", + " 4.2084, 4.2731, 4.2903, 4.1123, 3.8988, 3.8358, 3.6391, 3.6070, 3.6269,\n", + " 3.3722, 3.3791, 3.3982, 3.3374, 2.8170, 2.7676, 2.7082, 2.7895, 2.7998,\n", + " 2.8754, 2.8517, 3.0557, 3.0901, 3.0424, 3.4277, 2.5128, 4.2037, 4.6553,\n", + " 4.8611, 5.3562, 5.9011, 5.8870, 1.1741, 0.6890, 0.7195, 1.2314, 1.7759,\n", + " 1.9499, 1.3190, 1.7671]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5513, 0.5124, 0.2166, 0.4638, -0.0934, -0.6624, -0.8109, -1.2260,\n", + " -1.0931, -0.7800, -0.6998, -0.2885, 0.0991, 0.3629, -0.8809, -0.2436,\n", + " 0.6234, 0.5640, -0.1110, -0.2801, 0.2909, 0.3346, 0.0341, 0.5328,\n", + " -0.2523, 0.0842, 1.0625, 0.3602, 0.2827, 1.2531, 0.6138, 0.3203,\n", + " 0.2837, -0.5992, 1.2287, 0.1492, 0.4852, -0.5781, 0.0000, 0.0954,\n", + " 1.1179, 0.0827, -0.0173]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2243, -0.2453, -0.0464, -0.1520, 0.1356, 0.2011, 0.1843, 0.2552,\n", + " 0.1995, 0.2117, 0.2058, -0.1397, -0.1634, -0.2964, -0.1480, -0.2866,\n", + " -0.1932, -0.0621, -0.0283, -0.1502, -0.0784, -0.0485, -0.0618, -0.0726,\n", + " -0.0531, -0.0037, -0.0710, -0.1488, -0.2433, -0.3005, -0.2393, -0.1835,\n", + " -0.3216, -0.3139, -0.2230, -0.2176, 0.0536, 0.0227, 0.0927, 0.2318,\n", + " 0.3168, 0.3033, 0.2337]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007365748751908541\n", + "Grad encoder.fc1.bias: 0.0010559639194980264\n", + "Grad encoder.encoder.0.weight: 0.00020291167311370373\n", + "Grad encoder.encoder.0.bias: 0.0008340517524629831\n", + "Grad encoder.encoder.2.weight: 0.00011727033415809274\n", + "Grad encoder.encoder.2.bias: 0.0007270206697285175\n", + "Grad encoder.encoder.4.weight: 0.00019189744489267468\n", + "Grad encoder.encoder.4.bias: 0.0022672014310956\n", + "Grad decoder.fc1.0.weight: 7.221686246339232e-05\n", + "Grad decoder.fc1.0.bias: 0.001050162361934781\n", + "Grad decoder.fc1.2.weight: 7.432168058585376e-05\n", + "Grad decoder.fc1.2.bias: 0.001108785392716527\n", + "Grad decoder.fc1.4.weight: 6.370905612129718e-05\n", + "Grad decoder.fc1.4.bias: 0.0011340571800246835\n", + "Grad decoder.fc2.weight: 0.0001539799850434065\n", + "Grad decoder.fc2.bias: 0.0024116910062730312\n", + "Grad _memory_unit.weight_ih_l0: 1.218870238517411e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.0766328311292455e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.217181281594094e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.806208835361758e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00012133691052440554\n", + "Grad _memory_unit.bias_hh_l1: 6.24865060672164e-05\n", + "Data X Sample: tensor([[1.5223, 1.8032, 1.8557, 1.9504, 2.0677, 2.3086, 2.4697, 2.3992, 2.5118,\n", + " 2.5797, 2.7821, 2.5746, 2.5699, 2.4920, 2.5017, 2.5341, 2.4671, 2.4315,\n", + " 2.4140, 2.4567, 2.5174, 2.3913, 2.3761, 2.2923, 2.3798, 2.4604, 2.3789,\n", + " 2.3248, 2.2619, 2.3614, 2.3832, 2.3461, 2.2616, 1.4418, 1.9511, 1.7755,\n", + " 1.6263, 1.4338, 1.5656, 1.5803, 1.3507, 0.6930, 0.7518, 1.1883, 1.8314,\n", + " 1.9213, 1.3190, 1.9001]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.9100, 1.1301, -2.0823, 1.3797, 0.9453, 0.2215, -0.6111, -0.8495,\n", + " -0.7102, -0.7608, -0.4837, -0.2817, 0.9264, 0.8982, 0.1301, 0.8739,\n", + " 1.1603, 0.8967, -0.0815, -0.1548, -0.5654, -0.0257, 1.1803, 0.1289,\n", + " -0.1026, 0.3208, -1.2214, 0.7289, 0.5033, 0.4385, 1.1971, -0.4926,\n", + " 1.2363, 1.4185, 0.7530, 1.4035, 0.9958, -0.6532, 0.5659, -0.6547,\n", + " -0.9056, -0.2387, -0.4755]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3459, 0.3149, 0.1142, 0.2631, 0.1486, -0.1638, -0.3098, -0.3652,\n", + " -0.1914, -0.2586, -0.2454, 0.1372, 0.1181, 0.2014, 0.2040, 0.2710,\n", + " 0.1934, 0.0724, 0.1284, 0.0710, 0.0477, 0.1047, 0.0128, -0.0302,\n", + " 0.0156, 0.0405, -0.1204, -0.0160, 0.1475, 0.2313, 0.2278, 0.1564,\n", + " 0.2389, 0.2754, 0.1683, 0.1889, -0.0276, 0.0024, 0.0783, -0.2652,\n", + " -0.2630, -0.2315, -0.2138]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00015249352145474404\n", + "Grad encoder.fc1.bias: 0.001022710814140737\n", + "Grad encoder.encoder.0.weight: 5.617686110781506e-05\n", + "Grad encoder.encoder.0.bias: 0.0006407392211258411\n", + "Grad encoder.encoder.2.weight: 4.4478139898274094e-05\n", + "Grad encoder.encoder.2.bias: 0.0004439860349521041\n", + "Grad encoder.encoder.4.weight: 0.00011514108336996287\n", + "Grad encoder.encoder.4.bias: 0.0008954253862611949\n", + "Grad decoder.fc1.0.weight: 4.675643867813051e-05\n", + "Grad decoder.fc1.0.bias: 0.0004570872406475246\n", + "Grad decoder.fc1.2.weight: 5.932760541327298e-05\n", + "Grad decoder.fc1.2.bias: 0.0005942961433902383\n", + "Grad decoder.fc1.4.weight: 5.242360202828422e-05\n", + "Grad decoder.fc1.4.bias: 0.0006671569426544011\n", + "Grad decoder.fc2.weight: 0.00011645619088085368\n", + "Grad decoder.fc2.bias: 0.0016748018097132444\n", + "Grad _memory_unit.weight_ih_l0: 9.513337317912374e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.62237481365446e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.4515108887280803e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.938529061997542e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.212163473013788e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.762792402994819e-05\n", + "Data X Sample: tensor([[2.5937, 3.1737, 3.3779, 3.6821, 3.8366, 3.9911, 4.1136, 4.0445, 3.9886,\n", + " 4.0662, 4.1526, 3.9534, 3.9214, 3.6316, 3.5710, 3.4681, 3.5740, 3.7527,\n", + " 3.7294, 3.8347, 3.6779, 3.6742, 3.2797, 3.0615, 2.9560, 3.0742, 2.9810,\n", + " 3.0426, 3.0043, 3.1376, 3.2650, 3.2939, 3.5927, 2.5151, 3.8973, 4.2296,\n", + " 4.5032, 4.9268, 5.4320, 5.3225, 2.2145, 1.1590, 1.2005, 2.0839, 3.3180,\n", + " 3.4595, 2.2708, 3.2059]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.9917, -0.4689, -0.3651, -0.1188, 0.1025, 0.3749, 0.2918, 0.9103,\n", + " 0.9171, 0.7391, 0.7828, -1.6969, 0.9545, 0.4297, 0.8364, 0.7435,\n", + " 1.1259, 1.8855, -0.1406, 0.5440, -0.5571, -0.8673, 0.2848, 0.7677,\n", + " 3.7901, 2.0468, 0.1882, 0.6829, -0.4093, -0.9108, -0.7008, -0.6136,\n", + " -0.8722, -0.4095, -0.3049, 0.4746, 0.3523, 0.4444, -0.2095, 0.4811,\n", + " 0.2577, -0.1400, 0.0576]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2402, 0.1764, 0.0779, 0.1395, 0.0406, -0.1314, -0.2411, -0.2612,\n", + " -0.1579, -0.1741, -0.1896, 0.0706, 0.0917, 0.1501, 0.1218, 0.1635,\n", + " 0.0872, 0.0520, 0.0683, 0.0218, 0.0099, 0.0711, -0.0060, -0.0156,\n", + " -0.0140, 0.0163, -0.0469, 0.0183, 0.1537, 0.1816, 0.1447, 0.1129,\n", + " 0.1365, 0.1666, 0.0997, 0.1023, -0.0182, 0.0252, 0.0308, -0.1639,\n", + " -0.1510, -0.1154, -0.1401]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0012066724011674523\n", + "Grad encoder.fc1.bias: 0.00038890488212928176\n", + "Grad encoder.encoder.0.weight: 0.0003253869654145092\n", + "Grad encoder.encoder.0.bias: 0.0006038033752702177\n", + "Grad encoder.encoder.2.weight: 0.00017021389794535935\n", + "Grad encoder.encoder.2.bias: 0.0005470178439281881\n", + "Grad encoder.encoder.4.weight: 0.00024121359456330538\n", + "Grad encoder.encoder.4.bias: 0.0016249879263341427\n", + "Grad decoder.fc1.0.weight: 7.034020381979644e-05\n", + "Grad decoder.fc1.0.bias: 0.0006548039382323623\n", + "Grad decoder.fc1.2.weight: 4.236978566041216e-05\n", + "Grad decoder.fc1.2.bias: 0.0007865391671657562\n", + "Grad decoder.fc1.4.weight: 3.035375993931666e-05\n", + "Grad decoder.fc1.4.bias: 0.0006238054484128952\n", + "Grad decoder.fc2.weight: 8.928222086979076e-05\n", + "Grad decoder.fc2.bias: 0.0016136789927259088\n", + "Grad _memory_unit.weight_ih_l0: 9.752063306223135e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.7577301807468757e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.5328610970755108e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.384449079632759e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.811502968659624e-05\n", + "Grad _memory_unit.bias_hh_l1: 5.032376429880969e-05\n", + "Data X Sample: tensor([[1.6326, 1.7682, 1.9850, 2.0291, 2.1104, 2.1303, 2.0398, 3.4766, 4.3670,\n", + " 4.2921, 4.3968, 4.3663, 4.1411, 4.0243, 3.8434, 3.7854, 3.6982, 3.6250,\n", + " 3.5394, 3.5855, 3.4694, 3.4063, 3.0412, 2.8554, 2.9372, 2.8652, 2.9890,\n", + " 3.0345, 2.9072, 3.1016, 3.1566, 3.2607, 3.7665, 2.8377, 4.6449, 4.9545,\n", + " 5.1817, 5.5867, 6.2433, 6.0488, 1.1645, 0.7149, 0.6649, 1.3290, 1.7997,\n", + " 1.8813, 1.2170, 2.0486]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1436, -1.7934, 1.9923, 0.3222, 1.1041, 0.0879, 0.4850, 0.2572,\n", + " -0.3103, 0.1413, 0.1820, -0.4081, -0.3388, -0.8556, -1.0336, -0.2990,\n", + " -1.1331, -1.2296, 1.0596, -0.4199, -0.8905, 0.4249, -1.4016, -0.1245,\n", + " -0.1722, -0.7041, -0.1575, -0.4749, -0.5718, -0.2302, -0.5234, -0.2482,\n", + " -0.5543, -0.5393, -0.6650, 0.2681, 0.1767, 0.4911, -0.5596, 0.2567,\n", + " 0.2931, -0.0962, 0.7112]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1865, -0.2302, -0.0603, -0.1685, 0.0143, 0.1070, 0.1402, 0.2233,\n", + " 0.1510, 0.1560, 0.1925, -0.1329, -0.1366, -0.2561, -0.1425, -0.2631,\n", + " -0.1937, -0.0662, -0.0343, -0.1307, -0.0623, -0.0174, -0.0693, -0.0702,\n", + " -0.0546, 0.0147, -0.0222, -0.0887, -0.1698, -0.2097, -0.1911, -0.1654,\n", + " -0.2320, -0.2605, -0.1795, -0.1882, 0.0293, 0.0179, 0.0646, 0.2313,\n", + " 0.2963, 0.2849, 0.2044]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006225086399354041\n", + "Grad encoder.fc1.bias: 0.0004899704363197088\n", + "Grad encoder.encoder.0.weight: 0.00017040161765180528\n", + "Grad encoder.encoder.0.bias: 0.0006615949096158147\n", + "Grad encoder.encoder.2.weight: 0.00011012030154233798\n", + "Grad encoder.encoder.2.bias: 0.0007910338463261724\n", + "Grad encoder.encoder.4.weight: 0.00023062736727297306\n", + "Grad encoder.encoder.4.bias: 0.0028109997510910034\n", + "Grad decoder.fc1.0.weight: 9.079409210244194e-05\n", + "Grad decoder.fc1.0.bias: 0.0010873028077185154\n", + "Grad decoder.fc1.2.weight: 0.00010134900367120281\n", + "Grad decoder.fc1.2.bias: 0.0014812410809099674\n", + "Grad decoder.fc1.4.weight: 7.835144060663879e-05\n", + "Grad decoder.fc1.4.bias: 0.0013757080305367708\n", + "Grad decoder.fc2.weight: 0.00015829202311579138\n", + "Grad decoder.fc2.bias: 0.002097430871799588\n", + "Grad _memory_unit.weight_ih_l0: 1.7603771993890405e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.184778173221275e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.653348514693789e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.921343356225407e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002235697174910456\n", + "Grad _memory_unit.bias_hh_l1: 0.00011256770812906325\n", + "Data X Sample: tensor([[1.3059, 1.3589, 1.5973, 1.6989, 1.7570, 1.8902, 2.0229, 2.0159, 2.8194,\n", + " 3.9398, 4.1462, 4.0235, 4.0546, 3.7734, 3.6568, 3.5857, 3.5724, 3.4296,\n", + " 3.4940, 3.3568, 3.4228, 3.3619, 2.8869, 2.7371, 2.6820, 2.8235, 2.7279,\n", + " 2.7245, 2.8343, 3.0491, 3.0271, 3.0811, 3.4541, 2.5585, 4.2724, 4.6845,\n", + " 4.8887, 5.0991, 5.8060, 5.6487, 1.0309, 0.5576, 0.5841, 1.0018, 1.4588,\n", + " 1.7097, 1.0810, 1.5404]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5898, -0.8005, -1.9984, -0.3417, 0.1139, -0.5862, 0.7889, 0.9558,\n", + " 0.7998, 0.7407, 0.3320, -0.1586, 0.9549, -0.6375, -2.0425, -0.2281,\n", + " -1.0832, -1.6415, -1.1254, 1.5659, -1.0684, 0.5940, -0.8406, -0.3500,\n", + " 0.3651, 0.3273, -1.9020, -2.1335, -1.8526, -1.9746, -2.6022, -1.8364,\n", + " -2.6945, -2.1246, 0.7999, -0.8810, 0.4852, 0.0000, 1.1604, 0.5744,\n", + " 0.4567, 0.2194, 0.8646]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2094, -0.2534, -0.0611, -0.1795, 0.0226, 0.1209, 0.1591, 0.2482,\n", + " 0.1681, 0.1687, 0.2164, -0.1451, -0.1552, -0.2862, -0.1531, -0.2900,\n", + " -0.2095, -0.0731, -0.0427, -0.1404, -0.0699, -0.0195, -0.0713, -0.0718,\n", + " -0.0623, 0.0148, -0.0236, -0.0998, -0.1855, -0.2266, -0.2089, -0.1789,\n", + " -0.2535, -0.2895, -0.1949, -0.2070, 0.0327, 0.0214, 0.0707, 0.2578,\n", + " 0.3236, 0.3095, 0.2229]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00032542116241529584\n", + "Grad encoder.fc1.bias: 0.000511573045514524\n", + "Grad encoder.encoder.0.weight: 9.005532774608582e-05\n", + "Grad encoder.encoder.0.bias: 0.0004820381000172347\n", + "Grad encoder.encoder.2.weight: 5.6774606491671875e-05\n", + "Grad encoder.encoder.2.bias: 0.000495636893901974\n", + "Grad encoder.encoder.4.weight: 0.00012072649406036362\n", + "Grad encoder.encoder.4.bias: 0.0011470334138721228\n", + "Grad decoder.fc1.0.weight: 4.697474287240766e-05\n", + "Grad decoder.fc1.0.bias: 0.0004975253250449896\n", + "Grad decoder.fc1.2.weight: 4.756131238536909e-05\n", + "Grad decoder.fc1.2.bias: 0.0005122247966937721\n", + "Grad decoder.fc1.4.weight: 4.0207025449490175e-05\n", + "Grad decoder.fc1.4.bias: 0.0004890066338703036\n", + "Grad decoder.fc2.weight: 0.00012491451343521476\n", + "Grad decoder.fc2.bias: 0.0017880145460367203\n", + "Grad _memory_unit.weight_ih_l0: 1.1478962733235676e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.6881759519455954e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.9518942028516904e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.5553424570243806e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010902674694079906\n", + "Grad _memory_unit.bias_hh_l1: 5.6379310990450904e-05\n", + "Data X Sample: tensor([[1.6348, 1.8876, 1.9234, 2.0182, 2.1753, 2.3337, 2.5637, 2.4758, 2.5045,\n", + " 2.6097, 2.6965, 2.7187, 2.5721, 2.4756, 2.4916, 2.4876, 2.4026, 2.4180,\n", + " 2.3603, 2.3674, 2.3775, 2.4234, 2.4508, 2.3897, 2.4530, 2.4787, 2.4375,\n", + " 2.4553, 2.1301, 2.3483, 2.2677, 2.0780, 1.8106, 1.2106, 1.6717, 1.6272,\n", + " 1.5496, 1.5133, 1.4515, 1.4299, 1.2075, 0.7866, 0.7498, 1.3032, 1.8592,\n", + " 2.0357, 1.3938, 1.9313]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4892, 0.2067, 1.0081, -0.0203, -0.1128, -0.4567, -0.1822, -0.2380,\n", + " -0.2221, -0.2801, -0.2180, 0.3449, 0.6873, 0.0999, 0.8147, 0.0688,\n", + " -0.4272, 0.0305, -1.3755, -0.9042, 0.2631, -0.9252, -0.8500, -1.3026,\n", + " -1.1315, -0.2532, 1.0501, 0.4017, -0.1403, -0.5762, 1.0256, 0.3875,\n", + " 0.0080, 1.2099, 1.1101, -0.1676, 0.3652, 0.0000, 0.0073, -0.3485,\n", + " -0.4793, 0.0499, -0.2222]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3736, 0.3136, 0.1325, 0.2885, 0.1348, -0.1809, -0.3427, -0.4111,\n", + " -0.2106, -0.2695, -0.2609, 0.1459, 0.1545, 0.2286, 0.2140, 0.2798,\n", + " 0.1918, 0.0917, 0.1265, 0.0753, 0.0397, 0.1043, 0.0156, -0.0137,\n", + " 0.0132, 0.0389, -0.0948, 0.0172, 0.1971, 0.2619, 0.2424, 0.1745,\n", + " 0.2502, 0.3003, 0.1771, 0.1961, -0.0294, 0.0205, 0.0500, -0.2734,\n", + " -0.2837, -0.2304, -0.2403]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 5.061835327069275e-05\n", + "Grad encoder.fc1.bias: 0.00011247358634136617\n", + "Grad encoder.encoder.0.weight: 2.7599231543717906e-05\n", + "Grad encoder.encoder.0.bias: 0.0001341161405434832\n", + "Grad encoder.encoder.2.weight: 3.154407750116661e-05\n", + "Grad encoder.encoder.2.bias: 0.00024170902906917036\n", + "Grad encoder.encoder.4.weight: 7.160438690334558e-05\n", + "Grad encoder.encoder.4.bias: 0.0005788427079096437\n", + "Grad decoder.fc1.0.weight: 3.3698186598485336e-05\n", + "Grad decoder.fc1.0.bias: 0.00031707470770925283\n", + "Grad decoder.fc1.2.weight: 5.821218292112462e-05\n", + "Grad decoder.fc1.2.bias: 0.0007796159479767084\n", + "Grad decoder.fc1.4.weight: 4.7808112867642194e-05\n", + "Grad decoder.fc1.4.bias: 0.000802501745056361\n", + "Grad decoder.fc2.weight: 0.0001257388066733256\n", + "Grad decoder.fc2.bias: 0.002055900637060404\n", + "Grad _memory_unit.weight_ih_l0: 1.2529837476904504e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.8940601370995864e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.0312545530032367e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.0796508073981386e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.689256017329171e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.909470615326427e-05\n", + "Data X Sample: tensor([[1.5117, 1.8163, 1.9384, 2.1056, 2.2197, 2.3528, 2.3295, 2.4176, 2.5069,\n", + " 2.5339, 2.4427, 2.5142, 2.4656, 2.4811, 2.3731, 2.3768, 2.3963, 2.4160,\n", + " 2.4347, 2.4567, 2.4340, 2.4525, 2.5062, 2.5004, 2.5712, 2.6250, 2.5094,\n", + " 2.5940, 2.2411, 2.3450, 2.3237, 2.3267, 2.1736, 1.4372, 1.8776, 1.7245,\n", + " 1.5968, 1.5318, 1.6036, 1.5945, 1.2838, 0.7109, 0.7215, 1.2687, 1.7720,\n", + " 2.2301, 1.4210, 2.0174]], device='cuda:0')\n", + "Data Y Sample: tensor([[-7.8352e-02, 3.5252e-01, -1.9205e-01, 6.7102e-01, -3.0667e-02,\n", + " -7.2114e-01, -1.0562e-01, -3.6877e-01, 1.8932e-01, -2.7444e-02,\n", + " -3.7440e-01, -2.6875e-01, 3.2641e-01, 3.7307e-01, -3.9832e-01,\n", + " 7.7864e-01, 1.1274e+00, 3.1940e-01, 3.7473e-01, 5.8903e-01,\n", + " 9.8901e-01, 4.9241e-01, 5.7086e-01, -1.4537e-01, 2.3477e-01,\n", + " 1.7591e-01, -1.2137e+00, -3.7075e-01, -3.9325e-01, -4.5283e-01,\n", + " 2.5740e-01, -4.0830e-01, 3.3525e-01, -1.1448e-03, -5.6472e-01,\n", + " 7.0158e-01, 9.7765e-01, 7.8158e-01, -1.8131e+00, 4.2203e-02,\n", + " -2.4729e-01, -3.7265e-01, -2.0459e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3945, 0.3387, 0.1453, 0.3062, 0.1451, -0.1939, -0.3618, -0.4358,\n", + " -0.2249, -0.2880, -0.2768, 0.1545, 0.1685, 0.2477, 0.2286, 0.2966,\n", + " 0.2038, 0.0984, 0.1347, 0.0865, 0.0422, 0.1109, 0.0200, -0.0161,\n", + " 0.0150, 0.0403, -0.0961, 0.0197, 0.2106, 0.2816, 0.2619, 0.1863,\n", + " 0.2642, 0.3217, 0.1869, 0.2087, -0.0301, 0.0248, 0.0531, -0.2931,\n", + " -0.3014, -0.2512, -0.2605]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002528843469917774\n", + "Grad encoder.fc1.bias: 0.00025348662165924907\n", + "Grad encoder.encoder.0.weight: 7.200300751719624e-05\n", + "Grad encoder.encoder.0.bias: 0.00020340370247140527\n", + "Grad encoder.encoder.2.weight: 4.467119288165122e-05\n", + "Grad encoder.encoder.2.bias: 0.00022844479826744646\n", + "Grad encoder.encoder.4.weight: 7.869191176723689e-05\n", + "Grad encoder.encoder.4.bias: 0.0006083215121179819\n", + "Grad decoder.fc1.0.weight: 3.4357086406089365e-05\n", + "Grad decoder.fc1.0.bias: 0.0003538921591825783\n", + "Grad decoder.fc1.2.weight: 4.260791320120916e-05\n", + "Grad decoder.fc1.2.bias: 0.0005009382148273289\n", + "Grad decoder.fc1.4.weight: 4.0917147998698056e-05\n", + "Grad decoder.fc1.4.bias: 0.0006164340302348137\n", + "Grad decoder.fc2.weight: 0.0001265472819795832\n", + "Grad decoder.fc2.bias: 0.0023277252912521362\n", + "Grad _memory_unit.weight_ih_l0: 8.344673005922232e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.2549485947820358e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.2608657925738953e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.695254690683214e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.753796671750024e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.9102342270780355e-05\n", + "Data X Sample: tensor([[1.3398, 1.6196, 1.7370, 1.8892, 1.9465, 1.9874, 2.1631, 2.0670, 2.9878,\n", + " 3.8182, 4.0954, 4.1618, 3.9259, 3.6780, 3.6744, 3.5474, 3.4812, 3.3929,\n", + " 3.3680, 3.2973, 3.4645, 3.3894, 2.9062, 2.8707, 2.8377, 2.8444, 2.9170,\n", + " 3.0671, 2.9974, 3.0557, 3.1636, 3.2690, 3.5509, 2.5585, 4.1866, 4.6164,\n", + " 4.9634, 5.3031, 5.6412, 5.6828, 1.1263, 0.6452, 0.6164, 1.1568, 1.8156,\n", + " 1.8584, 1.1830, 1.6499]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.8905, -0.2848, 0.3074, 0.1867, -0.5524, -0.5979, -0.1078, 0.3145,\n", + " 0.2462, 0.2814, 0.5078, -0.1432, -0.3290, -1.2021, -0.3409, 0.6424,\n", + " 0.0692, -0.5636, 0.9213, 0.3623, 0.3405, 1.0080, 0.3485, 0.4380,\n", + " 0.0240, -0.2928, -0.9110, -0.1425, 0.0284, -0.0677, 0.3050, -0.5314,\n", + " -0.1951, -1.2110, -1.2470, -0.2776, -0.9960, 0.8855, 0.7827, 0.6095,\n", + " 0.5415, 0.4743, 1.2530]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2253, -0.2709, -0.0581, -0.1874, 0.0183, 0.1194, 0.1699, 0.2628,\n", + " 0.1826, 0.1778, 0.2235, -0.1582, -0.1762, -0.3108, -0.1597, -0.3081,\n", + " -0.2214, -0.0796, -0.0587, -0.1438, -0.0737, -0.0144, -0.0739, -0.0770,\n", + " -0.0701, 0.0203, -0.0163, -0.1040, -0.1779, -0.2309, -0.2211, -0.1846,\n", + " -0.2631, -0.3074, -0.1904, -0.2074, 0.0228, 0.0275, 0.0706, 0.2757,\n", + " 0.3386, 0.3273, 0.2343]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00035002673394046724\n", + "Grad encoder.fc1.bias: 0.0011830348521471024\n", + "Grad encoder.encoder.0.weight: 9.048255014931783e-05\n", + "Grad encoder.encoder.0.bias: 0.0008603913011029363\n", + "Grad encoder.encoder.2.weight: 6.159773329272866e-05\n", + "Grad encoder.encoder.2.bias: 0.0007583624683320522\n", + "Grad encoder.encoder.4.weight: 0.00015577292651869357\n", + "Grad encoder.encoder.4.bias: 0.002752132248133421\n", + "Grad decoder.fc1.0.weight: 6.41030928818509e-05\n", + "Grad decoder.fc1.0.bias: 0.0008899334352463484\n", + "Grad decoder.fc1.2.weight: 9.85407386906445e-05\n", + "Grad decoder.fc1.2.bias: 0.0011722738854587078\n", + "Grad decoder.fc1.4.weight: 8.729636465432122e-05\n", + "Grad decoder.fc1.4.bias: 0.0013056911993771791\n", + "Grad decoder.fc2.weight: 0.00017606867186259478\n", + "Grad decoder.fc2.bias: 0.001734923105686903\n", + "Grad _memory_unit.weight_ih_l0: 1.558036638016347e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00016713759396225214\n", + "Grad _memory_unit.bias_hh_l0: 8.39914646348916e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.6759466790244915e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.000287947419565171\n", + "Grad _memory_unit.bias_hh_l1: 0.00014833724708296359\n", + "Data X Sample: tensor([[1.1786, 1.3837, 1.5267, 1.5940, 1.7996, 1.9035, 1.8734, 1.9648, 3.5834,\n", + " 4.1373, 3.9781, 3.8833, 3.7838, 3.6126, 3.4172, 3.3232, 3.2753, 3.4335,\n", + " 3.3020, 3.3493, 3.3443, 3.2746, 2.8869, 2.8058, 2.7683, 2.9410, 2.9250,\n", + " 3.0059, 2.9974, 3.0950, 3.1706, 3.2718, 3.3837, 2.3846, 4.0076, 4.4364,\n", + " 4.7726, 5.2872, 5.7616, 5.6771, 0.9211, 0.5317, 0.5598, 1.0046, 1.5341,\n", + " 1.5782, 0.9926, 1.6108]], device='cuda:0')\n", + "Data Y Sample: tensor([[-5.4781e-01, -5.3114e-01, 1.0222e+00, 1.1639e+00, -8.9680e-02,\n", + " 1.0944e+00, 2.7108e-01, 2.7173e-01, 6.5658e-01, 3.1229e-03,\n", + " 3.9996e-02, 6.1302e-01, -1.4896e+00, 3.1604e-01, 3.4976e-01,\n", + " -1.3248e-01, -3.9400e-01, 2.7016e+00, -7.4633e-01, -1.4106e+00,\n", + " 3.6429e+00, -6.3120e-01, 2.8960e-02, 1.0116e-01, -5.4367e-01,\n", + " 1.4353e+00, 1.1433e+00, -6.6046e-01, -1.8033e+00, -2.4511e-01,\n", + " -2.0829e-01, -3.6341e-01, 1.7293e-01, 9.1353e-01, -6.0974e-01,\n", + " -5.1351e-01, 3.4389e-01, -3.8524e-02, -9.1211e-01, -5.6653e-01,\n", + " 1.3125e-02, -2.8552e-01, -7.3354e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2502, -0.2901, -0.0530, -0.1897, 0.0461, 0.1417, 0.1889, 0.2838,\n", + " 0.2087, 0.2001, 0.2358, -0.1699, -0.2003, -0.3448, -0.1677, -0.3299,\n", + " -0.2301, -0.0824, -0.0684, -0.1516, -0.0819, -0.0216, -0.0755, -0.0810,\n", + " -0.0739, 0.0194, -0.0226, -0.1252, -0.1914, -0.2591, -0.2433, -0.1936,\n", + " -0.2957, -0.3375, -0.2009, -0.2164, 0.0276, 0.0333, 0.0792, 0.2940,\n", + " 0.3567, 0.3449, 0.2520]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00024403256247751415\n", + "Grad encoder.fc1.bias: 0.0004395553842186928\n", + "Grad encoder.encoder.0.weight: 7.13501067366451e-05\n", + "Grad encoder.encoder.0.bias: 0.0005146136973053217\n", + "Grad encoder.encoder.2.weight: 5.140374560141936e-05\n", + "Grad encoder.encoder.2.bias: 0.0005610605585388839\n", + "Grad encoder.encoder.4.weight: 0.00011846169218188152\n", + "Grad encoder.encoder.4.bias: 0.001465307897888124\n", + "Grad decoder.fc1.0.weight: 4.5394292101264e-05\n", + "Grad decoder.fc1.0.bias: 0.0005478969542309642\n", + "Grad decoder.fc1.2.weight: 5.6568271247670054e-05\n", + "Grad decoder.fc1.2.bias: 0.0007789027877151966\n", + "Grad decoder.fc1.4.weight: 5.661912291543558e-05\n", + "Grad decoder.fc1.4.bias: 0.0009874522220343351\n", + "Grad decoder.fc2.weight: 0.00014578581613022834\n", + "Grad decoder.fc2.bias: 0.0021194396540522575\n", + "Grad _memory_unit.weight_ih_l0: 1.5065688785398379e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.803363794460893e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.441434819251299e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.102005732420366e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011517472739797086\n", + "Grad _memory_unit.bias_hh_l1: 5.823415995109826e-05\n", + "Data X Sample: tensor([[1.5584, 1.7595, 1.9955, 2.0597, 2.1548, 2.3130, 2.2925, 2.3921, 2.4410,\n", + " 2.5323, 2.5823, 2.5181, 2.5166, 2.4211, 2.4589, 2.4137, 2.3523, 2.3793,\n", + " 2.4223, 2.3749, 2.5002, 2.5719, 2.6604, 2.5252, 2.6688, 2.6511, 2.6054,\n", + " 2.7163, 2.4041, 2.3745, 2.2327, 2.3571, 2.2880, 1.5058, 1.9536, 1.7634,\n", + " 1.6459, 1.5027, 1.5846, 1.6058, 1.2504, 0.7468, 0.7579, 1.2687, 1.9662,\n", + " 2.0814, 1.4550, 1.8688]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3647, 0.8460, 0.7215, -0.1193, -0.8281, 0.3836, -0.4639, -0.4989,\n", + " -0.7261, -0.1508, -0.1235, 0.7825, 0.0768, 0.5707, 0.5242, 0.3877,\n", + " -0.0754, -1.2123, 1.1478, -0.1678, -0.0472, 0.5270, -0.5147, -0.2513,\n", + " -0.6993, 0.2839, 0.1484, 0.3317, 1.1030, 0.7237, -0.3831, 0.1725,\n", + " 0.9970, 0.5741, 0.5613, 0.2246, -0.8350, -0.8198, 0.0040, -0.2541,\n", + " -0.0532, -0.2489, -1.1287]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3982, 0.3383, 0.1497, 0.3027, 0.1355, -0.1976, -0.3657, -0.4424,\n", + " -0.2242, -0.2791, -0.2736, 0.1462, 0.1871, 0.2582, 0.2271, 0.2933,\n", + " 0.1969, 0.0977, 0.1400, 0.0870, 0.0414, 0.1078, 0.0238, -0.0174,\n", + " 0.0095, 0.0401, -0.0836, 0.0419, 0.2314, 0.2912, 0.2657, 0.1907,\n", + " 0.2590, 0.3164, 0.1869, 0.2062, -0.0308, 0.0358, 0.0379, -0.2942,\n", + " -0.2919, -0.2492, -0.2680]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 7.448741234838963e-05\n", + "Grad encoder.fc1.bias: 0.000449951970949769\n", + "Grad encoder.encoder.0.weight: 3.04388340737205e-05\n", + "Grad encoder.encoder.0.bias: 0.00032408128026872873\n", + "Grad encoder.encoder.2.weight: 3.6086094041820616e-05\n", + "Grad encoder.encoder.2.bias: 0.0003640295471996069\n", + "Grad encoder.encoder.4.weight: 9.857883560471237e-05\n", + "Grad encoder.encoder.4.bias: 0.001062565017491579\n", + "Grad decoder.fc1.0.weight: 4.142578472965397e-05\n", + "Grad decoder.fc1.0.bias: 0.0006232967134565115\n", + "Grad decoder.fc1.2.weight: 4.3726860894821584e-05\n", + "Grad decoder.fc1.2.bias: 0.000672993017360568\n", + "Grad decoder.fc1.4.weight: 4.40080402768217e-05\n", + "Grad decoder.fc1.4.bias: 0.0006888768402859569\n", + "Grad decoder.fc2.weight: 0.0001379307359457016\n", + "Grad decoder.fc2.bias: 0.0017689920496195555\n", + "Grad _memory_unit.weight_ih_l0: 1.3443258467304986e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.263485581963323e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.7228179533267394e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.269721441436559e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001211326671182178\n", + "Grad _memory_unit.bias_hh_l1: 6.197873153723776e-05\n", + "Data X Sample: tensor([[1.6050, 1.7842, 1.9699, 1.9985, 2.0967, 2.1642, 2.3048, 2.3906, 2.4093,\n", + " 2.5039, 2.4458, 2.5259, 2.4767, 2.3366, 2.3201, 2.2647, 2.2281, 2.2323,\n", + " 2.2984, 2.3228, 2.3407, 2.3561, 2.2700, 2.2866, 2.2972, 2.3690, 2.3789,\n", + " 2.3329, 2.1266, 2.2860, 2.2152, 2.1029, 1.7270, 1.1076, 1.5442, 1.4934,\n", + " 1.4316, 1.4205, 1.4008, 1.3391, 1.2600, 0.7428, 0.7457, 1.2744, 1.8711,\n", + " 2.0242, 1.4278, 2.1737]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.8038, 1.2073, -0.3587, 0.9084, 1.7604, -0.1937, -1.3271, -0.8686,\n", + " -0.1475, -0.7203, -2.8798, 0.1481, 1.3386, 0.1004, 1.0828, 2.0752,\n", + " 0.0716, 0.1552, 0.7386, 0.4815, -0.1952, 0.6689, 0.0383, 0.6739,\n", + " 0.6271, -0.6236, -0.3474, -0.0874, 0.1740, 0.5566, -1.5106, 0.4119,\n", + " -0.5866, -0.1366, 0.9758, -0.9551, -0.4931, 0.6423, -1.0672, -0.9008,\n", + " -1.2416, -0.0663, 0.2611]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3481, 0.2727, 0.1265, 0.2493, 0.0875, -0.1737, -0.3282, -0.3851,\n", + " -0.2010, -0.2347, -0.2419, 0.1141, 0.1639, 0.2248, 0.1847, 0.2434,\n", + " 0.1524, 0.0792, 0.1164, 0.0640, 0.0279, 0.0881, 0.0160, -0.0093,\n", + " -0.0077, 0.0290, -0.0551, 0.0534, 0.2225, 0.2580, 0.2236, 0.1709,\n", + " 0.2158, 0.2596, 0.1619, 0.1672, -0.0333, 0.0369, 0.0133, -0.2506,\n", + " -0.2357, -0.1925, -0.2229]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 6.269059667829424e-05\n", + "Grad encoder.fc1.bias: 0.00021093207760713995\n", + "Grad encoder.encoder.0.weight: 3.495153214316815e-05\n", + "Grad encoder.encoder.0.bias: 0.00019476933812256902\n", + "Grad encoder.encoder.2.weight: 3.401605135877617e-05\n", + "Grad encoder.encoder.2.bias: 0.0002515114319976419\n", + "Grad encoder.encoder.4.weight: 8.566182805225253e-05\n", + "Grad encoder.encoder.4.bias: 0.0006284393602982163\n", + "Grad decoder.fc1.0.weight: 4.19590032834094e-05\n", + "Grad decoder.fc1.0.bias: 0.0004047477850690484\n", + "Grad decoder.fc1.2.weight: 4.2919142288155854e-05\n", + "Grad decoder.fc1.2.bias: 0.0004814612620975822\n", + "Grad decoder.fc1.4.weight: 3.925905184587464e-05\n", + "Grad decoder.fc1.4.bias: 0.0005443991394713521\n", + "Grad decoder.fc2.weight: 0.0001297176640946418\n", + "Grad decoder.fc2.bias: 0.0022017667070031166\n", + "Grad _memory_unit.weight_ih_l0: 9.487984243605752e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.0710274839075282e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.1532207281561568e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.6485976124822628e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.6653207138879225e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.8790911528631113e-05\n", + "Data X Sample: tensor([[ 0.0064, 0.0204, 0.0135, 0.0153, 0.0137, 0.0206, 0.0169, 0.0142,\n", + " 0.0391, 0.0126, 0.0286, 0.0234, 0.0133, 0.0164, -0.0025, 0.0150,\n", + " -0.1085, -0.1315, -0.1507, -0.1525, -0.1472, -0.1072, -0.1831, -0.1737,\n", + " -0.1426, -0.2978, -0.3064, -0.5384, -0.1075, -0.0753, -0.1225, -0.0387,\n", + " -0.0440, -0.0549, -0.0392, 0.0024, -0.0079, -0.0265, -0.0254, -0.0227,\n", + " -0.0191, 0.0040, -0.0141, 0.0000, 0.0040, 0.0572, 0.0476, 0.0547]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 7.7951e-01, 1.4982e+00, 9.3185e-01, -1.4913e-01, 7.5483e-01,\n", + " -9.6971e-01, -1.7970e-01, -9.8373e-01, -4.1926e-01, -6.0157e-01,\n", + " -3.3077e-01, 1.5570e+00, 6.4801e-01, 1.6436e+00, 6.7951e-01,\n", + " -6.3247e-01, 7.0403e-01, -1.8974e-01, 7.8995e-01, 1.3911e+00,\n", + " 5.7383e-01, 2.8052e-01, 1.2149e+00, 8.8629e-01, -6.6687e-01,\n", + " 1.1754e-02, -2.4289e-01, -7.0769e-01, -1.1258e-01, 3.2459e-01,\n", + " 5.4114e-01, -6.2376e-01, 3.2287e-01, 4.4609e-01, 3.9511e-01,\n", + " 3.1387e-01, -2.6554e-04, -6.5324e-01, 1.1148e+00, -5.0483e-01,\n", + " -5.5248e-01, -2.6734e-01, -3.3642e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.6915, 0.5127, 0.2368, 0.5464, 0.1890, -0.3129, -0.6291, -0.7752,\n", + " -0.3518, -0.4461, -0.3964, 0.2721, 0.3533, 0.4526, 0.3667, 0.4601,\n", + " 0.3600, 0.1589, 0.2433, 0.1606, 0.0566, 0.1317, 0.0412, 0.0443,\n", + " 0.0168, 0.0798, -0.1131, 0.1466, 0.4225, 0.4890, 0.4624, 0.3657,\n", + " 0.4671, 0.5433, 0.3120, 0.3280, -0.0657, 0.0457, 0.0132, -0.4989,\n", + " -0.5027, -0.3996, -0.4302]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002804534451570362\n", + "Grad encoder.fc1.bias: 0.00014064328570384532\n", + "Grad encoder.encoder.0.weight: 7.302744779735804e-05\n", + "Grad encoder.encoder.0.bias: 0.00020725795184262097\n", + "Grad encoder.encoder.2.weight: 4.790754246641882e-05\n", + "Grad encoder.encoder.2.bias: 0.00023830981808714569\n", + "Grad encoder.encoder.4.weight: 9.516861609881744e-05\n", + "Grad encoder.encoder.4.bias: 0.0008993442170321941\n", + "Grad decoder.fc1.0.weight: 3.561066841939464e-05\n", + "Grad decoder.fc1.0.bias: 0.0003639219212345779\n", + "Grad decoder.fc1.2.weight: 5.0193593779113144e-05\n", + "Grad decoder.fc1.2.bias: 0.0006012851954437792\n", + "Grad decoder.fc1.4.weight: 4.690196146839298e-05\n", + "Grad decoder.fc1.4.bias: 0.0007499533821828663\n", + "Grad decoder.fc2.weight: 0.00015248199633788317\n", + "Grad decoder.fc2.bias: 0.0026845831889659166\n", + "Grad _memory_unit.weight_ih_l0: 9.791719094209839e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.210069553460926e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.6608391888439655e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.7846522243635263e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.802153464173898e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.9862681913073175e-05\n", + "Data X Sample: tensor([[1.3123, 1.5716, 1.7235, 1.7908, 1.9089, 2.0405, 2.1615, 2.0514, 3.7909,\n", + " 4.4074, 4.2668, 4.2124, 4.1633, 4.0515, 3.7551, 3.6992, 3.6180, 3.6521,\n", + " 3.6923, 3.5186, 3.5160, 3.4568, 3.0604, 2.9566, 2.8453, 2.8600, 2.9490,\n", + " 2.9243, 2.9210, 3.1016, 3.2021, 3.3878, 3.8193, 2.8171, 4.6449, 4.9569,\n", + " 5.1954, 5.6079, 6.0785, 6.0090, 1.0213, 0.5596, 0.6245, 1.0879, 1.6412,\n", + " 1.8012, 1.1150, 1.7202]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4421, 0.9692, -0.1540, 0.7611, 0.4589, 0.0214, -0.3046, -0.1726,\n", + " -0.2616, -0.8464, -0.1565, 0.5490, -0.9715, 1.3173, 0.7002, 0.5442,\n", + " 0.8062, 0.5011, 0.2497, 0.0874, 0.2430, 0.2179, 0.1750, -0.3917,\n", + " 0.4072, 0.3809, -1.0137, 0.5577, 0.8803, -0.1570, 0.0197, -0.3186,\n", + " 0.6551, 0.5149, -0.5137, 1.2167, -0.6586, -0.4102, 0.1425, -1.2964,\n", + " -0.7139, -0.0958, -0.6981]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3223, -0.3487, -0.0360, -0.1988, 0.0874, 0.1876, 0.2382, 0.3526,\n", + " 0.2920, 0.2665, 0.2890, -0.1924, -0.2552, -0.4180, -0.1985, -0.3988,\n", + " -0.2429, -0.0882, -0.0701, -0.1709, -0.0938, -0.0228, -0.0728, -0.0867,\n", + " -0.0986, 0.0227, -0.0396, -0.1600, -0.2217, -0.3279, -0.3017, -0.2289,\n", + " -0.3711, -0.4062, -0.2318, -0.2533, 0.0138, 0.0409, 0.0900, 0.3548,\n", + " 0.4227, 0.4077, 0.3111]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005440464010462165\n", + "Grad encoder.fc1.bias: 0.0006381567800417542\n", + "Grad encoder.encoder.0.weight: 0.00015018928388599306\n", + "Grad encoder.encoder.0.bias: 0.0007499343482777476\n", + "Grad encoder.encoder.2.weight: 0.00010486874089110643\n", + "Grad encoder.encoder.2.bias: 0.0006837020628154278\n", + "Grad encoder.encoder.4.weight: 0.00022277611424215138\n", + "Grad encoder.encoder.4.bias: 0.0012659175554290414\n", + "Grad decoder.fc1.0.weight: 6.811944331275299e-05\n", + "Grad decoder.fc1.0.bias: 0.0005817590281367302\n", + "Grad decoder.fc1.2.weight: 0.00011046844883821905\n", + "Grad decoder.fc1.2.bias: 0.0012727149296551943\n", + "Grad decoder.fc1.4.weight: 9.360362309962511e-05\n", + "Grad decoder.fc1.4.bias: 0.0012265159748494625\n", + "Grad decoder.fc2.weight: 0.00016918133769650012\n", + "Grad decoder.fc2.bias: 0.0022230211179703474\n", + "Grad _memory_unit.weight_ih_l0: 3.077994551858865e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.151488246861845e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.3120443074731156e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.6354368755128235e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.355882502859458e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.794730557478033e-05\n", + "Data X Sample: tensor([[1.5255, 1.6692, 1.8437, 2.0226, 2.0609, 2.2261, 2.3141, 2.3977, 2.4044,\n", + " 2.5354, 2.6203, 2.6213, 2.4745, 2.4129, 2.4084, 2.4397, 2.3727, 2.4276,\n", + " 2.3872, 2.4102, 2.3849, 2.4280, 2.3712, 2.3420, 2.3704, 2.4552, 2.3443,\n", + " 2.4227, 2.1821, 2.3745, 2.2327, 2.2355, 2.2594, 1.4807, 1.9266, 1.8315,\n", + " 1.6223, 1.5106, 1.6226, 1.5462, 1.2361, 0.6930, 0.6811, 1.2457, 1.8235,\n", + " 2.1215, 1.3462, 1.9548]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0824, 0.0299, -0.6505, 0.2696, -0.7300, 0.3080, -0.3691, -0.3105,\n", + " 0.6620, 0.5648, 0.9459, 0.9056, 0.3475, -0.2044, 0.6793, 0.9572,\n", + " -0.2328, -0.9519, 0.8366, -0.5937, 0.2994, -0.6154, -1.0086, -0.6849,\n", + " -0.0098, -0.4004, -0.2959, 0.1907, 1.5811, -0.2057, 0.2069, -0.3673,\n", + " 0.4901, -0.1327, 0.2828, -0.8597, -0.6417, 0.0000, -0.4768, 1.2144,\n", + " 0.6951, 0.1564, 0.1343]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3656, 0.2987, 0.1365, 0.2565, 0.0800, -0.1887, -0.3489, -0.4016,\n", + " -0.2069, -0.2431, -0.2538, 0.1187, 0.1911, 0.2503, 0.2004, 0.2559,\n", + " 0.1750, 0.0860, 0.1316, 0.0733, 0.0283, 0.0840, 0.0198, -0.0105,\n", + " -0.0075, 0.0330, -0.0526, 0.0627, 0.2393, 0.2723, 0.2359, 0.1719,\n", + " 0.2286, 0.2747, 0.1667, 0.1694, -0.0351, 0.0364, 0.0043, -0.2659,\n", + " -0.2383, -0.2082, -0.2448]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00015977327711880207\n", + "Grad encoder.fc1.bias: 0.0002373657189309597\n", + "Grad encoder.encoder.0.weight: 4.68741163786035e-05\n", + "Grad encoder.encoder.0.bias: 0.000311700307065621\n", + "Grad encoder.encoder.2.weight: 3.940935857826844e-05\n", + "Grad encoder.encoder.2.bias: 0.0003738493542186916\n", + "Grad encoder.encoder.4.weight: 0.0001264843303943053\n", + "Grad encoder.encoder.4.bias: 0.0011306700762361288\n", + "Grad decoder.fc1.0.weight: 4.834051287616603e-05\n", + "Grad decoder.fc1.0.bias: 0.0005605543265119195\n", + "Grad decoder.fc1.2.weight: 8.130734204314649e-05\n", + "Grad decoder.fc1.2.bias: 0.0009816065430641174\n", + "Grad decoder.fc1.4.weight: 7.350370287895203e-05\n", + "Grad decoder.fc1.4.bias: 0.0011757508618757129\n", + "Grad decoder.fc2.weight: 0.0001656824751989916\n", + "Grad decoder.fc2.bias: 0.002277415245771408\n", + "Grad _memory_unit.weight_ih_l0: 2.312702235940378e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.8852936995681375e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.148375460819807e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.126971700519789e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.528972102794796e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.342986721894704e-05\n", + "Data X Sample: tensor([[1.4968, 1.7260, 1.8452, 1.9110, 2.1036, 2.2438, 2.2509, 2.4034, 2.5045,\n", + " 2.4170, 2.5188, 2.4889, 2.5544, 2.3339, 2.3807, 2.4479, 2.3947, 2.3541,\n", + " 2.3830, 2.4232, 2.4045, 2.4418, 2.4580, 2.4336, 2.4999, 2.4526, 2.4109,\n", + " 2.4920, 2.2307, 2.2729, 2.2117, 2.2438, 2.1714, 1.4234, 1.9266, 1.7488,\n", + " 1.6046, 1.4576, 1.4959, 1.5576, 1.2313, 0.6791, 0.7013, 1.1941, 1.8751,\n", + " 1.9156, 1.3326, 1.9939]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7170, 1.4135, 0.5858, 0.3813, 0.7423, -0.5735, -0.1410, -0.5129,\n", + " -1.3435, -0.7386, -0.7445, 0.8839, 1.6708, 0.4928, 6.5892, 1.0510,\n", + " 0.4817, -0.1936, -0.2252, 1.2521, -0.8458, 0.2628, 0.8067, 1.6691,\n", + " 0.1560, -0.0506, -2.5457, -0.8154, 1.2234, 0.5032, -0.2155, -0.2750,\n", + " 0.3745, 0.6112, -0.6654, -1.1773, -0.4969, -0.6532, 0.7551, -0.5181,\n", + " -0.5902, -0.3384, -0.2562]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3803, 0.3181, 0.1421, 0.2705, 0.0862, -0.1977, -0.3622, -0.4204,\n", + " -0.2089, -0.2515, -0.2605, 0.1293, 0.2065, 0.2660, 0.2126, 0.2703,\n", + " 0.1914, 0.0905, 0.1414, 0.0781, 0.0311, 0.0852, 0.0232, -0.0114,\n", + " -0.0040, 0.0351, -0.0591, 0.0652, 0.2451, 0.2810, 0.2466, 0.1747,\n", + " 0.2440, 0.2910, 0.1715, 0.1765, -0.0347, 0.0357, 0.0039, -0.2781,\n", + " -0.2496, -0.2218, -0.2612]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003168605617247522\n", + "Grad encoder.fc1.bias: 0.0014011814491823316\n", + "Grad encoder.encoder.0.weight: 7.992469909368083e-05\n", + "Grad encoder.encoder.0.bias: 0.0010114352917298675\n", + "Grad encoder.encoder.2.weight: 5.3003626817371696e-05\n", + "Grad encoder.encoder.2.bias: 0.0007789003429934382\n", + "Grad encoder.encoder.4.weight: 0.00012655499449465424\n", + "Grad encoder.encoder.4.bias: 0.0015004584565758705\n", + "Grad decoder.fc1.0.weight: 5.397541099227965e-05\n", + "Grad decoder.fc1.0.bias: 0.000700704287737608\n", + "Grad decoder.fc1.2.weight: 6.245313124964014e-05\n", + "Grad decoder.fc1.2.bias: 0.0008089529583230615\n", + "Grad decoder.fc1.4.weight: 5.723449430661276e-05\n", + "Grad decoder.fc1.4.bias: 0.0007834900170564651\n", + "Grad decoder.fc2.weight: 0.00015052128583192825\n", + "Grad decoder.fc2.bias: 0.0021076062694191933\n", + "Grad _memory_unit.weight_ih_l0: 1.7674718037596904e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.454081863514148e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.422120451228693e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.005924322176725e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010565848788246512\n", + "Grad _memory_unit.bias_hh_l1: 5.5479900765931234e-05\n", + "Data X Sample: tensor([[1.6072, 1.8352, 2.0075, 2.1384, 2.1906, 2.2659, 2.3310, 2.3594, 2.4971,\n", + " 2.4817, 2.4427, 2.5298, 2.4012, 2.3366, 2.2975, 2.2127, 2.2186, 2.4064,\n", + " 2.4491, 2.5069, 2.4855, 2.5811, 2.5761, 2.6073, 2.5337, 2.6746, 2.5760,\n", + " 2.5736, 2.3417, 2.3679, 2.2817, 2.2880, 2.1692, 1.4532, 1.9143, 1.7901,\n", + " 1.6105, 1.5292, 1.5529, 1.5746, 1.2600, 0.7129, 0.7175, 1.3032, 1.9742,\n", + " 2.0757, 1.5638, 1.8922]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.2788, 0.5599, 0.0711, 2.8170, -0.9815, -0.4204, -0.9093, -0.5115,\n", + " -0.6493, -0.5927, -0.7721, -0.4822, 1.5875, 0.6175, 0.5319, 0.2499,\n", + " 0.4364, 1.0005, -0.4283, -0.7055, -0.4210, 2.1701, -0.2629, 0.5613,\n", + " -1.0058, 0.4739, 1.2306, 1.3137, 1.3662, 1.1090, 1.0061, 1.8896,\n", + " 0.3990, 0.2976, 0.3180, 0.7922, -0.2492, -0.1625, -0.5596, -0.9016,\n", + " -0.4506, -0.7325, -0.7976]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4022, 0.3436, 0.1501, 0.2893, 0.0961, -0.2097, -0.3823, -0.4480,\n", + " -0.2163, -0.2666, -0.2733, 0.1437, 0.2269, 0.2898, 0.2310, 0.2922,\n", + " 0.2108, 0.0967, 0.1532, 0.0850, 0.0341, 0.0890, 0.0295, -0.0104,\n", + " 0.0014, 0.0369, -0.0655, 0.0690, 0.2584, 0.2983, 0.2626, 0.1808,\n", + " 0.2645, 0.3143, 0.1773, 0.1877, -0.0333, 0.0348, 0.0068, -0.2956,\n", + " -0.2681, -0.2415, -0.2844]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00021913996897637844\n", + "Grad encoder.fc1.bias: 0.00016694256919436157\n", + "Grad encoder.encoder.0.weight: 7.185559661593288e-05\n", + "Grad encoder.encoder.0.bias: 0.00017049946472980082\n", + "Grad encoder.encoder.2.weight: 5.646365389111452e-05\n", + "Grad encoder.encoder.2.bias: 0.00023412419250234962\n", + "Grad encoder.encoder.4.weight: 0.00013680057600140572\n", + "Grad encoder.encoder.4.bias: 0.0009509457158856094\n", + "Grad decoder.fc1.0.weight: 4.820380127057433e-05\n", + "Grad decoder.fc1.0.bias: 0.00039514905074611306\n", + "Grad decoder.fc1.2.weight: 5.840853918925859e-05\n", + "Grad decoder.fc1.2.bias: 0.0006826023454777896\n", + "Grad decoder.fc1.4.weight: 6.597262108698487e-05\n", + "Grad decoder.fc1.4.bias: 0.0007693201187066734\n", + "Grad decoder.fc2.weight: 0.0001563495461596176\n", + "Grad decoder.fc2.bias: 0.0021197774913161993\n", + "Grad _memory_unit.weight_ih_l0: 1.568113839311991e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.109540845500305e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.0978815630078316e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.32184970122762e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010275243403157219\n", + "Grad _memory_unit.bias_hh_l1: 5.2801664423896e-05\n", + "Data X Sample: tensor([[1.6072, 1.8177, 2.0000, 2.1428, 2.2265, 2.4368, 2.4789, 2.5823, 2.6509,\n", + " 2.6129, 2.7250, 2.6720, 2.5877, 2.5302, 2.5320, 2.5081, 2.4482, 2.4431,\n", + " 2.5173, 2.4567, 2.5198, 2.4801, 2.5230, 2.4832, 2.5412, 2.5074, 2.4269,\n", + " 2.4961, 2.2758, 2.3745, 2.5127, 2.2991, 2.3100, 1.5173, 2.0222, 1.8534,\n", + " 1.7325, 1.6617, 1.6480, 1.6001, 1.2791, 0.7508, 0.7296, 1.2917, 1.8275,\n", + " 2.2873, 1.3190, 2.1190]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4196, 0.0899, -0.1235, 0.1668, 0.2701, 0.1674, -0.0777, -0.3020,\n", + " -0.2650, -0.5799, -0.5047, 0.2503, -1.3486, 0.2985, 1.1666, 0.0686,\n", + " 0.1126, -0.0826, 0.2498, -0.5546, 0.7470, 0.1225, -0.5617, 0.3811,\n", + " -1.6004, 0.1980, -1.3134, -0.1029, -0.1405, 0.6108, -0.0855, 0.5522,\n", + " 1.6130, 0.3850, 0.6831, -1.4560, 0.0213, 0.3857, -0.3712, -0.3566,\n", + " -0.3755, -0.6083, -0.7960]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 4.0344e-01, 3.4564e-01, 1.4993e-01, 2.8635e-01, 8.9219e-02,\n", + " -2.1072e-01, -3.8601e-01, -4.4801e-01, -2.1888e-01, -2.6721e-01,\n", + " -2.7531e-01, 1.4224e-01, 2.3064e-01, 2.9624e-01, 2.2985e-01,\n", + " 2.9221e-01, 2.1072e-01, 9.7151e-02, 1.5250e-01, 8.5164e-02,\n", + " 3.3283e-02, 8.5472e-02, 3.1332e-02, -6.1272e-03, -5.3238e-05,\n", + " 3.5852e-02, -5.9929e-02, 7.1578e-02, 2.6465e-01, 3.0309e-01,\n", + " 2.6230e-01, 1.8281e-01, 2.6449e-01, 3.1324e-01, 1.7307e-01,\n", + " 1.8556e-01, -3.4460e-02, 3.3594e-02, 1.4196e-03, -2.9797e-01,\n", + " -2.6483e-01, -2.4044e-01, -2.8642e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 7.058740447973832e-05\n", + "Grad encoder.fc1.bias: 0.00040287734009325504\n", + "Grad encoder.encoder.0.weight: 1.984419213840738e-05\n", + "Grad encoder.encoder.0.bias: 0.0003043570613954216\n", + "Grad encoder.encoder.2.weight: 2.1972871763864532e-05\n", + "Grad encoder.encoder.2.bias: 0.0003155561862513423\n", + "Grad encoder.encoder.4.weight: 7.563598046544939e-05\n", + "Grad encoder.encoder.4.bias: 0.0008253159467130899\n", + "Grad decoder.fc1.0.weight: 3.480281520751305e-05\n", + "Grad decoder.fc1.0.bias: 0.0003683880204334855\n", + "Grad decoder.fc1.2.weight: 4.660744161810726e-05\n", + "Grad decoder.fc1.2.bias: 0.0004939765785820782\n", + "Grad decoder.fc1.4.weight: 4.616262958734296e-05\n", + "Grad decoder.fc1.4.bias: 0.0004687556647695601\n", + "Grad decoder.fc2.weight: 0.00015729367441963404\n", + "Grad decoder.fc2.bias: 0.00172364991158247\n", + "Grad _memory_unit.weight_ih_l0: 1.4175408978189807e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.372212374117225e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.293713598395698e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.2281239984731656e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010928909614449367\n", + "Grad _memory_unit.bias_hh_l1: 5.7279707107227296e-05\n", + "Data X Sample: tensor([[1.3664, 1.6895, 1.8122, 1.9198, 1.9311, 2.0051, 1.9936, 2.0045, 3.3393,\n", + " 3.9746, 4.2668, 4.1423, 4.0657, 3.8198, 3.6895, 3.6650, 3.5347, 3.6501,\n", + " 3.6324, 3.5465, 3.4596, 3.3435, 2.8532, 2.7581, 2.8997, 2.8861, 2.9011,\n", + " 2.9814, 3.1708, 3.1310, 3.2545, 3.4099, 3.8413, 2.7828, 4.6204, 4.9569,\n", + " 5.2544, 5.5602, 6.1039, 5.8416, 1.1120, 0.6373, 0.6306, 1.0879, 1.8394,\n", + " 1.9556, 1.2238, 1.7593]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1045, 0.2840, 0.3191, 0.2382, 1.4646, 0.7206, -0.0600, -0.4144,\n", + " -0.3719, -0.4888, -1.1696, 0.4483, -0.4010, 0.8691, -0.2863, 0.7444,\n", + " -0.0564, 1.6322, -0.2437, -0.4685, 0.7040, 2.0940, -0.2377, 0.0405,\n", + " -0.5724, -0.3267, -0.7758, -0.6287, -0.1965, 0.1636, 0.4853, 0.2146,\n", + " -0.2035, 1.0665, 1.0103, 0.1228, 0.6904, 0.3394, -0.7809, -0.6584,\n", + " -0.9664, -0.3346, -0.7061]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2748, -0.3024, -0.0163, -0.1986, 0.0366, 0.1398, 0.1895, 0.3020,\n", + " 0.2548, 0.2199, 0.2531, -0.1732, -0.2172, -0.3437, -0.1780, -0.3382,\n", + " -0.1910, -0.0486, -0.0524, -0.1224, -0.0509, 0.0145, -0.0419, -0.0475,\n", + " -0.0860, 0.0500, -0.0118, -0.0928, -0.1720, -0.2823, -0.2662, -0.1991,\n", + " -0.3212, -0.3394, -0.1933, -0.2182, -0.0384, 0.0278, 0.0712, 0.2869,\n", + " 0.3637, 0.3772, 0.2841]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 7.686379103688523e-05\n", + "Grad encoder.fc1.bias: 0.0004127316642552614\n", + "Grad encoder.encoder.0.weight: 3.5702316381502897e-05\n", + "Grad encoder.encoder.0.bias: 0.0003224565298296511\n", + "Grad encoder.encoder.2.weight: 4.059645289089531e-05\n", + "Grad encoder.encoder.2.bias: 0.00042517625843174756\n", + "Grad encoder.encoder.4.weight: 0.00012824765872210264\n", + "Grad encoder.encoder.4.bias: 0.0009391356143169105\n", + "Grad decoder.fc1.0.weight: 5.354807581170462e-05\n", + "Grad decoder.fc1.0.bias: 0.0005107708275318146\n", + "Grad decoder.fc1.2.weight: 0.0001071101360139437\n", + "Grad decoder.fc1.2.bias: 0.0011425800621509552\n", + "Grad decoder.fc1.4.weight: 8.85545669007115e-05\n", + "Grad decoder.fc1.4.bias: 0.0010816333815455437\n", + "Grad decoder.fc2.weight: 0.00019753587548621\n", + "Grad decoder.fc2.bias: 0.0026301913894712925\n", + "Grad _memory_unit.weight_ih_l0: 2.2069463739171624e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.352025179192424e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.163170524407178e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.710149136779364e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00014536659000441432\n", + "Grad _memory_unit.bias_hh_l1: 7.358938455581665e-05\n", + "Data X Sample: tensor([[-0.0074, 0.0073, -0.0045, 0.0000, -0.0137, 0.0015, 0.0046, -0.0014,\n", + " 0.0195, 0.0063, -0.0032, 0.0117, 0.0000, 0.0109, 0.0101, -0.0027,\n", + " 0.0079, 0.0077, -0.0021, 0.0093, 0.0270, 0.0107, 0.0048, 0.0000,\n", + " 0.0131, 0.0261, 0.0266, 0.0286, 0.0208, 0.0164, -0.0210, -0.0028,\n", + " -0.0022, 0.0137, 0.0196, 0.0316, 0.0236, 0.0053, 0.0190, -0.0085,\n", + " 0.0334, 0.0020, 0.0182, 0.0230, 0.0079, 0.0286, 0.0068, -0.0156]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 8.5657e-01, 1.2644e+00, -7.9635e-02, 1.0844e+00, 3.3378e-01,\n", + " -6.5283e-01, -1.8205e+00, -1.0905e+00, -9.0250e-01, -7.4012e-01,\n", + " -8.8688e-01, 8.2843e-01, 3.5056e-01, 1.0846e+00, 2.6110e-01,\n", + " 7.6695e-01, -2.9030e-01, 3.6525e-01, 1.0034e-01, 8.3696e-01,\n", + " 5.3411e-01, 2.3139e-02, 2.4294e-01, 9.5095e-01, 1.0123e+00,\n", + " -8.9711e-01, 4.4285e-01, -2.7838e-02, 2.0835e+00, 1.5900e+00,\n", + " 6.9763e-01, -9.0427e-01, 3.7251e-01, 2.8501e-01, -6.2917e-02,\n", + " -7.8759e-03, -1.0781e-03, 8.2377e-01, 0.0000e+00, -6.7209e-01,\n", + " -6.1610e-01, -7.0032e-01, -2.1594e+00]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 1.1481, 0.7452, 0.2335, 0.7548, -0.3519, -0.8579, -1.2959, -1.4461,\n", + " -0.8742, -0.9553, -0.9000, 0.5173, 0.7505, 0.8485, 0.5395, 0.6389,\n", + " 0.4508, 0.0653, 0.3237, 0.0704, 0.0495, 0.0936, 0.0971, 0.1084,\n", + " -0.0768, -0.0574, 0.1866, 0.6405, 1.1632, 1.1506, 0.9344, 0.6563,\n", + " 0.8218, 0.8080, 0.4904, 0.4314, -0.1646, 0.0253, 0.0399, -0.9735,\n", + " -0.8536, -0.6420, -0.5686]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006560265319421887\n", + "Grad encoder.fc1.bias: 0.0005062575219199061\n", + "Grad encoder.encoder.0.weight: 0.00015970287495292723\n", + "Grad encoder.encoder.0.bias: 0.0006582511123269796\n", + "Grad encoder.encoder.2.weight: 9.1557354608085e-05\n", + "Grad encoder.encoder.2.bias: 0.0007461500354111195\n", + "Grad encoder.encoder.4.weight: 0.0001672932703513652\n", + "Grad encoder.encoder.4.bias: 0.0026405188255012035\n", + "Grad decoder.fc1.0.weight: 6.318977102637291e-05\n", + "Grad decoder.fc1.0.bias: 0.0009799645049497485\n", + "Grad decoder.fc1.2.weight: 7.702771108597517e-05\n", + "Grad decoder.fc1.2.bias: 0.000843081041239202\n", + "Grad decoder.fc1.4.weight: 6.942170875845477e-05\n", + "Grad decoder.fc1.4.bias: 0.0009337558294646442\n", + "Grad decoder.fc2.weight: 0.00015254138270393014\n", + "Grad decoder.fc2.bias: 0.0021903743036091328\n", + "Grad _memory_unit.weight_ih_l0: 1.1433203326305375e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.1088044680655e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.0843584429239854e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.09336632603663e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001769382506608963\n", + "Grad _memory_unit.bias_hh_l1: 9.186023817164823e-05\n", + "Data X Sample: tensor([[1.3473, 1.4419, 1.6198, 1.8367, 2.0097, 2.0596, 2.1908, 2.6306, 4.2205,\n", + " 4.3711, 4.3302, 4.2825, 4.1611, 4.0488, 3.8005, 3.6350, 3.7658, 3.7507,\n", + " 3.6571, 3.5018, 3.3909, 3.4721, 2.9665, 2.8096, 2.8040, 2.8652, 2.8744,\n", + " 3.0100, 3.0182, 3.1703, 3.3140, 3.3491, 3.7951, 2.8354, 4.6278, 4.9909,\n", + " 5.1876, 5.5682, 6.0722, 5.9041, 1.0452, 0.6193, 0.5820, 1.0793, 1.5143,\n", + " 1.8241, 1.1966, 1.6733]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4518, -0.0919, -0.3324, -0.3910, 0.1027, 1.3635, 0.7368, 0.7670,\n", + " 0.8128, 0.7118, 0.3111, -0.7951, -5.2863, 0.6769, -0.3144, -1.8035,\n", + " -0.6111, -0.3257, -0.1674, 0.0959, -0.3627, -1.4187, -0.2597, 0.1618,\n", + " 0.2621, -0.2056, 0.5602, 0.3718, -0.0455, -0.6450, -1.1231, 0.4307,\n", + " -0.2845, -0.2732, -0.4218, 0.1000, -0.3740, -0.1765, 0.0382, 0.7003,\n", + " 0.9009, 0.4233, 0.1883]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2277, -0.2498, 0.0009, -0.1874, 0.0359, 0.1278, 0.1574, 0.2491,\n", + " 0.2170, 0.1822, 0.2054, -0.1561, -0.1889, -0.2898, -0.1527, -0.2810,\n", + " -0.1682, -0.0250, -0.0500, -0.0974, -0.0247, 0.0176, -0.0293, -0.0306,\n", + " -0.0810, 0.0445, -0.0063, -0.0680, -0.1463, -0.2498, -0.2314, -0.1654,\n", + " -0.2910, -0.2992, -0.1610, -0.1867, -0.0436, 0.0347, 0.0538, 0.2272,\n", + " 0.3079, 0.3225, 0.2447]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00015332982002291828\n", + "Grad encoder.fc1.bias: 0.0004493493470363319\n", + "Grad encoder.encoder.0.weight: 3.7951089325360954e-05\n", + "Grad encoder.encoder.0.bias: 0.00035140541149303317\n", + "Grad encoder.encoder.2.weight: 2.46235267695738e-05\n", + "Grad encoder.encoder.2.bias: 0.0003903706674464047\n", + "Grad encoder.encoder.4.weight: 5.393738319980912e-05\n", + "Grad encoder.encoder.4.bias: 0.0009761396795511246\n", + "Grad decoder.fc1.0.weight: 3.2828189432621e-05\n", + "Grad decoder.fc1.0.bias: 0.0004110806039534509\n", + "Grad decoder.fc1.2.weight: 4.2102652514586225e-05\n", + "Grad decoder.fc1.2.bias: 0.0004141263198107481\n", + "Grad decoder.fc1.4.weight: 4.697408803622238e-05\n", + "Grad decoder.fc1.4.bias: 0.0005957665853202343\n", + "Grad decoder.fc2.weight: 0.0001647400058573112\n", + "Grad decoder.fc2.bias: 0.0023121449630707502\n", + "Grad _memory_unit.weight_ih_l0: 7.983719115145504e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.3355644922703505e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.7672344003804028e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.5291800486447755e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.014546958496794e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.749670915771276e-05\n", + "Data X Sample: tensor([[1.3823, 1.5512, 1.7430, 1.7930, 1.8611, 2.1082, 2.0753, 2.0088, 3.4296,\n", + " 4.0899, 4.3270, 4.2728, 4.0701, 4.0297, 3.8913, 3.6199, 3.5944, 3.6637,\n", + " 3.5291, 3.6766, 3.5160, 3.4078, 3.0484, 2.8401, 2.8715, 2.9253, 2.9224,\n", + " 2.8876, 2.9627, 3.1540, 3.1076, 3.3989, 3.9271, 2.8469, 4.6547, 4.9155,\n", + " 5.2190, 5.3853, 6.0532, 5.9296, 1.1454, 0.5855, 0.6204, 1.1108, 1.5302,\n", + " 1.7612, 1.1694, 1.6420]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1141, -0.7943, -2.1526, -0.6438, -0.5735, 0.3039, 0.1846, 0.2900,\n", + " 0.8539, 1.0012, -0.1797, -1.5789, 0.4812, 0.1735, -0.2962, 0.7295,\n", + " -0.1291, 1.0124, -4.3250, -0.4628, 0.6534, -0.6408, 0.4137, 0.8073,\n", + " 0.8184, -0.2858, 0.4120, -0.5492, 0.4091, -0.3397, -0.2088, -0.4396,\n", + " 0.8425, -0.0592, 0.8654, -0.6136, -1.0138, 0.6895, -0.5562, 0.4958,\n", + " 0.1069, 0.1898, -0.7397]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2066, -0.2234, 0.0126, -0.1828, 0.0484, 0.1330, 0.1481, 0.2276,\n", + " 0.2010, 0.1684, 0.1833, -0.1503, -0.1803, -0.2688, -0.1410, -0.2557,\n", + " -0.1614, -0.0125, -0.0504, -0.0890, -0.0134, 0.0130, -0.0226, -0.0225,\n", + " -0.0799, 0.0368, -0.0080, -0.0635, -0.1406, -0.2394, -0.2173, -0.1483,\n", + " -0.2837, -0.2871, -0.1511, -0.1759, -0.0411, 0.0411, 0.0452, 0.2002,\n", + " 0.2835, 0.2955, 0.2270]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005234114360064268\n", + "Grad encoder.fc1.bias: 0.00040869100484997034\n", + "Grad encoder.encoder.0.weight: 0.00011963921133428812\n", + "Grad encoder.encoder.0.bias: 0.0005018041701987386\n", + "Grad encoder.encoder.2.weight: 6.860667781438679e-05\n", + "Grad encoder.encoder.2.bias: 0.00048368237912654877\n", + "Grad encoder.encoder.4.weight: 0.0001333607651758939\n", + "Grad encoder.encoder.4.bias: 0.0014877074863761663\n", + "Grad decoder.fc1.0.weight: 5.188567592995241e-05\n", + "Grad decoder.fc1.0.bias: 0.0005878929514437914\n", + "Grad decoder.fc1.2.weight: 5.1037888624705374e-05\n", + "Grad decoder.fc1.2.bias: 0.0008133469382300973\n", + "Grad decoder.fc1.4.weight: 5.5314882047241554e-05\n", + "Grad decoder.fc1.4.bias: 0.000875667785294354\n", + "Grad decoder.fc2.weight: 0.00012357225932646543\n", + "Grad decoder.fc2.bias: 0.001888554310426116\n", + "Grad _memory_unit.weight_ih_l0: 9.761924047779758e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.547799107967876e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.291022610734217e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.612035809259396e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010724848107201979\n", + "Grad _memory_unit.bias_hh_l1: 5.508763933903538e-05\n", + "Data X Sample: tensor([[2.4420, 2.8154, 3.0488, 3.2426, 3.2902, 3.3296, 3.5543, 3.5803, 3.6444,\n", + " 3.7439, 3.9432, 3.8112, 3.8194, 3.6180, 3.5735, 3.5392, 3.4293, 3.5515,\n", + " 3.5043, 3.3661, 3.2927, 3.2409, 3.0749, 2.8764, 2.7890, 2.8313, 2.7492,\n", + " 2.8632, 2.7198, 2.7806, 2.7996, 2.8490, 2.7743, 2.0093, 3.3336, 3.6556,\n", + " 3.7953, 4.0522, 4.4496, 4.4344, 1.8422, 1.0734, 1.0853, 1.7825, 2.9176,\n", + " 3.1793, 2.0873, 2.7054]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 5.3095e-01, 5.6778e-02, -1.5228e-01, -5.1291e-01, -4.5259e-01,\n", + " 8.7865e-02, 7.1255e-01, 7.9637e-01, -4.8040e-01, 8.7045e-01,\n", + " 1.0880e+00, -6.8136e-01, 2.8759e-01, -3.2240e-01, 3.7864e-01,\n", + " -3.3997e-01, 5.6877e-01, -6.9746e-05, 1.9176e+00, 4.2328e-01,\n", + " -4.3614e-01, 1.2528e+00, -5.9274e-01, 5.5904e-01, 5.1248e-01,\n", + " -1.3103e+00, 1.4933e-01, 1.2748e+00, 2.5669e-02, 4.5001e-01,\n", + " 2.2420e-02, -1.0785e+00, -6.9868e-02, -1.7524e-01, 3.6345e-01,\n", + " -4.6104e-01, -1.0105e+00, -7.0551e-01, 2.5716e+00, 9.5015e-01,\n", + " 7.2234e-01, 5.4005e-01, 1.1002e+00]], device='cuda:0')\n", + "Prediction Sample: tensor([[-2.1771e-01, -2.5000e-01, -8.3399e-02, -2.4897e-01, -1.9532e-01,\n", + " -3.2338e-02, 4.4059e-02, 2.1795e-01, 1.1387e-01, 1.3928e-01,\n", + " 1.8105e-01, -1.2938e-01, -1.2984e-01, -2.1809e-01, -1.2899e-01,\n", + " -2.3236e-01, -1.8650e-01, -7.7054e-02, -5.4889e-02, -8.6499e-02,\n", + " -1.7698e-02, 3.4509e-02, -4.1446e-02, -5.6161e-02, -6.6891e-03,\n", + " 2.3763e-02, 8.9725e-02, 2.8558e-02, -4.4047e-02, -1.2012e-01,\n", + " -1.5214e-01, -1.5129e-01, -1.2115e-01, -1.9587e-01, -1.0783e-01,\n", + " -1.5834e-01, -5.0341e-02, -2.7077e-04, 5.1283e-03, 2.5723e-01,\n", + " 3.0042e-01, 3.0047e-01, 2.1581e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 4.841342888539657e-05\n", + "Grad encoder.fc1.bias: 4.010951306554489e-05\n", + "Grad encoder.encoder.0.weight: 1.0356885468354449e-05\n", + "Grad encoder.encoder.0.bias: 3.090325481025502e-05\n", + "Grad encoder.encoder.2.weight: 9.822485480981413e-06\n", + "Grad encoder.encoder.2.bias: 4.932693991577253e-05\n", + "Grad encoder.encoder.4.weight: 2.6626730686984956e-05\n", + "Grad encoder.encoder.4.bias: 0.00013486298848874867\n", + "Grad decoder.fc1.0.weight: 1.5274970792233944e-05\n", + "Grad decoder.fc1.0.bias: 0.00010062367073260248\n", + "Grad decoder.fc1.2.weight: 2.930135087808594e-05\n", + "Grad decoder.fc1.2.bias: 0.00028558814665302634\n", + "Grad decoder.fc1.4.weight: 2.9130203984095715e-05\n", + "Grad decoder.fc1.4.bias: 0.00039981084410101175\n", + "Grad decoder.fc2.weight: 8.09963748906739e-05\n", + "Grad decoder.fc2.bias: 0.001618277165107429\n", + "Grad _memory_unit.weight_ih_l0: 4.885978796664858e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.2556204031570815e-06\n", + "Grad _memory_unit.bias_hh_l0: 4.273038030078169e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.7967595340451226e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.20392867049668e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.1500599612190854e-05\n", + "Data X Sample: tensor([[1.5096, 1.7187, 1.9234, 2.0269, 2.1377, 2.2777, 2.4065, 2.4034, 2.4556,\n", + " 2.5939, 2.5696, 2.5882, 2.5166, 2.5438, 2.3933, 2.4602, 2.3790, 2.3928,\n", + " 2.4161, 2.4083, 2.4389, 2.5551, 2.4628, 2.5557, 2.4868, 2.6511, 2.4881,\n", + " 2.5124, 2.2688, 2.4170, 2.3622, 2.3737, 2.2682, 1.4875, 1.9045, 1.8193,\n", + " 1.6420, 1.4603, 1.5909, 1.5491, 1.2027, 0.7408, 0.6750, 1.3462, 1.7482,\n", + " 1.9328, 1.2578, 1.9001]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5833, 0.6647, 1.2787, 0.9894, 0.0772, 0.8288, 0.2446, -0.4694,\n", + " 0.6182, 0.8745, 0.9775, 0.1233, 0.2871, -1.2220, -0.7744, 0.0923,\n", + " -0.3060, 0.1881, -0.3938, -0.1702, -0.0665, -0.0174, 2.0786, -0.0081,\n", + " -0.1650, -1.1221, -0.4115, -0.6265, 0.3702, -0.5469, 0.0276, -0.7412,\n", + " 0.2714, -0.5712, 0.3794, -0.5635, -0.8287, 0.8274, 0.5660, -1.1253,\n", + " -0.4347, 0.3461, -0.9883]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3624, 0.3246, 0.1299, 0.2281, 0.0663, -0.1665, -0.3415, -0.3717,\n", + " -0.1933, -0.2207, -0.2400, 0.1256, 0.2035, 0.2735, 0.1863, 0.2742,\n", + " 0.1909, 0.0994, 0.1203, 0.0702, 0.0459, 0.0786, 0.0529, 0.0133,\n", + " 0.0171, 0.0392, -0.0490, 0.0468, 0.2423, 0.2729, 0.2229, 0.1462,\n", + " 0.2332, 0.2469, 0.1417, 0.1485, -0.0401, 0.0235, -0.0333, -0.2652,\n", + " -0.2153, -0.2098, -0.2701]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00018067716155201197\n", + "Grad encoder.fc1.bias: 0.0009470892837271094\n", + "Grad encoder.encoder.0.weight: 4.670297494158149e-05\n", + "Grad encoder.encoder.0.bias: 0.0005769036943092942\n", + "Grad encoder.encoder.2.weight: 4.3710148020181805e-05\n", + "Grad encoder.encoder.2.bias: 0.0004820973554160446\n", + "Grad encoder.encoder.4.weight: 9.384896111441776e-05\n", + "Grad encoder.encoder.4.bias: 0.0008456915966235101\n", + "Grad decoder.fc1.0.weight: 4.212328349240124e-05\n", + "Grad decoder.fc1.0.bias: 0.0004170562606304884\n", + "Grad decoder.fc1.2.weight: 6.634664896409959e-05\n", + "Grad decoder.fc1.2.bias: 0.0009345764410682023\n", + "Grad decoder.fc1.4.weight: 5.505431181518361e-05\n", + "Grad decoder.fc1.4.bias: 0.0008982412982732058\n", + "Grad decoder.fc2.weight: 0.00011096440721303225\n", + "Grad decoder.fc2.bias: 0.002351706847548485\n", + "Grad _memory_unit.weight_ih_l0: 1.4488350643659942e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.98000852833502e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.2442130355339032e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.5567608140117954e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.837914068251848e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.045532139367424e-05\n", + "Data X Sample: tensor([[ 0.0095, 0.0044, 0.0150, 0.0000, 0.0154, 0.0162, 0.0092, 0.0099,\n", + " 0.0000, -0.0016, -0.0095, 0.0019, 0.0022, -0.0136, -0.0353, 0.0068,\n", + " -0.0126, -0.0174, -0.0351, -0.0744, 0.0147, -0.0245, -0.1036, -0.0821,\n", + " -0.0582, -0.1463, -0.1492, -0.2814, -0.0104, -0.0491, -0.0490, -0.0359,\n", + " -0.0660, -0.0389, -0.0662, -0.0146, -0.0236, -0.0424, -0.0697, -0.0142,\n", + " -0.0048, -0.0060, -0.0040, 0.0115, 0.0277, -0.0172, 0.0816, 0.1173]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.9682, 1.4161, -1.0214, 1.3254, -1.5404, -1.3894, -1.1003, -0.9643,\n", + " -1.9626, -0.6028, -0.6486, 0.6284, -0.3254, -0.0048, 1.0183, 0.4130,\n", + " 0.5263, -0.7443, 0.6051, 0.0628, -0.2918, -0.1353, 0.6992, -1.0669,\n", + " -0.4471, 0.2623, 0.2227, 0.5994, 0.7159, 1.2496, 0.8814, 1.2221,\n", + " 0.7045, 0.4516, 0.3324, 0.2781, 0.6639, -0.5073, -0.5596, -0.6668,\n", + " -0.9472, -0.7004, -0.3517]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.6212, 0.4948, 0.1757, 0.4361, 0.1290, -0.2674, -0.5665, -0.6811,\n", + " -0.3114, -0.3749, -0.3435, 0.2702, 0.3426, 0.4479, 0.3167, 0.4499,\n", + " 0.3502, 0.1576, 0.2066, 0.1253, 0.0547, 0.0894, 0.1057, 0.0807,\n", + " 0.0474, 0.0642, -0.0807, 0.1332, 0.4092, 0.4633, 0.4116, 0.2715,\n", + " 0.4350, 0.4471, 0.2410, 0.2596, -0.0796, 0.0057, -0.0422, -0.4665,\n", + " -0.4281, -0.3625, -0.4083]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00012829224579036236\n", + "Grad encoder.fc1.bias: 0.0002397072676103562\n", + "Grad encoder.encoder.0.weight: 5.1325881941011176e-05\n", + "Grad encoder.encoder.0.bias: 0.00018869194900617003\n", + "Grad encoder.encoder.2.weight: 4.91597929794807e-05\n", + "Grad encoder.encoder.2.bias: 0.00031950409174896777\n", + "Grad encoder.encoder.4.weight: 0.00010710677452152595\n", + "Grad encoder.encoder.4.bias: 0.0009234304307028651\n", + "Grad decoder.fc1.0.weight: 4.8029633035184816e-05\n", + "Grad decoder.fc1.0.bias: 0.0004706139152403921\n", + "Grad decoder.fc1.2.weight: 5.078659887658432e-05\n", + "Grad decoder.fc1.2.bias: 0.0005263709463179111\n", + "Grad decoder.fc1.4.weight: 4.5455504732672125e-05\n", + "Grad decoder.fc1.4.bias: 0.0006339208339340985\n", + "Grad decoder.fc2.weight: 9.063811012310907e-05\n", + "Grad decoder.fc2.bias: 0.0016862270422279835\n", + "Grad _memory_unit.weight_ih_l0: 1.044272448780248e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.9312843253137544e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.542918835184537e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.541654107015347e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.077824506675825e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.5992579543963075e-05\n", + "Data X Sample: tensor([[1.1574, 1.2744, 1.4681, 1.5699, 1.6818, 1.8254, 1.9428, 1.8696, 3.4443,\n", + " 3.9288, 3.9305, 3.9067, 3.6618, 3.4871, 3.3390, 3.3614, 3.2344, 3.2130,\n", + " 3.3061, 3.0890, 3.2584, 3.1583, 2.7472, 2.6836, 2.7458, 2.7085, 2.7812,\n", + " 2.7530, 2.7962, 2.9116, 3.0516, 3.1198, 3.0933, 2.3137, 3.8189, 4.3026,\n", + " 4.5268, 4.9957, 5.3686, 5.3196, 0.8734, 0.5696, 0.5538, 0.9530, 1.4588,\n", + " 1.5096, 1.0334, 1.4387]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5916, 0.2237, 0.8408, 0.2195, 0.4594, 0.2932, 0.6744, 0.1237,\n", + " -0.3004, 0.6449, -0.5509, -0.3982, 1.1329, 0.5521, -0.3956, -0.5660,\n", + " 0.4773, -0.1978, -0.0933, 0.2021, -0.2123, 0.6642, -0.5147, 0.5633,\n", + " -0.0683, 1.6829, -0.5063, 0.9428, -0.6571, -0.1759, 0.0907, 0.0267,\n", + " -0.2203, -0.5847, 0.2631, -0.9070, 0.0000, 0.6909, 0.5928, -0.8728,\n", + " -0.8249, -1.2152, -0.6011]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1619, -0.1795, -0.0050, -0.1670, 0.0209, 0.1235, 0.1200, 0.2026,\n", + " 0.1669, 0.1532, 0.1489, -0.1434, -0.1607, -0.2269, -0.1305, -0.2035,\n", + " -0.1543, -0.0017, -0.0704, -0.0814, -0.0035, 0.0024, -0.0212, -0.0182,\n", + " -0.0443, 0.0337, -0.0013, -0.0649, -0.1202, -0.1861, -0.1922, -0.1309,\n", + " -0.2398, -0.2529, -0.1354, -0.1488, -0.0403, 0.0426, 0.0152, 0.1702,\n", + " 0.2460, 0.2555, 0.1794]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0014611458173021674\n", + "Grad encoder.fc1.bias: 0.0007169980090111494\n", + "Grad encoder.encoder.0.weight: 0.00038642529398202896\n", + "Grad encoder.encoder.0.bias: 0.0011074955109506845\n", + "Grad encoder.encoder.2.weight: 0.0002552593359723687\n", + "Grad encoder.encoder.2.bias: 0.0012255995534360409\n", + "Grad encoder.encoder.4.weight: 0.00045154819963499904\n", + "Grad encoder.encoder.4.bias: 0.004779899958521128\n", + "Grad decoder.fc1.0.weight: 0.00013736466644331813\n", + "Grad decoder.fc1.0.bias: 0.0015226751565933228\n", + "Grad decoder.fc1.2.weight: 8.155540854204446e-05\n", + "Grad decoder.fc1.2.bias: 0.002092919312417507\n", + "Grad decoder.fc1.4.weight: 7.378791633527726e-05\n", + "Grad decoder.fc1.4.bias: 0.0015756359789520502\n", + "Grad decoder.fc2.weight: 9.920299635268748e-05\n", + "Grad decoder.fc2.bias: 0.0019463414791971445\n", + "Grad _memory_unit.weight_ih_l0: 3.387214019312523e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00015113687550183386\n", + "Grad _memory_unit.bias_hh_l0: 7.693548104725778e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.784740379662253e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0003689658478833735\n", + "Grad _memory_unit.bias_hh_l1: 0.0001870686828624457\n", + "Data X Sample: tensor([[1.4268, 1.5876, 1.6980, 1.7558, 1.9243, 1.9727, 2.1061, 2.3140, 3.9007,\n", + " 4.2131, 4.2763, 4.0527, 3.8771, 3.8334, 3.5836, 3.5844, 3.4514, 3.4857,\n", + " 3.5477, 3.4498, 3.4031, 3.2532, 2.9713, 2.8115, 2.8134, 2.9018, 2.9144,\n", + " 2.8999, 2.9453, 3.0852, 3.2336, 3.2497, 3.6103, 2.6386, 4.3410, 4.8718,\n", + " 5.0126, 5.2952, 5.8187, 5.8870, 1.1263, 0.6851, 0.6204, 1.0391, 1.5698,\n", + " 1.7155, 1.2510, 1.7359]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6145, -0.9550, -0.4243, -0.6362, 0.4996, -0.8950, 0.2761, 0.4408,\n", + " 0.4501, 0.4509, 0.5306, -0.5306, -3.0372, -1.3472, -0.0856, -0.1117,\n", + " -0.2654, 1.5923, 0.2054, -0.1808, -0.3013, 0.1395, 0.3956, 0.2545,\n", + " -1.4765, 0.9071, -0.0733, 0.2462, -0.0439, -0.0962, -0.0786, -0.1097,\n", + " -0.7178, -0.5911, 0.0330, 0.1037, 0.4138, 0.2376, 1.1238, 0.5988,\n", + " 0.8384, 0.8607, 0.3690]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1584, -0.1731, -0.0010, -0.1640, 0.0343, 0.1380, 0.1257, 0.2014,\n", + " 0.1676, 0.1594, 0.1450, -0.1446, -0.1643, -0.2271, -0.1296, -0.2004,\n", + " -0.1557, 0.0007, -0.0738, -0.0815, -0.0033, -0.0060, -0.0207, -0.0163,\n", + " -0.0429, 0.0291, -0.0092, -0.0707, -0.1259, -0.1862, -0.1913, -0.1288,\n", + " -0.2438, -0.2581, -0.1386, -0.1476, -0.0345, 0.0439, 0.0107, 0.1682,\n", + " 0.2427, 0.2467, 0.1769]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00014718202874064445\n", + "Grad encoder.fc1.bias: 0.00018181325867772102\n", + "Grad encoder.encoder.0.weight: 3.7973004509694874e-05\n", + "Grad encoder.encoder.0.bias: 0.00019166992569807917\n", + "Grad encoder.encoder.2.weight: 3.429700154811144e-05\n", + "Grad encoder.encoder.2.bias: 0.0002433339977869764\n", + "Grad encoder.encoder.4.weight: 8.113373769447207e-05\n", + "Grad encoder.encoder.4.bias: 0.0007603748235851526\n", + "Grad decoder.fc1.0.weight: 3.5006240068469197e-05\n", + "Grad decoder.fc1.0.bias: 0.00032610446214675903\n", + "Grad decoder.fc1.2.weight: 4.0893843106459826e-05\n", + "Grad decoder.fc1.2.bias: 0.00044775853166356683\n", + "Grad decoder.fc1.4.weight: 4.047561014886014e-05\n", + "Grad decoder.fc1.4.bias: 0.0005319122574292123\n", + "Grad decoder.fc2.weight: 0.00010274348460370675\n", + "Grad decoder.fc2.bias: 0.0019212279003113508\n", + "Grad _memory_unit.weight_ih_l0: 9.556417353451252e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.133525701239705e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.5761042707017623e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.960224148613634e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.554220403311774e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.3849649955518544e-05\n", + "Data X Sample: tensor([[1.6963, 1.9459, 2.0586, 2.0685, 2.2385, 2.4559, 2.6376, 2.5283, 2.6827,\n", + " 2.6681, 2.6743, 2.7577, 2.6653, 2.5765, 2.5042, 2.5560, 2.5205, 2.5108,\n", + " 2.4388, 2.4734, 2.3923, 2.5000, 2.4845, 2.4947, 2.5450, 2.6302, 2.4642,\n", + " 2.5246, 2.3105, 2.3614, 2.3972, 2.4345, 2.1582, 1.3937, 1.9364, 1.8193,\n", + " 1.6912, 1.6273, 1.6036, 1.5916, 1.2457, 0.7627, 0.7720, 1.3060, 1.9147,\n", + " 2.1329, 1.4754, 2.0174]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 8.1133e-02, 2.9477e-01, 3.8458e-01, 1.7605e+00, 1.2102e-01,\n", + " 2.8886e-01, -3.1573e-01, -3.2399e-01, 2.1719e-01, -4.8234e-01,\n", + " -2.3897e-01, 3.3440e-02, -2.5176e-01, 4.9720e-01, -9.4187e-02,\n", + " 7.9123e-01, 1.3995e+00, 9.3719e-01, 4.5590e-01, 5.5613e-01,\n", + " -1.6030e+00, 5.9659e-05, -8.9163e-02, -1.3181e+00, 6.9805e-01,\n", + " 6.6779e-01, 4.4559e-01, 1.0185e-01, -3.5068e-01, -3.1701e-01,\n", + " 2.4187e-01, 4.1976e-01, 8.4224e-01, 2.2960e-01, 1.4562e+00,\n", + " 6.9166e-01, -8.9580e-01, 3.8569e-01, -1.1155e-02, -4.5768e-01,\n", + " -4.0231e-01, -5.0972e-01, -4.4850e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3272, 0.2973, 0.1103, 0.1912, 0.0577, -0.1316, -0.2929, -0.3091,\n", + " -0.1601, -0.1758, -0.2013, 0.1121, 0.1611, 0.2290, 0.1490, 0.2482,\n", + " 0.1791, 0.0897, 0.0890, 0.0590, 0.0407, 0.0621, 0.0599, 0.0146,\n", + " 0.0291, 0.0416, -0.0509, 0.0244, 0.2083, 0.2275, 0.1867, 0.1102,\n", + " 0.2118, 0.1982, 0.1197, 0.1275, -0.0452, 0.0064, -0.0406, -0.2362,\n", + " -0.1769, -0.1784, -0.2415]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00013284783926792443\n", + "Grad encoder.fc1.bias: 0.00030933317611925304\n", + "Grad encoder.encoder.0.weight: 3.770375406020321e-05\n", + "Grad encoder.encoder.0.bias: 0.0002840958768501878\n", + "Grad encoder.encoder.2.weight: 2.8916470910189673e-05\n", + "Grad encoder.encoder.2.bias: 0.00026429627905599773\n", + "Grad encoder.encoder.4.weight: 6.926727655809373e-05\n", + "Grad encoder.encoder.4.bias: 0.0006950022070668638\n", + "Grad decoder.fc1.0.weight: 3.0332108508446254e-05\n", + "Grad decoder.fc1.0.bias: 0.00031850417144596577\n", + "Grad decoder.fc1.2.weight: 5.967674223938957e-05\n", + "Grad decoder.fc1.2.bias: 0.0006197906332090497\n", + "Grad decoder.fc1.4.weight: 5.119029083289206e-05\n", + "Grad decoder.fc1.4.bias: 0.000665500178001821\n", + "Grad decoder.fc2.weight: 0.00011379312491044402\n", + "Grad decoder.fc2.bias: 0.0019426598446443677\n", + "Grad _memory_unit.weight_ih_l0: 8.173844435077626e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.2998595997923985e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.7098767784773372e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.949476765934378e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.687265704385936e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.464482142589986e-05\n", + "Data X Sample: tensor([[1.4905, 1.7959, 1.9910, 2.0772, 2.0745, 2.1849, 2.2833, 2.1791, 3.9373,\n", + " 4.2336, 4.2668, 4.2514, 4.0968, 3.9834, 3.7551, 3.7416, 3.6369, 3.5844,\n", + " 3.7005, 3.5874, 3.6019, 3.4323, 3.0484, 2.9489, 2.8828, 2.9358, 2.8744,\n", + " 3.0100, 3.0598, 3.1671, 3.3805, 3.4293, 3.7929, 2.7782, 4.6302, 5.0080,\n", + " 5.0735, 5.4516, 6.0342, 5.9580, 1.2122, 0.7249, 0.7296, 1.2716, 1.7918,\n", + " 2.0528, 1.3190, 1.8532]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.8355, -0.5413, -1.0186, -1.5327, -1.4788, -1.1972, -0.2206, -0.0936,\n", + " -0.1375, 0.4982, 0.4491, 0.0161, 0.4891, -1.2547, -0.2384, -0.5546,\n", + " -3.2374, 2.1889, -0.8026, 0.5857, 0.6908, 0.8209, -0.8870, 0.5648,\n", + " -0.0312, -0.0358, -0.2805, 0.0316, -0.3633, 0.3937, 0.2332, -2.8886,\n", + " -0.2270, -0.7192, 0.5218, -0.0325, 0.0000, -0.2332, 1.1238, 0.6529,\n", + " 1.1279, 0.9720, 1.5983]], device='cuda:0')\n", + "Prediction Sample: tensor([[-1.5265e-01, -1.7180e-01, -6.7265e-03, -1.6777e-01, 2.0156e-02,\n", + " 1.3322e-01, 1.2693e-01, 1.9577e-01, 1.6337e-01, 1.5506e-01,\n", + " 1.4469e-01, -1.4408e-01, -1.5713e-01, -2.2399e-01, -1.3122e-01,\n", + " -1.9174e-01, -1.5665e-01, -1.8562e-03, -7.9564e-02, -8.1010e-02,\n", + " -7.8084e-03, -1.4851e-02, -2.3630e-02, -1.7284e-02, -3.3427e-02,\n", + " 2.6076e-02, -6.7523e-03, -7.2011e-02, -1.2275e-01, -1.7044e-01,\n", + " -1.8456e-01, -1.2861e-01, -2.3084e-01, -2.5296e-01, -1.3583e-01,\n", + " -1.4019e-01, -2.5606e-02, 3.4065e-02, 1.4785e-04, 1.7306e-01,\n", + " 2.3976e-01, 2.3653e-01, 1.6791e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 7.885144441388547e-05\n", + "Grad encoder.fc1.bias: 0.0004961343365721405\n", + "Grad encoder.encoder.0.weight: 3.4812626836355776e-05\n", + "Grad encoder.encoder.0.bias: 0.00042896659579128027\n", + "Grad encoder.encoder.2.weight: 3.670363730634563e-05\n", + "Grad encoder.encoder.2.bias: 0.0004893731093034148\n", + "Grad encoder.encoder.4.weight: 0.0001330909872194752\n", + "Grad encoder.encoder.4.bias: 0.0016562113305553794\n", + "Grad decoder.fc1.0.weight: 5.2133789722574875e-05\n", + "Grad decoder.fc1.0.bias: 0.0006426357431337237\n", + "Grad decoder.fc1.2.weight: 7.000578625593334e-05\n", + "Grad decoder.fc1.2.bias: 0.0009311960311606526\n", + "Grad decoder.fc1.4.weight: 6.184709491208196e-05\n", + "Grad decoder.fc1.4.bias: 0.0009251153096556664\n", + "Grad decoder.fc2.weight: 0.00013372056127991527\n", + "Grad decoder.fc2.bias: 0.0014783490914851427\n", + "Grad _memory_unit.weight_ih_l0: 1.6720257917768322e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00013175691128708422\n", + "Grad _memory_unit.bias_hh_l0: 6.5820429881569e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.541150469274726e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00021795670909341425\n", + "Grad _memory_unit.bias_hh_l1: 0.00011127575999125838\n", + "Data X Sample: tensor([[-0.0032, 0.0117, -0.0030, 0.0000, -0.0017, -0.0029, -0.0046, 0.0142,\n", + " -0.0171, 0.0032, -0.0063, 0.0058, 0.0022, 0.0000, -0.0151, 0.0068,\n", + " -0.0031, 0.0135, 0.0103, 0.0130, 0.0172, 0.0000, -0.0024, -0.0191,\n", + " -0.0094, 0.0235, 0.0186, 0.0245, -0.0208, 0.0360, -0.0105, 0.0111,\n", + " 0.0088, -0.0137, -0.0049, 0.0389, 0.0157, 0.0053, 0.0380, 0.0000,\n", + " 0.0048, 0.0159, 0.0040, 0.0086, 0.0198, 0.0000, 0.0204, -0.0313]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.8178, 1.6954, -0.4459, 0.1397, -0.1354, -0.2006, -0.9791, -1.0028,\n", + " -0.4959, -0.7578, -0.8291, -0.9153, 0.0813, 0.8941, 1.1233, 1.2938,\n", + " 0.3436, -1.2027, -0.1674, 0.4254, -0.5433, 2.4943, -0.5557, -0.4741,\n", + " 0.4209, 3.8107, 0.6125, 0.4349, 0.7895, 0.9394, 1.0522, 0.2167,\n", + " 1.0828, 1.0719, 0.7275, 0.4690, -0.0107, -0.0869, 1.1339, -0.9677,\n", + " -0.7722, -0.8247, -0.7457]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.9384, 0.6612, 0.1681, 0.5253, -0.3547, -0.6942, -1.0989, -1.0881,\n", + " -0.8128, -0.7803, -0.7881, 0.4088, 0.5975, 0.6683, 0.3711, 0.5973,\n", + " 0.4039, 0.0498, 0.1358, 0.0747, 0.0284, 0.0489, 0.1980, 0.1521,\n", + " 0.0301, -0.0476, 0.2170, 0.5123, 1.0116, 0.9416, 0.7785, 0.4358,\n", + " 0.6912, 0.5216, 0.3567, 0.3605, -0.1719, -0.0830, -0.0481, -0.8320,\n", + " -0.6540, -0.5273, -0.4742]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00010834642307600006\n", + "Grad encoder.fc1.bias: 0.0013465305091813207\n", + "Grad encoder.encoder.0.weight: 4.452669236343354e-05\n", + "Grad encoder.encoder.0.bias: 0.0010189180029556155\n", + "Grad encoder.encoder.2.weight: 4.3543688661884516e-05\n", + "Grad encoder.encoder.2.bias: 0.000886084046214819\n", + "Grad encoder.encoder.4.weight: 0.00015751863247714937\n", + "Grad encoder.encoder.4.bias: 0.002136319875717163\n", + "Grad decoder.fc1.0.weight: 7.855748845031485e-05\n", + "Grad decoder.fc1.0.bias: 0.0008157853735610843\n", + "Grad decoder.fc1.2.weight: 9.849174239207059e-05\n", + "Grad decoder.fc1.2.bias: 0.0008277150336652994\n", + "Grad decoder.fc1.4.weight: 7.221649866551161e-05\n", + "Grad decoder.fc1.4.bias: 0.000615340075455606\n", + "Grad decoder.fc2.weight: 0.00017413971363566816\n", + "Grad decoder.fc2.bias: 0.0019691460765898228\n", + "Grad _memory_unit.weight_ih_l0: 3.2214044040301815e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.000160508046974428\n", + "Grad _memory_unit.bias_hh_l0: 8.209771476686001e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.692084859125316e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00025708897737786174\n", + "Grad _memory_unit.bias_hh_l1: 0.0001332426763838157\n", + "Data X Sample: tensor([[-0.0011, 0.0058, 0.0075, 0.0131, 0.0034, 0.0221, 0.0062, 0.0071,\n", + " 0.0269, 0.0284, 0.0286, 0.0039, 0.0155, 0.0000, 0.0151, 0.0068,\n", + " -0.0849, -0.0967, -0.1115, -0.0800, -0.1080, -0.0643, -0.0723, -0.0534,\n", + " -0.0638, -0.1254, -0.0986, -0.1754, -0.0659, -0.0033, -0.0315, -0.0055,\n", + " 0.0022, -0.0343, 0.0270, 0.0438, 0.0197, 0.0318, 0.0380, 0.0028,\n", + " 0.0191, 0.0179, 0.0061, 0.0000, 0.0159, -0.0114, -0.0068, 0.0469]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[-0.9887, 0.1453, 1.7121, 0.1691, 0.9152, 1.0092, -0.0062, -0.3420,\n", + " 0.7735, 0.8308, 0.9811, 0.0520, -0.0582, 0.4725, 1.4761, 0.8255,\n", + " 0.4702, 0.1308, 0.0763, -0.2644, 0.4681, 0.7199, -0.5269, 0.5235,\n", + " 0.7505, -0.5190, -0.6960, -1.8956, -1.7365, -1.5616, -0.7019, -0.0129,\n", + " 0.4556, -2.0475, -0.3424, 0.7111, 0.2642, -0.6423, 0.3209, -1.2456,\n", + " -1.7821, 0.0142, -0.9472]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.6558, 0.5077, 0.1644, 0.4036, 0.0647, -0.3009, -0.6248, -0.7134,\n", + " -0.3651, -0.4156, -0.3895, 0.2910, 0.3495, 0.4591, 0.2988, 0.4652,\n", + " 0.3815, 0.1515, 0.1601, 0.1275, 0.0230, 0.0581, 0.1377, 0.1015,\n", + " 0.0763, 0.0600, -0.0331, 0.1629, 0.4809, 0.5151, 0.4569, 0.2647,\n", + " 0.4664, 0.4287, 0.2333, 0.2555, -0.0971, -0.0386, -0.0469, -0.5161,\n", + " -0.4478, -0.3854, -0.4186]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00015213870210573077\n", + "Grad encoder.fc1.bias: 0.0008507947204634547\n", + "Grad encoder.encoder.0.weight: 6.303055124590173e-05\n", + "Grad encoder.encoder.0.bias: 0.0007751774392090738\n", + "Grad encoder.encoder.2.weight: 5.304161095409654e-05\n", + "Grad encoder.encoder.2.bias: 0.0007040018681436777\n", + "Grad encoder.encoder.4.weight: 0.00011724759679054841\n", + "Grad encoder.encoder.4.bias: 0.0015684310346841812\n", + "Grad decoder.fc1.0.weight: 6.028082862030715e-05\n", + "Grad decoder.fc1.0.bias: 0.000696319155395031\n", + "Grad decoder.fc1.2.weight: 7.511407602578402e-05\n", + "Grad decoder.fc1.2.bias: 0.0008506294689141214\n", + "Grad decoder.fc1.4.weight: 5.902015254832804e-05\n", + "Grad decoder.fc1.4.bias: 0.0008538037072867155\n", + "Grad decoder.fc2.weight: 0.00013923745427746326\n", + "Grad decoder.fc2.bias: 0.0022088491823524237\n", + "Grad _memory_unit.weight_ih_l0: 1.5735096894786693e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.640677308198065e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.9205591494683176e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.482255230366718e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00013983887038193643\n", + "Grad _memory_unit.bias_hh_l1: 7.386636571027339e-05\n", + "Data X Sample: tensor([[1.6698, 1.9342, 2.1172, 2.2609, 2.3016, 2.4957, 2.4158, 2.4985, 2.5728,\n", + " 2.5307, 2.5347, 2.6077, 2.6032, 2.4647, 2.4866, 2.4178, 2.3932, 2.5108,\n", + " 2.6391, 2.5757, 2.6008, 2.6194, 2.5978, 2.7218, 2.6313, 2.7477, 2.8105,\n", + " 2.7857, 2.4319, 2.5743, 2.4252, 2.3709, 2.1340, 1.3571, 1.8482, 1.7536,\n", + " 1.6794, 1.6220, 1.6480, 1.5406, 1.4031, 0.7806, 0.8003, 1.3663, 2.0415,\n", + " 2.2415, 1.4958, 2.1581]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0726, 0.6513, 0.9826, 0.3509, 0.5879, -0.8588, -0.3557, -0.2168,\n", + " 0.3430, -0.1331, -0.1628, 0.0523, 1.1497, 0.1165, 0.1036, 0.9458,\n", + " 0.3006, 0.5411, 0.5536, -0.3073, -1.0262, 0.9599, -1.2927, 1.9083,\n", + " -0.4025, -0.7412, -0.6256, 0.2484, 0.0107, -0.2055, 1.0851, 0.5337,\n", + " 0.4439, 0.8955, 0.3733, 0.2737, 0.0000, 0.7357, -1.1818, -0.0860,\n", + " -0.0232, 0.1431, -0.0099]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4696, 0.4681, 0.1654, 0.3051, 0.1586, -0.1774, -0.4135, -0.4582,\n", + " -0.2133, -0.2725, -0.2811, 0.1936, 0.2237, 0.3206, 0.2252, 0.3784,\n", + " 0.3422, 0.1335, 0.1275, 0.1332, 0.0588, 0.0691, 0.0954, 0.0211,\n", + " 0.0939, 0.0836, -0.0856, -0.0011, 0.2537, 0.3088, 0.3076, 0.1454,\n", + " 0.3316, 0.3207, 0.1893, 0.2127, -0.0519, -0.0319, -0.0200, -0.3822,\n", + " -0.3061, -0.3185, -0.3769]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 8.066576265264302e-05\n", + "Grad encoder.fc1.bias: 0.0002280596090713516\n", + "Grad encoder.encoder.0.weight: 3.2181094866245985e-05\n", + "Grad encoder.encoder.0.bias: 0.00018365055439062417\n", + "Grad encoder.encoder.2.weight: 2.8684511562460102e-05\n", + "Grad encoder.encoder.2.bias: 0.0002455630456097424\n", + "Grad encoder.encoder.4.weight: 6.00227176619228e-05\n", + "Grad encoder.encoder.4.bias: 0.000457301561255008\n", + "Grad decoder.fc1.0.weight: 2.4826920707710087e-05\n", + "Grad decoder.fc1.0.bias: 0.00023937143851071596\n", + "Grad decoder.fc1.2.weight: 3.292701512691565e-05\n", + "Grad decoder.fc1.2.bias: 0.0004009593976661563\n", + "Grad decoder.fc1.4.weight: 3.272610774729401e-05\n", + "Grad decoder.fc1.4.bias: 0.00052495306590572\n", + "Grad decoder.fc2.weight: 0.00011628923675743863\n", + "Grad decoder.fc2.bias: 0.0017944078426808119\n", + "Grad _memory_unit.weight_ih_l0: 6.1145369727455545e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.2567050109500997e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.1687452570185997e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.5968208774429513e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.1364309911150485e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.618515100039076e-05\n", + "Data X Sample: tensor([[1.6178, 1.8439, 1.9940, 2.0816, 2.1258, 2.1642, 2.2109, 2.3168, 2.3116,\n", + " 2.3348, 2.3539, 2.4168, 2.4101, 2.3475, 2.3000, 2.2195, 2.2737, 2.3503,\n", + " 2.3273, 2.4102, 2.5297, 2.4984, 2.5086, 2.5023, 2.4980, 2.5597, 2.6240,\n", + " 2.7163, 2.3486, 2.4039, 2.4182, 2.3930, 2.2770, 1.4967, 1.9536, 1.8485,\n", + " 1.7285, 1.5504, 1.5656, 1.5037, 1.2027, 0.7348, 0.7397, 1.2544, 1.8909,\n", + " 2.0757, 1.2578, 1.9313]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3488, 0.5534, 0.2232, 0.2877, -0.3500, 0.3835, -0.2663, -0.2921,\n", + " -0.7823, -0.8884, -0.4468, 0.8210, 0.3174, 1.1078, 0.4917, 0.7349,\n", + " -0.1645, 0.5426, 0.1275, -0.0642, 1.5110, 1.0769, 1.0519, 1.0199,\n", + " 1.0992, -0.3021, 0.0436, -0.9647, 0.5782, -0.1387, 0.0475, 0.3327,\n", + " 0.6180, 0.7478, -0.0385, 0.6202, 0.0000, 0.7357, -1.1818, -0.1496,\n", + " 0.1439, -0.1197, -0.3365]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5065, 0.5141, 0.1809, 0.3293, 0.1780, -0.1922, -0.4487, -0.4963,\n", + " -0.2306, -0.3031, -0.3052, 0.2124, 0.2445, 0.3518, 0.2427, 0.4130,\n", + " 0.3856, 0.1470, 0.1386, 0.1518, 0.0614, 0.0744, 0.1070, 0.0264,\n", + " 0.1077, 0.0966, -0.0910, -0.0044, 0.2714, 0.3396, 0.3435, 0.1611,\n", + " 0.3637, 0.3567, 0.2069, 0.2362, -0.0541, -0.0420, -0.0098, -0.4231,\n", + " -0.3396, -0.3554, -0.4149]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00010802822362165898\n", + "Grad encoder.fc1.bias: 0.000366476975614205\n", + "Grad encoder.encoder.0.weight: 3.2093808840727434e-05\n", + "Grad encoder.encoder.0.bias: 0.0003484150511212647\n", + "Grad encoder.encoder.2.weight: 3.043399192392826e-05\n", + "Grad encoder.encoder.2.bias: 0.00033610069658607244\n", + "Grad encoder.encoder.4.weight: 9.310604946222156e-05\n", + "Grad encoder.encoder.4.bias: 0.001013998407870531\n", + "Grad decoder.fc1.0.weight: 3.921873212675564e-05\n", + "Grad decoder.fc1.0.bias: 0.00038576696533709764\n", + "Grad decoder.fc1.2.weight: 4.846997035201639e-05\n", + "Grad decoder.fc1.2.bias: 0.0004648740286938846\n", + "Grad decoder.fc1.4.weight: 4.063921733177267e-05\n", + "Grad decoder.fc1.4.bias: 0.0005404402036219835\n", + "Grad decoder.fc2.weight: 0.00014400386135093868\n", + "Grad decoder.fc2.bias: 0.0020479632075875998\n", + "Grad _memory_unit.weight_ih_l0: 1.1130673556181137e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.066894224612042e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.1026090912055224e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.410014298628084e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00012136168516008183\n", + "Grad _memory_unit.bias_hh_l1: 6.376966484822333e-05\n", + "Data X Sample: tensor([[1.6666, 1.9197, 2.0962, 2.1516, 2.1667, 2.2909, 2.3572, 2.4460, 2.5557,\n", + " 2.5386, 2.4427, 2.5142, 2.4190, 2.3011, 2.3933, 2.3631, 2.4089, 2.5069,\n", + " 2.5090, 2.4809, 2.6057, 2.5949, 2.5592, 2.5729, 2.5300, 2.6667, 2.4855,\n", + " 2.5042, 2.1370, 2.2238, 2.2257, 2.1029, 1.7336, 1.1534, 1.5859, 1.5664,\n", + " 1.4808, 1.5053, 1.5022, 1.3732, 1.3936, 0.8105, 0.7821, 1.2974, 2.0653,\n", + " 2.1558, 1.4754, 2.1816]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.8834, 0.4619, -0.6678, 2.1345, -0.4658, -0.4932, -0.8900, -0.3243,\n", + " 1.3347, -0.2435, -0.3361, -0.5890, 0.1283, 1.5495, -0.0523, 0.6254,\n", + " -0.2082, 0.7639, 0.4347, 0.9652, -4.4766, 0.9156, 0.3210, -1.2255,\n", + " 0.0868, -0.6902, 0.0242, -1.1166, 0.4893, 0.8073, 0.7447, -0.5697,\n", + " 2.0466, 1.1039, 0.1713, -0.2249, -1.0365, 0.7952, 0.1391, -1.1532,\n", + " -0.8124, -1.2196, -0.6041]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4563, 0.4527, 0.1584, 0.2848, 0.1414, -0.1746, -0.4124, -0.4495,\n", + " -0.2074, -0.2732, -0.2799, 0.1880, 0.2160, 0.3186, 0.2078, 0.3736,\n", + " 0.3449, 0.1307, 0.1156, 0.1292, 0.0470, 0.0637, 0.1001, 0.0312,\n", + " 0.0943, 0.0872, -0.0714, 0.0048, 0.2559, 0.3108, 0.3100, 0.1485,\n", + " 0.3290, 0.3155, 0.1878, 0.2138, -0.0495, -0.0457, -0.0170, -0.3835,\n", + " -0.3029, -0.3057, -0.3705]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00018640555208548903\n", + "Grad encoder.fc1.bias: 0.0004784481134265661\n", + "Grad encoder.encoder.0.weight: 4.611659824149683e-05\n", + "Grad encoder.encoder.0.bias: 0.0003916746354661882\n", + "Grad encoder.encoder.2.weight: 3.222547093173489e-05\n", + "Grad encoder.encoder.2.bias: 0.0003082547045778483\n", + "Grad encoder.encoder.4.weight: 7.505524263251573e-05\n", + "Grad encoder.encoder.4.bias: 0.00031075612059794366\n", + "Grad decoder.fc1.0.weight: 3.161720815114677e-05\n", + "Grad decoder.fc1.0.bias: 0.00028078624745830894\n", + "Grad decoder.fc1.2.weight: 3.523112536640838e-05\n", + "Grad decoder.fc1.2.bias: 0.00046377978287637234\n", + "Grad decoder.fc1.4.weight: 3.379565532668494e-05\n", + "Grad decoder.fc1.4.bias: 0.0004958576755598187\n", + "Grad decoder.fc2.weight: 0.00010567119170445949\n", + "Grad decoder.fc2.bias: 0.0015617222525179386\n", + "Grad _memory_unit.weight_ih_l0: 7.227637070172932e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.413633410469629e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.2464410247048363e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.739661795203574e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.02699040225707e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.6428173441672698e-05\n", + "Data X Sample: tensor([[1.4831, 1.7682, 1.8362, 1.9242, 2.0899, 2.3572, 2.4050, 2.5170, 2.5191,\n", + " 2.5971, 2.5918, 2.6505, 2.6343, 2.4647, 2.3731, 2.4780, 2.4498, 2.4644,\n", + " 2.5049, 2.4251, 2.3800, 2.3790, 2.3833, 2.3057, 2.3610, 2.4291, 2.3869,\n", + " 2.3370, 2.0642, 2.3483, 2.2817, 2.2770, 2.2550, 1.4395, 1.9658, 1.7974,\n", + " 1.6381, 1.5053, 1.5593, 1.5803, 1.2600, 0.6791, 0.6831, 1.3261, 1.8077,\n", + " 2.0700, 1.2850, 2.0721]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.8773, -0.5569, -0.7482, 0.2675, 0.8924, -0.4634, -0.3407, -0.4401,\n", + " 0.6720, 0.7911, 0.8861, 0.7709, 1.1750, -0.0805, 0.0980, 0.4069,\n", + " 1.2006, 1.2684, 1.1398, 1.0216, 0.7888, 1.6344, 1.6920, 0.3624,\n", + " 0.5968, 0.8046, 0.6755, 0.1897, -0.4278, -0.1689, -0.1090, 0.0164,\n", + " 0.4593, 1.3154, -0.9905, -0.7278, -0.2666, -0.8831, 0.2870, -0.4243,\n", + " 0.0460, -0.9598, -0.1287]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4947, 0.5041, 0.1764, 0.3091, 0.1636, -0.1912, -0.4512, -0.4886,\n", + " -0.2254, -0.3108, -0.3088, 0.2099, 0.2360, 0.3543, 0.2282, 0.4113,\n", + " 0.3905, 0.1452, 0.1291, 0.1537, 0.0524, 0.0759, 0.1140, 0.0349,\n", + " 0.1120, 0.1021, -0.0758, -0.0007, 0.2720, 0.3440, 0.3491, 0.1673,\n", + " 0.3657, 0.3542, 0.2084, 0.2461, -0.0473, -0.0548, -0.0072, -0.4283,\n", + " -0.3417, -0.3482, -0.4127]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003253932227380574\n", + "Grad encoder.fc1.bias: 0.00018298628856427968\n", + "Grad encoder.encoder.0.weight: 8.452977635897696e-05\n", + "Grad encoder.encoder.0.bias: 0.0002585992042440921\n", + "Grad encoder.encoder.2.weight: 6.048174691386521e-05\n", + "Grad encoder.encoder.2.bias: 0.0003243404207751155\n", + "Grad encoder.encoder.4.weight: 0.0001279400021303445\n", + "Grad encoder.encoder.4.bias: 0.0007682036375626922\n", + "Grad decoder.fc1.0.weight: 5.532407158170827e-05\n", + "Grad decoder.fc1.0.bias: 0.00043364684097468853\n", + "Grad decoder.fc1.2.weight: 5.514032091014087e-05\n", + "Grad decoder.fc1.2.bias: 0.0006460059084929526\n", + "Grad decoder.fc1.4.weight: 4.980218727723695e-05\n", + "Grad decoder.fc1.4.bias: 0.0007444374496117234\n", + "Grad decoder.fc2.weight: 0.00010419880709378049\n", + "Grad decoder.fc2.bias: 0.0018260603537783027\n", + "Grad _memory_unit.weight_ih_l0: 1.0409217793494463e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.1804013158543967e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.1791809811256826e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.501055966306012e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.669554179301485e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.9491460483986884e-05\n", + "Data X Sample: tensor([[1.3112, 1.4012, 1.6364, 1.7317, 1.9021, 2.0523, 2.2139, 2.1805, 3.7250,\n", + " 4.3079, 4.4222, 4.4267, 4.0790, 3.8498, 3.9518, 3.6500, 3.6448, 3.6134,\n", + " 3.4713, 3.5279, 3.6289, 3.5027, 3.0026, 2.9680, 2.7946, 2.8731, 2.9623,\n", + " 2.8876, 3.0390, 3.2817, 3.2161, 3.3049, 3.9117, 2.8927, 4.6498, 4.9228,\n", + " 5.1246, 5.5205, 5.9645, 5.9835, 1.0166, 0.5835, 0.5841, 1.0965, 1.5421,\n", + " 1.7955, 1.1898, 1.7124]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1795, 0.5574, 0.8423, 0.9508, 0.9746, -0.0861, -0.2265, -0.1276,\n", + " 0.8215, -0.1320, -0.2269, -0.2459, 0.3557, 0.6810, 0.5039, 1.0727,\n", + " -0.3481, -0.6195, 0.0828, 0.0349, -0.8579, -0.1793, 0.5273, -0.4620,\n", + " -0.8040, 0.2101, -0.8808, -0.1480, 0.2965, 0.4629, -0.1785, -0.6912,\n", + " 2.2160, 1.1384, 1.2661, 1.4661, 0.1281, -0.3276, 0.3857, -1.3227,\n", + " 0.1696, 0.3761, 0.3722]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2127, -0.2587, -0.0479, -0.1987, -0.0315, 0.1468, 0.1756, 0.2640,\n", + " 0.2301, 0.2085, 0.2264, -0.1529, -0.1713, -0.2910, -0.1869, -0.2707,\n", + " -0.1895, -0.0376, -0.0978, -0.1028, -0.0424, -0.0256, -0.0393, -0.0321,\n", + " -0.0194, 0.0394, 0.0076, -0.0907, -0.1618, -0.1807, -0.2231, -0.1811,\n", + " -0.2495, -0.2984, -0.1746, -0.1573, -0.0121, -0.0117, -0.0271, 0.2762,\n", + " 0.3275, 0.3064, 0.2123]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003606608370319009\n", + "Grad encoder.fc1.bias: 0.0002634095726534724\n", + "Grad encoder.encoder.0.weight: 9.32800758164376e-05\n", + "Grad encoder.encoder.0.bias: 0.0003020502917934209\n", + "Grad encoder.encoder.2.weight: 6.14350865362212e-05\n", + "Grad encoder.encoder.2.bias: 0.00041177470120601356\n", + "Grad encoder.encoder.4.weight: 0.00011445091513451189\n", + "Grad encoder.encoder.4.bias: 0.00157146155834198\n", + "Grad decoder.fc1.0.weight: 6.604826921829954e-05\n", + "Grad decoder.fc1.0.bias: 0.0007286944892257452\n", + "Grad decoder.fc1.2.weight: 6.445744656957686e-05\n", + "Grad decoder.fc1.2.bias: 0.0005639335722662508\n", + "Grad decoder.fc1.4.weight: 4.373971023596823e-05\n", + "Grad decoder.fc1.4.bias: 0.0005672791739925742\n", + "Grad decoder.fc2.weight: 0.00011426721175666898\n", + "Grad decoder.fc2.bias: 0.0015820940025150776\n", + "Grad _memory_unit.weight_ih_l0: 6.837253749836236e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.385033025755547e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.344013591937255e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.783892447652761e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001239002449437976\n", + "Grad _memory_unit.bias_hh_l1: 6.429894710890949e-05\n", + "Data X Sample: tensor([[1.5531, 1.7362, 1.8933, 2.0532, 2.2385, 2.3322, 2.3926, 2.4389, 2.6363,\n", + " 2.5307, 2.5505, 2.6252, 2.5677, 2.5247, 2.4261, 2.3659, 2.3774, 2.3328,\n", + " 2.3583, 2.3711, 2.3653, 2.4709, 2.4218, 2.4718, 2.5056, 2.5753, 2.5627,\n", + " 2.5287, 2.2688, 2.3417, 2.3167, 2.2715, 2.2836, 1.4669, 1.9536, 1.8096,\n", + " 1.6420, 1.5583, 1.5149, 1.5491, 1.2552, 0.7567, 0.7053, 1.2027, 1.7799,\n", + " 2.0071, 1.3734, 1.9079]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6506, 0.6731, 0.4013, 0.1751, -0.2800, -0.6858, -1.4069, -2.3466,\n", + " -1.5323, -1.8478, -1.5542, -3.7984, -1.1191, -0.3208, 0.4618, -0.3309,\n", + " -1.2007, -0.3909, -0.2562, 0.0413, 0.5426, -0.6114, 0.8749, -0.1265,\n", + " -0.2248, 0.1101, 0.1259, 0.1346, -0.4601, 0.4121, 0.9410, 1.1233,\n", + " 0.4552, 1.0929, -0.2048, 0.3071, -0.0558, -0.8266, 0.6318, -0.8341,\n", + " -1.0465, 0.6656, 0.4207]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4684, 0.4848, 0.1690, 0.2853, 0.1558, -0.1799, -0.4342, -0.4642,\n", + " -0.2100, -0.3087, -0.3036, 0.2043, 0.2208, 0.3404, 0.2109, 0.3951,\n", + " 0.3845, 0.1422, 0.1219, 0.1581, 0.0519, 0.0848, 0.1195, 0.0313,\n", + " 0.1127, 0.1049, -0.0665, -0.0048, 0.2498, 0.3339, 0.3411, 0.1639,\n", + " 0.3605, 0.3421, 0.2042, 0.2490, -0.0397, -0.0626, -0.0028, -0.4185,\n", + " -0.3331, -0.3402, -0.4006]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005564961466006935\n", + "Grad encoder.fc1.bias: 0.0007122544338926673\n", + "Grad encoder.encoder.0.weight: 0.00014015266788192093\n", + "Grad encoder.encoder.0.bias: 0.0006249225698411465\n", + "Grad encoder.encoder.2.weight: 0.00010207731975242496\n", + "Grad encoder.encoder.2.bias: 0.0007272762013599277\n", + "Grad encoder.encoder.4.weight: 0.0002064049185719341\n", + "Grad encoder.encoder.4.bias: 0.0017195346299558878\n", + "Grad decoder.fc1.0.weight: 8.115656237350777e-05\n", + "Grad decoder.fc1.0.bias: 0.0007463793735951185\n", + "Grad decoder.fc1.2.weight: 0.00010541071969782934\n", + "Grad decoder.fc1.2.bias: 0.0012763126287609339\n", + "Grad decoder.fc1.4.weight: 7.646787707926705e-05\n", + "Grad decoder.fc1.4.bias: 0.001226559397764504\n", + "Grad decoder.fc2.weight: 0.00015619206533301622\n", + "Grad decoder.fc2.bias: 0.0026614032685756683\n", + "Grad _memory_unit.weight_ih_l0: 1.777220495569054e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.189871783135459e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.243424725951627e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.230377377709374e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00013930807472206652\n", + "Grad _memory_unit.bias_hh_l1: 7.309393549803644e-05\n", + "Data X Sample: tensor([[1.5223, 1.6619, 1.7611, 1.8914, 1.9431, 2.0434, 2.1693, 1.9960, 3.5150,\n", + " 4.0820, 3.9812, 3.9184, 3.8704, 3.7652, 3.6820, 3.4886, 3.4451, 3.3523,\n", + " 3.2586, 3.2843, 3.4130, 3.2654, 2.9616, 2.8287, 2.7852, 2.8940, 2.9996,\n", + " 2.9774, 3.0425, 3.2162, 3.1951, 3.2607, 3.5465, 2.5883, 4.2724, 4.5118,\n", + " 4.9083, 5.1547, 5.6222, 5.6374, 1.1788, 0.6353, 0.6164, 1.1539, 1.6768,\n", + " 1.8127, 1.3190, 1.6264]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.0467, -0.3849, 1.3122, -0.5315, 0.1239, -0.0218, 0.6650, 0.8958,\n", + " 0.6970, 0.9940, 0.5074, 0.5683, -0.9261, -0.0503, 0.2765, -0.8028,\n", + " 0.4071, -0.4246, 0.7241, -0.2411, 2.3810, -0.0376, -0.5651, -0.9131,\n", + " 0.3129, 0.0875, 0.4025, -0.0191, -0.1074, -0.4597, -1.4095, -0.5126,\n", + " -0.5918, -0.5132, -1.1763, 1.3007, 0.0000, -0.0459, 0.5296, 0.3957,\n", + " 0.5492, 0.3254, -0.1459]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2528, -0.3021, -0.0825, -0.2052, -0.0663, 0.1477, 0.1872, 0.3162,\n", + " 0.2557, 0.2524, 0.2669, -0.1560, -0.1934, -0.3184, -0.2117, -0.3178,\n", + " -0.2053, -0.0596, -0.1158, -0.1150, -0.0568, -0.0232, -0.0476, -0.0445,\n", + " -0.0102, 0.0502, 0.0196, -0.0944, -0.1814, -0.1847, -0.2458, -0.2114,\n", + " -0.2491, -0.3133, -0.1933, -0.1779, -0.0212, -0.0302, -0.0315, 0.3312,\n", + " 0.3744, 0.3554, 0.2376]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002587870694696903\n", + "Grad encoder.fc1.bias: 0.0004018222389277071\n", + "Grad encoder.encoder.0.weight: 6.574759754585102e-05\n", + "Grad encoder.encoder.0.bias: 0.0003195687895640731\n", + "Grad encoder.encoder.2.weight: 5.599306314252317e-05\n", + "Grad encoder.encoder.2.bias: 0.0003174245939590037\n", + "Grad encoder.encoder.4.weight: 0.00013785834016744047\n", + "Grad encoder.encoder.4.bias: 0.001034460961818695\n", + "Grad decoder.fc1.0.weight: 5.100716953165829e-05\n", + "Grad decoder.fc1.0.bias: 0.00047705593169666827\n", + "Grad decoder.fc1.2.weight: 6.845113966846839e-05\n", + "Grad decoder.fc1.2.bias: 0.0008403027895838022\n", + "Grad decoder.fc1.4.weight: 6.146342639112845e-05\n", + "Grad decoder.fc1.4.bias: 0.0007524434477090836\n", + "Grad decoder.fc2.weight: 0.00015593400166835636\n", + "Grad decoder.fc2.bias: 0.0018512159585952759\n", + "Grad _memory_unit.weight_ih_l0: 1.6373445760109462e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.922003765590489e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.9980601539136842e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.233157480688533e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011564033047761768\n", + "Grad _memory_unit.bias_hh_l1: 5.896300353924744e-05\n", + "Data X Sample: tensor([[1.3748, 1.3997, 1.5026, 1.7624, 2.0319, 2.0876, 2.2432, 2.8123, 4.3230,\n", + " 4.2589, 4.3905, 4.3059, 4.1079, 4.0570, 3.8434, 3.7526, 3.7202, 3.6676,\n", + " 3.5374, 3.5837, 3.6902, 3.5425, 3.0267, 2.9737, 2.8246, 2.9070, 2.9890,\n", + " 3.0997, 3.1986, 3.2620, 3.2510, 3.3602, 3.7533, 2.7462, 4.5224, 4.9131,\n", + " 5.1994, 5.5390, 5.9645, 5.8700, 0.9259, 0.5357, 0.5538, 0.9558, 1.5103,\n", + " 1.6983, 1.1014, 1.6655]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.6988e-03, 3.0510e-01, 5.5131e-01, 8.5796e-01, 6.8334e-01,\n", + " 4.3826e-01, 3.1800e-01, 1.5836e-03, -6.8821e-01, 1.2837e-02,\n", + " -8.4343e-01, -8.7525e-02, 6.5094e-01, 2.6213e-01, -3.0653e-01,\n", + " 6.0198e-01, 8.5607e-01, 8.9136e-01, 1.1122e+00, 1.0593e+00,\n", + " 2.1065e+00, 6.5720e-01, 9.3341e-01, 2.6447e-01, -9.2203e-01,\n", + " 1.2770e-01, -7.9265e-01, -7.7788e-01, 4.9583e-01, 3.9251e-01,\n", + " 7.3845e-01, -1.8977e-01, -1.1918e-01, 3.1915e-01, -7.3832e-01,\n", + " -9.1599e-01, 8.7631e-01, 5.2101e-01, -6.1344e-01, 7.4048e-02,\n", + " -2.8105e-01, 7.1835e-01, -5.7642e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2688, -0.3155, -0.0768, -0.1921, -0.0298, 0.1860, 0.2209, 0.3468,\n", + " 0.2912, 0.2850, 0.2853, -0.1674, -0.2120, -0.3465, -0.2271, -0.3410,\n", + " -0.2167, -0.0528, -0.1230, -0.1213, -0.0579, -0.0295, -0.0482, -0.0422,\n", + " -0.0208, 0.0619, 0.0011, -0.1210, -0.2127, -0.2098, -0.2719, -0.2260,\n", + " -0.2837, -0.3442, -0.2125, -0.1843, -0.0133, -0.0287, -0.0328, 0.3485,\n", + " 0.3970, 0.3750, 0.2521]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00011140060087200254\n", + "Grad encoder.fc1.bias: 0.0006614747107960284\n", + "Grad encoder.encoder.0.weight: 3.851120709441602e-05\n", + "Grad encoder.encoder.0.bias: 0.00047484601964242756\n", + "Grad encoder.encoder.2.weight: 3.950343671021983e-05\n", + "Grad encoder.encoder.2.bias: 0.0004311157390475273\n", + "Grad encoder.encoder.4.weight: 0.00010946705879177898\n", + "Grad encoder.encoder.4.bias: 0.0009169612894766033\n", + "Grad decoder.fc1.0.weight: 4.3167656258447096e-05\n", + "Grad decoder.fc1.0.bias: 0.00040971190901473165\n", + "Grad decoder.fc1.2.weight: 5.1907387387473136e-05\n", + "Grad decoder.fc1.2.bias: 0.0004148169537074864\n", + "Grad decoder.fc1.4.weight: 3.717910294653848e-05\n", + "Grad decoder.fc1.4.bias: 0.00041905793477781117\n", + "Grad decoder.fc2.weight: 0.0001449705450795591\n", + "Grad decoder.fc2.bias: 0.002064458094537258\n", + "Grad _memory_unit.weight_ih_l0: 1.640811751713045e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.5168945285258815e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.4369916243595071e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.163220637565246e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.772737495135516e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.0196952138794586e-05\n", + "Data X Sample: tensor([[1.5287, 1.7740, 1.9955, 2.0400, 2.1531, 2.2880, 2.3588, 2.3878, 2.4264,\n", + " 2.5481, 2.4966, 2.5765, 2.4967, 2.4620, 2.4109, 2.3563, 2.3649, 2.3851,\n", + " 2.3397, 2.3804, 2.4070, 2.4816, 2.4749, 2.3668, 2.4267, 2.4787, 2.3949,\n", + " 2.4227, 2.1856, 2.3024, 2.2082, 2.2411, 2.1692, 1.4326, 1.9291, 1.7731,\n", + " 1.6086, 1.4735, 1.5339, 1.5462, 1.1932, 0.7408, 0.7296, 1.2687, 1.8354,\n", + " 2.0242, 1.5230, 1.8844]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 9.0502e-01, 5.9396e-01, -2.4133e-01, 9.9373e-02, -3.6660e-01,\n", + " -1.7139e+00, -8.3035e-01, -2.2166e-01, -6.5095e-01, -3.3627e-01,\n", + " -4.0872e-01, 1.1664e-01, 5.0750e-01, -5.5263e-02, 9.0130e-01,\n", + " 1.2466e+00, 1.3118e-02, 1.2628e-02, 2.3040e-01, 4.4281e-01,\n", + " 1.9071e-01, -8.9047e-01, 8.9297e-01, 8.6976e-01, 9.8495e-01,\n", + " -3.0366e-01, -4.5087e-01, -1.7305e-01, 6.3821e-01, -7.7804e-04,\n", + " 1.4757e-01, 2.3959e-01, -7.1016e-02, 3.2513e-01, -4.3569e-01,\n", + " 9.6218e-01, 5.6924e-01, -7.5055e-02, -1.8131e+00, -1.8083e-01,\n", + " -2.6997e-01, -5.0470e-01, 5.7586e-02]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3300, 0.3367, 0.1298, 0.1812, 0.0805, -0.1236, -0.3228, -0.3309,\n", + " -0.1437, -0.2170, -0.2267, 0.1385, 0.1383, 0.2300, 0.1299, 0.2704,\n", + " 0.2668, 0.1001, 0.0706, 0.1119, 0.0413, 0.0653, 0.0853, 0.0152,\n", + " 0.0777, 0.0868, -0.0366, 0.0008, 0.1747, 0.2416, 0.2452, 0.1193,\n", + " 0.2612, 0.2302, 0.1532, 0.1817, -0.0261, -0.0541, -0.0226, -0.2975,\n", + " -0.2228, -0.2208, -0.2748]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00015317575889639556\n", + "Grad encoder.fc1.bias: 0.00021511164959520102\n", + "Grad encoder.encoder.0.weight: 5.0730115617625415e-05\n", + "Grad encoder.encoder.0.bias: 0.00020910840248689055\n", + "Grad encoder.encoder.2.weight: 5.421160312835127e-05\n", + "Grad encoder.encoder.2.bias: 0.000317759724566713\n", + "Grad encoder.encoder.4.weight: 0.00013556747580878437\n", + "Grad encoder.encoder.4.bias: 0.0007219894323498011\n", + "Grad decoder.fc1.0.weight: 4.86601929878816e-05\n", + "Grad decoder.fc1.0.bias: 0.0004538142529781908\n", + "Grad decoder.fc1.2.weight: 5.55650913156569e-05\n", + "Grad decoder.fc1.2.bias: 0.0005832194583490491\n", + "Grad decoder.fc1.4.weight: 4.012138379039243e-05\n", + "Grad decoder.fc1.4.bias: 0.0003869932843372226\n", + "Grad decoder.fc2.weight: 0.00012498482828959823\n", + "Grad decoder.fc2.bias: 0.0017668345244601369\n", + "Grad _memory_unit.weight_ih_l0: 2.3368758775177412e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.993353311670944e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.1488935090019368e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.325949132384267e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.131641516229138e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.128168438910507e-05\n", + "Data X Sample: tensor([[2.3137, 2.7324, 3.0969, 3.0524, 3.1673, 3.3311, 3.3278, 3.3389, 3.4906,\n", + " 3.6491, 3.7909, 3.6477, 3.6840, 3.5580, 3.4020, 3.3382, 3.4010, 3.4258,\n", + " 3.3577, 3.2396, 3.2927, 3.1675, 2.9809, 2.8077, 2.6876, 2.7320, 2.5627,\n", + " 2.5124, 2.4284, 2.5644, 2.5721, 2.4759, 2.5191, 1.7324, 2.8924, 3.1668,\n", + " 3.4885, 3.7130, 3.9679, 4.0117, 1.8518, 1.1471, 1.0812, 1.9691, 2.7947,\n", + " 2.9849, 1.7677, 2.9557]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1669, -1.8937, 0.0989, 0.8973, 0.0253, 0.5840, -0.4015, -0.0576,\n", + " -0.5409, -0.3212, -0.5257, 0.8394, 0.8927, -0.1187, 0.6676, 0.2872,\n", + " 0.2337, -0.1071, -1.3093, 1.4188, -0.4240, 0.4026, 1.1885, 0.6905,\n", + " 0.0693, -0.8837, -0.2927, 0.8998, 0.8761, 0.1629, 0.4281, -0.4760,\n", + " -0.2367, -0.8313, -0.1303, -0.3831, 0.9141, 0.5763, 0.0545, -0.7724,\n", + " -0.6019, 0.2045, -0.2516]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.4496, -0.4245, -0.1781, -0.4416, -0.3680, -0.0927, 0.1082, 0.3803,\n", + " 0.2127, 0.3561, 0.3160, -0.1333, -0.2237, -0.3666, -0.2203, -0.4054,\n", + " -0.3340, -0.1887, -0.1111, -0.1314, -0.0770, -0.0459, -0.0495, -0.0822,\n", + " 0.0249, -0.0311, 0.2504, 0.1268, -0.0193, -0.1492, -0.2060, -0.2223,\n", + " -0.1270, -0.3510, -0.2018, -0.2010, -0.0090, -0.0455, -0.0422, 0.5241,\n", + " 0.5498, 0.4890, 0.4402]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0013610385358333588\n", + "Grad encoder.fc1.bias: 0.0009802642744034529\n", + "Grad encoder.encoder.0.weight: 0.00030637200688943267\n", + "Grad encoder.encoder.0.bias: 0.0009382921271026134\n", + "Grad encoder.encoder.2.weight: 0.0002362910599913448\n", + "Grad encoder.encoder.2.bias: 0.0012273949105292559\n", + "Grad encoder.encoder.4.weight: 0.00046250520972535014\n", + "Grad encoder.encoder.4.bias: 0.004274824168533087\n", + "Grad decoder.fc1.0.weight: 0.00012572937703225762\n", + "Grad decoder.fc1.0.bias: 0.001334392698481679\n", + "Grad decoder.fc1.2.weight: 0.00011627967614913359\n", + "Grad decoder.fc1.2.bias: 0.0015481769805774093\n", + "Grad decoder.fc1.4.weight: 8.004037954378873e-05\n", + "Grad decoder.fc1.4.bias: 0.001356407068669796\n", + "Grad decoder.fc2.weight: 0.00019997185154352337\n", + "Grad decoder.fc2.bias: 0.002133564092218876\n", + "Grad _memory_unit.weight_ih_l0: 7.07657090970315e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0002461437543388456\n", + "Grad _memory_unit.bias_hh_l0: 0.00012456330296117812\n", + "Grad _memory_unit.weight_ih_l1: 1.317295573244337e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00040344957960769534\n", + "Grad _memory_unit.bias_hh_l1: 0.0002055926452158019\n", + "Data X Sample: tensor([[1.5117, 1.6327, 1.7971, 1.9591, 2.0609, 1.9727, 1.9043, 3.0167, 4.3206,\n", + " 4.4738, 4.5967, 4.4714, 4.1345, 4.1115, 4.0123, 3.7991, 3.8130, 3.6656,\n", + " 3.5023, 3.5725, 3.4326, 3.3527, 2.9375, 2.8459, 2.7420, 2.9018, 2.8451,\n", + " 2.7979, 2.9904, 3.0983, 3.0201, 3.1170, 3.6697, 2.7691, 4.6155, 4.9374,\n", + " 5.2308, 5.6212, 6.1229, 6.1622, 1.1359, 0.6831, 0.6770, 1.1855, 1.7403,\n", + " 1.8927, 1.2646, 1.8922]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1093, 0.4657, -0.5077, -2.2156, 0.5515, 0.1292, 0.1131, -0.1869,\n", + " -0.2167, 0.0833, 0.2061, 0.0842, -0.1553, -0.0132, -0.1198, -0.2036,\n", + " 0.3310, -0.6339, 1.2289, 0.8954, 0.0148, 0.5191, 0.8180, -0.4042,\n", + " 0.7816, 1.0038, 1.2702, 0.4844, 0.2819, -0.1098, 0.3929, -1.3277,\n", + " 0.5509, 0.2875, -0.0804, 0.2878, -0.0344, 0.0000, 1.0325, -0.1263,\n", + " 0.0533, 0.3172, -0.4497]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2947, -0.3375, -0.0523, -0.1847, 0.0029, 0.2293, 0.2542, 0.3623,\n", + " 0.3195, 0.3142, 0.2968, -0.1775, -0.2322, -0.3805, -0.2431, -0.3633,\n", + " -0.2368, -0.0460, -0.1231, -0.1249, -0.0629, -0.0515, -0.0429, -0.0382,\n", + " -0.0308, 0.0578, -0.0157, -0.1498, -0.2468, -0.2358, -0.2974, -0.2234,\n", + " -0.3199, -0.3772, -0.2183, -0.1911, 0.0074, -0.0254, -0.0354, 0.3703,\n", + " 0.4063, 0.3730, 0.2720]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000431907013989985\n", + "Grad encoder.fc1.bias: 0.00029084496782161295\n", + "Grad encoder.encoder.0.weight: 0.00011834163160528988\n", + "Grad encoder.encoder.0.bias: 0.00038793275598436594\n", + "Grad encoder.encoder.2.weight: 8.461771358270198e-05\n", + "Grad encoder.encoder.2.bias: 0.0004979083314538002\n", + "Grad encoder.encoder.4.weight: 0.0001887847320176661\n", + "Grad encoder.encoder.4.bias: 0.0014954505022615194\n", + "Grad decoder.fc1.0.weight: 9.529452654533088e-05\n", + "Grad decoder.fc1.0.bias: 0.0009415089152753353\n", + "Grad decoder.fc1.2.weight: 0.00011743261711671948\n", + "Grad decoder.fc1.2.bias: 0.0012151178671047091\n", + "Grad decoder.fc1.4.weight: 9.065716585610062e-05\n", + "Grad decoder.fc1.4.bias: 0.0013137104688212276\n", + "Grad decoder.fc2.weight: 0.00013985869009047747\n", + "Grad decoder.fc2.bias: 0.002591070020571351\n", + "Grad _memory_unit.weight_ih_l0: 1.6673035133862868e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.990956899244338e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.594174631871283e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.727910997346044e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00016388435324188322\n", + "Grad _memory_unit.bias_hh_l1: 8.433152106590569e-05\n", + "Data X Sample: tensor([[1.3674, 1.4725, 1.6303, 1.7602, 1.7553, 1.7841, 1.9751, 2.0698, 2.0724,\n", + " 3.4438, 3.9115, 4.0041, 3.8371, 3.7871, 3.6189, 3.5242, 3.5394, 3.4954,\n", + " 3.3928, 3.4163, 3.2731, 3.2272, 2.7905, 2.7332, 2.7627, 2.7399, 2.8478,\n", + " 2.8632, 2.9453, 3.0393, 3.0656, 3.1612, 3.5355, 2.5952, 4.4513, 4.5677,\n", + " 4.8179, 5.3747, 5.6665, 5.7140, 1.0929, 0.6432, 0.6144, 1.0678, 1.5103,\n", + " 1.7269, 1.0878, 1.5169]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.2420, -0.6739, -0.4227, 0.2969, -0.0174, 0.1707, -0.0821, 0.5170,\n", + " 1.5336, 0.9732, 0.5526, 0.0427, -0.8918, -1.1126, -2.1076, -1.0702,\n", + " -0.4147, -0.1364, -0.5388, 0.6872, 0.5483, -1.9390, -0.8952, 0.8405,\n", + " 0.8903, -0.6337, -0.8542, 0.1820, -0.5569, -0.2822, -1.5998, 0.6097,\n", + " -1.9815, -0.0622, 0.2386, -0.5504, -1.0365, 0.0103, 0.0000, 0.7843,\n", + " 0.6853, 1.0145, 0.7034]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2648, -0.3084, -0.0324, -0.1870, -0.0023, 0.2122, 0.2327, 0.3137,\n", + " 0.2845, 0.2729, 0.2677, -0.1634, -0.2065, -0.3489, -0.2254, -0.3278,\n", + " -0.2271, -0.0412, -0.1041, -0.1115, -0.0556, -0.0518, -0.0383, -0.0325,\n", + " -0.0368, 0.0466, -0.0125, -0.1342, -0.2270, -0.2163, -0.2677, -0.1955,\n", + " -0.2943, -0.3499, -0.1965, -0.1758, 0.0144, -0.0162, -0.0361, 0.3340,\n", + " 0.3678, 0.3289, 0.2509]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004149672749917954\n", + "Grad encoder.fc1.bias: 0.0005391199374571443\n", + "Grad encoder.encoder.0.weight: 0.00010130981536349282\n", + "Grad encoder.encoder.0.bias: 0.0007019131444394588\n", + "Grad encoder.encoder.2.weight: 7.016723975539207e-05\n", + "Grad encoder.encoder.2.bias: 0.0008365639369003475\n", + "Grad encoder.encoder.4.weight: 0.0001640402479097247\n", + "Grad encoder.encoder.4.bias: 0.0038525816053152084\n", + "Grad decoder.fc1.0.weight: 8.316325693158433e-05\n", + "Grad decoder.fc1.0.bias: 0.0014307466335594654\n", + "Grad decoder.fc1.2.weight: 7.892826397437602e-05\n", + "Grad decoder.fc1.2.bias: 0.0011101269628852606\n", + "Grad decoder.fc1.4.weight: 5.676724322256632e-05\n", + "Grad decoder.fc1.4.bias: 0.000725570076610893\n", + "Grad decoder.fc2.weight: 0.00013571401359513402\n", + "Grad decoder.fc2.bias: 0.001770977396517992\n", + "Grad _memory_unit.weight_ih_l0: 1.708178206172306e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00012863505980931222\n", + "Grad _memory_unit.bias_hh_l0: 6.456879782490432e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.284018465725239e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00028090254636481404\n", + "Grad _memory_unit.bias_hh_l1: 0.00014588289195671678\n", + "Data X Sample: tensor([[1.5669, 1.8090, 1.8813, 1.9766, 2.2385, 2.3661, 2.4558, 2.4091, 2.5753,\n", + " 2.5655, 2.5601, 2.5726, 2.4900, 2.5111, 2.4135, 2.4301, 2.3963, 2.3928,\n", + " 2.3996, 2.3600, 2.4143, 2.3729, 2.3785, 2.4164, 2.3854, 2.4421, 2.4668,\n", + " 2.4471, 2.2619, 2.2893, 2.2467, 2.2797, 2.2638, 1.4532, 1.9903, 1.8339,\n", + " 1.7128, 1.5583, 1.5529, 1.5292, 1.2504, 0.7329, 0.6851, 1.2170, 1.7641,\n", + " 1.9385, 1.3054, 1.8532]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.8958, 0.5675, 0.5971, 0.3308, -0.2461, -0.3873, -0.7160, -1.4371,\n", + " -0.1586, -0.1853, -1.0263, 1.3907, -0.3639, 0.8478, 0.3860, 0.0594,\n", + " 0.7944, 0.5075, -0.4011, 0.0973, 0.0596, 1.0213, -0.2533, 0.2767,\n", + " -0.7500, 1.3106, -0.9325, -0.6311, 0.4105, 0.4460, 0.8661, -0.5574,\n", + " 0.3359, -0.4024, -0.1297, 0.1747, 1.0412, -0.0533, -0.9248, -0.2281,\n", + " -0.1109, -0.3951, 0.9041]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2931, 0.2932, 0.1410, 0.1244, 0.0369, -0.1251, -0.3212, -0.3124,\n", + " -0.1699, -0.2290, -0.2391, 0.1150, 0.1203, 0.2281, 0.1107, 0.2366,\n", + " 0.2212, 0.0847, 0.0552, 0.1198, 0.0264, 0.0767, 0.0834, 0.0140,\n", + " 0.0749, 0.0707, -0.0021, 0.0132, 0.1906, 0.2715, 0.2410, 0.1345,\n", + " 0.2282, 0.2123, 0.1269, 0.1697, 0.0025, -0.0291, -0.0111, -0.2678,\n", + " -0.2006, -0.2069, -0.2604]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00020765668887179345\n", + "Grad encoder.fc1.bias: 0.0002853190526366234\n", + "Grad encoder.encoder.0.weight: 6.651508010691032e-05\n", + "Grad encoder.encoder.0.bias: 0.0003569279215298593\n", + "Grad encoder.encoder.2.weight: 4.4235814129933715e-05\n", + "Grad encoder.encoder.2.bias: 0.00034722452983260155\n", + "Grad encoder.encoder.4.weight: 9.90877379081212e-05\n", + "Grad encoder.encoder.4.bias: 0.0012545865029096603\n", + "Grad decoder.fc1.0.weight: 5.103363218950108e-05\n", + "Grad decoder.fc1.0.bias: 0.000635584001429379\n", + "Grad decoder.fc1.2.weight: 6.517850852105767e-05\n", + "Grad decoder.fc1.2.bias: 0.0008093403303064406\n", + "Grad decoder.fc1.4.weight: 5.277773743728176e-05\n", + "Grad decoder.fc1.4.bias: 0.0007784784538671374\n", + "Grad decoder.fc2.weight: 0.000161755335284397\n", + "Grad decoder.fc2.bias: 0.002250228775665164\n", + "Grad _memory_unit.weight_ih_l0: 1.2320944733801298e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.138822987442836e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.2012060071574524e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.728329258796293e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011406026169424877\n", + "Grad _memory_unit.bias_hh_l1: 5.881694596610032e-05\n", + "Data X Sample: tensor([[2.2193, 2.5926, 2.6717, 2.8381, 2.8770, 2.9274, 3.0983, 3.1075, 3.2172,\n", + " 3.2384, 3.2167, 3.3536, 3.3466, 3.3863, 3.2785, 3.1891, 3.1164, 3.2169,\n", + " 3.2565, 3.0927, 3.0915, 2.9807, 2.7761, 2.7180, 2.5619, 2.5544, 2.3763,\n", + " 2.4553, 2.1093, 2.2107, 2.1907, 2.2051, 2.0790, 1.4212, 2.2771, 2.5392,\n", + " 2.7236, 2.9418, 2.9474, 2.9988, 1.7181, 0.9519, 0.9297, 1.7452, 2.4776,\n", + " 2.6818, 1.8357, 2.5725]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0114, -0.0336, -0.6353, 0.3626, -1.1866, 0.7485, 0.1751, -0.0520,\n", + " -0.4084, -0.3306, -0.2804, 0.8152, -1.0411, -0.1500, -0.1754, -1.1893,\n", + " 0.3384, 0.3303, 1.0773, 1.9196, 0.8950, -0.3269, -0.2664, 0.0088,\n", + " 0.0309, -0.3200, 0.1287, -0.4193, -0.6294, 0.7331, 0.6774, -0.3877,\n", + " 0.7143, -2.3290, -0.0343, 1.4991, -0.6417, 0.7428, 0.2870, -0.5959,\n", + " 0.1556, -0.7708, 1.6293]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.0452, -0.0374, -0.0115, -0.0755, -0.1346, -0.0684, -0.1320, -0.0387,\n", + " -0.0202, -0.0234, -0.0526, -0.0069, -0.0102, 0.0189, -0.0228, -0.0188,\n", + " -0.0332, -0.0120, -0.0338, 0.0002, 0.0034, 0.0380, 0.0172, -0.0371,\n", + " 0.0362, 0.0224, 0.0799, 0.0242, 0.0688, 0.0850, 0.0330, 0.0224,\n", + " 0.0636, 0.0220, 0.0204, 0.0420, -0.0450, -0.0178, -0.0115, -0.0045,\n", + " 0.0483, 0.0471, -0.0394]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000254761049291119\n", + "Grad encoder.fc1.bias: 0.002164149656891823\n", + "Grad encoder.encoder.0.weight: 0.00010735519754234701\n", + "Grad encoder.encoder.0.bias: 0.0013442201307043433\n", + "Grad encoder.encoder.2.weight: 7.605952851008624e-05\n", + "Grad encoder.encoder.2.bias: 0.0009867019252851605\n", + "Grad encoder.encoder.4.weight: 0.00017092392954509705\n", + "Grad encoder.encoder.4.bias: 0.0019755379762500525\n", + "Grad decoder.fc1.0.weight: 7.400050526484847e-05\n", + "Grad decoder.fc1.0.bias: 0.0008936453377828002\n", + "Grad decoder.fc1.2.weight: 8.399636135436594e-05\n", + "Grad decoder.fc1.2.bias: 0.0010241945274174213\n", + "Grad decoder.fc1.4.weight: 7.027325045783073e-05\n", + "Grad decoder.fc1.4.bias: 0.0011031788308173418\n", + "Grad decoder.fc2.weight: 0.0001617623638594523\n", + "Grad decoder.fc2.bias: 0.0019706301391124725\n", + "Grad _memory_unit.weight_ih_l0: 2.2507902031065896e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00014025834389030933\n", + "Grad _memory_unit.bias_hh_l0: 6.992171256570145e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.9051070568093564e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002147170016542077\n", + "Grad _memory_unit.bias_hh_l1: 0.00011054138303734362\n", + "Data X Sample: tensor([[ 0.0053, 0.0146, 0.0180, 0.0284, 0.0068, 0.0295, 0.0231, 0.0185,\n", + " 0.0439, 0.0190, 0.0508, 0.0175, 0.0200, 0.0273, 0.0303, 0.0109,\n", + " -0.1085, -0.1219, -0.1714, -0.1395, -0.1742, -0.1026, -0.1494, -0.1470,\n", + " -0.1182, -0.2429, -0.2531, -0.4119, -0.0971, -0.0655, -0.0595, -0.0332,\n", + " -0.0242, -0.0503, -0.0147, 0.0146, -0.0079, -0.0504, 0.0317, 0.0057,\n", + " 0.0143, 0.0040, 0.0243, -0.0115, -0.0159, 0.0229, 0.0340, -0.0782]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3517, 0.5930, -0.4427, 0.6065, 0.5106, -1.6954, 1.3116, -0.7405,\n", + " 0.8146, 1.6754, 1.4759, -0.9876, -2.9222, -1.3352, -0.7401, 0.4795,\n", + " 0.1308, 0.4339, 0.4267, 0.5685, 0.3727, 0.4005, -0.1368, 0.3441,\n", + " 0.1438, -0.0090, 0.1324, -0.1930, -0.9209, -0.2028, -0.4204, 0.1903,\n", + " -1.2824, 0.0879, -0.2068, 0.2142, 0.6097, -0.7806, 0.2098, 0.1052,\n", + " -1.6106, -0.4048, 0.7984]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5919, 0.4866, 0.2337, 0.3511, 0.0658, -0.2291, -0.6264, -0.7094,\n", + " -0.2824, -0.4375, -0.3742, 0.2887, 0.2542, 0.4242, 0.2141, 0.3982,\n", + " 0.4501, 0.1488, 0.1405, 0.2121, 0.0707, 0.0985, 0.1505, 0.0940,\n", + " 0.1414, 0.1426, -0.0321, 0.1239, 0.3971, 0.5195, 0.5024, 0.3336,\n", + " 0.5010, 0.4744, 0.2769, 0.3083, -0.0052, -0.0593, -0.0124, -0.5278,\n", + " -0.4652, -0.3901, -0.4415]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00023571294150315225\n", + "Grad encoder.fc1.bias: 0.0007733759703114629\n", + "Grad encoder.encoder.0.weight: 7.345158519456163e-05\n", + "Grad encoder.encoder.0.bias: 0.0006519189337268472\n", + "Grad encoder.encoder.2.weight: 5.4903244745219126e-05\n", + "Grad encoder.encoder.2.bias: 0.0005741887725889683\n", + "Grad encoder.encoder.4.weight: 0.00013498264888767153\n", + "Grad encoder.encoder.4.bias: 0.0015983106568455696\n", + "Grad decoder.fc1.0.weight: 6.808745820308104e-05\n", + "Grad decoder.fc1.0.bias: 0.0006545453798025846\n", + "Grad decoder.fc1.2.weight: 7.51780899008736e-05\n", + "Grad decoder.fc1.2.bias: 0.00075389607809484\n", + "Grad decoder.fc1.4.weight: 6.064544868422672e-05\n", + "Grad decoder.fc1.4.bias: 0.0006575160659849644\n", + "Grad decoder.fc2.weight: 0.00014764064690098166\n", + "Grad decoder.fc2.bias: 0.0017591756768524647\n", + "Grad _memory_unit.weight_ih_l0: 1.305450678046327e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.150867506628856e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.1472812881693244e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.745244379795622e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00016418226005043834\n", + "Grad _memory_unit.bias_hh_l1: 8.605624316260219e-05\n", + "Data X Sample: tensor([[1.5276, 1.8964, 1.9895, 2.1297, 2.2368, 2.3233, 2.3233, 2.4148, 2.4093,\n", + " 2.4849, 2.4649, 2.5103, 2.3635, 2.4184, 2.3908, 2.3536, 2.2972, 2.4064,\n", + " 2.3830, 2.4864, 2.5787, 2.5566, 2.6050, 2.5519, 2.5337, 2.6250, 2.5920,\n", + " 2.6755, 2.4041, 2.5186, 2.3762, 2.5091, 2.3012, 1.4852, 2.1301, 2.0212,\n", + " 1.8426, 1.7386, 1.6417, 1.5661, 1.2982, 0.7229, 0.7255, 1.2945, 1.8473,\n", + " 2.1786, 1.4822, 2.0643]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1684, 0.9304, 0.5666, -0.0740, 0.3022, -0.3352, 0.0331, -0.1912,\n", + " -0.8942, -0.4585, -0.3428, 0.4725, 0.3361, 1.3565, 1.1187, 0.3458,\n", + " 0.8371, 0.5430, -1.3648, 1.1407, 0.7214, -0.0806, 0.7629, 0.3697,\n", + " 0.3511, 0.4460, -0.1336, 1.1918, -0.3876, 0.1401, 1.1194, 0.4654,\n", + " 1.4930, -0.0879, 0.1564, 1.1351, -1.0105, 0.0761, -0.0156, -0.2002,\n", + " -0.2255, -0.7465, -0.6876]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 3.2149e-01, 3.3547e-01, 1.7962e-01, 1.6123e-01, 6.2380e-02,\n", + " -1.2932e-01, -3.6460e-01, -3.6077e-01, -1.8512e-01, -2.5940e-01,\n", + " -2.5892e-01, 1.3774e-01, 1.2201e-01, 2.4687e-01, 1.1745e-01,\n", + " 2.5504e-01, 2.5435e-01, 9.6858e-02, 6.6747e-02, 1.6172e-01,\n", + " 5.1179e-02, 8.5227e-02, 9.4176e-02, 1.4754e-02, 9.5887e-02,\n", + " 1.0175e-01, -2.6683e-02, 2.4632e-03, 1.9458e-01, 2.9685e-01,\n", + " 2.8463e-01, 1.6295e-01, 2.6321e-01, 2.6433e-01, 1.4659e-01,\n", + " 2.0010e-01, 2.2371e-02, -2.3322e-02, 1.2336e-04, -3.0555e-01,\n", + " -2.3719e-01, -2.4934e-01, -2.9817e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000659980985801667\n", + "Grad encoder.fc1.bias: 0.0009300693636760116\n", + "Grad encoder.encoder.0.weight: 0.00011876900680363178\n", + "Grad encoder.encoder.0.bias: 0.000686915242113173\n", + "Grad encoder.encoder.2.weight: 6.952609692234546e-05\n", + "Grad encoder.encoder.2.bias: 0.0005691215046681464\n", + "Grad encoder.encoder.4.weight: 0.00014118946273811162\n", + "Grad encoder.encoder.4.bias: 0.0012589984107762575\n", + "Grad decoder.fc1.0.weight: 6.027424751664512e-05\n", + "Grad decoder.fc1.0.bias: 0.0006126323714852333\n", + "Grad decoder.fc1.2.weight: 5.166661867406219e-05\n", + "Grad decoder.fc1.2.bias: 0.0008318689651787281\n", + "Grad decoder.fc1.4.weight: 4.797039582626894e-05\n", + "Grad decoder.fc1.4.bias: 0.0008291444974020123\n", + "Grad decoder.fc2.weight: 0.0001323236501775682\n", + "Grad decoder.fc2.bias: 0.0019274818478152156\n", + "Grad _memory_unit.weight_ih_l0: 1.0630355063767638e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.167405106476508e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.7832502382807434e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.3398142629012e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011024457489838824\n", + "Grad _memory_unit.bias_hh_l1: 5.72144563193433e-05\n", + "Data X Sample: tensor([[1.4767, 1.7172, 1.9234, 1.9963, 2.0933, 2.3278, 2.3726, 2.4787, 2.5704,\n", + " 2.5418, 2.5854, 2.5142, 2.5544, 2.5138, 2.4311, 2.4548, 2.3617, 2.4102,\n", + " 2.4801, 2.3730, 2.5027, 2.4005, 2.4556, 2.3420, 2.3929, 2.3977, 2.4642,\n", + " 2.4553, 2.1023, 2.2598, 2.2957, 2.2825, 2.2330, 1.4578, 1.9242, 1.8071,\n", + " 1.6361, 1.5504, 1.6480, 1.5774, 1.1788, 0.7149, 0.7053, 1.2630, 1.7839,\n", + " 1.9613, 1.2306, 2.0564]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5812, 0.8651, -0.1888, 0.0514, -0.4423, -0.9744, -0.3453, -0.3910,\n", + " -0.7696, 0.1050, -0.2307, 1.0932, 0.6083, 0.3495, 0.0972, 0.4293,\n", + " -0.1312, -0.1274, 0.7661, 0.8131, 0.8391, 1.0035, 0.3207, 1.2824,\n", + " 0.3534, -0.3230, 0.3345, -0.0770, 0.1038, 0.8733, 0.2450, 0.7851,\n", + " 0.6201, 0.0328, 1.6790, -0.6519, -0.6306, -0.5802, -0.0059, -0.3304,\n", + " -0.2301, -0.1428, -0.3429]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3005, 0.3100, 0.1694, 0.1563, 0.0555, -0.1182, -0.3420, -0.3414,\n", + " -0.1646, -0.2333, -0.2362, 0.1275, 0.1061, 0.2224, 0.1020, 0.2336,\n", + " 0.2371, 0.0915, 0.0577, 0.1524, 0.0531, 0.0762, 0.0891, 0.0149,\n", + " 0.0877, 0.1046, -0.0341, -0.0008, 0.1764, 0.2672, 0.2636, 0.1508,\n", + " 0.2487, 0.2460, 0.1395, 0.1855, 0.0218, -0.0242, -0.0055, -0.2845,\n", + " -0.2210, -0.2230, -0.2705]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007411243277601898\n", + "Grad encoder.fc1.bias: 0.0013476517051458359\n", + "Grad encoder.encoder.0.weight: 0.00014380333595909178\n", + "Grad encoder.encoder.0.bias: 0.0009777562227100134\n", + "Grad encoder.encoder.2.weight: 9.913759276969358e-05\n", + "Grad encoder.encoder.2.bias: 0.001164141925983131\n", + "Grad encoder.encoder.4.weight: 0.00021921777806710452\n", + "Grad encoder.encoder.4.bias: 0.002829847624525428\n", + "Grad decoder.fc1.0.weight: 8.463615813525394e-05\n", + "Grad decoder.fc1.0.bias: 0.0010108962887898088\n", + "Grad decoder.fc1.2.weight: 8.149324276018888e-05\n", + "Grad decoder.fc1.2.bias: 0.0010562193347141147\n", + "Grad decoder.fc1.4.weight: 5.846585554536432e-05\n", + "Grad decoder.fc1.4.bias: 0.0009808919858187437\n", + "Grad decoder.fc2.weight: 0.00013918559125158936\n", + "Grad decoder.fc2.bias: 0.0021271249279379845\n", + "Grad _memory_unit.weight_ih_l0: 3.684718467411585e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00016088096890598536\n", + "Grad _memory_unit.bias_hh_l0: 8.17005056887865e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.544209206069354e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00023408536799252033\n", + "Grad _memory_unit.bias_hh_l1: 0.000118140087579377\n", + "Data X Sample: tensor([[1.6146, 1.8687, 2.1878, 2.1909, 2.3955, 2.5812, 2.6376, 2.6448, 2.6827,\n", + " 2.6887, 2.7726, 2.8842, 2.5988, 2.6610, 2.7110, 2.5054, 2.5488, 2.6133,\n", + " 2.6474, 2.6055, 2.6253, 2.6332, 2.6074, 2.6225, 2.6651, 2.7320, 2.6693,\n", + " 2.7000, 2.4180, 2.5939, 2.4707, 2.3461, 2.3760, 1.5150, 1.9732, 1.8874,\n", + " 1.7207, 1.6882, 1.6670, 1.6030, 1.2838, 0.7667, 0.7821, 1.3807, 1.9821,\n", + " 2.2415, 1.3734, 1.9704]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1014, 0.3812, 0.0244, 0.0448, -0.3759, -0.6307, -1.6996, -1.9391,\n", + " -1.0405, -1.3686, -1.9740, -1.3445, -0.2368, 0.2593, 1.1875, 1.9200,\n", + " 1.0353, -0.3917, 0.0125, 0.2973, 0.9068, 0.3181, -0.0786, -1.2750,\n", + " 2.5860, 1.1555, -0.2144, 0.3940, 0.7080, 0.6648, 0.4789, 0.0906,\n", + " 1.1924, 0.3936, 0.3074, 0.6011, -0.9303, -0.8030, -0.2296, -1.6191,\n", + " -1.8948, -1.1442, -0.3834]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3124, 0.3277, 0.1825, 0.1786, 0.0723, -0.1156, -0.3559, -0.3596,\n", + " -0.1632, -0.2385, -0.2370, 0.1369, 0.1095, 0.2242, 0.1055, 0.2426,\n", + " 0.2543, 0.1012, 0.0646, 0.1689, 0.0686, 0.0800, 0.0947, 0.0173,\n", + " 0.0959, 0.1201, -0.0498, -0.0065, 0.1701, 0.2679, 0.2764, 0.1575,\n", + " 0.2653, 0.2657, 0.1501, 0.1954, 0.0273, -0.0237, -0.0065, -0.2972,\n", + " -0.2346, -0.2376, -0.2831]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0008117867982946336\n", + "Grad encoder.fc1.bias: 0.0008631994714960456\n", + "Grad encoder.encoder.0.weight: 0.00022882144548930228\n", + "Grad encoder.encoder.0.bias: 0.0010609286837279797\n", + "Grad encoder.encoder.2.weight: 0.00012349660391919315\n", + "Grad encoder.encoder.2.bias: 0.0010553740430623293\n", + "Grad encoder.encoder.4.weight: 0.00021063131862320006\n", + "Grad encoder.encoder.4.bias: 0.0019230431644245982\n", + "Grad decoder.fc1.0.weight: 0.0001002792632789351\n", + "Grad decoder.fc1.0.bias: 0.0008831506129354239\n", + "Grad decoder.fc1.2.weight: 8.465278369840235e-05\n", + "Grad decoder.fc1.2.bias: 0.0008895052596926689\n", + "Grad decoder.fc1.4.weight: 6.629111885558814e-05\n", + "Grad decoder.fc1.4.bias: 0.000993255409412086\n", + "Grad decoder.fc2.weight: 0.00011380955402273685\n", + "Grad decoder.fc2.bias: 0.0015185007359832525\n", + "Grad _memory_unit.weight_ih_l0: 2.183203469030559e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00011822024680441245\n", + "Grad _memory_unit.bias_hh_l0: 5.9917343605775386e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.28839472180698e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00020077376393601298\n", + "Grad _memory_unit.bias_hh_l1: 0.00010362493776483461\n", + "Data X Sample: tensor([[1.5287, 1.7740, 1.8813, 2.0116, 2.1821, 2.2880, 2.3156, 2.4432, 2.4434,\n", + " 2.5734, 2.5156, 2.5006, 2.5078, 2.5138, 2.4387, 2.4151, 2.4152, 2.4276,\n", + " 2.4429, 2.4567, 2.4757, 2.5291, 2.4146, 2.4049, 2.4361, 2.4265, 2.3549,\n", + " 2.4512, 2.1544, 2.3024, 2.2712, 2.2632, 2.2836, 1.5127, 1.9560, 1.8047,\n", + " 1.6243, 1.5027, 1.5593, 1.6228, 1.2600, 0.7109, 0.6871, 1.2314, 1.8196,\n", + " 2.0071, 1.2986, 1.9861]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4783, 0.7684, -0.1437, 0.6640, 0.4276, 0.2098, -0.1956, -0.5044,\n", + " -0.0680, -0.2828, -0.3801, 0.9622, -0.6134, -0.0610, 0.8015, 0.0956,\n", + " -0.2985, 0.2915, 0.3531, -0.8425, 0.4568, -0.1513, 0.3367, -1.1593,\n", + " 0.0928, -0.6449, -0.0262, 0.1530, -0.0873, 0.3612, 0.7344, -0.6493,\n", + " 0.9184, 0.9037, 0.1975, -0.7555, 0.4768, 0.0705, -0.8437, -0.3672,\n", + " -0.2541, -0.4048, -0.3211]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2994, 0.3022, 0.1669, 0.1811, 0.0612, -0.1063, -0.3405, -0.3513,\n", + " -0.1458, -0.2146, -0.2172, 0.1309, 0.1039, 0.2053, 0.0957, 0.2278,\n", + " 0.2415, 0.1006, 0.0577, 0.1576, 0.0675, 0.0712, 0.0960, 0.0230,\n", + " 0.0851, 0.1186, -0.0547, 0.0009, 0.1609, 0.2463, 0.2584, 0.1510,\n", + " 0.2579, 0.2542, 0.1464, 0.1797, 0.0242, -0.0246, -0.0166, -0.2796,\n", + " -0.2250, -0.2141, -0.2589]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006526046781800687\n", + "Grad encoder.fc1.bias: 0.00026010669535025954\n", + "Grad encoder.encoder.0.weight: 0.00015932272071950138\n", + "Grad encoder.encoder.0.bias: 0.00038178657996468246\n", + "Grad encoder.encoder.2.weight: 8.219460141845047e-05\n", + "Grad encoder.encoder.2.bias: 0.000371138914488256\n", + "Grad encoder.encoder.4.weight: 0.00014470696623902768\n", + "Grad encoder.encoder.4.bias: 0.00141645479016006\n", + "Grad decoder.fc1.0.weight: 4.8918322136159986e-05\n", + "Grad decoder.fc1.0.bias: 0.000542795576620847\n", + "Grad decoder.fc1.2.weight: 4.068780253874138e-05\n", + "Grad decoder.fc1.2.bias: 0.000900205981452018\n", + "Grad decoder.fc1.4.weight: 3.3649113902356476e-05\n", + "Grad decoder.fc1.4.bias: 0.000827716663479805\n", + "Grad decoder.fc2.weight: 9.241325460607186e-05\n", + "Grad decoder.fc2.bias: 0.0019101008074358106\n", + "Grad _memory_unit.weight_ih_l0: 1.3433535968943033e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.008456744486466e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.151909939129837e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.842595328431344e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010991550516337156\n", + "Grad _memory_unit.bias_hh_l1: 5.542947837966494e-05\n", + "Data X Sample: tensor([[1.4364, 1.7114, 1.8768, 2.0226, 2.1445, 2.1186, 2.0429, 2.4716, 3.5785,\n", + " 4.3632, 4.1874, 4.1969, 4.1833, 3.9097, 3.7753, 3.7389, 3.6133, 3.6192,\n", + " 3.4672, 3.4646, 3.4964, 3.2287, 2.8556, 2.7848, 2.8058, 2.8966, 2.9863,\n", + " 3.0018, 2.9627, 3.1605, 3.1531, 3.2828, 3.7093, 2.7714, 4.6376, 4.9861,\n", + " 5.0008, 5.3456, 5.8377, 5.8331, 1.1741, 0.6711, 0.6892, 1.2515, 1.7601,\n", + " 1.9671, 1.2782, 1.9001]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4108, -0.9922, -0.7612, -1.0786, 0.1469, 0.2200, 0.8795, 0.3015,\n", + " 0.2804, 0.5470, 0.7506, 0.3958, -0.7570, -1.0738, -0.0419, 0.0108,\n", + " -1.1222, 0.1980, -0.3188, -0.6872, -0.8594, -0.4930, -2.0781, -0.9901,\n", + " 0.1485, 0.3511, -0.0502, -0.7699, 0.9069, -0.5347, 0.4570, -0.3123,\n", + " -1.1599, -0.7548, -1.2488, -0.7188, 0.9776, -0.0751, -1.8131, 0.9072,\n", + " 0.8487, 0.6494, 0.3849]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2137, -0.2314, 0.0180, -0.1395, 0.0826, 0.2690, 0.2146, 0.2330,\n", + " 0.2234, 0.2377, 0.2048, -0.1396, -0.1916, -0.2849, -0.1954, -0.2391,\n", + " -0.2187, 0.0080, -0.0763, -0.0767, -0.0290, -0.0801, -0.0213, 0.0093,\n", + " -0.0595, 0.0334, -0.0612, -0.1328, -0.2325, -0.2117, -0.2274, -0.1265,\n", + " -0.2890, -0.3239, -0.1673, -0.1741, 0.0194, 0.0405, -0.0165, 0.2389,\n", + " 0.2701, 0.2330, 0.2025]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00013303541345521808\n", + "Grad encoder.fc1.bias: 0.0014765197411179543\n", + "Grad encoder.encoder.0.weight: 4.952547897119075e-05\n", + "Grad encoder.encoder.0.bias: 0.000630429363809526\n", + "Grad encoder.encoder.2.weight: 4.7069792344700545e-05\n", + "Grad encoder.encoder.2.bias: 0.000563178036827594\n", + "Grad encoder.encoder.4.weight: 0.0001235161180375144\n", + "Grad encoder.encoder.4.bias: 0.0013172763865441084\n", + "Grad decoder.fc1.0.weight: 5.244564454187639e-05\n", + "Grad decoder.fc1.0.bias: 0.0005004305858165026\n", + "Grad decoder.fc1.2.weight: 5.323831283021718e-05\n", + "Grad decoder.fc1.2.bias: 0.0005724395159631968\n", + "Grad decoder.fc1.4.weight: 4.600761894835159e-05\n", + "Grad decoder.fc1.4.bias: 0.000611883238889277\n", + "Grad decoder.fc2.weight: 0.00015094986883923411\n", + "Grad decoder.fc2.bias: 0.0017353019211441278\n", + "Grad _memory_unit.weight_ih_l0: 2.1876558093936183e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.527709047077224e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.385185118531808e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.519617388927145e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011714495485648513\n", + "Grad _memory_unit.bias_hh_l1: 5.978680565021932e-05\n", + "Data X Sample: tensor([[1.8894, 1.6881, 2.1352, 2.1341, 2.1121, 1.9432, 1.9335, 3.6598, 4.1033,\n", + " 4.2921, 4.3207, 4.3351, 4.1389, 4.0788, 3.8888, 3.7485, 3.6511, 3.6269,\n", + " 3.6014, 3.4963, 3.3271, 3.3114, 2.9640, 2.8726, 2.6932, 2.7895, 2.7945,\n", + " 2.9284, 2.8898, 3.0295, 2.9816, 3.0756, 3.4013, 2.5379, 4.2454, 4.6212,\n", + " 4.9437, 5.3138, 6.0405, 5.8218, 1.1932, 0.7149, 0.7518, 1.3347, 2.0336,\n", + " 2.1272, 1.3462, 1.8532]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6773, 0.4083, 0.5468, 0.0109, 0.0082, -0.3097, -1.4282, -1.2062,\n", + " -0.1508, -0.1718, -1.2211, 1.0727, 0.1919, -0.0741, -0.8848, 0.0446,\n", + " -0.0691, -0.0471, 0.9188, 1.7834, 0.5054, 0.4303, 1.8749, 1.8700,\n", + " 0.7873, 1.1454, -0.7977, 0.7626, 1.0023, 0.6807, 0.6114, -0.1966,\n", + " -0.5047, 0.0370, -0.8523, 0.6743, -0.5168, 0.4232, -0.5562, -0.0648,\n", + " -1.0251, -0.0590, 0.7341]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2236, -0.2464, 0.0023, -0.1377, 0.0765, 0.2704, 0.2221, 0.2521,\n", + " 0.2418, 0.2465, 0.2125, -0.1402, -0.1929, -0.2929, -0.2029, -0.2483,\n", + " -0.2164, 0.0071, -0.0742, -0.0858, -0.0374, -0.0718, -0.0275, 0.0119,\n", + " -0.0483, 0.0437, -0.0647, -0.1406, -0.2336, -0.2206, -0.2363, -0.1358,\n", + " -0.2886, -0.3274, -0.1687, -0.1788, 0.0192, 0.0413, -0.0149, 0.2508,\n", + " 0.2835, 0.2540, 0.2086]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0012442970182746649\n", + "Grad encoder.fc1.bias: 0.0010405320208519697\n", + "Grad encoder.encoder.0.weight: 0.0003188349073752761\n", + "Grad encoder.encoder.0.bias: 0.001053026644513011\n", + "Grad encoder.encoder.2.weight: 0.00016541933291591704\n", + "Grad encoder.encoder.2.bias: 0.001067215809598565\n", + "Grad encoder.encoder.4.weight: 0.0003185988462064415\n", + "Grad encoder.encoder.4.bias: 0.0027671754360198975\n", + "Grad decoder.fc1.0.weight: 9.526174108032137e-05\n", + "Grad decoder.fc1.0.bias: 0.0010175956413149834\n", + "Grad decoder.fc1.2.weight: 0.00010178300726693124\n", + "Grad decoder.fc1.2.bias: 0.0014243039768189192\n", + "Grad decoder.fc1.4.weight: 8.726878149900585e-05\n", + "Grad decoder.fc1.4.bias: 0.0012643418740481138\n", + "Grad decoder.fc2.weight: 0.0001692466757958755\n", + "Grad decoder.fc2.bias: 0.001857337192632258\n", + "Grad _memory_unit.weight_ih_l0: 1.6276229871436954e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.680774095002562e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.4388198400847614e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.165381015918683e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00018857458780985326\n", + "Grad _memory_unit.bias_hh_l1: 9.646023681852967e-05\n", + "Data X Sample: tensor([[1.4491, 1.7201, 1.9173, 2.0553, 2.1053, 2.1952, 2.2509, 2.1692, 2.3434,\n", + " 2.3396, 2.3316, 2.2961, 2.2636, 2.2957, 2.2748, 2.1566, 2.1101, 2.2729,\n", + " 2.3603, 2.3563, 2.4070, 2.4066, 2.4917, 2.5118, 2.4586, 2.5649, 2.5308,\n", + " 2.5206, 2.3174, 2.4531, 2.4007, 2.3930, 2.2066, 1.4234, 1.8874, 1.7634,\n", + " 1.5928, 1.5027, 1.6480, 1.5377, 1.1407, 0.6950, 0.7316, 1.3146, 1.8751,\n", + " 2.0814, 1.3870, 1.9704]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.4863, 0.8307, 1.2677, 1.4306, 1.0898, 1.8672, -0.2590, -0.5329,\n", + " 0.3242, -0.3069, -0.7602, 0.8901, 0.3104, 0.4554, 0.4866, -0.1953,\n", + " -0.0297, -1.0980, -0.3622, 0.4061, 1.4716, 0.3028, -0.8974, 0.1457,\n", + " -0.0979, -0.7304, 0.0210, -0.0646, -0.0412, 0.3449, 0.2284, 0.0883,\n", + " 0.5851, 0.1693, 0.6467, -0.1528, -0.7434, 0.0705, 0.0000, -0.6046,\n", + " -0.6655, -0.7641, -1.0652]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2779, 0.2420, 0.1298, 0.1803, 0.0383, -0.0890, -0.3204, -0.3385,\n", + " -0.1224, -0.1793, -0.1823, 0.1232, 0.0875, 0.1726, 0.0837, 0.2054,\n", + " 0.2113, 0.0976, 0.0487, 0.1363, 0.0698, 0.0602, 0.1084, 0.0355,\n", + " 0.0684, 0.1028, -0.0527, 0.0161, 0.1491, 0.2192, 0.2279, 0.1452,\n", + " 0.2528, 0.2366, 0.1375, 0.1550, 0.0168, -0.0221, -0.0289, -0.2436,\n", + " -0.2107, -0.1726, -0.2173]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0010448065586388111\n", + "Grad encoder.fc1.bias: 0.0012091745156794786\n", + "Grad encoder.encoder.0.weight: 0.000272281002253294\n", + "Grad encoder.encoder.0.bias: 0.000993494177237153\n", + "Grad encoder.encoder.2.weight: 0.00014603883028030396\n", + "Grad encoder.encoder.2.bias: 0.0009109143866226077\n", + "Grad encoder.encoder.4.weight: 0.0003154158766847104\n", + "Grad encoder.encoder.4.bias: 0.0032189805060625076\n", + "Grad decoder.fc1.0.weight: 0.00010128907160833478\n", + "Grad decoder.fc1.0.bias: 0.0011391425505280495\n", + "Grad decoder.fc1.2.weight: 0.00012155876902397722\n", + "Grad decoder.fc1.2.bias: 0.00170343357603997\n", + "Grad decoder.fc1.4.weight: 9.88427855190821e-05\n", + "Grad decoder.fc1.4.bias: 0.001539427088573575\n", + "Grad decoder.fc2.weight: 0.00018536680727265775\n", + "Grad decoder.fc2.bias: 0.002576263854280114\n", + "Grad _memory_unit.weight_ih_l0: 1.5729290680610575e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.2270475862314925e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.7508827770361677e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.326895683945622e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00014776959142182022\n", + "Grad _memory_unit.bias_hh_l1: 7.62088893679902e-05\n", + "Data X Sample: tensor([[1.3568, 1.5104, 1.6394, 1.8542, 1.8697, 1.9727, 2.0830, 2.0641, 2.6753,\n", + " 3.8040, 4.1272, 4.1170, 4.1056, 3.8443, 3.5407, 3.5215, 3.4702, 3.4799,\n", + " 3.4837, 3.3363, 3.3124, 3.4767, 2.9785, 2.7867, 2.7570, 2.8548, 2.8105,\n", + " 2.8632, 2.8204, 3.0459, 2.9921, 3.1723, 3.5399, 2.6203, 4.2773, 4.6285,\n", + " 4.9555, 5.3853, 5.8123, 5.7282, 1.1025, 0.6074, 0.6023, 1.0534, 1.6808,\n", + " 1.7669, 1.1694, 1.6499]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4786, 0.1692, 0.2667, 0.1518, 0.0496, -0.2471, -0.3002, -0.4328,\n", + " -0.5657, -0.0988, -0.2136, -0.2980, -0.0724, 0.5094, -0.0296, 0.5816,\n", + " 0.1562, -0.2592, 0.2550, -0.8591, -2.6571, 4.6385, -1.7039, 0.5737,\n", + " 2.8910, 0.2410, 0.2955, 0.1128, -0.5398, -0.1178, -0.4569, -0.1520,\n", + " 1.2101, -0.5536, -0.0215, -0.5801, -0.2445, 0.3394, 0.5010, 0.4552,\n", + " 0.0630, -0.1784, -0.4424]], device='cuda:0')\n", + "Prediction Sample: tensor([[-2.3333e-01, -2.6118e-01, -1.3153e-02, -1.3580e-01, 7.4136e-02,\n", + " 2.7890e-01, 2.2618e-01, 2.7557e-01, 2.5586e-01, 2.6308e-01,\n", + " 2.3273e-01, -1.4526e-01, -2.0081e-01, -3.0131e-01, -2.1524e-01,\n", + " -2.6028e-01, -2.1064e-01, 8.3248e-03, -6.8702e-02, -8.1285e-02,\n", + " -3.7223e-02, -6.0680e-02, -3.1523e-02, 1.9353e-02, -3.6865e-02,\n", + " 6.4476e-02, -6.8485e-02, -1.4064e-01, -2.4119e-01, -2.3628e-01,\n", + " -2.4984e-01, -1.5066e-01, -2.9673e-01, -3.3499e-01, -1.8206e-01,\n", + " -1.9616e-01, 2.2433e-04, 5.2922e-02, -1.1969e-03, 2.6052e-01,\n", + " 2.9659e-01, 2.8798e-01, 2.2247e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001058907582773827\n", + "Grad encoder.fc1.bias: 0.0002886835136450827\n", + "Grad encoder.encoder.0.weight: 5.313080328051001e-05\n", + "Grad encoder.encoder.0.bias: 0.000311072391923517\n", + "Grad encoder.encoder.2.weight: 4.0883773181121796e-05\n", + "Grad encoder.encoder.2.bias: 0.00031504410435445607\n", + "Grad encoder.encoder.4.weight: 8.3317601820454e-05\n", + "Grad encoder.encoder.4.bias: 0.0004906642134301364\n", + "Grad decoder.fc1.0.weight: 3.8089525332907215e-05\n", + "Grad decoder.fc1.0.bias: 0.000294066674541682\n", + "Grad decoder.fc1.2.weight: 4.828121745958924e-05\n", + "Grad decoder.fc1.2.bias: 0.0004252776561770588\n", + "Grad decoder.fc1.4.weight: 4.6924062189646065e-05\n", + "Grad decoder.fc1.4.bias: 0.0005612042732536793\n", + "Grad decoder.fc2.weight: 0.00013286792091093957\n", + "Grad decoder.fc2.bias: 0.0020121466368436813\n", + "Grad _memory_unit.weight_ih_l0: 8.581306246924214e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.331392897758633e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.297732160310261e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.408233624213608e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.784470315324143e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.552073030732572e-05\n", + "Data X Sample: tensor([[2.5375, 2.9480, 3.2126, 3.4525, 3.6130, 3.7907, 3.8578, 3.8443, 3.8983,\n", + " 4.0346, 3.9273, 3.9008, 3.6818, 3.5362, 3.4802, 3.3136, 3.2988, 3.4219,\n", + " 3.3804, 3.4051, 3.5037, 3.4553, 3.0942, 2.9642, 2.8941, 2.9462, 2.7066,\n", + " 2.7530, 2.6574, 2.6692, 2.7681, 2.8296, 3.0141, 2.1786, 3.3556, 3.6824,\n", + " 4.0391, 4.2404, 4.7475, 4.6784, 1.9377, 1.0973, 1.1479, 1.9117, 3.0643,\n", + " 3.3452, 2.1825, 2.9713]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.7532, -0.7667, -0.3027, -0.7472, -0.3337, -0.2122, -0.1844, 0.1741,\n", + " -0.0321, 0.6426, -0.0609, -0.2450, 0.1975, 0.3933, 0.2734, -0.4479,\n", + " 0.1465, 0.1650, 0.8345, 6.4884, 1.8353, -0.3856, -1.1602, 0.7798,\n", + " -0.9504, -0.1547, 1.6988, 1.3381, 0.6403, 0.1377, 0.5298, 0.4502,\n", + " -0.2608, 0.7739, -0.5694, 0.8047, -0.5257, 0.5488, -0.8612, 0.4513,\n", + " 0.0703, 0.5002, -0.1287]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3147, -0.3362, -0.1233, -0.2944, -0.2254, 0.0465, 0.1019, 0.3125,\n", + " 0.1721, 0.2488, 0.2419, -0.1429, -0.1852, -0.2972, -0.1933, -0.2728,\n", + " -0.2458, -0.0890, -0.0856, -0.0867, -0.0548, -0.0261, -0.0519, -0.0326,\n", + " 0.0354, 0.0401, 0.1008, -0.0012, -0.1093, -0.1493, -0.1747, -0.1732,\n", + " -0.1331, -0.2751, -0.1411, -0.2001, -0.0114, 0.0145, -0.0219, 0.3603,\n", + " 0.3653, 0.3606, 0.2878]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006714607588946819\n", + "Grad encoder.fc1.bias: 0.0006688099820166826\n", + "Grad encoder.encoder.0.weight: 0.0001789177185855806\n", + "Grad encoder.encoder.0.bias: 0.0007198104867711663\n", + "Grad encoder.encoder.2.weight: 9.814546501729637e-05\n", + "Grad encoder.encoder.2.bias: 0.0006329972529783845\n", + "Grad encoder.encoder.4.weight: 0.00021330713934730738\n", + "Grad encoder.encoder.4.bias: 0.0010666329180821776\n", + "Grad decoder.fc1.0.weight: 6.817366374889389e-05\n", + "Grad decoder.fc1.0.bias: 0.0006053352262824774\n", + "Grad decoder.fc1.2.weight: 8.48012714413926e-05\n", + "Grad decoder.fc1.2.bias: 0.001037293579429388\n", + "Grad decoder.fc1.4.weight: 6.915834092069417e-05\n", + "Grad decoder.fc1.4.bias: 0.0011077184462919831\n", + "Grad decoder.fc2.weight: 0.0001725286419969052\n", + "Grad decoder.fc2.bias: 0.002378201112151146\n", + "Grad _memory_unit.weight_ih_l0: 2.8897013180539943e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.646693171001971e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.079726593568921e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.357822480320465e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00014022202230989933\n", + "Grad _memory_unit.bias_hh_l1: 7.21782780601643e-05\n", + "Data X Sample: tensor([[1.5329, 1.6473, 1.8257, 2.0838, 1.9448, 2.1097, 2.3926, 1.8540, 3.5248,\n", + " 4.2716, 4.4127, 4.2786, 4.2543, 4.0161, 3.8182, 3.7280, 3.6573, 3.7101,\n", + " 3.6158, 3.7399, 3.6019, 3.4966, 3.2050, 2.9489, 2.9016, 2.9462, 3.1035,\n", + " 3.0834, 3.0182, 3.1278, 3.2161, 3.3713, 3.9073, 2.8675, 4.7062, 5.0590,\n", + " 5.2092, 5.4277, 6.0722, 5.9523, 1.1597, 0.6373, 0.6508, 1.1769, 1.7680,\n", + " 1.9899, 1.3802, 1.8219]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4229, -0.3672, -0.4419, -0.3214, -0.5477, 0.3266, 0.4237, 0.2480,\n", + " 0.7471, 0.5839, 0.4327, 0.7578, 0.2019, 0.3444, 0.2245, 0.1411,\n", + " -0.0530, 0.9792, 0.7196, -0.3925, 0.2033, -0.4785, 2.4265, -2.6034,\n", + " -0.6519, 0.5233, -1.4634, -1.7864, -1.0742, -1.2501, -1.1820, -0.5048,\n", + " -0.4658, -1.7641, -1.4419, -1.2819, 0.2934, -0.3178, -0.0104, 0.4956,\n", + " 0.4863, 0.4300, 0.6684]], device='cuda:0')\n", + "Prediction Sample: tensor([[-2.1489e-01, -2.5588e-01, -4.4987e-02, -1.7038e-01, -3.2184e-03,\n", + " 2.0437e-01, 1.7941e-01, 2.7877e-01, 2.0917e-01, 2.2170e-01,\n", + " 2.2572e-01, -1.5372e-01, -1.7850e-01, -2.8014e-01, -2.0425e-01,\n", + " -2.3822e-01, -1.9898e-01, -3.5175e-05, -6.3776e-02, -6.2000e-02,\n", + " -2.0981e-02, -2.5317e-02, -4.5839e-02, 1.6556e-02, -1.9110e-03,\n", + " 8.7692e-02, -2.3385e-02, -9.1487e-02, -2.0146e-01, -2.0121e-01,\n", + " -2.1612e-01, -1.5703e-01, -2.3969e-01, -2.9611e-01, -1.6935e-01,\n", + " -1.8862e-01, -2.5413e-02, 5.2522e-02, 1.0558e-02, 2.4599e-01,\n", + " 2.8989e-01, 3.1372e-01, 2.2034e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00027664192020893097\n", + "Grad encoder.fc1.bias: 0.00020301426411606371\n", + "Grad encoder.encoder.0.weight: 9.614184818929061e-05\n", + "Grad encoder.encoder.0.bias: 0.0002955417730845511\n", + "Grad encoder.encoder.2.weight: 6.611738353967667e-05\n", + "Grad encoder.encoder.2.bias: 0.0004133049806114286\n", + "Grad encoder.encoder.4.weight: 0.00015701481606811285\n", + "Grad encoder.encoder.4.bias: 0.001882587792351842\n", + "Grad decoder.fc1.0.weight: 6.731554458383471e-05\n", + "Grad decoder.fc1.0.bias: 0.0006170851411297917\n", + "Grad decoder.fc1.2.weight: 6.120816397015005e-05\n", + "Grad decoder.fc1.2.bias: 0.000570127391256392\n", + "Grad decoder.fc1.4.weight: 5.418368164100684e-05\n", + "Grad decoder.fc1.4.bias: 0.0007607869920320809\n", + "Grad decoder.fc2.weight: 0.00013671359920408577\n", + "Grad decoder.fc2.bias: 0.0019172461470589042\n", + "Grad _memory_unit.weight_ih_l0: 2.0471330572036095e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00011525287118274719\n", + "Grad _memory_unit.bias_hh_l0: 6.0569487686734647e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.848089808248915e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002042208652710542\n", + "Grad _memory_unit.bias_hh_l1: 0.00010835539433173835\n", + "Data X Sample: tensor([[1.2804, 1.4638, 1.5747, 1.6355, 1.5657, 1.4364, 1.9335, 2.9429, 3.5321,\n", + " 3.7866, 3.8607, 3.8229, 3.6906, 3.5662, 3.3844, 3.3560, 3.3036, 3.3929,\n", + " 3.3639, 3.2750, 3.2240, 3.0572, 3.0966, 2.7409, 2.6107, 2.7686, 2.8771,\n", + " 2.8305, 3.0390, 3.1540, 3.1321, 3.1087, 3.4629, 2.5219, 4.1743, 4.4631,\n", + " 4.8493, 5.2210, 5.8313, 5.6601, 1.0595, 0.6353, 0.5901, 1.0362, 1.4588,\n", + " 1.5897, 1.0742, 1.5795]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1737, -0.2798, -0.7503, 0.6093, 0.4369, -0.3126, 0.3139, 0.5182,\n", + " 0.3946, 0.5211, 0.2701, 0.4863, -2.0927, 0.2177, -0.0196, -0.3619,\n", + " -0.1172, 0.1625, -0.2883, 0.1593, -1.3103, -0.5216, 2.4764, -0.8635,\n", + " -1.4580, 0.1881, 1.3735, -0.1288, -0.1529, 0.4162, -0.6230, -1.1918,\n", + " 0.2063, 0.3694, 0.5268, 0.5080, 0.8781, 0.2066, 0.5801, 0.7833,\n", + " 0.5510, 0.5900, 0.8210]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2209, -0.2676, -0.0878, -0.2044, -0.1155, 0.1084, 0.1165, 0.2811,\n", + " 0.1685, 0.1991, 0.2079, -0.1536, -0.1569, -0.2629, -0.1860, -0.2230,\n", + " -0.1927, -0.0271, -0.0702, -0.0581, -0.0176, -0.0005, -0.0577, -0.0143,\n", + " 0.0364, 0.0913, 0.0352, -0.0401, -0.1465, -0.1582, -0.1826, -0.1600,\n", + " -0.1678, -0.2464, -0.1388, -0.1731, -0.0344, 0.0358, 0.0037, 0.2578,\n", + " 0.2920, 0.3270, 0.2200]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00036009924951940775\n", + "Grad encoder.fc1.bias: 0.00041983750998042524\n", + "Grad encoder.encoder.0.weight: 8.425025589531288e-05\n", + "Grad encoder.encoder.0.bias: 0.0004775877750944346\n", + "Grad encoder.encoder.2.weight: 6.75754708936438e-05\n", + "Grad encoder.encoder.2.bias: 0.0006560143083333969\n", + "Grad encoder.encoder.4.weight: 0.00019388858345337212\n", + "Grad encoder.encoder.4.bias: 0.0032900068908929825\n", + "Grad decoder.fc1.0.weight: 9.935148409567773e-05\n", + "Grad decoder.fc1.0.bias: 0.0011774895247071981\n", + "Grad decoder.fc1.2.weight: 0.00011154338426422328\n", + "Grad decoder.fc1.2.bias: 0.001245539984665811\n", + "Grad decoder.fc1.4.weight: 0.00010252739593852311\n", + "Grad decoder.fc1.4.bias: 0.001580539159476757\n", + "Grad decoder.fc2.weight: 0.0001871990825748071\n", + "Grad decoder.fc2.bias: 0.0028339361306279898\n", + "Grad _memory_unit.weight_ih_l0: 2.827347270795144e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00014889080193825066\n", + "Grad _memory_unit.bias_hh_l0: 7.760880544083193e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.7826992967166e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002484503493178636\n", + "Grad _memory_unit.bias_hh_l1: 0.000131210355903022\n", + "Data X Sample: tensor([[1.4735, 1.6560, 1.7430, 1.9570, 1.9721, 2.0788, 2.0429, 3.5746, 4.3840,\n", + " 4.3363, 4.2572, 4.3799, 4.0679, 4.0624, 3.8282, 3.7567, 3.8020, 3.6676,\n", + " 3.6468, 3.6320, 3.5700, 3.7247, 3.1833, 2.8993, 2.8002, 2.8522, 2.7945,\n", + " 3.0304, 2.8517, 3.2129, 3.2755, 3.3795, 3.7973, 2.7554, 4.5101, 4.8596,\n", + " 5.0597, 5.3244, 5.8250, 5.8019, 1.1359, 0.6751, 0.6649, 1.1166, 1.6570,\n", + " 1.9613, 1.2238, 1.7437]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.8499e-01, -5.4014e-01, -1.1566e-01, 2.5732e-01, -8.4135e-02,\n", + " -1.9369e-01, 3.4712e-01, 1.3713e-01, 7.6626e-01, -3.2606e-01,\n", + " -3.7442e-01, 7.7938e-01, -8.1308e-01, 1.8207e-01, -7.7697e-01,\n", + " -7.6576e-01, -1.2877e+00, -1.0012e+00, -8.4820e-01, -1.2322e-01,\n", + " 1.1279e-01, -8.8877e-02, -5.8188e-01, 8.3499e-01, 3.4434e-01,\n", + " 3.9378e+00, 1.5667e+00, -4.6592e-01, -7.3398e-02, -1.8425e-01,\n", + " 4.0743e-01, -6.2238e-01, 3.0916e-01, -2.6678e-01, 1.0155e-01,\n", + " -2.5659e-01, -5.6850e-01, 6.8947e-01, -2.5781e-01, -4.0995e-01,\n", + " -8.0289e-04, 9.2705e-01, 1.2532e+00]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1054, -0.1964, -0.1183, -0.1674, -0.1823, -0.0208, -0.0083, 0.1742,\n", + " 0.0586, 0.0788, 0.0804, -0.1094, -0.0951, -0.1335, -0.0977, -0.1272,\n", + " -0.1373, -0.0176, -0.0624, -0.0225, 0.0190, 0.0538, -0.0182, -0.0303,\n", + " 0.0359, 0.0927, 0.0966, 0.0354, -0.0469, -0.0230, -0.0711, -0.0964,\n", + " -0.0356, -0.0999, -0.0583, -0.0643, -0.0718, -0.0043, 0.0244, 0.1249,\n", + " 0.1854, 0.2449, 0.1340]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0019865618087351322\n", + "Grad encoder.fc1.bias: 0.0017809118144214153\n", + "Grad encoder.encoder.0.weight: 0.00046200110227800906\n", + "Grad encoder.encoder.0.bias: 0.002069700276479125\n", + "Grad encoder.encoder.2.weight: 0.0002417117648292333\n", + "Grad encoder.encoder.2.bias: 0.0019945837557315826\n", + "Grad encoder.encoder.4.weight: 0.00042069965275004506\n", + "Grad encoder.encoder.4.bias: 0.006381198763847351\n", + "Grad decoder.fc1.0.weight: 0.00014073563215788454\n", + "Grad decoder.fc1.0.bias: 0.002011870499700308\n", + "Grad decoder.fc1.2.weight: 0.00014344336523208767\n", + "Grad decoder.fc1.2.bias: 0.0018428245093673468\n", + "Grad decoder.fc1.4.weight: 9.89467152976431e-05\n", + "Grad decoder.fc1.4.bias: 0.0016318645793944597\n", + "Grad decoder.fc2.weight: 0.00016316781693603843\n", + "Grad decoder.fc2.bias: 0.002644156338647008\n", + "Grad _memory_unit.weight_ih_l0: 1.0649293471942656e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.259684884455055e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.8290308768628165e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.161050911643542e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002759984345175326\n", + "Grad _memory_unit.bias_hh_l1: 0.0001415246370015666\n", + "Data X Sample: tensor([[-0.0053, 0.0102, 0.0090, 0.0109, 0.0000, 0.0029, 0.0123, 0.0028,\n", + " 0.0122, 0.0126, 0.0063, 0.0078, 0.0000, 0.0327, 0.0151, 0.0027,\n", + " -0.0613, -0.0542, -0.0764, -0.0651, -0.0883, -0.0398, -0.0386, -0.0554,\n", + " -0.0432, -0.0888, -0.0480, -0.1142, -0.0069, 0.0098, -0.0140, 0.0055,\n", + " -0.0088, -0.0275, 0.0147, 0.0243, 0.0020, 0.0106, 0.0190, -0.0057,\n", + " 0.0048, 0.0080, -0.0020, 0.0144, 0.0238, -0.0114, -0.0204, -0.0078]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.8875, 0.9398, 0.4584, 0.7810, -0.5043, -0.8438, -1.0517, -1.2012,\n", + " -0.6235, -0.7242, -0.9781, 0.2276, -0.1107, 0.3972, 2.3613, -0.3564,\n", + " -0.2880, -0.0551, -0.9828, -0.7129, -1.3536, 0.3522, 1.1702, 0.1964,\n", + " 1.2606, -0.4089, -0.6514, -0.2557, 0.7011, 0.9057, 0.0900, 0.0131,\n", + " -0.1489, 0.3322, 0.3768, 0.4609, 0.9727, -0.0459, -0.8437, -0.4836,\n", + " -0.3421, -0.4411, 1.0776]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5870, 0.4332, 0.2455, 0.4297, 0.1302, -0.1367, -0.5882, -0.6892,\n", + " -0.2526, -0.3771, -0.3126, 0.2592, 0.2294, 0.3678, 0.2079, 0.4270,\n", + " 0.4172, 0.2067, 0.1212, 0.2459, 0.1422, 0.1229, 0.1907, 0.1359,\n", + " 0.1387, 0.1634, -0.1007, 0.0995, 0.3236, 0.4633, 0.4502, 0.3204,\n", + " 0.5236, 0.4719, 0.2360, 0.3055, 0.0571, -0.0069, -0.0416, -0.4264,\n", + " -0.4690, -0.3822, -0.4394]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0022927429527044296\n", + "Grad encoder.fc1.bias: 0.001610459410585463\n", + "Grad encoder.encoder.0.weight: 0.0004908284172415733\n", + "Grad encoder.encoder.0.bias: 0.001676636398769915\n", + "Grad encoder.encoder.2.weight: 0.0002289768890477717\n", + "Grad encoder.encoder.2.bias: 0.0014499977696686983\n", + "Grad encoder.encoder.4.weight: 0.0003604992525652051\n", + "Grad encoder.encoder.4.bias: 0.0030477538239210844\n", + "Grad decoder.fc1.0.weight: 0.00012049807264702395\n", + "Grad decoder.fc1.0.bias: 0.0012697236379608512\n", + "Grad decoder.fc1.2.weight: 0.00010846654913621023\n", + "Grad decoder.fc1.2.bias: 0.0012272356543689966\n", + "Grad decoder.fc1.4.weight: 6.983788625802845e-05\n", + "Grad decoder.fc1.4.bias: 0.0007611745968461037\n", + "Grad decoder.fc2.weight: 0.00014491556794382632\n", + "Grad decoder.fc2.bias: 0.0019029737450182438\n", + "Grad _memory_unit.weight_ih_l0: 4.996038114768453e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0001666460302658379\n", + "Grad _memory_unit.bias_hh_l0: 8.644039917271584e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.421040633431403e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00031486977241002023\n", + "Grad _memory_unit.bias_hh_l1: 0.00015985860954970121\n", + "Data X Sample: tensor([[-0.0021, -0.0073, 0.0060, -0.0022, 0.0017, 0.0015, 0.0108, 0.0028,\n", + " -0.0049, 0.0079, 0.0127, 0.0234, 0.0022, -0.0055, 0.0177, 0.0027,\n", + " 0.0047, -0.0135, -0.0248, -0.0037, -0.0074, -0.0015, -0.0193, -0.0191,\n", + " -0.0244, -0.0392, -0.0053, -0.0286, -0.0451, 0.0197, -0.0175, -0.0055,\n", + " -0.0110, -0.0320, 0.0049, 0.0341, -0.0039, 0.0000, -0.0127, 0.0113,\n", + " 0.0048, 0.0100, 0.0101, -0.0029, -0.0238, -0.0172, -0.0408, -0.0313]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.5502, 0.2195, 0.5567, 0.1974, -2.0284, -0.7832, -1.2286, -1.2610,\n", + " -0.4152, -0.9334, -0.8614, 0.2281, -0.1595, 0.4608, 0.2449, 0.1110,\n", + " 0.8290, 0.1013, 0.3723, -0.3604, -0.1073, -0.3777, 0.0499, -2.6848,\n", + " -0.6931, -0.6738, 1.2309, 0.7673, 1.5046, 1.1673, 1.5913, 0.5877,\n", + " 1.4917, -0.7646, -0.3573, 0.7608, -0.8260, -0.6411, -0.1229, -0.6444,\n", + " -0.7916, -0.9461, -0.3218]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.7859, 0.5633, 0.3066, 0.5505, 0.0463, -0.2273, -0.8296, -0.9162,\n", + " -0.4128, -0.5630, -0.4618, 0.3307, 0.3195, 0.4961, 0.2563, 0.5200,\n", + " 0.5227, 0.2433, 0.1531, 0.2906, 0.1903, 0.1339, 0.2371, 0.2100,\n", + " 0.1511, 0.1695, -0.0468, 0.2111, 0.5097, 0.6715, 0.6289, 0.4642,\n", + " 0.6787, 0.6067, 0.3238, 0.3795, 0.0561, -0.0066, -0.0286, -0.5968,\n", + " -0.6299, -0.5088, -0.5310]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00025973294395953417\n", + "Grad encoder.fc1.bias: 0.0015698815695941448\n", + "Grad encoder.encoder.0.weight: 9.77045638137497e-05\n", + "Grad encoder.encoder.0.bias: 0.0011936816154047847\n", + "Grad encoder.encoder.2.weight: 9.231199510395527e-05\n", + "Grad encoder.encoder.2.bias: 0.0011151537764817476\n", + "Grad encoder.encoder.4.weight: 0.00024538207799196243\n", + "Grad encoder.encoder.4.bias: 0.0019364621257409453\n", + "Grad decoder.fc1.0.weight: 0.00011150017235195264\n", + "Grad decoder.fc1.0.bias: 0.0010164461564272642\n", + "Grad decoder.fc1.2.weight: 0.00012276814959477633\n", + "Grad decoder.fc1.2.bias: 0.0011758017353713512\n", + "Grad decoder.fc1.4.weight: 8.091072231763974e-05\n", + "Grad decoder.fc1.4.bias: 0.0010813020635396242\n", + "Grad decoder.fc2.weight: 0.00014625136100221425\n", + "Grad decoder.fc2.bias: 0.002213867148384452\n", + "Grad _memory_unit.weight_ih_l0: 2.8659875169978477e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00017208754434250295\n", + "Grad _memory_unit.bias_hh_l0: 8.64288886077702e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.552447409078013e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002603872853796929\n", + "Grad _memory_unit.bias_hh_l1: 0.00013388383376877755\n", + "Data X Sample: tensor([[2.5524, 2.9261, 3.1946, 3.1989, 3.3602, 3.5447, 3.5928, 3.7038, 3.8104,\n", + " 3.8750, 4.0130, 3.9028, 3.6152, 3.7107, 3.6668, 3.5392, 3.4089, 3.5631,\n", + " 3.5167, 3.2303, 3.2756, 3.2915, 3.0315, 2.8134, 2.7289, 2.7085, 2.7945,\n", + " 2.8265, 2.5984, 2.6791, 2.7996, 2.7910, 2.8491, 2.1077, 3.5615, 3.8429,\n", + " 4.1630, 4.5240, 4.9250, 4.9224, 2.0522, 1.0515, 1.0974, 2.1413, 2.7908,\n", + " 3.1050, 2.0737, 3.3075]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6349, -0.8638, -1.0982, -0.9358, -1.6080, -0.1473, 0.7128, 0.7940,\n", + " -0.2730, 0.8470, 0.7949, -0.6933, 0.0820, -0.6262, -0.4487, -0.4342,\n", + " -0.1194, -0.1557, 0.5816, 0.6751, -0.0191, 1.1132, 0.6239, 1.0597,\n", + " 1.0261, 0.0314, 1.5907, -0.3006, 1.4868, -0.7291, -0.6863, 0.0349,\n", + " -0.8608, -0.7970, -0.5170, -0.8180, -1.0105, -0.3184, -2.3004, 1.0349,\n", + " 0.8028, 0.5309, 0.4698]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1209, -0.1896, -0.1295, -0.1612, -0.2325, -0.0943, -0.0765, 0.0958,\n", + " 0.0269, 0.0717, 0.0334, -0.0834, -0.0783, -0.1263, -0.0598, -0.1157,\n", + " -0.1039, -0.0430, -0.0707, -0.0298, -0.0069, 0.0419, 0.0029, -0.0621,\n", + " 0.0720, 0.0417, 0.1170, 0.0467, 0.0256, 0.0171, -0.0406, -0.0673,\n", + " 0.0273, -0.0571, -0.0173, -0.0488, -0.0437, -0.0189, 0.0107, 0.1580,\n", + " 0.1444, 0.2036, 0.1197]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000732351269107312\n", + "Grad encoder.fc1.bias: 0.0005044906865805387\n", + "Grad encoder.encoder.0.weight: 0.00018450843344908208\n", + "Grad encoder.encoder.0.bias: 0.00048519414849579334\n", + "Grad encoder.encoder.2.weight: 0.00011909719614777714\n", + "Grad encoder.encoder.2.bias: 0.0005710816476494074\n", + "Grad encoder.encoder.4.weight: 0.0002345513057662174\n", + "Grad encoder.encoder.4.bias: 0.001002100296318531\n", + "Grad decoder.fc1.0.weight: 8.728566899662837e-05\n", + "Grad decoder.fc1.0.bias: 0.0006026248447597027\n", + "Grad decoder.fc1.2.weight: 9.408898768015206e-05\n", + "Grad decoder.fc1.2.bias: 0.0009378638933412731\n", + "Grad decoder.fc1.4.weight: 7.744326285319403e-05\n", + "Grad decoder.fc1.4.bias: 0.0009181679924950004\n", + "Grad decoder.fc2.weight: 0.00014088660827837884\n", + "Grad decoder.fc2.bias: 0.0022566956467926502\n", + "Grad _memory_unit.weight_ih_l0: 8.784671990724746e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.461876101733651e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.3550348739954643e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.002527127042413e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.551992843626067e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.91778009745758e-05\n", + "Data X Sample: tensor([[1.4724, 1.6342, 1.8137, 2.0641, 2.1053, 2.1834, 2.0460, 2.1607, 3.5175,\n", + " 4.3458, 4.3175, 4.3390, 4.1123, 4.0897, 3.9392, 3.8661, 3.6605, 3.6792,\n", + " 3.7067, 3.6134, 3.5037, 3.4292, 2.9833, 3.0348, 2.8640, 2.9149, 2.9970,\n", + " 3.0508, 2.9835, 3.2882, 3.3280, 3.3768, 3.8347, 2.8011, 4.5542, 4.8815,\n", + " 5.1246, 5.4118, 6.0912, 5.8530, 1.1072, 0.6632, 0.6103, 1.1453, 1.7165,\n", + " 1.9728, 1.3190, 1.7437]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4099, -0.2980, 0.2305, -0.0551, 0.5774, 0.9964, 0.2501, 0.0110,\n", + " -0.0171, 0.2305, 0.0956, -0.2167, 0.2771, -0.5886, 1.4308, -0.5249,\n", + " -0.4144, 0.6452, -0.6460, -0.8611, 0.0062, 0.5139, 0.4873, -0.6854,\n", + " 0.1759, -0.1714, 0.2308, 0.6671, -0.7404, -0.6507, -1.0433, -0.1846,\n", + " -0.3366, -0.3393, -0.8030, -0.6044, -0.4689, 0.1005, -0.7367, 0.1423,\n", + " 0.0749, 0.2554, -0.1728]], device='cuda:0')\n", + "Prediction Sample: tensor([[-2.1214e-01, -2.3557e-01, -6.2209e-02, -1.6276e-01, 3.5294e-03,\n", + " 1.7767e-01, 1.6125e-01, 2.6110e-01, 1.6785e-01, 2.0333e-01,\n", + " 1.9549e-01, -1.5876e-01, -1.6747e-01, -2.7155e-01, -2.0017e-01,\n", + " -2.0719e-01, -1.6390e-01, 9.9570e-05, -6.4433e-02, -4.1368e-02,\n", + " -2.2941e-02, -1.4643e-02, -5.9706e-02, 2.0006e-02, 3.4613e-02,\n", + " 9.5335e-02, -1.1671e-02, -6.8231e-02, -1.7739e-01, -1.9617e-01,\n", + " -1.9955e-01, -1.7413e-01, -2.2771e-01, -2.7602e-01, -1.4697e-01,\n", + " -1.8177e-01, -3.5033e-02, 5.3373e-02, 1.7107e-02, 2.2894e-01,\n", + " 2.5485e-01, 3.1751e-01, 2.1626e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.001581958495080471\n", + "Grad encoder.fc1.bias: 0.0015941394958645105\n", + "Grad encoder.encoder.0.weight: 0.0003236920456402004\n", + "Grad encoder.encoder.0.bias: 0.0015820297412574291\n", + "Grad encoder.encoder.2.weight: 0.00016813055844977498\n", + "Grad encoder.encoder.2.bias: 0.0016081915237009525\n", + "Grad encoder.encoder.4.weight: 0.00029092159820720553\n", + "Grad encoder.encoder.4.bias: 0.0028312522917985916\n", + "Grad decoder.fc1.0.weight: 0.00010030308476416394\n", + "Grad decoder.fc1.0.bias: 0.0009326498256996274\n", + "Grad decoder.fc1.2.weight: 0.00010328750795451924\n", + "Grad decoder.fc1.2.bias: 0.0010342443129047751\n", + "Grad decoder.fc1.4.weight: 8.819602953735739e-05\n", + "Grad decoder.fc1.4.bias: 0.0010275698732584715\n", + "Grad decoder.fc2.weight: 0.00018049756181426346\n", + "Grad decoder.fc2.bias: 0.0018239595228806138\n", + "Grad _memory_unit.weight_ih_l0: 3.200574792572297e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00013162835966795683\n", + "Grad _memory_unit.bias_hh_l0: 6.82946338201873e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.618903848400805e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00022133463062345982\n", + "Grad _memory_unit.bias_hh_l1: 0.00011652312241494656\n", + "Data X Sample: tensor([[1.4374, 1.6196, 1.8242, 1.9285, 2.0284, 2.1480, 2.1061, 3.0082, 4.2864,\n", + " 4.3569, 4.3778, 4.3877, 4.0701, 4.0161, 3.8736, 3.7567, 3.6951, 3.7836,\n", + " 3.6220, 3.4349, 3.5209, 3.4859, 3.0171, 2.8478, 2.8415, 2.8600, 2.8105,\n", + " 2.9447, 2.8759, 3.0688, 3.2371, 3.3215, 3.7709, 2.7645, 4.4758, 4.9763,\n", + " 4.9496, 5.4224, 5.9264, 5.7168, 1.1072, 0.6711, 0.6103, 1.2314, 1.7363,\n", + " 1.7669, 1.2714, 1.8375]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1547, 0.0983, 0.0534, -0.3136, -0.7695, 0.5372, -0.0401, 0.4506,\n", + " -0.5778, -0.5381, -0.7161, -0.1595, -1.3853, -0.7381, -0.2926, 0.0036,\n", + " 0.2990, 0.7377, -0.6478, 0.9129, 0.4524, -0.0416, -0.2383, 0.6442,\n", + " -0.3916, 0.3824, -1.0886, 0.0609, -0.4429, 0.6425, -0.5268, -0.2358,\n", + " -0.1367, 0.5814, -0.3346, -0.2894, -0.8287, 0.0940, -0.4768, -0.0637,\n", + " -0.3140, 1.1757, -0.1082]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2297, -0.2492, -0.0427, -0.1544, 0.0725, 0.2487, 0.2139, 0.2709,\n", + " 0.1979, 0.2286, 0.2242, -0.1673, -0.1884, -0.3031, -0.2311, -0.2332,\n", + " -0.1796, 0.0065, -0.0584, -0.0466, -0.0327, -0.0347, -0.0583, 0.0417,\n", + " 0.0210, 0.0840, -0.0500, -0.1042, -0.2217, -0.2350, -0.2331, -0.1836,\n", + " -0.2812, -0.3274, -0.1755, -0.2082, -0.0296, 0.0662, 0.0207, 0.2538,\n", + " 0.2674, 0.3245, 0.2329]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00018931642989628017\n", + "Grad encoder.fc1.bias: 0.00018662470392882824\n", + "Grad encoder.encoder.0.weight: 6.20473874732852e-05\n", + "Grad encoder.encoder.0.bias: 0.00018605866353027523\n", + "Grad encoder.encoder.2.weight: 5.3759609727421775e-05\n", + "Grad encoder.encoder.2.bias: 0.0002761682844720781\n", + "Grad encoder.encoder.4.weight: 0.00013012814451940358\n", + "Grad encoder.encoder.4.bias: 0.0008704038336873055\n", + "Grad decoder.fc1.0.weight: 4.594401616486721e-05\n", + "Grad decoder.fc1.0.bias: 0.0004092824237886816\n", + "Grad decoder.fc1.2.weight: 5.262753620627336e-05\n", + "Grad decoder.fc1.2.bias: 0.0005567788612097502\n", + "Grad decoder.fc1.4.weight: 4.303334208088927e-05\n", + "Grad decoder.fc1.4.bias: 0.0005557264667004347\n", + "Grad decoder.fc2.weight: 9.696214692667127e-05\n", + "Grad decoder.fc2.bias: 0.0015396216185763478\n", + "Grad _memory_unit.weight_ih_l0: 2.0370265701785684e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.1805538532789797e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.7164014682057314e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.093342224427033e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.037864219862968e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.589194941218011e-05\n", + "Data X Sample: tensor([[1.7854, 2.1090, 2.3696, 2.5911, 2.7234, 2.8522, 3.0628, 2.9642, 3.0757,\n", + " 2.9857, 2.9725, 2.9310, 2.8384, 2.6447, 2.7060, 2.6066, 2.6384, 2.5302,\n", + " 2.5276, 2.5255, 2.4168, 2.4648, 2.3857, 2.2713, 2.2015, 2.2410, 2.1658,\n", + " 2.2758, 1.6999, 1.7686, 1.6868, 1.6967, 1.6104, 1.1168, 1.6864, 1.9190,\n", + " 2.1081, 2.3614, 2.7319, 2.6811, 1.3793, 0.8304, 0.8367, 1.5758, 2.3428,\n", + " 2.5732, 1.7133, 2.3614]], device='cuda:0')\n", + "Data Y Sample: tensor([[-7.4824e-01, -1.2191e+00, -5.8433e-01, -9.5122e-01, -5.8610e-01,\n", + " -6.2414e-01, -8.1305e-02, 3.3034e-01, -1.6522e-01, 1.8043e-01,\n", + " -8.9036e-02, -7.7992e-01, 6.1507e-01, -4.4688e-01, -9.2937e-01,\n", + " -1.4290e+00, -8.4924e-01, -1.6103e+00, 3.0843e-01, 1.6048e-01,\n", + " -1.1571e+00, -6.3636e-01, -2.2984e-01, -1.1090e+00, 8.5930e-01,\n", + " 1.8820e+00, 1.3698e+00, 3.3827e-01, 2.1275e-01, -4.2882e-01,\n", + " -8.0054e-01, 1.0860e-03, 2.0903e-01, 1.1684e+00, 3.7446e-01,\n", + " -8.4141e-01, 7.4560e-01, -5.5562e-01, -2.8863e-01, 5.5121e-01,\n", + " 1.2492e+00, 1.0876e+00, 9.2344e-02]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.8810, -0.7216, -0.3557, -0.7449, -0.5375, -0.1849, 0.3166, 0.6705,\n", + " 0.3621, 0.6872, 0.6055, -0.2950, -0.3761, -0.6767, -0.4503, -0.7271,\n", + " -0.6476, -0.3471, -0.1787, -0.2198, -0.1160, -0.0993, -0.1337, -0.0827,\n", + " 0.0168, -0.0903, 0.4864, 0.2932, 0.0027, -0.2952, -0.4130, -0.3719,\n", + " -0.2696, -0.7460, -0.4119, -0.3981, 0.0316, 0.0292, 0.0095, 1.0318,\n", + " 0.9828, 0.9199, 0.8744]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0009029497159644961\n", + "Grad encoder.fc1.bias: 0.0018968062940984964\n", + "Grad encoder.encoder.0.weight: 0.0002531646750867367\n", + "Grad encoder.encoder.0.bias: 0.0014969810144975781\n", + "Grad encoder.encoder.2.weight: 0.0001783900079317391\n", + "Grad encoder.encoder.2.bias: 0.0018797243246808648\n", + "Grad encoder.encoder.4.weight: 0.0004048011905979365\n", + "Grad encoder.encoder.4.bias: 0.004104700870811939\n", + "Grad decoder.fc1.0.weight: 0.0001318598515354097\n", + "Grad decoder.fc1.0.bias: 0.0016941273352131248\n", + "Grad decoder.fc1.2.weight: 0.0001469702838221565\n", + "Grad decoder.fc1.2.bias: 0.0015684622339904308\n", + "Grad decoder.fc1.4.weight: 8.268655074061826e-05\n", + "Grad decoder.fc1.4.bias: 0.00113615021109581\n", + "Grad decoder.fc2.weight: 0.0001581218239152804\n", + "Grad decoder.fc2.bias: 0.0023058659862726927\n", + "Grad _memory_unit.weight_ih_l0: 7.580451347166672e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0002211174287367612\n", + "Grad _memory_unit.bias_hh_l0: 0.00011475937208160758\n", + "Grad _memory_unit.weight_ih_l1: 1.9465454897726886e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0003291306202299893\n", + "Grad _memory_unit.bias_hh_l1: 0.00016824986960273236\n", + "Data X Sample: tensor([[1.9116, 2.4455, 2.6927, 2.9540, 3.1468, 3.2235, 3.3063, 3.2850, 3.3076,\n", + " 3.4043, 3.3055, 3.2348, 3.1536, 2.9582, 2.9052, 2.7351, 2.8114, 2.7855,\n", + " 2.7713, 2.7542, 2.7480, 2.7342, 2.6580, 2.6340, 2.4605, 2.5022, 2.4242,\n", + " 2.4879, 2.0642, 2.0633, 1.9947, 1.9868, 2.0548, 1.4234, 2.2109, 2.4103,\n", + " 2.6508, 3.0266, 3.5685, 3.4641, 1.5845, 1.0136, 0.9620, 1.7682, 2.6362,\n", + " 2.9563, 1.7881, 2.5960]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.2394, -0.6242, 0.7096, -0.8789, -0.5231, 0.3325, 0.1402, 0.8230,\n", + " 0.0603, 0.7020, -0.4006, -0.2365, -0.8614, -0.3295, 0.0718, 0.5648,\n", + " -0.7452, 1.3594, -0.0727, 0.0864, 0.1877, 0.8627, -0.5053, 0.5550,\n", + " 0.0584, 1.9030, 1.0877, -0.0460, 0.1517, -0.1199, -0.9934, -0.8082,\n", + " 2.0651, -0.1293, 0.7192, -2.0333, 0.1438, -0.1769, -1.1945, 1.0259,\n", + " 1.7653, 2.0917, 0.9389]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.5011, -0.4703, -0.2123, -0.4350, -0.2995, -0.0277, 0.1720, 0.4254,\n", + " 0.2253, 0.3855, 0.3469, -0.2155, -0.2441, -0.4373, -0.2895, -0.4156,\n", + " -0.3596, -0.1812, -0.1104, -0.1185, -0.0817, -0.0495, -0.0980, -0.0535,\n", + " 0.0700, 0.0029, 0.2285, 0.0853, -0.0836, -0.2190, -0.2613, -0.2559,\n", + " -0.1933, -0.4234, -0.2229, -0.2731, -0.0054, 0.0240, -0.0089, 0.5790,\n", + " 0.5372, 0.5506, 0.4796]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002579796710051596\n", + "Grad encoder.fc1.bias: 0.0003188619448337704\n", + "Grad encoder.encoder.0.weight: 0.00010124413529410958\n", + "Grad encoder.encoder.0.bias: 0.000329167814925313\n", + "Grad encoder.encoder.2.weight: 6.158541509648785e-05\n", + "Grad encoder.encoder.2.bias: 0.00042231869883835316\n", + "Grad encoder.encoder.4.weight: 0.00014353689039126039\n", + "Grad encoder.encoder.4.bias: 0.0015454331878572702\n", + "Grad decoder.fc1.0.weight: 6.171203858684748e-05\n", + "Grad decoder.fc1.0.bias: 0.0004635406075976789\n", + "Grad decoder.fc1.2.weight: 7.405015639960766e-05\n", + "Grad decoder.fc1.2.bias: 0.0005722767673432827\n", + "Grad decoder.fc1.4.weight: 6.923516048118472e-05\n", + "Grad decoder.fc1.4.bias: 0.0006124803330749273\n", + "Grad decoder.fc2.weight: 0.0001686209288891405\n", + "Grad decoder.fc2.bias: 0.0018828592728823423\n", + "Grad _memory_unit.weight_ih_l0: 3.230569927836768e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0001382191840093583\n", + "Grad _memory_unit.bias_hh_l0: 7.363654003711417e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.695190444996115e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00018223078222945333\n", + "Grad _memory_unit.bias_hh_l1: 9.916903218254447e-05\n", + "Data X Sample: tensor([[1.3685, 1.4682, 1.6409, 1.7208, 1.8748, 1.9182, 1.9397, 1.9931, 3.1074,\n", + " 4.0125, 4.1399, 4.1053, 3.8615, 3.6562, 3.6921, 3.5652, 3.4985, 3.4490,\n", + " 3.3309, 3.3605, 3.3271, 3.5134, 3.1448, 2.9547, 2.8377, 2.9305, 2.8584,\n", + " 2.8305, 2.9453, 3.0229, 3.0586, 3.1999, 3.5157, 2.5082, 4.2062, 4.7039,\n", + " 4.9162, 5.3005, 5.7363, 5.6799, 0.9879, 0.5974, 0.5942, 1.0506, 1.5024,\n", + " 1.6869, 1.1354, 1.5247]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5228, -0.1174, -0.3473, -0.5884, -0.1820, -0.7325, -0.1352, 0.5923,\n", + " -0.1179, 0.6514, 0.5232, -0.8850, 0.1048, -0.6750, -0.5849, -0.2379,\n", + " -0.8580, 0.1894, 0.2230, -0.6434, -0.5443, -0.1399, 0.6678, -0.3480,\n", + " 0.9028, -0.2715, -1.1347, 0.2111, -0.5210, -1.3076, -1.3088, -0.3149,\n", + " -0.3550, -0.8786, -0.0782, -1.2914, 0.0540, 0.0846, 0.0173, 0.7571,\n", + " 0.7411, 0.3458, 0.7813]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2451, -0.2271, -0.0089, -0.0854, 0.2436, 0.3511, 0.2649, 0.2177,\n", + " 0.2169, 0.2520, 0.1719, -0.1340, -0.2234, -0.2953, -0.2353, -0.2331,\n", + " -0.1420, 0.0204, -0.0366, -0.0059, -0.0527, -0.0586, -0.0199, 0.0757,\n", + " -0.0063, 0.0732, -0.1229, -0.1414, -0.2682, -0.2730, -0.2337, -0.1752,\n", + " -0.3457, -0.3402, -0.1691, -0.1946, -0.0154, 0.0635, 0.0255, 0.2235,\n", + " 0.2275, 0.2824, 0.2469]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003811530186794698\n", + "Grad encoder.fc1.bias: 0.00038984694401733577\n", + "Grad encoder.encoder.0.weight: 0.00011671655374811962\n", + "Grad encoder.encoder.0.bias: 0.00042097008554264903\n", + "Grad encoder.encoder.2.weight: 7.771547097945586e-05\n", + "Grad encoder.encoder.2.bias: 0.00047383818309754133\n", + "Grad encoder.encoder.4.weight: 0.00015844186418689787\n", + "Grad encoder.encoder.4.bias: 0.0017601087456569076\n", + "Grad decoder.fc1.0.weight: 6.718916847603396e-05\n", + "Grad decoder.fc1.0.bias: 0.0006571232806891203\n", + "Grad decoder.fc1.2.weight: 7.768732029944658e-05\n", + "Grad decoder.fc1.2.bias: 0.0007863851496949792\n", + "Grad decoder.fc1.4.weight: 7.945854304125533e-05\n", + "Grad decoder.fc1.4.bias: 0.0009598201140761375\n", + "Grad decoder.fc2.weight: 0.00016503270308021456\n", + "Grad decoder.fc2.bias: 0.0019441441399976611\n", + "Grad _memory_unit.weight_ih_l0: 1.5618496036040597e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.70238257246092e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.063655069330707e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.358391146932263e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00012115691788494587\n", + "Grad _memory_unit.bias_hh_l1: 6.455338007071987e-05\n", + "Data X Sample: tensor([[ 0.0021, 0.0029, 0.0090, 0.0066, 0.0068, 0.0118, 0.0031, 0.0185,\n", + " 0.0269, 0.0126, 0.0254, -0.0019, 0.0111, 0.0382, 0.0277, 0.0027,\n", + " -0.0692, -0.0812, -0.1012, -0.0837, -0.0932, -0.0658, -0.0916, -0.0840,\n", + " -0.0732, -0.1358, -0.1119, -0.1917, -0.0347, -0.0262, -0.0280, -0.0028,\n", + " 0.0220, -0.0206, 0.0049, 0.0243, 0.0118, 0.0000, -0.0063, -0.0142,\n", + " 0.0286, 0.0080, 0.0081, 0.0115, 0.0198, -0.0229, -0.0272, -0.0156]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0698, 0.5849, -0.2939, -0.3106, 0.1874, 0.6218, -0.4995, -0.3772,\n", + " 0.2051, -0.4071, 0.1632, -0.6464, -0.0795, 0.2484, -0.7460, 0.3695,\n", + " 0.4007, 1.0075, -0.1619, -0.2098, 0.4629, 0.8602, 0.4014, 0.8524,\n", + " -0.8174, -0.8116, 0.2024, -0.2338, 0.3009, 0.2888, 1.4813, -0.3833,\n", + " 0.3844, 1.0148, 1.1845, 0.0210, 0.9776, 0.7357, -1.8131, -0.3951,\n", + " -0.4761, -0.4823, -0.4516]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.7879, 0.5257, 0.2382, 0.5885, 0.0778, -0.2024, -0.7920, -0.8895,\n", + " -0.4516, -0.5774, -0.5190, 0.3235, 0.3553, 0.5411, 0.3207, 0.5560,\n", + " 0.4971, 0.2809, 0.1155, 0.2391, 0.1466, 0.1517, 0.2087, 0.2189,\n", + " 0.1238, 0.0789, -0.0369, 0.2104, 0.5354, 0.6887, 0.5694, 0.4628,\n", + " 0.6475, 0.5717, 0.3393, 0.3501, 0.0186, -0.0120, -0.0399, -0.5500,\n", + " -0.6246, -0.5421, -0.5671]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002192102838307619\n", + "Grad encoder.fc1.bias: 0.001295552123337984\n", + "Grad encoder.encoder.0.weight: 0.00013598729856312275\n", + "Grad encoder.encoder.0.bias: 0.0015060135629028082\n", + "Grad encoder.encoder.2.weight: 0.00012447113113012165\n", + "Grad encoder.encoder.2.bias: 0.0015722805401310325\n", + "Grad encoder.encoder.4.weight: 0.0002549446071498096\n", + "Grad encoder.encoder.4.bias: 0.0022129793651401997\n", + "Grad decoder.fc1.0.weight: 0.00011860774247907102\n", + "Grad decoder.fc1.0.bias: 0.0009285978158004582\n", + "Grad decoder.fc1.2.weight: 0.00013072954607196152\n", + "Grad decoder.fc1.2.bias: 0.0010091004660353065\n", + "Grad decoder.fc1.4.weight: 0.00011973679647780955\n", + "Grad decoder.fc1.4.bias: 0.0011767975520342588\n", + "Grad decoder.fc2.weight: 0.0002122479199897498\n", + "Grad decoder.fc2.bias: 0.0017010235460475087\n", + "Grad _memory_unit.weight_ih_l0: 4.2965712054865435e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00016650445468258113\n", + "Grad _memory_unit.bias_hh_l0: 8.767993858782575e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.1336305760778487e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00022886920487508178\n", + "Grad _memory_unit.bias_hh_l1: 0.00012389678158797324\n", + "Data X Sample: tensor([[1.4968, 1.6706, 1.8242, 1.7798, 1.9158, 1.9919, 2.1585, 2.4559, 3.9593,\n", + " 4.1057, 4.1589, 4.1832, 3.9414, 3.7516, 3.6517, 3.5980, 3.5567, 3.6482,\n", + " 3.4073, 3.4832, 3.3074, 3.2884, 2.9158, 2.8153, 2.9185, 3.0507, 3.0023,\n", + " 2.9814, 3.1604, 3.2719, 3.1916, 3.2607, 3.5641, 2.5540, 4.3631, 4.6553,\n", + " 4.8769, 5.1998, 5.6412, 5.5523, 1.1072, 0.6313, 0.6730, 1.1797, 1.6729,\n", + " 1.6983, 1.1558, 1.6186]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3333, -0.5439, -0.1859, 0.7042, 0.1013, 0.7832, 0.4738, 0.9357,\n", + " 1.9040, 0.6171, 0.7044, -1.1967, 0.2960, -0.7791, -0.0513, -1.1076,\n", + " 0.3649, 0.5038, -0.1956, 0.2673, -2.7671, -0.1134, -0.1053, 1.2885,\n", + " -0.2817, -0.8551, 0.5773, -0.9199, -0.5500, -0.1053, -0.3609, -0.2876,\n", + " -0.0494, 0.0785, 0.0654, 0.4915, -0.3085, -0.0140, 0.5227, 0.7325,\n", + " 0.5879, 0.5627, 0.4002]], device='cuda:0')\n", + "Prediction Sample: tensor([[-2.1242e-01, -1.7420e-01, -1.9355e-02, -4.9164e-02, 2.1103e-01,\n", + " 2.5830e-01, 1.7691e-01, 1.6531e-01, 1.7156e-01, 2.1183e-01,\n", + " 1.0336e-01, -9.3505e-02, -1.9986e-01, -2.2606e-01, -1.7552e-01,\n", + " -1.8070e-01, -8.0083e-02, 1.9117e-02, -3.8480e-02, 2.0645e-02,\n", + " -5.3038e-02, -4.4569e-02, 3.7379e-04, 4.6885e-02, 1.6545e-04,\n", + " 7.2988e-02, -8.3218e-02, -9.9503e-02, -2.0545e-01, -2.3759e-01,\n", + " -1.8269e-01, -1.5527e-01, -3.0359e-01, -2.4591e-01, -1.2460e-01,\n", + " -1.5823e-01, -2.4877e-02, 5.3222e-02, 2.1016e-02, 1.4819e-01,\n", + " 1.7539e-01, 2.3647e-01, 2.1027e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005233970005065203\n", + "Grad encoder.fc1.bias: 0.0009481721790507436\n", + "Grad encoder.encoder.0.weight: 7.489114796044305e-05\n", + "Grad encoder.encoder.0.bias: 0.000847793067805469\n", + "Grad encoder.encoder.2.weight: 5.084779695607722e-05\n", + "Grad encoder.encoder.2.bias: 0.0010236180387437344\n", + "Grad encoder.encoder.4.weight: 9.591811976861209e-05\n", + "Grad encoder.encoder.4.bias: 0.002873040270060301\n", + "Grad decoder.fc1.0.weight: 8.552645886084065e-05\n", + "Grad decoder.fc1.0.bias: 0.0010587888536974788\n", + "Grad decoder.fc1.2.weight: 0.00010862999624805525\n", + "Grad decoder.fc1.2.bias: 0.0008412196184508502\n", + "Grad decoder.fc1.4.weight: 8.753905422054231e-05\n", + "Grad decoder.fc1.4.bias: 0.0007832105038687587\n", + "Grad decoder.fc2.weight: 0.00016701052663847804\n", + "Grad decoder.fc2.bias: 0.0018792460905387998\n", + "Grad _memory_unit.weight_ih_l0: 2.3015212718746625e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00014364876551553607\n", + "Grad _memory_unit.bias_hh_l0: 7.458018808392808e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.785350135236513e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00020085075811948627\n", + "Grad _memory_unit.bias_hh_l1: 0.00010652925993781537\n", + "Data X Sample: tensor([[1.7514, 2.2052, 2.5094, 2.7572, 2.8548, 3.0305, 3.1168, 3.1303, 3.2441,\n", + " 3.2384, 3.3880, 3.3555, 3.3067, 3.2472, 3.0818, 3.1508, 3.1133, 3.2942,\n", + " 3.2999, 3.2006, 3.2486, 3.1414, 2.8484, 2.6550, 2.6407, 2.5858, 2.4189,\n", + " 2.4308, 2.0121, 2.0633, 1.9037, 1.8127, 1.5774, 1.0573, 1.5687, 1.6636,\n", + " 1.8210, 2.1467, 2.5227, 2.5023, 1.5845, 0.9101, 0.9094, 1.5557, 2.5609,\n", + " 2.7505, 1.7881, 2.4161]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1871, -0.1583, 0.0307, 1.0078, 0.8756, 0.0324, 0.1204, 0.1493,\n", + " -0.4428, -0.3379, -0.3666, -1.0762, 0.1065, -0.8312, -0.9325, 0.0396,\n", + " 0.1113, 0.2516, -1.1143, 0.4409, 0.2518, 4.4317, 0.8572, -0.1647,\n", + " 0.6567, 1.4992, -0.6495, -0.6392, 1.6885, 0.2690, 0.4088, -0.6716,\n", + " 1.1710, -0.8532, -0.0964, -0.2041, 0.5512, -0.7928, -0.7130, 1.0020,\n", + " -0.7787, 0.3290, -0.0724]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2224, -0.2648, -0.1638, -0.2257, -0.2377, -0.0481, 0.0105, 0.2412,\n", + " 0.0580, 0.1356, 0.1041, -0.1582, -0.1167, -0.1921, -0.1329, -0.1708,\n", + " -0.1700, -0.0765, -0.1057, -0.0447, -0.0493, 0.0159, -0.0407, -0.0441,\n", + " 0.0724, 0.0377, 0.1489, 0.0294, -0.0350, -0.0671, -0.1267, -0.1424,\n", + " -0.0662, -0.1638, -0.0569, -0.1344, -0.0483, -0.0112, -0.0150, 0.2677,\n", + " 0.2608, 0.2922, 0.1849]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004620037507265806\n", + "Grad encoder.fc1.bias: 0.0005226191715337336\n", + "Grad encoder.encoder.0.weight: 9.01587336556986e-05\n", + "Grad encoder.encoder.0.bias: 0.0007237751269713044\n", + "Grad encoder.encoder.2.weight: 8.517254900652915e-05\n", + "Grad encoder.encoder.2.bias: 0.0008628243813291192\n", + "Grad encoder.encoder.4.weight: 0.00014675296552013606\n", + "Grad encoder.encoder.4.bias: 0.0023370091803371906\n", + "Grad decoder.fc1.0.weight: 6.93623223924078e-05\n", + "Grad decoder.fc1.0.bias: 0.0006507786456495523\n", + "Grad decoder.fc1.2.weight: 8.818457718007267e-05\n", + "Grad decoder.fc1.2.bias: 0.0005472595803439617\n", + "Grad decoder.fc1.4.weight: 7.349928637268022e-05\n", + "Grad decoder.fc1.4.bias: 0.0005737061146646738\n", + "Grad decoder.fc2.weight: 0.00018446805188432336\n", + "Grad decoder.fc2.bias: 0.0018293391913175583\n", + "Grad _memory_unit.weight_ih_l0: 3.591514177969657e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00022768345661461353\n", + "Grad _memory_unit.bias_hh_l0: 0.0001180278486572206\n", + "Grad _memory_unit.weight_ih_l1: 8.848975994624197e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00023429282009601593\n", + "Grad _memory_unit.bias_hh_l1: 0.00012652442092075944\n", + "Data X Sample: tensor([[1.7175, 2.3158, 2.6356, 2.7988, 2.8685, 3.1778, 3.1121, 3.1629, 3.3515,\n", + " 3.3316, 3.4642, 3.3847, 3.3622, 3.2172, 3.2432, 3.2179, 3.1966, 3.1936,\n", + " 3.2297, 3.2303, 3.2216, 3.0465, 2.9520, 2.7924, 2.6763, 2.6354, 2.4455,\n", + " 2.4268, 2.0399, 2.0470, 1.9037, 1.8404, 1.6170, 1.0481, 1.6178, 1.7634,\n", + " 1.8839, 2.1997, 2.5227, 2.6158, 1.5463, 0.8882, 0.9418, 1.6878, 2.5926,\n", + " 2.7848, 1.8289, 2.4787]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5109, -0.1696, 0.2691, 0.3294, 1.2051, 0.6487, 0.3853, -0.0508,\n", + " 0.5708, -0.1713, 0.0839, -0.7994, -0.6338, 0.6468, 0.1127, 0.1458,\n", + " 1.8044, -1.5794, -0.0860, 1.4634, 1.3163, 0.0808, -3.0412, 1.9459,\n", + " -0.3448, 0.7095, -2.2516, -2.1505, -2.2441, -2.3449, -1.4354, -2.1959,\n", + " -1.7715, -0.7920, -0.2015, -0.2546, -0.0868, -0.7725, -0.2505, -0.2906,\n", + " -0.4604, -0.6205, -0.7947]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3824, -0.3808, -0.2013, -0.3290, -0.2858, -0.0596, 0.0940, 0.3505,\n", + " 0.1640, 0.2794, 0.2352, -0.2040, -0.1796, -0.3306, -0.2330, -0.3071,\n", + " -0.2801, -0.1435, -0.1179, -0.0947, -0.0785, -0.0285, -0.0829, -0.0614,\n", + " 0.0862, 0.0315, 0.2025, 0.0576, -0.0543, -0.1609, -0.2115, -0.2148,\n", + " -0.1339, -0.2976, -0.1335, -0.2092, -0.0219, 0.0071, -0.0202, 0.4561,\n", + " 0.4237, 0.4395, 0.3422]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0009236171608790755\n", + "Grad encoder.fc1.bias: 0.0006174056325107813\n", + "Grad encoder.encoder.0.weight: 0.0002053537027677521\n", + "Grad encoder.encoder.0.bias: 0.0006095607532188296\n", + "Grad encoder.encoder.2.weight: 0.00017278618179261684\n", + "Grad encoder.encoder.2.bias: 0.0009550249669700861\n", + "Grad encoder.encoder.4.weight: 0.0003408720949664712\n", + "Grad encoder.encoder.4.bias: 0.003121471032500267\n", + "Grad decoder.fc1.0.weight: 8.369376882910728e-05\n", + "Grad decoder.fc1.0.bias: 0.0008377861231565475\n", + "Grad decoder.fc1.2.weight: 7.735360850347206e-05\n", + "Grad decoder.fc1.2.bias: 0.000572205288335681\n", + "Grad decoder.fc1.4.weight: 6.072817632229999e-05\n", + "Grad decoder.fc1.4.bias: 0.0005218736478127539\n", + "Grad decoder.fc2.weight: 0.00018960349552799016\n", + "Grad decoder.fc2.bias: 0.002058063168078661\n", + "Grad _memory_unit.weight_ih_l0: 7.288041524589062e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0002751817228272557\n", + "Grad _memory_unit.bias_hh_l0: 0.00013890530681237578\n", + "Grad _memory_unit.weight_ih_l1: 1.4234299669624306e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00032341814949177206\n", + "Grad _memory_unit.bias_hh_l1: 0.00016298863920383155\n", + "Data X Sample: tensor([[1.2953, 1.5468, 1.7536, 1.8782, 1.9823, 1.9801, 2.0968, 2.0031, 3.2685,\n", + " 4.2194, 4.3873, 4.2631, 4.0790, 3.9288, 3.7803, 3.7799, 3.6259, 3.6714,\n", + " 3.5518, 3.5130, 3.3246, 3.3649, 3.0604, 2.9394, 2.8002, 2.8287, 2.9117,\n", + " 3.0263, 2.8933, 3.1867, 3.2371, 3.4099, 3.7753, 2.8263, 4.5984, 4.9180,\n", + " 5.0971, 5.4807, 5.8630, 5.7423, 1.1168, 0.6114, 0.6467, 1.1482, 1.6213,\n", + " 1.8756, 1.2646, 1.7359]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0505, 1.6768, 0.6102, 0.2556, 0.1664, 0.2107, -0.3363, 0.7408,\n", + " -0.7289, -0.5481, -0.6934, -0.7930, -0.0811, -0.6790, 0.3523, -1.1741,\n", + " -0.4783, 0.3801, -0.0996, 0.4845, -1.0268, 0.4773, -0.0617, 0.2274,\n", + " -0.3136, -0.2697, 0.4358, -0.1162, 1.2363, 1.1146, 0.1266, -0.0167,\n", + " 1.0167, -0.6526, 0.4088, -0.2584, -0.4229, 0.7428, 0.7936, -0.2880,\n", + " 0.4454, 0.2436, -0.9986]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2338, -0.1979, -0.0303, -0.0328, 0.2745, 0.3052, 0.2152, 0.1979,\n", + " 0.2087, 0.2369, 0.1144, -0.0976, -0.2279, -0.2448, -0.1837, -0.2135,\n", + " -0.0930, -0.0061, -0.0306, 0.0306, -0.0798, -0.0439, 0.0059, 0.0431,\n", + " -0.0041, 0.0712, -0.0976, -0.1258, -0.2522, -0.2598, -0.2136, -0.1638,\n", + " -0.3402, -0.2679, -0.1630, -0.1634, -0.0277, 0.0572, 0.0213, 0.1633,\n", + " 0.2178, 0.2546, 0.2278]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00018427343457005918\n", + "Grad encoder.fc1.bias: 0.0005407228600233793\n", + "Grad encoder.encoder.0.weight: 5.2108207455603406e-05\n", + "Grad encoder.encoder.0.bias: 0.0005585534381680191\n", + "Grad encoder.encoder.2.weight: 4.2158178985118866e-05\n", + "Grad encoder.encoder.2.bias: 0.0005387363489717245\n", + "Grad encoder.encoder.4.weight: 0.00010404700151411816\n", + "Grad encoder.encoder.4.bias: 0.0015086642233654857\n", + "Grad decoder.fc1.0.weight: 6.501155439764261e-05\n", + "Grad decoder.fc1.0.bias: 0.0006559824687428772\n", + "Grad decoder.fc1.2.weight: 7.140192610677332e-05\n", + "Grad decoder.fc1.2.bias: 0.0005741668283008039\n", + "Grad decoder.fc1.4.weight: 6.984797801123932e-05\n", + "Grad decoder.fc1.4.bias: 0.0007518058409914374\n", + "Grad decoder.fc2.weight: 0.0001332171814283356\n", + "Grad decoder.fc2.bias: 0.0017369475681334734\n", + "Grad _memory_unit.weight_ih_l0: 8.015179446374532e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.725499456981197e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.4251668946817517e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.463050572667271e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011199668369954452\n", + "Grad _memory_unit.bias_hh_l1: 5.794989920104854e-05\n", + "Data X Sample: tensor([[2.6171, 2.8606, 2.1833, 2.1275, 2.2026, 2.3499, 3.8409, 3.9735, 4.3718,\n", + " 4.3632, 4.1779, 4.1949, 3.8748, 3.9261, 3.6946, 3.6486, 3.6117, 3.6192,\n", + " 3.7563, 3.5706, 3.5356, 3.3772, 3.0146, 2.9184, 2.8434, 2.8470, 2.8531,\n", + " 2.8020, 2.6955, 2.9116, 3.0096, 3.1143, 3.3133, 2.3869, 4.0150, 4.3756,\n", + " 4.6999, 5.2634, 5.8567, 5.6686, 1.7181, 0.8623, 0.7639, 1.2773, 1.7125,\n", + " 2.0357, 1.4142, 1.9704]], device='cuda:0')\n", + "Data Y Sample: tensor([[-5.1847e-01, -1.7302e-01, 1.4237e+00, -8.3308e-01, -2.4726e-01,\n", + " 3.1799e-01, -6.6510e-02, -2.6108e-01, 2.7671e-04, 2.6380e-01,\n", + " 2.8386e-02, 6.9999e-02, 1.2810e-01, 3.5364e-01, -5.6943e-01,\n", + " -3.5257e-01, -5.7720e-01, -1.5015e+00, -6.8316e-01, -1.4327e+00,\n", + " -6.9354e-02, -6.2139e-01, -1.7363e-01, -7.4183e-01, -2.8610e+00,\n", + " -4.9838e-01, 1.6394e+00, 1.6263e-01, -9.2035e-01, 7.6423e-01,\n", + " -1.4315e-01, 2.5556e-01, 5.5804e-01, 6.4285e-02, -1.2417e-01,\n", + " 2.1082e-01, -1.0138e+00, 6.0044e-01, 1.3913e-01, -4.9953e-02,\n", + " -3.6275e-01, -5.9040e-01, 1.0897e+00]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1565, -0.1601, -0.0686, -0.0803, 0.0500, 0.1243, 0.0977, 0.1875,\n", + " 0.1270, 0.1443, 0.0950, -0.0885, -0.1539, -0.1492, -0.1291, -0.1537,\n", + " -0.0852, -0.0063, -0.0591, 0.0092, -0.0382, 0.0019, -0.0133, 0.0164,\n", + " 0.0123, 0.0932, 0.0015, -0.0367, -0.1374, -0.1470, -0.1504, -0.1290,\n", + " -0.1984, -0.1586, -0.1130, -0.1443, -0.0640, 0.0483, 0.0180, 0.1219,\n", + " 0.1953, 0.2464, 0.1481]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004729274660348892\n", + "Grad encoder.fc1.bias: 0.0011376978363841772\n", + "Grad encoder.encoder.0.weight: 0.000132485554786399\n", + "Grad encoder.encoder.0.bias: 0.0007614536443725228\n", + "Grad encoder.encoder.2.weight: 0.00010329781798645854\n", + "Grad encoder.encoder.2.bias: 0.0006702787941321731\n", + "Grad encoder.encoder.4.weight: 0.00022579997312277555\n", + "Grad encoder.encoder.4.bias: 0.0012623360380530357\n", + "Grad decoder.fc1.0.weight: 9.584642248228192e-05\n", + "Grad decoder.fc1.0.bias: 0.000622916966676712\n", + "Grad decoder.fc1.2.weight: 0.00012201961362734437\n", + "Grad decoder.fc1.2.bias: 0.0010074571473523974\n", + "Grad decoder.fc1.4.weight: 0.00010229944018647075\n", + "Grad decoder.fc1.4.bias: 0.0009933291003108025\n", + "Grad decoder.fc2.weight: 0.00015847677423153073\n", + "Grad decoder.fc2.bias: 0.0024479266721755266\n", + "Grad _memory_unit.weight_ih_l0: 1.743565189826768e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.9199225031770766e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.680756733752787e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.634027835796587e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010452468268340454\n", + "Grad _memory_unit.bias_hh_l1: 5.724370930693112e-05\n", + "Data X Sample: tensor([[2.6425, 2.9451, 3.0293, 3.3345, 3.4405, 3.5520, 3.7947, 3.8245, 3.8714,\n", + " 3.9619, 3.9717, 3.8697, 3.6973, 3.9425, 3.5105, 3.3997, 3.4734, 3.4799,\n", + " 3.4217, 3.3382, 3.2216, 3.1521, 2.9255, 2.8420, 2.6782, 2.7686, 2.8664,\n", + " 2.8713, 2.7615, 2.8330, 2.8066, 2.7688, 2.8227, 2.0528, 3.4978, 3.9086,\n", + " 4.1414, 4.5293, 5.0264, 4.9281, 1.9138, 1.1411, 1.0954, 1.9031, 3.0326,\n", + " 3.0535, 2.1485, 3.0182]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7905, 0.1480, -0.3137, 0.1848, -0.6479, -0.8616, -2.2847, -1.9105,\n", + " -1.4815, -0.3345, 0.1712, 0.2637, -0.2112, -0.7865, 0.2364, -1.1628,\n", + " -0.1017, 0.8715, -0.8694, -0.1298, -1.3212, 0.2875, -0.0931, -1.3667,\n", + " 1.1308, 1.6079, 0.3413, 1.5542, 1.5754, 0.7550, 0.4423, 0.4121,\n", + " 0.7073, 0.2902, 1.1250, -1.3131, 0.9271, -0.1502, -0.8612, 0.3676,\n", + " 0.3063, 0.4571, -0.1722]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1499, -0.1726, -0.0705, -0.1035, 0.0248, 0.1243, 0.1110, 0.2053,\n", + " 0.1272, 0.1455, 0.1232, -0.1086, -0.1468, -0.1576, -0.1466, -0.1671,\n", + " -0.1178, -0.0132, -0.0630, -0.0081, -0.0339, -0.0054, -0.0282, 0.0130,\n", + " 0.0065, 0.0902, 0.0080, -0.0357, -0.1459, -0.1417, -0.1581, -0.1370,\n", + " -0.1925, -0.1831, -0.1281, -0.1535, -0.0593, 0.0468, 0.0136, 0.1558,\n", + " 0.2190, 0.2587, 0.1490]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00025416648713871837\n", + "Grad encoder.fc1.bias: 0.0003525234933476895\n", + "Grad encoder.encoder.0.weight: 6.422301521524787e-05\n", + "Grad encoder.encoder.0.bias: 0.00026603476726450026\n", + "Grad encoder.encoder.2.weight: 3.965088035329245e-05\n", + "Grad encoder.encoder.2.bias: 0.00024660295457579195\n", + "Grad encoder.encoder.4.weight: 0.00010273630323354155\n", + "Grad encoder.encoder.4.bias: 0.0005500403931364417\n", + "Grad decoder.fc1.0.weight: 5.354634049581364e-05\n", + "Grad decoder.fc1.0.bias: 0.0003517080331221223\n", + "Grad decoder.fc1.2.weight: 6.089476664783433e-05\n", + "Grad decoder.fc1.2.bias: 0.00048676965525373816\n", + "Grad decoder.fc1.4.weight: 6.474877591244876e-05\n", + "Grad decoder.fc1.4.bias: 0.000570144853554666\n", + "Grad decoder.fc2.weight: 0.00014826854749117047\n", + "Grad decoder.fc2.bias: 0.0015910520451143384\n", + "Grad _memory_unit.weight_ih_l0: 8.513155989930965e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.1351130271796137e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.1453298611741047e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.825270934816217e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.489941395353526e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.869011223083362e-05\n", + "Data X Sample: tensor([[1.6634, 1.9255, 2.0120, 2.2303, 2.3648, 2.4456, 2.6499, 2.6178, 2.6729,\n", + " 2.8703, 2.7377, 2.8453, 2.7585, 2.6719, 2.5522, 2.4944, 2.4466, 2.6307,\n", + " 2.5916, 2.4995, 2.5640, 2.5382, 2.5062, 2.5443, 2.5825, 2.7059, 2.6000,\n", + " 2.5573, 2.3799, 2.4334, 2.5336, 2.4096, 2.3100, 1.4509, 1.9634, 1.8485,\n", + " 1.7836, 1.6723, 1.6543, 1.5860, 1.3125, 0.8185, 0.7599, 1.3921, 1.9187,\n", + " 2.2015, 1.5162, 2.1034]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2012, 0.5930, 0.0679, 0.6256, 0.1742, 0.0175, -0.6181, -0.5817,\n", + " -0.4333, -0.6895, -0.7767, 0.3666, 0.2904, -0.1418, 0.2987, 0.8331,\n", + " 0.3218, 1.3091, 1.1613, -0.3998, 0.8473, 0.2306, -0.5811, -0.1027,\n", + " -0.1799, 0.1963, -1.6204, -0.2003, 0.3143, -0.0237, -0.7749, -0.7817,\n", + " 1.2738, 1.2691, 0.6524, -0.4117, -0.4777, 0.5703, 0.2365, -0.2496,\n", + " 0.2690, 0.2875, -0.6377]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3510, 0.2837, 0.1636, 0.2322, 0.1536, -0.0051, -0.3598, -0.3475,\n", + " -0.2080, -0.2757, -0.3034, 0.1102, 0.1882, 0.2649, 0.1881, 0.2602,\n", + " 0.2220, 0.1802, 0.0590, 0.1766, 0.1087, 0.1335, 0.0649, 0.0680,\n", + " 0.0633, 0.0778, -0.0437, -0.0094, 0.1549, 0.2703, 0.1958, 0.1777,\n", + " 0.2497, 0.2201, 0.1599, 0.1206, 0.0089, 0.0615, -0.0918, -0.2314,\n", + " -0.2074, -0.2731, -0.3375]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00021022962755523622\n", + "Grad encoder.fc1.bias: 0.0005624402547255158\n", + "Grad encoder.encoder.0.weight: 7.082184311002493e-05\n", + "Grad encoder.encoder.0.bias: 0.00038550846511498094\n", + "Grad encoder.encoder.2.weight: 5.498822429217398e-05\n", + "Grad encoder.encoder.2.bias: 0.0003032333042938262\n", + "Grad encoder.encoder.4.weight: 0.0001313073153141886\n", + "Grad encoder.encoder.4.bias: 0.0006468677311204374\n", + "Grad decoder.fc1.0.weight: 5.6983957620104775e-05\n", + "Grad decoder.fc1.0.bias: 0.00031035777647048235\n", + "Grad decoder.fc1.2.weight: 7.65630102250725e-05\n", + "Grad decoder.fc1.2.bias: 0.0006111998809501529\n", + "Grad decoder.fc1.4.weight: 7.369824743364006e-05\n", + "Grad decoder.fc1.4.bias: 0.0006530924583785236\n", + "Grad decoder.fc2.weight: 0.00016231632616836578\n", + "Grad decoder.fc2.bias: 0.0022717155516147614\n", + "Grad _memory_unit.weight_ih_l0: 1.1002777682733722e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.167711111018434e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.641526432649698e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.961038707231637e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.243782602017745e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.7747064197901636e-05\n", + "Data X Sample: tensor([[-0.0138, -0.0058, -0.0105, 0.0044, -0.0137, -0.0162, -0.0031, -0.0057,\n", + " -0.0098, -0.0016, -0.0444, 0.0000, -0.0022, -0.0164, -0.0353, 0.0205,\n", + " 0.0802, 0.1025, 0.1177, 0.0855, 0.1448, 0.0842, 0.1157, 0.1031,\n", + " 0.0882, 0.1672, 0.1918, 0.3630, 0.0173, 0.0786, 0.0280, 0.0470,\n", + " -0.0066, 0.0275, 0.0074, 0.0195, 0.0020, 0.0106, 0.0190, -0.0113,\n", + " 0.0191, 0.0080, 0.0000, 0.0000, -0.0079, -0.0114, -0.0068, -0.0156]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3932, -0.1659, 0.1059, 0.1516, -0.0134, -0.1257, -0.5825, -0.3240,\n", + " 0.9378, -0.4665, 0.1688, 1.4959, 0.0338, 0.4744, 0.5045, 0.6001,\n", + " 0.7132, -0.6734, -0.1903, -0.8200, -0.9601, 0.2295, -0.4132, -0.3441,\n", + " -0.6230, -1.1291, -1.3367, -0.7369, 0.4118, 0.6974, -0.3673, -0.0275,\n", + " 0.2449, 0.6460, -0.4349, 0.2655, 0.1343, -0.3712, 0.0040, 0.0495,\n", + " -0.3288, -0.3617, -0.5950]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5172, 0.3721, 0.1848, 0.3919, 0.0069, -0.1775, -0.6170, -0.5826,\n", + " -0.2950, -0.4303, -0.3747, 0.1942, 0.3078, 0.4042, 0.2430, 0.3299,\n", + " 0.3252, 0.2388, 0.1452, 0.1991, 0.0179, 0.1328, 0.1245, 0.1194,\n", + " 0.0585, 0.1182, -0.0144, 0.1354, 0.3974, 0.5207, 0.3604, 0.3252,\n", + " 0.3983, 0.4129, 0.1969, 0.1494, 0.0185, 0.0405, -0.1046, -0.2913,\n", + " -0.3223, -0.4259, -0.4163]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0013921007048338652\n", + "Grad encoder.fc1.bias: 0.0009639819036237895\n", + "Grad encoder.encoder.0.weight: 0.00029663831810466945\n", + "Grad encoder.encoder.0.bias: 0.00107243238016963\n", + "Grad encoder.encoder.2.weight: 0.00023446259729098529\n", + "Grad encoder.encoder.2.bias: 0.001551625318825245\n", + "Grad encoder.encoder.4.weight: 0.0004244752926751971\n", + "Grad encoder.encoder.4.bias: 0.003821919672191143\n", + "Grad decoder.fc1.0.weight: 0.00010568300785962492\n", + "Grad decoder.fc1.0.bias: 0.0007605704013258219\n", + "Grad decoder.fc1.2.weight: 0.0001165979920187965\n", + "Grad decoder.fc1.2.bias: 0.00122348521836102\n", + "Grad decoder.fc1.4.weight: 0.00010828675294760615\n", + "Grad decoder.fc1.4.bias: 0.0012060008011758327\n", + "Grad decoder.fc2.weight: 0.00020756041340064257\n", + "Grad decoder.fc2.bias: 0.002467838814482093\n", + "Grad _memory_unit.weight_ih_l0: 0.00010494590969756246\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.000315279234200716\n", + "Grad _memory_unit.bias_hh_l0: 0.00016501125355716795\n", + "Grad _memory_unit.weight_ih_l1: 1.696541039564181e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002806622942443937\n", + "Grad _memory_unit.bias_hh_l1: 0.00014854592154733837\n", + "Data X Sample: tensor([[1.3961, 1.5395, 1.6469, 1.7121, 1.7126, 1.8652, 1.9043, 1.9108, 3.4711,\n", + " 3.8656, 3.8004, 4.0294, 3.8016, 3.5635, 3.4374, 3.4175, 3.3586, 3.4180,\n", + " 3.3970, 3.3642, 3.5823, 3.4889, 2.9881, 2.7848, 2.7158, 2.7529, 2.7492,\n", + " 2.7326, 2.7372, 2.8068, 2.9151, 3.0148, 3.2671, 2.3388, 3.7086, 4.2296,\n", + " 4.5996, 5.0275, 5.6475, 5.5437, 1.0738, 0.6154, 0.5901, 1.0678, 1.6015,\n", + " 1.7898, 1.1082, 1.5951]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1884, -0.8038, -1.1111, -0.5890, -0.7004, 0.0957, -0.3736, -0.0482,\n", + " 0.4427, 0.1165, -0.1889, 1.1367, -0.7529, 1.1294, 0.5394, -0.1731,\n", + " -0.2459, -0.3665, 1.8583, -0.1620, 0.2723, -0.0517, -0.1354, 1.2729,\n", + " 0.6362, -0.0448, -0.3067, 0.2470, -0.9128, -0.1114, -0.6078, 0.1880,\n", + " 3.5295, -0.5333, -0.5880, -0.0763, -0.4777, 0.5796, -0.9248, -0.7751,\n", + " -0.1328, -0.8425, 0.3739]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2054, -0.2724, -0.0651, -0.1288, 0.1586, 0.2892, 0.2580, 0.3182,\n", + " 0.2314, 0.2656, 0.2600, -0.1942, -0.2165, -0.2801, -0.2555, -0.2998,\n", + " -0.2479, -0.0530, -0.0613, -0.0445, -0.0680, -0.0715, -0.0567, 0.0064,\n", + " -0.0205, 0.0790, -0.0477, -0.1104, -0.3100, -0.2584, -0.2636, -0.2076,\n", + " -0.3244, -0.3630, -0.2555, -0.2051, -0.0420, 0.0634, 0.0180, 0.3083,\n", + " 0.3530, 0.3537, 0.2433]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00039378018118441105\n", + "Grad encoder.fc1.bias: 0.002738822251558304\n", + "Grad encoder.encoder.0.weight: 0.0001605182042112574\n", + "Grad encoder.encoder.0.bias: 0.0023285739589482546\n", + "Grad encoder.encoder.2.weight: 0.00012791536573786288\n", + "Grad encoder.encoder.2.bias: 0.00259053660556674\n", + "Grad encoder.encoder.4.weight: 0.0002984401071444154\n", + "Grad encoder.encoder.4.bias: 0.009409565478563309\n", + "Grad decoder.fc1.0.weight: 0.00023972892086021602\n", + "Grad decoder.fc1.0.bias: 0.0029467856511473656\n", + "Grad decoder.fc1.2.weight: 0.00029292015824466944\n", + "Grad decoder.fc1.2.bias: 0.0020978846587240696\n", + "Grad decoder.fc1.4.weight: 0.00017497205408290029\n", + "Grad decoder.fc1.4.bias: 0.001521920319646597\n", + "Grad decoder.fc2.weight: 0.0001612637279322371\n", + "Grad decoder.fc2.bias: 0.002652335911989212\n", + "Grad _memory_unit.weight_ih_l0: 2.9924678528914228e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00036470964550971985\n", + "Grad _memory_unit.bias_hh_l0: 0.0001917694171424955\n", + "Grad _memory_unit.weight_ih_l1: 1.7885451597976498e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0004676041135098785\n", + "Grad _memory_unit.bias_hh_l1: 0.0002547556650824845\n", + "Data X Sample: tensor([[1.3335, 1.5730, 1.6318, 1.8258, 1.9943, 1.9226, 2.0876, 2.0528, 3.7567,\n", + " 4.3948, 4.3588, 4.2085, 4.1589, 3.8907, 3.7778, 3.6719, 3.7202, 3.5360,\n", + " 3.5456, 3.6674, 3.5454, 3.4430, 3.2147, 2.8974, 2.7777, 2.8365, 2.8478,\n", + " 2.9243, 3.0459, 3.0852, 3.2650, 3.3519, 3.8083, 2.7828, 4.6547, 4.8134,\n", + " 5.0735, 5.4436, 5.8440, 5.7565, 1.0691, 0.5994, 0.6023, 1.0907, 1.5579,\n", + " 1.7955, 1.1014, 1.6655]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.7972, -0.9370, 2.2926, 0.2853, -0.7785, 0.0169, 0.0067, 0.3891,\n", + " 0.2184, 0.3912, 0.2215, 0.1296, -0.1016, -0.8286, -0.2971, -0.6058,\n", + " -1.1822, -0.7046, 0.7572, 1.5125, 0.4622, -1.2886, 0.2001, 0.3685,\n", + " 0.2936, 0.8489, 0.4144, -0.0208, 0.6068, 0.0921, -0.3124, 0.3508,\n", + " -0.4374, 0.6154, -0.5114, -0.7810, 0.4852, -0.8971, -0.4704, 0.5144,\n", + " 0.6473, 0.6792, 0.3003]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1430, -0.2099, -0.0796, -0.1149, 0.0436, 0.1680, 0.1522, 0.2646,\n", + " 0.1709, 0.1983, 0.1850, -0.1503, -0.1631, -0.1834, -0.1828, -0.2259,\n", + " -0.2059, -0.0421, -0.0693, -0.0454, -0.0369, -0.0420, -0.0528, -0.0127,\n", + " -0.0153, 0.0807, -0.0011, -0.0573, -0.2164, -0.1764, -0.1959, -0.1544,\n", + " -0.2244, -0.2469, -0.1965, -0.1716, -0.0552, 0.0575, 0.0057, 0.2284,\n", + " 0.2928, 0.2907, 0.1613]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005109728663228452\n", + "Grad encoder.fc1.bias: 0.00025259473477490246\n", + "Grad encoder.encoder.0.weight: 0.00013471912825480103\n", + "Grad encoder.encoder.0.bias: 0.00029053795151412487\n", + "Grad encoder.encoder.2.weight: 8.800953219179064e-05\n", + "Grad encoder.encoder.2.bias: 0.0002889146562665701\n", + "Grad encoder.encoder.4.weight: 0.00016305071767419577\n", + "Grad encoder.encoder.4.bias: 0.0007330941734835505\n", + "Grad decoder.fc1.0.weight: 5.877658259123564e-05\n", + "Grad decoder.fc1.0.bias: 0.00025639720843173563\n", + "Grad decoder.fc1.2.weight: 8.069609611993656e-05\n", + "Grad decoder.fc1.2.bias: 0.0007372821564786136\n", + "Grad decoder.fc1.4.weight: 7.410184480249882e-05\n", + "Grad decoder.fc1.4.bias: 0.0006643852684646845\n", + "Grad decoder.fc2.weight: 0.0001069216596079059\n", + "Grad decoder.fc2.bias: 0.0016567263519391418\n", + "Grad _memory_unit.weight_ih_l0: 9.208845767716412e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.4854390428808983e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.503822755301371e-06\n", + "Grad _memory_unit.weight_ih_l1: 7.317936251638457e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.490434341481887e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.0283288651844487e-05\n", + "Data X Sample: tensor([[1.5064, 1.7726, 1.8978, 2.0269, 2.0831, 2.2777, 2.3418, 2.5354, 2.4361,\n", + " 2.5007, 2.5315, 2.5960, 2.3946, 2.4402, 2.3504, 2.4069, 2.4419, 2.4547,\n", + " 2.4636, 2.4771, 2.4487, 2.5566, 2.4242, 2.4183, 2.4080, 2.4134, 2.4535,\n", + " 2.4349, 2.2272, 2.3450, 2.2957, 2.3101, 2.2836, 1.4463, 1.9438, 1.7707,\n", + " 1.6322, 1.4788, 1.5022, 1.5377, 1.2552, 0.7249, 0.7215, 1.2687, 1.8235,\n", + " 1.9728, 1.3462, 1.9470]], device='cuda:0')\n", + "Data Y Sample: tensor([[-6.8617e-01, -2.9965e-01, -9.6633e-01, 7.5802e-01, 8.6598e-01,\n", + " -5.5784e-01, -3.0295e-01, -7.6386e-01, 7.6169e-01, 1.4505e+00,\n", + " 1.0036e+00, 7.2507e-01, 7.9670e-01, 1.1124e+00, 1.9799e-01,\n", + " 4.7120e-01, 1.2085e+00, -5.1236e-01, -6.4652e-01, -1.5574e+00,\n", + " 8.4655e-01, -8.8108e-01, 1.2957e-01, -5.1327e-01, 7.8387e+00,\n", + " 4.2881e+00, -3.4383e-01, 5.5865e-01, -1.1518e+00, 1.1838e-01,\n", + " 4.1592e-01, -2.5104e-01, -4.0548e-01, 4.1267e-01, -2.4714e-01,\n", + " 3.6703e-01, 5.8942e-03, -4.0306e-01, 2.8698e-01, -6.0475e-01,\n", + " -5.1823e-01, -1.5967e+00, -8.2804e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 4.5994e-01, 3.6358e-01, 1.9654e-01, 3.1508e-01, 2.0553e-01,\n", + " -3.0703e-02, -4.5880e-01, -4.7822e-01, -2.7342e-01, -3.7393e-01,\n", + " -3.6461e-01, 1.8065e-01, 2.2982e-01, 3.2958e-01, 2.5340e-01,\n", + " 3.2572e-01, 2.7728e-01, 2.1206e-01, 9.7177e-02, 1.9565e-01,\n", + " 1.2774e-01, 1.6075e-01, 8.4357e-02, 7.8305e-02, 7.3950e-02,\n", + " 9.0483e-02, -7.3378e-02, 4.6580e-04, 1.8481e-01, 3.3922e-01,\n", + " 2.6784e-01, 2.3398e-01, 3.3208e-01, 3.0441e-01, 2.0169e-01,\n", + " 1.5848e-01, -1.0052e-02, 6.6833e-02, -8.1384e-02, -3.3261e-01,\n", + " -3.0628e-01, -3.6136e-01, -3.9775e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0010757462587207556\n", + "Grad encoder.fc1.bias: 0.0012418045662343502\n", + "Grad encoder.encoder.0.weight: 0.00021805154392495751\n", + "Grad encoder.encoder.0.bias: 0.0013067261315882206\n", + "Grad encoder.encoder.2.weight: 0.0001346206699963659\n", + "Grad encoder.encoder.2.bias: 0.0011328437831252813\n", + "Grad encoder.encoder.4.weight: 0.0003276865463703871\n", + "Grad encoder.encoder.4.bias: 0.0032084041740745306\n", + "Grad decoder.fc1.0.weight: 0.00011813543824246153\n", + "Grad decoder.fc1.0.bias: 0.0008408970315940678\n", + "Grad decoder.fc1.2.weight: 0.00013649419997818768\n", + "Grad decoder.fc1.2.bias: 0.0010770306689664721\n", + "Grad decoder.fc1.4.weight: 0.00010025672963820398\n", + "Grad decoder.fc1.4.bias: 0.0009529344970360398\n", + "Grad decoder.fc2.weight: 0.00012459141726139933\n", + "Grad decoder.fc2.bias: 0.002108799759298563\n", + "Grad _memory_unit.weight_ih_l0: 5.0778551667463034e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00024728619609959424\n", + "Grad _memory_unit.bias_hh_l0: 0.00012329762103036046\n", + "Grad _memory_unit.weight_ih_l1: 1.3698867405764759e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00024753104662522674\n", + "Grad _memory_unit.bias_hh_l1: 0.000126391532830894\n", + "Data X Sample: tensor([[1.4555, 1.6109, 1.8047, 1.9963, 1.9806, 2.0847, 2.2247, 2.1124, 3.5443,\n", + " 4.0867, 4.2477, 4.1112, 3.8992, 3.7680, 3.6845, 3.5324, 3.4718, 3.3755,\n", + " 3.2586, 3.3233, 3.3811, 3.2716, 2.8267, 2.9337, 2.8715, 2.8391, 2.9597,\n", + " 3.0916, 3.0876, 3.2129, 3.1951, 3.3574, 3.6235, 2.6592, 4.3729, 4.7161,\n", + " 4.9791, 5.2183, 5.9264, 5.6062, 1.1025, 0.6711, 0.6993, 1.1252, 1.7125,\n", + " 1.8870, 1.2374, 1.9235]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2562, -0.2134, -1.3655, -0.4670, -0.2752, -0.2112, 0.4820, 0.5121,\n", + " 0.7091, 0.5720, 0.7950, -0.1678, -0.2265, -0.1747, -1.4073, -0.4815,\n", + " 0.4341, -1.3225, -0.4451, 1.4079, 1.7604, -1.1166, -0.8483, -0.4023,\n", + " 0.6907, 0.0293, 1.4144, -0.2660, -0.7423, -0.2073, -0.1737, -0.2805,\n", + " -0.7777, -0.5508, -0.4255, -0.5549, -0.7493, -0.7231, -0.0197, 0.6200,\n", + " 1.1055, 1.1053, 0.0970]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1060, -0.2059, -0.1092, -0.1784, -0.1193, 0.0578, 0.1063, 0.2749,\n", + " 0.0855, 0.1067, 0.1870, -0.1690, -0.1167, -0.1462, -0.1794, -0.1793,\n", + " -0.2014, -0.0366, -0.0973, -0.0558, -0.0248, 0.0082, -0.0563, 0.0105,\n", + " 0.0103, 0.0953, 0.0622, -0.0189, -0.1388, -0.0813, -0.1745, -0.1513,\n", + " -0.1322, -0.2156, -0.1599, -0.1675, -0.0912, 0.0362, 0.0237, 0.2233,\n", + " 0.2735, 0.3158, 0.1278]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0009338536183349788\n", + "Grad encoder.fc1.bias: 0.0008456712239421904\n", + "Grad encoder.encoder.0.weight: 0.0002851351455319673\n", + "Grad encoder.encoder.0.bias: 0.0006710365414619446\n", + "Grad encoder.encoder.2.weight: 0.00019917573081329465\n", + "Grad encoder.encoder.2.bias: 0.0007764882757328451\n", + "Grad encoder.encoder.4.weight: 0.0003846635518129915\n", + "Grad encoder.encoder.4.bias: 0.0018749380251392722\n", + "Grad decoder.fc1.0.weight: 0.00012563592463266104\n", + "Grad decoder.fc1.0.bias: 0.0006660196231678128\n", + "Grad decoder.fc1.2.weight: 0.0001285973994527012\n", + "Grad decoder.fc1.2.bias: 0.0010259828995913267\n", + "Grad decoder.fc1.4.weight: 0.00010148728324566036\n", + "Grad decoder.fc1.4.bias: 0.0008397008059546351\n", + "Grad decoder.fc2.weight: 0.00013321441656444222\n", + "Grad decoder.fc2.bias: 0.0023352601565420628\n", + "Grad _memory_unit.weight_ih_l0: 1.8578377421363257e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.2046249543782324e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.797212644305546e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.2447744666133076e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.756760507822037e-05\n", + "Grad _memory_unit.bias_hh_l1: 5.08590237586759e-05\n", + "Data X Sample: tensor([[-0.0021, -0.0029, 0.0000, 0.0044, 0.0034, 0.0015, -0.0046, 0.0057,\n", + " 0.0000, 0.0063, 0.0159, 0.0078, -0.0044, -0.0055, 0.0000, 0.0041,\n", + " -0.0047, 0.0019, -0.0145, -0.0037, 0.0025, 0.0015, 0.0072, -0.0095,\n", + " -0.0094, 0.0209, -0.0107, 0.0163, -0.0312, 0.0033, 0.0140, 0.0111,\n", + " -0.0132, -0.0092, -0.0049, 0.0073, 0.0059, 0.0027, 0.0000, -0.0028,\n", + " 0.0334, -0.0060, 0.0040, -0.0086, -0.0198, 0.0000, -0.0272, -0.0156]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.9029, 1.0123, -0.7535, 0.7772, -0.4432, -1.4659, -1.2251, -1.2133,\n", + " -1.4672, -0.6914, -1.0856, 0.6223, -0.1611, 0.4326, 0.5532, -0.1172,\n", + " 1.1530, 0.7941, 0.4769, 0.8498, -0.0133, -0.6121, 0.5244, 0.0289,\n", + " 0.4640, 0.2828, -0.7117, 0.6966, 1.1821, 1.2810, 1.3110, 0.7059,\n", + " 2.5194, 1.7872, 2.0575, 1.2018, -0.5235, 0.7672, 0.8433, -0.8622,\n", + " -0.9359, -1.1299, -1.5017]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.9701, 0.7253, 0.2382, 0.4470, -0.5734, -0.6896, -1.2595, -1.0557,\n", + " -0.9909, -0.9937, -0.9618, 0.2671, 0.3953, 0.6869, 0.3771, 0.5067,\n", + " 0.4612, 0.1563, 0.0571, 0.1639, 0.0593, 0.1002, 0.1871, 0.2020,\n", + " -0.0068, -0.0217, 0.3855, 0.5247, 1.0639, 1.0218, 0.8610, 0.5563,\n", + " 0.6878, 0.5102, 0.3980, 0.2897, -0.0814, -0.0962, 0.0285, -0.8310,\n", + " -0.7018, -0.6358, -0.3481]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0012905178591609001\n", + "Grad encoder.fc1.bias: 0.0012645518872886896\n", + "Grad encoder.encoder.0.weight: 0.0002408880682196468\n", + "Grad encoder.encoder.0.bias: 0.0016186393331736326\n", + "Grad encoder.encoder.2.weight: 0.00019755333778448403\n", + "Grad encoder.encoder.2.bias: 0.002045155270025134\n", + "Grad encoder.encoder.4.weight: 0.00044211171916686\n", + "Grad encoder.encoder.4.bias: 0.006255528889596462\n", + "Grad decoder.fc1.0.weight: 9.839550330070779e-05\n", + "Grad decoder.fc1.0.bias: 0.0010409349342808127\n", + "Grad decoder.fc1.2.weight: 0.00012025341129628941\n", + "Grad decoder.fc1.2.bias: 0.0009767962619662285\n", + "Grad decoder.fc1.4.weight: 9.992305422201753e-05\n", + "Grad decoder.fc1.4.bias: 0.0008049835450947285\n", + "Grad decoder.fc2.weight: 0.00015431668725796044\n", + "Grad decoder.fc2.bias: 0.001609118189662695\n", + "Grad _memory_unit.weight_ih_l0: 9.905867045745254e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0005554055678658187\n", + "Grad _memory_unit.bias_hh_l0: 0.0002768774575088173\n", + "Grad _memory_unit.weight_ih_l1: 1.8288983483216725e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0005177446291781962\n", + "Grad _memory_unit.bias_hh_l1: 0.0002647502988111228\n", + "Data X Sample: tensor([[1.2974, 1.4143, 1.4140, 1.4825, 1.6938, 1.9005, 1.9813, 1.9562, 3.4516,\n", + " 4.2352, 4.1113, 4.0391, 3.9525, 3.7516, 3.5710, 3.5269, 3.4199, 3.4277,\n", + " 3.3350, 3.2973, 3.3443, 3.3573, 2.9954, 2.9012, 2.8190, 2.7503, 2.9011,\n", + " 2.8061, 2.7927, 3.0000, 3.0796, 3.1253, 3.4409, 2.5952, 4.2748, 4.5702,\n", + " 5.0342, 5.2263, 5.7046, 5.5409, 1.0118, 0.5536, 0.5255, 0.9185, 1.3439,\n", + " 1.4753, 1.0198, 1.4153]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6814, 0.0344, 0.2376, -0.3346, -0.5219, -1.9326, 0.1008, 0.8409,\n", + " 0.4157, 0.8371, 0.3329, 0.3016, -0.6120, -0.1262, 0.0200, -0.7872,\n", + " -0.7709, -0.3494, -0.1820, -0.5941, 0.2962, -0.1189, 0.1715, -0.0116,\n", + " -0.2947, -0.0459, -0.6119, -0.2578, -1.2554, 0.9133, -0.8270, -0.6476,\n", + " -0.9586, -0.6942, -0.3715, -0.8762, 0.7329, 0.4911, 0.6669, 0.6178,\n", + " 0.7683, 0.6619, 0.8702]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2972, -0.4273, -0.1086, -0.2623, 0.0267, 0.3292, 0.4180, 0.5193,\n", + " 0.2870, 0.2936, 0.5058, -0.3233, -0.2536, -0.4658, -0.4561, -0.4157,\n", + " -0.3572, -0.0948, -0.0974, -0.0934, -0.1340, -0.0936, -0.1323, 0.0449,\n", + " 0.0537, 0.1233, -0.0609, -0.1615, -0.4267, -0.3070, -0.4194, -0.3385,\n", + " -0.3752, -0.5739, -0.3722, -0.3300, -0.0681, 0.0588, 0.0876, 0.5528,\n", + " 0.4934, 0.5721, 0.3909]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007002278580330312\n", + "Grad encoder.fc1.bias: 0.0011412887834012508\n", + "Grad encoder.encoder.0.weight: 0.0001948651479324326\n", + "Grad encoder.encoder.0.bias: 0.0012987953377887607\n", + "Grad encoder.encoder.2.weight: 0.00016120259533636272\n", + "Grad encoder.encoder.2.bias: 0.001414013677276671\n", + "Grad encoder.encoder.4.weight: 0.00043316202936694026\n", + "Grad encoder.encoder.4.bias: 0.002429986372590065\n", + "Grad decoder.fc1.0.weight: 0.00018570682732388377\n", + "Grad decoder.fc1.0.bias: 0.0014209110522642732\n", + "Grad decoder.fc1.2.weight: 0.00020302791381254792\n", + "Grad decoder.fc1.2.bias: 0.0012343146372586489\n", + "Grad decoder.fc1.4.weight: 0.00014194039977155626\n", + "Grad decoder.fc1.4.bias: 0.0009402352734468877\n", + "Grad decoder.fc2.weight: 0.0002112629299517721\n", + "Grad decoder.fc2.bias: 0.0019150393782183528\n", + "Grad _memory_unit.weight_ih_l0: 0.00010672899952623993\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0002657226868905127\n", + "Grad _memory_unit.bias_hh_l0: 0.0001417915482306853\n", + "Grad _memory_unit.weight_ih_l1: 2.1017984181526117e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002870917087420821\n", + "Grad _memory_unit.bias_hh_l1: 0.00015075822011567652\n", + "Data X Sample: tensor([[1.5838, 1.6488, 1.8753, 1.9832, 2.0848, 2.1127, 2.0907, 3.2367, 4.0838,\n", + " 4.3237, 4.4888, 4.2514, 4.2499, 4.0488, 4.0224, 3.8784, 3.7360, 3.6463,\n", + " 3.5415, 3.5372, 3.5111, 3.5486, 2.9930, 2.8382, 2.7796, 2.8417, 3.0236,\n", + " 3.0222, 2.8100, 3.1507, 3.2126, 3.2994, 3.7599, 2.7050, 4.4930, 4.7647,\n", + " 5.1050, 5.4277, 6.0215, 5.7537, 1.0977, 0.6532, 0.6588, 1.2917, 1.7284,\n", + " 2.0357, 1.3122, 1.6811]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.3057, 0.0698, -0.7045, -0.3719, -1.2341, 0.7258, 0.7682, 0.7024,\n", + " 0.8564, 0.6211, 0.8118, -0.6542, 0.2554, -0.4854, -0.1097, -0.5513,\n", + " -0.6491, -0.8474, -0.1470, -0.0317, 0.1391, -1.1849, 0.7732, -0.9995,\n", + " 0.3776, -0.0749, 1.5953, -0.6949, 0.2699, -0.2856, 0.8133, -0.2613,\n", + " -0.4440, 0.1351, -0.0367, 0.6948, 0.5692, -0.8198, -0.0156, 0.9877,\n", + " 0.9792, 0.7492, 0.6095]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3169, -0.4060, -0.1045, -0.2267, 0.0395, 0.3623, 0.4339, 0.5433,\n", + " 0.3042, 0.3098, 0.5188, -0.3204, -0.2614, -0.4829, -0.4638, -0.4022,\n", + " -0.3347, -0.0918, -0.0968, -0.0949, -0.1494, -0.1049, -0.1283, 0.0366,\n", + " 0.0581, 0.1163, -0.0962, -0.1939, -0.4551, -0.3119, -0.4528, -0.3509,\n", + " -0.3894, -0.5880, -0.3744, -0.3632, -0.0586, 0.0658, 0.0940, 0.5623,\n", + " 0.4919, 0.5789, 0.4078]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005931573687121272\n", + "Grad encoder.fc1.bias: 0.001084484625607729\n", + "Grad encoder.encoder.0.weight: 0.00017090406618081033\n", + "Grad encoder.encoder.0.bias: 0.0011706952936947346\n", + "Grad encoder.encoder.2.weight: 0.00014338805340230465\n", + "Grad encoder.encoder.2.bias: 0.0012304409174248576\n", + "Grad encoder.encoder.4.weight: 0.00032933190232142806\n", + "Grad encoder.encoder.4.bias: 0.003239114535972476\n", + "Grad decoder.fc1.0.weight: 0.00013106768892612308\n", + "Grad decoder.fc1.0.bias: 0.0012671764707192779\n", + "Grad decoder.fc1.2.weight: 0.00017481167742516845\n", + "Grad decoder.fc1.2.bias: 0.000873125740326941\n", + "Grad decoder.fc1.4.weight: 0.00011934842041227967\n", + "Grad decoder.fc1.4.bias: 0.0008235579589381814\n", + "Grad decoder.fc2.weight: 0.00018602912314236164\n", + "Grad decoder.fc2.bias: 0.0017278325976803899\n", + "Grad _memory_unit.weight_ih_l0: 4.194831126369536e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0001933117164298892\n", + "Grad _memory_unit.bias_hh_l0: 9.727630822453648e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.1404343240428716e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00025336237740702927\n", + "Grad _memory_unit.bias_hh_l1: 0.00012949283700436354\n", + "Data X Sample: tensor([[2.6404, 3.0514, 3.2427, 2.8731, 2.8685, 3.2751, 3.7361, 3.7663, 3.9813,\n", + " 4.0188, 4.0352, 3.9904, 3.7683, 3.8879, 3.7929, 3.5502, 3.4749, 3.6482,\n", + " 3.4424, 3.3642, 3.2952, 3.2272, 2.9905, 2.9088, 2.8396, 2.7764, 2.8105,\n", + " 2.8387, 2.7025, 2.7937, 2.8556, 2.8048, 2.9679, 2.1603, 3.7233, 4.1688,\n", + " 4.4167, 4.8606, 5.4384, 5.2827, 1.9663, 1.1232, 1.2328, 1.8744, 2.8978,\n", + " 2.6361, 1.7881, 2.2441]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4090, -0.2604, 0.0280, -2.5846, -0.3932, 0.4825, 0.2080, 0.2401,\n", + " 0.0897, 0.1608, 0.1207, -0.0362, 0.1638, 0.3090, 0.2497, -0.7513,\n", + " -0.2307, -0.8146, 0.0416, -1.0662, 0.5033, -0.0893, -0.1001, -0.2308,\n", + " -0.0242, 4.5839, -0.4783, 0.1352, -0.5233, -0.7168, -0.7269, -0.3253,\n", + " -0.7773, 0.1805, -0.9804, 0.4386, 0.1767, -0.4087, 0.6434, 0.0433,\n", + " 0.0804, 0.4699, 1.0661]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2407, -0.3205, -0.1207, -0.2400, -0.1083, 0.1669, 0.2743, 0.4181,\n", + " 0.1734, 0.1798, 0.3879, -0.2522, -0.1765, -0.3380, -0.3312, -0.2838,\n", + " -0.2523, -0.0683, -0.1136, -0.0834, -0.0931, -0.0373, -0.0963, 0.0429,\n", + " 0.0578, 0.1171, -0.0030, -0.0886, -0.2755, -0.1753, -0.3142, -0.2830,\n", + " -0.2405, -0.4061, -0.2457, -0.2937, -0.0747, 0.0338, 0.0619, 0.4247,\n", + " 0.3863, 0.4797, 0.2884]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.002614571712911129\n", + "Grad encoder.fc1.bias: 0.001636065891943872\n", + "Grad encoder.encoder.0.weight: 0.0007786984788253903\n", + "Grad encoder.encoder.0.bias: 0.0017161412397399545\n", + "Grad encoder.encoder.2.weight: 0.0006906647467985749\n", + "Grad encoder.encoder.2.bias: 0.0021261340007185936\n", + "Grad encoder.encoder.4.weight: 0.0016930894926190376\n", + "Grad encoder.encoder.4.bias: 0.006996452808380127\n", + "Grad decoder.fc1.0.weight: 0.0003329255850985646\n", + "Grad decoder.fc1.0.bias: 0.0015937676653265953\n", + "Grad decoder.fc1.2.weight: 0.00030676971073262393\n", + "Grad decoder.fc1.2.bias: 0.0019890957046300173\n", + "Grad decoder.fc1.4.weight: 0.00022886169608682394\n", + "Grad decoder.fc1.4.bias: 0.0015564293134957552\n", + "Grad decoder.fc2.weight: 0.00025462626945227385\n", + "Grad decoder.fc2.bias: 0.0030834730714559555\n", + "Grad _memory_unit.weight_ih_l0: 0.0003700965316966176\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00044499500654637814\n", + "Grad _memory_unit.bias_hh_l0: 0.00023657717974856496\n", + "Grad _memory_unit.weight_ih_l1: 5.807781053590588e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0005233436240814626\n", + "Grad _memory_unit.bias_hh_l1: 0.00026646931655704975\n", + "Data X Sample: tensor([[1.4926, 1.6939, 1.8602, 1.8433, 2.0199, 2.0744, 2.1400, 2.1138, 2.2018,\n", + " 2.2590, 2.1921, 2.2299, 2.1172, 2.1757, 2.0680, 2.1306, 2.0755, 2.1897,\n", + " 2.2096, 2.1684, 2.2426, 2.2275, 2.2363, 2.2542, 2.3291, 2.3194, 2.3789,\n", + " 2.4349, 2.1301, 2.1190, 2.2117, 2.2659, 2.2858, 1.5882, 2.1717, 1.7755,\n", + " 1.6263, 1.5106, 1.5846, 1.5207, 1.2552, 0.6990, 0.7073, 1.2170, 1.8314,\n", + " 1.8012, 1.2782, 1.9392]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1733, 1.5223, -0.8670, 0.5355, 0.1979, 1.3016, -0.2152, -1.1471,\n", + " 0.7113, 0.7639, 0.9507, 0.3093, -0.4374, -0.5568, -0.1578, 0.9140,\n", + " 0.6689, -0.2953, -0.7236, 1.2845, 0.3311, 4.0317, 0.6922, 1.8036,\n", + " 0.1526, 0.6817, -0.4709, -0.0112, -0.5006, -0.2863, -0.2380, -0.2885,\n", + " 0.6892, -0.0223, -0.2225, 0.7036, -0.0182, -0.0920, 0.2098, 0.7124,\n", + " 0.3309, 0.2885, -0.0162]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3364, 0.2665, 0.0705, 0.2675, 0.1303, -0.0565, -0.2947, -0.3599,\n", + " -0.1661, -0.2242, -0.2120, 0.1444, 0.1281, 0.2035, 0.1846, 0.2562,\n", + " 0.2095, 0.1170, 0.0813, 0.0801, 0.0605, 0.0714, 0.1025, 0.0319,\n", + " 0.0405, 0.0575, -0.0882, 0.0250, 0.1030, 0.2094, 0.1773, 0.1219,\n", + " 0.2443, 0.2245, 0.1372, 0.0937, -0.0350, -0.0117, -0.0362, -0.2387,\n", + " -0.2333, -0.2186, -0.2306]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00020068777666892856\n", + "Grad encoder.fc1.bias: 0.00015144559438340366\n", + "Grad encoder.encoder.0.weight: 3.929781087208539e-05\n", + "Grad encoder.encoder.0.bias: 0.00015236626495607197\n", + "Grad encoder.encoder.2.weight: 2.5225159333785996e-05\n", + "Grad encoder.encoder.2.bias: 0.00017289374954998493\n", + "Grad encoder.encoder.4.weight: 6.799305992899463e-05\n", + "Grad encoder.encoder.4.bias: 0.0006622240762226284\n", + "Grad decoder.fc1.0.weight: 3.85388448194135e-05\n", + "Grad decoder.fc1.0.bias: 0.0003264942788518965\n", + "Grad decoder.fc1.2.weight: 5.4288666433421895e-05\n", + "Grad decoder.fc1.2.bias: 0.0004448586842045188\n", + "Grad decoder.fc1.4.weight: 4.4361455366015434e-05\n", + "Grad decoder.fc1.4.bias: 0.00039422325789928436\n", + "Grad decoder.fc2.weight: 0.00012174541916465387\n", + "Grad decoder.fc2.bias: 0.0017263037152588367\n", + "Grad _memory_unit.weight_ih_l0: 9.84455255093053e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.008863809052855e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.5362285668961704e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.7169872939557536e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.396816024789587e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.385108720976859e-05\n", + "Data X Sample: tensor([[2.5704, 3.1490, 3.5462, 3.7127, 3.9254, 3.8776, 4.1105, 4.1325, 4.0838,\n", + " 4.0899, 4.0003, 3.9768, 3.7084, 3.6589, 3.5937, 3.5679, 3.6432, 3.7024,\n", + " 3.8636, 3.7585, 3.8055, 3.7140, 3.2629, 3.1627, 3.0949, 2.9958, 2.9597,\n", + " 2.9774, 2.9419, 2.9804, 3.2580, 3.2994, 3.5773, 2.4693, 3.8802, 4.2880,\n", + " 4.4954, 4.8738, 5.6285, 5.3792, 2.0475, 1.2347, 1.2045, 2.1901, 3.2031,\n", + " 3.4195, 2.3456, 3.4561]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3811, -0.5169, -1.3136, -0.5380, -0.2012, -0.7769, 0.1428, 0.6091,\n", + " 0.6768, 0.2050, 1.2286, -0.4606, -0.7154, 0.1057, 0.8407, 0.3233,\n", + " -0.4321, 0.7805, -1.5342, 3.1897, -0.0452, 0.1939, 1.3117, 0.2900,\n", + " 0.0220, -0.2090, -0.0061, -0.5116, 0.4250, -0.1425, -0.1096, 1.2286,\n", + " -0.9847, -0.5743, -0.5035, -0.1608, 0.0000, 0.7891, -0.7618, 0.9281,\n", + " 0.5409, 0.8352, 1.2282]], device='cuda:0')\n", + "Prediction Sample: tensor([[-9.9132e-02, -1.1247e-01, -7.2550e-02, -1.0748e-01, -1.0120e-01,\n", + " 4.3690e-03, 3.7381e-02, 1.6773e-01, 2.6316e-03, 3.9831e-02,\n", + " 7.3120e-02, -1.0483e-01, -7.7288e-02, -9.2655e-02, -9.4644e-02,\n", + " -7.0587e-02, -8.2715e-02, -1.5426e-02, -7.4443e-02, -3.8686e-02,\n", + " -3.5807e-02, 2.1062e-02, 1.0575e-04, 9.6536e-03, 5.1984e-03,\n", + " 4.3122e-02, 3.9926e-02, -2.8339e-03, -6.2850e-02, -2.9111e-02,\n", + " -1.1365e-01, -1.2653e-01, -9.9486e-02, -1.1991e-01, -6.0383e-02,\n", + " -1.3010e-01, -5.5621e-02, 7.1652e-03, 3.5369e-03, 1.3297e-01,\n", + " 1.5522e-01, 2.0865e-01, 8.9506e-02]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002705391962081194\n", + "Grad encoder.fc1.bias: 0.00046967773232609034\n", + "Grad encoder.encoder.0.weight: 7.883500802563503e-05\n", + "Grad encoder.encoder.0.bias: 0.0003479363804217428\n", + "Grad encoder.encoder.2.weight: 5.5677643103990704e-05\n", + "Grad encoder.encoder.2.bias: 0.0002971037174575031\n", + "Grad encoder.encoder.4.weight: 0.00012170807167422026\n", + "Grad encoder.encoder.4.bias: 0.0008671872201375663\n", + "Grad decoder.fc1.0.weight: 5.287454041535966e-05\n", + "Grad decoder.fc1.0.bias: 0.0003729678865056485\n", + "Grad decoder.fc1.2.weight: 5.026268627261743e-05\n", + "Grad decoder.fc1.2.bias: 0.000496390275657177\n", + "Grad decoder.fc1.4.weight: 5.0719969294732437e-05\n", + "Grad decoder.fc1.4.bias: 0.0005389141151681542\n", + "Grad decoder.fc2.weight: 0.00011293798161204904\n", + "Grad decoder.fc2.bias: 0.0018297933274880052\n", + "Grad _memory_unit.weight_ih_l0: 9.957565453078132e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.2505205783527344e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.1714198737754487e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.286302894091932e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.7855861086864024e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.1750198104418814e-05\n", + "Data X Sample: tensor([[1.4555, 1.6881, 1.9895, 2.0794, 2.0336, 1.7664, 1.4159, 2.4517, 4.0984,\n", + " 4.3742, 4.3112, 4.2514, 4.3142, 4.0079, 3.8182, 3.6828, 3.6715, 3.7179,\n", + " 3.6633, 3.3977, 3.5602, 3.4844, 3.0267, 2.9432, 2.9241, 2.9305, 2.8744,\n", + " 2.9284, 2.9800, 3.0819, 3.2336, 3.2911, 3.7225, 2.7279, 4.4783, 4.9545,\n", + " 5.0303, 5.4383, 6.1229, 5.9693, 1.2218, 0.6930, 0.7255, 1.2601, 1.9107,\n", + " 1.9328, 1.3734, 1.8141]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4619, -0.1925, 0.0432, -0.2201, -0.2480, -0.3735, 0.0683, 0.5992,\n", + " 0.3949, 0.4515, 0.2476, -0.5561, 0.0089, -1.2189, -0.6429, -0.7946,\n", + " -0.5705, 1.1680, 0.5207, -0.0356, -1.6992, -1.0065, 0.4812, 0.5165,\n", + " -0.8901, -0.7145, 0.2066, 0.6351, -0.2462, 0.0887, -0.2288, 0.7674,\n", + " -0.0180, 0.5342, -0.0768, 0.9718, 0.0000, 0.0000, 0.2253, 0.7145,\n", + " 0.3618, 0.1012, 0.9780]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1493, -0.1421, -0.0844, -0.1292, -0.1102, 0.0037, 0.0568, 0.1929,\n", + " 0.0353, 0.0732, 0.1317, -0.1129, -0.1049, -0.1418, -0.1170, -0.1096,\n", + " -0.0792, -0.0252, -0.0941, -0.0387, -0.0429, -0.0013, -0.0238, 0.0135,\n", + " 0.0230, 0.0743, 0.0444, 0.0064, -0.0861, -0.0773, -0.1319, -0.1688,\n", + " -0.1334, -0.1460, -0.0736, -0.1691, -0.0537, 0.0038, 0.0036, 0.1692,\n", + " 0.1854, 0.2553, 0.1334]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005433752085082233\n", + "Grad encoder.fc1.bias: 0.0002428585139568895\n", + "Grad encoder.encoder.0.weight: 0.00012597456225194037\n", + "Grad encoder.encoder.0.bias: 0.0002604260225780308\n", + "Grad encoder.encoder.2.weight: 9.272196621168405e-05\n", + "Grad encoder.encoder.2.bias: 0.00029543560231104493\n", + "Grad encoder.encoder.4.weight: 0.00018165810615755618\n", + "Grad encoder.encoder.4.bias: 0.0008282418712042272\n", + "Grad decoder.fc1.0.weight: 6.0459133237600327e-05\n", + "Grad decoder.fc1.0.bias: 0.00026322013582102954\n", + "Grad decoder.fc1.2.weight: 8.727161184651777e-05\n", + "Grad decoder.fc1.2.bias: 0.0010432037524878979\n", + "Grad decoder.fc1.4.weight: 6.96387724019587e-05\n", + "Grad decoder.fc1.4.bias: 0.0008975456585176289\n", + "Grad decoder.fc2.weight: 8.82369204191491e-05\n", + "Grad decoder.fc2.bias: 0.002968566259369254\n", + "Grad _memory_unit.weight_ih_l0: 1.0321665286028292e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.9010112484684214e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.5218720363918692e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.093300493783318e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.594855221919715e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.6733199522132054e-05\n", + "Data X Sample: tensor([[-0.0074, -0.0087, -0.0045, -0.0109, 0.0017, -0.0162, -0.0046, -0.0057,\n", + " 0.0024, -0.0174, 0.0000, -0.0078, -0.0155, -0.0245, -0.0202, 0.0109,\n", + " 0.0676, 0.0948, 0.1136, 0.0911, 0.1178, 0.0674, 0.1205, 0.0840,\n", + " 0.0826, 0.1802, 0.1865, 0.3630, -0.0208, 0.0950, 0.0525, 0.0608,\n", + " -0.0022, 0.0206, -0.0074, 0.0365, 0.0020, 0.0212, 0.0190, 0.0057,\n", + " 0.0000, 0.0139, 0.0061, 0.0172, 0.0476, 0.0057, -0.0272, 0.0000]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6372, -0.0504, -0.9364, 0.1578, 0.0154, 0.1746, -0.5068, -0.2543,\n", + " 0.3057, -0.0372, -0.2277, -0.5657, 0.8392, 0.5833, 0.1760, 1.0936,\n", + " -0.1150, 1.5297, 0.3096, -0.2518, 1.0225, 0.7973, 0.7599, 0.3980,\n", + " 0.7351, 1.7020, 0.0674, 0.5492, 0.2911, 0.7212, 0.7500, 0.0357,\n", + " 0.7316, 0.7443, 0.4261, -0.2466, 0.0000, -0.6596, -0.0059, -0.3061,\n", + " -0.2282, -0.0353, -0.4653]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.6912, 0.6171, 0.1738, 0.5979, 0.2939, -0.1393, -0.5930, -0.7278,\n", + " -0.3503, -0.4456, -0.3731, 0.2935, 0.2976, 0.4549, 0.4076, 0.5398,\n", + " 0.5071, 0.2514, 0.2175, 0.2521, 0.1056, 0.1217, 0.2315, 0.1022,\n", + " 0.0834, 0.1261, -0.1615, 0.0849, 0.2365, 0.4513, 0.4074, 0.3109,\n", + " 0.5024, 0.5276, 0.2692, 0.2351, -0.0554, -0.0728, -0.0307, -0.5243,\n", + " -0.5190, -0.5197, -0.5041]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0008487023878842592\n", + "Grad encoder.fc1.bias: 0.0006754741189070046\n", + "Grad encoder.encoder.0.weight: 0.0001892601721920073\n", + "Grad encoder.encoder.0.bias: 0.0008465233258903027\n", + "Grad encoder.encoder.2.weight: 0.0001628254831302911\n", + "Grad encoder.encoder.2.bias: 0.0013010376133024693\n", + "Grad encoder.encoder.4.weight: 0.0003733128251042217\n", + "Grad encoder.encoder.4.bias: 0.005646419711410999\n", + "Grad decoder.fc1.0.weight: 9.20533129828982e-05\n", + "Grad decoder.fc1.0.bias: 0.0007742572342976928\n", + "Grad decoder.fc1.2.weight: 0.00012021084694424644\n", + "Grad decoder.fc1.2.bias: 0.0008676366414874792\n", + "Grad decoder.fc1.4.weight: 9.337392111774534e-05\n", + "Grad decoder.fc1.4.bias: 0.0007224680157378316\n", + "Grad decoder.fc2.weight: 0.00017683778423815966\n", + "Grad decoder.fc2.bias: 0.0018393277423456311\n", + "Grad _memory_unit.weight_ih_l0: 9.29799789446406e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00047789595555514097\n", + "Grad _memory_unit.bias_hh_l0: 0.00024522357853129506\n", + "Grad _memory_unit.weight_ih_l1: 1.5640285710105672e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00043466221541166306\n", + "Grad _memory_unit.bias_hh_l1: 0.00023171267821453512\n", + "Data X Sample: tensor([[0.0371, 0.0583, 0.0887, 0.1006, 0.0956, 0.1120, 0.1356, 0.1334, 0.1684,\n", + " 0.1532, 0.1332, 0.1480, 0.1664, 0.1827, 0.1614, 0.1997, 0.2107, 0.2205,\n", + " 0.2333, 0.2176, 0.2748, 0.2388, 0.2410, 0.2004, 0.2233, 0.2377, 0.2398,\n", + " 0.3141, 0.1804, 0.2391, 0.1925, 0.1769, 0.1474, 0.0984, 0.1618, 0.1776,\n", + " 0.1475, 0.1378, 0.1394, 0.1362, 0.0764, 0.0398, 0.0424, 0.0660, 0.0832,\n", + " 0.0915, 0.0408, 0.1095]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.8540e+00, -2.7417e-01, -1.2652e+00, 1.9920e-01, 5.1496e-01,\n", + " -3.1374e-01, -2.7140e-01, -6.0382e-01, 6.6567e-01, 8.0839e-01,\n", + " 7.7168e-01, -1.5316e-01, 1.3030e+00, -4.1460e-01, -7.2887e-01,\n", + " 8.2152e-02, 8.8246e-01, 7.4038e-01, 1.2887e-03, 9.6094e-01,\n", + " -1.4366e-01, 9.6127e-01, -2.2401e-01, -9.8728e-02, 9.4028e-01,\n", + " 7.3809e-01, 2.4250e+00, -2.4147e+00, 6.0730e-01, 2.1983e-01,\n", + " 2.7252e-01, -5.4221e-01, 4.8127e-01, 2.5402e-01, -9.1032e-01,\n", + " 6.6977e-01, -6.4728e-01, 1.7234e-01, 2.8698e-01, -1.9457e-01,\n", + " -1.7985e-01, 1.5980e-01, 5.7605e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 2.0590e-01, 1.6004e-01, 7.1782e-02, 4.0980e-01, 1.4802e-01,\n", + " -5.0261e-02, -2.5287e-01, -3.2102e-01, 5.6754e-02, -8.9833e-02,\n", + " 4.8662e-02, 1.7980e-01, 2.0712e-01, 1.0204e-01, 9.5856e-02,\n", + " 1.1109e-01, 2.2881e-01, 7.7219e-02, 1.8046e-01, -5.4402e-04,\n", + " -2.4265e-02, 1.1835e-01, 1.4923e-01, -3.2388e-04, 2.8343e-02,\n", + " 8.0390e-02, -1.7957e-01, 5.4340e-02, 3.7018e-02, 1.4977e-01,\n", + " 6.1699e-02, 2.4350e-02, 1.8314e-01, 2.0702e-01, 7.1367e-02,\n", + " -5.1928e-02, 3.8740e-02, -1.7630e-02, -7.8958e-02, 5.4828e-02,\n", + " -5.2530e-02, -1.1643e-01, -1.8003e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00032844534143805504\n", + "Grad encoder.fc1.bias: 0.0010725448373705149\n", + "Grad encoder.encoder.0.weight: 8.878827793523669e-05\n", + "Grad encoder.encoder.0.bias: 0.000847084796987474\n", + "Grad encoder.encoder.2.weight: 6.11446812399663e-05\n", + "Grad encoder.encoder.2.bias: 0.0006477998103946447\n", + "Grad encoder.encoder.4.weight: 0.00015150354010984302\n", + "Grad encoder.encoder.4.bias: 0.0015346615109592676\n", + "Grad decoder.fc1.0.weight: 7.380473107332364e-05\n", + "Grad decoder.fc1.0.bias: 0.0007059400668367743\n", + "Grad decoder.fc1.2.weight: 8.240145689342171e-05\n", + "Grad decoder.fc1.2.bias: 0.000750863691791892\n", + "Grad decoder.fc1.4.weight: 6.846468022558838e-05\n", + "Grad decoder.fc1.4.bias: 0.0007238400867208838\n", + "Grad decoder.fc2.weight: 0.00012958697334397584\n", + "Grad decoder.fc2.bias: 0.0014898329973220825\n", + "Grad _memory_unit.weight_ih_l0: 1.407362287864089e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.757085091318004e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.9279099180712365e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.037187631591223e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011413956235628575\n", + "Grad _memory_unit.bias_hh_l1: 5.907573358854279e-05\n", + "Data X Sample: tensor([[1.5520, 1.6560, 1.9143, 2.0226, 2.1770, 2.2585, 2.1107, 2.3012, 3.7762,\n", + " 4.3711, 4.3334, 4.1423, 4.1500, 4.0624, 3.8030, 3.7649, 3.7611, 3.5728,\n", + " 3.5704, 3.4442, 3.5773, 3.3313, 3.0195, 2.9298, 2.9485, 2.9906, 2.9517,\n", + " 3.0018, 3.0459, 3.2129, 3.2161, 3.4431, 3.7247, 2.8194, 4.5273, 4.8718,\n", + " 5.0676, 5.5019, 5.8313, 5.6345, 1.1932, 0.7129, 0.6892, 1.3319, 1.7482,\n", + " 1.9042, 1.3054, 1.9548]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2896, 0.0647, -0.6196, -0.1823, 1.0374, 0.5662, 0.1145, 0.3194,\n", + " 0.1410, 0.2451, 0.2243, -0.0451, 1.2477, 0.2197, -0.7015, -0.7522,\n", + " -0.5913, -2.6107, -1.0948, 0.3179, 2.1526, 1.0396, 0.6371, 0.5327,\n", + " 0.2342, 1.5383, -0.4198, 0.8451, -0.8043, -0.7936, -1.1706, -0.0233,\n", + " -0.9216, -0.4753, -0.6250, -0.0586, -0.7789, 0.1123, -0.1041, 0.4236,\n", + " 0.4052, 0.2582, 0.4504]], device='cuda:0')\n", + "Prediction Sample: tensor([[-1.2658e-01, -1.3621e-01, -8.8512e-02, -1.2606e-01, -1.0553e-01,\n", + " -3.9019e-03, 4.1717e-02, 1.6815e-01, 4.7173e-02, 8.0613e-02,\n", + " 1.1478e-01, -9.7638e-02, -9.3497e-02, -1.2017e-01, -9.6512e-02,\n", + " -1.1155e-01, -8.3838e-02, -2.7506e-02, -7.7688e-02, -3.7297e-02,\n", + " -3.0088e-02, -4.3210e-03, -2.4598e-02, 1.6642e-04, 9.7530e-03,\n", + " 6.4190e-02, 4.8860e-02, 1.9405e-02, -8.3309e-02, -8.5786e-02,\n", + " -1.1635e-01, -1.5427e-01, -1.3216e-01, -1.2626e-01, -7.4488e-02,\n", + " -1.4601e-01, -5.1512e-02, 2.8306e-03, -1.8037e-03, 1.4723e-01,\n", + " 1.8174e-01, 2.3203e-01, 1.2615e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000343998777680099\n", + "Grad encoder.fc1.bias: 0.0006902283057570457\n", + "Grad encoder.encoder.0.weight: 0.0001088659992092289\n", + "Grad encoder.encoder.0.bias: 0.0008067085291258991\n", + "Grad encoder.encoder.2.weight: 0.00010535588080529124\n", + "Grad encoder.encoder.2.bias: 0.0009923868346959352\n", + "Grad encoder.encoder.4.weight: 0.0002890816831495613\n", + "Grad encoder.encoder.4.bias: 0.0038143328856676817\n", + "Grad decoder.fc1.0.weight: 0.0001039816634147428\n", + "Grad decoder.fc1.0.bias: 0.0007949763676151633\n", + "Grad decoder.fc1.2.weight: 0.00014509772881865501\n", + "Grad decoder.fc1.2.bias: 0.0012018480338156223\n", + "Grad decoder.fc1.4.weight: 0.00011949862528126687\n", + "Grad decoder.fc1.4.bias: 0.0012546072248369455\n", + "Grad decoder.fc2.weight: 0.00019967055413872004\n", + "Grad decoder.fc2.bias: 0.00213505863212049\n", + "Grad _memory_unit.weight_ih_l0: 5.8080109738511965e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.000308047397993505\n", + "Grad _memory_unit.bias_hh_l0: 0.00015908625209704041\n", + "Grad _memory_unit.weight_ih_l1: 1.2664479072554968e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00030476663960143924\n", + "Grad _memory_unit.bias_hh_l1: 0.0001595436770003289\n", + "Data X Sample: tensor([[1.6369, 1.6284, 1.8332, 1.9067, 2.0660, 2.1127, 1.9305, 4.0459, 4.3816,\n", + " 4.4295, 4.3429, 4.4325, 3.9880, 3.9997, 3.7349, 3.6035, 3.6432, 3.6521,\n", + " 3.6778, 3.5279, 3.5602, 3.3940, 2.9785, 2.8649, 2.8640, 2.9671, 2.9943,\n", + " 2.9692, 3.1153, 3.0753, 3.2161, 3.3049, 3.6103, 2.7302, 4.5175, 4.9885,\n", + " 5.1502, 5.5920, 6.2370, 5.9665, 1.0691, 0.6632, 0.6649, 1.1223, 1.6967,\n", + " 1.7841, 1.2510, 1.8453]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5620, -0.0653, 0.2129, -0.5598, 0.7651, 1.3703, 0.4410, 0.1931,\n", + " -0.0093, 0.3691, 0.2701, -0.6060, -0.1808, -0.4440, -0.7904, -0.1843,\n", + " 0.0947, 0.1441, -0.5980, -0.5088, -0.7339, -3.2717, -0.0950, -1.5875,\n", + " -2.5150, -0.8445, -0.0125, -0.5473, -0.2345, 0.1012, -0.1785, -0.8139,\n", + " -0.2401, -0.2475, 0.0075, -1.7923, 0.0000, 0.5269, 0.0000, 0.2162,\n", + " 0.2746, 0.0412, 0.0185]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1330, -0.1588, -0.0979, -0.1435, -0.1216, -0.0040, 0.0428, 0.1970,\n", + " 0.0673, 0.0985, 0.1390, -0.1147, -0.0970, -0.1276, -0.1065, -0.1312,\n", + " -0.0951, -0.0308, -0.0727, -0.0425, -0.0283, 0.0054, -0.0344, 0.0014,\n", + " 0.0113, 0.0661, 0.0544, 0.0318, -0.0907, -0.0948, -0.1227, -0.1637,\n", + " -0.1415, -0.1349, -0.0820, -0.1554, -0.0553, 0.0058, -0.0005, 0.1684,\n", + " 0.2134, 0.2629, 0.1406]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00019450810214038938\n", + "Grad encoder.fc1.bias: 0.00046623978414572775\n", + "Grad encoder.encoder.0.weight: 6.0104153817519546e-05\n", + "Grad encoder.encoder.0.bias: 0.00041819846956059337\n", + "Grad encoder.encoder.2.weight: 5.711001722374931e-05\n", + "Grad encoder.encoder.2.bias: 0.0003543109633028507\n", + "Grad encoder.encoder.4.weight: 0.0001585402642376721\n", + "Grad encoder.encoder.4.bias: 0.0006150456611067057\n", + "Grad decoder.fc1.0.weight: 4.6441513404715806e-05\n", + "Grad decoder.fc1.0.bias: 0.00021039930288679898\n", + "Grad decoder.fc1.2.weight: 5.601956581813283e-05\n", + "Grad decoder.fc1.2.bias: 0.0004261716967448592\n", + "Grad decoder.fc1.4.weight: 5.629035149468109e-05\n", + "Grad decoder.fc1.4.bias: 0.0006428537890315056\n", + "Grad decoder.fc2.weight: 0.00017361306527163833\n", + "Grad decoder.fc2.bias: 0.0020462123211473227\n", + "Grad _memory_unit.weight_ih_l0: 3.1047402444528416e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.0093895222526044e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.433034751447849e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.884232789161615e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.386188447824679e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.3842256268835627e-05\n", + "Data X Sample: tensor([[1.5181, 1.7624, 1.9204, 1.9810, 2.1599, 2.2983, 2.3973, 2.5170, 2.5948,\n", + " 2.6018, 2.6235, 2.6369, 2.6032, 2.5029, 2.4816, 2.6175, 2.5394, 2.4547,\n", + " 2.5730, 2.6278, 2.5566, 2.5199, 2.4556, 2.4488, 2.4943, 2.5022, 2.4349,\n", + " 2.5777, 2.2966, 2.4007, 2.4042, 2.3461, 2.3210, 1.5882, 2.1791, 2.0698,\n", + " 1.8505, 1.7359, 1.6353, 1.5973, 1.1502, 0.7109, 0.7215, 1.2601, 1.8235,\n", + " 1.8927, 1.2646, 1.7906]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0780, 0.4743, 0.1487, 0.5718, 0.1304, -0.6944, 0.1809, -0.1107,\n", + " 0.2250, -0.5227, -0.4487, 1.1028, 0.4994, 0.6760, 0.2700, 1.1701,\n", + " -0.0773, 1.1008, -0.3921, 0.6429, 0.1522, 0.7666, 0.4548, 0.2035,\n", + " -0.2864, -0.8497, -0.7062, 0.7187, 0.0898, 0.0518, 0.3777, 0.7286,\n", + " 0.4567, 0.5527, 0.9734, -0.6101, -0.6306, -0.8333, 2.2782, -0.2732,\n", + " -0.5808, 0.0723, -0.5608]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3910, 0.3319, 0.0744, 0.3410, 0.1590, -0.0736, -0.3428, -0.4373,\n", + " -0.1699, -0.2162, -0.2030, 0.1718, 0.1418, 0.2379, 0.2140, 0.3013,\n", + " 0.2729, 0.1291, 0.1295, 0.1120, 0.0760, 0.0530, 0.1178, 0.0293,\n", + " 0.0419, 0.0787, -0.0989, 0.0493, 0.1196, 0.2557, 0.2317, 0.1578,\n", + " 0.2824, 0.2976, 0.1571, 0.1251, -0.0359, -0.0508, -0.0476, -0.2907,\n", + " -0.2729, -0.2668, -0.2744]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002894084027502686\n", + "Grad encoder.fc1.bias: 0.0017942152917385101\n", + "Grad encoder.encoder.0.weight: 8.795604662736878e-05\n", + "Grad encoder.encoder.0.bias: 0.0026430017314851284\n", + "Grad encoder.encoder.2.weight: 6.013851452735253e-05\n", + "Grad encoder.encoder.2.bias: 0.00248320447281003\n", + "Grad encoder.encoder.4.weight: 0.00011607898341026157\n", + "Grad encoder.encoder.4.bias: 0.0062380582094192505\n", + "Grad decoder.fc1.0.weight: 0.00016690803749952465\n", + "Grad decoder.fc1.0.bias: 0.0019439759198576212\n", + "Grad decoder.fc1.2.weight: 0.00022939706104807556\n", + "Grad decoder.fc1.2.bias: 0.0014077231753617525\n", + "Grad decoder.fc1.4.weight: 0.00010996847413480282\n", + "Grad decoder.fc1.4.bias: 0.0009472637320868671\n", + "Grad decoder.fc2.weight: 9.810824121814221e-05\n", + "Grad decoder.fc2.bias: 0.002107445150613785\n", + "Grad _memory_unit.weight_ih_l0: 1.3016838238399941e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00022184441331773996\n", + "Grad _memory_unit.bias_hh_l0: 0.00011559493577806279\n", + "Grad _memory_unit.weight_ih_l1: 1.3060664059594274e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.000314088276354596\n", + "Grad _memory_unit.bias_hh_l1: 0.00017017892969306558\n", + "Data X Sample: tensor([[1.6305, 1.8308, 1.9474, 2.0247, 2.2880, 2.3911, 2.4358, 2.6561, 2.5801,\n", + " 2.6365, 2.6140, 2.7635, 2.6187, 2.5302, 2.4689, 2.5532, 2.4954, 2.4973,\n", + " 2.5007, 2.4251, 2.5198, 2.4158, 2.3953, 2.3840, 2.4080, 2.4891, 2.4428,\n", + " 2.4104, 2.2099, 2.3646, 2.2362, 2.3184, 2.2946, 1.5630, 2.0099, 1.8193,\n", + " 1.6833, 1.5822, 1.6163, 1.5377, 1.1502, 0.7129, 0.7276, 1.2544, 1.8869,\n", + " 2.0357, 1.4006, 1.9783]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6362, 0.4469, -0.4953, 1.1370, -0.4048, -0.0666, 0.5572, -0.0726,\n", + " 0.0630, 0.1132, 0.1429, 0.4439, -0.7341, -0.4498, 0.3249, -0.8430,\n", + " -0.5982, 0.5363, -0.3681, -0.9194, -0.9640, 0.1030, -1.1893, -0.4325,\n", + " -1.1924, -0.0591, -0.3398, -0.0832, 0.3410, -0.0124, 1.3721, 0.8925,\n", + " 0.3999, 0.6361, -0.2395, 0.9198, -0.0333, 0.8274, -0.9499, -0.4669,\n", + " 0.7764, 0.8501, 0.5568]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3611, 0.3035, 0.0673, 0.3032, 0.1261, -0.0757, -0.3268, -0.4076,\n", + " -0.1624, -0.1961, -0.1911, 0.1525, 0.1353, 0.2262, 0.1952, 0.2755,\n", + " 0.2495, 0.1159, 0.1163, 0.1018, 0.0610, 0.0461, 0.1032, 0.0239,\n", + " 0.0378, 0.0725, -0.0798, 0.0554, 0.1265, 0.2458, 0.2170, 0.1481,\n", + " 0.2566, 0.2701, 0.1382, 0.1057, -0.0251, -0.0471, -0.0545, -0.2609,\n", + " -0.2427, -0.2413, -0.2537]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003218975034542382\n", + "Grad encoder.fc1.bias: 0.00019074809097219259\n", + "Grad encoder.encoder.0.weight: 0.00012621309724636376\n", + "Grad encoder.encoder.0.bias: 0.0005538882105611265\n", + "Grad encoder.encoder.2.weight: 0.00014218625437933952\n", + "Grad encoder.encoder.2.bias: 0.0009535512654110789\n", + "Grad encoder.encoder.4.weight: 0.00036124797770753503\n", + "Grad encoder.encoder.4.bias: 0.005760893225669861\n", + "Grad decoder.fc1.0.weight: 7.624881254741922e-05\n", + "Grad decoder.fc1.0.bias: 0.0006165683153085411\n", + "Grad decoder.fc1.2.weight: 9.798492828849703e-05\n", + "Grad decoder.fc1.2.bias: 0.0005833666073158383\n", + "Grad decoder.fc1.4.weight: 8.074070501606911e-05\n", + "Grad decoder.fc1.4.bias: 0.0005015641800127923\n", + "Grad decoder.fc2.weight: 0.00016454224532935768\n", + "Grad decoder.fc2.bias: 0.001910353428684175\n", + "Grad _memory_unit.weight_ih_l0: 0.00012297468492761254\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0005312054418027401\n", + "Grad _memory_unit.bias_hh_l0: 0.00028294420917518437\n", + "Grad _memory_unit.weight_ih_l1: 2.1244446543278173e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00044205840094946325\n", + "Grad _memory_unit.bias_hh_l1: 0.000244571128860116\n", + "Data X Sample: tensor([[1.5223, 1.5876, 1.7025, 1.8323, 1.9550, 2.0965, 2.0414, 3.4710, 4.3694,\n", + " 4.4580, 4.3778, 4.2864, 4.1411, 4.0352, 4.0250, 3.6951, 3.6825, 3.7179,\n", + " 3.6489, 3.5130, 3.5626, 3.4813, 3.0556, 3.0310, 2.8246, 2.8496, 2.8691,\n", + " 2.7734, 2.9419, 3.0983, 3.1181, 3.4127, 3.7819, 2.7599, 4.5444, 4.9155,\n", + " 5.1227, 5.4436, 5.8821, 5.7821, 1.1550, 0.6114, 0.6427, 1.0649, 1.7125,\n", + " 1.7784, 1.2170, 1.7124]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0252, -0.7956, -0.5062, -0.0659, 0.5317, 0.4435, 0.2896, 0.4008,\n", + " -0.0118, 0.2114, 0.2562, -0.1371, -0.4243, -0.1460, 0.3738, -0.4307,\n", + " -0.2757, 0.8252, 0.3924, 0.9724, 1.0654, -0.4739, 0.4036, 0.2162,\n", + " -0.6477, 0.5511, 0.1571, -1.2804, -0.3642, -0.4668, 0.1177, -0.5409,\n", + " -0.4545, -0.0732, -0.1653, -0.5457, 0.0000, 0.5269, 0.0000, 0.2304,\n", + " -0.2453, 0.1391, 0.5852]], device='cuda:0')\n", + "Prediction Sample: tensor([[-2.0396e-01, -2.3340e-01, -1.3821e-01, -1.9111e-01, -1.6522e-01,\n", + " 1.5287e-03, 9.2835e-02, 3.1549e-01, 1.0083e-01, 1.3571e-01,\n", + " 2.3951e-01, -1.6868e-01, -1.3098e-01, -1.9429e-01, -1.5310e-01,\n", + " -1.9264e-01, -1.2366e-01, -3.9770e-02, -1.0370e-01, -5.2488e-02,\n", + " -3.6582e-02, 2.9025e-02, -5.1315e-02, 2.1855e-02, 2.9582e-02,\n", + " 1.0310e-01, 6.5155e-02, 3.0518e-02, -1.3862e-01, -1.3050e-01,\n", + " -1.8564e-01, -2.2366e-01, -1.7588e-01, -2.0166e-01, -1.1231e-01,\n", + " -2.2307e-01, -8.1679e-02, 2.2475e-04, 3.4012e-02, 2.5750e-01,\n", + " 3.0438e-01, 3.9098e-01, 2.1428e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006764649879187346\n", + "Grad encoder.fc1.bias: 0.0013489441480487585\n", + "Grad encoder.encoder.0.weight: 0.00015255817561410367\n", + "Grad encoder.encoder.0.bias: 0.0017504527932032943\n", + "Grad encoder.encoder.2.weight: 0.00010612914047669619\n", + "Grad encoder.encoder.2.bias: 0.0016444763168692589\n", + "Grad encoder.encoder.4.weight: 0.00022202983382157981\n", + "Grad encoder.encoder.4.bias: 0.004132790025323629\n", + "Grad decoder.fc1.0.weight: 0.00012608185352291912\n", + "Grad decoder.fc1.0.bias: 0.0012577483430504799\n", + "Grad decoder.fc1.2.weight: 0.0001706965413177386\n", + "Grad decoder.fc1.2.bias: 0.0012963574845343828\n", + "Grad decoder.fc1.4.weight: 9.763686830410734e-05\n", + "Grad decoder.fc1.4.bias: 0.0009026436600834131\n", + "Grad decoder.fc2.weight: 0.00012838515976909548\n", + "Grad decoder.fc2.bias: 0.0021835057996213436\n", + "Grad _memory_unit.weight_ih_l0: 2.9393368095043115e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00022046163212507963\n", + "Grad _memory_unit.bias_hh_l0: 0.00011021042882930487\n", + "Grad _memory_unit.weight_ih_l1: 1.0389390808995813e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00026871083537116647\n", + "Grad _memory_unit.bias_hh_l1: 0.00014032030594535172\n", + "Data X Sample: tensor([[1.5785, 1.6459, 1.8708, 1.9329, 2.0506, 2.0773, 1.9782, 2.5099, 4.0765,\n", + " 4.1799, 4.1589, 4.2572, 4.0524, 3.9616, 3.7349, 3.6404, 3.5614, 3.5438,\n", + " 3.4837, 3.4739, 3.4743, 3.3404, 2.9375, 2.7638, 2.8415, 2.7895, 2.8131,\n", + " 2.8672, 2.9037, 3.1343, 3.0866, 3.2497, 3.7599, 2.7714, 4.4954, 4.7283,\n", + " 5.1364, 5.5708, 5.8377, 5.8076, 1.1932, 0.6412, 0.6588, 1.2228, 1.8037,\n", + " 1.8413, 1.2170, 1.9548]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0055, -0.3715, 0.4144, 1.2409, -0.1049, 1.0519, 0.0327, 0.0597,\n", + " 0.0527, 0.3241, 0.2685, -0.4186, 0.6401, -1.0256, -0.4766, 0.0394,\n", + " -0.5879, 0.3952, 0.6873, 0.3647, -0.5086, 0.5931, 0.1683, -0.3789,\n", + " 0.2555, 0.5026, -0.1514, -0.6639, -0.7501, -0.9139, 0.3319, 0.3230,\n", + " 0.2274, -0.3634, -0.0711, 0.4679, -1.0138, -0.0140, -0.7911, 0.0856,\n", + " -0.1090, -0.2890, 1.0446]], device='cuda:0')\n", + "Prediction Sample: tensor([[-2.0443e-01, -2.3238e-01, -1.3881e-01, -1.8424e-01, -1.5919e-01,\n", + " 7.3777e-03, 1.0750e-01, 3.0942e-01, 9.9513e-02, 1.2788e-01,\n", + " 2.4487e-01, -1.5899e-01, -1.3460e-01, -1.9417e-01, -1.5445e-01,\n", + " -1.9431e-01, -1.2019e-01, -3.8520e-02, -1.1432e-01, -5.2816e-02,\n", + " -3.9331e-02, 2.2692e-02, -4.6589e-02, 2.8336e-02, 2.4811e-02,\n", + " 1.0763e-01, 6.0201e-02, 1.4715e-02, -1.4420e-01, -1.3093e-01,\n", + " -1.9752e-01, -2.2169e-01, -1.8048e-01, -2.0951e-01, -1.1721e-01,\n", + " -2.2977e-01, -9.0133e-02, -1.1802e-04, 4.3039e-02, 2.5306e-01,\n", + " 2.9656e-01, 3.8918e-01, 2.0837e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0021486128680408\n", + "Grad encoder.fc1.bias: 0.0013195722131058574\n", + "Grad encoder.encoder.0.weight: 0.0004321392625570297\n", + "Grad encoder.encoder.0.bias: 0.0014794659800827503\n", + "Grad encoder.encoder.2.weight: 0.00033536410774104297\n", + "Grad encoder.encoder.2.bias: 0.0015787844313308597\n", + "Grad encoder.encoder.4.weight: 0.0005928489845246077\n", + "Grad encoder.encoder.4.bias: 0.0022403448820114136\n", + "Grad decoder.fc1.0.weight: 0.00013286534522194415\n", + "Grad decoder.fc1.0.bias: 0.000837614992633462\n", + "Grad decoder.fc1.2.weight: 0.00012872852676082402\n", + "Grad decoder.fc1.2.bias: 0.0014595924876630306\n", + "Grad decoder.fc1.4.weight: 8.569702913518995e-05\n", + "Grad decoder.fc1.4.bias: 0.0012164709623903036\n", + "Grad decoder.fc2.weight: 0.00018351065227761865\n", + "Grad decoder.fc2.bias: 0.002053201198577881\n", + "Grad _memory_unit.weight_ih_l0: 0.00015374828944914043\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00019921554485335946\n", + "Grad _memory_unit.bias_hh_l0: 0.0001079025532817468\n", + "Grad _memory_unit.weight_ih_l1: 2.6880861696554348e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00018970289966091514\n", + "Grad _memory_unit.bias_hh_l1: 9.917585703078657e-05\n", + "Data X Sample: tensor([[-0.0074, 0.0073, -0.0075, 0.0044, 0.0000, -0.0059, -0.0015, -0.0014,\n", + " 0.0049, 0.0032, 0.0190, -0.0019, -0.0089, -0.0191, -0.0101, 0.0027,\n", + " 0.0157, 0.0213, 0.0268, 0.0279, 0.0221, 0.0092, 0.0096, -0.0038,\n", + " 0.0131, 0.0157, 0.0160, 0.0530, -0.0347, -0.0033, 0.0035, 0.0249,\n", + " 0.0000, 0.0092, -0.0123, 0.0413, 0.0079, 0.0265, 0.0190, -0.0028,\n", + " 0.0286, 0.0139, 0.0121, -0.0086, 0.0119, 0.0229, -0.0340, -0.0235]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4914, 0.8903, -0.5702, 0.9730, -0.6130, -1.5932, -1.8889, -0.8783,\n", + " -1.9663, -0.7151, -0.7395, 0.1198, 0.4057, 0.4572, 2.4028, 0.4719,\n", + " 0.7140, 1.3231, 1.1988, 1.8941, 2.1684, 0.8584, 1.2808, 1.6314,\n", + " 1.1122, 0.1806, -1.1492, -1.2320, 0.2681, 0.5411, -0.3688, 0.4592,\n", + " -0.4136, 0.9429, 0.5507, 1.1868, -0.5037, -0.6532, -0.5690, -0.8554,\n", + " -0.8486, -0.3644, -0.1197]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 1.1261, 0.9195, 0.2173, 0.7445, -0.0046, -0.4703, -1.0328, -1.2478,\n", + " -0.6747, -0.7610, -0.7028, 0.4420, 0.3487, 0.7416, 0.5453, 0.6202,\n", + " 0.7758, 0.2054, 0.3016, 0.2857, 0.1945, 0.1228, 0.2059, 0.0731,\n", + " 0.0951, 0.0820, 0.1328, 0.2526, 0.7562, 1.0296, 0.8113, 0.6426,\n", + " 0.7860, 0.7373, 0.4908, 0.3608, -0.0740, -0.1759, 0.0041, -0.9348,\n", + " -0.8028, -0.7371, -0.6978]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 9.88220126600936e-05\n", + "Grad encoder.fc1.bias: 0.000708574487362057\n", + "Grad encoder.encoder.0.weight: 3.446824484854005e-05\n", + "Grad encoder.encoder.0.bias: 0.0004082880332134664\n", + "Grad encoder.encoder.2.weight: 3.1687926821177825e-05\n", + "Grad encoder.encoder.2.bias: 0.0003556412411853671\n", + "Grad encoder.encoder.4.weight: 8.467234874842688e-05\n", + "Grad encoder.encoder.4.bias: 0.0006392998620867729\n", + "Grad decoder.fc1.0.weight: 4.707570042228326e-05\n", + "Grad decoder.fc1.0.bias: 0.0003369800397194922\n", + "Grad decoder.fc1.2.weight: 6.314988422673196e-05\n", + "Grad decoder.fc1.2.bias: 0.00043330047628842294\n", + "Grad decoder.fc1.4.weight: 5.1890139729948714e-05\n", + "Grad decoder.fc1.4.bias: 0.0004677425604313612\n", + "Grad decoder.fc2.weight: 0.00013880546612199396\n", + "Grad decoder.fc2.bias: 0.0018872054060921073\n", + "Grad _memory_unit.weight_ih_l0: 1.8084372641169466e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.834420491941273e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.7574554880848154e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.69589383303537e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.891454879427329e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.3600004573818296e-05\n", + "Data X Sample: tensor([[-0.0085, 0.0131, 0.0030, 0.0066, -0.0068, 0.0029, -0.0046, 0.0071,\n", + " 0.0171, 0.0032, 0.0095, 0.0078, 0.0067, -0.0055, 0.0101, -0.0096,\n", + " -0.0236, -0.0309, -0.0372, -0.0316, -0.0196, -0.0184, -0.0096, -0.0134,\n", + " -0.0094, -0.0235, -0.0027, 0.0000, -0.0139, 0.0000, 0.0105, -0.0028,\n", + " -0.0198, -0.0092, 0.0196, 0.0365, -0.0138, -0.0106, 0.0000, 0.0000,\n", + " 0.0286, 0.0219, 0.0162, 0.0086, 0.0277, 0.0057, 0.0000, 0.0078]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.8301, -0.0965, -0.0377, -0.4031, 0.0161, -1.7267, -0.6035, -0.6232,\n", + " 0.1385, -0.3575, -0.5213, 0.7470, 0.5383, 0.7948, -0.7071, 1.0176,\n", + " 0.6370, 1.1519, 0.5734, 1.5160, -0.1372, 0.4351, 0.3423, -0.2336,\n", + " -0.0066, -1.6880, 0.3609, -0.2049, 0.7275, 1.1881, -0.1548, 0.3833,\n", + " 0.6306, 0.7215, 0.4995, 1.0405, 0.5021, -0.1011, 1.1148, -0.7625,\n", + " -0.3886, -0.3976, -0.8315]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 1.1115, 0.8905, 0.2002, 0.7079, -0.0541, -0.4849, -1.0235, -1.2380,\n", + " -0.6790, -0.7652, -0.7093, 0.4300, 0.3450, 0.7440, 0.5401, 0.6015,\n", + " 0.7588, 0.1835, 0.2875, 0.2616, 0.1861, 0.1152, 0.2025, 0.0585,\n", + " 0.0829, 0.0515, 0.1611, 0.2480, 0.7808, 1.0496, 0.7980, 0.6456,\n", + " 0.7782, 0.7102, 0.4791, 0.3524, -0.0657, -0.1747, 0.0125, -0.9240,\n", + " -0.7992, -0.7186, -0.6829]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0011103699216619134\n", + "Grad encoder.fc1.bias: 0.0006555929430760443\n", + "Grad encoder.encoder.0.weight: 0.00026976733352057636\n", + "Grad encoder.encoder.0.bias: 0.0010662751737982035\n", + "Grad encoder.encoder.2.weight: 0.00028771074721589684\n", + "Grad encoder.encoder.2.bias: 0.0018524930346757174\n", + "Grad encoder.encoder.4.weight: 0.0006277079228311777\n", + "Grad encoder.encoder.4.bias: 0.007343790493905544\n", + "Grad decoder.fc1.0.weight: 9.647777915233746e-05\n", + "Grad decoder.fc1.0.bias: 0.0008704446954652667\n", + "Grad decoder.fc1.2.weight: 0.0001106171403080225\n", + "Grad decoder.fc1.2.bias: 0.001212582690641284\n", + "Grad decoder.fc1.4.weight: 8.460180833935738e-05\n", + "Grad decoder.fc1.4.bias: 0.0010214211652055383\n", + "Grad decoder.fc2.weight: 0.00016752352530602366\n", + "Grad decoder.fc2.bias: 0.0024810023605823517\n", + "Grad _memory_unit.weight_ih_l0: 0.00018402525165583938\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0006243293173611164\n", + "Grad _memory_unit.bias_hh_l0: 0.000317291880492121\n", + "Grad _memory_unit.weight_ih_l1: 3.1169442081591114e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0005289202672429383\n", + "Grad _memory_unit.bias_hh_l1: 0.00026621061260811985\n", + "Data X Sample: tensor([[1.5966, 1.8891, 2.0706, 2.1690, 2.3187, 2.4530, 2.5267, 2.6391, 2.6900,\n", + " 2.6286, 2.7028, 2.6603, 2.6520, 2.5302, 2.4488, 2.4137, 2.4010, 2.5263,\n", + " 2.4801, 2.5887, 2.6327, 2.6347, 2.5303, 2.5920, 2.6219, 2.6223, 2.5894,\n", + " 2.6062, 2.3625, 2.4563, 2.4532, 2.4069, 2.2660, 1.5035, 1.9536, 1.8290,\n", + " 1.7502, 1.6538, 1.6733, 1.5491, 1.3459, 0.7627, 0.7619, 1.3519, 2.0376,\n", + " 2.2187, 1.3870, 2.1659]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.6712, 0.3852, 0.4777, 0.0902, 0.3872, -0.3272, -0.4547, -0.6400,\n", + " 0.0552, 0.1009, -0.0251, -0.9357, -0.6439, -0.5013, 0.1516, 0.3873,\n", + " 0.0440, -0.9102, -0.7136, -1.1099, -0.2926, 0.1769, -0.4092, 0.9101,\n", + " 0.1960, -0.6952, 0.4694, -0.0502, 0.7354, 0.3077, -1.1874, 0.3259,\n", + " -0.5847, 0.5664, -1.0207, -0.4794, -0.0333, -0.0920, 0.5660, -0.9719,\n", + " 0.7818, -0.1631, 0.4774]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4993, 0.4565, 0.0865, 0.4128, 0.1464, -0.1723, -0.4714, -0.6352,\n", + " -0.2483, -0.3026, -0.2910, 0.2417, 0.2000, 0.3517, 0.3152, 0.3635,\n", + " 0.3954, 0.1716, 0.1827, 0.1691, 0.0810, 0.0523, 0.1307, -0.0077,\n", + " 0.0374, 0.0931, -0.0954, 0.0936, 0.2415, 0.4264, 0.3831, 0.2676,\n", + " 0.3865, 0.4289, 0.1953, 0.1633, -0.0196, -0.0612, -0.0379, -0.4291,\n", + " -0.3862, -0.3953, -0.3726]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0011048479937016964\n", + "Grad encoder.fc1.bias: 0.0007888565887697041\n", + "Grad encoder.encoder.0.weight: 0.0002500708505976945\n", + "Grad encoder.encoder.0.bias: 0.0011479959357529879\n", + "Grad encoder.encoder.2.weight: 0.0002653895353432745\n", + "Grad encoder.encoder.2.bias: 0.0018913139356300235\n", + "Grad encoder.encoder.4.weight: 0.0005644333432428539\n", + "Grad encoder.encoder.4.bias: 0.006872514262795448\n", + "Grad decoder.fc1.0.weight: 9.558015881339088e-05\n", + "Grad decoder.fc1.0.bias: 0.0008572300430387259\n", + "Grad decoder.fc1.2.weight: 0.0001080052024917677\n", + "Grad decoder.fc1.2.bias: 0.0009505075868219137\n", + "Grad decoder.fc1.4.weight: 8.271611295640469e-05\n", + "Grad decoder.fc1.4.bias: 0.0007824668427929282\n", + "Grad decoder.fc2.weight: 0.0001596763322595507\n", + "Grad decoder.fc2.bias: 0.0023381204809993505\n", + "Grad _memory_unit.weight_ih_l0: 0.00017144887533504516\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0005787971895188093\n", + "Grad _memory_unit.bias_hh_l0: 0.0002961300197057426\n", + "Grad _memory_unit.weight_ih_l1: 2.8643786208704114e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00048077068640850484\n", + "Grad _memory_unit.bias_hh_l1: 0.00024536505225114524\n", + "Data X Sample: tensor([[1.4905, 1.7638, 1.8978, 1.9176, 2.1172, 2.3101, 2.3695, 2.4091, 2.5264,\n", + " 2.5102, 2.6013, 2.5454, 2.4656, 2.3993, 2.3983, 2.3618, 2.3161, 2.3406,\n", + " 2.3996, 2.4623, 2.3505, 2.4586, 2.4724, 2.4126, 2.4380, 2.4108, 2.4322,\n", + " 2.5410, 2.2411, 2.3679, 2.3377, 2.3433, 2.2528, 1.4921, 1.9315, 1.7755,\n", + " 1.5594, 1.4815, 1.6226, 1.6001, 1.2647, 0.7189, 0.6831, 1.2486, 1.7878,\n", + " 1.9270, 1.3190, 1.9392]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1651, 0.4300, 0.4588, 0.5686, 1.3966, -1.2914, 0.4116, 0.1929,\n", + " 0.2978, 0.1449, 0.4572, 0.8758, 0.3746, 1.9186, -0.1625, 0.8664,\n", + " 0.5215, 0.5053, -0.1474, 0.8891, -0.3550, 0.5456, 0.9168, -0.2622,\n", + " 0.2029, -0.3506, -0.5481, -0.1420, 0.0395, 0.1389, 1.2728, -0.3087,\n", + " 0.3064, -0.5915, -1.4682, -0.1149, -0.9268, 0.8274, -0.7130, -0.1382,\n", + " 0.6024, 0.2901, -0.3595]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5064, 0.4674, 0.0881, 0.4124, 0.1460, -0.1831, -0.4847, -0.6476,\n", + " -0.2576, -0.3164, -0.3024, 0.2456, 0.2009, 0.3656, 0.3235, 0.3699,\n", + " 0.4035, 0.1709, 0.1899, 0.1786, 0.0844, 0.0537, 0.1327, -0.0138,\n", + " 0.0349, 0.0907, -0.0965, 0.0874, 0.2509, 0.4450, 0.3948, 0.2776,\n", + " 0.3982, 0.4380, 0.1936, 0.1727, -0.0180, -0.0626, -0.0282, -0.4475,\n", + " -0.3969, -0.4059, -0.3777]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000244571128860116\n", + "Grad encoder.fc1.bias: 0.00046844742610119283\n", + "Grad encoder.encoder.0.weight: 5.899342068005353e-05\n", + "Grad encoder.encoder.0.bias: 0.00029053876642137766\n", + "Grad encoder.encoder.2.weight: 3.6024313885718584e-05\n", + "Grad encoder.encoder.2.bias: 0.0002770310384221375\n", + "Grad encoder.encoder.4.weight: 9.685460099717602e-05\n", + "Grad encoder.encoder.4.bias: 0.0007877104799263179\n", + "Grad decoder.fc1.0.weight: 3.676596679724753e-05\n", + "Grad decoder.fc1.0.bias: 0.0002914115902967751\n", + "Grad decoder.fc1.2.weight: 5.5632346629863605e-05\n", + "Grad decoder.fc1.2.bias: 0.0004676274838857353\n", + "Grad decoder.fc1.4.weight: 5.0291862862650305e-05\n", + "Grad decoder.fc1.4.bias: 0.0004941984079778194\n", + "Grad decoder.fc2.weight: 0.00013127780403010547\n", + "Grad decoder.fc2.bias: 0.0027094162069261074\n", + "Grad _memory_unit.weight_ih_l0: 1.020282525132643e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.764568438986316e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.591768861748278e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.853862835967448e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.661052273353562e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.1005762139102444e-05\n", + "Data X Sample: tensor([[1.6072, 1.8905, 1.9925, 2.0226, 2.1616, 2.3690, 2.3819, 2.4020, 2.4312,\n", + " 2.5007, 2.5188, 2.5902, 2.4745, 2.5438, 2.4336, 2.3727, 2.3240, 2.3735,\n", + " 2.3397, 2.4418, 2.3751, 2.5015, 2.5182, 2.4832, 2.3892, 2.5205, 2.5228,\n", + " 2.5573, 2.2619, 2.2697, 2.0647, 2.0476, 1.7006, 1.1168, 1.5369, 1.5347,\n", + " 1.4414, 1.4709, 1.4198, 1.2994, 1.3172, 0.7647, 0.7215, 1.3835, 2.0297,\n", + " 1.9556, 1.3190, 1.9548]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1633, -0.0994, -0.4082, -0.0368, -0.1206, -1.9015, -0.3286, 0.0507,\n", + " -0.8067, -0.2099, -0.1783, 0.7975, -0.2517, -0.3802, -0.1177, 0.6463,\n", + " 0.3904, -0.1002, -1.3077, 0.2177, -1.1367, -0.1191, -1.3115, -0.1162,\n", + " 0.2036, 5.6800, -0.0422, -0.9829, -0.7249, -0.0438, -0.3918, 0.1959,\n", + " 0.2907, 0.0674, 0.1243, 0.0158, -0.0107, -0.0549, -0.3712, -0.2510,\n", + " -0.3065, 0.1394, 0.3717]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4363, 0.4006, 0.0775, 0.3378, 0.1017, -0.1710, -0.4346, -0.5583,\n", + " -0.2312, -0.2732, -0.2709, 0.2020, 0.1753, 0.3288, 0.2744, 0.3153,\n", + " 0.3437, 0.1416, 0.1605, 0.1550, 0.0651, 0.0410, 0.1077, -0.0193,\n", + " 0.0268, 0.0761, -0.0761, 0.0769, 0.2364, 0.3919, 0.3410, 0.2403,\n", + " 0.3369, 0.3661, 0.1565, 0.1387, -0.0092, -0.0467, -0.0336, -0.3817,\n", + " -0.3285, -0.3409, -0.3240]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00011204631300643086\n", + "Grad encoder.fc1.bias: 0.00039659853791818023\n", + "Grad encoder.encoder.0.weight: 4.3679712689481676e-05\n", + "Grad encoder.encoder.0.bias: 0.00035236371331848204\n", + "Grad encoder.encoder.2.weight: 3.1793853850103915e-05\n", + "Grad encoder.encoder.2.bias: 0.00037270711618475616\n", + "Grad encoder.encoder.4.weight: 0.00011194508260814473\n", + "Grad encoder.encoder.4.bias: 0.0014706425135955215\n", + "Grad decoder.fc1.0.weight: 4.6705055865459144e-05\n", + "Grad decoder.fc1.0.bias: 0.00040541516500525177\n", + "Grad decoder.fc1.2.weight: 6.29685673629865e-05\n", + "Grad decoder.fc1.2.bias: 0.0005791675648652017\n", + "Grad decoder.fc1.4.weight: 5.6976841733558103e-05\n", + "Grad decoder.fc1.4.bias: 0.0005980150308459997\n", + "Grad decoder.fc2.weight: 0.00012150865950388834\n", + "Grad decoder.fc2.bias: 0.00199132296256721\n", + "Grad _memory_unit.weight_ih_l0: 2.3963724743225612e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00012431948562152684\n", + "Grad _memory_unit.bias_hh_l0: 6.55907642794773e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.158854375826195e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00012958902516402304\n", + "Grad _memory_unit.bias_hh_l1: 6.908670184202492e-05\n", + "Data X Sample: tensor([[1.4311, 1.5148, 1.7010, 1.7798, 1.8492, 1.9727, 2.1015, 2.0584, 2.0089,\n", + " 2.9762, 3.7465, 4.0800, 3.9281, 3.7271, 3.6618, 3.4189, 3.4828, 3.4393,\n", + " 3.3515, 3.2712, 3.2976, 3.2363, 2.7279, 2.7676, 2.7364, 2.7895, 2.7998,\n", + " 2.7857, 2.8239, 2.9312, 3.0026, 3.0037, 3.5245, 2.5357, 4.2969, 4.7039,\n", + " 4.9378, 5.2236, 5.7109, 5.6459, 1.0786, 0.5875, 0.6649, 1.0764, 1.6174,\n", + " 1.8298, 1.1150, 1.5795]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3887, -0.9233, 0.6005, -0.6442, 0.1739, -0.3617, 0.5865, -0.7281,\n", + " -0.3995, 0.2180, -0.0833, 0.0890, -0.0951, -0.1808, -1.8564, -0.2914,\n", + " -1.0016, -1.1681, 0.5380, -0.2364, -1.7690, 0.1174, 0.9159, 0.0720,\n", + " 1.2842, 0.3057, 0.7018, -0.4590, 0.7320, -1.2035, -0.4398, -0.1862,\n", + " 0.7835, -0.8916, -0.1818, -0.5533, -0.9034, 1.3406, -0.7564, 0.6852,\n", + " 0.6705, 1.5176, 1.0288]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2158, -0.2739, -0.1535, -0.1987, -0.1753, 0.0239, 0.1302, 0.3461,\n", + " 0.1432, 0.1640, 0.2936, -0.1752, -0.1400, -0.1998, -0.1578, -0.2341,\n", + " -0.1461, -0.0418, -0.1042, -0.0652, -0.0342, 0.0187, -0.0618, 0.0209,\n", + " 0.0150, 0.1127, 0.0538, 0.0050, -0.1733, -0.1604, -0.2158, -0.2169,\n", + " -0.1898, -0.2354, -0.1398, -0.2456, -0.0978, 0.0200, 0.0480, 0.2837,\n", + " 0.3524, 0.4303, 0.2420]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.001296759583055973\n", + "Grad encoder.fc1.bias: 0.0012328200973570347\n", + "Grad encoder.encoder.0.weight: 0.00034407200291752815\n", + "Grad encoder.encoder.0.bias: 0.0022261093836277723\n", + "Grad encoder.encoder.2.weight: 0.0002708456595428288\n", + "Grad encoder.encoder.2.bias: 0.0028797253035008907\n", + "Grad encoder.encoder.4.weight: 0.00044192661880515516\n", + "Grad encoder.encoder.4.bias: 0.00874982587993145\n", + "Grad decoder.fc1.0.weight: 0.00023930202587507665\n", + "Grad decoder.fc1.0.bias: 0.0023686550557613373\n", + "Grad decoder.fc1.2.weight: 0.0002699210017453879\n", + "Grad decoder.fc1.2.bias: 0.0013528986601158977\n", + "Grad decoder.fc1.4.weight: 0.00015313723997678608\n", + "Grad decoder.fc1.4.bias: 0.000664668099489063\n", + "Grad decoder.fc2.weight: 0.00018503650790080428\n", + "Grad decoder.fc2.bias: 0.0018944487674161792\n", + "Grad _memory_unit.weight_ih_l0: 4.892385550192557e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0005924452561885118\n", + "Grad _memory_unit.bias_hh_l0: 0.0003030266088899225\n", + "Grad _memory_unit.weight_ih_l1: 2.0661358576035127e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0006421681027859449\n", + "Grad _memory_unit.bias_hh_l1: 0.0003412242513149977\n", + "Data X Sample: tensor([[1.5997, 1.8454, 2.0721, 2.2018, 2.3955, 2.4780, 2.5714, 2.5695, 2.6656,\n", + " 2.7313, 2.8075, 2.7362, 2.7230, 2.5983, 2.5496, 2.5560, 2.5237, 2.4818,\n", + " 2.5131, 2.4995, 2.5272, 2.5122, 2.5303, 2.5271, 2.4793, 2.4865, 2.5148,\n", + " 2.4839, 2.2931, 2.4269, 2.3587, 2.3626, 2.1274, 1.3365, 1.8261, 1.7293,\n", + " 1.6754, 1.6326, 1.6100, 1.4810, 1.4175, 0.7866, 0.7922, 1.3778, 1.9424,\n", + " 2.2758, 1.4482, 2.0643]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.5394e+00, 1.4444e+00, 1.3994e+00, 5.9576e-01, 8.5004e-01,\n", + " 1.1793e-01, 1.0904e+00, 1.0069e-01, -4.8550e-01, 2.5290e-01,\n", + " -4.9478e-02, 4.4079e-01, -3.2064e-01, -4.7086e-02, -1.1598e+00,\n", + " -1.1374e-01, -9.5381e-01, 1.2628e+00, -6.6115e-02, 3.1213e-01,\n", + " 1.9477e-01, 2.8169e+00, -5.1038e-01, -9.1591e-01, 1.0835e-01,\n", + " 8.4032e-02, 3.1483e-01, -4.5267e-01, -4.7007e-01, -1.1592e+00,\n", + " -5.9142e-01, -8.1911e-01, 6.8479e-01, 1.0423e-01, -7.6879e-02,\n", + " 4.4566e-01, 1.3434e-01, 7.3568e-01, -1.8131e+00, 1.9369e-03,\n", + " 3.5269e-01, 1.0421e-01, 6.0404e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 4.4159e-01, 4.1018e-01, 9.8618e-02, 3.2731e-01, 8.9652e-02,\n", + " -1.9949e-01, -4.6278e-01, -5.7159e-01, -2.5759e-01, -2.9424e-01,\n", + " -2.9226e-01, 2.0396e-01, 1.8360e-01, 3.5776e-01, 2.7411e-01,\n", + " 3.1505e-01, 3.4677e-01, 1.3893e-01, 1.6658e-01, 1.7599e-01,\n", + " 6.8911e-02, 4.4680e-02, 9.1704e-02, -2.5035e-02, 3.3794e-02,\n", + " 7.7155e-02, -6.7932e-02, 7.7597e-02, 2.7956e-01, 4.2615e-01,\n", + " 3.6591e-01, 2.5429e-01, 3.4221e-01, 3.6659e-01, 1.4537e-01,\n", + " 1.4997e-01, -3.3958e-05, -2.9782e-02, -2.7235e-02, -3.9484e-01,\n", + " -3.2939e-01, -3.5847e-01, -3.3609e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0020506177097558975\n", + "Grad encoder.fc1.bias: 0.001378285582177341\n", + "Grad encoder.encoder.0.weight: 0.0005456498474813998\n", + "Grad encoder.encoder.0.bias: 0.0027817883528769016\n", + "Grad encoder.encoder.2.weight: 0.00039824569830670953\n", + "Grad encoder.encoder.2.bias: 0.003581860102713108\n", + "Grad encoder.encoder.4.weight: 0.0007895267335698009\n", + "Grad encoder.encoder.4.bias: 0.013147838413715363\n", + "Grad decoder.fc1.0.weight: 0.00025224126875400543\n", + "Grad decoder.fc1.0.bias: 0.00271693617105484\n", + "Grad decoder.fc1.2.weight: 0.00025202432880178094\n", + "Grad decoder.fc1.2.bias: 0.0020313174463808537\n", + "Grad decoder.fc1.4.weight: 0.00014031017781235278\n", + "Grad decoder.fc1.4.bias: 0.0012247114209458232\n", + "Grad decoder.fc2.weight: 0.0002002438995987177\n", + "Grad decoder.fc2.bias: 0.0023812311701476574\n", + "Grad _memory_unit.weight_ih_l0: 0.00020251492969691753\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0011242973851040006\n", + "Grad _memory_unit.bias_hh_l0: 0.000580615596845746\n", + "Grad _memory_unit.weight_ih_l1: 3.8544865674339235e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0010251870844513178\n", + "Grad _memory_unit.bias_hh_l1: 0.0005492945201694965\n", + "Data X Sample: tensor([[2.5121, 2.9640, 3.1916, 3.2536, 3.3090, 3.4180, 3.5374, 3.4781, 3.7225,\n", + " 3.8434, 3.9368, 3.9534, 3.8726, 3.6589, 3.5105, 3.5871, 3.5441, 3.4490,\n", + " 3.5064, 3.4200, 3.3884, 3.2792, 3.1448, 2.9108, 2.8002, 2.7843, 2.8424,\n", + " 2.8183, 2.6643, 2.7544, 2.6946, 2.8103, 2.7281, 1.8857, 3.3262, 3.5194,\n", + " 3.7874, 4.1132, 4.5637, 4.5593, 1.8661, 1.1092, 1.1358, 1.9519, 2.6837,\n", + " 3.0592, 2.0941, 2.9400]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 2.8552e-01, -8.0987e-01, 1.1153e+00, -5.3759e-01, 7.1691e-01,\n", + " 1.7533e-01, -7.2148e-02, -1.7305e-01, -5.5026e-01, -4.8243e-01,\n", + " 2.7277e-01, 2.9688e-01, 1.7560e-01, -1.9946e-01, 1.7641e+00,\n", + " 9.0965e-01, 1.8369e+00, -2.1111e+00, 2.8222e+00, 2.4130e+00,\n", + " 1.7608e+00, 4.6939e-01, 1.9003e+00, 2.7814e+00, 4.1895e+00,\n", + " 4.7872e-02, 5.1048e-01, -1.5291e-01, -5.0785e-01, -4.0964e-01,\n", + " -2.9661e-01, 1.1323e+00, -3.8217e-01, 4.6092e-02, 1.4853e+00,\n", + " -8.4280e-01, -8.4715e-01, 8.0236e-01, 4.4037e-01, -1.8539e-01,\n", + " -2.4162e-03, 5.0485e-02, -5.9398e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-1.9701e-01, -2.4712e-01, -1.2102e-01, -1.7098e-01, -1.6557e-01,\n", + " 4.2215e-02, 1.1573e-01, 3.1284e-01, 1.3105e-01, 1.5797e-01,\n", + " 2.6478e-01, -1.5841e-01, -1.1876e-01, -1.7023e-01, -1.4729e-01,\n", + " -1.9942e-01, -1.4674e-01, -3.7619e-02, -8.5953e-02, -7.6695e-02,\n", + " -2.8319e-02, 9.6770e-03, -6.7427e-02, 2.0874e-02, 6.0615e-03,\n", + " 8.6682e-02, 3.0842e-02, 8.2054e-05, -1.4369e-01, -1.2913e-01,\n", + " -1.9809e-01, -1.7894e-01, -1.6014e-01, -2.2736e-01, -1.2383e-01,\n", + " -2.3422e-01, -6.6783e-02, 3.6458e-02, 1.7593e-02, 2.8333e-01,\n", + " 3.3705e-01, 3.7712e-01, 2.0723e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006842942675575614\n", + "Grad encoder.fc1.bias: 0.0005348306731320918\n", + "Grad encoder.encoder.0.weight: 0.00016113181482069194\n", + "Grad encoder.encoder.0.bias: 0.0006146724335849285\n", + "Grad encoder.encoder.2.weight: 9.076163405552506e-05\n", + "Grad encoder.encoder.2.bias: 0.0005396895576268435\n", + "Grad encoder.encoder.4.weight: 0.0002345499087823555\n", + "Grad encoder.encoder.4.bias: 0.0016372798709198833\n", + "Grad decoder.fc1.0.weight: 7.498475315514952e-05\n", + "Grad decoder.fc1.0.bias: 0.0006221185903996229\n", + "Grad decoder.fc1.2.weight: 8.892182086128742e-05\n", + "Grad decoder.fc1.2.bias: 0.0008439375669695437\n", + "Grad decoder.fc1.4.weight: 6.436280091293156e-05\n", + "Grad decoder.fc1.4.bias: 0.0005875579663552344\n", + "Grad decoder.fc2.weight: 0.00013091602886561304\n", + "Grad decoder.fc2.bias: 0.0020031018648296595\n", + "Grad _memory_unit.weight_ih_l0: 1.4788050975766964e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.535057375207543e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.174049536231905e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.688307960052043e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011466875730548054\n", + "Grad _memory_unit.bias_hh_l1: 6.144677172414958e-05\n", + "Data X Sample: tensor([[1.8469, 1.6560, 1.9008, 2.0575, 2.1924, 2.1318, 2.2016, 3.5590, 4.2107,\n", + " 4.3253, 4.4952, 4.3916, 4.2654, 4.0924, 3.9089, 3.7403, 3.6338, 3.7256,\n", + " 3.6489, 3.5576, 3.4866, 3.3833, 3.0050, 2.7447, 2.7458, 2.8391, 2.8584,\n", + " 2.8387, 2.8170, 3.0393, 3.0866, 3.2110, 3.5047, 2.6249, 4.4709, 4.7380,\n", + " 5.0991, 5.5894, 6.2941, 6.0516, 1.1550, 0.6432, 0.6952, 1.2630, 1.7918,\n", + " 1.9442, 1.3530, 1.7984]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2721, -0.3447, -0.6611, -0.5379, -0.7145, -0.2167, 0.2078, 0.2543,\n", + " 0.4786, 0.0472, 0.4834, 0.7765, -0.6548, -0.2258, 0.4044, 0.2914,\n", + " 0.4775, 0.8837, -0.6575, 0.8905, 0.0415, 0.4288, 0.2464, -1.3032,\n", + " 0.5322, -0.0484, 0.3054, -0.6518, -1.6701, -0.1275, -0.8074, -0.1473,\n", + " -0.3803, -0.2537, -0.3597, -0.8325, 0.7686, 0.7579, -0.4066, 0.3833,\n", + " 0.2564, 0.3094, 0.1925]], device='cuda:0')\n", + "Prediction Sample: tensor([[-2.2723e-01, -2.4214e-01, -1.2156e-01, -1.3924e-01, -1.3580e-01,\n", + " 7.0888e-02, 1.3379e-01, 3.5271e-01, 1.3498e-01, 1.7840e-01,\n", + " 2.7917e-01, -1.7074e-01, -1.4541e-01, -1.8657e-01, -1.4468e-01,\n", + " -1.9512e-01, -1.4683e-01, -3.5177e-02, -1.1149e-01, -8.6351e-02,\n", + " -3.4328e-02, -5.2377e-03, -6.6529e-02, 2.6095e-02, 1.7331e-04,\n", + " 8.2065e-02, 9.4011e-03, -3.5458e-02, -1.7016e-01, -1.2801e-01,\n", + " -2.2019e-01, -1.9545e-01, -1.8351e-01, -2.5540e-01, -1.3199e-01,\n", + " -2.5883e-01, -5.2568e-02, 3.3130e-02, 1.0489e-02, 3.1414e-01,\n", + " 3.5838e-01, 3.8878e-01, 2.0256e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00126581359654665\n", + "Grad encoder.fc1.bias: 0.0008942248532548547\n", + "Grad encoder.encoder.0.weight: 0.00022009620442986488\n", + "Grad encoder.encoder.0.bias: 0.0009943144395947456\n", + "Grad encoder.encoder.2.weight: 0.0001337862340733409\n", + "Grad encoder.encoder.2.bias: 0.001148765441030264\n", + "Grad encoder.encoder.4.weight: 0.00037459618761204183\n", + "Grad encoder.encoder.4.bias: 0.0045216279104352\n", + "Grad decoder.fc1.0.weight: 0.00010150405432796106\n", + "Grad decoder.fc1.0.bias: 0.0009970009559765458\n", + "Grad decoder.fc1.2.weight: 0.00010290250065736473\n", + "Grad decoder.fc1.2.bias: 0.001131983706727624\n", + "Grad decoder.fc1.4.weight: 8.403068932238966e-05\n", + "Grad decoder.fc1.4.bias: 0.0009495413978584111\n", + "Grad decoder.fc2.weight: 0.0001803224004106596\n", + "Grad decoder.fc2.bias: 0.002356128301471472\n", + "Grad _memory_unit.weight_ih_l0: 4.115268893656321e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00031457433942705393\n", + "Grad _memory_unit.bias_hh_l0: 0.00016254690126515925\n", + "Grad _memory_unit.weight_ih_l1: 1.1844606888189446e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0003177945618517697\n", + "Grad _memory_unit.bias_hh_l1: 0.00017126681632362306\n", + "Data X Sample: tensor([[1.3812, 1.6080, 1.7701, 1.7820, 1.8645, 2.1215, 2.0830, 1.9690, 2.9756,\n", + " 4.0662, 4.2668, 4.0858, 4.0723, 3.7434, 3.6946, 3.5502, 3.4419, 3.4741,\n", + " 3.3639, 3.3940, 3.3884, 3.3006, 2.9038, 2.8020, 2.8396, 2.8861, 2.9756,\n", + " 3.0141, 2.8898, 3.0753, 3.1426, 3.2524, 3.5465, 2.5288, 4.2920, 4.6577,\n", + " 4.9870, 5.1865, 5.7426, 5.6629, 1.1359, 0.6651, 0.6851, 1.1367, 1.5262,\n", + " 1.7441, 1.1762, 1.6499]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.9680, -0.5982, -0.1486, 0.1519, 0.1926, -0.6466, 0.2324, 0.7525,\n", + " -0.0788, 0.6936, 0.2498, 1.2040, -0.9426, -0.6301, 0.3600, 0.0359,\n", + " -0.2650, -0.0725, -0.4641, 0.4659, -1.4356, -0.3754, -0.9781, -1.0149,\n", + " 0.9542, 0.5670, 0.6609, -0.4235, 0.8712, -0.9395, 0.2142, -0.6127,\n", + " -0.6608, 0.4971, 0.3385, -0.5483, -0.7301, -0.0140, 0.7332, 0.7364,\n", + " 0.1309, 0.6764, 0.2660]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2311, -0.2338, -0.1088, -0.1101, -0.1030, 0.0963, 0.1311, 0.3634,\n", + " 0.1431, 0.1987, 0.2754, -0.1694, -0.1546, -0.1883, -0.1437, -0.1895,\n", + " -0.1446, -0.0352, -0.1090, -0.0895, -0.0363, -0.0162, -0.0710, 0.0238,\n", + " 0.0019, 0.0736, -0.0096, -0.0530, -0.1775, -0.1355, -0.2293, -0.1901,\n", + " -0.1976, -0.2632, -0.1412, -0.2597, -0.0416, 0.0454, 0.0017, 0.3209,\n", + " 0.3640, 0.3836, 0.1962]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006946527282707393\n", + "Grad encoder.fc1.bias: 0.0006281316746026278\n", + "Grad encoder.encoder.0.weight: 0.00021879642736166716\n", + "Grad encoder.encoder.0.bias: 0.001010384876281023\n", + "Grad encoder.encoder.2.weight: 0.00015506338968407363\n", + "Grad encoder.encoder.2.bias: 0.0012265502009540796\n", + "Grad encoder.encoder.4.weight: 0.00044969096779823303\n", + "Grad encoder.encoder.4.bias: 0.00525397714227438\n", + "Grad decoder.fc1.0.weight: 0.00011554345837794244\n", + "Grad decoder.fc1.0.bias: 0.0009500047308392823\n", + "Grad decoder.fc1.2.weight: 0.00011670451203826815\n", + "Grad decoder.fc1.2.bias: 0.000992494635283947\n", + "Grad decoder.fc1.4.weight: 0.00010890084377024323\n", + "Grad decoder.fc1.4.bias: 0.0009911067318171263\n", + "Grad decoder.fc2.weight: 0.0001889850536826998\n", + "Grad decoder.fc2.bias: 0.0019679737742990255\n", + "Grad _memory_unit.weight_ih_l0: 7.769517105771229e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0004547284625004977\n", + "Grad _memory_unit.bias_hh_l0: 0.00023138364485930651\n", + "Grad _memory_unit.weight_ih_l1: 1.6760939615778625e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0004439122276380658\n", + "Grad _memory_unit.bias_hh_l1: 0.00023573920771013945\n", + "Data X Sample: tensor([[1.4841, 1.5046, 1.6920, 1.7995, 1.8457, 2.0699, 2.0799, 2.1550, 3.7591,\n", + " 4.2637, 4.3397, 4.3527, 4.0280, 3.9997, 3.8459, 3.7526, 3.7297, 3.6037,\n", + " 3.6737, 3.6618, 3.6411, 3.4844, 3.1809, 2.9833, 2.8002, 2.9514, 2.8691,\n", + " 2.8142, 2.9974, 3.0655, 3.2930, 3.4376, 3.8743, 2.7965, 4.5714, 4.9107,\n", + " 5.1482, 5.4569, 6.1229, 5.8700, 1.0166, 0.6552, 0.6407, 1.0821, 1.6095,\n", + " 1.7212, 1.1762, 1.6577]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3964, -0.0811, 0.8360, -0.5013, 0.5611, -0.1102, 0.2008, 0.0662,\n", + " 0.6789, 0.0467, 0.3053, -0.1070, 0.6914, -0.1846, -1.4929, -0.5806,\n", + " 0.7834, -0.6465, -0.3138, 0.1705, 0.2574, 0.4761, 1.0261, -0.4998,\n", + " -1.2869, -0.6827, -0.0450, 0.1520, -0.1050, -0.5593, -0.1155, 0.9632,\n", + " -0.6915, -0.4960, 0.3846, 0.0203, -0.8819, 0.6361, 0.2630, 0.0182,\n", + " 0.4235, 0.3346, -0.1003]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2402, -0.2315, -0.1059, -0.0878, -0.0769, 0.1220, 0.1375, 0.3808,\n", + " 0.1596, 0.2225, 0.2835, -0.1699, -0.1655, -0.1982, -0.1458, -0.1910,\n", + " -0.1420, -0.0364, -0.1068, -0.0878, -0.0404, -0.0281, -0.0772, 0.0169,\n", + " 0.0046, 0.0696, -0.0252, -0.0753, -0.1951, -0.1512, -0.2462, -0.1946,\n", + " -0.2147, -0.2768, -0.1547, -0.2649, -0.0355, 0.0557, 0.0023, 0.3297,\n", + " 0.3753, 0.3892, 0.2040]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0014626093907281756\n", + "Grad encoder.fc1.bias: 0.0011944936122745275\n", + "Grad encoder.encoder.0.weight: 0.00035001104697585106\n", + "Grad encoder.encoder.0.bias: 0.0014967159368097782\n", + "Grad encoder.encoder.2.weight: 0.00019098579650744796\n", + "Grad encoder.encoder.2.bias: 0.0014340708730742335\n", + "Grad encoder.encoder.4.weight: 0.00048422819236293435\n", + "Grad encoder.encoder.4.bias: 0.0026245792396366596\n", + "Grad decoder.fc1.0.weight: 0.00013949157437309623\n", + "Grad decoder.fc1.0.bias: 0.0009841527789831161\n", + "Grad decoder.fc1.2.weight: 0.00010135090269614011\n", + "Grad decoder.fc1.2.bias: 0.0012816810049116611\n", + "Grad decoder.fc1.4.weight: 8.727204112801701e-05\n", + "Grad decoder.fc1.4.bias: 0.00099213607609272\n", + "Grad decoder.fc2.weight: 0.00013126595877110958\n", + "Grad decoder.fc2.bias: 0.0020082825794816017\n", + "Grad _memory_unit.weight_ih_l0: 3.7128105759620667e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00013863791537005454\n", + "Grad _memory_unit.bias_hh_l0: 6.996309821261093e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.6592119209235534e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00020945636788383126\n", + "Grad _memory_unit.bias_hh_l1: 0.00010979649232467636\n", + "Data X Sample: tensor([[1.3558, 1.3546, 1.4786, 1.5743, 1.6733, 1.8062, 1.9566, 1.9846, 3.4760,\n", + " 4.0267, 4.1177, 3.9300, 3.8016, 3.8198, 3.6063, 3.5679, 3.4608, 3.4335,\n", + " 3.3412, 3.3047, 3.3393, 3.3420, 2.8845, 2.7905, 2.7721, 2.8731, 2.7785,\n", + " 2.8632, 2.8482, 2.9640, 3.2056, 3.1364, 3.4519, 2.5677, 4.1817, 4.6504,\n", + " 4.8277, 5.2607, 5.7173, 5.5466, 0.9354, 0.5596, 0.5477, 1.0046, 1.4271,\n", + " 1.6068, 1.0606, 1.5795]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1436, -0.0195, -0.1698, 0.2021, -0.4753, 0.4434, -0.3121, -0.3153,\n", + " -1.6465, 0.1230, -0.7233, 4.0892, 1.2400, -0.7625, -0.6106, -0.9726,\n", + " 0.5187, 0.5783, -0.8919, 0.0612, 0.2588, -0.1250, 0.2700, 0.1996,\n", + " 0.1976, 0.4044, 0.2808, 0.9821, 0.3657, 0.1478, -0.4157, -0.7304,\n", + " -0.3420, 0.3491, -0.0746, 0.7396, 0.0000, 0.4269, 0.5010, 0.0733,\n", + " -0.9847, 0.9755, -0.6129]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2432, -0.2487, -0.1196, -0.1044, -0.0818, 0.1072, 0.1414, 0.3823,\n", + " 0.1666, 0.2280, 0.2850, -0.1717, -0.1700, -0.2046, -0.1468, -0.2098,\n", + " -0.1446, -0.0310, -0.0996, -0.0864, -0.0396, -0.0234, -0.0702, 0.0130,\n", + " 0.0047, 0.0767, -0.0195, -0.0703, -0.1964, -0.1703, -0.2446, -0.1972,\n", + " -0.2237, -0.2707, -0.1574, -0.2543, -0.0558, 0.0539, 0.0131, 0.3235,\n", + " 0.3759, 0.4024, 0.2208]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004209234321024269\n", + "Grad encoder.fc1.bias: 0.00030111457454040647\n", + "Grad encoder.encoder.0.weight: 9.80094337137416e-05\n", + "Grad encoder.encoder.0.bias: 0.00033423519926145673\n", + "Grad encoder.encoder.2.weight: 4.6082543121883646e-05\n", + "Grad encoder.encoder.2.bias: 0.0003657349734567106\n", + "Grad encoder.encoder.4.weight: 8.65467227413319e-05\n", + "Grad encoder.encoder.4.bias: 0.0006422951119020581\n", + "Grad decoder.fc1.0.weight: 3.830891728284769e-05\n", + "Grad decoder.fc1.0.bias: 0.0002849122683983296\n", + "Grad decoder.fc1.2.weight: 4.0992003050632775e-05\n", + "Grad decoder.fc1.2.bias: 0.0005528401816263795\n", + "Grad decoder.fc1.4.weight: 5.062031414126977e-05\n", + "Grad decoder.fc1.4.bias: 0.0005157833220437169\n", + "Grad decoder.fc2.weight: 9.720043453853577e-05\n", + "Grad decoder.fc2.bias: 0.002132947789505124\n", + "Grad _memory_unit.weight_ih_l0: 5.799090558866737e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.911402230500244e-06\n", + "Grad _memory_unit.bias_hh_l0: 5.790308478026418e-06\n", + "Grad _memory_unit.weight_ih_l1: 4.964466825185809e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.2606541430577636e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.6974148568115197e-05\n", + "Data X Sample: tensor([[1.3197, 1.3589, 1.5116, 1.6399, 1.8150, 1.9373, 2.1230, 2.1422, 3.8031,\n", + " 4.3916, 4.4412, 4.4598, 4.1633, 3.9043, 3.6870, 3.8073, 3.7768, 3.6734,\n", + " 3.5663, 3.5688, 3.5921, 3.4583, 3.1110, 2.9203, 2.7758, 2.8940, 2.9037,\n", + " 2.9814, 3.0355, 3.0885, 3.3105, 3.3602, 3.9315, 2.8927, 4.6400, 4.8912,\n", + " 5.1050, 5.5125, 6.1609, 5.9353, 0.9784, 0.5676, 0.5598, 0.9357, 1.4033,\n", + " 1.5668, 1.1150, 1.6029]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0944, 0.0203, 1.0019, 0.6867, 1.3872, 0.9394, 1.3897, 0.4743,\n", + " 0.7030, 0.9719, 0.4296, 0.2626, -0.3065, 0.2504, 1.6607, -0.1405,\n", + " 2.0530, 0.6552, -1.7806, 0.1452, 0.9945, 0.2789, 0.0546, 0.8926,\n", + " 0.0751, -1.0045, 0.3074, 0.6290, -0.7691, -0.3438, -1.0540, -0.5417,\n", + " -0.1509, -0.0166, -0.1899, 0.4516, 0.0540, -0.9067, -0.7678, 0.4494,\n", + " 0.4644, 1.0834, 0.6275]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2548, -0.2624, -0.1304, -0.1063, -0.0708, 0.1096, 0.1489, 0.3965,\n", + " 0.1811, 0.2462, 0.2949, -0.1755, -0.1841, -0.2187, -0.1490, -0.2263,\n", + " -0.1454, -0.0309, -0.1002, -0.0821, -0.0425, -0.0269, -0.0693, 0.0064,\n", + " 0.0082, 0.0804, -0.0194, -0.0773, -0.2097, -0.1943, -0.2537, -0.2079,\n", + " -0.2428, -0.2770, -0.1687, -0.2513, -0.0662, 0.0548, 0.0233, 0.3252,\n", + " 0.3842, 0.4198, 0.2399]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003990793484263122\n", + "Grad encoder.fc1.bias: 0.0005764004890806973\n", + "Grad encoder.encoder.0.weight: 0.0001050228820531629\n", + "Grad encoder.encoder.0.bias: 0.0005298040923662484\n", + "Grad encoder.encoder.2.weight: 7.27527221897617e-05\n", + "Grad encoder.encoder.2.bias: 0.0005304186488501728\n", + "Grad encoder.encoder.4.weight: 0.0001801264879759401\n", + "Grad encoder.encoder.4.bias: 0.0014936765655875206\n", + "Grad decoder.fc1.0.weight: 7.729802746325731e-05\n", + "Grad decoder.fc1.0.bias: 0.000603202439378947\n", + "Grad decoder.fc1.2.weight: 0.00013137553469277918\n", + "Grad decoder.fc1.2.bias: 0.0010271461214870214\n", + "Grad decoder.fc1.4.weight: 0.000109389096905943\n", + "Grad decoder.fc1.4.bias: 0.0009402292198501527\n", + "Grad decoder.fc2.weight: 0.0001336963614448905\n", + "Grad decoder.fc2.bias: 0.0018872694345191121\n", + "Grad _memory_unit.weight_ih_l0: 1.233368311659433e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.638720515184104e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.3924214221769944e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.424349860229995e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010944443056359887\n", + "Grad _memory_unit.bias_hh_l1: 5.696849984815344e-05\n", + "Data X Sample: tensor([[1.4884, 1.5992, 1.8347, 1.9985, 2.0575, 2.0699, 2.1770, 2.0116, 3.3515,\n", + " 3.8750, 3.9622, 3.9203, 3.9281, 3.6889, 3.7047, 3.4750, 3.4246, 3.4393,\n", + " 3.2565, 3.1987, 3.3835, 3.3313, 2.8869, 2.8420, 2.8584, 2.9619, 3.0103,\n", + " 2.9978, 3.1223, 3.1474, 3.1916, 3.2773, 3.5245, 2.6295, 4.3385, 4.7696,\n", + " 4.9555, 5.2819, 5.7553, 5.5721, 1.1120, 0.7129, 0.6690, 1.2601, 1.8196,\n", + " 1.9957, 1.3802, 1.9626]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6530, -0.6775, -0.8563, -0.8172, -0.3172, -0.3469, 0.1302, 0.3343,\n", + " 1.3391, 0.6197, 0.2434, -0.2747, -0.1591, -0.1728, -1.3414, 0.3283,\n", + " -0.0156, 0.2581, 0.2823, -1.4067, 0.9336, 0.3774, -0.2655, -0.6982,\n", + " -0.0811, 0.1443, -0.0297, 0.5561, -0.0593, 0.0563, -0.2129, 0.1749,\n", + " -0.6233, -0.3573, -0.2612, 0.2599, -0.3467, -0.5278, 1.1238, 0.4584,\n", + " 0.3039, 0.7240, 0.1074]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2276, -0.2556, -0.1098, -0.1203, -0.0847, 0.0878, 0.1196, 0.3488,\n", + " 0.1543, 0.2156, 0.2776, -0.1612, -0.1600, -0.1966, -0.1474, -0.2010,\n", + " -0.1373, -0.0361, -0.0899, -0.0659, -0.0354, -0.0160, -0.0753, 0.0166,\n", + " 0.0192, 0.0801, 0.0017, -0.0487, -0.1635, -0.1643, -0.2189, -0.1868,\n", + " -0.2096, -0.2592, -0.1545, -0.2229, -0.0541, 0.0558, 0.0083, 0.3075,\n", + " 0.3584, 0.3889, 0.2169]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007591965841129422\n", + "Grad encoder.fc1.bias: 0.0006189525010995567\n", + "Grad encoder.encoder.0.weight: 0.00015900089056231081\n", + "Grad encoder.encoder.0.bias: 0.0007562277605757117\n", + "Grad encoder.encoder.2.weight: 0.00014186420594342053\n", + "Grad encoder.encoder.2.bias: 0.0010970120783895254\n", + "Grad encoder.encoder.4.weight: 0.0004578495863825083\n", + "Grad encoder.encoder.4.bias: 0.005408040247857571\n", + "Grad decoder.fc1.0.weight: 9.059151489054784e-05\n", + "Grad decoder.fc1.0.bias: 0.0006893519312143326\n", + "Grad decoder.fc1.2.weight: 8.884612179826945e-05\n", + "Grad decoder.fc1.2.bias: 0.000637626217212528\n", + "Grad decoder.fc1.4.weight: 7.676929817534983e-05\n", + "Grad decoder.fc1.4.bias: 0.0006690230220556259\n", + "Grad decoder.fc2.weight: 0.00016648642485961318\n", + "Grad decoder.fc2.bias: 0.0015785004943609238\n", + "Grad _memory_unit.weight_ih_l0: 0.00013696120004169643\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00047159777022898197\n", + "Grad _memory_unit.bias_hh_l0: 0.0002401022065896541\n", + "Grad _memory_unit.weight_ih_l1: 2.236051659565419e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0004512532614171505\n", + "Grad _memory_unit.bias_hh_l1: 0.0002350931754335761\n", + "Data X Sample: tensor([[1.5817, 1.7565, 1.8648, 2.0007, 2.0916, 2.3189, 2.4712, 2.5539, 2.5142,\n", + " 2.5607, 2.6679, 2.6622, 2.4834, 2.5411, 2.4589, 2.4753, 2.4419, 2.5379,\n", + " 2.4904, 2.4344, 2.4683, 2.4479, 2.4098, 2.3420, 2.4080, 2.3585, 2.3842,\n", + " 2.3819, 2.2064, 2.3515, 2.2677, 2.3046, 2.2462, 1.4463, 1.9168, 1.8339,\n", + " 1.6361, 1.5212, 1.5719, 1.6257, 1.2075, 0.6751, 0.6588, 1.2113, 1.9028,\n", + " 2.0528, 1.3258, 1.9548]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6930, 0.5705, 0.4680, 0.6101, -0.0446, -0.3209, -0.6188, -0.4446,\n", + " -0.1885, -0.6259, -0.5399, 0.0991, -0.7108, 0.4455, 0.5332, -0.5564,\n", + " -0.2331, 0.7742, 0.4120, 0.2935, -0.1348, -0.2691, 0.3726, -0.1710,\n", + " -1.4424, -1.2464, -0.6107, 0.0610, -0.1689, 0.4245, -0.0491, 0.2603,\n", + " 0.0833, 1.3299, 1.7237, 0.7402, -0.6348, 0.3946, 1.1574, -0.9968,\n", + " -0.7410, -0.2289, -0.2415]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3243, 0.2821, 0.1182, 0.2040, 0.0413, -0.1824, -0.3844, -0.4057,\n", + " -0.1995, -0.2155, -0.2316, 0.1241, 0.1273, 0.2710, 0.1692, 0.2333,\n", + " 0.2309, 0.0504, 0.0947, 0.1585, 0.0424, 0.0206, 0.0179, -0.0167,\n", + " 0.0283, 0.0714, -0.0530, 0.0568, 0.2713, 0.3159, 0.2793, 0.1888,\n", + " 0.2538, 0.2255, 0.0577, 0.1501, 0.0201, 0.0220, -0.0445, -0.2715,\n", + " -0.2151, -0.2617, -0.2514]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007787790964357555\n", + "Grad encoder.fc1.bias: 0.0005151386139914393\n", + "Grad encoder.encoder.0.weight: 0.00024689597194083035\n", + "Grad encoder.encoder.0.bias: 0.0011168891796842217\n", + "Grad encoder.encoder.2.weight: 0.00019226483709644526\n", + "Grad encoder.encoder.2.bias: 0.0015128253726288676\n", + "Grad encoder.encoder.4.weight: 0.0005466774455271661\n", + "Grad encoder.encoder.4.bias: 0.006943002343177795\n", + "Grad decoder.fc1.0.weight: 0.00012842788419220597\n", + "Grad decoder.fc1.0.bias: 0.0010021848138421774\n", + "Grad decoder.fc1.2.weight: 0.00010839692549780011\n", + "Grad decoder.fc1.2.bias: 0.0007925224490463734\n", + "Grad decoder.fc1.4.weight: 9.225014946423471e-05\n", + "Grad decoder.fc1.4.bias: 0.0007089420687407255\n", + "Grad decoder.fc2.weight: 0.00024243874941021204\n", + "Grad decoder.fc2.bias: 0.002199039561673999\n", + "Grad _memory_unit.weight_ih_l0: 0.0001742005260894075\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0006301224930211902\n", + "Grad _memory_unit.bias_hh_l0: 0.00032676602131687105\n", + "Grad _memory_unit.weight_ih_l1: 2.90760763164144e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.000601606850977987\n", + "Grad _memory_unit.bias_hh_l1: 0.0003243645769543946\n", + "Data X Sample: tensor([[1.5075, 1.6357, 1.7190, 1.9416, 2.0592, 2.3160, 2.1893, 2.2416, 3.6444,\n", + " 4.2542, 4.4381, 4.3858, 4.0879, 4.0951, 3.9216, 3.7047, 3.5866, 3.5457,\n", + " 3.5539, 3.5967, 3.6510, 3.4277, 2.9303, 2.8669, 2.7608, 2.9410, 3.0289,\n", + " 2.9896, 3.1639, 3.2882, 3.2545, 3.4459, 3.9469, 2.8812, 4.7356, 5.0907,\n", + " 5.2544, 5.6026, 6.1229, 5.9069, 1.0882, 0.6791, 0.6366, 1.0821, 1.7125,\n", + " 1.9156, 1.1558, 1.7515]], device='cuda:0')\n", + "Data Y Sample: tensor([[-4.2006e-01, -5.0297e-01, -3.4484e-01, 1.0519e-01, -1.3727e-01,\n", + " -2.2163e-01, 2.0062e-01, 1.3486e-01, 3.8329e-01, 3.0846e-01,\n", + " 4.4006e-01, -8.1399e-01, 1.4055e-01, -5.6610e-01, -5.9032e-01,\n", + " -3.4225e-01, 1.5079e-03, -4.6355e-01, 2.0388e+00, -6.4645e-02,\n", + " 4.7537e-01, 3.3351e-01, 6.1169e-01, 5.3495e-01, -1.5342e-01,\n", + " -1.9703e-01, 3.2404e-01, -1.2108e-01, 2.8869e-01, -1.5312e-01,\n", + " 3.1858e-01, -2.5961e-01, -1.0171e+00, -7.4659e-01, -4.8496e-01,\n", + " -8.1389e-01, -5.8929e-01, -8.0041e-01, -3.7122e-01, 3.3401e-01,\n", + " 3.8523e-01, 5.0743e-01, 3.6588e-02]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1854, -0.2321, -0.0690, -0.0830, -0.0317, 0.1020, 0.0699, 0.3054,\n", + " 0.1488, 0.2215, 0.2413, -0.1404, -0.1480, -0.1647, -0.1384, -0.1743,\n", + " -0.1299, -0.0461, -0.0687, -0.0440, -0.0235, -0.0222, -0.0911, 0.0137,\n", + " 0.0350, 0.0683, 0.0046, -0.0343, -0.1310, -0.1652, -0.1879, -0.1523,\n", + " -0.2072, -0.2391, -0.1655, -0.1800, -0.0311, 0.0785, -0.0180, 0.2772,\n", + " 0.3327, 0.3399, 0.1756]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.001358452602289617\n", + "Grad encoder.fc1.bias: 0.0015126210637390614\n", + "Grad encoder.encoder.0.weight: 0.00030410027829930186\n", + "Grad encoder.encoder.0.bias: 0.0014352748403325677\n", + "Grad encoder.encoder.2.weight: 0.0003766349400393665\n", + "Grad encoder.encoder.2.bias: 0.0023486404679715633\n", + "Grad encoder.encoder.4.weight: 0.0008201925083994865\n", + "Grad encoder.encoder.4.bias: 0.0069907247088849545\n", + "Grad decoder.fc1.0.weight: 0.00014731023111380637\n", + "Grad decoder.fc1.0.bias: 0.0009540505707263947\n", + "Grad decoder.fc1.2.weight: 0.00012119778693886474\n", + "Grad decoder.fc1.2.bias: 0.0011002513347193599\n", + "Grad decoder.fc1.4.weight: 9.47992448345758e-05\n", + "Grad decoder.fc1.4.bias: 0.000926718523260206\n", + "Grad decoder.fc2.weight: 0.00015125522622838616\n", + "Grad decoder.fc2.bias: 0.002234372543171048\n", + "Grad _memory_unit.weight_ih_l0: 0.00024728846619836986\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0005746245151385665\n", + "Grad _memory_unit.bias_hh_l0: 0.0003003270539920777\n", + "Grad _memory_unit.weight_ih_l1: 4.154891212237999e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0005479151150211692\n", + "Grad _memory_unit.bias_hh_l1: 0.0002806273987516761\n", + "Data X Sample: tensor([[1.1298, 1.3138, 1.5282, 1.6508, 1.6852, 1.7871, 1.8935, 2.0485, 2.0602,\n", + " 3.6049, 3.9749, 4.0605, 3.8549, 3.7298, 3.5811, 3.6240, 3.4309, 3.4026,\n", + " 3.4114, 3.4591, 3.4596, 3.2547, 2.9640, 2.7523, 2.7233, 2.8731, 2.9703,\n", + " 2.9774, 2.9072, 3.0753, 3.0306, 3.2220, 3.4893, 2.5952, 4.2969, 4.6504,\n", + " 4.9575, 5.3588, 5.6222, 5.5523, 0.9402, 0.5616, 0.5538, 0.9644, 1.4826,\n", + " 1.5725, 1.2034, 1.6186]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5629, -0.7986, 0.4784, -0.1477, 0.0052, 0.2234, 0.1393, 0.5716,\n", + " 0.7269, 0.5101, 0.9140, 1.1420, -1.9354, -0.0627, -0.5452, -0.5094,\n", + " -2.3042, 1.2899, 0.3164, 0.2335, 2.2072, 0.2936, 0.2463, 1.3701,\n", + " -0.7452, 0.8802, 0.1156, 0.3159, 0.0735, -0.4580, -1.0138, 0.1437,\n", + " -0.5069, 0.0630, -0.0229, -0.7252, 0.0000, -0.1625, -0.5596, 0.7351,\n", + " 1.1338, 1.6533, 0.4591]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1724, -0.2286, -0.0714, -0.0912, -0.0323, 0.0849, 0.0584, 0.2782,\n", + " 0.1432, 0.2101, 0.2246, -0.1309, -0.1426, -0.1594, -0.1324, -0.1737,\n", + " -0.1239, -0.0490, -0.0612, -0.0315, -0.0212, -0.0212, -0.0867, 0.0069,\n", + " 0.0386, 0.0690, 0.0184, -0.0225, -0.1181, -0.1701, -0.1710, -0.1486,\n", + " -0.2045, -0.2229, -0.1615, -0.1586, -0.0368, 0.0710, -0.0133, 0.2521,\n", + " 0.3122, 0.3251, 0.1756]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.003067261539399624\n", + "Grad encoder.fc1.bias: 0.0016209045425057411\n", + "Grad encoder.encoder.0.weight: 0.0007347925566136837\n", + "Grad encoder.encoder.0.bias: 0.003120583714917302\n", + "Grad encoder.encoder.2.weight: 0.0007422842318192124\n", + "Grad encoder.encoder.2.bias: 0.004911636933684349\n", + "Grad encoder.encoder.4.weight: 0.0018095604609698057\n", + "Grad encoder.encoder.4.bias: 0.018888354301452637\n", + "Grad decoder.fc1.0.weight: 0.00028520188061520457\n", + "Grad decoder.fc1.0.bias: 0.002138099167495966\n", + "Grad decoder.fc1.2.weight: 0.00023838994093239307\n", + "Grad decoder.fc1.2.bias: 0.001763861975632608\n", + "Grad decoder.fc1.4.weight: 0.00017302914056926966\n", + "Grad decoder.fc1.4.bias: 0.001012148568406701\n", + "Grad decoder.fc2.weight: 0.0003286561695858836\n", + "Grad decoder.fc2.bias: 0.001757741323672235\n", + "Grad _memory_unit.weight_ih_l0: 0.0005801597726531327\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0016374922124668956\n", + "Grad _memory_unit.bias_hh_l0: 0.0008541190763935447\n", + "Grad _memory_unit.weight_ih_l1: 9.277477511204779e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0015403175493702292\n", + "Grad _memory_unit.bias_hh_l1: 0.0008095874218270183\n", + "Data X Sample: tensor([[1.5117, 1.6269, 1.7235, 1.8454, 1.9140, 2.1112, 2.0845, 3.0366, 4.3352,\n", + " 4.2510, 4.3841, 4.3507, 4.0657, 3.9070, 3.8535, 3.6965, 3.6825, 3.6946,\n", + " 3.7480, 3.4870, 3.5234, 3.4844, 3.1906, 2.8592, 2.7533, 2.8261, 2.9650,\n", + " 2.8958, 2.8482, 3.1638, 3.1496, 3.2745, 3.6851, 2.7279, 4.5224, 4.8791,\n", + " 5.1345, 5.5231, 5.9835, 5.8048, 1.1263, 0.6492, 0.6144, 1.0678, 1.6610,\n", + " 1.7726, 1.0742, 1.7359]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4415, 0.7565, 0.7968, 1.0536, 0.3621, -0.2468, -0.2132, -0.3068,\n", + " -0.3130, -0.1737, 0.0546, 0.8315, 1.2765, 2.0693, 0.5529, 0.0864,\n", + " 1.3178, -0.0030, -0.5272, 0.8936, 0.3211, -0.4588, 0.2676, 0.3571,\n", + " 0.3213, -0.0073, -0.0769, 0.1403, -0.7023, -0.6622, -0.5870, 0.1480,\n", + " 1.4757, 0.3428, 0.3147, -0.1688, 0.6278, 0.4899, -0.1516, -0.4920,\n", + " -0.4981, -0.5827, -0.2775]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1666, -0.2164, -0.0675, -0.0731, 0.0022, 0.0870, 0.0466, 0.2626,\n", + " 0.1435, 0.2168, 0.2030, -0.1240, -0.1527, -0.1599, -0.1213, -0.1699,\n", + " -0.1120, -0.0511, -0.0580, -0.0188, -0.0236, -0.0325, -0.0836, -0.0032,\n", + " 0.0460, 0.0642, 0.0204, -0.0276, -0.1191, -0.1889, -0.1634, -0.1491,\n", + " -0.2246, -0.2108, -0.1659, -0.1390, -0.0349, 0.0687, -0.0110, 0.2280,\n", + " 0.2921, 0.3089, 0.1734]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002659504534676671\n", + "Grad encoder.fc1.bias: 0.001676812069490552\n", + "Grad encoder.encoder.0.weight: 8.028243610169739e-05\n", + "Grad encoder.encoder.0.bias: 0.0013021796476095915\n", + "Grad encoder.encoder.2.weight: 5.2422434237087145e-05\n", + "Grad encoder.encoder.2.bias: 0.0007558597135357559\n", + "Grad encoder.encoder.4.weight: 0.00017490502796135843\n", + "Grad encoder.encoder.4.bias: 0.001515355659648776\n", + "Grad decoder.fc1.0.weight: 9.571787813911214e-05\n", + "Grad decoder.fc1.0.bias: 0.0007646064041182399\n", + "Grad decoder.fc1.2.weight: 0.00015794660430401564\n", + "Grad decoder.fc1.2.bias: 0.0010539821814745665\n", + "Grad decoder.fc1.4.weight: 0.00011935806833207607\n", + "Grad decoder.fc1.4.bias: 0.0009681537048891187\n", + "Grad decoder.fc2.weight: 0.00016154159675352275\n", + "Grad decoder.fc2.bias: 0.002370741916820407\n", + "Grad _memory_unit.weight_ih_l0: 1.7424703401047736e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.135866326279938e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.7535312003456056e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.12773851066595e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011634928523562849\n", + "Grad _memory_unit.bias_hh_l1: 6.191875581862405e-05\n", + "Data X Sample: tensor([[1.5531, 1.7813, 1.9669, 2.0685, 2.1394, 2.2320, 2.2740, 2.3239, 2.3458,\n", + " 2.3696, 2.5378, 2.5454, 2.3680, 2.3311, 2.2571, 2.2524, 2.2123, 2.3522,\n", + " 2.3335, 2.3302, 2.4045, 2.3239, 2.4267, 2.4469, 2.3854, 2.4944, 2.4215,\n", + " 2.4798, 2.1093, 2.1256, 1.9597, 1.8321, 1.5708, 0.9955, 1.4119, 1.4204,\n", + " 1.3785, 1.3808, 1.4071, 1.3249, 1.3936, 0.7070, 0.7175, 1.3060, 1.9623,\n", + " 2.1443, 1.4074, 1.9704]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0301, -0.7792, -0.1507, -0.0769, -1.4203, 0.3713, -0.5592, 0.2205,\n", + " -0.3487, -0.2660, -0.5416, -0.8226, 0.7618, -0.9944, 0.3914, 0.3157,\n", + " 0.6160, -0.1929, -0.4210, -0.3284, -1.0002, -1.1250, -0.5755, -0.7195,\n", + " -0.6009, 0.1156, -0.3981, 0.0120, -0.8970, 0.0028, 0.2221, -0.1957,\n", + " 0.3941, 0.1409, -0.7735, 0.2575, 0.8233, -0.6423, 0.5660, -0.2504,\n", + " 0.2745, 0.2831, 0.2827]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 2.9264e-01, 2.4471e-01, 1.0603e-01, 1.7556e-01, 3.3338e-02,\n", + " -1.6871e-01, -3.5294e-01, -3.6509e-01, -1.5872e-01, -1.8873e-01,\n", + " -1.9862e-01, 1.1232e-01, 9.3893e-02, 2.2813e-01, 1.3987e-01,\n", + " 1.9194e-01, 1.8532e-01, 2.3918e-02, 7.7199e-02, 1.3682e-01,\n", + " 3.5899e-02, 2.7461e-03, -2.9917e-04, -2.1579e-02, 2.7860e-02,\n", + " 8.6090e-02, -5.2448e-02, 5.6962e-02, 2.4159e-01, 2.5082e-01,\n", + " 2.6005e-01, 1.5520e-01, 2.3040e-01, 1.9560e-01, 4.1888e-02,\n", + " 1.3809e-01, 1.3138e-02, 1.9937e-02, -3.9008e-02, -2.4421e-01,\n", + " -1.9390e-01, -2.2569e-01, -2.0633e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00011602295853663236\n", + "Grad encoder.fc1.bias: 0.00035440409556031227\n", + "Grad encoder.encoder.0.weight: 2.9961411200929433e-05\n", + "Grad encoder.encoder.0.bias: 0.0002739346236921847\n", + "Grad encoder.encoder.2.weight: 1.9814335246337578e-05\n", + "Grad encoder.encoder.2.bias: 0.00027418858371675014\n", + "Grad encoder.encoder.4.weight: 4.923966116621159e-05\n", + "Grad encoder.encoder.4.bias: 0.00037865396006964147\n", + "Grad decoder.fc1.0.weight: 2.3985621737665497e-05\n", + "Grad decoder.fc1.0.bias: 0.00015030679060146213\n", + "Grad decoder.fc1.2.weight: 3.063545955228619e-05\n", + "Grad decoder.fc1.2.bias: 0.00021265725081320852\n", + "Grad decoder.fc1.4.weight: 3.68505425285548e-05\n", + "Grad decoder.fc1.4.bias: 0.00030909996712580323\n", + "Grad decoder.fc2.weight: 0.00011678096052492037\n", + "Grad decoder.fc2.bias: 0.0016544698737561703\n", + "Grad _memory_unit.weight_ih_l0: 6.420149475161452e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.9506283681257628e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.5422747310367413e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.2218257527129026e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.707072391989641e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.9516701286192983e-05\n", + "Data X Sample: tensor([[1.6135, 1.8541, 2.0225, 2.1865, 2.2419, 2.4206, 2.5144, 2.6093, 2.6290,\n", + " 2.7376, 2.6552, 2.7051, 2.7142, 2.5520, 2.5496, 2.4411, 2.4733, 2.5418,\n", + " 2.4656, 2.5013, 2.5051, 2.4877, 2.4676, 2.4947, 2.4962, 2.5362, 2.4428,\n", + " 2.4471, 2.4041, 2.4203, 2.3832, 2.3157, 2.2044, 1.3937, 1.8727, 1.7755,\n", + " 1.6735, 1.6246, 1.6226, 1.4980, 1.3411, 0.7030, 0.7801, 1.3405, 1.9266,\n", + " 2.2244, 1.4414, 2.2207]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3388, -0.2229, -1.2767, -0.4090, -0.2147, 0.8698, -0.2466, 0.2765,\n", + " -0.1242, -0.1243, -0.0967, -0.4571, -0.6379, 0.5464, 0.8842, 0.1691,\n", + " 0.2740, -0.1948, 0.6092, 0.8637, 1.4735, -0.5227, 0.1423, 0.8269,\n", + " 0.7058, -0.1475, 0.1017, -0.4487, 1.8133, 0.1031, -1.1427, -1.9073,\n", + " 0.0948, -0.2892, 0.8516, -0.1423, 0.8233, -0.0920, -0.9129, 0.1466,\n", + " -0.1277, -0.7787, 0.1178]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4370, 0.4124, 0.1867, 0.3117, 0.1104, -0.2440, -0.5016, -0.5517,\n", + " -0.2559, -0.3167, -0.3045, 0.1914, 0.1425, 0.3351, 0.2167, 0.3028,\n", + " 0.3016, 0.0610, 0.1280, 0.2239, 0.0850, 0.0259, 0.0110, -0.0234,\n", + " 0.0490, 0.1221, -0.0953, 0.0653, 0.3349, 0.3991, 0.4137, 0.2501,\n", + " 0.3723, 0.3439, 0.1056, 0.2403, 0.0104, 0.0232, -0.0210, -0.4161,\n", + " -0.3425, -0.3919, -0.3462]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0012773758498951793\n", + "Grad encoder.fc1.bias: 0.0014644952025264502\n", + "Grad encoder.encoder.0.weight: 0.00030152732506394386\n", + "Grad encoder.encoder.0.bias: 0.0015599920880049467\n", + "Grad encoder.encoder.2.weight: 0.00021520149311982095\n", + "Grad encoder.encoder.2.bias: 0.0016457595629617572\n", + "Grad encoder.encoder.4.weight: 0.0004535204207058996\n", + "Grad encoder.encoder.4.bias: 0.0015484991017729044\n", + "Grad decoder.fc1.0.weight: 0.00017953908536583185\n", + "Grad decoder.fc1.0.bias: 0.0010040998458862305\n", + "Grad decoder.fc1.2.weight: 0.0001680342247709632\n", + "Grad decoder.fc1.2.bias: 0.001326472032815218\n", + "Grad decoder.fc1.4.weight: 0.0001507903798483312\n", + "Grad decoder.fc1.4.bias: 0.0015414898516610265\n", + "Grad decoder.fc2.weight: 0.00017533716163598\n", + "Grad decoder.fc2.bias: 0.002913297852501273\n", + "Grad _memory_unit.weight_ih_l0: 2.3492815671488643e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00012709619477391243\n", + "Grad _memory_unit.bias_hh_l0: 6.774564099032432e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.523393439128995e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001773675176082179\n", + "Grad _memory_unit.bias_hh_l1: 9.752564801601693e-05\n", + "Data X Sample: tensor([[1.9244, 2.4265, 2.6687, 2.8731, 2.9505, 3.0585, 3.1306, 3.1445, 3.1953,\n", + " 3.2432, 3.3500, 3.2913, 3.1225, 3.1627, 3.1877, 3.1768, 3.0315, 3.2130,\n", + " 3.0500, 2.9402, 2.8413, 2.7434, 2.6219, 2.5672, 2.4436, 2.3089, 2.2590,\n", + " 2.1657, 2.0191, 2.0764, 1.9842, 2.0006, 1.7270, 1.1351, 2.0394, 2.3690,\n", + " 2.5682, 2.9471, 3.1248, 3.0669, 1.6513, 0.9599, 0.9438, 1.7394, 2.4895,\n", + " 2.7676, 1.7609, 2.5803]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1122, 0.3840, 0.9790, 0.8956, -0.5194, 0.2659, 0.7629, 0.4769,\n", + " -0.5300, -0.5004, -0.3835, -0.3151, -4.8779, -0.4565, -0.2533, -0.8769,\n", + " -0.7013, -0.4331, 0.5307, -0.0996, -1.7519, -0.3919, -0.7522, 0.7161,\n", + " -0.1654, 0.6691, 0.6467, -0.1495, -0.4042, -0.6406, 0.0292, 0.1642,\n", + " -0.5035, -0.0761, -1.3143, 0.2842, -0.6417, -0.7806, 0.2870, -0.5119,\n", + " -1.0561, 1.0456, 0.0128]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1150, -0.1930, -0.0485, -0.0855, -0.0151, 0.0581, 0.0189, 0.1887,\n", + " 0.1197, 0.1700, 0.1564, -0.1030, -0.1123, -0.1217, -0.1113, -0.1461,\n", + " -0.1099, -0.0525, -0.0330, -0.0099, -0.0087, -0.0231, -0.0778, -0.0118,\n", + " 0.0433, 0.0625, 0.0361, 0.0018, -0.0732, -0.1636, -0.1195, -0.1132,\n", + " -0.1871, -0.1627, -0.1389, -0.0959, -0.0308, 0.0647, -0.0175, 0.1799,\n", + " 0.2454, 0.2501, 0.1389]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002645136264618486\n", + "Grad encoder.fc1.bias: 0.0006068147486075759\n", + "Grad encoder.encoder.0.weight: 7.846720836823806e-05\n", + "Grad encoder.encoder.0.bias: 0.0005712303100153804\n", + "Grad encoder.encoder.2.weight: 5.933967622695491e-05\n", + "Grad encoder.encoder.2.bias: 0.000394367438275367\n", + "Grad encoder.encoder.4.weight: 0.00015825603622943163\n", + "Grad encoder.encoder.4.bias: 0.0007906514219939709\n", + "Grad decoder.fc1.0.weight: 7.049951091175899e-05\n", + "Grad decoder.fc1.0.bias: 0.00039067113539204\n", + "Grad decoder.fc1.2.weight: 6.157153256935999e-05\n", + "Grad decoder.fc1.2.bias: 0.0003758722450584173\n", + "Grad decoder.fc1.4.weight: 5.5071679526008666e-05\n", + "Grad decoder.fc1.4.bias: 0.0003400314599275589\n", + "Grad decoder.fc2.weight: 0.00011673673725454137\n", + "Grad decoder.fc2.bias: 0.0014201827580109239\n", + "Grad _memory_unit.weight_ih_l0: 8.002491085790098e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.5697638445999473e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.521627023583278e-06\n", + "Grad _memory_unit.weight_ih_l1: 5.459128715301631e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.672320210374892e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.5738270778674632e-05\n", + "Data X Sample: tensor([[1.3611, 1.5177, 1.7265, 1.8542, 2.0438, 2.1200, 2.1384, 2.0627, 2.8242,\n", + " 4.0125, 4.2223, 4.3721, 4.1234, 3.9943, 3.6946, 3.7567, 3.6856, 3.6656,\n", + " 3.7005, 3.6432, 3.5528, 3.4093, 2.8845, 2.8611, 2.8546, 2.8705, 2.9650,\n", + " 3.0508, 3.0945, 3.3177, 3.2301, 3.5039, 3.9139, 2.8583, 4.6866, 4.9909,\n", + " 5.0715, 5.5867, 6.0595, 5.8643, 1.0404, 0.6154, 0.5942, 1.1051, 1.6055,\n", + " 1.8413, 1.3190, 1.7202]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0522, -0.2989, -0.6343, 0.1197, -0.1601, 0.0443, 0.1959, 0.1994,\n", + " 0.1420, 0.2612, 0.4198, 1.6107, -2.2608, -0.2042, -0.4391, -0.2057,\n", + " 0.0690, 0.3090, -0.2082, 0.5915, 0.8107, 0.3626, 0.1436, 0.8040,\n", + " 0.3103, 0.7064, -0.4646, -1.4147, 1.0553, 0.1152, -0.0102, -1.5211,\n", + " -0.1965, -0.6110, 0.2283, -0.0188, -0.0107, -0.8004, 0.4422, 0.4247,\n", + " 0.5931, 0.8243, 0.5278]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1171, -0.1442, -0.0272, 0.0571, 0.1979, 0.1407, -0.0187, 0.1970,\n", + " 0.1739, 0.2853, 0.0866, -0.0907, -0.1916, -0.1371, -0.0701, -0.1545,\n", + " -0.0837, -0.0602, -0.0233, 0.0245, -0.0190, -0.0950, -0.0741, -0.0702,\n", + " 0.0618, 0.0283, -0.0059, -0.0664, -0.1520, -0.2919, -0.1514, -0.1184,\n", + " -0.3264, -0.1454, -0.2025, -0.0518, -0.0157, 0.0958, -0.0096, 0.1058,\n", + " 0.2080, 0.2066, 0.1348]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00020251175737939775\n", + "Grad encoder.fc1.bias: 9.574356954544783e-05\n", + "Grad encoder.encoder.0.weight: 7.48517777537927e-05\n", + "Grad encoder.encoder.0.bias: 0.00015194600564427674\n", + "Grad encoder.encoder.2.weight: 6.567576201632619e-05\n", + "Grad encoder.encoder.2.bias: 0.00020253803813830018\n", + "Grad encoder.encoder.4.weight: 0.00019301024440210313\n", + "Grad encoder.encoder.4.bias: 0.0005840393132530153\n", + "Grad decoder.fc1.0.weight: 5.635703928419389e-05\n", + "Grad decoder.fc1.0.bias: 0.00017775394371710718\n", + "Grad decoder.fc1.2.weight: 7.436916348524392e-05\n", + "Grad decoder.fc1.2.bias: 0.0004302511515561491\n", + "Grad decoder.fc1.4.weight: 6.47075503366068e-05\n", + "Grad decoder.fc1.4.bias: 0.00046810435014776886\n", + "Grad decoder.fc2.weight: 7.478675252059475e-05\n", + "Grad decoder.fc2.bias: 0.0018762282561510801\n", + "Grad _memory_unit.weight_ih_l0: 4.209877261018846e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.2360196706140414e-05\n", + "Grad _memory_unit.bias_hh_l0: 7.04251851857407e-06\n", + "Grad _memory_unit.weight_ih_l1: 4.419323886395432e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.329203900648281e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.8649374396773055e-05\n", + "Data X Sample: tensor([[1.4905, 1.5949, 1.7806, 1.8804, 1.9926, 2.1996, 2.2663, 2.0315, 3.1733,\n", + " 4.2463, 4.3080, 4.1637, 4.0302, 3.9452, 3.7223, 3.5926, 3.5347, 3.5147,\n", + " 3.6943, 3.4870, 3.3565, 3.2226, 2.9255, 2.8020, 2.8903, 3.0429, 3.0236,\n", + " 3.0385, 3.0702, 3.2162, 3.2021, 3.3105, 3.8105, 2.8011, 4.5199, 4.9009,\n", + " 5.1522, 5.5205, 6.0469, 5.9126, 1.1072, 0.6313, 0.6164, 1.1453, 1.6372,\n", + " 1.8413, 1.3122, 1.7593]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.8020, 0.2376, 0.6771, 0.5974, 0.6450, 0.9967, -0.1335, -0.2659,\n", + " 0.2101, -0.1423, -0.0033, 0.3697, -0.0039, -1.1343, -0.7531, 0.5550,\n", + " -0.7516, -0.4528, 0.8645, 0.1762, 0.6772, -0.1413, -2.1031, -0.0066,\n", + " -1.7614, -0.2295, -0.1661, 0.2493, -0.4510, 0.8156, 1.1400, 0.0889,\n", + " -0.5227, 0.4065, -0.5406, 0.3307, -0.2989, 0.8929, 0.0000, -0.1575,\n", + " -0.5406, -0.0834, -0.6811]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1366, -0.1750, -0.0527, 0.0153, 0.1573, 0.1134, -0.0018, 0.2060,\n", + " 0.1674, 0.2764, 0.1210, -0.1034, -0.2015, -0.1595, -0.0841, -0.1752,\n", + " -0.0947, -0.0633, -0.0417, 0.0333, -0.0145, -0.0875, -0.0648, -0.0664,\n", + " 0.0648, 0.0485, 0.0232, -0.0598, -0.1548, -0.2940, -0.1603, -0.1424,\n", + " -0.3309, -0.1568, -0.2028, -0.0622, -0.0429, 0.0766, 0.0119, 0.1220,\n", + " 0.2228, 0.2435, 0.1614]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.001209175563417375\n", + "Grad encoder.fc1.bias: 0.0011140764690935612\n", + "Grad encoder.encoder.0.weight: 0.0003257677308283746\n", + "Grad encoder.encoder.0.bias: 0.0012089440133422613\n", + "Grad encoder.encoder.2.weight: 0.00022804367472417653\n", + "Grad encoder.encoder.2.bias: 0.0012897623237222433\n", + "Grad encoder.encoder.4.weight: 0.0005903039127588272\n", + "Grad encoder.encoder.4.bias: 0.002183343982324004\n", + "Grad decoder.fc1.0.weight: 0.00018915487453341484\n", + "Grad decoder.fc1.0.bias: 0.0010116463527083397\n", + "Grad decoder.fc1.2.weight: 0.00012509302177932113\n", + "Grad decoder.fc1.2.bias: 0.0008625396294519305\n", + "Grad decoder.fc1.4.weight: 8.47592600621283e-05\n", + "Grad decoder.fc1.4.bias: 0.0005971749196760356\n", + "Grad decoder.fc2.weight: 0.0001099823639378883\n", + "Grad decoder.fc2.bias: 0.001910392427816987\n", + "Grad _memory_unit.weight_ih_l0: 2.041794141405262e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.11988764628768e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.9046088457107544e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.5220726709230803e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001610213948879391\n", + "Grad _memory_unit.bias_hh_l1: 8.775858441367745e-05\n", + "Data X Sample: tensor([[2.9141, 3.2495, 3.5146, 3.8046, 3.7752, 4.1355, 4.1228, 4.2873, 4.3230,\n", + " 4.2842, 4.3556, 4.1637, 4.0457, 3.7516, 3.7526, 3.6021, 3.6573, 3.7256,\n", + " 3.7852, 3.7399, 3.7491, 3.6543, 3.1520, 3.0768, 2.8828, 2.8679, 2.9703,\n", + " 3.0752, 3.0251, 3.1507, 3.2196, 3.2828, 3.6059, 2.6020, 4.1106, 4.4291,\n", + " 4.6684, 5.1415, 5.7426, 5.5948, 2.1525, 1.2765, 1.1742, 2.1585, 3.2823,\n", + " 3.5167, 2.4204, 3.5421]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3296, 0.1481, 0.0904, 0.1502, -0.1956, -0.3304, -0.3130, 0.8858,\n", + " -0.7505, 0.5785, 0.2565, -0.4435, -0.3807, -0.2978, -0.2504, 0.2672,\n", + " 0.3219, -0.2644, -0.3840, 0.7468, 1.2228, -0.0356, 0.4855, -2.2168,\n", + " 1.7656, -1.1809, -0.8921, -0.1824, -0.3624, -0.8723, -1.2994, 0.2565,\n", + " -1.0795, -0.5637, 0.2124, 0.8233, -0.7353, 0.0752, -0.4418, 0.3416,\n", + " -0.6373, -0.8622, -1.1863]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1454, -0.2175, -0.0743, -0.0821, -0.0209, 0.0221, 0.0456, 0.1937,\n", + " 0.1260, 0.2053, 0.2416, -0.1534, -0.2025, -0.1762, -0.1253, -0.1639,\n", + " -0.1172, -0.0599, -0.0970, 0.0531, 0.0078, -0.0540, -0.0435, -0.0311,\n", + " 0.0386, 0.1289, 0.0970, -0.0431, -0.1519, -0.2133, -0.1638, -0.1720,\n", + " -0.2591, -0.1946, -0.1562, -0.1066, -0.0989, 0.0038, 0.0196, 0.1725,\n", + " 0.2498, 0.2883, 0.1684]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007022770587354898\n", + "Grad encoder.fc1.bias: 0.001346661476418376\n", + "Grad encoder.encoder.0.weight: 0.00021169637329876423\n", + "Grad encoder.encoder.0.bias: 0.0012630925048142672\n", + "Grad encoder.encoder.2.weight: 0.00016762125596869737\n", + "Grad encoder.encoder.2.bias: 0.0013919433113187551\n", + "Grad encoder.encoder.4.weight: 0.0004554381303023547\n", + "Grad encoder.encoder.4.bias: 0.003306854283437133\n", + "Grad decoder.fc1.0.weight: 0.0001425786904292181\n", + "Grad decoder.fc1.0.bias: 0.0008846138371154666\n", + "Grad decoder.fc1.2.weight: 0.00015726264973636717\n", + "Grad decoder.fc1.2.bias: 0.0008998860139399767\n", + "Grad decoder.fc1.4.weight: 0.0001210094487760216\n", + "Grad decoder.fc1.4.bias: 0.0007843038765713573\n", + "Grad decoder.fc2.weight: 0.00012883277668152004\n", + "Grad decoder.fc2.bias: 0.0015352549962699413\n", + "Grad _memory_unit.weight_ih_l0: 2.8610704248421825e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0001689274504315108\n", + "Grad _memory_unit.bias_hh_l0: 8.93354881554842e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.195657932839822e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00021236982138361782\n", + "Grad _memory_unit.bias_hh_l1: 0.00011573564552236348\n", + "Data X Sample: tensor([[1.1680, 1.2788, 1.5282, 1.6027, 1.8987, 1.9094, 2.9119, 3.9792, 3.9447,\n", + " 4.1562, 4.0954, 3.9008, 3.6507, 3.5499, 3.3970, 3.3779, 3.4152, 3.3561,\n", + " 3.4899, 3.3865, 3.2706, 3.2578, 2.9375, 2.7561, 2.7458, 2.7634, 2.8025,\n", + " 2.7123, 2.7649, 2.9443, 2.9641, 3.1004, 3.3969, 2.4945, 4.1106, 4.5750,\n", + " 4.7805, 5.2475, 5.6539, 5.6714, 0.8925, 0.5257, 0.5618, 0.9673, 1.4667,\n", + " 1.5210, 1.0538, 1.6029]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4019, 0.4240, -1.0955, 0.4426, -0.0156, -0.2959, -0.0695, 0.4020,\n", + " 0.0184, -0.0595, -0.8923, 1.1106, 0.6051, -0.4509, -0.5246, 0.9799,\n", + " -0.0898, 0.2646, 0.4680, 0.7942, -0.1690, 0.2221, -0.1062, 0.2980,\n", + " 0.2410, -0.0583, -0.7588, -0.7524, -0.3953, 0.7862, -0.1181, 0.3238,\n", + " -1.1349, 0.7167, 1.0636, 0.2592, 0.9291, 0.0752, -0.4418, -0.4154,\n", + " 0.6631, -0.1705, -0.3033]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1105, -0.2037, -0.0707, -0.1055, -0.0352, -0.0028, 0.0105, 0.1590,\n", + " 0.1085, 0.1624, 0.2117, -0.1248, -0.1601, -0.1430, -0.1097, -0.1492,\n", + " -0.1035, -0.0728, -0.0779, 0.0689, 0.0309, -0.0322, -0.0563, -0.0204,\n", + " 0.0442, 0.1371, 0.1166, 0.0031, -0.1172, -0.1923, -0.1109, -0.1500,\n", + " -0.1951, -0.1564, -0.1267, -0.0669, -0.0879, -0.0059, 0.0018, 0.1399,\n", + " 0.2402, 0.2543, 0.1388]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004201776464469731\n", + "Grad encoder.fc1.bias: 0.0032330984249711037\n", + "Grad encoder.encoder.0.weight: 0.00020348232646938413\n", + "Grad encoder.encoder.0.bias: 0.005057899281382561\n", + "Grad encoder.encoder.2.weight: 0.00012374662037473172\n", + "Grad encoder.encoder.2.bias: 0.00481621827930212\n", + "Grad encoder.encoder.4.weight: 0.000254495651461184\n", + "Grad encoder.encoder.4.bias: 0.008810611441731453\n", + "Grad decoder.fc1.0.weight: 0.0001658566325204447\n", + "Grad decoder.fc1.0.bias: 0.002513703191652894\n", + "Grad decoder.fc1.2.weight: 0.0001553745532874018\n", + "Grad decoder.fc1.2.bias: 0.0015409501502290368\n", + "Grad decoder.fc1.4.weight: 0.00010598598601063713\n", + "Grad decoder.fc1.4.bias: 0.0010471466230228543\n", + "Grad decoder.fc2.weight: 0.00013881998893339187\n", + "Grad decoder.fc2.bias: 0.002757611684501171\n", + "Grad _memory_unit.weight_ih_l0: 3.495482451398857e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00034323352156206965\n", + "Grad _memory_unit.bias_hh_l0: 0.00017005516565404832\n", + "Grad _memory_unit.weight_ih_l1: 1.206390152219683e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0004776777350343764\n", + "Grad _memory_unit.bias_hh_l1: 0.0002456031506881118\n", + "Data X Sample: tensor([[1.6369, 1.8541, 1.9970, 2.1472, 2.3836, 2.4486, 2.4450, 2.5738, 2.5923,\n", + " 2.6002, 2.6616, 2.6272, 2.5011, 2.5138, 2.4538, 2.5601, 2.4262, 2.4180,\n", + " 2.5875, 2.5162, 2.4561, 2.4632, 2.4845, 2.4584, 2.5131, 2.5910, 2.4855,\n", + " 2.5613, 2.3382, 2.4629, 2.4672, 2.4234, 2.3188, 1.4578, 1.9364, 1.8023,\n", + " 1.6558, 1.6087, 1.6226, 1.5633, 1.2600, 0.7428, 0.7518, 1.3606, 1.9187,\n", + " 2.2873, 1.3938, 2.0330]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.8391, -0.0752, 0.8848, 0.5642, 0.5129, 0.1918, 0.2926, 0.3985,\n", + " 0.1655, 0.0059, -0.2598, -0.8701, -0.7531, 0.4545, 0.0143, -1.0900,\n", + " 0.7413, -0.6840, -0.7272, -1.2685, -0.9970, -0.4651, -0.5510, 0.1942,\n", + " 0.6002, -1.2181, 0.8451, -0.1259, 0.1261, -0.4432, -1.1175, -0.1958,\n", + " -0.0574, 0.4321, -0.1154, 0.2983, 0.8233, -0.7806, -0.7130, 0.7731,\n", + " -0.4792, -0.1553, -2.5357]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.6927, 0.6947, 0.3292, 0.6257, 0.3167, -0.3088, -0.7300, -0.8507,\n", + " -0.4162, -0.5562, -0.5026, 0.3209, 0.2283, 0.5194, 0.3340, 0.5089,\n", + " 0.5048, 0.1261, 0.2355, 0.3904, 0.2044, 0.0790, 0.0429, -0.0275,\n", + " 0.0649, 0.1770, -0.1919, 0.0745, 0.4139, 0.6264, 0.6324, 0.4043,\n", + " 0.6276, 0.6562, 0.2855, 0.4332, -0.0570, -0.0065, 0.0056, -0.7731,\n", + " -0.6253, -0.6981, -0.5997]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0020403412636369467\n", + "Grad encoder.fc1.bias: 0.0008346005342900753\n", + "Grad encoder.encoder.0.weight: 0.0006073602708056569\n", + "Grad encoder.encoder.0.bias: 0.0013036256423220038\n", + "Grad encoder.encoder.2.weight: 0.0006019265274517238\n", + "Grad encoder.encoder.2.bias: 0.001954937819391489\n", + "Grad encoder.encoder.4.weight: 0.0016832504188641906\n", + "Grad encoder.encoder.4.bias: 0.005432034842669964\n", + "Grad decoder.fc1.0.weight: 0.00047703454038128257\n", + "Grad decoder.fc1.0.bias: 0.001280453521758318\n", + "Grad decoder.fc1.2.weight: 0.00026182414148934186\n", + "Grad decoder.fc1.2.bias: 0.0018700456712394953\n", + "Grad decoder.fc1.4.weight: 0.0002246498770546168\n", + "Grad decoder.fc1.4.bias: 0.0020973547361791134\n", + "Grad decoder.fc2.weight: 0.000185286597115919\n", + "Grad decoder.fc2.bias: 0.003993120975792408\n", + "Grad _memory_unit.weight_ih_l0: 3.1689927709521726e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.97429633064894e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.184125878557097e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.3470321795903146e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00027328747091814876\n", + "Grad _memory_unit.bias_hh_l1: 0.0001513571187388152\n", + "Data X Sample: tensor([[1.4162, 1.6051, 1.6754, 1.7033, 1.9192, 1.9845, 2.0029, 1.9775, 1.9137,\n", + " 3.2100, 3.9622, 3.8736, 3.8593, 3.6780, 3.5458, 3.3683, 3.3775, 3.3523,\n", + " 3.3288, 3.2452, 3.3786, 3.3435, 2.8315, 2.7180, 2.7270, 2.7764, 2.7652,\n", + " 2.8509, 2.8378, 2.9935, 3.0796, 3.1308, 3.4981, 2.5906, 4.2650, 4.7112,\n", + " 4.9359, 5.2660, 5.6222, 5.6686, 1.1788, 0.6114, 0.6245, 1.0965, 1.5936,\n", + " 1.6812, 1.1490, 1.6420]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6713, -0.5306, 0.2396, -0.2384, -1.6651, -1.2083, -0.0405, 0.1617,\n", + " 0.5482, 0.7209, 0.8415, -0.7111, 1.1716, -0.3904, -0.4432, -1.5539,\n", + " -0.7555, -0.6985, -1.4171, -0.3557, 0.4294, -1.2994, -1.6644, -0.4889,\n", + " -1.1528, -0.5227, -0.7043, -0.7294, -1.2752, -0.4661, -1.3408, -0.4544,\n", + " -1.2062, -1.3743, -0.8917, -0.4696, 0.9521, 0.0000, 1.0413, 0.8216,\n", + " 1.0346, 1.0936, 1.4577]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2238, -0.3284, -0.1910, -0.2327, -0.0790, -0.0462, 0.0901, 0.2660,\n", + " 0.1416, 0.1816, 0.2713, -0.1489, -0.2047, -0.2311, -0.1190, -0.2707,\n", + " -0.1283, -0.0802, -0.1198, 0.0438, -0.0243, -0.0130, -0.0388, -0.0129,\n", + " 0.0756, 0.1357, 0.1697, 0.0057, -0.1436, -0.2642, -0.1457, -0.2571,\n", + " -0.2856, -0.2128, -0.1709, -0.1041, -0.1306, -0.0407, 0.0884, 0.2156,\n", + " 0.3303, 0.4236, 0.2813]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0012337462976574898\n", + "Grad encoder.fc1.bias: 0.0006416115211322904\n", + "Grad encoder.encoder.0.weight: 0.000331684947013855\n", + "Grad encoder.encoder.0.bias: 0.000832488527521491\n", + "Grad encoder.encoder.2.weight: 0.00031498746830038726\n", + "Grad encoder.encoder.2.bias: 0.0012027544435113668\n", + "Grad encoder.encoder.4.weight: 0.0008348386036232114\n", + "Grad encoder.encoder.4.bias: 0.0025187700521200895\n", + "Grad decoder.fc1.0.weight: 0.000233979313634336\n", + "Grad decoder.fc1.0.bias: 0.0008326006354764104\n", + "Grad decoder.fc1.2.weight: 0.0001265554310521111\n", + "Grad decoder.fc1.2.bias: 0.0008706778753548861\n", + "Grad decoder.fc1.4.weight: 0.00010842621850315481\n", + "Grad decoder.fc1.4.bias: 0.000928660505451262\n", + "Grad decoder.fc2.weight: 0.00012598502507898957\n", + "Grad decoder.fc2.bias: 0.0027027467731386423\n", + "Grad _memory_unit.weight_ih_l0: 1.4081254448683467e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.0933198761194944e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.298475374118425e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.4665568414784502e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00013097944611217827\n", + "Grad _memory_unit.bias_hh_l1: 7.208545866888016e-05\n", + "Data X Sample: tensor([[1.2826, 1.2526, 1.3358, 1.4453, 1.4701, 1.7664, 2.2293, 2.4716, 2.7071,\n", + " 2.8324, 2.9629, 3.1491, 2.9006, 2.8873, 2.8901, 2.9088, 2.7517, 2.7661,\n", + " 2.8353, 2.7487, 2.8118, 2.7954, 2.6725, 2.5118, 2.4999, 2.5388, 2.6213,\n", + " 2.6225, 2.6227, 2.7839, 2.9571, 2.9706, 3.2275, 2.3503, 3.8459, 4.3391,\n", + " 4.6665, 4.9215, 5.4130, 5.4076, 0.8734, 0.4799, 0.5032, 0.7951, 1.3201,\n", + " 1.4810, 0.8975, 1.3293]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3350, -0.4598, -0.3705, -0.1548, 0.6531, 1.0483, 0.3341, 0.2100,\n", + " 0.2415, 0.4637, 0.3937, 0.2253, -0.5068, 0.4371, 0.2570, -0.7487,\n", + " -1.5758, -0.1069, -0.4556, 3.5830, -1.0183, -0.9800, -2.4086, 0.2195,\n", + " -0.0189, 1.0070, -0.4294, 0.0103, -0.4914, -0.2885, 0.7216, -0.6348,\n", + " 0.4136, 0.1545, 0.7768, 0.3184, 0.1767, -0.4903, 0.3478, 0.4104,\n", + " -0.2938, 0.2693, 0.3955]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2904, -0.3808, -0.2134, -0.2410, -0.0435, -0.0169, 0.1353, 0.3505,\n", + " 0.1757, 0.2309, 0.3392, -0.1829, -0.2618, -0.3093, -0.1546, -0.3169,\n", + " -0.1207, -0.0818, -0.1371, 0.0572, -0.0464, -0.0135, -0.0425, -0.0030,\n", + " 0.1219, 0.1587, 0.1656, -0.0329, -0.1916, -0.3408, -0.2057, -0.3210,\n", + " -0.3685, -0.2667, -0.2074, -0.1291, -0.1578, -0.0443, 0.1314, 0.2635,\n", + " 0.3781, 0.5271, 0.3580]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00011531432392075658\n", + "Grad encoder.fc1.bias: 0.0004737167328130454\n", + "Grad encoder.encoder.0.weight: 4.677598917623982e-05\n", + "Grad encoder.encoder.0.bias: 0.0003494208212941885\n", + "Grad encoder.encoder.2.weight: 4.747822822537273e-05\n", + "Grad encoder.encoder.2.bias: 0.00032696151174604893\n", + "Grad encoder.encoder.4.weight: 0.0001274757378268987\n", + "Grad encoder.encoder.4.bias: 0.0005480387480929494\n", + "Grad decoder.fc1.0.weight: 4.6230488806031644e-05\n", + "Grad decoder.fc1.0.bias: 0.0002230398531537503\n", + "Grad decoder.fc1.2.weight: 6.045862755854614e-05\n", + "Grad decoder.fc1.2.bias: 0.0002823287504725158\n", + "Grad decoder.fc1.4.weight: 5.636713467538357e-05\n", + "Grad decoder.fc1.4.bias: 0.00033082516165450215\n", + "Grad decoder.fc2.weight: 0.00012649928976316005\n", + "Grad decoder.fc2.bias: 0.0023061137180775404\n", + "Grad _memory_unit.weight_ih_l0: 5.4477359299198724e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.016422488144599e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.5769421224831603e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.778240741463378e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.790328239323571e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.5645309506217018e-05\n", + "Data X Sample: tensor([[1.4438, 1.6138, 1.8753, 1.9373, 2.0250, 2.0861, 2.0645, 1.7688, 2.7608,\n", + " 3.9303, 4.0161, 3.9963, 3.7572, 3.8607, 3.6593, 3.5310, 3.4356, 3.4857,\n", + " 3.3102, 3.3103, 3.4326, 3.2578, 2.9424, 2.7924, 2.7890, 2.8835, 2.8158,\n", + " 2.8836, 3.0355, 3.1179, 3.0481, 3.2386, 3.5179, 2.5974, 4.3067, 4.6845,\n", + " 4.9103, 5.2369, 5.7046, 5.6260, 1.1120, 0.6612, 0.6892, 1.1740, 1.7799,\n", + " 1.8241, 1.2510, 1.7280]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3984, -0.9599, -0.3393, -0.0462, -0.7155, -0.9897, 0.5161, 0.4238,\n", + " 0.1509, 0.4234, 0.6867, -0.1711, -0.2640, -0.9352, -0.1775, -0.0815,\n", + " -0.3335, 0.7921, -0.1601, -1.4247, -0.5668, -0.4888, 2.5782, 0.0600,\n", + " 1.1289, 0.2980, 0.4670, 0.7562, -0.3186, 0.1923, 0.6199, 0.1293,\n", + " -0.7878, -0.9101, 0.6280, -0.6122, -0.9937, 0.6849, 0.0173, 0.7589,\n", + " 0.8222, 0.9357, 0.3407]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3588, -0.4187, -0.2244, -0.2176, 0.0407, 0.0399, 0.1804, 0.4300,\n", + " 0.2216, 0.3015, 0.3850, -0.2072, -0.3308, -0.3978, -0.1872, -0.3569,\n", + " -0.0922, -0.0755, -0.1385, 0.0757, -0.0791, -0.0239, -0.0470, -0.0064,\n", + " 0.1833, 0.1701, 0.1358, -0.0913, -0.2551, -0.4550, -0.2798, -0.3863,\n", + " -0.4810, -0.3129, -0.2519, -0.1402, -0.1836, -0.0361, 0.1813, 0.2861,\n", + " 0.4018, 0.6193, 0.4463]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005288986722007394\n", + "Grad encoder.fc1.bias: 0.000666349078528583\n", + "Grad encoder.encoder.0.weight: 0.00018527678912505507\n", + "Grad encoder.encoder.0.bias: 0.0008677048608660698\n", + "Grad encoder.encoder.2.weight: 0.00013589925947599113\n", + "Grad encoder.encoder.2.bias: 0.0007979469955898821\n", + "Grad encoder.encoder.4.weight: 0.0004029835981782526\n", + "Grad encoder.encoder.4.bias: 0.001983312889933586\n", + "Grad decoder.fc1.0.weight: 0.00015178877220023423\n", + "Grad decoder.fc1.0.bias: 0.0005898562958464026\n", + "Grad decoder.fc1.2.weight: 0.00015933769464027137\n", + "Grad decoder.fc1.2.bias: 0.0008510109037160873\n", + "Grad decoder.fc1.4.weight: 0.0001374487765133381\n", + "Grad decoder.fc1.4.bias: 0.0008781689684838057\n", + "Grad decoder.fc2.weight: 0.00013745133765041828\n", + "Grad decoder.fc2.bias: 0.00272058742120862\n", + "Grad _memory_unit.weight_ih_l0: 1.4266491234593559e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.9487367757828906e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.1231237042229623e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.065384549292503e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.879257075022906e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.982703467248939e-05\n", + "Data X Sample: tensor([[2.7168, 2.9218, 2.3110, 2.0838, 2.3494, 2.4500, 3.8732, 4.0431, 4.1985,\n", + " 4.1025, 4.1526, 4.1793, 4.0413, 3.7952, 3.8610, 3.6623, 3.6259, 3.5031,\n", + " 3.6117, 3.6023, 3.4375, 3.3481, 3.0171, 2.8516, 2.8265, 2.8522, 2.8664,\n", + " 2.8550, 2.8863, 3.0360, 2.9501, 3.1502, 3.3287, 2.4029, 4.0199, 4.4656,\n", + " 4.8336, 5.2846, 5.7553, 5.7225, 1.9663, 0.9659, 0.8185, 1.4180, 1.8869,\n", + " 2.0357, 1.3598, 2.0017]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3806, -1.0942, 0.1775, -0.1940, -0.0918, 0.1901, 0.1176, -0.0319,\n", + " 0.0209, 0.3165, 0.0185, 0.1487, -0.1460, 0.9199, 1.5806, -0.2273,\n", + " -0.3591, 0.3693, 0.5549, -0.3303, -0.0850, -0.4194, 0.1375, -0.3025,\n", + " -0.4057, -0.0358, -0.8096, -1.1939, -1.1750, -0.7068, -0.9058, -0.3779,\n", + " -0.3401, -0.7049, -0.6627, 0.2832, -0.0107, 0.7579, -0.3712, 0.3005,\n", + " 0.2701, 0.2488, 0.3143]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3535, -0.3897, -0.2023, -0.2014, 0.0369, 0.0511, 0.1837, 0.4121,\n", + " 0.2034, 0.2831, 0.3617, -0.1997, -0.3137, -0.3868, -0.1845, -0.3245,\n", + " -0.0869, -0.0638, -0.1325, 0.0552, -0.0843, -0.0257, -0.0442, -0.0056,\n", + " 0.1746, 0.1499, 0.1085, -0.1029, -0.2393, -0.4196, -0.2727, -0.3655,\n", + " -0.4563, -0.3079, -0.2291, -0.1453, -0.1602, -0.0340, 0.1603, 0.2908,\n", + " 0.3837, 0.5822, 0.4237]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005603065947070718\n", + "Grad encoder.fc1.bias: 0.0004022170032840222\n", + "Grad encoder.encoder.0.weight: 0.0001791914546629414\n", + "Grad encoder.encoder.0.bias: 0.000456260924693197\n", + "Grad encoder.encoder.2.weight: 0.00012498135038185865\n", + "Grad encoder.encoder.2.bias: 0.0005029051098972559\n", + "Grad encoder.encoder.4.weight: 0.0003425314789637923\n", + "Grad encoder.encoder.4.bias: 0.0009514503180980682\n", + "Grad decoder.fc1.0.weight: 0.0001323212345596403\n", + "Grad decoder.fc1.0.bias: 0.0004082334926351905\n", + "Grad decoder.fc1.2.weight: 0.00017900294915307313\n", + "Grad decoder.fc1.2.bias: 0.0007481166976504028\n", + "Grad decoder.fc1.4.weight: 0.00013501266948878765\n", + "Grad decoder.fc1.4.bias: 0.0006278962828218937\n", + "Grad decoder.fc2.weight: 0.00012160146434325725\n", + "Grad decoder.fc2.bias: 0.002507292665541172\n", + "Grad _memory_unit.weight_ih_l0: 6.588749783986714e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.032067939377157e-05\n", + "Grad _memory_unit.bias_hh_l0: 6.666379249509191e-06\n", + "Grad _memory_unit.weight_ih_l1: 7.5325597208575346e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.108502566348761e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.447980270721018e-05\n", + "Data X Sample: tensor([[-0.0085, 0.0044, -0.0060, -0.0022, -0.0017, 0.0044, 0.0062, -0.0071,\n", + " -0.0098, 0.0205, 0.0127, -0.0019, 0.0155, 0.0000, -0.0050, -0.0150,\n", + " -0.0189, -0.0039, -0.0227, -0.0037, -0.0172, -0.0092, -0.0048, -0.0095,\n", + " -0.0169, -0.0104, -0.0133, 0.0000, -0.0347, 0.0033, -0.0280, -0.0138,\n", + " 0.0000, -0.0114, 0.0270, 0.0292, 0.0020, 0.0053, 0.0317, 0.0199,\n", + " 0.0286, -0.0040, 0.0061, 0.0115, -0.0238, -0.0229, -0.0816, -0.0313]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6149, 0.4959, 0.5732, -1.0787, -1.6266, -2.1939, -0.8141, -0.6725,\n", + " -0.5966, -0.7093, -0.6350, 0.8991, -0.6679, 0.7284, 0.6080, 0.7768,\n", + " 0.1767, 0.2142, -0.6900, 0.1326, -0.1028, 0.3671, -1.2404, 0.1569,\n", + " -0.3424, 0.2945, -0.0608, 0.6201, 0.5659, 0.4601, 0.8293, 1.4529,\n", + " 0.1612, -0.0630, -0.0369, -0.1512, -0.4532, -0.3631, -0.4066, -0.6341,\n", + " -0.5061, -0.4226, 0.0380]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 8.8953e-01, 6.3217e-01, 3.2350e-01, 4.4162e-01, -4.2368e-01,\n", + " -8.4461e-01, -1.2274e+00, -1.1198e+00, -8.6272e-01, -9.4315e-01,\n", + " -9.6768e-01, 2.6046e-01, 3.8228e-01, 7.0287e-01, 2.9790e-01,\n", + " 4.7465e-01, 3.6421e-01, -1.2522e-01, 5.7718e-02, 1.9197e-01,\n", + " 3.1521e-02, 2.4405e-02, -2.5628e-02, 2.7175e-02, -3.3207e-04,\n", + " -5.8380e-02, 2.9113e-01, 5.3370e-01, 1.0931e+00, 1.0742e+00,\n", + " 8.6986e-01, 5.3376e-01, 7.4139e-01, 5.5327e-01, 3.6900e-01,\n", + " 4.0333e-01, -4.8808e-02, -7.0159e-02, -5.0478e-02, -8.8633e-01,\n", + " -7.1895e-01, -6.4308e-01, -4.1351e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0015197766479104757\n", + "Grad encoder.fc1.bias: 0.001321011921390891\n", + "Grad encoder.encoder.0.weight: 0.0005073532811366022\n", + "Grad encoder.encoder.0.bias: 0.0014969112817198038\n", + "Grad encoder.encoder.2.weight: 0.0003085724310949445\n", + "Grad encoder.encoder.2.bias: 0.0012576603330671787\n", + "Grad encoder.encoder.4.weight: 0.0007865051738917828\n", + "Grad encoder.encoder.4.bias: 0.0027619502507150173\n", + "Grad decoder.fc1.0.weight: 0.00021308095892891288\n", + "Grad decoder.fc1.0.bias: 0.0008286102674901485\n", + "Grad decoder.fc1.2.weight: 0.00014922804257366806\n", + "Grad decoder.fc1.2.bias: 0.001033162698149681\n", + "Grad decoder.fc1.4.weight: 0.00010498370102141052\n", + "Grad decoder.fc1.4.bias: 0.0008257250301539898\n", + "Grad decoder.fc2.weight: 0.00012064634211128578\n", + "Grad decoder.fc2.bias: 0.0026349907275289297\n", + "Grad _memory_unit.weight_ih_l0: 2.0930949176545255e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.010293145664036e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.24499087582808e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.3771757949143648e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001317660789936781\n", + "Grad _memory_unit.bias_hh_l1: 7.250986527651548e-05\n", + "Data X Sample: tensor([[1.4512, 1.6590, 1.7941, 1.9613, 1.9738, 2.0891, 2.1307, 2.3168, 3.8592,\n", + " 4.2494, 4.3556, 4.2709, 4.2787, 4.0188, 3.9140, 3.7293, 3.6731, 3.6327,\n", + " 3.5477, 3.4033, 3.5185, 3.3649, 3.0171, 2.7122, 2.6632, 2.8574, 2.7465,\n", + " 2.8020, 2.8968, 3.0426, 3.1146, 3.1447, 3.7093, 2.7554, 4.5126, 4.8061,\n", + " 5.0204, 5.3827, 5.8821, 5.6062, 1.1216, 0.6572, 0.6629, 1.1252, 1.6491,\n", + " 1.8927, 1.3190, 1.7515]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5075, -0.6937, -0.8007, -0.9462, 0.7177, -1.7838, 0.4786, 0.3195,\n", + " -0.8555, 0.0664, 0.2074, -0.1504, 3.7170, 0.6224, -1.0071, 0.3520,\n", + " 0.1509, -0.9719, -0.2220, 0.3724, 0.0371, 0.2676, 1.0304, 0.2565,\n", + " 0.8807, -0.1731, -0.1529, 0.1794, -0.7775, -0.3788, -1.5480, 0.8838,\n", + " -0.1611, -0.1986, -0.9361, -1.2078, -0.8958, -0.6143, 0.9794, 0.4229,\n", + " 0.3689, 0.4965, 0.7284]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2803, -0.2011, -0.0892, -0.0091, 0.1444, 0.1628, 0.1614, 0.3212,\n", + " 0.1831, 0.2788, 0.1905, -0.1370, -0.2547, -0.2813, -0.1238, -0.1917,\n", + " -0.0800, -0.0203, -0.0829, -0.0309, -0.0738, -0.0778, -0.0255, -0.0553,\n", + " 0.0801, 0.0334, -0.0481, -0.1784, -0.2235, -0.3182, -0.2457, -0.2366,\n", + " -0.3913, -0.2407, -0.1714, -0.1399, -0.0348, -0.0033, 0.0498, 0.2436,\n", + " 0.2890, 0.3410, 0.2465]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002772838925011456\n", + "Grad encoder.fc1.bias: 0.00023005346884019673\n", + "Grad encoder.encoder.0.weight: 9.781512198969722e-05\n", + "Grad encoder.encoder.0.bias: 0.00033940852154046297\n", + "Grad encoder.encoder.2.weight: 6.267325079534203e-05\n", + "Grad encoder.encoder.2.bias: 0.0003858332638628781\n", + "Grad encoder.encoder.4.weight: 0.00017023622058331966\n", + "Grad encoder.encoder.4.bias: 0.0008529754122719169\n", + "Grad decoder.fc1.0.weight: 7.682802970521152e-05\n", + "Grad decoder.fc1.0.bias: 0.0003275992930866778\n", + "Grad decoder.fc1.2.weight: 0.00010538310743868351\n", + "Grad decoder.fc1.2.bias: 0.0004282429872546345\n", + "Grad decoder.fc1.4.weight: 9.881687583401799e-05\n", + "Grad decoder.fc1.4.bias: 0.00044650144991464913\n", + "Grad decoder.fc2.weight: 0.00010099641076521948\n", + "Grad decoder.fc2.bias: 0.0017971438355743885\n", + "Grad _memory_unit.weight_ih_l0: 1.0553019819781184e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.067175879958086e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.6523197448113933e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.650828825309873e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.950705185066909e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.237825851305388e-05\n", + "Data X Sample: tensor([[1.3271, 1.3837, 1.7250, 1.9438, 2.0797, 2.1465, 2.1693, 2.1096, 3.0610,\n", + " 3.8940, 4.3429, 4.2105, 3.9126, 3.8770, 3.7324, 3.5871, 3.5300, 3.6734,\n", + " 3.6654, 3.4312, 3.4203, 3.4889, 2.9905, 2.7657, 2.7627, 2.9044, 2.9756,\n", + " 3.0671, 3.1396, 3.2064, 3.3175, 3.3436, 3.7797, 2.8011, 4.5518, 5.0663,\n", + " 5.1522, 5.4754, 5.9391, 5.8615, 1.0691, 0.6233, 0.6285, 1.1252, 1.6332,\n", + " 1.9556, 1.2510, 1.9079]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4297, -0.4367, 0.3658, -0.6519, 0.0233, -0.0589, 1.0193, 0.6316,\n", + " 0.3646, 0.4220, 1.0213, -0.7732, -0.9970, -1.2338, -0.5725, -1.8489,\n", + " -1.4116, 0.1377, -0.4130, 0.2050, 0.6439, -0.0774, 1.0891, 0.8952,\n", + " 0.5671, 0.4738, -1.3512, 0.9023, -0.9835, -0.7063, -1.3503, -0.5058,\n", + " -1.0769, -0.8360, -0.5295, -0.8994, -0.3727, -0.6596, -0.0059, 0.9357,\n", + " 1.0103, 1.1943, 0.6334]], device='cuda:0')\n", + "Prediction Sample: tensor([[-2.1718e-01, -1.0707e-01, -3.8613e-02, 4.2795e-02, 1.2483e-01,\n", + " 1.6643e-01, 1.2887e-01, 2.3680e-01, 1.3503e-01, 2.2337e-01,\n", + " 9.8997e-02, -9.9671e-02, -1.8918e-01, -1.9704e-01, -8.6988e-02,\n", + " -1.0960e-01, -8.2746e-02, -7.9218e-03, -6.5348e-02, -7.1354e-02,\n", + " -5.9272e-02, -8.6289e-02, -1.3074e-02, -6.2165e-02, 1.7450e-02,\n", + " -1.5318e-02, -9.1592e-02, -1.7102e-01, -1.7133e-01, -2.0264e-01,\n", + " -1.9086e-01, -1.5384e-01, -2.9330e-01, -1.8842e-01, -1.1460e-01,\n", + " -1.3217e-01, 2.6555e-02, -7.6298e-05, -1.7598e-02, 2.1355e-01,\n", + " 2.2772e-01, 1.9836e-01, 1.3535e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00021295525948517025\n", + "Grad encoder.fc1.bias: 0.00022118199558462948\n", + "Grad encoder.encoder.0.weight: 7.167021976783872e-05\n", + "Grad encoder.encoder.0.bias: 0.0002963124425150454\n", + "Grad encoder.encoder.2.weight: 5.3543390095001087e-05\n", + "Grad encoder.encoder.2.bias: 0.0003480065206531435\n", + "Grad encoder.encoder.4.weight: 0.00016947474796324968\n", + "Grad encoder.encoder.4.bias: 0.0010403692722320557\n", + "Grad decoder.fc1.0.weight: 5.8005469327326864e-05\n", + "Grad decoder.fc1.0.bias: 0.00031486095394939184\n", + "Grad decoder.fc1.2.weight: 6.95200651534833e-05\n", + "Grad decoder.fc1.2.bias: 0.0004768098588101566\n", + "Grad decoder.fc1.4.weight: 6.178088369779289e-05\n", + "Grad decoder.fc1.4.bias: 0.0004853595746681094\n", + "Grad decoder.fc2.weight: 0.00010575380292721093\n", + "Grad decoder.fc2.bias: 0.0018878791015595198\n", + "Grad _memory_unit.weight_ih_l0: 1.008485287457006e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.328645834699273e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.7574886442162097e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.374349828140112e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.469274037750438e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.8436732463887893e-05\n", + "Data X Sample: tensor([[2.6532, 3.0121, 3.1420, 3.4132, 3.4371, 3.6390, 3.6313, 3.8443, 3.8470,\n", + " 4.1120, 3.8766, 3.9339, 3.9214, 3.7134, 3.7576, 3.5461, 3.6039, 3.3948,\n", + " 3.5023, 3.3345, 3.3344, 3.2042, 2.9014, 2.8497, 2.7758, 2.8731, 2.8931,\n", + " 2.9529, 2.7892, 2.8526, 3.0271, 2.9402, 3.0339, 2.1649, 3.6620, 3.8624,\n", + " 4.2102, 4.4365, 5.0581, 4.8174, 1.9472, 1.1331, 1.0812, 1.9949, 2.9929,\n", + " 3.1793, 2.2436, 3.1746]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.9598, -1.2717, 0.6687, -0.1989, 1.1680, 1.3966, 0.0397, 1.0420,\n", + " 0.4184, 0.8672, 0.8558, -0.7712, -0.9349, -0.6061, -0.8689, -0.5382,\n", + " -1.0346, -0.6608, -1.2936, 0.4453, 0.4088, 0.7419, 0.5596, 0.3680,\n", + " -1.0284, -0.3673, -1.2085, -0.3061, -0.1641, -0.3183, -0.3511, -0.8729,\n", + " -0.8121, -0.3720, -0.1532, -0.2915, 0.1343, 0.8959, -0.9960, 0.9864,\n", + " 1.0918, 0.7617, 0.7598]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1729, -0.1252, -0.0564, -0.0597, -0.0146, 0.0608, 0.0924, 0.1678,\n", + " 0.0721, 0.1278, 0.1018, -0.0912, -0.1267, -0.1473, -0.0805, -0.0941,\n", + " -0.0997, -0.0239, -0.0782, -0.0649, -0.0464, -0.0487, -0.0127, -0.0350,\n", + " -0.0032, 0.0048, -0.0136, -0.0827, -0.0933, -0.1011, -0.1159, -0.1292,\n", + " -0.1818, -0.1596, -0.0693, -0.1182, 0.0165, -0.0213, -0.0336, 0.2038,\n", + " 0.2133, 0.1741, 0.1117]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00013929628767073154\n", + "Grad encoder.fc1.bias: 0.00019827476353384554\n", + "Grad encoder.encoder.0.weight: 4.793656262336299e-05\n", + "Grad encoder.encoder.0.bias: 0.00020586213213391602\n", + "Grad encoder.encoder.2.weight: 4.829241515835747e-05\n", + "Grad encoder.encoder.2.bias: 0.0002308691618964076\n", + "Grad encoder.encoder.4.weight: 0.00014181676669977605\n", + "Grad encoder.encoder.4.bias: 0.0003078689333051443\n", + "Grad decoder.fc1.0.weight: 7.072787411743775e-05\n", + "Grad decoder.fc1.0.bias: 0.00020911492174491286\n", + "Grad decoder.fc1.2.weight: 0.00011671465472318232\n", + "Grad decoder.fc1.2.bias: 0.0006511729443445802\n", + "Grad decoder.fc1.4.weight: 9.788166789803654e-05\n", + "Grad decoder.fc1.4.bias: 0.0006260454538278282\n", + "Grad decoder.fc2.weight: 0.00010182303230976686\n", + "Grad decoder.fc2.bias: 0.0026825445238500834\n", + "Grad _memory_unit.weight_ih_l0: 8.039034582907334e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.356741449853871e-05\n", + "Grad _memory_unit.bias_hh_l0: 7.687349352636375e-06\n", + "Grad _memory_unit.weight_ih_l1: 4.870990778726991e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.1895917092915624e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.314893208676949e-05\n", + "Data X Sample: tensor([[1.6220, 1.7871, 1.8963, 2.0816, 2.1206, 2.2099, 2.2771, 2.5198, 3.8202,\n", + " 4.3221, 4.3207, 4.4890, 4.1034, 3.9343, 3.9014, 3.7799, 3.7014, 3.6579,\n", + " 3.6282, 3.4423, 3.5185, 3.4032, 3.0122, 2.8020, 2.9429, 3.0141, 2.9117,\n", + " 2.9978, 3.1292, 3.3275, 3.2510, 3.4099, 3.8391, 2.7645, 4.5616, 4.8182,\n", + " 5.1325, 5.4145, 6.0532, 5.8388, 1.2409, 0.6930, 0.6730, 1.2429, 1.7720,\n", + " 2.0300, 1.3054, 1.7671]], device='cuda:0')\n", + "Data Y Sample: tensor([[-3.1812e-01, -6.2249e-01, 1.1702e+00, 6.2866e-02, 5.6402e-01,\n", + " 7.9191e-01, 5.0075e-01, 1.5178e-01, 5.3426e-01, 4.5412e-01,\n", + " 4.6988e-01, -3.1267e-03, -6.9120e-01, -2.0195e-01, -2.7115e-01,\n", + " -9.8759e-01, -1.9477e+00, 7.7627e-01, 3.4778e-01, 5.3474e-01,\n", + " -1.8585e+00, 5.4538e-01, 5.0055e-02, -2.3796e-01, 2.0083e-01,\n", + " 4.4971e-01, -7.5819e-01, 8.6161e-02, -7.2899e-01, -1.1983e+00,\n", + " -1.7470e+00, -1.9369e-01, -1.4665e-01, -1.3902e-01, -5.8427e-01,\n", + " -2.8219e-01, -1.9440e-03, 1.1226e-01, 9.7944e-01, 3.8333e-01,\n", + " 7.0596e-01, 4.8910e-01, 8.5228e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1479, -0.0440, -0.0100, 0.0268, 0.0318, 0.1123, 0.0868, 0.1376,\n", + " 0.0625, 0.1270, 0.0344, -0.0672, -0.1060, -0.1050, -0.0567, -0.0370,\n", + " -0.0959, -0.0089, -0.0640, -0.1012, -0.0414, -0.0721, -0.0003, -0.0507,\n", + " -0.0453, -0.0421, -0.0820, -0.1188, -0.0875, -0.0498, -0.1066, -0.0764,\n", + " -0.1543, -0.1347, -0.0418, -0.1224, 0.0728, -0.0116, -0.0803, 0.1930,\n", + " 0.1771, 0.0751, 0.0335]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002581113367341459\n", + "Grad encoder.fc1.bias: 0.0009400483686476946\n", + "Grad encoder.encoder.0.weight: 8.232898835558444e-05\n", + "Grad encoder.encoder.0.bias: 0.0008144304156303406\n", + "Grad encoder.encoder.2.weight: 6.48653440293856e-05\n", + "Grad encoder.encoder.2.bias: 0.0008478898671455681\n", + "Grad encoder.encoder.4.weight: 0.0001943884853972122\n", + "Grad encoder.encoder.4.bias: 0.0020549006294459105\n", + "Grad decoder.fc1.0.weight: 6.725552520947531e-05\n", + "Grad decoder.fc1.0.bias: 0.000511405523866415\n", + "Grad decoder.fc1.2.weight: 8.388436981476843e-05\n", + "Grad decoder.fc1.2.bias: 0.0006051137461327016\n", + "Grad decoder.fc1.4.weight: 8.12444559414871e-05\n", + "Grad decoder.fc1.4.bias: 0.000536296225618571\n", + "Grad decoder.fc2.weight: 0.0001179211976705119\n", + "Grad decoder.fc2.bias: 0.0019615180790424347\n", + "Grad _memory_unit.weight_ih_l0: 2.921794293797575e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00011653246474452317\n", + "Grad _memory_unit.bias_hh_l0: 6.1429847846739e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.203409717883915e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001652314094826579\n", + "Grad _memory_unit.bias_hh_l1: 8.621113374829292e-05\n", + "Data X Sample: tensor([[1.5032, 1.7434, 1.7866, 1.8870, 2.1019, 2.2246, 2.3557, 2.4645, 2.4727,\n", + " 2.5797, 2.6552, 2.6875, 2.5255, 2.4784, 2.5421, 2.4589, 2.4152, 2.4992,\n", + " 2.5648, 2.4567, 2.4340, 2.4648, 2.3905, 2.4221, 2.3329, 2.3559, 2.2883,\n", + " 2.3411, 2.3348, 2.3057, 2.2992, 2.3295, 2.2000, 1.4212, 1.9438, 1.7561,\n", + " 1.6223, 1.4894, 1.5212, 1.5406, 1.1359, 0.7269, 0.6487, 1.1654, 1.7839,\n", + " 1.8413, 1.2986, 1.9861]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 5.7251e-01, -1.0277e+00, 4.5517e+00, 2.2619e-03, -3.1964e-01,\n", + " 3.2576e-01, -1.4639e-01, -1.0611e-01, 4.2022e-01, 3.3589e-01,\n", + " 3.0996e-01, 8.4589e-01, -1.0889e+00, -8.0438e-02, 1.6126e-01,\n", + " 3.2391e-01, -4.2690e-01, 2.2578e-01, 1.4508e+00, -5.5256e-01,\n", + " 4.5710e-01, -1.9505e+00, 6.3391e-01, 1.5455e-01, 7.5587e-01,\n", + " 3.0275e-01, 1.0988e+00, -5.8925e-02, 4.5415e-01, -1.1036e-01,\n", + " -1.8993e-01, 3.0364e-01, 4.1387e-01, -6.5388e-01, -3.4661e-01,\n", + " 1.4656e+00, -6.4171e-01, 5.4174e-01, 2.8698e-01, 8.4623e-01,\n", + " -7.6811e-01, 4.6524e-01, -5.7514e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5941, 0.4705, 0.1525, 0.4650, 0.3202, -0.1719, -0.4874, -0.6027,\n", + " -0.3590, -0.5510, -0.4533, 0.2390, 0.1616, 0.4715, 0.2681, 0.5623,\n", + " 0.3409, 0.0238, 0.1800, 0.1876, 0.0708, 0.1803, 0.1136, 0.0124,\n", + " 0.0351, -0.0268, -0.1723, -0.0304, 0.2458, 0.5645, 0.3873, 0.2715,\n", + " 0.5473, 0.4779, 0.2253, 0.4519, -0.0828, -0.0860, 0.1008, -0.5984,\n", + " -0.5255, -0.5278, -0.4640]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007590772584080696\n", + "Grad encoder.fc1.bias: 0.00047970673767849803\n", + "Grad encoder.encoder.0.weight: 0.00021402505808509886\n", + "Grad encoder.encoder.0.bias: 0.000602056214120239\n", + "Grad encoder.encoder.2.weight: 0.00017781727365218103\n", + "Grad encoder.encoder.2.bias: 0.0006694078911095858\n", + "Grad encoder.encoder.4.weight: 0.0004828921228181571\n", + "Grad encoder.encoder.4.bias: 0.0017802942311391234\n", + "Grad decoder.fc1.0.weight: 0.00015035743126645684\n", + "Grad decoder.fc1.0.bias: 0.0005386942066252232\n", + "Grad decoder.fc1.2.weight: 0.00018595844449009746\n", + "Grad decoder.fc1.2.bias: 0.0010242749704048038\n", + "Grad decoder.fc1.4.weight: 0.00019174805493094027\n", + "Grad decoder.fc1.4.bias: 0.0012766264844685793\n", + "Grad decoder.fc2.weight: 0.00017379771452397108\n", + "Grad decoder.fc2.bias: 0.003821614198386669\n", + "Grad _memory_unit.weight_ih_l0: 2.0572753783199005e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.359100421424955e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.3592101570102386e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.097434142138809e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001133498371927999\n", + "Grad _memory_unit.bias_hh_l1: 5.940839400864206e-05\n", + "Data X Sample: tensor([[2.0930, 2.5547, 2.7318, 3.0065, 2.9436, 3.0835, 3.1121, 3.2396, 3.3930,\n", + " 3.3000, 3.4927, 3.3594, 3.3977, 3.3426, 3.1776, 3.1973, 3.1872, 3.3329,\n", + " 3.3660, 3.2229, 3.2069, 3.1139, 3.1327, 2.9337, 2.7946, 2.7373, 2.5467,\n", + " 2.6470, 2.4007, 2.3712, 2.1487, 2.2162, 2.2660, 1.6111, 2.3458, 2.5928,\n", + " 2.6193, 2.8199, 2.9537, 2.9081, 1.7850, 1.0097, 0.9620, 1.7481, 2.6481,\n", + " 2.8477, 1.7813, 2.6820]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.7566, -1.5968, -1.3794, 0.1135, -1.2273, 1.1086, 0.2134, 0.8789,\n", + " 0.7838, 0.8998, 0.6394, -1.6340, 1.0212, 0.1457, -0.5992, -0.5545,\n", + " -0.5656, 1.3011, 1.9776, 0.8917, 0.7583, 1.0984, 1.6861, 1.9570,\n", + " 1.2175, 0.9201, -0.5515, 0.2966, 0.1080, -0.3109, -0.7980, -0.4038,\n", + " -1.0071, -0.1625, -0.3181, -1.0450, -0.7465, 0.1511, -1.1818, 1.0400,\n", + " 0.9502, 0.7678, 0.6778]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2622, 0.1241, -0.0435, 0.1934, 0.0561, -0.0917, -0.1758, -0.2916,\n", + " -0.1229, -0.2091, -0.2274, 0.0967, 0.0538, 0.1932, 0.1244, 0.2100,\n", + " 0.1059, 0.0113, 0.0531, -0.0083, -0.0249, 0.0495, 0.1112, -0.0193,\n", + " -0.0670, -0.0660, -0.0909, -0.0159, 0.1047, 0.2411, 0.1224, 0.1081,\n", + " 0.2192, 0.1859, 0.1104, 0.1753, -0.0966, -0.0951, 0.0281, -0.2528,\n", + " -0.2231, -0.1520, -0.1176]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000731763313524425\n", + "Grad encoder.fc1.bias: 0.0004776519490405917\n", + "Grad encoder.encoder.0.weight: 0.00019663618877530098\n", + "Grad encoder.encoder.0.bias: 0.0005491584306582808\n", + "Grad encoder.encoder.2.weight: 0.0001760560553520918\n", + "Grad encoder.encoder.2.bias: 0.0006934861885383725\n", + "Grad encoder.encoder.4.weight: 0.00045302658691070974\n", + "Grad encoder.encoder.4.bias: 0.0017940215766429901\n", + "Grad decoder.fc1.0.weight: 0.00013124711404088885\n", + "Grad decoder.fc1.0.bias: 0.0004999706288799644\n", + "Grad decoder.fc1.2.weight: 0.00014944055874366313\n", + "Grad decoder.fc1.2.bias: 0.0009060592274181545\n", + "Grad decoder.fc1.4.weight: 0.00016272772336378694\n", + "Grad decoder.fc1.4.bias: 0.0012157197343185544\n", + "Grad decoder.fc2.weight: 0.0001440682535758242\n", + "Grad decoder.fc2.bias: 0.0039127906784415245\n", + "Grad _memory_unit.weight_ih_l0: 1.3744678653893061e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.30777841352392e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.3869946087652352e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.190796845359728e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.034224785864353e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.647176683647558e-05\n", + "Data X Sample: tensor([[1.6135, 1.6881, 1.8948, 1.9788, 2.1855, 2.3557, 2.3803, 2.4134, 2.4825,\n", + " 2.6302, 2.6045, 2.4889, 2.4412, 2.5302, 2.5269, 2.3905, 2.3790, 2.4141,\n", + " 2.5627, 2.4827, 2.4168, 2.4694, 2.4893, 2.4431, 2.3742, 2.4761, 2.4801,\n", + " 2.4553, 2.1370, 2.3188, 2.2537, 2.3654, 2.2176, 1.4601, 1.9291, 1.8023,\n", + " 1.6538, 1.4894, 1.5402, 1.5746, 1.2409, 0.7348, 0.7276, 1.1941, 1.7641,\n", + " 1.9671, 1.3258, 1.8922]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6227, -1.1425, -1.4902, 0.4187, -0.4764, -1.3015, 0.0606, -0.5163,\n", + " 0.7308, 1.2645, 1.0748, -1.1201, 2.2473, 0.8122, -0.3687, 0.1758,\n", + " -1.6910, 0.9214, -1.4944, 0.6428, -0.2086, 0.7047, 2.0074, 1.0976,\n", + " -0.0084, 1.7178, 0.4388, -0.5334, -0.0860, 0.5238, -0.9586, 0.3983,\n", + " -0.6881, -0.1568, 0.5442, -0.4829, -0.8287, 0.5417, -0.9499, 0.1765,\n", + " -0.2314, 0.0250, 1.0655]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3478, 0.2535, 0.0309, 0.2942, 0.2249, -0.0888, -0.2312, -0.3703,\n", + " -0.1680, -0.3115, -0.2638, 0.1735, 0.0494, 0.2533, 0.1531, 0.3667,\n", + " 0.1826, -0.0098, 0.1058, 0.0385, 0.0407, 0.1258, 0.0944, -0.0395,\n", + " 0.0058, -0.0661, -0.1691, -0.0714, 0.0924, 0.3170, 0.2107, 0.1230,\n", + " 0.3514, 0.2768, 0.1462, 0.3245, -0.0686, -0.0846, 0.0969, -0.3544,\n", + " -0.3316, -0.2920, -0.2488]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00034578595659695566\n", + "Grad encoder.fc1.bias: 0.00015482818707823753\n", + "Grad encoder.encoder.0.weight: 8.882069232640788e-05\n", + "Grad encoder.encoder.0.bias: 0.00021335676137823611\n", + "Grad encoder.encoder.2.weight: 6.603854853892699e-05\n", + "Grad encoder.encoder.2.bias: 0.00024436216335743666\n", + "Grad encoder.encoder.4.weight: 0.00019719201372936368\n", + "Grad encoder.encoder.4.bias: 0.0007896145689301193\n", + "Grad decoder.fc1.0.weight: 5.320702257449739e-05\n", + "Grad decoder.fc1.0.bias: 0.00018273682508151978\n", + "Grad decoder.fc1.2.weight: 6.376540113706142e-05\n", + "Grad decoder.fc1.2.bias: 0.0005457921070046723\n", + "Grad decoder.fc1.4.weight: 6.835974636487663e-05\n", + "Grad decoder.fc1.4.bias: 0.0006375709781423211\n", + "Grad decoder.fc2.weight: 6.991063128225505e-05\n", + "Grad decoder.fc2.bias: 0.0027423985302448273\n", + "Grad _memory_unit.weight_ih_l0: 5.664209311362356e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.4093846958712675e-06\n", + "Grad _memory_unit.bias_hh_l0: 4.145671937294537e-06\n", + "Grad _memory_unit.weight_ih_l1: 5.186676389712375e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.63291653431952e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.3887081624707207e-05\n", + "Data X Sample: tensor([[1.6114, 1.7012, 1.9369, 1.9591, 2.1275, 2.1878, 2.2001, 3.2055, 4.1009,\n", + " 4.1941, 4.2604, 4.3994, 4.1389, 3.9806, 3.6921, 3.6185, 3.5488, 3.6482,\n", + " 3.5291, 3.4535, 3.5528, 3.4981, 2.9399, 2.8592, 2.8621, 2.8835, 2.9357,\n", + " 3.0181, 3.0702, 3.1212, 3.2231, 3.4348, 3.7005, 2.7576, 4.5469, 4.8158,\n", + " 5.1227, 5.4065, 5.7616, 5.9409, 1.2075, 0.6691, 0.6568, 1.2859, 1.7918,\n", + " 1.8241, 1.2782, 1.7437]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.4924, -1.1350, -0.4556, -1.2018, -1.1199, 1.4642, 1.0507, 0.6988,\n", + " 0.1370, 0.6735, 0.7641, -3.2951, 0.7106, -1.3917, -0.7375, -0.8009,\n", + " 0.0955, -0.4842, -1.4361, -0.6694, -1.3706, -2.1436, -2.6168, -1.2974,\n", + " -1.7590, -1.7361, -0.0436, 0.8939, 0.2864, -0.4442, 0.3055, -0.8634,\n", + " -0.5779, -0.7399, -0.5728, -1.2876, -0.0317, 0.4473, -0.0156, 0.8890,\n", + " 0.9990, 0.9694, 1.1341]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1568, -0.0599, -0.0104, -0.0032, 0.0016, 0.0967, 0.1009, 0.1431,\n", + " 0.0572, 0.1124, 0.0590, -0.0719, -0.0983, -0.1164, -0.0741, -0.0398,\n", + " -0.1039, -0.0035, -0.0712, -0.1082, -0.0538, -0.0609, 0.0022, -0.0401,\n", + " -0.0475, -0.0392, -0.0745, -0.1124, -0.0839, -0.0327, -0.1048, -0.0811,\n", + " -0.1410, -0.1468, -0.0316, -0.1272, 0.0788, -0.0172, -0.0760, 0.2170,\n", + " 0.1890, 0.0900, 0.0420]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001835553557612002\n", + "Grad encoder.fc1.bias: 0.0004852856509387493\n", + "Grad encoder.encoder.0.weight: 5.5228294513653964e-05\n", + "Grad encoder.encoder.0.bias: 0.0005313192959874868\n", + "Grad encoder.encoder.2.weight: 4.468548286240548e-05\n", + "Grad encoder.encoder.2.bias: 0.0005455792997963727\n", + "Grad encoder.encoder.4.weight: 0.0001697672123555094\n", + "Grad encoder.encoder.4.bias: 0.001374540850520134\n", + "Grad decoder.fc1.0.weight: 6.843527808086947e-05\n", + "Grad decoder.fc1.0.bias: 0.00040563332731835544\n", + "Grad decoder.fc1.2.weight: 9.796566155273467e-05\n", + "Grad decoder.fc1.2.bias: 0.000985574908554554\n", + "Grad decoder.fc1.4.weight: 9.109461097978055e-05\n", + "Grad decoder.fc1.4.bias: 0.0008552335784770548\n", + "Grad decoder.fc2.weight: 0.00011628364882199094\n", + "Grad decoder.fc2.bias: 0.0027414984069764614\n", + "Grad _memory_unit.weight_ih_l0: 1.769103437254671e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.916873098816723e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.72759168385528e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.615932529210113e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.958583202911541e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.9658068746794015e-05\n", + "Data X Sample: tensor([[2.7274, 2.8504, 2.1998, 2.2062, 2.2470, 2.1244, 3.1368, 4.0459, 4.0960,\n", + " 4.1262, 4.0510, 4.0449, 3.9392, 3.9397, 3.7299, 3.5953, 3.6275, 3.6656,\n", + " 3.6324, 3.5353, 3.3369, 3.4354, 3.0749, 2.8993, 2.8284, 2.7059, 2.6133,\n", + " 2.6307, 2.6851, 2.7151, 2.7436, 2.9181, 3.1923, 2.3297, 3.9243, 4.3950,\n", + " 4.5642, 5.0143, 5.5081, 5.3451, 1.7277, 0.9021, 0.7902, 1.2802, 1.7958,\n", + " 2.1844, 1.3666, 2.1816]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0030, 0.3281, 0.2467, 0.4552, -0.5211, -1.8931, -1.5965, -1.5915,\n", + " -1.1108, -0.7269, -0.1677, 0.6896, -0.4910, 0.9028, -1.0132, -0.8357,\n", + " -0.5701, -0.5118, -0.3538, 0.7814, -0.4565, 1.8343, 0.1932, 1.2466,\n", + " -1.5951, -0.3093, 0.3180, 0.1368, 0.6891, 1.1403, 0.9558, 0.3441,\n", + " 0.0667, 1.5599, 0.0875, 0.5147, 0.0000, -0.1220, -0.2733, 0.4040,\n", + " 0.3402, 1.0057, 0.3164]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1694, -0.0829, -0.0173, -0.0538, -0.0520, 0.0677, 0.1070, 0.1396,\n", + " 0.0323, 0.0811, 0.0838, -0.0812, -0.0873, -0.1348, -0.0954, -0.0366,\n", + " -0.0896, -0.0017, -0.0745, -0.1022, -0.0673, -0.0421, -0.0021, -0.0176,\n", + " -0.0254, -0.0235, -0.0554, -0.0916, -0.0574, -0.0159, -0.1004, -0.0959,\n", + " -0.1186, -0.1545, -0.0149, -0.1330, 0.0630, -0.0211, -0.0651, 0.2279,\n", + " 0.1797, 0.1203, 0.0730]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002389299334026873\n", + "Grad encoder.fc1.bias: 0.00027982002939097583\n", + "Grad encoder.encoder.0.weight: 6.747555744368583e-05\n", + "Grad encoder.encoder.0.bias: 0.0003105649957433343\n", + "Grad encoder.encoder.2.weight: 4.945132241118699e-05\n", + "Grad encoder.encoder.2.bias: 0.000408519699703902\n", + "Grad encoder.encoder.4.weight: 0.0001387653755955398\n", + "Grad encoder.encoder.4.bias: 0.0013438462046906352\n", + "Grad decoder.fc1.0.weight: 5.689619138138369e-05\n", + "Grad decoder.fc1.0.bias: 0.00037852226523682475\n", + "Grad decoder.fc1.2.weight: 8.669567614560947e-05\n", + "Grad decoder.fc1.2.bias: 0.0007126879645511508\n", + "Grad decoder.fc1.4.weight: 8.031995821511373e-05\n", + "Grad decoder.fc1.4.bias: 0.0007186300354078412\n", + "Grad decoder.fc2.weight: 8.08907498139888e-05\n", + "Grad decoder.fc2.bias: 0.0017619197024032474\n", + "Grad _memory_unit.weight_ih_l0: 1.3079658856440801e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.9651378251146525e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.106399526586756e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.4413912948803045e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010501368524273857\n", + "Grad _memory_unit.bias_hh_l1: 5.3916937758913264e-05\n", + "Data X Sample: tensor([[ 0.0000, -0.0073, 0.0090, 0.0000, -0.0068, 0.0103, 0.0092, 0.0057,\n", + " 0.0220, 0.0237, 0.0032, 0.0136, 0.0022, 0.0000, 0.0050, 0.0055,\n", + " -0.0566, -0.0600, -0.0743, -0.0688, -0.0662, -0.0383, -0.0530, -0.0554,\n", + " -0.0544, -0.0966, -0.0826, -0.2080, -0.0416, -0.0295, -0.0140, -0.0028,\n", + " 0.0132, -0.0435, -0.0074, 0.0219, 0.0118, 0.0133, 0.0190, 0.0057,\n", + " 0.0239, 0.0020, 0.0202, -0.0115, -0.0238, 0.0000, 0.0068, -0.0313]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7697, 0.7093, 0.6583, 0.5562, 0.7483, 0.5522, -0.3489, -0.0731,\n", + " -1.5058, -0.5715, -0.4226, -0.1104, 0.1008, 0.3847, 0.3883, 0.3831,\n", + " 0.2639, 0.4911, -0.1850, 0.3064, -0.6522, 0.1361, -0.2880, -0.2108,\n", + " 0.4436, 0.4771, -0.0499, 0.3746, -0.2552, 0.7149, 1.1930, 0.3397,\n", + " 1.2842, 0.7095, -0.2147, 1.2497, -0.3148, -0.3712, -0.0059, -0.3114,\n", + " -0.3610, -0.3806, -0.5014]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.6000, 0.4399, 0.1905, 0.3947, 0.0827, -0.2679, -0.6314, -0.7545,\n", + " -0.2973, -0.4615, -0.3538, 0.2956, 0.2260, 0.4818, 0.2208, 0.4044,\n", + " 0.3856, 0.0469, 0.2057, 0.1210, 0.0065, 0.0643, -0.0353, 0.0172,\n", + " 0.0330, 0.0524, -0.0973, 0.1631, 0.4229, 0.5646, 0.4476, 0.3428,\n", + " 0.5182, 0.4866, 0.2508, 0.2812, 0.0137, -0.0117, -0.0344, -0.4909,\n", + " -0.4560, -0.4384, -0.3815]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002902118139900267\n", + "Grad encoder.fc1.bias: 0.0005754414014518261\n", + "Grad encoder.encoder.0.weight: 9.326234430773184e-05\n", + "Grad encoder.encoder.0.bias: 0.0003742730768863112\n", + "Grad encoder.encoder.2.weight: 7.605628343299031e-05\n", + "Grad encoder.encoder.2.bias: 0.000571004522498697\n", + "Grad encoder.encoder.4.weight: 0.000213250721571967\n", + "Grad encoder.encoder.4.bias: 0.0013993371976539493\n", + "Grad decoder.fc1.0.weight: 6.527808727696538e-05\n", + "Grad decoder.fc1.0.bias: 0.00039749473216943443\n", + "Grad decoder.fc1.2.weight: 9.167619282379746e-05\n", + "Grad decoder.fc1.2.bias: 0.0008832287858240306\n", + "Grad decoder.fc1.4.weight: 8.035659266170114e-05\n", + "Grad decoder.fc1.4.bias: 0.0008702815393917263\n", + "Grad decoder.fc2.weight: 0.00010517619375605136\n", + "Grad decoder.fc2.bias: 0.0027986555360257626\n", + "Grad _memory_unit.weight_ih_l0: 1.3169973499316256e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.526084325741976e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.3312458981527016e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.15643318471848e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010809450759552419\n", + "Grad _memory_unit.bias_hh_l1: 5.5386743042618036e-05\n", + "Data X Sample: tensor([[0.0095, 0.0117, 0.0165, 0.0481, 0.0785, 0.0737, 0.0971, 0.1022, 0.0903,\n", + " 0.1169, 0.1142, 0.1188, 0.1265, 0.1363, 0.1437, 0.1655, 0.1777, 0.1857,\n", + " 0.2003, 0.1990, 0.2159, 0.1960, 0.2024, 0.1775, 0.1933, 0.2037, 0.2158,\n", + " 0.2977, 0.1422, 0.1769, 0.1680, 0.1520, 0.1342, 0.0961, 0.1275, 0.1265,\n", + " 0.1278, 0.1299, 0.1838, 0.1362, 0.0334, 0.0060, 0.0222, 0.0057, 0.0674,\n", + " 0.0743, 0.0068, 0.0626]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 9.9602e-01, 5.8305e-01, -1.3308e-01, 3.4645e-01, -4.1884e-01,\n", + " -1.6562e-01, -8.7787e-01, -1.1908e+00, -2.0146e-01, -8.1464e-01,\n", + " -4.6450e-01, 5.8226e-01, 3.1630e-01, 9.1665e-01, 3.5581e-01,\n", + " 1.7702e-01, 8.4923e-01, 7.4480e-01, 1.9913e-01, 4.9869e-04,\n", + " 9.6757e-01, 7.0931e-02, 1.9691e-01, 1.0136e+00, -7.6783e-01,\n", + " 7.3207e-01, 2.0277e-01, 7.8574e-01, 1.6567e+00, 1.0974e+00,\n", + " 6.9855e-01, 5.8604e-01, 1.0662e+00, 5.5704e-01, 1.0629e+00,\n", + " -1.7440e-01, -7.7889e-01, -8.6851e-02, 5.0463e-01, -4.5678e-01,\n", + " -5.1896e-01, -5.7862e-01, -4.5221e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.6252, 0.4219, 0.1742, 0.3688, -0.1017, -0.4151, -0.7437, -0.8389,\n", + " -0.3989, -0.5366, -0.4688, 0.3046, 0.2486, 0.5054, 0.2151, 0.3738,\n", + " 0.3517, 0.0215, 0.1694, 0.0708, -0.0161, 0.0537, -0.0397, 0.0092,\n", + " -0.0040, -0.0193, 0.0159, 0.2812, 0.5797, 0.6788, 0.5240, 0.3830,\n", + " 0.5404, 0.4941, 0.2910, 0.2840, 0.0028, -0.0106, -0.0426, -0.5353,\n", + " -0.4849, -0.4240, -0.3382]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001469949638703838\n", + "Grad encoder.fc1.bias: 0.0004975044867023826\n", + "Grad encoder.encoder.0.weight: 6.0632974054897204e-05\n", + "Grad encoder.encoder.0.bias: 0.0006666669505648315\n", + "Grad encoder.encoder.2.weight: 5.617876013275236e-05\n", + "Grad encoder.encoder.2.bias: 0.0007418831810355186\n", + "Grad encoder.encoder.4.weight: 0.000176260233274661\n", + "Grad encoder.encoder.4.bias: 0.0017159436829388142\n", + "Grad decoder.fc1.0.weight: 8.09638513601385e-05\n", + "Grad decoder.fc1.0.bias: 0.0005079907132312655\n", + "Grad decoder.fc1.2.weight: 0.00010675562953110784\n", + "Grad decoder.fc1.2.bias: 0.0007133821491152048\n", + "Grad decoder.fc1.4.weight: 8.618403080618009e-05\n", + "Grad decoder.fc1.4.bias: 0.0006700463709421456\n", + "Grad decoder.fc2.weight: 0.00013844904606230557\n", + "Grad decoder.fc2.bias: 0.0024878005497157574\n", + "Grad _memory_unit.weight_ih_l0: 1.5046661246742588e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.513552216347307e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.417621701373719e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.673764801234938e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010219206887995824\n", + "Grad _memory_unit.bias_hh_l1: 5.373534804675728e-05\n", + "Data X Sample: tensor([[2.6309, 2.7980, 2.3276, 2.2040, 2.2999, 2.1495, 3.4156, 3.9167, 4.1448,\n", + " 4.1389, 4.0161, 4.2475, 4.0657, 3.7325, 3.7475, 3.5816, 3.6102, 3.5128,\n", + " 3.4775, 3.2824, 3.3001, 3.2716, 3.1231, 2.8115, 2.7139, 2.7164, 2.7092,\n", + " 2.7530, 2.6713, 2.7380, 2.6806, 2.8849, 3.1197, 2.3411, 3.8606, 4.3123,\n", + " 4.6153, 5.0328, 5.6412, 5.5664, 1.7802, 0.9439, 0.8569, 1.3864, 1.8314,\n", + " 2.1157, 1.4754, 1.9704]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2625, 0.3532, -0.3556, -0.3616, -0.8125, -0.8815, -2.3259, -2.1332,\n", + " -0.4512, -1.3754, -0.3690, 1.3721, 0.2883, 0.2601, -0.6133, 0.0564,\n", + " 0.2603, -0.3612, -0.7350, 0.5146, 0.9167, 0.1865, 1.6718, 0.5738,\n", + " 0.3618, -0.6187, 0.4250, 0.3757, 0.8481, 0.4192, 1.1282, 0.7815,\n", + " 0.3643, -0.0088, 0.3856, -0.5234, 0.0000, -0.1220, -0.2733, 0.1109,\n", + " -0.3351, 0.5368, 0.3866]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1868, -0.1054, -0.0109, -0.0618, -0.0552, 0.0972, 0.1410, 0.1806,\n", + " 0.0557, 0.0972, 0.1224, -0.0970, -0.0921, -0.1670, -0.1302, -0.0527,\n", + " -0.0963, 0.0111, -0.0654, -0.1214, -0.0806, -0.0304, -0.0095, -0.0111,\n", + " -0.0177, -0.0187, -0.0836, -0.1111, -0.0751, -0.0375, -0.1340, -0.1044,\n", + " -0.1330, -0.1800, -0.0222, -0.1547, 0.0559, -0.0064, -0.0545, 0.2668,\n", + " 0.2083, 0.1633, 0.1037]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00019290746422484517\n", + "Grad encoder.fc1.bias: 0.0003538191085681319\n", + "Grad encoder.encoder.0.weight: 5.251996481092647e-05\n", + "Grad encoder.encoder.0.bias: 0.00032895104959607124\n", + "Grad encoder.encoder.2.weight: 4.721649384009652e-05\n", + "Grad encoder.encoder.2.bias: 0.0005732163554057479\n", + "Grad encoder.encoder.4.weight: 0.00012874312233179808\n", + "Grad encoder.encoder.4.bias: 0.0012745497515425086\n", + "Grad decoder.fc1.0.weight: 5.710477489628829e-05\n", + "Grad decoder.fc1.0.bias: 0.00040098256431519985\n", + "Grad decoder.fc1.2.weight: 7.710919453529641e-05\n", + "Grad decoder.fc1.2.bias: 0.0005076252855360508\n", + "Grad decoder.fc1.4.weight: 7.213670323835686e-05\n", + "Grad decoder.fc1.4.bias: 0.0005094659281894565\n", + "Grad decoder.fc2.weight: 0.0001230627385666594\n", + "Grad decoder.fc2.bias: 0.0019914493896067142\n", + "Grad _memory_unit.weight_ih_l0: 1.653358958719764e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.429011020576581e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.942684270441532e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.95749315834837e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001026992395054549\n", + "Grad _memory_unit.bias_hh_l1: 5.4265437938738614e-05\n", + "Data X Sample: tensor([[1.4247, 1.5235, 1.6664, 1.7624, 1.7979, 1.9786, 2.0660, 2.1550, 3.9105,\n", + " 4.2952, 4.1208, 4.1969, 4.0879, 4.0024, 3.7526, 3.6049, 3.5080, 3.5728,\n", + " 3.4878, 3.5074, 3.5283, 3.4859, 2.9905, 2.7943, 2.8828, 2.9358, 2.8984,\n", + " 3.0549, 3.0425, 3.0655, 3.3035, 3.2939, 3.6917, 2.8469, 4.5984, 4.9034,\n", + " 5.1443, 5.5417, 5.8123, 5.7395, 1.0357, 0.6811, 0.6023, 1.0448, 1.5302,\n", + " 1.6240, 1.1558, 1.7515]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.4921, 0.3317, 1.7156, 1.3818, 1.2212, -0.1993, 0.4497, -0.0413,\n", + " -0.2426, -1.1672, -0.0892, 1.6874, 0.4279, -1.0645, -2.4035, -0.9808,\n", + " -0.0039, 0.6938, 0.4931, -0.1262, 0.1516, -0.7109, 1.5889, -0.2036,\n", + " 0.7504, 0.1187, -1.6868, -0.2360, 0.0934, -0.1317, -0.2765, 0.0776,\n", + " 0.5440, 0.1344, 0.7867, 1.0712, -0.4931, -0.3276, 0.1256, 0.2469,\n", + " -0.6743, -0.8293, -0.7510]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2176, -0.0758, -0.0043, -0.0066, 0.0122, 0.1686, 0.1838, 0.1961,\n", + " 0.0956, 0.1303, 0.1363, -0.0845, -0.1197, -0.2138, -0.1393, -0.0315,\n", + " -0.0660, 0.0087, -0.0644, -0.1019, -0.1115, -0.0603, -0.0124, -0.0396,\n", + " -0.0006, -0.0409, -0.1293, -0.1909, -0.1428, -0.0790, -0.1846, -0.1410,\n", + " -0.1786, -0.2189, -0.0390, -0.1674, 0.0929, -0.0095, -0.0321, 0.2664,\n", + " 0.2008, 0.1581, 0.1417]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00023363999207504094\n", + "Grad encoder.fc1.bias: 0.0006461584707722068\n", + "Grad encoder.encoder.0.weight: 7.083867967594415e-05\n", + "Grad encoder.encoder.0.bias: 0.00046025379560887814\n", + "Grad encoder.encoder.2.weight: 5.786079418612644e-05\n", + "Grad encoder.encoder.2.bias: 0.00042030817712657154\n", + "Grad encoder.encoder.4.weight: 0.0001528340799268335\n", + "Grad encoder.encoder.4.bias: 0.0006385135930031538\n", + "Grad decoder.fc1.0.weight: 5.922406489844434e-05\n", + "Grad decoder.fc1.0.bias: 0.00029591197380796075\n", + "Grad decoder.fc1.2.weight: 8.053189958445728e-05\n", + "Grad decoder.fc1.2.bias: 0.0005597744602710009\n", + "Grad decoder.fc1.4.weight: 9.331650653621182e-05\n", + "Grad decoder.fc1.4.bias: 0.0008189920336008072\n", + "Grad decoder.fc2.weight: 0.00014096617815084755\n", + "Grad decoder.fc2.bias: 0.002274746773764491\n", + "Grad _memory_unit.weight_ih_l0: 1.421027809556108e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.5523691622074693e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.0155875972704962e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.867876668868121e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.361891453503631e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.8734779334627092e-05\n", + "Data X Sample: tensor([[1.3080, 1.4900, 1.7130, 1.8170, 1.8816, 2.0434, 2.0845, 2.0514, 4.1009,\n", + " 4.2684, 4.3270, 4.1423, 4.1522, 4.0134, 3.9443, 3.6541, 3.6180, 3.5960,\n", + " 3.6902, 3.6804, 3.4841, 3.5777, 3.1255, 2.8840, 2.8002, 2.8313, 2.9676,\n", + " 2.9774, 2.9627, 3.0852, 3.2336, 3.3547, 3.7357, 2.7554, 4.6180, 4.8207,\n", + " 5.0047, 5.5417, 6.0088, 5.9097, 1.0595, 0.5815, 0.6063, 1.0994, 1.6213,\n", + " 1.7441, 1.1898, 1.5951]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.8961e+00, -1.2572e+00, 5.2976e-01, -1.8253e-01, -4.2388e-01,\n", + " 2.1023e-01, -2.1233e-01, 6.1047e-01, 1.5963e-01, 5.4401e-01,\n", + " 5.5565e-01, -6.5008e-02, 8.9325e-02, -5.2777e-01, 2.4736e-02,\n", + " -8.8885e-01, -3.3478e-01, -2.1215e-01, -4.7233e-02, 4.9045e-01,\n", + " 2.6345e-01, 5.2646e-01, 1.7805e-01, 5.3379e-01, 3.7074e-01,\n", + " -3.6197e-02, 1.3328e+00, -6.6412e-01, 1.6935e-01, 1.0827e-01,\n", + " 7.4483e-01, -2.6589e-01, -1.6008e-01, -9.6574e-01, 4.3207e-01,\n", + " 4.6328e-01, -3.4391e-02, 7.9524e-01, 1.0325e+00, 5.9890e-01,\n", + " 2.2075e-01, -2.7689e-03, -1.3931e-04]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2185, -0.0899, 0.0030, -0.0087, 0.0304, 0.1618, 0.1745, 0.2014,\n", + " 0.0896, 0.1345, 0.1274, -0.0892, -0.1300, -0.2204, -0.1453, -0.0427,\n", + " -0.0633, 0.0207, -0.0563, -0.1064, -0.1154, -0.0512, -0.0097, -0.0275,\n", + " 0.0120, -0.0368, -0.1326, -0.1806, -0.1332, -0.0994, -0.1832, -0.1366,\n", + " -0.1939, -0.2107, -0.0408, -0.1565, 0.0771, 0.0011, -0.0291, 0.2624,\n", + " 0.1948, 0.1726, 0.1465]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00010895239392993972\n", + "Grad encoder.fc1.bias: 0.00031610485166311264\n", + "Grad encoder.encoder.0.weight: 2.6807996619027108e-05\n", + "Grad encoder.encoder.0.bias: 0.0002699610486160964\n", + "Grad encoder.encoder.2.weight: 2.6751073164632544e-05\n", + "Grad encoder.encoder.2.bias: 0.00039394659688696265\n", + "Grad encoder.encoder.4.weight: 7.26086727809161e-05\n", + "Grad encoder.encoder.4.bias: 0.0007589279557578266\n", + "Grad decoder.fc1.0.weight: 4.0663842810317874e-05\n", + "Grad decoder.fc1.0.bias: 0.00025287055177614093\n", + "Grad decoder.fc1.2.weight: 4.6135155571391806e-05\n", + "Grad decoder.fc1.2.bias: 0.0003501223400235176\n", + "Grad decoder.fc1.4.weight: 5.4996111430227757e-05\n", + "Grad decoder.fc1.4.bias: 0.0003592550056055188\n", + "Grad decoder.fc2.weight: 9.79364340309985e-05\n", + "Grad decoder.fc2.bias: 0.0017733379499986768\n", + "Grad _memory_unit.weight_ih_l0: 8.462260666419752e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.543687125784345e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.8989316231454723e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.7284860354702687e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.16034742759075e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.8088299586670473e-05\n", + "Data X Sample: tensor([[1.4894, 1.5352, 1.8227, 1.9635, 1.8987, 2.1171, 2.1523, 2.0187, 3.1635,\n", + " 4.1862, 4.4983, 4.4033, 4.2388, 4.0570, 3.9014, 3.8073, 3.7910, 3.6037,\n", + " 3.6241, 3.5279, 3.4203, 3.4292, 2.9472, 2.7581, 2.8809, 2.9985, 2.9783,\n", + " 3.1854, 2.9904, 3.2686, 3.2475, 3.3961, 3.9073, 2.8652, 4.5984, 4.9447,\n", + " 4.9909, 5.5947, 5.9581, 6.0402, 1.0882, 0.6293, 0.6609, 1.1883, 1.8433,\n", + " 1.9556, 1.2238, 1.6968]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0423, -0.3833, 0.1226, -0.8450, 0.3063, 0.6316, 0.0837, 0.1065,\n", + " -0.3762, 0.2681, 0.3655, -0.6592, -0.3789, -1.0453, -0.2582, -0.8542,\n", + " 0.5066, -0.8751, 0.4182, -0.3046, -1.2693, -2.3608, -2.4053, 0.2724,\n", + " 0.2879, 0.9477, -0.1274, 0.9835, -0.1170, 0.2800, -0.9876, -0.1688,\n", + " 0.0656, -0.3507, 0.3191, 0.1088, -0.6348, 0.0000, -0.7367, 0.1529,\n", + " 0.2065, 0.3731, 0.0217]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2185, -0.1027, 0.0089, -0.0119, 0.0445, 0.1535, 0.1647, 0.2055,\n", + " 0.0827, 0.1377, 0.1185, -0.0933, -0.1379, -0.2243, -0.1484, -0.0534,\n", + " -0.0629, 0.0309, -0.0505, -0.1112, -0.1173, -0.0430, -0.0068, -0.0152,\n", + " 0.0215, -0.0339, -0.1336, -0.1691, -0.1233, -0.1158, -0.1793, -0.1317,\n", + " -0.2060, -0.2020, -0.0423, -0.1460, 0.0638, 0.0107, -0.0271, 0.2591,\n", + " 0.1906, 0.1838, 0.1476]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001026563550112769\n", + "Grad encoder.fc1.bias: 0.00010251734056510031\n", + "Grad encoder.encoder.0.weight: 3.675546759041026e-05\n", + "Grad encoder.encoder.0.bias: 0.0001245391322299838\n", + "Grad encoder.encoder.2.weight: 2.4203083739848807e-05\n", + "Grad encoder.encoder.2.bias: 0.0001529288711026311\n", + "Grad encoder.encoder.4.weight: 7.872696733102202e-05\n", + "Grad encoder.encoder.4.bias: 0.0006649065762758255\n", + "Grad decoder.fc1.0.weight: 4.428939428180456e-05\n", + "Grad decoder.fc1.0.bias: 0.000253820966463536\n", + "Grad decoder.fc1.2.weight: 5.741377026424743e-05\n", + "Grad decoder.fc1.2.bias: 0.00038903753738850355\n", + "Grad decoder.fc1.4.weight: 5.620154115604237e-05\n", + "Grad decoder.fc1.4.bias: 0.0003746252041310072\n", + "Grad decoder.fc2.weight: 7.733936217846349e-05\n", + "Grad decoder.fc2.bias: 0.0015213500009849668\n", + "Grad _memory_unit.weight_ih_l0: 8.062761480687186e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.363570795045234e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.810724825190846e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.902711796399672e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.065422010375187e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.6737270673038438e-05\n", + "Data X Sample: tensor([[2.6150, 3.0179, 3.2517, 3.2995, 3.3500, 3.5255, 3.6899, 3.6768, 3.8885,\n", + " 4.0409, 3.9908, 4.0586, 3.7616, 3.7243, 3.7173, 3.5871, 3.5819, 3.5979,\n", + " 3.5332, 3.4665, 3.4130, 3.2930, 2.9737, 2.9451, 2.8546, 2.8235, 2.8131,\n", + " 2.9325, 2.7788, 2.8526, 2.9361, 2.8435, 2.9679, 2.1466, 3.5566, 3.9086,\n", + " 4.1217, 4.3517, 4.7411, 4.7834, 2.0522, 1.1570, 1.1014, 2.0236, 2.6282,\n", + " 3.1050, 2.1621, 2.9400]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5215, -0.2736, -1.8135, -0.6307, -1.5877, 1.2266, 0.6322, 0.4272,\n", + " 0.9596, 0.6460, 0.7257, -0.7120, -0.1800, -1.0771, -1.0143, -0.4888,\n", + " -0.0935, -0.7157, -0.1044, -0.9208, -0.3583, -0.2241, -0.3687, 0.2315,\n", + " -0.1028, -0.1897, -3.9847, 0.9370, -0.2129, -0.4653, -0.1960, -1.0335,\n", + " -0.7424, -0.5899, -1.6532, 0.1715, 0.1343, 0.0761, -1.1818, 1.1036,\n", + " 0.9881, 1.2358, 0.3029]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1215, -0.1150, -0.0415, -0.0951, -0.0998, 0.0169, 0.0399, 0.0735,\n", + " 0.0119, 0.0582, 0.0489, -0.0619, -0.0622, -0.1022, -0.0730, -0.0526,\n", + " -0.0779, -0.0087, -0.0403, -0.0806, -0.0763, -0.0256, -0.0063, -0.0246,\n", + " -0.0096, -0.0453, -0.0074, -0.0304, -0.0074, -0.0237, -0.0679, -0.0528,\n", + " -0.0846, -0.1051, 0.0012, -0.0798, 0.0227, -0.0031, -0.0528, 0.1743,\n", + " 0.1501, 0.1053, 0.0870]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00023582996800541878\n", + "Grad encoder.fc1.bias: 0.0006294453050941229\n", + "Grad encoder.encoder.0.weight: 7.235763041535392e-05\n", + "Grad encoder.encoder.0.bias: 0.0004943216918036342\n", + "Grad encoder.encoder.2.weight: 4.769464794662781e-05\n", + "Grad encoder.encoder.2.bias: 0.0003873142704833299\n", + "Grad encoder.encoder.4.weight: 0.00010684564767871052\n", + "Grad encoder.encoder.4.bias: 0.0007439460605382919\n", + "Grad decoder.fc1.0.weight: 5.020407115807757e-05\n", + "Grad decoder.fc1.0.bias: 0.0003407672047615051\n", + "Grad decoder.fc1.2.weight: 6.202132499311119e-05\n", + "Grad decoder.fc1.2.bias: 0.00038876698818057775\n", + "Grad decoder.fc1.4.weight: 6.236457556951791e-05\n", + "Grad decoder.fc1.4.bias: 0.000492119521368295\n", + "Grad decoder.fc2.weight: 0.00013469955592881888\n", + "Grad decoder.fc2.bias: 0.0019656363874673843\n", + "Grad _memory_unit.weight_ih_l0: 6.589164058823371e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.0720631912117824e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.5740806702524424e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.4737272471829783e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.793451029807329e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.506214852677658e-05\n", + "Data X Sample: tensor([[1.2900, 1.4958, 1.7100, 1.9307, 1.9362, 1.8534, 1.9844, 2.0741, 3.4760,\n", + " 3.8134, 3.8575, 3.7937, 3.5641, 3.4435, 3.3440, 3.2589, 3.2642, 3.3851,\n", + " 3.4300, 3.3903, 3.4547, 3.4201, 2.8797, 2.7848, 2.7176, 2.7843, 2.8371,\n", + " 2.8754, 2.7129, 2.9181, 3.1356, 3.0397, 3.2891, 2.3251, 3.7159, 4.2224,\n", + " 4.5327, 5.0116, 5.5144, 5.3962, 1.0643, 0.6373, 0.6063, 1.0994, 1.7442,\n", + " 2.0242, 1.1762, 1.8297]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.8747e-01, -2.1203e-01, -8.6075e-01, -4.2484e-01, 2.5271e-01,\n", + " -2.2229e-01, -1.6329e-01, 1.7620e-01, 3.0151e-01, -2.7380e-01,\n", + " 5.4226e-01, 9.2594e-02, 5.2219e-01, 1.0725e+00, -4.3799e-02,\n", + " -8.5529e-02, 1.0575e+00, -5.7771e-01, -7.9637e-01, 1.3951e+00,\n", + " 5.9437e-04, -1.0945e+00, -1.3598e+00, -9.7347e-01, -9.9302e-02,\n", + " 4.0033e-01, -4.5003e-01, 3.5391e-01, -1.5181e-01, -1.6531e-01,\n", + " -2.2282e-01, 1.9076e-01, -5.7596e-01, 4.4106e-01, -3.7351e-01,\n", + " 2.3312e-01, 5.3007e-01, -3.7502e-01, 5.9060e-01, 5.1303e-01,\n", + " 4.9590e-01, 1.7079e-01, -5.0924e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2046, -0.1098, 0.0109, -0.0184, 0.0444, 0.1540, 0.1602, 0.2005,\n", + " 0.0938, 0.1401, 0.1190, -0.0873, -0.1292, -0.2246, -0.1544, -0.0644,\n", + " -0.0642, 0.0348, -0.0287, -0.1090, -0.1151, -0.0354, -0.0142, -0.0186,\n", + " 0.0291, -0.0313, -0.1383, -0.1588, -0.1241, -0.1355, -0.1801, -0.1240,\n", + " -0.2066, -0.1937, -0.0488, -0.1346, 0.0529, 0.0287, -0.0176, 0.2450,\n", + " 0.1875, 0.1894, 0.1589]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001994108024518937\n", + "Grad encoder.fc1.bias: 0.00010000904148910195\n", + "Grad encoder.encoder.0.weight: 7.056859612930566e-05\n", + "Grad encoder.encoder.0.bias: 0.00016259049880318344\n", + "Grad encoder.encoder.2.weight: 3.375604865141213e-05\n", + "Grad encoder.encoder.2.bias: 0.00016539936768822372\n", + "Grad encoder.encoder.4.weight: 0.00010113877942785621\n", + "Grad encoder.encoder.4.bias: 0.0006258090725168586\n", + "Grad decoder.fc1.0.weight: 4.87723846163135e-05\n", + "Grad decoder.fc1.0.bias: 0.0002777209156192839\n", + "Grad decoder.fc1.2.weight: 7.461923087248579e-05\n", + "Grad decoder.fc1.2.bias: 0.0009510043310001493\n", + "Grad decoder.fc1.4.weight: 6.122413469711319e-05\n", + "Grad decoder.fc1.4.bias: 0.0007650528568774462\n", + "Grad decoder.fc2.weight: 0.00010618691158015281\n", + "Grad decoder.fc2.bias: 0.002856161678209901\n", + "Grad _memory_unit.weight_ih_l0: 6.411390586436028e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.2276108211372048e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.207625427923631e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.136720119480742e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.829719182453118e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.5844250558293425e-05\n", + "Data X Sample: tensor([[1.6220, 1.8818, 2.0646, 2.1800, 2.2214, 2.3499, 2.3788, 2.3835, 2.3702,\n", + " 2.4596, 2.5030, 2.4577, 2.4123, 2.3557, 2.2899, 2.4069, 2.3365, 2.3619,\n", + " 2.4099, 2.4678, 2.4634, 2.5980, 2.4773, 2.5729, 2.4774, 2.6850, 2.6400,\n", + " 2.5450, 2.2758, 2.2828, 2.1382, 2.0918, 1.8414, 1.1832, 1.6300, 1.6345,\n", + " 1.5319, 1.4815, 1.4642, 1.3760, 1.2934, 0.7806, 0.7599, 1.3979, 1.9662,\n", + " 2.2415, 1.3666, 1.8922]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.7689, -1.3423, -0.5996, 0.1184, 1.4044, -1.7217, 1.6731, 1.1161,\n", + " 0.7053, 0.2764, 0.9227, 0.6337, -0.3884, -0.4757, 0.3429, -0.3638,\n", + " -0.5690, -0.1971, 0.9859, -0.7885, 1.2293, -1.4760, -0.6076, -0.2595,\n", + " -0.3278, 0.9129, -2.6844, 0.0871, -1.1753, -0.2767, 0.2474, 0.1214,\n", + " -1.6436, -0.5167, -0.4027, -1.5995, 0.0000, -0.6596, 1.8119, 0.6930,\n", + " 0.4157, 0.5756, 0.2908]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2971, 0.1045, -0.1731, 0.2876, 0.0850, -0.1291, -0.3074, -0.3729,\n", + " -0.1593, -0.2654, -0.2611, 0.1492, 0.0222, 0.2131, 0.2907, 0.2072,\n", + " 0.1746, 0.1376, 0.2032, -0.0595, 0.0756, 0.0118, 0.0601, 0.0095,\n", + " 0.0356, -0.1683, -0.1247, 0.1089, 0.1792, 0.3064, 0.2781, 0.1991,\n", + " 0.2586, 0.3394, 0.1747, 0.2637, -0.0167, -0.0445, 0.0591, -0.2683,\n", + " -0.2362, -0.2476, -0.3015]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006320548709481955\n", + "Grad encoder.fc1.bias: 0.0005537928664125502\n", + "Grad encoder.encoder.0.weight: 0.00021324370754882693\n", + "Grad encoder.encoder.0.bias: 0.0005821737577207386\n", + "Grad encoder.encoder.2.weight: 0.0001304546749452129\n", + "Grad encoder.encoder.2.bias: 0.0006204302189871669\n", + "Grad encoder.encoder.4.weight: 0.00034600700018927455\n", + "Grad encoder.encoder.4.bias: 0.0010051107965409756\n", + "Grad decoder.fc1.0.weight: 9.551524999551475e-05\n", + "Grad decoder.fc1.0.bias: 0.0003886492340825498\n", + "Grad decoder.fc1.2.weight: 8.47053452162072e-05\n", + "Grad decoder.fc1.2.bias: 0.0007062608492560685\n", + "Grad decoder.fc1.4.weight: 7.856596494093537e-05\n", + "Grad decoder.fc1.4.bias: 0.000709052721504122\n", + "Grad decoder.fc2.weight: 0.00011246812937315553\n", + "Grad decoder.fc2.bias: 0.00214632716961205\n", + "Grad _memory_unit.weight_ih_l0: 1.3865068467566743e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.8933216779259965e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.227066240971908e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.917969130881829e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.160815973998979e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.3314947359031066e-05\n", + "Data X Sample: tensor([[1.6984, 1.8964, 2.0781, 2.1625, 2.2368, 2.4117, 2.5929, 2.6944, 2.5631,\n", + " 2.6129, 2.7155, 2.7947, 2.6276, 2.6528, 2.6278, 2.5067, 2.4938, 2.5534,\n", + " 2.5648, 2.5366, 2.6204, 2.5337, 2.5978, 2.5366, 2.5825, 2.7451, 2.5467,\n", + " 2.5981, 2.4388, 2.5251, 2.4777, 2.5340, 2.3232, 1.5447, 2.0320, 1.8825,\n", + " 1.7659, 1.7068, 1.6607, 1.5916, 1.3077, 0.7329, 0.7579, 1.3175, 1.8869,\n", + " 2.1615, 1.5094, 2.0252]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2099, -0.0560, 0.8253, -0.0165, 1.1650, 0.0554, -0.1950, -0.0223,\n", + " -0.3566, -0.8348, -0.3473, 0.1371, 0.5433, 1.0683, 0.4811, 0.6103,\n", + " 0.0872, 0.3691, 0.0716, 0.5015, 0.2361, -0.3735, 0.9551, 0.1571,\n", + " 2.4055, 1.5416, 0.6109, -0.3074, -0.2883, 0.1041, -0.4886, -0.9607,\n", + " 0.1848, 0.4162, -0.5998, -0.4110, -0.9211, 0.8959, 2.2782, -0.1062,\n", + " -0.0309, 0.0548, 0.1598]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3186, 0.1359, -0.1712, 0.3434, 0.1069, -0.1212, -0.3329, -0.3986,\n", + " -0.1631, -0.2831, -0.2599, 0.1567, 0.0142, 0.2197, 0.3142, 0.2229,\n", + " 0.2100, 0.1558, 0.2442, -0.0432, 0.1083, 0.0108, 0.0442, 0.0102,\n", + " 0.0513, -0.1523, -0.1458, 0.1265, 0.1738, 0.3116, 0.3100, 0.2267,\n", + " 0.2891, 0.3764, 0.2049, 0.2988, -0.0163, -0.0532, 0.0689, -0.3073,\n", + " -0.2673, -0.2836, -0.3331]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00022692076163366437\n", + "Grad encoder.fc1.bias: 0.0007640642579644918\n", + "Grad encoder.encoder.0.weight: 7.540461956523359e-05\n", + "Grad encoder.encoder.0.bias: 0.0007397240260615945\n", + "Grad encoder.encoder.2.weight: 8.619195432402194e-05\n", + "Grad encoder.encoder.2.bias: 0.0006738136289641261\n", + "Grad encoder.encoder.4.weight: 0.00023010032600723207\n", + "Grad encoder.encoder.4.bias: 0.0013109352439641953\n", + "Grad decoder.fc1.0.weight: 9.066297207027674e-05\n", + "Grad decoder.fc1.0.bias: 0.00046337750973179936\n", + "Grad decoder.fc1.2.weight: 8.313616854138672e-05\n", + "Grad decoder.fc1.2.bias: 0.0006353720091283321\n", + "Grad decoder.fc1.4.weight: 8.238397276727483e-05\n", + "Grad decoder.fc1.4.bias: 0.0006906240014359355\n", + "Grad decoder.fc2.weight: 0.00014230578381102532\n", + "Grad decoder.fc2.bias: 0.0018225866369903088\n", + "Grad _memory_unit.weight_ih_l0: 2.1136887880857103e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.058090002625249e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.167489921906963e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.551814971724525e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011526387970661744\n", + "Grad _memory_unit.bias_hh_l1: 5.9783484175568447e-05\n", + "Data X Sample: tensor([[1.4576, 1.8250, 1.9850, 2.1865, 2.1872, 2.3381, 2.3911, 2.4602, 2.5094,\n", + " 2.5607, 2.5823, 2.5298, 2.5011, 2.4402, 2.4008, 2.5081, 2.4042, 2.4992,\n", + " 2.4925, 2.4976, 2.5321, 2.6714, 2.5496, 2.5882, 2.4812, 2.4761, 2.2803,\n", + " 2.3982, 1.9115, 2.0011, 1.7638, 1.7519, 1.4630, 0.9749, 1.3555, 1.3523,\n", + " 1.3490, 1.3596, 1.3945, 1.4271, 1.3172, 0.7109, 0.7336, 1.3032, 2.0534,\n", + " 2.1443, 1.4346, 2.1503]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2944, 0.0789, -0.1520, 1.0521, 1.1631, 0.3423, -0.4804, -0.4414,\n", + " -0.2786, -0.4288, -0.4691, 3.7470, -0.3327, 0.8236, -0.7771, 0.6225,\n", + " -0.2546, 1.3311, 0.1694, 0.2869, 0.4325, 0.3979, 0.2313, 0.4664,\n", + " -0.8600, 0.5492, 0.0040, -0.5288, 0.4330, 0.0596, 0.2157, 0.2560,\n", + " 0.2964, 0.0414, -0.3512, 1.2048, 0.0637, 0.7450, -0.7367, -0.2532,\n", + " -0.5077, -0.4428, -0.1541]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.1977, 0.0652, -0.0958, 0.2033, 0.0265, -0.0630, -0.1968, -0.2655,\n", + " -0.0567, -0.1254, -0.1313, 0.1104, 0.0126, 0.1169, 0.1458, 0.1301,\n", + " 0.1069, 0.0814, 0.1345, -0.0597, 0.0264, -0.0014, 0.0391, -0.0202,\n", + " -0.0133, -0.0737, -0.1219, 0.0592, 0.0922, 0.1544, 0.1632, 0.1233,\n", + " 0.1826, 0.2131, 0.1359, 0.1581, -0.0304, -0.0487, -0.0062, -0.1561,\n", + " -0.1422, -0.1113, -0.1424]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002561618748586625\n", + "Grad encoder.fc1.bias: 0.0005563629092648625\n", + "Grad encoder.encoder.0.weight: 7.868644024711102e-05\n", + "Grad encoder.encoder.0.bias: 0.0003494670381769538\n", + "Grad encoder.encoder.2.weight: 4.974456533091143e-05\n", + "Grad encoder.encoder.2.bias: 0.00031792811932973564\n", + "Grad encoder.encoder.4.weight: 0.00013976938498672098\n", + "Grad encoder.encoder.4.bias: 0.0004817539011128247\n", + "Grad decoder.fc1.0.weight: 4.0268394513987005e-05\n", + "Grad decoder.fc1.0.bias: 0.00022504905064124614\n", + "Grad decoder.fc1.2.weight: 4.67567442683503e-05\n", + "Grad decoder.fc1.2.bias: 0.0005088719772174954\n", + "Grad decoder.fc1.4.weight: 4.8492227506358176e-05\n", + "Grad decoder.fc1.4.bias: 0.00046575136366300285\n", + "Grad decoder.fc2.weight: 0.0001166662186733447\n", + "Grad decoder.fc2.bias: 0.0014271275140345097\n", + "Grad _memory_unit.weight_ih_l0: 6.850944828329375e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.084821244352497e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.0877753084059805e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.894816472893581e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.96468021790497e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.149396823369898e-05\n", + "Data X Sample: tensor([[1.5913, 1.6881, 1.9219, 1.8236, 1.9140, 2.1186, 2.2447, 2.0797, 3.9666,\n", + " 4.1183, 4.2223, 4.1793, 4.2055, 4.0352, 3.8610, 3.7156, 3.6511, 3.6656,\n", + " 3.4424, 3.5335, 3.4571, 3.4384, 3.1038, 2.9718, 2.8246, 2.8783, 2.9383,\n", + " 3.0385, 3.1292, 3.1769, 3.2196, 3.3326, 3.7621, 2.8217, 4.5910, 4.9155,\n", + " 5.0696, 5.5417, 5.9391, 5.9097, 1.1979, 0.6452, 0.6649, 1.2314, 1.6808,\n", + " 1.7326, 1.1422, 1.6342]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2573, 0.7478, -1.6023, 0.6171, 0.8998, 0.0809, 0.2468, 0.7393,\n", + " -0.4018, 0.2362, 0.4187, -0.2699, -0.2001, 0.0051, 0.2318, 0.2292,\n", + " 0.6950, 1.1468, -0.3253, 0.9139, -0.8442, 0.0642, -0.7545, 0.9794,\n", + " -0.3844, -0.8028, -0.4268, -0.0833, 0.4883, 0.5927, 0.3816, -0.6200,\n", + " -0.2825, -0.1075, -0.1920, 0.1994, 0.0000, -0.0140, -0.5562, 0.4581,\n", + " 0.4431, 0.7822, 0.3836]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2661, -0.1415, 0.0479, 0.0934, 0.2404, 0.3019, 0.2281, 0.2929,\n", + " 0.2095, 0.2671, 0.1653, -0.0859, -0.2136, -0.3173, -0.2310, -0.1322,\n", + " -0.0759, 0.0832, 0.0222, -0.1264, -0.1491, -0.0820, -0.0073, -0.0187,\n", + " 0.0652, -0.0305, -0.2806, -0.2911, -0.2529, -0.2869, -0.2841, -0.1589,\n", + " -0.3372, -0.2479, -0.1040, -0.1298, 0.0638, 0.0837, 0.0590, 0.3076,\n", + " 0.2167, 0.2778, 0.2536]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001163337001344189\n", + "Grad encoder.fc1.bias: 0.0005584078608080745\n", + "Grad encoder.encoder.0.weight: 4.25504294980783e-05\n", + "Grad encoder.encoder.0.bias: 0.0006517713190987706\n", + "Grad encoder.encoder.2.weight: 4.839713801629841e-05\n", + "Grad encoder.encoder.2.bias: 0.0005666820798069239\n", + "Grad encoder.encoder.4.weight: 0.0001552688772790134\n", + "Grad encoder.encoder.4.bias: 0.0008845183765515685\n", + "Grad decoder.fc1.0.weight: 7.300323341041803e-05\n", + "Grad decoder.fc1.0.bias: 0.00038162601413205266\n", + "Grad decoder.fc1.2.weight: 7.923697557998821e-05\n", + "Grad decoder.fc1.2.bias: 0.0005007702857255936\n", + "Grad decoder.fc1.4.weight: 8.879381493898109e-05\n", + "Grad decoder.fc1.4.bias: 0.000702884397469461\n", + "Grad decoder.fc2.weight: 0.0001587146834935993\n", + "Grad decoder.fc2.bias: 0.0028436847496777773\n", + "Grad _memory_unit.weight_ih_l0: 9.925865015247837e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.352693263674155e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.284406789636705e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.6832882364687975e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.148716784082353e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.3849697501864284e-05\n", + "Data X Sample: tensor([[1.3568, 1.3691, 1.5627, 1.7361, 1.7587, 1.8254, 1.9428, 1.8810, 3.3320,\n", + " 3.8292, 4.0415, 3.7898, 3.6906, 3.4981, 3.3819, 3.2794, 3.2061, 3.4896,\n", + " 3.4961, 3.4870, 3.3909, 3.3359, 2.9616, 2.7428, 2.7439, 2.7921, 2.8345,\n", + " 2.8183, 2.7406, 2.8985, 2.9046, 2.9650, 3.2429, 2.3182, 3.7233, 4.2053,\n", + " 4.5445, 5.0514, 5.4384, 5.4757, 1.0452, 0.5476, 0.5982, 1.0305, 1.4509,\n", + " 1.8241, 1.0538, 1.5326]], device='cuda:0')\n", + "Data Y Sample: tensor([[-3.0863e-01, 7.7173e-02, 2.3261e-02, 2.8551e-01, 4.5163e-01,\n", + " 4.4903e-01, 9.3065e-02, 2.0100e-01, 6.2248e-02, 5.0870e-01,\n", + " 4.9744e-02, 5.2792e-01, 2.1367e-01, 1.9583e-01, -6.3189e-01,\n", + " 2.4286e+00, -3.9790e-01, 5.4920e-01, 1.0916e-01, -2.3364e-01,\n", + " 1.1376e+00, 1.8287e-01, -5.0582e-01, -1.6702e-01, -5.9719e-02,\n", + " -4.2681e-01, 1.3672e+00, -1.2284e+00, -1.1276e-01, 1.1990e+00,\n", + " -4.3647e-01, 8.7884e-01, 1.3570e+00, 4.5491e-01, -2.1895e-01,\n", + " -8.2171e-02, 7.0149e-01, 0.0000e+00, 7.1062e-01, -2.0416e-03,\n", + " 3.3920e-01, -7.2085e-02, 4.3214e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2524, -0.1532, 0.0415, 0.0699, 0.1988, 0.2832, 0.2217, 0.2917,\n", + " 0.2106, 0.2570, 0.1791, -0.0910, -0.1897, -0.2954, -0.2326, -0.1480,\n", + " -0.1015, 0.0806, 0.0263, -0.1340, -0.1333, -0.0747, -0.0137, -0.0184,\n", + " 0.0452, -0.0182, -0.2689, -0.2695, -0.2396, -0.2648, -0.2687, -0.1422,\n", + " -0.3095, -0.2396, -0.0967, -0.1332, 0.0533, 0.0847, 0.0500, 0.3203,\n", + " 0.2366, 0.2824, 0.2442]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006879958091303706\n", + "Grad encoder.fc1.bias: 0.00028890708927065134\n", + "Grad encoder.encoder.0.weight: 0.00021247136464808136\n", + "Grad encoder.encoder.0.bias: 0.0005058067617937922\n", + "Grad encoder.encoder.2.weight: 0.00014339754125103354\n", + "Grad encoder.encoder.2.bias: 0.0005479449173435569\n", + "Grad encoder.encoder.4.weight: 0.00037381373113021255\n", + "Grad encoder.encoder.4.bias: 0.0014717865269631147\n", + "Grad decoder.fc1.0.weight: 8.351008727913722e-05\n", + "Grad decoder.fc1.0.bias: 0.0002908304159063846\n", + "Grad decoder.fc1.2.weight: 6.435959949158132e-05\n", + "Grad decoder.fc1.2.bias: 0.0006674890173599124\n", + "Grad decoder.fc1.4.weight: 8.395058830501512e-05\n", + "Grad decoder.fc1.4.bias: 0.0008564572199247777\n", + "Grad decoder.fc2.weight: 0.00011098899994976819\n", + "Grad decoder.fc2.bias: 0.002774144522845745\n", + "Grad _memory_unit.weight_ih_l0: 9.329896784038283e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.1299889592919499e-05\n", + "Grad _memory_unit.bias_hh_l0: 7.59085378376767e-06\n", + "Grad _memory_unit.weight_ih_l1: 6.677706096525071e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.296810923027806e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.900533945648931e-05\n", + "Data X Sample: tensor([[1.6040, 1.8061, 1.9775, 2.1428, 2.2470, 2.3675, 2.5606, 2.6291, 2.5240,\n", + " 2.6460, 2.6711, 2.6778, 2.6165, 2.5547, 2.5093, 2.4370, 2.3428, 2.5166,\n", + " 2.4698, 2.4046, 2.4610, 2.5275, 2.4242, 2.4450, 2.4136, 2.4761, 2.4722,\n", + " 2.4308, 2.2897, 2.4170, 2.2467, 2.3709, 2.2704, 1.5173, 1.9903, 1.8266,\n", + " 1.6951, 1.6485, 1.6036, 1.5661, 1.2695, 0.7050, 0.7195, 1.3175, 1.8869,\n", + " 2.1901, 1.3802, 2.0252]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3576, -0.1601, 0.0049, 0.6270, -0.0227, 1.2033, -0.2923, -0.0891,\n", + " -0.3866, -0.3969, -0.3448, -0.0622, 0.4613, -0.1988, 0.7727, -0.4801,\n", + " -0.0620, 0.4776, 0.1532, 0.0048, -0.5057, 0.9055, -0.0175, 1.4949,\n", + " 0.0939, 0.2482, -0.1724, 0.2981, 1.2583, 1.0766, 0.1622, 0.9603,\n", + " 0.1381, 1.6773, 0.2942, 0.8505, -0.7493, -0.1765, 0.0382, -0.0663,\n", + " 0.1480, -0.1473, 0.3517]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2512, 0.1427, -0.0844, 0.3121, 0.0780, -0.0644, -0.2727, -0.3364,\n", + " -0.0823, -0.1797, -0.1568, 0.1337, 0.0238, 0.1596, 0.2125, 0.1668,\n", + " 0.1597, 0.1151, 0.2062, -0.0279, 0.0938, -0.0151, 0.0208, -0.0168,\n", + " 0.0089, -0.0486, -0.1657, 0.0875, 0.1076, 0.1793, 0.2475, 0.1791,\n", + " 0.2688, 0.3164, 0.2025, 0.2400, -0.0310, -0.0600, 0.0137, -0.2377,\n", + " -0.2070, -0.2017, -0.2355]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00013370986562222242\n", + "Grad encoder.fc1.bias: 0.0006033317768014967\n", + "Grad encoder.encoder.0.weight: 4.478972186916508e-05\n", + "Grad encoder.encoder.0.bias: 0.00033985800109803677\n", + "Grad encoder.encoder.2.weight: 4.42927484982647e-05\n", + "Grad encoder.encoder.2.bias: 0.0003465830232016742\n", + "Grad encoder.encoder.4.weight: 0.00012164561485406011\n", + "Grad encoder.encoder.4.bias: 0.0007607194129377604\n", + "Grad decoder.fc1.0.weight: 4.918480772175826e-05\n", + "Grad decoder.fc1.0.bias: 0.0003939853049814701\n", + "Grad decoder.fc1.2.weight: 5.858265649294481e-05\n", + "Grad decoder.fc1.2.bias: 0.0005767260445281863\n", + "Grad decoder.fc1.4.weight: 5.3084437240613624e-05\n", + "Grad decoder.fc1.4.bias: 0.0005125556490384042\n", + "Grad decoder.fc2.weight: 0.00013044285879004747\n", + "Grad decoder.fc2.bias: 0.0023020270746201277\n", + "Grad _memory_unit.weight_ih_l0: 5.371405222831527e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.020814281422645e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.0793689398269635e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.278554115444422e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.5567295930814e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.9625362003571354e-05\n", + "Data X Sample: tensor([[1.4671, 1.8483, 2.1292, 2.2718, 2.2846, 2.4132, 2.4543, 2.5454, 2.5997,\n", + " 2.6444, 2.6140, 2.6116, 2.5144, 2.4429, 2.5194, 2.4479, 2.4749, 2.5998,\n", + " 2.5503, 2.6166, 2.6548, 2.6699, 2.7062, 2.6435, 2.5224, 2.4604, 2.3336,\n", + " 2.2881, 1.8907, 1.9225, 1.8197, 1.7133, 1.5070, 0.9955, 1.3751, 1.3548,\n", + " 1.4473, 1.4629, 1.6036, 1.5519, 1.3554, 0.7647, 0.7700, 1.4754, 1.9662,\n", + " 2.2187, 1.5094, 2.2050]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3302, 0.1661, 0.0075, -0.3795, 0.5556, -0.2374, 0.4554, 0.0801,\n", + " -0.0910, -0.3891, 0.0495, 0.7725, 0.8930, 0.3762, 1.1309, 0.3387,\n", + " 0.1080, 0.4560, 0.4502, 0.0058, 1.0121, 1.2667, 0.3965, -0.2546,\n", + " 0.0836, -0.4687, 0.0220, -0.2728, -0.1818, 0.3651, 0.1274, 0.3130,\n", + " 0.0495, -0.0127, 0.0136, 0.3497, 0.4138, 0.0000, -0.0197, -0.1187,\n", + " -0.4381, -0.3747, -2.4062]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.1583, 0.0529, -0.0815, 0.1898, -0.0083, -0.0661, -0.2078, -0.2654,\n", + " -0.0535, -0.1043, -0.0986, 0.0975, 0.0177, 0.0970, 0.1330, 0.0967,\n", + " 0.0863, 0.0630, 0.1195, -0.0499, 0.0194, -0.0180, 0.0285, -0.0275,\n", + " -0.0106, -0.0541, -0.1061, 0.0653, 0.1048, 0.1266, 0.1614, 0.1236,\n", + " 0.1941, 0.2101, 0.1517, 0.1576, -0.0396, -0.0581, -0.0108, -0.1208,\n", + " -0.1237, -0.1002, -0.1186]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00010761075827758759\n", + "Grad encoder.fc1.bias: 0.00035933571052737534\n", + "Grad encoder.encoder.0.weight: 3.093696432188153e-05\n", + "Grad encoder.encoder.0.bias: 0.00023940912797115743\n", + "Grad encoder.encoder.2.weight: 3.301795004517771e-05\n", + "Grad encoder.encoder.2.bias: 0.0002582418965175748\n", + "Grad encoder.encoder.4.weight: 8.331937715411186e-05\n", + "Grad encoder.encoder.4.bias: 0.0007048060069791973\n", + "Grad decoder.fc1.0.weight: 4.3602107325568795e-05\n", + "Grad decoder.fc1.0.bias: 0.0003092816914431751\n", + "Grad decoder.fc1.2.weight: 6.681621016468853e-05\n", + "Grad decoder.fc1.2.bias: 0.0003863822785206139\n", + "Grad decoder.fc1.4.weight: 7.721067959209904e-05\n", + "Grad decoder.fc1.4.bias: 0.0005718187894672155\n", + "Grad decoder.fc2.weight: 0.00016616075299680233\n", + "Grad decoder.fc2.bias: 0.002062753075733781\n", + "Grad _memory_unit.weight_ih_l0: 5.040217729401775e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.0457642676774412e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.1408796126488596e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.2860498322406784e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.2565039368346334e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.7342397515894845e-05\n", + "Data X Sample: tensor([[1.8045, 2.3042, 2.6581, 2.9212, 3.0666, 3.1395, 3.2462, 3.4497, 3.3979,\n", + " 3.4659, 3.6323, 3.4607, 3.3400, 3.4326, 3.3592, 3.2096, 3.1919, 3.3484,\n", + " 3.2483, 3.3307, 3.2805, 3.1629, 2.9616, 2.7905, 2.6444, 2.6850, 2.4908,\n", + " 2.5491, 2.1786, 2.0994, 2.0332, 1.8901, 1.6984, 1.1237, 1.6888, 1.9239,\n", + " 2.0628, 2.3402, 2.7255, 2.7009, 1.5750, 0.9957, 0.9458, 1.6849, 2.5410,\n", + " 2.8763, 1.8833, 2.5100]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1570, -0.1525, -0.2881, 0.1898, 2.2241, 0.3124, 0.1116, -0.0239,\n", + " 0.2133, 0.1746, -0.3366, 0.1451, -3.7426, -0.1572, -0.1286, 0.4336,\n", + " -0.0637, 0.6553, 0.5752, 0.9165, 0.0159, -1.4771, 0.2564, 0.8446,\n", + " 0.2212, -1.2102, -1.0880, -2.4769, -2.7951, -2.0148, -1.8589, -1.4094,\n", + " -1.6298, -0.9758, 1.5811, -0.9702, 0.0000, -0.5278, 0.0382, 0.1770,\n", + " -0.2960, -0.2661, -0.6629]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1631, -0.2122, -0.0873, -0.1688, -0.1958, -0.0176, -0.0109, 0.0830,\n", + " 0.0139, 0.0916, 0.1125, -0.0539, -0.0645, -0.1141, -0.0760, -0.1178,\n", + " -0.1375, -0.0695, -0.0443, -0.1024, -0.0938, -0.0206, 0.0082, -0.0547,\n", + " 0.0038, -0.1029, 0.0417, -0.0028, 0.0099, -0.0226, -0.0576, -0.0249,\n", + " -0.0329, -0.0875, 0.0092, -0.0929, -0.0240, -0.0074, -0.0472, 0.2830,\n", + " 0.2209, 0.1575, 0.1353]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003358784597367048\n", + "Grad encoder.fc1.bias: 0.0005945017328485847\n", + "Grad encoder.encoder.0.weight: 9.492393292021006e-05\n", + "Grad encoder.encoder.0.bias: 0.0005631943931803107\n", + "Grad encoder.encoder.2.weight: 5.620410229312256e-05\n", + "Grad encoder.encoder.2.bias: 0.0004671754431910813\n", + "Grad encoder.encoder.4.weight: 0.00012815039372071624\n", + "Grad encoder.encoder.4.bias: 0.0005304474616423249\n", + "Grad decoder.fc1.0.weight: 5.6216293160105124e-05\n", + "Grad decoder.fc1.0.bias: 0.0003338253009133041\n", + "Grad decoder.fc1.2.weight: 5.5056170822354034e-05\n", + "Grad decoder.fc1.2.bias: 0.0009477025596424937\n", + "Grad decoder.fc1.4.weight: 4.798023292096332e-05\n", + "Grad decoder.fc1.4.bias: 0.0006709854933433235\n", + "Grad decoder.fc2.weight: 0.00013720417337026447\n", + "Grad decoder.fc2.bias: 0.001694398233667016\n", + "Grad _memory_unit.weight_ih_l0: 8.047582923609298e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.1401177946245298e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.1289626854704693e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.177610885060858e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.877948180772364e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.594005829654634e-05\n", + "Data X Sample: tensor([[1.5997, 1.9357, 2.0180, 2.1428, 2.2368, 2.2924, 2.3772, 2.5880, 2.4947,\n", + " 2.4802, 2.5949, 2.5162, 2.5766, 2.3938, 2.4008, 2.4110, 2.3994, 2.4354,\n", + " 2.4181, 2.4120, 2.4217, 2.4939, 2.4267, 2.4927, 2.4436, 2.4656, 2.4588,\n", + " 2.4308, 2.2341, 2.3515, 2.2327, 2.1167, 1.8260, 1.1465, 1.6227, 1.5931,\n", + " 1.5201, 1.4603, 1.4769, 1.3788, 1.2743, 0.7249, 0.7841, 1.3548, 1.8156,\n", + " 2.1958, 1.4754, 2.0408]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.2056e-02, -5.4402e-02, -2.1396e+00, -8.8739e-01, -1.9214e+00,\n", + " 1.8263e+00, -1.9864e-01, 6.9780e-01, 6.6610e-01, 6.7338e-01,\n", + " 5.6924e-01, 8.0142e-01, -6.2536e-01, 5.8492e-01, 2.7616e-02,\n", + " 6.6901e-01, 6.6873e-01, 4.5425e-01, 1.1782e-01, 1.3330e-02,\n", + " -3.3948e-01, 6.7571e+00, -4.1986e-02, -2.8733e-02, 9.5127e-01,\n", + " 8.3604e-01, -4.6474e-01, -6.2360e-01, -2.1765e+00, -1.2047e+00,\n", + " -9.6121e-01, 3.5668e-01, 1.6845e-01, 9.0221e-02, -2.4866e-01,\n", + " -8.5043e-01, 5.6924e-01, -6.5961e-01, -5.9407e-03, 4.4232e-01,\n", + " 5.8553e-01, 4.0688e-01, 2.1987e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2893, 0.1971, -0.0769, 0.4027, 0.1120, -0.0899, -0.3570, -0.4225,\n", + " -0.1638, -0.2746, -0.2223, 0.1147, 0.0689, 0.2278, 0.3000, 0.2047,\n", + " 0.1951, 0.1723, 0.2388, 0.0154, 0.1411, 0.0012, 0.0137, 0.0179,\n", + " 0.0446, -0.0551, -0.1554, 0.1642, 0.2052, 0.2580, 0.3282, 0.2449,\n", + " 0.3248, 0.3925, 0.2516, 0.3606, -0.0167, -0.0450, 0.0740, -0.3254,\n", + " -0.2908, -0.3195, -0.3378]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005154883256182075\n", + "Grad encoder.fc1.bias: 0.00020793266594409943\n", + "Grad encoder.encoder.0.weight: 0.000147571467095986\n", + "Grad encoder.encoder.0.bias: 0.00032628647750243545\n", + "Grad encoder.encoder.2.weight: 0.00010463544458616525\n", + "Grad encoder.encoder.2.bias: 0.0003804790903814137\n", + "Grad encoder.encoder.4.weight: 0.00027745665283873677\n", + "Grad encoder.encoder.4.bias: 0.0010596144711598754\n", + "Grad decoder.fc1.0.weight: 6.78099604556337e-05\n", + "Grad decoder.fc1.0.bias: 0.0002444134443067014\n", + "Grad decoder.fc1.2.weight: 6.341947300825268e-05\n", + "Grad decoder.fc1.2.bias: 0.0005008953157812357\n", + "Grad decoder.fc1.4.weight: 5.741503991885111e-05\n", + "Grad decoder.fc1.4.bias: 0.0005480970721691847\n", + "Grad decoder.fc2.weight: 0.00011743132927222177\n", + "Grad decoder.fc2.bias: 0.0021375445649027824\n", + "Grad _memory_unit.weight_ih_l0: 8.941518899518996e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.1434635780460667e-05\n", + "Grad _memory_unit.bias_hh_l0: 7.45825082049123e-06\n", + "Grad _memory_unit.weight_ih_l1: 5.585378858086187e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.06686010339763e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.6246654670103453e-05\n", + "Data X Sample: tensor([[2.6839, 2.8489, 3.1976, 3.3498, 3.3193, 3.7627, 3.7777, 3.6939, 3.8031,\n", + " 3.8308, 3.7211, 3.8891, 3.6906, 3.4953, 3.5534, 3.5228, 3.4860, 3.4103,\n", + " 3.2978, 3.3977, 3.1995, 3.0955, 2.9689, 2.8669, 2.6857, 2.7503, 2.7572,\n", + " 2.7082, 2.6817, 2.7970, 2.8276, 2.8490, 2.9657, 2.2015, 3.6204, 3.9962,\n", + " 4.2201, 4.6538, 5.1024, 5.0075, 1.9425, 1.1889, 1.1196, 2.0581, 2.9097,\n", + " 3.0993, 2.2165, 2.9087]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2357, -0.0889, -0.0915, 0.2105, -0.3408, -0.1907, 0.3357, -0.2793,\n", + " 0.0594, 0.1981, -0.4878, 0.5571, -0.3832, -0.6897, 0.1873, -0.3319,\n", + " 1.1394, 0.0049, -0.6017, -0.7196, -0.6938, -0.6799, -0.0281, -0.1288,\n", + " -0.0827, -1.2166, 0.5596, 0.8868, -0.8750, 0.2157, 0.7567, 0.8778,\n", + " 0.3829, -0.2729, 0.1578, 0.2674, -1.0138, -0.0140, 0.5227, 0.1901,\n", + " 0.2950, 0.1691, -0.0426]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2593, -0.3122, -0.0950, -0.2553, -0.2496, 0.0452, 0.1076, 0.2650,\n", + " 0.1239, 0.1726, 0.2863, -0.1237, -0.0964, -0.2054, -0.1777, -0.2438,\n", + " -0.2335, -0.0892, -0.0543, -0.1634, -0.0771, -0.0175, -0.0497, -0.0556,\n", + " 0.0097, -0.0575, 0.0111, -0.0411, -0.0730, -0.0999, -0.1499, -0.0657,\n", + " -0.0934, -0.2043, -0.0552, -0.2101, -0.0348, 0.0292, -0.0385, 0.4689,\n", + " 0.4111, 0.2933, 0.2088]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00011571664799703285\n", + "Grad encoder.fc1.bias: 0.00041842350037768483\n", + "Grad encoder.encoder.0.weight: 3.302470577182248e-05\n", + "Grad encoder.encoder.0.bias: 0.0003775825025513768\n", + "Grad encoder.encoder.2.weight: 2.6441710360813886e-05\n", + "Grad encoder.encoder.2.bias: 0.0003832675574813038\n", + "Grad encoder.encoder.4.weight: 8.08284676168114e-05\n", + "Grad encoder.encoder.4.bias: 0.0006304139969870448\n", + "Grad decoder.fc1.0.weight: 3.9178121369332075e-05\n", + "Grad decoder.fc1.0.bias: 0.00026910356245934963\n", + "Grad decoder.fc1.2.weight: 6.878239219076931e-05\n", + "Grad decoder.fc1.2.bias: 0.0005036242073401809\n", + "Grad decoder.fc1.4.weight: 7.134571205824614e-05\n", + "Grad decoder.fc1.4.bias: 0.0005868233856745064\n", + "Grad decoder.fc2.weight: 0.0001380442554363981\n", + "Grad decoder.fc2.bias: 0.0018148893723264337\n", + "Grad _memory_unit.weight_ih_l0: 6.67828498990275e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.4250066417152993e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.3852087249688338e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.6497629025689093e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.9233214667765424e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.6919304218608886e-05\n", + "Data X Sample: tensor([[1.5616, 1.7391, 1.9098, 2.0094, 2.3375, 2.4810, 2.4543, 2.5837, 2.5606,\n", + " 2.6697, 2.5410, 2.7810, 2.6187, 2.6610, 2.4614, 2.4821, 2.3994, 2.4818,\n", + " 2.5689, 2.4567, 2.4659, 2.4724, 2.4002, 2.3935, 2.4699, 2.5440, 2.4775,\n", + " 2.4471, 2.3035, 2.3024, 2.3587, 2.3018, 2.2814, 1.5287, 2.0050, 1.8242,\n", + " 1.7305, 1.6193, 1.6036, 1.5349, 1.3554, 0.7329, 0.7437, 1.2285, 1.9147,\n", + " 1.9556, 1.3462, 2.1034]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4638, 0.6051, -0.3062, 0.8452, 0.9045, 0.1183, -0.6072, -0.7363,\n", + " 0.1804, -0.5788, -0.7156, 0.2916, 0.5683, 1.0881, 0.3839, 0.0679,\n", + " 1.1759, 3.0255, -0.0510, 0.7237, -0.0387, -0.4719, -0.2078, 0.0994,\n", + " 1.0982, 0.4778, 0.6125, 0.0031, -0.6435, -0.1533, 0.6184, 0.2372,\n", + " 0.1890, 0.6211, -0.3886, 1.3220, 0.9536, 0.0705, -0.2505, -0.3609,\n", + " -0.3146, -0.7365, -0.6912]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3125, 0.2569, -0.0479, 0.4461, 0.1387, -0.1102, -0.3902, -0.4731,\n", + " -0.1749, -0.2986, -0.2407, 0.1377, 0.1112, 0.2615, 0.3379, 0.2375,\n", + " 0.2196, 0.1718, 0.2274, 0.0370, 0.1421, 0.0220, 0.0119, 0.0165,\n", + " 0.0785, -0.0186, -0.1739, 0.1809, 0.2506, 0.2757, 0.3529, 0.2655,\n", + " 0.3716, 0.4131, 0.2680, 0.3915, -0.0074, -0.0263, 0.1010, -0.3599,\n", + " -0.3386, -0.3630, -0.3618]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007324995822273195\n", + "Grad encoder.fc1.bias: 0.00040845206240192056\n", + "Grad encoder.encoder.0.weight: 0.0001881270727608353\n", + "Grad encoder.encoder.0.bias: 0.0007172265322878957\n", + "Grad encoder.encoder.2.weight: 0.00011591953807510436\n", + "Grad encoder.encoder.2.bias: 0.0007114994805306196\n", + "Grad encoder.encoder.4.weight: 0.00028550991555675864\n", + "Grad encoder.encoder.4.bias: 0.001791073358617723\n", + "Grad decoder.fc1.0.weight: 8.156963303918019e-05\n", + "Grad decoder.fc1.0.bias: 0.00040918809827417135\n", + "Grad decoder.fc1.2.weight: 4.583122063195333e-05\n", + "Grad decoder.fc1.2.bias: 0.0009749323362484574\n", + "Grad decoder.fc1.4.weight: 5.820349178975448e-05\n", + "Grad decoder.fc1.4.bias: 0.0009500846499577165\n", + "Grad decoder.fc2.weight: 0.00011165642354171723\n", + "Grad decoder.fc2.bias: 0.0020813709124922752\n", + "Grad _memory_unit.weight_ih_l0: 1.3250112715468276e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.6092382540809922e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.489813621446956e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.858029443421401e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.374799992656335e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.884073860011995e-05\n", + "Data X Sample: tensor([[2.5556, 2.8868, 3.2216, 3.3323, 3.6437, 3.6625, 3.6745, 3.7364, 3.8348,\n", + " 3.7992, 3.9717, 3.8794, 3.6862, 3.7434, 3.4954, 3.3601, 3.3539, 3.5167,\n", + " 3.3763, 3.3717, 3.3639, 3.3527, 2.9689, 2.8649, 2.7664, 2.8313, 2.8158,\n", + " 2.7938, 2.7684, 2.7675, 2.9711, 2.8739, 2.9745, 2.1695, 3.6963, 4.0351,\n", + " 4.2515, 4.5929, 4.9947, 4.9962, 1.9186, 1.1212, 1.1419, 1.9691, 2.7194,\n", + " 3.1622, 2.0397, 3.0729]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1242, -0.1080, -0.1156, 0.1315, -0.8722, -0.6243, 0.2670, 0.2667,\n", + " 0.2671, 0.4932, 0.4586, -0.8792, -1.0208, -0.8901, -0.5727, -0.7349,\n", + " -0.3203, 0.0572, -0.4864, -0.0255, -0.1253, 1.1411, -0.5779, -0.9556,\n", + " 0.7373, -0.6660, -3.9999, -3.6813, -4.3320, -4.1566, -2.5209, -1.5879,\n", + " -2.5624, -1.8778, -1.3530, -4.0941, -0.7493, -0.7231, -1.1357, 0.2276,\n", + " 0.4159, 0.1333, 0.1019]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2557, -0.3053, -0.0920, -0.2443, -0.2327, 0.0530, 0.1159, 0.2671,\n", + " 0.1295, 0.1750, 0.2824, -0.1262, -0.0932, -0.2061, -0.1785, -0.2426,\n", + " -0.2378, -0.0884, -0.0587, -0.1644, -0.0732, -0.0216, -0.0566, -0.0553,\n", + " 0.0030, -0.0557, 0.0064, -0.0491, -0.0822, -0.1003, -0.1538, -0.0672,\n", + " -0.1004, -0.2101, -0.0619, -0.2049, -0.0328, 0.0287, -0.0409, 0.4635,\n", + " 0.4088, 0.2882, 0.2043]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000226701726205647\n", + "Grad encoder.fc1.bias: 0.0007049007108435035\n", + "Grad encoder.encoder.0.weight: 6.308304728008807e-05\n", + "Grad encoder.encoder.0.bias: 0.0007339915027841926\n", + "Grad encoder.encoder.2.weight: 8.435701602138579e-05\n", + "Grad encoder.encoder.2.bias: 0.0010158608201891184\n", + "Grad encoder.encoder.4.weight: 0.00020827642583753914\n", + "Grad encoder.encoder.4.bias: 0.001916395383886993\n", + "Grad decoder.fc1.0.weight: 9.874974057311192e-05\n", + "Grad decoder.fc1.0.bias: 0.0007066127145662904\n", + "Grad decoder.fc1.2.weight: 9.504382614977658e-05\n", + "Grad decoder.fc1.2.bias: 0.0008326958050020039\n", + "Grad decoder.fc1.4.weight: 8.33973681437783e-05\n", + "Grad decoder.fc1.4.bias: 0.0007099394570104778\n", + "Grad decoder.fc2.weight: 0.00012998911552131176\n", + "Grad decoder.fc2.bias: 0.001795828458853066\n", + "Grad _memory_unit.weight_ih_l0: 2.0359329937491566e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.565747364424169e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.318664286984131e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0048607691715006e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010941054642898962\n", + "Grad _memory_unit.bias_hh_l1: 5.939778566244058e-05\n", + "Data X Sample: tensor([[1.5138, 1.7682, 1.8888, 1.9898, 2.0865, 2.2998, 2.4158, 2.3906, 2.4434,\n", + " 2.5465, 2.4966, 2.5298, 2.4279, 2.3938, 2.3504, 2.4233, 2.3523, 2.4450,\n", + " 2.4181, 2.4306, 2.4438, 2.5076, 2.5182, 2.5328, 2.4905, 2.6354, 2.5760,\n", + " 2.6388, 2.3590, 2.4924, 2.4882, 2.4345, 2.2022, 1.4509, 1.8972, 1.6904,\n", + " 1.6164, 1.4656, 1.6226, 1.5320, 1.2647, 0.7468, 0.6892, 1.2113, 1.9226,\n", + " 1.9671, 1.4006, 2.0721]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1805, 0.7582, -0.5074, 0.6763, 0.7044, 0.1781, -0.0633, -0.3050,\n", + " -0.6531, -0.0616, -0.3333, -0.5261, 0.5248, 0.8089, 0.5107, -0.0768,\n", + " 0.3986, -0.6115, 1.2971, -1.4059, 0.0740, -1.2117, -0.8550, -0.4171,\n", + " -1.0819, -1.2741, -1.5294, 0.3213, -0.1680, 0.3046, 1.0441, -0.7066,\n", + " -0.5415, 0.0408, 0.9508, 0.8553, -0.6306, -0.8198, 2.2782, -0.1786,\n", + " -0.3504, -0.3808, -0.1947]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2473, 0.2147, -0.0136, 0.3250, 0.1021, -0.0903, -0.2810, -0.3768,\n", + " -0.1095, -0.1990, -0.1731, 0.1182, 0.1087, 0.1994, 0.2374, 0.1950,\n", + " 0.1641, 0.1076, 0.1390, 0.0351, 0.0798, 0.0332, 0.0044, -0.0112,\n", + " 0.0569, 0.0252, -0.1384, 0.1227, 0.1915, 0.1851, 0.2395, 0.1864,\n", + " 0.2808, 0.2860, 0.1932, 0.2867, -0.0201, -0.0084, 0.0576, -0.2609,\n", + " -0.2485, -0.2547, -0.2406]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00010069357813335955\n", + "Grad encoder.fc1.bias: 0.0014428424183279276\n", + "Grad encoder.encoder.0.weight: 4.625109431799501e-05\n", + "Grad encoder.encoder.0.bias: 0.0011587904300540686\n", + "Grad encoder.encoder.2.weight: 5.108565164846368e-05\n", + "Grad encoder.encoder.2.bias: 0.0009166942909359932\n", + "Grad encoder.encoder.4.weight: 0.00015345696010626853\n", + "Grad encoder.encoder.4.bias: 0.0019429970998317003\n", + "Grad decoder.fc1.0.weight: 9.358958050142974e-05\n", + "Grad decoder.fc1.0.bias: 0.0007433567079715431\n", + "Grad decoder.fc1.2.weight: 0.00011122370779048651\n", + "Grad decoder.fc1.2.bias: 0.0009431619546376169\n", + "Grad decoder.fc1.4.weight: 0.00010190923057962209\n", + "Grad decoder.fc1.4.bias: 0.0008490841137245297\n", + "Grad decoder.fc2.weight: 0.00017936406948138028\n", + "Grad decoder.fc2.bias: 0.001917442074045539\n", + "Grad _memory_unit.weight_ih_l0: 1.1134595297335181e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.630916373571381e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.5400846425327472e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.583540536870714e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011045913561247289\n", + "Grad _memory_unit.bias_hh_l1: 5.970648999209516e-05\n", + "Data X Sample: tensor([[2.5598, 2.9844, 3.2682, 3.2798, 3.5207, 3.6375, 3.8116, 3.6882, 3.7567,\n", + " 3.9256, 4.0415, 3.8989, 3.8282, 3.6725, 3.5811, 3.4709, 3.4828, 3.4722,\n", + " 3.4589, 3.4070, 3.2412, 3.2057, 2.9665, 2.8096, 2.7664, 2.8000, 2.6720,\n", + " 2.7857, 2.7060, 2.7478, 2.8731, 2.8048, 2.9041, 2.0986, 3.5762, 3.9281,\n", + " 4.2358, 4.7201, 5.3179, 5.0870, 1.8231, 1.0893, 1.1621, 1.9605, 2.7908,\n", + " 3.2194, 2.1485, 3.0729]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0697, -0.1074, 1.1184, 0.0037, 0.4640, 0.6328, 0.5845, -0.1330,\n", + " 0.0970, 0.1784, 0.5229, -0.2941, -0.5347, -1.2201, -0.8620, -1.1143,\n", + " 0.7745, -0.3471, -0.3292, 0.4057, 0.6967, -0.3156, 0.8775, -1.2452,\n", + " 0.0996, 0.6588, 1.5398, 0.0418, 0.4301, 0.0162, -1.0527, -1.2096,\n", + " 0.2697, -0.1509, 0.7756, 0.4455, -0.0868, 0.7428, 0.0000, 0.3736,\n", + " 0.3040, 0.7334, -0.0530]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2475, -0.2341, -0.0429, -0.1301, -0.0999, 0.1158, 0.1453, 0.2626,\n", + " 0.1418, 0.1810, 0.2272, -0.1194, -0.1016, -0.2151, -0.1766, -0.1953,\n", + " -0.1925, -0.0434, -0.0525, -0.1570, -0.0882, -0.0389, -0.0574, -0.0510,\n", + " -0.0141, -0.0549, -0.0720, -0.1084, -0.1193, -0.1195, -0.1733, -0.0698,\n", + " -0.1510, -0.2097, -0.0593, -0.1870, -0.0049, 0.0395, -0.0436, 0.3944,\n", + " 0.3477, 0.2446, 0.1774]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00011977837129961699\n", + "Grad encoder.fc1.bias: 0.00013253407087177038\n", + "Grad encoder.encoder.0.weight: 3.874674075632356e-05\n", + "Grad encoder.encoder.0.bias: 0.00014090236800257117\n", + "Grad encoder.encoder.2.weight: 3.604278026614338e-05\n", + "Grad encoder.encoder.2.bias: 0.00017887266585603356\n", + "Grad encoder.encoder.4.weight: 8.609814540250227e-05\n", + "Grad encoder.encoder.4.bias: 0.00017018537619151175\n", + "Grad decoder.fc1.0.weight: 3.251238740631379e-05\n", + "Grad decoder.fc1.0.bias: 0.000169512873981148\n", + "Grad decoder.fc1.2.weight: 4.192726919427514e-05\n", + "Grad decoder.fc1.2.bias: 0.0004031957359984517\n", + "Grad decoder.fc1.4.weight: 4.061262006871402e-05\n", + "Grad decoder.fc1.4.bias: 0.0005307668470777571\n", + "Grad decoder.fc2.weight: 0.00010388370719738305\n", + "Grad decoder.fc2.bias: 0.00210685096681118\n", + "Grad _memory_unit.weight_ih_l0: 4.719735898106592e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.869587873050477e-06\n", + "Grad _memory_unit.bias_hh_l0: 5.5352079471049365e-06\n", + "Grad _memory_unit.weight_ih_l1: 3.249565224905382e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.6849531423067674e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.4609696336265188e-05\n", + "Data X Sample: tensor([[1.5403, 1.7129, 1.9339, 2.0116, 2.0643, 2.1996, 2.3172, 2.2955, 2.4215,\n", + " 2.5023, 2.5537, 2.5512, 2.4545, 2.4320, 2.4059, 2.2811, 2.2359, 2.3793,\n", + " 2.4553, 2.3674, 2.4462, 2.4586, 2.4869, 2.4259, 2.4549, 2.4735, 2.3683,\n", + " 2.4186, 2.2133, 2.3974, 2.3412, 2.3875, 2.1648, 1.4578, 1.9291, 1.7342,\n", + " 1.5634, 1.4762, 1.5719, 1.5406, 1.2122, 0.6890, 0.6912, 1.2400, 1.8156,\n", + " 2.0814, 1.3326, 1.9313]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6443, 0.3363, 0.4504, -0.0953, -0.8087, -0.9894, -1.6369, -1.4941,\n", + " -0.9660, -0.9711, 0.9130, 1.1418, 1.0628, -0.0052, 0.2569, -0.0303,\n", + " -0.0822, -0.1808, 0.9587, 0.9043, 0.6440, -0.7742, 0.5521, -1.2815,\n", + " -0.7432, 2.0123, -0.8101, 0.3898, 0.5674, 0.7994, 0.8022, 0.3143,\n", + " -0.1834, 0.9725, 1.1657, 0.5620, 0.7406, 0.3449, -0.6860, -0.1438,\n", + " -0.6721, 1.3951, 0.1439]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.1277, 0.0897, -0.0280, 0.1398, -0.0008, -0.0811, -0.1784, -0.2435,\n", + " -0.0381, -0.0755, -0.0745, 0.0923, 0.0589, 0.0992, 0.1206, 0.1015,\n", + " 0.0754, 0.0134, 0.0492, -0.0144, -0.0031, 0.0084, 0.0084, -0.0499,\n", + " 0.0234, 0.0115, -0.0852, 0.0607, 0.1199, 0.0889, 0.1232, 0.0951,\n", + " 0.1771, 0.1493, 0.1187, 0.1318, -0.0417, -0.0164, -0.0033, -0.0850,\n", + " -0.1115, -0.0948, -0.0744]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004970578011125326\n", + "Grad encoder.fc1.bias: 0.001102673588320613\n", + "Grad encoder.encoder.0.weight: 0.00016675214283168316\n", + "Grad encoder.encoder.0.bias: 0.0009933769470080733\n", + "Grad encoder.encoder.2.weight: 0.00012356579827610403\n", + "Grad encoder.encoder.2.bias: 0.0008680129540152848\n", + "Grad encoder.encoder.4.weight: 0.0003440084110479802\n", + "Grad encoder.encoder.4.bias: 0.001880386145785451\n", + "Grad decoder.fc1.0.weight: 9.243886597687379e-05\n", + "Grad decoder.fc1.0.bias: 0.0005486496957018971\n", + "Grad decoder.fc1.2.weight: 6.105010106693953e-05\n", + "Grad decoder.fc1.2.bias: 0.0006420807912945747\n", + "Grad decoder.fc1.4.weight: 6.172452413011342e-05\n", + "Grad decoder.fc1.4.bias: 0.0007198940729722381\n", + "Grad decoder.fc2.weight: 0.00012384302681311965\n", + "Grad decoder.fc2.bias: 0.002164509380236268\n", + "Grad _memory_unit.weight_ih_l0: 1.0589626981527545e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.695354851312004e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.5409195839310996e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.7095911617798265e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.851824921090156e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.1101455281022936e-05\n", + "Data X Sample: tensor([[-0.0053, 0.0000, -0.0015, -0.0022, 0.0051, 0.0044, 0.0031, 0.0000,\n", + " 0.0024, 0.0221, -0.0032, 0.0058, -0.0044, -0.0136, -0.0101, -0.0055,\n", + " 0.0031, -0.0019, -0.0145, 0.0037, 0.0074, -0.0015, 0.0193, 0.0019,\n", + " 0.0282, 0.0052, 0.0133, 0.0122, -0.0243, 0.0262, 0.0105, 0.0055,\n", + " 0.0132, 0.0275, 0.0074, 0.0341, -0.0020, 0.0027, 0.0507, 0.0028,\n", + " 0.0382, 0.0080, 0.0243, -0.0086, 0.0198, 0.0229, 0.0272, 0.0078]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.4225, 1.4165, -0.6220, -0.5562, 0.3884, 0.7679, -0.8299, -1.0186,\n", + " -0.7805, -0.3218, -0.7431, 0.4833, -2.1081, 0.0289, 0.3969, 0.7450,\n", + " 0.1297, -0.2194, -0.0026, -0.3715, -0.7169, -0.0249, 0.4326, -0.0984,\n", + " -0.5003, -1.4066, 0.1714, 0.7444, 1.7873, 0.9916, 1.1519, 0.3746,\n", + " 1.0188, 0.6723, -0.3085, -0.7578, 0.2171, 0.7579, -0.3712, -0.8072,\n", + " -0.6851, -0.7144, -1.4874]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.7015, 0.7122, 0.2568, 0.2519, -0.7249, -1.0371, -1.3022, -1.2181,\n", + " -0.8116, -0.8158, -0.8800, 0.4919, 0.4444, 0.5970, 0.4770, 0.3781,\n", + " 0.3352, 0.0435, 0.0306, 0.1631, 0.1161, 0.0200, -0.1072, -0.1859,\n", + " -0.0039, 0.0647, 0.2952, 0.6916, 1.0938, 1.0083, 0.9912, 0.5596,\n", + " 0.6875, 0.6738, 0.4692, 0.2752, -0.0605, 0.0522, -0.0714, -0.7894,\n", + " -0.6903, -0.5253, -0.3473]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0010546615812927485\n", + "Grad encoder.fc1.bias: 0.0009176688035950065\n", + "Grad encoder.encoder.0.weight: 0.0003360303526278585\n", + "Grad encoder.encoder.0.bias: 0.0011548858601599932\n", + "Grad encoder.encoder.2.weight: 0.00024024519370868802\n", + "Grad encoder.encoder.2.bias: 0.001145593705587089\n", + "Grad encoder.encoder.4.weight: 0.0006582997739315033\n", + "Grad encoder.encoder.4.bias: 0.003077347530052066\n", + "Grad decoder.fc1.0.weight: 0.00014868569269310683\n", + "Grad decoder.fc1.0.bias: 0.0006889349315315485\n", + "Grad decoder.fc1.2.weight: 9.492699609836563e-05\n", + "Grad decoder.fc1.2.bias: 0.0015319158555939794\n", + "Grad decoder.fc1.4.weight: 9.095616405829787e-05\n", + "Grad decoder.fc1.4.bias: 0.0015878734411671758\n", + "Grad decoder.fc2.weight: 0.00015031162183731794\n", + "Grad decoder.fc2.bias: 0.002912851283326745\n", + "Grad _memory_unit.weight_ih_l0: 1.6751013390603475e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.1762181859230623e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.391216392221395e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.3299251804710366e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011923020065296441\n", + "Grad _memory_unit.bias_hh_l1: 6.309425953077152e-05\n", + "Data X Sample: tensor([[1.4088, 1.6895, 1.8016, 1.9329, 2.0660, 2.1023, 2.0383, 2.7782, 3.9520,\n", + " 4.1547, 4.3461, 4.4189, 4.1145, 4.0352, 3.8585, 3.8127, 3.7753, 3.6308,\n", + " 3.4672, 3.5799, 3.4252, 3.2425, 2.8990, 2.8382, 2.8265, 2.9567, 2.9756,\n", + " 3.0263, 2.9627, 3.0721, 3.1986, 3.3630, 3.8215, 2.8171, 4.6670, 4.7769,\n", + " 4.9831, 5.3694, 5.8630, 5.9211, 1.1645, 0.6592, 0.6346, 1.0965, 1.6332,\n", + " 1.9156, 1.3394, 1.8375]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1980, 0.7290, 1.0796, 0.9245, 1.0290, 0.2168, 0.2139, -0.5813,\n", + " -0.5972, -0.1341, -0.3915, 1.5541, 1.7836, -0.1207, 0.2702, 0.2547,\n", + " 1.2087, 0.2467, -0.0590, 2.1104, -0.1945, 0.2601, 0.4613, -1.6561,\n", + " -0.5235, -0.4068, -0.1792, -0.8271, -0.7001, -0.3638, -0.5331, 0.7805,\n", + " 0.2264, 0.7811, -1.1085, -0.7105, -1.1350, -0.6378, 0.1862, -0.8244,\n", + " -0.7345, -0.6837, -1.1989]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2315, -0.1654, 0.0090, 0.0194, 0.1322, 0.1940, 0.1835, 0.2567,\n", + " 0.1817, 0.2100, 0.1642, -0.1175, -0.1416, -0.2504, -0.1684, -0.1614,\n", + " -0.1279, 0.0166, -0.0452, -0.1092, -0.1127, -0.0585, -0.0639, -0.0532,\n", + " -0.0121, -0.0372, -0.1473, -0.1898, -0.2084, -0.2110, -0.2040, -0.1054,\n", + " -0.2705, -0.2244, -0.0970, -0.1279, 0.0151, 0.0538, -0.0161, 0.2620,\n", + " 0.2668, 0.2199, 0.1759]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005087860627099872\n", + "Grad encoder.fc1.bias: 0.0011597119737416506\n", + "Grad encoder.encoder.0.weight: 0.00015611705021001399\n", + "Grad encoder.encoder.0.bias: 0.0009745542774908245\n", + "Grad encoder.encoder.2.weight: 0.00010215032671112567\n", + "Grad encoder.encoder.2.bias: 0.0009192313882522285\n", + "Grad encoder.encoder.4.weight: 0.00028140441281720996\n", + "Grad encoder.encoder.4.bias: 0.002462452743202448\n", + "Grad decoder.fc1.0.weight: 9.440744906896725e-05\n", + "Grad decoder.fc1.0.bias: 0.0007534553296864033\n", + "Grad decoder.fc1.2.weight: 8.462012920062989e-05\n", + "Grad decoder.fc1.2.bias: 0.0009333385387435555\n", + "Grad decoder.fc1.4.weight: 7.85024676588364e-05\n", + "Grad decoder.fc1.4.bias: 0.0009710587910376489\n", + "Grad decoder.fc2.weight: 0.00013296342513058335\n", + "Grad decoder.fc2.bias: 0.00257779099047184\n", + "Grad _memory_unit.weight_ih_l0: 1.3315118849277496e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.330689989728853e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.353559830226004e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.998546036309563e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00012171664275228977\n", + "Grad _memory_unit.bias_hh_l1: 6.458747520809993e-05\n", + "Data X Sample: tensor([[2.9035, 3.2830, 3.7806, 3.6559, 4.2191, 4.0692, 4.1998, 4.3000, 4.5134,\n", + " 4.4232, 4.2414, 4.2319, 3.9237, 3.7980, 3.6013, 3.5762, 3.5709, 3.6269,\n", + " 3.4796, 3.4665, 3.4252, 3.3573, 2.8869, 2.6874, 2.7420, 2.7555, 2.7332,\n", + " 2.8550, 2.8517, 2.9771, 3.0201, 3.0562, 3.4629, 2.5036, 4.1621, 4.5823,\n", + " 5.0008, 5.4940, 6.0659, 5.8956, 2.1477, 1.2486, 1.3581, 2.2992, 3.3140,\n", + " 3.3852, 2.4136, 3.5656]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.2163, -0.4072, -0.6486, -0.4338, 0.1437, 0.5213, 0.1748, 0.2956,\n", + " 0.1385, -0.0423, -1.2186, 0.3557, 0.2926, -0.7943, -0.4554, 0.5601,\n", + " 1.5747, 0.7081, 0.6483, -1.1728, 0.3616, 0.4499, 0.8688, 0.4606,\n", + " 0.6921, 0.5130, -1.2148, -0.4824, 0.2038, -0.2374, -0.1792, -0.1672,\n", + " -0.5886, 0.6454, 0.5424, -0.4966, -0.5722, -0.0606, -0.0330, -0.4877,\n", + " -0.3844, 0.2739, -0.5141]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2326, -0.2198, -0.0450, -0.1339, -0.0958, 0.0926, 0.1215, 0.2263,\n", + " 0.1203, 0.1599, 0.1985, -0.1126, -0.0995, -0.1971, -0.1569, -0.1813,\n", + " -0.1733, -0.0490, -0.0582, -0.1300, -0.0857, -0.0314, -0.0587, -0.0523,\n", + " -0.0099, -0.0452, -0.0400, -0.0834, -0.1042, -0.1137, -0.1556, -0.0684,\n", + " -0.1441, -0.1951, -0.0574, -0.1663, -0.0134, 0.0343, -0.0467, 0.3455,\n", + " 0.3073, 0.2232, 0.1750]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00011882973922183737\n", + "Grad encoder.fc1.bias: 0.0010875312145799398\n", + "Grad encoder.encoder.0.weight: 3.625157114583999e-05\n", + "Grad encoder.encoder.0.bias: 0.0005737696774303913\n", + "Grad encoder.encoder.2.weight: 2.887917435145937e-05\n", + "Grad encoder.encoder.2.bias: 0.0003884222242049873\n", + "Grad encoder.encoder.4.weight: 8.893363701645285e-05\n", + "Grad encoder.encoder.4.bias: 0.0005993872764520347\n", + "Grad decoder.fc1.0.weight: 4.983024700777605e-05\n", + "Grad decoder.fc1.0.bias: 0.000283998204395175\n", + "Grad decoder.fc1.2.weight: 8.801584772299975e-05\n", + "Grad decoder.fc1.2.bias: 0.000820115499664098\n", + "Grad decoder.fc1.4.weight: 8.717966557014734e-05\n", + "Grad decoder.fc1.4.bias: 0.001035132328979671\n", + "Grad decoder.fc2.weight: 0.00014575787645298988\n", + "Grad decoder.fc2.bias: 0.002192283049225807\n", + "Grad _memory_unit.weight_ih_l0: 5.728141786676133e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.2238006092957221e-05\n", + "Grad _memory_unit.bias_hh_l0: 7.2373477451037616e-06\n", + "Grad _memory_unit.weight_ih_l1: 4.501324838201981e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.535693005891517e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.5192717657773755e-05\n", + "Data X Sample: tensor([[1.5170, 1.6983, 1.7746, 2.0291, 2.1838, 2.3395, 2.5544, 2.4900, 2.5094,\n", + " 2.5860, 2.5696, 2.6681, 2.5988, 2.5683, 2.5774, 2.3754, 2.3900, 2.5398,\n", + " 2.6143, 2.4455, 2.5468, 2.4081, 2.4532, 2.3591, 2.3216, 2.3037, 2.3070,\n", + " 2.3329, 2.1231, 2.2697, 2.2537, 2.1388, 2.2330, 1.4807, 1.9193, 1.7682,\n", + " 1.6538, 1.5159, 1.6036, 1.6427, 1.2218, 0.7249, 0.6528, 1.2371, 1.8196,\n", + " 2.0357, 1.3938, 2.0408]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.7596, 0.1059, 0.4108, 1.4801, -0.1366, 0.8949, 1.2797, -0.3817,\n", + " 0.4770, 0.8975, 0.8347, 0.8873, 0.2385, -0.1371, 0.0223, -0.7206,\n", + " -0.2683, -0.9986, -0.6915, 0.0317, 0.1030, -0.8088, 0.3151, -0.5626,\n", + " 0.5095, 0.0198, -0.0409, -1.2379, -1.1641, 0.3791, 0.3691, 0.1502,\n", + " 0.6567, 1.2803, 0.4592, -1.2567, 0.3306, -0.6423, 0.7285, 0.8433,\n", + " 0.6504, -0.5963, 0.4484]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2856, 0.3258, 0.0560, 0.3194, 0.1850, -0.0918, -0.2552, -0.3565,\n", + " -0.1091, -0.2044, -0.1863, 0.1249, 0.1403, 0.2671, 0.2464, 0.2778,\n", + " 0.2185, 0.0472, 0.1147, 0.0920, 0.0755, 0.0821, -0.0083, -0.0300,\n", + " 0.1023, 0.1015, -0.1711, 0.0534, 0.1814, 0.1656, 0.2017, 0.1617,\n", + " 0.2922, 0.2535, 0.1789, 0.2646, -0.0341, 0.0284, 0.0556, -0.2688,\n", + " -0.2720, -0.2869, -0.2772]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004454211739357561\n", + "Grad encoder.fc1.bias: 0.0006120948819443583\n", + "Grad encoder.encoder.0.weight: 0.00014042020484339446\n", + "Grad encoder.encoder.0.bias: 0.0005370217259041965\n", + "Grad encoder.encoder.2.weight: 8.819130016490817e-05\n", + "Grad encoder.encoder.2.bias: 0.0004436238668859005\n", + "Grad encoder.encoder.4.weight: 0.0002172038657590747\n", + "Grad encoder.encoder.4.bias: 0.0010006027296185493\n", + "Grad decoder.fc1.0.weight: 6.502970063593239e-05\n", + "Grad decoder.fc1.0.bias: 0.00034489997779019177\n", + "Grad decoder.fc1.2.weight: 6.661140650976449e-05\n", + "Grad decoder.fc1.2.bias: 0.0009217916522175074\n", + "Grad decoder.fc1.4.weight: 5.9797406720463187e-05\n", + "Grad decoder.fc1.4.bias: 0.0009524452616460621\n", + "Grad decoder.fc2.weight: 0.0001236490934388712\n", + "Grad decoder.fc2.bias: 0.002590677235275507\n", + "Grad _memory_unit.weight_ih_l0: 1.0848113561223727e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.3009386495687068e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.3444543583318591e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.646771337022074e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.623728015460074e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.025069938506931e-05\n", + "Data X Sample: tensor([[1.1913, 1.3575, 1.5252, 1.6421, 1.7399, 1.8593, 2.0398, 1.7490, 3.1733,\n", + " 3.9983, 3.8290, 3.7314, 3.6640, 3.7080, 3.4575, 3.4544, 3.4152, 3.4722,\n", + " 3.4672, 3.3438, 3.3688, 3.2700, 2.8628, 2.7447, 2.7064, 2.7007, 2.6320,\n", + " 2.6511, 2.7406, 2.8002, 2.9011, 2.9429, 3.3133, 2.3938, 3.8851, 4.2175,\n", + " 4.4973, 4.8049, 5.2926, 5.1919, 0.9927, 0.5676, 0.5942, 1.0132, 1.4430,\n", + " 1.6240, 1.1830, 1.5638]], device='cuda:0')\n", + "Data Y Sample: tensor([[-4.5939e-01, -4.8721e-01, -5.5603e-01, 1.3220e-01, 1.5827e-01,\n", + " -1.8594e-01, 2.5940e-01, 6.7267e-02, 3.6369e-01, -1.7436e-01,\n", + " 2.6378e-01, 1.5591e-01, -3.1484e-01, -6.6989e-01, -2.5874e-01,\n", + " 8.7060e-01, 1.1933e+00, 3.2964e-01, 1.4551e-03, 6.5016e-01,\n", + " 4.9946e-01, 5.5105e-01, -1.0850e+00, 1.9849e+00, 3.6672e-01,\n", + " 1.2848e-01, -1.5930e+00, -2.0279e+00, -7.5637e-02, -2.6388e-01,\n", + " -4.3772e-01, -5.0892e-02, -1.0371e+00, -4.5876e-01, 4.2545e-01,\n", + " -1.0541e+00, 1.0532e+00, -6.7215e-01, -2.8863e-01, 2.9232e-01,\n", + " -2.7476e-01, -5.4856e-01, 5.5058e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2075, -0.1810, -0.0188, -0.0812, -0.0198, 0.1164, 0.1425, 0.2183,\n", + " 0.1258, 0.1498, 0.1711, -0.1158, -0.0976, -0.1982, -0.1564, -0.1526,\n", + " -0.1424, -0.0109, -0.0487, -0.1103, -0.0890, -0.0183, -0.0620, -0.0411,\n", + " -0.0125, -0.0131, -0.0746, -0.1029, -0.1260, -0.1311, -0.1614, -0.0852,\n", + " -0.1762, -0.1992, -0.0721, -0.1438, -0.0072, 0.0440, -0.0337, 0.2756,\n", + " 0.2627, 0.2174, 0.1646]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007577842916361988\n", + "Grad encoder.fc1.bias: 0.0009557371377013624\n", + "Grad encoder.encoder.0.weight: 0.00020441500237211585\n", + "Grad encoder.encoder.0.bias: 0.0009438081178814173\n", + "Grad encoder.encoder.2.weight: 0.00012194562441436574\n", + "Grad encoder.encoder.2.bias: 0.0008483756682835519\n", + "Grad encoder.encoder.4.weight: 0.00032649002969264984\n", + "Grad encoder.encoder.4.bias: 0.001799329067580402\n", + "Grad decoder.fc1.0.weight: 9.819935075938702e-05\n", + "Grad decoder.fc1.0.bias: 0.0005015238421037793\n", + "Grad decoder.fc1.2.weight: 7.651661871932447e-05\n", + "Grad decoder.fc1.2.bias: 0.0016859928146004677\n", + "Grad decoder.fc1.4.weight: 7.075653411448002e-05\n", + "Grad decoder.fc1.4.bias: 0.0015601133927702904\n", + "Grad decoder.fc2.weight: 0.00017901537648867816\n", + "Grad decoder.fc2.bias: 0.002633551834151149\n", + "Grad _memory_unit.weight_ih_l0: 1.0553574611549266e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.9429273379500955e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.0656745871528983e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.46681211644318e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.412773604504764e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.451767017599195e-05\n", + "Data X Sample: tensor([[2.6913, 2.1469, 1.8708, 1.9263, 2.1138, 2.0979, 3.0952, 4.1425, 4.2644,\n", + " 4.2700, 4.2953, 4.2455, 4.1167, 3.8579, 3.8837, 3.8346, 3.8067, 3.6908,\n", + " 3.6035, 3.5130, 3.4473, 3.2915, 3.1713, 2.9241, 2.8659, 2.6850, 2.7732,\n", + " 2.7653, 2.7094, 2.9574, 2.9186, 3.0452, 3.3661, 2.4075, 4.2111, 4.6042,\n", + " 4.8061, 5.4436, 5.9771, 5.9523, 1.3268, 0.6950, 0.6588, 1.1309, 1.6808,\n", + " 1.7955, 1.2646, 1.7984]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3383, 0.1447, 0.8288, 0.4006, 0.4581, -0.1402, -0.6049, -0.9582,\n", + " -0.3016, -0.8149, -1.3588, 1.0691, 0.1801, -0.6926, 0.7869, 0.3652,\n", + " 0.7541, 1.0260, -1.9692, -0.3949, -1.3364, -0.0895, -0.3586, 5.0909,\n", + " 2.0896, 1.1115, 0.3568, 0.4828, -0.0775, 0.6701, -0.1002, -0.3432,\n", + " 0.2482, 0.8079, -1.0272, 0.6368, 0.4844, -0.2862, -0.9248, 0.1088,\n", + " -0.3054, -0.0586, 1.4193]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2447, -0.2593, -0.0770, -0.1862, -0.1341, 0.0706, 0.1267, 0.2427,\n", + " 0.1201, 0.1614, 0.2414, -0.1293, -0.1091, -0.2094, -0.1639, -0.2072,\n", + " -0.1993, -0.0617, -0.0773, -0.1253, -0.0864, -0.0183, -0.0671, -0.0430,\n", + " 0.0093, -0.0275, 0.0092, -0.0588, -0.1012, -0.1184, -0.1586, -0.0900,\n", + " -0.1461, -0.2252, -0.0771, -0.1754, -0.0364, 0.0293, -0.0314, 0.3776,\n", + " 0.3499, 0.2695, 0.2097]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00023939901439007372\n", + "Grad encoder.fc1.bias: 0.0001328338257735595\n", + "Grad encoder.encoder.0.weight: 4.151927714701742e-05\n", + "Grad encoder.encoder.0.bias: 0.00012992226402275264\n", + "Grad encoder.encoder.2.weight: 3.4220152883790433e-05\n", + "Grad encoder.encoder.2.bias: 0.00017302692867815495\n", + "Grad encoder.encoder.4.weight: 8.480811811750755e-05\n", + "Grad encoder.encoder.4.bias: 0.0004120530793443322\n", + "Grad decoder.fc1.0.weight: 5.352424341253936e-05\n", + "Grad decoder.fc1.0.bias: 0.00022358784917742014\n", + "Grad decoder.fc1.2.weight: 5.2859410061500967e-05\n", + "Grad decoder.fc1.2.bias: 0.0006921745371073484\n", + "Grad decoder.fc1.4.weight: 6.260629743337631e-05\n", + "Grad decoder.fc1.4.bias: 0.0006928999209776521\n", + "Grad decoder.fc2.weight: 0.00013120000949129462\n", + "Grad decoder.fc2.bias: 0.002639937447384\n", + "Grad _memory_unit.weight_ih_l0: 9.305475941800978e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.3691415915673133e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.070141459233128e-06\n", + "Grad _memory_unit.weight_ih_l1: 6.869624030514387e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.213251668261364e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.4184189896914177e-05\n", + "Data X Sample: tensor([[1.4321, 1.7580, 2.0496, 2.2390, 2.2436, 2.4324, 2.4158, 2.4929, 2.4801,\n", + " 2.4438, 2.4522, 2.3506, 2.1349, 2.0258, 1.8864, 1.9351, 2.0142, 1.9382,\n", + " 1.8854, 1.7667, 1.7887, 1.6626, 1.5760, 1.5365, 1.4564, 1.5306, 1.3613,\n", + " 1.5213, 1.1136, 1.1299, 1.0953, 1.0445, 0.9724, 0.6934, 1.0417, 1.1942,\n", + " 1.3687, 1.5504, 1.7304, 1.6881, 1.2695, 0.8304, 0.7922, 1.4007, 1.9623,\n", + " 2.2873, 1.3734, 2.1972]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.8661, -1.6915, -0.4811, -0.9821, -0.2705, 0.4401, 1.8358, 2.5078,\n", + " 1.7877, 2.9271, 4.8880, -2.1690, -2.0220, -1.5542, -0.6514, -2.0296,\n", + " -1.6208, -0.9286, -0.2090, -1.1990, -0.5106, -0.6118, -0.5512, -0.1193,\n", + " -0.3549, -0.3768, 0.3815, 0.6507, -0.2317, -1.2985, -1.2314, -1.6238,\n", + " -1.6949, -2.0403, -1.8188, -2.4749, 0.9799, -0.3276, 0.5010, 5.6782,\n", + " 5.7814, 3.3955, 3.2621]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3834, -0.4348, -0.2294, -0.4053, -0.2601, -0.0422, 0.1723, 0.4010,\n", + " 0.2611, 0.4265, 0.5063, -0.1550, -0.1685, -0.2953, -0.2091, -0.4091,\n", + " -0.4462, -0.1985, -0.1052, -0.1842, -0.0933, -0.0725, -0.0680, -0.0673,\n", + " 0.0169, -0.0337, 0.2412, 0.0267, -0.0425, -0.1762, -0.1753, -0.1905,\n", + " -0.1855, -0.4401, -0.1884, -0.2245, -0.0498, 0.0086, -0.0593, 0.8022,\n", + " 0.8455, 0.5754, 0.5244]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006998218595981598\n", + "Grad encoder.fc1.bias: 0.0009254231117665768\n", + "Grad encoder.encoder.0.weight: 0.00020203266467433423\n", + "Grad encoder.encoder.0.bias: 0.0014070854522287846\n", + "Grad encoder.encoder.2.weight: 0.0001106639247154817\n", + "Grad encoder.encoder.2.bias: 0.0011743728537112474\n", + "Grad encoder.encoder.4.weight: 0.00031471444526687264\n", + "Grad encoder.encoder.4.bias: 0.002759477123618126\n", + "Grad decoder.fc1.0.weight: 0.00012155715376138687\n", + "Grad decoder.fc1.0.bias: 0.0008026676950976253\n", + "Grad decoder.fc1.2.weight: 0.0001160463725682348\n", + "Grad decoder.fc1.2.bias: 0.0023639339487999678\n", + "Grad decoder.fc1.4.weight: 0.00010902419307967648\n", + "Grad decoder.fc1.4.bias: 0.0022059816401451826\n", + "Grad decoder.fc2.weight: 0.00019313071970827878\n", + "Grad decoder.fc2.bias: 0.0032871400471776724\n", + "Grad _memory_unit.weight_ih_l0: 1.716144470265135e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.072849646443501e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.149464828311466e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.2867544683103915e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001453863806091249\n", + "Grad _memory_unit.bias_hh_l1: 7.80413975007832e-05\n", + "Data X Sample: tensor([[1.4703, 1.5293, 1.5477, 1.7470, 1.8355, 1.9698, 1.9844, 2.5539, 4.1180,\n", + " 4.2968, 4.3397, 4.2416, 4.0546, 3.9561, 3.8308, 3.8756, 3.7517, 3.7894,\n", + " 3.7026, 3.7585, 3.6264, 3.4032, 2.9592, 2.8726, 2.9185, 3.0063, 2.9783,\n", + " 3.0467, 3.2020, 3.2784, 3.2650, 3.4459, 3.8193, 2.8789, 4.5591, 5.0080,\n", + " 5.3252, 5.6689, 6.2433, 6.1027, 1.0309, 0.5238, 0.6002, 0.9960, 1.6174,\n", + " 1.6926, 1.1626, 1.5638]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2565, -0.9109, -0.6631, 3.7235, 0.6544, 0.8883, -0.0099, 0.5496,\n", + " 0.5793, 0.4301, 0.7083, -0.9326, 1.2973, 0.6950, -0.6381, 0.2388,\n", + " 0.1353, 0.8806, -0.6605, 1.0451, 0.9082, 1.8265, 0.0482, -0.5093,\n", + " -0.1683, 0.3719, -0.6583, -0.2571, -0.6408, -0.2622, -0.3770, -0.3672,\n", + " -0.2471, -0.9260, 0.3329, 0.2828, -0.7933, 0.6361, 0.2630, 0.2717,\n", + " 0.1886, -0.5527, -1.0090]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2294, -0.1890, -0.0054, -0.0429, 0.0444, 0.1591, 0.1744, 0.2509,\n", + " 0.1540, 0.1747, 0.1866, -0.1346, -0.1233, -0.2327, -0.1673, -0.1631,\n", + " -0.1436, 0.0072, -0.0595, -0.1106, -0.1027, -0.0122, -0.0689, -0.0373,\n", + " -0.0139, -0.0053, -0.1037, -0.1438, -0.1742, -0.1700, -0.1905, -0.1103,\n", + " -0.2247, -0.2373, -0.1003, -0.1554, -0.0052, 0.0477, -0.0221, 0.2773,\n", + " 0.2718, 0.2444, 0.1790]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00025736785028129816\n", + "Grad encoder.fc1.bias: 0.0007347330683842301\n", + "Grad encoder.encoder.0.weight: 7.40061659598723e-05\n", + "Grad encoder.encoder.0.bias: 0.0006612473516725004\n", + "Grad encoder.encoder.2.weight: 5.384341056924313e-05\n", + "Grad encoder.encoder.2.bias: 0.0006767805316485465\n", + "Grad encoder.encoder.4.weight: 0.00015198328765109181\n", + "Grad encoder.encoder.4.bias: 0.0016004260396584868\n", + "Grad decoder.fc1.0.weight: 6.41971273580566e-05\n", + "Grad decoder.fc1.0.bias: 0.0005099228001199663\n", + "Grad decoder.fc1.2.weight: 7.918878691270947e-05\n", + "Grad decoder.fc1.2.bias: 0.0007398136658594012\n", + "Grad decoder.fc1.4.weight: 6.46874395897612e-05\n", + "Grad decoder.fc1.4.bias: 0.0006743271951563656\n", + "Grad decoder.fc2.weight: 0.00012938777217641473\n", + "Grad decoder.fc2.bias: 0.002005022019147873\n", + "Grad _memory_unit.weight_ih_l0: 1.1023879778804258e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.237588240765035e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.225134059903212e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.784007953479886e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.637659968575463e-05\n", + "Grad _memory_unit.bias_hh_l1: 5.2195544412825257e-05\n", + "Data X Sample: tensor([[1.6050, 1.6619, 1.8738, 2.0094, 1.8679, 1.8195, 2.6407, 4.1254, 4.0960,\n", + " 4.3221, 4.2350, 4.2650, 4.1345, 4.0842, 3.8055, 3.5488, 3.5944, 3.6676,\n", + " 3.6592, 3.4795, 3.3835, 3.3757, 2.8990, 2.7733, 2.6951, 2.8313, 2.7412,\n", + " 2.8591, 2.8759, 2.8657, 3.0341, 2.9540, 3.5641, 2.5357, 4.3140, 4.4972,\n", + " 4.9949, 5.3270, 6.0088, 5.8360, 1.0977, 0.6632, 0.6508, 1.2917, 1.6253,\n", + " 1.9213, 1.3122, 1.7750]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3901, -0.6113, -0.1713, -0.1542, -0.7129, -0.2091, 0.2467, -0.0473,\n", + " 0.2620, 0.2725, 0.5741, 0.8494, 0.6541, -0.0053, -0.7100, 0.1017,\n", + " -0.2004, 4.1153, 0.1975, -0.3315, -0.1508, -1.5538, -0.0705, 0.5984,\n", + " -0.3948, -0.4258, 0.9344, -0.1511, 0.5327, 0.7367, -0.1220, -0.2363,\n", + " 0.0962, 0.5568, -0.2228, -0.1330, 0.9536, -0.6782, -0.9264, 0.6519,\n", + " 0.5517, 0.1543, -0.3573]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2455, -0.2229, -0.0286, -0.0978, -0.0332, 0.1333, 0.1592, 0.2559,\n", + " 0.1428, 0.1726, 0.2106, -0.1373, -0.1171, -0.2269, -0.1691, -0.1838,\n", + " -0.1674, -0.0213, -0.0681, -0.1243, -0.0980, -0.0078, -0.0678, -0.0395,\n", + " -0.0102, -0.0152, -0.0667, -0.1165, -0.1488, -0.1497, -0.1864, -0.1026,\n", + " -0.1917, -0.2382, -0.0916, -0.1795, -0.0168, 0.0396, -0.0320, 0.3266,\n", + " 0.3021, 0.2569, 0.1906]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00024864583974704146\n", + "Grad encoder.fc1.bias: 0.0009279325604438782\n", + "Grad encoder.encoder.0.weight: 7.023242505965754e-05\n", + "Grad encoder.encoder.0.bias: 0.0009155776351690292\n", + "Grad encoder.encoder.2.weight: 5.8182231441605836e-05\n", + "Grad encoder.encoder.2.bias: 0.000745924306102097\n", + "Grad encoder.encoder.4.weight: 0.0001758228027028963\n", + "Grad encoder.encoder.4.bias: 0.001394266146235168\n", + "Grad decoder.fc1.0.weight: 8.17932523204945e-05\n", + "Grad decoder.fc1.0.bias: 0.0005139895947650075\n", + "Grad decoder.fc1.2.weight: 8.709503163117915e-05\n", + "Grad decoder.fc1.2.bias: 0.0006035319529473782\n", + "Grad decoder.fc1.4.weight: 9.064428741112351e-05\n", + "Grad decoder.fc1.4.bias: 0.0007027391693554819\n", + "Grad decoder.fc2.weight: 0.00014790189743507653\n", + "Grad decoder.fc2.bias: 0.0016767014749348164\n", + "Grad _memory_unit.weight_ih_l0: 1.4747700333828107e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.2796724553918466e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.055287768598646e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.360984454862773e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.56717417971231e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.115955380257219e-05\n", + "Data X Sample: tensor([[1.4205, 1.6138, 1.7611, 2.0247, 2.1019, 2.1053, 1.9782, 2.9954, 3.9569,\n", + " 4.3426, 4.1779, 4.1287, 4.1833, 4.0706, 3.8055, 3.8196, 3.7171, 3.6095,\n", + " 3.5498, 3.5130, 3.5037, 3.2455, 2.9496, 2.7504, 2.9185, 3.0690, 3.1302,\n", + " 3.1405, 3.1916, 3.4160, 3.4610, 3.4293, 3.8501, 2.8606, 4.6033, 4.8572,\n", + " 5.0892, 5.4039, 5.8630, 5.9523, 1.1359, 0.7010, 0.6285, 1.0793, 1.7720,\n", + " 1.9556, 1.4278, 1.9626]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1355, 0.0684, -0.7227, 0.6399, 0.6599, 0.8575, 0.5391, 0.4921,\n", + " -0.4288, 0.3420, 0.1620, 0.3418, -0.8312, -0.3734, -0.4491, -0.5719,\n", + " 0.1143, 2.1978, 0.2059, 2.9887, -0.4428, -5.1443, 1.7006, 0.9294,\n", + " 0.9996, 0.0790, -0.5442, 0.0662, -0.5546, -0.2203, -0.2324, 0.8057,\n", + " -0.0975, 0.3539, -0.3994, 0.3424, -0.4285, -0.1310, -0.2895, 0.2966,\n", + " 0.3326, 0.0472, -0.4379]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2331, -0.2066, 0.0010, -0.0284, 0.0601, 0.1854, 0.1942, 0.2728,\n", + " 0.1794, 0.1955, 0.2133, -0.1460, -0.1257, -0.2452, -0.1774, -0.1824,\n", + " -0.1588, 0.0112, -0.0648, -0.1282, -0.0968, -0.0035, -0.0790, -0.0394,\n", + " -0.0230, -0.0012, -0.1102, -0.1616, -0.2001, -0.1953, -0.2106, -0.1223,\n", + " -0.2422, -0.2704, -0.1134, -0.1731, -0.0031, 0.0537, -0.0223, 0.3060,\n", + " 0.3033, 0.2605, 0.1848]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00015017041005194187\n", + "Grad encoder.fc1.bias: 0.0003988544049207121\n", + "Grad encoder.encoder.0.weight: 2.8950504201930016e-05\n", + "Grad encoder.encoder.0.bias: 0.0004203389398753643\n", + "Grad encoder.encoder.2.weight: 2.8712604034808464e-05\n", + "Grad encoder.encoder.2.bias: 0.0002951544593088329\n", + "Grad encoder.encoder.4.weight: 8.960122795542702e-05\n", + "Grad encoder.encoder.4.bias: 0.0005589507054537535\n", + "Grad decoder.fc1.0.weight: 5.28079217474442e-05\n", + "Grad decoder.fc1.0.bias: 0.0002799515496008098\n", + "Grad decoder.fc1.2.weight: 6.026786650181748e-05\n", + "Grad decoder.fc1.2.bias: 0.0013997078640386462\n", + "Grad decoder.fc1.4.weight: 6.877882697153836e-05\n", + "Grad decoder.fc1.4.bias: 0.001274067210033536\n", + "Grad decoder.fc2.weight: 0.00016209173190873116\n", + "Grad decoder.fc2.bias: 0.0021467856131494045\n", + "Grad _memory_unit.weight_ih_l0: 8.1375628724345e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.4695018762722611e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.369941835757345e-06\n", + "Grad _memory_unit.weight_ih_l1: 9.256639714294579e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.273599865380675e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.5422915971139446e-05\n", + "Data X Sample: tensor([[1.4767, 1.6925, 1.7566, 1.7995, 1.9482, 2.1053, 2.0167, 2.1138, 2.7120,\n", + " 3.7092, 4.1716, 4.1248, 3.8415, 3.8170, 3.6870, 3.6609, 3.5976, 3.4180,\n", + " 3.4259, 3.1968, 3.4522, 3.2425, 2.7375, 2.8268, 2.8546, 2.9567, 2.8078,\n", + " 3.0345, 2.8170, 2.9935, 3.1076, 3.1170, 3.4827, 2.5860, 4.2699, 4.6626,\n", + " 4.8788, 5.1574, 5.7806, 5.6856, 1.2695, 0.6791, 0.6386, 1.1194, 1.6174,\n", + " 1.7669, 1.1626, 1.6186]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3941, -0.0450, -0.7826, 0.0273, 0.1669, 0.0532, 0.4843, 0.7713,\n", + " 1.2016, 0.4624, 0.9093, -2.0218, -0.5157, -1.2840, -1.0469, -1.3025,\n", + " -0.3610, 0.2458, -0.6091, -0.5656, -0.1517, -0.2832, -0.9227, -2.2954,\n", + " 0.4904, 1.9923, -0.3625, 0.4442, -0.7259, -0.6627, -1.4613, 0.2920,\n", + " -1.0219, -0.3792, 0.1121, -1.2014, -0.5862, 0.1370, 0.0382, 0.6653,\n", + " 0.9624, 1.2401, 0.3396]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2404, -0.2158, 0.0071, -0.0072, 0.0948, 0.2086, 0.2048, 0.2849,\n", + " 0.1983, 0.2169, 0.2233, -0.1521, -0.1380, -0.2618, -0.1805, -0.1950,\n", + " -0.1632, 0.0152, -0.0681, -0.1326, -0.1001, -0.0057, -0.0839, -0.0429,\n", + " -0.0242, -0.0035, -0.1194, -0.1812, -0.2263, -0.2235, -0.2250, -0.1315,\n", + " -0.2663, -0.2900, -0.1263, -0.1779, -0.0011, 0.0577, -0.0181, 0.3146,\n", + " 0.3165, 0.2679, 0.1921]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00014551378262694925\n", + "Grad encoder.fc1.bias: 0.0009101658361032605\n", + "Grad encoder.encoder.0.weight: 5.303747457219288e-05\n", + "Grad encoder.encoder.0.bias: 0.0009199617197737098\n", + "Grad encoder.encoder.2.weight: 4.655023803934455e-05\n", + "Grad encoder.encoder.2.bias: 0.0005985582829453051\n", + "Grad encoder.encoder.4.weight: 0.00014862080570310354\n", + "Grad encoder.encoder.4.bias: 0.0007299976423382759\n", + "Grad decoder.fc1.0.weight: 6.676926568616182e-05\n", + "Grad decoder.fc1.0.bias: 0.0003615577006712556\n", + "Grad decoder.fc1.2.weight: 8.176405390258878e-05\n", + "Grad decoder.fc1.2.bias: 0.000414200039813295\n", + "Grad decoder.fc1.4.weight: 5.83719665883109e-05\n", + "Grad decoder.fc1.4.bias: 0.00037663962575607\n", + "Grad decoder.fc2.weight: 0.00014436796482186764\n", + "Grad decoder.fc2.bias: 0.0017237539868801832\n", + "Grad _memory_unit.weight_ih_l0: 8.435166819253936e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.6983678506221622e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.421613867743872e-06\n", + "Grad _memory_unit.weight_ih_l1: 4.743072622659383e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.6339267757721245e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.0218476240406744e-05\n", + "Data X Sample: tensor([[1.3908, 1.5570, 1.6514, 1.8498, 2.0967, 2.0685, 2.1585, 2.0357, 3.2587,\n", + " 4.1815, 4.1652, 4.2436, 4.0812, 3.9316, 3.7047, 3.7102, 3.6133, 3.7798,\n", + " 3.5456, 3.4851, 3.4301, 3.3588, 2.8436, 2.9737, 2.7570, 2.9070, 2.9357,\n", + " 2.9570, 3.0737, 3.2129, 3.2301, 3.3270, 3.7951, 2.8332, 4.7258, 4.9399,\n", + " 5.1915, 5.5072, 6.2117, 6.0232, 0.9879, 0.6094, 0.5901, 1.1137, 1.6055,\n", + " 1.6983, 1.1966, 1.7046]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4204, -0.8558, 3.3196, 0.7321, -0.4270, 0.0181, 0.7000, 0.8120,\n", + " 0.9085, 0.5699, 0.2477, 0.2055, -0.4939, -0.6550, -0.4179, -0.2897,\n", + " -0.3357, 1.5492, 0.0827, -0.2319, -0.2606, 5.1746, 0.0282, -0.7183,\n", + " 0.8714, -1.0090, 0.0364, 0.1981, -0.5180, -0.1647, -0.8112, -0.6611,\n", + " -0.7021, 0.0183, -0.6045, -0.5311, 0.9536, 0.8958, 0.2253, 0.7532,\n", + " 0.9031, 0.7369, -0.0598]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2606, -0.2280, 0.0213, 0.0476, 0.1838, 0.2595, 0.2256, 0.3077,\n", + " 0.2373, 0.2628, 0.2384, -0.1646, -0.1720, -0.3009, -0.1837, -0.2183,\n", + " -0.1652, 0.0255, -0.0783, -0.1372, -0.1129, -0.0177, -0.0943, -0.0556,\n", + " -0.0246, -0.0150, -0.1457, -0.2304, -0.2872, -0.2885, -0.2566, -0.1530,\n", + " -0.3258, -0.3300, -0.1522, -0.1820, 0.0070, 0.0654, -0.0048, 0.3264,\n", + " 0.3369, 0.2781, 0.2068]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00025893107522279024\n", + "Grad encoder.fc1.bias: 0.0005742328939959407\n", + "Grad encoder.encoder.0.weight: 6.066138303140178e-05\n", + "Grad encoder.encoder.0.bias: 0.000580491847358644\n", + "Grad encoder.encoder.2.weight: 6.01012070546858e-05\n", + "Grad encoder.encoder.2.bias: 0.00045120250433683395\n", + "Grad encoder.encoder.4.weight: 0.0001810116518754512\n", + "Grad encoder.encoder.4.bias: 0.0008326794486492872\n", + "Grad decoder.fc1.0.weight: 8.651863754494116e-05\n", + "Grad decoder.fc1.0.bias: 0.00045269308611750603\n", + "Grad decoder.fc1.2.weight: 9.844191663432866e-05\n", + "Grad decoder.fc1.2.bias: 0.0011221003951504827\n", + "Grad decoder.fc1.4.weight: 9.733893966767937e-05\n", + "Grad decoder.fc1.4.bias: 0.001190899987705052\n", + "Grad decoder.fc2.weight: 0.00016468776448164135\n", + "Grad decoder.fc2.bias: 0.0024462498258799314\n", + "Grad _memory_unit.weight_ih_l0: 1.4202163583831862e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.878040322684683e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.730419353407342e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.155505722446833e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.804635192267597e-05\n", + "Grad _memory_unit.bias_hh_l1: 5.230050737736747e-05\n", + "Data X Sample: tensor([[1.6337, 1.8177, 2.0285, 2.1013, 2.3085, 2.4427, 2.4589, 2.5255, 2.4410,\n", + " 2.5560, 2.6267, 2.5726, 2.5366, 2.3966, 2.4109, 2.4944, 2.4435, 2.4818,\n", + " 2.6164, 2.4734, 2.5297, 2.5474, 2.5399, 2.5042, 2.5018, 2.4944, 2.4322,\n", + " 2.4186, 2.2272, 2.2533, 2.2887, 2.1858, 1.8612, 1.1877, 1.6594, 1.6588,\n", + " 1.4847, 1.5133, 1.5022, 1.3845, 1.2457, 0.7109, 0.7660, 1.2658, 1.9504,\n", + " 2.1729, 1.4482, 2.0174]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.9619, -0.2981, -0.4633, -0.6584, 0.1412, 0.5337, 0.9537, 0.6541,\n", + " 1.7465, 0.3853, 0.6081, 0.0122, -0.1766, -1.2129, 0.3152, -0.0982,\n", + " -0.4529, 0.5524, -0.6861, 0.6215, -0.0688, 0.9928, 1.0832, 1.2775,\n", + " 0.4354, -0.1846, -0.9914, 0.1385, 0.3089, -0.2359, -0.8858, -0.4865,\n", + " -0.6831, -0.7274, -1.1088, 0.0475, -0.6306, 0.1511, 2.5716, 0.4543,\n", + " 0.5157, -0.0835, -0.4810]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2914, 0.2505, 0.0600, 0.2925, 0.1100, -0.0531, -0.2172, -0.3234,\n", + " -0.1326, -0.1794, -0.2092, 0.0940, 0.1717, 0.2700, 0.2102, 0.2850,\n", + " 0.1983, 0.0545, 0.0645, 0.0821, 0.0446, 0.0828, 0.0373, 0.0142,\n", + " 0.0367, 0.0669, -0.1160, -0.0057, 0.1709, 0.1543, 0.1323, 0.1274,\n", + " 0.2411, 0.1974, 0.1442, 0.1627, -0.0778, 0.0112, 0.0231, -0.2351,\n", + " -0.2445, -0.2159, -0.2307]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007019622134976089\n", + "Grad encoder.fc1.bias: 0.0003462221357040107\n", + "Grad encoder.encoder.0.weight: 0.00018799124518409371\n", + "Grad encoder.encoder.0.bias: 0.000605655019171536\n", + "Grad encoder.encoder.2.weight: 0.00012282465468160808\n", + "Grad encoder.encoder.2.bias: 0.0007095385808497667\n", + "Grad encoder.encoder.4.weight: 0.000320406979881227\n", + "Grad encoder.encoder.4.bias: 0.001975609455257654\n", + "Grad decoder.fc1.0.weight: 8.565911412006244e-05\n", + "Grad decoder.fc1.0.bias: 0.0004182776319794357\n", + "Grad decoder.fc1.2.weight: 0.00010776859562611207\n", + "Grad decoder.fc1.2.bias: 0.001461108447983861\n", + "Grad decoder.fc1.4.weight: 9.158758621197194e-05\n", + "Grad decoder.fc1.4.bias: 0.0010763849131762981\n", + "Grad decoder.fc2.weight: 0.00015204107330646366\n", + "Grad decoder.fc2.bias: 0.002769620856270194\n", + "Grad _memory_unit.weight_ih_l0: 1.1611217814788688e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.39595904329326e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.505880032316782e-06\n", + "Grad _memory_unit.weight_ih_l1: 9.530031093163416e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.628415576415136e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.609780105762184e-05\n", + "Data X Sample: tensor([[1.5244, 1.9066, 2.1518, 2.3746, 2.5373, 2.5443, 2.6777, 2.8052, 2.5850,\n", + " 2.6760, 2.6933, 2.5843, 2.3857, 2.2193, 2.2041, 2.1812, 2.2611, 2.1549,\n", + " 2.1703, 2.0810, 2.1076, 1.9320, 1.9134, 1.8495, 1.7736, 1.7944, 1.6863,\n", + " 1.8027, 1.2975, 1.2609, 1.2738, 1.1882, 1.1484, 0.7941, 1.2672, 1.3645,\n", + " 1.6066, 1.8340, 2.1044, 2.0314, 1.4270, 0.7966, 0.7761, 1.4495, 2.0693,\n", + " 2.4131, 1.5910, 2.3145]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.6585, -1.2303, 0.2380, -0.5034, -0.3276, -0.5374, 0.8298, 1.2124,\n", + " 0.8391, 2.2354, 3.7139, -1.8329, -0.5020, -1.5778, -0.5687, -1.4015,\n", + " -0.7617, -0.1114, -0.6143, 0.3806, 0.0768, -0.0891, 0.2987, -0.1829,\n", + " 0.3920, -0.0914, 0.6942, 0.5748, -0.5256, -0.6497, -0.6572, -0.6212,\n", + " 0.5679, -2.9136, 0.0901, -0.1133, 0.0373, -0.1543, -0.5562, 3.4708,\n", + " 4.0418, 2.5152, 1.2744]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.4500, -0.5006, -0.2608, -0.4482, -0.2841, -0.0317, 0.2411, 0.4855,\n", + " 0.2962, 0.4971, 0.5868, -0.2043, -0.1919, -0.3582, -0.2457, -0.4640,\n", + " -0.5017, -0.2100, -0.1507, -0.2128, -0.1002, -0.0588, -0.0748, -0.0463,\n", + " 0.0173, 0.0065, 0.2764, 0.0443, -0.0556, -0.2104, -0.2251, -0.2515,\n", + " -0.2209, -0.5416, -0.2224, -0.2776, -0.0566, -0.0193, -0.0479, 0.9126,\n", + " 0.9545, 0.6878, 0.6136]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00011902848200406879\n", + "Grad encoder.fc1.bias: 8.096934470813721e-05\n", + "Grad encoder.encoder.0.weight: 3.467559872660786e-05\n", + "Grad encoder.encoder.0.bias: 0.00011313375580357388\n", + "Grad encoder.encoder.2.weight: 2.8280723199713975e-05\n", + "Grad encoder.encoder.2.bias: 0.0001329252409050241\n", + "Grad encoder.encoder.4.weight: 9.19584053917788e-05\n", + "Grad encoder.encoder.4.bias: 0.0003746528527699411\n", + "Grad decoder.fc1.0.weight: 4.872661884292029e-05\n", + "Grad decoder.fc1.0.bias: 0.00025025528157129884\n", + "Grad decoder.fc1.2.weight: 4.4596847146749496e-05\n", + "Grad decoder.fc1.2.bias: 0.0007260575657710433\n", + "Grad decoder.fc1.4.weight: 5.1797596825053915e-05\n", + "Grad decoder.fc1.4.bias: 0.0006718155927956104\n", + "Grad decoder.fc2.weight: 0.00012055772822350264\n", + "Grad decoder.fc2.bias: 0.0020957868546247482\n", + "Grad _memory_unit.weight_ih_l0: 8.582574082538486e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.5302917492808774e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.3699400369659998e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.792124167986913e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.832311919424683e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.656061744550243e-05\n", + "Data X Sample: tensor([[ 0.0202, 0.0160, 0.0225, 0.0175, 0.0068, 0.0309, 0.0185, 0.0128,\n", + " 0.0317, 0.0253, 0.0317, 0.0175, 0.0244, 0.0164, 0.0101, 0.0137,\n", + " -0.1226, -0.1470, -0.1879, -0.1637, -0.1644, -0.1102, -0.2024, -0.1775,\n", + " -0.1389, -0.3030, -0.2877, -0.5180, -0.0624, -0.1048, -0.0910, -0.0801,\n", + " -0.0572, -0.0709, -0.0368, -0.0049, -0.0118, -0.0345, -0.0507, -0.0142,\n", + " 0.0095, 0.0020, 0.0081, 0.0057, 0.0159, -0.0057, 0.0136, 0.0078]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7762, 0.4433, -0.0751, 0.2468, 0.8608, 0.6975, 1.1702, -0.5937,\n", + " 0.6842, 0.8126, 0.4859, -0.0301, -0.7912, 1.2791, 0.1572, 0.1976,\n", + " 0.1888, 0.5156, 0.9024, 1.6480, 0.7335, 1.1239, 0.8886, 0.6563,\n", + " 0.8679, -0.5865, -0.2517, -0.2540, -0.0285, -0.5204, -0.2265, 0.2587,\n", + " 0.9579, -0.5527, -0.0844, 0.2925, -0.8131, 0.0000, 0.5660, -0.6743,\n", + " -0.2675, 0.1245, 0.5235]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4648, 0.3913, 0.1482, 0.3985, 0.1707, -0.1054, -0.3431, -0.5560,\n", + " -0.1619, -0.2564, -0.2218, 0.2897, 0.2304, 0.3594, 0.2659, 0.4603,\n", + " 0.3255, 0.0555, 0.1000, 0.0777, 0.0555, 0.1305, 0.0558, -0.0319,\n", + " 0.0564, 0.0623, -0.1947, -0.0276, 0.2320, 0.2594, 0.2644, 0.1744,\n", + " 0.4279, 0.3497, 0.1811, 0.2193, -0.0914, 0.0231, 0.0270, -0.3328,\n", + " -0.4346, -0.3059, -0.3125]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001123966503655538\n", + "Grad encoder.fc1.bias: 9.028735075844452e-05\n", + "Grad encoder.encoder.0.weight: 3.7334670196287334e-05\n", + "Grad encoder.encoder.0.bias: 9.09876252990216e-05\n", + "Grad encoder.encoder.2.weight: 4.095797339687124e-05\n", + "Grad encoder.encoder.2.bias: 0.00015734757471363991\n", + "Grad encoder.encoder.4.weight: 0.00011405810801079497\n", + "Grad encoder.encoder.4.bias: 0.0003852157387882471\n", + "Grad decoder.fc1.0.weight: 5.4793781600892544e-05\n", + "Grad decoder.fc1.0.bias: 0.0002601684827823192\n", + "Grad decoder.fc1.2.weight: 5.9666977904271334e-05\n", + "Grad decoder.fc1.2.bias: 0.0006659637438133359\n", + "Grad decoder.fc1.4.weight: 5.0450315029593185e-05\n", + "Grad decoder.fc1.4.bias: 0.0005497282836586237\n", + "Grad decoder.fc2.weight: 0.00011316657764837146\n", + "Grad decoder.fc2.bias: 0.0020427450072020292\n", + "Grad _memory_unit.weight_ih_l0: 8.74143916007597e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.6876485460670665e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.0004247087636031e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.587811185454484e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.227032281458378e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.324004865135066e-05\n", + "Data X Sample: tensor([[ 0.0106, 0.0175, 0.0225, 0.0241, 0.0154, 0.0368, 0.0169, 0.0142,\n", + " 0.0415, 0.0363, 0.0317, 0.0214, 0.0244, 0.0354, 0.0277, 0.0178,\n", + " -0.1384, -0.1644, -0.1838, -0.1655, -0.1889, -0.1148, -0.2097, -0.1928,\n", + " -0.1520, -0.3317, -0.2957, -0.5057, -0.0520, -0.0786, -0.0980, -0.0608,\n", + " -0.0154, -0.0664, -0.0123, -0.0122, -0.0197, -0.0053, -0.0380, -0.0113,\n", + " 0.0286, -0.0159, 0.0101, -0.0029, 0.0119, 0.0172, -0.0544, -0.0313]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.1959e+00, 1.5641e+00, 2.8979e-01, 2.3691e-01, 3.0447e-01,\n", + " -1.4284e+00, -9.9519e-01, -9.2450e-01, -1.5954e+00, -8.7022e-01,\n", + " -6.0384e-01, 3.0586e-04, 1.4554e+00, 5.5957e-01, 7.0759e-01,\n", + " 8.3132e-01, 1.2694e+00, 4.4914e-01, 1.1146e+00, -2.0768e-01,\n", + " 1.3658e+00, 9.3288e-01, 5.4463e-01, 8.6568e-01, 6.7851e-01,\n", + " 6.1341e-01, -3.7352e-01, -3.0884e-02, 1.3137e+00, 9.2603e-01,\n", + " 1.4814e+00, 4.3682e-01, 1.2101e+00, 9.4063e-01, 8.0413e-01,\n", + " 2.5692e-01, 8.8922e-01, -8.6851e-02, 8.0005e-01, -6.5924e-01,\n", + " -6.6662e-01, -2.2545e-01, -1.0527e+00]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4610, 0.3796, 0.1400, 0.4005, 0.1697, -0.0965, -0.3295, -0.5446,\n", + " -0.1581, -0.2501, -0.2149, 0.2820, 0.2259, 0.3506, 0.2588, 0.4500,\n", + " 0.3231, 0.0528, 0.0980, 0.0715, 0.0560, 0.1305, 0.0635, -0.0256,\n", + " 0.0517, 0.0584, -0.1933, -0.0285, 0.2199, 0.2464, 0.2526, 0.1684,\n", + " 0.4227, 0.3373, 0.1786, 0.2130, -0.0960, 0.0117, 0.0237, -0.3272,\n", + " -0.4308, -0.2969, -0.3015]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004783793701790273\n", + "Grad encoder.fc1.bias: 0.0009571332484483719\n", + "Grad encoder.encoder.0.weight: 0.0001247720792889595\n", + "Grad encoder.encoder.0.bias: 0.0011842383537441492\n", + "Grad encoder.encoder.2.weight: 9.319752280134708e-05\n", + "Grad encoder.encoder.2.bias: 0.0009962619515135884\n", + "Grad encoder.encoder.4.weight: 0.0002828789292834699\n", + "Grad encoder.encoder.4.bias: 0.0020034005865454674\n", + "Grad decoder.fc1.0.weight: 0.00011269375681877136\n", + "Grad decoder.fc1.0.bias: 0.0007194263744167984\n", + "Grad decoder.fc1.2.weight: 0.00011064403224736452\n", + "Grad decoder.fc1.2.bias: 0.0008889141026884317\n", + "Grad decoder.fc1.4.weight: 8.926636655814946e-05\n", + "Grad decoder.fc1.4.bias: 0.0006359905237331986\n", + "Grad decoder.fc2.weight: 0.00014541912241838872\n", + "Grad decoder.fc2.bias: 0.001858662348240614\n", + "Grad _memory_unit.weight_ih_l0: 1.546361636428628e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.045867849024944e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.343166463309899e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.693339623278007e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001095036423066631\n", + "Grad _memory_unit.bias_hh_l1: 5.8686156990006566e-05\n", + "Data X Sample: tensor([[1.6050, 1.6983, 1.7506, 1.9526, 2.0045, 1.9108, 2.0830, 2.0201, 3.6395,\n", + " 4.0883, 4.2097, 4.0820, 3.9037, 3.7925, 3.5887, 3.5679, 3.4388, 3.4586,\n", + " 3.4259, 3.3642, 3.3418, 3.3313, 2.9496, 2.8039, 2.7514, 2.8444, 2.8451,\n", + " 2.8999, 3.0598, 3.0229, 3.1636, 3.1751, 3.5597, 2.6066, 4.2969, 4.6529,\n", + " 4.8788, 5.3058, 5.7616, 5.7963, 1.0786, 0.6691, 0.6265, 1.1740, 1.6729,\n", + " 1.9842, 1.1762, 1.7280]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2023, -0.5392, -0.3304, 0.3600, -0.6442, 2.3235, -0.0485, 0.7403,\n", + " 1.0040, -0.1640, 0.7115, -0.1733, 0.7904, -1.5874, -1.0854, -0.4951,\n", + " 0.4082, 0.5572, -0.5908, -0.2121, -0.1664, -0.4988, -0.1275, -0.3052,\n", + " -0.1427, 0.0206, -0.2478, 0.0448, -0.1320, -0.4553, -0.7627, -0.3755,\n", + " -0.3548, -0.3430, 0.0717, -1.2193, 1.0050, 0.7952, 1.0325, 0.3577,\n", + " 0.1137, 0.1354, -0.1457]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2940, -0.2687, -0.0124, -0.0226, 0.1041, 0.2414, 0.2447, 0.3571,\n", + " 0.2396, 0.2580, 0.2835, -0.2193, -0.1758, -0.3261, -0.2055, -0.2511,\n", + " -0.1939, 0.0193, -0.0991, -0.1409, -0.1212, -0.0023, -0.0796, -0.0391,\n", + " -0.0056, 0.0105, -0.1316, -0.2162, -0.2831, -0.2751, -0.3000, -0.1724,\n", + " -0.3267, -0.3600, -0.1877, -0.2375, -0.0250, 0.0539, 0.0071, 0.3585,\n", + " 0.3648, 0.3500, 0.2450]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00022542348597198725\n", + "Grad encoder.fc1.bias: 0.0005446665454655886\n", + "Grad encoder.encoder.0.weight: 5.249760579317808e-05\n", + "Grad encoder.encoder.0.bias: 0.00035411695716902614\n", + "Grad encoder.encoder.2.weight: 4.7913548769429326e-05\n", + "Grad encoder.encoder.2.bias: 0.0003715771599672735\n", + "Grad encoder.encoder.4.weight: 0.00016547196719329804\n", + "Grad encoder.encoder.4.bias: 0.0011135661043226719\n", + "Grad decoder.fc1.0.weight: 8.766538667259738e-05\n", + "Grad decoder.fc1.0.bias: 0.00045828966540284455\n", + "Grad decoder.fc1.2.weight: 8.308087853947654e-05\n", + "Grad decoder.fc1.2.bias: 0.0009217435726895928\n", + "Grad decoder.fc1.4.weight: 8.031654579099268e-05\n", + "Grad decoder.fc1.4.bias: 0.0005900451797060668\n", + "Grad decoder.fc2.weight: 0.00012777636584360152\n", + "Grad decoder.fc2.bias: 0.0018162159249186516\n", + "Grad _memory_unit.weight_ih_l0: 1.124010668718256e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.7354271626099944e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.1779254893772304e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.97580651124008e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.289890734478831e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.5141940315952525e-05\n", + "Data X Sample: tensor([[2.8144, 3.3267, 3.7085, 3.8614, 4.0603, 4.2901, 4.4541, 4.2177, 4.3181,\n", + " 4.3505, 4.1843, 4.0761, 4.0058, 3.8143, 3.8207, 3.4736, 3.4734, 3.4606,\n", + " 3.6158, 3.6153, 3.6534, 3.6803, 3.2677, 2.9966, 2.9203, 2.8052, 2.9090,\n", + " 3.0018, 2.9072, 3.0655, 3.0761, 3.2497, 3.4189, 2.4578, 4.1302, 4.5921,\n", + " 5.0597, 5.4807, 5.8821, 5.8814, 2.2002, 1.2407, 1.3096, 2.2188, 3.4369,\n", + " 3.7054, 2.5224, 3.4561]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1866, -0.9909, -0.4001, 0.0486, 0.0113, 0.2962, 0.1377, 0.5640,\n", + " 1.2685, 0.7705, -0.0367, 0.6663, -0.0539, 0.3717, 1.0004, -0.1252,\n", + " -0.3621, -0.5056, -0.2209, -0.6587, -0.2684, -0.7444, -0.7416, 0.0523,\n", + " -1.0750, 0.7613, -0.5704, 0.2116, -0.6511, -1.1880, -0.3082, 0.9568,\n", + " -1.3081, -0.1968, -0.3049, -0.1189, 0.1281, -0.7406, -0.2715, -0.4370,\n", + " -0.2984, -0.1997, -0.2315]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3000, -0.3173, -0.0644, -0.1436, -0.0540, 0.1588, 0.2226, 0.3605,\n", + " 0.2096, 0.2298, 0.3215, -0.2180, -0.1499, -0.3026, -0.2112, -0.2762,\n", + " -0.2301, -0.0242, -0.1131, -0.1483, -0.1045, 0.0143, -0.0756, -0.0276,\n", + " 0.0018, 0.0215, -0.0456, -0.1381, -0.2191, -0.2219, -0.2734, -0.1681,\n", + " -0.2605, -0.3439, -0.1689, -0.2556, -0.0493, 0.0299, -0.0020, 0.4145,\n", + " 0.4081, 0.3810, 0.2597]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000560292974114418\n", + "Grad encoder.fc1.bias: 0.000528095057234168\n", + "Grad encoder.encoder.0.weight: 0.0001278003037441522\n", + "Grad encoder.encoder.0.bias: 0.00047935411566868424\n", + "Grad encoder.encoder.2.weight: 8.326519309775904e-05\n", + "Grad encoder.encoder.2.bias: 0.0005309642874635756\n", + "Grad encoder.encoder.4.weight: 0.0002253891434520483\n", + "Grad encoder.encoder.4.bias: 0.0017541800625622272\n", + "Grad decoder.fc1.0.weight: 0.0001013902947306633\n", + "Grad decoder.fc1.0.bias: 0.0007546410779468715\n", + "Grad decoder.fc1.2.weight: 0.00012552582484204322\n", + "Grad decoder.fc1.2.bias: 0.0012236523907631636\n", + "Grad decoder.fc1.4.weight: 8.079937106231228e-05\n", + "Grad decoder.fc1.4.bias: 0.0008038277155719697\n", + "Grad decoder.fc2.weight: 0.0001124391783378087\n", + "Grad decoder.fc2.bias: 0.0018123321933671832\n", + "Grad _memory_unit.weight_ih_l0: 1.594961759110447e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.019299664534628e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.998184547526762e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.798589078651275e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00012053881073370576\n", + "Grad _memory_unit.bias_hh_l1: 6.477120041381568e-05\n", + "Data X Sample: tensor([[1.5870, 1.8163, 1.9489, 2.0728, 2.2180, 2.3469, 2.4435, 2.4914, 2.5704,\n", + " 2.5544, 2.5061, 2.6486, 2.5455, 2.4865, 2.4210, 2.3235, 2.3523, 2.3386,\n", + " 2.4347, 2.5069, 2.4438, 2.5245, 2.4532, 2.4813, 2.4830, 2.5623, 2.4881,\n", + " 2.4879, 2.2133, 2.3286, 2.3867, 2.4151, 2.3100, 1.4990, 1.9928, 1.8509,\n", + " 1.6400, 1.6140, 1.5466, 1.5037, 1.3888, 0.7329, 0.7296, 1.2888, 1.9068,\n", + " 2.0757, 1.3802, 2.0955]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2045, 0.7393, 0.2126, -0.1716, -0.1965, 0.3797, -0.9805, -0.4607,\n", + " -1.3381, -0.7325, -0.1304, 1.4340, -0.0329, 0.7953, 0.6674, 0.3109,\n", + " 0.0532, 0.4432, -0.0847, 0.4661, 0.1412, 0.5262, -0.0646, -0.1572,\n", + " -0.0105, -0.3331, 1.1131, -0.3325, 0.9931, 1.1776, 0.6202, 1.3731,\n", + " 0.1647, 0.4012, 0.6707, 0.6248, 0.1343, -0.7055, -1.8131, 0.0598,\n", + " -0.0525, -0.2552, -0.8983]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3888, 0.3170, 0.0845, 0.3887, 0.1210, -0.0737, -0.2746, -0.4000,\n", + " -0.2081, -0.2418, -0.2757, 0.0930, 0.2147, 0.3388, 0.2475, 0.3329,\n", + " 0.2931, 0.0810, 0.0640, 0.1223, 0.0652, 0.1136, 0.0834, 0.0722,\n", + " 0.0380, 0.0708, -0.1179, -0.0169, 0.2218, 0.1838, 0.1490, 0.1565,\n", + " 0.2980, 0.2390, 0.2031, 0.1890, -0.1015, -0.0256, 0.0029, -0.3189,\n", + " -0.3342, -0.2691, -0.3050]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00032713706605136395\n", + "Grad encoder.fc1.bias: 0.00030360775417648256\n", + "Grad encoder.encoder.0.weight: 7.16311187716201e-05\n", + "Grad encoder.encoder.0.bias: 0.0002863436529878527\n", + "Grad encoder.encoder.2.weight: 5.629626684822142e-05\n", + "Grad encoder.encoder.2.bias: 0.00041413475992158055\n", + "Grad encoder.encoder.4.weight: 0.00015452055959030986\n", + "Grad encoder.encoder.4.bias: 0.001229958375915885\n", + "Grad decoder.fc1.0.weight: 7.462930807378143e-05\n", + "Grad decoder.fc1.0.bias: 0.0005153956590220332\n", + "Grad decoder.fc1.2.weight: 7.145330891944468e-05\n", + "Grad decoder.fc1.2.bias: 0.000816487823612988\n", + "Grad decoder.fc1.4.weight: 6.691827002214268e-05\n", + "Grad decoder.fc1.4.bias: 0.0007506129913963377\n", + "Grad decoder.fc2.weight: 0.00015362282283604145\n", + "Grad decoder.fc2.bias: 0.002455320907756686\n", + "Grad _memory_unit.weight_ih_l0: 1.2348492418823298e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.3470623495522887e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.3583363145007752e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.397877536481246e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010193304478889331\n", + "Grad _memory_unit.bias_hh_l1: 5.426321877166629e-05\n", + "Data X Sample: tensor([[1.3589, 1.4725, 1.6138, 1.7449, 1.8201, 1.9462, 1.9120, 2.0627, 2.7339,\n", + " 3.8545, 4.0510, 4.2280, 3.9636, 3.9397, 3.7450, 3.4900, 3.4938, 3.4741,\n", + " 3.3205, 3.4591, 3.4203, 3.3711, 3.0460, 2.8420, 2.6895, 2.8470, 2.7679,\n", + " 2.8305, 2.8517, 2.9640, 2.9466, 3.1557, 3.5245, 2.5677, 4.2405, 4.6383,\n", + " 4.8631, 5.3853, 5.7109, 5.7395, 1.0261, 0.5855, 0.5922, 1.0391, 1.5341,\n", + " 1.7155, 1.1014, 1.5638]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3580, 0.2867, 0.3033, 0.7669, 1.5146, 0.1102, 0.1761, 0.0054,\n", + " 0.2733, -0.1040, -1.0229, 0.3730, 0.0958, 0.9194, -0.7687, 0.6251,\n", + " 0.1262, 0.3157, 0.6166, 0.4477, -1.4524, 1.6650, -0.8991, -2.0474,\n", + " 0.2034, 0.6348, -0.4902, 0.1087, -0.7225, -0.8176, -0.6513, 1.6797,\n", + " 0.5880, -0.1191, 0.8631, 2.3928, 0.1596, 0.8256, -0.7618, -0.5152,\n", + " -0.7740, -0.8291, 0.8137]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3387, -0.3123, -0.0331, -0.0647, 0.0644, 0.2489, 0.2833, 0.4145,\n", + " 0.2638, 0.2716, 0.3482, -0.2688, -0.1893, -0.3840, -0.2484, -0.2854,\n", + " -0.2162, 0.0226, -0.1201, -0.1505, -0.1362, 0.0015, -0.0846, -0.0157,\n", + " 0.0174, 0.0293, -0.1290, -0.2285, -0.3005, -0.2916, -0.3498, -0.2124,\n", + " -0.3519, -0.4164, -0.2081, -0.2838, -0.0362, 0.0441, 0.0223, 0.4147,\n", + " 0.4064, 0.4276, 0.2928]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005591171211563051\n", + "Grad encoder.fc1.bias: 0.0006308602169156075\n", + "Grad encoder.encoder.0.weight: 0.00010844774078577757\n", + "Grad encoder.encoder.0.bias: 0.0008039195090532303\n", + "Grad encoder.encoder.2.weight: 7.206812006188557e-05\n", + "Grad encoder.encoder.2.bias: 0.0005475826328620315\n", + "Grad encoder.encoder.4.weight: 0.00019214398344047368\n", + "Grad encoder.encoder.4.bias: 0.00045978481648489833\n", + "Grad decoder.fc1.0.weight: 9.925822814693674e-05\n", + "Grad decoder.fc1.0.bias: 0.0003902815515175462\n", + "Grad decoder.fc1.2.weight: 0.0001158754457719624\n", + "Grad decoder.fc1.2.bias: 0.0009973997948691249\n", + "Grad decoder.fc1.4.weight: 0.00012227383558638394\n", + "Grad decoder.fc1.4.bias: 0.0011263260385021567\n", + "Grad decoder.fc2.weight: 0.0001658098044572398\n", + "Grad decoder.fc2.bias: 0.0020177916157990694\n", + "Grad _memory_unit.weight_ih_l0: 1.408031221217243e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.5425743185915053e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.0948582712444477e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.21462105907267e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.566885713255033e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.713880505529232e-05\n", + "Data X Sample: tensor([[1.2741, 1.6750, 1.9204, 2.0335, 2.0472, 2.2114, 2.2293, 2.1749, 2.2311,\n", + " 2.3095, 2.1667, 2.0137, 2.0195, 1.9113, 1.7603, 1.7546, 1.7831, 1.8183,\n", + " 1.7986, 1.6961, 1.6881, 1.5661, 1.6025, 1.5231, 1.4489, 1.4914, 1.3666,\n", + " 1.4561, 1.0859, 1.1561, 1.0324, 1.0362, 0.9196, 0.6362, 0.9609, 1.0118,\n", + " 1.0835, 1.2907, 1.4452, 1.4072, 1.2409, 0.6731, 0.7518, 1.2429, 1.9623,\n", + " 2.1615, 1.3190, 1.8844]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.7098, -1.3757, -1.1471, -0.5941, -1.2026, -0.3369, 1.3475, 3.1669,\n", + " 2.0313, 2.8309, 4.6797, -0.7986, -1.9639, -2.6462, -1.3784, -3.4434,\n", + " -2.2345, -0.9536, 0.1648, -0.7873, 0.2659, 0.5013, -0.4466, 0.0502,\n", + " -0.0088, -0.1893, 0.5584, 1.9250, 0.1347, -2.1122, -2.5130, -0.5968,\n", + " 1.9115, -2.5783, 0.2649, -1.3971, 0.4684, 0.6044, -0.4418, 8.5901,\n", + " 8.0060, 7.1313, 3.2894]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.5690, -0.6110, -0.3262, -0.5703, -0.3431, -0.0992, 0.3192, 0.6317,\n", + " 0.4052, 0.6921, 0.7867, -0.2731, -0.2362, -0.4930, -0.3181, -0.6339,\n", + " -0.6348, -0.3007, -0.1882, -0.2467, -0.1109, -0.0711, -0.0746, -0.0730,\n", + " 0.0190, 0.0356, 0.3683, 0.0810, -0.0659, -0.3055, -0.3238, -0.3679,\n", + " -0.3232, -0.7114, -0.3271, -0.3487, -0.0739, -0.0614, -0.0435, 1.1806,\n", + " 1.2326, 0.9495, 0.8397]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005109411431476474\n", + "Grad encoder.fc1.bias: 0.001950667705386877\n", + "Grad encoder.encoder.0.weight: 0.0001272470981348306\n", + "Grad encoder.encoder.0.bias: 0.001877292525023222\n", + "Grad encoder.encoder.2.weight: 8.977054676506668e-05\n", + "Grad encoder.encoder.2.bias: 0.0013073970330879092\n", + "Grad encoder.encoder.4.weight: 0.00026148263714276254\n", + "Grad encoder.encoder.4.bias: 0.002079186961054802\n", + "Grad decoder.fc1.0.weight: 0.0001362231414532289\n", + "Grad decoder.fc1.0.bias: 0.0008028600714169443\n", + "Grad decoder.fc1.2.weight: 0.00014435133198276162\n", + "Grad decoder.fc1.2.bias: 0.0016005700454115868\n", + "Grad decoder.fc1.4.weight: 0.00011183375318069011\n", + "Grad decoder.fc1.4.bias: 0.0008253224659711123\n", + "Grad decoder.fc2.weight: 0.00017455228953622282\n", + "Grad decoder.fc2.bias: 0.0015378618845716119\n", + "Grad _memory_unit.weight_ih_l0: 1.692784826445859e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.445660306373611e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.57505653280532e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.2983784472453408e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00013153563486412168\n", + "Grad _memory_unit.bias_hh_l1: 7.04395497450605e-05\n", + "Data X Sample: tensor([[1.7366, 1.6546, 1.8092, 2.0007, 2.0865, 2.1672, 2.2293, 4.2290, 4.2986,\n", + " 4.2494, 4.3810, 4.4111, 4.1256, 3.8879, 3.9720, 3.7621, 3.6794, 3.6463,\n", + " 3.7150, 3.5799, 3.5381, 3.4813, 2.9496, 2.9432, 2.8922, 2.9488, 3.0209,\n", + " 3.2384, 3.1153, 3.1933, 3.3175, 3.2994, 3.6521, 2.6775, 4.3998, 4.8110,\n", + " 5.0755, 5.5443, 6.2624, 5.9608, 1.1741, 0.6711, 0.6669, 1.1281, 1.7442,\n", + " 1.9213, 1.2986, 1.7984]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.9105, -0.0420, -0.1498, -1.6726, -0.9110, -0.8236, 0.4289, 0.9030,\n", + " -0.7808, 0.8198, 0.3690, -0.6619, -0.6481, -0.6745, -1.1997, -1.1997,\n", + " -1.7799, -0.0719, -0.4376, -1.0593, 0.1303, 0.3932, -0.4071, -0.3001,\n", + " -0.2235, -0.2129, 0.0774, -1.8867, 0.0852, -1.1252, -0.4194, -0.2582,\n", + " -0.6599, -0.2773, 0.3371, -0.6940, -1.0105, 0.7357, -1.8131, 0.9273,\n", + " 0.6504, 1.0095, 0.9911]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3125, -0.3003, -0.0483, -0.0996, 0.0136, 0.2109, 0.2590, 0.3788,\n", + " 0.2385, 0.2424, 0.3297, -0.2585, -0.1645, -0.3603, -0.2425, -0.2712,\n", + " -0.2110, 0.0138, -0.1088, -0.1434, -0.1237, 0.0052, -0.0809, -0.0111,\n", + " 0.0203, 0.0419, -0.1011, -0.1833, -0.2596, -0.2661, -0.3234, -0.2004,\n", + " -0.3190, -0.3890, -0.1874, -0.2716, -0.0364, 0.0397, 0.0181, 0.3878,\n", + " 0.3821, 0.4092, 0.2853]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00021688970446120948\n", + "Grad encoder.fc1.bias: 0.00017823906091507524\n", + "Grad encoder.encoder.0.weight: 4.951015944243409e-05\n", + "Grad encoder.encoder.0.bias: 0.00020162161672487855\n", + "Grad encoder.encoder.2.weight: 3.633232699939981e-05\n", + "Grad encoder.encoder.2.bias: 0.0002369260328123346\n", + "Grad encoder.encoder.4.weight: 0.00010297600965714082\n", + "Grad encoder.encoder.4.bias: 0.0006190371932461858\n", + "Grad decoder.fc1.0.weight: 5.563386730500497e-05\n", + "Grad decoder.fc1.0.bias: 0.0002788088459055871\n", + "Grad decoder.fc1.2.weight: 7.186851871665567e-05\n", + "Grad decoder.fc1.2.bias: 0.001094259088858962\n", + "Grad decoder.fc1.4.weight: 5.651462561218068e-05\n", + "Grad decoder.fc1.4.bias: 0.000756945344619453\n", + "Grad decoder.fc2.weight: 0.00010098009079229087\n", + "Grad decoder.fc2.bias: 0.001782329985871911\n", + "Grad _memory_unit.weight_ih_l0: 1.0822726835613139e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.7968937754631042e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.2617276297532953e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.541453437122982e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.743521614931524e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.431105142226443e-05\n", + "Data X Sample: tensor([[1.5690, 1.7070, 1.8257, 1.9482, 2.0148, 2.0861, 2.0167, 2.5170, 3.9007,\n", + " 4.3395, 4.3841, 4.2786, 4.2565, 4.1061, 3.8888, 3.6828, 3.6007, 3.5496,\n", + " 3.4259, 3.4163, 3.3909, 3.3695, 2.8243, 2.8630, 2.8284, 2.8652, 2.9090,\n", + " 3.0345, 2.9939, 3.1474, 3.2650, 3.2497, 3.7577, 2.7897, 4.5935, 4.8572,\n", + " 5.0696, 5.3668, 5.9645, 5.9778, 1.1932, 0.6333, 0.6710, 1.1108, 1.7759,\n", + " 1.9042, 1.2714, 1.7984]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3418, 1.1186, -0.3404, 0.1422, 0.8966, -0.0832, -0.2039, -0.2422,\n", + " -1.1167, -0.5030, -0.9455, 0.5453, -0.4978, 0.2397, 0.1321, 0.1294,\n", + " 0.0672, 0.6959, -0.1039, -0.3395, -0.6202, -0.4902, -0.9808, -3.3325,\n", + " 1.5575, 2.0779, 0.4106, -0.4164, -0.0776, -0.8227, 1.0269, -1.7232,\n", + " 0.2009, -0.7678, 0.3736, 0.3478, 0.2315, -0.5781, 0.3426, -0.2558,\n", + " -0.1021, 0.3272, 0.1286]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3265, -0.3142, -0.0562, -0.1085, 0.0075, 0.2173, 0.2720, 0.3975,\n", + " 0.2487, 0.2505, 0.3509, -0.2735, -0.1703, -0.3795, -0.2561, -0.2842,\n", + " -0.2195, 0.0144, -0.1131, -0.1491, -0.1261, 0.0070, -0.0825, -0.0060,\n", + " 0.0272, 0.0480, -0.1014, -0.1871, -0.2697, -0.2784, -0.3391, -0.2105,\n", + " -0.3298, -0.4069, -0.1932, -0.2855, -0.0382, 0.0405, 0.0239, 0.4047,\n", + " 0.3977, 0.4325, 0.3014]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00101324578281492\n", + "Grad encoder.fc1.bias: 0.0012755765346810222\n", + "Grad encoder.encoder.0.weight: 0.0002286971139255911\n", + "Grad encoder.encoder.0.bias: 0.0010969656286761165\n", + "Grad encoder.encoder.2.weight: 0.00017177681729663163\n", + "Grad encoder.encoder.2.bias: 0.0010414507705718279\n", + "Grad encoder.encoder.4.weight: 0.00045266939559951425\n", + "Grad encoder.encoder.4.bias: 0.002004978246986866\n", + "Grad decoder.fc1.0.weight: 0.0001252488000318408\n", + "Grad decoder.fc1.0.bias: 0.0006325434660539031\n", + "Grad decoder.fc1.2.weight: 0.00015080839511938393\n", + "Grad decoder.fc1.2.bias: 0.0012920510489493608\n", + "Grad decoder.fc1.4.weight: 0.0001155727804871276\n", + "Grad decoder.fc1.4.bias: 0.0011002554092556238\n", + "Grad decoder.fc2.weight: 0.0001457429607398808\n", + "Grad decoder.fc2.bias: 0.002656470285728574\n", + "Grad _memory_unit.weight_ih_l0: 2.1488431229954585e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.0315792173496448e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.1129364540684037e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0497962648514658e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.563556912122294e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.686691681854427e-05\n", + "Data X Sample: tensor([[-0.0053, 0.0029, 0.0045, 0.0044, -0.0154, 0.0000, 0.0046, 0.0000,\n", + " 0.0122, 0.0126, 0.0000, 0.0078, -0.0133, -0.0218, -0.0025, 0.0041,\n", + " 0.0142, 0.0309, 0.0165, 0.0056, 0.0196, 0.0168, 0.0217, 0.0134,\n", + " 0.0075, 0.0209, 0.0293, 0.0489, -0.0104, 0.0426, 0.0070, -0.0111,\n", + " 0.0000, 0.0114, -0.0025, 0.0438, -0.0079, -0.0212, 0.0444, -0.0142,\n", + " 0.0430, 0.0040, 0.0101, -0.0258, 0.0079, -0.0229, 0.0000, -0.0313]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 3.0148, 0.5453, 0.3982, 0.7371, -1.5181, 0.1334, -1.2897, -1.2752,\n", + " -0.5091, -0.8989, -0.7645, 0.1627, 0.3618, 0.7212, -0.2418, 0.4025,\n", + " -0.4391, 0.4655, -0.5374, -0.3930, -1.3392, -1.4999, -0.0564, 1.2678,\n", + " 1.5922, -0.4462, 1.8935, 0.0537, 1.3682, 1.5386, 1.2030, -0.4581,\n", + " 0.4782, 0.5966, 0.0522, 0.8813, -0.7561, 0.2376, 0.0382, -0.8616,\n", + " -0.8568, -0.6364, -1.3215]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 1.1842, 0.7868, 0.2290, 0.5347, -0.7445, -0.9227, -1.5337, -1.5551,\n", + " -1.1831, -1.2082, -1.1298, 0.5875, 0.5921, 0.8745, 0.5924, 0.7337,\n", + " 0.5442, 0.1162, 0.0798, 0.2011, 0.1647, 0.1896, 0.1956, 0.0358,\n", + " -0.0435, -0.1667, 0.5157, 0.6550, 1.3582, 1.4044, 1.1676, 0.8074,\n", + " 0.9138, 0.8460, 0.6166, 0.3479, -0.2736, 0.0812, 0.1126, -1.1434,\n", + " -1.1232, -0.7788, -0.5835]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 9.712535393191501e-05\n", + "Grad encoder.fc1.bias: 0.0018274906324222684\n", + "Grad encoder.encoder.0.weight: 4.5303044316824526e-05\n", + "Grad encoder.encoder.0.bias: 0.0012333758641034365\n", + "Grad encoder.encoder.2.weight: 3.207634654245339e-05\n", + "Grad encoder.encoder.2.bias: 0.000725627294741571\n", + "Grad encoder.encoder.4.weight: 9.884294559014961e-05\n", + "Grad encoder.encoder.4.bias: 0.001193862990476191\n", + "Grad decoder.fc1.0.weight: 6.266799027798697e-05\n", + "Grad decoder.fc1.0.bias: 0.0005232386174611747\n", + "Grad decoder.fc1.2.weight: 6.807901081629097e-05\n", + "Grad decoder.fc1.2.bias: 0.0007004741346463561\n", + "Grad decoder.fc1.4.weight: 6.957205187063664e-05\n", + "Grad decoder.fc1.4.bias: 0.0005293409922160208\n", + "Grad decoder.fc2.weight: 0.00014163424202706665\n", + "Grad decoder.fc2.bias: 0.0016950631979852915\n", + "Grad _memory_unit.weight_ih_l0: 9.37323784455657e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.3294047170784324e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.778620935510844e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.137506716186181e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.680352766532451e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.652527786674909e-05\n", + "Data X Sample: tensor([[1.6804, 1.8148, 2.0481, 2.2346, 2.4007, 2.4780, 2.4681, 2.6802, 2.6436,\n", + " 2.6808, 2.7758, 2.6895, 2.6232, 2.5220, 2.4513, 2.4931, 2.5331, 2.4334,\n", + " 2.5214, 2.6278, 2.5885, 2.6944, 2.6219, 2.5920, 2.5487, 2.5335, 2.5494,\n", + " 2.4512, 2.3521, 2.4432, 2.4882, 2.4483, 2.2330, 1.4120, 1.8972, 1.8217,\n", + " 1.7561, 1.6193, 1.6036, 1.4895, 1.2934, 0.7926, 0.7922, 1.3950, 1.9623,\n", + " 2.1844, 1.4890, 2.1972]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2895, -0.2824, -0.1164, -0.2394, 0.3259, -0.5287, -1.1009, -0.2333,\n", + " -0.0601, 0.1057, 0.1626, 0.1128, 1.9747, 1.1476, -0.6684, 0.1748,\n", + " -1.2198, 0.5506, -0.4393, -0.9307, -0.0970, 0.5227, -0.1776, 0.2986,\n", + " 0.3840, -0.5232, 0.5875, 0.5692, 0.5444, -0.8614, 0.4916, 0.5592,\n", + " 0.5347, 0.0036, 1.1689, -0.3027, 0.8233, -0.7928, -0.7130, 1.1771,\n", + " 0.7845, 0.6514, 0.6546]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4328, 0.3221, 0.0649, 0.3777, 0.0819, -0.1450, -0.3586, -0.4991,\n", + " -0.2937, -0.3373, -0.3358, 0.1277, 0.1903, 0.3586, 0.2529, 0.3295,\n", + " 0.2937, 0.0991, 0.0619, 0.1005, 0.0441, 0.1329, 0.1209, 0.1045,\n", + " 0.0491, 0.0469, -0.0630, -0.0006, 0.2873, 0.2852, 0.2249, 0.1881,\n", + " 0.3148, 0.2882, 0.2303, 0.2139, -0.0942, -0.0358, 0.0150, -0.4022,\n", + " -0.4017, -0.3256, -0.3314]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001560857199365273\n", + "Grad encoder.fc1.bias: 0.0007419768371619284\n", + "Grad encoder.encoder.0.weight: 4.1461127693764865e-05\n", + "Grad encoder.encoder.0.bias: 0.00034203618997707963\n", + "Grad encoder.encoder.2.weight: 3.69694535038434e-05\n", + "Grad encoder.encoder.2.bias: 0.0004849587567150593\n", + "Grad encoder.encoder.4.weight: 0.00012644875096157193\n", + "Grad encoder.encoder.4.bias: 0.0015846022870391607\n", + "Grad decoder.fc1.0.weight: 7.317268318729475e-05\n", + "Grad decoder.fc1.0.bias: 0.0005536802927963436\n", + "Grad decoder.fc1.2.weight: 9.365400183014572e-05\n", + "Grad decoder.fc1.2.bias: 0.000628412701189518\n", + "Grad decoder.fc1.4.weight: 9.665444667916745e-05\n", + "Grad decoder.fc1.4.bias: 0.0006666878471150994\n", + "Grad decoder.fc2.weight: 0.00018472055671736598\n", + "Grad decoder.fc2.bias: 0.0019403205951675773\n", + "Grad _memory_unit.weight_ih_l0: 2.0851517547271214e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.988131594378501e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.820869071409106e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.273923529282911e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00014591684157494456\n", + "Grad _memory_unit.bias_hh_l1: 7.622005068697035e-05\n", + "Data X Sample: tensor([[ 0.0170, 0.0160, 0.0210, 0.0153, 0.0120, 0.0265, 0.0169, 0.0043,\n", + " 0.0195, 0.0142, 0.0381, 0.0117, 0.0000, 0.0027, -0.0202, 0.0109,\n", + " -0.0692, -0.0948, -0.1301, -0.1134, -0.0859, -0.0720, -0.1615, -0.1279,\n", + " -0.1126, -0.2194, -0.2344, -0.4160, -0.0208, -0.0524, -0.1015, -0.0414,\n", + " -0.0616, -0.0595, -0.0515, -0.0097, -0.0118, -0.0477, -0.0697, -0.0142,\n", + " -0.0143, -0.0020, 0.0000, -0.0029, 0.0277, 0.0172, 0.0340, 0.0000]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.2673, 0.6614, 0.7532, 1.3756, -1.3095, -0.4538, -2.0713, -1.4802,\n", + " -1.2287, -1.0729, -0.8809, 0.9871, 0.3025, 0.8501, 0.4980, 2.2754,\n", + " 0.5133, 1.4348, 0.0354, 0.8974, -0.4717, 1.0482, 0.7067, 0.3059,\n", + " 0.2393, -0.2190, -0.8195, -0.2473, 1.1986, 1.1333, 1.1947, 0.0604,\n", + " 0.8019, 1.1301, 1.3467, -0.5604, 0.3997, 0.8696, 1.1574, -1.0281,\n", + " -1.2778, -0.5639, -0.5620]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.7133, 0.5457, 0.1924, 0.5267, 0.1399, -0.2245, -0.6419, -0.9051,\n", + " -0.3828, -0.5002, -0.3622, 0.4433, 0.2922, 0.5185, 0.3449, 0.5653,\n", + " 0.4728, 0.1520, 0.1702, 0.1418, 0.0888, 0.1978, 0.1398, 0.0654,\n", + " 0.0845, 0.0680, -0.1211, 0.0596, 0.4286, 0.5455, 0.5174, 0.3414,\n", + " 0.5924, 0.5825, 0.2976, 0.2874, -0.1123, 0.0186, 0.0205, -0.6019,\n", + " -0.6741, -0.5191, -0.4578]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 2.751962711045053e-05\n", + "Grad encoder.fc1.bias: 6.925883644726127e-05\n", + "Grad encoder.encoder.0.weight: 1.3813128134643193e-05\n", + "Grad encoder.encoder.0.bias: 8.797610644251108e-05\n", + "Grad encoder.encoder.2.weight: 1.3288251466292422e-05\n", + "Grad encoder.encoder.2.bias: 0.00014790211571380496\n", + "Grad encoder.encoder.4.weight: 5.8732104662340134e-05\n", + "Grad encoder.encoder.4.bias: 0.0005962231662124395\n", + "Grad decoder.fc1.0.weight: 3.923563053831458e-05\n", + "Grad decoder.fc1.0.bias: 0.0003123466158285737\n", + "Grad decoder.fc1.2.weight: 9.57313968683593e-05\n", + "Grad decoder.fc1.2.bias: 0.0006907594506628811\n", + "Grad decoder.fc1.4.weight: 7.709856436122209e-05\n", + "Grad decoder.fc1.4.bias: 0.0006862714653834701\n", + "Grad decoder.fc2.weight: 0.00012606897507794201\n", + "Grad decoder.fc2.bias: 0.0016798186115920544\n", + "Grad _memory_unit.weight_ih_l0: 9.017824595503043e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.468748061801307e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.6462205167044885e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.6157787184929475e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.311941251624376e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.4268385206814855e-05\n", + "Data X Sample: tensor([[1.5064, 1.8556, 1.9534, 2.1494, 2.2726, 2.2644, 2.3449, 2.3083, 2.3360,\n", + " 2.4328, 2.3761, 2.4519, 2.3147, 2.3148, 2.3101, 2.2865, 2.2752, 2.3464,\n", + " 2.4099, 2.4753, 2.4340, 2.5428, 2.5206, 2.4565, 2.4549, 2.4186, 2.4162,\n", + " 2.4186, 2.0121, 2.0044, 1.8442, 1.7022, 1.5114, 1.0001, 1.3800, 1.3596,\n", + " 1.2998, 1.2960, 1.3311, 1.3590, 1.2838, 0.7567, 0.7478, 1.2572, 1.9662,\n", + " 2.1901, 1.4210, 2.0252]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 2.7957e-01, -6.5686e-01, -3.3896e-01, 2.5857e-01, 7.9315e-01,\n", + " -4.5008e-01, -1.3686e+00, -8.6820e-01, 4.6887e-01, -4.8252e-02,\n", + " -5.0235e-02, 1.4959e+01, 2.2687e+01, -9.1273e+00, -5.9247e-01,\n", + " 2.8536e+00, 3.4347e+00, 1.1421e-01, 2.1264e+00, 4.3928e+00,\n", + " 2.6762e+00, 4.4990e+00, 2.6924e+00, 2.1441e+00, -2.2086e-03,\n", + " -1.8292e-01, 9.7600e-01, -1.1865e+00, -6.7631e-02, 7.9884e-02,\n", + " 7.4757e-01, -4.0039e-01, -3.9472e-01, 1.3085e+00, 8.3860e-01,\n", + " -2.1318e-01, -8.2869e-01, 0.0000e+00, -7.1302e-01, -6.7475e-02,\n", + " 7.9200e-01, -2.5707e-01, -9.0960e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3695, 0.2682, 0.0419, 0.3038, 0.0522, -0.1440, -0.3337, -0.4498,\n", + " -0.2609, -0.3073, -0.2965, 0.1149, 0.1441, 0.3039, 0.2063, 0.2617,\n", + " 0.2330, 0.0939, 0.0573, 0.0747, 0.0387, 0.1146, 0.1125, 0.0951,\n", + " 0.0469, 0.0419, -0.0393, 0.0148, 0.2633, 0.2596, 0.2250, 0.1675,\n", + " 0.2582, 0.2568, 0.1998, 0.1835, -0.0682, -0.0258, 0.0130, -0.3555,\n", + " -0.3376, -0.2938, -0.2774]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00023501040413975716\n", + "Grad encoder.fc1.bias: 0.0007241751300171018\n", + "Grad encoder.encoder.0.weight: 7.378087320830673e-05\n", + "Grad encoder.encoder.0.bias: 0.0006752973422408104\n", + "Grad encoder.encoder.2.weight: 7.41293843020685e-05\n", + "Grad encoder.encoder.2.bias: 0.0005981723079457879\n", + "Grad encoder.encoder.4.weight: 0.0002316816826350987\n", + "Grad encoder.encoder.4.bias: 0.0012833173386752605\n", + "Grad decoder.fc1.0.weight: 0.00012357463128864765\n", + "Grad decoder.fc1.0.bias: 0.0005666562356054783\n", + "Grad decoder.fc1.2.weight: 0.0001436502207070589\n", + "Grad decoder.fc1.2.bias: 0.0011204396141692996\n", + "Grad decoder.fc1.4.weight: 0.00010585654672468081\n", + "Grad decoder.fc1.4.bias: 0.0008128799963742495\n", + "Grad decoder.fc2.weight: 0.00016087415860965848\n", + "Grad decoder.fc2.bias: 0.0018594980938360095\n", + "Grad _memory_unit.weight_ih_l0: 2.268870230182074e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.2698593460954726e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.8005259082419798e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.179917308036238e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.34613383631222e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.8102559958351776e-05\n", + "Data X Sample: tensor([[1.6305, 1.8308, 1.9474, 2.0247, 2.2880, 2.3911, 2.4358, 2.6561, 2.5801,\n", + " 2.6365, 2.6140, 2.7635, 2.6187, 2.5302, 2.4689, 2.5532, 2.4954, 2.4973,\n", + " 2.5007, 2.4251, 2.5198, 2.4158, 2.3953, 2.3840, 2.4080, 2.4891, 2.4428,\n", + " 2.4104, 2.2099, 2.3646, 2.2362, 2.3184, 2.2946, 1.5630, 2.0099, 1.8193,\n", + " 1.6833, 1.5822, 1.6163, 1.5377, 1.1502, 0.7129, 0.7276, 1.2544, 1.8869,\n", + " 2.0357, 1.4006, 1.9783]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1529, 0.6448, 1.9850, 0.2943, 0.3772, -0.6093, -0.1484, -0.5731,\n", + " -0.0726, -0.6057, -0.7435, 0.1091, 0.8823, -0.1844, -0.1763, -0.1523,\n", + " 0.2506, -0.2215, -0.5590, -1.3514, 0.4083, -1.0425, -1.0165, -0.1440,\n", + " 0.2305, 0.0543, -0.7434, -0.4644, -0.2997, -0.6480, 0.8031, 0.4717,\n", + " 1.0371, 1.1052, 0.4676, 0.0157, 0.3652, -0.8628, 1.2362, -0.4964,\n", + " -0.6573, 0.0292, -1.2100]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5403, 0.4338, 0.0873, 0.4791, 0.1140, -0.2149, -0.4980, -0.6491,\n", + " -0.4187, -0.5016, -0.4495, 0.1671, 0.1992, 0.4579, 0.3196, 0.3915,\n", + " 0.3769, 0.1576, 0.1032, 0.1432, 0.0829, 0.1620, 0.1561, 0.1843,\n", + " 0.1063, 0.0706, -0.0578, 0.0237, 0.4053, 0.4188, 0.3637, 0.2643,\n", + " 0.3922, 0.4009, 0.3186, 0.2925, -0.0672, -0.0278, 0.0570, -0.5432,\n", + " -0.5225, -0.4872, -0.4510]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00038614682853221893\n", + "Grad encoder.fc1.bias: 0.0010255704401060939\n", + "Grad encoder.encoder.0.weight: 0.00010132720490219072\n", + "Grad encoder.encoder.0.bias: 0.0008074961369857192\n", + "Grad encoder.encoder.2.weight: 8.524313307134435e-05\n", + "Grad encoder.encoder.2.bias: 0.0006361798150464892\n", + "Grad encoder.encoder.4.weight: 0.00024400382244493812\n", + "Grad encoder.encoder.4.bias: 0.0010321688605472445\n", + "Grad decoder.fc1.0.weight: 0.0001190030452562496\n", + "Grad decoder.fc1.0.bias: 0.000508880359120667\n", + "Grad decoder.fc1.2.weight: 9.487730858381838e-05\n", + "Grad decoder.fc1.2.bias: 0.0012022508308291435\n", + "Grad decoder.fc1.4.weight: 9.182088251691312e-05\n", + "Grad decoder.fc1.4.bias: 0.0009149443940259516\n", + "Grad decoder.fc2.weight: 0.0001493342570029199\n", + "Grad decoder.fc2.bias: 0.0019116753246635199\n", + "Grad _memory_unit.weight_ih_l0: 1.4812653716944624e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.933361272676848e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.175925717689097e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.2774025890394114e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.883769623935223e-05\n", + "Grad _memory_unit.bias_hh_l1: 5.1270231779199094e-05\n", + "Data X Sample: tensor([[1.7260, 1.9546, 2.1503, 2.2062, 2.2999, 2.3955, 2.4327, 2.4346, 2.4630,\n", + " 2.5054, 2.5949, 2.6875, 2.5344, 2.4702, 2.4235, 2.4124, 2.3680, 2.4489,\n", + " 2.6019, 2.5757, 2.7333, 2.6730, 2.6074, 2.7065, 2.7007, 2.7007, 2.6347,\n", + " 2.7490, 2.3417, 2.5186, 2.3307, 2.2880, 2.0724, 1.2816, 1.7624, 1.7074,\n", + " 1.6066, 1.6220, 1.5783, 1.4781, 1.3984, 0.7309, 0.8084, 1.3720, 1.9187,\n", + " 2.2301, 1.5026, 2.0643]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.6265e+00, 1.2772e+00, 4.0198e-01, 1.4241e+00, 2.0632e+00,\n", + " 8.0103e-02, -1.1090e+00, -1.1107e+00, -8.3325e-01, -9.6978e-01,\n", + " -6.3165e-01, 1.3078e+00, 9.7246e-01, 1.7035e+00, -1.2414e+00,\n", + " 1.4533e+00, 7.8954e-01, 6.9981e-01, 1.8588e-01, 2.1151e-01,\n", + " 7.9629e-01, 1.5908e-01, -1.4150e+00, -7.4059e-01, -1.1796e+00,\n", + " 6.5422e-01, -7.1679e-05, -6.3650e-01, 1.0064e+00, 4.6706e-01,\n", + " 1.2551e+00, 4.8386e-01, -1.6583e-02, 1.1452e+00, 8.4877e-01,\n", + " 1.0913e-01, 9.8389e-01, -1.3986e-02, 1.1137e+00, -8.1774e-01,\n", + " -1.0004e+00, -1.4354e-01, -3.7373e-02]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5572, 0.4588, 0.0997, 0.4955, 0.1268, -0.2271, -0.5311, -0.6665,\n", + " -0.4489, -0.5431, -0.4778, 0.1711, 0.1892, 0.4718, 0.3247, 0.3924,\n", + " 0.3903, 0.1738, 0.1170, 0.1600, 0.0970, 0.1704, 0.1498, 0.2103,\n", + " 0.1236, 0.0813, -0.0473, 0.0279, 0.4249, 0.4464, 0.4001, 0.2810,\n", + " 0.3974, 0.4279, 0.3411, 0.3142, -0.0505, -0.0252, 0.0739, -0.5697,\n", + " -0.5339, -0.5311, -0.4782]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003359587281011045\n", + "Grad encoder.fc1.bias: 0.00036877457750961185\n", + "Grad encoder.encoder.0.weight: 7.593237387482077e-05\n", + "Grad encoder.encoder.0.bias: 0.00037948100361973047\n", + "Grad encoder.encoder.2.weight: 6.854714592918754e-05\n", + "Grad encoder.encoder.2.bias: 0.000516177446115762\n", + "Grad encoder.encoder.4.weight: 0.00017413287423551083\n", + "Grad encoder.encoder.4.bias: 0.0012100903550162911\n", + "Grad decoder.fc1.0.weight: 7.644448487553746e-05\n", + "Grad decoder.fc1.0.bias: 0.00042259282781742513\n", + "Grad decoder.fc1.2.weight: 6.938070873729885e-05\n", + "Grad decoder.fc1.2.bias: 0.0005123774171806872\n", + "Grad decoder.fc1.4.weight: 6.500209565274417e-05\n", + "Grad decoder.fc1.4.bias: 0.0004425555525813252\n", + "Grad decoder.fc2.weight: 0.00012792545021511614\n", + "Grad decoder.fc2.bias: 0.0023153850343078375\n", + "Grad _memory_unit.weight_ih_l0: 1.2215376955282409e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.855516453972086e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.5597670173738152e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.373765700118383e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.398608431685716e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.8572736229980364e-05\n", + "Data X Sample: tensor([[2.0888, 2.4193, 2.8144, 2.9868, 3.0273, 3.1631, 3.2369, 3.2467, 3.2343,\n", + " 3.2447, 3.2580, 3.3263, 3.1758, 3.1572, 3.1726, 3.1536, 3.1542, 3.3097,\n", + " 3.3990, 3.2266, 3.1676, 3.1169, 2.9424, 2.7733, 2.6050, 2.6511, 2.5228,\n", + " 2.6592, 2.1613, 2.1714, 2.2852, 2.2936, 2.0240, 1.3639, 1.9658, 2.2693,\n", + " 2.5250, 2.8013, 3.0741, 2.9563, 1.7134, 0.9838, 0.9984, 1.7194, 2.5529,\n", + " 2.9678, 1.8425, 2.8540]], device='cuda:0')\n", + "Data Y Sample: tensor([[-2.5785e-03, 2.9416e-01, 3.9700e-01, 3.8724e-01, 1.1726e+00,\n", + " 2.4516e+00, 4.9382e-01, -1.7949e-01, 1.7484e-01, 1.4138e-01,\n", + " -5.9534e-03, 3.3871e-02, -1.5263e+00, 5.4413e-01, 7.9672e-01,\n", + " 2.7842e-01, 4.0542e-01, 1.0185e+00, -1.8362e-01, -4.3057e-01,\n", + " -6.0991e-01, 6.5107e-01, 2.1624e+00, 7.9256e-01, -5.4322e-01,\n", + " 4.7668e-01, -1.7548e-01, 5.2134e-01, -5.3603e-01, -8.7865e-01,\n", + " -8.7296e-01, -9.1144e+00, -7.5881e-01, 1.4454e-01, 3.1288e-01,\n", + " 3.2158e-01, 2.7304e-01, 7.0514e-02, 8.5538e-01, -1.4235e-01,\n", + " -1.2153e-01, 1.3957e-01, 2.2247e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3526, -0.3966, -0.1852, -0.3968, -0.2715, -0.1021, 0.0958, 0.3273,\n", + " 0.1969, 0.3212, 0.3301, -0.1859, -0.1476, -0.2950, -0.1767, -0.3574,\n", + " -0.3225, -0.1796, -0.0998, -0.1101, -0.0906, -0.0189, -0.0486, -0.0761,\n", + " 0.0229, 0.0273, 0.2259, 0.0807, -0.0628, -0.2366, -0.1525, -0.2004,\n", + " -0.2064, -0.3070, -0.1451, -0.2065, -0.0253, -0.0272, -0.0474, 0.5126,\n", + " 0.5501, 0.4525, 0.4171]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00019576915656216443\n", + "Grad encoder.fc1.bias: 0.0004973660688847303\n", + "Grad encoder.encoder.0.weight: 6.436524563468993e-05\n", + "Grad encoder.encoder.0.bias: 0.0004982062382623553\n", + "Grad encoder.encoder.2.weight: 5.719221371691674e-05\n", + "Grad encoder.encoder.2.bias: 0.0005405483534559608\n", + "Grad encoder.encoder.4.weight: 0.00022730376804247499\n", + "Grad encoder.encoder.4.bias: 0.0020375829190015793\n", + "Grad decoder.fc1.0.weight: 0.00013654131907969713\n", + "Grad decoder.fc1.0.bias: 0.0009174965089187026\n", + "Grad decoder.fc1.2.weight: 0.00014243062469176948\n", + "Grad decoder.fc1.2.bias: 0.0016729880589991808\n", + "Grad decoder.fc1.4.weight: 0.0001224843435920775\n", + "Grad decoder.fc1.4.bias: 0.0009765776339918375\n", + "Grad decoder.fc2.weight: 0.00021870044292882085\n", + "Grad decoder.fc2.bias: 0.0025161183439195156\n", + "Grad _memory_unit.weight_ih_l0: 2.1319176084944047e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00011097179958596826\n", + "Grad _memory_unit.bias_hh_l0: 5.720133049180731e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.7383612430421636e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00021548912627622485\n", + "Grad _memory_unit.bias_hh_l1: 0.0001170346440630965\n", + "Data X Sample: tensor([[1.1096, 1.3240, 1.5808, 1.7252, 1.8099, 1.9580, 2.0321, 2.0812, 3.5126,\n", + " 4.1578, 4.4444, 4.3176, 4.2543, 3.8825, 3.8913, 3.7744, 3.7234, 3.7507,\n", + " 3.5931, 3.5837, 3.4988, 3.3711, 2.9544, 2.8172, 2.7833, 2.8522, 2.8797,\n", + " 2.9407, 2.9488, 3.0491, 3.0761, 3.3160, 3.8479, 2.8103, 4.7136, 5.1028,\n", + " 5.2230, 5.6583, 6.1609, 6.1622, 0.9784, 0.5317, 0.5881, 0.9903, 1.4549,\n", + " 1.7212, 1.1490, 1.7202]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6763, -0.6382, -0.7224, -0.5828, -0.3501, -0.2792, 0.1336, 0.3816,\n", + " 1.2403, 0.6889, 0.5734, -1.3505, -0.7512, -0.3267, -0.3001, -1.0043,\n", + " -0.1418, 0.2468, -0.8152, 0.0798, -0.1579, 0.0818, -0.6388, -0.2729,\n", + " 0.1506, -0.3884, -0.7264, 0.3704, -0.0545, 0.0344, -0.2748, 0.0688,\n", + " -0.7488, -1.0712, -0.4217, -0.7355, -0.9937, 0.1545, -0.7678, 0.7257,\n", + " 0.5893, 0.9727, -0.1408]], device='cuda:0')\n", + "Prediction Sample: tensor([[-2.3961e-01, -1.9462e-01, -5.9095e-02, -1.3723e-01, -1.6853e-02,\n", + " 6.2709e-02, 1.1044e-01, 1.8084e-01, 9.7117e-02, 1.4129e-01,\n", + " 1.6852e-01, -1.6178e-01, -1.4171e-01, -2.6020e-01, -1.6281e-01,\n", + " -1.7384e-01, -1.2519e-01, -1.1218e-02, -9.0986e-02, -5.1421e-02,\n", + " -1.0765e-01, -2.0606e-02, -3.3841e-02, -8.4857e-03, 4.7679e-02,\n", + " 3.1258e-02, 1.4619e-02, -6.5381e-02, -1.2721e-01, -1.8436e-01,\n", + " -1.6389e-01, -1.6946e-01, -2.4357e-01, -2.4787e-01, -9.7747e-02,\n", + " -1.5468e-01, 8.1654e-03, 1.0672e-02, -1.2737e-04, 2.0996e-01,\n", + " 2.1381e-01, 2.4353e-01, 2.2410e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00011200710287084803\n", + "Grad encoder.fc1.bias: 0.0007848583627492189\n", + "Grad encoder.encoder.0.weight: 4.717058254755102e-05\n", + "Grad encoder.encoder.0.bias: 0.000820531218778342\n", + "Grad encoder.encoder.2.weight: 5.3887128160567954e-05\n", + "Grad encoder.encoder.2.bias: 0.0007182714180089533\n", + "Grad encoder.encoder.4.weight: 0.00019805264309979975\n", + "Grad encoder.encoder.4.bias: 0.0018206968670710921\n", + "Grad decoder.fc1.0.weight: 0.00010613854828989133\n", + "Grad decoder.fc1.0.bias: 0.0006338909734040499\n", + "Grad decoder.fc1.2.weight: 9.970339306164533e-05\n", + "Grad decoder.fc1.2.bias: 0.0010847155936062336\n", + "Grad decoder.fc1.4.weight: 8.650887320982292e-05\n", + "Grad decoder.fc1.4.bias: 0.0008665859932079911\n", + "Grad decoder.fc2.weight: 0.0001756873243721202\n", + "Grad decoder.fc2.bias: 0.0019296102691441774\n", + "Grad _memory_unit.weight_ih_l0: 2.3977392629603855e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.196731116389856e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.787953366758302e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.1828796232293826e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00013829022645950317\n", + "Grad _memory_unit.bias_hh_l1: 7.603465928696096e-05\n", + "Data X Sample: tensor([[2.1196, 2.5664, 2.7738, 2.8534, 2.9231, 3.0202, 3.2138, 3.2098, 3.4198,\n", + " 3.3474, 3.4134, 3.4042, 3.3267, 3.2172, 3.2659, 3.2794, 3.1888, 3.3542,\n", + " 3.3557, 3.2768, 3.1627, 3.2088, 3.0532, 2.8726, 2.8021, 2.6746, 2.5920,\n", + " 2.6348, 2.3660, 2.3352, 2.1137, 2.2245, 2.0504, 1.3914, 2.1399, 2.3349,\n", + " 2.5997, 2.7934, 3.1565, 2.8229, 1.6609, 0.9599, 0.9862, 1.7796, 2.4776,\n", + " 2.7219, 1.8357, 2.5412]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2857, -0.0651, -0.4668, 0.0355, 0.7468, -2.1262, 0.1971, 0.1425,\n", + " -0.2089, -0.1120, -0.1501, -0.7092, -1.9915, -0.7780, -0.4270, -1.2686,\n", + " -0.5894, -0.3155, -0.2112, -0.6636, -0.0867, -1.0720, -0.4827, 0.2432,\n", + " -0.3098, -0.6149, 0.0553, 0.4715, -0.8224, -0.3906, -1.2326, 0.1314,\n", + " -0.2674, -0.0768, 0.4418, 0.3159, 0.0213, 0.5129, 0.5046, -0.3164,\n", + " -0.2353, -0.5078, 0.1095]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2862, -0.3351, -0.1613, -0.3262, -0.2330, -0.0733, 0.0621, 0.2675,\n", + " 0.1521, 0.2379, 0.2520, -0.1652, -0.1261, -0.2454, -0.1525, -0.2865,\n", + " -0.2651, -0.1301, -0.0892, -0.0882, -0.0794, -0.0104, -0.0475, -0.0673,\n", + " 0.0318, 0.0295, 0.1834, 0.0650, -0.0703, -0.2011, -0.1209, -0.1637,\n", + " -0.1803, -0.2379, -0.1082, -0.1696, -0.0134, -0.0134, -0.0374, 0.3923,\n", + " 0.4374, 0.3454, 0.3199]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00033553154207766056\n", + "Grad encoder.fc1.bias: 0.0004578923690132797\n", + "Grad encoder.encoder.0.weight: 0.00010759118595160544\n", + "Grad encoder.encoder.0.bias: 0.00045477389357984066\n", + "Grad encoder.encoder.2.weight: 7.993849430931732e-05\n", + "Grad encoder.encoder.2.bias: 0.00037354399682953954\n", + "Grad encoder.encoder.4.weight: 0.00022920090123079717\n", + "Grad encoder.encoder.4.bias: 0.0009233271121047437\n", + "Grad decoder.fc1.0.weight: 0.00010004294017562643\n", + "Grad decoder.fc1.0.bias: 0.0003904853365384042\n", + "Grad decoder.fc1.2.weight: 8.558615081710741e-05\n", + "Grad decoder.fc1.2.bias: 0.0008519354159943759\n", + "Grad decoder.fc1.4.weight: 9.383741416968405e-05\n", + "Grad decoder.fc1.4.bias: 0.0008335254387930036\n", + "Grad decoder.fc2.weight: 0.0001360093301627785\n", + "Grad decoder.fc2.bias: 0.002428218023851514\n", + "Grad _memory_unit.weight_ih_l0: 1.280841479456285e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.4823979654465802e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.858950761554297e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.0998068319167942e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.799390004947782e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.5041117118671536e-05\n", + "Data X Sample: tensor([[2.5036, 2.9654, 3.2382, 3.3651, 3.5583, 3.4931, 3.7962, 3.7932, 3.7884,\n", + " 3.8545, 3.8607, 3.8093, 3.7794, 3.6889, 3.6542, 3.4750, 3.5001, 3.5147,\n", + " 3.5291, 3.3605, 3.2019, 3.1751, 2.9183, 2.8077, 2.7420, 2.7399, 2.7146,\n", + " 2.7653, 2.7129, 2.7675, 2.8556, 2.8490, 2.8777, 2.1581, 3.5738, 3.9986,\n", + " 4.1906, 4.5955, 4.9693, 4.9763, 1.9997, 1.0853, 1.1297, 2.0609, 2.9969,\n", + " 3.0878, 2.3252, 2.9869]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1572, 0.1408, -0.1156, -0.3692, -1.0373, -0.2806, -1.0709, 0.4238,\n", + " -0.4844, -0.4064, -0.5380, -0.8616, -0.3464, -0.4164, 0.2650, -0.9535,\n", + " -0.4926, -0.0752, -0.9320, -0.4982, -0.4345, -0.4008, -0.7347, -0.6594,\n", + " 0.1545, -1.0285, -0.8179, -0.7872, 1.2072, -0.3830, 0.0000, 0.1753,\n", + " 0.2431, 1.0153, -0.6961, 1.1666, -0.3615, -0.9172, -0.4768, -0.8673,\n", + " -0.8784, -1.7337, -0.0521]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1801, -0.1712, -0.0635, -0.1618, -0.0810, 0.0225, 0.0833, 0.1506,\n", + " 0.0802, 0.1143, 0.1409, -0.1274, -0.0955, -0.1816, -0.1405, -0.1595,\n", + " -0.1474, -0.0248, -0.0754, -0.0632, -0.0690, -0.0077, -0.0323, -0.0145,\n", + " 0.0058, 0.0341, 0.0447, -0.0139, -0.0809, -0.1227, -0.1142, -0.1226,\n", + " -0.1787, -0.1927, -0.0786, -0.1335, 0.0088, 0.0104, -0.0257, 0.1965,\n", + " 0.2201, 0.1964, 0.1673]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00036160575109533966\n", + "Grad encoder.fc1.bias: 0.002136033959686756\n", + "Grad encoder.encoder.0.weight: 9.250923176296055e-05\n", + "Grad encoder.encoder.0.bias: 0.0009578297031112015\n", + "Grad encoder.encoder.2.weight: 5.2899777074344456e-05\n", + "Grad encoder.encoder.2.bias: 0.0005743334768339992\n", + "Grad encoder.encoder.4.weight: 0.000147911167005077\n", + "Grad encoder.encoder.4.bias: 0.0009500602027401328\n", + "Grad decoder.fc1.0.weight: 6.344239227473736e-05\n", + "Grad decoder.fc1.0.bias: 0.0004670983471442014\n", + "Grad decoder.fc1.2.weight: 5.9820675232913345e-05\n", + "Grad decoder.fc1.2.bias: 0.0009132685954682529\n", + "Grad decoder.fc1.4.weight: 5.146993862581439e-05\n", + "Grad decoder.fc1.4.bias: 0.0004814400745090097\n", + "Grad decoder.fc2.weight: 0.0001232645008713007\n", + "Grad decoder.fc2.bias: 0.0019902694039046764\n", + "Grad _memory_unit.weight_ih_l0: 1.8159593309974298e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.774064629804343e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.354595537530258e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.605628292774782e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.950126695912331e-05\n", + "Grad _memory_unit.bias_hh_l1: 5.5097822041716427e-05\n", + "Data X Sample: tensor([[1.5997, 1.8702, 1.9820, 2.2281, 2.4177, 2.4795, 2.4820, 2.5979, 2.7168,\n", + " 2.6855, 2.7885, 2.7635, 2.6520, 2.6392, 2.5169, 2.4725, 2.4498, 2.5127,\n", + " 2.4966, 2.3972, 2.3726, 2.4495, 2.4869, 2.4718, 2.4812, 2.6067, 2.5547,\n", + " 2.5491, 2.3105, 2.3548, 2.3307, 2.3599, 2.0900, 1.3685, 1.8457, 1.7658,\n", + " 1.6597, 1.5610, 1.6163, 1.4838, 1.2886, 0.7528, 0.7619, 1.3146, 1.9583,\n", + " 2.2816, 1.4278, 2.2128]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7452, 0.6813, 0.2005, 0.0894, -0.6222, -0.3911, -1.2484, -1.6945,\n", + " -0.6585, -1.3275, -0.8074, 0.3128, 1.0607, 0.0587, 0.3613, -0.3451,\n", + " -0.1579, 0.3370, 0.3103, 0.0461, -0.6203, 0.6530, -0.8434, -0.2037,\n", + " 0.8990, -1.0098, -0.8217, 0.6039, 0.5757, 0.2326, -0.3532, -0.5600,\n", + " 0.3662, -0.2333, 0.6110, 0.2418, 0.1697, -0.7141, 0.7106, -1.0202,\n", + " -0.0348, -0.7595, -0.1012]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3219, 0.3077, 0.0609, 0.2597, 0.0871, -0.1606, -0.3489, -0.3944,\n", + " -0.2208, -0.2898, -0.2654, 0.1184, 0.0736, 0.2577, 0.1414, 0.1922,\n", + " 0.2141, 0.1052, 0.0787, 0.0834, 0.0744, 0.1011, 0.0479, 0.1202,\n", + " 0.0772, 0.0853, -0.0159, 0.0049, 0.2208, 0.2114, 0.2749, 0.1467,\n", + " 0.2182, 0.2688, 0.1981, 0.1817, 0.0138, 0.0038, 0.0392, -0.3057,\n", + " -0.2388, -0.3369, -0.2616]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00017044827109202743\n", + "Grad encoder.fc1.bias: 0.00035245806793682277\n", + "Grad encoder.encoder.0.weight: 4.509549034992233e-05\n", + "Grad encoder.encoder.0.bias: 0.0005078562535345554\n", + "Grad encoder.encoder.2.weight: 4.241999704390764e-05\n", + "Grad encoder.encoder.2.bias: 0.0005375088076107204\n", + "Grad encoder.encoder.4.weight: 0.0001539616787340492\n", + "Grad encoder.encoder.4.bias: 0.0014338418841362\n", + "Grad decoder.fc1.0.weight: 9.150653204414994e-05\n", + "Grad decoder.fc1.0.bias: 0.0005484597058966756\n", + "Grad decoder.fc1.2.weight: 6.115438009146601e-05\n", + "Grad decoder.fc1.2.bias: 0.0009154409635812044\n", + "Grad decoder.fc1.4.weight: 5.3087725973455235e-05\n", + "Grad decoder.fc1.4.bias: 0.0006069169612601399\n", + "Grad decoder.fc2.weight: 0.00011408353020669892\n", + "Grad decoder.fc2.bias: 0.0018377151573076844\n", + "Grad _memory_unit.weight_ih_l0: 2.2364260075846687e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.7149813326541334e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.109013050561771e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.4056447071197908e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.864089952316135e-05\n", + "Grad _memory_unit.bias_hh_l1: 5.836244235979393e-05\n", + "Data X Sample: tensor([[1.5499, 1.6852, 1.8858, 2.0269, 2.1821, 2.1775, 2.0445, 2.3949, 3.3906,\n", + " 4.2968, 4.3112, 4.3507, 4.2477, 4.0706, 3.8409, 3.7977, 3.7281, 3.5496,\n", + " 3.5663, 3.5502, 3.4645, 3.4767, 2.8725, 2.9356, 2.9560, 3.0141, 3.1062,\n", + " 3.1242, 3.1847, 3.2588, 3.3980, 3.4873, 3.8501, 2.8927, 4.6621, 4.8718,\n", + " 5.0185, 5.5629, 6.1229, 5.9693, 1.2600, 0.6791, 0.6730, 1.2945, 1.7601,\n", + " 1.9442, 1.2646, 1.8297]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1553, -0.8855, -0.2171, -1.4008, 1.1287, 0.3942, 0.4028, 0.1538,\n", + " 0.4499, 0.3051, 0.2817, -0.1996, -1.1553, 0.1359, -0.5200, -0.1450,\n", + " 0.6231, -1.0558, -0.0183, 0.0929, 0.0066, 0.4846, -0.1242, 0.4468,\n", + " 0.3546, 0.0444, -0.3634, -0.3705, -0.3064, -0.1150, 0.2160, 0.3348,\n", + " -0.1537, -0.4071, -0.4381, 0.1651, 0.9953, -0.9248, -0.2301, 0.1673,\n", + " 0.4762, 0.0118, 0.2235]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2155, -0.1905, -0.0529, -0.1055, 0.0548, 0.0921, 0.0895, 0.1647,\n", + " 0.1477, 0.1925, 0.1503, -0.1601, -0.1567, -0.2705, -0.1586, -0.2071,\n", + " -0.1286, -0.0044, -0.0642, -0.0321, -0.1012, -0.0345, -0.0390, -0.0346,\n", + " 0.0551, 0.0237, 0.0036, -0.0719, -0.1679, -0.2680, -0.1802, -0.1617,\n", + " -0.2904, -0.2378, -0.1284, -0.1248, 0.0020, 0.0444, 0.0274, 0.1614,\n", + " 0.2061, 0.2347, 0.2386]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00018398799875285476\n", + "Grad encoder.fc1.bias: 0.00025137874763458967\n", + "Grad encoder.encoder.0.weight: 4.51926862297114e-05\n", + "Grad encoder.encoder.0.bias: 0.00023299831082113087\n", + "Grad encoder.encoder.2.weight: 4.27442864747718e-05\n", + "Grad encoder.encoder.2.bias: 0.00034670898457989097\n", + "Grad encoder.encoder.4.weight: 0.00013420818140730262\n", + "Grad encoder.encoder.4.bias: 0.000779983529355377\n", + "Grad decoder.fc1.0.weight: 7.490730058634654e-05\n", + "Grad decoder.fc1.0.bias: 0.00033770682057365775\n", + "Grad decoder.fc1.2.weight: 4.6997254685265943e-05\n", + "Grad decoder.fc1.2.bias: 0.0005960428388789296\n", + "Grad decoder.fc1.4.weight: 3.897978240274824e-05\n", + "Grad decoder.fc1.4.bias: 0.0004980512894690037\n", + "Grad decoder.fc2.weight: 9.847849287325516e-05\n", + "Grad decoder.fc2.bias: 0.002115227049216628\n", + "Grad _memory_unit.weight_ih_l0: 1.3666903214470949e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.4341534299310297e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.7044352716766298e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.999170288210735e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.616431346628815e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.9112084778025746e-05\n", + "Data X Sample: tensor([[1.5488, 1.7871, 1.9594, 1.9898, 2.2214, 2.3646, 2.4497, 2.4034, 2.5777,\n", + " 2.6271, 2.5981, 2.6466, 2.5411, 2.4402, 2.6102, 2.5587, 2.4592, 2.4450,\n", + " 2.4987, 2.4771, 2.4217, 2.4740, 2.4387, 2.4298, 2.4755, 2.5126, 2.3789,\n", + " 2.4961, 2.1648, 2.2762, 2.4007, 2.3958, 2.2594, 1.4944, 2.0222, 1.8193,\n", + " 1.7207, 1.5848, 1.5276, 1.5718, 1.2695, 0.7408, 0.7114, 1.2802, 1.9107,\n", + " 1.9728, 1.2918, 1.8375]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0354, 0.4511, 0.1001, 0.3927, -0.4838, -0.5437, -0.8388, -0.5253,\n", + " -0.5962, -0.5837, -0.6585, 0.0822, -2.1489, 0.5021, -0.3532, 0.1394,\n", + " -0.5373, -0.8256, -1.6478, 0.4299, -0.7754, 0.1988, -0.8441, -0.5191,\n", + " 0.7540, 0.6230, -0.4084, 0.4930, 0.4498, 0.9371, 0.8570, 0.6164,\n", + " 1.4905, 0.4594, 0.5133, -0.1239, -0.5204, -0.4903, -0.5596, -0.4514,\n", + " -0.7287, -0.7227, -0.8922]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2796, 0.2975, 0.0679, 0.2253, 0.0917, -0.1332, -0.3081, -0.3401,\n", + " -0.1622, -0.2214, -0.2095, 0.1101, 0.0564, 0.2158, 0.1090, 0.1737,\n", + " 0.1951, 0.0882, 0.0655, 0.0779, 0.0789, 0.0930, 0.0262, 0.0864,\n", + " 0.0737, 0.1000, -0.0297, -0.0187, 0.1592, 0.1454, 0.2405, 0.1178,\n", + " 0.1908, 0.2427, 0.1721, 0.1576, 0.0261, 0.0047, 0.0195, -0.2515,\n", + " -0.1793, -0.2989, -0.2318]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00020941880939062685\n", + "Grad encoder.fc1.bias: 9.094354754779488e-05\n", + "Grad encoder.encoder.0.weight: 6.513091648230329e-05\n", + "Grad encoder.encoder.0.bias: 0.00018282288510818034\n", + "Grad encoder.encoder.2.weight: 4.96732973260805e-05\n", + "Grad encoder.encoder.2.bias: 0.00022028469538781792\n", + "Grad encoder.encoder.4.weight: 0.000154753535753116\n", + "Grad encoder.encoder.4.bias: 0.0007989818113856018\n", + "Grad decoder.fc1.0.weight: 8.642348984722048e-05\n", + "Grad decoder.fc1.0.bias: 0.00038213664083741605\n", + "Grad decoder.fc1.2.weight: 6.117152224760503e-05\n", + "Grad decoder.fc1.2.bias: 0.0011002033716067672\n", + "Grad decoder.fc1.4.weight: 5.804317697766237e-05\n", + "Grad decoder.fc1.4.bias: 0.0007460726192221045\n", + "Grad decoder.fc2.weight: 0.00010765016486402601\n", + "Grad decoder.fc2.bias: 0.002159559866413474\n", + "Grad _memory_unit.weight_ih_l0: 1.537870048196055e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.9271985113155097e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.7022130123223178e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.2118469385313801e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.031113247852772e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.642979183699936e-05\n", + "Data X Sample: tensor([[1.4947, 1.6677, 1.8557, 1.9438, 2.1036, 2.3042, 2.4111, 2.5298, 2.5094,\n", + " 2.5481, 2.5696, 2.5493, 2.5011, 2.6256, 2.4563, 2.3836, 2.3884, 2.4450,\n", + " 2.4181, 2.4046, 2.4340, 2.4464, 2.4387, 2.3152, 2.3254, 2.4029, 2.3949,\n", + " 2.4961, 2.0329, 2.2893, 2.2887, 2.3074, 2.2000, 1.4395, 1.9168, 1.7317,\n", + " 1.6184, 1.4285, 1.5783, 1.5689, 1.1550, 0.6831, 0.6932, 1.2285, 1.8394,\n", + " 1.9842, 1.3462, 1.9548]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.9186e+00, 7.3784e-01, 9.9712e-01, 1.1428e+00, 2.6478e-01,\n", + " -6.2069e-01, -1.0365e+00, -1.1698e+00, 1.5486e-01, -1.1489e+00,\n", + " -8.5729e-01, -3.3549e-01, 5.1656e-01, 1.2339e+00, 2.9164e-01,\n", + " -8.3615e-01, -1.4610e-01, -4.4982e-01, 1.2140e+00, 1.1867e+00,\n", + " -4.0158e+00, 6.7980e-02, -1.6504e+00, -1.0872e+00, -6.7291e-01,\n", + " -2.0876e-01, 2.7763e-01, 1.4339e+00, 1.0918e+00, 9.5153e-01,\n", + " 9.3270e-01, 1.3428e+00, 9.3067e-01, 1.0829e+00, 6.7065e-01,\n", + " -3.2967e-01, -6.2880e-04, -9.1056e-02, -5.2515e-01, -9.1458e-01,\n", + " -8.1710e-01, -9.5783e-01, -3.6994e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2688, 0.3015, 0.0738, 0.2173, 0.0952, -0.1250, -0.3010, -0.3282,\n", + " -0.1496, -0.2044, -0.1957, 0.1081, 0.0506, 0.2054, 0.1005, 0.1702,\n", + " 0.1878, 0.0853, 0.0606, 0.0786, 0.0843, 0.0897, 0.0176, 0.0763,\n", + " 0.0750, 0.1045, -0.0324, -0.0269, 0.1430, 0.1325, 0.2333, 0.1110,\n", + " 0.1839, 0.2390, 0.1643, 0.1541, 0.0315, 0.0079, 0.0167, -0.2378,\n", + " -0.1637, -0.2943, -0.2289]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00012066372437402606\n", + "Grad encoder.fc1.bias: 0.000237239568377845\n", + "Grad encoder.encoder.0.weight: 3.7340760172810405e-05\n", + "Grad encoder.encoder.0.bias: 0.00016223233251366764\n", + "Grad encoder.encoder.2.weight: 3.3909291232703254e-05\n", + "Grad encoder.encoder.2.bias: 0.00015589843678753823\n", + "Grad encoder.encoder.4.weight: 0.00010156077769352123\n", + "Grad encoder.encoder.4.bias: 0.0003989236429333687\n", + "Grad decoder.fc1.0.weight: 6.192679575178772e-05\n", + "Grad decoder.fc1.0.bias: 0.00024316913913935423\n", + "Grad decoder.fc1.2.weight: 5.280086043057963e-05\n", + "Grad decoder.fc1.2.bias: 0.00041736214188858867\n", + "Grad decoder.fc1.4.weight: 5.121690628584474e-05\n", + "Grad decoder.fc1.4.bias: 0.0004308411153033376\n", + "Grad decoder.fc2.weight: 8.613689715275541e-05\n", + "Grad decoder.fc2.bias: 0.0013179505476728082\n", + "Grad _memory_unit.weight_ih_l0: 8.995775715447962e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.1540965715539642e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.118250661937054e-06\n", + "Grad _memory_unit.weight_ih_l1: 6.811603270762134e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.056486381567083e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.3002623240463436e-05\n", + "Data X Sample: tensor([[1.2486, 1.3356, 1.5823, 1.6552, 1.8048, 1.9167, 2.0645, 2.1905, 1.9137,\n", + " 3.3711, 4.0606, 4.0878, 3.8859, 3.7380, 3.7450, 3.4750, 3.3900, 3.3832,\n", + " 3.3267, 3.2898, 3.4252, 3.3006, 2.9905, 2.8134, 2.7871, 2.6955, 2.7172,\n", + " 2.8020, 2.6990, 2.8559, 2.8836, 2.9733, 3.3903, 2.4899, 4.2478, 4.7258,\n", + " 4.8828, 5.3880, 5.7870, 5.6402, 1.0118, 0.5516, 0.5922, 1.0506, 1.4786,\n", + " 1.7040, 1.1354, 1.4700]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4786, 0.4232, 0.7913, 1.0969, -0.1408, -0.4582, 0.5243, -0.5606,\n", + " -0.7458, -0.8186, -0.4390, -0.4492, 0.9984, 0.1784, 0.4493, -0.5480,\n", + " 1.9192, -0.1612, -0.1198, -0.4176, -0.3916, -0.3865, -0.2058, -0.1382,\n", + " -1.2822, -0.3070, -2.0478, 0.6025, 0.1153, -0.1078, 0.9505, 0.4782,\n", + " 0.3611, -0.0431, 0.0779, 1.2267, 0.9291, -0.0948, -0.4418, -1.5276,\n", + " -0.3362, -0.1784, -0.9036]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1941, -0.1899, -0.0446, -0.0777, 0.1100, 0.1223, 0.0792, 0.1552,\n", + " 0.1877, 0.2304, 0.1368, -0.1566, -0.1694, -0.2746, -0.1523, -0.2310,\n", + " -0.1333, 0.0018, -0.0434, -0.0193, -0.0923, -0.0452, -0.0435, -0.0542,\n", + " 0.0637, 0.0168, -0.0092, -0.0849, -0.2059, -0.3310, -0.1961, -0.1547,\n", + " -0.3268, -0.2312, -0.1542, -0.0992, -0.0012, 0.0651, 0.0508, 0.1242,\n", + " 0.2000, 0.2258, 0.2446]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 6.680340447928756e-05\n", + "Grad encoder.fc1.bias: 4.560174056678079e-05\n", + "Grad encoder.encoder.0.weight: 2.084100924548693e-05\n", + "Grad encoder.encoder.0.bias: 6.441086588893086e-05\n", + "Grad encoder.encoder.2.weight: 2.5884826754918322e-05\n", + "Grad encoder.encoder.2.bias: 0.0001246723986696452\n", + "Grad encoder.encoder.4.weight: 8.674305718159303e-05\n", + "Grad encoder.encoder.4.bias: 0.000495998770929873\n", + "Grad decoder.fc1.0.weight: 5.712918209610507e-05\n", + "Grad decoder.fc1.0.bias: 0.0002974575909320265\n", + "Grad decoder.fc1.2.weight: 6.186861719470471e-05\n", + "Grad decoder.fc1.2.bias: 0.0005483722197823226\n", + "Grad decoder.fc1.4.weight: 5.5350043112412095e-05\n", + "Grad decoder.fc1.4.bias: 0.0005677817389369011\n", + "Grad decoder.fc2.weight: 8.253980922745541e-05\n", + "Grad decoder.fc2.bias: 0.0017227104399353266\n", + "Grad _memory_unit.weight_ih_l0: 7.268686658790102e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.6113626770675182e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.42081805987982e-06\n", + "Grad _memory_unit.weight_ih_l1: 5.529839654627722e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.612436118302867e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.489645314402878e-05\n", + "Data X Sample: tensor([[1.2635, 1.4711, 1.6168, 1.6661, 1.7467, 1.7930, 1.8750, 1.8867, 1.9089,\n", + " 1.9746, 2.0049, 1.9592, 1.9596, 1.8949, 1.8410, 1.9365, 1.9120, 1.9131,\n", + " 1.9473, 1.9992, 2.0389, 2.0514, 2.0989, 2.0060, 2.0382, 2.1339, 2.0512,\n", + " 2.2024, 1.7936, 1.9553, 1.8057, 1.6773, 1.5290, 1.0207, 1.6031, 1.5201,\n", + " 1.3215, 1.2456, 1.3501, 1.2824, 0.9736, 0.5895, 0.6124, 1.0879, 1.5976,\n", + " 1.6354, 1.0878, 1.5717]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.8365, 0.5727, 0.3075, 1.0442, 0.8491, 0.3769, -0.7619, -0.7180,\n", + " -0.0596, -0.7863, -0.5126, -1.0170, 0.1996, 1.2263, 1.4197, 0.8628,\n", + " 1.4751, 0.4216, 0.0974, 1.1459, -0.3358, -0.0567, 0.1930, 0.7775,\n", + " 0.3703, 0.7206, -1.5534, 0.5138, 0.3102, 0.4029, -0.9470, 0.5594,\n", + " 0.4576, 0.9887, 0.2442, 2.0173, -0.9937, 0.0846, 0.5659, -0.5886,\n", + " -0.0361, -0.3171, -0.3385]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2386, 0.2665, 0.0611, 0.1724, 0.0712, -0.1140, -0.2736, -0.2923,\n", + " -0.1246, -0.1772, -0.1769, 0.0974, 0.0456, 0.1840, 0.0805, 0.1419,\n", + " 0.1541, 0.0793, 0.0502, 0.0626, 0.0727, 0.0828, 0.0119, 0.0661,\n", + " 0.0635, 0.0932, -0.0195, -0.0224, 0.1277, 0.1138, 0.2113, 0.1013,\n", + " 0.1592, 0.2178, 0.1448, 0.1418, 0.0330, 0.0059, 0.0077, -0.2045,\n", + " -0.1265, -0.2506, -0.1955]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004493428277783096\n", + "Grad encoder.fc1.bias: 0.00041509035509079695\n", + "Grad encoder.encoder.0.weight: 8.450338646071032e-05\n", + "Grad encoder.encoder.0.bias: 0.00044670916395261884\n", + "Grad encoder.encoder.2.weight: 4.799143425771035e-05\n", + "Grad encoder.encoder.2.bias: 0.00032702909084036946\n", + "Grad encoder.encoder.4.weight: 9.908872743835673e-05\n", + "Grad encoder.encoder.4.bias: 0.0006098494050092995\n", + "Grad decoder.fc1.0.weight: 5.986381438560784e-05\n", + "Grad decoder.fc1.0.bias: 0.00023499075905419886\n", + "Grad decoder.fc1.2.weight: 6.925067282281816e-05\n", + "Grad decoder.fc1.2.bias: 0.0005631615640595555\n", + "Grad decoder.fc1.4.weight: 6.28940761089325e-05\n", + "Grad decoder.fc1.4.bias: 0.0005744182271882892\n", + "Grad decoder.fc2.weight: 0.00011308047396596521\n", + "Grad decoder.fc2.bias: 0.002299745799973607\n", + "Grad _memory_unit.weight_ih_l0: 1.0082258086185902e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.500815571693238e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.427979350410169e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.058946266624844e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.50047732051462e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.600664422265254e-05\n", + "Data X Sample: tensor([[1.5255, 1.6444, 1.8362, 1.9154, 2.1309, 2.1922, 2.4435, 2.4716, 2.5264,\n", + " 2.4628, 2.6203, 2.5863, 2.6409, 2.5411, 2.4538, 2.5136, 2.3932, 2.5031,\n", + " 2.4760, 2.4399, 2.4094, 2.4250, 2.3327, 2.3725, 2.2935, 2.4029, 2.3736,\n", + " 2.4145, 2.2064, 2.2336, 2.3237, 2.2963, 2.1868, 1.4555, 1.9291, 1.7561,\n", + " 1.6361, 1.4629, 1.5973, 1.6030, 1.1454, 0.7149, 0.6912, 1.2285, 1.8077,\n", + " 1.9213, 1.2986, 2.0330]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.1056, 0.5541, 0.3474, 0.6854, 0.1438, -0.5418, -0.8090, -0.9912,\n", + " -1.1381, -1.1134, -0.9448, -0.0349, 0.0550, 0.4594, 0.0235, 0.7141,\n", + " 0.9917, -0.1129, -0.0555, 0.5879, 0.7472, 0.4724, 0.0131, 0.0884,\n", + " -3.7101, 0.2120, 1.5606, 1.5184, 0.2944, 0.6471, -0.4944, -0.3055,\n", + " 0.0328, 0.4639, 0.2847, 1.2622, 0.7063, 0.1545, 0.0173, -0.6828,\n", + " -0.7186, -0.6449, -0.1853]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3233, 0.4005, 0.1046, 0.2564, 0.1255, -0.1503, -0.3665, -0.3878,\n", + " -0.1919, -0.2708, -0.2472, 0.1306, 0.0711, 0.2650, 0.1334, 0.2194,\n", + " 0.2477, 0.1145, 0.0762, 0.1084, 0.1161, 0.1115, 0.0052, 0.1068,\n", + " 0.1124, 0.1316, -0.0386, -0.0380, 0.1822, 0.1788, 0.2972, 0.1430,\n", + " 0.2390, 0.3112, 0.2102, 0.2080, 0.0566, 0.0119, 0.0341, -0.2898,\n", + " -0.2012, -0.3685, -0.2997]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00010394409764558077\n", + "Grad encoder.fc1.bias: 0.0005178162828087807\n", + "Grad encoder.encoder.0.weight: 3.4944136132253334e-05\n", + "Grad encoder.encoder.0.bias: 0.0004073863383382559\n", + "Grad encoder.encoder.2.weight: 2.5319775886600837e-05\n", + "Grad encoder.encoder.2.bias: 0.0003150523407384753\n", + "Grad encoder.encoder.4.weight: 8.816008630674332e-05\n", + "Grad encoder.encoder.4.bias: 0.0007045083912089467\n", + "Grad decoder.fc1.0.weight: 4.6174845920177177e-05\n", + "Grad decoder.fc1.0.bias: 0.00030168023658916354\n", + "Grad decoder.fc1.2.weight: 4.785400233231485e-05\n", + "Grad decoder.fc1.2.bias: 0.0003842294099740684\n", + "Grad decoder.fc1.4.weight: 4.7750058001838624e-05\n", + "Grad decoder.fc1.4.bias: 0.00039415352512151003\n", + "Grad decoder.fc2.weight: 0.00011222679313505068\n", + "Grad decoder.fc2.bias: 0.0015786237781867385\n", + "Grad _memory_unit.weight_ih_l0: 7.496583293686854e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.324441447854042e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.290054751734715e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.098214049008675e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.6167031289078295e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.0200390028767288e-05\n", + "Data X Sample: tensor([[1.6114, 1.7667, 1.9068, 2.0860, 2.1394, 2.2497, 2.3202, 2.4673, 2.4166,\n", + " 2.4991, 2.5474, 2.4597, 2.4301, 2.3829, 2.3908, 2.4165, 2.3916, 2.4025,\n", + " 2.4553, 2.4548, 2.4315, 2.4280, 2.4893, 2.5137, 2.5393, 2.5701, 2.5388,\n", + " 2.6266, 2.2758, 2.3876, 2.2572, 2.2687, 2.2330, 1.4440, 1.9291, 1.7682,\n", + " 1.5889, 1.4656, 1.5846, 1.5803, 1.2695, 0.6910, 0.7073, 1.3261, 1.8909,\n", + " 2.0643, 1.3870, 1.8375]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.0333, 0.9602, 0.6707, -0.0612, -1.5103, -0.8578, -0.9753, -0.7021,\n", + " 0.1730, -0.8382, -0.3818, 0.8623, 0.2468, 0.7191, 1.4375, 0.7809,\n", + " -0.6878, -0.0568, -0.3065, 0.1417, -0.1758, 1.0504, 0.2020, -0.2811,\n", + " 0.1733, 0.1787, -1.6406, 0.1002, 0.5481, -0.0119, 0.5446, 0.8544,\n", + " 0.0459, 1.4053, 0.1953, 1.8480, 0.7312, -0.5073, -0.5988, -0.5424,\n", + " -0.5188, -0.3487, -0.9771]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3678, 0.4742, 0.1241, 0.3003, 0.1550, -0.1672, -0.4135, -0.4407,\n", + " -0.2243, -0.3192, -0.2804, 0.1532, 0.0824, 0.2993, 0.1563, 0.2644,\n", + " 0.2921, 0.1327, 0.0969, 0.1326, 0.1421, 0.1275, 0.0056, 0.1240,\n", + " 0.1367, 0.1519, -0.0503, -0.0467, 0.2037, 0.2180, 0.3443, 0.1676,\n", + " 0.2815, 0.3656, 0.2431, 0.2444, 0.0630, 0.0159, 0.0497, -0.3372,\n", + " -0.2437, -0.4265, -0.3489]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00017700430180411786\n", + "Grad encoder.fc1.bias: 0.00015307593275792897\n", + "Grad encoder.encoder.0.weight: 3.172163633280434e-05\n", + "Grad encoder.encoder.0.bias: 0.00017204845789819956\n", + "Grad encoder.encoder.2.weight: 2.9762855774606578e-05\n", + "Grad encoder.encoder.2.bias: 0.00020525293075479567\n", + "Grad encoder.encoder.4.weight: 9.38340526772663e-05\n", + "Grad encoder.encoder.4.bias: 0.0008300637709908187\n", + "Grad decoder.fc1.0.weight: 6.287157884798944e-05\n", + "Grad decoder.fc1.0.bias: 0.0004061891813762486\n", + "Grad decoder.fc1.2.weight: 6.080917228246108e-05\n", + "Grad decoder.fc1.2.bias: 0.0004164735146332532\n", + "Grad decoder.fc1.4.weight: 6.4059131545946e-05\n", + "Grad decoder.fc1.4.bias: 0.000499399087857455\n", + "Grad decoder.fc2.weight: 0.00012961594620719552\n", + "Grad decoder.fc2.bias: 0.0019494398729875684\n", + "Grad _memory_unit.weight_ih_l0: 1.0550184924795758e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.7818095481488854e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.5340499632875435e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.336157300916966e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.221925574820489e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.876874663750641e-05\n", + "Data X Sample: tensor([[1.7090, 1.9299, 2.0871, 2.1625, 2.3511, 2.5797, 2.5452, 2.7001, 2.7364,\n", + " 2.6034, 2.8107, 2.7207, 2.7674, 2.6065, 2.5774, 2.6626, 2.6495, 2.6211,\n", + " 2.5999, 2.5645, 2.5738, 2.6270, 2.6098, 2.5825, 2.6182, 2.6302, 2.6320,\n", + " 2.4635, 2.3729, 2.6136, 2.5092, 2.5201, 2.2528, 1.4990, 1.9854, 1.8971,\n", + " 1.8190, 1.6591, 1.6733, 1.5718, 1.3459, 0.8125, 0.8124, 1.3319, 1.9781,\n", + " 2.0814, 1.4210, 2.0955]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3714, -0.7288, 0.1479, 0.3285, -0.1676, -0.3427, 0.0452, -0.3680,\n", + " -0.8173, -0.5738, -0.6093, -3.1065, -0.3169, 0.0322, -0.4824, 0.1217,\n", + " -0.0813, -0.3622, -1.8554, 0.5252, -1.1090, 0.6233, 0.4087, -0.0206,\n", + " 1.9690, -1.4820, -0.8339, 0.0859, -0.1864, -0.0147, 0.0744, 0.4822,\n", + " 0.8007, 0.6884, -0.4940, 0.5330, -0.4532, 0.1123, -0.3712, -0.4760,\n", + " -0.3561, -0.7516, -0.6552]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4082, 0.5233, 0.1279, 0.3256, 0.1563, -0.1942, -0.4550, -0.4921,\n", + " -0.2583, -0.3636, -0.3218, 0.1621, 0.1013, 0.3365, 0.1859, 0.2959,\n", + " 0.3162, 0.1463, 0.1014, 0.1437, 0.1454, 0.1361, 0.0088, 0.1395,\n", + " 0.1480, 0.1550, -0.0471, -0.0438, 0.2463, 0.2616, 0.3803, 0.1898,\n", + " 0.3109, 0.4041, 0.2677, 0.2691, 0.0694, 0.0195, 0.0612, -0.3727,\n", + " -0.2821, -0.4618, -0.3869]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005414197221398354\n", + "Grad encoder.fc1.bias: 0.0003876802511513233\n", + "Grad encoder.encoder.0.weight: 0.000130846441606991\n", + "Grad encoder.encoder.0.bias: 0.0005704703507944942\n", + "Grad encoder.encoder.2.weight: 9.440052963327616e-05\n", + "Grad encoder.encoder.2.bias: 0.0006481430027633905\n", + "Grad encoder.encoder.4.weight: 0.0002862701076082885\n", + "Grad encoder.encoder.4.bias: 0.0021812336053699255\n", + "Grad decoder.fc1.0.weight: 0.00014710606774315238\n", + "Grad decoder.fc1.0.bias: 0.0008118587429635227\n", + "Grad decoder.fc1.2.weight: 0.00011915886716451496\n", + "Grad decoder.fc1.2.bias: 0.0015728978905826807\n", + "Grad decoder.fc1.4.weight: 9.332734771305695e-05\n", + "Grad decoder.fc1.4.bias: 0.000954765360802412\n", + "Grad decoder.fc2.weight: 0.00014476136129815131\n", + "Grad decoder.fc2.bias: 0.0020710628014057875\n", + "Grad _memory_unit.weight_ih_l0: 2.6000594516517594e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.743520912597887e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.469187504379079e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.967431126104202e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001474205928388983\n", + "Grad _memory_unit.bias_hh_l1: 8.229687227867544e-05\n", + "Data X Sample: tensor([[1.5032, 1.7099, 1.9279, 2.0575, 2.2180, 2.2453, 2.3742, 2.3424, 2.4825,\n", + " 2.5165, 2.6108, 2.5571, 2.5544, 2.4375, 2.4387, 2.4096, 2.4089, 2.4122,\n", + " 2.4140, 2.3656, 2.4487, 2.4770, 2.4797, 2.4584, 2.5262, 2.5544, 2.5681,\n", + " 2.6388, 2.2931, 2.3679, 2.2817, 2.3709, 2.2704, 1.4807, 1.9536, 1.7682,\n", + " 1.6066, 1.4629, 1.5466, 1.5377, 1.1216, 0.6811, 0.6972, 1.2831, 1.8671,\n", + " 2.0757, 1.3394, 2.0174]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.0294e+00, 8.3378e-01, -5.8253e-01, 6.7631e-01, -6.0174e-01,\n", + " -1.1691e-01, -1.3154e+00, -1.0984e+00, -8.4827e-01, -5.1649e-01,\n", + " -8.0109e-01, 4.1242e-01, -8.4229e-01, 4.0796e-01, -1.5896e-01,\n", + " 9.6079e-04, 2.9119e-01, -1.3495e+00, -9.7538e-01, 1.6418e-01,\n", + " 5.9154e-01, -1.2780e+00, -2.6095e+00, 8.2497e-01, 1.0356e-01,\n", + " 1.5257e-01, 2.3836e-02, 4.6518e-01, 2.3027e-01, 8.0973e-01,\n", + " 1.2694e-01, -6.3572e-03, 1.0307e+00, 6.3086e-01, 9.5190e-01,\n", + " 1.1496e-01, -1.0781e-03, -7.8147e-01, -1.0390e-02, -5.0527e-01,\n", + " -7.7079e-01, -6.4465e-01, -7.9699e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4035, 0.5116, 0.1174, 0.3230, 0.1539, -0.1781, -0.4319, -0.4915,\n", + " -0.2300, -0.3384, -0.2988, 0.1791, 0.1022, 0.3142, 0.1750, 0.2970,\n", + " 0.2978, 0.1381, 0.1019, 0.1267, 0.1384, 0.1301, 0.0161, 0.1160,\n", + " 0.1373, 0.1439, -0.0571, -0.0454, 0.2263, 0.2538, 0.3669, 0.1808,\n", + " 0.3089, 0.4029, 0.2590, 0.2589, 0.0607, 0.0190, 0.0554, -0.3602,\n", + " -0.2834, -0.4354, -0.3640]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00013624175335280597\n", + "Grad encoder.fc1.bias: 0.0008192442473955452\n", + "Grad encoder.encoder.0.weight: 4.924816676066257e-05\n", + "Grad encoder.encoder.0.bias: 0.0007932907319627702\n", + "Grad encoder.encoder.2.weight: 4.774765329784714e-05\n", + "Grad encoder.encoder.2.bias: 0.0005598622374236584\n", + "Grad encoder.encoder.4.weight: 0.00016085250535979867\n", + "Grad encoder.encoder.4.bias: 0.0013064804952591658\n", + "Grad decoder.fc1.0.weight: 7.629935134900734e-05\n", + "Grad decoder.fc1.0.bias: 0.0005026491708122194\n", + "Grad decoder.fc1.2.weight: 7.959289359860122e-05\n", + "Grad decoder.fc1.2.bias: 0.00048236377188004553\n", + "Grad decoder.fc1.4.weight: 7.450865814462304e-05\n", + "Grad decoder.fc1.4.bias: 0.0005140309222042561\n", + "Grad decoder.fc2.weight: 0.0001497571647632867\n", + "Grad decoder.fc2.bias: 0.0024373719934374094\n", + "Grad _memory_unit.weight_ih_l0: 1.4868416656099726e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.246784323593602e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.30284601659514e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.133825081633404e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011538375110831112\n", + "Grad _memory_unit.bias_hh_l1: 6.136216688901186e-05\n", + "Data X Sample: tensor([[1.4724, 1.6342, 1.8137, 2.0641, 2.1053, 2.1834, 2.0460, 2.1607, 3.5175,\n", + " 4.3458, 4.3175, 4.3390, 4.1123, 4.0897, 3.9392, 3.8661, 3.6605, 3.6792,\n", + " 3.7067, 3.6134, 3.5037, 3.4292, 2.9833, 3.0348, 2.8640, 2.9149, 2.9970,\n", + " 3.0508, 2.9835, 3.2882, 3.3280, 3.3768, 3.8347, 2.8011, 4.5542, 4.8815,\n", + " 5.1246, 5.4118, 6.0912, 5.8530, 1.1072, 0.6632, 0.6103, 1.1453, 1.7165,\n", + " 1.9728, 1.3190, 1.7437]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1908, 0.3419, -0.3540, -0.0805, 0.9286, -0.4960, 0.7910, 0.0993,\n", + " 0.7494, -0.7811, -0.8296, -0.2469, -0.3925, 0.0240, -0.7087, 0.1954,\n", + " -0.3338, -0.1138, -0.1203, -0.1668, -0.2845, -1.0005, -0.0054, 0.1340,\n", + " -0.0937, 0.6093, -0.7297, -2.3097, -0.5799, 0.1919, -0.2998, -0.6988,\n", + " -0.2262, -0.2984, 2.6105, 0.6300, -0.6735, -0.0484, 0.1862, -1.0144,\n", + " -1.5882, -1.3492, -0.2634]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2354, -0.2208, -0.0500, -0.0722, 0.1630, 0.1841, 0.1353, 0.2216,\n", + " 0.2323, 0.2753, 0.1898, -0.1780, -0.2177, -0.3487, -0.1809, -0.2715,\n", + " -0.1375, 0.0159, -0.0469, -0.0127, -0.0982, -0.0564, -0.0417, -0.0450,\n", + " 0.0959, 0.0269, -0.0464, -0.1320, -0.2662, -0.3942, -0.2579, -0.2192,\n", + " -0.3964, -0.2922, -0.1758, -0.1061, -0.0029, 0.0778, 0.0933, 0.1586,\n", + " 0.2321, 0.2860, 0.2859]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002741638454608619\n", + "Grad encoder.fc1.bias: 0.0002711378620006144\n", + "Grad encoder.encoder.0.weight: 8.237519068643451e-05\n", + "Grad encoder.encoder.0.bias: 0.00034105408121831715\n", + "Grad encoder.encoder.2.weight: 7.398425077553838e-05\n", + "Grad encoder.encoder.2.bias: 0.0003804947482421994\n", + "Grad encoder.encoder.4.weight: 0.00021448414190672338\n", + "Grad encoder.encoder.4.bias: 0.001154002035036683\n", + "Grad decoder.fc1.0.weight: 0.00011130738130304962\n", + "Grad decoder.fc1.0.bias: 0.0005196744459681213\n", + "Grad decoder.fc1.2.weight: 0.00010444701183587313\n", + "Grad decoder.fc1.2.bias: 0.0007597115472890437\n", + "Grad decoder.fc1.4.weight: 9.437004337087274e-05\n", + "Grad decoder.fc1.4.bias: 0.0007639880059286952\n", + "Grad decoder.fc2.weight: 0.00012797022645827383\n", + "Grad decoder.fc2.bias: 0.001997152343392372\n", + "Grad _memory_unit.weight_ih_l0: 1.9399079974391498e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.9651910153916106e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.1103489416418597e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.175352190330159e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010644961730577052\n", + "Grad _memory_unit.bias_hh_l1: 5.6872941058827564e-05\n", + "Data X Sample: tensor([[2.5842, 3.0412, 3.2321, 3.4525, 3.3363, 3.6110, 3.7762, 3.7677, 3.9837,\n", + " 3.9035, 4.0954, 4.1151, 3.8793, 3.7189, 3.6517, 3.6637, 3.6432, 3.6269,\n", + " 3.7480, 3.4684, 3.4056, 3.2210, 3.0653, 2.8898, 2.7814, 2.8783, 2.8931,\n", + " 2.8632, 2.7788, 2.9542, 2.9221, 3.0120, 3.0339, 2.1558, 3.6547, 4.0180,\n", + " 4.2201, 4.5372, 5.0327, 4.9253, 2.0284, 1.1451, 1.1439, 1.9978, 2.9018,\n", + " 3.2994, 2.0669, 2.9948]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7256, -0.2617, -0.3834, 0.2327, -0.3579, 0.5357, 0.2364, 0.6520,\n", + " -0.5524, -0.6039, -0.5599, -0.6040, -1.1743, 0.5358, 0.2150, -0.7026,\n", + " 0.0170, 0.9424, -0.2970, -0.1011, 0.1913, -0.5329, -0.0155, -0.1236,\n", + " 0.0361, 0.6928, -0.1110, -0.7868, 0.8761, -0.7970, 1.0127, 0.1777,\n", + " 1.5420, -1.4848, 0.0498, 1.1478, -0.0333, -0.5712, -0.2265, -2.0035,\n", + " -0.1915, 0.0751, 0.2363]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1761, -0.1523, -0.0542, -0.1500, -0.0503, 0.0493, 0.0861, 0.1482,\n", + " 0.0848, 0.1261, 0.1286, -0.1151, -0.1126, -0.1943, -0.1356, -0.1548,\n", + " -0.1395, -0.0214, -0.0745, -0.0533, -0.0666, -0.0242, -0.0283, -0.0147,\n", + " 0.0159, 0.0280, 0.0302, -0.0338, -0.0984, -0.1387, -0.1219, -0.1342,\n", + " -0.1930, -0.1883, -0.0748, -0.1103, 0.0222, 0.0219, -0.0112, 0.1803,\n", + " 0.2059, 0.1804, 0.1571]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00029921752866357565\n", + "Grad encoder.fc1.bias: 0.0003326626610942185\n", + "Grad encoder.encoder.0.weight: 9.154451254289597e-05\n", + "Grad encoder.encoder.0.bias: 0.0003815259551629424\n", + "Grad encoder.encoder.2.weight: 6.767433660570532e-05\n", + "Grad encoder.encoder.2.bias: 0.0004651690542232245\n", + "Grad encoder.encoder.4.weight: 0.00022132741287350655\n", + "Grad encoder.encoder.4.bias: 0.0012699912767857313\n", + "Grad decoder.fc1.0.weight: 9.421747381566092e-05\n", + "Grad decoder.fc1.0.bias: 0.00048966018948704\n", + "Grad decoder.fc1.2.weight: 7.631212793057784e-05\n", + "Grad decoder.fc1.2.bias: 0.0013973580207675695\n", + "Grad decoder.fc1.4.weight: 5.1115232054144144e-05\n", + "Grad decoder.fc1.4.bias: 0.0007858332246541977\n", + "Grad decoder.fc2.weight: 0.00015409504703711718\n", + "Grad decoder.fc2.bias: 0.0022000225726515055\n", + "Grad _memory_unit.weight_ih_l0: 2.3297186999116093e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.431076376931742e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.238888893974945e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.558655458211433e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010873804421862587\n", + "Grad _memory_unit.bias_hh_l1: 6.405603198800236e-05\n", + "Data X Sample: tensor([[1.4130, 1.6939, 1.8407, 1.8957, 2.0455, 2.1465, 1.9382, 2.6802, 4.0423,\n", + " 4.3189, 4.2921, 4.3001, 4.2499, 4.1797, 4.0552, 3.7170, 3.7973, 3.6579,\n", + " 3.5477, 3.4832, 3.6019, 3.5517, 3.0436, 2.8382, 2.7439, 2.8679, 2.9011,\n", + " 2.9896, 2.8794, 3.1638, 3.1356, 3.2939, 3.8523, 2.8927, 4.6278, 4.9861,\n", + " 5.2839, 5.4781, 5.9201, 5.8927, 1.0977, 0.6890, 0.6487, 1.1797, 1.8275,\n", + " 1.8470, 1.3258, 1.8141]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2366, -0.0838, 0.2178, -0.7530, 0.4423, 0.2928, 0.2002, 0.2955,\n", + " -0.1220, 0.3401, 0.3238, 0.2529, 0.7634, 0.3692, -0.9417, -0.4459,\n", + " -0.1158, 0.2610, -0.6221, -0.0335, -3.3140, 0.4773, 0.1147, -0.6001,\n", + " 0.5547, -0.0884, -1.0129, -0.9843, -0.7004, -0.6968, 0.0829, -0.9420,\n", + " -0.4843, -0.2808, -0.0356, 0.0062, -0.7416, 0.8024, 0.6434, 0.1845,\n", + " 0.4580, 0.1855, 0.9573]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2583, -0.2177, -0.0580, -0.1173, 0.0759, 0.1487, 0.1587, 0.2421,\n", + " 0.1755, 0.2224, 0.2104, -0.1795, -0.2038, -0.3398, -0.1875, -0.2380,\n", + " -0.1414, 0.0066, -0.0789, -0.0339, -0.1007, -0.0448, -0.0326, -0.0116,\n", + " 0.0815, 0.0336, -0.0306, -0.1244, -0.2211, -0.2997, -0.2359, -0.2309,\n", + " -0.3370, -0.3006, -0.1374, -0.1347, 0.0077, 0.0528, 0.0646, 0.2164,\n", + " 0.2484, 0.2936, 0.2625]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004013401339761913\n", + "Grad encoder.fc1.bias: 0.0009610429406166077\n", + "Grad encoder.encoder.0.weight: 0.00012021700968034565\n", + "Grad encoder.encoder.0.bias: 0.0009938012808561325\n", + "Grad encoder.encoder.2.weight: 0.00010018513421528041\n", + "Grad encoder.encoder.2.bias: 0.0008113209623843431\n", + "Grad encoder.encoder.4.weight: 0.00031010425300337374\n", + "Grad encoder.encoder.4.bias: 0.0012564290082082152\n", + "Grad decoder.fc1.0.weight: 0.0001506066182628274\n", + "Grad decoder.fc1.0.bias: 0.000738864648155868\n", + "Grad decoder.fc1.2.weight: 0.00010086351539939642\n", + "Grad decoder.fc1.2.bias: 0.0011345171369612217\n", + "Grad decoder.fc1.4.weight: 8.9612505689729e-05\n", + "Grad decoder.fc1.4.bias: 0.00076107814675197\n", + "Grad decoder.fc2.weight: 0.0001729383657220751\n", + "Grad decoder.fc2.bias: 0.0019159161020070314\n", + "Grad _memory_unit.weight_ih_l0: 2.7668345865095034e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.80574817629531e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.3753538446035236e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.753098695189692e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00013894669245928526\n", + "Grad _memory_unit.bias_hh_l1: 7.888975960668176e-05\n", + "Data X Sample: tensor([[2.6192, 2.8227, 3.0473, 3.1355, 3.3824, 3.4047, 3.5651, 3.6782, 3.8397,\n", + " 3.9556, 3.9337, 3.8405, 3.8549, 3.7652, 3.6366, 3.6869, 3.6306, 3.5070,\n", + " 3.4919, 3.3717, 3.3467, 3.1996, 2.9881, 2.8344, 2.6970, 2.7686, 2.6879,\n", + " 2.6470, 2.5256, 2.7675, 2.8136, 2.6528, 2.7281, 2.0162, 3.3042, 3.7383,\n", + " 3.9644, 4.1264, 4.5573, 4.6047, 1.8852, 1.0216, 1.1115, 1.8428, 2.8582,\n", + " 3.0307, 2.0261, 2.9166]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.2111e+00, -6.7939e-01, -7.3705e-01, 3.2230e-01, -6.3155e-01,\n", + " 3.5431e-01, -6.2371e-02, -1.6801e-03, 8.2353e-02, 8.1520e-02,\n", + " 2.4788e-01, 6.1432e-01, -1.1548e-01, -8.9136e-02, 7.5611e-01,\n", + " 7.7085e-01, 1.7752e-01, -3.7892e-01, -9.1933e-01, 8.2868e-01,\n", + " 9.5919e-01, -3.8508e-01, -2.3143e-01, 2.7207e-02, -1.7582e+00,\n", + " 4.3815e-01, -4.4271e-01, -3.4505e-01, -1.0042e+00, -6.5625e-01,\n", + " -1.9801e-01, -6.3569e-01, -3.4393e-01, -3.0757e-01, 1.2661e-01,\n", + " -5.1676e-02, 1.7671e-01, 5.0968e-01, -1.2290e-01, 1.0554e-01,\n", + " 2.1311e-02, -2.0486e-01, -1.8728e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1751, -0.1678, -0.0660, -0.1779, -0.0908, 0.0352, 0.0970, 0.1690,\n", + " 0.0858, 0.1214, 0.1493, -0.1177, -0.1028, -0.1847, -0.1413, -0.1648,\n", + " -0.1610, -0.0310, -0.0788, -0.0648, -0.0573, -0.0153, -0.0306, -0.0108,\n", + " 0.0020, 0.0358, 0.0456, -0.0210, -0.0904, -0.1198, -0.1199, -0.1349,\n", + " -0.1762, -0.1925, -0.0768, -0.1181, 0.0139, 0.0177, -0.0166, 0.2049,\n", + " 0.2355, 0.1994, 0.1527]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00016459307516925037\n", + "Grad encoder.fc1.bias: 0.000833506288472563\n", + "Grad encoder.encoder.0.weight: 5.067174424766563e-05\n", + "Grad encoder.encoder.0.bias: 0.0006066841306164861\n", + "Grad encoder.encoder.2.weight: 5.6495380704291165e-05\n", + "Grad encoder.encoder.2.bias: 0.0005843457765877247\n", + "Grad encoder.encoder.4.weight: 0.00019405523198656738\n", + "Grad encoder.encoder.4.bias: 0.0014379860367625952\n", + "Grad decoder.fc1.0.weight: 0.00011375504254829139\n", + "Grad decoder.fc1.0.bias: 0.0005900900578126311\n", + "Grad decoder.fc1.2.weight: 0.00011435881606303155\n", + "Grad decoder.fc1.2.bias: 0.0008722308557480574\n", + "Grad decoder.fc1.4.weight: 0.00012203201185911894\n", + "Grad decoder.fc1.4.bias: 0.001127429655753076\n", + "Grad decoder.fc2.weight: 0.00016192562179639935\n", + "Grad decoder.fc2.bias: 0.0019389900844544172\n", + "Grad _memory_unit.weight_ih_l0: 2.2174104742589407e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.29804887669161e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.8442514778580517e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0905942872341257e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00016643291746731848\n", + "Grad _memory_unit.bias_hh_l1: 8.614456601208076e-05\n", + "Data X Sample: tensor([[1.5085, 1.7507, 1.8452, 2.0226, 2.1002, 2.1642, 2.1400, 2.3395, 3.5492,\n", + " 4.1278, 4.3588, 4.3351, 4.1678, 3.8879, 3.7904, 3.8387, 3.7312, 3.6250,\n", + " 3.6365, 3.5558, 3.4743, 3.3267, 2.8966, 2.9260, 2.9560, 2.8548, 2.9224,\n", + " 3.0304, 3.0667, 3.2817, 3.2755, 3.3989, 3.8061, 2.8423, 4.6719, 4.8669,\n", + " 5.2525, 5.3588, 5.9708, 5.7395, 1.2600, 0.6890, 0.6447, 1.1137, 1.7641,\n", + " 1.9499, 1.3462, 1.9470]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.7793, -0.4536, -1.0751, -1.5955, -0.5091, 0.8593, 1.4542, 0.2548,\n", + " 0.9879, 0.7985, 1.0038, 1.3667, 0.5387, -0.8329, -0.6808, -0.9024,\n", + " -0.4614, -0.2331, -0.3619, -0.5405, -0.8933, -0.8333, -1.1236, -0.8232,\n", + " -0.7166, 0.7230, 0.2762, 0.1906, -0.2761, -0.6142, -1.3657, -0.8493,\n", + " -0.8447, -0.9254, -0.6233, -0.7907, 0.5692, -0.7055, 0.0000, 1.1527,\n", + " 0.7903, 0.9017, 0.5175]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2592, -0.2099, -0.0600, -0.1405, 0.0274, 0.1245, 0.1626, 0.2443,\n", + " 0.1427, 0.1927, 0.2097, -0.1713, -0.1844, -0.3185, -0.1850, -0.2161,\n", + " -0.1435, -0.0010, -0.0889, -0.0459, -0.0954, -0.0375, -0.0304, 0.0012,\n", + " 0.0666, 0.0337, -0.0204, -0.1134, -0.1897, -0.2426, -0.2161, -0.2285,\n", + " -0.2971, -0.2931, -0.1163, -0.1387, 0.0122, 0.0400, 0.0471, 0.2362,\n", + " 0.2528, 0.2856, 0.2398]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00016356795094907284\n", + "Grad encoder.fc1.bias: 0.00018154183635488153\n", + "Grad encoder.encoder.0.weight: 3.784899308811873e-05\n", + "Grad encoder.encoder.0.bias: 0.00023098337987903506\n", + "Grad encoder.encoder.2.weight: 2.895889883802738e-05\n", + "Grad encoder.encoder.2.bias: 0.00027161292382515967\n", + "Grad encoder.encoder.4.weight: 8.103768050204962e-05\n", + "Grad encoder.encoder.4.bias: 0.00044694216921925545\n", + "Grad decoder.fc1.0.weight: 4.591963443090208e-05\n", + "Grad decoder.fc1.0.bias: 0.00025443342747166753\n", + "Grad decoder.fc1.2.weight: 4.9220441724173725e-05\n", + "Grad decoder.fc1.2.bias: 0.0008660681778565049\n", + "Grad decoder.fc1.4.weight: 5.639484152197838e-05\n", + "Grad decoder.fc1.4.bias: 0.0006210075225681067\n", + "Grad decoder.fc2.weight: 0.00016054009029176086\n", + "Grad decoder.fc2.bias: 0.0019035666482523084\n", + "Grad _memory_unit.weight_ih_l0: 7.2653929237276316e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.1932839445071295e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.3892895367462188e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.3955542423645966e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.0746290324022993e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.2312166038318537e-05\n", + "Data X Sample: tensor([[1.4332, 1.5818, 1.7701, 1.9001, 1.9516, 2.1628, 2.1739, 3.6868, 4.3450,\n", + " 4.4232, 4.3556, 4.3118, 4.3475, 4.1061, 3.7324, 3.8168, 3.8460, 3.6869,\n", + " 3.6406, 3.4795, 3.5700, 3.4629, 3.1544, 2.9203, 2.8021, 2.8208, 2.8584,\n", + " 2.8999, 2.8239, 3.0360, 3.1286, 3.2055, 3.7533, 2.8011, 4.6278, 4.9009,\n", + " 5.1227, 5.4357, 5.9518, 5.9409, 1.1120, 0.6353, 0.6407, 1.1281, 1.6650,\n", + " 1.8813, 1.2374, 1.8844]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2298, -0.4656, 0.7527, -0.2618, 0.2751, 0.1988, -0.2045, 0.4420,\n", + " -0.0224, 0.3708, 0.3448, 0.5457, -0.5041, 1.0844, 0.4652, 0.1157,\n", + " 0.3698, 0.5227, -0.7577, -0.0591, 0.2400, 0.6053, 0.7262, 0.3753,\n", + " 0.5666, 0.5372, 0.5539, -0.8324, -0.4605, -0.3820, -0.0268, -0.3737,\n", + " 0.2833, -1.0173, -0.7847, 0.1457, 0.5021, -0.4061, 0.0000, 0.5364,\n", + " 0.5835, 0.8683, 1.4048]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2592, -0.2087, -0.0632, -0.1577, -0.0100, 0.1106, 0.1667, 0.2498,\n", + " 0.1264, 0.1752, 0.2152, -0.1688, -0.1691, -0.3030, -0.1861, -0.2047,\n", + " -0.1497, -0.0064, -0.0963, -0.0576, -0.0906, -0.0302, -0.0303, 0.0089,\n", + " 0.0542, 0.0358, -0.0123, -0.1035, -0.1685, -0.2039, -0.2052, -0.2219,\n", + " -0.2696, -0.2895, -0.1046, -0.1468, 0.0145, 0.0329, 0.0346, 0.2558,\n", + " 0.2624, 0.2849, 0.2247]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007758808205835521\n", + "Grad encoder.fc1.bias: 0.0008185275946743786\n", + "Grad encoder.encoder.0.weight: 0.00020376010797917843\n", + "Grad encoder.encoder.0.bias: 0.0010425117798149586\n", + "Grad encoder.encoder.2.weight: 0.00012781782425008714\n", + "Grad encoder.encoder.2.bias: 0.0007983708055689931\n", + "Grad encoder.encoder.4.weight: 0.0003441807930357754\n", + "Grad encoder.encoder.4.bias: 0.0016209138557314873\n", + "Grad decoder.fc1.0.weight: 0.00010693077638279647\n", + "Grad decoder.fc1.0.bias: 0.00048474688082933426\n", + "Grad decoder.fc1.2.weight: 8.144493767758831e-05\n", + "Grad decoder.fc1.2.bias: 0.0013364069163799286\n", + "Grad decoder.fc1.4.weight: 6.958024459891021e-05\n", + "Grad decoder.fc1.4.bias: 0.0008218418806791306\n", + "Grad decoder.fc2.weight: 0.00014836396439932287\n", + "Grad decoder.fc2.bias: 0.0019556554034352303\n", + "Grad _memory_unit.weight_ih_l0: 1.8110195014742203e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.3549957151990384e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.888452607090585e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0112633390235715e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.693050767760724e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.73933105240576e-05\n", + "Data X Sample: tensor([[-0.0021, 0.0044, 0.0105, -0.0044, -0.0017, 0.0015, 0.0015, 0.0043,\n", + " 0.0220, 0.0000, 0.0000, 0.0058, 0.0022, 0.0082, 0.0050, 0.0096,\n", + " 0.0094, 0.0213, 0.0186, 0.0167, 0.0074, 0.0092, 0.0265, 0.0095,\n", + " 0.0056, 0.0104, 0.0320, 0.0122, 0.0139, 0.0164, 0.0280, 0.0221,\n", + " 0.0066, 0.0023, 0.0000, 0.0535, 0.0000, 0.0212, 0.0254, -0.0028,\n", + " -0.0048, -0.0080, 0.0040, -0.0287, 0.0357, -0.0400, -0.0272, 0.0313]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.3731, 0.0925, 1.4218, 1.2210, 1.2697, -0.2176, -0.4084, -1.2299,\n", + " -0.6774, -0.8762, -0.9302, 0.4385, 2.1511, 0.5760, 0.7777, 0.8871,\n", + " 0.1341, 1.9823, -0.0308, 0.5563, 1.1787, 0.7075, -0.5577, -0.0970,\n", + " -0.6534, 0.6531, 0.5649, 0.6670, 0.5478, 1.5487, 0.9954, 1.3051,\n", + " 0.1750, 0.2542, 0.2042, 1.1964, 0.8291, 0.0000, -0.0197, -0.7262,\n", + " -0.6967, -0.8797, 0.1522]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 1.2727, 0.9572, 0.2198, 0.4259, -1.0503, -0.9333, -1.7705, -1.4924,\n", + " -1.0474, -1.1064, -1.0969, 0.5713, 0.5443, 0.7806, 0.2727, 0.5692,\n", + " 0.4704, 0.0758, 0.0773, 0.2461, 0.1110, 0.0302, 0.0495, 0.1402,\n", + " 0.0212, -0.0098, 0.7762, 0.7553, 1.5476, 1.3433, 1.2159, 0.8987,\n", + " 0.8587, 0.9126, 0.6077, 0.3008, -0.0894, 0.1379, -0.0436, -1.0065,\n", + " -0.7810, -0.6176, -0.5259]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0011058804811909795\n", + "Grad encoder.fc1.bias: 0.0009320012759417295\n", + "Grad encoder.encoder.0.weight: 0.0002643445914145559\n", + "Grad encoder.encoder.0.bias: 0.0010156703647226095\n", + "Grad encoder.encoder.2.weight: 0.00020754107390530407\n", + "Grad encoder.encoder.2.bias: 0.0011302420170977712\n", + "Grad encoder.encoder.4.weight: 0.0006131455302238464\n", + "Grad encoder.encoder.4.bias: 0.003167287912219763\n", + "Grad decoder.fc1.0.weight: 0.00026244239415973425\n", + "Grad decoder.fc1.0.bias: 0.0011606402695178986\n", + "Grad decoder.fc1.2.weight: 0.000144446938065812\n", + "Grad decoder.fc1.2.bias: 0.0018502033781260252\n", + "Grad decoder.fc1.4.weight: 9.42425467655994e-05\n", + "Grad decoder.fc1.4.bias: 0.001060946611687541\n", + "Grad decoder.fc2.weight: 0.000156460766447708\n", + "Grad decoder.fc2.bias: 0.0021144298370927572\n", + "Grad _memory_unit.weight_ih_l0: 5.234819764154963e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.675180677324533e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.9884619986405596e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.1564763048663735e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00025331502547487617\n", + "Grad _memory_unit.bias_hh_l1: 0.00014689439558424056\n", + "Data X Sample: tensor([[1.8596, 1.7595, 1.9714, 2.0860, 2.0284, 2.0906, 2.6392, 3.9636, 4.2132,\n", + " 4.3600, 4.3619, 4.3819, 4.2588, 4.0570, 3.9064, 3.8182, 3.7611, 3.8010,\n", + " 3.6613, 3.5018, 3.3614, 3.2455, 3.0002, 2.7600, 2.7871, 2.8156, 2.7998,\n", + " 2.8346, 2.8100, 2.9411, 2.9641, 3.0866, 3.4233, 2.6180, 4.2920, 4.7356,\n", + " 4.8552, 5.4065, 6.2053, 6.0459, 1.1788, 0.6452, 0.7033, 1.2084, 1.6650,\n", + " 2.0128, 1.3938, 1.7515]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.7164, 0.5608, -1.2358, -0.3249, -2.4095, -1.1492, -0.0075, 0.8608,\n", + " 0.3170, 0.1731, 0.7703, 0.3268, 0.1063, -0.9753, -0.9827, -0.9224,\n", + " -0.8642, -0.1139, -0.1665, 1.1513, -0.4373, 1.6528, 0.9730, 0.2522,\n", + " 1.7392, 0.8173, 0.5652, -1.1259, -0.3364, -1.7902, -0.3881, 0.1458,\n", + " -0.9119, 0.3901, -0.1215, -1.3345, -0.0457, 0.7357, -0.0156, 0.8193,\n", + " 0.7323, 0.9324, 0.2592]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2595, -0.2063, -0.0626, -0.1606, -0.0157, 0.1072, 0.1654, 0.2486,\n", + " 0.1165, 0.1692, 0.2097, -0.1631, -0.1648, -0.2978, -0.1806, -0.1946,\n", + " -0.1456, -0.0077, -0.0978, -0.0570, -0.0888, -0.0305, -0.0280, 0.0083,\n", + " 0.0500, 0.0353, -0.0109, -0.1047, -0.1610, -0.1910, -0.1979, -0.2249,\n", + " -0.2641, -0.2874, -0.1001, -0.1406, 0.0159, 0.0299, 0.0343, 0.2549,\n", + " 0.2593, 0.2817, 0.2179]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006616251775994897\n", + "Grad encoder.fc1.bias: 0.00030385787249542773\n", + "Grad encoder.encoder.0.weight: 0.00018136169819626957\n", + "Grad encoder.encoder.0.bias: 0.0004842274938710034\n", + "Grad encoder.encoder.2.weight: 0.0001671607024036348\n", + "Grad encoder.encoder.2.bias: 0.0008098396356217563\n", + "Grad encoder.encoder.4.weight: 0.0005185076734051108\n", + "Grad encoder.encoder.4.bias: 0.0028622467070817947\n", + "Grad decoder.fc1.0.weight: 0.0002656021388247609\n", + "Grad decoder.fc1.0.bias: 0.0010496687609702349\n", + "Grad decoder.fc1.2.weight: 0.00011584955063881353\n", + "Grad decoder.fc1.2.bias: 0.0018225432140752673\n", + "Grad decoder.fc1.4.weight: 6.260549707803875e-05\n", + "Grad decoder.fc1.4.bias: 0.0007454477017745376\n", + "Grad decoder.fc2.weight: 8.190634252969176e-05\n", + "Grad decoder.fc2.bias: 0.0016126064583659172\n", + "Grad _memory_unit.weight_ih_l0: 6.819536065449938e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.631860691821203e-05\n", + "Grad _memory_unit.bias_hh_l0: 7.199002720881253e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.963158087572083e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0003139362088404596\n", + "Grad _memory_unit.bias_hh_l1: 0.00018090660159941763\n", + "Data X Sample: tensor([[-0.0021, -0.0044, 0.0165, -0.0022, -0.0068, 0.0250, 0.0169, 0.0085,\n", + " 0.0244, 0.0221, 0.0317, 0.0097, 0.0022, 0.0354, 0.0101, 0.0109,\n", + " -0.0928, -0.1083, -0.1094, -0.0930, -0.1423, -0.0811, -0.0964, -0.1031,\n", + " -0.0694, -0.1567, -0.1359, -0.2325, -0.0347, -0.0229, -0.0105, 0.0083,\n", + " 0.0110, -0.0366, 0.0319, 0.0608, 0.0039, 0.0159, 0.0254, 0.0142,\n", + " -0.0191, 0.0100, 0.0182, 0.0115, 0.0159, -0.0172, -0.0136, -0.0156]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7947, 0.5003, -0.2617, 0.6019, 0.3941, -0.4075, -1.4139, -1.2811,\n", + " -1.0997, -0.7949, -0.8875, 0.3762, 0.7386, 1.6919, 1.0010, 0.4195,\n", + " 0.4081, 0.6134, -0.0970, -6.2363, 0.0096, 1.2704, -0.2068, 0.8567,\n", + " -1.5179, -0.2048, 1.5313, 1.0481, 1.3044, 0.9825, 0.7949, 0.7827,\n", + " 0.6216, 0.6607, 0.4204, -0.8582, 0.9727, 0.0000, -0.2713, -0.6981,\n", + " -0.4497, -0.0788, -0.2183]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.8446, 0.7607, 0.2437, 0.5024, 0.0027, -0.2323, -0.8564, -0.9979,\n", + " -0.3867, -0.4960, -0.3945, 0.5243, 0.3742, 0.5686, 0.2711, 0.5549,\n", + " 0.4223, 0.1943, 0.2255, 0.2177, 0.0998, 0.1328, 0.0728, 0.1167,\n", + " 0.0862, 0.1185, 0.0223, 0.1403, 0.5705, 0.6848, 0.6272, 0.4936,\n", + " 0.6053, 0.7528, 0.3283, 0.3208, 0.0100, 0.0803, -0.0656, -0.5866,\n", + " -0.5859, -0.5426, -0.5432]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004593068442773074\n", + "Grad encoder.fc1.bias: 0.0012340566609054804\n", + "Grad encoder.encoder.0.weight: 0.00017116154776886106\n", + "Grad encoder.encoder.0.bias: 0.001280725235119462\n", + "Grad encoder.encoder.2.weight: 0.00016698738909326494\n", + "Grad encoder.encoder.2.bias: 0.0015689604915678501\n", + "Grad encoder.encoder.4.weight: 0.0006090356037020683\n", + "Grad encoder.encoder.4.bias: 0.0035721443127840757\n", + "Grad decoder.fc1.0.weight: 0.0002990271896123886\n", + "Grad decoder.fc1.0.bias: 0.0015557627193629742\n", + "Grad decoder.fc1.2.weight: 0.00013423082418739796\n", + "Grad decoder.fc1.2.bias: 0.002992577850818634\n", + "Grad decoder.fc1.4.weight: 0.00012560206232592463\n", + "Grad decoder.fc1.4.bias: 0.0015926756896078587\n", + "Grad decoder.fc2.weight: 0.00023772269196342677\n", + "Grad decoder.fc2.bias: 0.0023708182852715254\n", + "Grad _memory_unit.weight_ih_l0: 7.280492718564346e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0001859810872701928\n", + "Grad _memory_unit.bias_hh_l0: 0.00010903773363679647\n", + "Grad _memory_unit.weight_ih_l1: 5.550294736167416e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00043025490595027804\n", + "Grad _memory_unit.bias_hh_l1: 0.0002482804120518267\n", + "Data X Sample: tensor([[1.6284, 1.8774, 1.9835, 2.1865, 2.3119, 2.4500, 2.4913, 2.5766, 2.6290,\n", + " 2.5844, 2.6235, 2.6272, 2.5078, 2.5302, 2.5522, 2.4493, 2.4749, 2.4876,\n", + " 2.4615, 2.4697, 2.4389, 2.5689, 2.4676, 2.5099, 2.4661, 2.5570, 2.5148,\n", + " 2.4798, 2.2688, 2.2959, 2.3377, 2.2355, 1.8568, 1.2312, 1.6962, 1.6150,\n", + " 1.5142, 1.5000, 1.5149, 1.3675, 1.3363, 0.7548, 0.7175, 1.3003, 1.9742,\n", + " 2.1386, 1.4414, 2.1581]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1052, -0.0147, -0.0092, 0.4286, 0.4792, -0.5730, -0.0324, 0.4886,\n", + " -0.0878, -0.0350, -0.1781, -0.3342, 0.1145, 0.5331, -0.7581, 0.5875,\n", + " 0.9089, -0.9143, 0.4089, 0.0221, -1.4007, 0.1502, -1.0248, -0.1435,\n", + " 0.0252, 5.4966, -0.2336, 0.7529, -0.7166, 0.7970, -0.1308, 0.0763,\n", + " 0.6931, -0.8209, 0.2399, -0.7241, -0.4229, -0.0920, -0.4768, -0.4174,\n", + " -1.2918, -0.4362, -0.2771]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3326, 0.3056, 0.0148, 0.1945, -0.0174, -0.1371, -0.3120, -0.4393,\n", + " -0.1689, -0.2180, -0.2512, 0.1984, 0.1651, 0.2448, 0.1546, 0.2358,\n", + " 0.0955, 0.0765, 0.0450, -0.0018, 0.0268, 0.0734, 0.0883, 0.0226,\n", + " 0.0115, -0.0292, 0.0061, 0.0317, 0.2487, 0.2895, 0.2423, 0.1603,\n", + " 0.2273, 0.3170, 0.1549, 0.2011, 0.0216, 0.0245, 0.0098, -0.2341,\n", + " -0.2604, -0.2297, -0.2563]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0010500894859433174\n", + "Grad encoder.fc1.bias: 0.0006916503771208227\n", + "Grad encoder.encoder.0.weight: 0.00023156366660259664\n", + "Grad encoder.encoder.0.bias: 0.0010005871299654245\n", + "Grad encoder.encoder.2.weight: 0.00018501459271647036\n", + "Grad encoder.encoder.2.bias: 0.0013758487766608596\n", + "Grad encoder.encoder.4.weight: 0.0005402049864642322\n", + "Grad encoder.encoder.4.bias: 0.003759979037567973\n", + "Grad decoder.fc1.0.weight: 0.0002117333933711052\n", + "Grad decoder.fc1.0.bias: 0.0011472871992737055\n", + "Grad decoder.fc1.2.weight: 0.00010920834029093385\n", + "Grad decoder.fc1.2.bias: 0.002323260297998786\n", + "Grad decoder.fc1.4.weight: 0.00010384044435340911\n", + "Grad decoder.fc1.4.bias: 0.0015234588645398617\n", + "Grad decoder.fc2.weight: 0.00017989336629398167\n", + "Grad decoder.fc2.bias: 0.0022860842291265726\n", + "Grad _memory_unit.weight_ih_l0: 4.4266573240747675e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00010846970690181479\n", + "Grad _memory_unit.bias_hh_l0: 6.685117114102468e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.7811536458320916e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00030321499798446894\n", + "Grad _memory_unit.bias_hh_l1: 0.00017138684052042663\n", + "Data X Sample: tensor([[2.7826, 3.2728, 3.5567, 3.8090, 3.8930, 4.1001, 4.1197, 4.1652, 4.1912,\n", + " 4.3426, 4.2319, 4.3507, 4.0169, 3.8607, 3.7879, 3.6664, 3.6385, 3.6811,\n", + " 3.6737, 3.9110, 3.9061, 3.7002, 3.2629, 2.9699, 3.0123, 3.0220, 2.8877,\n", + " 2.9284, 2.9314, 3.1540, 3.2860, 3.3961, 3.6983, 2.5425, 4.1057, 4.4583,\n", + " 4.6743, 5.1998, 5.8377, 5.5296, 2.0952, 1.3084, 1.2429, 2.1413, 3.1396,\n", + " 3.6539, 2.3932, 3.4248]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.2038, -0.2033, -0.8663, -0.8250, -0.5553, -0.3642, 0.4489, 0.6862,\n", + " 1.1087, 0.3771, 0.7984, 0.1621, -0.0645, -0.5242, 0.1157, 0.0430,\n", + " 0.0590, 0.1707, -0.2960, 1.1605, -0.0806, -0.2880, 0.7256, -0.4741,\n", + " -0.1434, -0.8702, 1.2560, -0.1663, -0.1392, -0.0959, -0.7964, -0.5720,\n", + " -1.0068, -0.0194, -0.6623, 1.3281, 0.3667, 0.0000, 0.9198, 0.1323,\n", + " -0.0676, 0.2143, 0.4503]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2362, -0.1854, -0.0616, -0.1825, -0.0767, 0.0716, 0.1424, 0.2223,\n", + " 0.0771, 0.1307, 0.1859, -0.1399, -0.1282, -0.2436, -0.1638, -0.1591,\n", + " -0.1504, -0.0214, -0.0987, -0.0707, -0.0767, -0.0257, -0.0239, 0.0041,\n", + " 0.0203, 0.0328, 0.0123, -0.0732, -0.1127, -0.1211, -0.1568, -0.1900,\n", + " -0.2034, -0.2529, -0.0763, -0.1335, 0.0215, 0.0150, 0.0018, 0.2543,\n", + " 0.2511, 0.2485, 0.1773]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00023394680465571582\n", + "Grad encoder.fc1.bias: 0.0009502099128440022\n", + "Grad encoder.encoder.0.weight: 6.526631477754563e-05\n", + "Grad encoder.encoder.0.bias: 0.0006971781840547919\n", + "Grad encoder.encoder.2.weight: 6.113104609539732e-05\n", + "Grad encoder.encoder.2.bias: 0.0008020127424970269\n", + "Grad encoder.encoder.4.weight: 0.00020365157979540527\n", + "Grad encoder.encoder.4.bias: 0.002345292828977108\n", + "Grad decoder.fc1.0.weight: 8.685982174938545e-05\n", + "Grad decoder.fc1.0.bias: 0.0006628662813454866\n", + "Grad decoder.fc1.2.weight: 0.00010261953138979152\n", + "Grad decoder.fc1.2.bias: 0.0006788853788748384\n", + "Grad decoder.fc1.4.weight: 9.303847036790103e-05\n", + "Grad decoder.fc1.4.bias: 0.0007390559185296297\n", + "Grad decoder.fc2.weight: 0.00014740835467819124\n", + "Grad decoder.fc2.bias: 0.002063536085188389\n", + "Grad _memory_unit.weight_ih_l0: 1.1029447705368511e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.1921910198871046e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.853131081792526e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.539245987369213e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001279619464185089\n", + "Grad _memory_unit.bias_hh_l1: 6.710759771522135e-05\n", + "Data X Sample: tensor([[1.6210, 1.8454, 2.0210, 2.1472, 2.1872, 2.2924, 2.4081, 2.3793, 2.4288,\n", + " 2.4185, 2.4744, 2.4207, 2.4035, 2.3802, 2.3353, 2.4247, 2.3193, 2.3851,\n", + " 2.4512, 2.3711, 2.5836, 2.6117, 2.5712, 2.5424, 2.6482, 2.6014, 2.5441,\n", + " 2.5981, 2.5082, 2.5251, 2.4147, 2.4290, 2.0680, 1.3479, 1.7967, 1.7317,\n", + " 1.6695, 1.5557, 1.6100, 1.4299, 1.4222, 0.7687, 0.7518, 1.3089, 1.9861,\n", + " 2.0414, 1.4346, 2.1425]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0620, 0.5165, -0.1048, -0.7353, 0.6287, 0.6536, 0.1215, -0.0544,\n", + " -0.1121, -0.3508, -0.2481, -0.5272, -0.7046, -0.9457, -1.0491, -0.0932,\n", + " -1.0825, 0.0151, -0.5438, -0.1600, -0.1572, 0.1711, -0.4737, 0.6097,\n", + " 0.4605, -0.0527, -0.1860, 1.2919, -0.1803, -0.5939, -0.3346, -0.6498,\n", + " 0.0462, 0.2413, -0.0831, -0.0505, -0.5282, 0.7996, -0.0197, -0.0974,\n", + " -0.0364, -0.5153, -0.7833]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3044, 0.2893, 0.0164, 0.1791, -0.0194, -0.1218, -0.2925, -0.4033,\n", + " -0.1548, -0.1960, -0.2323, 0.1828, 0.1593, 0.2257, 0.1482, 0.2155,\n", + " 0.0858, 0.0701, 0.0461, 0.0022, 0.0340, 0.0598, 0.0753, 0.0124,\n", + " 0.0115, -0.0166, 0.0057, 0.0333, 0.2247, 0.2669, 0.2212, 0.1539,\n", + " 0.2126, 0.2892, 0.1472, 0.1866, 0.0271, 0.0289, -0.0079, -0.2166,\n", + " -0.2394, -0.2133, -0.2458]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0008178725256584585\n", + "Grad encoder.fc1.bias: 0.0011231736280024052\n", + "Grad encoder.encoder.0.weight: 0.00017412230954505503\n", + "Grad encoder.encoder.0.bias: 0.0010636728256940842\n", + "Grad encoder.encoder.2.weight: 0.00013024939107708633\n", + "Grad encoder.encoder.2.bias: 0.0007990770973265171\n", + "Grad encoder.encoder.4.weight: 0.00031678960658609867\n", + "Grad encoder.encoder.4.bias: 0.0013614790514111519\n", + "Grad decoder.fc1.0.weight: 0.0001719319261610508\n", + "Grad decoder.fc1.0.bias: 0.0007080822251737118\n", + "Grad decoder.fc1.2.weight: 0.00011617840937105939\n", + "Grad decoder.fc1.2.bias: 0.0011999763082712889\n", + "Grad decoder.fc1.4.weight: 0.00010737660340964794\n", + "Grad decoder.fc1.4.bias: 0.0009467907366342843\n", + "Grad decoder.fc2.weight: 0.00014677102444693446\n", + "Grad decoder.fc2.bias: 0.0019429447129368782\n", + "Grad _memory_unit.weight_ih_l0: 3.7273526686476544e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.754423470236361e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.3495645261136815e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.1729027139372192e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002029980532824993\n", + "Grad _memory_unit.bias_hh_l1: 0.00011517738312250003\n", + "Data X Sample: tensor([[ 0.0011, 0.0058, -0.0045, 0.0000, 0.0000, 0.0029, 0.0046, -0.0057,\n", + " -0.0024, 0.0111, 0.0063, -0.0097, 0.0133, -0.0082, -0.0202, 0.0014,\n", + " 0.0031, 0.0135, -0.0145, 0.0112, 0.0147, 0.0000, 0.0169, 0.0172,\n", + " 0.0094, -0.0183, 0.0240, 0.0286, -0.0069, 0.0360, 0.0070, 0.0111,\n", + " -0.0088, -0.0069, 0.0025, 0.0243, -0.0118, -0.0212, 0.0317, -0.0085,\n", + " 0.0048, -0.0060, 0.0040, 0.0115, 0.0079, 0.0057, 0.0476, -0.0078]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4712, 0.2771, 0.2545, 1.5249, -0.1802, -2.5461, -2.0430, -1.0066,\n", + " -0.3676, -0.7234, -0.6876, -0.7346, 0.8479, 0.7022, 1.7870, 0.8009,\n", + " 0.5081, 0.0345, -0.3027, 0.2685, 0.5961, 0.4570, 0.2372, 0.5927,\n", + " -0.5009, 0.0233, 0.0455, 1.1337, 0.4881, 1.0940, 0.8161, 0.5134,\n", + " 0.9291, 1.8084, -0.1961, 1.1766, 0.9926, -0.7815, -0.0068, -0.6160,\n", + " -0.7265, -0.5910, -0.7455]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 1.1319e+00, 8.3876e-01, 1.7599e-01, 4.0939e-01, -9.3608e-01,\n", + " -7.6755e-01, -1.5529e+00, -1.3085e+00, -9.9901e-01, -9.9243e-01,\n", + " -9.9961e-01, 5.0767e-01, 5.7415e-01, 7.4941e-01, 2.8742e-01,\n", + " 5.6392e-01, 3.8011e-01, 1.0285e-01, 7.2061e-02, 2.3474e-01,\n", + " 9.9063e-02, 2.1352e-02, 8.6842e-02, 9.2481e-02, -1.4697e-03,\n", + " -4.2367e-02, 7.0350e-01, 7.2835e-01, 1.3403e+00, 1.3007e+00,\n", + " 1.0396e+00, 8.6599e-01, 7.9185e-01, 8.0266e-01, 5.1894e-01,\n", + " 3.4066e-01, -8.4683e-02, 1.2469e-01, -1.0212e-01, -9.0603e-01,\n", + " -7.2800e-01, -5.7298e-01, -5.2214e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0014791300054639578\n", + "Grad encoder.fc1.bias: 0.000925872998777777\n", + "Grad encoder.encoder.0.weight: 0.0003737146616913378\n", + "Grad encoder.encoder.0.bias: 0.0010911080753430724\n", + "Grad encoder.encoder.2.weight: 0.00025553005980327725\n", + "Grad encoder.encoder.2.bias: 0.0011318837059661746\n", + "Grad encoder.encoder.4.weight: 0.0006823138101026416\n", + "Grad encoder.encoder.4.bias: 0.002983152400702238\n", + "Grad decoder.fc1.0.weight: 0.000182865493115969\n", + "Grad decoder.fc1.0.bias: 0.000784688105341047\n", + "Grad decoder.fc1.2.weight: 0.0001256442628800869\n", + "Grad decoder.fc1.2.bias: 0.001276221708394587\n", + "Grad decoder.fc1.4.weight: 0.00010182278492720798\n", + "Grad decoder.fc1.4.bias: 0.0011118717957288027\n", + "Grad decoder.fc2.weight: 0.0001392358826706186\n", + "Grad decoder.fc2.bias: 0.002687253523617983\n", + "Grad _memory_unit.weight_ih_l0: 3.255113188060932e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.770564555656165e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.468571594567038e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.765684282872826e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00017081065743695945\n", + "Grad _memory_unit.bias_hh_l1: 9.267476707464084e-05\n", + "Data X Sample: tensor([[2.4060, 1.8905, 1.8137, 1.9023, 2.0677, 2.1731, 3.6714, 4.1382, 4.2718,\n", + " 4.3268, 4.2319, 4.1774, 4.0280, 3.9125, 3.7501, 3.7676, 3.6825, 3.7314,\n", + " 3.5766, 3.4423, 3.3590, 3.3864, 2.9833, 2.8478, 2.8284, 2.8940, 2.8558,\n", + " 2.8876, 2.8308, 2.9902, 2.9676, 3.1557, 3.3925, 2.4990, 4.2184, 4.5556,\n", + " 4.9595, 5.2952, 5.9581, 5.8303, 1.2409, 0.7109, 0.6407, 1.1826, 1.7759,\n", + " 1.8184, 1.1626, 1.8141]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0179, -0.4160, -0.1831, 0.6690, -0.7566, 0.8771, -0.1598, 0.4289,\n", + " 0.3760, 0.1932, 0.3893, -0.9567, 0.0676, -0.0465, -1.0887, -0.7198,\n", + " -0.4589, 0.0924, 0.2398, -0.0267, 3.1056, 0.2225, -0.3973, -0.5638,\n", + " -0.7496, -0.6104, -2.8252, -2.8014, -3.7666, -2.7047, -1.7302, -2.2786,\n", + " -2.8375, -1.6285, -2.1010, 0.6245, -0.5148, -0.0459, 1.0291, 0.6839,\n", + " 0.3256, 0.8218, 0.8315]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2652, -0.2215, -0.0568, -0.1477, 0.0252, 0.1444, 0.1841, 0.2761,\n", + " 0.1482, 0.2029, 0.2218, -0.1605, -0.1761, -0.3148, -0.1862, -0.2137,\n", + " -0.1529, 0.0041, -0.0720, -0.0616, -0.0824, -0.0481, -0.0299, -0.0204,\n", + " 0.0484, 0.0355, -0.0452, -0.1419, -0.2024, -0.2419, -0.2302, -0.2499,\n", + " -0.3011, -0.3128, -0.1296, -0.1303, 0.0059, 0.0422, 0.0547, 0.2523,\n", + " 0.2831, 0.3105, 0.2325]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004835897125303745\n", + "Grad encoder.fc1.bias: 0.001235908828675747\n", + "Grad encoder.encoder.0.weight: 0.00014302856288850307\n", + "Grad encoder.encoder.0.bias: 0.0008438359946012497\n", + "Grad encoder.encoder.2.weight: 9.901334851747379e-05\n", + "Grad encoder.encoder.2.bias: 0.0006398449186235666\n", + "Grad encoder.encoder.4.weight: 0.00026900600641965866\n", + "Grad encoder.encoder.4.bias: 0.0013522990047931671\n", + "Grad decoder.fc1.0.weight: 0.00014841776282992214\n", + "Grad decoder.fc1.0.bias: 0.0007730560610070825\n", + "Grad decoder.fc1.2.weight: 0.0001097680942621082\n", + "Grad decoder.fc1.2.bias: 0.00219940347597003\n", + "Grad decoder.fc1.4.weight: 0.00010321017180103809\n", + "Grad decoder.fc1.4.bias: 0.0011640412267297506\n", + "Grad decoder.fc2.weight: 0.00016542529920116067\n", + "Grad decoder.fc2.bias: 0.001615755958482623\n", + "Grad _memory_unit.weight_ih_l0: 3.150603879475966e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.144068902358413e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.838231350528076e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.390674126218073e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00016294658416882157\n", + "Grad _memory_unit.bias_hh_l1: 9.628331463318318e-05\n", + "Data X Sample: tensor([[1.6220, 1.9415, 2.1382, 2.2434, 2.2658, 2.5060, 2.6222, 2.6660, 2.7168,\n", + " 2.7724, 2.7631, 2.7557, 2.6609, 2.6501, 2.6455, 2.5368, 2.5174, 2.5979,\n", + " 2.5854, 2.5831, 2.5566, 2.6515, 2.6459, 2.5882, 2.5900, 2.6955, 2.7572,\n", + " 2.6715, 2.4770, 2.5088, 2.4917, 2.4925, 2.3166, 1.5287, 2.0124, 1.8801,\n", + " 1.7915, 1.6670, 1.6797, 1.6087, 1.4938, 0.7747, 0.7740, 1.3663, 2.0297,\n", + " 2.2015, 1.3394, 1.9939]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.1398, -0.5477, 0.0618, -0.6728, -0.0610, -0.3749, -0.3114, 0.1883,\n", + " -0.0175, 0.2083, -0.0813, 0.5221, 1.0123, -0.3468, 0.2988, 0.1466,\n", + " 0.1529, -0.6954, 0.1786, -0.0395, 1.4180, -0.1162, 1.0242, 1.2706,\n", + " 1.0798, 1.1684, 0.1950, 0.1546, 0.1935, 0.3126, -0.4984, -0.1091,\n", + " 0.6130, 0.4458, -0.2343, 0.3417, 0.6097, 0.0940, -0.9499, -0.7615,\n", + " 0.4007, 0.5126, -0.0754]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.1923, 0.2096, 0.0137, 0.0977, -0.0346, -0.0932, -0.2261, -0.2458,\n", + " -0.0994, -0.1051, -0.1579, 0.0978, 0.1172, 0.1372, 0.1009, 0.1414,\n", + " 0.0423, 0.0346, 0.0378, 0.0030, 0.0402, 0.0342, 0.0219, -0.0209,\n", + " 0.0168, 0.0250, 0.0161, 0.0344, 0.1404, 0.1585, 0.1529, 0.0945,\n", + " 0.1490, 0.1891, 0.1101, 0.1212, 0.0475, 0.0248, -0.0394, -0.1215,\n", + " -0.1116, -0.1285, -0.1560]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007327661151066422\n", + "Grad encoder.fc1.bias: 0.0007554113399237394\n", + "Grad encoder.encoder.0.weight: 0.0002070968912448734\n", + "Grad encoder.encoder.0.bias: 0.000780843198299408\n", + "Grad encoder.encoder.2.weight: 0.00014547238242812455\n", + "Grad encoder.encoder.2.bias: 0.0007662680582143366\n", + "Grad encoder.encoder.4.weight: 0.00038712372770532966\n", + "Grad encoder.encoder.4.bias: 0.001602590549737215\n", + "Grad decoder.fc1.0.weight: 0.00010107812704518437\n", + "Grad decoder.fc1.0.bias: 0.0004654332296922803\n", + "Grad decoder.fc1.2.weight: 7.751262455713004e-05\n", + "Grad decoder.fc1.2.bias: 0.0007842883351258934\n", + "Grad decoder.fc1.4.weight: 6.584458606084809e-05\n", + "Grad decoder.fc1.4.bias: 0.000739250099286437\n", + "Grad decoder.fc2.weight: 0.00010077098704641685\n", + "Grad decoder.fc2.bias: 0.0021058886777609587\n", + "Grad _memory_unit.weight_ih_l0: 1.2490389053709805e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.7701777323964052e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.23174577311147e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.4621702879085205e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.849432586226612e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.087910201633349e-05\n", + "Data X Sample: tensor([[1.6835, 1.8978, 1.9985, 2.1056, 2.2487, 2.4736, 2.4743, 2.5965, 2.5435,\n", + " 2.6302, 2.6647, 2.6759, 2.6209, 2.5901, 2.5698, 2.4643, 2.4545, 2.4799,\n", + " 2.5090, 2.4362, 2.5125, 2.4418, 2.5038, 2.4126, 2.5450, 2.6537, 2.5760,\n", + " 2.5083, 2.2307, 2.4400, 2.4602, 2.3709, 2.1802, 1.4509, 1.9217, 1.8461,\n", + " 1.6931, 1.5769, 1.6353, 1.5860, 1.2934, 0.7508, 0.7276, 1.3175, 1.8473,\n", + " 2.0071, 1.3734, 2.1425]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2512, -0.1637, -0.7609, 0.3614, -0.2128, -1.2215, -0.3188, 0.5287,\n", + " 0.0153, 0.0108, 0.1204, -0.6711, 0.5502, -0.3908, -0.8158, -0.8729,\n", + " 0.3591, -0.1369, 1.0573, -0.3028, 0.4068, -0.1140, 0.4200, 0.8938,\n", + " 1.0962, 1.2211, 1.7332, 0.5616, -1.6686, -0.2638, 0.6259, -0.1236,\n", + " 0.0306, 0.9298, -0.1050, 1.9466, 0.8233, -0.4031, 0.7285, -1.5496,\n", + " -0.2726, 0.5479, -0.7123]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 2.7506e-01, 2.9231e-01, 4.1190e-02, 1.9474e-01, 1.0775e-02,\n", + " -8.6836e-02, -2.8180e-01, -3.5289e-01, -1.5022e-01, -1.8074e-01,\n", + " -2.1561e-01, 1.5505e-01, 1.5484e-01, 2.0373e-01, 1.3691e-01,\n", + " 2.0994e-01, 8.5492e-02, 6.8545e-02, 5.8585e-02, 2.6825e-02,\n", + " 6.6826e-02, 4.4558e-02, 4.9513e-02, 2.0359e-02, 1.0012e-02,\n", + " 1.0154e-02, 1.7845e-04, 2.1746e-02, 1.7106e-01, 2.3935e-01,\n", + " 1.9769e-01, 1.6495e-01, 2.0199e-01, 2.7481e-01, 1.5714e-01,\n", + " 1.8224e-01, 3.4720e-02, 3.0267e-02, -3.1123e-02, -2.2425e-01,\n", + " -2.1820e-01, -2.1925e-01, -2.5848e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004970073350705206\n", + "Grad encoder.fc1.bias: 0.0005009567248634994\n", + "Grad encoder.encoder.0.weight: 0.00011933901259908453\n", + "Grad encoder.encoder.0.bias: 0.0005076853558421135\n", + "Grad encoder.encoder.2.weight: 8.162886661011726e-05\n", + "Grad encoder.encoder.2.bias: 0.0005466603906825185\n", + "Grad encoder.encoder.4.weight: 0.0002528817276470363\n", + "Grad encoder.encoder.4.bias: 0.0012436483521014452\n", + "Grad decoder.fc1.0.weight: 0.00012863184383604676\n", + "Grad decoder.fc1.0.bias: 0.0005900286487303674\n", + "Grad decoder.fc1.2.weight: 9.068532381206751e-05\n", + "Grad decoder.fc1.2.bias: 0.0008788366103544831\n", + "Grad decoder.fc1.4.weight: 9.551461698720232e-05\n", + "Grad decoder.fc1.4.bias: 0.0007082395022735\n", + "Grad decoder.fc2.weight: 0.00018628110410645604\n", + "Grad decoder.fc2.bias: 0.0015873025404289365\n", + "Grad _memory_unit.weight_ih_l0: 2.6308382075512782e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.4076172343920916e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.673614289960824e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.088926183001604e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00013414172281045467\n", + "Grad _memory_unit.bias_hh_l1: 7.111747254384682e-05\n", + "Data X Sample: tensor([[1.6082, 1.8294, 1.9624, 2.1363, 2.1599, 2.1318, 2.2355, 2.2884, 2.4361,\n", + " 2.3822, 2.4395, 2.3837, 2.2881, 2.2957, 2.2949, 2.2797, 2.2454, 2.2942,\n", + " 2.3066, 2.3358, 2.3751, 2.4357, 2.3905, 2.3191, 2.3573, 2.4082, 2.4295,\n", + " 2.3900, 2.1925, 2.3221, 2.2642, 2.3212, 2.3650, 1.5310, 1.8923, 1.7853,\n", + " 1.6735, 1.6379, 1.6480, 1.4299, 1.2982, 0.7508, 0.7538, 1.2859, 2.0455,\n", + " 2.1729, 1.3802, 1.8922]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5236, 0.2130, -0.2157, 0.3283, 1.6485, 0.0073, -0.5003, -0.1860,\n", + " -0.0612, -0.5413, -0.2559, 0.4608, 1.1245, -0.2463, 1.0079, -0.1679,\n", + " -0.1843, 1.8105, 0.3134, 0.0393, 0.2689, -0.1616, -0.3077, -0.3124,\n", + " 0.2321, 0.0286, -1.3575, -0.8858, -1.5915, -0.1955, -1.1762, 0.0532,\n", + " -0.1166, 0.0250, -0.4189, 0.6770, 0.7686, -0.3631, -0.4066, -0.4475,\n", + " -0.1436, -0.4033, -0.5212]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3495, 0.3868, 0.0728, 0.2992, 0.0543, -0.0854, -0.3546, -0.4356,\n", + " -0.2095, -0.2462, -0.2730, 0.1936, 0.2044, 0.2595, 0.1771, 0.2903,\n", + " 0.1352, 0.1033, 0.0879, 0.0632, 0.1086, 0.0653, 0.0695, 0.0584,\n", + " 0.0223, 0.0129, -0.0129, 0.0198, 0.1995, 0.3148, 0.2501, 0.2267,\n", + " 0.2715, 0.3694, 0.2218, 0.2465, 0.0408, 0.0364, -0.0318, -0.3082,\n", + " -0.3031, -0.3021, -0.3521]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00025255148648284376\n", + "Grad encoder.fc1.bias: 0.0006499962182715535\n", + "Grad encoder.encoder.0.weight: 7.021993224043399e-05\n", + "Grad encoder.encoder.0.bias: 0.0004955634940415621\n", + "Grad encoder.encoder.2.weight: 5.819019861519337e-05\n", + "Grad encoder.encoder.2.bias: 0.00038967456202954054\n", + "Grad encoder.encoder.4.weight: 0.00014566790196113288\n", + "Grad encoder.encoder.4.bias: 0.0003763234708458185\n", + "Grad decoder.fc1.0.weight: 6.906033377163112e-05\n", + "Grad decoder.fc1.0.bias: 0.00026653712848201394\n", + "Grad decoder.fc1.2.weight: 7.19776435289532e-05\n", + "Grad decoder.fc1.2.bias: 0.0004362532345112413\n", + "Grad decoder.fc1.4.weight: 7.472690049326047e-05\n", + "Grad decoder.fc1.4.bias: 0.0005460199317894876\n", + "Grad decoder.fc2.weight: 0.0001270356005989015\n", + "Grad decoder.fc2.bias: 0.0015339849051088095\n", + "Grad _memory_unit.weight_ih_l0: 1.0302668670192361e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.0724884961964563e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.1235204510740004e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.266778316581622e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.507312355097383e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.4364966268185526e-05\n", + "Data X Sample: tensor([[1.3855, 1.5555, 1.8572, 1.8279, 1.9294, 1.9992, 2.1800, 2.0797, 3.9105,\n", + " 4.1468, 4.0669, 4.3079, 4.0657, 3.9479, 3.7122, 3.6021, 3.6856, 3.6347,\n", + " 3.6241, 3.6804, 3.4767, 3.4813, 2.9183, 2.8382, 2.7890, 2.7895, 3.0156,\n", + " 3.0671, 3.1396, 3.1016, 3.2091, 3.3519, 3.7093, 2.7096, 4.4660, 4.8401,\n", + " 5.2131, 5.5019, 5.9708, 5.9239, 1.1502, 0.7090, 0.6972, 1.1883, 1.7244,\n", + " 1.8184, 1.2170, 1.7124]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3210, -0.4842, -0.8122, -0.5738, -0.1991, -2.0783, 0.0353, 0.4148,\n", + " 0.7098, 0.4376, 0.1135, -0.4192, -0.3545, -0.1395, -1.0111, -0.0108,\n", + " -0.3139, -0.2615, 2.2972, -0.8236, -0.1202, 0.0938, -0.7530, 0.0089,\n", + " 0.3497, -0.5233, -0.1627, -1.1251, -0.4209, -0.9353, -0.3005, -1.1943,\n", + " -0.5360, -0.1460, -1.0793, -0.0061, 0.0000, 0.1005, 0.0073, 0.4560,\n", + " 0.2487, 0.6743, 0.6649]], device='cuda:0')\n", + "Prediction Sample: tensor([[-2.0582e-01, -1.9279e-01, -4.5351e-02, -1.3006e-01, 1.9933e-02,\n", + " 1.2107e-01, 1.4135e-01, 2.2336e-01, 1.3969e-01, 1.8767e-01,\n", + " 1.7246e-01, -1.2450e-01, -1.4292e-01, -2.5535e-01, -1.5690e-01,\n", + " -1.9947e-01, -1.5649e-01, -2.9247e-03, -3.9407e-02, -6.1432e-02,\n", + " -6.3084e-02, -5.0706e-02, -3.2632e-02, -4.8708e-02, 1.8465e-02,\n", + " 2.7258e-02, -3.9862e-02, -1.1869e-01, -1.8212e-01, -2.2217e-01,\n", + " -1.9318e-01, -2.0137e-01, -2.6255e-01, -2.5726e-01, -1.2359e-01,\n", + " -1.0577e-01, 8.8902e-05, 4.8374e-02, 2.9830e-02, 1.9979e-01,\n", + " 2.5922e-01, 2.5772e-01, 1.9880e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00025288548204116523\n", + "Grad encoder.fc1.bias: 0.0008098268881440163\n", + "Grad encoder.encoder.0.weight: 7.719868153799325e-05\n", + "Grad encoder.encoder.0.bias: 0.0004266016185283661\n", + "Grad encoder.encoder.2.weight: 5.3871117415837944e-05\n", + "Grad encoder.encoder.2.bias: 0.00039634769200347364\n", + "Grad encoder.encoder.4.weight: 0.00016184056585188955\n", + "Grad encoder.encoder.4.bias: 0.0006018250714987516\n", + "Grad decoder.fc1.0.weight: 6.198471237439662e-05\n", + "Grad decoder.fc1.0.bias: 0.00027530966326594353\n", + "Grad decoder.fc1.2.weight: 6.26368127996102e-05\n", + "Grad decoder.fc1.2.bias: 0.000279293570201844\n", + "Grad decoder.fc1.4.weight: 5.866568972123787e-05\n", + "Grad decoder.fc1.4.bias: 0.0003237410564906895\n", + "Grad decoder.fc2.weight: 9.390547347720712e-05\n", + "Grad decoder.fc2.bias: 0.0018784126732498407\n", + "Grad _memory_unit.weight_ih_l0: 7.647508937225211e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.499259037198499e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.9060833437833935e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.5344462503417162e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.727725172415376e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.6462963433004916e-05\n", + "Data X Sample: tensor([[1.5021, 1.5963, 1.6829, 1.8520, 1.9158, 2.0552, 2.0460, 1.9179, 3.5907,\n", + " 4.0567, 4.1430, 4.0216, 3.8704, 3.8252, 3.6668, 3.4763, 3.4121, 3.4296,\n", + " 3.4589, 3.4646, 3.3737, 3.4109, 3.2291, 2.8783, 2.8453, 2.8496, 2.9650,\n", + " 3.0916, 2.8794, 3.0491, 3.0411, 3.1198, 3.4057, 2.5563, 4.1988, 4.5312,\n", + " 4.8867, 5.2263, 5.7806, 5.4246, 1.0404, 0.6731, 0.5942, 1.1137, 1.6689,\n", + " 1.7784, 1.1354, 1.6420]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1811, -0.6445, -0.4269, -0.4123, -0.5484, -0.6042, 0.0612, 0.5243,\n", + " 0.4405, 0.5699, 0.6085, -0.8512, 0.2302, -0.6629, -0.1314, -0.3689,\n", + " -0.5689, -0.5225, -0.5531, -0.6554, 0.0368, -1.8091, -0.1129, -0.8598,\n", + " -0.7829, -0.7236, 0.9280, -0.3767, -0.4489, -0.4922, -0.0939, -0.8051,\n", + " -1.3539, -0.8033, -1.3955, -0.8018, 0.0158, -0.8409, 0.0000, 0.6033,\n", + " 0.5195, 0.8603, 0.3657]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1996, -0.1908, -0.0433, -0.1286, 0.0185, 0.1167, 0.1380, 0.2185,\n", + " 0.1386, 0.1853, 0.1689, -0.1212, -0.1394, -0.2498, -0.1552, -0.1977,\n", + " -0.1583, -0.0053, -0.0367, -0.0631, -0.0617, -0.0518, -0.0331, -0.0522,\n", + " 0.0147, 0.0267, -0.0412, -0.1177, -0.1803, -0.2191, -0.1898, -0.1969,\n", + " -0.2573, -0.2535, -0.1241, -0.1047, -0.0007, 0.0492, 0.0253, 0.1964,\n", + " 0.2582, 0.2537, 0.1956]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0010422419290989637\n", + "Grad encoder.fc1.bias: 0.0006287118885666132\n", + "Grad encoder.encoder.0.weight: 0.0002211242390330881\n", + "Grad encoder.encoder.0.bias: 0.0008147478802129626\n", + "Grad encoder.encoder.2.weight: 0.00016275659436360002\n", + "Grad encoder.encoder.2.bias: 0.0009294989285990596\n", + "Grad encoder.encoder.4.weight: 0.0004597051884047687\n", + "Grad encoder.encoder.4.bias: 0.002620245097205043\n", + "Grad decoder.fc1.0.weight: 0.00013885696534998715\n", + "Grad decoder.fc1.0.bias: 0.0006549880490638316\n", + "Grad decoder.fc1.2.weight: 0.00012398068793118\n", + "Grad decoder.fc1.2.bias: 0.0012997547164559364\n", + "Grad decoder.fc1.4.weight: 0.0001324218901572749\n", + "Grad decoder.fc1.4.bias: 0.001112652476876974\n", + "Grad decoder.fc2.weight: 0.0002055023069260642\n", + "Grad decoder.fc2.bias: 0.001962068025022745\n", + "Grad _memory_unit.weight_ih_l0: 3.161786662531085e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.4225369240157306e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.7346653698477894e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.0587574908859096e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00017091643530875444\n", + "Grad _memory_unit.bias_hh_l1: 9.661926014814526e-05\n", + "Data X Sample: tensor([[1.6793, 1.8367, 2.0421, 2.0772, 2.1377, 2.1878, 2.3233, 2.4247, 2.3385,\n", + " 2.3901, 2.4903, 2.4091, 2.4212, 2.2766, 2.2243, 2.2483, 2.2705, 2.3599,\n", + " 2.3562, 2.3860, 2.4585, 2.5857, 2.4773, 2.4527, 2.4774, 2.6302, 2.5547,\n", + " 2.5695, 2.1370, 2.1812, 2.0927, 1.9758, 1.7160, 1.1076, 1.4928, 1.5299,\n", + " 1.4690, 1.4205, 1.4325, 1.3391, 1.4031, 0.7129, 0.7518, 1.3893, 1.8671,\n", + " 2.0128, 1.3734, 2.0017]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3828, -1.1087, 1.9443, 0.5245, -0.7485, 1.0613, 0.5436, 0.8137,\n", + " 0.6897, 0.7453, 0.5563, -0.6713, -1.4498, -0.6399, -0.4377, -0.5141,\n", + " -0.7704, -0.3645, -0.6314, 0.6509, 0.3719, 0.0806, 0.9068, 0.8539,\n", + " 0.7529, 0.9482, 1.3976, -0.3464, -1.0695, 0.8510, -1.3956, -0.3487,\n", + " -1.1594, -0.4271, -0.4787, 0.5456, 0.0000, 0.4473, -2.2862, 0.5900,\n", + " 0.7193, 0.3335, -0.3025]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4000, 0.4517, 0.1067, 0.3900, 0.0967, -0.0766, -0.4145, -0.4890,\n", + " -0.2585, -0.3019, -0.3173, 0.2152, 0.2342, 0.2971, 0.2109, 0.3417,\n", + " 0.1722, 0.1374, 0.1101, 0.1073, 0.1539, 0.0639, 0.0721, 0.0991,\n", + " 0.0192, 0.0396, -0.0169, 0.0243, 0.2073, 0.3752, 0.2866, 0.2872,\n", + " 0.3295, 0.4293, 0.2778, 0.2982, 0.0519, 0.0409, -0.0430, -0.3889,\n", + " -0.3633, -0.3655, -0.4183]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002357081975787878\n", + "Grad encoder.fc1.bias: 0.0016952165169641376\n", + "Grad encoder.encoder.0.weight: 6.449980719480664e-05\n", + "Grad encoder.encoder.0.bias: 0.0013914540177211165\n", + "Grad encoder.encoder.2.weight: 5.684025745722465e-05\n", + "Grad encoder.encoder.2.bias: 0.0011152778752148151\n", + "Grad encoder.encoder.4.weight: 0.00017066323198378086\n", + "Grad encoder.encoder.4.bias: 0.00172199378721416\n", + "Grad decoder.fc1.0.weight: 0.00011340877244947478\n", + "Grad decoder.fc1.0.bias: 0.0008559925481677055\n", + "Grad decoder.fc1.2.weight: 0.00013515213504433632\n", + "Grad decoder.fc1.2.bias: 0.0011988056357949972\n", + "Grad decoder.fc1.4.weight: 0.00013136310735717416\n", + "Grad decoder.fc1.4.bias: 0.0007819259772077203\n", + "Grad decoder.fc2.weight: 0.0002529727353248745\n", + "Grad decoder.fc2.bias: 0.002069987589493394\n", + "Grad _memory_unit.weight_ih_l0: 2.5958179321605712e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.058646926656365e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.652549250749871e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.3439508620649576e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00017587683396413922\n", + "Grad _memory_unit.bias_hh_l1: 9.651192522142082e-05\n", + "Data X Sample: tensor([[ 0.0053, 0.0073, 0.0195, 0.0153, 0.0000, 0.0221, 0.0262, 0.0085,\n", + " 0.0195, 0.0158, 0.0190, 0.0078, 0.0022, -0.0218, -0.0177, 0.0096,\n", + " -0.0409, -0.0696, -0.1012, -0.0893, -0.0613, -0.0521, -0.1277, -0.1145,\n", + " -0.0788, -0.1776, -0.2051, -0.3793, -0.0104, -0.0491, -0.0700, -0.0718,\n", + " -0.0506, -0.0435, -0.0637, -0.0268, -0.0177, -0.0451, -0.0761, -0.0113,\n", + " -0.0382, 0.0020, 0.0243, -0.0029, 0.0238, 0.0000, 0.0544, -0.0547]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[-0.7430, 0.2287, -0.6451, -0.3933, 0.4257, -1.0128, 1.1026, -0.9875,\n", + " 0.4375, 0.3758, 0.2356, 0.9823, 0.1443, 0.3107, 0.6311, 0.2527,\n", + " 0.0390, 0.4902, -1.2040, -0.4610, -0.6208, -0.4210, -0.2582, -0.2127,\n", + " 1.4847, -0.9344, 0.0089, -0.7467, -0.4031, -0.2661, -0.8986, -0.9155,\n", + " -0.4592, 0.1847, -0.2933, 0.0317, 0.4246, 0.0940, 0.2870, 0.3929,\n", + " 0.1772, 0.5782, -0.0875]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.6336, 0.5891, 0.2194, 0.5032, 0.1098, -0.0862, -0.6447, -0.7300,\n", + " -0.3144, -0.3883, -0.3181, 0.4114, 0.3331, 0.4447, 0.2378, 0.5142,\n", + " 0.3145, 0.1769, 0.2006, 0.1913, 0.1645, 0.1276, 0.0720, 0.0868,\n", + " 0.0319, 0.0987, -0.0106, 0.0875, 0.3176, 0.5782, 0.4267, 0.4349,\n", + " 0.5320, 0.5749, 0.2830, 0.3359, 0.0458, 0.0856, -0.0804, -0.5066,\n", + " -0.4874, -0.4617, -0.5185]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005510776536539197\n", + "Grad encoder.fc1.bias: 0.000611260300502181\n", + "Grad encoder.encoder.0.weight: 0.00012351984332781285\n", + "Grad encoder.encoder.0.bias: 0.0007197523955255747\n", + "Grad encoder.encoder.2.weight: 0.00010928744450211525\n", + "Grad encoder.encoder.2.bias: 0.0010682707652449608\n", + "Grad encoder.encoder.4.weight: 0.0003116279549431056\n", + "Grad encoder.encoder.4.bias: 0.0024982194881886244\n", + "Grad decoder.fc1.0.weight: 0.00019188977603334934\n", + "Grad decoder.fc1.0.bias: 0.001149331103079021\n", + "Grad decoder.fc1.2.weight: 0.00018341478426009417\n", + "Grad decoder.fc1.2.bias: 0.0019624284468591213\n", + "Grad decoder.fc1.4.weight: 0.0001818773162085563\n", + "Grad decoder.fc1.4.bias: 0.0013461776543408632\n", + "Grad decoder.fc2.weight: 0.0002842087997123599\n", + "Grad decoder.fc2.bias: 0.0028257695958018303\n", + "Grad _memory_unit.weight_ih_l0: 5.5360949772875756e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00011089500912930816\n", + "Grad _memory_unit.bias_hh_l0: 7.477153849322349e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.212779120076448e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00029237568378448486\n", + "Grad _memory_unit.bias_hh_l1: 0.00016890940605662763\n", + "Data X Sample: tensor([[1.9976, 2.4149, 2.6251, 2.9168, 2.9624, 2.9893, 3.2416, 3.0976, 3.1880,\n", + " 3.2274, 3.2643, 3.3224, 3.1980, 3.1354, 3.0061, 3.0702, 3.0677, 3.0679,\n", + " 3.1636, 3.0276, 2.7505, 2.8368, 2.6146, 2.5214, 2.4305, 2.3716, 2.3443,\n", + " 2.4023, 1.9289, 2.0797, 2.0157, 1.9592, 1.8502, 1.2449, 1.9560, 2.3374,\n", + " 2.5663, 2.8782, 3.0044, 3.0527, 1.6704, 0.9659, 0.9984, 1.6878, 2.5331,\n", + " 2.7333, 1.8765, 2.7367]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4882, 0.8294, 0.2174, -0.2298, -1.1145, -0.9778, -2.3204, -3.2579,\n", + " -0.8322, -0.9602, -0.4778, 0.0356, -1.4848, -0.0772, -1.0050, -1.9737,\n", + " -1.2489, -0.5412, -0.4125, -0.3756, -0.6892, -2.3023, 0.9413, -1.3602,\n", + " 0.3479, -0.4551, -0.0936, 1.4806, 1.7642, 1.7424, 0.2729, 0.5146,\n", + " 3.6929, -0.5744, -0.7701, -1.8287, -0.4653, 0.0000, -0.1677, 0.7464,\n", + " 0.9918, 0.9835, -0.5460]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1895, -0.1928, -0.0581, -0.1975, -0.1391, 0.0508, 0.1174, 0.2238,\n", + " 0.0912, 0.1340, 0.1839, -0.1237, -0.0808, -0.1801, -0.1563, -0.1703,\n", + " -0.2007, -0.0446, -0.0572, -0.1054, -0.0426, -0.0233, -0.0378, -0.0391,\n", + " -0.0341, 0.0329, 0.0186, -0.0376, -0.0986, -0.0893, -0.1420, -0.1299,\n", + " -0.1415, -0.2185, -0.0828, -0.1440, 0.0112, 0.0268, -0.0355, 0.2708,\n", + " 0.3026, 0.2388, 0.1558]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005645179189741611\n", + "Grad encoder.fc1.bias: 0.00225313613191247\n", + "Grad encoder.encoder.0.weight: 0.00013209873577579856\n", + "Grad encoder.encoder.0.bias: 0.0015146799851208925\n", + "Grad encoder.encoder.2.weight: 8.262276242021471e-05\n", + "Grad encoder.encoder.2.bias: 0.0011842385865747929\n", + "Grad encoder.encoder.4.weight: 0.00025017157895490527\n", + "Grad encoder.encoder.4.bias: 0.001864266931079328\n", + "Grad decoder.fc1.0.weight: 0.00010929642303381115\n", + "Grad decoder.fc1.0.bias: 0.0008233304833993316\n", + "Grad decoder.fc1.2.weight: 0.00011329863627906889\n", + "Grad decoder.fc1.2.bias: 0.0012412604410201311\n", + "Grad decoder.fc1.4.weight: 9.654047607909888e-05\n", + "Grad decoder.fc1.4.bias: 0.0006975921569392085\n", + "Grad decoder.fc2.weight: 0.00018573435954749584\n", + "Grad decoder.fc2.bias: 0.0023652890231460333\n", + "Grad _memory_unit.weight_ih_l0: 2.747469443420414e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00013588156434707344\n", + "Grad _memory_unit.bias_hh_l0: 7.260040001710877e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.8181568520958535e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00021952354290988296\n", + "Grad _memory_unit.bias_hh_l1: 0.00011869741138070822\n", + "Data X Sample: tensor([[1.6422, 1.9139, 2.0030, 2.0816, 2.1565, 2.4014, 2.3495, 2.3693, 2.5069,\n", + " 2.4091, 2.5061, 2.4227, 2.4323, 2.3720, 2.2672, 2.3002, 2.2705, 2.4276,\n", + " 2.3231, 2.4251, 2.5076, 2.5199, 2.6435, 2.5290, 2.5206, 2.6014, 2.6560,\n", + " 2.6470, 2.3243, 2.3908, 2.1837, 2.0974, 1.8524, 1.2015, 1.6055, 1.5615,\n", + " 1.5103, 1.5053, 1.4705, 1.3760, 1.2695, 0.7428, 0.7478, 1.3089, 1.9940,\n", + " 2.1043, 1.3530, 2.0721]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5877, 0.6612, 0.7655, 1.3994, 1.4765, 0.3129, -0.1593, 0.0187,\n", + " 0.1724, 0.0412, -0.2433, -0.5306, 0.2942, 0.5208, 0.4213, 0.1604,\n", + " 1.3220, -0.4510, 1.1338, 1.3641, 1.4563, -1.4953, -0.2724, 0.3868,\n", + " -0.8503, -0.1477, -0.7401, -1.0388, 0.1799, -0.3730, -0.2505, -0.8086,\n", + " 0.3542, 0.2310, 0.4985, 0.6720, -0.7434, 0.7916, -0.2505, -0.2541,\n", + " -0.2008, -0.8470, -0.7207]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3525, 0.4258, 0.1071, 0.3134, 0.0679, -0.1108, -0.3893, -0.4280,\n", + " -0.2706, -0.3117, -0.3215, 0.1708, 0.1819, 0.2833, 0.2246, 0.2884,\n", + " 0.1412, 0.1109, 0.1065, 0.1398, 0.1462, 0.0517, 0.0237, 0.0775,\n", + " 0.0274, 0.0617, 0.0303, 0.0266, 0.2172, 0.3714, 0.2763, 0.2820,\n", + " 0.2981, 0.3463, 0.2570, 0.2837, 0.0545, 0.0434, -0.0271, -0.3700,\n", + " -0.3056, -0.3587, -0.3741]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0009497166029177606\n", + "Grad encoder.fc1.bias: 0.0009827845497056842\n", + "Grad encoder.encoder.0.weight: 0.00021258631022647023\n", + "Grad encoder.encoder.0.bias: 0.0010769678046926856\n", + "Grad encoder.encoder.2.weight: 0.0001539408985991031\n", + "Grad encoder.encoder.2.bias: 0.0011139577254652977\n", + "Grad encoder.encoder.4.weight: 0.0005296330200508237\n", + "Grad encoder.encoder.4.bias: 0.003321173368021846\n", + "Grad decoder.fc1.0.weight: 0.00019098175107501447\n", + "Grad decoder.fc1.0.bias: 0.0007810834795236588\n", + "Grad decoder.fc1.2.weight: 0.00012765992141794413\n", + "Grad decoder.fc1.2.bias: 0.0016670137410983443\n", + "Grad decoder.fc1.4.weight: 0.00010773104440886527\n", + "Grad decoder.fc1.4.bias: 0.0009441349538974464\n", + "Grad decoder.fc2.weight: 0.0002405486156931147\n", + "Grad decoder.fc2.bias: 0.002104083076119423\n", + "Grad _memory_unit.weight_ih_l0: 6.139519246062264e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.568488167133182e-05\n", + "Grad _memory_unit.bias_hh_l0: 7.06878854543902e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.697704232763499e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.000266875431407243\n", + "Grad _memory_unit.bias_hh_l1: 0.00016006422811187804\n", + "Data X Sample: tensor([[1.4968, 1.6706, 1.8242, 1.7798, 1.9158, 1.9919, 2.1585, 2.4559, 3.9593,\n", + " 4.1057, 4.1589, 4.1832, 3.9414, 3.7516, 3.6517, 3.5980, 3.5567, 3.6482,\n", + " 3.4073, 3.4832, 3.3074, 3.2884, 2.9158, 2.8153, 2.9185, 3.0507, 3.0023,\n", + " 2.9814, 3.1604, 3.2719, 3.1916, 3.2607, 3.5641, 2.5540, 4.3631, 4.6553,\n", + " 4.8769, 5.1998, 5.6412, 5.5523, 1.1072, 0.6313, 0.6730, 1.1797, 1.6729,\n", + " 1.6983, 1.1558, 1.6186]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1850, 0.0549, 0.0720, 0.1903, 1.7630, 0.5562, 0.2058, 0.0318,\n", + " 0.2355, 0.0481, 0.1815, 0.0196, -0.5613, -0.2669, 1.1692, 0.9822,\n", + " 0.6545, 1.2500, 0.9329, 0.0474, 0.4451, -0.3936, 0.2108, 1.1496,\n", + " 0.4733, 0.0797, -0.4333, -1.0823, -0.6550, -0.6503, 0.3296, -0.1430,\n", + " -0.7795, -0.2495, -0.8911, 0.7133, -0.4777, -0.1562, -0.6571, -0.4192,\n", + " -0.7264, -0.7731, -0.0752]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1891, -0.2245, -0.0323, -0.0570, 0.1662, 0.1985, 0.1733, 0.2523,\n", + " 0.2409, 0.2724, 0.1907, -0.1273, -0.1894, -0.3135, -0.1728, -0.2738,\n", + " -0.1657, 0.0229, 0.0132, -0.0592, -0.0648, -0.0767, -0.0396, -0.1059,\n", + " 0.0362, 0.0257, -0.1375, -0.2143, -0.3002, -0.3795, -0.2626, -0.2472,\n", + " -0.3795, -0.3058, -0.2058, -0.0945, -0.0372, 0.0982, 0.0782, 0.1679,\n", + " 0.2949, 0.3118, 0.2610]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00020819238852709532\n", + "Grad encoder.fc1.bias: 0.00017036491772159934\n", + "Grad encoder.encoder.0.weight: 3.417315747356042e-05\n", + "Grad encoder.encoder.0.bias: 0.00024310550361406058\n", + "Grad encoder.encoder.2.weight: 2.8933487556059845e-05\n", + "Grad encoder.encoder.2.bias: 0.0002810187288559973\n", + "Grad encoder.encoder.4.weight: 7.483497029170394e-05\n", + "Grad encoder.encoder.4.bias: 0.0007549811853095889\n", + "Grad decoder.fc1.0.weight: 4.765613630297594e-05\n", + "Grad decoder.fc1.0.bias: 0.0002145246835425496\n", + "Grad decoder.fc1.2.weight: 5.8383920986671e-05\n", + "Grad decoder.fc1.2.bias: 0.0006360581028275192\n", + "Grad decoder.fc1.4.weight: 6.629637209698558e-05\n", + "Grad decoder.fc1.4.bias: 0.0004729507490992546\n", + "Grad decoder.fc2.weight: 0.00014980156265664846\n", + "Grad decoder.fc2.bias: 0.0021686300169676542\n", + "Grad _memory_unit.weight_ih_l0: 2.1078012650832534e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.579061012715101e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.549917553551495e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.1356077266100328e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.041256660362706e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.805486969416961e-05\n", + "Data X Sample: tensor([[1.1956, 1.4361, 1.5357, 1.6137, 1.6357, 1.7399, 1.8134, 1.8483, 1.8967,\n", + " 1.9130, 1.9351, 1.9319, 1.8486, 1.9222, 1.8208, 1.8544, 1.7862, 1.8705,\n", + " 1.9122, 1.9025, 1.9972, 1.9412, 2.0459, 2.0213, 2.0063, 2.0321, 2.0006,\n", + " 2.0189, 1.8178, 1.8930, 1.9177, 1.9150, 1.8744, 1.2793, 1.8384, 1.7585,\n", + " 1.5024, 1.2721, 1.1536, 1.0100, 1.1025, 0.5954, 0.5962, 0.9616, 1.5064,\n", + " 1.5725, 1.0606, 1.5873]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.8445, 0.2511, 0.7042, 0.4313, 0.1289, 0.8909, -0.5739, -0.4345,\n", + " -0.2315, -0.1392, -0.2368, 0.1481, 0.8951, 0.3585, 0.4240, 0.4875,\n", + " 0.9897, -0.2968, 0.0070, 0.6652, -0.9293, -0.1248, -0.2629, -0.6604,\n", + " -0.0824, -0.5322, -0.0647, 0.3130, 1.1237, 0.1259, -0.0558, -0.1698,\n", + " 1.0310, 0.1530, 1.5007, 0.2905, 0.0000, 0.1511, -0.9960, -0.0042,\n", + " -0.1128, -0.2102, -0.0926]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3428, 0.4387, 0.1111, 0.3181, 0.0726, -0.1192, -0.3551, -0.3856,\n", + " -0.2628, -0.3030, -0.3044, 0.1813, 0.1459, 0.2559, 0.2432, 0.2735,\n", + " 0.1315, 0.0782, 0.1412, 0.1840, 0.1494, 0.0619, 0.0028, 0.0250,\n", + " 0.0442, 0.0695, 0.0238, 0.0058, 0.2007, 0.3400, 0.2716, 0.2826,\n", + " 0.3214, 0.3013, 0.2483, 0.2828, 0.0222, 0.0400, -0.0140, -0.3588,\n", + " -0.2579, -0.3692, -0.3350]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00015545162023045123\n", + "Grad encoder.fc1.bias: 0.00022221570543479174\n", + "Grad encoder.encoder.0.weight: 4.5752807636745274e-05\n", + "Grad encoder.encoder.0.bias: 0.00021056551486253738\n", + "Grad encoder.encoder.2.weight: 3.551989357220009e-05\n", + "Grad encoder.encoder.2.bias: 0.00030839251121506095\n", + "Grad encoder.encoder.4.weight: 0.00010666075104381889\n", + "Grad encoder.encoder.4.bias: 0.000585846952162683\n", + "Grad decoder.fc1.0.weight: 4.539257861324586e-05\n", + "Grad decoder.fc1.0.bias: 0.00023643313033971936\n", + "Grad decoder.fc1.2.weight: 7.274293602677062e-05\n", + "Grad decoder.fc1.2.bias: 0.000324842578265816\n", + "Grad decoder.fc1.4.weight: 7.202955021057278e-05\n", + "Grad decoder.fc1.4.bias: 0.00044797913869842887\n", + "Grad decoder.fc2.weight: 0.000138874223921448\n", + "Grad decoder.fc2.bias: 0.0023220637813210487\n", + "Grad _memory_unit.weight_ih_l0: 6.414730705728289e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.0300720279919915e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.0810030289576389e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.5369231479999144e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.1416172937024385e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.672029768291395e-05\n", + "Data X Sample: tensor([[1.5584, 1.7012, 1.9324, 2.0750, 2.1377, 2.1082, 1.9952, 2.1422, 3.4589,\n", + " 4.1515, 4.3873, 4.4189, 3.9725, 3.9152, 3.7602, 3.8155, 3.7391, 3.5650,\n", + " 3.4630, 3.5167, 3.5626, 3.4262, 3.0074, 2.9108, 2.9203, 2.9880, 2.9890,\n", + " 3.0263, 3.0182, 3.1114, 3.3175, 3.3630, 3.7885, 2.8400, 4.5665, 4.7891,\n", + " 5.2210, 5.4224, 5.9898, 5.8558, 1.2075, 0.7149, 0.7154, 1.2314, 1.7522,\n", + " 2.0128, 1.2510, 1.9470]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4319, -0.3400, -0.4370, 0.3655, 1.0700, -0.0827, 0.3337, 0.2522,\n", + " 0.1120, 0.2870, 0.3461, -0.3847, -0.6601, -0.2485, -0.0164, -0.7260,\n", + " -1.2600, -1.7983, -0.1584, 0.1634, 4.0602, 0.4904, -1.5896, -0.2051,\n", + " -0.5413, -0.5726, -1.3575, -0.4896, -1.1313, -0.8916, -1.2075, -1.0828,\n", + " -0.8248, -1.2043, -1.0079, -0.7596, 0.4497, 0.0000, -0.0112, 0.3158,\n", + " 0.3203, 0.3450, 0.5737]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1805, -0.2280, -0.0284, -0.0423, 0.1910, 0.2120, 0.1815, 0.2521,\n", + " 0.2585, 0.2817, 0.1880, -0.1257, -0.1902, -0.3151, -0.1695, -0.2844,\n", + " -0.1675, 0.0253, 0.0277, -0.0643, -0.0722, -0.0812, -0.0380, -0.1167,\n", + " 0.0377, 0.0234, -0.1530, -0.2276, -0.3197, -0.4002, -0.2650, -0.2495,\n", + " -0.3963, -0.3100, -0.2250, -0.0950, -0.0492, 0.1044, 0.0789, 0.1617,\n", + " 0.3022, 0.3195, 0.2680]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00033416401129215956\n", + "Grad encoder.fc1.bias: 0.0002560677530709654\n", + "Grad encoder.encoder.0.weight: 6.841396680101752e-05\n", + "Grad encoder.encoder.0.bias: 0.000276286737062037\n", + "Grad encoder.encoder.2.weight: 5.831784073961899e-05\n", + "Grad encoder.encoder.2.bias: 0.000369522487744689\n", + "Grad encoder.encoder.4.weight: 0.0001412317214999348\n", + "Grad encoder.encoder.4.bias: 0.000928647699765861\n", + "Grad decoder.fc1.0.weight: 8.591617370257154e-05\n", + "Grad decoder.fc1.0.bias: 0.0003893820394296199\n", + "Grad decoder.fc1.2.weight: 9.396718087373301e-05\n", + "Grad decoder.fc1.2.bias: 0.0005597113631665707\n", + "Grad decoder.fc1.4.weight: 8.940471161622554e-05\n", + "Grad decoder.fc1.4.bias: 0.0006479179719462991\n", + "Grad decoder.fc2.weight: 0.0001701533910818398\n", + "Grad decoder.fc2.bias: 0.001646667718887329\n", + "Grad _memory_unit.weight_ih_l0: 1.3791020137432497e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.2936166715226136e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.6382651665480807e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.805393240938429e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.684651063755155e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.10571155953221e-05\n", + "Data X Sample: tensor([[1.6135, 1.6357, 1.9399, 1.8607, 1.8509, 2.0287, 2.1446, 2.2231, 3.7152,\n", + " 4.0899, 4.1494, 4.0586, 3.8127, 3.8280, 3.6391, 3.5064, 3.5205, 3.5747,\n", + " 3.7005, 3.3940, 3.4547, 3.2807, 2.8050, 2.8153, 2.8302, 2.9541, 3.0129,\n", + " 3.0100, 3.0390, 3.2719, 3.3035, 3.2690, 3.6631, 2.7370, 4.4537, 4.8766,\n", + " 5.1325, 5.3747, 5.8567, 5.7594, 1.1072, 0.6532, 0.6629, 1.2142, 1.6610,\n", + " 1.8584, 1.1354, 1.7046]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.5838e-01, -2.5418e-01, 2.6655e-01, 1.4350e+00, 1.5171e-02,\n", + " 2.8670e+00, -2.4617e-01, -4.5087e-01, -6.1529e-01, -1.7652e-01,\n", + " 5.3903e-01, -1.0817e+00, -1.2749e-01, -5.9742e-01, 1.7336e-04,\n", + " -6.0174e-01, 4.7776e-01, -4.1335e-01, 1.5373e-01, 1.8589e-01,\n", + " 8.8361e-02, -6.3814e-01, -2.9607e-02, 2.2635e-02, -1.6733e-01,\n", + " 1.1855e+00, -5.8785e-01, -8.5351e-01, -7.0948e-01, -5.1622e-01,\n", + " -5.8449e-02, -9.5634e-01, -7.7635e-01, 4.4583e-01, -5.8369e-01,\n", + " -3.9844e-01, 1.1275e+00, -5.4598e-01, -3.1745e-01, -6.8806e-02,\n", + " 1.7643e-01, 3.8758e-01, -3.9659e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1706, -0.2129, -0.0294, -0.0631, 0.1409, 0.1782, 0.1637, 0.2295,\n", + " 0.2224, 0.2466, 0.1714, -0.1174, -0.1670, -0.2811, -0.1563, -0.2564,\n", + " -0.1662, 0.0109, 0.0156, -0.0699, -0.0691, -0.0724, -0.0355, -0.1054,\n", + " 0.0231, 0.0239, -0.1225, -0.1927, -0.2742, -0.3386, -0.2298, -0.2220,\n", + " -0.3484, -0.2832, -0.2005, -0.0982, -0.0411, 0.0889, 0.0532, 0.1663,\n", + " 0.2890, 0.2917, 0.2403]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001696339313639328\n", + "Grad encoder.fc1.bias: 0.00018224024097435176\n", + "Grad encoder.encoder.0.weight: 5.223165499046445e-05\n", + "Grad encoder.encoder.0.bias: 0.00014783942606300116\n", + "Grad encoder.encoder.2.weight: 4.165632708463818e-05\n", + "Grad encoder.encoder.2.bias: 0.00016235899238381535\n", + "Grad encoder.encoder.4.weight: 0.00012051223166054115\n", + "Grad encoder.encoder.4.bias: 0.00015782527043484151\n", + "Grad decoder.fc1.0.weight: 5.925795994699001e-05\n", + "Grad decoder.fc1.0.bias: 0.00018705904949456453\n", + "Grad decoder.fc1.2.weight: 6.583955109817907e-05\n", + "Grad decoder.fc1.2.bias: 0.000296068872557953\n", + "Grad decoder.fc1.4.weight: 7.044420635793358e-05\n", + "Grad decoder.fc1.4.bias: 0.00042523007141426206\n", + "Grad decoder.fc2.weight: 0.00010912748257396743\n", + "Grad decoder.fc2.bias: 0.0017793253064155579\n", + "Grad _memory_unit.weight_ih_l0: 6.630260486417683e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.676849003881216e-06\n", + "Grad _memory_unit.bias_hh_l0: 6.473601388279349e-06\n", + "Grad _memory_unit.weight_ih_l1: 3.3627916309342254e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.790546179516241e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.018813211179804e-05\n", + "Data X Sample: tensor([[1.5075, 1.6182, 1.7911, 1.9329, 2.0045, 2.1819, 2.1862, 2.7058, 4.1351,\n", + " 4.3268, 4.3461, 4.3507, 4.1167, 3.9425, 3.8156, 3.5310, 3.6353, 3.6327,\n", + " 3.7067, 3.6171, 3.5430, 3.5349, 3.1616, 2.9585, 2.8115, 2.9985, 2.9623,\n", + " 3.0508, 2.9557, 3.1998, 3.2336, 3.2662, 3.8149, 2.7691, 4.4832, 4.7818,\n", + " 5.2997, 5.6053, 5.9011, 5.8984, 1.0977, 0.6532, 0.6548, 1.1281, 1.6887,\n", + " 1.9042, 1.3326, 1.7750]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0572, 0.2343, -0.2683, 0.8988, 0.1551, 0.1575, 0.4389, 0.6222,\n", + " 0.1855, 0.1880, 0.0791, -0.3610, -0.4582, 0.1249, -0.2099, -0.2946,\n", + " -1.3695, 0.6095, -0.0517, -0.2796, 0.3261, -1.6547, -0.3494, -0.3332,\n", + " 1.3260, 0.1494, 0.7481, -0.2756, -0.2349, -0.5112, 0.2019, -0.6716,\n", + " -0.9770, -0.7449, -0.4079, -0.3174, 0.1767, 0.5269, 0.3478, 0.4281,\n", + " 0.4052, 0.5534, -0.7182]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1553, -0.1905, -0.0319, -0.0891, 0.0732, 0.1320, 0.1337, 0.1965,\n", + " 0.1732, 0.1998, 0.1476, -0.1057, -0.1344, -0.2342, -0.1388, -0.2185,\n", + " -0.1634, -0.0048, 0.0014, -0.0726, -0.0621, -0.0610, -0.0334, -0.0910,\n", + " 0.0039, 0.0245, -0.0797, -0.1423, -0.2129, -0.2571, -0.1845, -0.1832,\n", + " -0.2828, -0.2434, -0.1643, -0.0974, -0.0277, 0.0677, 0.0199, 0.1675,\n", + " 0.2680, 0.2499, 0.2009]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 3.2362611818825826e-05\n", + "Grad encoder.fc1.bias: 0.00020761004998348653\n", + "Grad encoder.encoder.0.weight: 1.0513658708077855e-05\n", + "Grad encoder.encoder.0.bias: 0.00016644844436086714\n", + "Grad encoder.encoder.2.weight: 1.3773733371635899e-05\n", + "Grad encoder.encoder.2.bias: 0.00019296338723506778\n", + "Grad encoder.encoder.4.weight: 4.959553916705772e-05\n", + "Grad encoder.encoder.4.bias: 0.00023445177066605538\n", + "Grad decoder.fc1.0.weight: 2.7158568627783097e-05\n", + "Grad decoder.fc1.0.bias: 0.00013827040675096214\n", + "Grad decoder.fc1.2.weight: 3.9233837014762685e-05\n", + "Grad decoder.fc1.2.bias: 0.00015148732927627861\n", + "Grad decoder.fc1.4.weight: 4.6076478611212224e-05\n", + "Grad decoder.fc1.4.bias: 0.00023685532505623996\n", + "Grad decoder.fc2.weight: 0.0001358985318802297\n", + "Grad decoder.fc2.bias: 0.0020404006354510784\n", + "Grad _memory_unit.weight_ih_l0: 8.185797014448326e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.360023427172564e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.268272717425134e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.4789369490463287e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.338672831887379e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.7894677512231283e-05\n", + "Data X Sample: tensor([[2.5343, 2.9247, 3.1345, 3.4329, 3.4507, 3.5255, 3.6991, 3.7762, 3.7958,\n", + " 3.8624, 3.9178, 3.8814, 3.8060, 3.7680, 3.6088, 3.5064, 3.4042, 3.4103,\n", + " 3.4445, 3.3921, 3.0793, 3.1766, 2.9014, 2.8688, 2.7364, 2.8130, 2.7679,\n", + " 2.7530, 2.6296, 2.7151, 2.7961, 2.7882, 2.8953, 2.0802, 3.5272, 3.9767,\n", + " 4.2043, 4.6088, 4.8933, 4.9309, 1.9472, 1.1232, 1.0994, 1.9892, 2.9375,\n", + " 3.1908, 2.0941, 3.0964]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5509, 0.0100, 0.2814, -0.7814, -0.4535, -1.6364, -1.5445, -2.1309,\n", + " -1.1760, -0.7123, 0.6266, 0.6462, 0.4185, -0.0360, -0.4415, -0.6626,\n", + " -0.2640, 0.7189, -0.7494, -0.4699, 1.3093, -0.9000, -0.3105, -0.4398,\n", + " -1.0585, 0.1983, -0.1644, -0.3202, 0.3576, 1.0456, 1.9839, 0.1410,\n", + " -0.6584, -0.1887, 0.6444, -0.5389, 0.0000, -0.3422, -0.6018, 0.4049,\n", + " 0.5124, 0.7454, -0.3635]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1220, -0.1360, -0.0386, -0.1510, -0.0905, 0.0214, 0.0557, 0.1172,\n", + " 0.0575, 0.0959, 0.0876, -0.0746, -0.0606, -0.1191, -0.0970, -0.1253,\n", + " -0.1562, -0.0429, -0.0354, -0.0744, -0.0419, -0.0370, -0.0336, -0.0573,\n", + " -0.0390, 0.0241, 0.0272, -0.0177, -0.0663, -0.0743, -0.0801, -0.0905,\n", + " -0.1275, -0.1466, -0.0736, -0.0872, 0.0082, 0.0231, -0.0514, 0.1598,\n", + " 0.2136, 0.1456, 0.1053]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006143057253211737\n", + "Grad encoder.fc1.bias: 0.0003800568520091474\n", + "Grad encoder.encoder.0.weight: 0.00013982655946165323\n", + "Grad encoder.encoder.0.bias: 0.0004501377115957439\n", + "Grad encoder.encoder.2.weight: 8.826515113469213e-05\n", + "Grad encoder.encoder.2.bias: 0.0004986117710359395\n", + "Grad encoder.encoder.4.weight: 0.0002459048409946263\n", + "Grad encoder.encoder.4.bias: 0.0013638271484524012\n", + "Grad decoder.fc1.0.weight: 7.73147476138547e-05\n", + "Grad decoder.fc1.0.bias: 0.0003552449052222073\n", + "Grad decoder.fc1.2.weight: 7.835389988031238e-05\n", + "Grad decoder.fc1.2.bias: 0.0005674946587532759\n", + "Grad decoder.fc1.4.weight: 6.259747897274792e-05\n", + "Grad decoder.fc1.4.bias: 0.0004186834557913244\n", + "Grad decoder.fc2.weight: 0.00016726111061871052\n", + "Grad decoder.fc2.bias: 0.0018106327624991536\n", + "Grad _memory_unit.weight_ih_l0: 1.414417420164682e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.1687341106589884e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.266704359499272e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.846510354487691e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.723086698912084e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.004062066087499e-05\n", + "Data X Sample: tensor([[1.4502, 1.8454, 2.1307, 2.2565, 2.3904, 2.4441, 2.5082, 2.5028, 2.6216,\n", + " 2.7329, 2.6869, 2.7401, 2.6431, 2.6120, 2.6354, 2.5710, 2.5048, 2.5437,\n", + " 2.5916, 2.6203, 2.6499, 2.6607, 2.5206, 2.5653, 2.5412, 2.3951, 2.3123,\n", + " 2.2595, 1.9115, 1.8636, 1.8092, 1.7547, 1.4784, 0.9612, 1.3530, 1.3742,\n", + " 1.4473, 1.4921, 1.6543, 1.5945, 1.3316, 0.7826, 0.8044, 1.3921, 2.0415,\n", + " 2.2129, 1.6045, 2.1190]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4256, 0.5704, 0.5516, 0.5111, 0.6789, 0.6770, -0.0367, -0.1309,\n", + " 0.7964, -0.2571, -0.2216, 0.0486, 1.9868, 0.0567, 0.8839, 0.5619,\n", + " 1.0578, -0.2073, -0.3123, -1.7029, -0.1342, 0.9601, 0.7712, 0.2263,\n", + " 0.6704, 0.0698, -0.0430, 0.1509, -0.2195, 0.1161, 0.1051, -0.7139,\n", + " 0.8134, 0.7710, 0.1957, 0.5441, 0.2257, 0.1005, -0.0231, -0.5169,\n", + " -0.4298, -0.5113, -0.7115]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.1815, 0.1784, 0.0304, 0.1164, 0.0092, -0.0718, -0.2145, -0.2279,\n", + " -0.0852, -0.1115, -0.1568, 0.0701, 0.0744, 0.1392, 0.1231, 0.1194,\n", + " 0.0587, 0.0343, 0.0610, 0.0549, 0.0480, -0.0052, -0.0127, -0.0075,\n", + " 0.0099, 0.0842, 0.0138, 0.0220, 0.1018, 0.1452, 0.1267, 0.1258,\n", + " 0.1440, 0.1290, 0.1056, 0.1000, 0.0220, 0.0248, -0.0565, -0.1552,\n", + " -0.0937, -0.1328, -0.1650]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0010116648627445102\n", + "Grad encoder.fc1.bias: 0.000708074658177793\n", + "Grad encoder.encoder.0.weight: 0.000223491239012219\n", + "Grad encoder.encoder.0.bias: 0.0010755015537142754\n", + "Grad encoder.encoder.2.weight: 0.00014808544074185193\n", + "Grad encoder.encoder.2.bias: 0.0011641003657132387\n", + "Grad encoder.encoder.4.weight: 0.0004509262216743082\n", + "Grad encoder.encoder.4.bias: 0.0034890510141849518\n", + "Grad decoder.fc1.0.weight: 0.000159069211804308\n", + "Grad decoder.fc1.0.bias: 0.0007598735392093658\n", + "Grad decoder.fc1.2.weight: 0.00010627367009874433\n", + "Grad decoder.fc1.2.bias: 0.0018751788884401321\n", + "Grad decoder.fc1.4.weight: 9.394224616698921e-05\n", + "Grad decoder.fc1.4.bias: 0.0009373197099193931\n", + "Grad decoder.fc2.weight: 0.00015691487351432443\n", + "Grad decoder.fc2.bias: 0.0021153779234737158\n", + "Grad _memory_unit.weight_ih_l0: 7.286710751941428e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00014870613813400269\n", + "Grad _memory_unit.bias_hh_l0: 9.945903730113059e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.164838173892349e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0003484825138002634\n", + "Grad _memory_unit.bias_hh_l1: 0.0001987645373446867\n", + "Data X Sample: tensor([[1.5043, 1.8250, 1.9775, 2.0269, 2.2009, 2.3189, 2.4651, 2.4758, 2.5777,\n", + " 2.6429, 2.5918, 2.5882, 2.4878, 2.5901, 2.4437, 2.3330, 2.3413, 2.4973,\n", + " 2.4305, 2.4939, 2.5321, 2.5076, 2.4628, 2.4049, 2.4117, 2.4839, 2.4535,\n", + " 2.3900, 2.2758, 2.3286, 2.3762, 2.3488, 2.3056, 1.4601, 1.9438, 1.8266,\n", + " 1.6282, 1.5159, 1.6163, 1.6313, 1.2170, 0.7209, 0.7296, 1.2744, 1.8116,\n", + " 2.0700, 1.4210, 2.1503]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2101, 0.4552, -0.0561, 1.5179, 0.1030, -0.4435, -0.3244, -0.3532,\n", + " -0.1333, -0.3091, -0.4347, -0.1480, 0.3695, 0.5809, 0.4915, 0.7593,\n", + " 0.9484, -0.2764, -0.1420, -0.5976, 0.1482, 0.6933, 1.6346, -0.5979,\n", + " 0.8709, 1.7309, 0.4158, -0.3968, 0.0889, -0.9200, 0.3286, -0.5998,\n", + " 0.7986, 0.5838, 1.0756, 0.1185, -0.8958, -0.8004, -0.4066, -0.3766,\n", + " -0.5612, -0.6317, -0.2307]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2442, 0.2775, 0.0623, 0.1880, 0.0646, -0.0812, -0.2656, -0.2910,\n", + " -0.1026, -0.1538, -0.1911, 0.1087, 0.0943, 0.1823, 0.1739, 0.1941,\n", + " 0.1347, 0.0441, 0.0896, 0.0961, 0.0754, 0.0128, -0.0156, -0.0074,\n", + " 0.0415, 0.1213, -0.0195, 0.0033, 0.1092, 0.1821, 0.1692, 0.1545,\n", + " 0.2185, 0.1855, 0.1481, 0.1366, 0.0310, 0.0211, -0.0520, -0.2169,\n", + " -0.1603, -0.2012, -0.2353]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.001018721959553659\n", + "Grad encoder.fc1.bias: 0.0007375770946964622\n", + "Grad encoder.encoder.0.weight: 0.0002363804669585079\n", + "Grad encoder.encoder.0.bias: 0.0008280116599053144\n", + "Grad encoder.encoder.2.weight: 0.00016355809930246323\n", + "Grad encoder.encoder.2.bias: 0.0009245795663446188\n", + "Grad encoder.encoder.4.weight: 0.0005245818756520748\n", + "Grad encoder.encoder.4.bias: 0.0027379910461604595\n", + "Grad decoder.fc1.0.weight: 0.00020205415785312653\n", + "Grad decoder.fc1.0.bias: 0.0007847946835681796\n", + "Grad decoder.fc1.2.weight: 0.00012649477866943926\n", + "Grad decoder.fc1.2.bias: 0.0014165963511914015\n", + "Grad decoder.fc1.4.weight: 0.00010857635788852349\n", + "Grad decoder.fc1.4.bias: 0.0008952436619438231\n", + "Grad decoder.fc2.weight: 0.00013551427400670946\n", + "Grad decoder.fc2.bias: 0.0012966544600203633\n", + "Grad _memory_unit.weight_ih_l0: 8.00163543317467e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00013103472883813083\n", + "Grad _memory_unit.bias_hh_l0: 9.516651334706694e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.848553023999557e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0003552522975951433\n", + "Grad _memory_unit.bias_hh_l1: 0.00020154681988060474\n", + "Data X Sample: tensor([[1.4523, 1.5832, 1.8197, 1.9242, 1.7979, 1.8931, 1.6608, 2.3055, 3.7396,\n", + " 4.3110, 4.6316, 4.1540, 4.0502, 4.0679, 3.8812, 3.6992, 3.6652, 3.6443,\n", + " 3.6468, 3.5279, 3.4596, 3.4262, 2.9640, 2.8917, 2.8340, 2.9358, 2.9703,\n", + " 2.9366, 3.0112, 3.1245, 3.1496, 3.3270, 3.9469, 2.9178, 4.6033, 4.8499,\n", + " 5.0617, 5.5682, 6.0152, 5.9296, 1.1836, 0.5974, 0.6871, 1.1711, 1.7165,\n", + " 1.8413, 1.1150, 1.7359]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5052, -0.7238, 0.2461, 0.0945, -1.7335, 0.1357, 0.0913, 0.1842,\n", + " 0.1372, 0.3519, -0.1522, -0.4594, -1.1354, -0.3916, 0.5925, -0.1398,\n", + " -0.0319, 0.7521, 0.0102, -1.1681, -0.9203, -0.5718, -1.3526, -0.0212,\n", + " 0.5424, 1.0456, 0.8511, 0.1838, -0.2973, -0.8841, 0.3663, -0.2649,\n", + " -0.6000, -0.0539, -0.6040, 0.5248, -0.5235, 0.7672, -0.7030, 0.3519,\n", + " 0.5086, 0.0873, 0.1151]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1792, -0.2001, -0.0399, -0.1149, 0.0247, 0.1108, 0.1441, 0.2108,\n", + " 0.1395, 0.1705, 0.1731, -0.1181, -0.1316, -0.2427, -0.1452, -0.2057,\n", + " -0.1686, -0.0141, -0.0223, -0.0859, -0.0774, -0.0512, -0.0311, -0.0681,\n", + " 0.0006, 0.0323, -0.0632, -0.1298, -0.1870, -0.1954, -0.1741, -0.1882,\n", + " -0.2482, -0.2555, -0.1501, -0.1295, -0.0234, 0.0449, 0.0051, 0.2220,\n", + " 0.2842, 0.2674, 0.1985]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002389904111623764\n", + "Grad encoder.fc1.bias: 0.00020476264762692153\n", + "Grad encoder.encoder.0.weight: 5.1360846555326134e-05\n", + "Grad encoder.encoder.0.bias: 0.00025918937171809375\n", + "Grad encoder.encoder.2.weight: 3.854119495372288e-05\n", + "Grad encoder.encoder.2.bias: 0.0003118232125416398\n", + "Grad encoder.encoder.4.weight: 0.00012270978186279535\n", + "Grad encoder.encoder.4.bias: 0.000791146419942379\n", + "Grad decoder.fc1.0.weight: 5.2880364819429815e-05\n", + "Grad decoder.fc1.0.bias: 0.0002513743529561907\n", + "Grad decoder.fc1.2.weight: 6.17995101492852e-05\n", + "Grad decoder.fc1.2.bias: 0.000517170992679894\n", + "Grad decoder.fc1.4.weight: 6.398672121576965e-05\n", + "Grad decoder.fc1.4.bias: 0.0004826235817745328\n", + "Grad decoder.fc2.weight: 0.00016371272795367986\n", + "Grad decoder.fc2.bias: 0.0021175264846533537\n", + "Grad _memory_unit.weight_ih_l0: 1.771468305378221e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.464439942035824e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.3287328076548874e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.76272531261202e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.28253323561512e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.8193753173109144e-05\n", + "Data X Sample: tensor([[1.3897, 1.6866, 1.8798, 1.9963, 1.9362, 2.0655, 2.1415, 1.8711, 2.8438,\n", + " 3.8592, 4.2065, 3.9982, 3.8105, 3.8116, 3.5508, 3.4558, 3.4954, 3.3793,\n", + " 3.2875, 3.3214, 3.3124, 3.3527, 2.7954, 2.7676, 2.8115, 2.8626, 2.8451,\n", + " 2.8999, 2.8204, 3.0426, 3.0376, 3.2331, 3.5267, 2.5974, 4.2993, 4.4948,\n", + " 4.8375, 5.2183, 5.7616, 5.4898, 1.2170, 0.6711, 0.7053, 1.1596, 1.6491,\n", + " 2.0471, 1.1694, 1.6811]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2601, 0.2005, -0.5467, 0.3628, 0.8743, 0.4974, 0.5649, 0.6489,\n", + " -1.0909, 0.0105, -0.0238, 0.4853, 0.3845, 0.4502, 0.8118, 0.5264,\n", + " 0.4838, 0.9231, 2.7616, 0.6980, 0.6904, 2.1920, 0.9792, 0.0089,\n", + " 0.0697, 0.3900, -2.1542, -0.8671, -0.0257, 0.3136, 0.0800, 0.3608,\n", + " 0.3095, 0.5636, 0.6814, 0.9773, 0.9271, -0.1220, 0.5826, 0.3634,\n", + " -0.3044, -1.2551, 0.3398]], device='cuda:0')\n", + "Prediction Sample: tensor([[-1.9907e-01, -2.0754e-01, -4.3909e-02, -1.3032e-01, 9.8426e-04,\n", + " 1.0208e-01, 1.5328e-01, 2.2463e-01, 1.2337e-01, 1.5951e-01,\n", + " 1.9027e-01, -1.2760e-01, -1.3485e-01, -2.5293e-01, -1.5246e-01,\n", + " -2.0068e-01, -1.6998e-01, -1.7968e-02, -3.9038e-02, -9.1036e-02,\n", + " -8.5784e-02, -4.8299e-02, -3.0556e-02, -5.5274e-02, 5.3421e-04,\n", + " 3.6362e-02, -5.6659e-02, -1.2851e-01, -1.7917e-01, -1.7229e-01,\n", + " -1.7446e-01, -1.9497e-01, -2.3650e-01, -2.6784e-01, -1.4284e-01,\n", + " -1.4643e-01, -1.9041e-02, 3.4843e-02, 9.2395e-05, 2.5207e-01,\n", + " 2.9498e-01, 2.8269e-01, 2.0253e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000946336833294481\n", + "Grad encoder.fc1.bias: 0.0007175033679232001\n", + "Grad encoder.encoder.0.weight: 0.0002454946225043386\n", + "Grad encoder.encoder.0.bias: 0.0009242644300684333\n", + "Grad encoder.encoder.2.weight: 0.00017809640849009156\n", + "Grad encoder.encoder.2.bias: 0.0011427955469116569\n", + "Grad encoder.encoder.4.weight: 0.000602648826315999\n", + "Grad encoder.encoder.4.bias: 0.0035204123705625534\n", + "Grad decoder.fc1.0.weight: 0.00020996358944103122\n", + "Grad decoder.fc1.0.bias: 0.0010612969053909183\n", + "Grad decoder.fc1.2.weight: 0.0001610355102457106\n", + "Grad decoder.fc1.2.bias: 0.0014739918988198042\n", + "Grad decoder.fc1.4.weight: 0.00011081279080826789\n", + "Grad decoder.fc1.4.bias: 0.0008684227941557765\n", + "Grad decoder.fc2.weight: 0.00013469478290062398\n", + "Grad decoder.fc2.bias: 0.0022090966813266277\n", + "Grad _memory_unit.weight_ih_l0: 7.14409543434158e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00010835969442268834\n", + "Grad _memory_unit.bias_hh_l0: 8.521790005033836e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.586740422178991e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0003378125838935375\n", + "Grad _memory_unit.bias_hh_l1: 0.00019079689809586853\n", + "Data X Sample: tensor([[1.5711, 1.9080, 2.0090, 2.1603, 2.1770, 2.2202, 2.2894, 2.3551, 2.4776,\n", + " 2.3680, 2.4490, 2.5201, 2.4456, 2.3475, 2.3126, 2.3057, 2.2611, 2.3580,\n", + " 2.4594, 2.3916, 2.4511, 2.5995, 2.4580, 2.5634, 2.5187, 2.6041, 2.5281,\n", + " 2.5654, 2.2966, 2.5579, 2.3727, 2.5561, 2.4553, 1.6042, 2.1104, 1.9944,\n", + " 1.7816, 1.6564, 1.6163, 1.5661, 1.2791, 0.7289, 0.8064, 1.2917, 1.9543,\n", + " 2.1043, 1.3802, 2.0330]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4198, 0.4283, 1.5060, -0.9346, 0.1568, 1.4720, -1.0899, -0.4591,\n", + " 0.2234, -0.0338, 0.2786, 0.4754, -0.5291, 2.0161, 1.0211, -0.0526,\n", + " -0.0517, 0.0085, -0.5128, -0.2171, -0.8344, 0.1734, -0.5333, 0.6437,\n", + " -1.1680, -0.5290, 1.4204, 1.2236, 0.9319, 0.2190, -0.0674, 0.5917,\n", + " -0.0398, 0.9194, 0.3067, -0.2218, -0.8287, 0.0940, -0.5775, -1.7867,\n", + " -0.4665, -0.3448, 0.2330]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2570, 0.2792, 0.0553, 0.2207, 0.0868, -0.0807, -0.2494, -0.3235,\n", + " -0.0249, -0.0994, -0.1372, 0.1565, 0.1000, 0.1621, 0.1812, 0.2102,\n", + " 0.1753, 0.0332, 0.0910, 0.0590, 0.0597, 0.0170, -0.0127, -0.0590,\n", + " 0.0444, 0.1379, -0.0921, -0.0038, 0.0796, 0.1320, 0.1609, 0.1185,\n", + " 0.2537, 0.1906, 0.1339, 0.0977, 0.0201, 0.0061, -0.0663, -0.1859,\n", + " -0.1708, -0.1748, -0.2074]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00012031366350129247\n", + "Grad encoder.fc1.bias: 0.00023924445849843323\n", + "Grad encoder.encoder.0.weight: 3.507083238218911e-05\n", + "Grad encoder.encoder.0.bias: 0.0002274334110552445\n", + "Grad encoder.encoder.2.weight: 3.421046130824834e-05\n", + "Grad encoder.encoder.2.bias: 0.00017989228945225477\n", + "Grad encoder.encoder.4.weight: 0.00010952945740427822\n", + "Grad encoder.encoder.4.bias: 0.0004766584315802902\n", + "Grad decoder.fc1.0.weight: 6.552653212565929e-05\n", + "Grad decoder.fc1.0.bias: 0.0002861043030861765\n", + "Grad decoder.fc1.2.weight: 7.81393246143125e-05\n", + "Grad decoder.fc1.2.bias: 0.00044319775770418346\n", + "Grad decoder.fc1.4.weight: 9.01575549505651e-05\n", + "Grad decoder.fc1.4.bias: 0.0007249853806570172\n", + "Grad decoder.fc2.weight: 0.00011170628567924723\n", + "Grad decoder.fc2.bias: 0.00241389824077487\n", + "Grad _memory_unit.weight_ih_l0: 9.233177479472943e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.4199249057564884e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.8477461708243936e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.671448095905362e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.14562663435936e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.267002805136144e-05\n", + "Data X Sample: tensor([[1.1383, 1.2526, 1.4500, 1.4781, 1.5794, 1.5882, 1.6562, 1.7476, 1.8161,\n", + " 1.8593, 1.7353, 1.7313, 1.7599, 1.7313, 1.7376, 1.6561, 1.6416, 1.7158,\n", + " 1.8441, 1.7425, 1.8402, 1.8310, 1.8507, 1.8915, 1.8937, 1.8962, 1.7982,\n", + " 1.7946, 1.6236, 1.7784, 1.7288, 1.7602, 1.7512, 1.2358, 1.8163, 1.5834,\n", + " 1.3097, 1.1237, 0.7669, 0.8029, 0.9593, 0.5855, 0.5740, 0.9156, 1.4509,\n", + " 1.4867, 1.0946, 1.5951]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.9298, -1.1106, 0.7503, 1.3570, 1.9539, 0.2016, -0.7192, -1.0225,\n", + " 0.7149, 0.8894, 0.7015, -0.1374, 0.1879, 0.6744, 0.4701, -0.0117,\n", + " 0.0093, -0.3693, -1.5690, -0.0810, -0.7548, 0.1271, -1.8921, 1.0157,\n", + " -1.5541, 0.1706, 0.2226, -0.3980, -0.1319, 0.6346, 1.0475, 0.0519,\n", + " 0.5309, 0.4361, 0.6593, -0.3978, -0.4229, -0.0557, 0.7936, -2.1855,\n", + " 0.8119, 0.6773, 1.1822]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2329, 0.2167, 0.0321, 0.2012, 0.0664, -0.0631, -0.2184, -0.2964,\n", + " -0.0039, -0.0673, -0.1043, 0.1527, 0.0850, 0.1327, 0.1458, 0.1757,\n", + " 0.1345, 0.0309, 0.0850, 0.0287, 0.0449, 0.0149, 0.0032, -0.0634,\n", + " 0.0162, 0.1111, -0.0895, 0.0021, 0.0570, 0.1121, 0.1358, 0.1047,\n", + " 0.2237, 0.1690, 0.1094, 0.0779, -0.0053, -0.0028, -0.0662, -0.1598,\n", + " -0.1429, -0.1279, -0.1554]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00010840349568752572\n", + "Grad encoder.fc1.bias: 7.538419595221058e-05\n", + "Grad encoder.encoder.0.weight: 2.883255001506768e-05\n", + "Grad encoder.encoder.0.bias: 8.23841619421728e-05\n", + "Grad encoder.encoder.2.weight: 2.470031540724449e-05\n", + "Grad encoder.encoder.2.bias: 0.00010766586638055742\n", + "Grad encoder.encoder.4.weight: 7.605226710438728e-05\n", + "Grad encoder.encoder.4.bias: 0.000305304944049567\n", + "Grad decoder.fc1.0.weight: 4.385828287922777e-05\n", + "Grad decoder.fc1.0.bias: 0.00017568902694620192\n", + "Grad decoder.fc1.2.weight: 5.6538210628787056e-05\n", + "Grad decoder.fc1.2.bias: 0.0003096252912655473\n", + "Grad decoder.fc1.4.weight: 6.579089676961303e-05\n", + "Grad decoder.fc1.4.bias: 0.0004988458822481334\n", + "Grad decoder.fc2.weight: 9.079938899958506e-05\n", + "Grad decoder.fc2.bias: 0.002289022319018841\n", + "Grad _memory_unit.weight_ih_l0: 3.955778083764017e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.890327767905546e-06\n", + "Grad _memory_unit.bias_hh_l0: 4.081299721292453e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.8105321234761504e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.3956501031061634e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.2539254132425413e-05\n", + "Data X Sample: tensor([[1.4990, 1.7886, 1.9459, 2.0903, 2.0950, 2.1230, 2.0244, 2.7683, 3.9227,\n", + " 4.3142, 4.3810, 4.3059, 4.1478, 3.9888, 3.8409, 3.6924, 3.6353, 3.6521,\n", + " 3.5622, 3.5725, 3.4817, 3.2425, 2.9110, 2.8230, 2.8134, 3.0298, 3.1062,\n", + " 3.1568, 3.1292, 3.2227, 3.3525, 3.4901, 3.9007, 2.8744, 4.6719, 4.7793,\n", + " 5.0047, 5.4569, 6.1229, 5.8388, 1.2075, 0.7010, 0.7033, 1.2831, 1.8909,\n", + " 2.1558, 1.3938, 1.8297]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1649, 0.9884, 0.1252, 0.9812, 1.0626, -0.7401, -0.7736, 0.5958,\n", + " -0.7539, -0.5611, -0.5172, 0.7243, -1.3438, -0.6541, 0.2791, -1.0148,\n", + " -0.5784, -0.9506, 0.5024, 0.5314, 3.1098, -0.1531, -0.9147, -0.3996,\n", + " -0.3190, 0.3698, 0.2153, -1.2132, 0.0899, 0.8743, 0.7171, 0.3612,\n", + " 0.3708, 0.8544, -0.4180, -0.2465, 0.0059, -0.6423, 0.4008, 0.4785,\n", + " -0.7883, 0.0808, -0.1194]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2330, -0.2122, -0.0556, -0.1695, -0.0705, 0.0686, 0.1646, 0.2529,\n", + " 0.0725, 0.1268, 0.2111, -0.1544, -0.1291, -0.2549, -0.1686, -0.1823,\n", + " -0.1733, -0.0286, -0.0739, -0.0936, -0.0995, -0.0410, -0.0279, -0.0185,\n", + " -0.0062, 0.0333, -0.0348, -0.1070, -0.1392, -0.0944, -0.1563, -0.1900,\n", + " -0.1921, -0.2707, -0.1007, -0.1768, -0.0011, 0.0060, -0.0221, 0.3098,\n", + " 0.3033, 0.3070, 0.2045]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00019473209977149963\n", + "Grad encoder.fc1.bias: 0.0004298737912904471\n", + "Grad encoder.encoder.0.weight: 4.636157245840877e-05\n", + "Grad encoder.encoder.0.bias: 0.00034904159838333726\n", + "Grad encoder.encoder.2.weight: 3.9126811316236854e-05\n", + "Grad encoder.encoder.2.bias: 0.00035701104206964374\n", + "Grad encoder.encoder.4.weight: 0.00011254507990088314\n", + "Grad encoder.encoder.4.bias: 0.0008872343460097909\n", + "Grad decoder.fc1.0.weight: 5.9412530390545726e-05\n", + "Grad decoder.fc1.0.bias: 0.0003128889948129654\n", + "Grad decoder.fc1.2.weight: 7.594178896397352e-05\n", + "Grad decoder.fc1.2.bias: 0.0004250763449817896\n", + "Grad decoder.fc1.4.weight: 0.00010233398643322289\n", + "Grad decoder.fc1.4.bias: 0.0006734029739163816\n", + "Grad decoder.fc2.weight: 0.0001454156154068187\n", + "Grad decoder.fc2.bias: 0.0019130125874653459\n", + "Grad _memory_unit.weight_ih_l0: 1.4172544069879223e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.599816020345315e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.426731589366682e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.4756689021596685e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.805295510683209e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.5999808207852766e-05\n", + "Data X Sample: tensor([[2.5418, 3.0601, 3.3268, 3.6909, 3.6966, 4.0132, 3.9795, 4.0601, 4.0887,\n", + " 4.0788, 4.1208, 3.9359, 3.8149, 3.5308, 3.5685, 3.4832, 3.4152, 3.4857,\n", + " 3.5312, 3.6078, 3.6313, 3.4981, 3.1351, 3.1245, 2.9597, 2.8365, 2.8105,\n", + " 2.7775, 2.5915, 2.7642, 2.7926, 2.9899, 3.2363, 2.2931, 3.6326, 3.9621,\n", + " 4.2614, 4.7545, 5.2609, 4.9962, 2.1286, 1.1451, 1.1782, 2.1356, 3.0326,\n", + " 3.4824, 2.3252, 3.3857]], device='cuda:0')\n", + "Data Y Sample: tensor([[-8.5610e-01, -8.2876e-01, -3.1356e-01, -7.6536e-01, -6.9516e-01,\n", + " -6.6694e-01, -4.2510e-01, 8.1753e-02, 3.2215e-01, 5.2319e-01,\n", + " 5.9943e-01, 1.7776e-01, 1.0666e-01, 1.9377e-01, -2.1146e+00,\n", + " -9.6486e-01, 6.7484e-01, 1.9147e-02, -8.7053e-01, 6.5849e-02,\n", + " 9.0338e-02, 1.0236e+00, 5.0480e-01, 9.0945e-02, 8.9374e-02,\n", + " 3.7656e-01, 1.0619e+00, -3.6635e-04, 3.6331e-01, 8.3270e-01,\n", + " 8.7252e-02, 7.7464e-01, -7.3931e-01, -6.6200e-01, -5.4234e-02,\n", + " -4.5781e-01, -7.3533e-01, -8.2662e-01, 2.1721e-02, 8.8957e-01,\n", + " 7.1673e-01, -3.9504e-01, -2.8918e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1389, -0.1553, -0.0542, -0.1475, -0.0731, 0.0353, 0.1061, 0.1968,\n", + " 0.0695, 0.1255, 0.1105, -0.1298, -0.0817, -0.1633, -0.1410, -0.1708,\n", + " -0.1723, -0.0317, -0.0259, -0.0626, -0.0631, -0.0497, -0.0322, -0.0284,\n", + " -0.0375, -0.0015, -0.0252, -0.0424, -0.0879, -0.0681, -0.0932, -0.1075,\n", + " -0.1590, -0.1628, -0.0557, -0.1184, 0.0101, 0.0142, -0.0557, 0.2039,\n", + " 0.2347, 0.2322, 0.1696]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00104458665009588\n", + "Grad encoder.fc1.bias: 0.0007106814300641418\n", + "Grad encoder.encoder.0.weight: 0.0002712525019887835\n", + "Grad encoder.encoder.0.bias: 0.0011713984422385693\n", + "Grad encoder.encoder.2.weight: 0.0002046993322437629\n", + "Grad encoder.encoder.2.bias: 0.0014559184201061726\n", + "Grad encoder.encoder.4.weight: 0.0006593678845092654\n", + "Grad encoder.encoder.4.bias: 0.0037663192488253117\n", + "Grad decoder.fc1.0.weight: 0.00024921586737036705\n", + "Grad decoder.fc1.0.bias: 0.0012644939124584198\n", + "Grad decoder.fc1.2.weight: 0.0001820300822146237\n", + "Grad decoder.fc1.2.bias: 0.0019058689940720797\n", + "Grad decoder.fc1.4.weight: 0.0001255743991350755\n", + "Grad decoder.fc1.4.bias: 0.000983880483545363\n", + "Grad decoder.fc2.weight: 0.00013156989007256925\n", + "Grad decoder.fc2.bias: 0.002140433294698596\n", + "Grad _memory_unit.weight_ih_l0: 9.907473577186465e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.000208866287721321\n", + "Grad _memory_unit.bias_hh_l0: 0.00014074482896830887\n", + "Grad _memory_unit.weight_ih_l1: 4.993628681404516e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.000493310100864619\n", + "Grad _memory_unit.bias_hh_l1: 0.00026957911904901266\n", + "Data X Sample: tensor([[1.5966, 1.6764, 1.8708, 2.0138, 2.1924, 2.2585, 2.4235, 2.4730, 2.6241,\n", + " 2.6397, 2.6108, 2.6642, 2.5788, 2.4974, 2.4916, 2.5382, 2.4733, 2.5398,\n", + " 2.5338, 2.4678, 2.5125, 2.3790, 2.3857, 2.3610, 2.3779, 2.4656, 2.4349,\n", + " 2.5410, 2.1544, 2.4039, 2.3412, 2.3599, 2.2220, 1.4601, 1.9143, 1.7390,\n", + " 1.6381, 1.4576, 1.6036, 1.5860, 1.2027, 0.7229, 0.7073, 1.2113, 1.8235,\n", + " 2.0014, 1.3122, 1.9470]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3163, 0.5331, 0.2487, -0.1719, 0.0925, -0.1070, 0.1978, -0.2822,\n", + " -0.7182, -0.4323, -0.3160, -0.7192, 1.2871, 0.2561, -0.0421, 0.5162,\n", + " 0.7041, 0.1043, 0.6429, -0.3912, 1.2491, -0.7271, 0.2974, 1.1294,\n", + " -0.3059, 0.0586, 0.4153, -0.1657, -0.0218, 0.3402, 1.5842, 1.6401,\n", + " -0.0599, 0.7930, 1.0343, 0.6202, 0.1343, 0.1511, -0.0156, -0.1706,\n", + " -0.3356, -0.6357, -0.9753]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4579, 0.4493, 0.0974, 0.4725, 0.1847, -0.1208, -0.4166, -0.5751,\n", + " -0.0684, -0.1966, -0.2263, 0.2621, 0.1925, 0.2973, 0.3267, 0.3748,\n", + " 0.3454, 0.1107, 0.1422, 0.1128, 0.1015, 0.0285, 0.0092, -0.0178,\n", + " 0.0846, 0.1845, -0.1729, 0.0362, 0.1731, 0.2403, 0.2870, 0.2298,\n", + " 0.4530, 0.3690, 0.2642, 0.1548, -0.0088, -0.0120, -0.0937, -0.3527,\n", + " -0.3755, -0.3077, -0.3437]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 7.420242036459967e-05\n", + "Grad encoder.fc1.bias: 0.0002238780725747347\n", + "Grad encoder.encoder.0.weight: 1.955943116627168e-05\n", + "Grad encoder.encoder.0.bias: 0.00015613248979207128\n", + "Grad encoder.encoder.2.weight: 2.2943277144804597e-05\n", + "Grad encoder.encoder.2.bias: 0.00017551888595335186\n", + "Grad encoder.encoder.4.weight: 7.291532529052347e-05\n", + "Grad encoder.encoder.4.bias: 0.0003169075644109398\n", + "Grad decoder.fc1.0.weight: 4.004714355687611e-05\n", + "Grad decoder.fc1.0.bias: 0.00018353952327743173\n", + "Grad decoder.fc1.2.weight: 7.92069622548297e-05\n", + "Grad decoder.fc1.2.bias: 0.0003429358475841582\n", + "Grad decoder.fc1.4.weight: 9.788850729819387e-05\n", + "Grad decoder.fc1.4.bias: 0.0005041860276833177\n", + "Grad decoder.fc2.weight: 0.00012953061377629638\n", + "Grad decoder.fc2.bias: 0.002213885076344013\n", + "Grad _memory_unit.weight_ih_l0: 4.3990753511025105e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.566784158057999e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.398812497034669e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.119866621796973e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.16032962675672e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.177102396672126e-05\n", + "Data X Sample: tensor([[1.5372, 1.8090, 1.8107, 2.0182, 2.1053, 2.4176, 2.3387, 2.4488, 2.5313,\n", + " 2.5370, 2.5886, 2.6408, 2.5411, 2.4020, 2.4765, 2.3864, 2.3271, 2.4083,\n", + " 2.4656, 2.5143, 2.4953, 2.4326, 2.4026, 2.4126, 2.4643, 2.4604, 2.4215,\n", + " 2.3860, 2.1370, 2.2729, 2.2922, 2.2549, 2.2726, 1.4829, 2.0173, 1.8169,\n", + " 1.6538, 1.5027, 1.6036, 1.6143, 1.1979, 0.7269, 0.7073, 1.1855, 1.8513,\n", + " 2.0814, 1.3598, 1.9001]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.1741, -1.4907, -1.2292, -0.6460, 1.0964, 0.0693, 0.2625, -0.0594,\n", + " 0.2381, 0.2480, 0.1513, 1.1969, -1.0068, 0.3255, 1.4203, 0.4702,\n", + " -1.9553, -0.4866, 1.0112, 0.2872, 0.6713, 0.6031, 0.4153, 0.6068,\n", + " 0.6701, 0.4304, 0.0594, -0.4441, 0.2676, -0.3710, -0.1702, -0.4817,\n", + " -1.4757, 0.1924, 0.7086, -0.6567, 0.6097, 0.0940, 0.2870, 0.9306,\n", + " 0.0871, -0.0799, -0.6078]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5151, 0.4926, 0.1127, 0.5381, 0.2169, -0.1246, -0.4620, -0.6279,\n", + " -0.1025, -0.2361, -0.2637, 0.2857, 0.2115, 0.3402, 0.3666, 0.4229,\n", + " 0.3793, 0.1371, 0.1562, 0.1403, 0.1165, 0.0411, 0.0270, 0.0065,\n", + " 0.0894, 0.1856, -0.1798, 0.0399, 0.1951, 0.2830, 0.3196, 0.2702,\n", + " 0.4979, 0.4177, 0.3009, 0.1849, -0.0292, -0.0186, -0.0937, -0.4096,\n", + " -0.4274, -0.3480, -0.3906]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00014191096124704927\n", + "Grad encoder.fc1.bias: 0.0001122433168347925\n", + "Grad encoder.encoder.0.weight: 4.859762702835724e-05\n", + "Grad encoder.encoder.0.bias: 0.00011504066060297191\n", + "Grad encoder.encoder.2.weight: 4.1038547351490706e-05\n", + "Grad encoder.encoder.2.bias: 0.00012418653932400048\n", + "Grad encoder.encoder.4.weight: 0.00012224665260873735\n", + "Grad encoder.encoder.4.bias: 0.00035811000270769\n", + "Grad decoder.fc1.0.weight: 4.7141646064119413e-05\n", + "Grad decoder.fc1.0.bias: 0.00015181241906248033\n", + "Grad decoder.fc1.2.weight: 7.31046311557293e-05\n", + "Grad decoder.fc1.2.bias: 0.0002702407364267856\n", + "Grad decoder.fc1.4.weight: 7.405148062389344e-05\n", + "Grad decoder.fc1.4.bias: 0.0003760861582122743\n", + "Grad decoder.fc2.weight: 0.0001264568418264389\n", + "Grad decoder.fc2.bias: 0.0020825474057346582\n", + "Grad _memory_unit.weight_ih_l0: 4.435760274645872e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.794699518446578e-06\n", + "Grad _memory_unit.bias_hh_l0: 3.72059957953752e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.4184823814721312e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.776349356281571e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.4476455362455454e-05\n", + "Data X Sample: tensor([[1.4968, 1.6502, 1.7866, 1.9591, 2.0216, 2.1819, 2.3896, 2.0698, 3.1928,\n", + " 4.1878, 4.2319, 4.2572, 4.0368, 3.9016, 3.8232, 3.4859, 3.5001, 3.5592,\n", + " 3.5952, 3.6618, 3.4645, 3.3603, 3.0122, 2.8401, 2.9166, 2.9227, 2.9330,\n", + " 3.0549, 3.1188, 3.1179, 3.2126, 3.4431, 3.8127, 2.7576, 4.5665, 4.9496,\n", + " 5.0558, 5.5099, 6.0469, 5.8700, 1.0834, 0.6671, 0.6609, 1.0850, 1.6887,\n", + " 1.7555, 1.1558, 1.8375]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5828, -0.1960, 0.2684, -0.4709, -2.3370, -1.0556, 0.9882, 0.7602,\n", + " 0.5290, 0.9808, 0.5528, -0.1302, -0.5128, -0.6160, -1.3965, -1.1875,\n", + " -0.2859, 0.3328, -0.1948, -0.2885, 0.5312, 0.6624, -1.1439, 0.8561,\n", + " 1.4068, 1.3654, 0.4275, 1.0813, 0.9613, 0.6322, -1.4169, -0.3026,\n", + " -1.2205, -0.7199, 0.0766, -0.5135, 0.1343, -0.0751, 0.0040, 0.6869,\n", + " 0.9761, 0.9063, 0.3681]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2485, -0.2675, -0.0380, -0.0831, 0.1067, 0.1978, 0.2385, 0.3090,\n", + " 0.1893, 0.2221, 0.2737, -0.1815, -0.2045, -0.3695, -0.1878, -0.2857,\n", + " -0.1953, 0.0104, -0.0261, -0.1015, -0.1173, -0.0540, -0.0310, -0.0675,\n", + " 0.0321, 0.0470, -0.1556, -0.2358, -0.2948, -0.2715, -0.2521, -0.2743,\n", + " -0.3453, -0.3637, -0.2249, -0.1899, -0.0495, 0.0484, 0.0529, 0.3269,\n", + " 0.3621, 0.3980, 0.2877]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0017680166056379676\n", + "Grad encoder.fc1.bias: 0.0011659874580800533\n", + "Grad encoder.encoder.0.weight: 0.0004679877310991287\n", + "Grad encoder.encoder.0.bias: 0.0019464688375592232\n", + "Grad encoder.encoder.2.weight: 0.0003511382092256099\n", + "Grad encoder.encoder.2.bias: 0.00234140339307487\n", + "Grad encoder.encoder.4.weight: 0.0011337690521031618\n", + "Grad encoder.encoder.4.bias: 0.006509097293019295\n", + "Grad decoder.fc1.0.weight: 0.00039146290509961545\n", + "Grad decoder.fc1.0.bias: 0.0018337450455874205\n", + "Grad decoder.fc1.2.weight: 0.0002665042120497674\n", + "Grad decoder.fc1.2.bias: 0.0029417879413813353\n", + "Grad decoder.fc1.4.weight: 0.0001598161761648953\n", + "Grad decoder.fc1.4.bias: 0.0015524214832112193\n", + "Grad decoder.fc2.weight: 0.00019180012168362737\n", + "Grad decoder.fc2.bias: 0.0028693038038909435\n", + "Grad _memory_unit.weight_ih_l0: 0.00015758730296511203\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0002820212102960795\n", + "Grad _memory_unit.bias_hh_l0: 0.0002011573378695175\n", + "Grad _memory_unit.weight_ih_l1: 7.700103742536157e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.000770089915022254\n", + "Grad _memory_unit.bias_hh_l1: 0.0004213654901832342\n", + "Data X Sample: tensor([[2.7126, 3.2364, 3.8061, 3.9511, 4.1286, 4.1413, 4.1351, 4.4207, 4.3035,\n", + " 4.1910, 4.4254, 4.3137, 4.0280, 3.7789, 3.6114, 3.5638, 3.5017, 3.5476,\n", + " 3.5704, 3.4312, 3.4498, 3.2807, 2.8676, 2.6932, 2.6707, 2.7268, 2.8398,\n", + " 2.8632, 2.8447, 3.0262, 3.0201, 3.1087, 3.4211, 2.5173, 4.1130, 4.7015,\n", + " 4.9595, 5.5231, 6.1736, 5.8984, 2.1429, 1.2845, 1.2692, 2.3164, 3.3894,\n", + " 3.8083, 2.4884, 3.6359]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3264, -0.5306, -0.1780, -0.1357, -0.1394, -0.3805, 0.7017, 0.3193,\n", + " 0.8298, 0.3942, -0.6037, -0.0463, -0.7976, 0.1338, 0.1245, -0.3185,\n", + " -0.4610, -1.2043, -0.5568, -0.0847, -0.1110, 0.0372, -0.8291, 0.5645,\n", + " 0.3424, -0.0773, -0.2481, 0.5356, 0.1757, -0.2033, -0.1161, -0.7322,\n", + " -0.3139, -0.8719, 0.3676, 0.4247, -0.4931, -0.6223, 0.0000, 0.1609,\n", + " -1.1262, 0.0595, -0.1476]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2179, -0.2342, -0.0384, -0.1067, 0.0395, 0.1449, 0.1878, 0.2581,\n", + " 0.1429, 0.1806, 0.2278, -0.1557, -0.1642, -0.3004, -0.1600, -0.2390,\n", + " -0.1888, -0.0071, -0.0361, -0.0956, -0.0976, -0.0456, -0.0310, -0.0595,\n", + " 0.0139, 0.0435, -0.1063, -0.1720, -0.2271, -0.2054, -0.2035, -0.2217,\n", + " -0.2782, -0.3059, -0.1835, -0.1688, -0.0329, 0.0358, 0.0236, 0.2950,\n", + " 0.3252, 0.3315, 0.2373]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001785879721865058\n", + "Grad encoder.fc1.bias: 0.00016149901784956455\n", + "Grad encoder.encoder.0.weight: 4.524729956756346e-05\n", + "Grad encoder.encoder.0.bias: 0.00011927470768569037\n", + "Grad encoder.encoder.2.weight: 3.73535804101266e-05\n", + "Grad encoder.encoder.2.bias: 0.00020609247440006584\n", + "Grad encoder.encoder.4.weight: 9.805725130718201e-05\n", + "Grad encoder.encoder.4.bias: 0.0006132216658443213\n", + "Grad decoder.fc1.0.weight: 5.2378629334270954e-05\n", + "Grad decoder.fc1.0.bias: 0.00029552954947575927\n", + "Grad decoder.fc1.2.weight: 6.397243123501539e-05\n", + "Grad decoder.fc1.2.bias: 0.00031358940759673715\n", + "Grad decoder.fc1.4.weight: 6.31206639809534e-05\n", + "Grad decoder.fc1.4.bias: 0.00042482628487050533\n", + "Grad decoder.fc2.weight: 9.987273369915783e-05\n", + "Grad decoder.fc2.bias: 0.001739617669954896\n", + "Grad _memory_unit.weight_ih_l0: 6.256379492697306e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.0187741029076278e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.1036270734621212e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.326724026919692e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.126989657990634e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.702134563354775e-05\n", + "Data X Sample: tensor([[1.7217, 1.9153, 2.0796, 2.2740, 2.3973, 2.3734, 2.5051, 2.6632, 2.5875,\n", + " 2.6018, 2.5759, 2.7031, 2.5411, 2.5083, 2.4942, 2.4807, 2.4639, 2.5011,\n", + " 2.5627, 2.5106, 2.4536, 2.5796, 2.5616, 2.6092, 2.5956, 2.7059, 2.6586,\n", + " 2.7245, 2.3521, 2.4694, 2.3342, 2.2687, 2.0944, 1.3548, 1.8653, 1.7220,\n", + " 1.6951, 1.6114, 1.6353, 1.4640, 1.3316, 0.7468, 0.7397, 1.3720, 2.0495,\n", + " 2.2930, 1.4686, 2.0955]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5700, 0.1845, -0.0232, -0.3102, 0.3612, -0.2892, -1.2673, 0.0097,\n", + " -0.1229, -0.1195, -0.1443, -1.4449, 0.1824, 0.3545, -0.6751, -0.1365,\n", + " 0.8040, 0.4123, -0.0224, 0.9836, 0.2182, 0.8967, 0.2315, -0.9242,\n", + " 0.3342, 0.0119, 0.0709, 0.0518, 0.3271, -0.3839, -0.1015, -0.9357,\n", + " 0.5704, 0.3538, -0.2558, -0.3732, 0.7922, 0.5417, 0.0545, -0.9707,\n", + " 0.6509, -0.3759, -1.4721]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4485, 0.3811, 0.0890, 0.4050, 0.1633, -0.1259, -0.4076, -0.5021,\n", + " -0.1648, -0.2473, -0.2823, 0.2117, 0.1706, 0.3231, 0.3236, 0.3371,\n", + " 0.2587, 0.1180, 0.1090, 0.1322, 0.0860, 0.0511, 0.0423, 0.0300,\n", + " 0.0582, 0.1150, -0.0980, 0.0266, 0.1888, 0.2859, 0.2681, 0.2627,\n", + " 0.3789, 0.3353, 0.2387, 0.1750, -0.0624, -0.0169, -0.0546, -0.3677,\n", + " -0.3405, -0.2870, -0.3425]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002841008536051959\n", + "Grad encoder.fc1.bias: 0.000414465757785365\n", + "Grad encoder.encoder.0.weight: 5.952239007456228e-05\n", + "Grad encoder.encoder.0.bias: 0.0002488879254087806\n", + "Grad encoder.encoder.2.weight: 4.715972318081185e-05\n", + "Grad encoder.encoder.2.bias: 0.00023265690833795816\n", + "Grad encoder.encoder.4.weight: 0.00010732229566201568\n", + "Grad encoder.encoder.4.bias: 0.00045710880658589303\n", + "Grad decoder.fc1.0.weight: 5.314899317454547e-05\n", + "Grad decoder.fc1.0.bias: 0.0001889197446871549\n", + "Grad decoder.fc1.2.weight: 7.316088886000216e-05\n", + "Grad decoder.fc1.2.bias: 0.0003908982325810939\n", + "Grad decoder.fc1.4.weight: 7.57360685383901e-05\n", + "Grad decoder.fc1.4.bias: 0.0005299521144479513\n", + "Grad decoder.fc2.weight: 0.00015320746751967818\n", + "Grad decoder.fc2.bias: 0.0018899132264778018\n", + "Grad _memory_unit.weight_ih_l0: 8.583592716604471e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.421374599885894e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.656036127125844e-06\n", + "Grad _memory_unit.weight_ih_l1: 3.69199256056163e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.094394145999104e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.6923355108010583e-05\n", + "Data X Sample: tensor([[2.5428, 2.9392, 2.6161, 2.6720, 2.6465, 3.3148, 3.6976, 3.8969, 4.0106,\n", + " 3.9224, 4.0954, 3.9826, 4.0413, 3.7353, 3.6618, 3.4421, 3.4262, 3.4567,\n", + " 3.3722, 3.4498, 3.2167, 3.3022, 2.8074, 2.7504, 2.7458, 2.7921, 2.7998,\n", + " 2.7204, 2.6643, 2.8363, 2.8731, 2.9043, 3.1087, 2.3068, 3.7674, 4.1397,\n", + " 4.3774, 4.8129, 5.3750, 5.2771, 1.7420, 0.9539, 1.0085, 1.5586, 2.2834,\n", + " 2.6132, 1.7133, 2.1659]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0753, 0.2427, 0.9461, -0.5267, 1.0429, -0.2537, 0.4059, 0.1259,\n", + " 0.3341, 0.3273, 0.1641, 0.2245, 0.4693, 0.3979, -0.4551, -0.1357,\n", + " -0.4005, -0.3962, -0.7445, -0.2268, 0.2410, -0.6674, 0.0558, -0.7329,\n", + " -0.2042, -0.6176, 0.7687, 0.7895, 0.7516, 0.4109, -0.7156, 2.0287,\n", + " 0.2146, -0.1936, -0.1016, -0.4958, 0.7316, -0.0597, -0.0231, 0.4596,\n", + " -0.0032, 0.1163, 0.2767]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2083, -0.2410, -0.0328, -0.0859, 0.0876, 0.1768, 0.2038, 0.2666,\n", + " 0.1743, 0.2057, 0.2336, -0.1601, -0.1762, -0.3178, -0.1651, -0.2640,\n", + " -0.2048, -0.0007, -0.0169, -0.0930, -0.0932, -0.0475, -0.0322, -0.0751,\n", + " 0.0266, 0.0477, -0.1391, -0.1973, -0.2641, -0.2542, -0.2279, -0.2345,\n", + " -0.3213, -0.3190, -0.2178, -0.1668, -0.0438, 0.0488, 0.0422, 0.2887,\n", + " 0.3338, 0.3437, 0.2569]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0029594004154205322\n", + "Grad encoder.fc1.bias: 0.0013725253520533442\n", + "Grad encoder.encoder.0.weight: 0.0007216156809590757\n", + "Grad encoder.encoder.0.bias: 0.00219592428766191\n", + "Grad encoder.encoder.2.weight: 0.0005197413847781718\n", + "Grad encoder.encoder.2.bias: 0.0026331760454922915\n", + "Grad encoder.encoder.4.weight: 0.0017095910152420402\n", + "Grad encoder.encoder.4.bias: 0.008194901049137115\n", + "Grad decoder.fc1.0.weight: 0.0005496772937476635\n", + "Grad decoder.fc1.0.bias: 0.0020360946655273438\n", + "Grad decoder.fc1.2.weight: 0.00031672301702201366\n", + "Grad decoder.fc1.2.bias: 0.0033564914483577013\n", + "Grad decoder.fc1.4.weight: 0.00017561671847943217\n", + "Grad decoder.fc1.4.bias: 0.001501488615758717\n", + "Grad decoder.fc2.weight: 0.00023398110351990908\n", + "Grad decoder.fc2.bias: 0.002235203981399536\n", + "Grad _memory_unit.weight_ih_l0: 0.0002308935218024999\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0003225379914510995\n", + "Grad _memory_unit.bias_hh_l0: 0.00025102810468524694\n", + "Grad _memory_unit.weight_ih_l1: 0.00010187877342104912\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.001014170004054904\n", + "Grad _memory_unit.bias_hh_l1: 0.0005756572354584932\n", + "Data X Sample: tensor([[1.5626, 1.7682, 1.9173, 1.9613, 2.1326, 2.3012, 2.4034, 2.4900, 2.5435,\n", + " 2.7029, 2.6996, 2.7265, 2.5788, 2.5792, 2.5219, 2.4219, 2.4089, 2.5108,\n", + " 2.5792, 2.4920, 2.4413, 2.4219, 2.3761, 2.3820, 2.3460, 2.4656, 2.3816,\n", + " 2.4390, 2.1439, 2.2697, 2.2852, 2.2632, 2.2110, 1.4715, 1.9536, 1.8339,\n", + " 1.6184, 1.5133, 1.6290, 1.5491, 1.2313, 0.7229, 0.7073, 1.1711, 1.7799,\n", + " 1.9099, 1.4074, 1.8922]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.1958, 1.1346, -1.9324, 0.3740, 0.2028, -0.4810, -1.8411, -1.1976,\n", + " -1.1851, -0.8534, -0.8344, -3.3774, 0.5390, 1.0262, 0.7894, 0.8938,\n", + " 0.5441, -0.6665, -0.5482, 0.1283, 0.6867, 0.8113, 0.7548, 1.6879,\n", + " -1.2790, 1.5267, -0.1352, 0.7226, 1.2087, 0.3123, -2.2459, 2.1013,\n", + " 0.2076, 0.9126, 0.4126, 0.6765, 0.0000, -0.0597, 1.1574, -0.8859,\n", + " -0.6557, -0.6032, -0.0580]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3996, 0.3466, 0.0820, 0.3266, 0.1491, -0.1423, -0.3792, -0.4290,\n", + " -0.2152, -0.2624, -0.3144, 0.1589, 0.1504, 0.3129, 0.3058, 0.2900,\n", + " 0.2006, 0.1130, 0.0897, 0.1540, 0.0894, 0.0635, 0.0428, 0.0361,\n", + " 0.0610, 0.0824, -0.0463, 0.0225, 0.1900, 0.3024, 0.2525, 0.2589,\n", + " 0.3107, 0.2986, 0.2251, 0.1801, -0.0687, -0.0033, -0.0274, -0.3541,\n", + " -0.2912, -0.2764, -0.3455]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0017740040784701705\n", + "Grad encoder.fc1.bias: 0.0012479419820010662\n", + "Grad encoder.encoder.0.weight: 0.0004228593606967479\n", + "Grad encoder.encoder.0.bias: 0.0017669769003987312\n", + "Grad encoder.encoder.2.weight: 0.00030995195265859365\n", + "Grad encoder.encoder.2.bias: 0.0022391565144062042\n", + "Grad encoder.encoder.4.weight: 0.0010891018901020288\n", + "Grad encoder.encoder.4.bias: 0.006839744746685028\n", + "Grad decoder.fc1.0.weight: 0.000379648496164009\n", + "Grad decoder.fc1.0.bias: 0.001620967872440815\n", + "Grad decoder.fc1.2.weight: 0.00020465906709432602\n", + "Grad decoder.fc1.2.bias: 0.003076702356338501\n", + "Grad decoder.fc1.4.weight: 0.00017911479517351836\n", + "Grad decoder.fc1.4.bias: 0.0014356133760884404\n", + "Grad decoder.fc2.weight: 0.0003126210649497807\n", + "Grad decoder.fc2.bias: 0.0021165781654417515\n", + "Grad _memory_unit.weight_ih_l0: 0.00015871670620981604\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0002756090252660215\n", + "Grad _memory_unit.bias_hh_l0: 0.00020195264369249344\n", + "Grad _memory_unit.weight_ih_l1: 8.798331691650674e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0006909935618750751\n", + "Grad _memory_unit.bias_hh_l1: 0.0004113139002583921\n", + "Data X Sample: tensor([[2.1843, 1.8221, 2.0346, 2.0160, 2.0199, 1.9683, 3.7115, 4.0104, 4.0594,\n", + " 4.1199, 3.9781, 3.9554, 3.8060, 3.7298, 3.5029, 3.5857, 3.5158, 3.5824,\n", + " 3.5766, 3.2452, 3.2191, 3.2134, 2.9472, 2.7371, 2.6820, 2.7843, 2.7945,\n", + " 2.7734, 2.8170, 2.7609, 2.8731, 2.9319, 3.1637, 2.3709, 3.9488, 4.2394,\n", + " 4.5583, 4.9215, 5.4130, 5.2941, 1.1263, 0.6711, 0.7437, 1.2228, 1.8790,\n", + " 1.9556, 1.2510, 1.8141]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5812, -0.2843, -0.2792, -0.5448, -0.1943, 0.1508, 0.4116, 0.3359,\n", + " -0.1846, 0.1114, 0.4618, -0.8950, 0.0424, 0.6180, -0.3326, -0.6205,\n", + " 0.3246, 0.1148, -0.1141, 0.7444, 0.9001, 0.5680, -0.5686, 0.6385,\n", + " 0.2837, 4.5827, -0.3731, 0.5096, 0.3169, -0.3303, -0.3497, 0.4152,\n", + " -0.7346, -0.2489, -0.1174, -0.8602, 0.9727, 0.7428, -0.5970, 0.7524,\n", + " 0.7433, 0.8105, 1.1433]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1765, -0.2169, -0.0312, -0.0914, 0.0634, 0.1478, 0.1702, 0.2276,\n", + " 0.1542, 0.1866, 0.1953, -0.1396, -0.1462, -0.2665, -0.1461, -0.2366,\n", + " -0.2049, -0.0101, -0.0097, -0.0806, -0.0738, -0.0411, -0.0386, -0.0772,\n", + " 0.0170, 0.0429, -0.1165, -0.1560, -0.2285, -0.2274, -0.2041, -0.1987,\n", + " -0.2900, -0.2767, -0.2002, -0.1470, -0.0389, 0.0459, 0.0254, 0.2550,\n", + " 0.3040, 0.2931, 0.2269]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00021182435739319772\n", + "Grad encoder.fc1.bias: 0.000331391318468377\n", + "Grad encoder.encoder.0.weight: 5.572942609433085e-05\n", + "Grad encoder.encoder.0.bias: 0.00021048146300017834\n", + "Grad encoder.encoder.2.weight: 3.810396447079256e-05\n", + "Grad encoder.encoder.2.bias: 0.0001665163872530684\n", + "Grad encoder.encoder.4.weight: 0.00010677199315978214\n", + "Grad encoder.encoder.4.bias: 0.00021954718977212906\n", + "Grad decoder.fc1.0.weight: 4.1022762161446735e-05\n", + "Grad decoder.fc1.0.bias: 0.0001342405448667705\n", + "Grad decoder.fc1.2.weight: 6.972914707148448e-05\n", + "Grad decoder.fc1.2.bias: 0.00026093312771990895\n", + "Grad decoder.fc1.4.weight: 7.376599387498572e-05\n", + "Grad decoder.fc1.4.bias: 0.0003295818460173905\n", + "Grad decoder.fc2.weight: 0.0001456120517104864\n", + "Grad decoder.fc2.bias: 0.002092801034450531\n", + "Grad _memory_unit.weight_ih_l0: 3.1449021662410814e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.927359441353474e-06\n", + "Grad _memory_unit.bias_hh_l0: 2.905301244027214e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.2470330804935656e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.7547435820451938e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.4484754501609132e-05\n", + "Data X Sample: tensor([[1.5605, 1.8192, 2.0556, 2.1341, 2.1650, 2.2511, 2.4450, 2.5198, 2.5508,\n", + " 2.5876, 2.5949, 2.7207, 2.4834, 2.5247, 2.4740, 2.4958, 2.4529, 2.4199,\n", + " 2.5503, 2.3786, 2.5984, 2.4418, 2.5158, 2.4756, 2.5375, 2.5884, 2.5894,\n", + " 2.6184, 2.2966, 2.3548, 2.3412, 2.3046, 2.2638, 1.4875, 1.9487, 1.8534,\n", + " 1.6912, 1.6087, 1.6353, 1.5406, 1.2838, 0.7149, 0.6952, 1.3749, 1.9662,\n", + " 2.1329, 1.4754, 2.0330]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2873, 1.0299, -1.3710, 0.0536, -0.1418, -0.4199, -0.7781, -0.5167,\n", + " -1.1189, -0.2472, -0.5858, 0.7167, -0.1151, 0.2749, 0.1691, 0.1465,\n", + " 0.8740, -0.1449, -0.4416, 1.0324, -0.5216, 0.4807, -0.2597, -0.0129,\n", + " -0.0444, -0.0403, 0.1952, -0.2327, 0.7157, 0.2827, 0.7047, 1.4218,\n", + " 1.2495, -0.0079, 0.1682, 1.6428, -0.8471, -0.4903, 0.9175, -0.6150,\n", + " -0.7297, -0.6851, 0.1260]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4940, 0.4866, 0.1317, 0.3865, 0.2281, -0.2188, -0.4887, -0.5115,\n", + " -0.3749, -0.4145, -0.4809, 0.1569, 0.1876, 0.4236, 0.4133, 0.3790,\n", + " 0.2625, 0.1584, 0.1043, 0.2608, 0.1443, 0.1039, 0.0504, 0.0884,\n", + " 0.1210, 0.0815, -0.0151, 0.0278, 0.2737, 0.4509, 0.3506, 0.3505,\n", + " 0.3746, 0.4003, 0.3155, 0.2725, -0.0661, 0.0161, 0.0187, -0.4892,\n", + " -0.3905, -0.4161, -0.5137]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00034110769047401845\n", + "Grad encoder.fc1.bias: 0.00046368359471671283\n", + "Grad encoder.encoder.0.weight: 6.257273344090208e-05\n", + "Grad encoder.encoder.0.bias: 0.0002885451540350914\n", + "Grad encoder.encoder.2.weight: 3.87507097912021e-05\n", + "Grad encoder.encoder.2.bias: 0.00030812801560387015\n", + "Grad encoder.encoder.4.weight: 0.00010058470070362091\n", + "Grad encoder.encoder.4.bias: 0.0003677045169752091\n", + "Grad decoder.fc1.0.weight: 4.3548468966037035e-05\n", + "Grad decoder.fc1.0.bias: 0.000228755539865233\n", + "Grad decoder.fc1.2.weight: 4.544347393675707e-05\n", + "Grad decoder.fc1.2.bias: 0.00016239014803431928\n", + "Grad decoder.fc1.4.weight: 4.841553163714707e-05\n", + "Grad decoder.fc1.4.bias: 0.00023114209761843085\n", + "Grad decoder.fc2.weight: 0.00012253086606506258\n", + "Grad decoder.fc2.bias: 0.0016666515730321407\n", + "Grad _memory_unit.weight_ih_l0: 6.878039584989892e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.096338332397863e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.5928715583868325e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.8871231734228786e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.525226515601389e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.8134403692092746e-05\n", + "Data X Sample: tensor([[1.5669, 1.8206, 2.0060, 2.1887, 2.3477, 2.3366, 2.4019, 2.4858, 2.5606,\n", + " 2.5971, 2.6647, 2.5921, 2.5721, 2.4102, 2.4689, 2.4028, 2.3680, 2.4663,\n", + " 2.4037, 2.3953, 2.4291, 2.5214, 2.3953, 2.4336, 2.4361, 2.4656, 2.4801,\n", + " 2.4471, 2.1925, 2.2828, 2.2572, 2.1471, 1.8172, 1.1671, 1.5982, 1.6272,\n", + " 1.5181, 1.5106, 1.5085, 1.4157, 1.2552, 0.7508, 0.7781, 1.3232, 1.9504,\n", + " 2.1672, 1.3938, 1.9392]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5973, -0.2586, 0.6671, 0.7364, 0.4587, 0.5038, -0.3667, -0.4071,\n", + " -0.8121, -1.2963, -0.8088, 0.1905, 2.1539, -0.1490, 1.1070, 0.0289,\n", + " 0.4405, 0.0454, 0.9446, -0.0626, 1.1783, 0.3254, 0.3776, 0.7445,\n", + " 0.6038, 0.7812, 0.5244, 2.1122, 0.7986, 0.8811, 0.1562, 0.2536,\n", + " 0.9560, 1.1473, 0.3127, 0.3015, -1.0138, -0.7895, -0.5562, -1.1695,\n", + " -1.0337, -0.7655, -0.7338]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4900, 0.4785, 0.1359, 0.3572, 0.2219, -0.2231, -0.4950, -0.4911,\n", + " -0.4082, -0.4377, -0.5012, 0.1275, 0.1854, 0.4278, 0.4057, 0.3693,\n", + " 0.2425, 0.1556, 0.0939, 0.2732, 0.1388, 0.1027, 0.0533, 0.1136,\n", + " 0.1284, 0.0697, 0.0079, 0.0363, 0.2845, 0.4635, 0.3480, 0.3588,\n", + " 0.3567, 0.3943, 0.3068, 0.2769, -0.0606, 0.0198, 0.0327, -0.4871,\n", + " -0.3803, -0.4215, -0.5171]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.002160379197448492\n", + "Grad encoder.fc1.bias: 0.0009134399588219821\n", + "Grad encoder.encoder.0.weight: 0.0005017055664211512\n", + "Grad encoder.encoder.0.bias: 0.0011969449697062373\n", + "Grad encoder.encoder.2.weight: 0.0003132290730718523\n", + "Grad encoder.encoder.2.bias: 0.001060156966559589\n", + "Grad encoder.encoder.4.weight: 0.000921594095416367\n", + "Grad encoder.encoder.4.bias: 0.0029714410193264484\n", + "Grad decoder.fc1.0.weight: 0.0002563938032835722\n", + "Grad decoder.fc1.0.bias: 0.000727259845007211\n", + "Grad decoder.fc1.2.weight: 0.00021479191491380334\n", + "Grad decoder.fc1.2.bias: 0.001090064411982894\n", + "Grad decoder.fc1.4.weight: 0.00016819695883896202\n", + "Grad decoder.fc1.4.bias: 0.001045345445163548\n", + "Grad decoder.fc2.weight: 0.00015202602662611753\n", + "Grad decoder.fc2.bias: 0.003259874414652586\n", + "Grad _memory_unit.weight_ih_l0: 1.2334013263171073e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.6659496395732276e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.1154950698255561e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.712458682362922e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00014801661018282175\n", + "Grad _memory_unit.bias_hh_l1: 7.421609916491434e-05\n", + "Data X Sample: tensor([[1.6973, 1.8556, 2.0841, 2.1953, 2.3802, 2.4618, 2.5590, 2.7228, 2.7095,\n", + " 2.8214, 2.7504, 2.8024, 2.7142, 2.6229, 2.5849, 2.5683, 2.5205, 2.5727,\n", + " 2.6453, 2.5664, 2.6008, 2.6133, 2.6243, 2.5615, 2.6444, 2.6929, 2.5787,\n", + " 2.7163, 2.4492, 2.4957, 2.3587, 2.3847, 2.3232, 1.5424, 2.0394, 1.8971,\n", + " 1.7108, 1.6538, 1.6543, 1.5888, 1.3029, 0.7707, 0.7801, 1.4180, 2.0019,\n", + " 2.0814, 1.4006, 2.1503]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3129, 0.4510, -0.0407, 0.9605, 0.8117, 1.2632, 0.1427, -0.3700,\n", + " -0.2214, -0.4734, -0.1681, -0.4874, 0.8447, 0.5585, -0.0964, -0.3365,\n", + " -0.2124, -0.4551, 0.3440, 0.3159, 0.6351, 0.5149, 1.3112, 1.5865,\n", + " -0.4013, 0.0855, 0.1171, -0.4079, -0.7452, 0.0716, -0.0218, 0.5511,\n", + " 0.0538, 0.8258, 0.7318, 1.2097, -0.0457, 0.7357, 0.0040, -0.1852,\n", + " -0.3956, 0.0935, -0.2612]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5571, 0.5457, 0.1563, 0.3702, 0.2409, -0.2677, -0.5659, -0.5542,\n", + " -0.4880, -0.5316, -0.5775, 0.1352, 0.2126, 0.4945, 0.4586, 0.4200,\n", + " 0.2749, 0.1615, 0.0965, 0.3109, 0.1343, 0.1075, 0.0622, 0.1491,\n", + " 0.1663, 0.0679, 0.0215, 0.0503, 0.3499, 0.5389, 0.4009, 0.4018,\n", + " 0.4110, 0.4428, 0.3311, 0.3119, -0.0459, 0.0209, 0.0673, -0.5442,\n", + " -0.4508, -0.4920, -0.5790]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006369721377268434\n", + "Grad encoder.fc1.bias: 0.0008374751778319478\n", + "Grad encoder.encoder.0.weight: 0.00015021456056274474\n", + "Grad encoder.encoder.0.bias: 0.0007569842273369431\n", + "Grad encoder.encoder.2.weight: 0.00011750411795219406\n", + "Grad encoder.encoder.2.bias: 0.000759973016101867\n", + "Grad encoder.encoder.4.weight: 0.00034427596256136894\n", + "Grad encoder.encoder.4.bias: 0.0014747518580406904\n", + "Grad decoder.fc1.0.weight: 0.00013000998296774924\n", + "Grad decoder.fc1.0.bias: 0.0005458020605146885\n", + "Grad decoder.fc1.2.weight: 0.00014223845209926367\n", + "Grad decoder.fc1.2.bias: 0.0007414603023789823\n", + "Grad decoder.fc1.4.weight: 0.00013156834756955504\n", + "Grad decoder.fc1.4.bias: 0.0007106088451109827\n", + "Grad decoder.fc2.weight: 0.00014015026681590825\n", + "Grad decoder.fc2.bias: 0.0021560315508395433\n", + "Grad _memory_unit.weight_ih_l0: 1.5112621440493967e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.734345227712765e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.42955720750615e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.8768531491514295e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.04190494818613e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.3842908780789e-05\n", + "Data X Sample: tensor([[2.1737, 2.5736, 2.7483, 2.8687, 2.9266, 3.0128, 3.1075, 3.1927, 3.2124,\n", + " 3.4912, 3.4515, 3.4549, 3.3666, 3.3236, 3.2835, 3.2261, 3.1809, 3.2671,\n", + " 3.3226, 3.1559, 3.1112, 3.0036, 2.8893, 2.7943, 2.6613, 2.6171, 2.4988,\n", + " 2.5042, 2.1197, 2.2042, 2.1487, 2.1913, 2.2374, 1.4532, 2.3507, 2.6292,\n", + " 2.6410, 2.8040, 3.0234, 2.8513, 1.6656, 0.9380, 0.9701, 1.7538, 2.5965,\n", + " 2.8420, 1.8357, 2.3379]], device='cuda:0')\n", + "Data Y Sample: tensor([[-2.4878, -1.5387, -0.5379, -2.1508, -0.0874, 0.0169, 0.2838, 0.6094,\n", + " 0.0858, 0.8064, 0.6693, 1.4292, -0.2013, -0.1086, 0.3147, -0.7257,\n", + " -0.3942, 0.2813, -0.2934, -0.1050, -0.0158, 0.8615, -0.1809, -0.6431,\n", + " 1.7169, 1.5473, 0.4679, 0.2277, -0.1154, -0.5883, -0.1027, -1.1697,\n", + " -0.5149, -0.6899, -0.1155, -0.0845, -0.0274, -0.8198, -2.3004, 1.0594,\n", + " 0.8996, 0.5568, 0.4821]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 7.7872e-02, 3.2301e-02, 9.1859e-03, -1.0186e-01, -1.2758e-02,\n", + " -1.1989e-01, -1.7553e-01, -4.2460e-02, -2.1204e-01, -2.9525e-01,\n", + " -2.9554e-01, -5.0483e-02, -3.6555e-02, 1.7627e-01, 1.6881e-01,\n", + " -1.6257e-02, -7.3071e-02, -5.6921e-02, 2.9739e-02, 1.8086e-01,\n", + " -6.2438e-02, 3.9345e-02, 2.5546e-04, 1.2877e-01, 7.7381e-02,\n", + " 3.5157e-02, 1.4344e-01, 3.4716e-02, 1.5740e-01, 2.6515e-01,\n", + " 1.3051e-01, 1.9443e-01, 3.8580e-02, 9.0225e-02, -3.8968e-03,\n", + " 1.3953e-01, -1.4377e-02, 6.2303e-02, 4.6981e-02, -1.0864e-01,\n", + " 3.7663e-02, -1.4376e-01, -1.5287e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00043506192741915584\n", + "Grad encoder.fc1.bias: 0.0003771754854824394\n", + "Grad encoder.encoder.0.weight: 9.006122127175331e-05\n", + "Grad encoder.encoder.0.bias: 0.0003535729192662984\n", + "Grad encoder.encoder.2.weight: 6.845637108199298e-05\n", + "Grad encoder.encoder.2.bias: 0.00033329802681691945\n", + "Grad encoder.encoder.4.weight: 0.0001971932069864124\n", + "Grad encoder.encoder.4.bias: 0.0004210375191178173\n", + "Grad decoder.fc1.0.weight: 8.582030568504706e-05\n", + "Grad decoder.fc1.0.bias: 0.00033219694159924984\n", + "Grad decoder.fc1.2.weight: 9.713585313875228e-05\n", + "Grad decoder.fc1.2.bias: 0.00044630825868807733\n", + "Grad decoder.fc1.4.weight: 9.769682219484821e-05\n", + "Grad decoder.fc1.4.bias: 0.0004919663770124316\n", + "Grad decoder.fc2.weight: 0.0001391892583342269\n", + "Grad decoder.fc2.bias: 0.002170226303860545\n", + "Grad _memory_unit.weight_ih_l0: 5.6984126786119305e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.3315426258486696e-05\n", + "Grad _memory_unit.bias_hh_l0: 7.615604317834368e-06\n", + "Grad _memory_unit.weight_ih_l1: 3.382988325029146e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.476008664118126e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.843193942680955e-05\n", + "Data X Sample: tensor([[1.4152, 1.4638, 1.7400, 1.7361, 1.8577, 1.8931, 2.0506, 1.8909, 3.4028,\n", + " 4.0788, 4.1779, 4.3156, 4.1855, 3.9752, 3.6517, 3.7307, 3.6809, 3.5360,\n", + " 3.6695, 3.4870, 3.4915, 3.5777, 3.2171, 2.8649, 2.8002, 2.9070, 2.8291,\n", + " 2.8917, 2.8759, 3.1212, 3.1181, 3.3740, 3.7203, 2.7256, 4.6253, 4.9763,\n", + " 5.3724, 5.4940, 6.0215, 5.6884, 1.0977, 0.5994, 0.6306, 1.0994, 1.5302,\n", + " 1.6697, 1.0334, 1.5482]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3150, -0.6694, 0.4216, -0.1784, 0.0566, 0.4093, 0.5397, 1.0206,\n", + " 0.5999, 0.4327, 0.1877, -1.1981, -0.8740, -0.5994, -0.1293, -1.2599,\n", + " -0.2761, 0.0034, -0.5648, -0.4242, -0.1668, -0.0579, 0.1487, 0.5843,\n", + " -1.4112, 0.0398, 0.2515, 0.1600, -0.0358, -0.2060, -0.5117, -0.6684,\n", + " -0.1582, -0.8254, -0.1318, -0.4426, -1.0526, 0.0000, 1.0291, 0.4495,\n", + " 0.6727, 0.4278, -0.3018]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2359, -0.2710, -0.0516, -0.0898, 0.1226, 0.2062, 0.2519, 0.3043,\n", + " 0.2098, 0.2354, 0.2785, -0.1867, -0.2056, -0.3540, -0.2009, -0.2978,\n", + " -0.2536, -0.0126, -0.0233, -0.0741, -0.0955, -0.0337, -0.0481, -0.0590,\n", + " 0.0443, 0.0553, -0.1758, -0.2272, -0.2968, -0.2958, -0.3007, -0.2705,\n", + " -0.3775, -0.3653, -0.2662, -0.1876, -0.0519, 0.0460, 0.0620, 0.3401,\n", + " 0.3667, 0.3849, 0.3137]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00012075635459041223\n", + "Grad encoder.fc1.bias: 0.0005913287168368697\n", + "Grad encoder.encoder.0.weight: 3.5731063690036535e-05\n", + "Grad encoder.encoder.0.bias: 0.00028012669645249844\n", + "Grad encoder.encoder.2.weight: 2.9556016670539975e-05\n", + "Grad encoder.encoder.2.bias: 0.00015007723413873464\n", + "Grad encoder.encoder.4.weight: 9.111334657063708e-05\n", + "Grad encoder.encoder.4.bias: 0.0002485961886122823\n", + "Grad decoder.fc1.0.weight: 4.628590613720007e-05\n", + "Grad decoder.fc1.0.bias: 0.00016832543769851327\n", + "Grad decoder.fc1.2.weight: 8.487005834467709e-05\n", + "Grad decoder.fc1.2.bias: 0.00031545519595965743\n", + "Grad decoder.fc1.4.weight: 8.757381147006527e-05\n", + "Grad decoder.fc1.4.bias: 0.00038182787830010056\n", + "Grad decoder.fc2.weight: 0.00013017846504226327\n", + "Grad decoder.fc2.bias: 0.0024324581027030945\n", + "Grad _memory_unit.weight_ih_l0: 4.067535883223172e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.837854354875162e-06\n", + "Grad _memory_unit.bias_hh_l0: 4.380567588668782e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.0874965684924973e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.648432539193891e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.8640319467522204e-05\n", + "Data X Sample: tensor([[1.6188, 1.9488, 2.0631, 2.2456, 2.2794, 2.4338, 2.3849, 2.5766, 2.4288,\n", + " 2.4896, 2.5696, 2.6330, 2.5588, 2.5220, 2.4084, 2.4083, 2.3806, 2.6211,\n", + " 2.5379, 2.5757, 2.5738, 2.6148, 2.5929, 2.5538, 2.5712, 2.6250, 2.6560,\n", + " 2.6348, 2.3417, 2.2762, 2.2152, 2.2024, 1.8370, 1.1992, 1.6300, 1.6393,\n", + " 1.4886, 1.4709, 1.6036, 1.4044, 1.2647, 0.8563, 0.7498, 1.3433, 2.0138,\n", + " 2.2301, 1.4618, 2.2207]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 2.3291e-01, 4.8354e-02, -1.6878e-03, 8.2924e-01, 1.1984e+00,\n", + " 6.4548e-01, -1.2819e-01, -1.6980e-01, -3.9174e-01, -4.1618e-01,\n", + " -3.4647e-02, 1.3193e-01, 1.1166e+00, 4.2325e-01, 7.5212e-01,\n", + " 7.0178e-01, 7.3434e-01, 9.8924e-01, -9.4642e-02, -1.0594e-01,\n", + " -3.6215e-01, -2.3928e+00, 1.2888e-01, 1.6438e-01, 2.0859e-01,\n", + " 9.1234e-01, 8.6951e-01, -6.8082e-01, -1.0230e+00, -9.8480e-01,\n", + " -7.5997e-01, -7.5582e-01, -8.5943e-02, 2.1939e-01, -5.2974e-01,\n", + " 7.1057e-01, -1.0697e-02, 1.1226e-01, 9.7944e-01, -2.8061e-01,\n", + " -2.4585e-01, -2.2825e-01, -2.5439e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.1269, 0.0512, -0.0059, -0.0249, 0.0200, -0.0997, -0.1465, -0.1058,\n", + " -0.1227, -0.2499, -0.2486, 0.0451, -0.0097, 0.1762, 0.1660, 0.0177,\n", + " -0.0032, -0.0683, 0.0311, 0.1491, -0.0817, 0.0708, 0.0602, 0.0955,\n", + " 0.0621, 0.0356, 0.0566, -0.0075, 0.1188, 0.2318, 0.1031, 0.1898,\n", + " 0.1126, 0.1416, 0.0010, 0.1450, -0.0352, 0.0280, 0.0311, -0.1112,\n", + " -0.0079, -0.1184, -0.1376]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004404758510645479\n", + "Grad encoder.fc1.bias: 0.0013463302748277783\n", + "Grad encoder.encoder.0.weight: 0.0001287304621655494\n", + "Grad encoder.encoder.0.bias: 0.0010483686346560717\n", + "Grad encoder.encoder.2.weight: 8.82844760781154e-05\n", + "Grad encoder.encoder.2.bias: 0.000837686937302351\n", + "Grad encoder.encoder.4.weight: 0.00031279734685085714\n", + "Grad encoder.encoder.4.bias: 0.0018261958612129092\n", + "Grad decoder.fc1.0.weight: 0.00011258648737566546\n", + "Grad decoder.fc1.0.bias: 0.0006404753657989204\n", + "Grad decoder.fc1.2.weight: 0.00012837143731303513\n", + "Grad decoder.fc1.2.bias: 0.0006293971091508865\n", + "Grad decoder.fc1.4.weight: 0.0001243085425812751\n", + "Grad decoder.fc1.4.bias: 0.0006891146767884493\n", + "Grad decoder.fc2.weight: 0.00012915267143398523\n", + "Grad decoder.fc2.bias: 0.0023830172140151262\n", + "Grad _memory_unit.weight_ih_l0: 1.226700987899676e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.3236195779172704e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.3050281015457585e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.2651735131803434e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011064163845730945\n", + "Grad _memory_unit.bias_hh_l1: 5.616692578769289e-05\n", + "Data X Sample: tensor([[1.6538, 1.7857, 1.8272, 1.9023, 2.0148, 2.1642, 2.3095, 2.6916, 4.2400,\n", + " 4.4453, 4.4476, 4.4617, 4.0945, 4.0270, 3.8409, 3.7895, 3.7108, 3.7972,\n", + " 3.7397, 3.5465, 3.5773, 3.4292, 3.0628, 2.9795, 2.9185, 3.0089, 3.1648,\n", + " 3.1772, 3.2194, 3.4029, 3.4505, 3.3851, 3.9029, 2.8263, 4.6425, 4.9204,\n", + " 5.2190, 5.5735, 5.9835, 5.8757, 1.2075, 0.6014, 0.6609, 1.2228, 1.6768,\n", + " 1.8756, 1.2714, 1.7593]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5632, 0.4567, -0.2354, -0.0257, 0.0137, 0.1791, 0.1546, 0.4546,\n", + " 0.0494, 0.2368, 0.4023, -0.6793, 0.7706, -0.5117, -0.9035, -0.5788,\n", + " 0.8704, -0.7576, -0.9180, 0.0540, 0.1057, -1.3196, -3.8332, -2.0406,\n", + " -0.8876, -0.0431, -0.2069, -2.0448, -2.4183, -1.2507, -1.5191, -0.9929,\n", + " -1.7844, -0.0685, -0.5461, -1.2290, -0.0344, 0.0182, -0.5562, 0.4249,\n", + " 0.7490, 0.7010, -0.0182]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2161, -0.2556, -0.0487, -0.0809, 0.1303, 0.2003, 0.2372, 0.2857,\n", + " 0.2061, 0.2412, 0.2666, -0.1880, -0.1957, -0.3395, -0.1982, -0.2914,\n", + " -0.2581, -0.0130, -0.0263, -0.0746, -0.0798, -0.0356, -0.0549, -0.0591,\n", + " 0.0303, 0.0524, -0.1680, -0.2115, -0.2850, -0.3010, -0.2953, -0.2709,\n", + " -0.3763, -0.3510, -0.2651, -0.1813, -0.0518, 0.0488, 0.0587, 0.3210,\n", + " 0.3507, 0.3662, 0.3037]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006665489636361599\n", + "Grad encoder.fc1.bias: 0.000589382485486567\n", + "Grad encoder.encoder.0.weight: 0.00019677603268064559\n", + "Grad encoder.encoder.0.bias: 0.0004537101194728166\n", + "Grad encoder.encoder.2.weight: 0.00012734622578136623\n", + "Grad encoder.encoder.2.bias: 0.0006506995996460319\n", + "Grad encoder.encoder.4.weight: 0.0004521454684436321\n", + "Grad encoder.encoder.4.bias: 0.002000544685870409\n", + "Grad decoder.fc1.0.weight: 0.00014076245133765042\n", + "Grad decoder.fc1.0.bias: 0.0005727456882596016\n", + "Grad decoder.fc1.2.weight: 0.00015636115858796984\n", + "Grad decoder.fc1.2.bias: 0.0006396043463610113\n", + "Grad decoder.fc1.4.weight: 0.0001537974749226123\n", + "Grad decoder.fc1.4.bias: 0.0007567987777292728\n", + "Grad decoder.fc2.weight: 0.0001206763627124019\n", + "Grad decoder.fc2.bias: 0.003251747228205204\n", + "Grad _memory_unit.weight_ih_l0: 1.1735442967619747e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.853036469081417e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.139277603419032e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.113687620905694e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001050596110871993\n", + "Grad _memory_unit.bias_hh_l1: 5.3715717513114214e-05\n", + "Data X Sample: tensor([[2.0294, 2.3246, 2.7273, 2.8185, 2.9846, 3.1985, 3.2169, 3.3602, 3.4247,\n", + " 3.3648, 3.3849, 3.3594, 3.0337, 3.0455, 2.9078, 2.8144, 2.8098, 2.8087,\n", + " 2.8188, 2.8435, 2.8290, 2.8628, 2.6628, 2.5996, 2.4530, 2.4735, 2.4535,\n", + " 2.4879, 2.0954, 2.0863, 1.9772, 2.1029, 2.0372, 1.4440, 2.2232, 2.4857,\n", + " 2.6764, 3.0769, 3.5305, 3.4726, 1.6036, 0.9619, 0.9741, 1.7308, 2.5331,\n", + " 2.7676, 1.7541, 2.7367]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.8005, -1.0414, -0.1302, -1.1942, -0.7948, 0.3324, -0.6580, -0.0859,\n", + " 0.2124, 0.3724, -0.0076, -1.1907, -0.2755, -0.8963, -1.3755, -0.5880,\n", + " -1.3033, 0.6297, -0.8533, -0.8902, -1.8624, -0.2986, 7.3600, 5.5837,\n", + " 0.8312, -1.0281, -0.4781, 0.3944, 0.2363, 0.2417, 0.1113, 0.1060,\n", + " -1.3138, -0.3789, -0.0324, 0.8418, 0.1596, -0.2168, -0.3119, 0.7796,\n", + " 0.8151, -0.1249, -1.6147]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1682, -0.1721, -0.0409, -0.1701, -0.0989, 0.0340, 0.0890, 0.1643,\n", + " 0.0382, 0.0969, 0.1492, -0.1176, -0.0896, -0.1668, -0.1228, -0.1460,\n", + " -0.1898, -0.0518, -0.0777, -0.0772, -0.0560, -0.0238, -0.0402, -0.0311,\n", + " -0.0229, 0.0303, -0.0043, -0.0360, -0.0858, -0.0761, -0.1211, -0.1251,\n", + " -0.1504, -0.1952, -0.1015, -0.1325, 0.0069, 0.0017, -0.0279, 0.2486,\n", + " 0.2539, 0.2074, 0.1521]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001218028919538483\n", + "Grad encoder.fc1.bias: 0.0006290455348789692\n", + "Grad encoder.encoder.0.weight: 3.8856502214912325e-05\n", + "Grad encoder.encoder.0.bias: 0.0005924158031120896\n", + "Grad encoder.encoder.2.weight: 3.4353208320681006e-05\n", + "Grad encoder.encoder.2.bias: 0.000403235899284482\n", + "Grad encoder.encoder.4.weight: 0.00011733529390767217\n", + "Grad encoder.encoder.4.bias: 0.0004884678055532277\n", + "Grad decoder.fc1.0.weight: 4.982824611943215e-05\n", + "Grad decoder.fc1.0.bias: 0.00029153600917197764\n", + "Grad decoder.fc1.2.weight: 6.0884867707500234e-05\n", + "Grad decoder.fc1.2.bias: 0.00025076683959923685\n", + "Grad decoder.fc1.4.weight: 6.015871622366831e-05\n", + "Grad decoder.fc1.4.bias: 0.000264981877990067\n", + "Grad decoder.fc2.weight: 0.00011080795957241207\n", + "Grad decoder.fc2.bias: 0.001772332121618092\n", + "Grad _memory_unit.weight_ih_l0: 7.579222710774047e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.18075692828279e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.195852382807061e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.155597823933931e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.9713846237864345e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.6159861590713263e-05\n", + "Data X Sample: tensor([[1.5626, 1.6735, 1.9324, 2.0072, 2.0045, 1.9904, 1.9428, 2.4261, 4.0032,\n", + " 4.3253, 4.2699, 4.4676, 4.0080, 4.0024, 3.8787, 3.6897, 3.6542, 3.6018,\n", + " 3.4548, 3.5948, 3.4449, 3.3986, 3.0171, 2.7523, 2.8040, 2.9253, 2.9676,\n", + " 2.9243, 2.9072, 3.1278, 3.2196, 3.2718, 3.8391, 2.8240, 4.4881, 4.9277,\n", + " 5.0027, 5.4383, 5.9581, 5.7537, 1.1836, 0.6870, 0.6609, 1.2457, 1.7799,\n", + " 1.9099, 1.2306, 1.8766]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6089, -0.8792, 0.4390, -0.3199, -0.3887, -0.5479, 0.4928, 0.5020,\n", + " 0.0303, 0.2197, 0.3608, -0.3088, 0.2687, 0.2110, 0.1028, -0.5309,\n", + " -0.6131, 0.0056, -1.9862, -0.3432, 0.0464, -0.8057, -0.6093, -1.0908,\n", + " 0.7014, -1.3116, -2.6324, -0.4164, -1.6217, -2.0315, -1.0027, -1.4561,\n", + " -0.9571, -1.4969, -0.9396, -1.2587, 0.0000, -0.7725, -0.2505, 0.5818,\n", + " 0.7234, 0.2778, 0.4872]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1604, -0.1947, -0.0394, -0.1092, 0.0245, 0.1099, 0.1355, 0.1914,\n", + " 0.1226, 0.1669, 0.1752, -0.1359, -0.1263, -0.2213, -0.1475, -0.2086,\n", + " -0.2191, -0.0356, -0.0397, -0.0703, -0.0541, -0.0307, -0.0522, -0.0552,\n", + " -0.0081, 0.0334, -0.0751, -0.1037, -0.1708, -0.1897, -0.1895, -0.1763,\n", + " -0.2524, -0.2385, -0.1791, -0.1344, -0.0219, 0.0305, 0.0094, 0.2450,\n", + " 0.2796, 0.2519, 0.2083]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003487772191874683\n", + "Grad encoder.fc1.bias: 0.00017650573863647878\n", + "Grad encoder.encoder.0.weight: 9.680799848865718e-05\n", + "Grad encoder.encoder.0.bias: 0.0002092659706249833\n", + "Grad encoder.encoder.2.weight: 6.715669587720186e-05\n", + "Grad encoder.encoder.2.bias: 0.00024845849839039147\n", + "Grad encoder.encoder.4.weight: 0.00020048981241416186\n", + "Grad encoder.encoder.4.bias: 0.0007152312318794429\n", + "Grad decoder.fc1.0.weight: 5.891826003789902e-05\n", + "Grad decoder.fc1.0.bias: 0.00020186181063763797\n", + "Grad decoder.fc1.2.weight: 5.496541416505352e-05\n", + "Grad decoder.fc1.2.bias: 0.00035177735844627023\n", + "Grad decoder.fc1.4.weight: 4.474936577025801e-05\n", + "Grad decoder.fc1.4.bias: 0.00043869263026863337\n", + "Grad decoder.fc2.weight: 5.322506694938056e-05\n", + "Grad decoder.fc2.bias: 0.0016372387763112783\n", + "Grad _memory_unit.weight_ih_l0: 5.272838279779535e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.048252215696266e-05\n", + "Grad _memory_unit.bias_hh_l0: 6.164056230772985e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.6408279154566117e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.45686598343309e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.7288049750495702e-05\n", + "Data X Sample: tensor([[1.5403, 1.6910, 1.7716, 1.7864, 1.8406, 2.1333, 2.2001, 2.1096, 4.1229,\n", + " 4.2115, 4.3334, 4.3449, 4.1367, 3.9997, 3.7803, 3.6732, 3.6668, 3.4973,\n", + " 3.5085, 3.5427, 3.6068, 3.4997, 3.0508, 2.9432, 2.7402, 2.7686, 2.8904,\n", + " 2.9570, 3.0321, 3.2850, 3.2930, 3.3491, 3.7423, 2.8171, 4.5935, 4.9180,\n", + " 5.1620, 5.5072, 5.9074, 5.8899, 1.0977, 0.6373, 0.6204, 1.1482, 1.5658,\n", + " 1.6926, 1.1626, 1.5873]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.1592, 0.6803, -0.1549, 0.4979, 0.8747, -0.1718, 0.2755, 0.8200,\n", + " 0.4425, 0.1253, 0.5811, 0.6239, 0.1767, 0.2078, 0.1800, 0.1722,\n", + " 0.9983, -1.0702, 0.9083, -0.0614, -1.1286, 0.4312, 1.2283, 1.4545,\n", + " -0.2740, -0.2887, -0.7298, -1.0769, -0.1941, 0.3139, -0.8216, -0.8431,\n", + " -0.3690, 0.5002, 0.4108, 0.1836, 1.0050, 0.0182, 0.1391, 0.3798,\n", + " 0.4073, 1.0845, 0.7154]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1460, -0.1718, -0.0365, -0.1324, -0.0366, 0.0646, 0.0946, 0.1570,\n", + " 0.0791, 0.1295, 0.1427, -0.1166, -0.0974, -0.1742, -0.1276, -0.1703,\n", + " -0.2005, -0.0467, -0.0525, -0.0712, -0.0459, -0.0281, -0.0479, -0.0487,\n", + " -0.0227, 0.0267, -0.0321, -0.0554, -0.1181, -0.1316, -0.1414, -0.1363,\n", + " -0.1921, -0.1953, -0.1348, -0.1201, -0.0062, 0.0189, -0.0144, 0.2229,\n", + " 0.2526, 0.2081, 0.1671]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00023036377388052642\n", + "Grad encoder.fc1.bias: 0.00022960580827202648\n", + "Grad encoder.encoder.0.weight: 8.533158688805997e-05\n", + "Grad encoder.encoder.0.bias: 0.00021286493574734777\n", + "Grad encoder.encoder.2.weight: 7.882587669882923e-05\n", + "Grad encoder.encoder.2.bias: 0.00027880878769792616\n", + "Grad encoder.encoder.4.weight: 0.00021468805789481848\n", + "Grad encoder.encoder.4.bias: 0.0007797097787261009\n", + "Grad decoder.fc1.0.weight: 7.749173528281972e-05\n", + "Grad decoder.fc1.0.bias: 0.00025359453866258264\n", + "Grad decoder.fc1.2.weight: 7.065730460453779e-05\n", + "Grad decoder.fc1.2.bias: 0.0003419697459321469\n", + "Grad decoder.fc1.4.weight: 6.7220586061012e-05\n", + "Grad decoder.fc1.4.bias: 0.0004509931313805282\n", + "Grad decoder.fc2.weight: 8.240798342740163e-05\n", + "Grad decoder.fc2.bias: 0.0016260328702628613\n", + "Grad _memory_unit.weight_ih_l0: 6.85732902638847e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.0538818969507702e-05\n", + "Grad _memory_unit.bias_hh_l0: 6.204603323567426e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.996218881889945e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.551580736413598e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.3067233744077384e-05\n", + "Data X Sample: tensor([[1.6411, 1.8061, 2.0361, 2.0663, 2.3307, 2.3351, 2.5144, 2.5667, 2.6216,\n", + " 2.7203, 2.6743, 2.7109, 2.5699, 2.5656, 2.5320, 2.5696, 2.4262, 2.4218,\n", + " 2.5379, 2.4809, 2.5149, 2.5367, 2.4965, 2.5481, 2.4568, 2.5492, 2.5041,\n", + " 2.6184, 2.2688, 2.4563, 2.3797, 2.3157, 2.2132, 1.4166, 1.9266, 1.8850,\n", + " 1.7266, 1.5901, 1.6100, 1.5349, 1.3220, 0.7846, 0.7781, 1.3003, 1.9623,\n", + " 2.1786, 1.4346, 1.9861]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6036, -0.0904, 0.0135, 0.0378, -0.7645, -0.6915, -0.8020, -0.7337,\n", + " -0.8603, -0.6393, -0.7973, -2.5333, 0.3399, 0.6425, 0.3529, 0.4478,\n", + " -2.9208, -1.1614, -1.0501, -1.2972, -0.5193, -0.1049, -0.2665, 0.5257,\n", + " -1.1733, -0.8949, -0.5294, 0.1088, -0.3853, -0.2498, 0.5621, -0.2616,\n", + " -0.3951, -0.3205, -0.3085, -0.3345, -0.5002, 0.0936, -0.2890, -0.6313,\n", + " -0.5441, -0.2042, -0.5083]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2600, 0.1808, 0.0490, 0.1805, 0.1154, -0.0647, -0.2188, -0.2858,\n", + " -0.0717, -0.1571, -0.1660, 0.1377, 0.0873, 0.1643, 0.1429, 0.1178,\n", + " 0.1192, 0.0013, 0.0494, 0.0880, 0.0273, 0.0419, 0.0762, 0.0437,\n", + " 0.0474, 0.0572, -0.0954, 0.0108, 0.0708, 0.1300, 0.1139, 0.1707,\n", + " 0.2154, 0.2380, 0.1106, 0.1223, -0.0194, -0.0079, -0.0331, -0.1683,\n", + " -0.1329, -0.1546, -0.1675]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00020947253506164998\n", + "Grad encoder.fc1.bias: 0.0005612507229670882\n", + "Grad encoder.encoder.0.weight: 6.28944908385165e-05\n", + "Grad encoder.encoder.0.bias: 0.0006458364077843726\n", + "Grad encoder.encoder.2.weight: 4.74534863315057e-05\n", + "Grad encoder.encoder.2.bias: 0.00043710783938877285\n", + "Grad encoder.encoder.4.weight: 0.00015265405818354338\n", + "Grad encoder.encoder.4.bias: 0.0008223587647080421\n", + "Grad decoder.fc1.0.weight: 5.816301199956797e-05\n", + "Grad decoder.fc1.0.bias: 0.00028478330932557583\n", + "Grad decoder.fc1.2.weight: 8.02025169832632e-05\n", + "Grad decoder.fc1.2.bias: 0.0003792555071413517\n", + "Grad decoder.fc1.4.weight: 7.470417767763138e-05\n", + "Grad decoder.fc1.4.bias: 0.0004876013845205307\n", + "Grad decoder.fc2.weight: 9.834551019594073e-05\n", + "Grad decoder.fc2.bias: 0.0018862389260903\n", + "Grad _memory_unit.weight_ih_l0: 8.257939043687657e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.7365629648556933e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.506255466665607e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.5846630908054067e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.312828918453306e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.349766484461725e-05\n", + "Data X Sample: tensor([[1.4608, 1.5643, 1.6063, 1.7492, 1.9106, 2.0449, 2.1261, 2.4474, 3.9837,\n", + " 4.1910, 4.1557, 4.2553, 3.9281, 3.8252, 3.7475, 3.5543, 3.5630, 3.5554,\n", + " 3.5704, 3.4814, 3.4718, 3.2501, 2.7929, 2.8077, 2.8359, 2.9723, 2.9943,\n", + " 3.1283, 3.1500, 3.2850, 3.2301, 3.3519, 3.7181, 2.7462, 4.3729, 4.7283,\n", + " 4.9988, 5.3615, 5.8187, 5.5579, 1.0404, 0.5915, 0.5942, 1.0104, 1.5579,\n", + " 1.6926, 1.2578, 1.7671]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3973, 0.4485, 0.8115, 0.5328, 1.1816, 0.2683, 0.2626, -0.1076,\n", + " -0.6494, -0.1795, -0.2544, -0.5129, -0.2940, 0.5980, -2.0825, 0.9890,\n", + " 0.4431, -1.3717, -0.0084, -0.3726, -0.5107, 0.1127, 4.8071, 0.0367,\n", + " 1.0693, -0.0925, -0.9095, -0.9787, -0.1804, 0.3710, 1.0456, 0.7764,\n", + " -0.6426, 0.1249, 0.2323, -2.0574, 0.1281, -0.3643, -1.0346, -1.1911,\n", + " -0.2851, -0.0389, -0.1101]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1180, -0.1432, -0.0312, -0.1496, -0.0910, 0.0187, 0.0459, 0.1120,\n", + " 0.0388, 0.0937, 0.0988, -0.0918, -0.0642, -0.1173, -0.1015, -0.1311,\n", + " -0.1790, -0.0571, -0.0566, -0.0710, -0.0337, -0.0266, -0.0439, -0.0474,\n", + " -0.0386, 0.0179, 0.0103, -0.0020, -0.0633, -0.0794, -0.0882, -0.0888,\n", + " -0.1311, -0.1422, -0.0915, -0.0966, 0.0078, 0.0106, -0.0400, 0.1845,\n", + " 0.2175, 0.1525, 0.1195]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 6.165447848616168e-05\n", + "Grad encoder.fc1.bias: 0.0003927426878362894\n", + "Grad encoder.encoder.0.weight: 2.150831278413534e-05\n", + "Grad encoder.encoder.0.bias: 0.0002757869951892644\n", + "Grad encoder.encoder.2.weight: 1.5337511285906658e-05\n", + "Grad encoder.encoder.2.bias: 0.00030408313614316285\n", + "Grad encoder.encoder.4.weight: 4.920891296933405e-05\n", + "Grad encoder.encoder.4.bias: 0.000893058895599097\n", + "Grad decoder.fc1.0.weight: 3.220703001716174e-05\n", + "Grad decoder.fc1.0.bias: 0.0003176467143930495\n", + "Grad decoder.fc1.2.weight: 4.1189130570273846e-05\n", + "Grad decoder.fc1.2.bias: 0.0002555691753514111\n", + "Grad decoder.fc1.4.weight: 3.1680996471550316e-05\n", + "Grad decoder.fc1.4.bias: 0.0002538183471187949\n", + "Grad decoder.fc2.weight: 6.700437370454893e-05\n", + "Grad decoder.fc2.bias: 0.0019165909616276622\n", + "Grad _memory_unit.weight_ih_l0: 3.704136588567053e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.0953233615728095e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.1120735507574864e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.315583060408244e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.971244536340237e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.04403729387559e-05\n", + "Data X Sample: tensor([[1.3070, 1.4827, 1.7430, 1.9591, 1.8901, 1.9712, 2.0306, 2.0031, 3.6102,\n", + " 4.1594, 4.3588, 4.3507, 4.1500, 3.9561, 3.8938, 3.6363, 3.6290, 3.5805,\n", + " 3.5477, 3.5558, 3.4571, 3.4139, 3.0026, 2.8573, 2.7402, 2.8809, 2.9090,\n", + " 2.9039, 2.7927, 3.0066, 3.1601, 3.3215, 3.7203, 2.7943, 4.5837, 4.8742,\n", + " 5.2544, 5.4410, 6.0405, 5.8218, 1.0643, 0.6253, 0.6508, 1.0764, 1.7601,\n", + " 1.9442, 1.3122, 1.8453]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2898, -0.4629, 0.6200, 1.1107, -0.5154, 0.0086, 0.3809, 0.5472,\n", + " 0.6940, 0.6411, 0.1855, 0.3241, -0.0810, -1.1574, 0.1745, -2.0208,\n", + " -0.7988, -0.0197, -0.3782, -0.4131, -0.5179, -1.0849, -0.3142, -0.5508,\n", + " -1.0338, 0.2198, 1.0090, 0.1253, 0.3112, -0.5332, -0.0468, -0.9909,\n", + " 0.6224, -0.5194, -0.2351, -0.8350, -0.0868, 0.7428, -0.5970, 0.7197,\n", + " 0.5060, 0.8237, 0.3877]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1130, -0.1403, -0.0302, -0.1469, -0.0897, 0.0168, 0.0422, 0.1071,\n", + " 0.0386, 0.0933, 0.0939, -0.0904, -0.0617, -0.1128, -0.1002, -0.1289,\n", + " -0.1771, -0.0580, -0.0542, -0.0703, -0.0317, -0.0269, -0.0441, -0.0488,\n", + " -0.0400, 0.0154, 0.0110, 0.0017, -0.0605, -0.0801, -0.0851, -0.0856,\n", + " -0.1295, -0.1377, -0.0905, -0.0929, 0.0079, 0.0107, -0.0409, 0.1779,\n", + " 0.2135, 0.1472, 0.1158]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002232654660474509\n", + "Grad encoder.fc1.bias: 0.0004784799530170858\n", + "Grad encoder.encoder.0.weight: 5.329601845005527e-05\n", + "Grad encoder.encoder.0.bias: 0.0004371557733975351\n", + "Grad encoder.encoder.2.weight: 4.125286068301648e-05\n", + "Grad encoder.encoder.2.bias: 0.00044462509686127305\n", + "Grad encoder.encoder.4.weight: 0.00014945300063118339\n", + "Grad encoder.encoder.4.bias: 0.0014116172678768635\n", + "Grad decoder.fc1.0.weight: 7.621527038281783e-05\n", + "Grad decoder.fc1.0.bias: 0.0004944701795466244\n", + "Grad decoder.fc1.2.weight: 0.00011547248141141608\n", + "Grad decoder.fc1.2.bias: 0.0005608372739516199\n", + "Grad decoder.fc1.4.weight: 0.00010043600923381746\n", + "Grad decoder.fc1.4.bias: 0.0006996090523898602\n", + "Grad decoder.fc2.weight: 0.00011709074897225946\n", + "Grad decoder.fc2.bias: 0.002956534968689084\n", + "Grad _memory_unit.weight_ih_l0: 7.822262887202669e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.834296512650326e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.1052139345556498e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.227334440860432e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010940070205833763\n", + "Grad _memory_unit.bias_hh_l1: 5.655883433064446e-05\n", + "Data X Sample: tensor([[1.3908, 1.5060, 1.6364, 1.8061, 1.9038, 1.9904, 1.9844, 2.3452, 4.0228,\n", + " 4.0946, 4.0828, 4.1306, 4.0346, 3.8334, 3.7299, 3.5488, 3.4797, 3.6211,\n", + " 3.5869, 3.4535, 3.4375, 3.4568, 3.0508, 2.8516, 2.8227, 2.8470, 2.8105,\n", + " 3.0467, 2.8308, 3.0885, 3.1321, 3.3243, 3.6323, 2.6249, 4.2822, 4.8085,\n", + " 4.7943, 5.1574, 5.5081, 5.5381, 1.0929, 0.5835, 0.5780, 1.0936, 1.4985,\n", + " 1.8012, 1.1898, 1.7202]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0471, -0.5746, -1.9116, 0.1615, -0.8254, 0.0229, 0.2828, 0.8496,\n", + " 0.8695, 1.0483, 1.0508, 0.4413, 7.3532, 0.7828, 0.4913, 0.6670,\n", + " 0.2387, -0.4149, 0.3528, 0.7234, 0.6751, -0.4023, 0.6119, 0.5285,\n", + " 0.5422, 0.3005, 0.1105, 0.4121, -0.0396, -0.0074, -0.7622, -0.4934,\n", + " 0.3962, -0.0180, -0.4243, 0.0642, -1.0440, -0.8400, -0.5562, 0.3721,\n", + " 0.9012, 0.0947, 0.0829]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1165, -0.1426, -0.0307, -0.1470, -0.0899, 0.0177, 0.0455, 0.1105,\n", + " 0.0381, 0.0939, 0.0977, -0.0943, -0.0633, -0.1167, -0.1041, -0.1294,\n", + " -0.1774, -0.0594, -0.0562, -0.0711, -0.0327, -0.0262, -0.0447, -0.0473,\n", + " -0.0397, 0.0145, 0.0096, 0.0003, -0.0608, -0.0808, -0.0876, -0.0888,\n", + " -0.1315, -0.1418, -0.0908, -0.0945, 0.0079, 0.0092, -0.0395, 0.1821,\n", + " 0.2155, 0.1514, 0.1177]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 3.86081010219641e-05\n", + "Grad encoder.fc1.bias: 0.0003090415266342461\n", + "Grad encoder.encoder.0.weight: 1.6468467947561294e-05\n", + "Grad encoder.encoder.0.bias: 0.00023068630252964795\n", + "Grad encoder.encoder.2.weight: 1.6340662114089355e-05\n", + "Grad encoder.encoder.2.bias: 0.0002618042635731399\n", + "Grad encoder.encoder.4.weight: 6.8371940869838e-05\n", + "Grad encoder.encoder.4.bias: 0.0008267260855063796\n", + "Grad decoder.fc1.0.weight: 4.7220702981576324e-05\n", + "Grad decoder.fc1.0.bias: 0.00034111071727238595\n", + "Grad decoder.fc1.2.weight: 7.515728793805465e-05\n", + "Grad decoder.fc1.2.bias: 0.00034305581357330084\n", + "Grad decoder.fc1.4.weight: 8.139603596646339e-05\n", + "Grad decoder.fc1.4.bias: 0.0005645928904414177\n", + "Grad decoder.fc2.weight: 0.00010128906433237717\n", + "Grad decoder.fc2.bias: 0.0016822393517941236\n", + "Grad _memory_unit.weight_ih_l0: 5.578905074798968e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.2601931050303392e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.206533306685742e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.0396022339118645e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.635754834860563e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.4162207157351077e-05\n", + "Data X Sample: tensor([[1.3908, 1.5060, 1.6364, 1.8061, 1.9038, 1.9904, 1.9844, 2.3452, 4.0228,\n", + " 4.0946, 4.0828, 4.1306, 4.0346, 3.8334, 3.7299, 3.5488, 3.4797, 3.6211,\n", + " 3.5869, 3.4535, 3.4375, 3.4568, 3.0508, 2.8516, 2.8227, 2.8470, 2.8105,\n", + " 3.0467, 2.8308, 3.0885, 3.1321, 3.3243, 3.6323, 2.6249, 4.2822, 4.8085,\n", + " 4.7943, 5.1574, 5.5081, 5.5381, 1.0929, 0.5835, 0.5780, 1.0936, 1.4985,\n", + " 1.8012, 1.1898, 1.7202]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3318, -0.4640, -0.2817, -0.9836, -0.5392, 0.6468, 0.2137, 0.4926,\n", + " 0.4731, 0.6474, 0.4635, -0.1150, -0.3173, -1.1533, -0.7606, -0.5705,\n", + " -1.1694, 0.5171, -2.2727, -0.1489, 11.6429, -2.1507, -1.6745, -1.6041,\n", + " 0.6125, 0.4893, 0.3489, 0.8053, 0.7512, -0.1685, 0.4520, 0.6441,\n", + " -0.5088, -0.4979, -1.6667, -0.1811, 0.0000, -0.6429, 0.5850, 0.5143,\n", + " 0.5965, 0.3804, 0.3432]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1310, -0.1506, -0.0331, -0.1505, -0.0926, 0.0210, 0.0563, 0.1244,\n", + " 0.0367, 0.0952, 0.1124, -0.1049, -0.0696, -0.1307, -0.1145, -0.1323,\n", + " -0.1797, -0.0607, -0.0645, -0.0734, -0.0374, -0.0244, -0.0445, -0.0418,\n", + " -0.0363, 0.0156, 0.0058, -0.0076, -0.0645, -0.0812, -0.0967, -0.0999,\n", + " -0.1376, -0.1571, -0.0927, -0.1034, 0.0085, 0.0054, -0.0354, 0.2000,\n", + " 0.2249, 0.1676, 0.1263]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0008734298753552139\n", + "Grad encoder.fc1.bias: 0.0007259704289026558\n", + "Grad encoder.encoder.0.weight: 0.0002041621191892773\n", + "Grad encoder.encoder.0.bias: 0.0007296192343346775\n", + "Grad encoder.encoder.2.weight: 0.00012234966561663896\n", + "Grad encoder.encoder.2.bias: 0.0006852463120594621\n", + "Grad encoder.encoder.4.weight: 0.00040699978126212955\n", + "Grad encoder.encoder.4.bias: 0.0018950754310935736\n", + "Grad decoder.fc1.0.weight: 0.0001204256113851443\n", + "Grad decoder.fc1.0.bias: 0.00046974600991234183\n", + "Grad decoder.fc1.2.weight: 0.0001235343370353803\n", + "Grad decoder.fc1.2.bias: 0.0005939931143075228\n", + "Grad decoder.fc1.4.weight: 8.987731416709721e-05\n", + "Grad decoder.fc1.4.bias: 0.000601248990278691\n", + "Grad decoder.fc2.weight: 0.00011313559662085027\n", + "Grad decoder.fc2.bias: 0.002691594883799553\n", + "Grad _memory_unit.weight_ih_l0: 1.1932770576095209e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.4922682971227914e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.9042068743146956e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.786194949701894e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011482801346573979\n", + "Grad _memory_unit.bias_hh_l1: 5.844133556820452e-05\n", + "Data X Sample: tensor([[1.6029, 1.7638, 2.0165, 2.1625, 2.2948, 2.3012, 2.3557, 2.4488, 2.4434,\n", + " 2.4486, 2.3983, 2.5123, 2.4878, 2.3748, 2.2773, 2.3057, 2.2249, 2.3483,\n", + " 2.4202, 2.5608, 2.5100, 2.5658, 2.4917, 2.5920, 2.5694, 2.6694, 2.5920,\n", + " 2.6103, 2.3972, 2.3876, 2.2852, 2.4207, 2.1670, 1.4395, 1.8604, 1.7609,\n", + " 1.6459, 1.4868, 1.6290, 1.6030, 1.3363, 0.7647, 0.7397, 1.3319, 1.9424,\n", + " 2.1329, 1.4346, 2.0955]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5716, -0.0926, -1.2703, 0.3775, 0.2843, 0.5829, 0.7158, -1.1696,\n", + " 0.6965, 0.5414, 0.7099, 1.2188, 0.3974, 1.6696, 0.1403, 0.1192,\n", + " -0.3749, 1.2694, 0.1321, 2.1338, 1.5605, 1.3065, 1.6934, 1.3636,\n", + " 2.2489, 2.1654, -0.9783, 0.8267, 0.8056, -0.0108, -0.4603, -1.7606,\n", + " -0.2804, 0.4625, -1.7722, -0.6595, -0.4229, 0.7428, 0.2870, 0.1459,\n", + " -0.3101, -0.8287, -0.0594]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4279, 0.3409, 0.1047, 0.3638, 0.2002, -0.0788, -0.3212, -0.4642,\n", + " -0.1095, -0.1349, -0.1716, 0.2100, 0.1967, 0.2198, 0.1483, 0.2630,\n", + " 0.2461, 0.0772, 0.0579, 0.0405, 0.1026, 0.0475, 0.0981, -0.0062,\n", + " 0.0496, 0.0078, -0.2103, 0.0094, 0.0818, 0.1123, 0.1398, 0.1558,\n", + " 0.3133, 0.3072, 0.2012, 0.1443, -0.0032, -0.0372, -0.0459, -0.2636,\n", + " -0.2980, -0.2300, -0.2714]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004008397227153182\n", + "Grad encoder.fc1.bias: 0.0007834371645003557\n", + "Grad encoder.encoder.0.weight: 8.890083699952811e-05\n", + "Grad encoder.encoder.0.bias: 0.0006202371441759169\n", + "Grad encoder.encoder.2.weight: 5.305467493599281e-05\n", + "Grad encoder.encoder.2.bias: 0.0005296318558976054\n", + "Grad encoder.encoder.4.weight: 0.00016560981748625636\n", + "Grad encoder.encoder.4.bias: 0.0012769385939463973\n", + "Grad decoder.fc1.0.weight: 6.26085966359824e-05\n", + "Grad decoder.fc1.0.bias: 0.00034364970633760095\n", + "Grad decoder.fc1.2.weight: 7.58512323955074e-05\n", + "Grad decoder.fc1.2.bias: 0.0005593536188825965\n", + "Grad decoder.fc1.4.weight: 8.414278272539377e-05\n", + "Grad decoder.fc1.4.bias: 0.0006597482715733349\n", + "Grad decoder.fc2.weight: 0.0001640620903344825\n", + "Grad decoder.fc2.bias: 0.0022498066537082195\n", + "Grad _memory_unit.weight_ih_l0: 7.591585472255247e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.4805841601628345e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.455131137452554e-06\n", + "Grad _memory_unit.weight_ih_l1: 5.496672201843467e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.420017547905445e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.216565503156744e-05\n", + "Data X Sample: tensor([[1.5382, 1.7332, 1.8858, 2.0204, 2.1309, 2.3499, 2.4712, 2.4403, 2.5704,\n", + " 2.6429, 2.6140, 2.6720, 2.5300, 2.4593, 2.5042, 2.5915, 2.4702, 2.4953,\n", + " 2.6391, 2.4864, 2.4487, 2.5107, 2.5255, 2.3706, 2.3854, 2.4944, 2.3789,\n", + " 2.4390, 2.1648, 2.3286, 2.2817, 2.2742, 2.2396, 1.4509, 1.9462, 1.7804,\n", + " 1.7285, 1.4894, 1.6290, 1.5746, 1.1550, 0.6831, 0.7356, 1.2486, 1.8314,\n", + " 2.0014, 1.4414, 1.7906]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3318, 0.6246, -0.1678, 0.0039, 0.1061, 0.3968, -1.0808, -0.2608,\n", + " -0.7838, 0.0484, 0.0593, 0.2920, 0.2664, 0.1831, -0.1235, 0.2199,\n", + " 0.2653, -0.2226, 1.7392, -0.3972, 0.3191, -0.4947, 0.1757, -0.2005,\n", + " 0.7337, 0.4961, -0.2560, 0.0550, -0.4748, 0.1003, 0.3342, 1.7365,\n", + " 0.3908, 0.3716, -0.1944, 0.7329, 0.9776, -0.0751, 0.0000, -0.4066,\n", + " -0.0997, -0.5228, -1.2552]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4137, 0.3235, 0.1008, 0.3484, 0.1856, -0.0803, -0.3137, -0.4451,\n", + " -0.1102, -0.1285, -0.1704, 0.1931, 0.1900, 0.2139, 0.1384, 0.2528,\n", + " 0.2338, 0.0716, 0.0515, 0.0345, 0.0984, 0.0449, 0.0944, -0.0025,\n", + " 0.0404, 0.0018, -0.1986, 0.0133, 0.0865, 0.1068, 0.1299, 0.1499,\n", + " 0.2964, 0.2877, 0.1961, 0.1415, -0.0074, -0.0385, -0.0512, -0.2531,\n", + " -0.2813, -0.2131, -0.2624]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 2.626219611556735e-05\n", + "Grad encoder.fc1.bias: 0.000514142622705549\n", + "Grad encoder.encoder.0.weight: 9.349138963443693e-06\n", + "Grad encoder.encoder.0.bias: 0.0003023788158316165\n", + "Grad encoder.encoder.2.weight: 9.210452844854444e-06\n", + "Grad encoder.encoder.2.bias: 0.00016658060485497117\n", + "Grad encoder.encoder.4.weight: 3.41117411153391e-05\n", + "Grad encoder.encoder.4.bias: 0.00012681908265221864\n", + "Grad decoder.fc1.0.weight: 1.915295433718711e-05\n", + "Grad decoder.fc1.0.bias: 8.930775220505893e-05\n", + "Grad decoder.fc1.2.weight: 2.334029704798013e-05\n", + "Grad decoder.fc1.2.bias: 9.49830500758253e-05\n", + "Grad decoder.fc1.4.weight: 2.1112376998644322e-05\n", + "Grad decoder.fc1.4.bias: 0.00011513402569107711\n", + "Grad decoder.fc2.weight: 8.73518074513413e-05\n", + "Grad decoder.fc2.bias: 0.0018913950771093369\n", + "Grad _memory_unit.weight_ih_l0: 2.8810204639739823e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.108341949584428e-06\n", + "Grad _memory_unit.bias_hh_l0: 3.3997453101619612e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.2769560271408409e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.525915831734892e-05\n", + "Grad _memory_unit.bias_hh_l1: 8.120072379824705e-06\n", + "Data X Sample: tensor([[0.0509, 0.0801, 0.0947, 0.1399, 0.1468, 0.1503, 0.1602, 0.1718, 0.1684,\n", + " 0.2212, 0.2030, 0.2473, 0.2308, 0.2127, 0.2270, 0.2612, 0.2547, 0.2766,\n", + " 0.2829, 0.2845, 0.2944, 0.2878, 0.3060, 0.3016, 0.2796, 0.3239, 0.3037,\n", + " 0.3793, 0.2151, 0.2522, 0.2205, 0.2625, 0.2068, 0.1510, 0.2157, 0.2213,\n", + " 0.2124, 0.2253, 0.1775, 0.1674, 0.1002, 0.0418, 0.0485, 0.0861, 0.1269,\n", + " 0.1258, 0.0816, 0.0704]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 8.3269e-01, 1.4113e+00, 6.5000e-01, 4.2968e-01, 6.8984e-01,\n", + " -2.1297e-01, -1.2554e+00, -5.8673e-01, 1.4708e-01, -7.8219e-01,\n", + " -4.4767e-01, 5.0702e-01, 1.4222e+00, 4.6596e-01, 1.1444e+00,\n", + " 8.3599e-02, -2.7849e-01, -2.6789e-01, -9.8015e-01, -3.9600e-01,\n", + " -8.3654e-01, 8.0601e-01, -3.7683e-01, 4.4349e-02, -1.2686e+00,\n", + " 6.2262e+00, -8.2373e-01, 8.1195e-01, -1.1543e-03, -4.0684e-01,\n", + " 5.8858e-01, 5.7817e-01, 9.3424e-01, 7.7503e-01, 4.0819e-01,\n", + " -7.8135e-02, 0.0000e+00, 7.6718e-01, 3.8169e-02, -2.6520e-01,\n", + " 2.8336e-03, -2.6616e-01, -3.7167e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5375, 0.4077, 0.1583, 0.3284, 0.0960, -0.2009, -0.5404, -0.6023,\n", + " -0.3032, -0.2919, -0.2859, 0.2361, 0.1910, 0.3578, 0.1648, 0.2631,\n", + " 0.2857, 0.1315, 0.1181, 0.1217, 0.0845, 0.0220, 0.0628, 0.0607,\n", + " 0.0499, 0.0196, -0.0746, 0.1161, 0.2817, 0.3428, 0.2881, 0.2955,\n", + " 0.3351, 0.3869, 0.2063, 0.1747, -0.0039, 0.0293, -0.0151, -0.4030,\n", + " -0.3632, -0.3249, -0.3370]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00016101619985420257\n", + "Grad encoder.fc1.bias: 0.00032833038130775094\n", + "Grad encoder.encoder.0.weight: 4.451766290003434e-05\n", + "Grad encoder.encoder.0.bias: 0.00026687089120969176\n", + "Grad encoder.encoder.2.weight: 3.368403122294694e-05\n", + "Grad encoder.encoder.2.bias: 0.00021718961943406612\n", + "Grad encoder.encoder.4.weight: 9.695223707240075e-05\n", + "Grad encoder.encoder.4.bias: 0.00024214491713792086\n", + "Grad decoder.fc1.0.weight: 3.8137648516567424e-05\n", + "Grad decoder.fc1.0.bias: 0.00020898102957289666\n", + "Grad decoder.fc1.2.weight: 4.457512841327116e-05\n", + "Grad decoder.fc1.2.bias: 0.000259637541603297\n", + "Grad decoder.fc1.4.weight: 3.4883902117144316e-05\n", + "Grad decoder.fc1.4.bias: 0.0002043192507699132\n", + "Grad decoder.fc2.weight: 9.594937728252262e-05\n", + "Grad decoder.fc2.bias: 0.0016813963884487748\n", + "Grad _memory_unit.weight_ih_l0: 5.6482940635760315e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.697146763035562e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.328173291578423e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.2908839127921965e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.55721456091851e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.347471672692336e-05\n", + "Data X Sample: tensor([[ 0.0127, 0.0160, 0.0316, 0.0000, 0.0239, 0.0354, 0.0231, 0.0099,\n", + " 0.0366, 0.0269, 0.0349, 0.0234, 0.0244, 0.0109, -0.0126, 0.0137,\n", + " -0.0849, -0.1064, -0.1549, -0.1469, -0.1104, -0.0827, -0.1807, -0.1928,\n", + " -0.1351, -0.2455, -0.3143, -0.5057, -0.0694, -0.0983, -0.0980, -0.0857,\n", + " -0.0572, -0.0687, -0.0392, -0.0073, -0.0039, -0.0371, -0.0190, 0.0085,\n", + " 0.0048, -0.0060, 0.0061, -0.0057, 0.0198, 0.0343, 0.0612, 0.0313]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3348, 0.0961, -0.1942, -0.2720, 0.0669, 0.0547, 0.1962, -0.2444,\n", + " 0.3487, -0.6239, -0.1975, 0.4012, -0.0318, 0.5389, 0.6011, 0.0947,\n", + " 0.1015, -0.4907, -0.4471, -0.0910, -0.7478, -1.1657, 0.3695, -0.2890,\n", + " -0.6260, -0.4473, -0.0212, 0.1720, 0.4051, 0.1932, -0.4752, 0.1397,\n", + " 0.4976, 0.4439, 0.9359, -0.0031, 0.1343, -0.0751, -0.0156, -0.3087,\n", + " -0.1656, -0.4556, -0.8428]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.6573, 0.5553, 0.2548, 0.4958, 0.2150, -0.2080, -0.6569, -0.7549,\n", + " -0.3465, -0.3404, -0.3158, 0.3244, 0.2544, 0.4156, 0.1988, 0.3886,\n", + " 0.3977, 0.1825, 0.1678, 0.1689, 0.1588, 0.0448, 0.0624, 0.0814,\n", + " 0.1077, 0.0304, -0.1526, 0.1192, 0.3132, 0.3834, 0.3718, 0.3560,\n", + " 0.4572, 0.5101, 0.2989, 0.2449, 0.0289, 0.0498, -0.0315, -0.4959,\n", + " -0.4788, -0.4398, -0.4672]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00022946330136619508\n", + "Grad encoder.fc1.bias: 0.0009002294391393661\n", + "Grad encoder.encoder.0.weight: 5.8453690144233406e-05\n", + "Grad encoder.encoder.0.bias: 0.000738474540412426\n", + "Grad encoder.encoder.2.weight: 4.867709503741935e-05\n", + "Grad encoder.encoder.2.bias: 0.0007969592697918415\n", + "Grad encoder.encoder.4.weight: 0.00015064516628626734\n", + "Grad encoder.encoder.4.bias: 0.0016619395464658737\n", + "Grad decoder.fc1.0.weight: 7.40823452360928e-05\n", + "Grad decoder.fc1.0.bias: 0.000624980079010129\n", + "Grad decoder.fc1.2.weight: 8.156296098604798e-05\n", + "Grad decoder.fc1.2.bias: 0.0004491468716878444\n", + "Grad decoder.fc1.4.weight: 6.279064109548926e-05\n", + "Grad decoder.fc1.4.bias: 0.0002876451762858778\n", + "Grad decoder.fc2.weight: 0.00011317566531943157\n", + "Grad decoder.fc2.bias: 0.0015336781507357955\n", + "Grad _memory_unit.weight_ih_l0: 1.1820469808299094e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.3143317927606404e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.87906477751676e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.789639089925913e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011490791075630113\n", + "Grad _memory_unit.bias_hh_l1: 5.9820151363965124e-05\n", + "Data X Sample: tensor([[1.3918, 1.5483, 1.7911, 1.7186, 1.9909, 1.9904, 1.9890, 2.1607, 3.9373,\n", + " 4.1973, 4.3334, 4.3079, 4.0146, 3.9725, 3.7929, 3.7786, 3.6558, 3.6405,\n", + " 3.5456, 3.5576, 3.5136, 3.5134, 3.1857, 3.0195, 2.8321, 2.9044, 2.9410,\n", + " 2.9243, 2.9557, 3.1540, 3.2196, 3.3602, 3.8171, 2.7920, 4.5493, 4.9253,\n", + " 5.1384, 5.6371, 5.9581, 5.7707, 1.0786, 0.6173, 0.6427, 1.1453, 1.5896,\n", + " 1.7841, 1.1898, 1.8141]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2535, 0.0159, 0.4538, -0.4634, 1.1347, 0.6201, 0.4281, 0.0416,\n", + " 0.6042, 0.5981, -0.3100, -0.7229, -0.4981, 0.4684, 0.6180, -0.2513,\n", + " 0.3902, 0.1148, 1.0242, -0.1171, 0.6393, 0.2334, 0.0111, -0.2858,\n", + " -0.0775, -0.1845, -2.4578, -1.2072, -0.8692, -1.3739, -0.2114, -0.3282,\n", + " -0.3763, -0.8102, -0.3887, 0.5663, -0.6719, 0.3924, -0.5993, -0.6691,\n", + " -1.3951, -0.8462, -0.6069]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3442, -0.2687, -0.0663, -0.2060, -0.1229, 0.0717, 0.2082, 0.3174,\n", + " 0.0271, 0.1164, 0.3213, -0.2361, -0.1595, -0.3252, -0.2419, -0.1772,\n", + " -0.2189, -0.0743, -0.1762, -0.1040, -0.1052, -0.0070, -0.0422, 0.0312,\n", + " 0.0048, 0.0403, -0.0406, -0.1161, -0.1254, -0.0833, -0.2174, -0.2472,\n", + " -0.2203, -0.3648, -0.1220, -0.2397, 0.0173, -0.0405, 0.0126, 0.4555,\n", + " 0.3639, 0.3944, 0.2566]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001282402517972514\n", + "Grad encoder.fc1.bias: 0.0004221966373734176\n", + "Grad encoder.encoder.0.weight: 2.9333876227610745e-05\n", + "Grad encoder.encoder.0.bias: 0.00030913582304492593\n", + "Grad encoder.encoder.2.weight: 2.6700870876084082e-05\n", + "Grad encoder.encoder.2.bias: 0.00024806277360767126\n", + "Grad encoder.encoder.4.weight: 8.077138772932813e-05\n", + "Grad encoder.encoder.4.bias: 0.00034456452704034746\n", + "Grad decoder.fc1.0.weight: 3.694645783980377e-05\n", + "Grad decoder.fc1.0.bias: 0.0002165395562769845\n", + "Grad decoder.fc1.2.weight: 5.9153746406082064e-05\n", + "Grad decoder.fc1.2.bias: 0.0005427157739177346\n", + "Grad decoder.fc1.4.weight: 5.0680730055319145e-05\n", + "Grad decoder.fc1.4.bias: 0.00042556069092825055\n", + "Grad decoder.fc2.weight: 0.00012102093023713678\n", + "Grad decoder.fc2.bias: 0.0019501479109749198\n", + "Grad _memory_unit.weight_ih_l0: 6.730645054631168e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.364073614240624e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.285165677079931e-06\n", + "Grad _memory_unit.weight_ih_l1: 3.0753058126720134e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.357784903026186e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.712574860197492e-05\n", + "Data X Sample: tensor([[1.7461, 1.8731, 2.0977, 2.1734, 2.2538, 2.3381, 2.3526, 2.5056, 2.4825,\n", + " 2.5781, 2.6203, 2.5629, 2.4834, 2.4347, 2.3706, 2.4684, 2.3837, 2.4876,\n", + " 2.5792, 2.6110, 2.6253, 2.6531, 2.6074, 2.6340, 2.6763, 2.8156, 2.6986,\n", + " 2.7245, 2.4180, 2.6168, 2.6491, 2.5782, 2.3100, 1.5013, 1.9903, 1.9069,\n", + " 1.7797, 1.6988, 1.5973, 1.5945, 1.3220, 0.8225, 0.8064, 1.3433, 1.9504,\n", + " 2.1901, 1.4754, 2.1425]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.9926, 0.1764, 0.4468, 0.3296, 1.0009, 0.5656, 0.0948, -0.1481,\n", + " -0.0692, -0.1674, -0.4343, 0.5734, 0.0824, 0.2414, 0.4296, 1.2254,\n", + " -0.1753, 0.6553, 0.1662, 0.2076, 0.1144, 0.9232, -0.1000, 0.2812,\n", + " 0.8524, -0.1211, 0.9905, 0.7701, 0.5344, 0.0445, 0.2517, 0.0202,\n", + " 0.3497, 0.1536, -0.2846, -0.1637, 0.5692, -0.8819, -1.8131, -0.3134,\n", + " -0.1203, 0.1351, -0.0082]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4386, 0.3426, 0.1137, 0.4057, 0.2093, -0.0830, -0.3482, -0.4874,\n", + " -0.1310, -0.1445, -0.1865, 0.2003, 0.2227, 0.2215, 0.1441, 0.2941,\n", + " 0.2549, 0.1064, 0.0652, 0.0440, 0.1228, 0.0426, 0.1173, 0.0304,\n", + " 0.0201, -0.0148, -0.2064, 0.0392, 0.0988, 0.1352, 0.1522, 0.1783,\n", + " 0.3233, 0.3192, 0.2483, 0.1634, -0.0308, -0.0434, -0.0596, -0.2879,\n", + " -0.3110, -0.2278, -0.2857]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002657525474205613\n", + "Grad encoder.fc1.bias: 0.000420520780608058\n", + "Grad encoder.encoder.0.weight: 7.787947834003717e-05\n", + "Grad encoder.encoder.0.bias: 0.0003398063126951456\n", + "Grad encoder.encoder.2.weight: 5.663529736921191e-05\n", + "Grad encoder.encoder.2.bias: 0.0005278529715724289\n", + "Grad encoder.encoder.4.weight: 0.00018332770559936762\n", + "Grad encoder.encoder.4.bias: 0.0015652760630473495\n", + "Grad decoder.fc1.0.weight: 7.800895400578156e-05\n", + "Grad decoder.fc1.0.bias: 0.00048733182484284043\n", + "Grad decoder.fc1.2.weight: 0.00011085517326137051\n", + "Grad decoder.fc1.2.bias: 0.0008970004273578525\n", + "Grad decoder.fc1.4.weight: 8.469673048239201e-05\n", + "Grad decoder.fc1.4.bias: 0.0008682530606165528\n", + "Grad decoder.fc2.weight: 0.00012914719991385937\n", + "Grad decoder.fc2.bias: 0.0018694577738642693\n", + "Grad _memory_unit.weight_ih_l0: 1.3951975233794656e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.967472002841532e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.4146746000042185e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.1256318986124825e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010305846808478236\n", + "Grad _memory_unit.bias_hh_l1: 5.376034459914081e-05\n", + "Data X Sample: tensor([[1.6114, 1.7638, 1.8122, 1.8192, 1.9704, 1.9329, 2.0136, 2.1706, 2.8316,\n", + " 3.9272, 4.0637, 4.1891, 3.9547, 3.7025, 3.5811, 3.4996, 3.4954, 3.4006,\n", + " 3.4093, 3.2750, 3.3786, 3.3389, 2.9785, 2.8077, 2.7946, 2.8574, 2.8158,\n", + " 2.7979, 2.8655, 3.0983, 3.0341, 3.1889, 3.4849, 2.5357, 4.2650, 4.5896,\n", + " 4.8847, 5.3376, 5.7870, 5.6175, 1.2122, 0.6771, 0.6346, 1.0850, 1.6412,\n", + " 1.7612, 1.1422, 1.7593]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2129, 0.2010, 1.4666, 0.2081, 0.7108, 0.7108, -0.3393, -0.1902,\n", + " -0.0430, -0.1213, -0.4009, -0.6287, 1.6843, -0.7042, -0.6541, 0.2834,\n", + " -0.2401, 0.5481, 0.8796, -0.2181, 0.4459, 0.4122, -0.8677, 0.0241,\n", + " -1.2554, -0.4049, -0.4593, 0.2055, -0.3802, -0.5041, -0.5111, 1.1249,\n", + " -0.6586, 0.5796, 0.7469, -0.3243, 0.0347, -0.7141, -0.2296, 0.0052,\n", + " 0.1165, 0.0032, -0.0730]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3651, -0.2842, -0.0713, -0.2120, -0.1207, 0.0760, 0.2207, 0.3349,\n", + " 0.0330, 0.1237, 0.3396, -0.2464, -0.1652, -0.3390, -0.2531, -0.1852,\n", + " -0.2234, -0.0793, -0.1824, -0.1070, -0.1116, -0.0092, -0.0427, 0.0361,\n", + " 0.0039, 0.0423, -0.0403, -0.1182, -0.1292, -0.0875, -0.2292, -0.2582,\n", + " -0.2307, -0.3841, -0.1243, -0.2498, 0.0191, -0.0431, 0.0181, 0.4752,\n", + " 0.3784, 0.4126, 0.2684]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002174170222133398\n", + "Grad encoder.fc1.bias: 0.00034865253837779164\n", + "Grad encoder.encoder.0.weight: 5.998417327646166e-05\n", + "Grad encoder.encoder.0.bias: 0.000258844462223351\n", + "Grad encoder.encoder.2.weight: 4.1778708691708744e-05\n", + "Grad encoder.encoder.2.bias: 0.00021904706954956055\n", + "Grad encoder.encoder.4.weight: 0.00012013256491627544\n", + "Grad encoder.encoder.4.bias: 0.0003536165168043226\n", + "Grad decoder.fc1.0.weight: 4.3771218770416453e-05\n", + "Grad decoder.fc1.0.bias: 0.00021140737226232886\n", + "Grad decoder.fc1.2.weight: 6.21120270807296e-05\n", + "Grad decoder.fc1.2.bias: 0.00044314918341115117\n", + "Grad decoder.fc1.4.weight: 6.224826938705519e-05\n", + "Grad decoder.fc1.4.bias: 0.0004433572757989168\n", + "Grad decoder.fc2.weight: 8.983392763184384e-05\n", + "Grad decoder.fc2.bias: 0.00197332794778049\n", + "Grad _memory_unit.weight_ih_l0: 7.39435790819698e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.5174194888677448e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.3716487956116907e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.8050415039615473e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.008451964589767e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.0491090001305565e-05\n", + "Data X Sample: tensor([[1.5732, 1.9794, 2.0917, 2.1472, 2.2726, 2.2909, 2.4235, 2.3750, 2.4825,\n", + " 2.4280, 2.4903, 2.6155, 2.3879, 2.3748, 2.3555, 2.3344, 2.3350, 2.5514,\n", + " 2.4636, 2.4530, 2.5591, 2.5781, 2.6508, 2.6588, 2.6557, 2.6511, 2.6187,\n", + " 2.6429, 2.5637, 2.6332, 2.6001, 2.5063, 2.2616, 1.5035, 1.9732, 1.8947,\n", + " 1.7856, 1.6935, 1.6670, 1.5519, 1.3650, 0.7567, 0.8165, 1.3921, 1.9702,\n", + " 2.1786, 1.4006, 2.0252]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1292, -0.2517, 0.8446, -0.4998, 0.0753, -0.0937, -0.4545, -0.4348,\n", + " -0.4136, -0.3675, -0.4442, -2.1643, 0.3402, -0.2033, -0.8023, -0.3361,\n", + " 0.0490, 1.2965, 0.7615, 0.2742, 0.8129, 1.1946, -0.3580, 0.8939,\n", + " 0.4881, 1.3125, -1.6742, -1.1487, -1.5597, -0.6445, -0.1289, -0.4666,\n", + " -0.0545, -0.5330, -0.0156, 0.9146, 0.4138, -0.1765, -1.1357, -0.3428,\n", + " -0.2329, -0.4082, 0.2568]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5645, 0.4306, 0.1292, 0.5585, 0.2668, -0.1254, -0.4414, -0.6262,\n", + " -0.1834, -0.2202, -0.2324, 0.2575, 0.2709, 0.2828, 0.1957, 0.4050,\n", + " 0.3048, 0.1595, 0.0961, 0.0789, 0.1748, 0.0513, 0.1557, 0.0946,\n", + " 0.0066, -0.0007, -0.2678, 0.0962, 0.1429, 0.2032, 0.2028, 0.2247,\n", + " 0.4355, 0.4116, 0.3197, 0.2383, -0.0220, -0.0722, -0.0604, -0.3629,\n", + " -0.4128, -0.3154, -0.3816]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002755088498815894\n", + "Grad encoder.fc1.bias: 0.0005992443766444921\n", + "Grad encoder.encoder.0.weight: 7.135984196793288e-05\n", + "Grad encoder.encoder.0.bias: 0.0005266324733383954\n", + "Grad encoder.encoder.2.weight: 6.0383219533832744e-05\n", + "Grad encoder.encoder.2.bias: 0.0003721965185832232\n", + "Grad encoder.encoder.4.weight: 0.00017690581444185227\n", + "Grad encoder.encoder.4.bias: 0.0006000458961352706\n", + "Grad decoder.fc1.0.weight: 7.475041638826951e-05\n", + "Grad decoder.fc1.0.bias: 0.0003048701328225434\n", + "Grad decoder.fc1.2.weight: 9.449545905226842e-05\n", + "Grad decoder.fc1.2.bias: 0.0005813769530504942\n", + "Grad decoder.fc1.4.weight: 0.0001007621904136613\n", + "Grad decoder.fc1.4.bias: 0.0007669827900826931\n", + "Grad decoder.fc2.weight: 0.00015959751908667386\n", + "Grad decoder.fc2.bias: 0.002229192992672324\n", + "Grad _memory_unit.weight_ih_l0: 1.0372031283623073e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.6471434719278477e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.5377690740861e-06\n", + "Grad _memory_unit.weight_ih_l1: 5.339970357454149e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.887054041726515e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.622465374064632e-05\n", + "Data X Sample: tensor([[1.4385, 1.8439, 1.9835, 2.0422, 2.1633, 2.1731, 2.2910, 2.3111, 2.4459,\n", + " 2.4343, 2.4046, 2.4052, 2.3413, 2.3857, 2.3933, 2.4356, 2.2768, 2.3599,\n", + " 2.3211, 2.3972, 2.4291, 2.4831, 2.4821, 2.4088, 2.3629, 2.4604, 2.3576,\n", + " 2.2922, 1.9844, 2.0142, 1.8582, 1.8183, 1.5070, 0.9886, 1.3726, 1.3718,\n", + " 1.3903, 1.3198, 1.3881, 1.3476, 1.3554, 0.7806, 0.7296, 1.3433, 1.9781,\n", + " 2.0300, 1.3054, 1.9704]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 3.8721e-01, 1.9971e-01, -4.8914e-01, 7.5651e-01, 4.9677e-01,\n", + " 6.7987e-01, -3.0364e-01, -1.9300e-02, -8.5773e-02, -1.1085e-01,\n", + " -3.0296e-01, 3.7039e+00, 1.0203e+00, 1.1571e-03, -6.0759e-01,\n", + " -1.0241e-01, 1.1540e+00, 4.1655e-01, 6.7537e-01, 5.2834e-01,\n", + " 5.2353e-01, 1.0869e+00, 5.9797e-01, 4.0377e-01, -1.2407e-01,\n", + " 3.1738e-01, 1.0757e+00, 3.5216e-01, -3.4166e-01, 5.7192e-01,\n", + " 3.3145e-01, 3.8904e-01, -1.7909e-01, 3.8988e-01, -5.7237e-01,\n", + " 8.0931e-02, -4.9686e-01, 8.2377e-01, 1.1148e+00, -2.0396e-01,\n", + " -2.3401e-01, -2.6451e-01, 3.0270e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4548, 0.3346, 0.1006, 0.4280, 0.2056, -0.1028, -0.3655, -0.4931,\n", + " -0.1498, -0.1698, -0.1933, 0.1882, 0.2196, 0.2233, 0.1416, 0.3142,\n", + " 0.2252, 0.1186, 0.0717, 0.0630, 0.1398, 0.0406, 0.1199, 0.0747,\n", + " -0.0171, 0.0040, -0.2036, 0.0805, 0.1102, 0.1583, 0.1636, 0.1847,\n", + " 0.3323, 0.3170, 0.2580, 0.1887, -0.0365, -0.0606, -0.0584, -0.2915,\n", + " -0.3054, -0.2375, -0.2916]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00013240022235549986\n", + "Grad encoder.fc1.bias: 0.000903741572983563\n", + "Grad encoder.encoder.0.weight: 4.0566934330854565e-05\n", + "Grad encoder.encoder.0.bias: 0.0007915450260043144\n", + "Grad encoder.encoder.2.weight: 3.8767262594774365e-05\n", + "Grad encoder.encoder.2.bias: 0.0007115191547200084\n", + "Grad encoder.encoder.4.weight: 0.0001149490854004398\n", + "Grad encoder.encoder.4.bias: 0.0015738935908302665\n", + "Grad decoder.fc1.0.weight: 7.133444887585938e-05\n", + "Grad decoder.fc1.0.bias: 0.0006635983590967953\n", + "Grad decoder.fc1.2.weight: 9.76809678832069e-05\n", + "Grad decoder.fc1.2.bias: 0.0008071069605648518\n", + "Grad decoder.fc1.4.weight: 8.635444100946188e-05\n", + "Grad decoder.fc1.4.bias: 0.0008275451837107539\n", + "Grad decoder.fc2.weight: 0.00017840281361714005\n", + "Grad decoder.fc2.bias: 0.001904780394397676\n", + "Grad _memory_unit.weight_ih_l0: 1.2012010301987175e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.2959080019500107e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.467065496603027e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.789543138234876e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011637069110292941\n", + "Grad _memory_unit.bias_hh_l1: 5.955577944405377e-05\n", + "Data X Sample: tensor([[1.4884, 1.7187, 1.8497, 1.9482, 2.0677, 2.1230, 2.2124, 2.2345, 3.6493,\n", + " 4.2621, 4.4539, 4.2300, 4.0879, 4.1470, 3.9064, 3.6691, 3.6794, 3.6521,\n", + " 3.4754, 3.3754, 3.5209, 3.3205, 2.9303, 2.9203, 2.8828, 3.0350, 3.1035,\n", + " 3.0141, 3.1535, 3.4258, 3.3805, 3.5232, 3.9337, 2.8812, 4.5665, 4.9593,\n", + " 5.1758, 5.6212, 6.0405, 5.9495, 1.1693, 0.6890, 0.6427, 1.1826, 1.7006,\n", + " 1.9156, 1.3938, 1.8610]], device='cuda:0')\n", + "Data Y Sample: tensor([[-2.2650e-01, -4.5591e-01, 8.4236e-04, -4.9159e-01, -2.0662e-01,\n", + " 5.1921e-01, -4.2526e-01, -5.4427e-03, 5.7118e-02, 4.4368e-01,\n", + " 3.6133e-01, 1.9546e+00, 3.2955e-01, -4.9263e-01, -1.2395e+00,\n", + " 1.9962e-01, -8.6480e-01, -1.1049e+00, -8.1200e-01, -7.3217e-01,\n", + " 2.9180e-01, 1.1819e+00, -2.4481e-01, -7.4409e-01, -4.0013e-01,\n", + " 2.0042e-01, -2.5481e-01, 1.3306e-02, 2.4194e-02, -4.3304e-01,\n", + " -3.0757e-01, -1.0192e-01, 2.0962e-01, -2.9412e-01, -5.6483e-01,\n", + " -3.9841e-01, -7.4337e-01, 7.0514e-02, 1.0291e+00, 6.0802e-01,\n", + " 7.8636e-01, 8.0910e-01, 3.3757e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.4337, -0.3545, -0.1070, -0.2717, -0.1674, 0.0576, 0.2029, 0.3580,\n", + " 0.0472, 0.1658, 0.3857, -0.2575, -0.1989, -0.3750, -0.2675, -0.2374,\n", + " -0.2466, -0.1338, -0.1994, -0.1190, -0.1399, -0.0267, -0.0459, 0.0266,\n", + " 0.0232, 0.0101, 0.0133, -0.0829, -0.1262, -0.1111, -0.2451, -0.2682,\n", + " -0.2409, -0.4029, -0.1185, -0.2769, 0.0065, -0.0566, 0.0201, 0.5588,\n", + " 0.4310, 0.4449, 0.3194]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00039821036625653505\n", + "Grad encoder.fc1.bias: 0.00045960897114127874\n", + "Grad encoder.encoder.0.weight: 8.756585884839296e-05\n", + "Grad encoder.encoder.0.bias: 0.00037224902189336717\n", + "Grad encoder.encoder.2.weight: 5.952655919827521e-05\n", + "Grad encoder.encoder.2.bias: 0.00035215954994782805\n", + "Grad encoder.encoder.4.weight: 0.00019058605539612472\n", + "Grad encoder.encoder.4.bias: 0.000933339586481452\n", + "Grad decoder.fc1.0.weight: 8.723112841835245e-05\n", + "Grad decoder.fc1.0.bias: 0.0003890639345627278\n", + "Grad decoder.fc1.2.weight: 0.00014682242181152105\n", + "Grad decoder.fc1.2.bias: 0.0007044345838949084\n", + "Grad decoder.fc1.4.weight: 0.00010778523574117571\n", + "Grad decoder.fc1.4.bias: 0.0006607857067137957\n", + "Grad decoder.fc2.weight: 0.00014990137424319983\n", + "Grad decoder.fc2.bias: 0.0020534454379230738\n", + "Grad _memory_unit.weight_ih_l0: 7.92431728768861e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.944968244060874e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.1162049304402899e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.636993253370747e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.224403427448124e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.192077904008329e-05\n", + "Data X Sample: tensor([[1.4449, 1.5191, 1.6198, 1.7711, 2.0267, 2.0965, 2.0491, 2.0144, 1.8381,\n", + " 3.1136, 3.9241, 4.0625, 3.8127, 3.8389, 3.6315, 3.6582, 3.5111, 3.5418,\n", + " 3.2916, 3.2099, 3.3835, 3.2761, 3.0532, 2.8000, 2.7007, 2.8235, 2.7892,\n", + " 2.7449, 2.7719, 2.8919, 2.9711, 3.1557, 3.4849, 2.6478, 4.3091, 4.7477,\n", + " 4.8493, 5.2024, 5.9264, 5.7537, 1.0022, 0.6094, 0.6245, 1.1539, 1.6253,\n", + " 1.7383, 1.1762, 1.8141]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.7848, -0.3571, -1.0558, -0.7875, 1.3287, -0.1675, -0.0911, 0.5239,\n", + " -0.3769, 0.2075, 0.3408, -0.4977, 0.0621, -0.4458, -1.6692, -1.1814,\n", + " -0.9184, -1.0945, -2.6105, -1.0203, -0.6413, -1.0003, -0.2082, -0.5436,\n", + " -0.0489, -0.4639, 0.4399, 0.8149, -0.7088, -0.8327, -0.0630, -0.7828,\n", + " 0.3668, -0.4987, -0.8441, 0.9692, -0.5204, -0.1625, -0.5596, 0.9112,\n", + " 0.7785, 1.0371, 1.7871]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.4021, -0.3371, -0.1026, -0.2630, -0.1573, 0.0514, 0.1820, 0.3315,\n", + " 0.0534, 0.1659, 0.3550, -0.2396, -0.1851, -0.3477, -0.2510, -0.2312,\n", + " -0.2401, -0.1319, -0.1837, -0.1139, -0.1259, -0.0267, -0.0472, 0.0164,\n", + " 0.0157, 0.0103, 0.0169, -0.0663, -0.1189, -0.1144, -0.2277, -0.2495,\n", + " -0.2342, -0.3758, -0.1157, -0.2543, 0.0038, -0.0489, 0.0155, 0.5172,\n", + " 0.4104, 0.4137, 0.3003]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004991550231352448\n", + "Grad encoder.fc1.bias: 0.0007995129562914371\n", + "Grad encoder.encoder.0.weight: 0.00011740827903850004\n", + "Grad encoder.encoder.0.bias: 0.0007452672580257058\n", + "Grad encoder.encoder.2.weight: 7.272283255588263e-05\n", + "Grad encoder.encoder.2.bias: 0.000702913966961205\n", + "Grad encoder.encoder.4.weight: 0.00019349568174220622\n", + "Grad encoder.encoder.4.bias: 0.0012303527910262346\n", + "Grad decoder.fc1.0.weight: 7.611982437083498e-05\n", + "Grad decoder.fc1.0.bias: 0.0004859489854425192\n", + "Grad decoder.fc1.2.weight: 0.00011582579463720322\n", + "Grad decoder.fc1.2.bias: 0.001097323140129447\n", + "Grad decoder.fc1.4.weight: 9.860037243925035e-05\n", + "Grad decoder.fc1.4.bias: 0.000997132621705532\n", + "Grad decoder.fc2.weight: 0.0001368939265375957\n", + "Grad decoder.fc2.bias: 0.0017635116819292307\n", + "Grad _memory_unit.weight_ih_l0: 1.0901308996835724e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.4708409910090268e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.3522299923351966e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.689321708108764e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.524587949272245e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.91148057335522e-05\n", + "Data X Sample: tensor([[1.4480, 1.5759, 1.7190, 1.9723, 1.8611, 1.9845, 2.0599, 2.0911, 3.3783,\n", + " 4.0378, 4.2604, 4.2027, 4.0346, 3.6916, 3.6618, 3.4298, 3.4356, 3.4703,\n", + " 3.3495, 3.3196, 3.3467, 3.3649, 2.8339, 2.7943, 2.7082, 2.8940, 2.8238,\n", + " 2.9447, 2.9627, 3.1081, 3.0166, 3.0701, 3.5707, 2.6020, 4.3802, 4.7112,\n", + " 5.0912, 5.2819, 5.6856, 5.7168, 1.1788, 0.6233, 0.6285, 1.1482, 1.7086,\n", + " 1.9556, 1.1762, 1.7593]], device='cuda:0')\n", + "Data Y Sample: tensor([[-2.4092e-01, -1.0292e+00, -1.0312e+00, -7.4456e-01, -2.2611e-01,\n", + " 4.0660e-01, 5.7540e-01, 7.0789e-01, 1.2996e+00, 7.4270e-01,\n", + " 6.4651e-01, 1.3435e+00, 4.3370e-01, 5.6908e-02, 1.6615e-01,\n", + " -1.0081e-01, -4.9224e-02, -2.7167e-01, -1.3272e+00, 1.2500e+00,\n", + " 3.3712e-01, -1.1767e-01, 1.0142e+00, 9.8108e-01, 1.0708e+00,\n", + " 6.9882e-01, 6.4717e-01, 1.6666e-01, -6.0506e-02, -6.3506e-01,\n", + " -3.1042e-01, -5.6559e-01, -4.4978e-01, -6.1529e-01, -9.4480e-01,\n", + " -3.5556e-01, -1.0781e-03, -6.5324e-01, -1.0390e-02, 7.7740e-01,\n", + " 7.4193e-01, 9.8069e-01, 8.2097e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.4179, -0.3596, -0.1143, -0.2834, -0.1733, 0.0509, 0.1813, 0.3453,\n", + " 0.0668, 0.1836, 0.3732, -0.2438, -0.1917, -0.3559, -0.2586, -0.2528,\n", + " -0.2557, -0.1486, -0.1864, -0.1247, -0.1288, -0.0283, -0.0502, 0.0115,\n", + " 0.0170, 0.0029, 0.0274, -0.0541, -0.1212, -0.1231, -0.2358, -0.2503,\n", + " -0.2363, -0.3838, -0.1188, -0.2649, -0.0038, -0.0472, 0.0149, 0.5458,\n", + " 0.4354, 0.4293, 0.3144]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004373282426968217\n", + "Grad encoder.fc1.bias: 0.000590287265367806\n", + "Grad encoder.encoder.0.weight: 0.00010366748756496236\n", + "Grad encoder.encoder.0.bias: 0.0003614212619140744\n", + "Grad encoder.encoder.2.weight: 7.157016807468608e-05\n", + "Grad encoder.encoder.2.bias: 0.0003554942086338997\n", + "Grad encoder.encoder.4.weight: 0.0002387544373050332\n", + "Grad encoder.encoder.4.bias: 0.0007902182405814528\n", + "Grad decoder.fc1.0.weight: 8.536290260963142e-05\n", + "Grad decoder.fc1.0.bias: 0.0003518152516335249\n", + "Grad decoder.fc1.2.weight: 8.686508954269812e-05\n", + "Grad decoder.fc1.2.bias: 0.00042351585580036044\n", + "Grad decoder.fc1.4.weight: 6.476140697486699e-05\n", + "Grad decoder.fc1.4.bias: 0.00042877139640040696\n", + "Grad decoder.fc2.weight: 0.0001325742923654616\n", + "Grad decoder.fc2.bias: 0.0019486320670694113\n", + "Grad _memory_unit.weight_ih_l0: 1.2585408512677532e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.276941060903482e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.774240081431344e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.365474978840211e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.408937381114811e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.8389167457353324e-05\n", + "Data X Sample: tensor([[1.4205, 1.5599, 1.6829, 1.8148, 1.9636, 2.1524, 2.1831, 2.1678, 3.7616,\n", + " 4.4327, 4.4381, 4.4013, 4.1744, 4.0570, 3.9543, 3.7991, 3.6668, 3.6927,\n", + " 3.5353, 3.7064, 3.5356, 3.3971, 2.9737, 2.9375, 2.7627, 2.8940, 2.9117,\n", + " 2.8672, 3.0286, 3.1736, 3.1881, 3.3105, 3.9469, 2.8354, 4.7356, 4.8450,\n", + " 5.1699, 5.6212, 6.2370, 5.9920, 1.0929, 0.6193, 0.6023, 1.1194, 1.5976,\n", + " 1.7726, 1.2238, 1.5560]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6875, -0.6718, -0.2397, -0.8399, -0.6731, 0.4109, 0.8736, 0.5966,\n", + " 0.7248, 0.4091, 0.6977, -0.7679, -2.3935, -0.5635, -0.9736, -0.6556,\n", + " -0.7157, -0.4194, -0.1748, 0.0832, -1.0409, 0.8011, 0.3134, 0.1767,\n", + " -0.3861, -0.0441, 1.6962, 0.0088, 0.0462, -1.0062, -2.0029, -0.9271,\n", + " -1.0863, -0.9395, 0.4711, 0.4333, 0.5692, 0.8959, 0.0040, 0.6388,\n", + " 0.8883, 1.0018, 0.3376]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3963, -0.3337, -0.0984, -0.2554, -0.1334, 0.0685, 0.2039, 0.3503,\n", + " 0.0758, 0.1725, 0.3651, -0.2506, -0.1798, -0.3503, -0.2635, -0.2329,\n", + " -0.2467, -0.1231, -0.1792, -0.1207, -0.1111, -0.0137, -0.0533, 0.0221,\n", + " 0.0061, 0.0323, -0.0070, -0.0753, -0.1298, -0.1213, -0.2392, -0.2623,\n", + " -0.2496, -0.3938, -0.1297, -0.2522, 0.0019, -0.0387, 0.0233, 0.5094,\n", + " 0.4165, 0.4291, 0.2960]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 8.338225597981364e-05\n", + "Grad encoder.fc1.bias: 0.00016619949019514024\n", + "Grad encoder.encoder.0.weight: 2.4674780433997512e-05\n", + "Grad encoder.encoder.0.bias: 0.00013430760009214282\n", + "Grad encoder.encoder.2.weight: 2.306083479197696e-05\n", + "Grad encoder.encoder.2.bias: 0.00014155595272313803\n", + "Grad encoder.encoder.4.weight: 9.73247442743741e-05\n", + "Grad encoder.encoder.4.bias: 0.0003591687127482146\n", + "Grad decoder.fc1.0.weight: 4.6897745050955564e-05\n", + "Grad decoder.fc1.0.bias: 0.00014475302305072546\n", + "Grad decoder.fc1.2.weight: 8.930680633056909e-05\n", + "Grad decoder.fc1.2.bias: 0.0003838538541458547\n", + "Grad decoder.fc1.4.weight: 6.644416862400249e-05\n", + "Grad decoder.fc1.4.bias: 0.0004016165912616998\n", + "Grad decoder.fc2.weight: 9.591981506673619e-05\n", + "Grad decoder.fc2.bias: 0.001904584583826363\n", + "Grad _memory_unit.weight_ih_l0: 5.3293542805477045e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.2408326256263535e-05\n", + "Grad _memory_unit.bias_hh_l0: 7.007641670497833e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.2475244350061985e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.3488689445657656e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.7258010959485546e-05\n", + "Data X Sample: tensor([[1.6029, 1.8920, 2.1337, 2.2784, 2.3938, 2.5119, 2.6145, 2.6263, 2.6314,\n", + " 2.6824, 2.7599, 2.7849, 2.6853, 2.6501, 2.5900, 2.6544, 2.5787, 2.6056,\n", + " 2.6453, 2.5645, 2.6327, 2.6500, 2.6797, 2.7122, 2.6651, 2.6641, 2.6693,\n", + " 2.7245, 2.5464, 2.5775, 2.5826, 2.4925, 2.3232, 1.5150, 1.9952, 1.9069,\n", + " 1.7816, 1.6803, 1.6733, 1.6597, 1.3602, 0.8006, 0.7963, 1.4467, 2.1446,\n", + " 2.3330, 1.5026, 2.2128]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 4.6415e-01, -7.3816e-01, -9.7765e-01, 5.5281e-01, -4.7608e-01,\n", + " 7.9687e-01, 9.9638e-05, -1.0617e-01, -7.7666e-01, -4.9588e-01,\n", + " -1.2069e-01, 6.2242e-02, 7.6314e-01, 6.7541e-01, -1.6479e-01,\n", + " -1.6675e-03, 5.7203e-01, -3.6044e-01, 5.4279e-01, -2.4424e-01,\n", + " 2.9275e-01, -2.1839e-01, -9.7447e-01, 4.7051e-01, 2.5238e-01,\n", + " 1.6069e+00, 6.6251e-01, -1.5452e-01, 4.2404e-01, -3.8420e-01,\n", + " 8.4640e-01, -3.3194e-01, 8.0775e-01, 3.0986e-01, 5.3151e-01,\n", + " -4.9071e-02, -1.0105e+00, -3.1845e-01, 4.0193e-03, -1.4236e-01,\n", + " 1.5690e-01, -3.4591e-01, -3.2658e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3670, 0.2937, 0.1000, 0.2675, 0.1864, -0.0870, -0.2986, -0.3468,\n", + " -0.1553, -0.1671, -0.2098, 0.1088, 0.1842, 0.1964, 0.0983, 0.2691,\n", + " 0.1674, 0.0639, 0.0338, 0.0831, 0.0995, 0.0690, 0.0845, 0.0458,\n", + " -0.0325, 0.0072, -0.1139, 0.0373, 0.0853, 0.1683, 0.1641, 0.1363,\n", + " 0.2320, 0.2267, 0.2033, 0.1827, -0.0660, -0.0495, -0.0272, -0.2585,\n", + " -0.2242, -0.1896, -0.2266]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 9.780137042980641e-05\n", + "Grad encoder.fc1.bias: 0.00010427532834000885\n", + "Grad encoder.encoder.0.weight: 3.436138649703935e-05\n", + "Grad encoder.encoder.0.bias: 0.0001293211244046688\n", + "Grad encoder.encoder.2.weight: 2.789631616906263e-05\n", + "Grad encoder.encoder.2.bias: 0.00014091411139816046\n", + "Grad encoder.encoder.4.weight: 0.00013110705185681581\n", + "Grad encoder.encoder.4.bias: 0.00035499618388712406\n", + "Grad decoder.fc1.0.weight: 6.015336111886427e-05\n", + "Grad decoder.fc1.0.bias: 0.0001463830703869462\n", + "Grad decoder.fc1.2.weight: 0.0001246260362677276\n", + "Grad decoder.fc1.2.bias: 0.0003526589716784656\n", + "Grad decoder.fc1.4.weight: 8.833834726829082e-05\n", + "Grad decoder.fc1.4.bias: 0.0005291653797030449\n", + "Grad decoder.fc2.weight: 0.00011089970212196931\n", + "Grad decoder.fc2.bias: 0.0020776994060724974\n", + "Grad _memory_unit.weight_ih_l0: 9.527729162073229e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.097893800761085e-05\n", + "Grad _memory_unit.bias_hh_l0: 7.88359102443792e-06\n", + "Grad _memory_unit.weight_ih_l1: 3.948535777453799e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.813094710698351e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.5564169845893048e-05\n", + "Data X Sample: tensor([[1.4014, 1.5031, 1.7551, 1.8586, 1.9755, 1.9845, 2.2540, 2.3935, 3.9276,\n", + " 4.3316, 4.3302, 4.1190, 4.1278, 3.9915, 3.8484, 3.8333, 3.7831, 3.6482,\n", + " 3.6984, 3.4981, 3.5553, 3.4706, 2.8436, 2.7981, 2.8340, 2.9697, 2.9410,\n", + " 3.0100, 2.9765, 3.1540, 3.3665, 3.4597, 3.8677, 2.9018, 4.5542, 4.9399,\n", + " 5.0991, 5.6291, 6.2117, 5.9580, 1.0261, 0.6094, 0.6164, 1.1281, 1.5857,\n", + " 1.7841, 1.1626, 1.7046]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6682, 0.3367, -1.2382, -0.7013, -0.3026, -0.3471, -0.0035, 0.5899,\n", + " 0.2413, 0.4325, 0.3964, -0.2417, -1.0331, -1.8408, -0.5822, -0.5550,\n", + " 0.0688, -0.9744, 1.2884, 1.0712, 0.5891, -0.0688, 0.1464, 1.3341,\n", + " -3.0867, -0.6134, -0.2351, 1.0348, -0.2700, -1.2435, -1.4041, -1.3425,\n", + " -1.2528, -1.3507, 0.0568, -0.1577, -0.5893, -0.0549, -0.3712, 0.3575,\n", + " 0.5825, 0.4071, 1.5060]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3363, -0.2844, -0.0778, -0.2175, -0.0850, 0.0705, 0.1917, 0.3121,\n", + " 0.0822, 0.1588, 0.3093, -0.2288, -0.1544, -0.3094, -0.2416, -0.1986,\n", + " -0.2240, -0.0947, -0.1563, -0.1034, -0.0824, -0.0038, -0.0533, 0.0189,\n", + " -0.0080, 0.0513, -0.0243, -0.0730, -0.1233, -0.1205, -0.2125, -0.2503,\n", + " -0.2489, -0.3621, -0.1333, -0.2075, 0.0070, -0.0239, 0.0242, 0.4155,\n", + " 0.3622, 0.3795, 0.2540]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 2.746661630226299e-05\n", + "Grad encoder.fc1.bias: 0.0011201715096831322\n", + "Grad encoder.encoder.0.weight: 1.8143724446417764e-05\n", + "Grad encoder.encoder.0.bias: 0.000718380615580827\n", + "Grad encoder.encoder.2.weight: 1.2961113498022314e-05\n", + "Grad encoder.encoder.2.bias: 0.0003815703676082194\n", + "Grad encoder.encoder.4.weight: 5.0438131438568234e-05\n", + "Grad encoder.encoder.4.bias: 0.0007303772727027535\n", + "Grad decoder.fc1.0.weight: 3.101716356468387e-05\n", + "Grad decoder.fc1.0.bias: 0.00027894036611542106\n", + "Grad decoder.fc1.2.weight: 4.88317891722545e-05\n", + "Grad decoder.fc1.2.bias: 0.0002695497532840818\n", + "Grad decoder.fc1.4.weight: 3.888645733240992e-05\n", + "Grad decoder.fc1.4.bias: 0.0002584319154266268\n", + "Grad decoder.fc2.weight: 7.551685848738998e-05\n", + "Grad decoder.fc2.bias: 0.0016244718572124839\n", + "Grad _memory_unit.weight_ih_l0: 3.6204251046001446e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.6407961084041744e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.741950296098366e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.289759777340805e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.977491335012019e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.5464280042797327e-05\n", + "Data X Sample: tensor([[1.4321, 1.7755, 1.9234, 1.9635, 2.1497, 2.2806, 2.4481, 2.4716, 2.4068,\n", + " 2.5907, 2.6520, 2.5843, 2.5677, 2.5274, 2.4790, 2.4684, 2.4293, 2.5011,\n", + " 2.5276, 2.5497, 2.6033, 2.4403, 2.4556, 2.4030, 2.4399, 2.4552, 2.4269,\n", + " 2.3860, 2.1301, 2.2435, 2.1592, 2.3046, 2.1934, 1.4875, 1.9143, 1.7877,\n", + " 1.6184, 1.4735, 1.5593, 1.6087, 1.2266, 0.6771, 0.6851, 1.2974, 1.8354,\n", + " 1.8984, 1.2986, 2.0017]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0833, -0.0815, 0.2685, -0.0810, 0.1500, -0.9216, -0.8040, -0.5280,\n", + " -1.6491, -0.1299, -0.5148, 1.3103, 0.7533, -0.9263, 0.4696, -0.0717,\n", + " 0.1294, 0.5898, 2.0337, -0.1496, 0.1933, 0.2662, -0.3074, 0.1440,\n", + " -0.2340, -0.1090, -0.5985, -0.4102, -0.8396, 0.4853, 1.0083, 0.9625,\n", + " 0.2369, 0.0480, 0.6946, 0.2651, 0.7170, 0.0000, -1.8131, -0.1268,\n", + " -0.3424, -0.3431, -0.5137]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 2.5022e-01, 1.8821e-01, 6.2812e-02, 1.4661e-01, 1.1706e-01,\n", + " -7.7478e-02, -2.2393e-01, -2.3926e-01, -9.1507e-02, -9.6067e-02,\n", + " -1.4708e-01, 6.4375e-02, 1.2821e-01, 1.2106e-01, 5.0306e-02,\n", + " 1.6361e-01, 8.6226e-02, 1.7857e-02, 1.5725e-02, 4.1415e-02,\n", + " 6.1378e-02, 4.4358e-02, 3.8754e-02, 1.8029e-04, -2.8252e-02,\n", + " 2.1094e-02, -6.5932e-02, 3.9531e-02, 6.3785e-02, 1.1261e-01,\n", + " 1.3574e-01, 7.7827e-02, 1.4406e-01, 1.4648e-01, 1.3652e-01,\n", + " 1.2852e-01, -5.9911e-02, -3.6209e-02, -2.7165e-02, -1.5798e-01,\n", + " -1.1760e-01, -1.0820e-01, -1.2140e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0011427316348999739\n", + "Grad encoder.fc1.bias: 0.0009869445348158479\n", + "Grad encoder.encoder.0.weight: 0.0002724466903600842\n", + "Grad encoder.encoder.0.bias: 0.0010262320283800364\n", + "Grad encoder.encoder.2.weight: 0.00015262837405316532\n", + "Grad encoder.encoder.2.bias: 0.0009283513063564897\n", + "Grad encoder.encoder.4.weight: 0.000492711435072124\n", + "Grad encoder.encoder.4.bias: 0.002787030767649412\n", + "Grad decoder.fc1.0.weight: 0.0001572253677295521\n", + "Grad decoder.fc1.0.bias: 0.000834992213640362\n", + "Grad decoder.fc1.2.weight: 0.00012280508235562593\n", + "Grad decoder.fc1.2.bias: 0.0008748905383981764\n", + "Grad decoder.fc1.4.weight: 9.976161527447402e-05\n", + "Grad decoder.fc1.4.bias: 0.0010815096320584416\n", + "Grad decoder.fc2.weight: 0.00012767706357408315\n", + "Grad decoder.fc2.bias: 0.002785074058920145\n", + "Grad _memory_unit.weight_ih_l0: 1.4038219887879677e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.474461118457839e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.9592000171542168e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.573401828471106e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001624465367058292\n", + "Grad _memory_unit.bias_hh_l1: 8.176955452654511e-05\n", + "Data X Sample: tensor([[1.6591, 1.8847, 2.0766, 2.2084, 2.3460, 2.3557, 2.4358, 2.5667, 2.6924,\n", + " 2.6776, 2.6584, 2.6233, 2.6298, 2.6010, 2.4286, 2.4602, 2.4309, 2.4934,\n", + " 2.5173, 2.5497, 2.4904, 2.5735, 2.5303, 2.4469, 2.4511, 2.5962, 2.5068,\n", + " 2.5817, 2.4145, 2.2893, 2.3447, 2.3903, 1.9690, 1.2976, 1.7550, 1.7172,\n", + " 1.6204, 1.5822, 1.5783, 1.4696, 1.2791, 0.7528, 0.7882, 1.3003, 2.1288,\n", + " 2.2473, 1.6589, 2.0955]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5087, 0.0434, -0.7113, 0.3169, -0.2079, 1.1198, -0.7216, -0.5147,\n", + " 0.1517, -0.8263, -0.8283, 0.3684, -1.4994, 0.6274, 1.5134, 0.1254,\n", + " -0.6033, 0.0233, 0.4775, -0.1543, 0.2042, -0.5477, 0.9882, -0.2615,\n", + " 0.5684, -1.2068, -0.3904, 0.2247, 0.0269, 0.0261, 1.0336, 0.3579,\n", + " 0.1523, -0.0037, -1.3977, -0.3570, 0.4796, -0.1310, 0.0000, -0.8592,\n", + " -0.5952, -0.6952, -0.7628]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2986, 0.2411, 0.0894, 0.1763, 0.1546, -0.0696, -0.2469, -0.2685,\n", + " -0.1281, -0.1375, -0.1840, 0.0811, 0.1456, 0.1578, 0.0661, 0.2109,\n", + " 0.1159, 0.0322, 0.0244, 0.0702, 0.0807, 0.0600, 0.0557, 0.0207,\n", + " -0.0349, 0.0178, -0.0723, 0.0341, 0.0691, 0.1452, 0.1610, 0.1044,\n", + " 0.1685, 0.1763, 0.1573, 0.1582, -0.0786, -0.0326, -0.0184, -0.2211,\n", + " -0.1681, -0.1563, -0.1667]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 9.252816380467266e-05\n", + "Grad encoder.fc1.bias: 0.00025777285918593407\n", + "Grad encoder.encoder.0.weight: 2.4386250515817665e-05\n", + "Grad encoder.encoder.0.bias: 0.00018813577480614185\n", + "Grad encoder.encoder.2.weight: 1.9102028090856038e-05\n", + "Grad encoder.encoder.2.bias: 0.00022703257855027914\n", + "Grad encoder.encoder.4.weight: 6.858812412247062e-05\n", + "Grad encoder.encoder.4.bias: 0.0008763553923927248\n", + "Grad decoder.fc1.0.weight: 4.35566580563318e-05\n", + "Grad decoder.fc1.0.bias: 0.00033735751640051603\n", + "Grad decoder.fc1.2.weight: 5.061923002358526e-05\n", + "Grad decoder.fc1.2.bias: 0.00037835055263713\n", + "Grad decoder.fc1.4.weight: 3.631538129411638e-05\n", + "Grad decoder.fc1.4.bias: 0.00036653567804023623\n", + "Grad decoder.fc2.weight: 7.603749691043049e-05\n", + "Grad decoder.fc2.bias: 0.001876572729088366\n", + "Grad _memory_unit.weight_ih_l0: 6.438167474698275e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.856880564650055e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.6168009096872993e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.2607604225631803e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.620029307669029e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.39131111104507e-05\n", + "Data X Sample: tensor([[1.3812, 1.7129, 1.8903, 1.8870, 2.0353, 2.1716, 2.1277, 2.1450, 3.6493,\n", + " 4.3411, 4.2223, 4.3293, 4.0413, 3.9425, 3.8509, 3.7293, 3.6872, 3.5824,\n", + " 3.7728, 3.6766, 3.5773, 3.4660, 3.0267, 2.7829, 2.9353, 2.8731, 2.9224,\n", + " 2.9407, 3.1257, 3.2522, 3.3595, 3.4016, 3.8193, 2.8538, 4.6008, 4.9277,\n", + " 4.9831, 5.4118, 6.0088, 5.7877, 1.1645, 0.6492, 0.7053, 1.1769, 1.6610,\n", + " 1.7784, 1.1422, 1.6889]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4075, 0.4912, 1.0243, 0.4403, 0.3536, 0.2615, 0.2004, 0.0666,\n", + " -0.3785, -0.7153, 0.5375, -0.0732, 1.1206, -1.1138, -0.3842, 1.4878,\n", + " 0.1013, 0.7374, 0.2941, -0.1203, -0.5735, 3.4187, 0.3391, 1.6119,\n", + " 0.7833, -0.8364, -0.4707, 0.5270, -0.1062, 0.0254, -0.7785, 0.0263,\n", + " 0.0579, 0.1023, -0.1355, 0.3486, -0.2445, -0.7406, -0.7513, -0.2878,\n", + " -0.3307, -0.2466, -0.4456]], device='cuda:0')\n", + "Prediction Sample: tensor([[-2.7179e-01, -2.4836e-01, -6.6828e-02, -2.0142e-01, -7.0136e-02,\n", + " 5.7637e-02, 1.4679e-01, 2.5622e-01, 9.1292e-02, 1.5874e-01,\n", + " 2.4330e-01, -1.8805e-01, -1.2858e-01, -2.5023e-01, -2.0804e-01,\n", + " -1.8402e-01, -2.1177e-01, -9.3062e-02, -1.2209e-01, -9.4308e-02,\n", + " -5.7459e-02, -1.0282e-02, -5.3009e-02, -6.8026e-03, -2.2883e-02,\n", + " 4.1750e-02, -7.5175e-03, -3.5006e-02, -1.0283e-01, -1.2273e-01,\n", + " -1.7378e-01, -2.0545e-01, -2.2725e-01, -3.0215e-01, -1.2771e-01,\n", + " -1.5993e-01, 3.1734e-04, -8.7310e-03, 1.1328e-02, 3.3083e-01,\n", + " 3.1700e-01, 3.0900e-01, 2.1450e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00017275972641073167\n", + "Grad encoder.fc1.bias: 9.475127444602549e-05\n", + "Grad encoder.encoder.0.weight: 4.6438839490292594e-05\n", + "Grad encoder.encoder.0.bias: 0.00011712787090800703\n", + "Grad encoder.encoder.2.weight: 3.358966569066979e-05\n", + "Grad encoder.encoder.2.bias: 0.00015628476103302091\n", + "Grad encoder.encoder.4.weight: 0.00011609109060373157\n", + "Grad encoder.encoder.4.bias: 0.0005642040632665157\n", + "Grad decoder.fc1.0.weight: 3.677857603179291e-05\n", + "Grad decoder.fc1.0.bias: 0.0001650820777285844\n", + "Grad decoder.fc1.2.weight: 3.961992479162291e-05\n", + "Grad decoder.fc1.2.bias: 0.00033561832970008254\n", + "Grad decoder.fc1.4.weight: 4.012089630123228e-05\n", + "Grad decoder.fc1.4.bias: 0.0003645685501396656\n", + "Grad decoder.fc2.weight: 7.437022577505559e-05\n", + "Grad decoder.fc2.bias: 0.002078634686768055\n", + "Grad _memory_unit.weight_ih_l0: 8.396334123972338e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.1920717952307314e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.595276085543446e-06\n", + "Grad _memory_unit.weight_ih_l1: 3.7312217955332017e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.567203334067017e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.8197717256261967e-05\n", + "Data X Sample: tensor([[1.5011, 1.7799, 1.8933, 2.0247, 2.1992, 2.3661, 2.4913, 2.5397, 2.6265,\n", + " 2.6792, 2.6394, 2.6720, 2.6343, 2.5547, 2.5648, 2.3850, 2.4435, 2.5592,\n", + " 2.5503, 2.4809, 2.4732, 2.4326, 2.3953, 2.3687, 2.3366, 2.4473, 2.3922,\n", + " 2.4023, 2.2619, 2.2762, 2.2152, 2.2024, 2.3188, 1.4990, 1.9732, 1.7731,\n", + " 1.6420, 1.5133, 1.5529, 1.6143, 1.1741, 0.7050, 0.6972, 1.2486, 1.7641,\n", + " 1.9671, 1.2986, 1.9939]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1547, 1.0719, 0.5111, 0.5156, 0.0080, -0.8353, -0.0665, -0.5744,\n", + " 0.4042, 0.1954, 0.2362, 0.7847, 0.5980, 0.9359, 0.0209, 0.3369,\n", + " 0.2921, -0.7583, -0.4084, -0.0499, 0.3895, 0.5465, 0.1350, 0.6929,\n", + " -0.9413, -0.3847, 0.7174, 0.4359, 0.1958, -0.5849, 0.5115, 1.3261,\n", + " 0.4634, 0.6123, 0.1647, -0.6427, 0.4246, 0.2302, -0.4768, 0.8621,\n", + " -0.9353, -1.0614, -0.2463]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3990, 0.3300, 0.1159, 0.2541, 0.2018, -0.0952, -0.3013, -0.3245,\n", + " -0.1942, -0.2200, -0.2418, 0.1045, 0.1631, 0.2162, 0.1000, 0.3018,\n", + " 0.1471, 0.0375, 0.0457, 0.1265, 0.1221, 0.0851, 0.0774, 0.0614,\n", + " -0.0405, 0.0476, -0.0983, 0.0411, 0.1007, 0.2125, 0.1978, 0.1229,\n", + " 0.2344, 0.2260, 0.1948, 0.2423, -0.0816, -0.0564, -0.0127, -0.2825,\n", + " -0.2370, -0.2410, -0.2558]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00022487144451588392\n", + "Grad encoder.fc1.bias: 0.0011913483031094074\n", + "Grad encoder.encoder.0.weight: 6.173575820866972e-05\n", + "Grad encoder.encoder.0.bias: 0.0007587691070511937\n", + "Grad encoder.encoder.2.weight: 3.309993917355314e-05\n", + "Grad encoder.encoder.2.bias: 0.0004973325412720442\n", + "Grad encoder.encoder.4.weight: 9.57943411776796e-05\n", + "Grad encoder.encoder.4.bias: 0.0009097974980250001\n", + "Grad decoder.fc1.0.weight: 3.9948401536094025e-05\n", + "Grad decoder.fc1.0.bias: 0.00033016345696523786\n", + "Grad decoder.fc1.2.weight: 4.146339779254049e-05\n", + "Grad decoder.fc1.2.bias: 0.00030670955311506987\n", + "Grad decoder.fc1.4.weight: 2.7950874937232584e-05\n", + "Grad decoder.fc1.4.bias: 0.00029054671176709235\n", + "Grad decoder.fc2.weight: 9.179823246086016e-05\n", + "Grad decoder.fc2.bias: 0.001924274954944849\n", + "Grad _memory_unit.weight_ih_l0: 6.373159067152301e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.1523533834842965e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.6407113434979692e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.8206902698002523e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.541698530782014e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.35194417857565e-05\n", + "Data X Sample: tensor([[ 0.0191, 0.0146, 0.0165, 0.0044, 0.0085, 0.0309, 0.0077, 0.0085,\n", + " 0.0488, 0.0016, 0.0412, 0.0097, 0.0067, -0.0082, -0.0177, 0.0109,\n", + " -0.0598, -0.0600, -0.0909, -0.0930, -0.0662, -0.0551, -0.1374, -0.1412,\n", + " -0.0751, -0.2037, -0.2318, -0.3630, -0.0347, -0.0360, -0.0700, -0.0663,\n", + " -0.0440, -0.0526, -0.0539, -0.0219, -0.0374, -0.0318, -0.0887, 0.0085,\n", + " 0.0095, -0.0139, 0.0182, 0.0057, 0.0198, 0.0057, 0.0272, 0.0000]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[-1.6193, -0.3306, -0.0907, -0.0701, 0.4706, -0.0179, -0.1185, -0.3021,\n", + " 0.3878, 0.6923, 0.5300, 0.7728, 0.5019, 0.4816, 1.2763, 1.3190,\n", + " -0.1767, -0.2977, 0.5010, -0.0391, 0.5275, 0.0259, -0.2609, -0.1453,\n", + " 0.2987, 0.3380, -0.4639, -0.7857, -0.1426, -1.9272, 0.3459, -0.0433,\n", + " -1.0149, -0.1589, -0.1843, -0.0087, -0.9268, 0.3805, 0.5660, 0.2865,\n", + " -0.3876, -0.7155, 0.6495]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5577, 0.5077, 0.2682, 0.3782, 0.2646, -0.1692, -0.5523, -0.6030,\n", + " -0.3376, -0.3471, -0.3380, 0.2393, 0.2928, 0.3493, 0.1517, 0.4257,\n", + " 0.2909, 0.1352, 0.1272, 0.2053, 0.1605, 0.1051, 0.0365, 0.0920,\n", + " 0.0345, 0.0617, -0.0646, 0.1286, 0.2824, 0.4225, 0.4420, 0.2657,\n", + " 0.3666, 0.4290, 0.2941, 0.3038, -0.0472, 0.0509, -0.0227, -0.4436,\n", + " -0.3999, -0.4110, -0.4001]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00030173445702530444\n", + "Grad encoder.fc1.bias: 0.00047372974222525954\n", + "Grad encoder.encoder.0.weight: 7.894141890574247e-05\n", + "Grad encoder.encoder.0.bias: 0.00045920678530819714\n", + "Grad encoder.encoder.2.weight: 4.751753294840455e-05\n", + "Grad encoder.encoder.2.bias: 0.00037026870995759964\n", + "Grad encoder.encoder.4.weight: 0.00015737427747808397\n", + "Grad encoder.encoder.4.bias: 0.0010646937880665064\n", + "Grad decoder.fc1.0.weight: 6.200634379638359e-05\n", + "Grad decoder.fc1.0.bias: 0.00038119324017316103\n", + "Grad decoder.fc1.2.weight: 7.591989560751244e-05\n", + "Grad decoder.fc1.2.bias: 0.0005425163544714451\n", + "Grad decoder.fc1.4.weight: 6.250213482417166e-05\n", + "Grad decoder.fc1.4.bias: 0.0006477622082456946\n", + "Grad decoder.fc2.weight: 0.00010117422789335251\n", + "Grad decoder.fc2.bias: 0.0023035132326185703\n", + "Grad _memory_unit.weight_ih_l0: 8.47656156111043e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.231887265224941e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.2771690307999961e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.711118890554644e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.598035492468625e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.361732135294005e-05\n", + "Data X Sample: tensor([[ 0.0127, 0.0102, 0.0270, 0.0306, 0.0188, 0.0486, 0.0185, 0.0341,\n", + " 0.0342, 0.0379, 0.0508, 0.0156, 0.0133, 0.0409, 0.0126, 0.0246,\n", + " -0.1258, -0.1586, -0.1900, -0.1692, -0.1816, -0.1148, -0.1831, -0.1947,\n", + " -0.1595, -0.3187, -0.2930, -0.5057, -0.0486, -0.0852, -0.0700, -0.0746,\n", + " -0.0242, -0.0618, -0.0368, 0.0000, -0.0079, -0.0053, -0.0254, -0.0085,\n", + " 0.0000, -0.0040, 0.0000, 0.0057, -0.0040, 0.0286, 0.0272, 0.0391]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0171, -0.9806, 0.1244, 1.6291, 0.4402, -0.0734, 0.2182, -0.6988,\n", + " 0.9417, 1.4742, 1.0625, 0.0648, 2.3355, 0.1994, 1.1386, 0.6397,\n", + " 0.5272, -0.0566, 0.2415, 0.4456, 0.2267, -0.3501, 0.2455, -0.4879,\n", + " -0.5231, 0.2352, -0.2871, -0.4697, 0.0296, -0.1825, 0.0037, 0.6139,\n", + " 0.6823, 0.3321, -0.7867, -0.6199, 0.6097, 0.0940, -0.3730, -0.9690,\n", + " 0.0929, -0.5803, -0.5198]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5287, 0.4807, 0.2587, 0.3619, 0.2701, -0.1490, -0.5116, -0.5627,\n", + " -0.3137, -0.3212, -0.3185, 0.2265, 0.2813, 0.3224, 0.1372, 0.4091,\n", + " 0.2681, 0.1172, 0.1186, 0.1912, 0.1629, 0.1076, 0.0340, 0.0816,\n", + " 0.0347, 0.0613, -0.0676, 0.1098, 0.2581, 0.3866, 0.4173, 0.2441,\n", + " 0.3457, 0.4068, 0.2830, 0.3003, -0.0495, 0.0491, -0.0224, -0.4149,\n", + " -0.3766, -0.3962, -0.3856]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006073598051443696\n", + "Grad encoder.fc1.bias: 0.0005100403213873506\n", + "Grad encoder.encoder.0.weight: 0.0001428174291504547\n", + "Grad encoder.encoder.0.bias: 0.0005834228359162807\n", + "Grad encoder.encoder.2.weight: 9.50043904595077e-05\n", + "Grad encoder.encoder.2.bias: 0.0007296488620340824\n", + "Grad encoder.encoder.4.weight: 0.0002777031622827053\n", + "Grad encoder.encoder.4.bias: 0.001443736138753593\n", + "Grad decoder.fc1.0.weight: 0.00010175429633818567\n", + "Grad decoder.fc1.0.bias: 0.0005974698578938842\n", + "Grad decoder.fc1.2.weight: 9.936100104823709e-05\n", + "Grad decoder.fc1.2.bias: 0.0011242839973419905\n", + "Grad decoder.fc1.4.weight: 6.663863314315677e-05\n", + "Grad decoder.fc1.4.bias: 0.0009135594591498375\n", + "Grad decoder.fc2.weight: 0.00011316946620354429\n", + "Grad decoder.fc2.bias: 0.0018237853655591607\n", + "Grad _memory_unit.weight_ih_l0: 2.5436946089030243e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.57170644949656e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.1384595786221325e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.015229554468533e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00014827509585302323\n", + "Grad _memory_unit.bias_hh_l1: 7.565727719338611e-05\n", + "Data X Sample: tensor([[ 0.0117, -0.0044, 0.0090, 0.0087, -0.0085, 0.0074, 0.0123, 0.0114,\n", + " 0.0195, 0.0142, 0.0254, 0.0214, 0.0155, -0.0027, 0.0050, 0.0041,\n", + " -0.0472, -0.0658, -0.0764, -0.0688, -0.0932, -0.0551, -0.0747, -0.0706,\n", + " -0.0544, -0.0993, -0.1039, -0.1917, -0.0659, -0.0066, -0.0210, -0.0166,\n", + " -0.0066, -0.0435, -0.0025, 0.0438, 0.0079, 0.0159, 0.0317, 0.0028,\n", + " 0.0286, 0.0100, 0.0162, -0.0029, 0.0079, 0.0286, -0.0136, -0.0313]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.2985e+00, 1.2780e+00, 3.8357e-01, 2.5693e+00, 1.5159e-01,\n", + " 9.6219e-01, -5.9078e-01, -9.7552e-01, 3.6543e-01, -6.4351e-01,\n", + " -4.3739e-01, 4.1250e-01, 9.2413e-01, -6.2575e-01, -1.0314e-01,\n", + " 1.1270e-01, -7.2765e-01, 4.6550e-01, -3.8780e-01, 4.0826e-01,\n", + " 6.3307e-01, -3.8319e-01, 4.7756e-01, -1.7553e+00, -6.3947e-01,\n", + " 2.9459e-02, 5.6201e-01, -2.2504e-01, -5.0151e-01, -1.3893e-01,\n", + " 8.1758e-01, -4.3832e-01, 4.5153e-01, 3.6593e-01, -8.3266e-02,\n", + " -1.7780e-01, -1.0781e-03, -6.5324e-01, 1.7270e-02, -6.9164e-01,\n", + " -7.5806e-01, -6.5578e-01, -8.0928e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5597, 0.5067, 0.2689, 0.3708, 0.2612, -0.1690, -0.5497, -0.6048,\n", + " -0.3316, -0.3486, -0.3364, 0.2423, 0.3077, 0.3453, 0.1608, 0.4178,\n", + " 0.2926, 0.1233, 0.1336, 0.2038, 0.1622, 0.0982, 0.0259, 0.0842,\n", + " 0.0402, 0.0869, -0.0593, 0.1314, 0.2881, 0.4184, 0.4499, 0.2648,\n", + " 0.3658, 0.4353, 0.2911, 0.3000, -0.0534, 0.0545, -0.0254, -0.4381,\n", + " -0.4019, -0.4264, -0.4010]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 2.3961103579495102e-05\n", + "Grad encoder.fc1.bias: 0.0006596907041966915\n", + "Grad encoder.encoder.0.weight: 1.4414093129744288e-05\n", + "Grad encoder.encoder.0.bias: 0.0007158748339861631\n", + "Grad encoder.encoder.2.weight: 2.1382775230449624e-05\n", + "Grad encoder.encoder.2.bias: 0.0006832189974375069\n", + "Grad encoder.encoder.4.weight: 0.00010121597733814269\n", + "Grad encoder.encoder.4.bias: 0.002351118717342615\n", + "Grad decoder.fc1.0.weight: 7.760393782518804e-05\n", + "Grad decoder.fc1.0.bias: 0.0009132839040830731\n", + "Grad decoder.fc1.2.weight: 9.657801274443045e-05\n", + "Grad decoder.fc1.2.bias: 0.0006182924844324589\n", + "Grad decoder.fc1.4.weight: 7.623050623806193e-05\n", + "Grad decoder.fc1.4.bias: 0.0006087716901674867\n", + "Grad decoder.fc2.weight: 0.00011023181286873296\n", + "Grad decoder.fc2.bias: 0.0018885055324062705\n", + "Grad _memory_unit.weight_ih_l0: 1.1980229828623123e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.174222992034629e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.8989437598502263e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.6214578257349785e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00018507381901144981\n", + "Grad _memory_unit.bias_hh_l1: 9.552754636388272e-05\n", + "Data X Sample: tensor([[1.3218, 1.3924, 1.6589, 1.8498, 2.1053, 3.7966, 4.1398, 4.0346, 4.2449,\n", + " 4.1436, 4.0320, 3.9184, 3.7261, 3.6126, 3.5988, 3.3806, 3.3743, 3.3310,\n", + " 3.3680, 3.3475, 3.1799, 3.0986, 2.7014, 2.5767, 2.6407, 2.7007, 2.7945,\n", + " 2.9284, 2.8655, 2.9378, 3.0761, 3.0811, 3.2781, 2.3869, 4.0910, 4.4875,\n", + " 4.9162, 5.2475, 5.8884, 5.7452, 1.0404, 0.6054, 0.5962, 1.1166, 1.5698,\n", + " 1.6926, 1.2646, 1.8062]], device='cuda:0')\n", + "Data Y Sample: tensor([[-4.9098e-01, -1.3021e-01, 5.3787e-01, 3.3716e-01, -3.6634e-01,\n", + " -1.9860e-01, 2.1630e-01, 5.2811e-03, 1.1786e-01, 4.0073e-01,\n", + " 3.5483e-01, -3.5573e-01, 2.1081e+00, -1.1832e+00, -1.1858e-01,\n", + " 4.1618e-01, -2.6146e-01, -4.9797e-01, 4.2661e-01, 4.4317e-01,\n", + " 3.3518e-01, 8.1836e-02, 3.0733e-01, -6.7824e-04, 2.8115e-01,\n", + " -1.0127e-01, -2.7319e-02, -1.6254e-01, 1.5873e-01, 2.6064e-01,\n", + " -3.3653e-01, 3.2841e-01, -5.7398e-01, -3.9130e-01, -2.3949e-01,\n", + " -1.1943e-01, -4.4044e-01, 6.3434e-01, -8.8267e-01, -2.3661e-01,\n", + " -3.4234e-01, -2.6739e-01, 8.5156e-02]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1678, -0.1872, -0.0455, -0.1711, -0.0533, 0.0391, 0.0774, 0.1668,\n", + " 0.0905, 0.1433, 0.1368, -0.1202, -0.0794, -0.1566, -0.1467, -0.1559,\n", + " -0.1919, -0.0865, -0.0674, -0.0794, -0.0297, -0.0240, -0.0535, -0.0439,\n", + " -0.0412, 0.0304, 0.0177, 0.0169, -0.0684, -0.1166, -0.1126, -0.1315,\n", + " -0.1851, -0.1978, -0.1137, -0.0932, -0.0104, 0.0102, -0.0117, 0.2064,\n", + " 0.2450, 0.1931, 0.1471]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00010368175571784377\n", + "Grad encoder.fc1.bias: 0.00011815862671937793\n", + "Grad encoder.encoder.0.weight: 2.5081921194214374e-05\n", + "Grad encoder.encoder.0.bias: 0.00016783177852630615\n", + "Grad encoder.encoder.2.weight: 2.0482852050918154e-05\n", + "Grad encoder.encoder.2.bias: 0.00016057011089287698\n", + "Grad encoder.encoder.4.weight: 6.161220517242327e-05\n", + "Grad encoder.encoder.4.bias: 0.0002516251406632364\n", + "Grad decoder.fc1.0.weight: 3.332972482894547e-05\n", + "Grad decoder.fc1.0.bias: 0.00015567190712317824\n", + "Grad decoder.fc1.2.weight: 5.4106196330394596e-05\n", + "Grad decoder.fc1.2.bias: 0.0003525568754412234\n", + "Grad decoder.fc1.4.weight: 4.298529529478401e-05\n", + "Grad decoder.fc1.4.bias: 0.0003916301066055894\n", + "Grad decoder.fc2.weight: 7.717219705227762e-05\n", + "Grad decoder.fc2.bias: 0.001982821384444833\n", + "Grad _memory_unit.weight_ih_l0: 8.475108188576996e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.1497069610632025e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.1719364920281805e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.2473450371762738e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.49491960555315e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.782225055852905e-05\n", + "Data X Sample: tensor([[1.3504, 1.5235, 1.7085, 1.7645, 1.7570, 2.0537, 2.3156, 2.2146, 2.3360,\n", + " 3.6412, 4.1811, 4.1930, 3.9481, 3.8552, 3.7551, 3.6459, 3.5976, 3.4567,\n", + " 3.4981, 3.4386, 3.3884, 3.3940, 2.9857, 2.7771, 2.7195, 2.8417, 2.9224,\n", + " 2.8632, 2.9835, 3.0721, 3.0796, 3.2331, 3.4981, 2.5631, 4.3116, 4.6407,\n", + " 5.0519, 5.3641, 5.8250, 5.7906, 1.0547, 0.6293, 0.6629, 1.1281, 1.6095,\n", + " 1.7269, 1.1150, 1.6264]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3260, -0.4646, -1.1637, -0.8155, -0.7764, -0.1319, 0.2296, 0.2513,\n", + " 0.2656, 1.0405, 0.4273, 0.3712, 0.1126, -1.3610, -0.7505, -0.1893,\n", + " -1.4128, -0.8765, 0.2103, -0.4273, 0.9775, 1.2812, -0.3975, 0.7312,\n", + " 0.5148, 0.3489, 0.8586, 0.1502, -0.0911, -0.1265, -0.4834, -0.5428,\n", + " -0.9292, -1.5660, -0.5683, -1.9644, 0.5815, 0.8631, 0.7827, 1.0096,\n", + " 0.7385, 1.3489, 1.1914]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1751, -0.1923, -0.0468, -0.1729, -0.0512, 0.0443, 0.0834, 0.1742,\n", + " 0.0933, 0.1471, 0.1436, -0.1224, -0.0829, -0.1637, -0.1516, -0.1597,\n", + " -0.1941, -0.0871, -0.0696, -0.0815, -0.0315, -0.0247, -0.0532, -0.0428,\n", + " -0.0381, 0.0323, 0.0170, 0.0133, -0.0713, -0.1196, -0.1185, -0.1377,\n", + " -0.1893, -0.2049, -0.1169, -0.0957, -0.0124, 0.0090, -0.0088, 0.2135,\n", + " 0.2486, 0.2003, 0.1514]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000855213962495327\n", + "Grad encoder.fc1.bias: 0.0005134974489919841\n", + "Grad encoder.encoder.0.weight: 0.00018130724492948502\n", + "Grad encoder.encoder.0.bias: 0.00067894347012043\n", + "Grad encoder.encoder.2.weight: 0.00014124231529422104\n", + "Grad encoder.encoder.2.bias: 0.0011255871504545212\n", + "Grad encoder.encoder.4.weight: 0.000366129883332178\n", + "Grad encoder.encoder.4.bias: 0.0034431610256433487\n", + "Grad decoder.fc1.0.weight: 0.00016262209101114422\n", + "Grad decoder.fc1.0.bias: 0.0009329338208772242\n", + "Grad decoder.fc1.2.weight: 0.00016561831580474973\n", + "Grad decoder.fc1.2.bias: 0.002082203282043338\n", + "Grad decoder.fc1.4.weight: 8.993828669190407e-05\n", + "Grad decoder.fc1.4.bias: 0.001564256614074111\n", + "Grad decoder.fc2.weight: 0.00010244543955195695\n", + "Grad decoder.fc2.bias: 0.002433426445350051\n", + "Grad _memory_unit.weight_ih_l0: 5.166198388906196e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.973438187036663e-05\n", + "Grad _memory_unit.bias_hh_l0: 6.403490260709077e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.1541942260228097e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00028073284192942083\n", + "Grad _memory_unit.bias_hh_l1: 0.0001442250795662403\n", + "Data X Sample: tensor([[1.2815, 1.3968, 1.5627, 1.7755, 1.9397, 2.0405, 2.0784, 2.2146, 3.7543,\n", + " 4.2020, 4.3524, 4.2416, 3.8637, 3.9752, 3.7980, 3.5994, 3.4608, 3.5921,\n", + " 3.5704, 3.6283, 3.5258, 3.4109, 3.0508, 2.8497, 2.8134, 2.9541, 3.0449,\n", + " 3.0222, 3.1014, 3.2195, 3.3805, 3.3215, 3.8017, 2.8538, 4.6425, 5.0542,\n", + " 5.1148, 5.5019, 6.0595, 5.9211, 0.9975, 0.6074, 0.5699, 1.0276, 1.5421,\n", + " 1.6125, 1.1898, 1.7046]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.4085, -0.6805, -0.5922, 0.4536, -0.8790, -1.1819, 0.2148, 0.7770,\n", + " -0.3229, 0.5483, 0.7389, -0.4864, -1.3013, -0.2198, -0.2770, -0.3679,\n", + " -0.8222, -0.0896, -0.2143, -1.2710, -0.2424, -0.5362, -0.7051, 0.0621,\n", + " -1.3081, -1.5186, 0.4931, 1.0331, -0.8427, 0.4537, -0.1355, 0.0720,\n", + " -0.0126, -0.1670, -0.5908, -0.8151, -0.5085, -0.0751, 0.0040, 0.9849,\n", + " 0.7943, 0.4609, 0.3534]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1771, -0.1940, -0.0479, -0.1726, -0.0494, 0.0480, 0.0855, 0.1765,\n", + " 0.0955, 0.1501, 0.1452, -0.1214, -0.0839, -0.1660, -0.1536, -0.1618,\n", + " -0.1952, -0.0872, -0.0689, -0.0826, -0.0320, -0.0260, -0.0523, -0.0434,\n", + " -0.0366, 0.0329, 0.0177, 0.0118, -0.0724, -0.1216, -0.1208, -0.1398,\n", + " -0.1908, -0.2070, -0.1190, -0.0948, -0.0143, 0.0089, -0.0069, 0.2148,\n", + " 0.2490, 0.2019, 0.1527]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004311852972023189\n", + "Grad encoder.fc1.bias: 0.0003778827376663685\n", + "Grad encoder.encoder.0.weight: 9.785426664166152e-05\n", + "Grad encoder.encoder.0.bias: 0.0003346304874867201\n", + "Grad encoder.encoder.2.weight: 5.740623237215914e-05\n", + "Grad encoder.encoder.2.bias: 0.00029734167037531734\n", + "Grad encoder.encoder.4.weight: 0.00018960463057737797\n", + "Grad encoder.encoder.4.bias: 0.0006626627873629332\n", + "Grad decoder.fc1.0.weight: 5.71761374885682e-05\n", + "Grad decoder.fc1.0.bias: 0.00022483746579382569\n", + "Grad decoder.fc1.2.weight: 7.073876622598618e-05\n", + "Grad decoder.fc1.2.bias: 0.00038490642327815294\n", + "Grad decoder.fc1.4.weight: 6.086389475967735e-05\n", + "Grad decoder.fc1.4.bias: 0.0005273015704005957\n", + "Grad decoder.fc2.weight: 0.00010388011287432164\n", + "Grad decoder.fc2.bias: 0.0026243356987833977\n", + "Grad _memory_unit.weight_ih_l0: 7.489346899092197e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.0452707758522592e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.1230213203816675e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.3351857382513117e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.321216303855181e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.7195979782845825e-05\n", + "Data X Sample: tensor([[1.5021, 1.6371, 1.8332, 1.9985, 2.1497, 2.2939, 2.4805, 2.5738, 2.5826,\n", + " 2.6334, 2.6330, 2.6505, 2.5277, 2.5792, 2.4715, 2.5231, 2.4875, 2.5340,\n", + " 2.6019, 2.4976, 2.4708, 2.5382, 2.4291, 2.3171, 2.3554, 2.3873, 2.3123,\n", + " 2.2595, 2.2966, 2.2959, 2.2642, 2.2715, 2.2264, 1.4509, 1.9438, 1.8169,\n", + " 1.6440, 1.5133, 1.6100, 1.6115, 1.1550, 0.6990, 0.6811, 1.2113, 1.8235,\n", + " 2.0414, 1.4278, 1.9470]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7800, 0.4984, 0.7661, 0.9895, -0.5059, -0.2714, -1.3018, -1.3155,\n", + " -0.5530, -0.7586, -0.7955, 0.1938, 0.5371, 0.5405, -3.0181, 0.5237,\n", + " 0.6015, -0.4586, -0.0779, -0.1987, 0.1648, -0.2977, -0.6213, -1.1055,\n", + " -0.1313, -0.5275, 0.3101, 0.5409, 1.6036, 0.9249, 1.8926, -0.4292,\n", + " 1.0940, 0.1854, 0.6804, -0.9802, 0.9536, -0.7725, 0.1407, -0.6896,\n", + " -0.3554, -0.2907, -1.3335]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4864, 0.3806, 0.1212, 0.2888, 0.1908, -0.1367, -0.3381, -0.3984,\n", + " -0.2309, -0.2951, -0.2801, 0.1604, 0.1767, 0.2439, 0.1531, 0.3290,\n", + " 0.1566, 0.0205, 0.0695, 0.1579, 0.1533, 0.0639, 0.0652, 0.0634,\n", + " -0.0336, 0.1259, -0.0992, 0.0535, 0.1601, 0.2574, 0.2574, 0.1386,\n", + " 0.2927, 0.2787, 0.2042, 0.3075, -0.1044, -0.0699, 0.0113, -0.3221,\n", + " -0.3097, -0.3407, -0.3094]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0014972848584875464\n", + "Grad encoder.fc1.bias: 0.0010166768915951252\n", + "Grad encoder.encoder.0.weight: 0.00027548676007427275\n", + "Grad encoder.encoder.0.bias: 0.0012475629337131977\n", + "Grad encoder.encoder.2.weight: 0.00014079108950681984\n", + "Grad encoder.encoder.2.bias: 0.0013123592361807823\n", + "Grad encoder.encoder.4.weight: 0.00042964774183928967\n", + "Grad encoder.encoder.4.bias: 0.0042340513318777084\n", + "Grad decoder.fc1.0.weight: 0.00012999166210647672\n", + "Grad decoder.fc1.0.bias: 0.0009025597828440368\n", + "Grad decoder.fc1.2.weight: 7.303307938855141e-05\n", + "Grad decoder.fc1.2.bias: 0.0016334300162270665\n", + "Grad decoder.fc1.4.weight: 6.111649418016896e-05\n", + "Grad decoder.fc1.4.bias: 0.0012196716852486134\n", + "Grad decoder.fc2.weight: 0.00013569915608968586\n", + "Grad decoder.fc2.bias: 0.002072312403470278\n", + "Grad _memory_unit.weight_ih_l0: 1.8694354366743937e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.116063402965665e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.9645312679349445e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.5429093764396384e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00019780673028435558\n", + "Grad _memory_unit.bias_hh_l1: 9.858857083600014e-05\n", + "Data X Sample: tensor([[1.3016, 1.4886, 1.7355, 1.8564, 1.9738, 2.0478, 2.1646, 2.0826, 3.8153,\n", + " 4.2257, 4.3112, 4.5513, 4.1678, 4.0079, 3.7980, 3.7662, 3.6982, 3.5554,\n", + " 3.5787, 3.5874, 3.5773, 3.3894, 2.9689, 2.9088, 2.7495, 2.8444, 2.8611,\n", + " 3.0100, 3.0182, 3.0164, 3.2825, 3.3270, 3.7841, 2.7439, 4.5935, 4.8328,\n", + " 5.2859, 5.5046, 6.0659, 5.8672, 1.0309, 0.6114, 0.6103, 0.9673, 1.6055,\n", + " 1.7898, 1.1014, 1.6811]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5041, -1.0386, -0.0044, -0.1814, 0.4562, 3.1324, -0.3212, 0.5040,\n", + " -0.0776, 0.6520, 0.6427, -0.2346, 0.0358, 0.0804, 1.1827, -0.7777,\n", + " -0.5441, 2.0380, -0.6699, -0.4625, 0.5973, 0.5403, 1.2268, 0.4800,\n", + " 1.3205, 0.7824, 0.5227, -0.1599, 0.3279, -0.3957, -0.5078, 0.7870,\n", + " 0.1994, -0.7410, -0.4145, 0.9686, -0.0107, 0.7579, 0.0000, 0.7740,\n", + " 0.7251, 0.1640, -0.1053]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2043, -0.2120, -0.0544, -0.1776, -0.0460, 0.0622, 0.1047, 0.2020,\n", + " 0.1046, 0.1638, 0.1715, -0.1323, -0.0973, -0.1898, -0.1711, -0.1738,\n", + " -0.2024, -0.0894, -0.0779, -0.0897, -0.0387, -0.0274, -0.0509, -0.0357,\n", + " -0.0265, 0.0368, 0.0150, -0.0008, -0.0834, -0.1299, -0.1418, -0.1597,\n", + " -0.2052, -0.2335, -0.1290, -0.1056, -0.0182, 0.0052, 0.0036, 0.2428,\n", + " 0.2651, 0.2295, 0.1709]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00042532276711426675\n", + "Grad encoder.fc1.bias: 0.0006757504306733608\n", + "Grad encoder.encoder.0.weight: 9.972932457458228e-05\n", + "Grad encoder.encoder.0.bias: 0.0006482814205810428\n", + "Grad encoder.encoder.2.weight: 5.831886301166378e-05\n", + "Grad encoder.encoder.2.bias: 0.0004808641388081014\n", + "Grad encoder.encoder.4.weight: 0.00018298803479410708\n", + "Grad encoder.encoder.4.bias: 0.0008198638679459691\n", + "Grad decoder.fc1.0.weight: 8.504220750182867e-05\n", + "Grad decoder.fc1.0.bias: 0.00042620403110049665\n", + "Grad decoder.fc1.2.weight: 9.29252419155091e-05\n", + "Grad decoder.fc1.2.bias: 0.0008178571006283164\n", + "Grad decoder.fc1.4.weight: 6.543465133290738e-05\n", + "Grad decoder.fc1.4.bias: 0.0007010065019130707\n", + "Grad decoder.fc2.weight: 0.00010649835894582793\n", + "Grad decoder.fc2.bias: 0.0021690484136343002\n", + "Grad _memory_unit.weight_ih_l0: 9.210337339027319e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.8996073524467647e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.6169871742022224e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.332439625111874e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.419198275078088e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.334789628046565e-05\n", + "Data X Sample: tensor([[1.5043, 1.5643, 1.8753, 1.9613, 1.9499, 2.0537, 2.1045, 2.1834, 3.5077,\n", + " 4.2463, 4.4507, 4.3838, 4.0191, 3.8825, 3.7753, 3.7881, 3.6699, 3.7024,\n", + " 3.4672, 3.3493, 3.3663, 3.5839, 3.0050, 2.8344, 2.8809, 2.9305, 2.9517,\n", + " 2.9529, 3.0737, 3.1540, 3.1811, 3.3519, 3.7247, 2.7462, 4.6033, 5.0226,\n", + " 5.2190, 5.5814, 6.0912, 5.8814, 1.0834, 0.6811, 0.6407, 1.2257, 1.8235,\n", + " 1.8527, 1.2170, 1.6733]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 5.5067e-01, 2.6524e-01, 1.6937e-01, 1.1125e-01, 1.4199e-01,\n", + " 2.2468e-01, 2.0135e-02, -2.7632e-01, 1.1529e-02, -6.6420e-02,\n", + " -3.4809e-01, -9.9699e-02, -1.1045e-01, 6.9446e-01, 1.2858e+00,\n", + " 5.8371e-01, 7.5806e-01, 2.0792e-03, 7.1006e-02, 1.2740e+00,\n", + " 1.3310e-01, 1.3215e-01, 7.3005e-01, 9.7823e-01, 3.1018e+00,\n", + " 8.0153e-01, -1.0291e+00, 1.1862e+00, 2.1942e-01, 1.0131e+00,\n", + " 8.4690e-01, -8.0426e-01, 3.5126e-01, 8.6363e-01, -7.1700e-01,\n", + " -6.3488e-01, 9.5462e-01, 2.8255e-01, 9.1981e-01, -3.9250e-01,\n", + " -5.4357e-01, 8.4282e-01, -5.3369e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2236, -0.2246, -0.0583, -0.1819, -0.0436, 0.0714, 0.1182, 0.2204,\n", + " 0.1109, 0.1729, 0.1905, -0.1409, -0.1077, -0.2068, -0.1839, -0.1825,\n", + " -0.2075, -0.0903, -0.0847, -0.0941, -0.0432, -0.0283, -0.0491, -0.0304,\n", + " -0.0191, 0.0394, 0.0128, -0.0094, -0.0905, -0.1348, -0.1562, -0.1735,\n", + " -0.2150, -0.2527, -0.1354, -0.1139, -0.0201, 0.0024, 0.0108, 0.2632,\n", + " 0.2770, 0.2495, 0.1842]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000309370196191594\n", + "Grad encoder.fc1.bias: 0.00151116494089365\n", + "Grad encoder.encoder.0.weight: 8.682892075739801e-05\n", + "Grad encoder.encoder.0.bias: 0.0008479619864374399\n", + "Grad encoder.encoder.2.weight: 5.3227126045385376e-05\n", + "Grad encoder.encoder.2.bias: 0.0005621508462354541\n", + "Grad encoder.encoder.4.weight: 0.00020456504717003554\n", + "Grad encoder.encoder.4.bias: 0.0014007841236889362\n", + "Grad decoder.fc1.0.weight: 8.852769678924233e-05\n", + "Grad decoder.fc1.0.bias: 0.0005415322375483811\n", + "Grad decoder.fc1.2.weight: 8.160243305610493e-05\n", + "Grad decoder.fc1.2.bias: 0.0008645658381283283\n", + "Grad decoder.fc1.4.weight: 4.57947317045182e-05\n", + "Grad decoder.fc1.4.bias: 0.0005604499019682407\n", + "Grad decoder.fc2.weight: 0.00012147662346251309\n", + "Grad decoder.fc2.bias: 0.0021430496126413345\n", + "Grad _memory_unit.weight_ih_l0: 1.5488139979424886e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.952807598281652e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.8699137803632766e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.27819894766435e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.96444364823401e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.252338476362638e-05\n", + "Data X Sample: tensor([[1.3908, 1.5570, 1.6514, 1.8498, 2.0967, 2.0685, 2.1585, 2.0357, 3.2587,\n", + " 4.1815, 4.1652, 4.2436, 4.0812, 3.9316, 3.7047, 3.7102, 3.6133, 3.7798,\n", + " 3.5456, 3.4851, 3.4301, 3.3588, 2.8436, 2.9737, 2.7570, 2.9070, 2.9357,\n", + " 2.9570, 3.0737, 3.2129, 3.2301, 3.3270, 3.7951, 2.8332, 4.7258, 4.9399,\n", + " 5.1915, 5.5072, 6.2117, 6.0232, 0.9879, 0.6094, 0.5901, 1.1137, 1.6055,\n", + " 1.6983, 1.1966, 1.7046]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6846, 0.6695, 0.3878, 2.0084, 0.4699, 0.8345, 0.1311, -0.2787,\n", + " 1.0769, -0.1532, -0.6253, 2.2119, -0.0842, -0.2978, -0.8641, -0.6370,\n", + " -0.1791, 0.2538, 0.9752, 0.1662, 0.1020, 0.6669, 0.0689, -0.1412,\n", + " 0.5125, 0.0856, -0.3643, 0.3953, 0.8790, -0.7940, -0.6815, 0.4931,\n", + " 0.1670, -1.2749, -1.0911, -1.0468, 0.1654, 0.5889, 0.0000, -0.6779,\n", + " 0.2724, -0.9990, -0.5332]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2403, -0.2360, -0.0624, -0.1851, -0.0413, 0.0803, 0.1315, 0.2368,\n", + " 0.1174, 0.1813, 0.2074, -0.1485, -0.1173, -0.2215, -0.1949, -0.1897,\n", + " -0.2118, -0.0908, -0.0905, -0.0980, -0.0469, -0.0287, -0.0463, -0.0258,\n", + " -0.0118, 0.0422, 0.0102, -0.0175, -0.0973, -0.1393, -0.1690, -0.1854,\n", + " -0.2237, -0.2699, -0.1421, -0.1214, -0.0214, 0.0004, 0.0174, 0.2812,\n", + " 0.2871, 0.2672, 0.1958]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00014815310714766383\n", + "Grad encoder.fc1.bias: 0.0002713557914830744\n", + "Grad encoder.encoder.0.weight: 6.390488852048293e-05\n", + "Grad encoder.encoder.0.bias: 0.00026611905195750296\n", + "Grad encoder.encoder.2.weight: 5.106764365336858e-05\n", + "Grad encoder.encoder.2.bias: 0.00035235131508670747\n", + "Grad encoder.encoder.4.weight: 0.00017092432244680822\n", + "Grad encoder.encoder.4.bias: 0.000984154874458909\n", + "Grad decoder.fc1.0.weight: 0.0001093388709705323\n", + "Grad decoder.fc1.0.bias: 0.0006355652585625648\n", + "Grad decoder.fc1.2.weight: 0.00011943637946387753\n", + "Grad decoder.fc1.2.bias: 0.0012425859458744526\n", + "Grad decoder.fc1.4.weight: 6.84677652316168e-05\n", + "Grad decoder.fc1.4.bias: 0.0006820389535278082\n", + "Grad decoder.fc2.weight: 0.00011466751311672851\n", + "Grad decoder.fc2.bias: 0.002218581736087799\n", + "Grad _memory_unit.weight_ih_l0: 2.0580337150022388e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.84142404072918e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.335764111194294e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.1735678526747506e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001606888836249709\n", + "Grad _memory_unit.bias_hh_l1: 8.27168914838694e-05\n", + "Data X Sample: tensor([[1.3961, 1.5395, 1.6469, 1.7121, 1.7126, 1.8652, 1.9043, 1.9108, 3.4711,\n", + " 3.8656, 3.8004, 4.0294, 3.8016, 3.5635, 3.4374, 3.4175, 3.3586, 3.4180,\n", + " 3.3970, 3.3642, 3.5823, 3.4889, 2.9881, 2.7848, 2.7158, 2.7529, 2.7492,\n", + " 2.7326, 2.7372, 2.8068, 2.9151, 3.0148, 3.2671, 2.3388, 3.7086, 4.2296,\n", + " 4.5996, 5.0275, 5.6475, 5.5437, 1.0738, 0.6154, 0.5901, 1.0678, 1.6015,\n", + " 1.7898, 1.1082, 1.5951]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0085, 0.0034, -0.8388, -0.2806, 0.3813, -0.1229, -0.0965, 0.1365,\n", + " -0.2893, 0.4023, 0.1654, 1.3426, -0.4867, 0.7494, -0.1497, 1.5150,\n", + " 0.3582, 0.7777, 0.0380, -1.0297, 0.3298, 0.9755, -0.2400, 0.2344,\n", + " 0.5769, -0.3440, 1.1207, -0.4470, -0.1783, 0.2849, 0.6391, 0.0413,\n", + " 2.7369, 0.6644, -0.3480, -0.7747, 1.1262, 0.3619, 0.5906, -0.3386,\n", + " 0.2284, 0.0918, 0.0844]], device='cuda:0')\n", + "Prediction Sample: tensor([[-2.4174e-01, -2.3817e-01, -6.3862e-02, -1.8450e-01, -3.9199e-02,\n", + " 8.4305e-02, 1.3429e-01, 2.3966e-01, 1.2022e-01, 1.8443e-01,\n", + " 2.0915e-01, -1.4768e-01, -1.1951e-01, -2.2296e-01, -1.9665e-01,\n", + " -1.9196e-01, -2.1265e-01, -8.9222e-02, -8.9617e-02, -9.8259e-02,\n", + " -4.5994e-02, -2.9977e-02, -4.3354e-02, -2.6394e-02, -7.2161e-03,\n", + " 4.3560e-02, 1.0453e-02, -1.8811e-02, -9.8225e-02, -1.4062e-01,\n", + " -1.7104e-01, -1.8620e-01, -2.2424e-01, -2.7200e-01, -1.4446e-01,\n", + " -1.2161e-01, -2.2005e-02, 2.8592e-04, 2.0169e-02, 2.8279e-01,\n", + " 2.8809e-01, 2.6873e-01, 1.9817e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000889419112354517\n", + "Grad encoder.fc1.bias: 0.002223957795649767\n", + "Grad encoder.encoder.0.weight: 0.00019066482491325587\n", + "Grad encoder.encoder.0.bias: 0.0015800339169800282\n", + "Grad encoder.encoder.2.weight: 0.00011031984467990696\n", + "Grad encoder.encoder.2.bias: 0.0012628918047994375\n", + "Grad encoder.encoder.4.weight: 0.0003237081691622734\n", + "Grad encoder.encoder.4.bias: 0.0019751430954784155\n", + "Grad decoder.fc1.0.weight: 0.00015236219041980803\n", + "Grad decoder.fc1.0.bias: 0.0009521931642666459\n", + "Grad decoder.fc1.2.weight: 0.00015425267338287085\n", + "Grad decoder.fc1.2.bias: 0.0020102993585169315\n", + "Grad decoder.fc1.4.weight: 9.779175888979807e-05\n", + "Grad decoder.fc1.4.bias: 0.001304430072195828\n", + "Grad decoder.fc2.weight: 0.00020733848214149475\n", + "Grad decoder.fc2.bias: 0.0020760654006153345\n", + "Grad _memory_unit.weight_ih_l0: 3.9589365769643337e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00010319762805011123\n", + "Grad _memory_unit.bias_hh_l0: 6.247893179534003e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.5708674254710786e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001876991882454604\n", + "Grad _memory_unit.bias_hh_l1: 9.805530862649903e-05\n", + "Data X Sample: tensor([[1.1924, 1.4521, 1.5522, 1.7208, 1.8748, 1.8887, 2.0229, 1.9548, 2.0700,\n", + " 2.1247, 2.0874, 2.1637, 2.0462, 2.1157, 2.0377, 1.9488, 1.9387, 2.0640,\n", + " 2.0588, 2.0494, 2.0782, 2.0269, 2.0242, 2.0518, 2.0439, 2.0164, 2.0113,\n", + " 2.0882, 1.7832, 1.9978, 1.9107, 1.9758, 1.8502, 1.2724, 1.8384, 1.7172,\n", + " 1.4690, 1.1820, 1.0902, 1.0129, 1.0118, 0.5994, 0.5800, 1.1281, 1.6491,\n", + " 1.6583, 1.2102, 1.7984]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1494, -0.3227, -0.2191, 0.2785, -0.3092, -0.4359, -0.6454, -0.6556,\n", + " 0.8975, 1.4412, 1.2893, -0.9743, 0.0447, 0.8898, 0.3606, 0.2740,\n", + " 0.6692, -0.2320, -0.1770, -0.1787, -0.1495, -0.2897, -0.1595, -0.2609,\n", + " 0.3717, -0.2207, 0.3223, 0.5232, 0.2797, -0.2356, -0.8093, 0.5389,\n", + " 0.6549, -0.2866, 0.3270, -1.1308, -0.8131, -0.7806, 0.2870, 1.1926,\n", + " -0.1772, 0.8592, 0.2996]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2304, 0.1126, 0.0209, 0.1088, 0.0119, -0.1138, -0.2416, -0.2434,\n", + " -0.0733, -0.0762, -0.1383, 0.0763, 0.1235, 0.0908, 0.0546, 0.0852,\n", + " 0.0452, -0.0274, 0.0068, 0.0283, 0.0355, -0.0023, 0.0214, -0.0369,\n", + " -0.0025, 0.0519, 0.0232, 0.0748, 0.1418, 0.1260, 0.1545, 0.0804,\n", + " 0.1590, 0.1591, 0.1261, 0.1560, -0.0901, -0.0518, -0.0349, -0.0736,\n", + " -0.0861, -0.1184, -0.0892]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002195745473727584\n", + "Grad encoder.fc1.bias: 0.0014610015787184238\n", + "Grad encoder.encoder.0.weight: 9.302199759986252e-05\n", + "Grad encoder.encoder.0.bias: 0.001191823510453105\n", + "Grad encoder.encoder.2.weight: 8.992277435027063e-05\n", + "Grad encoder.encoder.2.bias: 0.0008987912442535162\n", + "Grad encoder.encoder.4.weight: 0.0002855253987945616\n", + "Grad encoder.encoder.4.bias: 0.00196062377654016\n", + "Grad decoder.fc1.0.weight: 0.00014454797201324254\n", + "Grad decoder.fc1.0.bias: 0.0009113863343372941\n", + "Grad decoder.fc1.2.weight: 0.00016269521438516676\n", + "Grad decoder.fc1.2.bias: 0.0011908651795238256\n", + "Grad decoder.fc1.4.weight: 9.036636038217694e-05\n", + "Grad decoder.fc1.4.bias: 0.0008394132601097226\n", + "Grad decoder.fc2.weight: 0.00015542605251539499\n", + "Grad decoder.fc2.bias: 0.0019037449965253472\n", + "Grad _memory_unit.weight_ih_l0: 2.4873916117940098e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.024721708148718e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.887963976012543e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.3283779480843805e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001442259963368997\n", + "Grad _memory_unit.bias_hh_l1: 7.550477312179282e-05\n", + "Data X Sample: tensor([[1.2115, 1.3604, 1.5717, 1.6640, 1.8287, 1.8239, 1.8842, 1.8782, 3.4735,\n", + " 3.9904, 3.8544, 3.7489, 3.7506, 3.5580, 3.4575, 3.4613, 3.4797, 3.4877,\n", + " 3.4465, 3.3568, 3.3933, 3.2042, 2.8725, 2.7313, 2.5787, 2.7138, 2.6613,\n", + " 2.6388, 2.7406, 2.8756, 2.7821, 2.8960, 3.2649, 2.4029, 3.9267, 4.2078,\n", + " 4.5209, 4.9056, 5.4067, 5.1551, 0.9688, 0.5457, 0.5780, 1.0104, 1.4707,\n", + " 1.6468, 1.0878, 1.4935]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0446, -0.3856, -0.5571, 1.7655, 0.0150, 0.0579, -0.9936, -0.0684,\n", + " -0.2038, 0.2542, 0.5408, -0.1228, -0.5906, 0.1307, -0.6149, -0.3680,\n", + " -1.1345, 4.4548, -0.0165, 0.1391, -0.9184, -0.2187, -0.8846, 4.4171,\n", + " -0.6052, 1.5163, 0.7713, 0.4159, -0.3321, 0.5720, -0.2264, 0.8664,\n", + " 0.3428, 0.0272, 0.5745, -0.2645, 0.9799, -0.7393, 0.8448, -0.3132,\n", + " -0.2614, -0.7009, -0.0331]], device='cuda:0')\n", + "Prediction Sample: tensor([[-2.5065e-01, -2.4751e-01, -6.9997e-02, -1.8754e-01, -3.7224e-02,\n", + " 9.3116e-02, 1.4488e-01, 2.5110e-01, 1.2771e-01, 1.9282e-01,\n", + " 2.2026e-01, -1.5019e-01, -1.2675e-01, -2.3113e-01, -2.0310e-01,\n", + " -1.9642e-01, -2.1530e-01, -8.6187e-02, -9.2692e-02, -1.0055e-01,\n", + " -4.6564e-02, -3.0516e-02, -3.9192e-02, -2.5197e-02, 3.1294e-03,\n", + " 4.7267e-02, 8.8052e-03, -2.3718e-02, -1.0201e-01, -1.4332e-01,\n", + " -1.7977e-01, -1.9341e-01, -2.3007e-01, -2.8177e-01, -1.5122e-01,\n", + " -1.2630e-01, -2.4427e-02, 3.0175e-06, 2.6418e-02, 2.9262e-01,\n", + " 2.9372e-01, 2.7800e-01, 2.0577e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0013744384050369263\n", + "Grad encoder.fc1.bias: 0.0014282794436439872\n", + "Grad encoder.encoder.0.weight: 0.00026778472238220274\n", + "Grad encoder.encoder.0.bias: 0.0013918648473918438\n", + "Grad encoder.encoder.2.weight: 0.00017026180285029113\n", + "Grad encoder.encoder.2.bias: 0.0013245308073237538\n", + "Grad encoder.encoder.4.weight: 0.0004587240982800722\n", + "Grad encoder.encoder.4.bias: 0.00246067950502038\n", + "Grad decoder.fc1.0.weight: 0.0001722564920783043\n", + "Grad decoder.fc1.0.bias: 0.0010117432102560997\n", + "Grad decoder.fc1.2.weight: 0.00016311714716721326\n", + "Grad decoder.fc1.2.bias: 0.0018744072876870632\n", + "Grad decoder.fc1.4.weight: 0.00010704289888963103\n", + "Grad decoder.fc1.4.bias: 0.0015085801715031266\n", + "Grad decoder.fc2.weight: 0.00014757241297047585\n", + "Grad decoder.fc2.bias: 0.002722624223679304\n", + "Grad _memory_unit.weight_ih_l0: 2.9391218049568124e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.328063707565889e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.623057637014426e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.6960591892711818e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00021847570315003395\n", + "Grad _memory_unit.bias_hh_l1: 0.00011155496758874506\n", + "Data X Sample: tensor([[2.5301, 2.9290, 3.1976, 3.3410, 3.5583, 3.6905, 3.7792, 3.8017, 3.9422,\n", + " 3.9493, 3.9305, 4.0839, 3.8415, 3.6153, 3.5887, 3.4503, 3.3822, 3.5089,\n", + " 3.3928, 3.3177, 3.2437, 3.2057, 2.8773, 2.8230, 2.7420, 2.7817, 2.7599,\n", + " 2.7897, 2.8413, 2.9149, 2.9501, 2.8628, 3.0317, 2.2084, 3.6032, 3.9962,\n", + " 4.1847, 4.6114, 5.1468, 4.9735, 1.9997, 1.1252, 1.0711, 2.1729, 2.9176,\n", + " 3.0592, 2.0261, 3.1981]], device='cuda:0')\n", + "Data Y Sample: tensor([[-2.4478e-01, -8.3880e-01, 2.9250e-01, -2.7885e-02, -1.2414e+00,\n", + " -6.8105e-02, -2.9383e-01, 6.8352e-01, -6.0684e-01, -4.3836e-01,\n", + " -7.7632e-01, 7.7137e-01, 1.1911e-01, 1.0727e-01, -2.2941e-01,\n", + " -6.2697e-01, -5.8549e-04, 6.4320e-02, 2.1513e-01, -3.0847e-01,\n", + " 2.1145e-01, 4.1966e-02, 3.3194e-01, -5.6117e-01, 6.8202e-01,\n", + " -2.1910e-01, 8.8294e-01, 6.4579e-01, 4.3812e-01, -7.1778e-01,\n", + " 5.7307e-01, 1.7484e-01, 2.2531e-01, 3.7444e-03, 2.6970e-02,\n", + " -2.7347e-01, -3.3321e-02, 9.3982e-02, -4.7680e-01, 5.3229e-01,\n", + " -1.3468e-01, 2.6271e-01, -4.4073e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2301, -0.2358, -0.0667, -0.1821, -0.0379, 0.0876, 0.1317, 0.2327,\n", + " 0.1253, 0.1876, 0.2010, -0.1384, -0.1166, -0.2128, -0.1895, -0.1901,\n", + " -0.2111, -0.0830, -0.0837, -0.0966, -0.0404, -0.0324, -0.0393, -0.0313,\n", + " 0.0012, 0.0445, 0.0121, -0.0159, -0.0950, -0.1394, -0.1667, -0.1779,\n", + " -0.2202, -0.2624, -0.1470, -0.1168, -0.0242, 0.0031, 0.0216, 0.2704,\n", + " 0.2810, 0.2563, 0.1931]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000634056399576366\n", + "Grad encoder.fc1.bias: 0.0007975613116286695\n", + "Grad encoder.encoder.0.weight: 0.00012527633225545287\n", + "Grad encoder.encoder.0.bias: 0.0007025166414678097\n", + "Grad encoder.encoder.2.weight: 8.239185262937099e-05\n", + "Grad encoder.encoder.2.bias: 0.0006073237163946033\n", + "Grad encoder.encoder.4.weight: 0.0002474469074513763\n", + "Grad encoder.encoder.4.bias: 0.0013150940649211407\n", + "Grad decoder.fc1.0.weight: 8.275423897430301e-05\n", + "Grad decoder.fc1.0.bias: 0.00041531980969011784\n", + "Grad decoder.fc1.2.weight: 8.35466489661485e-05\n", + "Grad decoder.fc1.2.bias: 0.0008184026228263974\n", + "Grad decoder.fc1.4.weight: 7.090366125339642e-05\n", + "Grad decoder.fc1.4.bias: 0.0008891312754712999\n", + "Grad decoder.fc2.weight: 0.00012007250916212797\n", + "Grad decoder.fc2.bias: 0.0026531340554356575\n", + "Grad _memory_unit.weight_ih_l0: 1.6858197341207415e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.987889456562698e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.793983392417431e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.62854278946179e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.473627869738266e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.870372868026607e-05\n", + "Data X Sample: tensor([[-0.0074, -0.0029, 0.0000, -0.0044, -0.0017, 0.0044, 0.0139, 0.0043,\n", + " 0.0073, 0.0032, 0.0222, 0.0039, -0.0089, -0.0218, 0.0000, -0.0109,\n", + " -0.0079, -0.0135, -0.0207, -0.0093, 0.0074, -0.0077, 0.0145, -0.0134,\n", + " -0.0075, -0.0052, 0.0080, 0.0286, 0.0139, 0.0295, -0.0140, 0.0138,\n", + " -0.0132, -0.0092, 0.0147, 0.0268, 0.0236, 0.0106, -0.0190, 0.0142,\n", + " 0.0000, 0.0179, 0.0081, -0.0201, 0.0079, 0.0000, 0.0000, -0.0391]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7443, 0.8250, -0.7674, 0.2309, 0.2895, -0.2801, -1.1368, -1.0045,\n", + " -1.3467, -0.6826, -0.6600, 0.7781, -0.0665, 0.8834, -0.4905, 0.9502,\n", + " 1.4435, 0.8991, -0.0518, 0.8370, 0.9601, 0.5589, 0.0549, 0.5086,\n", + " 0.5714, -0.4129, -0.7860, 0.0774, 0.2490, 0.1817, 0.3023, -0.1483,\n", + " 2.6756, 1.1959, -0.4002, -0.1632, 0.7686, -0.6143, -0.3712, -0.7689,\n", + " -0.8080, -1.0238, -1.3518]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 1.0389, 0.8249, 0.2613, 0.4747, -0.9611, -1.1997, -1.7801, -1.5174,\n", + " -1.2826, -1.2395, -1.3506, 0.3771, 0.7876, 0.7324, 0.3825, 0.6481,\n", + " 0.5125, 0.0318, -0.0608, 0.1056, 0.0788, -0.1359, -0.0173, -0.0188,\n", + " 0.0622, -0.0991, 0.8008, 0.9853, 1.5350, 1.3776, 1.3093, 0.8299,\n", + " 0.9544, 0.8704, 0.5993, 0.5849, -0.1553, 0.0503, 0.0140, -1.1232,\n", + " -0.9589, -0.7540, -0.4819]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0010872657876461744\n", + "Grad encoder.fc1.bias: 0.0011594772804528475\n", + "Grad encoder.encoder.0.weight: 0.0002287013630848378\n", + "Grad encoder.encoder.0.bias: 0.0009939402807503939\n", + "Grad encoder.encoder.2.weight: 0.00012591038830578327\n", + "Grad encoder.encoder.2.bias: 0.0009658985654823482\n", + "Grad encoder.encoder.4.weight: 0.0003485685447230935\n", + "Grad encoder.encoder.4.bias: 0.0017797444015741348\n", + "Grad decoder.fc1.0.weight: 0.00018476620607543737\n", + "Grad decoder.fc1.0.bias: 0.001244464423507452\n", + "Grad decoder.fc1.2.weight: 0.00015165682998485863\n", + "Grad decoder.fc1.2.bias: 0.0019073252333328128\n", + "Grad decoder.fc1.4.weight: 9.895395487546921e-05\n", + "Grad decoder.fc1.4.bias: 0.0006811723578721285\n", + "Grad decoder.fc2.weight: 0.00015647285908926278\n", + "Grad decoder.fc2.bias: 0.0022519868798553944\n", + "Grad _memory_unit.weight_ih_l0: 3.107269367319532e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0001160917745437473\n", + "Grad _memory_unit.bias_hh_l0: 6.481671880465001e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.181932177336421e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00024309512809850276\n", + "Grad _memory_unit.bias_hh_l1: 0.00012375263031572104\n", + "Data X Sample: tensor([[1.5308, 1.7828, 1.9204, 2.0379, 2.2231, 2.1642, 2.2170, 2.2260, 2.3702,\n", + " 2.4106, 2.4173, 2.3701, 2.2614, 2.2793, 2.2621, 2.2934, 2.2375, 2.2729,\n", + " 2.3066, 2.2726, 2.3088, 2.4081, 2.3495, 2.4164, 2.2991, 2.4604, 2.4615,\n", + " 2.5002, 2.2099, 2.2860, 2.0542, 2.0338, 1.6478, 1.0573, 1.5442, 1.4812,\n", + " 1.4218, 1.4020, 1.3501, 1.3136, 1.3077, 0.7448, 0.7316, 1.1883, 1.8552,\n", + " 2.0643, 1.3598, 1.9079]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3605, -0.1712, 0.0540, -0.0330, 0.2612, -0.1736, -0.6825, -0.6806,\n", + " -0.1196, -0.1312, -0.4492, 0.0933, 2.9566, 0.2445, 0.8344, 0.1641,\n", + " 0.7673, -0.4591, -2.7713, -1.0587, 0.3408, -0.1061, -1.0309, -0.8336,\n", + " -0.4358, -0.2961, 0.6915, -0.1253, 1.3921, 0.7249, 0.9037, -0.0762,\n", + " 0.8457, 0.3620, 0.7245, 0.0796, 1.0359, -0.0911, 1.1113, -0.3757,\n", + " -0.2732, -0.5274, 0.1631]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4567, 0.3298, 0.0911, 0.2548, 0.0913, -0.1576, -0.3536, -0.4629,\n", + " -0.1630, -0.2463, -0.2582, 0.1782, 0.1849, 0.2481, 0.1733, 0.2368,\n", + " 0.1645, 0.0724, 0.0342, 0.1011, 0.1050, 0.0098, 0.0409, 0.0016,\n", + " 0.0026, 0.0959, -0.0530, 0.0728, 0.2218, 0.2539, 0.2738, 0.1822,\n", + " 0.2970, 0.3003, 0.1716, 0.2575, -0.0934, -0.0514, 0.0144, -0.2926,\n", + " -0.3105, -0.3303, -0.2772]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00033996516140177846\n", + "Grad encoder.fc1.bias: 0.0011601285077631474\n", + "Grad encoder.encoder.0.weight: 7.916430331533775e-05\n", + "Grad encoder.encoder.0.bias: 0.0007127125863917172\n", + "Grad encoder.encoder.2.weight: 7.908888073870912e-05\n", + "Grad encoder.encoder.2.bias: 0.0006653913878835738\n", + "Grad encoder.encoder.4.weight: 0.00021128331718500704\n", + "Grad encoder.encoder.4.bias: 0.0015687312697991729\n", + "Grad decoder.fc1.0.weight: 9.348459570901468e-05\n", + "Grad decoder.fc1.0.bias: 0.0005022488767281175\n", + "Grad decoder.fc1.2.weight: 8.658140723127872e-05\n", + "Grad decoder.fc1.2.bias: 0.0007114427862688899\n", + "Grad decoder.fc1.4.weight: 5.882055847905576e-05\n", + "Grad decoder.fc1.4.bias: 0.0005525173037312925\n", + "Grad decoder.fc2.weight: 0.00010773375106509775\n", + "Grad decoder.fc2.bias: 0.0016303274314850569\n", + "Grad _memory_unit.weight_ih_l0: 2.465449506416917e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.3743697208119556e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.600058698793873e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.537156984151807e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011342583457008004\n", + "Grad _memory_unit.bias_hh_l1: 6.0164409660501406e-05\n", + "Data X Sample: tensor([[1.5372, 1.7682, 1.8738, 1.9701, 2.0814, 2.2659, 2.3495, 2.4900, 2.5753,\n", + " 2.5813, 2.5093, 2.6116, 2.4567, 2.4593, 2.4462, 2.3522, 2.3255, 2.4276,\n", + " 2.5400, 2.4995, 2.5591, 2.4831, 2.3158, 2.4107, 2.3441, 2.4134, 2.3842,\n", + " 2.3737, 2.1613, 2.2893, 2.3097, 2.2770, 2.1912, 1.4646, 1.9903, 1.7999,\n", + " 1.6794, 1.5080, 1.5656, 1.5916, 1.1884, 0.7030, 0.6609, 1.2974, 1.8156,\n", + " 1.9728, 1.1762, 1.9548]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.8090, 1.0477, -1.6737, 1.0706, 0.6971, 1.2720, 0.5960, -0.7928,\n", + " 0.7545, 0.9800, 0.8691, -1.5135, 0.8489, -1.1403, -0.6874, 0.8978,\n", + " 1.1921, -0.3574, 1.5858, -0.2385, -0.2090, 0.5388, -0.6260, 0.5226,\n", + " -0.5221, 0.6569, 0.1640, -0.3955, -0.4341, 0.0772, 0.3574, 0.8239,\n", + " -0.0757, 0.0034, 1.6741, -0.1189, 0.9141, 0.7428, 0.7285, 0.0982,\n", + " -0.2501, 0.2543, -0.8918]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.6148, 0.4711, 0.1270, 0.3879, 0.1551, -0.1967, -0.4603, -0.6280,\n", + " -0.2338, -0.3619, -0.3406, 0.2572, 0.2501, 0.3442, 0.2555, 0.3613,\n", + " 0.2614, 0.1273, 0.0556, 0.1539, 0.1511, 0.0366, 0.0700, 0.0261,\n", + " 0.0249, 0.1145, -0.0958, 0.0781, 0.2850, 0.3690, 0.3709, 0.2558,\n", + " 0.4323, 0.4293, 0.2529, 0.3563, -0.1079, -0.0758, 0.0376, -0.4084,\n", + " -0.4624, -0.4769, -0.4028]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00015293601609300822\n", + "Grad encoder.fc1.bias: 0.0012098858132958412\n", + "Grad encoder.encoder.0.weight: 4.5532433432526886e-05\n", + "Grad encoder.encoder.0.bias: 0.0007813731790520251\n", + "Grad encoder.encoder.2.weight: 5.709030665457249e-05\n", + "Grad encoder.encoder.2.bias: 0.0007138424552977085\n", + "Grad encoder.encoder.4.weight: 0.0002636350109241903\n", + "Grad encoder.encoder.4.bias: 0.0023576475214213133\n", + "Grad decoder.fc1.0.weight: 0.00014238730364013463\n", + "Grad decoder.fc1.0.bias: 0.0009500477463006973\n", + "Grad decoder.fc1.2.weight: 0.00013321747246664017\n", + "Grad decoder.fc1.2.bias: 0.0013369725784286857\n", + "Grad decoder.fc1.4.weight: 0.00012841132411267608\n", + "Grad decoder.fc1.4.bias: 0.0009009972563944757\n", + "Grad decoder.fc2.weight: 0.0002444320125505328\n", + "Grad decoder.fc2.bias: 0.002556884428486228\n", + "Grad _memory_unit.weight_ih_l0: 3.0422241252381355e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00013011142436880618\n", + "Grad _memory_unit.bias_hh_l0: 6.961473991395906e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.5542649634880945e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00018529215594753623\n", + "Grad _memory_unit.bias_hh_l1: 9.854267409536988e-05\n", + "Data X Sample: tensor([[1.7758, 1.9954, 2.1503, 2.2500, 2.3785, 2.4324, 2.4820, 2.4716, 2.4923,\n", + " 2.6113, 2.6806, 2.6272, 2.6010, 2.4838, 2.5749, 2.4931, 2.4498, 2.6172,\n", + " 2.6742, 2.5906, 2.6499, 2.7465, 2.7086, 2.6760, 2.7345, 2.7817, 2.6853,\n", + " 2.7367, 2.4839, 2.5841, 2.4812, 2.3322, 2.0944, 1.3525, 1.8629, 1.7609,\n", + " 1.6636, 1.6458, 1.5909, 1.4952, 1.4986, 0.7946, 0.8448, 1.4639, 2.0415,\n", + " 2.3102, 1.4210, 2.1190]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3943, 0.6982, 0.4486, 0.1682, -0.6232, 0.3531, -0.1480, -0.3050,\n", + " -0.6604, -0.3981, -0.3006, -3.2998, -0.3813, 0.0998, 0.5828, -0.2272,\n", + " -0.3285, 0.9105, -0.4549, -0.6572, 0.1892, -0.1949, -0.5796, 0.7427,\n", + " 0.5236, -1.7560, -0.5098, -0.2190, -0.7475, -0.1792, 0.4845, 0.2823,\n", + " -0.0198, -0.2462, -0.2444, -0.0728, 0.4717, -0.3710, 0.0382, -0.4099,\n", + " -0.2260, -0.0760, -0.1636]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.6965, 0.5541, 0.1535, 0.4628, 0.2076, -0.2029, -0.5160, -0.7190,\n", + " -0.2662, -0.4199, -0.3817, 0.3062, 0.2911, 0.3953, 0.2982, 0.4332,\n", + " 0.3253, 0.1697, 0.0754, 0.1796, 0.1794, 0.0648, 0.0840, 0.0376,\n", + " 0.0445, 0.1212, -0.1178, 0.0708, 0.3042, 0.4344, 0.4287, 0.3009,\n", + " 0.5083, 0.5074, 0.3031, 0.4077, -0.1191, -0.0808, 0.0612, -0.4806,\n", + " -0.5499, -0.5614, -0.4712]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000302754167933017\n", + "Grad encoder.fc1.bias: 0.0015924065373837948\n", + "Grad encoder.encoder.0.weight: 7.540762453572825e-05\n", + "Grad encoder.encoder.0.bias: 0.0009030051878653467\n", + "Grad encoder.encoder.2.weight: 7.16895519872196e-05\n", + "Grad encoder.encoder.2.bias: 0.0007812672993168235\n", + "Grad encoder.encoder.4.weight: 0.00022127995907794684\n", + "Grad encoder.encoder.4.bias: 0.002286556176841259\n", + "Grad decoder.fc1.0.weight: 0.00010365733032813296\n", + "Grad decoder.fc1.0.bias: 0.000816083513200283\n", + "Grad decoder.fc1.2.weight: 0.00012284086551517248\n", + "Grad decoder.fc1.2.bias: 0.0008585929172113538\n", + "Grad decoder.fc1.4.weight: 0.0001114480837713927\n", + "Grad decoder.fc1.4.bias: 0.0009629292762838304\n", + "Grad decoder.fc2.weight: 0.00016979807696770877\n", + "Grad decoder.fc2.bias: 0.002420793753117323\n", + "Grad _memory_unit.weight_ih_l0: 1.4062272384762764e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.275942723732442e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.414192906348035e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.031506235449342e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001932820596266538\n", + "Grad _memory_unit.bias_hh_l1: 0.00010056306928163394\n", + "Data X Sample: tensor([[2.6425, 2.9451, 3.0293, 3.3345, 3.4405, 3.5520, 3.7947, 3.8245, 3.8714,\n", + " 3.9619, 3.9717, 3.8697, 3.6973, 3.9425, 3.5105, 3.3997, 3.4734, 3.4799,\n", + " 3.4217, 3.3382, 3.2216, 3.1521, 2.9255, 2.8420, 2.6782, 2.7686, 2.8664,\n", + " 2.8713, 2.7615, 2.8330, 2.8066, 2.7688, 2.8227, 2.0528, 3.4978, 3.9086,\n", + " 4.1414, 4.5293, 5.0264, 4.9281, 1.9138, 1.1411, 1.0954, 1.9031, 3.0326,\n", + " 3.0535, 2.1485, 3.0182]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4580, 0.3713, 0.0310, -0.3919, -0.5183, -0.7077, -1.7764, -2.7509,\n", + " -0.4753, -0.5029, 0.9843, 0.2038, -0.2198, -0.4280, 0.1294, -0.9469,\n", + " 0.0426, -0.2104, -0.5155, 1.1278, -0.3204, 0.7301, -0.7180, -0.3190,\n", + " -0.0561, 0.2947, 0.4169, -0.2053, 1.1250, 0.7277, 1.2032, 0.8024,\n", + " -0.1187, 0.0407, 1.3339, 0.4017, -0.4493, 0.5825, 0.5906, 0.5489,\n", + " 0.5687, 1.3487, 0.5788]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.0706, -0.1294, -0.0337, -0.1229, -0.0376, 0.0234, 0.0166, 0.0586,\n", + " 0.0949, 0.1247, 0.0511, -0.0400, -0.0293, -0.0686, -0.0750, -0.1236,\n", + " -0.1738, -0.0547, -0.0163, -0.0716, 0.0032, -0.0400, -0.0463, -0.0818,\n", + " -0.0223, 0.0156, 0.0246, 0.0578, -0.0248, -0.0896, -0.0466, -0.0663,\n", + " -0.1241, -0.0940, -0.1032, -0.0316, -0.0013, 0.0324, -0.0077, 0.1159,\n", + " 0.1689, 0.0731, 0.0739]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00021440521231852472\n", + "Grad encoder.fc1.bias: 0.0001251568173756823\n", + "Grad encoder.encoder.0.weight: 4.491333675105125e-05\n", + "Grad encoder.encoder.0.bias: 0.00012554334534797817\n", + "Grad encoder.encoder.2.weight: 3.811006899923086e-05\n", + "Grad encoder.encoder.2.bias: 0.00024588173255324364\n", + "Grad encoder.encoder.4.weight: 0.0001109268341679126\n", + "Grad encoder.encoder.4.bias: 0.0007767301285639405\n", + "Grad decoder.fc1.0.weight: 4.5325825340114534e-05\n", + "Grad decoder.fc1.0.bias: 0.00024697312619537115\n", + "Grad decoder.fc1.2.weight: 5.70854390389286e-05\n", + "Grad decoder.fc1.2.bias: 0.000348603876773268\n", + "Grad decoder.fc1.4.weight: 4.3226624256931245e-05\n", + "Grad decoder.fc1.4.bias: 0.00035919941728934646\n", + "Grad decoder.fc2.weight: 0.00010073355224449188\n", + "Grad decoder.fc2.bias: 0.0019436024595052004\n", + "Grad _memory_unit.weight_ih_l0: 5.106304342916701e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.385172774665989e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.2814438377972692e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.4555778256617486e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.85981979384087e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.0530492949765176e-05\n", + "Data X Sample: tensor([[1.5393, 1.6284, 1.7686, 1.9395, 1.9943, 2.1849, 2.1985, 2.8179, 4.2156,\n", + " 4.4185, 4.2953, 4.2144, 3.9925, 3.8307, 3.8560, 3.6254, 3.6117, 3.6424,\n", + " 3.4279, 3.5874, 3.6068, 3.4155, 2.9737, 2.8382, 2.8040, 2.9201, 2.9383,\n", + " 2.8958, 2.9731, 3.1605, 3.0761, 3.2994, 3.6917, 2.7691, 4.5150, 4.8499,\n", + " 5.0362, 5.4622, 5.8884, 5.7792, 1.1216, 0.6592, 0.6285, 1.1654, 1.7680,\n", + " 1.9042, 1.2782, 1.9157]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2131, 0.6049, 1.0497, -0.0028, 1.5649, 1.8653, 0.1504, 0.0968,\n", + " -0.2695, -0.8789, -0.8419, 0.0794, 0.3452, 0.0808, 0.8151, 0.4436,\n", + " 0.9283, -0.2076, -1.6468, 0.6563, 0.9489, 0.1298, 1.2440, 0.9658,\n", + " -1.4035, 1.1029, -0.2316, -0.8116, -1.1887, -0.3832, -0.1979, 0.4810,\n", + " -0.4715, 0.2212, -0.0365, -0.5829, 0.5301, 0.3924, -0.2296, -0.8693,\n", + " -0.2960, -1.0467, -0.3650]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1531, -0.1910, -0.0535, -0.1597, -0.0380, 0.0685, 0.0817, 0.1660,\n", + " 0.1156, 0.1657, 0.1292, -0.0945, -0.0841, -0.1429, -0.1365, -0.1664,\n", + " -0.1899, -0.0696, -0.0490, -0.0810, -0.0197, -0.0392, -0.0462, -0.0543,\n", + " -0.0050, 0.0333, 0.0184, 0.0087, -0.0698, -0.1217, -0.1171, -0.1185,\n", + " -0.1818, -0.1911, -0.1279, -0.0815, -0.0238, 0.0104, 0.0078, 0.1894,\n", + " 0.2342, 0.1802, 0.1458]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005095531232655048\n", + "Grad encoder.fc1.bias: 0.0006661376683041453\n", + "Grad encoder.encoder.0.weight: 0.00011418998474255204\n", + "Grad encoder.encoder.0.bias: 0.0005562185542657971\n", + "Grad encoder.encoder.2.weight: 7.619542884640396e-05\n", + "Grad encoder.encoder.2.bias: 0.0005644778721034527\n", + "Grad encoder.encoder.4.weight: 0.0002478715614415705\n", + "Grad encoder.encoder.4.bias: 0.0013467160752043128\n", + "Grad decoder.fc1.0.weight: 8.750831329962239e-05\n", + "Grad decoder.fc1.0.bias: 0.0005071500781923532\n", + "Grad decoder.fc1.2.weight: 0.00010663467401172966\n", + "Grad decoder.fc1.2.bias: 0.0006891658413223922\n", + "Grad decoder.fc1.4.weight: 7.663427095394582e-05\n", + "Grad decoder.fc1.4.bias: 0.0005949725746177137\n", + "Grad decoder.fc2.weight: 0.00011312937567709014\n", + "Grad decoder.fc2.bias: 0.001855075010098517\n", + "Grad _memory_unit.weight_ih_l0: 1.681720641499851e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.824191612191498e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.16150180879049e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.826096978329588e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.266961569665e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.927736517856829e-05\n", + "Data X Sample: tensor([[1.4279, 1.8541, 2.0721, 2.0969, 2.1889, 2.3513, 2.3865, 2.4701, 2.4898,\n", + " 2.5354, 2.5474, 2.4772, 2.4390, 2.3966, 2.4185, 2.3426, 2.3397, 2.4528,\n", + " 2.4801, 2.4567, 2.4511, 2.5474, 2.5688, 2.4851, 2.5694, 2.5388, 2.4295,\n", + " 2.4308, 1.9046, 1.9749, 1.8057, 1.8072, 1.4982, 0.9818, 1.3383, 1.3815,\n", + " 1.4375, 1.3596, 1.4388, 1.4356, 1.3220, 0.7368, 0.7518, 1.2917, 1.8037,\n", + " 2.1729, 1.3598, 1.9313]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3021, -0.1908, 1.5887, -0.5806, 0.9962, 0.3397, 0.3205, 0.2235,\n", + " 0.7727, 0.1048, -0.0684, -0.3778, -0.1517, -0.6522, 1.2026, -0.1390,\n", + " 0.3731, 0.7941, 0.3405, 0.4116, 0.4156, 0.2609, 0.5120, 0.0997,\n", + " -0.5535, 0.8986, -0.3427, -0.5859, -1.0591, -0.7516, -0.7875, -0.2759,\n", + " -0.2370, 1.1230, 0.1758, -0.2737, 0.0203, 0.0000, 0.0000, -0.0838,\n", + " -0.1489, -0.1578, -0.7241]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4536, 0.3515, 0.1072, 0.2635, 0.1676, -0.0989, -0.3458, -0.4830,\n", + " -0.1558, -0.2575, -0.2670, 0.2291, 0.2047, 0.2652, 0.1945, 0.2784,\n", + " 0.2022, 0.1202, 0.0598, 0.0877, 0.1156, 0.0775, 0.0562, -0.0118,\n", + " 0.0410, 0.0468, -0.0545, 0.0329, 0.1792, 0.3060, 0.3011, 0.2069,\n", + " 0.3226, 0.3245, 0.1822, 0.2702, -0.0961, -0.0296, 0.0770, -0.3266,\n", + " -0.3519, -0.3744, -0.3016]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0020650657825171947\n", + "Grad encoder.fc1.bias: 0.0011814720928668976\n", + "Grad encoder.encoder.0.weight: 0.0003266956773586571\n", + "Grad encoder.encoder.0.bias: 0.0011918982490897179\n", + "Grad encoder.encoder.2.weight: 0.0002228215744253248\n", + "Grad encoder.encoder.2.bias: 0.0016228164313361049\n", + "Grad encoder.encoder.4.weight: 0.0005888462765142322\n", + "Grad encoder.encoder.4.bias: 0.004496964626014233\n", + "Grad decoder.fc1.0.weight: 0.0001969841541722417\n", + "Grad decoder.fc1.0.bias: 0.0012564582284539938\n", + "Grad decoder.fc1.2.weight: 0.00010144055704586208\n", + "Grad decoder.fc1.2.bias: 0.0015652505680918694\n", + "Grad decoder.fc1.4.weight: 7.838010787963867e-05\n", + "Grad decoder.fc1.4.bias: 0.0011206127237528563\n", + "Grad decoder.fc2.weight: 0.00015179195906966925\n", + "Grad decoder.fc2.bias: 0.002393793547526002\n", + "Grad _memory_unit.weight_ih_l0: 7.975837797857821e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00019585751579143107\n", + "Grad _memory_unit.bias_hh_l0: 0.00012465220061130822\n", + "Grad _memory_unit.weight_ih_l1: 3.9359729271382093e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00046398374252021313\n", + "Grad _memory_unit.bias_hh_l1: 0.0002449630992487073\n", + "Data X Sample: tensor([[1.6135, 1.7740, 1.9083, 2.0400, 2.0797, 2.2865, 2.3202, 2.4545, 2.5167,\n", + " 2.5039, 2.4776, 2.5843, 2.4412, 2.4429, 2.3983, 2.3125, 2.3004, 2.4180,\n", + " 2.4140, 2.4269, 2.5100, 2.4495, 2.5423, 2.5405, 2.5450, 2.6302, 2.5654,\n", + " 2.5613, 2.1821, 2.3188, 2.2922, 2.3157, 2.2286, 1.4280, 1.9340, 1.8047,\n", + " 1.6302, 1.5186, 1.6353, 1.5774, 1.2457, 0.6831, 0.7053, 1.2744, 1.8671,\n", + " 1.9842, 1.3666, 1.9470]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.0582, 0.3765, 0.0626, 0.9393, 1.4035, 0.0099, 0.0750, -0.2812,\n", + " -0.3413, -0.4036, -0.3896, -0.3697, 0.3535, -0.2380, -1.0363, 0.2919,\n", + " -2.0223, -0.2192, 0.4395, 1.2231, 0.9088, 0.9803, 5.1516, 0.7823,\n", + " 0.6884, -0.7179, -0.2180, -0.1340, -0.3217, 0.1012, -0.0582, -0.4535,\n", + " 0.7982, 0.3209, 1.3497, 1.0701, -0.5893, 0.1123, -0.3874, -0.4365,\n", + " -0.3937, -0.1246, -0.4346]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4310, 0.3484, 0.1190, 0.2476, 0.1952, -0.0751, -0.3339, -0.4647,\n", + " -0.1609, -0.2508, -0.2764, 0.2353, 0.2140, 0.2664, 0.1928, 0.2822,\n", + " 0.2000, 0.1314, 0.0632, 0.0760, 0.1124, 0.1045, 0.0699, -0.0274,\n", + " 0.0437, 0.0074, -0.0439, 0.0079, 0.1616, 0.3249, 0.3057, 0.2074,\n", + " 0.3018, 0.3238, 0.1758, 0.2674, -0.0933, -0.0042, 0.0945, -0.3281,\n", + " -0.3452, -0.3758, -0.3116]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 8.155605610227212e-05\n", + "Grad encoder.fc1.bias: 0.00033686048118397593\n", + "Grad encoder.encoder.0.weight: 2.9509026717278175e-05\n", + "Grad encoder.encoder.0.bias: 0.0002907824527937919\n", + "Grad encoder.encoder.2.weight: 3.129625110886991e-05\n", + "Grad encoder.encoder.2.bias: 0.0003604578087106347\n", + "Grad encoder.encoder.4.weight: 0.00015312471077777445\n", + "Grad encoder.encoder.4.bias: 0.0016444142675027251\n", + "Grad decoder.fc1.0.weight: 5.975171006866731e-05\n", + "Grad decoder.fc1.0.bias: 0.0004060440987814218\n", + "Grad decoder.fc1.2.weight: 7.624815771123394e-05\n", + "Grad decoder.fc1.2.bias: 0.0004644478322006762\n", + "Grad decoder.fc1.4.weight: 7.303684105863795e-05\n", + "Grad decoder.fc1.4.bias: 0.0005951232742518187\n", + "Grad decoder.fc2.weight: 0.0001219784389832057\n", + "Grad decoder.fc2.bias: 0.001994436141103506\n", + "Grad _memory_unit.weight_ih_l0: 2.243486960651353e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.908142288215458e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.164885831414722e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.347896032821154e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011890666064573452\n", + "Grad _memory_unit.bias_hh_l1: 6.20516439084895e-05\n", + "Data X Sample: tensor([[1.3558, 1.8367, 2.2059, 2.2740, 2.1428, 2.2850, 2.3911, 2.5028, 2.5191,\n", + " 2.4422, 2.5791, 2.5473, 2.5055, 2.4893, 2.4437, 2.5327, 2.3743, 2.5340,\n", + " 2.4553, 2.4846, 2.5297, 2.6071, 2.5544, 2.6130, 2.4605, 2.4656, 2.3070,\n", + " 2.3370, 1.9150, 1.8996, 1.7848, 1.7354, 1.5202, 1.0069, 1.3334, 1.3402,\n", + " 1.3490, 1.3728, 1.4388, 1.4384, 1.3411, 0.7368, 0.8428, 1.3577, 2.0772,\n", + " 2.2930, 1.4006, 1.9783]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4430, 0.3393, 0.2673, -0.3165, 0.4971, -0.5977, -0.8611, -0.5147,\n", + " -0.5978, -0.1742, -0.1578, -1.3612, -1.1731, 0.3547, 0.4179, 0.2975,\n", + " 0.0378, -0.5242, -0.7837, -0.9919, -0.6126, -0.3387, 0.1301, 0.2529,\n", + " -0.3593, -0.7254, 0.4984, 0.7129, 0.6390, 1.0431, 0.7389, 0.4742,\n", + " -0.5279, -0.1504, 0.1696, 0.7666, 0.9953, -0.6173, -0.2890, -0.3254,\n", + " -0.2841, -0.8501, -0.2311]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2990, 0.2173, 0.0751, 0.1224, 0.1042, -0.0628, -0.2427, -0.3166,\n", + " -0.0896, -0.1488, -0.1920, 0.1551, 0.1342, 0.1760, 0.1210, 0.1612,\n", + " 0.1112, 0.0678, 0.0344, 0.0317, 0.0684, 0.0556, 0.0268, -0.0424,\n", + " 0.0242, 0.0228, -0.0220, 0.0158, 0.1202, 0.2005, 0.2025, 0.1340,\n", + " 0.1874, 0.1929, 0.0955, 0.1727, -0.0712, 0.0008, 0.0616, -0.2131,\n", + " -0.2012, -0.2333, -0.1877]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00018736875790636986\n", + "Grad encoder.fc1.bias: 0.0004569812153931707\n", + "Grad encoder.encoder.0.weight: 5.162206798559055e-05\n", + "Grad encoder.encoder.0.bias: 0.0002949054178316146\n", + "Grad encoder.encoder.2.weight: 3.4555541787995026e-05\n", + "Grad encoder.encoder.2.bias: 0.0002784642856568098\n", + "Grad encoder.encoder.4.weight: 7.925742829684168e-05\n", + "Grad encoder.encoder.4.bias: 0.0007724293391220272\n", + "Grad decoder.fc1.0.weight: 4.60747214674484e-05\n", + "Grad decoder.fc1.0.bias: 0.0003694058977998793\n", + "Grad decoder.fc1.2.weight: 6.267226854106411e-05\n", + "Grad decoder.fc1.2.bias: 0.0003714609774760902\n", + "Grad decoder.fc1.4.weight: 3.9944912714418024e-05\n", + "Grad decoder.fc1.4.bias: 0.0002447975566610694\n", + "Grad decoder.fc2.weight: 9.096314170164987e-05\n", + "Grad decoder.fc2.bias: 0.0019936098251491785\n", + "Grad _memory_unit.weight_ih_l0: 6.576588475581957e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.0511720979120582e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.7602951629669406e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.784479076784919e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.464415102731436e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.822206053882837e-05\n", + "Data X Sample: tensor([[2.1005, 2.5139, 2.7919, 2.9300, 3.0888, 3.2397, 3.2585, 3.3602, 3.2612,\n", + " 3.2653, 3.3722, 3.4179, 3.2157, 3.1900, 3.2961, 3.2589, 3.1558, 3.2575,\n", + " 3.4424, 3.3307, 3.1799, 3.1322, 2.9640, 2.8230, 2.7420, 2.7347, 2.5654,\n", + " 2.5654, 2.2168, 2.2566, 2.2747, 2.2880, 2.0570, 1.4280, 2.0197, 2.2668,\n", + " 2.5859, 2.8093, 3.1058, 2.8797, 1.6847, 0.9897, 1.0469, 1.6533, 2.6322,\n", + " 2.8820, 1.8697, 2.6429]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 3.3780e-03, -4.9136e-01, -5.2693e-02, -6.0280e-01, 6.0562e-01,\n", + " 5.7361e-01, 1.7588e-01, 1.5618e-01, 6.1721e-01, -1.2602e-01,\n", + " -7.0100e-02, -8.9405e-01, -1.0419e+00, -9.5512e-01, 6.0433e-01,\n", + " -1.2948e-03, 1.1115e+00, 4.9126e-01, 2.9090e+00, 1.6802e+00,\n", + " 4.9044e-01, 2.9870e-01, 2.4550e-01, 7.4576e-01, 4.4954e-01,\n", + " 9.4137e-02, -3.8785e+00, -2.6626e-01, -9.8399e-01, -1.1366e-01,\n", + " 5.7408e-01, -1.4181e-01, 2.8236e-01, -3.0924e-01, 2.3392e-01,\n", + " -4.6950e-01, -8.9580e-01, -8.6851e-02, 9.7944e-01, -3.3481e-02,\n", + " -8.3195e-02, -4.3745e-01, 2.7122e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.0532, -0.0290, -0.0138, -0.0752, -0.0164, -0.0329, -0.0793, -0.0893,\n", + " 0.0259, 0.0197, -0.0486, 0.0414, 0.0110, 0.0258, 0.0048, -0.0408,\n", + " -0.0868, -0.0182, 0.0013, -0.0615, 0.0045, -0.0134, -0.0226, -0.0797,\n", + " -0.0105, -0.0038, 0.0266, 0.0508, 0.0489, 0.0330, 0.0549, 0.0091,\n", + " -0.0193, 0.0037, -0.0535, 0.0320, -0.0268, 0.0300, 0.0366, -0.0085,\n", + " 0.0328, -0.0225, 0.0098]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00032942145480774343\n", + "Grad encoder.fc1.bias: 0.0002082431165035814\n", + "Grad encoder.encoder.0.weight: 7.666892634006217e-05\n", + "Grad encoder.encoder.0.bias: 0.00022351753432303667\n", + "Grad encoder.encoder.2.weight: 4.4424137740861624e-05\n", + "Grad encoder.encoder.2.bias: 0.00029135093791410327\n", + "Grad encoder.encoder.4.weight: 0.00014698709128424525\n", + "Grad encoder.encoder.4.bias: 0.0014393320307135582\n", + "Grad decoder.fc1.0.weight: 5.478716775542125e-05\n", + "Grad decoder.fc1.0.bias: 0.0004770935920532793\n", + "Grad decoder.fc1.2.weight: 6.386973836924881e-05\n", + "Grad decoder.fc1.2.bias: 0.0005645398632623255\n", + "Grad decoder.fc1.4.weight: 6.220533396117389e-05\n", + "Grad decoder.fc1.4.bias: 0.0006892546080052853\n", + "Grad decoder.fc2.weight: 7.563108374597505e-05\n", + "Grad decoder.fc2.bias: 0.002792405430227518\n", + "Grad _memory_unit.weight_ih_l0: 7.567326520074857e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.5459368266165257e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.5173460016958416e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.925597295368789e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010592366743367165\n", + "Grad _memory_unit.bias_hh_l1: 5.5145384976640344e-05\n", + "Data X Sample: tensor([[1.4268, 1.5046, 1.6995, 1.8105, 1.9533, 1.9756, 2.0722, 1.9321, 3.0635,\n", + " 3.9493, 4.1874, 4.1267, 3.9658, 3.7080, 3.6593, 3.3683, 3.3350, 3.4819,\n", + " 3.3226, 3.3754, 3.4547, 3.4170, 3.1038, 2.8210, 2.8115, 2.8966, 2.8558,\n", + " 2.8632, 2.9210, 2.9902, 3.0411, 3.1281, 3.5289, 2.4990, 4.2331, 4.6334,\n", + " 4.7530, 5.2157, 5.6349, 5.5977, 1.0547, 0.6393, 0.6487, 1.0850, 1.6531,\n", + " 1.8413, 1.1626, 1.7750]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4084, -1.1133, 0.2354, -0.6729, -0.4252, -0.5404, 0.2779, 0.3957,\n", + " 0.3586, 0.5478, 0.4722, -0.5278, -0.4790, -0.4208, -0.9933, -0.5849,\n", + " -0.2340, -0.5878, -1.2194, 1.2220, -0.3061, -1.0795, -0.3462, -1.0465,\n", + " -0.1616, 0.2144, 0.1660, -0.8745, -0.9082, 0.2511, -0.0471, 0.4078,\n", + " -0.9971, 0.0077, -0.7085, -0.0946, -0.2970, 0.8238, 0.0000, 0.8700,\n", + " 1.0270, 0.6695, -0.3493]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1751, -0.2252, -0.0580, -0.1199, 0.0538, 0.1334, 0.1299, 0.2139,\n", + " 0.1837, 0.2278, 0.1726, -0.1143, -0.1282, -0.1957, -0.1702, -0.2114,\n", + " -0.2117, -0.0684, -0.0342, -0.0821, -0.0186, -0.0444, -0.0616, -0.0589,\n", + " 0.0166, 0.0389, -0.0315, -0.0512, -0.1340, -0.1997, -0.1827, -0.1717,\n", + " -0.2615, -0.2493, -0.1887, -0.0987, -0.0438, 0.0209, 0.0447, 0.2131,\n", + " 0.2682, 0.2397, 0.1986]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 8.468867599731311e-05\n", + "Grad encoder.fc1.bias: 0.00026309018721804023\n", + "Grad encoder.encoder.0.weight: 2.1931686205789447e-05\n", + "Grad encoder.encoder.0.bias: 0.00020168733317404985\n", + "Grad encoder.encoder.2.weight: 1.6702088032616302e-05\n", + "Grad encoder.encoder.2.bias: 0.0002067821187665686\n", + "Grad encoder.encoder.4.weight: 6.044043038855307e-05\n", + "Grad encoder.encoder.4.bias: 0.0005076385568827391\n", + "Grad decoder.fc1.0.weight: 2.894283170462586e-05\n", + "Grad decoder.fc1.0.bias: 0.00016976144979707897\n", + "Grad decoder.fc1.2.weight: 6.324335117824376e-05\n", + "Grad decoder.fc1.2.bias: 0.00042785509140230715\n", + "Grad decoder.fc1.4.weight: 7.156691572163254e-05\n", + "Grad decoder.fc1.4.bias: 0.0005581238656304777\n", + "Grad decoder.fc2.weight: 0.0001130587697844021\n", + "Grad decoder.fc2.bias: 0.0016507640248164535\n", + "Grad _memory_unit.weight_ih_l0: 9.744208000483923e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.960981121053919e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.0372703147586435e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.8296803975536022e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.2828690968453884e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.7365324058337137e-05\n", + "Data X Sample: tensor([[1.5149, 1.8949, 2.1653, 2.3658, 2.5031, 2.4825, 2.5806, 2.5610, 2.3897,\n", + " 2.5655, 2.4300, 2.3428, 2.3169, 2.2657, 2.0553, 2.0554, 2.0724, 2.0640,\n", + " 1.9597, 1.9341, 1.9187, 1.8570, 1.7664, 1.7006, 1.6535, 1.6272, 1.5930,\n", + " 1.6233, 1.1969, 1.2609, 1.2003, 1.1855, 1.0450, 0.7621, 1.1741, 1.2794,\n", + " 1.4454, 1.7068, 1.9903, 1.9746, 1.2791, 0.7548, 0.7700, 1.4725, 2.1129,\n", + " 2.3044, 1.6045, 2.2441]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.4963, -1.3903, -0.8165, -1.3645, -0.8328, 0.3123, 1.4673, 1.5473,\n", + " 1.0352, 1.8329, 3.9918, -0.2799, -0.8658, -2.1535, -1.6335, -1.5052,\n", + " -1.5085, -1.2613, -0.3210, -0.6531, -0.4894, -0.5101, -0.1072, 0.0992,\n", + " -0.3552, -0.1343, 0.5494, 0.1986, -0.1172, -0.8828, -1.3238, -0.8973,\n", + " -1.9989, -2.2481, -0.4596, -3.0048, -0.8394, 0.2277, -0.5640, 4.9568,\n", + " 3.7276, 3.6893, 2.3599]], device='cuda:0')\n", + "Prediction Sample: tensor([[-1.3018, -1.1561, -0.4961, -0.9468, -0.3298, 0.0551, 0.9626, 1.5910,\n", + " 1.2305, 2.0150, 2.5667, -0.6360, -0.6414, -1.3755, -1.0880, -1.7411,\n", + " -1.4173, -0.5728, -0.2601, -0.5191, -0.4690, -0.1518, -0.2316, -0.1509,\n", + " -0.1554, -0.1661, 0.6381, 0.3555, -0.3454, -0.8544, -0.9946, -0.9471,\n", + " -0.9975, -1.7702, -0.7863, -0.7909, -0.2302, -0.1707, -0.1680, 3.6462,\n", + " 3.6725, 2.7282, 2.3048]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005205505876801908\n", + "Grad encoder.fc1.bias: 0.0004074567696079612\n", + "Grad encoder.encoder.0.weight: 8.527990576112643e-05\n", + "Grad encoder.encoder.0.bias: 0.00045546013279818\n", + "Grad encoder.encoder.2.weight: 7.494082092307508e-05\n", + "Grad encoder.encoder.2.bias: 0.0008014338091015816\n", + "Grad encoder.encoder.4.weight: 0.00020466255955398083\n", + "Grad encoder.encoder.4.bias: 0.0020226521883159876\n", + "Grad decoder.fc1.0.weight: 9.25914355320856e-05\n", + "Grad decoder.fc1.0.bias: 0.0006052647950127721\n", + "Grad decoder.fc1.2.weight: 6.072253017919138e-05\n", + "Grad decoder.fc1.2.bias: 0.0010132984025403857\n", + "Grad decoder.fc1.4.weight: 4.183159035164863e-05\n", + "Grad decoder.fc1.4.bias: 0.0005678915185853839\n", + "Grad decoder.fc2.weight: 8.26608229544945e-05\n", + "Grad decoder.fc2.bias: 0.0018055092077702284\n", + "Grad _memory_unit.weight_ih_l0: 4.553450344246812e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00011427821300458163\n", + "Grad _memory_unit.bias_hh_l0: 7.362532778643072e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.951072772499174e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00020477111684158444\n", + "Grad _memory_unit.bias_hh_l1: 0.00011387620907044038\n", + "Data X Sample: tensor([[1.4077, 1.4944, 1.6829, 1.8520, 1.8679, 2.0184, 1.9998, 1.8995, 3.9715,\n", + " 4.2668, 4.3936, 4.2864, 4.1345, 3.9152, 3.8913, 3.6760, 3.6086, 3.7024,\n", + " 3.6324, 3.6116, 3.6411, 3.4905, 3.1857, 2.8688, 2.8058, 2.8600, 2.9517,\n", + " 2.9733, 2.9210, 3.1147, 3.1636, 3.3381, 3.8193, 2.8171, 4.5910, 4.9836,\n", + " 5.0676, 5.5682, 6.0659, 5.9665, 0.9736, 0.5915, 0.6043, 1.1108, 1.7165,\n", + " 1.8756, 1.1898, 1.8062]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3608, -0.3524, -0.6070, 0.2881, 0.5884, 0.6433, -0.0643, 0.3687,\n", + " 0.1910, 0.1294, 0.3753, -5.5848, 0.1627, -1.8840, -0.1444, -1.5580,\n", + " -0.5882, -0.6518, -0.4403, -1.0308, 0.1526, -1.3400, 0.7374, 0.2354,\n", + " -0.3038, -3.2879, -1.5181, -0.8905, -0.7179, -0.7977, -0.6759, 0.4368,\n", + " -0.4940, -0.1254, 0.0195, -0.0819, -1.0138, -0.6716, 0.0000, 0.3121,\n", + " 0.7734, 0.3283, 0.9445]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1803, -0.2441, -0.0601, -0.0848, 0.1220, 0.1791, 0.1600, 0.2385,\n", + " 0.2341, 0.2722, 0.1949, -0.1257, -0.1537, -0.2262, -0.1904, -0.2441,\n", + " -0.2272, -0.0658, -0.0142, -0.0791, -0.0158, -0.0485, -0.0710, -0.0667,\n", + " 0.0294, 0.0411, -0.0679, -0.0885, -0.1793, -0.2599, -0.2270, -0.2056,\n", + " -0.3182, -0.2820, -0.2350, -0.1071, -0.0582, 0.0294, 0.0680, 0.2189,\n", + " 0.2862, 0.2727, 0.2294]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 7.85926531534642e-05\n", + "Grad encoder.fc1.bias: 0.00032687513157725334\n", + "Grad encoder.encoder.0.weight: 1.951964986801613e-05\n", + "Grad encoder.encoder.0.bias: 0.00022972654551267624\n", + "Grad encoder.encoder.2.weight: 2.1939940779702738e-05\n", + "Grad encoder.encoder.2.bias: 0.0002876009384635836\n", + "Grad encoder.encoder.4.weight: 6.399882113328204e-05\n", + "Grad encoder.encoder.4.bias: 0.0005345492390915751\n", + "Grad decoder.fc1.0.weight: 3.399742490728386e-05\n", + "Grad decoder.fc1.0.bias: 0.00021750108862761408\n", + "Grad decoder.fc1.2.weight: 5.3502411901718006e-05\n", + "Grad decoder.fc1.2.bias: 0.0005047716549597681\n", + "Grad decoder.fc1.4.weight: 4.700442877947353e-05\n", + "Grad decoder.fc1.4.bias: 0.000555126927793026\n", + "Grad decoder.fc2.weight: 7.911988359410316e-05\n", + "Grad decoder.fc2.bias: 0.0020147250033915043\n", + "Grad _memory_unit.weight_ih_l0: 4.118659944651881e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.944720836239867e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.525499828858301e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.0387400329345837e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.340448504080996e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.2801443265052512e-05\n", + "Data X Sample: tensor([[1.2995, 1.5352, 1.6228, 1.6465, 1.7962, 1.9668, 2.0229, 1.8299, 3.2319,\n", + " 3.8277, 3.9241, 3.9632, 3.6773, 3.5908, 3.4374, 3.4982, 3.5064, 3.3909,\n", + " 3.5147, 3.4219, 3.4841, 3.4323, 3.0942, 2.8859, 2.7383, 2.7425, 2.8398,\n", + " 2.8591, 2.8100, 2.9083, 3.1006, 3.0922, 3.3639, 2.3983, 3.8508, 4.2053,\n", + " 4.5347, 4.9613, 5.5017, 5.4246, 1.0309, 0.5815, 0.6225, 1.0391, 1.5024,\n", + " 1.6468, 1.0606, 1.5560]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 3.7371e-01, 1.5273e-01, -4.3288e-01, 6.2659e-01, -1.1425e-01,\n", + " -2.1572e-01, 1.3932e-01, -2.9890e-01, -3.4361e-01, -3.5359e-01,\n", + " 1.0230e+00, 1.3850e+00, -1.8090e-01, -4.8771e-03, 5.1111e-01,\n", + " -8.6531e-01, -3.1788e-01, -3.5227e-01, -7.1839e-02, -3.3078e-01,\n", + " 2.2500e+00, -4.3438e-01, -4.4288e-01, 9.4781e-02, -4.0545e-01,\n", + " 7.3046e-02, 2.9640e-01, 3.2785e-01, -1.0769e+00, 1.8800e-01,\n", + " -2.1501e-03, 1.8173e-01, -6.3269e-01, -9.2087e-02, 4.3457e-02,\n", + " -8.3376e-01, 1.6529e-01, -9.4836e-02, 8.0928e-01, -9.2790e-01,\n", + " -1.1583e-01, -2.7512e-01, -4.8981e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1818, -0.2411, -0.0591, -0.0976, 0.0988, 0.1673, 0.1548, 0.2381,\n", + " 0.2176, 0.2585, 0.1931, -0.1232, -0.1502, -0.2201, -0.1860, -0.2349,\n", + " -0.2210, -0.0659, -0.0192, -0.0818, -0.0179, -0.0488, -0.0668, -0.0601,\n", + " 0.0282, 0.0421, -0.0600, -0.0809, -0.1679, -0.2395, -0.2180, -0.1973,\n", + " -0.3001, -0.2769, -0.2210, -0.1095, -0.0544, 0.0223, 0.0612, 0.2232,\n", + " 0.2832, 0.2686, 0.2207]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 6.818094698246568e-05\n", + "Grad encoder.fc1.bias: 0.0001775400887709111\n", + "Grad encoder.encoder.0.weight: 2.0456409401958808e-05\n", + "Grad encoder.encoder.0.bias: 0.00017352600116282701\n", + "Grad encoder.encoder.2.weight: 2.0306824808358215e-05\n", + "Grad encoder.encoder.2.bias: 0.00027636648155748844\n", + "Grad encoder.encoder.4.weight: 0.00010439567267894745\n", + "Grad encoder.encoder.4.bias: 0.001185503788292408\n", + "Grad decoder.fc1.0.weight: 4.226500459481031e-05\n", + "Grad decoder.fc1.0.bias: 0.0002485466538928449\n", + "Grad decoder.fc1.2.weight: 5.7084755098912865e-05\n", + "Grad decoder.fc1.2.bias: 0.0004533473984338343\n", + "Grad decoder.fc1.4.weight: 6.81483797961846e-05\n", + "Grad decoder.fc1.4.bias: 0.0005174620309844613\n", + "Grad decoder.fc2.weight: 9.424595918972045e-05\n", + "Grad decoder.fc2.bias: 0.0018576837610453367\n", + "Grad _memory_unit.weight_ih_l0: 2.096637399517931e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.764383190078661e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.9554881368530914e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.563386937661562e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.274038893636316e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.7517263737972826e-05\n", + "Data X Sample: tensor([[1.6178, 1.8439, 1.9940, 2.0816, 2.1258, 2.1642, 2.2109, 2.3168, 2.3116,\n", + " 2.3348, 2.3539, 2.4168, 2.4101, 2.3475, 2.3000, 2.2195, 2.2737, 2.3503,\n", + " 2.3273, 2.4102, 2.5297, 2.4984, 2.5086, 2.5023, 2.4980, 2.5597, 2.6240,\n", + " 2.7163, 2.3486, 2.4039, 2.4182, 2.3930, 2.2770, 1.4967, 1.9536, 1.8485,\n", + " 1.7285, 1.5504, 1.5656, 1.5037, 1.2027, 0.7348, 0.7397, 1.2544, 1.8909,\n", + " 2.0757, 1.2578, 1.9313]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.0487, 0.7128, 0.0092, -0.5741, -0.8336, -0.8455, -1.0066, -0.8450,\n", + " -1.2068, -0.6684, -0.5746, 0.2750, 1.1904, 0.1511, -1.3358, 1.1614,\n", + " 0.2168, 0.5903, -0.6940, -1.0995, 1.7810, 0.7812, 0.6336, -0.8205,\n", + " 0.6376, 0.4297, 0.8890, 1.3254, 0.8334, 0.6452, 0.9067, 0.3088,\n", + " 0.6544, 1.0223, 0.7723, 0.9264, -0.5827, -0.9248, 0.7827, -0.7954,\n", + " -0.5314, -1.0160, -0.5359]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2063, 0.1402, 0.0633, 0.0335, 0.0661, -0.0388, -0.1707, -0.1903,\n", + " -0.0484, -0.0841, -0.1432, 0.1014, 0.0738, 0.1215, 0.0806, 0.0934,\n", + " 0.0569, 0.0317, 0.0200, -0.0062, 0.0330, 0.0406, 0.0018, -0.0566,\n", + " 0.0138, 0.0157, -0.0188, -0.0048, 0.0824, 0.1282, 0.1129, 0.0728,\n", + " 0.1045, 0.0900, 0.0240, 0.1071, -0.0308, 0.0086, 0.0489, -0.1241,\n", + " -0.0947, -0.1442, -0.1351]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 4.0302820707438514e-05\n", + "Grad encoder.fc1.bias: 0.0006299964734353125\n", + "Grad encoder.encoder.0.weight: 1.4841069969406817e-05\n", + "Grad encoder.encoder.0.bias: 0.0006094133132137358\n", + "Grad encoder.encoder.2.weight: 2.782505180221051e-05\n", + "Grad encoder.encoder.2.bias: 0.0006799036636948586\n", + "Grad encoder.encoder.4.weight: 0.00016665206931065768\n", + "Grad encoder.encoder.4.bias: 0.0023431917652487755\n", + "Grad decoder.fc1.0.weight: 6.471904634963721e-05\n", + "Grad decoder.fc1.0.bias: 0.0004303696914575994\n", + "Grad decoder.fc1.2.weight: 8.644907211419195e-05\n", + "Grad decoder.fc1.2.bias: 0.0005645218770951033\n", + "Grad decoder.fc1.4.weight: 8.475595677737147e-05\n", + "Grad decoder.fc1.4.bias: 0.0006692074239253998\n", + "Grad decoder.fc2.weight: 0.00012232174049131572\n", + "Grad decoder.fc2.bias: 0.0019004021305590868\n", + "Grad _memory_unit.weight_ih_l0: 3.611610736697912e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00012631887511815876\n", + "Grad _memory_unit.bias_hh_l0: 6.559121538884938e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.665922566957306e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00013411078543867916\n", + "Grad _memory_unit.bias_hh_l1: 6.953823321964592e-05\n", + "Data X Sample: tensor([[1.4735, 1.8556, 2.1548, 2.3265, 2.4775, 2.6371, 2.6962, 2.8676, 2.7071,\n", + " 2.8767, 2.8265, 2.8239, 2.8451, 2.7592, 2.8346, 2.8185, 2.7564, 2.8435,\n", + " 2.8353, 2.7896, 2.8265, 2.7602, 2.7158, 2.5672, 2.4492, 2.3638, 2.2431,\n", + " 2.2922, 1.8317, 1.8570, 1.7148, 1.6718, 1.4388, 0.9520, 1.3089, 1.3012,\n", + " 1.3156, 1.6061, 1.8888, 1.8186, 1.3172, 0.7906, 0.8023, 1.3864, 2.1407,\n", + " 2.3387, 1.5366, 2.3458]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5569, 1.6919, -0.4459, -1.3047, 0.3844, 0.2332, 0.3893, 0.3465,\n", + " -0.3966, -0.2808, -0.3890, -0.4429, 1.0312, -0.2382, -0.9100, -0.2806,\n", + " -0.7745, 1.6317, 1.2654, 2.4624, 0.2563, 0.5371, 0.1762, -0.3900,\n", + " -0.2646, -0.1560, -0.0315, -0.2784, -0.1980, 0.0319, 0.1651, -0.4306,\n", + " -0.5312, 0.5828, -0.3663, -1.3039, -0.3615, 0.5417, -0.2265, 0.4085,\n", + " -0.1294, 0.5708, 0.4638]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.9685, -0.8665, -0.3877, -0.7820, -0.2862, 0.0059, 0.6458, 1.1845,\n", + " 0.8566, 1.4488, 1.8251, -0.4757, -0.5306, -1.0093, -0.7684, -1.2630,\n", + " -1.0568, -0.4422, -0.2007, -0.3400, -0.3507, -0.1252, -0.1597, -0.1200,\n", + " -0.0938, -0.1182, 0.5278, 0.2925, -0.2317, -0.6147, -0.7062, -0.6771,\n", + " -0.7323, -1.2839, -0.5916, -0.5810, -0.2119, -0.1230, -0.0899, 2.6058,\n", + " 2.6732, 2.0118, 1.7354]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.002274812199175358\n", + "Grad encoder.fc1.bias: 0.0012085649650543928\n", + "Grad encoder.encoder.0.weight: 0.00040657055797055364\n", + "Grad encoder.encoder.0.bias: 0.0013977901544421911\n", + "Grad encoder.encoder.2.weight: 0.00023731053806841373\n", + "Grad encoder.encoder.2.bias: 0.0015749834710732102\n", + "Grad encoder.encoder.4.weight: 0.0006435057730413973\n", + "Grad encoder.encoder.4.bias: 0.0049392106011509895\n", + "Grad decoder.fc1.0.weight: 0.00019486753444653004\n", + "Grad decoder.fc1.0.bias: 0.0012644418748095632\n", + "Grad decoder.fc1.2.weight: 9.9217526440043e-05\n", + "Grad decoder.fc1.2.bias: 0.001569656073115766\n", + "Grad decoder.fc1.4.weight: 8.546066237613559e-05\n", + "Grad decoder.fc1.4.bias: 0.001225878018885851\n", + "Grad decoder.fc2.weight: 0.0001480713690398261\n", + "Grad decoder.fc2.bias: 0.002328460104763508\n", + "Grad _memory_unit.weight_ih_l0: 5.411686288425699e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00014809195999987423\n", + "Grad _memory_unit.bias_hh_l0: 9.183410293189809e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.0105618861853145e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00035431035212241113\n", + "Grad _memory_unit.bias_hh_l1: 0.00018628835096023977\n", + "Data X Sample: tensor([[1.4820, 1.8352, 2.1923, 2.4292, 2.4246, 2.6696, 2.5744, 2.6973, 2.7779,\n", + " 2.9083, 2.8646, 2.8258, 2.6964, 2.7074, 2.6505, 2.7939, 2.7139, 2.7874,\n", + " 2.8146, 2.8175, 2.8437, 2.8735, 2.7158, 2.6092, 2.3742, 2.3089, 2.2137,\n", + " 2.2351, 1.7207, 1.7849, 1.6133, 1.6359, 1.3596, 0.8765, 1.2182, 1.2599,\n", + " 1.3431, 1.6326, 1.9269, 1.8952, 1.2791, 0.7687, 0.8347, 1.4122, 2.0574,\n", + " 2.3044, 1.5706, 2.1659]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3707, 0.0071, -0.3501, -0.1015, -1.0560, 0.7419, 1.1819, 0.2464,\n", + " -0.4993, -0.5940, -0.2709, 0.1507, 0.3149, -0.2439, -1.4543, 0.4719,\n", + " -1.0605, 0.6514, 0.4223, 0.9177, 0.0214, -0.7352, 1.4167, 0.6477,\n", + " 0.4340, 0.8347, 1.0290, 1.7421, 0.4109, 0.1057, 0.4910, -0.8188,\n", + " -0.7243, -0.8267, -0.1390, 1.0856, -0.6417, -0.7806, -0.9499, 0.4544,\n", + " 0.7264, 0.2311, 0.9702]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.6265, -0.5836, -0.2678, -0.5852, -0.2107, -0.0353, 0.3746, 0.7671,\n", + " 0.5449, 0.9476, 1.1738, -0.3131, -0.3762, -0.6605, -0.4905, -0.8454,\n", + " -0.7211, -0.3068, -0.1378, -0.2103, -0.2377, -0.0817, -0.0881, -0.0959,\n", + " -0.0617, -0.0801, 0.3773, 0.2106, -0.1223, -0.3789, -0.4555, -0.4372,\n", + " -0.4858, -0.8505, -0.4257, -0.3771, -0.1803, -0.0838, -0.0264, 1.6919,\n", + " 1.7601, 1.3608, 1.1795]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0017690443200990558\n", + "Grad encoder.fc1.bias: 0.0013407934457063675\n", + "Grad encoder.encoder.0.weight: 0.0002819757501129061\n", + "Grad encoder.encoder.0.bias: 0.0010509713320061564\n", + "Grad encoder.encoder.2.weight: 0.0002154290850739926\n", + "Grad encoder.encoder.2.bias: 0.001620847498998046\n", + "Grad encoder.encoder.4.weight: 0.0005823837127536535\n", + "Grad encoder.encoder.4.bias: 0.004390061367303133\n", + "Grad decoder.fc1.0.weight: 0.00022018174058757722\n", + "Grad decoder.fc1.0.bias: 0.0014951424673199654\n", + "Grad decoder.fc1.2.weight: 0.00013948942068964243\n", + "Grad decoder.fc1.2.bias: 0.0026923008263111115\n", + "Grad decoder.fc1.4.weight: 0.0001166156871477142\n", + "Grad decoder.fc1.4.bias: 0.0016885792138054967\n", + "Grad decoder.fc2.weight: 0.00017329106049146503\n", + "Grad decoder.fc2.bias: 0.0028662702534347773\n", + "Grad _memory_unit.weight_ih_l0: 9.532138210488483e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00023787117970641702\n", + "Grad _memory_unit.bias_hh_l0: 0.0001534326875116676\n", + "Grad _memory_unit.weight_ih_l1: 4.947144407196902e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0005250739632174373\n", + "Grad _memory_unit.bias_hh_l1: 0.0002847204159479588\n", + "Data X Sample: tensor([[1.4067, 1.5191, 1.6604, 1.7492, 1.8748, 2.0287, 2.0244, 2.0514, 3.1050,\n", + " 4.1215, 4.2794, 4.3273, 4.0235, 3.9534, 3.7450, 3.7594, 3.7077, 3.6115,\n", + " 3.5498, 3.3642, 3.4326, 3.4430, 3.1183, 2.8287, 2.8284, 2.7947, 2.9011,\n", + " 2.8305, 2.8863, 3.1802, 3.2196, 3.2939, 3.7819, 2.6890, 4.7087, 4.9107,\n", + " 5.2407, 5.4277, 5.8694, 6.0062, 1.0547, 0.6313, 0.5982, 1.0219, 1.6134,\n", + " 1.7040, 1.1762, 1.5717]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.2810, 0.2864, -0.5917, -0.4083, 0.4294, -0.0115, 0.2055, 0.5504,\n", + " 0.7333, 0.7859, 0.8361, 0.4392, 0.1120, 1.9355, 0.0893, -0.9597,\n", + " 0.0102, 5.4797, -0.5092, 0.0986, 0.1583, 0.2829, -0.2685, 0.3500,\n", + " -1.4485, -0.1859, -0.2830, -0.6168, 0.2666, -0.2973, 0.2181, -0.0584,\n", + " -1.2306, -0.3027, 0.2530, -0.3508, -1.0138, -0.7895, -0.5562, 0.8717,\n", + " 0.7631, 0.1857, -0.2753]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2312, -0.2868, -0.0672, -0.1000, 0.1213, 0.2117, 0.2107, 0.3087,\n", + " 0.2418, 0.2918, 0.2620, -0.1542, -0.1914, -0.2819, -0.2239, -0.2703,\n", + " -0.2366, -0.0674, -0.0235, -0.0937, -0.0308, -0.0519, -0.0638, -0.0394,\n", + " 0.0539, 0.0531, -0.0923, -0.1228, -0.2170, -0.2673, -0.2775, -0.2569,\n", + " -0.3470, -0.3433, -0.2511, -0.1487, -0.0674, 0.0045, 0.0898, 0.2876,\n", + " 0.3222, 0.3440, 0.2644]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00020704863709397614\n", + "Grad encoder.fc1.bias: 0.00036273151636123657\n", + "Grad encoder.encoder.0.weight: 4.4352811528369784e-05\n", + "Grad encoder.encoder.0.bias: 0.00027150241658091545\n", + "Grad encoder.encoder.2.weight: 2.4760513042565435e-05\n", + "Grad encoder.encoder.2.bias: 0.00027673947624862194\n", + "Grad encoder.encoder.4.weight: 5.789968417957425e-05\n", + "Grad encoder.encoder.4.bias: 0.0004701924044638872\n", + "Grad decoder.fc1.0.weight: 2.8872889743070118e-05\n", + "Grad decoder.fc1.0.bias: 0.0002473449276294559\n", + "Grad decoder.fc1.2.weight: 3.209588976460509e-05\n", + "Grad decoder.fc1.2.bias: 0.00024064569151960313\n", + "Grad decoder.fc1.4.weight: 2.524148476368282e-05\n", + "Grad decoder.fc1.4.bias: 0.00023508304730057716\n", + "Grad decoder.fc2.weight: 7.514415483456105e-05\n", + "Grad decoder.fc2.bias: 0.0018935267580673099\n", + "Grad _memory_unit.weight_ih_l0: 3.054523858736502e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.4256725080485921e-05\n", + "Grad _memory_unit.bias_hh_l0: 7.811036994098686e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.0804470750590554e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.914910485036671e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.0657702407334e-05\n", + "Data X Sample: tensor([[1.3558, 1.3546, 1.4786, 1.5743, 1.6733, 1.8062, 1.9566, 1.9846, 3.4760,\n", + " 4.0267, 4.1177, 3.9300, 3.8016, 3.8198, 3.6063, 3.5679, 3.4608, 3.4335,\n", + " 3.3412, 3.3047, 3.3393, 3.3420, 2.8845, 2.7905, 2.7721, 2.8731, 2.7785,\n", + " 2.8632, 2.8482, 2.9640, 3.2056, 3.1364, 3.4519, 2.5677, 4.1817, 4.6504,\n", + " 4.8277, 5.2607, 5.7173, 5.5466, 0.9354, 0.5596, 0.5477, 1.0046, 1.4271,\n", + " 1.6068, 1.0606, 1.5795]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4917, -0.4109, 0.1564, 0.5369, 0.3819, 0.6218, 0.3628, -0.3019,\n", + " 0.3896, -0.0179, -0.0538, 0.1185, -0.3284, 0.9094, -0.2625, 0.3887,\n", + " -0.6897, 1.2483, 1.0354, 0.6088, 0.7486, 0.2299, -0.0660, 1.9191,\n", + " 0.7226, 1.9514, -0.2469, -0.4948, -0.5589, -0.4697, 0.3943, 0.7128,\n", + " 0.7341, 0.1212, 0.6575, -0.3503, 0.1596, 0.8256, -0.6018, -0.3278,\n", + " -0.6088, -0.2827, -0.6294]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2319, -0.2795, -0.0658, -0.1203, 0.0804, 0.1909, 0.1989, 0.3025,\n", + " 0.2133, 0.2670, 0.2549, -0.1502, -0.1816, -0.2692, -0.2144, -0.2552,\n", + " -0.2266, -0.0672, -0.0331, -0.0974, -0.0336, -0.0506, -0.0578, -0.0315,\n", + " 0.0482, 0.0518, -0.0761, -0.1064, -0.1964, -0.2333, -0.2589, -0.2419,\n", + " -0.3168, -0.3308, -0.2273, -0.1488, -0.0613, -0.0049, 0.0779, 0.2898,\n", + " 0.3146, 0.3328, 0.2492]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.001641042297706008\n", + "Grad encoder.fc1.bias: 0.001657411688938737\n", + "Grad encoder.encoder.0.weight: 0.00024167861556634307\n", + "Grad encoder.encoder.0.bias: 0.0018184836953878403\n", + "Grad encoder.encoder.2.weight: 0.00011046409781556576\n", + "Grad encoder.encoder.2.bias: 0.0017310212133452296\n", + "Grad encoder.encoder.4.weight: 0.00031889809179119766\n", + "Grad encoder.encoder.4.bias: 0.004897306673228741\n", + "Grad decoder.fc1.0.weight: 0.00011130815255455673\n", + "Grad decoder.fc1.0.bias: 0.0010798154398798943\n", + "Grad decoder.fc1.2.weight: 9.248287096852437e-05\n", + "Grad decoder.fc1.2.bias: 0.0016172032337635756\n", + "Grad decoder.fc1.4.weight: 7.530799484811723e-05\n", + "Grad decoder.fc1.4.bias: 0.0007570268353447318\n", + "Grad decoder.fc2.weight: 0.0001511674781795591\n", + "Grad decoder.fc2.bias: 0.0017124960431829095\n", + "Grad _memory_unit.weight_ih_l0: 5.01930080645252e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00023368714028038085\n", + "Grad _memory_unit.bias_hh_l0: 0.00012532933033071458\n", + "Grad _memory_unit.weight_ih_l1: 2.748675615293905e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.000412118824897334\n", + "Grad _memory_unit.bias_hh_l1: 0.0002141267468687147\n", + "Data X Sample: tensor([[1.4544, 1.4958, 1.6318, 1.7689, 1.8440, 2.0228, 2.0599, 2.0443, 3.6005,\n", + " 4.1831, 4.4698, 4.2163, 4.0457, 4.0297, 3.6542, 3.6883, 3.6589, 3.6637,\n", + " 3.6035, 3.4684, 3.4718, 3.5165, 3.1183, 2.8840, 2.8941, 2.7947, 2.9144,\n", + " 2.8550, 2.8482, 2.9509, 3.1391, 3.3049, 3.7423, 2.7370, 4.5665, 4.8961,\n", + " 5.1620, 5.4993, 6.0025, 6.0374, 1.0738, 0.6333, 0.5942, 1.0850, 1.5936,\n", + " 1.6411, 1.1218, 1.7515]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6640, -0.7094, -0.2872, -1.0267, -0.0421, -0.9732, 0.9202, 0.9730,\n", + " 0.1568, 0.5462, 0.3858, 0.1789, -0.1017, -0.3169, 0.3432, -0.2547,\n", + " 0.0872, -0.1350, -1.4777, -0.4518, 0.0756, 0.9852, 0.4336, 1.6707,\n", + " -1.0864, -0.7714, 0.2366, 0.3695, 0.1371, 0.4042, 0.2064, -0.2605,\n", + " 0.2680, -0.7518, -0.1113, -0.7475, 0.0000, -0.0459, 0.2253, 0.4699,\n", + " 0.7143, 0.6645, 0.1019]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2428, -0.2908, -0.0680, -0.1177, 0.0889, 0.2059, 0.2132, 0.3189,\n", + " 0.2215, 0.2764, 0.2710, -0.1583, -0.1916, -0.2847, -0.2232, -0.2656,\n", + " -0.2312, -0.0659, -0.0328, -0.1000, -0.0356, -0.0510, -0.0573, -0.0278,\n", + " 0.0532, 0.0532, -0.0861, -0.1184, -0.2114, -0.2439, -0.2751, -0.2568,\n", + " -0.3313, -0.3466, -0.2379, -0.1569, -0.0668, -0.0072, 0.0849, 0.3031,\n", + " 0.3234, 0.3514, 0.2604]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002632199029903859\n", + "Grad encoder.fc1.bias: 0.00025429780362173915\n", + "Grad encoder.encoder.0.weight: 4.916590842185542e-05\n", + "Grad encoder.encoder.0.bias: 0.0002142458106391132\n", + "Grad encoder.encoder.2.weight: 3.2163268770091236e-05\n", + "Grad encoder.encoder.2.bias: 0.0002179842267651111\n", + "Grad encoder.encoder.4.weight: 9.864561434369534e-05\n", + "Grad encoder.encoder.4.bias: 0.0005402811802923679\n", + "Grad decoder.fc1.0.weight: 3.918810034519993e-05\n", + "Grad decoder.fc1.0.bias: 0.00023607163166161627\n", + "Grad decoder.fc1.2.weight: 4.625921428669244e-05\n", + "Grad decoder.fc1.2.bias: 0.0003207624249625951\n", + "Grad decoder.fc1.4.weight: 5.693317871191539e-05\n", + "Grad decoder.fc1.4.bias: 0.0005097297835163772\n", + "Grad decoder.fc2.weight: 0.00010854954598471522\n", + "Grad decoder.fc2.bias: 0.001977448118850589\n", + "Grad _memory_unit.weight_ih_l0: 5.668635367328534e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.7474139895057306e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.655846042733174e-06\n", + "Grad _memory_unit.weight_ih_l1: 3.526209638948785e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.179427898838185e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.7528203645488247e-05\n", + "Data X Sample: tensor([[1.5361, 1.8541, 2.0120, 2.0881, 2.2333, 2.3263, 2.3017, 2.3708, 2.3800,\n", + " 2.4201, 2.4395, 2.4558, 2.4301, 2.3966, 2.3075, 2.3672, 2.3051, 2.4566,\n", + " 2.4718, 2.3972, 2.5493, 2.5382, 2.5279, 2.6054, 2.5281, 2.6537, 2.5228,\n", + " 2.6348, 2.3799, 2.4072, 2.4007, 2.3654, 2.1230, 1.3685, 1.8849, 1.7050,\n", + " 1.5810, 1.4523, 1.5719, 1.5661, 1.2791, 0.7528, 0.7740, 1.3720, 2.0455,\n", + " 2.0871, 1.4006, 2.0330]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5950, 0.6015, 0.6313, 0.1350, -0.5648, -2.0459, -0.7633, -0.8639,\n", + " -0.4384, -0.7138, -0.6120, 0.5646, 1.2474, 0.5719, 0.5516, 0.1929,\n", + " 0.6144, 0.3125, -0.8901, -0.7259, 0.3538, 0.4771, 0.3580, 0.0092,\n", + " 0.2960, -0.1342, 0.5217, -0.3707, 0.3681, -0.2848, -0.1340, 1.1249,\n", + " 0.7179, 0.1961, 0.4283, 0.0292, 0.8892, 0.5129, -0.3712, -0.5820,\n", + " -0.5049, -0.5356, -0.5486]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5603, 0.5240, 0.2196, 0.2917, 0.2255, -0.0664, -0.4165, -0.5054,\n", + " -0.2415, -0.3597, -0.3693, 0.2499, 0.2285, 0.3510, 0.2736, 0.4048,\n", + " 0.3989, 0.1673, 0.0964, 0.1205, 0.1017, 0.1541, 0.0669, -0.0174,\n", + " 0.0223, 0.0768, -0.1322, -0.0742, 0.1618, 0.3742, 0.2725, 0.2342,\n", + " 0.4376, 0.3304, 0.2315, 0.2766, -0.0562, -0.0490, 0.0660, -0.4145,\n", + " -0.4416, -0.4185, -0.4562]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0036806948482990265\n", + "Grad encoder.fc1.bias: 0.002263239584863186\n", + "Grad encoder.encoder.0.weight: 0.0005371866282075644\n", + "Grad encoder.encoder.0.bias: 0.002539487089961767\n", + "Grad encoder.encoder.2.weight: 0.00029198970878496766\n", + "Grad encoder.encoder.2.bias: 0.0027286363765597343\n", + "Grad encoder.encoder.4.weight: 0.0008021068060770631\n", + "Grad encoder.encoder.4.bias: 0.008066745474934578\n", + "Grad decoder.fc1.0.weight: 0.0002611309173516929\n", + "Grad decoder.fc1.0.bias: 0.0019721807911992073\n", + "Grad decoder.fc1.2.weight: 0.000122464494779706\n", + "Grad decoder.fc1.2.bias: 0.002203375333920121\n", + "Grad decoder.fc1.4.weight: 8.843095565680414e-05\n", + "Grad decoder.fc1.4.bias: 0.0011614033719524741\n", + "Grad decoder.fc2.weight: 0.00016043473442550749\n", + "Grad decoder.fc2.bias: 0.002087602624669671\n", + "Grad _memory_unit.weight_ih_l0: 7.758879655739293e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0002436912909615785\n", + "Grad _memory_unit.bias_hh_l0: 0.0001433806464774534\n", + "Grad _memory_unit.weight_ih_l1: 4.591496690409258e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0005540044512599707\n", + "Grad _memory_unit.bias_hh_l1: 0.00029025209369137883\n", + "Data X Sample: tensor([[1.9572, 1.6881, 1.8933, 2.0029, 2.0216, 1.7856, 3.3586, 4.0530, 4.2400,\n", + " 4.3995, 4.2414, 4.3176, 4.1522, 4.0352, 3.8459, 3.6828, 3.5520, 3.6347,\n", + " 3.5911, 3.4684, 3.4547, 3.4032, 2.9978, 2.9108, 2.8434, 2.8705, 2.8531,\n", + " 2.8958, 2.8517, 3.0328, 2.9606, 3.1530, 3.4255, 2.5105, 4.2993, 4.7161,\n", + " 4.9477, 5.5390, 6.0849, 5.8927, 1.2647, 0.6910, 0.7154, 1.2544, 1.7284,\n", + " 1.9842, 1.2782, 1.8844]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4698, -0.3229, 0.2417, 0.1876, 1.1013, -0.0050, 0.4786, 0.1352,\n", + " -0.3949, 0.3323, -0.0175, 0.1417, 0.6495, -0.0852, 0.3430, -0.0402,\n", + " -0.6480, 0.2211, 0.5302, -0.5757, -0.6533, 1.5384, 0.3729, -1.0765,\n", + " -0.4056, 0.0773, -0.7227, -1.2126, -2.0019, 0.3579, 0.1535, -1.0162,\n", + " -0.0035, -0.0260, 0.0366, 0.5377, 0.0637, -0.0597, 1.1574, 0.0157,\n", + " 0.1974, -0.0055, 0.8110]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2352, -0.2788, -0.0644, -0.1343, 0.0480, 0.1845, 0.1942, 0.3027,\n", + " 0.1915, 0.2484, 0.2544, -0.1506, -0.1743, -0.2623, -0.2056, -0.2483,\n", + " -0.2187, -0.0649, -0.0389, -0.1011, -0.0340, -0.0489, -0.0513, -0.0234,\n", + " 0.0437, 0.0495, -0.0685, -0.0957, -0.1877, -0.2086, -0.2521, -0.2348,\n", + " -0.2964, -0.3223, -0.2115, -0.1524, -0.0591, -0.0127, 0.0724, 0.2953,\n", + " 0.3100, 0.3309, 0.2376]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000287592236418277\n", + "Grad encoder.fc1.bias: 0.00017659805598668754\n", + "Grad encoder.encoder.0.weight: 4.652875941246748e-05\n", + "Grad encoder.encoder.0.bias: 0.00017409143038094044\n", + "Grad encoder.encoder.2.weight: 3.316278161946684e-05\n", + "Grad encoder.encoder.2.bias: 0.00017392676090821624\n", + "Grad encoder.encoder.4.weight: 0.00012514335685409606\n", + "Grad encoder.encoder.4.bias: 0.0005716209416277707\n", + "Grad decoder.fc1.0.weight: 6.236846093088388e-05\n", + "Grad decoder.fc1.0.bias: 0.0002475180954206735\n", + "Grad decoder.fc1.2.weight: 8.411513408645988e-05\n", + "Grad decoder.fc1.2.bias: 0.0005744604277424514\n", + "Grad decoder.fc1.4.weight: 7.491136784665287e-05\n", + "Grad decoder.fc1.4.bias: 0.000717921881005168\n", + "Grad decoder.fc2.weight: 0.00011360190546838567\n", + "Grad decoder.fc2.bias: 0.002102634869515896\n", + "Grad _memory_unit.weight_ih_l0: 1.0494257367099635e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.730173607938923e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.2039650755468756e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.161318651720649e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.226881280075759e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.946534707210958e-05\n", + "Data X Sample: tensor([[1.8724, 2.4047, 2.7002, 2.8534, 3.1349, 3.2353, 3.3540, 3.2296, 3.3295,\n", + " 3.3711, 3.2643, 3.2815, 3.0115, 2.9528, 2.7564, 2.5546, 2.6306, 2.8590,\n", + " 2.8683, 2.8063, 2.7652, 2.7970, 2.6146, 2.6206, 2.4380, 2.4865, 2.3576,\n", + " 2.4675, 2.0364, 2.0764, 1.9877, 1.9095, 2.0438, 1.4257, 2.2134, 2.3009,\n", + " 2.6685, 3.0981, 3.5178, 3.4953, 1.7420, 0.9181, 0.9802, 1.8141, 2.4221,\n", + " 2.7962, 1.9717, 2.6273]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.0197, -0.8555, -0.2108, -0.6351, -1.0448, -0.1305, 0.2505, 0.7677,\n", + " 1.3559, 0.6833, -0.7245, -1.5872, -0.3788, 0.4734, -0.0231, -0.3085,\n", + " -1.4615, 1.9216, -1.6196, 0.0270, 0.4246, 3.1654, 0.4441, 1.0417,\n", + " -1.0486, 0.9749, 0.0514, -0.3398, 0.3892, 0.5445, -0.5212, -0.4578,\n", + " 3.6855, 0.5134, -0.2118, 0.0705, 1.0532, -0.1270, 0.3426, -0.6484,\n", + " 1.1346, 0.2672, -0.2758]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1990, -0.2522, -0.0657, -0.1744, -0.0277, 0.1145, 0.1357, 0.2498,\n", + " 0.1428, 0.1974, 0.2062, -0.1225, -0.1370, -0.2012, -0.1621, -0.2181,\n", + " -0.1992, -0.0700, -0.0473, -0.0908, -0.0270, -0.0445, -0.0455, -0.0299,\n", + " 0.0198, 0.0470, -0.0081, -0.0332, -0.1325, -0.1557, -0.1848, -0.1779,\n", + " -0.2270, -0.2573, -0.1654, -0.1220, -0.0483, -0.0159, 0.0418, 0.2537,\n", + " 0.2858, 0.2772, 0.1943]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 5.8209941926179454e-05\n", + "Grad encoder.fc1.bias: 0.0008942778804339468\n", + "Grad encoder.encoder.0.weight: 2.5647119400673546e-05\n", + "Grad encoder.encoder.0.bias: 0.0007744230097159743\n", + "Grad encoder.encoder.2.weight: 2.1413354261312634e-05\n", + "Grad encoder.encoder.2.bias: 0.000626254768576473\n", + "Grad encoder.encoder.4.weight: 7.96591630205512e-05\n", + "Grad encoder.encoder.4.bias: 0.0012297318316996098\n", + "Grad decoder.fc1.0.weight: 5.049287574365735e-05\n", + "Grad decoder.fc1.0.bias: 0.0004619915271177888\n", + "Grad decoder.fc1.2.weight: 6.688790017506108e-05\n", + "Grad decoder.fc1.2.bias: 0.00042404295527376235\n", + "Grad decoder.fc1.4.weight: 6.0821810620836914e-05\n", + "Grad decoder.fc1.4.bias: 0.0004574774648062885\n", + "Grad decoder.fc2.weight: 0.00011129581980640069\n", + "Grad decoder.fc2.bias: 0.001428478630259633\n", + "Grad _memory_unit.weight_ih_l0: 1.0062773071695119e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.866502083837986e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.0626084733521566e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.401292244438082e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001002981371129863\n", + "Grad _memory_unit.bias_hh_l1: 5.269212124403566e-05\n", + "Data X Sample: tensor([[2.7465, 3.2742, 3.5642, 3.9095, 3.9271, 4.1797, 4.1259, 4.0842, 4.2644,\n", + " 4.2921, 4.4127, 4.2358, 4.0280, 3.9234, 3.8711, 3.6678, 3.6636, 3.7875,\n", + " 3.8926, 3.8515, 3.7442, 3.7997, 3.3978, 3.1150, 2.9372, 2.9436, 2.9916,\n", + " 2.9937, 3.0112, 3.1343, 3.2406, 3.3934, 3.7005, 2.5654, 4.1890, 4.4437,\n", + " 4.6232, 5.1229, 5.6729, 5.4813, 2.2097, 1.2287, 1.1883, 2.1614, 3.0207,\n", + " 3.5167, 2.3048, 3.6281]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3993, -0.5065, -0.7592, -0.5912, -0.2960, 0.7726, 0.4213, 0.7750,\n", + " 0.3698, 0.7335, 0.6824, 0.6034, 0.7929, 0.3580, 0.5742, 0.1414,\n", + " -0.4393, 0.8188, -0.4571, -1.1657, 0.1030, -0.0615, -1.2451, -1.1246,\n", + " -0.8947, 1.9335, 0.1029, 0.2346, 0.2493, -0.1140, -0.4433, -0.5910,\n", + " 0.0991, 0.1504, -0.0544, 0.3008, -0.2115, -0.7172, -0.0423, -0.3238,\n", + " 0.4195, 0.0976, -0.8287]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2357, -0.2861, -0.0652, -0.1244, 0.0628, 0.2048, 0.2039, 0.3070,\n", + " 0.2074, 0.2582, 0.2610, -0.1524, -0.1759, -0.2661, -0.2079, -0.2605,\n", + " -0.2194, -0.0644, -0.0325, -0.1017, -0.0311, -0.0495, -0.0523, -0.0266,\n", + " 0.0415, 0.0462, -0.0812, -0.1051, -0.2059, -0.2253, -0.2654, -0.2424,\n", + " -0.3114, -0.3266, -0.2246, -0.1542, -0.0619, -0.0103, 0.0767, 0.2954,\n", + " 0.3151, 0.3400, 0.2448]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0031983181834220886\n", + "Grad encoder.fc1.bias: 0.0014540361007675529\n", + "Grad encoder.encoder.0.weight: 0.00044531948515214026\n", + "Grad encoder.encoder.0.bias: 0.0014814003370702267\n", + "Grad encoder.encoder.2.weight: 0.0003307466977275908\n", + "Grad encoder.encoder.2.bias: 0.002176754642277956\n", + "Grad encoder.encoder.4.weight: 0.000809306395240128\n", + "Grad encoder.encoder.4.bias: 0.0062612686306238174\n", + "Grad decoder.fc1.0.weight: 0.0002904857392422855\n", + "Grad decoder.fc1.0.bias: 0.0016556927002966404\n", + "Grad decoder.fc1.2.weight: 0.00016023599891923368\n", + "Grad decoder.fc1.2.bias: 0.002487070858478546\n", + "Grad decoder.fc1.4.weight: 0.00012451618385966867\n", + "Grad decoder.fc1.4.bias: 0.0012515141861513257\n", + "Grad decoder.fc2.weight: 0.00014470388123299927\n", + "Grad decoder.fc2.bias: 0.0021611812990158796\n", + "Grad _memory_unit.weight_ih_l0: 0.000129157371702604\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00028461834881454706\n", + "Grad _memory_unit.bias_hh_l0: 0.0001916495821205899\n", + "Grad _memory_unit.weight_ih_l1: 5.747625255025923e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0006687889690510929\n", + "Grad _memory_unit.bias_hh_l1: 0.0003582689678296447\n", + "Data X Sample: tensor([[1.4523, 1.8512, 2.0451, 2.1997, 2.3546, 2.3513, 2.4497, 2.4474, 2.4264,\n", + " 2.4501, 2.3856, 2.2201, 2.1150, 2.0421, 1.9066, 1.8886, 1.9293, 1.9363,\n", + " 1.8647, 1.7611, 1.7249, 1.7223, 1.6603, 1.5460, 1.4602, 1.5097, 1.3879,\n", + " 1.3908, 1.1101, 1.1168, 1.0709, 1.0805, 0.9812, 0.6865, 1.0466, 1.1626,\n", + " 1.2998, 1.5292, 1.7177, 1.6540, 1.2791, 0.7667, 0.7437, 1.4180, 1.9742,\n", + " 2.1844, 1.5094, 2.1346]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.9306, -1.2608, -0.8565, -1.0194, -0.9928, -0.1845, 1.1395, 2.5868,\n", + " 1.1686, 3.2003, 2.9296, 0.1199, 0.6062, -2.2931, -0.6006, -2.9321,\n", + " -1.6413, 0.1430, 0.0164, -0.4752, 0.1249, 0.7679, -0.5391, 0.0336,\n", + " -0.3141, -0.0398, 0.9116, 0.8681, -0.6719, -1.2158, -2.4949, -2.1814,\n", + " -0.2380, -3.0155, 1.4950, -1.9260, -0.4451, 0.6922, 0.0000, 6.9076,\n", + " 6.4083, 4.4016, 3.0729]], device='cuda:0')\n", + "Prediction Sample: tensor([[-1.5191, -1.3138, -0.5631, -1.1062, -0.4272, 0.0977, 1.1854, 1.8571,\n", + " 1.3972, 2.3029, 3.0364, -0.7591, -0.7703, -1.5951, -1.2481, -1.9844,\n", + " -1.5980, -0.6412, -0.2671, -0.5545, -0.5554, -0.1941, -0.2566, -0.1560,\n", + " -0.2880, -0.1923, 0.7244, 0.3564, -0.4229, -0.9638, -1.1541, -1.1104,\n", + " -1.1670, -2.0664, -0.9243, -0.9723, -0.2823, -0.1677, -0.2261, 4.2712,\n", + " 4.2754, 3.2099, 2.6850]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00213807076215744\n", + "Grad encoder.fc1.bias: 0.0016493693692609668\n", + "Grad encoder.encoder.0.weight: 0.00035617948742583394\n", + "Grad encoder.encoder.0.bias: 0.0018080414738506079\n", + "Grad encoder.encoder.2.weight: 0.0002229733654530719\n", + "Grad encoder.encoder.2.bias: 0.0016305745812132955\n", + "Grad encoder.encoder.4.weight: 0.0005938139511272311\n", + "Grad encoder.encoder.4.bias: 0.004244969226419926\n", + "Grad decoder.fc1.0.weight: 0.00019518629414960742\n", + "Grad decoder.fc1.0.bias: 0.001134779886342585\n", + "Grad decoder.fc1.2.weight: 0.00014704203931614757\n", + "Grad decoder.fc1.2.bias: 0.0014628312783315778\n", + "Grad decoder.fc1.4.weight: 0.00011472775076981634\n", + "Grad decoder.fc1.4.bias: 0.0008517998503521085\n", + "Grad decoder.fc2.weight: 0.00020132274948991835\n", + "Grad decoder.fc2.bias: 0.0022842304315418005\n", + "Grad _memory_unit.weight_ih_l0: 4.245446325512603e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.607455725315958e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.4232700020074844e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.016052712860983e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00022699005785398185\n", + "Grad _memory_unit.bias_hh_l1: 0.00011687230289680883\n", + "Data X Sample: tensor([[1.3101, 1.5293, 1.5958, 1.7449, 1.9379, 2.0125, 2.0583, 1.9562, 3.4247,\n", + " 4.2352, 4.3905, 4.3020, 4.0879, 3.9397, 3.8207, 3.5953, 3.5300, 3.4470,\n", + " 3.5374, 3.5874, 3.4350, 3.3083, 2.9158, 2.7752, 2.8321, 2.9671, 2.9916,\n", + " 3.0181, 3.0806, 3.1736, 3.2475, 3.4182, 3.8985, 2.8217, 4.6572, 4.8888,\n", + " 5.0991, 5.5364, 6.0278, 5.9268, 1.0882, 0.5676, 0.5841, 1.0678, 1.5262,\n", + " 1.7383, 1.1762, 1.8062]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6595, 0.1802, 1.0086, 1.1491, 0.7036, -0.0749, -0.6334, -0.4030,\n", + " -0.3434, -0.2758, -0.9178, 0.6765, -0.1927, 0.0881, -0.2322, 0.4614,\n", + " -0.1906, 1.3499, 0.3512, -0.1705, -0.1322, -0.6754, -0.0342, -0.3696,\n", + " 0.1808, 0.5363, -0.2184, -1.5711, -0.3344, 0.2628, -0.3712, 0.8967,\n", + " -0.1877, -0.1569, -0.2069, 0.9832, -0.2609, 0.6282, -0.2975, 0.1760,\n", + " -0.3904, -0.2412, 0.0543]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2970, -0.2655, -0.0850, -0.0761, 0.0944, 0.2360, 0.2485, 0.3801,\n", + " 0.2264, 0.2294, 0.2940, -0.1491, -0.2378, -0.2334, -0.2468, -0.3362,\n", + " -0.1939, -0.0101, -0.0279, -0.1078, -0.0168, -0.0979, -0.0554, -0.0308,\n", + " 0.0117, -0.0019, -0.0749, -0.1044, -0.1895, -0.2342, -0.3379, -0.2283,\n", + " -0.2909, -0.3206, -0.2420, -0.1475, -0.0853, 0.0254, 0.1383, 0.3059,\n", + " 0.3679, 0.3312, 0.2186]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00039841089164838195\n", + "Grad encoder.fc1.bias: 0.0005912885535508394\n", + "Grad encoder.encoder.0.weight: 9.375617082696408e-05\n", + "Grad encoder.encoder.0.bias: 0.000518709362950176\n", + "Grad encoder.encoder.2.weight: 5.828808934893459e-05\n", + "Grad encoder.encoder.2.bias: 0.00044713771785609424\n", + "Grad encoder.encoder.4.weight: 0.00015229982091113925\n", + "Grad encoder.encoder.4.bias: 0.0006170425331220031\n", + "Grad decoder.fc1.0.weight: 4.625003202818334e-05\n", + "Grad decoder.fc1.0.bias: 0.0002455722715239972\n", + "Grad decoder.fc1.2.weight: 5.868743755854666e-05\n", + "Grad decoder.fc1.2.bias: 0.0002927119785454124\n", + "Grad decoder.fc1.4.weight: 6.296491483226418e-05\n", + "Grad decoder.fc1.4.bias: 0.000361524464096874\n", + "Grad decoder.fc2.weight: 0.00010883950017159805\n", + "Grad decoder.fc2.bias: 0.0018802749691531062\n", + "Grad _memory_unit.weight_ih_l0: 7.617833944095764e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.6489348126924597e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.729926205181982e-06\n", + "Grad _memory_unit.weight_ih_l1: 3.0114933906588703e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.615516809280962e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.4203876819228753e-05\n", + "Data X Sample: tensor([[2.8346, 3.4315, 3.7971, 3.8855, 4.0227, 4.3019, 4.1921, 4.3313, 4.3645,\n", + " 4.2605, 4.2763, 4.2748, 3.9902, 3.9152, 3.6063, 3.5461, 3.4687, 3.5573,\n", + " 3.4403, 3.5056, 3.4596, 3.4032, 2.8074, 2.7504, 2.6801, 2.8208, 2.7785,\n", + " 2.8509, 2.9210, 2.9836, 3.0201, 3.1226, 3.3947, 2.4144, 4.1645, 4.6796,\n", + " 4.9988, 5.4701, 6.2370, 5.8842, 2.2527, 1.3363, 1.2672, 2.3020, 3.2585,\n", + " 3.4309, 2.3796, 3.5734]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3954, -0.4229, -0.3407, -0.1483, 0.3090, 0.2469, 0.4037, 0.7006,\n", + " 0.0495, 0.6104, 0.4752, -0.1619, 0.8562, -1.5575, -0.3546, -0.4898,\n", + " -0.1384, 1.5013, -0.6425, 0.8598, 1.0045, -1.9797, -0.7573, -0.4838,\n", + " 0.0538, -1.2010, 0.5022, 0.2229, 0.1780, -0.7813, -0.3280, -0.1604,\n", + " 0.0921, 0.3065, 0.6728, 0.4961, -0.4714, 0.0000, 0.0000, 0.7754,\n", + " -0.5199, -0.4584, -0.1993]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2586, -0.2248, -0.0753, -0.1093, 0.0183, 0.1683, 0.1871, 0.3184,\n", + " 0.1635, 0.1716, 0.2334, -0.1202, -0.1918, -0.1724, -0.2018, -0.2832,\n", + " -0.1717, -0.0128, -0.0354, -0.1038, -0.0150, -0.0956, -0.0472, -0.0325,\n", + " -0.0112, -0.0087, -0.0275, -0.0499, -0.1258, -0.1612, -0.2660, -0.1636,\n", + " -0.2098, -0.2554, -0.1801, -0.1231, -0.0640, 0.0221, 0.0980, 0.2666,\n", + " 0.3269, 0.2633, 0.1665]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0008211235981434584\n", + "Grad encoder.fc1.bias: 0.0017041945829987526\n", + "Grad encoder.encoder.0.weight: 0.0001521966332802549\n", + "Grad encoder.encoder.0.bias: 0.0014926529256626964\n", + "Grad encoder.encoder.2.weight: 0.00011708191595971584\n", + "Grad encoder.encoder.2.bias: 0.001735167228616774\n", + "Grad encoder.encoder.4.weight: 0.000363707251381129\n", + "Grad encoder.encoder.4.bias: 0.003895557951182127\n", + "Grad decoder.fc1.0.weight: 0.00015820309636183083\n", + "Grad decoder.fc1.0.bias: 0.0011413227766752243\n", + "Grad decoder.fc1.2.weight: 0.00015743602125439793\n", + "Grad decoder.fc1.2.bias: 0.001473781419917941\n", + "Grad decoder.fc1.4.weight: 0.00013213843340054154\n", + "Grad decoder.fc1.4.bias: 0.0008528142934665084\n", + "Grad decoder.fc2.weight: 0.00020443290122784674\n", + "Grad decoder.fc2.bias: 0.002225839765742421\n", + "Grad _memory_unit.weight_ih_l0: 6.562087219208479e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00015232322039082646\n", + "Grad _memory_unit.bias_hh_l0: 0.00010390349052613601\n", + "Grad _memory_unit.weight_ih_l1: 2.8597329219337553e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00033296667970716953\n", + "Grad _memory_unit.bias_hh_l1: 0.00018427727627567947\n", + "Data X Sample: tensor([[1.5435, 1.8760, 2.2074, 2.3549, 2.5304, 2.6121, 2.6422, 2.7086, 2.7022,\n", + " 2.6239, 2.6045, 2.6233, 2.3857, 2.2575, 2.2067, 2.1129, 2.2139, 2.1955,\n", + " 2.1352, 2.0010, 1.9850, 1.9274, 1.9134, 1.8171, 1.7267, 1.7500, 1.6517,\n", + " 1.7701, 1.2836, 1.3133, 1.2738, 1.1993, 1.1286, 0.7987, 1.2648, 1.3596,\n", + " 1.5417, 1.8022, 2.0790, 2.0683, 1.4175, 0.8364, 0.8266, 1.4524, 2.0098,\n", + " 2.3044, 1.5230, 2.1737]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.3018, -1.4602, -1.0783, -0.4006, -0.6223, 0.1320, 0.5756, 1.6447,\n", + " 1.1600, 2.6103, 2.8479, 0.3325, -1.5630, -0.8373, 0.1939, -1.7224,\n", + " -0.7036, -0.0755, -0.1978, -0.6519, -0.4045, -0.5409, -0.1762, -0.6839,\n", + " 0.1120, -0.1833, 1.0729, 0.6425, -0.5930, -1.0201, -1.3201, -1.0965,\n", + " -2.0334, -0.7791, 0.1041, -1.5591, -0.2169, -0.0606, -1.0094, 5.0945,\n", + " 3.3295, 2.5714, 1.5586]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.9369, -0.8816, -0.3796, -0.7449, -0.3203, 0.0761, 0.7006, 1.1511,\n", + " 0.8534, 1.3868, 1.7517, -0.4472, -0.4795, -0.9364, -0.7413, -1.2452,\n", + " -1.0010, -0.4213, -0.1500, -0.3396, -0.3007, -0.1186, -0.1473, -0.1158,\n", + " -0.1892, -0.0813, 0.4335, 0.2184, -0.3009, -0.5879, -0.7164, -0.6727,\n", + " -0.7149, -1.2317, -0.6167, -0.6125, -0.1986, -0.0946, -0.1254, 2.4467,\n", + " 2.4818, 1.9172, 1.5814]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006929960800334811\n", + "Grad encoder.fc1.bias: 0.00036033440846949816\n", + "Grad encoder.encoder.0.weight: 0.00013927381951361895\n", + "Grad encoder.encoder.0.bias: 0.0005557740805670619\n", + "Grad encoder.encoder.2.weight: 0.00011200633161934093\n", + "Grad encoder.encoder.2.bias: 0.0009159179753623903\n", + "Grad encoder.encoder.4.weight: 0.00028947045211680233\n", + "Grad encoder.encoder.4.bias: 0.0023826323449611664\n", + "Grad decoder.fc1.0.weight: 0.0001167872833320871\n", + "Grad decoder.fc1.0.bias: 0.0006435142713598907\n", + "Grad decoder.fc1.2.weight: 9.109125676332042e-05\n", + "Grad decoder.fc1.2.bias: 0.0010561171220615506\n", + "Grad decoder.fc1.4.weight: 7.863912469474599e-05\n", + "Grad decoder.fc1.4.bias: 0.0008556130342185497\n", + "Grad decoder.fc2.weight: 0.0001365435600746423\n", + "Grad decoder.fc2.bias: 0.002570120384916663\n", + "Grad _memory_unit.weight_ih_l0: 5.0020218623103574e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00011935608927160501\n", + "Grad _memory_unit.bias_hh_l0: 7.90181802585721e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.1833689970662817e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002522351569496095\n", + "Grad _memory_unit.bias_hh_l1: 0.00013559640501625836\n", + "Data X Sample: tensor([[1.5181, 1.7376, 1.9489, 2.0466, 2.1616, 2.2335, 2.4081, 2.5369, 2.4971,\n", + " 2.4707, 2.5156, 2.5687, 2.4634, 2.4538, 2.4362, 2.3672, 2.2815, 2.3773,\n", + " 2.4016, 2.3953, 2.4953, 2.4923, 2.5182, 2.6092, 2.5787, 2.5988, 2.6080,\n", + " 2.5246, 2.2376, 2.3483, 2.3132, 2.3129, 2.2330, 1.4349, 1.9168, 1.7658,\n", + " 1.6636, 1.5053, 1.5783, 1.5122, 1.2838, 0.6791, 0.7518, 1.2486, 1.7799,\n", + " 2.2072, 1.3258, 1.9704]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.8164, 0.5914, 1.1512, 1.6260, -0.3150, -0.1107, -0.7419, -0.9224,\n", + " -1.2392, -0.6661, -0.6466, 0.3865, 0.1645, 0.4439, 0.0985, 0.9668,\n", + " 0.7671, 0.3910, 0.6932, 0.7549, 0.5283, 0.1069, 0.1818, 0.7342,\n", + " 0.7642, 0.2843, -0.1527, -0.1636, 0.6914, -0.0797, 0.0162, 0.2143,\n", + " 1.4629, 0.4028, 0.1979, 0.8095, -0.5893, 0.0000, -0.3712, -0.6340,\n", + " -0.5212, -0.6042, -0.3628]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3732, 0.3790, 0.1476, 0.1486, 0.1350, -0.0454, -0.3378, -0.3687,\n", + " -0.2281, -0.3031, -0.3306, 0.1812, 0.2061, 0.3115, 0.2085, 0.3337,\n", + " 0.3182, 0.0843, 0.1035, 0.0858, 0.0861, 0.1187, 0.0542, -0.0519,\n", + " -0.0223, 0.0194, -0.0857, -0.0148, 0.1218, 0.3052, 0.1947, 0.1724,\n", + " 0.3326, 0.2710, 0.1490, 0.2074, -0.0436, 0.0024, 0.0281, -0.2970,\n", + " -0.3265, -0.2888, -0.3875]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 2.928520189016126e-05\n", + "Grad encoder.fc1.bias: 0.000597767997533083\n", + "Grad encoder.encoder.0.weight: 1.5460456779692322e-05\n", + "Grad encoder.encoder.0.bias: 0.0005060010589659214\n", + "Grad encoder.encoder.2.weight: 2.2584499674849212e-05\n", + "Grad encoder.encoder.2.bias: 0.00035780551843345165\n", + "Grad encoder.encoder.4.weight: 7.972385355969891e-05\n", + "Grad encoder.encoder.4.bias: 0.0003780400729738176\n", + "Grad decoder.fc1.0.weight: 4.068002090207301e-05\n", + "Grad decoder.fc1.0.bias: 0.0002089190820697695\n", + "Grad decoder.fc1.2.weight: 5.3224150178721175e-05\n", + "Grad decoder.fc1.2.bias: 0.0002218956215074286\n", + "Grad decoder.fc1.4.weight: 4.959500802215189e-05\n", + "Grad decoder.fc1.4.bias: 0.0002944737789221108\n", + "Grad decoder.fc2.weight: 0.00011974720109719783\n", + "Grad decoder.fc2.bias: 0.001436936785466969\n", + "Grad _memory_unit.weight_ih_l0: 9.178961590805557e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.8486272640293464e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.5188818906608503e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.989890163007658e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.683997394749895e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.4137349100783467e-05\n", + "Data X Sample: tensor([[1.3664, 1.5410, 1.7626, 1.8039, 1.9192, 1.9830, 1.9921, 3.7166, 4.2766,\n", + " 4.2652, 4.4254, 4.4520, 4.2721, 3.9970, 3.9266, 3.7020, 3.6400, 3.7101,\n", + " 3.6716, 3.5539, 3.6779, 3.5532, 3.0725, 2.9756, 2.8528, 2.7973, 2.8717,\n", + " 2.9284, 2.9210, 3.0229, 3.1286, 3.4072, 3.7621, 2.8560, 4.6768, 4.9277,\n", + " 5.0578, 5.4092, 5.8250, 5.6516, 0.9784, 0.5974, 0.5922, 1.0678, 1.5222,\n", + " 1.8127, 1.2170, 1.5951]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2542, -0.0185, -0.5886, -0.0616, -0.0464, 0.2455, 0.4132, -0.1434,\n", + " 0.6619, 0.3079, -0.0965, 0.5133, -0.1971, 0.3549, -0.7055, 0.8379,\n", + " -0.4261, -2.7726, -0.6372, -0.1633, 0.0960, -0.8186, -0.8572, -0.6112,\n", + " 1.5213, 1.5891, 2.7209, -0.4328, -0.1496, -0.1568, 0.3911, -1.0408,\n", + " -0.1721, 0.1065, -0.6724, 0.1126, 0.2309, -0.0140, 0.7332, -0.2085,\n", + " -0.2106, 0.4040, 0.1148]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1853, -0.0874, -0.0625, -0.0985, -0.0651, 0.0484, 0.0721, 0.2118,\n", + " 0.0726, 0.0313, 0.0895, -0.0401, -0.1470, 0.0136, -0.1313, -0.2573,\n", + " -0.1092, 0.0370, -0.0060, -0.0822, 0.0257, -0.1568, -0.0458, -0.0712,\n", + " -0.1046, -0.0961, 0.0888, 0.0757, 0.0345, -0.0480, -0.1678, 0.0230,\n", + " -0.0329, -0.0758, -0.0731, -0.0258, -0.0588, 0.0738, 0.0792, 0.1319,\n", + " 0.2695, 0.0628, 0.0146]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005772773292846978\n", + "Grad encoder.fc1.bias: 0.001012192340567708\n", + "Grad encoder.encoder.0.weight: 0.0001500692596891895\n", + "Grad encoder.encoder.0.bias: 0.0009809019975364208\n", + "Grad encoder.encoder.2.weight: 0.0001051644649123773\n", + "Grad encoder.encoder.2.bias: 0.000742024218197912\n", + "Grad encoder.encoder.4.weight: 0.00031848213984631\n", + "Grad encoder.encoder.4.bias: 0.0010369193041697145\n", + "Grad decoder.fc1.0.weight: 9.598437463864684e-05\n", + "Grad decoder.fc1.0.bias: 0.00041437684558331966\n", + "Grad decoder.fc1.2.weight: 9.516316640656441e-05\n", + "Grad decoder.fc1.2.bias: 0.0004205127770546824\n", + "Grad decoder.fc1.4.weight: 7.122703391360119e-05\n", + "Grad decoder.fc1.4.bias: 0.00042895073420368135\n", + "Grad decoder.fc2.weight: 0.00012841667921748012\n", + "Grad decoder.fc2.bias: 0.0017215152038261294\n", + "Grad _memory_unit.weight_ih_l0: 2.2994337996351533e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.731622902909294e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.779402711894363e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.19045965524856e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.110316412057728e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.5262589992489666e-05\n", + "Data X Sample: tensor([[1.4003, 1.6823, 1.7776, 1.9438, 2.0336, 2.0552, 2.1693, 2.1521, 3.1269,\n", + " 4.0188, 4.1652, 4.3137, 3.9458, 4.0433, 3.8081, 3.8661, 3.7407, 3.5689,\n", + " 3.4155, 3.5335, 3.4694, 3.3404, 2.9592, 2.8840, 2.9147, 2.9514, 3.1142,\n", + " 3.0916, 3.1431, 3.4061, 3.3280, 3.4182, 3.8479, 2.8652, 4.6351, 4.8401,\n", + " 5.2092, 5.5973, 6.1102, 5.9693, 1.1693, 0.6751, 0.6669, 1.1367, 1.7125,\n", + " 1.8699, 1.2170, 1.8532]], device='cuda:0')\n", + "Data Y Sample: tensor([[-5.0663e-01, -4.9831e-01, 2.2180e+00, -6.3908e-01, 1.5478e+00,\n", + " -4.1090e-01, 1.1316e-01, 3.6394e-01, 4.0134e-01, 2.8655e-01,\n", + " 2.5963e-01, -5.6997e-01, -4.3170e-01, -7.9322e-01, 3.5944e-01,\n", + " -4.0615e-01, 3.8478e-01, -1.1108e-01, -2.2670e-01, -5.0084e-01,\n", + " 1.3533e+01, -6.0701e-01, -1.5726e-01, -4.8111e-01, -1.4542e+00,\n", + " -6.4651e-01, 1.0954e+00, -8.0637e-01, -2.3657e-01, -1.6194e-01,\n", + " 5.5677e-01, 8.0133e-01, -4.4046e-01, 1.1984e-02, 4.9734e-02,\n", + " 2.9744e-01, 2.2566e-01, -3.2271e-01, -1.1505e+00, 2.3997e-01,\n", + " 4.9136e-01, 5.0278e-01, 8.6050e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1931, -0.1775, -0.0541, -0.1390, -0.0496, 0.0948, 0.1071, 0.2244,\n", + " 0.1074, 0.1190, 0.1489, -0.0808, -0.1292, -0.1016, -0.1426, -0.2282,\n", + " -0.1562, -0.0226, -0.0277, -0.0933, -0.0013, -0.0974, -0.0414, -0.0417,\n", + " -0.0431, -0.0200, 0.0278, 0.0075, -0.0657, -0.0977, -0.1769, -0.0814,\n", + " -0.1338, -0.1745, -0.1149, -0.0861, -0.0430, 0.0238, 0.0483, 0.2005,\n", + " 0.2695, 0.1751, 0.1125]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004377624427434057\n", + "Grad encoder.fc1.bias: 0.002117069438099861\n", + "Grad encoder.encoder.0.weight: 0.00011087786697316915\n", + "Grad encoder.encoder.0.bias: 0.0015180200571194291\n", + "Grad encoder.encoder.2.weight: 6.972222035983577e-05\n", + "Grad encoder.encoder.2.bias: 0.0010839288588613272\n", + "Grad encoder.encoder.4.weight: 0.00023745978251099586\n", + "Grad encoder.encoder.4.bias: 0.002146368846297264\n", + "Grad decoder.fc1.0.weight: 0.00010818021110026166\n", + "Grad decoder.fc1.0.bias: 0.0006663578096777201\n", + "Grad decoder.fc1.2.weight: 0.00015414094377774745\n", + "Grad decoder.fc1.2.bias: 0.000578083680011332\n", + "Grad decoder.fc1.4.weight: 0.0001386539952363819\n", + "Grad decoder.fc1.4.bias: 0.0005589106003753841\n", + "Grad decoder.fc2.weight: 0.0001465147506678477\n", + "Grad decoder.fc2.bias: 0.0018187203677371144\n", + "Grad _memory_unit.weight_ih_l0: 2.7254880478722043e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.347730909008533e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.5019227400189266e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.382105988857802e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00015880423597991467\n", + "Grad _memory_unit.bias_hh_l1: 8.46042821649462e-05\n", + "Data X Sample: tensor([[1.3218, 1.4186, 1.5402, 1.6771, 1.7723, 1.9756, 2.0337, 2.1238, 2.0016,\n", + " 3.4849, 4.1050, 4.0878, 3.9991, 3.7134, 3.5710, 3.5283, 3.5033, 3.4780,\n", + " 3.3742, 3.3605, 3.4498, 3.2027, 2.8363, 2.7619, 2.7458, 2.9880, 2.9890,\n", + " 2.9447, 2.9800, 3.1736, 3.0971, 3.1723, 3.6829, 2.6501, 4.3851, 4.7039,\n", + " 4.9811, 5.3111, 5.8567, 5.6260, 1.0070, 0.6014, 0.5699, 0.9788, 1.4628,\n", + " 1.6640, 1.0538, 1.5951]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4320, -0.3535, -0.0164, -0.2642, 1.6738, 3.0338, 0.4241, 0.4198,\n", + " 1.0184, 0.5195, 0.5507, -1.2225, -0.2881, -0.2230, -0.8599, -0.6477,\n", + " 0.0325, -0.4372, -0.9915, -1.7240, -1.8101, 0.6481, -0.5105, -0.0699,\n", + " -0.1390, 0.0612, 1.1676, 1.2722, 0.1491, -0.3472, -0.9866, -0.2051,\n", + " 0.1690, -1.1438, -0.4107, -0.3625, 0.0272, -0.1765, -0.0197, 0.8969,\n", + " 0.9292, 1.3259, -0.3031]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1693, -0.2084, -0.0426, -0.1541, -0.0462, 0.1058, 0.1030, 0.2009,\n", + " 0.1187, 0.1586, 0.1519, -0.0904, -0.1024, -0.1397, -0.1307, -0.1982,\n", + " -0.1763, -0.0557, -0.0295, -0.0934, -0.0111, -0.0616, -0.0398, -0.0352,\n", + " -0.0165, 0.0192, -0.0003, -0.0149, -0.1076, -0.1192, -0.1572, -0.1193,\n", + " -0.1755, -0.1990, -0.1296, -0.1032, -0.0307, 0.0021, 0.0183, 0.2071,\n", + " 0.2499, 0.2073, 0.1487]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006029693176969886\n", + "Grad encoder.fc1.bias: 0.0020066110882908106\n", + "Grad encoder.encoder.0.weight: 0.00015673779125791043\n", + "Grad encoder.encoder.0.bias: 0.0013696975074708462\n", + "Grad encoder.encoder.2.weight: 8.687577792443335e-05\n", + "Grad encoder.encoder.2.bias: 0.000930196198169142\n", + "Grad encoder.encoder.4.weight: 0.00026995278312824667\n", + "Grad encoder.encoder.4.bias: 0.001483202795498073\n", + "Grad decoder.fc1.0.weight: 9.826604946283624e-05\n", + "Grad decoder.fc1.0.bias: 0.000493887928314507\n", + "Grad decoder.fc1.2.weight: 0.00011397755588404834\n", + "Grad decoder.fc1.2.bias: 0.0004342423635534942\n", + "Grad decoder.fc1.4.weight: 0.00011293514398857951\n", + "Grad decoder.fc1.4.bias: 0.00041633122600615025\n", + "Grad decoder.fc2.weight: 0.0001168669477920048\n", + "Grad decoder.fc2.bias: 0.0022893142886459827\n", + "Grad _memory_unit.weight_ih_l0: 1.9678551325341687e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.8706217310391366e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.1364365238696337e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.253003448364325e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010142243991140276\n", + "Grad _memory_unit.bias_hh_l1: 5.4493924835696816e-05\n", + "Data X Sample: tensor([[1.6485, 1.8279, 2.0766, 2.1100, 2.1121, 2.2629, 2.3156, 2.3324, 2.3434,\n", + " 2.4343, 2.4458, 2.4363, 2.3125, 2.3775, 2.3353, 2.3426, 2.3460, 2.3077,\n", + " 2.3810, 2.3934, 2.4242, 2.4755, 2.4628, 2.4508, 2.5168, 2.5962, 2.5068,\n", + " 2.6878, 2.2515, 2.3352, 2.2327, 2.1029, 1.8326, 1.1603, 1.6129, 1.5931,\n", + " 1.4965, 1.4470, 1.4578, 1.3420, 1.3029, 0.7627, 0.7478, 1.3720, 1.9068,\n", + " 2.0700, 1.3462, 2.1346]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.1846, 0.5548, -1.0792, 0.0068, 0.0537, -0.5762, 0.1206, 0.3722,\n", + " 0.7060, 0.6329, 0.8595, 1.0835, -0.1352, 0.7942, -0.7578, -0.0225,\n", + " 0.4799, -0.6419, -0.1032, 1.3469, -0.3143, -0.2438, 0.7447, 0.9188,\n", + " -0.0675, 0.1894, -0.6909, 0.4822, -1.2208, 0.5110, -0.4131, -1.9268,\n", + " 0.1067, -0.5755, -0.2908, 1.1277, 0.1343, 0.0217, -1.8131, 0.6890,\n", + " 0.6595, 0.4289, 0.8912]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2549, 0.2538, 0.1403, 0.0661, 0.0674, -0.0262, -0.2326, -0.2263,\n", + " -0.1263, -0.1612, -0.2007, 0.1264, 0.1158, 0.2149, 0.1450, 0.1927,\n", + " 0.1873, 0.0313, 0.0858, 0.0562, 0.0945, 0.0498, 0.0240, -0.0614,\n", + " 0.0010, 0.0344, -0.0668, -0.0337, 0.0664, 0.1849, 0.1264, 0.1104,\n", + " 0.1877, 0.1579, 0.0764, 0.1470, -0.0203, 0.0141, 0.0232, -0.2067,\n", + " -0.1615, -0.2129, -0.2376]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007085652905516326\n", + "Grad encoder.fc1.bias: 0.0004227808676660061\n", + "Grad encoder.encoder.0.weight: 9.222988592227921e-05\n", + "Grad encoder.encoder.0.bias: 0.0003760073450393975\n", + "Grad encoder.encoder.2.weight: 6.193963054101914e-05\n", + "Grad encoder.encoder.2.bias: 0.0005016919458284974\n", + "Grad encoder.encoder.4.weight: 0.00015864346642047167\n", + "Grad encoder.encoder.4.bias: 0.0012573464773595333\n", + "Grad decoder.fc1.0.weight: 6.540348113048822e-05\n", + "Grad decoder.fc1.0.bias: 0.0003546571242623031\n", + "Grad decoder.fc1.2.weight: 6.62033780827187e-05\n", + "Grad decoder.fc1.2.bias: 0.0005726063391193748\n", + "Grad decoder.fc1.4.weight: 6.490600935649127e-05\n", + "Grad decoder.fc1.4.bias: 0.0005950487684458494\n", + "Grad decoder.fc2.weight: 0.00012180715566501021\n", + "Grad decoder.fc2.bias: 0.0020408020354807377\n", + "Grad _memory_unit.weight_ih_l0: 2.201363349740859e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.238639278104529e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.437681880313903e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0354545338486787e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00012580977636389434\n", + "Grad _memory_unit.bias_hh_l1: 6.714121263939887e-05\n", + "Data X Sample: tensor([[1.5944, 1.7944, 1.9158, 2.0772, 2.2982, 2.6077, 2.5606, 2.5397, 2.7315,\n", + " 2.6760, 2.6552, 2.6311, 2.6875, 2.5574, 2.6152, 2.5081, 2.4686, 2.4586,\n", + " 2.4594, 2.4753, 2.4438, 2.5934, 2.4387, 2.4565, 2.5431, 2.6223, 2.5707,\n", + " 2.5369, 2.2584, 2.3548, 2.3377, 2.4041, 2.1582, 1.4532, 1.9658, 1.8801,\n", + " 1.7600, 1.5901, 1.6163, 1.5179, 1.2791, 0.7309, 0.7276, 1.2859, 1.9306,\n", + " 2.0986, 1.4074, 2.1581]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1260, 0.7761, 1.3236, 0.0170, -0.5736, 0.2325, -0.3191, -0.2927,\n", + " -0.0262, -0.3946, -0.1202, 2.5654, -0.5945, 0.0864, -0.0214, 1.0356,\n", + " 1.4567, 0.4854, -0.9873, -0.1789, 0.9865, -1.5975, -0.4685, 0.0956,\n", + " 0.1780, 0.0822, 0.8532, 0.1168, -0.0086, -0.2237, 0.3976, -0.0262,\n", + " 0.4421, -0.1992, 1.1904, 0.3484, -0.3467, 0.2376, 0.0382, -0.3646,\n", + " -0.5265, 0.5466, 0.5647]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2554, 0.2578, 0.1454, 0.0666, 0.0661, -0.0277, -0.2318, -0.2301,\n", + " -0.1258, -0.1599, -0.1979, 0.1277, 0.1161, 0.2184, 0.1441, 0.1969,\n", + " 0.1919, 0.0282, 0.0905, 0.0594, 0.0970, 0.0503, 0.0231, -0.0607,\n", + " 0.0021, 0.0342, -0.0680, -0.0347, 0.0680, 0.1856, 0.1303, 0.1088,\n", + " 0.1879, 0.1579, 0.0772, 0.1491, -0.0195, 0.0167, 0.0216, -0.2069,\n", + " -0.1618, -0.2154, -0.2387]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000251409481279552\n", + "Grad encoder.fc1.bias: 0.0001877772156149149\n", + "Grad encoder.encoder.0.weight: 5.5592681746929884e-05\n", + "Grad encoder.encoder.0.bias: 0.00015936886484269053\n", + "Grad encoder.encoder.2.weight: 3.630129140219651e-05\n", + "Grad encoder.encoder.2.bias: 0.00020432425662875175\n", + "Grad encoder.encoder.4.weight: 0.00012067140778526664\n", + "Grad encoder.encoder.4.bias: 0.000495041545946151\n", + "Grad decoder.fc1.0.weight: 5.489637260325253e-05\n", + "Grad decoder.fc1.0.bias: 0.0002499620313756168\n", + "Grad decoder.fc1.2.weight: 6.041888991603628e-05\n", + "Grad decoder.fc1.2.bias: 0.0003330540203023702\n", + "Grad decoder.fc1.4.weight: 5.3307645430322737e-05\n", + "Grad decoder.fc1.4.bias: 0.0004838347085751593\n", + "Grad decoder.fc2.weight: 7.148980512283742e-05\n", + "Grad decoder.fc2.bias: 0.0021341682877391577\n", + "Grad _memory_unit.weight_ih_l0: 3.965573796449462e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.289134711958468e-06\n", + "Grad _memory_unit.bias_hh_l0: 4.807326149602886e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.71971725851472e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.9296759243588895e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.5543828087393194e-05\n", + "Data X Sample: tensor([[1.9265, 2.3756, 2.6116, 2.7944, 2.9317, 2.9465, 3.0598, 3.0351, 3.1342,\n", + " 3.1500, 3.2580, 3.2017, 3.1469, 3.1572, 3.1347, 2.9799, 2.9718, 3.0041,\n", + " 3.0087, 2.9272, 2.7824, 2.7189, 2.6411, 2.4947, 2.3498, 2.4056, 2.2990,\n", + " 2.2473, 1.8907, 2.0339, 1.9877, 1.9564, 1.7842, 1.1534, 2.0124, 2.3398,\n", + " 2.6370, 2.8570, 3.0234, 2.9903, 1.5750, 0.9499, 0.9761, 1.5902, 2.5371,\n", + " 2.7848, 1.7813, 2.6273]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0724, 0.4889, 0.1245, -0.4919, -0.8422, -0.9594, -2.0738, -1.8934,\n", + " -0.4895, -0.6219, 0.7593, 0.9905, -1.7071, 0.1771, -0.2943, 0.2483,\n", + " -0.8421, 0.2855, 0.4547, -0.6934, 0.2389, 0.7739, 0.0864, -0.7299,\n", + " -1.0774, 0.2495, -0.2078, 1.0543, 2.2418, 1.5175, 1.1870, 1.6748,\n", + " 0.2422, 0.0467, 0.0619, -0.6030, 0.0000, 0.7825, -0.2102, 0.4666,\n", + " 0.2323, 0.1740, 0.5066]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1304, -0.1909, -0.0295, -0.1553, -0.0621, 0.0811, 0.0694, 0.1534,\n", + " 0.1037, 0.1500, 0.1136, -0.0740, -0.0738, -0.1136, -0.1062, -0.1716,\n", + " -0.1725, -0.0626, -0.0179, -0.0864, -0.0065, -0.0526, -0.0407, -0.0407,\n", + " -0.0242, 0.0212, 0.0096, 0.0039, -0.0898, -0.1066, -0.1161, -0.0977,\n", + " -0.1578, -0.1640, -0.1141, -0.0840, -0.0241, 0.0062, -0.0069, 0.1705,\n", + " 0.2194, 0.1723, 0.1300]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 8.681329200044274e-05\n", + "Grad encoder.fc1.bias: 4.15584072470665e-05\n", + "Grad encoder.encoder.0.weight: 1.8660115529200993e-05\n", + "Grad encoder.encoder.0.bias: 5.97454491071403e-05\n", + "Grad encoder.encoder.2.weight: 2.0640261936932802e-05\n", + "Grad encoder.encoder.2.bias: 8.440300007350743e-05\n", + "Grad encoder.encoder.4.weight: 8.463574340566993e-05\n", + "Grad encoder.encoder.4.bias: 0.0003883577592205256\n", + "Grad decoder.fc1.0.weight: 3.781935811275616e-05\n", + "Grad decoder.fc1.0.bias: 0.000143066281452775\n", + "Grad decoder.fc1.2.weight: 4.1512288589728996e-05\n", + "Grad decoder.fc1.2.bias: 0.00023266092466656119\n", + "Grad decoder.fc1.4.weight: 3.8769638194935396e-05\n", + "Grad decoder.fc1.4.bias: 0.0003637871996033937\n", + "Grad decoder.fc2.weight: 6.146806117612869e-05\n", + "Grad decoder.fc2.bias: 0.0015627035172656178\n", + "Grad _memory_unit.weight_ih_l0: 3.3100802738772472e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.6510277823254e-06\n", + "Grad _memory_unit.bias_hh_l0: 2.3767840957589215e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.114640210493235e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.578017640393227e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.8615388398757204e-05\n", + "Data X Sample: tensor([[1.4512, 1.4682, 1.5642, 1.5699, 1.7092, 1.8887, 2.0645, 1.8256, 3.2368,\n", + " 3.9888, 4.4825, 4.2670, 4.0413, 3.9043, 3.7677, 3.6897, 3.6542, 3.7411,\n", + " 3.5374, 3.5985, 3.5234, 3.2915, 3.0339, 2.8573, 2.8002, 2.8052, 2.7785,\n", + " 2.8428, 3.0910, 3.1933, 3.1601, 3.2414, 3.8061, 2.7416, 4.5567, 4.8572,\n", + " 5.1581, 5.4701, 6.0405, 5.8643, 0.9736, 0.5795, 0.5659, 1.0046, 1.5579,\n", + " 1.5725, 1.0334, 1.4466]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6837, -0.0610, 0.4409, -1.4945, -0.6153, -1.1805, 0.7410, 0.8223,\n", + " 0.7359, 0.4712, 0.8225, -0.9600, -1.6430, -0.8924, -0.0078, -0.6442,\n", + " -0.7495, -0.3680, 0.0637, -0.8948, -0.4022, -0.1127, 0.5300, -0.0420,\n", + " 0.3022, 0.6608, 1.3250, -0.0570, -1.5210, -0.9942, -0.4438, -1.3079,\n", + " -0.2255, -0.7252, 0.5121, 0.3278, 1.0246, 0.0761, 2.2782, 1.2456,\n", + " 1.3337, 0.4766, 1.0727]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2428, -0.3173, -0.0451, -0.1085, 0.0937, 0.2434, 0.2277, 0.3098,\n", + " 0.2494, 0.2852, 0.2880, -0.1477, -0.1746, -0.2818, -0.2112, -0.2990,\n", + " -0.2380, -0.0643, -0.0241, -0.1128, -0.0249, -0.0618, -0.0476, -0.0127,\n", + " 0.0218, 0.0368, -0.0926, -0.1445, -0.2680, -0.2604, -0.2908, -0.2551,\n", + " -0.3436, -0.3469, -0.2451, -0.1702, -0.0626, -0.0062, 0.0747, 0.3045,\n", + " 0.3277, 0.3648, 0.2764]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 8.465720748063177e-05\n", + "Grad encoder.fc1.bias: 0.00029513880144804716\n", + "Grad encoder.encoder.0.weight: 1.7070835383492522e-05\n", + "Grad encoder.encoder.0.bias: 0.00021931581431999803\n", + "Grad encoder.encoder.2.weight: 1.5433950466103852e-05\n", + "Grad encoder.encoder.2.bias: 0.00020267392392270267\n", + "Grad encoder.encoder.4.weight: 4.088953937753104e-05\n", + "Grad encoder.encoder.4.bias: 0.00041338635492138565\n", + "Grad decoder.fc1.0.weight: 2.9076161808916368e-05\n", + "Grad decoder.fc1.0.bias: 0.00025880106841214\n", + "Grad decoder.fc1.2.weight: 5.313671863405034e-05\n", + "Grad decoder.fc1.2.bias: 0.00048336436157114804\n", + "Grad decoder.fc1.4.weight: 5.05269126733765e-05\n", + "Grad decoder.fc1.4.bias: 0.0004047393158543855\n", + "Grad decoder.fc2.weight: 0.00015589952818118036\n", + "Grad decoder.fc2.bias: 0.0018213054863736033\n", + "Grad _memory_unit.weight_ih_l0: 5.822575985803269e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.2972459191805683e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.3747048797085881e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.1641875466448255e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.135024887043983e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.244969775550999e-05\n", + "Data X Sample: tensor([[1.5000, 1.5818, 1.6905, 1.8520, 2.0182, 2.1333, 2.2093, 3.4199, 4.4573,\n", + " 4.1941, 4.2953, 4.3897, 4.0612, 3.9479, 3.8232, 3.6350, 3.5882, 3.7159,\n", + " 3.6241, 3.4795, 3.5332, 3.4430, 2.8532, 2.7695, 2.8040, 2.8496, 3.0049,\n", + " 3.0426, 3.0112, 3.1114, 3.1531, 3.2939, 3.7071, 2.8011, 4.5273, 4.8742,\n", + " 5.1443, 5.3615, 5.9391, 5.8842, 1.1216, 0.5676, 0.6245, 1.0735, 1.6729,\n", + " 1.8298, 1.2102, 1.6499]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1462, -1.1579, 0.1352, 0.5323, 0.1730, 0.0625, 0.3514, 0.2836,\n", + " -1.1092, 0.1092, -0.2270, 1.4857, -0.5790, 0.0197, -2.0146, 0.1219,\n", + " -0.5121, -0.3391, 0.0261, 0.2548, 0.4185, 0.2975, -1.1295, -0.6596,\n", + " -0.1083, 0.2937, -0.4667, -0.5233, -0.5046, -0.1069, -0.1140, 0.4341,\n", + " -0.5486, -0.1827, 1.6804, 0.3037, -0.8471, 0.0000, 0.0000, 0.1781,\n", + " 0.1874, 0.2420, 0.7017]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2474, -0.3145, -0.0457, -0.1224, 0.0701, 0.2273, 0.2231, 0.3073,\n", + " 0.2332, 0.2732, 0.2862, -0.1468, -0.1714, -0.2779, -0.2096, -0.2881,\n", + " -0.2341, -0.0657, -0.0331, -0.1148, -0.0269, -0.0604, -0.0447, -0.0056,\n", + " 0.0195, 0.0367, -0.0818, -0.1350, -0.2528, -0.2410, -0.2778, -0.2494,\n", + " -0.3268, -0.3433, -0.2301, -0.1706, -0.0574, -0.0087, 0.0680, 0.3104,\n", + " 0.3254, 0.3614, 0.2697]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 8.393726602662355e-05\n", + "Grad encoder.fc1.bias: 0.00015844317385926843\n", + "Grad encoder.encoder.0.weight: 3.1661082175560296e-05\n", + "Grad encoder.encoder.0.bias: 0.0001379195600748062\n", + "Grad encoder.encoder.2.weight: 2.3833503291825764e-05\n", + "Grad encoder.encoder.2.bias: 0.00014416906924452633\n", + "Grad encoder.encoder.4.weight: 7.66659650253132e-05\n", + "Grad encoder.encoder.4.bias: 0.0004324961337260902\n", + "Grad decoder.fc1.0.weight: 3.705814742716029e-05\n", + "Grad decoder.fc1.0.bias: 0.00017207543714903295\n", + "Grad decoder.fc1.2.weight: 5.886891813133843e-05\n", + "Grad decoder.fc1.2.bias: 0.00025980552891269326\n", + "Grad decoder.fc1.4.weight: 7.487561379093677e-05\n", + "Grad decoder.fc1.4.bias: 0.00036574859404936433\n", + "Grad decoder.fc2.weight: 0.00011753579747164622\n", + "Grad decoder.fc2.bias: 0.001986254006624222\n", + "Grad _memory_unit.weight_ih_l0: 3.6250050925445976e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.1484855349408463e-05\n", + "Grad _memory_unit.bias_hh_l0: 6.698269771732157e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.7492761799076106e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.038511931663379e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.5865041859797202e-05\n", + "Data X Sample: tensor([[-0.0042, 0.0000, 0.0316, 0.0044, -0.0034, 0.0295, 0.0277, 0.0213,\n", + " 0.0269, 0.0269, 0.0286, 0.0253, 0.0266, 0.0327, 0.0202, 0.0000,\n", + " -0.1289, -0.1451, -0.1714, -0.1506, -0.1742, -0.1041, -0.1470, -0.1374,\n", + " -0.1239, -0.2351, -0.2158, -0.3752, -0.0937, -0.0459, -0.0735, -0.0414,\n", + " 0.0088, -0.0526, -0.0025, 0.0219, 0.0020, 0.0159, -0.0254, -0.0397,\n", + " 0.0430, 0.0080, 0.0121, 0.0144, 0.0198, 0.0343, -0.0204, 0.0156]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1635, -0.1938, -0.1702, 0.2244, -0.8894, -0.3955, -0.0171, 0.0334,\n", + " 0.2712, -0.0469, -0.3357, 0.8600, -0.7270, 0.6099, 0.9544, 0.8828,\n", + " -0.0192, -0.4771, 0.1342, -0.2134, -0.7837, -0.4725, -0.9774, -1.1518,\n", + " -0.6458, -0.6554, 0.0580, 0.1233, 0.3808, 0.8820, -0.0893, 1.2922,\n", + " 0.6434, 0.4936, -0.1308, -0.2350, -0.0317, -0.6596, 0.0040, 0.0233,\n", + " -0.2537, -0.2775, -0.0884]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4709, 0.3988, 0.2251, 0.2571, 0.0410, -0.0922, -0.4949, -0.5935,\n", + " -0.2569, -0.3020, -0.2717, 0.3034, 0.2401, 0.3887, 0.2236, 0.3451,\n", + " 0.3688, 0.1660, 0.2136, 0.1365, 0.1640, 0.0607, 0.0659, 0.0397,\n", + " -0.0100, 0.0565, -0.0813, 0.1161, 0.2430, 0.4324, 0.3329, 0.2846,\n", + " 0.3809, 0.3949, 0.1995, 0.2150, -0.0366, 0.0438, -0.0058, -0.4035,\n", + " -0.3664, -0.3745, -0.3538]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0012541767209768295\n", + "Grad encoder.fc1.bias: 0.0011531665222719312\n", + "Grad encoder.encoder.0.weight: 0.00017583956650923938\n", + "Grad encoder.encoder.0.bias: 0.0013422600459307432\n", + "Grad encoder.encoder.2.weight: 9.829841292230412e-05\n", + "Grad encoder.encoder.2.bias: 0.0013158811489120126\n", + "Grad encoder.encoder.4.weight: 0.0003005570615641773\n", + "Grad encoder.encoder.4.bias: 0.003618609858676791\n", + "Grad decoder.fc1.0.weight: 9.414413943886757e-05\n", + "Grad decoder.fc1.0.bias: 0.0007196854567155242\n", + "Grad decoder.fc1.2.weight: 7.191338227130473e-05\n", + "Grad decoder.fc1.2.bias: 0.0013676319504156709\n", + "Grad decoder.fc1.4.weight: 8.345165406353772e-05\n", + "Grad decoder.fc1.4.bias: 0.0008305361843667924\n", + "Grad decoder.fc2.weight: 0.0001853657595347613\n", + "Grad decoder.fc2.bias: 0.002516611712053418\n", + "Grad _memory_unit.weight_ih_l0: 2.5917526727425866e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.729189721634611e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.027296720072627e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.7121767086791806e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.000218215020140633\n", + "Grad _memory_unit.bias_hh_l1: 0.00011293766874587163\n", + "Data X Sample: tensor([[1.1574, 1.3065, 1.4605, 1.5590, 1.7279, 1.8475, 1.9397, 1.6652, 3.1245,\n", + " 3.8387, 3.8480, 3.8385, 3.8393, 3.6807, 3.5206, 3.3355, 3.2532, 3.2691,\n", + " 3.3144, 3.2787, 3.3320, 3.2226, 2.8797, 2.7829, 2.7251, 2.7791, 2.8025,\n", + " 2.8795, 2.8482, 3.0360, 3.0936, 3.1668, 3.3265, 2.4029, 4.0125, 4.3634,\n", + " 4.6822, 5.0726, 5.6032, 5.3934, 0.9163, 0.5078, 0.5396, 0.9788, 1.4192,\n", + " 1.5611, 1.1286, 1.4387]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4498, -0.0387, 0.1322, 0.0055, -0.2786, -0.2982, 1.0527, 0.1419,\n", + " 0.3432, 0.1352, 0.0836, 1.1789, 1.0094, 0.9289, 0.5505, 0.1269,\n", + " -0.0898, -0.2163, -0.2044, -0.0065, -0.0369, 0.3375, 0.1915, 0.3536,\n", + " 0.1039, 0.0638, 0.4927, -0.6998, -0.7702, 0.2354, -0.1735, 1.2220,\n", + " -1.0044, -0.4211, -0.0352, -0.5512, 0.4684, 0.6044, -0.4418, -0.0208,\n", + " -0.6646, -0.8448, -0.3698]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2741, -0.3504, -0.0512, -0.0994, 0.1221, 0.2758, 0.2695, 0.3457,\n", + " 0.2874, 0.3221, 0.3322, -0.1696, -0.2044, -0.3278, -0.2409, -0.3289,\n", + " -0.2586, -0.0683, -0.0317, -0.1233, -0.0259, -0.0699, -0.0483, 0.0036,\n", + " 0.0242, 0.0353, -0.1155, -0.1831, -0.3139, -0.3009, -0.3270, -0.2984,\n", + " -0.3912, -0.3964, -0.2711, -0.1943, -0.0656, -0.0045, 0.0905, 0.3419,\n", + " 0.3567, 0.4164, 0.3133]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00023066921858116984\n", + "Grad encoder.fc1.bias: 0.00032906135311350226\n", + "Grad encoder.encoder.0.weight: 3.9490732888225466e-05\n", + "Grad encoder.encoder.0.bias: 0.00030636670999228954\n", + "Grad encoder.encoder.2.weight: 3.573371941456571e-05\n", + "Grad encoder.encoder.2.bias: 0.00048464551218785346\n", + "Grad encoder.encoder.4.weight: 0.00012222322402521968\n", + "Grad encoder.encoder.4.bias: 0.0012606193777173758\n", + "Grad decoder.fc1.0.weight: 7.74906002334319e-05\n", + "Grad decoder.fc1.0.bias: 0.0004995251074433327\n", + "Grad decoder.fc1.2.weight: 6.176379974931479e-05\n", + "Grad decoder.fc1.2.bias: 0.000962599238846451\n", + "Grad decoder.fc1.4.weight: 7.697474211454391e-05\n", + "Grad decoder.fc1.4.bias: 0.0005026134313084185\n", + "Grad decoder.fc2.weight: 0.00016326940385624766\n", + "Grad decoder.fc2.bias: 0.0018086752388626337\n", + "Grad _memory_unit.weight_ih_l0: 2.5745588573045097e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.620143489679322e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.292770219966769e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.6112062439788133e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00016367813805118203\n", + "Grad _memory_unit.bias_hh_l1: 8.942602289607748e-05\n", + "Data X Sample: tensor([[-0.0233, -0.0044, -0.0195, -0.0044, -0.0205, -0.0295, -0.0139, -0.0142,\n", + " -0.0220, -0.0047, -0.0127, -0.0117, -0.0111, -0.0300, -0.0126, 0.0137,\n", + " 0.0943, 0.1103, 0.1466, 0.1209, 0.1693, 0.1056, 0.1542, 0.1584,\n", + " 0.1333, 0.2821, 0.2797, 0.4813, 0.0624, 0.1146, 0.0770, 0.0525,\n", + " 0.0330, 0.0412, 0.0539, 0.0243, 0.0334, 0.0477, 0.0063, -0.0028,\n", + " 0.0286, 0.0159, 0.0222, 0.0057, 0.0159, 0.0000, 0.0476, -0.0078]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2119, -0.1123, -0.1712, 0.3783, -0.4567, -0.2639, 0.0849, -0.6192,\n", + " -0.7485, -0.3712, -0.2248, -0.1371, -0.8736, -0.3778, 0.0813, -0.2309,\n", + " 0.5835, 0.0592, -0.0224, -0.5307, -0.2853, 0.3975, 0.0490, 0.8019,\n", + " 0.4016, 0.0142, -0.6322, 0.4060, 0.4275, -0.0338, 0.3550, -0.0109,\n", + " 0.2668, 0.7035, 0.9846, 0.4981, 0.1343, -0.6596, 0.9946, -0.4252,\n", + " -0.1833, -0.1994, -0.2296]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4969, 0.4000, 0.2126, 0.2491, -0.0200, -0.1431, -0.5418, -0.6440,\n", + " -0.3162, -0.3549, -0.3280, 0.3074, 0.2503, 0.4321, 0.2411, 0.3772,\n", + " 0.3668, 0.1830, 0.2155, 0.1454, 0.1481, 0.0657, 0.1053, 0.0666,\n", + " -0.0306, 0.0279, -0.0504, 0.1535, 0.2982, 0.4989, 0.3643, 0.3080,\n", + " 0.3992, 0.4221, 0.2039, 0.2332, -0.0605, 0.0252, 0.0185, -0.4475,\n", + " -0.4018, -0.3878, -0.3483]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001887510734377429\n", + "Grad encoder.fc1.bias: 0.0005399350775405765\n", + "Grad encoder.encoder.0.weight: 4.66445017082151e-05\n", + "Grad encoder.encoder.0.bias: 0.00036497542168945074\n", + "Grad encoder.encoder.2.weight: 3.9650098187848926e-05\n", + "Grad encoder.encoder.2.bias: 0.0002213215921074152\n", + "Grad encoder.encoder.4.weight: 0.00011743758659576997\n", + "Grad encoder.encoder.4.bias: 0.0004999814555048943\n", + "Grad decoder.fc1.0.weight: 4.9629161367192864e-05\n", + "Grad decoder.fc1.0.bias: 0.00025551251019351184\n", + "Grad decoder.fc1.2.weight: 6.668927380815148e-05\n", + "Grad decoder.fc1.2.bias: 0.00032041146187111735\n", + "Grad decoder.fc1.4.weight: 9.194687299896032e-05\n", + "Grad decoder.fc1.4.bias: 0.0004528879653662443\n", + "Grad decoder.fc2.weight: 0.00013959901116322726\n", + "Grad decoder.fc2.bias: 0.0021783581469208\n", + "Grad _memory_unit.weight_ih_l0: 7.31126874597976e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.5811658158781938e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.355595466331579e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.630650442370097e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.029105523135513e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.5495330191915855e-05\n", + "Data X Sample: tensor([[1.3367, 1.5250, 1.7115, 1.7689, 2.0045, 1.9933, 1.9905, 1.9122, 3.2783,\n", + " 4.3379, 4.1906, 4.1676, 4.0546, 3.8470, 3.6366, 3.6103, 3.6117, 3.4026,\n", + " 3.3205, 3.2675, 3.2805, 3.2915, 2.8628, 2.7829, 2.7589, 2.7373, 2.7332,\n", + " 2.7653, 2.8170, 3.0328, 2.9956, 3.2414, 3.5333, 2.6638, 4.4219, 4.7720,\n", + " 5.0814, 5.2978, 5.8060, 5.7452, 1.0547, 0.6034, 0.6164, 1.0936, 1.5817,\n", + " 1.6468, 1.1762, 1.7280]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4488, -0.3554, -1.5441, -1.4761, -0.1356, 0.7270, 0.3669, 0.5984,\n", + " 0.7535, 0.7219, 0.6315, -0.2740, -0.6076, 0.2939, 0.6967, -0.9338,\n", + " -0.3551, -0.7380, -0.5609, -0.9973, -0.9059, -0.2717, -0.1164, -0.3064,\n", + " 0.7424, -1.1196, -0.6137, -0.8700, -0.6098, -0.2629, -1.2642, -0.2696,\n", + " -0.7096, -0.6913, 0.6879, -0.1758, -0.6001, -0.7725, -0.5540, 0.8616,\n", + " 0.7758, 0.6365, 1.3378]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2927, -0.3719, -0.0549, -0.0862, 0.1535, 0.3023, 0.2967, 0.3718,\n", + " 0.3237, 0.3536, 0.3617, -0.1877, -0.2266, -0.3625, -0.2607, -0.3546,\n", + " -0.2789, -0.0742, -0.0369, -0.1281, -0.0242, -0.0727, -0.0509, 0.0124,\n", + " 0.0253, 0.0376, -0.1367, -0.2171, -0.3528, -0.3375, -0.3549, -0.3297,\n", + " -0.4328, -0.4311, -0.2947, -0.2073, -0.0628, -0.0018, 0.1042, 0.3637,\n", + " 0.3757, 0.4475, 0.3388]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005453233607113361\n", + "Grad encoder.fc1.bias: 0.000457619724329561\n", + "Grad encoder.encoder.0.weight: 8.248911763075739e-05\n", + "Grad encoder.encoder.0.bias: 0.0005094950320199132\n", + "Grad encoder.encoder.2.weight: 7.540512888226658e-05\n", + "Grad encoder.encoder.2.bias: 0.0008688400266692042\n", + "Grad encoder.encoder.4.weight: 0.00020414670871105045\n", + "Grad encoder.encoder.4.bias: 0.0020346285309642553\n", + "Grad decoder.fc1.0.weight: 7.821546023478732e-05\n", + "Grad decoder.fc1.0.bias: 0.000535685452632606\n", + "Grad decoder.fc1.2.weight: 4.789302693097852e-05\n", + "Grad decoder.fc1.2.bias: 0.0009586370433680713\n", + "Grad decoder.fc1.4.weight: 5.309676271281205e-05\n", + "Grad decoder.fc1.4.bias: 0.00046782492427155375\n", + "Grad decoder.fc2.weight: 0.00020705570932477713\n", + "Grad decoder.fc2.bias: 0.002017974155023694\n", + "Grad _memory_unit.weight_ih_l0: 2.4426664822385646e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.135146784596145e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.851094879792072e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.5838382751098834e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001702282897895202\n", + "Grad _memory_unit.bias_hh_l1: 9.150823461823165e-05\n", + "Data X Sample: tensor([[1.5966, 1.9590, 1.9775, 2.0772, 2.1958, 2.2791, 2.3418, 2.4971, 2.4434,\n", + " 2.5260, 2.5696, 2.5395, 2.4523, 2.4484, 2.4740, 2.4001, 2.3444, 2.3928,\n", + " 2.4264, 2.4381, 2.3849, 2.4939, 2.4845, 2.4794, 2.5206, 2.5335, 2.4801,\n", + " 2.4757, 2.1578, 2.2074, 2.1907, 1.9841, 1.7182, 1.0962, 1.5467, 1.5299,\n", + " 1.4414, 1.4311, 1.3945, 1.3476, 1.2122, 0.7926, 0.7922, 1.2544, 1.9979,\n", + " 2.1443, 1.3122, 2.0174]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1435, -0.6295, 0.8077, 1.5659, -0.6276, -0.2699, -0.9013, 0.2281,\n", + " -0.2644, -0.2159, -0.4080, 0.8647, 0.2257, -0.0515, 0.1522, -0.5993,\n", + " -0.0397, -0.1421, 0.1647, -0.2223, -0.4911, 0.1969, -0.6929, -0.6669,\n", + " -0.1183, 0.7105, 0.9806, 0.4546, -0.4176, -0.7704, 0.7377, -1.1915,\n", + " 0.0975, -0.5153, -1.1951, -0.0360, 0.0501, -0.0920, -0.7130, 0.2784,\n", + " 0.3673, 1.2006, -0.4002]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2671, 0.2038, 0.1414, 0.1138, 0.0158, -0.0193, -0.2406, -0.2748,\n", + " -0.1239, -0.1303, -0.1750, 0.1285, 0.1261, 0.2234, 0.1093, 0.2126,\n", + " 0.1789, 0.0638, 0.0979, 0.0679, 0.1054, 0.0399, 0.0605, 0.0246,\n", + " -0.0282, 0.0105, -0.0566, 0.0094, 0.1062, 0.1827, 0.1422, 0.1208,\n", + " 0.1817, 0.1721, 0.1049, 0.1452, -0.0414, 0.0066, -0.0154, -0.2054,\n", + " -0.1645, -0.1812, -0.2204]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007860049372538924\n", + "Grad encoder.fc1.bias: 0.00043039454612880945\n", + "Grad encoder.encoder.0.weight: 0.00014481117250397801\n", + "Grad encoder.encoder.0.bias: 0.0006038272986188531\n", + "Grad encoder.encoder.2.weight: 0.00010648788156686351\n", + "Grad encoder.encoder.2.bias: 0.0009944678749889135\n", + "Grad encoder.encoder.4.weight: 0.00035496833152137697\n", + "Grad encoder.encoder.4.bias: 0.0025959499180316925\n", + "Grad decoder.fc1.0.weight: 0.00012754029012285173\n", + "Grad decoder.fc1.0.bias: 0.0007912120781838894\n", + "Grad decoder.fc1.2.weight: 0.0001036135945469141\n", + "Grad decoder.fc1.2.bias: 0.0015719388611614704\n", + "Grad decoder.fc1.4.weight: 0.00011253538104938343\n", + "Grad decoder.fc1.4.bias: 0.0010562074603512883\n", + "Grad decoder.fc2.weight: 0.00017731654224917293\n", + "Grad decoder.fc2.bias: 0.002369444817304611\n", + "Grad _memory_unit.weight_ih_l0: 5.093271829537116e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0001417161402059719\n", + "Grad _memory_unit.bias_hh_l0: 9.270956797990948e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.8002701583318412e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00030196504667401314\n", + "Grad _memory_unit.bias_hh_l1: 0.00016501358186360449\n", + "Data X Sample: tensor([[2.8186, 2.8213, 2.3381, 2.3352, 2.2948, 2.3661, 3.3848, 3.8429, 4.0521,\n", + " 4.0962, 3.9559, 3.9826, 3.9170, 3.8307, 3.6542, 3.5844, 3.5378, 3.5360,\n", + " 3.5869, 3.4460, 3.2780, 3.3389, 2.9737, 2.8210, 2.7777, 2.7634, 2.7199,\n", + " 2.7204, 2.6955, 2.7675, 2.7751, 2.8407, 3.0229, 2.3411, 3.8606, 4.2734,\n", + " 4.6389, 4.9295, 5.4637, 5.4586, 1.8613, 0.9639, 0.8044, 1.3950, 2.0098,\n", + " 2.1272, 1.4414, 2.1190]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.0172, -0.7685, -0.7449, -0.8885, -1.1741, 0.2053, 1.0283, 0.3519,\n", + " 0.2208, 0.4854, 0.8983, -1.6349, -0.1166, -0.8599, -0.3740, -1.0098,\n", + " -0.9776, -1.3089, -1.0560, -0.9604, -0.4423, 0.5341, -0.6438, -0.6096,\n", + " -1.5273, -0.1656, 0.8786, -0.1521, 0.3355, -0.8195, -1.1964, -1.0526,\n", + " -0.2676, -0.8556, -0.8568, 0.4520, 0.9776, 0.7816, 0.0040, 0.8718,\n", + " 0.8444, 0.9464, 0.8813]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2779, -0.3295, -0.0543, -0.1333, 0.0578, 0.2239, 0.2447, 0.3307,\n", + " 0.2525, 0.2923, 0.3130, -0.1717, -0.1931, -0.3092, -0.2269, -0.2967,\n", + " -0.2545, -0.0840, -0.0580, -0.1262, -0.0267, -0.0671, -0.0477, 0.0184,\n", + " 0.0175, 0.0368, -0.0873, -0.1624, -0.2737, -0.2525, -0.2882, -0.2717,\n", + " -0.3471, -0.3733, -0.2330, -0.1853, -0.0374, -0.0054, 0.0687, 0.3438,\n", + " 0.3431, 0.3868, 0.2824]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004191974876448512\n", + "Grad encoder.fc1.bias: 0.0006805848679505289\n", + "Grad encoder.encoder.0.weight: 8.440726378466934e-05\n", + "Grad encoder.encoder.0.bias: 0.0007684373413212597\n", + "Grad encoder.encoder.2.weight: 0.00011050027387682348\n", + "Grad encoder.encoder.2.bias: 0.0017623212188482285\n", + "Grad encoder.encoder.4.weight: 0.00030556420097127557\n", + "Grad encoder.encoder.4.bias: 0.005293230526149273\n", + "Grad decoder.fc1.0.weight: 0.00010150221351068467\n", + "Grad decoder.fc1.0.bias: 0.0010162119287997484\n", + "Grad decoder.fc1.2.weight: 0.00010752315574791282\n", + "Grad decoder.fc1.2.bias: 0.0014468393055722117\n", + "Grad decoder.fc1.4.weight: 0.00012009960482828319\n", + "Grad decoder.fc1.4.bias: 0.0009106170618906617\n", + "Grad decoder.fc2.weight: 0.00017993853543885052\n", + "Grad decoder.fc2.bias: 0.0025675510987639427\n", + "Grad _memory_unit.weight_ih_l0: 4.3464835471240804e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0002312332799192518\n", + "Grad _memory_unit.bias_hh_l0: 0.00011865183478221297\n", + "Grad _memory_unit.weight_ih_l1: 1.2680021427513566e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00026365509256720543\n", + "Grad _memory_unit.bias_hh_l1: 0.00013698059774469584\n", + "Data X Sample: tensor([[2.5906, 2.9218, 3.3599, 3.5378, 3.4473, 3.5874, 3.7592, 3.7492, 3.8885,\n", + " 3.9177, 3.9210, 3.8132, 3.8149, 3.7707, 3.5811, 3.4667, 3.4498, 3.3929,\n", + " 3.5043, 3.2973, 3.2780, 3.2547, 2.8508, 2.8554, 2.7270, 2.7817, 2.8398,\n", + " 2.7897, 2.6400, 2.8199, 2.8381, 2.8821, 2.9305, 2.1649, 3.6743, 3.9937,\n", + " 4.1650, 4.5982, 5.2165, 5.0785, 1.9568, 1.1511, 1.1520, 2.1069, 2.9375,\n", + " 3.4195, 2.1417, 3.1355]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2027, -0.4046, -0.0549, -0.3804, -0.0574, -0.1338, 0.4181, -0.2615,\n", + " -1.8976, 0.2615, 0.1725, 0.5160, 0.1461, -0.9645, 0.9531, -0.2301,\n", + " 2.5914, 0.5619, -0.1662, -0.5102, 0.5562, 0.6205, -0.5107, -0.1622,\n", + " -0.0507, -0.8103, 1.4247, 0.8549, 0.1255, -0.1975, 0.4369, -0.5425,\n", + " 0.4073, 0.2804, -0.2807, 0.7385, 0.4497, 0.0000, -0.3712, 0.3915,\n", + " 0.2465, 0.1516, 0.6916]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2593, -0.2992, -0.0527, -0.1581, 0.0010, 0.1757, 0.2049, 0.2954,\n", + " 0.2028, 0.2491, 0.2738, -0.1556, -0.1662, -0.2677, -0.2002, -0.2573,\n", + " -0.2364, -0.0853, -0.0640, -0.1208, -0.0256, -0.0600, -0.0444, 0.0174,\n", + " 0.0114, 0.0343, -0.0559, -0.1218, -0.2188, -0.1993, -0.2418, -0.2295,\n", + " -0.2882, -0.3282, -0.1908, -0.1675, -0.0251, -0.0075, 0.0454, 0.3198,\n", + " 0.3169, 0.3413, 0.2440]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005962125724181533\n", + "Grad encoder.fc1.bias: 0.00031766551546752453\n", + "Grad encoder.encoder.0.weight: 0.00011699402239173651\n", + "Grad encoder.encoder.0.bias: 0.0003869368811137974\n", + "Grad encoder.encoder.2.weight: 7.211095362436026e-05\n", + "Grad encoder.encoder.2.bias: 0.0004319658037275076\n", + "Grad encoder.encoder.4.weight: 0.00020646967459470034\n", + "Grad encoder.encoder.4.bias: 0.0014829784631729126\n", + "Grad decoder.fc1.0.weight: 5.751214484917e-05\n", + "Grad decoder.fc1.0.bias: 0.00034057869925163686\n", + "Grad decoder.fc1.2.weight: 5.885729115107097e-05\n", + "Grad decoder.fc1.2.bias: 0.0004226247256156057\n", + "Grad decoder.fc1.4.weight: 7.16184513294138e-05\n", + "Grad decoder.fc1.4.bias: 0.0006792520871385932\n", + "Grad decoder.fc2.weight: 0.00010015325824497268\n", + "Grad decoder.fc2.bias: 0.00281997537240386\n", + "Grad _memory_unit.weight_ih_l0: 5.309306743583875e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.7517149899504147e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.0505282261874527e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.0649716791231185e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.859809971298091e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.959795165224932e-05\n", + "Data X Sample: tensor([[1.4788, 1.7944, 1.9354, 2.0488, 2.1309, 2.2114, 2.3695, 2.3835, 2.5484,\n", + " 2.4802, 2.6520, 2.5551, 2.4700, 2.4947, 2.4437, 2.4083, 2.3523, 2.4644,\n", + " 2.3583, 2.4232, 2.4242, 2.4663, 2.4411, 2.4756, 2.4324, 2.5675, 2.5574,\n", + " 2.5777, 2.2584, 2.3384, 2.3517, 2.3129, 2.2286, 1.4646, 1.9094, 1.7804,\n", + " 1.6381, 1.5106, 1.5783, 1.6030, 1.1454, 0.7129, 0.7215, 1.2113, 1.9979,\n", + " 2.1729, 1.2850, 1.9783]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6912, 1.1131, 1.1234, 0.8653, 0.7692, -1.1665, -0.6186, -0.8208,\n", + " 0.7846, -0.5006, -0.5338, 0.8246, 1.7040, 0.6601, -0.6465, 1.0245,\n", + " 0.4929, 0.7151, 1.1946, -0.7392, -0.0210, -0.4273, -0.1258, -1.0354,\n", + " 0.5943, -0.1610, 0.2763, -0.1090, 0.7511, 0.9634, -0.0421, 0.1467,\n", + " 0.9479, -0.1784, 1.5968, 1.3647, -0.9968, -0.7815, -0.0104, -0.4447,\n", + " -0.4160, -0.5124, 0.0391]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3339, 0.2703, 0.1764, 0.1905, 0.0380, -0.0209, -0.2902, -0.3717,\n", + " -0.1546, -0.1722, -0.2097, 0.1734, 0.1762, 0.2764, 0.1533, 0.3028,\n", + " 0.2534, 0.1105, 0.1182, 0.0941, 0.1377, 0.0637, 0.0874, 0.0515,\n", + " -0.0148, 0.0022, -0.0840, 0.0205, 0.1509, 0.2330, 0.2021, 0.1497,\n", + " 0.2497, 0.2425, 0.1505, 0.1801, -0.0221, 0.0101, -0.0211, -0.2508,\n", + " -0.2414, -0.2484, -0.3006]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00042073684744536877\n", + "Grad encoder.fc1.bias: 0.0005649779923260212\n", + "Grad encoder.encoder.0.weight: 8.678091398905963e-05\n", + "Grad encoder.encoder.0.bias: 0.00037942163180559874\n", + "Grad encoder.encoder.2.weight: 5.7782570365816355e-05\n", + "Grad encoder.encoder.2.bias: 0.00037791248178109527\n", + "Grad encoder.encoder.4.weight: 0.000174038577824831\n", + "Grad encoder.encoder.4.bias: 0.0012180618941783905\n", + "Grad decoder.fc1.0.weight: 5.581500954576768e-05\n", + "Grad decoder.fc1.0.bias: 0.0003620002535171807\n", + "Grad decoder.fc1.2.weight: 6.571572157554328e-05\n", + "Grad decoder.fc1.2.bias: 0.00046347081661224365\n", + "Grad decoder.fc1.4.weight: 8.196529961423948e-05\n", + "Grad decoder.fc1.4.bias: 0.00069348921533674\n", + "Grad decoder.fc2.weight: 0.0001335962297162041\n", + "Grad decoder.fc2.bias: 0.0028406830970197916\n", + "Grad _memory_unit.weight_ih_l0: 6.935294095455902e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.0123676222283393e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.1119099326606374e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.0341470846906304e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.707367720082402e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.437719715293497e-05\n", + "Data X Sample: tensor([[1.4618, 1.6910, 1.9038, 1.8586, 2.1292, 2.1510, 2.3819, 2.5326, 2.4654,\n", + " 2.5813, 2.4807, 2.6233, 2.4589, 2.5220, 2.4790, 2.4630, 2.3397, 2.4392,\n", + " 2.3996, 2.3767, 2.5223, 2.4066, 2.4050, 2.3534, 2.3704, 2.2985, 2.2883,\n", + " 2.3900, 2.2099, 2.3319, 2.2537, 2.3074, 2.2198, 1.4280, 1.8800, 1.7901,\n", + " 1.6184, 1.4682, 1.5402, 1.5576, 1.2504, 0.6651, 0.7296, 1.2687, 1.7442,\n", + " 1.8870, 1.3190, 1.8375]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4639, -0.5277, 0.0419, 0.5033, -0.1652, 3.0195, 1.9852, -0.7508,\n", + " 0.5795, 0.7379, 0.8808, 0.0214, 0.3327, -1.5910, -0.0803, 1.1071,\n", + " -0.4866, -1.2665, 0.0683, 0.1095, 0.6615, 0.7812, -0.4043, -0.7181,\n", + " 7.7270, 0.6069, -0.5449, 0.4051, 1.1073, -0.6784, -1.2628, 0.2831,\n", + " -0.4256, -0.7613, -0.5232, -0.8120, -0.6417, 0.7428, 0.5660, 0.0560,\n", + " 0.1820, -0.1889, 0.0963]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4110, 0.3427, 0.2148, 0.2651, 0.0649, -0.0205, -0.3476, -0.4512,\n", + " -0.2010, -0.2264, -0.2579, 0.2119, 0.2217, 0.3353, 0.1894, 0.3884,\n", + " 0.3304, 0.1486, 0.1406, 0.1308, 0.1681, 0.0872, 0.1179, 0.0810,\n", + " -0.0120, -0.0036, -0.1024, 0.0213, 0.1851, 0.2907, 0.2505, 0.1942,\n", + " 0.3151, 0.3095, 0.2034, 0.2270, -0.0246, 0.0072, -0.0263, -0.3177,\n", + " -0.3168, -0.3116, -0.3737]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00033928221091628075\n", + "Grad encoder.fc1.bias: 0.0002583273162599653\n", + "Grad encoder.encoder.0.weight: 6.020936416462064e-05\n", + "Grad encoder.encoder.0.bias: 0.0002347601403016597\n", + "Grad encoder.encoder.2.weight: 4.549057484837249e-05\n", + "Grad encoder.encoder.2.bias: 0.000379555654944852\n", + "Grad encoder.encoder.4.weight: 0.00011830701259896159\n", + "Grad encoder.encoder.4.bias: 0.000867634080350399\n", + "Grad decoder.fc1.0.weight: 5.048398088547401e-05\n", + "Grad decoder.fc1.0.bias: 0.00039319624193012714\n", + "Grad decoder.fc1.2.weight: 6.581367779290304e-05\n", + "Grad decoder.fc1.2.bias: 0.00040975259616971016\n", + "Grad decoder.fc1.4.weight: 6.511322862934321e-05\n", + "Grad decoder.fc1.4.bias: 0.0004073349991813302\n", + "Grad decoder.fc2.weight: 8.514141518389806e-05\n", + "Grad decoder.fc2.bias: 0.0019290205091238022\n", + "Grad _memory_unit.weight_ih_l0: 4.733756668429123e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.5422907128813677e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.3724132259085309e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.2314819691237062e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.182853005360812e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.6357501812744886e-05\n", + "Data X Sample: tensor([[2.7730, 3.3150, 3.6469, 4.0648, 4.0825, 4.2209, 4.2538, 4.2901, 4.3987,\n", + " 4.2637, 4.2731, 4.3546, 3.9836, 3.7516, 3.5534, 3.5543, 3.4435, 3.7430,\n", + " 3.5725, 3.4684, 3.4890, 3.4231, 2.9640, 2.7142, 2.7402, 2.7138, 2.8345,\n", + " 2.9203, 3.0112, 2.9640, 3.0726, 3.1612, 3.4629, 2.5219, 4.1743, 4.7550,\n", + " 4.9614, 5.4516, 5.9645, 5.8331, 2.1525, 1.2008, 1.2550, 2.3164, 3.3537,\n", + " 3.8198, 2.4884, 3.4092]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0727, -0.8274, -0.5017, -0.4632, 0.2588, 0.0919, 1.0392, 0.7466,\n", + " 0.3854, 0.5324, 0.0101, 0.6566, -0.1034, 0.6770, 0.8463, 0.6350,\n", + " 0.2861, 0.3942, 0.3193, -0.0556, 0.1438, 0.0927, -0.1848, 0.0045,\n", + " -0.2995, -0.1312, 0.0163, 0.2920, 0.9994, -0.3599, -0.4040, -0.0774,\n", + " -0.8497, -0.5289, -0.7355, 0.6981, 0.2315, -0.5556, 0.7114, 0.2703,\n", + " -0.3425, -0.9169, -0.6393]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2403, -0.2699, -0.0505, -0.1801, -0.0487, 0.1315, 0.1678, 0.2610,\n", + " 0.1574, 0.2095, 0.2362, -0.1392, -0.1397, -0.2334, -0.1729, -0.2225,\n", + " -0.2221, -0.0919, -0.0671, -0.1157, -0.0253, -0.0498, -0.0473, 0.0136,\n", + " 0.0035, 0.0275, -0.0280, -0.0865, -0.1684, -0.1568, -0.1981, -0.1899,\n", + " -0.2357, -0.2835, -0.1500, -0.1450, -0.0090, -0.0074, 0.0225, 0.2951,\n", + " 0.2908, 0.2972, 0.2097]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006762339035049081\n", + "Grad encoder.fc1.bias: 0.0009822876891121268\n", + "Grad encoder.encoder.0.weight: 0.000128403480630368\n", + "Grad encoder.encoder.0.bias: 0.0009121668990701437\n", + "Grad encoder.encoder.2.weight: 9.78614843916148e-05\n", + "Grad encoder.encoder.2.bias: 0.0008306960226036608\n", + "Grad encoder.encoder.4.weight: 0.00027758313808590174\n", + "Grad encoder.encoder.4.bias: 0.0018047299236059189\n", + "Grad decoder.fc1.0.weight: 0.00010650210606399924\n", + "Grad decoder.fc1.0.bias: 0.0006225104443728924\n", + "Grad decoder.fc1.2.weight: 9.764046990312636e-05\n", + "Grad decoder.fc1.2.bias: 0.0009180845227092505\n", + "Grad decoder.fc1.4.weight: 8.267063094535843e-05\n", + "Grad decoder.fc1.4.bias: 0.00078048394061625\n", + "Grad decoder.fc2.weight: 0.00012897142732981592\n", + "Grad decoder.fc2.bias: 0.0018744149710983038\n", + "Grad _memory_unit.weight_ih_l0: 2.820648114720825e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.3096893680049106e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.926684075850062e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.2182375940028578e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00016569343279115856\n", + "Grad _memory_unit.bias_hh_l1: 8.820589573588222e-05\n", + "Data X Sample: tensor([[1.6496, 1.6662, 1.8723, 1.8520, 1.9499, 2.0316, 2.0722, 4.0275, 4.3694,\n", + " 4.3221, 4.4349, 4.5182, 4.2321, 4.1279, 4.1107, 3.8948, 3.7580, 3.7585,\n", + " 3.8409, 3.5149, 3.5945, 3.5839, 3.2604, 2.8535, 2.9034, 2.8888, 2.7892,\n", + " 2.9203, 2.8863, 3.0885, 3.1006, 3.3243, 3.6543, 2.6753, 4.5175, 4.8572,\n", + " 5.0833, 5.5841, 6.1990, 6.0686, 1.1263, 0.6572, 0.6467, 1.1367, 1.7839,\n", + " 1.8699, 1.2442, 1.5873]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.2650, 0.3404, 0.1105, -1.0350, -0.9991, 0.8686, -0.9601, 0.7163,\n", + " -0.7049, -0.5291, -0.7656, -0.2228, 0.8268, -1.2435, -0.3236, 0.7383,\n", + " 0.1830, 0.9826, 0.6904, 0.4704, 0.4060, 0.9746, 0.0253, 0.9215,\n", + " 0.1666, 0.4045, -0.1284, -0.4967, 0.4682, -0.2420, 0.2660, 0.6882,\n", + " -0.9037, -0.2839, -0.9518, 0.0216, 0.0501, 0.0000, 0.5660, -1.0599,\n", + " 1.0936, 0.2811, -0.8411]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2396, -0.2714, -0.0515, -0.1740, -0.0364, 0.1399, 0.1730, 0.2631,\n", + " 0.1684, 0.2177, 0.2390, -0.1412, -0.1406, -0.2396, -0.1736, -0.2305,\n", + " -0.2273, -0.0946, -0.0628, -0.1150, -0.0247, -0.0497, -0.0511, 0.0107,\n", + " 0.0035, 0.0264, -0.0341, -0.0948, -0.1788, -0.1715, -0.2039, -0.1941,\n", + " -0.2471, -0.2857, -0.1578, -0.1429, -0.0087, -0.0039, 0.0241, 0.2932,\n", + " 0.2930, 0.2997, 0.2156]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00048410528688691556\n", + "Grad encoder.fc1.bias: 0.0015221335925161839\n", + "Grad encoder.encoder.0.weight: 0.00010153237963095307\n", + "Grad encoder.encoder.0.bias: 0.0012444586027413607\n", + "Grad encoder.encoder.2.weight: 8.316397725138813e-05\n", + "Grad encoder.encoder.2.bias: 0.0012421651044860482\n", + "Grad encoder.encoder.4.weight: 0.00026770398835651577\n", + "Grad encoder.encoder.4.bias: 0.0024032811634242535\n", + "Grad decoder.fc1.0.weight: 0.00010950630530714989\n", + "Grad decoder.fc1.0.bias: 0.0008166771149262786\n", + "Grad decoder.fc1.2.weight: 0.00010821330943144858\n", + "Grad decoder.fc1.2.bias: 0.0012000282295048237\n", + "Grad decoder.fc1.4.weight: 7.686124445172027e-05\n", + "Grad decoder.fc1.4.bias: 0.0005037521477788687\n", + "Grad decoder.fc2.weight: 0.00012902595335617661\n", + "Grad decoder.fc2.bias: 0.0018423296278342605\n", + "Grad _memory_unit.weight_ih_l0: 3.4190878068329766e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00010252775973640382\n", + "Grad _memory_unit.bias_hh_l0: 6.503302574856207e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.6584403056185693e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00023451223387382925\n", + "Grad _memory_unit.bias_hh_l1: 0.00012409890769049525\n", + "Data X Sample: tensor([[2.6054, 3.0048, 3.1946, 3.4044, 3.3927, 3.7141, 3.7854, 3.9111, 3.7347,\n", + " 3.9019, 4.0098, 3.8580, 3.7528, 3.5471, 3.5811, 3.5351, 3.5803, 3.4799,\n", + " 3.5787, 3.3270, 3.2805, 3.2226, 2.8725, 2.8306, 2.8528, 2.7921, 2.7492,\n", + " 2.7326, 2.6990, 2.9050, 2.8171, 2.8462, 2.9679, 2.1741, 3.5272, 4.0326,\n", + " 4.3125, 4.6565, 5.1595, 5.0416, 1.9186, 1.1152, 1.1318, 1.9777, 2.9692,\n", + " 3.1736, 2.0805, 3.2137]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0841, 1.2893, -1.1418, -0.5045, -0.8644, 0.3178, 0.6205, 1.2495,\n", + " -0.7282, -0.5430, -0.5974, 0.3597, 0.8668, -0.4081, 0.2917, -1.0299,\n", + " 0.0225, 0.8002, 0.7291, -0.1592, 0.2710, -0.6468, 0.1880, -0.6865,\n", + " 0.2903, 0.8231, -0.3610, -0.2829, 0.6598, -0.3792, -0.3030, -0.8977,\n", + " 0.2325, 0.1992, 0.3243, 0.2396, 0.9141, 0.0000, 0.5660, -0.9260,\n", + " 0.0656, -0.6159, -0.8661]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2027, -0.2343, -0.0444, -0.1864, -0.0830, 0.0918, 0.1224, 0.2148,\n", + " 0.1188, 0.1735, 0.1853, -0.1142, -0.1082, -0.1848, -0.1424, -0.1887,\n", + " -0.2025, -0.0875, -0.0576, -0.1040, -0.0190, -0.0455, -0.0452, 0.0038,\n", + " -0.0073, 0.0253, -0.0018, -0.0424, -0.1181, -0.1217, -0.1484, -0.1460,\n", + " -0.1886, -0.2282, -0.1172, -0.1163, -0.0020, -0.0022, 0.0029, 0.2518,\n", + " 0.2584, 0.2420, 0.1713]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00041933474130928516\n", + "Grad encoder.fc1.bias: 0.00027706375112757087\n", + "Grad encoder.encoder.0.weight: 7.123348768800497e-05\n", + "Grad encoder.encoder.0.bias: 0.0002461871481500566\n", + "Grad encoder.encoder.2.weight: 5.76178717892617e-05\n", + "Grad encoder.encoder.2.bias: 0.0003600846976041794\n", + "Grad encoder.encoder.4.weight: 0.00016323683666996658\n", + "Grad encoder.encoder.4.bias: 0.0012009715428575873\n", + "Grad decoder.fc1.0.weight: 7.04775084159337e-05\n", + "Grad decoder.fc1.0.bias: 0.0005121995345689356\n", + "Grad decoder.fc1.2.weight: 8.308159885928035e-05\n", + "Grad decoder.fc1.2.bias: 0.0005633956752717495\n", + "Grad decoder.fc1.4.weight: 9.780393884284422e-05\n", + "Grad decoder.fc1.4.bias: 0.0008289912366308272\n", + "Grad decoder.fc2.weight: 0.0001352200924884528\n", + "Grad decoder.fc2.bias: 0.0020408611744642258\n", + "Grad _memory_unit.weight_ih_l0: 1.001778400677722e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.7934500142000616e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.1262623704387806e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.7692186601343565e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00013576209312304854\n", + "Grad _memory_unit.bias_hh_l1: 7.049184932839125e-05\n", + "Data X Sample: tensor([[1.3918, 1.5424, 1.7190, 1.8454, 2.0933, 2.0523, 2.2201, 2.5539, 3.8885,\n", + " 4.3189, 4.3143, 4.3079, 4.2055, 4.0243, 3.9241, 3.8428, 3.8272, 3.6753,\n", + " 3.5291, 3.3531, 3.5160, 3.4568, 3.0195, 2.8630, 2.8790, 2.9828, 2.8744,\n", + " 3.0263, 3.1569, 3.1212, 3.2615, 3.4210, 3.8457, 2.7965, 4.5518, 4.8523,\n", + " 5.1168, 5.4251, 5.9581, 5.8445, 1.0213, 0.5935, 0.6386, 1.1969, 1.5777,\n", + " 1.8641, 1.2170, 1.8141]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6618, 0.5288, -0.7419, -0.7902, -1.0731, -0.6075, 0.3329, 0.2643,\n", + " -0.4149, 0.2219, 0.3628, -0.1879, 0.5845, -1.2757, -0.0547, -0.2490,\n", + " -0.1224, -0.2908, -0.2305, 0.1353, -0.1458, 0.2881, -0.6721, -0.4461,\n", + " 0.4341, 1.8230, -2.5006, -0.5074, -1.7277, -1.2699, -1.0512, 0.3013,\n", + " -0.3741, -1.3876, -1.3259, -1.0939, 0.0000, -0.8262, -0.2890, 0.5789,\n", + " 0.5808, 1.2106, 1.5894]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1976, -0.2348, -0.0447, -0.1734, -0.0607, 0.1048, 0.1284, 0.2160,\n", + " 0.1379, 0.1872, 0.1870, -0.1166, -0.1095, -0.1927, -0.1440, -0.2017,\n", + " -0.2111, -0.0895, -0.0497, -0.1030, -0.0163, -0.0460, -0.0510, -0.0024,\n", + " -0.0074, 0.0238, -0.0125, -0.0549, -0.1348, -0.1463, -0.1577, -0.1508,\n", + " -0.2085, -0.2319, -0.1319, -0.1145, -0.0033, 0.0044, 0.0065, 0.2457,\n", + " 0.2615, 0.2451, 0.1797]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000791414175182581\n", + "Grad encoder.fc1.bias: 0.00044772576075047255\n", + "Grad encoder.encoder.0.weight: 0.0001295852125622332\n", + "Grad encoder.encoder.0.bias: 0.0005012957262806594\n", + "Grad encoder.encoder.2.weight: 8.411069575231522e-05\n", + "Grad encoder.encoder.2.bias: 0.0005432539037428796\n", + "Grad encoder.encoder.4.weight: 0.00023698345466982573\n", + "Grad encoder.encoder.4.bias: 0.0016429114621132612\n", + "Grad decoder.fc1.0.weight: 6.33326853858307e-05\n", + "Grad decoder.fc1.0.bias: 0.0003749637398868799\n", + "Grad decoder.fc1.2.weight: 7.211068441392854e-05\n", + "Grad decoder.fc1.2.bias: 0.0007109802099876106\n", + "Grad decoder.fc1.4.weight: 7.774114783387631e-05\n", + "Grad decoder.fc1.4.bias: 0.0007045145612210035\n", + "Grad decoder.fc2.weight: 0.00016484492516610771\n", + "Grad decoder.fc2.bias: 0.0019787182100117207\n", + "Grad _memory_unit.weight_ih_l0: 1.7827716874307953e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.624607026926242e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.5567765987943858e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.891239536344074e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001405468792654574\n", + "Grad _memory_unit.bias_hh_l1: 7.227767491713166e-05\n", + "Data X Sample: tensor([[2.5110, 2.9582, 3.1735, 3.3410, 3.4559, 3.5741, 3.7161, 3.8103, 3.8275,\n", + " 3.9161, 4.0574, 3.9203, 4.0235, 3.7162, 3.6996, 3.7156, 3.7092, 3.6482,\n", + " 3.6530, 3.4553, 3.5283, 3.2639, 3.0339, 2.9756, 2.9278, 2.8104, 2.8531,\n", + " 2.8836, 2.7857, 2.9116, 2.9046, 2.9595, 3.0119, 2.1443, 3.6105, 3.9086,\n", + " 4.0863, 4.3623, 4.7918, 4.7125, 1.9997, 1.1232, 1.0913, 1.9777, 2.8265,\n", + " 3.0707, 2.2165, 2.9635]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.1328e-04, -4.2207e-02, -3.8804e-01, 2.7902e-01, -1.4055e-01,\n", + " -1.2501e-01, 4.4071e-01, 4.3926e-01, 4.7619e-01, 1.2986e-02,\n", + " 2.5376e-01, 6.6912e-02, 2.8191e+00, -3.5612e-02, -2.2187e-01,\n", + " -5.1218e-02, 8.3457e-01, 1.1284e+00, -1.3271e+00, 1.0861e+00,\n", + " 6.8258e-01, 7.0369e-01, -3.2667e+00, -4.3393e-01, -7.8269e-01,\n", + " 3.6706e+00, 1.4715e-01, 6.3599e-01, -2.0467e-01, 1.2156e-01,\n", + " 3.8278e-01, -3.1606e-01, -3.9666e-01, 4.9383e-01, 9.0582e-01,\n", + " -2.9734e-01, -7.4931e-01, -7.2314e-01, 1.1238e+00, 1.2718e-01,\n", + " 2.9256e-01, -9.8122e-02, 3.6703e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1726, -0.2112, -0.0411, -0.1793, -0.0875, 0.0753, 0.0959, 0.1849,\n", + " 0.1080, 0.1596, 0.1514, -0.0990, -0.0889, -0.1583, -0.1233, -0.1755,\n", + " -0.1959, -0.0843, -0.0460, -0.0960, -0.0116, -0.0433, -0.0479, -0.0082,\n", + " -0.0135, 0.0229, 0.0070, -0.0220, -0.0973, -0.1165, -0.1227, -0.1199,\n", + " -0.1731, -0.1954, -0.1072, -0.0983, 0.0003, 0.0068, -0.0070, 0.2178,\n", + " 0.2394, 0.2086, 0.1516]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001375829306198284\n", + "Grad encoder.fc1.bias: 0.00012212528963573277\n", + "Grad encoder.encoder.0.weight: 2.706175837374758e-05\n", + "Grad encoder.encoder.0.bias: 0.00011823285603895783\n", + "Grad encoder.encoder.2.weight: 2.310857962584123e-05\n", + "Grad encoder.encoder.2.bias: 0.00011690933024510741\n", + "Grad encoder.encoder.4.weight: 6.010782817611471e-05\n", + "Grad encoder.encoder.4.bias: 0.00024982818285934627\n", + "Grad decoder.fc1.0.weight: 2.4460476197418757e-05\n", + "Grad decoder.fc1.0.bias: 0.0001040813367580995\n", + "Grad decoder.fc1.2.weight: 3.227901834179647e-05\n", + "Grad decoder.fc1.2.bias: 0.00017301866319030523\n", + "Grad decoder.fc1.4.weight: 5.2432191296247765e-05\n", + "Grad decoder.fc1.4.bias: 0.0002796492772176862\n", + "Grad decoder.fc2.weight: 8.845351112540811e-05\n", + "Grad decoder.fc2.bias: 0.0016478715697303414\n", + "Grad _memory_unit.weight_ih_l0: 2.5915001060639042e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.9208039197546896e-06\n", + "Grad _memory_unit.bias_hh_l0: 2.665919510036474e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.5747131101306877e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.515089545340743e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.292256547458237e-05\n", + "Data X Sample: tensor([[1.6019, 1.8804, 2.0210, 2.1647, 2.3785, 2.5546, 2.6222, 2.7143, 2.8023,\n", + " 2.7645, 2.8234, 2.8433, 2.7119, 2.7319, 2.7514, 2.6407, 2.6070, 2.7159,\n", + " 2.6412, 2.6334, 2.5689, 2.5826, 2.5062, 2.5596, 2.5487, 2.6432, 2.5574,\n", + " 2.5654, 2.3937, 2.3646, 2.3517, 2.3240, 2.2770, 1.5241, 1.9634, 1.8996,\n", + " 1.8151, 1.6776, 1.6607, 1.6682, 1.2457, 0.7010, 0.7518, 1.3433, 2.0178,\n", + " 2.1672, 1.4686, 2.0877]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 2.0041e+00, 1.6437e+00, -2.4396e+00, 4.5477e-01, 4.2268e-01,\n", + " 7.0335e-01, 8.1294e-01, -4.7799e-01, -7.1714e-02, -3.3453e-02,\n", + " 5.2666e-02, 1.3072e+00, -3.2261e-01, 1.7744e-01, 1.2193e-01,\n", + " 9.1389e-01, -4.9446e-01, 4.6226e-03, -1.2725e+00, -9.4651e-01,\n", + " -7.6008e-01, 1.2062e-01, -9.3349e-01, -2.0231e+00, 6.5226e-02,\n", + " -9.1520e-01, -3.9251e-01, -7.4094e-01, 4.5669e-01, 1.9462e-01,\n", + " -1.6868e-01, -2.2970e-01, 3.9514e-01, 2.1727e-01, 2.4882e-01,\n", + " -5.6349e-04, -1.4301e-02, 5.4174e-01, -3.7300e-01, 5.7407e-01,\n", + " 7.8063e-01, 4.8283e-01, -1.1648e+00]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3283, 0.2550, 0.1558, 0.1788, 0.0274, -0.0353, -0.2898, -0.3564,\n", + " -0.1500, -0.1804, -0.2166, 0.1558, 0.1687, 0.2415, 0.1510, 0.2913,\n", + " 0.2328, 0.0926, 0.0970, 0.0868, 0.1261, 0.0503, 0.0713, 0.0568,\n", + " 0.0091, 0.0236, -0.0710, 0.0444, 0.1722, 0.2188, 0.2279, 0.1720,\n", + " 0.2370, 0.2408, 0.1618, 0.1709, -0.0185, 0.0135, -0.0273, -0.2427,\n", + " -0.2350, -0.2237, -0.2692]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0010223258286714554\n", + "Grad encoder.fc1.bias: 0.0007511589210480452\n", + "Grad encoder.encoder.0.weight: 0.0001860090414993465\n", + "Grad encoder.encoder.0.bias: 0.0008189301006495953\n", + "Grad encoder.encoder.2.weight: 0.00018467709014657885\n", + "Grad encoder.encoder.2.bias: 0.0013143026735633612\n", + "Grad encoder.encoder.4.weight: 0.00045351515291258693\n", + "Grad encoder.encoder.4.bias: 0.0036072644870728254\n", + "Grad decoder.fc1.0.weight: 0.00014050223398953676\n", + "Grad decoder.fc1.0.bias: 0.0008436163188889623\n", + "Grad decoder.fc1.2.weight: 0.00011907605221495032\n", + "Grad decoder.fc1.2.bias: 0.001540796714834869\n", + "Grad decoder.fc1.4.weight: 7.536901102866977e-05\n", + "Grad decoder.fc1.4.bias: 0.000708382111042738\n", + "Grad decoder.fc2.weight: 0.00015509505465161055\n", + "Grad decoder.fc2.bias: 0.0021421676501631737\n", + "Grad _memory_unit.weight_ih_l0: 5.8611090935301036e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.737579239299521e-05\n", + "Grad _memory_unit.bias_hh_l0: 7.744543108856305e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.1492272935574874e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00030726625118404627\n", + "Grad _memory_unit.bias_hh_l1: 0.00016032451821956784\n", + "Data X Sample: tensor([[1.3292, 1.4725, 1.7055, 1.8126, 1.9619, 2.0375, 2.1615, 2.1692, 3.7762,\n", + " 4.2494, 4.2350, 4.0683, 4.0546, 3.7898, 3.7980, 3.6691, 3.5661, 3.6521,\n", + " 3.5787, 3.6060, 3.6436, 3.4216, 2.9954, 2.8497, 2.8321, 2.9175, 2.9623,\n", + " 3.0426, 2.9210, 3.1343, 3.2231, 3.2386, 3.7467, 2.7416, 4.4660, 4.9642,\n", + " 5.1817, 5.4039, 5.9771, 5.9097, 1.0166, 0.5915, 0.6063, 1.1424, 1.6570,\n", + " 1.7212, 1.2170, 1.7828]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5350, -1.1514, 0.8702, -0.7335, 1.3081, -0.8097, 0.3050, 0.5630,\n", + " 0.1016, 0.5978, 0.6327, -0.6449, 0.6095, -0.9369, -0.2913, -1.2454,\n", + " -1.3759, 1.8831, -1.1916, -0.3880, -0.7893, 0.3996, 0.2173, -2.3672,\n", + " 0.6115, 0.0073, 0.5707, 1.1109, -0.0856, 0.3459, 0.2859, -1.2536,\n", + " -1.1515, -0.7141, 0.3238, 0.1586, -0.6728, -0.4097, -0.3712, 0.5720,\n", + " 0.6834, 0.9007, 0.7100]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1549, -0.2012, -0.0411, -0.1619, -0.0656, 0.0812, 0.0914, 0.1744,\n", + " 0.1219, 0.1652, 0.1372, -0.0960, -0.0829, -0.1553, -0.1165, -0.1813,\n", + " -0.2010, -0.0847, -0.0338, -0.0916, -0.0068, -0.0440, -0.0548, -0.0197,\n", + " -0.0163, 0.0214, -0.0010, -0.0262, -0.1057, -0.1371, -0.1218, -0.1135,\n", + " -0.1860, -0.1855, -0.1167, -0.0898, -0.0008, 0.0166, -0.0068, 0.1971,\n", + " 0.2341, 0.1981, 0.1500]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0018671306315809488\n", + "Grad encoder.fc1.bias: 0.0017050898168236017\n", + "Grad encoder.encoder.0.weight: 0.00027439676341600716\n", + "Grad encoder.encoder.0.bias: 0.001424920978024602\n", + "Grad encoder.encoder.2.weight: 0.00018978083971887827\n", + "Grad encoder.encoder.2.bias: 0.0013937462354078889\n", + "Grad encoder.encoder.4.weight: 0.0004919068305753171\n", + "Grad encoder.encoder.4.bias: 0.0036382738035172224\n", + "Grad decoder.fc1.0.weight: 0.00014582151197828352\n", + "Grad decoder.fc1.0.bias: 0.0008637115824967623\n", + "Grad decoder.fc1.2.weight: 0.00011428041034378111\n", + "Grad decoder.fc1.2.bias: 0.001378049491904676\n", + "Grad decoder.fc1.4.weight: 8.667318616062403e-05\n", + "Grad decoder.fc1.4.bias: 0.0005356137407943606\n", + "Grad decoder.fc2.weight: 0.00015384453581646085\n", + "Grad decoder.fc2.bias: 0.001821670914068818\n", + "Grad _memory_unit.weight_ih_l0: 5.169782889424823e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00010221232514595613\n", + "Grad _memory_unit.bias_hh_l0: 7.386408833554015e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.0891660824418068e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.000287937989924103\n", + "Grad _memory_unit.bias_hh_l1: 0.00014855698100291193\n", + "Data X Sample: tensor([[1.5159, 1.8672, 2.2134, 2.4030, 2.4280, 2.5576, 2.7439, 2.7512, 2.8023,\n", + " 2.8988, 2.8614, 2.8940, 2.9095, 2.7510, 2.7186, 2.8650, 2.8460, 2.8474,\n", + " 2.8642, 2.8323, 2.8216, 2.8169, 2.7978, 2.5882, 2.4980, 2.3455, 2.2377,\n", + " 2.2310, 1.8872, 1.8636, 1.7463, 1.6469, 1.3772, 0.9543, 1.3138, 1.3596,\n", + " 1.3687, 1.5955, 1.8508, 1.8498, 1.3125, 0.7946, 0.8428, 1.5069, 2.2120,\n", + " 2.3102, 1.5910, 2.0955]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5700, 0.5367, -0.0762, 0.0084, 0.3817, -0.2250, 0.6207, 0.6315,\n", + " -0.3227, -0.3549, -0.4221, -0.7995, 0.3533, 0.3450, -1.4860, -0.7754,\n", + " -0.0160, 1.0422, -0.2425, 2.9668, 0.1816, 0.1995, 1.0710, 1.9323,\n", + " 0.4226, 0.2619, 0.2536, 0.3428, -0.0072, -0.4123, -0.0583, -0.3802,\n", + " 0.1959, 0.2837, 0.0525, 0.9192, 0.8233, 0.2770, -0.4768, 0.8402,\n", + " 0.3948, 0.9362, 1.2834]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2769, -0.3688, -0.1393, -0.2751, -0.1944, 0.0173, 0.1428, 0.3350,\n", + " 0.2664, 0.3498, 0.3313, -0.1381, -0.1242, -0.2367, -0.1881, -0.3577,\n", + " -0.3237, -0.1717, -0.0435, -0.1419, -0.0494, -0.0370, -0.0728, -0.0593,\n", + " -0.0254, 0.0457, 0.0890, 0.0289, -0.1170, -0.2133, -0.1745, -0.1986,\n", + " -0.2200, -0.2771, -0.1613, -0.1532, -0.0253, -0.0062, -0.0393, 0.4947,\n", + " 0.5471, 0.4374, 0.3198]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003346821467857808\n", + "Grad encoder.fc1.bias: 0.0005611178930848837\n", + "Grad encoder.encoder.0.weight: 6.062776446924545e-05\n", + "Grad encoder.encoder.0.bias: 0.000408133608289063\n", + "Grad encoder.encoder.2.weight: 6.253071478568017e-05\n", + "Grad encoder.encoder.2.bias: 0.0005428489530459046\n", + "Grad encoder.encoder.4.weight: 0.00015784980496391654\n", + "Grad encoder.encoder.4.bias: 0.0010333057725802064\n", + "Grad decoder.fc1.0.weight: 5.5466040066676214e-05\n", + "Grad decoder.fc1.0.bias: 0.0003669936559163034\n", + "Grad decoder.fc1.2.weight: 5.9828118537552655e-05\n", + "Grad decoder.fc1.2.bias: 0.0007175390492193401\n", + "Grad decoder.fc1.4.weight: 4.555061605060473e-05\n", + "Grad decoder.fc1.4.bias: 0.0004551964229904115\n", + "Grad decoder.fc2.weight: 8.835321932565421e-05\n", + "Grad decoder.fc2.bias: 0.0020339724142104387\n", + "Grad _memory_unit.weight_ih_l0: 1.9190030798199587e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.720653694472276e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.7449928893474862e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.299400178657379e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001221007842104882\n", + "Grad _memory_unit.bias_hh_l1: 6.375515658874065e-05\n", + "Data X Sample: tensor([[1.5255, 1.7143, 1.9158, 1.9723, 2.0694, 2.0729, 2.0183, 2.8903, 4.1155,\n", + " 4.2384, 4.1970, 4.4111, 4.2188, 3.9506, 3.8434, 3.8223, 3.7312, 3.5805,\n", + " 3.4919, 3.5260, 3.4939, 3.2057, 2.8146, 2.9642, 2.9748, 2.9514, 3.1941,\n", + " 3.2669, 3.1708, 3.3374, 3.3070, 3.4044, 3.9579, 2.8721, 4.4905, 4.7939,\n", + " 5.1758, 5.3959, 6.0405, 5.9296, 1.0977, 0.6970, 0.6690, 1.2630, 1.7918,\n", + " 1.7726, 1.2578, 1.7984]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1781, -0.4117, 0.9020, -0.5210, 0.7925, 0.9181, 0.1442, 0.1505,\n", + " -0.1468, -0.2404, 0.2276, -0.2539, 0.1656, 0.7270, -0.2388, -0.5320,\n", + " -0.3889, 0.4304, -0.6658, 0.6060, 4.4522, 0.7025, -0.6198, -0.8609,\n", + " 1.2030, 1.0101, -0.2227, -0.4593, -0.7298, -0.5063, -1.4086, -0.6695,\n", + " -0.4623, -1.2869, -0.5905, -0.1336, -0.6687, 0.0000, -0.4150, 0.0432,\n", + " 0.1072, 0.4044, 0.3985]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1524, -0.1930, -0.0429, -0.1726, -0.0890, 0.0611, 0.0785, 0.1690,\n", + " 0.0986, 0.1449, 0.1257, -0.0909, -0.0763, -0.1454, -0.1098, -0.1652,\n", + " -0.1927, -0.0837, -0.0429, -0.0912, -0.0070, -0.0417, -0.0512, -0.0161,\n", + " -0.0160, 0.0254, 0.0115, -0.0097, -0.0831, -0.1129, -0.1058, -0.1002,\n", + " -0.1649, -0.1736, -0.0972, -0.0880, 0.0021, 0.0144, -0.0118, 0.1958,\n", + " 0.2279, 0.1891, 0.1370]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007120277732610703\n", + "Grad encoder.fc1.bias: 0.0005026908474974334\n", + "Grad encoder.encoder.0.weight: 0.00011226156493648887\n", + "Grad encoder.encoder.0.bias: 0.0005616091657429934\n", + "Grad encoder.encoder.2.weight: 0.00012181363126728684\n", + "Grad encoder.encoder.2.bias: 0.001214187708683312\n", + "Grad encoder.encoder.4.weight: 0.0002909944741986692\n", + "Grad encoder.encoder.4.bias: 0.0027082134038209915\n", + "Grad decoder.fc1.0.weight: 0.00013987832062412053\n", + "Grad decoder.fc1.0.bias: 0.0010273209773004055\n", + "Grad decoder.fc1.2.weight: 0.00010082710650749505\n", + "Grad decoder.fc1.2.bias: 0.0019429890671744943\n", + "Grad decoder.fc1.4.weight: 9.52756599872373e-05\n", + "Grad decoder.fc1.4.bias: 0.0009824383305385709\n", + "Grad decoder.fc2.weight: 0.00016303679149132222\n", + "Grad decoder.fc2.bias: 0.0019553182646632195\n", + "Grad _memory_unit.weight_ih_l0: 5.547538603423163e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00018470149370841682\n", + "Grad _memory_unit.bias_hh_l0: 0.00011173645907547325\n", + "Grad _memory_unit.weight_ih_l1: 3.199471393600106e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0003608367114793509\n", + "Grad _memory_unit.bias_hh_l1: 0.0001947189448401332\n", + "Data X Sample: tensor([[1.5170, 1.6837, 1.8272, 1.8017, 2.0387, 2.0773, 2.1169, 2.0613, 3.2392,\n", + " 4.0030, 4.1589, 4.0722, 3.8593, 3.6944, 3.5937, 3.3423, 3.4419, 3.4180,\n", + " 3.4630, 3.3177, 3.2461, 3.3205, 3.0653, 2.7848, 2.7683, 2.8104, 2.7412,\n", + " 2.8958, 2.9557, 2.9935, 3.0236, 3.0922, 3.4937, 2.5585, 4.1449, 4.5483,\n", + " 4.9477, 5.1653, 5.7363, 5.6629, 1.1311, 0.6930, 0.7195, 1.1424, 1.7918,\n", + " 1.7155, 1.2714, 1.9001]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4665, -0.6768, 0.5826, -1.0270, -0.7665, -0.0620, 0.6996, 0.7060,\n", + " 0.5896, 0.5146, 0.5153, -0.1841, -0.3889, 0.0801, -0.7560, -1.0366,\n", + " -0.4866, 3.8064, -1.2326, -1.3009, -0.1076, 0.1586, -0.9868, -6.2998,\n", + " 1.0773, 0.2749, 0.7584, -0.0954, -0.8145, -0.0319, -0.6090, -0.1641,\n", + " -0.4848, -0.6556, 0.0215, -0.9250, -0.7493, 0.7996, 0.0382, 0.7801,\n", + " 0.9610, 0.7577, 0.1146]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1491, -0.1895, -0.0428, -0.1709, -0.0885, 0.0589, 0.0755, 0.1671,\n", + " 0.0966, 0.1418, 0.1212, -0.0902, -0.0747, -0.1444, -0.1081, -0.1644,\n", + " -0.1926, -0.0831, -0.0435, -0.0906, -0.0065, -0.0418, -0.0520, -0.0172,\n", + " -0.0164, 0.0252, 0.0121, -0.0089, -0.0811, -0.1125, -0.1032, -0.0972,\n", + " -0.1638, -0.1705, -0.0951, -0.0868, 0.0026, 0.0153, -0.0123, 0.1927,\n", + " 0.2268, 0.1866, 0.1347]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00044197606621310115\n", + "Grad encoder.fc1.bias: 0.000398762000259012\n", + "Grad encoder.encoder.0.weight: 6.625703099416569e-05\n", + "Grad encoder.encoder.0.bias: 0.00034425215562805533\n", + "Grad encoder.encoder.2.weight: 6.096879951655865e-05\n", + "Grad encoder.encoder.2.bias: 0.0005066109588369727\n", + "Grad encoder.encoder.4.weight: 0.00016567271086387336\n", + "Grad encoder.encoder.4.bias: 0.0011576919350773096\n", + "Grad decoder.fc1.0.weight: 7.276832911884412e-05\n", + "Grad decoder.fc1.0.bias: 0.0004707503248937428\n", + "Grad decoder.fc1.2.weight: 8.370634895982221e-05\n", + "Grad decoder.fc1.2.bias: 0.0006701797246932983\n", + "Grad decoder.fc1.4.weight: 7.836458098609e-05\n", + "Grad decoder.fc1.4.bias: 0.0005357132758945227\n", + "Grad decoder.fc2.weight: 0.00011180623550899327\n", + "Grad decoder.fc2.bias: 0.001959336455911398\n", + "Grad _memory_unit.weight_ih_l0: 2.1482061129063368e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.81439710711129e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.297301736893132e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.082991709874477e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00012145098298788071\n", + "Grad _memory_unit.bias_hh_l1: 6.440345896407962e-05\n", + "Data X Sample: tensor([[2.5831, 3.0776, 3.1916, 3.2055, 3.2049, 3.5830, 3.7531, 3.7364, 3.8495,\n", + " 4.0141, 4.0352, 4.0703, 3.7972, 3.5689, 3.7097, 3.6527, 3.5693, 3.4896,\n", + " 3.5271, 3.3865, 3.2289, 3.1567, 3.0653, 2.8020, 2.7627, 2.7686, 2.8584,\n", + " 2.8387, 2.7857, 2.8133, 2.7471, 2.8075, 3.0339, 2.0986, 3.6841, 4.1664,\n", + " 4.1945, 4.8288, 5.3750, 5.2544, 1.9902, 1.1550, 1.1924, 1.9346, 2.9771,\n", + " 2.9506, 1.9241, 2.7680]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0643, -0.2178, -1.0660, -0.8176, 0.2962, 1.1915, 0.2499, 0.1164,\n", + " 0.2691, 0.2601, 0.2930, -0.0907, -0.5369, -0.7588, -0.6392, -0.3383,\n", + " -0.5534, 0.7211, -0.6937, -0.2319, 1.7573, 4.4226, 1.0223, -0.3392,\n", + " -0.4732, 0.0237, -0.8646, 0.1087, -0.0121, -0.0066, 0.3619, -1.2313,\n", + " -0.1672, -0.3739, 0.3792, -0.3260, -0.5148, -0.3495, 1.0291, 0.4112,\n", + " 0.6252, 0.5093, -0.3305]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1493, -0.1884, -0.0430, -0.1704, -0.0881, 0.0582, 0.0756, 0.1688,\n", + " 0.0959, 0.1402, 0.1208, -0.0909, -0.0750, -0.1465, -0.1084, -0.1653,\n", + " -0.1934, -0.0824, -0.0458, -0.0908, -0.0072, -0.0420, -0.0527, -0.0167,\n", + " -0.0157, 0.0253, 0.0116, -0.0104, -0.0811, -0.1133, -0.1036, -0.0968,\n", + " -0.1646, -0.1713, -0.0936, -0.0880, 0.0030, 0.0159, -0.0118, 0.1938,\n", + " 0.2277, 0.1879, 0.1350]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00021878094412386417\n", + "Grad encoder.fc1.bias: 0.000502159702591598\n", + "Grad encoder.encoder.0.weight: 4.630595867638476e-05\n", + "Grad encoder.encoder.0.bias: 0.00038997636875137687\n", + "Grad encoder.encoder.2.weight: 3.580547127057798e-05\n", + "Grad encoder.encoder.2.bias: 0.0003417756233830005\n", + "Grad encoder.encoder.4.weight: 0.00011239726154599339\n", + "Grad encoder.encoder.4.bias: 0.001081300200894475\n", + "Grad decoder.fc1.0.weight: 4.963044557371177e-05\n", + "Grad decoder.fc1.0.bias: 0.0003450301301199943\n", + "Grad decoder.fc1.2.weight: 6.91650784574449e-05\n", + "Grad decoder.fc1.2.bias: 0.00040890765376389027\n", + "Grad decoder.fc1.4.weight: 7.518363418057561e-05\n", + "Grad decoder.fc1.4.bias: 0.0005330059211701155\n", + "Grad decoder.fc2.weight: 0.00010659794497769326\n", + "Grad decoder.fc2.bias: 0.0022887408267706633\n", + "Grad _memory_unit.weight_ih_l0: 6.746812232449884e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.4995686291949823e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.8729846487985924e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.3909461762959836e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.404388063354418e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.39367831859272e-05\n", + "Data X Sample: tensor([[1.4746, 1.6284, 1.8798, 1.7864, 2.0011, 2.0316, 2.1615, 2.0471, 2.8999,\n", + " 3.8356, 4.0574, 4.0664, 3.9015, 3.6644, 3.5634, 3.5078, 3.5520, 3.3658,\n", + " 3.3619, 3.2564, 3.2952, 3.2042, 2.8436, 2.7886, 2.7627, 2.8208, 2.8531,\n", + " 2.9039, 2.8517, 3.0262, 3.0271, 3.0894, 3.4871, 2.5746, 4.1964, 4.5604,\n", + " 4.7510, 5.2157, 5.7616, 5.5863, 1.1359, 0.6373, 0.7457, 1.1797, 1.7799,\n", + " 1.7155, 1.2034, 1.6108]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4681, 0.1414, 0.4925, 0.1191, 0.9615, 0.0413, 0.0987, -0.0903,\n", + " -0.1508, 0.1171, -0.5324, -0.5146, -0.0580, 0.8486, 0.5173, 0.2482,\n", + " 0.3857, 0.3042, -0.5406, -2.2438, 0.4277, 0.7890, 0.2509, -1.5375,\n", + " -0.0775, -0.6940, -1.2418, -1.8505, -1.4046, -0.5162, -0.3722, -0.2473,\n", + " -0.0316, 0.3838, -0.0676, -0.4155, 0.0000, 0.0000, -0.7468, -0.4367,\n", + " -0.5782, -0.7553, 0.0055]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1631, -0.1960, -0.0469, -0.1750, -0.0884, 0.0625, 0.0869, 0.1847,\n", + " 0.0994, 0.1439, 0.1350, -0.0985, -0.0822, -0.1616, -0.1161, -0.1720,\n", + " -0.1981, -0.0844, -0.0544, -0.0939, -0.0108, -0.0415, -0.0536, -0.0121,\n", + " -0.0118, 0.0270, 0.0084, -0.0204, -0.0882, -0.1172, -0.1144, -0.1059,\n", + " -0.1725, -0.1859, -0.0952, -0.0969, 0.0049, 0.0134, -0.0077, 0.2105,\n", + " 0.2380, 0.2040, 0.1443]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00011118654947495088\n", + "Grad encoder.fc1.bias: 0.0005295309238135815\n", + "Grad encoder.encoder.0.weight: 2.7493328161654063e-05\n", + "Grad encoder.encoder.0.bias: 0.0005462264525704086\n", + "Grad encoder.encoder.2.weight: 2.6270779926562682e-05\n", + "Grad encoder.encoder.2.bias: 0.00044736231211572886\n", + "Grad encoder.encoder.4.weight: 9.677848720457405e-05\n", + "Grad encoder.encoder.4.bias: 0.0010878030443564057\n", + "Grad decoder.fc1.0.weight: 4.4738939322996885e-05\n", + "Grad decoder.fc1.0.bias: 0.0003389579360373318\n", + "Grad decoder.fc1.2.weight: 5.03926639794372e-05\n", + "Grad decoder.fc1.2.bias: 0.0003245864063501358\n", + "Grad decoder.fc1.4.weight: 5.409813456935808e-05\n", + "Grad decoder.fc1.4.bias: 0.0004009655676782131\n", + "Grad decoder.fc2.weight: 0.00012000111019005999\n", + "Grad decoder.fc2.bias: 0.0020467708818614483\n", + "Grad _memory_unit.weight_ih_l0: 1.0255030247208197e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.109947622055188e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.1792478946736082e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.001907200290589e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.150118421530351e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.799215093953535e-05\n", + "Data X Sample: tensor([[ 0.0000, 0.0087, 0.0195, 0.0262, 0.0051, 0.0162, 0.0139, 0.0114,\n", + " 0.0439, 0.0174, 0.0254, 0.0312, 0.0311, 0.0245, 0.0277, 0.0178,\n", + " -0.1148, -0.1180, -0.1693, -0.1265, -0.1374, -0.0919, -0.1470, -0.1260,\n", + " -0.1070, -0.1985, -0.1998, -0.3548, -0.0555, -0.0622, -0.0910, -0.0497,\n", + " -0.0044, -0.0412, 0.0025, 0.0146, 0.0059, -0.0292, -0.0380, -0.0113,\n", + " 0.0334, 0.0060, -0.0101, -0.0057, 0.0198, 0.0229, 0.0204, 0.0078]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.6165, 0.4426, -0.7540, 1.6932, -1.0072, -2.0044, -0.9222, -0.5919,\n", + " -1.2051, -0.8953, -0.8259, 2.6126, 0.8845, -0.5699, 1.3735, 0.9544,\n", + " 1.1132, 0.5180, 0.4084, 0.1237, 0.7093, -0.6821, 1.1556, 1.2419,\n", + " 0.1015, 0.4597, 0.2799, 1.5727, 1.1465, 0.9072, 0.9294, -1.2411,\n", + " 0.4456, 0.5278, -0.2015, 0.7736, -0.2492, -0.1310, 0.3478, -0.2967,\n", + " -0.3650, -0.4305, 0.8129]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.6322, 0.5500, 0.2228, 0.3848, 0.0394, -0.1847, -0.6532, -0.7710,\n", + " -0.3626, -0.4874, -0.4114, 0.3217, 0.2702, 0.4213, 0.2921, 0.4743,\n", + " 0.4262, 0.2019, 0.1724, 0.1776, 0.1628, 0.0511, 0.0699, 0.1353,\n", + " 0.0891, 0.0807, -0.0661, 0.2118, 0.4420, 0.5796, 0.5429, 0.3937,\n", + " 0.4735, 0.5531, 0.3028, 0.2862, -0.0067, 0.0613, 0.0044, -0.4972,\n", + " -0.4982, -0.4540, -0.4621]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000601736071985215\n", + "Grad encoder.fc1.bias: 0.00044352698023431003\n", + "Grad encoder.encoder.0.weight: 0.00011872491450048983\n", + "Grad encoder.encoder.0.bias: 0.0006996153388172388\n", + "Grad encoder.encoder.2.weight: 8.756785973673686e-05\n", + "Grad encoder.encoder.2.bias: 0.0009003669256344438\n", + "Grad encoder.encoder.4.weight: 0.0002762175281532109\n", + "Grad encoder.encoder.4.bias: 0.00242440914735198\n", + "Grad decoder.fc1.0.weight: 9.838406549533829e-05\n", + "Grad decoder.fc1.0.bias: 0.0005678490269929171\n", + "Grad decoder.fc1.2.weight: 8.84584806044586e-05\n", + "Grad decoder.fc1.2.bias: 0.001210235059261322\n", + "Grad decoder.fc1.4.weight: 7.591985922772437e-05\n", + "Grad decoder.fc1.4.bias: 0.0005835933843627572\n", + "Grad decoder.fc2.weight: 0.00013218297681305557\n", + "Grad decoder.fc2.bias: 0.0023141568526625633\n", + "Grad _memory_unit.weight_ih_l0: 4.129387525608763e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00010625223512761295\n", + "Grad _memory_unit.bias_hh_l0: 7.00991295161657e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.3013082682155073e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002356483309995383\n", + "Grad _memory_unit.bias_hh_l1: 0.00012763301492668688\n", + "Data X Sample: tensor([[1.7748, 1.9707, 2.0601, 2.1297, 2.2914, 2.3999, 2.4219, 2.5283, 2.5728,\n", + " 2.5449, 2.5474, 2.6038, 2.4700, 2.4811, 2.3983, 2.3563, 2.3397, 2.5108,\n", + " 2.5173, 2.5906, 2.5591, 2.7373, 2.6941, 2.7008, 2.7120, 2.7555, 2.6799,\n", + " 2.7612, 2.5429, 2.5808, 2.6876, 2.5450, 2.2000, 1.4875, 1.9854, 1.9336,\n", + " 1.7895, 1.7041, 1.6670, 1.6087, 1.3745, 0.7806, 0.7457, 1.3577, 2.0217,\n", + " 2.2129, 1.4822, 2.0877]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6004, 0.2819, -0.1375, 0.1950, 0.7151, -0.5466, -0.4023, -0.2421,\n", + " -0.4422, -0.7849, -0.6917, 1.4654, -0.6189, 1.8836, 0.7422, 0.3825,\n", + " 0.7643, 0.3359, 0.1132, -0.2130, 0.0340, 0.0413, 0.4738, -0.2228,\n", + " -0.0674, 0.2675, 0.7734, 1.3434, 0.2621, 0.7138, 0.1795, 0.9527,\n", + " 0.7387, 1.2006, 0.9955, 0.0753, 0.4796, -0.3886, -0.5988, -0.3783,\n", + " -0.3191, -0.3480, 0.1327]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4971, 0.4746, 0.2017, 0.3485, 0.1350, -0.0715, -0.4122, -0.5046,\n", + " -0.2440, -0.3456, -0.3328, 0.2170, 0.2342, 0.2959, 0.2338, 0.4422,\n", + " 0.3626, 0.1148, 0.0771, 0.1219, 0.1543, 0.0595, 0.0834, 0.0812,\n", + " 0.0811, 0.0407, -0.1200, 0.0275, 0.2544, 0.3372, 0.3449, 0.2537,\n", + " 0.3664, 0.3906, 0.2808, 0.2679, -0.0046, 0.0398, -0.0255, -0.3530,\n", + " -0.3811, -0.3469, -0.4327]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00012913558748550713\n", + "Grad encoder.fc1.bias: 7.479292253265157e-05\n", + "Grad encoder.encoder.0.weight: 3.980968176620081e-05\n", + "Grad encoder.encoder.0.bias: 0.00010869924881262705\n", + "Grad encoder.encoder.2.weight: 2.9400940547930077e-05\n", + "Grad encoder.encoder.2.bias: 0.00010129803558811545\n", + "Grad encoder.encoder.4.weight: 7.77832101448439e-05\n", + "Grad encoder.encoder.4.bias: 0.00029359245672822\n", + "Grad decoder.fc1.0.weight: 2.2957292458158918e-05\n", + "Grad decoder.fc1.0.bias: 8.104611333692446e-05\n", + "Grad decoder.fc1.2.weight: 4.0721544792177156e-05\n", + "Grad decoder.fc1.2.bias: 0.00022613024339079857\n", + "Grad decoder.fc1.4.weight: 4.740451549878344e-05\n", + "Grad decoder.fc1.4.bias: 0.00029658275889232755\n", + "Grad decoder.fc2.weight: 7.891335553722456e-05\n", + "Grad decoder.fc2.bias: 0.0020574680529534817\n", + "Grad _memory_unit.weight_ih_l0: 1.9151079868606757e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.972013473685365e-06\n", + "Grad _memory_unit.bias_hh_l0: 2.392877377133118e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.0005801414081361e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.8925833501270972e-05\n", + "Grad _memory_unit.bias_hh_l1: 9.783403584151529e-06\n", + "Data X Sample: tensor([[2.0357, 1.7099, 2.0135, 2.1384, 2.1855, 2.1495, 2.1693, 4.0516, 4.1692,\n", + " 4.2336, 4.3397, 4.2572, 4.0901, 3.8988, 3.7854, 3.7307, 3.6385, 3.6811,\n", + " 3.5766, 3.4163, 3.3958, 3.2777, 2.9183, 2.7581, 2.8021, 2.7895, 2.7812,\n", + " 2.9039, 2.8135, 3.0229, 2.9361, 3.0535, 3.4123, 2.5379, 4.1743, 4.6747,\n", + " 4.8080, 5.2342, 5.9898, 5.8275, 1.1693, 0.6831, 0.6831, 1.3060, 1.8751,\n", + " 2.1215, 1.3938, 2.0017]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2508, 0.8566, 2.3359, 0.4164, 0.4380, 0.6030, 0.1606, -0.1244,\n", + " -0.6150, -0.0675, 0.1942, 0.1051, -1.7512, 0.8715, 1.4878, 0.1113,\n", + " 0.6473, 1.2719, -0.4110, -0.6084, -0.9593, -0.0095, -0.6793, -1.3139,\n", + " -1.1448, -1.8400, -0.1214, 0.3999, 0.0902, -0.0830, -0.5025, 0.2480,\n", + " -0.0715, -0.6533, 0.5002, 0.4000, -0.3357, -0.0911, 0.2630, -0.1341,\n", + " -0.3725, -0.0038, -0.0235]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1887, -0.2110, -0.0553, -0.1834, -0.0878, 0.0701, 0.1093, 0.2171,\n", + " 0.1057, 0.1509, 0.1628, -0.1144, -0.0981, -0.1917, -0.1285, -0.1873,\n", + " -0.2080, -0.0868, -0.0716, -0.0988, -0.0171, -0.0409, -0.0527, -0.0053,\n", + " -0.0039, 0.0288, 0.0007, -0.0397, -0.1034, -0.1247, -0.1346, -0.1239,\n", + " -0.1889, -0.2130, -0.0978, -0.1136, 0.0048, 0.0122, 0.0023, 0.2426,\n", + " 0.2586, 0.2354, 0.1617]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 9.265574044547975e-05\n", + "Grad encoder.fc1.bias: 5.765833702753298e-05\n", + "Grad encoder.encoder.0.weight: 2.2489992261398584e-05\n", + "Grad encoder.encoder.0.bias: 7.062425720505416e-05\n", + "Grad encoder.encoder.2.weight: 1.5467994671780616e-05\n", + "Grad encoder.encoder.2.bias: 7.927691331133246e-05\n", + "Grad encoder.encoder.4.weight: 4.104296021978371e-05\n", + "Grad encoder.encoder.4.bias: 0.00017520364781375974\n", + "Grad decoder.fc1.0.weight: 1.2210415661684237e-05\n", + "Grad decoder.fc1.0.bias: 7.653525972273201e-05\n", + "Grad decoder.fc1.2.weight: 1.3325056897883769e-05\n", + "Grad decoder.fc1.2.bias: 8.775859896559268e-05\n", + "Grad decoder.fc1.4.weight: 1.5513993275817484e-05\n", + "Grad decoder.fc1.4.bias: 0.00013872224371880293\n", + "Grad decoder.fc2.weight: 6.964593922020867e-05\n", + "Grad decoder.fc2.bias: 0.0016212468035519123\n", + "Grad _memory_unit.weight_ih_l0: 8.238783379965753e-07\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.455400019447552e-06\n", + "Grad _memory_unit.bias_hh_l0: 1.8534686887505814e-06\n", + "Grad _memory_unit.weight_ih_l1: 6.647441068707849e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.2002388757537119e-05\n", + "Grad _memory_unit.bias_hh_l1: 6.1009031924186274e-06\n", + "Data X Sample: tensor([[2.0251, 2.4440, 2.7633, 2.9693, 3.1383, 3.2780, 3.3941, 3.2183, 3.3027,\n", + " 3.2716, 3.2770, 3.3847, 3.2335, 3.2227, 3.0364, 3.2370, 3.1762, 3.2942,\n", + " 3.3164, 3.3456, 3.1283, 3.1093, 2.9231, 2.8039, 2.6369, 2.6276, 2.5361,\n", + " 2.5899, 2.1405, 2.2500, 2.1732, 2.2991, 2.0922, 1.3617, 1.9634, 2.2960,\n", + " 2.5289, 2.8146, 3.0551, 3.0414, 1.7181, 1.0435, 1.0125, 1.6820, 2.4063,\n", + " 2.8420, 1.9513, 2.5960]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0193, -0.0794, 0.2778, -0.5829, 0.3107, -0.4519, 0.8038, 0.4496,\n", + " -0.4988, -0.3904, -0.3833, 0.8465, -0.3790, -0.0871, -1.1259, 0.3775,\n", + " -0.4317, -1.0906, 0.7555, 1.3952, 1.5299, 0.2063, -0.2144, -0.5707,\n", + " -0.1684, 1.2657, -0.4651, -0.4962, 1.6087, -0.3965, 0.9138, 0.1062,\n", + " -0.7610, 0.1836, 0.3476, 0.8308, -0.0333, 0.2770, 0.7285, 0.3127,\n", + " -1.3349, -0.9156, 0.5619]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1644, -0.1945, -0.0501, -0.1736, -0.0860, 0.0605, 0.0899, 0.1927,\n", + " 0.0990, 0.1417, 0.1366, -0.1028, -0.0879, -0.1699, -0.1154, -0.1791,\n", + " -0.2008, -0.0821, -0.0607, -0.0929, -0.0123, -0.0429, -0.0519, -0.0147,\n", + " -0.0099, 0.0251, 0.0068, -0.0248, -0.0904, -0.1198, -0.1170, -0.1071,\n", + " -0.1768, -0.1879, -0.0917, -0.0999, 0.0016, 0.0173, -0.0032, 0.2153,\n", + " 0.2430, 0.2103, 0.1455]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00037975452141836286\n", + "Grad encoder.fc1.bias: 0.00020519897225312889\n", + "Grad encoder.encoder.0.weight: 9.257557394448668e-05\n", + "Grad encoder.encoder.0.bias: 0.00028049421962350607\n", + "Grad encoder.encoder.2.weight: 6.465750630013645e-05\n", + "Grad encoder.encoder.2.bias: 0.0003182839136570692\n", + "Grad encoder.encoder.4.weight: 0.00016736866382416338\n", + "Grad encoder.encoder.4.bias: 0.0006487339269369841\n", + "Grad decoder.fc1.0.weight: 5.2410276111913845e-05\n", + "Grad decoder.fc1.0.bias: 0.0003066663630306721\n", + "Grad decoder.fc1.2.weight: 5.250579124549404e-05\n", + "Grad decoder.fc1.2.bias: 0.00030739398789592087\n", + "Grad decoder.fc1.4.weight: 5.267693268251605e-05\n", + "Grad decoder.fc1.4.bias: 0.00033257354516536\n", + "Grad decoder.fc2.weight: 9.078691073227674e-05\n", + "Grad decoder.fc2.bias: 0.0019999274518340826\n", + "Grad _memory_unit.weight_ih_l0: 3.940748229069868e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.5340274330810644e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.55073994898703e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.7112591851619072e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.359753802418709e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.2132324374979362e-05\n", + "Data X Sample: tensor([[1.4045, 1.5104, 1.8107, 1.9132, 1.9772, 2.1907, 2.2740, 2.0883, 3.5419,\n", + " 4.0851, 4.1526, 4.1462, 3.8992, 3.7434, 3.7299, 3.6938, 3.6353, 3.6095,\n", + " 3.6654, 3.6171, 3.5037, 3.3787, 2.9207, 2.8707, 2.9804, 3.0141, 3.1195,\n", + " 3.2098, 3.1639, 3.3046, 3.3665, 3.4569, 3.7885, 2.8446, 4.5273, 5.0566,\n", + " 4.9968, 5.6079, 6.1800, 5.8502, 1.1025, 0.6572, 0.6710, 1.1711, 1.7006,\n", + " 1.8813, 1.2714, 1.8766]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5989, -0.1549, -1.1716, -0.6364, 0.6225, 1.6749, 0.1332, 0.6345,\n", + " 0.4653, 0.7485, 0.8978, -0.8080, -0.3248, -1.5766, 0.6874, -1.4729,\n", + " 0.6767, -0.6879, 0.6996, -1.6215, -0.1099, -1.0057, 1.3177, 0.2681,\n", + " 2.0533, 1.1694, -0.4611, -1.2111, -0.4250, -0.6799, -0.8259, -0.4758,\n", + " -0.8264, -0.9405, 0.5169, 0.3488, 0.0000, 0.3075, 0.0000, 0.8622,\n", + " 0.8637, 0.8669, 1.0853]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2111, -0.2238, -0.0618, -0.1891, -0.0874, 0.0766, 0.1284, 0.2424,\n", + " 0.1111, 0.1570, 0.1845, -0.1268, -0.1103, -0.2145, -0.1384, -0.1993,\n", + " -0.2147, -0.0897, -0.0830, -0.1025, -0.0236, -0.0414, -0.0518, -0.0012,\n", + " 0.0028, 0.0312, -0.0048, -0.0542, -0.1152, -0.1305, -0.1515, -0.1373,\n", + " -0.2018, -0.2346, -0.1014, -0.1268, 0.0035, 0.0093, 0.0098, 0.2677,\n", + " 0.2738, 0.2603, 0.1756]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00032135110814124346\n", + "Grad encoder.fc1.bias: 0.00020290404791012406\n", + "Grad encoder.encoder.0.weight: 7.729552453383803e-05\n", + "Grad encoder.encoder.0.bias: 0.0002908125752583146\n", + "Grad encoder.encoder.2.weight: 5.2299634262453765e-05\n", + "Grad encoder.encoder.2.bias: 0.00029005028773099184\n", + "Grad encoder.encoder.4.weight: 0.00014053971972316504\n", + "Grad encoder.encoder.4.bias: 0.0008313198923133314\n", + "Grad decoder.fc1.0.weight: 4.345085108070634e-05\n", + "Grad decoder.fc1.0.bias: 0.00022195899509824812\n", + "Grad decoder.fc1.2.weight: 6.152832065708935e-05\n", + "Grad decoder.fc1.2.bias: 0.00032163813011720777\n", + "Grad decoder.fc1.4.weight: 7.705697498749942e-05\n", + "Grad decoder.fc1.4.bias: 0.0004909838316962123\n", + "Grad decoder.fc2.weight: 0.00011019027442671359\n", + "Grad decoder.fc2.bias: 0.002677569165825844\n", + "Grad _memory_unit.weight_ih_l0: 3.6347450986795593e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.712573955766857e-06\n", + "Grad _memory_unit.bias_hh_l0: 5.766654794570059e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.059373855445301e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.217547393636778e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.153483364963904e-05\n", + "Data X Sample: tensor([[1.3939, 1.3662, 1.5823, 1.8870, 1.9499, 1.9020, 2.0583, 2.1550, 3.6005,\n", + " 4.0662, 4.0669, 4.2007, 3.9569, 3.6535, 3.7274, 3.6897, 3.6432, 3.5051,\n", + " 3.4837, 3.5242, 3.5111, 3.2180, 2.8050, 2.8268, 2.8040, 2.9776, 2.9597,\n", + " 3.0263, 3.2298, 3.1147, 3.4050, 3.2856, 3.6983, 2.7576, 4.4930, 4.7283,\n", + " 5.0067, 5.4807, 5.8757, 5.8587, 0.9307, 0.5676, 0.5679, 1.0448, 1.6372,\n", + " 1.8070, 1.2306, 1.7906]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5023, 0.0449, 0.5480, 0.4452, 0.5231, 0.8687, -0.2940, -0.2452,\n", + " 0.2363, -0.5039, -0.1800, -0.4172, -0.4216, 0.3049, 0.7910, 0.2403,\n", + " -0.1770, 0.2042, 0.2340, 0.1839, 0.3648, -0.4074, 0.4248, -0.0380,\n", + " -0.3738, 0.9244, -1.6614, -1.2124, -0.7785, -0.1584, -0.3737, -0.4981,\n", + " -0.5642, -0.0821, -1.0792, 0.1793, -0.5073, 0.4193, -0.9104, -0.2531,\n", + " -0.2131, -1.5339, -0.6768]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2284, -0.2346, -0.0667, -0.1950, -0.0882, 0.0818, 0.1431, 0.2611,\n", + " 0.1156, 0.1626, 0.2015, -0.1355, -0.1191, -0.2309, -0.1461, -0.2079,\n", + " -0.2199, -0.0920, -0.0896, -0.1051, -0.0285, -0.0413, -0.0513, 0.0027,\n", + " 0.0085, 0.0331, -0.0093, -0.0648, -0.1245, -0.1353, -0.1644, -0.1481,\n", + " -0.2112, -0.2513, -0.1043, -0.1370, 0.0038, 0.0068, 0.0151, 0.2866,\n", + " 0.2851, 0.2786, 0.1863]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004945716354995966\n", + "Grad encoder.fc1.bias: 0.00037385441828519106\n", + "Grad encoder.encoder.0.weight: 9.499380394117907e-05\n", + "Grad encoder.encoder.0.bias: 0.00036965333856642246\n", + "Grad encoder.encoder.2.weight: 6.56011761748232e-05\n", + "Grad encoder.encoder.2.bias: 0.00039258101605810225\n", + "Grad encoder.encoder.4.weight: 0.00016907624376472086\n", + "Grad encoder.encoder.4.bias: 0.0008767959661781788\n", + "Grad decoder.fc1.0.weight: 5.1745533710345626e-05\n", + "Grad decoder.fc1.0.bias: 0.0003361255512572825\n", + "Grad decoder.fc1.2.weight: 5.2402047003852203e-05\n", + "Grad decoder.fc1.2.bias: 0.00041106605203822255\n", + "Grad decoder.fc1.4.weight: 6.94542468409054e-05\n", + "Grad decoder.fc1.4.bias: 0.0006487495847977698\n", + "Grad decoder.fc2.weight: 0.00010474301234353334\n", + "Grad decoder.fc2.bias: 0.0022780646104365587\n", + "Grad _memory_unit.weight_ih_l0: 4.570758846966783e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.5268498827936128e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.228496310242917e-06\n", + "Grad _memory_unit.weight_ih_l1: 3.1826609756535618e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.4391752200899646e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.7469137421576306e-05\n", + "Data X Sample: tensor([[2.3434, 2.7659, 3.0248, 2.9649, 3.1161, 3.1970, 3.4634, 3.4639, 3.5761,\n", + " 3.6871, 3.5688, 3.6379, 3.6995, 3.5471, 3.4323, 3.4490, 3.3712, 3.3561,\n", + " 3.3267, 3.2508, 3.1480, 3.1812, 2.8869, 2.8726, 2.7120, 2.7660, 2.6320,\n", + " 2.6021, 2.3729, 2.5317, 2.4602, 2.5174, 2.4443, 1.7324, 2.9218, 3.3054,\n", + " 3.5102, 3.7156, 4.1517, 4.0543, 1.8804, 0.9858, 1.0893, 1.7481, 2.5926,\n", + " 2.8420, 1.9445, 2.8306]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1591, 0.8567, -0.0862, -0.9329, -0.4842, -0.3309, 0.2982, 0.4101,\n", + " -0.5031, -0.4949, -0.5259, -0.5330, -0.4432, -0.5103, 0.6305, -0.5318,\n", + " 0.2202, -0.4940, -0.5634, 0.8659, -0.1007, 0.2415, 0.1245, 0.4949,\n", + " -0.1345, -0.2021, -0.3367, 0.9922, -0.6818, -0.6510, -1.1218, 0.1780,\n", + " 0.6908, -0.4246, 0.7449, 0.1925, -0.0333, -0.7806, 0.7285, 0.2327,\n", + " 2.3838, -0.9926, 1.1008]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2013, -0.2171, -0.0608, -0.1856, -0.0862, 0.0712, 0.1212, 0.2331,\n", + " 0.1084, 0.1530, 0.1717, -0.1210, -0.1081, -0.2049, -0.1314, -0.1982,\n", + " -0.2121, -0.0865, -0.0746, -0.0978, -0.0231, -0.0429, -0.0503, -0.0077,\n", + " 0.0016, 0.0289, -0.0037, -0.0478, -0.1106, -0.1309, -0.1443, -0.1289,\n", + " -0.1979, -0.2240, -0.0984, -0.1220, 0.0010, 0.0124, 0.0080, 0.2550,\n", + " 0.2667, 0.2492, 0.1684]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 8.317454921780154e-05\n", + "Grad encoder.fc1.bias: 0.00011122187424916774\n", + "Grad encoder.encoder.0.weight: 1.8838056348613463e-05\n", + "Grad encoder.encoder.0.bias: 0.00012310453166719526\n", + "Grad encoder.encoder.2.weight: 1.6574200344621204e-05\n", + "Grad encoder.encoder.2.bias: 0.00017195436521433294\n", + "Grad encoder.encoder.4.weight: 5.181100277695805e-05\n", + "Grad encoder.encoder.4.bias: 0.0005748859257437289\n", + "Grad decoder.fc1.0.weight: 2.8851743991253898e-05\n", + "Grad decoder.fc1.0.bias: 0.0002816342457663268\n", + "Grad decoder.fc1.2.weight: 4.122564132558182e-05\n", + "Grad decoder.fc1.2.bias: 0.00025882432237267494\n", + "Grad decoder.fc1.4.weight: 4.8436337237944826e-05\n", + "Grad decoder.fc1.4.bias: 0.0003704146365635097\n", + "Grad decoder.fc2.weight: 9.1245245130267e-05\n", + "Grad decoder.fc2.bias: 0.0021291496232151985\n", + "Grad _memory_unit.weight_ih_l0: 3.5107996154692955e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.3161686840467155e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.2383654393488541e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.5607091629353818e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.700327503494918e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.4435106499586254e-05\n", + "Data X Sample: tensor([[1.2316, 1.4186, 1.5327, 1.5831, 1.7689, 1.9506, 1.8981, 1.8341, 3.0854,\n", + " 3.7297, 4.0510, 3.9573, 3.7794, 3.5471, 3.3491, 3.4722, 3.4309, 3.4316,\n", + " 3.5209, 3.3791, 3.2216, 3.2118, 2.8725, 2.6779, 2.6651, 2.7085, 2.7332,\n", + " 2.7041, 2.7927, 2.8461, 2.8451, 2.9319, 3.3595, 2.4350, 3.9709, 4.1810,\n", + " 4.5386, 4.9162, 5.3496, 5.1267, 0.8973, 0.5596, 0.5174, 1.0362, 1.3835,\n", + " 1.5554, 0.9926, 1.5482]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5168, 0.0310, 0.7858, 0.6891, 0.5184, -0.5570, 0.1794, 0.0807,\n", + " -0.2041, -0.5139, -0.2079, -0.2994, 0.1417, 0.5736, 1.3344, -0.2249,\n", + " -0.5881, 0.1811, 0.5400, -0.7112, -0.5570, 0.9154, -1.5243, 0.5958,\n", + " 0.3731, -1.0033, 0.1681, -1.4411, -0.1160, 0.0919, -0.5488, 0.4879,\n", + " 0.6815, 0.4943, -0.6052, 0.4549, 0.9799, -0.7406, -0.2715, 0.1380,\n", + " 0.3789, -0.7077, -0.1816]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2523, -0.2487, -0.0738, -0.2030, -0.0879, 0.0888, 0.1627, 0.2867,\n", + " 0.1212, 0.1699, 0.2222, -0.1470, -0.1329, -0.2519, -0.1551, -0.2198,\n", + " -0.2275, -0.0937, -0.0976, -0.1065, -0.0358, -0.0414, -0.0512, 0.0066,\n", + " 0.0142, 0.0352, -0.0169, -0.0785, -0.1379, -0.1437, -0.1817, -0.1623,\n", + " -0.2257, -0.2758, -0.1085, -0.1511, 0.0029, 0.0039, 0.0227, 0.3108,\n", + " 0.2997, 0.3024, 0.2018]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003063296608161181\n", + "Grad encoder.fc1.bias: 0.00035570445470511913\n", + "Grad encoder.encoder.0.weight: 6.6823122324422e-05\n", + "Grad encoder.encoder.0.bias: 0.0003178724437020719\n", + "Grad encoder.encoder.2.weight: 6.043861503712833e-05\n", + "Grad encoder.encoder.2.bias: 0.00047710316721349955\n", + "Grad encoder.encoder.4.weight: 0.0001459233753848821\n", + "Grad encoder.encoder.4.bias: 0.0005245635402388871\n", + "Grad decoder.fc1.0.weight: 5.775416502729058e-05\n", + "Grad decoder.fc1.0.bias: 0.00039123103488236666\n", + "Grad decoder.fc1.2.weight: 5.6970748119056225e-05\n", + "Grad decoder.fc1.2.bias: 0.0004948701825924218\n", + "Grad decoder.fc1.4.weight: 4.639548933482729e-05\n", + "Grad decoder.fc1.4.bias: 0.00030266225803643465\n", + "Grad decoder.fc2.weight: 0.00010512407607166097\n", + "Grad decoder.fc2.bias: 0.0014734939904883504\n", + "Grad _memory_unit.weight_ih_l0: 1.2243249329912942e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.281993849668652e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.144159770978149e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.0810889408458024e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.414864376187325e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.061539948452264e-05\n", + "Data X Sample: tensor([[2.6542, 3.0601, 3.0954, 2.5626, 2.7200, 3.0732, 3.7916, 3.7038, 3.9788,\n", + " 3.8861, 4.0669, 4.1579, 3.8726, 3.6835, 3.7450, 3.5310, 3.4592, 3.5031,\n", + " 3.4630, 3.4739, 3.3492, 3.2869, 2.9640, 2.8287, 2.7664, 2.7059, 2.7013,\n", + " 2.7245, 2.7094, 2.8494, 2.7646, 2.8794, 3.0361, 2.2633, 3.8017, 4.1810,\n", + " 4.3852, 4.8155, 5.6222, 5.2515, 1.9950, 1.1192, 1.1398, 1.8514, 2.4657,\n", + " 2.4016, 1.6249, 2.1503]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.8772, -0.2997, -0.8882, -0.3513, -0.3664, 0.5786, 0.3524, 0.0759,\n", + " 1.0129, 0.1981, 0.3849, -0.3002, -0.2810, -0.6207, -1.1887, -0.9285,\n", + " -0.3470, -0.5967, -0.1241, -0.5958, 0.4612, 0.4760, 1.8439, 0.2376,\n", + " -0.5411, -1.3341, -0.3039, 0.1646, -0.0883, 0.0995, 0.5940, -0.1217,\n", + " 0.5083, -0.7039, -0.3920, -0.2880, 0.4852, 0.7916, -0.9264, 0.4945,\n", + " 0.4207, 0.2683, 0.3461]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2434, -0.2418, -0.0717, -0.1993, -0.0861, 0.0840, 0.1552, 0.2772,\n", + " 0.1182, 0.1662, 0.2105, -0.1423, -0.1298, -0.2427, -0.1494, -0.2168,\n", + " -0.2253, -0.0911, -0.0928, -0.1026, -0.0356, -0.0420, -0.0516, 0.0019,\n", + " 0.0108, 0.0333, -0.0155, -0.0724, -0.1341, -0.1429, -0.1754, -0.1554,\n", + " -0.2220, -0.2670, -0.1061, -0.1471, 0.0015, 0.0065, 0.0206, 0.2994,\n", + " 0.2931, 0.2924, 0.1962]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007614201167598367\n", + "Grad encoder.fc1.bias: 0.0007780886953696609\n", + "Grad encoder.encoder.0.weight: 0.00014168507186695933\n", + "Grad encoder.encoder.0.bias: 0.0008179484866559505\n", + "Grad encoder.encoder.2.weight: 0.00010450336412759498\n", + "Grad encoder.encoder.2.bias: 0.000818363216239959\n", + "Grad encoder.encoder.4.weight: 0.0003146065864712\n", + "Grad encoder.encoder.4.bias: 0.0021866606548428535\n", + "Grad decoder.fc1.0.weight: 0.00010756604751804844\n", + "Grad decoder.fc1.0.bias: 0.0006867535994388163\n", + "Grad decoder.fc1.2.weight: 9.181708446703851e-05\n", + "Grad decoder.fc1.2.bias: 0.0009916576091200113\n", + "Grad decoder.fc1.4.weight: 8.510846964782104e-05\n", + "Grad decoder.fc1.4.bias: 0.000889143324457109\n", + "Grad decoder.fc2.weight: 0.00016743720334488899\n", + "Grad decoder.fc2.bias: 0.0023813380394130945\n", + "Grad _memory_unit.weight_ih_l0: 2.5836647182586603e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.101167284417897e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.506950426730327e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.399374013999477e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001527851418359205\n", + "Grad _memory_unit.bias_hh_l1: 8.429079025518149e-05\n", + "Data X Sample: tensor([[ 0.0064, 0.0073, 0.0255, 0.0109, 0.0068, 0.0368, 0.0200, 0.0071,\n", + " 0.0317, 0.0300, 0.0412, 0.0292, 0.0266, 0.0164, 0.0101, 0.0178,\n", + " -0.1179, -0.1412, -0.1631, -0.1618, -0.1840, -0.1133, -0.1807, -0.1641,\n", + " -0.1389, -0.2978, -0.2531, -0.4854, -0.0520, -0.0688, -0.0700, -0.0525,\n", + " -0.0484, -0.0664, -0.0123, 0.0146, 0.0039, 0.0027, -0.0190, -0.0227,\n", + " -0.0048, 0.0020, 0.0061, 0.0000, 0.0277, 0.0515, -0.0408, 0.0313]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6502, 0.8127, 0.5308, 0.6623, -0.2477, 0.9170, -0.9162, -0.7829,\n", + " -0.7166, -0.5879, -0.4726, 1.6715, 2.3229, 2.1032, 0.4260, 0.3054,\n", + " 0.4248, 1.4931, 1.7376, 1.0038, -0.6548, -0.0252, 0.9754, 0.0649,\n", + " -1.7110, 0.2376, -0.3485, 0.7553, 0.8734, 1.1752, 1.0162, -0.3089,\n", + " 0.8190, 0.3707, -0.4042, -0.0183, 0.0540, -0.3178, -1.1206, -0.6076,\n", + " -0.3912, -0.3980, -0.4776]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4974, 0.4571, 0.1479, 0.3193, 0.0933, -0.1252, -0.4976, -0.5576,\n", + " -0.3242, -0.4020, -0.3613, 0.2483, 0.1711, 0.2950, 0.2125, 0.3170,\n", + " 0.2945, 0.1326, 0.1450, 0.1470, 0.1134, 0.0361, 0.0679, 0.0875,\n", + " 0.0808, 0.0338, -0.0656, 0.1020, 0.3033, 0.4251, 0.3908, 0.3106,\n", + " 0.3432, 0.4152, 0.2407, 0.2352, -0.0321, 0.0490, 0.0163, -0.3907,\n", + " -0.3742, -0.3311, -0.3787]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 5.734513251809403e-05\n", + "Grad encoder.fc1.bias: 7.519206701545045e-05\n", + "Grad encoder.encoder.0.weight: 1.46584370668279e-05\n", + "Grad encoder.encoder.0.bias: 7.477361941710114e-05\n", + "Grad encoder.encoder.2.weight: 1.7633552488405257e-05\n", + "Grad encoder.encoder.2.bias: 0.0001549942244309932\n", + "Grad encoder.encoder.4.weight: 4.764142431668006e-05\n", + "Grad encoder.encoder.4.bias: 0.000587293179705739\n", + "Grad decoder.fc1.0.weight: 3.0189918106771074e-05\n", + "Grad decoder.fc1.0.bias: 0.0002682118793018162\n", + "Grad decoder.fc1.2.weight: 3.2714615372242406e-05\n", + "Grad decoder.fc1.2.bias: 0.00021287862909957767\n", + "Grad decoder.fc1.4.weight: 2.78251500276383e-05\n", + "Grad decoder.fc1.4.bias: 0.00019672114285640419\n", + "Grad decoder.fc2.weight: 7.703772280365229e-05\n", + "Grad decoder.fc2.bias: 0.00202537071891129\n", + "Grad _memory_unit.weight_ih_l0: 4.046444246341707e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.0920844690408558e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.1211904165975284e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.4192793262045598e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.0450980527093634e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.064873089897446e-05\n", + "Data X Sample: tensor([[1.3207, 1.4099, 1.6709, 1.6705, 1.7518, 1.9462, 2.1508, 2.0570, 2.8779,\n", + " 3.9398, 4.1938, 4.0274, 3.9747, 3.8579, 3.6895, 3.3970, 3.4309, 3.3871,\n", + " 3.3453, 3.3493, 3.3222, 3.2960, 2.9207, 2.7924, 2.7495, 2.8235, 2.8291,\n", + " 2.8917, 2.9349, 2.9804, 3.1006, 3.1751, 3.4783, 2.5402, 4.2282, 4.5993,\n", + " 4.9634, 5.1680, 5.6729, 5.7963, 1.0166, 0.5835, 0.6103, 1.0735, 1.4747,\n", + " 1.6526, 1.0946, 1.6577]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2621, -0.5171, 0.0358, 0.0170, 0.1088, 0.1615, 0.2109, 0.4369,\n", + " 1.3546, 0.9656, 0.5534, -0.3335, -0.8387, -1.0469, -0.3339, -0.5783,\n", + " -1.2869, -0.8726, -0.7525, -0.7921, 0.1376, 0.6734, 3.8961, 0.6439,\n", + " 0.3015, -0.4373, -0.7834, -0.4016, -0.2092, 0.1091, -0.1446, -0.9126,\n", + " -0.6962, -0.8739, 0.5858, 0.4228, 0.9953, -0.0911, -0.7681, 0.9306,\n", + " 1.2830, 1.0179, 1.7444]], device='cuda:0')\n", + "Prediction Sample: tensor([[-2.8942e-01, -2.6973e-01, -8.4826e-02, -2.1509e-01, -8.6993e-02,\n", + " 9.7578e-02, 1.9120e-01, 3.2431e-01, 1.2923e-01, 1.8046e-01,\n", + " 2.5506e-01, -1.6454e-01, -1.5433e-01, -2.8361e-01, -1.7169e-01,\n", + " -2.3642e-01, -2.4218e-01, -9.4909e-02, -1.1266e-01, -1.0901e-01,\n", + " -5.0823e-02, -4.0623e-02, -5.3620e-02, 1.0215e-02, 2.0686e-02,\n", + " 3.6396e-02, -2.9442e-02, -9.9729e-02, -1.6072e-01, -1.5619e-01,\n", + " -2.1163e-01, -1.8345e-01, -2.4826e-01, -3.1496e-01, -1.1610e-01,\n", + " -1.7664e-01, 8.5841e-04, -1.6247e-04, 3.3079e-02, 3.4864e-01,\n", + " 3.2317e-01, 3.4139e-01, 2.2895e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00027754975599236786\n", + "Grad encoder.fc1.bias: 0.00016479901387356222\n", + "Grad encoder.encoder.0.weight: 7.062193617457524e-05\n", + "Grad encoder.encoder.0.bias: 0.00022616000205744058\n", + "Grad encoder.encoder.2.weight: 5.12247825099621e-05\n", + "Grad encoder.encoder.2.bias: 0.00028125697281211615\n", + "Grad encoder.encoder.4.weight: 0.00014123694563750178\n", + "Grad encoder.encoder.4.bias: 0.0009463615715503693\n", + "Grad decoder.fc1.0.weight: 4.6923323679948226e-05\n", + "Grad decoder.fc1.0.bias: 0.0002881907275877893\n", + "Grad decoder.fc1.2.weight: 6.343525456031784e-05\n", + "Grad decoder.fc1.2.bias: 0.0003571690176613629\n", + "Grad decoder.fc1.4.weight: 7.8396791650448e-05\n", + "Grad decoder.fc1.4.bias: 0.0005869345623068511\n", + "Grad decoder.fc2.weight: 8.595415420131758e-05\n", + "Grad decoder.fc2.bias: 0.0030943246092647314\n", + "Grad _memory_unit.weight_ih_l0: 5.016026079829317e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.8172924683312885e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.0419273166917264e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.6374580102128675e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.022361048962921e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.067535726586357e-05\n", + "Data X Sample: tensor([[1.3176, 1.4711, 1.6829, 1.8979, 1.8321, 1.9226, 1.9998, 2.0712, 2.9194,\n", + " 3.7155, 4.2192, 4.1774, 3.9303, 3.6698, 3.7198, 3.4312, 3.3979, 3.4219,\n", + " 3.5828, 3.2787, 3.2657, 3.2807, 2.8966, 2.7829, 2.7664, 2.8679, 2.9090,\n", + " 2.9121, 2.9904, 2.9967, 3.1391, 3.2414, 3.4431, 2.5151, 4.2601, 4.5945,\n", + " 4.8454, 5.1971, 5.8757, 5.6799, 1.0882, 0.5875, 0.5982, 1.1051, 1.6293,\n", + " 1.7726, 1.2374, 1.5638]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1529, 0.0895, -0.4106, -0.4293, -0.5144, 0.8776, -0.2807, -0.4021,\n", + " 0.1612, -0.1552, 0.0561, 0.4215, 0.2681, 1.4122, 1.0544, 1.2403,\n", + " -0.5615, -0.4538, -0.8541, 0.3024, 1.5653, -1.3737, -0.1444, 1.2884,\n", + " 0.9415, -0.1889, -0.3522, -0.1554, 0.1694, 0.7260, 0.5053, 0.6135,\n", + " 0.4687, 0.6203, 0.0832, 0.6663, 0.6904, -0.7406, 0.8448, -0.0643,\n", + " -0.2107, 0.2475, -0.9384]], device='cuda:0')\n", + "Prediction Sample: tensor([[-2.8238e-01, -2.6438e-01, -8.3313e-02, -2.1253e-01, -8.5600e-02,\n", + " 9.4317e-02, 1.8429e-01, 3.1590e-01, 1.2727e-01, 1.7724e-01,\n", + " 2.4754e-01, -1.6026e-01, -1.5239e-01, -2.7536e-01, -1.6885e-01,\n", + " -2.3351e-01, -2.4053e-01, -9.2217e-02, -1.0716e-01, -1.0564e-01,\n", + " -5.0633e-02, -4.0728e-02, -5.3582e-02, 5.4230e-03, 1.8035e-02,\n", + " 3.4263e-02, -3.0637e-02, -9.5332e-02, -1.5891e-01, -1.5553e-01,\n", + " -2.0780e-01, -1.7734e-01, -2.4572e-01, -3.0833e-01, -1.1584e-01,\n", + " -1.7438e-01, -9.0630e-05, 6.1050e-04, 2.9920e-02, 3.3978e-01,\n", + " 3.1784e-01, 3.3451e-01, 2.2576e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 8.213576802518219e-05\n", + "Grad encoder.fc1.bias: 4.6992110583232716e-05\n", + "Grad encoder.encoder.0.weight: 1.5461213479284197e-05\n", + "Grad encoder.encoder.0.bias: 5.013900954509154e-05\n", + "Grad encoder.encoder.2.weight: 1.9806999262073077e-05\n", + "Grad encoder.encoder.2.bias: 9.78104944806546e-05\n", + "Grad encoder.encoder.4.weight: 5.124281597090885e-05\n", + "Grad encoder.encoder.4.bias: 0.00022484560031443834\n", + "Grad decoder.fc1.0.weight: 2.73562254733406e-05\n", + "Grad decoder.fc1.0.bias: 0.00012095551937818527\n", + "Grad decoder.fc1.2.weight: 3.325831858091988e-05\n", + "Grad decoder.fc1.2.bias: 0.00019298959523439407\n", + "Grad decoder.fc1.4.weight: 3.596546230255626e-05\n", + "Grad decoder.fc1.4.bias: 0.00025918541359715164\n", + "Grad decoder.fc2.weight: 8.742200589040294e-05\n", + "Grad decoder.fc2.bias: 0.0020553406793624163\n", + "Grad _memory_unit.weight_ih_l0: 2.3482305095967604e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.712454367312603e-06\n", + "Grad _memory_unit.bias_hh_l0: 3.440816726651974e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.348220166619285e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.9983461243100464e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.0263884178129956e-05\n", + "Data X Sample: tensor([[1.5053, 1.6939, 1.8633, 1.9526, 1.9772, 2.0670, 2.0907, 2.1294, 3.9007,\n", + " 4.3158, 4.2287, 4.4383, 4.3498, 4.0761, 3.8106, 3.9071, 3.9246, 3.7623,\n", + " 3.4692, 3.7194, 3.6510, 3.6818, 3.2460, 2.9966, 2.8640, 3.0298, 2.9730,\n", + " 3.0345, 3.0043, 3.2260, 3.2825, 3.3270, 3.7445, 2.7851, 4.4635, 4.8523,\n", + " 5.3174, 5.5655, 5.9328, 5.9495, 1.1932, 0.6512, 0.6649, 1.2084, 1.8275,\n", + " 1.8584, 1.3054, 1.8297]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.5769, 0.4720, -0.6067, -0.1398, 0.3657, -1.0254, -0.5710, 0.6080,\n", + " -0.7542, -0.5832, -0.7170, -1.3970, 0.0100, -0.2725, -0.4335, 0.1333,\n", + " -1.2783, -0.0509, 0.2965, -1.0064, -0.3001, -0.4017, -0.2771, -0.2109,\n", + " 3.2098, -0.8101, -0.2850, 1.5256, 0.8937, -0.5495, -0.8901, -0.1244,\n", + " 0.1190, 0.4808, 0.1485, -0.6664, -0.8131, -0.4031, -0.2265, -0.0826,\n", + " -0.5650, 0.0135, -0.1971]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2852, -0.2652, -0.0840, -0.2134, -0.0848, 0.0953, 0.1851, 0.3173,\n", + " 0.1276, 0.1775, 0.2499, -0.1607, -0.1550, -0.2764, -0.1707, -0.2339,\n", + " -0.2432, -0.0914, -0.1065, -0.1042, -0.0527, -0.0402, -0.0538, 0.0042,\n", + " 0.0170, 0.0339, -0.0343, -0.0974, -0.1630, -0.1574, -0.2100, -0.1784,\n", + " -0.2483, -0.3113, -0.1179, -0.1775, -0.0012, 0.0007, 0.0285, 0.3417,\n", + " 0.3185, 0.3381, 0.2294]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00015458885172847658\n", + "Grad encoder.fc1.bias: 0.00029047319549135864\n", + "Grad encoder.encoder.0.weight: 3.210831346223131e-05\n", + "Grad encoder.encoder.0.bias: 0.0003344374126754701\n", + "Grad encoder.encoder.2.weight: 2.78431034530513e-05\n", + "Grad encoder.encoder.2.bias: 0.0004478422924876213\n", + "Grad encoder.encoder.4.weight: 8.31179422675632e-05\n", + "Grad encoder.encoder.4.bias: 0.0011943000135943294\n", + "Grad decoder.fc1.0.weight: 4.4683634769171476e-05\n", + "Grad decoder.fc1.0.bias: 0.0004627193557098508\n", + "Grad decoder.fc1.2.weight: 6.135379953775555e-05\n", + "Grad decoder.fc1.2.bias: 0.0003859630087390542\n", + "Grad decoder.fc1.4.weight: 6.024262256687507e-05\n", + "Grad decoder.fc1.4.bias: 0.00048447868903167546\n", + "Grad decoder.fc2.weight: 0.00011159384303027764\n", + "Grad decoder.fc2.bias: 0.0017623627791181207\n", + "Grad _memory_unit.weight_ih_l0: 4.980428911949275e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.615727473516017e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.8568876839708537e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.323769760754658e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.522608888801187e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.907891707262024e-05\n", + "Data X Sample: tensor([[ 0.0159, 0.0087, 0.0285, 0.0087, -0.0017, 0.0309, 0.0247, 0.0256,\n", + " 0.0342, 0.0363, 0.0508, 0.0058, 0.0200, 0.0055, 0.0126, 0.0137,\n", + " -0.1352, -0.1547, -0.1838, -0.1730, -0.1865, -0.1102, -0.2000, -0.1775,\n", + " -0.1577, -0.3108, -0.2957, -0.5384, -0.0902, -0.0688, -0.0840, -0.0636,\n", + " -0.0396, -0.0526, -0.0343, -0.0097, -0.0177, -0.0504, -0.0190, -0.0057,\n", + " 0.0095, -0.0179, -0.0081, -0.0287, 0.0000, 0.0229, 0.0408, -0.0235]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.6386, 0.0242, -1.1856, 1.0551, 0.2689, -0.6681, -0.8542, -0.6695,\n", + " 0.0164, -1.2116, -0.3662, 1.4654, 0.2647, 0.1995, -0.9054, 0.1193,\n", + " -0.5363, -1.2946, 1.1252, -0.3309, -0.1095, -0.5726, -1.1067, -0.2555,\n", + " -0.0124, -0.4716, 2.0301, 1.8758, 1.8089, 1.8559, 1.7673, 1.3743,\n", + " 0.9478, 1.4642, 1.0811, 0.5994, 0.7329, 0.3075, -0.1229, -0.3989,\n", + " -0.4483, -0.2901, -1.7962]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5540, 0.5202, 0.1563, 0.3432, 0.0950, -0.1482, -0.5668, -0.6304,\n", + " -0.3889, -0.4713, -0.4312, 0.2831, 0.1882, 0.3508, 0.2285, 0.3405,\n", + " 0.3276, 0.1478, 0.1828, 0.1856, 0.0907, 0.0392, 0.0653, 0.0891,\n", + " 0.0832, 0.0338, -0.0660, 0.1170, 0.3397, 0.4808, 0.4253, 0.3539,\n", + " 0.3895, 0.4453, 0.2561, 0.2401, -0.0443, 0.0350, 0.0119, -0.4528,\n", + " -0.4335, -0.3745, -0.4029]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003425691684242338\n", + "Grad encoder.fc1.bias: 0.0007559093064628541\n", + "Grad encoder.encoder.0.weight: 5.599977885140106e-05\n", + "Grad encoder.encoder.0.bias: 0.0005469826282933354\n", + "Grad encoder.encoder.2.weight: 4.258516855770722e-05\n", + "Grad encoder.encoder.2.bias: 0.0004871254786849022\n", + "Grad encoder.encoder.4.weight: 0.00012993541895411909\n", + "Grad encoder.encoder.4.bias: 0.0013091443106532097\n", + "Grad decoder.fc1.0.weight: 5.7035143981920555e-05\n", + "Grad decoder.fc1.0.bias: 0.0004602030967362225\n", + "Grad decoder.fc1.2.weight: 6.132065027486533e-05\n", + "Grad decoder.fc1.2.bias: 0.0005566107574850321\n", + "Grad decoder.fc1.4.weight: 6.419973215088248e-05\n", + "Grad decoder.fc1.4.bias: 0.0003339533577673137\n", + "Grad decoder.fc2.weight: 0.00016196767683140934\n", + "Grad decoder.fc2.bias: 0.0018109852680936456\n", + "Grad _memory_unit.weight_ih_l0: 1.4771457244933117e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.2739189413841814e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.27581146848388e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.895674571045674e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011509243631735444\n", + "Grad _memory_unit.bias_hh_l1: 6.136228330433369e-05\n", + "Data X Sample: tensor([[1.4152, 1.5162, 1.6859, 1.8367, 1.7860, 1.8696, 2.0106, 1.9591, 3.3173,\n", + " 4.1705, 4.3112, 4.4286, 4.2188, 3.9179, 3.7475, 3.6678, 3.6479, 3.6463,\n", + " 3.5250, 3.3828, 3.5430, 3.3481, 2.9158, 2.8153, 2.8246, 3.0455, 2.9623,\n", + " 3.0793, 2.9800, 3.1834, 3.2790, 3.3574, 3.9293, 2.8675, 4.6278, 4.9155,\n", + " 5.1168, 5.6503, 6.1863, 5.9126, 1.0834, 0.5954, 0.6508, 1.1137, 1.6253,\n", + " 1.7726, 1.1490, 1.6889]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3684, 0.1468, 1.6955, 0.6487, 0.3189, 0.7502, 0.2389, -0.2295,\n", + " -0.3168, -0.4131, -1.1623, -0.6366, 0.0588, 0.1414, 0.2512, -0.0257,\n", + " 0.3389, 0.2227, -0.3944, 1.0546, 0.5501, -0.0444, -0.6791, 0.8474,\n", + " -0.6341, 1.7606, -0.7293, -1.6159, 0.0133, -0.7997, 0.1789, -0.7665,\n", + " 0.1439, 0.1987, 0.6898, -0.1698, 0.4743, 0.5488, 0.1500, -1.1628,\n", + " -0.5589, -0.5031, -0.0132]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2588, -0.2468, -0.0780, -0.2041, -0.0820, 0.0875, 0.1626, 0.2887,\n", + " 0.1203, 0.1673, 0.2217, -0.1466, -0.1430, -0.2507, -0.1594, -0.2217,\n", + " -0.2383, -0.0841, -0.0890, -0.0954, -0.0497, -0.0410, -0.0532, -0.0042,\n", + " 0.0075, 0.0298, -0.0328, -0.0840, -0.1537, -0.1528, -0.1898, -0.1598,\n", + " -0.2354, -0.2856, -0.1129, -0.1648, -0.0057, 0.0061, 0.0187, 0.3110,\n", + " 0.2999, 0.3117, 0.2156]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003061466268263757\n", + "Grad encoder.fc1.bias: 0.0001872259599622339\n", + "Grad encoder.encoder.0.weight: 5.5528773373225704e-05\n", + "Grad encoder.encoder.0.bias: 0.00026614248054102063\n", + "Grad encoder.encoder.2.weight: 4.754952169605531e-05\n", + "Grad encoder.encoder.2.bias: 0.0004335873818490654\n", + "Grad encoder.encoder.4.weight: 0.00013782097084913403\n", + "Grad encoder.encoder.4.bias: 0.0010641843546181917\n", + "Grad decoder.fc1.0.weight: 6.267244316404685e-05\n", + "Grad decoder.fc1.0.bias: 0.00045341765508055687\n", + "Grad decoder.fc1.2.weight: 5.9675847296603024e-05\n", + "Grad decoder.fc1.2.bias: 0.0008541470160707831\n", + "Grad decoder.fc1.4.weight: 4.9780130211729556e-05\n", + "Grad decoder.fc1.4.bias: 0.00042246206430718303\n", + "Grad decoder.fc2.weight: 0.0001282807206735015\n", + "Grad decoder.fc2.bias: 0.0017507672309875488\n", + "Grad _memory_unit.weight_ih_l0: 2.5405248379684053e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.755698218010366e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.383435927797109e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.3417307854979299e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001565297570778057\n", + "Grad _memory_unit.bias_hh_l1: 8.517595415469259e-05\n", + "Data X Sample: tensor([[2.5418, 3.0528, 3.4395, 3.5619, 3.7188, 3.9439, 4.1151, 3.9962, 4.0447,\n", + " 4.1847, 3.8861, 3.9164, 3.7705, 3.7543, 3.5407, 3.4408, 3.4089, 3.5147,\n", + " 3.4321, 3.3921, 3.4841, 3.5716, 3.1424, 3.1303, 2.9316, 2.8417, 2.7812,\n", + " 2.8346, 2.7580, 2.8395, 2.7891, 2.9844, 3.3023, 2.2862, 3.6375, 3.9208,\n", + " 4.2437, 4.7704, 5.1151, 5.0444, 1.8709, 1.2367, 1.1843, 2.1269, 2.9375,\n", + " 3.2537, 2.3728, 3.1824]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.9172, -0.9354, -0.3619, -0.0915, -0.4436, -0.6134, 0.6198, 0.8965,\n", + " 0.4445, 0.8848, 0.1921, -0.1604, -0.6947, -0.8187, -1.1597, -0.2712,\n", + " -0.0552, -0.9100, 2.5654, -0.2729, -0.9102, 0.3724, -0.4249, -1.6640,\n", + " -1.4194, 0.9258, -0.2538, -0.4260, -0.2636, -0.3279, -1.2211, 0.2379,\n", + " -0.8468, -0.5770, 0.7974, -0.5979, 0.0000, -0.6480, 1.0523, -0.2702,\n", + " 0.3401, 0.3509, 0.1215]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2043, -0.2119, -0.0642, -0.1847, -0.0792, 0.0699, 0.1190, 0.2318,\n", + " 0.1053, 0.1480, 0.1652, -0.1200, -0.1173, -0.2005, -0.1339, -0.1989,\n", + " -0.2215, -0.0755, -0.0628, -0.0835, -0.0385, -0.0444, -0.0519, -0.0195,\n", + " -0.0062, 0.0233, -0.0197, -0.0515, -0.1260, -0.1401, -0.1494, -0.1244,\n", + " -0.2057, -0.2310, -0.1009, -0.1339, -0.0091, 0.0152, 0.0048, 0.2499,\n", + " 0.2636, 0.2541, 0.1806]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00013443647185340524\n", + "Grad encoder.fc1.bias: 0.0005273586721159518\n", + "Grad encoder.encoder.0.weight: 3.1272327760234475e-05\n", + "Grad encoder.encoder.0.bias: 0.0003550383262336254\n", + "Grad encoder.encoder.2.weight: 2.638466321513988e-05\n", + "Grad encoder.encoder.2.bias: 0.0003775352379307151\n", + "Grad encoder.encoder.4.weight: 0.00010534052853472531\n", + "Grad encoder.encoder.4.bias: 0.001345945755019784\n", + "Grad decoder.fc1.0.weight: 4.8321704525733367e-05\n", + "Grad decoder.fc1.0.bias: 0.0004942993982695043\n", + "Grad decoder.fc1.2.weight: 5.4229734814725816e-05\n", + "Grad decoder.fc1.2.bias: 0.00036185316275805235\n", + "Grad decoder.fc1.4.weight: 4.67324280180037e-05\n", + "Grad decoder.fc1.4.bias: 0.00023177024559117854\n", + "Grad decoder.fc2.weight: 9.597354801371694e-05\n", + "Grad decoder.fc2.bias: 0.0014933954225853086\n", + "Grad _memory_unit.weight_ih_l0: 1.1008016372215934e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.571332440013066e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.9310827812878415e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.719371190731181e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001259021955775097\n", + "Grad _memory_unit.bias_hh_l1: 6.475318514276296e-05\n", + "Data X Sample: tensor([[2.1535, 2.5212, 2.7182, 2.9059, 2.9710, 3.0983, 3.0844, 3.2211, 3.1635,\n", + " 3.3206, 3.4039, 3.3555, 3.4754, 3.2881, 3.1902, 3.2944, 3.2674, 3.3677,\n", + " 3.3288, 3.2285, 3.1700, 3.2088, 2.8146, 2.8649, 2.6313, 2.6223, 2.4855,\n", + " 2.5817, 2.2029, 2.1780, 2.1907, 2.1830, 2.0702, 1.3960, 2.1840, 2.3909,\n", + " 2.6587, 2.9338, 3.1122, 2.9676, 1.7563, 0.9778, 0.9984, 1.7280, 2.5212,\n", + " 2.7962, 1.8765, 2.6116]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4817, 0.3376, -0.2418, -0.8041, 1.6371, -0.4515, -0.5937, -0.4796,\n", + " 0.1365, -0.6276, -0.3008, 0.5485, -0.4932, -0.6612, 0.1852, -0.5809,\n", + " -1.0146, -0.0406, 0.0940, -2.6867, -1.2037, -0.2954, 0.2353, -1.9389,\n", + " -0.5755, 2.0283, -2.0799, -0.5586, -1.5043, -0.3682, -0.4517, -0.8586,\n", + " -0.1949, -1.4123, -1.0013, -0.1013, -0.8326, 0.0561, -0.8613, -0.2837,\n", + " -0.3400, 0.2349, 0.4651]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1675, -0.1887, -0.0551, -0.1714, -0.0776, 0.0585, 0.0896, 0.1936,\n", + " 0.0947, 0.1350, 0.1271, -0.1021, -0.0995, -0.1667, -0.1170, -0.1837,\n", + " -0.2104, -0.0695, -0.0449, -0.0751, -0.0310, -0.0462, -0.0506, -0.0301,\n", + " -0.0156, 0.0194, -0.0111, -0.0305, -0.1076, -0.1314, -0.1228, -0.1009,\n", + " -0.1859, -0.1944, -0.0925, -0.1134, -0.0115, 0.0210, -0.0040, 0.2092,\n", + " 0.2397, 0.2156, 0.1575]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 4.68690377601888e-05\n", + "Grad encoder.fc1.bias: 0.00023876747582107782\n", + "Grad encoder.encoder.0.weight: 1.2092204087821301e-05\n", + "Grad encoder.encoder.0.bias: 0.00018886641191784292\n", + "Grad encoder.encoder.2.weight: 1.422443710907828e-05\n", + "Grad encoder.encoder.2.bias: 0.00020939481328241527\n", + "Grad encoder.encoder.4.weight: 4.293552046874538e-05\n", + "Grad encoder.encoder.4.bias: 0.00038487231358885765\n", + "Grad decoder.fc1.0.weight: 1.8272907254868187e-05\n", + "Grad decoder.fc1.0.bias: 0.00011180552974110469\n", + "Grad decoder.fc1.2.weight: 2.898772800108418e-05\n", + "Grad decoder.fc1.2.bias: 0.00014369640848599374\n", + "Grad decoder.fc1.4.weight: 3.589759944588877e-05\n", + "Grad decoder.fc1.4.bias: 0.00023590089404024184\n", + "Grad decoder.fc2.weight: 8.399252692470327e-05\n", + "Grad decoder.fc2.bias: 0.0016723534790799022\n", + "Grad _memory_unit.weight_ih_l0: 4.205348432151368e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.4732231395319104e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.2584549949679058e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.5599778180330759e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.883480530930683e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.9632418116088957e-05\n", + "Data X Sample: tensor([[1.5425, 1.7653, 1.9083, 1.9766, 2.0797, 2.2305, 2.4004, 2.5283, 2.4849,\n", + " 2.5923, 2.6838, 2.5298, 2.5344, 2.4974, 2.5093, 2.4329, 2.3963, 2.4683,\n", + " 2.4491, 2.4288, 2.4242, 2.4204, 2.4532, 2.3763, 2.4455, 2.4630, 2.4375,\n", + " 2.5083, 2.2584, 2.3155, 2.3867, 2.2438, 2.2506, 1.5173, 1.9511, 1.7950,\n", + " 1.6577, 1.5080, 1.6163, 1.5774, 1.2027, 0.6771, 0.6993, 1.2515, 1.7720,\n", + " 1.9671, 1.3190, 1.9626]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3941, 0.5756, 0.8487, 0.4138, 0.7495, -0.6806, -1.0196, -0.9523,\n", + " -0.5429, -0.6205, -0.7075, 1.0965, 0.2313, 1.0490, 1.0801, 0.6506,\n", + " 0.4243, 0.2546, 0.0708, 0.5915, 0.2101, 0.1333, -0.3045, -0.2499,\n", + " -2.4224, -0.9011, -0.6468, 0.1375, -0.3470, 0.3761, -0.6088, -0.1831,\n", + " 0.1038, -0.2755, -0.1119, 1.0937, -0.5235, 0.2376, 1.1238, -0.4122,\n", + " -0.7093, -0.6846, -0.7761]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4962, 0.5099, 0.1644, 0.3034, 0.1483, -0.0810, -0.4262, -0.4673,\n", + " -0.3180, -0.4141, -0.4015, 0.2291, 0.1574, 0.2826, 0.1784, 0.3463,\n", + " 0.3283, 0.0527, 0.1449, 0.1788, 0.0789, 0.0231, 0.0483, 0.0337,\n", + " 0.0673, 0.0467, -0.1224, -0.0228, 0.1824, 0.3041, 0.3131, 0.2766,\n", + " 0.3692, 0.3316, 0.2742, 0.2284, -0.0734, -0.0198, -0.0030, -0.3995,\n", + " -0.3875, -0.3229, -0.3483]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 3.7145993701415136e-05\n", + "Grad encoder.fc1.bias: 7.846409425837919e-05\n", + "Grad encoder.encoder.0.weight: 1.229916415468324e-05\n", + "Grad encoder.encoder.0.bias: 9.54353527049534e-05\n", + "Grad encoder.encoder.2.weight: 1.1763303518819157e-05\n", + "Grad encoder.encoder.2.bias: 0.0001640852278796956\n", + "Grad encoder.encoder.4.weight: 4.404963328852318e-05\n", + "Grad encoder.encoder.4.bias: 0.0007555030751973391\n", + "Grad decoder.fc1.0.weight: 3.1268151360563934e-05\n", + "Grad decoder.fc1.0.bias: 0.0002837851061485708\n", + "Grad decoder.fc1.2.weight: 4.480627103475854e-05\n", + "Grad decoder.fc1.2.bias: 0.0004326438647694886\n", + "Grad decoder.fc1.4.weight: 6.621018110308796e-05\n", + "Grad decoder.fc1.4.bias: 0.0005947671597823501\n", + "Grad decoder.fc2.weight: 0.00017715553985908628\n", + "Grad decoder.fc2.bias: 0.002561755245551467\n", + "Grad _memory_unit.weight_ih_l0: 8.897638508642558e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.069635931751691e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.0480958482949063e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.596722192218294e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.835774886189029e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.3160802306374535e-05\n", + "Data X Sample: tensor([[2.9491, 3.2305, 3.5462, 4.0254, 3.9766, 4.1119, 4.1336, 4.2262, 4.2742,\n", + " 4.3095, 4.2826, 4.1949, 4.0790, 3.8988, 3.6694, 3.4312, 3.4812, 3.5012,\n", + " 3.4919, 3.6283, 3.5626, 3.4415, 2.9158, 2.7791, 2.6801, 2.7608, 2.8771,\n", + " 2.8632, 2.9488, 2.9476, 3.0166, 3.0535, 3.4233, 2.5265, 4.1988, 4.6845,\n", + " 4.9595, 5.3535, 5.9201, 5.7764, 2.2861, 1.2008, 1.2247, 2.1757, 3.2942,\n", + " 3.9398, 2.6380, 3.4874]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.8539, -1.0132, -1.3510, -1.0750, 0.1192, 0.6390, 0.1739, 0.4184,\n", + " -0.1422, 0.3371, 0.7417, -1.1338, -0.2153, -0.1155, 0.2256, -0.1535,\n", + " -0.0161, 0.0068, -0.2468, -0.3979, 2.1835, -0.7882, -0.4654, 0.4042,\n", + " 0.4658, 2.0421, 0.7940, 0.6474, -0.4526, -0.1126, 0.0659, 0.1533,\n", + " 0.1270, -0.7880, -1.5372, 1.3664, -0.4714, -0.2114, 0.7114, 0.8906,\n", + " -0.0597, -0.8383, -0.5317]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1858, -0.1998, -0.0609, -0.1782, -0.0755, 0.0683, 0.1064, 0.2138,\n", + " 0.0988, 0.1408, 0.1470, -0.1132, -0.1081, -0.1856, -0.1281, -0.1906,\n", + " -0.2175, -0.0717, -0.0514, -0.0766, -0.0393, -0.0450, -0.0491, -0.0248,\n", + " -0.0136, 0.0232, -0.0199, -0.0469, -0.1245, -0.1375, -0.1399, -0.1144,\n", + " -0.1971, -0.2149, -0.0963, -0.1270, -0.0124, 0.0186, 0.0021, 0.2310,\n", + " 0.2519, 0.2385, 0.1726]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003559488686732948\n", + "Grad encoder.fc1.bias: 0.00017040700186043978\n", + "Grad encoder.encoder.0.weight: 6.919524457771331e-05\n", + "Grad encoder.encoder.0.bias: 0.0002447661245241761\n", + "Grad encoder.encoder.2.weight: 4.1414794395677745e-05\n", + "Grad encoder.encoder.2.bias: 0.00022943264048080891\n", + "Grad encoder.encoder.4.weight: 0.0001172064512502402\n", + "Grad encoder.encoder.4.bias: 0.0007957564666867256\n", + "Grad decoder.fc1.0.weight: 3.0269000490079634e-05\n", + "Grad decoder.fc1.0.bias: 0.0001508190034655854\n", + "Grad decoder.fc1.2.weight: 1.9908435206161812e-05\n", + "Grad decoder.fc1.2.bias: 0.00022685594740323722\n", + "Grad decoder.fc1.4.weight: 1.8115946659236215e-05\n", + "Grad decoder.fc1.4.bias: 0.00023107673041522503\n", + "Grad decoder.fc2.weight: 0.00010842140909517184\n", + "Grad decoder.fc2.bias: 0.002054889453575015\n", + "Grad _memory_unit.weight_ih_l0: 2.9641753371834056e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.276991148799425e-06\n", + "Grad _memory_unit.bias_hh_l0: 2.921115537901642e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.819159479055088e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.165975431329571e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.5724273907835595e-05\n", + "Data X Sample: tensor([[1.5138, 1.6925, 1.9624, 2.0488, 2.0626, 2.0066, 2.0398, 2.5922, 3.6176,\n", + " 4.1878, 4.2604, 4.3312, 4.0812, 3.9943, 3.8383, 3.6295, 3.6133, 3.5824,\n", + " 3.5085, 3.4051, 3.4449, 3.3098, 2.9905, 2.8039, 2.8640, 2.8522, 2.9943,\n", + " 3.0671, 2.9974, 3.1965, 3.3630, 3.3934, 3.8369, 2.8744, 4.5689, 4.7818,\n", + " 5.0362, 5.4569, 5.9137, 5.9126, 1.1932, 0.7129, 0.7215, 1.2228, 1.7918,\n", + " 1.9270, 1.2578, 1.8375]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1769, 0.4681, -0.4804, 0.0211, 0.2357, 0.6025, 0.4898, -0.1218,\n", + " 0.3086, 0.1445, 0.2634, 0.8934, -0.1673, -0.2512, -0.1900, 1.1406,\n", + " 0.5683, -0.4374, 0.7918, 0.3425, 0.0645, 0.2514, -0.0614, -0.8951,\n", + " -0.0881, -0.2129, 0.0791, 2.2903, 0.1892, -0.0140, 0.1851, -0.1291,\n", + " -0.1542, -0.0608, 1.4346, -1.2527, 0.5193, 0.0182, 1.0325, 0.1825,\n", + " 0.1497, -0.2504, 0.5660]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1927, -0.2046, -0.0641, -0.1815, -0.0751, 0.0720, 0.1135, 0.2220,\n", + " 0.1001, 0.1434, 0.1554, -0.1179, -0.1112, -0.1938, -0.1315, -0.1933,\n", + " -0.2194, -0.0726, -0.0535, -0.0772, -0.0421, -0.0446, -0.0483, -0.0220,\n", + " -0.0123, 0.0254, -0.0235, -0.0538, -0.1318, -0.1398, -0.1473, -0.1202,\n", + " -0.2010, -0.2234, -0.0981, -0.1316, -0.0131, 0.0179, 0.0053, 0.2403,\n", + " 0.2574, 0.2480, 0.1786]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 6.8655725044664e-05\n", + "Grad encoder.fc1.bias: 4.8333291488233954e-05\n", + "Grad encoder.encoder.0.weight: 1.015849738905672e-05\n", + "Grad encoder.encoder.0.bias: 3.871179433190264e-05\n", + "Grad encoder.encoder.2.weight: 1.2972231161256786e-05\n", + "Grad encoder.encoder.2.bias: 9.118221350945532e-05\n", + "Grad encoder.encoder.4.weight: 3.2556676160311326e-05\n", + "Grad encoder.encoder.4.bias: 0.0003120219917036593\n", + "Grad decoder.fc1.0.weight: 1.8347465811530128e-05\n", + "Grad decoder.fc1.0.bias: 0.00014723645290359855\n", + "Grad decoder.fc1.2.weight: 1.878649345599115e-05\n", + "Grad decoder.fc1.2.bias: 0.00010710631613619626\n", + "Grad decoder.fc1.4.weight: 2.4077347916318104e-05\n", + "Grad decoder.fc1.4.bias: 0.00015984964556992054\n", + "Grad decoder.fc2.weight: 8.34867314551957e-05\n", + "Grad decoder.fc2.bias: 0.002189089311286807\n", + "Grad _memory_unit.weight_ih_l0: 2.4024532194744097e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.1052105037379079e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.914172106713522e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.3120093171892222e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.9228014682303183e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.4692049262521323e-05\n", + "Data X Sample: tensor([[1.5223, 1.7930, 1.9519, 2.0488, 2.1394, 2.2850, 2.4219, 2.5624, 2.5801,\n", + " 2.5734, 2.5696, 2.7421, 2.4834, 2.4620, 2.4387, 2.4671, 2.4781, 2.4083,\n", + " 2.4636, 2.4306, 2.4585, 2.3683, 2.3977, 2.3458, 2.3385, 2.4265, 2.3789,\n", + " 2.3860, 2.1995, 2.3515, 2.2957, 2.3101, 2.2132, 1.4555, 1.9266, 1.7634,\n", + " 1.6125, 1.4788, 1.5909, 1.5689, 1.3172, 0.6452, 0.7336, 1.2831, 1.6293,\n", + " 2.0014, 1.3530, 1.8688]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2111, 0.1917, 0.5623, 0.0952, 1.3624, 0.9366, 0.4530, -0.3340,\n", + " -0.5096, -0.3395, -0.4539, -1.2456, 1.0373, 0.0252, -0.0987, 0.6781,\n", + " 1.1068, 1.1933, 1.6048, 0.4831, 0.9611, 0.0071, -0.0114, 0.3986,\n", + " -0.8409, -0.1481, 0.0592, -0.6918, -0.0458, 0.0804, 0.2253, 1.1730,\n", + " 0.4967, 0.2988, -0.3041, 2.2786, -0.6306, 0.3945, -0.0059, -0.2538,\n", + " -0.4077, -0.4132, -0.3359]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 5.1657e-01, 4.9425e-01, 1.6111e-01, 2.8653e-01, 1.2075e-01,\n", + " -1.0954e-01, -4.3604e-01, -4.8780e-01, -3.2446e-01, -4.1979e-01,\n", + " -4.0924e-01, 2.3613e-01, 1.7407e-01, 2.9848e-01, 1.7528e-01,\n", + " 3.3765e-01, 3.3885e-01, 4.4218e-02, 1.4074e-01, 1.6983e-01,\n", + " 5.9756e-02, 1.5044e-02, 3.9382e-02, 1.8438e-02, 5.2809e-02,\n", + " 4.3329e-02, -1.1157e-01, -1.5994e-02, 1.9421e-01, 3.1417e-01,\n", + " 3.0441e-01, 2.8561e-01, 3.8354e-01, 3.1877e-01, 2.7870e-01,\n", + " 2.1646e-01, -8.0284e-02, -1.4198e-02, 2.4840e-04, -3.9090e-01,\n", + " -3.9187e-01, -3.1690e-01, -3.4667e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005042048287577927\n", + "Grad encoder.fc1.bias: 0.00044601320405490696\n", + "Grad encoder.encoder.0.weight: 0.0001136726641561836\n", + "Grad encoder.encoder.0.bias: 0.0005112335784360766\n", + "Grad encoder.encoder.2.weight: 8.403079846175388e-05\n", + "Grad encoder.encoder.2.bias: 0.0006061422172933817\n", + "Grad encoder.encoder.4.weight: 0.0002331114956177771\n", + "Grad encoder.encoder.4.bias: 0.0021283035166561604\n", + "Grad decoder.fc1.0.weight: 6.503257463918999e-05\n", + "Grad decoder.fc1.0.bias: 0.00048298685578629375\n", + "Grad decoder.fc1.2.weight: 5.2464616601355374e-05\n", + "Grad decoder.fc1.2.bias: 0.00043208201532252133\n", + "Grad decoder.fc1.4.weight: 4.803550837095827e-05\n", + "Grad decoder.fc1.4.bias: 0.0004794927081093192\n", + "Grad decoder.fc2.weight: 0.00011144788732053712\n", + "Grad decoder.fc2.bias: 0.0017983054276555777\n", + "Grad _memory_unit.weight_ih_l0: 1.2075281119905412e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.5877772208768874e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.725679769355338e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.1158031055820175e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011358148185536265\n", + "Grad _memory_unit.bias_hh_l1: 6.062294414732605e-05\n", + "Data X Sample: tensor([[1.4990, 1.7799, 1.9474, 2.0969, 2.1070, 2.1922, 2.1893, 2.2714, 2.3312,\n", + " 2.3964, 2.4617, 2.4597, 2.3125, 2.2412, 2.3580, 2.2989, 2.3365, 2.3561,\n", + " 2.4140, 2.3488, 2.4389, 2.4602, 2.4026, 2.4259, 2.4474, 2.5205, 2.4269,\n", + " 2.4308, 2.0642, 2.0109, 1.8617, 1.8376, 1.5488, 0.9909, 1.4143, 1.4131,\n", + " 1.3982, 1.3278, 1.4008, 1.3051, 1.2934, 0.7687, 0.7154, 1.3089, 1.8552,\n", + " 2.1329, 1.4346, 1.9861]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.7578, -0.0060, 0.3581, 0.1204, -1.0885, 1.1921, 1.2488, 0.7379,\n", + " 0.2047, 0.7818, 0.3440, -1.1951, 0.9040, -1.1328, 0.0840, -0.5100,\n", + " 0.3590, 0.9540, 0.2773, 1.7617, 1.2791, 1.2585, 1.4041, 2.5476,\n", + " 0.3187, -0.6658, -0.0079, -0.6927, -1.5501, -1.3170, -0.0483, -1.1513,\n", + " -0.5699, -1.1560, -0.2906, -0.2338, 0.7170, -0.6916, -1.8131, 0.8163,\n", + " 0.7354, 0.5174, 0.2267]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3989, 0.3574, 0.1167, 0.1925, 0.0699, -0.0906, -0.3449, -0.3682,\n", + " -0.2438, -0.3136, -0.3138, 0.1746, 0.1213, 0.2193, 0.1219, 0.2337,\n", + " 0.2396, 0.0190, 0.1057, 0.1210, 0.0406, -0.0037, 0.0178, 0.0070,\n", + " 0.0344, 0.0457, -0.0864, -0.0126, 0.1431, 0.2287, 0.2251, 0.2202,\n", + " 0.2814, 0.2220, 0.2087, 0.1517, -0.0739, -0.0052, -0.0025, -0.2834,\n", + " -0.2745, -0.2151, -0.2457]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003774198121391237\n", + "Grad encoder.fc1.bias: 0.0012124800123274326\n", + "Grad encoder.encoder.0.weight: 7.988894503796473e-05\n", + "Grad encoder.encoder.0.bias: 0.0007402257760986686\n", + "Grad encoder.encoder.2.weight: 5.642999894917011e-05\n", + "Grad encoder.encoder.2.bias: 0.0005815787008032203\n", + "Grad encoder.encoder.4.weight: 0.00015655721654184163\n", + "Grad encoder.encoder.4.bias: 0.000878065126016736\n", + "Grad decoder.fc1.0.weight: 5.383563257055357e-05\n", + "Grad decoder.fc1.0.bias: 0.0003411077777855098\n", + "Grad decoder.fc1.2.weight: 5.946520468569361e-05\n", + "Grad decoder.fc1.2.bias: 0.00040095741860568523\n", + "Grad decoder.fc1.4.weight: 6.596479215659201e-05\n", + "Grad decoder.fc1.4.bias: 0.0005681009497493505\n", + "Grad decoder.fc2.weight: 9.937733557308093e-05\n", + "Grad decoder.fc2.bias: 0.0023263562470674515\n", + "Grad _memory_unit.weight_ih_l0: 6.049097009963589e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.0002031053300016e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.5595729564665817e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.000689048349159e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.834296800661832e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.529564128257334e-05\n", + "Data X Sample: tensor([[2.7274, 2.4600, 2.0195, 2.4074, 2.3324, 2.1480, 2.8626, 3.9778, 4.1863,\n", + " 4.2779, 4.0732, 4.1404, 4.0146, 3.8934, 3.7576, 3.6268, 3.5646, 3.7024,\n", + " 3.5704, 3.4758, 3.4105, 3.3328, 3.0339, 2.9317, 2.8021, 2.7582, 2.7998,\n", + " 2.8183, 2.8031, 2.8395, 2.9606, 2.9816, 3.2715, 2.4556, 4.0616, 4.4291,\n", + " 4.7746, 5.2819, 5.6539, 5.6118, 1.4175, 0.8065, 0.7437, 1.2515, 1.8592,\n", + " 2.3330, 1.5502, 2.0721]], device='cuda:0')\n", + "Data Y Sample: tensor([[-3.3664e-01, 4.7447e-01, 2.2548e-01, -4.5941e-01, 5.7411e-01,\n", + " -8.9172e-01, -1.1782e-01, 7.2749e-02, 5.9110e-01, -8.9880e-02,\n", + " 8.2543e-02, -1.2006e-01, 1.3718e-01, 4.3117e-01, 1.3466e+00,\n", + " 4.4360e-02, 4.9006e-01, -1.1803e-01, -1.4344e+00, -1.2843e+00,\n", + " 4.5180e+00, -5.9147e-01, -5.1867e-01, -9.2924e-01, -1.1327e+00,\n", + " -6.5576e-01, -7.7868e-02, 1.3812e+00, -2.7227e-01, -2.2139e-01,\n", + " 2.0682e-01, 1.6050e-01, 4.0966e-01, -2.4688e-01, 2.9123e-01,\n", + " 1.7643e-01, 7.3310e-01, 3.9459e-01, 2.0119e-03, 1.0154e-01,\n", + " 1.0971e-01, 2.7601e-01, 3.5335e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1620, -0.1897, -0.0618, -0.1742, -0.0746, 0.0606, 0.0912, 0.1920,\n", + " 0.0915, 0.1347, 0.1262, -0.1033, -0.0960, -0.1683, -0.1155, -0.1815,\n", + " -0.2063, -0.0687, -0.0394, -0.0728, -0.0361, -0.0496, -0.0477, -0.0300,\n", + " -0.0199, 0.0238, -0.0162, -0.0393, -0.1193, -0.1334, -0.1284, -0.1020,\n", + " -0.1825, -0.1941, -0.0924, -0.1163, -0.0158, 0.0272, 0.0008, 0.2102,\n", + " 0.2398, 0.2173, 0.1595]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003411951183807105\n", + "Grad encoder.fc1.bias: 0.0002982336445711553\n", + "Grad encoder.encoder.0.weight: 8.130536298267543e-05\n", + "Grad encoder.encoder.0.bias: 0.00038202927680686116\n", + "Grad encoder.encoder.2.weight: 5.812532617710531e-05\n", + "Grad encoder.encoder.2.bias: 0.0003563673817552626\n", + "Grad encoder.encoder.4.weight: 0.00016443907225038856\n", + "Grad encoder.encoder.4.bias: 0.000724811281543225\n", + "Grad decoder.fc1.0.weight: 4.832944250665605e-05\n", + "Grad decoder.fc1.0.bias: 0.00023741082986816764\n", + "Grad decoder.fc1.2.weight: 6.310775643214583e-05\n", + "Grad decoder.fc1.2.bias: 0.00031468633096665144\n", + "Grad decoder.fc1.4.weight: 7.497348997276276e-05\n", + "Grad decoder.fc1.4.bias: 0.00046624033711850643\n", + "Grad decoder.fc2.weight: 8.227203943533823e-05\n", + "Grad decoder.fc2.bias: 0.002747129648923874\n", + "Grad _memory_unit.weight_ih_l0: 6.189430678205099e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.38490922836354e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.653121767565608e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.808254748742911e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.217824243823998e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.2233769414015114e-05\n", + "Data X Sample: tensor([[2.4877, 2.7280, 2.8941, 3.0633, 3.1997, 3.2427, 3.3355, 3.4639, 3.6249,\n", + " 3.6349, 3.7941, 3.7275, 3.8859, 3.5771, 3.3894, 3.5119, 3.4231, 3.5167,\n", + " 3.4568, 3.2006, 3.1455, 3.0909, 2.9110, 2.7466, 2.5712, 2.5544, 2.5228,\n", + " 2.5083, 2.4180, 2.4793, 2.4777, 2.4455, 2.5279, 1.7553, 2.9904, 3.3711,\n", + " 3.6655, 3.8217, 4.2150, 4.0543, 1.8613, 1.0435, 1.0388, 1.8227, 2.4697,\n", + " 2.9506, 2.0533, 2.8696]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.9463, 0.0589, 0.9175, -0.6673, -0.4314, -0.1618, -0.7157, -0.5744,\n", + " -0.5563, -0.5338, -0.0619, -0.3771, 0.5263, -0.0717, 0.8577, 0.8611,\n", + " 0.9877, -0.3056, 0.5875, 0.0943, -1.2035, 0.9979, -0.2840, -0.3255,\n", + " -0.2279, -1.5586, 0.2805, 0.8591, 0.5287, 0.6157, 1.3040, 0.8253,\n", + " 0.9151, 0.8341, 0.8401, -0.0016, -0.3085, 0.7952, -0.4773, -0.4210,\n", + " 0.1624, -0.1652, 0.0450]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1537, -0.1861, -0.0608, -0.1725, -0.0748, 0.0572, 0.0853, 0.1842,\n", + " 0.0901, 0.1334, 0.1185, -0.0996, -0.0914, -0.1612, -0.1114, -0.1789,\n", + " -0.2026, -0.0681, -0.0356, -0.0717, -0.0341, -0.0516, -0.0479, -0.0326,\n", + " -0.0222, 0.0227, -0.0134, -0.0349, -0.1162, -0.1327, -0.1231, -0.0976,\n", + " -0.1778, -0.1862, -0.0918, -0.1122, -0.0161, 0.0296, -0.0013, 0.2020,\n", + " 0.2357, 0.2086, 0.1532]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00038846908137202263\n", + "Grad encoder.fc1.bias: 0.0003074876731261611\n", + "Grad encoder.encoder.0.weight: 6.569068500539288e-05\n", + "Grad encoder.encoder.0.bias: 0.0003263070248067379\n", + "Grad encoder.encoder.2.weight: 5.379878348321654e-05\n", + "Grad encoder.encoder.2.bias: 0.0005071080522611737\n", + "Grad encoder.encoder.4.weight: 0.00017940222460310906\n", + "Grad encoder.encoder.4.bias: 0.0013309981441125274\n", + "Grad decoder.fc1.0.weight: 7.463461224688217e-05\n", + "Grad decoder.fc1.0.bias: 0.0005457298248074949\n", + "Grad decoder.fc1.2.weight: 6.731942266924307e-05\n", + "Grad decoder.fc1.2.bias: 0.0006750294705852866\n", + "Grad decoder.fc1.4.weight: 5.127187250764109e-05\n", + "Grad decoder.fc1.4.bias: 0.0004979276563972235\n", + "Grad decoder.fc2.weight: 0.00013235454389359802\n", + "Grad decoder.fc2.bias: 0.0021152899134904146\n", + "Grad _memory_unit.weight_ih_l0: 2.2627931684837677e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.969601625110954e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.9692327845841646e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.1024252671631984e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00015528759104199708\n", + "Grad _memory_unit.bias_hh_l1: 8.309596887556836e-05\n", + "Data X Sample: tensor([[1.5743, 1.8541, 2.0541, 2.2062, 2.1889, 2.5134, 2.5313, 2.6178, 2.6046,\n", + " 2.6429, 2.7092, 2.6622, 2.5411, 2.5438, 2.6177, 2.4917, 2.4796, 2.5882,\n", + " 2.5565, 2.4492, 2.4732, 2.4602, 2.4508, 2.4469, 2.4155, 2.5440, 2.4349,\n", + " 2.5410, 2.2966, 2.3352, 2.3447, 2.2632, 1.9668, 1.2312, 1.7771, 1.6904,\n", + " 1.5732, 1.5477, 1.5149, 1.4413, 1.2409, 0.7528, 0.7720, 1.3778, 1.8275,\n", + " 2.1443, 1.4074, 2.2128]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.0577, 0.8707, -0.2711, 0.7267, 1.5357, -0.1766, 0.0637, -0.3572,\n", + " -0.3659, -0.4485, -0.1959, 0.5543, 0.4795, 0.6839, 0.2289, 0.9278,\n", + " 0.4124, 0.5683, 0.0870, -0.2152, -0.5696, 0.1786, 0.3595, 0.0231,\n", + " -0.1460, -0.1891, 0.0176, -0.4936, -0.2825, -0.1075, 0.1251, -0.1477,\n", + " 0.4131, -0.2575, -0.1594, 0.9479, 0.0476, -0.2345, -0.0231, -0.4191,\n", + " -0.3424, -0.5205, -0.6388]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2513, 0.2056, 0.0712, 0.0684, 0.0081, -0.0677, -0.2244, -0.2099,\n", + " -0.1361, -0.1792, -0.1737, 0.0940, 0.0426, 0.1067, 0.0593, 0.1024,\n", + " 0.1384, -0.0261, 0.0550, 0.0682, 0.0184, -0.0373, -0.0262, -0.0128,\n", + " 0.0223, 0.0751, -0.0676, -0.0324, 0.0620, 0.1059, 0.1241, 0.1231,\n", + " 0.1614, 0.0857, 0.1247, 0.0541, -0.0654, -0.0021, -0.0037, -0.1408,\n", + " -0.1223, -0.0832, -0.1183]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002702056663110852\n", + "Grad encoder.fc1.bias: 0.00039967987686395645\n", + "Grad encoder.encoder.0.weight: 4.660023842006922e-05\n", + "Grad encoder.encoder.0.bias: 0.00036327666020952165\n", + "Grad encoder.encoder.2.weight: 5.402353417593986e-05\n", + "Grad encoder.encoder.2.bias: 0.0005345309618860483\n", + "Grad encoder.encoder.4.weight: 0.000130693064420484\n", + "Grad encoder.encoder.4.bias: 0.0013149520382285118\n", + "Grad decoder.fc1.0.weight: 5.171204611542635e-05\n", + "Grad decoder.fc1.0.bias: 0.00039496668614447117\n", + "Grad decoder.fc1.2.weight: 3.93258742406033e-05\n", + "Grad decoder.fc1.2.bias: 0.0004469990381039679\n", + "Grad decoder.fc1.4.weight: 3.1661569664720446e-05\n", + "Grad decoder.fc1.4.bias: 0.0003238073259126395\n", + "Grad decoder.fc2.weight: 0.00013652250345330685\n", + "Grad decoder.fc2.bias: 0.0019323257729411125\n", + "Grad _memory_unit.weight_ih_l0: 1.2693777534877881e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.5396435123402625e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.4214867153204978e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.00666317041032e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.48909655562602e-05\n", + "Grad _memory_unit.bias_hh_l1: 5.118136323289946e-05\n", + "Data X Sample: tensor([[1.6379, 2.0537, 2.3756, 2.5517, 2.8241, 2.9156, 2.8872, 2.9230, 2.9536,\n", + " 2.9841, 2.9407, 2.8803, 2.6609, 2.5656, 2.5093, 2.4055, 2.4513, 2.5379,\n", + " 2.5565, 2.4474, 2.3530, 2.2902, 2.2122, 2.1435, 1.9819, 2.0425, 1.8355,\n", + " 1.8558, 1.5473, 1.5295, 1.4348, 1.4259, 1.3200, 0.9383, 1.5173, 1.7147,\n", + " 1.9212, 2.2236, 2.5734, 2.5222, 1.4413, 0.8683, 0.9094, 1.5787, 2.3666,\n", + " 2.4474, 1.6793, 2.3458]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.4650e+00, -8.8881e-01, -4.5427e-01, -1.1943e+00, -6.3544e-01,\n", + " -4.4850e-01, -5.1317e-01, 6.9301e-01, 1.1528e+00, 6.4107e-01,\n", + " 8.6190e-01, 7.3118e-01, -7.9541e-01, -7.3195e-01, -1.0539e+00,\n", + " -1.1709e+00, 1.0489e-01, -4.7770e-01, 5.4973e-02, 1.9531e-02,\n", + " -2.6563e-02, 3.9139e-01, -2.8869e-01, -1.9340e-04, -1.1978e-01,\n", + " 2.9579e-01, 2.7916e-01, 8.8496e-03, 4.7842e-01, -5.6149e-01,\n", + " 2.6563e-01, 3.0342e-01, -9.9562e-01, -8.1300e-01, 5.7790e-01,\n", + " -1.2936e+00, -4.9314e-01, 9.1883e-01, -4.8181e-02, 1.6412e+00,\n", + " 5.7970e-01, 1.0704e+00, 1.3423e+00]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.5745, -0.5827, -0.2893, -0.4271, -0.3242, -0.0292, 0.3311, 0.7104,\n", + " 0.5315, 0.7686, 0.9340, -0.3215, -0.2434, -0.5221, -0.3918, -0.7005,\n", + " -0.6365, -0.2744, -0.0917, -0.1957, -0.1487, -0.0844, -0.0936, -0.1002,\n", + " -0.0594, 0.0059, 0.1371, -0.0553, -0.1852, -0.4563, -0.3768, -0.4553,\n", + " -0.3880, -0.6313, -0.2590, -0.3520, -0.0365, 0.0526, -0.0653, 1.4294,\n", + " 1.4603, 1.0754, 0.7984]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00015760425594635308\n", + "Grad encoder.fc1.bias: 9.448711352888495e-05\n", + "Grad encoder.encoder.0.weight: 3.8880294596310705e-05\n", + "Grad encoder.encoder.0.bias: 0.0001314163819188252\n", + "Grad encoder.encoder.2.weight: 3.3331023587379605e-05\n", + "Grad encoder.encoder.2.bias: 0.00017932135961018503\n", + "Grad encoder.encoder.4.weight: 7.983877003425732e-05\n", + "Grad encoder.encoder.4.bias: 0.0004560829547699541\n", + "Grad decoder.fc1.0.weight: 2.597647107904777e-05\n", + "Grad decoder.fc1.0.bias: 0.0001454051089240238\n", + "Grad decoder.fc1.2.weight: 3.52598144672811e-05\n", + "Grad decoder.fc1.2.bias: 0.00020262041653040797\n", + "Grad decoder.fc1.4.weight: 4.7029738198034465e-05\n", + "Grad decoder.fc1.4.bias: 0.00028451779508031905\n", + "Grad decoder.fc2.weight: 8.984431769931689e-05\n", + "Grad decoder.fc2.bias: 0.001999654807150364\n", + "Grad _memory_unit.weight_ih_l0: 3.556396450221655e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.208455255953595e-06\n", + "Grad _memory_unit.bias_hh_l0: 5.0374092097627e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.2960806543560466e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.487439451215323e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.2895251529698726e-05\n", + "Data X Sample: tensor([[1.3462, 1.5716, 1.6033, 1.7383, 1.9943, 2.1716, 2.1107, 1.8455, 2.6729,\n", + " 3.9540, 4.3080, 4.2942, 3.9614, 3.8498, 3.8182, 3.6500, 3.5882, 3.5863,\n", + " 3.4506, 3.4070, 3.4326, 3.4384, 2.9351, 2.7714, 2.7683, 2.8182, 2.8877,\n", + " 2.8387, 2.9696, 2.9673, 3.2510, 3.2828, 3.9051, 2.8492, 4.5542, 4.9545,\n", + " 5.2938, 5.6079, 6.1039, 5.9182, 1.0643, 0.6193, 0.6225, 1.0219, 1.5817,\n", + " 1.6640, 1.0062, 1.5951]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0594, -0.4696, -0.2991, -0.6228, -0.8338, 1.1735, 0.1938, 0.5879,\n", + " 0.9077, 0.7743, 0.8663, -1.0414, -0.1905, -1.2629, -0.1819, -1.1924,\n", + " -0.7432, -0.7922, 0.6692, -0.8578, 0.6946, -0.7495, 0.4390, 1.5379,\n", + " -1.4555, 3.0838, -0.2754, -0.6171, 0.1174, -0.6091, 0.0220, -0.9273,\n", + " -1.1462, -0.1763, -0.2581, -0.2542, -0.2391, 0.5269, 0.3478, 0.7883,\n", + " 0.7399, 0.6679, 0.1844]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2061, -0.2232, -0.0780, -0.1929, -0.0731, 0.0763, 0.1320, 0.2419,\n", + " 0.1071, 0.1582, 0.1786, -0.1278, -0.1142, -0.2136, -0.1342, -0.2029,\n", + " -0.2187, -0.0768, -0.0583, -0.0823, -0.0509, -0.0527, -0.0471, -0.0205,\n", + " -0.0157, 0.0268, -0.0279, -0.0743, -0.1533, -0.1492, -0.1668, -0.1359,\n", + " -0.2069, -0.2397, -0.1104, -0.1450, -0.0136, 0.0260, 0.0151, 0.2628,\n", + " 0.2747, 0.2671, 0.1854]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007941749645397067\n", + "Grad encoder.fc1.bias: 0.0007175479549914598\n", + "Grad encoder.encoder.0.weight: 0.0002057853271253407\n", + "Grad encoder.encoder.0.bias: 0.0007251154165714979\n", + "Grad encoder.encoder.2.weight: 0.00016879876784514636\n", + "Grad encoder.encoder.2.bias: 0.0008516213856637478\n", + "Grad encoder.encoder.4.weight: 0.0004133968614041805\n", + "Grad encoder.encoder.4.bias: 0.001645921147428453\n", + "Grad decoder.fc1.0.weight: 0.00011463218106655404\n", + "Grad decoder.fc1.0.bias: 0.0005897460505366325\n", + "Grad decoder.fc1.2.weight: 8.191174129024148e-05\n", + "Grad decoder.fc1.2.bias: 0.0005991221987642348\n", + "Grad decoder.fc1.4.weight: 5.761585998698138e-05\n", + "Grad decoder.fc1.4.bias: 0.000516408821567893\n", + "Grad decoder.fc2.weight: 8.159367280313745e-05\n", + "Grad decoder.fc2.bias: 0.0017069652676582336\n", + "Grad _memory_unit.weight_ih_l0: 1.1868467481690459e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.534220038796775e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.581936885486357e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.034447895013727e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010573951294645667\n", + "Grad _memory_unit.bias_hh_l1: 5.417866850621067e-05\n", + "Data X Sample: tensor([[1.4215, 1.4915, 1.6318, 1.8214, 1.9977, 2.0022, 2.1184, 2.0017, 3.1855,\n", + " 4.3379, 4.1843, 4.2163, 3.9925, 3.8661, 3.8232, 3.7703, 3.6275, 3.5728,\n", + " 3.6861, 3.4609, 3.4449, 3.2915, 2.7785, 2.7390, 2.8265, 2.9462, 2.9357,\n", + " 2.8917, 3.0043, 3.2424, 3.2406, 3.3574, 3.8479, 2.9018, 4.6523, 5.0055,\n", + " 5.2820, 5.5178, 5.9201, 5.9268, 1.0309, 0.6412, 0.6103, 1.0362, 1.6174,\n", + " 1.8184, 1.1150, 1.7437]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4093, -0.1644, -0.5111, 0.3825, 0.3190, 1.3027, 0.4110, 0.9036,\n", + " 0.8719, 0.5764, 0.6391, -1.0988, 0.1134, 0.3181, 0.3820, 0.4075,\n", + " -0.5773, -1.3188, 0.4768, -0.7531, 0.3887, 0.8202, 1.0560, 5.2115,\n", + " 1.6504, 0.1518, 0.6345, 0.0532, -0.0170, -0.6499, -0.5137, -1.1606,\n", + " -0.6994, -0.5200, 0.2816, -1.7736, -0.5204, -0.2409, 0.3478, 0.6028,\n", + " 0.7565, 0.3732, -0.0123]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2162, -0.2301, -0.0819, -0.1967, -0.0724, 0.0794, 0.1405, 0.2528,\n", + " 0.1106, 0.1634, 0.1902, -0.1320, -0.1179, -0.2237, -0.1374, -0.2078,\n", + " -0.2220, -0.0787, -0.0627, -0.0839, -0.0541, -0.0531, -0.0459, -0.0189,\n", + " -0.0155, 0.0272, -0.0307, -0.0819, -0.1604, -0.1528, -0.1747, -0.1430,\n", + " -0.2122, -0.2492, -0.1153, -0.1513, -0.0134, 0.0263, 0.0184, 0.2744,\n", + " 0.2817, 0.2777, 0.1901]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00043260291568003595\n", + "Grad encoder.fc1.bias: 0.0004247916513122618\n", + "Grad encoder.encoder.0.weight: 9.549202513881028e-05\n", + "Grad encoder.encoder.0.bias: 0.0003468778159003705\n", + "Grad encoder.encoder.2.weight: 9.234778553945944e-05\n", + "Grad encoder.encoder.2.bias: 0.0005188771756365895\n", + "Grad encoder.encoder.4.weight: 0.0002371428709011525\n", + "Grad encoder.encoder.4.bias: 0.0007280527497641742\n", + "Grad decoder.fc1.0.weight: 8.958228136179969e-05\n", + "Grad decoder.fc1.0.bias: 0.0005277436575852334\n", + "Grad decoder.fc1.2.weight: 7.200645632110536e-05\n", + "Grad decoder.fc1.2.bias: 0.0005157207488082349\n", + "Grad decoder.fc1.4.weight: 6.0456382925622165e-05\n", + "Grad decoder.fc1.4.bias: 0.000345479667885229\n", + "Grad decoder.fc2.weight: 0.0001033405278576538\n", + "Grad decoder.fc2.bias: 0.001921625342220068\n", + "Grad _memory_unit.weight_ih_l0: 1.3071949069853872e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.7881236494285986e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.2939460905035958e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.712263711960986e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001053716114256531\n", + "Grad _memory_unit.bias_hh_l1: 5.4660107707604766e-05\n", + "Data X Sample: tensor([[1.5287, 1.7580, 1.8678, 1.9416, 2.0541, 2.4132, 2.3834, 2.5127, 2.5606,\n", + " 2.5955, 2.6616, 2.6330, 2.5810, 2.5411, 2.4538, 2.4274, 2.4167, 2.6114,\n", + " 2.4553, 2.4269, 2.3702, 2.4097, 2.3664, 2.4412, 2.3667, 2.4134, 2.3869,\n", + " 2.4104, 2.1856, 2.3810, 2.2187, 2.2604, 2.2506, 1.4395, 1.9781, 1.7682,\n", + " 1.6381, 1.5345, 1.6607, 1.5718, 1.2743, 0.6671, 0.7053, 1.1740, 1.7205,\n", + " 1.8699, 1.3054, 1.9704]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 3.2372e-01, 5.6740e-01, -3.6985e-01, 7.4626e-01, 3.6540e-01,\n", + " -6.9370e-01, -4.5896e-01, -6.3515e-01, -1.0923e+00, -4.3631e-01,\n", + " -6.5500e-01, -7.7060e+00, -3.2356e-03, 1.4787e-01, 5.4908e-01,\n", + " -4.6452e-01, -4.2290e-01, 6.2080e-01, 9.9749e-02, -4.2052e-01,\n", + " -6.6546e-01, -1.0430e+00, -2.5363e-01, 1.6923e-01, 2.7641e+00,\n", + " 4.9327e-01, -8.1376e-01, -2.0948e-01, 3.9635e-01, 5.0761e-02,\n", + " 1.3426e-01, -2.8368e-01, -2.0300e-01, 3.5210e-01, 1.0487e+00,\n", + " 1.4594e-01, 8.4931e-02, 7.9957e-01, -7.5457e-01, -3.4763e-01,\n", + " -1.6001e-01, -1.6720e-01, -2.5462e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2383, 0.1721, 0.0664, 0.0675, 0.0015, -0.0804, -0.2103, -0.2117,\n", + " -0.1227, -0.1607, -0.1508, 0.1062, 0.0598, 0.1051, 0.0700, 0.0968,\n", + " 0.1243, -0.0300, 0.0458, 0.0589, 0.0120, -0.0308, -0.0195, -0.0253,\n", + " 0.0153, 0.0541, -0.0544, -0.0303, 0.0655, 0.1170, 0.1183, 0.1152,\n", + " 0.1515, 0.0850, 0.1062, 0.0474, -0.0598, 0.0203, 0.0054, -0.1180,\n", + " -0.1127, -0.0788, -0.1297]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005981739959679544\n", + "Grad encoder.fc1.bias: 0.0003178943879902363\n", + "Grad encoder.encoder.0.weight: 0.0001472340663895011\n", + "Grad encoder.encoder.0.bias: 0.0004579575324896723\n", + "Grad encoder.encoder.2.weight: 0.0001090686782845296\n", + "Grad encoder.encoder.2.bias: 0.0004948723362758756\n", + "Grad encoder.encoder.4.weight: 0.00027245591627433896\n", + "Grad encoder.encoder.4.bias: 0.0014627547934651375\n", + "Grad decoder.fc1.0.weight: 7.591813482576981e-05\n", + "Grad decoder.fc1.0.bias: 0.00033581379102542996\n", + "Grad decoder.fc1.2.weight: 4.803660704055801e-05\n", + "Grad decoder.fc1.2.bias: 0.000428415194619447\n", + "Grad decoder.fc1.4.weight: 4.349828668637201e-05\n", + "Grad decoder.fc1.4.bias: 0.0005757404142059386\n", + "Grad decoder.fc2.weight: 7.280096906470135e-05\n", + "Grad decoder.fc2.bias: 0.0018325569108128548\n", + "Grad _memory_unit.weight_ih_l0: 6.05621789873112e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.51469519350212e-06\n", + "Grad _memory_unit.bias_hh_l0: 6.204526471265126e-06\n", + "Grad _memory_unit.weight_ih_l1: 3.564481630746741e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.723134331172332e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.90400382457301e-05\n", + "Data X Sample: tensor([[1.5075, 1.6415, 1.8137, 2.0860, 2.0711, 2.2585, 2.3588, 2.4105, 2.5313,\n", + " 2.5323, 2.5220, 2.6330, 2.4745, 2.4320, 2.5194, 2.4342, 2.4089, 2.3638,\n", + " 2.4161, 2.3377, 2.3898, 2.4801, 2.3881, 2.3553, 2.4230, 2.4447, 2.3656,\n", + " 2.4390, 2.2133, 2.3155, 2.2187, 2.2438, 2.2220, 1.4372, 1.9119, 1.7658,\n", + " 1.6636, 1.4868, 1.5846, 1.5945, 1.1788, 0.6890, 0.6831, 1.2888, 1.7641,\n", + " 2.0014, 1.4618, 1.8610]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3538, -0.0411, -0.5334, 0.7068, 0.1530, 0.5062, 0.7642, -0.2500,\n", + " 0.6842, 0.6702, 0.8757, 1.0247, 0.7068, -0.5002, 1.3828, 0.4165,\n", + " 0.3023, -1.1603, 0.6821, -1.0103, 0.4832, -0.4575, -0.7934, -0.7799,\n", + " -0.5579, -0.5135, -0.3383, 0.4816, 1.1646, -0.2845, -0.0507, -0.1462,\n", + " 0.8686, 0.0410, 0.6518, -0.4823, 0.6097, 0.0940, 0.2870, 1.2796,\n", + " 0.7729, 0.4695, -0.1875]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3153, 0.2266, 0.0943, 0.1354, 0.0282, -0.0962, -0.2705, -0.2976,\n", + " -0.1782, -0.2197, -0.2150, 0.1557, 0.1141, 0.1682, 0.1072, 0.1649,\n", + " 0.1709, -0.0064, 0.0667, 0.0847, 0.0246, -0.0093, 0.0073, -0.0192,\n", + " 0.0128, 0.0268, -0.0507, -0.0143, 0.1090, 0.1877, 0.1673, 0.1670,\n", + " 0.2094, 0.1580, 0.1484, 0.0958, -0.0658, 0.0372, 0.0041, -0.1834,\n", + " -0.1847, -0.1496, -0.2093]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0008756512543186545\n", + "Grad encoder.fc1.bias: 0.0006564102368429303\n", + "Grad encoder.encoder.0.weight: 0.00014899997040629387\n", + "Grad encoder.encoder.0.bias: 0.000757227127905935\n", + "Grad encoder.encoder.2.weight: 0.00011141372669953853\n", + "Grad encoder.encoder.2.bias: 0.0010753595270216465\n", + "Grad encoder.encoder.4.weight: 0.0003677617642097175\n", + "Grad encoder.encoder.4.bias: 0.0035068155266344547\n", + "Grad decoder.fc1.0.weight: 0.0001331224339082837\n", + "Grad decoder.fc1.0.bias: 0.0008935340447351336\n", + "Grad decoder.fc1.2.weight: 9.81916964519769e-05\n", + "Grad decoder.fc1.2.bias: 0.0015145107172429562\n", + "Grad decoder.fc1.4.weight: 8.35736864246428e-05\n", + "Grad decoder.fc1.4.bias: 0.000611857685726136\n", + "Grad decoder.fc2.weight: 0.00015380930562969297\n", + "Grad decoder.fc2.bias: 0.0021158778108656406\n", + "Grad _memory_unit.weight_ih_l0: 5.532327850232832e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00013114271860104054\n", + "Grad _memory_unit.bias_hh_l0: 9.170162229565904e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.791685619740747e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0003191509749740362\n", + "Grad _memory_unit.bias_hh_l1: 0.00017370912246406078\n", + "Data X Sample: tensor([[1.6538, 1.8337, 2.0030, 2.0247, 2.1889, 2.3646, 2.2879, 2.3906, 2.3995,\n", + " 2.4438, 2.4522, 2.4188, 2.3502, 2.3748, 2.2672, 2.2318, 2.2265, 2.3715,\n", + " 2.3810, 2.3525, 2.3849, 2.4403, 2.4508, 2.5271, 2.5056, 2.5858, 2.4908,\n", + " 2.5858, 2.1544, 2.1452, 2.0297, 1.9509, 1.6324, 1.0802, 1.4658, 1.4861,\n", + " 1.4178, 1.3914, 1.4071, 1.3647, 1.2695, 0.7129, 0.7882, 1.3032, 1.9345,\n", + " 1.9556, 1.3258, 2.0486]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5268, 0.7960, -0.2874, 0.8132, 0.4923, 0.1187, 0.3204, -0.3196,\n", + " -0.7853, -0.7254, -0.3833, -0.0637, -0.6398, 0.8823, -0.4536, 0.2444,\n", + " 0.1425, -0.6976, -2.6528, -1.1194, -0.2671, 0.8916, -0.5256, -1.5564,\n", + " 0.9150, -2.1271, -0.3650, -0.2089, -0.1241, 0.3536, 1.2366, 0.8832,\n", + " 0.8779, 0.6788, 0.0659, 0.0379, 0.4852, -0.0459, 0.2253, -0.1746,\n", + " -0.6670, -1.0201, -1.4876]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3134, 0.2108, 0.0952, 0.1458, 0.0299, -0.0870, -0.2672, -0.2926,\n", + " -0.1787, -0.2077, -0.2180, 0.1565, 0.1290, 0.1741, 0.1078, 0.1668,\n", + " 0.1573, -0.0022, 0.0666, 0.0856, 0.0245, -0.0032, 0.0183, -0.0173,\n", + " 0.0019, 0.0088, -0.0386, -0.0031, 0.1104, 0.1869, 0.1608, 0.1728,\n", + " 0.1994, 0.1639, 0.1491, 0.1020, -0.0684, 0.0447, -0.0073, -0.1841,\n", + " -0.1774, -0.1511, -0.2203]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006948196096345782\n", + "Grad encoder.fc1.bias: 0.0005883233388885856\n", + "Grad encoder.encoder.0.weight: 0.00010850051330635324\n", + "Grad encoder.encoder.0.bias: 0.0006036891136318445\n", + "Grad encoder.encoder.2.weight: 8.082009298959747e-05\n", + "Grad encoder.encoder.2.bias: 0.0008426446001976728\n", + "Grad encoder.encoder.4.weight: 0.0002816255728248507\n", + "Grad encoder.encoder.4.bias: 0.0023536481894552708\n", + "Grad decoder.fc1.0.weight: 0.00010138355719391257\n", + "Grad decoder.fc1.0.bias: 0.0006570611149072647\n", + "Grad decoder.fc1.2.weight: 8.325772068928927e-05\n", + "Grad decoder.fc1.2.bias: 0.0013251141645014286\n", + "Grad decoder.fc1.4.weight: 7.820218161214143e-05\n", + "Grad decoder.fc1.4.bias: 0.0007667441968806088\n", + "Grad decoder.fc2.weight: 0.00017769481928553432\n", + "Grad decoder.fc2.bias: 0.0015141587937250733\n", + "Grad _memory_unit.weight_ih_l0: 4.2598585423547775e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00013574186596088111\n", + "Grad _memory_unit.bias_hh_l0: 8.531039202352986e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.272800156788435e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002649945963639766\n", + "Grad _memory_unit.bias_hh_l1: 0.0001439382613170892\n", + "Data X Sample: tensor([[1.4968, 1.6342, 1.6935, 1.7952, 1.8645, 2.1186, 2.1030, 2.0315, 2.7949,\n", + " 4.0851, 4.2477, 4.3780, 4.0834, 3.8034, 3.7425, 3.7416, 3.6511, 3.6540,\n", + " 3.4424, 3.4832, 3.5037, 3.3772, 2.9062, 2.8249, 2.7814, 2.8652, 3.0129,\n", + " 3.0508, 2.9245, 3.0426, 3.1391, 3.3215, 3.7665, 2.8423, 4.5395, 4.9642,\n", + " 5.1246, 5.4622, 6.0722, 5.9580, 1.0977, 0.6034, 0.6245, 1.0620, 1.5381,\n", + " 1.6926, 1.1422, 1.6186]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5040, -1.0180, -0.2994, -1.0104, -0.1777, 0.0857, 0.5539, 0.5190,\n", + " 0.9396, 0.4459, 0.5875, -0.5873, 0.2589, -1.5154, -0.7996, -1.6824,\n", + " -0.7005, 0.0112, -0.3435, -0.4697, -0.9432, -0.2475, 0.6369, -0.7075,\n", + " -0.6724, -0.2700, 0.5224, -0.9934, -1.1551, -0.8231, 0.0913, -0.8635,\n", + " -0.0266, -0.8629, -0.2996, -0.8124, 0.0000, -0.8872, -0.4066, 0.5781,\n", + " 0.7037, 0.4495, 0.3141]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2548, -0.2554, -0.0906, -0.2065, -0.0656, 0.0928, 0.1716, 0.2939,\n", + " 0.1243, 0.1854, 0.2361, -0.1462, -0.1304, -0.2601, -0.1482, -0.2271,\n", + " -0.2334, -0.0893, -0.0777, -0.0864, -0.0677, -0.0532, -0.0399, -0.0130,\n", + " -0.0110, 0.0259, -0.0394, -0.1058, -0.1853, -0.1686, -0.2044, -0.1703,\n", + " -0.2307, -0.2838, -0.1304, -0.1754, -0.0141, 0.0285, 0.0270, 0.3165,\n", + " 0.3101, 0.3184, 0.2080]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002872304758056998\n", + "Grad encoder.fc1.bias: 0.00038490636507049203\n", + "Grad encoder.encoder.0.weight: 6.297986692516133e-05\n", + "Grad encoder.encoder.0.bias: 0.0003500828461255878\n", + "Grad encoder.encoder.2.weight: 5.873363988939673e-05\n", + "Grad encoder.encoder.2.bias: 0.0004606518195942044\n", + "Grad encoder.encoder.4.weight: 0.00016357025015167892\n", + "Grad encoder.encoder.4.bias: 0.0010476328898221254\n", + "Grad decoder.fc1.0.weight: 6.558475433848798e-05\n", + "Grad decoder.fc1.0.bias: 0.00044288786011748016\n", + "Grad decoder.fc1.2.weight: 7.67326564528048e-05\n", + "Grad decoder.fc1.2.bias: 0.0005503634456545115\n", + "Grad decoder.fc1.4.weight: 8.241426985478029e-05\n", + "Grad decoder.fc1.4.bias: 0.0007164885755628347\n", + "Grad decoder.fc2.weight: 0.0001567820436321199\n", + "Grad decoder.fc2.bias: 0.0024377801455557346\n", + "Grad _memory_unit.weight_ih_l0: 1.0871165613934863e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.526987711666152e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.2217020159587264e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.337114089343231e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.74495051195845e-05\n", + "Grad _memory_unit.bias_hh_l1: 5.055554356658831e-05\n", + "Data X Sample: tensor([[ 0.0265, 0.0277, 0.0225, 0.0131, 0.0051, 0.0398, 0.0247, 0.0028,\n", + " 0.0195, 0.0269, 0.0127, -0.0058, 0.0044, 0.0027, 0.0076, 0.0055,\n", + " -0.0692, -0.0928, -0.1301, -0.1283, -0.1104, -0.0628, -0.1615, -0.1432,\n", + " -0.1164, -0.2298, -0.2477, -0.4364, -0.0243, -0.0819, -0.1085, -0.0774,\n", + " -0.0638, -0.0664, -0.0662, -0.0122, -0.0354, -0.0345, 0.0063, -0.0142,\n", + " -0.0143, -0.0100, -0.0121, -0.0230, 0.0000, 0.0343, 0.0136, 0.0313]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5465, 1.3254, 1.0155, 0.6277, 0.5150, -0.5740, -1.4913, -0.8903,\n", + " -0.7417, -0.5558, -0.8009, 0.4632, 0.6826, 0.2673, 0.1991, 0.4055,\n", + " 0.3254, 0.1734, 0.2233, 0.1744, 0.2646, -0.9246, -0.1057, -0.3291,\n", + " 0.0246, 0.7032, 0.7852, 0.5611, 1.2151, 1.3864, 0.3789, 0.6039,\n", + " 0.7350, 0.8448, -0.3393, -1.0582, 0.8892, -0.4097, -0.3874, -0.6387,\n", + " -0.6399, -0.8615, -0.2126]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.6589, 0.4347, 0.2016, 0.3974, 0.0074, -0.2279, -0.6556, -0.7741,\n", + " -0.4377, -0.4880, -0.4372, 0.3888, 0.3447, 0.4512, 0.2622, 0.3983,\n", + " 0.3659, 0.1410, 0.1853, 0.2076, 0.0542, 0.0531, 0.0664, 0.0623,\n", + " 0.0420, -0.0271, 0.0169, 0.1980, 0.4222, 0.5924, 0.4514, 0.4311,\n", + " 0.4729, 0.4864, 0.3028, 0.2159, -0.0599, 0.1165, -0.0228, -0.4459,\n", + " -0.4732, -0.4166, -0.4948]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 7.67551755416207e-05\n", + "Grad encoder.fc1.bias: 0.00026125810109078884\n", + "Grad encoder.encoder.0.weight: 2.074114490824286e-05\n", + "Grad encoder.encoder.0.bias: 0.00021733131143264472\n", + "Grad encoder.encoder.2.weight: 2.2314266971079633e-05\n", + "Grad encoder.encoder.2.bias: 0.00023017296916805208\n", + "Grad encoder.encoder.4.weight: 6.133475108072162e-05\n", + "Grad encoder.encoder.4.bias: 0.0005026580183766782\n", + "Grad decoder.fc1.0.weight: 2.9751045076409355e-05\n", + "Grad decoder.fc1.0.bias: 0.0002203222829848528\n", + "Grad decoder.fc1.2.weight: 4.7437206376343966e-05\n", + "Grad decoder.fc1.2.bias: 0.00030815083300694823\n", + "Grad decoder.fc1.4.weight: 5.081060589873232e-05\n", + "Grad decoder.fc1.4.bias: 0.0004282363806851208\n", + "Grad decoder.fc2.weight: 0.0001450089766876772\n", + "Grad decoder.fc2.bias: 0.0016117951599881053\n", + "Grad _memory_unit.weight_ih_l0: 3.7516365409828722e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.5766076103318483e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.582385817135219e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.214498408648069e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.9664449761621654e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.5644261768320575e-05\n", + "Data X Sample: tensor([[-0.0085, 0.0000, 0.0075, 0.0022, -0.0034, 0.0000, 0.0077, -0.0043,\n", + " 0.0122, 0.0063, 0.0095, -0.0039, 0.0111, 0.0191, 0.0000, 0.0000,\n", + " -0.0236, -0.0077, -0.0083, -0.0056, -0.0025, -0.0122, -0.0048, -0.0134,\n", + " 0.0000, -0.0104, 0.0213, 0.0408, -0.0069, 0.0557, 0.0280, 0.0000,\n", + " 0.0044, -0.0137, -0.0025, 0.0219, 0.0236, 0.0186, -0.0190, 0.0113,\n", + " -0.0095, 0.0159, 0.0121, -0.0057, 0.0317, 0.0114, -0.0068, 0.0078]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5219, 1.1781, -0.4428, 1.3200, -0.1872, -0.9967, -1.3431, -1.5073,\n", + " -0.1234, -0.9422, -0.4887, 0.3707, 0.2747, 0.8902, 0.6858, 0.0509,\n", + " 0.5588, 2.0616, -1.0332, -2.1393, -0.4924, 9.7704, -0.7969, -0.5836,\n", + " 1.2764, -1.4640, 1.7673, -1.2217, 0.9525, 1.0439, 1.3359, 0.9501,\n", + " 0.1762, 0.6295, 0.3618, 0.9593, 0.7063, -0.1011, 0.0173, -0.5375,\n", + " -0.2887, -0.6227, -0.0437]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.8636, 0.5570, 0.1566, 0.3520, -0.5007, -0.6381, -1.1191, -1.0968,\n", + " -0.7944, -0.8275, -0.7974, 0.4272, 0.4196, 0.6163, 0.3117, 0.4542,\n", + " 0.4215, 0.0972, 0.1572, 0.2242, 0.0357, 0.0381, 0.0606, 0.0255,\n", + " 0.0735, -0.0591, 0.3041, 0.5380, 0.8923, 0.9656, 0.7326, 0.5977,\n", + " 0.6778, 0.6196, 0.3544, 0.2351, -0.0470, 0.0488, 0.0454, -0.6856,\n", + " -0.6307, -0.4969, -0.5147]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00013707243488170207\n", + "Grad encoder.fc1.bias: 0.0005298670148476958\n", + "Grad encoder.encoder.0.weight: 3.0149700251058675e-05\n", + "Grad encoder.encoder.0.bias: 0.00034773992956615984\n", + "Grad encoder.encoder.2.weight: 2.5093002477660775e-05\n", + "Grad encoder.encoder.2.bias: 0.00031038737506605685\n", + "Grad encoder.encoder.4.weight: 7.834732241462916e-05\n", + "Grad encoder.encoder.4.bias: 0.0006921046297065914\n", + "Grad decoder.fc1.0.weight: 3.7425808841362596e-05\n", + "Grad decoder.fc1.0.bias: 0.000343061430612579\n", + "Grad decoder.fc1.2.weight: 4.186757723800838e-05\n", + "Grad decoder.fc1.2.bias: 0.0002598436549305916\n", + "Grad decoder.fc1.4.weight: 3.7314854125725105e-05\n", + "Grad decoder.fc1.4.bias: 0.00018711280426941812\n", + "Grad decoder.fc2.weight: 0.00011156625259900466\n", + "Grad decoder.fc2.bias: 0.001840758603066206\n", + "Grad _memory_unit.weight_ih_l0: 5.276678621157771e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.4668215701240115e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.2813215107598808e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.7981404855381697e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.635200406890363e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.395781823201105e-05\n", + "Data X Sample: tensor([[ 0.0011, 0.0044, 0.0210, 0.0131, -0.0034, 0.0192, 0.0046, 0.0071,\n", + " 0.0415, 0.0158, 0.0508, 0.0195, 0.0089, 0.0055, 0.0101, 0.0055,\n", + " -0.0755, -0.0793, -0.1012, -0.0781, -0.0810, -0.0643, -0.0892, -0.0840,\n", + " -0.0769, -0.1567, -0.1252, -0.1917, -0.0659, -0.0328, -0.0455, -0.0249,\n", + " -0.0044, -0.0572, 0.0098, 0.0438, -0.0020, -0.0186, -0.0063, -0.0113,\n", + " 0.0048, -0.0119, -0.0040, -0.0057, 0.0238, -0.0114, 0.0136, -0.0078]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0591, -0.0501, 0.7734, 0.1436, -0.0532, -0.8834, 0.0892, 0.0278,\n", + " 0.2831, -0.2303, -0.3495, 0.2801, 1.5042, 0.9864, -0.1361, 0.3055,\n", + " 1.3389, 1.2190, 1.0768, 0.0309, 0.7592, 0.5794, 1.8987, 1.0722,\n", + " 0.4978, 1.4543, 0.1473, -0.2534, 1.1625, 0.9816, -0.2104, 0.7872,\n", + " 1.2115, -0.3024, -0.5872, -0.3190, 0.7170, 0.7816, -0.0156, -0.2446,\n", + " -0.4303, -0.4205, -0.2504]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.6244, 0.4156, 0.1884, 0.3926, -0.0155, -0.2279, -0.6381, -0.7580,\n", + " -0.4186, -0.4594, -0.4144, 0.3839, 0.3516, 0.4333, 0.2658, 0.3902,\n", + " 0.3396, 0.1334, 0.1721, 0.1856, 0.0479, 0.0466, 0.0664, 0.0448,\n", + " 0.0351, -0.0398, 0.0272, 0.2165, 0.4155, 0.5708, 0.4421, 0.4164,\n", + " 0.4613, 0.4822, 0.3015, 0.1995, -0.0455, 0.1176, -0.0326, -0.4289,\n", + " -0.4515, -0.4060, -0.4591]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00013829876843374223\n", + "Grad encoder.fc1.bias: 0.0005700218607671559\n", + "Grad encoder.encoder.0.weight: 2.5623268811614253e-05\n", + "Grad encoder.encoder.0.bias: 0.00038065374246798456\n", + "Grad encoder.encoder.2.weight: 2.431491702736821e-05\n", + "Grad encoder.encoder.2.bias: 0.00035308621590957046\n", + "Grad encoder.encoder.4.weight: 8.908224117476493e-05\n", + "Grad encoder.encoder.4.bias: 0.00085215870058164\n", + "Grad decoder.fc1.0.weight: 4.232545688864775e-05\n", + "Grad decoder.fc1.0.bias: 0.00036508121411316097\n", + "Grad decoder.fc1.2.weight: 5.229139787843451e-05\n", + "Grad decoder.fc1.2.bias: 0.0003068035584874451\n", + "Grad decoder.fc1.4.weight: 4.8748126573627815e-05\n", + "Grad decoder.fc1.4.bias: 0.00025061023188754916\n", + "Grad decoder.fc2.weight: 0.00011110890773124993\n", + "Grad decoder.fc2.bias: 0.0020907775033265352\n", + "Grad _memory_unit.weight_ih_l0: 7.461544555553701e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.9573382562375627e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.5446916222572327e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.4656486604944803e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.122780127450824e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.181015174253844e-05\n", + "Data X Sample: tensor([[1.2889, 1.3982, 1.5176, 1.7033, 1.9021, 1.9344, 2.0136, 2.3949, 3.9691,\n", + " 4.2210, 4.2921, 4.1637, 3.9081, 3.8961, 3.9417, 3.6226, 3.5205, 3.8068,\n", + " 3.6200, 3.4609, 3.3025, 3.2486, 2.8243, 2.7256, 2.7739, 2.8261, 2.8211,\n", + " 2.8958, 2.9419, 3.0688, 3.1216, 3.2690, 3.7951, 2.8400, 4.5567, 4.9496,\n", + " 5.0381, 5.4993, 5.8947, 5.7537, 1.0309, 0.5337, 0.5376, 0.9702, 1.4509,\n", + " 1.6068, 1.1694, 1.6655]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4526, -0.7953, 0.3896, -0.3618, -0.6322, 1.1626, 0.0560, 0.7077,\n", + " 0.8376, 0.5289, 0.8544, -0.1829, -0.0311, -0.6585, 0.5231, -0.1742,\n", + " -0.0543, 0.6261, -1.4314, -0.5790, -0.6347, -1.2641, -0.7253, -0.9378,\n", + " -4.9843, 1.0652, 1.4127, 0.4761, -0.7993, 0.2374, -0.4341, -0.2782,\n", + " -0.5001, -0.8008, -1.1046, -1.1935, -0.6348, -0.6429, -0.0231, 0.6946,\n", + " 0.6937, 0.5730, 1.3613]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3111, -0.2890, -0.1092, -0.2247, -0.0656, 0.1099, 0.2163, 0.3546,\n", + " 0.1483, 0.2159, 0.2999, -0.1693, -0.1512, -0.3099, -0.1652, -0.2571,\n", + " -0.2548, -0.0988, -0.1031, -0.0950, -0.0854, -0.0566, -0.0327, -0.0032,\n", + " -0.0030, 0.0294, -0.0534, -0.1382, -0.2205, -0.1940, -0.2442, -0.2099,\n", + " -0.2572, -0.3370, -0.1517, -0.2093, -0.0102, 0.0252, 0.0341, 0.3786,\n", + " 0.3554, 0.3775, 0.2414]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00016088606207631528\n", + "Grad encoder.fc1.bias: 0.0012532687978819013\n", + "Grad encoder.encoder.0.weight: 3.670487421914004e-05\n", + "Grad encoder.encoder.0.bias: 0.0008185456972569227\n", + "Grad encoder.encoder.2.weight: 3.166752867400646e-05\n", + "Grad encoder.encoder.2.bias: 0.0005585743929259479\n", + "Grad encoder.encoder.4.weight: 9.497164137428626e-05\n", + "Grad encoder.encoder.4.bias: 0.000840425374917686\n", + "Grad decoder.fc1.0.weight: 4.999223892809823e-05\n", + "Grad decoder.fc1.0.bias: 0.00042822700925171375\n", + "Grad decoder.fc1.2.weight: 6.415981624741107e-05\n", + "Grad decoder.fc1.2.bias: 0.0003620709467213601\n", + "Grad decoder.fc1.4.weight: 5.1513256039470434e-05\n", + "Grad decoder.fc1.4.bias: 0.0002755845198407769\n", + "Grad decoder.fc2.weight: 0.00012109858653275296\n", + "Grad decoder.fc2.bias: 0.0019656186923384666\n", + "Grad _memory_unit.weight_ih_l0: 6.8968956838943996e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.9128361347829923e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.4622971320932265e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.0897799661033787e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.834235682617873e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.4859014704125e-05\n", + "Data X Sample: tensor([[1.4173, 1.6022, 1.8317, 1.9701, 2.0267, 1.9860, 1.9905, 1.9051, 2.6412,\n", + " 3.5449, 4.0066, 4.0527, 3.9525, 3.8961, 3.5584, 3.4066, 3.4356, 3.4277,\n", + " 3.3267, 3.3828, 3.4007, 3.4139, 2.9158, 2.7752, 2.8040, 2.8679, 2.8025,\n", + " 2.8917, 2.8517, 3.1114, 3.1041, 3.1364, 3.4673, 2.6180, 4.2944, 4.6164,\n", + " 4.8729, 5.2819, 5.7553, 5.4643, 1.0595, 0.6532, 0.6710, 1.1596, 1.7086,\n", + " 1.8298, 1.3462, 1.8844]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1967, -0.3847, -0.4517, -0.3730, 1.7238, -0.1718, 0.7967, 0.6430,\n", + " 0.1552, 0.4057, 0.4400, 0.3849, -0.8503, 0.1744, 0.3538, -1.2977,\n", + " -0.2969, 0.1521, 0.1466, -1.6573, 0.4188, -2.7070, 0.4307, -4.2163,\n", + " 0.3257, 1.4708, 0.7511, 0.9221, 0.0328, 0.2843, -0.4480, 0.1710,\n", + " -1.4117, -1.0239, -0.7254, 0.5618, -0.3045, -0.7204, -0.0231, 0.4732,\n", + " 0.8392, 0.7960, 1.0803]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3043, -0.2854, -0.1072, -0.2230, -0.0671, 0.1063, 0.2106, 0.3488,\n", + " 0.1484, 0.2156, 0.2935, -0.1641, -0.1476, -0.3037, -0.1602, -0.2572,\n", + " -0.2535, -0.0971, -0.1001, -0.0954, -0.0839, -0.0587, -0.0324, -0.0067,\n", + " -0.0064, 0.0308, -0.0494, -0.1308, -0.2154, -0.1939, -0.2379, -0.2053,\n", + " -0.2522, -0.3288, -0.1528, -0.2055, -0.0101, 0.0270, 0.0309, 0.3715,\n", + " 0.3529, 0.3707, 0.2373]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0015353967901319265\n", + "Grad encoder.fc1.bias: 0.0011783139780163765\n", + "Grad encoder.encoder.0.weight: 0.00022510491544380784\n", + "Grad encoder.encoder.0.bias: 0.0011600435245782137\n", + "Grad encoder.encoder.2.weight: 0.00018142300541512668\n", + "Grad encoder.encoder.2.bias: 0.0016796101117506623\n", + "Grad encoder.encoder.4.weight: 0.0005097957327961922\n", + "Grad encoder.encoder.4.bias: 0.004706490319222212\n", + "Grad decoder.fc1.0.weight: 0.00016396166756749153\n", + "Grad decoder.fc1.0.bias: 0.0010549331782385707\n", + "Grad decoder.fc1.2.weight: 0.0001036770991049707\n", + "Grad decoder.fc1.2.bias: 0.0018041429575532675\n", + "Grad decoder.fc1.4.weight: 5.100934868096374e-05\n", + "Grad decoder.fc1.4.bias: 0.0007426846423186362\n", + "Grad decoder.fc2.weight: 0.00011776004248531535\n", + "Grad decoder.fc2.bias: 0.0017735103610903025\n", + "Grad _memory_unit.weight_ih_l0: 7.038863986963406e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00014803747762925923\n", + "Grad _memory_unit.bias_hh_l0: 0.00010335220576962456\n", + "Grad _memory_unit.weight_ih_l1: 3.306522921775468e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0004405371146276593\n", + "Grad _memory_unit.bias_hh_l1: 0.00022756383987143636\n", + "Data X Sample: tensor([[1.4820, 1.5847, 1.7896, 1.9023, 2.1428, 2.1333, 2.1585, 2.0187, 3.5712,\n", + " 4.2731, 4.3302, 4.4091, 4.0857, 4.0515, 3.8055, 3.7307, 3.7879, 3.5670,\n", + " 3.6489, 3.5874, 3.5896, 3.3282, 2.9640, 2.8459, 2.7983, 2.8914, 2.8291,\n", + " 2.9978, 2.8690, 3.1441, 3.2021, 3.3381, 3.7687, 2.8446, 4.6572, 5.0055,\n", + " 5.0479, 5.4860, 5.9898, 5.9211, 1.0834, 0.6173, 0.6447, 1.1080, 1.5896,\n", + " 1.8584, 1.2510, 1.6968]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7652, 0.3071, -0.4038, 0.6966, -0.0631, 0.0820, 0.2953, -0.2067,\n", + " -0.6731, -0.0052, -0.0648, -0.0121, 0.2678, 0.3114, 0.7460, 1.1005,\n", + " -0.7752, 0.4626, 0.0260, 0.7829, 0.1625, 2.3470, 0.2111, -0.0499,\n", + " -0.3136, -0.8565, -0.7743, -1.4516, 1.2207, -0.2187, -0.2612, 1.3449,\n", + " 4.7723, 0.2205, -0.2010, 0.2220, 0.7406, 0.5703, 0.0000, -0.9628,\n", + " -0.5620, -1.7499, -0.3932]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3374, -0.3067, -0.1168, -0.2360, -0.0667, 0.1175, 0.2379, 0.3860,\n", + " 0.1612, 0.2321, 0.3303, -0.1806, -0.1632, -0.3358, -0.1733, -0.2762,\n", + " -0.2659, -0.1012, -0.1145, -0.1037, -0.0942, -0.0615, -0.0299, 0.0006,\n", + " -0.0040, 0.0370, -0.0586, -0.1498, -0.2361, -0.2066, -0.2623, -0.2282,\n", + " -0.2690, -0.3606, -0.1667, -0.2256, -0.0090, 0.0233, 0.0381, 0.4098,\n", + " 0.3787, 0.4084, 0.2608]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001353219267912209\n", + "Grad encoder.fc1.bias: 8.968195470515639e-05\n", + "Grad encoder.encoder.0.weight: 3.2555173675064e-05\n", + "Grad encoder.encoder.0.bias: 7.762882160022855e-05\n", + "Grad encoder.encoder.2.weight: 2.7884567316505127e-05\n", + "Grad encoder.encoder.2.bias: 0.00016506819520145655\n", + "Grad encoder.encoder.4.weight: 7.47216326999478e-05\n", + "Grad encoder.encoder.4.bias: 0.0006158608011901379\n", + "Grad decoder.fc1.0.weight: 4.037393591715954e-05\n", + "Grad decoder.fc1.0.bias: 0.0002655430289451033\n", + "Grad decoder.fc1.2.weight: 5.436201172415167e-05\n", + "Grad decoder.fc1.2.bias: 0.0002611438394524157\n", + "Grad decoder.fc1.4.weight: 6.115857104305178e-05\n", + "Grad decoder.fc1.4.bias: 0.0004489898856263608\n", + "Grad decoder.fc2.weight: 0.00010742535232566297\n", + "Grad decoder.fc2.bias: 0.00227487669326365\n", + "Grad _memory_unit.weight_ih_l0: 3.5632322124001803e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.0692168618552387e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.1139491107314825e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.8424801712390035e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.171449396992102e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.721220855368301e-05\n", + "Data X Sample: tensor([[2.5449, 2.4003, 2.0315, 2.1516, 2.2760, 2.2777, 2.9827, 3.9494, 4.2498,\n", + " 4.2573, 4.3556, 4.1930, 4.0346, 3.8689, 3.8333, 3.7799, 3.6558, 3.6250,\n", + " 3.6158, 3.5186, 3.4399, 3.3757, 2.9737, 2.8573, 2.7158, 2.8313, 2.9437,\n", + " 2.9570, 2.7962, 3.0852, 3.1181, 3.1972, 3.3353, 2.5311, 4.1375, 4.5215,\n", + " 5.0047, 5.2448, 5.8694, 5.7736, 1.3936, 0.7667, 0.7255, 1.2802, 1.8830,\n", + " 2.2187, 1.4074, 1.9157]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0112, -0.1480, 0.3266, -0.2061, 0.7150, -0.0868, 0.1962, 0.2314,\n", + " 0.0161, 0.3189, -0.0050, 0.9075, -0.7609, -0.2575, -0.9514, 0.0183,\n", + " -0.9159, 0.1677, -0.6785, 1.2948, 0.1757, -0.1563, -0.1345, -0.7515,\n", + " 0.0835, -0.7444, 0.3862, 0.3958, -0.8668, -0.1138, -0.3056, 0.5494,\n", + " -0.3667, 0.0366, 0.1043, 0.2688, -0.5862, 0.0000, -0.7546, 0.6111,\n", + " 0.4602, 0.5453, 0.2829]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2812, -0.2725, -0.0973, -0.2157, -0.0683, 0.0960, 0.1911, 0.3261,\n", + " 0.1453, 0.2104, 0.2697, -0.1508, -0.1381, -0.2813, -0.1466, -0.2531,\n", + " -0.2483, -0.0936, -0.0904, -0.0951, -0.0775, -0.0638, -0.0325, -0.0157,\n", + " -0.0159, 0.0300, -0.0402, -0.1121, -0.1994, -0.1898, -0.2185, -0.1884,\n", + " -0.2371, -0.3028, -0.1505, -0.1904, -0.0110, 0.0300, 0.0229, 0.3466,\n", + " 0.3399, 0.3463, 0.2235]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00021759222727268934\n", + "Grad encoder.fc1.bias: 0.00025511279818601906\n", + "Grad encoder.encoder.0.weight: 5.307682295097038e-05\n", + "Grad encoder.encoder.0.bias: 0.0002269708493258804\n", + "Grad encoder.encoder.2.weight: 3.538096643751487e-05\n", + "Grad encoder.encoder.2.bias: 0.00019536748004611582\n", + "Grad encoder.encoder.4.weight: 9.928500367095694e-05\n", + "Grad encoder.encoder.4.bias: 0.00047437200555577874\n", + "Grad decoder.fc1.0.weight: 3.653453313745558e-05\n", + "Grad decoder.fc1.0.bias: 0.00015165054355747998\n", + "Grad decoder.fc1.2.weight: 4.3184707465115935e-05\n", + "Grad decoder.fc1.2.bias: 0.00022669753525406122\n", + "Grad decoder.fc1.4.weight: 4.660720151150599e-05\n", + "Grad decoder.fc1.4.bias: 0.00030557671561837196\n", + "Grad decoder.fc2.weight: 9.916687122313306e-05\n", + "Grad decoder.fc2.bias: 0.0020961330737918615\n", + "Grad _memory_unit.weight_ih_l0: 3.690867060868186e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.153385690297e-06\n", + "Grad _memory_unit.bias_hh_l0: 5.4012461987440474e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.5705591067671776e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.4807035262929276e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.758867801981978e-05\n", + "Data X Sample: tensor([[1.1924, 1.4376, 1.6303, 1.8433, 1.9038, 1.9550, 2.1261, 2.0627, 3.2002,\n", + " 4.1025, 4.3334, 4.1832, 4.0146, 3.9397, 3.6643, 3.6363, 3.6243, 3.6405,\n", + " 3.6964, 3.6469, 3.5111, 3.2823, 2.8869, 2.8191, 2.7852, 2.9567, 2.9517,\n", + " 2.9937, 2.9904, 3.2064, 3.2231, 3.3878, 3.7071, 2.7462, 4.4954, 4.9058,\n", + " 5.0322, 5.5867, 6.0215, 5.8643, 1.0118, 0.5974, 0.5881, 1.0649, 1.5936,\n", + " 1.7612, 1.2374, 1.7046]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4114, -0.6377, 0.0788, 0.0937, 0.5403, 0.1226, 1.0347, 0.4610,\n", + " 0.4044, 0.3055, 0.4006, -0.5076, -0.5993, 0.3883, -0.5449, -0.4156,\n", + " 0.1635, -1.3665, -0.2535, -0.3926, -0.5623, -0.2788, 0.1886, 0.7702,\n", + " -0.4339, 0.3661, 0.5697, -0.4436, 0.0524, -0.3972, -0.4078, 0.1140,\n", + " -0.6062, -0.8356, -0.6740, -0.4563, -0.6001, 0.0705, -0.2783, 0.5743,\n", + " 0.5250, 0.8638, 0.4350]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3275, -0.3024, -0.1088, -0.2333, -0.0668, 0.1117, 0.2298, 0.3765,\n", + " 0.1628, 0.2326, 0.3195, -0.1741, -0.1620, -0.3258, -0.1651, -0.2777,\n", + " -0.2656, -0.0989, -0.1107, -0.1037, -0.0918, -0.0675, -0.0291, -0.0041,\n", + " -0.0109, 0.0362, -0.0536, -0.1426, -0.2275, -0.2067, -0.2533, -0.2204,\n", + " -0.2605, -0.3469, -0.1668, -0.2175, -0.0101, 0.0232, 0.0354, 0.3992,\n", + " 0.3742, 0.3989, 0.2545]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0015270409639924765\n", + "Grad encoder.fc1.bias: 0.0008071465999819338\n", + "Grad encoder.encoder.0.weight: 0.00021266120893415064\n", + "Grad encoder.encoder.0.bias: 0.0009461882873438299\n", + "Grad encoder.encoder.2.weight: 0.00016525050159543753\n", + "Grad encoder.encoder.2.bias: 0.0014044181443750858\n", + "Grad encoder.encoder.4.weight: 0.0004409229732118547\n", + "Grad encoder.encoder.4.bias: 0.004325341433286667\n", + "Grad decoder.fc1.0.weight: 0.00014161453873384744\n", + "Grad decoder.fc1.0.bias: 0.0008702398627065122\n", + "Grad decoder.fc1.2.weight: 7.992393511813134e-05\n", + "Grad decoder.fc1.2.bias: 0.001657015411183238\n", + "Grad decoder.fc1.4.weight: 4.063966480316594e-05\n", + "Grad decoder.fc1.4.bias: 0.0006718047661706805\n", + "Grad decoder.fc2.weight: 0.00010487571853445843\n", + "Grad decoder.fc2.bias: 0.002022043103352189\n", + "Grad _memory_unit.weight_ih_l0: 6.195231981109828e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00015215398161672056\n", + "Grad _memory_unit.bias_hh_l0: 0.0001016168826026842\n", + "Grad _memory_unit.weight_ih_l1: 3.035273402929306e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00040306150913238525\n", + "Grad _memory_unit.bias_hh_l1: 0.00020936060172971338\n", + "Data X Sample: tensor([[1.3632, 1.4492, 1.6739, 1.7624, 1.8150, 1.8534, 2.0013, 1.9065, 3.0757,\n", + " 3.9051, 4.1367, 4.1287, 3.7261, 3.7843, 3.6845, 3.4681, 3.4231, 3.4683,\n", + " 3.4610, 3.4479, 3.3663, 3.3221, 3.0074, 2.8039, 2.7758, 2.7503, 2.8717,\n", + " 2.9855, 2.9210, 3.0491, 3.0796, 3.1336, 3.5091, 2.5334, 4.3410, 4.6577,\n", + " 4.9083, 5.2978, 5.8377, 5.6204, 1.0834, 0.6114, 0.6184, 1.0161, 1.5460,\n", + " 1.7441, 1.0606, 1.6733]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0337, -0.4487, -0.6721, 0.2393, 0.5724, 0.2350, 0.7502, 0.8869,\n", + " 0.2684, 0.8671, 0.6222, -1.3752, -0.6915, -1.2115, 0.0150, -0.1899,\n", + " -0.4585, -4.1691, -1.4597, 0.2443, -1.2445, -0.5110, -0.4698, -0.2320,\n", + " -3.8050, -1.0163, 0.0156, 0.7583, -0.1485, -0.3610, -0.4541, -0.2800,\n", + " 0.0658, -0.7011, 0.1146, 0.3745, 0.4852, 0.0000, -0.2505, 0.3737,\n", + " 0.3050, 0.0626, 0.7279]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3091, -0.2915, -0.1015, -0.2264, -0.0681, 0.1030, 0.2137, 0.3563,\n", + " 0.1582, 0.2266, 0.2991, -0.1642, -0.1552, -0.3073, -0.1551, -0.2714,\n", + " -0.2596, -0.0955, -0.1023, -0.1003, -0.0869, -0.0684, -0.0293, -0.0096,\n", + " -0.0158, 0.0333, -0.0461, -0.1288, -0.2134, -0.2015, -0.2380, -0.2057,\n", + " -0.2493, -0.3266, -0.1629, -0.2066, -0.0120, 0.0251, 0.0316, 0.3779,\n", + " 0.3625, 0.3799, 0.2425]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003382046124897897\n", + "Grad encoder.fc1.bias: 0.00014674502017442137\n", + "Grad encoder.encoder.0.weight: 7.364377233898267e-05\n", + "Grad encoder.encoder.0.bias: 0.00020490768656600267\n", + "Grad encoder.encoder.2.weight: 3.948318772017956e-05\n", + "Grad encoder.encoder.2.bias: 0.00021194871806073934\n", + "Grad encoder.encoder.4.weight: 9.106990182772279e-05\n", + "Grad encoder.encoder.4.bias: 0.00040374347008764744\n", + "Grad decoder.fc1.0.weight: 3.467913847998716e-05\n", + "Grad decoder.fc1.0.bias: 0.00017550893244333565\n", + "Grad decoder.fc1.2.weight: 2.591937482065987e-05\n", + "Grad decoder.fc1.2.bias: 0.00019255834922660142\n", + "Grad decoder.fc1.4.weight: 3.0789291486144066e-05\n", + "Grad decoder.fc1.4.bias: 0.0002688138629309833\n", + "Grad decoder.fc2.weight: 0.00010580170783214271\n", + "Grad decoder.fc2.bias: 0.0019529135897755623\n", + "Grad _memory_unit.weight_ih_l0: 4.859961791225942e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.328667147201486e-06\n", + "Grad _memory_unit.bias_hh_l0: 6.659977771050762e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.2216988782020053e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.023832687176764e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.608380989637226e-05\n", + "Data X Sample: tensor([[1.5732, 1.7216, 1.9955, 2.0685, 2.0882, 2.2320, 2.2078, 2.3239, 2.4361,\n", + " 2.3901, 2.3887, 2.3857, 2.4612, 2.3339, 2.2067, 2.2783, 2.2076, 2.3541,\n", + " 2.3851, 2.4213, 2.4634, 2.5413, 2.5303, 2.4870, 2.6069, 2.5727, 2.6293,\n", + " 2.6633, 2.3417, 2.4662, 2.3692, 2.3792, 2.1582, 1.4509, 1.8849, 1.6807,\n", + " 1.5516, 1.4762, 1.5402, 1.5604, 1.2027, 0.7687, 0.7720, 1.3118, 2.0217,\n", + " 2.0929, 1.4346, 1.9861]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7519, 0.4271, -1.8540, 0.4101, -0.3711, -0.0113, -0.5199, -0.4771,\n", + " -1.5129, -0.7047, -0.3918, 1.3415, 0.5306, 0.1711, 0.1664, 0.2374,\n", + " 0.9206, -0.5747, 0.3443, -0.1963, -0.5109, -0.0845, -0.3227, 0.4692,\n", + " -0.8660, -0.1316, 1.2441, -0.2110, 1.2105, 0.5901, 0.5971, 0.9611,\n", + " 0.3570, 0.6313, 0.6719, 1.5203, 0.0000, -0.8159, 0.0382, -0.1742,\n", + " -0.1532, -0.5298, 0.2645]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 3.7558e-01, 2.6183e-01, 1.4036e-01, 2.7434e-01, 3.9849e-02,\n", + " -1.0444e-01, -3.5453e-01, -4.2553e-01, -2.6075e-01, -2.6277e-01,\n", + " -2.6539e-01, 2.4584e-01, 2.2993e-01, 2.7335e-01, 1.8370e-01,\n", + " 2.7791e-01, 1.7513e-01, 4.9003e-02, 1.0740e-01, 9.6160e-02,\n", + " 6.0026e-02, 5.4657e-02, 8.4856e-02, -1.7440e-02, -3.0220e-04,\n", + " -9.9017e-02, -3.4095e-03, 3.8621e-02, 1.8601e-01, 3.0578e-01,\n", + " 2.3510e-01, 2.4545e-01, 2.9177e-01, 2.8762e-01, 2.2933e-01,\n", + " 1.7262e-01, -7.6133e-02, 6.8550e-02, 5.2952e-03, -2.7874e-01,\n", + " -2.5754e-01, -2.5292e-01, -3.0493e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00019437860464677215\n", + "Grad encoder.fc1.bias: 8.500729745719582e-05\n", + "Grad encoder.encoder.0.weight: 3.711608223966323e-05\n", + "Grad encoder.encoder.0.bias: 0.00016510591376572847\n", + "Grad encoder.encoder.2.weight: 3.9268863474717364e-05\n", + "Grad encoder.encoder.2.bias: 0.00019625035929493606\n", + "Grad encoder.encoder.4.weight: 0.00011290074326097965\n", + "Grad encoder.encoder.4.bias: 0.001206949818879366\n", + "Grad decoder.fc1.0.weight: 4.246201933710836e-05\n", + "Grad decoder.fc1.0.bias: 0.00026265467749908566\n", + "Grad decoder.fc1.2.weight: 4.75974811706692e-05\n", + "Grad decoder.fc1.2.bias: 0.0007984554395079613\n", + "Grad decoder.fc1.4.weight: 3.805584128713235e-05\n", + "Grad decoder.fc1.4.bias: 0.00032465512049384415\n", + "Grad decoder.fc2.weight: 0.00014509502216242254\n", + "Grad decoder.fc2.bias: 0.0015907678753137589\n", + "Grad _memory_unit.weight_ih_l0: 1.717071791063063e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.472449215129018e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.017946412204765e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.669491191743873e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.335624443134293e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.713689486379735e-05\n", + "Data X Sample: tensor([[2.0230, 2.4265, 2.8189, 2.8294, 2.8702, 2.9244, 3.0490, 3.0167, 3.2172,\n", + " 3.2305, 3.2960, 3.3088, 3.2335, 3.2827, 3.1599, 3.1645, 3.1385, 3.0698,\n", + " 3.0253, 3.0202, 2.8535, 2.7357, 2.6387, 2.6073, 2.4342, 2.3664, 2.2937,\n", + " 2.2840, 2.0086, 1.9684, 1.9247, 1.8873, 1.8040, 1.2060, 1.9756, 2.3617,\n", + " 2.7000, 2.8305, 3.0361, 3.0244, 1.7611, 1.0535, 1.0145, 1.8198, 2.3468,\n", + " 2.7905, 1.7881, 2.6507]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0302, -0.6319, 0.1089, -0.3466, 0.3737, 0.1575, 0.2481, -0.1110,\n", + " 0.0977, 0.0649, 0.0574, -0.2449, 1.6615, 1.6066, 0.1751, -0.5498,\n", + " 0.3713, -0.0237, -0.2633, -0.2062, -1.5569, -0.2824, -0.0575, -0.7465,\n", + " -0.3427, 0.6552, 0.6355, 0.5200, 0.6369, 0.7848, -0.6684, -0.4745,\n", + " 0.2666, 0.3915, 0.6482, 0.2848, -0.0107, -0.4097, 0.9027, 0.0728,\n", + " -0.0232, 0.0178, -0.5582]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2064, -0.2744, -0.0971, -0.2324, -0.1021, 0.0295, 0.1096, 0.2772,\n", + " 0.1577, 0.2221, 0.2208, -0.1270, -0.1120, -0.2129, -0.1127, -0.2734,\n", + " -0.2574, -0.0969, -0.0467, -0.0671, -0.0389, -0.0519, -0.0487, -0.0616,\n", + " -0.0264, 0.0377, 0.0405, -0.0115, -0.1553, -0.2091, -0.1484, -0.1464,\n", + " -0.2028, -0.2214, -0.1541, -0.1364, -0.0368, 0.0385, 0.0103, 0.2944,\n", + " 0.3668, 0.3229, 0.2271]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00026086048455908895\n", + "Grad encoder.fc1.bias: 0.00021214544540271163\n", + "Grad encoder.encoder.0.weight: 4.386444197734818e-05\n", + "Grad encoder.encoder.0.bias: 0.00024427607422694564\n", + "Grad encoder.encoder.2.weight: 3.4123921068385243e-05\n", + "Grad encoder.encoder.2.bias: 0.00047253657248802483\n", + "Grad encoder.encoder.4.weight: 0.00011643266770988703\n", + "Grad encoder.encoder.4.bias: 0.001668588607572019\n", + "Grad decoder.fc1.0.weight: 6.236638728296384e-05\n", + "Grad decoder.fc1.0.bias: 0.0006389697082340717\n", + "Grad decoder.fc1.2.weight: 7.146370626287535e-05\n", + "Grad decoder.fc1.2.bias: 0.0006296089850366116\n", + "Grad decoder.fc1.4.weight: 6.631407450186089e-05\n", + "Grad decoder.fc1.4.bias: 0.0008094672812148929\n", + "Grad decoder.fc2.weight: 0.00016677993698976934\n", + "Grad decoder.fc2.bias: 0.0015469127101823688\n", + "Grad _memory_unit.weight_ih_l0: 1.37750676003634e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.631920405197889e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.8660400605294853e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.857234438939486e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001582019467605278\n", + "Grad _memory_unit.bias_hh_l1: 8.263898780569434e-05\n", + "Data X Sample: tensor([[1.5870, 1.7755, 1.9204, 2.1100, 2.0899, 2.1274, 2.2879, 2.5440, 3.9862,\n", + " 4.2463, 4.3239, 4.2611, 4.1700, 4.1224, 4.0502, 3.6514, 3.5646, 3.6231,\n", + " 3.6613, 3.5279, 3.6608, 3.3971, 2.9520, 2.8249, 2.8903, 3.0194, 3.1088,\n", + " 3.0467, 3.1535, 3.2588, 3.3525, 3.3961, 3.8523, 2.8721, 4.5788, 4.8328,\n", + " 5.0322, 5.3906, 5.9391, 5.9041, 1.2122, 0.7030, 0.6791, 1.2228, 1.8037,\n", + " 2.0757, 1.3054, 1.8766]], device='cuda:0')\n", + "Data Y Sample: tensor([[-4.1370e-01, -5.1709e-01, -5.7145e-01, -2.9021e-01, -6.3420e-01,\n", + " 1.6095e-01, -2.8289e-01, 3.0501e-01, 1.8057e-01, 1.0021e-02,\n", + " 5.6242e-01, -3.0900e-01, -4.3464e-01, -5.2527e-01, -1.0877e-01,\n", + " -7.5255e-01, -8.7363e-02, -1.6543e+00, -2.3155e-01, 1.0882e+00,\n", + " -1.8657e-01, 7.7280e+00, 2.6090e-01, 7.0910e-01, -1.6119e-01,\n", + " -1.8443e+00, 2.4933e-01, 6.0655e-01, 4.7021e-01, 7.5262e-03,\n", + " 5.5096e-01, 1.4966e-01, 1.5528e-02, -2.1974e-01, -1.0830e-01,\n", + " -3.4610e-01, -8.6812e-02, 4.1551e-01, -2.5051e-01, 4.5450e-01,\n", + " 7.1302e-01, 3.1837e-01, 1.8538e+00]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2898, -0.2801, -0.0884, -0.2211, -0.0694, 0.0903, 0.1958, 0.3321,\n", + " 0.1582, 0.2239, 0.2771, -0.1527, -0.1487, -0.2894, -0.1457, -0.2715,\n", + " -0.2502, -0.0920, -0.0947, -0.0944, -0.0806, -0.0684, -0.0296, -0.0210,\n", + " -0.0228, 0.0297, -0.0357, -0.1090, -0.1972, -0.1985, -0.2183, -0.1902,\n", + " -0.2372, -0.3030, -0.1589, -0.1914, -0.0130, 0.0239, 0.0259, 0.3541,\n", + " 0.3529, 0.3606, 0.2340]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00030212377896532416\n", + "Grad encoder.fc1.bias: 0.00017751673294696957\n", + "Grad encoder.encoder.0.weight: 3.842420846922323e-05\n", + "Grad encoder.encoder.0.bias: 0.00022703816648572683\n", + "Grad encoder.encoder.2.weight: 3.41802769980859e-05\n", + "Grad encoder.encoder.2.bias: 0.0003552412090357393\n", + "Grad encoder.encoder.4.weight: 0.00010760909935925156\n", + "Grad encoder.encoder.4.bias: 0.001628167345188558\n", + "Grad decoder.fc1.0.weight: 5.9644386055879295e-05\n", + "Grad decoder.fc1.0.bias: 0.00036228130920790136\n", + "Grad decoder.fc1.2.weight: 5.9584792325040326e-05\n", + "Grad decoder.fc1.2.bias: 0.001488405279815197\n", + "Grad decoder.fc1.4.weight: 8.758570766076446e-05\n", + "Grad decoder.fc1.4.bias: 0.0008484775316901505\n", + "Grad decoder.fc2.weight: 0.00016591823077760637\n", + "Grad decoder.fc2.bias: 0.00226186728104949\n", + "Grad _memory_unit.weight_ih_l0: 2.948788824141957e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0001182731066364795\n", + "Grad _memory_unit.bias_hh_l0: 6.82326644891873e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.632195017009508e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00021235179156064987\n", + "Grad _memory_unit.bias_hh_l1: 0.00011344220547471195\n", + "Data X Sample: tensor([[1.1446, 1.3007, 1.4110, 1.5940, 1.8355, 1.8769, 2.0861, 2.0386, 3.3832,\n", + " 4.0188, 4.0193, 3.9670, 3.8837, 3.7516, 3.5861, 3.4818, 3.4671, 3.4935,\n", + " 3.4424, 3.3624, 3.3663, 3.3129, 2.9062, 2.7581, 2.7758, 2.7921, 2.7945,\n", + " 2.8836, 2.9002, 3.0295, 3.2301, 3.1115, 3.4277, 2.5334, 4.2454, 4.5337,\n", + " 4.9300, 5.2687, 5.7997, 5.6345, 0.9354, 0.5516, 0.5255, 0.9472, 1.4152,\n", + " 1.5039, 1.0946, 1.5247]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5479, -1.0352, 0.3281, 0.5091, 0.9745, 0.5823, 0.7972, 0.7698,\n", + " 1.5493, 1.1332, 0.6336, -0.4415, -0.9805, -0.2046, 0.6243, -1.3895,\n", + " -0.9696, -0.7796, -1.3136, -0.2362, 0.0907, -0.7587, -0.4549, 0.0567,\n", + " 1.4415, -0.4072, 0.2251, 0.5551, -0.4288, -0.1482, 0.0128, -0.5914,\n", + " -0.4978, -0.7142, 0.0998, 0.4091, -0.0868, -0.0459, 1.0291, 0.6387,\n", + " 0.8115, 0.6271, 0.6587]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2828, -0.2760, -0.0846, -0.2187, -0.0686, 0.0868, 0.1902, 0.3234,\n", + " 0.1573, 0.2219, 0.2695, -0.1490, -0.1462, -0.2843, -0.1439, -0.2715,\n", + " -0.2469, -0.0895, -0.0907, -0.0918, -0.0786, -0.0675, -0.0296, -0.0249,\n", + " -0.0258, 0.0292, -0.0331, -0.1031, -0.1936, -0.1974, -0.2125, -0.1848,\n", + " -0.2335, -0.2955, -0.1566, -0.1867, -0.0126, 0.0223, 0.0239, 0.3458,\n", + " 0.3483, 0.3540, 0.2298]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0024186954833567142\n", + "Grad encoder.fc1.bias: 0.002088290173560381\n", + "Grad encoder.encoder.0.weight: 0.00037054874701425433\n", + "Grad encoder.encoder.0.bias: 0.0020328606478869915\n", + "Grad encoder.encoder.2.weight: 0.00037529479595832527\n", + "Grad encoder.encoder.2.bias: 0.003297791350632906\n", + "Grad encoder.encoder.4.weight: 0.0010995528427883983\n", + "Grad encoder.encoder.4.bias: 0.008848881348967552\n", + "Grad decoder.fc1.0.weight: 0.0003908205544576049\n", + "Grad decoder.fc1.0.bias: 0.002437199931591749\n", + "Grad decoder.fc1.2.weight: 0.00023582903668284416\n", + "Grad decoder.fc1.2.bias: 0.004759889096021652\n", + "Grad decoder.fc1.4.weight: 0.00014246779028326273\n", + "Grad decoder.fc1.4.bias: 0.0017577465623617172\n", + "Grad decoder.fc2.weight: 0.0002759690978564322\n", + "Grad decoder.fc2.bias: 0.0020187441259622574\n", + "Grad _memory_unit.weight_ih_l0: 0.0001845355873228982\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00042624230263754725\n", + "Grad _memory_unit.bias_hh_l0: 0.00029553493368439376\n", + "Grad _memory_unit.weight_ih_l1: 8.263764902949333e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.001040910603478551\n", + "Grad _memory_unit.bias_hh_l1: 0.0005589299835264683\n", + "Data X Sample: tensor([[1.5372, 1.7886, 1.9910, 2.0969, 2.1650, 2.3027, 2.3310, 2.4304, 2.4312,\n", + " 2.5307, 2.6838, 2.6700, 2.5055, 2.4266, 2.3832, 2.3659, 2.3271, 2.4334,\n", + " 2.3892, 2.4548, 2.3800, 2.5046, 2.5255, 2.5214, 2.5863, 2.5962, 2.5388,\n", + " 2.4961, 2.3660, 2.4203, 2.3412, 2.3571, 2.2792, 1.4440, 1.9217, 1.8071,\n", + " 1.6046, 1.4682, 1.6036, 1.6143, 1.2313, 0.7468, 0.7033, 1.2917, 1.9147,\n", + " 2.0414, 1.3190, 1.9704]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3218, 1.4948, -0.0205, 0.6262, 0.9989, -0.1945, 0.2787, -0.9034,\n", + " 0.3130, 0.1832, 0.1628, -0.3618, -0.4781, 0.5393, -0.3892, -0.1146,\n", + " -0.2648, 0.1668, -1.7394, 0.8569, 0.3349, 0.4916, 0.0786, 0.0956,\n", + " -0.8420, 0.1240, -0.5713, 0.0747, -0.4723, 0.2495, 0.1590, -1.2474,\n", + " -0.4557, 1.2008, 0.0624, 0.5758, -0.8287, -0.6423, 0.2870, -1.5287,\n", + " -0.8347, -0.3461, -0.1597]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3123, 0.2110, 0.1174, 0.1919, -0.0049, -0.1155, -0.3160, -0.3490,\n", + " -0.2333, -0.2199, -0.2404, 0.1823, 0.1757, 0.2444, 0.1501, 0.2124,\n", + " 0.1210, 0.0277, 0.0904, 0.0904, 0.0436, 0.0639, 0.0705, -0.0252,\n", + " -0.0141, -0.0914, 0.0269, 0.0347, 0.1721, 0.2620, 0.1873, 0.2091,\n", + " 0.2327, 0.2241, 0.1800, 0.1629, -0.0798, 0.0370, 0.0086, -0.2435,\n", + " -0.1841, -0.1906, -0.2406]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00012902011803817004\n", + "Grad encoder.fc1.bias: 0.0005126888281665742\n", + "Grad encoder.encoder.0.weight: 3.306861617602408e-05\n", + "Grad encoder.encoder.0.bias: 0.0003875945694744587\n", + "Grad encoder.encoder.2.weight: 2.5703864594106562e-05\n", + "Grad encoder.encoder.2.bias: 0.00044862893992103636\n", + "Grad encoder.encoder.4.weight: 5.7910299801733345e-05\n", + "Grad encoder.encoder.4.bias: 0.001179315964691341\n", + "Grad decoder.fc1.0.weight: 4.5792185119353235e-05\n", + "Grad decoder.fc1.0.bias: 0.00045028250315226614\n", + "Grad decoder.fc1.2.weight: 5.4484720749314874e-05\n", + "Grad decoder.fc1.2.bias: 0.0003349788021296263\n", + "Grad decoder.fc1.4.weight: 3.8222759030759335e-05\n", + "Grad decoder.fc1.4.bias: 0.00026683020405471325\n", + "Grad decoder.fc2.weight: 6.924616172909737e-05\n", + "Grad decoder.fc2.bias: 0.0017149330815300345\n", + "Grad _memory_unit.weight_ih_l0: 9.02327064977726e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.045157377026044e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.626261812110897e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.95783672502148e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.83568315859884e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.988698856323026e-05\n", + "Data X Sample: tensor([[2.5163, 2.8926, 3.2261, 3.4372, 3.4576, 3.6478, 3.5805, 3.7208, 3.8519,\n", + " 3.7929, 4.0193, 3.8930, 3.6995, 3.6944, 3.4449, 3.3628, 3.3586, 3.4741,\n", + " 3.4837, 3.2415, 3.2412, 3.1843, 3.0339, 2.7752, 2.7721, 2.8391, 2.7146,\n", + " 2.7082, 2.8066, 2.7413, 3.0096, 2.9236, 2.9899, 2.1695, 3.5640, 3.9353,\n", + " 4.2437, 4.4763, 4.9630, 4.9735, 1.9281, 1.1252, 1.1520, 1.9920, 2.8106,\n", + " 3.3223, 2.1757, 2.7836]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2445, -0.3299, -0.6229, 0.1717, 0.7087, -0.1734, 1.2796, 0.8414,\n", + " 1.6010, 0.9101, 0.9008, -0.7052, -0.5587, -1.1993, -0.8673, -0.3341,\n", + " -0.6006, -0.2302, 0.3452, -1.1816, -0.8492, -0.1822, -0.4218, -1.2398,\n", + " -0.6821, -1.7712, 1.2871, 1.7098, -0.5407, -0.1472, -0.2442, 0.0662,\n", + " -0.8517, -0.6649, -0.6075, -0.3128, 0.3148, -0.7055, 0.0040, 0.9428,\n", + " 0.7628, 0.7543, 0.6879]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2371, -0.2458, -0.0675, -0.2019, -0.0675, 0.0691, 0.1512, 0.2717,\n", + " 0.1420, 0.2021, 0.2191, -0.1262, -0.1251, -0.2416, -0.1279, -0.2514,\n", + " -0.2295, -0.0803, -0.0711, -0.0824, -0.0631, -0.0648, -0.0308, -0.0404,\n", + " -0.0351, 0.0228, -0.0205, -0.0699, -0.1658, -0.1823, -0.1773, -0.1517,\n", + " -0.2115, -0.2492, -0.1397, -0.1557, -0.0130, 0.0243, 0.0125, 0.2922,\n", + " 0.3152, 0.3039, 0.1997]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00036931526847183704\n", + "Grad encoder.fc1.bias: 0.0014380754437297583\n", + "Grad encoder.encoder.0.weight: 6.715074414387345e-05\n", + "Grad encoder.encoder.0.bias: 0.001160213490948081\n", + "Grad encoder.encoder.2.weight: 5.749736010329798e-05\n", + "Grad encoder.encoder.2.bias: 0.0011356034083291888\n", + "Grad encoder.encoder.4.weight: 0.00018858919793274254\n", + "Grad encoder.encoder.4.bias: 0.0020861169323325157\n", + "Grad decoder.fc1.0.weight: 9.12452960619703e-05\n", + "Grad decoder.fc1.0.bias: 0.0008528202306479216\n", + "Grad decoder.fc1.2.weight: 8.393371535930783e-05\n", + "Grad decoder.fc1.2.bias: 0.00088279671035707\n", + "Grad decoder.fc1.4.weight: 6.10957940807566e-05\n", + "Grad decoder.fc1.4.bias: 0.0004855311126448214\n", + "Grad decoder.fc2.weight: 0.00018719560466706753\n", + "Grad decoder.fc2.bias: 0.0020716600120067596\n", + "Grad _memory_unit.weight_ih_l0: 2.5166251361952163e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.757696534506977e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.9599289670586586e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.2264841643627733e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00020025366393383592\n", + "Grad _memory_unit.bias_hh_l1: 0.00010697892867028713\n", + "Data X Sample: tensor([[1.5509, 1.7376, 1.9068, 2.0072, 2.1053, 2.1790, 2.2293, 2.4815, 3.9398,\n", + " 4.1626, 4.3112, 4.2397, 4.0768, 4.0024, 3.7728, 3.6144, 3.6086, 3.7062,\n", + " 3.4713, 3.3977, 3.4031, 3.3833, 2.9809, 2.8649, 2.8115, 2.9462, 2.9970,\n", + " 3.0263, 3.0876, 3.2358, 3.1951, 3.3049, 3.6807, 2.8057, 4.5886, 4.9058,\n", + " 4.9201, 5.3880, 5.9137, 5.6856, 1.1263, 0.7090, 0.7033, 1.2056, 1.7165,\n", + " 1.9899, 1.1898, 1.6733]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.7716, -0.2293, 0.3479, -0.0066, -0.4594, 0.9049, 0.1452, -0.0103,\n", + " -0.8372, -0.3870, -0.7938, -0.7823, 1.0476, -0.2093, -0.2344, -1.2340,\n", + " 0.3841, 0.2472, -0.2954, -0.8329, 0.1032, 0.1510, -0.6960, 0.5607,\n", + " 0.2138, 0.3972, 0.1790, 0.9620, 0.2546, 0.3024, -0.0439, -0.3689,\n", + " 1.1188, -0.3175, 0.1542, 0.1951, -0.9268, -0.8529, 0.7936, -0.4360,\n", + " 1.5504, -1.4657, -1.5106]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3029, -0.2879, -0.0815, -0.2265, -0.0591, 0.0941, 0.2089, 0.3424,\n", + " 0.1684, 0.2352, 0.2919, -0.1604, -0.1592, -0.3102, -0.1611, -0.2892,\n", + " -0.2493, -0.0862, -0.1006, -0.0929, -0.0820, -0.0664, -0.0231, -0.0272,\n", + " -0.0294, 0.0331, -0.0434, -0.1127, -0.2095, -0.2073, -0.2266, -0.1962,\n", + " -0.2511, -0.3147, -0.1619, -0.1948, -0.0109, 0.0128, 0.0290, 0.3673,\n", + " 0.3636, 0.3810, 0.2465]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001642253337195143\n", + "Grad encoder.fc1.bias: 0.0013647282030433416\n", + "Grad encoder.encoder.0.weight: 4.382062979857437e-05\n", + "Grad encoder.encoder.0.bias: 0.0007346067577600479\n", + "Grad encoder.encoder.2.weight: 2.7381360268918797e-05\n", + "Grad encoder.encoder.2.bias: 0.0004176553338766098\n", + "Grad encoder.encoder.4.weight: 9.522108302917331e-05\n", + "Grad encoder.encoder.4.bias: 0.000500459223985672\n", + "Grad decoder.fc1.0.weight: 3.9800135709811e-05\n", + "Grad decoder.fc1.0.bias: 0.00022621959215030074\n", + "Grad decoder.fc1.2.weight: 5.3956689953338355e-05\n", + "Grad decoder.fc1.2.bias: 0.0002776100009214133\n", + "Grad decoder.fc1.4.weight: 5.247126682661474e-05\n", + "Grad decoder.fc1.4.bias: 0.00032917794305831194\n", + "Grad decoder.fc2.weight: 9.27413857425563e-05\n", + "Grad decoder.fc2.bias: 0.0026143903378397226\n", + "Grad _memory_unit.weight_ih_l0: 5.593025434791343e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.0094888643361628e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.5674268070142716e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.8113549913323368e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.9739989006193355e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.0630304788937792e-05\n", + "Data X Sample: tensor([[1.5870, 1.8381, 1.8287, 2.0510, 2.1326, 2.2865, 2.4265, 2.3878, 2.4654,\n", + " 2.5418, 2.5632, 2.5960, 2.4035, 2.4211, 2.4084, 2.4848, 2.3790, 2.3309,\n", + " 2.4656, 2.3786, 2.3800, 2.5260, 2.4483, 2.4584, 2.4192, 2.4970, 2.5388,\n", + " 2.6307, 2.2411, 2.4170, 2.3447, 2.2880, 2.2638, 1.4646, 1.9781, 1.8144,\n", + " 1.6695, 1.5106, 1.5656, 1.6030, 1.2218, 0.6870, 0.6831, 1.2285, 1.7323,\n", + " 2.0128, 1.3054, 1.8610]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3877, 0.3681, -0.0020, 0.6958, -0.4291, -0.6313, -0.8941, -0.5521,\n", + " 0.4436, -0.5320, -0.4925, 0.3761, 0.4234, 0.1921, 0.5292, -0.1375,\n", + " 0.8191, 0.5111, 0.4727, 0.6302, 0.5945, -0.2300, 0.2323, 0.2973,\n", + " 0.6739, 0.3111, 0.6385, -0.0259, 0.4172, 0.4272, 0.6135, -0.0731,\n", + " 0.9062, 0.7809, 0.4658, -0.5999, -0.5204, 0.4911, -0.5988, -0.3882,\n", + " -0.4922, -0.8594, -0.1955]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3118, 0.2308, 0.1281, 0.1684, -0.0097, -0.1318, -0.3207, -0.3445,\n", + " -0.2371, -0.2212, -0.2430, 0.1721, 0.1539, 0.2472, 0.1438, 0.2146,\n", + " 0.1333, 0.0130, 0.0900, 0.1026, 0.0440, 0.0676, 0.0603, -0.0359,\n", + " -0.0119, -0.0712, 0.0224, 0.0269, 0.1730, 0.2560, 0.1908, 0.2081,\n", + " 0.2340, 0.2166, 0.1768, 0.1762, -0.0864, 0.0120, 0.0102, -0.2560,\n", + " -0.1811, -0.1910, -0.2315]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00020331304403953254\n", + "Grad encoder.fc1.bias: 0.00023570572375319898\n", + "Grad encoder.encoder.0.weight: 3.7891546526225284e-05\n", + "Grad encoder.encoder.0.bias: 0.00021706450206693262\n", + "Grad encoder.encoder.2.weight: 3.3589945815037936e-05\n", + "Grad encoder.encoder.2.bias: 0.00022338928829412907\n", + "Grad encoder.encoder.4.weight: 9.028693602886051e-05\n", + "Grad encoder.encoder.4.bias: 0.0005252817645668983\n", + "Grad decoder.fc1.0.weight: 3.3827855077106506e-05\n", + "Grad decoder.fc1.0.bias: 0.00017289872630499303\n", + "Grad decoder.fc1.2.weight: 5.8655285101849586e-05\n", + "Grad decoder.fc1.2.bias: 0.0003320338437333703\n", + "Grad decoder.fc1.4.weight: 6.231450970517471e-05\n", + "Grad decoder.fc1.4.bias: 0.0005924257566221058\n", + "Grad decoder.fc2.weight: 0.00010777384886750951\n", + "Grad decoder.fc2.bias: 0.001898530637845397\n", + "Grad _memory_unit.weight_ih_l0: 3.903903689206345e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.3386255886871368e-05\n", + "Grad _memory_unit.bias_hh_l0: 7.981359885889105e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.532558937673457e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.8786150980740786e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.012254117289558e-05\n", + "Data X Sample: tensor([[1.5000, 1.5818, 1.6905, 1.8520, 2.0182, 2.1333, 2.2093, 3.4199, 4.4573,\n", + " 4.1941, 4.2953, 4.3897, 4.0612, 3.9479, 3.8232, 3.6350, 3.5882, 3.7159,\n", + " 3.6241, 3.4795, 3.5332, 3.4430, 2.8532, 2.7695, 2.8040, 2.8496, 3.0049,\n", + " 3.0426, 3.0112, 3.1114, 3.1531, 3.2939, 3.7071, 2.8011, 4.5273, 4.8742,\n", + " 5.1443, 5.3615, 5.9391, 5.8842, 1.1216, 0.5676, 0.6245, 1.0735, 1.6729,\n", + " 1.8298, 1.2102, 1.6499]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1402, 0.1236, 0.0284, 0.2975, 1.1064, 0.0617, 0.4437, -0.0045,\n", + " -1.0410, -0.4658, -0.4013, -0.0687, 0.2153, -0.7019, -0.3817, -0.7646,\n", + " -0.1290, 0.3523, -0.1623, -0.4478, -0.8628, 0.1846, 0.0839, 1.1201,\n", + " -0.0392, 0.8997, -1.7621, -0.6826, -1.7924, -0.3718, 0.1872, -0.2059,\n", + " 0.9268, 0.8714, -0.2986, -0.7228, -0.7353, -0.0484, -0.7618, -0.3191,\n", + " 0.0506, -0.5087, -1.0509]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2846, -0.2742, -0.0746, -0.2166, -0.0525, 0.0886, 0.1936, 0.3222,\n", + " 0.1629, 0.2289, 0.2708, -0.1514, -0.1533, -0.2964, -0.1593, -0.2844,\n", + " -0.2368, -0.0812, -0.0937, -0.0892, -0.0723, -0.0667, -0.0196, -0.0355,\n", + " -0.0354, 0.0341, -0.0386, -0.0990, -0.1963, -0.1995, -0.2110, -0.1808,\n", + " -0.2454, -0.2967, -0.1521, -0.1793, -0.0109, 0.0130, 0.0271, 0.3449,\n", + " 0.3505, 0.3609, 0.2354]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 5.0008282414637506e-05\n", + "Grad encoder.fc1.bias: 0.0005734062287956476\n", + "Grad encoder.encoder.0.weight: 1.7459928130847402e-05\n", + "Grad encoder.encoder.0.bias: 0.0003486394416540861\n", + "Grad encoder.encoder.2.weight: 1.1109177648904733e-05\n", + "Grad encoder.encoder.2.bias: 0.0004924915265291929\n", + "Grad encoder.encoder.4.weight: 3.0419547329074703e-05\n", + "Grad encoder.encoder.4.bias: 0.0010666018351912498\n", + "Grad decoder.fc1.0.weight: 2.683697130123619e-05\n", + "Grad decoder.fc1.0.bias: 0.00038083194522187114\n", + "Grad decoder.fc1.2.weight: 4.3214189645368606e-05\n", + "Grad decoder.fc1.2.bias: 0.0002684139763005078\n", + "Grad decoder.fc1.4.weight: 3.120008113910444e-05\n", + "Grad decoder.fc1.4.bias: 0.00025114676100201905\n", + "Grad decoder.fc2.weight: 0.00011677516158670187\n", + "Grad decoder.fc2.bias: 0.001953361090272665\n", + "Grad _memory_unit.weight_ih_l0: 4.04112597607309e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.1667513869469985e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.0855324692092836e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.284760512338835e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.191682379925624e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.6590157833416015e-05\n", + "Data X Sample: tensor([[1.6835, 1.9066, 1.9324, 2.0860, 2.1394, 2.2335, 2.3588, 2.3722, 2.3556,\n", + " 2.4280, 2.5061, 2.4792, 2.3857, 2.3720, 2.3479, 2.3700, 2.3334, 2.3348,\n", + " 2.4553, 2.4492, 2.4119, 2.5015, 2.5592, 2.5825, 2.5863, 2.6511, 2.5707,\n", + " 2.7041, 2.4631, 2.4269, 2.5197, 2.4870, 2.2264, 1.4028, 1.9340, 1.7877,\n", + " 1.6892, 1.5848, 1.5276, 1.5604, 1.4079, 0.7329, 0.7195, 1.3204, 1.8552,\n", + " 2.2415, 1.3938, 1.9392]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4083, 0.8511, -0.9767, 1.5281, -0.1550, -0.2065, -0.5727, -0.4674,\n", + " -0.1610, -0.3681, -0.3672, 0.6229, -1.0405, -0.4429, 0.7373, 0.4346,\n", + " 0.9215, -0.0272, 0.1869, 0.2517, -0.2125, 0.4978, 0.3071, -0.3820,\n", + " 0.3155, -0.3013, -0.8764, -0.4764, -0.2493, 0.4716, -0.8404, -0.2869,\n", + " -0.1915, 0.3569, -0.0950, 0.5927, 0.0849, -0.1765, 0.0382, -0.0996,\n", + " -0.1330, -0.1651, 0.0400]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3528, 0.2874, 0.1530, 0.1970, -0.0031, -0.1545, -0.3614, -0.3997,\n", + " -0.2669, -0.2537, -0.2666, 0.1947, 0.1657, 0.2786, 0.1674, 0.2573,\n", + " 0.1821, 0.0135, 0.1026, 0.1250, 0.0537, 0.0771, 0.0584, -0.0401,\n", + " -0.0036, -0.0560, 0.0125, 0.0213, 0.1974, 0.2905, 0.2252, 0.2355,\n", + " 0.2805, 0.2502, 0.2036, 0.2052, -0.0946, -0.0067, 0.0127, -0.2998,\n", + " -0.2270, -0.2266, -0.2564]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0008263824856840074\n", + "Grad encoder.fc1.bias: 0.0010008759563788772\n", + "Grad encoder.encoder.0.weight: 0.00013684373698197305\n", + "Grad encoder.encoder.0.bias: 0.0009523130720481277\n", + "Grad encoder.encoder.2.weight: 0.00012632645666599274\n", + "Grad encoder.encoder.2.bias: 0.001543886959552765\n", + "Grad encoder.encoder.4.weight: 0.0003664703981485218\n", + "Grad encoder.encoder.4.bias: 0.0036578380968421698\n", + "Grad decoder.fc1.0.weight: 0.0001405758666805923\n", + "Grad decoder.fc1.0.bias: 0.0009893779642879963\n", + "Grad decoder.fc1.2.weight: 0.0001294848188990727\n", + "Grad decoder.fc1.2.bias: 0.0019487980753183365\n", + "Grad decoder.fc1.4.weight: 7.877710595494136e-05\n", + "Grad decoder.fc1.4.bias: 0.0008715289877727628\n", + "Grad decoder.fc2.weight: 0.00016668859461788088\n", + "Grad decoder.fc2.bias: 0.0021029578056186438\n", + "Grad _memory_unit.weight_ih_l0: 5.2852730732411146e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0001237390242749825\n", + "Grad _memory_unit.bias_hh_l0: 8.514914952684194e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.706732993829064e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0003401083522476256\n", + "Grad _memory_unit.bias_hh_l1: 0.00017751415725797415\n", + "Data X Sample: tensor([[1.5923, 1.9779, 2.0511, 2.1997, 2.3392, 2.4103, 2.5791, 2.6334, 2.7412,\n", + " 2.6982, 2.7948, 2.7323, 2.6099, 2.5738, 2.5017, 2.5450, 2.5362, 2.4934,\n", + " 2.5255, 2.4846, 2.5616, 2.5903, 2.5182, 2.6264, 2.7270, 2.7320, 2.5441,\n", + " 2.5817, 2.3903, 2.4236, 2.4357, 2.3433, 2.3386, 1.4875, 2.0443, 1.8655,\n", + " 1.7580, 1.6564, 1.6543, 1.5746, 1.3268, 0.7548, 0.7235, 1.3893, 1.8671,\n", + " 2.2015, 1.4686, 2.1816]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2636, 0.0378, -0.4131, 0.0790, 0.6254, 0.1558, -0.5630, -0.3223,\n", + " -0.0617, -0.5365, -0.1487, 0.3519, 1.1807, 0.2393, 0.3429, 0.6774,\n", + " 0.9687, 0.2223, 0.6077, -0.1020, -0.1991, 0.2678, -0.2294, -0.1726,\n", + " -0.3322, 0.4160, -0.5449, -0.4028, 0.0122, 0.3571, -0.5475, -0.0850,\n", + " 0.9842, 0.6557, 1.1077, 0.5514, -0.0457, 0.1511, -0.0156, -0.0125,\n", + " -0.3276, -0.3403, 0.2005]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 3.4605e-01, 2.8970e-01, 1.5424e-01, 1.8608e-01, -7.9975e-03,\n", + " -1.5947e-01, -3.5945e-01, -3.9713e-01, -2.5585e-01, -2.4368e-01,\n", + " -2.5784e-01, 1.9024e-01, 1.5767e-01, 2.7033e-01, 1.6590e-01,\n", + " 2.4929e-01, 1.8757e-01, 5.8281e-03, 1.0022e-01, 1.2583e-01,\n", + " 4.8731e-02, 6.9340e-02, 4.8082e-02, -4.5362e-02, -1.3845e-04,\n", + " -4.1509e-02, 7.6149e-03, 1.9066e-02, 1.9524e-01, 2.7833e-01,\n", + " 2.2054e-01, 2.2860e-01, 2.7609e-01, 2.4076e-01, 1.9761e-01,\n", + " 1.9941e-01, -9.5011e-02, -1.4887e-02, 7.6616e-03, -2.9434e-01,\n", + " -2.2331e-01, -2.2019e-01, -2.4537e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00010089199349749833\n", + "Grad encoder.fc1.bias: 0.00046373065561056137\n", + "Grad encoder.encoder.0.weight: 2.0671428501373157e-05\n", + "Grad encoder.encoder.0.bias: 0.0002728993131313473\n", + "Grad encoder.encoder.2.weight: 1.4044406270841137e-05\n", + "Grad encoder.encoder.2.bias: 0.00023292392143048346\n", + "Grad encoder.encoder.4.weight: 4.154044290771708e-05\n", + "Grad encoder.encoder.4.bias: 0.0006522401235997677\n", + "Grad decoder.fc1.0.weight: 3.186120738973841e-05\n", + "Grad decoder.fc1.0.bias: 0.0002700706827454269\n", + "Grad decoder.fc1.2.weight: 5.228769441600889e-05\n", + "Grad decoder.fc1.2.bias: 0.0002915970399044454\n", + "Grad decoder.fc1.4.weight: 5.4669217206537724e-05\n", + "Grad decoder.fc1.4.bias: 0.00035594587097875774\n", + "Grad decoder.fc2.weight: 9.760712418938056e-05\n", + "Grad decoder.fc2.bias: 0.0015801206463947892\n", + "Grad _memory_unit.weight_ih_l0: 3.985278453910723e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.80305503110867e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.4226525308913551e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.229177653134684e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.062801548978314e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.055785782635212e-05\n", + "Data X Sample: tensor([[2.5895, 3.1169, 3.1765, 3.4569, 3.4422, 3.5962, 3.7669, 3.7961, 3.9227,\n", + " 3.8608, 3.9368, 3.9632, 3.9392, 3.6862, 3.5761, 3.4941, 3.4215, 3.5612,\n", + " 3.3846, 3.2824, 3.2829, 3.1782, 2.9496, 2.7981, 2.7101, 2.7164, 2.7758,\n", + " 2.7734, 2.7719, 2.8723, 2.8066, 2.7661, 2.8865, 2.1214, 3.5762, 3.9986,\n", + " 4.3734, 4.6141, 5.1658, 5.0444, 1.9138, 1.1491, 1.1237, 2.0523, 2.8265,\n", + " 3.1850, 2.2708, 3.1746]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0422, -0.1457, 1.3328, 0.3942, 0.9791, 0.6609, 0.4345, 0.2854,\n", + " 0.8089, 0.2986, 0.2754, -0.8579, 0.2614, -0.7171, -0.9725, -0.4459,\n", + " -1.0491, -0.2548, -0.5797, 0.0633, 1.0415, -0.0507, 1.1225, -0.7498,\n", + " -0.0019, -1.1320, 1.0900, -0.5703, -0.2777, -0.2474, 0.9439, 0.9750,\n", + " 0.0610, 0.3782, 0.6913, 0.0191, 0.4717, -0.7231, -0.7546, 0.0300,\n", + " 0.5294, -0.0786, 0.0393]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2468, -0.2477, -0.0669, -0.1996, -0.0472, 0.0743, 0.1602, 0.2781,\n", + " 0.1522, 0.2135, 0.2270, -0.1311, -0.1362, -0.2629, -0.1450, -0.2701,\n", + " -0.2148, -0.0746, -0.0777, -0.0786, -0.0570, -0.0673, -0.0207, -0.0494,\n", + " -0.0424, 0.0332, -0.0271, -0.0726, -0.1680, -0.1842, -0.1792, -0.1517,\n", + " -0.2281, -0.2590, -0.1367, -0.1497, -0.0124, 0.0187, 0.0199, 0.2992,\n", + " 0.3193, 0.3163, 0.2098]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0008574227686040103\n", + "Grad encoder.fc1.bias: 0.0008425078704021871\n", + "Grad encoder.encoder.0.weight: 0.00012209579290356487\n", + "Grad encoder.encoder.0.bias: 0.0009504157933406532\n", + "Grad encoder.encoder.2.weight: 0.00012178744509583339\n", + "Grad encoder.encoder.2.bias: 0.0015043254243209958\n", + "Grad encoder.encoder.4.weight: 0.00037406489718705416\n", + "Grad encoder.encoder.4.bias: 0.0034487834200263023\n", + "Grad decoder.fc1.0.weight: 0.00014427732094191015\n", + "Grad decoder.fc1.0.bias: 0.0010047941468656063\n", + "Grad decoder.fc1.2.weight: 0.00012087014329154044\n", + "Grad decoder.fc1.2.bias: 0.0019391519017517567\n", + "Grad decoder.fc1.4.weight: 7.423922215821221e-05\n", + "Grad decoder.fc1.4.bias: 0.000777136068791151\n", + "Grad decoder.fc2.weight: 0.00014934001956135035\n", + "Grad decoder.fc2.bias: 0.0016598777147009969\n", + "Grad _memory_unit.weight_ih_l0: 5.2824954764219e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00012604770017787814\n", + "Grad _memory_unit.bias_hh_l0: 8.584005990996957e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.6893525500781834e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00034415925620123744\n", + "Grad _memory_unit.bias_hh_l1: 0.00017908219888340682\n", + "Data X Sample: tensor([[1.6114, 1.8483, 2.1533, 2.3134, 2.3341, 2.4471, 2.5282, 2.4588, 2.6387,\n", + " 2.6255, 2.5696, 2.6856, 2.5965, 2.4484, 2.5194, 2.5642, 2.4906, 2.5379,\n", + " 2.6081, 2.5887, 2.5763, 2.6699, 2.5544, 2.6512, 2.6820, 2.7634, 2.6746,\n", + " 2.7245, 2.5394, 2.4236, 2.4357, 2.3903, 2.1406, 1.3777, 1.8849, 1.7974,\n", + " 1.6892, 1.6140, 1.6353, 1.5264, 1.3316, 0.7966, 0.8124, 1.4065, 2.0019,\n", + " 2.2244, 1.5366, 2.1503]], device='cuda:0')\n", + "Data Y Sample: tensor([[-8.7137e-02, 5.5568e-01, 3.8859e-01, -2.8454e-01, -3.1676e-01,\n", + " -2.0553e-01, -3.6771e-01, 3.9617e-01, -2.1368e-01, 8.1407e-02,\n", + " 9.5284e-03, -2.4233e-01, 7.4500e-01, 9.6476e-01, 8.7621e-02,\n", + " 8.5474e-01, 4.2085e-01, 1.6710e-01, 1.0928e-01, -2.4848e-01,\n", + " 4.1195e-01, -1.0466e+00, 7.3217e-01, 6.5166e-01, -5.7257e-01,\n", + " -6.9757e-02, 8.6273e-01, 7.3152e-01, -1.0786e+00, 5.6451e-01,\n", + " -1.8755e-01, -1.3204e+00, -1.5771e+00, 2.0669e-04, -1.0287e+00,\n", + " 7.7164e-01, 6.0965e-01, 7.4276e-01, 4.0085e-01, 2.3093e-01,\n", + " 1.6928e-01, -4.5420e-03, -7.7061e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3502, 0.3055, 0.1681, 0.1978, -0.0064, -0.1634, -0.3707, -0.4162,\n", + " -0.2468, -0.2371, -0.2494, 0.1977, 0.1626, 0.2623, 0.1726, 0.2598,\n", + " 0.2127, 0.0041, 0.1077, 0.1355, 0.0478, 0.0653, 0.0384, -0.0506,\n", + " 0.0024, -0.0212, -0.0092, 0.0197, 0.1980, 0.2723, 0.2249, 0.2295,\n", + " 0.2892, 0.2499, 0.2040, 0.2011, -0.0975, -0.0219, -0.0057, -0.2992,\n", + " -0.2355, -0.2283, -0.2455]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0013786109630018473\n", + "Grad encoder.fc1.bias: 0.001187005778774619\n", + "Grad encoder.encoder.0.weight: 0.0002111559733748436\n", + "Grad encoder.encoder.0.bias: 0.0011127575999125838\n", + "Grad encoder.encoder.2.weight: 0.00019340074504725635\n", + "Grad encoder.encoder.2.bias: 0.0022771458607167006\n", + "Grad encoder.encoder.4.weight: 0.0006171857239678502\n", + "Grad encoder.encoder.4.bias: 0.005081559531390667\n", + "Grad decoder.fc1.0.weight: 0.00021738919895142317\n", + "Grad decoder.fc1.0.bias: 0.0015083479229360819\n", + "Grad decoder.fc1.2.weight: 0.00016332787345163524\n", + "Grad decoder.fc1.2.bias: 0.002300878521054983\n", + "Grad decoder.fc1.4.weight: 9.644971578381956e-05\n", + "Grad decoder.fc1.4.bias: 0.0012451432412490249\n", + "Grad decoder.fc2.weight: 0.00013524926907848567\n", + "Grad decoder.fc2.bias: 0.0025660551618784666\n", + "Grad _memory_unit.weight_ih_l0: 9.4054383225739e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00019109307322651148\n", + "Grad _memory_unit.bias_hh_l0: 0.0001391791447531432\n", + "Grad _memory_unit.weight_ih_l1: 3.912402826244943e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0005154142272658646\n", + "Grad _memory_unit.bias_hh_l1: 0.0002732430584728718\n", + "Data X Sample: tensor([[1.5891, 1.7303, 1.9985, 2.0794, 2.1019, 2.2069, 2.2709, 2.2842, 2.3238,\n", + " 2.2511, 2.4205, 2.3915, 2.3213, 2.2739, 2.3201, 2.1799, 2.1762, 2.2690,\n", + " 2.3541, 2.3284, 2.3555, 2.4632, 2.4508, 2.4985, 2.5900, 2.6119, 2.6054,\n", + " 2.5899, 2.4354, 2.5088, 2.4112, 2.4013, 2.1560, 1.3800, 1.9217, 1.8047,\n", + " 1.6204, 1.4921, 1.5783, 1.5689, 1.3220, 0.7448, 0.7316, 1.3634, 1.8949,\n", + " 2.0700, 1.3734, 1.9079]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.9978e+00, -5.8745e-01, -1.0261e+00, 5.1586e-01, -6.7743e-01,\n", + " -1.7438e-01, 1.0910e+00, -4.0000e-02, 3.8762e-01, 4.3203e-01,\n", + " 4.0565e-01, -3.1357e-01, -1.3383e-01, -2.7248e-02, -1.1544e-03,\n", + " -2.2343e-01, -4.7944e-01, -1.3217e+00, -3.1408e-01, 1.1564e-02,\n", + " 3.8107e-01, 1.0114e-01, 8.7056e-01, 7.8146e-01, 1.3881e+00,\n", + " -1.6057e-01, -4.0246e-02, 4.5433e-01, 1.1186e+00, 3.1662e-01,\n", + " 6.8695e-01, -2.9976e-01, 1.2582e+00, 8.1670e-01, 4.2783e-01,\n", + " 1.1837e+00, -5.7539e-01, 9.3982e-02, 2.8698e-01, -8.4486e-01,\n", + " -4.7939e-01, -7.4733e-01, 6.3154e-02]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 3.5506e-01, 3.1130e-01, 1.7547e-01, 2.1794e-01, 3.6151e-04,\n", + " -1.5801e-01, -3.7783e-01, -4.3106e-01, -2.4547e-01, -2.3292e-01,\n", + " -2.4542e-01, 2.0402e-01, 1.7341e-01, 2.6035e-01, 1.7425e-01,\n", + " 2.6970e-01, 2.2401e-01, 1.0668e-02, 1.1507e-01, 1.3764e-01,\n", + " 4.9949e-02, 6.6029e-02, 4.3141e-02, -5.0812e-02, -4.3605e-04,\n", + " -1.8869e-02, -1.7638e-02, 2.2503e-02, 1.9747e-01, 2.7435e-01,\n", + " 2.2695e-01, 2.3368e-01, 2.9696e-01, 2.6190e-01, 2.1270e-01,\n", + " 2.0868e-01, -9.9049e-02, -2.2626e-02, -1.3682e-02, -3.0307e-01,\n", + " -2.4432e-01, -2.3572e-01, -2.5066e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 5.3975942137185484e-05\n", + "Grad encoder.fc1.bias: 8.544311276637018e-05\n", + "Grad encoder.encoder.0.weight: 1.328528560406994e-05\n", + "Grad encoder.encoder.0.bias: 3.925084456568584e-05\n", + "Grad encoder.encoder.2.weight: 1.0572881365078501e-05\n", + "Grad encoder.encoder.2.bias: 5.051283733337186e-05\n", + "Grad encoder.encoder.4.weight: 3.9861275581642985e-05\n", + "Grad encoder.encoder.4.bias: 7.96906097093597e-05\n", + "Grad decoder.fc1.0.weight: 1.6486161257489584e-05\n", + "Grad decoder.fc1.0.bias: 7.251584611367434e-05\n", + "Grad decoder.fc1.2.weight: 2.9609163902932778e-05\n", + "Grad decoder.fc1.2.bias: 0.00013395679707173258\n", + "Grad decoder.fc1.4.weight: 3.753980126930401e-05\n", + "Grad decoder.fc1.4.bias: 0.00024067613412626088\n", + "Grad decoder.fc2.weight: 9.16933422558941e-05\n", + "Grad decoder.fc2.bias: 0.0018961926689371467\n", + "Grad _memory_unit.weight_ih_l0: 2.170642346754903e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.3817801674304064e-06\n", + "Grad _memory_unit.bias_hh_l0: 3.3265951060457155e-06\n", + "Grad _memory_unit.weight_ih_l1: 7.889593689469621e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.4132023099809885e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.2313414117670618e-05\n", + "Data X Sample: tensor([[1.7175, 1.9677, 2.0766, 2.1909, 2.2777, 2.2791, 2.3403, 2.4389, 2.4654,\n", + " 2.4359, 2.4585, 2.5649, 2.3258, 2.3448, 2.3201, 2.2688, 2.2799, 2.3909,\n", + " 2.5235, 2.4120, 2.4953, 2.4984, 2.6098, 2.4794, 2.5506, 2.6798, 2.4695,\n", + " 2.5695, 2.3799, 2.4662, 2.4112, 2.3571, 2.3452, 1.5104, 1.9193, 1.8047,\n", + " 1.6754, 1.6405, 1.6226, 1.5179, 1.2504, 0.7727, 0.7700, 1.3491, 1.9107,\n", + " 2.2072, 1.4414, 2.1034]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4996, 0.7237, -0.0207, 0.8399, 0.6100, 0.2025, -0.5038, -0.2677,\n", + " -0.8251, -0.5914, -0.3814, -0.1415, 0.7440, -0.6832, 0.4041, 0.0369,\n", + " 0.0030, 0.6088, 0.0658, 0.1391, -1.3344, 0.9046, 0.5785, -0.9358,\n", + " -0.5700, 0.5094, -0.1554, 0.9431, -0.3646, -0.1356, 0.6256, -0.4561,\n", + " 0.2475, -0.0816, 1.2504, -0.7775, -0.3045, 0.7450, 0.0109, -0.4525,\n", + " -0.3710, -0.2776, -0.1990]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 3.4003e-01, 2.9947e-01, 1.7316e-01, 2.1279e-01, 1.7191e-04,\n", + " -1.5028e-01, -3.6614e-01, -4.1625e-01, -2.2841e-01, -2.1328e-01,\n", + " -2.3010e-01, 1.9452e-01, 1.7009e-01, 2.4135e-01, 1.6411e-01,\n", + " 2.5651e-01, 2.1848e-01, 8.1657e-03, 1.1435e-01, 1.3286e-01,\n", + " 4.7794e-02, 5.7488e-02, 3.8350e-02, -5.4643e-02, -2.9537e-03,\n", + " -9.9515e-03, -2.2149e-02, 2.2294e-02, 1.8636e-01, 2.5348e-01,\n", + " 2.1437e-01, 2.2392e-01, 2.8624e-01, 2.5289e-01, 2.0610e-01,\n", + " 2.0271e-01, -9.8221e-02, -2.3383e-02, -2.2588e-02, -2.8851e-01,\n", + " -2.3156e-01, -2.2563e-01, -2.3733e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007895961171016097\n", + "Grad encoder.fc1.bias: 0.0010661701671779156\n", + "Grad encoder.encoder.0.weight: 0.00012788191088475287\n", + "Grad encoder.encoder.0.bias: 0.0007851527188904583\n", + "Grad encoder.encoder.2.weight: 9.378790855407715e-05\n", + "Grad encoder.encoder.2.bias: 0.0012334397761151195\n", + "Grad encoder.encoder.4.weight: 0.00029460963560268283\n", + "Grad encoder.encoder.4.bias: 0.003145765047520399\n", + "Grad decoder.fc1.0.weight: 0.00012915514525957406\n", + "Grad decoder.fc1.0.bias: 0.0010108929127454758\n", + "Grad decoder.fc1.2.weight: 0.0001059384667314589\n", + "Grad decoder.fc1.2.bias: 0.0017392849549651146\n", + "Grad decoder.fc1.4.weight: 7.663727592444047e-05\n", + "Grad decoder.fc1.4.bias: 0.0008098422549664974\n", + "Grad decoder.fc2.weight: 0.00014835673209745437\n", + "Grad decoder.fc2.bias: 0.001546387793496251\n", + "Grad _memory_unit.weight_ih_l0: 4.678099139709957e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00015821056149434298\n", + "Grad _memory_unit.bias_hh_l0: 9.976789442589507e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.480465263943188e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00032281322637572885\n", + "Grad _memory_unit.bias_hh_l1: 0.00017170640057884157\n", + "Data X Sample: tensor([[1.5541, 1.6866, 1.8347, 1.9679, 2.1924, 2.3749, 2.5051, 2.5539, 2.4654,\n", + " 2.6539, 2.6774, 2.6583, 2.5055, 2.5411, 2.5673, 2.5313, 2.4686, 2.5050,\n", + " 2.5235, 2.4548, 2.4536, 2.4510, 2.3736, 2.3343, 2.2953, 2.3951, 2.3123,\n", + " 2.3574, 2.1960, 2.2828, 2.2992, 2.3267, 2.2198, 1.4212, 2.0001, 1.8655,\n", + " 1.6577, 1.5133, 1.5529, 1.6427, 1.1263, 0.6910, 0.6770, 1.2343, 1.8196,\n", + " 1.9442, 1.3734, 1.8532]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4227, -1.7775, 0.6531, 0.7878, -0.5567, 1.7102, -0.5329, -0.6359,\n", + " -0.0511, -0.9116, -0.4419, 0.3459, -1.6485, -0.4350, 1.0057, 0.6991,\n", + " -0.7412, -0.1020, 0.5224, 1.2201, 0.1475, 0.6728, -0.1046, -0.8212,\n", + " -0.1818, 0.4640, -0.4956, 0.1054, 0.3270, 0.7172, 1.2233, 0.0991,\n", + " 0.3793, 0.5829, -1.2996, 0.9986, 0.8291, -0.3710, 0.0382, -0.4174,\n", + " -0.5289, -0.4849, -0.3886]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3123, 0.2728, 0.1653, 0.1993, -0.0009, -0.1332, -0.3429, -0.3824,\n", + " -0.2011, -0.1826, -0.2066, 0.1769, 0.1606, 0.2113, 0.1444, 0.2285,\n", + " 0.1987, 0.0061, 0.1107, 0.1236, 0.0448, 0.0441, 0.0317, -0.0571,\n", + " -0.0087, -0.0021, -0.0249, 0.0242, 0.1651, 0.2205, 0.1929, 0.2078,\n", + " 0.2608, 0.2348, 0.1916, 0.1899, -0.0971, -0.0218, -0.0308, -0.2616,\n", + " -0.2036, -0.2040, -0.2136]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 2.376341581111774e-05\n", + "Grad encoder.fc1.bias: 9.308928565587848e-05\n", + "Grad encoder.encoder.0.weight: 6.1732553149340674e-06\n", + "Grad encoder.encoder.0.bias: 4.9438949645264074e-05\n", + "Grad encoder.encoder.2.weight: 6.834571649960708e-06\n", + "Grad encoder.encoder.2.bias: 4.967591667082161e-05\n", + "Grad encoder.encoder.4.weight: 1.9390654415474273e-05\n", + "Grad encoder.encoder.4.bias: 6.497115100501105e-05\n", + "Grad decoder.fc1.0.weight: 7.509966508223442e-06\n", + "Grad decoder.fc1.0.bias: 3.4574593883007765e-05\n", + "Grad decoder.fc1.2.weight: 1.2773636626661755e-05\n", + "Grad decoder.fc1.2.bias: 6.718824442941695e-05\n", + "Grad decoder.fc1.4.weight: 1.581520336912945e-05\n", + "Grad decoder.fc1.4.bias: 0.00014090095646679401\n", + "Grad decoder.fc2.weight: 7.873376307543367e-05\n", + "Grad decoder.fc2.bias: 0.002055083867162466\n", + "Grad _memory_unit.weight_ih_l0: 1.4158597423374886e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.0186455458315322e-06\n", + "Grad _memory_unit.bias_hh_l0: 1.164462787528464e-06\n", + "Grad _memory_unit.weight_ih_l1: 5.162866614227823e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.116633358033141e-06\n", + "Grad _memory_unit.bias_hh_l1: 3.175663323418121e-06\n", + "Data X Sample: tensor([[1.4629, 1.5949, 1.7611, 1.8433, 1.9260, 2.1849, 2.1338, 2.0982, 3.1953,\n", + " 3.8198, 4.0701, 3.9982, 3.7772, 3.7816, 3.5382, 3.4120, 3.3224, 3.3329,\n", + " 3.3619, 3.2954, 3.3001, 3.3343, 2.8869, 2.8306, 2.8284, 2.8888, 3.0129,\n", + " 3.0752, 3.0043, 3.0426, 3.0691, 3.3740, 3.5047, 2.5082, 4.3042, 4.7064,\n", + " 5.0283, 5.2369, 5.7363, 5.5154, 1.0595, 0.6512, 0.6184, 1.1912, 1.6451,\n", + " 1.7441, 1.1422, 1.6733]], device='cuda:0')\n", + "Data Y Sample: tensor([[-8.1980e-01, -6.6655e-01, 6.2908e-01, -1.0691e+00, 2.3336e-02,\n", + " 1.8610e-01, 5.8461e-01, 5.3791e-01, 8.0868e-01, 2.4814e-01,\n", + " 3.0269e-01, -3.3776e-01, -1.3714e-01, -5.8727e-01, -5.4385e-01,\n", + " 2.3024e-01, -4.1635e-01, 1.1345e+00, -1.3224e+00, 4.2599e-01,\n", + " 2.9973e-01, -1.6089e-01, -1.6359e-01, 7.2015e-02, 1.9206e-01,\n", + " -5.9928e-01, 3.6990e-01, 1.3934e-01, -4.2270e-01, -5.5894e-01,\n", + " -3.0233e-01, 2.5791e-01, -9.9568e-01, -4.9557e-01, -1.0401e+00,\n", + " 1.0455e-03, -1.0293e+00, -6.7815e-01, -2.7833e-01, 6.3187e-01,\n", + " 5.5364e-01, 4.6035e-01, 8.2803e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2187, -0.2283, -0.0560, -0.1851, -0.0367, 0.0701, 0.1393, 0.2467,\n", + " 0.1528, 0.2069, 0.1954, -0.1162, -0.1274, -0.2434, -0.1380, -0.2614,\n", + " -0.1951, -0.0743, -0.0644, -0.0709, -0.0506, -0.0689, -0.0191, -0.0696,\n", + " -0.0472, 0.0349, -0.0148, -0.0521, -0.1439, -0.1717, -0.1543, -0.1309,\n", + " -0.2169, -0.2280, -0.1253, -0.1217, -0.0157, 0.0255, 0.0155, 0.2668,\n", + " 0.2961, 0.2860, 0.1961]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.003059795591980219\n", + "Grad encoder.fc1.bias: 0.0020696651190519333\n", + "Grad encoder.encoder.0.weight: 0.0004176963702775538\n", + "Grad encoder.encoder.0.bias: 0.0018280299846082926\n", + "Grad encoder.encoder.2.weight: 0.0002770021674223244\n", + "Grad encoder.encoder.2.bias: 0.002023897133767605\n", + "Grad encoder.encoder.4.weight: 0.0006736933719366789\n", + "Grad encoder.encoder.4.bias: 0.005758024752140045\n", + "Grad decoder.fc1.0.weight: 0.0001994818012462929\n", + "Grad decoder.fc1.0.bias: 0.001250063069164753\n", + "Grad decoder.fc1.2.weight: 9.609052358428016e-05\n", + "Grad decoder.fc1.2.bias: 0.001967314863577485\n", + "Grad decoder.fc1.4.weight: 5.5051616072887555e-05\n", + "Grad decoder.fc1.4.bias: 0.001141153508797288\n", + "Grad decoder.fc2.weight: 0.000131587716168724\n", + "Grad decoder.fc2.bias: 0.0024079852737486362\n", + "Grad _memory_unit.weight_ih_l0: 7.760584412608296e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00016085105016827583\n", + "Grad _memory_unit.bias_hh_l0: 0.00011492922203615308\n", + "Grad _memory_unit.weight_ih_l1: 3.3776883356040344e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0004988348227925599\n", + "Grad _memory_unit.bias_hh_l1: 0.00025917525636032224\n", + "Data X Sample: tensor([[1.5923, 1.7799, 1.8948, 2.0510, 2.1343, 2.2349, 2.1631, 3.2438, 4.0740,\n", + " 4.2905, 4.3492, 4.2748, 4.1345, 3.9670, 3.7652, 3.7881, 3.8633, 3.5863,\n", + " 3.3887, 3.6004, 3.4596, 3.2960, 2.9930, 2.8898, 2.9429, 2.9567, 3.1621,\n", + " 3.1283, 3.1951, 3.2489, 3.4715, 3.5647, 3.8017, 2.8469, 4.5591, 4.7866,\n", + " 5.1128, 5.4675, 5.8884, 5.6743, 1.1550, 0.6731, 0.6952, 1.1826, 1.7403,\n", + " 1.9442, 1.2918, 1.8141]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6667, -0.6404, 1.6900, -1.3674, -1.3799, -0.2520, -0.8473, 0.2717,\n", + " -0.6244, -0.7036, -0.7814, 0.4046, 0.3131, 0.0996, -0.1195, -0.1038,\n", + " 0.2605, -0.4596, 0.2721, -0.7268, 1.2188, 0.7523, -0.5014, -0.7482,\n", + " -0.1871, -0.1439, -0.1103, -0.0829, -0.1349, 0.3332, -0.8150, -0.2474,\n", + " -0.2388, -0.0549, -0.7069, 0.6994, 0.6400, -0.4031, -0.7130, 0.4601,\n", + " 0.8568, -0.1816, -0.0098]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1517, -0.1773, -0.0370, -0.1667, -0.0492, 0.0383, 0.0794, 0.1709,\n", + " 0.1259, 0.1691, 0.1264, -0.0825, -0.0984, -0.1767, -0.1015, -0.2207,\n", + " -0.1693, -0.0725, -0.0353, -0.0600, -0.0359, -0.0682, -0.0309, -0.0843,\n", + " -0.0488, 0.0318, 0.0005, -0.0155, -0.1009, -0.1464, -0.1019, -0.0901,\n", + " -0.1711, -0.1653, -0.1052, -0.0856, -0.0183, 0.0296, 0.0010, 0.1905,\n", + " 0.2435, 0.2096, 0.1546]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005583867896348238\n", + "Grad encoder.fc1.bias: 0.0010935859754681587\n", + "Grad encoder.encoder.0.weight: 8.732979040360078e-05\n", + "Grad encoder.encoder.0.bias: 0.0008932372438721359\n", + "Grad encoder.encoder.2.weight: 7.542708772234619e-05\n", + "Grad encoder.encoder.2.bias: 0.001119609922170639\n", + "Grad encoder.encoder.4.weight: 0.0002347645058762282\n", + "Grad encoder.encoder.4.bias: 0.0019237113883718848\n", + "Grad decoder.fc1.0.weight: 9.78803655016236e-05\n", + "Grad decoder.fc1.0.bias: 0.0006678701029159129\n", + "Grad decoder.fc1.2.weight: 8.156719559337944e-05\n", + "Grad decoder.fc1.2.bias: 0.0008262063493020833\n", + "Grad decoder.fc1.4.weight: 5.476817023009062e-05\n", + "Grad decoder.fc1.4.bias: 0.0004451888089533895\n", + "Grad decoder.fc2.weight: 0.0001816172298276797\n", + "Grad decoder.fc2.bias: 0.001886387588456273\n", + "Grad _memory_unit.weight_ih_l0: 2.7331256205798127e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.78086798870936e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.880367123405449e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.536023773951456e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00016286075697280467\n", + "Grad _memory_unit.bias_hh_l1: 8.937104576034471e-05\n", + "Data X Sample: tensor([[1.4321, 1.6735, 1.7956, 1.9351, 2.0745, 2.0699, 2.2417, 3.3162, 4.0716,\n", + " 4.3474, 4.3524, 4.3916, 3.9281, 3.9697, 3.7526, 3.7567, 3.7045, 3.6579,\n", + " 3.6840, 3.5502, 3.4669, 3.2731, 2.9448, 2.7771, 2.8584, 2.9044, 2.9597,\n", + " 3.0712, 3.0390, 3.2882, 3.3035, 3.3270, 3.8721, 2.7691, 4.5665, 4.8766,\n", + " 5.0617, 5.3058, 6.0532, 5.7736, 1.0595, 0.6890, 0.6285, 1.2199, 1.7720,\n", + " 1.9156, 1.2306, 1.6811]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.0747, 0.6325, 0.1535, 0.4940, 0.7993, 1.4321, 0.2347, -0.1784,\n", + " -0.4108, -0.7288, -0.0699, -0.0726, 0.5517, 0.1534, -0.0683, 0.8211,\n", + " 0.7693, 1.1215, 0.4256, 1.2852, 0.2381, 0.1798, -0.4643, -0.8755,\n", + " -0.8084, -0.8444, -1.1325, -1.2755, -1.6820, -0.6136, -0.7545, -0.2435,\n", + " -1.1094, 0.4043, -0.5622, 0.9942, 0.9570, 0.4388, 0.1862, -0.6334,\n", + " -0.6018, -0.0596, -0.6208]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.0526, -0.0789, -0.0183, -0.1526, -0.0923, -0.0482, -0.0085, 0.0387,\n", + " 0.1070, 0.1138, 0.0680, -0.0337, -0.0798, -0.1051, -0.0354, -0.1723,\n", + " -0.0723, -0.0916, -0.0271, -0.0506, -0.0469, -0.0943, -0.0621, -0.1099,\n", + " -0.0276, 0.0794, -0.0126, 0.0051, -0.0225, -0.1192, -0.0299, -0.0485,\n", + " -0.0723, -0.1093, -0.0693, -0.0763, -0.0296, -0.0008, -0.0109, 0.1046,\n", + " 0.1513, 0.1512, 0.1369]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0014566847821697593\n", + "Grad encoder.fc1.bias: 0.0011905684368684888\n", + "Grad encoder.encoder.0.weight: 0.00020951288752257824\n", + "Grad encoder.encoder.0.bias: 0.001123247784562409\n", + "Grad encoder.encoder.2.weight: 0.00020027137361466885\n", + "Grad encoder.encoder.2.bias: 0.0019544020760804415\n", + "Grad encoder.encoder.4.weight: 0.0005765128880739212\n", + "Grad encoder.encoder.4.bias: 0.005764711182564497\n", + "Grad decoder.fc1.0.weight: 0.00023771027917973697\n", + "Grad decoder.fc1.0.bias: 0.0015589505201205611\n", + "Grad decoder.fc1.2.weight: 0.00015087088104337454\n", + "Grad decoder.fc1.2.bias: 0.003469844814389944\n", + "Grad decoder.fc1.4.weight: 0.00010554734762990847\n", + "Grad decoder.fc1.4.bias: 0.0012573471758514643\n", + "Grad decoder.fc2.weight: 0.00019976934709120542\n", + "Grad decoder.fc2.bias: 0.002089478773996234\n", + "Grad _memory_unit.weight_ih_l0: 0.00010248695616610348\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0002419965312583372\n", + "Grad _memory_unit.bias_hh_l0: 0.0001700666471151635\n", + "Grad _memory_unit.weight_ih_l1: 5.056785812485032e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0006011398509144783\n", + "Grad _memory_unit.bias_hh_l1: 0.00032459458452649415\n", + "Data X Sample: tensor([[1.2889, 1.5235, 1.7235, 1.7952, 1.7928, 1.8740, 1.9197, 1.8952, 1.9162,\n", + " 2.0473, 2.0810, 2.0390, 1.9640, 1.9685, 1.9343, 1.9871, 1.9214, 2.0524,\n", + " 2.0526, 2.0289, 2.1297, 2.1525, 2.1037, 2.1454, 2.1658, 2.2123, 2.1418,\n", + " 2.1535, 1.9011, 2.0077, 1.9807, 1.9979, 2.0262, 1.4028, 2.0271, 1.9555,\n", + " 1.7816, 1.4656, 1.3564, 1.2455, 1.0834, 0.6293, 0.6750, 1.1424, 1.6134,\n", + " 1.8927, 1.1082, 1.7593]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5141, 1.2982, -0.3004, 0.4300, -0.0261, 0.6622, 0.6997, -0.2132,\n", + " -0.9587, -0.3541, -0.2455, 0.7820, -0.2006, 0.8955, 1.6836, 0.8519,\n", + " 0.0609, -0.2445, -0.0765, 0.3488, 0.0678, -0.3800, -0.0432, -0.5704,\n", + " -0.9841, 0.2130, 0.7071, 1.0461, 0.5704, 1.4621, 0.7100, -0.2769,\n", + " 0.4432, 0.2880, 0.3209, 0.1468, -0.5085, 0.4473, 0.0040, -0.0590,\n", + " -0.2998, -0.5066, -0.7783]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3979, 0.3984, 0.2373, 0.3360, 0.0617, -0.1180, -0.4340, -0.5020,\n", + " -0.2373, -0.2431, -0.2416, 0.2390, 0.2297, 0.2434, 0.1856, 0.3370,\n", + " 0.3125, 0.0388, 0.1700, 0.1737, 0.0733, 0.0522, 0.0387, -0.0575,\n", + " 0.0077, 0.0098, -0.0893, 0.0176, 0.1828, 0.2869, 0.2562, 0.2681,\n", + " 0.3746, 0.3491, 0.2725, 0.2700, -0.1164, -0.0347, -0.0540, -0.3478,\n", + " -0.3144, -0.3156, -0.2893]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.001427250332199037\n", + "Grad encoder.fc1.bias: 0.0006993783754296601\n", + "Grad encoder.encoder.0.weight: 0.00033148517832159996\n", + "Grad encoder.encoder.0.bias: 0.0005516496021300554\n", + "Grad encoder.encoder.2.weight: 0.0001635517692193389\n", + "Grad encoder.encoder.2.bias: 0.0008053678320720792\n", + "Grad encoder.encoder.4.weight: 0.0003835563256870955\n", + "Grad encoder.encoder.4.bias: 0.0012229818385094404\n", + "Grad decoder.fc1.0.weight: 0.0001478075864724815\n", + "Grad decoder.fc1.0.bias: 0.0008083075517788529\n", + "Grad decoder.fc1.2.weight: 8.961874118540436e-05\n", + "Grad decoder.fc1.2.bias: 0.0009746887953951955\n", + "Grad decoder.fc1.4.weight: 7.414403808070347e-05\n", + "Grad decoder.fc1.4.bias: 0.000744200951885432\n", + "Grad decoder.fc2.weight: 0.00017866940470412374\n", + "Grad decoder.fc2.bias: 0.002409391338005662\n", + "Grad _memory_unit.weight_ih_l0: 2.65983853751095e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.364269938785583e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.3738644308177754e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.3610493624582887e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00017248245421797037\n", + "Grad _memory_unit.bias_hh_l1: 9.202289948007092e-05\n", + "Data X Sample: tensor([[-0.0053, -0.0029, 0.0015, 0.0022, 0.0034, 0.0015, -0.0046, -0.0043,\n", + " 0.0000, 0.0032, -0.0032, 0.0000, 0.0044, -0.0245, -0.0126, -0.0041,\n", + " 0.0157, 0.0135, 0.0186, 0.0019, 0.0466, 0.0107, 0.0145, 0.0095,\n", + " 0.0094, 0.0313, 0.0373, 0.0245, -0.0139, 0.0197, -0.0105, -0.0221,\n", + " 0.0088, -0.0092, 0.0098, 0.0316, -0.0098, 0.0080, 0.0000, -0.0113,\n", + " 0.0239, 0.0139, 0.0040, 0.0029, 0.0198, 0.0057, 0.0272, -0.0547]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.9361, 0.1572, -0.2448, 0.3589, -0.5141, -1.0333, -0.7919, -0.7409,\n", + " -0.6813, -0.7579, -1.0250, 1.2640, 0.4159, 1.0406, 1.3487, -1.1086,\n", + " 0.4275, 0.2324, 0.7208, 0.2090, -0.5605, -0.6277, -1.3246, -0.2424,\n", + " 0.0951, -0.5934, -0.6689, -0.3729, 0.7935, 0.7110, -2.1221, 0.9731,\n", + " -0.0228, 0.3495, 0.0696, -0.3777, -0.5893, 0.3857, 0.5046, -0.9346,\n", + " -0.9520, -0.8440, -0.8759]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.7897, 0.6863, 0.2687, 0.3370, -0.5879, -0.7390, -1.2334, -1.2402,\n", + " -0.7869, -0.7991, -0.7703, 0.4403, 0.4803, 0.6053, 0.3920, 0.6173,\n", + " 0.5378, 0.0190, 0.2097, 0.2414, 0.0287, 0.0677, 0.0170, -0.1016,\n", + " 0.1319, -0.0599, 0.2480, 0.4945, 1.0157, 1.0168, 0.7708, 0.6118,\n", + " 0.8220, 0.7048, 0.4049, 0.4259, -0.1032, -0.1020, 0.0209, -0.7745,\n", + " -0.7315, -0.6021, -0.4295]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0016190484166145325\n", + "Grad encoder.fc1.bias: 0.0012676639016717672\n", + "Grad encoder.encoder.0.weight: 0.0002200063318014145\n", + "Grad encoder.encoder.0.bias: 0.001187336863949895\n", + "Grad encoder.encoder.2.weight: 0.00011466316209407523\n", + "Grad encoder.encoder.2.bias: 0.0012690548319369555\n", + "Grad encoder.encoder.4.weight: 0.00032203190494328737\n", + "Grad encoder.encoder.4.bias: 0.0041327103972435\n", + "Grad decoder.fc1.0.weight: 0.0001202938292408362\n", + "Grad decoder.fc1.0.bias: 0.0009409997728653252\n", + "Grad decoder.fc1.2.weight: 6.658144411630929e-05\n", + "Grad decoder.fc1.2.bias: 0.002097330056130886\n", + "Grad decoder.fc1.4.weight: 8.289018296636641e-05\n", + "Grad decoder.fc1.4.bias: 0.0009608807158656418\n", + "Grad decoder.fc2.weight: 0.00021990005916450173\n", + "Grad decoder.fc2.bias: 0.002014189027249813\n", + "Grad _memory_unit.weight_ih_l0: 4.649724724004045e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00020139722619205713\n", + "Grad _memory_unit.bias_hh_l0: 0.00011697009904310107\n", + "Grad _memory_unit.weight_ih_l1: 2.4956345441751182e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00031225630664266646\n", + "Grad _memory_unit.bias_hh_l1: 0.00016609310114290565\n", + "Data X Sample: tensor([[2.5768, 2.9756, 3.2171, 3.3891, 3.4917, 3.6640, 3.5435, 3.6924, 3.7689,\n", + " 4.0141, 4.0320, 3.8891, 3.8327, 3.8089, 3.6769, 3.6144, 3.5819, 3.6173,\n", + " 3.5064, 3.4981, 3.3271, 3.2823, 3.0604, 2.9890, 2.8284, 2.7451, 2.7705,\n", + " 2.8061, 2.7406, 2.7871, 2.7751, 2.8987, 2.9723, 2.1306, 3.6326, 3.9840,\n", + " 4.1375, 4.4604, 4.9566, 4.7720, 2.0570, 1.1710, 1.0792, 1.9088, 2.9375,\n", + " 3.1507, 2.1077, 3.1042]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6983, 1.1539, -1.5544, 0.3082, 1.1243, -0.5054, -0.3264, 0.6195,\n", + " -0.5100, -0.4643, -0.5512, -1.6828, 0.0349, -0.0762, -0.8012, -1.9618,\n", + " -0.7066, -0.2642, 0.8723, -2.3700, 0.1108, 2.0681, -0.2353, -0.6408,\n", + " 0.0520, -0.5478, 0.6666, 0.6561, 0.2776, 0.4054, 0.2968, 0.2769,\n", + " -1.2298, -0.5958, 0.0759, 0.9672, -0.3615, -0.6423, 0.5660, -0.1315,\n", + " 0.6225, 0.3107, 0.2358]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1220, -0.1528, -0.0287, -0.1496, -0.0512, 0.0303, 0.0555, 0.1365,\n", + " 0.1250, 0.1557, 0.1006, -0.0742, -0.0843, -0.1599, -0.0818, -0.2089,\n", + " -0.1417, -0.0734, -0.0312, -0.0578, -0.0401, -0.0756, -0.0302, -0.0893,\n", + " -0.0482, 0.0371, -0.0010, -0.0033, -0.0790, -0.1363, -0.0835, -0.0745,\n", + " -0.1474, -0.1457, -0.0938, -0.0735, -0.0228, 0.0207, -0.0100, 0.1662,\n", + " 0.2198, 0.1901, 0.1453]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00024580262834206223\n", + "Grad encoder.fc1.bias: 0.0005418348009698093\n", + "Grad encoder.encoder.0.weight: 4.581516986945644e-05\n", + "Grad encoder.encoder.0.bias: 0.00040662684477865696\n", + "Grad encoder.encoder.2.weight: 3.275243579992093e-05\n", + "Grad encoder.encoder.2.bias: 0.00020900825620628893\n", + "Grad encoder.encoder.4.weight: 0.0001124138361774385\n", + "Grad encoder.encoder.4.bias: 0.0004270027857273817\n", + "Grad decoder.fc1.0.weight: 3.533518247422762e-05\n", + "Grad decoder.fc1.0.bias: 0.00016689853509888053\n", + "Grad decoder.fc1.2.weight: 3.9466554881073534e-05\n", + "Grad decoder.fc1.2.bias: 0.00018172463751398027\n", + "Grad decoder.fc1.4.weight: 4.6886383643141016e-05\n", + "Grad decoder.fc1.4.bias: 0.00036038499092683196\n", + "Grad decoder.fc2.weight: 0.00010863891657209024\n", + "Grad decoder.fc2.bias: 0.0019388521322980523\n", + "Grad _memory_unit.weight_ih_l0: 4.622576852852944e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.1632515452220105e-05\n", + "Grad _memory_unit.bias_hh_l0: 6.235069577087415e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.309604269612464e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.471976378932595e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.8377591914031655e-05\n", + "Data X Sample: tensor([[1.6835, 1.8905, 2.0060, 2.1975, 2.2811, 2.4780, 2.5822, 2.6519, 2.5606,\n", + " 2.6571, 2.6520, 2.6272, 2.6565, 2.5547, 2.4059, 2.4725, 2.4372, 2.4044,\n", + " 2.5709, 2.4995, 2.5861, 2.6393, 2.5761, 2.5252, 2.5956, 2.5597, 2.4855,\n", + " 2.5858, 2.2966, 2.4039, 2.3727, 2.3129, 2.1824, 1.3891, 1.8751, 1.7877,\n", + " 1.6715, 1.6087, 1.5973, 1.4611, 1.3220, 0.7488, 0.7599, 1.3003, 1.7601,\n", + " 2.2930, 1.3258, 2.1034]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7039, 0.3052, -1.0029, 0.1125, 0.1011, -0.5213, -0.8192, -0.9451,\n", + " -0.2616, -0.9404, -0.5421, -0.4100, 0.9016, -0.1766, 0.4123, 0.0781,\n", + " 0.2479, -1.1955, -0.3541, -0.4245, 0.4493, -0.4119, 0.1009, -0.8473,\n", + " -0.2585, -1.5080, -0.4897, 0.7431, 0.8179, 1.0910, 0.6646, 0.2710,\n", + " 1.1995, 0.5708, -0.4751, -0.5541, -0.5002, 0.8631, 0.2630, -0.6063,\n", + " -0.8372, -0.2570, -0.3733]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4450, 0.4903, 0.2837, 0.4074, 0.1191, -0.0939, -0.4659, -0.5205,\n", + " -0.2468, -0.2739, -0.2612, 0.2609, 0.2673, 0.2469, 0.2022, 0.3897,\n", + " 0.3841, 0.0419, 0.2021, 0.2202, 0.0956, 0.0367, 0.0345, -0.0698,\n", + " 0.0276, 0.0415, -0.1400, 0.0035, 0.1605, 0.3022, 0.2791, 0.2912,\n", + " 0.4368, 0.4012, 0.3080, 0.3160, -0.1249, -0.0506, -0.0781, -0.3810,\n", + " -0.3582, -0.3832, -0.3386]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000610621296800673\n", + "Grad encoder.fc1.bias: 0.0004112633760087192\n", + "Grad encoder.encoder.0.weight: 8.636160055175424e-05\n", + "Grad encoder.encoder.0.bias: 0.0005248755333013833\n", + "Grad encoder.encoder.2.weight: 7.016578456386924e-05\n", + "Grad encoder.encoder.2.bias: 0.000805218587629497\n", + "Grad encoder.encoder.4.weight: 0.00020206710905767977\n", + "Grad encoder.encoder.4.bias: 0.0027856635861098766\n", + "Grad decoder.fc1.0.weight: 9.493224933976308e-05\n", + "Grad decoder.fc1.0.bias: 0.0006834894884377718\n", + "Grad decoder.fc1.2.weight: 5.965097079752013e-05\n", + "Grad decoder.fc1.2.bias: 0.001642545685172081\n", + "Grad decoder.fc1.4.weight: 5.7097953686024994e-05\n", + "Grad decoder.fc1.4.bias: 0.0007599123055115342\n", + "Grad decoder.fc2.weight: 0.00015856651589274406\n", + "Grad decoder.fc2.bias: 0.001635945518501103\n", + "Grad _memory_unit.weight_ih_l0: 4.8206085921265185e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00016634809435345232\n", + "Grad _memory_unit.bias_hh_l0: 0.00010305901378160343\n", + "Grad _memory_unit.weight_ih_l1: 2.443111407046672e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0003184318484272808\n", + "Grad _memory_unit.bias_hh_l1: 0.00016950099961832166\n", + "Data X Sample: tensor([[2.0432, 2.5605, 2.7483, 2.7507, 2.8122, 2.8979, 3.0644, 3.1629, 3.2734,\n", + " 3.2353, 3.4261, 3.4646, 3.3178, 3.2336, 3.2230, 3.2575, 3.1856, 3.2265,\n", + " 3.2152, 3.0481, 2.9860, 2.8842, 2.7905, 2.6664, 2.6782, 2.5597, 2.3896,\n", + " 2.5817, 2.2341, 2.1911, 2.1627, 2.0283, 1.9932, 1.3800, 2.2060, 2.3155,\n", + " 2.6724, 2.8729, 3.1185, 2.9761, 1.7659, 1.0097, 0.9559, 1.7050, 2.4855,\n", + " 2.7390, 1.8901, 2.4240]], device='cuda:0')\n", + "Data Y Sample: tensor([[-2.1106, -1.5253, -1.1712, -0.9834, -0.8183, 4.4103, 0.5912, 0.4571,\n", + " 0.3459, 0.7303, 0.8489, -0.5828, -0.0834, -0.4104, 0.4548, 0.0239,\n", + " -0.5674, -0.5466, 1.7236, 0.7249, 1.3606, 1.5072, 1.2796, -0.2847,\n", + " 1.0611, 0.9547, 1.4662, -0.8932, 0.2425, -0.8274, -0.5386, -0.5032,\n", + " -0.7799, -1.0812, 0.4446, -0.9598, -1.0105, -0.0751, -0.9960, 0.7434,\n", + " 0.8099, 1.0203, 0.1650]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.0876, -0.1209, -0.0225, -0.1399, -0.0615, 0.0068, 0.0251, 0.0956,\n", + " 0.1170, 0.1365, 0.0735, -0.0600, -0.0724, -0.1345, -0.0592, -0.1927,\n", + " -0.1137, -0.0785, -0.0256, -0.0540, -0.0415, -0.0848, -0.0380, -0.0974,\n", + " -0.0448, 0.0462, -0.0048, 0.0104, -0.0549, -0.1257, -0.0596, -0.0568,\n", + " -0.1165, -0.1217, -0.0835, -0.0642, -0.0289, 0.0110, -0.0174, 0.1351,\n", + " 0.1896, 0.1634, 0.1339]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005774311139248312\n", + "Grad encoder.fc1.bias: 0.0002800063812173903\n", + "Grad encoder.encoder.0.weight: 0.00011155322863487527\n", + "Grad encoder.encoder.0.bias: 0.00033361397800035775\n", + "Grad encoder.encoder.2.weight: 6.404145096894354e-05\n", + "Grad encoder.encoder.2.bias: 0.0003159919288009405\n", + "Grad encoder.encoder.4.weight: 0.00018230554996989667\n", + "Grad encoder.encoder.4.bias: 0.0010344157926738262\n", + "Grad decoder.fc1.0.weight: 4.577894651447423e-05\n", + "Grad decoder.fc1.0.bias: 0.0002242659538751468\n", + "Grad decoder.fc1.2.weight: 3.726589056896046e-05\n", + "Grad decoder.fc1.2.bias: 0.00028138989000581205\n", + "Grad decoder.fc1.4.weight: 4.22806988353841e-05\n", + "Grad decoder.fc1.4.bias: 0.000560694606974721\n", + "Grad decoder.fc2.weight: 8.395054464926943e-05\n", + "Grad decoder.fc2.bias: 0.001993783749639988\n", + "Grad _memory_unit.weight_ih_l0: 2.8938623017893406e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.89381987892557e-06\n", + "Grad _memory_unit.bias_hh_l0: 5.544814030145062e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.007404873438645e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.554871702566743e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.2675387299386784e-05\n", + "Data X Sample: tensor([[1.3738, 1.4973, 1.6198, 1.7164, 1.8014, 1.9344, 2.0537, 1.9946, 3.1538,\n", + " 4.0772, 4.2255, 4.0722, 3.7883, 3.8307, 3.6845, 3.5009, 3.4797, 3.4161,\n", + " 3.3928, 3.3196, 3.3393, 3.3420, 3.0339, 2.8000, 2.8359, 2.9567, 2.9011,\n", + " 2.9814, 2.8759, 2.8919, 3.1076, 3.0922, 3.4717, 2.5151, 4.2895, 4.6407,\n", + " 5.0027, 5.0726, 5.6919, 5.5806, 1.0882, 0.6114, 0.6023, 1.0994, 1.5540,\n", + " 1.5782, 1.1898, 1.6733]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1856, -0.8578, -0.5873, 0.0314, -0.1085, -0.0784, -0.0364, 0.3626,\n", + " 0.8943, 0.4019, 0.9393, 0.3914, 0.4196, -0.2441, 0.2046, -0.6208,\n", + " 0.6045, 1.6997, 1.9526, 0.9678, 0.3273, 0.1401, -0.4192, -0.0510,\n", + " -0.1229, 0.4372, 0.4132, 0.6279, 0.2534, -0.0620, -0.1123, -1.2817,\n", + " -0.2786, -0.6430, -0.3350, 0.3125, 1.0496, -0.9603, -0.2890, 0.6378,\n", + " 1.0195, 1.1621, -0.5501]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2572, -0.2491, -0.0545, -0.1842, -0.0030, 0.1121, 0.1800, 0.2958,\n", + " 0.1847, 0.2260, 0.2238, -0.1482, -0.1548, -0.3003, -0.1521, -0.2969,\n", + " -0.1933, -0.0854, -0.0830, -0.0754, -0.0657, -0.0766, -0.0043, -0.0688,\n", + " -0.0436, 0.0350, -0.0258, -0.0746, -0.1699, -0.1779, -0.1759, -0.1551,\n", + " -0.2484, -0.2727, -0.1413, -0.1275, -0.0180, 0.0118, 0.0331, 0.3083,\n", + " 0.3274, 0.3287, 0.2311]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 8.71997035574168e-05\n", + "Grad encoder.fc1.bias: 0.00015744473785161972\n", + "Grad encoder.encoder.0.weight: 2.3281045287149027e-05\n", + "Grad encoder.encoder.0.bias: 0.0001242946309503168\n", + "Grad encoder.encoder.2.weight: 1.601885014679283e-05\n", + "Grad encoder.encoder.2.bias: 0.00012293912004679441\n", + "Grad encoder.encoder.4.weight: 5.973229417577386e-05\n", + "Grad encoder.encoder.4.bias: 0.0002926560991909355\n", + "Grad decoder.fc1.0.weight: 1.887065445771441e-05\n", + "Grad decoder.fc1.0.bias: 8.192207315005362e-05\n", + "Grad decoder.fc1.2.weight: 2.853412297554314e-05\n", + "Grad decoder.fc1.2.bias: 0.0001683610025793314\n", + "Grad decoder.fc1.4.weight: 3.299722811789252e-05\n", + "Grad decoder.fc1.4.bias: 0.00023752724518999457\n", + "Grad decoder.fc2.weight: 8.055046782828867e-05\n", + "Grad decoder.fc2.bias: 0.0021046767942607403\n", + "Grad _memory_unit.weight_ih_l0: 1.5982388958946103e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.045344212499913e-06\n", + "Grad _memory_unit.bias_hh_l0: 2.1988175831211265e-06\n", + "Grad _memory_unit.weight_ih_l1: 6.12920473486156e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.7749498510966077e-05\n", + "Grad _memory_unit.bias_hh_l1: 8.917961167753674e-06\n", + "Data X Sample: tensor([[2.4240, 2.9218, 3.1901, 3.5007, 3.4661, 3.5859, 3.6668, 3.6002, 3.7787,\n", + " 3.9667, 4.0288, 4.0333, 3.7816, 3.6698, 3.6719, 3.5721, 3.6259, 3.4142,\n", + " 3.4217, 3.3475, 3.2976, 3.1675, 2.9496, 2.8230, 2.8359, 2.6955, 2.7465,\n", + " 2.7816, 2.8031, 2.8264, 2.6981, 2.7937, 2.8887, 2.0711, 3.4610, 3.8527,\n", + " 4.1296, 4.4869, 4.8742, 4.8430, 1.9090, 1.0575, 1.1318, 2.0150, 2.8502,\n", + " 3.4710, 2.0941, 3.1042]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2291, -0.3043, -0.0637, -0.1673, 0.8790, -0.5011, -0.4352, 0.3584,\n", + " -0.6101, -0.5811, -0.6088, -0.6083, 0.3244, -0.1876, 0.5599, 0.1276,\n", + " 0.4876, -1.4308, -0.2791, 2.3187, -0.9748, -0.1435, -0.6565, -0.7483,\n", + " -0.6175, 0.9646, -0.1007, -1.0206, -1.9472, -0.0700, -0.2777, -0.6320,\n", + " -0.6758, 0.2372, -1.0198, -0.8622, -0.6417, -0.7806, -0.7130, -0.3633,\n", + " 1.5536, 0.4301, -0.0465]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2083, -0.2168, -0.0432, -0.1689, -0.0140, 0.0912, 0.1361, 0.2433,\n", + " 0.1605, 0.1997, 0.1709, -0.1234, -0.1272, -0.2479, -0.1265, -0.2637,\n", + " -0.1820, -0.0808, -0.0599, -0.0681, -0.0524, -0.0747, -0.0127, -0.0776,\n", + " -0.0468, 0.0270, -0.0128, -0.0430, -0.1393, -0.1601, -0.1414, -0.1235,\n", + " -0.2162, -0.2224, -0.1263, -0.1001, -0.0200, 0.0174, 0.0168, 0.2521,\n", + " 0.2902, 0.2700, 0.1945]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 2.2813863324699923e-05\n", + "Grad encoder.fc1.bias: 0.000326218840200454\n", + "Grad encoder.encoder.0.weight: 7.369424110947875e-06\n", + "Grad encoder.encoder.0.bias: 0.0003203408850822598\n", + "Grad encoder.encoder.2.weight: 9.03203817870235e-06\n", + "Grad encoder.encoder.2.bias: 0.00025070682750083506\n", + "Grad encoder.encoder.4.weight: 3.3425967558287084e-05\n", + "Grad encoder.encoder.4.bias: 0.00044313049875199795\n", + "Grad decoder.fc1.0.weight: 2.1542155081988312e-05\n", + "Grad decoder.fc1.0.bias: 0.0002033056371146813\n", + "Grad decoder.fc1.2.weight: 2.663579653017223e-05\n", + "Grad decoder.fc1.2.bias: 0.00018122332403436303\n", + "Grad decoder.fc1.4.weight: 2.6808485927176662e-05\n", + "Grad decoder.fc1.4.bias: 0.00020817277254536748\n", + "Grad decoder.fc2.weight: 0.00010425543587189168\n", + "Grad decoder.fc2.bias: 0.00162639154586941\n", + "Grad _memory_unit.weight_ih_l0: 4.527863438852364e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.6365345800295472e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.433092261839192e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.7545726223033853e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.1882180084940046e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.1420117263915017e-05\n", + "Data X Sample: tensor([[1.4343, 1.5410, 1.7836, 1.7602, 1.9328, 2.1200, 2.1646, 2.0215, 3.3027,\n", + " 4.2020, 4.0828, 3.9768, 3.8593, 3.5580, 3.5887, 3.4134, 3.3775, 3.4103,\n", + " 3.4300, 3.4312, 3.3933, 3.3190, 3.0339, 2.8115, 2.7758, 2.7660, 2.7918,\n", + " 2.7612, 2.8170, 2.9345, 3.0691, 3.2358, 3.3705, 2.5768, 4.2454, 4.5702,\n", + " 4.9162, 5.2846, 5.7933, 5.6601, 1.1120, 0.6313, 0.6124, 1.1223, 1.5183,\n", + " 1.6983, 1.0810, 1.6499]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3786, -0.5734, -1.2661, -0.3307, -1.9843, -0.2242, -0.0374, 0.6659,\n", + " 1.3790, 0.3987, 0.4453, -1.4693, -1.0158, -1.3407, -1.6633, -0.7112,\n", + " -1.1952, -1.9500, -0.1644, 0.9035, 1.4343, 2.0447, 0.2492, 0.7001,\n", + " 0.0647, 0.8165, 1.2823, 1.8097, 0.0875, -0.3253, 0.9831, -0.8315,\n", + " -0.4396, -0.3312, -0.4219, 0.1164, -0.4689, 0.7314, -0.9853, 0.6338,\n", + " 0.7098, 0.4500, 0.6548]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2740, -0.2613, -0.0572, -0.1876, 0.0066, 0.1264, 0.1983, 0.3180,\n", + " 0.1946, 0.2350, 0.2397, -0.1587, -0.1665, -0.3219, -0.1590, -0.3074,\n", + " -0.1963, -0.0903, -0.0927, -0.0772, -0.0724, -0.0806, -0.0031, -0.0697,\n", + " -0.0381, 0.0344, -0.0305, -0.0853, -0.1808, -0.1819, -0.1884, -0.1675,\n", + " -0.2600, -0.2920, -0.1477, -0.1348, -0.0178, 0.0053, 0.0380, 0.3259,\n", + " 0.3402, 0.3494, 0.2443]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 2.520905945857521e-05\n", + "Grad encoder.fc1.bias: 0.0005370419821701944\n", + "Grad encoder.encoder.0.weight: 1.2180464182165451e-05\n", + "Grad encoder.encoder.0.bias: 0.00044821237679570913\n", + "Grad encoder.encoder.2.weight: 1.6241505363723263e-05\n", + "Grad encoder.encoder.2.bias: 0.000407883373554796\n", + "Grad encoder.encoder.4.weight: 5.5060510931070894e-05\n", + "Grad encoder.encoder.4.bias: 0.0008690766990184784\n", + "Grad decoder.fc1.0.weight: 3.0216608138289303e-05\n", + "Grad decoder.fc1.0.bias: 0.0002882424450945109\n", + "Grad decoder.fc1.2.weight: 4.629776958609e-05\n", + "Grad decoder.fc1.2.bias: 0.00027203059289604425\n", + "Grad decoder.fc1.4.weight: 4.126694329897873e-05\n", + "Grad decoder.fc1.4.bias: 0.0002785676624625921\n", + "Grad decoder.fc2.weight: 0.00010498735355213284\n", + "Grad decoder.fc2.bias: 0.0018962972098961473\n", + "Grad _memory_unit.weight_ih_l0: 9.91394972515991e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.233333675074391e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.17679662455339e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.4884111553546973e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.703319766325876e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.9425547836581245e-05\n", + "Data X Sample: tensor([[2.7147, 3.0106, 2.9602, 2.5889, 2.5731, 3.1587, 3.8856, 3.9380, 4.0569,\n", + " 3.9761, 3.9876, 4.0878, 3.9148, 3.7789, 3.6668, 3.5871, 3.4671, 3.4877,\n", + " 3.4259, 3.4237, 3.2657, 3.3435, 2.9279, 2.8917, 2.7420, 2.8156, 2.7172,\n", + " 2.7204, 2.6192, 2.8363, 2.7856, 2.8600, 3.0031, 2.2519, 3.8508, 4.1372,\n", + " 4.4187, 4.9215, 5.5017, 5.3480, 2.0045, 1.2048, 1.0105, 1.9059, 2.5807,\n", + " 2.5103, 1.5094, 2.2754]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6609, -0.7652, 0.1680, 0.1805, -0.6369, 0.1683, 0.5177, 0.0109,\n", + " 0.5191, 0.3413, 0.3529, 0.8069, -0.9029, -1.1897, -0.6027, -0.1225,\n", + " -0.4447, 0.3068, -1.2901, -0.9294, -0.0685, 0.0037, 1.3000, -0.4605,\n", + " -0.0563, -0.8436, 0.3784, 1.2800, 0.9207, 1.1098, 0.3481, 0.0660,\n", + " 1.1289, 0.1724, -0.1007, 0.2993, -0.0630, -0.6782, -0.5540, 0.2350,\n", + " 0.7113, 0.0881, 0.6583]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2326, -0.2340, -0.0482, -0.1758, -0.0031, 0.1081, 0.1607, 0.2737,\n", + " 0.1736, 0.2121, 0.1948, -0.1374, -0.1443, -0.2785, -0.1376, -0.2801,\n", + " -0.1878, -0.0862, -0.0744, -0.0714, -0.0604, -0.0783, -0.0100, -0.0758,\n", + " -0.0415, 0.0285, -0.0198, -0.0587, -0.1556, -0.1679, -0.1597, -0.1412,\n", + " -0.2329, -0.2489, -0.1352, -0.1118, -0.0192, 0.0102, 0.0225, 0.2788,\n", + " 0.3095, 0.2994, 0.2133]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005992912338115275\n", + "Grad encoder.fc1.bias: 0.0006154918228276074\n", + "Grad encoder.encoder.0.weight: 8.63340828800574e-05\n", + "Grad encoder.encoder.0.bias: 0.0005164215108379722\n", + "Grad encoder.encoder.2.weight: 9.687725832918659e-05\n", + "Grad encoder.encoder.2.bias: 0.0008467984152957797\n", + "Grad encoder.encoder.4.weight: 0.00027207896346226335\n", + "Grad encoder.encoder.4.bias: 0.0019702319987118244\n", + "Grad decoder.fc1.0.weight: 9.211376163875684e-05\n", + "Grad decoder.fc1.0.bias: 0.0005349325365386903\n", + "Grad decoder.fc1.2.weight: 7.469012052752078e-05\n", + "Grad decoder.fc1.2.bias: 0.0006883434252813458\n", + "Grad decoder.fc1.4.weight: 5.8881774748442695e-05\n", + "Grad decoder.fc1.4.bias: 0.0005375094478949904\n", + "Grad decoder.fc2.weight: 9.277705248678103e-05\n", + "Grad decoder.fc2.bias: 0.0024947114288806915\n", + "Grad _memory_unit.weight_ih_l0: 3.309954627184197e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.125426443759352e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.687294131144881e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.1381190233805683e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00019380621961317956\n", + "Grad _memory_unit.bias_hh_l1: 0.00010151971218874678\n", + "Data X Sample: tensor([[-0.0042, 0.0015, 0.0045, 0.0022, -0.0017, -0.0118, 0.0077, 0.0014,\n", + " 0.0000, 0.0205, 0.0222, -0.0019, -0.0089, 0.0055, 0.0151, -0.0068,\n", + " 0.0000, -0.0058, -0.0248, 0.0019, -0.0049, 0.0046, 0.0265, 0.0305,\n", + " 0.0206, 0.0000, 0.0426, 0.0204, -0.0173, 0.0295, -0.0035, 0.0166,\n", + " -0.0044, -0.0023, 0.0172, 0.0389, -0.0020, 0.0133, 0.0063, 0.0000,\n", + " 0.0239, 0.0060, 0.0020, -0.0172, 0.0159, -0.0343, -0.0068, -0.0156]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.7617, 1.3572, 1.7797, 1.8295, 0.8649, 0.6614, -0.3905, -0.6491,\n", + " -0.8507, -0.6763, -0.6986, 0.9683, 1.3858, 0.7878, 0.8606, 0.6568,\n", + " 0.8831, 0.8900, -0.3222, 1.4243, 0.6023, 0.1016, 0.9923, -0.5911,\n", + " 0.3458, 0.3061, 1.3161, 1.9601, 0.7024, 0.5011, 2.0956, 1.0982,\n", + " 0.8352, 0.6505, 0.4582, 1.3489, 0.0849, -0.5278, 0.0382, -0.6174,\n", + " -0.7976, -0.9058, -0.2690]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.8509, 0.7751, 0.2311, 0.3105, -0.5871, -0.7814, -1.3032, -1.2426,\n", + " -0.8302, -0.8957, -0.8824, 0.4619, 0.5082, 0.5897, 0.4128, 0.6087,\n", + " 0.5862, 0.0224, 0.2150, 0.2885, 0.0190, -0.0227, 0.0085, -0.1513,\n", + " 0.1680, -0.0288, 0.2048, 0.5325, 1.0533, 1.0983, 0.8350, 0.6501,\n", + " 0.8783, 0.7967, 0.3818, 0.4851, -0.1031, -0.0989, 0.0060, -0.8296,\n", + " -0.8090, -0.7303, -0.4798]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002684857463464141\n", + "Grad encoder.fc1.bias: 0.00027135253185406327\n", + "Grad encoder.encoder.0.weight: 5.7320889027323574e-05\n", + "Grad encoder.encoder.0.bias: 0.0002625311026349664\n", + "Grad encoder.encoder.2.weight: 4.0807055484037846e-05\n", + "Grad encoder.encoder.2.bias: 0.00035705225309357047\n", + "Grad encoder.encoder.4.weight: 0.00011218667350476608\n", + "Grad encoder.encoder.4.bias: 0.0009438896086066961\n", + "Grad decoder.fc1.0.weight: 4.504791650106199e-05\n", + "Grad decoder.fc1.0.bias: 0.0004146359860897064\n", + "Grad decoder.fc1.2.weight: 4.8159301513805985e-05\n", + "Grad decoder.fc1.2.bias: 0.0003323564014863223\n", + "Grad decoder.fc1.4.weight: 4.3664964323397726e-05\n", + "Grad decoder.fc1.4.bias: 0.0004211303312331438\n", + "Grad decoder.fc2.weight: 9.390428749611601e-05\n", + "Grad decoder.fc2.bias: 0.0018064414616674185\n", + "Grad _memory_unit.weight_ih_l0: 5.11765620103688e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.0562616302631795e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.6080903151305392e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.2873022064450197e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.597739022457972e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.831673166132532e-05\n", + "Data X Sample: tensor([[1.4714, 1.8337, 1.9429, 2.0641, 2.1821, 2.2305, 2.2632, 2.3197, 2.3897,\n", + " 2.4154, 2.4522, 2.4168, 2.3369, 2.2930, 2.2798, 2.1867, 2.2359, 2.3793,\n", + " 2.3479, 2.3265, 2.3334, 2.5046, 2.4749, 2.4412, 2.4624, 2.4787, 2.4295,\n", + " 2.4798, 2.0191, 1.9946, 1.8267, 1.7215, 1.5312, 1.0024, 1.3996, 1.3864,\n", + " 1.3765, 1.3410, 1.3247, 1.3420, 1.3077, 0.7866, 0.7235, 1.3577, 1.8116,\n", + " 2.1500, 1.5570, 1.9783]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5963, -0.2172, -1.1172, 0.3956, -0.2968, 0.0835, 1.2313, 0.9474,\n", + " 0.5332, 0.2995, 1.0947, -2.5184, 1.2067, -0.9303, -0.8423, -1.1513,\n", + " 0.2514, 0.6005, 0.5862, 1.1180, 0.6838, -0.2928, 0.7347, 0.6495,\n", + " 2.0468, 0.7101, -0.0539, 1.3484, -1.3098, -0.9091, -1.4531, 0.2377,\n", + " -0.8151, 0.2543, -0.7744, -1.5701, 1.0407, -0.6596, -0.0156, 0.9582,\n", + " 0.7313, 0.6426, 0.2265]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.1946, 0.1844, 0.1160, 0.1049, 0.0443, -0.0329, -0.2194, -0.1757,\n", + " -0.0910, -0.0967, -0.1482, 0.0873, 0.0898, 0.0678, 0.0706, 0.0977,\n", + " 0.1036, -0.0203, 0.0890, 0.0859, 0.0335, -0.0284, 0.0089, -0.0872,\n", + " -0.0148, 0.0248, -0.0546, 0.0206, 0.0497, 0.1041, 0.1124, 0.1281,\n", + " 0.1460, 0.1567, 0.0874, 0.1649, -0.0756, -0.0088, -0.0627, -0.1509,\n", + " -0.0885, -0.1568, -0.1272]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00043699899106286466\n", + "Grad encoder.fc1.bias: 0.00029629655182361603\n", + "Grad encoder.encoder.0.weight: 6.110880349297076e-05\n", + "Grad encoder.encoder.0.bias: 0.00036851505865342915\n", + "Grad encoder.encoder.2.weight: 5.611442611552775e-05\n", + "Grad encoder.encoder.2.bias: 0.000708286592271179\n", + "Grad encoder.encoder.4.weight: 0.0001731763913994655\n", + "Grad encoder.encoder.4.bias: 0.0021633694414049387\n", + "Grad decoder.fc1.0.weight: 8.182859164662659e-05\n", + "Grad decoder.fc1.0.bias: 0.0005964244483038783\n", + "Grad decoder.fc1.2.weight: 6.923823821125552e-05\n", + "Grad decoder.fc1.2.bias: 0.0013687656028196216\n", + "Grad decoder.fc1.4.weight: 5.4302614444168285e-05\n", + "Grad decoder.fc1.4.bias: 0.0005606782506220043\n", + "Grad decoder.fc2.weight: 0.00014319461479317397\n", + "Grad decoder.fc2.bias: 0.0023977600503712893\n", + "Grad _memory_unit.weight_ih_l0: 3.141949855489656e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.596117160981521e-05\n", + "Grad _memory_unit.bias_hh_l0: 6.252714956644922e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.6726451576687396e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00019977052579633892\n", + "Grad _memory_unit.bias_hh_l1: 0.00010942748485831544\n", + "Data X Sample: tensor([[1.5372, 1.7099, 1.9369, 1.9941, 2.0250, 2.2232, 2.1446, 3.2254, 4.1644,\n", + " 4.3221, 4.5269, 4.3546, 4.0901, 4.1088, 4.0603, 3.7703, 3.6511, 3.6734,\n", + " 3.7129, 3.6171, 3.5307, 3.3573, 2.9857, 2.8020, 2.7664, 2.8861, 2.8318,\n", + " 2.8550, 3.0598, 3.0786, 3.2930, 3.2828, 3.8281, 2.8057, 4.5984, 4.9690,\n", + " 5.0322, 5.5337, 6.3004, 5.8587, 1.2361, 0.6412, 0.7033, 1.2113, 1.8949,\n", + " 1.9042, 1.3462, 1.8375]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3007, -0.4659, 0.0255, 0.2938, 0.3116, 0.5191, 0.4778, 0.5102,\n", + " 1.1522, 0.1107, 0.1239, -0.4521, -0.1442, -0.5343, -0.5300, -0.8409,\n", + " -0.6726, -0.7669, -0.0268, 0.0959, 0.3595, -0.0536, 0.6361, -0.3830,\n", + " -2.6112, 1.2745, -0.1604, -0.8289, -0.8244, -0.4337, -0.3004, 2.4161,\n", + " -0.2660, 0.1223, 0.8135, -0.7095, -0.8471, 0.8591, -0.5596, 0.2865,\n", + " 0.0219, 0.1295, -0.0487]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2747, -0.2629, -0.0543, -0.1856, 0.0146, 0.1376, 0.2016, 0.3220,\n", + " 0.1943, 0.2302, 0.2347, -0.1584, -0.1690, -0.3256, -0.1540, -0.3069,\n", + " -0.1959, -0.0920, -0.1002, -0.0771, -0.0723, -0.0826, -0.0015, -0.0700,\n", + " -0.0323, 0.0332, -0.0313, -0.0828, -0.1803, -0.1793, -0.1837, -0.1707,\n", + " -0.2583, -0.2939, -0.1494, -0.1316, -0.0169, 0.0017, 0.0313, 0.3230,\n", + " 0.3408, 0.3481, 0.2453]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003484318149276078\n", + "Grad encoder.fc1.bias: 0.0005908168386667967\n", + "Grad encoder.encoder.0.weight: 6.644616951234639e-05\n", + "Grad encoder.encoder.0.bias: 0.0006547697703354061\n", + "Grad encoder.encoder.2.weight: 6.738488445989788e-05\n", + "Grad encoder.encoder.2.bias: 0.0006822419818490744\n", + "Grad encoder.encoder.4.weight: 0.00019918123143725097\n", + "Grad encoder.encoder.4.bias: 0.001008512917906046\n", + "Grad decoder.fc1.0.weight: 7.271115464391187e-05\n", + "Grad decoder.fc1.0.bias: 0.0004855500883422792\n", + "Grad decoder.fc1.2.weight: 6.616929749725387e-05\n", + "Grad decoder.fc1.2.bias: 0.000659884768538177\n", + "Grad decoder.fc1.4.weight: 5.4490097681991756e-05\n", + "Grad decoder.fc1.4.bias: 0.00047554896445944905\n", + "Grad decoder.fc2.weight: 0.00010000933980336413\n", + "Grad decoder.fc2.bias: 0.002418483141809702\n", + "Grad _memory_unit.weight_ih_l0: 2.338484591746237e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.003208570997231e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.31616829498671e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.56012013880536e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00014908015145920217\n", + "Grad _memory_unit.bias_hh_l1: 7.751379598630592e-05\n", + "Data X Sample: tensor([[2.8420, 3.3704, 3.6093, 4.0757, 4.0791, 4.1428, 4.2060, 4.2120, 4.2962,\n", + " 4.4248, 4.3302, 4.2046, 4.0879, 3.8607, 3.5761, 3.4654, 3.4812, 3.6676,\n", + " 3.5539, 3.5874, 3.4056, 3.2930, 2.8966, 2.6225, 2.6970, 2.7425, 2.8131,\n", + " 2.9162, 2.9210, 2.9902, 3.0201, 3.1087, 3.3419, 2.4510, 4.1939, 4.5945,\n", + " 5.0263, 5.5417, 6.2053, 5.9608, 2.0713, 1.2327, 1.2773, 2.1384, 3.4171,\n", + " 3.7283, 2.6108, 3.6516]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1381, -0.8648, 0.3033, -0.0853, -0.7552, -0.4504, -0.0337, 0.8699,\n", + " 0.6627, 0.6272, 0.1642, 0.9748, -1.5019, 0.1653, 0.3117, 0.8125,\n", + " -0.4795, -0.7817, -1.0204, -0.3271, -0.6337, -0.1266, 0.6700, 1.4689,\n", + " -0.9601, -1.0020, -1.2879, -1.2745, 0.6508, 0.4212, 0.8823, -0.4786,\n", + " 0.8683, -0.1502, 0.4860, -0.5744, -0.9787, -0.0948, -0.2536, -0.0291,\n", + " -0.2424, 0.2429, -0.4745]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2240, -0.2289, -0.0430, -0.1706, 0.0024, 0.1130, 0.1550, 0.2657,\n", + " 0.1684, 0.2011, 0.1798, -0.1314, -0.1389, -0.2693, -0.1275, -0.2724,\n", + " -0.1850, -0.0834, -0.0765, -0.0692, -0.0566, -0.0783, -0.0079, -0.0756,\n", + " -0.0362, 0.0278, -0.0166, -0.0510, -0.1489, -0.1610, -0.1468, -0.1366,\n", + " -0.2245, -0.2420, -0.1339, -0.1047, -0.0189, 0.0106, 0.0133, 0.2645,\n", + " 0.3014, 0.2870, 0.2079]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000653460796456784\n", + "Grad encoder.fc1.bias: 0.0007288086926564574\n", + "Grad encoder.encoder.0.weight: 0.0001381739421049133\n", + "Grad encoder.encoder.0.bias: 0.0008537821122445166\n", + "Grad encoder.encoder.2.weight: 8.031750621739775e-05\n", + "Grad encoder.encoder.2.bias: 0.0007233883370645344\n", + "Grad encoder.encoder.4.weight: 0.00023206579498946667\n", + "Grad encoder.encoder.4.bias: 0.0019008673261851072\n", + "Grad decoder.fc1.0.weight: 7.322175952140242e-05\n", + "Grad decoder.fc1.0.bias: 0.0004916879697702825\n", + "Grad decoder.fc1.2.weight: 6.150918488856405e-05\n", + "Grad decoder.fc1.2.bias: 0.0005376373883336782\n", + "Grad decoder.fc1.4.weight: 5.8916473790304735e-05\n", + "Grad decoder.fc1.4.bias: 0.0005293283611536026\n", + "Grad decoder.fc2.weight: 0.00010817374277394265\n", + "Grad decoder.fc2.bias: 0.002328571630641818\n", + "Grad _memory_unit.weight_ih_l0: 8.903576599550433e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.362026473041624e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.7848487914307043e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.417822310642805e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010793683759402484\n", + "Grad _memory_unit.bias_hh_l1: 5.5787120800232515e-05\n", + "Data X Sample: tensor([[1.5605, 1.8337, 1.8873, 2.0488, 1.9738, 1.7679, 1.5360, 2.9642, 4.3010,\n", + " 4.4074, 4.4000, 4.4500, 4.2765, 4.0297, 3.8636, 3.6719, 3.6731, 3.5844,\n", + " 3.4775, 3.4423, 3.4964, 3.2761, 2.9134, 2.7237, 2.7608, 2.7947, 2.7758,\n", + " 2.8265, 2.8343, 2.9214, 2.9536, 2.9512, 3.4915, 2.6043, 4.4488, 4.8085,\n", + " 5.0322, 5.3800, 6.2180, 6.0261, 1.2457, 0.7707, 0.6993, 1.2515, 1.9107,\n", + " 1.8699, 1.3122, 1.8062]], device='cuda:0')\n", + "Data Y Sample: tensor([[-4.4031e-01, -7.8269e-01, 3.1193e-02, -7.8337e-01, -9.6269e-01,\n", + " -1.8426e-01, -9.7664e-03, 2.8748e-01, 5.5034e-01, -3.2868e-02,\n", + " 2.0691e-01, 2.8818e-01, -8.8321e-02, -5.1063e-01, -8.1663e-01,\n", + " -2.7883e-01, 4.8516e-01, 2.4736e+00, 1.5609e-01, -8.7667e-02,\n", + " -5.2679e-01, -3.7673e-01, -7.0859e-01, -2.8334e-02, 5.7877e-01,\n", + " 2.4237e-01, 2.9030e-01, -2.9977e-01, -7.0478e-01, 1.2796e-03,\n", + " -3.8483e-01, -2.7064e-01, -8.0289e-03, -1.0252e-01, -1.2657e-01,\n", + " -8.2522e-01, 0.0000e+00, -3.4952e-01, 1.0291e+00, 4.6057e-01,\n", + " 7.2657e-01, 1.6469e-01, 4.6959e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2686, -0.2604, -0.0513, -0.1812, 0.0195, 0.1403, 0.1988, 0.3165,\n", + " 0.1930, 0.2242, 0.2260, -0.1534, -0.1653, -0.3194, -0.1473, -0.3017,\n", + " -0.1953, -0.0888, -0.1010, -0.0747, -0.0695, -0.0821, 0.0004, -0.0678,\n", + " -0.0297, 0.0338, -0.0281, -0.0807, -0.1781, -0.1772, -0.1772, -0.1669,\n", + " -0.2545, -0.2928, -0.1498, -0.1298, -0.0190, 0.0041, 0.0284, 0.3129,\n", + " 0.3350, 0.3427, 0.2444]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 6.946934445295483e-05\n", + "Grad encoder.fc1.bias: 0.0003867660416290164\n", + "Grad encoder.encoder.0.weight: 2.0480983948800713e-05\n", + "Grad encoder.encoder.0.bias: 0.00020174097153358161\n", + "Grad encoder.encoder.2.weight: 1.8400178305455483e-05\n", + "Grad encoder.encoder.2.bias: 0.00015269723371602595\n", + "Grad encoder.encoder.4.weight: 4.996555799152702e-05\n", + "Grad encoder.encoder.4.bias: 0.00043541518971323967\n", + "Grad decoder.fc1.0.weight: 2.2295698727248237e-05\n", + "Grad decoder.fc1.0.bias: 0.000180579096195288\n", + "Grad decoder.fc1.2.weight: 2.8785525501007214e-05\n", + "Grad decoder.fc1.2.bias: 0.00021464588644448668\n", + "Grad decoder.fc1.4.weight: 3.968268720200285e-05\n", + "Grad decoder.fc1.4.bias: 0.0004011112032458186\n", + "Grad decoder.fc2.weight: 0.0001128349031205289\n", + "Grad decoder.fc2.bias: 0.0018099343869835138\n", + "Grad _memory_unit.weight_ih_l0: 2.4662065243319375e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.3126085832482204e-05\n", + "Grad _memory_unit.bias_hh_l0: 6.863641829113476e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.3970202417112887e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.969370300183073e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.0270254026399925e-05\n", + "Data X Sample: tensor([[2.4611, 2.8052, 3.0007, 3.3148, 3.2407, 3.2898, 3.4141, 3.5519, 3.5883,\n", + " 3.7471, 3.7877, 3.7567, 3.6440, 3.5880, 3.5483, 3.4435, 3.3932, 3.5186,\n", + " 3.4052, 3.4312, 3.2878, 3.1384, 3.0122, 2.9031, 2.6763, 2.6119, 2.4988,\n", + " 2.4268, 2.4631, 2.5088, 2.5197, 2.4759, 2.4531, 1.7438, 3.0223, 3.5000,\n", + " 3.5888, 3.8561, 4.1136, 4.1621, 1.8756, 1.1172, 1.0287, 1.8944, 2.7194,\n", + " 3.3394, 1.9581, 2.9869]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1967, -0.6324, -1.1680, 0.1539, -0.6622, -1.1096, 0.4497, 0.4902,\n", + " 1.2011, 0.3056, 0.7605, -0.9260, -0.8253, 0.0859, -0.2926, -0.1924,\n", + " -0.6588, -0.3739, -0.4258, -0.5144, 0.1351, -0.1826, -0.1252, -0.1460,\n", + " 0.0178, -0.1755, 1.0456, 0.7953, -0.7680, -1.1620, -0.7797, 0.3068,\n", + " -1.2009, -0.7785, -0.6238, -0.5769, -0.5085, -0.0751, 2.2782, 0.6829,\n", + " 0.9626, 0.6368, 0.7857]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1912, -0.2080, -0.0364, -0.1610, -0.0047, 0.0977, 0.1243, 0.2296,\n", + " 0.1506, 0.1801, 0.1431, -0.1119, -0.1189, -0.2325, -0.1092, -0.2486,\n", + " -0.1776, -0.0775, -0.0628, -0.0648, -0.0469, -0.0769, -0.0113, -0.0775,\n", + " -0.0390, 0.0236, -0.0050, -0.0305, -0.1281, -0.1485, -0.1217, -0.1138,\n", + " -0.2026, -0.2108, -0.1241, -0.0893, -0.0214, 0.0174, 0.0028, 0.2249,\n", + " 0.2747, 0.2482, 0.1836]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.001255558803677559\n", + "Grad encoder.fc1.bias: 0.0008478593081235886\n", + "Grad encoder.encoder.0.weight: 0.00020405140821821988\n", + "Grad encoder.encoder.0.bias: 0.0008384742541238666\n", + "Grad encoder.encoder.2.weight: 0.00020496848446782678\n", + "Grad encoder.encoder.2.bias: 0.0014301893534138799\n", + "Grad encoder.encoder.4.weight: 0.0005933654028922319\n", + "Grad encoder.encoder.4.bias: 0.004192078486084938\n", + "Grad decoder.fc1.0.weight: 0.0001711874210741371\n", + "Grad decoder.fc1.0.bias: 0.0008954305667430162\n", + "Grad decoder.fc1.2.weight: 0.00012396099918987602\n", + "Grad decoder.fc1.2.bias: 0.001743830624036491\n", + "Grad decoder.fc1.4.weight: 5.970777783659287e-05\n", + "Grad decoder.fc1.4.bias: 0.0006349034374579787\n", + "Grad decoder.fc2.weight: 0.00013331610534805804\n", + "Grad decoder.fc2.bias: 0.0020692385733127594\n", + "Grad _memory_unit.weight_ih_l0: 7.958434434840456e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00014666543575003743\n", + "Grad _memory_unit.bias_hh_l0: 0.00011011398601112887\n", + "Grad _memory_unit.weight_ih_l1: 2.5945832021534443e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00046713018673472106\n", + "Grad _memory_unit.bias_hh_l1: 0.00024317085626535118\n", + "Data X Sample: tensor([[-0.0085, 0.0131, 0.0030, 0.0066, -0.0068, 0.0029, -0.0046, 0.0071,\n", + " 0.0171, 0.0032, 0.0095, 0.0078, 0.0067, -0.0055, 0.0101, -0.0096,\n", + " -0.0236, -0.0309, -0.0372, -0.0316, -0.0196, -0.0184, -0.0096, -0.0134,\n", + " -0.0094, -0.0235, -0.0027, 0.0000, -0.0139, 0.0000, 0.0105, -0.0028,\n", + " -0.0198, -0.0092, 0.0196, 0.0365, -0.0138, -0.0106, 0.0000, 0.0000,\n", + " 0.0286, 0.0219, 0.0162, 0.0086, 0.0277, 0.0057, 0.0000, 0.0078]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 7.6800e-01, 9.8927e-01, 1.4865e+00, 5.9841e-01, 1.0819e-01,\n", + " -8.6167e-01, -1.0940e+00, -9.1186e-01, -9.8399e-01, -8.5860e-01,\n", + " -9.5070e-01, 2.6199e-01, 2.2007e+00, 1.0879e+00, 5.4956e-01,\n", + " 1.2733e-03, 3.3707e-01, 2.2514e-01, -1.0828e+00, 1.4935e-01,\n", + " 6.3048e-02, 4.2440e-01, -6.3195e-01, 2.6999e-01, 1.2865e-01,\n", + " 1.6678e-01, 6.5997e-01, -8.0198e-01, 7.2331e-01, 9.9273e-01,\n", + " 7.7604e-01, 1.1757e+00, 2.8172e-01, 4.3684e-01, -8.9944e-02,\n", + " -6.7843e-01, 6.2260e-01, 0.0000e+00, 5.6860e-01, -6.5613e-01,\n", + " -8.2081e-01, -6.5712e-01, -4.8211e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.9190, 0.8379, 0.1929, 0.3066, -0.6533, -0.8331, -1.3920, -1.2863,\n", + " -0.9127, -1.0161, -1.0131, 0.4868, 0.5179, 0.6234, 0.4339, 0.6198,\n", + " 0.6256, 0.0251, 0.1686, 0.2738, 0.0463, -0.0486, 0.0261, -0.1380,\n", + " 0.1837, -0.0209, 0.2821, 0.5832, 1.1355, 1.2049, 0.9253, 0.7125,\n", + " 0.9321, 0.8540, 0.4340, 0.5278, -0.1062, -0.0916, 0.0122, -0.9329,\n", + " -0.8865, -0.7851, -0.5339]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002865218557417393\n", + "Grad encoder.fc1.bias: 0.0005364223616197705\n", + "Grad encoder.encoder.0.weight: 5.886067447136156e-05\n", + "Grad encoder.encoder.0.bias: 0.00047691972577013075\n", + "Grad encoder.encoder.2.weight: 4.7860274207778275e-05\n", + "Grad encoder.encoder.2.bias: 0.0005960600101388991\n", + "Grad encoder.encoder.4.weight: 0.00015709585568401963\n", + "Grad encoder.encoder.4.bias: 0.0015581188490614295\n", + "Grad decoder.fc1.0.weight: 5.966987009742297e-05\n", + "Grad decoder.fc1.0.bias: 0.0004914009477943182\n", + "Grad decoder.fc1.2.weight: 7.078342605382204e-05\n", + "Grad decoder.fc1.2.bias: 0.0005683858180418611\n", + "Grad decoder.fc1.4.weight: 7.171295874286443e-05\n", + "Grad decoder.fc1.4.bias: 0.000398289121221751\n", + "Grad decoder.fc2.weight: 0.0001601713156560436\n", + "Grad decoder.fc2.bias: 0.0017661518650129437\n", + "Grad _memory_unit.weight_ih_l0: 1.4870410268486012e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.8135883844224736e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.0221595807233825e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.844112365593901e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011565831664483994\n", + "Grad _memory_unit.bias_hh_l1: 6.237573688849807e-05\n", + "Data X Sample: tensor([[1.5743, 1.7391, 1.9399, 1.9766, 2.1924, 2.2674, 2.3403, 2.3921, 2.4386,\n", + " 2.5828, 2.6330, 2.6895, 2.4789, 2.3829, 2.3958, 2.3508, 2.2894, 2.4373,\n", + " 2.4057, 2.5236, 2.4291, 2.4648, 2.4459, 2.5023, 2.4117, 2.4552, 2.4162,\n", + " 2.4553, 2.2168, 2.2926, 2.3867, 2.3295, 2.3012, 1.4692, 1.9217, 1.7926,\n", + " 1.6027, 1.5000, 1.6036, 1.5519, 1.2075, 0.6691, 0.7235, 1.3060, 1.7878,\n", + " 2.0700, 1.3326, 1.8453]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2342, 0.6247, 0.6064, 0.2437, 0.2064, -0.6940, -0.6128, -0.6270,\n", + " -0.3974, -0.6405, -0.7711, 0.5891, -0.3849, 2.0416, 1.2703, 0.6982,\n", + " -0.3627, 0.5583, 0.2838, 0.4959, 0.8495, -0.4631, 1.9152, -0.5315,\n", + " -5.7103, -1.7356, -0.5003, 0.6713, 0.3915, 0.8915, 0.3152, 0.4118,\n", + " 0.7403, -0.4146, -0.9490, 1.5691, 0.7686, -0.0869, 0.9794, -0.6367,\n", + " -0.3826, -0.6015, -0.0899]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2157, 0.2252, 0.1209, 0.1240, 0.0769, -0.0368, -0.2363, -0.2077,\n", + " -0.1006, -0.1342, -0.1677, 0.1184, 0.0943, 0.0818, 0.0953, 0.1202,\n", + " 0.1286, -0.0007, 0.0892, 0.0862, 0.0523, -0.0319, 0.0153, -0.0777,\n", + " 0.0082, 0.0360, -0.0573, 0.0195, 0.0536, 0.1336, 0.1525, 0.1456,\n", + " 0.1705, 0.1855, 0.1029, 0.1816, -0.0636, 0.0042, -0.0622, -0.1817,\n", + " -0.1276, -0.1945, -0.1510]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000609174428973347\n", + "Grad encoder.fc1.bias: 0.0004873154975939542\n", + "Grad encoder.encoder.0.weight: 0.00014879749505780637\n", + "Grad encoder.encoder.0.bias: 0.0005202349275350571\n", + "Grad encoder.encoder.2.weight: 9.496022539678961e-05\n", + "Grad encoder.encoder.2.bias: 0.0005474694189615548\n", + "Grad encoder.encoder.4.weight: 0.0002494078071322292\n", + "Grad encoder.encoder.4.bias: 0.0011029685847461224\n", + "Grad decoder.fc1.0.weight: 7.57633606554009e-05\n", + "Grad decoder.fc1.0.bias: 0.0005268767126835883\n", + "Grad decoder.fc1.2.weight: 5.487129237735644e-05\n", + "Grad decoder.fc1.2.bias: 0.000381354708224535\n", + "Grad decoder.fc1.4.weight: 4.535794141702354e-05\n", + "Grad decoder.fc1.4.bias: 0.00033907080069184303\n", + "Grad decoder.fc2.weight: 9.191453136736527e-05\n", + "Grad decoder.fc2.bias: 0.0019384786719456315\n", + "Grad _memory_unit.weight_ih_l0: 8.833010724629276e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.3361280657118186e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.8919361536973156e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.831522462860448e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.389570186613128e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.7871708375168964e-05\n", + "Data X Sample: tensor([[1.4799, 1.8964, 2.0060, 2.1712, 2.1855, 2.2497, 2.3048, 2.4048, 2.3873,\n", + " 2.4960, 2.6076, 2.4461, 2.4390, 2.3829, 2.3353, 2.2770, 2.3193, 2.4586,\n", + " 2.4801, 2.4418, 2.5027, 2.5520, 2.5279, 2.4870, 2.4342, 2.4265, 2.3416,\n", + " 2.3982, 1.9497, 1.9553, 1.8582, 1.7547, 1.4960, 0.9818, 1.3334, 1.3304,\n", + " 1.3116, 1.3755, 1.4071, 1.3732, 1.3077, 0.7747, 0.7518, 1.3204, 1.8037,\n", + " 2.1729, 1.5230, 2.0174]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.9788, -0.3124, -0.3268, -0.1437, -0.6280, 0.5259, 0.7055, 0.7202,\n", + " 1.4293, 0.5185, 0.4747, -0.2834, 0.1497, -0.0986, -1.0928, -1.0381,\n", + " -0.4892, 0.7030, 1.0260, -0.6172, -0.9533, -0.3484, -1.7926, -0.8377,\n", + " -0.9587, 0.3798, 0.7368, 0.4397, -0.6288, -0.3782, -0.6267, -0.0179,\n", + " -0.1298, -0.7700, -0.0443, -1.2259, -0.0457, 0.7357, -0.0156, 0.7747,\n", + " 0.7501, 0.6381, 0.2631]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.0232, -0.0619, 0.0097, -0.0846, -0.0091, 0.0354, -0.0171, 0.0849,\n", + " 0.0426, 0.0612, -0.0079, -0.0467, -0.0408, -0.0826, -0.0313, -0.1192,\n", + " -0.0818, -0.0557, -0.0102, -0.0081, -0.0166, -0.0582, -0.0047, -0.0680,\n", + " -0.0447, 0.0257, 0.0119, -0.0027, -0.0480, -0.0579, -0.0323, -0.0026,\n", + " -0.0801, -0.0768, -0.0487, 0.0122, -0.0509, 0.0079, -0.0358, 0.0505,\n", + " 0.1362, 0.0889, 0.0569]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006263860850594938\n", + "Grad encoder.fc1.bias: 0.0012368132593110204\n", + "Grad encoder.encoder.0.weight: 0.00010471300629433244\n", + "Grad encoder.encoder.0.bias: 0.0007578704971820116\n", + "Grad encoder.encoder.2.weight: 0.00010389559611212462\n", + "Grad encoder.encoder.2.bias: 0.000846217037178576\n", + "Grad encoder.encoder.4.weight: 0.00026491060270927846\n", + "Grad encoder.encoder.4.bias: 0.0015371569897979498\n", + "Grad decoder.fc1.0.weight: 8.865349082043394e-05\n", + "Grad decoder.fc1.0.bias: 0.0004825954674743116\n", + "Grad decoder.fc1.2.weight: 7.132935570552945e-05\n", + "Grad decoder.fc1.2.bias: 0.0006046666530892253\n", + "Grad decoder.fc1.4.weight: 6.4839594415389e-05\n", + "Grad decoder.fc1.4.bias: 0.0005674967542290688\n", + "Grad decoder.fc2.weight: 0.00010263954754918814\n", + "Grad decoder.fc2.bias: 0.0019918077159672976\n", + "Grad _memory_unit.weight_ih_l0: 2.8098396796849556e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.88324549223762e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.692635800689459e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.875272214936558e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00014342667418532073\n", + "Grad _memory_unit.bias_hh_l1: 7.476442988263443e-05\n", + "Data X Sample: tensor([[1.2338, 1.3254, 1.4560, 1.6049, 1.7109, 1.8165, 1.9489, 1.9406, 3.4101,\n", + " 3.9588, 3.8480, 3.8541, 3.6507, 3.3944, 3.4424, 3.3286, 3.2910, 3.2807,\n", + " 3.2152, 3.2136, 3.2584, 3.1782, 2.8146, 2.8058, 2.7326, 2.8339, 2.8611,\n", + " 2.9039, 2.8031, 2.9509, 3.0761, 3.0839, 3.1813, 2.3251, 3.8581, 4.3488,\n", + " 4.6094, 4.8791, 5.3243, 5.3310, 0.8782, 0.5078, 0.5052, 0.9357, 1.4707,\n", + " 1.4581, 1.0130, 1.5091]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.0039, -0.5402, 0.4849, 1.4644, 0.3968, -0.6171, 1.1698, 0.4220,\n", + " 0.9516, 0.0823, 0.0198, 0.1484, -0.2322, 0.2513, 0.0932, 0.2455,\n", + " 0.6119, 0.2598, -0.0501, 0.0117, -0.0082, -0.2493, 0.0375, -0.0100,\n", + " -0.0759, 0.1445, -0.2449, -0.9644, 0.3016, 0.2005, 1.1624, -0.0063,\n", + " -0.2618, -0.2385, 0.3707, 1.1699, 0.9799, 0.4269, -0.7513, -0.7047,\n", + " -0.1288, -0.8849, -0.3695]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2556, -0.2542, -0.0528, -0.1719, 0.0307, 0.1430, 0.1877, 0.3027,\n", + " 0.1850, 0.2108, 0.2105, -0.1414, -0.1579, -0.3046, -0.1331, -0.2881,\n", + " -0.1933, -0.0787, -0.0975, -0.0751, -0.0681, -0.0830, -0.0011, -0.0615,\n", + " -0.0360, 0.0371, -0.0197, -0.0780, -0.1772, -0.1789, -0.1677, -0.1572,\n", + " -0.2529, -0.2942, -0.1520, -0.1258, -0.0203, 0.0115, 0.0316, 0.2888,\n", + " 0.3209, 0.3280, 0.2372]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 6.87780775479041e-05\n", + "Grad encoder.fc1.bias: 0.00034578319173306227\n", + "Grad encoder.encoder.0.weight: 2.1634226868627593e-05\n", + "Grad encoder.encoder.0.bias: 0.00039221925544552505\n", + "Grad encoder.encoder.2.weight: 2.000079803110566e-05\n", + "Grad encoder.encoder.2.bias: 0.00031605426920577884\n", + "Grad encoder.encoder.4.weight: 9.32384718907997e-05\n", + "Grad encoder.encoder.4.bias: 0.0008501283591613173\n", + "Grad decoder.fc1.0.weight: 4.102588354726322e-05\n", + "Grad decoder.fc1.0.bias: 0.00024403378483839333\n", + "Grad decoder.fc1.2.weight: 4.599116800818592e-05\n", + "Grad decoder.fc1.2.bias: 0.00025547112454660237\n", + "Grad decoder.fc1.4.weight: 5.687084194505587e-05\n", + "Grad decoder.fc1.4.bias: 0.0003111373516730964\n", + "Grad decoder.fc2.weight: 9.048271749634296e-05\n", + "Grad decoder.fc2.bias: 0.0018559072632342577\n", + "Grad _memory_unit.weight_ih_l0: 9.14208430913277e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.319988172734156e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.755762605171185e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.820247345880489e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.535208765650168e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.8737797038047574e-05\n", + "Data X Sample: tensor([[1.2900, 1.5337, 1.6859, 1.8192, 1.9055, 2.0744, 2.0506, 2.1152, 3.2294,\n", + " 4.2068, 4.2953, 4.2981, 4.1589, 4.1633, 3.7980, 3.7252, 3.6935, 3.6173,\n", + " 3.5745, 3.5837, 3.5504, 3.2210, 2.8701, 2.9127, 2.8021, 3.0115, 2.9570,\n", + " 2.9366, 3.0667, 3.1572, 3.2615, 3.3740, 3.9777, 2.8835, 4.6278, 4.9447,\n", + " 5.2171, 5.6848, 6.1039, 5.9438, 1.1025, 0.6432, 0.5881, 1.0764, 1.6015,\n", + " 1.7269, 1.2578, 1.7124]], device='cuda:0')\n", + "Data Y Sample: tensor([[-4.5266e-01, 6.1892e-01, 6.7385e-01, -1.1305e-01, -8.8943e-01,\n", + " 4.9539e-01, -1.2551e+00, 6.2890e-01, -7.5578e-01, -5.2121e-01,\n", + " -6.5845e-01, 1.2619e+00, 8.3946e-01, -1.4746e-01, -1.8320e+00,\n", + " -1.2787e+00, -8.9869e-01, 1.4018e+01, -5.8824e-01, -3.3368e-01,\n", + " -1.9669e-01, 7.3890e-02, -5.4315e-01, -9.9122e-01, -1.1289e-01,\n", + " -9.9452e-01, 9.1276e-01, 1.5424e+00, 1.2303e-02, -2.3191e-01,\n", + " 9.3114e-01, 3.8863e-01, 7.1719e-01, -6.3180e-02, 2.3371e-01,\n", + " -8.0395e-01, 6.0965e-01, 9.3982e-02, 2.8698e-01, -1.9982e+00,\n", + " 4.8217e-01, -6.5411e-02, 6.8343e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2605, -0.2582, -0.0547, -0.1710, 0.0385, 0.1486, 0.1924, 0.3090,\n", + " 0.1891, 0.2139, 0.2150, -0.1442, -0.1611, -0.3090, -0.1343, -0.2916,\n", + " -0.1952, -0.0770, -0.0982, -0.0764, -0.0692, -0.0824, -0.0011, -0.0602,\n", + " -0.0365, 0.0385, -0.0206, -0.0828, -0.1841, -0.1855, -0.1723, -0.1602,\n", + " -0.2596, -0.3026, -0.1553, -0.1283, -0.0193, 0.0122, 0.0362, 0.2917,\n", + " 0.3237, 0.3343, 0.2422]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004986696876585484\n", + "Grad encoder.fc1.bias: 0.0002907251473516226\n", + "Grad encoder.encoder.0.weight: 0.00011689508392009884\n", + "Grad encoder.encoder.0.bias: 0.00036719435593113303\n", + "Grad encoder.encoder.2.weight: 6.880837463540956e-05\n", + "Grad encoder.encoder.2.bias: 0.00035627090255729854\n", + "Grad encoder.encoder.4.weight: 0.0002004921407205984\n", + "Grad encoder.encoder.4.bias: 0.0009249073336832225\n", + "Grad decoder.fc1.0.weight: 5.730744305765256e-05\n", + "Grad decoder.fc1.0.bias: 0.000320971361361444\n", + "Grad decoder.fc1.2.weight: 4.756220732815564e-05\n", + "Grad decoder.fc1.2.bias: 0.00032785406801849604\n", + "Grad decoder.fc1.4.weight: 4.824424831895158e-05\n", + "Grad decoder.fc1.4.bias: 0.0005005965358577669\n", + "Grad decoder.fc2.weight: 6.651738658547401e-05\n", + "Grad decoder.fc2.bias: 0.0022070743143558502\n", + "Grad _memory_unit.weight_ih_l0: 4.47611091658473e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.4698838640470058e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.173859896487556e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.1448586267069913e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.282851270749234e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.6308436645194888e-05\n", + "Data X Sample: tensor([[2.5375, 2.8970, 3.2351, 3.4547, 3.4542, 3.6920, 3.7947, 3.6825, 3.8153,\n", + " 3.8466, 3.8417, 3.9768, 3.7994, 3.7134, 3.7526, 3.3697, 3.4026, 3.4567,\n", + " 3.4837, 3.4609, 3.2461, 3.1812, 2.9399, 2.8382, 2.7439, 2.7529, 2.7785,\n", + " 2.6837, 2.7094, 2.8264, 2.8976, 2.8739, 2.9569, 2.1786, 3.5591, 3.9670,\n", + " 4.2161, 4.6088, 5.1088, 5.0075, 1.9997, 1.0893, 1.1156, 2.0064, 2.7908,\n", + " 3.3509, 2.1689, 3.1590]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 5.1285e-01, -9.3311e-01, 1.6673e+00, -2.7542e-02, 1.9830e+00,\n", + " 7.3957e-01, -5.1458e-02, -3.4580e-01, 3.2358e-01, -1.3358e-03,\n", + " 1.4074e-01, -2.8515e-02, -1.7442e+00, -5.2637e-02, 3.8752e-01,\n", + " 1.0330e+00, -7.0680e-01, 7.7021e-01, -1.1107e+00, 1.1384e+00,\n", + " -3.4164e-02, 2.0955e-01, -9.0180e-01, -5.1049e-01, 8.9278e-01,\n", + " 5.2610e-01, 6.0141e-01, -2.9673e-01, -1.2601e-03, -7.7300e-01,\n", + " -3.7012e-01, -3.2242e-01, -1.4588e-01, -7.5951e-01, 2.3437e-01,\n", + " 4.6134e-01, 0.0000e+00, -6.7160e-01, 1.3913e-01, -1.0716e-01,\n", + " -3.5338e-01, -6.7685e-01, 1.1764e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1853, -0.2041, -0.0406, -0.1569, 0.0030, 0.0972, 0.1149, 0.2224,\n", + " 0.1406, 0.1672, 0.1327, -0.1039, -0.1139, -0.2175, -0.0973, -0.2355,\n", + " -0.1747, -0.0642, -0.0598, -0.0670, -0.0458, -0.0745, -0.0115, -0.0685,\n", + " -0.0435, 0.0274, 0.0046, -0.0267, -0.1273, -0.1482, -0.1150, -0.1056,\n", + " -0.2006, -0.2158, -0.1212, -0.0867, -0.0190, 0.0218, 0.0088, 0.2094,\n", + " 0.2640, 0.2389, 0.1774]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000183572294190526\n", + "Grad encoder.fc1.bias: 0.00018878743867389858\n", + "Grad encoder.encoder.0.weight: 3.233264578739181e-05\n", + "Grad encoder.encoder.0.bias: 0.00024050577485468239\n", + "Grad encoder.encoder.2.weight: 2.425424099783413e-05\n", + "Grad encoder.encoder.2.bias: 0.00022705693845637143\n", + "Grad encoder.encoder.4.weight: 7.099719368852675e-05\n", + "Grad encoder.encoder.4.bias: 0.0005999827990308404\n", + "Grad decoder.fc1.0.weight: 2.3242717361426912e-05\n", + "Grad decoder.fc1.0.bias: 0.00013772121747024357\n", + "Grad decoder.fc1.2.weight: 3.0487226467812434e-05\n", + "Grad decoder.fc1.2.bias: 0.0002012473705690354\n", + "Grad decoder.fc1.4.weight: 3.8004665839252993e-05\n", + "Grad decoder.fc1.4.bias: 0.0003037331625819206\n", + "Grad decoder.fc2.weight: 9.911628876579925e-05\n", + "Grad decoder.fc2.bias: 0.0019990308210253716\n", + "Grad _memory_unit.weight_ih_l0: 6.089178896218073e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.6468966350657865e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.119816240854561e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.6161683333848487e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.605867823353037e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.854501897469163e-05\n", + "Data X Sample: tensor([[1.3950, 1.6124, 1.9429, 1.8914, 2.0080, 2.1775, 2.2740, 1.9193, 3.1220,\n", + " 3.9635, 4.3492, 4.3118, 4.1966, 3.8389, 3.7047, 3.7252, 3.6636, 3.5979,\n", + " 3.5436, 3.6116, 3.3933, 3.3359, 2.9930, 2.8592, 2.7890, 2.9671, 2.9250,\n", + " 3.1160, 2.9731, 3.1671, 3.3140, 3.1861, 3.8391, 2.7897, 4.6596, 4.9374,\n", + " 5.1148, 5.5602, 6.2433, 5.9381, 1.1693, 0.6771, 0.7296, 1.2113, 1.6967,\n", + " 1.8527, 1.2102, 1.6811]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3070, -1.0147, 0.1277, -0.2096, -0.7212, -0.5519, -0.0601, 0.5510,\n", + " 0.7739, 0.4648, 0.6296, 0.5767, 0.2268, -0.1437, -0.0052, -0.0932,\n", + " -0.2748, 0.4068, 0.8462, 0.8663, -0.4651, 0.1202, -1.0579, -0.3321,\n", + " 0.9050, 0.5996, 0.9139, -0.0409, 0.7258, -0.1222, -0.3894, -1.1690,\n", + " -0.1266, -0.3027, -0.4817, -1.7743, -0.0107, 0.7579, -0.1041, 0.5224,\n", + " 0.5788, 0.6123, 0.8418]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2298, -0.2354, -0.0512, -0.1680, 0.0215, 0.1234, 0.1557, 0.2726,\n", + " 0.1629, 0.1891, 0.1793, -0.1257, -0.1404, -0.2660, -0.1164, -0.2626,\n", + " -0.1845, -0.0662, -0.0830, -0.0739, -0.0607, -0.0767, -0.0055, -0.0597,\n", + " -0.0385, 0.0342, -0.0051, -0.0548, -0.1565, -0.1665, -0.1460, -0.1351,\n", + " -0.2309, -0.2685, -0.1367, -0.1107, -0.0177, 0.0159, 0.0276, 0.2555,\n", + " 0.2964, 0.2936, 0.2141]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00010717531404225156\n", + "Grad encoder.fc1.bias: 0.00028603136888705194\n", + "Grad encoder.encoder.0.weight: 2.386567575740628e-05\n", + "Grad encoder.encoder.0.bias: 0.00018164764333050698\n", + "Grad encoder.encoder.2.weight: 1.8230384739581496e-05\n", + "Grad encoder.encoder.2.bias: 0.0001300501317018643\n", + "Grad encoder.encoder.4.weight: 5.04899762745481e-05\n", + "Grad encoder.encoder.4.bias: 0.0002443260164000094\n", + "Grad decoder.fc1.0.weight: 2.0237672288203612e-05\n", + "Grad decoder.fc1.0.bias: 0.00010549880244070664\n", + "Grad decoder.fc1.2.weight: 3.190282586729154e-05\n", + "Grad decoder.fc1.2.bias: 0.0001701043947832659\n", + "Grad decoder.fc1.4.weight: 3.482083047856577e-05\n", + "Grad decoder.fc1.4.bias: 0.0002446697326377034\n", + "Grad decoder.fc2.weight: 8.404254913330078e-05\n", + "Grad decoder.fc2.bias: 0.001972515368834138\n", + "Grad _memory_unit.weight_ih_l0: 3.074916321565979e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.372157026315108e-06\n", + "Grad _memory_unit.bias_hh_l0: 4.541129783319775e-06\n", + "Grad _memory_unit.weight_ih_l1: 8.671785280967015e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.830163091653958e-05\n", + "Grad _memory_unit.bias_hh_l1: 9.18088699108921e-06\n", + "Data X Sample: tensor([[2.5725, 2.9858, 3.2111, 3.3170, 3.6027, 3.6080, 3.7284, 3.7790, 3.7811,\n", + " 3.8972, 3.9812, 3.9963, 3.7195, 3.7134, 3.5307, 3.4312, 3.4639, 3.5612,\n", + " 3.4878, 3.3010, 3.2829, 3.2976, 2.9351, 2.8764, 2.7721, 2.8208, 2.7092,\n", + " 2.7326, 2.7406, 2.7740, 2.9151, 2.8739, 3.0449, 2.1443, 3.5640, 4.0618,\n", + " 4.1670, 4.6644, 5.2165, 5.0699, 1.9663, 1.1371, 1.1277, 2.0121, 2.8701,\n", + " 3.2937, 2.0873, 2.9400]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4286, -0.7870, -0.1667, -0.8360, -1.1230, 0.7870, 0.5872, 0.0708,\n", + " -0.3360, 0.1374, 0.2308, -0.2318, -0.1824, -0.4579, -1.5157, -0.3726,\n", + " -1.1029, -0.9321, 0.1632, -1.5270, -0.7351, -0.9303, -0.6807, -1.1945,\n", + " 0.1527, -0.8956, -0.3063, 0.7756, 0.1124, 0.5399, 0.7194, 0.1923,\n", + " -0.4221, -0.0276, 0.0377, -0.8251, 0.0213, -0.0869, 0.6035, 0.2400,\n", + " 0.1762, 0.1444, 0.0918]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1671, -0.1925, -0.0380, -0.1530, -0.0008, 0.0852, 0.0962, 0.2029,\n", + " 0.1305, 0.1557, 0.1146, -0.0938, -0.1039, -0.1955, -0.0872, -0.2213,\n", + " -0.1696, -0.0562, -0.0511, -0.0662, -0.0417, -0.0704, -0.0148, -0.0685,\n", + " -0.0436, 0.0246, 0.0116, -0.0135, -0.1152, -0.1429, -0.1032, -0.0933,\n", + " -0.1887, -0.1998, -0.1135, -0.0771, -0.0177, 0.0257, 0.0062, 0.1887,\n", + " 0.2492, 0.2185, 0.1643]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 6.163051875773817e-05\n", + "Grad encoder.fc1.bias: 0.0006181032513268292\n", + "Grad encoder.encoder.0.weight: 1.687867916189134e-05\n", + "Grad encoder.encoder.0.bias: 0.0003900075680576265\n", + "Grad encoder.encoder.2.weight: 1.5213561709970236e-05\n", + "Grad encoder.encoder.2.bias: 0.0002839887165464461\n", + "Grad encoder.encoder.4.weight: 3.5030236176680773e-05\n", + "Grad encoder.encoder.4.bias: 0.0005353868473321199\n", + "Grad decoder.fc1.0.weight: 2.057469100691378e-05\n", + "Grad decoder.fc1.0.bias: 0.0002072453498840332\n", + "Grad decoder.fc1.2.weight: 2.5265126168960705e-05\n", + "Grad decoder.fc1.2.bias: 0.0001612624037079513\n", + "Grad decoder.fc1.4.weight: 3.4283370041521266e-05\n", + "Grad decoder.fc1.4.bias: 0.00027425363077782094\n", + "Grad decoder.fc2.weight: 7.276223186636344e-05\n", + "Grad decoder.fc2.bias: 0.0017041802639141679\n", + "Grad _memory_unit.weight_ih_l0: 3.606125119404169e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.113963637384586e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.0673425094864797e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.311465439357562e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.8436886825365946e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.930378311953973e-05\n", + "Data X Sample: tensor([[1.6369, 1.8731, 2.0481, 2.2062, 2.3682, 2.4353, 2.5051, 2.5127, 2.6168,\n", + " 2.6207, 2.6743, 2.7460, 2.6143, 2.5138, 2.5623, 2.5532, 2.4938, 2.5205,\n", + " 2.4801, 2.4790, 2.5174, 2.5229, 2.5230, 2.4756, 2.5300, 2.5806, 2.4961,\n", + " 2.4920, 2.2307, 2.3155, 2.3447, 2.2715, 2.0548, 1.3250, 1.7673, 1.6880,\n", + " 1.6086, 1.5504, 1.5909, 1.4327, 1.3125, 0.7329, 0.7821, 1.3261, 1.9662,\n", + " 2.2758, 1.3802, 2.1659]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2824, -2.1182, -1.4909, -0.1294, 1.5415, 0.5324, 0.4985, 0.9401,\n", + " 0.5926, 0.4340, 0.1512, 0.7365, 0.9746, 0.4717, 0.3014, 0.3830,\n", + " 0.6921, -2.1853, 0.2700, -0.3103, -0.7728, -0.4670, -0.2711, -0.6874,\n", + " 0.7282, -1.0469, -0.5423, -0.3668, -1.3116, -1.1967, -0.4883, -1.5410,\n", + " -0.9825, -0.9407, 0.5088, 0.8279, -0.0457, -0.0751, 0.0040, 0.2493,\n", + " 0.5088, 0.5803, -0.2763]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4428, 0.4859, 0.2346, 0.3314, 0.2215, -0.0924, -0.4061, -0.4355,\n", + " -0.2586, -0.3361, -0.3240, 0.2410, 0.2367, 0.2724, 0.2326, 0.3650,\n", + " 0.3321, 0.1172, 0.1459, 0.1625, 0.1189, 0.0235, 0.0693, -0.0305,\n", + " 0.0540, 0.0237, -0.0983, 0.0031, 0.1381, 0.3207, 0.2856, 0.2796,\n", + " 0.3721, 0.3666, 0.2567, 0.3636, -0.0470, 0.0174, -0.0693, -0.3745,\n", + " -0.3723, -0.4262, -0.3969]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0011261521140113473\n", + "Grad encoder.fc1.bias: 0.0006818508263677359\n", + "Grad encoder.encoder.0.weight: 0.0001899980561574921\n", + "Grad encoder.encoder.0.bias: 0.0008653244003653526\n", + "Grad encoder.encoder.2.weight: 0.00013908663822803646\n", + "Grad encoder.encoder.2.bias: 0.0013832086697220802\n", + "Grad encoder.encoder.4.weight: 0.00047062261728569865\n", + "Grad encoder.encoder.4.bias: 0.004441354423761368\n", + "Grad decoder.fc1.0.weight: 0.00015187356621026993\n", + "Grad decoder.fc1.0.bias: 0.001019811723381281\n", + "Grad decoder.fc1.2.weight: 0.00014334189472720027\n", + "Grad decoder.fc1.2.bias: 0.0018994692945852876\n", + "Grad decoder.fc1.4.weight: 0.00010489602573215961\n", + "Grad decoder.fc1.4.bias: 0.0009473658865317702\n", + "Grad decoder.fc2.weight: 0.00012770280591212213\n", + "Grad decoder.fc2.bias: 0.0023846267722547054\n", + "Grad _memory_unit.weight_ih_l0: 5.626598431263119e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00011545049346750602\n", + "Grad _memory_unit.bias_hh_l0: 8.998630073620006e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.3543878342024982e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00036141829332336783\n", + "Grad _memory_unit.bias_hh_l1: 0.00018926388293039054\n", + "Data X Sample: tensor([[1.5499, 1.8833, 2.0406, 2.1603, 2.2487, 2.4471, 2.5498, 2.5468, 2.6363,\n", + " 2.5591, 2.6711, 2.6992, 2.6209, 2.5165, 2.5572, 2.4452, 2.4215, 2.4876,\n", + " 2.5049, 2.3674, 2.4217, 2.5046, 2.5688, 2.5080, 2.4736, 2.4761, 2.4748,\n", + " 2.4961, 2.1821, 2.4138, 2.3237, 2.2051, 1.8766, 1.2152, 1.6815, 1.6563,\n", + " 1.5142, 1.4947, 1.5339, 1.4072, 1.3650, 0.8324, 0.7498, 1.2888, 2.0614,\n", + " 2.1272, 1.3938, 2.0330]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6515, 0.3823, 0.0102, 0.7370, -0.3756, 1.0611, -0.0511, -0.4089,\n", + " -0.6460, -0.5676, -0.0209, -0.7343, -0.8534, 0.8766, -0.0793, 1.1448,\n", + " 1.6623, 1.1927, -0.6926, -0.2905, -0.7188, -1.4984, 0.4038, 0.0863,\n", + " -0.2924, -0.9350, 0.6040, -0.7785, -0.6813, -0.3163, -0.6684, -0.5104,\n", + " -0.4365, 0.5645, -0.1521, -0.2943, -1.0293, -0.0459, 1.0291, -0.2745,\n", + " -0.3099, -0.6387, -1.5666]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4557, 0.4915, 0.2317, 0.3378, 0.2212, -0.1006, -0.4154, -0.4534,\n", + " -0.2654, -0.3451, -0.3321, 0.2445, 0.2434, 0.2890, 0.2420, 0.3758,\n", + " 0.3405, 0.1304, 0.1444, 0.1578, 0.1185, 0.0243, 0.0738, -0.0216,\n", + " 0.0544, 0.0178, -0.0963, 0.0086, 0.1510, 0.3297, 0.2907, 0.2859,\n", + " 0.3780, 0.3711, 0.2640, 0.3702, -0.0444, 0.0181, -0.0646, -0.3830,\n", + " -0.3855, -0.4287, -0.4046]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 6.185047095641494e-05\n", + "Grad encoder.fc1.bias: 0.0010759643046185374\n", + "Grad encoder.encoder.0.weight: 2.0141364075243473e-05\n", + "Grad encoder.encoder.0.bias: 0.0005960678099654615\n", + "Grad encoder.encoder.2.weight: 1.7048336303560063e-05\n", + "Grad encoder.encoder.2.bias: 0.00038511501043103635\n", + "Grad encoder.encoder.4.weight: 6.12118310527876e-05\n", + "Grad encoder.encoder.4.bias: 0.000762706738896668\n", + "Grad decoder.fc1.0.weight: 2.3365431843558326e-05\n", + "Grad decoder.fc1.0.bias: 0.00017712143016979098\n", + "Grad decoder.fc1.2.weight: 3.4200700611108914e-05\n", + "Grad decoder.fc1.2.bias: 0.00020501951803453267\n", + "Grad decoder.fc1.4.weight: 4.075453762197867e-05\n", + "Grad decoder.fc1.4.bias: 0.00030448994948528707\n", + "Grad decoder.fc2.weight: 0.00013212677731644362\n", + "Grad decoder.fc2.bias: 0.0022724007721990347\n", + "Grad _memory_unit.weight_ih_l0: 1.003373836283572e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.914789678878151e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.531126665417105e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.1084267700643977e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.764714296674356e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.9400802304735407e-05\n", + "Data X Sample: tensor([[1.3855, 1.5555, 1.8572, 1.8279, 1.9294, 1.9992, 2.1800, 2.0797, 3.9105,\n", + " 4.1468, 4.0669, 4.3079, 4.0657, 3.9479, 3.7122, 3.6021, 3.6856, 3.6347,\n", + " 3.6241, 3.6804, 3.4767, 3.4813, 2.9183, 2.8382, 2.7890, 2.7895, 3.0156,\n", + " 3.0671, 3.1396, 3.1016, 3.2091, 3.3519, 3.7093, 2.7096, 4.4660, 4.8401,\n", + " 5.2131, 5.5019, 5.9708, 5.9239, 1.1502, 0.7090, 0.6972, 1.1883, 1.7244,\n", + " 1.8184, 1.2170, 1.7124]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2009, 0.0300, -0.6339, 0.2275, 0.5560, 0.3132, -0.3144, -0.2974,\n", + " -0.0134, 0.4238, 0.0997, 0.1626, 1.1524, -0.0344, 1.1168, 0.1552,\n", + " -0.4197, -0.2902, -0.8203, 0.0552, 0.7468, 0.2975, -0.9610, -0.1781,\n", + " 0.1819, -0.0473, -1.8367, 1.0438, -0.5573, 0.0368, 0.0168, 0.5595,\n", + " -0.1032, 0.4395, 0.3661, 0.6828, -0.2609, 0.5210, -0.5562, -0.9061,\n", + " 0.1159, -0.8270, -0.8122]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1962, -0.2134, -0.0493, -0.1631, 0.0091, 0.0973, 0.1176, 0.2345,\n", + " 0.1436, 0.1676, 0.1459, -0.1092, -0.1229, -0.2221, -0.0991, -0.2348,\n", + " -0.1760, -0.0501, -0.0668, -0.0733, -0.0550, -0.0662, -0.0122, -0.0589,\n", + " -0.0383, 0.0284, 0.0085, -0.0272, -0.1304, -0.1532, -0.1230, -0.1129,\n", + " -0.2079, -0.2386, -0.1211, -0.0955, -0.0141, 0.0234, 0.0250, 0.2195,\n", + " 0.2688, 0.2557, 0.1915]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0009237669291906059\n", + "Grad encoder.fc1.bias: 0.0010644050780683756\n", + "Grad encoder.encoder.0.weight: 0.00014297793677542359\n", + "Grad encoder.encoder.0.bias: 0.001016924623399973\n", + "Grad encoder.encoder.2.weight: 0.00010985039261868224\n", + "Grad encoder.encoder.2.bias: 0.0012764744460582733\n", + "Grad encoder.encoder.4.weight: 0.00035144510911777616\n", + "Grad encoder.encoder.4.bias: 0.0033988896757364273\n", + "Grad decoder.fc1.0.weight: 0.00012242137745488435\n", + "Grad decoder.fc1.0.bias: 0.000849383301101625\n", + "Grad decoder.fc1.2.weight: 9.336676157545298e-05\n", + "Grad decoder.fc1.2.bias: 0.001650138758122921\n", + "Grad decoder.fc1.4.weight: 5.84735389566049e-05\n", + "Grad decoder.fc1.4.bias: 0.000600283732637763\n", + "Grad decoder.fc2.weight: 0.00015510698722209781\n", + "Grad decoder.fc2.bias: 0.0016866687219589949\n", + "Grad _memory_unit.weight_ih_l0: 4.9033867981052026e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00013468775432556868\n", + "Grad _memory_unit.bias_hh_l0: 9.167834650725126e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.24162322410848e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0003163024375680834\n", + "Grad _memory_unit.bias_hh_l1: 0.0001677978434599936\n", + "Data X Sample: tensor([[1.2698, 1.4667, 1.6198, 1.8433, 1.8782, 1.9815, 2.1261, 1.9860, 2.9634,\n", + " 4.1389, 4.2572, 4.1170, 4.0213, 3.8988, 3.6744, 3.5078, 3.4938, 3.5476,\n", + " 3.4816, 3.4591, 3.4645, 3.5333, 3.1857, 2.8287, 2.8021, 2.7921, 2.9623,\n", + " 2.9937, 2.9800, 2.9378, 3.1006, 3.2248, 3.7071, 2.7508, 4.4807, 4.8815,\n", + " 5.1128, 5.6053, 6.0152, 5.8785, 1.0166, 0.6393, 0.6103, 1.0678, 1.5579,\n", + " 1.6526, 1.1966, 1.7906]], device='cuda:0')\n", + "Data Y Sample: tensor([[-3.6921e-01, -6.3206e-01, -6.6753e-01, 8.0229e-01, -1.9248e-01,\n", + " -3.0885e-01, 3.1122e-01, 6.3163e-01, 1.5504e-01, 6.1677e-01,\n", + " 6.0491e-01, 2.1754e-01, -6.1781e-01, 5.5902e-02, 4.8176e-01,\n", + " -5.6681e-01, -7.4368e-01, 2.6410e-01, -1.9255e-01, -5.1912e-01,\n", + " -1.8549e+00, -2.0308e+00, -5.8470e+00, -1.2933e+00, 1.7225e-01,\n", + " 3.9382e+00, -6.2140e-01, 6.4462e-02, 3.4803e-01, -5.6047e-01,\n", + " -4.9491e-01, -3.9540e-01, -1.5861e-02, -1.0314e+00, -2.7522e-01,\n", + " 9.6899e-01, -6.2880e-04, -9.1056e-02, 0.0000e+00, 4.6582e-01,\n", + " 6.9631e-01, 6.0771e-01, -8.2640e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1986, -0.2158, -0.0515, -0.1653, 0.0093, 0.0970, 0.1174, 0.2361,\n", + " 0.1434, 0.1681, 0.1487, -0.1109, -0.1242, -0.2227, -0.1000, -0.2348,\n", + " -0.1765, -0.0479, -0.0677, -0.0749, -0.0562, -0.0644, -0.0124, -0.0567,\n", + " -0.0373, 0.0287, 0.0098, -0.0263, -0.1305, -0.1535, -0.1254, -0.1145,\n", + " -0.2095, -0.2419, -0.1215, -0.0975, -0.0135, 0.0237, 0.0287, 0.2213,\n", + " 0.2705, 0.2590, 0.1946]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000131408785819076\n", + "Grad encoder.fc1.bias: 5.70539414184168e-05\n", + "Grad encoder.encoder.0.weight: 2.370415131736081e-05\n", + "Grad encoder.encoder.0.bias: 5.496367521118373e-05\n", + "Grad encoder.encoder.2.weight: 1.7762769857654348e-05\n", + "Grad encoder.encoder.2.bias: 6.29074129392393e-05\n", + "Grad encoder.encoder.4.weight: 5.581174627877772e-05\n", + "Grad encoder.encoder.4.bias: 0.00022132680169306695\n", + "Grad decoder.fc1.0.weight: 1.8259577700519003e-05\n", + "Grad decoder.fc1.0.bias: 5.889653039048426e-05\n", + "Grad decoder.fc1.2.weight: 2.6929501473205164e-05\n", + "Grad decoder.fc1.2.bias: 0.00012868519115727395\n", + "Grad decoder.fc1.4.weight: 2.7896596293430775e-05\n", + "Grad decoder.fc1.4.bias: 0.00017193763051182032\n", + "Grad decoder.fc2.weight: 9.320405661128461e-05\n", + "Grad decoder.fc2.bias: 0.001878821523860097\n", + "Grad _memory_unit.weight_ih_l0: 1.0263051990477834e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.007196374303021e-06\n", + "Grad _memory_unit.bias_hh_l0: 7.725597015451058e-07\n", + "Grad _memory_unit.weight_ih_l1: 7.11388565832749e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.4328381439554505e-05\n", + "Grad _memory_unit.bias_hh_l1: 7.281470971065573e-06\n", + "Data X Sample: tensor([[1.3589, 1.4347, 1.6980, 1.8170, 1.7996, 1.9963, 2.1045, 2.0954, 3.7469,\n", + " 4.2163, 4.3080, 4.3059, 4.0812, 3.9097, 3.7753, 3.7799, 3.6872, 3.6637,\n", + " 3.6158, 3.5204, 3.4350, 3.3359, 3.0821, 2.9127, 2.9391, 2.8444, 2.9437,\n", + " 2.9447, 2.9627, 3.1933, 3.3245, 3.3713, 3.7621, 2.7874, 4.6327, 4.9666,\n", + " 5.1758, 5.5920, 6.0659, 5.9296, 1.0786, 0.6333, 0.6103, 1.0735, 1.6491,\n", + " 1.8298, 1.1150, 1.5013]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5340, 0.1526, 0.6878, 0.4293, 0.8421, -0.2334, -0.0915, 0.0909,\n", + " -0.7598, -0.1938, -0.3851, 0.8815, 0.3736, -0.5087, -0.1423, 1.1711,\n", + " 0.3045, 1.9686, 0.4713, -0.1487, 0.4911, -0.1280, 0.7002, -0.4661,\n", + " 0.0542, 0.7456, -0.0923, 0.4764, 0.3723, -0.2473, -0.4672, 0.9823,\n", + " 0.0249, -0.1602, 1.1356, 0.8200, -0.4714, -0.5781, -1.1380, -0.1918,\n", + " 0.2786, 0.0832, 0.6498]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2030, -0.2203, -0.0536, -0.1674, 0.0119, 0.0988, 0.1199, 0.2404,\n", + " 0.1461, 0.1711, 0.1542, -0.1136, -0.1269, -0.2263, -0.1019, -0.2363,\n", + " -0.1774, -0.0471, -0.0697, -0.0767, -0.0586, -0.0632, -0.0125, -0.0553,\n", + " -0.0362, 0.0292, 0.0097, -0.0275, -0.1333, -0.1565, -0.1302, -0.1183,\n", + " -0.2138, -0.2476, -0.1247, -0.1007, -0.0127, 0.0243, 0.0329, 0.2252,\n", + " 0.2746, 0.2652, 0.2002]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00014388537965714931\n", + "Grad encoder.fc1.bias: 0.00029132841154932976\n", + "Grad encoder.encoder.0.weight: 2.531205609557219e-05\n", + "Grad encoder.encoder.0.bias: 0.0003795450902543962\n", + "Grad encoder.encoder.2.weight: 2.0008043065899983e-05\n", + "Grad encoder.encoder.2.bias: 0.0002998476556967944\n", + "Grad encoder.encoder.4.weight: 6.267830030992627e-05\n", + "Grad encoder.encoder.4.bias: 0.000799880363047123\n", + "Grad decoder.fc1.0.weight: 2.6943702323478647e-05\n", + "Grad decoder.fc1.0.bias: 0.0002319207414984703\n", + "Grad decoder.fc1.2.weight: 3.746305810636841e-05\n", + "Grad decoder.fc1.2.bias: 0.00025196108617819846\n", + "Grad decoder.fc1.4.weight: 4.278161941329017e-05\n", + "Grad decoder.fc1.4.bias: 0.00032826769165694714\n", + "Grad decoder.fc2.weight: 0.0001384634233545512\n", + "Grad decoder.fc2.bias: 0.0018617968307808042\n", + "Grad _memory_unit.weight_ih_l0: 4.785986675415188e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.8129976524505764e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.709080586617347e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.9775527562160278e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.515778320841491e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.839418812072836e-05\n", + "Data X Sample: tensor([[ 0.0159, 0.0204, 0.0240, 0.0284, 0.0137, 0.0427, 0.0123, 0.0156,\n", + " 0.0415, 0.0300, 0.0381, 0.0117, 0.0155, 0.0218, 0.0050, 0.0150,\n", + " -0.1101, -0.1373, -0.1797, -0.1544, -0.1570, -0.0964, -0.1952, -0.1851,\n", + " -0.1389, -0.3004, -0.3223, -0.4650, -0.0902, -0.0917, -0.0945, -0.0718,\n", + " -0.0506, -0.0847, -0.0343, -0.0097, 0.0000, -0.0451, -0.0127, -0.0142,\n", + " -0.0143, -0.0100, -0.0061, 0.0172, 0.0040, -0.0114, 0.0204, 0.0704]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.8330, 1.4371, 1.9151, 0.3021, 0.2031, -1.5790, -1.7999, -1.4050,\n", + " -0.4161, -0.9279, -1.1147, 0.6393, 0.4981, 0.3573, -0.8834, 0.2785,\n", + " 0.2961, -1.5495, -1.2339, 0.7606, -0.2548, 2.0216, -0.0275, 0.8604,\n", + " 0.0944, 0.8363, 0.4078, -0.5669, 0.6114, 0.3241, 1.0339, 0.3166,\n", + " 0.6463, 1.2889, 1.0155, 0.8955, 0.7316, 0.7450, -0.0231, -1.1705,\n", + " -0.8531, -0.6611, -1.2262]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5604, 0.5042, 0.2312, 0.3739, 0.1705, -0.2023, -0.5650, -0.6817,\n", + " -0.3540, -0.4350, -0.4031, 0.3192, 0.3200, 0.4092, 0.2881, 0.4564,\n", + " 0.3901, 0.2179, 0.1380, 0.1202, 0.1032, 0.0454, 0.0861, 0.0370,\n", + " 0.0866, -0.0377, -0.0471, 0.1083, 0.3454, 0.4896, 0.4006, 0.3538,\n", + " 0.4718, 0.4802, 0.2817, 0.4117, 0.0147, 0.0567, -0.0259, -0.4541,\n", + " -0.4980, -0.4832, -0.4844]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00047499273205175996\n", + "Grad encoder.fc1.bias: 0.0003880714066326618\n", + "Grad encoder.encoder.0.weight: 8.416073978878558e-05\n", + "Grad encoder.encoder.0.bias: 0.0004935728502459824\n", + "Grad encoder.encoder.2.weight: 6.0180824220879003e-05\n", + "Grad encoder.encoder.2.bias: 0.00040050430106930435\n", + "Grad encoder.encoder.4.weight: 0.000182064002729021\n", + "Grad encoder.encoder.4.bias: 0.0008153117960318923\n", + "Grad decoder.fc1.0.weight: 4.9542886699782684e-05\n", + "Grad decoder.fc1.0.bias: 0.0002356723416596651\n", + "Grad decoder.fc1.2.weight: 5.2109160606050864e-05\n", + "Grad decoder.fc1.2.bias: 0.000321898638503626\n", + "Grad decoder.fc1.4.weight: 6.255040352698416e-05\n", + "Grad decoder.fc1.4.bias: 0.0004969250876456499\n", + "Grad decoder.fc2.weight: 0.00011190363875357434\n", + "Grad decoder.fc2.bias: 0.0022580991499125957\n", + "Grad _memory_unit.weight_ih_l0: 1.1114511835330632e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.2766514777904376e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.732033160806168e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.4538431918917922e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.231418956303969e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.153269790345803e-05\n", + "Data X Sample: tensor([[1.4767, 1.8993, 2.2089, 2.3505, 2.3802, 2.5885, 2.6761, 2.8023, 2.7998,\n", + " 2.8340, 2.8931, 2.9427, 2.7741, 2.6774, 2.7464, 2.6613, 2.6620, 2.7778,\n", + " 2.7630, 2.6836, 2.7407, 2.8628, 2.7809, 2.6741, 2.4699, 2.3951, 2.2617,\n", + " 2.3085, 1.8629, 1.8963, 1.7638, 1.6912, 1.4520, 0.9589, 1.3702, 1.4058,\n", + " 1.4198, 1.5159, 1.8191, 1.8016, 1.3650, 0.7826, 0.8448, 1.4180, 2.0931,\n", + " 2.3902, 1.5502, 2.1503]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.0667, -0.1260, 0.9600, -0.2711, 0.8010, -0.7193, -0.8152, -0.5741,\n", + " -0.2909, -0.1166, -0.4989, -0.5345, 0.1935, -0.1688, 0.3244, 0.9540,\n", + " 1.3328, 0.5987, 1.0549, 0.0750, 1.2914, 0.4570, 0.2076, 0.9289,\n", + " 0.8959, 0.4421, -0.2384, 0.1770, -0.8430, 1.3001, 0.1622, -0.4886,\n", + " 0.4003, 0.0183, -0.3317, -0.1504, 0.9839, 0.4144, 1.1137, -0.4861,\n", + " -0.6189, -0.4222, -0.4001]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.1951, 0.1418, 0.0607, 0.0515, 0.0406, -0.0821, -0.2165, -0.2041,\n", + " -0.1012, -0.1335, -0.1727, 0.0852, 0.0849, 0.1249, 0.1015, 0.0932,\n", + " 0.0911, 0.0515, 0.0410, 0.0145, 0.0205, -0.0188, 0.0270, -0.0321,\n", + " -0.0032, 0.0040, 0.0023, 0.0470, 0.0964, 0.1277, 0.1245, 0.1215,\n", + " 0.1196, 0.1228, 0.0676, 0.1482, -0.0266, 0.0177, -0.0031, -0.1542,\n", + " -0.1054, -0.1213, -0.1237]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0027121896855533123\n", + "Grad encoder.fc1.bias: 0.0013639118988066912\n", + "Grad encoder.encoder.0.weight: 0.00039252586429938674\n", + "Grad encoder.encoder.0.bias: 0.0016510954592376947\n", + "Grad encoder.encoder.2.weight: 0.00022245064610615373\n", + "Grad encoder.encoder.2.bias: 0.0017274919664487243\n", + "Grad encoder.encoder.4.weight: 0.0005997175467200577\n", + "Grad encoder.encoder.4.bias: 0.0050005014054477215\n", + "Grad decoder.fc1.0.weight: 0.0001782494073268026\n", + "Grad decoder.fc1.0.bias: 0.0010558689245954156\n", + "Grad decoder.fc1.2.weight: 0.00013005721848458052\n", + "Grad decoder.fc1.2.bias: 0.001923910342156887\n", + "Grad decoder.fc1.4.weight: 0.00010190531611442566\n", + "Grad decoder.fc1.4.bias: 0.0010911569697782397\n", + "Grad decoder.fc2.weight: 0.00015757708752062172\n", + "Grad decoder.fc2.bias: 0.002310963347554207\n", + "Grad _memory_unit.weight_ih_l0: 6.943928019609302e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00011754670413210988\n", + "Grad _memory_unit.bias_hh_l0: 9.6554693300277e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.6210269425064325e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0004370705864857882\n", + "Grad _memory_unit.bias_hh_l1: 0.00022743979934602976\n", + "Data X Sample: tensor([[2.7815, 3.3077, 3.5282, 3.7674, 3.9374, 4.0868, 4.0427, 4.2461, 4.4963,\n", + " 4.3031, 4.4190, 4.1930, 4.0013, 3.8443, 3.8030, 3.7307, 3.8256, 3.8242,\n", + " 3.7480, 3.7176, 3.8227, 3.7354, 3.3159, 3.0444, 2.8772, 2.9462, 2.9437,\n", + " 3.0589, 2.9974, 3.1736, 3.2475, 3.3187, 3.6697, 2.6043, 4.1326, 4.4899,\n", + " 4.7628, 5.2183, 5.8440, 5.5466, 2.1381, 1.2068, 1.1722, 2.1815, 3.1357,\n", + " 3.5110, 2.3320, 3.5108]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4500, -0.5535, 0.6433, -0.0398, -0.6671, 0.7757, -0.0505, 1.2326,\n", + " 0.4864, 0.8510, 0.3169, 0.1292, -1.6477, -0.0699, -0.6867, -0.1011,\n", + " 1.0416, -0.0594, 0.6864, 0.4668, 1.0074, -2.2670, -1.8622, -1.0031,\n", + " 0.4954, 1.3036, 0.2479, -0.3811, 0.5583, 0.4139, 0.8398, -0.5068,\n", + " 0.2929, 1.2759, 0.7935, 0.2727, 0.1697, 0.4707, 0.2662, 0.1973,\n", + " 0.2610, -1.0576, 0.2492]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1612, -0.1952, -0.0468, -0.1644, -0.0027, 0.0694, 0.0796, 0.1941,\n", + " 0.1222, 0.1489, 0.1118, -0.0931, -0.1002, -0.1775, -0.0860, -0.2063,\n", + " -0.1671, -0.0423, -0.0509, -0.0754, -0.0468, -0.0570, -0.0212, -0.0597,\n", + " -0.0398, 0.0252, 0.0210, 0.0007, -0.1046, -0.1417, -0.1052, -0.0928,\n", + " -0.1867, -0.2015, -0.1110, -0.0797, -0.0133, 0.0296, 0.0209, 0.1811,\n", + " 0.2459, 0.2172, 0.1685]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00098607805557549\n", + "Grad encoder.fc1.bias: 0.00047881569480523467\n", + "Grad encoder.encoder.0.weight: 0.00015139958122745156\n", + "Grad encoder.encoder.0.bias: 0.0005252387491054833\n", + "Grad encoder.encoder.2.weight: 9.616102033760399e-05\n", + "Grad encoder.encoder.2.bias: 0.0005662997136823833\n", + "Grad encoder.encoder.4.weight: 0.00027063622837886214\n", + "Grad encoder.encoder.4.bias: 0.001520215766504407\n", + "Grad decoder.fc1.0.weight: 7.144864503061399e-05\n", + "Grad decoder.fc1.0.bias: 0.00035311304964125156\n", + "Grad decoder.fc1.2.weight: 6.565471994690597e-05\n", + "Grad decoder.fc1.2.bias: 0.0005273896967992187\n", + "Grad decoder.fc1.4.weight: 7.328753417823464e-05\n", + "Grad decoder.fc1.4.bias: 0.0007182027911767364\n", + "Grad decoder.fc2.weight: 0.00011561549035832286\n", + "Grad decoder.fc2.bias: 0.0024979731533676386\n", + "Grad _memory_unit.weight_ih_l0: 8.654539669805672e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.668902586970944e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.0977425517921802e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.351350980869029e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.924279634607956e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.005952359875664e-05\n", + "Data X Sample: tensor([[1.5669, 1.8061, 2.0947, 2.2215, 2.3460, 2.5060, 2.5560, 2.6306, 2.7949,\n", + " 2.7455, 2.7472, 2.7830, 2.7142, 2.6910, 2.5295, 2.6435, 2.6039, 2.6559,\n", + " 2.5957, 2.5645, 2.6376, 2.5811, 2.4387, 2.4927, 2.3648, 2.5988, 2.5281,\n", + " 2.5410, 2.2411, 2.3974, 2.3447, 2.2963, 2.2572, 1.4967, 1.9315, 1.8169,\n", + " 1.7305, 1.6909, 1.6733, 1.5945, 1.1884, 0.7986, 0.7841, 1.4409, 1.9147,\n", + " 2.2415, 1.5298, 2.0721]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 8.0049e-01, -5.2827e-02, 1.0678e-02, 7.5848e-01, 5.9243e-01,\n", + " -6.2715e-01, -7.7396e-01, -5.2860e-01, -1.5063e+00, -4.1152e-01,\n", + " 1.0611e-01, -1.7748e-01, -2.0392e-01, 9.6769e-01, 1.2084e+00,\n", + " 2.8016e-01, 6.6061e-01, 4.7404e-01, 1.1247e+00, -8.6164e-02,\n", + " 6.7099e-01, 1.1326e+00, 2.0278e-01, -8.0751e-03, 1.2496e+00,\n", + " -1.1495e-01, -8.6707e-01, -6.5033e-01, -1.8217e-01, 8.4598e-02,\n", + " 1.0899e+00, 1.2932e+00, 1.1461e-01, -1.1997e-03, 3.2599e-01,\n", + " -8.3684e-01, 9.7765e-01, 1.5113e-01, 4.0193e-03, -2.5222e-01,\n", + " -2.2351e-02, -4.6041e-01, -6.8173e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4665, 0.4440, 0.1708, 0.2627, 0.1544, -0.1818, -0.4474, -0.5055,\n", + " -0.3041, -0.3904, -0.3798, 0.2299, 0.2473, 0.3637, 0.2540, 0.3836,\n", + " 0.3440, 0.1533, 0.0812, 0.1017, 0.0675, 0.0504, 0.0905, 0.0283,\n", + " 0.0598, -0.0009, -0.0377, 0.0319, 0.2397, 0.3669, 0.2941, 0.2763,\n", + " 0.3742, 0.3591, 0.2231, 0.3474, -0.0123, 0.0099, 0.0220, -0.4018,\n", + " -0.3903, -0.3849, -0.3890]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.001790841342881322\n", + "Grad encoder.fc1.bias: 0.0010111038573086262\n", + "Grad encoder.encoder.0.weight: 0.0002757089678198099\n", + "Grad encoder.encoder.0.bias: 0.0015372964553534985\n", + "Grad encoder.encoder.2.weight: 0.00020198829588480294\n", + "Grad encoder.encoder.2.bias: 0.0024178377352654934\n", + "Grad encoder.encoder.4.weight: 0.0006770011386834085\n", + "Grad encoder.encoder.4.bias: 0.007552235387265682\n", + "Grad decoder.fc1.0.weight: 0.0002440431562718004\n", + "Grad decoder.fc1.0.bias: 0.0015020702267065644\n", + "Grad decoder.fc1.2.weight: 0.00016674009384587407\n", + "Grad decoder.fc1.2.bias: 0.003970804624259472\n", + "Grad decoder.fc1.4.weight: 0.00015526084462180734\n", + "Grad decoder.fc1.4.bias: 0.0013875404838472605\n", + "Grad decoder.fc2.weight: 0.00028748088516294956\n", + "Grad decoder.fc2.bias: 0.0022487554233521223\n", + "Grad _memory_unit.weight_ih_l0: 0.00011786091636167839\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00029726079083047807\n", + "Grad _memory_unit.bias_hh_l0: 0.00020882341777905822\n", + "Grad _memory_unit.weight_ih_l1: 5.948491889284924e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0006676050252281129\n", + "Grad _memory_unit.bias_hh_l1: 0.0003717634826898575\n", + "Data X Sample: tensor([[2.6829, 2.2867, 1.8587, 1.9788, 2.1428, 2.3174, 3.0613, 3.9721, 4.2107,\n", + " 4.2084, 4.2255, 4.2709, 3.9925, 3.8361, 3.9140, 3.6910, 3.6463, 3.6037,\n", + " 3.5622, 3.5056, 3.4571, 3.3971, 3.0291, 2.8573, 2.7852, 2.8470, 2.8131,\n", + " 2.8876, 2.8621, 3.0491, 3.1426, 3.1060, 3.3265, 2.4899, 4.1277, 4.4680,\n", + " 4.7884, 5.2740, 5.8187, 5.7963, 1.3936, 0.7567, 0.6407, 1.1654, 1.7046,\n", + " 1.8813, 1.2306, 1.7359]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1825, -0.1942, 0.0936, -0.5645, 1.5042, 0.5363, 0.2014, 0.3462,\n", + " 0.4067, 0.1360, 0.1843, 0.2151, -0.8627, -0.2756, 0.1475, -0.5603,\n", + " -1.0160, -0.6121, -0.9323, -0.5928, -0.9395, 0.3192, -0.6058, 0.8635,\n", + " 0.4354, -0.0066, 0.3440, -0.2615, -0.9828, 0.0911, -0.1473, 0.8262,\n", + " -0.3456, 0.1143, -0.8171, -0.9583, 0.4717, -0.7231, 0.0000, 0.1501,\n", + " 0.2458, 0.2184, 0.8216]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1921, -0.2205, -0.0556, -0.1767, 0.0076, 0.0830, 0.1047, 0.2301,\n", + " 0.1357, 0.1653, 0.1464, -0.1065, -0.1179, -0.2093, -0.1021, -0.2225,\n", + " -0.1754, -0.0450, -0.0688, -0.0825, -0.0580, -0.0530, -0.0198, -0.0521,\n", + " -0.0350, 0.0330, 0.0162, -0.0153, -0.1232, -0.1552, -0.1283, -0.1158,\n", + " -0.2072, -0.2369, -0.1221, -0.0974, -0.0133, 0.0254, 0.0367, 0.2140,\n", + " 0.2704, 0.2560, 0.1956]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.001201916835270822\n", + "Grad encoder.fc1.bias: 0.0007070497376844287\n", + "Grad encoder.encoder.0.weight: 0.0002061326231341809\n", + "Grad encoder.encoder.0.bias: 0.0009725341806188226\n", + "Grad encoder.encoder.2.weight: 0.0001635542867006734\n", + "Grad encoder.encoder.2.bias: 0.0014454370830208063\n", + "Grad encoder.encoder.4.weight: 0.0004855940060224384\n", + "Grad encoder.encoder.4.bias: 0.00411633774638176\n", + "Grad decoder.fc1.0.weight: 0.00018080652807839215\n", + "Grad decoder.fc1.0.bias: 0.001063417992554605\n", + "Grad decoder.fc1.2.weight: 0.00016190727183129638\n", + "Grad decoder.fc1.2.bias: 0.002616869518533349\n", + "Grad decoder.fc1.4.weight: 0.00015660320059396327\n", + "Grad decoder.fc1.4.bias: 0.0015135837020352483\n", + "Grad decoder.fc2.weight: 0.00022236235963646322\n", + "Grad decoder.fc2.bias: 0.0025872874539345503\n", + "Grad _memory_unit.weight_ih_l0: 7.391341932816431e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00018696318147704005\n", + "Grad _memory_unit.bias_hh_l0: 0.0001288457278860733\n", + "Grad _memory_unit.weight_ih_l1: 3.297633520560339e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00044838828034698963\n", + "Grad _memory_unit.bias_hh_l1: 0.00024056629627011716\n", + "Data X Sample: tensor([[1.5223, 1.7391, 1.9249, 1.9438, 2.1924, 2.2305, 2.4235, 2.4716, 2.4288,\n", + " 2.5418, 2.6045, 2.7109, 2.5899, 2.4947, 2.3933, 2.4753, 2.4183, 2.5069,\n", + " 2.4574, 2.4083, 2.5002, 2.5398, 2.4242, 2.3744, 2.4568, 2.4787, 2.4269,\n", + " 2.4227, 2.2411, 2.3745, 2.3237, 2.3544, 2.2660, 1.4921, 1.9462, 1.7488,\n", + " 1.6145, 1.4523, 1.5846, 1.5065, 1.2552, 0.7050, 0.7053, 1.2744, 1.9147,\n", + " 1.9613, 1.2578, 1.9548]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6060, 0.2873, 0.1511, 0.4709, 2.2362, -1.2667, 0.7884, -0.4338,\n", + " 0.5201, 0.6041, 0.5401, 1.1612, 0.1914, 0.6523, -1.1621, -1.1641,\n", + " -0.6758, -0.3571, -1.5911, -1.6204, -0.2498, -1.4737, -0.3932, 0.1052,\n", + " -0.9827, -0.2516, -0.2804, -0.7465, -0.5096, -1.0890, 0.2629, 0.4450,\n", + " -1.0271, 1.0157, -0.8281, 1.0530, 0.8233, 0.0940, 0.0545, -0.1230,\n", + " -0.2044, 0.4130, -0.1550]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 4.8713e-01, 4.6767e-01, 1.7047e-01, 2.6101e-01, 1.5675e-01,\n", + " -2.1544e-01, -4.7326e-01, -5.3723e-01, -3.3279e-01, -4.3032e-01,\n", + " -4.0950e-01, 2.4768e-01, 2.5066e-01, 4.0630e-01, 2.8170e-01,\n", + " 4.1552e-01, 3.6130e-01, 1.5865e-01, 7.3819e-02, 1.0729e-01,\n", + " 5.7102e-02, 6.8708e-02, 9.6259e-02, 3.8133e-02, 7.4824e-02,\n", + " 1.0470e-04, -2.7792e-02, 2.9781e-02, 2.7528e-01, 4.0202e-01,\n", + " 3.2147e-01, 2.8324e-01, 3.9723e-01, 3.7346e-01, 2.1559e-01,\n", + " 3.6603e-01, 3.9698e-03, 1.3997e-02, 5.9635e-02, -4.2571e-01,\n", + " -4.1404e-01, -4.0792e-01, -4.1645e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 4.630206967703998e-05\n", + "Grad encoder.fc1.bias: 0.0001369689853163436\n", + "Grad encoder.encoder.0.weight: 1.2349201824690681e-05\n", + "Grad encoder.encoder.0.bias: 0.00014052950427867472\n", + "Grad encoder.encoder.2.weight: 1.235708077729214e-05\n", + "Grad encoder.encoder.2.bias: 0.0001763820182532072\n", + "Grad encoder.encoder.4.weight: 4.573558908305131e-05\n", + "Grad encoder.encoder.4.bias: 0.0005117987166158855\n", + "Grad decoder.fc1.0.weight: 2.0109160686843097e-05\n", + "Grad decoder.fc1.0.bias: 0.00016548208077438176\n", + "Grad decoder.fc1.2.weight: 3.4767632314469665e-05\n", + "Grad decoder.fc1.2.bias: 0.00022256255033425987\n", + "Grad decoder.fc1.4.weight: 4.263365553924814e-05\n", + "Grad decoder.fc1.4.bias: 0.00031610229052603245\n", + "Grad decoder.fc2.weight: 0.00010111407027579844\n", + "Grad decoder.fc2.bias: 0.0015462413430213928\n", + "Grad _memory_unit.weight_ih_l0: 5.343702014215523e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.0313194909249432e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.0690657290979289e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.5621093325535185e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.3383413867559284e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.2108168195700273e-05\n", + "Data X Sample: tensor([[1.3621, 1.3968, 1.6439, 1.8170, 2.0984, 3.9071, 4.1798, 4.2007, 4.2083,\n", + " 4.1278, 3.9400, 4.0294, 3.8793, 3.7353, 3.5231, 3.5297, 3.4482, 3.4277,\n", + " 3.3557, 3.2508, 3.1627, 3.1797, 2.7713, 2.6073, 2.6388, 2.7425, 2.7545,\n", + " 2.9121, 2.8204, 3.0033, 3.0166, 2.9650, 3.1593, 2.3251, 4.0003, 4.4437,\n", + " 4.9103, 5.3217, 5.9201, 5.8246, 0.9116, 0.5755, 0.5740, 1.0247, 1.5976,\n", + " 1.6983, 1.2306, 1.6811]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3109, -0.3581, 0.5493, -0.4383, -0.2144, 0.2490, -0.2536, 0.4137,\n", + " 0.9468, 0.3006, 0.6720, -0.0186, 0.8528, 0.0306, 1.3530, 0.1415,\n", + " 0.2169, -0.3867, -0.2208, -0.7921, 1.7517, -0.4940, -0.3143, 0.3598,\n", + " 2.6492, -1.1792, -0.7575, -0.0730, -0.6789, 0.1936, -0.1871, -0.1459,\n", + " -0.7811, -1.0014, 1.1195, 0.6114, -0.8282, 0.5210, 0.0000, 0.2562,\n", + " 0.2604, -0.3082, 0.4281]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2033, -0.2324, -0.0603, -0.1821, 0.0111, 0.0870, 0.1129, 0.2441,\n", + " 0.1415, 0.1724, 0.1601, -0.1110, -0.1242, -0.2194, -0.1087, -0.2261,\n", + " -0.1780, -0.0475, -0.0738, -0.0848, -0.0597, -0.0501, -0.0203, -0.0494,\n", + " -0.0328, 0.0367, 0.0143, -0.0202, -0.1301, -0.1610, -0.1367, -0.1236,\n", + " -0.2155, -0.2468, -0.1267, -0.1040, -0.0130, 0.0243, 0.0430, 0.2254,\n", + " 0.2793, 0.2702, 0.2068]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007466957322321832\n", + "Grad encoder.fc1.bias: 0.0006973752751946449\n", + "Grad encoder.encoder.0.weight: 0.00011385319521650672\n", + "Grad encoder.encoder.0.bias: 0.0009054190595634282\n", + "Grad encoder.encoder.2.weight: 9.716370550449938e-05\n", + "Grad encoder.encoder.2.bias: 0.0011921115219593048\n", + "Grad encoder.encoder.4.weight: 0.00032238796120509505\n", + "Grad encoder.encoder.4.bias: 0.003539003198966384\n", + "Grad decoder.fc1.0.weight: 0.00011461746180430055\n", + "Grad decoder.fc1.0.bias: 0.0007469415431842208\n", + "Grad decoder.fc1.2.weight: 9.27517976379022e-05\n", + "Grad decoder.fc1.2.bias: 0.0014830556465312839\n", + "Grad decoder.fc1.4.weight: 8.425411215284839e-05\n", + "Grad decoder.fc1.4.bias: 0.0006468219216912985\n", + "Grad decoder.fc2.weight: 0.00015277760394383222\n", + "Grad decoder.fc2.bias: 0.002066138433292508\n", + "Grad _memory_unit.weight_ih_l0: 4.3715965148294345e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.470862328773364e-05\n", + "Grad _memory_unit.bias_hh_l0: 6.16512552369386e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.7130318155977875e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00020166041213087738\n", + "Grad _memory_unit.bias_hh_l1: 0.00010972091695293784\n", + "Data X Sample: tensor([[2.7444, 2.8693, 2.8024, 2.6064, 2.7353, 3.3679, 3.8517, 3.9636, 3.9935,\n", + " 3.9872, 4.0542, 3.9242, 4.0235, 3.8389, 3.5130, 3.5693, 3.5536, 3.5380,\n", + " 3.4155, 3.3865, 3.2682, 3.2073, 2.9207, 2.8516, 2.7045, 2.8731, 2.7918,\n", + " 2.8509, 2.6851, 2.8330, 2.8591, 2.8379, 3.1593, 2.2931, 3.8410, 4.2321,\n", + " 4.4816, 4.8155, 5.3750, 5.3678, 1.9234, 1.0236, 0.9499, 1.7050, 2.3587,\n", + " 2.4302, 1.6453, 2.1816]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0875, 0.1159, 1.4104, -0.5010, 1.2116, -0.6497, 0.5020, 0.0446,\n", + " 0.2962, 0.3092, 0.1875, -0.0051, 0.0915, -0.2134, -0.2328, -0.3188,\n", + " -0.6649, -0.5736, -1.0995, -0.8111, 0.3804, -1.3625, -0.6110, -1.3601,\n", + " -0.9638, -1.0464, 0.5906, 0.5183, 0.8829, 0.5807, -0.3833, 1.4324,\n", + " 0.2603, -0.1199, -0.0060, -0.2065, -0.3338, -0.0597, 1.1574, 0.5320,\n", + " 0.2133, 0.2257, 0.6298]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1984, -0.2306, -0.0600, -0.1813, 0.0097, 0.0833, 0.1074, 0.2389,\n", + " 0.1401, 0.1714, 0.1560, -0.1091, -0.1206, -0.2126, -0.1071, -0.2213,\n", + " -0.1771, -0.0477, -0.0699, -0.0827, -0.0567, -0.0483, -0.0213, -0.0499,\n", + " -0.0333, 0.0362, 0.0155, -0.0170, -0.1273, -0.1596, -0.1339, -0.1196,\n", + " -0.2124, -0.2390, -0.1246, -0.1014, -0.0141, 0.0249, 0.0420, 0.2202,\n", + " 0.2759, 0.2640, 0.2033]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0010073145385831594\n", + "Grad encoder.fc1.bias: 0.0006115244468674064\n", + "Grad encoder.encoder.0.weight: 0.0001537680218461901\n", + "Grad encoder.encoder.0.bias: 0.0006921177264302969\n", + "Grad encoder.encoder.2.weight: 0.00013122125528752804\n", + "Grad encoder.encoder.2.bias: 0.001155239064246416\n", + "Grad encoder.encoder.4.weight: 0.0004101784434169531\n", + "Grad encoder.encoder.4.bias: 0.003586378414183855\n", + "Grad decoder.fc1.0.weight: 0.00011969175830017775\n", + "Grad decoder.fc1.0.bias: 0.000697663810569793\n", + "Grad decoder.fc1.2.weight: 8.427567081525922e-05\n", + "Grad decoder.fc1.2.bias: 0.0012881994480267167\n", + "Grad decoder.fc1.4.weight: 4.415561124915257e-05\n", + "Grad decoder.fc1.4.bias: 0.0006277284119278193\n", + "Grad decoder.fc2.weight: 6.563113129232079e-05\n", + "Grad decoder.fc2.bias: 0.0011851247400045395\n", + "Grad _memory_unit.weight_ih_l0: 5.260204852675088e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.968845941126347e-05\n", + "Grad _memory_unit.bias_hh_l0: 7.252696377690881e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.8048225683742203e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0003121732152067125\n", + "Grad _memory_unit.bias_hh_l1: 0.00016122600936796516\n", + "Data X Sample: tensor([[1.7228, 1.6837, 1.9549, 1.9723, 2.0763, 2.0802, 2.2293, 4.2574, 4.4182,\n", + " 4.3490, 4.4476, 4.3118, 4.1900, 4.0161, 3.9241, 3.9345, 3.8743, 3.7004,\n", + " 3.4816, 3.5651, 3.5185, 3.4798, 3.0219, 2.9833, 2.9748, 2.9906, 2.9836,\n", + " 2.9692, 3.0667, 3.2653, 3.1776, 3.3353, 3.6477, 2.7302, 4.5175, 4.9180,\n", + " 5.1246, 5.5576, 6.2180, 5.9949, 1.1884, 0.6990, 0.7033, 1.1281, 1.7680,\n", + " 1.8070, 1.3258, 1.8297]], device='cuda:0')\n", + "Data Y Sample: tensor([[-4.7577e-01, -8.4556e-01, -4.2243e-02, -5.0026e-02, -2.3271e-02,\n", + " 1.2162e-02, 1.1705e-01, 4.8268e-01, 3.3046e-01, 4.3564e-01,\n", + " 4.2182e-01, -2.0084e+00, 2.9767e-01, -8.5206e-02, 5.4909e-01,\n", + " -9.5210e-01, -9.4421e-01, -1.5440e+00, 1.4364e-01, 3.2130e+00,\n", + " -1.3454e+00, -1.8779e+00, -3.9532e-01, 9.0078e+00, -4.8035e-01,\n", + " -6.1292e-01, 7.9678e-02, -1.2193e-02, 6.1637e-01, 3.6419e-01,\n", + " 5.0081e-01, 4.5313e-01, -2.6040e-03, -7.3759e-01, -5.4542e-01,\n", + " 1.5666e-01, -1.0293e+00, -4.5922e-02, -5.9701e-01, 4.3396e-01,\n", + " 4.5387e-01, 4.4634e-01, 1.4452e+00]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2242, -0.2559, -0.0678, -0.1775, 0.0471, 0.1150, 0.1401, 0.2752,\n", + " 0.1768, 0.2039, 0.1927, -0.1277, -0.1413, -0.2529, -0.1236, -0.2508,\n", + " -0.1926, -0.0521, -0.0779, -0.0855, -0.0649, -0.0471, -0.0237, -0.0519,\n", + " -0.0315, 0.0390, -0.0028, -0.0484, -0.1662, -0.1968, -0.1671, -0.1451,\n", + " -0.2534, -0.2769, -0.1501, -0.1179, -0.0180, 0.0272, 0.0607, 0.2461,\n", + " 0.3017, 0.3050, 0.2386]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 6.198207847774029e-05\n", + "Grad encoder.fc1.bias: 0.0004081142833456397\n", + "Grad encoder.encoder.0.weight: 2.6926769351121038e-05\n", + "Grad encoder.encoder.0.bias: 0.0005576979601755738\n", + "Grad encoder.encoder.2.weight: 2.7137784854858182e-05\n", + "Grad encoder.encoder.2.bias: 0.0004975533811375499\n", + "Grad encoder.encoder.4.weight: 0.0001259294367628172\n", + "Grad encoder.encoder.4.bias: 0.0011475071078166366\n", + "Grad decoder.fc1.0.weight: 4.527340206550434e-05\n", + "Grad decoder.fc1.0.bias: 0.0002666642249096185\n", + "Grad decoder.fc1.2.weight: 5.994020466459915e-05\n", + "Grad decoder.fc1.2.bias: 0.000320469553116709\n", + "Grad decoder.fc1.4.weight: 6.97155628586188e-05\n", + "Grad decoder.fc1.4.bias: 0.0003569630207493901\n", + "Grad decoder.fc2.weight: 0.00010376924183219671\n", + "Grad decoder.fc2.bias: 0.0017579378327354789\n", + "Grad _memory_unit.weight_ih_l0: 1.3379509255173616e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.033826553495601e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.113189475494437e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.908432972821174e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.304112321231514e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.1818410207051784e-05\n", + "Data X Sample: tensor([[-0.0127, -0.0058, -0.0045, 0.0197, -0.0120, -0.0059, -0.0046, -0.0028,\n", + " 0.0098, -0.0016, -0.0159, -0.0019, -0.0089, -0.0055, -0.0151, 0.0041,\n", + " 0.0031, 0.0213, 0.0083, 0.0167, 0.0147, 0.0092, 0.0241, 0.0210,\n", + " 0.0075, 0.0209, 0.0453, 0.0367, -0.0173, 0.0426, 0.0280, 0.0276,\n", + " -0.0066, -0.0114, -0.0049, 0.0389, 0.0059, 0.0159, -0.0190, -0.0057,\n", + " 0.0239, 0.0080, 0.0121, 0.0057, -0.0079, 0.0343, 0.0068, -0.0469]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.7926, 1.1815, 0.8769, 1.9218, 0.0953, -0.2053, -1.0937, -1.2419,\n", + " -0.4797, -0.7992, -0.7234, -3.1234, -0.5254, 1.3656, 0.8619, 0.6217,\n", + " 0.5619, -0.7653, 0.0787, 1.1696, 0.3999, 0.5927, 2.5713, -0.0707,\n", + " 1.0668, 1.1208, 1.0646, -0.0104, 0.6430, 2.2340, 1.5403, 1.5328,\n", + " 1.2288, 0.5327, 0.1241, 1.2047, -0.3467, -0.1765, -0.0197, -0.8476,\n", + " -0.9268, -0.6461, -0.6288]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.7746, 0.5547, 0.1245, 0.1857, -0.5351, -0.6856, -1.1567, -0.9609,\n", + " -0.7934, -0.8356, -0.8598, 0.2842, 0.4050, 0.6755, 0.3580, 0.4994,\n", + " 0.3887, 0.1368, 0.0020, 0.2093, 0.0475, 0.0778, 0.0020, 0.1161,\n", + " 0.1414, 0.0211, 0.4121, 0.5333, 0.9897, 0.8772, 0.7490, 0.5820,\n", + " 0.6440, 0.5411, 0.3277, 0.4312, 0.0286, -0.0079, 0.0716, -0.7746,\n", + " -0.5783, -0.5054, -0.4731]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 9.131753904512152e-05\n", + "Grad encoder.fc1.bias: 0.00033774407347664237\n", + "Grad encoder.encoder.0.weight: 2.1216976165305823e-05\n", + "Grad encoder.encoder.0.bias: 0.00023904828412923962\n", + "Grad encoder.encoder.2.weight: 2.3067790607456118e-05\n", + "Grad encoder.encoder.2.bias: 0.0002622245519887656\n", + "Grad encoder.encoder.4.weight: 8.459521632175893e-05\n", + "Grad encoder.encoder.4.bias: 0.0006521054310724139\n", + "Grad decoder.fc1.0.weight: 3.348318932694383e-05\n", + "Grad decoder.fc1.0.bias: 0.00016043611685745418\n", + "Grad decoder.fc1.2.weight: 4.027296381536871e-05\n", + "Grad decoder.fc1.2.bias: 0.0001666510506765917\n", + "Grad decoder.fc1.4.weight: 4.210688348393887e-05\n", + "Grad decoder.fc1.4.bias: 0.00024317052157130092\n", + "Grad decoder.fc2.weight: 9.941132884705439e-05\n", + "Grad decoder.fc2.bias: 0.0017431055894121528\n", + "Grad _memory_unit.weight_ih_l0: 1.1079374417022336e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.781355917453766e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.937447814270854e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.771418394331704e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.4302476453594863e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.2359765353030525e-05\n", + "Data X Sample: tensor([[1.2794, 1.3618, 1.4560, 1.5874, 1.7484, 1.6854, 1.7132, 2.3438, 3.6127,\n", + " 3.9272, 3.9844, 3.7742, 3.7261, 3.3999, 3.3188, 3.2247, 3.1793, 3.3097,\n", + " 3.3784, 3.4721, 3.3933, 3.3649, 3.1520, 2.9451, 2.8302, 2.8000, 2.7679,\n", + " 2.8061, 2.8031, 2.8330, 2.9396, 2.8904, 3.2099, 2.3388, 3.6792, 4.1470,\n", + " 4.6409, 5.0620, 5.4130, 5.3593, 0.9402, 0.5078, 0.5800, 0.9013, 1.3914,\n", + " 1.5839, 1.1014, 1.6029]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0829, -0.2555, 0.5725, -0.1702, 0.3649, 0.8269, -0.0243, -0.2406,\n", + " 0.8171, 0.1852, 0.1846, 1.5123, -0.0608, -1.4033, 0.0021, -0.7320,\n", + " -1.5066, 0.7222, 0.3213, -0.0395, 1.0265, -0.7288, 0.9164, 0.2979,\n", + " 0.0671, 0.1524, -0.3590, -0.8929, 0.1789, 0.0829, 0.8786, -0.7660,\n", + " -0.2348, 0.6759, 0.3156, -0.2920, -0.4493, -0.5953, 0.5906, -0.1660,\n", + " -0.4763, 0.0717, 0.3689]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2079, -0.2477, -0.0655, -0.1690, 0.0519, 0.1134, 0.1271, 0.2577,\n", + " 0.1787, 0.2044, 0.1801, -0.1239, -0.1334, -0.2379, -0.1188, -0.2440,\n", + " -0.1924, -0.0521, -0.0665, -0.0787, -0.0569, -0.0442, -0.0282, -0.0569,\n", + " -0.0316, 0.0377, -0.0053, -0.0471, -0.1636, -0.2003, -0.1603, -0.1356,\n", + " -0.2500, -0.2573, -0.1506, -0.1123, -0.0213, 0.0303, 0.0587, 0.2277,\n", + " 0.2910, 0.2889, 0.2295]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0029221102595329285\n", + "Grad encoder.fc1.bias: 0.002084295963868499\n", + "Grad encoder.encoder.0.weight: 0.0004208840546198189\n", + "Grad encoder.encoder.0.bias: 0.0023701870813965797\n", + "Grad encoder.encoder.2.weight: 0.0003340445691719651\n", + "Grad encoder.encoder.2.bias: 0.003597906092181802\n", + "Grad encoder.encoder.4.weight: 0.0010915277525782585\n", + "Grad encoder.encoder.4.bias: 0.0114622563123703\n", + "Grad decoder.fc1.0.weight: 0.00033347855787724257\n", + "Grad decoder.fc1.0.bias: 0.002236943459138274\n", + "Grad decoder.fc1.2.weight: 0.00024168357776943594\n", + "Grad decoder.fc1.2.bias: 0.005314793437719345\n", + "Grad decoder.fc1.4.weight: 0.00011938849638681859\n", + "Grad decoder.fc1.4.bias: 0.0019156612688675523\n", + "Grad decoder.fc2.weight: 0.0001735647238092497\n", + "Grad decoder.fc2.bias: 0.002304615918546915\n", + "Grad _memory_unit.weight_ih_l0: 0.00014977609680499882\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00036012870259582996\n", + "Grad _memory_unit.bias_hh_l0: 0.0002534069062676281\n", + "Grad _memory_unit.weight_ih_l1: 6.462230521719903e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0009707009303383529\n", + "Grad _memory_unit.bias_hh_l1: 0.0005015258211642504\n", + "Data X Sample: tensor([[2.4325, 2.8970, 3.1435, 3.3760, 3.5344, 3.6390, 3.7900, 3.8159, 4.0277,\n", + " 4.0994, 4.0764, 3.9826, 3.9037, 3.7789, 3.6744, 3.6035, 3.4844, 3.5244,\n", + " 3.5147, 3.5111, 3.3418, 3.1889, 3.0195, 2.8382, 2.8509, 2.9253, 2.9330,\n", + " 2.8999, 2.7372, 2.9149, 2.9571, 2.9954, 3.1175, 2.1901, 3.6056, 3.9937,\n", + " 4.2063, 4.4948, 5.1658, 5.0444, 1.9854, 1.1809, 1.1479, 1.9662, 2.9969,\n", + " 3.2308, 2.2029, 3.1824]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1483, -0.0508, -0.5992, 0.0169, 0.5795, 0.0822, 0.1457, 0.2076,\n", + " 0.0657, 0.1909, -0.0603, -0.7395, -1.0646, 0.4429, 0.5347, 0.3061,\n", + " -0.0618, -3.8906, 0.2426, -1.1217, 0.3616, 0.1606, 0.7810, 0.3590,\n", + " 0.5481, 0.9064, 0.3578, -0.6637, -0.3079, -0.0670, 0.6762, -0.8673,\n", + " 1.1819, 0.2548, 0.5057, 1.2199, -0.8958, -0.3631, -0.7766, 0.1852,\n", + " 0.2548, -0.1449, 0.0352]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1805, -0.2225, -0.0584, -0.1746, 0.0111, 0.0791, 0.0898, 0.2180,\n", + " 0.1405, 0.1717, 0.1429, -0.1048, -0.1105, -0.1921, -0.1024, -0.2088,\n", + " -0.1773, -0.0479, -0.0577, -0.0737, -0.0461, -0.0421, -0.0264, -0.0536,\n", + " -0.0319, 0.0365, 0.0141, -0.0122, -0.1202, -0.1600, -0.1244, -0.1069,\n", + " -0.2049, -0.2124, -0.1213, -0.0972, -0.0201, 0.0270, 0.0405, 0.2002,\n", + " 0.2635, 0.2451, 0.1916]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 4.416790761752054e-05\n", + "Grad encoder.fc1.bias: 0.00017104553990066051\n", + "Grad encoder.encoder.0.weight: 1.3223969290265813e-05\n", + "Grad encoder.encoder.0.bias: 0.00012582415365613997\n", + "Grad encoder.encoder.2.weight: 1.164234163297806e-05\n", + "Grad encoder.encoder.2.bias: 0.0001738322025630623\n", + "Grad encoder.encoder.4.weight: 3.1593208404956385e-05\n", + "Grad encoder.encoder.4.bias: 0.00034707924351096153\n", + "Grad decoder.fc1.0.weight: 1.6035530279623345e-05\n", + "Grad decoder.fc1.0.bias: 0.00017437600763514638\n", + "Grad decoder.fc1.2.weight: 2.2757963961339556e-05\n", + "Grad decoder.fc1.2.bias: 0.00015297270147129893\n", + "Grad decoder.fc1.4.weight: 2.724445403146092e-05\n", + "Grad decoder.fc1.4.bias: 0.00021194492001086473\n", + "Grad decoder.fc2.weight: 7.633552013430744e-05\n", + "Grad decoder.fc2.bias: 0.0019980298820883036\n", + "Grad _memory_unit.weight_ih_l0: 2.7108201265946263e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.3160024536773562e-05\n", + "Grad _memory_unit.bias_hh_l0: 6.812007541157072e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.319594275628333e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.921853203792125e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.9697428797371686e-05\n", + "Data X Sample: tensor([[1.4746, 1.7041, 1.8317, 1.9460, 2.0353, 2.0582, 2.1615, 2.2331, 2.2140,\n", + " 2.2511, 2.3221, 2.3565, 2.1838, 2.1594, 2.2243, 2.2414, 2.2359, 2.2032,\n", + " 2.3025, 2.3265, 2.3137, 2.4035, 2.4122, 2.4393, 2.4286, 2.5518, 2.5920,\n", + " 2.5899, 2.1995, 2.3384, 2.3202, 2.4013, 2.3232, 1.4807, 2.0026, 1.8023,\n", + " 1.6558, 1.4656, 1.5529, 1.5235, 1.2170, 0.7309, 0.7094, 1.2601, 1.8790,\n", + " 1.9899, 1.3802, 1.9313]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5332, -0.7554, 0.1180, -0.3271, 0.9108, -0.3129, 0.7703, -0.4454,\n", + " 0.5493, 0.4229, 0.8134, 0.4855, -1.5938, -0.2018, 0.5103, -1.1863,\n", + " 0.7955, -0.1618, 0.3789, 0.4656, -2.5773, -0.2223, 1.1678, -0.0350,\n", + " 0.0154, -0.1304, -0.6187, 0.5546, -0.5797, -0.1584, 0.8146, 0.3495,\n", + " -1.3282, -0.7250, 1.0991, -0.3458, 0.4246, 0.0000, -0.4768, 0.2797,\n", + " 0.4763, -0.3429, 0.6244]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2879, 0.2162, 0.0631, 0.1336, 0.0818, -0.1365, -0.3139, -0.3147,\n", + " -0.1918, -0.2389, -0.2584, 0.1482, 0.1489, 0.2720, 0.1689, 0.2295,\n", + " 0.1516, 0.1059, 0.0437, 0.0734, 0.0224, 0.0727, 0.0820, 0.0432,\n", + " 0.0363, -0.0104, 0.0317, 0.0628, 0.1916, 0.2400, 0.2105, 0.1839,\n", + " 0.2040, 0.2129, 0.1147, 0.2316, -0.0063, 0.0191, 0.0634, -0.2497,\n", + " -0.1890, -0.2114, -0.2343]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 7.931164873298258e-05\n", + "Grad encoder.fc1.bias: 0.00034661247627809644\n", + "Grad encoder.encoder.0.weight: 1.742010317684617e-05\n", + "Grad encoder.encoder.0.bias: 0.00042258267058059573\n", + "Grad encoder.encoder.2.weight: 1.9778735804720782e-05\n", + "Grad encoder.encoder.2.bias: 0.00037804225576110184\n", + "Grad encoder.encoder.4.weight: 9.798475366551429e-05\n", + "Grad encoder.encoder.4.bias: 0.0012570430990308523\n", + "Grad decoder.fc1.0.weight: 3.29625909216702e-05\n", + "Grad decoder.fc1.0.bias: 0.00026478813379071653\n", + "Grad decoder.fc1.2.weight: 4.518497735261917e-05\n", + "Grad decoder.fc1.2.bias: 0.00030696080648340285\n", + "Grad decoder.fc1.4.weight: 5.135927858646028e-05\n", + "Grad decoder.fc1.4.bias: 0.0003997091553173959\n", + "Grad decoder.fc2.weight: 9.010222856886685e-05\n", + "Grad decoder.fc2.bias: 0.0018671108409762383\n", + "Grad _memory_unit.weight_ih_l0: 1.3579055121226702e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.201195745030418e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.715748269110918e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.959709829359781e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.530488023301587e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.830319812754169e-05\n", + "Data X Sample: tensor([[1.6093, 1.7478, 1.8993, 2.0160, 2.1224, 2.2983, 2.3865, 2.4872, 2.4849,\n", + " 2.5876, 2.5601, 2.5765, 2.5211, 2.5383, 2.4740, 2.3467, 2.3208, 2.4934,\n", + " 2.5317, 2.4530, 2.4757, 2.4984, 2.4026, 2.3897, 2.4267, 2.4656, 2.4482,\n", + " 2.3900, 2.2480, 2.3941, 2.3657, 2.2493, 2.2220, 1.4715, 1.9732, 1.7488,\n", + " 1.6322, 1.4788, 1.6163, 1.5491, 1.1216, 0.7448, 0.7033, 1.1826, 1.8632,\n", + " 1.9957, 1.3734, 1.8532]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7446, 0.6665, 0.4538, 1.0808, -0.4696, -0.7263, -1.3214, -1.2093,\n", + " -1.0193, -0.8851, -0.9036, 1.3671, 1.2682, 0.9561, -0.2774, -0.2369,\n", + " 0.4494, 0.3646, 0.2320, 0.9350, 0.3351, 1.4632, 0.3667, 0.2241,\n", + " -0.5017, 0.1667, 0.6264, -0.6461, -0.3480, 1.1957, 0.6594, 0.4270,\n", + " 1.4064, 0.3034, -0.0891, -0.0659, -0.6687, 0.1005, 0.0000, -0.8207,\n", + " -0.6665, -0.6980, -0.6511]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2581, 0.1808, 0.0485, 0.1148, 0.0691, -0.1197, -0.2882, -0.2809,\n", + " -0.1631, -0.2031, -0.2284, 0.1320, 0.1298, 0.2414, 0.1461, 0.1911,\n", + " 0.1218, 0.0954, 0.0392, 0.0663, 0.0206, 0.0627, 0.0735, 0.0407,\n", + " 0.0305, -0.0033, 0.0344, 0.0671, 0.1712, 0.2078, 0.1905, 0.1688,\n", + " 0.1771, 0.1898, 0.1020, 0.2047, -0.0125, 0.0157, 0.0543, -0.2222,\n", + " -0.1547, -0.1773, -0.1989]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 9.239038627129048e-05\n", + "Grad encoder.fc1.bias: 0.00045777004561387\n", + "Grad encoder.encoder.0.weight: 2.188203507103026e-05\n", + "Grad encoder.encoder.0.bias: 0.0005603526951745152\n", + "Grad encoder.encoder.2.weight: 2.4818418751237914e-05\n", + "Grad encoder.encoder.2.bias: 0.00047475710744038224\n", + "Grad encoder.encoder.4.weight: 0.00011105075100203976\n", + "Grad encoder.encoder.4.bias: 0.001414584694430232\n", + "Grad decoder.fc1.0.weight: 4.235510277794674e-05\n", + "Grad decoder.fc1.0.bias: 0.00035417996696196496\n", + "Grad decoder.fc1.2.weight: 5.4908774473005906e-05\n", + "Grad decoder.fc1.2.bias: 0.00038035467150621116\n", + "Grad decoder.fc1.4.weight: 5.969136691419408e-05\n", + "Grad decoder.fc1.4.bias: 0.00047345785424113274\n", + "Grad decoder.fc2.weight: 0.00012450515350792557\n", + "Grad decoder.fc2.bias: 0.0016872730338945985\n", + "Grad _memory_unit.weight_ih_l0: 1.6291682186420076e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.5820881243562326e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.933599716925528e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.7999233174778055e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001132651450461708\n", + "Grad _memory_unit.bias_hh_l1: 5.7392462622374296e-05\n", + "Data X Sample: tensor([[-0.0011, -0.0044, -0.0030, 0.0087, -0.0051, -0.0029, 0.0031, 0.0028,\n", + " -0.0122, 0.0111, 0.0095, 0.0117, 0.0067, 0.0164, 0.0076, -0.0068,\n", + " 0.0079, 0.0213, 0.0021, 0.0112, 0.0147, 0.0092, 0.0145, 0.0057,\n", + " 0.0150, 0.0261, 0.0773, 0.0612, -0.0069, 0.0066, -0.0175, 0.0193,\n", + " -0.0088, 0.0046, 0.0098, 0.0462, 0.0079, 0.0186, 0.0063, -0.0255,\n", + " 0.0191, 0.0100, 0.0202, 0.0057, 0.0159, 0.0172, 0.0408, -0.0235]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.1003e-01, 1.6922e-02, -1.4864e-03, -1.4421e+00, -2.9638e+00,\n", + " -2.1367e+00, -3.0840e+00, -2.7229e+00, -1.7699e+00, -1.7456e+00,\n", + " -1.5235e+00, 3.4040e-01, 1.5185e+00, 8.3073e-01, 1.0414e+00,\n", + " 1.1954e+00, 1.6853e-01, -7.6667e-01, -4.6717e-01, 4.6098e-01,\n", + " -1.7474e-01, 1.4275e-01, 3.4252e-01, 3.6173e-03, 2.9673e-01,\n", + " 5.8774e-02, 3.6965e-02, 6.2265e-01, 1.6565e+00, 1.8916e+00,\n", + " 1.2692e+00, 5.9963e-01, 1.0301e+00, 1.5136e+00, 1.3665e-01,\n", + " -1.4756e-01, 4.8520e-01, 9.3114e-01, -8.4372e-01, -1.4565e+00,\n", + " -1.1776e+00, -6.5248e-01, 2.2275e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.9836, 0.6937, 0.1187, 0.3138, -0.7425, -0.8667, -1.5120, -1.2674,\n", + " -1.0053, -1.0499, -1.0564, 0.3861, 0.5097, 0.8577, 0.4364, 0.5960,\n", + " 0.4715, 0.1720, -0.0269, 0.3174, 0.0824, 0.1407, -0.0065, 0.1847,\n", + " 0.2199, 0.0740, 0.5479, 0.7406, 1.2923, 1.1038, 1.0124, 0.7598,\n", + " 0.8507, 0.7067, 0.4637, 0.4977, 0.0323, -0.0439, 0.0902, -0.9878,\n", + " -0.7321, -0.6081, -0.5556]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00026727814110927284\n", + "Grad encoder.fc1.bias: 0.0008832664461806417\n", + "Grad encoder.encoder.0.weight: 4.854859798797406e-05\n", + "Grad encoder.encoder.0.bias: 0.0006152503774501383\n", + "Grad encoder.encoder.2.weight: 3.891807500622235e-05\n", + "Grad encoder.encoder.2.bias: 0.0005954147782176733\n", + "Grad encoder.encoder.4.weight: 0.00011725326476152986\n", + "Grad encoder.encoder.4.bias: 0.0012255553156137466\n", + "Grad decoder.fc1.0.weight: 5.719056207453832e-05\n", + "Grad decoder.fc1.0.bias: 0.0005133751546964049\n", + "Grad decoder.fc1.2.weight: 5.206893911235966e-05\n", + "Grad decoder.fc1.2.bias: 0.0011114891385659575\n", + "Grad decoder.fc1.4.weight: 5.822658204124309e-05\n", + "Grad decoder.fc1.4.bias: 0.000527571770362556\n", + "Grad decoder.fc2.weight: 0.00018382268899586052\n", + "Grad decoder.fc2.bias: 0.0017322177300229669\n", + "Grad _memory_unit.weight_ih_l0: 2.1146983272046782e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.212781878886744e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.4637053835904226e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0984984328388236e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00015475657710339874\n", + "Grad _memory_unit.bias_hh_l1: 8.409798465436324e-05\n", + "Data X Sample: tensor([[1.5106, 1.7755, 2.0000, 2.0029, 2.1770, 2.1274, 2.1492, 2.2430, 2.2604,\n", + " 2.3238, 2.3665, 2.3156, 2.3413, 2.2330, 2.2823, 2.3850, 2.3507, 2.2826,\n", + " 2.3231, 2.3767, 2.4364, 2.5183, 2.4556, 2.4622, 2.6107, 2.5649, 2.6293,\n", + " 2.5613, 2.4041, 2.4400, 2.4252, 2.4511, 2.1054, 1.3891, 1.8751, 1.7731,\n", + " 1.6263, 1.4762, 1.5846, 1.5718, 1.3268, 0.7209, 0.7215, 1.2716, 1.8473,\n", + " 1.9613, 1.3190, 1.9079]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4021, 0.6851, 1.0738, -0.4961, 1.4314, 0.7263, -0.1180, -0.2666,\n", + " -0.7558, -0.5176, -0.6356, -0.7489, 0.0369, -1.2767, -1.7985, 1.2490,\n", + " -0.5688, 0.5126, -0.7181, -1.5253, -0.5340, 0.5348, -0.6347, -0.4536,\n", + " 0.1291, -0.7723, -0.2855, 0.4397, 0.3710, 0.9326, -0.2517, 1.0304,\n", + " -0.0122, 0.6109, -0.6256, 1.3940, 0.0000, -0.7725, 1.1604, -0.4129,\n", + " -0.4905, -0.3745, -0.8282]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2338, 0.1435, 0.0278, 0.1062, 0.0548, -0.1055, -0.2711, -0.2623,\n", + " -0.1398, -0.1708, -0.2012, 0.1211, 0.1161, 0.2160, 0.1238, 0.1556,\n", + " 0.0904, 0.0905, 0.0334, 0.0598, 0.0159, 0.0567, 0.0697, 0.0451,\n", + " 0.0228, 0.0023, 0.0361, 0.0756, 0.1595, 0.1881, 0.1780, 0.1609,\n", + " 0.1572, 0.1795, 0.0951, 0.1811, -0.0227, 0.0125, 0.0466, -0.1997,\n", + " -0.1264, -0.1456, -0.1632]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006262038368731737\n", + "Grad encoder.fc1.bias: 0.0004421166086103767\n", + "Grad encoder.encoder.0.weight: 8.658748993184417e-05\n", + "Grad encoder.encoder.0.bias: 0.0005587100167758763\n", + "Grad encoder.encoder.2.weight: 8.018377411644906e-05\n", + "Grad encoder.encoder.2.bias: 0.000993414781987667\n", + "Grad encoder.encoder.4.weight: 0.00028757183463312685\n", + "Grad encoder.encoder.4.bias: 0.0031106597743928432\n", + "Grad decoder.fc1.0.weight: 0.00010801830649143085\n", + "Grad decoder.fc1.0.bias: 0.0007631219923496246\n", + "Grad decoder.fc1.2.weight: 8.64953181007877e-05\n", + "Grad decoder.fc1.2.bias: 0.001822298625484109\n", + "Grad decoder.fc1.4.weight: 8.621523011242971e-05\n", + "Grad decoder.fc1.4.bias: 0.0009229435818269849\n", + "Grad decoder.fc2.weight: 0.00016540767683181912\n", + "Grad decoder.fc2.bias: 0.001777341589331627\n", + "Grad _memory_unit.weight_ih_l0: 3.950025711674243e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.677765046944842e-05\n", + "Grad _memory_unit.bias_hh_l0: 7.016486779320985e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.999099549720995e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00023855955805629492\n", + "Grad _memory_unit.bias_hh_l1: 0.00013129538274370134\n", + "Data X Sample: tensor([[ 0.0106, 0.0146, 0.0180, 0.0219, 0.0120, 0.0354, 0.0200, 0.0185,\n", + " 0.0195, 0.0348, 0.0381, 0.0292, 0.0222, 0.0273, 0.0101, 0.0178,\n", + " -0.1258, -0.1335, -0.1838, -0.1525, -0.1791, -0.1163, -0.1735, -0.1603,\n", + " -0.1389, -0.2899, -0.2771, -0.4650, -0.0347, -0.0721, -0.0665, -0.0359,\n", + " -0.0264, -0.0664, -0.0196, 0.0122, 0.0020, -0.0106, -0.0570, 0.0057,\n", + " -0.0095, 0.0179, 0.0121, -0.0115, -0.0079, -0.0172, 0.0272, 0.0156]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.1906, 0.7850, 1.1740, 0.4628, 1.7698, -0.7261, -1.6269, -1.2355,\n", + " -0.8645, -0.9538, -0.7755, 0.4728, 0.0341, -0.1434, 0.8168, 0.7628,\n", + " 0.9682, -0.3115, -0.6447, -0.3010, -0.4667, -0.4076, -2.6531, -0.4457,\n", + " 0.1737, -0.9120, 0.5345, -3.2496, 1.2430, 2.1745, 0.8542, 0.6541,\n", + " 0.1926, 0.5460, 1.6901, 0.4628, 0.2522, 0.0000, 1.1574, -0.8791,\n", + " -0.6709, -0.9603, -0.6114]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5078, 0.3920, 0.1373, 0.3319, 0.0915, -0.2322, -0.5982, -0.6609,\n", + " -0.3103, -0.3716, -0.3423, 0.2985, 0.2895, 0.4694, 0.2645, 0.3806,\n", + " 0.3123, 0.2261, 0.0781, 0.1773, 0.0487, 0.1146, 0.0697, 0.1526,\n", + " 0.1217, 0.0556, 0.0425, 0.1864, 0.4242, 0.4509, 0.4328, 0.3574,\n", + " 0.4134, 0.4365, 0.2392, 0.3125, 0.0476, 0.0539, 0.0243, -0.4143,\n", + " -0.3664, -0.3782, -0.4047]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0013684481382369995\n", + "Grad encoder.fc1.bias: 0.0006831391947343946\n", + "Grad encoder.encoder.0.weight: 0.00021176331210881472\n", + "Grad encoder.encoder.0.bias: 0.0008503944845870137\n", + "Grad encoder.encoder.2.weight: 0.00018475718388799578\n", + "Grad encoder.encoder.2.bias: 0.0017476424109190702\n", + "Grad encoder.encoder.4.weight: 0.0006080422317609191\n", + "Grad encoder.encoder.4.bias: 0.00503458920866251\n", + "Grad decoder.fc1.0.weight: 0.00022492752759717405\n", + "Grad decoder.fc1.0.bias: 0.0015388181200250983\n", + "Grad decoder.fc1.2.weight: 0.0001782262697815895\n", + "Grad decoder.fc1.2.bias: 0.004157258663326502\n", + "Grad decoder.fc1.4.weight: 0.00016317827976308763\n", + "Grad decoder.fc1.4.bias: 0.0021295063197612762\n", + "Grad decoder.fc2.weight: 0.00026538074598647654\n", + "Grad decoder.fc2.bias: 0.0030226167291402817\n", + "Grad _memory_unit.weight_ih_l0: 9.064072219189256e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0002448899613227695\n", + "Grad _memory_unit.bias_hh_l0: 0.00016417964070569724\n", + "Grad _memory_unit.weight_ih_l1: 4.305399488657713e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.000593008182477206\n", + "Grad _memory_unit.bias_hh_l1: 0.0003180456697009504\n", + "Data X Sample: tensor([[1.6178, 1.8265, 2.0361, 2.2368, 2.3136, 2.5664, 2.6838, 2.6178, 2.7388,\n", + " 2.7487, 2.7663, 2.7479, 2.6742, 2.6092, 2.5799, 2.6503, 2.5834, 2.6675,\n", + " 2.6907, 2.5962, 2.5468, 2.6577, 2.5375, 2.5786, 2.5074, 2.5936, 2.6933,\n", + " 2.5246, 2.3243, 2.3908, 2.3342, 2.3626, 2.3430, 1.5013, 1.9536, 1.8534,\n", + " 1.7816, 1.6803, 1.6607, 1.6143, 1.2552, 0.7886, 0.7377, 1.3778, 1.9900,\n", + " 2.3044, 1.5026, 2.0095]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3347, 0.2708, -0.8270, 0.4695, 0.4008, -0.9323, -0.5043, -0.3544,\n", + " 0.1966, -0.3556, -0.3868, -0.5370, 0.1273, 0.5115, 0.5363, 0.6041,\n", + " 0.1413, -0.2423, 0.5688, 1.3381, 0.0835, 2.4540, -0.1239, -0.9415,\n", + " -1.0888, -1.3477, -0.6445, -0.2343, 0.4324, 0.0363, -0.1177, 0.9514,\n", + " 1.2381, 0.7537, 0.9689, 0.8678, -0.5862, 0.7672, -0.5750, -0.2058,\n", + " -0.2185, -0.3634, -0.3083]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2288, 0.1369, 0.0201, 0.1100, 0.0531, -0.1048, -0.2688, -0.2623,\n", + " -0.1281, -0.1572, -0.1890, 0.1165, 0.1131, 0.2108, 0.1168, 0.1485,\n", + " 0.0863, 0.0877, 0.0288, 0.0590, 0.0114, 0.0528, 0.0656, 0.0482,\n", + " 0.0228, 0.0151, 0.0316, 0.0761, 0.1548, 0.1794, 0.1769, 0.1593,\n", + " 0.1568, 0.1815, 0.0968, 0.1731, -0.0248, 0.0075, 0.0421, -0.1946,\n", + " -0.1209, -0.1392, -0.1505]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.002019553678110242\n", + "Grad encoder.fc1.bias: 0.0009526839712634683\n", + "Grad encoder.encoder.0.weight: 0.00026561124832369387\n", + "Grad encoder.encoder.0.bias: 0.0010175954084843397\n", + "Grad encoder.encoder.2.weight: 0.00021763864788226783\n", + "Grad encoder.encoder.2.bias: 0.0016718124970793724\n", + "Grad encoder.encoder.4.weight: 0.000598310783971101\n", + "Grad encoder.encoder.4.bias: 0.005043369717895985\n", + "Grad decoder.fc1.0.weight: 0.00019541445362847298\n", + "Grad decoder.fc1.0.bias: 0.0013013856951147318\n", + "Grad decoder.fc1.2.weight: 0.000130451750010252\n", + "Grad decoder.fc1.2.bias: 0.0025175497867166996\n", + "Grad decoder.fc1.4.weight: 7.96865060692653e-05\n", + "Grad decoder.fc1.4.bias: 0.001423657056875527\n", + "Grad decoder.fc2.weight: 0.00016497257456649095\n", + "Grad decoder.fc2.bias: 0.002996481489390135\n", + "Grad _memory_unit.weight_ih_l0: 6.069933078833856e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00013725785538554192\n", + "Grad _memory_unit.bias_hh_l0: 9.870583016891032e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.6461388188181445e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0004561851383186877\n", + "Grad _memory_unit.bias_hh_l1: 0.00023600459098815918\n", + "Data X Sample: tensor([[2.1365, 2.5999, 2.7543, 2.9037, 3.0683, 3.0762, 3.1676, 3.2594, 3.4028,\n", + " 3.3838, 3.4610, 3.4919, 3.3023, 3.2527, 3.1372, 3.3245, 3.2485, 3.2478,\n", + " 3.3267, 3.2526, 3.2486, 3.2670, 3.1183, 2.9432, 2.7983, 2.7477, 2.6320,\n", + " 2.6919, 2.3035, 2.2893, 2.1207, 2.1664, 2.2264, 1.5424, 2.3531, 2.5247,\n", + " 2.5761, 2.7112, 2.8143, 2.6981, 1.6656, 0.9778, 0.9862, 1.7050, 2.4618,\n", + " 2.8705, 1.7949, 2.6820]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3119, -0.4487, -1.0725, 0.0388, 0.9461, 0.3860, -0.0219, 0.1036,\n", + " 0.1106, 0.1395, 0.0982, -0.2452, -3.1173, -0.8882, 0.1035, 0.6209,\n", + " -0.1936, 0.3873, 0.1928, 0.3507, 0.5147, 0.9013, 0.3918, -1.6070,\n", + " -0.4330, 0.0334, -0.4463, 0.0398, -0.2422, -0.2718, 0.5290, 0.8968,\n", + " 0.0237, 0.1648, -0.7632, -1.1641, 0.4497, -0.4097, -0.7766, -0.0620,\n", + " -0.1017, 0.0803, 0.1541]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.0352, -0.0452, -0.0306, -0.0682, -0.0106, -0.0338, -0.0948, -0.0167,\n", + " 0.0041, 0.0084, -0.0422, -0.0112, -0.0125, 0.0238, 0.0045, -0.0430,\n", + " -0.0553, -0.0045, -0.0169, -0.0074, -0.0255, -0.0052, 0.0055, -0.0111,\n", + " -0.0117, 0.0403, 0.0385, 0.0336, 0.0329, 0.0029, 0.0240, 0.0330,\n", + " -0.0211, -0.0140, -0.0164, 0.0299, -0.0404, 0.0032, 0.0281, -0.0107,\n", + " 0.0731, 0.0547, 0.0307]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00013063766527920961\n", + "Grad encoder.fc1.bias: 0.00029520579846575856\n", + "Grad encoder.encoder.0.weight: 3.938673035008833e-05\n", + "Grad encoder.encoder.0.bias: 0.0004015582671854645\n", + "Grad encoder.encoder.2.weight: 3.86437532142736e-05\n", + "Grad encoder.encoder.2.bias: 0.00039665179792791605\n", + "Grad encoder.encoder.4.weight: 0.00011634860129561275\n", + "Grad encoder.encoder.4.bias: 0.000996013986878097\n", + "Grad decoder.fc1.0.weight: 6.046509224688634e-05\n", + "Grad decoder.fc1.0.bias: 0.00034686399158090353\n", + "Grad decoder.fc1.2.weight: 7.427179662045091e-05\n", + "Grad decoder.fc1.2.bias: 0.0011929624015465379\n", + "Grad decoder.fc1.4.weight: 0.00010371320240665227\n", + "Grad decoder.fc1.4.bias: 0.0010940185748040676\n", + "Grad decoder.fc2.weight: 0.00018876860849559307\n", + "Grad decoder.fc2.bias: 0.0025425818748772144\n", + "Grad _memory_unit.weight_ih_l0: 1.8159962564823218e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.252215098356828e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.778606333071366e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.814620170800481e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00012378637620713562\n", + "Grad _memory_unit.bias_hh_l1: 6.741991091985255e-05\n", + "Data X Sample: tensor([[2.1928, 2.7543, 3.0383, 3.0349, 3.4046, 3.4047, 3.5050, 3.6229, 3.5126,\n", + " 3.7360, 3.5022, 3.7976, 3.4687, 3.2227, 3.2104, 2.9074, 3.0127, 3.1762,\n", + " 3.0913, 3.0871, 3.0326, 3.1215, 2.9158, 2.9375, 2.8058, 2.7817, 2.6293,\n", + " 2.7612, 2.2862, 2.3155, 2.3062, 2.3101, 2.5125, 1.7347, 2.7306, 2.9649,\n", + " 3.2821, 3.7660, 4.2341, 4.0883, 1.8375, 1.0097, 1.0509, 1.9002, 2.5609,\n", + " 2.8591, 1.9309, 2.8775]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4656, -0.9575, -0.8122, -0.8582, -0.9967, -1.0748, -0.4784, 0.1189,\n", + " 0.0871, 0.1827, 1.0643, -0.1235, -0.5552, -0.2399, -0.3704, 0.4264,\n", + " -0.2709, -0.2389, -2.3555, -0.1919, 1.1258, -2.2071, -0.2483, 0.9260,\n", + " 3.0811, 1.0243, 0.6939, -0.1057, 0.4457, 0.6264, -0.7627, 0.9463,\n", + " -0.5870, -0.7789, -0.1534, 0.0835, 0.6121, -0.6378, -0.6018, 0.7728,\n", + " 0.9796, 1.6853, 0.0897]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1425, -0.1921, -0.0575, -0.1611, -0.0101, 0.0554, 0.0524, 0.1679,\n", + " 0.1212, 0.1530, 0.1055, -0.0927, -0.0879, -0.1443, -0.0929, -0.1757,\n", + " -0.1714, -0.0457, -0.0409, -0.0656, -0.0341, -0.0379, -0.0273, -0.0519,\n", + " -0.0265, 0.0444, 0.0214, 0.0079, -0.0842, -0.1317, -0.0931, -0.0776,\n", + " -0.1620, -0.1484, -0.0958, -0.0782, -0.0280, 0.0224, 0.0248, 0.1619,\n", + " 0.2287, 0.1928, 0.1536]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00015749444719403982\n", + "Grad encoder.fc1.bias: 0.003011858556419611\n", + "Grad encoder.encoder.0.weight: 4.9106321966974065e-05\n", + "Grad encoder.encoder.0.bias: 0.0022547896951436996\n", + "Grad encoder.encoder.2.weight: 4.5902903366368264e-05\n", + "Grad encoder.encoder.2.bias: 0.0014815698377788067\n", + "Grad encoder.encoder.4.weight: 0.0001818643359001726\n", + "Grad encoder.encoder.4.bias: 0.002491678111255169\n", + "Grad decoder.fc1.0.weight: 8.639368752483279e-05\n", + "Grad decoder.fc1.0.bias: 0.0007640690309926867\n", + "Grad decoder.fc1.2.weight: 0.00010892387945204973\n", + "Grad decoder.fc1.2.bias: 0.000642009952571243\n", + "Grad decoder.fc1.4.weight: 0.0001086265838239342\n", + "Grad decoder.fc1.4.bias: 0.0006697685457766056\n", + "Grad decoder.fc2.weight: 0.0001718732382869348\n", + "Grad decoder.fc2.bias: 0.002448399318382144\n", + "Grad _memory_unit.weight_ih_l0: 2.1748328435933217e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.164009391795844e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.269677108619362e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.291723133879714e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001700264838291332\n", + "Grad _memory_unit.bias_hh_l1: 8.76077901921235e-05\n", + "Data X Sample: tensor([[2.5354, 3.0223, 3.1946, 3.3760, 3.5498, 3.5918, 3.7900, 3.7663, 3.9007,\n", + " 3.9651, 3.9686, 3.8891, 3.8238, 3.7162, 3.6618, 3.6268, 3.5095, 3.5167,\n", + " 3.4816, 3.3958, 3.2412, 3.1644, 2.9448, 2.7810, 2.7796, 2.8652, 2.9037,\n", + " 2.8550, 2.7025, 2.9181, 2.8906, 2.9346, 2.9965, 2.1901, 3.5615, 3.9743,\n", + " 4.1768, 4.5717, 5.2229, 5.0728, 1.9186, 1.1192, 1.1115, 1.9691, 2.9612,\n", + " 3.1507, 2.2029, 3.2450]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.8526e-01, -3.9220e-01, -9.6428e-02, -2.7245e-01, -5.7511e-02,\n", + " -4.5793e-01, 4.8686e-01, 3.8740e-02, -1.1093e-01, 3.9928e-01,\n", + " 2.2120e-01, -3.6204e-02, 4.9070e-01, -1.9815e-01, -2.0498e-01,\n", + " 4.2723e-01, 7.1668e-01, 1.2357e-02, -9.0271e-01, 3.2797e-01,\n", + " -2.9795e-01, 5.9134e-01, -2.5738e-02, -7.6712e-01, 2.1425e-01,\n", + " -9.7648e-01, -7.9911e-01, 2.6275e-01, -3.8890e-01, -8.9876e-01,\n", + " 3.5650e-04, 1.8780e-01, 1.4364e-01, -7.0500e-01, -9.8818e-01,\n", + " -1.2723e-01, -7.7889e-01, 0.0000e+00, 4.4225e-01, 2.2467e-01,\n", + " 1.2155e-01, -7.0706e-02, 1.6651e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1596, -0.2031, -0.0624, -0.1652, -0.0036, 0.0652, 0.0672, 0.1862,\n", + " 0.1287, 0.1617, 0.1243, -0.1041, -0.0989, -0.1623, -0.1030, -0.1825,\n", + " -0.1751, -0.0475, -0.0502, -0.0690, -0.0392, -0.0369, -0.0249, -0.0485,\n", + " -0.0239, 0.0507, 0.0149, -0.0045, -0.0944, -0.1363, -0.1063, -0.0897,\n", + " -0.1710, -0.1644, -0.0998, -0.0880, -0.0297, 0.0188, 0.0315, 0.1803,\n", + " 0.2386, 0.2123, 0.1658]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00016944590606726706\n", + "Grad encoder.fc1.bias: 0.0005753529258072376\n", + "Grad encoder.encoder.0.weight: 4.019321204395965e-05\n", + "Grad encoder.encoder.0.bias: 0.000637727091088891\n", + "Grad encoder.encoder.2.weight: 4.083114617969841e-05\n", + "Grad encoder.encoder.2.bias: 0.0006175589514896274\n", + "Grad encoder.encoder.4.weight: 0.0001351591054117307\n", + "Grad encoder.encoder.4.bias: 0.001444326713681221\n", + "Grad decoder.fc1.0.weight: 6.12703588558361e-05\n", + "Grad decoder.fc1.0.bias: 0.0005148472264409065\n", + "Grad decoder.fc1.2.weight: 7.451870624208823e-05\n", + "Grad decoder.fc1.2.bias: 0.0003767230664379895\n", + "Grad decoder.fc1.4.weight: 6.815512460889295e-05\n", + "Grad decoder.fc1.4.bias: 0.000411809392971918\n", + "Grad decoder.fc2.weight: 0.0001297549606533721\n", + "Grad decoder.fc2.bias: 0.0020768367685377598\n", + "Grad _memory_unit.weight_ih_l0: 1.0572563041932881e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.8077301724115387e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.0313242202973925e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.5745082388748415e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010161576210521162\n", + "Grad _memory_unit.bias_hh_l1: 5.1735114539042115e-05\n", + "Data X Sample: tensor([[1.4449, 1.7813, 1.9098, 1.9854, 2.0643, 2.2556, 2.2124, 2.0088, 2.7730,\n", + " 3.9161, 4.4127, 4.2728, 4.1256, 4.0924, 3.8535, 3.6391, 3.5567, 3.5941,\n", + " 3.5787, 3.5167, 3.3590, 3.3802, 2.9062, 2.8859, 2.8903, 3.0742, 2.9996,\n", + " 3.2262, 3.2090, 3.4192, 3.4050, 3.3740, 4.0085, 2.8286, 4.7087, 4.9934,\n", + " 5.1718, 5.5443, 5.9011, 5.8927, 1.1932, 0.7388, 0.7073, 1.2113, 1.8394,\n", + " 1.8984, 1.3394, 1.7906]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 2.7563e-01, -1.4602e-01, -4.1528e-01, 2.9682e-01, -3.7514e-01,\n", + " 3.6930e-01, -1.3738e-02, 1.7893e-01, -7.5606e-03, 8.5634e-01,\n", + " -2.6387e-01, 3.2430e+00, -1.4119e-01, -1.1673e-01, 1.8008e-01,\n", + " -3.1473e-01, 7.2903e-01, 3.5412e-01, 6.4869e-02, 1.0850e+00,\n", + " 5.4487e-02, 6.7987e-01, 3.8608e-01, 8.2569e+00, 6.8791e-02,\n", + " 1.3733e+00, -1.1791e+00, 3.8615e-01, -1.3002e-01, -1.9982e-01,\n", + " -2.7188e-02, -4.2701e-01, -4.3759e-01, -5.5332e-01, -2.1683e+00,\n", + " -1.0964e+00, 1.0050e+00, -1.3986e-02, -4.7725e-01, 8.8987e-02,\n", + " -1.6615e-01, -2.1151e-01, -1.0410e+00]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1941, -0.2340, -0.0735, -0.1515, 0.0598, 0.1194, 0.1168, 0.2346,\n", + " 0.1871, 0.2121, 0.1765, -0.1374, -0.1312, -0.2224, -0.1306, -0.2263,\n", + " -0.1992, -0.0526, -0.0579, -0.0741, -0.0489, -0.0375, -0.0273, -0.0529,\n", + " -0.0205, 0.0596, -0.0208, -0.0598, -0.1545, -0.1941, -0.1582, -0.1291,\n", + " -0.2318, -0.2140, -0.1394, -0.1108, -0.0393, 0.0230, 0.0585, 0.2140,\n", + " 0.2706, 0.2682, 0.2134]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.002244483446702361\n", + "Grad encoder.fc1.bias: 0.0021788531448692083\n", + "Grad encoder.encoder.0.weight: 0.00026034750044345856\n", + "Grad encoder.encoder.0.bias: 0.002144619356840849\n", + "Grad encoder.encoder.2.weight: 0.00019141074153594673\n", + "Grad encoder.encoder.2.bias: 0.002749098464846611\n", + "Grad encoder.encoder.4.weight: 0.0005667054210789502\n", + "Grad encoder.encoder.4.bias: 0.007425582967698574\n", + "Grad decoder.fc1.0.weight: 0.00020044528355356306\n", + "Grad decoder.fc1.0.bias: 0.001729646697640419\n", + "Grad decoder.fc1.2.weight: 0.00011873221956193447\n", + "Grad decoder.fc1.2.bias: 0.00298788258805871\n", + "Grad decoder.fc1.4.weight: 0.00011505588190630078\n", + "Grad decoder.fc1.4.bias: 0.0015784513670951128\n", + "Grad decoder.fc2.weight: 0.00022066765814088285\n", + "Grad decoder.fc2.bias: 0.0025408947840332985\n", + "Grad _memory_unit.weight_ih_l0: 7.631057815160602e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0002608837967272848\n", + "Grad _memory_unit.bias_hh_l0: 0.0001614162465557456\n", + "Grad _memory_unit.weight_ih_l1: 4.16411021433305e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0005698278546333313\n", + "Grad _memory_unit.bias_hh_l1: 0.00029791274573653936\n", + "Data X Sample: tensor([[1.5340, 1.6633, 1.8242, 1.8761, 2.0438, 2.0788, 1.9474, 2.6476, 3.8519,\n", + " 4.3079, 4.3556, 4.4013, 4.0879, 4.1960, 3.8434, 3.6760, 3.6369, 3.6405,\n", + " 3.5663, 3.5948, 3.5945, 3.3894, 3.0821, 2.7504, 2.7927, 2.8313, 2.8371,\n", + " 2.8999, 2.9488, 3.0885, 3.1811, 3.3436, 3.7489, 2.7599, 4.5248, 4.7915,\n", + " 5.1482, 5.4012, 5.8947, 5.7764, 1.1788, 0.6651, 0.6588, 1.1883, 1.6293,\n", + " 1.8527, 1.1966, 1.6968]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2695, -0.7184, -0.7823, -1.1997, -0.5053, -0.5082, -0.1761, -0.2300,\n", + " 0.6616, 0.2800, 0.4363, -0.9976, 0.0944, -0.3098, -0.1800, -0.8307,\n", + " -0.3831, -3.4263, -0.4709, -0.0041, -0.1626, 1.4338, -1.4653, 0.7717,\n", + " 0.3556, 1.6569, 0.0855, -0.1162, 0.3308, 0.1733, -0.0627, -0.5470,\n", + " -0.8252, -0.2613, 0.2311, -0.7562, -0.0868, -0.7725, 1.0291, 0.5329,\n", + " 0.3156, 0.5641, 1.1640]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1920, -0.2314, -0.0732, -0.1465, 0.0656, 0.1227, 0.1188, 0.2329,\n", + " 0.1913, 0.2154, 0.1763, -0.1401, -0.1315, -0.2224, -0.1320, -0.2277,\n", + " -0.1991, -0.0526, -0.0558, -0.0740, -0.0480, -0.0369, -0.0277, -0.0538,\n", + " -0.0206, 0.0609, -0.0265, -0.0639, -0.1584, -0.1986, -0.1608, -0.1311,\n", + " -0.2341, -0.2121, -0.1425, -0.1096, -0.0414, 0.0256, 0.0589, 0.2113,\n", + " 0.2684, 0.2658, 0.2125]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007336011040024459\n", + "Grad encoder.fc1.bias: 0.0007321539451368153\n", + "Grad encoder.encoder.0.weight: 0.0001040404022205621\n", + "Grad encoder.encoder.0.bias: 0.0007446432719007134\n", + "Grad encoder.encoder.2.weight: 7.45891229598783e-05\n", + "Grad encoder.encoder.2.bias: 0.0008671724935993552\n", + "Grad encoder.encoder.4.weight: 0.00023507396690547466\n", + "Grad encoder.encoder.4.bias: 0.0019241208210587502\n", + "Grad decoder.fc1.0.weight: 9.28351582842879e-05\n", + "Grad decoder.fc1.0.bias: 0.0006596065359190106\n", + "Grad decoder.fc1.2.weight: 9.389467595610768e-05\n", + "Grad decoder.fc1.2.bias: 0.0015856409445405006\n", + "Grad decoder.fc1.4.weight: 8.752495341468602e-05\n", + "Grad decoder.fc1.4.bias: 0.0010466530220583081\n", + "Grad decoder.fc2.weight: 0.00016410803073085845\n", + "Grad decoder.fc2.bias: 0.0030132022220641375\n", + "Grad _memory_unit.weight_ih_l0: 2.6637522751116194e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.773433753754944e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.0760776503011584e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.2730275557260029e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00018299272051081061\n", + "Grad _memory_unit.bias_hh_l1: 9.635966853238642e-05\n", + "Data X Sample: tensor([[1.4523, 1.6473, 1.9489, 2.0663, 2.1036, 2.0920, 1.9104, 2.7285, 3.8519,\n", + " 4.4532, 4.4190, 4.5085, 4.2676, 4.1360, 3.8989, 3.7731, 3.7297, 3.6308,\n", + " 3.5580, 3.5242, 3.4964, 3.4093, 3.0556, 2.8478, 2.8753, 2.8940, 2.9090,\n", + " 3.0752, 2.9557, 3.1802, 3.3175, 3.4072, 3.8853, 2.8652, 4.6792, 4.9642,\n", + " 5.2820, 5.6318, 6.0849, 6.1367, 1.1836, 0.6870, 0.6750, 1.2257, 1.8037,\n", + " 1.9728, 1.2374, 1.9079]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4198, -0.9068, 0.1949, -0.0109, -0.0547, 1.4969, 0.0050, 0.2398,\n", + " -0.2409, 0.2097, 0.5440, 1.2336, 0.3313, 0.4837, 0.2102, -0.3133,\n", + " -1.0476, -0.3740, 2.2224, -0.6390, 0.1014, -1.8163, -0.2237, -0.3603,\n", + " 0.7847, 1.0778, -1.0945, -0.5783, -0.7704, -0.5510, -1.1109, -0.4490,\n", + " -0.6016, -0.3893, 0.8598, 0.2278, -0.0107, 0.7579, 0.9027, 0.3200,\n", + " 0.4897, 0.4854, 1.1306]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1995, -0.2363, -0.0747, -0.1432, 0.0782, 0.1340, 0.1301, 0.2422,\n", + " 0.2033, 0.2267, 0.1880, -0.1495, -0.1381, -0.2343, -0.1394, -0.2372,\n", + " -0.2039, -0.0542, -0.0579, -0.0759, -0.0504, -0.0348, -0.0284, -0.0543,\n", + " -0.0204, 0.0646, -0.0366, -0.0767, -0.1713, -0.2111, -0.1729, -0.1408,\n", + " -0.2466, -0.2215, -0.1518, -0.1141, -0.0445, 0.0270, 0.0663, 0.2190,\n", + " 0.2742, 0.2762, 0.2213]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 4.261128924554214e-05\n", + "Grad encoder.fc1.bias: 2.1752497559646145e-05\n", + "Grad encoder.encoder.0.weight: 6.46442458673846e-06\n", + "Grad encoder.encoder.0.bias: 1.6134303223225288e-05\n", + "Grad encoder.encoder.2.weight: 6.239322374312906e-06\n", + "Grad encoder.encoder.2.bias: 2.7172131012775935e-05\n", + "Grad encoder.encoder.4.weight: 2.022845364990644e-05\n", + "Grad encoder.encoder.4.bias: 9.370988118462265e-05\n", + "Grad decoder.fc1.0.weight: 1.111749679694185e-05\n", + "Grad decoder.fc1.0.bias: 5.680984759237617e-05\n", + "Grad decoder.fc1.2.weight: 3.1031555408844724e-05\n", + "Grad decoder.fc1.2.bias: 0.0001583846751600504\n", + "Grad decoder.fc1.4.weight: 4.1024402889888734e-05\n", + "Grad decoder.fc1.4.bias: 0.00033503901795484126\n", + "Grad decoder.fc2.weight: 9.381480776937678e-05\n", + "Grad decoder.fc2.bias: 0.0025917482562363148\n", + "Grad _memory_unit.weight_ih_l0: 1.0400999599369243e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.074681328347651e-06\n", + "Grad _memory_unit.bias_hh_l0: 2.2212495878193295e-06\n", + "Grad _memory_unit.weight_ih_l1: 5.298188625602052e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.411221001035301e-05\n", + "Grad _memory_unit.bias_hh_l1: 7.1409881456929725e-06\n", + "Data X Sample: tensor([[1.7026, 1.9779, 2.2164, 2.3330, 2.3921, 2.3749, 2.5375, 2.5255, 2.5777,\n", + " 2.5291, 2.6425, 2.5804, 2.6121, 2.5847, 2.5320, 2.5409, 2.4655, 2.5843,\n", + " 2.6453, 2.6352, 2.6916, 2.7587, 2.7520, 2.7638, 2.8115, 2.9097, 2.7066,\n", + " 2.8183, 2.5984, 2.7216, 2.4777, 2.5146, 2.2308, 1.4646, 1.9462, 1.8582,\n", + " 1.7069, 1.6776, 1.6733, 1.6569, 1.4270, 0.8245, 0.8165, 1.5328, 2.0614,\n", + " 2.3159, 1.5434, 2.1894]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.9070, 0.7363, 0.0410, 1.8709, 0.7365, 1.0836, -0.0392, 0.0760,\n", + " 0.1586, 0.0491, 0.1786, -0.3090, -1.2185, 0.3917, 0.0575, 0.0397,\n", + " -0.0577, -0.5523, 1.0235, -1.3533, 0.1718, -0.1080, -0.3598, -0.1119,\n", + " 0.2601, -0.5303, -1.4916, -0.1399, 0.2749, -0.9302, -1.1591, 0.5428,\n", + " 0.7488, 0.1098, -0.6116, -0.1678, 0.2171, -0.7928, -0.7130, 0.7558,\n", + " -0.0587, -0.5500, -0.9939]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4161, 0.3735, 0.0892, 0.3384, 0.1763, -0.1663, -0.4436, -0.5147,\n", + " -0.2335, -0.3109, -0.2793, 0.2312, 0.2118, 0.3623, 0.2241, 0.3546,\n", + " 0.2823, 0.1453, 0.0648, 0.1460, 0.0513, 0.1000, 0.1031, 0.1131,\n", + " 0.0696, 0.0795, -0.0525, 0.0681, 0.2441, 0.3481, 0.3270, 0.2680,\n", + " 0.3748, 0.3942, 0.2269, 0.2918, -0.0060, -0.0088, 0.0574, -0.3751,\n", + " -0.3384, -0.3413, -0.3134]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005561014986597002\n", + "Grad encoder.fc1.bias: 0.00025918034953065217\n", + "Grad encoder.encoder.0.weight: 0.00010950970317935571\n", + "Grad encoder.encoder.0.bias: 0.00034068984678015113\n", + "Grad encoder.encoder.2.weight: 6.446390761993825e-05\n", + "Grad encoder.encoder.2.bias: 0.00030377338407561183\n", + "Grad encoder.encoder.4.weight: 0.00020793438307009637\n", + "Grad encoder.encoder.4.bias: 0.0009161875932477415\n", + "Grad decoder.fc1.0.weight: 5.208339644013904e-05\n", + "Grad decoder.fc1.0.bias: 0.00020462773682083935\n", + "Grad decoder.fc1.2.weight: 6.193681474542245e-05\n", + "Grad decoder.fc1.2.bias: 0.0003440428408794105\n", + "Grad decoder.fc1.4.weight: 7.336495764320716e-05\n", + "Grad decoder.fc1.4.bias: 0.0005967902252450585\n", + "Grad decoder.fc2.weight: 9.839516133069992e-05\n", + "Grad decoder.fc2.bias: 0.002508714096620679\n", + "Grad _memory_unit.weight_ih_l0: 3.96855330109247e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.560308404208627e-06\n", + "Grad _memory_unit.bias_hh_l0: 4.168327905063052e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.8014247871178668e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.6173132432159036e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.261900772282388e-05\n", + "Data X Sample: tensor([[1.4777, 1.7653, 1.9985, 2.0466, 2.0114, 1.9609, 1.7980, 2.4716, 3.5736,\n", + " 4.1847, 4.3873, 4.3040, 4.1678, 3.9616, 3.9089, 3.6281, 3.6306, 3.5921,\n", + " 3.5498, 3.5688, 3.4767, 3.3282, 3.2002, 3.1684, 3.0630, 3.1238, 3.2740,\n", + " 3.1160, 3.1569, 3.4061, 3.3560, 3.6117, 3.9117, 2.8171, 4.5886, 4.7234,\n", + " 4.9339, 5.3509, 5.8884, 5.7225, 1.2313, 0.7329, 0.6912, 1.2859, 1.7561,\n", + " 1.9899, 1.2374, 1.8688]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2653, 0.3888, -0.0302, 1.1373, 0.7622, -0.0127, 0.3312, 0.5207,\n", + " -0.1508, 0.0725, 0.4687, -1.1475, -0.5240, -0.1974, 1.1456, -0.4892,\n", + " -0.9103, -0.9816, -0.5444, -1.3391, 0.4138, 0.4420, -0.3383, -0.7200,\n", + " 0.1176, 0.4286, 0.8699, -1.3067, -0.5775, 0.1694, -0.4519, -0.5054,\n", + " -1.0582, -0.1806, 0.6504, 0.8508, -0.5204, 0.4911, -0.1229, 0.2014,\n", + " 0.1916, 0.4087, 0.5126]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2014, -0.2364, -0.0733, -0.1375, 0.0870, 0.1420, 0.1381, 0.2452,\n", + " 0.2111, 0.2340, 0.1939, -0.1583, -0.1442, -0.2404, -0.1460, -0.2439,\n", + " -0.2072, -0.0565, -0.0587, -0.0781, -0.0537, -0.0322, -0.0302, -0.0572,\n", + " -0.0225, 0.0676, -0.0478, -0.0885, -0.1806, -0.2214, -0.1841, -0.1478,\n", + " -0.2545, -0.2248, -0.1582, -0.1159, -0.0479, 0.0319, 0.0738, 0.2221,\n", + " 0.2744, 0.2784, 0.2251]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006362912245094776\n", + "Grad encoder.fc1.bias: 0.0003960857284255326\n", + "Grad encoder.encoder.0.weight: 9.214866440743208e-05\n", + "Grad encoder.encoder.0.bias: 0.00046584761003032327\n", + "Grad encoder.encoder.2.weight: 8.351221913471818e-05\n", + "Grad encoder.encoder.2.bias: 0.0009774549398571253\n", + "Grad encoder.encoder.4.weight: 0.00023471398162655532\n", + "Grad encoder.encoder.4.bias: 0.0027194793801754713\n", + "Grad decoder.fc1.0.weight: 9.679279901320115e-05\n", + "Grad decoder.fc1.0.bias: 0.0007292446680366993\n", + "Grad decoder.fc1.2.weight: 9.64848295552656e-05\n", + "Grad decoder.fc1.2.bias: 0.002776233945041895\n", + "Grad decoder.fc1.4.weight: 0.00011048690066672862\n", + "Grad decoder.fc1.4.bias: 0.0014095241203904152\n", + "Grad decoder.fc2.weight: 0.00019991319277323782\n", + "Grad decoder.fc2.bias: 0.002958746859803796\n", + "Grad _memory_unit.weight_ih_l0: 4.1958137444453314e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0001439411280443892\n", + "Grad _memory_unit.bias_hh_l0: 8.949546463554725e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.053000935120508e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002756247413344681\n", + "Grad _memory_unit.bias_hh_l1: 0.00014799178461544216\n", + "Data X Sample: tensor([[1.4321, 1.6473, 1.7145, 1.7274, 1.9431, 2.0316, 2.2016, 2.0982, 3.9520,\n", + " 4.3237, 4.5301, 4.2066, 4.1589, 3.8661, 3.7803, 3.7457, 3.5803, 3.6037,\n", + " 3.5890, 3.4832, 3.5626, 3.4231, 3.0363, 2.9241, 2.8715, 2.9932, 2.8371,\n", + " 2.8550, 3.1084, 3.1212, 3.2510, 3.2718, 3.7775, 2.8354, 4.5861, 4.9690,\n", + " 5.2210, 5.4357, 6.0278, 5.9580, 1.0882, 0.6273, 0.6144, 1.1108, 1.6808,\n", + " 1.7212, 1.1422, 1.8297]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2421, -0.8724, -0.0023, -0.2368, 0.6044, 0.8354, 0.2856, 0.4306,\n", + " 0.4142, 0.1974, 0.0623, -0.8200, -1.2016, 0.4770, 0.3811, -0.7911,\n", + " -0.6157, 0.5608, -0.6992, -1.3893, -0.4698, -0.0755, -0.2932, -0.3696,\n", + " -0.5713, -0.1299, 0.2729, -1.9678, -0.8061, -0.5795, -0.5188, -0.4415,\n", + " -0.6223, 0.0583, 0.3323, 1.1164, 0.7329, 0.5269, 0.6434, 0.1914,\n", + " 0.4666, -0.3094, 0.7350]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2140, -0.2494, -0.0767, -0.1238, 0.1247, 0.1741, 0.1647, 0.2674,\n", + " 0.2459, 0.2642, 0.2192, -0.1786, -0.1618, -0.2716, -0.1615, -0.2713,\n", + " -0.2227, -0.0595, -0.0603, -0.0808, -0.0585, -0.0316, -0.0334, -0.0648,\n", + " -0.0241, 0.0712, -0.0704, -0.1230, -0.2164, -0.2600, -0.2171, -0.1702,\n", + " -0.2916, -0.2487, -0.1840, -0.1271, -0.0550, 0.0382, 0.0894, 0.2371,\n", + " 0.2898, 0.3044, 0.2506]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001897044712677598\n", + "Grad encoder.fc1.bias: 0.00033579362207092345\n", + "Grad encoder.encoder.0.weight: 2.418244184809737e-05\n", + "Grad encoder.encoder.0.bias: 0.00039509154157713056\n", + "Grad encoder.encoder.2.weight: 2.6942600015900098e-05\n", + "Grad encoder.encoder.2.bias: 0.0004914515884593129\n", + "Grad encoder.encoder.4.weight: 9.173506259685382e-05\n", + "Grad encoder.encoder.4.bias: 0.0007735826075077057\n", + "Grad decoder.fc1.0.weight: 4.329973671701737e-05\n", + "Grad decoder.fc1.0.bias: 0.00034536499879322946\n", + "Grad decoder.fc1.2.weight: 5.2616960601881146e-05\n", + "Grad decoder.fc1.2.bias: 0.0008796621696092188\n", + "Grad decoder.fc1.4.weight: 4.868019459536299e-05\n", + "Grad decoder.fc1.4.bias: 0.0004492673324421048\n", + "Grad decoder.fc2.weight: 0.000133417037432082\n", + "Grad decoder.fc2.bias: 0.0015669408021494746\n", + "Grad _memory_unit.weight_ih_l0: 1.345282817055704e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.598905459512025e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.3483768018195406e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.557974757015472e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.197716670110822e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.480956704355776e-05\n", + "Data X Sample: tensor([[1.5966, 1.8090, 1.8542, 2.0269, 2.1821, 2.3027, 2.4481, 2.4588, 2.4996,\n", + " 2.5544, 2.5505, 2.6057, 2.5544, 2.4865, 2.4462, 2.4192, 2.4372, 2.3251,\n", + " 2.3500, 2.5236, 2.4168, 2.5015, 2.4676, 2.3744, 2.4230, 2.4238, 2.4455,\n", + " 2.4104, 2.3070, 2.3090, 2.2922, 2.2742, 2.2022, 1.4829, 1.9315, 1.8339,\n", + " 1.6990, 1.5636, 1.5909, 1.5746, 1.1884, 0.6731, 0.6892, 1.1482, 1.7442,\n", + " 2.1329, 1.3462, 1.8844]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5382, 0.4410, -0.0664, 0.4507, -0.3358, -1.3916, -1.5346, -2.2573,\n", + " -1.8720, -1.7773, -1.0483, -0.5478, 0.1466, -1.8682, 0.4596, 0.0844,\n", + " -0.4552, 0.2660, -1.3526, 0.5069, 1.5845, 0.5895, 0.9661, -0.0105,\n", + " -0.1074, -0.4572, 0.0207, 0.4367, 0.6970, 1.4742, 0.6168, 0.5242,\n", + " 0.3581, 0.7328, 0.2508, -0.4494, -0.7353, 0.1432, 0.6318, -0.4342,\n", + " -0.5781, 0.1374, 0.8332]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3349, 0.3050, 0.0860, 0.2443, 0.1356, -0.1280, -0.3554, -0.3842,\n", + " -0.1651, -0.2307, -0.2167, 0.1556, 0.1429, 0.2684, 0.1652, 0.2517,\n", + " 0.2103, 0.0835, 0.0478, 0.1183, 0.0379, 0.0647, 0.0632, 0.0677,\n", + " 0.0396, 0.0971, -0.0510, 0.0398, 0.1837, 0.2434, 0.2385, 0.2028,\n", + " 0.2870, 0.2914, 0.1514, 0.2133, -0.0172, -0.0130, 0.0465, -0.2829,\n", + " -0.2430, -0.2555, -0.2261]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00011755799641832709\n", + "Grad encoder.fc1.bias: 0.00019758706912398338\n", + "Grad encoder.encoder.0.weight: 2.091586429742165e-05\n", + "Grad encoder.encoder.0.bias: 0.00023681242601014674\n", + "Grad encoder.encoder.2.weight: 2.5312983780167997e-05\n", + "Grad encoder.encoder.2.bias: 0.00032779769389890134\n", + "Grad encoder.encoder.4.weight: 7.833985728211701e-05\n", + "Grad encoder.encoder.4.bias: 0.0009316866635344923\n", + "Grad decoder.fc1.0.weight: 3.925255441572517e-05\n", + "Grad decoder.fc1.0.bias: 0.0003308019950054586\n", + "Grad decoder.fc1.2.weight: 6.051656964700669e-05\n", + "Grad decoder.fc1.2.bias: 0.0008070593466982245\n", + "Grad decoder.fc1.4.weight: 5.979945126455277e-05\n", + "Grad decoder.fc1.4.bias: 0.0005682404153048992\n", + "Grad decoder.fc2.weight: 0.00014987250324338675\n", + "Grad decoder.fc2.bias: 0.0013534019235521555\n", + "Grad _memory_unit.weight_ih_l0: 9.774289537745062e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.3716401958372444e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.209285412391182e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.055665042164037e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.787905633449554e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.287582851247862e-05\n", + "Data X Sample: tensor([[1.4756, 1.8367, 2.0436, 2.2500, 2.2846, 2.3705, 2.3988, 2.4545, 2.4727,\n", + " 2.3822, 2.3475, 2.3350, 2.1460, 2.0967, 1.8763, 1.8777, 1.8806, 1.8396,\n", + " 1.8854, 1.8448, 1.7592, 1.7468, 1.6001, 1.6205, 1.5108, 1.4653, 1.4092,\n", + " 1.4561, 1.0859, 1.1692, 1.0918, 1.0058, 0.9482, 0.6980, 1.0344, 1.1650,\n", + " 1.3962, 1.5292, 1.7494, 1.6626, 1.2600, 0.7548, 0.7559, 1.3232, 2.0019,\n", + " 2.3330, 1.4686, 1.9470]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.6597, -1.4131, -0.3663, -1.1426, -1.0169, 0.1802, 1.7652, 1.9722,\n", + " 0.9623, 2.3675, 3.8781, -1.3628, 0.1311, -1.4653, -0.7565, -1.6478,\n", + " -1.4536, -0.7895, -0.5489, -0.9041, 0.2388, -0.9278, -0.3970, -0.6827,\n", + " -0.2316, 0.0160, 0.6093, 0.7226, -0.6883, -0.8094, -1.1459, -0.8226,\n", + " -1.9017, -2.6351, -0.4696, -1.0723, 0.4513, -0.5083, -0.8612, 5.7908,\n", + " 5.7900, 6.1455, 3.0917]], device='cuda:0')\n", + "Prediction Sample: tensor([[-1.6506, -1.4109, -0.6763, -0.9774, -0.4969, 0.0790, 1.2971, 1.9876,\n", + " 1.5221, 2.5996, 3.5600, -0.6193, -0.6511, -1.4458, -1.1214, -2.0347,\n", + " -1.8419, -0.8293, -0.3488, -0.6428, -0.3637, -0.1382, -0.1480, -0.0880,\n", + " -0.1685, -0.0920, 0.5442, 0.0975, -0.5204, -0.9975, -1.3085, -1.3524,\n", + " -1.1097, -2.2919, -0.8177, -0.7431, 0.1375, -0.0331, -0.0730, 5.4994,\n", + " 5.2312, 3.8523, 2.6246]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003269864246249199\n", + "Grad encoder.fc1.bias: 0.0009294047486037016\n", + "Grad encoder.encoder.0.weight: 5.4453546908916906e-05\n", + "Grad encoder.encoder.0.bias: 0.00060326571110636\n", + "Grad encoder.encoder.2.weight: 4.0555612940806895e-05\n", + "Grad encoder.encoder.2.bias: 0.0006616865284740925\n", + "Grad encoder.encoder.4.weight: 0.00013754672545474023\n", + "Grad encoder.encoder.4.bias: 0.0014512891648337245\n", + "Grad decoder.fc1.0.weight: 6.462402961915359e-05\n", + "Grad decoder.fc1.0.bias: 0.000607526395469904\n", + "Grad decoder.fc1.2.weight: 6.147953536128625e-05\n", + "Grad decoder.fc1.2.bias: 0.0008502710843458772\n", + "Grad decoder.fc1.4.weight: 5.4640921007376164e-05\n", + "Grad decoder.fc1.4.bias: 0.0006097350269556046\n", + "Grad decoder.fc2.weight: 0.00014673039549961686\n", + "Grad decoder.fc2.bias: 0.0018795182695612311\n", + "Grad _memory_unit.weight_ih_l0: 1.3787515854346566e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.203496013768017e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.7557052564807236e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.5555267358140554e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00014970624761190265\n", + "Grad _memory_unit.bias_hh_l1: 7.77076929807663e-05\n", + "Data X Sample: tensor([[2.6733, 2.9451, 3.0759, 3.4329, 3.4285, 3.5815, 3.7361, 3.9252, 3.8470,\n", + " 3.8987, 4.0193, 3.8502, 3.7439, 3.6671, 3.6189, 3.5515, 3.4734, 3.5051,\n", + " 3.4052, 3.3456, 3.2216, 3.1506, 2.9086, 2.8840, 2.8265, 2.7555, 2.8105,\n", + " 2.7449, 2.7025, 2.8068, 2.8136, 2.9098, 2.9041, 2.1191, 3.6007, 3.9451,\n", + " 4.1945, 4.5478, 4.9883, 5.0643, 1.9854, 1.1570, 1.1196, 1.8801, 2.7828,\n", + " 3.3852, 2.0873, 2.9635]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4169, -0.5768, 1.1548, 0.4477, 2.5533, 0.4876, 0.0128, -0.3418,\n", + " 0.2339, -0.2225, -0.0567, 0.7574, -4.7268, -0.1358, 0.3804, 0.7070,\n", + " -0.9661, -0.1892, 0.4952, 0.7827, -0.1596, -0.1147, -0.5687, -0.2857,\n", + " 0.8979, 0.3228, 0.1516, -0.8897, -0.8547, -0.4023, -0.7254, -1.0501,\n", + " -0.8639, -0.8061, -0.3814, 0.0339, -0.3398, 0.6895, -0.2811, 0.1068,\n", + " -0.3830, -0.6167, 0.1636]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1902, -0.2186, -0.0633, -0.1567, 0.0261, 0.0996, 0.1114, 0.2229,\n", + " 0.1582, 0.1942, 0.1669, -0.1442, -0.1290, -0.2040, -0.1343, -0.2087,\n", + " -0.1892, -0.0556, -0.0668, -0.0801, -0.0519, -0.0266, -0.0238, -0.0541,\n", + " -0.0271, 0.0701, -0.0225, -0.0569, -0.1330, -0.1723, -0.1606, -0.1309,\n", + " -0.2050, -0.1961, -0.1273, -0.1086, -0.0445, 0.0250, 0.0538, 0.2212,\n", + " 0.2552, 0.2483, 0.1977]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 9.197580948239192e-05\n", + "Grad encoder.fc1.bias: 0.000964353617746383\n", + "Grad encoder.encoder.0.weight: 2.5881940018734895e-05\n", + "Grad encoder.encoder.0.bias: 0.001061788178049028\n", + "Grad encoder.encoder.2.weight: 2.3928878363221884e-05\n", + "Grad encoder.encoder.2.bias: 0.000791600497905165\n", + "Grad encoder.encoder.4.weight: 8.690380491316319e-05\n", + "Grad encoder.encoder.4.bias: 0.0018246485851705074\n", + "Grad decoder.fc1.0.weight: 5.897606024518609e-05\n", + "Grad decoder.fc1.0.bias: 0.0007310367655009031\n", + "Grad decoder.fc1.2.weight: 7.815775461494923e-05\n", + "Grad decoder.fc1.2.bias: 0.0005387614946812391\n", + "Grad decoder.fc1.4.weight: 7.075761095620692e-05\n", + "Grad decoder.fc1.4.bias: 0.0006948356167413294\n", + "Grad decoder.fc2.weight: 0.00012855698878411204\n", + "Grad decoder.fc2.bias: 0.0019505815580487251\n", + "Grad _memory_unit.weight_ih_l0: 1.2905704352306202e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.010086457943544e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.0245417039841413e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.19943205290474e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00015513777907472104\n", + "Grad _memory_unit.bias_hh_l1: 7.747911149635911e-05\n", + "Data X Sample: tensor([[1.7111, 2.0959, 2.1683, 2.2237, 2.3682, 2.4471, 2.4774, 2.5525, 2.5997,\n", + " 2.5955, 2.5981, 2.5629, 2.5211, 2.4456, 2.4614, 2.5026, 2.4749, 2.4489,\n", + " 2.5792, 2.6501, 2.6401, 2.7158, 2.7158, 2.7237, 2.7158, 2.7738, 2.7066,\n", + " 2.6388, 2.4215, 2.5710, 2.3657, 2.2770, 1.9822, 1.2427, 1.7697, 1.7123,\n", + " 1.6695, 1.6193, 1.5656, 1.4469, 1.4222, 0.8324, 0.7943, 1.4294, 2.0772,\n", + " 2.2415, 1.5434, 2.3770]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0525, 0.9075, 0.0509, 0.2553, 0.5519, 0.2300, -0.2964, -0.2442,\n", + " 0.2176, -0.6756, -0.3212, 0.6147, 1.3535, -0.8435, 0.6225, 0.3199,\n", + " 1.3201, -0.3029, 0.2319, -0.1563, -0.8552, 0.7320, 0.4851, 0.4043,\n", + " 1.4587, 0.5290, -0.2222, 0.1391, 0.1194, 0.7865, 0.8079, -0.2709,\n", + " 0.1716, 0.6286, 0.5970, -0.2377, -0.5204, 0.4911, 0.9175, -0.3636,\n", + " -0.6476, -0.2872, -1.1575]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2868, 0.2610, 0.0885, 0.1896, 0.1105, -0.1066, -0.3003, -0.3095,\n", + " -0.1239, -0.1809, -0.1806, 0.1112, 0.1112, 0.2070, 0.1284, 0.1908,\n", + " 0.1690, 0.0524, 0.0363, 0.0977, 0.0344, 0.0385, 0.0392, 0.0442,\n", + " 0.0140, 0.1075, -0.0562, 0.0259, 0.1465, 0.1789, 0.1882, 0.1545,\n", + " 0.2345, 0.2332, 0.1053, 0.1611, -0.0292, -0.0119, 0.0328, -0.2265,\n", + " -0.1879, -0.2070, -0.1683]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 6.727861909894273e-05\n", + "Grad encoder.fc1.bias: 6.918722647242248e-05\n", + "Grad encoder.encoder.0.weight: 1.1124726370326243e-05\n", + "Grad encoder.encoder.0.bias: 8.305565279442817e-05\n", + "Grad encoder.encoder.2.weight: 1.2322087059146725e-05\n", + "Grad encoder.encoder.2.bias: 0.00015055746189318597\n", + "Grad encoder.encoder.4.weight: 4.0488128433935344e-05\n", + "Grad encoder.encoder.4.bias: 0.0004542265087366104\n", + "Grad decoder.fc1.0.weight: 1.7793761799111962e-05\n", + "Grad decoder.fc1.0.bias: 0.00013389342348091304\n", + "Grad decoder.fc1.2.weight: 2.9595161322504282e-05\n", + "Grad decoder.fc1.2.bias: 0.00019922660430893302\n", + "Grad decoder.fc1.4.weight: 2.726673483266495e-05\n", + "Grad decoder.fc1.4.bias: 0.00020951945043634623\n", + "Grad decoder.fc2.weight: 9.778570529306307e-05\n", + "Grad decoder.fc2.bias: 0.0014833108289167285\n", + "Grad _memory_unit.weight_ih_l0: 5.789190709037939e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.172071617678739e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.2364833310130052e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.6710982890799642e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.672169259516522e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.9400577002670616e-05\n", + "Data X Sample: tensor([[1.2815, 1.4449, 1.6364, 1.7252, 1.8526, 1.9418, 1.9613, 1.9719, 2.0236,\n", + " 2.0963, 2.1096, 2.0293, 2.0883, 2.0094, 1.9797, 2.0212, 2.0174, 2.0175,\n", + " 2.0258, 2.0550, 2.0954, 2.0774, 1.9784, 2.0518, 2.0326, 2.0947, 2.0459,\n", + " 2.0556, 1.7970, 1.9225, 1.9107, 1.8873, 1.8436, 1.2953, 1.8482, 1.7269,\n", + " 1.4808, 1.2244, 1.0332, 1.0299, 1.0691, 0.6074, 0.6204, 1.1194, 1.7284,\n", + " 1.8241, 1.1626, 1.6186]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3804, 0.8106, 0.2408, 0.2564, -0.1509, -0.7463, -0.0678, -0.3773,\n", + " -0.6727, -0.1133, -0.4265, 1.2840, 0.0734, 0.8929, -0.3113, 0.4458,\n", + " 0.6959, 0.8286, 0.4398, 0.8672, 1.4939, 1.4255, -0.9417, 0.4384,\n", + " 0.1284, 1.8902, -2.0123, 0.1828, 0.7810, 1.2234, -0.2469, -0.2178,\n", + " 0.6332, 0.4880, -0.4092, 0.2280, -1.0105, 0.1511, 0.0040, -0.3077,\n", + " -0.1372, -0.4098, -0.6131]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 2.5934e-01, 2.2443e-01, 7.7855e-02, 1.6347e-01, 9.3164e-02,\n", + " -9.5194e-02, -2.7453e-01, -2.7848e-01, -1.0563e-01, -1.5466e-01,\n", + " -1.6278e-01, 9.4901e-02, 9.6725e-02, 1.7916e-01, 1.1143e-01,\n", + " 1.5791e-01, 1.4031e-01, 4.5314e-02, 3.1722e-02, 8.2144e-02,\n", + " 2.9585e-02, 2.7495e-02, 3.4807e-02, 3.6133e-02, -2.4487e-04,\n", + " 1.0217e-01, -5.0398e-02, 2.8943e-02, 1.3218e-01, 1.5632e-01,\n", + " 1.6592e-01, 1.3626e-01, 2.0634e-01, 2.0806e-01, 8.7612e-02,\n", + " 1.4045e-01, -3.4522e-02, -8.0772e-03, 2.6039e-02, -1.9973e-01,\n", + " -1.6013e-01, -1.7807e-01, -1.4012e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00011997268302366138\n", + "Grad encoder.fc1.bias: 0.00020784122170880437\n", + "Grad encoder.encoder.0.weight: 2.9897133572376333e-05\n", + "Grad encoder.encoder.0.bias: 0.00020712568948511034\n", + "Grad encoder.encoder.2.weight: 1.9965456885984167e-05\n", + "Grad encoder.encoder.2.bias: 0.00020240919548086822\n", + "Grad encoder.encoder.4.weight: 5.6429820688208565e-05\n", + "Grad encoder.encoder.4.bias: 0.0005108676850795746\n", + "Grad decoder.fc1.0.weight: 4.1572082409402356e-05\n", + "Grad decoder.fc1.0.bias: 0.00030961885931901634\n", + "Grad decoder.fc1.2.weight: 6.163446232676506e-05\n", + "Grad decoder.fc1.2.bias: 0.0013196589425206184\n", + "Grad decoder.fc1.4.weight: 7.860876939957961e-05\n", + "Grad decoder.fc1.4.bias: 0.0006721368408761919\n", + "Grad decoder.fc2.weight: 0.0001735694386297837\n", + "Grad decoder.fc2.bias: 0.0018191025592386723\n", + "Grad _memory_unit.weight_ih_l0: 1.1893692317244131e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.783918070141226e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.713537080329843e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.624024874530733e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010484491212991998\n", + "Grad _memory_unit.bias_hh_l1: 5.680766116711311e-05\n", + "Data X Sample: tensor([[1.4820, 1.8265, 2.0000, 2.0969, 2.1616, 2.2644, 2.3249, 2.3438, 2.4752,\n", + " 2.3964, 2.4490, 2.3974, 2.3857, 2.3584, 2.3227, 2.4698, 2.4120, 2.3464,\n", + " 2.4181, 2.4195, 2.5223, 2.4801, 2.4556, 2.4164, 2.4042, 2.4317, 2.3789,\n", + " 2.3941, 1.9080, 2.0535, 1.8617, 1.7133, 1.5774, 0.9978, 1.4070, 1.3207,\n", + " 1.3864, 1.3781, 1.3945, 1.3703, 1.2982, 0.7368, 0.7841, 1.3003, 1.9107,\n", + " 2.0929, 1.3802, 2.0330]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1292, -0.0304, 0.3124, 0.7158, 0.3584, 0.2251, -0.1841, 0.0923,\n", + " -0.0226, 0.0215, 0.0399, 0.2248, 0.1247, 0.1187, 0.2604, 0.4390,\n", + " 0.2651, 0.6491, 1.0106, 0.3804, 0.4584, 3.7580, 1.0622, -0.3161,\n", + " 0.7071, 0.9737, 0.1463, 1.1506, 0.9899, 0.9474, 1.5963, 1.2838,\n", + " 0.4396, 0.4429, 0.4328, 0.9896, 0.4497, 0.5779, 0.9794, -0.0321,\n", + " -0.1750, -0.1484, -0.1604]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.1866, 0.1519, 0.0570, 0.0908, 0.0571, -0.0734, -0.2116, -0.1900,\n", + " -0.0600, -0.0913, -0.1137, 0.0513, 0.0527, 0.1158, 0.0707, 0.0846,\n", + " 0.0868, 0.0201, 0.0141, 0.0543, 0.0166, 0.0049, 0.0121, 0.0109,\n", + " -0.0125, 0.1069, -0.0407, 0.0204, 0.0911, 0.0878, 0.1103, 0.0902,\n", + " 0.1358, 0.1361, 0.0495, 0.0891, -0.0393, -0.0048, 0.0161, -0.1318,\n", + " -0.0850, -0.1041, -0.0762]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0030202760826796293\n", + "Grad encoder.fc1.bias: 0.0017595465760678053\n", + "Grad encoder.encoder.0.weight: 0.0003972917911596596\n", + "Grad encoder.encoder.0.bias: 0.0016946359537541866\n", + "Grad encoder.encoder.2.weight: 0.0002667113149072975\n", + "Grad encoder.encoder.2.bias: 0.002165087265893817\n", + "Grad encoder.encoder.4.weight: 0.0006901482120156288\n", + "Grad encoder.encoder.4.bias: 0.005563004873692989\n", + "Grad decoder.fc1.0.weight: 0.00022924994118511677\n", + "Grad decoder.fc1.0.bias: 0.0015319380909204483\n", + "Grad decoder.fc1.2.weight: 0.00016012713604141027\n", + "Grad decoder.fc1.2.bias: 0.0023810623679310083\n", + "Grad decoder.fc1.4.weight: 9.907909407047555e-05\n", + "Grad decoder.fc1.4.bias: 0.0015580272302031517\n", + "Grad decoder.fc2.weight: 0.00019638179219327867\n", + "Grad decoder.fc2.bias: 0.003379605943337083\n", + "Grad _memory_unit.weight_ih_l0: 7.162248220993206e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0001310270745307207\n", + "Grad _memory_unit.bias_hh_l0: 0.00010696600656956434\n", + "Grad _memory_unit.weight_ih_l1: 2.869844320230186e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00048561347648501396\n", + "Grad _memory_unit.bias_hh_l1: 0.00024941214360296726\n", + "Data X Sample: tensor([[1.5403, 1.7624, 1.8452, 1.9854, 2.1753, 2.3307, 2.4882, 2.5596, 2.5704,\n", + " 2.5907, 2.6901, 2.7713, 2.6653, 2.5656, 2.6152, 2.5806, 2.4906, 2.5495,\n", + " 2.5813, 2.4567, 2.5248, 2.6224, 2.4869, 2.4584, 2.4098, 2.3507, 2.4215,\n", + " 2.4716, 2.1682, 2.2926, 2.3202, 2.2991, 2.2924, 1.5745, 2.2183, 2.0796,\n", + " 1.9665, 1.8128, 1.6987, 1.6455, 1.1597, 0.7109, 0.7094, 1.2314, 1.7125,\n", + " 1.9442, 1.3394, 2.0095]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 3.1859e-01, -1.5819e-02, -6.1243e-01, 3.5889e-01, -4.7872e-01,\n", + " -2.9499e-01, -1.4869e+00, -7.3377e-01, -6.9791e-01, -3.7369e-03,\n", + " -3.8221e-01, -1.1837e-01, 1.4369e-01, 6.6116e-01, 5.5514e-01,\n", + " 2.1948e-01, 2.3135e-02, -1.7392e-01, 3.3649e-04, 5.7593e-01,\n", + " -1.2429e-01, 6.7410e-01, 7.7601e-01, 1.0437e+00, 9.7780e-01,\n", + " 6.0195e-02, -1.1187e+00, -5.1472e-01, 4.9012e-01, 4.3499e-02,\n", + " 4.8224e-01, -4.4310e-03, 3.4998e-01, 8.0129e-01, 5.1093e-01,\n", + " 2.3401e-01, -4.5720e-02, 1.5113e-01, -1.5613e-02, -3.5564e-01,\n", + " -2.9588e-01, -1.7546e-01, 1.7138e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3118, 0.3016, 0.1112, 0.2091, 0.1233, -0.1101, -0.3133, -0.3335,\n", + " -0.1316, -0.1976, -0.1893, 0.1220, 0.1170, 0.2112, 0.1435, 0.2096,\n", + " 0.2031, 0.0570, 0.0365, 0.1079, 0.0429, 0.0288, 0.0343, 0.0394,\n", + " 0.0080, 0.1285, -0.0799, 0.0172, 0.1506, 0.1894, 0.2002, 0.1484,\n", + " 0.2610, 0.2508, 0.1117, 0.1587, -0.0293, -0.0098, 0.0328, -0.2409,\n", + " -0.2177, -0.2331, -0.1800]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00018979130254592746\n", + "Grad encoder.fc1.bias: 0.000551072706002742\n", + "Grad encoder.encoder.0.weight: 2.6499419618630782e-05\n", + "Grad encoder.encoder.0.bias: 0.0002962107537314296\n", + "Grad encoder.encoder.2.weight: 2.731086715357378e-05\n", + "Grad encoder.encoder.2.bias: 0.0002893451601266861\n", + "Grad encoder.encoder.4.weight: 8.210396481445059e-05\n", + "Grad encoder.encoder.4.bias: 0.0009132274426519871\n", + "Grad decoder.fc1.0.weight: 4.4101605453761294e-05\n", + "Grad decoder.fc1.0.bias: 0.0003522327751852572\n", + "Grad decoder.fc1.2.weight: 5.950453123659827e-05\n", + "Grad decoder.fc1.2.bias: 0.0009851198410615325\n", + "Grad decoder.fc1.4.weight: 7.448373071383685e-05\n", + "Grad decoder.fc1.4.bias: 0.000591651420108974\n", + "Grad decoder.fc2.weight: 0.00017099226533900946\n", + "Grad decoder.fc2.bias: 0.0021138584706932306\n", + "Grad _memory_unit.weight_ih_l0: 1.526180494693108e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.770019950228743e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.005872349604033e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.772994649712928e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.658410999691114e-05\n", + "Grad _memory_unit.bias_hh_l1: 5.395562038756907e-05\n", + "Data X Sample: tensor([[1.5902, 1.8119, 2.0691, 2.2303, 2.3016, 2.4412, 2.6083, 2.5837, 2.6705,\n", + " 2.7945, 2.7694, 2.8024, 2.7763, 2.7237, 2.6808, 2.5587, 2.5315, 2.5979,\n", + " 2.5895, 2.5088, 2.4978, 2.5627, 2.5857, 2.5576, 2.5525, 2.6537, 2.5920,\n", + " 2.6266, 2.3799, 2.5481, 2.4672, 2.3875, 2.3320, 1.4669, 1.9952, 1.8801,\n", + " 1.7462, 1.6617, 1.6733, 1.6285, 1.3459, 0.7348, 0.7639, 1.3835, 1.9742,\n", + " 2.1729, 1.5162, 2.0330]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3561, 0.3916, -0.2578, -0.3622, -0.5417, -1.9248, -1.6572, -1.4273,\n", + " -0.8288, -1.2464, -1.3587, 0.7579, 0.6998, 1.2885, 0.5450, 0.5632,\n", + " 1.1636, 0.3273, -0.3120, 0.8285, 0.3238, 0.3404, 0.4301, 0.0421,\n", + " -0.2332, 0.6260, 0.8703, 0.3440, 0.6794, 1.1753, 0.7833, -0.2945,\n", + " 0.2811, 0.4424, 0.5902, 1.5804, -0.8912, -0.2114, -0.2886, -2.3217,\n", + " -1.7046, -0.7285, 0.3018]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3771, 0.3755, 0.1364, 0.2788, 0.1576, -0.1275, -0.3683, -0.4160,\n", + " -0.1717, -0.2543, -0.2266, 0.1644, 0.1502, 0.2563, 0.1828, 0.2739,\n", + " 0.2635, 0.0866, 0.0471, 0.1330, 0.0563, 0.0422, 0.0528, 0.0589,\n", + " 0.0145, 0.1381, -0.1054, 0.0149, 0.1829, 0.2512, 0.2497, 0.1792,\n", + " 0.3256, 0.3151, 0.1461, 0.1906, -0.0284, -0.0096, 0.0445, -0.2977,\n", + " -0.2935, -0.2988, -0.2308]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00014854005712550133\n", + "Grad encoder.fc1.bias: 0.00033086363691836596\n", + "Grad encoder.encoder.0.weight: 2.375843541813083e-05\n", + "Grad encoder.encoder.0.bias: 0.0002844696573447436\n", + "Grad encoder.encoder.2.weight: 2.162764394597616e-05\n", + "Grad encoder.encoder.2.bias: 0.0002458685776218772\n", + "Grad encoder.encoder.4.weight: 6.781076081097126e-05\n", + "Grad encoder.encoder.4.bias: 0.0005178045830689371\n", + "Grad decoder.fc1.0.weight: 2.6607103791320696e-05\n", + "Grad decoder.fc1.0.bias: 0.0002097633550874889\n", + "Grad decoder.fc1.2.weight: 3.149153053527698e-05\n", + "Grad decoder.fc1.2.bias: 0.00023958231031429023\n", + "Grad decoder.fc1.4.weight: 4.346251080278307e-05\n", + "Grad decoder.fc1.4.bias: 0.00042398995719850063\n", + "Grad decoder.fc2.weight: 0.0001931021542986855\n", + "Grad decoder.fc2.bias: 0.0016865546349436045\n", + "Grad _memory_unit.weight_ih_l0: 4.0924960558186285e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.4387345800059848e-05\n", + "Grad _memory_unit.bias_hh_l0: 7.4182880780426785e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.7664087863522582e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.6507561162579805e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.9238184904679656e-05\n", + "Data X Sample: tensor([[1.4258, 1.5730, 1.8587, 1.9657, 1.9499, 2.0582, 2.1446, 2.5709, 3.8910,\n", + " 4.2684, 4.3492, 4.4598, 4.0124, 4.0788, 3.9241, 3.5816, 3.5504, 3.4780,\n", + " 3.5209, 3.4888, 3.3320, 3.3573, 3.0171, 2.7752, 2.8227, 2.9332, 3.0049,\n", + " 3.0100, 3.0667, 3.1147, 3.3035, 3.2966, 3.7423, 2.7325, 4.5763, 4.8766,\n", + " 4.9968, 5.4039, 6.0595, 5.8360, 1.2027, 0.6353, 0.6467, 1.1883, 1.6372,\n", + " 1.8870, 1.1966, 1.8610]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5059, -0.2448, 0.1016, 0.0923, -0.5512, -0.0895, 0.2729, 0.3065,\n", + " -0.0828, 0.0613, 0.3085, -0.2498, -0.6571, 0.0926, 0.1985, -0.5135,\n", + " -0.3049, -0.2770, 0.4080, 1.8450, 0.7245, -0.1964, 1.0971, 3.0076,\n", + " 0.3934, 0.1085, 0.2077, 0.5624, -0.4985, 0.2128, 0.6034, 0.1693,\n", + " 0.0801, 0.1928, -0.1647, -0.3361, -1.0293, -0.4035, 0.2253, 0.4407,\n", + " 0.5956, 0.5105, 0.8169]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2646, -0.2710, -0.0767, -0.1598, 0.0733, 0.1573, 0.1888, 0.3084,\n", + " 0.2081, 0.2494, 0.2481, -0.1997, -0.1867, -0.2942, -0.1738, -0.2608,\n", + " -0.2169, -0.0597, -0.1009, -0.1018, -0.0742, -0.0090, -0.0188, -0.0574,\n", + " -0.0198, 0.1024, -0.0715, -0.1392, -0.2095, -0.2263, -0.2484, -0.2077,\n", + " -0.2785, -0.2757, -0.1687, -0.1547, -0.0504, 0.0230, 0.0884, 0.3104,\n", + " 0.3060, 0.3409, 0.2647]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00015214239829219878\n", + "Grad encoder.fc1.bias: 0.0008131069480441511\n", + "Grad encoder.encoder.0.weight: 3.993306017946452e-05\n", + "Grad encoder.encoder.0.bias: 0.0007197277154773474\n", + "Grad encoder.encoder.2.weight: 3.070786260650493e-05\n", + "Grad encoder.encoder.2.bias: 0.0006971168331801891\n", + "Grad encoder.encoder.4.weight: 0.00012397067621350288\n", + "Grad encoder.encoder.4.bias: 0.001606726087629795\n", + "Grad decoder.fc1.0.weight: 5.963912553852424e-05\n", + "Grad decoder.fc1.0.bias: 0.0006312718614935875\n", + "Grad decoder.fc1.2.weight: 6.729529559379444e-05\n", + "Grad decoder.fc1.2.bias: 0.00047921627992764115\n", + "Grad decoder.fc1.4.weight: 5.820050137117505e-05\n", + "Grad decoder.fc1.4.bias: 0.0005340363713912666\n", + "Grad decoder.fc2.weight: 0.00011790481948992237\n", + "Grad decoder.fc2.bias: 0.0024686227552592754\n", + "Grad _memory_unit.weight_ih_l0: 1.0855944310605992e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.7823614042717963e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.9275255656102672e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.165751306572929e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00012689702271018177\n", + "Grad _memory_unit.bias_hh_l1: 6.347023008856922e-05\n", + "Data X Sample: tensor([[1.4321, 1.6735, 1.7956, 1.9351, 2.0745, 2.0699, 2.2417, 3.3162, 4.0716,\n", + " 4.3474, 4.3524, 4.3916, 3.9281, 3.9697, 3.7526, 3.7567, 3.7045, 3.6579,\n", + " 3.6840, 3.5502, 3.4669, 3.2731, 2.9448, 2.7771, 2.8584, 2.9044, 2.9597,\n", + " 3.0712, 3.0390, 3.2882, 3.3035, 3.3270, 3.8721, 2.7691, 4.5665, 4.8766,\n", + " 5.0617, 5.3058, 6.0532, 5.7736, 1.0595, 0.6890, 0.6285, 1.2199, 1.7720,\n", + " 1.9156, 1.2306, 1.6811]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1653, -0.8987, 0.8478, -0.4711, -0.1029, 0.5164, 0.3840, -0.0518,\n", + " -0.0610, 0.1332, -0.1087, 0.7312, -0.3403, 1.3800, 0.4159, 0.4346,\n", + " 0.4064, -1.6221, -1.1028, 0.5493, 0.4346, -0.1163, 0.5990, 0.1936,\n", + " 0.1932, -0.0278, 0.7198, 1.0188, -0.6292, 0.2299, -0.9589, 0.3431,\n", + " -0.4542, 0.9809, 0.5353, 0.1808, 0.0000, 0.7952, -0.5562, 0.6662,\n", + " -0.4747, 0.6554, 0.2260]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2563, -0.2601, -0.0730, -0.1695, 0.0420, 0.1332, 0.1692, 0.2916,\n", + " 0.1785, 0.2246, 0.2292, -0.1864, -0.1738, -0.2729, -0.1628, -0.2396,\n", + " -0.2037, -0.0572, -0.1025, -0.1021, -0.0695, -0.0104, -0.0160, -0.0521,\n", + " -0.0200, 0.0981, -0.0548, -0.1153, -0.1811, -0.1958, -0.2247, -0.1926,\n", + " -0.2492, -0.2572, -0.1488, -0.1487, -0.0475, 0.0184, 0.0782, 0.3024,\n", + " 0.2936, 0.3213, 0.2455]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004698381235357374\n", + "Grad encoder.fc1.bias: 0.0007031160057522357\n", + "Grad encoder.encoder.0.weight: 6.860688154119998e-05\n", + "Grad encoder.encoder.0.bias: 0.0006099510937929153\n", + "Grad encoder.encoder.2.weight: 4.619434184860438e-05\n", + "Grad encoder.encoder.2.bias: 0.0006140096811577678\n", + "Grad encoder.encoder.4.weight: 0.0001421211927663535\n", + "Grad encoder.encoder.4.bias: 0.0015679019270464778\n", + "Grad decoder.fc1.0.weight: 6.18972844677046e-05\n", + "Grad decoder.fc1.0.bias: 0.0005142349400557578\n", + "Grad decoder.fc1.2.weight: 6.449692591559142e-05\n", + "Grad decoder.fc1.2.bias: 0.0017123210709542036\n", + "Grad decoder.fc1.4.weight: 7.44366116123274e-05\n", + "Grad decoder.fc1.4.bias: 0.000851412070915103\n", + "Grad decoder.fc2.weight: 0.0001877580361906439\n", + "Grad decoder.fc2.bias: 0.0020931060425937176\n", + "Grad _memory_unit.weight_ih_l0: 2.729224979702849e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0001207361274282448\n", + "Grad _memory_unit.bias_hh_l0: 7.20201715012081e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.4551702406606637e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00019610457820817828\n", + "Grad _memory_unit.bias_hh_l1: 0.00010607694275677204\n", + "Data X Sample: tensor([[ 0.0117, -0.0029, 0.0255, 0.0109, 0.0120, 0.0309, 0.0169, 0.0227,\n", + " 0.0317, 0.0253, 0.0666, 0.0195, 0.0355, 0.0463, 0.0076, 0.0150,\n", + " -0.1447, -0.1664, -0.1920, -0.1711, -0.1963, -0.1072, -0.1856, -0.1737,\n", + " -0.1501, -0.2925, -0.2744, -0.4772, -0.0659, -0.0819, -0.0700, -0.0663,\n", + " -0.0198, -0.0755, -0.0172, 0.0122, -0.0059, -0.0239, -0.0507, -0.0227,\n", + " 0.0286, 0.0040, -0.0020, -0.0057, 0.0238, 0.0172, 0.0408, 0.0156]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4426, -0.6184, 0.9149, -2.0927, -0.4534, -0.7488, 1.5729, -0.9088,\n", + " 1.1851, 1.7771, 1.8845, 1.1702, -0.9432, -0.4342, -0.0775, 0.3718,\n", + " 1.1893, -2.6917, -0.6199, -0.0880, -0.9675, 0.9485, -0.0451, 0.6527,\n", + " -1.2993, -0.8435, 1.8129, -0.0395, 0.6128, 1.3830, 0.9316, -0.4016,\n", + " 0.3082, 1.0640, -1.2300, 0.2771, 0.8233, -0.0920, -0.7130, -1.6644,\n", + " -0.3341, -1.1931, 0.7061]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5244, 0.5170, 0.2108, 0.4661, 0.2039, -0.1589, -0.5357, -0.6517,\n", + " -0.2574, -0.3459, -0.2914, 0.2671, 0.2520, 0.3530, 0.2613, 0.4016,\n", + " 0.3804, 0.1849, 0.0705, 0.1823, 0.0935, 0.0610, 0.0810, 0.1234,\n", + " 0.0280, 0.1477, -0.1519, 0.0622, 0.3041, 0.3879, 0.3833, 0.2663,\n", + " 0.4639, 0.4774, 0.2327, 0.2352, -0.0117, 0.0306, 0.0236, -0.4004,\n", + " -0.4510, -0.4401, -0.3566]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 8.252869884017855e-05\n", + "Grad encoder.fc1.bias: 5.034987407270819e-05\n", + "Grad encoder.encoder.0.weight: 2.2969721612753347e-05\n", + "Grad encoder.encoder.0.bias: 5.457895895233378e-05\n", + "Grad encoder.encoder.2.weight: 1.3041075362707488e-05\n", + "Grad encoder.encoder.2.bias: 7.370266393991187e-05\n", + "Grad encoder.encoder.4.weight: 3.912841566489078e-05\n", + "Grad encoder.encoder.4.bias: 0.00022460547916125506\n", + "Grad decoder.fc1.0.weight: 1.7838217900134623e-05\n", + "Grad decoder.fc1.0.bias: 0.00012402421270962805\n", + "Grad decoder.fc1.2.weight: 2.5403263862244785e-05\n", + "Grad decoder.fc1.2.bias: 0.0001432808639947325\n", + "Grad decoder.fc1.4.weight: 3.232988092349842e-05\n", + "Grad decoder.fc1.4.bias: 0.00018376007210463285\n", + "Grad decoder.fc2.weight: 9.228510316461325e-05\n", + "Grad decoder.fc2.bias: 0.0019954435992985964\n", + "Grad _memory_unit.weight_ih_l0: 3.0698804494022625e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.3155719898350071e-05\n", + "Grad _memory_unit.bias_hh_l0: 7.254757292685099e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.3264364042697707e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.209339047316462e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.6498155673616566e-05\n", + "Data X Sample: tensor([[1.5488, 1.7682, 1.9038, 1.9963, 2.1804, 2.2379, 2.3711, 2.3693, 2.4825,\n", + " 2.5402, 2.5347, 2.4831, 2.4367, 2.4484, 2.3328, 2.3303, 2.3035, 2.4005,\n", + " 2.4326, 2.3786, 2.4929, 2.5168, 2.4893, 2.5805, 2.4980, 2.5753, 2.5867,\n", + " 2.5450, 2.2133, 2.3286, 2.3342, 2.2936, 2.2506, 1.4715, 1.8972, 1.7536,\n", + " 1.6086, 1.4550, 1.5339, 1.5803, 1.3029, 0.7090, 0.6912, 1.1510, 1.7878,\n", + " 1.9671, 1.3462, 2.0095]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.5012, 1.7490, -0.1539, 0.3722, -0.8126, -1.0170, -1.1400, -1.0705,\n", + " -0.7735, -0.9207, -0.9821, 0.1966, 1.8941, -0.7477, -0.4224, 0.5276,\n", + " -0.3921, -0.4264, -0.3888, -0.5645, -0.8255, 0.0820, -0.7908, -0.2732,\n", + " 0.1691, -0.9983, 1.1269, 0.9200, 0.6474, 1.4202, 1.3455, 1.4282,\n", + " 2.1490, 0.9376, 0.8610, 1.1430, -0.9960, 0.7178, 0.9834, -1.0121,\n", + " -1.2375, -1.0820, -0.5943]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5372, 0.5636, 0.1995, 0.4338, 0.2140, -0.1687, -0.5080, -0.6137,\n", + " -0.2753, -0.3918, -0.3247, 0.2528, 0.2149, 0.3655, 0.2888, 0.4246,\n", + " 0.4081, 0.1533, 0.0667, 0.1957, 0.0858, 0.0616, 0.0936, 0.1040,\n", + " 0.0258, 0.1557, -0.1602, 0.0082, 0.2678, 0.3897, 0.3755, 0.2503,\n", + " 0.4720, 0.4591, 0.2295, 0.2412, -0.0427, -0.0063, 0.0649, -0.4318,\n", + " -0.4769, -0.4567, -0.3418]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00020651407248806208\n", + "Grad encoder.fc1.bias: 0.0006708274595439434\n", + "Grad encoder.encoder.0.weight: 3.25353212247137e-05\n", + "Grad encoder.encoder.0.bias: 0.0004952939925715327\n", + "Grad encoder.encoder.2.weight: 2.4434466467937455e-05\n", + "Grad encoder.encoder.2.bias: 0.0005345792742446065\n", + "Grad encoder.encoder.4.weight: 7.594632188556716e-05\n", + "Grad encoder.encoder.4.bias: 0.0009381268173456192\n", + "Grad decoder.fc1.0.weight: 3.8151705666678026e-05\n", + "Grad decoder.fc1.0.bias: 0.0003391429490875453\n", + "Grad decoder.fc1.2.weight: 3.923704935004935e-05\n", + "Grad decoder.fc1.2.bias: 0.0005934003856964409\n", + "Grad decoder.fc1.4.weight: 3.80727433366701e-05\n", + "Grad decoder.fc1.4.bias: 0.0003144928487017751\n", + "Grad decoder.fc2.weight: 0.00018370225734543055\n", + "Grad decoder.fc2.bias: 0.0014010366285219789\n", + "Grad _memory_unit.weight_ih_l0: 1.2826250895159319e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.0469719755928963e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.549247048795223e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.2576273194281384e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.375836089020595e-05\n", + "Grad _memory_unit.bias_hh_l1: 5.055231667938642e-05\n", + "Data X Sample: tensor([[1.1213, 1.2657, 1.4681, 1.5284, 1.7621, 1.9049, 3.0952, 3.9593, 4.1082,\n", + " 3.9414, 4.0637, 3.9573, 3.7017, 3.6262, 3.4071, 3.5132, 3.4687, 3.4026,\n", + " 3.3825, 3.3605, 3.2363, 3.2792, 2.8990, 2.7352, 2.7552, 2.7373, 2.7625,\n", + " 2.7979, 2.7406, 2.9476, 2.8976, 3.1032, 3.3419, 2.4533, 4.1326, 4.5167,\n", + " 4.8297, 5.0646, 5.8187, 5.6033, 0.9354, 0.4979, 0.5538, 0.9472, 1.4469,\n", + " 1.5439, 1.1490, 1.5717]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0580, -0.4024, 0.4690, -0.0158, 0.2636, 3.1699, 1.1176, 0.7811,\n", + " 1.4031, 0.5116, -0.1529, -0.1106, 1.6740, -0.4483, 1.3402, 0.3514,\n", + " 0.2565, 4.1850, 1.0702, 0.1735, -0.3913, 0.5020, 0.6003, 0.2749,\n", + " 0.4172, 0.8945, -0.2325, 0.6541, -0.6170, -1.3620, -0.7171, 0.2352,\n", + " -0.4201, 0.7762, 0.2993, -0.1455, 0.0858, 0.0532, 0.4206, -0.9284,\n", + " -0.7758, -0.6749, -0.4748]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2343, -0.2416, -0.0628, -0.1799, -0.0033, 0.0972, 0.1359, 0.2581,\n", + " 0.1343, 0.1876, 0.1957, -0.1645, -0.1540, -0.2350, -0.1434, -0.2086,\n", + " -0.1844, -0.0526, -0.0994, -0.1005, -0.0574, -0.0132, -0.0166, -0.0476,\n", + " -0.0221, 0.0868, -0.0315, -0.0782, -0.1390, -0.1546, -0.1886, -0.1690,\n", + " -0.2083, -0.2262, -0.1247, -0.1399, -0.0459, 0.0146, 0.0568, 0.2834,\n", + " 0.2736, 0.2873, 0.2171]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005233222618699074\n", + "Grad encoder.fc1.bias: 0.00036301929503679276\n", + "Grad encoder.encoder.0.weight: 6.833379302406684e-05\n", + "Grad encoder.encoder.0.bias: 0.00039875696529634297\n", + "Grad encoder.encoder.2.weight: 4.7642792196711525e-05\n", + "Grad encoder.encoder.2.bias: 0.0005749244592152536\n", + "Grad encoder.encoder.4.weight: 0.0001471874857088551\n", + "Grad encoder.encoder.4.bias: 0.0019460385665297508\n", + "Grad decoder.fc1.0.weight: 6.815249798819423e-05\n", + "Grad decoder.fc1.0.bias: 0.0005930165643803775\n", + "Grad decoder.fc1.2.weight: 6.036224658600986e-05\n", + "Grad decoder.fc1.2.bias: 0.00109589914791286\n", + "Grad decoder.fc1.4.weight: 8.126868488034233e-05\n", + "Grad decoder.fc1.4.bias: 0.0008215507259592414\n", + "Grad decoder.fc2.weight: 0.0001656429230934009\n", + "Grad decoder.fc2.bias: 0.0022394040133804083\n", + "Grad _memory_unit.weight_ih_l0: 2.3702084945398383e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.630106119904667e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.9968904932029545e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.334948592557339e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00015582304331474006\n", + "Grad _memory_unit.bias_hh_l1: 8.437272481387481e-05\n", + "Data X Sample: tensor([[1.3462, 1.4623, 1.6709, 1.7777, 1.8475, 1.9992, 2.1323, 2.1521, 2.0504,\n", + " 3.5370, 3.9654, 4.0216, 3.8016, 3.9016, 3.5988, 3.4052, 3.3916, 3.5109,\n", + " 3.4155, 3.4423, 3.4154, 3.2624, 2.8893, 2.8783, 2.7721, 2.9305, 2.8797,\n", + " 3.0508, 3.1257, 3.1867, 3.2091, 3.2055, 3.4893, 2.6226, 4.3508, 4.7161,\n", + " 4.8533, 5.2157, 5.7489, 5.7282, 1.0929, 0.6452, 0.6285, 1.0620, 1.6055,\n", + " 1.7898, 1.2646, 1.6968]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.4917e-01, -4.3862e-01, 2.7875e-01, 2.3876e-01, -1.0280e+00,\n", + " 2.2058e-01, -9.5909e-02, 8.6741e-01, -1.9850e-03, 7.2917e-01,\n", + " 6.0559e-01, 7.9040e-01, 9.1696e-02, -3.0798e-02, 2.8112e+00,\n", + " -8.0787e-01, -1.3579e-01, 1.1224e+00, -6.5361e-01, 8.6461e-01,\n", + " 1.1342e-03, 7.2066e-01, 9.6256e-01, -2.2219e-01, 4.3558e-01,\n", + " -2.3192e-01, 5.6387e-02, 1.5168e-01, -2.4665e-01, -3.5314e-01,\n", + " -2.0718e-01, 1.6553e-01, -6.6904e-01, -2.3425e+00, 2.3431e-01,\n", + " -6.5761e-01, 2.9369e-01, 1.8234e-02, 1.0325e+00, 8.1775e-01,\n", + " 1.1974e+00, 1.0543e+00, -2.8478e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2433, -0.2500, -0.0638, -0.1775, 0.0059, 0.1084, 0.1474, 0.2694,\n", + " 0.1437, 0.1965, 0.2069, -0.1712, -0.1618, -0.2489, -0.1499, -0.2180,\n", + " -0.1900, -0.0529, -0.1025, -0.1041, -0.0587, -0.0119, -0.0171, -0.0492,\n", + " -0.0209, 0.0879, -0.0380, -0.0911, -0.1522, -0.1662, -0.2023, -0.1794,\n", + " -0.2216, -0.2386, -0.1344, -0.1475, -0.0473, 0.0138, 0.0600, 0.2953,\n", + " 0.2824, 0.3016, 0.2281]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003271948080509901\n", + "Grad encoder.fc1.bias: 0.0003521722392179072\n", + "Grad encoder.encoder.0.weight: 5.75008089072071e-05\n", + "Grad encoder.encoder.0.bias: 0.00036128555075265467\n", + "Grad encoder.encoder.2.weight: 4.267881013220176e-05\n", + "Grad encoder.encoder.2.bias: 0.0003942537005059421\n", + "Grad encoder.encoder.4.weight: 0.00013695406960323453\n", + "Grad encoder.encoder.4.bias: 0.0010912007419392467\n", + "Grad decoder.fc1.0.weight: 4.992186586605385e-05\n", + "Grad decoder.fc1.0.bias: 0.0003199370112270117\n", + "Grad decoder.fc1.2.weight: 5.173690806259401e-05\n", + "Grad decoder.fc1.2.bias: 0.00065471394918859\n", + "Grad decoder.fc1.4.weight: 7.024769729468971e-05\n", + "Grad decoder.fc1.4.bias: 0.000534355640411377\n", + "Grad decoder.fc2.weight: 0.0001681567373452708\n", + "Grad decoder.fc2.bias: 0.0019905574154108763\n", + "Grad _memory_unit.weight_ih_l0: 1.3976794434711337e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.069520557299256e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.209904389223084e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.134225143090589e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.822641004575416e-05\n", + "Grad _memory_unit.bias_hh_l1: 5.2916126151103526e-05\n", + "Data X Sample: tensor([[ 0.0032, -0.0117, 0.0030, 0.0131, 0.0017, 0.0206, 0.0123, 0.0085,\n", + " 0.0122, 0.0190, 0.0159, 0.0078, 0.0244, 0.0136, 0.0252, 0.0096,\n", + " -0.0802, -0.0793, -0.0847, -0.0874, -0.0957, -0.0551, -0.0795, -0.0725,\n", + " -0.0601, -0.1437, -0.0826, -0.1835, -0.0486, -0.0098, -0.0245, -0.0055,\n", + " 0.0088, -0.0366, 0.0074, 0.0413, 0.0079, 0.0053, 0.0254, -0.0028,\n", + " 0.0525, 0.0060, -0.0101, -0.0201, 0.0198, 0.0057, -0.0068, -0.0626]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[-2.2600, -0.1454, 1.5346, 0.2137, 1.2929, -0.0720, -0.3438, -0.3578,\n", + " 0.7224, 0.7925, 0.9481, 0.1710, 0.5910, -0.2942, 1.4087, 0.6642,\n", + " 0.4330, 0.4197, 0.1487, -0.4447, 1.0907, 0.0978, -0.9345, -0.1559,\n", + " 0.8567, -0.1924, -1.2409, -2.8588, -2.0879, -1.6609, -1.6493, -0.3708,\n", + " 0.5735, -0.6347, -0.6806, 0.2989, 0.8233, 0.3805, 0.5660, -1.3135,\n", + " -1.0060, -0.0039, -1.2341]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.6303, 0.6288, 0.2536, 0.5383, 0.1844, -0.1932, -0.6603, -0.7986,\n", + " -0.3175, -0.4297, -0.3459, 0.3283, 0.2793, 0.4148, 0.3292, 0.4617,\n", + " 0.4549, 0.2351, 0.1009, 0.2208, 0.1078, 0.0508, 0.0739, 0.1435,\n", + " 0.0397, 0.1707, -0.1495, 0.0873, 0.3997, 0.4970, 0.4867, 0.3285,\n", + " 0.5333, 0.5723, 0.2532, 0.2299, -0.0229, 0.0546, 0.0271, -0.4931,\n", + " -0.5564, -0.5359, -0.3878]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004650799965020269\n", + "Grad encoder.fc1.bias: 0.00047888606786727905\n", + "Grad encoder.encoder.0.weight: 8.079833787633106e-05\n", + "Grad encoder.encoder.0.bias: 0.0006357233505696058\n", + "Grad encoder.encoder.2.weight: 4.982270911568776e-05\n", + "Grad encoder.encoder.2.bias: 0.000591371557675302\n", + "Grad encoder.encoder.4.weight: 0.0001618507958482951\n", + "Grad encoder.encoder.4.bias: 0.0014524825382977724\n", + "Grad decoder.fc1.0.weight: 5.68001159990672e-05\n", + "Grad decoder.fc1.0.bias: 0.0004901258507743478\n", + "Grad decoder.fc1.2.weight: 5.788825365016237e-05\n", + "Grad decoder.fc1.2.bias: 0.0004706517793238163\n", + "Grad decoder.fc1.4.weight: 5.729258191422559e-05\n", + "Grad decoder.fc1.4.bias: 0.0005005148705095053\n", + "Grad decoder.fc2.weight: 0.0002190485829487443\n", + "Grad decoder.fc2.bias: 0.00207488308660686\n", + "Grad _memory_unit.weight_ih_l0: 7.400259164569434e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.3868433092720807e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.9132128727505915e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.138490567129338e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010361916793044657\n", + "Grad _memory_unit.bias_hh_l1: 5.302487625158392e-05\n", + "Data X Sample: tensor([[1.5722, 1.8235, 2.0571, 2.1035, 2.1992, 2.2791, 2.3249, 2.3381, 2.3238,\n", + " 2.4533, 2.5125, 2.5824, 2.3546, 2.4156, 2.3807, 2.2975, 2.3004, 2.4276,\n", + " 2.4078, 2.4920, 2.6008, 2.5735, 2.5544, 2.5653, 2.5619, 2.6328, 2.5654,\n", + " 2.6429, 2.4284, 2.5448, 2.4007, 2.4262, 2.1296, 1.3960, 1.8310, 1.6880,\n", + " 1.6105, 1.5027, 1.5212, 1.5888, 1.2218, 0.7607, 0.7538, 1.3491, 2.0336,\n", + " 2.1958, 1.3870, 2.0486]], device='cuda:0')\n", + "Data Y Sample: tensor([[-2.6909e-02, -4.0208e-01, 2.5368e+00, -6.4438e-01, 2.2200e-01,\n", + " -6.3797e-01, -4.9926e-01, -2.2984e-01, -8.3143e-01, -3.2911e-01,\n", + " -1.6614e-01, 7.8195e-01, 2.8730e-01, 1.3514e+00, 2.3607e-03,\n", + " 7.3221e-01, 5.0763e-01, 3.0159e-01, 3.3046e-01, 8.1938e-01,\n", + " 5.4138e-01, 1.4624e+00, 5.6411e-01, 3.4009e-01, -1.3370e+00,\n", + " 1.9463e-02, 1.3725e-01, 3.2914e-01, 8.3899e-01, 7.5190e-01,\n", + " -4.9284e-01, -4.4608e-01, 1.0684e+00, 1.5669e-01, 6.8294e-01,\n", + " 1.6964e+00, 9.7765e-01, 7.3568e-01, 4.0193e-03, -2.2987e-01,\n", + " 5.6722e-02, -3.5600e-01, -3.6427e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5550, 0.5747, 0.2063, 0.4454, 0.1988, -0.1554, -0.5129, -0.6164,\n", + " -0.2835, -0.4005, -0.3385, 0.2535, 0.2165, 0.3633, 0.3000, 0.4417,\n", + " 0.4076, 0.1681, 0.0675, 0.1882, 0.0835, 0.0574, 0.0995, 0.0971,\n", + " 0.0281, 0.1337, -0.1447, -0.0029, 0.2929, 0.4017, 0.3767, 0.2556,\n", + " 0.4605, 0.4608, 0.2233, 0.2287, -0.0579, 0.0024, 0.0656, -0.4401,\n", + " -0.4923, -0.4568, -0.3253]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.001368622062727809\n", + "Grad encoder.fc1.bias: 0.0006400374695658684\n", + "Grad encoder.encoder.0.weight: 0.0002170049410779029\n", + "Grad encoder.encoder.0.bias: 0.0008320820052176714\n", + "Grad encoder.encoder.2.weight: 0.00016869399405550212\n", + "Grad encoder.encoder.2.bias: 0.0012837417889386415\n", + "Grad encoder.encoder.4.weight: 0.0005054122302681208\n", + "Grad encoder.encoder.4.bias: 0.004191223066300154\n", + "Grad decoder.fc1.0.weight: 0.00015305940178222954\n", + "Grad decoder.fc1.0.bias: 0.0008542287396267056\n", + "Grad decoder.fc1.2.weight: 9.753370250109583e-05\n", + "Grad decoder.fc1.2.bias: 0.0013072588481009007\n", + "Grad decoder.fc1.4.weight: 9.606149978935719e-05\n", + "Grad decoder.fc1.4.bias: 0.0009969492675736547\n", + "Grad decoder.fc2.weight: 0.0001286617771256715\n", + "Grad decoder.fc2.bias: 0.0025728964246809483\n", + "Grad _memory_unit.weight_ih_l0: 6.32958544883877e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00012320850510150194\n", + "Grad _memory_unit.bias_hh_l0: 9.434675303054973e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.2808104404248297e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00039207396912388504\n", + "Grad _memory_unit.bias_hh_l1: 0.00020499658421613276\n", + "Data X Sample: tensor([[1.5128, 1.8177, 1.9925, 2.0444, 2.1275, 2.2909, 2.3711, 2.4148, 2.4752,\n", + " 2.5734, 2.5252, 2.5259, 2.5632, 2.4702, 2.4816, 2.3440, 2.3743, 2.4276,\n", + " 2.5152, 2.4474, 2.4511, 2.5046, 2.5255, 2.4737, 2.4980, 2.5362, 2.5547,\n", + " 2.4594, 2.2827, 2.3614, 2.3097, 2.3544, 2.3166, 1.4875, 1.9756, 1.8071,\n", + " 1.6420, 1.5106, 1.6607, 1.6342, 1.2838, 0.6870, 0.7276, 1.3462, 1.8275,\n", + " 2.1500, 1.4550, 1.9548]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5506, -0.2237, 0.9538, -0.5285, 0.3145, 0.5250, 0.3266, -0.0236,\n", + " 0.3886, 0.5821, 0.3238, 0.5904, -0.3037, 0.0730, 0.3946, 0.4545,\n", + " 1.2793, 1.4455, 0.5492, 1.5779, 0.1436, 1.1622, 0.6757, 0.7413,\n", + " 0.3870, -0.2611, -1.2793, -0.5085, 0.9027, -0.5530, -0.5841, 0.4346,\n", + " 0.3034, 0.7148, 0.4441, -0.9899, 0.0501, -0.7806, -0.7130, 0.0645,\n", + " -0.0642, -1.1731, -0.2334]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5330, 0.5513, 0.2007, 0.4156, 0.1884, -0.1482, -0.4897, -0.5802,\n", + " -0.2709, -0.3826, -0.3276, 0.2383, 0.2103, 0.3480, 0.2914, 0.4259,\n", + " 0.3886, 0.1590, 0.0625, 0.1760, 0.0793, 0.0545, 0.0903, 0.0801,\n", + " 0.0333, 0.1283, -0.1353, -0.0070, 0.2854, 0.3795, 0.3545, 0.2390,\n", + " 0.4372, 0.4344, 0.2116, 0.2193, -0.0540, 0.0052, 0.0672, -0.4182,\n", + " -0.4660, -0.4329, -0.3078]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0009519846644252539\n", + "Grad encoder.fc1.bias: 0.000523831753525883\n", + "Grad encoder.encoder.0.weight: 0.00014534755609929562\n", + "Grad encoder.encoder.0.bias: 0.0006671190494671464\n", + "Grad encoder.encoder.2.weight: 0.00011463402188383043\n", + "Grad encoder.encoder.2.bias: 0.0010078843915835023\n", + "Grad encoder.encoder.4.weight: 0.00036613256088458\n", + "Grad encoder.encoder.4.bias: 0.0032018728088587523\n", + "Grad decoder.fc1.0.weight: 0.00010964906687149778\n", + "Grad decoder.fc1.0.bias: 0.0006441844743676484\n", + "Grad decoder.fc1.2.weight: 8.279125904664397e-05\n", + "Grad decoder.fc1.2.bias: 0.0010463575599715114\n", + "Grad decoder.fc1.4.weight: 8.553128282073885e-05\n", + "Grad decoder.fc1.4.bias: 0.0009016408585011959\n", + "Grad decoder.fc2.weight: 0.00013103977835271508\n", + "Grad decoder.fc2.bias: 0.0015499177388846874\n", + "Grad _memory_unit.weight_ih_l0: 4.8575500841252506e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.636068716645241e-05\n", + "Grad _memory_unit.bias_hh_l0: 7.397367880912498e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.7869095245259814e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002800317306537181\n", + "Grad _memory_unit.bias_hh_l1: 0.00014860798546578735\n", + "Data X Sample: tensor([[1.0969, 1.1230, 1.2968, 1.3753, 1.5145, 1.5337, 1.7625, 1.9080, 1.9186,\n", + " 3.6381, 4.0954, 4.0936, 4.0191, 3.7516, 3.6114, 3.5420, 3.5316, 3.5515,\n", + " 3.4424, 3.4274, 3.3418, 3.2149, 3.0074, 2.7829, 2.8265, 2.7425, 2.7252,\n", + " 2.8305, 2.6747, 2.9836, 2.9116, 2.9982, 3.4761, 2.5357, 4.2797, 4.7477,\n", + " 4.9418, 5.3191, 5.8123, 5.7225, 0.8591, 0.4979, 0.5073, 0.7865, 1.2884,\n", + " 1.3209, 0.9586, 1.2589]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4490, -0.9231, -0.2162, -0.2638, -1.6783, 0.1297, -0.4133, 0.4457,\n", + " 0.5932, 0.5281, 0.4350, -0.6770, -0.0625, -0.7479, -1.4096, -0.3064,\n", + " -0.7846, -4.4364, -0.8408, -0.7750, 0.5086, -2.0656, -0.8359, -0.5118,\n", + " 0.9692, 0.9078, -0.2547, 0.7364, 1.3997, 0.3144, 0.3514, -1.0679,\n", + " -0.3170, -0.7926, -0.8513, -0.3082, -0.5037, 0.1545, -0.7678, 0.7609,\n", + " 0.8259, 0.7159, 1.0496]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2938, -0.2967, -0.0718, -0.1661, 0.0649, 0.1694, 0.2107, 0.3377,\n", + " 0.2004, 0.2511, 0.2690, -0.2114, -0.2020, -0.3235, -0.1889, -0.2737,\n", + " -0.2224, -0.0596, -0.1203, -0.1262, -0.0698, -0.0082, -0.0232, -0.0584,\n", + " -0.0109, 0.0948, -0.0750, -0.1593, -0.2243, -0.2347, -0.2824, -0.2357,\n", + " -0.2976, -0.3131, -0.1888, -0.1830, -0.0560, 0.0132, 0.0764, 0.3578,\n", + " 0.3353, 0.3801, 0.2907]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00025149318389594555\n", + "Grad encoder.fc1.bias: 0.00019696043455041945\n", + "Grad encoder.encoder.0.weight: 4.376589640742168e-05\n", + "Grad encoder.encoder.0.bias: 0.0001573158078826964\n", + "Grad encoder.encoder.2.weight: 3.410434874240309e-05\n", + "Grad encoder.encoder.2.bias: 0.00013441304326988757\n", + "Grad encoder.encoder.4.weight: 9.487580973654985e-05\n", + "Grad encoder.encoder.4.bias: 0.0003778731916099787\n", + "Grad decoder.fc1.0.weight: 3.2719231967348605e-05\n", + "Grad decoder.fc1.0.bias: 0.00011779986380133778\n", + "Grad decoder.fc1.2.weight: 3.720692257047631e-05\n", + "Grad decoder.fc1.2.bias: 0.0001788780646165833\n", + "Grad decoder.fc1.4.weight: 6.208356353454292e-05\n", + "Grad decoder.fc1.4.bias: 0.00047461630310863256\n", + "Grad decoder.fc2.weight: 0.0001246576284756884\n", + "Grad decoder.fc2.bias: 0.0017588159535080194\n", + "Grad _memory_unit.weight_ih_l0: 2.813662604239653e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.385441338352393e-06\n", + "Grad _memory_unit.bias_hh_l0: 3.46329647982202e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.2992913980269805e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.2064799597719684e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.6440542822238058e-05\n", + "Data X Sample: tensor([[1.4777, 1.6517, 1.9309, 2.1122, 2.0592, 1.8740, 2.3002, 3.8472, 4.2425,\n", + " 4.1562, 4.3873, 4.2124, 4.1411, 4.0461, 3.8434, 3.5351, 3.5599, 3.7082,\n", + " 3.5663, 3.3698, 3.2854, 3.2348, 2.8195, 2.8783, 2.7646, 2.8313, 2.8265,\n", + " 2.8468, 3.0008, 2.9116, 3.0026, 3.1640, 3.4827, 2.5402, 4.2822, 4.6383,\n", + " 4.9555, 5.3774, 5.8884, 5.7622, 1.1168, 0.7109, 0.7013, 1.2630, 1.8671,\n", + " 2.0471, 1.3258, 1.9079]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5110, -0.7088, 0.5454, -0.0379, 0.1075, -0.3695, -0.0812, 0.1381,\n", + " 0.5945, 0.2041, 0.4956, -0.4096, -1.0099, -0.2316, -0.0922, 0.0346,\n", + " 0.3752, 0.0314, 1.6471, 1.0470, -0.3116, 2.6031, 2.1991, 0.0139,\n", + " 0.4145, 0.3931, -0.3582, -0.7950, -0.9295, -0.7054, -0.3667, -0.1536,\n", + " -0.8948, -0.1381, 0.2035, -0.4357, 0.9536, -0.7725, 0.2253, 0.4070,\n", + " 0.4884, 0.6918, 0.7223]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2671, -0.2780, -0.0654, -0.1640, 0.0480, 0.1480, 0.1853, 0.3090,\n", + " 0.1822, 0.2326, 0.2397, -0.1926, -0.1827, -0.2934, -0.1740, -0.2563,\n", + " -0.2150, -0.0578, -0.1091, -0.1209, -0.0609, -0.0115, -0.0254, -0.0602,\n", + " -0.0124, 0.0862, -0.0614, -0.1342, -0.1990, -0.2168, -0.2572, -0.2137,\n", + " -0.2748, -0.2870, -0.1753, -0.1683, -0.0535, 0.0140, 0.0633, 0.3299,\n", + " 0.3177, 0.3483, 0.2682]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 9.88069805316627e-05\n", + "Grad encoder.fc1.bias: 8.888811862561852e-05\n", + "Grad encoder.encoder.0.weight: 2.6839168640435673e-05\n", + "Grad encoder.encoder.0.bias: 7.966201519593596e-05\n", + "Grad encoder.encoder.2.weight: 1.8459752027411014e-05\n", + "Grad encoder.encoder.2.bias: 9.896798292174935e-05\n", + "Grad encoder.encoder.4.weight: 7.44238423067145e-05\n", + "Grad encoder.encoder.4.bias: 0.0003997842431999743\n", + "Grad decoder.fc1.0.weight: 2.3939441234688275e-05\n", + "Grad decoder.fc1.0.bias: 0.0001391405239701271\n", + "Grad decoder.fc1.2.weight: 3.093159102718346e-05\n", + "Grad decoder.fc1.2.bias: 0.0001643256691750139\n", + "Grad decoder.fc1.4.weight: 3.620876668719575e-05\n", + "Grad decoder.fc1.4.bias: 0.0003012063098140061\n", + "Grad decoder.fc2.weight: 8.766297105466947e-05\n", + "Grad decoder.fc2.bias: 0.001795864081941545\n", + "Grad _memory_unit.weight_ih_l0: 1.5439244407389197e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.4027500381344e-06\n", + "Grad _memory_unit.bias_hh_l0: 5.067258825874887e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.1261976169407717e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.372429637238383e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.7034164557117037e-05\n", + "Data X Sample: tensor([[1.1860, 1.3079, 1.5567, 1.7296, 1.8970, 2.0213, 2.0660, 2.0443, 3.6884,\n", + " 3.8482, 3.9368, 3.8521, 3.6396, 3.6453, 3.6114, 3.4161, 3.2737, 3.4180,\n", + " 3.3619, 3.4442, 3.3712, 3.2302, 2.7761, 2.8745, 2.7608, 2.9175, 2.9756,\n", + " 2.9610, 3.0529, 3.1933, 3.3910, 3.3353, 3.3309, 2.3640, 4.0052, 4.4242,\n", + " 4.8041, 5.2793, 5.6285, 5.5693, 0.9259, 0.5556, 0.5719, 0.9960, 1.4509,\n", + " 1.5554, 1.1218, 1.7437]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4512, -0.1229, 0.3794, 0.0631, 0.3331, 0.0222, 0.3999, 0.4424,\n", + " 0.1513, -0.6347, 0.7457, 0.0832, -0.0145, 0.7059, 0.1556, 1.3313,\n", + " 0.8651, 0.9584, -0.5793, 0.0596, -0.0773, -0.1337, 0.4195, 0.6820,\n", + " -0.1935, -0.5016, -0.9335, 0.0771, 0.5310, -0.4406, 0.2591, -0.0256,\n", + " -0.2754, 0.6732, -0.5356, -0.1862, -0.4493, 0.2186, -0.5993, 0.0964,\n", + " 0.3230, 0.4533, -0.1614]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2797, -0.2913, -0.0674, -0.1576, 0.0687, 0.1671, 0.2030, 0.3274,\n", + " 0.2023, 0.2510, 0.2579, -0.2050, -0.1934, -0.3156, -0.1859, -0.2752,\n", + " -0.2261, -0.0603, -0.1128, -0.1278, -0.0617, -0.0102, -0.0268, -0.0644,\n", + " -0.0098, 0.0884, -0.0747, -0.1556, -0.2220, -0.2401, -0.2811, -0.2313,\n", + " -0.3001, -0.3090, -0.1920, -0.1781, -0.0563, 0.0148, 0.0685, 0.3465,\n", + " 0.3340, 0.3714, 0.2873]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.001748627400957048\n", + "Grad encoder.fc1.bias: 0.001037529087625444\n", + "Grad encoder.encoder.0.weight: 0.00027428835164755583\n", + "Grad encoder.encoder.0.bias: 0.0013710134662687778\n", + "Grad encoder.encoder.2.weight: 0.00019664732099045068\n", + "Grad encoder.encoder.2.bias: 0.001820411765947938\n", + "Grad encoder.encoder.4.weight: 0.0006032005185261369\n", + "Grad encoder.encoder.4.bias: 0.006355497986078262\n", + "Grad decoder.fc1.0.weight: 0.00020622758893296123\n", + "Grad decoder.fc1.0.bias: 0.0012883456656709313\n", + "Grad decoder.fc1.2.weight: 0.00011316862219246104\n", + "Grad decoder.fc1.2.bias: 0.00218910607509315\n", + "Grad decoder.fc1.4.weight: 0.00010059357737191021\n", + "Grad decoder.fc1.4.bias: 0.001129550626501441\n", + "Grad decoder.fc2.weight: 0.00014207029016688466\n", + "Grad decoder.fc2.bias: 0.001741106272675097\n", + "Grad _memory_unit.weight_ih_l0: 8.05668969405815e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00019335930119268596\n", + "Grad _memory_unit.bias_hh_l0: 0.0001384932256769389\n", + "Grad _memory_unit.weight_ih_l1: 3.492216637823731e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.000563042878638953\n", + "Grad _memory_unit.bias_hh_l1: 0.00029210204957053065\n", + "Data X Sample: tensor([[1.4173, 1.5585, 1.7806, 1.9307, 1.9653, 1.8740, 1.4605, 3.2807, 4.3206,\n", + " 4.3000, 4.3175, 4.4442, 4.2565, 4.0733, 3.9947, 3.7156, 3.6180, 3.8358,\n", + " 3.5890, 3.4386, 3.4817, 3.2884, 2.9737, 2.8363, 2.7927, 2.8940, 2.9756,\n", + " 2.9570, 2.8759, 3.0983, 3.0446, 3.0866, 3.6631, 2.7622, 4.5763, 4.7891,\n", + " 5.0637, 5.5788, 6.0532, 5.9949, 1.0882, 0.6592, 0.6669, 1.1080, 1.6967,\n", + " 1.8756, 1.2374, 1.7671]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0929, -0.1387, 0.3127, -0.5400, -0.1485, 0.5967, 0.6400, 0.3108,\n", + " 0.6740, 0.2541, 0.2493, 0.3072, -1.2365, -0.3504, -0.8984, -1.0490,\n", + " 0.0599, -0.6171, -0.4509, -0.0758, 0.2475, 0.3882, 0.1555, 0.3435,\n", + " -0.6465, 0.5181, -0.2597, 0.7040, -0.6730, -0.2761, -0.7390, 0.2436,\n", + " 0.2152, -0.7969, -0.0724, -0.3248, 0.7063, -0.1011, 1.1148, 0.4120,\n", + " 0.4389, 0.4719, -0.2725]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2798, -0.2928, -0.0672, -0.1562, 0.0699, 0.1664, 0.2021, 0.3273,\n", + " 0.2026, 0.2521, 0.2588, -0.2039, -0.1920, -0.3170, -0.1869, -0.2773,\n", + " -0.2282, -0.0609, -0.1129, -0.1289, -0.0602, -0.0103, -0.0272, -0.0632,\n", + " -0.0079, 0.0872, -0.0748, -0.1558, -0.2210, -0.2422, -0.2825, -0.2326,\n", + " -0.3023, -0.3122, -0.1932, -0.1788, -0.0559, 0.0162, 0.0659, 0.3482,\n", + " 0.3366, 0.3742, 0.2899]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00014116305101197213\n", + "Grad encoder.fc1.bias: 0.00046075668069534004\n", + "Grad encoder.encoder.0.weight: 4.53079555882141e-05\n", + "Grad encoder.encoder.0.bias: 0.0004262084257788956\n", + "Grad encoder.encoder.2.weight: 3.555659350240603e-05\n", + "Grad encoder.encoder.2.bias: 0.0005581230507232249\n", + "Grad encoder.encoder.4.weight: 0.0001577141956659034\n", + "Grad encoder.encoder.4.bias: 0.002096962183713913\n", + "Grad decoder.fc1.0.weight: 5.881105244043283e-05\n", + "Grad decoder.fc1.0.bias: 0.0005839596269652247\n", + "Grad decoder.fc1.2.weight: 6.994982686592266e-05\n", + "Grad decoder.fc1.2.bias: 0.0004621358239091933\n", + "Grad decoder.fc1.4.weight: 7.82471543061547e-05\n", + "Grad decoder.fc1.4.bias: 0.0006162113859318197\n", + "Grad decoder.fc2.weight: 0.00014790800923947245\n", + "Grad decoder.fc2.bias: 0.0024055861867964268\n", + "Grad _memory_unit.weight_ih_l0: 1.0518310773477424e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.934654811630026e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.6357465432956815e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.853435257246019e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00015877062105573714\n", + "Grad _memory_unit.bias_hh_l1: 8.123315637931228e-05\n", + "Data X Sample: tensor([[0.0149, 0.0364, 0.0496, 0.0743, 0.0802, 0.1164, 0.1248, 0.1547, 0.1806,\n", + " 0.2054, 0.2443, 0.3038, 0.3218, 0.3326, 0.3430, 0.3815, 0.3915, 0.4082,\n", + " 0.3944, 0.3850, 0.4196, 0.4118, 0.4121, 0.3760, 0.3397, 0.3134, 0.3117,\n", + " 0.3834, 0.1804, 0.2325, 0.1890, 0.1741, 0.1496, 0.0893, 0.1471, 0.1411,\n", + " 0.0728, 0.1140, 0.1141, 0.0823, 0.0668, 0.0179, 0.0243, 0.0287, 0.0912,\n", + " 0.0572, 0.0884, 0.0704]], device='cuda:0')\n", + "Data Y Sample: tensor([[-3.4038e-01, 2.2443e-01, 9.2344e-01, -1.6898e-01, -1.6861e+00,\n", + " -1.9907e+00, -5.1110e-01, -2.0357e-01, 8.7215e-01, 1.4762e+00,\n", + " 1.0616e+00, 6.1880e-01, 4.6766e-01, 5.7463e-01, 1.0554e-01,\n", + " -6.8076e-01, 4.2664e-04, 2.2680e-01, 2.2587e+00, 1.9976e+00,\n", + " -3.2702e-01, 8.5670e-01, 1.8919e+00, 2.3182e+00, 6.8443e-01,\n", + " 4.9042e-01, 6.7698e-01, -8.4058e-01, 5.6430e-01, 1.1506e+00,\n", + " -6.5598e-02, -1.4904e+00, 9.2120e-01, 3.2737e-01, -1.5645e+00,\n", + " 1.5398e+00, 5.0088e-02, 9.3982e-02, 2.8698e-01, -4.4700e-01,\n", + " -2.6111e-01, -1.0722e+00, -1.7566e+00]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 2.3087e-01, 1.8992e-01, 5.9730e-02, 1.4899e-01, -2.4225e-02,\n", + " -1.1754e-01, -3.5229e-01, -2.7958e-01, -1.3029e-01, -8.9886e-02,\n", + " -1.4480e-02, 1.1468e-01, 9.3292e-02, 1.2245e-01, 1.4076e-01,\n", + " 1.1603e-01, 1.1036e-01, 9.1052e-02, -7.3804e-03, 8.9074e-02,\n", + " 4.2166e-02, 1.3321e-03, 2.0645e-02, 3.8711e-02, 6.1209e-02,\n", + " 7.0415e-02, 2.5319e-02, 1.0698e-01, 2.3977e-01, 1.7722e-01,\n", + " 1.9230e-01, 1.0800e-01, 1.8751e-01, 1.7727e-01, 1.0416e-01,\n", + " 4.0705e-02, -4.5959e-02, 5.2675e-02, 4.2114e-02, 6.1105e-02,\n", + " 5.9553e-02, -2.7062e-02, -2.6269e-04]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.001460101455450058\n", + "Grad encoder.fc1.bias: 0.0012272503226995468\n", + "Grad encoder.encoder.0.weight: 0.00023475417401641607\n", + "Grad encoder.encoder.0.bias: 0.0012612867867574096\n", + "Grad encoder.encoder.2.weight: 0.00019722872821148485\n", + "Grad encoder.encoder.2.bias: 0.0019234693609178066\n", + "Grad encoder.encoder.4.weight: 0.000572701683267951\n", + "Grad encoder.encoder.4.bias: 0.005273010581731796\n", + "Grad decoder.fc1.0.weight: 0.00017320140614174306\n", + "Grad decoder.fc1.0.bias: 0.0011121212737634778\n", + "Grad decoder.fc1.2.weight: 0.00010537481284700334\n", + "Grad decoder.fc1.2.bias: 0.0013458416797220707\n", + "Grad decoder.fc1.4.weight: 7.912665751064196e-05\n", + "Grad decoder.fc1.4.bias: 0.0008569154888391495\n", + "Grad decoder.fc2.weight: 0.0001255334063898772\n", + "Grad decoder.fc2.bias: 0.0020577076356858015\n", + "Grad _memory_unit.weight_ih_l0: 6.482289609266445e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00012010655336780474\n", + "Grad _memory_unit.bias_hh_l0: 9.777273226063699e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.2311287466436625e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0003975132422056049\n", + "Grad _memory_unit.bias_hh_l1: 0.0002053208590950817\n", + "Data X Sample: tensor([[1.2974, 1.4696, 1.6003, 1.6771, 1.8082, 1.8814, 2.0275, 2.0357, 2.1945,\n", + " 3.7897, 3.9686, 3.9476, 3.8327, 3.6126, 3.5307, 3.5638, 3.4498, 3.4412,\n", + " 3.2999, 3.2861, 3.2780, 3.1521, 2.8291, 2.6951, 2.7439, 2.7634, 2.8158,\n", + " 2.7816, 2.8170, 2.9738, 3.1216, 3.1723, 3.4321, 2.5952, 4.2527, 4.6918,\n", + " 4.7038, 5.0964, 5.8250, 5.4955, 1.0118, 0.5954, 0.5922, 1.0305, 1.4311,\n", + " 1.6697, 1.1150, 1.6889]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5307, 0.4902, 0.3031, 0.2651, 0.9753, 0.9968, 0.5934, 0.2533,\n", + " 0.0592, -0.1038, 0.4532, -1.3927, -0.8909, 0.6896, -0.0576, -0.0530,\n", + " 0.4940, 0.6182, 2.0906, 0.6775, 1.2368, -0.0811, 1.5325, 0.6217,\n", + " -1.2923, 1.2474, -1.0779, -0.8380, -1.1458, -1.0710, -0.3192, -0.0920,\n", + " -1.0762, -0.2745, 0.1807, -1.2749, 0.0235, -0.3643, -0.2715, 0.1434,\n", + " 0.2521, -0.1211, 0.5123]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2687, -0.2888, -0.0664, -0.1541, 0.0648, 0.1565, 0.1909, 0.3159,\n", + " 0.1975, 0.2473, 0.2495, -0.1924, -0.1821, -0.3040, -0.1811, -0.2738,\n", + " -0.2267, -0.0619, -0.1104, -0.1271, -0.0559, -0.0113, -0.0284, -0.0626,\n", + " -0.0069, 0.0821, -0.0692, -0.1449, -0.2083, -0.2369, -0.2731, -0.2260,\n", + " -0.2947, -0.3056, -0.1891, -0.1738, -0.0527, 0.0172, 0.0560, 0.3383,\n", + " 0.3334, 0.3642, 0.2836]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00010979387297993526\n", + "Grad encoder.fc1.bias: 0.00035357160959392786\n", + "Grad encoder.encoder.0.weight: 3.5395496524870396e-05\n", + "Grad encoder.encoder.0.bias: 0.0005173608078621328\n", + "Grad encoder.encoder.2.weight: 2.7608642994891852e-05\n", + "Grad encoder.encoder.2.bias: 0.0005510372575372458\n", + "Grad encoder.encoder.4.weight: 0.00010559899237705395\n", + "Grad encoder.encoder.4.bias: 0.0015019525308161974\n", + "Grad decoder.fc1.0.weight: 4.673780131270178e-05\n", + "Grad decoder.fc1.0.bias: 0.000498543493449688\n", + "Grad decoder.fc1.2.weight: 5.627925565931946e-05\n", + "Grad decoder.fc1.2.bias: 0.00040101769263856113\n", + "Grad decoder.fc1.4.weight: 6.36740296613425e-05\n", + "Grad decoder.fc1.4.bias: 0.00047493059537373483\n", + "Grad decoder.fc2.weight: 0.00010254890366923064\n", + "Grad decoder.fc2.bias: 0.0017035930650308728\n", + "Grad _memory_unit.weight_ih_l0: 6.9410784817591775e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.62499083369039e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.4113520339597017e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.3431970223318785e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011052390618715435\n", + "Grad _memory_unit.bias_hh_l1: 5.630910163745284e-05\n", + "Data X Sample: tensor([[-0.0021, 0.0073, -0.0060, 0.0044, 0.0000, 0.0044, 0.0015, -0.0014,\n", + " 0.0098, 0.0079, 0.0190, 0.0000, -0.0089, 0.0000, -0.0177, 0.0041,\n", + " 0.0157, 0.0135, 0.0062, 0.0074, 0.0417, 0.0122, 0.0193, 0.0115,\n", + " 0.0206, 0.0235, 0.0320, 0.1142, 0.0104, 0.0164, 0.0035, -0.0083,\n", + " 0.0000, 0.0092, 0.0025, 0.0316, 0.0197, -0.0106, 0.0254, 0.0142,\n", + " 0.0143, 0.0119, 0.0000, 0.0000, 0.0277, 0.0057, -0.0748, -0.0626]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5706, 0.4077, 2.0226, 0.1799, -0.4976, -1.1524, -2.2667, -1.6029,\n", + " -1.6399, -0.7500, -0.8835, 0.7431, 1.1117, 0.6743, 0.3059, 0.1312,\n", + " 0.5911, 0.3552, -0.1336, -0.1419, -0.3458, 0.0854, 0.1559, 0.1989,\n", + " -0.0289, 0.1997, -2.2780, -0.2164, 1.2701, 1.3860, 0.8252, 0.8752,\n", + " 1.4187, 3.3090, 1.0491, 0.2552, -0.5037, 0.8238, 0.5659, -0.8207,\n", + " -0.5773, -0.3100, -0.2807]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 1.0036, 0.7462, 0.1299, 0.4289, -0.5887, -0.6628, -1.3277, -1.2268,\n", + " -0.8844, -0.9745, -0.9315, 0.3407, 0.4575, 0.6588, 0.5467, 0.5751,\n", + " 0.3901, 0.1465, -0.0253, 0.2207, 0.1385, 0.1181, 0.0844, 0.1696,\n", + " 0.0031, 0.0682, 0.2813, 0.4875, 1.1101, 1.1526, 0.8682, 0.5466,\n", + " 0.7733, 0.7115, 0.3061, 0.3624, -0.1339, 0.0318, 0.1855, -0.9059,\n", + " -0.8355, -0.6278, -0.3360]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 8.500701369484887e-05\n", + "Grad encoder.fc1.bias: 0.0001100606459658593\n", + "Grad encoder.encoder.0.weight: 1.671054633334279e-05\n", + "Grad encoder.encoder.0.bias: 0.00011922159319510683\n", + "Grad encoder.encoder.2.weight: 1.3965996004117187e-05\n", + "Grad encoder.encoder.2.bias: 0.00013109961582813412\n", + "Grad encoder.encoder.4.weight: 6.243183452170342e-05\n", + "Grad encoder.encoder.4.bias: 0.0002975788083858788\n", + "Grad decoder.fc1.0.weight: 1.925681863212958e-05\n", + "Grad decoder.fc1.0.bias: 9.970375685952604e-05\n", + "Grad decoder.fc1.2.weight: 2.0766452507814392e-05\n", + "Grad decoder.fc1.2.bias: 0.00012742550461553037\n", + "Grad decoder.fc1.4.weight: 3.2301930332323536e-05\n", + "Grad decoder.fc1.4.bias: 0.00030759716173633933\n", + "Grad decoder.fc2.weight: 9.588089596945792e-05\n", + "Grad decoder.fc2.bias: 0.0015852759825065732\n", + "Grad _memory_unit.weight_ih_l0: 4.376724518806441e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.4764547813683748e-05\n", + "Grad _memory_unit.bias_hh_l0: 7.638818715349771e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.3700532690563705e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.743207551247906e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.4092094716033898e-05\n", + "Data X Sample: tensor([[1.4905, 1.7099, 1.7806, 1.9766, 2.1463, 2.2438, 2.4512, 2.4886, 2.5240,\n", + " 2.6571, 2.4807, 2.5687, 2.4612, 2.5274, 2.4689, 2.4616, 2.5111, 2.4973,\n", + " 2.4305, 2.5013, 2.4315, 2.3668, 2.3664, 2.3286, 2.3610, 2.3533, 2.2724,\n", + " 2.4349, 2.1335, 2.2893, 2.1662, 2.2825, 2.2308, 1.4624, 1.9781, 1.7488,\n", + " 1.6400, 1.4974, 1.6226, 1.6087, 1.2218, 0.7030, 0.6851, 1.1453, 1.7839,\n", + " 2.0014, 1.3462, 1.7437]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.2079, 1.1093, -0.8115, 1.5844, 1.0441, 1.1841, -0.6563, -0.8619,\n", + " -0.4643, -0.7519, -0.8025, 0.1238, 1.3380, 1.3339, 0.7531, 1.3540,\n", + " 1.5542, 0.2075, 0.5475, 0.0610, 0.7786, 0.8030, 0.5127, 0.3034,\n", + " 1.6265, -1.0327, -0.0079, -0.0688, 0.5046, 0.5548, 0.2239, 0.6734,\n", + " 0.3013, 0.4778, 0.1769, 0.9883, 0.3997, 0.6228, -0.0231, -0.7836,\n", + " -0.8426, -0.4766, -0.5179]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3029, 0.2589, 0.1102, 0.1475, 0.0607, -0.0881, -0.2732, -0.2599,\n", + " -0.1431, -0.1786, -0.1961, 0.1059, 0.1106, 0.1975, 0.1726, 0.2098,\n", + " 0.1746, 0.0663, 0.0073, 0.0780, 0.0437, 0.0315, 0.0297, 0.0048,\n", + " 0.0153, 0.0801, -0.0571, -0.0130, 0.1827, 0.1661, 0.1466, 0.1085,\n", + " 0.1996, 0.1814, 0.0922, 0.1062, -0.0301, 0.0116, 0.0146, -0.1923,\n", + " -0.1758, -0.1757, -0.1464]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00010706264583859593\n", + "Grad encoder.fc1.bias: 0.00040730665205046535\n", + "Grad encoder.encoder.0.weight: 2.106418105540797e-05\n", + "Grad encoder.encoder.0.bias: 0.0003253471804782748\n", + "Grad encoder.encoder.2.weight: 2.0780667910003103e-05\n", + "Grad encoder.encoder.2.bias: 0.00027055031387135386\n", + "Grad encoder.encoder.4.weight: 7.306876068469137e-05\n", + "Grad encoder.encoder.4.bias: 0.0005817230558022857\n", + "Grad decoder.fc1.0.weight: 3.4463824704289436e-05\n", + "Grad decoder.fc1.0.bias: 0.00021246934193186462\n", + "Grad decoder.fc1.2.weight: 3.994337748736143e-05\n", + "Grad decoder.fc1.2.bias: 0.00029736527358181775\n", + "Grad decoder.fc1.4.weight: 5.137942571309395e-05\n", + "Grad decoder.fc1.4.bias: 0.0004034732992295176\n", + "Grad decoder.fc2.weight: 0.00011188419011887163\n", + "Grad decoder.fc2.bias: 0.0018932712264358997\n", + "Grad _memory_unit.weight_ih_l0: 5.27856082044309e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.7995087546296418e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.376220987178385e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.0608247268683044e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.7294382713735104e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.9315449864952825e-05\n", + "Data X Sample: tensor([[2.0177, 1.7595, 1.9204, 2.0532, 2.1531, 2.0316, 3.1029, 3.8969, 4.2376,\n", + " 4.2652, 4.2001, 4.1423, 4.0280, 3.9970, 3.9997, 3.6979, 3.5866, 3.6946,\n", + " 3.5332, 3.3642, 3.4252, 3.3527, 2.8773, 2.7714, 2.7758, 2.8052, 2.8744,\n", + " 2.8713, 2.7684, 2.9542, 3.0516, 3.0645, 3.3397, 2.5677, 4.1768, 4.6018,\n", + " 4.8454, 5.1600, 5.9898, 5.8104, 1.1741, 0.6791, 0.6669, 1.2199, 1.7363,\n", + " 1.9728, 1.2714, 1.7828]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.8525, -0.1462, 0.1043, -0.1956, 0.0391, -0.9205, 0.6176, 0.8895,\n", + " 1.1925, 0.6517, 0.6824, -1.9703, -0.8515, -0.7576, 0.1541, -0.6950,\n", + " -1.1199, -0.7004, -1.7897, -1.8624, 0.4158, -1.8764, -0.5906, -0.2040,\n", + " -1.4022, -1.1445, -0.7134, -0.4871, -1.2820, -1.2546, -0.1930, -0.1925,\n", + " -0.1190, -0.3711, -0.0334, -0.6427, 0.9776, 0.1511, 0.0040, 0.8156,\n", + " 0.9605, 0.8330, 0.9675]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2326, -0.2688, -0.0613, -0.1523, 0.0457, 0.1293, 0.1572, 0.2773,\n", + " 0.1774, 0.2267, 0.2154, -0.1647, -0.1503, -0.2591, -0.1605, -0.2535,\n", + " -0.2133, -0.0578, -0.0952, -0.1180, -0.0468, -0.0164, -0.0294, -0.0666,\n", + " -0.0077, 0.0660, -0.0539, -0.1112, -0.1765, -0.2160, -0.2402, -0.1988,\n", + " -0.2651, -0.2723, -0.1740, -0.1545, -0.0467, 0.0189, 0.0352, 0.2995,\n", + " 0.3107, 0.3211, 0.2552]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002439311210764572\n", + "Grad encoder.fc1.bias: 0.0004512005252763629\n", + "Grad encoder.encoder.0.weight: 3.595055750338361e-05\n", + "Grad encoder.encoder.0.bias: 0.0004893034929409623\n", + "Grad encoder.encoder.2.weight: 3.904481854988262e-05\n", + "Grad encoder.encoder.2.bias: 0.0006280675297603011\n", + "Grad encoder.encoder.4.weight: 0.00014960431144572794\n", + "Grad encoder.encoder.4.bias: 0.0016268942272290587\n", + "Grad decoder.fc1.0.weight: 6.284341361606494e-05\n", + "Grad decoder.fc1.0.bias: 0.00040918090962804854\n", + "Grad decoder.fc1.2.weight: 8.109144982881844e-05\n", + "Grad decoder.fc1.2.bias: 0.0017971076304093003\n", + "Grad decoder.fc1.4.weight: 8.736518793739378e-05\n", + "Grad decoder.fc1.4.bias: 0.0007278025732375681\n", + "Grad decoder.fc2.weight: 0.00021296957856975496\n", + "Grad decoder.fc2.bias: 0.0018893767846748233\n", + "Grad _memory_unit.weight_ih_l0: 3.198709600837901e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.724216604605317e-05\n", + "Grad _memory_unit.bias_hh_l0: 6.0022306570317596e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.8967495634569786e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00019511530990712345\n", + "Grad _memory_unit.bias_hh_l1: 0.00010920403292402625\n", + "Data X Sample: tensor([[1.4247, 1.6153, 1.7716, 1.8039, 1.9038, 2.0920, 2.0891, 3.2935, 4.3084,\n", + " 4.4153, 4.2921, 4.2748, 4.0635, 4.0215, 3.9165, 3.8497, 3.7454, 3.5167,\n", + " 3.5704, 3.4758, 3.4596, 3.4614, 3.0942, 2.8936, 2.8265, 2.8417, 2.8424,\n", + " 2.8387, 2.8586, 3.1376, 3.1776, 3.2110, 3.6367, 2.6775, 4.6057, 4.8474,\n", + " 4.9831, 5.4489, 6.0088, 5.7821, 1.0691, 0.6034, 0.6649, 1.0936, 1.5024,\n", + " 1.7898, 1.1558, 1.6342]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2461, 0.5663, -1.0704, 0.3328, 0.2305, -0.6087, 0.7954, 0.6361,\n", + " -0.6475, -0.5782, -0.6287, -0.5199, -0.3603, -0.3450, -0.5151, -0.9211,\n", + " 0.5448, 0.4007, 0.1265, 0.0568, -1.4070, 0.0157, 0.4842, 0.3124,\n", + " 0.3954, -0.5594, 0.7161, -1.0407, 0.6378, 0.4108, 0.3335, 1.7565,\n", + " 0.5549, 0.1136, 0.0601, -0.9864, -0.3615, -0.0920, 0.2870, 0.2236,\n", + " -0.8668, -0.1328, 0.9741]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2418, -0.2826, -0.0650, -0.1389, 0.0791, 0.1529, 0.1772, 0.2930,\n", + " 0.2078, 0.2525, 0.2342, -0.1777, -0.1599, -0.2799, -0.1709, -0.2798,\n", + " -0.2267, -0.0609, -0.0941, -0.1231, -0.0477, -0.0159, -0.0329, -0.0744,\n", + " -0.0055, 0.0641, -0.0728, -0.1352, -0.2074, -0.2486, -0.2660, -0.2194,\n", + " -0.2971, -0.2933, -0.1982, -0.1616, -0.0493, 0.0218, 0.0394, 0.3105,\n", + " 0.3258, 0.3417, 0.2728]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 4.3533345888135955e-05\n", + "Grad encoder.fc1.bias: 0.00041637493995949626\n", + "Grad encoder.encoder.0.weight: 1.6894511645659804e-05\n", + "Grad encoder.encoder.0.bias: 0.0004979491932317615\n", + "Grad encoder.encoder.2.weight: 1.9996528862975538e-05\n", + "Grad encoder.encoder.2.bias: 0.00037761719431728125\n", + "Grad encoder.encoder.4.weight: 7.229098991956562e-05\n", + "Grad encoder.encoder.4.bias: 0.0008103296859189868\n", + "Grad decoder.fc1.0.weight: 3.154913065372966e-05\n", + "Grad decoder.fc1.0.bias: 0.00022968770645093173\n", + "Grad decoder.fc1.2.weight: 3.9917002141010016e-05\n", + "Grad decoder.fc1.2.bias: 0.00026166305178776383\n", + "Grad decoder.fc1.4.weight: 4.971307862433605e-05\n", + "Grad decoder.fc1.4.bias: 0.00038865284295752645\n", + "Grad decoder.fc2.weight: 0.0001136928258347325\n", + "Grad decoder.fc2.bias: 0.0019075644668191671\n", + "Grad _memory_unit.weight_ih_l0: 6.639659204665804e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.2118851120467298e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.1632544556050561e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.291110376972938e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.612662062048912e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.8795020625693724e-05\n", + "Data X Sample: tensor([[1.4650, 1.7405, 1.9173, 1.9635, 2.0523, 2.3675, 2.4358, 2.4957, 2.6143,\n", + " 2.6002, 2.6362, 2.5571, 2.5455, 2.5765, 2.4185, 2.5614, 2.4969, 2.5553,\n", + " 2.5214, 2.4418, 2.3775, 2.3637, 2.4074, 2.4202, 2.4793, 2.4604, 2.3683,\n", + " 2.3370, 2.1023, 2.3221, 2.3202, 2.3820, 2.2726, 1.4715, 1.9364, 1.8412,\n", + " 1.6164, 1.5106, 1.5402, 1.5718, 1.2695, 0.6910, 0.7457, 1.2486, 1.7363,\n", + " 1.8298, 1.3394, 1.8297]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0840, 1.4080, 0.2457, 0.9742, -0.6713, -0.9174, -0.9050, -0.5630,\n", + " -0.4519, -0.7545, -0.6923, 0.5146, 0.3970, 0.6490, -0.2847, 0.5885,\n", + " 0.4368, 0.3759, 0.1943, 2.0135, -0.2370, 0.1263, 0.6110, 0.6577,\n", + " -0.8267, 0.2556, 1.2426, 0.6881, 0.8990, 0.4526, 0.7076, -0.3164,\n", + " 0.9824, 0.0586, 1.4160, 0.7134, -0.5204, -0.5073, -0.1229, -0.3671,\n", + " -0.6549, -0.5158, -1.1453]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 2.7714e-01, 2.0280e-01, 8.9457e-02, 1.2760e-01, 4.4522e-02,\n", + " -7.6238e-02, -2.5467e-01, -2.3154e-01, -1.3888e-01, -1.5211e-01,\n", + " -1.8538e-01, 9.1407e-02, 1.0905e-01, 1.8689e-01, 1.5190e-01,\n", + " 1.8193e-01, 1.3281e-01, 6.2972e-02, 6.5301e-03, 6.0354e-02,\n", + " 3.6160e-02, 3.3724e-02, 4.0952e-02, 6.3596e-03, 8.5473e-05,\n", + " 5.1403e-02, -4.2400e-02, 1.3854e-03, 1.7698e-01, 1.5775e-01,\n", + " 1.2221e-01, 1.1064e-01, 1.7309e-01, 1.6230e-01, 8.5204e-02,\n", + " 9.8650e-02, -3.4055e-02, 1.6467e-02, 2.3333e-03, -1.7659e-01,\n", + " -1.4176e-01, -1.3850e-01, -1.3313e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00024198726168833673\n", + "Grad encoder.fc1.bias: 0.0006483100587502122\n", + "Grad encoder.encoder.0.weight: 4.303462628740817e-05\n", + "Grad encoder.encoder.0.bias: 0.0009177064057439566\n", + "Grad encoder.encoder.2.weight: 5.4217016440816224e-05\n", + "Grad encoder.encoder.2.bias: 0.00106867216527462\n", + "Grad encoder.encoder.4.weight: 0.0002380101941525936\n", + "Grad encoder.encoder.4.bias: 0.0020655696280300617\n", + "Grad decoder.fc1.0.weight: 8.57879567774944e-05\n", + "Grad decoder.fc1.0.bias: 0.0006555127329193056\n", + "Grad decoder.fc1.2.weight: 0.0001121425157180056\n", + "Grad decoder.fc1.2.bias: 0.0019550349097698927\n", + "Grad decoder.fc1.4.weight: 0.00012436459655873477\n", + "Grad decoder.fc1.4.bias: 0.0010318448767066002\n", + "Grad decoder.fc2.weight: 0.00025628917501308024\n", + "Grad decoder.fc2.bias: 0.0020700120367109776\n", + "Grad _memory_unit.weight_ih_l0: 3.656003173091449e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00014300484326668084\n", + "Grad _memory_unit.bias_hh_l0: 8.678528683958575e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.0094768842682242e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00023806383251212537\n", + "Grad _memory_unit.bias_hh_l1: 0.0001305404002778232\n", + "Data X Sample: tensor([[ 0.0180, 0.0160, 0.0150, 0.0175, 0.0102, 0.0295, 0.0262, 0.0284,\n", + " 0.0269, 0.0253, 0.0698, 0.0136, 0.0133, 0.0409, 0.0177, 0.0109,\n", + " -0.1274, -0.1354, -0.1962, -0.1748, -0.1889, -0.1286, -0.2024, -0.1909,\n", + " -0.1708, -0.3030, -0.2957, -0.5588, -0.0555, -0.0655, -0.0875, -0.0525,\n", + " -0.0264, -0.0595, -0.0343, 0.0073, 0.0020, -0.0186, -0.0127, 0.0000,\n", + " -0.0048, 0.0020, 0.0101, 0.0057, 0.0040, 0.0343, 0.0204, -0.0156]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4589, 0.3984, 0.3007, -0.3699, -0.3475, -0.6430, -0.0520, -0.0369,\n", + " -0.6628, -0.5874, -0.3880, -0.1381, -0.3069, 0.4791, -0.0176, 0.3473,\n", + " -0.1182, 0.2919, -0.3459, 0.0641, -0.2773, 0.1477, -0.5871, -0.0774,\n", + " -0.0945, 0.0504, -0.7526, 1.0408, 0.3899, 0.0715, -0.0939, -0.3695,\n", + " 0.9901, 0.4694, 0.6283, 0.8337, 0.9776, 0.9093, 2.5716, -0.1815,\n", + " -0.3400, -0.2298, -1.0035]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.6198, 0.5161, 0.2544, 0.4595, 0.1425, -0.1487, -0.6207, -0.6871,\n", + " -0.3493, -0.3853, -0.3434, 0.3092, 0.3011, 0.4388, 0.3349, 0.4782,\n", + " 0.3708, 0.2337, 0.0852, 0.1882, 0.1269, 0.1083, 0.0732, 0.1244,\n", + " 0.0610, 0.0679, -0.0917, 0.0825, 0.4646, 0.5013, 0.4054, 0.3231,\n", + " 0.4726, 0.4941, 0.2544, 0.2479, 0.0238, 0.0931, -0.0044, -0.4592,\n", + " -0.4542, -0.4260, -0.4013]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0029749921523034573\n", + "Grad encoder.fc1.bias: 0.0014140796847641468\n", + "Grad encoder.encoder.0.weight: 0.0003981103654950857\n", + "Grad encoder.encoder.0.bias: 0.0015336452051997185\n", + "Grad encoder.encoder.2.weight: 0.00027612666599452496\n", + "Grad encoder.encoder.2.bias: 0.0019997041672468185\n", + "Grad encoder.encoder.4.weight: 0.0007024125079624355\n", + "Grad encoder.encoder.4.bias: 0.006136162206530571\n", + "Grad decoder.fc1.0.weight: 0.00020708676311187446\n", + "Grad decoder.fc1.0.bias: 0.0012545480858534575\n", + "Grad decoder.fc1.2.weight: 9.075971320271492e-05\n", + "Grad decoder.fc1.2.bias: 0.0016109496355056763\n", + "Grad decoder.fc1.4.weight: 4.789684317074716e-05\n", + "Grad decoder.fc1.4.bias: 0.0010457945754751563\n", + "Grad decoder.fc2.weight: 8.229677769122645e-05\n", + "Grad decoder.fc2.bias: 0.0023676666896790266\n", + "Grad _memory_unit.weight_ih_l0: 8.727457316126674e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00016586795391049236\n", + "Grad _memory_unit.bias_hh_l0: 0.00013101287186145782\n", + "Grad _memory_unit.weight_ih_l1: 3.1500931072514504e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0005885671125724912\n", + "Grad _memory_unit.bias_hh_l1: 0.0003066367353312671\n", + "Data X Sample: tensor([[1.5923, 1.8876, 2.1923, 2.0379, 2.2299, 2.2629, 2.3572, 2.4134, 2.4556,\n", + " 2.4486, 2.4585, 2.3915, 2.2858, 2.3393, 2.3832, 2.3631, 2.2485, 2.4044,\n", + " 2.3706, 2.4641, 2.5297, 2.5291, 2.6411, 2.5901, 2.5093, 2.7085, 2.6080,\n", + " 2.6429, 2.4284, 2.4826, 2.4007, 2.3847, 2.1054, 1.3937, 1.8678, 1.7512,\n", + " 1.7305, 1.6352, 1.5719, 1.4668, 1.3697, 0.8085, 0.8205, 1.4524, 1.9940,\n", + " 2.0929, 1.4822, 2.0564]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0342, -0.3489, 0.5872, -0.1722, 1.4308, 0.8982, -0.0750, 0.1660,\n", + " 0.4631, 0.0780, 0.2032, -0.2150, 0.7267, 0.0382, -0.3847, -0.3398,\n", + " -0.1870, -1.1971, -0.3619, 0.4154, -0.8318, -0.2395, -0.5951, -1.6435,\n", + " -0.3176, 7.2764, -1.0837, 0.3682, 0.6143, -0.4446, 0.5305, -0.0327,\n", + " 0.0404, 0.3627, -0.0350, 0.2347, 0.1343, -0.6596, -0.0156, -0.0178,\n", + " -0.0354, -0.1474, -0.0838]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2972, 0.2120, 0.0889, 0.1431, 0.0454, -0.0850, -0.2763, -0.2594,\n", + " -0.1595, -0.1697, -0.2049, 0.1058, 0.1218, 0.2087, 0.1649, 0.2010,\n", + " 0.1374, 0.0692, 0.0104, 0.0601, 0.0365, 0.0414, 0.0544, 0.0125,\n", + " -0.0044, 0.0351, -0.0387, 0.0090, 0.2009, 0.1874, 0.1385, 0.1300,\n", + " 0.1920, 0.1829, 0.0970, 0.1082, -0.0329, 0.0170, 0.0005, -0.1992,\n", + " -0.1599, -0.1472, -0.1495]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00016507913824170828\n", + "Grad encoder.fc1.bias: 0.0005988702178001404\n", + "Grad encoder.encoder.0.weight: 3.141294655506499e-05\n", + "Grad encoder.encoder.0.bias: 0.0005957792745903134\n", + "Grad encoder.encoder.2.weight: 3.0206558221834712e-05\n", + "Grad encoder.encoder.2.bias: 0.0004724794998764992\n", + "Grad encoder.encoder.4.weight: 0.00013761140871793032\n", + "Grad encoder.encoder.4.bias: 0.0013083748053759336\n", + "Grad decoder.fc1.0.weight: 5.045478246756829e-05\n", + "Grad decoder.fc1.0.bias: 0.0003654450410977006\n", + "Grad decoder.fc1.2.weight: 5.660477472702041e-05\n", + "Grad decoder.fc1.2.bias: 0.00034475792199373245\n", + "Grad decoder.fc1.4.weight: 5.619917646981776e-05\n", + "Grad decoder.fc1.4.bias: 0.0004216665984131396\n", + "Grad decoder.fc2.weight: 0.00010879978799493983\n", + "Grad decoder.fc2.bias: 0.0016438382444903255\n", + "Grad _memory_unit.weight_ih_l0: 1.4890153579472098e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.8017449444159865e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.532089092710521e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.10582424592576e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.30992212286219e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.27920458605513e-05\n", + "Data X Sample: tensor([[1.3016, 1.5395, 1.6920, 1.8979, 1.9311, 2.0611, 2.1138, 2.0655, 3.7006,\n", + " 4.2178, 4.1081, 3.9807, 4.0102, 3.8280, 3.7400, 3.7567, 3.6149, 3.5244,\n", + " 3.4383, 3.4014, 3.3712, 3.3374, 2.8942, 2.8649, 2.8284, 2.8391, 2.8744,\n", + " 2.8795, 2.9210, 3.1540, 3.1846, 3.1972, 3.5597, 2.5563, 4.4023, 4.5848,\n", + " 4.8277, 5.2687, 5.6792, 5.6033, 1.0595, 0.6492, 0.6124, 1.1424, 1.6689,\n", + " 1.8756, 1.1966, 1.7750]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5157, -1.1023, -0.0362, -0.0413, -0.1225, 0.8518, 0.2090, 0.6798,\n", + " 0.6881, 0.4537, 0.3862, -0.2712, -0.3570, -0.3151, 0.1927, 0.4714,\n", + " -0.6503, -0.2295, 0.4743, 1.2445, -0.9441, 0.4610, 0.7404, -0.0052,\n", + " 0.6396, 0.6669, 1.8093, 0.6396, 0.1939, -0.2236, -1.0883, 0.0541,\n", + " -0.7428, -0.8983, 0.3141, 0.1258, -0.5148, 0.7916, -0.5970, 0.6023,\n", + " 0.7138, 0.2617, 0.3205]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2190, -0.2754, -0.0751, -0.1168, 0.1016, 0.1538, 0.1711, 0.2753,\n", + " 0.2234, 0.2612, 0.2215, -0.1670, -0.1494, -0.2624, -0.1633, -0.2902,\n", + " -0.2277, -0.0650, -0.0740, -0.1238, -0.0458, -0.0186, -0.0379, -0.0858,\n", + " -0.0080, 0.0441, -0.0764, -0.1351, -0.2140, -0.2608, -0.2591, -0.2142,\n", + " -0.3073, -0.2789, -0.2091, -0.1536, -0.0467, 0.0218, 0.0299, 0.2869,\n", + " 0.3192, 0.3237, 0.2616]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0016080683562904596\n", + "Grad encoder.fc1.bias: 0.0008820962975732982\n", + "Grad encoder.encoder.0.weight: 0.00023243222676683217\n", + "Grad encoder.encoder.0.bias: 0.0010691380593925714\n", + "Grad encoder.encoder.2.weight: 0.00018201330385636538\n", + "Grad encoder.encoder.2.bias: 0.0017981086857616901\n", + "Grad encoder.encoder.4.weight: 0.0005444428534246981\n", + "Grad encoder.encoder.4.bias: 0.005354383494704962\n", + "Grad decoder.fc1.0.weight: 0.00016555229376535863\n", + "Grad decoder.fc1.0.bias: 0.001061385846696794\n", + "Grad decoder.fc1.2.weight: 0.00010057647887151688\n", + "Grad decoder.fc1.2.bias: 0.0020105536095798016\n", + "Grad decoder.fc1.4.weight: 7.510057184845209e-05\n", + "Grad decoder.fc1.4.bias: 0.0008046090952120721\n", + "Grad decoder.fc2.weight: 0.00015359166718553752\n", + "Grad decoder.fc2.bias: 0.0018374756909906864\n", + "Grad _memory_unit.weight_ih_l0: 8.36055405670777e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0001896068424684927\n", + "Grad _memory_unit.bias_hh_l0: 0.00014225854829419404\n", + "Grad _memory_unit.weight_ih_l1: 3.248395660193637e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.000490137783344835\n", + "Grad _memory_unit.bias_hh_l1: 0.0002636773861013353\n", + "Data X Sample: tensor([[2.5237, 2.7295, 3.0428, 3.0459, 3.2441, 3.3163, 3.4218, 3.5292, 3.6639,\n", + " 3.7692, 3.7687, 3.7314, 3.6729, 3.6480, 3.6038, 3.3710, 3.3759, 3.5786,\n", + " 3.5105, 3.4386, 3.1995, 3.1261, 2.9833, 2.8878, 2.7420, 2.6772, 2.6693,\n", + " 2.5695, 2.5117, 2.6529, 2.5861, 2.7412, 2.6247, 1.9246, 3.1473, 3.5900,\n", + " 3.8189, 3.9356, 4.2911, 4.2075, 1.9568, 1.0634, 1.0833, 2.0093, 2.8027,\n", + " 2.7447, 2.0329, 2.8931]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3424, 0.7148, 0.8219, 2.3078, 0.3423, 0.4807, -0.5728, 0.6953,\n", + " -0.5557, -0.5737, -0.6740, 0.4839, 0.3689, -0.1245, 1.1712, -0.4147,\n", + " 0.1775, 0.8185, -0.5140, 0.4230, -0.5453, -0.4714, -1.0851, -0.3062,\n", + " -0.0269, -0.5303, -1.3503, -0.3739, 0.5145, -1.8807, -0.4354, -0.0745,\n", + " -0.6422, 0.4618, -0.0152, 0.0800, -0.6417, 0.0000, -0.9499, 0.7963,\n", + " -0.6716, 0.2482, 0.2192]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1525, -0.2092, -0.0549, -0.1527, -0.0165, 0.0585, 0.0764, 0.1856,\n", + " 0.1107, 0.1611, 0.1244, -0.1038, -0.0916, -0.1547, -0.1072, -0.1902,\n", + " -0.1758, -0.0534, -0.0582, -0.0963, -0.0323, -0.0258, -0.0300, -0.0667,\n", + " -0.0196, 0.0343, -0.0042, -0.0280, -0.0899, -0.1415, -0.1427, -0.1202,\n", + " -0.1800, -0.1758, -0.1187, -0.1093, -0.0345, 0.0195, -0.0026, 0.2085,\n", + " 0.2453, 0.2150, 0.1719]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0010108118876814842\n", + "Grad encoder.fc1.bias: 0.0005974805681034923\n", + "Grad encoder.encoder.0.weight: 0.0001546859712107107\n", + "Grad encoder.encoder.0.bias: 0.0007624643039889634\n", + "Grad encoder.encoder.2.weight: 0.00010489430133020505\n", + "Grad encoder.encoder.2.bias: 0.001091230078600347\n", + "Grad encoder.encoder.4.weight: 0.0003423932648729533\n", + "Grad encoder.encoder.4.bias: 0.003318801987916231\n", + "Grad decoder.fc1.0.weight: 0.00010877295426325873\n", + "Grad decoder.fc1.0.bias: 0.0007255913224071264\n", + "Grad decoder.fc1.2.weight: 6.634762394241989e-05\n", + "Grad decoder.fc1.2.bias: 0.0010839119786396623\n", + "Grad decoder.fc1.4.weight: 6.158111500553787e-05\n", + "Grad decoder.fc1.4.bias: 0.000624865060672164\n", + "Grad decoder.fc2.weight: 0.00013870075054001063\n", + "Grad decoder.fc2.bias: 0.0020016091875731945\n", + "Grad _memory_unit.weight_ih_l0: 4.6890188968973234e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00010818317241501063\n", + "Grad _memory_unit.bias_hh_l0: 7.977394852787256e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.7662565369391814e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002876875805668533\n", + "Grad _memory_unit.bias_hh_l1: 0.0001526565320091322\n", + "Data X Sample: tensor([[1.4374, 1.8454, 2.0736, 2.1253, 2.1514, 2.3145, 2.3973, 2.4219, 2.4166,\n", + " 2.4659, 2.5061, 2.5512, 2.4523, 2.3475, 2.3328, 2.3330, 2.3476, 2.4141,\n", + " 2.5338, 2.4418, 2.5100, 2.5750, 2.5230, 2.4393, 2.4248, 2.5126, 2.3603,\n", + " 2.2310, 1.9913, 2.0109, 1.7883, 1.7464, 1.5224, 0.9635, 1.3432, 1.3402,\n", + " 1.3687, 1.3172, 1.3754, 1.3902, 1.2934, 0.7329, 0.7538, 1.4409, 1.9662,\n", + " 2.0929, 1.4618, 2.0643]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.6587, -0.2460, 0.0921, -2.0456, -0.2088, -0.5429, 0.5567, 0.5943,\n", + " 0.7618, 0.3595, 0.7879, -0.9528, -0.9940, -1.1807, -1.1613, -1.2986,\n", + " -0.3132, 0.1971, -0.4768, -1.1073, -1.5246, -1.1088, -1.8403, -0.6507,\n", + " -2.1762, -1.4137, 0.9513, -0.1076, 0.7628, -0.7455, -0.2638, -0.3614,\n", + " -0.2273, -1.0952, -0.2337, -0.4166, -0.5085, -0.0751, -2.3004, 0.7788,\n", + " 0.7632, 0.9353, 0.7359]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3313, 0.2398, 0.0964, 0.1745, 0.0499, -0.1010, -0.3078, -0.3050,\n", + " -0.1834, -0.1977, -0.2325, 0.1332, 0.1425, 0.2396, 0.1872, 0.2321,\n", + " 0.1605, 0.0756, 0.0183, 0.0632, 0.0395, 0.0487, 0.0663, 0.0212,\n", + " -0.0024, 0.0237, -0.0443, 0.0177, 0.2340, 0.2175, 0.1634, 0.1578,\n", + " 0.2216, 0.2136, 0.1189, 0.1213, -0.0242, 0.0168, -0.0046, -0.2336,\n", + " -0.1918, -0.1707, -0.1769]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004179438983555883\n", + "Grad encoder.fc1.bias: 0.0010708109475672245\n", + "Grad encoder.encoder.0.weight: 7.158996595535427e-05\n", + "Grad encoder.encoder.0.bias: 0.0009964884957298636\n", + "Grad encoder.encoder.2.weight: 6.572160054929554e-05\n", + "Grad encoder.encoder.2.bias: 0.0008642408065497875\n", + "Grad encoder.encoder.4.weight: 0.00020467645663302392\n", + "Grad encoder.encoder.4.bias: 0.0010203267447650433\n", + "Grad decoder.fc1.0.weight: 8.466173312626779e-05\n", + "Grad decoder.fc1.0.bias: 0.0005731867277063429\n", + "Grad decoder.fc1.2.weight: 8.304139191750437e-05\n", + "Grad decoder.fc1.2.bias: 0.000655457959510386\n", + "Grad decoder.fc1.4.weight: 0.0001083327952073887\n", + "Grad decoder.fc1.4.bias: 0.0009061686578206718\n", + "Grad decoder.fc2.weight: 0.00021933799143880606\n", + "Grad decoder.fc2.bias: 0.002098467666655779\n", + "Grad _memory_unit.weight_ih_l0: 2.5001998437801376e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.701581489527598e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.6480119635816664e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.220422725775279e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00017066599684767425\n", + "Grad _memory_unit.bias_hh_l1: 8.93537508090958e-05\n", + "Data X Sample: tensor([[1.2125, 1.3444, 1.5387, 1.6421, 1.8679, 1.9889, 3.6991, 4.0331, 4.0423,\n", + " 4.1136, 4.1367, 3.9495, 3.7616, 3.6098, 3.5937, 3.3751, 3.3979, 3.3813,\n", + " 3.3846, 3.4181, 3.3786, 3.2486, 2.7640, 2.7714, 2.7927, 2.8052, 2.9064,\n", + " 2.9121, 3.0043, 3.1081, 3.1881, 3.1474, 3.3595, 2.5105, 4.0272, 4.6115,\n", + " 4.9064, 5.4304, 5.6349, 5.6601, 0.9593, 0.5755, 0.5780, 0.9903, 1.5302,\n", + " 1.5897, 0.9994, 1.6186]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6009, -0.1158, 0.3102, -0.6206, 0.0668, 1.0708, 1.3407, 0.5155,\n", + " 0.3483, 0.4264, -0.4897, 0.4172, 0.0798, -1.2565, 0.1716, -0.6491,\n", + " 0.4846, -0.1716, -2.0963, 0.1801, -0.4727, -0.2399, -0.3357, 1.1236,\n", + " -0.2397, -0.2003, -1.0973, -0.5742, -0.4284, -0.9427, 0.9454, -0.7667,\n", + " -1.3316, -0.3567, 0.5667, 0.0586, -0.2633, 0.0532, 0.3857, -0.7124,\n", + " 0.0999, -0.6865, 0.3837]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1689, -0.2350, -0.0667, -0.1202, 0.0521, 0.1074, 0.1190, 0.2196,\n", + " 0.1707, 0.2112, 0.1609, -0.1283, -0.1170, -0.2006, -0.1297, -0.2461,\n", + " -0.1999, -0.0613, -0.0531, -0.1092, -0.0422, -0.0202, -0.0359, -0.0798,\n", + " -0.0176, 0.0296, -0.0418, -0.0855, -0.1536, -0.2098, -0.1947, -0.1602,\n", + " -0.2502, -0.2166, -0.1675, -0.1249, -0.0388, 0.0226, 0.0082, 0.2312,\n", + " 0.2754, 0.2571, 0.2108]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00019905994122382253\n", + "Grad encoder.fc1.bias: 0.0005988277844153345\n", + "Grad encoder.encoder.0.weight: 4.514705506153405e-05\n", + "Grad encoder.encoder.0.bias: 0.0008305851370096207\n", + "Grad encoder.encoder.2.weight: 3.6579061998054385e-05\n", + "Grad encoder.encoder.2.bias: 0.0006830262718722224\n", + "Grad encoder.encoder.4.weight: 0.00015006880857981741\n", + "Grad encoder.encoder.4.bias: 0.0021803053095936775\n", + "Grad decoder.fc1.0.weight: 6.279524677665904e-05\n", + "Grad decoder.fc1.0.bias: 0.0005579573335126042\n", + "Grad decoder.fc1.2.weight: 7.639237446710467e-05\n", + "Grad decoder.fc1.2.bias: 0.0005561277503147721\n", + "Grad decoder.fc1.4.weight: 8.487381273880601e-05\n", + "Grad decoder.fc1.4.bias: 0.0006085955537855625\n", + "Grad decoder.fc2.weight: 0.0001503806415712461\n", + "Grad decoder.fc2.bias: 0.0017506934236735106\n", + "Grad _memory_unit.weight_ih_l0: 1.6320544091286138e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.825380842201412e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.5902136005461216e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.555792995437514e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00016395629791077226\n", + "Grad _memory_unit.bias_hh_l1: 8.356131729669869e-05\n", + "Data X Sample: tensor([[1.6984, 1.9677, 2.2104, 2.2325, 2.2897, 2.3219, 2.2987, 2.4233, 2.5338,\n", + " 2.5765, 2.5252, 2.5707, 2.4922, 2.4647, 2.3782, 2.4288, 2.3790, 2.5089,\n", + " 2.5482, 2.4902, 2.5984, 2.5582, 2.5953, 2.5729, 2.6820, 2.7373, 2.6666,\n", + " 2.6184, 2.3764, 2.3417, 2.3062, 2.2604, 1.9404, 1.2518, 1.7501, 1.6880,\n", + " 1.5928, 1.5848, 1.5656, 1.4242, 1.3459, 0.7846, 0.8124, 1.4237, 1.9861,\n", + " 2.2129, 1.4414, 2.1346]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1460, 0.1300, 0.7552, -0.0827, 0.4839, -0.8755, -0.2564, -0.2361,\n", + " -0.5484, -0.4431, -0.2102, 0.0703, -0.0335, 0.3881, -0.4958, -0.2283,\n", + " 0.5732, 0.0577, -0.0777, 1.6892, -1.5073, -0.5839, -0.4181, -0.4117,\n", + " 0.0673, -0.0529, -1.0662, 0.2743, 0.5157, -0.3734, -0.9505, 0.2304,\n", + " 0.4064, 0.0467, -0.4230, -0.5197, -0.9937, 0.1545, 1.1148, -0.2906,\n", + " -0.3717, -0.1605, -0.5773]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 4.5375e-01, 3.6190e-01, 1.3868e-01, 2.8208e-01, 8.8535e-02,\n", + " -1.4768e-01, -4.0449e-01, -4.5099e-01, -2.6016e-01, -2.9844e-01,\n", + " -3.1470e-01, 2.0963e-01, 2.0965e-01, 3.3622e-01, 2.7119e-01,\n", + " 3.5592e-01, 2.5201e-01, 1.1138e-01, 3.5503e-02, 8.6625e-02,\n", + " 5.0210e-02, 7.9213e-02, 9.6991e-02, 4.0414e-02, 1.8236e-02,\n", + " 4.0527e-03, -7.8267e-02, 1.7951e-02, 3.3087e-01, 3.2554e-01,\n", + " 2.4920e-01, 2.2201e-01, 3.3126e-01, 3.1432e-01, 1.7460e-01,\n", + " 1.7746e-01, -4.9336e-05, 2.4807e-02, 6.4360e-03, -3.3222e-01,\n", + " -3.1880e-01, -2.7454e-01, -2.7682e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00012037756096106023\n", + "Grad encoder.fc1.bias: 0.00015059488941915333\n", + "Grad encoder.encoder.0.weight: 3.436012048041448e-05\n", + "Grad encoder.encoder.0.bias: 0.00017500326794106513\n", + "Grad encoder.encoder.2.weight: 1.9994495232822374e-05\n", + "Grad encoder.encoder.2.bias: 0.00012355286162346601\n", + "Grad encoder.encoder.4.weight: 5.879185482626781e-05\n", + "Grad encoder.encoder.4.bias: 0.00024229069822467864\n", + "Grad decoder.fc1.0.weight: 2.3376665922114626e-05\n", + "Grad decoder.fc1.0.bias: 0.00012374375364743173\n", + "Grad decoder.fc1.2.weight: 3.4184999094577506e-05\n", + "Grad decoder.fc1.2.bias: 0.0001593777269590646\n", + "Grad decoder.fc1.4.weight: 5.351267463993281e-05\n", + "Grad decoder.fc1.4.bias: 0.000338227953761816\n", + "Grad decoder.fc2.weight: 0.00011587818880798295\n", + "Grad decoder.fc2.bias: 0.0019119569333270192\n", + "Grad _memory_unit.weight_ih_l0: 2.0215193217154592e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.287859938922338e-06\n", + "Grad _memory_unit.bias_hh_l0: 4.8496572162548546e-06\n", + "Grad _memory_unit.weight_ih_l1: 9.946220416168217e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.930836853920482e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.4862746866128873e-05\n", + "Data X Sample: tensor([[1.6050, 1.8134, 2.0075, 1.9919, 2.1206, 2.2320, 2.2679, 2.2785, 2.2628,\n", + " 2.3980, 2.4173, 2.4110, 2.2836, 2.3257, 2.2218, 2.1867, 2.2029, 2.3483,\n", + " 2.2715, 2.3618, 2.4291, 2.5321, 2.5062, 2.5042, 2.5018, 2.5597, 2.5547,\n", + " 2.5736, 2.3417, 2.2991, 2.4392, 2.4538, 2.1956, 1.4120, 1.9242, 1.7561,\n", + " 1.6853, 1.4921, 1.5466, 1.5973, 1.1884, 0.7309, 0.7619, 1.2744, 1.9464,\n", + " 1.9613, 1.3802, 1.9783]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.1687, 0.8298, 0.2994, 1.2228, 0.4861, 0.0708, -0.9397, -1.1907,\n", + " -0.9916, -0.8922, -0.7499, -0.5843, 0.2044, -0.3058, 0.3746, 0.8216,\n", + " -0.5360, -0.1837, 0.1491, 0.7727, 0.0373, -1.0272, -0.0332, -0.7809,\n", + " -0.3555, 0.0744, -0.3607, -0.4016, -0.1051, 0.0709, 0.4401, 0.4258,\n", + " 0.1117, 0.1612, 0.7586, 0.7440, -0.0868, 0.7916, -0.2505, -0.5618,\n", + " -0.5741, -0.0849, -0.5159]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5093, 0.4109, 0.1507, 0.3264, 0.1047, -0.1635, -0.4369, -0.4970,\n", + " -0.2810, -0.3278, -0.3535, 0.2337, 0.2357, 0.3743, 0.2969, 0.3947,\n", + " 0.2826, 0.1262, 0.0489, 0.1005, 0.0574, 0.0886, 0.1077, 0.0489,\n", + " 0.0263, -0.0098, -0.1053, 0.0168, 0.3665, 0.3631, 0.2789, 0.2546,\n", + " 0.3640, 0.3569, 0.2023, 0.2076, 0.0136, 0.0333, 0.0060, -0.3760,\n", + " -0.3691, -0.3061, -0.3052]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0008757174946367741\n", + "Grad encoder.fc1.bias: 0.0007575757335871458\n", + "Grad encoder.encoder.0.weight: 0.00014649666263721883\n", + "Grad encoder.encoder.0.bias: 0.0010159939993172884\n", + "Grad encoder.encoder.2.weight: 8.674271521158516e-05\n", + "Grad encoder.encoder.2.bias: 0.0008796199690550566\n", + "Grad encoder.encoder.4.weight: 0.0002957089454866946\n", + "Grad encoder.encoder.4.bias: 0.002552919089794159\n", + "Grad decoder.fc1.0.weight: 8.816225454211235e-05\n", + "Grad decoder.fc1.0.bias: 0.0006223786040209234\n", + "Grad decoder.fc1.2.weight: 5.631199383060448e-05\n", + "Grad decoder.fc1.2.bias: 0.0007167127914726734\n", + "Grad decoder.fc1.4.weight: 5.450546450447291e-05\n", + "Grad decoder.fc1.4.bias: 0.0008462753612548113\n", + "Grad decoder.fc2.weight: 0.00012778674135915935\n", + "Grad decoder.fc2.bias: 0.001900321338325739\n", + "Grad _memory_unit.weight_ih_l0: 1.0874723557208199e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.131436096737161e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.6853127817739733e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.1708356042800006e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00014001493400428444\n", + "Grad _memory_unit.bias_hh_l1: 7.033984002191573e-05\n", + "Data X Sample: tensor([[1.5032, 1.4551, 1.5883, 1.7055, 1.9994, 1.9845, 2.0106, 2.0116, 3.0342,\n", + " 3.7976, 4.0828, 4.0430, 3.8682, 3.7025, 3.5483, 3.6774, 3.5709, 3.3716,\n", + " 3.3061, 3.2973, 3.3811, 3.3297, 2.8652, 2.7886, 2.8302, 2.9514, 2.9170,\n", + " 2.8999, 2.8204, 3.1605, 3.2056, 3.1308, 3.4167, 2.6020, 4.2503, 4.5556,\n", + " 4.7648, 5.1706, 5.7236, 5.6629, 0.9450, 0.5735, 0.5901, 1.0247, 1.4430,\n", + " 1.5897, 1.2646, 1.7437]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 3.4184e-01, -1.3662e-01, -8.8402e-01, -7.1110e-01, -3.1822e-01,\n", + " 1.3554e-01, 3.3268e-01, 4.1518e-01, 2.9571e-01, 2.5591e-01,\n", + " 4.3413e-01, -3.9494e-01, -4.3551e-01, -1.3216e+00, 6.0547e-01,\n", + " -9.6728e-01, -8.9174e-01, -1.6728e-03, 2.4309e-01, 2.8205e-02,\n", + " -1.4498e-01, -1.3515e-02, -3.6253e-02, -3.4269e-01, -2.5295e-01,\n", + " -8.1407e-01, 1.2637e+00, 1.3826e-01, -5.1198e-04, 1.9965e-01,\n", + " -5.3236e-01, -7.3321e-01, -1.0845e+00, -9.7300e-01, 1.0220e-01,\n", + " -1.7799e+00, 9.9263e-01, -1.0105e-01, 1.7270e-02, 7.6865e-01,\n", + " 8.3932e-01, 5.5095e-01, 9.4022e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1492, -0.2274, -0.0661, -0.0971, 0.0723, 0.1184, 0.1188, 0.2093,\n", + " 0.1829, 0.2158, 0.1480, -0.1195, -0.1159, -0.1965, -0.1268, -0.2596,\n", + " -0.2005, -0.0618, -0.0378, -0.1106, -0.0436, -0.0142, -0.0429, -0.0839,\n", + " -0.0166, 0.0230, -0.0512, -0.0993, -0.1671, -0.2303, -0.1933, -0.1568,\n", + " -0.2660, -0.2084, -0.1805, -0.1149, -0.0365, 0.0281, 0.0029, 0.2112,\n", + " 0.2687, 0.2472, 0.2086]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00032408893457613885\n", + "Grad encoder.fc1.bias: 0.00014197651762515306\n", + "Grad encoder.encoder.0.weight: 6.591495184693485e-05\n", + "Grad encoder.encoder.0.bias: 0.00017945376748684794\n", + "Grad encoder.encoder.2.weight: 4.332152457209304e-05\n", + "Grad encoder.encoder.2.bias: 0.0001728421775624156\n", + "Grad encoder.encoder.4.weight: 0.00014441940584219992\n", + "Grad encoder.encoder.4.bias: 0.0006097516743466258\n", + "Grad decoder.fc1.0.weight: 3.704888149513863e-05\n", + "Grad decoder.fc1.0.bias: 0.0001124595946748741\n", + "Grad decoder.fc1.2.weight: 3.588551771827042e-05\n", + "Grad decoder.fc1.2.bias: 0.0001674565573921427\n", + "Grad decoder.fc1.4.weight: 4.3375795939937234e-05\n", + "Grad decoder.fc1.4.bias: 0.00037164989043958485\n", + "Grad decoder.fc2.weight: 7.642042328370735e-05\n", + "Grad decoder.fc2.bias: 0.0023185377940535545\n", + "Grad _memory_unit.weight_ih_l0: 1.1273900781816337e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.2900293313578004e-06\n", + "Grad _memory_unit.bias_hh_l0: 8.873852266333415e-07\n", + "Grad _memory_unit.weight_ih_l1: 7.863837936383788e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.5345947253517807e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.7362564904033206e-05\n", + "Data X Sample: tensor([[1.6072, 1.8469, 1.9970, 2.1647, 2.1685, 2.3204, 2.3957, 2.3594, 2.3531,\n", + " 2.4612, 2.4014, 2.4246, 2.4301, 2.3366, 2.2521, 2.3098, 2.3193, 2.3735,\n", + " 2.3603, 2.4455, 2.5198, 2.5964, 2.5520, 2.5576, 2.5919, 2.6328, 2.5574,\n", + " 2.5410, 2.4874, 2.5284, 2.4462, 2.3765, 2.0944, 1.3823, 1.8188, 1.7609,\n", + " 1.6341, 1.5901, 1.5212, 1.4413, 1.2982, 0.7667, 0.7336, 1.3950, 1.9147,\n", + " 2.2301, 1.4074, 1.9235]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6211, 0.3045, -0.2455, 0.8634, 0.3636, -0.1139, -0.2528, -0.0981,\n", + " -0.0836, -0.2734, -0.5720, 0.3400, -1.1838, 0.5896, -0.6819, 0.5304,\n", + " 0.5429, -0.3215, -0.8038, -1.8269, -1.4533, -1.7901, -1.7243, -1.9975,\n", + " -0.7930, -0.9780, -0.3271, -0.2793, -0.5499, 0.1539, 0.8125, 0.2288,\n", + " 0.0834, 0.5858, 1.1188, 0.6530, 0.4963, -0.1011, -1.0062, -0.3719,\n", + " -0.2130, -0.1962, 0.0240]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5323, 0.4389, 0.1487, 0.3242, 0.1079, -0.1796, -0.4327, -0.4832,\n", + " -0.2508, -0.3091, -0.3692, 0.2232, 0.2308, 0.3794, 0.2930, 0.3758,\n", + " 0.2833, 0.1159, 0.0670, 0.1112, 0.0621, 0.0705, 0.0844, 0.0331,\n", + " 0.0416, -0.0090, -0.1563, 0.0086, 0.3664, 0.3427, 0.2877, 0.2677,\n", + " 0.3521, 0.3672, 0.2211, 0.2147, 0.0337, 0.0364, -0.0039, -0.3927,\n", + " -0.3860, -0.2987, -0.2790]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004344362241681665\n", + "Grad encoder.fc1.bias: 0.00037560946657322347\n", + "Grad encoder.encoder.0.weight: 7.678113615838811e-05\n", + "Grad encoder.encoder.0.bias: 0.0003735402715392411\n", + "Grad encoder.encoder.2.weight: 5.680074173142202e-05\n", + "Grad encoder.encoder.2.bias: 0.00036600965540856123\n", + "Grad encoder.encoder.4.weight: 0.00020336282614152879\n", + "Grad encoder.encoder.4.bias: 0.0009345060680061579\n", + "Grad decoder.fc1.0.weight: 5.6741697335382923e-05\n", + "Grad decoder.fc1.0.bias: 0.00024063025193754584\n", + "Grad decoder.fc1.2.weight: 6.161976489238441e-05\n", + "Grad decoder.fc1.2.bias: 0.00042338648927398026\n", + "Grad decoder.fc1.4.weight: 6.874475366203114e-05\n", + "Grad decoder.fc1.4.bias: 0.0007477952749468386\n", + "Grad decoder.fc2.weight: 0.00011725535296136513\n", + "Grad decoder.fc2.bias: 0.0022602861281484365\n", + "Grad _memory_unit.weight_ih_l0: 7.713841114309616e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.5492976672248915e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.641678505227901e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.4522059902665205e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.7255627578124404e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.3590371711179614e-05\n", + "Data X Sample: tensor([[1.3674, 1.6560, 1.8843, 2.0226, 2.1070, 2.2865, 2.4281, 2.4020, 2.5216,\n", + " 2.6113, 2.5981, 2.5571, 2.4390, 2.4565, 2.4589, 2.4438, 2.3696, 2.4528,\n", + " 2.4883, 2.3953, 2.4242, 2.3836, 2.4194, 2.3744, 2.3685, 2.3507, 2.3789,\n", + " 2.4635, 2.2133, 2.2959, 2.2537, 2.2493, 2.2440, 1.3823, 1.9585, 1.7731,\n", + " 1.6282, 1.4497, 1.5529, 1.5519, 1.2122, 0.6751, 0.6568, 1.2400, 1.7165,\n", + " 2.0757, 1.3394, 1.8297]], device='cuda:0')\n", + "Data Y Sample: tensor([[-3.3294, -0.2745, -1.0519, -0.1858, -0.5969, 0.0679, -0.6264, -1.2761,\n", + " 0.5032, 0.4101, 0.7458, 0.3133, -0.2809, -0.5910, -0.1625, -0.3639,\n", + " -0.6329, 0.5511, 1.7242, -1.0224, -0.5362, 0.0479, -0.4455, -0.5814,\n", + " -1.2464, 0.2789, 1.3350, 0.6735, -0.7450, -0.1657, 0.3585, 0.8365,\n", + " -1.7858, -1.3610, 0.7546, 0.1357, 0.0501, 0.8274, -0.2265, -0.0270,\n", + " -0.5912, 0.3156, -0.1022]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4967, 0.4134, 0.1293, 0.2691, 0.0911, -0.1834, -0.3960, -0.4262,\n", + " -0.2046, -0.2669, -0.3452, 0.1945, 0.1921, 0.3465, 0.2645, 0.3195,\n", + " 0.2547, 0.0882, 0.0681, 0.1013, 0.0550, 0.0410, 0.0521, 0.0070,\n", + " 0.0445, 0.0043, -0.1689, 0.0030, 0.3332, 0.2878, 0.2659, 0.2443,\n", + " 0.3102, 0.3301, 0.2051, 0.1897, 0.0419, 0.0288, -0.0068, -0.3641,\n", + " -0.3496, -0.2583, -0.2213]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001659330737311393\n", + "Grad encoder.fc1.bias: 0.0003881326992996037\n", + "Grad encoder.encoder.0.weight: 5.6026594393188134e-05\n", + "Grad encoder.encoder.0.bias: 0.0002555777900852263\n", + "Grad encoder.encoder.2.weight: 3.677128188428469e-05\n", + "Grad encoder.encoder.2.bias: 0.0003440260770730674\n", + "Grad encoder.encoder.4.weight: 0.00012762690312229097\n", + "Grad encoder.encoder.4.bias: 0.000778823799919337\n", + "Grad decoder.fc1.0.weight: 4.712781446869485e-05\n", + "Grad decoder.fc1.0.bias: 0.00030872164643369615\n", + "Grad decoder.fc1.2.weight: 4.085677574039437e-05\n", + "Grad decoder.fc1.2.bias: 0.00024308286083396524\n", + "Grad decoder.fc1.4.weight: 4.904741945210844e-05\n", + "Grad decoder.fc1.4.bias: 0.000384991493774578\n", + "Grad decoder.fc2.weight: 8.747531683184206e-05\n", + "Grad decoder.fc2.bias: 0.002261402318254113\n", + "Grad _memory_unit.weight_ih_l0: 5.1558331506385e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.274112921440974e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.210693153552711e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.2664844436803833e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.59800716675818e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.293363261036575e-05\n", + "Data X Sample: tensor([[1.6348, 1.8876, 1.9234, 2.0182, 2.1753, 2.3337, 2.5637, 2.4758, 2.5045,\n", + " 2.6097, 2.6965, 2.7187, 2.5721, 2.4756, 2.4916, 2.4876, 2.4026, 2.4180,\n", + " 2.3603, 2.3674, 2.3775, 2.4234, 2.4508, 2.3897, 2.4530, 2.4787, 2.4375,\n", + " 2.4553, 2.1301, 2.3483, 2.2677, 2.0780, 1.8106, 1.2106, 1.6717, 1.6272,\n", + " 1.5496, 1.5133, 1.4515, 1.4299, 1.2075, 0.7866, 0.7498, 1.3032, 1.8592,\n", + " 2.0357, 1.3938, 1.9313]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2535, 0.5846, -0.0244, 0.0705, -0.3324, 0.0607, -1.2554, -0.1887,\n", + " -1.2185, 0.0814, -0.2569, -0.7556, 0.1066, -0.7790, 0.2234, 0.3069,\n", + " 0.6613, 0.0455, 0.2991, 0.0730, 0.5932, -0.4410, 0.8199, 0.7157,\n", + " 0.3811, 0.1720, -0.7188, -0.9716, -0.6052, -0.5588, 0.6209, -0.3054,\n", + " 0.5956, 0.0070, 0.5797, -0.9638, 0.0540, 0.8238, 0.5659, -0.2088,\n", + " -0.3238, -0.0124, 0.1692]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4335, 0.3574, 0.1060, 0.2124, 0.0669, -0.1794, -0.3525, -0.3782,\n", + " -0.1626, -0.2253, -0.2970, 0.1763, 0.1521, 0.2989, 0.2313, 0.2632,\n", + " 0.2100, 0.0642, 0.0650, 0.0709, 0.0430, 0.0213, 0.0269, -0.0160,\n", + " 0.0394, 0.0154, -0.1532, 0.0111, 0.2935, 0.2377, 0.2376, 0.2093,\n", + " 0.2677, 0.2825, 0.1748, 0.1567, 0.0408, 0.0294, -0.0057, -0.3137,\n", + " -0.2957, -0.2189, -0.1734]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 7.27489241398871e-05\n", + "Grad encoder.fc1.bias: 0.00033659179462119937\n", + "Grad encoder.encoder.0.weight: 2.1757667127531022e-05\n", + "Grad encoder.encoder.0.bias: 0.00024497383856214583\n", + "Grad encoder.encoder.2.weight: 1.9110048015136272e-05\n", + "Grad encoder.encoder.2.bias: 0.0002055447403108701\n", + "Grad encoder.encoder.4.weight: 9.853429219219834e-05\n", + "Grad encoder.encoder.4.bias: 0.0009444362367503345\n", + "Grad decoder.fc1.0.weight: 3.839156124740839e-05\n", + "Grad decoder.fc1.0.bias: 0.0002323187654837966\n", + "Grad decoder.fc1.2.weight: 4.948709829477593e-05\n", + "Grad decoder.fc1.2.bias: 0.00028006843058392406\n", + "Grad decoder.fc1.4.weight: 6.293685146374628e-05\n", + "Grad decoder.fc1.4.bias: 0.00044984155101701617\n", + "Grad decoder.fc2.weight: 0.00012482977763283998\n", + "Grad decoder.fc2.bias: 0.0016575068002566695\n", + "Grad _memory_unit.weight_ih_l0: 1.3636114999826532e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.1599778089439496e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.6579986297292635e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.2665336675563594e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.44251990201883e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.249853373039514e-05\n", + "Data X Sample: tensor([[ 0.0053, 0.0117, 0.0075, 0.0131, 0.0034, 0.0250, 0.0185, 0.0284,\n", + " 0.0220, 0.0316, 0.0476, 0.0156, 0.0155, 0.0218, 0.0252, 0.0123,\n", + " -0.1116, -0.1257, -0.1404, -0.1079, -0.1497, -0.0949, -0.1181, -0.1012,\n", + " -0.0995, -0.1959, -0.1838, -0.2937, -0.0659, -0.0360, -0.0350, -0.0166,\n", + " 0.0066, -0.0137, 0.0147, 0.0316, 0.0079, 0.0027, -0.0254, 0.0142,\n", + " 0.0095, 0.0040, 0.0040, 0.0000, -0.0040, 0.0343, -0.0068, 0.0156]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[-1.3081, -0.3104, 0.1676, -0.2276, -0.5331, -0.9588, 0.2167, -0.8257,\n", + " 0.5010, 0.4981, 0.4779, -0.6620, 1.2478, -0.7765, 0.5808, 0.2202,\n", + " -0.7624, -0.4636, 0.1638, 0.3241, 0.7728, -0.1572, -0.2095, 2.0348,\n", + " 0.1935, 1.0226, -0.6180, 1.1516, -0.1208, 0.0896, 0.3108, -0.1935,\n", + " 0.9155, 0.4685, -0.4059, 1.1256, 0.7922, -0.3755, -0.4768, -0.6562,\n", + " 0.0768, 0.0575, 0.6044]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5301, 0.4161, 0.2250, 0.3939, 0.1233, -0.1560, -0.5316, -0.5743,\n", + " -0.2823, -0.3139, -0.2908, 0.2873, 0.2457, 0.3726, 0.2515, 0.4043,\n", + " 0.2680, 0.1530, 0.1178, 0.1171, 0.1124, 0.0896, 0.0311, 0.0811,\n", + " 0.0633, 0.0196, -0.0959, 0.0922, 0.3998, 0.3850, 0.3394, 0.3206,\n", + " 0.3882, 0.3983, 0.2307, 0.2287, 0.0541, 0.1016, -0.0713, -0.3891,\n", + " -0.3512, -0.3546, -0.3622]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 4.3997541069984436e-05\n", + "Grad encoder.fc1.bias: 0.0004471646388992667\n", + "Grad encoder.encoder.0.weight: 1.389690805808641e-05\n", + "Grad encoder.encoder.0.bias: 0.0003031898522749543\n", + "Grad encoder.encoder.2.weight: 1.2078392501280177e-05\n", + "Grad encoder.encoder.2.bias: 0.0002080281701637432\n", + "Grad encoder.encoder.4.weight: 5.543762745219283e-05\n", + "Grad encoder.encoder.4.bias: 0.0005496389931067824\n", + "Grad decoder.fc1.0.weight: 2.4425637093372643e-05\n", + "Grad decoder.fc1.0.bias: 0.0001473914599046111\n", + "Grad decoder.fc1.2.weight: 4.6728622692171484e-05\n", + "Grad decoder.fc1.2.bias: 0.00017627334455028176\n", + "Grad decoder.fc1.4.weight: 4.962334060110152e-05\n", + "Grad decoder.fc1.4.bias: 0.0002549809869378805\n", + "Grad decoder.fc2.weight: 8.607377094449475e-05\n", + "Grad decoder.fc2.bias: 0.0016155478078871965\n", + "Grad _memory_unit.weight_ih_l0: 7.070704668876715e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.8703001589747146e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.4570221537724137e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.7097727322834544e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.944130730815232e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.9696064555319026e-05\n", + "Data X Sample: tensor([[1.4693, 1.7740, 1.8497, 1.9635, 2.0865, 2.3116, 2.3125, 2.4432, 2.4947,\n", + " 2.5623, 2.5347, 2.5921, 2.4589, 2.5601, 2.3101, 2.3522, 2.3145, 2.4044,\n", + " 2.4987, 2.3005, 2.3555, 2.4035, 2.3206, 2.2599, 2.2616, 2.3559, 2.3123,\n", + " 2.3085, 2.1439, 2.2304, 2.1837, 2.1664, 2.2000, 1.4028, 1.8531, 1.7536,\n", + " 1.6145, 1.4709, 1.5466, 1.5803, 1.1979, 0.7050, 0.7195, 1.1797, 1.7561,\n", + " 1.9556, 1.3326, 1.9548]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5002, 1.4475, 0.2368, 0.0444, -0.4329, -0.0725, 0.2732, -0.4562,\n", + " 0.0825, -0.5102, -0.5421, 0.0064, 0.9840, 0.3735, -0.1721, 0.4320,\n", + " 0.5648, -0.2035, -0.4259, -0.6279, -0.5826, -0.3543, -0.2568, -0.2600,\n", + " -0.6439, -0.8375, 0.1036, -0.5369, 0.9288, 1.6218, 0.5923, -0.3045,\n", + " 0.4544, 0.3779, -0.0391, 0.5714, 0.3148, 0.7816, 0.0040, -0.0651,\n", + " -0.0914, 0.0306, -0.4270]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4061, 0.3581, 0.1099, 0.1950, 0.0663, -0.1911, -0.3386, -0.3738,\n", + " -0.1349, -0.2126, -0.2591, 0.1842, 0.1261, 0.2743, 0.2296, 0.2497,\n", + " 0.2124, 0.0455, 0.0788, 0.0529, 0.0421, 0.0052, 0.0050, -0.0400,\n", + " 0.0513, 0.0442, -0.1622, 0.0165, 0.2642, 0.2025, 0.2351, 0.1946,\n", + " 0.2645, 0.2651, 0.1669, 0.1360, 0.0522, 0.0292, -0.0105, -0.2953,\n", + " -0.2802, -0.2223, -0.1600]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00013746954209636897\n", + "Grad encoder.fc1.bias: 0.00012650607095565647\n", + "Grad encoder.encoder.0.weight: 3.8695998227922246e-05\n", + "Grad encoder.encoder.0.bias: 8.915863872971386e-05\n", + "Grad encoder.encoder.2.weight: 3.306661164970137e-05\n", + "Grad encoder.encoder.2.bias: 0.00014146402827464044\n", + "Grad encoder.encoder.4.weight: 0.00012615112063940614\n", + "Grad encoder.encoder.4.bias: 0.0006137420423328876\n", + "Grad decoder.fc1.0.weight: 4.1438073822064325e-05\n", + "Grad decoder.fc1.0.bias: 0.00021439456031657755\n", + "Grad decoder.fc1.2.weight: 3.4766930184559897e-05\n", + "Grad decoder.fc1.2.bias: 0.00019383893231861293\n", + "Grad decoder.fc1.4.weight: 4.53912143711932e-05\n", + "Grad decoder.fc1.4.bias: 0.0005352572770789266\n", + "Grad decoder.fc2.weight: 0.00010223658318864182\n", + "Grad decoder.fc2.bias: 0.0017180268187075853\n", + "Grad _memory_unit.weight_ih_l0: 3.477609880064847e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.562714169267565e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.355178579222411e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.5055337598823826e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.467003211379051e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.7808233426185325e-05\n", + "Data X Sample: tensor([[1.1807, 1.4026, 1.4741, 1.6180, 1.6750, 1.7517, 1.8627, 1.8597, 2.0382,\n", + " 2.0457, 1.9890, 2.0682, 1.9685, 1.8404, 1.8864, 1.8708, 1.8287, 1.9208,\n", + " 1.8812, 1.9006, 1.8549, 1.9274, 1.9736, 1.9602, 1.9388, 1.9929, 1.9447,\n", + " 2.0719, 1.6444, 1.8472, 1.7358, 1.8873, 1.8062, 1.2381, 1.8310, 1.7366,\n", + " 1.4650, 1.2006, 1.0839, 1.0015, 0.9975, 0.5636, 0.5578, 1.0046, 1.4469,\n", + " 1.6468, 1.1150, 1.5717]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7906, -0.8831, -1.8274, -0.6982, -0.7149, -0.9777, -1.0405, -1.4039,\n", + " 0.8128, 1.2885, 1.0375, -1.0222, 0.8334, 1.2121, 0.1562, 1.1882,\n", + " -0.0621, -1.4794, -0.1795, 0.8243, 1.2813, 0.1360, 1.0409, -0.3046,\n", + " 1.0491, -1.3047, -0.9940, -0.1753, -0.5679, 0.2121, 0.1925, -0.9234,\n", + " -0.8710, 1.0133, 0.0284, 0.2945, -0.4229, 0.7428, 0.7285, -1.9370,\n", + " -0.2097, -0.8616, -1.2481]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3643, 0.3124, 0.1009, 0.1763, 0.0567, -0.1731, -0.3153, -0.3389,\n", + " -0.1266, -0.1924, -0.2279, 0.1672, 0.1111, 0.2426, 0.2024, 0.2210,\n", + " 0.1841, 0.0386, 0.0738, 0.0404, 0.0368, 0.0063, 0.0061, -0.0356,\n", + " 0.0394, 0.0479, -0.1359, 0.0232, 0.2317, 0.1769, 0.2043, 0.1818,\n", + " 0.2381, 0.2331, 0.1503, 0.1230, 0.0349, 0.0262, -0.0252, -0.2651,\n", + " -0.2379, -0.1996, -0.1500]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00010151666356250644\n", + "Grad encoder.fc1.bias: 0.0002475815999787301\n", + "Grad encoder.encoder.0.weight: 2.910190414695535e-05\n", + "Grad encoder.encoder.0.bias: 0.00012357179366517812\n", + "Grad encoder.encoder.2.weight: 2.1066902263555676e-05\n", + "Grad encoder.encoder.2.bias: 0.00012927441275678575\n", + "Grad encoder.encoder.4.weight: 6.521395698655397e-05\n", + "Grad encoder.encoder.4.bias: 0.000245165079832077\n", + "Grad decoder.fc1.0.weight: 2.5745577659108676e-05\n", + "Grad decoder.fc1.0.bias: 0.00011048096348531544\n", + "Grad decoder.fc1.2.weight: 3.1460724130738527e-05\n", + "Grad decoder.fc1.2.bias: 0.00014500417455565184\n", + "Grad decoder.fc1.4.weight: 4.11884902860038e-05\n", + "Grad decoder.fc1.4.bias: 0.00026944029377773404\n", + "Grad decoder.fc2.weight: 9.883862367132679e-05\n", + "Grad decoder.fc2.bias: 0.0014842231757938862\n", + "Grad _memory_unit.weight_ih_l0: 1.71372687418625e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.311565812211484e-06\n", + "Grad _memory_unit.bias_hh_l0: 3.3902524592122063e-06\n", + "Grad _memory_unit.weight_ih_l1: 7.760092444186739e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.331641735509038e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.1714450010913424e-05\n", + "Data X Sample: tensor([[1.6135, 1.8672, 2.0917, 2.1253, 2.1838, 2.2806, 2.3865, 2.3921, 2.3971,\n", + " 2.5181, 2.5188, 2.5746, 2.4478, 2.4620, 2.3126, 2.3180, 2.3413, 2.3657,\n", + " 2.4925, 2.4195, 2.5051, 2.5857, 2.5640, 2.6130, 2.6332, 2.6746, 2.6773,\n", + " 2.6959, 2.3764, 2.5022, 2.5197, 2.4704, 2.2990, 1.5035, 2.0222, 1.8752,\n", + " 1.7738, 1.5981, 1.6543, 1.5491, 1.3745, 0.7189, 0.7680, 1.4122, 2.0495,\n", + " 2.2873, 1.4278, 2.1425]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0413, -0.9312, 0.3837, -0.5784, 0.0763, 0.4532, 1.3557, 0.1015,\n", + " 0.1448, 0.0710, -0.0787, 0.9543, 0.3354, -0.2858, -0.9529, 0.7471,\n", + " -0.1496, -1.4248, -0.7940, 0.0263, 0.4451, -0.7226, 1.1204, 0.5241,\n", + " -0.5639, 2.2540, -0.4997, -0.3744, -0.4430, -0.7552, -0.7264, 0.7611,\n", + " 0.7952, 0.8321, -0.4052, 0.0074, -0.8287, 0.7428, -0.7130, 1.2682,\n", + " -0.2213, 0.3116, 0.6118]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4448, 0.4253, 0.1317, 0.2337, 0.0911, -0.2241, -0.3796, -0.4351,\n", + " -0.1508, -0.2497, -0.2670, 0.2193, 0.1305, 0.2968, 0.2603, 0.2935,\n", + " 0.2607, 0.0484, 0.1010, 0.0593, 0.0510, 0.0044, -0.0015, -0.0475,\n", + " 0.0721, 0.0690, -0.1911, 0.0191, 0.2722, 0.2222, 0.2664, 0.2202,\n", + " 0.3152, 0.3017, 0.1981, 0.1551, 0.0643, 0.0299, -0.0157, -0.3391,\n", + " -0.3312, -0.2794, -0.1986]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 5.16162981512025e-05\n", + "Grad encoder.fc1.bias: 0.00013216881779953837\n", + "Grad encoder.encoder.0.weight: 1.1943760910071433e-05\n", + "Grad encoder.encoder.0.bias: 0.00010956927144434303\n", + "Grad encoder.encoder.2.weight: 1.5650755813112482e-05\n", + "Grad encoder.encoder.2.bias: 0.00011186377378180623\n", + "Grad encoder.encoder.4.weight: 6.0957983805565163e-05\n", + "Grad encoder.encoder.4.bias: 0.0003557847812771797\n", + "Grad decoder.fc1.0.weight: 2.9227579943835735e-05\n", + "Grad decoder.fc1.0.bias: 0.00010666673915693536\n", + "Grad decoder.fc1.2.weight: 3.908064536517486e-05\n", + "Grad decoder.fc1.2.bias: 0.00014448256115429103\n", + "Grad decoder.fc1.4.weight: 4.322148015489802e-05\n", + "Grad decoder.fc1.4.bias: 0.0002826609124895185\n", + "Grad decoder.fc2.weight: 0.00010589854355202988\n", + "Grad decoder.fc2.bias: 0.0019618337973952293\n", + "Grad _memory_unit.weight_ih_l0: 5.120190962770721e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.5516114217462018e-05\n", + "Grad _memory_unit.bias_hh_l0: 7.981448106875177e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.394703758705873e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.4881897843442857e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.248189619218465e-05\n", + "Data X Sample: tensor([[1.4671, 1.5818, 1.8798, 1.9766, 2.0541, 2.0744, 2.0136, 3.2538, 4.1619,\n", + " 4.4801, 4.3302, 4.2339, 4.0280, 4.0161, 3.8560, 3.8141, 3.6951, 3.7043,\n", + " 3.6861, 3.6171, 3.5896, 3.5548, 3.2098, 2.8878, 3.0010, 3.0194, 3.0449,\n", + " 3.2262, 3.1049, 3.2522, 3.3875, 3.3547, 3.8369, 2.8263, 4.5395, 4.7526,\n", + " 4.9477, 5.4516, 5.8821, 5.7055, 1.0882, 0.6552, 0.7094, 1.1194, 1.7759,\n", + " 1.9899, 1.2170, 1.7515]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3231, -0.1496, -0.4424, -0.2657, 0.8057, -1.0786, 0.3018, 0.1219,\n", + " 0.2069, 0.2396, 0.4697, -0.3491, -0.3083, 0.2247, -0.7883, -1.3257,\n", + " -1.0591, -0.1416, 0.4517, -0.8769, -0.3361, -0.4916, 0.3353, -0.6729,\n", + " -0.2382, -0.4885, -0.4937, -0.4719, -0.2587, -0.8227, -0.3687, -0.1374,\n", + " -0.2288, -0.1384, 0.2470, -0.3681, -0.5893, 0.3857, 0.9794, 0.6137,\n", + " 0.5281, 0.0707, 0.6467]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3102, -0.3438, -0.1027, -0.1629, 0.0625, 0.1498, 0.2355, 0.3743,\n", + " 0.2096, 0.2566, 0.3084, -0.1851, -0.2049, -0.3312, -0.2118, -0.3250,\n", + " -0.2033, -0.0853, -0.1308, -0.1742, -0.1181, 0.0171, -0.0181, -0.0372,\n", + " 0.0225, 0.0466, -0.0618, -0.1872, -0.2289, -0.2483, -0.2944, -0.2519,\n", + " -0.3324, -0.3702, -0.1975, -0.2054, -0.0251, -0.0177, 0.0246, 0.3953,\n", + " 0.3786, 0.4234, 0.3112]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005228781374171376\n", + "Grad encoder.fc1.bias: 0.0006378536345437169\n", + "Grad encoder.encoder.0.weight: 0.0001776023709680885\n", + "Grad encoder.encoder.0.bias: 0.0008020419045351446\n", + "Grad encoder.encoder.2.weight: 0.00015182793140411377\n", + "Grad encoder.encoder.2.bias: 0.0007923998637124896\n", + "Grad encoder.encoder.4.weight: 0.0004940551007166505\n", + "Grad encoder.encoder.4.bias: 0.0022847631480544806\n", + "Grad decoder.fc1.0.weight: 0.0001478323247283697\n", + "Grad decoder.fc1.0.bias: 0.000574796344153583\n", + "Grad decoder.fc1.2.weight: 0.00012466407497413456\n", + "Grad decoder.fc1.2.bias: 0.0005883567500859499\n", + "Grad decoder.fc1.4.weight: 0.00011721377086360008\n", + "Grad decoder.fc1.4.bias: 0.0009871306829154491\n", + "Grad decoder.fc2.weight: 0.0001410824479535222\n", + "Grad decoder.fc2.bias: 0.0027508169878274202\n", + "Grad _memory_unit.weight_ih_l0: 1.1961671589233447e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.023689300287515e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.6047298888443038e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.6207587729441e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00014615428517572582\n", + "Grad _memory_unit.bias_hh_l1: 7.326721970457584e-05\n", + "Data X Sample: tensor([[1.4809, 1.8483, 2.2945, 2.3287, 2.5202, 2.6165, 2.7439, 2.8875, 2.7925,\n", + " 2.9162, 2.8138, 2.8765, 2.7652, 2.8519, 2.7817, 2.7392, 2.7108, 2.8048,\n", + " 2.8601, 2.8547, 2.9051, 2.8750, 2.7182, 2.4393, 2.3517, 2.3089, 2.1551,\n", + " 2.1902, 1.8317, 1.8767, 1.6798, 1.5834, 1.4080, 0.8765, 1.2623, 1.2672,\n", + " 1.3608, 1.6829, 1.9839, 1.9151, 1.4079, 0.7846, 0.8407, 1.4553, 2.0614,\n", + " 2.2415, 1.5298, 2.1581]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.1809, 0.3632, -0.3361, -0.6518, -0.1490, 0.0851, -0.2207, 0.3974,\n", + " 0.5508, 1.1237, 0.7352, 0.0888, -0.4853, -1.2202, 0.3368, -0.5030,\n", + " -0.1865, 0.0248, -0.0072, -0.2087, 0.4407, 0.3246, 0.3422, 0.4095,\n", + " 0.2219, 0.8616, -0.5701, 0.2961, -1.4630, -1.1263, 0.3471, -0.2258,\n", + " -0.4460, -0.4760, -0.0242, -0.3008, 0.5692, -0.6596, 0.0040, 0.8818,\n", + " 0.8200, 0.3987, 0.9084]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.0452, -0.0841, -0.0249, -0.1305, -0.0601, -0.0376, -0.0103, 0.0773,\n", + " 0.0810, 0.0825, 0.0696, -0.0395, -0.0913, -0.0856, -0.0425, -0.1361,\n", + " -0.0605, -0.0796, -0.0377, -0.0850, -0.0451, -0.0483, -0.0691, -0.0730,\n", + " 0.0077, 0.0956, -0.0248, -0.0181, -0.0291, -0.1235, -0.0586, -0.0560,\n", + " -0.0770, -0.1211, -0.0619, -0.0961, -0.0227, -0.0104, -0.0357, 0.1086,\n", + " 0.1550, 0.1417, 0.1372]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00011541610001586378\n", + "Grad encoder.fc1.bias: 0.0002537939581088722\n", + "Grad encoder.encoder.0.weight: 3.8114503695396706e-05\n", + "Grad encoder.encoder.0.bias: 0.00019713054643943906\n", + "Grad encoder.encoder.2.weight: 2.160594885936007e-05\n", + "Grad encoder.encoder.2.bias: 0.00017457846843171865\n", + "Grad encoder.encoder.4.weight: 6.286034476943314e-05\n", + "Grad encoder.encoder.4.bias: 0.00023715551651548594\n", + "Grad decoder.fc1.0.weight: 2.7081576263299212e-05\n", + "Grad decoder.fc1.0.bias: 0.00010078047489514574\n", + "Grad decoder.fc1.2.weight: 3.2869465940166265e-05\n", + "Grad decoder.fc1.2.bias: 9.307279833592474e-05\n", + "Grad decoder.fc1.4.weight: 4.475277091842145e-05\n", + "Grad decoder.fc1.4.bias: 0.00013442638737615198\n", + "Grad decoder.fc2.weight: 9.460314322495833e-05\n", + "Grad decoder.fc2.bias: 0.0017891892930492759\n", + "Grad _memory_unit.weight_ih_l0: 2.424516651444719e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.482845598540734e-06\n", + "Grad _memory_unit.bias_hh_l0: 4.918833838019054e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.073073576662864e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.2308244297164492e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.1132298823213205e-05\n", + "Data X Sample: tensor([[2.6882, 2.8242, 2.2539, 2.0838, 2.2692, 2.2084, 3.4588, 4.0388, 4.0716,\n", + " 4.0014, 4.0764, 4.2241, 4.0546, 3.7543, 3.7072, 3.6226, 3.5929, 3.5302,\n", + " 3.6138, 3.4089, 3.4449, 3.3251, 3.0243, 2.8210, 2.7158, 2.7111, 2.7998,\n", + " 2.8061, 2.6504, 2.7937, 2.8801, 2.9678, 3.1043, 2.3114, 3.9660, 4.3196,\n", + " 4.4855, 4.9613, 5.7363, 5.3735, 1.8756, 0.9360, 0.8064, 1.2945, 1.7641,\n", + " 2.0014, 1.3666, 1.8453]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1980, -0.3964, -0.1047, -0.0403, -0.5278, 0.7582, 0.3347, 0.1007,\n", + " 0.2493, 0.3229, 0.1633, -1.4444, -0.9527, 0.4630, -1.2149, -0.6160,\n", + " -0.4441, -0.2221, 0.0314, -1.1476, -0.9959, -0.5164, -1.2103, -1.2782,\n", + " -0.0069, 0.0872, -1.8521, -1.8090, -1.5528, -1.9478, -1.8732, -1.0378,\n", + " -2.1251, -0.5690, -1.5345, -0.1401, -0.7493, -0.1765, -0.7030, 0.2065,\n", + " 0.3233, -0.1210, 0.8211]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2682, -0.3010, -0.0848, -0.1876, -0.0151, 0.0846, 0.1713, 0.3134,\n", + " 0.1446, 0.1965, 0.2446, -0.1502, -0.1631, -0.2629, -0.1760, -0.2580,\n", + " -0.1794, -0.0781, -0.1162, -0.1518, -0.1033, 0.0069, -0.0159, -0.0295,\n", + " 0.0129, 0.0431, -0.0216, -0.1085, -0.1518, -0.1746, -0.2271, -0.1925,\n", + " -0.2532, -0.3040, -0.1445, -0.1751, -0.0220, -0.0146, 0.0080, 0.3441,\n", + " 0.3305, 0.3497, 0.2518]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00014683930203318596\n", + "Grad encoder.fc1.bias: 0.00016668897296767682\n", + "Grad encoder.encoder.0.weight: 4.699576675193384e-05\n", + "Grad encoder.encoder.0.bias: 0.00012972886906936765\n", + "Grad encoder.encoder.2.weight: 3.2809359254315495e-05\n", + "Grad encoder.encoder.2.bias: 0.00013546487025450915\n", + "Grad encoder.encoder.4.weight: 0.00011487559822853655\n", + "Grad encoder.encoder.4.bias: 0.0005191246746107936\n", + "Grad decoder.fc1.0.weight: 3.866443512379192e-05\n", + "Grad decoder.fc1.0.bias: 0.00014191234367899597\n", + "Grad decoder.fc1.2.weight: 4.429556429386139e-05\n", + "Grad decoder.fc1.2.bias: 0.00012973177945241332\n", + "Grad decoder.fc1.4.weight: 5.110483107273467e-05\n", + "Grad decoder.fc1.4.bias: 0.00021266799012664706\n", + "Grad decoder.fc2.weight: 8.815363253233954e-05\n", + "Grad decoder.fc2.bias: 0.0018609045073390007\n", + "Grad _memory_unit.weight_ih_l0: 1.4709540891999495e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.0333449608879164e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.470604264701251e-06\n", + "Grad _memory_unit.weight_ih_l1: 9.380706842421205e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.26505905832164e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.6577854694332927e-05\n", + "Data X Sample: tensor([[1.5234, 1.7041, 1.9279, 1.9963, 2.1087, 2.0316, 1.8796, 2.1124, 3.6664,\n", + " 4.2621, 4.3873, 4.3273, 4.1345, 4.1279, 3.8989, 3.6418, 3.6511, 3.5824,\n", + " 3.7005, 3.6822, 3.5872, 3.5502, 3.1496, 3.0444, 3.0705, 3.1264, 3.0849,\n", + " 3.0997, 3.1569, 3.2915, 3.4715, 3.4376, 3.8523, 2.8583, 4.6131, 4.8207,\n", + " 5.0362, 5.4304, 6.1736, 5.9154, 1.1741, 0.7010, 0.6750, 1.2601, 1.7244,\n", + " 1.8641, 1.1626, 1.8766]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0288, -0.9824, 0.2537, -0.7179, 0.9780, 0.1841, 0.3144, 0.0464,\n", + " 0.6565, 0.4021, 0.7211, 0.6508, 0.0343, -0.6484, -0.5830, 0.2450,\n", + " 0.1281, -0.7851, -0.0544, -0.1447, -0.2034, 0.1480, -0.7418, -0.1896,\n", + " -1.1342, 0.5793, 0.0295, -1.2894, 0.0316, -0.0416, -0.6012, 0.0194,\n", + " -0.1781, -0.1511, -1.0645, -0.2212, 1.0359, 0.8631, 0.2630, 0.3035,\n", + " 0.4587, 0.1862, 0.6489]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3131, -0.3469, -0.0963, -0.1746, 0.0389, 0.1302, 0.2301, 0.3743,\n", + " 0.2030, 0.2461, 0.3042, -0.1844, -0.2013, -0.3281, -0.2121, -0.3163,\n", + " -0.1976, -0.0871, -0.1301, -0.1738, -0.1263, 0.0202, -0.0163, -0.0274,\n", + " 0.0244, 0.0484, -0.0569, -0.1739, -0.2194, -0.2362, -0.2929, -0.2458,\n", + " -0.3248, -0.3702, -0.1914, -0.2030, -0.0239, -0.0199, 0.0253, 0.3988,\n", + " 0.3762, 0.4204, 0.3030]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00035897427005693316\n", + "Grad encoder.fc1.bias: 0.0004797735018655658\n", + "Grad encoder.encoder.0.weight: 9.601213969290257e-05\n", + "Grad encoder.encoder.0.bias: 0.00043041014578193426\n", + "Grad encoder.encoder.2.weight: 7.181576802395284e-05\n", + "Grad encoder.encoder.2.bias: 0.0003322755510453135\n", + "Grad encoder.encoder.4.weight: 0.00022801521117798984\n", + "Grad encoder.encoder.4.bias: 0.0007421489572152495\n", + "Grad decoder.fc1.0.weight: 7.29894163669087e-05\n", + "Grad decoder.fc1.0.bias: 0.00022103212540969253\n", + "Grad decoder.fc1.2.weight: 7.313318201340735e-05\n", + "Grad decoder.fc1.2.bias: 0.00027397574740462005\n", + "Grad decoder.fc1.4.weight: 6.950425449758768e-05\n", + "Grad decoder.fc1.4.bias: 0.00042957940604537725\n", + "Grad decoder.fc2.weight: 0.0001496433251304552\n", + "Grad decoder.fc2.bias: 0.0023014063481241465\n", + "Grad _memory_unit.weight_ih_l0: 3.0258597689680755e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.946672783669783e-06\n", + "Grad _memory_unit.bias_hh_l0: 3.9508959162048995e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.4878827414577245e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.1318151488667354e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.071285962301772e-05\n", + "Data X Sample: tensor([[1.3886, 1.5512, 1.7476, 1.9198, 1.9670, 2.0125, 2.0352, 2.3665, 3.7152,\n", + " 4.0915, 4.1652, 3.9982, 4.0457, 3.8170, 3.6946, 3.4777, 3.5143, 3.5554,\n", + " 3.5085, 3.3159, 3.3712, 3.2134, 2.8773, 2.6798, 2.8152, 2.8966, 2.9224,\n", + " 2.9325, 2.9523, 3.0557, 3.1531, 3.0756, 3.4541, 2.5906, 4.2773, 4.7647,\n", + " 4.9280, 5.3535, 5.7363, 5.6572, 1.0404, 0.5915, 0.6427, 1.1252, 1.6689,\n", + " 1.9156, 1.2714, 1.8062]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3337, -0.5614, -1.7676, -0.0112, 0.6688, 0.7677, 0.5075, 0.8246,\n", + " 1.4102, 0.6133, 0.5566, -1.2630, -0.5317, -0.0576, -0.4203, -1.1247,\n", + " -0.3800, -0.8150, -0.6703, 0.4786, -0.1682, 0.4704, 0.4234, 3.6597,\n", + " 1.2616, -0.0716, -0.9140, 0.4103, -0.9071, -0.2111, 0.3960, -0.1605,\n", + " -0.7409, 1.0961, 0.0391, 0.0284, -0.8471, 0.8591, 0.0000, 0.7929,\n", + " 0.7125, 0.6033, 0.2923]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2815, -0.3228, -0.0861, -0.1687, 0.0256, 0.1118, 0.2022, 0.3398,\n", + " 0.1882, 0.2279, 0.2682, -0.1678, -0.1819, -0.2963, -0.1954, -0.2958,\n", + " -0.1900, -0.0820, -0.1109, -0.1610, -0.1159, 0.0151, -0.0203, -0.0313,\n", + " 0.0177, 0.0458, -0.0468, -0.1461, -0.1976, -0.2217, -0.2655, -0.2193,\n", + " -0.3009, -0.3341, -0.1789, -0.1828, -0.0233, -0.0130, 0.0197, 0.3617,\n", + " 0.3507, 0.3813, 0.2757]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 8.07248943601735e-05\n", + "Grad encoder.fc1.bias: 0.00045163289178162813\n", + "Grad encoder.encoder.0.weight: 2.0597219190676697e-05\n", + "Grad encoder.encoder.0.bias: 0.0005499526159837842\n", + "Grad encoder.encoder.2.weight: 2.1676489268429577e-05\n", + "Grad encoder.encoder.2.bias: 0.0005189317744225264\n", + "Grad encoder.encoder.4.weight: 8.442932448815554e-05\n", + "Grad encoder.encoder.4.bias: 0.0014336023014038801\n", + "Grad decoder.fc1.0.weight: 4.209481267025694e-05\n", + "Grad decoder.fc1.0.bias: 0.00035769230453297496\n", + "Grad decoder.fc1.2.weight: 7.210193143691868e-05\n", + "Grad decoder.fc1.2.bias: 0.00039662508061155677\n", + "Grad decoder.fc1.4.weight: 8.2689497503452e-05\n", + "Grad decoder.fc1.4.bias: 0.0004718002746812999\n", + "Grad decoder.fc2.weight: 0.00012165457155788317\n", + "Grad decoder.fc2.bias: 0.0025994470342993736\n", + "Grad _memory_unit.weight_ih_l0: 8.9944096544059e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.5684995711781085e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.347640838706866e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.257665750628803e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001099362489185296\n", + "Grad _memory_unit.bias_hh_l1: 5.498806058312766e-05\n", + "Data X Sample: tensor([[1.2253, 1.5424, 1.7656, 1.8345, 1.9670, 2.0302, 2.0075, 2.0343, 2.0163,\n", + " 2.0410, 1.9827, 1.8676, 1.7443, 1.7531, 1.6922, 1.7546, 1.7642, 1.7390,\n", + " 1.6974, 1.5938, 1.5678, 1.5324, 1.4676, 1.4182, 1.3438, 1.3791, 1.3586,\n", + " 1.3908, 1.0026, 0.9858, 1.0149, 0.9312, 0.8404, 0.5904, 0.9045, 0.8853,\n", + " 0.9537, 1.0548, 1.1663, 1.1888, 1.1645, 0.6651, 0.6710, 1.2658, 1.7006,\n", + " 1.9328, 1.1626, 1.8141]], device='cuda:0')\n", + "Data Y Sample: tensor([[-2.3684, -1.5752, -0.9621, -1.1603, -0.8777, 0.6538, 2.3950, 3.1914,\n", + " 1.9455, 3.3136, 5.6260, 0.3202, -0.9558, -2.5618, -2.3397, -3.1187,\n", + " -4.0002, -2.0292, -0.5041, -1.0632, -1.0680, -0.8336, -0.0261, -0.6776,\n", + " -0.2313, -0.2756, 0.8655, -1.3003, -1.2347, -1.6842, -1.7992, -1.0593,\n", + " 0.8383, -2.9697, -0.4309, -4.6610, 0.5286, 0.5949, 0.8916, 7.6634,\n", + " 8.0109, 5.2040, 3.6298]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1338, -0.1965, -0.0456, -0.1534, -0.0528, 0.0194, 0.0573, 0.1683,\n", + " 0.0919, 0.1300, 0.0969, -0.0811, -0.0858, -0.1323, -0.1013, -0.1802,\n", + " -0.1544, -0.0592, -0.0382, -0.1043, -0.0559, -0.0149, -0.0336, -0.0544,\n", + " -0.0161, 0.0258, 0.0120, -0.0066, -0.0722, -0.1280, -0.1175, -0.0874,\n", + " -0.1650, -0.1555, -0.0997, -0.0926, -0.0210, 0.0147, -0.0206, 0.1845,\n", + " 0.2282, 0.1871, 0.1453]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00018119753804057837\n", + "Grad encoder.fc1.bias: 0.00027753692120313644\n", + "Grad encoder.encoder.0.weight: 4.992400135961361e-05\n", + "Grad encoder.encoder.0.bias: 0.0003319662937428802\n", + "Grad encoder.encoder.2.weight: 3.829580236924812e-05\n", + "Grad encoder.encoder.2.bias: 0.00026913831243291497\n", + "Grad encoder.encoder.4.weight: 0.00013909726112615317\n", + "Grad encoder.encoder.4.bias: 0.0007207509479485452\n", + "Grad decoder.fc1.0.weight: 4.090754737262614e-05\n", + "Grad decoder.fc1.0.bias: 0.00018044062016997486\n", + "Grad decoder.fc1.2.weight: 3.636067776824348e-05\n", + "Grad decoder.fc1.2.bias: 0.0002275309816468507\n", + "Grad decoder.fc1.4.weight: 3.5917350032832474e-05\n", + "Grad decoder.fc1.4.bias: 0.0003323042474221438\n", + "Grad decoder.fc2.weight: 0.00010074553574668244\n", + "Grad decoder.fc2.bias: 0.0021270555444061756\n", + "Grad _memory_unit.weight_ih_l0: 3.541520300132106e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.1018652003258467e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.741135737480363e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.3232610172053683e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.864497193717398e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.9306939066154882e-05\n", + "Data X Sample: tensor([[1.4915, 1.5934, 1.6739, 1.9504, 2.0404, 1.9771, 2.1677, 2.5326, 3.9544,\n", + " 4.1420, 4.2890, 4.0508, 4.0235, 3.8798, 3.5609, 3.4476, 3.3649, 3.4393,\n", + " 3.3763, 3.4089, 3.3860, 3.2960, 2.9062, 2.9413, 2.8828, 2.9854, 3.0156,\n", + " 3.0508, 3.2229, 3.4029, 3.2860, 3.3436, 3.7027, 2.6501, 4.3704, 4.6310,\n", + " 4.7707, 5.1998, 5.6919, 5.5608, 1.0452, 0.6213, 0.5962, 1.0793, 1.5896,\n", + " 1.8984, 1.2646, 1.9079]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 7.4480e-01, 4.7141e-01, 8.3488e-01, 4.2516e-01, 8.5221e-01,\n", + " -3.5203e-01, -4.2762e-01, 2.8041e-02, -2.7558e-01, -8.8952e-02,\n", + " 2.6565e-01, -1.8826e-01, -3.6912e-01, 2.3023e-01, 7.7478e-01,\n", + " 3.3115e-01, 9.2609e-02, 4.9722e-01, 7.4428e-01, -3.1145e+00,\n", + " 4.5616e-01, 1.5003e-03, -7.2108e-02, 6.0822e-01, 2.2665e+00,\n", + " 7.4338e-01, -3.8412e-01, -7.0060e-01, -5.2259e-01, -1.0694e-01,\n", + " -4.9444e-02, 7.0797e-02, -7.2365e-02, 6.6605e-02, 1.5279e-01,\n", + " 6.9428e-01, -2.6727e-01, 1.7111e-01, 0.0000e+00, -1.1798e+00,\n", + " -1.7887e-01, -1.1519e+00, 4.2745e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2093, -0.2699, -0.0661, -0.1398, 0.0227, 0.0889, 0.1486, 0.2673,\n", + " 0.1756, 0.2034, 0.1950, -0.1364, -0.1444, -0.2356, -0.1605, -0.2665,\n", + " -0.1806, -0.0725, -0.0682, -0.1374, -0.0965, 0.0054, -0.0330, -0.0478,\n", + " 0.0055, 0.0364, -0.0375, -0.1028, -0.1702, -0.2134, -0.2155, -0.1718,\n", + " -0.2706, -0.2612, -0.1690, -0.1407, -0.0216, 0.0045, 0.0091, 0.2770,\n", + " 0.3012, 0.3025, 0.2264]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00036415591603145003\n", + "Grad encoder.fc1.bias: 0.00018899401766248047\n", + "Grad encoder.encoder.0.weight: 9.499101724941283e-05\n", + "Grad encoder.encoder.0.bias: 0.0002111414505634457\n", + "Grad encoder.encoder.2.weight: 7.415137224597856e-05\n", + "Grad encoder.encoder.2.bias: 0.0002089054905809462\n", + "Grad encoder.encoder.4.weight: 0.0002521839051041752\n", + "Grad encoder.encoder.4.bias: 0.0006914834957569838\n", + "Grad decoder.fc1.0.weight: 7.259316043928266e-05\n", + "Grad decoder.fc1.0.bias: 0.00015561049804091454\n", + "Grad decoder.fc1.2.weight: 7.312184607144445e-05\n", + "Grad decoder.fc1.2.bias: 0.00023000960936769843\n", + "Grad decoder.fc1.4.weight: 9.409946505911648e-05\n", + "Grad decoder.fc1.4.bias: 0.0006588450632989407\n", + "Grad decoder.fc2.weight: 0.00013833293633069843\n", + "Grad decoder.fc2.bias: 0.0023417531047016382\n", + "Grad _memory_unit.weight_ih_l0: 1.4204764511305257e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.549670054781018e-06\n", + "Grad _memory_unit.bias_hh_l0: 1.9370490917935967e-06\n", + "Grad _memory_unit.weight_ih_l1: 7.569624358438887e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.0922990592662245e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.0644079995690845e-05\n", + "Data X Sample: tensor([[1.4183, 1.7260, 1.9053, 1.9876, 2.1924, 2.2968, 2.4235, 2.5028, 2.4483,\n", + " 2.4580, 2.5823, 2.5395, 2.5721, 2.4565, 2.4286, 2.3823, 2.3365, 2.4199,\n", + " 2.4594, 2.3191, 2.3211, 2.4250, 2.3134, 2.2599, 2.3535, 2.3664, 2.3416,\n", + " 2.3289, 2.2064, 2.3286, 2.2992, 2.2272, 2.1736, 1.4051, 1.8849, 1.7488,\n", + " 1.6007, 1.4709, 1.5466, 1.5122, 1.1788, 0.6671, 0.7114, 1.2142, 1.7522,\n", + " 2.0300, 1.3802, 2.0643]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1475, 0.3865, -0.1881, -0.5142, 0.1280, -0.5604, 0.0522, -0.5714,\n", + " 0.0205, -0.4783, -0.6870, -0.5900, -0.6921, -0.3207, 0.0756, 0.2413,\n", + " 0.9869, -0.7272, 0.1597, 0.6578, 0.1132, -0.8720, 0.2657, 0.0873,\n", + " 0.1799, -1.2795, 0.0874, -1.1184, -0.0851, -0.1807, 0.3352, 0.3817,\n", + " 0.1876, 0.8976, 1.2602, 1.3074, 0.8892, -0.8004, -0.4066, -0.3795,\n", + " -0.4118, -0.6318, -0.5183]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4889, 0.4496, 0.1703, 0.3461, 0.1440, -0.2108, -0.4309, -0.4925,\n", + " -0.2379, -0.3356, -0.2962, 0.2303, 0.2031, 0.3392, 0.2556, 0.3979,\n", + " 0.3120, 0.0960, 0.1293, 0.0978, 0.0857, 0.0622, 0.0715, 0.0173,\n", + " 0.0759, 0.0555, -0.1232, 0.0591, 0.2626, 0.3063, 0.2663, 0.3045,\n", + " 0.3817, 0.3672, 0.2360, 0.2131, -0.0109, 0.0124, -0.0300, -0.4001,\n", + " -0.3799, -0.3929, -0.3400]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00012217086623422801\n", + "Grad encoder.fc1.bias: 0.0005742270150221884\n", + "Grad encoder.encoder.0.weight: 3.722034307429567e-05\n", + "Grad encoder.encoder.0.bias: 0.00034112483263015747\n", + "Grad encoder.encoder.2.weight: 2.1397205273387954e-05\n", + "Grad encoder.encoder.2.bias: 0.00026885810075327754\n", + "Grad encoder.encoder.4.weight: 8.66533227963373e-05\n", + "Grad encoder.encoder.4.bias: 0.0004237382090650499\n", + "Grad decoder.fc1.0.weight: 3.0871815397404134e-05\n", + "Grad decoder.fc1.0.bias: 0.0001482028019381687\n", + "Grad decoder.fc1.2.weight: 3.7856443668715656e-05\n", + "Grad decoder.fc1.2.bias: 0.0001605605793884024\n", + "Grad decoder.fc1.4.weight: 5.914761277381331e-05\n", + "Grad decoder.fc1.4.bias: 0.00029414083110168576\n", + "Grad decoder.fc2.weight: 0.00012470781803131104\n", + "Grad decoder.fc2.bias: 0.001407515723258257\n", + "Grad _memory_unit.weight_ih_l0: 3.5575883430283284e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.0517268492549192e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.669108759320807e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.3632615036840434e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.313773777335882e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.7179456335725263e-05\n", + "Data X Sample: tensor([[2.1843, 1.8381, 2.0180, 2.0575, 2.1138, 2.1407, 2.7100, 3.6697, 4.3084,\n", + " 4.3885, 4.1970, 4.2825, 4.1278, 3.9943, 3.8232, 3.6664, 3.6180, 3.6772,\n", + " 3.4506, 3.4274, 3.2878, 3.3404, 2.9303, 2.8745, 2.7289, 2.7608, 2.8078,\n", + " 2.7326, 2.8239, 2.9083, 2.9851, 3.1226, 3.3463, 2.4578, 4.2307, 4.5410,\n", + " 4.8218, 5.3111, 5.8440, 5.9296, 1.1645, 0.7070, 0.7437, 1.2716, 1.8235,\n", + " 1.9899, 1.4278, 2.0174]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3733, 0.2961, -0.3670, -0.0327, 0.6962, -0.0934, -0.4003, -0.9884,\n", + " 0.1060, -0.2625, -0.8011, 0.5870, -0.1208, -0.5148, -0.6549, 0.1016,\n", + " -0.5200, -1.1498, 0.9995, -0.0671, -1.4720, -0.3911, 1.0204, 0.0559,\n", + " -0.5424, -0.7165, -0.3445, 1.7200, 0.1767, 0.7629, 0.6174, 1.2086,\n", + " -0.0304, -0.0602, 0.5213, 0.9510, -0.7353, 0.7891, 0.8165, -0.1207,\n", + " 0.0512, 0.6927, -0.2480]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1601, -0.2418, -0.0544, -0.0941, 0.0646, 0.1026, 0.1307, 0.2298,\n", + " 0.2070, 0.2140, 0.1585, -0.1253, -0.1309, -0.2131, -0.1462, -0.2786,\n", + " -0.1856, -0.0696, -0.0309, -0.1261, -0.0874, 0.0029, -0.0470, -0.0717,\n", + " -0.0026, 0.0276, -0.0543, -0.1094, -0.1929, -0.2542, -0.2085, -0.1567,\n", + " -0.2919, -0.2283, -0.1924, -0.1133, -0.0198, 0.0209, 0.0084, 0.2196,\n", + " 0.2802, 0.2651, 0.2118]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00026785326190292835\n", + "Grad encoder.fc1.bias: 0.0009361200500279665\n", + "Grad encoder.encoder.0.weight: 7.665104203624651e-05\n", + "Grad encoder.encoder.0.bias: 0.0009960387833416462\n", + "Grad encoder.encoder.2.weight: 7.152927719289437e-05\n", + "Grad encoder.encoder.2.bias: 0.0007805258501321077\n", + "Grad encoder.encoder.4.weight: 0.00025647919392213225\n", + "Grad encoder.encoder.4.bias: 0.002049751579761505\n", + "Grad decoder.fc1.0.weight: 0.00010204750287812203\n", + "Grad decoder.fc1.0.bias: 0.0005951505736447871\n", + "Grad decoder.fc1.2.weight: 0.00013121777737978846\n", + "Grad decoder.fc1.2.bias: 0.0006799115799367428\n", + "Grad decoder.fc1.4.weight: 0.00014308365643955767\n", + "Grad decoder.fc1.4.bias: 0.0010620272951200604\n", + "Grad decoder.fc2.weight: 0.0001916481414809823\n", + "Grad decoder.fc2.bias: 0.0026403164956718683\n", + "Grad _memory_unit.weight_ih_l0: 1.2880604117526673e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.2285184210631996e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.7463616788736545e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.197638529352844e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001630081096664071\n", + "Grad _memory_unit.bias_hh_l1: 8.334867015946656e-05\n", + "Data X Sample: tensor([[1.3780, 1.5279, 1.7220, 1.9176, 2.1138, 1.8990, 2.0352, 1.9605, 2.7974,\n", + " 3.7502, 4.0510, 4.0975, 3.7261, 3.8770, 3.6517, 3.5310, 3.5504, 3.4432,\n", + " 3.4011, 3.4349, 3.3835, 3.2869, 2.9038, 2.7924, 2.7402, 2.8940, 2.8424,\n", + " 2.8591, 2.8482, 3.0328, 3.0376, 3.1004, 3.4497, 2.5494, 4.2405, 4.5580,\n", + " 4.8218, 5.2581, 5.6665, 5.5579, 1.0404, 0.6193, 0.6508, 1.1051, 1.6689,\n", + " 1.9442, 1.2306, 1.9626]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2912, -0.1825, -0.3592, -1.0926, -1.1776, -0.6642, 0.1679, 0.5285,\n", + " 0.7563, 0.5646, 0.6599, 0.1910, -1.1726, -0.2376, 0.6611, -0.1797,\n", + " -0.5341, 0.1012, -0.4045, -0.8891, -0.1022, -0.0954, -4.3492, -1.6672,\n", + " -1.7597, 1.5435, 1.4273, 0.1641, 0.6648, 0.5379, 0.1900, -0.6216,\n", + " -0.7173, -0.2745, -0.3600, -0.5568, 0.7316, -0.0597, 0.0073, 0.5923,\n", + " 0.6386, 0.8436, 1.4169]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1496, -0.2419, -0.0523, -0.0661, 0.1038, 0.1260, 0.1408, 0.2293,\n", + " 0.2417, 0.2353, 0.1606, -0.1288, -0.1360, -0.2237, -0.1507, -0.3022,\n", + " -0.1940, -0.0698, -0.0169, -0.1260, -0.0899, 0.0066, -0.0536, -0.0819,\n", + " -0.0018, 0.0241, -0.0741, -0.1337, -0.2263, -0.2939, -0.2257, -0.1661,\n", + " -0.3262, -0.2325, -0.2190, -0.1097, -0.0197, 0.0280, 0.0133, 0.2086,\n", + " 0.2845, 0.2693, 0.2219]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 5.491438787430525e-05\n", + "Grad encoder.fc1.bias: 0.0008303464855998755\n", + "Grad encoder.encoder.0.weight: 1.3943463272880763e-05\n", + "Grad encoder.encoder.0.bias: 0.0004890115233138204\n", + "Grad encoder.encoder.2.weight: 8.798198905424215e-06\n", + "Grad encoder.encoder.2.bias: 0.00029109499882906675\n", + "Grad encoder.encoder.4.weight: 4.3272168113617226e-05\n", + "Grad encoder.encoder.4.bias: 0.0007868851535022259\n", + "Grad decoder.fc1.0.weight: 2.220771784777753e-05\n", + "Grad decoder.fc1.0.bias: 0.00023659103317186236\n", + "Grad decoder.fc1.2.weight: 4.2486677557462826e-05\n", + "Grad decoder.fc1.2.bias: 0.0002152485103579238\n", + "Grad decoder.fc1.4.weight: 5.040606629336253e-05\n", + "Grad decoder.fc1.4.bias: 0.0002565739268902689\n", + "Grad decoder.fc2.weight: 0.00010685321467462927\n", + "Grad decoder.fc2.bias: 0.0021336080972105265\n", + "Grad _memory_unit.weight_ih_l0: 5.510385108209448e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.530099663999863e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.3311226211953908e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.1165446923987474e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.389457121258602e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.2713014661567286e-05\n", + "Data X Sample: tensor([[1.4693, 1.5585, 1.8137, 1.9045, 1.9055, 2.0390, 2.1230, 2.0755, 3.8104,\n", + " 4.3600, 4.3302, 4.2514, 4.1234, 3.8634, 3.8686, 3.7676, 3.7171, 3.5941,\n", + " 3.5601, 3.4479, 3.4841, 3.5272, 3.0701, 2.8649, 2.9504, 2.9149, 2.8318,\n", + " 2.8550, 2.9904, 3.1474, 3.1741, 3.4403, 3.7599, 2.8332, 4.5150, 4.8693,\n", + " 5.1640, 5.6212, 6.2307, 6.0856, 1.1072, 0.7010, 0.6629, 1.1137, 1.7482,\n", + " 1.8241, 1.1218, 1.8532]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 2.2408e-01, -9.6076e-01, 5.8504e-01, 2.5283e+00, 7.6394e-01,\n", + " 6.7900e-01, -6.0293e-02, 3.2359e-01, 1.0575e+00, 4.2468e-01,\n", + " 3.4220e-01, 5.3179e-01, 2.4057e-01, -2.8571e-01, -6.5134e-01,\n", + " 6.4093e-01, 3.1229e-01, -5.2880e-01, -2.7144e+00, -2.4906e-01,\n", + " 4.8714e-01, 2.2884e-01, 1.2947e-02, -7.8301e-02, -3.7175e-01,\n", + " -9.5968e-01, -3.1649e-01, 5.4363e-02, 5.3659e-01, -3.6139e-01,\n", + " 1.3241e-01, -2.3608e+00, -3.4251e-01, -6.6467e-01, -2.7280e-01,\n", + " -7.3801e-02, -8.9523e-04, -8.2621e-01, 9.8338e-01, 3.7541e-01,\n", + " 3.9945e-01, 3.2249e-01, 3.2427e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1446, -0.2453, -0.0512, -0.0472, 0.1316, 0.1449, 0.1511, 0.2322,\n", + " 0.2685, 0.2520, 0.1652, -0.1330, -0.1397, -0.2329, -0.1545, -0.3197,\n", + " -0.1998, -0.0696, -0.0083, -0.1251, -0.0909, 0.0113, -0.0577, -0.0896,\n", + " 0.0004, 0.0235, -0.0882, -0.1511, -0.2520, -0.3221, -0.2399, -0.1737,\n", + " -0.3525, -0.2379, -0.2389, -0.1085, -0.0187, 0.0330, 0.0180, 0.2039,\n", + " 0.2890, 0.2759, 0.2314]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 7.342343451455235e-05\n", + "Grad encoder.fc1.bias: 6.460574513766915e-05\n", + "Grad encoder.encoder.0.weight: 1.631935083423741e-05\n", + "Grad encoder.encoder.0.bias: 8.225883357226849e-05\n", + "Grad encoder.encoder.2.weight: 1.378033084620256e-05\n", + "Grad encoder.encoder.2.bias: 0.00010098529310198501\n", + "Grad encoder.encoder.4.weight: 6.42381128272973e-05\n", + "Grad encoder.encoder.4.bias: 0.0002595701953396201\n", + "Grad decoder.fc1.0.weight: 2.9313812774489634e-05\n", + "Grad decoder.fc1.0.bias: 0.00012497854186221957\n", + "Grad decoder.fc1.2.weight: 4.419334800331853e-05\n", + "Grad decoder.fc1.2.bias: 0.0001826901570893824\n", + "Grad decoder.fc1.4.weight: 5.148773198015988e-05\n", + "Grad decoder.fc1.4.bias: 0.00034423446049913764\n", + "Grad decoder.fc2.weight: 9.173888247460127e-05\n", + "Grad decoder.fc2.bias: 0.0019599127117544413\n", + "Grad _memory_unit.weight_ih_l0: 2.52036920755927e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.4809267668169923e-05\n", + "Grad _memory_unit.bias_hh_l0: 7.828059096937068e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.1159075938849128e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.667511191451922e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.902594158309512e-05\n", + "Data X Sample: tensor([[1.4990, 1.6196, 1.7325, 1.9504, 2.0114, 1.9226, 2.0044, 2.0400, 3.4223,\n", + " 4.0978, 4.2604, 4.1365, 3.8504, 3.6453, 3.5861, 3.5215, 3.5300, 3.4528,\n", + " 3.5560, 3.4312, 3.3811, 3.2716, 2.8652, 2.8917, 2.8359, 2.8679, 2.9623,\n", + " 3.0508, 2.9453, 3.1998, 3.2720, 3.2082, 3.5553, 2.5906, 4.3312, 4.7453,\n", + " 4.8808, 5.2872, 5.8884, 5.6062, 1.1311, 0.6353, 0.6508, 1.1625, 1.6451,\n", + " 1.9385, 1.2034, 1.6499]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6396, -1.7323, -0.5092, 0.5884, 0.2771, -0.2926, 0.2069, 0.6730,\n", + " 0.3819, 0.4395, 1.0964, 0.4112, -0.9323, -0.6571, -0.0508, -0.1996,\n", + " -0.0601, -1.4188, -1.5436, -0.2678, -1.5014, -1.1644, -1.4493, -0.0219,\n", + " 0.6462, -0.2804, -0.0808, -0.7777, 0.1019, -0.0958, -0.9570, -0.4456,\n", + " -0.7347, -0.5758, -1.4330, -0.9391, 1.0705, 0.7348, -0.1255, 0.8259,\n", + " 0.9860, 0.8469, 1.3327]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1448, -0.2415, -0.0511, -0.0610, 0.1054, 0.1300, 0.1394, 0.2251,\n", + " 0.2482, 0.2355, 0.1587, -0.1265, -0.1308, -0.2189, -0.1476, -0.2991,\n", + " -0.1940, -0.0656, -0.0120, -0.1186, -0.0871, 0.0105, -0.0547, -0.0848,\n", + " 0.0019, 0.0258, -0.0748, -0.1298, -0.2298, -0.2946, -0.2222, -0.1622,\n", + " -0.3283, -0.2268, -0.2207, -0.1077, -0.0160, 0.0299, 0.0163, 0.2021,\n", + " 0.2804, 0.2653, 0.2218]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00016421711188741028\n", + "Grad encoder.fc1.bias: 0.0003499434096738696\n", + "Grad encoder.encoder.0.weight: 5.629588122246787e-05\n", + "Grad encoder.encoder.0.bias: 0.00021513979299925268\n", + "Grad encoder.encoder.2.weight: 4.4222942960914224e-05\n", + "Grad encoder.encoder.2.bias: 0.00016351974045392126\n", + "Grad encoder.encoder.4.weight: 0.00012604672519955784\n", + "Grad encoder.encoder.4.bias: 0.0001535454939585179\n", + "Grad decoder.fc1.0.weight: 4.0671948227100074e-05\n", + "Grad decoder.fc1.0.bias: 0.00015226544928736985\n", + "Grad decoder.fc1.2.weight: 6.609113188460469e-05\n", + "Grad decoder.fc1.2.bias: 0.00023090638569556177\n", + "Grad decoder.fc1.4.weight: 7.610410102643073e-05\n", + "Grad decoder.fc1.4.bias: 0.000404568447265774\n", + "Grad decoder.fc2.weight: 0.00010727784683695063\n", + "Grad decoder.fc2.bias: 0.0024058129638433456\n", + "Grad _memory_unit.weight_ih_l0: 1.8493961988497176e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.0611110155878123e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.574967417487642e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.1399454251659336e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.9393097065621987e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.4960322005208582e-05\n", + "Data X Sample: tensor([[1.4873, 1.6910, 1.9744, 1.9766, 2.0387, 2.1524, 1.9566, 2.7200, 3.9520,\n", + " 4.2921, 4.2858, 4.1053, 4.1611, 4.1115, 3.8257, 3.5926, 3.5882, 3.6405,\n", + " 3.5332, 3.4925, 3.4988, 3.3328, 2.8917, 2.8993, 2.8772, 3.0272, 3.0023,\n", + " 3.0752, 3.0667, 3.2981, 3.2406, 3.4624, 3.8347, 2.8263, 4.5469, 4.6504,\n", + " 5.1758, 5.4648, 6.0849, 5.7225, 1.2170, 0.7269, 0.6791, 1.3032, 1.8354,\n", + " 2.0357, 1.2374, 1.8688]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3874, 0.5369, 0.9119, -1.6330, 1.3526, 0.6902, 0.3543, 0.5460,\n", + " 0.4161, 0.3260, 0.1818, 0.0568, -0.1597, 0.0729, 0.0829, 0.2075,\n", + " -1.1322, -0.0160, 0.3117, -0.1672, 0.0356, 0.2807, 0.5548, 0.2084,\n", + " -0.1799, 0.2572, -0.6464, -0.6584, -0.3943, -0.7272, 0.0028, 0.0510,\n", + " 0.1321, -0.1259, 0.9892, -0.1547, -0.8471, 0.8820, -0.2895, 0.3163,\n", + " 0.4020, 0.6738, 0.4832]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1597, -0.2477, -0.0541, -0.0853, 0.0711, 0.1132, 0.1352, 0.2317,\n", + " 0.2252, 0.2199, 0.1656, -0.1260, -0.1274, -0.2140, -0.1466, -0.2805,\n", + " -0.1883, -0.0632, -0.0258, -0.1166, -0.0895, 0.0101, -0.0491, -0.0731,\n", + " 0.0055, 0.0308, -0.0591, -0.1107, -0.2068, -0.2620, -0.2103, -0.1578,\n", + " -0.3044, -0.2290, -0.2016, -0.1163, -0.0129, 0.0220, 0.0156, 0.2179,\n", + " 0.2813, 0.2690, 0.2206]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005022926488891244\n", + "Grad encoder.fc1.bias: 0.0003543740895111114\n", + "Grad encoder.encoder.0.weight: 0.00015826754679437727\n", + "Grad encoder.encoder.0.bias: 0.00039836589712649584\n", + "Grad encoder.encoder.2.weight: 0.00013729131023865193\n", + "Grad encoder.encoder.2.bias: 0.00047910423018038273\n", + "Grad encoder.encoder.4.weight: 0.000386054947739467\n", + "Grad encoder.encoder.4.bias: 0.0012934303376823664\n", + "Grad decoder.fc1.0.weight: 0.00011952970817219466\n", + "Grad decoder.fc1.0.bias: 0.00036127245402894914\n", + "Grad decoder.fc1.2.weight: 8.61703374539502e-05\n", + "Grad decoder.fc1.2.bias: 0.0003318738017696887\n", + "Grad decoder.fc1.4.weight: 6.027322160662152e-05\n", + "Grad decoder.fc1.4.bias: 0.0005067911115474999\n", + "Grad decoder.fc2.weight: 7.827336230548099e-05\n", + "Grad decoder.fc2.bias: 0.0019037429010495543\n", + "Grad _memory_unit.weight_ih_l0: 3.3433734643040225e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.225371306645684e-05\n", + "Grad _memory_unit.bias_hh_l0: 6.45578074909281e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.848787178460043e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.240025686565787e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.1100706110009924e-05\n", + "Data X Sample: tensor([[1.4777, 1.6706, 1.9173, 2.0466, 2.0848, 2.1569, 2.0152, 2.4389, 3.6395,\n", + " 4.3095, 4.2192, 4.3663, 3.9925, 3.9616, 3.8308, 3.7690, 3.6699, 3.5457,\n", + " 3.4754, 3.4181, 3.3909, 3.3236, 2.8484, 2.8268, 2.9072, 2.8417, 2.8904,\n", + " 2.9896, 2.9210, 3.1867, 3.2615, 3.2469, 3.7181, 2.7828, 4.5665, 4.8474,\n", + " 5.0617, 5.4675, 5.8821, 5.8189, 1.1645, 0.6930, 0.6548, 1.2027, 1.7601,\n", + " 2.0128, 1.2442, 1.8141]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1310, 0.8146, 0.4500, 1.1386, 0.8186, -0.8467, 0.0054, -0.0336,\n", + " -0.1066, -0.2278, -0.0313, 0.9842, 0.3820, -0.7283, -0.1922, 0.2383,\n", + " 0.6049, 0.3371, 1.4208, 0.1311, 1.0511, -0.3734, 0.9240, 0.5267,\n", + " -0.5660, 0.6181, -1.0316, -1.0699, -0.5544, -0.3426, -0.4427, 0.2472,\n", + " -0.3625, 0.2796, -0.0127, 0.3759, 0.5283, 0.4654, -0.0482, -0.3033,\n", + " -0.6939, -0.0762, 0.1190]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1765, -0.2585, -0.0570, -0.1042, 0.0498, 0.1065, 0.1392, 0.2448,\n", + " 0.2149, 0.2137, 0.1795, -0.1298, -0.1297, -0.2177, -0.1514, -0.2720,\n", + " -0.1862, -0.0620, -0.0388, -0.1178, -0.0953, 0.0119, -0.0447, -0.0641,\n", + " 0.0086, 0.0352, -0.0517, -0.1040, -0.1967, -0.2437, -0.2087, -0.1612,\n", + " -0.2941, -0.2391, -0.1921, -0.1271, -0.0100, 0.0158, 0.0178, 0.2380,\n", + " 0.2876, 0.2813, 0.2270]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00013754901010543108\n", + "Grad encoder.fc1.bias: 0.0005432150210253894\n", + "Grad encoder.encoder.0.weight: 5.05932948726695e-05\n", + "Grad encoder.encoder.0.bias: 0.00035207203472964466\n", + "Grad encoder.encoder.2.weight: 3.8511439925059676e-05\n", + "Grad encoder.encoder.2.bias: 0.0002495379885658622\n", + "Grad encoder.encoder.4.weight: 0.00012317500659264624\n", + "Grad encoder.encoder.4.bias: 0.00044676678953692317\n", + "Grad decoder.fc1.0.weight: 3.9897578972158954e-05\n", + "Grad decoder.fc1.0.bias: 0.00017397734336555004\n", + "Grad decoder.fc1.2.weight: 4.073083255207166e-05\n", + "Grad decoder.fc1.2.bias: 0.00015528491348959506\n", + "Grad decoder.fc1.4.weight: 4.003327194368467e-05\n", + "Grad decoder.fc1.4.bias: 0.00026119808899238706\n", + "Grad decoder.fc2.weight: 8.22149813757278e-05\n", + "Grad decoder.fc2.bias: 0.0018485139589756727\n", + "Grad _memory_unit.weight_ih_l0: 2.2381270810001297e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.4044322597328573e-05\n", + "Grad _memory_unit.bias_hh_l0: 7.0762062023277394e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.0186681720369961e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.247111089876853e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.583454286446795e-05\n", + "Data X Sample: tensor([[1.4502, 1.6196, 1.8016, 1.9001, 1.9465, 1.9403, 2.0629, 2.2827, 3.7054,\n", + " 3.9825, 4.2065, 4.1832, 3.8793, 3.8034, 3.6265, 3.5406, 3.5693, 3.5264,\n", + " 3.4445, 3.4237, 3.3982, 3.3160, 2.8122, 2.8649, 2.8490, 2.9044, 2.8558,\n", + " 2.8836, 3.0112, 3.0983, 3.1426, 3.2414, 3.6851, 2.6547, 4.4832, 4.7623,\n", + " 4.9044, 5.1945, 5.7109, 5.6033, 1.0929, 0.7010, 0.6467, 1.1453, 1.7641,\n", + " 1.9385, 1.2102, 1.7046]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5262, -0.3981, -0.1366, -0.6680, 0.1626, -1.4888, 0.1968, 0.6779,\n", + " 0.9921, 0.5257, 0.5383, 0.7361, 1.1606, 0.1735, -0.7475, -0.3262,\n", + " 0.5169, -0.0666, 0.3757, -0.0956, 0.9550, -0.7346, -0.8582, 2.1764,\n", + " 0.1467, 0.5564, -0.5315, 0.4609, -0.2020, -0.3784, 0.4028, -1.4145,\n", + " -0.6642, 0.2736, 0.3159, 1.3787, 0.0000, 0.4465, 0.1656, 0.6307,\n", + " 0.5440, 0.1025, 1.0337]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1800, -0.2528, -0.0569, -0.1318, 0.0064, 0.0796, 0.1226, 0.2385,\n", + " 0.1798, 0.1881, 0.1714, -0.1215, -0.1200, -0.1992, -0.1444, -0.2436,\n", + " -0.1772, -0.0584, -0.0486, -0.1130, -0.0927, 0.0076, -0.0384, -0.0532,\n", + " 0.0068, 0.0382, -0.0297, -0.0725, -0.1600, -0.2005, -0.1845, -0.1452,\n", + " -0.2557, -0.2273, -0.1639, -0.1283, -0.0089, 0.0097, 0.0122, 0.2413,\n", + " 0.2782, 0.2688, 0.2142]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00015643877850379795\n", + "Grad encoder.fc1.bias: 0.00014788261614739895\n", + "Grad encoder.encoder.0.weight: 3.2776973966974765e-05\n", + "Grad encoder.encoder.0.bias: 9.98485047603026e-05\n", + "Grad encoder.encoder.2.weight: 2.3967066226759925e-05\n", + "Grad encoder.encoder.2.bias: 0.00010872163693420589\n", + "Grad encoder.encoder.4.weight: 7.94306251918897e-05\n", + "Grad encoder.encoder.4.bias: 0.00030505115864798427\n", + "Grad decoder.fc1.0.weight: 3.984531940659508e-05\n", + "Grad decoder.fc1.0.bias: 0.00012183180660940707\n", + "Grad decoder.fc1.2.weight: 7.309325155802071e-05\n", + "Grad decoder.fc1.2.bias: 0.000220609043026343\n", + "Grad decoder.fc1.4.weight: 8.074226207099855e-05\n", + "Grad decoder.fc1.4.bias: 0.000437640817835927\n", + "Grad decoder.fc2.weight: 0.00011231599637540057\n", + "Grad decoder.fc2.bias: 0.0016882062191143632\n", + "Grad _memory_unit.weight_ih_l0: 3.4133308872696944e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.2785347280441783e-05\n", + "Grad _memory_unit.bias_hh_l0: 6.7423188738757744e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.1695392458932474e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.8030684663681313e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.9606464775279164e-05\n", + "Data X Sample: tensor([[1.3112, 1.4492, 1.6093, 1.8214, 1.8714, 1.8121, 1.9628, 2.0116, 1.9674,\n", + " 3.3790, 4.0859, 4.0975, 3.8127, 3.7571, 3.6643, 3.4038, 3.4199, 3.3987,\n", + " 3.3391, 3.3196, 3.3173, 3.2011, 2.8002, 2.6951, 2.7739, 2.8313, 2.9224,\n", + " 3.0630, 2.9349, 3.0622, 3.0516, 3.1944, 3.5421, 2.6867, 4.3802, 4.6942,\n", + " 4.9536, 5.3350, 5.7109, 5.5267, 0.9879, 0.5935, 0.5800, 1.0247, 1.6253,\n", + " 1.8184, 1.1898, 1.6264]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4917, -1.1513, -0.7729, -0.1062, 1.9441, 0.2876, 0.4285, 0.8297,\n", + " 0.0825, 0.7353, 0.4731, -0.3594, -0.6874, -1.4651, 0.0111, -3.5801,\n", + " -0.7470, 0.1938, -0.0866, -0.4689, -0.2069, -0.5920, 0.0661, -0.2151,\n", + " -0.1915, 0.1002, -0.1729, 0.6864, 0.2620, -0.8751, -0.4772, -1.2240,\n", + " -0.6282, -0.9400, -0.1580, -0.7108, -0.0868, -0.0459, 0.0000, 0.2094,\n", + " 0.2085, 0.6289, 0.8201]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1988, -0.2639, -0.0614, -0.1526, -0.0156, 0.0716, 0.1267, 0.2535,\n", + " 0.1683, 0.1816, 0.1857, -0.1260, -0.1238, -0.2056, -0.1509, -0.2369,\n", + " -0.1751, -0.0572, -0.0626, -0.1152, -0.0985, 0.0082, -0.0329, -0.0426,\n", + " 0.0096, 0.0440, -0.0219, -0.0654, -0.1488, -0.1814, -0.1843, -0.1488,\n", + " -0.2452, -0.2390, -0.1547, -0.1402, -0.0076, 0.0020, 0.0144, 0.2636,\n", + " 0.2856, 0.2825, 0.2212]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00018117218860425055\n", + "Grad encoder.fc1.bias: 0.00021725095575675368\n", + "Grad encoder.encoder.0.weight: 5.007629806641489e-05\n", + "Grad encoder.encoder.0.bias: 0.00015193103172350675\n", + "Grad encoder.encoder.2.weight: 2.802577000693418e-05\n", + "Grad encoder.encoder.2.bias: 0.00016492744907736778\n", + "Grad encoder.encoder.4.weight: 9.581216727383435e-05\n", + "Grad encoder.encoder.4.bias: 0.0002942830906249583\n", + "Grad decoder.fc1.0.weight: 3.1696559744887054e-05\n", + "Grad decoder.fc1.0.bias: 0.00012276135385036469\n", + "Grad decoder.fc1.2.weight: 3.665507392724976e-05\n", + "Grad decoder.fc1.2.bias: 0.00014477799413725734\n", + "Grad decoder.fc1.4.weight: 5.17220760229975e-05\n", + "Grad decoder.fc1.4.bias: 0.00032614817610010505\n", + "Grad decoder.fc2.weight: 9.161807975033298e-05\n", + "Grad decoder.fc2.bias: 0.002140898024663329\n", + "Grad _memory_unit.weight_ih_l0: 1.4576039575331379e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.064655281079467e-06\n", + "Grad _memory_unit.bias_hh_l0: 3.136781288048951e-06\n", + "Grad _memory_unit.weight_ih_l1: 7.179843919402629e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.913170490297489e-05\n", + "Grad _memory_unit.bias_hh_l1: 9.545472494210117e-06\n", + "Data X Sample: tensor([[2.5863, 2.9159, 3.1450, 3.3607, 3.4268, 3.7995, 3.7284, 3.7989, 4.0008,\n", + " 3.8103, 4.0447, 3.9612, 3.6951, 3.6862, 3.5962, 3.4503, 3.3806, 3.4142,\n", + " 3.3598, 3.4367, 3.3222, 3.1981, 2.9207, 2.7829, 2.7514, 2.6772, 2.7572,\n", + " 2.8061, 2.8239, 2.7839, 2.8941, 2.9264, 3.0273, 2.1512, 3.6130, 4.0035,\n", + " 4.4108, 4.6512, 5.3243, 5.1153, 1.8804, 1.1192, 1.1318, 1.8830, 2.9018,\n", + " 3.1393, 2.1621, 3.0651]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1059, -0.2226, -0.4923, 0.9907, -0.0145, -0.3639, 0.2161, -0.2173,\n", + " -0.3182, 0.0634, 0.2127, -0.3484, 0.7849, -0.0642, 0.3483, 0.0897,\n", + " 0.5516, 0.3149, -0.0698, 0.1500, -0.6575, 0.0753, 1.2210, 0.4378,\n", + " -0.0642, -1.7443, -0.2062, 0.5383, 0.4376, 0.8656, -0.3950, 0.4412,\n", + " -0.3668, 0.2015, -0.8254, -0.2242, 0.0000, -0.3227, -0.0231, 0.1162,\n", + " 0.0392, 0.2605, 0.6191]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1780, -0.2385, -0.0554, -0.1704, -0.0581, 0.0358, 0.0913, 0.2203,\n", + " 0.1255, 0.1483, 0.1505, -0.1081, -0.1026, -0.1678, -0.1306, -0.2000,\n", + " -0.1635, -0.0515, -0.0587, -0.1042, -0.0845, -0.0008, -0.0305, -0.0385,\n", + " 0.0028, 0.0422, 0.0036, -0.0221, -0.1018, -0.1367, -0.1449, -0.1174,\n", + " -0.1946, -0.2006, -0.1203, -0.1259, -0.0079, 0.0014, 0.0025, 0.2366,\n", + " 0.2595, 0.2403, 0.1890]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 6.574077269760892e-05\n", + "Grad encoder.fc1.bias: 9.086697536986321e-05\n", + "Grad encoder.encoder.0.weight: 2.4602277335361578e-05\n", + "Grad encoder.encoder.0.bias: 6.75253540975973e-05\n", + "Grad encoder.encoder.2.weight: 2.0668850993388332e-05\n", + "Grad encoder.encoder.2.bias: 0.00010039054905064404\n", + "Grad encoder.encoder.4.weight: 6.435868272092193e-05\n", + "Grad encoder.encoder.4.bias: 0.0001427614042768255\n", + "Grad decoder.fc1.0.weight: 2.8232923796167597e-05\n", + "Grad decoder.fc1.0.bias: 9.029501234181225e-05\n", + "Grad decoder.fc1.2.weight: 3.522627957863733e-05\n", + "Grad decoder.fc1.2.bias: 0.00013046085950918496\n", + "Grad decoder.fc1.4.weight: 4.397121665533632e-05\n", + "Grad decoder.fc1.4.bias: 0.00031875603599473834\n", + "Grad decoder.fc2.weight: 9.365829464513808e-05\n", + "Grad decoder.fc2.bias: 0.0019006020156666636\n", + "Grad _memory_unit.weight_ih_l0: 2.0755444438691484e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.626592271961272e-06\n", + "Grad _memory_unit.bias_hh_l0: 2.4775595193204936e-06\n", + "Grad _memory_unit.weight_ih_l1: 6.957828873055405e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.639874608372338e-05\n", + "Grad _memory_unit.bias_hh_l1: 8.289037396025378e-06\n", + "Data X Sample: tensor([[1.5923, 1.6153, 1.8212, 2.0728, 2.0114, 2.2320, 2.1739, 2.0755, 3.4662,\n", + " 4.0520, 4.1240, 4.1073, 3.8016, 3.8034, 3.5332, 3.4968, 3.4309, 3.3697,\n", + " 3.2607, 3.2898, 3.3884, 3.3450, 2.8195, 2.8134, 2.9128, 2.9253, 3.0875,\n", + " 3.1527, 3.0425, 3.1933, 3.2056, 3.3326, 3.7247, 2.6775, 4.4047, 4.6820,\n", + " 4.8179, 5.2395, 5.6856, 5.6090, 1.1311, 0.6492, 0.6568, 1.2113, 1.8354,\n", + " 2.1157, 1.3190, 1.8766]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5479, -1.2818, 0.2048, -0.0254, 0.6533, 0.1479, 0.2746, 0.7428,\n", + " 0.8001, 0.8653, 0.8434, -1.4456, -0.1172, -0.7911, 0.6489, -0.5133,\n", + " -0.3414, -0.0270, 0.1600, -0.0360, 1.2454, 0.5368, 0.4455, 0.4752,\n", + " 0.3429, -0.2774, 0.8092, -0.9568, -0.6452, -0.9934, 0.0916, -0.2428,\n", + " -0.7816, -1.0947, -0.4428, -0.7056, -0.9937, 0.8238, -1.0062, 0.7205,\n", + " 0.7787, 0.5578, 0.3246]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2219, -0.2808, -0.0664, -0.1727, -0.0329, 0.0666, 0.1355, 0.2741,\n", + " 0.1641, 0.1799, 0.2066, -0.1342, -0.1302, -0.2197, -0.1626, -0.2367,\n", + " -0.1759, -0.0550, -0.0763, -0.1169, -0.1079, 0.0116, -0.0271, -0.0302,\n", + " 0.0155, 0.0523, -0.0190, -0.0648, -0.1454, -0.1698, -0.1914, -0.1598,\n", + " -0.2427, -0.2577, -0.1502, -0.1574, -0.0039, -0.0068, 0.0187, 0.2901,\n", + " 0.2971, 0.3023, 0.2354]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002211552782682702\n", + "Grad encoder.fc1.bias: 0.00010026688687503338\n", + "Grad encoder.encoder.0.weight: 6.194297020556405e-05\n", + "Grad encoder.encoder.0.bias: 0.00014383310917764902\n", + "Grad encoder.encoder.2.weight: 4.290521610528231e-05\n", + "Grad encoder.encoder.2.bias: 0.00014254412963055074\n", + "Grad encoder.encoder.4.weight: 0.0001271062792511657\n", + "Grad encoder.encoder.4.bias: 0.00044842972420156\n", + "Grad decoder.fc1.0.weight: 3.688442666316405e-05\n", + "Grad decoder.fc1.0.bias: 8.937816164689139e-05\n", + "Grad decoder.fc1.2.weight: 2.7993432013317943e-05\n", + "Grad decoder.fc1.2.bias: 9.649747516959906e-05\n", + "Grad decoder.fc1.4.weight: 3.1536343158222735e-05\n", + "Grad decoder.fc1.4.bias: 0.0002645747736096382\n", + "Grad decoder.fc2.weight: 5.985202005831525e-05\n", + "Grad decoder.fc2.bias: 0.0018660638015717268\n", + "Grad _memory_unit.weight_ih_l0: 2.545120310060156e-07\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.8986445127211482e-07\n", + "Grad _memory_unit.bias_hh_l0: 1.1565629165488645e-07\n", + "Grad _memory_unit.weight_ih_l1: 3.074742096487171e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.9284518202766776e-05\n", + "Grad _memory_unit.bias_hh_l1: 9.70843029790558e-06\n", + "Data X Sample: tensor([[2.6425, 2.9451, 3.0293, 3.3345, 3.4405, 3.5520, 3.7947, 3.8245, 3.8714,\n", + " 3.9619, 3.9717, 3.8697, 3.6973, 3.9425, 3.5105, 3.3997, 3.4734, 3.4799,\n", + " 3.4217, 3.3382, 3.2216, 3.1521, 2.9255, 2.8420, 2.6782, 2.7686, 2.8664,\n", + " 2.8713, 2.7615, 2.8330, 2.8066, 2.7688, 2.8227, 2.0528, 3.4978, 3.9086,\n", + " 4.1414, 4.5293, 5.0264, 4.9281, 1.9138, 1.1411, 1.0954, 1.9031, 3.0326,\n", + " 3.0535, 2.1485, 3.0182]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7145, 0.3702, 0.6229, -0.3970, -1.0440, -1.0084, -2.6168, -2.0445,\n", + " -0.7298, -1.0066, -0.1171, 0.7515, -0.3838, -0.9549, 0.6044, 0.5358,\n", + " -0.0516, 0.0029, -0.1759, 0.2219, 0.2759, -0.9483, -1.6920, -1.7661,\n", + " -0.6407, -0.2860, 0.1419, 0.6753, 1.3788, 0.8638, 0.9017, -0.3519,\n", + " -0.3194, 0.4346, 0.2861, -0.8082, 0.7456, -0.2114, -1.1380, 0.5576,\n", + " 1.1977, 1.1251, 0.9950]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1718, -0.2350, -0.0530, -0.1709, -0.0615, 0.0306, 0.0843, 0.2129,\n", + " 0.1240, 0.1446, 0.1446, -0.1044, -0.0983, -0.1626, -0.1284, -0.1963,\n", + " -0.1635, -0.0478, -0.0533, -0.0996, -0.0817, -0.0010, -0.0299, -0.0379,\n", + " 0.0024, 0.0424, 0.0043, -0.0170, -0.0984, -0.1345, -0.1392, -0.1138,\n", + " -0.1888, -0.1946, -0.1184, -0.1243, -0.0045, 0.0016, 0.0016, 0.2288,\n", + " 0.2544, 0.2318, 0.1872]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00012640391651075333\n", + "Grad encoder.fc1.bias: 0.00018864944286178797\n", + "Grad encoder.encoder.0.weight: 3.886759077431634e-05\n", + "Grad encoder.encoder.0.bias: 0.0001330636441707611\n", + "Grad encoder.encoder.2.weight: 2.84802372334525e-05\n", + "Grad encoder.encoder.2.bias: 0.00016502542712260038\n", + "Grad encoder.encoder.4.weight: 9.549615060677752e-05\n", + "Grad encoder.encoder.4.bias: 0.0005239985184744\n", + "Grad decoder.fc1.0.weight: 3.183818989782594e-05\n", + "Grad decoder.fc1.0.bias: 0.00016543130914214998\n", + "Grad decoder.fc1.2.weight: 4.184562567388639e-05\n", + "Grad decoder.fc1.2.bias: 0.00018467902555130422\n", + "Grad decoder.fc1.4.weight: 5.5162621720228344e-05\n", + "Grad decoder.fc1.4.bias: 0.00044833417632617056\n", + "Grad decoder.fc2.weight: 0.00012587949458975345\n", + "Grad decoder.fc2.bias: 0.0023004382383078337\n", + "Grad _memory_unit.weight_ih_l0: 1.8534600485509145e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.0522329830564559e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.612471795757301e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.1234910743951332e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.796803503064439e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.9483875803416595e-05\n", + "Data X Sample: tensor([[1.5881, 1.6910, 1.7581, 1.9679, 2.0216, 2.2320, 2.1939, 2.3977, 3.9080,\n", + " 4.2763, 4.4063, 4.2942, 4.1522, 4.0706, 3.8383, 3.6869, 3.6243, 3.6289,\n", + " 3.5498, 3.6078, 3.6264, 3.5150, 3.1062, 2.9146, 2.9466, 2.9410, 2.9383,\n", + " 3.0712, 3.0043, 3.3112, 3.3665, 3.2911, 3.7775, 2.8263, 4.5738, 4.8450,\n", + " 5.1935, 5.4993, 6.0785, 5.9182, 1.2075, 0.6452, 0.6225, 1.1711, 1.5579,\n", + " 2.0471, 1.1558, 1.9626]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5053, 0.2458, -0.4500, 0.4671, 0.9198, 1.7307, 0.5936, 0.1894,\n", + " 0.0783, -0.3435, -1.0961, 1.2348, 0.2873, 1.1769, -0.4645, 0.0873,\n", + " 0.9008, -0.4308, -0.0668, 1.5784, -0.0850, 1.0529, 0.8119, 1.3138,\n", + " 0.1050, 0.8345, -0.3550, -0.3518, -0.2972, 1.3506, 1.1357, 0.6307,\n", + " 1.1313, 1.1438, 0.0957, -0.2064, -0.4493, -0.1684, -0.2296, -0.4898,\n", + " -1.1201, -0.3313, -0.3085]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2298, -0.2946, -0.0675, -0.1678, -0.0165, 0.0799, 0.1475, 0.2871,\n", + " 0.1856, 0.1931, 0.2238, -0.1391, -0.1387, -0.2381, -0.1735, -0.2518,\n", + " -0.1838, -0.0525, -0.0751, -0.1188, -0.1150, 0.0164, -0.0263, -0.0308,\n", + " 0.0203, 0.0536, -0.0314, -0.0823, -0.1662, -0.1892, -0.2069, -0.1738,\n", + " -0.2638, -0.2749, -0.1661, -0.1646, 0.0014, -0.0085, 0.0254, 0.3004,\n", + " 0.3081, 0.3199, 0.2543]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 9.999159374274313e-05\n", + "Grad encoder.fc1.bias: 0.0007662344723939896\n", + "Grad encoder.encoder.0.weight: 2.8175563784316182e-05\n", + "Grad encoder.encoder.0.bias: 0.0006860545254312456\n", + "Grad encoder.encoder.2.weight: 2.1188025129958987e-05\n", + "Grad encoder.encoder.2.bias: 0.0005430731107480824\n", + "Grad encoder.encoder.4.weight: 6.863201269879937e-05\n", + "Grad encoder.encoder.4.bias: 0.0008525056764483452\n", + "Grad decoder.fc1.0.weight: 3.813788862316869e-05\n", + "Grad decoder.fc1.0.bias: 0.0003176751488354057\n", + "Grad decoder.fc1.2.weight: 7.077518966980278e-05\n", + "Grad decoder.fc1.2.bias: 0.0003587045648600906\n", + "Grad decoder.fc1.4.weight: 6.466612103395164e-05\n", + "Grad decoder.fc1.4.bias: 0.0002864023554138839\n", + "Grad decoder.fc2.weight: 0.00015278052887879312\n", + "Grad decoder.fc2.bias: 0.0015374287031590939\n", + "Grad _memory_unit.weight_ih_l0: 5.392905677581439e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.2370790247805417e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.126686402130872e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.897145239126985e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.9972382839769125e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.4963825126178563e-05\n", + "Data X Sample: tensor([[2.0888, 2.5474, 2.7393, 2.9453, 2.9505, 2.9539, 3.1876, 3.2396, 3.2465,\n", + " 3.3237, 3.4197, 3.4334, 3.3466, 3.2881, 3.2709, 3.2055, 3.1793, 3.3155,\n", + " 3.3309, 3.1968, 3.0842, 3.1077, 3.0869, 2.8516, 2.8002, 2.6641, 2.6080,\n", + " 2.6429, 2.2862, 2.2729, 2.3062, 2.3240, 2.1428, 1.4761, 2.2600, 2.4225,\n", + " 2.5210, 2.8278, 3.0044, 2.8201, 1.7420, 1.0136, 0.9903, 1.7021, 2.4419,\n", + " 2.9620, 1.7269, 2.6273]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0176, -0.2145, 0.1661, -1.3085, 0.3534, 1.0622, 0.3190, 0.1630,\n", + " 0.2307, 0.0709, -0.2209, 0.1409, -1.5410, -0.0030, 0.1824, -0.7047,\n", + " 2.0748, 0.4471, 0.8405, 1.1414, -1.0208, 0.0936, -0.8349, -0.2851,\n", + " -0.8211, -0.3739, -1.1424, -1.2336, -1.0893, -0.2509, 0.2945, -0.3475,\n", + " 1.0674, -0.5355, -0.0116, -0.0999, 0.0000, 0.7579, 1.1339, -0.1257,\n", + " -0.1663, -0.1553, 0.4981]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2107, 0.1662, 0.0897, 0.0670, 0.0434, -0.1166, -0.2059, -0.1631,\n", + " -0.0714, -0.1396, -0.1214, 0.0626, 0.0288, 0.1324, 0.0863, 0.1180,\n", + " 0.0950, 0.0443, 0.0615, 0.0709, 0.0470, 0.0267, 0.0046, -0.0040,\n", + " 0.0647, 0.0720, -0.0379, 0.0363, 0.0721, 0.1294, 0.1234, 0.1129,\n", + " 0.1510, 0.1252, 0.0668, 0.0851, -0.0061, -0.0040, 0.0133, -0.1506,\n", + " -0.0975, -0.1481, -0.0845]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002389481960562989\n", + "Grad encoder.fc1.bias: 0.0008987977635115385\n", + "Grad encoder.encoder.0.weight: 7.00296150171198e-05\n", + "Grad encoder.encoder.0.bias: 0.0007003281498327851\n", + "Grad encoder.encoder.2.weight: 5.440394670586102e-05\n", + "Grad encoder.encoder.2.bias: 0.0006747347069904208\n", + "Grad encoder.encoder.4.weight: 0.000183615178684704\n", + "Grad encoder.encoder.4.bias: 0.0017597321420907974\n", + "Grad decoder.fc1.0.weight: 7.587842992506921e-05\n", + "Grad decoder.fc1.0.bias: 0.0005704407813027501\n", + "Grad decoder.fc1.2.weight: 6.740883691236377e-05\n", + "Grad decoder.fc1.2.bias: 0.0004043837252538651\n", + "Grad decoder.fc1.4.weight: 5.7690478570293635e-05\n", + "Grad decoder.fc1.4.bias: 0.0004843082861043513\n", + "Grad decoder.fc2.weight: 0.00011892583279404789\n", + "Grad decoder.fc2.bias: 0.0017569256015121937\n", + "Grad _memory_unit.weight_ih_l0: 6.33772106084507e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.608780727721751e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.4135671992553398e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.039729446958518e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00014256927534006536\n", + "Grad _memory_unit.bias_hh_l1: 7.297184492927045e-05\n", + "Data X Sample: tensor([[-0.0032, 0.0015, 0.0120, 0.0044, 0.0051, 0.0000, 0.0062, 0.0057,\n", + " 0.0000, 0.0032, -0.0063, 0.0039, -0.0022, 0.0000, -0.0151, -0.0041,\n", + " -0.0189, -0.0309, -0.0227, -0.0167, -0.0245, -0.0153, -0.0241, -0.0019,\n", + " -0.0244, -0.0366, -0.0160, -0.0408, 0.0035, 0.0000, 0.0035, 0.0166,\n", + " 0.0110, -0.0160, 0.0049, 0.0268, 0.0079, 0.0080, -0.0063, -0.0085,\n", + " 0.0430, 0.0100, 0.0101, -0.0029, -0.0079, -0.0114, -0.0272, 0.0313]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.0568e+00, 9.6369e-01, 3.1266e-01, -7.4095e-01, -2.5091e+00,\n", + " -2.2527e+00, -3.0397e+00, -2.0891e+00, -1.7840e+00, -1.3349e+00,\n", + " -1.0928e+00, 4.8514e-01, 5.2374e-01, 6.2316e-01, 2.3044e+00,\n", + " 2.1344e-01, 1.9379e-03, -1.0307e-01, -1.8080e+00, -6.0210e-02,\n", + " -5.0777e-01, 2.5896e-01, -1.1524e+00, -8.8451e-01, -8.3990e-01,\n", + " 8.7575e-04, 8.9690e-01, 7.1916e-01, 1.7153e+00, 1.1743e+00,\n", + " 1.1018e+00, 1.5379e+00, 1.9947e+00, 1.0170e+00, 8.9692e-01,\n", + " 1.2805e+00, -6.6989e-01, 1.0045e-01, 0.0000e+00, -1.1865e+00,\n", + " -9.6466e-01, -6.8366e-01, 3.2435e-02]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.9630, 0.7488, 0.3276, 0.4515, -0.3873, -0.7933, -1.2708, -1.2596,\n", + " -0.7746, -0.8512, -0.8480, 0.3342, 0.4753, 0.7483, 0.4779, 0.6104,\n", + " 0.4145, 0.2176, 0.1026, 0.2381, 0.1695, 0.0856, 0.0173, 0.1466,\n", + " 0.1993, 0.0182, 0.2662, 0.5596, 1.0344, 1.1065, 0.8797, 0.6419,\n", + " 0.8310, 0.7229, 0.3348, 0.4496, 0.0772, 0.1847, 0.0690, -0.8220,\n", + " -0.7605, -0.7253, -0.5885]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000624944397713989\n", + "Grad encoder.fc1.bias: 0.0008925800211727619\n", + "Grad encoder.encoder.0.weight: 0.0001680007262621075\n", + "Grad encoder.encoder.0.bias: 0.0005835436168126762\n", + "Grad encoder.encoder.2.weight: 0.00011253470438532531\n", + "Grad encoder.encoder.2.bias: 0.0006622004439122975\n", + "Grad encoder.encoder.4.weight: 0.000352596485754475\n", + "Grad encoder.encoder.4.bias: 0.001300534699112177\n", + "Grad decoder.fc1.0.weight: 0.00010511245636735111\n", + "Grad decoder.fc1.0.bias: 0.0004346403875388205\n", + "Grad decoder.fc1.2.weight: 8.647660433780402e-05\n", + "Grad decoder.fc1.2.bias: 0.00040081917541101575\n", + "Grad decoder.fc1.4.weight: 7.933772576507181e-05\n", + "Grad decoder.fc1.4.bias: 0.0004274699022062123\n", + "Grad decoder.fc2.weight: 9.625974780647084e-05\n", + "Grad decoder.fc2.bias: 0.0017057282384485006\n", + "Grad _memory_unit.weight_ih_l0: 7.553602699772455e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.376107972348109e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.252389458590187e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.5087839478364913e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.014889656100422e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.50432526122313e-05\n", + "Data X Sample: tensor([[-0.0053, 0.0058, -0.0105, 0.0000, 0.0000, -0.0044, -0.0031, 0.0028,\n", + " -0.0073, 0.0063, 0.0000, 0.0117, 0.0000, 0.0000, 0.0101, -0.0041,\n", + " 0.0094, 0.0155, -0.0021, -0.0019, 0.0245, 0.0031, 0.0193, 0.0038,\n", + " 0.0019, 0.0209, 0.0400, 0.0326, -0.0173, 0.0328, 0.0280, 0.0028,\n", + " -0.0088, 0.0046, 0.0123, 0.0413, 0.0079, -0.0027, -0.0190, -0.0142,\n", + " 0.0095, 0.0040, -0.0040, -0.0115, 0.0000, 0.0743, -0.0136, -0.0391]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7028, 0.7814, -1.3672, 0.3401, -0.3721, -0.9949, -0.5498, -0.2506,\n", + " -0.0242, -0.5057, -0.7282, 0.7027, 0.8634, 0.4241, 0.0125, 0.8495,\n", + " 0.1772, 0.9505, -0.4991, 0.1596, -0.6897, -0.1540, 0.0323, 0.2788,\n", + " -0.0792, 1.9816, 1.1118, -0.5149, 0.6281, 1.1851, 0.8150, 1.4066,\n", + " 0.2788, 1.4076, -0.3772, 0.5522, 0.5021, -0.6532, 0.5659, -0.6397,\n", + " -0.5986, -0.5963, -0.2733]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 1.0236, 0.8042, 0.3573, 0.4679, -0.4696, -0.8752, -1.3817, -1.3379,\n", + " -0.8578, -0.9244, -0.9328, 0.3338, 0.5086, 0.7871, 0.4993, 0.6399,\n", + " 0.4387, 0.2117, 0.0768, 0.2541, 0.1871, 0.0811, 0.0049, 0.1441,\n", + " 0.2081, 0.0174, 0.3147, 0.6043, 1.1232, 1.1814, 0.9591, 0.6755,\n", + " 0.9013, 0.7525, 0.3583, 0.4855, 0.0871, 0.1864, 0.0673, -0.8813,\n", + " -0.8050, -0.7600, -0.6113]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00010272311919834465\n", + "Grad encoder.fc1.bias: 0.00029692958923988044\n", + "Grad encoder.encoder.0.weight: 2.9388043913058937e-05\n", + "Grad encoder.encoder.0.bias: 0.00018715510668698698\n", + "Grad encoder.encoder.2.weight: 2.4719480279600248e-05\n", + "Grad encoder.encoder.2.bias: 0.00027079478604719043\n", + "Grad encoder.encoder.4.weight: 8.724952203920111e-05\n", + "Grad encoder.encoder.4.bias: 0.0009314012131653726\n", + "Grad decoder.fc1.0.weight: 4.236018139636144e-05\n", + "Grad decoder.fc1.0.bias: 0.00031846723868511617\n", + "Grad decoder.fc1.2.weight: 5.022483310312964e-05\n", + "Grad decoder.fc1.2.bias: 0.00025710597401484847\n", + "Grad decoder.fc1.4.weight: 5.5986238294281065e-05\n", + "Grad decoder.fc1.4.bias: 0.0004197696689516306\n", + "Grad decoder.fc2.weight: 0.00014038165681995451\n", + "Grad decoder.fc2.bias: 0.0017110378248617053\n", + "Grad _memory_unit.weight_ih_l0: 3.463966322669876e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.5029728931258433e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.2995787983527407e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.2996832740318496e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.829454261809587e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.9824160921853036e-05\n", + "Data X Sample: tensor([[1.4555, 1.5905, 1.7911, 1.9067, 2.1753, 2.3071, 2.1723, 1.9562, 3.1025,\n", + " 4.2005, 4.2541, 4.3195, 4.1522, 4.1279, 3.7753, 3.6787, 3.6133, 3.6734,\n", + " 3.7150, 3.6469, 3.4841, 3.3144, 2.8411, 2.8115, 2.8884, 3.0246, 3.0636,\n", + " 3.1527, 3.3200, 3.3898, 3.3805, 3.4928, 4.0635, 2.9796, 4.7381, 5.0907,\n", + " 5.1620, 5.7987, 6.0659, 5.9126, 1.1454, 0.6651, 0.6407, 1.0936, 1.7323,\n", + " 1.8184, 1.2646, 1.7671]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2828, -0.5124, 1.2191, 0.0274, -0.0837, 1.0905, 0.3987, 0.7588,\n", + " 0.3638, 0.5768, 0.5525, -1.1265, -0.7602, 0.5930, -1.1136, -0.2854,\n", + " 0.2356, -0.4156, -0.5498, 0.3244, -0.8055, -1.4476, 0.1861, 0.4350,\n", + " 0.0762, -0.2331, 0.6217, -0.4533, -0.2110, -0.0231, 0.1769, -0.5027,\n", + " -0.1758, -0.4816, -0.4697, -0.2290, -0.2391, 0.5269, -0.1229, 0.1872,\n", + " 0.1235, 0.3344, 0.1497]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2239, -0.3148, -0.0676, -0.1308, 0.0546, 0.1265, 0.1725, 0.2985,\n", + " 0.2520, 0.2344, 0.2467, -0.1451, -0.1529, -0.2685, -0.1897, -0.2989,\n", + " -0.2057, -0.0448, -0.0523, -0.1215, -0.1223, 0.0273, -0.0314, -0.0452,\n", + " 0.0154, 0.0500, -0.0692, -0.1365, -0.2284, -0.2599, -0.2417, -0.1987,\n", + " -0.3309, -0.3020, -0.2128, -0.1691, 0.0087, -0.0076, 0.0370, 0.2964,\n", + " 0.3285, 0.3478, 0.2894]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002758727059699595\n", + "Grad encoder.fc1.bias: 0.000313297554384917\n", + "Grad encoder.encoder.0.weight: 7.800771709298715e-05\n", + "Grad encoder.encoder.0.bias: 0.0002345418033655733\n", + "Grad encoder.encoder.2.weight: 5.234754644334316e-05\n", + "Grad encoder.encoder.2.bias: 0.0002441877732053399\n", + "Grad encoder.encoder.4.weight: 0.00019499112386256456\n", + "Grad encoder.encoder.4.bias: 0.0005544043378904462\n", + "Grad decoder.fc1.0.weight: 5.2484203479252756e-05\n", + "Grad decoder.fc1.0.bias: 0.00015944818733260036\n", + "Grad decoder.fc1.2.weight: 6.0527945606736466e-05\n", + "Grad decoder.fc1.2.bias: 0.00022143771639093757\n", + "Grad decoder.fc1.4.weight: 6.455018592532724e-05\n", + "Grad decoder.fc1.4.bias: 0.0004470953135751188\n", + "Grad decoder.fc2.weight: 0.00011516579979797825\n", + "Grad decoder.fc2.bias: 0.0019075997406616807\n", + "Grad _memory_unit.weight_ih_l0: 4.2987580854969565e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.7228554497705773e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.733871254662517e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.4525039659929462e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.5653858503792435e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.8191703929915093e-05\n", + "Data X Sample: tensor([[1.5117, 1.7143, 1.9023, 2.0575, 2.1326, 2.2629, 2.4265, 2.4517, 2.5411,\n", + " 2.6018, 2.5283, 2.5045, 2.5011, 2.5029, 2.4412, 2.4001, 2.3743, 2.4257,\n", + " 2.4470, 2.3730, 2.4929, 2.3653, 2.4580, 2.3687, 2.4455, 2.4604, 2.4668,\n", + " 2.4308, 2.2827, 2.2959, 2.3692, 2.2632, 2.2330, 1.4509, 1.9756, 1.7585,\n", + " 1.5948, 1.4762, 1.5466, 1.5320, 1.2600, 0.6970, 0.7276, 1.2371, 1.7958,\n", + " 2.0643, 1.2986, 1.9313]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5901, 0.6622, -2.6056, 0.7153, 0.9960, -0.7960, -0.2561, -0.5088,\n", + " -0.3673, -0.2871, -0.4560, 0.1582, 0.2564, 0.2829, 0.9881, -0.0118,\n", + " 0.8099, -2.2087, -0.5198, 0.4408, 0.7754, 1.5817, -1.1050, -1.0412,\n", + " -0.1553, 4.3305, 0.3174, 0.6627, 0.9659, 0.1001, -0.0994, 0.2276,\n", + " 1.8487, 1.0915, 0.8484, 1.3219, 0.4768, 0.0705, 0.2253, -0.5178,\n", + " -0.3661, -0.7168, -0.3248]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4323, 0.3288, 0.1740, 0.3057, 0.1461, -0.1526, -0.3605, -0.3815,\n", + " -0.2099, -0.2874, -0.2739, 0.1328, 0.2009, 0.3153, 0.1928, 0.3274,\n", + " 0.2286, 0.1863, 0.0858, 0.1681, 0.1087, 0.1053, 0.1301, 0.0862,\n", + " 0.0753, -0.0048, -0.0662, 0.0669, 0.1935, 0.3432, 0.2380, 0.2439,\n", + " 0.3341, 0.3155, 0.2027, 0.2289, 0.0228, -0.0024, -0.0137, -0.3061,\n", + " -0.2921, -0.3402, -0.3032]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 9.033379319589585e-05\n", + "Grad encoder.fc1.bias: 0.0009213531739078462\n", + "Grad encoder.encoder.0.weight: 3.853122325381264e-05\n", + "Grad encoder.encoder.0.bias: 0.0006134791765362024\n", + "Grad encoder.encoder.2.weight: 3.166007809340954e-05\n", + "Grad encoder.encoder.2.bias: 0.0004451621207408607\n", + "Grad encoder.encoder.4.weight: 0.00011643736797850579\n", + "Grad encoder.encoder.4.bias: 0.0009247757843695581\n", + "Grad decoder.fc1.0.weight: 4.1113526094704866e-05\n", + "Grad decoder.fc1.0.bias: 0.0002401207893854007\n", + "Grad decoder.fc1.2.weight: 5.504370346898213e-05\n", + "Grad decoder.fc1.2.bias: 0.00021064680186100304\n", + "Grad decoder.fc1.4.weight: 5.3879208280704916e-05\n", + "Grad decoder.fc1.4.bias: 0.0002655608404893428\n", + "Grad decoder.fc2.weight: 0.00011913520575035363\n", + "Grad decoder.fc2.bias: 0.0018522236496210098\n", + "Grad _memory_unit.weight_ih_l0: 9.258444151782896e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.877418930642307e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.025187131948769e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.1501617741014343e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.185833965195343e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.738161103683524e-05\n", + "Data X Sample: tensor([[1.4990, 1.7347, 1.8618, 2.0029, 2.1667, 2.2821, 2.3819, 2.5468, 2.5484,\n", + " 2.5639, 2.7123, 2.6934, 2.5277, 2.5356, 2.4412, 2.4329, 2.3884, 2.4315,\n", + " 2.5544, 2.4120, 2.4536, 2.3943, 2.4628, 2.3801, 2.4042, 2.4604, 2.3976,\n", + " 2.4757, 2.1925, 2.2959, 2.3167, 2.4345, 2.2748, 1.5196, 1.9291, 1.7901,\n", + " 1.6754, 1.4576, 1.6290, 1.5888, 1.2361, 0.6930, 0.6851, 1.1969, 1.8433,\n", + " 1.9842, 1.2850, 1.9939]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.2513e-01, 2.0148e-01, 5.8440e-01, 4.6805e-01, 1.4467e+00,\n", + " 2.7656e-01, -2.2006e-01, -1.2124e-01, 1.4370e-01, -4.1255e-01,\n", + " -4.3160e-01, -7.9226e+00, 5.9050e-01, 5.9927e-02, 3.8506e-02,\n", + " 1.1036e-01, -2.4927e-01, -1.2720e+00, 5.8936e-01, 7.2578e-01,\n", + " -2.1280e-02, -3.2503e+00, 2.8398e-01, -2.3104e-01, -1.1880e+00,\n", + " 2.8724e+00, -7.1122e-01, -7.3197e-01, 7.3668e-01, 8.2070e-01,\n", + " -1.4928e-01, -9.2252e-02, 4.0104e-02, 5.0326e-03, 2.7083e-01,\n", + " 2.6010e-01, 5.7572e-01, 1.1226e-01, 4.4225e-01, -3.6578e-01,\n", + " -4.9128e-01, -6.4304e-01, -8.0665e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4013, 0.3073, 0.1582, 0.2606, 0.1274, -0.1531, -0.3341, -0.3490,\n", + " -0.1876, -0.2658, -0.2524, 0.1198, 0.1735, 0.2895, 0.1809, 0.2897,\n", + " 0.2117, 0.1609, 0.0748, 0.1559, 0.0983, 0.0912, 0.1082, 0.0699,\n", + " 0.0766, 0.0079, -0.0632, 0.0556, 0.1760, 0.3071, 0.2259, 0.2148,\n", + " 0.3091, 0.2824, 0.1828, 0.2062, 0.0270, -0.0094, -0.0070, -0.2772,\n", + " -0.2617, -0.3109, -0.2684]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 8.676121797179803e-05\n", + "Grad encoder.fc1.bias: 0.0003935762506444007\n", + "Grad encoder.encoder.0.weight: 3.128337630187161e-05\n", + "Grad encoder.encoder.0.bias: 0.00048266176600009203\n", + "Grad encoder.encoder.2.weight: 2.6832258299691603e-05\n", + "Grad encoder.encoder.2.bias: 0.00046135950833559036\n", + "Grad encoder.encoder.4.weight: 0.00010328282223781571\n", + "Grad encoder.encoder.4.bias: 0.001199115882627666\n", + "Grad decoder.fc1.0.weight: 5.1630253437906504e-05\n", + "Grad decoder.fc1.0.bias: 0.0004303221357986331\n", + "Grad decoder.fc1.2.weight: 6.75901974318549e-05\n", + "Grad decoder.fc1.2.bias: 0.0003981314366683364\n", + "Grad decoder.fc1.4.weight: 7.699384877923876e-05\n", + "Grad decoder.fc1.4.bias: 0.000612268690019846\n", + "Grad decoder.fc2.weight: 0.00012946195784024894\n", + "Grad decoder.fc2.bias: 0.0015043956227600574\n", + "Grad _memory_unit.weight_ih_l0: 7.203416316770017e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.8000347558408976e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.971892561414279e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.494278416837915e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011408240970922634\n", + "Grad _memory_unit.bias_hh_l1: 5.824907566420734e-05\n", + "Data X Sample: tensor([[1.3006, 1.4827, 1.5597, 1.6661, 1.8509, 1.9108, 2.0861, 2.2998, 3.5273,\n", + " 3.9888, 3.8861, 3.9028, 3.6418, 3.5417, 3.5004, 3.3779, 3.3586, 3.3252,\n", + " 3.4217, 3.6376, 3.4817, 3.3297, 2.9255, 2.7352, 2.8227, 2.7529, 2.9756,\n", + " 2.9855, 2.9314, 3.1474, 3.1496, 3.3132, 3.3947, 2.4350, 3.9390, 4.4388,\n", + " 4.7097, 5.0196, 5.7870, 5.3820, 1.1407, 0.6014, 0.6225, 0.9472, 1.4430,\n", + " 1.6640, 1.1014, 1.5717]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0637, -0.0426, 1.3122, -0.8724, -0.0595, -1.3554, -1.3176, -0.1479,\n", + " -0.2719, -0.2583, 0.5919, -0.1993, -0.5694, -0.6390, -0.1359, 0.1472,\n", + " -0.3973, -0.5812, 1.4873, -1.1866, -0.2678, -0.3323, 0.8355, -0.4433,\n", + " -1.0350, -0.2198, 1.1303, 1.3347, -0.1311, -0.5060, 0.0711, 1.0180,\n", + " -0.3037, 0.7866, 0.8354, 0.4088, 0.1281, -0.3276, 0.1550, -0.1181,\n", + " 0.0168, -0.4622, -0.3910]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2683, -0.3704, -0.0789, -0.1229, 0.1100, 0.1767, 0.2282, 0.3590,\n", + " 0.3150, 0.2886, 0.3159, -0.1717, -0.1892, -0.3287, -0.2305, -0.3518,\n", + " -0.2298, -0.0480, -0.0597, -0.1328, -0.1487, 0.0405, -0.0257, -0.0434,\n", + " 0.0170, 0.0587, -0.1038, -0.1996, -0.2944, -0.3233, -0.3008, -0.2478,\n", + " -0.4080, -0.3734, -0.2565, -0.2014, 0.0135, -0.0227, 0.0629, 0.3514,\n", + " 0.3773, 0.4231, 0.3467]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00018550848471932113\n", + "Grad encoder.fc1.bias: 0.00021728049614466727\n", + "Grad encoder.encoder.0.weight: 6.267243588808924e-05\n", + "Grad encoder.encoder.0.bias: 0.00020385332754813135\n", + "Grad encoder.encoder.2.weight: 4.014302248833701e-05\n", + "Grad encoder.encoder.2.bias: 0.00020974510698579252\n", + "Grad encoder.encoder.4.weight: 0.00016445221262983978\n", + "Grad encoder.encoder.4.bias: 0.00048265833174809813\n", + "Grad decoder.fc1.0.weight: 5.7112774811685085e-05\n", + "Grad decoder.fc1.0.bias: 0.00020184728782624006\n", + "Grad decoder.fc1.2.weight: 5.689264435204677e-05\n", + "Grad decoder.fc1.2.bias: 0.00019826780771836638\n", + "Grad decoder.fc1.4.weight: 8.743008220335469e-05\n", + "Grad decoder.fc1.4.bias: 0.00040780645213089883\n", + "Grad decoder.fc2.weight: 0.00011756712046917528\n", + "Grad decoder.fc2.bias: 0.0017835617763921618\n", + "Grad _memory_unit.weight_ih_l0: 2.4992266389745055e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.7004385881591588e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.958653779700398e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.5891835118964082e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.324290395947173e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.7543273972696625e-05\n", + "Data X Sample: tensor([[1.4947, 1.7871, 1.8392, 1.9613, 1.9414, 2.1186, 2.1708, 2.2203, 2.2530,\n", + " 2.2985, 2.3792, 2.3565, 2.1438, 2.2630, 2.2394, 2.2127, 2.1935, 2.2613,\n", + " 2.2488, 2.2912, 2.3260, 2.4740, 2.4459, 2.4202, 2.4474, 2.5283, 2.3816,\n", + " 2.4349, 2.2862, 2.4105, 2.3272, 2.4069, 2.3210, 1.4967, 2.0075, 1.8339,\n", + " 1.6636, 1.5133, 1.6480, 1.5547, 1.2600, 0.7109, 0.7033, 1.2515, 1.8156,\n", + " 2.0643, 1.2714, 1.9157]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.0203, 0.8532, 0.6944, 0.9591, -0.3286, -0.1048, -0.9333, -0.7563,\n", + " -0.3333, -0.7302, -0.8266, -0.2289, -0.1949, 1.1770, 0.1824, 0.7454,\n", + " 0.8010, 0.5250, 1.6274, 1.1260, 1.0881, -0.0669, -0.0766, 2.1210,\n", + " -0.1735, -0.5792, -0.1400, 3.0844, 1.1611, -0.6908, 0.3983, 0.7164,\n", + " 0.4430, 0.9132, 1.0031, -0.0404, 0.0000, 0.5129, 0.4422, -0.4868,\n", + " -0.8748, -0.5997, -0.5149]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3669, 0.2805, 0.1418, 0.2250, 0.1153, -0.1431, -0.3055, -0.3163,\n", + " -0.1619, -0.2380, -0.2258, 0.1077, 0.1541, 0.2593, 0.1655, 0.2498,\n", + " 0.1908, 0.1395, 0.0633, 0.1437, 0.0918, 0.0763, 0.0922, 0.0559,\n", + " 0.0695, 0.0162, -0.0599, 0.0474, 0.1556, 0.2698, 0.2137, 0.1836,\n", + " 0.2835, 0.2542, 0.1642, 0.1838, 0.0334, -0.0158, -0.0014, -0.2437,\n", + " -0.2269, -0.2783, -0.2372]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 8.299027103930712e-05\n", + "Grad encoder.fc1.bias: 3.949689562432468e-05\n", + "Grad encoder.encoder.0.weight: 3.33823190885596e-05\n", + "Grad encoder.encoder.0.bias: 4.483326483750716e-05\n", + "Grad encoder.encoder.2.weight: 2.25378116738284e-05\n", + "Grad encoder.encoder.2.bias: 5.8545832871459424e-05\n", + "Grad encoder.encoder.4.weight: 9.628931002225727e-05\n", + "Grad encoder.encoder.4.bias: 0.0002266337105538696\n", + "Grad decoder.fc1.0.weight: 2.910103285103105e-05\n", + "Grad decoder.fc1.0.bias: 7.594082853756845e-05\n", + "Grad decoder.fc1.2.weight: 3.3375617931596935e-05\n", + "Grad decoder.fc1.2.bias: 8.701047045178711e-05\n", + "Grad decoder.fc1.4.weight: 4.57525129604619e-05\n", + "Grad decoder.fc1.4.bias: 0.00020734865393023938\n", + "Grad decoder.fc2.weight: 9.407083416590467e-05\n", + "Grad decoder.fc2.bias: 0.0018726824782788754\n", + "Grad _memory_unit.weight_ih_l0: 7.098323067111778e-07\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.992525646230206e-06\n", + "Grad _memory_unit.bias_hh_l0: 2.5718254619278014e-06\n", + "Grad _memory_unit.weight_ih_l1: 5.344360261005932e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.620034163352102e-05\n", + "Grad _memory_unit.bias_hh_l1: 8.067187991400715e-06\n", + "Data X Sample: tensor([[1.5181, 1.6633, 1.8843, 1.8739, 2.0404, 2.1539, 2.2555, 2.2714, 3.7469,\n", + " 4.0851, 4.1748, 4.0761, 3.8793, 3.8798, 3.7324, 3.5037, 3.4734, 3.4296,\n", + " 3.4981, 3.3252, 3.2486, 3.3435, 2.9110, 2.8669, 2.8941, 2.9854, 2.9250,\n", + " 2.9121, 3.0529, 3.2326, 3.3385, 3.3022, 3.5333, 2.5768, 4.2380, 4.6869,\n", + " 4.9024, 5.1415, 5.6665, 5.6204, 1.1072, 0.6532, 0.7013, 1.1711, 1.7323,\n", + " 1.8241, 1.2374, 1.7046]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 2.2047, 0.4265, 0.2144, 0.2825, 0.5870, 0.3069, 0.5148, 0.2165,\n", + " 0.6840, -0.1687, -0.1662, -0.6623, -0.3089, 0.2569, 0.2636, 1.0759,\n", + " -0.4687, 0.2028, 0.6868, 0.6203, 0.9426, 1.7928, -0.3816, -0.3541,\n", + " -0.3114, 1.3213, -0.3545, 0.1566, -0.6541, -0.6530, 0.1126, 0.9849,\n", + " -0.6914, -0.0093, 0.4001, 1.2966, 0.1596, -0.6986, -0.2406, -0.2912,\n", + " -1.0455, -0.1115, 0.5282]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2917, -0.3874, -0.0820, -0.1430, 0.0941, 0.1755, 0.2382, 0.3793,\n", + " 0.3057, 0.2890, 0.3339, -0.1834, -0.1993, -0.3426, -0.2396, -0.3540,\n", + " -0.2298, -0.0516, -0.0757, -0.1354, -0.1557, 0.0417, -0.0186, -0.0272,\n", + " 0.0142, 0.0610, -0.0977, -0.1981, -0.2883, -0.3157, -0.3068, -0.2539,\n", + " -0.3998, -0.3934, -0.2472, -0.2118, 0.0125, -0.0339, 0.0701, 0.3776,\n", + " 0.3885, 0.4431, 0.3505]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00021647712856065482\n", + "Grad encoder.fc1.bias: 0.0002258911554235965\n", + "Grad encoder.encoder.0.weight: 8.070113835856318e-05\n", + "Grad encoder.encoder.0.bias: 0.0003663897223304957\n", + "Grad encoder.encoder.2.weight: 5.4372976592276245e-05\n", + "Grad encoder.encoder.2.bias: 0.0002313890727236867\n", + "Grad encoder.encoder.4.weight: 0.0002132639492629096\n", + "Grad encoder.encoder.4.bias: 0.0006222435622476041\n", + "Grad decoder.fc1.0.weight: 6.307037256192416e-05\n", + "Grad decoder.fc1.0.bias: 0.00015168206300586462\n", + "Grad decoder.fc1.2.weight: 5.894721471122466e-05\n", + "Grad decoder.fc1.2.bias: 0.00018107703363057226\n", + "Grad decoder.fc1.4.weight: 8.37167608551681e-05\n", + "Grad decoder.fc1.4.bias: 0.00038604525616392493\n", + "Grad decoder.fc2.weight: 0.00011620014265645295\n", + "Grad decoder.fc2.bias: 0.002411755733191967\n", + "Grad _memory_unit.weight_ih_l0: 5.32180592927034e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.6549878637306392e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.521314157405868e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.91525896298117e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.6603254557121545e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.856285052781459e-05\n", + "Data X Sample: tensor([[1.4406, 1.5395, 1.6739, 1.6946, 1.8492, 1.9123, 2.0121, 2.0840, 2.3531,\n", + " 3.5386, 4.0035, 4.0527, 3.8815, 3.7134, 3.5962, 3.4230, 3.3209, 3.3987,\n", + " 3.4465, 3.4181, 3.3541, 3.1598, 2.8604, 2.8268, 2.7270, 2.7582, 2.7892,\n", + " 2.8020, 2.8655, 2.9836, 3.0411, 3.1640, 3.4607, 2.4807, 4.2086, 4.6164,\n", + " 4.8277, 5.1759, 5.6032, 5.4274, 1.0834, 0.6632, 0.6386, 1.0477, 1.6332,\n", + " 1.6125, 1.1286, 1.5951]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0117, -0.3185, 0.5180, 0.5041, 0.7702, 0.4285, 0.3777, 0.0805,\n", + " 0.2796, -0.7530, -0.0353, -0.0112, 0.9262, 0.8693, 0.8883, 0.1008,\n", + " 0.8716, 0.3459, -0.2187, 0.3406, 0.3185, -0.0583, 4.5093, -0.3466,\n", + " 0.0115, -0.3996, -0.9669, -0.8730, 0.0650, -0.1197, 0.3163, 1.1169,\n", + " -0.4244, 0.6083, 0.5898, -0.9995, 1.0300, -0.4512, -0.2733, -0.4039,\n", + " -0.7324, 0.0611, -0.3886]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2923, -0.3793, -0.0804, -0.1583, 0.0665, 0.1587, 0.2244, 0.3713,\n", + " 0.2788, 0.2707, 0.3197, -0.1822, -0.1935, -0.3311, -0.2324, -0.3382,\n", + " -0.2242, -0.0537, -0.0804, -0.1312, -0.1499, 0.0366, -0.0152, -0.0194,\n", + " 0.0098, 0.0603, -0.0826, -0.1768, -0.2630, -0.2911, -0.2889, -0.2395,\n", + " -0.3677, -0.3804, -0.2283, -0.2073, 0.0107, -0.0369, 0.0654, 0.3746,\n", + " 0.3800, 0.4290, 0.3355]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00010227381426375359\n", + "Grad encoder.fc1.bias: 0.00028698542155325413\n", + "Grad encoder.encoder.0.weight: 4.231939237797633e-05\n", + "Grad encoder.encoder.0.bias: 0.00035899534123018384\n", + "Grad encoder.encoder.2.weight: 3.175128949806094e-05\n", + "Grad encoder.encoder.2.bias: 0.0003049078513868153\n", + "Grad encoder.encoder.4.weight: 0.00013876087905373424\n", + "Grad encoder.encoder.4.bias: 0.0009893024107441306\n", + "Grad decoder.fc1.0.weight: 4.676810931414366e-05\n", + "Grad decoder.fc1.0.bias: 0.000273849000222981\n", + "Grad decoder.fc1.2.weight: 5.9111087466590106e-05\n", + "Grad decoder.fc1.2.bias: 0.0002183222968596965\n", + "Grad decoder.fc1.4.weight: 6.401292921509594e-05\n", + "Grad decoder.fc1.4.bias: 0.00023157487157732248\n", + "Grad decoder.fc2.weight: 0.00012884291936643422\n", + "Grad decoder.fc2.bias: 0.001979466527700424\n", + "Grad _memory_unit.weight_ih_l0: 8.055890248215292e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.4857534046750516e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.825712388381362e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.969757360915537e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.538069960195571e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.3892152461921796e-05\n", + "Data X Sample: tensor([[2.7157, 3.1388, 3.3373, 3.7237, 3.7734, 3.9454, 3.9718, 3.9508, 4.0569,\n", + " 4.1878, 4.0257, 4.1092, 4.0102, 3.9234, 3.7576, 3.5926, 3.6951, 3.7062,\n", + " 3.7129, 3.7231, 3.7025, 3.6635, 3.2532, 3.0692, 2.9841, 2.9410, 2.9064,\n", + " 2.8999, 2.9280, 3.1212, 3.1041, 3.2137, 3.5685, 2.4945, 3.9782, 4.3002,\n", + " 4.4187, 4.9162, 5.4447, 5.1863, 2.1286, 1.2208, 1.1702, 2.0724, 3.1436,\n", + " 3.3509, 2.3388, 3.1433]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.0208, -0.9238, 1.2257, -0.1390, 0.6765, -0.0762, -0.3119, 0.5996,\n", + " 1.1401, 1.2423, 0.3951, -0.7362, -0.1914, -0.5112, -0.5794, -1.1915,\n", + " -1.1790, 0.3280, 1.4591, -0.7586, 0.0145, -0.9119, -0.3534, 2.2440,\n", + " -0.3313, 0.5023, -1.5891, 0.2345, -0.3870, -0.6288, -0.3488, -0.7825,\n", + " 0.5752, -0.3092, 0.5443, 0.3667, 0.2315, -0.4648, 0.8916, 0.8577,\n", + " 0.2307, 0.2783, -0.7945]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2167, -0.2818, -0.0652, -0.1979, -0.0578, 0.0516, 0.1162, 0.2597,\n", + " 0.1390, 0.1640, 0.1933, -0.1278, -0.1223, -0.2082, -0.1590, -0.2266,\n", + " -0.1811, -0.0473, -0.0729, -0.1053, -0.1029, 0.0060, -0.0161, -0.0162,\n", + " -0.0074, 0.0454, -0.0038, -0.0455, -0.1175, -0.1544, -0.1644, -0.1397,\n", + " -0.2038, -0.2465, -0.1270, -0.1493, 0.0060, -0.0267, 0.0250, 0.2804,\n", + " 0.2907, 0.2860, 0.2215]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00014024772099219263\n", + "Grad encoder.fc1.bias: 0.0008549555204808712\n", + "Grad encoder.encoder.0.weight: 4.141330282436684e-05\n", + "Grad encoder.encoder.0.bias: 0.0004992113681510091\n", + "Grad encoder.encoder.2.weight: 2.393657632637769e-05\n", + "Grad encoder.encoder.2.bias: 0.0002834447368513793\n", + "Grad encoder.encoder.4.weight: 6.616039900109172e-05\n", + "Grad encoder.encoder.4.bias: 0.0006929069641046226\n", + "Grad decoder.fc1.0.weight: 2.9654454920091666e-05\n", + "Grad decoder.fc1.0.bias: 0.00021652772556990385\n", + "Grad decoder.fc1.2.weight: 4.3205571273574606e-05\n", + "Grad decoder.fc1.2.bias: 0.00019975972827523947\n", + "Grad decoder.fc1.4.weight: 4.543381874100305e-05\n", + "Grad decoder.fc1.4.bias: 0.000302958011161536\n", + "Grad decoder.fc2.weight: 9.957109432434663e-05\n", + "Grad decoder.fc2.bias: 0.0015997336013242602\n", + "Grad _memory_unit.weight_ih_l0: 4.254270152159734e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.574989412096329e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.3579909136751667e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.89003003470134e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.133041460998356e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.161402855766937e-05\n", + "Data X Sample: tensor([[0.0371, 0.0408, 0.0706, 0.0940, 0.1212, 0.1341, 0.1587, 0.1647, 0.1709,\n", + " 0.1911, 0.1999, 0.2025, 0.2108, 0.1990, 0.2169, 0.2325, 0.2642, 0.2805,\n", + " 0.2788, 0.2697, 0.2969, 0.2817, 0.3085, 0.2958, 0.2759, 0.3291, 0.3223,\n", + " 0.4038, 0.2290, 0.2653, 0.2800, 0.2100, 0.1848, 0.1236, 0.1912, 0.2019,\n", + " 0.2006, 0.2147, 0.1711, 0.1447, 0.0525, 0.0299, 0.0243, 0.0631, 0.0595,\n", + " 0.0629, 0.0816, 0.0626]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7701, 0.6872, 0.5356, 1.1016, 0.1083, 2.9696, -1.0844, -0.7237,\n", + " -1.8254, -0.3288, -0.7092, 0.0565, 0.4759, 0.6523, 0.4398, 0.1335,\n", + " 0.5657, 0.0732, 1.2795, 1.7032, 0.0309, 0.6207, 0.8869, 0.6843,\n", + " 0.1804, -0.4804, -0.0706, 1.4844, 1.7019, 1.7823, 1.1437, 1.0915,\n", + " 0.7093, 1.1385, 1.2494, 1.2981, 0.4765, 0.7916, 0.0000, -0.5099,\n", + " -0.0470, -0.8013, -0.4705]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5054, 0.3993, 0.2020, 0.2585, 0.0014, -0.2969, -0.5380, -0.5696,\n", + " -0.2532, -0.3157, -0.3095, 0.1682, 0.2344, 0.3839, 0.2521, 0.2541,\n", + " 0.2956, 0.1928, 0.0623, 0.1961, 0.0742, 0.0524, 0.0401, 0.0732,\n", + " 0.0754, 0.0697, 0.0039, 0.1376, 0.3831, 0.4243, 0.3889, 0.2880,\n", + " 0.3925, 0.3732, 0.1885, 0.1838, 0.0846, 0.0372, -0.0346, -0.3440,\n", + " -0.3103, -0.3594, -0.3265]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00010615461360430345\n", + "Grad encoder.fc1.bias: 0.0004520161892287433\n", + "Grad encoder.encoder.0.weight: 3.4171727747889236e-05\n", + "Grad encoder.encoder.0.bias: 0.0002813398605212569\n", + "Grad encoder.encoder.2.weight: 2.6627145416568965e-05\n", + "Grad encoder.encoder.2.bias: 0.0003388577315490693\n", + "Grad encoder.encoder.4.weight: 9.643963858252391e-05\n", + "Grad encoder.encoder.4.bias: 0.0011563487350940704\n", + "Grad decoder.fc1.0.weight: 3.0375917049241252e-05\n", + "Grad decoder.fc1.0.bias: 0.00023189710918813944\n", + "Grad decoder.fc1.2.weight: 3.3013056963682175e-05\n", + "Grad decoder.fc1.2.bias: 0.00022620985691901296\n", + "Grad decoder.fc1.4.weight: 4.3990814447170123e-05\n", + "Grad decoder.fc1.4.bias: 0.00042563496390357614\n", + "Grad decoder.fc2.weight: 0.00010440678306622431\n", + "Grad decoder.fc2.bias: 0.001841323683038354\n", + "Grad _memory_unit.weight_ih_l0: 5.258803867036477e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.494094198686071e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.7948774257092737e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.443036464683246e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.325074304593727e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.230740523780696e-05\n", + "Data X Sample: tensor([[1.4385, 1.6808, 1.9128, 1.9460, 2.0763, 2.2791, 2.4265, 2.5695, 2.5484,\n", + " 2.5497, 2.6362, 2.6564, 2.4989, 2.4320, 2.4084, 2.4165, 2.3900, 2.5185,\n", + " 2.4057, 2.4083, 2.3775, 2.3821, 2.3640, 2.3229, 2.3554, 2.4604, 2.3683,\n", + " 2.4064, 2.1544, 2.2042, 2.3832, 2.2024, 2.2154, 1.4234, 1.9094, 1.7658,\n", + " 1.6872, 1.5053, 1.6036, 1.5774, 1.2170, 0.7149, 0.6952, 1.2515, 1.7125,\n", + " 1.9728, 1.2578, 1.8922]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.9531, -0.2882, -1.4519, 0.7023, 0.0427, -1.5253, -0.1146, -0.3806,\n", + " 0.2403, 0.4791, 0.0772, -0.3055, -0.2869, 0.3324, -0.4527, 0.8124,\n", + " 0.2081, -1.8970, -0.2232, -0.2086, -2.6767, -1.0153, -0.7233, -1.4098,\n", + " -1.0080, -1.3173, 0.5324, 0.2533, -0.7215, 0.0802, 0.2683, -0.8907,\n", + " 0.2075, -1.2047, -0.1831, -1.7526, -0.2441, 0.7428, -0.4768, -0.1251,\n", + " -0.3686, -0.2363, 0.7245]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3048, 0.2197, 0.0961, 0.1608, 0.0735, -0.1400, -0.2680, -0.2843,\n", + " -0.1288, -0.2022, -0.1903, 0.0981, 0.1220, 0.2067, 0.1389, 0.1806,\n", + " 0.1427, 0.1008, 0.0467, 0.1060, 0.0730, 0.0604, 0.0780, 0.0258,\n", + " 0.0391, 0.0015, -0.0398, 0.0504, 0.1431, 0.2245, 0.2007, 0.1489,\n", + " 0.2491, 0.2180, 0.1262, 0.1458, 0.0379, -0.0187, 0.0189, -0.1927,\n", + " -0.1764, -0.2284, -0.1837]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00010063212539535016\n", + "Grad encoder.fc1.bias: 5.7576035032980144e-05\n", + "Grad encoder.encoder.0.weight: 3.554189606802538e-05\n", + "Grad encoder.encoder.0.bias: 4.995027120457962e-05\n", + "Grad encoder.encoder.2.weight: 2.7029684133594856e-05\n", + "Grad encoder.encoder.2.bias: 0.00010199815733358264\n", + "Grad encoder.encoder.4.weight: 0.00010340674634790048\n", + "Grad encoder.encoder.4.bias: 0.00024817229132167995\n", + "Grad decoder.fc1.0.weight: 4.153163899900392e-05\n", + "Grad decoder.fc1.0.bias: 0.00014537163951899856\n", + "Grad decoder.fc1.2.weight: 5.675340071320534e-05\n", + "Grad decoder.fc1.2.bias: 0.00019965953833889216\n", + "Grad decoder.fc1.4.weight: 6.904482142999768e-05\n", + "Grad decoder.fc1.4.bias: 0.0004722449230030179\n", + "Grad decoder.fc2.weight: 8.263518247986212e-05\n", + "Grad decoder.fc2.bias: 0.002248392440378666\n", + "Grad _memory_unit.weight_ih_l0: 1.36790617943916e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.0122761523234658e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.301346391206607e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.10837163447286e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.853435191558674e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.9835433704429306e-05\n", + "Data X Sample: tensor([[2.6128, 3.1184, 3.0819, 3.2754, 3.4388, 3.5285, 3.7007, 3.7137, 3.8788,\n", + " 3.9840, 4.0320, 3.8658, 3.8948, 3.7598, 3.6946, 3.5256, 3.3916, 3.5089,\n", + " 3.4734, 3.3847, 3.2412, 3.1629, 2.9761, 2.8153, 2.7345, 2.8182, 2.7918,\n", + " 2.8061, 2.6782, 2.9378, 2.8451, 2.8628, 3.0097, 2.1512, 3.6007, 4.0132,\n", + " 4.2161, 4.5664, 4.9059, 4.8713, 1.9520, 1.1570, 1.0974, 1.8973, 2.8740,\n", + " 3.1164, 1.9921, 2.8540]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2652, 0.3577, -0.4841, 0.0106, -0.1033, -0.1005, 0.1738, 0.6821,\n", + " -0.6124, -0.4897, -0.4449, 1.3499, -0.5411, -0.1578, -0.5301, -0.6985,\n", + " -0.2235, -0.3701, 0.1128, 0.8924, -0.1017, 0.1463, -0.4222, 0.1084,\n", + " 0.0409, 0.1821, -0.5004, 0.2885, -0.3224, -0.4794, -0.7102, 0.2813,\n", + " -0.0904, 0.4092, -0.3944, -0.3645, 0.6097, -0.7806, 0.2870, 0.8235,\n", + " 0.0317, 0.5158, -0.5852]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1956, -0.2603, -0.0594, -0.1939, -0.0688, 0.0414, 0.0951, 0.2298,\n", + " 0.1241, 0.1516, 0.1600, -0.1173, -0.1113, -0.1832, -0.1446, -0.2133,\n", + " -0.1766, -0.0505, -0.0628, -0.1014, -0.0916, -0.0026, -0.0157, -0.0249,\n", + " -0.0205, 0.0386, 0.0036, -0.0274, -0.0988, -0.1475, -0.1435, -0.1194,\n", + " -0.1786, -0.2150, -0.1187, -0.1338, 0.0029, -0.0186, 0.0156, 0.2492,\n", + " 0.2711, 0.2520, 0.1952]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002074183285003528\n", + "Grad encoder.fc1.bias: 0.0004317599523346871\n", + "Grad encoder.encoder.0.weight: 6.206358375493437e-05\n", + "Grad encoder.encoder.0.bias: 0.00026381469797343016\n", + "Grad encoder.encoder.2.weight: 4.093256939086132e-05\n", + "Grad encoder.encoder.2.bias: 0.0002424242557026446\n", + "Grad encoder.encoder.4.weight: 0.0001299555879086256\n", + "Grad encoder.encoder.4.bias: 0.00042891502380371094\n", + "Grad decoder.fc1.0.weight: 4.489066486712545e-05\n", + "Grad decoder.fc1.0.bias: 0.00025868689408525825\n", + "Grad decoder.fc1.2.weight: 4.172414628555998e-05\n", + "Grad decoder.fc1.2.bias: 0.00017064705025404692\n", + "Grad decoder.fc1.4.weight: 3.2794538128655404e-05\n", + "Grad decoder.fc1.4.bias: 0.0001693927333690226\n", + "Grad decoder.fc2.weight: 7.666578312637284e-05\n", + "Grad decoder.fc2.bias: 0.0017570657655596733\n", + "Grad _memory_unit.weight_ih_l0: 3.7278430227161152e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.0010998923680745e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.0351963283028454e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.0759532617375953e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.311648055794649e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.6800684281624854e-05\n", + "Data X Sample: tensor([[1.5276, 1.7799, 1.8407, 2.0466, 2.1514, 2.1834, 2.3572, 2.4176, 2.4312,\n", + " 2.4833, 2.5156, 2.6135, 2.4390, 2.4756, 2.3857, 2.3467, 2.3145, 2.3212,\n", + " 2.4264, 2.3544, 2.5395, 2.5260, 2.5399, 2.5615, 2.5243, 2.6223, 2.5228,\n", + " 2.5206, 2.2723, 2.3548, 2.2887, 2.2853, 2.2374, 1.4486, 1.9389, 1.7926,\n", + " 1.6145, 1.4497, 1.5719, 1.5576, 1.1932, 0.7249, 0.6972, 1.2343, 1.7641,\n", + " 2.0242, 1.3530, 1.9704]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2444, -0.5748, 0.1570, 0.8590, -0.0725, -1.2429, -0.4753, -0.3894,\n", + " 0.0160, -0.0449, -0.0500, 1.2168, -0.0369, -0.2345, 0.4532, 0.6130,\n", + " 0.2645, 0.6829, -0.2545, 0.2651, -0.3437, -1.0737, -0.1520, -0.0673,\n", + " -0.2286, -0.2840, -0.3603, -1.5535, -0.2195, 0.2655, -0.1909, 0.7339,\n", + " -0.8014, 0.5699, -1.5379, 0.6721, 0.2928, 0.0000, -0.0156, 0.0367,\n", + " -0.2099, -0.2429, 0.4104]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3447, 0.2461, 0.0988, 0.2048, 0.0872, -0.1463, -0.3011, -0.3289,\n", + " -0.1646, -0.2372, -0.2251, 0.1096, 0.1567, 0.2434, 0.1572, 0.2209,\n", + " 0.1705, 0.1204, 0.0476, 0.1269, 0.0786, 0.0810, 0.1120, 0.0409,\n", + " 0.0280, -0.0234, -0.0373, 0.0494, 0.1743, 0.2702, 0.2204, 0.1731,\n", + " 0.2836, 0.2542, 0.1487, 0.1719, 0.0345, -0.0222, 0.0185, -0.2249,\n", + " -0.2145, -0.2629, -0.2331]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 6.26460969215259e-05\n", + "Grad encoder.fc1.bias: 0.00013978382048662752\n", + "Grad encoder.encoder.0.weight: 2.3108736058929935e-05\n", + "Grad encoder.encoder.0.bias: 0.00018187877140007913\n", + "Grad encoder.encoder.2.weight: 1.4827919585513882e-05\n", + "Grad encoder.encoder.2.bias: 0.00021842808928340673\n", + "Grad encoder.encoder.4.weight: 5.1867333240807056e-05\n", + "Grad encoder.encoder.4.bias: 0.0006222157389856875\n", + "Grad decoder.fc1.0.weight: 2.282119203300681e-05\n", + "Grad decoder.fc1.0.bias: 0.00019811799575109035\n", + "Grad decoder.fc1.2.weight: 3.075758650084026e-05\n", + "Grad decoder.fc1.2.bias: 0.0001488591224187985\n", + "Grad decoder.fc1.4.weight: 3.853668749798089e-05\n", + "Grad decoder.fc1.4.bias: 0.00020863855024799705\n", + "Grad decoder.fc2.weight: 7.828269008314237e-05\n", + "Grad decoder.fc2.bias: 0.0015836316160857677\n", + "Grad _memory_unit.weight_ih_l0: 2.1684870716853766e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.6768388377386145e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.588627679273486e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.3064149015917792e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.551834354060702e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.296774255228229e-05\n", + "Data X Sample: tensor([[-0.0053, 0.0102, 0.0045, 0.0066, -0.0051, 0.0000, 0.0000, 0.0071,\n", + " 0.0220, 0.0174, 0.0222, 0.0097, 0.0022, 0.0273, 0.0050, -0.0027,\n", + " -0.0519, -0.0580, -0.0620, -0.0539, -0.0417, -0.0337, -0.0578, -0.0401,\n", + " -0.0131, -0.0862, -0.0559, -0.1428, -0.0416, 0.0033, -0.0280, -0.0111,\n", + " -0.0044, -0.0206, 0.0172, 0.0316, 0.0098, 0.0159, -0.0380, 0.0000,\n", + " 0.0000, 0.0100, 0.0081, -0.0144, -0.0198, -0.0057, 0.0000, -0.0313]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 9.7979e-01, 5.9036e-01, -3.7458e-01, 2.6520e-01, -6.0249e-03,\n", + " -4.0108e-01, -1.0303e+00, -9.4802e-01, -1.1417e+00, -8.3875e-01,\n", + " -7.8564e-01, 1.6447e-01, -3.9950e+00, 2.0316e-01, 9.4058e-04,\n", + " -9.3277e-03, -3.4767e-01, -1.1879e+00, 3.9608e-01, 9.7066e-01,\n", + " 6.7997e-01, -1.6685e+00, 2.1455e-02, 6.0228e-01, 7.5305e-01,\n", + " -3.8811e-01, -7.3858e-01, -1.9563e+00, 7.4951e-01, 7.3241e-01,\n", + " 3.8107e-01, 6.2887e-02, 5.5763e-01, 9.9460e-01, 4.6076e-03,\n", + " 5.6841e-01, 0.0000e+00, 1.1226e-01, -4.0658e-01, -6.8664e-01,\n", + " -5.6400e-01, 2.4035e-01, -2.7974e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.7267, 0.5666, 0.2130, 0.3456, -0.2858, -0.6399, -0.9699, -0.9917,\n", + " -0.5670, -0.6183, -0.6366, 0.2390, 0.4289, 0.5698, 0.4079, 0.4099,\n", + " 0.3832, 0.2052, 0.0021, 0.2166, 0.0627, 0.0632, 0.0699, 0.0588,\n", + " 0.0699, 0.0178, 0.1535, 0.3645, 0.7803, 0.7700, 0.7254, 0.4260,\n", + " 0.6713, 0.5684, 0.2451, 0.3070, 0.0947, 0.0585, -0.0144, -0.5821,\n", + " -0.5492, -0.5369, -0.4342]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000405876780860126\n", + "Grad encoder.fc1.bias: 0.0005771638825535774\n", + "Grad encoder.encoder.0.weight: 0.0001145374117186293\n", + "Grad encoder.encoder.0.bias: 0.0005522987339645624\n", + "Grad encoder.encoder.2.weight: 8.430851448792964e-05\n", + "Grad encoder.encoder.2.bias: 0.0005706490483134985\n", + "Grad encoder.encoder.4.weight: 0.0002326750836800784\n", + "Grad encoder.encoder.4.bias: 0.0009172088466584682\n", + "Grad decoder.fc1.0.weight: 7.703641313128173e-05\n", + "Grad decoder.fc1.0.bias: 0.00038070190930739045\n", + "Grad decoder.fc1.2.weight: 5.7387536799069494e-05\n", + "Grad decoder.fc1.2.bias: 0.0003683416871353984\n", + "Grad decoder.fc1.4.weight: 5.346228135749698e-05\n", + "Grad decoder.fc1.4.bias: 0.0004746070771943778\n", + "Grad decoder.fc2.weight: 9.603186481399462e-05\n", + "Grad decoder.fc2.bias: 0.002141769276931882\n", + "Grad _memory_unit.weight_ih_l0: 4.624927441909676e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.4606488295830786e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.2216047252877615e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.960343524842756e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.0157817895524204e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.5342078515677713e-05\n", + "Data X Sample: tensor([[1.3154, 1.4507, 1.6469, 1.7186, 1.7518, 1.8401, 2.0260, 2.0968, 1.9015,\n", + " 3.5117, 3.9686, 4.0333, 3.8327, 3.6944, 3.6114, 3.4955, 3.5268, 3.4935,\n", + " 3.4259, 3.2787, 3.4399, 3.2670, 2.9351, 2.8630, 2.7758, 2.7843, 2.8451,\n", + " 2.8142, 2.8725, 2.9312, 3.0236, 3.0866, 3.4629, 2.6203, 4.2454, 4.7185,\n", + " 4.9103, 5.1547, 5.7299, 5.5835, 0.9593, 0.5676, 0.5760, 1.1080, 1.6253,\n", + " 1.6926, 1.1014, 1.6420]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3435, -0.2924, -0.6332, -0.4501, -0.2944, -0.4680, -0.1589, 0.3076,\n", + " -0.0109, 0.3513, 0.7646, -0.1850, -1.2067, -0.9076, -0.3645, -0.6164,\n", + " -0.0977, 0.8554, -0.1592, 0.3151, 1.1895, -0.0273, 0.9846, -0.1396,\n", + " 0.4387, 2.2668, 1.3056, 1.0272, 1.5656, 0.8296, 0.0895, -0.7685,\n", + " -0.7819, 0.3895, 0.1044, -0.8141, 0.0540, 0.7966, -0.7678, 0.9062,\n", + " 0.8255, 1.0012, 0.6968]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2541, -0.3047, -0.0723, -0.2136, -0.0679, 0.0685, 0.1337, 0.2813,\n", + " 0.1438, 0.1763, 0.2067, -0.1428, -0.1388, -0.2313, -0.1777, -0.2441,\n", + " -0.1887, -0.0653, -0.0906, -0.1186, -0.1159, 0.0013, -0.0067, -0.0092,\n", + " -0.0211, 0.0510, -0.0062, -0.0563, -0.1212, -0.1700, -0.1817, -0.1520,\n", + " -0.2022, -0.2650, -0.1399, -0.1658, -0.0006, -0.0316, 0.0278, 0.3048,\n", + " 0.3066, 0.3115, 0.2275]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001599554088898003\n", + "Grad encoder.fc1.bias: 0.00012227035767864436\n", + "Grad encoder.encoder.0.weight: 3.736923827091232e-05\n", + "Grad encoder.encoder.0.bias: 0.00016008330567274243\n", + "Grad encoder.encoder.2.weight: 2.4274479073937982e-05\n", + "Grad encoder.encoder.2.bias: 0.00016659761604387313\n", + "Grad encoder.encoder.4.weight: 7.482612272724509e-05\n", + "Grad encoder.encoder.4.bias: 0.00024664035299792886\n", + "Grad decoder.fc1.0.weight: 2.6096175133716315e-05\n", + "Grad decoder.fc1.0.bias: 0.00016176972712855786\n", + "Grad decoder.fc1.2.weight: 4.000788612756878e-05\n", + "Grad decoder.fc1.2.bias: 0.00013912306167185307\n", + "Grad decoder.fc1.4.weight: 5.15786450705491e-05\n", + "Grad decoder.fc1.4.bias: 0.0002640987513586879\n", + "Grad decoder.fc2.weight: 8.485287253279239e-05\n", + "Grad decoder.fc2.bias: 0.0018042974406853318\n", + "Grad _memory_unit.weight_ih_l0: 1.9039548533328343e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.3072742149233818e-05\n", + "Grad _memory_unit.bias_hh_l0: 6.836412467237096e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.194250558000931e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.387410833965987e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.7080985344364308e-05\n", + "Data X Sample: tensor([[2.0877, 2.4950, 2.7663, 2.8272, 2.8463, 2.9848, 3.0474, 2.9556, 3.3173,\n", + " 3.3601, 3.5466, 3.2815, 3.3444, 3.2472, 3.2533, 3.2370, 3.1589, 3.2613,\n", + " 3.3226, 3.2080, 3.1627, 3.1123, 3.0532, 2.8802, 2.7852, 2.7973, 2.5734,\n", + " 2.6225, 2.3243, 2.3646, 2.1977, 2.1858, 2.1978, 1.4738, 2.2649, 2.4857,\n", + " 2.6233, 2.7907, 2.9283, 2.8173, 1.7516, 1.0296, 0.9862, 1.8055, 2.4776,\n", + " 2.6876, 1.9853, 2.7211]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4116, -0.6702, -1.7653, -0.8054, -2.1205, 0.4262, 1.1180, 1.2409,\n", + " 0.7447, 0.6080, 0.7109, -0.0541, 0.9112, 0.3068, -0.2565, 0.1605,\n", + " 0.2873, 0.8609, -0.6389, -0.6489, -0.1226, -0.1289, -0.8645, 0.6814,\n", + " 0.4400, -0.5653, -0.4117, 0.5295, -0.9043, -0.6051, -0.3962, 0.2901,\n", + " -1.4515, -1.3174, -0.0388, -1.0207, 0.9776, 0.3945, 2.2782, 0.7517,\n", + " 0.8541, 0.6560, 0.5733]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1005, -0.1512, -0.0267, -0.1571, -0.0722, 0.0072, 0.0169, 0.1322,\n", + " 0.0917, 0.1059, 0.0738, -0.0685, -0.0745, -0.1040, -0.0938, -0.1598,\n", + " -0.1243, -0.0549, -0.0234, -0.0621, -0.0394, -0.0278, -0.0383, -0.0450,\n", + " -0.0266, 0.0549, 0.0117, 0.0122, -0.0591, -0.1314, -0.0688, -0.0595,\n", + " -0.0977, -0.1157, -0.0763, -0.0895, -0.0012, -0.0118, -0.0173, 0.1379,\n", + " 0.2015, 0.1389, 0.1248]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005060479743406177\n", + "Grad encoder.fc1.bias: 0.00046758539974689484\n", + "Grad encoder.encoder.0.weight: 0.0001367382938042283\n", + "Grad encoder.encoder.0.bias: 0.0006197409238666296\n", + "Grad encoder.encoder.2.weight: 9.171439160127193e-05\n", + "Grad encoder.encoder.2.bias: 0.000510333280544728\n", + "Grad encoder.encoder.4.weight: 0.0003030147054232657\n", + "Grad encoder.encoder.4.bias: 0.0013181499671190977\n", + "Grad decoder.fc1.0.weight: 8.584793977206573e-05\n", + "Grad decoder.fc1.0.bias: 0.00031169652356766164\n", + "Grad decoder.fc1.2.weight: 7.424395880661905e-05\n", + "Grad decoder.fc1.2.bias: 0.0004150339518673718\n", + "Grad decoder.fc1.4.weight: 6.352084164973348e-05\n", + "Grad decoder.fc1.4.bias: 0.000724497833289206\n", + "Grad decoder.fc2.weight: 8.445179264526814e-05\n", + "Grad decoder.fc2.bias: 0.0026262737810611725\n", + "Grad _memory_unit.weight_ih_l0: 4.595351128955372e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.565597631270066e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.073055141721852e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.1302298591763247e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.882570596644655e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.482880492811091e-05\n", + "Data X Sample: tensor([[ 0.0191, 0.0102, 0.0270, 0.0044, 0.0068, 0.0309, 0.0154, 0.0256,\n", + " 0.0293, 0.0316, 0.0508, 0.0136, 0.0178, 0.0136, 0.0076, 0.0137,\n", + " -0.1447, -0.1489, -0.1797, -0.1637, -0.1889, -0.1087, -0.2024, -0.1775,\n", + " -0.1595, -0.3134, -0.2957, -0.5139, -0.0971, -0.0786, -0.0945, -0.0553,\n", + " -0.0308, -0.0732, -0.0245, -0.0049, -0.0315, -0.0318, -0.0190, -0.0227,\n", + " 0.0286, 0.0100, 0.0222, -0.0115, 0.0436, 0.0057, -0.0272, 0.0235]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.1083, 1.2836, 1.3773, 0.8344, 0.3362, 0.5765, -1.5060, -1.1480,\n", + " -1.0025, -0.7389, -0.9736, -0.2922, 0.4049, 0.6656, 0.5658, 0.6520,\n", + " 0.7083, 1.3657, -0.1014, 0.2161, 1.3459, 0.7966, 0.6672, -0.5338,\n", + " 0.8424, 1.1070, -1.2730, 2.0200, -0.3084, 0.8288, 0.5048, -0.1197,\n", + " 0.6615, 0.5790, 0.9291, -0.7482, 0.3997, 0.6219, -0.0231, -0.7751,\n", + " -0.6691, -0.7820, -0.3507]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5806, 0.4849, 0.2133, 0.3764, 0.0349, -0.3144, -0.6258, -0.7283,\n", + " -0.2856, -0.3823, -0.3459, 0.2427, 0.3032, 0.4328, 0.2766, 0.3384,\n", + " 0.3809, 0.2178, 0.0822, 0.2240, 0.1056, 0.0773, 0.0815, 0.0709,\n", + " 0.0709, 0.0264, -0.0327, 0.1382, 0.4556, 0.5009, 0.4757, 0.3142,\n", + " 0.4953, 0.4734, 0.2333, 0.2149, 0.1005, 0.0390, -0.0390, -0.4107,\n", + " -0.4090, -0.4521, -0.4257]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 8.401468221563846e-05\n", + "Grad encoder.fc1.bias: 0.0006033926038071513\n", + "Grad encoder.encoder.0.weight: 2.875132668123115e-05\n", + "Grad encoder.encoder.0.bias: 0.00036978491698391736\n", + "Grad encoder.encoder.2.weight: 1.8633572835824452e-05\n", + "Grad encoder.encoder.2.bias: 0.000222787813981995\n", + "Grad encoder.encoder.4.weight: 4.668258407036774e-05\n", + "Grad encoder.encoder.4.bias: 0.0002460177056491375\n", + "Grad decoder.fc1.0.weight: 1.966308082046453e-05\n", + "Grad decoder.fc1.0.bias: 0.00010566459968686104\n", + "Grad decoder.fc1.2.weight: 4.031811113236472e-05\n", + "Grad decoder.fc1.2.bias: 0.00019930230337195098\n", + "Grad decoder.fc1.4.weight: 4.74589251098223e-05\n", + "Grad decoder.fc1.4.bias: 0.0003471437667030841\n", + "Grad decoder.fc2.weight: 0.00011200271546840668\n", + "Grad decoder.fc2.bias: 0.0020283230114728212\n", + "Grad _memory_unit.weight_ih_l0: 3.0331825655594002e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.0457605640112888e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.772031272499589e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.2632174275495345e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.4163335183402523e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.238765526068164e-05\n", + "Data X Sample: tensor([[1.4608, 1.7886, 1.8918, 1.9832, 2.1736, 2.1996, 2.2478, 2.4815, 2.4996,\n", + " 2.4454, 2.5791, 2.6311, 2.4745, 2.4402, 2.3832, 2.4985, 2.4073, 2.4160,\n", + " 2.3892, 2.4455, 2.4610, 2.4908, 2.4628, 2.5786, 2.4980, 2.5126, 2.5094,\n", + " 2.6511, 2.3625, 2.4694, 2.3867, 2.3765, 2.2484, 1.4486, 1.9021, 1.7390,\n", + " 1.5594, 1.4629, 1.5719, 1.5320, 1.1932, 0.6990, 0.7053, 1.2170, 1.8433,\n", + " 2.0528, 1.4278, 1.9626]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6624, 0.1732, 0.2596, 0.2033, 0.4577, -1.0369, -0.6060, -0.2580,\n", + " -0.3716, -0.3082, -0.0946, 1.0565, -0.5529, 0.3970, 0.2219, 0.8289,\n", + " 0.6793, 0.2894, -0.6580, 0.8555, -0.5460, -0.3063, -0.8666, -0.5553,\n", + " 1.4065, -0.2623, 0.0964, 0.3726, -0.4077, 0.8531, 0.0077, 0.7179,\n", + " 0.8186, -0.0892, 0.9109, 0.4362, -0.0457, -0.7055, -0.0156, -0.0920,\n", + " -0.0315, -0.4917, 0.3526]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3634, 0.2605, 0.0886, 0.2390, 0.0821, -0.1382, -0.3272, -0.3670,\n", + " -0.1801, -0.2581, -0.2485, 0.1240, 0.1807, 0.2563, 0.1481, 0.2434,\n", + " 0.1807, 0.1242, 0.0521, 0.1333, 0.0828, 0.0930, 0.1425, 0.0522,\n", + " 0.0056, -0.0553, -0.0328, 0.0437, 0.2020, 0.2989, 0.2292, 0.1791,\n", + " 0.2958, 0.2753, 0.1548, 0.1819, 0.0208, -0.0253, 0.0119, -0.2486,\n", + " -0.2353, -0.2775, -0.2646]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00018110555538441986\n", + "Grad encoder.fc1.bias: 0.000114569062134251\n", + "Grad encoder.encoder.0.weight: 5.569059430854395e-05\n", + "Grad encoder.encoder.0.bias: 0.00011456814536359161\n", + "Grad encoder.encoder.2.weight: 3.250722147640772e-05\n", + "Grad encoder.encoder.2.bias: 0.00010096469486597925\n", + "Grad encoder.encoder.4.weight: 0.00011043588165193796\n", + "Grad encoder.encoder.4.bias: 0.00020999659318476915\n", + "Grad decoder.fc1.0.weight: 3.391958671272732e-05\n", + "Grad decoder.fc1.0.bias: 8.686786168254912e-05\n", + "Grad decoder.fc1.2.weight: 5.246017099125311e-05\n", + "Grad decoder.fc1.2.bias: 0.00021798413945361972\n", + "Grad decoder.fc1.4.weight: 4.904162778984755e-05\n", + "Grad decoder.fc1.4.bias: 0.00035893928725272417\n", + "Grad decoder.fc2.weight: 7.98424007371068e-05\n", + "Grad decoder.fc2.bias: 0.002224188996478915\n", + "Grad _memory_unit.weight_ih_l0: 1.0939502317341976e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.112360435712617e-06\n", + "Grad _memory_unit.bias_hh_l0: 3.839835699182004e-06\n", + "Grad _memory_unit.weight_ih_l1: 6.645395274063048e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.7378097254550084e-05\n", + "Grad _memory_unit.bias_hh_l1: 9.156166925095022e-06\n", + "Data X Sample: tensor([[1.1977, 1.3895, 1.5823, 1.6749, 1.8833, 1.8887, 2.1646, 2.1124, 3.8177,\n", + " 4.0820, 4.0510, 4.0430, 3.8571, 3.7434, 3.5937, 3.5078, 3.4985, 3.4548,\n", + " 3.5085, 3.3642, 3.3393, 3.3037, 2.9086, 2.8478, 2.8715, 2.8444, 2.9277,\n", + " 3.0100, 3.0182, 3.0328, 3.1636, 3.2469, 3.4739, 2.5723, 4.3508, 4.6504,\n", + " 4.8198, 5.2316, 5.7426, 5.5891, 1.0309, 0.6114, 0.5922, 1.0391, 1.3875,\n", + " 1.7555, 1.0402, 1.5482]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5374, -0.1811, -1.3497, -0.2843, 0.5975, 0.1300, 0.5399, 0.4642,\n", + " 1.2152, 0.6826, 0.4207, 0.9263, 0.1314, -0.1408, 0.0914, -0.4274,\n", + " 0.1417, -0.6757, 0.0574, -0.1337, -0.2659, 0.4562, -0.1628, -1.6481,\n", + " -0.2709, 0.9047, -0.4087, 0.3043, -0.3571, -0.4883, -0.2724, -0.3972,\n", + " -0.9550, -1.0660, 0.0475, -0.1878, 0.8291, 0.7672, 0.0382, 0.6292,\n", + " 0.7254, 0.4437, 0.1953]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2756, -0.3141, -0.0780, -0.2221, -0.0726, 0.0803, 0.1442, 0.2959,\n", + " 0.1489, 0.1874, 0.2157, -0.1500, -0.1488, -0.2460, -0.1930, -0.2597,\n", + " -0.1985, -0.0790, -0.1008, -0.1302, -0.1195, -0.0026, -0.0036, 0.0010,\n", + " -0.0259, 0.0558, -0.0028, -0.0564, -0.1211, -0.1809, -0.1951, -0.1648,\n", + " -0.2080, -0.2795, -0.1477, -0.1722, -0.0061, -0.0315, 0.0269, 0.3190,\n", + " 0.3209, 0.3280, 0.2388]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 5.8090165111934766e-05\n", + "Grad encoder.fc1.bias: 9.349084575660527e-05\n", + "Grad encoder.encoder.0.weight: 1.830862856877502e-05\n", + "Grad encoder.encoder.0.bias: 0.00010373636905569583\n", + "Grad encoder.encoder.2.weight: 1.2997773410461377e-05\n", + "Grad encoder.encoder.2.bias: 0.00015827312017790973\n", + "Grad encoder.encoder.4.weight: 3.646207187557593e-05\n", + "Grad encoder.encoder.4.bias: 0.0004999443190172315\n", + "Grad decoder.fc1.0.weight: 2.021375621552579e-05\n", + "Grad decoder.fc1.0.bias: 0.00017673714319244027\n", + "Grad decoder.fc1.2.weight: 2.1347024812712334e-05\n", + "Grad decoder.fc1.2.bias: 0.00013026356464251876\n", + "Grad decoder.fc1.4.weight: 2.1362131519708782e-05\n", + "Grad decoder.fc1.4.bias: 0.00016808861983008683\n", + "Grad decoder.fc2.weight: 8.358777995454147e-05\n", + "Grad decoder.fc2.bias: 0.0016073808073997498\n", + "Grad _memory_unit.weight_ih_l0: 2.6548641471890733e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.7141670468845405e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.003306331578642e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.3523822417482734e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.721964069176465e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.408726686553564e-05\n", + "Data X Sample: tensor([[1.5350, 1.7697, 1.9234, 2.0291, 2.1121, 2.2320, 2.4466, 2.4346, 2.4947,\n", + " 2.5781, 2.7028, 2.6466, 2.4989, 2.4429, 2.3655, 2.4014, 2.3743, 2.4276,\n", + " 2.4801, 2.4418, 2.5125, 2.4740, 2.4122, 2.3649, 2.3873, 2.4865, 2.4402,\n", + " 2.4471, 2.2133, 2.2893, 2.2467, 2.3405, 2.3122, 1.5013, 1.9683, 1.7780,\n", + " 1.6420, 1.4947, 1.5656, 1.5888, 1.1693, 0.6990, 0.7235, 1.2802, 1.8909,\n", + " 2.0357, 1.3598, 2.0174]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6381, 0.3147, 0.0816, 0.4297, 0.5783, 0.0967, -0.0677, -0.4618,\n", + " -0.0022, -0.1899, -0.3420, 1.8556, 0.0703, 0.0920, 0.5965, 0.1971,\n", + " -0.3775, 0.6440, 0.7106, -0.1309, -0.1511, 1.3094, 0.7507, -1.0002,\n", + " 0.8497, 0.1527, -0.6269, 0.5177, 0.1758, 0.8517, 0.9936, -1.1747,\n", + " 1.5370, 0.8202, 0.4306, -0.8588, -0.7434, 0.7916, -0.2505, -0.3129,\n", + " -0.1547, -0.6389, 0.3891]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3204, 0.2337, 0.0716, 0.1953, 0.0585, -0.1335, -0.3005, -0.3351,\n", + " -0.1468, -0.2254, -0.2177, 0.1195, 0.1461, 0.2184, 0.1251, 0.2040,\n", + " 0.1516, 0.0961, 0.0506, 0.1070, 0.0764, 0.0736, 0.1145, 0.0302,\n", + " 0.0080, -0.0366, -0.0343, 0.0435, 0.1780, 0.2508, 0.2082, 0.1470,\n", + " 0.2588, 0.2369, 0.1251, 0.1484, 0.0179, -0.0215, 0.0142, -0.2198,\n", + " -0.2006, -0.2458, -0.2194]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 8.185324259102345e-05\n", + "Grad encoder.fc1.bias: 0.00019830340170301497\n", + "Grad encoder.encoder.0.weight: 2.201455572503619e-05\n", + "Grad encoder.encoder.0.bias: 0.00023493847402278334\n", + "Grad encoder.encoder.2.weight: 2.208355363109149e-05\n", + "Grad encoder.encoder.2.bias: 0.00021241340436972678\n", + "Grad encoder.encoder.4.weight: 7.677065150346607e-05\n", + "Grad encoder.encoder.4.bias: 0.0004170218016952276\n", + "Grad decoder.fc1.0.weight: 3.0851937481202185e-05\n", + "Grad decoder.fc1.0.bias: 0.00017113395733758807\n", + "Grad decoder.fc1.2.weight: 3.49958791048266e-05\n", + "Grad decoder.fc1.2.bias: 0.00019439597963355482\n", + "Grad decoder.fc1.4.weight: 4.140494638704695e-05\n", + "Grad decoder.fc1.4.bias: 0.00035138032399117947\n", + "Grad decoder.fc2.weight: 8.649737719679251e-05\n", + "Grad decoder.fc2.bias: 0.001672445680014789\n", + "Grad _memory_unit.weight_ih_l0: 3.5526863939594477e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.1292577255517244e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.824528670927975e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.4148871514407801e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.176875179633498e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.5777564840391278e-05\n", + "Data X Sample: tensor([[1.8936, 1.8163, 1.9128, 2.1756, 2.1224, 1.9977, 2.3233, 3.7336, 4.2083,\n", + " 4.3837, 4.2985, 4.4169, 4.0590, 4.0842, 3.9140, 3.8196, 3.7328, 3.6888,\n", + " 3.5209, 3.4089, 3.3271, 3.3940, 2.8966, 2.7542, 2.7908, 2.7817, 2.9011,\n", + " 2.8468, 2.8447, 3.0033, 3.0656, 3.1115, 3.3991, 2.5059, 4.3091, 4.7039,\n", + " 5.0696, 5.5205, 6.0342, 6.0175, 1.1741, 0.7010, 0.6932, 1.1568, 1.8314,\n", + " 2.0757, 1.3598, 1.8688]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1391, -1.1574, -0.1329, -0.2813, -0.5086, 0.3303, -0.6397, 0.2800,\n", + " -0.6202, -0.5335, -0.7238, -1.4979, 0.4091, -1.1538, 0.1247, 0.0248,\n", + " -0.4907, -0.5279, 1.4300, 0.7106, -0.5006, 0.4731, 0.9774, 0.1486,\n", + " -0.5197, 0.7568, 0.6299, 0.2480, -0.6397, 0.7301, -0.0643, -0.4780,\n", + " -0.3454, 0.0303, 0.3081, -0.0574, 0.3306, -0.7806, 0.2098, -0.1811,\n", + " 0.0107, 0.5353, 0.3390]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2988, -0.3294, -0.0856, -0.2286, -0.0728, 0.0943, 0.1602, 0.3174,\n", + " 0.1572, 0.1995, 0.2328, -0.1607, -0.1600, -0.2658, -0.2094, -0.2748,\n", + " -0.2071, -0.0877, -0.1110, -0.1404, -0.1289, -0.0026, -0.0020, 0.0090,\n", + " -0.0235, 0.0605, -0.0040, -0.0635, -0.1301, -0.1916, -0.2130, -0.1788,\n", + " -0.2209, -0.3017, -0.1579, -0.1810, -0.0092, -0.0353, 0.0285, 0.3397,\n", + " 0.3374, 0.3510, 0.2560]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 5.600901204161346e-05\n", + "Grad encoder.fc1.bias: 7.604675920447335e-05\n", + "Grad encoder.encoder.0.weight: 1.946196789504029e-05\n", + "Grad encoder.encoder.0.bias: 9.046486957231537e-05\n", + "Grad encoder.encoder.2.weight: 1.3150576705811545e-05\n", + "Grad encoder.encoder.2.bias: 9.383284486830235e-05\n", + "Grad encoder.encoder.4.weight: 3.958111483370885e-05\n", + "Grad encoder.encoder.4.bias: 0.00017095156363211572\n", + "Grad decoder.fc1.0.weight: 1.4003075193613768e-05\n", + "Grad decoder.fc1.0.bias: 7.826719956938177e-05\n", + "Grad decoder.fc1.2.weight: 1.8591421394376084e-05\n", + "Grad decoder.fc1.2.bias: 8.53459641803056e-05\n", + "Grad decoder.fc1.4.weight: 2.4687960831215605e-05\n", + "Grad decoder.fc1.4.bias: 0.00018887556507252157\n", + "Grad decoder.fc2.weight: 8.416009950451553e-05\n", + "Grad decoder.fc2.bias: 0.0015948754735291004\n", + "Grad _memory_unit.weight_ih_l0: 8.410165150962712e-07\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.517245426744921e-06\n", + "Grad _memory_unit.bias_hh_l0: 2.952167960756924e-06\n", + "Grad _memory_unit.weight_ih_l1: 5.053715312897111e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.2814962246920913e-05\n", + "Grad _memory_unit.bias_hh_l1: 6.608666353713488e-06\n", + "Data X Sample: tensor([[2.6404, 2.8751, 3.0248, 3.2711, 3.3056, 3.4430, 3.6976, 3.8827, 3.8910,\n", + " 3.9193, 4.0003, 4.0177, 3.8038, 3.7380, 3.7274, 3.5187, 3.5174, 3.5283,\n", + " 3.5374, 3.3121, 3.3663, 3.2884, 2.9303, 2.9413, 2.8246, 2.8470, 2.8158,\n", + " 2.8387, 2.8794, 2.8395, 2.9221, 2.9070, 2.9767, 2.2198, 3.6326, 3.9378,\n", + " 4.1276, 4.3729, 4.6714, 4.7976, 1.8661, 1.0833, 1.0529, 1.8973, 2.7115,\n", + " 3.0821, 2.0873, 2.7524]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6803, 2.0991, -0.2682, 1.1761, 0.1595, -0.6089, -0.8639, -0.2754,\n", + " -0.3721, -0.5268, -0.3218, -0.1509, 0.7438, -1.1497, -0.5273, 0.3319,\n", + " -1.2719, -0.8643, 0.7668, 0.8966, 0.3132, -0.7417, -0.1096, 0.2249,\n", + " 1.7484, -0.4148, 1.1287, 0.4356, -0.0395, -0.4316, 1.5183, 0.9875,\n", + " 0.9299, -0.9016, -0.6162, -0.9838, -0.0333, 0.0940, 0.2870, 0.3449,\n", + " 0.5405, 0.0249, -0.1386]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2168, -0.2620, -0.0698, -0.2033, -0.0838, 0.0573, 0.0972, 0.2323,\n", + " 0.1241, 0.1629, 0.1522, -0.1182, -0.1177, -0.1922, -0.1614, -0.2299,\n", + " -0.1908, -0.0765, -0.0712, -0.1178, -0.0938, -0.0143, -0.0138, -0.0149,\n", + " -0.0337, 0.0414, 0.0159, -0.0164, -0.0883, -0.1614, -0.1524, -0.1274,\n", + " -0.1759, -0.2182, -0.1303, -0.1344, -0.0093, -0.0161, 0.0054, 0.2509,\n", + " 0.2817, 0.2577, 0.1983]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00014144121087156236\n", + "Grad encoder.fc1.bias: 0.00023187941405922174\n", + "Grad encoder.encoder.0.weight: 4.137071664445102e-05\n", + "Grad encoder.encoder.0.bias: 0.0002465967263560742\n", + "Grad encoder.encoder.2.weight: 3.090038080699742e-05\n", + "Grad encoder.encoder.2.bias: 0.0002812406455632299\n", + "Grad encoder.encoder.4.weight: 0.00010721392754931003\n", + "Grad encoder.encoder.4.bias: 0.0006536488654091954\n", + "Grad decoder.fc1.0.weight: 3.686916898004711e-05\n", + "Grad decoder.fc1.0.bias: 0.00028175185434520245\n", + "Grad decoder.fc1.2.weight: 4.4109423470217735e-05\n", + "Grad decoder.fc1.2.bias: 0.0002636720601003617\n", + "Grad decoder.fc1.4.weight: 4.35431174992118e-05\n", + "Grad decoder.fc1.4.bias: 0.0002871192409656942\n", + "Grad decoder.fc2.weight: 9.703981777420267e-05\n", + "Grad decoder.fc2.bias: 0.0016809784574434161\n", + "Grad _memory_unit.weight_ih_l0: 3.972250397055177e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.1868339899810962e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.1304677173029631e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.053588332273648e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.104150088503957e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.0496301405946724e-05\n", + "Data X Sample: tensor([[1.4788, 1.6342, 1.6844, 1.8301, 1.9311, 2.0744, 2.0013, 3.6527, 4.2888,\n", + " 4.3474, 4.3651, 4.2767, 4.1212, 4.0161, 3.8358, 3.6432, 3.6589, 3.6289,\n", + " 3.5456, 3.4832, 3.4817, 3.4859, 3.0098, 2.9031, 2.8603, 2.8809, 2.9064,\n", + " 3.0059, 2.8759, 3.1474, 3.1601, 3.3713, 3.6323, 2.7096, 4.5518, 4.8912,\n", + " 5.1364, 5.4595, 6.0659, 5.7764, 1.2170, 0.6592, 0.5922, 1.1252, 1.6055,\n", + " 1.7555, 1.2782, 1.6029]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.0958e-02, -3.7320e-01, -1.3546e+00, -4.1525e-01, -3.0357e-01,\n", + " 5.9559e-01, 9.7960e-01, 2.5007e-01, 5.2689e-01, 1.5721e-01,\n", + " 1.8323e-01, 1.3563e-01, -1.1625e+00, -3.6035e-01, -3.0826e-01,\n", + " 8.8505e-01, 8.4276e-01, -5.6082e-01, 2.9876e-01, 3.2009e-01,\n", + " -5.0121e-02, 1.1533e+00, 2.5628e+00, -2.0429e-01, 2.7830e-01,\n", + " 4.1114e+00, -2.3431e-01, -6.8263e-01, -4.1523e-01, -9.8441e-01,\n", + " -1.9873e-02, 1.9410e-01, -1.0670e-01, -3.4404e-01, 1.2172e+00,\n", + " -2.9027e-01, -2.6554e-04, 8.4603e-02, -1.0390e-02, 4.1546e-01,\n", + " 4.5275e-01, 6.3908e-01, -2.1577e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3155, -0.3403, -0.0920, -0.2326, -0.0728, 0.1067, 0.1721, 0.3335,\n", + " 0.1620, 0.2097, 0.2442, -0.1687, -0.1694, -0.2829, -0.2220, -0.2868,\n", + " -0.2154, -0.0957, -0.1173, -0.1472, -0.1387, -0.0030, 0.0006, 0.0157,\n", + " -0.0234, 0.0623, -0.0057, -0.0680, -0.1384, -0.2003, -0.2274, -0.1908,\n", + " -0.2314, -0.3197, -0.1679, -0.1861, -0.0117, -0.0384, 0.0267, 0.3540,\n", + " 0.3496, 0.3688, 0.2682]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 7.389886741293594e-05\n", + "Grad encoder.fc1.bias: 0.00019016290025319904\n", + "Grad encoder.encoder.0.weight: 1.765817796695046e-05\n", + "Grad encoder.encoder.0.bias: 0.00016171304741874337\n", + "Grad encoder.encoder.2.weight: 1.535526280349586e-05\n", + "Grad encoder.encoder.2.bias: 0.0001745044719427824\n", + "Grad encoder.encoder.4.weight: 5.3810646932106465e-05\n", + "Grad encoder.encoder.4.bias: 0.0002595562837086618\n", + "Grad decoder.fc1.0.weight: 2.201973802584689e-05\n", + "Grad decoder.fc1.0.bias: 0.00012680719373747706\n", + "Grad decoder.fc1.2.weight: 4.500710929278284e-05\n", + "Grad decoder.fc1.2.bias: 0.0003023508470505476\n", + "Grad decoder.fc1.4.weight: 5.050876279710792e-05\n", + "Grad decoder.fc1.4.bias: 0.0005592072266153991\n", + "Grad decoder.fc2.weight: 0.0001200174301629886\n", + "Grad decoder.fc2.bias: 0.0024966392666101456\n", + "Grad _memory_unit.weight_ih_l0: 1.9094927665719297e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.9074621933395974e-06\n", + "Grad _memory_unit.bias_hh_l0: 3.941093382309191e-06\n", + "Grad _memory_unit.weight_ih_l1: 8.024304634091095e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.1478064809343778e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.0837432455446105e-05\n", + "Data X Sample: tensor([[1.4353, 1.6590, 1.7791, 2.1166, 2.1941, 2.1230, 1.9197, 2.5496, 3.8348,\n", + " 4.4074, 4.2858, 4.2592, 4.1633, 4.0243, 3.7803, 3.6774, 3.6699, 3.6850,\n", + " 3.4424, 3.5762, 3.5945, 3.4323, 3.0653, 2.8439, 2.8040, 2.8574, 2.9224,\n", + " 3.0181, 3.0459, 3.0852, 3.1356, 3.2386, 3.7379, 2.7782, 4.6082, 4.8936,\n", + " 5.1030, 5.5814, 5.9264, 5.6799, 1.1025, 0.6731, 0.6467, 1.1711, 1.7878,\n", + " 2.1558, 1.3054, 2.0252]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4380, -0.5949, -0.7774, -0.3472, -0.5207, 0.9964, 0.2417, 0.1766,\n", + " 0.4065, 0.3189, 0.5477, -1.0256, -0.3077, -0.0475, 0.6645, -0.8966,\n", + " -1.4466, -0.4417, -0.5757, -0.4361, -0.1519, 0.4286, -0.4177, -0.4224,\n", + " -0.2412, 0.5804, -1.1940, -0.7903, -0.3913, -0.6689, -0.7736, -1.3220,\n", + " -0.5822, -0.9677, -0.0518, -1.1695, 0.0000, -0.3710, 1.1238, 0.3619,\n", + " 0.6593, 0.3638, 0.2748]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3378, -0.3577, -0.0991, -0.2400, -0.0714, 0.1209, 0.1898, 0.3576,\n", + " 0.1711, 0.2219, 0.2644, -0.1813, -0.1829, -0.3061, -0.2380, -0.3009,\n", + " -0.2224, -0.1030, -0.1269, -0.1532, -0.1507, -0.0016, 0.0043, 0.0230,\n", + " -0.0208, 0.0677, -0.0107, -0.0785, -0.1515, -0.2116, -0.2464, -0.2059,\n", + " -0.2455, -0.3440, -0.1787, -0.1982, -0.0126, -0.0423, 0.0291, 0.3771,\n", + " 0.3660, 0.3948, 0.2851]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 7.704482413828373e-05\n", + "Grad encoder.fc1.bias: 0.0008359105559065938\n", + "Grad encoder.encoder.0.weight: 2.8378759452607483e-05\n", + "Grad encoder.encoder.0.bias: 0.00044631914352066815\n", + "Grad encoder.encoder.2.weight: 2.1432893845485523e-05\n", + "Grad encoder.encoder.2.bias: 0.00032769489916972816\n", + "Grad encoder.encoder.4.weight: 4.760474985232577e-05\n", + "Grad encoder.encoder.4.bias: 0.00046502621262334287\n", + "Grad decoder.fc1.0.weight: 2.474362190696411e-05\n", + "Grad decoder.fc1.0.bias: 0.00018918939167633653\n", + "Grad decoder.fc1.2.weight: 3.1720377592137083e-05\n", + "Grad decoder.fc1.2.bias: 0.00023260500165633857\n", + "Grad decoder.fc1.4.weight: 2.887957998609636e-05\n", + "Grad decoder.fc1.4.bias: 0.00037781870923936367\n", + "Grad decoder.fc2.weight: 8.891426114132628e-05\n", + "Grad decoder.fc2.bias: 0.0014813303714618087\n", + "Grad _memory_unit.weight_ih_l0: 3.5817429306916893e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.2710291887051426e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.1235042620683089e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.108621972889523e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.204206197755411e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.06215372600127e-05\n", + "Data X Sample: tensor([[1.2741, 1.3779, 1.6514, 1.7886, 1.8970, 2.0081, 2.3172, 2.1067, 3.3735,\n", + " 4.0994, 4.3429, 4.3585, 4.0524, 3.9234, 3.8560, 3.5638, 3.6794, 3.4606,\n", + " 3.6200, 3.6469, 3.4817, 3.3726, 2.9640, 2.8439, 2.8434, 2.8652, 2.8904,\n", + " 2.9488, 3.0494, 3.3112, 3.4120, 3.4403, 3.8699, 2.9018, 4.7528, 4.8985,\n", + " 5.2407, 5.3403, 5.9264, 5.8416, 0.8782, 0.5636, 0.5901, 1.0907, 1.5302,\n", + " 1.7155, 1.1422, 1.6577]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5811, -0.9406, -0.4162, -1.3028, -0.0155, 0.5095, 0.4229, 0.1866,\n", + " -0.2182, 0.1063, 0.4104, -0.4877, -0.6552, 0.1400, -0.7238, -0.7124,\n", + " -0.5874, -0.4237, 0.3506, -0.3201, 0.2976, -0.1610, -0.2861, -0.1719,\n", + " 0.4258, -0.1766, 0.0087, -0.7005, 0.3743, -0.7779, -0.0884, -0.4424,\n", + " -0.7788, -0.0810, -0.4106, -0.4261, -0.5893, 0.1123, 0.9794, 0.3375,\n", + " 0.5088, 0.3684, 0.6363]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3571, -0.3721, -0.1063, -0.2459, -0.0703, 0.1342, 0.2057, 0.3783,\n", + " 0.1794, 0.2330, 0.2821, -0.1933, -0.1936, -0.3268, -0.2524, -0.3134,\n", + " -0.2289, -0.1093, -0.1359, -0.1568, -0.1596, -0.0011, 0.0084, 0.0289,\n", + " -0.0192, 0.0728, -0.0146, -0.0875, -0.1638, -0.2220, -0.2632, -0.2200,\n", + " -0.2579, -0.3652, -0.1874, -0.2096, -0.0135, -0.0455, 0.0309, 0.3970,\n", + " 0.3812, 0.4174, 0.3004]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00021216075401753187\n", + "Grad encoder.fc1.bias: 0.0003371468628756702\n", + "Grad encoder.encoder.0.weight: 5.504948057932779e-05\n", + "Grad encoder.encoder.0.bias: 0.00029596115928143263\n", + "Grad encoder.encoder.2.weight: 3.339747490826994e-05\n", + "Grad encoder.encoder.2.bias: 0.00022096914472058415\n", + "Grad encoder.encoder.4.weight: 0.00010061361535917968\n", + "Grad encoder.encoder.4.bias: 0.0005013598711229861\n", + "Grad decoder.fc1.0.weight: 3.824482701020315e-05\n", + "Grad decoder.fc1.0.bias: 0.00015192193677648902\n", + "Grad decoder.fc1.2.weight: 4.7000881750136614e-05\n", + "Grad decoder.fc1.2.bias: 0.00019641758990474045\n", + "Grad decoder.fc1.4.weight: 5.8276600611861795e-05\n", + "Grad decoder.fc1.4.bias: 0.0004734481335617602\n", + "Grad decoder.fc2.weight: 0.0001073401581379585\n", + "Grad decoder.fc2.bias: 0.0016422334592789412\n", + "Grad _memory_unit.weight_ih_l0: 3.1493359529122245e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.251160579675343e-06\n", + "Grad _memory_unit.bias_hh_l0: 4.278949290892342e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.3095043414068641e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.5935936466557905e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.870280539151281e-05\n", + "Data X Sample: tensor([[1.4693, 1.4652, 1.5732, 1.7842, 1.8372, 1.8902, 2.0984, 2.0173, 3.7518,\n", + " 4.0409, 4.3651, 4.2942, 4.1855, 3.9370, 3.8686, 3.6979, 3.7501, 3.6037,\n", + " 3.5580, 3.6413, 3.5749, 3.6910, 3.2267, 3.0062, 2.8734, 2.9201, 2.7972,\n", + " 2.8346, 3.0355, 3.1540, 3.3560, 3.3630, 3.7665, 2.8126, 4.6253, 4.9399,\n", + " 5.1954, 5.5205, 6.0088, 5.9665, 1.0118, 0.5994, 0.5618, 1.1051, 1.5579,\n", + " 1.8184, 1.1830, 1.6499]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.8894e-01, -7.4265e-01, -6.5714e-01, -6.8658e-01, -7.3660e-01,\n", + " 6.8723e-01, 7.3109e-02, 5.4469e-01, 4.2005e-01, 4.6870e-01,\n", + " 7.8571e-02, -3.8288e-01, 1.3556e+00, -9.1537e-01, -6.8272e-01,\n", + " -5.8889e-01, 6.2600e-01, -1.4587e-01, 6.7631e+00, 2.5443e+00,\n", + " -7.3248e-01, -1.6912e+00, -2.0402e+00, 2.1710e-01, 5.3331e-01,\n", + " 3.5807e-01, 5.6895e-03, 2.8363e-01, -6.6626e-01, -6.0826e-01,\n", + " -5.7036e-01, -6.8529e-01, -5.3561e-01, -1.9238e-01, -4.1682e-01,\n", + " -3.5043e-01, -5.6850e-01, -1.3986e-02, -5.5624e-01, 3.2848e-01,\n", + " 4.6556e-02, 5.5817e-01, 9.5867e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3741, -0.3857, -0.1126, -0.2525, -0.0700, 0.1467, 0.2203, 0.3971,\n", + " 0.1866, 0.2436, 0.2984, -0.2038, -0.2031, -0.3455, -0.2650, -0.3246,\n", + " -0.2357, -0.1144, -0.1436, -0.1601, -0.1663, -0.0012, 0.0113, 0.0336,\n", + " -0.0168, 0.0772, -0.0173, -0.0950, -0.1759, -0.2328, -0.2784, -0.2338,\n", + " -0.2691, -0.3835, -0.1945, -0.2200, -0.0150, -0.0474, 0.0324, 0.4144,\n", + " 0.3951, 0.4383, 0.3140]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001051986328093335\n", + "Grad encoder.fc1.bias: 0.00012397044338285923\n", + "Grad encoder.encoder.0.weight: 3.780422412091866e-05\n", + "Grad encoder.encoder.0.bias: 0.000146277598105371\n", + "Grad encoder.encoder.2.weight: 2.3508069716626778e-05\n", + "Grad encoder.encoder.2.bias: 0.00012049521319568157\n", + "Grad encoder.encoder.4.weight: 9.282414976041764e-05\n", + "Grad encoder.encoder.4.bias: 0.00034065934596583247\n", + "Grad decoder.fc1.0.weight: 3.7490870454348624e-05\n", + "Grad decoder.fc1.0.bias: 0.0001040050556184724\n", + "Grad decoder.fc1.2.weight: 6.036591366864741e-05\n", + "Grad decoder.fc1.2.bias: 0.0001966811396414414\n", + "Grad decoder.fc1.4.weight: 5.911322296014987e-05\n", + "Grad decoder.fc1.4.bias: 0.0003624918754212558\n", + "Grad decoder.fc2.weight: 8.87553978827782e-05\n", + "Grad decoder.fc2.bias: 0.00181621836964041\n", + "Grad _memory_unit.weight_ih_l0: 1.9008415392818279e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.264829946507234e-06\n", + "Grad _memory_unit.bias_hh_l0: 3.7368768062151503e-06\n", + "Grad _memory_unit.weight_ih_l1: 9.374270462103595e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.4367594960494898e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.2066069757565856e-05\n", + "Data X Sample: tensor([[1.5806, 1.7478, 1.8858, 1.9854, 2.1019, 2.2305, 2.3064, 2.4332, 2.5508,\n", + " 2.5339, 2.6996, 2.4967, 2.4967, 2.4593, 2.4841, 2.4301, 2.3538, 2.3909,\n", + " 2.5007, 2.3934, 2.4143, 2.5337, 2.4074, 2.3916, 2.3460, 2.4265, 2.3603,\n", + " 2.3615, 2.2307, 2.3352, 2.3587, 2.2300, 2.2308, 1.4006, 1.9389, 1.7463,\n", + " 1.6007, 1.4974, 1.5466, 1.5406, 1.2647, 0.7707, 0.6952, 1.2744, 1.9147,\n", + " 1.9042, 1.3870, 1.9470]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7012, -0.0104, -0.2999, -1.1438, 0.4466, -0.8121, -0.7590, -0.6490,\n", + " 0.3846, -0.2289, -0.6454, -0.8884, -0.3909, -0.4904, -0.1410, -0.2756,\n", + " -0.1864, -1.1553, -0.2777, -2.0420, -0.5427, -0.2269, 1.4333, -0.7841,\n", + " 0.2878, -1.0569, 0.0195, 0.7262, 1.3052, 0.7909, 0.7150, 0.5641,\n", + " 0.9877, 0.0895, 0.0883, 1.2535, -0.8471, 0.2324, 0.4404, -0.6306,\n", + " -0.8293, -0.7833, -0.6915]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3929, 0.3014, 0.0606, 0.2662, 0.0808, -0.1256, -0.3390, -0.4139,\n", + " -0.1676, -0.2610, -0.2518, 0.1656, 0.1653, 0.2610, 0.1424, 0.2598,\n", + " 0.1929, 0.1085, 0.0687, 0.1280, 0.0905, 0.0860, 0.1442, 0.0299,\n", + " 0.0033, -0.0267, -0.0523, 0.0303, 0.1939, 0.2891, 0.2339, 0.1696,\n", + " 0.2922, 0.2728, 0.1507, 0.1789, -0.0038, -0.0301, -0.0055, -0.2820,\n", + " -0.2630, -0.2987, -0.2609]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00024198343453463167\n", + "Grad encoder.fc1.bias: 0.0001528873690403998\n", + "Grad encoder.encoder.0.weight: 6.580878107342869e-05\n", + "Grad encoder.encoder.0.bias: 0.00019704608712345362\n", + "Grad encoder.encoder.2.weight: 4.551668098429218e-05\n", + "Grad encoder.encoder.2.bias: 0.00018564783385954797\n", + "Grad encoder.encoder.4.weight: 0.0001493663585279137\n", + "Grad encoder.encoder.4.bias: 0.00043517592712305486\n", + "Grad decoder.fc1.0.weight: 4.5194778067525476e-05\n", + "Grad decoder.fc1.0.bias: 0.00013330401270650327\n", + "Grad decoder.fc1.2.weight: 4.8874680942390114e-05\n", + "Grad decoder.fc1.2.bias: 0.00020890489395242184\n", + "Grad decoder.fc1.4.weight: 4.850031837122515e-05\n", + "Grad decoder.fc1.4.bias: 0.0004754706169478595\n", + "Grad decoder.fc2.weight: 9.350622713100165e-05\n", + "Grad decoder.fc2.bias: 0.0019135571783408523\n", + "Grad _memory_unit.weight_ih_l0: 1.1912512718481594e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.676238864296465e-06\n", + "Grad _memory_unit.bias_hh_l0: 1.4853710581519408e-06\n", + "Grad _memory_unit.weight_ih_l1: 6.072583573768497e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.6243404136039317e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.2875526408606675e-05\n", + "Data X Sample: tensor([[ 0.0202, 0.0073, 0.0301, 0.0350, 0.0120, 0.0280, 0.0169, 0.0156,\n", + " 0.0537, 0.0284, 0.0412, 0.0097, 0.0155, 0.0027, 0.0202, 0.0150,\n", + " -0.0833, -0.1045, -0.1446, -0.1544, -0.1448, -0.0949, -0.2048, -0.1928,\n", + " -0.1408, -0.2873, -0.3117, -0.5221, -0.0659, -0.0590, -0.1295, -0.0553,\n", + " -0.0550, -0.0778, -0.0564, -0.0170, -0.0118, -0.0318, 0.0063, -0.0369,\n", + " -0.0239, 0.0139, 0.0020, -0.0057, -0.0238, 0.0286, 0.0272, 0.0469]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.9840, 1.0873, 1.0712, 0.4001, -1.2658, -0.4951, -1.3550, -0.9002,\n", + " 0.0928, -0.7283, -0.6894, -0.3511, 0.8529, 0.9206, 0.1926, 0.7881,\n", + " 1.2018, -0.3840, -0.7803, 0.1020, -0.2290, -0.1525, -0.0945, -0.0249,\n", + " 0.2841, -0.7167, -2.7168, 1.2640, 1.7576, 0.9376, 0.8000, -0.1586,\n", + " 2.2202, 1.0265, 0.6016, -0.1527, 0.4497, -0.0869, -0.4066, -0.7743,\n", + " -0.4219, -0.1580, -0.9593]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5994, 0.5106, 0.1524, 0.4383, 0.0808, -0.2388, -0.5906, -0.7399,\n", + " -0.2616, -0.3851, -0.3413, 0.2945, 0.2789, 0.4178, 0.2506, 0.3767,\n", + " 0.3723, 0.2068, 0.1264, 0.2168, 0.1380, 0.0947, 0.1343, 0.0485,\n", + " 0.0460, 0.0246, -0.0737, 0.0974, 0.3780, 0.4806, 0.4419, 0.2880,\n", + " 0.4617, 0.4597, 0.2346, 0.2320, 0.0440, 0.0216, -0.0444, -0.4535,\n", + " -0.4433, -0.4809, -0.4203]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 6.672812742181122e-05\n", + "Grad encoder.fc1.bias: 0.00018384285795036703\n", + "Grad encoder.encoder.0.weight: 2.2609874577028677e-05\n", + "Grad encoder.encoder.0.bias: 0.00016058202891144902\n", + "Grad encoder.encoder.2.weight: 1.631252780498471e-05\n", + "Grad encoder.encoder.2.bias: 0.00023401483485940844\n", + "Grad encoder.encoder.4.weight: 5.053735731053166e-05\n", + "Grad encoder.encoder.4.bias: 0.0006763093988411129\n", + "Grad decoder.fc1.0.weight: 2.6663768949219957e-05\n", + "Grad decoder.fc1.0.bias: 0.0002621327294036746\n", + "Grad decoder.fc1.2.weight: 4.775022534886375e-05\n", + "Grad decoder.fc1.2.bias: 0.0002904214197769761\n", + "Grad decoder.fc1.4.weight: 4.220125265419483e-05\n", + "Grad decoder.fc1.4.bias: 0.0003660168149508536\n", + "Grad decoder.fc2.weight: 0.00011390317376935855\n", + "Grad decoder.fc2.bias: 0.0019679635297507048\n", + "Grad _memory_unit.weight_ih_l0: 3.0419384984270437e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.294408841407858e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.1910977264051326e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.8405947912469856e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.145690713310614e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.095826832577586e-05\n", + "Data X Sample: tensor([[1.7154, 2.0231, 2.4132, 2.5233, 2.6653, 2.8095, 2.9843, 3.0096, 2.9512,\n", + " 2.8798, 3.0232, 2.9290, 2.7918, 2.6474, 2.5320, 2.5519, 2.4859, 2.4895,\n", + " 2.4987, 2.3451, 2.3677, 2.2887, 2.1760, 2.1893, 2.0082, 1.9563, 2.0033,\n", + " 2.0434, 1.4987, 1.5229, 1.4383, 1.4176, 1.3244, 0.9589, 1.5075, 1.6831,\n", + " 1.9036, 2.2978, 2.5607, 2.5449, 1.3745, 0.8205, 0.8023, 1.6332, 2.2873,\n", + " 2.4874, 1.6793, 2.4709]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.8583, -1.1600, -0.8038, -0.9334, -0.7188, -0.5265, 0.0604, 0.6121,\n", + " 1.0742, 0.8564, 1.0463, -0.5555, 0.2467, -0.7087, -0.3305, -0.6941,\n", + " -1.0259, -0.3644, 0.2480, -0.3763, -0.1193, -0.1638, 0.3079, 0.0405,\n", + " 0.2293, -0.0707, 0.6447, 0.6623, 0.9533, -0.1375, -0.2248, -0.2930,\n", + " 0.5864, 0.0946, -0.7382, 1.4157, 0.4958, 0.7101, 0.3857, 1.4435,\n", + " 0.8979, 1.4727, 1.2168]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2984, -0.3118, -0.1097, -0.2641, -0.1441, 0.0454, 0.0913, 0.3730,\n", + " 0.1304, 0.2527, 0.2213, -0.1940, -0.1270, -0.2884, -0.1939, -0.2679,\n", + " -0.2318, -0.0971, -0.0388, -0.1078, -0.0884, 0.0109, -0.0404, -0.0447,\n", + " 0.0125, 0.0786, 0.0458, 0.0354, -0.1223, -0.2168, -0.1591, -0.1878,\n", + " -0.1886, -0.2640, -0.1153, -0.1790, 0.0202, -0.0225, -0.0251, 0.4340,\n", + " 0.4540, 0.4136, 0.3524]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 9.456165571464226e-05\n", + "Grad encoder.fc1.bias: 4.82417453895323e-05\n", + "Grad encoder.encoder.0.weight: 3.272816684329882e-05\n", + "Grad encoder.encoder.0.bias: 4.61362797068432e-05\n", + "Grad encoder.encoder.2.weight: 1.88295089174062e-05\n", + "Grad encoder.encoder.2.bias: 8.318259642692283e-05\n", + "Grad encoder.encoder.4.weight: 7.428126991726458e-05\n", + "Grad encoder.encoder.4.bias: 0.0003179139457643032\n", + "Grad decoder.fc1.0.weight: 3.105941505054943e-05\n", + "Grad decoder.fc1.0.bias: 0.000122825222206302\n", + "Grad decoder.fc1.2.weight: 8.413485193159431e-05\n", + "Grad decoder.fc1.2.bias: 0.00021073731477372348\n", + "Grad decoder.fc1.4.weight: 6.333086639642715e-05\n", + "Grad decoder.fc1.4.bias: 0.0002960910205729306\n", + "Grad decoder.fc2.weight: 7.95034648035653e-05\n", + "Grad decoder.fc2.bias: 0.0019400205928832293\n", + "Grad _memory_unit.weight_ih_l0: 1.3081404404147179e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.0583753464743495e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.42751240573125e-06\n", + "Grad _memory_unit.weight_ih_l1: 9.629873147787293e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.953570037789177e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.4717682461196091e-05\n", + "Data X Sample: tensor([[1.3059, 1.4638, 1.4560, 1.6618, 1.7723, 1.9344, 1.9859, 2.0357, 3.4589,\n", + " 4.0488, 4.0859, 3.9787, 3.9303, 3.8007, 3.6946, 3.4216, 3.4105, 3.4645,\n", + " 3.5043, 3.4014, 3.3884, 3.2409, 3.0243, 2.8878, 2.8152, 2.8966, 2.9224,\n", + " 2.9162, 2.8725, 2.9804, 3.0936, 3.1032, 3.4387, 2.5128, 4.2184, 4.5993,\n", + " 4.7903, 5.2978, 5.7236, 5.6714, 1.0834, 0.5417, 0.5679, 0.9386, 1.3875,\n", + " 1.5782, 0.9926, 1.4778]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4383, -0.8122, -0.2609, -0.7260, -1.7441, -0.4717, 0.1163, 0.4738,\n", + " -0.2487, 0.6490, 0.7389, -0.4165, -0.6032, -0.5655, 0.1879, -0.6289,\n", + " -0.7987, -0.4514, 0.1256, -1.4720, -0.0791, 1.4202, -1.3307, 0.1123,\n", + " -2.5855, 1.5843, 2.2983, 1.2734, 0.6491, 0.8001, 0.1969, -0.2904,\n", + " -0.6856, -0.4684, -0.0956, -0.1983, -0.6687, 0.7450, -0.0231, 0.7559,\n", + " 0.7776, 1.0045, 1.4243]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3328, -0.3491, -0.1075, -0.2443, -0.0863, 0.1320, 0.1837, 0.3625,\n", + " 0.1667, 0.2335, 0.2589, -0.1935, -0.1825, -0.3194, -0.2439, -0.3042,\n", + " -0.2382, -0.1079, -0.1127, -0.1437, -0.1441, -0.0142, -0.0008, 0.0123,\n", + " -0.0149, 0.0733, -0.0033, -0.0650, -0.1664, -0.2283, -0.2477, -0.2184,\n", + " -0.2507, -0.3430, -0.1734, -0.1996, -0.0113, -0.0326, 0.0113, 0.3795,\n", + " 0.3810, 0.4035, 0.2975]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001203004940180108\n", + "Grad encoder.fc1.bias: 0.0006108625093474984\n", + "Grad encoder.encoder.0.weight: 2.8848597139585763e-05\n", + "Grad encoder.encoder.0.bias: 0.00038603012217208743\n", + "Grad encoder.encoder.2.weight: 2.9959748644614592e-05\n", + "Grad encoder.encoder.2.bias: 0.00027401826810091734\n", + "Grad encoder.encoder.4.weight: 0.00010254387598251924\n", + "Grad encoder.encoder.4.bias: 0.00033690137206576765\n", + "Grad decoder.fc1.0.weight: 3.3271455322392285e-05\n", + "Grad decoder.fc1.0.bias: 0.0001502240775153041\n", + "Grad decoder.fc1.2.weight: 5.062782292952761e-05\n", + "Grad decoder.fc1.2.bias: 0.0002104521554429084\n", + "Grad decoder.fc1.4.weight: 5.420299567049369e-05\n", + "Grad decoder.fc1.4.bias: 0.0004889292176812887\n", + "Grad decoder.fc2.weight: 0.00010518768976908177\n", + "Grad decoder.fc2.bias: 0.00198877090588212\n", + "Grad _memory_unit.weight_ih_l0: 2.505485326764756e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.997776032832917e-06\n", + "Grad _memory_unit.bias_hh_l0: 5.120576588524273e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.0066986533274758e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.985327591886744e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.5021944818727206e-05\n", + "Data X Sample: tensor([[1.5796, 1.7245, 1.8497, 1.9045, 2.0284, 2.2924, 2.2663, 2.4417, 2.3873,\n", + " 2.4249, 2.5442, 2.5337, 2.3879, 2.4565, 2.4942, 2.2852, 2.2737, 2.4199,\n", + " 2.3438, 2.4046, 2.5125, 2.5122, 2.4026, 2.5176, 2.4962, 2.5283, 2.4322,\n", + " 2.3778, 2.2203, 2.3024, 2.2677, 2.2549, 2.2792, 1.4532, 1.9315, 1.7658,\n", + " 1.6282, 1.4974, 1.5339, 1.6001, 1.2600, 0.6831, 0.6811, 1.2687, 1.8116,\n", + " 1.9213, 1.3190, 1.8844]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.0505, 1.6079, -0.2793, 0.5396, -0.5251, -1.1041, -1.3283, -1.1098,\n", + " -0.7263, -0.9161, -0.8775, 1.1187, 0.3985, 0.1238, 0.2868, 1.2922,\n", + " 0.6887, 0.3334, 0.1744, 0.1491, 1.1347, -0.5294, 0.1338, -0.1416,\n", + " -1.5549, 0.6318, 1.0196, 1.1537, 0.7665, 0.8307, 0.7268, 0.9142,\n", + " 0.8596, 0.7992, -0.0825, 0.7326, -0.6348, -0.3227, -0.0231, -0.7335,\n", + " -0.8565, -0.7230, -0.3387]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5097, 0.4096, 0.0858, 0.3992, 0.1482, -0.1204, -0.4184, -0.5277,\n", + " -0.2288, -0.3451, -0.3179, 0.2224, 0.2341, 0.3468, 0.1831, 0.3718,\n", + " 0.2788, 0.1677, 0.1020, 0.1864, 0.1309, 0.1257, 0.2015, 0.0514,\n", + " 0.0180, -0.0416, -0.0857, 0.0174, 0.2307, 0.3870, 0.2877, 0.2324,\n", + " 0.3608, 0.3605, 0.2211, 0.2557, -0.0149, -0.0293, -0.0108, -0.3822,\n", + " -0.3729, -0.4045, -0.3722]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002458880189806223\n", + "Grad encoder.fc1.bias: 0.00017019057122524828\n", + "Grad encoder.encoder.0.weight: 6.047445276635699e-05\n", + "Grad encoder.encoder.0.bias: 0.0002236374857602641\n", + "Grad encoder.encoder.2.weight: 3.348361497046426e-05\n", + "Grad encoder.encoder.2.bias: 0.00020453202887438238\n", + "Grad encoder.encoder.4.weight: 0.00010545771510805935\n", + "Grad encoder.encoder.4.bias: 0.0005478623788803816\n", + "Grad decoder.fc1.0.weight: 3.3004802389768884e-05\n", + "Grad decoder.fc1.0.bias: 0.00015586509834975004\n", + "Grad decoder.fc1.2.weight: 3.0263101507443935e-05\n", + "Grad decoder.fc1.2.bias: 0.0001514288451289758\n", + "Grad decoder.fc1.4.weight: 3.0481405701721087e-05\n", + "Grad decoder.fc1.4.bias: 0.00035888771526515484\n", + "Grad decoder.fc2.weight: 8.155998511938378e-05\n", + "Grad decoder.fc2.bias: 0.0022735625971108675\n", + "Grad _memory_unit.weight_ih_l0: 1.8212623444924247e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.030414730659686e-06\n", + "Grad _memory_unit.bias_hh_l0: 4.643230568035506e-06\n", + "Grad _memory_unit.weight_ih_l1: 9.145096555585042e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.3244738006033e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.6707917893654667e-05\n", + "Data X Sample: tensor([[1.4512, 1.5759, 1.6484, 1.8083, 1.9636, 2.0729, 2.1985, 2.1408, 2.3238,\n", + " 3.6176, 4.1716, 4.1579, 3.8859, 3.7680, 3.6189, 3.4722, 3.4246, 3.3058,\n", + " 3.3267, 3.2359, 3.3811, 3.3313, 2.6869, 2.7981, 2.7908, 2.8235, 2.8105,\n", + " 2.9978, 2.8239, 3.0197, 3.0061, 3.1308, 3.5465, 2.5677, 4.2748, 4.6626,\n", + " 4.9260, 5.2740, 5.8567, 5.7622, 1.1025, 0.6651, 0.6326, 1.0592, 1.7125,\n", + " 1.8241, 1.1830, 1.7359]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3035, -0.3359, -0.7423, 0.0827, 0.6747, -0.1874, -0.0033, 0.7350,\n", + " 0.8209, 0.5013, 0.5346, 0.5683, -0.2279, -0.7246, -1.1500, -0.6683,\n", + " 0.6452, -0.3347, -0.9721, -0.5855, 0.5291, 2.1389, -1.7209, -0.8155,\n", + " -1.2991, -1.3153, -0.5834, 0.7060, 0.2333, 0.1148, -0.5216, -0.6434,\n", + " -0.6572, -0.9162, -0.9616, -0.2972, -0.5075, -0.0140, -0.2578, 0.3871,\n", + " 0.6074, 0.7633, 0.9775]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2919, -0.3184, -0.0994, -0.2248, -0.0833, 0.1237, 0.1622, 0.3169,\n", + " 0.1564, 0.2118, 0.2231, -0.1722, -0.1681, -0.2840, -0.2255, -0.2851,\n", + " -0.2289, -0.1002, -0.1024, -0.1357, -0.1321, -0.0257, -0.0029, 0.0056,\n", + " -0.0215, 0.0661, -0.0051, -0.0577, -0.1527, -0.2146, -0.2277, -0.1960,\n", + " -0.2385, -0.3094, -0.1649, -0.1784, -0.0173, -0.0215, 0.0048, 0.3256,\n", + " 0.3409, 0.3536, 0.2616]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00026308081578463316\n", + "Grad encoder.fc1.bias: 0.0002348714624531567\n", + "Grad encoder.encoder.0.weight: 6.828050391050056e-05\n", + "Grad encoder.encoder.0.bias: 0.00026579134282656014\n", + "Grad encoder.encoder.2.weight: 4.704804450739175e-05\n", + "Grad encoder.encoder.2.bias: 0.00025280550471507013\n", + "Grad encoder.encoder.4.weight: 0.00018143499619327486\n", + "Grad encoder.encoder.4.bias: 0.0007285356987267733\n", + "Grad decoder.fc1.0.weight: 5.2049941587029025e-05\n", + "Grad decoder.fc1.0.bias: 0.00019062803767155856\n", + "Grad decoder.fc1.2.weight: 5.326692189555615e-05\n", + "Grad decoder.fc1.2.bias: 0.0002322684449609369\n", + "Grad decoder.fc1.4.weight: 5.402848910307512e-05\n", + "Grad decoder.fc1.4.bias: 0.00042277894681319594\n", + "Grad decoder.fc2.weight: 0.00012175408483017236\n", + "Grad decoder.fc2.bias: 0.002619299339130521\n", + "Grad _memory_unit.weight_ih_l0: 3.5575046695157653e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.1993473890470341e-05\n", + "Grad _memory_unit.bias_hh_l0: 6.281710284383735e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.4677834769827314e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.1453913329169154e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.6146590244024992e-05\n", + "Data X Sample: tensor([[1.4173, 1.6211, 1.8107, 1.8914, 2.0267, 2.1731, 2.1677, 2.1536, 3.4980,\n", + " 4.3774, 4.3112, 4.2942, 4.1434, 3.8416, 3.7728, 4.0261, 3.8759, 3.6966,\n", + " 3.6984, 3.5669, 3.4939, 3.3052, 2.8291, 2.8382, 2.8115, 3.0429, 2.9890,\n", + " 3.0018, 3.0459, 3.2653, 3.3210, 3.4072, 3.8809, 2.8858, 4.6792, 5.0980,\n", + " 5.2623, 5.6742, 6.1609, 5.9807, 1.1407, 0.6910, 0.6588, 1.1080, 1.6689,\n", + " 1.8070, 1.3190, 1.6889]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.8269, -0.9740, 0.1419, -0.2569, -1.0037, 0.0663, 0.4851, 0.2063,\n", + " -0.2427, 0.5223, 0.5009, -1.2786, -0.2256, -0.4639, -0.1733, 0.2725,\n", + " 0.6307, -0.0129, -2.3376, 0.1133, 0.3242, -1.4469, 1.0740, -1.3077,\n", + " -0.6986, -1.9491, 0.4296, 0.5773, 0.1584, 0.1624, -0.2346, -0.7139,\n", + " -0.1794, -0.1111, -0.7118, -0.2027, 0.2552, 0.0705, 0.0000, 0.5661,\n", + " 0.6083, 0.4924, 0.4721]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3140, -0.3363, -0.1069, -0.2301, -0.0812, 0.1395, 0.1815, 0.3419,\n", + " 0.1678, 0.2250, 0.2449, -0.1865, -0.1808, -0.3068, -0.2403, -0.2993,\n", + " -0.2356, -0.1054, -0.1136, -0.1427, -0.1413, -0.0271, -0.0005, 0.0109,\n", + " -0.0186, 0.0727, -0.0132, -0.0706, -0.1693, -0.2267, -0.2478, -0.2137,\n", + " -0.2561, -0.3340, -0.1740, -0.1912, -0.0193, -0.0236, 0.0065, 0.3487,\n", + " 0.3573, 0.3812, 0.2792]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 9.131602564593777e-05\n", + "Grad encoder.fc1.bias: 0.00037241604877635837\n", + "Grad encoder.encoder.0.weight: 2.0703206246253103e-05\n", + "Grad encoder.encoder.0.bias: 0.00037470285315066576\n", + "Grad encoder.encoder.2.weight: 2.1681680664187297e-05\n", + "Grad encoder.encoder.2.bias: 0.0003374173247721046\n", + "Grad encoder.encoder.4.weight: 8.996773976832628e-05\n", + "Grad encoder.encoder.4.bias: 0.0008046231232583523\n", + "Grad decoder.fc1.0.weight: 3.3864045690279454e-05\n", + "Grad decoder.fc1.0.bias: 0.0002234336279798299\n", + "Grad decoder.fc1.2.weight: 4.0173537854570895e-05\n", + "Grad decoder.fc1.2.bias: 0.00025106564862653613\n", + "Grad decoder.fc1.4.weight: 5.017765215598047e-05\n", + "Grad decoder.fc1.4.bias: 0.0004250416241120547\n", + "Grad decoder.fc2.weight: 0.00013370976375881582\n", + "Grad decoder.fc2.bias: 0.002339995699003339\n", + "Grad _memory_unit.weight_ih_l0: 4.112986516702222e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.8836108210962266e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.703518117021304e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.901635414469638e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.313039921224117e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.2102714612847194e-05\n", + "Data X Sample: tensor([[1.6835, 1.7857, 1.8467, 1.9635, 2.1582, 2.0758, 1.9104, 3.7052, 4.2058,\n", + " 4.2968, 4.4222, 4.3332, 4.1611, 4.1251, 3.9089, 3.7731, 3.6856, 3.6656,\n", + " 3.6365, 3.4684, 3.5381, 3.3435, 2.9424, 2.8039, 2.8246, 2.9149, 2.9197,\n", + " 3.0181, 3.0598, 3.2981, 3.2790, 3.3878, 3.7203, 2.7462, 4.5837, 4.8280,\n", + " 5.2505, 5.6026, 6.1102, 6.0232, 1.2409, 0.7109, 0.6467, 1.2343, 1.8077,\n", + " 1.8012, 1.1694, 1.8766]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0287, -0.0229, 0.5591, 1.2601, 0.5737, -0.6119, 0.5280, 0.7566,\n", + " -0.6693, -0.5898, -0.6168, -0.6278, -0.7556, -0.7136, 0.4295, -0.9711,\n", + " -0.0879, 0.1409, -0.5623, -1.0063, -1.6393, -1.5097, 0.0984, -0.4550,\n", + " -0.6237, 0.2389, 0.4183, 0.5360, -0.9799, -0.1386, 0.3406, -1.4453,\n", + " -0.3840, 0.9440, -0.7966, -0.1390, -0.3615, 0.0940, 0.0545, -0.4364,\n", + " -0.8655, -0.7026, 0.0107]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2738, -0.3042, -0.0989, -0.2171, -0.0852, 0.1186, 0.1507, 0.3001,\n", + " 0.1529, 0.2056, 0.2064, -0.1642, -0.1590, -0.2683, -0.2151, -0.2741,\n", + " -0.2248, -0.0989, -0.0955, -0.1327, -0.1236, -0.0329, -0.0076, -0.0038,\n", + " -0.0233, 0.0643, -0.0044, -0.0497, -0.1475, -0.2090, -0.2159, -0.1862,\n", + " -0.2344, -0.2920, -0.1586, -0.1689, -0.0199, -0.0140, -0.0028, 0.3060,\n", + " 0.3295, 0.3351, 0.2500]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00015403081488329917\n", + "Grad encoder.fc1.bias: 0.00015510023513343185\n", + "Grad encoder.encoder.0.weight: 4.503030504565686e-05\n", + "Grad encoder.encoder.0.bias: 0.00016963902453426272\n", + "Grad encoder.encoder.2.weight: 2.465592115186155e-05\n", + "Grad encoder.encoder.2.bias: 0.00014727175584994256\n", + "Grad encoder.encoder.4.weight: 8.983199950307608e-05\n", + "Grad encoder.encoder.4.bias: 0.0004820290196221322\n", + "Grad decoder.fc1.0.weight: 3.886810736730695e-05\n", + "Grad decoder.fc1.0.bias: 0.00014017478679306805\n", + "Grad decoder.fc1.2.weight: 5.2537667215801775e-05\n", + "Grad decoder.fc1.2.bias: 0.00017578693223185837\n", + "Grad decoder.fc1.4.weight: 5.5075772252166644e-05\n", + "Grad decoder.fc1.4.bias: 0.00033199175959452987\n", + "Grad decoder.fc2.weight: 8.963175787357613e-05\n", + "Grad decoder.fc2.bias: 0.0019824050832539797\n", + "Grad _memory_unit.weight_ih_l0: 4.146835635765456e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.653986328165047e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.52782522997586e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.4911655625837739e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.655545151559636e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.8496742995921522e-05\n", + "Data X Sample: tensor([[ 0.0085, 0.0044, 0.0195, 0.0175, 0.0051, 0.0309, 0.0262, 0.0071,\n", + " 0.0415, 0.0158, 0.0254, 0.0136, 0.0422, 0.0218, 0.0076, 0.0109,\n", + " -0.1399, -0.1606, -0.1755, -0.1469, -0.1889, -0.1163, -0.1470, -0.1603,\n", + " -0.1370, -0.2690, -0.2477, -0.4323, -0.0451, -0.0688, -0.0700, -0.0359,\n", + " -0.0242, -0.0503, -0.0098, 0.0365, 0.0000, -0.0212, -0.0254, -0.0028,\n", + " 0.0525, -0.0040, -0.0081, -0.0172, 0.0159, 0.0229, -0.0476, 0.0078]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.0967, -0.8025, -1.8184, -0.8172, -0.1636, 0.2932, -0.4124, -1.6261,\n", + " 1.0060, 1.4047, 1.0746, -1.5578, 0.2058, 0.2478, 0.2310, 1.3855,\n", + " 1.8103, 0.0361, -0.7073, 0.1464, 0.3631, -0.6767, -1.1650, -0.7830,\n", + " 0.5779, 0.3285, -0.6959, -1.1207, -0.1037, -0.5866, -0.9355, -0.2842,\n", + " 0.3255, 0.0687, 0.3342, 0.6072, 0.6097, -0.4031, -0.9129, -0.7779,\n", + " -0.5667, -0.2699, -0.9619]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.6391, 0.5603, 0.1439, 0.4909, 0.1088, -0.2183, -0.6304, -0.7869,\n", + " -0.2764, -0.4189, -0.3538, 0.3488, 0.2953, 0.4527, 0.2610, 0.4247,\n", + " 0.4150, 0.2253, 0.1649, 0.2278, 0.1543, 0.0947, 0.1322, 0.0331,\n", + " 0.0661, 0.0496, -0.0939, 0.1100, 0.3839, 0.5395, 0.4732, 0.3276,\n", + " 0.4544, 0.4955, 0.2594, 0.2729, 0.0109, 0.0433, -0.0434, -0.5008,\n", + " -0.4879, -0.5213, -0.4693]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00011532245844136924\n", + "Grad encoder.fc1.bias: 0.00021298063802532852\n", + "Grad encoder.encoder.0.weight: 2.799733920255676e-05\n", + "Grad encoder.encoder.0.bias: 0.00020820558711420745\n", + "Grad encoder.encoder.2.weight: 2.427637082291767e-05\n", + "Grad encoder.encoder.2.bias: 0.00034476228756830096\n", + "Grad encoder.encoder.4.weight: 6.101178587414324e-05\n", + "Grad encoder.encoder.4.bias: 0.0010908155236393213\n", + "Grad decoder.fc1.0.weight: 4.945526598021388e-05\n", + "Grad decoder.fc1.0.bias: 0.000441411801148206\n", + "Grad decoder.fc1.2.weight: 7.106146222213283e-05\n", + "Grad decoder.fc1.2.bias: 0.00046540165203623474\n", + "Grad decoder.fc1.4.weight: 6.38610654277727e-05\n", + "Grad decoder.fc1.4.bias: 0.0005763437948189676\n", + "Grad decoder.fc2.weight: 0.00011036804789910093\n", + "Grad decoder.fc2.bias: 0.0020873600151389837\n", + "Grad _memory_unit.weight_ih_l0: 5.384193173085805e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.060993524035439e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.0703828340629116e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.283031674072845e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010394868877483532\n", + "Grad _memory_unit.bias_hh_l1: 5.2281196985859424e-05\n", + "Data X Sample: tensor([[2.7041, 2.9800, 2.8715, 2.4030, 2.5219, 2.5841, 3.5389, 4.0842, 3.9544,\n", + " 3.9367, 4.0828, 4.0294, 3.8660, 3.8061, 3.5130, 3.6377, 3.6133, 3.4799,\n", + " 3.4176, 3.2973, 3.3761, 3.4093, 2.9351, 2.8382, 2.7983, 2.7425, 2.6560,\n", + " 2.7857, 2.6851, 2.7347, 2.8521, 2.8628, 3.0141, 2.2290, 3.7503, 4.1980,\n", + " 4.5308, 4.9321, 5.5525, 5.2742, 1.9759, 1.1610, 1.0833, 1.6447, 2.3904,\n", + " 2.1958, 1.7473, 2.4474]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3853, 0.1421, -0.5863, 0.9084, 0.1274, 1.0870, 0.4596, 0.2230,\n", + " -0.2186, -0.0714, 0.2994, 0.5809, -0.5414, 0.0731, -0.1343, 0.6271,\n", + " 0.5411, 0.1239, -0.0848, 0.8428, 0.5130, -0.3160, 0.0850, -0.0794,\n", + " -1.2197, -0.5979, -1.6911, -1.0926, -1.0978, -0.2200, -0.8276, -0.8582,\n", + " -0.1319, 0.0290, -0.3160, -0.3982, 0.4998, 0.9801, 0.9834, 0.3370,\n", + " 0.3638, 0.7828, 0.1411]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2188, -0.2608, -0.0889, -0.1990, -0.0907, 0.0883, 0.1084, 0.2430,\n", + " 0.1342, 0.1802, 0.1541, -0.1326, -0.1295, -0.2158, -0.1812, -0.2404,\n", + " -0.2110, -0.0907, -0.0696, -0.1207, -0.1010, -0.0414, -0.0179, -0.0253,\n", + " -0.0304, 0.0537, 0.0095, -0.0199, -0.1163, -0.1846, -0.1729, -0.1490,\n", + " -0.2050, -0.2339, -0.1375, -0.1398, -0.0213, -0.0018, -0.0151, 0.2481,\n", + " 0.2930, 0.2724, 0.2099]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00014331709826365113\n", + "Grad encoder.fc1.bias: 9.900690929498523e-05\n", + "Grad encoder.encoder.0.weight: 3.791753624682315e-05\n", + "Grad encoder.encoder.0.bias: 9.311358735430986e-05\n", + "Grad encoder.encoder.2.weight: 2.146005499525927e-05\n", + "Grad encoder.encoder.2.bias: 0.0001045711396727711\n", + "Grad encoder.encoder.4.weight: 7.524342072429135e-05\n", + "Grad encoder.encoder.4.bias: 0.0002729061234276742\n", + "Grad decoder.fc1.0.weight: 2.4630460757180117e-05\n", + "Grad decoder.fc1.0.bias: 8.726221130928025e-05\n", + "Grad decoder.fc1.2.weight: 2.350326394662261e-05\n", + "Grad decoder.fc1.2.bias: 0.00012584342039190233\n", + "Grad decoder.fc1.4.weight: 2.2577796698897146e-05\n", + "Grad decoder.fc1.4.bias: 0.00018553639529272914\n", + "Grad decoder.fc2.weight: 6.661956285824999e-05\n", + "Grad decoder.fc2.bias: 0.0015323751140385866\n", + "Grad _memory_unit.weight_ih_l0: 1.3476890217134496e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.2915419221099e-06\n", + "Grad _memory_unit.bias_hh_l0: 3.2244042813545093e-06\n", + "Grad _memory_unit.weight_ih_l1: 5.098563633509912e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.934853025886696e-05\n", + "Grad _memory_unit.bias_hh_l1: 9.45038664212916e-06\n", + "Data X Sample: tensor([[1.4449, 1.8367, 2.1578, 2.3440, 2.4416, 2.6327, 2.6730, 2.7739, 2.7754,\n", + " 2.7550, 2.8614, 2.8394, 2.7230, 2.7455, 2.7413, 2.7324, 2.6856, 2.7739,\n", + " 2.8642, 2.8323, 2.8339, 2.9761, 2.7568, 2.5118, 2.3610, 2.3272, 2.2111,\n", + " 2.2024, 1.7693, 1.7817, 1.6938, 1.5779, 1.3530, 0.8742, 1.2525, 1.2502,\n", + " 1.3057, 1.6061, 1.9079, 1.8441, 1.2886, 0.8444, 0.8145, 1.4094, 2.0257,\n", + " 2.4531, 1.4958, 2.2441]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7247, 0.3149, -0.5319, 0.2546, -0.9909, -1.3100, -3.0774, -2.3831,\n", + " -1.1380, -0.9115, -0.1906, -0.6044, -0.0717, -0.3850, -0.2602, 0.7524,\n", + " -1.1990, -0.8953, -0.4116, -0.2365, -0.7010, -0.1354, -0.7457, -1.4734,\n", + " 0.7778, 1.7390, 0.1474, 1.2015, 1.8033, 1.4898, 0.7691, 0.3519,\n", + " 0.2532, -0.2968, 1.3912, -0.7832, 0.0000, -0.5556, 0.7114, 0.9161,\n", + " 0.5338, 0.7124, 0.6678]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.1899, 0.1364, -0.0178, 0.0769, 0.0036, -0.0829, -0.2041, -0.2366,\n", + " -0.0491, -0.1265, -0.1039, 0.1157, 0.0228, 0.0959, 0.0453, 0.0830,\n", + " 0.0749, 0.0175, 0.0450, 0.0189, 0.0165, 0.0049, 0.0447, -0.0386,\n", + " 0.0177, 0.0449, -0.0457, 0.0175, 0.0903, 0.1447, 0.1391, 0.0656,\n", + " 0.1206, 0.1045, 0.0438, 0.0672, -0.0351, -0.0096, 0.0213, -0.1290,\n", + " -0.1048, -0.1128, -0.0731]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002916586527135223\n", + "Grad encoder.fc1.bias: 0.0007727957563474774\n", + "Grad encoder.encoder.0.weight: 4.962875027558766e-05\n", + "Grad encoder.encoder.0.bias: 0.000529722310602665\n", + "Grad encoder.encoder.2.weight: 3.6203728086547926e-05\n", + "Grad encoder.encoder.2.bias: 0.0004058429040014744\n", + "Grad encoder.encoder.4.weight: 0.00011587500193854794\n", + "Grad encoder.encoder.4.bias: 0.0007003968930803239\n", + "Grad decoder.fc1.0.weight: 4.717115007224493e-05\n", + "Grad decoder.fc1.0.bias: 0.00026745995273813605\n", + "Grad decoder.fc1.2.weight: 6.845347525086254e-05\n", + "Grad decoder.fc1.2.bias: 0.00060321856290102\n", + "Grad decoder.fc1.4.weight: 5.787144982605241e-05\n", + "Grad decoder.fc1.4.bias: 0.0010304271709173918\n", + "Grad decoder.fc2.weight: 0.00012571235129144043\n", + "Grad decoder.fc2.bias: 0.0024380641989409924\n", + "Grad _memory_unit.weight_ih_l0: 4.156634986429708e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.5446014003828168e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.638304279884323e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.14927467823145e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.568006235989742e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.7803345801657997e-05\n", + "Data X Sample: tensor([[1.4003, 1.3910, 1.6303, 1.6224, 1.7655, 1.9801, 2.0984, 2.2160, 3.7494,\n", + " 3.9983, 4.1938, 4.2046, 3.8238, 3.9234, 3.5861, 3.4298, 3.3586, 3.5418,\n", + " 3.4486, 3.3772, 3.4130, 3.2884, 2.8508, 2.7466, 2.7758, 2.9044, 2.9277,\n", + " 3.0345, 2.9314, 3.0885, 3.2545, 3.2911, 3.5883, 2.7554, 4.4685, 4.7550,\n", + " 5.0519, 5.3403, 5.8377, 5.7367, 0.9832, 0.5915, 0.6164, 1.0219, 1.4905,\n", + " 1.7097, 1.0810, 1.4700]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.7704, -1.2836, -0.4209, 0.1515, 2.3391, 0.5200, 0.1803, 0.6841,\n", + " 1.1376, 1.2750, 0.8783, -2.7832, -0.6288, -1.1518, -1.2513, -1.1958,\n", + " -1.4029, -0.1738, 0.0549, 0.2944, -1.1419, 1.0228, -0.8487, -2.7371,\n", + " 4.3718, -0.6404, 0.7262, 0.1728, -0.7480, -0.2998, 0.1501, -0.8960,\n", + " -0.1201, 0.1024, -1.5633, -0.6628, 0.7329, -0.2585, -0.5988, 0.6396,\n", + " 0.6897, 0.7130, -0.7494]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3368, -0.3586, -0.1226, -0.2252, -0.0792, 0.1604, 0.2032, 0.3687,\n", + " 0.1921, 0.2462, 0.2686, -0.2082, -0.1991, -0.3350, -0.2599, -0.3136,\n", + " -0.2475, -0.1197, -0.1276, -0.1582, -0.1558, -0.0468, -0.0075, 0.0045,\n", + " -0.0168, 0.0838, -0.0226, -0.0840, -0.1932, -0.2444, -0.2743, -0.2384,\n", + " -0.2874, -0.3615, -0.1838, -0.2094, -0.0272, -0.0189, 0.0047, 0.3716,\n", + " 0.3812, 0.4155, 0.2969]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 5.8433965023141354e-05\n", + "Grad encoder.fc1.bias: 0.0001328334619756788\n", + "Grad encoder.encoder.0.weight: 1.8754137272480875e-05\n", + "Grad encoder.encoder.0.bias: 0.00010258019028697163\n", + "Grad encoder.encoder.2.weight: 1.427304778189864e-05\n", + "Grad encoder.encoder.2.bias: 0.00016456845332868397\n", + "Grad encoder.encoder.4.weight: 4.103900209884159e-05\n", + "Grad encoder.encoder.4.bias: 0.0004762957978527993\n", + "Grad decoder.fc1.0.weight: 2.2690352125209756e-05\n", + "Grad decoder.fc1.0.bias: 0.00017425109399482608\n", + "Grad decoder.fc1.2.weight: 2.7789010346168652e-05\n", + "Grad decoder.fc1.2.bias: 0.0001503409876022488\n", + "Grad decoder.fc1.4.weight: 2.7990254238829948e-05\n", + "Grad decoder.fc1.4.bias: 0.00025899105821736157\n", + "Grad decoder.fc2.weight: 7.179064414231107e-05\n", + "Grad decoder.fc2.bias: 0.001460091327317059\n", + "Grad _memory_unit.weight_ih_l0: 2.3284467260964448e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.7349164409097284e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.167926691588946e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.5219300166791072e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.186351700103842e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.6770372642204165e-05\n", + "Data X Sample: tensor([[1.3855, 1.6124, 1.8482, 1.9023, 2.0216, 2.0685, 2.1985, 1.9988, 3.3417,\n", + " 4.0820, 4.1843, 4.1228, 4.1545, 3.9479, 3.8484, 3.5775, 3.4765, 3.6656,\n", + " 3.6633, 3.5688, 3.4031, 3.3695, 3.0122, 2.8688, 2.8058, 2.9149, 2.8877,\n", + " 2.9366, 2.9835, 3.1147, 3.1881, 3.3215, 3.7863, 2.7920, 4.6229, 4.9180,\n", + " 5.2210, 5.5814, 6.1419, 5.8331, 1.1072, 0.6213, 0.6912, 1.1424, 1.7205,\n", + " 1.8641, 1.1898, 1.8844]], device='cuda:0')\n", + "Data Y Sample: tensor([[-5.7986e-01, -6.0283e-01, 1.6389e-01, -4.0126e-01, -6.0344e-01,\n", + " 2.9706e-03, 6.1801e-02, 2.4414e-01, 1.4853e+00, 4.1233e-01,\n", + " 4.0744e-01, -1.8278e+00, -5.6018e-02, -3.4298e-01, -2.7009e-01,\n", + " -9.3680e-01, -7.1589e-01, -3.9209e-02, -1.0274e+00, -1.4777e+00,\n", + " 3.1920e+00, 1.7646e+00, -1.0521e+00, 3.4405e-01, 9.3911e-02,\n", + " -9.1483e-01, -1.0677e+00, 1.5316e-01, 5.0213e-01, 7.9557e-01,\n", + " -7.1667e-01, -7.7089e-01, -3.7464e-01, -6.6080e-01, 1.9977e-01,\n", + " -5.4988e-01, 5.3996e-02, -1.0105e-01, 7.5508e-01, 6.9545e-01,\n", + " 7.6327e-01, 8.2471e-01, 9.6156e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3490, -0.3710, -0.1270, -0.2256, -0.0763, 0.1696, 0.2138, 0.3821,\n", + " 0.2020, 0.2553, 0.2819, -0.2177, -0.2075, -0.3491, -0.2701, -0.3230,\n", + " -0.2522, -0.1243, -0.1343, -0.1627, -0.1623, -0.0512, -0.0095, 0.0067,\n", + " -0.0166, 0.0885, -0.0272, -0.0904, -0.2054, -0.2527, -0.2876, -0.2498,\n", + " -0.2986, -0.3758, -0.1898, -0.2181, -0.0266, -0.0188, 0.0058, 0.3857,\n", + " 0.3922, 0.4335, 0.3064]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 5.4967542382655665e-05\n", + "Grad encoder.fc1.bias: 7.287831977009773e-05\n", + "Grad encoder.encoder.0.weight: 1.4328226825455204e-05\n", + "Grad encoder.encoder.0.bias: 0.0001071289589162916\n", + "Grad encoder.encoder.2.weight: 9.04280022950843e-06\n", + "Grad encoder.encoder.2.bias: 9.934511035680771e-05\n", + "Grad encoder.encoder.4.weight: 3.694411861943081e-05\n", + "Grad encoder.encoder.4.bias: 0.000285418180283159\n", + "Grad decoder.fc1.0.weight: 1.3380216842051595e-05\n", + "Grad decoder.fc1.0.bias: 6.937727448530495e-05\n", + "Grad decoder.fc1.2.weight: 2.319601844646968e-05\n", + "Grad decoder.fc1.2.bias: 8.292375423479825e-05\n", + "Grad decoder.fc1.4.weight: 2.6525836801738478e-05\n", + "Grad decoder.fc1.4.bias: 0.0001564187987241894\n", + "Grad decoder.fc2.weight: 8.315619925269857e-05\n", + "Grad decoder.fc2.bias: 0.002096107928082347\n", + "Grad _memory_unit.weight_ih_l0: 2.185435505452915e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.571647413191386e-06\n", + "Grad _memory_unit.bias_hh_l0: 4.486798388825264e-06\n", + "Grad _memory_unit.weight_ih_l1: 8.157170441336348e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.162265263905283e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.0964145985781215e-05\n", + "Data X Sample: tensor([[1.6199, 1.8920, 1.9429, 2.1013, 2.3580, 2.4235, 2.5513, 2.7058, 2.7168,\n", + " 2.6397, 2.7885, 2.7031, 2.6165, 2.5138, 2.5143, 2.5354, 2.5158, 2.5205,\n", + " 2.5503, 2.5273, 2.4511, 2.4250, 2.4387, 2.4164, 2.4887, 2.5153, 2.5521,\n", + " 2.5165, 2.2688, 2.4236, 2.3202, 2.3212, 2.2176, 1.4440, 1.9609, 1.8850,\n", + " 1.6872, 1.6644, 1.6353, 1.5888, 1.2791, 0.7269, 0.7417, 1.3146, 1.9306,\n", + " 2.2530, 1.3666, 1.9157]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3590, -0.5681, -0.3958, 0.1895, -1.2118, 0.4085, 0.1618, 0.6646,\n", + " -0.2678, -0.2198, -0.1527, -1.0844, -0.8103, -1.1903, 1.0239, -0.0333,\n", + " 0.2636, 0.6324, 0.1673, -0.5230, 0.4352, 0.4859, 0.1214, -0.4553,\n", + " -0.1638, -0.0520, 0.1144, -0.2370, 0.8077, -0.0928, -0.1804, -0.6402,\n", + " 1.1101, -0.8746, 1.0458, 0.4324, -0.0333, -0.0920, 0.2870, 0.7131,\n", + " 1.5432, 0.3016, 0.0998]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4205, 0.3408, 0.0423, 0.2815, 0.0949, -0.1142, -0.3665, -0.4434,\n", + " -0.1752, -0.2675, -0.2636, 0.2208, 0.1829, 0.2821, 0.1405, 0.2949,\n", + " 0.2350, 0.0953, 0.0885, 0.1265, 0.0661, 0.0576, 0.1195, -0.0081,\n", + " 0.0295, 0.0169, -0.0610, 0.0184, 0.1855, 0.3110, 0.2320, 0.2137,\n", + " 0.2621, 0.2694, 0.1723, 0.2016, -0.0479, -0.0154, -0.0167, -0.3004,\n", + " -0.2890, -0.3088, -0.3088]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00019720636191777885\n", + "Grad encoder.fc1.bias: 0.00044277982669882476\n", + "Grad encoder.encoder.0.weight: 4.096216434845701e-05\n", + "Grad encoder.encoder.0.bias: 0.0004977270727977157\n", + "Grad encoder.encoder.2.weight: 3.14242352033034e-05\n", + "Grad encoder.encoder.2.bias: 0.00041205156594514847\n", + "Grad encoder.encoder.4.weight: 0.0001110249650082551\n", + "Grad encoder.encoder.4.bias: 0.0008125441963784397\n", + "Grad decoder.fc1.0.weight: 4.919570710626431e-05\n", + "Grad decoder.fc1.0.bias: 0.00031899765599519014\n", + "Grad decoder.fc1.2.weight: 6.573447899427265e-05\n", + "Grad decoder.fc1.2.bias: 0.0003067058278247714\n", + "Grad decoder.fc1.4.weight: 6.105825013946742e-05\n", + "Grad decoder.fc1.4.bias: 0.0003399854467716068\n", + "Grad decoder.fc2.weight: 0.00010506015678402036\n", + "Grad decoder.fc2.bias: 0.002005981281399727\n", + "Grad _memory_unit.weight_ih_l0: 7.61807814342319e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.9890805308241397e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.5443256415892392e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.9742918741249014e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.545344513142481e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.322244810988195e-05\n", + "Data X Sample: tensor([[2.0411, 2.5198, 2.9241, 3.0240, 3.1554, 3.2043, 3.2677, 3.3702, 3.5517,\n", + " 3.4975, 3.5815, 3.5581, 3.4288, 3.3835, 3.3844, 3.4572, 3.2800, 3.3832,\n", + " 3.3639, 3.2340, 3.1872, 3.1185, 2.9640, 2.8993, 2.7120, 2.6171, 2.4508,\n", + " 2.5491, 2.0988, 2.2140, 2.0647, 1.8901, 1.8260, 1.2633, 2.0148, 2.2498,\n", + " 2.4483, 2.6078, 2.8967, 2.8088, 1.6943, 1.0415, 1.0388, 1.8083, 2.6996,\n", + " 3.0192, 1.8561, 2.7054]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.8503e-01, -9.1981e-01, -1.1112e+00, -4.0887e-02, -1.1218e+00,\n", + " 1.5254e+00, 1.1175e+00, 1.0472e+00, 4.5349e-01, 8.2100e-01,\n", + " 3.3381e-01, -4.4051e-01, -8.4879e-01, -3.4088e-01, -1.7134e-01,\n", + " -6.1168e-01, -6.6583e-01, -2.2726e-01, -7.9760e-01, -6.2295e-01,\n", + " -6.8007e-02, -9.9689e-02, 2.3832e-01, -4.6362e-01, -8.5156e-01,\n", + " 7.2974e+00, 1.0091e+00, 1.6909e+00, -8.9815e-01, -1.3881e+00,\n", + " 5.6390e-01, 6.2491e-01, -8.6329e-01, -8.5971e-01, -1.0205e+00,\n", + " 7.3168e-01, 5.6924e-01, 7.8158e-01, -5.9407e-03, 8.8847e-01,\n", + " 8.6521e-01, 7.0017e-01, 7.5283e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-2.5765e-01, -3.2591e-01, -1.3531e-01, -2.5695e-01, -1.2959e-01,\n", + " 4.3233e-02, 9.3484e-02, 3.3039e-01, 1.6659e-01, 2.5017e-01,\n", + " 2.1677e-01, -1.7408e-01, -1.4260e-01, -2.6967e-01, -1.9010e-01,\n", + " -2.9451e-01, -2.4448e-01, -1.1549e-01, -5.4431e-02, -1.0028e-01,\n", + " -8.9048e-02, -2.8877e-02, -5.3439e-02, -5.7779e-02, -8.8639e-04,\n", + " 8.7705e-02, 6.4367e-02, 3.5979e-02, -1.4922e-01, -2.4845e-01,\n", + " -1.7215e-01, -1.9254e-01, -2.3490e-01, -2.5700e-01, -1.4834e-01,\n", + " -1.5773e-01, -2.5724e-02, 1.9453e-05, -1.0574e-02, 3.5945e-01,\n", + " 4.2844e-01, 3.9716e-01, 3.1826e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 9.118855814449489e-05\n", + "Grad encoder.fc1.bias: 0.000184029369847849\n", + "Grad encoder.encoder.0.weight: 2.8391514206305146e-05\n", + "Grad encoder.encoder.0.bias: 0.00017952395137399435\n", + "Grad encoder.encoder.2.weight: 1.858970063040033e-05\n", + "Grad encoder.encoder.2.bias: 0.0001426037197234109\n", + "Grad encoder.encoder.4.weight: 4.943741805618629e-05\n", + "Grad encoder.encoder.4.bias: 0.00037098670145496726\n", + "Grad decoder.fc1.0.weight: 2.0325744117144495e-05\n", + "Grad decoder.fc1.0.bias: 9.451077494304627e-05\n", + "Grad decoder.fc1.2.weight: 3.1393188692163676e-05\n", + "Grad decoder.fc1.2.bias: 0.0001794967392925173\n", + "Grad decoder.fc1.4.weight: 3.038764225493651e-05\n", + "Grad decoder.fc1.4.bias: 0.00029237527633085847\n", + "Grad decoder.fc2.weight: 8.546362369088456e-05\n", + "Grad decoder.fc2.bias: 0.0013749493518844247\n", + "Grad _memory_unit.weight_ih_l0: 1.7819523918660707e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.2516858987510204e-05\n", + "Grad _memory_unit.bias_hh_l0: 6.562494490935933e-06\n", + "Grad _memory_unit.weight_ih_l1: 7.759751383673574e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.1791234757984057e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.140647418651497e-05\n", + "Data X Sample: tensor([[1.6846, 1.8774, 2.0571, 2.2346, 2.2419, 2.3616, 2.4358, 2.4616, 2.4801,\n", + " 2.5291, 2.5664, 2.5181, 2.4035, 2.4593, 2.4160, 2.4069, 2.3696, 2.4199,\n", + " 2.4883, 2.5236, 2.6106, 2.6194, 2.6459, 2.6798, 2.6989, 2.7477, 2.6933,\n", + " 2.6552, 2.4284, 2.5808, 2.4007, 2.2908, 2.0064, 1.2655, 1.7722, 1.7245,\n", + " 1.6577, 1.6352, 1.5212, 1.4583, 1.3936, 0.7846, 0.8003, 1.3261, 1.9623,\n", + " 2.3788, 1.4822, 2.0095]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.7780e-01, 2.8853e-01, 1.0313e-01, 8.4885e-01, -6.1314e-01,\n", + " 1.0436e+00, 3.0909e-02, 1.0347e-01, -2.1647e-01, -2.7878e-01,\n", + " -4.4942e-01, 1.3522e+00, -1.2097e-01, -1.4561e-01, 2.6420e-01,\n", + " -6.5070e-01, -3.1149e+00, 7.8468e-01, 8.9712e-01, 4.7325e-02,\n", + " 6.8104e-01, -1.9253e-01, 2.5887e-02, -6.9781e-01, -1.3086e+00,\n", + " -3.8821e-01, -1.0050e+00, -5.9651e-01, -1.7559e-01, 4.0229e-01,\n", + " -2.2925e-03, -1.3098e-01, -7.4501e-01, -6.8725e-01, 4.2130e-01,\n", + " 1.1785e+00, -5.8615e-01, 2.3763e-01, 5.6860e-01, -2.7122e-01,\n", + " -5.5658e-01, -1.7062e-01, -1.2946e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4164, 0.3354, 0.0365, 0.2660, 0.0825, -0.1136, -0.3644, -0.4373,\n", + " -0.1781, -0.2614, -0.2669, 0.2184, 0.1826, 0.2709, 0.1375, 0.2871,\n", + " 0.2330, 0.0812, 0.0823, 0.1166, 0.0509, 0.0499, 0.1086, -0.0142,\n", + " 0.0257, 0.0249, -0.0568, 0.0168, 0.1814, 0.3031, 0.2193, 0.2148,\n", + " 0.2555, 0.2565, 0.1739, 0.1968, -0.0548, -0.0173, -0.0212, -0.2926,\n", + " -0.2829, -0.2991, -0.3024]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00018801141413860023\n", + "Grad encoder.fc1.bias: 0.0005282334750518203\n", + "Grad encoder.encoder.0.weight: 6.111682887421921e-05\n", + "Grad encoder.encoder.0.bias: 0.0004624478751793504\n", + "Grad encoder.encoder.2.weight: 3.9473259676015005e-05\n", + "Grad encoder.encoder.2.bias: 0.00044174870708957314\n", + "Grad encoder.encoder.4.weight: 0.00013986002886667848\n", + "Grad encoder.encoder.4.bias: 0.0007710956851951778\n", + "Grad decoder.fc1.0.weight: 5.025237987865694e-05\n", + "Grad decoder.fc1.0.bias: 0.0003211855364497751\n", + "Grad decoder.fc1.2.weight: 5.884069832973182e-05\n", + "Grad decoder.fc1.2.bias: 0.00031926314113661647\n", + "Grad decoder.fc1.4.weight: 5.759455598308705e-05\n", + "Grad decoder.fc1.4.bias: 0.0003807747852988541\n", + "Grad decoder.fc2.weight: 0.00012011644139420241\n", + "Grad decoder.fc2.bias: 0.001979992026463151\n", + "Grad _memory_unit.weight_ih_l0: 6.982490958762355e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.4447726900689304e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.2617927495739423e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.851107410606346e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.685205880785361e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.373784784344025e-05\n", + "Data X Sample: tensor([[1.4109, 1.5978, 1.7295, 1.7842, 1.8218, 2.0449, 2.1646, 2.0045, 3.1245,\n", + " 4.1705, 4.2604, 4.4247, 3.9680, 4.0652, 3.8636, 3.7375, 3.6951, 3.5805,\n", + " 3.5105, 3.6246, 3.4498, 3.3680, 2.8387, 2.8134, 2.8884, 2.9749, 2.9463,\n", + " 3.1160, 3.1465, 3.2588, 3.3175, 3.3547, 3.9337, 2.9110, 4.6842, 4.9739,\n", + " 5.0656, 5.5178, 6.0342, 5.9722, 1.0309, 0.6472, 0.5901, 1.1969, 1.5738,\n", + " 1.6354, 1.2374, 1.6499]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.0382, 0.3613, -0.1112, -0.3508, -0.2056, 0.4422, 0.6212, 0.6738,\n", + " -0.7681, -0.7616, -0.7497, 0.6833, -0.1533, -0.7854, -0.3613, 0.0864,\n", + " -0.7750, -0.0048, 1.0879, 0.4902, -0.3682, 1.4918, 0.4809, 0.8903,\n", + " 0.8889, -0.0606, 0.4701, 0.3822, 0.2091, -1.1027, -0.3195, 0.1728,\n", + " 0.6830, 1.3307, 0.0652, -3.3004, 0.0059, -0.4031, 0.2870, 0.8754,\n", + " 0.9606, -0.5120, -0.9556]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3487, -0.3789, -0.1305, -0.2218, -0.0766, 0.1775, 0.2186, 0.3817,\n", + " 0.2114, 0.2639, 0.2889, -0.2236, -0.2118, -0.3619, -0.2711, -0.3278,\n", + " -0.2545, -0.1340, -0.1388, -0.1627, -0.1579, -0.0589, -0.0242, 0.0060,\n", + " -0.0232, 0.0901, -0.0395, -0.0928, -0.2258, -0.2603, -0.3000, -0.2613,\n", + " -0.3092, -0.3848, -0.1928, -0.2241, -0.0287, -0.0086, 0.0027, 0.3922,\n", + " 0.3999, 0.4425, 0.3086]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003385404124855995\n", + "Grad encoder.fc1.bias: 0.000217916676774621\n", + "Grad encoder.encoder.0.weight: 8.74941615620628e-05\n", + "Grad encoder.encoder.0.bias: 0.0002053433854598552\n", + "Grad encoder.encoder.2.weight: 5.514124859473668e-05\n", + "Grad encoder.encoder.2.bias: 0.00018769106827676296\n", + "Grad encoder.encoder.4.weight: 0.0001979758235393092\n", + "Grad encoder.encoder.4.bias: 0.0005029582534916699\n", + "Grad decoder.fc1.0.weight: 5.986796895740554e-05\n", + "Grad decoder.fc1.0.bias: 0.00022004191123414785\n", + "Grad decoder.fc1.2.weight: 7.6368945883587e-05\n", + "Grad decoder.fc1.2.bias: 0.00031398056307807565\n", + "Grad decoder.fc1.4.weight: 6.292433681664988e-05\n", + "Grad decoder.fc1.4.bias: 0.0005388859426602721\n", + "Grad decoder.fc2.weight: 9.309799497714266e-05\n", + "Grad decoder.fc2.bias: 0.0027332999743521214\n", + "Grad _memory_unit.weight_ih_l0: 2.1469875264301663e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.1644682672340423e-05\n", + "Grad _memory_unit.bias_hh_l0: 6.091800514695933e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.3036717518843943e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.728584124473855e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.8584012650535442e-05\n", + "Data X Sample: tensor([[1.4396, 1.6080, 1.6935, 1.8367, 1.8748, 2.0154, 2.0352, 2.0556, 3.4345,\n", + " 4.1752, 4.2033, 4.0995, 3.8948, 3.7652, 3.7324, 3.6103, 3.5111, 3.5225,\n", + " 3.5064, 3.3865, 3.3933, 3.2869, 2.7496, 2.7924, 2.7664, 2.9253, 3.0049,\n", + " 3.0222, 3.0355, 3.1540, 3.3035, 3.2662, 3.6609, 2.6936, 4.4415, 4.8912,\n", + " 4.9634, 5.4569, 5.9074, 5.7196, 1.0691, 0.6233, 0.5982, 1.0850, 1.6887,\n", + " 1.7383, 1.2442, 1.5717]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4942, -0.9827, -0.2991, -0.1817, 0.0172, 0.0311, -0.0621, 0.6739,\n", + " 0.2706, 0.5217, 0.6761, -0.5116, 2.3475, 0.4070, -0.1843, -0.6503,\n", + " -0.3085, -0.2021, -0.0330, 0.1176, -0.3939, 0.6179, 0.6704, 0.3596,\n", + " 0.4784, 0.1797, 0.7424, 0.0467, -0.1965, -0.0930, 0.2701, -0.9290,\n", + " -1.1542, -0.9745, -0.2213, -0.4029, 0.0540, -0.1011, -1.1206, 0.6362,\n", + " 0.6487, 0.4677, 0.8740]], device='cuda:0')\n", + "Prediction Sample: tensor([[-3.3360e-01, -3.6620e-01, -1.2740e-01, -2.1896e-01, -7.8477e-02,\n", + " 1.6922e-01, 2.0690e-01, 3.6437e-01, 2.0510e-01, 2.5682e-01,\n", + " 2.7491e-01, -2.1342e-01, -2.0406e-01, -3.4775e-01, -2.6030e-01,\n", + " -3.1861e-01, -2.4986e-01, -1.3291e-01, -1.3212e-01, -1.5949e-01,\n", + " -1.5085e-01, -5.8069e-02, -2.8701e-02, 4.7392e-04, -2.8002e-02,\n", + " 8.4121e-02, -3.6867e-02, -8.5447e-02, -2.1846e-01, -2.5410e-01,\n", + " -2.8978e-01, -2.5226e-01, -2.9966e-01, -3.6953e-01, -1.8615e-01,\n", + " -2.1783e-01, -2.7850e-02, -6.7647e-03, 1.3729e-04, 3.7680e-01,\n", + " 3.8957e-01, 4.2458e-01, 2.9663e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002720014890655875\n", + "Grad encoder.fc1.bias: 0.0003445831243880093\n", + "Grad encoder.encoder.0.weight: 7.67228048061952e-05\n", + "Grad encoder.encoder.0.bias: 0.0003710180753841996\n", + "Grad encoder.encoder.2.weight: 5.069900362286717e-05\n", + "Grad encoder.encoder.2.bias: 0.00035363942151889205\n", + "Grad encoder.encoder.4.weight: 0.0001859657932072878\n", + "Grad encoder.encoder.4.bias: 0.0006951396353542805\n", + "Grad decoder.fc1.0.weight: 5.8400240959599614e-05\n", + "Grad decoder.fc1.0.bias: 0.00031803001184016466\n", + "Grad decoder.fc1.2.weight: 6.27600311418064e-05\n", + "Grad decoder.fc1.2.bias: 0.0002825697010848671\n", + "Grad decoder.fc1.4.weight: 6.044375913916156e-05\n", + "Grad decoder.fc1.4.bias: 0.00041803138446994126\n", + "Grad decoder.fc2.weight: 0.00010680418199626729\n", + "Grad decoder.fc2.bias: 0.002233607228845358\n", + "Grad _memory_unit.weight_ih_l0: 5.294898073771037e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.4094011678243987e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.2484749277064111e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.340475930395769e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.202563236001879e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.1498839234700426e-05\n", + "Data X Sample: tensor([[1.3844, 1.6007, 1.8001, 1.8586, 2.0080, 2.0140, 2.1693, 1.9804, 3.5028,\n", + " 4.3332, 4.3239, 4.3663, 4.2321, 3.9943, 3.8383, 3.6350, 3.6243, 3.6289,\n", + " 3.5539, 3.6004, 3.5062, 3.4246, 2.9665, 2.8764, 2.7514, 2.8940, 2.8877,\n", + " 2.9407, 2.9453, 3.1081, 3.2021, 3.3409, 3.8149, 2.8721, 4.5224, 4.9423,\n", + " 5.0381, 5.5443, 5.9581, 5.9977, 1.0595, 0.6393, 0.6609, 1.1395, 1.6213,\n", + " 1.8012, 1.1626, 1.7671]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2765, -0.8500, -1.4990, -1.0419, 0.4489, 0.6153, 0.2104, 0.4135,\n", + " 0.2790, 0.5725, 0.5433, 0.0877, 0.3064, 0.4010, -0.8604, -0.5531,\n", + " -1.3425, -0.3836, -1.2447, -1.1085, -1.6494, -1.5091, -0.3409, -0.7788,\n", + " -0.5308, 0.9506, -0.0835, -0.3883, -0.2723, -0.2966, -0.2014, -0.9613,\n", + " -0.3145, -0.2010, 0.3232, -0.6725, -0.5204, -0.4903, -0.3491, 0.5643,\n", + " 0.7127, 0.5821, 0.4269]], device='cuda:0')\n", + "Prediction Sample: tensor([[-3.2553e-01, -3.5917e-01, -1.2573e-01, -2.1817e-01, -7.9041e-02,\n", + " 1.6649e-01, 2.0120e-01, 3.5491e-01, 2.0254e-01, 2.5366e-01,\n", + " 2.6805e-01, -2.0876e-01, -2.0049e-01, -3.4220e-01, -2.5413e-01,\n", + " -3.1340e-01, -2.4731e-01, -1.3400e-01, -1.2733e-01, -1.5752e-01,\n", + " -1.4587e-01, -5.5625e-02, -3.2662e-02, -3.5956e-03, -3.2103e-02,\n", + " 7.8891e-02, -3.4914e-02, -8.2263e-02, -2.1439e-01, -2.5100e-01,\n", + " -2.8627e-01, -2.4747e-01, -2.9449e-01, -3.6142e-01, -1.8244e-01,\n", + " -2.1562e-01, -2.7879e-02, -6.4777e-03, -3.7048e-04, 3.6938e-01,\n", + " 3.8480e-01, 4.1567e-01, 2.9035e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005098152905702591\n", + "Grad encoder.fc1.bias: 0.0005292388377711177\n", + "Grad encoder.encoder.0.weight: 0.0001437556347809732\n", + "Grad encoder.encoder.0.bias: 0.0005878875381313264\n", + "Grad encoder.encoder.2.weight: 9.081844473257661e-05\n", + "Grad encoder.encoder.2.bias: 0.0007239262922666967\n", + "Grad encoder.encoder.4.weight: 0.00026395806344226\n", + "Grad encoder.encoder.4.bias: 0.0021438165567815304\n", + "Grad decoder.fc1.0.weight: 9.190011769533157e-05\n", + "Grad decoder.fc1.0.bias: 0.0006756975781172514\n", + "Grad decoder.fc1.2.weight: 7.880244083935395e-05\n", + "Grad decoder.fc1.2.bias: 0.000508525816258043\n", + "Grad decoder.fc1.4.weight: 5.060144030721858e-05\n", + "Grad decoder.fc1.4.bias: 0.0006978472229093313\n", + "Grad decoder.fc2.weight: 8.734996663406491e-05\n", + "Grad decoder.fc2.bias: 0.0022107718978077173\n", + "Grad _memory_unit.weight_ih_l0: 7.101616120053222e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.549089448526502e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.285035563749261e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.5345699416211573e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00013783600297756493\n", + "Grad _memory_unit.bias_hh_l1: 6.848375778645277e-05\n", + "Data X Sample: tensor([[1.6146, 1.8498, 2.0330, 2.2500, 2.3460, 2.4412, 2.6315, 2.6306, 2.7217,\n", + " 2.6634, 2.7726, 2.8550, 2.6609, 2.6992, 2.5522, 2.7242, 2.6542, 2.5804,\n", + " 2.5813, 2.4697, 2.6057, 2.6883, 2.6122, 2.6015, 2.6294, 2.7007, 2.7972,\n", + " 2.7694, 2.5186, 2.5284, 2.3867, 2.3930, 2.3738, 1.4852, 1.9805, 1.9385,\n", + " 1.7757, 1.6405, 1.6100, 1.6087, 1.2695, 0.7209, 0.7639, 1.3261, 2.1367,\n", + " 2.0814, 1.5162, 1.9783]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3807, -0.1767, -0.7229, 0.4461, 0.4468, -0.4121, -0.1827, -0.0687,\n", + " -1.0119, -0.4741, -0.2060, -0.0640, 0.2530, 0.6784, 0.9359, -0.1553,\n", + " -1.3947, 0.7641, 0.7191, 1.3932, 1.1249, 0.2501, 0.8607, -1.3061,\n", + " 0.5615, 0.3057, -0.5917, -0.8202, -0.6116, 0.3864, -0.0208, -0.7180,\n", + " -0.4347, 0.7206, 0.0815, -0.0424, 0.7877, -0.0751, -0.0156, -0.0996,\n", + " -0.0839, -0.3078, -0.5251]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4733, 0.4103, 0.0471, 0.3010, 0.0992, -0.1177, -0.4126, -0.5026,\n", + " -0.2183, -0.2997, -0.3086, 0.2545, 0.2098, 0.2901, 0.1692, 0.3440,\n", + " 0.2880, 0.0771, 0.0905, 0.1286, 0.0433, 0.0634, 0.1038, -0.0257,\n", + " 0.0280, 0.0303, -0.0658, 0.0112, 0.2088, 0.3479, 0.2464, 0.2447,\n", + " 0.3048, 0.2902, 0.2103, 0.2223, -0.0544, -0.0193, -0.0295, -0.3423,\n", + " -0.3472, -0.3510, -0.3640]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00018302879470866174\n", + "Grad encoder.fc1.bias: 0.0002150687505491078\n", + "Grad encoder.encoder.0.weight: 5.6192937336163595e-05\n", + "Grad encoder.encoder.0.bias: 0.0002879525418393314\n", + "Grad encoder.encoder.2.weight: 3.804854350164533e-05\n", + "Grad encoder.encoder.2.bias: 0.0002748352999333292\n", + "Grad encoder.encoder.4.weight: 0.00011072582856286317\n", + "Grad encoder.encoder.4.bias: 0.000575085636228323\n", + "Grad decoder.fc1.0.weight: 3.8828606193419546e-05\n", + "Grad decoder.fc1.0.bias: 0.0002491390041541308\n", + "Grad decoder.fc1.2.weight: 3.4727403544820845e-05\n", + "Grad decoder.fc1.2.bias: 0.0002051094634225592\n", + "Grad decoder.fc1.4.weight: 2.5741304852999747e-05\n", + "Grad decoder.fc1.4.bias: 0.00022981513757258654\n", + "Grad decoder.fc2.weight: 8.131920185405761e-05\n", + "Grad decoder.fc2.bias: 0.0016127580311149359\n", + "Grad _memory_unit.weight_ih_l0: 2.8947174541826826e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.9504455849528313e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.998570021707565e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.7277528741033166e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.542892904486507e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.766906618489884e-05\n", + "Data X Sample: tensor([[-0.0085, 0.0044, -0.0060, -0.0022, -0.0017, 0.0044, 0.0062, -0.0071,\n", + " -0.0098, 0.0205, 0.0127, -0.0019, 0.0155, 0.0000, -0.0050, -0.0150,\n", + " -0.0189, -0.0039, -0.0227, -0.0037, -0.0172, -0.0092, -0.0048, -0.0095,\n", + " -0.0169, -0.0104, -0.0133, 0.0000, -0.0347, 0.0033, -0.0280, -0.0138,\n", + " 0.0000, -0.0114, 0.0270, 0.0292, 0.0020, 0.0053, 0.0317, 0.0199,\n", + " 0.0286, -0.0040, 0.0061, 0.0115, -0.0238, -0.0229, -0.0816, -0.0313]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 8.5763e-01, 4.1826e-01, -1.8853e-01, 8.9117e-01, 9.7297e-01,\n", + " -1.3488e-01, -5.3834e-01, -7.0017e-01, 3.9803e-01, -4.0157e-01,\n", + " -8.0875e-01, -4.4982e-03, 4.4656e-01, 1.4817e+00, 4.5469e-01,\n", + " -3.9686e-01, 4.6790e-01, 6.2510e+00, 7.3714e-02, 7.5241e-01,\n", + " 1.0859e+00, 7.8454e-01, 2.3510e-01, 4.7536e-02, 1.0929e-01,\n", + " 5.4987e-01, 1.3446e+00, -7.0825e-02, 3.0726e-01, 8.0529e-02,\n", + " 3.3900e-01, -5.6190e-01, 1.2299e+00, 1.2261e+00, -8.1517e-01,\n", + " 1.1975e+00, 9.9263e-01, -1.0105e-01, 1.1148e+00, -6.2094e-01,\n", + " -4.9482e-01, -2.9826e-01, 1.6111e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.9895, 0.7481, 0.0473, 0.5565, -0.5221, -0.6870, -1.3816, -1.3645,\n", + " -0.8943, -0.9469, -0.9601, 0.4905, 0.5526, 0.6044, 0.3758, 0.6614,\n", + " 0.5091, 0.0292, 0.1342, 0.1192, 0.1314, 0.0733, 0.0973, -0.0421,\n", + " 0.0553, -0.0338, 0.2967, 0.5617, 1.0006, 1.1471, 0.9516, 0.6440,\n", + " 0.8066, 0.6282, 0.4322, 0.4946, -0.0865, 0.0794, 0.0064, -0.9290,\n", + " -0.8565, -0.6729, -0.5746]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 7.333800749620423e-05\n", + "Grad encoder.fc1.bias: 0.00036822070251218975\n", + "Grad encoder.encoder.0.weight: 1.4751253729627933e-05\n", + "Grad encoder.encoder.0.bias: 0.00033772806636989117\n", + "Grad encoder.encoder.2.weight: 1.1586237633309793e-05\n", + "Grad encoder.encoder.2.bias: 0.0002304822119185701\n", + "Grad encoder.encoder.4.weight: 4.7621851990697905e-05\n", + "Grad encoder.encoder.4.bias: 0.0002803980023600161\n", + "Grad decoder.fc1.0.weight: 2.397025491518434e-05\n", + "Grad decoder.fc1.0.bias: 0.00013693940127268434\n", + "Grad decoder.fc1.2.weight: 2.5124561943812296e-05\n", + "Grad decoder.fc1.2.bias: 0.000111107096017804\n", + "Grad decoder.fc1.4.weight: 2.8349308195174672e-05\n", + "Grad decoder.fc1.4.bias: 0.0002295511367265135\n", + "Grad decoder.fc2.weight: 8.582407463109121e-05\n", + "Grad decoder.fc2.bias: 0.0018456773832440376\n", + "Grad _memory_unit.weight_ih_l0: 4.572851139528211e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.7047366782207973e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.776090908213519e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.942407834576443e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.134674989269115e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.619302565813996e-05\n", + "Data X Sample: tensor([[1.5817, 1.7944, 1.9579, 2.0575, 2.2982, 2.3970, 2.5667, 2.4673, 2.5631,\n", + " 2.6634, 2.7250, 2.7109, 2.6720, 2.5711, 2.6430, 2.5081, 2.5221, 2.5224,\n", + " 2.5193, 2.4548, 2.5198, 2.4387, 2.3929, 2.4908, 2.4980, 2.5048, 2.5627,\n", + " 2.5369, 2.2966, 2.4007, 2.3167, 2.3240, 2.2220, 1.5127, 1.9438, 1.8339,\n", + " 1.6479, 1.6776, 1.5846, 1.5633, 1.2409, 0.7388, 0.7013, 1.2515, 1.8354,\n", + " 2.1100, 1.4482, 2.0408]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.8822, 0.9467, 1.8517, 0.3975, -1.0505, -0.3606, -0.6548, -0.0863,\n", + " -1.0101, -0.5222, -0.4411, -0.1328, -0.3711, -0.4978, 0.5834, 0.6071,\n", + " 0.2339, 0.1516, -0.1485, 0.3757, -0.2510, 0.1595, -0.4310, 0.2701,\n", + " 0.5874, -0.8984, -0.2291, 0.2095, 0.3092, 0.8014, -0.2667, 0.4559,\n", + " 0.5303, 0.7753, 0.2627, 0.2488, -0.2492, 0.4911, 0.0000, -0.5038,\n", + " -0.6414, -0.4681, -0.5115]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5024, 0.4494, 0.0608, 0.3377, 0.1179, -0.1108, -0.4430, -0.5339,\n", + " -0.2464, -0.3233, -0.3316, 0.2744, 0.2284, 0.3042, 0.1850, 0.3733,\n", + " 0.3183, 0.0856, 0.1063, 0.1485, 0.0543, 0.0808, 0.1134, -0.0192,\n", + " 0.0256, 0.0308, -0.0707, 0.0116, 0.2226, 0.3764, 0.2627, 0.2648,\n", + " 0.3317, 0.3169, 0.2359, 0.2440, -0.0551, -0.0225, -0.0347, -0.3767,\n", + " -0.3820, -0.3806, -0.4083]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000791790836956352\n", + "Grad encoder.fc1.bias: 0.0004185064462944865\n", + "Grad encoder.encoder.0.weight: 0.0001940923830261454\n", + "Grad encoder.encoder.0.bias: 0.0005056378431618214\n", + "Grad encoder.encoder.2.weight: 0.00011939806427108124\n", + "Grad encoder.encoder.2.bias: 0.0005344357341527939\n", + "Grad encoder.encoder.4.weight: 0.0003592639695852995\n", + "Grad encoder.encoder.4.bias: 0.0012754471972584724\n", + "Grad decoder.fc1.0.weight: 0.00010692218347685412\n", + "Grad decoder.fc1.0.bias: 0.00044226544559933245\n", + "Grad decoder.fc1.2.weight: 8.935849473346025e-05\n", + "Grad decoder.fc1.2.bias: 0.0006363496067933738\n", + "Grad decoder.fc1.4.weight: 5.806275657960214e-05\n", + "Grad decoder.fc1.4.bias: 0.0009947798680514097\n", + "Grad decoder.fc2.weight: 9.914922702591866e-05\n", + "Grad decoder.fc2.bias: 0.0018542225006967783\n", + "Grad _memory_unit.weight_ih_l0: 4.901807187707163e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.5834811822278425e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.393875754729379e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.8931542601640103e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.404183219885454e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.70323720946908e-05\n", + "Data X Sample: tensor([[1.3770, 1.5643, 1.7926, 1.8170, 1.9755, 2.0685, 1.9043, 2.0045, 3.3564,\n", + " 4.1752, 4.3461, 4.4150, 4.0723, 3.9561, 3.9140, 3.6596, 3.6196, 3.5360,\n", + " 3.4837, 3.4089, 3.4007, 3.1858, 2.9134, 2.7428, 2.7721, 2.8313, 2.7918,\n", + " 2.7816, 2.9072, 3.0229, 3.1601, 3.1972, 3.7885, 2.8446, 4.5469, 4.9472,\n", + " 4.9732, 5.3986, 6.0912, 5.7707, 1.0595, 0.6213, 0.6690, 1.0821, 1.4985,\n", + " 1.7784, 1.1830, 1.9235]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1854, -0.2044, 0.8934, -1.3645, 0.1217, 0.0765, 0.0438, 0.0530,\n", + " 0.9850, 0.3579, 0.4177, -0.7378, -0.8183, 1.0884, 0.3879, -0.5553,\n", + " 0.4292, 0.4825, -0.1981, -1.1910, 0.3327, 0.0180, -0.7155, 0.0349,\n", + " -0.1834, -0.4380, -0.1684, 1.0532, -0.3146, -0.0953, 0.2821, -1.0199,\n", + " -0.3187, -0.6471, 0.3941, -0.0484, 0.0000, 0.0561, -0.7681, 0.1324,\n", + " -0.0945, -0.2528, 0.9628]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2314, -0.2769, -0.0984, -0.1970, -0.0875, 0.1136, 0.1218, 0.2517,\n", + " 0.1540, 0.2021, 0.1753, -0.1439, -0.1455, -0.2504, -0.1866, -0.2551,\n", + " -0.2123, -0.1181, -0.0767, -0.1310, -0.1024, -0.0488, -0.0473, -0.0368,\n", + " -0.0479, 0.0519, -0.0071, -0.0335, -0.1486, -0.2031, -0.2117, -0.1752,\n", + " -0.2297, -0.2564, -0.1410, -0.1630, -0.0251, 0.0061, -0.0152, 0.2683,\n", + " 0.3141, 0.3024, 0.2140]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00036500394344329834\n", + "Grad encoder.fc1.bias: 0.0005927712190896273\n", + "Grad encoder.encoder.0.weight: 9.895275434246287e-05\n", + "Grad encoder.encoder.0.bias: 0.00034178438363596797\n", + "Grad encoder.encoder.2.weight: 5.655783388647251e-05\n", + "Grad encoder.encoder.2.bias: 0.0002852267643902451\n", + "Grad encoder.encoder.4.weight: 0.00017532045603729784\n", + "Grad encoder.encoder.4.bias: 0.0007860539481043816\n", + "Grad decoder.fc1.0.weight: 5.732034333050251e-05\n", + "Grad decoder.fc1.0.bias: 0.000232148144277744\n", + "Grad decoder.fc1.2.weight: 4.829895624425262e-05\n", + "Grad decoder.fc1.2.bias: 0.00020428409334272146\n", + "Grad decoder.fc1.4.weight: 3.430766810197383e-05\n", + "Grad decoder.fc1.4.bias: 0.00029740476747974753\n", + "Grad decoder.fc2.weight: 9.651212167227641e-05\n", + "Grad decoder.fc2.bias: 0.00193494139239192\n", + "Grad _memory_unit.weight_ih_l0: 3.5525529256119626e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.803475242923014e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.58841701503843e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.921763214340899e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.304209819063544e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.2441708754049614e-05\n", + "Data X Sample: tensor([[ 0.0095, 0.0175, 0.0316, 0.0153, 0.0017, 0.0309, 0.0247, 0.0227,\n", + " 0.0391, 0.0348, 0.0032, 0.0175, 0.0244, 0.0218, 0.0101, 0.0082,\n", + " -0.1101, -0.1470, -0.1776, -0.1525, -0.1767, -0.1148, -0.1759, -0.1756,\n", + " -0.1445, -0.2978, -0.2877, -0.5098, -0.0659, -0.0655, -0.0700, -0.0746,\n", + " -0.0198, -0.0641, -0.0123, 0.0122, 0.0098, -0.0133, -0.0254, 0.0057,\n", + " 0.0095, -0.0139, 0.0081, 0.0000, 0.0119, -0.0114, 0.0068, -0.0156]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.8544, -0.3594, 0.4493, 0.2559, 0.0230, 0.9051, -0.4468, -0.0672,\n", + " 0.3254, -0.0832, -0.1691, -0.2476, 0.3178, 0.0019, 0.2053, 0.0894,\n", + " 1.3818, 0.4187, -0.4318, 0.5363, 0.2986, -1.0635, 0.4329, -0.6336,\n", + " -0.4949, -0.4433, -0.8763, -0.2334, 0.2015, -0.2625, 0.4173, 1.1334,\n", + " 0.6654, 0.6960, -0.1216, 0.0668, 0.4915, -0.3712, -1.8131, -0.1414,\n", + " -0.4646, -0.1963, 0.0487]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.6226, 0.5705, 0.1484, 0.4594, 0.1154, -0.1651, -0.6491, -0.7733,\n", + " -0.3064, -0.3826, -0.3541, 0.3910, 0.2954, 0.3770, 0.2378, 0.4374,\n", + " 0.4319, 0.1467, 0.1798, 0.2065, 0.1080, 0.0887, 0.0637, 0.0010,\n", + " 0.0661, 0.0892, -0.0775, 0.1140, 0.3667, 0.5057, 0.4283, 0.3555,\n", + " 0.4528, 0.4487, 0.2926, 0.2679, -0.0019, 0.0427, -0.0769, -0.4804,\n", + " -0.4899, -0.4957, -0.5181]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005073104985058308\n", + "Grad encoder.fc1.bias: 0.00047336152056232095\n", + "Grad encoder.encoder.0.weight: 0.0001320947048952803\n", + "Grad encoder.encoder.0.bias: 0.0006424533203244209\n", + "Grad encoder.encoder.2.weight: 8.765600068727508e-05\n", + "Grad encoder.encoder.2.bias: 0.0005971031496301293\n", + "Grad encoder.encoder.4.weight: 0.00033898241235874593\n", + "Grad encoder.encoder.4.bias: 0.0017577055841684341\n", + "Grad decoder.fc1.0.weight: 9.754744678502902e-05\n", + "Grad decoder.fc1.0.bias: 0.00048792065354064107\n", + "Grad decoder.fc1.2.weight: 9.496328129898757e-05\n", + "Grad decoder.fc1.2.bias: 0.0005169861833564937\n", + "Grad decoder.fc1.4.weight: 9.578193566994742e-05\n", + "Grad decoder.fc1.4.bias: 0.0008925166912376881\n", + "Grad decoder.fc2.weight: 0.00017819878121372312\n", + "Grad decoder.fc2.bias: 0.0031073130667209625\n", + "Grad _memory_unit.weight_ih_l0: 8.350146345037501e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.3419499231968075e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.7408559870091267e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.9055721572367474e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001277086848858744\n", + "Grad _memory_unit.bias_hh_l1: 6.486443453468382e-05\n", + "Data X Sample: tensor([[2.5089, 2.8256, 3.0503, 3.0327, 3.3688, 3.3767, 3.6853, 3.7123, 3.6493,\n", + " 3.8814, 3.8734, 3.7820, 3.8504, 3.6507, 3.7223, 3.5078, 3.4419, 3.5089,\n", + " 3.4321, 3.3047, 3.2731, 3.1874, 3.0002, 2.8535, 2.7627, 2.6641, 2.7519,\n", + " 2.7204, 2.6019, 2.7380, 2.7156, 2.7771, 2.7413, 1.9521, 3.4047, 3.7773,\n", + " 3.8995, 4.1211, 4.5320, 4.3947, 1.9806, 1.1570, 1.0206, 2.0322, 2.7710,\n", + " 2.8420, 2.1757, 2.9166]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0620, 0.0263, 0.2645, -0.3194, 0.1888, 0.9180, -0.0477, 0.0124,\n", + " -0.1503, 0.0276, -0.0309, -0.5000, -0.6984, 0.5083, 0.1344, 0.2701,\n", + " 0.1853, 0.6034, -1.3144, 0.0142, -0.1998, 0.0460, 0.3519, -0.3540,\n", + " -0.1428, -0.3507, -0.7507, -0.6858, 0.1868, -0.0486, -0.1689, 0.4898,\n", + " -0.4998, 0.1437, 0.4990, 0.5838, -0.4532, 0.0000, 1.1339, -0.0655,\n", + " 0.0706, 0.4181, 0.2026]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1098, -0.1174, -0.0397, -0.1465, -0.0636, 0.0676, 0.0307, 0.1533,\n", + " 0.1237, 0.1374, 0.1108, -0.0750, -0.1192, -0.1704, -0.1244, -0.1780,\n", + " -0.1001, -0.1149, -0.0276, -0.0623, -0.0428, -0.0650, -0.0867, -0.0636,\n", + " -0.0214, 0.1144, -0.0272, -0.0290, -0.1238, -0.1866, -0.1235, -0.1049,\n", + " -0.1249, -0.1635, -0.0755, -0.1236, -0.0248, -0.0136, -0.0419, 0.1457,\n", + " 0.2230, 0.1754, 0.1421]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001828017848310992\n", + "Grad encoder.fc1.bias: 0.0008732338901609182\n", + "Grad encoder.encoder.0.weight: 5.4514915973413736e-05\n", + "Grad encoder.encoder.0.bias: 0.0005479699466377497\n", + "Grad encoder.encoder.2.weight: 3.814478259300813e-05\n", + "Grad encoder.encoder.2.bias: 0.00038237046101130545\n", + "Grad encoder.encoder.4.weight: 0.00012863903248216957\n", + "Grad encoder.encoder.4.bias: 0.0007379594026133418\n", + "Grad decoder.fc1.0.weight: 4.355921191745438e-05\n", + "Grad decoder.fc1.0.bias: 0.00025096265017054975\n", + "Grad decoder.fc1.2.weight: 5.345923636923544e-05\n", + "Grad decoder.fc1.2.bias: 0.0003931279934477061\n", + "Grad decoder.fc1.4.weight: 5.800590952276252e-05\n", + "Grad decoder.fc1.4.bias: 0.0005839698133058846\n", + "Grad decoder.fc2.weight: 0.00011215317499591038\n", + "Grad decoder.fc2.bias: 0.002085787244141102\n", + "Grad _memory_unit.weight_ih_l0: 3.9786086745152716e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.3181080248614307e-05\n", + "Grad _memory_unit.bias_hh_l0: 7.292894224519841e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.925980996020371e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.426016676006839e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.202601172029972e-05\n", + "Data X Sample: tensor([[1.5669, 1.8687, 1.9609, 2.0619, 2.1514, 2.2335, 2.3495, 2.4886, 2.5118,\n", + " 2.5418, 2.6425, 2.5162, 2.4390, 2.4511, 2.4160, 2.3919, 2.2799, 2.3425,\n", + " 2.3892, 2.3228, 2.3800, 2.4755, 2.4435, 2.4049, 2.4718, 2.4682, 2.4562,\n", + " 2.4512, 2.0954, 2.3417, 2.1662, 2.0531, 1.7820, 1.1511, 1.6349, 1.5396,\n", + " 1.4552, 1.4550, 1.4388, 1.3561, 1.2982, 0.7348, 0.7053, 1.3433, 1.9464,\n", + " 2.0871, 1.3734, 1.9861]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2547, 0.3611, 0.5327, 0.0806, -0.0062, -1.1966, 0.9914, 0.7903,\n", + " 0.0077, 0.7483, 0.9177, -0.3692, 0.5389, 0.2067, 0.1427, -0.1760,\n", + " 0.2476, -0.1887, -0.3562, -0.4888, 1.8084, -0.4249, 1.6885, -0.2952,\n", + " 1.3905, 0.3057, -0.8695, 1.8465, -0.9412, 0.0399, -1.4937, -0.3333,\n", + " -0.3905, -0.1563, -1.1231, -0.8184, 0.0000, -0.6596, 0.0040, 0.4375,\n", + " 0.7185, 0.4217, 0.9663]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4035, 0.3623, 0.0654, 0.2532, 0.0809, -0.0775, -0.3724, -0.3985,\n", + " -0.2019, -0.2460, -0.2710, 0.2109, 0.1766, 0.2285, 0.1491, 0.2882,\n", + " 0.2563, 0.0560, 0.0964, 0.1330, 0.0558, 0.0672, 0.0821, -0.0151,\n", + " 0.0096, 0.0443, -0.0609, 0.0114, 0.1720, 0.2688, 0.1848, 0.2013,\n", + " 0.2605, 0.2406, 0.1886, 0.1776, -0.0478, -0.0300, -0.0485, -0.2940,\n", + " -0.2768, -0.2947, -0.3326]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00021831330377608538\n", + "Grad encoder.fc1.bias: 0.00012557688751257956\n", + "Grad encoder.encoder.0.weight: 6.270674930419773e-05\n", + "Grad encoder.encoder.0.bias: 0.00014701807231176645\n", + "Grad encoder.encoder.2.weight: 4.12078807130456e-05\n", + "Grad encoder.encoder.2.bias: 0.0001753313117660582\n", + "Grad encoder.encoder.4.weight: 0.00014953932259231806\n", + "Grad encoder.encoder.4.bias: 0.0005553243099711835\n", + "Grad decoder.fc1.0.weight: 4.3251940951449797e-05\n", + "Grad decoder.fc1.0.bias: 0.0001383160997647792\n", + "Grad decoder.fc1.2.weight: 6.338179809972644e-05\n", + "Grad decoder.fc1.2.bias: 0.00044293003156781197\n", + "Grad decoder.fc1.4.weight: 6.407382898032665e-05\n", + "Grad decoder.fc1.4.bias: 0.0008062418783083558\n", + "Grad decoder.fc2.weight: 0.00011430537415435538\n", + "Grad decoder.fc2.bias: 0.0019150511361658573\n", + "Grad _memory_unit.weight_ih_l0: 2.25695407607418e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.913997261406621e-06\n", + "Grad _memory_unit.bias_hh_l0: 2.785331844279426e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.0186020062974421e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.5270408261567354e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.711925506242551e-05\n", + "Data X Sample: tensor([[1.4629, 1.5366, 1.7686, 1.7755, 1.8970, 2.0419, 2.0799, 1.9420, 2.3849,\n", + " 3.5796, 4.1938, 4.1034, 3.9836, 3.9725, 3.8787, 3.5447, 3.5426, 3.4490,\n", + " 3.3825, 3.4274, 3.4154, 3.3695, 2.9689, 2.9012, 2.7326, 2.8261, 2.8771,\n", + " 2.8509, 2.8100, 2.9607, 3.0096, 3.0314, 3.5839, 2.6318, 4.3263, 4.6650,\n", + " 4.9378, 5.1176, 5.8694, 5.6941, 1.0357, 0.6034, 0.6892, 1.1338, 1.6015,\n", + " 1.8756, 1.1082, 1.7202]], device='cuda:0')\n", + "Data Y Sample: tensor([[-7.0432e-01, -1.3305e+00, -5.4719e-01, -5.9970e-01, 5.6666e-01,\n", + " 6.1714e-01, 1.3241e-01, 7.8452e-01, 1.6351e+00, 9.6585e-01,\n", + " 6.4047e-01, -5.4354e-01, 3.7380e-04, 4.5090e-01, -8.2282e-01,\n", + " -4.2835e-01, -8.3587e-02, 4.7810e-01, -3.9028e-03, 1.2668e+00,\n", + " -3.2474e-02, -3.2335e-01, 4.5383e-01, 4.7852e-01, 4.1681e-01,\n", + " 6.8712e-01, 8.4384e-01, 2.3929e-01, -1.9671e+00, -1.7561e-01,\n", + " -1.8022e-01, 5.0075e-01, 2.1985e-01, -7.9510e-01, -7.4149e-01,\n", + " -1.0895e+00, -8.4715e-01, -2.4087e-01, -5.9875e-01, 4.9388e-01,\n", + " 8.7272e-01, 9.6374e-01, 1.8433e+00]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2401, -0.2850, -0.0956, -0.2011, -0.0871, 0.1239, 0.1300, 0.2637,\n", + " 0.1561, 0.2097, 0.1859, -0.1484, -0.1521, -0.2626, -0.1874, -0.2628,\n", + " -0.2105, -0.1218, -0.0759, -0.1346, -0.1009, -0.0483, -0.0534, -0.0386,\n", + " -0.0519, 0.0476, -0.0143, -0.0446, -0.1573, -0.2106, -0.2298, -0.1857,\n", + " -0.2372, -0.2647, -0.1424, -0.1769, -0.0265, 0.0038, -0.0144, 0.2775,\n", + " 0.3237, 0.3157, 0.2184]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 8.577120024710894e-05\n", + "Grad encoder.fc1.bias: 0.000440878386143595\n", + "Grad encoder.encoder.0.weight: 2.3234710170072503e-05\n", + "Grad encoder.encoder.0.bias: 0.0003621926880441606\n", + "Grad encoder.encoder.2.weight: 1.7501086404081434e-05\n", + "Grad encoder.encoder.2.bias: 0.0002819464134518057\n", + "Grad encoder.encoder.4.weight: 6.428857159335166e-05\n", + "Grad encoder.encoder.4.bias: 0.0005749821430072188\n", + "Grad decoder.fc1.0.weight: 2.8574469979503192e-05\n", + "Grad decoder.fc1.0.bias: 0.00017691872199065983\n", + "Grad decoder.fc1.2.weight: 3.75088638975285e-05\n", + "Grad decoder.fc1.2.bias: 0.00020262948237359524\n", + "Grad decoder.fc1.4.weight: 4.2391373426653445e-05\n", + "Grad decoder.fc1.4.bias: 0.00035461143124848604\n", + "Grad decoder.fc2.weight: 9.792762284632772e-05\n", + "Grad decoder.fc2.bias: 0.0015044007450342178\n", + "Grad _memory_unit.weight_ih_l0: 4.505888227868127e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.7650792869972065e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.105176104640123e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.7853960798674962e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.7318710130639374e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.4281529476866126e-05\n", + "Data X Sample: tensor([[1.4640, 1.8381, 2.0541, 2.1428, 2.1616, 2.2055, 2.2540, 2.3949, 2.4581,\n", + " 2.4833, 2.4522, 2.4947, 2.3458, 2.4920, 2.4160, 2.3700, 2.3240, 2.3000,\n", + " 2.3892, 2.3674, 2.4291, 2.4449, 2.5182, 2.4908, 2.3948, 2.4735, 2.3896,\n", + " 2.4961, 2.0919, 1.9454, 1.8617, 1.8044, 1.5312, 0.9657, 1.3726, 1.3499,\n", + " 1.3765, 1.3384, 1.3247, 1.3448, 1.2695, 0.7249, 0.7377, 1.3462, 1.9781,\n", + " 2.1615, 1.3598, 2.0252]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0675, 0.0119, 0.6501, 0.1589, -0.1563, -0.2670, -0.3982, 0.2110,\n", + " -0.2545, -0.1633, -0.0240, -0.6135, -0.5902, 0.4780, 0.1943, 0.4428,\n", + " 1.1515, 0.1233, -0.1105, -0.7985, -0.1317, -1.0400, -0.1755, -0.8125,\n", + " 0.0888, 1.3228, -0.7280, 0.4655, -0.4906, 0.4504, -1.0645, 0.9291,\n", + " 0.6754, -0.6331, -0.2474, 0.5009, 0.0000, -0.7815, 0.5659, -0.1137,\n", + " -0.1736, 0.0106, -0.3912]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3623, 0.3221, 0.0638, 0.2097, 0.0550, -0.0754, -0.3455, -0.3483,\n", + " -0.1848, -0.2138, -0.2485, 0.1879, 0.1674, 0.2038, 0.1397, 0.2527,\n", + " 0.2292, 0.0443, 0.0882, 0.1177, 0.0490, 0.0595, 0.0748, -0.0171,\n", + " 0.0081, 0.0494, -0.0591, 0.0176, 0.1584, 0.2248, 0.1534, 0.1724,\n", + " 0.2303, 0.2095, 0.1628, 0.1408, -0.0474, -0.0334, -0.0579, -0.2590,\n", + " -0.2347, -0.2526, -0.2972]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002713711583055556\n", + "Grad encoder.fc1.bias: 0.0003167852701153606\n", + "Grad encoder.encoder.0.weight: 7.089598511811346e-05\n", + "Grad encoder.encoder.0.bias: 0.00031342299189418554\n", + "Grad encoder.encoder.2.weight: 4.311398515710607e-05\n", + "Grad encoder.encoder.2.bias: 0.0002842679969035089\n", + "Grad encoder.encoder.4.weight: 0.00016019909526221454\n", + "Grad encoder.encoder.4.bias: 0.0005612631211988628\n", + "Grad decoder.fc1.0.weight: 4.630565672414377e-05\n", + "Grad decoder.fc1.0.bias: 0.0002070933987852186\n", + "Grad decoder.fc1.2.weight: 6.0627142374869436e-05\n", + "Grad decoder.fc1.2.bias: 0.0002980824210681021\n", + "Grad decoder.fc1.4.weight: 4.9748072342481464e-05\n", + "Grad decoder.fc1.4.bias: 0.0004285775648895651\n", + "Grad decoder.fc2.weight: 0.00010020683112088591\n", + "Grad decoder.fc2.bias: 0.002003332832828164\n", + "Grad _memory_unit.weight_ih_l0: 3.909138285962399e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.2605534720933065e-05\n", + "Grad _memory_unit.bias_hh_l0: 6.591113105969271e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.637752802707837e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.591439235606231e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.800070640456397e-05\n", + "Data X Sample: tensor([[2.6128, 3.0266, 3.2156, 3.0459, 2.9214, 3.5078, 3.9795, 3.9764, 3.8763,\n", + " 3.9998, 3.9495, 4.0313, 3.9747, 3.7407, 3.4928, 3.5269, 3.5410, 3.4722,\n", + " 3.5229, 3.3642, 3.4080, 3.2807, 2.9472, 2.9298, 2.8134, 2.7869, 2.7039,\n", + " 2.7653, 2.7406, 2.9247, 2.9746, 2.8517, 3.0581, 2.1786, 3.7331, 4.2224,\n", + " 4.3381, 4.7864, 5.2482, 5.3792, 2.0665, 1.1570, 1.0913, 1.9691, 2.8383,\n", + " 2.9220, 1.7269, 2.6351]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1277, 0.1235, 0.4857, -0.3612, 0.2641, 0.9411, 0.0676, -0.2141,\n", + " -0.2214, -0.1418, -0.8053, -0.8869, 0.0589, 0.3866, 0.0883, -0.3171,\n", + " 1.2155, 0.2843, -0.7282, -0.3662, -0.3644, 0.3907, -0.0191, -0.2877,\n", + " -0.3027, -0.2310, -1.1637, -0.5552, 0.5455, 0.1752, -0.9228, 0.6701,\n", + " 0.8669, 0.5256, 1.1736, -0.1864, -1.0138, -0.6341, 0.1391, -0.4637,\n", + " 0.1914, 1.1873, -0.1622]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2308, -0.3130, -0.1225, -0.2472, -0.1121, 0.0658, 0.0990, 0.2813,\n", + " 0.1658, 0.2340, 0.2020, -0.1443, -0.1479, -0.2566, -0.1705, -0.2946,\n", + " -0.2277, -0.1264, -0.0568, -0.1042, -0.0788, -0.0333, -0.0665, -0.0623,\n", + " -0.0360, 0.0630, 0.0489, 0.0071, -0.1550, -0.2492, -0.2024, -0.1893,\n", + " -0.2411, -0.2478, -0.1565, -0.1627, -0.0436, 0.0039, -0.0031, 0.2939,\n", + " 0.3810, 0.3563, 0.2595]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002907671732828021\n", + "Grad encoder.fc1.bias: 0.0003127091913484037\n", + "Grad encoder.encoder.0.weight: 6.904415931785479e-05\n", + "Grad encoder.encoder.0.bias: 0.000281050568446517\n", + "Grad encoder.encoder.2.weight: 4.718761920230463e-05\n", + "Grad encoder.encoder.2.bias: 0.0003674436593428254\n", + "Grad encoder.encoder.4.weight: 0.0001503162202425301\n", + "Grad encoder.encoder.4.bias: 0.0009938579751178622\n", + "Grad decoder.fc1.0.weight: 6.353836215566844e-05\n", + "Grad decoder.fc1.0.bias: 0.00043143052607774734\n", + "Grad decoder.fc1.2.weight: 0.00011500827531563118\n", + "Grad decoder.fc1.2.bias: 0.0005477939266711473\n", + "Grad decoder.fc1.4.weight: 5.55556507606525e-05\n", + "Grad decoder.fc1.4.bias: 0.000490837381221354\n", + "Grad decoder.fc2.weight: 9.981128823710606e-05\n", + "Grad decoder.fc2.bias: 0.0018416490638628602\n", + "Grad _memory_unit.weight_ih_l0: 4.507304765866138e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.5688506613951176e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.819194403651636e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.8508584364317358e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.42167462198995e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.7133362386375666e-05\n", + "Data X Sample: tensor([[1.4767, 1.7362, 1.8212, 2.0226, 2.1002, 2.2570, 2.4666, 2.4332, 2.5435,\n", + " 2.5765, 2.5981, 2.6077, 2.5766, 2.5193, 2.5673, 2.4329, 2.3884, 2.5011,\n", + " 2.4656, 2.3934, 2.4217, 2.3836, 2.3447, 2.3420, 2.3798, 2.3977, 2.3816,\n", + " 2.3860, 2.1474, 2.2500, 2.2187, 2.2438, 2.2946, 1.4303, 1.9168, 1.7634,\n", + " 1.6754, 1.4762, 1.6417, 1.5888, 1.1836, 0.7109, 0.6871, 1.1711, 1.7918,\n", + " 1.9270, 1.3802, 1.7984]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6212, 0.2878, -0.5976, 2.1405, 1.0366, 0.6030, 0.3739, -0.3885,\n", + " -1.1512, -0.6135, -0.5066, 0.4346, -0.0542, 0.6134, -0.0735, 0.4342,\n", + " 0.2699, -0.0602, 1.2071, 1.7274, 0.6454, -1.0325, -1.7721, 1.9118,\n", + " 2.7956, -1.4831, -0.3182, -0.2511, 0.3326, 0.1192, 0.9229, 0.5993,\n", + " 0.6699, 0.1258, 0.0645, 0.7238, 0.4852, 0.7916, -0.2505, -0.3471,\n", + " -0.2895, -0.3982, 1.0758]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4105, 0.3871, 0.0938, 0.2482, 0.0720, -0.0956, -0.3916, -0.3947,\n", + " -0.2229, -0.2575, -0.2844, 0.2210, 0.2100, 0.2501, 0.1794, 0.3141,\n", + " 0.2851, 0.0568, 0.0963, 0.1461, 0.0624, 0.0804, 0.0931, -0.0117,\n", + " 0.0269, 0.0601, -0.0786, 0.0127, 0.1854, 0.2579, 0.1766, 0.1876,\n", + " 0.2782, 0.2410, 0.1876, 0.1505, -0.0414, -0.0440, -0.0614, -0.2990,\n", + " -0.2907, -0.2985, -0.3575]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00029340689070522785\n", + "Grad encoder.fc1.bias: 0.00029331573750823736\n", + "Grad encoder.encoder.0.weight: 5.732930367230438e-05\n", + "Grad encoder.encoder.0.bias: 0.00027962791500613093\n", + "Grad encoder.encoder.2.weight: 5.4143347369972616e-05\n", + "Grad encoder.encoder.2.bias: 0.0004735248803626746\n", + "Grad encoder.encoder.4.weight: 0.00015307849389500916\n", + "Grad encoder.encoder.4.bias: 0.0009517064318060875\n", + "Grad decoder.fc1.0.weight: 6.616641621803865e-05\n", + "Grad decoder.fc1.0.bias: 0.00039372697938233614\n", + "Grad decoder.fc1.2.weight: 9.027465421240777e-05\n", + "Grad decoder.fc1.2.bias: 0.0009185806848108768\n", + "Grad decoder.fc1.4.weight: 6.395123637048528e-05\n", + "Grad decoder.fc1.4.bias: 0.0008496905793435872\n", + "Grad decoder.fc2.weight: 0.00010618795931804925\n", + "Grad decoder.fc2.bias: 0.0018784201238304377\n", + "Grad _memory_unit.weight_ih_l0: 1.0860561815206893e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.7983780455542728e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.722897468425799e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.1951402636186685e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011414126493036747\n", + "Grad _memory_unit.bias_hh_l1: 5.509277252713218e-05\n", + "Data X Sample: tensor([[1.5446, 1.6750, 1.8152, 1.9329, 2.0541, 2.2453, 2.3834, 2.4276, 2.4727,\n", + " 2.4644, 2.5759, 2.5220, 2.4456, 2.4156, 2.4084, 2.4110, 2.3491, 2.4799,\n", + " 2.4822, 2.4269, 2.4487, 2.3913, 2.3471, 2.3076, 2.3197, 2.3925, 2.3736,\n", + " 2.4023, 2.1856, 2.2991, 2.1977, 2.1747, 2.2528, 1.4578, 1.9364, 1.8071,\n", + " 1.5810, 1.4603, 1.5973, 1.6001, 1.1407, 0.7030, 0.6669, 1.1625, 1.8116,\n", + " 1.8641, 1.2850, 1.9392]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2260, 0.7269, -0.3607, 0.0497, 0.9596, -0.7287, -0.8045, -0.2628,\n", + " -1.1144, -0.3249, -0.5784, -0.5771, -0.3889, -0.0096, 0.3292, 0.2323,\n", + " 0.1684, -0.7530, 1.2856, -0.1939, 0.5448, 0.7159, 0.3430, 1.0728,\n", + " 0.4596, -0.0168, -0.5841, 0.3913, -0.5472, 0.1508, -0.3114, 0.7662,\n", + " -0.2187, 0.3360, 0.2760, 0.9605, 0.1343, 0.1511, -0.0156, 0.1435,\n", + " -0.4494, -0.1010, -1.1123]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4006, 0.3791, 0.0975, 0.2406, 0.0672, -0.0949, -0.3875, -0.3833,\n", + " -0.2205, -0.2519, -0.2784, 0.2184, 0.2107, 0.2475, 0.1782, 0.3092,\n", + " 0.2795, 0.0556, 0.0959, 0.1460, 0.0629, 0.0800, 0.0903, -0.0102,\n", + " 0.0283, 0.0624, -0.0795, 0.0133, 0.1801, 0.2474, 0.1708, 0.1795,\n", + " 0.2733, 0.2353, 0.1826, 0.1405, -0.0400, -0.0470, -0.0636, -0.2943,\n", + " -0.2850, -0.2905, -0.3517]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 4.509888094617054e-05\n", + "Grad encoder.fc1.bias: 2.6094114218722098e-05\n", + "Grad encoder.encoder.0.weight: 1.1599950994423125e-05\n", + "Grad encoder.encoder.0.bias: 1.6282949218293652e-05\n", + "Grad encoder.encoder.2.weight: 7.806585927028209e-06\n", + "Grad encoder.encoder.2.bias: 1.9122624507872388e-05\n", + "Grad encoder.encoder.4.weight: 3.327004378661513e-05\n", + "Grad encoder.encoder.4.bias: 5.800413782708347e-05\n", + "Grad decoder.fc1.0.weight: 1.423385037924163e-05\n", + "Grad decoder.fc1.0.bias: 3.721919347299263e-05\n", + "Grad decoder.fc1.2.weight: 2.9122751584509388e-05\n", + "Grad decoder.fc1.2.bias: 0.00010404639033367857\n", + "Grad decoder.fc1.4.weight: 2.4560453312005848e-05\n", + "Grad decoder.fc1.4.bias: 0.00026048015570268035\n", + "Grad decoder.fc2.weight: 8.029390301089734e-05\n", + "Grad decoder.fc2.bias: 0.002005235990509391\n", + "Grad _memory_unit.weight_ih_l0: 4.675887055327621e-07\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.485576260369271e-06\n", + "Grad _memory_unit.bias_hh_l0: 1.2990652749067522e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.703424115679809e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.701980161480606e-06\n", + "Grad _memory_unit.bias_hh_l1: 4.850771802011877e-06\n", + "Data X Sample: tensor([[ 0.0011, 0.0000, -0.0060, 0.0000, 0.0000, 0.0015, -0.0046, -0.0085,\n", + " 0.0000, 0.0032, 0.0000, -0.0039, 0.0022, -0.0055, 0.0025, 0.0123,\n", + " 0.0252, 0.0251, 0.0248, 0.0260, 0.0245, 0.0122, 0.0145, 0.0267,\n", + " 0.0188, 0.0104, 0.0346, 0.0653, -0.0243, 0.0295, -0.0035, -0.0028,\n", + " -0.0066, -0.0046, -0.0025, 0.0243, 0.0236, 0.0027, 0.0190, 0.0057,\n", + " 0.0334, 0.0040, 0.0081, -0.0029, 0.0040, 0.0229, 0.0136, 0.0391]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7566, 0.1755, -0.9536, 0.6975, -2.9465, -0.0167, -1.1376, -0.8345,\n", + " -0.5240, -0.9054, -0.9966, 2.5970, -0.4670, 0.2910, 0.4606, 0.2953,\n", + " 1.3501, -0.0627, 0.0623, -0.0169, -0.2818, 0.5646, 0.0374, 1.1179,\n", + " -0.1307, 0.9449, 2.2688, 0.5256, 1.3219, 1.3854, 1.0532, -1.1013,\n", + " 0.1339, 0.6531, 1.1509, -0.2678, 0.0213, 0.3857, -0.3712, -1.0574,\n", + " -0.8776, -0.7011, -0.5675]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.9718, 0.7553, 0.1265, 0.4999, -0.6281, -0.7259, -1.4796, -1.2881,\n", + " -1.0080, -0.9892, -1.0181, 0.4663, 0.5878, 0.5886, 0.4347, 0.6675,\n", + " 0.5370, -0.0224, 0.1644, 0.1665, 0.1763, 0.1003, 0.1078, -0.0046,\n", + " 0.0720, 0.0220, 0.3328, 0.6348, 1.0790, 1.1005, 0.9277, 0.5837,\n", + " 0.8388, 0.6124, 0.3999, 0.3918, -0.0685, 0.0199, -0.0168, -0.9627,\n", + " -0.8592, -0.6121, -0.5761]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000233336744713597\n", + "Grad encoder.fc1.bias: 0.0004476516623981297\n", + "Grad encoder.encoder.0.weight: 5.9406287618912756e-05\n", + "Grad encoder.encoder.0.bias: 0.0005842875689268112\n", + "Grad encoder.encoder.2.weight: 4.0358310798183084e-05\n", + "Grad encoder.encoder.2.bias: 0.0005887929582968354\n", + "Grad encoder.encoder.4.weight: 0.00013702786236535758\n", + "Grad encoder.encoder.4.bias: 0.0013953819870948792\n", + "Grad decoder.fc1.0.weight: 6.00168204982765e-05\n", + "Grad decoder.fc1.0.bias: 0.0005493584903888404\n", + "Grad decoder.fc1.2.weight: 6.501456664409488e-05\n", + "Grad decoder.fc1.2.bias: 0.0004307854687795043\n", + "Grad decoder.fc1.4.weight: 6.032423334545456e-05\n", + "Grad decoder.fc1.4.bias: 0.000483580632135272\n", + "Grad decoder.fc2.weight: 0.00011346666724421084\n", + "Grad decoder.fc2.bias: 0.0015915024559944868\n", + "Grad _memory_unit.weight_ih_l0: 9.724252777232323e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.584818088915199e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.3699676603428088e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.491676918405574e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00012466293992474675\n", + "Grad _memory_unit.bias_hh_l1: 6.232995656318963e-05\n", + "Data X Sample: tensor([[1.4120, 1.5934, 1.6153, 1.8170, 1.8628, 1.9698, 1.9166, 1.7575, 3.0122,\n", + " 4.1136, 4.2477, 4.3682, 4.1767, 3.9806, 3.7602, 3.7457, 3.6636, 3.5573,\n", + " 3.6282, 3.5353, 3.5037, 3.4323, 3.0580, 2.9184, 2.8396, 2.9175, 2.9783,\n", + " 3.0100, 2.9072, 3.1376, 3.2615, 3.3519, 3.8743, 2.8126, 4.5640, 4.9228,\n", + " 5.0047, 5.3615, 6.1356, 5.9211, 1.0834, 0.5775, 0.5962, 1.0362, 1.5421,\n", + " 1.7612, 1.2238, 1.7593]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.2928, 0.3489, -0.0587, 1.7466, 1.2657, 0.7907, 1.0346, -0.3466,\n", + " -0.1034, -0.2150, -1.5782, 0.1806, 0.6047, -0.1863, 0.5143, 0.5122,\n", + " 0.7606, -0.0021, -0.5246, -0.0144, 0.6004, 0.2633, -0.2066, -0.0553,\n", + " -0.0939, 0.0534, -1.1065, -0.6408, -0.7307, -1.1218, -0.2753, -0.0818,\n", + " -0.0694, -0.5281, 0.6100, -0.6664, -0.2018, -0.3276, -0.0482, -0.2478,\n", + " -0.6402, -0.8965, -0.5230]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2753, -0.3160, -0.0996, -0.2171, -0.0793, 0.1473, 0.1667, 0.3007,\n", + " 0.1721, 0.2392, 0.2265, -0.1678, -0.1729, -0.2990, -0.2096, -0.2871,\n", + " -0.2199, -0.1198, -0.0871, -0.1469, -0.1066, -0.0500, -0.0522, -0.0361,\n", + " -0.0523, 0.0487, -0.0295, -0.0775, -0.1865, -0.2405, -0.2721, -0.2184,\n", + " -0.2567, -0.3061, -0.1568, -0.2136, -0.0305, -0.0030, -0.0066, 0.3104,\n", + " 0.3531, 0.3597, 0.2390]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00028740684501826763\n", + "Grad encoder.fc1.bias: 0.00017791794380173087\n", + "Grad encoder.encoder.0.weight: 5.4774391173850745e-05\n", + "Grad encoder.encoder.0.bias: 0.0002079829719150439\n", + "Grad encoder.encoder.2.weight: 5.658759982907213e-05\n", + "Grad encoder.encoder.2.bias: 0.0003818795084953308\n", + "Grad encoder.encoder.4.weight: 0.00013849968672730029\n", + "Grad encoder.encoder.4.bias: 0.0010874124709516764\n", + "Grad decoder.fc1.0.weight: 5.195785342948511e-05\n", + "Grad decoder.fc1.0.bias: 0.0002862719411496073\n", + "Grad decoder.fc1.2.weight: 6.965092325117439e-05\n", + "Grad decoder.fc1.2.bias: 0.0007922368822619319\n", + "Grad decoder.fc1.4.weight: 3.371813363628462e-05\n", + "Grad decoder.fc1.4.bias: 0.0007163595291785896\n", + "Grad decoder.fc2.weight: 8.532291394658387e-05\n", + "Grad decoder.fc2.bias: 0.0023883425164967775\n", + "Grad _memory_unit.weight_ih_l0: 8.082110070972703e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.3911296264268458e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.0862302588066086e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.832279162452323e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010137145000044256\n", + "Grad _memory_unit.bias_hh_l1: 4.9158872570842505e-05\n", + "Data X Sample: tensor([[1.2889, 1.5235, 1.7205, 1.8870, 1.9362, 1.9521, 1.9982, 2.0159, 1.9748,\n", + " 1.9794, 1.9954, 1.9105, 1.8353, 1.7449, 1.6695, 1.6356, 1.6824, 1.6810,\n", + " 1.6913, 1.6012, 1.5899, 1.5768, 1.5302, 1.4850, 1.4095, 1.4261, 1.2734,\n", + " 1.3745, 1.0061, 1.0513, 0.9834, 0.9644, 0.8602, 0.5950, 0.9020, 0.9218,\n", + " 0.9400, 1.1105, 1.2106, 1.1944, 1.1741, 0.6572, 0.6669, 1.1826, 1.6174,\n", + " 1.9671, 1.2782, 1.7671]], device='cuda:0')\n", + "Data Y Sample: tensor([[-2.0987, -1.6623, -1.4289, -1.2355, 0.0914, 0.7440, 1.9019, 2.8486,\n", + " 2.4008, 4.6735, 5.7451, -0.8250, -0.0666, -1.3982, -0.3473, -2.8038,\n", + " -5.2410, -1.5473, 0.3215, -0.9918, -0.5821, -0.2634, -0.3588, -0.1166,\n", + " -0.0458, -0.3702, 0.8996, 0.1828, -0.5500, -1.8314, -2.4530, -2.7035,\n", + " 0.3050, -3.7339, -1.9068, -1.9216, -0.4251, -0.6223, 0.9761, 8.4055,\n", + " 7.6505, 4.2164, 4.2152]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.6406, -0.6786, -0.3083, -0.6012, -0.3918, -0.0609, 0.2578, 0.7365,\n", + " 0.4673, 0.7833, 0.8674, -0.2343, -0.2894, -0.5620, -0.3573, -0.7924,\n", + " -0.5568, -0.3560, -0.0254, -0.2089, -0.1565, -0.0435, -0.0843, -0.1026,\n", + " -0.0291, -0.0159, 0.3355, 0.2092, -0.1805, -0.5148, -0.3961, -0.3398,\n", + " -0.4682, -0.6695, -0.2877, -0.5000, -0.0590, 0.0215, -0.0074, 1.4351,\n", + " 1.4310, 1.1621, 0.9252]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00039279734482988715\n", + "Grad encoder.fc1.bias: 0.0002775373577605933\n", + "Grad encoder.encoder.0.weight: 5.8648707636166364e-05\n", + "Grad encoder.encoder.0.bias: 0.00031929078977555037\n", + "Grad encoder.encoder.2.weight: 4.938880738336593e-05\n", + "Grad encoder.encoder.2.bias: 0.0004526684060692787\n", + "Grad encoder.encoder.4.weight: 0.0001604597782716155\n", + "Grad encoder.encoder.4.bias: 0.001380622386932373\n", + "Grad decoder.fc1.0.weight: 6.187287362990901e-05\n", + "Grad decoder.fc1.0.bias: 0.0003452456439845264\n", + "Grad decoder.fc1.2.weight: 9.027221676660702e-05\n", + "Grad decoder.fc1.2.bias: 0.001151994802057743\n", + "Grad decoder.fc1.4.weight: 6.323384877759963e-05\n", + "Grad decoder.fc1.4.bias: 0.001337910653091967\n", + "Grad decoder.fc2.weight: 0.00011908137093996629\n", + "Grad decoder.fc2.bias: 0.0015168054960668087\n", + "Grad _memory_unit.weight_ih_l0: 9.715958185552154e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.694551065156702e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.3618823686556425e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.141589554114034e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011772155994549394\n", + "Grad _memory_unit.bias_hh_l1: 5.733400394092314e-05\n", + "Data X Sample: tensor([[1.6496, 1.9037, 2.1157, 2.1800, 2.3016, 2.4088, 2.3803, 2.4886, 2.4605,\n", + " 2.4738, 2.4998, 2.5317, 2.3724, 2.3666, 2.3706, 2.4219, 2.4230, 2.4702,\n", + " 2.4656, 2.5906, 2.5665, 2.6209, 2.6026, 2.5634, 2.5712, 2.8261, 2.7119,\n", + " 2.7123, 2.4978, 2.6332, 2.4147, 2.3267, 2.0966, 1.3228, 1.8531, 1.7463,\n", + " 1.6715, 1.6167, 1.5783, 1.4611, 1.3793, 0.8065, 0.7963, 1.3864, 1.9861,\n", + " 2.2415, 1.3870, 2.0799]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.8703, -0.1075, 1.6377, -0.4961, 0.2817, 0.9950, 0.3299, 0.0360,\n", + " -0.2978, -0.2047, -0.0095, -0.1047, -0.3874, 0.7880, -0.2452, -0.0824,\n", + " 1.4400, 0.5547, -0.0927, -0.2555, -0.1994, -0.2606, 0.9679, 0.9309,\n", + " -0.3117, -0.3429, -0.6955, 0.3890, -1.6165, -1.4182, -0.1216, 0.4915,\n", + " 0.3828, 0.1551, 0.0069, 0.4136, -0.0457, 0.4473, 0.0000, 0.0905,\n", + " 0.1886, -0.0984, -0.6151]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3863, 0.3869, 0.1263, 0.2451, 0.0871, -0.0765, -0.3746, -0.3473,\n", + " -0.2232, -0.2442, -0.2681, 0.2174, 0.2273, 0.2548, 0.1768, 0.3232,\n", + " 0.2827, 0.0663, 0.1101, 0.1555, 0.0868, 0.0958, 0.0963, 0.0058,\n", + " 0.0454, 0.0702, -0.0954, 0.0080, 0.1528, 0.2267, 0.1599, 0.1621,\n", + " 0.2717, 0.2252, 0.1821, 0.1347, -0.0304, -0.0666, -0.0715, -0.2991,\n", + " -0.2813, -0.2893, -0.3667]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 9.378294635098428e-05\n", + "Grad encoder.fc1.bias: 8.582115697208792e-05\n", + "Grad encoder.encoder.0.weight: 2.5517654648865573e-05\n", + "Grad encoder.encoder.0.bias: 6.875405961181968e-05\n", + "Grad encoder.encoder.2.weight: 1.9963117665611207e-05\n", + "Grad encoder.encoder.2.bias: 0.00013232120545580983\n", + "Grad encoder.encoder.4.weight: 6.433921225834638e-05\n", + "Grad encoder.encoder.4.bias: 0.000346350425388664\n", + "Grad decoder.fc1.0.weight: 3.115715298918076e-05\n", + "Grad decoder.fc1.0.bias: 0.0001639487745705992\n", + "Grad decoder.fc1.2.weight: 3.871056833304465e-05\n", + "Grad decoder.fc1.2.bias: 0.00023927669099066406\n", + "Grad decoder.fc1.4.weight: 5.389166108216159e-05\n", + "Grad decoder.fc1.4.bias: 0.0005720631452277303\n", + "Grad decoder.fc2.weight: 9.231429430656135e-05\n", + "Grad decoder.fc2.bias: 0.002016568323597312\n", + "Grad _memory_unit.weight_ih_l0: 2.854217655112734e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.6617123037576675e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.692998562764842e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.1787876701419009e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.143955473206006e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.5573656128253788e-05\n", + "Data X Sample: tensor([[1.6167, 1.6051, 1.7205, 1.9001, 2.1104, 2.1996, 1.9459, 3.5661, 4.4670,\n", + " 4.4090, 4.4254, 4.3546, 4.2055, 4.0515, 3.9695, 3.8086, 3.7375, 3.6269,\n", + " 3.6613, 3.4981, 3.4449, 3.4078, 3.0460, 2.8936, 2.9016, 2.9044, 2.9490,\n", + " 3.0304, 2.8759, 3.0262, 3.1041, 3.2635, 3.5949, 2.6798, 4.5297, 4.9739,\n", + " 5.1994, 5.5417, 6.2180, 6.0005, 1.1359, 0.6432, 0.6043, 1.1137, 1.6927,\n", + " 1.9156, 1.3054, 1.8062]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0504, -0.0598, -0.0730, -0.8032, 0.3435, -0.1174, 0.3541, 0.3386,\n", + " 0.7500, 0.2707, 0.0664, -0.8404, -0.1176, 0.3604, 1.6510, -0.0319,\n", + " 0.0849, 0.0868, 0.9945, 0.2479, 2.1909, -0.3504, 0.8668, 0.4047,\n", + " 0.1087, 2.6985, 0.1546, -0.4839, -0.5720, -0.7571, -0.4129, -0.8077,\n", + " -0.0501, -0.7172, -0.0206, -0.9293, 0.4796, -0.1625, -0.5596, 0.2443,\n", + " 0.5748, 0.2561, 0.1782]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2490, -0.2931, -0.0905, -0.2105, -0.0725, 0.1300, 0.1528, 0.2723,\n", + " 0.1597, 0.2251, 0.1977, -0.1501, -0.1510, -0.2658, -0.1907, -0.2694,\n", + " -0.2093, -0.1079, -0.0697, -0.1406, -0.0913, -0.0488, -0.0497, -0.0408,\n", + " -0.0556, 0.0368, -0.0250, -0.0649, -0.1730, -0.2323, -0.2468, -0.1957,\n", + " -0.2363, -0.2773, -0.1429, -0.1932, -0.0257, 0.0011, -0.0132, 0.2773,\n", + " 0.3273, 0.3190, 0.2160]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00011074409121647477\n", + "Grad encoder.fc1.bias: 0.00017007655696943402\n", + "Grad encoder.encoder.0.weight: 2.5258175810449757e-05\n", + "Grad encoder.encoder.0.bias: 0.00017519686662126333\n", + "Grad encoder.encoder.2.weight: 1.8666996766114607e-05\n", + "Grad encoder.encoder.2.bias: 0.0002171766827814281\n", + "Grad encoder.encoder.4.weight: 7.553075556643307e-05\n", + "Grad encoder.encoder.4.bias: 0.0007414971478283405\n", + "Grad decoder.fc1.0.weight: 2.8944279620191082e-05\n", + "Grad decoder.fc1.0.bias: 0.0002840600209310651\n", + "Grad decoder.fc1.2.weight: 3.613205626606941e-05\n", + "Grad decoder.fc1.2.bias: 0.0002325048844795674\n", + "Grad decoder.fc1.4.weight: 3.60408921551425e-05\n", + "Grad decoder.fc1.4.bias: 0.0002363540988881141\n", + "Grad decoder.fc2.weight: 9.272542229155079e-05\n", + "Grad decoder.fc2.bias: 0.001846816623583436\n", + "Grad _memory_unit.weight_ih_l0: 4.324289875512477e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.6557328965282068e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.3927633517596405e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.348582256672671e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.325521437451243e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.7033365515526384e-05\n", + "Data X Sample: tensor([[1.2666, 1.4157, 1.7160, 1.7798, 1.8645, 2.0965, 2.1785, 2.2714, 3.8788,\n", + " 4.2905, 4.3365, 4.2007, 4.0968, 3.9425, 3.7677, 3.8620, 3.6998, 3.6192,\n", + " 3.6530, 3.5837, 3.4498, 3.4032, 2.9978, 2.9050, 2.9203, 3.0481, 3.1062,\n", + " 3.1242, 3.0182, 3.2686, 3.2825, 3.3464, 3.8061, 2.8240, 4.6940, 4.9666,\n", + " 5.1836, 5.5337, 6.0785, 5.7480, 1.0213, 0.6273, 0.5982, 1.1080, 1.7205,\n", + " 1.7383, 1.1286, 1.6342]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.9391e-01, -8.1508e-01, -1.1040e-01, -5.0022e-01, -6.2516e-01,\n", + " 3.2523e-01, 1.1447e-01, -1.2943e-02, 6.7558e-01, 2.5853e-01,\n", + " 7.2564e-01, 5.2661e-02, 4.5467e-01, -7.7529e-01, 8.3593e-04,\n", + " -9.0053e-01, 2.8255e-01, -4.7309e+00, 1.3646e+00, 3.1466e-01,\n", + " -5.2163e-02, 3.1032e-01, 1.0591e+00, -6.7917e-02, -3.3080e-01,\n", + " -1.6579e-01, 5.8619e-01, 1.4461e+00, 2.9773e-02, 5.3289e-02,\n", + " -5.1638e-01, -6.8420e-01, -6.0609e-01, -8.9792e-01, -4.2068e-01,\n", + " 9.0357e-03, 8.2914e-01, -7.2483e-01, 1.1238e+00, 6.1341e-01,\n", + " 6.9152e-01, 9.0996e-01, 8.1333e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2599, -0.3029, -0.0964, -0.2134, -0.0698, 0.1369, 0.1647, 0.2876,\n", + " 0.1663, 0.2343, 0.2100, -0.1594, -0.1574, -0.2760, -0.1971, -0.2757,\n", + " -0.2128, -0.1095, -0.0751, -0.1463, -0.0922, -0.0484, -0.0508, -0.0402,\n", + " -0.0529, 0.0372, -0.0293, -0.0756, -0.1836, -0.2390, -0.2602, -0.2053,\n", + " -0.2425, -0.2892, -0.1485, -0.2010, -0.0268, 0.0017, -0.0095, 0.2865,\n", + " 0.3344, 0.3338, 0.2222]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005784856621176004\n", + "Grad encoder.fc1.bias: 0.0004247973265592009\n", + "Grad encoder.encoder.0.weight: 8.674865239299834e-05\n", + "Grad encoder.encoder.0.bias: 0.00046307878801599145\n", + "Grad encoder.encoder.2.weight: 5.811750452267006e-05\n", + "Grad encoder.encoder.2.bias: 0.000584334775339812\n", + "Grad encoder.encoder.4.weight: 0.0001951616577571258\n", + "Grad encoder.encoder.4.bias: 0.0020641074515879154\n", + "Grad decoder.fc1.0.weight: 6.400996062438935e-05\n", + "Grad decoder.fc1.0.bias: 0.00044853080180473626\n", + "Grad decoder.fc1.2.weight: 5.882041295990348e-05\n", + "Grad decoder.fc1.2.bias: 0.0010149958543479443\n", + "Grad decoder.fc1.4.weight: 3.868946441798471e-05\n", + "Grad decoder.fc1.4.bias: 0.0007789522642269731\n", + "Grad decoder.fc2.weight: 0.00012609563418664038\n", + "Grad decoder.fc2.bias: 0.0018658958142623305\n", + "Grad _memory_unit.weight_ih_l0: 1.3277736798045225e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.9934741178294644e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.3751495973556302e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.11547090759268e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00013921679055783898\n", + "Grad _memory_unit.bias_hh_l1: 6.832957296865061e-05\n", + "Data X Sample: tensor([[1.5170, 1.5876, 1.7265, 1.9176, 1.9209, 2.1451, 2.1153, 1.9335, 3.2368,\n", + " 4.1973, 4.4127, 4.3760, 4.0013, 4.0188, 3.8888, 3.7498, 3.6149, 3.6057,\n", + " 3.6076, 3.6357, 3.4767, 3.3971, 3.1038, 2.8592, 2.8134, 2.8182, 2.9783,\n", + " 2.9855, 2.8517, 2.9935, 3.1706, 3.2635, 3.7357, 2.7965, 4.6008, 4.9058,\n", + " 5.1148, 5.3827, 5.8440, 5.7083, 1.0882, 0.6114, 0.6629, 1.0735, 1.6055,\n", + " 1.8870, 1.2238, 1.6420]], device='cuda:0')\n", + "Data Y Sample: tensor([[-7.1472e-01, -5.8797e-01, -7.6769e-02, -1.3278e-01, 6.8362e-01,\n", + " 5.9556e-01, 1.4862e-01, 2.2327e-01, 1.1632e-01, 6.2150e-01,\n", + " 2.2317e-01, 3.2639e+00, -1.6641e+00, -7.3252e-01, -8.1136e-01,\n", + " -6.3291e-01, 4.3273e-01, 7.9284e-01, -9.2332e-01, 6.5668e-01,\n", + " -2.1702e+00, -1.8594e-01, -4.0160e-01, 1.3975e+00, -5.9561e-01,\n", + " -2.6076e-01, 7.5616e-01, -1.6213e-03, -2.9783e-01, -4.0530e-01,\n", + " 4.2929e-01, 1.6317e-01, -5.0590e-01, 3.0492e-01, -1.9838e-01,\n", + " -4.6535e-01, -5.8274e-01, -4.2419e-01, 2.6301e-01, 7.6818e-01,\n", + " 2.7522e-01, 4.7889e-01, 7.7105e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2758, -0.3149, -0.1036, -0.2232, -0.0741, 0.1357, 0.1702, 0.3111,\n", + " 0.1710, 0.2495, 0.2246, -0.1716, -0.1589, -0.2897, -0.2020, -0.2833,\n", + " -0.2185, -0.1122, -0.0723, -0.1490, -0.0911, -0.0444, -0.0542, -0.0446,\n", + " -0.0482, 0.0391, -0.0270, -0.0735, -0.1920, -0.2484, -0.2653, -0.2154,\n", + " -0.2450, -0.2988, -0.1477, -0.2092, -0.0210, 0.0015, -0.0109, 0.3135,\n", + " 0.3580, 0.3575, 0.2441]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00024972629034891725\n", + "Grad encoder.fc1.bias: 9.044120088219643e-05\n", + "Grad encoder.encoder.0.weight: 6.351499177981168e-05\n", + "Grad encoder.encoder.0.bias: 0.00010597754589980468\n", + "Grad encoder.encoder.2.weight: 3.5564506106311455e-05\n", + "Grad encoder.encoder.2.bias: 0.00013871857663616538\n", + "Grad encoder.encoder.4.weight: 0.00011448235454736277\n", + "Grad encoder.encoder.4.bias: 0.00036371787427924573\n", + "Grad decoder.fc1.0.weight: 4.2562471207929775e-05\n", + "Grad decoder.fc1.0.bias: 0.00015500723384320736\n", + "Grad decoder.fc1.2.weight: 6.086237044655718e-05\n", + "Grad decoder.fc1.2.bias: 0.00026475239428691566\n", + "Grad decoder.fc1.4.weight: 4.189767059870064e-05\n", + "Grad decoder.fc1.4.bias: 0.0003927698126062751\n", + "Grad decoder.fc2.weight: 7.0980291638989e-05\n", + "Grad decoder.fc2.bias: 0.0016828695079311728\n", + "Grad _memory_unit.weight_ih_l0: 1.5757909750391264e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.1015620657417458e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.5999698815867305e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.0129314205187256e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.8714594009215944e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.4561628631781787e-05\n", + "Data X Sample: tensor([[2.7020, 2.7892, 3.4620, 3.8702, 3.9630, 4.1458, 4.2075, 4.3114, 4.1888,\n", + " 4.2905, 4.3175, 4.3780, 4.0457, 3.9097, 3.7955, 3.7416, 3.6825, 3.4780,\n", + " 3.6055, 3.6357, 3.6608, 3.6191, 3.1110, 2.7237, 2.7082, 2.7921, 2.7519,\n", + " 2.7653, 2.7406, 2.8756, 2.9431, 3.1060, 3.4651, 2.5814, 4.1915, 4.6431,\n", + " 4.9968, 5.3588, 5.9011, 5.8870, 1.7897, 1.1630, 1.2005, 2.1499, 3.3022,\n", + " 3.6139, 2.2980, 3.3153]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4899, -0.3106, -0.7068, -1.0663, -0.1136, 0.4055, 0.2515, 0.6705,\n", + " 0.8036, 0.2982, 0.3834, 0.4963, -0.5025, -0.3859, -0.0961, -0.1683,\n", + " 0.2513, -0.3046, 0.1025, 0.0148, 0.4706, 0.3162, -0.4102, 0.0061,\n", + " -0.1475, -0.0308, -0.5465, 0.4364, -0.2457, -0.1367, 0.9098, -0.6621,\n", + " -0.1965, -0.5720, -0.1873, -0.8397, 0.1697, 0.1503, 0.0000, 0.1261,\n", + " -0.1578, -0.0936, -0.4081]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2325, -0.2743, -0.0639, -0.2024, -0.0440, 0.1242, 0.1506, 0.2260,\n", + " 0.1528, 0.2067, 0.1717, -0.1240, -0.1239, -0.2354, -0.1731, -0.2625,\n", + " -0.1935, -0.1000, -0.0390, -0.1300, -0.0836, -0.0505, -0.0390, -0.0417,\n", + " -0.0820, 0.0199, -0.0323, -0.0460, -0.1658, -0.2324, -0.2148, -0.1715,\n", + " -0.2312, -0.2574, -0.1225, -0.1720, -0.0077, -0.0024, -0.0287, 0.2549,\n", + " 0.3041, 0.2676, 0.2051]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003071844985242933\n", + "Grad encoder.fc1.bias: 0.0002977691765408963\n", + "Grad encoder.encoder.0.weight: 5.321833668858744e-05\n", + "Grad encoder.encoder.0.bias: 0.0003162567736580968\n", + "Grad encoder.encoder.2.weight: 4.497636837186292e-05\n", + "Grad encoder.encoder.2.bias: 0.00041268844506703317\n", + "Grad encoder.encoder.4.weight: 0.00014998237020336092\n", + "Grad encoder.encoder.4.bias: 0.0013972967863082886\n", + "Grad decoder.fc1.0.weight: 5.710079494747333e-05\n", + "Grad decoder.fc1.0.bias: 0.0003795977681875229\n", + "Grad decoder.fc1.2.weight: 6.150724220788106e-05\n", + "Grad decoder.fc1.2.bias: 0.0009036606061272323\n", + "Grad decoder.fc1.4.weight: 5.008537118555978e-05\n", + "Grad decoder.fc1.4.bias: 0.0006618381594307721\n", + "Grad decoder.fc2.weight: 8.785379031905904e-05\n", + "Grad decoder.fc2.bias: 0.0015884509775787592\n", + "Grad _memory_unit.weight_ih_l0: 1.0154451047128532e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.8127386283595115e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.4451193237619009e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.812855877389666e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011202458699699491\n", + "Grad _memory_unit.bias_hh_l1: 5.449125455925241e-05\n", + "Data X Sample: tensor([[1.5170, 1.7464, 1.8693, 1.9329, 2.0814, 2.3233, 2.4620, 2.4190, 2.4019,\n", + " 2.4312, 2.5918, 2.5765, 2.5832, 2.4893, 2.3681, 2.4589, 2.4608, 2.5011,\n", + " 2.5131, 2.4530, 2.4536, 2.4464, 2.4170, 2.3267, 2.3911, 2.5414, 2.4961,\n", + " 2.5369, 2.2688, 2.3417, 2.3587, 2.4649, 2.3034, 1.4624, 1.9732, 1.8120,\n", + " 1.6420, 1.4974, 1.5085, 1.6115, 1.2361, 0.6831, 0.6588, 1.2142, 1.8909,\n", + " 1.9671, 1.4346, 1.9001]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4465, 0.2791, 0.4764, 1.5309, 0.2347, 0.5064, -0.8480, -0.9086,\n", + " -0.7820, -0.6043, -0.4944, 0.3588, 0.3384, -0.2977, 0.1478, -0.6964,\n", + " -0.0345, 0.1036, 0.8443, -1.6843, -1.3840, -1.4433, 0.2933, -0.7789,\n", + " 6.7842, -2.2927, -0.8440, -0.1425, 0.1640, -0.2842, 0.5166, 0.7971,\n", + " 0.3394, 1.7522, 0.1469, 0.5945, 0.0000, 0.0705, 1.0291, -0.4927,\n", + " -0.4886, -0.7466, -1.3586]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3336, 0.3420, 0.1264, 0.2192, 0.0895, -0.0500, -0.3265, -0.2925,\n", + " -0.1982, -0.2008, -0.2260, 0.1977, 0.2311, 0.2439, 0.1546, 0.2993,\n", + " 0.2414, 0.0791, 0.1207, 0.1333, 0.0876, 0.0980, 0.0994, 0.0205,\n", + " 0.0391, 0.0585, -0.0961, 0.0154, 0.1105, 0.1949, 0.1438, 0.1368,\n", + " 0.2268, 0.2061, 0.1610, 0.1254, -0.0158, -0.0538, -0.0701, -0.2879,\n", + " -0.2625, -0.2622, -0.3391]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0009279407095164061\n", + "Grad encoder.fc1.bias: 0.0006628214614465833\n", + "Grad encoder.encoder.0.weight: 0.00016183733532670885\n", + "Grad encoder.encoder.0.bias: 0.0008560683927498758\n", + "Grad encoder.encoder.2.weight: 0.00013316221884451807\n", + "Grad encoder.encoder.2.bias: 0.001333113294094801\n", + "Grad encoder.encoder.4.weight: 0.0004200042167212814\n", + "Grad encoder.encoder.4.bias: 0.004303080961108208\n", + "Grad decoder.fc1.0.weight: 0.00015583062486257404\n", + "Grad decoder.fc1.0.bias: 0.0010661024134606123\n", + "Grad decoder.fc1.2.weight: 0.00012130899995099753\n", + "Grad decoder.fc1.2.bias: 0.001855265349149704\n", + "Grad decoder.fc1.4.weight: 8.567742042941973e-05\n", + "Grad decoder.fc1.4.bias: 0.0014215668197721243\n", + "Grad decoder.fc2.weight: 0.0001477847108617425\n", + "Grad decoder.fc2.bias: 0.0018406769959256053\n", + "Grad _memory_unit.weight_ih_l0: 4.287864430807531e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0001226114109158516\n", + "Grad _memory_unit.bias_hh_l0: 8.333288133144379e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.0296458387747407e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0003843672457151115\n", + "Grad _memory_unit.bias_hh_l1: 0.000192087929463014\n", + "Data X Sample: tensor([[1.2528, 1.5235, 1.7551, 1.8301, 1.8082, 1.8976, 2.0445, 2.0925, 3.8568,\n", + " 4.1310, 4.3016, 4.0683, 4.0635, 3.9288, 3.6341, 3.5050, 3.5095, 3.4258,\n", + " 3.5704, 3.4051, 3.3418, 3.4063, 2.8725, 2.8611, 2.8453, 2.8835, 2.8318,\n", + " 2.8468, 2.9592, 3.0786, 3.1916, 3.2911, 3.6081, 2.6272, 4.3704, 4.8718,\n", + " 5.1325, 5.2872, 5.8757, 5.6090, 0.9736, 0.6373, 0.6265, 1.1912, 1.6887,\n", + " 1.7612, 1.0674, 1.6420]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5548, -0.5866, 1.1379, -0.9775, 0.2073, 0.1585, 0.4314, 0.5682,\n", + " 0.7770, 0.2551, 0.6316, 0.1604, -0.8798, -0.1819, -0.5086, -1.2159,\n", + " -1.1048, 0.6625, 0.4187, -0.2741, -0.0939, 0.1464, -0.0979, 0.0365,\n", + " -0.3826, 0.3063, 1.1604, 0.2250, 0.5566, 0.3578, -0.0129, 0.5068,\n", + " -0.8854, -0.7260, -0.4076, -0.7310, 0.7316, 0.2615, 1.1574, 0.5641,\n", + " 0.3835, 0.6367, 0.4136]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2813, -0.3174, -0.1102, -0.2348, -0.0792, 0.1242, 0.1678, 0.3230,\n", + " 0.1697, 0.2617, 0.2282, -0.1789, -0.1503, -0.2885, -0.1988, -0.2828,\n", + " -0.2209, -0.1125, -0.0609, -0.1474, -0.0834, -0.0372, -0.0558, -0.0518,\n", + " -0.0448, 0.0390, -0.0177, -0.0632, -0.1919, -0.2509, -0.2553, -0.2143,\n", + " -0.2357, -0.2933, -0.1419, -0.2104, -0.0118, 0.0059, -0.0157, 0.3298,\n", + " 0.3726, 0.3680, 0.2593]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00014226933126337826\n", + "Grad encoder.fc1.bias: 0.00041825970401987433\n", + "Grad encoder.encoder.0.weight: 3.695051418617368e-05\n", + "Grad encoder.encoder.0.bias: 0.00030100459116511047\n", + "Grad encoder.encoder.2.weight: 2.2688109311275184e-05\n", + "Grad encoder.encoder.2.bias: 0.00022157379135023803\n", + "Grad encoder.encoder.4.weight: 8.9842731540557e-05\n", + "Grad encoder.encoder.4.bias: 0.0007844401407055557\n", + "Grad decoder.fc1.0.weight: 3.707725045387633e-05\n", + "Grad decoder.fc1.0.bias: 0.00021610857220366597\n", + "Grad decoder.fc1.2.weight: 6.906964699737728e-05\n", + "Grad decoder.fc1.2.bias: 0.00036226410884410143\n", + "Grad decoder.fc1.4.weight: 4.901721331407316e-05\n", + "Grad decoder.fc1.4.bias: 0.00041542749386280775\n", + "Grad decoder.fc2.weight: 0.00011292998533463106\n", + "Grad decoder.fc2.bias: 0.001954827457666397\n", + "Grad _memory_unit.weight_ih_l0: 5.911733296670718e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.390914596617222e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.250403693120461e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.307910790477763e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.639306957367808e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.349978578626178e-05\n", + "Data X Sample: tensor([[2.6022, 2.8795, 2.3576, 1.9526, 2.2316, 2.2762, 3.9056, 3.9295, 3.9642,\n", + " 4.0741, 4.1716, 4.1482, 3.7350, 3.8034, 3.8383, 3.4161, 3.4466, 3.5689,\n", + " 3.6324, 3.4163, 3.4277, 3.3205, 2.9713, 2.8878, 2.8509, 2.7843, 2.7359,\n", + " 2.7123, 2.6713, 2.7347, 2.8101, 2.8379, 3.1109, 2.3182, 3.9096, 4.3513,\n", + " 4.5780, 5.0302, 5.4447, 5.4870, 1.8040, 0.9420, 0.8690, 1.3835, 1.7958,\n", + " 1.9099, 1.3054, 1.7280]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3115, -0.1408, 1.1134, -0.5048, -0.4976, -0.1506, 0.8138, 0.3013,\n", + " 0.5760, 0.3186, 0.3167, -0.1964, -1.3570, 0.5243, 2.2288, -0.6815,\n", + " -0.7839, 0.4041, 0.0663, 0.0064, -0.1073, -0.8162, 0.3622, -0.1998,\n", + " 1.4647, -0.1730, 0.6665, -0.2034, -0.6051, -0.2575, -0.4371, -0.7066,\n", + " 0.1926, -0.4209, -0.3157, 0.3997, 0.9926, 0.0000, -0.0104, 0.2607,\n", + " 0.3421, 0.0235, 1.1583]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2675, -0.3033, -0.0938, -0.2396, -0.1049, 0.0679, 0.0996, 0.2597,\n", + " 0.1742, 0.2350, 0.2213, -0.1111, -0.1352, -0.2487, -0.1654, -0.2841,\n", + " -0.2084, -0.1294, -0.0252, -0.1316, -0.0951, -0.0432, -0.0308, -0.0643,\n", + " -0.0395, -0.0089, 0.0213, -0.0391, -0.1577, -0.2490, -0.2186, -0.1670,\n", + " -0.2333, -0.2324, -0.1398, -0.2128, -0.0161, 0.0319, -0.0253, 0.3175,\n", + " 0.3654, 0.3109, 0.2429]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006558987661264837\n", + "Grad encoder.fc1.bias: 0.00023636248079128563\n", + "Grad encoder.encoder.0.weight: 0.00011808398994617164\n", + "Grad encoder.encoder.0.bias: 0.00023210275685414672\n", + "Grad encoder.encoder.2.weight: 7.725732575636357e-05\n", + "Grad encoder.encoder.2.bias: 0.00024177822342608124\n", + "Grad encoder.encoder.4.weight: 0.00027837633388116956\n", + "Grad encoder.encoder.4.bias: 0.0009678010828793049\n", + "Grad decoder.fc1.0.weight: 9.118888556258753e-05\n", + "Grad decoder.fc1.0.bias: 0.00023875493207015097\n", + "Grad decoder.fc1.2.weight: 0.00014495247160084546\n", + "Grad decoder.fc1.2.bias: 0.0008372144075110555\n", + "Grad decoder.fc1.4.weight: 7.38294911570847e-05\n", + "Grad decoder.fc1.4.bias: 0.0010256629902869463\n", + "Grad decoder.fc2.weight: 8.268850069725886e-05\n", + "Grad decoder.fc2.bias: 0.0027923386078327894\n", + "Grad _memory_unit.weight_ih_l0: 2.0860002223344054e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.8961394516736618e-06\n", + "Grad _memory_unit.bias_hh_l0: 1.2019747828162508e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.6435709540019161e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.115493644960225e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.5302444302942604e-05\n", + "Data X Sample: tensor([[1.7642, 1.9284, 2.1713, 2.2959, 2.4007, 2.5031, 2.6237, 2.6419, 2.8072,\n", + " 2.5686, 2.6901, 2.6973, 2.6498, 2.6638, 2.6530, 2.7652, 2.6510, 2.6752,\n", + " 2.6701, 2.6110, 2.6818, 2.6546, 2.6700, 2.6836, 2.7064, 2.6720, 2.7199,\n", + " 2.7123, 2.5464, 2.5055, 2.4427, 2.4124, 2.2550, 1.5196, 1.9585, 1.8850,\n", + " 1.7816, 1.7015, 1.6733, 1.6001, 1.2409, 0.7966, 0.7922, 1.3950, 2.0178,\n", + " 2.2816, 1.5298, 2.1190]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5614, 0.0358, -0.9681, 0.4566, 0.2996, 0.1642, -0.8710, -0.4341,\n", + " -0.9344, -0.4313, -0.0315, 0.1627, 1.3110, 1.9684, 0.1553, 0.8864,\n", + " 0.9946, -0.0586, 0.3257, -0.8472, 0.1152, 0.4807, 0.2233, 1.1955,\n", + " 0.0246, -0.2813, 0.4491, -0.5275, 0.6372, 0.9127, -0.2914, -0.5144,\n", + " 0.9372, 0.7603, 0.7075, 0.7194, 0.9776, 0.6288, -0.0156, -0.0888,\n", + " -0.3129, -0.0296, -1.2708]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3484, 0.3584, 0.1412, 0.2508, 0.0998, -0.0451, -0.3512, -0.3514,\n", + " -0.2152, -0.1989, -0.2137, 0.2145, 0.2575, 0.2577, 0.1637, 0.2961,\n", + " 0.2773, 0.1227, 0.1157, 0.1420, 0.1068, 0.1182, 0.1317, 0.0322,\n", + " 0.0437, 0.0548, -0.1230, 0.0152, 0.1301, 0.2202, 0.1661, 0.1412,\n", + " 0.2403, 0.2296, 0.1814, 0.1392, -0.0126, -0.0447, -0.0668, -0.3322,\n", + " -0.3055, -0.2948, -0.3649]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0009827815229073167\n", + "Grad encoder.fc1.bias: 0.0016114383470267057\n", + "Grad encoder.encoder.0.weight: 0.00018042353622149676\n", + "Grad encoder.encoder.0.bias: 0.0012480092700570822\n", + "Grad encoder.encoder.2.weight: 0.00011625509796431288\n", + "Grad encoder.encoder.2.bias: 0.0011100503616034985\n", + "Grad encoder.encoder.4.weight: 0.00032876228215172887\n", + "Grad encoder.encoder.4.bias: 0.0020034208428114653\n", + "Grad decoder.fc1.0.weight: 0.0001158882150775753\n", + "Grad decoder.fc1.0.bias: 0.0006897993735037744\n", + "Grad decoder.fc1.2.weight: 0.00011072537745349109\n", + "Grad decoder.fc1.2.bias: 0.0013055324088782072\n", + "Grad decoder.fc1.4.weight: 8.170480577973649e-05\n", + "Grad decoder.fc1.4.bias: 0.0013059882912784815\n", + "Grad decoder.fc2.weight: 0.00014922481204848737\n", + "Grad decoder.fc2.bias: 0.0020378006156533957\n", + "Grad _memory_unit.weight_ih_l0: 1.898692971735727e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.171396282501519e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.321466985857114e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.576935902558034e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011562209692783654\n", + "Grad _memory_unit.bias_hh_l1: 5.814831456518732e-05\n", + "Data X Sample: tensor([[1.3770, 1.6211, 1.7025, 1.9263, 2.0182, 2.1407, 2.0676, 3.8032, 4.2181,\n", + " 4.3158, 4.3016, 4.1676, 3.9947, 4.0379, 3.9392, 3.6541, 3.7391, 3.6811,\n", + " 3.5498, 3.5093, 3.6755, 3.5364, 3.2171, 3.0730, 2.9335, 3.1134, 2.9277,\n", + " 2.9937, 2.9072, 3.1507, 3.3665, 3.3326, 3.8171, 2.7325, 4.4881, 4.8207,\n", + " 5.0460, 5.3933, 5.8250, 5.7310, 1.0500, 0.6333, 0.6407, 1.1166, 1.6213,\n", + " 1.7726, 1.2782, 1.7437]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1492, -0.3786, 0.9064, 0.4289, -0.6833, 0.8132, 0.0826, 0.3644,\n", + " 0.7162, 0.2366, 0.2465, -0.1968, -0.1005, -0.2473, 0.6393, 0.2438,\n", + " -1.4579, -0.8711, -2.1346, 0.1693, 1.3300, -1.2181, 0.5566, -1.0307,\n", + " -0.6338, 6.5451, -0.3377, -1.0634, -1.0458, -0.2028, -0.1913, -0.4569,\n", + " 0.3859, -0.1894, 0.0293, 0.6560, -0.7561, -0.7231, -0.0197, 0.1663,\n", + " 0.4665, 0.6308, -0.1015]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1955, -0.2365, -0.0726, -0.1896, -0.0667, 0.0844, 0.0986, 0.2150,\n", + " 0.1461, 0.1969, 0.1570, -0.1027, -0.1039, -0.1951, -0.1484, -0.2290,\n", + " -0.1845, -0.0913, -0.0221, -0.1196, -0.0645, -0.0429, -0.0355, -0.0537,\n", + " -0.0485, 0.0217, -0.0097, -0.0467, -0.1446, -0.2105, -0.1913, -0.1413,\n", + " -0.1971, -0.1988, -0.1241, -0.1648, -0.0188, 0.0309, -0.0264, 0.2123,\n", + " 0.2800, 0.2413, 0.1697]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 9.49245149968192e-05\n", + "Grad encoder.fc1.bias: 2.7494226742419414e-05\n", + "Grad encoder.encoder.0.weight: 2.2611069653066806e-05\n", + "Grad encoder.encoder.0.bias: 2.588858660601545e-05\n", + "Grad encoder.encoder.2.weight: 1.686394534772262e-05\n", + "Grad encoder.encoder.2.bias: 4.511116640060209e-05\n", + "Grad encoder.encoder.4.weight: 5.5391421483363956e-05\n", + "Grad encoder.encoder.4.bias: 0.000134147223434411\n", + "Grad decoder.fc1.0.weight: 2.1815154468640685e-05\n", + "Grad decoder.fc1.0.bias: 6.630032294197008e-05\n", + "Grad decoder.fc1.2.weight: 3.768134774873033e-05\n", + "Grad decoder.fc1.2.bias: 0.00016938784392550588\n", + "Grad decoder.fc1.4.weight: 3.640924842329696e-05\n", + "Grad decoder.fc1.4.bias: 0.00042372976895421743\n", + "Grad decoder.fc2.weight: 7.700362039031461e-05\n", + "Grad decoder.fc2.bias: 0.001947836484760046\n", + "Grad _memory_unit.weight_ih_l0: 1.6036659644669271e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.022197678452358e-06\n", + "Grad _memory_unit.bias_hh_l0: 3.6972539874113863e-06\n", + "Grad _memory_unit.weight_ih_l1: 7.021341730251152e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.3760289220954292e-05\n", + "Grad _memory_unit.bias_hh_l1: 7.019922122708522e-06\n", + "Data X Sample: tensor([[1.5350, 1.6531, 1.8287, 1.9416, 2.1224, 2.2128, 2.4173, 2.2004, 3.6664,\n", + " 4.3174, 4.4000, 4.1871, 4.0723, 3.9616, 3.9064, 3.7868, 3.7234, 3.6076,\n", + " 3.5477, 3.6171, 3.5724, 3.4201, 2.9833, 2.8688, 2.8396, 3.0350, 3.1781,\n", + " 3.1772, 3.1847, 3.3636, 3.2825, 3.4155, 3.9161, 2.7874, 4.6425, 4.9447,\n", + " 5.2072, 5.4277, 5.9391, 5.8927, 1.1932, 0.6751, 0.6548, 1.1855, 1.7482,\n", + " 1.8355, 1.2510, 1.7984]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 5.4603e-01, 1.8079e-02, -7.7121e-01, 5.9747e-02, 1.1914e+00,\n", + " 3.1076e-01, 5.8161e-01, 4.4962e-01, 4.6266e-01, 1.5603e-01,\n", + " 7.1586e-01, 2.9744e+00, -7.0579e-01, 2.6707e-01, -3.9599e-01,\n", + " 9.9489e-01, -5.3128e-01, -5.1916e-01, 5.7866e-01, -4.2653e+00,\n", + " -1.0345e+00, 5.5659e-01, 1.6452e-01, 8.7944e-01, 1.9842e-01,\n", + " -1.1620e+00, -3.8063e-01, -1.5250e+00, -6.3219e-01, -7.7127e-01,\n", + " -2.6587e-01, -5.3729e-01, -7.5997e-01, -1.4309e+00, -1.0247e+00,\n", + " -2.2923e-01, 3.2988e-03, -9.1056e-02, -7.6813e-01, 6.6858e-01,\n", + " 5.5923e-01, 1.7537e-01, 1.1171e+00]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2064, -0.2581, -0.0900, -0.2030, -0.0632, 0.1006, 0.1300, 0.2274,\n", + " 0.1406, 0.2080, 0.1564, -0.1278, -0.1150, -0.2073, -0.1596, -0.2399,\n", + " -0.1978, -0.0932, -0.0450, -0.1331, -0.0694, -0.0457, -0.0403, -0.0468,\n", + " -0.0538, 0.0282, -0.0137, -0.0467, -0.1500, -0.2072, -0.2032, -0.1604,\n", + " -0.1989, -0.2272, -0.1282, -0.1614, -0.0209, 0.0183, -0.0140, 0.2224,\n", + " 0.2772, 0.2601, 0.1779]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004601387190632522\n", + "Grad encoder.fc1.bias: 0.0002346011606277898\n", + "Grad encoder.encoder.0.weight: 6.360156112350523e-05\n", + "Grad encoder.encoder.0.bias: 0.00016634020721539855\n", + "Grad encoder.encoder.2.weight: 3.9804261177778244e-05\n", + "Grad encoder.encoder.2.bias: 0.00015259473002515733\n", + "Grad encoder.encoder.4.weight: 0.00014600440044887364\n", + "Grad encoder.encoder.4.bias: 0.0004910585703328252\n", + "Grad decoder.fc1.0.weight: 4.7081273805815727e-05\n", + "Grad decoder.fc1.0.bias: 0.00016164008411578834\n", + "Grad decoder.fc1.2.weight: 6.468406354542822e-05\n", + "Grad decoder.fc1.2.bias: 0.0004665384767577052\n", + "Grad decoder.fc1.4.weight: 6.643867527600378e-05\n", + "Grad decoder.fc1.4.bias: 0.0009057721472345293\n", + "Grad decoder.fc2.weight: 0.00010242528514936566\n", + "Grad decoder.fc2.bias: 0.0026602083817124367\n", + "Grad _memory_unit.weight_ih_l0: 3.0964104098529788e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.586400559172034e-06\n", + "Grad _memory_unit.bias_hh_l0: 3.6846893181063933e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.6416901189586497e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.271286186645739e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.630265251151286e-05\n", + "Data X Sample: tensor([[1.4332, 1.5818, 1.7701, 1.9001, 1.9516, 2.1628, 2.1739, 3.6868, 4.3450,\n", + " 4.4232, 4.3556, 4.3118, 4.3475, 4.1061, 3.7324, 3.8168, 3.8460, 3.6869,\n", + " 3.6406, 3.4795, 3.5700, 3.4629, 3.1544, 2.9203, 2.8021, 2.8208, 2.8584,\n", + " 2.8999, 2.8239, 3.0360, 3.1286, 3.2055, 3.7533, 2.8011, 4.6278, 4.9009,\n", + " 5.1227, 5.4357, 5.9518, 5.9409, 1.1120, 0.6353, 0.6407, 1.1281, 1.6650,\n", + " 1.8813, 1.2374, 1.8844]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4357, -0.2052, 0.1828, -1.4090, 0.2506, 2.3340, -0.0489, -0.0791,\n", + " 0.4864, 0.1119, 0.2227, -0.2140, -0.3227, -0.8073, -0.7798, 0.0337,\n", + " 0.3670, -0.5080, -0.5565, -0.4919, 0.2594, -0.0647, -0.2309, 1.2101,\n", + " 0.4442, 1.0096, -1.1130, -0.8932, -1.5276, -0.6508, -1.2667, -0.6960,\n", + " -0.2611, -0.3709, -1.1893, -0.5337, 0.0637, 0.3946, -1.1505, 0.0400,\n", + " 0.1605, 0.3476, 0.1528]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1842, -0.2350, -0.0795, -0.1936, -0.0653, 0.0833, 0.1030, 0.2039,\n", + " 0.1337, 0.1926, 0.1383, -0.1082, -0.1003, -0.1822, -0.1439, -0.2232,\n", + " -0.1881, -0.0882, -0.0281, -0.1227, -0.0623, -0.0448, -0.0368, -0.0508,\n", + " -0.0500, 0.0253, -0.0061, -0.0352, -0.1352, -0.1978, -0.1802, -0.1403,\n", + " -0.1846, -0.1968, -0.1204, -0.1489, -0.0190, 0.0249, -0.0204, 0.2003,\n", + " 0.2633, 0.2302, 0.1622]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00047237760736607015\n", + "Grad encoder.fc1.bias: 0.0002553461818024516\n", + "Grad encoder.encoder.0.weight: 7.48438251321204e-05\n", + "Grad encoder.encoder.0.bias: 0.00026497311773709953\n", + "Grad encoder.encoder.2.weight: 6.444849714171141e-05\n", + "Grad encoder.encoder.2.bias: 0.0004282781737856567\n", + "Grad encoder.encoder.4.weight: 0.00020592454529833049\n", + "Grad encoder.encoder.4.bias: 0.0011182306334376335\n", + "Grad decoder.fc1.0.weight: 8.510110637871549e-05\n", + "Grad decoder.fc1.0.bias: 0.0004982356913387775\n", + "Grad decoder.fc1.2.weight: 8.874927880242467e-05\n", + "Grad decoder.fc1.2.bias: 0.0009962799958884716\n", + "Grad decoder.fc1.4.weight: 7.07343133399263e-05\n", + "Grad decoder.fc1.4.bias: 0.0010817996226251125\n", + "Grad decoder.fc2.weight: 0.00015559312305413187\n", + "Grad decoder.fc2.bias: 0.0018100828165188432\n", + "Grad _memory_unit.weight_ih_l0: 1.0201150871580467e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.969688648590818e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.8712287783273496e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.00833311889437e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.969938400899991e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.9777179810917005e-05\n", + "Data X Sample: tensor([[-0.0064, -0.0029, 0.0045, 0.0153, 0.0000, -0.0029, 0.0015, 0.0028,\n", + " -0.0073, -0.0047, -0.0032, -0.0019, 0.0133, 0.0027, -0.0101, 0.0096,\n", + " 0.0063, 0.0019, 0.0041, 0.0130, 0.0098, -0.0046, -0.0072, -0.0038,\n", + " -0.0019, -0.0131, 0.0266, 0.0897, -0.0173, 0.0098, 0.0140, 0.0000,\n", + " 0.0110, -0.0092, 0.0147, 0.0170, 0.0177, 0.0133, 0.0127, -0.0028,\n", + " 0.0000, 0.0119, 0.0081, -0.0029, 0.0198, 0.0229, 0.0000, -0.0313]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.8572, 1.1490, 0.8605, 0.7074, -0.7653, 1.5126, -0.7291, -0.9992,\n", + " 0.2590, -0.4726, -0.8228, 0.6191, 0.1326, 0.2083, 0.1392, 0.7949,\n", + " 0.4508, 0.0690, -0.8969, 0.1242, -1.0179, -0.2046, -0.3797, -1.3827,\n", + " 0.1751, -0.7050, 1.0513, 0.1468, 0.7009, 1.5477, 1.3057, 1.8814,\n", + " 0.6135, 1.1919, 0.5820, 0.1399, 0.4963, 0.7966, 0.0000, -0.4761,\n", + " -0.4238, -0.4157, 0.0560]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 8.1671e-01, 6.1929e-01, 9.9545e-02, 3.6836e-01, -5.9455e-01,\n", + " -6.1909e-01, -1.2328e+00, -1.0764e+00, -8.2272e-01, -8.2828e-01,\n", + " -8.2287e-01, 3.7801e-01, 5.5317e-01, 5.5463e-01, 4.1465e-01,\n", + " 5.2612e-01, 4.8210e-01, -2.1900e-03, 2.2736e-01, 9.6155e-02,\n", + " 1.5476e-01, 7.8218e-02, 9.2689e-02, 3.2333e-02, 6.2740e-02,\n", + " 5.7725e-02, 2.9662e-01, 6.3287e-01, 8.7114e-01, 9.3812e-01,\n", + " 8.3296e-01, 4.5956e-01, 6.8824e-01, 5.2658e-01, 3.1517e-01,\n", + " 2.5941e-01, -7.6339e-02, 6.6046e-04, 1.9111e-02, -9.0816e-01,\n", + " -7.9652e-01, -4.9432e-01, -4.3179e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000952378730289638\n", + "Grad encoder.fc1.bias: 0.0006205042009241879\n", + "Grad encoder.encoder.0.weight: 0.00018086550699081272\n", + "Grad encoder.encoder.0.bias: 0.0006426759646274149\n", + "Grad encoder.encoder.2.weight: 0.00010024957009591162\n", + "Grad encoder.encoder.2.bias: 0.0005620507872663438\n", + "Grad encoder.encoder.4.weight: 0.0002766839461401105\n", + "Grad encoder.encoder.4.bias: 0.0012753645423799753\n", + "Grad decoder.fc1.0.weight: 8.404014079133049e-05\n", + "Grad decoder.fc1.0.bias: 0.00037632498424500227\n", + "Grad decoder.fc1.2.weight: 5.757025792263448e-05\n", + "Grad decoder.fc1.2.bias: 0.0006600337801501155\n", + "Grad decoder.fc1.4.weight: 5.6618795497342944e-05\n", + "Grad decoder.fc1.4.bias: 0.0007077431073412299\n", + "Grad decoder.fc2.weight: 0.0001643868745304644\n", + "Grad decoder.fc2.bias: 0.002091731410473585\n", + "Grad _memory_unit.weight_ih_l0: 1.0012137863668613e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.8485641450970434e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.8665939933271147e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.846683623327408e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.269871952710673e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.666020322474651e-05\n", + "Data X Sample: tensor([[1.4841, 1.6153, 1.8152, 1.8542, 1.9892, 2.0876, 2.0814, 3.1402, 4.1521,\n", + " 4.1847, 4.3048, 4.3079, 4.0368, 4.0815, 3.8762, 3.6719, 3.6872, 3.6521,\n", + " 3.4899, 3.5390, 3.5013, 3.3052, 2.9640, 2.8115, 2.7908, 2.9149, 2.8691,\n", + " 2.8795, 2.9210, 3.1310, 3.3595, 3.3049, 3.7665, 2.8263, 4.6057, 4.7550,\n", + " 5.0027, 5.4993, 5.9201, 5.8672, 1.1550, 0.6691, 0.6750, 1.1596, 1.6848,\n", + " 1.8355, 1.2374, 1.7828]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0811, 0.4488, -0.3432, 0.0269, 0.9583, 0.7202, 0.1865, 0.4459,\n", + " 0.6698, 0.1819, 0.0390, -1.2067, 0.4180, 0.0163, -0.7415, -0.4351,\n", + " -0.3730, -0.9574, -1.8775, 0.6923, -0.4257, -0.1396, 0.6139, -0.1499,\n", + " -0.8685, -0.5033, -1.5741, -1.4945, -1.0546, -0.9169, -1.0237, -0.5188,\n", + " -0.2252, -0.9233, -0.3467, -0.8537, -0.7416, 0.7348, -0.1229, 0.1744,\n", + " 0.3045, 0.0252, -0.3539]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1876, -0.2447, -0.0875, -0.2010, -0.0618, 0.0903, 0.1153, 0.2080,\n", + " 0.1331, 0.1963, 0.1382, -0.1199, -0.1064, -0.1856, -0.1479, -0.2267,\n", + " -0.1938, -0.0896, -0.0359, -0.1283, -0.0650, -0.0457, -0.0365, -0.0476,\n", + " -0.0505, 0.0273, -0.0072, -0.0375, -0.1381, -0.1971, -0.1848, -0.1485,\n", + " -0.1843, -0.2072, -0.1225, -0.1467, -0.0191, 0.0223, -0.0131, 0.2043,\n", + " 0.2621, 0.2350, 0.1657]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002173337561544031\n", + "Grad encoder.fc1.bias: 0.0007699370034970343\n", + "Grad encoder.encoder.0.weight: 4.8041580157587305e-05\n", + "Grad encoder.encoder.0.bias: 0.0005863045807927847\n", + "Grad encoder.encoder.2.weight: 3.450956137385219e-05\n", + "Grad encoder.encoder.2.bias: 0.0005005092825740576\n", + "Grad encoder.encoder.4.weight: 0.00010991730960085988\n", + "Grad encoder.encoder.4.bias: 0.0010306332260370255\n", + "Grad decoder.fc1.0.weight: 4.225990778650157e-05\n", + "Grad decoder.fc1.0.bias: 0.00029321815236471593\n", + "Grad decoder.fc1.2.weight: 4.74916014354676e-05\n", + "Grad decoder.fc1.2.bias: 0.0002723520155996084\n", + "Grad decoder.fc1.4.weight: 4.991643436369486e-05\n", + "Grad decoder.fc1.4.bias: 0.00047150070895440876\n", + "Grad decoder.fc2.weight: 0.0001235324307344854\n", + "Grad decoder.fc2.bias: 0.001958934124559164\n", + "Grad _memory_unit.weight_ih_l0: 1.0585312338662334e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.322047556750476e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.2236486731562763e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.771511844912311e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.3533108914271e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.263502730987966e-05\n", + "Data X Sample: tensor([[1.3027, 1.3881, 1.6784, 1.8520, 2.0882, 3.7642, 4.2907, 4.2078, 4.1668,\n", + " 4.1404, 4.1399, 3.9807, 3.8016, 3.5062, 3.5357, 3.5050, 3.4891, 3.3948,\n", + " 3.4217, 3.2285, 3.1406, 3.1093, 2.8026, 2.7581, 2.6294, 2.7451, 2.7785,\n", + " 2.7979, 2.8933, 2.9836, 2.9606, 3.1308, 3.2737, 2.3663, 4.0493, 4.4899,\n", + " 4.7530, 5.2766, 5.8694, 5.7367, 0.9975, 0.5337, 0.5679, 1.1367, 1.5619,\n", + " 1.7841, 1.2102, 1.8922]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6245, -0.1807, 0.2902, 0.8376, -1.0025, 0.0175, 0.1170, 0.2553,\n", + " 0.1408, 0.2353, 0.0929, 0.4522, 1.8111, 0.7339, -0.5965, 0.4691,\n", + " -0.2120, -0.0928, -0.4099, 0.9959, 0.2332, -0.9974, 0.2451, -0.5792,\n", + " 0.8344, -0.1864, 0.3289, -0.5200, 0.2547, 0.0986, 0.9212, 0.7540,\n", + " -0.0132, 0.4746, -0.1562, 0.2921, 0.1360, 0.2066, -0.8482, 0.0089,\n", + " 0.0698, 0.4006, 0.5943]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.0580, -0.0666, -0.0149, -0.0922, -0.0026, 0.0475, 0.0001, 0.0597,\n", + " 0.0782, 0.0969, 0.0702, -0.0126, -0.0299, -0.0781, -0.0609, -0.0885,\n", + " -0.0699, -0.0413, 0.0319, -0.0577, -0.0046, -0.0210, -0.0254, -0.0526,\n", + " 0.0018, 0.0590, -0.0472, -0.0132, -0.0982, -0.1152, -0.0616, -0.0822,\n", + " -0.0641, -0.0748, -0.0503, -0.0804, 0.0011, 0.0206, -0.0170, 0.0688,\n", + " 0.1195, 0.0712, 0.0465]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0016906540840864182\n", + "Grad encoder.fc1.bias: 0.0012906863121315837\n", + "Grad encoder.encoder.0.weight: 0.0001744223409332335\n", + "Grad encoder.encoder.0.bias: 0.0011213638354092836\n", + "Grad encoder.encoder.2.weight: 9.385248995386064e-05\n", + "Grad encoder.encoder.2.bias: 0.0011649624211713672\n", + "Grad encoder.encoder.4.weight: 0.0002313863078597933\n", + "Grad encoder.encoder.4.bias: 0.003300440264865756\n", + "Grad decoder.fc1.0.weight: 6.651775038335472e-05\n", + "Grad decoder.fc1.0.bias: 0.0005140422144904733\n", + "Grad decoder.fc1.2.weight: 3.252453461755067e-05\n", + "Grad decoder.fc1.2.bias: 0.0012436702381819487\n", + "Grad decoder.fc1.4.weight: 6.033811587258242e-05\n", + "Grad decoder.fc1.4.bias: 0.0008485951693728566\n", + "Grad decoder.fc2.weight: 0.00016275121015496552\n", + "Grad decoder.fc2.bias: 0.0022453239653259516\n", + "Grad _memory_unit.weight_ih_l0: 2.1834008293808438e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00010546910198172554\n", + "Grad _memory_unit.bias_hh_l0: 6.136460433481261e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.3654840586241335e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002323375374544412\n", + "Grad _memory_unit.bias_hh_l1: 0.00011828759306808934\n", + "Data X Sample: tensor([[1.5658, 1.7056, 1.9023, 2.0772, 2.0763, 1.9418, 1.8688, 2.7512, 3.8446,\n", + " 4.2226, 4.3461, 4.2631, 4.1256, 3.9779, 3.8409, 3.6760, 3.6070, 3.6424,\n", + " 3.5828, 3.5520, 3.5479, 3.5012, 2.9857, 2.8993, 2.9297, 3.0324, 2.9890,\n", + " 3.1364, 2.8863, 3.1474, 3.2615, 3.4459, 3.9029, 2.8881, 4.4439, 4.8134,\n", + " 4.8769, 5.3721, 5.8123, 5.7509, 1.1550, 0.6890, 0.6770, 1.1654, 1.7442,\n", + " 1.9728, 1.2782, 1.8453]], device='cuda:0')\n", + "Data Y Sample: tensor([[-3.4587e-01, -5.2358e-01, 2.8201e-01, -8.1402e-01, 1.6818e-01,\n", + " 3.5692e-01, 3.0187e-01, 2.1891e-01, 1.7461e-01, 3.0269e-01,\n", + " 2.5526e-01, -7.3978e-01, 4.4453e-01, -3.5646e-01, -1.5048e-01,\n", + " -3.9325e-01, 3.3348e-01, -1.2683e+00, 1.0165e+01, -2.9144e-01,\n", + " -4.6421e-01, 6.3301e-02, 9.2848e-01, 3.6977e-01, -4.5094e-01,\n", + " -3.9224e+00, 2.8550e-01, -5.1589e-03, -4.4876e-01, -7.8792e-01,\n", + " -1.9877e-01, -8.9238e-01, -6.5839e-02, -2.8228e-01, 1.1249e+00,\n", + " -9.7200e-01, -1.0697e-02, 0.0000e+00, 4.4225e-01, 3.4365e-01,\n", + " 4.9565e-01, 5.2902e-01, -3.8651e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2000, -0.2567, -0.0900, -0.2059, -0.0550, 0.0999, 0.1292, 0.2214,\n", + " 0.1411, 0.2045, 0.1507, -0.1305, -0.1163, -0.1986, -0.1557, -0.2359,\n", + " -0.1975, -0.0933, -0.0422, -0.1336, -0.0701, -0.0466, -0.0322, -0.0431,\n", + " -0.0479, 0.0281, -0.0108, -0.0482, -0.1503, -0.2055, -0.1983, -0.1590,\n", + " -0.1918, -0.2206, -0.1283, -0.1533, -0.0187, 0.0220, -0.0071, 0.2177,\n", + " 0.2723, 0.2487, 0.1747]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0009529221570119262\n", + "Grad encoder.fc1.bias: 0.0003865939797833562\n", + "Grad encoder.encoder.0.weight: 0.00018569834355730563\n", + "Grad encoder.encoder.0.bias: 0.0004855350125581026\n", + "Grad encoder.encoder.2.weight: 0.00010673601354938\n", + "Grad encoder.encoder.2.bias: 0.0004854762810282409\n", + "Grad encoder.encoder.4.weight: 0.0002905645815189928\n", + "Grad encoder.encoder.4.bias: 0.0014657322317361832\n", + "Grad decoder.fc1.0.weight: 7.553399336757138e-05\n", + "Grad decoder.fc1.0.bias: 0.0003092460392508656\n", + "Grad decoder.fc1.2.weight: 3.9371185266645625e-05\n", + "Grad decoder.fc1.2.bias: 0.0004318428982514888\n", + "Grad decoder.fc1.4.weight: 3.4817068808479235e-05\n", + "Grad decoder.fc1.4.bias: 0.0006299547385424376\n", + "Grad decoder.fc2.weight: 0.00014089136675465852\n", + "Grad decoder.fc2.bias: 0.0020243502222001553\n", + "Grad _memory_unit.weight_ih_l0: 5.051450443716021e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.402615432918537e-06\n", + "Grad _memory_unit.bias_hh_l0: 7.394466592813842e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.6023960799648194e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.66902560624294e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.358073809067719e-05\n", + "Data X Sample: tensor([[ 0.0000, 0.0029, 0.0135, 0.0087, 0.0034, 0.0162, 0.0123, 0.0170,\n", + " 0.0073, 0.0237, 0.0412, 0.0136, 0.0111, 0.0136, 0.0277, 0.0000,\n", + " -0.0959, -0.1103, -0.1260, -0.0948, -0.1300, -0.0781, -0.1036, -0.1107,\n", + " -0.0807, -0.1672, -0.1492, -0.2243, -0.0624, -0.0229, -0.0350, -0.0332,\n", + " 0.0000, -0.0389, 0.0294, 0.0462, 0.0039, 0.0159, 0.0380, 0.0085,\n", + " 0.0000, 0.0199, -0.0081, 0.0000, -0.0079, -0.0057, -0.0340, -0.0235]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[-0.8967, 0.7979, -0.8502, 2.0667, 1.7869, -1.1201, 0.1084, -0.4478,\n", + " 0.6291, 0.8544, 0.5537, 0.8368, 0.4590, 0.5229, 0.9677, -0.4501,\n", + " 1.2095, 2.8696, 0.2996, 0.1050, -0.6466, 2.3703, 0.6537, 2.9404,\n", + " 0.6300, 4.0539, -0.6638, -0.2248, -2.2486, -1.1766, -0.2725, -1.0460,\n", + " -0.1959, 0.9219, 0.6982, -0.0157, 0.0059, -0.7806, 0.2870, -0.9480,\n", + " -0.0077, 0.1535, -0.1213]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5482, 0.5249, 0.2157, 0.3766, 0.0893, -0.1679, -0.5770, -0.6765,\n", + " -0.2617, -0.3345, -0.2681, 0.3665, 0.3443, 0.4208, 0.3103, 0.4325,\n", + " 0.4385, 0.2017, 0.2326, 0.1800, 0.1122, 0.1134, 0.0937, 0.0542,\n", + " 0.1310, 0.1292, -0.1107, 0.1755, 0.2827, 0.4187, 0.4311, 0.2455,\n", + " 0.4202, 0.4267, 0.2283, 0.1609, 0.0401, 0.0260, -0.0583, -0.5022,\n", + " -0.4992, -0.4409, -0.4480]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0016199767123907804\n", + "Grad encoder.fc1.bias: 0.0010729915229603648\n", + "Grad encoder.encoder.0.weight: 0.00024789845338091254\n", + "Grad encoder.encoder.0.bias: 0.001167102251201868\n", + "Grad encoder.encoder.2.weight: 0.00016892400162760168\n", + "Grad encoder.encoder.2.bias: 0.0015770262107253075\n", + "Grad encoder.encoder.4.weight: 0.000536775216460228\n", + "Grad encoder.encoder.4.bias: 0.004277513828128576\n", + "Grad decoder.fc1.0.weight: 0.0001816093863453716\n", + "Grad decoder.fc1.0.bias: 0.0011651241220533848\n", + "Grad decoder.fc1.2.weight: 0.00011241924948990345\n", + "Grad decoder.fc1.2.bias: 0.0021607521921396255\n", + "Grad decoder.fc1.4.weight: 8.794129826128483e-05\n", + "Grad decoder.fc1.4.bias: 0.001673012156970799\n", + "Grad decoder.fc2.weight: 0.00015927852655295283\n", + "Grad decoder.fc2.bias: 0.002277189865708351\n", + "Grad _memory_unit.weight_ih_l0: 5.120147034176625e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00012933503603562713\n", + "Grad _memory_unit.bias_hh_l0: 9.220704669132829e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.3924532797536813e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00042276812018826604\n", + "Grad _memory_unit.bias_hh_l1: 0.0002132972003892064\n", + "Data X Sample: tensor([[ 0.0085, 0.0131, 0.0210, 0.0087, 0.0051, 0.0192, 0.0247, 0.0099,\n", + " 0.0171, 0.0158, 0.0286, -0.0019, 0.0089, -0.0082, -0.0101, 0.0123,\n", + " -0.0487, -0.0754, -0.0929, -0.1023, -0.0883, -0.0643, -0.1446, -0.1508,\n", + " -0.1051, -0.2220, -0.2344, -0.4405, -0.0729, -0.0983, -0.0805, -0.0718,\n", + " -0.0770, -0.0595, -0.0539, -0.0341, -0.0315, -0.0424, -0.0507, -0.0113,\n", + " -0.0430, 0.0040, 0.0061, -0.0144, -0.0119, 0.0286, 0.0136, 0.0547]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 9.2592e-01, 1.0150e+00, 2.3872e+00, 1.0704e+00, -1.1228e-02,\n", + " -1.5727e+00, -1.3512e+00, -1.4450e+00, -1.3460e+00, -1.1605e+00,\n", + " -7.9645e-01, -1.0287e+00, 1.1159e-01, 2.9302e-01, 7.0201e-01,\n", + " 5.9497e-01, 4.3699e-02, 2.5871e-01, -2.6901e-01, 1.8995e-01,\n", + " -5.9716e-02, 2.9497e-01, 1.2668e-03, -3.3043e-01, -5.4475e-01,\n", + " -1.3676e-01, -4.4497e-01, -3.7685e-01, 1.4507e+00, 6.4232e-01,\n", + " 1.5636e+00, 5.9146e-01, 1.0453e+00, 1.0710e+00, 3.2064e-01,\n", + " 4.6874e-01, 6.3666e-02, 1.0045e-01, -5.8133e-01, -1.0147e+00,\n", + " -8.4439e-01, -9.0019e-01, -1.1323e+00]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5537, 0.5257, 0.2262, 0.3823, 0.0979, -0.1696, -0.5722, -0.6819,\n", + " -0.2684, -0.3452, -0.2778, 0.3728, 0.3445, 0.4310, 0.3181, 0.4432,\n", + " 0.4398, 0.2089, 0.2223, 0.1737, 0.1051, 0.1241, 0.1030, 0.0591,\n", + " 0.1383, 0.1123, -0.1070, 0.1686, 0.2860, 0.4262, 0.4301, 0.2474,\n", + " 0.4255, 0.4323, 0.2330, 0.1752, 0.0475, 0.0279, -0.0484, -0.5029,\n", + " -0.5031, -0.4427, -0.4579]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006293007172644138\n", + "Grad encoder.fc1.bias: 0.0003015079128090292\n", + "Grad encoder.encoder.0.weight: 0.00012149080430390313\n", + "Grad encoder.encoder.0.bias: 0.00037606339901685715\n", + "Grad encoder.encoder.2.weight: 6.744802522007376e-05\n", + "Grad encoder.encoder.2.bias: 0.0003464337787590921\n", + "Grad encoder.encoder.4.weight: 0.00020945884170942008\n", + "Grad encoder.encoder.4.bias: 0.0010978527134284377\n", + "Grad decoder.fc1.0.weight: 5.4519106924999505e-05\n", + "Grad decoder.fc1.0.bias: 0.000247403047978878\n", + "Grad decoder.fc1.2.weight: 5.113756196806207e-05\n", + "Grad decoder.fc1.2.bias: 0.00048345536924898624\n", + "Grad decoder.fc1.4.weight: 4.6393532102229074e-05\n", + "Grad decoder.fc1.4.bias: 0.0007452201098203659\n", + "Grad decoder.fc2.weight: 9.679546201368794e-05\n", + "Grad decoder.fc2.bias: 0.0023868377320468426\n", + "Grad _memory_unit.weight_ih_l0: 3.618967866714229e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.49156640470028e-06\n", + "Grad _memory_unit.bias_hh_l0: 4.837217602471355e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.826110519687063e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.958205656497739e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.9449574867612682e-05\n", + "Data X Sample: tensor([[1.6549, 1.8964, 2.0015, 2.1931, 2.2709, 2.5001, 2.5513, 2.6490, 2.5997,\n", + " 2.7313, 2.6679, 2.7051, 2.5788, 2.4784, 2.4790, 2.5177, 2.4891, 2.4934,\n", + " 2.6329, 2.5032, 2.5149, 2.5520, 2.4845, 2.4927, 2.5600, 2.5597, 2.5148,\n", + " 2.5165, 2.2966, 2.3745, 2.3622, 2.3737, 2.1274, 1.3662, 1.8604, 1.7196,\n", + " 1.6636, 1.6008, 1.5529, 1.5122, 1.3029, 0.7906, 0.7235, 1.2917, 1.9623,\n", + " 2.0700, 1.4278, 2.1034]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4894, -0.7940, -0.1920, 0.2395, -0.5505, 0.4178, 1.0359, 0.6573,\n", + " -0.0827, -0.3041, -0.0876, 0.6218, -0.7889, 0.0575, -0.2825, -0.2989,\n", + " -1.5450, 0.6842, -0.3380, 0.9117, -0.0042, -0.3494, 0.5854, 0.4766,\n", + " 0.5874, 0.3578, -0.4665, -0.3807, -0.4553, 0.2437, -0.0073, 0.4289,\n", + " -0.1512, 1.0681, -0.7785, 0.3467, -0.0333, -0.3755, 0.2870, 0.9178,\n", + " -0.0446, 0.4281, 0.8108]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 2.4146e-01, 2.2646e-01, 1.0848e-01, 1.5269e-01, 8.3104e-02,\n", + " -3.3086e-02, -2.2791e-01, -2.3474e-01, -1.2804e-01, -1.4050e-01,\n", + " -1.5460e-01, 1.4588e-01, 1.6733e-01, 1.9776e-01, 1.2806e-01,\n", + " 2.1250e-01, 1.6038e-01, 9.9640e-02, 9.5115e-02, 6.5677e-02,\n", + " 4.0584e-02, 8.5680e-02, 9.9091e-02, 1.6807e-02, 5.5325e-02,\n", + " 2.5353e-02, -6.3820e-02, 1.8737e-02, 5.5559e-02, 1.4446e-01,\n", + " 1.3122e-01, 8.1985e-02, 1.5763e-01, 1.6495e-01, 1.0686e-01,\n", + " 1.0473e-01, 8.3099e-03, 8.3055e-05, -1.7983e-02, -2.1662e-01,\n", + " -1.8087e-01, -1.8816e-01, -2.4657e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005151946097612381\n", + "Grad encoder.fc1.bias: 0.00038834073347970843\n", + "Grad encoder.encoder.0.weight: 8.499275281792507e-05\n", + "Grad encoder.encoder.0.bias: 0.00043448235373944044\n", + "Grad encoder.encoder.2.weight: 7.145477866288275e-05\n", + "Grad encoder.encoder.2.bias: 0.0007198507664725184\n", + "Grad encoder.encoder.4.weight: 0.000229819372179918\n", + "Grad encoder.encoder.4.bias: 0.0017239218577742577\n", + "Grad decoder.fc1.0.weight: 7.787362119415775e-05\n", + "Grad decoder.fc1.0.bias: 0.0004959174548275769\n", + "Grad decoder.fc1.2.weight: 6.964857311686501e-05\n", + "Grad decoder.fc1.2.bias: 0.000980034121312201\n", + "Grad decoder.fc1.4.weight: 7.758704305160791e-05\n", + "Grad decoder.fc1.4.bias: 0.0011355557944625616\n", + "Grad decoder.fc2.weight: 0.00015549179806839675\n", + "Grad decoder.fc2.bias: 0.002425775397568941\n", + "Grad _memory_unit.weight_ih_l0: 2.0724943169625476e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.582046626135707e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.355135024525225e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0609037417452782e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00017155798559542745\n", + "Grad _memory_unit.bias_hh_l1: 8.84715627762489e-05\n", + "Data X Sample: tensor([[1.4937, 1.7230, 1.8572, 1.9416, 2.1275, 2.3160, 2.4050, 2.5141, 2.5777,\n", + " 2.5971, 2.6457, 2.6798, 2.6254, 2.5765, 2.5194, 2.5546, 2.4765, 2.5050,\n", + " 2.5131, 2.5032, 2.4634, 2.4341, 2.3592, 2.3801, 2.3216, 2.4970, 2.3603,\n", + " 2.4308, 2.1856, 2.1780, 2.2537, 2.2328, 2.1868, 1.4555, 1.9266, 1.7415,\n", + " 1.6617, 1.5318, 1.5909, 1.5547, 1.2504, 0.7209, 0.6649, 1.2084, 1.8711,\n", + " 1.9042, 1.3870, 1.8766]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3626, -0.6165, -0.4215, -0.5645, 0.2401, 0.5469, -0.3229, 0.1425,\n", + " 0.5829, 0.6674, 0.5611, 0.7247, 0.2793, 0.4304, -0.1343, 0.4372,\n", + " 0.8342, 0.5675, 0.8150, 0.6564, 0.8234, 0.5736, -0.4847, -0.0608,\n", + " -0.2933, -0.3416, -0.8805, -1.4319, -1.7012, -0.2198, -0.5833, 1.4242,\n", + " 1.1210, -0.0127, -1.0841, 0.1921, -0.8287, 0.5417, -0.7130, -0.6816,\n", + " -0.1035, 0.8422, -0.6135]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2321, 0.2202, 0.1107, 0.1378, 0.0760, -0.0350, -0.2192, -0.2252,\n", + " -0.1233, -0.1367, -0.1524, 0.1390, 0.1542, 0.1930, 0.1266, 0.1993,\n", + " 0.1552, 0.0955, 0.0864, 0.0618, 0.0336, 0.0792, 0.0926, 0.0134,\n", + " 0.0577, 0.0272, -0.0608, 0.0139, 0.0540, 0.1335, 0.1280, 0.0779,\n", + " 0.1508, 0.1598, 0.1012, 0.0991, 0.0125, 0.0025, -0.0169, -0.2068,\n", + " -0.1668, -0.1779, -0.2371]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003240539226680994\n", + "Grad encoder.fc1.bias: 0.00038285148912109435\n", + "Grad encoder.encoder.0.weight: 5.3585536079481244e-05\n", + "Grad encoder.encoder.0.bias: 0.00027084158500656486\n", + "Grad encoder.encoder.2.weight: 3.768564420170151e-05\n", + "Grad encoder.encoder.2.bias: 0.00023443330428563058\n", + "Grad encoder.encoder.4.weight: 0.0001223197323270142\n", + "Grad encoder.encoder.4.bias: 0.0006416091928258538\n", + "Grad decoder.fc1.0.weight: 3.5878758353646845e-05\n", + "Grad decoder.fc1.0.bias: 0.0001861035416368395\n", + "Grad decoder.fc1.2.weight: 4.2322459194110706e-05\n", + "Grad decoder.fc1.2.bias: 0.00034414936089888215\n", + "Grad decoder.fc1.4.weight: 4.341309249866754e-05\n", + "Grad decoder.fc1.4.bias: 0.0005868154112249613\n", + "Grad decoder.fc2.weight: 9.098070586333051e-05\n", + "Grad decoder.fc2.bias: 0.0020139075350016356\n", + "Grad _memory_unit.weight_ih_l0: 4.711841484095203e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.493538886483293e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.3251199561636895e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.7036554709193297e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.2945070415735245e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.6444126231363043e-05\n", + "Data X Sample: tensor([[1.5000, 1.7667, 1.8768, 1.9263, 2.0199, 2.0228, 2.1646, 2.1323, 2.2238,\n", + " 2.2179, 2.2523, 2.2046, 2.2082, 2.2193, 2.2016, 2.1990, 2.1400, 2.1897,\n", + " 2.2364, 2.2335, 2.3236, 2.3668, 2.3640, 2.3305, 2.4643, 2.4604, 2.3549,\n", + " 2.3615, 2.2064, 2.2828, 2.4252, 2.3378, 2.2418, 1.5013, 2.0148, 1.8436,\n", + " 1.6833, 1.4682, 1.5719, 1.5491, 1.1884, 0.7229, 0.6791, 1.3376, 1.8116,\n", + " 1.8699, 1.2578, 1.8610]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0047, 0.0555, 0.2579, 0.0328, 0.3670, -0.7540, 0.2200, -0.4570,\n", + " -0.7203, -0.0481, -0.3430, 1.1729, -0.7722, 0.4714, 0.4836, -0.0943,\n", + " 0.0829, -0.6617, 0.3855, -0.0787, -0.6684, 0.3811, -0.3830, 0.4413,\n", + " 0.0643, -0.2600, 1.4284, -1.1225, -1.0475, 0.8745, -0.0232, 0.3841,\n", + " 0.9764, 0.0625, 1.1639, -0.2194, -0.3148, -0.7055, 0.0040, -0.2054,\n", + " -0.3399, -0.1720, -0.3667]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2514, 0.2399, 0.1229, 0.1486, 0.0791, -0.0426, -0.2326, -0.2458,\n", + " -0.1350, -0.1541, -0.1694, 0.1499, 0.1608, 0.2112, 0.1423, 0.2146,\n", + " 0.1687, 0.1060, 0.0886, 0.0681, 0.0332, 0.0815, 0.0963, 0.0152,\n", + " 0.0634, 0.0250, -0.0608, 0.0169, 0.0666, 0.1474, 0.1453, 0.0917,\n", + " 0.1676, 0.1795, 0.1102, 0.1119, 0.0164, 0.0046, -0.0177, -0.2242,\n", + " -0.1820, -0.1945, -0.2531]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005661282921209931\n", + "Grad encoder.fc1.bias: 0.0004714579554274678\n", + "Grad encoder.encoder.0.weight: 0.0001027665421133861\n", + "Grad encoder.encoder.0.bias: 0.0004136449424549937\n", + "Grad encoder.encoder.2.weight: 7.553414616268128e-05\n", + "Grad encoder.encoder.2.bias: 0.00045558513374999166\n", + "Grad encoder.encoder.4.weight: 0.00026789819821715355\n", + "Grad encoder.encoder.4.bias: 0.0014567140024155378\n", + "Grad decoder.fc1.0.weight: 8.598563726991415e-05\n", + "Grad decoder.fc1.0.bias: 0.00040631083538755774\n", + "Grad decoder.fc1.2.weight: 9.462214075028896e-05\n", + "Grad decoder.fc1.2.bias: 0.0009644096717238426\n", + "Grad decoder.fc1.4.weight: 6.06623143539764e-05\n", + "Grad decoder.fc1.4.bias: 0.0009327984880656004\n", + "Grad decoder.fc2.weight: 0.00010030146950157359\n", + "Grad decoder.fc2.bias: 0.002758824033662677\n", + "Grad _memory_unit.weight_ih_l0: 8.65915080794366e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.9888477254426107e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.2688797141890973e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.5794043924397556e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00012463651364669204\n", + "Grad _memory_unit.bias_hh_l1: 6.0827202105429024e-05\n", + "Data X Sample: tensor([[1.5488, 1.5701, 1.8287, 1.9832, 2.0558, 2.1407, 2.2263, 2.7228, 4.2522,\n", + " 4.3395, 4.2255, 4.2007, 3.9636, 3.8361, 3.8509, 3.5939, 3.6353, 3.6134,\n", + " 3.6282, 3.6023, 3.5626, 3.5043, 3.0339, 2.8878, 2.9691, 2.9070, 2.9756,\n", + " 3.0426, 3.0321, 3.2358, 3.2860, 3.3768, 3.7599, 2.7737, 4.5788, 4.8791,\n", + " 5.1325, 5.5655, 6.0532, 5.8899, 1.1072, 0.6791, 0.6609, 1.2285, 1.8751,\n", + " 1.8756, 1.2102, 1.7984]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 7.4442e-01, 5.7557e-01, 5.8722e-01, 1.8544e+00, 7.7836e-01,\n", + " 5.8339e-01, 5.2409e-01, -1.3477e-01, -7.3603e-01, -3.5812e-01,\n", + " -1.6667e+00, -1.8045e-01, -9.2528e-02, 3.3277e-01, 2.2575e-01,\n", + " 9.1946e-01, 3.0279e-01, 2.3293e-01, -2.9041e-01, 3.2480e-01,\n", + " 3.8457e-01, 4.6525e-01, 4.6300e-01, 3.1476e-01, 3.6967e-02,\n", + " 2.0058e-01, -2.6737e-01, 2.8190e-01, -6.7186e-01, -3.8128e-01,\n", + " 2.8400e-01, -1.4855e-03, 1.0696e-01, 8.8774e-01, 6.1013e-02,\n", + " 2.5802e-01, -9.0653e-01, 6.5219e-01, -8.8267e-01, -7.6678e-01,\n", + " -5.9315e-01, -4.9175e-01, -2.9426e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2255, -0.2847, -0.0901, -0.2104, -0.0299, 0.1321, 0.1639, 0.2529,\n", + " 0.1656, 0.2266, 0.1798, -0.1576, -0.1432, -0.2369, -0.1738, -0.2683,\n", + " -0.2104, -0.0981, -0.0609, -0.1474, -0.0855, -0.0535, -0.0195, -0.0343,\n", + " -0.0405, 0.0230, -0.0290, -0.0842, -0.1858, -0.2328, -0.2338, -0.1807,\n", + " -0.2164, -0.2492, -0.1464, -0.1668, -0.0181, 0.0208, 0.0124, 0.2452,\n", + " 0.2987, 0.2902, 0.1983]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00017629301873967052\n", + "Grad encoder.fc1.bias: 0.0007214927463792264\n", + "Grad encoder.encoder.0.weight: 3.375380765646696e-05\n", + "Grad encoder.encoder.0.bias: 0.0005071632913313806\n", + "Grad encoder.encoder.2.weight: 2.716097151278518e-05\n", + "Grad encoder.encoder.2.bias: 0.00034035262069664896\n", + "Grad encoder.encoder.4.weight: 8.568901102989912e-05\n", + "Grad encoder.encoder.4.bias: 0.0005122690927237272\n", + "Grad decoder.fc1.0.weight: 3.9340739022009075e-05\n", + "Grad decoder.fc1.0.bias: 0.00022940526832826436\n", + "Grad decoder.fc1.2.weight: 3.656593253253959e-05\n", + "Grad decoder.fc1.2.bias: 0.0002808552235364914\n", + "Grad decoder.fc1.4.weight: 3.9364418626064435e-05\n", + "Grad decoder.fc1.4.bias: 0.00030853081261739135\n", + "Grad decoder.fc2.weight: 0.00010345466580474749\n", + "Grad decoder.fc2.bias: 0.0017718783346936107\n", + "Grad _memory_unit.weight_ih_l0: 5.667433470080141e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.4144759916234761e-05\n", + "Grad _memory_unit.bias_hh_l0: 7.29844396119006e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.296920001754188e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.020111711928621e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.5122933948296122e-05\n", + "Data X Sample: tensor([[1.2168, 1.4012, 1.6349, 1.8279, 2.0011, 1.9432, 3.7130, 4.0857, 4.1546,\n", + " 4.2652, 4.1430, 3.9593, 3.6707, 3.7543, 3.4222, 3.5488, 3.4860, 3.5264,\n", + " 3.4610, 3.2898, 3.4056, 3.1874, 2.7929, 2.7962, 2.7233, 2.8156, 2.8371,\n", + " 2.8917, 2.8517, 3.1376, 3.1601, 3.1612, 3.3375, 2.5105, 4.1743, 4.5118,\n", + " 4.7687, 5.3297, 5.9771, 5.6998, 1.0118, 0.6054, 0.6346, 1.0018, 1.5460,\n", + " 1.7097, 1.1694, 1.7750]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2490, -0.5613, -1.1755, 0.0987, -0.0444, -1.5641, -0.0927, -0.1266,\n", + " -0.3759, -0.4472, -0.5913, -0.2259, 0.5462, 0.2363, -1.0078, 0.0646,\n", + " 0.7133, 0.0249, -0.9759, -0.4126, -0.2362, -0.8243, -0.5840, 0.8520,\n", + " -1.1148, -0.1307, 0.3712, -1.0403, 1.5784, 0.4135, 0.7882, 0.2293,\n", + " 0.5620, 0.3608, 0.2791, 0.2229, 0.9995, 0.1524, -1.1945, 0.3209,\n", + " 0.6996, 0.0999, 0.8756]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2108, -0.2695, -0.0850, -0.2130, -0.0431, 0.1148, 0.1459, 0.2360,\n", + " 0.1471, 0.2093, 0.1628, -0.1457, -0.1330, -0.2174, -0.1618, -0.2517,\n", + " -0.2041, -0.0916, -0.0571, -0.1411, -0.0822, -0.0537, -0.0193, -0.0341,\n", + " -0.0392, 0.0210, -0.0187, -0.0676, -0.1642, -0.2120, -0.2114, -0.1643,\n", + " -0.1971, -0.2297, -0.1340, -0.1553, -0.0173, 0.0210, 0.0100, 0.2314,\n", + " 0.2860, 0.2701, 0.1863]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0009938060538843274\n", + "Grad encoder.fc1.bias: 0.0006824815645813942\n", + "Grad encoder.encoder.0.weight: 0.00014240681775845587\n", + "Grad encoder.encoder.0.bias: 0.0006518617155961692\n", + "Grad encoder.encoder.2.weight: 0.0001247398613486439\n", + "Grad encoder.encoder.2.bias: 0.0015207291580736637\n", + "Grad encoder.encoder.4.weight: 0.000342916464433074\n", + "Grad encoder.encoder.4.bias: 0.00353446276858449\n", + "Grad decoder.fc1.0.weight: 0.0001358831359539181\n", + "Grad decoder.fc1.0.bias: 0.0009160132613033056\n", + "Grad decoder.fc1.2.weight: 8.480078395223245e-05\n", + "Grad decoder.fc1.2.bias: 0.001957770437002182\n", + "Grad decoder.fc1.4.weight: 6.548385135829449e-05\n", + "Grad decoder.fc1.4.bias: 0.0007425221265293658\n", + "Grad decoder.fc2.weight: 0.00016985496040433645\n", + "Grad decoder.fc2.bias: 0.0017862515524029732\n", + "Grad _memory_unit.weight_ih_l0: 4.065882239956409e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00010699580161599442\n", + "Grad _memory_unit.bias_hh_l0: 7.500108767999336e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.1364487110986374e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00029867698322050273\n", + "Grad _memory_unit.bias_hh_l1: 0.00015406310558319092\n", + "Data X Sample: tensor([[1.4523, 1.8512, 2.0451, 2.1997, 2.3546, 2.3513, 2.4497, 2.4474, 2.4264,\n", + " 2.4501, 2.3856, 2.2201, 2.1150, 2.0421, 1.9066, 1.8886, 1.9293, 1.9363,\n", + " 1.8647, 1.7611, 1.7249, 1.7223, 1.6603, 1.5460, 1.4602, 1.5097, 1.3879,\n", + " 1.3908, 1.1101, 1.1168, 1.0709, 1.0805, 0.9812, 0.6865, 1.0466, 1.1626,\n", + " 1.2998, 1.5292, 1.7177, 1.6540, 1.2791, 0.7667, 0.7437, 1.4180, 1.9742,\n", + " 2.1844, 1.5094, 2.1346]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.7665, -1.4818, -0.4919, -1.5655, -0.7802, 0.0813, 1.7701, 2.7660,\n", + " 1.7524, 2.6777, 4.3374, -1.3920, -0.3831, -1.3199, -1.9447, -2.6477,\n", + " -0.5564, -0.3441, -0.9754, -1.0065, -0.7206, -0.8206, -0.5929, 0.0684,\n", + " -0.2916, -0.3713, 0.2326, 0.5628, -0.9296, -1.9126, -1.6078, -1.5511,\n", + " 0.7375, -3.8920, -1.0361, -0.9052, -0.9002, 0.3842, 0.8448, 6.7019,\n", + " 6.7899, 4.6838, 2.1552]], device='cuda:0')\n", + "Prediction Sample: tensor([[-1.5349, -1.3576, -0.6536, -1.1082, -0.7276, -0.1739, 1.0621, 1.8721,\n", + " 1.3450, 2.2632, 3.0392, -0.6994, -0.5826, -1.4961, -1.1359, -2.0346,\n", + " -1.5161, -0.7365, -0.2256, -0.4481, -0.3380, -0.0643, -0.0945, -0.0730,\n", + " -0.0636, -0.1828, 0.5675, 0.1666, -0.3994, -1.1672, -1.2433, -0.9879,\n", + " -1.3180, -2.1023, -0.8145, -1.1399, -0.1130, 0.0297, 0.0990, 4.8012,\n", + " 4.4408, 3.4815, 2.4571]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004343010950833559\n", + "Grad encoder.fc1.bias: 0.0006069091614335775\n", + "Grad encoder.encoder.0.weight: 4.983771941624582e-05\n", + "Grad encoder.encoder.0.bias: 0.0004365027416497469\n", + "Grad encoder.encoder.2.weight: 5.2925373893231153e-05\n", + "Grad encoder.encoder.2.bias: 0.0007675668457522988\n", + "Grad encoder.encoder.4.weight: 0.00016503658844158053\n", + "Grad encoder.encoder.4.bias: 0.0015769032761454582\n", + "Grad decoder.fc1.0.weight: 6.226981349755079e-05\n", + "Grad decoder.fc1.0.bias: 0.0004312198143452406\n", + "Grad decoder.fc1.2.weight: 4.7923393140081316e-05\n", + "Grad decoder.fc1.2.bias: 0.0009178329491987824\n", + "Grad decoder.fc1.4.weight: 4.581000030157156e-05\n", + "Grad decoder.fc1.4.bias: 0.0005604617181234062\n", + "Grad decoder.fc2.weight: 0.000116870847705286\n", + "Grad decoder.fc2.bias: 0.0019415263086557388\n", + "Grad _memory_unit.weight_ih_l0: 2.1110025045345537e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.011645357124507e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.6497454604832456e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0976418707286939e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001694269449217245\n", + "Grad _memory_unit.bias_hh_l1: 8.66249538375996e-05\n", + "Data X Sample: tensor([[1.8384, 2.0275, 2.2269, 2.3002, 2.3785, 2.3852, 2.4204, 2.5823, 2.5972,\n", + " 2.5955, 2.6616, 2.6233, 2.4878, 2.4784, 2.5320, 2.5874, 2.5237, 2.5650,\n", + " 2.5544, 2.5534, 2.6278, 2.6760, 2.6990, 2.7122, 2.8415, 2.8000, 2.6373,\n", + " 2.7367, 2.4076, 2.4662, 2.4112, 2.2687, 2.0130, 1.2884, 1.7722, 1.7245,\n", + " 1.6125, 1.5901, 1.6163, 1.4753, 1.3459, 0.8205, 0.8367, 1.3720, 2.1050,\n", + " 2.2473, 1.4618, 2.1816]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 7.2755e-01, 6.1868e-01, 2.8917e-01, 7.4665e-01, 1.1253e+00,\n", + " 5.2223e-02, 1.4318e-01, -3.5471e-01, -6.6813e-01, -6.4030e-01,\n", + " -3.8618e-01, 1.9496e-01, 2.1705e-02, 5.3874e-01, 5.0774e-01,\n", + " 1.6968e+00, 8.4928e-01, 8.8663e-01, -8.4958e-01, -3.6983e-03,\n", + " 1.0829e+00, 3.7854e-01, -1.0508e-03, 9.1988e-01, 9.5273e-01,\n", + " 1.2895e+00, -4.4306e-02, -7.1264e-01, -2.0767e-01, 1.0231e+00,\n", + " 3.7666e-01, 3.7458e-01, 4.3924e-01, 4.1909e-01, 1.0864e-01,\n", + " 6.3151e-01, 4.8520e-01, -8.9709e-01, 1.1604e+00, -2.3020e-01,\n", + " -5.5316e-01, -9.1551e-01, 1.8131e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3014, 0.2902, 0.1551, 0.1739, 0.0896, -0.0576, -0.2683, -0.3018,\n", + " -0.1676, -0.2069, -0.2152, 0.1827, 0.1609, 0.2532, 0.1817, 0.2533,\n", + " 0.2041, 0.1335, 0.1048, 0.0866, 0.0277, 0.0764, 0.0928, 0.0166,\n", + " 0.0741, 0.0230, -0.0682, 0.0162, 0.0942, 0.1819, 0.1995, 0.1290,\n", + " 0.2156, 0.2328, 0.1355, 0.1508, 0.0235, 0.0139, -0.0080, -0.2676,\n", + " -0.2193, -0.2375, -0.2799]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00010008390381699428\n", + "Grad encoder.fc1.bias: 8.094073564279824e-05\n", + "Grad encoder.encoder.0.weight: 2.102370126522146e-05\n", + "Grad encoder.encoder.0.bias: 7.613129855599254e-05\n", + "Grad encoder.encoder.2.weight: 1.240481469721999e-05\n", + "Grad encoder.encoder.2.bias: 9.936322749126703e-05\n", + "Grad encoder.encoder.4.weight: 5.0606002332642674e-05\n", + "Grad encoder.encoder.4.bias: 0.000398016010876745\n", + "Grad decoder.fc1.0.weight: 2.3876989871496335e-05\n", + "Grad decoder.fc1.0.bias: 0.00010351480159442872\n", + "Grad decoder.fc1.2.weight: 3.068467412958853e-05\n", + "Grad decoder.fc1.2.bias: 0.000144709600135684\n", + "Grad decoder.fc1.4.weight: 4.9113314162241295e-05\n", + "Grad decoder.fc1.4.bias: 0.0004150159365963191\n", + "Grad decoder.fc2.weight: 7.949773862492293e-05\n", + "Grad decoder.fc2.bias: 0.0019353759707883\n", + "Grad _memory_unit.weight_ih_l0: 4.780552444572095e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.0096646039746702e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.0349192962166853e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.5645575786038535e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.3089658498065546e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.1815629477496259e-05\n", + "Data X Sample: tensor([[1.3992, 1.5002, 1.5717, 1.6705, 1.7365, 1.9594, 2.0029, 2.0954, 2.0065,\n", + " 3.0646, 3.8544, 4.0216, 3.8571, 3.8225, 3.5357, 3.5201, 3.4938, 3.3232,\n", + " 3.3474, 3.3177, 3.3835, 3.1782, 2.7327, 2.7199, 2.7871, 2.7660, 2.7679,\n", + " 2.8672, 2.8447, 2.9378, 2.9291, 3.1474, 3.5333, 2.5814, 4.3312, 4.5312,\n", + " 4.8808, 5.3509, 5.7553, 5.5097, 1.0357, 0.5715, 0.5942, 1.0448, 1.4350,\n", + " 1.7097, 1.1626, 1.5795]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2673, -1.1960, -1.0999, 0.2582, -1.2317, -0.4917, -0.2698, 0.2708,\n", + " 1.2488, 0.8539, 0.3492, 0.4686, -0.7228, -1.0022, -1.0381, -1.3590,\n", + " -0.6705, 0.1674, 0.2827, -0.4541, -0.2334, 0.7415, -0.0574, 0.6055,\n", + " 2.0506, -0.1849, 0.0326, 2.7849, 0.1785, 0.6095, -0.2974, -0.5467,\n", + " -0.4198, -0.5579, 0.9541, 0.3131, 0.0000, 0.7996, 1.1238, 0.6486,\n", + " 0.8436, 0.8606, 0.5733]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2073, -0.2740, -0.0807, -0.2008, -0.0241, 0.1325, 0.1541, 0.2409,\n", + " 0.1602, 0.2187, 0.1667, -0.1512, -0.1457, -0.2257, -0.1659, -0.2630,\n", + " -0.2086, -0.0890, -0.0499, -0.1408, -0.0857, -0.0570, -0.0213, -0.0368,\n", + " -0.0425, 0.0168, -0.0331, -0.0852, -0.1838, -0.2286, -0.2222, -0.1682,\n", + " -0.2144, -0.2358, -0.1455, -0.1512, -0.0179, 0.0251, 0.0157, 0.2327,\n", + " 0.2925, 0.2795, 0.1978]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 9.634542220737785e-05\n", + "Grad encoder.fc1.bias: 0.00010913657752098516\n", + "Grad encoder.encoder.0.weight: 1.7727319573168643e-05\n", + "Grad encoder.encoder.0.bias: 9.680404764367267e-05\n", + "Grad encoder.encoder.2.weight: 1.1310474292258732e-05\n", + "Grad encoder.encoder.2.bias: 9.108518861467019e-05\n", + "Grad encoder.encoder.4.weight: 4.278818596503697e-05\n", + "Grad encoder.encoder.4.bias: 0.00032473026658408344\n", + "Grad decoder.fc1.0.weight: 1.8176075172959827e-05\n", + "Grad decoder.fc1.0.bias: 9.517484431853518e-05\n", + "Grad decoder.fc1.2.weight: 2.6286714273737743e-05\n", + "Grad decoder.fc1.2.bias: 0.00017439949442632496\n", + "Grad decoder.fc1.4.weight: 3.107957309111953e-05\n", + "Grad decoder.fc1.4.bias: 0.0003547980741132051\n", + "Grad decoder.fc2.weight: 8.434768096776679e-05\n", + "Grad decoder.fc2.bias: 0.001980928936973214\n", + "Grad _memory_unit.weight_ih_l0: 2.9996801913512172e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.4555667803506367e-05\n", + "Grad _memory_unit.bias_hh_l0: 7.508014732593438e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.0299406767444452e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.5946259484044276e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.3201954061514698e-05\n", + "Data X Sample: tensor([[2.1312, 2.5489, 2.8114, 2.8600, 3.0888, 3.0600, 3.1337, 3.1516, 3.2954,\n", + " 3.3285, 3.2643, 3.2601, 3.1913, 3.2254, 3.2280, 3.2561, 3.2045, 3.3407,\n", + " 3.3061, 3.1634, 3.0915, 3.0710, 2.8821, 2.6836, 2.5468, 2.6093, 2.4748,\n", + " 2.5369, 2.1509, 2.1911, 2.2467, 2.1830, 2.0130, 1.3708, 2.0369, 2.3763,\n", + " 2.6626, 2.8437, 3.1629, 3.0471, 1.7754, 1.0017, 1.0307, 1.7194, 2.6124,\n", + " 2.7505, 1.9309, 2.7211]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5248, 0.4639, -1.7575, 0.5277, -1.3045, 1.5737, 1.1191, 0.7314,\n", + " 1.2075, 0.7821, 0.9103, 0.1650, -0.8316, -0.8012, -0.7003, -1.1256,\n", + " -1.6280, -0.0783, 0.0054, -0.8318, -0.4366, 0.1579, -1.3680, 0.7038,\n", + " 0.3215, 0.4538, 0.9168, -0.1451, 0.1311, -1.2175, -1.0272, -1.4114,\n", + " -0.0632, -0.9714, -0.6486, 0.1463, 0.9776, -0.0751, 1.1723, 0.8475,\n", + " 0.8913, 0.6383, 0.0076]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1423, -0.1843, -0.0348, -0.1602, -0.0297, 0.1033, 0.0840, 0.1937,\n", + " 0.1251, 0.1736, 0.1223, -0.1008, -0.0992, -0.1583, -0.1298, -0.1936,\n", + " -0.1534, -0.0647, -0.0131, -0.0871, -0.0441, -0.0568, -0.0326, -0.0358,\n", + " -0.0273, 0.0413, -0.0202, -0.0449, -0.1548, -0.2048, -0.1535, -0.1062,\n", + " -0.1502, -0.1574, -0.0873, -0.1106, -0.0135, 0.0208, -0.0247, 0.1637,\n", + " 0.2519, 0.1911, 0.1378]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00043162688962183893\n", + "Grad encoder.fc1.bias: 0.00025566681870259345\n", + "Grad encoder.encoder.0.weight: 6.964921340113506e-05\n", + "Grad encoder.encoder.0.bias: 0.0003038393915630877\n", + "Grad encoder.encoder.2.weight: 5.094875086797401e-05\n", + "Grad encoder.encoder.2.bias: 0.000592715572565794\n", + "Grad encoder.encoder.4.weight: 0.0001708633208181709\n", + "Grad encoder.encoder.4.bias: 0.001672660349868238\n", + "Grad decoder.fc1.0.weight: 7.1966671384871e-05\n", + "Grad decoder.fc1.0.bias: 0.0005063476273790002\n", + "Grad decoder.fc1.2.weight: 5.9162201068829745e-05\n", + "Grad decoder.fc1.2.bias: 0.0008523621363565326\n", + "Grad decoder.fc1.4.weight: 6.736077193636447e-05\n", + "Grad decoder.fc1.4.bias: 0.0008583036251366138\n", + "Grad decoder.fc2.weight: 0.00015061777958180755\n", + "Grad decoder.fc2.bias: 0.0022581617813557386\n", + "Grad _memory_unit.weight_ih_l0: 1.8214173906017095e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.10984612244647e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.300500611658208e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.418425179319456e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011916286166524515\n", + "Grad _memory_unit.bias_hh_l1: 6.290277815423906e-05\n", + "Data X Sample: tensor([[1.5435, 1.6983, 1.8062, 1.9373, 2.1616, 2.2865, 2.4913, 2.4929, 2.5362,\n", + " 2.5497, 2.6584, 2.5746, 2.5366, 2.5547, 2.5244, 2.5026, 2.4733, 2.4992,\n", + " 2.4636, 2.4065, 2.3800, 2.3561, 2.3327, 2.3572, 2.3554, 2.3768, 2.3043,\n", + " 2.3574, 2.1544, 2.3155, 2.2362, 2.1582, 2.2484, 1.4509, 1.9242, 1.6977,\n", + " 1.5928, 1.4444, 1.5402, 1.5774, 1.1407, 0.6771, 0.6447, 1.2027, 1.7165,\n", + " 1.8355, 1.3326, 1.9470]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6673, 0.2437, 0.8463, 0.5227, -0.7357, 0.3967, -0.4561, -0.6193,\n", + " 0.4708, -0.7616, -0.8905, -0.3128, 0.6231, 0.0507, 1.6476, 0.1791,\n", + " 1.2158, 1.0048, 0.2391, 0.3759, 0.0033, -0.2434, 0.0032, 0.0325,\n", + " -0.3212, -0.3691, 0.5161, 0.9004, 1.0815, 0.5486, 0.8131, 0.3487,\n", + " 0.2657, 0.2293, 1.2171, 1.7814, -0.4969, -0.3178, 0.0173, -0.5849,\n", + " -0.4808, -1.0026, -0.1829]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3483, 0.3268, 0.1672, 0.2246, 0.1132, -0.0558, -0.2979, -0.3537,\n", + " -0.1926, -0.2468, -0.2395, 0.2138, 0.1718, 0.2854, 0.2161, 0.2984,\n", + " 0.2400, 0.1605, 0.1227, 0.1028, 0.0284, 0.0772, 0.1016, 0.0284,\n", + " 0.0747, 0.0138, -0.0864, 0.0154, 0.1111, 0.2214, 0.2406, 0.1588,\n", + " 0.2588, 0.2801, 0.1662, 0.1865, 0.0170, 0.0163, -0.0028, -0.3019,\n", + " -0.2601, -0.2694, -0.3024]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002412644971627742\n", + "Grad encoder.fc1.bias: 0.0001841323246480897\n", + "Grad encoder.encoder.0.weight: 4.927626287098974e-05\n", + "Grad encoder.encoder.0.bias: 0.00017870235024020076\n", + "Grad encoder.encoder.2.weight: 2.548925840528682e-05\n", + "Grad encoder.encoder.2.bias: 0.00016697954561095685\n", + "Grad encoder.encoder.4.weight: 7.978677604114637e-05\n", + "Grad encoder.encoder.4.bias: 0.00034316343953832984\n", + "Grad decoder.fc1.0.weight: 2.846937786671333e-05\n", + "Grad decoder.fc1.0.bias: 0.00019187433645129204\n", + "Grad decoder.fc1.2.weight: 3.258304059272632e-05\n", + "Grad decoder.fc1.2.bias: 0.00021328004368115216\n", + "Grad decoder.fc1.4.weight: 4.1799270547926426e-05\n", + "Grad decoder.fc1.4.bias: 0.000408295018132776\n", + "Grad decoder.fc2.weight: 8.938878454500809e-05\n", + "Grad decoder.fc2.bias: 0.0018675392493605614\n", + "Grad _memory_unit.weight_ih_l0: 2.2352865016728174e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.0049972843262367e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.30486158822896e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.1279826139798388e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.621235398692079e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.2978754057257902e-05\n", + "Data X Sample: tensor([[1.3812, 1.7129, 1.8903, 1.8870, 2.0353, 2.1716, 2.1277, 2.1450, 3.6493,\n", + " 4.3411, 4.2223, 4.3293, 4.0413, 3.9425, 3.8509, 3.7293, 3.6872, 3.5824,\n", + " 3.7728, 3.6766, 3.5773, 3.4660, 3.0267, 2.7829, 2.9353, 2.8731, 2.9224,\n", + " 2.9407, 3.1257, 3.2522, 3.3595, 3.4016, 3.8193, 2.8538, 4.6008, 4.9277,\n", + " 4.9831, 5.4118, 6.0088, 5.7877, 1.1645, 0.6492, 0.7053, 1.1769, 1.6610,\n", + " 1.7784, 1.1422, 1.6889]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.1871, -0.3464, -0.1227, -1.9984, -0.7430, -1.4130, 1.0887, 0.3777,\n", + " 0.4744, 1.0589, 0.5636, 0.0163, -0.7621, -1.1101, -0.3506, -0.1833,\n", + " -1.0031, -0.8972, 0.0688, -0.4062, -0.1682, 0.9249, 0.0851, 0.1343,\n", + " -0.8512, 0.8655, 0.1458, 0.6996, 0.0548, 0.1457, -2.0613, 0.0413,\n", + " -1.1168, -0.3938, -1.1410, 0.7694, -0.5085, 0.7357, 2.2782, 0.7170,\n", + " 0.8916, 0.6043, 0.7984]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2049, -0.2775, -0.0844, -0.1902, -0.0099, 0.1445, 0.1582, 0.2466,\n", + " 0.1721, 0.2282, 0.1713, -0.1552, -0.1541, -0.2327, -0.1675, -0.2715,\n", + " -0.2119, -0.0883, -0.0417, -0.1406, -0.0889, -0.0592, -0.0249, -0.0418,\n", + " -0.0442, 0.0108, -0.0443, -0.0995, -0.1981, -0.2410, -0.2307, -0.1729,\n", + " -0.2287, -0.2406, -0.1534, -0.1496, -0.0207, 0.0300, 0.0210, 0.2358,\n", + " 0.2997, 0.2874, 0.2093]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00033605308271944523\n", + "Grad encoder.fc1.bias: 0.00017942128761205822\n", + "Grad encoder.encoder.0.weight: 4.8793484893394634e-05\n", + "Grad encoder.encoder.0.bias: 0.00021251020370982587\n", + "Grad encoder.encoder.2.weight: 3.629644925240427e-05\n", + "Grad encoder.encoder.2.bias: 0.0003799981495831162\n", + "Grad encoder.encoder.4.weight: 0.00010554919572314247\n", + "Grad encoder.encoder.4.bias: 0.0010283804731443524\n", + "Grad decoder.fc1.0.weight: 3.507925430312753e-05\n", + "Grad decoder.fc1.0.bias: 0.0002412361791357398\n", + "Grad decoder.fc1.2.weight: 2.94381443382008e-05\n", + "Grad decoder.fc1.2.bias: 0.0005027209990657866\n", + "Grad decoder.fc1.4.weight: 3.383792864042334e-05\n", + "Grad decoder.fc1.4.bias: 0.0004446572856977582\n", + "Grad decoder.fc2.weight: 0.0001239577541127801\n", + "Grad decoder.fc2.bias: 0.0023115433286875486\n", + "Grad _memory_unit.weight_ih_l0: 1.1564797205210198e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.5467727027717046e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.11623828363372e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.433717888081446e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.336078513413668e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.393507358850911e-05\n", + "Data X Sample: tensor([[1.3430, 1.6124, 1.8587, 1.9854, 2.0284, 2.0935, 2.1985, 2.4630, 3.8788,\n", + " 4.1531, 4.0891, 4.0274, 4.0280, 3.6753, 3.7223, 3.6623, 3.5190, 3.4857,\n", + " 3.4403, 3.3791, 3.4154, 3.3037, 2.9472, 2.8764, 2.9034, 3.0220, 3.0129,\n", + " 3.2098, 3.1292, 3.2653, 3.3700, 3.4016, 3.6653, 2.6203, 4.4145, 4.6407,\n", + " 4.8179, 5.2236, 5.7553, 5.5948, 1.1120, 0.6970, 0.6649, 1.2113, 1.7006,\n", + " 1.9671, 1.2102, 1.8141]], device='cuda:0')\n", + "Data Y Sample: tensor([[-4.9439e-03, 8.2781e-01, 6.4198e-01, 9.1527e-01, 6.5695e-01,\n", + " -5.1326e-01, -5.3007e-01, -2.4584e-01, 5.4793e-01, -5.5925e-01,\n", + " -1.6497e-01, 1.4318e-01, 3.0560e-01, -2.6834e-01, -1.2015e-01,\n", + " 1.5825e-01, 8.1627e-01, 3.3514e-01, -1.4968e-02, -3.4186e-01,\n", + " -8.6447e-01, -1.0197e+00, 3.9489e-01, -4.6997e-02, 1.2547e+00,\n", + " -3.9978e-01, -8.0853e-01, -7.8286e-01, -1.3450e+00, -7.9208e-03,\n", + " 3.0379e-01, -8.9000e-02, 1.1976e-06, -2.7412e-01, 1.5452e-01,\n", + " 2.9686e-01, -6.4856e-01, -3.7387e-01, -9.1328e-01, -1.6376e+00,\n", + " -9.6761e-01, -4.8772e-02, -6.4162e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1994, -0.2705, -0.0853, -0.1926, -0.0201, 0.1334, 0.1481, 0.2401,\n", + " 0.1624, 0.2196, 0.1644, -0.1479, -0.1484, -0.2235, -0.1607, -0.2613,\n", + " -0.2082, -0.0867, -0.0396, -0.1371, -0.0890, -0.0583, -0.0259, -0.0414,\n", + " -0.0432, 0.0102, -0.0378, -0.0890, -0.1847, -0.2273, -0.2188, -0.1649,\n", + " -0.2172, -0.2319, -0.1450, -0.1438, -0.0224, 0.0309, 0.0193, 0.2321,\n", + " 0.2950, 0.2783, 0.2043]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002536671527195722\n", + "Grad encoder.fc1.bias: 0.00011022189573850483\n", + "Grad encoder.encoder.0.weight: 3.836218093056232e-05\n", + "Grad encoder.encoder.0.bias: 0.0001262502046301961\n", + "Grad encoder.encoder.2.weight: 3.5692148230737075e-05\n", + "Grad encoder.encoder.2.bias: 0.00025390932569280267\n", + "Grad encoder.encoder.4.weight: 8.593268285039812e-05\n", + "Grad encoder.encoder.4.bias: 0.0005565376486629248\n", + "Grad decoder.fc1.0.weight: 3.6218403693055734e-05\n", + "Grad decoder.fc1.0.bias: 0.0001532878668513149\n", + "Grad decoder.fc1.2.weight: 3.9019669202389196e-05\n", + "Grad decoder.fc1.2.bias: 0.00037791766226291656\n", + "Grad decoder.fc1.4.weight: 4.269577402737923e-05\n", + "Grad decoder.fc1.4.bias: 0.00047390934196300805\n", + "Grad decoder.fc2.weight: 0.00010161534009966999\n", + "Grad decoder.fc2.bias: 0.001570656313560903\n", + "Grad _memory_unit.weight_ih_l0: 7.059481959004188e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.4977590581111144e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.1305588486720808e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.1504168873652816e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.8209341659676284e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.9347907911869697e-05\n", + "Data X Sample: tensor([[1.2603, 1.5002, 1.5913, 1.7033, 1.7792, 1.9462, 2.0568, 1.9420, 3.2734,\n", + " 3.9809, 3.8829, 3.8074, 3.5353, 3.4626, 3.3793, 3.3218, 3.2470, 3.2207,\n", + " 3.3082, 3.2415, 3.2706, 3.1567, 2.7713, 2.7199, 2.7833, 2.8261, 2.9437,\n", + " 2.8672, 2.8898, 2.9902, 2.9046, 3.2055, 3.1901, 2.2862, 3.8851, 4.3245,\n", + " 4.5190, 5.0567, 5.3369, 5.3196, 1.0834, 0.5954, 0.5780, 1.0046, 1.4985,\n", + " 1.7269, 1.0674, 1.6186]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2056, -0.7765, -0.7195, -0.2654, -0.1100, 0.7892, -0.0251, 0.3684,\n", + " -0.2134, -0.0798, 0.3368, -0.2547, 1.3851, -0.4338, 0.2501, 0.3512,\n", + " -0.6230, -1.6293, 0.7183, 0.0228, -0.5765, 0.8786, -0.6165, -0.2026,\n", + " 0.7109, -1.0365, -0.0497, -1.2337, -1.5894, -1.2473, -0.2109, -0.7691,\n", + " -1.1068, -0.6996, -0.8750, 0.8910, 0.1360, 0.2066, 0.4914, 0.1615,\n", + " 0.4281, 0.0440, -0.1003]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2043, -0.2789, -0.0880, -0.1845, -0.0033, 0.1494, 0.1590, 0.2500,\n", + " 0.1800, 0.2342, 0.1750, -0.1556, -0.1578, -0.2376, -0.1668, -0.2748,\n", + " -0.2142, -0.0898, -0.0365, -0.1399, -0.0930, -0.0580, -0.0265, -0.0441,\n", + " -0.0443, 0.0081, -0.0507, -0.1059, -0.2043, -0.2455, -0.2349, -0.1758,\n", + " -0.2355, -0.2450, -0.1578, -0.1468, -0.0259, 0.0340, 0.0232, 0.2390,\n", + " 0.3050, 0.2917, 0.2160]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00015472996165044606\n", + "Grad encoder.fc1.bias: 0.00010385809582658112\n", + "Grad encoder.encoder.0.weight: 3.237745113437995e-05\n", + "Grad encoder.encoder.0.bias: 9.712840255815536e-05\n", + "Grad encoder.encoder.2.weight: 2.4297041818499565e-05\n", + "Grad encoder.encoder.2.bias: 0.00021034474775660783\n", + "Grad encoder.encoder.4.weight: 7.402794290101156e-05\n", + "Grad encoder.encoder.4.bias: 0.00042359341750852764\n", + "Grad decoder.fc1.0.weight: 3.1884570489637554e-05\n", + "Grad decoder.fc1.0.bias: 0.00020916202629450709\n", + "Grad decoder.fc1.2.weight: 3.0791270546615124e-05\n", + "Grad decoder.fc1.2.bias: 0.00032081047538667917\n", + "Grad decoder.fc1.4.weight: 4.926864494336769e-05\n", + "Grad decoder.fc1.4.bias: 0.0004384826752357185\n", + "Grad decoder.fc2.weight: 0.00013565534027293324\n", + "Grad decoder.fc2.bias: 0.0016702285502105951\n", + "Grad _memory_unit.weight_ih_l0: 5.415293799160281e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.3508026060881093e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.4318279681901913e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.5126742002612446e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.741523273172788e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.88407154585002e-05\n", + "Data X Sample: tensor([[1.4947, 1.6823, 1.8497, 1.8170, 1.9465, 2.0140, 2.0953, 2.0812, 2.9219,\n", + " 3.7597, 4.0225, 4.0294, 3.9703, 3.7734, 3.7324, 3.4394, 3.3539, 3.4432,\n", + " 3.3102, 3.4014, 3.3516, 3.3496, 2.7929, 2.8439, 2.7495, 2.8156, 2.8584,\n", + " 2.8795, 3.0043, 3.0557, 3.0971, 3.2773, 3.4937, 2.5837, 4.3140, 4.7039,\n", + " 4.8218, 5.2978, 5.9771, 5.6799, 1.0977, 0.6213, 0.6750, 1.3032, 1.7086,\n", + " 1.7555, 1.1830, 1.9548]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2830, -0.6898, -0.2064, -0.3871, -0.2265, 0.7746, 0.6833, 0.5565,\n", + " 0.2748, 0.5750, 0.5518, -1.0268, -0.2475, -0.9934, -0.8744, -1.6947,\n", + " -2.1588, 0.0086, -0.0100, 2.1861, -0.0227, -0.2232, -0.0894, 0.7957,\n", + " -0.5438, 0.1845, 0.2294, 0.8050, -0.5462, -0.0175, 0.5691, -1.2840,\n", + " -0.3011, -0.9295, 0.1223, -0.6674, 0.0000, 0.0000, 0.0000, 0.7401,\n", + " 1.1485, 1.0258, 0.5415]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2108, -0.2900, -0.0904, -0.1725, 0.0208, 0.1720, 0.1741, 0.2627,\n", + " 0.2052, 0.2542, 0.1880, -0.1659, -0.1709, -0.2565, -0.1753, -0.2936,\n", + " -0.2216, -0.0938, -0.0312, -0.1439, -0.0973, -0.0572, -0.0275, -0.0489,\n", + " -0.0452, 0.0052, -0.0687, -0.1294, -0.2324, -0.2727, -0.2577, -0.1907,\n", + " -0.2618, -0.2627, -0.1766, -0.1511, -0.0304, 0.0377, 0.0279, 0.2464,\n", + " 0.3173, 0.3088, 0.2309]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00035570835461840034\n", + "Grad encoder.fc1.bias: 0.00047118356451392174\n", + "Grad encoder.encoder.0.weight: 5.658468580804765e-05\n", + "Grad encoder.encoder.0.bias: 0.0005574360257014632\n", + "Grad encoder.encoder.2.weight: 4.708981578005478e-05\n", + "Grad encoder.encoder.2.bias: 0.0006182133802212775\n", + "Grad encoder.encoder.4.weight: 0.000164799319463782\n", + "Grad encoder.encoder.4.bias: 0.0015574272256344557\n", + "Grad decoder.fc1.0.weight: 6.105935608502477e-05\n", + "Grad decoder.fc1.0.bias: 0.0004665824817493558\n", + "Grad decoder.fc1.2.weight: 6.040708831278607e-05\n", + "Grad decoder.fc1.2.bias: 0.0006680912338197231\n", + "Grad decoder.fc1.4.weight: 4.563316178973764e-05\n", + "Grad decoder.fc1.4.bias: 0.000384667597245425\n", + "Grad decoder.fc2.weight: 0.00011146642646053806\n", + "Grad decoder.fc2.bias: 0.0018359585665166378\n", + "Grad _memory_unit.weight_ih_l0: 1.613350468687713e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.254288433003239e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.8102960641263053e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.843823601026088e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00012457655975595117\n", + "Grad _memory_unit.bias_hh_l1: 6.364644650602713e-05\n", + "Data X Sample: tensor([[1.5997, 1.7988, 1.9744, 2.1297, 2.1531, 2.2556, 2.3418, 2.4375, 2.4825,\n", + " 2.5244, 2.5854, 2.5123, 2.4723, 2.4620, 2.3706, 2.2373, 2.3193, 2.4663,\n", + " 2.4491, 2.4790, 2.4413, 2.5995, 2.5327, 2.5405, 2.5900, 2.6406, 2.5627,\n", + " 2.5287, 2.3382, 2.3876, 2.2922, 2.2797, 2.1648, 1.4257, 1.8457, 1.7269,\n", + " 1.5732, 1.4656, 1.5719, 1.5604, 1.1454, 0.7070, 0.7316, 1.2687, 1.8354,\n", + " 2.0929, 1.4278, 2.0955]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 2.5399, 1.7035, -0.0910, 1.4577, -0.1420, -1.2962, -0.9711, -1.1982,\n", + " -0.8762, -1.0412, -1.2422, -0.5022, 0.0224, -0.5518, 0.1685, 0.6320,\n", + " 0.0210, 0.8064, 0.6853, 0.8961, 0.2106, 0.7073, -0.0885, 1.5892,\n", + " 1.2671, -0.4923, -1.9709, 2.0987, 1.2976, 0.8896, 1.2470, -0.0212,\n", + " 1.2015, 0.8861, 0.7570, 1.2865, 0.0033, -0.8262, -0.2890, -0.9005,\n", + " -0.8233, -0.9147, -0.9530]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3772, 0.3345, 0.1461, 0.2443, 0.1159, -0.0660, -0.3183, -0.3772,\n", + " -0.1997, -0.2615, -0.2508, 0.2191, 0.1640, 0.2838, 0.2402, 0.3124,\n", + " 0.2436, 0.1663, 0.1300, 0.1056, 0.0111, 0.0710, 0.1020, 0.0271,\n", + " 0.0541, -0.0044, -0.0925, 0.0184, 0.1455, 0.2462, 0.2641, 0.1756,\n", + " 0.2780, 0.2904, 0.1695, 0.2075, -0.0215, 0.0200, 0.0019, -0.3098,\n", + " -0.2704, -0.2708, -0.2898]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00020763497741427273\n", + "Grad encoder.fc1.bias: 0.0006622773362323642\n", + "Grad encoder.encoder.0.weight: 4.361491301096976e-05\n", + "Grad encoder.encoder.0.bias: 0.00040362204890698195\n", + "Grad encoder.encoder.2.weight: 2.48223623202648e-05\n", + "Grad encoder.encoder.2.bias: 0.0003170970012433827\n", + "Grad encoder.encoder.4.weight: 9.172654245048761e-05\n", + "Grad encoder.encoder.4.bias: 0.0005138898850418627\n", + "Grad decoder.fc1.0.weight: 3.008357816725038e-05\n", + "Grad decoder.fc1.0.bias: 0.0002462041156832129\n", + "Grad decoder.fc1.2.weight: 3.185969399055466e-05\n", + "Grad decoder.fc1.2.bias: 0.00020075691281817853\n", + "Grad decoder.fc1.4.weight: 3.665318217827007e-05\n", + "Grad decoder.fc1.4.bias: 0.0002765321987681091\n", + "Grad decoder.fc2.weight: 0.00011953819921473041\n", + "Grad decoder.fc2.bias: 0.0022524474188685417\n", + "Grad _memory_unit.weight_ih_l0: 4.013681973447092e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.354864227527287e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.1868713045259938e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.6481924376421375e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.482826261664741e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.2458709281636402e-05\n", + "Data X Sample: tensor([[-0.0011, 0.0087, -0.0015, 0.0044, 0.0068, -0.0029, 0.0139, 0.0085,\n", + " 0.0024, 0.0126, 0.0000, 0.0058, -0.0022, -0.0191, -0.0101, -0.0082,\n", + " 0.0079, 0.0135, 0.0083, 0.0167, 0.0294, -0.0046, 0.0361, 0.0134,\n", + " 0.0000, 0.0131, 0.0186, 0.0816, -0.0173, 0.0197, 0.0000, 0.0249,\n", + " -0.0022, 0.0046, 0.0074, 0.0365, 0.0079, -0.0133, -0.0127, 0.0028,\n", + " 0.0286, 0.0159, -0.0121, -0.0057, 0.0198, -0.0114, 0.0000, 0.0000]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3161, 0.9833, 0.6297, 0.6265, 0.8393, -0.9821, -1.1472, -0.5564,\n", + " -1.0871, -0.8739, -0.8166, 0.4401, 0.8260, 0.9633, 0.2762, 0.1603,\n", + " 1.7651, 0.2834, -0.3676, 0.4041, 0.4248, -0.6345, -0.2146, 1.5739,\n", + " 0.5508, 0.1284, 0.4417, 0.7820, 0.7153, 0.4274, 0.9777, -0.2006,\n", + " 1.1821, 0.7541, 1.5806, 1.6667, 0.4963, 0.1545, 1.2072, -0.7646,\n", + " -0.7752, -0.8943, -0.4444]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 1.1174, 0.8326, 0.3141, 0.5011, -0.5242, -0.7321, -1.3679, -1.3646,\n", + " -0.8914, -1.0411, -0.9995, 0.5129, 0.4646, 0.7642, 0.6509, 0.6020,\n", + " 0.6871, 0.0972, 0.2047, 0.1457, 0.0295, 0.0690, 0.0240, 0.0315,\n", + " 0.0857, -0.0050, 0.2604, 0.5362, 1.1136, 1.1476, 1.0482, 0.6175,\n", + " 0.8916, 0.7641, 0.3934, 0.3696, -0.0057, 0.1557, 0.0567, -0.9561,\n", + " -0.8588, -0.6396, -0.5322]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00043492927215993404\n", + "Grad encoder.fc1.bias: 0.00031159460195340216\n", + "Grad encoder.encoder.0.weight: 5.1958239055238664e-05\n", + "Grad encoder.encoder.0.bias: 0.0003267914871685207\n", + "Grad encoder.encoder.2.weight: 4.592348705045879e-05\n", + "Grad encoder.encoder.2.bias: 0.0007224045693874359\n", + "Grad encoder.encoder.4.weight: 0.00015555910067632794\n", + "Grad encoder.encoder.4.bias: 0.001995135098695755\n", + "Grad decoder.fc1.0.weight: 5.645088094752282e-05\n", + "Grad decoder.fc1.0.bias: 0.0003943833871744573\n", + "Grad decoder.fc1.2.weight: 4.3543590436456725e-05\n", + "Grad decoder.fc1.2.bias: 0.0008580110734328628\n", + "Grad decoder.fc1.4.weight: 5.5175441957544535e-05\n", + "Grad decoder.fc1.4.bias: 0.0005223291227594018\n", + "Grad decoder.fc2.weight: 0.00014962811837904155\n", + "Grad decoder.fc2.bias: 0.0023283646441996098\n", + "Grad _memory_unit.weight_ih_l0: 2.38480915868422e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.38482672709506e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.334378172643483e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.1520833140821196e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00014346443640533835\n", + "Grad _memory_unit.bias_hh_l1: 7.741480658296496e-05\n", + "Data X Sample: tensor([[ 0.0159, 0.0087, 0.0255, 0.0306, 0.0102, 0.0206, 0.0200, 0.0128,\n", + " 0.0220, 0.0253, 0.0222, 0.0039, 0.0133, 0.0354, 0.0177, 0.0096,\n", + " -0.0912, -0.1103, -0.1507, -0.1339, -0.1349, -0.0827, -0.1831, -0.1775,\n", + " -0.1220, -0.2795, -0.2557, -0.4283, -0.0624, -0.0819, -0.0665, -0.0857,\n", + " -0.0528, -0.0847, -0.0392, -0.0243, -0.0098, -0.0424, -0.0254, -0.0028,\n", + " -0.0239, 0.0000, 0.0020, -0.0029, 0.0159, 0.0114, -0.0068, -0.0235]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7889, 1.0611, -1.0214, 0.7439, 0.3324, 0.7603, -1.1216, -1.0314,\n", + " -0.3255, -0.5795, -0.5905, -0.3760, 0.5092, 0.6280, 0.1829, 0.9140,\n", + " 0.2635, 0.4087, 0.4412, 0.9588, 0.7989, 0.2556, 0.9766, 0.6818,\n", + " 0.3980, 0.2869, 1.1681, 0.2620, 0.7115, 1.3594, 1.5527, 0.0143,\n", + " 0.6215, 0.4848, 0.3764, 0.6252, -0.5893, -0.2645, -0.3712, -0.7537,\n", + " -0.3909, -0.5896, -0.3067]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.6693, 0.5795, 0.2520, 0.4300, 0.1000, -0.2271, -0.6361, -0.7956,\n", + " -0.3149, -0.4429, -0.3810, 0.3988, 0.2844, 0.4824, 0.4281, 0.4737,\n", + " 0.4886, 0.2621, 0.2018, 0.1864, 0.0135, 0.0774, 0.0758, 0.0572,\n", + " 0.1113, 0.0575, -0.1227, 0.1515, 0.4173, 0.4976, 0.5502, 0.3240,\n", + " 0.5171, 0.5224, 0.2626, 0.2574, 0.0149, 0.0675, -0.0322, -0.5242,\n", + " -0.5205, -0.4598, -0.4391]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002709923719521612\n", + "Grad encoder.fc1.bias: 0.00032828658004291356\n", + "Grad encoder.encoder.0.weight: 5.397200584411621e-05\n", + "Grad encoder.encoder.0.bias: 0.0002756800677161664\n", + "Grad encoder.encoder.2.weight: 3.237564305891283e-05\n", + "Grad encoder.encoder.2.bias: 0.0002699361939448863\n", + "Grad encoder.encoder.4.weight: 0.00011731463018804789\n", + "Grad encoder.encoder.4.bias: 0.000699578202329576\n", + "Grad decoder.fc1.0.weight: 3.342562195030041e-05\n", + "Grad decoder.fc1.0.bias: 0.00021874986123293638\n", + "Grad decoder.fc1.2.weight: 3.881543307215907e-05\n", + "Grad decoder.fc1.2.bias: 0.00027181877521798015\n", + "Grad decoder.fc1.4.weight: 4.907512629870325e-05\n", + "Grad decoder.fc1.4.bias: 0.0005823818501085043\n", + "Grad decoder.fc2.weight: 9.084635530598462e-05\n", + "Grad decoder.fc2.bias: 0.0018610823899507523\n", + "Grad _memory_unit.weight_ih_l0: 3.196666739313514e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.731914198899176e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.821647497825325e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.6131273241626332e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.635765071725473e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.2682470444124192e-05\n", + "Data X Sample: tensor([[ 0.0117, 0.0044, 0.0210, 0.0087, 0.0188, 0.0280, 0.0231, 0.0156,\n", + " 0.0464, 0.0284, 0.0412, 0.0078, 0.0200, 0.0136, -0.0076, 0.0055,\n", + " -0.1053, -0.1470, -0.1962, -0.1748, -0.1668, -0.1041, -0.1904, -0.1794,\n", + " -0.1577, -0.3291, -0.3090, -0.5261, -0.0659, -0.0884, -0.0980, -0.0580,\n", + " -0.0484, -0.0755, -0.0417, -0.0097, -0.0197, -0.0212, -0.0444, 0.0000,\n", + " 0.0048, 0.0119, -0.0101, -0.0029, 0.0198, 0.0057, 0.0068, 0.0626]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4841, 0.2086, -0.3029, 0.3448, 0.5350, 0.3082, -0.6066, -0.1353,\n", + " -1.0503, -0.2138, -0.3819, -1.3349, -0.0164, 0.8024, 2.2261, -0.2854,\n", + " 0.3981, 0.2632, -0.7575, -0.2969, -0.3711, 1.4286, 0.3318, 0.2896,\n", + " 0.1097, 0.0897, -1.3439, 0.2936, 0.9887, 0.5960, 0.4639, 0.2259,\n", + " 0.6356, 0.1770, 0.1509, -0.6362, 0.1343, 0.0761, -2.3004, -0.4577,\n", + " -0.4937, -0.5629, -0.7120]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.6661, 0.5691, 0.2427, 0.4273, 0.1009, -0.2288, -0.6300, -0.7836,\n", + " -0.3137, -0.4400, -0.3861, 0.3895, 0.2763, 0.4730, 0.4221, 0.4662,\n", + " 0.4763, 0.2597, 0.1957, 0.1860, 0.0097, 0.0795, 0.0791, 0.0593,\n", + " 0.1083, 0.0428, -0.1200, 0.1502, 0.4169, 0.4939, 0.5469, 0.3179,\n", + " 0.5090, 0.5137, 0.2572, 0.2609, 0.0063, 0.0607, -0.0294, -0.5186,\n", + " -0.5150, -0.4530, -0.4300]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 6.533638952532783e-05\n", + "Grad encoder.fc1.bias: 2.723061516007874e-05\n", + "Grad encoder.encoder.0.weight: 1.568010338814929e-05\n", + "Grad encoder.encoder.0.bias: 2.9465109037118964e-05\n", + "Grad encoder.encoder.2.weight: 6.591526016563876e-06\n", + "Grad encoder.encoder.2.bias: 3.6698802432511e-05\n", + "Grad encoder.encoder.4.weight: 1.4761316379008349e-05\n", + "Grad encoder.encoder.4.bias: 0.0001273612433578819\n", + "Grad decoder.fc1.0.weight: 9.216142643708736e-06\n", + "Grad decoder.fc1.0.bias: 5.924569632043131e-05\n", + "Grad decoder.fc1.2.weight: 1.570825043017976e-05\n", + "Grad decoder.fc1.2.bias: 8.490111213177443e-05\n", + "Grad decoder.fc1.4.weight: 2.544603376009036e-05\n", + "Grad decoder.fc1.4.bias: 0.00020363084331620485\n", + "Grad decoder.fc2.weight: 8.003223047126085e-05\n", + "Grad decoder.fc2.bias: 0.0016827360959723592\n", + "Grad _memory_unit.weight_ih_l0: 8.305098617711337e-07\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.9690361265675165e-06\n", + "Grad _memory_unit.bias_hh_l0: 2.621806515890057e-06\n", + "Grad _memory_unit.weight_ih_l1: 5.11486291543406e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.3923141523264349e-05\n", + "Grad _memory_unit.bias_hh_l1: 7.072962034726515e-06\n", + "Data X Sample: tensor([[1.6167, 1.8206, 2.0225, 2.1537, 2.2743, 2.4103, 2.5282, 2.6093, 2.5679,\n", + " 2.6918, 2.6679, 2.7148, 2.6476, 2.5983, 2.4513, 2.4452, 2.4104, 2.4257,\n", + " 2.4842, 2.3879, 2.4757, 2.3943, 2.4556, 2.5634, 2.4980, 2.5126, 2.4722,\n", + " 2.5002, 2.3070, 2.3646, 2.2887, 2.3405, 2.1604, 1.4051, 1.9291, 1.7950,\n", + " 1.6872, 1.6008, 1.6100, 1.4867, 1.2743, 0.7030, 0.7073, 1.3577, 1.9345,\n", + " 2.0643, 1.3938, 2.0330]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3775, -0.1194, -0.1760, 0.5776, 0.3432, -0.9579, 0.1154, -0.1831,\n", + " 0.0890, -0.4218, -0.5622, -1.5897, -0.7257, -0.0123, -0.0030, -0.6462,\n", + " -0.0050, 0.6475, -1.3692, 0.8027, -1.1826, 1.5056, 0.5772, -0.0625,\n", + " -0.8412, -0.0176, -0.4270, -0.0022, 0.1511, -0.3408, 0.8548, 0.1097,\n", + " 0.4340, 0.0321, 0.5076, -0.5176, 0.2934, 0.9760, 0.7551, -0.3841,\n", + " -0.4110, -0.4587, -0.2383]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4171, 0.3475, 0.1323, 0.2652, 0.1100, -0.0967, -0.3567, -0.4101,\n", + " -0.2196, -0.2871, -0.2888, 0.2194, 0.1577, 0.2922, 0.2574, 0.3173,\n", + " 0.2548, 0.1782, 0.1263, 0.1225, -0.0015, 0.0761, 0.1083, 0.0375,\n", + " 0.0465, -0.0265, -0.0907, 0.0365, 0.1897, 0.2833, 0.3016, 0.1914,\n", + " 0.2925, 0.3066, 0.1741, 0.2248, -0.0467, 0.0064, 0.0034, -0.3404,\n", + " -0.2948, -0.2825, -0.2832]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 6.186158861964941e-05\n", + "Grad encoder.fc1.bias: 0.0003361683338880539\n", + "Grad encoder.encoder.0.weight: 1.2704772416327614e-05\n", + "Grad encoder.encoder.0.bias: 0.0002894017961807549\n", + "Grad encoder.encoder.2.weight: 1.426705603080336e-05\n", + "Grad encoder.encoder.2.bias: 0.0002636484568938613\n", + "Grad encoder.encoder.4.weight: 5.808861897094175e-05\n", + "Grad encoder.encoder.4.bias: 0.0007896338356658816\n", + "Grad decoder.fc1.0.weight: 2.766240868368186e-05\n", + "Grad decoder.fc1.0.bias: 0.00024524470791220665\n", + "Grad decoder.fc1.2.weight: 3.85666498914361e-05\n", + "Grad decoder.fc1.2.bias: 0.00028855405980721116\n", + "Grad decoder.fc1.4.weight: 4.7807247028686106e-05\n", + "Grad decoder.fc1.4.bias: 0.0004835854342672974\n", + "Grad decoder.fc2.weight: 0.00011153500963700935\n", + "Grad decoder.fc2.bias: 0.001971912570297718\n", + "Grad _memory_unit.weight_ih_l0: 4.767974587593926e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.2861968318466097e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.1988986443611793e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.1891401047469117e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.741602555848658e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.4117525501642376e-05\n", + "Data X Sample: tensor([[-0.0042, -0.0073, 0.0105, 0.0022, 0.0000, 0.0147, -0.0046, 0.0000,\n", + " 0.0220, 0.0126, 0.0286, 0.0117, 0.0067, -0.0027, 0.0126, -0.0096,\n", + " -0.0346, -0.0368, -0.0640, -0.0502, -0.0466, -0.0352, -0.0578, -0.0420,\n", + " -0.0375, -0.0888, -0.0852, -0.1101, -0.0173, -0.0229, -0.0315, -0.0111,\n", + " -0.0088, -0.0298, 0.0049, 0.0389, 0.0098, -0.0027, 0.0063, -0.0028,\n", + " 0.0191, -0.0020, -0.0081, -0.0172, -0.0040, 0.0114, -0.0136, 0.0391]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.9944, 0.3807, -0.3288, 0.0049, -2.4425, -0.9312, -1.0968, -0.9566,\n", + " -1.0882, -0.8129, -0.7295, 2.4793, -0.7916, 0.7327, 0.0214, 0.3286,\n", + " 0.4614, -0.0412, 0.6994, 2.1570, 0.6730, -0.0361, -0.0716, 1.1221,\n", + " 0.2164, -0.2831, -0.1557, -1.8222, 0.7837, 0.2651, 0.4108, 1.5335,\n", + " 0.8691, 1.1335, -0.3169, -0.0892, 0.8892, -0.0463, -0.3712, -0.7755,\n", + " -0.4275, -0.0388, -0.3875]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.9479, 0.6712, 0.2287, 0.4276, -0.3448, -0.5962, -1.1150, -1.1384,\n", + " -0.6988, -0.8390, -0.8167, 0.4396, 0.3632, 0.6399, 0.5615, 0.4891,\n", + " 0.5543, 0.1253, 0.1880, 0.1386, 0.0031, 0.0737, 0.0450, 0.0504,\n", + " 0.0699, -0.0445, 0.1653, 0.4325, 0.9142, 0.9561, 0.8801, 0.4945,\n", + " 0.7313, 0.6452, 0.3165, 0.3170, -0.0360, 0.1121, 0.0563, -0.7894,\n", + " -0.7149, -0.5461, -0.4361]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006212530424818397\n", + "Grad encoder.fc1.bias: 0.00038168064202181995\n", + "Grad encoder.encoder.0.weight: 0.00011760526831494644\n", + "Grad encoder.encoder.0.bias: 0.0004510715079959482\n", + "Grad encoder.encoder.2.weight: 6.882821617182344e-05\n", + "Grad encoder.encoder.2.bias: 0.00045709521509706974\n", + "Grad encoder.encoder.4.weight: 0.000230645906412974\n", + "Grad encoder.encoder.4.bias: 0.0016069402918219566\n", + "Grad decoder.fc1.0.weight: 6.236837361939251e-05\n", + "Grad decoder.fc1.0.bias: 0.000405596976634115\n", + "Grad decoder.fc1.2.weight: 5.779119237558916e-05\n", + "Grad decoder.fc1.2.bias: 0.00046900834422558546\n", + "Grad decoder.fc1.4.weight: 6.61985031911172e-05\n", + "Grad decoder.fc1.4.bias: 0.0008233323460444808\n", + "Grad decoder.fc2.weight: 0.00012684211833402514\n", + "Grad decoder.fc2.bias: 0.0021564029157161713\n", + "Grad _memory_unit.weight_ih_l0: 7.400513368338579e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.7762804165831767e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.4491206457023509e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.010178943441133e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.660258365329355e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.862105561187491e-05\n", + "Data X Sample: tensor([[1.4862, 1.7886, 2.0000, 2.1166, 2.0694, 1.9919, 1.8565, 3.2708, 4.1497,\n", + " 4.3126, 4.3016, 4.3273, 4.1744, 4.0270, 4.0754, 3.7744, 3.7250, 3.5941,\n", + " 3.6633, 3.5242, 3.3443, 3.3818, 2.8652, 2.9451, 2.8396, 2.9384, 3.0023,\n", + " 3.0222, 3.0008, 3.1540, 3.2580, 3.2718, 3.8303, 2.8332, 4.4586, 4.8888,\n", + " 5.2426, 5.6344, 6.1736, 6.0147, 1.2027, 0.7149, 0.6851, 1.2658, 1.7284,\n", + " 2.0814, 1.3258, 1.9235]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3304, -0.2134, -0.1355, -0.1765, -0.2735, 0.5199, 0.2190, 0.3221,\n", + " 0.3501, 0.5933, 0.1970, -1.2724, 0.1148, -1.4059, -0.0597, -1.4366,\n", + " 1.1898, 0.8186, -0.5124, -0.8744, 4.5555, -0.3116, -0.2546, -0.2344,\n", + " 1.8099, -0.1938, 0.2143, 0.3667, 0.0875, -0.7712, 0.4545, 0.2014,\n", + " -1.0192, 0.1350, -0.5738, 1.2443, 0.0000, -0.6782, 0.2253, 0.5513,\n", + " 0.4824, 0.7100, -0.1930]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2270, -0.2992, -0.1047, -0.1732, 0.0086, 0.1544, 0.1769, 0.2902,\n", + " 0.2049, 0.2464, 0.2052, -0.1826, -0.2038, -0.2797, -0.1826, -0.2878,\n", + " -0.2332, -0.0993, -0.0405, -0.1261, -0.1107, -0.0594, -0.0394, -0.0367,\n", + " -0.0438, 0.0070, -0.0780, -0.1290, -0.2260, -0.2615, -0.2720, -0.2133,\n", + " -0.2675, -0.2995, -0.1890, -0.1423, -0.0283, 0.0179, 0.0377, 0.2877,\n", + " 0.3362, 0.3201, 0.2453]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00011640173033811152\n", + "Grad encoder.fc1.bias: 3.750435644178651e-05\n", + "Grad encoder.encoder.0.weight: 3.5917699278797954e-05\n", + "Grad encoder.encoder.0.bias: 5.459898238768801e-05\n", + "Grad encoder.encoder.2.weight: 2.504870280972682e-05\n", + "Grad encoder.encoder.2.bias: 5.9004698414355516e-05\n", + "Grad encoder.encoder.4.weight: 8.839419751893729e-05\n", + "Grad encoder.encoder.4.bias: 0.00016573903849348426\n", + "Grad decoder.fc1.0.weight: 3.099662717431784e-05\n", + "Grad decoder.fc1.0.bias: 7.33043416403234e-05\n", + "Grad decoder.fc1.2.weight: 3.3735475881258026e-05\n", + "Grad decoder.fc1.2.bias: 0.00016397253784816712\n", + "Grad decoder.fc1.4.weight: 5.813004827359691e-05\n", + "Grad decoder.fc1.4.bias: 0.0004795792337972671\n", + "Grad decoder.fc2.weight: 9.19230078579858e-05\n", + "Grad decoder.fc2.bias: 0.0021192601416260004\n", + "Grad _memory_unit.weight_ih_l0: 1.1645864788079052e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.2002969924651552e-06\n", + "Grad _memory_unit.bias_hh_l0: 8.257152330770623e-07\n", + "Grad _memory_unit.weight_ih_l1: 8.38658195334574e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.2510261260322295e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.1020728379662614e-05\n", + "Data X Sample: tensor([[1.9583, 2.4644, 2.7303, 2.9846, 3.0068, 3.1572, 3.2816, 3.1402, 3.3491,\n", + " 3.2779, 3.3690, 3.2387, 3.2423, 3.2418, 3.2558, 3.1755, 3.1400, 3.2923,\n", + " 3.1966, 2.9774, 2.8584, 2.8352, 2.6315, 2.5710, 2.4868, 2.3612, 2.1498,\n", + " 2.2187, 1.9497, 2.1223, 1.9562, 1.9205, 1.7292, 1.2037, 2.1448, 2.4395,\n", + " 2.8966, 3.0637, 3.3340, 3.1747, 1.5654, 0.9937, 0.9539, 1.6935, 2.3626,\n", + " 2.7791, 1.8493, 2.5178]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.8698, -0.1487, -1.0523, -0.5820, 0.6563, 0.3164, 0.5601, 0.2562,\n", + " -0.6301, -0.4902, -0.4254, -0.5998, -0.3154, -1.1136, -0.5798, -1.1314,\n", + " -0.3015, 0.1045, 0.3558, -0.0834, 0.8819, -0.1702, 0.5908, 0.6151,\n", + " -0.1357, 1.1052, 0.2180, -0.2122, 0.2576, 0.7225, 0.1962, -1.8086,\n", + " 0.2979, 0.0720, -0.5718, 0.5481, 0.0059, 0.5417, -0.4768, -0.2088,\n", + " -0.2579, 1.3296, -0.2909]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1991, -0.2556, -0.0938, -0.2056, -0.0472, 0.0946, 0.1212, 0.2384,\n", + " 0.1375, 0.1940, 0.1511, -0.1362, -0.1438, -0.2134, -0.1494, -0.2312,\n", + " -0.1950, -0.0812, -0.0391, -0.1185, -0.1025, -0.0522, -0.0348, -0.0419,\n", + " -0.0357, -0.0027, -0.0206, -0.0610, -0.1434, -0.1818, -0.1837, -0.1530,\n", + " -0.1955, -0.2267, -0.1303, -0.1266, -0.0378, 0.0196, 0.0216, 0.2356,\n", + " 0.2872, 0.2616, 0.2110]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000200829585082829\n", + "Grad encoder.fc1.bias: 0.00022978507331572473\n", + "Grad encoder.encoder.0.weight: 3.9369348087348044e-05\n", + "Grad encoder.encoder.0.bias: 0.0003482183674350381\n", + "Grad encoder.encoder.2.weight: 2.525289892219007e-05\n", + "Grad encoder.encoder.2.bias: 0.00028946727979928255\n", + "Grad encoder.encoder.4.weight: 9.1320660430938e-05\n", + "Grad encoder.encoder.4.bias: 0.0008362349472008646\n", + "Grad decoder.fc1.0.weight: 3.3259344490943477e-05\n", + "Grad decoder.fc1.0.bias: 0.00021059490973129869\n", + "Grad decoder.fc1.2.weight: 4.7903769882395864e-05\n", + "Grad decoder.fc1.2.bias: 0.00026248209178447723\n", + "Grad decoder.fc1.4.weight: 5.349893763195723e-05\n", + "Grad decoder.fc1.4.bias: 0.0004463006043806672\n", + "Grad decoder.fc2.weight: 9.144443174591288e-05\n", + "Grad decoder.fc2.bias: 0.001866019330918789\n", + "Grad _memory_unit.weight_ih_l0: 5.152787252882263e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.768559741321951e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.176215826300904e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.8468272173777223e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.072785643278621e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.536482315917965e-05\n", + "Data X Sample: tensor([[1.6210, 1.8323, 2.0150, 2.1494, 2.3375, 2.4839, 2.6191, 2.6802, 2.6705,\n", + " 2.7140, 2.7218, 2.7830, 2.6343, 2.5438, 2.5698, 2.4356, 2.4246, 2.5205,\n", + " 2.4904, 2.4548, 2.5419, 2.5046, 2.4580, 2.5328, 2.4342, 2.5100, 2.4455,\n", + " 2.4227, 2.3764, 2.4465, 2.3132, 2.2687, 2.2088, 1.3685, 1.9585, 1.8412,\n", + " 1.7502, 1.6193, 1.6670, 1.5008, 1.2647, 0.7050, 0.7377, 1.2859, 1.9068,\n", + " 2.1901, 1.4550, 2.1346]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1058, 1.5308, 0.0589, -0.1135, 0.2249, 0.9795, -0.8772, 0.4481,\n", + " -0.0366, 0.0890, 0.1083, -0.3315, -0.1791, 0.0387, -0.2114, -0.0427,\n", + " -0.5737, 0.1484, -1.0247, -0.0385, -0.5718, 0.9024, 0.4311, 0.4554,\n", + " -1.0330, 0.9759, 0.4851, 0.0045, -0.5146, -0.3949, -0.4068, 0.3172,\n", + " 0.9792, -0.2732, 0.3098, -1.3007, 0.8233, 0.0000, 0.7285, -0.3906,\n", + " -0.2754, -0.0395, -0.9296]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3810, 0.2955, 0.0836, 0.2191, 0.0956, -0.1167, -0.3375, -0.3595,\n", + " -0.2061, -0.2714, -0.2787, 0.1940, 0.1311, 0.2634, 0.2383, 0.2668,\n", + " 0.2109, 0.1520, 0.1074, 0.0992, -0.0193, 0.0636, 0.0899, 0.0341,\n", + " 0.0368, -0.0338, -0.0765, 0.0474, 0.1978, 0.2634, 0.2821, 0.1642,\n", + " 0.2743, 0.2629, 0.1460, 0.1918, -0.0602, -0.0074, 0.0101, -0.3079,\n", + " -0.2583, -0.2461, -0.2334]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 8.755487942835316e-05\n", + "Grad encoder.fc1.bias: 0.0001505102845840156\n", + "Grad encoder.encoder.0.weight: 2.5133003873634152e-05\n", + "Grad encoder.encoder.0.bias: 0.00014221746823750436\n", + "Grad encoder.encoder.2.weight: 1.921592775033787e-05\n", + "Grad encoder.encoder.2.bias: 0.00019066774984821677\n", + "Grad encoder.encoder.4.weight: 5.376733315642923e-05\n", + "Grad encoder.encoder.4.bias: 0.0007110515143722296\n", + "Grad decoder.fc1.0.weight: 3.418284541112371e-05\n", + "Grad decoder.fc1.0.bias: 0.0003139657201245427\n", + "Grad decoder.fc1.2.weight: 4.5833538024453446e-05\n", + "Grad decoder.fc1.2.bias: 0.00024429187760688365\n", + "Grad decoder.fc1.4.weight: 4.881938002654351e-05\n", + "Grad decoder.fc1.4.bias: 0.0002714006113819778\n", + "Grad decoder.fc2.weight: 8.428141882177442e-05\n", + "Grad decoder.fc2.bias: 0.001325098448432982\n", + "Grad _memory_unit.weight_ih_l0: 4.469162377063185e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.8471882615122013e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.476708257541759e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.343537971682963e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.805154018569738e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.907585778506473e-05\n", + "Data X Sample: tensor([[1.4056, 1.7158, 1.8918, 1.8935, 2.0438, 2.1244, 2.0337, 1.9080, 2.9365,\n", + " 3.8845, 4.3175, 4.1793, 4.1411, 4.0161, 3.9165, 3.5857, 3.6196, 3.5631,\n", + " 3.6035, 3.5167, 3.4449, 3.3588, 2.8990, 2.7771, 2.7908, 2.7947, 2.8877,\n", + " 2.8305, 2.9419, 3.1212, 3.3035, 3.3602, 3.8787, 2.8629, 4.6180, 4.8815,\n", + " 5.1266, 5.4966, 5.9961, 5.7877, 1.1550, 0.6452, 0.6690, 1.1482, 1.7680,\n", + " 1.7612, 1.2034, 1.8375]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5976, 0.9808, -1.9404, 1.5049, 0.8035, 0.5361, 0.7085, 0.9105,\n", + " -0.4401, -0.4287, 0.1871, 1.0133, 1.3955, 1.5676, 0.3722, 0.6655,\n", + " 2.0015, 0.9011, 0.3688, 0.5695, -0.1925, 0.0905, -0.0168, 0.2291,\n", + " -0.1796, -0.2519, -0.6063, -0.9335, -0.7861, -0.0861, -0.6678, -0.1749,\n", + " 0.0242, -0.0151, 0.4812, -1.2719, 0.0000, 0.3924, 0.5906, -0.7695,\n", + " -0.2711, -0.7401, -0.4083]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2536, -0.3067, -0.1138, -0.1943, -0.0061, 0.1448, 0.1820, 0.3079,\n", + " 0.1952, 0.2441, 0.2191, -0.1860, -0.2043, -0.2876, -0.1918, -0.2819,\n", + " -0.2284, -0.0969, -0.0527, -0.1301, -0.1220, -0.0558, -0.0427, -0.0296,\n", + " -0.0355, 0.0038, -0.0679, -0.1197, -0.2125, -0.2393, -0.2660, -0.2164,\n", + " -0.2590, -0.3109, -0.1813, -0.1514, -0.0339, 0.0101, 0.0477, 0.3084,\n", + " 0.3419, 0.3356, 0.2598]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00010828455560840666\n", + "Grad encoder.fc1.bias: 9.706008131615818e-05\n", + "Grad encoder.encoder.0.weight: 2.1441832359414548e-05\n", + "Grad encoder.encoder.0.bias: 0.00011608458589762449\n", + "Grad encoder.encoder.2.weight: 1.7073945855372585e-05\n", + "Grad encoder.encoder.2.bias: 0.0001584039709996432\n", + "Grad encoder.encoder.4.weight: 4.702839578385465e-05\n", + "Grad encoder.encoder.4.bias: 0.00029822165379300714\n", + "Grad decoder.fc1.0.weight: 1.6621230315649882e-05\n", + "Grad decoder.fc1.0.bias: 0.00012478663120418787\n", + "Grad decoder.fc1.2.weight: 2.9736431315541267e-05\n", + "Grad decoder.fc1.2.bias: 0.0001638146350160241\n", + "Grad decoder.fc1.4.weight: 4.18615345552098e-05\n", + "Grad decoder.fc1.4.bias: 0.00033627907396294177\n", + "Grad decoder.fc2.weight: 8.274093852378428e-05\n", + "Grad decoder.fc2.bias: 0.0018022730946540833\n", + "Grad _memory_unit.weight_ih_l0: 2.3091099592420505e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.6160422092070803e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.248654921771958e-06\n", + "Grad _memory_unit.weight_ih_l1: 7.769375542920898e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.486147786839865e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.2355149920040276e-05\n", + "Data X Sample: tensor([[1.3314, 1.5701, 1.7220, 1.7995, 1.8850, 2.0375, 2.0999, 2.0443, 2.0089,\n", + " 3.2131, 3.8702, 4.1170, 3.8970, 3.6644, 3.6517, 3.3697, 3.4121, 3.4896,\n", + " 3.4217, 3.3605, 3.4841, 3.1353, 2.8243, 2.7523, 2.8209, 3.0611, 3.0529,\n", + " 3.1609, 2.9731, 3.0328, 3.2266, 3.2552, 3.5817, 2.6821, 4.4243, 4.7866,\n", + " 4.8926, 5.2978, 5.7236, 5.6714, 1.1216, 0.6193, 0.6265, 1.0965, 1.5341,\n", + " 1.7955, 1.2510, 1.7124]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.1002e+00, -1.2987e+00, 4.6326e-01, 1.4619e+00, -2.2114e-01,\n", + " 1.0005e-01, -9.6380e-02, 2.3624e-01, 4.2294e-01, 8.8437e-01,\n", + " 7.1189e-01, 7.6763e-01, 6.3398e-01, 4.8238e-01, -1.3417e+00,\n", + " -2.5445e-03, 1.6981e-01, -5.7287e-01, -7.4444e-01, 2.7684e-01,\n", + " -1.7037e+00, -8.0606e-02, 1.5137e-01, -6.6308e-01, 2.6691e-01,\n", + " 5.7280e+00, 3.1111e-01, -9.5250e-01, -1.3881e-01, -1.8519e-01,\n", + " 3.5923e-02, 1.0518e-01, -1.3437e+00, -1.5662e-01, -6.6577e-01,\n", + " -7.1342e-02, 3.2988e-03, 9.3563e-02, 8.3070e-01, 6.3330e-01,\n", + " 7.2354e-01, 6.1601e-01, 8.6101e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2510, -0.2971, -0.1109, -0.2045, -0.0148, 0.1360, 0.1705, 0.2959,\n", + " 0.1813, 0.2361, 0.2062, -0.1733, -0.1838, -0.2715, -0.1849, -0.2703,\n", + " -0.2140, -0.0909, -0.0525, -0.1314, -0.1229, -0.0522, -0.0419, -0.0359,\n", + " -0.0316, -0.0041, -0.0509, -0.1058, -0.1949, -0.2192, -0.2398, -0.1995,\n", + " -0.2431, -0.2905, -0.1658, -0.1514, -0.0419, 0.0138, 0.0458, 0.2919,\n", + " 0.3281, 0.3258, 0.2581]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000226707779802382\n", + "Grad encoder.fc1.bias: 0.00020584845333360136\n", + "Grad encoder.encoder.0.weight: 4.860808257944882e-05\n", + "Grad encoder.encoder.0.bias: 0.00021296425256878138\n", + "Grad encoder.encoder.2.weight: 3.915444540325552e-05\n", + "Grad encoder.encoder.2.bias: 0.0002779854694381356\n", + "Grad encoder.encoder.4.weight: 0.00012524686462711543\n", + "Grad encoder.encoder.4.bias: 0.0005343860830180347\n", + "Grad decoder.fc1.0.weight: 4.044962042826228e-05\n", + "Grad decoder.fc1.0.bias: 0.00022574496688321233\n", + "Grad decoder.fc1.2.weight: 4.071422517881729e-05\n", + "Grad decoder.fc1.2.bias: 0.0004006385861430317\n", + "Grad decoder.fc1.4.weight: 4.751459346152842e-05\n", + "Grad decoder.fc1.4.bias: 0.0004813512787222862\n", + "Grad decoder.fc2.weight: 9.736575884744525e-05\n", + "Grad decoder.fc2.bias: 0.0022359290160238743\n", + "Grad _memory_unit.weight_ih_l0: 5.712016445613699e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.7375215975334868e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.0333020327379927e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.9564004105632193e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.523192183114588e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.208090700150933e-05\n", + "Data X Sample: tensor([[1.5308, 1.7434, 1.8557, 1.9416, 1.9653, 2.0861, 2.1461, 2.1195, 2.2433,\n", + " 2.3285, 2.3761, 2.3487, 2.2969, 2.1730, 2.1941, 2.1566, 2.2060, 2.2187,\n", + " 2.2488, 2.2614, 2.3064, 2.3913, 2.4797, 2.3763, 2.4399, 2.4839, 2.4668,\n", + " 2.4512, 2.2272, 2.3450, 2.3867, 2.4069, 2.3628, 1.6203, 2.3114, 2.1452,\n", + " 1.9920, 1.8525, 1.6797, 1.5718, 1.2170, 0.7508, 0.6972, 1.2113, 1.8671,\n", + " 2.0014, 1.3530, 1.9626]], device='cuda:0')\n", + "Data Y Sample: tensor([[-6.2277e-02, -8.5551e-02, 5.2826e-01, 7.5042e-01, 1.0577e-01,\n", + " -5.4429e-01, -3.0361e-01, -1.1078e-01, -9.0744e-01, 9.9722e-02,\n", + " -2.4266e-01, -7.9012e-01, 6.7935e-01, -1.7118e-01, 1.3956e-01,\n", + " 3.7247e-01, 1.0152e+00, -2.0172e-03, 8.9241e-01, 1.0236e+00,\n", + " 5.6634e-02, -1.3120e-01, -1.1534e-01, 7.8265e-01, -5.5249e-02,\n", + " 5.2103e-02, 7.9708e-03, -5.6843e-01, -1.8776e-01, 6.4464e-01,\n", + " 8.2980e-01, 2.3500e-01, 1.5575e-01, 2.1944e-01, 3.5976e-01,\n", + " -3.5028e-01, 5.6924e-01, -7.0551e-01, 2.2782e+00, -1.5953e-01,\n", + " -2.5613e-01, 5.3509e-02, 1.9577e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3952, 0.3036, 0.0676, 0.2352, 0.1181, -0.1142, -0.3471, -0.3661,\n", + " -0.2135, -0.2947, -0.2862, 0.2098, 0.1436, 0.2724, 0.2490, 0.2833,\n", + " 0.2179, 0.1433, 0.1102, 0.0936, -0.0146, 0.0680, 0.0867, 0.0403,\n", + " 0.0433, -0.0444, -0.0784, 0.0633, 0.2014, 0.2836, 0.2917, 0.1706,\n", + " 0.3080, 0.2675, 0.1534, 0.1997, -0.0657, -0.0263, 0.0201, -0.3167,\n", + " -0.2755, -0.2566, -0.2358]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 8.492881897836924e-05\n", + "Grad encoder.fc1.bias: 0.00014873876352794468\n", + "Grad encoder.encoder.0.weight: 2.7189238608116284e-05\n", + "Grad encoder.encoder.0.bias: 0.00011805246322182938\n", + "Grad encoder.encoder.2.weight: 1.6385529306717217e-05\n", + "Grad encoder.encoder.2.bias: 0.00013129619765095413\n", + "Grad encoder.encoder.4.weight: 6.4863808802329e-05\n", + "Grad encoder.encoder.4.bias: 0.0003117876476608217\n", + "Grad decoder.fc1.0.weight: 2.775455141090788e-05\n", + "Grad decoder.fc1.0.bias: 0.00018653966253623366\n", + "Grad decoder.fc1.2.weight: 2.8257785743335262e-05\n", + "Grad decoder.fc1.2.bias: 0.00016698370745871216\n", + "Grad decoder.fc1.4.weight: 4.81919851154089e-05\n", + "Grad decoder.fc1.4.bias: 0.0003795638622250408\n", + "Grad decoder.fc2.weight: 9.501140448264778e-05\n", + "Grad decoder.fc2.bias: 0.001977203879505396\n", + "Grad _memory_unit.weight_ih_l0: 2.2850219920655945e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.5171577615546994e-05\n", + "Grad _memory_unit.bias_hh_l0: 7.784696208545938e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.220012904923351e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.775877121370286e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.9033741409657523e-05\n", + "Data X Sample: tensor([[-0.0011, 0.0058, 0.0105, 0.0109, 0.0000, 0.0133, 0.0154, 0.0057,\n", + " 0.0317, 0.0221, 0.0444, 0.0253, 0.0178, 0.0000, 0.0101, 0.0123,\n", + " -0.0739, -0.1006, -0.1074, -0.0744, -0.0981, -0.0689, -0.1012, -0.0802,\n", + " -0.0769, -0.1619, -0.1332, -0.2529, -0.0208, 0.0000, -0.0350, -0.0138,\n", + " -0.0066, -0.0320, -0.0049, 0.0316, 0.0000, 0.0000, 0.0190, -0.0057,\n", + " 0.0000, 0.0060, 0.0141, -0.0115, 0.0159, 0.0000, 0.0136, 0.0000]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.9941, 0.9858, 0.6083, 0.9015, -0.3480, -0.7140, -0.8281, -0.3610,\n", + " -0.1368, -0.8061, -0.5683, 0.6448, 1.6412, -0.3677, 1.0189, 0.5750,\n", + " 0.3399, 0.1272, 0.1644, 1.4484, 0.8368, -0.0249, 0.3131, 0.6364,\n", + " 0.0767, 0.7461, 1.0916, -0.1967, 0.4093, 0.7250, 0.4738, 0.0864,\n", + " 0.9117, 0.2272, 1.4863, 1.1629, 0.8379, -0.1765, -0.0197, -0.5719,\n", + " -0.6792, -0.0861, 0.3617]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.6432, 0.5009, 0.1558, 0.3837, 0.0749, -0.2711, -0.6521, -0.7299,\n", + " -0.3209, -0.4485, -0.4038, 0.3610, 0.2625, 0.4493, 0.4015, 0.3732,\n", + " 0.4250, 0.2030, 0.1733, 0.1494, -0.0058, 0.0598, 0.0389, 0.0683,\n", + " 0.0899, 0.0139, -0.0694, 0.2055, 0.4675, 0.5163, 0.5423, 0.3044,\n", + " 0.5135, 0.4622, 0.2345, 0.2025, -0.0153, 0.0259, -0.0170, -0.4948,\n", + " -0.4647, -0.4090, -0.3662]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0008116684621199965\n", + "Grad encoder.fc1.bias: 0.0006218298804014921\n", + "Grad encoder.encoder.0.weight: 0.00012922947644256055\n", + "Grad encoder.encoder.0.bias: 0.0006954205455258489\n", + "Grad encoder.encoder.2.weight: 0.00010493901208974421\n", + "Grad encoder.encoder.2.bias: 0.0010970492148771882\n", + "Grad encoder.encoder.4.weight: 0.0003083937044721097\n", + "Grad encoder.encoder.4.bias: 0.0030734974425286055\n", + "Grad decoder.fc1.0.weight: 0.00010384871711721644\n", + "Grad decoder.fc1.0.bias: 0.0007649608887732029\n", + "Grad decoder.fc1.2.weight: 8.330638229381293e-05\n", + "Grad decoder.fc1.2.bias: 0.0011127113830298185\n", + "Grad decoder.fc1.4.weight: 7.117877248674631e-05\n", + "Grad decoder.fc1.4.bias: 0.000720604439266026\n", + "Grad decoder.fc2.weight: 0.00012545540812425315\n", + "Grad decoder.fc2.bias: 0.0018574638525024056\n", + "Grad _memory_unit.weight_ih_l0: 3.1485029467148706e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.385603385046124e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.752992001362145e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.2627440810319968e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00023119497927837074\n", + "Grad _memory_unit.bias_hh_l1: 0.00011866271961480379\n", + "Data X Sample: tensor([[1.5796, 1.7857, 1.8753, 1.9898, 1.9943, 2.0567, 2.0337, 2.5511, 4.1229,\n", + " 4.3363, 4.3746, 4.3974, 4.1434, 4.0379, 3.7173, 3.7293, 3.7910, 3.5999,\n", + " 3.6200, 3.5167, 3.4473, 3.2471, 2.9424, 2.8859, 2.8002, 2.8626, 3.0103,\n", + " 3.0712, 3.0910, 3.1376, 3.2336, 3.2469, 3.9139, 2.7874, 4.5199, 4.8304,\n", + " 5.0715, 5.4304, 5.8440, 5.7849, 1.1311, 0.6851, 0.6791, 1.2429, 1.7641,\n", + " 2.0986, 1.3802, 1.8453]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3832, -0.7763, -0.1057, -0.7803, -0.1194, 0.5050, 0.3623, 0.3661,\n", + " -0.0174, 0.2392, 0.1825, -0.1279, 0.3017, 0.0895, -3.4437, 0.0217,\n", + " 0.1538, -2.3627, -0.5223, 0.1241, -0.4905, 0.3903, 0.7229, -0.9773,\n", + " -0.2890, 3.1961, -1.3793, -0.7984, -0.6410, -0.1783, -0.4416, -1.4375,\n", + " -0.2282, 0.0466, -0.2825, -0.0981, -0.5204, -0.1625, 0.0000, 0.0830,\n", + " 0.2887, 0.7118, 0.6844]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2546, -0.2903, -0.1135, -0.2077, -0.0225, 0.1251, 0.1623, 0.2906,\n", + " 0.1740, 0.2307, 0.2007, -0.1673, -0.1690, -0.2604, -0.1794, -0.2652,\n", + " -0.2100, -0.0892, -0.0553, -0.1319, -0.1243, -0.0529, -0.0452, -0.0410,\n", + " -0.0255, -0.0060, -0.0373, -0.0960, -0.1803, -0.2029, -0.2230, -0.1906,\n", + " -0.2306, -0.2820, -0.1589, -0.1482, -0.0438, 0.0104, 0.0531, 0.2869,\n", + " 0.3219, 0.3228, 0.2597]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00016977766063064337\n", + "Grad encoder.fc1.bias: 0.00048726744716987014\n", + "Grad encoder.encoder.0.weight: 4.220853588776663e-05\n", + "Grad encoder.encoder.0.bias: 0.0002905471483245492\n", + "Grad encoder.encoder.2.weight: 2.360865801165346e-05\n", + "Grad encoder.encoder.2.bias: 0.00020450970623642206\n", + "Grad encoder.encoder.4.weight: 8.140764839481562e-05\n", + "Grad encoder.encoder.4.bias: 0.00042670240509323776\n", + "Grad decoder.fc1.0.weight: 2.340596984140575e-05\n", + "Grad decoder.fc1.0.bias: 0.00011867210560012609\n", + "Grad decoder.fc1.2.weight: 2.5384453692822717e-05\n", + "Grad decoder.fc1.2.bias: 0.00016020057955756783\n", + "Grad decoder.fc1.4.weight: 3.666764678200707e-05\n", + "Grad decoder.fc1.4.bias: 0.0003738455707207322\n", + "Grad decoder.fc2.weight: 7.797907164786011e-05\n", + "Grad decoder.fc2.bias: 0.0019156471826136112\n", + "Grad _memory_unit.weight_ih_l0: 2.8071926863049157e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.682104412902845e-06\n", + "Grad _memory_unit.bias_hh_l0: 3.573496542230714e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.0756273240986047e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.9950024579884484e-05\n", + "Grad _memory_unit.bias_hh_l1: 9.776946171768941e-06\n", + "Data X Sample: tensor([[1.5902, 1.8337, 2.0361, 2.0816, 2.2163, 2.3116, 2.2555, 2.4474, 2.3775,\n", + " 2.4422, 2.4014, 2.3857, 2.4279, 2.3393, 2.2899, 2.3495, 2.3051, 2.4257,\n", + " 2.4140, 2.4213, 2.4855, 2.5214, 2.4387, 2.4603, 2.5093, 2.5388, 2.4961,\n", + " 2.4879, 2.2341, 2.1649, 2.0052, 1.9979, 1.6500, 1.0870, 1.5467, 1.4739,\n", + " 1.4552, 1.4338, 1.3564, 1.3760, 1.3793, 0.7348, 0.7700, 1.4180, 1.9147,\n", + " 1.9899, 1.4414, 2.0564]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0233, 0.8854, 0.8058, 1.1971, 0.8447, 0.6295, -0.8824, -0.8244,\n", + " -0.0194, -0.9920, -1.3800, 0.0758, 0.6071, 0.5073, -0.7924, 0.6568,\n", + " 0.4411, 1.0574, 0.6120, 1.5535, -0.2734, -0.7916, 1.4602, -0.4651,\n", + " -0.6595, -0.4050, -0.1924, -0.1419, 0.4097, -0.0975, -0.6986, 0.1867,\n", + " 0.3389, -0.0035, -0.2571, -0.0142, -0.2609, -0.2549, -0.6221, -1.1796,\n", + " -0.3139, 0.3225, -0.8511]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2924, 0.2123, 0.0429, 0.1547, 0.0649, -0.1002, -0.2818, -0.2660,\n", + " -0.1476, -0.1964, -0.2199, 0.1451, 0.1103, 0.1916, 0.1762, 0.1717,\n", + " 0.1507, 0.0868, 0.0720, 0.0526, -0.0267, 0.0258, 0.0453, 0.0157,\n", + " 0.0249, -0.0231, -0.0457, 0.0582, 0.1620, 0.1867, 0.2141, 0.1308,\n", + " 0.2246, 0.1823, 0.1159, 0.1321, -0.0488, -0.0247, 0.0054, -0.2215,\n", + " -0.1626, -0.1629, -0.1555]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004392040427774191\n", + "Grad encoder.fc1.bias: 0.00037122369394637644\n", + "Grad encoder.encoder.0.weight: 8.015954517759383e-05\n", + "Grad encoder.encoder.0.bias: 0.00047327697393484414\n", + "Grad encoder.encoder.2.weight: 5.037979281041771e-05\n", + "Grad encoder.encoder.2.bias: 0.0004236383247189224\n", + "Grad encoder.encoder.4.weight: 0.00017406353435944766\n", + "Grad encoder.encoder.4.bias: 0.0011620757868513465\n", + "Grad decoder.fc1.0.weight: 4.640117913368158e-05\n", + "Grad decoder.fc1.0.bias: 0.0002658587181940675\n", + "Grad decoder.fc1.2.weight: 4.464509402168915e-05\n", + "Grad decoder.fc1.2.bias: 0.0003617219044826925\n", + "Grad decoder.fc1.4.weight: 5.181032611289993e-05\n", + "Grad decoder.fc1.4.bias: 0.0006626681424677372\n", + "Grad decoder.fc2.weight: 9.316982323070988e-05\n", + "Grad decoder.fc2.bias: 0.002353489398956299\n", + "Grad _memory_unit.weight_ih_l0: 5.398788744059857e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.730157237034291e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.136828339251224e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.0303148176026298e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.9965881519019604e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.97412698273547e-05\n", + "Data X Sample: tensor([[-0.0053, -0.0073, 0.0165, 0.0087, -0.0068, -0.0088, 0.0000, 0.0085,\n", + " -0.0024, -0.0047, -0.0317, -0.0117, -0.0155, -0.0164, -0.0177, 0.0178,\n", + " 0.0503, 0.0600, 0.0289, 0.0167, 0.0638, 0.0321, -0.0096, -0.0115,\n", + " 0.0094, 0.0131, 0.0080, 0.0000, 0.0416, 0.0033, -0.0070, -0.0083,\n", + " -0.0352, -0.0046, -0.0490, -0.0170, -0.0079, -0.0239, -0.0634, -0.0113,\n", + " -0.0382, 0.0040, 0.0081, -0.0115, 0.0159, -0.0057, -0.0204, -0.0547]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1117, 0.2114, -1.2218, 0.3479, -0.4161, -0.2291, -0.3578, -0.3973,\n", + " 0.0526, -0.5137, -0.4356, -0.4082, 0.2094, 0.3030, 1.2166, 0.3505,\n", + " 0.7135, 1.5066, -0.9460, 0.2975, 0.1910, 0.1223, -0.3374, 0.1554,\n", + " 0.4428, 0.1485, 0.5190, 0.2558, 0.0499, 1.0333, 1.1340, 0.7060,\n", + " -0.3493, 0.0492, -0.0637, -0.1143, -0.5085, -0.6596, 0.0000, -0.1221,\n", + " -0.1939, -0.1009, 0.1196]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.7837, 0.5327, 0.1404, 0.4006, -0.1863, -0.4855, -0.9188, -0.9448,\n", + " -0.5398, -0.6739, -0.6533, 0.4046, 0.3227, 0.5323, 0.4538, 0.3698,\n", + " 0.4520, 0.0793, 0.1436, 0.0760, 0.0027, 0.0543, 0.0222, 0.0614,\n", + " 0.0723, -0.0839, 0.1209, 0.3654, 0.7722, 0.7987, 0.7216, 0.4071,\n", + " 0.6442, 0.5268, 0.3045, 0.2368, 0.0029, 0.0607, 0.0642, -0.6232,\n", + " -0.5708, -0.4415, -0.3767]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00021393834322225302\n", + "Grad encoder.fc1.bias: 0.0007453424041159451\n", + "Grad encoder.encoder.0.weight: 3.7851226807106286e-05\n", + "Grad encoder.encoder.0.bias: 0.00041367398807778955\n", + "Grad encoder.encoder.2.weight: 2.9308499506441876e-05\n", + "Grad encoder.encoder.2.bias: 0.0005237628356553614\n", + "Grad encoder.encoder.4.weight: 0.00010453484719619155\n", + "Grad encoder.encoder.4.bias: 0.0012343170819804072\n", + "Grad decoder.fc1.0.weight: 4.953532334184274e-05\n", + "Grad decoder.fc1.0.bias: 0.0005636645946651697\n", + "Grad decoder.fc1.2.weight: 5.321437492966652e-05\n", + "Grad decoder.fc1.2.bias: 0.0006264534313231707\n", + "Grad decoder.fc1.4.weight: 5.0631057092687115e-05\n", + "Grad decoder.fc1.4.bias: 0.0005449039163067937\n", + "Grad decoder.fc2.weight: 0.0001637636887608096\n", + "Grad decoder.fc2.bias: 0.0017984561854973435\n", + "Grad _memory_unit.weight_ih_l0: 1.2214313755976036e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.191590025788173e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.0167895602062345e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.376988610805711e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00013262449647299945\n", + "Grad _memory_unit.bias_hh_l1: 6.905468762852252e-05\n", + "Data X Sample: tensor([[1.6538, 1.8337, 2.0030, 2.0247, 2.1889, 2.3646, 2.2879, 2.3906, 2.3995,\n", + " 2.4438, 2.4522, 2.4188, 2.3502, 2.3748, 2.2672, 2.2318, 2.2265, 2.3715,\n", + " 2.3810, 2.3525, 2.3849, 2.4403, 2.4508, 2.5271, 2.5056, 2.5858, 2.4908,\n", + " 2.5858, 2.1544, 2.1452, 2.0297, 1.9509, 1.6324, 1.0802, 1.4658, 1.4861,\n", + " 1.4178, 1.3914, 1.4071, 1.3647, 1.2695, 0.7129, 0.7882, 1.3032, 1.9345,\n", + " 1.9556, 1.3258, 2.0486]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1700, 0.2505, -0.3755, 0.1905, -0.2399, -0.9207, -0.6723, -0.1978,\n", + " 0.4042, -0.3682, -0.3391, -0.6122, 0.9782, 0.8017, 1.4487, 0.1993,\n", + " 0.8028, 0.3205, 0.3169, 1.2142, 0.1330, -0.0828, 0.6163, 0.9089,\n", + " 0.9857, 1.0724, -1.4239, -0.4775, -0.5055, 0.0307, 0.2882, -0.5803,\n", + " 0.9163, -0.0038, 0.6357, -0.0316, -0.4285, -0.4903, 0.0000, -0.0652,\n", + " -0.1431, 0.1662, -0.3507]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 3.0161e-01, 2.2861e-01, 5.2192e-02, 1.7818e-01, 6.4947e-02,\n", + " -1.0622e-01, -2.9917e-01, -2.8337e-01, -1.5181e-01, -1.9743e-01,\n", + " -2.2688e-01, 1.4910e-01, 1.3124e-01, 2.0062e-01, 1.8284e-01,\n", + " 1.7937e-01, 1.6686e-01, 9.1471e-02, 6.5162e-02, 5.8388e-02,\n", + " -2.5205e-02, 2.0936e-02, 4.5917e-02, 1.8423e-02, 2.5570e-02,\n", + " -2.2818e-02, -4.1857e-02, 5.8866e-02, 1.7598e-01, 1.9226e-01,\n", + " 2.2170e-01, 1.4554e-01, 2.3330e-01, 1.9180e-01, 1.3042e-01,\n", + " 1.2963e-01, -3.5920e-02, -2.7951e-02, -2.1197e-04, -2.2624e-01,\n", + " -1.6759e-01, -1.6578e-01, -1.7043e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00011946696031372994\n", + "Grad encoder.fc1.bias: 0.0004968757275491953\n", + "Grad encoder.encoder.0.weight: 3.58436991518829e-05\n", + "Grad encoder.encoder.0.bias: 0.0002392347960267216\n", + "Grad encoder.encoder.2.weight: 2.4013002985157073e-05\n", + "Grad encoder.encoder.2.bias: 0.00023755684378556907\n", + "Grad encoder.encoder.4.weight: 0.00010984326218022034\n", + "Grad encoder.encoder.4.bias: 0.000701049342751503\n", + "Grad decoder.fc1.0.weight: 3.7655776395695284e-05\n", + "Grad decoder.fc1.0.bias: 0.00023507792502641678\n", + "Grad decoder.fc1.2.weight: 4.1826227970886976e-05\n", + "Grad decoder.fc1.2.bias: 0.00021732761524617672\n", + "Grad decoder.fc1.4.weight: 5.034495916333981e-05\n", + "Grad decoder.fc1.4.bias: 0.0003157567698508501\n", + "Grad decoder.fc2.weight: 9.068258077604696e-05\n", + "Grad decoder.fc2.bias: 0.0022499242331832647\n", + "Grad _memory_unit.weight_ih_l0: 4.668337624025298e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.4754258700122591e-05\n", + "Grad _memory_unit.bias_hh_l0: 7.926165380922612e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.024296463787323e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.080889241071418e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.5025350623764098e-05\n", + "Data X Sample: tensor([[1.4788, 1.7930, 2.0571, 2.2303, 2.3324, 2.5208, 2.4620, 2.5823, 2.5801,\n", + " 2.5370, 2.5061, 2.4129, 2.2703, 2.2466, 2.0982, 1.9898, 2.0897, 2.0408,\n", + " 2.0402, 1.9062, 1.9580, 1.8784, 1.8266, 1.6854, 1.6929, 1.6716, 1.6064,\n", + " 1.6722, 1.2524, 1.3395, 1.1793, 1.1440, 1.0538, 0.7666, 1.1913, 1.3523,\n", + " 1.4159, 1.6114, 1.8952, 1.8725, 1.2313, 0.7727, 0.7619, 1.3663, 2.0495,\n", + " 2.2873, 1.5026, 2.3301]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.2702, -1.0205, -0.9104, -1.1292, -0.6416, 0.1496, 0.4422, 1.4972,\n", + " 0.7357, 1.9366, 3.0456, -0.1887, -1.0308, -1.5216, -2.0554, -1.8544,\n", + " -1.9727, -1.4733, -0.0491, -0.6288, -0.0628, -0.3800, -0.6305, -0.4380,\n", + " -0.6412, -0.2606, 0.7841, 0.4274, 0.1014, -0.0229, -0.6567, -1.4441,\n", + " -1.5877, -1.6064, 0.5341, -0.8483, 0.4513, 0.4777, -0.8646, 3.7532,\n", + " 4.0141, 3.1100, 2.3280]], device='cuda:0')\n", + "Prediction Sample: tensor([[-1.8772, -1.5239, -0.5901, -1.1145, -0.7475, -0.0932, 1.3165, 2.3065,\n", + " 1.7760, 2.7419, 3.8015, -0.9045, -0.6816, -1.7177, -1.3359, -2.2741,\n", + " -1.7026, -0.7497, -0.1722, -0.4873, -0.5188, -0.0241, -0.0876, -0.1217,\n", + " -0.0833, -0.1063, 0.5468, 0.1861, -0.5329, -1.3278, -1.4112, -1.2306,\n", + " -1.5613, -2.6737, -0.9950, -1.3014, -0.2100, -0.0739, 0.2113, 5.9941,\n", + " 5.5835, 4.3246, 3.1126]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0016384427435696125\n", + "Grad encoder.fc1.bias: 0.0011403324315324426\n", + "Grad encoder.encoder.0.weight: 0.00018886837642639875\n", + "Grad encoder.encoder.0.bias: 0.0011202775640413165\n", + "Grad encoder.encoder.2.weight: 0.00018130324315279722\n", + "Grad encoder.encoder.2.bias: 0.0024412493221461773\n", + "Grad encoder.encoder.4.weight: 0.0005570260109379888\n", + "Grad encoder.encoder.4.bias: 0.006449212320148945\n", + "Grad decoder.fc1.0.weight: 0.00020819343626499176\n", + "Grad decoder.fc1.0.bias: 0.0014658102300018072\n", + "Grad decoder.fc1.2.weight: 0.00012827065074816346\n", + "Grad decoder.fc1.2.bias: 0.0030880547128617764\n", + "Grad decoder.fc1.4.weight: 0.00014649222430307418\n", + "Grad decoder.fc1.4.bias: 0.0015465584583580494\n", + "Grad decoder.fc2.weight: 0.0002525911550037563\n", + "Grad decoder.fc2.bias: 0.00233308132737875\n", + "Grad _memory_unit.weight_ih_l0: 8.692876872373745e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0002394424518570304\n", + "Grad _memory_unit.bias_hh_l0: 0.00017068989109247923\n", + "Grad _memory_unit.weight_ih_l1: 4.1547766159055755e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0005650177481584251\n", + "Grad _memory_unit.bias_hh_l1: 0.0002995107206515968\n", + "Data X Sample: tensor([[1.4183, 1.5745, 1.7596, 1.8782, 1.9584, 1.9948, 2.0183, 2.1592, 3.5004,\n", + " 4.0851, 4.2541, 4.1267, 3.8460, 3.7789, 3.6668, 3.5379, 3.4749, 3.6501,\n", + " 3.5209, 3.3940, 3.4007, 3.3022, 2.7954, 2.8249, 2.8152, 2.8522, 2.9756,\n", + " 3.0304, 3.0112, 3.2260, 3.1706, 3.3353, 3.6719, 2.6684, 4.5199, 4.8255,\n", + " 5.0558, 5.3535, 5.8123, 5.8246, 1.1597, 0.6313, 0.6103, 1.0965, 1.7601,\n", + " 1.7784, 1.2714, 1.6811]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4960, -0.9400, 0.0133, -0.5182, 0.2053, -0.4619, -0.0288, 0.5877,\n", + " 0.2362, 0.4926, 0.6599, -0.8020, 1.8962, 0.2506, -0.7075, -1.0402,\n", + " -1.4193, -0.1827, -0.5353, -0.2678, -0.3825, -0.3553, 0.8208, -1.3548,\n", + " 0.2631, 0.4880, 0.6449, 0.3178, -0.1842, -0.1310, 0.5913, -1.2302,\n", + " -0.9151, -1.2162, 0.0910, -0.6718, 0.9926, -0.6532, 0.0000, 0.7756,\n", + " 0.6663, 0.5294, 0.8457]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2388, -0.2731, -0.1073, -0.1987, -0.0261, 0.1080, 0.1411, 0.2666,\n", + " 0.1678, 0.2189, 0.1798, -0.1507, -0.1495, -0.2375, -0.1631, -0.2553,\n", + " -0.2100, -0.0911, -0.0512, -0.1240, -0.1141, -0.0552, -0.0495, -0.0526,\n", + " -0.0170, -0.0086, -0.0219, -0.0845, -0.1639, -0.1942, -0.1990, -0.1701,\n", + " -0.2192, -0.2611, -0.1556, -0.1381, -0.0357, 0.0079, 0.0572, 0.2665,\n", + " 0.3066, 0.3044, 0.2533]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003223060630261898\n", + "Grad encoder.fc1.bias: 0.00026809278642758727\n", + "Grad encoder.encoder.0.weight: 5.3060568461660296e-05\n", + "Grad encoder.encoder.0.bias: 0.000390098022762686\n", + "Grad encoder.encoder.2.weight: 3.1044364732224494e-05\n", + "Grad encoder.encoder.2.bias: 0.0003887134953401983\n", + "Grad encoder.encoder.4.weight: 8.911128679756075e-05\n", + "Grad encoder.encoder.4.bias: 0.0009973137639462948\n", + "Grad decoder.fc1.0.weight: 3.286419087089598e-05\n", + "Grad decoder.fc1.0.bias: 0.00028200086671859026\n", + "Grad decoder.fc1.2.weight: 4.4694032112602144e-05\n", + "Grad decoder.fc1.2.bias: 0.0003643415402621031\n", + "Grad decoder.fc1.4.weight: 5.398353096097708e-05\n", + "Grad decoder.fc1.4.bias: 0.0005752550205215812\n", + "Grad decoder.fc2.weight: 0.00010244559234706685\n", + "Grad decoder.fc2.bias: 0.0022322721779346466\n", + "Grad _memory_unit.weight_ih_l0: 4.135832114116056e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.0255427443771623e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.06656289062812e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.8590158106235322e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.151913112262264e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.111887417617254e-05\n", + "Data X Sample: tensor([[1.7674, 1.8745, 2.1037, 2.2412, 2.4587, 2.4972, 2.5205, 2.6121, 2.7168,\n", + " 2.6997, 2.7980, 2.7479, 2.6920, 2.6556, 2.5976, 2.5724, 2.5174, 2.6269,\n", + " 2.5400, 2.6092, 2.6253, 2.6531, 2.6339, 2.5844, 2.6688, 2.7216, 2.6213,\n", + " 2.6511, 2.4770, 2.5808, 2.4287, 2.4234, 2.3452, 1.5196, 1.9658, 1.8971,\n", + " 1.7659, 1.6750, 1.6733, 1.6313, 1.3125, 0.7129, 0.7720, 1.3319, 1.9940,\n", + " 2.1844, 1.4346, 2.0330]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0713, -0.1935, 0.9554, 0.0371, -0.0326, -0.0786, -0.4714, -0.2559,\n", + " -0.5163, 0.0396, -0.1553, -0.0314, 1.9428, 0.1439, -0.8195, -0.0216,\n", + " -0.4384, -0.7471, -0.5745, -0.4020, 0.4904, -0.4974, 0.4615, -0.7336,\n", + " -0.8459, 2.1723, 0.1643, 0.2233, -0.5232, 0.6723, 0.3035, 0.8766,\n", + " 0.3615, -0.2315, 0.6616, -0.1263, 0.5692, 0.8959, 0.0040, -0.4305,\n", + " -0.1574, -0.2066, -0.4131]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4045, 0.3569, 0.1136, 0.3021, 0.1241, -0.1349, -0.3930, -0.4011,\n", + " -0.2186, -0.2869, -0.2974, 0.2167, 0.2085, 0.2824, 0.2544, 0.2905,\n", + " 0.2713, 0.1341, 0.0750, 0.1117, 0.0009, 0.0396, 0.0729, 0.0415,\n", + " 0.0620, -0.0256, -0.0632, 0.0625, 0.2305, 0.2770, 0.3050, 0.2158,\n", + " 0.3274, 0.2844, 0.2050, 0.1868, -0.0112, -0.0420, 0.0071, -0.3196,\n", + " -0.2648, -0.2606, -0.2809]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001948115386767313\n", + "Grad encoder.fc1.bias: 0.0005583731108345091\n", + "Grad encoder.encoder.0.weight: 3.823416045634076e-05\n", + "Grad encoder.encoder.0.bias: 0.00045057875104248524\n", + "Grad encoder.encoder.2.weight: 2.881673935917206e-05\n", + "Grad encoder.encoder.2.bias: 0.0006026139599271119\n", + "Grad encoder.encoder.4.weight: 9.436842810828239e-05\n", + "Grad encoder.encoder.4.bias: 0.0016854291316121817\n", + "Grad decoder.fc1.0.weight: 4.9301361286779866e-05\n", + "Grad decoder.fc1.0.bias: 0.0006104555213823915\n", + "Grad decoder.fc1.2.weight: 6.245266558835283e-05\n", + "Grad decoder.fc1.2.bias: 0.0005273664137348533\n", + "Grad decoder.fc1.4.weight: 6.58836288494058e-05\n", + "Grad decoder.fc1.4.bias: 0.0007124614785425365\n", + "Grad decoder.fc2.weight: 0.00011154559615533799\n", + "Grad decoder.fc2.bias: 0.001950539997778833\n", + "Grad _memory_unit.weight_ih_l0: 6.8341923906700686e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.0103328248951584e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.5553610612405464e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.589522293623304e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00012799199612345546\n", + "Grad _memory_unit.bias_hh_l1: 6.390101043507457e-05\n", + "Data X Sample: tensor([[ 0.0191, 0.0073, 0.0361, 0.0175, 0.0256, 0.0383, 0.0231, 0.0142,\n", + " 0.0269, 0.0221, 0.0190, 0.0156, 0.0200, 0.0000, 0.0277, 0.0150,\n", + " -0.1053, -0.1257, -0.1797, -0.1469, -0.1521, -0.1026, -0.1976, -0.1756,\n", + " -0.1501, -0.3004, -0.2904, -0.5098, -0.0520, -0.0917, -0.0875, -0.0663,\n", + " -0.0572, -0.0732, -0.0515, -0.0049, -0.0374, -0.0398, -0.0507, -0.0170,\n", + " -0.0286, -0.0020, -0.0101, -0.0057, -0.0159, 0.0229, 0.0612, 0.0626]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.8724, 0.5880, 0.1770, 1.6939, -1.5426, -1.4361, -1.4274, -0.9700,\n", + " -0.1962, -0.6282, -0.8193, 0.1766, 1.3738, 0.2654, -0.5900, -0.0047,\n", + " -0.2613, -0.0330, -1.1499, 0.3757, 0.3460, 0.6467, 0.0716, 0.7541,\n", + " 0.1811, 1.1720, -0.8754, 0.5809, 1.1252, 0.3078, 0.8184, 1.4554,\n", + " 0.3934, 0.2253, -0.1017, -0.0614, -0.0107, -0.6228, -0.3712, -0.4784,\n", + " -0.3937, -0.1495, -0.7099]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5941, 0.5185, 0.2113, 0.4411, 0.1224, -0.2514, -0.6350, -0.7014,\n", + " -0.3051, -0.4079, -0.3791, 0.3545, 0.3061, 0.4218, 0.3624, 0.3930,\n", + " 0.4302, 0.1744, 0.1099, 0.1605, 0.0270, 0.0442, 0.0375, 0.0713,\n", + " 0.1192, 0.0061, -0.0671, 0.1693, 0.4383, 0.4621, 0.5121, 0.3268,\n", + " 0.4995, 0.4437, 0.2798, 0.2146, 0.0570, 0.0086, -0.0157, -0.4522,\n", + " -0.4192, -0.3887, -0.4032]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007950718281790614\n", + "Grad encoder.fc1.bias: 0.0004208585887681693\n", + "Grad encoder.encoder.0.weight: 0.0001107716525439173\n", + "Grad encoder.encoder.0.bias: 0.00047567131696268916\n", + "Grad encoder.encoder.2.weight: 8.803517266642302e-05\n", + "Grad encoder.encoder.2.bias: 0.0009570516413077712\n", + "Grad encoder.encoder.4.weight: 0.0002754598972387612\n", + "Grad encoder.encoder.4.bias: 0.002615606412291527\n", + "Grad decoder.fc1.0.weight: 8.531485946150497e-05\n", + "Grad decoder.fc1.0.bias: 0.0005560771096497774\n", + "Grad decoder.fc1.2.weight: 6.137067248346284e-05\n", + "Grad decoder.fc1.2.bias: 0.0010488597908988595\n", + "Grad decoder.fc1.4.weight: 4.7125358833000064e-05\n", + "Grad decoder.fc1.4.bias: 0.0005567943444475532\n", + "Grad decoder.fc2.weight: 9.652828885009512e-05\n", + "Grad decoder.fc2.bias: 0.002254689112305641\n", + "Grad _memory_unit.weight_ih_l0: 2.979545752168633e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.808173202443868e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.1553244702517986e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.2280383089091629e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00021608911629300565\n", + "Grad _memory_unit.bias_hh_l1: 0.00010962194937746972\n", + "Data X Sample: tensor([[1.1945, 1.4274, 1.6664, 1.8170, 1.8611, 1.9329, 1.9659, 2.0144, 1.9821,\n", + " 1.9683, 1.9192, 1.8852, 1.7909, 1.7504, 1.4980, 1.5754, 1.5755, 1.5707,\n", + " 1.5446, 1.4748, 1.5041, 1.4176, 1.4218, 1.3838, 1.2950, 1.3321, 1.2387,\n", + " 1.3663, 0.9540, 1.0186, 0.9414, 0.9644, 0.8184, 0.5561, 0.7991, 0.8464,\n", + " 0.8849, 1.0389, 1.1536, 1.1036, 1.1025, 0.6014, 0.6225, 1.1309, 1.7442,\n", + " 1.8756, 1.2578, 1.7750]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.9653e+00, -1.7674e+00, -1.3410e+00, -9.1367e-01, -7.5705e-01,\n", + " 7.4523e-01, 2.2586e+00, 3.5053e+00, 2.4805e+00, 3.5420e+00,\n", + " 5.0893e+00, -1.0342e+00, -7.1853e-01, -2.3306e+00, -1.9191e+00,\n", + " -3.3492e+00, -1.7119e+00, -1.4521e+00, -2.9228e-01, -8.4305e-01,\n", + " -8.6904e-01, -6.5070e-01, -5.1174e-01, -4.4417e-03, -1.2766e-01,\n", + " -1.6997e-02, 1.8029e+00, 8.3231e-01, -1.3712e+00, -2.5710e+00,\n", + " -2.7774e+00, -1.3766e+00, -2.8253e+00, -3.4733e+00, -3.4445e+00,\n", + " -1.2860e+00, -5.2038e-02, 6.0441e-01, 2.7389e-01, 1.0291e+01,\n", + " 9.5333e+00, 4.7747e+00, 4.0266e+00]], device='cuda:0')\n", + "Prediction Sample: tensor([[-2.0910, -1.7085, -0.6541, -1.1880, -0.7251, -0.1146, 1.5047, 2.5690,\n", + " 2.0171, 3.0968, 4.3707, -1.0172, -0.8052, -1.9930, -1.5603, -2.5846,\n", + " -1.9358, -0.7990, -0.2551, -0.5673, -0.5188, -0.0305, -0.1674, -0.1646,\n", + " -0.1272, -0.1016, 0.6806, 0.1541, -0.6412, -1.5103, -1.5461, -1.4040,\n", + " -1.8847, -3.0155, -1.1324, -1.4372, -0.1544, -0.0172, 0.2144, 6.8287,\n", + " 6.3634, 4.9486, 3.5596]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0008611598750576377\n", + "Grad encoder.fc1.bias: 0.0005357528571039438\n", + "Grad encoder.encoder.0.weight: 0.00012063531903550029\n", + "Grad encoder.encoder.0.bias: 0.0007177001098170877\n", + "Grad encoder.encoder.2.weight: 8.199084550142288e-05\n", + "Grad encoder.encoder.2.bias: 0.00108436425216496\n", + "Grad encoder.encoder.4.weight: 0.0002573663368821144\n", + "Grad encoder.encoder.4.bias: 0.0032155592925846577\n", + "Grad decoder.fc1.0.weight: 0.00010302040027454495\n", + "Grad decoder.fc1.0.bias: 0.0007930356077849865\n", + "Grad decoder.fc1.2.weight: 6.920975283719599e-05\n", + "Grad decoder.fc1.2.bias: 0.0019551129080355167\n", + "Grad decoder.fc1.4.weight: 8.849468576954678e-05\n", + "Grad decoder.fc1.4.bias: 0.0011725013609975576\n", + "Grad decoder.fc2.weight: 0.00020871554443147033\n", + "Grad decoder.fc2.bias: 0.0022148974239826202\n", + "Grad _memory_unit.weight_ih_l0: 3.844205639325082e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00011258694576099515\n", + "Grad _memory_unit.bias_hh_l0: 7.738949352642521e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.0742138076457195e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002673956914804876\n", + "Grad _memory_unit.bias_hh_l1: 0.00014110602205619216\n", + "Data X Sample: tensor([[1.3844, 1.5075, 1.7175, 1.9723, 2.0114, 2.0051, 2.0506, 2.1323, 3.5736,\n", + " 4.1515, 4.1430, 3.9982, 3.9237, 3.9016, 3.7400, 3.6144, 3.5551, 3.5805,\n", + " 3.5828, 3.3847, 3.3418, 3.2302, 2.7182, 2.8306, 2.7289, 2.7503, 2.9490,\n", + " 2.9570, 3.0112, 3.2064, 3.1111, 3.3353, 3.6345, 2.6707, 4.3606, 4.8207,\n", + " 5.0067, 5.2581, 5.8377, 5.7367, 1.0834, 0.5954, 0.6164, 1.1137, 1.6967,\n", + " 1.8641, 1.2238, 1.9392]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3369, 0.2308, 0.3013, 0.6656, 0.0106, 0.7635, -0.0429, -0.1176,\n", + " 0.0232, -0.4997, -0.1568, -1.0941, -0.5436, -1.6339, 1.4592, -0.7932,\n", + " 0.0804, 0.2443, 0.3684, 0.0508, 0.3431, 0.3863, 0.4916, 0.1759,\n", + " -0.4166, -1.0302, -2.3550, -3.0378, -2.7442, -2.6176, -1.0477, -0.6259,\n", + " -0.5125, -1.6727, -1.2408, -1.2949, -0.0538, 0.0849, -0.0482, -1.1519,\n", + " 0.5023, 0.2592, 0.3000]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2224, -0.2631, -0.0928, -0.1749, 0.0025, 0.1165, 0.1384, 0.2524,\n", + " 0.1852, 0.2264, 0.1699, -0.1470, -0.1469, -0.2332, -0.1623, -0.2589,\n", + " -0.2164, -0.0911, -0.0436, -0.1205, -0.1029, -0.0546, -0.0562, -0.0690,\n", + " -0.0133, -0.0173, -0.0317, -0.0909, -0.1816, -0.2158, -0.1940, -0.1658,\n", + " -0.2404, -0.2542, -0.1680, -0.1292, -0.0342, 0.0166, 0.0583, 0.2472,\n", + " 0.3010, 0.2995, 0.2550]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00015757324581500143\n", + "Grad encoder.fc1.bias: 0.000196466498891823\n", + "Grad encoder.encoder.0.weight: 3.165523230563849e-05\n", + "Grad encoder.encoder.0.bias: 0.00020286176004447043\n", + "Grad encoder.encoder.2.weight: 2.0793953808606602e-05\n", + "Grad encoder.encoder.2.bias: 0.0002018064260482788\n", + "Grad encoder.encoder.4.weight: 6.257033965084702e-05\n", + "Grad encoder.encoder.4.bias: 0.0004897065227851272\n", + "Grad decoder.fc1.0.weight: 2.549623604863882e-05\n", + "Grad decoder.fc1.0.bias: 0.0001977309148060158\n", + "Grad decoder.fc1.2.weight: 2.940489684988279e-05\n", + "Grad decoder.fc1.2.bias: 0.00016990359290502965\n", + "Grad decoder.fc1.4.weight: 4.077246558154002e-05\n", + "Grad decoder.fc1.4.bias: 0.0002895464713219553\n", + "Grad decoder.fc2.weight: 8.369260467588902e-05\n", + "Grad decoder.fc2.bias: 0.001863135490566492\n", + "Grad _memory_unit.weight_ih_l0: 2.9082875698804855e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.579671516083181e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.13106817076914e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.3945561931905104e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.1108025470748544e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.0179511921014637e-05\n", + "Data X Sample: tensor([[1.6602, 1.8294, 1.9895, 2.1406, 2.3050, 2.4412, 2.5883, 2.5766, 2.6168,\n", + " 2.7613, 2.6362, 2.6544, 2.6032, 2.5274, 2.4740, 2.4493, 2.4718, 2.4895,\n", + " 2.4698, 2.4213, 2.4168, 2.4372, 2.3857, 2.3725, 2.4812, 2.4996, 2.5308,\n", + " 2.5695, 2.4145, 2.4105, 2.3307, 2.3433, 2.1098, 1.3685, 1.8947, 1.7342,\n", + " 1.6912, 1.5822, 1.6163, 1.5292, 1.3172, 0.7587, 0.7134, 1.2572, 1.9226,\n", + " 2.1272, 1.4550, 1.9704]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5079, 0.2676, -0.6047, 0.7414, -0.3606, 0.0026, 0.6563, -0.1199,\n", + " -0.2128, -0.1250, 0.0284, -0.4615, 0.8639, -0.5181, -0.9856, 0.6646,\n", + " 0.8090, 1.1405, -0.6911, 1.0741, -0.0029, 0.7233, -1.0723, 0.0182,\n", + " 0.5771, 0.4949, 0.5815, -0.5041, -0.0953, 0.5028, 1.0875, 0.4188,\n", + " 0.8495, -2.2976, -0.0065, -1.1651, -0.5754, 0.5417, -0.3730, -1.1089,\n", + " 0.3896, 1.0749, 1.1548]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2852, 0.2659, 0.1084, 0.1939, 0.0801, -0.1165, -0.3107, -0.2757,\n", + " -0.1507, -0.1896, -0.2158, 0.1529, 0.1520, 0.2112, 0.1752, 0.1923,\n", + " 0.1926, 0.0769, 0.0320, 0.0880, 0.0084, 0.0155, 0.0331, 0.0135,\n", + " 0.0590, 0.0038, -0.0355, 0.0521, 0.1622, 0.1720, 0.2225, 0.1630,\n", + " 0.2242, 0.1882, 0.1483, 0.1242, -0.0004, -0.0273, 0.0045, -0.2153,\n", + " -0.1430, -0.1700, -0.1929]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 5.1807943236781284e-05\n", + "Grad encoder.fc1.bias: 0.000222800750634633\n", + "Grad encoder.encoder.0.weight: 1.521356352895964e-05\n", + "Grad encoder.encoder.0.bias: 0.00018732582975644618\n", + "Grad encoder.encoder.2.weight: 1.4451914466917515e-05\n", + "Grad encoder.encoder.2.bias: 0.0001983153633773327\n", + "Grad encoder.encoder.4.weight: 3.843519516522065e-05\n", + "Grad encoder.encoder.4.bias: 0.0004073206800967455\n", + "Grad decoder.fc1.0.weight: 1.6170359231182374e-05\n", + "Grad decoder.fc1.0.bias: 0.00011056954099331051\n", + "Grad decoder.fc1.2.weight: 2.4693787054275163e-05\n", + "Grad decoder.fc1.2.bias: 0.0001625518489163369\n", + "Grad decoder.fc1.4.weight: 3.3671669370960444e-05\n", + "Grad decoder.fc1.4.bias: 0.00031719112303107977\n", + "Grad decoder.fc2.weight: 9.015048999572173e-05\n", + "Grad decoder.fc2.bias: 0.0018543254118412733\n", + "Grad _memory_unit.weight_ih_l0: 3.3797073228925e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.1727515559177846e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.1455616004241165e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.0741614460130222e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.4471428332617506e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.2583840543811675e-05\n", + "Data X Sample: tensor([[1.6220, 1.8337, 2.0766, 2.2062, 2.3546, 2.4721, 2.5344, 2.6064, 2.7266,\n", + " 2.6555, 2.7758, 2.7693, 2.6786, 2.5329, 2.5345, 2.4985, 2.5111, 2.5708,\n", + " 2.5503, 2.4976, 2.4781, 2.4357, 2.5351, 2.4813, 2.5149, 2.5936, 2.5760,\n", + " 2.6225, 2.3521, 2.3286, 2.4147, 2.3488, 2.0680, 1.2999, 1.8065, 1.7196,\n", + " 1.6361, 1.6140, 1.6480, 1.4838, 1.3268, 0.7926, 0.7579, 1.3462, 1.9266,\n", + " 2.1443, 1.5094, 2.1034]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6901, 0.4260, 0.2078, 0.1824, -0.5986, -0.9788, -2.0828, -0.9582,\n", + " -0.7048, -1.0387, -0.8419, 0.8387, 0.7402, -0.5323, 0.3109, 0.1901,\n", + " 0.3286, 0.1547, -0.1292, 0.7886, 0.9003, -0.2972, 0.4481, 0.6305,\n", + " 0.0095, 0.0627, 0.1096, 0.1417, 1.0470, 0.3719, 0.4329, 0.6861,\n", + " 0.2274, -0.0604, -1.3273, 0.5229, -0.4714, 0.4444, -0.7577, -0.8182,\n", + " -0.3158, 1.0551, 0.1149]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2499, 0.2355, 0.1020, 0.1581, 0.0667, -0.1094, -0.2833, -0.2365,\n", + " -0.1284, -0.1599, -0.1893, 0.1345, 0.1305, 0.1863, 0.1525, 0.1603,\n", + " 0.1680, 0.0610, 0.0231, 0.0794, 0.0094, 0.0076, 0.0198, 0.0056,\n", + " 0.0561, 0.0133, -0.0291, 0.0471, 0.1405, 0.1398, 0.1978, 0.1451,\n", + " 0.1939, 0.1597, 0.1291, 0.1044, -0.0003, -0.0235, 0.0029, -0.1849,\n", + " -0.1071, -0.1421, -0.1642]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00028643058612942696\n", + "Grad encoder.fc1.bias: 0.00045386861893348396\n", + "Grad encoder.encoder.0.weight: 4.595134305418469e-05\n", + "Grad encoder.encoder.0.bias: 0.000395907205529511\n", + "Grad encoder.encoder.2.weight: 4.121838719584048e-05\n", + "Grad encoder.encoder.2.bias: 0.0005386185366660357\n", + "Grad encoder.encoder.4.weight: 0.00012997606245335191\n", + "Grad encoder.encoder.4.bias: 0.0007437329040840268\n", + "Grad decoder.fc1.0.weight: 5.1716026064241305e-05\n", + "Grad decoder.fc1.0.bias: 0.00034545702510513365\n", + "Grad decoder.fc1.2.weight: 4.61726012872532e-05\n", + "Grad decoder.fc1.2.bias: 0.0005162438028492033\n", + "Grad decoder.fc1.4.weight: 5.2432740631047636e-05\n", + "Grad decoder.fc1.4.bias: 0.0005266944644972682\n", + "Grad decoder.fc2.weight: 0.0001203680076287128\n", + "Grad decoder.fc2.bias: 0.0018975578714162111\n", + "Grad _memory_unit.weight_ih_l0: 1.3336263691599015e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.6415858630789444e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.4672135623404756e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.672030056302901e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010075806494569406\n", + "Grad _memory_unit.bias_hh_l1: 5.156540282769129e-05\n", + "Data X Sample: tensor([[1.3897, 1.4784, 1.7325, 1.8520, 1.8577, 2.0582, 2.1230, 2.2274, 3.7567,\n", + " 4.2210, 4.1145, 4.0138, 4.1234, 3.8443, 3.7955, 3.3984, 3.4561, 3.5554,\n", + " 3.4052, 3.3047, 3.3050, 3.3328, 2.7954, 2.8172, 2.8058, 2.8783, 2.8691,\n", + " 2.8468, 2.9488, 3.2227, 3.2161, 3.2497, 3.5311, 2.5929, 4.3042, 4.7283,\n", + " 4.8867, 5.1256, 5.8123, 5.5806, 1.0595, 0.6154, 0.6063, 1.1482, 1.6729,\n", + " 1.8984, 1.1830, 1.5951]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.7920, -0.2647, -0.4414, -0.2970, -0.0862, 0.6115, 0.9313, 0.8586,\n", + " 0.8492, 0.6206, 0.5206, 0.4517, -1.1366, -0.9947, 0.1180, -0.0581,\n", + " 0.5158, -0.9819, 0.6884, -0.7292, -0.3036, -0.2264, -3.4005, -1.1681,\n", + " -0.7100, -1.0196, 0.8152, -0.6478, -0.1826, -0.2957, -0.7451, -0.1695,\n", + " -0.8202, -0.1652, -0.9747, -0.2274, 0.4852, -0.8483, -0.2505, 0.7168,\n", + " 0.5594, 0.7838, 0.9006]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2240, -0.2678, -0.0857, -0.1576, 0.0370, 0.1371, 0.1540, 0.2590,\n", + " 0.2142, 0.2475, 0.1822, -0.1525, -0.1576, -0.2486, -0.1704, -0.2764,\n", + " -0.2252, -0.0917, -0.0412, -0.1227, -0.0985, -0.0526, -0.0647, -0.0762,\n", + " -0.0119, -0.0256, -0.0461, -0.1112, -0.2140, -0.2490, -0.2079, -0.1766,\n", + " -0.2752, -0.2689, -0.1893, -0.1326, -0.0359, 0.0244, 0.0613, 0.2499,\n", + " 0.3105, 0.3175, 0.2695]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004334051627665758\n", + "Grad encoder.fc1.bias: 0.0006831346545368433\n", + "Grad encoder.encoder.0.weight: 6.068874063203111e-05\n", + "Grad encoder.encoder.0.bias: 0.0006871204823255539\n", + "Grad encoder.encoder.2.weight: 6.362161366268992e-05\n", + "Grad encoder.encoder.2.bias: 0.0009883963502943516\n", + "Grad encoder.encoder.4.weight: 0.00020246379426680505\n", + "Grad encoder.encoder.4.bias: 0.0016999411163851619\n", + "Grad decoder.fc1.0.weight: 7.138172077247873e-05\n", + "Grad decoder.fc1.0.bias: 0.00045241863699629903\n", + "Grad decoder.fc1.2.weight: 5.789261922473088e-05\n", + "Grad decoder.fc1.2.bias: 0.00074886524816975\n", + "Grad decoder.fc1.4.weight: 5.0570713938213885e-05\n", + "Grad decoder.fc1.4.bias: 0.0004985809209756553\n", + "Grad decoder.fc2.weight: 0.00014000825467519462\n", + "Grad decoder.fc2.bias: 0.0017305448418483138\n", + "Grad _memory_unit.weight_ih_l0: 2.0901739844703116e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.113184331799857e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.446274058660492e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.785060344962403e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00012102012260584161\n", + "Grad _memory_unit.bias_hh_l1: 6.280790694290772e-05\n", + "Data X Sample: tensor([[1.5181, 1.7172, 1.8978, 1.9154, 1.8679, 2.1259, 2.1847, 2.0173, 3.3002,\n", + " 4.2194, 4.3524, 4.2358, 3.8771, 4.0570, 3.8862, 3.6322, 3.6228, 3.6153,\n", + " 3.5105, 3.5353, 3.5405, 3.3450, 2.8869, 2.8077, 2.8715, 2.9462, 2.9730,\n", + " 3.1731, 3.1569, 3.2686, 3.3700, 3.3657, 3.8369, 2.8103, 4.6621, 4.8547,\n", + " 5.0204, 5.4383, 5.9201, 5.7509, 1.1884, 0.6651, 0.7033, 1.2056, 1.7680,\n", + " 1.8527, 1.1830, 1.7124]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5271, 0.8542, 0.6403, -0.2661, 0.5820, 0.1801, -0.1470, 0.0806,\n", + " -0.0305, 0.5744, 0.4223, -1.0088, -0.5428, 0.3886, -0.6127, -0.9780,\n", + " -0.7768, 0.3048, 0.3559, -2.8742, 0.2670, -0.7903, 0.2576, -0.5021,\n", + " 0.8458, -1.0504, 1.1350, -0.4185, 0.2512, 0.1706, -0.1444, -0.0799,\n", + " -0.1747, 0.4644, -0.7963, 0.7526, -0.3357, -0.3175, -0.2890, 0.1966,\n", + " 0.3575, 0.7086, 0.3137]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2250, -0.2711, -0.0824, -0.1431, 0.0613, 0.1545, 0.1655, 0.2636,\n", + " 0.2359, 0.2632, 0.1894, -0.1565, -0.1672, -0.2608, -0.1761, -0.2904,\n", + " -0.2308, -0.0919, -0.0355, -0.1237, -0.0973, -0.0529, -0.0709, -0.0821,\n", + " -0.0133, -0.0307, -0.0581, -0.1286, -0.2377, -0.2740, -0.2205, -0.1861,\n", + " -0.2993, -0.2790, -0.2064, -0.1337, -0.0373, 0.0293, 0.0636, 0.2503,\n", + " 0.3168, 0.3277, 0.2793]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000214609011891298\n", + "Grad encoder.fc1.bias: 0.00028969853883609176\n", + "Grad encoder.encoder.0.weight: 4.820909089175984e-05\n", + "Grad encoder.encoder.0.bias: 0.0003212299197912216\n", + "Grad encoder.encoder.2.weight: 3.567321255104616e-05\n", + "Grad encoder.encoder.2.bias: 0.0003984006179962307\n", + "Grad encoder.encoder.4.weight: 0.00010295331594534218\n", + "Grad encoder.encoder.4.bias: 0.0009731811005622149\n", + "Grad decoder.fc1.0.weight: 3.728253795998171e-05\n", + "Grad decoder.fc1.0.bias: 0.00031380547443404794\n", + "Grad decoder.fc1.2.weight: 4.1196348320227116e-05\n", + "Grad decoder.fc1.2.bias: 0.0002999224525410682\n", + "Grad decoder.fc1.4.weight: 4.826832810067572e-05\n", + "Grad decoder.fc1.4.bias: 0.0005215350538492203\n", + "Grad decoder.fc2.weight: 0.00011595356045290828\n", + "Grad decoder.fc2.bias: 0.0019033887656405568\n", + "Grad _memory_unit.weight_ih_l0: 5.979076377116144e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.3847510823979974e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.221641261712648e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.18727200262947e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.2878942117095e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.0871087801642716e-05\n", + "Data X Sample: tensor([[1.4056, 1.8760, 2.0947, 2.2915, 2.2760, 2.4058, 2.4173, 2.4048, 2.4703,\n", + " 2.4960, 2.4903, 2.5824, 2.5078, 2.4211, 2.4614, 2.5313, 2.4277, 2.4238,\n", + " 2.5296, 2.4976, 2.5517, 2.5643, 2.5712, 2.5538, 2.4755, 2.4604, 2.3363,\n", + " 2.3982, 1.8734, 1.9454, 1.8127, 1.8044, 1.5004, 0.9429, 1.3163, 1.3742,\n", + " 1.3844, 1.4338, 1.4325, 1.4441, 1.4031, 0.8264, 0.7740, 1.3606, 1.8473,\n", + " 2.2644, 1.4550, 2.1972]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2498, 0.1289, 0.7135, 0.3355, 0.2471, -0.1736, 0.2802, 0.1392,\n", + " -1.5648, 0.0171, -0.2493, 0.1198, 0.2837, 0.2333, -0.5188, 0.0138,\n", + " -1.9615, -1.2759, 0.2536, 0.0853, 0.5690, -0.2990, 0.7353, -0.1144,\n", + " -2.9476, 0.7026, 0.1300, -1.3450, 0.3216, 0.1204, -0.0780, -0.7303,\n", + " 0.5163, 0.2585, -0.4929, 0.4885, 0.0000, -0.3178, -0.0104, -0.1511,\n", + " -0.0062, -0.3437, -0.6446]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.0988, -0.0970, -0.0284, -0.1245, -0.0704, -0.0547, -0.0989, 0.0602,\n", + " 0.0445, 0.0612, 0.0850, 0.0077, -0.0766, -0.0782, -0.0276, -0.1223,\n", + " -0.0630, -0.0842, -0.0149, -0.0317, -0.0803, -0.0385, -0.0152, -0.0486,\n", + " 0.0438, -0.0486, 0.0602, -0.0036, -0.0219, -0.0494, -0.0113, -0.0206,\n", + " -0.0610, -0.0657, -0.0398, -0.0860, -0.0278, 0.0167, 0.0377, 0.1573,\n", + " 0.2028, 0.1368, 0.1388]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00012802748824469745\n", + "Grad encoder.fc1.bias: 0.00011140772403450683\n", + "Grad encoder.encoder.0.weight: 2.0763694919878617e-05\n", + "Grad encoder.encoder.0.bias: 0.0001003227080218494\n", + "Grad encoder.encoder.2.weight: 1.7209733414347284e-05\n", + "Grad encoder.encoder.2.bias: 0.00015872390940785408\n", + "Grad encoder.encoder.4.weight: 6.28435518592596e-05\n", + "Grad encoder.encoder.4.bias: 0.000619887956418097\n", + "Grad decoder.fc1.0.weight: 3.064162592636421e-05\n", + "Grad decoder.fc1.0.bias: 0.00024579904857091606\n", + "Grad decoder.fc1.2.weight: 3.939524322049692e-05\n", + "Grad decoder.fc1.2.bias: 0.0003174972953274846\n", + "Grad decoder.fc1.4.weight: 4.321250889915973e-05\n", + "Grad decoder.fc1.4.bias: 0.00036591614480130374\n", + "Grad decoder.fc2.weight: 7.240776903927326e-05\n", + "Grad decoder.fc2.bias: 0.00263466639444232\n", + "Grad _memory_unit.weight_ih_l0: 3.622707026806893e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.034248973359354e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.1413290849304758e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.8293321772944182e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.7650999224279076e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.8564390959218144e-05\n", + "Data X Sample: tensor([[1.5562, 1.8075, 1.9399, 1.9307, 2.0814, 2.2349, 2.3588, 2.4716, 2.5289,\n", + " 2.5718, 2.6362, 2.6428, 2.5233, 2.4266, 2.4664, 2.4794, 2.4419, 2.4257,\n", + " 2.4099, 2.4344, 2.3824, 2.4326, 2.4098, 2.3878, 2.3873, 2.4709, 2.3656,\n", + " 2.3941, 2.0919, 2.2959, 2.3797, 2.2632, 2.2726, 1.4738, 1.9560, 1.7755,\n", + " 1.6538, 1.5265, 1.6226, 1.6058, 1.2361, 0.7348, 0.7397, 1.1998, 1.8275,\n", + " 1.9099, 1.2510, 1.9235]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2066, -0.3272, 0.6284, -0.0102, 0.2177, 1.2287, -0.3748, -0.4192,\n", + " 0.1159, -0.4752, -0.0728, -0.1241, 0.3438, 0.2667, 1.9375, 0.1712,\n", + " -0.4645, -0.4763, 0.2718, -0.9175, -0.5854, -0.1946, -0.5190, -0.1659,\n", + " -0.8777, 0.3646, -0.0259, 0.3059, -0.9390, 0.2913, 0.0236, 0.3289,\n", + " 0.0826, 0.7961, 1.1223, 0.3395, 0.5692, 0.9093, -2.3004, -0.1728,\n", + " -0.2821, -0.2224, 0.3924]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2663, 0.2656, 0.1296, 0.1903, 0.0800, -0.1184, -0.3040, -0.2562,\n", + " -0.1334, -0.1592, -0.1819, 0.1467, 0.1445, 0.2009, 0.1585, 0.1710,\n", + " 0.2045, 0.0691, 0.0173, 0.1083, 0.0291, 0.0101, 0.0142, 0.0147,\n", + " 0.0686, 0.0360, -0.0254, 0.0487, 0.1445, 0.1383, 0.2130, 0.1614,\n", + " 0.2054, 0.1746, 0.1463, 0.1078, 0.0100, -0.0203, -0.0154, -0.1984,\n", + " -0.1127, -0.1546, -0.1909]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007630572072230279\n", + "Grad encoder.fc1.bias: 0.000572732649743557\n", + "Grad encoder.encoder.0.weight: 0.00011396135232644156\n", + "Grad encoder.encoder.0.bias: 0.0005900278338231146\n", + "Grad encoder.encoder.2.weight: 0.00010803298209793866\n", + "Grad encoder.encoder.2.bias: 0.0010975846089422703\n", + "Grad encoder.encoder.4.weight: 0.00030111693195067346\n", + "Grad encoder.encoder.4.bias: 0.0023864503018558025\n", + "Grad decoder.fc1.0.weight: 0.00011005462147295475\n", + "Grad decoder.fc1.0.bias: 0.0006435654358938336\n", + "Grad decoder.fc1.2.weight: 8.142272417899221e-05\n", + "Grad decoder.fc1.2.bias: 0.0011006301501765847\n", + "Grad decoder.fc1.4.weight: 7.796841964591295e-05\n", + "Grad decoder.fc1.4.bias: 0.000784430536441505\n", + "Grad decoder.fc2.weight: 0.00015494808030780405\n", + "Grad decoder.fc2.bias: 0.0024061198346316814\n", + "Grad _memory_unit.weight_ih_l0: 2.63598958554212e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.8533649280434474e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.497900954447687e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.2089984920748975e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00018679245840758085\n", + "Grad _memory_unit.bias_hh_l1: 9.606888488633558e-05\n", + "Data X Sample: tensor([[2.1005, 2.4790, 2.6822, 2.9037, 2.8566, 2.8051, 3.0320, 3.2012, 3.1245,\n", + " 3.2289, 3.2580, 3.2582, 3.2068, 3.2418, 3.1978, 3.0346, 3.0300, 2.9673,\n", + " 2.9778, 2.9607, 2.8241, 2.7541, 2.5978, 2.5805, 2.4661, 2.4134, 2.2724,\n", + " 2.4023, 2.0191, 2.0044, 1.9842, 2.0449, 1.8700, 1.2633, 2.0492, 2.3690,\n", + " 2.5918, 2.7245, 3.0234, 2.9535, 1.6656, 0.9937, 0.9802, 1.7452, 2.5371,\n", + " 2.7791, 1.8833, 2.5647]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0760, 0.5294, -0.4284, -0.3545, -1.1771, -2.2793, -3.7577, -2.0087,\n", + " -1.3072, -1.0491, -1.0127, 1.9026, 0.5017, 0.7872, 0.5331, -0.3258,\n", + " -0.4245, 0.2052, -0.1833, -0.6477, 0.0421, -0.4571, -0.9344, -2.1386,\n", + " 1.2113, 0.9087, 0.4782, 1.5279, 2.2256, 2.6000, 1.8253, 0.8378,\n", + " -0.0711, 0.5677, -0.1275, 0.1690, -0.8371, 0.6537, -0.5181, 0.6260,\n", + " 0.3957, 1.3197, 0.2485]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2347, -0.2666, -0.1028, -0.2263, -0.0704, 0.0599, 0.1030, 0.2365,\n", + " 0.1317, 0.2004, 0.1774, -0.1234, -0.1397, -0.2138, -0.1528, -0.2394,\n", + " -0.2078, -0.1054, -0.0713, -0.1194, -0.1026, -0.0614, -0.0582, -0.0541,\n", + " -0.0016, -0.0288, 0.0355, -0.0305, -0.1242, -0.1673, -0.1523, -0.1388,\n", + " -0.1908, -0.2356, -0.1264, -0.1356, -0.0291, 0.0073, 0.0374, 0.2824,\n", + " 0.3083, 0.2912, 0.2444]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000433781067840755\n", + "Grad encoder.fc1.bias: 0.0011584821622818708\n", + "Grad encoder.encoder.0.weight: 0.00010337356070522219\n", + "Grad encoder.encoder.0.bias: 0.0009207713883370161\n", + "Grad encoder.encoder.2.weight: 6.242157542146742e-05\n", + "Grad encoder.encoder.2.bias: 0.0007319054566323757\n", + "Grad encoder.encoder.4.weight: 0.00017277401639148593\n", + "Grad encoder.encoder.4.bias: 0.0012353776255622506\n", + "Grad decoder.fc1.0.weight: 5.3228188335197046e-05\n", + "Grad decoder.fc1.0.bias: 0.0003913109831046313\n", + "Grad decoder.fc1.2.weight: 5.7329842093167827e-05\n", + "Grad decoder.fc1.2.bias: 0.00041158002568408847\n", + "Grad decoder.fc1.4.weight: 6.262462557060644e-05\n", + "Grad decoder.fc1.4.bias: 0.0006868934724479914\n", + "Grad decoder.fc2.weight: 0.0001175698998849839\n", + "Grad decoder.fc2.bias: 0.00226941192522645\n", + "Grad _memory_unit.weight_ih_l0: 9.712231076264288e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.62631685170345e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.825895353453234e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.3513218820880866e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.298441778402776e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.6122608435107395e-05\n", + "Data X Sample: tensor([[2.4887, 3.0062, 3.3133, 3.2208, 3.5703, 3.5800, 3.5913, 3.8599, 3.8397,\n", + " 3.9777, 3.8766, 3.7840, 3.7972, 3.7543, 3.5786, 3.3915, 3.3617, 3.5728,\n", + " 3.5002, 3.3159, 3.3074, 3.1476, 2.9255, 2.8497, 2.7233, 2.7634, 2.6799,\n", + " 2.7694, 2.7615, 2.8101, 2.8241, 2.7744, 2.9019, 2.1832, 3.5958, 3.9694,\n", + " 4.1237, 4.5266, 5.0834, 5.0728, 1.8422, 1.0714, 1.1863, 1.9777, 2.8423,\n", + " 2.8877, 2.0941, 3.0573]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0437, -0.5466, -0.2649, -0.0238, -0.7097, 0.1965, 0.2006, 0.0394,\n", + " -0.1147, 0.2079, 0.2686, 0.2778, 0.2449, -1.4103, -0.1756, -0.9376,\n", + " -2.1666, -0.9935, 0.6341, -0.7868, -0.4632, 1.3427, -0.9152, 0.1423,\n", + " -0.2776, -0.8934, -0.1224, 0.0408, -0.2892, 0.2281, 0.7561, 0.3020,\n", + " 0.1589, -0.6713, -1.1114, -0.8527, 0.6665, 0.0000, -0.4066, 0.3140,\n", + " 0.4605, 0.0506, 0.4227]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1943, -0.2362, -0.0810, -0.1689, -0.0048, 0.0936, 0.1158, 0.2202,\n", + " 0.1598, 0.2035, 0.1540, -0.1218, -0.1313, -0.2058, -0.1507, -0.2387,\n", + " -0.2044, -0.0837, -0.0455, -0.1136, -0.0852, -0.0534, -0.0662, -0.0638,\n", + " -0.0126, -0.0172, -0.0058, -0.0635, -0.1558, -0.1967, -0.1563, -0.1378,\n", + " -0.2200, -0.2276, -0.1528, -0.1142, -0.0273, 0.0189, 0.0365, 0.2264,\n", + " 0.2840, 0.2754, 0.2268]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 8.512203930877149e-05\n", + "Grad encoder.fc1.bias: 0.000551335047930479\n", + "Grad encoder.encoder.0.weight: 1.5215111488942057e-05\n", + "Grad encoder.encoder.0.bias: 0.00036562696914188564\n", + "Grad encoder.encoder.2.weight: 1.0681806088541634e-05\n", + "Grad encoder.encoder.2.bias: 0.00033052393700927496\n", + "Grad encoder.encoder.4.weight: 3.931921673938632e-05\n", + "Grad encoder.encoder.4.bias: 0.0005444817943498492\n", + "Grad decoder.fc1.0.weight: 2.404714177828282e-05\n", + "Grad decoder.fc1.0.bias: 0.0002029897295869887\n", + "Grad decoder.fc1.2.weight: 3.330420804559253e-05\n", + "Grad decoder.fc1.2.bias: 0.0003177402541041374\n", + "Grad decoder.fc1.4.weight: 3.1835093977861106e-05\n", + "Grad decoder.fc1.4.bias: 0.0002577056875452399\n", + "Grad decoder.fc2.weight: 0.00010756088886409998\n", + "Grad decoder.fc2.bias: 0.0016523617086932063\n", + "Grad _memory_unit.weight_ih_l0: 4.334892309998395e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.440201205899939e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.272175541089382e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.4273699662226136e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.221526276320219e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.6097896150313318e-05\n", + "Data X Sample: tensor([[1.4693, 1.8148, 2.2284, 2.3287, 2.5048, 2.4368, 2.5852, 2.6930, 2.7583,\n", + " 2.7013, 2.8424, 2.8200, 2.6676, 2.6910, 2.6732, 2.6490, 2.6557, 2.7081,\n", + " 2.7527, 2.8175, 2.7554, 2.8000, 2.8291, 2.6760, 2.4774, 2.4029, 2.2404,\n", + " 2.2758, 1.9219, 1.9160, 1.8057, 1.6746, 1.4630, 0.9589, 1.3383, 1.3596,\n", + " 1.3982, 1.5371, 1.7114, 1.7335, 1.3125, 0.7627, 0.8407, 1.3491, 2.1763,\n", + " 2.3216, 1.5298, 2.0877]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1190, -0.3919, -0.2243, -0.2716, 0.5404, 0.0524, 0.0443, -0.1136,\n", + " -0.8510, -0.1581, -0.3124, -0.3316, 0.0044, -0.0814, 0.1619, -0.2186,\n", + " -1.0473, 0.0018, 0.4786, 0.0617, -1.3875, -0.5410, -0.4073, -0.3005,\n", + " 0.1070, 0.1842, -0.2886, -0.2237, -0.7801, -0.6598, -0.3658, 1.4807,\n", + " 0.3133, 0.2309, -0.2614, 0.0084, -0.8958, 0.7579, 0.0000, -0.2211,\n", + " -0.3380, -0.0835, 0.3983]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2865, -0.2999, -0.1078, -0.2602, -0.1414, -0.0112, 0.0154, 0.2156,\n", + " 0.1458, 0.1999, 0.2339, -0.0672, -0.1480, -0.2163, -0.1270, -0.2598,\n", + " -0.2038, -0.1578, -0.0530, -0.1144, -0.1409, -0.0593, -0.0256, -0.0749,\n", + " 0.0361, -0.1085, 0.1129, -0.0125, -0.0937, -0.1699, -0.1418, -0.1118,\n", + " -0.1938, -0.1933, -0.1280, -0.1830, -0.0279, 0.0406, 0.0219, 0.3784,\n", + " 0.3746, 0.2928, 0.2738]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007167838048189878\n", + "Grad encoder.fc1.bias: 0.0003775112854782492\n", + "Grad encoder.encoder.0.weight: 0.00010524585377424955\n", + "Grad encoder.encoder.0.bias: 0.0004043309309054166\n", + "Grad encoder.encoder.2.weight: 7.571891183033586e-05\n", + "Grad encoder.encoder.2.bias: 0.000508418888784945\n", + "Grad encoder.encoder.4.weight: 0.0002188635990023613\n", + "Grad encoder.encoder.4.bias: 0.00138374965172261\n", + "Grad decoder.fc1.0.weight: 6.126298103481531e-05\n", + "Grad decoder.fc1.0.bias: 0.00032349518733099103\n", + "Grad decoder.fc1.2.weight: 5.9300477005308494e-05\n", + "Grad decoder.fc1.2.bias: 0.0007533319294452667\n", + "Grad decoder.fc1.4.weight: 3.701918467413634e-05\n", + "Grad decoder.fc1.4.bias: 0.0006246374687179923\n", + "Grad decoder.fc2.weight: 8.9543558715377e-05\n", + "Grad decoder.fc2.bias: 0.0021422123536467552\n", + "Grad _memory_unit.weight_ih_l0: 1.0387787369836587e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.576804399723187e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.7740987459546886e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.034861831314629e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00012065345072187483\n", + "Grad _memory_unit.bias_hh_l1: 5.975074600428343e-05\n", + "Data X Sample: tensor([[1.5011, 1.7653, 1.9729, 2.0969, 2.2265, 2.3189, 2.2709, 2.4843, 2.4703,\n", + " 2.6034, 2.5537, 2.5843, 2.4101, 2.3857, 2.4059, 2.3987, 2.3554, 2.4354,\n", + " 2.5007, 2.4269, 2.5149, 2.5918, 2.6002, 2.5366, 2.5938, 2.6328, 2.6133,\n", + " 2.5981, 2.3903, 2.5022, 2.2607, 2.3018, 2.2638, 1.4624, 1.9168, 1.8242,\n", + " 1.6872, 1.5053, 1.5212, 1.5831, 1.2838, 0.7348, 0.7781, 1.3462, 1.8790,\n", + " 2.1272, 1.3326, 1.9470]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 6.6249e-01, -8.7853e-02, -4.4641e-01, 8.6446e-01, 1.2221e+00,\n", + " -1.0467e+00, 1.0783e-01, -2.4441e-01, 3.9722e-01, 3.2233e-01,\n", + " 5.3808e-01, -9.0758e-01, -9.2251e-01, -6.2854e-04, 1.2202e+00,\n", + " 4.9810e-01, -2.2518e-01, 1.8236e+00, 1.8000e+00, 2.0212e+00,\n", + " 1.2794e+00, 4.0622e-01, 1.0192e+00, 1.5331e+00, 5.6022e-01,\n", + " 7.7227e-01, 1.4327e-01, 5.9703e-01, -1.2215e+00, -9.5658e-01,\n", + " 2.9372e-02, 1.0134e+00, -3.5778e-01, -2.3845e-01, 7.3076e-01,\n", + " -3.1887e-01, 6.0965e-01, 7.4276e-01, -9.1288e-01, -9.4365e-01,\n", + " 5.7260e-01, -8.2204e-01, -1.1837e+00]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3563, 0.3501, 0.1739, 0.3087, 0.1246, -0.1342, -0.3755, -0.3586,\n", + " -0.1743, -0.2094, -0.2120, 0.1998, 0.2108, 0.2613, 0.2037, 0.2339,\n", + " 0.2854, 0.1065, 0.0272, 0.1563, 0.0523, 0.0347, 0.0347, 0.0390,\n", + " 0.0820, 0.0529, -0.0402, 0.0621, 0.1804, 0.1987, 0.2676, 0.2275,\n", + " 0.2788, 0.2454, 0.2057, 0.1480, 0.0103, -0.0313, -0.0355, -0.2716,\n", + " -0.1870, -0.2187, -0.2710]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00013383621990215033\n", + "Grad encoder.fc1.bias: 0.0002500997215975076\n", + "Grad encoder.encoder.0.weight: 2.5142817321466282e-05\n", + "Grad encoder.encoder.0.bias: 0.00018872637883760035\n", + "Grad encoder.encoder.2.weight: 1.5294957847800106e-05\n", + "Grad encoder.encoder.2.bias: 0.00017600216961000115\n", + "Grad encoder.encoder.4.weight: 4.85061427752953e-05\n", + "Grad encoder.encoder.4.bias: 0.00036754150642082095\n", + "Grad decoder.fc1.0.weight: 1.7988248146139085e-05\n", + "Grad decoder.fc1.0.bias: 0.0001751484232954681\n", + "Grad decoder.fc1.2.weight: 2.533133010729216e-05\n", + "Grad decoder.fc1.2.bias: 0.00017762664356268942\n", + "Grad decoder.fc1.4.weight: 2.4708264390937984e-05\n", + "Grad decoder.fc1.4.bias: 0.00018615295994095504\n", + "Grad decoder.fc2.weight: 6.094653872423805e-05\n", + "Grad decoder.fc2.bias: 0.0016208195593208075\n", + "Grad _memory_unit.weight_ih_l0: 2.22394555748906e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.522075581306126e-05\n", + "Grad _memory_unit.bias_hh_l0: 7.886704224802088e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.1654256013571285e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.6314420867711306e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.8123193513019942e-05\n", + "Data X Sample: tensor([[1.5775, 1.8134, 1.9609, 2.1122, 2.1975, 2.2953, 2.3449, 2.3126, 2.3067,\n", + " 2.4375, 2.4300, 2.4519, 2.3857, 2.2193, 2.2495, 2.3194, 2.3287, 2.3599,\n", + " 2.4553, 2.5199, 2.5198, 2.5612, 2.5496, 2.4966, 2.5731, 2.6903, 2.5867,\n", + " 2.5613, 2.3348, 2.5644, 2.4462, 2.4925, 2.1054, 1.3708, 1.8678, 1.7001,\n", + " 1.5869, 1.4894, 1.5402, 1.5235, 1.2934, 0.7647, 0.7538, 1.2601, 1.9543,\n", + " 2.1100, 1.4210, 1.9079]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 4.8126e-01, 5.8041e-01, -3.4697e-02, 1.0320e+00, 1.4428e+00,\n", + " 5.5471e-01, -5.0236e-01, -4.0613e-01, -9.6918e-02, -4.4803e-01,\n", + " -4.3574e-01, -8.6875e-01, 1.0474e-01, 4.5179e-01, 7.6298e-01,\n", + " 1.1262e+00, 5.7064e-01, 1.6775e-01, -6.5388e-01, -3.2835e+00,\n", + " -4.0855e-01, -4.8742e+00, -2.4614e+00, -1.7584e+00, 1.1873e-03,\n", + " -2.6032e-01, -6.5505e-01, -2.0952e-01, -8.3681e-01, 3.3083e-01,\n", + " 1.7376e-01, -7.7049e-01, 9.1893e-01, 3.0735e-01, 5.3123e-02,\n", + " -5.8635e-01, 0.0000e+00, 7.9156e-01, 5.2964e-01, -4.5058e-01,\n", + " -5.9987e-01, -6.7982e-01, -7.0169e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3641, 0.3581, 0.1789, 0.3197, 0.1315, -0.1338, -0.3800, -0.3666,\n", + " -0.1757, -0.2128, -0.2106, 0.2051, 0.2155, 0.2637, 0.2040, 0.2360,\n", + " 0.2920, 0.1092, 0.0316, 0.1632, 0.0561, 0.0381, 0.0333, 0.0393,\n", + " 0.0845, 0.0589, -0.0427, 0.0606, 0.1791, 0.2024, 0.2719, 0.2355,\n", + " 0.2841, 0.2526, 0.2107, 0.1514, 0.0087, -0.0337, -0.0394, -0.2788,\n", + " -0.1916, -0.2254, -0.2767]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005571332294493914\n", + "Grad encoder.fc1.bias: 0.00037952218553982675\n", + "Grad encoder.encoder.0.weight: 9.128211968345568e-05\n", + "Grad encoder.encoder.0.bias: 0.00039792637107893825\n", + "Grad encoder.encoder.2.weight: 7.283087325049564e-05\n", + "Grad encoder.encoder.2.bias: 0.0005661434261128306\n", + "Grad encoder.encoder.4.weight: 0.00020398995548021048\n", + "Grad encoder.encoder.4.bias: 0.0015054200775921345\n", + "Grad decoder.fc1.0.weight: 7.504955283366144e-05\n", + "Grad decoder.fc1.0.bias: 0.0004624114080797881\n", + "Grad decoder.fc1.2.weight: 6.517769361380488e-05\n", + "Grad decoder.fc1.2.bias: 0.0008089776965789497\n", + "Grad decoder.fc1.4.weight: 4.956359043717384e-05\n", + "Grad decoder.fc1.4.bias: 0.0006275980267673731\n", + "Grad decoder.fc2.weight: 0.00010952883894788101\n", + "Grad decoder.fc2.bias: 0.0019283890724182129\n", + "Grad _memory_unit.weight_ih_l0: 1.2724769476335496e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.504788764985278e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.345700704609044e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.716904186352622e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00014543008001055568\n", + "Grad _memory_unit.bias_hh_l1: 7.101968367351219e-05\n", + "Data X Sample: tensor([[1.5775, 1.8469, 2.0270, 2.1494, 2.2009, 2.3263, 2.2940, 2.4389, 2.5240,\n", + " 2.4659, 2.6172, 2.6291, 2.5033, 2.4402, 2.4513, 2.4931, 2.4419, 2.4412,\n", + " 2.5131, 2.5683, 2.4806, 2.4908, 2.5134, 2.5977, 2.5750, 2.6328, 2.6160,\n", + " 2.5817, 2.3452, 2.2336, 2.3167, 2.3654, 2.2264, 1.4715, 1.9070, 1.7707,\n", + " 1.6066, 1.4868, 1.5783, 1.5888, 1.2266, 0.7348, 0.7498, 1.3462, 1.8988,\n", + " 2.1615, 1.4278, 2.0408]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3695, -0.5841, 0.8144, -0.4243, -1.4053, 0.7943, 0.6917, -1.2743,\n", + " 0.6173, 0.4943, 0.6732, 0.3386, 0.9476, 0.7666, 0.4022, -0.6245,\n", + " 0.5499, 1.3451, 0.2397, 0.8458, 0.2343, 1.6495, 0.3624, 0.1202,\n", + " 0.4624, 0.5087, -0.3459, 1.0774, 0.6417, -0.4378, -0.7993, -0.6621,\n", + " -0.8496, 0.9487, -0.4411, 0.8450, -0.4229, 0.5417, 0.7285, -1.0346,\n", + " -0.4350, -0.9755, -0.1833]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3692, 0.3667, 0.1857, 0.3253, 0.1421, -0.1315, -0.3812, -0.3719,\n", + " -0.1746, -0.2176, -0.2070, 0.2088, 0.2168, 0.2637, 0.2055, 0.2405,\n", + " 0.2974, 0.1093, 0.0361, 0.1683, 0.0601, 0.0402, 0.0288, 0.0368,\n", + " 0.0885, 0.0642, -0.0451, 0.0560, 0.1740, 0.2052, 0.2748, 0.2394,\n", + " 0.2900, 0.2561, 0.2136, 0.1567, 0.0078, -0.0360, -0.0384, -0.2834,\n", + " -0.1964, -0.2363, -0.2841]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00023215664259623736\n", + "Grad encoder.fc1.bias: 0.00031642697285860777\n", + "Grad encoder.encoder.0.weight: 4.461818025447428e-05\n", + "Grad encoder.encoder.0.bias: 0.0002733220171649009\n", + "Grad encoder.encoder.2.weight: 3.1265146390069276e-05\n", + "Grad encoder.encoder.2.bias: 0.00020284084894228727\n", + "Grad encoder.encoder.4.weight: 0.00010463923536008224\n", + "Grad encoder.encoder.4.bias: 0.00036793871549889445\n", + "Grad decoder.fc1.0.weight: 2.9611974241561256e-05\n", + "Grad decoder.fc1.0.bias: 0.0001392066478729248\n", + "Grad decoder.fc1.2.weight: 3.431832737987861e-05\n", + "Grad decoder.fc1.2.bias: 0.0002226337674073875\n", + "Grad decoder.fc1.4.weight: 4.066625842824578e-05\n", + "Grad decoder.fc1.4.bias: 0.0003593733417801559\n", + "Grad decoder.fc2.weight: 0.00010049348202301189\n", + "Grad decoder.fc2.bias: 0.0021438796538859606\n", + "Grad _memory_unit.weight_ih_l0: 2.8642668894462986e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.088365236995742e-06\n", + "Grad _memory_unit.bias_hh_l0: 4.400815669214353e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.2348774589554523e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.612173557281494e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.2999425052839797e-05\n", + "Data X Sample: tensor([[1.5043, 1.5643, 1.8753, 1.9613, 1.9499, 2.0537, 2.1045, 2.1834, 3.5077,\n", + " 4.2463, 4.4507, 4.3838, 4.0191, 3.8825, 3.7753, 3.7881, 3.6699, 3.7024,\n", + " 3.4672, 3.3493, 3.3663, 3.5839, 3.0050, 2.8344, 2.8809, 2.9305, 2.9517,\n", + " 2.9529, 3.0737, 3.1540, 3.1811, 3.3519, 3.7247, 2.7462, 4.6033, 5.0226,\n", + " 5.2190, 5.5814, 6.0912, 5.8814, 1.0834, 0.6811, 0.6407, 1.2257, 1.8235,\n", + " 1.8527, 1.2170, 1.6733]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 4.6806e-01, 5.6658e-01, 6.6697e-01, 2.8713e-01, 2.5006e-01,\n", + " 3.0275e-01, -4.3572e-02, -1.4036e-01, 1.9190e-01, 1.3476e-02,\n", + " -1.9807e-01, 4.5511e-01, 4.0241e-01, 7.7885e-02, -1.0889e+00,\n", + " -6.0981e-01, -1.0369e-01, 6.8793e-01, -8.4696e-01, -3.4718e-01,\n", + " 5.0698e-01, 7.5261e-01, -6.8797e-01, 1.4786e+00, -6.7198e-02,\n", + " 8.8910e-01, -6.1235e-01, -5.7201e-01, -4.2527e-01, 1.9638e-04,\n", + " -6.0123e-01, 5.6237e-01, -8.3005e-01, -9.9747e-01, -1.9636e-01,\n", + " -9.4998e-01, 1.5963e-01, -3.3673e-01, -4.2937e-01, 6.7312e-02,\n", + " -5.4509e-01, -4.9954e-01, -6.1208e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2121, -0.2624, -0.0896, -0.1410, 0.0520, 0.1412, 0.1532, 0.2407,\n", + " 0.2006, 0.2392, 0.1906, -0.1473, -0.1601, -0.2446, -0.1775, -0.2815,\n", + " -0.2245, -0.0861, -0.0496, -0.1242, -0.0954, -0.0511, -0.0797, -0.0719,\n", + " -0.0125, -0.0261, -0.0286, -0.1172, -0.2079, -0.2417, -0.1917, -0.1606,\n", + " -0.2693, -0.2628, -0.1963, -0.1218, -0.0329, 0.0147, 0.0361, 0.2459,\n", + " 0.3057, 0.3198, 0.2475]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001534540206193924\n", + "Grad encoder.fc1.bias: 0.00016303276061080396\n", + "Grad encoder.encoder.0.weight: 3.454611942288466e-05\n", + "Grad encoder.encoder.0.bias: 0.00019502003851812333\n", + "Grad encoder.encoder.2.weight: 2.1245530660962686e-05\n", + "Grad encoder.encoder.2.bias: 0.00014693271077703685\n", + "Grad encoder.encoder.4.weight: 8.647020877106115e-05\n", + "Grad encoder.encoder.4.bias: 0.00014178644050844014\n", + "Grad decoder.fc1.0.weight: 2.6076670110342093e-05\n", + "Grad decoder.fc1.0.bias: 8.555375097785145e-05\n", + "Grad decoder.fc1.2.weight: 3.053277396247722e-05\n", + "Grad decoder.fc1.2.bias: 0.00012181384954601526\n", + "Grad decoder.fc1.4.weight: 3.48619360011071e-05\n", + "Grad decoder.fc1.4.bias: 0.00020784331718459725\n", + "Grad decoder.fc2.weight: 8.341763896169141e-05\n", + "Grad decoder.fc2.bias: 0.0017839715583249927\n", + "Grad _memory_unit.weight_ih_l0: 1.7416922446500394e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.007156687497627e-06\n", + "Grad _memory_unit.bias_hh_l0: 2.633506255733664e-06\n", + "Grad _memory_unit.weight_ih_l1: 9.238486882168218e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.7870053852675483e-05\n", + "Grad _memory_unit.bias_hh_l1: 8.889053788152523e-06\n", + "Data X Sample: tensor([[1.5149, 1.7565, 1.8933, 1.9570, 2.0489, 2.3263, 2.4127, 2.3665, 2.5972,\n", + " 2.5923, 2.6013, 2.6564, 2.5411, 2.5574, 2.4765, 2.4985, 2.4230, 2.4276,\n", + " 2.5709, 2.4009, 2.3947, 2.3882, 2.3664, 2.3610, 2.3141, 2.3664, 2.3549,\n", + " 2.3329, 2.1995, 2.2697, 2.2432, 2.3322, 2.2110, 1.4532, 1.9781, 1.7512,\n", + " 1.6341, 1.4762, 1.6036, 1.6540, 1.2791, 0.6771, 0.6791, 1.2544, 1.7799,\n", + " 2.0014, 1.3462, 1.8297]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.7223, -0.0225, 0.7677, 0.9507, -0.5532, -0.6151, 0.5462, -0.2953,\n", + " 0.6049, 0.5848, 0.6284, -0.4803, 1.3236, -0.3414, -0.8169, 0.5333,\n", + " 0.3786, 1.5772, -0.2620, -0.0258, 0.3915, 0.3829, -0.5092, 0.7245,\n", + " 0.7518, -0.1372, 0.0351, -0.2681, 0.6144, -0.6512, 0.1049, -0.8677,\n", + " -0.2412, 0.0251, -0.4995, 0.5152, 0.8233, -0.0920, -0.7130, 0.3036,\n", + " 0.7168, 0.0141, -0.7419]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3836, 0.3843, 0.1959, 0.3412, 0.1601, -0.1287, -0.3875, -0.3918,\n", + " -0.1780, -0.2291, -0.2052, 0.2206, 0.2265, 0.2681, 0.2114, 0.2528,\n", + " 0.3113, 0.1159, 0.0457, 0.1795, 0.0689, 0.0501, 0.0289, 0.0353,\n", + " 0.0904, 0.0670, -0.0513, 0.0498, 0.1715, 0.2171, 0.2829, 0.2508,\n", + " 0.3048, 0.2706, 0.2215, 0.1696, 0.0038, -0.0409, -0.0346, -0.2969,\n", + " -0.2126, -0.2610, -0.3044]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 9.243535896530375e-05\n", + "Grad encoder.fc1.bias: 6.86120183672756e-05\n", + "Grad encoder.encoder.0.weight: 1.89743259397801e-05\n", + "Grad encoder.encoder.0.bias: 8.482906559947878e-05\n", + "Grad encoder.encoder.2.weight: 1.2733895346173085e-05\n", + "Grad encoder.encoder.2.bias: 7.336314592976123e-05\n", + "Grad encoder.encoder.4.weight: 3.305214340798557e-05\n", + "Grad encoder.encoder.4.bias: 0.00010350917000323534\n", + "Grad decoder.fc1.0.weight: 1.2734840311168227e-05\n", + "Grad decoder.fc1.0.bias: 7.680218550376594e-05\n", + "Grad decoder.fc1.2.weight: 2.1855717932339758e-05\n", + "Grad decoder.fc1.2.bias: 0.00010960260988213122\n", + "Grad decoder.fc1.4.weight: 2.3816610337235034e-05\n", + "Grad decoder.fc1.4.bias: 0.00022134085884317756\n", + "Grad decoder.fc2.weight: 7.735807594144717e-05\n", + "Grad decoder.fc2.bias: 0.0014266122598201036\n", + "Grad _memory_unit.weight_ih_l0: 1.2683710792771308e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.274686373013537e-06\n", + "Grad _memory_unit.bias_hh_l0: 2.7532732929103076e-06\n", + "Grad _memory_unit.weight_ih_l1: 5.645139253829257e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.4048009688849561e-05\n", + "Grad _memory_unit.bias_hh_l1: 6.904635483806487e-06\n", + "Data X Sample: tensor([[2.6181, 2.9509, 3.2968, 3.4110, 3.5754, 3.6699, 3.9318, 3.8699, 3.9740,\n", + " 3.8608, 3.9019, 3.8483, 3.8837, 3.6971, 3.5660, 3.4490, 3.3570, 3.5109,\n", + " 3.4692, 3.3326, 3.3124, 3.2318, 2.9592, 2.7771, 2.7946, 2.7764, 2.6853,\n", + " 2.8509, 2.7060, 2.8657, 2.8171, 2.7992, 2.9679, 2.1603, 3.6351, 4.1348,\n", + " 4.2515, 4.7333, 5.1975, 5.0728, 1.8422, 1.1610, 1.2005, 1.9806, 3.1000,\n", + " 3.3280, 2.1621, 3.0026]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5852, 0.1437, -0.3634, -0.6167, -0.5617, -1.6258, -1.7327, -1.6288,\n", + " -0.4318, -0.4581, -0.0566, 0.0986, 0.8210, -0.1182, -0.8442, -0.4038,\n", + " -1.7843, 0.2964, -1.6791, -1.2454, 0.3496, -0.7338, 0.0870, 0.0626,\n", + " 2.6120, -1.0457, 0.3263, 0.8097, 1.6560, 1.5054, 0.5720, 0.1464,\n", + " -0.0459, 0.1769, -0.9873, 0.0780, 0.0893, -0.5101, -0.9413, 0.2592,\n", + " 0.9182, -0.1310, 1.4216]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1818, -0.2259, -0.0885, -0.1891, -0.0435, 0.0603, 0.0910, 0.1957,\n", + " 0.1118, 0.1694, 0.1429, -0.1089, -0.1127, -0.1772, -0.1388, -0.2155,\n", + " -0.1947, -0.0753, -0.0546, -0.1091, -0.0831, -0.0510, -0.0644, -0.0531,\n", + " -0.0144, -0.0098, 0.0270, -0.0366, -0.1104, -0.1464, -0.1274, -0.1085,\n", + " -0.1710, -0.2009, -0.1234, -0.1029, -0.0274, 0.0075, 0.0180, 0.2172,\n", + " 0.2663, 0.2513, 0.1928]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004954240284860134\n", + "Grad encoder.fc1.bias: 0.00029856612673029304\n", + "Grad encoder.encoder.0.weight: 6.318657688098028e-05\n", + "Grad encoder.encoder.0.bias: 0.0003396245592739433\n", + "Grad encoder.encoder.2.weight: 5.9628036979120225e-05\n", + "Grad encoder.encoder.2.bias: 0.00072118965908885\n", + "Grad encoder.encoder.4.weight: 0.00016270525520667434\n", + "Grad encoder.encoder.4.bias: 0.0016629364108666778\n", + "Grad decoder.fc1.0.weight: 6.490421947091818e-05\n", + "Grad decoder.fc1.0.bias: 0.00042698532342910767\n", + "Grad decoder.fc1.2.weight: 4.73027175758034e-05\n", + "Grad decoder.fc1.2.bias: 0.0007562414393760264\n", + "Grad decoder.fc1.4.weight: 5.0809074309654534e-05\n", + "Grad decoder.fc1.4.bias: 0.0005080309929326177\n", + "Grad decoder.fc2.weight: 0.00014777043543290347\n", + "Grad decoder.fc2.bias: 0.002016308717429638\n", + "Grad _memory_unit.weight_ih_l0: 2.0818235498154536e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.4819985962240025e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.96428004023619e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.360861440654844e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001396496663801372\n", + "Grad _memory_unit.bias_hh_l1: 7.278234988916665e-05\n", + "Data X Sample: tensor([[1.6199, 1.8206, 2.0270, 2.0619, 2.1855, 2.2217, 2.3017, 2.3906, 2.3482,\n", + " 2.4580, 2.4395, 2.4285, 2.4367, 2.3720, 2.3101, 2.3180, 2.3334, 2.3483,\n", + " 2.4140, 2.4120, 2.5100, 2.5490, 2.5303, 2.5271, 2.5825, 2.5544, 2.5174,\n", + " 2.4879, 2.4527, 2.4760, 2.5127, 2.5229, 2.4289, 1.5424, 2.0492, 1.9020,\n", + " 1.7010, 1.6564, 1.5846, 1.4867, 1.2886, 0.7448, 0.8124, 1.3606, 1.8988,\n", + " 2.0471, 1.4482, 2.0252]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.8371, 1.1518, -0.8970, -0.3380, -0.0348, 0.3983, -0.2861, -0.2178,\n", + " -0.7937, -0.0972, -0.5287, 0.8129, -0.0176, 0.7697, 0.3440, 0.2964,\n", + " 1.7522, 0.4529, -0.9831, 0.1547, 0.4097, 1.7051, 0.5495, 0.8595,\n", + " 0.0777, 0.5970, -0.0864, 0.1983, 0.8152, 0.0828, -0.0305, 0.4592,\n", + " 0.0735, 0.4494, 1.8634, 0.1903, 0.1343, 0.1511, -0.0156, -0.2484,\n", + " -0.1294, -0.3085, -0.5682]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4998, 0.4999, 0.2480, 0.4853, 0.2381, -0.1385, -0.4730, -0.5264,\n", + " -0.2333, -0.3084, -0.2526, 0.2927, 0.3087, 0.3459, 0.2755, 0.3622,\n", + " 0.4107, 0.1682, 0.0672, 0.2296, 0.1032, 0.0855, 0.0610, 0.0581,\n", + " 0.1083, 0.0621, -0.0855, 0.0610, 0.2134, 0.3037, 0.3531, 0.3215,\n", + " 0.4082, 0.3701, 0.2941, 0.2370, 0.0029, -0.0533, -0.0327, -0.3906,\n", + " -0.3228, -0.3710, -0.4201]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003191189607605338\n", + "Grad encoder.fc1.bias: 0.00035354375722818077\n", + "Grad encoder.encoder.0.weight: 4.2341736843809485e-05\n", + "Grad encoder.encoder.0.bias: 0.0003598965413402766\n", + "Grad encoder.encoder.2.weight: 4.5457745727617294e-05\n", + "Grad encoder.encoder.2.bias: 0.0006091433460824192\n", + "Grad encoder.encoder.4.weight: 0.00013917979958932847\n", + "Grad encoder.encoder.4.bias: 0.0011852136813104153\n", + "Grad decoder.fc1.0.weight: 5.544244049815461e-05\n", + "Grad decoder.fc1.0.bias: 0.0004090319271199405\n", + "Grad decoder.fc1.2.weight: 5.0747279601637274e-05\n", + "Grad decoder.fc1.2.bias: 0.0007455429877154529\n", + "Grad decoder.fc1.4.weight: 5.028902887715958e-05\n", + "Grad decoder.fc1.4.bias: 0.00044365134090185165\n", + "Grad decoder.fc2.weight: 0.00014055265637580305\n", + "Grad decoder.fc2.bias: 0.0014668938238173723\n", + "Grad _memory_unit.weight_ih_l0: 1.7847074559540488e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.354218228603713e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.6705692764371634e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.576475011068396e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001153859484475106\n", + "Grad _memory_unit.bias_hh_l1: 6.1030583310639486e-05\n", + "Data X Sample: tensor([[2.6266, 3.0397, 3.2772, 3.3629, 3.4798, 3.4622, 3.5928, 3.7975, 3.8592,\n", + " 3.8719, 3.9146, 3.8814, 3.8460, 3.7680, 3.6441, 3.6336, 3.6180, 3.6463,\n", + " 3.5931, 3.4163, 3.5013, 3.3267, 2.9978, 2.9566, 2.8865, 2.7582, 2.7652,\n", + " 2.9284, 2.7580, 2.9640, 2.7926, 2.9181, 2.9371, 2.1672, 3.5762, 4.0229,\n", + " 4.1611, 4.3703, 4.7982, 4.7068, 1.9186, 1.1092, 1.1318, 2.0437, 2.8899,\n", + " 3.3166, 2.0601, 2.9635]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0231, -0.1872, 1.4652, 0.0225, -0.0202, -0.1344, -1.1005, 0.3982,\n", + " -0.4854, -0.3366, -0.5958, -1.1704, -0.2739, -0.1628, 0.1131, -1.1791,\n", + " -0.4557, -2.8469, -0.2165, 0.4681, 0.5787, 0.0199, 1.0769, 1.1140,\n", + " 1.3950, 0.7117, 0.7575, 0.7639, -0.1886, 0.0969, -0.6169, -0.9639,\n", + " -0.5634, -0.0715, 0.7506, 0.9522, 0.8233, 0.0940, 0.7936, 0.7378,\n", + " -0.7097, -0.4940, -0.9517]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1428, -0.1945, -0.0779, -0.1838, -0.0629, 0.0325, 0.0538, 0.1525,\n", + " 0.0877, 0.1422, 0.1009, -0.0822, -0.0860, -0.1338, -0.1123, -0.1899,\n", + " -0.1828, -0.0682, -0.0392, -0.0978, -0.0682, -0.0500, -0.0640, -0.0588,\n", + " -0.0221, -0.0075, 0.0416, -0.0063, -0.0764, -0.1244, -0.0941, -0.0764,\n", + " -0.1389, -0.1581, -0.1030, -0.0811, -0.0277, 0.0114, 0.0046, 0.1759,\n", + " 0.2365, 0.2009, 0.1592]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 8.522509597241879e-05\n", + "Grad encoder.fc1.bias: 7.723349699517712e-05\n", + "Grad encoder.encoder.0.weight: 1.718264138617087e-05\n", + "Grad encoder.encoder.0.bias: 6.97158247930929e-05\n", + "Grad encoder.encoder.2.weight: 1.4565881429007277e-05\n", + "Grad encoder.encoder.2.bias: 0.00012930584489367902\n", + "Grad encoder.encoder.4.weight: 4.813790656044148e-05\n", + "Grad encoder.encoder.4.bias: 0.0005497675738297403\n", + "Grad decoder.fc1.0.weight: 2.1760495656053536e-05\n", + "Grad decoder.fc1.0.bias: 0.0002119307464454323\n", + "Grad decoder.fc1.2.weight: 3.314314744784497e-05\n", + "Grad decoder.fc1.2.bias: 0.0002032000629696995\n", + "Grad decoder.fc1.4.weight: 3.57753669959493e-05\n", + "Grad decoder.fc1.4.bias: 0.0003255450283177197\n", + "Grad decoder.fc2.weight: 6.581328489119187e-05\n", + "Grad decoder.fc2.bias: 0.002013889839872718\n", + "Grad _memory_unit.weight_ih_l0: 2.6878278731601313e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.6967464034678414e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.843740943120793e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.5594912383676274e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.961172089679167e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.508792204025667e-05\n", + "Data X Sample: tensor([[2.5121, 2.9640, 3.2291, 3.4219, 3.4525, 3.5579, 3.7454, 3.8656, 3.8885,\n", + " 3.9003, 3.9495, 3.9729, 3.7927, 3.6753, 3.7248, 3.4845, 3.4404, 3.4316,\n", + " 3.4424, 3.4070, 3.2927, 3.0924, 3.0243, 2.7352, 2.8096, 2.7582, 2.7332,\n", + " 2.7245, 2.6643, 2.8330, 2.7996, 2.8269, 3.0537, 2.1237, 3.6204, 4.0351,\n", + " 4.3479, 4.6618, 5.3433, 5.1040, 1.9854, 1.1212, 1.1338, 1.9920, 3.1079,\n", + " 3.1450, 2.1485, 2.9948]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2485, 0.2221, 0.7444, -0.0481, -1.2054, -0.2112, -2.1334, -1.7354,\n", + " -0.7463, -0.5936, -0.0572, -0.2317, -0.8000, 0.8693, 2.8807, -1.0117,\n", + " 0.0361, -0.7506, -0.4495, 1.1964, -2.7993, 1.5687, -1.3375, -1.9974,\n", + " -0.2477, 2.5779, 0.6679, 0.7327, 0.8207, 2.0005, 1.2307, 0.0831,\n", + " 0.1306, 0.0591, -0.9223, 0.2411, 0.3767, 0.8248, -0.5086, 0.5358,\n", + " -0.4058, 0.9696, 0.1783]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1581, -0.2081, -0.0836, -0.1870, -0.0578, 0.0427, 0.0678, 0.1674,\n", + " 0.0938, 0.1511, 0.1185, -0.0935, -0.0965, -0.1505, -0.1233, -0.2005,\n", + " -0.1890, -0.0697, -0.0489, -0.1034, -0.0744, -0.0503, -0.0649, -0.0564,\n", + " -0.0213, -0.0079, 0.0367, -0.0194, -0.0882, -0.1298, -0.1086, -0.0889,\n", + " -0.1499, -0.1770, -0.1096, -0.0905, -0.0289, 0.0086, 0.0105, 0.1941,\n", + " 0.2478, 0.2215, 0.1702]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00013767497148364782\n", + "Grad encoder.fc1.bias: 0.0004886758979409933\n", + "Grad encoder.encoder.0.weight: 3.086670039920136e-05\n", + "Grad encoder.encoder.0.bias: 0.0005597203271463513\n", + "Grad encoder.encoder.2.weight: 2.759282142505981e-05\n", + "Grad encoder.encoder.2.bias: 0.0004947500419802964\n", + "Grad encoder.encoder.4.weight: 8.482822158839554e-05\n", + "Grad encoder.encoder.4.bias: 0.0008193761459551752\n", + "Grad decoder.fc1.0.weight: 4.265977258910425e-05\n", + "Grad decoder.fc1.0.bias: 0.00037483038613572717\n", + "Grad decoder.fc1.2.weight: 5.2369534387253225e-05\n", + "Grad decoder.fc1.2.bias: 0.0003740245592780411\n", + "Grad decoder.fc1.4.weight: 5.747157410951331e-05\n", + "Grad decoder.fc1.4.bias: 0.0004148490843363106\n", + "Grad decoder.fc2.weight: 0.0001509231369709596\n", + "Grad decoder.fc2.bias: 0.0016284051816910505\n", + "Grad _memory_unit.weight_ih_l0: 8.501646334480029e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.12521297018975e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.778256228135433e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.4637585031305207e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.553262548753992e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.943434785469435e-05\n", + "Data X Sample: tensor([[1.6464, 1.7813, 1.9173, 1.9570, 1.8970, 2.1436, 2.1492, 2.0499, 3.4540,\n", + " 4.0062, 4.1811, 4.0294, 3.8504, 3.6671, 3.7677, 3.5625, 3.5127, 3.4780,\n", + " 3.3887, 3.2154, 3.2878, 3.3221, 2.9713, 2.8287, 2.8058, 2.8000, 2.8638,\n", + " 2.9447, 2.8308, 2.9869, 3.1251, 3.1695, 3.4079, 2.4830, 4.1964, 4.5629,\n", + " 4.8867, 5.0964, 5.4954, 5.6601, 1.2552, 0.7169, 0.6831, 1.1883, 1.7680,\n", + " 1.9728, 1.2782, 1.8844]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4495, -0.1838, 0.8794, 0.5968, 0.1653, 1.2435, -0.1241, -0.6656,\n", + " -0.8038, -0.6798, 0.2577, -0.0665, 0.0424, 0.6526, -0.6155, 0.7533,\n", + " 0.2716, -0.3141, -0.0469, -3.7574, -0.7245, -1.4893, 0.8471, -0.0748,\n", + " 0.8817, -0.9425, -0.0852, -0.6876, -0.1869, 0.3594, 0.3631, 0.4537,\n", + " -0.3602, 1.8228, -1.2560, -0.5708, 0.5590, -0.7858, -0.2536, -0.3627,\n", + " -0.4715, 0.2732, 0.6967]], device='cuda:0')\n", + "Prediction Sample: tensor([[-2.0557e-01, -2.5607e-01, -9.6446e-02, -1.6803e-01, 1.8035e-03,\n", + " 1.0551e-01, 1.2843e-01, 2.2056e-01, 1.5108e-01, 2.0554e-01,\n", + " 1.8108e-01, -1.3666e-01, -1.4334e-01, -2.1825e-01, -1.6470e-01,\n", + " -2.5621e-01, -2.1807e-01, -7.6474e-02, -6.7442e-02, -1.2331e-01,\n", + " -9.4347e-02, -5.1881e-02, -7.4109e-02, -6.0466e-02, -1.9547e-02,\n", + " -1.8429e-02, 1.9197e-04, -8.9758e-02, -1.6323e-01, -1.8893e-01,\n", + " -1.7223e-01, -1.3982e-01, -2.2276e-01, -2.4804e-01, -1.5999e-01,\n", + " -1.1981e-01, -3.4219e-02, 6.6626e-03, 2.9602e-02, 2.4597e-01,\n", + " 2.9154e-01, 3.0035e-01, 2.1775e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006642569787800312\n", + "Grad encoder.fc1.bias: 0.0003803225699812174\n", + "Grad encoder.encoder.0.weight: 7.878286123741418e-05\n", + "Grad encoder.encoder.0.bias: 0.00041840755147859454\n", + "Grad encoder.encoder.2.weight: 7.495848694816232e-05\n", + "Grad encoder.encoder.2.bias: 0.0008979932172223926\n", + "Grad encoder.encoder.4.weight: 0.00022876702132634819\n", + "Grad encoder.encoder.4.bias: 0.002317726146429777\n", + "Grad decoder.fc1.0.weight: 7.910023123258725e-05\n", + "Grad decoder.fc1.0.bias: 0.0005384255200624466\n", + "Grad decoder.fc1.2.weight: 4.399255340103991e-05\n", + "Grad decoder.fc1.2.bias: 0.0005289055989123881\n", + "Grad decoder.fc1.4.weight: 3.6054072552360594e-05\n", + "Grad decoder.fc1.4.bias: 0.000290378782665357\n", + "Grad decoder.fc2.weight: 0.0001660071429796517\n", + "Grad decoder.fc2.bias: 0.0015059123979881406\n", + "Grad _memory_unit.weight_ih_l0: 2.5200957679771818e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.650176535709761e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.4558422814588994e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.1717454981408082e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00017792702419683337\n", + "Grad _memory_unit.bias_hh_l1: 9.158549801213667e-05\n", + "Data X Sample: tensor([[ 0.0191, 0.0233, 0.0240, 0.0044, 0.0051, 0.0427, 0.0308, 0.0128,\n", + " 0.0342, 0.0190, 0.0349, 0.0195, 0.0111, 0.0082, 0.0025, 0.0096,\n", + " -0.1038, -0.1277, -0.1714, -0.1469, -0.1251, -0.1026, -0.1928, -0.1832,\n", + " -0.1614, -0.3056, -0.3197, -0.5384, -0.0416, -0.0590, -0.0945, -0.0691,\n", + " -0.0418, -0.0549, -0.0490, -0.0219, -0.0177, -0.0239, 0.0000, -0.0227,\n", + " -0.0430, 0.0080, 0.0061, 0.0000, 0.0436, 0.0343, 0.0204, 0.0313]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7696, -0.0889, -0.9849, 0.8255, 1.3069, -0.8483, -0.5177, -1.5931,\n", + " 0.9500, 1.5401, 1.4711, 0.9118, -0.1939, 0.2343, 1.2209, 1.3191,\n", + " 1.5260, 0.5780, 1.1391, 0.3404, -0.5344, -1.3436, -1.1776, 8.7581,\n", + " 0.0783, -0.9486, -0.6707, 0.1579, 0.2922, -1.4065, -0.0656, 0.0511,\n", + " 0.1853, -0.5192, 0.0503, -0.5608, -0.4667, -0.3755, 0.2870, -0.3026,\n", + " 0.0677, -1.0484, 0.2765]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4973, 0.4472, 0.2268, 0.4624, 0.1858, -0.1780, -0.4983, -0.6152,\n", + " -0.2100, -0.2904, -0.2233, 0.3176, 0.3007, 0.3362, 0.2476, 0.3175,\n", + " 0.3578, 0.1504, 0.0662, 0.1728, 0.0987, 0.0715, 0.0184, 0.0490,\n", + " 0.0914, 0.0495, -0.0748, 0.1194, 0.2824, 0.3357, 0.3747, 0.3137,\n", + " 0.4184, 0.3754, 0.2557, 0.2200, 0.0141, -0.0235, -0.0238, -0.3589,\n", + " -0.3344, -0.3496, -0.3756]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005185209447517991\n", + "Grad encoder.fc1.bias: 0.00034655502531677485\n", + "Grad encoder.encoder.0.weight: 7.811257091816515e-05\n", + "Grad encoder.encoder.0.bias: 0.0004340630257502198\n", + "Grad encoder.encoder.2.weight: 5.663738556904718e-05\n", + "Grad encoder.encoder.2.bias: 0.0005903241690248251\n", + "Grad encoder.encoder.4.weight: 0.0001740014849929139\n", + "Grad encoder.encoder.4.bias: 0.0012000449933111668\n", + "Grad decoder.fc1.0.weight: 6.259055953705683e-05\n", + "Grad decoder.fc1.0.bias: 0.000463646138086915\n", + "Grad decoder.fc1.2.weight: 6.664158718194813e-05\n", + "Grad decoder.fc1.2.bias: 0.0006746808649040759\n", + "Grad decoder.fc1.4.weight: 7.83498544478789e-05\n", + "Grad decoder.fc1.4.bias: 0.0007765628979541361\n", + "Grad decoder.fc2.weight: 0.0001772418327163905\n", + "Grad decoder.fc2.bias: 0.002166898688301444\n", + "Grad _memory_unit.weight_ih_l0: 1.3173672414268367e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.5887089325115085e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.627515459607821e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.604530426557176e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.288934961659834e-05\n", + "Grad _memory_unit.bias_hh_l1: 5.0168622692581266e-05\n", + "Data X Sample: tensor([[1.6369, 1.7085, 1.8062, 1.8345, 1.9550, 2.0493, 2.1400, 2.0670, 3.6200,\n", + " 4.0599, 4.2668, 4.0488, 3.9370, 3.8579, 3.6265, 3.4408, 3.4514, 3.5225,\n", + " 3.4610, 3.4814, 3.3982, 3.3450, 2.8797, 2.9050, 2.8377, 2.8391, 2.9197,\n", + " 2.8795, 2.8655, 3.1212, 3.2126, 3.2303, 3.5421, 2.6203, 4.3263, 4.7185,\n", + " 4.8828, 5.1680, 5.7489, 5.5835, 1.2075, 0.6393, 0.6669, 1.2113, 1.8275,\n", + " 1.7898, 1.1218, 1.7437]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2743, -0.7988, -0.0046, -1.2676, -0.0229, -0.6447, 0.3447, 0.4511,\n", + " 0.2292, 0.7021, 0.5383, -1.0500, -0.7609, -0.8880, -0.5270, -0.9137,\n", + " -0.7081, -0.6019, -0.3537, -0.8294, -0.5299, -0.3918, -0.5495, -0.4683,\n", + " -0.3510, -0.1826, 0.2521, 0.2166, 0.7337, -0.2051, -0.0911, 0.3443,\n", + " -0.1346, -0.4559, -0.2976, -1.0734, -0.8958, 0.5129, 0.4422, 0.6863,\n", + " 0.8178, 0.9082, 0.3696]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2178, -0.2686, -0.0997, -0.1668, 0.0106, 0.1169, 0.1424, 0.2312,\n", + " 0.1615, 0.2168, 0.1974, -0.1484, -0.1567, -0.2338, -0.1757, -0.2694,\n", + " -0.2276, -0.0757, -0.0745, -0.1287, -0.1009, -0.0538, -0.0765, -0.0592,\n", + " -0.0202, -0.0216, -0.0050, -0.1070, -0.1771, -0.1977, -0.1889, -0.1520,\n", + " -0.2377, -0.2673, -0.1697, -0.1271, -0.0353, 0.0045, 0.0347, 0.2615,\n", + " 0.3019, 0.3192, 0.2273]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002271475677844137\n", + "Grad encoder.fc1.bias: 0.0003001958830282092\n", + "Grad encoder.encoder.0.weight: 5.557278200285509e-05\n", + "Grad encoder.encoder.0.bias: 0.00044425574014894664\n", + "Grad encoder.encoder.2.weight: 3.820392521447502e-05\n", + "Grad encoder.encoder.2.bias: 0.0004168921441305429\n", + "Grad encoder.encoder.4.weight: 0.0001333749678451568\n", + "Grad encoder.encoder.4.bias: 0.0007228712784126401\n", + "Grad decoder.fc1.0.weight: 5.1070059271296486e-05\n", + "Grad decoder.fc1.0.bias: 0.0003039918374270201\n", + "Grad decoder.fc1.2.weight: 5.898397648707032e-05\n", + "Grad decoder.fc1.2.bias: 0.0002962013822980225\n", + "Grad decoder.fc1.4.weight: 6.349479372147471e-05\n", + "Grad decoder.fc1.4.bias: 0.00041820522164925933\n", + "Grad decoder.fc2.weight: 0.00011918952804990113\n", + "Grad decoder.fc2.bias: 0.0021261407528072596\n", + "Grad _memory_unit.weight_ih_l0: 7.037579507596092e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.5037959858309478e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.2708978829323314e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.4782345917628845e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.600433723884635e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.8147249395260587e-05\n", + "Data X Sample: tensor([[1.5669, 1.7857, 1.8783, 1.9285, 2.1036, 2.1642, 2.1985, 1.9832, 2.9024,\n", + " 3.8356, 4.0606, 4.0177, 3.9015, 3.7162, 3.5155, 3.5105, 3.4970, 3.3213,\n", + " 3.4610, 3.4460, 3.3492, 3.2639, 2.8460, 2.7771, 2.8377, 2.8470, 2.9490,\n", + " 2.9733, 2.9280, 3.1245, 3.1216, 3.2082, 3.4365, 2.5311, 4.2527, 4.6188,\n", + " 4.8198, 5.2899, 5.8250, 5.6402, 1.2457, 0.6870, 0.6770, 1.1682, 1.7918,\n", + " 1.8641, 1.2510, 1.8688]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6752, -0.2777, -0.3165, 0.4509, -0.0412, 0.6313, -0.0459, 0.3029,\n", + " 1.6415, 0.7321, 0.8339, -0.2322, -0.0133, -1.1880, -1.5617, -0.1840,\n", + " -0.4396, 0.4471, -0.1266, -1.2819, 0.4875, -0.1047, 0.6570, 0.4377,\n", + " 7.2744, 1.4312, 0.0915, 0.1871, -0.2113, -0.4740, -0.6143, -0.8037,\n", + " -0.4909, -1.8054, -0.6931, -0.6086, -0.8819, 0.8631, -0.7681, 0.7422,\n", + " 0.4214, 1.0323, -0.1387]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2282, -0.2786, -0.1032, -0.1693, 0.0142, 0.1240, 0.1525, 0.2410,\n", + " 0.1673, 0.2246, 0.2101, -0.1573, -0.1661, -0.2452, -0.1839, -0.2783,\n", + " -0.2340, -0.0766, -0.0808, -0.1327, -0.1066, -0.0553, -0.0775, -0.0577,\n", + " -0.0199, -0.0229, -0.0077, -0.1183, -0.1854, -0.2020, -0.1999, -0.1608,\n", + " -0.2471, -0.2813, -0.1758, -0.1340, -0.0367, 0.0029, 0.0386, 0.2746,\n", + " 0.3107, 0.3341, 0.2356]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 7.230289338622242e-05\n", + "Grad encoder.fc1.bias: 0.0001340686867479235\n", + "Grad encoder.encoder.0.weight: 1.5507726857322268e-05\n", + "Grad encoder.encoder.0.bias: 0.00011027047003153712\n", + "Grad encoder.encoder.2.weight: 1.237664127984317e-05\n", + "Grad encoder.encoder.2.bias: 0.0001518665812909603\n", + "Grad encoder.encoder.4.weight: 4.51665255241096e-05\n", + "Grad encoder.encoder.4.bias: 0.00043789655319415033\n", + "Grad decoder.fc1.0.weight: 2.666226282599382e-05\n", + "Grad decoder.fc1.0.bias: 0.00021470728097483516\n", + "Grad decoder.fc1.2.weight: 3.164688314427622e-05\n", + "Grad decoder.fc1.2.bias: 0.00023128243628889322\n", + "Grad decoder.fc1.4.weight: 3.8451973523478955e-05\n", + "Grad decoder.fc1.4.bias: 0.0003514162381179631\n", + "Grad decoder.fc2.weight: 0.00015038800484035164\n", + "Grad decoder.fc2.bias: 0.0020534845534712076\n", + "Grad _memory_unit.weight_ih_l0: 3.6279363939684117e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.1261028450680897e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.187757334264461e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.0500087885011453e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.004996637580916e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.609415605547838e-05\n", + "Data X Sample: tensor([[1.5541, 1.8672, 1.9339, 2.1078, 2.2811, 2.4368, 2.3742, 2.5170, 2.7168,\n", + " 2.6602, 2.6489, 2.6447, 2.5699, 2.5329, 2.4614, 2.4985, 2.4089, 2.4702,\n", + " 2.4037, 2.4418, 2.3849, 2.5474, 2.4387, 2.4202, 2.4267, 2.5074, 2.4269,\n", + " 2.4471, 2.3035, 2.4039, 2.3132, 2.3101, 2.3408, 1.4990, 2.0320, 1.8436,\n", + " 1.7049, 1.6167, 1.6353, 1.5349, 1.2791, 0.7050, 0.7579, 1.2285, 1.9147,\n", + " 2.0871, 1.4278, 2.1190]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.1210, 1.5516, 0.0306, -0.4372, -2.0431, -1.6624, -1.9957, -1.3710,\n", + " -1.6343, -1.7692, -1.5407, 0.0814, 0.0608, 1.6675, 0.2571, 0.0471,\n", + " -0.1781, -2.9060, 0.3803, -0.2193, -0.3053, 0.0350, -0.1272, 0.0595,\n", + " -0.1065, -0.1084, -0.6010, 0.0564, 0.1884, 0.5868, 1.0625, 0.7591,\n", + " 1.1693, -0.3369, 0.2196, -1.1030, -0.5685, -0.0140, -0.4773, -1.6367,\n", + " -1.6526, -1.0503, -0.4995]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4731, 0.4569, 0.2018, 0.4139, 0.1793, -0.1826, -0.4418, -0.5251,\n", + " -0.2556, -0.3158, -0.2799, 0.2518, 0.2787, 0.3596, 0.2434, 0.3310,\n", + " 0.3370, 0.1517, 0.0493, 0.1846, 0.0790, 0.0869, 0.0414, 0.0243,\n", + " 0.0569, 0.0258, -0.0565, 0.0276, 0.2569, 0.3259, 0.3088, 0.2908,\n", + " 0.3703, 0.3402, 0.2389, 0.2498, -0.0196, -0.0512, 0.0065, -0.3595,\n", + " -0.3185, -0.3536, -0.3935]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00037554092705249786\n", + "Grad encoder.fc1.bias: 0.00046489731175825\n", + "Grad encoder.encoder.0.weight: 6.167532410472631e-05\n", + "Grad encoder.encoder.0.bias: 0.0005672454135492444\n", + "Grad encoder.encoder.2.weight: 4.606739821610972e-05\n", + "Grad encoder.encoder.2.bias: 0.0005452730692923069\n", + "Grad encoder.encoder.4.weight: 0.00015162071213126183\n", + "Grad encoder.encoder.4.bias: 0.0009049497311934829\n", + "Grad decoder.fc1.0.weight: 5.2305338613223284e-05\n", + "Grad decoder.fc1.0.bias: 0.0003335423534736037\n", + "Grad decoder.fc1.2.weight: 4.283530870452523e-05\n", + "Grad decoder.fc1.2.bias: 0.00040971796261146665\n", + "Grad decoder.fc1.4.weight: 4.1404338844586164e-05\n", + "Grad decoder.fc1.4.bias: 0.00034885911736637354\n", + "Grad decoder.fc2.weight: 0.00012625668023247272\n", + "Grad decoder.fc2.bias: 0.0016480202320963144\n", + "Grad _memory_unit.weight_ih_l0: 1.4181666301738005e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.896967635024339e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.131984001607634e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.117411092214752e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.591801790520549e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.860187618760392e-05\n", + "Data X Sample: tensor([[1.7281, 2.0275, 2.1397, 2.2587, 2.3290, 2.4633, 2.5406, 2.6164, 2.4679,\n", + " 2.5844, 2.6806, 2.7947, 2.5055, 2.4920, 2.4740, 2.5710, 2.4922, 2.6037,\n", + " 2.6577, 2.5906, 2.6646, 2.7158, 2.7303, 2.7390, 2.7233, 2.7555, 2.6586,\n", + " 2.7082, 2.3868, 2.3908, 2.3237, 2.2770, 1.9536, 1.2587, 1.7599, 1.7074,\n", + " 1.6027, 1.5636, 1.6163, 1.4980, 1.4175, 0.7587, 0.8124, 1.4782, 2.1644,\n", + " 2.3731, 1.5706, 2.1112]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3774, 0.4366, 0.3028, -0.0083, 0.8885, -0.1948, 0.3567, -0.5100,\n", + " -0.4920, -0.3590, -0.3322, 0.8554, 1.0900, 0.8660, 0.9558, 0.8331,\n", + " 0.6387, 0.5398, -0.1284, -2.3208, -0.4283, 0.9328, -2.1060, -0.3892,\n", + " 0.0997, 0.4444, -0.3478, 0.5558, 1.4492, 0.7499, 1.3634, 0.7918,\n", + " 0.9712, 0.4852, -0.3062, 0.5700, 0.3997, 0.0533, 0.0000, -0.4230,\n", + " -0.4817, -0.3732, -0.0904]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4346, 0.4100, 0.1780, 0.3588, 0.1440, -0.1876, -0.4162, -0.4853,\n", + " -0.2383, -0.2937, -0.2614, 0.2290, 0.2478, 0.3341, 0.2197, 0.2946,\n", + " 0.2953, 0.1304, 0.0472, 0.1608, 0.0598, 0.0773, 0.0341, 0.0119,\n", + " 0.0414, 0.0179, -0.0429, 0.0167, 0.2513, 0.3028, 0.2811, 0.2681,\n", + " 0.3326, 0.3067, 0.2064, 0.2232, -0.0256, -0.0402, 0.0106, -0.3238,\n", + " -0.2813, -0.3151, -0.3490]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00015557670849375427\n", + "Grad encoder.fc1.bias: 0.0002611532108858228\n", + "Grad encoder.encoder.0.weight: 1.8494845789973624e-05\n", + "Grad encoder.encoder.0.bias: 0.00023524541757069528\n", + "Grad encoder.encoder.2.weight: 1.553269976284355e-05\n", + "Grad encoder.encoder.2.bias: 0.00019424152560532093\n", + "Grad encoder.encoder.4.weight: 5.5611417337786406e-05\n", + "Grad encoder.encoder.4.bias: 0.0004763004253618419\n", + "Grad decoder.fc1.0.weight: 2.4659279006300494e-05\n", + "Grad decoder.fc1.0.bias: 0.0001829681423259899\n", + "Grad decoder.fc1.2.weight: 3.556967567419633e-05\n", + "Grad decoder.fc1.2.bias: 0.00022533693118020892\n", + "Grad decoder.fc1.4.weight: 3.882363307639025e-05\n", + "Grad decoder.fc1.4.bias: 0.0002975904499180615\n", + "Grad decoder.fc2.weight: 0.00011191088560735807\n", + "Grad decoder.fc2.bias: 0.0019184687407687306\n", + "Grad _memory_unit.weight_ih_l0: 5.054062057752162e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.872589928098023e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.865493666438852e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.7804462686399347e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.0435042794561014e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.576221595518291e-05\n", + "Data X Sample: tensor([[1.5064, 1.7274, 1.8016, 1.9395, 1.9926, 2.0434, 2.0753, 2.1536, 2.1871,\n", + " 2.2716, 2.1762, 2.2825, 2.1704, 2.1048, 2.1108, 2.0431, 2.0079, 2.1800,\n", + " 2.1538, 2.1647, 2.2647, 2.2902, 2.2748, 2.2962, 2.2653, 2.3612, 2.3336,\n", + " 2.3126, 2.1231, 2.2828, 2.1732, 2.2245, 2.2814, 1.5333, 2.2036, 1.8971,\n", + " 1.6479, 1.5027, 1.5846, 1.5462, 1.2027, 0.6691, 0.6791, 1.2457, 1.7284,\n", + " 1.8355, 1.3122, 1.8219]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 7.1597e-01, 2.8619e-01, 1.0035e+00, -1.3861e-01, -3.6136e-01,\n", + " -3.8891e-01, -4.9672e-01, -4.9191e-01, 2.4200e+00, -6.4884e-01,\n", + " -9.4816e-01, -3.7756e-01, -2.3252e-01, -7.5082e-03, 6.7570e-01,\n", + " 1.1488e-01, 7.1228e-01, 3.0337e-01, -6.9078e-01, -3.3420e+00,\n", + " -4.6887e-01, -1.8130e-01, 3.5630e-02, 4.9893e-01, 2.6528e-01,\n", + " -3.3611e-01, -1.3697e+00, -9.9016e-02, -4.0096e-02, 5.6693e-01,\n", + " 3.4566e-01, 5.9508e-01, -2.0510e-01, 5.2695e-01, 1.2468e+00,\n", + " 1.6259e+00, -1.0781e-03, 7.9659e-01, -1.0062e+00, -5.3757e-01,\n", + " -5.8799e-01, -9.1072e-01, 5.8861e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4393, 0.4103, 0.1751, 0.3542, 0.1328, -0.2044, -0.4267, -0.4951,\n", + " -0.2478, -0.3041, -0.2707, 0.2323, 0.2486, 0.3448, 0.2218, 0.3003,\n", + " 0.2926, 0.1275, 0.0501, 0.1563, 0.0511, 0.0794, 0.0353, 0.0098,\n", + " 0.0355, 0.0109, -0.0393, 0.0104, 0.2698, 0.3131, 0.2840, 0.2714,\n", + " 0.3320, 0.3081, 0.1981, 0.2233, -0.0298, -0.0349, 0.0179, -0.3247,\n", + " -0.2865, -0.3157, -0.3474]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003813754010479897\n", + "Grad encoder.fc1.bias: 0.0003194960590917617\n", + "Grad encoder.encoder.0.weight: 5.449537275126204e-05\n", + "Grad encoder.encoder.0.bias: 0.0003867546911351383\n", + "Grad encoder.encoder.2.weight: 4.130767774768174e-05\n", + "Grad encoder.encoder.2.bias: 0.0005658786976709962\n", + "Grad encoder.encoder.4.weight: 0.00012590817641466856\n", + "Grad encoder.encoder.4.bias: 0.001329732476733625\n", + "Grad decoder.fc1.0.weight: 4.571167301037349e-05\n", + "Grad decoder.fc1.0.bias: 0.00033955631079152226\n", + "Grad decoder.fc1.2.weight: 4.213590727886185e-05\n", + "Grad decoder.fc1.2.bias: 0.0007107625133357942\n", + "Grad decoder.fc1.4.weight: 4.605937283486128e-05\n", + "Grad decoder.fc1.4.bias: 0.00046679869410581887\n", + "Grad decoder.fc2.weight: 0.00017140162526629865\n", + "Grad decoder.fc2.bias: 0.0019450550898909569\n", + "Grad _memory_unit.weight_ih_l0: 1.665592753852252e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.9896869061049074e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.965284849982709e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.023536793189123e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011971060303039849\n", + "Grad _memory_unit.bias_hh_l1: 6.311234756140038e-05\n", + "Data X Sample: tensor([[1.6475, 1.8643, 2.0285, 2.2084, 2.2658, 2.5429, 2.5082, 2.5738, 2.5777,\n", + " 2.6571, 2.6647, 2.6350, 2.5455, 2.4729, 2.4261, 2.5327, 2.5048, 2.5011,\n", + " 2.5296, 2.5348, 2.4953, 2.5352, 2.5038, 2.5519, 2.5093, 2.5388, 2.5521,\n", + " 2.6715, 2.4076, 2.3908, 2.2362, 2.2079, 1.8612, 1.2335, 1.6888, 1.6418,\n", + " 1.5535, 1.4947, 1.4895, 1.4498, 1.1693, 0.7727, 0.7781, 1.3491, 1.9821,\n", + " 2.1558, 1.4890, 2.0721]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.8054, 1.0496, -0.8624, 0.2130, 0.9663, -0.6904, -0.7767, -0.7618,\n", + " 0.0670, -0.5762, -0.4448, -0.0181, -0.3110, 0.2388, -0.7160, 0.1659,\n", + " -0.7928, 0.5466, 0.7404, 0.1350, 0.1048, 0.6340, -0.0403, 0.3893,\n", + " 2.7411, 0.8012, -2.7082, -1.6110, -1.7107, -1.1298, -0.9500, -1.6805,\n", + " -0.4660, -0.8445, -0.3700, -0.5210, -0.3026, -0.0911, 0.8307, -0.7348,\n", + " -0.7994, 0.3610, 0.2315]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3684, 0.3492, 0.1562, 0.2790, 0.0982, -0.2000, -0.3890, -0.4191,\n", + " -0.2029, -0.2653, -0.2216, 0.2080, 0.1989, 0.2930, 0.1867, 0.2442,\n", + " 0.2402, 0.0947, 0.0562, 0.1283, 0.0275, 0.0668, 0.0233, -0.0097,\n", + " 0.0343, 0.0053, -0.0271, -0.0162, 0.2378, 0.2575, 0.2376, 0.2318,\n", + " 0.2646, 0.2584, 0.1457, 0.1733, -0.0309, -0.0118, 0.0228, -0.2597,\n", + " -0.2154, -0.2573, -0.2788]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00011400197399780154\n", + "Grad encoder.fc1.bias: 0.0003227667766623199\n", + "Grad encoder.encoder.0.weight: 2.9815069865435362e-05\n", + "Grad encoder.encoder.0.bias: 0.00034484051866456866\n", + "Grad encoder.encoder.2.weight: 2.0524872525129467e-05\n", + "Grad encoder.encoder.2.bias: 0.00023744383361190557\n", + "Grad encoder.encoder.4.weight: 5.0542857934487984e-05\n", + "Grad encoder.encoder.4.bias: 0.00047257469850592315\n", + "Grad decoder.fc1.0.weight: 1.9305349269416183e-05\n", + "Grad decoder.fc1.0.bias: 0.0001486905530327931\n", + "Grad decoder.fc1.2.weight: 2.252481135656126e-05\n", + "Grad decoder.fc1.2.bias: 0.00014029667363502085\n", + "Grad decoder.fc1.4.weight: 2.8005124477203935e-05\n", + "Grad decoder.fc1.4.bias: 0.00022966420510783792\n", + "Grad decoder.fc2.weight: 0.00010672787902876735\n", + "Grad decoder.fc2.bias: 0.0017573164077475667\n", + "Grad _memory_unit.weight_ih_l0: 4.046576577820815e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.8230604837299325e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.504842637397815e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.5224284197756788e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.2130512156290933e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.1290796212269925e-05\n", + "Data X Sample: tensor([[ 0.0127, 0.0189, 0.0225, 0.0044, 0.0068, 0.0221, 0.0123, 0.0085,\n", + " 0.0439, 0.0158, 0.0349, 0.0097, 0.0133, 0.0055, -0.0101, 0.0178,\n", + " -0.0849, -0.1045, -0.1590, -0.1469, -0.1202, -0.0934, -0.1880, -0.1832,\n", + " -0.1370, -0.3030, -0.2797, -0.5057, -0.0555, -0.0950, -0.1050, -0.0857,\n", + " -0.0528, -0.0458, -0.0760, -0.0292, -0.0177, -0.0345, -0.0444, -0.0255,\n", + " 0.0048, -0.0100, 0.0020, -0.0144, 0.0119, 0.0229, -0.0136, -0.0313]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.9484, 1.0949, -1.0451, 1.1150, -0.0130, -2.0360, -0.7700, -1.2265,\n", + " -1.0256, -0.8226, -0.7994, -0.4257, 1.3592, 0.7648, 0.7220, 0.3744,\n", + " 0.4350, 1.9819, 1.4215, 0.7025, 0.3356, 0.3404, 1.1516, 0.4036,\n", + " 0.6751, -0.5111, 0.2813, 0.7272, 1.0693, 1.5999, -0.1544, 0.9695,\n", + " 1.0182, 1.2673, 0.4975, 1.5026, -0.6687, -0.7204, 0.0000, -0.9760,\n", + " -0.8704, -0.4702, -0.7968]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4668, 0.4000, 0.1860, 0.3821, 0.1185, -0.2211, -0.4706, -0.5827,\n", + " -0.2218, -0.2944, -0.2444, 0.2787, 0.2523, 0.3435, 0.2100, 0.3030,\n", + " 0.2870, 0.1275, 0.0722, 0.1309, 0.0646, 0.0635, -0.0016, 0.0172,\n", + " 0.0433, 0.0280, -0.0545, 0.0657, 0.3214, 0.3271, 0.3291, 0.2852,\n", + " 0.3708, 0.3369, 0.1956, 0.2101, -0.0163, -0.0091, 0.0057, -0.3238,\n", + " -0.3165, -0.3199, -0.3250]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006934677949175239\n", + "Grad encoder.fc1.bias: 0.0005747994291596115\n", + "Grad encoder.encoder.0.weight: 0.00010992135503329337\n", + "Grad encoder.encoder.0.bias: 0.0005586427287198603\n", + "Grad encoder.encoder.2.weight: 8.562028961023316e-05\n", + "Grad encoder.encoder.2.bias: 0.000935714109800756\n", + "Grad encoder.encoder.4.weight: 0.00028006406500935555\n", + "Grad encoder.encoder.4.bias: 0.0025737322866916656\n", + "Grad decoder.fc1.0.weight: 0.00010313633538316935\n", + "Grad decoder.fc1.0.bias: 0.0008546698372811079\n", + "Grad decoder.fc1.2.weight: 9.593191498424858e-05\n", + "Grad decoder.fc1.2.bias: 0.001069110119715333\n", + "Grad decoder.fc1.4.weight: 7.239574915729463e-05\n", + "Grad decoder.fc1.4.bias: 0.0008527529425919056\n", + "Grad decoder.fc2.weight: 0.00011706385703291744\n", + "Grad decoder.fc2.bias: 0.0019165551057085395\n", + "Grad _memory_unit.weight_ih_l0: 2.4624016077723354e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.473368168575689e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.048576713306829e-05\n", + "Grad _memory_unit.weight_ih_l1: 8.869398698152509e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00021875450329389423\n", + "Grad _memory_unit.bias_hh_l1: 0.00011079317482654005\n", + "Data X Sample: tensor([[ 0.0000, -0.0015, 0.0015, 0.0153, 0.0000, 0.0029, -0.0031, -0.0043,\n", + " 0.0146, 0.0111, 0.0095, -0.0136, 0.0155, 0.0027, -0.0177, -0.0082,\n", + " 0.0000, 0.0135, -0.0103, 0.0019, -0.0074, -0.0077, -0.0024, -0.0076,\n", + " 0.0056, -0.0209, 0.0213, 0.0082, -0.0278, 0.0426, -0.0245, 0.0359,\n", + " -0.0066, 0.0023, 0.0025, 0.0292, 0.0039, 0.0133, 0.0127, 0.0085,\n", + " 0.0239, 0.0020, 0.0000, -0.0029, -0.0317, 0.0515, 0.0000, -0.0235]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3728, 0.5464, 1.4165, 0.2027, -0.2590, -0.1900, -1.2755, -0.6867,\n", + " -0.7234, -0.8121, -0.5976, 0.2990, 1.3071, 0.0120, 0.4880, 0.5411,\n", + " 0.6923, -0.3461, -0.2598, 0.2485, 0.3731, -1.0479, -0.0318, -0.5083,\n", + " -0.1494, -0.6168, 0.8886, 0.3125, 0.4646, 0.8195, 1.8728, 0.4143,\n", + " 2.2411, 0.1583, 1.0516, 0.1730, 0.0213, 0.7579, 0.9794, -0.5027,\n", + " -0.4880, -0.8034, -0.3031]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.9670, 0.6656, 0.2415, 0.5540, -0.3549, -0.7049, -1.1783, -1.2069,\n", + " -0.8240, -0.9449, -0.8926, 0.4439, 0.4393, 0.6605, 0.3587, 0.5097,\n", + " 0.4074, -0.0698, 0.0372, 0.1159, 0.1638, 0.1335, 0.0313, 0.0446,\n", + " 0.0015, -0.0846, 0.2837, 0.4432, 0.9798, 1.0398, 0.8059, 0.6347,\n", + " 0.7880, 0.6424, 0.4035, 0.4452, -0.0928, 0.0039, 0.1863, -0.8143,\n", + " -0.7407, -0.5923, -0.4339]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 8.146777690853924e-05\n", + "Grad encoder.fc1.bias: 0.00037476461147889495\n", + "Grad encoder.encoder.0.weight: 2.5711786292959005e-05\n", + "Grad encoder.encoder.0.bias: 0.0002760033239610493\n", + "Grad encoder.encoder.2.weight: 1.8159289538743906e-05\n", + "Grad encoder.encoder.2.bias: 0.00017169609782285988\n", + "Grad encoder.encoder.4.weight: 5.828815483255312e-05\n", + "Grad encoder.encoder.4.bias: 0.0003400093119125813\n", + "Grad decoder.fc1.0.weight: 2.660178506630473e-05\n", + "Grad decoder.fc1.0.bias: 0.00011302472557872534\n", + "Grad decoder.fc1.2.weight: 3.2684245525160804e-05\n", + "Grad decoder.fc1.2.bias: 0.00016378362488467246\n", + "Grad decoder.fc1.4.weight: 4.149968299316242e-05\n", + "Grad decoder.fc1.4.bias: 0.0002544020244386047\n", + "Grad decoder.fc2.weight: 0.00010851238039322197\n", + "Grad decoder.fc2.bias: 0.0016453646821901202\n", + "Grad _memory_unit.weight_ih_l0: 2.3924512788653374e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.12562791199889e-06\n", + "Grad _memory_unit.bias_hh_l0: 5.005227649235167e-06\n", + "Grad _memory_unit.weight_ih_l1: 9.579011930327397e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.42404767050175e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.2132490155636333e-05\n", + "Data X Sample: tensor([[1.8013, 2.2707, 2.5800, 2.8163, 2.9146, 2.9863, 3.1707, 3.2410, 3.3027,\n", + " 3.3458, 3.4610, 3.4237, 3.3622, 3.1900, 3.2684, 3.2247, 3.1605, 3.2826,\n", + " 3.3515, 3.2601, 3.2289, 3.2226, 3.0363, 2.7504, 2.6501, 2.5205, 2.3976,\n", + " 2.4227, 1.9774, 1.9847, 1.8477, 1.7906, 1.5730, 1.0275, 1.6031, 1.6904,\n", + " 1.8308, 2.1759, 2.4656, 2.5421, 1.6847, 0.9400, 0.8872, 1.7107, 2.4459,\n", + " 2.6075, 1.7813, 2.7602]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3848, -0.5228, 0.2913, 0.1614, 0.2502, 0.7806, 1.2125, 0.3380,\n", + " -0.1442, 0.1479, 0.0727, 0.9388, 0.3693, -0.1580, 0.1823, -0.4143,\n", + " -0.2011, -0.1882, -0.7040, -0.4091, 1.0470, -1.0563, -1.9411, 0.7698,\n", + " -0.3019, -0.5729, -0.4563, 3.0130, 0.3304, 0.2002, -0.3825, -0.6370,\n", + " 0.0315, -0.1779, -0.7935, -0.8174, 0.0540, 0.8238, -0.7678, 0.2047,\n", + " 0.0672, -0.4165, 0.6188]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1762, -0.2310, -0.0852, -0.1983, -0.0710, 0.0382, 0.0768, 0.1810,\n", + " 0.1007, 0.1588, 0.1410, -0.1008, -0.1145, -0.1685, -0.1468, -0.2195,\n", + " -0.2142, -0.0672, -0.0544, -0.1138, -0.0851, -0.0571, -0.0762, -0.0484,\n", + " -0.0185, -0.0068, 0.0406, -0.0405, -0.0858, -0.1271, -0.1321, -0.0991,\n", + " -0.1637, -0.2034, -0.1212, -0.1088, -0.0317, 0.0085, 0.0170, 0.2287,\n", + " 0.2674, 0.2500, 0.1850]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002471601474098861\n", + "Grad encoder.fc1.bias: 0.00039514160016551614\n", + "Grad encoder.encoder.0.weight: 5.159840657142922e-05\n", + "Grad encoder.encoder.0.bias: 0.00045081862481310964\n", + "Grad encoder.encoder.2.weight: 3.516949072945863e-05\n", + "Grad encoder.encoder.2.bias: 0.0004027648828923702\n", + "Grad encoder.encoder.4.weight: 0.00010414636926725507\n", + "Grad encoder.encoder.4.bias: 0.000725650112144649\n", + "Grad decoder.fc1.0.weight: 3.84424565709196e-05\n", + "Grad decoder.fc1.0.bias: 0.00030030496418476105\n", + "Grad decoder.fc1.2.weight: 4.994865594198927e-05\n", + "Grad decoder.fc1.2.bias: 0.00026636707480065525\n", + "Grad decoder.fc1.4.weight: 4.7805886424612254e-05\n", + "Grad decoder.fc1.4.bias: 0.00024107620993163437\n", + "Grad decoder.fc2.weight: 0.00010810422827489674\n", + "Grad decoder.fc2.bias: 0.0021951375529170036\n", + "Grad _memory_unit.weight_ih_l0: 6.842514267191291e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.691653571673669e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.3924623999628238e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.6102475203515496e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.122518971096724e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.064488555537537e-05\n", + "Data X Sample: tensor([[1.4597, 1.6706, 1.8377, 1.9438, 2.1189, 2.2953, 2.3649, 2.4190, 2.5191,\n", + " 2.5702, 2.5537, 2.5941, 2.5344, 2.5465, 2.4689, 2.4862, 2.3806, 2.4779,\n", + " 2.4574, 2.5088, 2.5321, 2.5382, 2.3953, 2.3458, 2.3629, 2.4839, 2.2963,\n", + " 2.3819, 2.2133, 2.2860, 2.2642, 2.1499, 2.1868, 1.4509, 1.9462, 1.8144,\n", + " 1.6951, 1.4841, 1.5719, 1.6030, 1.2122, 0.7289, 0.6629, 1.2457, 1.8671,\n", + " 1.8870, 1.3122, 1.9235]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.5789, 0.6977, 0.3235, 0.1395, -0.6455, 0.2203, -1.1089, -1.0837,\n", + " -0.5582, -0.5610, -0.7691, 0.2253, 0.0777, 0.3857, 0.3613, 0.0165,\n", + " 0.0814, -0.4006, 0.0724, -0.7132, -0.1044, 1.8815, -0.4043, 0.9688,\n", + " -0.1053, -0.2205, 0.0518, 0.5120, 0.6340, 1.2082, 0.1110, 0.3149,\n", + " 0.1782, 0.6441, 0.8689, 1.1706, 0.7316, 0.7450, 1.1574, -0.8333,\n", + " -0.8568, -0.7618, -0.3153]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3063, 0.2947, 0.1469, 0.1796, 0.0582, -0.2090, -0.3513, -0.3370,\n", + " -0.1602, -0.2474, -0.1838, 0.1927, 0.1368, 0.2488, 0.1437, 0.2024,\n", + " 0.1714, 0.0546, 0.0785, 0.1020, 0.0044, 0.0571, 0.0062, -0.0292,\n", + " 0.0472, -0.0018, -0.0145, -0.0562, 0.2046, 0.2041, 0.1890, 0.1854,\n", + " 0.2003, 0.2021, 0.0875, 0.1189, -0.0384, 0.0229, 0.0462, -0.1948,\n", + " -0.1570, -0.2074, -0.2038]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00031517742900177836\n", + "Grad encoder.fc1.bias: 0.0002034623030340299\n", + "Grad encoder.encoder.0.weight: 8.158264972735196e-05\n", + "Grad encoder.encoder.0.bias: 0.00025038968306034803\n", + "Grad encoder.encoder.2.weight: 5.067557140137069e-05\n", + "Grad encoder.encoder.2.bias: 0.0002585753973107785\n", + "Grad encoder.encoder.4.weight: 0.00017192214727401733\n", + "Grad encoder.encoder.4.bias: 0.0005208470392972231\n", + "Grad decoder.fc1.0.weight: 4.560767047223635e-05\n", + "Grad decoder.fc1.0.bias: 0.00019667003653012216\n", + "Grad decoder.fc1.2.weight: 4.1925839468603954e-05\n", + "Grad decoder.fc1.2.bias: 0.0002188429207308218\n", + "Grad decoder.fc1.4.weight: 5.032809713156894e-05\n", + "Grad decoder.fc1.4.bias: 0.00039121531881392\n", + "Grad decoder.fc2.weight: 9.424048766959459e-05\n", + "Grad decoder.fc2.bias: 0.002134893788024783\n", + "Grad _memory_unit.weight_ih_l0: 2.595073055999819e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.96507754077902e-06\n", + "Grad _memory_unit.bias_hh_l0: 4.756460839416832e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.2193212342026527e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.538992677931674e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.7159352864837274e-05\n", + "Data X Sample: tensor([[1.6549, 1.8614, 1.9309, 2.1931, 2.2248, 2.2718, 2.4219, 2.4886, 2.4947,\n", + " 2.5054, 2.5727, 2.6389, 2.5055, 2.4511, 2.4311, 2.4520, 2.3664, 2.3715,\n", + " 2.4450, 2.4827, 2.5002, 2.4893, 2.5110, 2.4927, 2.4605, 2.4761, 2.4775,\n", + " 2.5410, 2.2376, 2.3483, 2.2677, 2.3074, 2.2286, 1.4875, 1.9045, 1.8509,\n", + " 1.7207, 1.5663, 1.5529, 1.5689, 1.2695, 0.7070, 0.6791, 1.2945, 1.8394,\n", + " 2.2587, 1.3598, 1.8844]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.8587, 0.1170, 0.9406, 0.8504, 0.7226, -0.1715, -1.5152, -1.5624,\n", + " -1.3800, -2.3224, -0.9181, 0.7876, 0.8311, 0.1306, 0.1903, 0.9364,\n", + " -0.1052, 1.0989, 0.2755, 0.5632, 0.2962, 0.0998, -0.8385, -0.3722,\n", + " 0.7712, -0.2984, 1.2076, 0.6986, 0.8264, 1.8747, 0.5569, 1.5165,\n", + " 1.0310, 1.0847, 1.0706, 1.9428, -0.9148, 0.3176, -0.2102, -1.8882,\n", + " -1.1700, -0.8685, -0.1585]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3061, 0.2875, 0.1456, 0.1721, 0.0537, -0.2031, -0.3441, -0.3314,\n", + " -0.1585, -0.2444, -0.1853, 0.1879, 0.1345, 0.2472, 0.1352, 0.2016,\n", + " 0.1598, 0.0548, 0.0764, 0.0991, 0.0049, 0.0560, 0.0048, -0.0234,\n", + " 0.0473, -0.0010, -0.0154, -0.0532, 0.2020, 0.1993, 0.1851, 0.1802,\n", + " 0.1978, 0.1935, 0.0879, 0.1186, -0.0441, 0.0209, 0.0462, -0.1916,\n", + " -0.1570, -0.2042, -0.1992]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0008629919029772282\n", + "Grad encoder.fc1.bias: 0.0006075995042920113\n", + "Grad encoder.encoder.0.weight: 0.00014637006097473204\n", + "Grad encoder.encoder.0.bias: 0.0006430668290704489\n", + "Grad encoder.encoder.2.weight: 0.00010493794252397493\n", + "Grad encoder.encoder.2.bias: 0.000785361509770155\n", + "Grad encoder.encoder.4.weight: 0.00030866233282722533\n", + "Grad encoder.encoder.4.bias: 0.0020221415907144547\n", + "Grad decoder.fc1.0.weight: 9.008920460473746e-05\n", + "Grad decoder.fc1.0.bias: 0.0005494042998179793\n", + "Grad decoder.fc1.2.weight: 9.035797120304778e-05\n", + "Grad decoder.fc1.2.bias: 0.0008972068317234516\n", + "Grad decoder.fc1.4.weight: 8.048106974456459e-05\n", + "Grad decoder.fc1.4.bias: 0.000868749339133501\n", + "Grad decoder.fc2.weight: 0.00014804303646087646\n", + "Grad decoder.fc2.bias: 0.002361572813242674\n", + "Grad _memory_unit.weight_ih_l0: 1.8997514416696504e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.41323097422719e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.904591721948236e-05\n", + "Grad _memory_unit.weight_ih_l1: 7.788121365592815e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00014709951938129961\n", + "Grad _memory_unit.bias_hh_l1: 7.689750054851174e-05\n", + "Data X Sample: tensor([[-0.0074, -0.0058, -0.0015, 0.0109, 0.0000, 0.0029, -0.0077, 0.0043,\n", + " 0.0024, 0.0032, 0.0127, 0.0136, 0.0044, 0.0082, -0.0025, 0.0014,\n", + " -0.0079, 0.0251, 0.0103, 0.0000, 0.0368, 0.0107, 0.0145, 0.0115,\n", + " 0.0150, 0.0261, 0.0346, 0.1224, -0.0833, 0.0229, 0.0210, 0.0221,\n", + " 0.0088, -0.0092, 0.0098, 0.0292, 0.0118, 0.0053, 0.0127, -0.0028,\n", + " 0.0095, 0.0060, 0.0081, 0.0000, 0.0159, 0.0057, -0.0408, -0.0313]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.9831, 0.5308, -2.5516, 0.6254, -0.6270, -1.3804, -0.8951, -0.8737,\n", + " -0.7799, -0.9508, -0.3620, -1.5316, 0.2505, 0.0928, 0.0907, -0.3840,\n", + " -0.2461, 0.1564, 0.1549, 0.4470, 0.6629, 0.2303, 0.6302, -0.8800,\n", + " -0.1555, 0.5153, 0.4391, 1.2059, 1.0345, 0.3452, 1.7667, 1.6395,\n", + " 0.7957, 0.7557, 0.5094, -0.2565, 0.7063, 0.7966, 0.8448, -0.5969,\n", + " -0.6261, -0.6783, -0.3670]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 1.0385, 0.7149, 0.2925, 0.5595, -0.3808, -0.7269, -1.2324, -1.2539,\n", + " -0.8663, -1.0087, -0.9660, 0.4669, 0.4608, 0.7242, 0.3640, 0.5897,\n", + " 0.3996, -0.0577, 0.0589, 0.1415, 0.1758, 0.1428, 0.0365, 0.0720,\n", + " 0.0181, -0.1044, 0.2839, 0.4414, 1.0193, 1.0571, 0.8348, 0.6398,\n", + " 0.8238, 0.6640, 0.4334, 0.4724, -0.1249, 0.0303, 0.1905, -0.8665,\n", + " -0.8096, -0.6531, -0.4712]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00037863742909394205\n", + "Grad encoder.fc1.bias: 0.00035764946369454265\n", + "Grad encoder.encoder.0.weight: 0.00010522456432227045\n", + "Grad encoder.encoder.0.bias: 0.0002823070390149951\n", + "Grad encoder.encoder.2.weight: 7.417508459184319e-05\n", + "Grad encoder.encoder.2.bias: 0.00039268616819754243\n", + "Grad encoder.encoder.4.weight: 0.0002276155719300732\n", + "Grad encoder.encoder.4.bias: 0.0008923639543354511\n", + "Grad decoder.fc1.0.weight: 6.489701627288014e-05\n", + "Grad decoder.fc1.0.bias: 0.0002851414610631764\n", + "Grad decoder.fc1.2.weight: 5.768209302914329e-05\n", + "Grad decoder.fc1.2.bias: 0.0003886206541210413\n", + "Grad decoder.fc1.4.weight: 7.104948599589989e-05\n", + "Grad decoder.fc1.4.bias: 0.0005614114925265312\n", + "Grad decoder.fc2.weight: 0.0001478795165894553\n", + "Grad decoder.fc2.bias: 0.0022332719527184963\n", + "Grad _memory_unit.weight_ih_l0: 6.569668585143518e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.080181729979813e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.2968919691047631e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.423486421321286e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.269232835620642e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.084950367338024e-05\n", + "Data X Sample: tensor([[2.6319, 2.9480, 3.3133, 3.4547, 3.2851, 3.6213, 3.6760, 3.8117, 3.8885,\n", + " 3.9193, 4.0986, 3.9651, 3.7838, 3.7598, 3.7425, 3.7225, 3.6117, 3.5612,\n", + " 3.6551, 3.5762, 3.4620, 3.3282, 3.1737, 2.9642, 2.7495, 2.8130, 2.8424,\n", + " 2.8020, 2.7545, 2.7937, 2.8311, 2.8103, 2.9635, 2.1100, 3.5909, 3.9548,\n", + " 4.1788, 4.4365, 4.9693, 4.7408, 2.0236, 1.2327, 1.1661, 2.0552, 2.8938,\n", + " 3.2594, 2.0057, 2.8227]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2330, -0.0232, 0.1425, -1.1328, 0.6022, 0.6815, 0.1010, -0.0782,\n", + " 0.3886, 0.1924, -0.2357, -0.1369, -0.6235, -0.7380, 0.6334, -0.1857,\n", + " -1.6415, 0.7557, 1.2698, -0.5675, 0.0865, -2.6173, 1.1872, -1.6232,\n", + " 0.4974, -0.1921, -0.2743, -0.9820, -0.2469, -0.5426, -0.0152, -0.5838,\n", + " -0.3590, 0.2486, -1.0098, -1.0359, 0.4796, -0.4903, 0.9175, 0.2798,\n", + " -0.1680, -0.0315, -0.8442]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1719, -0.2317, -0.0815, -0.2010, -0.0753, 0.0353, 0.0783, 0.1793,\n", + " 0.0974, 0.1575, 0.1366, -0.0983, -0.1131, -0.1668, -0.1541, -0.2187,\n", + " -0.2219, -0.0652, -0.0566, -0.1150, -0.0848, -0.0606, -0.0834, -0.0415,\n", + " -0.0161, -0.0019, 0.0415, -0.0344, -0.0824, -0.1264, -0.1313, -0.0980,\n", + " -0.1619, -0.2062, -0.1168, -0.1071, -0.0359, 0.0049, 0.0151, 0.2302,\n", + " 0.2630, 0.2471, 0.1823]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00012965893256478012\n", + "Grad encoder.fc1.bias: 0.00017898275109473616\n", + "Grad encoder.encoder.0.weight: 2.4925258912844583e-05\n", + "Grad encoder.encoder.0.bias: 0.000190094142453745\n", + "Grad encoder.encoder.2.weight: 1.548018008179497e-05\n", + "Grad encoder.encoder.2.bias: 0.0001860698830569163\n", + "Grad encoder.encoder.4.weight: 4.489451748668216e-05\n", + "Grad encoder.encoder.4.bias: 0.0003902023599948734\n", + "Grad decoder.fc1.0.weight: 2.1669409761670977e-05\n", + "Grad decoder.fc1.0.bias: 0.00016471082926727831\n", + "Grad decoder.fc1.2.weight: 2.8668329832726158e-05\n", + "Grad decoder.fc1.2.bias: 0.00014504996943287551\n", + "Grad decoder.fc1.4.weight: 3.54438743670471e-05\n", + "Grad decoder.fc1.4.bias: 0.00022922418429516256\n", + "Grad decoder.fc2.weight: 9.154628060059622e-05\n", + "Grad decoder.fc2.bias: 0.0018730148440226912\n", + "Grad _memory_unit.weight_ih_l0: 2.7695002700056648e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.577149123477284e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.053584679146297e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.252977881449624e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.144165384583175e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.5638193872291595e-05\n", + "Data X Sample: tensor([[1.5075, 1.6167, 1.7941, 1.7908, 1.9926, 2.2143, 2.1785, 2.0201, 3.2417,\n", + " 4.2368, 4.1938, 4.3118, 4.0857, 3.9752, 3.7425, 3.5406, 3.4451, 3.5728,\n", + " 3.5291, 3.6283, 3.4743, 3.3006, 2.9496, 2.8554, 2.8171, 2.9697, 2.9197,\n", + " 3.1283, 3.1569, 3.2260, 3.2895, 3.3906, 3.7797, 2.8194, 4.5788, 4.9617,\n", + " 5.0755, 5.4834, 5.9137, 5.8218, 1.1216, 0.6154, 0.6407, 1.2056, 1.6293,\n", + " 1.7441, 1.1558, 1.8297]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.0536, -0.7491, -0.0345, 0.6305, 1.0419, 0.5809, 0.2497, 0.3642,\n", + " 0.4054, 0.5432, 1.0073, -0.8520, -1.5085, -0.3965, -0.4151, -0.2330,\n", + " 0.6201, -1.1370, -0.5860, -0.3865, 0.7269, -1.2721, -0.6689, 1.1038,\n", + " -0.9674, 1.5510, -1.0689, -1.5177, -0.1105, 0.3591, 0.2430, -0.0637,\n", + " 0.1196, -0.2666, -0.1263, -0.0599, -0.5528, -0.6716, -0.5562, 0.7900,\n", + " 0.8043, 0.9045, 0.1237]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2625, -0.3301, -0.0989, -0.1487, 0.0488, 0.1609, 0.1974, 0.2801,\n", + " 0.2236, 0.2740, 0.2652, -0.1756, -0.2091, -0.3034, -0.2446, -0.3402,\n", + " -0.2886, -0.0726, -0.0892, -0.1555, -0.1262, -0.0695, -0.1119, -0.0440,\n", + " -0.0067, -0.0183, -0.0312, -0.1789, -0.2374, -0.2543, -0.2619, -0.1952,\n", + " -0.3195, -0.3510, -0.2226, -0.1685, -0.0457, -0.0024, 0.0467, 0.3361,\n", + " 0.3527, 0.4037, 0.2723]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0009758071973919868\n", + "Grad encoder.fc1.bias: 0.0009112436673603952\n", + "Grad encoder.encoder.0.weight: 0.00014502876729238778\n", + "Grad encoder.encoder.0.bias: 0.0008643774199299514\n", + "Grad encoder.encoder.2.weight: 0.00011785351671278477\n", + "Grad encoder.encoder.2.bias: 0.0012120942119508982\n", + "Grad encoder.encoder.4.weight: 0.0002903968561440706\n", + "Grad encoder.encoder.4.bias: 0.002994939684867859\n", + "Grad decoder.fc1.0.weight: 0.00010232274507870898\n", + "Grad decoder.fc1.0.bias: 0.0007206606678664684\n", + "Grad decoder.fc1.2.weight: 6.59416982671246e-05\n", + "Grad decoder.fc1.2.bias: 0.0012627430260181427\n", + "Grad decoder.fc1.4.weight: 7.363977783825248e-05\n", + "Grad decoder.fc1.4.bias: 0.0007742258021607995\n", + "Grad decoder.fc2.weight: 0.00015758886002004147\n", + "Grad decoder.fc2.bias: 0.0018243398517370224\n", + "Grad _memory_unit.weight_ih_l0: 3.725208807736635e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00011265421926509589\n", + "Grad _memory_unit.bias_hh_l0: 7.833029667381197e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.6204350686166435e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00025464329519309103\n", + "Grad _memory_unit.bias_hh_l1: 0.00013416307047009468\n", + "Data X Sample: tensor([[1.7005, 1.9998, 2.0962, 2.2543, 2.2521, 2.3970, 2.4420, 2.5425, 2.4971,\n", + " 2.5576, 2.5093, 2.5980, 2.4989, 2.4456, 2.4790, 2.5272, 2.4325, 2.4741,\n", + " 2.5627, 2.5311, 2.6303, 2.6347, 2.7207, 2.6550, 2.6576, 2.7529, 2.6773,\n", + " 2.6674, 2.4180, 2.4203, 2.3377, 2.2189, 2.0284, 1.2999, 1.8482, 1.6953,\n", + " 1.6361, 1.5875, 1.5909, 1.4895, 1.3936, 0.8006, 0.7922, 1.3835, 2.0019,\n", + " 2.2415, 1.5638, 2.1816]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2588, 0.7031, 0.6505, 0.7006, 0.7413, -0.3844, -0.3352, -0.4544,\n", + " -0.0504, -0.4749, -0.2308, -0.1746, -1.0858, -0.6471, 0.4962, 0.8146,\n", + " 0.2832, 0.0876, 1.5070, 0.8792, -0.0422, 0.6118, 0.0453, 2.4004,\n", + " 0.5395, -0.0747, -0.4106, -0.9987, -0.5931, -0.1259, -3.0231, -1.2793,\n", + " 0.3457, 0.5275, 0.8685, -0.1547, 0.0213, -0.6143, 0.9794, -0.2350,\n", + " -0.2231, -0.1487, -0.4221]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4652, 0.4002, 0.1798, 0.2526, 0.0750, -0.2264, -0.4159, -0.4738,\n", + " -0.2677, -0.3411, -0.3324, 0.2130, 0.2140, 0.3790, 0.1935, 0.3309,\n", + " 0.2129, 0.1084, 0.0705, 0.1556, 0.0399, 0.0799, 0.0122, 0.0236,\n", + " 0.0408, 0.0123, -0.0290, 0.0016, 0.2954, 0.2958, 0.2812, 0.2441,\n", + " 0.3259, 0.2632, 0.1802, 0.2252, -0.0750, -0.0133, 0.0453, -0.3275,\n", + " -0.3194, -0.3251, -0.3211]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 8.277687447844073e-05\n", + "Grad encoder.fc1.bias: 0.0001867965329438448\n", + "Grad encoder.encoder.0.weight: 2.0404389942996204e-05\n", + "Grad encoder.encoder.0.bias: 0.00023546835291199386\n", + "Grad encoder.encoder.2.weight: 1.4971113159845117e-05\n", + "Grad encoder.encoder.2.bias: 0.00016723523731343448\n", + "Grad encoder.encoder.4.weight: 4.358579099061899e-05\n", + "Grad encoder.encoder.4.bias: 0.00020853598834946752\n", + "Grad decoder.fc1.0.weight: 1.991466706385836e-05\n", + "Grad decoder.fc1.0.bias: 0.00012671788863372058\n", + "Grad decoder.fc1.2.weight: 2.673339804459829e-05\n", + "Grad decoder.fc1.2.bias: 0.00015619049372617155\n", + "Grad decoder.fc1.4.weight: 2.6185804017586634e-05\n", + "Grad decoder.fc1.4.bias: 0.0001829103275667876\n", + "Grad decoder.fc2.weight: 7.953939348226413e-05\n", + "Grad decoder.fc2.bias: 0.0018627324607223272\n", + "Grad _memory_unit.weight_ih_l0: 2.9184020604589023e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.872357516840566e-06\n", + "Grad _memory_unit.bias_hh_l0: 3.5289056086185155e-06\n", + "Grad _memory_unit.weight_ih_l1: 9.55665200308431e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.1105397536302917e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.0566029231995344e-05\n", + "Data X Sample: tensor([[1.5393, 1.6284, 1.7686, 1.9395, 1.9943, 2.1849, 2.1985, 2.8179, 4.2156,\n", + " 4.4185, 4.2953, 4.2144, 3.9925, 3.8307, 3.8560, 3.6254, 3.6117, 3.6424,\n", + " 3.4279, 3.5874, 3.6068, 3.4155, 2.9737, 2.8382, 2.8040, 2.9201, 2.9383,\n", + " 2.8958, 2.9731, 3.1605, 3.0761, 3.2994, 3.6917, 2.7691, 4.5150, 4.8499,\n", + " 5.0362, 5.4622, 5.8884, 5.7792, 1.1216, 0.6592, 0.6285, 1.1654, 1.7680,\n", + " 1.9042, 1.2782, 1.9157]], device='cuda:0')\n", + "Data Y Sample: tensor([[-5.4397e-01, -2.2488e-01, -1.9183e-01, -3.8667e-01, -1.0109e+00,\n", + " 2.8331e-01, 1.7370e-01, 3.4237e-01, 4.1999e-01, 1.0675e-01,\n", + " -2.3265e-01, -6.8471e+00, -7.9853e-02, -4.4374e-02, -8.2083e+00,\n", + " -9.2152e-01, -6.5568e-02, -6.4613e-01, -2.8206e-01, -1.8819e-01,\n", + " -1.2394e+00, -2.9503e-02, 5.3843e-03, -1.0081e-01, -6.5127e-03,\n", + " 1.0875e+00, 1.2745e-01, 2.8804e-01, -5.1171e-01, 1.2652e-01,\n", + " -3.5678e-01, -5.6805e-01, -2.2235e-01, -6.2432e-01, -5.4590e-01,\n", + " 7.8402e-02, 2.8984e-01, -1.3986e-02, 7.3323e-01, 2.7009e-02,\n", + " -7.9185e-03, 3.1206e-01, 1.4959e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2283, -0.2989, -0.0870, -0.1538, 0.0227, 0.1279, 0.1619, 0.2446,\n", + " 0.1957, 0.2451, 0.2255, -0.1529, -0.1787, -0.2600, -0.2176, -0.3050,\n", + " -0.2724, -0.0689, -0.0728, -0.1365, -0.1133, -0.0677, -0.1075, -0.0429,\n", + " -0.0098, -0.0110, -0.0172, -0.1411, -0.2002, -0.2300, -0.2250, -0.1690,\n", + " -0.2832, -0.3076, -0.1927, -0.1462, -0.0444, 0.0029, 0.0352, 0.3013,\n", + " 0.3232, 0.3540, 0.2433]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00043830834329128265\n", + "Grad encoder.fc1.bias: 0.000457580026704818\n", + "Grad encoder.encoder.0.weight: 6.937434955034405e-05\n", + "Grad encoder.encoder.0.bias: 0.00041219894774258137\n", + "Grad encoder.encoder.2.weight: 5.4076837841421366e-05\n", + "Grad encoder.encoder.2.bias: 0.00045918210525996983\n", + "Grad encoder.encoder.4.weight: 0.0001368229859508574\n", + "Grad encoder.encoder.4.bias: 0.0009032469242811203\n", + "Grad decoder.fc1.0.weight: 4.841378904529847e-05\n", + "Grad decoder.fc1.0.bias: 0.00031375320395454764\n", + "Grad decoder.fc1.2.weight: 5.194167169975117e-05\n", + "Grad decoder.fc1.2.bias: 0.0004222747520543635\n", + "Grad decoder.fc1.4.weight: 4.7441011702176183e-05\n", + "Grad decoder.fc1.4.bias: 0.00040906781214289367\n", + "Grad decoder.fc2.weight: 9.360938565805554e-05\n", + "Grad decoder.fc2.bias: 0.0016278886469081044\n", + "Grad _memory_unit.weight_ih_l0: 8.287101081805304e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.34038416238036e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.491486546001397e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.879710109482403e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.81142628309317e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.3889387850649655e-05\n", + "Data X Sample: tensor([[1.5106, 1.7580, 1.9369, 1.9548, 2.0831, 2.2173, 2.3665, 2.3708, 2.4434,\n", + " 2.6460, 2.5156, 2.5201, 2.4567, 2.4784, 2.4538, 2.3495, 2.3617, 2.4470,\n", + " 2.4202, 2.3377, 2.3579, 2.3806, 2.3568, 2.3725, 2.4399, 2.4917, 2.4935,\n", + " 2.5369, 2.2619, 2.3286, 2.2537, 2.1941, 2.3012, 1.4418, 1.9634, 1.7804,\n", + " 1.6420, 1.5318, 1.5656, 1.5746, 1.1788, 0.7348, 0.7053, 1.3232, 1.8949,\n", + " 2.0014, 1.2782, 1.7906]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 6.5748e-01, 4.2265e-01, -9.0811e-01, 6.9638e-01, 2.8337e-01,\n", + " -1.9578e+00, -2.3900e-01, -8.1511e-01, -6.9144e-01, -7.8841e-01,\n", + " -6.3424e-01, 1.0959e+00, 1.5263e-01, -2.4014e-01, -1.0259e+00,\n", + " 5.3445e-01, 2.5804e+00, 5.0793e-01, -5.0715e-01, -3.2727e-01,\n", + " 1.5456e-02, 7.4837e-01, -2.8529e-01, 7.5779e-01, 3.2093e+00,\n", + " -7.7863e-01, 3.3726e-01, 6.7763e-01, 2.6013e-01, 3.9304e-01,\n", + " 4.0018e-01, 9.4691e-01, 4.5109e-01, 5.8186e-01, 3.5558e-01,\n", + " 4.0102e-01, -1.0781e-03, -6.5324e-01, 1.2072e+00, -4.9426e-01,\n", + " -3.8546e-01, -3.0437e-01, -7.1446e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5268, 0.4396, 0.1930, 0.3055, 0.0831, -0.2423, -0.4685, -0.5404,\n", + " -0.2994, -0.3790, -0.3727, 0.2369, 0.2507, 0.4297, 0.2204, 0.3812,\n", + " 0.2330, 0.1357, 0.0837, 0.1832, 0.0467, 0.0956, 0.0401, 0.0515,\n", + " 0.0386, 0.0006, -0.0409, 0.0124, 0.3381, 0.3340, 0.3156, 0.2717,\n", + " 0.3671, 0.3056, 0.2163, 0.2548, -0.0877, -0.0116, 0.0393, -0.3735,\n", + " -0.3754, -0.3612, -0.3668]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004679247213061899\n", + "Grad encoder.fc1.bias: 0.0003449202049523592\n", + "Grad encoder.encoder.0.weight: 0.00011938952229684219\n", + "Grad encoder.encoder.0.bias: 0.00034665429848246276\n", + "Grad encoder.encoder.2.weight: 7.49387254472822e-05\n", + "Grad encoder.encoder.2.bias: 0.0002873037592507899\n", + "Grad encoder.encoder.4.weight: 0.00021207798272371292\n", + "Grad encoder.encoder.4.bias: 0.0006980354664847255\n", + "Grad decoder.fc1.0.weight: 7.100889342837036e-05\n", + "Grad decoder.fc1.0.bias: 0.00033871259074658155\n", + "Grad decoder.fc1.2.weight: 7.899184129200876e-05\n", + "Grad decoder.fc1.2.bias: 0.0009386249003000557\n", + "Grad decoder.fc1.4.weight: 0.00010387251677457243\n", + "Grad decoder.fc1.4.bias: 0.0009724614792503417\n", + "Grad decoder.fc2.weight: 0.00016480457270517945\n", + "Grad decoder.fc2.bias: 0.002780596259981394\n", + "Grad _memory_unit.weight_ih_l0: 1.0582926734059583e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.94734124711249e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.4810076865833253e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.696110176562797e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010051218851003796\n", + "Grad _memory_unit.bias_hh_l1: 5.379275535233319e-05\n", + "Data X Sample: tensor([[1.2932, 1.3589, 1.5973, 1.6880, 1.7587, 1.9064, 1.9566, 2.1706, 1.9211,\n", + " 3.3300, 4.0479, 4.0839, 3.9614, 3.8770, 3.7501, 3.6144, 3.5316, 3.4548,\n", + " 3.3474, 3.3307, 3.2903, 3.3114, 2.9496, 2.8363, 2.7026, 2.7477, 2.7332,\n", + " 2.9284, 2.7198, 2.9312, 2.9291, 3.0175, 3.5311, 2.4807, 4.3238, 4.5604,\n", + " 4.8690, 5.2263, 5.8123, 5.5608, 0.9641, 0.5257, 0.6144, 0.9874, 1.3676,\n", + " 1.6697, 1.0266, 1.6420]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2668, -0.1910, 1.1282, 0.2782, 0.1088, 1.2006, -0.4893, -0.3217,\n", + " -1.3077, -0.2149, -0.3977, 0.4891, 0.7973, 0.5709, 0.9106, 0.4228,\n", + " 0.4973, 0.3169, 1.7512, -0.9486, 1.1576, 0.0693, 0.5397, 0.0287,\n", + " -0.6052, -0.6228, -0.5204, 0.7892, -1.3326, 0.1881, -0.2810, -0.6846,\n", + " -0.1941, 0.4097, -0.4777, 0.2782, 1.0549, -0.8959, -0.5181, -0.7730,\n", + " -0.2791, -0.1936, 0.0738]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2205, -0.2964, -0.0818, -0.1420, 0.0357, 0.1323, 0.1617, 0.2411,\n", + " 0.2098, 0.2529, 0.2238, -0.1545, -0.1790, -0.2568, -0.2166, -0.3083,\n", + " -0.2749, -0.0681, -0.0663, -0.1305, -0.1125, -0.0675, -0.1084, -0.0460,\n", + " -0.0088, -0.0087, -0.0267, -0.1485, -0.2125, -0.2454, -0.2294, -0.1713,\n", + " -0.2959, -0.3076, -0.1965, -0.1443, -0.0467, 0.0058, 0.0326, 0.2973,\n", + " 0.3219, 0.3515, 0.2410]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0009468448115512729\n", + "Grad encoder.fc1.bias: 0.0007015801966190338\n", + "Grad encoder.encoder.0.weight: 0.00013687867613043636\n", + "Grad encoder.encoder.0.bias: 0.0006537785520777106\n", + "Grad encoder.encoder.2.weight: 0.00010460625344421715\n", + "Grad encoder.encoder.2.bias: 0.0009307475411333144\n", + "Grad encoder.encoder.4.weight: 0.00030126445926725864\n", + "Grad encoder.encoder.4.bias: 0.0024617735762149096\n", + "Grad decoder.fc1.0.weight: 9.315719216829166e-05\n", + "Grad decoder.fc1.0.bias: 0.0006039150757715106\n", + "Grad decoder.fc1.2.weight: 6.491564272437245e-05\n", + "Grad decoder.fc1.2.bias: 0.0009623938240110874\n", + "Grad decoder.fc1.4.weight: 5.476565274875611e-05\n", + "Grad decoder.fc1.4.bias: 0.0006792870117351413\n", + "Grad decoder.fc2.weight: 0.00011464104318292812\n", + "Grad decoder.fc2.bias: 0.0017707865918055177\n", + "Grad _memory_unit.weight_ih_l0: 2.855413367797155e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.44058600300923e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.866479866905138e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.048824742611032e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00022091891150921583\n", + "Grad _memory_unit.bias_hh_l1: 0.00011217856081202626\n", + "Data X Sample: tensor([[2.0633, 1.6997, 1.7611, 1.7711, 1.8884, 2.0346, 2.4666, 4.3185, 4.3230,\n", + " 4.3885, 4.4952, 4.4169, 4.1478, 3.9616, 3.8636, 3.7731, 3.7014, 3.6966,\n", + " 3.6324, 3.5018, 3.3786, 3.4583, 3.3014, 2.9108, 2.7627, 2.7712, 2.7972,\n", + " 2.8183, 2.7129, 2.8133, 3.0621, 3.0590, 3.4607, 2.5906, 4.3508, 4.8523,\n", + " 5.0499, 5.5311, 6.0152, 6.0204, 1.1072, 0.6671, 0.6306, 1.1051, 1.6253,\n", + " 1.6697, 1.1082, 1.6577]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0956, -0.3954, -1.4040, -0.3438, 0.9430, 0.6881, 0.0861, 0.1672,\n", + " 0.3494, 0.4299, 0.0595, 0.4836, 0.0902, -0.2798, 1.6595, -1.5682,\n", + " -1.0226, 0.0036, -0.3217, -0.1355, -0.6264, -0.3169, 0.1246, -0.2288,\n", + " -0.2297, 2.4106, 0.3845, 0.5065, -0.3329, -0.0642, -1.1676, -0.3321,\n", + " -0.2486, -0.1363, 0.2809, 0.7346, 0.1137, 0.8024, 0.0000, 0.4923,\n", + " 0.2050, 0.1534, 0.4701]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1949, -0.2697, -0.0770, -0.1568, 0.0004, 0.0979, 0.1287, 0.2144,\n", + " 0.1764, 0.2217, 0.1895, -0.1338, -0.1529, -0.2184, -0.1926, -0.2756,\n", + " -0.2570, -0.0659, -0.0575, -0.1183, -0.1011, -0.0647, -0.0991, -0.0450,\n", + " -0.0105, -0.0034, -0.0080, -0.1084, -0.1707, -0.2115, -0.1938, -0.1454,\n", + " -0.2536, -0.2670, -0.1667, -0.1275, -0.0438, 0.0071, 0.0231, 0.2691,\n", + " 0.2975, 0.3095, 0.2182]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00040226461715064943\n", + "Grad encoder.fc1.bias: 0.0005378430359996855\n", + "Grad encoder.encoder.0.weight: 0.00011763148359023035\n", + "Grad encoder.encoder.0.bias: 0.0006573149585165083\n", + "Grad encoder.encoder.2.weight: 7.67960591474548e-05\n", + "Grad encoder.encoder.2.bias: 0.0005333662265911698\n", + "Grad encoder.encoder.4.weight: 0.0002468955935910344\n", + "Grad encoder.encoder.4.bias: 0.0013121142983436584\n", + "Grad decoder.fc1.0.weight: 6.511643732665107e-05\n", + "Grad decoder.fc1.0.bias: 0.0003406045725569129\n", + "Grad decoder.fc1.2.weight: 6.240307993721217e-05\n", + "Grad decoder.fc1.2.bias: 0.0005055980873294175\n", + "Grad decoder.fc1.4.weight: 5.5028172937454656e-05\n", + "Grad decoder.fc1.4.bias: 0.0005871797911822796\n", + "Grad decoder.fc2.weight: 0.0001703168236417696\n", + "Grad decoder.fc2.bias: 0.0017700898461043835\n", + "Grad _memory_unit.weight_ih_l0: 4.585449914884521e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.620975490368437e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.932726814236958e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.1237469809420872e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.355622801696882e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.7273512134561315e-05\n", + "Data X Sample: tensor([[ 0.0000, 0.0029, -0.0030, 0.0109, 0.0000, 0.0015, -0.0077, -0.0028,\n", + " 0.0000, 0.0063, -0.0063, 0.0039, -0.0022, 0.0000, -0.0151, 0.0027,\n", + " -0.0220, -0.0155, -0.0103, -0.0130, 0.0000, -0.0077, -0.0072, 0.0115,\n", + " -0.0075, -0.0209, -0.0053, -0.0449, -0.0347, 0.0164, 0.0000, -0.0055,\n", + " -0.0110, -0.0183, 0.0123, 0.0413, -0.0138, -0.0027, 0.0190, 0.0028,\n", + " 0.0143, 0.0239, 0.0141, -0.0258, 0.0238, 0.0457, -0.0340, -0.0313]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.7281, 0.8548, 0.6023, 0.9644, -0.2537, -0.1324, -1.2970, -1.2739,\n", + " -1.0805, -1.3796, -1.1917, 0.1072, 0.0998, 2.1879, 0.9514, 0.0596,\n", + " 1.4761, -0.3012, 0.4755, -0.6348, 0.4947, -0.3385, 0.2533, 0.3740,\n", + " -0.4153, 0.4526, 0.9758, 0.1113, 0.7250, 0.6211, 0.9175, 0.8909,\n", + " 1.0464, 0.4258, -1.0304, -1.5892, -0.9172, -0.6616, -0.5596, -0.8319,\n", + " -0.8381, -0.7208, 0.2932]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.9926, 0.6766, 0.2729, 0.4886, -0.3901, -0.6878, -1.1890, -1.1601,\n", + " -0.8086, -0.9444, -0.9265, 0.4334, 0.4176, 0.6925, 0.3547, 0.5746,\n", + " 0.3149, -0.0491, 0.0947, 0.1957, 0.1755, 0.1364, 0.0572, 0.0911,\n", + " 0.0495, -0.0933, 0.2612, 0.4182, 0.9697, 0.9265, 0.8206, 0.5623,\n", + " 0.7631, 0.6137, 0.4350, 0.4417, -0.1125, 0.0550, 0.1588, -0.8237,\n", + " -0.7771, -0.6218, -0.4598]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00026886790874414146\n", + "Grad encoder.fc1.bias: 0.00035202185972593725\n", + "Grad encoder.encoder.0.weight: 6.472086533904076e-05\n", + "Grad encoder.encoder.0.bias: 0.00046739180106669664\n", + "Grad encoder.encoder.2.weight: 4.51637533842586e-05\n", + "Grad encoder.encoder.2.bias: 0.00038880144711583853\n", + "Grad encoder.encoder.4.weight: 0.0001229193585459143\n", + "Grad encoder.encoder.4.bias: 0.0006807781755924225\n", + "Grad decoder.fc1.0.weight: 3.615946843638085e-05\n", + "Grad decoder.fc1.0.bias: 0.00022593494213651866\n", + "Grad decoder.fc1.2.weight: 4.753289249492809e-05\n", + "Grad decoder.fc1.2.bias: 0.00029297510627657175\n", + "Grad decoder.fc1.4.weight: 5.355828034225851e-05\n", + "Grad decoder.fc1.4.bias: 0.00045458695967681706\n", + "Grad decoder.fc2.weight: 0.00012538809096440673\n", + "Grad decoder.fc2.bias: 0.00221621454693377\n", + "Grad _memory_unit.weight_ih_l0: 5.590788532572333e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.7948805179912597e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.05672823137138e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.8654631048775627e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.904109664494172e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.4573118935222737e-05\n", + "Data X Sample: tensor([[2.0591, 1.6881, 1.8963, 2.0881, 2.1633, 2.1554, 3.1753, 4.0303, 4.2425,\n", + " 4.2400, 4.2414, 4.3624, 4.0124, 3.8498, 3.8156, 3.7676, 3.7077, 3.6927,\n", + " 3.6055, 3.4163, 3.4203, 3.2027, 2.8508, 2.8382, 2.8021, 2.8757, 2.7385,\n", + " 2.8754, 2.9210, 3.1081, 3.0726, 3.2497, 3.4299, 2.5585, 4.2699, 4.6237,\n", + " 4.8159, 5.2793, 5.8821, 5.7821, 1.2361, 0.7149, 0.6770, 1.2544, 1.8869,\n", + " 2.0757, 1.2374, 1.8610]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1433, 0.4316, 0.2981, 0.5574, -0.1174, -0.0720, 0.3474, 0.0809,\n", + " -0.5552, 0.3589, 0.1335, 0.2409, 0.0151, -0.2169, 0.0939, -0.7037,\n", + " 0.4764, -0.0570, -0.6517, -1.0294, 0.7108, 0.9356, 0.8454, 2.9517,\n", + " 0.9188, 0.7495, 1.5727, -0.4065, -0.5595, -0.5508, -0.2518, 0.6163,\n", + " 0.4484, -0.5121, -1.0367, -0.2617, -0.8471, 0.5269, -0.5596, 0.2402,\n", + " 0.3160, 0.2857, -0.0849]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1695, -0.2450, -0.0707, -0.1612, -0.0215, 0.0752, 0.1018, 0.1915,\n", + " 0.1557, 0.2003, 0.1605, -0.1164, -0.1304, -0.1855, -0.1710, -0.2515,\n", + " -0.2424, -0.0636, -0.0472, -0.1074, -0.0898, -0.0625, -0.0911, -0.0464,\n", + " -0.0130, 0.0009, 0.0033, -0.0788, -0.1421, -0.1902, -0.1670, -0.1243,\n", + " -0.2263, -0.2322, -0.1456, -0.1115, -0.0416, 0.0102, 0.0124, 0.2418,\n", + " 0.2771, 0.2744, 0.2007]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0009457548148930073\n", + "Grad encoder.fc1.bias: 0.0006937742000445724\n", + "Grad encoder.encoder.0.weight: 0.00012987497029826045\n", + "Grad encoder.encoder.0.bias: 0.0007854304276406765\n", + "Grad encoder.encoder.2.weight: 9.512445103609934e-05\n", + "Grad encoder.encoder.2.bias: 0.0011980540584772825\n", + "Grad encoder.encoder.4.weight: 0.00028281702543608844\n", + "Grad encoder.encoder.4.bias: 0.003441817592829466\n", + "Grad decoder.fc1.0.weight: 0.0001042221556417644\n", + "Grad decoder.fc1.0.bias: 0.000853337871376425\n", + "Grad decoder.fc1.2.weight: 7.018657925073057e-05\n", + "Grad decoder.fc1.2.bias: 0.0016651186160743237\n", + "Grad decoder.fc1.4.weight: 7.027022365946323e-05\n", + "Grad decoder.fc1.4.bias: 0.0008361935615539551\n", + "Grad decoder.fc2.weight: 0.00017333652067463845\n", + "Grad decoder.fc2.bias: 0.0016868540551513433\n", + "Grad _memory_unit.weight_ih_l0: 4.0887829527491704e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00013400951866060495\n", + "Grad _memory_unit.bias_hh_l0: 9.158323518931866e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.0476019926718436e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00033531931694597006\n", + "Grad _memory_unit.bias_hh_l1: 0.00017427964485250413\n", + "Data X Sample: tensor([[1.5032, 1.8396, 1.9399, 2.1122, 2.2641, 2.2688, 2.3356, 2.3268, 2.3556,\n", + " 2.4249, 2.4712, 2.4032, 2.3435, 2.3175, 2.2924, 2.3071, 2.2815, 2.3696,\n", + " 2.3417, 2.3600, 2.4536, 2.5306, 2.4700, 2.5615, 2.5543, 2.5753, 2.4109,\n", + " 2.5410, 1.9948, 2.0208, 1.8267, 1.7658, 1.5642, 0.9474, 1.4192, 1.3912,\n", + " 1.3451, 1.3331, 1.3184, 1.3391, 1.2457, 0.7368, 0.7296, 1.3548, 1.8552,\n", + " 2.0700, 1.3598, 1.7906]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2998, 0.2628, 0.1448, 0.5925, -0.8361, 0.4001, 0.0420, -0.0270,\n", + " 0.2172, -0.0183, -0.2187, 0.0680, -1.1870, -0.3896, 0.0525, -0.0655,\n", + " 0.5692, 0.9309, -0.1535, -0.6462, -0.5320, -0.0545, -0.6466, -0.2401,\n", + " 0.3920, 0.4338, -0.2862, -0.3770, -0.0769, -0.1466, -0.9696, 0.3501,\n", + " 0.3005, 0.5012, 0.8065, -0.5716, -0.0107, -0.0869, 0.5046, -0.1398,\n", + " -0.0971, -0.1182, 0.3338]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3550, 0.2687, 0.1125, 0.1483, 0.0350, -0.1737, -0.3319, -0.3337,\n", + " -0.1856, -0.2426, -0.2429, 0.1625, 0.1447, 0.2751, 0.1368, 0.2305,\n", + " 0.1052, 0.0638, 0.0809, 0.1207, 0.0316, 0.0524, 0.0137, 0.0323,\n", + " 0.0430, 0.0184, -0.0126, 0.0174, 0.2158, 0.2019, 0.2169, 0.1727,\n", + " 0.2358, 0.1823, 0.1370, 0.1664, -0.0750, -0.0162, 0.0295, -0.2353,\n", + " -0.2160, -0.2173, -0.2016]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00033188442466780543\n", + "Grad encoder.fc1.bias: 0.00023132571368478239\n", + "Grad encoder.encoder.0.weight: 5.5358475947286934e-05\n", + "Grad encoder.encoder.0.bias: 0.00025228297454304993\n", + "Grad encoder.encoder.2.weight: 3.982490306952968e-05\n", + "Grad encoder.encoder.2.bias: 0.00032960460521280766\n", + "Grad encoder.encoder.4.weight: 0.00011395264300517738\n", + "Grad encoder.encoder.4.bias: 0.000800281937699765\n", + "Grad decoder.fc1.0.weight: 3.992992787971161e-05\n", + "Grad decoder.fc1.0.bias: 0.0002690571127459407\n", + "Grad decoder.fc1.2.weight: 4.182323027634993e-05\n", + "Grad decoder.fc1.2.bias: 0.00038634054362773895\n", + "Grad decoder.fc1.4.weight: 3.5174351069144905e-05\n", + "Grad decoder.fc1.4.bias: 0.000396901072235778\n", + "Grad decoder.fc2.weight: 7.691550126764923e-05\n", + "Grad decoder.fc2.bias: 0.00173147302120924\n", + "Grad _memory_unit.weight_ih_l0: 6.3500483520329e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.589756902831141e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.0969190043397248e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.668219167389907e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.681359081994742e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.323958662804216e-05\n", + "Data X Sample: tensor([[1.6029, 1.8323, 2.0210, 1.9898, 2.1941, 2.3263, 2.3125, 2.3168, 2.3751,\n", + " 2.4280, 2.3507, 2.3935, 2.3546, 2.2930, 2.1966, 2.3481, 2.2752, 2.2826,\n", + " 2.4037, 2.4660, 2.5223, 2.5260, 2.5279, 2.6397, 2.5206, 2.6537, 2.5281,\n", + " 2.6715, 2.4284, 2.4170, 2.3972, 2.4676, 2.1340, 1.3456, 1.8825, 1.7366,\n", + " 1.6145, 1.4815, 1.5719, 1.5491, 1.3029, 0.7667, 0.7518, 1.3032, 1.9504,\n", + " 2.0014, 1.4074, 2.0955]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2081, 0.4652, 0.0200, -1.1395, 0.5896, 0.6586, 1.0758, 0.2903,\n", + " 0.2630, 0.2184, 0.4293, 1.3765, -0.9407, 0.9166, 0.0617, -0.2900,\n", + " -0.8523, -0.4625, 0.1915, 0.8328, 0.6150, -1.1198, 1.3343, 0.4676,\n", + " 0.1865, 0.0317, 0.0692, 0.3427, 1.0862, 0.2904, -1.5285, -0.5596,\n", + " -0.8633, -0.7236, 0.5713, -1.9252, 0.0501, -0.0920, -0.7130, 0.6159,\n", + " 1.6717, -0.9725, 0.5063]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4867, 0.3856, 0.1511, 0.2576, 0.0923, -0.2104, -0.4262, -0.4687,\n", + " -0.2562, -0.3534, -0.3226, 0.2362, 0.2109, 0.3746, 0.2131, 0.3601,\n", + " 0.1831, 0.1004, 0.1171, 0.1704, 0.0597, 0.0918, 0.0525, 0.0647,\n", + " 0.0683, 0.0075, -0.0360, 0.0237, 0.2828, 0.3114, 0.3030, 0.2328,\n", + " 0.3438, 0.2753, 0.1987, 0.2400, -0.0873, -0.0288, 0.0551, -0.3423,\n", + " -0.3507, -0.3271, -0.2940]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00017103685240726918\n", + "Grad encoder.fc1.bias: 8.385589171666652e-05\n", + "Grad encoder.encoder.0.weight: 4.8487650929018855e-05\n", + "Grad encoder.encoder.0.bias: 8.53566889418289e-05\n", + "Grad encoder.encoder.2.weight: 2.697798663575668e-05\n", + "Grad encoder.encoder.2.bias: 0.0001258432457689196\n", + "Grad encoder.encoder.4.weight: 9.429811325389892e-05\n", + "Grad encoder.encoder.4.bias: 0.0004211377527099103\n", + "Grad decoder.fc1.0.weight: 3.666021802928299e-05\n", + "Grad decoder.fc1.0.bias: 0.0002170265361201018\n", + "Grad decoder.fc1.2.weight: 3.7782439903821796e-05\n", + "Grad decoder.fc1.2.bias: 0.0001763737527653575\n", + "Grad decoder.fc1.4.weight: 3.2756408472778276e-05\n", + "Grad decoder.fc1.4.bias: 0.0002538361004553735\n", + "Grad decoder.fc2.weight: 8.293322753161192e-05\n", + "Grad decoder.fc2.bias: 0.0017823996022343636\n", + "Grad _memory_unit.weight_ih_l0: 2.2745307433069684e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.5910436559352092e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.353456905751955e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.5739864238639711e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.910632560495287e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.4957189452834427e-05\n", + "Data X Sample: tensor([[1.5456, 1.7915, 1.9429, 1.8586, 2.1036, 2.2349, 2.1338, 2.0698, 3.6566,\n", + " 4.2115, 4.2985, 4.2845, 4.1744, 3.9097, 3.7450, 3.8114, 3.7643, 3.6908,\n", + " 3.7026, 3.5874, 3.6706, 3.2976, 3.0074, 2.9585, 2.8471, 2.9932, 3.1062,\n", + " 3.1160, 3.2402, 3.4487, 3.4645, 3.5094, 3.9249, 2.7759, 4.6155, 5.0615,\n", + " 5.1246, 5.5682, 6.1229, 5.9778, 1.3316, 0.6791, 0.7397, 1.2429, 1.7006,\n", + " 1.8584, 1.2238, 1.7437]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2897, -0.3403, 0.2081, 0.1379, 0.3398, 2.9102, 0.4668, 0.6370,\n", + " 0.5716, 0.4205, 0.7039, -0.3155, 0.2404, 0.0241, -0.7520, -0.8538,\n", + " -0.2384, -0.6181, -0.4003, -0.2714, -0.7021, -0.5481, 0.0409, 0.4625,\n", + " 0.4815, -0.5257, -0.2271, -0.6067, -0.9149, -0.3089, -0.6468, -0.2366,\n", + " -0.4900, -0.5284, 0.1446, -1.8412, 0.9392, 0.7348, 0.3478, 0.4218,\n", + " 0.2696, 0.9638, 0.2064]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1675, -0.2516, -0.0609, -0.1220, 0.0277, 0.1175, 0.1228, 0.2036,\n", + " 0.2045, 0.2358, 0.1807, -0.1344, -0.1476, -0.2065, -0.1835, -0.2848,\n", + " -0.2552, -0.0643, -0.0426, -0.1097, -0.0931, -0.0661, -0.0936, -0.0553,\n", + " -0.0139, 0.0019, -0.0290, -0.1167, -0.1933, -0.2394, -0.2000, -0.1471,\n", + " -0.2811, -0.2538, -0.1757, -0.1200, -0.0428, 0.0162, 0.0088, 0.2481,\n", + " 0.2906, 0.2983, 0.2193]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.008763712830841541\n", + "Grad encoder.fc1.bias: 0.005516075529158115\n", + "Grad encoder.encoder.0.weight: 0.0013303017476573586\n", + "Grad encoder.encoder.0.bias: 0.007074791472405195\n", + "Grad encoder.encoder.2.weight: 0.0009473764803260565\n", + "Grad encoder.encoder.2.bias: 0.009812106378376484\n", + "Grad encoder.encoder.4.weight: 0.002376774325966835\n", + "Grad encoder.encoder.4.bias: 0.026034321635961533\n", + "Grad decoder.fc1.0.weight: 0.0006651096045970917\n", + "Grad decoder.fc1.0.bias: 0.004848215728998184\n", + "Grad decoder.fc1.2.weight: 0.00020042533287778497\n", + "Grad decoder.fc1.2.bias: 0.006372205913066864\n", + "Grad decoder.fc1.4.weight: 0.00012570389662869275\n", + "Grad decoder.fc1.4.bias: 0.0029097148217260838\n", + "Grad decoder.fc2.weight: 0.00021609525720123202\n", + "Grad decoder.fc2.bias: 0.0026838518679142\n", + "Grad _memory_unit.weight_ih_l0: 0.0002874887140933424\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0007701689610257745\n", + "Grad _memory_unit.bias_hh_l0: 0.0005506005836650729\n", + "Grad _memory_unit.weight_ih_l1: 0.00012769163004122674\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.002151784487068653\n", + "Grad _memory_unit.bias_hh_l1: 0.001107349875383079\n", + "Data X Sample: tensor([[1.3674, 1.5963, 1.7941, 1.9220, 2.0319, 2.0906, 2.1045, 2.1578, 2.0285,\n", + " 2.0868, 2.0937, 2.1111, 1.9374, 1.8649, 1.7855, 1.6835, 1.7846, 1.7777,\n", + " 1.7553, 1.6682, 1.6415, 1.5722, 1.5254, 1.4640, 1.4508, 1.3869, 1.3426,\n", + " 1.4153, 1.0754, 1.0644, 1.0219, 0.9920, 0.9064, 0.6362, 0.9290, 0.9778,\n", + " 1.0934, 1.1476, 1.3057, 1.2625, 1.1788, 0.6791, 0.6588, 1.2285, 1.7125,\n", + " 1.9099, 1.3190, 1.8062]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.8882, -1.6930, -0.1656, -0.8883, -0.3196, 0.2282, 2.2784, 2.5330,\n", + " 1.8614, 2.8930, 4.6713, -2.3099, -1.4631, -2.7857, -1.3510, -2.7381,\n", + " -2.8159, -1.1832, -0.9863, -0.9443, -0.8641, -0.3443, -0.6766, -0.6429,\n", + " -0.4166, -0.1565, 1.1937, -0.6770, -0.7765, -2.0317, -2.4137, -2.6089,\n", + " -3.0925, -4.0452, -1.6007, -1.2440, -0.8282, -0.1543, -0.5562, 8.2123,\n", + " 6.9819, 4.2890, 4.4770]], device='cuda:0')\n", + "Prediction Sample: tensor([[-2.1608, -1.8728, -0.9578, -1.3879, -0.7878, 0.0637, 1.9553, 2.8492,\n", + " 2.1222, 3.5410, 5.0418, -0.6493, -1.1912, -2.1227, -1.8632, -3.0995,\n", + " -2.2951, -1.0149, -0.4267, -0.8992, -0.5328, -0.1000, -0.3650, -0.2052,\n", + " -0.3248, -0.2013, 0.7450, 0.0638, -0.5657, -1.6475, -1.8969, -1.7481,\n", + " -2.1432, -3.3629, -1.6503, -1.5866, -0.1578, 0.2018, -0.0248, 7.6643,\n", + " 7.0977, 5.2981, 4.0317]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 7.414868014166132e-05\n", + "Grad encoder.fc1.bias: 0.00014015586930327117\n", + "Grad encoder.encoder.0.weight: 1.6124053217936307e-05\n", + "Grad encoder.encoder.0.bias: 0.00016687973402440548\n", + "Grad encoder.encoder.2.weight: 1.3269750525068957e-05\n", + "Grad encoder.encoder.2.bias: 0.0001752335374476388\n", + "Grad encoder.encoder.4.weight: 4.7964538680389524e-05\n", + "Grad encoder.encoder.4.bias: 0.0004969888832420111\n", + "Grad decoder.fc1.0.weight: 2.6615514798322693e-05\n", + "Grad decoder.fc1.0.bias: 0.00022401061141863465\n", + "Grad decoder.fc1.2.weight: 2.9959530365886167e-05\n", + "Grad decoder.fc1.2.bias: 0.00028716580709442496\n", + "Grad decoder.fc1.4.weight: 3.26658773701638e-05\n", + "Grad decoder.fc1.4.bias: 0.00027288959245197475\n", + "Grad decoder.fc2.weight: 0.00014810073480475694\n", + "Grad decoder.fc2.bias: 0.0017549707554280758\n", + "Grad _memory_unit.weight_ih_l0: 3.8496095839946065e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.9452194464975037e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.0706901775847655e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.8802450085786404e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.431205136119388e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.761226278380491e-05\n", + "Data X Sample: tensor([[2.0633, 2.6130, 2.6822, 2.8753, 2.8463, 2.9730, 3.0182, 3.1274, 3.2661,\n", + " 3.2590, 3.3912, 3.5250, 3.4376, 3.3917, 3.4020, 3.3546, 3.3382, 3.3716,\n", + " 3.2689, 3.1708, 3.1504, 2.9608, 2.9207, 2.7581, 2.5956, 2.5962, 2.5920,\n", + " 2.5246, 2.3070, 2.2173, 2.1802, 2.2051, 2.0592, 1.4028, 2.3703, 2.5320,\n", + " 2.7196, 2.8278, 3.0107, 2.9279, 1.7086, 0.9678, 0.9782, 1.6792, 2.5054,\n", + " 2.7733, 1.9241, 2.5334]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1425, 0.0793, -0.4389, -0.4038, 0.2560, 0.6513, -0.4857, 0.1497,\n", + " -0.4014, -0.5216, -0.4118, -0.3038, -0.2235, -0.2719, -0.1500, 0.0767,\n", + " -1.7765, -1.6937, -0.0936, -0.5595, 0.1419, -0.0191, 0.7518, 0.2410,\n", + " 0.5660, -0.1746, -0.0606, 0.0448, 0.0430, -0.7112, -0.5555, -0.5025,\n", + " 0.3644, -0.0401, 1.5377, -0.3718, -0.8287, -0.7928, -0.7130, 1.0818,\n", + " 0.1178, 0.3685, -0.3020]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2347, -0.2926, -0.1097, -0.2734, -0.1487, 0.0117, 0.0654, 0.2147,\n", + " 0.1102, 0.2027, 0.1962, -0.1046, -0.1452, -0.1933, -0.1652, -0.2648,\n", + " -0.2499, -0.1178, -0.0861, -0.1153, -0.1180, -0.0792, -0.0679, -0.0441,\n", + " 0.0099, -0.0253, 0.0850, -0.0032, -0.0780, -0.1434, -0.1535, -0.1250,\n", + " -0.1743, -0.2274, -0.1041, -0.1466, -0.0479, 0.0018, 0.0067, 0.3427,\n", + " 0.3231, 0.2902, 0.2487]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.002151526976376772\n", + "Grad encoder.fc1.bias: 0.0008670586976222694\n", + "Grad encoder.encoder.0.weight: 0.00034042264451272786\n", + "Grad encoder.encoder.0.bias: 0.0010644150897860527\n", + "Grad encoder.encoder.2.weight: 0.00025138078490272164\n", + "Grad encoder.encoder.2.bias: 0.0017055680509656668\n", + "Grad encoder.encoder.4.weight: 0.000687615480273962\n", + "Grad encoder.encoder.4.bias: 0.004516805987805128\n", + "Grad decoder.fc1.0.weight: 0.00022112725127954036\n", + "Grad decoder.fc1.0.bias: 0.0013087334809824824\n", + "Grad decoder.fc1.2.weight: 0.0001925802935147658\n", + "Grad decoder.fc1.2.bias: 0.0031863402109593153\n", + "Grad decoder.fc1.4.weight: 0.00011124779848614708\n", + "Grad decoder.fc1.4.bias: 0.0018403928261250257\n", + "Grad decoder.fc2.weight: 0.00014735620061401278\n", + "Grad decoder.fc2.bias: 0.0023579823318868876\n", + "Grad _memory_unit.weight_ih_l0: 6.453991954913363e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00013069878332316875\n", + "Grad _memory_unit.bias_hh_l0: 0.00010095434845425189\n", + "Grad _memory_unit.weight_ih_l1: 2.3387910914607346e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.000491890124976635\n", + "Grad _memory_unit.bias_hh_l1: 0.00024745948030613363\n", + "Data X Sample: tensor([[2.5715, 2.9756, 3.2892, 3.3454, 3.3842, 3.5255, 3.7068, 3.7804, 3.7054,\n", + " 3.9888, 3.9115, 3.8989, 3.8637, 3.6998, 3.6189, 3.5502, 3.5331, 3.5360,\n", + " 3.4445, 3.3326, 3.3541, 3.1368, 2.8845, 2.7962, 2.7908, 2.8600, 2.8078,\n", + " 2.9733, 2.8482, 2.8854, 3.0446, 2.8628, 3.0493, 2.2107, 3.6522, 4.0205,\n", + " 4.2279, 4.4975, 5.2672, 5.0501, 1.9329, 1.0475, 1.1520, 2.0150, 2.8027,\n", + " 3.1050, 2.1485, 3.1981]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2043, 0.1274, -1.3690, -0.7007, -0.5682, 0.9061, 0.0106, 0.1918,\n", + " -0.1780, 0.2590, -0.0266, 0.0449, 0.4286, -0.1055, -0.3653, 0.4745,\n", + " 0.5533, 0.9483, 1.4622, 0.8691, 1.0361, 0.4709, 1.6980, 0.7144,\n", + " 0.9814, 0.5801, 0.0903, 0.4029, 0.3303, -0.6228, -0.9166, 1.0258,\n", + " -0.0316, 0.0119, -1.1755, -0.1583, -0.4532, -0.3631, 0.0000, 0.2056,\n", + " 0.4066, 0.3804, 0.3056]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1951, -0.2523, -0.0795, -0.2060, -0.0673, 0.0584, 0.1040, 0.2226,\n", + " 0.1282, 0.1895, 0.1843, -0.1270, -0.1291, -0.1925, -0.1767, -0.2410,\n", + " -0.2370, -0.0708, -0.0760, -0.1095, -0.0982, -0.0676, -0.0684, -0.0322,\n", + " -0.0025, 0.0186, 0.0162, -0.0566, -0.1167, -0.1499, -0.1699, -0.1384,\n", + " -0.2026, -0.2390, -0.1168, -0.1323, -0.0373, 0.0036, 0.0135, 0.2809,\n", + " 0.2882, 0.2924, 0.2171]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.006177894771099091\n", + "Grad encoder.fc1.bias: 0.002770323771983385\n", + "Grad encoder.encoder.0.weight: 0.0009299206431023777\n", + "Grad encoder.encoder.0.bias: 0.0035989475436508656\n", + "Grad encoder.encoder.2.weight: 0.0007232151692733169\n", + "Grad encoder.encoder.2.bias: 0.005924086086452007\n", + "Grad encoder.encoder.4.weight: 0.0019216462969779968\n", + "Grad encoder.encoder.4.bias: 0.016401026397943497\n", + "Grad decoder.fc1.0.weight: 0.0006012660451233387\n", + "Grad decoder.fc1.0.bias: 0.0037411621306091547\n", + "Grad decoder.fc1.2.weight: 0.0003822732251137495\n", + "Grad decoder.fc1.2.bias: 0.007621270604431629\n", + "Grad decoder.fc1.4.weight: 0.00020901404786854982\n", + "Grad decoder.fc1.4.bias: 0.003634994151070714\n", + "Grad decoder.fc2.weight: 0.0002845301351044327\n", + "Grad decoder.fc2.bias: 0.00267855916172266\n", + "Grad _memory_unit.weight_ih_l0: 0.0002260843466501683\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00045850532478652894\n", + "Grad _memory_unit.bias_hh_l0: 0.0003669462166726589\n", + "Grad _memory_unit.weight_ih_l1: 8.522526331944391e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0014634141698479652\n", + "Grad _memory_unit.bias_hh_l1: 0.0007607093430124223\n", + "Data X Sample: tensor([[1.6072, 1.8177, 2.0871, 2.2368, 2.3597, 2.5178, 2.4943, 2.6306, 2.7046,\n", + " 2.7297, 2.7440, 2.7791, 2.7097, 2.7483, 2.5370, 2.5915, 2.5457, 2.6365,\n", + " 2.5503, 2.5590, 2.5591, 2.5459, 2.5809, 2.5462, 2.5337, 2.6563, 2.5840,\n", + " 2.5940, 2.3035, 2.4694, 2.4252, 2.4041, 2.3628, 1.5196, 2.0124, 1.9239,\n", + " 1.8033, 1.7227, 1.7177, 1.6001, 1.2457, 0.7408, 0.7660, 1.4237, 2.0614,\n", + " 2.0986, 1.4210, 1.9861]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4600, 0.3426, -0.4534, 0.0184, -0.1150, 0.8158, -0.5602, -0.1941,\n", + " -1.3909, -0.0991, -0.1929, 0.6586, 0.1310, 0.3640, 0.9568, 0.7737,\n", + " 0.2115, -0.3177, -0.4562, 0.4743, 0.0267, 0.4347, 0.8693, -1.4850,\n", + " 0.1862, -0.6162, 0.5027, -0.0293, 0.4563, 0.6784, 0.2121, 0.0116,\n", + " 0.2552, 0.7945, 0.3941, 1.4017, 0.0000, 0.1511, 1.8119, -0.1193,\n", + " -0.1091, -0.3744, -0.4022]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.0915, -0.0056, -0.0079, -0.0514, -0.0495, -0.0839, -0.1474, -0.0826,\n", + " -0.0501, -0.0498, -0.0474, 0.0540, 0.0100, 0.0559, 0.0085, 0.0043,\n", + " -0.0833, -0.0238, 0.0175, -0.0019, -0.0338, -0.0093, -0.0021, 0.0030,\n", + " 0.0185, -0.0164, 0.0428, 0.0256, 0.0872, 0.0806, 0.0593, 0.0417,\n", + " 0.0489, 0.0086, 0.0208, 0.0295, -0.0717, -0.0140, 0.0339, 0.0128,\n", + " 0.0154, 0.0143, 0.0231]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.002667413791641593\n", + "Grad encoder.fc1.bias: 0.0013336279662325978\n", + "Grad encoder.encoder.0.weight: 0.0004516093176789582\n", + "Grad encoder.encoder.0.bias: 0.0015222992515191436\n", + "Grad encoder.encoder.2.weight: 0.0002994521055370569\n", + "Grad encoder.encoder.2.bias: 0.0022306099999696016\n", + "Grad encoder.encoder.4.weight: 0.0007461648201569915\n", + "Grad encoder.encoder.4.bias: 0.005526460707187653\n", + "Grad decoder.fc1.0.weight: 0.00021453772205859423\n", + "Grad decoder.fc1.0.bias: 0.0012928313808515668\n", + "Grad decoder.fc1.2.weight: 0.00015357974916696548\n", + "Grad decoder.fc1.2.bias: 0.0031351845245808363\n", + "Grad decoder.fc1.4.weight: 0.0001443739456590265\n", + "Grad decoder.fc1.4.bias: 0.0025566003751009703\n", + "Grad decoder.fc2.weight: 0.0002334988967049867\n", + "Grad decoder.fc2.bias: 0.0033550893422216177\n", + "Grad _memory_unit.weight_ih_l0: 5.0011549319606274e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.00011238350998610258\n", + "Grad _memory_unit.bias_hh_l0: 8.780290954746306e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.7272024453850463e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0003912222455255687\n", + "Grad _memory_unit.bias_hh_l1: 0.0002062908315565437\n", + "Data X Sample: tensor([[1.4958, 1.7303, 1.8467, 1.9788, 2.1036, 2.2467, 2.3279, 2.4659, 2.4190,\n", + " 2.5086, 2.5442, 2.5084, 2.5388, 2.4729, 2.4362, 2.3235, 2.2894, 2.3657,\n", + " 2.3231, 2.3860, 2.4585, 2.5367, 2.4845, 2.5443, 2.5543, 2.5753, 2.4748,\n", + " 2.6021, 2.3799, 2.3941, 2.3412, 2.3018, 2.2660, 1.4875, 1.9168, 1.7828,\n", + " 1.5712, 1.4629, 1.5402, 1.5094, 1.1836, 0.7129, 0.6912, 1.2544, 1.8156,\n", + " 1.9556, 1.2918, 2.0799]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3951, 0.0962, 0.7212, 0.6207, 1.3412, -0.3434, -0.4862, -0.1291,\n", + " 0.2781, -0.0816, -0.0624, 1.7349, 0.8122, -0.6368, 0.3671, 1.0494,\n", + " -0.0262, 0.6721, 1.9509, 1.5691, -1.1129, -0.3904, 0.4618, 0.0739,\n", + " -1.4856, 0.3877, -0.6910, 0.0776, -0.1197, 1.1875, 0.8488, 0.5925,\n", + " 0.1730, 0.2109, 0.6863, 0.6524, 0.0000, -0.0751, -1.8131, -0.0988,\n", + " -0.3475, -0.1804, -1.0561]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3568, 0.2477, 0.0934, 0.1547, 0.0244, -0.1694, -0.3383, -0.3277,\n", + " -0.1650, -0.2226, -0.2234, 0.1722, 0.1597, 0.2533, 0.1502, 0.2210,\n", + " 0.0911, 0.0593, 0.0803, 0.1050, 0.0234, 0.0330, 0.0464, 0.0458,\n", + " 0.0424, 0.0132, -0.0042, 0.0394, 0.2289, 0.2228, 0.2200, 0.1764,\n", + " 0.2382, 0.1928, 0.1447, 0.1427, -0.0797, -0.0368, 0.0164, -0.2186,\n", + " -0.2165, -0.1975, -0.1760]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005627351347357035\n", + "Grad encoder.fc1.bias: 0.0002961450954899192\n", + "Grad encoder.encoder.0.weight: 0.0001056706314557232\n", + "Grad encoder.encoder.0.bias: 0.00031937449239194393\n", + "Grad encoder.encoder.2.weight: 6.507940997835249e-05\n", + "Grad encoder.encoder.2.bias: 0.0003825761959888041\n", + "Grad encoder.encoder.4.weight: 0.00016153251635842025\n", + "Grad encoder.encoder.4.bias: 0.0008062560809776187\n", + "Grad decoder.fc1.0.weight: 4.59314433101099e-05\n", + "Grad decoder.fc1.0.bias: 0.0002623078180477023\n", + "Grad decoder.fc1.2.weight: 4.091988375876099e-05\n", + "Grad decoder.fc1.2.bias: 0.0003959185560233891\n", + "Grad decoder.fc1.4.weight: 4.7579647798556834e-05\n", + "Grad decoder.fc1.4.bias: 0.0005824919207952917\n", + "Grad decoder.fc2.weight: 7.387765072053298e-05\n", + "Grad decoder.fc2.bias: 0.0018219968769699335\n", + "Grad _memory_unit.weight_ih_l0: 5.8642208387027495e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.4218345313565806e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.004855857900111e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.3495001642004354e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.350483115762472e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.6481988243176602e-05\n", + "Data X Sample: tensor([[1.4417, 1.5876, 1.8197, 1.9788, 1.9755, 2.1230, 2.2247, 2.1337, 3.8348,\n", + " 4.3758, 4.3841, 4.1521, 4.1567, 3.8661, 3.6568, 3.5625, 3.5473, 3.5186,\n", + " 3.6241, 3.5632, 3.5602, 3.3527, 2.9833, 2.8669, 2.8697, 2.8522, 2.9570,\n", + " 2.9407, 3.0390, 3.1016, 3.1986, 3.4348, 3.7731, 2.7759, 4.5518, 4.8645,\n", + " 5.0971, 5.4834, 5.9835, 5.7849, 1.1216, 0.6532, 0.6669, 1.1568, 1.6372,\n", + " 1.9270, 1.3258, 1.8297]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0627, -1.0769, -0.0886, -1.3070, -0.9503, 0.5107, 0.4434, 0.8497,\n", + " -0.1060, 0.7306, 0.4852, 0.1506, -0.4826, 0.1836, -0.6687, -1.0818,\n", + " -0.5647, -0.8381, 0.3078, 0.2243, -0.6351, -0.0176, -0.3434, 0.2767,\n", + " 1.1553, 0.4899, 0.8565, 0.2263, -1.1350, -0.9269, 1.1162, -0.0717,\n", + " -1.1414, -0.4038, -0.2086, 0.1046, -1.0105, -0.0751, 0.0040, 0.8504,\n", + " 0.8135, 0.5363, 0.7669]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2274, -0.2962, -0.0691, -0.1166, 0.0601, 0.1790, 0.1836, 0.2754,\n", + " 0.2605, 0.2874, 0.2650, -0.1925, -0.1860, -0.2684, -0.2349, -0.3407,\n", + " -0.2800, -0.0787, -0.0863, -0.1209, -0.1136, -0.0794, -0.0811, -0.0539,\n", + " 0.0032, 0.0109, -0.0636, -0.1777, -0.2571, -0.2819, -0.2772, -0.2160,\n", + " -0.3510, -0.3272, -0.2022, -0.1719, -0.0463, 0.0116, 0.0206, 0.3266,\n", + " 0.3428, 0.3855, 0.2709]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004115196061320603\n", + "Grad encoder.fc1.bias: 0.0002501306589692831\n", + "Grad encoder.encoder.0.weight: 8.909424650482833e-05\n", + "Grad encoder.encoder.0.bias: 0.00031136508914642036\n", + "Grad encoder.encoder.2.weight: 5.636713467538357e-05\n", + "Grad encoder.encoder.2.bias: 0.00038797734305262566\n", + "Grad encoder.encoder.4.weight: 0.00014931170153431594\n", + "Grad encoder.encoder.4.bias: 0.0008668764494359493\n", + "Grad decoder.fc1.0.weight: 4.470383282750845e-05\n", + "Grad decoder.fc1.0.bias: 0.00021955369447823614\n", + "Grad decoder.fc1.2.weight: 4.314794932724908e-05\n", + "Grad decoder.fc1.2.bias: 0.00046722032129764557\n", + "Grad decoder.fc1.4.weight: 5.400342706707306e-05\n", + "Grad decoder.fc1.4.bias: 0.0006011700606904924\n", + "Grad decoder.fc2.weight: 0.0001375920110149309\n", + "Grad decoder.fc2.bias: 0.002534247701987624\n", + "Grad _memory_unit.weight_ih_l0: 6.270826361287618e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.1666761313099414e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.4343160728458315e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.862283847411163e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.258572491584346e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.7677986508933827e-05\n", + "Data X Sample: tensor([[1.5372, 1.7886, 2.0255, 2.1690, 2.2777, 2.4368, 2.5298, 2.5724, 2.6802,\n", + " 2.6318, 2.6362, 2.7421, 2.5877, 2.6010, 2.5269, 2.5423, 2.5441, 2.5862,\n", + " 2.5379, 2.4753, 2.4732, 2.4831, 2.4242, 2.4317, 2.4755, 2.4500, 2.4722,\n", + " 2.5736, 2.2966, 2.4432, 2.3412, 2.3267, 2.3100, 1.4578, 1.9928, 1.9482,\n", + " 1.7089, 1.6776, 1.6290, 1.5633, 1.2313, 0.7428, 0.7134, 1.3577, 1.8473,\n", + " 2.2187, 1.5026, 2.1346]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4047, 0.1362, -0.7005, 1.5048, 0.4427, -0.5914, -0.6620, -0.5245,\n", + " -0.4786, -0.4643, -0.3655, -0.7284, 0.6925, -0.6833, 0.4932, 0.7757,\n", + " -0.0787, 0.9921, -0.5595, 0.5771, 0.7569, 0.1809, 0.8571, 0.7545,\n", + " 0.3443, -0.4758, -0.0970, -0.1343, 0.0919, 0.0783, -0.1127, 0.7344,\n", + " 0.5063, 0.1540, 0.3738, 0.7026, 0.7063, -0.7815, -0.7678, -0.2847,\n", + " -0.3722, -0.6519, -0.7108]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4697, 0.3608, 0.1345, 0.2591, 0.0752, -0.1967, -0.4251, -0.4452,\n", + " -0.2156, -0.3073, -0.2857, 0.2370, 0.2239, 0.3311, 0.2205, 0.3285,\n", + " 0.1673, 0.0953, 0.1131, 0.1518, 0.0498, 0.0515, 0.0843, 0.0699,\n", + " 0.0672, 0.0159, -0.0301, 0.0457, 0.2859, 0.3109, 0.3030, 0.2322,\n", + " 0.3335, 0.2825, 0.2067, 0.1916, -0.0797, -0.0531, 0.0253, -0.3087,\n", + " -0.3307, -0.3008, -0.2627]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004454937297850847\n", + "Grad encoder.fc1.bias: 0.0003347419551573694\n", + "Grad encoder.encoder.0.weight: 7.383294723695144e-05\n", + "Grad encoder.encoder.0.bias: 0.0004377233562991023\n", + "Grad encoder.encoder.2.weight: 6.939241575310007e-05\n", + "Grad encoder.encoder.2.bias: 0.0010246385354548693\n", + "Grad encoder.encoder.4.weight: 0.00016249000327661633\n", + "Grad encoder.encoder.4.bias: 0.002353833056986332\n", + "Grad decoder.fc1.0.weight: 7.715397805441171e-05\n", + "Grad decoder.fc1.0.bias: 0.0006172198336571455\n", + "Grad decoder.fc1.2.weight: 7.217961683636531e-05\n", + "Grad decoder.fc1.2.bias: 0.0015061900485306978\n", + "Grad decoder.fc1.4.weight: 7.992541941348463e-05\n", + "Grad decoder.fc1.4.bias: 0.0007368660299107432\n", + "Grad decoder.fc2.weight: 0.00015590520342811942\n", + "Grad decoder.fc2.bias: 0.0016383357578888535\n", + "Grad _memory_unit.weight_ih_l0: 2.4385537471971475e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.420362039236352e-05\n", + "Grad _memory_unit.bias_hh_l0: 6.101346662035212e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.5782246919116005e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002158563438570127\n", + "Grad _memory_unit.bias_hh_l1: 0.00011325096420478076\n", + "Data X Sample: tensor([[1.6443, 2.0027, 2.0751, 2.2412, 2.2914, 2.4206, 2.5328, 2.5354, 2.4825,\n", + " 2.4865, 2.6362, 2.6992, 2.4634, 2.4320, 2.4538, 2.5464, 2.4671, 2.5514,\n", + " 2.5565, 2.5887, 2.6597, 2.6730, 2.6773, 2.7313, 2.6501, 2.7347, 2.8105,\n", + " 2.6552, 2.3070, 2.4662, 2.2677, 2.1526, 2.0130, 1.3136, 1.8065, 1.7342,\n", + " 1.6538, 1.5742, 1.5656, 1.4952, 1.3745, 0.8205, 0.7983, 1.4007, 2.0812,\n", + " 2.1043, 1.5910, 2.2597]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0657, -0.5317, 0.7073, 0.0501, -0.2795, -0.7563, 0.3303, 0.3870,\n", + " -0.1538, -0.2067, -0.1678, 0.4295, 0.0273, -1.7381, -2.0391, -0.4696,\n", + " -0.9942, -0.4717, 0.5383, 0.6141, 0.4405, 1.3640, 1.3998, 0.9994,\n", + " 0.8448, 0.0226, -1.3488, -0.9523, 0.6286, 0.1367, 0.7990, -0.8404,\n", + " -0.2533, -1.0659, 0.6665, 0.6482, 0.8233, -0.0557, 0.2870, 1.4639,\n", + " 0.3853, -0.0405, 0.3215]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5639, 0.4435, 0.1632, 0.3495, 0.1055, -0.2217, -0.5003, -0.5497,\n", + " -0.2589, -0.3722, -0.3393, 0.2877, 0.2796, 0.3955, 0.2750, 0.4089,\n", + " 0.2256, 0.1317, 0.1362, 0.1847, 0.0667, 0.0671, 0.1210, 0.0937,\n", + " 0.0772, 0.0116, -0.0463, 0.0570, 0.3403, 0.3842, 0.3693, 0.2822,\n", + " 0.4065, 0.3556, 0.2575, 0.2307, -0.0833, -0.0627, 0.0253, -0.3836,\n", + " -0.4238, -0.3788, -0.3329]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00033357046777382493\n", + "Grad encoder.fc1.bias: 0.0004251150239724666\n", + "Grad encoder.encoder.0.weight: 7.954466855153441e-05\n", + "Grad encoder.encoder.0.bias: 0.0003073393600061536\n", + "Grad encoder.encoder.2.weight: 4.053426891914569e-05\n", + "Grad encoder.encoder.2.bias: 0.0002551208599470556\n", + "Grad encoder.encoder.4.weight: 0.0001349925878457725\n", + "Grad encoder.encoder.4.bias: 0.0006843435112386942\n", + "Grad decoder.fc1.0.weight: 3.958132219850086e-05\n", + "Grad decoder.fc1.0.bias: 0.00014793500304222107\n", + "Grad decoder.fc1.2.weight: 4.226236342219636e-05\n", + "Grad decoder.fc1.2.bias: 0.00019486155360937119\n", + "Grad decoder.fc1.4.weight: 6.716763891745359e-05\n", + "Grad decoder.fc1.4.bias: 0.0003822053549811244\n", + "Grad decoder.fc2.weight: 0.00011390772124286741\n", + "Grad decoder.fc2.bias: 0.0021072488743811846\n", + "Grad _memory_unit.weight_ih_l0: 4.30506452175905e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.3698339646216482e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.2174600669823121e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.348011096524715e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.020756230398547e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.5176187844190281e-05\n", + "Data X Sample: tensor([[1.5043, 1.7434, 1.9414, 1.9285, 2.0045, 2.1834, 2.1508, 2.1862, 2.2018,\n", + " 2.2874, 2.3570, 2.4285, 2.2259, 2.3120, 2.2369, 2.3248, 2.2799, 2.2555,\n", + " 2.2612, 2.3191, 2.3628, 2.4586, 2.4339, 2.4317, 2.4962, 2.5910, 2.4588,\n", + " 2.4920, 2.2272, 2.5055, 2.3972, 2.4373, 2.2330, 1.4463, 1.8849, 1.7804,\n", + " 1.6695, 1.5239, 1.5846, 1.5207, 1.2313, 0.7129, 0.7053, 1.2859, 1.7759,\n", + " 1.9842, 1.3054, 1.8062]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7848, 0.7868, 1.5912, -0.6856, -1.0015, -0.8693, -0.7869, -0.9222,\n", + " -1.0497, -0.2950, -0.5827, -0.2143, -0.1941, 0.6226, 0.4664, -0.1015,\n", + " 0.3640, 0.4584, 0.4944, -0.2299, -1.0020, 0.8247, 0.3506, 0.0770,\n", + " 1.1311, -0.4710, 0.8847, 0.3446, 0.9889, 1.0933, 0.7938, 1.2114,\n", + " 1.1480, 0.4221, 0.1235, 0.3495, -0.5893, -0.4097, -0.4066, -0.7269,\n", + " -0.4756, -0.4882, -0.8497]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.7369, 0.5993, 0.2202, 0.5100, 0.1577, -0.2790, -0.6395, -0.7432,\n", + " -0.3391, -0.4911, -0.4393, 0.3862, 0.3785, 0.5140, 0.3773, 0.5516,\n", + " 0.3365, 0.1940, 0.1743, 0.2460, 0.0997, 0.0989, 0.1828, 0.1317,\n", + " 0.0992, 0.0037, -0.0781, 0.0722, 0.4459, 0.5184, 0.4950, 0.3719,\n", + " 0.5406, 0.4915, 0.3487, 0.3023, -0.0832, -0.0746, 0.0304, -0.5203,\n", + " -0.5926, -0.5222, -0.4594]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002310667186975479\n", + "Grad encoder.fc1.bias: 0.00025830476079136133\n", + "Grad encoder.encoder.0.weight: 6.0138103435747325e-05\n", + "Grad encoder.encoder.0.bias: 0.00024787249276414514\n", + "Grad encoder.encoder.2.weight: 4.1048770071938634e-05\n", + "Grad encoder.encoder.2.bias: 0.00031686079455539584\n", + "Grad encoder.encoder.4.weight: 0.0001101378002204001\n", + "Grad encoder.encoder.4.bias: 0.0007819277234375477\n", + "Grad decoder.fc1.0.weight: 4.345290653873235e-05\n", + "Grad decoder.fc1.0.bias: 0.00024019488773774356\n", + "Grad decoder.fc1.2.weight: 5.694673745892942e-05\n", + "Grad decoder.fc1.2.bias: 0.00022868286760058254\n", + "Grad decoder.fc1.4.weight: 6.946305074961856e-05\n", + "Grad decoder.fc1.4.bias: 0.0002965416060760617\n", + "Grad decoder.fc2.weight: 9.4757997430861e-05\n", + "Grad decoder.fc2.bias: 0.0024326564744114876\n", + "Grad _memory_unit.weight_ih_l0: 3.5826742532663047e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.8273854948347434e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.772152225195896e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.4796322602705914e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.730770888272673e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.3300270186155103e-05\n", + "Data X Sample: tensor([[1.4226, 1.7099, 1.8693, 2.0969, 2.1872, 2.2585, 2.4004, 2.4063, 2.5020,\n", + " 2.5291, 2.5759, 2.5941, 2.5233, 2.4756, 2.4488, 2.3016, 2.2847, 2.4238,\n", + " 2.3521, 2.3209, 2.4168, 2.3790, 2.4580, 2.4374, 2.4436, 2.5544, 2.5041,\n", + " 2.4961, 2.2723, 2.3843, 2.3132, 2.3682, 2.2352, 1.5196, 1.9511, 1.7950,\n", + " 1.6105, 1.4815, 1.5719, 1.5377, 1.2552, 0.6851, 0.6912, 1.2429, 1.7958,\n", + " 2.0242, 1.4142, 2.0408]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 5.4656e-01, 2.8613e+00, 4.1208e-01, 7.3587e-02, -6.7123e-01,\n", + " -1.2085e+00, -8.0517e-01, -6.8194e-01, -1.4189e-01, -4.1253e-01,\n", + " -6.3974e-01, 5.6174e-01, 2.7049e-01, 2.3141e-01, 1.0804e-01,\n", + " -1.8018e-01, 5.5975e-01, -2.8411e-01, 2.1750e-01, -1.4169e-02,\n", + " -1.9996e-01, 2.0894e-01, -1.0598e-01, 4.5999e-01, -5.3464e-01,\n", + " -1.7269e-03, 1.1573e+00, 1.2486e+00, 5.3665e-01, 9.2888e-01,\n", + " 9.1334e-01, 1.8039e+00, 7.8903e-01, 9.4007e-01, -2.9606e-01,\n", + " -2.1259e-01, 9.3923e-01, 0.0000e+00, 6.4338e-01, -8.2532e-01,\n", + " -5.7438e-01, -6.4680e-01, 2.0349e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.8119, 0.6718, 0.2506, 0.5796, 0.1758, -0.3033, -0.6995, -0.8228,\n", + " -0.3726, -0.5403, -0.4826, 0.4275, 0.4204, 0.5637, 0.4221, 0.6079,\n", + " 0.3877, 0.2202, 0.1910, 0.2745, 0.1162, 0.1138, 0.2107, 0.1429,\n", + " 0.1093, 0.0035, -0.0894, 0.0790, 0.4886, 0.5751, 0.5501, 0.4120,\n", + " 0.5962, 0.5515, 0.3902, 0.3304, -0.0762, -0.0765, 0.0295, -0.5784,\n", + " -0.6613, -0.5872, -0.5181]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007400411413982511\n", + "Grad encoder.fc1.bias: 0.0006593018770217896\n", + "Grad encoder.encoder.0.weight: 0.0001526575069874525\n", + "Grad encoder.encoder.0.bias: 0.00044198139221407473\n", + "Grad encoder.encoder.2.weight: 9.776874503586441e-05\n", + "Grad encoder.encoder.2.bias: 0.0004786300123669207\n", + "Grad encoder.encoder.4.weight: 0.0002930101181846112\n", + "Grad encoder.encoder.4.bias: 0.0008401891100220382\n", + "Grad decoder.fc1.0.weight: 8.315064042108133e-05\n", + "Grad decoder.fc1.0.bias: 0.00038559536915272474\n", + "Grad decoder.fc1.2.weight: 0.00010550850129220635\n", + "Grad decoder.fc1.2.bias: 0.0004019759362563491\n", + "Grad decoder.fc1.4.weight: 0.00013964439858682454\n", + "Grad decoder.fc1.4.bias: 0.0007690446218475699\n", + "Grad decoder.fc2.weight: 0.0001477126934332773\n", + "Grad decoder.fc2.bias: 0.002264277543872595\n", + "Grad _memory_unit.weight_ih_l0: 7.586788797198096e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.5158478820230812e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.394429818901699e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.8544473025249317e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.458699110429734e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.645525430329144e-05\n", + "Data X Sample: tensor([[1.6708, 1.7871, 2.0000, 2.2259, 2.4092, 2.5119, 2.5560, 2.6888, 2.6607,\n", + " 2.7124, 2.8392, 2.8005, 2.6764, 2.6038, 2.5320, 2.5519, 2.5504, 2.5785,\n", + " 2.5709, 2.4864, 2.5395, 2.6316, 2.5737, 2.5214, 2.5938, 2.6458, 2.5308,\n", + " 2.5613, 2.3833, 2.3876, 2.4007, 2.4124, 2.3232, 1.5173, 2.0075, 1.8777,\n", + " 1.6990, 1.6723, 1.7114, 1.5718, 1.2218, 0.7448, 0.7397, 1.3232, 1.9226,\n", + " 2.2301, 1.5230, 2.0955]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3963, 0.2409, 1.5734, 1.5058, 1.2426, -0.7302, -0.6329, -0.7758,\n", + " -0.6698, -0.3812, -0.4871, -3.1421, 0.8985, 1.0866, 0.0527, -1.0509,\n", + " 0.4512, -1.4660, 2.4840, 1.4488, -1.5985, -0.8854, -0.7990, 2.6381,\n", + " -5.0146, -0.0419, -0.1656, -1.2709, 0.3816, 0.8407, -0.0771, 0.8874,\n", + " 0.3090, 0.8928, -0.0357, 0.4262, 0.0637, 0.1005, -0.7367, -0.4556,\n", + " -0.6486, -0.9079, -1.2030]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.8476, 0.7138, 0.2727, 0.6218, 0.1986, -0.3072, -0.7243, -0.8604,\n", + " -0.3883, -0.5686, -0.5015, 0.4546, 0.4422, 0.5909, 0.4500, 0.6432,\n", + " 0.4157, 0.2322, 0.2083, 0.2944, 0.1307, 0.1226, 0.2283, 0.1509,\n", + " 0.1202, 0.0014, -0.0990, 0.0885, 0.5015, 0.6085, 0.5798, 0.4341,\n", + " 0.6289, 0.5845, 0.4130, 0.3499, -0.0653, -0.0772, 0.0331, -0.6088,\n", + " -0.6976, -0.6304, -0.5568]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002994672395288944\n", + "Grad encoder.fc1.bias: 0.00044099806109443307\n", + "Grad encoder.encoder.0.weight: 5.70991360291373e-05\n", + "Grad encoder.encoder.0.bias: 0.0003732676268555224\n", + "Grad encoder.encoder.2.weight: 4.2208841477986425e-05\n", + "Grad encoder.encoder.2.bias: 0.0002694021968636662\n", + "Grad encoder.encoder.4.weight: 0.00013038291945122182\n", + "Grad encoder.encoder.4.bias: 0.0005402699462138116\n", + "Grad decoder.fc1.0.weight: 4.494535460253246e-05\n", + "Grad decoder.fc1.0.bias: 0.00020041268726345152\n", + "Grad decoder.fc1.2.weight: 5.292417699820362e-05\n", + "Grad decoder.fc1.2.bias: 0.00023959885584190488\n", + "Grad decoder.fc1.4.weight: 6.474489055108279e-05\n", + "Grad decoder.fc1.4.bias: 0.00039436607039533556\n", + "Grad decoder.fc2.weight: 0.00010746496263891459\n", + "Grad decoder.fc2.bias: 0.002065312350168824\n", + "Grad _memory_unit.weight_ih_l0: 5.175294973014388e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.84518374025356e-06\n", + "Grad _memory_unit.bias_hh_l0: 5.434757895272924e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.8186259467256605e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.390152778592892e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.687293843133375e-05\n", + "Data X Sample: tensor([[2.4771, 2.9290, 3.1330, 3.1924, 3.2800, 3.4578, 3.5189, 3.5987, 3.7225,\n", + " 3.6886, 4.0288, 3.9184, 3.7350, 3.7162, 3.6416, 3.4955, 3.4970, 3.4335,\n", + " 3.4630, 3.2973, 3.3565, 3.1935, 3.0291, 2.8344, 2.7495, 2.7033, 2.6506,\n", + " 2.5654, 2.6019, 2.7216, 2.6106, 2.7081, 2.7303, 2.0185, 3.2993, 3.7456,\n", + " 3.8858, 4.2059, 4.5954, 4.4429, 1.8947, 1.0993, 1.1055, 2.0007, 2.8265,\n", + " 3.1164, 1.9105, 2.9948]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1417, -0.0655, -0.2849, -0.7060, 0.1275, -0.2653, -0.0379, -0.5124,\n", + " 0.0400, -0.2310, -0.0180, -0.6207, 0.3453, -0.2927, 0.6790, -0.6626,\n", + " -0.6168, -0.2092, 0.2848, -0.5284, 0.2071, 1.3516, 0.1224, -0.1544,\n", + " 6.6779, 0.6420, -0.2590, -0.1129, -1.1665, -0.4213, -0.0827, 0.2934,\n", + " -1.2308, -0.6981, -1.3594, -0.1145, -0.5002, 0.0936, 0.2630, -0.4462,\n", + " -0.4728, 0.2608, 0.0134]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.0780, -0.1421, -0.0481, -0.1867, -0.1174, -0.0204, -0.0151, 0.0971,\n", + " 0.0547, 0.0967, 0.0360, -0.0427, -0.0363, -0.0571, -0.0830, -0.1538,\n", + " -0.1840, -0.0578, -0.0089, -0.0677, -0.0415, -0.0570, -0.0505, -0.0547,\n", + " -0.0177, 0.0162, 0.0679, 0.0502, -0.0078, -0.0782, -0.0437, -0.0353,\n", + " -0.0906, -0.0794, -0.0548, -0.0602, -0.0317, 0.0193, -0.0253, 0.1317,\n", + " 0.1887, 0.1219, 0.1171]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0009104004129767418\n", + "Grad encoder.fc1.bias: 0.0005171610973775387\n", + "Grad encoder.encoder.0.weight: 0.00017308424867223948\n", + "Grad encoder.encoder.0.bias: 0.00045695557491853833\n", + "Grad encoder.encoder.2.weight: 0.0001332122483290732\n", + "Grad encoder.encoder.2.bias: 0.0005232962430454791\n", + "Grad encoder.encoder.4.weight: 0.0003700428642332554\n", + "Grad encoder.encoder.4.bias: 0.0014514855574816465\n", + "Grad decoder.fc1.0.weight: 0.00010839848982868716\n", + "Grad decoder.fc1.0.bias: 0.0003571396227926016\n", + "Grad decoder.fc1.2.weight: 0.00013831688556820154\n", + "Grad decoder.fc1.2.bias: 0.0005861123208887875\n", + "Grad decoder.fc1.4.weight: 0.00019008066738024354\n", + "Grad decoder.fc1.4.bias: 0.0012337667867541313\n", + "Grad decoder.fc2.weight: 0.00019334672833792865\n", + "Grad decoder.fc2.bias: 0.0032310562673956156\n", + "Grad _memory_unit.weight_ih_l0: 1.012231587083079e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.023130921064876e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.6612042600172572e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.293678219051799e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.984573651105165e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.425881343195215e-05\n", + "Data X Sample: tensor([[-0.0074, 0.0102, 0.0060, -0.0087, -0.0068, 0.0074, 0.0139, -0.0057,\n", + " 0.0171, 0.0142, 0.0127, 0.0117, 0.0067, -0.0082, 0.0151, 0.0055,\n", + " -0.0377, -0.0232, -0.0372, -0.0279, -0.0368, -0.0199, -0.0337, -0.0248,\n", + " -0.0150, -0.0313, -0.0160, 0.0122, -0.0347, 0.0197, 0.0000, 0.0138,\n", + " -0.0044, -0.0114, -0.0025, 0.0268, 0.0098, 0.0053, 0.0380, 0.0142,\n", + " 0.0191, 0.0080, 0.0121, 0.0086, 0.0079, 0.0000, -0.0476, -0.0078]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7286, 0.3662, 1.5813, 0.2301, 0.2604, 0.2186, -1.0876, -1.2080,\n", + " -1.5369, -0.8977, -0.7505, -0.0730, 0.0298, 0.4925, 1.3939, 0.5250,\n", + " 0.4080, 0.1852, 0.5116, 0.1711, 9.9417, 0.4370, 0.5610, 0.5912,\n", + " -0.5175, -0.5961, 0.4667, 1.2819, 0.6659, 0.7685, 1.4150, 0.4109,\n", + " -0.0858, 0.3917, 0.0738, 1.2901, 0.4138, 0.2376, 0.5686, -0.6308,\n", + " -0.9969, -0.8820, -0.8245]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 1.0361, 0.7768, 0.2825, 0.5321, -0.4476, -0.7450, -1.2926, -1.1882,\n", + " -0.8269, -0.9445, -0.9492, 0.4651, 0.5144, 0.6582, 0.5273, 0.5369,\n", + " 0.3949, -0.0566, 0.1319, 0.2470, 0.1632, 0.0710, 0.1955, 0.0760,\n", + " 0.0893, -0.0023, 0.3046, 0.5055, 1.0197, 1.0354, 0.9473, 0.6174,\n", + " 0.7877, 0.7144, 0.4743, 0.3281, -0.0326, -0.0083, 0.0604, -0.8685,\n", + " -0.8015, -0.6917, -0.4912]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00077395373955369\n", + "Grad encoder.fc1.bias: 0.0003806554013863206\n", + "Grad encoder.encoder.0.weight: 0.00017988900071941316\n", + "Grad encoder.encoder.0.bias: 0.0003892249660566449\n", + "Grad encoder.encoder.2.weight: 9.663306263973936e-05\n", + "Grad encoder.encoder.2.bias: 0.00035924024996347725\n", + "Grad encoder.encoder.4.weight: 0.0002759549533948302\n", + "Grad encoder.encoder.4.bias: 0.0012050271034240723\n", + "Grad decoder.fc1.0.weight: 7.495254976674914e-05\n", + "Grad decoder.fc1.0.bias: 0.0003380355192348361\n", + "Grad decoder.fc1.2.weight: 8.624635665910318e-05\n", + "Grad decoder.fc1.2.bias: 0.00042855192441493273\n", + "Grad decoder.fc1.4.weight: 0.00010942934022750705\n", + "Grad decoder.fc1.4.bias: 0.0007419186877086759\n", + "Grad decoder.fc2.weight: 0.0001078467394108884\n", + "Grad decoder.fc2.bias: 0.0034098257310688496\n", + "Grad _memory_unit.weight_ih_l0: 3.921350526070455e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.026574293267913e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.0835179637069814e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.0740799300256185e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.112343493849039e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.053429074701853e-05\n", + "Data X Sample: tensor([[1.4608, 1.8920, 2.1563, 2.3527, 2.4792, 2.5561, 2.6469, 2.6888, 2.8169,\n", + " 2.7140, 2.8487, 2.8784, 2.7208, 2.7619, 2.7237, 2.7023, 2.6762, 2.6481,\n", + " 2.8353, 2.8268, 2.8462, 2.7786, 2.7905, 2.6340, 2.5412, 2.3925, 2.2963,\n", + " 2.4104, 1.9080, 1.8701, 1.7918, 1.7133, 1.4630, 0.9474, 1.3481, 1.3937,\n", + " 1.4100, 1.5901, 1.8508, 1.8413, 1.3268, 0.8225, 0.7801, 1.4065, 2.1327,\n", + " 2.3044, 1.5977, 2.2363]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6639, -0.3492, -0.2028, -0.7634, 0.0378, -0.2092, -0.9084, 0.7029,\n", + " -0.4894, -0.3341, -0.4298, 1.3134, 0.9859, -1.0488, 1.1987, -0.2595,\n", + " 0.8804, 2.3076, 2.1264, 1.0817, 0.7423, 0.9043, 0.7715, 1.5386,\n", + " 1.2645, 0.2565, -0.1200, 0.1478, 1.3051, -0.4192, 0.3207, 0.1901,\n", + " -0.9958, -1.5295, 1.0702, 1.1642, 0.4246, 0.7428, -0.7130, 0.2180,\n", + " 0.5716, 1.5893, 1.0314]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4037, 0.3259, 0.1348, 0.2325, 0.0855, -0.1455, -0.3686, -0.3744,\n", + " -0.1959, -0.2823, -0.2477, 0.2144, 0.1969, 0.2873, 0.2111, 0.2833,\n", + " 0.1415, 0.0659, 0.1245, 0.1382, 0.0608, 0.0504, 0.1022, 0.0495,\n", + " 0.0746, 0.0070, -0.0209, 0.0635, 0.2277, 0.3085, 0.2857, 0.2149,\n", + " 0.3033, 0.2649, 0.1976, 0.1752, -0.0481, -0.0439, 0.0232, -0.2691,\n", + " -0.2797, -0.3031, -0.2587]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00036224591895006597\n", + "Grad encoder.fc1.bias: 0.00026343570789322257\n", + "Grad encoder.encoder.0.weight: 8.362068911083043e-05\n", + "Grad encoder.encoder.0.bias: 0.00033856171648949385\n", + "Grad encoder.encoder.2.weight: 4.929726856062189e-05\n", + "Grad encoder.encoder.2.bias: 0.00026710605015978217\n", + "Grad encoder.encoder.4.weight: 0.0001376707077724859\n", + "Grad encoder.encoder.4.bias: 0.00067532854154706\n", + "Grad decoder.fc1.0.weight: 4.009996700915508e-05\n", + "Grad decoder.fc1.0.bias: 0.0001776535646058619\n", + "Grad decoder.fc1.2.weight: 4.528124554781243e-05\n", + "Grad decoder.fc1.2.bias: 0.00025555252796038985\n", + "Grad decoder.fc1.4.weight: 5.520587001228705e-05\n", + "Grad decoder.fc1.4.bias: 0.000457492598798126\n", + "Grad decoder.fc2.weight: 0.00010570999438641593\n", + "Grad decoder.fc2.bias: 0.00182294100522995\n", + "Grad _memory_unit.weight_ih_l0: 3.085316620854428e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.939087481645402e-06\n", + "Grad _memory_unit.bias_hh_l0: 4.2516035136941355e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.2889294112028438e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.0749728213995695e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.0157473045401275e-05\n", + "Data X Sample: tensor([[1.5085, 1.7347, 1.8903, 2.0094, 2.0353, 2.2511, 2.3095, 2.4701, 2.4898,\n", + " 2.4960, 2.4934, 2.5999, 2.4501, 2.3938, 2.4992, 2.2879, 2.3051, 2.3696,\n", + " 2.3686, 2.3618, 2.2917, 2.3454, 2.3351, 2.3019, 2.2991, 2.2932, 2.3363,\n", + " 2.3085, 2.1544, 2.2762, 2.2642, 2.2659, 2.2308, 1.4967, 1.8653, 1.8071,\n", + " 1.5928, 1.4709, 1.5339, 1.5150, 1.1741, 0.7269, 0.7013, 1.1797, 1.8116,\n", + " 2.0242, 1.3666, 1.8922]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7352, 0.2142, -0.1677, 0.2457, -1.1528, -0.9728, -0.9794, -1.1390,\n", + " -0.7603, -0.4980, -1.2901, 1.4358, 0.9770, 0.6083, -0.3381, 0.3599,\n", + " -0.3581, -0.2958, 1.3558, -0.0547, -1.0367, -0.6854, -0.4229, 0.3430,\n", + " 0.8128, 0.0383, -0.7375, -0.0197, 0.4590, 0.9950, 0.4788, 1.4406,\n", + " 0.9967, 0.9743, -0.0751, 0.8835, 0.0033, -0.0911, 0.9834, -0.7443,\n", + " -1.0235, -0.5844, -0.3399]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4782, 0.3998, 0.1695, 0.3095, 0.1267, -0.1653, -0.4274, -0.4628,\n", + " -0.2392, -0.3440, -0.2927, 0.2643, 0.2423, 0.3432, 0.2692, 0.3556,\n", + " 0.1966, 0.0918, 0.1517, 0.1692, 0.0813, 0.0724, 0.1396, 0.0644,\n", + " 0.0947, -0.0029, -0.0390, 0.0789, 0.2689, 0.3829, 0.3469, 0.2574,\n", + " 0.3675, 0.3312, 0.2446, 0.2148, -0.0414, -0.0480, 0.0328, -0.3301,\n", + " -0.3593, -0.3790, -0.3307]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00017916245269589126\n", + "Grad encoder.fc1.bias: 0.00010154124174732715\n", + "Grad encoder.encoder.0.weight: 4.789940794580616e-05\n", + "Grad encoder.encoder.0.bias: 8.202463504858315e-05\n", + "Grad encoder.encoder.2.weight: 2.1797231966047548e-05\n", + "Grad encoder.encoder.2.bias: 0.0001231616479344666\n", + "Grad encoder.encoder.4.weight: 7.143073889892548e-05\n", + "Grad encoder.encoder.4.bias: 0.00020385728566907346\n", + "Grad decoder.fc1.0.weight: 3.06537767755799e-05\n", + "Grad decoder.fc1.0.bias: 0.00011246420763200149\n", + "Grad decoder.fc1.2.weight: 4.046493995701894e-05\n", + "Grad decoder.fc1.2.bias: 0.00017394960741512477\n", + "Grad decoder.fc1.4.weight: 5.575073737418279e-05\n", + "Grad decoder.fc1.4.bias: 0.0003197824116796255\n", + "Grad decoder.fc2.weight: 7.876030576881021e-05\n", + "Grad decoder.fc2.bias: 0.0015152356354519725\n", + "Grad _memory_unit.weight_ih_l0: 2.1072560230095405e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.673504347214475e-06\n", + "Grad _memory_unit.bias_hh_l0: 2.985330638693995e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.1850786449940642e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.2860403987579048e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.1570499736990314e-05\n", + "Data X Sample: tensor([[ 0.0011, 0.0044, 0.0210, 0.0131, -0.0034, 0.0192, 0.0046, 0.0071,\n", + " 0.0415, 0.0158, 0.0508, 0.0195, 0.0089, 0.0055, 0.0101, 0.0055,\n", + " -0.0755, -0.0793, -0.1012, -0.0781, -0.0810, -0.0643, -0.0892, -0.0840,\n", + " -0.0769, -0.1567, -0.1252, -0.1917, -0.0659, -0.0328, -0.0455, -0.0249,\n", + " -0.0044, -0.0572, 0.0098, 0.0438, -0.0020, -0.0186, -0.0063, -0.0113,\n", + " 0.0048, -0.0119, -0.0040, -0.0057, 0.0238, -0.0114, 0.0136, -0.0078]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7758, 0.8042, 0.4120, 0.3743, 0.3095, -1.8524, -0.7620, -1.0973,\n", + " -1.0622, -0.8721, -0.8405, 0.9775, 0.6496, -0.3166, 0.1094, 0.3348,\n", + " 0.5107, 0.7219, -0.2600, 1.2557, -0.2513, -0.2076, -0.9226, 0.7262,\n", + " 0.2162, -0.6630, -1.1481, 0.2762, 1.1208, 0.4776, 0.3700, 1.2838,\n", + " 0.4083, 0.7878, 0.1157, -0.3337, 0.0849, 0.7996, 0.0382, -0.7650,\n", + " -0.6966, -0.3076, -0.3729]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5954, 0.4974, 0.2379, 0.4185, 0.0864, -0.2469, -0.5974, -0.6675,\n", + " -0.2674, -0.3640, -0.3163, 0.3452, 0.2964, 0.4017, 0.3219, 0.3629,\n", + " 0.2987, 0.1306, 0.1823, 0.2129, 0.1042, 0.0443, 0.1264, 0.0828,\n", + " 0.1120, 0.0624, -0.0500, 0.1638, 0.4025, 0.4574, 0.4770, 0.3414,\n", + " 0.4501, 0.4432, 0.3072, 0.1943, -0.0090, -0.0177, -0.0328, -0.4212,\n", + " -0.4397, -0.4382, -0.3882]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003170474374201149\n", + "Grad encoder.fc1.bias: 0.00020600543939508498\n", + "Grad encoder.encoder.0.weight: 8.588815398979932e-05\n", + "Grad encoder.encoder.0.bias: 0.00020250641682650894\n", + "Grad encoder.encoder.2.weight: 3.986259616794996e-05\n", + "Grad encoder.encoder.2.bias: 0.00018964125774800777\n", + "Grad encoder.encoder.4.weight: 0.00010861569171538576\n", + "Grad encoder.encoder.4.bias: 0.00034073484130203724\n", + "Grad decoder.fc1.0.weight: 3.2981646654661745e-05\n", + "Grad decoder.fc1.0.bias: 0.00015890339273028076\n", + "Grad decoder.fc1.2.weight: 3.9868780731922016e-05\n", + "Grad decoder.fc1.2.bias: 0.00016365229384973645\n", + "Grad decoder.fc1.4.weight: 5.329228224582039e-05\n", + "Grad decoder.fc1.4.bias: 0.00024135393323376775\n", + "Grad decoder.fc2.weight: 8.738353062653914e-05\n", + "Grad decoder.fc2.bias: 0.001805779174901545\n", + "Grad _memory_unit.weight_ih_l0: 1.813416020013392e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.946172212949023e-06\n", + "Grad _memory_unit.bias_hh_l0: 5.288065494823968e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.0584926712908782e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.8805747206206433e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.448404054826824e-05\n", + "Data X Sample: tensor([[1.3462, 1.4638, 1.7596, 1.8848, 1.8253, 2.0876, 2.0968, 2.0485, 3.0952,\n", + " 4.1720, 4.2382, 4.2494, 4.0368, 4.0215, 3.9594, 3.6801, 3.5976, 3.6424,\n", + " 3.6282, 3.6209, 3.5479, 3.4721, 2.9592, 2.8306, 2.8659, 2.8835, 2.9703,\n", + " 3.0671, 3.0182, 3.1016, 3.2895, 3.3989, 3.9711, 2.8698, 4.6033, 4.9788,\n", + " 5.1246, 5.5894, 5.9581, 5.9296, 1.0022, 0.6472, 0.6245, 1.0678, 1.6293,\n", + " 1.9270, 1.1830, 1.7046]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1461, 0.5160, 0.4678, -0.6354, -0.6193, -0.1179, 0.4445, 0.9344,\n", + " -0.7436, -0.6043, -0.5836, -0.1133, 0.4357, -0.8338, -0.2961, 0.1547,\n", + " 0.6070, -0.5965, 0.7470, 0.3580, 1.2752, 0.6873, 1.2126, 0.8847,\n", + " 0.2798, 0.1564, -0.0930, -0.5462, 0.1201, -0.5581, 0.6369, 1.2145,\n", + " -0.7695, -0.4234, 0.4712, 0.7204, -0.4229, -0.0920, 0.7285, -0.0631,\n", + " 0.9984, -1.2589, -1.2465]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2498, -0.2783, -0.0962, -0.2140, -0.0788, 0.0944, 0.1282, 0.2738,\n", + " 0.1308, 0.1930, 0.2271, -0.1606, -0.1320, -0.2203, -0.2059, -0.2654,\n", + " -0.2315, -0.0809, -0.1057, -0.1102, -0.0953, -0.0537, -0.0374, -0.0232,\n", + " 0.0176, 0.0358, 0.0144, -0.0631, -0.1346, -0.1319, -0.1947, -0.1753,\n", + " -0.2086, -0.2474, -0.1038, -0.1676, -0.0418, -0.0064, 0.0187, 0.3306,\n", + " 0.3155, 0.3280, 0.2332]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00032708951039239764\n", + "Grad encoder.fc1.bias: 0.0007205859292298555\n", + "Grad encoder.encoder.0.weight: 8.972320210887119e-05\n", + "Grad encoder.encoder.0.bias: 0.000463304080767557\n", + "Grad encoder.encoder.2.weight: 5.094477455713786e-05\n", + "Grad encoder.encoder.2.bias: 0.00036696356255561113\n", + "Grad encoder.encoder.4.weight: 0.00014127916074357927\n", + "Grad encoder.encoder.4.bias: 0.0007856196607463062\n", + "Grad decoder.fc1.0.weight: 3.989731703768484e-05\n", + "Grad decoder.fc1.0.bias: 0.00021105777705088258\n", + "Grad decoder.fc1.2.weight: 4.541224188869819e-05\n", + "Grad decoder.fc1.2.bias: 0.00024427828611806035\n", + "Grad decoder.fc1.4.weight: 5.464031710289419e-05\n", + "Grad decoder.fc1.4.bias: 0.0004150172171648592\n", + "Grad decoder.fc2.weight: 9.711502207210287e-05\n", + "Grad decoder.fc2.bias: 0.0026444720569998026\n", + "Grad _memory_unit.weight_ih_l0: 6.929413302714238e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.594393976731226e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.3441634766641073e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.6151356021509855e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.581054599839263e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.275313818245195e-05\n", + "Data X Sample: tensor([[ 0.0149, 0.0117, 0.0150, 0.0219, 0.0137, 0.0368, 0.0200, 0.0156,\n", + " 0.0317, 0.0205, 0.0603, 0.0039, 0.0222, 0.0245, 0.0101, 0.0096,\n", + " -0.1289, -0.1373, -0.1859, -0.1618, -0.1865, -0.1102, -0.1904, -0.1832,\n", + " -0.1577, -0.3213, -0.2904, -0.5588, -0.0416, -0.0819, -0.0875, -0.0608,\n", + " -0.0308, -0.0732, -0.0319, 0.0000, 0.0039, -0.0159, -0.0444, 0.0170,\n", + " -0.0095, 0.0139, -0.0061, -0.0115, 0.0277, 0.0172, 0.0068, 0.0313]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.2363, 0.7596, 0.8659, 0.0472, -0.4139, -0.1700, -1.4344, -1.3561,\n", + " -0.3634, -0.8818, -0.6760, 1.4152, 2.4196, 0.4155, 1.0425, 0.4407,\n", + " -0.0319, -1.8913, -0.3396, 0.3158, -0.1870, 0.3179, 0.1675, -0.0270,\n", + " -0.9763, -0.7975, -1.0800, 1.5574, 1.4033, 2.2665, 0.5434, 0.2846,\n", + " 1.0748, 1.2198, 0.1168, 0.2780, -0.6348, 0.7450, 0.0000, -0.9878,\n", + " -0.7905, -0.6138, -0.7312]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5526, 0.4593, 0.2221, 0.3903, 0.0876, -0.2248, -0.5592, -0.6208,\n", + " -0.2715, -0.3495, -0.3067, 0.3237, 0.2790, 0.3727, 0.3052, 0.3398,\n", + " 0.2717, 0.1161, 0.1798, 0.2010, 0.1009, 0.0559, 0.1445, 0.0845,\n", + " 0.1096, 0.0481, -0.0448, 0.1674, 0.3709, 0.4410, 0.4403, 0.3213,\n", + " 0.4161, 0.4118, 0.3007, 0.1920, -0.0172, -0.0153, -0.0285, -0.3952,\n", + " -0.4084, -0.4037, -0.3774]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 7.484927482437342e-05\n", + "Grad encoder.fc1.bias: 0.00032022007508203387\n", + "Grad encoder.encoder.0.weight: 2.089960253215395e-05\n", + "Grad encoder.encoder.0.bias: 0.0003327907179482281\n", + "Grad encoder.encoder.2.weight: 2.375996336922981e-05\n", + "Grad encoder.encoder.2.bias: 0.00032573030330240726\n", + "Grad encoder.encoder.4.weight: 7.636103691766039e-05\n", + "Grad encoder.encoder.4.bias: 0.0009309543529525399\n", + "Grad decoder.fc1.0.weight: 4.639353937818669e-05\n", + "Grad decoder.fc1.0.bias: 0.000355670228600502\n", + "Grad decoder.fc1.2.weight: 6.298386142589152e-05\n", + "Grad decoder.fc1.2.bias: 0.0003677083004731685\n", + "Grad decoder.fc1.4.weight: 7.426099909935147e-05\n", + "Grad decoder.fc1.4.bias: 0.0005075533990748227\n", + "Grad decoder.fc2.weight: 0.00010249466868117452\n", + "Grad decoder.fc2.bias: 0.002149381674826145\n", + "Grad _memory_unit.weight_ih_l0: 5.9243843679723796e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.071698665735312e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.593514025444165e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.9568107038357994e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.995231473818421e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.515230102697387e-05\n", + "Data X Sample: tensor([[1.2221, 1.3312, 1.5898, 1.5940, 1.8099, 1.8887, 3.0089, 3.9281, 4.1424,\n", + " 4.1389, 4.0796, 3.9807, 3.7062, 3.6480, 3.4424, 3.4585, 3.4309, 3.3774,\n", + " 3.4837, 3.2991, 3.3074, 3.2777, 2.8845, 2.7485, 2.7533, 2.7869, 2.7785,\n", + " 2.7775, 2.8829, 2.8919, 3.0341, 3.0645, 3.3243, 2.4693, 4.1106, 4.6139,\n", + " 4.8454, 5.1733, 5.8630, 5.5466, 0.9736, 0.5417, 0.5841, 1.0305, 1.4430,\n", + " 1.4925, 1.0470, 1.5560]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3850, 0.1821, -0.4833, 0.5647, 0.1370, -0.5941, 0.1793, 0.6275,\n", + " -0.4262, -0.0526, -1.1223, 0.6805, 0.8905, -0.3812, -0.3633, 0.8272,\n", + " -0.1302, 0.0658, 0.2369, 0.5680, -0.5970, 0.3320, -0.3745, -0.0717,\n", + " 0.1517, -0.2388, -0.7769, -0.3161, -0.7792, 0.1375, -0.0703, 0.1542,\n", + " -0.6413, 0.5050, 0.7558, 0.5503, 0.1912, -0.6991, 0.6819, -0.2248,\n", + " 0.6015, 0.2674, -0.1267]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2837, -0.3041, -0.1052, -0.2186, -0.0717, 0.1174, 0.1558, 0.3060,\n", + " 0.1443, 0.2106, 0.2617, -0.1816, -0.1474, -0.2484, -0.2300, -0.2832,\n", + " -0.2379, -0.0847, -0.1204, -0.1168, -0.1006, -0.0488, -0.0324, -0.0160,\n", + " 0.0248, 0.0394, 0.0060, -0.0807, -0.1584, -0.1432, -0.2228, -0.2020,\n", + " -0.2303, -0.2764, -0.1121, -0.1860, -0.0439, -0.0094, 0.0261, 0.3650,\n", + " 0.3388, 0.3641, 0.2525]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00014726723020430654\n", + "Grad encoder.fc1.bias: 0.00011746588279493153\n", + "Grad encoder.encoder.0.weight: 5.210947711020708e-05\n", + "Grad encoder.encoder.0.bias: 0.00013104663230478764\n", + "Grad encoder.encoder.2.weight: 4.633036951418035e-05\n", + "Grad encoder.encoder.2.bias: 0.00016724377928767353\n", + "Grad encoder.encoder.4.weight: 0.00010927855328191072\n", + "Grad encoder.encoder.4.bias: 0.0003856118710245937\n", + "Grad decoder.fc1.0.weight: 3.3299285860266536e-05\n", + "Grad decoder.fc1.0.bias: 0.00012255948968231678\n", + "Grad decoder.fc1.2.weight: 3.706111237988807e-05\n", + "Grad decoder.fc1.2.bias: 0.0001984967093449086\n", + "Grad decoder.fc1.4.weight: 4.419401375344023e-05\n", + "Grad decoder.fc1.4.bias: 0.0003141779452562332\n", + "Grad decoder.fc2.weight: 7.897224713815376e-05\n", + "Grad decoder.fc2.bias: 0.0014347753021866083\n", + "Grad _memory_unit.weight_ih_l0: 2.2195956717041554e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.132894784765085e-06\n", + "Grad _memory_unit.bias_hh_l0: 2.7160347144672414e-06\n", + "Grad _memory_unit.weight_ih_l1: 7.847355618650909e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.879104249586817e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.3928939551988151e-05\n", + "Data X Sample: tensor([[1.5626, 1.9124, 1.9549, 2.1953, 2.3563, 2.4073, 2.5498, 2.6476, 2.6607,\n", + " 2.6618, 2.7885, 2.7771, 2.6565, 2.6147, 2.5572, 2.5710, 2.5834, 2.6501,\n", + " 2.6556, 2.5125, 2.5174, 2.5199, 2.5351, 2.5596, 2.5919, 2.6093, 2.4588,\n", + " 2.4635, 2.3972, 2.4007, 2.5057, 2.4262, 2.2616, 1.5585, 1.9658, 1.9166,\n", + " 1.7462, 1.6935, 1.6417, 1.6370, 1.3650, 0.7846, 0.7316, 1.2917, 1.8354,\n", + " 2.2816, 1.4074, 2.0877]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 3.8710e-01, -2.8006e-01, 4.6090e-01, 2.8527e-01, -3.6143e-01,\n", + " -1.1205e+00, -1.5715e-01, -6.2231e-01, -1.3228e+00, -1.4293e-01,\n", + " -1.0742e-01, 8.6237e-01, -7.1549e-01, 9.2221e-02, 1.4386e+00,\n", + " 9.9920e-01, -2.3443e-02, -1.8483e-02, 1.4063e+00, 1.0558e+00,\n", + " -7.3968e-02, -2.1283e-01, -7.1150e-01, -4.4563e-01, -1.7369e+00,\n", + " -6.9016e-01, -6.4282e-01, 2.8404e-01, 2.7275e-01, 6.0477e-01,\n", + " -4.6518e-01, -8.0911e-01, 1.5807e-01, 2.6904e-01, 2.4203e-01,\n", + " 6.3542e-02, 8.2914e-01, -1.7655e-01, -7.5457e-01, -3.2394e-01,\n", + " 2.5066e-01, 2.5063e-04, -1.4202e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.0755, 0.0351, 0.0322, -0.0276, -0.0032, -0.0542, -0.1390, -0.0841,\n", + " -0.0730, -0.0699, -0.0841, 0.0682, 0.0688, 0.0762, 0.0418, 0.0309,\n", + " -0.0667, -0.0033, 0.0636, 0.0148, 0.0114, 0.0235, 0.0429, -0.0210,\n", + " 0.0385, -0.0210, 0.0345, 0.0702, 0.0772, 0.1120, 0.0913, 0.0488,\n", + " 0.0480, 0.0687, 0.0443, 0.0514, -0.0169, 0.0233, 0.0214, -0.0129,\n", + " 0.0072, -0.0696, -0.0735]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007496072212234139\n", + "Grad encoder.fc1.bias: 0.0006736802170053124\n", + "Grad encoder.encoder.0.weight: 0.00023654695542063564\n", + "Grad encoder.encoder.0.bias: 0.0009676276240497828\n", + "Grad encoder.encoder.2.weight: 0.0001943429815582931\n", + "Grad encoder.encoder.2.bias: 0.0008162446320056915\n", + "Grad encoder.encoder.4.weight: 0.00044387858361005783\n", + "Grad encoder.encoder.4.bias: 0.0016978535568341613\n", + "Grad decoder.fc1.0.weight: 0.00012716971104964614\n", + "Grad decoder.fc1.0.bias: 0.0004686629108618945\n", + "Grad decoder.fc1.2.weight: 0.00010694429511204362\n", + "Grad decoder.fc1.2.bias: 0.0005889460444450378\n", + "Grad decoder.fc1.4.weight: 8.76233825692907e-05\n", + "Grad decoder.fc1.4.bias: 0.0008578762644901872\n", + "Grad decoder.fc2.weight: 9.385238809045404e-05\n", + "Grad decoder.fc2.bias: 0.0022275722585618496\n", + "Grad _memory_unit.weight_ih_l0: 7.631268999830354e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.456467271054862e-05\n", + "Grad _memory_unit.bias_hh_l0: 7.956772606121376e-06\n", + "Grad _memory_unit.weight_ih_l1: 3.144150468870066e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011137502588098869\n", + "Grad _memory_unit.bias_hh_l1: 5.427126234280877e-05\n", + "Data X Sample: tensor([[ 0.0095, 0.0087, 0.0225, 0.0153, 0.0034, 0.0280, 0.0185, 0.0014,\n", + " 0.0098, 0.0126, 0.0063, 0.0019, -0.0200, -0.0109, -0.0101, 0.0068,\n", + " 0.0142, -0.0058, -0.0351, -0.0632, -0.0025, -0.0214, -0.0964, -0.0840,\n", + " -0.0619, -0.1672, -0.1545, -0.3141, -0.0208, -0.0360, -0.0315, -0.0553,\n", + " -0.0682, -0.0641, -0.0735, -0.0292, -0.0236, -0.0239, -0.0254, -0.0085,\n", + " -0.0143, 0.0080, -0.0020, 0.0029, 0.0159, -0.0229, 0.0204, 0.0469]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.2483e+00, 1.0457e+00, 3.7524e-01, 5.7848e-01, 3.8814e-01,\n", + " -4.5962e-01, -1.5266e+00, -1.3793e+00, -7.7742e-01, -9.0090e-01,\n", + " -9.5652e-01, 1.4484e-01, 1.9357e-01, 7.0657e-01, 2.2216e-01,\n", + " 1.1645e+00, 3.7330e-01, 1.0056e+00, -1.4263e-01, 2.0510e-01,\n", + " -4.8658e-01, -4.4809e-02, -2.9670e-01, 6.2080e-02, 6.3862e-02,\n", + " -5.5940e-01, 4.2590e-01, 1.1183e-01, 5.0827e-01, 1.0295e+00,\n", + " 1.0891e+00, 1.2650e+00, 1.1755e+00, 8.9167e-02, 1.6400e-01,\n", + " -1.0540e-03, 6.3666e-02, 8.8703e-01, -2.3062e-02, -8.9646e-01,\n", + " -7.7303e-01, -3.5802e-01, -4.0320e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5771, 0.4858, 0.2302, 0.4120, 0.0943, -0.2235, -0.6003, -0.6662,\n", + " -0.3048, -0.3812, -0.3224, 0.3426, 0.3007, 0.3918, 0.3242, 0.3379,\n", + " 0.3099, 0.1182, 0.2185, 0.2302, 0.1171, 0.0610, 0.1705, 0.1057,\n", + " 0.1092, 0.0670, -0.0325, 0.2150, 0.3769, 0.4917, 0.4651, 0.3531,\n", + " 0.4344, 0.4407, 0.3341, 0.1948, -0.0245, -0.0179, -0.0377, -0.4452,\n", + " -0.4323, -0.4245, -0.4028]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00041467053233645856\n", + "Grad encoder.fc1.bias: 0.00038029399001970887\n", + "Grad encoder.encoder.0.weight: 0.00013226688315626234\n", + "Grad encoder.encoder.0.bias: 0.000469065154902637\n", + "Grad encoder.encoder.2.weight: 9.580647019902244e-05\n", + "Grad encoder.encoder.2.bias: 0.00050425308290869\n", + "Grad encoder.encoder.4.weight: 0.00025130758876912296\n", + "Grad encoder.encoder.4.bias: 0.0010683202417567372\n", + "Grad decoder.fc1.0.weight: 7.40479226806201e-05\n", + "Grad decoder.fc1.0.bias: 0.0003266078419983387\n", + "Grad decoder.fc1.2.weight: 9.243790555046871e-05\n", + "Grad decoder.fc1.2.bias: 0.0003969792742282152\n", + "Grad decoder.fc1.4.weight: 0.00011542363790795207\n", + "Grad decoder.fc1.4.bias: 0.0005241016624495387\n", + "Grad decoder.fc2.weight: 0.00010086920519825071\n", + "Grad decoder.fc2.bias: 0.0025554390158504248\n", + "Grad _memory_unit.weight_ih_l0: 5.077871264802525e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.179544728482142e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.647048702579923e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.2622359665547265e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.901730037294328e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.8840329832746647e-05\n", + "Data X Sample: tensor([[1.6379, 1.8978, 2.0361, 2.1669, 2.1104, 2.2305, 2.2509, 2.2742, 2.4068,\n", + " 2.4580, 2.5061, 2.5278, 2.3546, 2.3011, 2.3504, 2.2578, 2.2721, 2.3174,\n", + " 2.4429, 2.3525, 2.4192, 2.4984, 2.4194, 2.4584, 2.4999, 2.5910, 2.5494,\n", + " 2.5083, 2.2966, 2.4334, 2.3377, 2.2853, 2.2088, 1.3639, 1.8580, 1.7074,\n", + " 1.6361, 1.6220, 1.5339, 1.4214, 1.4031, 0.8264, 0.7478, 1.3032, 2.0178,\n", + " 2.1615, 1.4210, 1.9235]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3510, 0.2160, -0.0765, 1.1264, 1.0924, 0.3469, -0.2353, -0.5370,\n", + " -0.8376, -0.3912, -0.3343, 0.2487, 0.5036, 0.3693, 1.1273, 0.1756,\n", + " 0.6186, 1.2738, -0.1656, 0.6576, -0.1773, 1.1209, 0.2347, -0.0905,\n", + " -0.5814, -0.1151, -1.0586, -0.0547, -0.8169, -0.7092, 0.0677, 0.0239,\n", + " -0.5937, 0.2858, 0.0380, 0.3527, -0.5893, 0.0000, -0.3712, -0.4320,\n", + " -0.4598, -0.4596, 0.0699]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.1749, 0.1590, 0.0859, 0.0592, 0.0540, -0.0596, -0.2120, -0.1626,\n", + " -0.1143, -0.1442, -0.1195, 0.1190, 0.0803, 0.1265, 0.0878, 0.1039,\n", + " 0.0337, 0.0067, 0.1119, 0.0867, 0.0606, 0.0285, 0.0549, 0.0072,\n", + " 0.0683, 0.0293, 0.0011, 0.0645, 0.0792, 0.1598, 0.1604, 0.1080,\n", + " 0.1371, 0.1302, 0.1181, 0.0961, -0.0351, -0.0089, 0.0189, -0.1270,\n", + " -0.0828, -0.1532, -0.1316]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000190239617950283\n", + "Grad encoder.fc1.bias: 8.581517613492906e-05\n", + "Grad encoder.encoder.0.weight: 5.306814273353666e-05\n", + "Grad encoder.encoder.0.bias: 0.0001034348679240793\n", + "Grad encoder.encoder.2.weight: 3.359297625138424e-05\n", + "Grad encoder.encoder.2.bias: 0.00011192935926374048\n", + "Grad encoder.encoder.4.weight: 7.526189438067377e-05\n", + "Grad encoder.encoder.4.bias: 0.0002755360910668969\n", + "Grad decoder.fc1.0.weight: 2.4224542357842438e-05\n", + "Grad decoder.fc1.0.bias: 6.113125709816813e-05\n", + "Grad decoder.fc1.2.weight: 3.388456389075145e-05\n", + "Grad decoder.fc1.2.bias: 9.790640615392476e-05\n", + "Grad decoder.fc1.4.weight: 5.541702557820827e-05\n", + "Grad decoder.fc1.4.bias: 0.00024130454403348267\n", + "Grad decoder.fc2.weight: 5.566950494539924e-05\n", + "Grad decoder.fc2.bias: 0.0012393611250445247\n", + "Grad _memory_unit.weight_ih_l0: 7.528326477768132e-07\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.108199835987762e-07\n", + "Grad _memory_unit.bias_hh_l0: 5.61541980914626e-07\n", + "Grad _memory_unit.weight_ih_l1: 4.4555781641975045e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.9674947907333262e-05\n", + "Grad _memory_unit.bias_hh_l1: 9.458385648031253e-06\n", + "Data X Sample: tensor([[1.4820, 1.6167, 1.6318, 1.8892, 1.9277, 2.0758, 2.0075, 1.8171, 2.9707,\n", + " 4.0267, 4.3397, 4.3916, 4.0324, 4.0515, 3.8434, 3.8004, 3.6935, 3.6269,\n", + " 3.5704, 3.6543, 3.5602, 3.4323, 3.0484, 2.8669, 2.9034, 3.0716, 2.9170,\n", + " 3.0018, 3.1778, 3.1605, 3.3840, 3.3934, 3.9447, 2.9293, 4.5935, 5.0931,\n", + " 5.1541, 5.5311, 6.0469, 5.8473, 1.0595, 0.6393, 0.5901, 1.0850, 1.7403,\n", + " 1.8527, 1.2850, 1.8453]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2728, 0.7912, -0.1933, 0.7348, 0.6899, -0.1722, 0.0768, 0.2051,\n", + " -0.3993, 0.2421, 0.1277, 0.0167, 1.5833, -0.7481, -0.2022, 0.0674,\n", + " 0.4936, 0.7884, 0.3711, 0.2498, -0.4213, 0.2707, -0.0594, -0.0637,\n", + " 0.0236, 0.1100, -0.9286, -0.5195, -0.5075, -0.4972, 0.0821, 0.0930,\n", + " -0.0145, -0.2083, -0.6464, 0.7251, -0.5827, 0.0936, 0.9834, 0.4772,\n", + " 0.0502, 0.2839, -0.2415]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3995, -0.3953, -0.1300, -0.2387, -0.0351, 0.1970, 0.2568, 0.4233,\n", + " 0.2004, 0.2789, 0.3885, -0.2632, -0.2108, -0.3482, -0.3150, -0.3552,\n", + " -0.2624, -0.0944, -0.1849, -0.1455, -0.1286, -0.0364, -0.0219, 0.0160,\n", + " 0.0464, 0.0475, -0.0307, -0.1548, -0.2391, -0.1829, -0.3267, -0.2952,\n", + " -0.3107, -0.3934, -0.1497, -0.2558, -0.0435, -0.0264, 0.0563, 0.4939,\n", + " 0.4257, 0.5028, 0.3315]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.001465269597247243\n", + "Grad encoder.fc1.bias: 0.0020284694619476795\n", + "Grad encoder.encoder.0.weight: 0.0003180411003995687\n", + "Grad encoder.encoder.0.bias: 0.0024566715583205223\n", + "Grad encoder.encoder.2.weight: 0.00020835753821302205\n", + "Grad encoder.encoder.2.bias: 0.0031716646626591682\n", + "Grad encoder.encoder.4.weight: 0.0004649372713174671\n", + "Grad encoder.encoder.4.bias: 0.007524560205638409\n", + "Grad decoder.fc1.0.weight: 0.00019868645176757127\n", + "Grad decoder.fc1.0.bias: 0.0016965792747214437\n", + "Grad decoder.fc1.2.weight: 0.00013590989692602307\n", + "Grad decoder.fc1.2.bias: 0.002466368954628706\n", + "Grad decoder.fc1.4.weight: 0.0001440041814930737\n", + "Grad decoder.fc1.4.bias: 0.0012825886951759458\n", + "Grad decoder.fc2.weight: 0.0001551444729557261\n", + "Grad decoder.fc2.bias: 0.0030760737136006355\n", + "Grad _memory_unit.weight_ih_l0: 7.752879901090637e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 0.0002266270894324407\n", + "Grad _memory_unit.bias_hh_l0: 0.00015637937758583575\n", + "Grad _memory_unit.weight_ih_l1: 3.2931398891378194e-05\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.000451521307695657\n", + "Grad _memory_unit.bias_hh_l1: 0.0002366332191741094\n", + "Data X Sample: tensor([[1.2900, 1.4958, 1.7100, 1.9307, 1.9362, 1.8534, 1.9844, 2.0741, 3.4760,\n", + " 3.8134, 3.8575, 3.7937, 3.5641, 3.4435, 3.3440, 3.2589, 3.2642, 3.3851,\n", + " 3.4300, 3.3903, 3.4547, 3.4201, 2.8797, 2.7848, 2.7176, 2.7843, 2.8371,\n", + " 2.8754, 2.7129, 2.9181, 3.1356, 3.0397, 3.2891, 2.3251, 3.7159, 4.2224,\n", + " 4.5327, 5.0116, 5.5144, 5.3962, 1.0643, 0.6373, 0.6063, 1.0994, 1.7442,\n", + " 2.0242, 1.1762, 1.8297]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3119, -0.0537, 1.3616, -0.3383, -0.3373, 0.1614, -0.0336, -0.2136,\n", + " -0.3606, -0.1840, -0.4524, -0.3188, 1.4276, 1.4766, -0.1171, 0.0182,\n", + " 0.1317, 0.3800, -0.6206, 4.2862, 0.0260, -0.7899, -1.2556, 0.4594,\n", + " -0.2221, -1.2021, -0.1871, 0.3340, 0.1078, 0.8677, 1.1017, 0.6488,\n", + " 0.4990, 0.0929, -0.8683, -0.1560, -0.8513, 0.6044, -0.6337, 0.1561,\n", + " 0.3831, -0.1459, 0.2286]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3610, -0.3638, -0.1177, -0.2331, -0.0415, 0.1736, 0.2242, 0.3822,\n", + " 0.1822, 0.2571, 0.3434, -0.2379, -0.1883, -0.3098, -0.2872, -0.3306,\n", + " -0.2491, -0.0895, -0.1635, -0.1353, -0.1144, -0.0348, -0.0227, 0.0095,\n", + " 0.0372, 0.0445, -0.0201, -0.1280, -0.2085, -0.1708, -0.2909, -0.2626,\n", + " -0.2834, -0.3541, -0.1384, -0.2318, -0.0403, -0.0227, 0.0467, 0.4471,\n", + " 0.3973, 0.4564, 0.3037]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00038491259329020977\n", + "Grad encoder.fc1.bias: 0.0006422920851036906\n", + "Grad encoder.encoder.0.weight: 0.00011351228749845177\n", + "Grad encoder.encoder.0.bias: 0.0008577847038395703\n", + "Grad encoder.encoder.2.weight: 7.053661101963371e-05\n", + "Grad encoder.encoder.2.bias: 0.0006714020855724812\n", + "Grad encoder.encoder.4.weight: 0.0002185607299907133\n", + "Grad encoder.encoder.4.bias: 0.0012352654011920094\n", + "Grad decoder.fc1.0.weight: 7.25191566743888e-05\n", + "Grad decoder.fc1.0.bias: 0.00037770060589537024\n", + "Grad decoder.fc1.2.weight: 9.807378228288144e-05\n", + "Grad decoder.fc1.2.bias: 0.0004875611048191786\n", + "Grad decoder.fc1.4.weight: 0.00013151802704669535\n", + "Grad decoder.fc1.4.bias: 0.000771260354667902\n", + "Grad decoder.fc2.weight: 0.00013887336535844952\n", + "Grad decoder.fc2.bias: 0.00326156266964972\n", + "Grad _memory_unit.weight_ih_l0: 1.040640472638188e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.66942877008114e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.8534250557422638e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.4627792047103867e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.993330993689597e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.458857438294217e-05\n", + "Data X Sample: tensor([[ 0.0095, 0.0160, 0.0240, 0.0197, 0.0154, 0.0295, 0.0247, 0.0199,\n", + " 0.0415, 0.0253, 0.0571, 0.0253, 0.0133, 0.0218, 0.0303, 0.0123,\n", + " -0.1148, -0.1567, -0.1838, -0.1692, -0.1718, -0.1163, -0.1976, -0.1947,\n", + " -0.1652, -0.3213, -0.3143, -0.5506, -0.0624, -0.1015, -0.0735, -0.0691,\n", + " -0.0308, -0.0481, -0.0049, -0.0097, 0.0039, -0.0398, -0.0127, -0.0085,\n", + " -0.0239, 0.0080, 0.0101, 0.0000, 0.0238, 0.0172, 0.0136, -0.0078]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3333, 0.9667, 2.3575, -0.9687, 0.0299, -0.2800, -0.3703, -0.4799,\n", + " 1.0622, 1.4790, 1.2817, 0.3940, -0.6913, 1.4699, 0.0954, 1.0066,\n", + " 0.5535, -0.4508, 1.1699, -0.1897, -0.0488, -0.8684, -0.6196, -1.9652,\n", + " -0.4625, 0.1834, 0.1676, -0.6105, -1.6213, -0.1454, -0.2568, 0.7511,\n", + " 0.2312, -0.1354, -0.7874, -0.3526, -0.0182, 0.0940, -0.9499, -0.9068,\n", + " -0.1993, -0.8863, -0.8987]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.6096, 0.5177, 0.2438, 0.4743, 0.1252, -0.2139, -0.6455, -0.7337,\n", + " -0.3334, -0.4132, -0.3436, 0.3607, 0.3265, 0.4238, 0.3482, 0.3667,\n", + " 0.3624, 0.1424, 0.2467, 0.2623, 0.1502, 0.0606, 0.2053, 0.1328,\n", + " 0.1097, 0.0790, -0.0401, 0.2481, 0.3840, 0.5260, 0.4957, 0.3912,\n", + " 0.4738, 0.4775, 0.3816, 0.2246, -0.0308, -0.0233, -0.0526, -0.5080,\n", + " -0.4792, -0.4565, -0.4462]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002608543436508626\n", + "Grad encoder.fc1.bias: 0.00020697883155662566\n", + "Grad encoder.encoder.0.weight: 8.022592373890802e-05\n", + "Grad encoder.encoder.0.bias: 0.0002548827033024281\n", + "Grad encoder.encoder.2.weight: 5.161052104085684e-05\n", + "Grad encoder.encoder.2.bias: 0.00037238100776448846\n", + "Grad encoder.encoder.4.weight: 0.00012050419900333509\n", + "Grad encoder.encoder.4.bias: 0.0008950280025601387\n", + "Grad decoder.fc1.0.weight: 4.611734766513109e-05\n", + "Grad decoder.fc1.0.bias: 0.0004047531692776829\n", + "Grad decoder.fc1.2.weight: 3.9992031815927476e-05\n", + "Grad decoder.fc1.2.bias: 0.0002712140267249197\n", + "Grad decoder.fc1.4.weight: 3.219402424292639e-05\n", + "Grad decoder.fc1.4.bias: 0.00024526138440705836\n", + "Grad decoder.fc2.weight: 8.028207230381668e-05\n", + "Grad decoder.fc2.bias: 0.0017234341939911246\n", + "Grad _memory_unit.weight_ih_l0: 5.841376605530968e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.449094947427511e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.8163909771828912e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.3650292152742622e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.060400043381378e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.514606553129852e-05\n", + "Data X Sample: tensor([[2.0867, 2.5212, 2.7017, 2.7900, 2.9949, 3.0644, 3.1923, 3.2609, 3.2758,\n", + " 3.3711, 3.4197, 3.3322, 3.3422, 3.2145, 3.2886, 3.2739, 3.2297, 3.3581,\n", + " 3.4383, 3.3177, 3.1651, 3.1904, 3.1375, 2.8535, 2.7646, 2.7791, 2.6000,\n", + " 2.6552, 2.3174, 2.3908, 2.1907, 2.1692, 2.2462, 1.5173, 2.3531, 2.5295,\n", + " 2.5997, 2.8066, 2.9030, 2.8400, 1.8184, 0.9878, 0.9721, 1.6218, 2.3587,\n", + " 2.6018, 1.8629, 2.6194]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4180, 0.1369, 0.1958, -0.6252, 0.1130, -0.0254, 0.8475, 0.6550,\n", + " 1.0772, 0.6242, 1.0083, 0.7342, -0.0892, 0.0979, 1.0484, -0.5446,\n", + " -0.7016, 0.1782, -1.3854, -0.4499, -0.6880, 0.7765, -0.3630, -0.1573,\n", + " -0.4433, 0.4764, 1.1424, -0.9950, 0.1790, -0.1453, -0.4522, -0.6856,\n", + " -0.9517, -0.6128, -0.1652, -0.7222, -0.5975, 0.3945, 2.2782, 0.8948,\n", + " 0.8389, 1.0530, 0.9687]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1747, -0.2147, -0.0702, -0.1999, -0.0877, 0.0496, 0.0611, 0.1834,\n", + " 0.0912, 0.1463, 0.1303, -0.1084, -0.0802, -0.1323, -0.1500, -0.2096,\n", + " -0.1913, -0.0663, -0.0521, -0.0841, -0.0525, -0.0400, -0.0337, -0.0293,\n", + " -0.0009, 0.0289, 0.0371, 0.0045, -0.0680, -0.1073, -0.1197, -0.1048,\n", + " -0.1480, -0.1617, -0.0778, -0.1115, -0.0361, 0.0043, -0.0057, 0.2243,\n", + " 0.2579, 0.2269, 0.1675]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 7.20743992133066e-05\n", + "Grad encoder.fc1.bias: 0.00022012260160408914\n", + "Grad encoder.encoder.0.weight: 2.0119203327340074e-05\n", + "Grad encoder.encoder.0.bias: 0.0002112605725415051\n", + "Grad encoder.encoder.2.weight: 1.8927850760519505e-05\n", + "Grad encoder.encoder.2.bias: 0.00014278395974542946\n", + "Grad encoder.encoder.4.weight: 6.157147436169907e-05\n", + "Grad encoder.encoder.4.bias: 0.000344296102412045\n", + "Grad decoder.fc1.0.weight: 2.395048795733601e-05\n", + "Grad decoder.fc1.0.bias: 0.00010208868479821831\n", + "Grad decoder.fc1.2.weight: 3.002390803885646e-05\n", + "Grad decoder.fc1.2.bias: 0.00011516983795445412\n", + "Grad decoder.fc1.4.weight: 3.910330997314304e-05\n", + "Grad decoder.fc1.4.bias: 0.00027423666324466467\n", + "Grad decoder.fc2.weight: 9.557591693010181e-05\n", + "Grad decoder.fc2.bias: 0.0017298172460868955\n", + "Grad _memory_unit.weight_ih_l0: 3.952854058297817e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.7085532817873172e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.77007460076129e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.2747705113724805e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.2613505279878154e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.1478753549454268e-05\n", + "Data X Sample: tensor([[1.6570, 1.8090, 2.1172, 2.2346, 2.3238, 2.4766, 2.4928, 2.6149, 2.6705,\n", + " 2.6855, 2.6425, 2.6895, 2.5632, 2.4865, 2.4614, 2.5683, 2.4922, 2.5321,\n", + " 2.5173, 2.5273, 2.5174, 2.5260, 2.5206, 2.4756, 2.5037, 2.6772, 2.4428,\n", + " 2.4961, 2.3070, 2.4891, 2.3342, 2.2770, 1.9690, 1.2884, 1.7893, 1.7147,\n", + " 1.6656, 1.5345, 1.5846, 1.4725, 1.3411, 0.7448, 0.7599, 1.4180, 1.9068,\n", + " 2.1901, 1.5502, 2.1659]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3289, 0.4559, 1.3130, 0.7345, 0.6835, 0.7217, 0.0806, -0.4231,\n", + " -0.7596, -0.4219, -0.4767, 0.9339, 1.8861, 0.5489, 0.4286, 0.4165,\n", + " 0.9526, 0.1571, 0.7150, 1.2045, 0.7789, 1.9789, 1.5138, 0.5324,\n", + " 1.2950, 0.5355, 0.3584, -0.2687, -0.5295, 0.0529, -0.5302, -0.9840,\n", + " 0.7043, 0.7051, 0.1905, -0.0955, -0.3338, 0.7314, 1.1574, -0.4848,\n", + " -0.4296, -0.4205, -0.5320]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2089, 0.1881, 0.1073, 0.1348, 0.1001, -0.0416, -0.2538, -0.2300,\n", + " -0.1414, -0.1758, -0.1371, 0.1494, 0.0993, 0.1547, 0.1026, 0.1426,\n", + " 0.0708, 0.0429, 0.1514, 0.1199, 0.1034, 0.0364, 0.0888, 0.0355,\n", + " 0.0660, 0.0288, -0.0131, 0.0880, 0.0851, 0.2022, 0.2015, 0.1509,\n", + " 0.1813, 0.1841, 0.1672, 0.1388, -0.0469, -0.0132, 0.0173, -0.1940,\n", + " -0.1314, -0.1973, -0.1762]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 8.453705231659114e-05\n", + "Grad encoder.fc1.bias: 0.0004529497819021344\n", + "Grad encoder.encoder.0.weight: 2.4287535779876634e-05\n", + "Grad encoder.encoder.0.bias: 0.0004138830117881298\n", + "Grad encoder.encoder.2.weight: 2.1057232515886426e-05\n", + "Grad encoder.encoder.2.bias: 0.00033269712002947927\n", + "Grad encoder.encoder.4.weight: 6.424176535801962e-05\n", + "Grad encoder.encoder.4.bias: 0.0008367790142074227\n", + "Grad decoder.fc1.0.weight: 3.229815774830058e-05\n", + "Grad decoder.fc1.0.bias: 0.0003078716399613768\n", + "Grad decoder.fc1.2.weight: 3.8761685573263094e-05\n", + "Grad decoder.fc1.2.bias: 0.00024369634047616273\n", + "Grad decoder.fc1.4.weight: 4.245867967256345e-05\n", + "Grad decoder.fc1.4.bias: 0.0002735158195719123\n", + "Grad decoder.fc2.weight: 0.00010817142901942134\n", + "Grad decoder.fc2.bias: 0.0015489921206608415\n", + "Grad _memory_unit.weight_ih_l0: 4.99006046084105e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.550360295572318e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.288017665501684e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.0159868654445745e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.5494048865512013e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.7314050385029987e-05\n", + "Data X Sample: tensor([[2.2309, 2.6319, 2.7152, 2.8512, 2.8514, 2.9775, 3.0983, 3.2041, 3.1928,\n", + " 3.2463, 3.3975, 3.4062, 3.4798, 3.3972, 3.2381, 3.2561, 3.2485, 3.3445,\n", + " 3.3619, 3.2192, 3.0989, 3.0710, 2.8676, 2.7676, 2.6069, 2.6067, 2.5121,\n", + " 2.5817, 2.1752, 2.1387, 2.1767, 2.2411, 2.1604, 1.4578, 2.2820, 2.5538,\n", + " 2.7432, 2.9020, 3.0361, 2.9194, 1.6704, 0.9579, 1.0166, 1.7366, 2.6560,\n", + " 2.8420, 1.7541, 2.6194]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.0682e-01, 7.8945e-02, 3.3946e-01, 1.4436e-01, 2.6337e-01,\n", + " 1.1567e+00, 1.2999e-01, 1.3199e-01, -7.7858e-01, 1.0087e-01,\n", + " 6.8157e-03, -6.1199e-01, -2.4518e+00, 6.3307e-01, 6.2618e-01,\n", + " 5.8458e-01, 6.8106e-01, 4.0696e-01, -3.0337e-01, -5.6607e-02,\n", + " 1.0652e+00, 1.7320e+00, -3.4935e-01, -1.0286e+00, 4.4538e-01,\n", + " 3.9035e-01, 1.4313e+00, 1.0514e+00, 4.1819e-01, 5.8657e-01,\n", + " 3.2815e-01, 4.9510e-01, 1.8416e-01, -1.0585e-01, -1.3530e-01,\n", + " -4.7336e-01, -6.6989e-01, 1.0045e-01, 1.2362e+00, 1.1189e-04,\n", + " 1.6373e-02, -2.2514e-01, 3.1743e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1718, -0.2125, -0.0674, -0.2007, -0.0870, 0.0457, 0.0587, 0.1782,\n", + " 0.0910, 0.1450, 0.1260, -0.1078, -0.0801, -0.1266, -0.1477, -0.2072,\n", + " -0.1872, -0.0666, -0.0504, -0.0813, -0.0503, -0.0392, -0.0365, -0.0300,\n", + " -0.0022, 0.0293, 0.0369, 0.0061, -0.0631, -0.1082, -0.1158, -0.1007,\n", + " -0.1439, -0.1605, -0.0768, -0.1071, -0.0357, 0.0033, -0.0038, 0.2193,\n", + " 0.2572, 0.2245, 0.1648]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 7.263949373736978e-05\n", + "Grad encoder.fc1.bias: 0.0006337303202599287\n", + "Grad encoder.encoder.0.weight: 2.8162457965663634e-05\n", + "Grad encoder.encoder.0.bias: 0.00034507131204009056\n", + "Grad encoder.encoder.2.weight: 1.9599119696067646e-05\n", + "Grad encoder.encoder.2.bias: 0.00022379940492101014\n", + "Grad encoder.encoder.4.weight: 6.67559215798974e-05\n", + "Grad encoder.encoder.4.bias: 0.000673284288495779\n", + "Grad decoder.fc1.0.weight: 2.3100461476133205e-05\n", + "Grad decoder.fc1.0.bias: 0.00014637474669143558\n", + "Grad decoder.fc1.2.weight: 3.302915138192475e-05\n", + "Grad decoder.fc1.2.bias: 0.00010630035831127316\n", + "Grad decoder.fc1.4.weight: 4.382578481454402e-05\n", + "Grad decoder.fc1.4.bias: 0.00016810314264148474\n", + "Grad decoder.fc2.weight: 8.639084262540564e-05\n", + "Grad decoder.fc2.bias: 0.0014700734755024314\n", + "Grad _memory_unit.weight_ih_l0: 5.121088634041371e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.187682887073606e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.6630969184916466e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.857399524851644e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.8157737182918936e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.468427919666283e-05\n", + "Data X Sample: tensor([[1.6634, 1.8498, 1.9609, 2.1844, 2.2829, 2.4721, 2.4312, 2.4701, 2.6900,\n", + " 2.6729, 2.6965, 2.6428, 2.5477, 2.4674, 2.4538, 2.4069, 2.3774, 2.4895,\n", + " 2.5214, 2.4864, 2.4929, 2.5122, 2.4508, 2.5271, 2.5112, 2.5492, 2.5228,\n", + " 2.5246, 2.3035, 2.3319, 2.3797, 2.1609, 1.9184, 1.2587, 1.7550, 1.6588,\n", + " 1.5260, 1.5239, 1.5719, 1.4327, 1.1932, 0.7050, 0.7235, 1.3864, 2.0495,\n", + " 2.1786, 1.4074, 2.0252]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4391, 0.0898, 0.1515, 0.4930, 0.7216, 0.6513, 0.1571, -0.2997,\n", + " 0.5563, -0.3943, -0.5647, -0.2682, 2.7651, 0.3935, -0.0993, -0.3409,\n", + " 0.8364, 0.5721, -0.1669, -1.1718, 0.0540, -0.1234, 1.0090, 0.4853,\n", + " 0.0559, 0.1302, -0.5807, -0.3832, -0.3897, 0.4280, 0.5641, 0.4431,\n", + " 0.4406, 0.8023, 1.1093, 0.5589, -1.0526, -0.6782, 0.3551, -0.4966,\n", + " -0.2352, -0.4136, -1.2490]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2506, 0.2259, 0.1275, 0.1899, 0.1337, -0.0451, -0.2904, -0.2825,\n", + " -0.1764, -0.2154, -0.1677, 0.1738, 0.1185, 0.1885, 0.1245, 0.1875,\n", + " 0.1016, 0.0653, 0.1751, 0.1441, 0.1233, 0.0538, 0.1161, 0.0547,\n", + " 0.0711, 0.0208, -0.0166, 0.0956, 0.1025, 0.2511, 0.2395, 0.1848,\n", + " 0.2216, 0.2291, 0.2038, 0.1820, -0.0560, -0.0146, 0.0258, -0.2497,\n", + " -0.1814, -0.2475, -0.2252]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00016795611009001732\n", + "Grad encoder.fc1.bias: 0.00016445497749373317\n", + "Grad encoder.encoder.0.weight: 4.0081835322780535e-05\n", + "Grad encoder.encoder.0.bias: 0.00016446891822852194\n", + "Grad encoder.encoder.2.weight: 2.521983697079122e-05\n", + "Grad encoder.encoder.2.bias: 0.0001941305526997894\n", + "Grad encoder.encoder.4.weight: 8.5635190771427e-05\n", + "Grad encoder.encoder.4.bias: 0.0006242981762625277\n", + "Grad decoder.fc1.0.weight: 3.214485332136974e-05\n", + "Grad decoder.fc1.0.bias: 0.0002102174039464444\n", + "Grad decoder.fc1.2.weight: 4.432702553458512e-05\n", + "Grad decoder.fc1.2.bias: 0.0001863695797510445\n", + "Grad decoder.fc1.4.weight: 5.537582183023915e-05\n", + "Grad decoder.fc1.4.bias: 0.00021184352226555347\n", + "Grad decoder.fc2.weight: 8.711362170288339e-05\n", + "Grad decoder.fc2.bias: 0.0020294329151511192\n", + "Grad _memory_unit.weight_ih_l0: 4.214892214804422e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.0109355318709277e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.071581482392503e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.095650415867567e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.64235815545544e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.8428818040993065e-05\n", + "Data X Sample: tensor([[2.6616, 2.8140, 2.1893, 2.3724, 2.3068, 2.2644, 3.3340, 3.8699, 3.9666,\n", + " 4.0662, 4.1557, 4.0917, 3.9392, 3.7243, 3.6946, 3.5297, 3.4718, 3.5612,\n", + " 3.4754, 3.3326, 3.2412, 3.2853, 2.9978, 2.8153, 2.6670, 2.8104, 2.7465,\n", + " 2.7979, 2.6886, 2.7609, 2.6946, 2.8296, 3.0823, 2.2656, 3.8508, 4.3464,\n", + " 4.4993, 4.8844, 5.4003, 5.1948, 1.6418, 0.9499, 0.7841, 1.4151, 2.0138,\n", + " 2.3559, 1.4890, 2.0877]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5744, -0.2585, -1.1060, -0.5501, 0.2332, -0.3538, 0.4588, 0.2628,\n", + " -0.1618, 0.2638, -0.1417, -1.0046, 3.1963, 0.2661, 0.3794, -0.3455,\n", + " -1.0154, -2.1581, -0.3947, 0.0083, -0.1600, 0.4710, -0.1160, 0.5716,\n", + " -1.6561, -0.5017, -0.3770, 0.0946, -0.9633, -0.5396, -0.2571, -0.1933,\n", + " -0.6882, -0.1940, -0.9938, -0.3304, -0.7493, -0.1765, 0.0382, 0.2254,\n", + " 0.2271, 0.4186, 0.3641]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2129, -0.2461, -0.0753, -0.2089, -0.0736, 0.0699, 0.0956, 0.2189,\n", + " 0.1142, 0.1705, 0.1732, -0.1388, -0.1076, -0.1621, -0.1780, -0.2351,\n", + " -0.1939, -0.0700, -0.0761, -0.0898, -0.0639, -0.0353, -0.0395, -0.0226,\n", + " 0.0050, 0.0337, 0.0217, -0.0228, -0.0889, -0.1256, -0.1538, -0.1348,\n", + " -0.1736, -0.2077, -0.0909, -0.1313, -0.0373, -0.0044, 0.0126, 0.2668,\n", + " 0.2930, 0.2787, 0.1954]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 7.192928751464933e-05\n", + "Grad encoder.fc1.bias: 0.000509203877300024\n", + "Grad encoder.encoder.0.weight: 2.7218829927733168e-05\n", + "Grad encoder.encoder.0.bias: 0.000475817738333717\n", + "Grad encoder.encoder.2.weight: 1.944144969456829e-05\n", + "Grad encoder.encoder.2.bias: 0.0003447517519816756\n", + "Grad encoder.encoder.4.weight: 8.062427514232695e-05\n", + "Grad encoder.encoder.4.bias: 0.0010833673877641559\n", + "Grad decoder.fc1.0.weight: 3.711079989443533e-05\n", + "Grad decoder.fc1.0.bias: 0.0003186348476447165\n", + "Grad decoder.fc1.2.weight: 5.536154640140012e-05\n", + "Grad decoder.fc1.2.bias: 0.0002730137202888727\n", + "Grad decoder.fc1.4.weight: 6.546515942318365e-05\n", + "Grad decoder.fc1.4.bias: 0.000233012018725276\n", + "Grad decoder.fc2.weight: 9.587081876816228e-05\n", + "Grad decoder.fc2.bias: 0.0022087113466113806\n", + "Grad _memory_unit.weight_ih_l0: 9.380033588968217e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.79641423933208e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.0094990759389475e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.95365623262478e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010372331598773599\n", + "Grad _memory_unit.bias_hh_l1: 5.1971182983834296e-05\n", + "Data X Sample: tensor([[1.2380, 1.4347, 1.5597, 1.6530, 1.7723, 1.8180, 1.9012, 1.9080, 3.3149,\n", + " 3.9035, 3.7909, 3.8444, 3.5508, 3.5989, 3.4298, 3.4462, 3.3727, 3.4567,\n", + " 3.3598, 3.3624, 3.1013, 3.2057, 2.7327, 2.6607, 2.6951, 2.7425, 2.7625,\n", + " 2.7694, 2.7823, 3.0262, 2.9746, 3.0093, 3.3507, 2.3869, 3.9611, 4.3634,\n", + " 4.4934, 4.8526, 5.3877, 5.2175, 0.9784, 0.5457, 0.5335, 0.9960, 1.3557,\n", + " 1.5782, 1.1558, 1.6029]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.8974e-01, -5.1210e-01, 5.3240e-01, 9.6052e-02, -9.7848e-02,\n", + " 2.9702e+00, 1.5428e-01, 3.8006e-01, 1.1638e-01, -1.9094e-03,\n", + " 1.0412e+00, -2.6998e+00, -9.3450e-01, -1.8230e+00, -5.6653e-01,\n", + " -4.0413e-01, 3.9416e-01, -9.3299e-01, -1.9041e-01, -1.0545e+00,\n", + " -4.3465e-01, -6.8743e-01, -3.0836e-01, -5.2769e-01, -6.3070e-01,\n", + " -3.6460e-01, -7.0348e-01, 6.8389e-01, -4.1245e-01, 2.3657e-02,\n", + " -3.5564e-01, -4.6424e-01, -3.0737e-01, 4.3906e-01, 5.0560e-02,\n", + " 7.5850e-01, -4.3828e-01, 5.9494e-01, -1.1729e+00, 9.5334e-01,\n", + " 1.3985e+00, 3.8766e-01, -2.5888e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2243, -0.2557, -0.0782, -0.2114, -0.0702, 0.0750, 0.1059, 0.2296,\n", + " 0.1212, 0.1777, 0.1862, -0.1475, -0.1160, -0.1718, -0.1862, -0.2446,\n", + " -0.1956, -0.0708, -0.0832, -0.0909, -0.0685, -0.0344, -0.0413, -0.0208,\n", + " 0.0070, 0.0345, 0.0172, -0.0311, -0.0956, -0.1310, -0.1646, -0.1439,\n", + " -0.1821, -0.2215, -0.0955, -0.1367, -0.0386, -0.0069, 0.0187, 0.2798,\n", + " 0.3040, 0.2942, 0.2044]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002073581999866292\n", + "Grad encoder.fc1.bias: 0.00031799645512364805\n", + "Grad encoder.encoder.0.weight: 6.36193944956176e-05\n", + "Grad encoder.encoder.0.bias: 0.0003825202875304967\n", + "Grad encoder.encoder.2.weight: 4.4694970711134374e-05\n", + "Grad encoder.encoder.2.bias: 0.0003419835411477834\n", + "Grad encoder.encoder.4.weight: 0.000110004679299891\n", + "Grad encoder.encoder.4.bias: 0.0004895442398265004\n", + "Grad decoder.fc1.0.weight: 3.75880699721165e-05\n", + "Grad decoder.fc1.0.bias: 0.00018569741223473102\n", + "Grad decoder.fc1.2.weight: 4.863698632107116e-05\n", + "Grad decoder.fc1.2.bias: 0.0002007404837058857\n", + "Grad decoder.fc1.4.weight: 5.382131348596886e-05\n", + "Grad decoder.fc1.4.bias: 0.0002023479901254177\n", + "Grad decoder.fc2.weight: 8.703041385160759e-05\n", + "Grad decoder.fc2.bias: 0.0019074168521910906\n", + "Grad _memory_unit.weight_ih_l0: 5.970573056401918e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.4640785341034643e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.3137452697264962e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.195786464653793e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.08000050811097e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.08088804356521e-05\n", + "Data X Sample: tensor([[1.5297, 1.7260, 1.9128, 2.0226, 2.2760, 2.3057, 2.4373, 2.4091, 2.4776,\n", + " 2.4628, 2.4268, 2.5707, 2.3901, 2.3829, 2.4589, 2.3371, 2.3287, 2.3290,\n", + " 2.3975, 2.3860, 2.3898, 2.4495, 2.4146, 2.4718, 2.3873, 2.4500, 2.3896,\n", + " 2.3533, 2.2099, 2.3515, 2.3412, 2.3129, 2.2264, 1.4074, 1.8776, 1.7512,\n", + " 1.6086, 1.4815, 1.5973, 1.5320, 1.2409, 0.7368, 0.7073, 1.3146, 1.9623,\n", + " 2.0586, 1.3326, 1.8375]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1299, -0.6783, 1.2537, 0.6743, 0.4401, -0.2416, -0.2415, -0.2346,\n", + " 0.1913, 0.2351, 0.4411, -0.0627, 0.1558, 0.6839, -0.1606, 0.5929,\n", + " 1.5950, -0.2358, 0.0097, 0.1990, 0.4616, -0.5672, -0.0187, -0.2317,\n", + " 0.3824, -0.4417, -1.0878, 0.7265, 0.2618, 0.0057, -0.9465, 0.8519,\n", + " 0.0930, -0.6443, 1.3304, -0.0497, 0.0000, -0.4031, 0.0545, 0.2216,\n", + " -0.9581, 0.7726, 0.4907]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3390, 0.3014, 0.1559, 0.3009, 0.1936, -0.0530, -0.3607, -0.3841,\n", + " -0.2394, -0.2846, -0.2230, 0.2186, 0.1630, 0.2503, 0.1640, 0.2629,\n", + " 0.1717, 0.1067, 0.2152, 0.1914, 0.1543, 0.0780, 0.1604, 0.0961,\n", + " 0.0784, 0.0137, -0.0311, 0.1126, 0.1367, 0.3333, 0.3043, 0.2494,\n", + " 0.3014, 0.3199, 0.2817, 0.2609, -0.0826, -0.0156, 0.0344, -0.3500,\n", + " -0.2755, -0.3374, -0.3147]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002741021744441241\n", + "Grad encoder.fc1.bias: 0.00010915869643213227\n", + "Grad encoder.encoder.0.weight: 5.9096968470839784e-05\n", + "Grad encoder.encoder.0.bias: 0.00010184271377511322\n", + "Grad encoder.encoder.2.weight: 3.8499721995322034e-05\n", + "Grad encoder.encoder.2.bias: 9.963636694010347e-05\n", + "Grad encoder.encoder.4.weight: 0.00010982408275594935\n", + "Grad encoder.encoder.4.bias: 0.000350540125509724\n", + "Grad decoder.fc1.0.weight: 2.79158975899918e-05\n", + "Grad decoder.fc1.0.bias: 6.810582272009924e-05\n", + "Grad decoder.fc1.2.weight: 4.284874739823863e-05\n", + "Grad decoder.fc1.2.bias: 0.00014851975720375776\n", + "Grad decoder.fc1.4.weight: 6.998533353907987e-05\n", + "Grad decoder.fc1.4.bias: 0.00047296035336330533\n", + "Grad decoder.fc2.weight: 7.653232023585588e-05\n", + "Grad decoder.fc2.bias: 0.00241303164511919\n", + "Grad _memory_unit.weight_ih_l0: 1.1413810625526821e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.495301469542028e-07\n", + "Grad _memory_unit.bias_hh_l0: 8.036315648496384e-07\n", + "Grad _memory_unit.weight_ih_l1: 6.289766361078364e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.3982476704986766e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.1820666259154677e-05\n", + "Data X Sample: tensor([[1.4629, 1.7099, 1.9489, 1.9854, 2.1872, 2.2644, 2.4435, 2.5269, 2.5191,\n", + " 2.5465, 2.5981, 2.6116, 2.5144, 2.5029, 2.6001, 2.4985, 2.4435, 2.5205,\n", + " 2.5296, 2.5385, 2.4511, 2.5214, 2.3929, 2.3649, 2.4230, 2.4578, 2.4295,\n", + " 2.4390, 2.1856, 2.2762, 2.2922, 2.3267, 2.2242, 1.4829, 1.9340, 1.7877,\n", + " 1.5909, 1.4947, 1.5529, 1.5406, 1.1550, 0.7050, 0.7397, 1.2027, 1.8235,\n", + " 1.9270, 1.3462, 1.9313]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.4529, 0.4786, 0.7295, 0.7223, 0.0939, -0.8457, -0.9301, -1.2429,\n", + " -0.4534, -0.8760, -0.8153, 0.0631, 0.8816, 1.0861, -0.4774, 0.7796,\n", + " 0.6797, 0.9373, 0.9596, 0.3381, -0.3992, -0.0995, 1.8904, 0.3281,\n", + " 0.6324, 0.7054, 0.3923, 0.2133, 0.6641, -0.2889, 0.1150, 1.4829,\n", + " 0.6454, 0.2636, 1.2810, 0.3326, -0.1878, 0.1005, 0.0109, -0.9657,\n", + " -0.8776, -0.6495, -0.2882]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3883, 0.3464, 0.1718, 0.3526, 0.2191, -0.0624, -0.4005, -0.4400,\n", + " -0.2726, -0.3245, -0.2541, 0.2427, 0.1868, 0.2860, 0.1925, 0.3050,\n", + " 0.2148, 0.1249, 0.2355, 0.2160, 0.1676, 0.0882, 0.1787, 0.1135,\n", + " 0.0868, 0.0130, -0.0414, 0.1195, 0.1603, 0.3756, 0.3398, 0.2803,\n", + " 0.3473, 0.3665, 0.3208, 0.2974, -0.0922, -0.0156, 0.0399, -0.4005,\n", + " -0.3296, -0.3862, -0.3629]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00033501023426651955\n", + "Grad encoder.fc1.bias: 0.00038639793638139963\n", + "Grad encoder.encoder.0.weight: 9.028125350596383e-05\n", + "Grad encoder.encoder.0.bias: 0.00038436459726653993\n", + "Grad encoder.encoder.2.weight: 5.594871618086472e-05\n", + "Grad encoder.encoder.2.bias: 0.0003493581898510456\n", + "Grad encoder.encoder.4.weight: 0.0001721830340102315\n", + "Grad encoder.encoder.4.bias: 0.00047556168283335865\n", + "Grad decoder.fc1.0.weight: 5.116811371408403e-05\n", + "Grad decoder.fc1.0.bias: 0.0001908631093101576\n", + "Grad decoder.fc1.2.weight: 7.375179848168045e-05\n", + "Grad decoder.fc1.2.bias: 0.0002777580521069467\n", + "Grad decoder.fc1.4.weight: 9.847354522207752e-05\n", + "Grad decoder.fc1.4.bias: 0.00046526105143129826\n", + "Grad decoder.fc2.weight: 0.00010815657878993079\n", + "Grad decoder.fc2.bias: 0.0016438458114862442\n", + "Grad _memory_unit.weight_ih_l0: 9.19231115403818e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.0378403203503694e-05\n", + "Grad _memory_unit.bias_hh_l0: 6.061565272830194e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.3914024041005177e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.4329492336837575e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.6883799617062323e-05\n", + "Data X Sample: tensor([[-0.0117, -0.0044, 0.0015, 0.0087, 0.0068, 0.0044, 0.0031, -0.0014,\n", + " 0.0195, 0.0032, -0.0317, -0.0175, -0.0089, 0.0082, 0.0076, -0.0014,\n", + " 0.0252, 0.0329, 0.0227, 0.0205, 0.0515, 0.0214, 0.0169, -0.0057,\n", + " 0.0206, 0.0209, 0.0186, 0.0612, -0.0104, 0.0000, 0.0175, 0.0083,\n", + " -0.0154, 0.0046, 0.0074, 0.0389, 0.0118, 0.0106, 0.0254, 0.0057,\n", + " -0.0048, 0.0199, 0.0243, 0.0115, 0.0238, -0.0343, -0.0340, -0.0704]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.8486, 1.1185, 1.0551, 1.7414, 4.3354, -0.1096, -0.8171, -1.1952,\n", + " -0.6999, -0.6158, -0.5406, 1.0122, 0.8314, 0.1741, 0.9323, 0.2629,\n", + " 1.2630, -0.6671, -1.4360, -1.0670, 0.1516, 0.2256, -0.1229, -0.5693,\n", + " -0.8903, -0.2026, 0.4775, 1.6545, 1.0215, 1.3176, 1.5800, 0.3622,\n", + " 0.0790, -0.3600, 0.0422, 0.6300, -0.7561, 0.2376, 0.0000, -0.5320,\n", + " -0.8022, -0.4198, -0.4313]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.8975, 0.6667, 0.2007, 0.5089, -0.5868, -0.8008, -1.3771, -1.1756,\n", + " -1.0195, -0.9885, -1.0355, 0.3022, 0.5142, 0.5643, 0.4426, 0.3883,\n", + " 0.4260, -0.1610, 0.1249, 0.1944, 0.1971, -0.0177, 0.2599, 0.0671,\n", + " 0.0423, 0.0248, 0.4624, 0.7642, 1.0003, 1.0332, 0.9805, 0.6528,\n", + " 0.7786, 0.7222, 0.6076, 0.4141, -0.1368, -0.0445, 0.0048, -0.9477,\n", + " -0.7352, -0.6338, -0.4832]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003329264873173088\n", + "Grad encoder.fc1.bias: 0.0008328303229063749\n", + "Grad encoder.encoder.0.weight: 9.991104889195412e-05\n", + "Grad encoder.encoder.0.bias: 0.0007902283687144518\n", + "Grad encoder.encoder.2.weight: 5.6968219723785296e-05\n", + "Grad encoder.encoder.2.bias: 0.0005209194496273994\n", + "Grad encoder.encoder.4.weight: 0.00019782815070357174\n", + "Grad encoder.encoder.4.bias: 0.0012654815800487995\n", + "Grad decoder.fc1.0.weight: 5.971381688141264e-05\n", + "Grad decoder.fc1.0.bias: 0.0003179477353114635\n", + "Grad decoder.fc1.2.weight: 8.172268280759454e-05\n", + "Grad decoder.fc1.2.bias: 0.00036282461951486766\n", + "Grad decoder.fc1.4.weight: 0.00010753655806183815\n", + "Grad decoder.fc1.4.bias: 0.00035141038824804127\n", + "Grad decoder.fc2.weight: 0.00010480608034413308\n", + "Grad decoder.fc2.bias: 0.002310558222234249\n", + "Grad _memory_unit.weight_ih_l0: 1.1899932360392995e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.6619192289654166e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.385346670052968e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.474753611953929e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.082032582024112e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.021905624540523e-05\n", + "Data X Sample: tensor([[1.6432, 1.7434, 1.9729, 2.0488, 2.1480, 2.2806, 2.4034, 2.3992, 2.4483,\n", + " 2.4754, 2.5537, 2.5902, 2.4478, 2.3775, 2.3201, 2.3754, 2.3381, 2.2632,\n", + " 2.3252, 2.2614, 2.3726, 2.4142, 2.4122, 2.3878, 2.3535, 2.4447, 2.4082,\n", + " 2.4349, 2.1682, 2.2173, 2.0612, 2.0145, 1.6940, 1.1053, 1.5442, 1.5080,\n", + " 1.4513, 1.4020, 1.4261, 1.3788, 1.2886, 0.7070, 0.7255, 1.3175, 1.8275,\n", + " 2.1500, 1.3258, 1.9470]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6622, 1.4249, 0.0617, 0.2010, -0.0832, -0.7329, -2.3281, -2.0934,\n", + " -0.8925, -1.9049, -2.1678, 0.2134, 0.9346, -0.3221, 0.4054, -0.1755,\n", + " 1.0591, -0.5232, 0.0042, -0.0388, -0.9754, -1.3524, 0.6470, 1.1648,\n", + " -0.0360, 0.8904, -0.9764, 0.6488, 0.6026, 1.9616, 1.4560, 1.3321,\n", + " -0.1365, -0.4423, 1.3190, -0.4704, -0.2571, -0.4018, 0.5132, -0.8977,\n", + " -0.4432, -0.9394, 0.0348]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4166, 0.3589, 0.1691, 0.3561, 0.2037, -0.0808, -0.4166, -0.4602,\n", + " -0.2845, -0.3357, -0.2750, 0.2317, 0.2030, 0.3031, 0.2064, 0.3073,\n", + " 0.2477, 0.1236, 0.2241, 0.2152, 0.1518, 0.0771, 0.1697, 0.1211,\n", + " 0.0875, 0.0227, -0.0415, 0.1170, 0.1856, 0.3739, 0.3410, 0.2924,\n", + " 0.3644, 0.3710, 0.3376, 0.3049, -0.1098, -0.0209, 0.0349, -0.4181,\n", + " -0.3490, -0.3880, -0.3759]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 8.344599336851388e-05\n", + "Grad encoder.fc1.bias: 0.0001305386977037415\n", + "Grad encoder.encoder.0.weight: 2.1241869035293348e-05\n", + "Grad encoder.encoder.0.bias: 0.00011204474867554381\n", + "Grad encoder.encoder.2.weight: 1.8355291103944182e-05\n", + "Grad encoder.encoder.2.bias: 0.00015577979502268136\n", + "Grad encoder.encoder.4.weight: 5.5021617299644276e-05\n", + "Grad encoder.encoder.4.bias: 0.0007979176007211208\n", + "Grad decoder.fc1.0.weight: 2.188449252571445e-05\n", + "Grad decoder.fc1.0.bias: 0.00015979389718268067\n", + "Grad decoder.fc1.2.weight: 3.14120807161089e-05\n", + "Grad decoder.fc1.2.bias: 0.00012866190809290856\n", + "Grad decoder.fc1.4.weight: 3.3437900128774345e-05\n", + "Grad decoder.fc1.4.bias: 0.00016071398567873985\n", + "Grad decoder.fc2.weight: 8.436122152488679e-05\n", + "Grad decoder.fc2.bias: 0.001401915098540485\n", + "Grad _memory_unit.weight_ih_l0: 5.717204203392612e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.928146179532632e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.0093993953196332e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.6400501863245154e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.811570033780299e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.4485354515491053e-05\n", + "Data X Sample: tensor([[-0.0074, -0.0044, 0.0075, 0.0087, -0.0102, 0.0103, 0.0092, 0.0000,\n", + " 0.0171, 0.0032, 0.0254, -0.0078, 0.0178, 0.0300, -0.0050, 0.0068,\n", + " -0.0535, -0.0638, -0.0785, -0.0651, -0.0687, -0.0260, -0.0337, -0.0382,\n", + " -0.0338, -0.0522, -0.0506, -0.0938, -0.0624, 0.0131, -0.0140, 0.0083,\n", + " -0.0044, -0.0023, 0.0245, 0.0389, 0.0079, 0.0371, 0.0317, 0.0028,\n", + " 0.0382, 0.0119, 0.0081, 0.0000, 0.0079, -0.0286, 0.0000, -0.0156]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6200, 0.5235, 0.6585, 0.1746, -1.0882, -0.5335, -1.3971, -1.0048,\n", + " -0.9110, -0.9249, -0.8759, 0.1382, 2.5853, 0.5037, -0.5081, 0.0883,\n", + " -0.5358, -1.4497, -0.3519, 0.3612, 0.1906, -0.5892, 1.3233, 3.0352,\n", + " 0.3586, 0.1085, -0.3139, 0.3308, 0.5526, 0.6852, 0.5006, 0.6969,\n", + " 0.8914, 0.2817, -0.6682, -0.5622, 0.9536, 0.7428, 0.2253, -0.6599,\n", + " -0.2968, -0.4773, -0.7929]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.7551, 0.5411, 0.1580, 0.4077, -0.4738, -0.6711, -1.1496, -1.0070,\n", + " -0.8301, -0.8027, -0.8455, 0.2524, 0.4313, 0.4730, 0.3724, 0.3054,\n", + " 0.3606, -0.1202, 0.1020, 0.1440, 0.1404, -0.0346, 0.1910, 0.0528,\n", + " 0.0395, 0.0273, 0.3673, 0.6419, 0.8485, 0.8532, 0.8222, 0.5464,\n", + " 0.6497, 0.5994, 0.5090, 0.3525, -0.1364, -0.0316, 0.0025, -0.7815,\n", + " -0.6153, -0.5213, -0.4065]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005750292912125587\n", + "Grad encoder.fc1.bias: 0.0004222630523145199\n", + "Grad encoder.encoder.0.weight: 0.00013309427595231682\n", + "Grad encoder.encoder.0.bias: 0.0003209126298315823\n", + "Grad encoder.encoder.2.weight: 0.00010019883484346792\n", + "Grad encoder.encoder.2.bias: 0.0003869199426844716\n", + "Grad encoder.encoder.4.weight: 0.00027882237918674946\n", + "Grad encoder.encoder.4.bias: 0.0008999881683848798\n", + "Grad decoder.fc1.0.weight: 8.507975871907547e-05\n", + "Grad decoder.fc1.0.bias: 0.00027433421928435564\n", + "Grad decoder.fc1.2.weight: 0.0001330203376710415\n", + "Grad decoder.fc1.2.bias: 0.00043271880713291466\n", + "Grad decoder.fc1.4.weight: 0.00020149369083810598\n", + "Grad decoder.fc1.4.bias: 0.0011715542059391737\n", + "Grad decoder.fc2.weight: 0.0001794098352547735\n", + "Grad decoder.fc2.bias: 0.0036552022211253643\n", + "Grad _memory_unit.weight_ih_l0: 5.38668382432661e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.2092491488147061e-05\n", + "Grad _memory_unit.bias_hh_l0: 7.190971700765658e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.636504177644383e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.435510294977576e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.197171099600382e-05\n", + "Data X Sample: tensor([[1.4671, 1.6997, 1.7190, 1.7339, 1.9499, 2.1421, 2.0552, 2.0017, 3.7421,\n", + " 4.1831, 4.3143, 4.2903, 4.1389, 3.9888, 3.8282, 3.7457, 3.5819, 3.7198,\n", + " 3.6158, 3.7808, 3.6313, 3.5716, 3.2339, 2.9623, 2.8847, 2.9175, 2.9064,\n", + " 2.9162, 2.8239, 3.1605, 3.2161, 3.3243, 3.8105, 2.7805, 4.5763, 4.9058,\n", + " 5.1600, 5.4463, 6.0088, 5.8416, 1.0977, 0.6253, 0.6023, 1.0477, 1.5896,\n", + " 1.6411, 1.1218, 1.5482]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6171, -0.5209, -0.5587, -0.3268, 0.1063, -0.3596, -0.0349, 0.1792,\n", + " 0.4373, 0.2676, 0.0961, -0.2859, -0.2882, -1.4649, -0.8695, -1.0829,\n", + " 0.6077, -0.9620, -0.2079, 0.3295, -1.1439, -0.5232, -0.7508, -0.4068,\n", + " -1.0666, -1.4471, -1.2799, -0.1475, -1.5076, -1.6245, -0.7658, 0.1006,\n", + " -0.4168, -0.8610, -1.9026, -0.2827, -0.6687, 0.7314, -0.7367, 0.4851,\n", + " 0.3360, 0.5918, 0.5311]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2485, -0.2828, -0.0844, -0.2160, -0.0613, 0.0826, 0.1320, 0.2500,\n", + " 0.1445, 0.1989, 0.2179, -0.1669, -0.1402, -0.1964, -0.2002, -0.2725,\n", + " -0.1948, -0.0641, -0.0944, -0.0916, -0.0795, -0.0339, -0.0520, -0.0168,\n", + " 0.0111, 0.0313, 0.0045, -0.0543, -0.1067, -0.1471, -0.1939, -0.1700,\n", + " -0.2055, -0.2609, -0.1122, -0.1440, -0.0444, -0.0070, 0.0386, 0.3082,\n", + " 0.3336, 0.3343, 0.2232]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00028278568061068654\n", + "Grad encoder.fc1.bias: 0.00012619420886039734\n", + "Grad encoder.encoder.0.weight: 6.599331391043961e-05\n", + "Grad encoder.encoder.0.bias: 0.00010942625522147864\n", + "Grad encoder.encoder.2.weight: 4.523686220636591e-05\n", + "Grad encoder.encoder.2.bias: 0.00011473352060420439\n", + "Grad encoder.encoder.4.weight: 0.00013393035624176264\n", + "Grad encoder.encoder.4.bias: 0.0003783605061471462\n", + "Grad decoder.fc1.0.weight: 3.674157051136717e-05\n", + "Grad decoder.fc1.0.bias: 8.525991142960265e-05\n", + "Grad decoder.fc1.2.weight: 5.214136399445124e-05\n", + "Grad decoder.fc1.2.bias: 0.00015679336502216756\n", + "Grad decoder.fc1.4.weight: 8.815949695417657e-05\n", + "Grad decoder.fc1.4.bias: 0.00048106646863743663\n", + "Grad decoder.fc2.weight: 0.00010526490223128349\n", + "Grad decoder.fc2.bias: 0.0021588371600955725\n", + "Grad _memory_unit.weight_ih_l0: 2.179265266022412e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.90697653326788e-06\n", + "Grad _memory_unit.bias_hh_l0: 1.8981161247211276e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.0178634965996025e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.5764125894056633e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.2855372006015386e-05\n", + "Data X Sample: tensor([[1.6210, 1.8556, 2.0376, 2.0969, 2.2316, 2.3322, 2.2987, 2.3438, 2.3507,\n", + " 2.4027, 2.4268, 2.5785, 2.3125, 2.3257, 2.3000, 2.3467, 2.3350, 2.3251,\n", + " 2.5317, 2.5013, 2.3996, 2.5658, 2.5303, 2.5233, 2.5468, 2.6067, 2.4642,\n", + " 2.5695, 2.3660, 2.4498, 2.4252, 2.4511, 2.4399, 1.6180, 2.0565, 1.9288,\n", + " 1.7777, 1.6988, 1.6226, 1.5434, 1.3172, 0.7149, 0.7599, 1.3032, 1.9464,\n", + " 2.0814, 1.4414, 2.0174]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5088, 0.4467, -0.6127, 0.4714, -0.7029, -0.3683, 0.0211, 0.0168,\n", + " 0.1504, 0.1060, 0.2075, -0.1110, -0.8788, 0.3282, 0.4388, 0.6832,\n", + " -0.4332, 0.6001, 1.5344, 0.7379, 0.2135, 1.8721, 0.0097, -0.6615,\n", + " -1.0812, 0.2338, 0.5700, -0.3392, 1.4226, 0.9489, -0.6136, -0.1894,\n", + " 0.2980, -0.0253, 1.1435, 0.4279, 0.8233, 0.7428, 0.5660, 0.1979,\n", + " 0.4957, -0.0188, -0.2794]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4939, 0.4272, 0.1829, 0.3971, 0.2205, -0.1235, -0.4841, -0.5479,\n", + " -0.3543, -0.4127, -0.3496, 0.2512, 0.2423, 0.3715, 0.2625, 0.3732,\n", + " 0.3163, 0.1418, 0.2268, 0.2372, 0.1439, 0.0848, 0.1828, 0.1394,\n", + " 0.1053, 0.0158, -0.0505, 0.1136, 0.2505, 0.4500, 0.3931, 0.3378,\n", + " 0.4237, 0.4077, 0.3790, 0.3633, -0.1311, -0.0176, 0.0489, -0.4928,\n", + " -0.4396, -0.4497, -0.4577]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002802530361805111\n", + "Grad encoder.fc1.bias: 0.0006001554429531097\n", + "Grad encoder.encoder.0.weight: 7.515528704971075e-05\n", + "Grad encoder.encoder.0.bias: 0.0005941278068348765\n", + "Grad encoder.encoder.2.weight: 5.3542142268270254e-05\n", + "Grad encoder.encoder.2.bias: 0.00038990535540506244\n", + "Grad encoder.encoder.4.weight: 0.0001750728697516024\n", + "Grad encoder.encoder.4.bias: 0.0011126324534416199\n", + "Grad decoder.fc1.0.weight: 5.142722511664033e-05\n", + "Grad decoder.fc1.0.bias: 0.0002779457136057317\n", + "Grad decoder.fc1.2.weight: 7.312555680982769e-05\n", + "Grad decoder.fc1.2.bias: 0.00034499476896598935\n", + "Grad decoder.fc1.4.weight: 0.00010530592408031225\n", + "Grad decoder.fc1.4.bias: 0.000643824809230864\n", + "Grad decoder.fc2.weight: 0.0001648719480726868\n", + "Grad decoder.fc2.bias: 0.0032970039173960686\n", + "Grad _memory_unit.weight_ih_l0: 7.674746484553907e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.655412365333177e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.9181430616299622e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.8281406230235007e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.568833825644106e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.788686080952175e-05\n", + "Data X Sample: tensor([[1.5414, 1.7944, 1.9173, 2.0247, 2.1019, 2.2467, 2.4789, 2.4758, 2.4996,\n", + " 2.6144, 2.5791, 2.6038, 2.5677, 2.5547, 2.4311, 2.4807, 2.4183, 2.5456,\n", + " 2.4966, 2.4418, 2.4953, 2.5107, 2.3592, 2.3458, 2.4023, 2.4552, 2.4189,\n", + " 2.6062, 2.2792, 2.4072, 2.4007, 2.4151, 2.2264, 1.4143, 1.9070, 1.7658,\n", + " 1.6440, 1.4815, 1.6100, 1.5633, 1.2600, 0.7010, 0.7255, 1.2486, 1.8830,\n", + " 2.0700, 1.3394, 1.8922]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5900, -0.1130, -1.2244, -0.1058, 1.0146, -1.2306, 1.0990, -0.7425,\n", + " 0.7133, 0.7996, 0.6411, 0.0091, 0.2680, -0.4233, -0.1887, -0.3144,\n", + " -0.3076, -0.4078, -1.0599, 0.8640, -0.7690, 1.2873, -1.0925, 0.2689,\n", + " -1.1514, 0.3345, 0.4218, 0.4332, 1.2740, -0.2287, 0.0296, 0.4378,\n", + " -0.1313, 0.1269, -1.0568, -0.4028, 0.0501, -0.6423, -0.2265, -0.5236,\n", + " 0.2514, -0.4306, -0.6986]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4261, 0.3667, 0.1545, 0.3176, 0.1828, -0.1173, -0.4253, -0.4650,\n", + " -0.3084, -0.3576, -0.3087, 0.2087, 0.2061, 0.3257, 0.2248, 0.3162,\n", + " 0.2716, 0.1193, 0.1951, 0.2087, 0.1192, 0.0700, 0.1466, 0.1119,\n", + " 0.0994, 0.0236, -0.0424, 0.0908, 0.2197, 0.3801, 0.3355, 0.2868,\n", + " 0.3623, 0.3375, 0.3221, 0.3155, -0.1203, -0.0102, 0.0407, -0.4172,\n", + " -0.3610, -0.3817, -0.3970]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 7.190967153292149e-05\n", + "Grad encoder.fc1.bias: 0.00028768242918886244\n", + "Grad encoder.encoder.0.weight: 3.0492557925754227e-05\n", + "Grad encoder.encoder.0.bias: 0.0003304933197796345\n", + "Grad encoder.encoder.2.weight: 2.0021136151626706e-05\n", + "Grad encoder.encoder.2.bias: 0.00026862166123464704\n", + "Grad encoder.encoder.4.weight: 7.733945676591247e-05\n", + "Grad encoder.encoder.4.bias: 0.0007091222214512527\n", + "Grad decoder.fc1.0.weight: 3.1090410629985854e-05\n", + "Grad decoder.fc1.0.bias: 0.00018740158702712506\n", + "Grad decoder.fc1.2.weight: 5.665394201059826e-05\n", + "Grad decoder.fc1.2.bias: 0.00021498813293874264\n", + "Grad decoder.fc1.4.weight: 8.340514614246786e-05\n", + "Grad decoder.fc1.4.bias: 0.000371962261851877\n", + "Grad decoder.fc2.weight: 0.00013330370711628348\n", + "Grad decoder.fc2.bias: 0.0021413385402411222\n", + "Grad _memory_unit.weight_ih_l0: 5.7438128351350315e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.9009032004978508e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.4864715922158211e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.742751351230254e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.510466144187376e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.7363865228835493e-05\n", + "Data X Sample: tensor([[1.5796, 1.8833, 2.1052, 2.2543, 2.4655, 2.4751, 2.5837, 2.6788, 2.7290,\n", + " 2.7677, 2.7250, 2.8394, 2.7319, 2.6474, 2.7010, 2.7023, 2.6730, 2.6346,\n", + " 2.5792, 2.6296, 2.5861, 2.5658, 2.6652, 2.5596, 2.6388, 2.5701, 2.6480,\n", + " 2.6755, 2.2862, 2.4334, 2.3797, 2.3433, 2.3298, 1.5287, 1.9781, 1.8801,\n", + " 1.8210, 1.6750, 1.7557, 1.6115, 1.3745, 0.7767, 0.7559, 1.3921, 2.1843,\n", + " 2.2301, 1.5638, 2.0799]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4093, -0.1500, 0.7433, 0.5594, 0.6177, -0.7459, -0.8461, -0.5669,\n", + " -1.1334, -0.0047, -0.1424, 0.5407, 0.1906, 0.3427, 1.3254, -0.4378,\n", + " 0.5666, -0.1300, -0.3175, -0.9422, -0.6788, 0.0805, 0.2442, 0.2467,\n", + " -1.2449, 1.3707, 0.0805, -0.2424, -0.3119, -0.2420, -0.5388, 0.0984,\n", + " 0.0139, 0.4310, 0.9679, 0.1837, -0.0317, 0.1511, 0.0040, -0.1775,\n", + " -0.3200, -0.5123, -0.7294]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3891, 0.3388, 0.1346, 0.2637, 0.1605, -0.1257, -0.3934, -0.4213,\n", + " -0.2872, -0.3349, -0.2933, 0.1860, 0.1885, 0.3049, 0.2088, 0.2870,\n", + " 0.2513, 0.1043, 0.1758, 0.1934, 0.1009, 0.0681, 0.1240, 0.0885,\n", + " 0.1002, 0.0281, -0.0363, 0.0739, 0.2118, 0.3478, 0.3046, 0.2559,\n", + " 0.3302, 0.2970, 0.2844, 0.2912, -0.1080, -0.0048, 0.0407, -0.3731,\n", + " -0.3198, -0.3492, -0.3677]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005193765973672271\n", + "Grad encoder.fc1.bias: 0.0007214441429823637\n", + "Grad encoder.encoder.0.weight: 0.00014414801262319088\n", + "Grad encoder.encoder.0.bias: 0.0004751607193611562\n", + "Grad encoder.encoder.2.weight: 7.375757559202611e-05\n", + "Grad encoder.encoder.2.bias: 0.0003671738086268306\n", + "Grad encoder.encoder.4.weight: 0.00017403331003151834\n", + "Grad encoder.encoder.4.bias: 0.0006769527681171894\n", + "Grad decoder.fc1.0.weight: 4.702193837147206e-05\n", + "Grad decoder.fc1.0.bias: 0.00014969923358876258\n", + "Grad decoder.fc1.2.weight: 4.5900349505245686e-05\n", + "Grad decoder.fc1.2.bias: 0.00017072499031201005\n", + "Grad decoder.fc1.4.weight: 5.979742491035722e-05\n", + "Grad decoder.fc1.4.bias: 0.00020050430612172931\n", + "Grad decoder.fc2.weight: 7.941984222270548e-05\n", + "Grad decoder.fc2.bias: 0.0017081474652513862\n", + "Grad _memory_unit.weight_ih_l0: 1.6772556818978046e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.415073352807667e-06\n", + "Grad _memory_unit.bias_hh_l0: 4.317594175518025e-06\n", + "Grad _memory_unit.weight_ih_l1: 8.624617180430505e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.304493657196872e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.6649568351567723e-05\n", + "Data X Sample: tensor([[1.6379, 1.9095, 1.9399, 2.1581, 2.2829, 2.4044, 2.4805, 2.4659, 2.5801,\n", + " 2.6144, 2.5537, 2.6856, 2.5943, 2.5438, 2.4765, 2.4329, 2.3523, 2.5011,\n", + " 2.4512, 2.4939, 2.5370, 2.5934, 2.6435, 2.5576, 2.6163, 2.6850, 2.6666,\n", + " 2.5817, 2.3313, 2.4236, 2.3937, 2.4676, 2.2924, 1.4898, 1.9805, 1.7926,\n", + " 1.6715, 1.6114, 1.5593, 1.5973, 1.2457, 0.7329, 0.7195, 1.2199, 1.8314,\n", + " 2.1500, 1.3326, 2.1034]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3390, 0.3445, -0.5503, 2.6014, -0.2725, -0.7606, -1.1704, -0.5822,\n", + " 0.3093, 0.5043, 0.1935, 0.3977, -0.8963, 0.1976, -0.5425, 0.1197,\n", + " 0.7684, -0.0097, -0.2674, 0.1848, -1.6353, 0.2971, 0.4515, -1.1813,\n", + " 0.6300, -0.6605, -0.5637, 1.2953, 0.3927, 0.1552, 1.3931, 0.4282,\n", + " 0.3174, 1.3390, -0.1135, 0.2453, 0.0059, 0.5417, 0.0545, -0.1834,\n", + " 0.4613, -0.4022, -1.4106]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 3.6933e-01, 3.0915e-01, 1.0968e-01, 2.3321e-01, 1.3614e-01,\n", + " -1.3986e-01, -3.7654e-01, -4.0696e-01, -2.7775e-01, -3.2003e-01,\n", + " -2.8819e-01, 1.7370e-01, 1.8362e-01, 2.9609e-01, 2.0115e-01,\n", + " 2.6494e-01, 2.3390e-01, 9.7793e-02, 1.6066e-01, 1.7391e-01,\n", + " 8.0281e-02, 6.7441e-02, 1.1841e-01, 7.6656e-02, 9.1844e-02,\n", + " 1.9912e-02, -2.5701e-02, 7.3519e-02, 2.2211e-01, 3.3947e-01,\n", + " 2.8644e-01, 2.4055e-01, 3.1006e-01, 2.7568e-01, 2.5860e-01,\n", + " 2.7533e-01, -1.0411e-01, 2.2622e-04, 4.0587e-02, -3.4475e-01,\n", + " -2.9727e-01, -3.2204e-01, -3.4605e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00014958818792365491\n", + "Grad encoder.fc1.bias: 0.0004021063505206257\n", + "Grad encoder.encoder.0.weight: 3.672743696370162e-05\n", + "Grad encoder.encoder.0.bias: 0.0005101165734231472\n", + "Grad encoder.encoder.2.weight: 2.737727845669724e-05\n", + "Grad encoder.encoder.2.bias: 0.0003716585342772305\n", + "Grad encoder.encoder.4.weight: 0.00010194725473411381\n", + "Grad encoder.encoder.4.bias: 0.001179780694656074\n", + "Grad decoder.fc1.0.weight: 3.4812477679224685e-05\n", + "Grad decoder.fc1.0.bias: 0.00025026031653396785\n", + "Grad decoder.fc1.2.weight: 4.3570598791120574e-05\n", + "Grad decoder.fc1.2.bias: 0.00021233389270491898\n", + "Grad decoder.fc1.4.weight: 5.46095943718683e-05\n", + "Grad decoder.fc1.4.bias: 0.00016996728663798422\n", + "Grad decoder.fc2.weight: 0.0001099225555662997\n", + "Grad decoder.fc2.bias: 0.0020960471592843533\n", + "Grad _memory_unit.weight_ih_l0: 1.2562401934701484e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.7462199543369934e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.924830394273158e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.0862781841278775e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.870742072351277e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.4030588722089306e-05\n", + "Data X Sample: tensor([[1.4788, 1.6109, 1.8768, 2.0663, 2.3580, 2.1760, 2.2170, 1.9548, 3.3369,\n", + " 4.0646, 4.4222, 4.2066, 4.1256, 3.9207, 3.8182, 3.6090, 3.5237, 3.6347,\n", + " 3.6902, 3.5744, 3.3443, 3.3175, 2.7664, 2.8821, 2.8509, 3.0115, 3.0449,\n", + " 3.1079, 3.1223, 3.1998, 3.2266, 3.3768, 3.8127, 2.8240, 4.6082, 4.9277,\n", + " 5.1541, 5.4834, 5.9581, 5.9863, 1.1025, 0.6393, 0.6366, 1.2544, 1.8592,\n", + " 1.9728, 1.3190, 1.9079]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6944, -1.2920, -0.2273, -0.6888, 0.7246, -0.2064, 0.0348, 0.2765,\n", + " 0.2051, 0.5532, 1.3417, 0.3018, 0.1506, -0.8142, -0.9648, -0.9731,\n", + " -0.1274, -0.0367, 0.0607, -0.5811, 1.2729, 0.0959, -1.7285, 0.2230,\n", + " -0.0541, -1.1945, 0.2513, -0.4121, -0.3943, -0.4232, 0.1508, -0.4542,\n", + " -1.0074, -1.0197, -0.4338, -4.0197, -0.0344, 0.0182, 0.7332, 0.9005,\n", + " 0.5983, 0.3943, -0.7574]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3586, -0.3825, -0.1076, -0.2387, -0.0319, 0.1431, 0.2377, 0.3603,\n", + " 0.2276, 0.2802, 0.3493, -0.2380, -0.2195, -0.2971, -0.2781, -0.3557,\n", + " -0.2183, -0.0645, -0.1507, -0.1000, -0.1147, -0.0222, -0.0565, 0.0035,\n", + " 0.0231, 0.0291, -0.0447, -0.1360, -0.1778, -0.2039, -0.3053, -0.2763,\n", + " -0.2924, -0.4002, -0.1695, -0.2137, -0.0395, -0.0253, 0.0883, 0.4418,\n", + " 0.4424, 0.4839, 0.3060]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00038887799018993974\n", + "Grad encoder.fc1.bias: 0.00030175410211086273\n", + "Grad encoder.encoder.0.weight: 0.00010266179742757231\n", + "Grad encoder.encoder.0.bias: 0.0003706086426973343\n", + "Grad encoder.encoder.2.weight: 5.83977707719896e-05\n", + "Grad encoder.encoder.2.bias: 0.0002767505939118564\n", + "Grad encoder.encoder.4.weight: 0.00014228616782929748\n", + "Grad encoder.encoder.4.bias: 0.0006390137132257223\n", + "Grad decoder.fc1.0.weight: 4.82749892398715e-05\n", + "Grad decoder.fc1.0.bias: 0.00028165942057967186\n", + "Grad decoder.fc1.2.weight: 5.588980275206268e-05\n", + "Grad decoder.fc1.2.bias: 0.0002926390734501183\n", + "Grad decoder.fc1.4.weight: 7.407426164718345e-05\n", + "Grad decoder.fc1.4.bias: 0.0004393652779981494\n", + "Grad decoder.fc2.weight: 0.00010355735139455646\n", + "Grad decoder.fc2.bias: 0.0019489377737045288\n", + "Grad _memory_unit.weight_ih_l0: 4.206454377708724e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.3248583602253348e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.2140739272581413e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.041635070781922e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.414785846369341e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.65656562987715e-05\n", + "Data X Sample: tensor([[1.5181, 1.7682, 1.8422, 1.9963, 2.0523, 2.2025, 2.4897, 2.3608, 2.3897,\n", + " 2.5307, 2.5537, 2.6233, 2.5122, 2.4538, 2.3655, 2.4028, 2.3365, 2.4083,\n", + " 2.4512, 2.3711, 2.3677, 2.4387, 2.4002, 2.4279, 2.4342, 2.5544, 2.4748,\n", + " 2.4961, 2.3070, 2.3221, 2.3237, 2.4787, 2.2660, 1.4006, 1.9364, 1.7536,\n", + " 1.6302, 1.4550, 1.5846, 1.5604, 1.2218, 0.6791, 0.7195, 1.1682, 1.8314,\n", + " 2.0700, 1.3734, 2.0174]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1210, 0.3536, -0.1316, 1.8687, -0.6374, -0.0911, 1.2654, -1.3360,\n", + " 0.3255, 0.4042, 0.6936, 0.1214, 0.1898, 0.7696, -0.3524, 1.2137,\n", + " 0.0052, -0.2084, -1.1486, 2.0510, -0.2256, -0.3311, 0.1401, -0.6478,\n", + " -1.0840, 0.7857, 0.0097, 1.2690, -0.2917, 0.2588, 0.9415, -0.0704,\n", + " 0.7772, 0.8695, 0.3235, 0.0063, -0.4229, -0.0557, 0.2870, -1.0518,\n", + " 0.7352, -1.1776, -0.1238]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3073, 0.2409, 0.0648, 0.1563, 0.0899, -0.1471, -0.3216, -0.3416,\n", + " -0.2349, -0.2670, -0.2539, 0.1397, 0.1540, 0.2540, 0.1629, 0.2043,\n", + " 0.1828, 0.0725, 0.1273, 0.1342, 0.0443, 0.0614, 0.0927, 0.0470,\n", + " 0.0785, 0.0165, -0.0115, 0.0677, 0.2130, 0.2850, 0.2352, 0.1913,\n", + " 0.2514, 0.2158, 0.2002, 0.2278, -0.0850, 0.0062, 0.0409, -0.2663,\n", + " -0.2225, -0.2557, -0.2863]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0007177870720624924\n", + "Grad encoder.fc1.bias: 0.0005029073217883706\n", + "Grad encoder.encoder.0.weight: 0.00021034166275057942\n", + "Grad encoder.encoder.0.bias: 0.0006752479239366949\n", + "Grad encoder.encoder.2.weight: 0.00011991753126494586\n", + "Grad encoder.encoder.2.bias: 0.0005164841422811151\n", + "Grad encoder.encoder.4.weight: 0.00027574028354138136\n", + "Grad encoder.encoder.4.bias: 0.0013158046640455723\n", + "Grad decoder.fc1.0.weight: 7.931899017421529e-05\n", + "Grad decoder.fc1.0.bias: 0.000342159386491403\n", + "Grad decoder.fc1.2.weight: 6.064253830118105e-05\n", + "Grad decoder.fc1.2.bias: 0.0003122053458355367\n", + "Grad decoder.fc1.4.weight: 4.5955603127367795e-05\n", + "Grad decoder.fc1.4.bias: 0.00032871513394638896\n", + "Grad decoder.fc2.weight: 0.00012574392894748598\n", + "Grad decoder.fc2.bias: 0.0021580541506409645\n", + "Grad _memory_unit.weight_ih_l0: 7.294389888556907e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.3225933798821643e-05\n", + "Grad _memory_unit.bias_hh_l0: 7.394642125291284e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.2844383238407318e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.465059414040297e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.198540071025491e-05\n", + "Data X Sample: tensor([[2.7741, 3.3063, 3.7340, 3.8002, 4.1730, 4.1266, 4.3277, 4.3455, 4.3206,\n", + " 4.2494, 4.2794, 4.1384, 3.9658, 3.9343, 3.8257, 3.6363, 3.5756, 3.4915,\n", + " 3.5580, 3.4051, 3.4399, 3.4614, 2.8990, 2.9031, 2.8884, 2.8966, 2.9277,\n", + " 2.9407, 3.0667, 3.1998, 3.3910, 3.3961, 3.5377, 2.5929, 4.1081, 4.6845,\n", + " 4.9988, 5.4701, 6.0912, 5.8587, 2.2813, 1.2586, 1.2207, 2.1987, 3.2863,\n", + " 3.3509, 2.3864, 3.5812]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4556, -0.7347, -0.7260, -0.5626, -0.5084, 2.1905, 0.3588, 0.7991,\n", + " 0.0043, 1.2097, 0.1599, 0.9520, -0.6832, 0.6228, -0.7303, 1.0386,\n", + " 0.4414, -0.5271, -0.5311, -0.8918, 0.8144, 1.0537, 0.3153, -1.6572,\n", + " -0.1408, 1.2221, 0.9521, 0.1030, -0.3867, 1.2080, 0.2888, 0.9997,\n", + " 2.6213, 1.3267, -0.5720, 0.9368, 0.6291, -0.6480, 1.1197, -0.3489,\n", + " 1.2101, -0.8109, 0.1665]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2738, -0.3152, -0.0937, -0.2189, -0.0561, 0.0891, 0.1609, 0.2724,\n", + " 0.1811, 0.2260, 0.2503, -0.1776, -0.1626, -0.2209, -0.2192, -0.2932,\n", + " -0.1979, -0.0587, -0.1022, -0.0824, -0.0864, -0.0232, -0.0561, -0.0138,\n", + " 0.0073, 0.0221, -0.0145, -0.0767, -0.1206, -0.1698, -0.2273, -0.2062,\n", + " -0.2275, -0.3017, -0.1389, -0.1606, -0.0343, -0.0081, 0.0594, 0.3418,\n", + " 0.3707, 0.3705, 0.2416]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00019668519962579012\n", + "Grad encoder.fc1.bias: 0.0006519844755530357\n", + "Grad encoder.encoder.0.weight: 5.649041122524068e-05\n", + "Grad encoder.encoder.0.bias: 0.00043327960884198546\n", + "Grad encoder.encoder.2.weight: 2.899772152886726e-05\n", + "Grad encoder.encoder.2.bias: 0.00046928817755542696\n", + "Grad encoder.encoder.4.weight: 7.784783520037308e-05\n", + "Grad encoder.encoder.4.bias: 0.0009727334836497903\n", + "Grad decoder.fc1.0.weight: 3.0748098652111366e-05\n", + "Grad decoder.fc1.0.bias: 0.00030913169030100107\n", + "Grad decoder.fc1.2.weight: 4.4656306272372603e-05\n", + "Grad decoder.fc1.2.bias: 0.000262331566773355\n", + "Grad decoder.fc1.4.weight: 5.81227577640675e-05\n", + "Grad decoder.fc1.4.bias: 0.00028750667115673423\n", + "Grad decoder.fc2.weight: 8.145521860569715e-05\n", + "Grad decoder.fc2.bias: 0.001893723732791841\n", + "Grad _memory_unit.weight_ih_l0: 7.15404758011573e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.022890374879353e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.0235834856284782e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.024304649239639e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.985317304497585e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.421900328248739e-05\n", + "Data X Sample: tensor([[1.3695, 1.5599, 1.5612, 1.5568, 1.7348, 1.8357, 1.9505, 2.0939, 2.2530,\n", + " 3.4517, 3.9146, 4.0021, 3.7261, 3.6835, 3.6568, 3.3601, 3.3429, 3.4006,\n", + " 3.4011, 3.3196, 3.2927, 3.2164, 2.8556, 2.7542, 2.7702, 2.8888, 2.9543,\n", + " 2.9651, 2.9210, 3.0426, 3.0761, 3.1806, 3.5135, 2.6409, 4.2282, 4.6772,\n", + " 4.8533, 5.1600, 5.6665, 5.3934, 1.0691, 0.5954, 0.5780, 1.1166, 1.4509,\n", + " 1.5668, 1.0062, 1.4935]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.1760, 0.5365, -1.1307, -0.6277, 1.0642, 1.4590, 0.7816, 0.0594,\n", + " 0.2596, 0.6161, 0.0919, -0.6485, -0.2417, -0.5214, 0.3200, 0.4633,\n", + " 0.8571, 0.9644, 0.3282, 1.2425, 0.8191, 0.9162, 0.6606, 0.5619,\n", + " 0.4460, 0.1709, -0.5780, 0.2232, 0.9352, -0.0754, -0.3068, 0.6743,\n", + " 0.1066, -0.9699, 0.3028, 1.3917, 1.0570, 0.3924, -0.2296, 0.4248,\n", + " 0.3747, 0.2766, -0.0185]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3267, -0.3634, -0.1032, -0.2274, -0.0404, 0.1210, 0.2110, 0.3257,\n", + " 0.2206, 0.2648, 0.3153, -0.2149, -0.2017, -0.2712, -0.2579, -0.3299,\n", + " -0.2108, -0.0626, -0.1334, -0.0880, -0.1021, -0.0176, -0.0569, -0.0037,\n", + " 0.0134, 0.0218, -0.0350, -0.1158, -0.1578, -0.1948, -0.2807, -0.2564,\n", + " -0.2698, -0.3648, -0.1648, -0.1946, -0.0323, -0.0181, 0.0855, 0.4062,\n", + " 0.4206, 0.4414, 0.2821]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00018578264280222356\n", + "Grad encoder.fc1.bias: 0.00020106662122998387\n", + "Grad encoder.encoder.0.weight: 4.928412090521306e-05\n", + "Grad encoder.encoder.0.bias: 0.0001381097245030105\n", + "Grad encoder.encoder.2.weight: 2.9931088647572324e-05\n", + "Grad encoder.encoder.2.bias: 0.00013755164400208741\n", + "Grad encoder.encoder.4.weight: 9.125928045250475e-05\n", + "Grad encoder.encoder.4.bias: 0.00030907418113201857\n", + "Grad decoder.fc1.0.weight: 2.5626484784879722e-05\n", + "Grad decoder.fc1.0.bias: 0.0001209500987897627\n", + "Grad decoder.fc1.2.weight: 4.1248538764193654e-05\n", + "Grad decoder.fc1.2.bias: 0.00017304308130405843\n", + "Grad decoder.fc1.4.weight: 5.939402035437524e-05\n", + "Grad decoder.fc1.4.bias: 0.0004869071417488158\n", + "Grad decoder.fc2.weight: 9.168387623503804e-05\n", + "Grad decoder.fc2.bias: 0.0018167205853387713\n", + "Grad _memory_unit.weight_ih_l0: 2.813099854392931e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.142793376464397e-06\n", + "Grad _memory_unit.bias_hh_l0: 4.6152704271662515e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.3879911193726002e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.3148142392747104e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.6529043932678178e-05\n", + "Data X Sample: tensor([[1.8915, 1.6386, 1.8332, 2.0400, 2.0763, 2.0640, 2.1169, 3.8117, 4.4231,\n", + " 4.4185, 4.3492, 4.4325, 4.1434, 4.0788, 3.8409, 3.7252, 3.8193, 3.7198,\n", + " 3.6282, 3.5837, 3.5234, 3.4599, 3.1327, 2.9165, 2.7495, 2.7973, 2.8424,\n", + " 2.9651, 2.9141, 2.9181, 3.0691, 3.2469, 3.5883, 2.6363, 4.4219, 4.7501,\n", + " 5.1797, 5.4595, 6.1419, 6.0204, 1.1168, 0.6134, 0.6851, 1.1108, 1.7918,\n", + " 1.9556, 1.0878, 1.9313]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3389, -0.0702, 1.0955, -0.3404, -0.6958, 0.6098, 0.2167, 0.2359,\n", + " 0.3731, 0.2646, 0.3315, -0.1490, 1.8153, 0.4004, -0.5452, -0.4193,\n", + " -1.0826, -1.4895, -3.0687, 0.4977, -0.5241, 0.7563, 1.5037, 0.8560,\n", + " -0.3725, -0.2244, -0.6457, -2.2755, -1.1879, -0.9270, -0.8931, -0.0533,\n", + " -0.5115, -0.6363, -1.0531, 0.4886, -0.9960, 0.8631, 0.2630, 0.4044,\n", + " -0.1066, 0.1702, 0.4469]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3067, -0.3480, -0.0994, -0.2209, -0.0462, 0.1087, 0.1943, 0.3047,\n", + " 0.2115, 0.2533, 0.2928, -0.2023, -0.1896, -0.2543, -0.2438, -0.3135,\n", + " -0.2059, -0.0604, -0.1220, -0.0831, -0.0939, -0.0186, -0.0568, -0.0077,\n", + " 0.0096, 0.0197, -0.0269, -0.1019, -0.1455, -0.1876, -0.2632, -0.2393,\n", + " -0.2545, -0.3416, -0.1600, -0.1820, -0.0303, -0.0142, 0.0795, 0.3829,\n", + " 0.4039, 0.4148, 0.2670]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00014487915905192494\n", + "Grad encoder.fc1.bias: 0.0003886600607074797\n", + "Grad encoder.encoder.0.weight: 4.525838448898867e-05\n", + "Grad encoder.encoder.0.bias: 0.00035561074037104845\n", + "Grad encoder.encoder.2.weight: 2.7066489565186203e-05\n", + "Grad encoder.encoder.2.bias: 0.00025316834216937423\n", + "Grad encoder.encoder.4.weight: 9.08322399482131e-05\n", + "Grad encoder.encoder.4.bias: 0.0008352787117473781\n", + "Grad decoder.fc1.0.weight: 2.5255436412408017e-05\n", + "Grad decoder.fc1.0.bias: 0.00015297379286494106\n", + "Grad decoder.fc1.2.weight: 3.1844876502873376e-05\n", + "Grad decoder.fc1.2.bias: 0.0001828355889301747\n", + "Grad decoder.fc1.4.weight: 4.720354627352208e-05\n", + "Grad decoder.fc1.4.bias: 0.0003653440799098462\n", + "Grad decoder.fc2.weight: 7.788977382006124e-05\n", + "Grad decoder.fc2.bias: 0.0016307660844177008\n", + "Grad _memory_unit.weight_ih_l0: 7.975350854394492e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.881562068068888e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.477264868299244e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.987890755117405e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.956198245054111e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.4591601686552167e-05\n", + "Data X Sample: tensor([[1.2613, 1.3691, 1.6303, 1.8323, 2.0165, 3.6699, 4.0458, 4.2944, 4.1253,\n", + " 4.0709, 4.0637, 3.9262, 3.7017, 3.8007, 3.6694, 3.3847, 3.3665, 3.2904,\n", + " 3.2276, 3.1968, 3.2167, 3.1077, 2.7664, 2.6703, 2.6144, 2.7085, 2.7599,\n", + " 2.9774, 2.8621, 2.9574, 3.0236, 3.1530, 3.3397, 2.3594, 4.0518, 4.5385,\n", + " 4.9713, 5.3138, 5.8947, 5.6175, 0.9975, 0.5536, 0.5922, 1.0247, 1.5302,\n", + " 1.8127, 1.2374, 1.8297]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5761, -0.8463, -0.4561, -0.8513, -0.3360, 0.5043, -0.0318, 0.1611,\n", + " 0.8639, -0.4357, 0.8395, -0.4652, 1.4864, 0.5698, 0.1208, 0.3205,\n", + " -0.3339, 0.4509, 0.8757, 1.2427, -0.8664, -0.4682, -0.5155, 0.8002,\n", + " -1.5696, -1.0562, -0.2578, -0.7024, -0.5873, 0.9780, -0.2538, -0.6879,\n", + " 0.2271, 0.0422, -0.5362, 0.6055, -0.9148, 0.4193, 0.7524, -1.1766,\n", + " 0.2700, -0.2805, -0.3859]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2308, -0.2829, -0.0865, -0.2049, -0.0697, 0.0625, 0.1255, 0.2264,\n", + " 0.1621, 0.2014, 0.2022, -0.1491, -0.1371, -0.1846, -0.1897, -0.2575,\n", + " -0.1880, -0.0549, -0.0781, -0.0700, -0.0695, -0.0244, -0.0560, -0.0233,\n", + " -0.0025, 0.0181, 0.0032, -0.0473, -0.0945, -0.1546, -0.1903, -0.1716,\n", + " -0.1954, -0.2509, -0.1289, -0.1327, -0.0286, 0.0009, 0.0466, 0.2913,\n", + " 0.3349, 0.3124, 0.2103]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00024948560167104006\n", + "Grad encoder.fc1.bias: 0.0004000681219622493\n", + "Grad encoder.encoder.0.weight: 6.685536936856806e-05\n", + "Grad encoder.encoder.0.bias: 0.000428527855547145\n", + "Grad encoder.encoder.2.weight: 4.071564399055205e-05\n", + "Grad encoder.encoder.2.bias: 0.0003694832557812333\n", + "Grad encoder.encoder.4.weight: 0.0001397132291458547\n", + "Grad encoder.encoder.4.bias: 0.0010641519911587238\n", + "Grad decoder.fc1.0.weight: 4.022913708467968e-05\n", + "Grad decoder.fc1.0.bias: 0.00028762026340700686\n", + "Grad decoder.fc1.2.weight: 6.040553125785664e-05\n", + "Grad decoder.fc1.2.bias: 0.0003422517329454422\n", + "Grad decoder.fc1.4.weight: 7.564839324913919e-05\n", + "Grad decoder.fc1.4.bias: 0.0006979033350944519\n", + "Grad decoder.fc2.weight: 9.46891013882123e-05\n", + "Grad decoder.fc2.bias: 0.0023551592603325844\n", + "Grad _memory_unit.weight_ih_l0: 6.688646863040049e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.1972904505673796e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.1801426808233373e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.671441279744613e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.492558506783098e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.6846940929535776e-05\n", + "Data X Sample: tensor([[1.4905, 1.5818, 1.8362, 1.9504, 2.0165, 2.0802, 1.9982, 2.0159, 3.2807,\n", + " 4.1341, 4.4127, 4.3176, 4.2454, 3.9397, 3.8232, 3.7922, 3.7423, 3.6153,\n", + " 3.5271, 3.4423, 3.5332, 3.4002, 3.0749, 2.8840, 2.9260, 2.9776, 2.9783,\n", + " 3.0793, 3.0008, 3.2850, 3.2545, 3.3381, 3.7797, 2.8332, 4.6082, 4.8742,\n", + " 5.0499, 5.4887, 6.0342, 5.9381, 1.1072, 0.6393, 0.7255, 1.1510, 1.8513,\n", + " 1.9957, 1.3598, 1.8375]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3707, 0.0611, -0.0118, 0.5402, 1.0333, 0.5713, 0.8653, -1.0763,\n", + " -0.6930, -0.2461, -0.4395, -3.4102, 0.2379, 0.6456, -0.3451, 0.2474,\n", + " 0.8177, 0.7898, -0.1944, -0.5942, -1.9072, 0.2138, -1.0069, -0.6907,\n", + " 3.9358, -0.5312, -1.7402, 0.3959, -0.6242, 0.2158, 0.8342, 0.4867,\n", + " 1.2746, 1.1009, -0.0799, -0.3646, -0.8912, 0.1931, 0.0000, -1.9275,\n", + " 0.1274, 0.6659, 0.6097]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2927, -0.3375, -0.0976, -0.2134, -0.0519, 0.1017, 0.1852, 0.2882,\n", + " 0.2082, 0.2465, 0.2776, -0.1943, -0.1839, -0.2442, -0.2347, -0.3004,\n", + " -0.2036, -0.0607, -0.1130, -0.0769, -0.0855, -0.0185, -0.0576, -0.0099,\n", + " 0.0047, 0.0176, -0.0207, -0.0922, -0.1400, -0.1848, -0.2528, -0.2306,\n", + " -0.2444, -0.3251, -0.1602, -0.1735, -0.0267, -0.0110, 0.0762, 0.3647,\n", + " 0.3923, 0.3950, 0.2584]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00015986456128302962\n", + "Grad encoder.fc1.bias: 0.00037290138425305486\n", + "Grad encoder.encoder.0.weight: 4.66342389700003e-05\n", + "Grad encoder.encoder.0.bias: 0.00024096369452308863\n", + "Grad encoder.encoder.2.weight: 2.641797073010821e-05\n", + "Grad encoder.encoder.2.bias: 0.00018487684428691864\n", + "Grad encoder.encoder.4.weight: 7.694439409533516e-05\n", + "Grad encoder.encoder.4.bias: 0.0005536565440706909\n", + "Grad decoder.fc1.0.weight: 3.144708534819074e-05\n", + "Grad decoder.fc1.0.bias: 0.00022933841682970524\n", + "Grad decoder.fc1.2.weight: 4.922161315334961e-05\n", + "Grad decoder.fc1.2.bias: 0.00024684396339580417\n", + "Grad decoder.fc1.4.weight: 4.7699009883217514e-05\n", + "Grad decoder.fc1.4.bias: 0.0003770329640246928\n", + "Grad decoder.fc2.weight: 6.602471694350243e-05\n", + "Grad decoder.fc2.bias: 0.0017010483425110579\n", + "Grad _memory_unit.weight_ih_l0: 3.252043597967713e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.899342350952793e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.715267879073508e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.4903611145200557e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.032254946650937e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.987424911931157e-05\n", + "Data X Sample: tensor([[1.4565, 1.4492, 1.6243, 1.7470, 1.8338, 1.8018, 1.9628, 2.0329, 3.4296,\n", + " 4.1310, 4.2192, 4.2007, 3.9991, 3.8225, 3.7122, 3.6555, 3.5504, 3.6482,\n", + " 3.5167, 3.3921, 3.4620, 3.4201, 2.9568, 2.8382, 2.9185, 2.8861, 2.9357,\n", + " 3.0345, 2.9314, 3.1016, 3.1601, 3.2386, 3.7775, 2.7759, 4.5984, 4.9763,\n", + " 5.3056, 5.4887, 6.1990, 6.0034, 1.0643, 0.5835, 0.6063, 1.0735, 1.5421,\n", + " 1.7669, 1.2306, 1.7046]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.7941, -0.5242, -0.7347, -0.6906, 0.0718, 0.4843, 0.1447, 0.3390,\n", + " 0.3224, 0.5389, 0.4368, -0.1341, -0.2010, -1.1277, -0.1012, -0.8706,\n", + " -0.8356, 0.2925, 0.5115, 0.0589, 0.1736, -0.3895, 0.7766, 0.1389,\n", + " -1.0821, -0.7944, 0.2540, -0.3476, 0.0758, -1.1672, 0.1570, -1.2863,\n", + " -0.4723, -0.7222, 0.4064, -1.0440, 0.0213, -0.8872, -0.3712, 0.6569,\n", + " 0.5347, 0.5903, 0.8318]], device='cuda:0')\n", + "Prediction Sample: tensor([[-2.7772e-01, -3.2394e-01, -9.4874e-02, -2.0815e-01, -5.6155e-02,\n", + " 9.3425e-02, 1.7316e-01, 2.7068e-01, 1.9969e-01, 2.3668e-01,\n", + " 2.6014e-01, -1.8384e-01, -1.7507e-01, -2.3082e-01, -2.2438e-01,\n", + " -2.8821e-01, -2.0011e-01, -6.0380e-02, -1.0282e-01, -7.3037e-02,\n", + " -7.8788e-02, -1.8683e-02, -5.8614e-02, -1.2786e-02, 2.6446e-04,\n", + " 1.6798e-02, -1.5139e-02, -8.2762e-02, -1.3223e-01, -1.7954e-01,\n", + " -2.3874e-01, -2.1858e-01, -2.3297e-01, -3.0712e-01, -1.5575e-01,\n", + " -1.6346e-01, -2.4615e-02, -7.5123e-03, 7.0433e-02, 3.4544e-01,\n", + " 3.7881e-01, 3.7437e-01, 2.4786e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 3.6493023799266666e-05\n", + "Grad encoder.fc1.bias: 0.0004744588804896921\n", + "Grad encoder.encoder.0.weight: 1.0547008059802465e-05\n", + "Grad encoder.encoder.0.bias: 0.00032681861193850636\n", + "Grad encoder.encoder.2.weight: 1.3310944268596359e-05\n", + "Grad encoder.encoder.2.bias: 0.0002585122419986874\n", + "Grad encoder.encoder.4.weight: 5.9357127611292526e-05\n", + "Grad encoder.encoder.4.bias: 0.0007066818652674556\n", + "Grad decoder.fc1.0.weight: 2.346649307582993e-05\n", + "Grad decoder.fc1.0.bias: 0.00015411103959195316\n", + "Grad decoder.fc1.2.weight: 3.808220935752615e-05\n", + "Grad decoder.fc1.2.bias: 0.00018311322492081672\n", + "Grad decoder.fc1.4.weight: 4.994210758013651e-05\n", + "Grad decoder.fc1.4.bias: 0.00027642131317406893\n", + "Grad decoder.fc2.weight: 9.65706494753249e-05\n", + "Grad decoder.fc2.bias: 0.0017998389666900039\n", + "Grad _memory_unit.weight_ih_l0: 7.956997251312714e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.002249650307931e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.537393472972326e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.6298686205118429e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.987244053860195e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.983390757231973e-05\n", + "Data X Sample: tensor([[1.4109, 1.5454, 1.6844, 1.8717, 2.0472, 2.0449, 1.9566, 1.9605, 1.9333,\n", + " 3.5086, 4.2319, 4.2942, 3.9525, 3.8443, 3.7173, 3.5283, 3.4718, 3.4567,\n", + " 3.3350, 3.4684, 3.4669, 3.5012, 3.2556, 2.9795, 2.8772, 2.7582, 2.7918,\n", + " 2.8754, 2.7545, 2.8919, 3.0481, 3.0839, 3.4585, 2.5128, 4.3778, 4.6237,\n", + " 4.8631, 5.3323, 5.8630, 5.6317, 0.9832, 0.6154, 0.6326, 1.1539, 1.6055,\n", + " 1.8127, 1.2578, 1.8532]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4663, 0.3902, 0.0929, 0.5558, -0.3333, 0.7650, 0.0758, 0.0833,\n", + " 0.3058, 0.4740, 0.8421, 0.1071, -1.0201, 0.4162, -0.1751, 0.6107,\n", + " -0.0491, 0.8764, -0.1786, 0.7071, 1.1544, -0.4161, 0.4246, -0.0827,\n", + " -0.4161, 0.0333, 0.7965, -0.8647, -0.4777, 0.4027, 0.0565, -0.4745,\n", + " 2.7458, 0.1419, 0.6321, -0.2417, 0.1438, -0.1769, -1.1945, -1.1653,\n", + " 0.5669, -0.4186, -0.6437]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2343, -0.2852, -0.0875, -0.1987, -0.0684, 0.0672, 0.1340, 0.2248,\n", + " 0.1700, 0.2059, 0.2079, -0.1522, -0.1450, -0.1903, -0.1938, -0.2558,\n", + " -0.1891, -0.0573, -0.0767, -0.0644, -0.0645, -0.0220, -0.0582, -0.0216,\n", + " -0.0077, 0.0158, 0.0014, -0.0531, -0.1029, -0.1602, -0.1967, -0.1802,\n", + " -0.1988, -0.2548, -0.1366, -0.1352, -0.0230, 0.0012, 0.0503, 0.2927,\n", + " 0.3385, 0.3154, 0.2157]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 5.406588752521202e-05\n", + "Grad encoder.fc1.bias: 0.00024448405019938946\n", + "Grad encoder.encoder.0.weight: 2.069995753117837e-05\n", + "Grad encoder.encoder.0.bias: 0.000172416286659427\n", + "Grad encoder.encoder.2.weight: 1.6708698240108788e-05\n", + "Grad encoder.encoder.2.bias: 0.0002650199458003044\n", + "Grad encoder.encoder.4.weight: 5.0392111006658524e-05\n", + "Grad encoder.encoder.4.bias: 0.0007013709982857108\n", + "Grad decoder.fc1.0.weight: 2.8633661713683978e-05\n", + "Grad decoder.fc1.0.bias: 0.00031084363581612706\n", + "Grad decoder.fc1.2.weight: 4.3188349081901833e-05\n", + "Grad decoder.fc1.2.bias: 0.00026093379710800946\n", + "Grad decoder.fc1.4.weight: 5.0537251809146255e-05\n", + "Grad decoder.fc1.4.bias: 0.0005088676698505878\n", + "Grad decoder.fc2.weight: 7.557549542980269e-05\n", + "Grad decoder.fc2.bias: 0.001600802643224597\n", + "Grad _memory_unit.weight_ih_l0: 3.971281330450438e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.4172328267013654e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.2684176908805966e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.4269099867524346e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.377246220130473e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.662252856884152e-05\n", + "Data X Sample: tensor([[1.5138, 1.8876, 1.9008, 2.0116, 2.1667, 2.1804, 2.2802, 2.2742, 2.3653,\n", + " 2.3617, 2.3507, 2.3876, 2.3990, 2.3529, 2.3403, 2.3317, 2.2186, 2.3309,\n", + " 2.3500, 2.3972, 2.4389, 2.5260, 2.4580, 2.4851, 2.4868, 2.5727, 2.5467,\n", + " 2.5940, 2.2792, 2.5251, 2.4112, 2.3654, 2.1186, 1.4097, 1.8188, 1.7147,\n", + " 1.5732, 1.4762, 1.5719, 1.5320, 1.3125, 0.7050, 0.7053, 1.3118, 1.8552,\n", + " 2.0357, 1.3462, 1.8766]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5188, 0.0929, -0.5745, 0.2507, -0.5432, 0.2916, -0.7109, -0.0790,\n", + " -1.1254, -0.8515, -0.2159, 0.0999, 0.3826, 0.2952, 0.7536, 0.3635,\n", + " 0.6357, -0.8018, 0.3410, 0.5826, -0.3959, -1.0630, -0.5258, 0.8022,\n", + " -0.5015, 1.3888, 0.1468, -0.4295, 1.0362, 0.7789, 0.9730, 1.1791,\n", + " 0.1392, 0.3241, 0.1237, 0.2218, 0.7170, 0.8959, 0.9946, -0.4688,\n", + " -0.3254, -0.0994, 0.2497]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2887, 0.2249, 0.0233, 0.1614, 0.0615, -0.1612, -0.2865, -0.3496,\n", + " -0.1575, -0.1954, -0.2078, 0.1267, 0.1656, 0.2374, 0.1223, 0.2034,\n", + " 0.1842, 0.0792, 0.0942, 0.1263, 0.0239, 0.0628, 0.0602, 0.0241,\n", + " 0.0626, 0.0394, -0.0274, 0.0750, 0.2107, 0.2062, 0.1876, 0.1372,\n", + " 0.2318, 0.1938, 0.1683, 0.1836, -0.0401, 0.0015, 0.0018, -0.2086,\n", + " -0.1775, -0.2241, -0.2649]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005085732555016875\n", + "Grad encoder.fc1.bias: 0.00024916918482631445\n", + "Grad encoder.encoder.0.weight: 0.00013627063890453428\n", + "Grad encoder.encoder.0.bias: 0.0002987452317029238\n", + "Grad encoder.encoder.2.weight: 7.543591345893219e-05\n", + "Grad encoder.encoder.2.bias: 0.00026082457043230534\n", + "Grad encoder.encoder.4.weight: 0.00017540832050144672\n", + "Grad encoder.encoder.4.bias: 0.0005047572776675224\n", + "Grad decoder.fc1.0.weight: 4.830975012737326e-05\n", + "Grad decoder.fc1.0.bias: 0.00018009066116064787\n", + "Grad decoder.fc1.2.weight: 4.749191430164501e-05\n", + "Grad decoder.fc1.2.bias: 0.0001754214899847284\n", + "Grad decoder.fc1.4.weight: 6.862806185381487e-05\n", + "Grad decoder.fc1.4.bias: 0.00043333659414201975\n", + "Grad decoder.fc2.weight: 8.30056524137035e-05\n", + "Grad decoder.fc2.bias: 0.0017745380755513906\n", + "Grad _memory_unit.weight_ih_l0: 3.4615300137375016e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.6671121557010338e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.517688911524601e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.240248252543097e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.8998736524954438e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.43894758366514e-05\n", + "Data X Sample: tensor([[1.6899, 1.9270, 2.0766, 2.2150, 2.3597, 2.4589, 2.5806, 2.6902, 2.6705,\n", + " 2.8230, 2.6996, 2.7499, 2.7497, 2.7128, 2.6556, 2.4425, 2.4765, 2.6056,\n", + " 2.5317, 2.5273, 2.5665, 2.6347, 2.4893, 2.6035, 2.6351, 2.7373, 2.7172,\n", + " 2.7530, 2.3972, 2.5317, 2.4742, 2.4980, 2.3188, 1.5013, 1.9952, 1.8607,\n", + " 1.7915, 1.6909, 1.6353, 1.6455, 1.2409, 0.7846, 0.8084, 1.3491, 1.9543,\n", + " 2.1958, 1.4074, 2.1346]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7997, 0.8221, -0.0757, -0.3168, -1.5865, -0.6695, -3.1817, -2.2625,\n", + " -0.4122, -1.7514, -2.9792, 0.0513, 0.1845, -0.7937, -0.4730, -0.6140,\n", + " 1.2142, -0.7738, -1.1115, -0.6336, 0.3879, 2.2504, 0.7233, -0.4132,\n", + " 0.1463, -0.9159, 0.3831, 0.6702, 1.6888, 1.5182, 1.0992, 0.6143,\n", + " 0.2691, 1.9318, -0.0474, -0.4580, 0.4832, 0.8752, 0.0778, -3.5864,\n", + " -1.8639, -0.6218, 0.5088]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3054, 0.2515, 0.0318, 0.1780, 0.0761, -0.1638, -0.2962, -0.3647,\n", + " -0.1617, -0.2065, -0.2142, 0.1337, 0.1763, 0.2529, 0.1310, 0.2292,\n", + " 0.2072, 0.0858, 0.0992, 0.1430, 0.0283, 0.0701, 0.0583, 0.0261,\n", + " 0.0728, 0.0499, -0.0359, 0.0696, 0.2118, 0.2078, 0.1945, 0.1392,\n", + " 0.2473, 0.2057, 0.1778, 0.1928, -0.0326, 0.0019, -0.0019, -0.2214,\n", + " -0.1923, -0.2450, -0.2848]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001246726023964584\n", + "Grad encoder.fc1.bias: 9.484468318987638e-05\n", + "Grad encoder.encoder.0.weight: 2.5830031518125907e-05\n", + "Grad encoder.encoder.0.bias: 6.207469414221123e-05\n", + "Grad encoder.encoder.2.weight: 2.111205321853049e-05\n", + "Grad encoder.encoder.2.bias: 0.00011717106099240482\n", + "Grad encoder.encoder.4.weight: 7.383242336800322e-05\n", + "Grad encoder.encoder.4.bias: 0.0005652625113725662\n", + "Grad decoder.fc1.0.weight: 3.732231562025845e-05\n", + "Grad decoder.fc1.0.bias: 0.00022672128397971392\n", + "Grad decoder.fc1.2.weight: 6.083735206630081e-05\n", + "Grad decoder.fc1.2.bias: 0.00022873032139614224\n", + "Grad decoder.fc1.4.weight: 6.745162681909278e-05\n", + "Grad decoder.fc1.4.bias: 0.0003485636552795768\n", + "Grad decoder.fc2.weight: 7.314034883165732e-05\n", + "Grad decoder.fc2.bias: 0.0019902323838323355\n", + "Grad _memory_unit.weight_ih_l0: 4.434094535099575e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.5011559046106413e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.3239850886748172e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.3485897600039607e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.02607979089953e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.0694973247591406e-05\n", + "Data X Sample: tensor([[1.4289, 1.5876, 1.7686, 1.8039, 1.8304, 1.9756, 2.0876, 1.8796, 3.5663,\n", + " 4.3774, 4.5459, 4.2202, 4.0457, 3.9397, 3.8585, 3.7280, 3.7989, 3.7585,\n", + " 3.6757, 3.6692, 3.5356, 3.5686, 3.1665, 2.8554, 2.8453, 2.9018, 2.9197,\n", + " 2.9937, 2.9523, 3.0983, 3.1741, 3.2662, 3.8501, 2.8149, 4.6670, 4.9399,\n", + " 5.3567, 5.6901, 6.1483, 6.0090, 1.1263, 0.6393, 0.6690, 1.1194, 1.6213,\n", + " 1.7269, 1.1354, 1.5326]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4522, -1.0786, 0.0213, -0.3703, -0.9654, -0.5693, 0.2926, 0.4254,\n", + " -0.0517, 0.2582, 0.3089, -1.2773, -0.7513, -0.4336, -0.8756, -0.6710,\n", + " 0.0735, -0.0727, 0.0344, -0.1676, -0.1477, 0.1454, -0.3101, -0.3061,\n", + " -0.0969, -0.6711, -0.2743, 0.4263, 0.0036, 0.4531, -0.7316, -0.5409,\n", + " -0.6461, -0.3511, -0.3851, 0.4275, 0.0637, 0.0533, 1.1574, 0.6028,\n", + " 0.3090, 0.4111, 0.6994]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1988, -0.2541, -0.0805, -0.1870, -0.0750, 0.0484, 0.1068, 0.1867,\n", + " 0.1481, 0.1820, 0.1698, -0.1258, -0.1239, -0.1598, -0.1683, -0.2270,\n", + " -0.1800, -0.0561, -0.0554, -0.0534, -0.0534, -0.0245, -0.0596, -0.0269,\n", + " -0.0143, 0.0142, 0.0144, -0.0363, -0.0849, -0.1484, -0.1635, -0.1530,\n", + " -0.1725, -0.2142, -0.1252, -0.1142, -0.0173, 0.0100, 0.0339, 0.2506,\n", + " 0.3057, 0.2683, 0.1902]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000262251851381734\n", + "Grad encoder.fc1.bias: 0.00044939512736164033\n", + "Grad encoder.encoder.0.weight: 8.3312057540752e-05\n", + "Grad encoder.encoder.0.bias: 0.0004032788856420666\n", + "Grad encoder.encoder.2.weight: 4.2580057197483256e-05\n", + "Grad encoder.encoder.2.bias: 0.00029441071092151105\n", + "Grad encoder.encoder.4.weight: 9.022974700201303e-05\n", + "Grad encoder.encoder.4.bias: 0.00049019226571545\n", + "Grad decoder.fc1.0.weight: 3.0432120183832012e-05\n", + "Grad decoder.fc1.0.bias: 0.00016819128359202296\n", + "Grad decoder.fc1.2.weight: 3.710977762239054e-05\n", + "Grad decoder.fc1.2.bias: 0.00018232071306556463\n", + "Grad decoder.fc1.4.weight: 4.558541695587337e-05\n", + "Grad decoder.fc1.4.bias: 0.00027499080169945955\n", + "Grad decoder.fc2.weight: 7.924235978862271e-05\n", + "Grad decoder.fc2.bias: 0.0018491767114028335\n", + "Grad _memory_unit.weight_ih_l0: 3.2766740787337767e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.3745148862653878e-05\n", + "Grad _memory_unit.bias_hh_l0: 7.0602809500996955e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.1352860838087508e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.798878267640248e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.3743881936534308e-05\n", + "Data X Sample: tensor([[1.6899, 1.9386, 2.1533, 2.0532, 2.2794, 2.3042, 2.3772, 2.4630, 2.4801,\n", + " 2.5244, 2.4998, 2.4577, 2.3768, 2.4020, 2.2975, 2.3330, 2.3240, 2.4354,\n", + " 2.4760, 2.5273, 2.5174, 2.6270, 2.6002, 2.6722, 2.5806, 2.7007, 2.5974,\n", + " 2.6062, 2.4041, 2.5579, 2.4217, 2.4676, 2.1472, 1.3571, 1.9021, 1.8461,\n", + " 1.7305, 1.6511, 1.5212, 1.5377, 1.3507, 0.7886, 0.7801, 1.4811, 2.0693,\n", + " 2.0700, 1.3666, 1.9235]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2708, 0.3944, -1.6026, 0.1429, 0.4370, 0.0174, -0.5988, -0.5514,\n", + " -0.0578, -0.2104, -0.1663, -0.2695, 2.3434, -0.4741, 0.5930, 0.8727,\n", + " 0.1593, -1.9856, 3.2076, -0.7166, -0.9843, -0.8532, -0.5022, -0.0631,\n", + " 0.0252, -0.9494, 0.5324, 0.1556, 0.6250, 0.9149, 0.6327, 0.5191,\n", + " -2.1189, 1.2293, 0.6180, -0.7041, 0.0501, -0.7806, -0.4768, 0.1297,\n", + " -0.1372, 0.4993, 0.3745]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3221, 0.2684, 0.0366, 0.2035, 0.0844, -0.1626, -0.3060, -0.3850,\n", + " -0.1539, -0.2043, -0.2102, 0.1385, 0.1951, 0.2671, 0.1364, 0.2511,\n", + " 0.2291, 0.1018, 0.0961, 0.1551, 0.0323, 0.0719, 0.0588, 0.0354,\n", + " 0.0765, 0.0626, -0.0476, 0.0681, 0.2122, 0.1970, 0.1935, 0.1420,\n", + " 0.2589, 0.2192, 0.1854, 0.1910, -0.0226, 0.0006, -0.0219, -0.2278,\n", + " -0.2038, -0.2524, -0.2980]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00018223577353637666\n", + "Grad encoder.fc1.bias: 0.00016452549607492983\n", + "Grad encoder.encoder.0.weight: 5.494000288308598e-05\n", + "Grad encoder.encoder.0.bias: 0.00025612860918045044\n", + "Grad encoder.encoder.2.weight: 2.5421422833460383e-05\n", + "Grad encoder.encoder.2.bias: 0.00020140626293141395\n", + "Grad encoder.encoder.4.weight: 6.939016020623967e-05\n", + "Grad encoder.encoder.4.bias: 0.0006566843949258327\n", + "Grad decoder.fc1.0.weight: 3.194806049577892e-05\n", + "Grad decoder.fc1.0.bias: 0.00025745967286638916\n", + "Grad decoder.fc1.2.weight: 5.26331969012972e-05\n", + "Grad decoder.fc1.2.bias: 0.00026203517336398363\n", + "Grad decoder.fc1.4.weight: 6.344167923089117e-05\n", + "Grad decoder.fc1.4.bias: 0.0003396657994017005\n", + "Grad decoder.fc2.weight: 7.741122681181878e-05\n", + "Grad decoder.fc2.bias: 0.0023677849676460028\n", + "Grad _memory_unit.weight_ih_l0: 3.938818736060057e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.748788392636925e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.3868814676243346e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.8216533135273494e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.528652011184022e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.234777977922931e-05\n", + "Data X Sample: tensor([[2.8080, 2.8169, 2.1653, 1.9963, 2.1872, 2.2615, 3.6991, 4.1169, 4.0740,\n", + " 4.4279, 4.2160, 4.0216, 4.0590, 3.7652, 3.6845, 3.6732, 3.6699, 3.6579,\n", + " 3.6138, 3.5204, 3.3761, 3.3527, 3.1327, 2.8936, 2.8959, 2.9828, 2.8025,\n", + " 2.8387, 2.7684, 2.9542, 2.9291, 3.0811, 3.2297, 2.3777, 4.1302, 4.5045,\n", + " 4.6684, 5.2475, 5.8187, 5.7821, 1.6991, 0.8543, 0.7579, 1.3319, 1.7958,\n", + " 1.9442, 1.3258, 1.7437]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0368, -0.6014, 0.7300, 1.1050, 0.3714, 0.2559, 0.1294, -0.2971,\n", + " -0.3044, 0.2995, -0.0573, -0.9981, -0.8988, -0.6380, 0.1391, -0.3915,\n", + " -1.9430, -1.2518, -1.1513, -0.2313, -0.0060, -0.6863, -1.2727, -0.3957,\n", + " -0.8160, 0.1951, 0.8233, 0.1164, 0.1051, 0.9107, 0.2566, 0.2209,\n", + " 0.6994, -0.6901, -0.0971, 0.3067, 0.2309, -0.3604, 0.0000, 0.1150,\n", + " -0.1212, -0.2054, 0.1375]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1589, -0.2179, -0.0731, -0.1792, -0.0859, 0.0227, 0.0697, 0.1451,\n", + " 0.1202, 0.1530, 0.1231, -0.0953, -0.0942, -0.1215, -0.1376, -0.1971,\n", + " -0.1703, -0.0524, -0.0327, -0.0470, -0.0427, -0.0276, -0.0606, -0.0340,\n", + " -0.0191, 0.0146, 0.0314, -0.0103, -0.0568, -0.1299, -0.1242, -0.1174,\n", + " -0.1422, -0.1654, -0.1084, -0.0892, -0.0150, 0.0186, 0.0142, 0.2029,\n", + " 0.2675, 0.2147, 0.1606]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00018349476158618927\n", + "Grad encoder.fc1.bias: 0.0003613511216826737\n", + "Grad encoder.encoder.0.weight: 5.442304609459825e-05\n", + "Grad encoder.encoder.0.bias: 0.0004036707105115056\n", + "Grad encoder.encoder.2.weight: 3.274629852967337e-05\n", + "Grad encoder.encoder.2.bias: 0.00026781350607052445\n", + "Grad encoder.encoder.4.weight: 9.353592758998275e-05\n", + "Grad encoder.encoder.4.bias: 0.00039498094702139497\n", + "Grad decoder.fc1.0.weight: 3.3983978937612846e-05\n", + "Grad decoder.fc1.0.bias: 0.00017382297664880753\n", + "Grad decoder.fc1.2.weight: 4.079763311892748e-05\n", + "Grad decoder.fc1.2.bias: 0.0001610123727004975\n", + "Grad decoder.fc1.4.weight: 5.313706788001582e-05\n", + "Grad decoder.fc1.4.bias: 0.00032983359415084124\n", + "Grad decoder.fc2.weight: 8.537056419299915e-05\n", + "Grad decoder.fc2.bias: 0.00208150502294302\n", + "Grad _memory_unit.weight_ih_l0: 4.396726126287831e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.2677965059992857e-05\n", + "Grad _memory_unit.bias_hh_l0: 6.394378942786716e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.5710793377365917e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.20894832839258e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.5918276403681375e-05\n", + "Data X Sample: tensor([[1.4555, 1.7099, 1.9324, 2.0816, 2.1582, 2.2968, 2.4204, 2.3892, 2.4874,\n", + " 2.5165, 2.3761, 2.4577, 2.4257, 2.4565, 2.3832, 2.4110, 2.3633, 2.3793,\n", + " 2.4057, 2.4158, 2.4978, 2.5107, 2.4170, 2.4889, 2.5262, 2.5283, 2.5574,\n", + " 2.5532, 2.3243, 2.3286, 2.3972, 2.2411, 2.2484, 1.4234, 1.9119, 1.7439,\n", + " 1.5712, 1.4444, 1.5402, 1.5491, 1.2122, 0.7070, 0.6993, 1.2744, 1.7284,\n", + " 2.2244, 1.3938, 1.7750]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1941, 0.7560, 1.1309, 0.6043, -0.3234, 0.7910, 0.8786, -0.6337,\n", + " 0.3553, 0.3455, 0.1821, -0.7549, 0.7309, -0.6026, 0.8400, 0.7191,\n", + " -0.0603, -0.2024, -0.4925, -1.3734, 0.2255, 0.8917, -1.0532, -0.3180,\n", + " -0.8908, -0.1182, 0.0676, -0.4980, -1.0870, -0.7220, 0.1533, -0.3391,\n", + " 0.6478, -0.1017, -0.3008, -0.1188, 0.0501, 0.7428, 0.2870, -0.0421,\n", + " -0.7382, -0.4818, 0.8253]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3330, 0.2878, 0.0422, 0.2215, 0.0941, -0.1570, -0.3134, -0.3991,\n", + " -0.1415, -0.1994, -0.2023, 0.1409, 0.2154, 0.2776, 0.1453, 0.2701,\n", + " 0.2507, 0.1143, 0.0927, 0.1651, 0.0388, 0.0724, 0.0571, 0.0422,\n", + " 0.0785, 0.0747, -0.0598, 0.0619, 0.2077, 0.1836, 0.1931, 0.1427,\n", + " 0.2651, 0.2304, 0.1902, 0.1829, -0.0123, 0.0009, -0.0409, -0.2302,\n", + " -0.2120, -0.2555, -0.3042]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002631962997838855\n", + "Grad encoder.fc1.bias: 0.0003576037415768951\n", + "Grad encoder.encoder.0.weight: 7.401434413623065e-05\n", + "Grad encoder.encoder.0.bias: 0.00038129626773297787\n", + "Grad encoder.encoder.2.weight: 4.728699059342034e-05\n", + "Grad encoder.encoder.2.bias: 0.00036801237729378045\n", + "Grad encoder.encoder.4.weight: 0.00013159285299479961\n", + "Grad encoder.encoder.4.bias: 0.000847852323204279\n", + "Grad decoder.fc1.0.weight: 4.5648957893718034e-05\n", + "Grad decoder.fc1.0.bias: 0.00032757778535597026\n", + "Grad decoder.fc1.2.weight: 7.276461110450327e-05\n", + "Grad decoder.fc1.2.bias: 0.0003631540748756379\n", + "Grad decoder.fc1.4.weight: 9.150207915809005e-05\n", + "Grad decoder.fc1.4.bias: 0.0005960250273346901\n", + "Grad decoder.fc2.weight: 9.112053521675989e-05\n", + "Grad decoder.fc2.bias: 0.0019435400608927011\n", + "Grad _memory_unit.weight_ih_l0: 5.730949396820506e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.6655627152649686e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.3672866771230474e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.3461925593437627e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.440818833652884e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.140460830763914e-05\n", + "Data X Sample: tensor([[ 0.0159, 0.0146, 0.0225, 0.0044, 0.0017, 0.0250, 0.0277, 0.0099,\n", + " 0.0342, 0.0111, 0.0063, -0.0019, -0.0067, 0.0027, 0.0126, 0.0068,\n", + " -0.0739, -0.0851, -0.1218, -0.1060, -0.0908, -0.0658, -0.1422, -0.1432,\n", + " -0.1107, -0.2272, -0.2584, -0.4283, -0.0624, -0.0688, -0.0840, -0.0553,\n", + " -0.0726, -0.0503, -0.0490, -0.0292, -0.0256, -0.0451, -0.0380, -0.0113,\n", + " 0.0191, -0.0020, 0.0040, 0.0000, -0.0238, 0.0172, 0.0136, 0.0000]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.5623, 0.6334, -2.6606, -2.1117, -0.4770, -1.4372, -0.9308, -0.8784,\n", + " -1.2853, -0.1899, -0.7200, -0.3542, 8.1594, -0.2868, 0.0625, 0.5588,\n", + " -0.3288, -0.8421, 0.1191, 3.0740, -0.8269, 3.3023, -0.7936, -0.2771,\n", + " -0.5023, -0.4633, 1.1678, 0.4834, 1.1802, 0.5336, 0.7062, 0.6543,\n", + " 1.0717, 0.5664, 1.5082, 0.0928, 0.0000, -0.6411, -0.5596, -0.4990,\n", + " -0.8528, -0.7701, 0.0903]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5860, 0.5028, 0.1015, 0.4404, 0.1363, -0.2869, -0.5752, -0.7890,\n", + " -0.2331, -0.3340, -0.2881, 0.3020, 0.3241, 0.4453, 0.2527, 0.4383,\n", + " 0.4558, 0.1995, 0.1485, 0.2428, 0.0778, 0.0883, 0.0648, 0.0874,\n", + " 0.1306, 0.1210, -0.0993, 0.1556, 0.4129, 0.3809, 0.4175, 0.2794,\n", + " 0.4740, 0.4502, 0.3128, 0.2770, 0.0167, 0.0253, -0.0729, -0.4445,\n", + " -0.4589, -0.4396, -0.4766]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 6.942199252080172e-05\n", + "Grad encoder.fc1.bias: 0.00024039858544711024\n", + "Grad encoder.encoder.0.weight: 2.1148334781173617e-05\n", + "Grad encoder.encoder.0.bias: 0.00021297973580658436\n", + "Grad encoder.encoder.2.weight: 1.4295137589215301e-05\n", + "Grad encoder.encoder.2.bias: 0.00015604439249727875\n", + "Grad encoder.encoder.4.weight: 3.9092359656933695e-05\n", + "Grad encoder.encoder.4.bias: 0.00031656594364903867\n", + "Grad decoder.fc1.0.weight: 1.4855592780804727e-05\n", + "Grad decoder.fc1.0.bias: 0.00011834561883006245\n", + "Grad decoder.fc1.2.weight: 2.4808965463307686e-05\n", + "Grad decoder.fc1.2.bias: 0.0001200580591103062\n", + "Grad decoder.fc1.4.weight: 3.119844041066244e-05\n", + "Grad decoder.fc1.4.bias: 0.0002376888005528599\n", + "Grad decoder.fc2.weight: 9.896109986584634e-05\n", + "Grad decoder.fc2.bias: 0.0018690263386815786\n", + "Grad _memory_unit.weight_ih_l0: 3.0699989110871684e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.41995585890254e-06\n", + "Grad _memory_unit.bias_hh_l0: 5.118505214340985e-06\n", + "Grad _memory_unit.weight_ih_l1: 9.686440307632438e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.489788857928943e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.2723178770102095e-05\n", + "Data X Sample: tensor([[2.0591, 1.6881, 1.8963, 2.0881, 2.1633, 2.1554, 3.1753, 4.0303, 4.2425,\n", + " 4.2400, 4.2414, 4.3624, 4.0124, 3.8498, 3.8156, 3.7676, 3.7077, 3.6927,\n", + " 3.6055, 3.4163, 3.4203, 3.2027, 2.8508, 2.8382, 2.8021, 2.8757, 2.7385,\n", + " 2.8754, 2.9210, 3.1081, 3.0726, 3.2497, 3.4299, 2.5585, 4.2699, 4.6237,\n", + " 4.8159, 5.2793, 5.8821, 5.7821, 1.2361, 0.7149, 0.6770, 1.2544, 1.8869,\n", + " 2.0757, 1.2374, 1.8610]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1076, -0.9422, -1.1712, -1.0155, 0.0764, 0.0986, 0.1705, 0.2323,\n", + " 0.2531, 0.0215, 0.0836, -1.0710, 0.9101, -0.1831, -0.9374, -1.2469,\n", + " -0.0072, 0.9179, 0.4832, -0.3414, -0.6120, -0.5354, -0.4381, 0.5319,\n", + " -0.0785, 0.3159, -0.5791, -0.2897, -1.4489, -0.0582, -0.9198, -0.7377,\n", + " -0.5787, 0.3709, -1.5923, -0.6641, -1.0293, 0.0383, -0.2505, 0.4006,\n", + " 0.1827, 0.1601, -1.1482]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2055, -0.2545, -0.0764, -0.1796, -0.0664, 0.0565, 0.1200, 0.1885,\n", + " 0.1574, 0.1871, 0.1832, -0.1287, -0.1309, -0.1689, -0.1632, -0.2274,\n", + " -0.1838, -0.0600, -0.0544, -0.0479, -0.0546, -0.0244, -0.0675, -0.0255,\n", + " -0.0194, 0.0118, 0.0144, -0.0538, -0.0995, -0.1562, -0.1720, -0.1600,\n", + " -0.1820, -0.2186, -0.1379, -0.1229, -0.0100, 0.0123, 0.0358, 0.2554,\n", + " 0.3057, 0.2755, 0.1991]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 9.829540795180947e-05\n", + "Grad encoder.fc1.bias: 3.663665847852826e-05\n", + "Grad encoder.encoder.0.weight: 2.830509765772149e-05\n", + "Grad encoder.encoder.0.bias: 2.1094459953019395e-05\n", + "Grad encoder.encoder.2.weight: 1.5969913874869235e-05\n", + "Grad encoder.encoder.2.bias: 2.9052136596874334e-05\n", + "Grad encoder.encoder.4.weight: 4.984347469871864e-05\n", + "Grad encoder.encoder.4.bias: 0.0001116322455345653\n", + "Grad decoder.fc1.0.weight: 2.471997322572861e-05\n", + "Grad decoder.fc1.0.bias: 5.248341039987281e-05\n", + "Grad decoder.fc1.2.weight: 4.871362398262136e-05\n", + "Grad decoder.fc1.2.bias: 0.0001249678898602724\n", + "Grad decoder.fc1.4.weight: 7.701044523855671e-05\n", + "Grad decoder.fc1.4.bias: 0.0002404238621238619\n", + "Grad decoder.fc2.weight: 7.515252218581736e-05\n", + "Grad decoder.fc2.bias: 0.0020303090568631887\n", + "Grad _memory_unit.weight_ih_l0: 8.386022045669961e-07\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.91025980914128e-06\n", + "Grad _memory_unit.bias_hh_l0: 1.6431799849669915e-06\n", + "Grad _memory_unit.weight_ih_l1: 5.118299668538384e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.4505110812024213e-05\n", + "Grad _memory_unit.bias_hh_l1: 7.123823706933763e-06\n", + "Data X Sample: tensor([[ 0.0095, 0.0015, 0.0255, 0.0153, 0.0051, 0.0339, 0.0231, 0.0227,\n", + " 0.0366, 0.0158, 0.0508, 0.0097, 0.0244, 0.0109, 0.0126, 0.0096,\n", + " -0.1321, -0.1412, -0.1859, -0.1581, -0.1742, -0.1010, -0.1566, -0.1641,\n", + " -0.1295, -0.2481, -0.2371, -0.4242, -0.0763, -0.0491, -0.0595, -0.0442,\n", + " -0.0022, -0.0412, -0.0294, 0.0292, 0.0098, 0.0027, -0.0444, 0.0028,\n", + " -0.0095, -0.0159, 0.0061, -0.0029, -0.0159, -0.0229, 0.0000, 0.0469]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.6446, -0.0594, -0.4215, -0.0545, -0.5665, -0.3186, 0.3576, -0.1527,\n", + " 0.8069, 1.3779, 1.2319, -0.1230, 0.2435, 0.0863, 0.7455, -0.4150,\n", + " 0.8918, -0.1370, -0.2986, -0.0394, 0.6471, 0.5293, 0.1502, 0.3151,\n", + " 0.5695, -0.0424, -1.1641, -0.3231, -0.8957, 0.1837, -0.1408, -1.6475,\n", + " 0.3183, 0.4469, -0.1774, 0.7179, -0.8131, 0.7181, 0.2870, 0.4857,\n", + " 0.3138, -0.3953, -0.3272]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5770, 0.5024, 0.0924, 0.4417, 0.1506, -0.2616, -0.5536, -0.7741,\n", + " -0.2061, -0.3234, -0.2703, 0.2976, 0.3362, 0.4367, 0.2568, 0.4463,\n", + " 0.4527, 0.2049, 0.1511, 0.2443, 0.0896, 0.0916, 0.0670, 0.0879,\n", + " 0.1222, 0.1272, -0.1175, 0.1403, 0.3787, 0.3574, 0.3995, 0.2745,\n", + " 0.4676, 0.4532, 0.3028, 0.2648, 0.0140, 0.0137, -0.0826, -0.4342,\n", + " -0.4526, -0.4263, -0.4527]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 9.584847430232912e-05\n", + "Grad encoder.fc1.bias: 5.3694700909545645e-05\n", + "Grad encoder.encoder.0.weight: 3.028222272405401e-05\n", + "Grad encoder.encoder.0.bias: 4.18295239796862e-05\n", + "Grad encoder.encoder.2.weight: 1.6959245840553194e-05\n", + "Grad encoder.encoder.2.bias: 4.547219577943906e-05\n", + "Grad encoder.encoder.4.weight: 3.973476850660518e-05\n", + "Grad encoder.encoder.4.bias: 8.431009337073192e-05\n", + "Grad decoder.fc1.0.weight: 1.3349283108254895e-05\n", + "Grad decoder.fc1.0.bias: 5.2310468163341284e-05\n", + "Grad decoder.fc1.2.weight: 2.0271972971386276e-05\n", + "Grad decoder.fc1.2.bias: 7.493087468901649e-05\n", + "Grad decoder.fc1.4.weight: 3.0714661988895386e-05\n", + "Grad decoder.fc1.4.bias: 0.0001322873868048191\n", + "Grad decoder.fc2.weight: 7.216675294330344e-05\n", + "Grad decoder.fc2.bias: 0.0016441551269963384\n", + "Grad _memory_unit.weight_ih_l0: 8.220033009820327e-07\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.148063453612849e-06\n", + "Grad _memory_unit.bias_hh_l0: 2.2043147964723175e-06\n", + "Grad _memory_unit.weight_ih_l1: 4.844654313274077e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.2687352864304557e-05\n", + "Grad _memory_unit.bias_hh_l1: 6.381103958119638e-06\n", + "Data X Sample: tensor([[-0.0074, -0.0044, 0.0135, 0.0109, -0.0017, 0.0088, 0.0092, 0.0043,\n", + " 0.0098, 0.0205, 0.0159, 0.0058, 0.0133, 0.0273, 0.0151, -0.0041,\n", + " -0.0456, -0.0368, -0.0475, -0.0502, -0.0589, -0.0276, -0.0410, -0.0229,\n", + " -0.0188, -0.0470, -0.0293, -0.0489, -0.0069, -0.0098, -0.0350, 0.0442,\n", + " 0.0132, -0.0183, 0.0172, 0.0486, 0.0098, 0.0106, 0.0380, 0.0085,\n", + " 0.0286, -0.0020, 0.0121, 0.0144, -0.0159, 0.0400, -0.0272, 0.0156]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.9197, 0.7372, -1.5985, 0.8869, 0.1811, 0.6779, -0.3986, -0.4501,\n", + " -0.9388, -0.7004, -0.6302, 0.0669, 0.6198, 0.5973, 1.0304, -0.0413,\n", + " -0.4712, 0.4089, 0.4177, 1.0299, -0.5535, -0.1113, 0.3185, 0.5456,\n", + " -0.0760, 0.8978, 0.9790, 0.8279, 1.4064, 1.0478, 0.2169, 0.3628,\n", + " 0.5961, -0.1444, 0.1362, 0.6167, 0.2955, -0.9005, -0.0104, -0.7728,\n", + " -0.3724, -0.4083, -0.0634]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 8.4171e-01, 6.2226e-01, -2.6424e-02, 4.2236e-01, -4.0947e-01,\n", + " -7.6941e-01, -1.1209e+00, -1.2086e+00, -6.6208e-01, -7.7627e-01,\n", + " -7.6820e-01, 3.6301e-01, 4.8376e-01, 6.1441e-01, 3.6056e-01,\n", + " 4.9028e-01, 4.6217e-01, 3.7121e-02, 3.8359e-02, 1.4544e-01,\n", + " 8.1644e-02, 4.6046e-02, 9.3076e-02, -1.6369e-02, 5.1266e-02,\n", + " -6.7603e-05, 2.7285e-01, 5.5445e-01, 9.3190e-01, 8.7224e-01,\n", + " 7.9248e-01, 4.5641e-01, 6.4787e-01, 6.5886e-01, 3.8950e-01,\n", + " 3.8599e-01, 9.4560e-03, 8.7473e-03, 2.4317e-02, -7.5704e-01,\n", + " -7.0428e-01, -5.7098e-01, -4.6958e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 4.38668648712337e-05\n", + "Grad encoder.fc1.bias: 0.0004029479459859431\n", + "Grad encoder.encoder.0.weight: 1.327896006841911e-05\n", + "Grad encoder.encoder.0.bias: 0.00032923591788858175\n", + "Grad encoder.encoder.2.weight: 1.2674745448748581e-05\n", + "Grad encoder.encoder.2.bias: 0.0002578446001280099\n", + "Grad encoder.encoder.4.weight: 4.3190550059080124e-05\n", + "Grad encoder.encoder.4.bias: 0.0005443873233161867\n", + "Grad decoder.fc1.0.weight: 2.2702894057147205e-05\n", + "Grad decoder.fc1.0.bias: 0.0001962027163244784\n", + "Grad decoder.fc1.2.weight: 3.4124444937333465e-05\n", + "Grad decoder.fc1.2.bias: 0.00019898731261491776\n", + "Grad decoder.fc1.4.weight: 4.628605893230997e-05\n", + "Grad decoder.fc1.4.bias: 0.0003059475857298821\n", + "Grad decoder.fc2.weight: 0.00011905888823093846\n", + "Grad decoder.fc2.bias: 0.001967445481568575\n", + "Grad _memory_unit.weight_ih_l0: 4.230932972859591e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.7468420992372558e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.059254807652906e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.705798922557733e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.006504215998575e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.5289355107815936e-05\n", + "Data X Sample: tensor([[2.5004, 3.0164, 3.3163, 3.5181, 3.3534, 3.6021, 3.7084, 3.9451, 3.9935,\n", + " 3.8861, 4.0066, 4.0488, 3.7883, 3.7298, 3.5836, 3.4394, 3.4404, 3.4161,\n", + " 3.3846, 3.4089, 3.2387, 3.2057, 3.1207, 2.9241, 2.7364, 2.6955, 2.7306,\n", + " 2.7857, 2.8066, 2.8526, 2.7961, 2.8545, 3.0405, 2.1535, 3.6449, 3.9548,\n", + " 4.2889, 4.7015, 5.1975, 5.1664, 1.9329, 1.1670, 1.1580, 2.0810, 3.0128,\n", + " 3.3337, 2.2640, 3.0886]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2767, -0.3667, -0.7561, -0.2223, 0.6917, 0.8540, 0.2424, 0.1349,\n", + " 0.1235, -0.2117, 0.2434, 1.0752, 0.2651, 0.1801, 0.0791, 0.0028,\n", + " 1.0102, -0.4305, -0.7988, -0.7338, 0.3738, -0.5223, 0.9790, 0.2032,\n", + " 0.5415, 0.0531, 0.5352, -1.1379, 0.5281, -0.2163, 0.2682, -0.1209,\n", + " -0.5241, -0.2253, -0.9391, 0.2567, 0.7316, -0.0597, -0.0231, 0.1280,\n", + " 0.1581, -0.2465, 0.3163]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2776, -0.3134, -0.0826, -0.1810, -0.0387, 0.1068, 0.1965, 0.2574,\n", + " 0.2143, 0.2417, 0.2744, -0.1813, -0.1893, -0.2440, -0.2050, -0.2765,\n", + " -0.2069, -0.0758, -0.0904, -0.0539, -0.0729, -0.0199, -0.0785, -0.0144,\n", + " -0.0187, 0.0070, -0.0103, -0.1182, -0.1631, -0.1927, -0.2453, -0.2214,\n", + " -0.2431, -0.3050, -0.1797, -0.1712, -0.0029, 0.0019, 0.0688, 0.3377,\n", + " 0.3671, 0.3714, 0.2602]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00012649204290937632\n", + "Grad encoder.fc1.bias: 0.00011894141789525747\n", + "Grad encoder.encoder.0.weight: 3.9449878386221826e-05\n", + "Grad encoder.encoder.0.bias: 0.0001793416595319286\n", + "Grad encoder.encoder.2.weight: 2.230916652479209e-05\n", + "Grad encoder.encoder.2.bias: 0.0001354356063529849\n", + "Grad encoder.encoder.4.weight: 4.8918649554252625e-05\n", + "Grad encoder.encoder.4.bias: 0.00016860464529599994\n", + "Grad decoder.fc1.0.weight: 1.4193763490766287e-05\n", + "Grad decoder.fc1.0.bias: 5.9856000007130206e-05\n", + "Grad decoder.fc1.2.weight: 1.7344758816761896e-05\n", + "Grad decoder.fc1.2.bias: 8.089047332759947e-05\n", + "Grad decoder.fc1.4.weight: 2.4305656552314758e-05\n", + "Grad decoder.fc1.4.bias: 0.0001326862839050591\n", + "Grad decoder.fc2.weight: 7.98309629317373e-05\n", + "Grad decoder.fc2.bias: 0.0017816202016547322\n", + "Grad _memory_unit.weight_ih_l0: 1.8374181536273682e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.601770110137295e-06\n", + "Grad _memory_unit.bias_hh_l0: 3.2952546007436467e-06\n", + "Grad _memory_unit.weight_ih_l1: 5.001442673346901e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.4574178749171551e-05\n", + "Grad _memory_unit.bias_hh_l1: 7.222805834317114e-06\n", + "Data X Sample: tensor([[ 0.0064, 0.0131, 0.0045, -0.0022, 0.0068, 0.0192, 0.0277, 0.0085,\n", + " 0.0415, 0.0221, 0.0317, 0.0097, 0.0200, 0.0191, 0.0202, 0.0109,\n", + " -0.1242, -0.1373, -0.1755, -0.1358, -0.1374, -0.1041, -0.1374, -0.1393,\n", + " -0.1182, -0.2534, -0.2105, -0.3712, -0.0763, -0.0557, -0.0840, -0.0387,\n", + " -0.0132, -0.0481, -0.0025, 0.0268, 0.0079, 0.0080, 0.0190, 0.0085,\n", + " -0.0191, -0.0060, 0.0020, -0.0144, -0.0040, 0.0172, 0.0000, 0.0000]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[-0.7599, -0.4215, -0.6867, 0.5391, 0.8111, 1.3969, 0.0700, -0.3263,\n", + " 0.6180, 0.6596, 0.6665, 0.6731, 0.9343, -0.2378, 0.1550, 0.9560,\n", + " 0.6470, 0.2455, 3.1788, 0.0721, -0.1056, -0.1458, -0.0701, -1.0632,\n", + " -0.3899, 0.1917, -0.9739, -0.8763, 0.1475, 0.5521, -0.9064, -1.2679,\n", + " -1.2165, 0.7161, -0.1499, 0.9799, -0.1933, 0.7428, -0.4768, 0.1358,\n", + " 0.7113, 0.0471, -0.6057]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5875, 0.4964, 0.0773, 0.4359, 0.1511, -0.2558, -0.5402, -0.7615,\n", + " -0.1957, -0.3255, -0.2647, 0.2919, 0.3470, 0.4436, 0.2669, 0.4610,\n", + " 0.4385, 0.2045, 0.1525, 0.2480, 0.1027, 0.0996, 0.0793, 0.0929,\n", + " 0.1180, 0.1202, -0.1302, 0.1270, 0.3640, 0.3615, 0.3884, 0.2742,\n", + " 0.4629, 0.4511, 0.2892, 0.2567, 0.0102, -0.0015, -0.0922, -0.4279,\n", + " -0.4511, -0.4085, -0.4253]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 8.691128459759057e-05\n", + "Grad encoder.fc1.bias: 0.0002326706307940185\n", + "Grad encoder.encoder.0.weight: 3.003971323778387e-05\n", + "Grad encoder.encoder.0.bias: 0.00024645429220981896\n", + "Grad encoder.encoder.2.weight: 2.1514557374757715e-05\n", + "Grad encoder.encoder.2.bias: 0.0003319312818348408\n", + "Grad encoder.encoder.4.weight: 4.8987247282639146e-05\n", + "Grad encoder.encoder.4.bias: 0.0008980910060927272\n", + "Grad decoder.fc1.0.weight: 2.0322948330431245e-05\n", + "Grad decoder.fc1.0.bias: 0.00024221130297519267\n", + "Grad decoder.fc1.2.weight: 2.8793263481929898e-05\n", + "Grad decoder.fc1.2.bias: 0.0002318984770681709\n", + "Grad decoder.fc1.4.weight: 3.0883340514265e-05\n", + "Grad decoder.fc1.4.bias: 0.0003518598969094455\n", + "Grad decoder.fc2.weight: 8.633807738078758e-05\n", + "Grad decoder.fc2.bias: 0.0018091212259605527\n", + "Grad _memory_unit.weight_ih_l0: 5.9278490880387835e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.385456511750817e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.760809391271323e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.9796477772615617e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.989676330704242e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.52721763192676e-05\n", + "Data X Sample: tensor([[1.5520, 1.6779, 1.8031, 1.8673, 1.9687, 2.1127, 2.1030, 2.0144, 3.2856,\n", + " 4.2558, 4.2319, 4.3702, 3.9680, 3.9343, 3.7576, 3.6609, 3.6055, 3.5670,\n", + " 3.6035, 3.4870, 3.5160, 3.2685, 2.9062, 2.8153, 2.8528, 2.9227, 2.9383,\n", + " 2.9203, 2.9349, 3.1540, 3.2126, 3.3602, 3.7467, 2.7988, 4.5616, 4.9836,\n", + " 5.1817, 5.5761, 6.0849, 5.9807, 1.1693, 0.6452, 0.6204, 1.1654, 1.6531,\n", + " 1.7612, 1.1762, 1.8375]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2180, 0.4512, 0.2237, 0.1421, -0.9938, 0.7109, -0.2958, 0.7572,\n", + " -0.7829, -0.5726, -0.7988, -0.7362, 0.1589, -0.2621, 0.4475, -0.5346,\n", + " 0.2640, 0.5159, -0.5996, -0.2835, -0.2136, 0.1942, -0.0469, -0.2290,\n", + " 0.3916, -0.1854, 0.6396, 0.2731, 0.7706, 0.3951, -0.4881, 0.2025,\n", + " 0.4064, 0.4683, 0.7372, 0.6995, 0.7922, 0.7428, -0.9499, 0.0667,\n", + " -0.1612, -0.3670, -0.9857]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3740, -0.3924, -0.0919, -0.1845, -0.0070, 0.1709, 0.2942, 0.3495,\n", + " 0.2877, 0.3129, 0.3923, -0.2481, -0.2639, -0.3415, -0.2631, -0.3425,\n", + " -0.2349, -0.0947, -0.1344, -0.0620, -0.0992, -0.0181, -0.0861, -0.0010,\n", + " -0.0183, 0.0023, -0.0448, -0.2001, -0.2451, -0.2425, -0.3378, -0.3019,\n", + " -0.3227, -0.4197, -0.2324, -0.2344, 0.0081, -0.0122, 0.1071, 0.4466,\n", + " 0.4488, 0.4959, 0.3418]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 9.365464211441576e-05\n", + "Grad encoder.fc1.bias: 0.0004255750682204962\n", + "Grad encoder.encoder.0.weight: 3.165612361044623e-05\n", + "Grad encoder.encoder.0.bias: 0.000505288306158036\n", + "Grad encoder.encoder.2.weight: 2.3521832190454006e-05\n", + "Grad encoder.encoder.2.bias: 0.00038398022297769785\n", + "Grad encoder.encoder.4.weight: 9.272819443140179e-05\n", + "Grad encoder.encoder.4.bias: 0.0008598687127232552\n", + "Grad decoder.fc1.0.weight: 4.700971476268023e-05\n", + "Grad decoder.fc1.0.bias: 0.00033841043477877975\n", + "Grad decoder.fc1.2.weight: 7.12464825483039e-05\n", + "Grad decoder.fc1.2.bias: 0.0002825532283168286\n", + "Grad decoder.fc1.4.weight: 9.30272217374295e-05\n", + "Grad decoder.fc1.4.bias: 0.00029476493364199996\n", + "Grad decoder.fc2.weight: 0.00011435016494942829\n", + "Grad decoder.fc2.bias: 0.002131848828867078\n", + "Grad _memory_unit.weight_ih_l0: 6.599215339520015e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.235928306821734e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.6143610992003232e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.5560464109730674e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.5286123319529e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.6843626730842516e-05\n", + "Data X Sample: tensor([[1.6284, 1.7973, 1.8933, 2.0291, 1.9653, 2.2629, 2.2817, 2.1465, 3.7787,\n", + " 4.3347, 4.2319, 4.1891, 4.0257, 3.8770, 3.6215, 3.6637, 3.6511, 3.6714,\n", + " 3.5952, 3.5930, 3.6362, 3.3894, 2.9857, 2.8459, 2.8809, 2.9201, 2.9543,\n", + " 3.0630, 2.9835, 3.2457, 3.1426, 3.2358, 3.7269, 2.7645, 4.5101, 4.8499,\n", + " 5.0853, 5.4622, 6.0849, 5.9920, 1.2409, 0.6811, 0.7377, 1.2285, 1.8196,\n", + " 1.9499, 1.3122, 1.7750]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5667, 0.2371, -0.0333, 0.8251, 0.0461, -0.8308, 0.2374, -0.4692,\n", + " -0.3422, -0.6553, 0.3750, -0.0319, -0.4503, -0.2316, -0.4341, 0.0370,\n", + " 0.8958, -0.0746, 0.5139, 3.2906, 0.2765, 0.0531, -0.2714, -1.1880,\n", + " 0.7088, -0.3003, 0.7255, 0.9026, 0.4724, 0.5331, -0.2940, 1.8089,\n", + " 0.5667, 0.3424, 0.7715, -0.6712, 0.9995, -0.3739, 0.3953, -0.4204,\n", + " -0.0832, 0.0556, -0.6532]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3666, -0.3840, -0.0888, -0.1819, -0.0107, 0.1645, 0.2855, 0.3426,\n", + " 0.2816, 0.3065, 0.3822, -0.2409, -0.2567, -0.3350, -0.2554, -0.3373,\n", + " -0.2343, -0.0954, -0.1292, -0.0630, -0.0981, -0.0207, -0.0844, -0.0047,\n", + " -0.0190, 0.0037, -0.0419, -0.1960, -0.2403, -0.2379, -0.3291, -0.2927,\n", + " -0.3164, -0.4095, -0.2289, -0.2280, 0.0103, -0.0079, 0.1010, 0.4360,\n", + " 0.4390, 0.4849, 0.3391]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 9.647925617173314e-05\n", + "Grad encoder.fc1.bias: 4.218534741085023e-05\n", + "Grad encoder.encoder.0.weight: 3.019019277417101e-05\n", + "Grad encoder.encoder.0.bias: 4.657435783883557e-05\n", + "Grad encoder.encoder.2.weight: 1.83650463441154e-05\n", + "Grad encoder.encoder.2.bias: 5.10189711349085e-05\n", + "Grad encoder.encoder.4.weight: 5.720872650272213e-05\n", + "Grad encoder.encoder.4.bias: 0.00017509171448182315\n", + "Grad decoder.fc1.0.weight: 1.8208613255410455e-05\n", + "Grad decoder.fc1.0.bias: 4.728478234028444e-05\n", + "Grad decoder.fc1.2.weight: 3.247881249990314e-05\n", + "Grad decoder.fc1.2.bias: 8.736944437259808e-05\n", + "Grad decoder.fc1.4.weight: 5.0731105147860944e-05\n", + "Grad decoder.fc1.4.bias: 0.00016597460489720106\n", + "Grad decoder.fc2.weight: 7.948142592795193e-05\n", + "Grad decoder.fc2.bias: 0.0019511048449203372\n", + "Grad _memory_unit.weight_ih_l0: 8.422790642725886e-07\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.503420313994866e-06\n", + "Grad _memory_unit.bias_hh_l0: 2.363434305152623e-06\n", + "Grad _memory_unit.weight_ih_l1: 3.6271768522055936e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.0059925443783868e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.921542767988285e-06\n", + "Data X Sample: tensor([[1.3165, 1.5890, 1.9128, 1.7711, 1.7416, 1.7694, 1.8580, 2.3097, 3.0244,\n", + " 3.5370, 3.3944, 3.5152, 3.4376, 3.3508, 3.3693, 3.1755, 3.1888, 3.2517,\n", + " 3.2152, 3.2452, 3.3124, 3.1185, 2.8002, 2.7275, 2.8246, 2.9123, 2.9570,\n", + " 3.0834, 2.8655, 3.2424, 3.1951, 3.2911, 3.6697, 2.6524, 4.4317, 4.7720,\n", + " 5.1030, 5.3880, 5.8884, 5.7026, 1.2075, 0.7528, 0.8428, 1.2228, 1.8711,\n", + " 1.8298, 1.1558, 1.5326]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1979, -0.0413, -1.5965, 0.4878, 1.3462, 0.9457, 0.5863, 0.3477,\n", + " -0.3372, 0.2325, 0.0847, -0.5105, -0.8957, 0.4759, -0.4699, 0.1739,\n", + " -0.9725, 1.1931, 0.0763, -0.5391, 2.4139, 1.9250, 0.5691, 0.2634,\n", + " -0.8422, 0.5614, -1.9612, -0.7618, -0.2032, -0.4717, -0.1264, -0.9368,\n", + " -0.6662, -0.2202, -0.3888, 0.5954, -0.7301, -0.0140, -0.9470, 0.2295,\n", + " -0.0740, 0.6138, -0.4464]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3388, -0.3605, -0.0834, -0.1780, -0.0218, 0.1445, 0.2587, 0.3174,\n", + " 0.2606, 0.2849, 0.3487, -0.2201, -0.2341, -0.3095, -0.2353, -0.3196,\n", + " -0.2293, -0.0938, -0.1145, -0.0623, -0.0923, -0.0244, -0.0822, -0.0138,\n", + " -0.0200, 0.0041, -0.0309, -0.1755, -0.2186, -0.2223, -0.3006, -0.2667,\n", + " -0.2942, -0.3774, -0.2152, -0.2101, 0.0111, -0.0011, 0.0863, 0.4037,\n", + " 0.4130, 0.4502, 0.3199]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006692438619211316\n", + "Grad encoder.fc1.bias: 0.00045303042861633003\n", + "Grad encoder.encoder.0.weight: 0.0002109960187226534\n", + "Grad encoder.encoder.0.bias: 0.0004960303194820881\n", + "Grad encoder.encoder.2.weight: 0.0001194066644529812\n", + "Grad encoder.encoder.2.bias: 0.0004946003900840878\n", + "Grad encoder.encoder.4.weight: 0.0002594513935036957\n", + "Grad encoder.encoder.4.bias: 0.0008287412929348648\n", + "Grad decoder.fc1.0.weight: 7.900035416241735e-05\n", + "Grad decoder.fc1.0.bias: 0.00046747305896133184\n", + "Grad decoder.fc1.2.weight: 6.971567927394062e-05\n", + "Grad decoder.fc1.2.bias: 0.0003634433087427169\n", + "Grad decoder.fc1.4.weight: 6.70577137498185e-05\n", + "Grad decoder.fc1.4.bias: 0.0003454540856182575\n", + "Grad decoder.fc2.weight: 0.00011024240666301921\n", + "Grad decoder.fc2.bias: 0.0019885804504156113\n", + "Grad _memory_unit.weight_ih_l0: 4.934665867040167e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.1788626074558124e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.6901050912565552e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.237759301555343e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.74106481205672e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.4009626435581595e-05\n", + "Data X Sample: tensor([[1.5435, 1.7085, 1.9249, 2.0051, 2.1189, 2.4117, 2.4774, 2.4545, 2.5508,\n", + " 2.6855, 2.5283, 2.6038, 2.4612, 2.5601, 2.4614, 2.5696, 2.4466, 2.4605,\n", + " 2.5090, 2.5013, 2.4389, 2.5061, 2.4556, 2.4622, 2.4342, 2.3873, 2.4109,\n", + " 2.3860, 2.2619, 2.3679, 2.3237, 2.3240, 2.2924, 1.4692, 1.9560, 1.8315,\n", + " 1.6499, 1.5398, 1.5973, 1.5718, 1.1359, 0.7050, 0.7175, 1.2228, 1.7839,\n", + " 2.0814, 1.3530, 1.9861]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.1723, 0.9475, 0.7020, 1.2735, -0.4380, -0.4934, -0.8257, -0.7134,\n", + " -1.1131, -0.6825, -0.8262, 0.0833, -0.8113, 0.9759, -0.2620, 2.1220,\n", + " 0.5783, -1.2262, -1.8865, 0.2095, -0.4367, 0.4812, -3.4491, -0.6129,\n", + " 0.3678, -0.7161, -0.1167, 0.1346, 0.7535, 0.5690, 0.9122, 1.8295,\n", + " 0.2993, 0.2139, 1.3564, 0.4798, 0.1767, 0.7348, 0.9175, -0.9268,\n", + " -0.4419, -0.5206, -0.3168]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4440, 0.4163, 0.0795, 0.2972, 0.1455, -0.1759, -0.3701, -0.4669,\n", + " -0.1424, -0.2432, -0.2230, 0.1513, 0.3053, 0.3585, 0.2220, 0.3933,\n", + " 0.3448, 0.1391, 0.1054, 0.2330, 0.0800, 0.0869, 0.0631, 0.0610,\n", + " 0.0998, 0.1216, -0.1242, 0.0103, 0.2188, 0.1968, 0.2175, 0.1855,\n", + " 0.3233, 0.2920, 0.2064, 0.1886, 0.0057, -0.0318, -0.1082, -0.2836,\n", + " -0.2809, -0.2862, -0.3341]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 7.465846283594146e-05\n", + "Grad encoder.fc1.bias: 7.062607619445771e-05\n", + "Grad encoder.encoder.0.weight: 2.2543725208379328e-05\n", + "Grad encoder.encoder.0.bias: 7.543653919128701e-05\n", + "Grad encoder.encoder.2.weight: 1.1330474080750719e-05\n", + "Grad encoder.encoder.2.bias: 7.17996881576255e-05\n", + "Grad encoder.encoder.4.weight: 2.4237859179265797e-05\n", + "Grad encoder.encoder.4.bias: 0.00019933024304918945\n", + "Grad decoder.fc1.0.weight: 9.076171409105882e-06\n", + "Grad decoder.fc1.0.bias: 7.449127588188276e-05\n", + "Grad decoder.fc1.2.weight: 1.3338601092982572e-05\n", + "Grad decoder.fc1.2.bias: 8.722595521248877e-05\n", + "Grad decoder.fc1.4.weight: 1.8326518329558894e-05\n", + "Grad decoder.fc1.4.bias: 0.0002014896017499268\n", + "Grad decoder.fc2.weight: 7.78055255068466e-05\n", + "Grad decoder.fc2.bias: 0.0018891304498538375\n", + "Grad _memory_unit.weight_ih_l0: 9.509822120890021e-07\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.8180776250083e-06\n", + "Grad _memory_unit.bias_hh_l0: 3.035638201254187e-06\n", + "Grad _memory_unit.weight_ih_l1: 5.208383981880615e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.8386646843282506e-05\n", + "Grad _memory_unit.bias_hh_l1: 9.201748980558477e-06\n", + "Data X Sample: tensor([[2.0294, 2.4513, 2.7784, 2.6763, 2.9846, 3.0187, 3.0305, 3.1047, 3.1880,\n", + " 3.3506, 3.3087, 3.3886, 3.1447, 3.1109, 3.1019, 3.1973, 3.1227, 3.0370,\n", + " 3.0500, 2.9774, 2.8609, 2.6975, 2.5544, 2.5061, 2.4098, 2.4761, 2.3310,\n", + " 2.3370, 1.9878, 1.9553, 1.8757, 1.8570, 1.7952, 1.2037, 1.9291, 2.3520,\n", + " 2.6056, 2.8729, 3.0551, 2.9421, 1.6704, 0.9200, 0.9600, 1.7624, 2.5450,\n", + " 2.6189, 1.8085, 2.5491]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4815, 0.3259, 0.3014, 0.0120, -0.4469, -1.7724, -2.5471, -2.9106,\n", + " -1.0347, -0.8005, -0.1664, -1.4693, 0.2509, 0.3140, -0.3813, -0.2311,\n", + " -1.0453, -0.0715, -1.3741, 0.8913, 0.8107, 1.2748, 1.2172, 0.4465,\n", + " -0.0042, 0.8075, 0.5038, 0.1672, 1.3157, 1.7012, 0.6576, 1.2110,\n", + " 0.2973, 0.5352, -0.3156, 0.3459, 0.7015, -0.7141, 0.5906, 1.0538,\n", + " 0.1106, 0.0233, 0.3909]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2269, -0.2659, -0.0694, -0.1677, -0.0613, 0.0689, 0.1467, 0.2119,\n", + " 0.1772, 0.2019, 0.2117, -0.1414, -0.1451, -0.1984, -0.1603, -0.2418,\n", + " -0.1997, -0.0773, -0.0592, -0.0535, -0.0623, -0.0303, -0.0721, -0.0392,\n", + " -0.0253, 0.0093, 0.0105, -0.0864, -0.1265, -0.1626, -0.1892, -0.1680,\n", + " -0.2052, -0.2443, -0.1591, -0.1368, 0.0030, 0.0165, 0.0326, 0.2758,\n", + " 0.3146, 0.3070, 0.2325]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 7.003424980212003e-05\n", + "Grad encoder.fc1.bias: 6.279176886891946e-05\n", + "Grad encoder.encoder.0.weight: 2.0120967747061513e-05\n", + "Grad encoder.encoder.0.bias: 5.0997798098251224e-05\n", + "Grad encoder.encoder.2.weight: 1.0172931069973856e-05\n", + "Grad encoder.encoder.2.bias: 6.695088086416945e-05\n", + "Grad encoder.encoder.4.weight: 2.5923276552930474e-05\n", + "Grad encoder.encoder.4.bias: 0.0001933684543473646\n", + "Grad decoder.fc1.0.weight: 1.3727209989156108e-05\n", + "Grad decoder.fc1.0.bias: 9.20728052733466e-05\n", + "Grad decoder.fc1.2.weight: 1.7586349713383242e-05\n", + "Grad decoder.fc1.2.bias: 9.971335384761915e-05\n", + "Grad decoder.fc1.4.weight: 2.6326306397095323e-05\n", + "Grad decoder.fc1.4.bias: 0.00022870354587212205\n", + "Grad decoder.fc2.weight: 8.991488721221685e-05\n", + "Grad decoder.fc2.bias: 0.002007541712373495\n", + "Grad _memory_unit.weight_ih_l0: 1.159310272669245e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.790210591134382e-06\n", + "Grad _memory_unit.bias_hh_l0: 3.4925903946714243e-06\n", + "Grad _memory_unit.weight_ih_l1: 6.530109999403066e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.98015732166823e-05\n", + "Grad _memory_unit.bias_hh_l1: 9.88940337265376e-06\n", + "Data X Sample: tensor([[1.5520, 1.7784, 1.9023, 2.0641, 2.0062, 2.1642, 2.2555, 2.1238, 2.2506,\n", + " 2.4138, 2.3634, 2.3253, 2.2792, 2.3311, 2.2369, 2.3248, 2.2705, 2.3696,\n", + " 2.3004, 2.2744, 2.3653, 2.3423, 2.3688, 2.4832, 2.5187, 2.5309, 2.4508,\n", + " 2.4879, 2.3486, 2.4367, 2.2992, 2.3986, 2.2836, 1.4646, 2.1080, 1.9969,\n", + " 1.7580, 1.5663, 1.4515, 1.2994, 1.2552, 0.7109, 0.7033, 1.2544, 1.8156,\n", + " 2.0700, 1.3394, 2.0643]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2692, 0.6672, 0.8417, 0.6311, 0.1524, -0.1937, -0.2836, -0.3274,\n", + " -0.2835, -0.6496, -0.1858, 1.2514, 0.3282, 0.4970, 0.8283, 0.0965,\n", + " -0.1728, 0.3669, 1.3400, -0.6295, -0.1452, -0.4484, -0.2394, 0.0798,\n", + " -0.0941, 0.5937, -0.5714, 0.6609, -0.6488, -0.2664, 1.0549, -0.1648,\n", + " -0.1665, 0.8830, -0.2397, 0.5748, -0.0091, 0.7816, -0.0156, -0.0921,\n", + " -0.5081, -0.5766, 0.3843]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5142, 0.4596, 0.0792, 0.3721, 0.1702, -0.1918, -0.4206, -0.5469,\n", + " -0.1688, -0.2727, -0.2529, 0.1783, 0.3592, 0.4072, 0.2652, 0.4605,\n", + " 0.3872, 0.1723, 0.1115, 0.2528, 0.0868, 0.0963, 0.0938, 0.0768,\n", + " 0.0961, 0.1139, -0.1400, 0.0288, 0.2670, 0.2504, 0.2522, 0.2192,\n", + " 0.3651, 0.3477, 0.2380, 0.2163, 0.0035, -0.0395, -0.1303, -0.3260,\n", + " -0.3410, -0.3205, -0.3829]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 6.972660776227713e-05\n", + "Grad encoder.fc1.bias: 0.00019609983428381383\n", + "Grad encoder.encoder.0.weight: 2.388645225437358e-05\n", + "Grad encoder.encoder.0.bias: 0.00016874299035407603\n", + "Grad encoder.encoder.2.weight: 1.3484309420164209e-05\n", + "Grad encoder.encoder.2.bias: 0.00016091048019006848\n", + "Grad encoder.encoder.4.weight: 3.8568243326153606e-05\n", + "Grad encoder.encoder.4.bias: 0.00044938173959963024\n", + "Grad decoder.fc1.0.weight: 2.1213965737842955e-05\n", + "Grad decoder.fc1.0.bias: 0.00018947679200209677\n", + "Grad decoder.fc1.2.weight: 2.7689990020007826e-05\n", + "Grad decoder.fc1.2.bias: 0.00015639018965885043\n", + "Grad decoder.fc1.4.weight: 2.970559216919355e-05\n", + "Grad decoder.fc1.4.bias: 0.00024738453794270754\n", + "Grad decoder.fc2.weight: 9.972582483896986e-05\n", + "Grad decoder.fc2.bias: 0.001843998092226684\n", + "Grad _memory_unit.weight_ih_l0: 3.4606321150931763e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.8079888832289726e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.417718501936179e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.0239920104359044e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.9453257815912366e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.5077262762351893e-05\n", + "Data X Sample: tensor([[1.1372, 1.3647, 1.5612, 1.6793, 1.7211, 1.9049, 2.0460, 2.0769, 2.3971,\n", + " 3.8198, 3.9178, 4.1326, 3.9015, 3.7053, 3.7955, 3.3560, 3.3444, 3.5031,\n", + " 3.3990, 3.3382, 3.3369, 3.3205, 2.8580, 2.7313, 2.7326, 2.8835, 2.7945,\n", + " 2.9937, 2.8413, 2.9640, 3.0131, 3.0507, 3.4959, 2.5654, 4.2356, 4.5872,\n", + " 4.8710, 5.1335, 5.5715, 5.5211, 1.0070, 0.5775, 0.5719, 1.0333, 1.5936,\n", + " 1.5782, 1.1218, 1.5560]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1776, -0.2901, -0.2464, -0.2943, 1.0555, 0.5465, 0.2492, -0.0044,\n", + " -0.5590, 0.4039, -0.5145, 0.6074, -0.4628, 0.9565, 0.5905, -0.2699,\n", + " -0.0402, -0.0900, 0.5578, 1.2376, 0.1052, 0.0770, -0.5334, -0.7636,\n", + " -0.0345, 0.0129, 1.0573, 1.0134, 0.2313, 0.7117, -0.1700, -0.2624,\n", + " -0.0344, -0.3217, -0.0590, 0.8190, 1.0209, 0.6282, -0.5562, -0.7196,\n", + " -0.4670, -0.5728, -0.4086]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2543, -0.2891, -0.0685, -0.1636, -0.0545, 0.0874, 0.1769, 0.2426,\n", + " 0.1988, 0.2220, 0.2433, -0.1588, -0.1659, -0.2296, -0.1711, -0.2616,\n", + " -0.2079, -0.0817, -0.0737, -0.0554, -0.0665, -0.0302, -0.0706, -0.0444,\n", + " -0.0253, 0.0108, 0.0009, -0.1120, -0.1515, -0.1773, -0.2174, -0.1915,\n", + " -0.2309, -0.2804, -0.1768, -0.1547, 0.0056, 0.0193, 0.0375, 0.3069,\n", + " 0.3358, 0.3433, 0.2542]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00011785205424530432\n", + "Grad encoder.fc1.bias: 0.0004499525239225477\n", + "Grad encoder.encoder.0.weight: 3.937875590054318e-05\n", + "Grad encoder.encoder.0.bias: 0.00032657882547937334\n", + "Grad encoder.encoder.2.weight: 2.285734262841288e-05\n", + "Grad encoder.encoder.2.bias: 0.00020697078434750438\n", + "Grad encoder.encoder.4.weight: 6.649915303569287e-05\n", + "Grad encoder.encoder.4.bias: 0.00023905342095531523\n", + "Grad decoder.fc1.0.weight: 2.625316847115755e-05\n", + "Grad decoder.fc1.0.bias: 0.00011812067532446235\n", + "Grad decoder.fc1.2.weight: 4.5517022954300046e-05\n", + "Grad decoder.fc1.2.bias: 0.0001779327285476029\n", + "Grad decoder.fc1.4.weight: 6.207465048646554e-05\n", + "Grad decoder.fc1.4.bias: 0.0003190527204424143\n", + "Grad decoder.fc2.weight: 9.019610297400504e-05\n", + "Grad decoder.fc2.bias: 0.0022941878996789455\n", + "Grad _memory_unit.weight_ih_l0: 3.459984554865514e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.33859130073688e-05\n", + "Grad _memory_unit.bias_hh_l0: 6.806129022152163e-06\n", + "Grad _memory_unit.weight_ih_l1: 9.78094703896204e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.9167284335708246e-05\n", + "Grad _memory_unit.bias_hh_l1: 9.34761919779703e-06\n", + "Data X Sample: tensor([[1.1701, 1.4041, 1.5717, 1.6771, 1.7809, 1.7414, 1.9197, 1.8313, 3.5980,\n", + " 3.8577, 3.9432, 3.9554, 3.7173, 3.6207, 3.6366, 3.4791, 3.3900, 3.4432,\n", + " 3.5085, 3.4609, 3.4326, 3.2884, 3.0074, 2.7905, 2.6989, 2.6903, 2.6560,\n", + " 2.6307, 2.7337, 2.8625, 2.9011, 2.9540, 3.2935, 2.3594, 3.8630, 4.2540,\n", + " 4.6134, 4.9242, 5.3116, 5.2061, 0.9450, 0.5596, 0.5922, 0.9931, 1.4192,\n", + " 1.6297, 1.0606, 1.5560]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4756, -0.0165, 0.0904, 0.0790, -0.4322, 1.5399, -0.8337, -0.0869,\n", + " 1.1592, 0.2249, 0.8030, 0.8310, 1.0479, 0.8271, 1.1229, -0.4633,\n", + " -0.5980, 1.3562, -1.0470, -0.2199, 0.4363, 0.3622, -0.9427, -0.6006,\n", + " -0.7955, -0.0149, 0.1063, -0.2694, 0.0802, 1.1481, 1.4300, -0.7676,\n", + " 5.4238, 1.9121, 0.1610, 1.4913, -0.2169, -0.0606, -0.6438, 0.1307,\n", + " 1.7057, 1.0825, 0.6723]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2510, -0.2855, -0.0672, -0.1626, -0.0576, 0.0849, 0.1736, 0.2409,\n", + " 0.1961, 0.2202, 0.2381, -0.1552, -0.1625, -0.2269, -0.1653, -0.2596,\n", + " -0.2073, -0.0805, -0.0716, -0.0549, -0.0632, -0.0301, -0.0688, -0.0472,\n", + " -0.0256, 0.0114, 0.0035, -0.1090, -0.1486, -0.1752, -0.2147, -0.1870,\n", + " -0.2287, -0.2774, -0.1756, -0.1535, 0.0056, 0.0228, 0.0320, 0.3027,\n", + " 0.3326, 0.3390, 0.2518]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001009577390505001\n", + "Grad encoder.fc1.bias: 0.0003306784201413393\n", + "Grad encoder.encoder.0.weight: 2.951608257717453e-05\n", + "Grad encoder.encoder.0.bias: 0.000474137399578467\n", + "Grad encoder.encoder.2.weight: 2.2673679268336855e-05\n", + "Grad encoder.encoder.2.bias: 0.0004086833796463907\n", + "Grad encoder.encoder.4.weight: 7.97328248154372e-05\n", + "Grad encoder.encoder.4.bias: 0.0010772470850497484\n", + "Grad decoder.fc1.0.weight: 3.710882810992189e-05\n", + "Grad decoder.fc1.0.bias: 0.0004008543328382075\n", + "Grad decoder.fc1.2.weight: 4.6596414904342964e-05\n", + "Grad decoder.fc1.2.bias: 0.00028491756529547274\n", + "Grad decoder.fc1.4.weight: 3.859793650917709e-05\n", + "Grad decoder.fc1.4.bias: 0.000306020665448159\n", + "Grad decoder.fc2.weight: 0.00010370684321969748\n", + "Grad decoder.fc2.bias: 0.0020923586562275887\n", + "Grad _memory_unit.weight_ih_l0: 6.968752131797373e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.639198621385731e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.8524440747569315e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.114391347480705e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.947372018359601e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.939199425280094e-05\n", + "Data X Sample: tensor([[2.4410, 2.8737, 3.2742, 3.3891, 3.6010, 3.6552, 3.7299, 3.7705, 3.8177,\n", + " 3.9382, 3.8924, 4.0060, 3.7506, 3.5798, 3.6290, 3.5844, 3.4718, 3.3735,\n", + " 3.4424, 3.2582, 3.3369, 3.2425, 2.9978, 2.8039, 2.6914, 2.8208, 2.7465,\n", + " 2.7979, 2.7198, 2.7871, 2.8206, 2.8573, 2.9723, 2.1352, 3.5615, 3.9962,\n", + " 4.2830, 4.5690, 5.0898, 4.9962, 1.9663, 1.1670, 1.0772, 1.9777, 2.8740,\n", + " 3.1279, 2.1893, 3.1277]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.1510e-01, 4.5644e-01, 4.3733e-02, 1.1521e+00, 4.9483e-02,\n", + " 8.2535e-01, 2.7530e-01, 1.0025e-01, -1.9066e-01, 2.5887e-01,\n", + " -2.2931e-01, -5.6553e-01, 1.1687e+00, 6.5376e-01, -3.7524e-01,\n", + " 3.2369e-01, -4.8070e-01, -3.0666e-01, 8.8042e-01, 3.9503e-01,\n", + " 6.6760e-02, 2.4833e+00, 6.4284e-01, 8.4407e-01, 8.7207e-01,\n", + " -1.4838e+00, 4.1001e-01, -3.3157e-02, -3.4816e-01, -4.2134e-02,\n", + " 1.8466e-01, -1.3446e+00, 1.6083e-01, -1.9333e-01, 9.3012e-01,\n", + " 1.9923e-03, 6.6390e-01, -4.0869e-01, 6.0419e-01, 1.0759e-01,\n", + " 2.9833e-01, 4.3765e-01, -6.3586e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2230, -0.2607, -0.0649, -0.1624, -0.0686, 0.0652, 0.1435, 0.2139,\n", + " 0.1746, 0.2003, 0.2030, -0.1342, -0.1397, -0.1973, -0.1447, -0.2399,\n", + " -0.1999, -0.0756, -0.0578, -0.0526, -0.0540, -0.0313, -0.0666, -0.0515,\n", + " -0.0274, 0.0133, 0.0156, -0.0838, -0.1242, -0.1593, -0.1867, -0.1604,\n", + " -0.2051, -0.2431, -0.1608, -0.1365, 0.0034, 0.0280, 0.0176, 0.2708,\n", + " 0.3091, 0.3022, 0.2300]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 5.389488069340587e-05\n", + "Grad encoder.fc1.bias: 0.00038188343751244247\n", + "Grad encoder.encoder.0.weight: 1.896363392006606e-05\n", + "Grad encoder.encoder.0.bias: 0.00037899662856943905\n", + "Grad encoder.encoder.2.weight: 1.5258082385116722e-05\n", + "Grad encoder.encoder.2.bias: 0.00029265519697219133\n", + "Grad encoder.encoder.4.weight: 5.8808407629840076e-05\n", + "Grad encoder.encoder.4.bias: 0.0010060637723654509\n", + "Grad decoder.fc1.0.weight: 3.769680915866047e-05\n", + "Grad decoder.fc1.0.bias: 0.0003811787464655936\n", + "Grad decoder.fc1.2.weight: 5.994624370941892e-05\n", + "Grad decoder.fc1.2.bias: 0.00030513491947203875\n", + "Grad decoder.fc1.4.weight: 7.629806350450963e-05\n", + "Grad decoder.fc1.4.bias: 0.0003853971720673144\n", + "Grad decoder.fc2.weight: 0.00011156171967741102\n", + "Grad decoder.fc2.bias: 0.0018557754810899496\n", + "Grad _memory_unit.weight_ih_l0: 5.71772125113057e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.599824776756577e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.8458109479979612e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.1255412977770902e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010112106974702328\n", + "Grad _memory_unit.bias_hh_l1: 5.01929571328219e-05\n", + "Data X Sample: tensor([[1.2444, 1.4419, 1.5432, 1.6793, 1.7792, 1.8740, 1.9936, 2.1081, 2.2726,\n", + " 3.6902, 3.9876, 3.9515, 3.8371, 3.7189, 3.4651, 3.4968, 3.3916, 3.3658,\n", + " 3.4672, 3.4591, 3.4080, 3.3251, 2.9038, 2.8230, 2.7908, 2.8287, 2.8345,\n", + " 2.9488, 2.8898, 2.8985, 3.0096, 3.0507, 3.4431, 2.5242, 4.2282, 4.5021,\n", + " 4.7923, 5.1521, 5.6412, 5.5296, 0.9641, 0.5656, 0.5356, 1.0190, 1.4945,\n", + " 1.5725, 1.1082, 1.5482]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1653, -0.2954, 0.8504, 1.5149, -0.0240, 0.5449, 0.1270, 0.4377,\n", + " -0.0634, -0.0027, 0.1205, -0.6042, 0.9693, -1.1436, -0.9196, -0.0456,\n", + " -0.0522, -0.4388, -0.4705, 0.1025, 0.0200, 0.1139, -0.3589, 0.0177,\n", + " 1.2299, 0.1826, 0.3624, -0.7039, -1.0738, -0.2540, 0.2018, 0.1031,\n", + " -1.0081, -0.3121, 0.1765, 0.2994, 0.4848, -0.0484, 0.1862, 0.2246,\n", + " -0.5715, -0.4007, -0.0403]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2377, -0.2724, -0.0651, -0.1616, -0.0665, 0.0741, 0.1577, 0.2297,\n", + " 0.1850, 0.2116, 0.2191, -0.1426, -0.1500, -0.2117, -0.1499, -0.2507,\n", + " -0.2048, -0.0777, -0.0650, -0.0544, -0.0551, -0.0312, -0.0665, -0.0520,\n", + " -0.0267, 0.0135, 0.0126, -0.0942, -0.1365, -0.1660, -0.2003, -0.1713,\n", + " -0.2166, -0.2608, -0.1689, -0.1477, 0.0055, 0.0302, 0.0191, 0.2869,\n", + " 0.3208, 0.3209, 0.2425]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 7.254559022840112e-05\n", + "Grad encoder.fc1.bias: 0.00021743576508015394\n", + "Grad encoder.encoder.0.weight: 2.269343713123817e-05\n", + "Grad encoder.encoder.0.bias: 0.0002556625986471772\n", + "Grad encoder.encoder.2.weight: 1.5651285139028914e-05\n", + "Grad encoder.encoder.2.bias: 0.00025325745809823275\n", + "Grad encoder.encoder.4.weight: 4.767865175381303e-05\n", + "Grad encoder.encoder.4.bias: 0.000447121070465073\n", + "Grad decoder.fc1.0.weight: 1.7318385289399885e-05\n", + "Grad decoder.fc1.0.bias: 0.00015929665823932737\n", + "Grad decoder.fc1.2.weight: 2.4452514480799437e-05\n", + "Grad decoder.fc1.2.bias: 0.00014235662820283324\n", + "Grad decoder.fc1.4.weight: 2.8813672543037683e-05\n", + "Grad decoder.fc1.4.bias: 0.00018745748093351722\n", + "Grad decoder.fc2.weight: 0.00010753551032394171\n", + "Grad decoder.fc2.bias: 0.0018917403649538755\n", + "Grad _memory_unit.weight_ih_l0: 4.5879901335865725e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.1295052647474222e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.0665479749150109e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.1463798728073016e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.575603477656841e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.7244550690520555e-05\n", + "Data X Sample: tensor([[1.7101, 2.0712, 2.1773, 2.2172, 2.2982, 2.4471, 2.5251, 2.4503, 2.5655,\n", + " 2.5781, 2.5601, 2.6778, 2.6520, 2.5002, 2.4916, 2.5013, 2.4796, 2.4876,\n", + " 2.6288, 2.6315, 2.7358, 2.7801, 2.7038, 2.7122, 2.7064, 2.8156, 2.7119,\n", + " 2.8224, 2.3382, 2.4727, 2.2922, 2.3405, 2.0174, 1.2655, 1.7795, 1.6953,\n", + " 1.6676, 1.5848, 1.5466, 1.4668, 1.3841, 0.7926, 0.8407, 1.3749, 2.1288,\n", + " 2.1729, 1.5570, 2.2207]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6378, 1.2676, -0.6436, -0.0395, 0.9106, 0.0338, -0.9182, -0.5668,\n", + " -0.6442, -0.7321, -0.7854, 0.6543, -1.1237, -0.0557, 0.4282, -0.6317,\n", + " 0.8238, 0.2843, -0.3167, 0.0114, 0.5713, 0.3160, 0.3173, 0.2124,\n", + " -0.1471, 1.1989, 0.8546, 1.2906, 1.4581, 1.4378, 1.2814, 0.3432,\n", + " 0.5736, 0.1235, -0.1320, 0.7218, -0.9960, -0.3175, 0.8307, -0.7557,\n", + " -0.8920, -1.3739, 0.3111]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5022, 0.4174, 0.0545, 0.3191, 0.1295, -0.2085, -0.4300, -0.5195,\n", + " -0.2116, -0.2944, -0.2819, 0.1844, 0.3007, 0.3895, 0.2943, 0.4261,\n", + " 0.3245, 0.1652, 0.1132, 0.2312, 0.0893, 0.0940, 0.0929, 0.0736,\n", + " 0.0580, 0.0919, -0.0993, 0.0365, 0.2968, 0.3102, 0.2753, 0.2259,\n", + " 0.3493, 0.3379, 0.2074, 0.2204, -0.0211, -0.0438, -0.0993, -0.3336,\n", + " -0.3326, -0.2934, -0.3359]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00038717000279575586\n", + "Grad encoder.fc1.bias: 0.00047595356591045856\n", + "Grad encoder.encoder.0.weight: 0.00011684214405249804\n", + "Grad encoder.encoder.0.bias: 0.0005752557190135121\n", + "Grad encoder.encoder.2.weight: 6.719087832607329e-05\n", + "Grad encoder.encoder.2.bias: 0.00038758304435759783\n", + "Grad encoder.encoder.4.weight: 0.0001699598942650482\n", + "Grad encoder.encoder.4.bias: 0.0005638540023937821\n", + "Grad decoder.fc1.0.weight: 4.607886876328848e-05\n", + "Grad decoder.fc1.0.bias: 0.0002088773180730641\n", + "Grad decoder.fc1.2.weight: 6.066873902454972e-05\n", + "Grad decoder.fc1.2.bias: 0.0002708743268158287\n", + "Grad decoder.fc1.4.weight: 6.969295645831153e-05\n", + "Grad decoder.fc1.4.bias: 0.00047589457244612277\n", + "Grad decoder.fc2.weight: 0.00013690083869732916\n", + "Grad decoder.fc2.bias: 0.00212717498652637\n", + "Grad _memory_unit.weight_ih_l0: 6.422375463444041e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.055548975476995e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.0448045031807851e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.6622169596303138e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.387722244951874e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.6894689906621352e-05\n", + "Data X Sample: tensor([[1.5276, 1.6124, 1.8858, 1.8651, 1.9721, 2.0169, 1.8734, 2.3807, 3.8519,\n", + " 4.3347, 4.3778, 4.3449, 4.0945, 4.0406, 3.9468, 3.7744, 3.6951, 3.6501,\n", + " 3.5250, 3.5651, 3.4375, 3.4644, 2.9689, 2.8936, 2.8659, 3.0402, 2.9597,\n", + " 3.0549, 2.9141, 3.1867, 3.1951, 3.3740, 3.7665, 2.8927, 4.6376, 4.9374,\n", + " 5.1187, 5.5523, 6.1229, 5.8899, 1.1597, 0.7090, 0.6548, 1.2945, 1.7442,\n", + " 1.8298, 1.2374, 1.8844]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2501, -0.4222, -1.0874, -0.1349, -0.1027, 0.1967, 0.3000, 0.2048,\n", + " 0.3884, 0.3434, 0.4672, -0.6353, -0.0398, -0.7082, -0.8339, -0.1349,\n", + " -0.8565, 0.6538, 0.0999, 1.0313, 0.5427, -0.1493, -0.0128, -0.0539,\n", + " 1.3980, 0.0300, 0.2300, 0.9326, -0.5811, -0.8055, -0.7855, 0.5072,\n", + " -0.9466, -0.8344, 0.2520, 0.0146, 0.2934, -0.7815, 0.7551, 0.4743,\n", + " 0.4188, 0.5441, -0.3415]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2247, -0.2604, -0.0620, -0.1592, -0.0730, 0.0637, 0.1425, 0.2190,\n", + " 0.1728, 0.2025, 0.2009, -0.1312, -0.1375, -0.1968, -0.1376, -0.2420,\n", + " -0.2023, -0.0752, -0.0578, -0.0539, -0.0461, -0.0323, -0.0647, -0.0543,\n", + " -0.0286, 0.0136, 0.0211, -0.0806, -0.1251, -0.1571, -0.1873, -0.1564,\n", + " -0.2040, -0.2439, -0.1602, -0.1409, 0.0054, 0.0376, 0.0099, 0.2703,\n", + " 0.3091, 0.3039, 0.2339]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001390735706081614\n", + "Grad encoder.fc1.bias: 0.0007850257679820061\n", + "Grad encoder.encoder.0.weight: 3.8733101973775774e-05\n", + "Grad encoder.encoder.0.bias: 0.0007537882775068283\n", + "Grad encoder.encoder.2.weight: 3.1206105632008985e-05\n", + "Grad encoder.encoder.2.bias: 0.0005902074044570327\n", + "Grad encoder.encoder.4.weight: 8.180136501323432e-05\n", + "Grad encoder.encoder.4.bias: 0.0009614609880372882\n", + "Grad decoder.fc1.0.weight: 3.54592630174011e-05\n", + "Grad decoder.fc1.0.bias: 0.0003196146572008729\n", + "Grad decoder.fc1.2.weight: 4.985759005649015e-05\n", + "Grad decoder.fc1.2.bias: 0.0002962999860756099\n", + "Grad decoder.fc1.4.weight: 5.580057404586114e-05\n", + "Grad decoder.fc1.4.bias: 0.00038073488394729793\n", + "Grad decoder.fc2.weight: 0.00010331167868571356\n", + "Grad decoder.fc2.bias: 0.001990340882912278\n", + "Grad _memory_unit.weight_ih_l0: 9.579082870914135e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.589292828110047e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.7899543308885768e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.550441195126041e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.012677087914199e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.4222488466184586e-05\n", + "Data X Sample: tensor([[1.5838, 1.8032, 2.0466, 1.9220, 2.1445, 2.2541, 2.3233, 2.3878, 2.3824,\n", + " 2.4928, 2.5347, 2.5064, 2.4390, 2.3120, 2.3000, 2.2715, 2.2894, 2.3503,\n", + " 2.3479, 2.3972, 2.3702, 2.4648, 2.4773, 2.4469, 2.4248, 2.4813, 2.3070,\n", + " 2.4227, 2.1682, 2.1845, 2.1627, 1.9288, 1.6412, 1.1442, 1.5320, 1.4958,\n", + " 1.4827, 1.4179, 1.4071, 1.3732, 1.2218, 0.7329, 0.7882, 1.2716, 1.7244,\n", + " 1.9842, 1.3598, 2.0017]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7553, -0.1237, -0.1760, 0.2801, 0.9504, 0.7364, 1.0241, -0.4865,\n", + " -0.2192, -0.3473, -0.3575, 0.5739, 0.6587, 0.5636, 0.2705, 0.5154,\n", + " -0.2623, -2.0380, -0.0247, -0.0646, 0.6565, 1.0226, 1.0911, 0.7817,\n", + " -0.2458, 0.2499, 0.2785, 0.4548, -0.0098, 1.1192, 2.0749, -1.0493,\n", + " 1.3649, 0.8830, 0.2667, 0.3297, 0.0059, -0.7806, -1.0124, 0.2395,\n", + " 0.6727, 1.0256, -0.1510]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4846, 0.3810, 0.0458, 0.2953, 0.0978, -0.2137, -0.4327, -0.5101,\n", + " -0.2281, -0.2964, -0.2893, 0.1917, 0.2726, 0.3710, 0.2904, 0.3980,\n", + " 0.2926, 0.1633, 0.1084, 0.2140, 0.0939, 0.0921, 0.0943, 0.0814,\n", + " 0.0353, 0.0836, -0.0727, 0.0499, 0.3101, 0.3275, 0.2821, 0.2346,\n", + " 0.3434, 0.3334, 0.2045, 0.2147, -0.0330, -0.0448, -0.0856, -0.3381,\n", + " -0.3249, -0.2706, -0.2978]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 7.425568765029311e-05\n", + "Grad encoder.fc1.bias: 0.00021535289124585688\n", + "Grad encoder.encoder.0.weight: 1.944878022186458e-05\n", + "Grad encoder.encoder.0.bias: 0.0002203015610575676\n", + "Grad encoder.encoder.2.weight: 1.5440426068380475e-05\n", + "Grad encoder.encoder.2.bias: 0.00011788693518610671\n", + "Grad encoder.encoder.4.weight: 4.3809006456285715e-05\n", + "Grad encoder.encoder.4.bias: 0.0002345170360058546\n", + "Grad decoder.fc1.0.weight: 2.1171281332499348e-05\n", + "Grad decoder.fc1.0.bias: 0.00010660105908755213\n", + "Grad decoder.fc1.2.weight: 3.053569162148051e-05\n", + "Grad decoder.fc1.2.bias: 0.00013852634583599865\n", + "Grad decoder.fc1.4.weight: 3.0158902518451214e-05\n", + "Grad decoder.fc1.4.bias: 0.00019433688430581242\n", + "Grad decoder.fc2.weight: 8.771371358307078e-05\n", + "Grad decoder.fc2.bias: 0.001576289883814752\n", + "Grad _memory_unit.weight_ih_l0: 3.1528536510450067e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.121260538639035e-05\n", + "Grad _memory_unit.bias_hh_l0: 6.025277798471507e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.3176138509152224e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.020874282810837e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.5338278899434954e-05\n", + "Data X Sample: tensor([[1.7833, 2.0784, 2.2855, 2.7288, 2.6124, 2.8832, 2.9920, 2.9911, 3.0244,\n", + " 3.0947, 2.9915, 2.9621, 2.8007, 2.7292, 2.6127, 2.5751, 2.5881, 2.5340,\n", + " 2.5999, 2.4939, 2.5051, 2.3790, 2.3688, 2.2790, 2.1433, 2.2776, 2.1285,\n", + " 2.1780, 1.7658, 1.8046, 1.7428, 1.6829, 1.5598, 1.1374, 1.7207, 1.9482,\n", + " 2.1317, 2.4064, 2.8206, 2.7605, 1.3650, 0.8384, 0.8468, 1.4582, 2.2516,\n", + " 2.5503, 1.7133, 2.4474]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.2732, -1.0364, -0.3771, -1.3527, -0.9287, -0.4295, -0.8367, -0.1992,\n", + " -0.0296, 0.3300, -0.2144, 0.0796, 0.1500, -0.5640, 0.7373, -0.2790,\n", + " 0.4646, -1.4316, -0.0728, 0.0950, -1.2090, 0.3528, -1.1988, 0.1141,\n", + " 1.4133, 1.1717, 0.7527, 0.3978, 0.2298, 0.2392, -0.0840, -0.2978,\n", + " 1.1289, -0.5600, -0.3281, -0.6996, 0.1697, -0.7141, -0.5993, 0.0683,\n", + " 1.0316, 1.2694, 0.4491]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1609, -0.2064, -0.0574, -0.1611, -0.0939, 0.0186, 0.0734, 0.1553,\n", + " 0.1208, 0.1533, 0.1224, -0.0876, -0.0876, -0.1307, -0.0987, -0.1958,\n", + " -0.1852, -0.0625, -0.0261, -0.0471, -0.0276, -0.0341, -0.0606, -0.0573,\n", + " -0.0317, 0.0154, 0.0461, -0.0236, -0.0671, -0.1212, -0.1233, -0.0992,\n", + " -0.1482, -0.1648, -0.1227, -0.0982, -0.0022, 0.0417, -0.0122, 0.1971,\n", + " 0.2561, 0.2216, 0.1850]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003582422505132854\n", + "Grad encoder.fc1.bias: 0.0011931456392630935\n", + "Grad encoder.encoder.0.weight: 0.0001095097977668047\n", + "Grad encoder.encoder.0.bias: 0.0015329732559621334\n", + "Grad encoder.encoder.2.weight: 7.624227146152407e-05\n", + "Grad encoder.encoder.2.bias: 0.0009124432690441608\n", + "Grad encoder.encoder.4.weight: 0.0002600251173134893\n", + "Grad encoder.encoder.4.bias: 0.0013852668926119804\n", + "Grad decoder.fc1.0.weight: 9.30536916712299e-05\n", + "Grad decoder.fc1.0.bias: 0.0005207130452618003\n", + "Grad decoder.fc1.2.weight: 0.0001347533252555877\n", + "Grad decoder.fc1.2.bias: 0.0005831283051520586\n", + "Grad decoder.fc1.4.weight: 0.00015910365618765354\n", + "Grad decoder.fc1.4.bias: 0.0007441093912348151\n", + "Grad decoder.fc2.weight: 0.0001845876540755853\n", + "Grad decoder.fc2.bias: 0.003123644506558776\n", + "Grad _memory_unit.weight_ih_l0: 1.5773312043165788e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.001755587523803e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.0574614609358832e-05\n", + "Grad _memory_unit.weight_ih_l1: 5.562211299547926e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011315676238154992\n", + "Grad _memory_unit.bias_hh_l1: 5.6558601500000805e-05\n", + "Data X Sample: tensor([[1.6666, 1.8978, 2.0330, 2.1997, 2.3102, 2.4913, 2.4265, 2.4815, 2.5631,\n", + " 2.5749, 2.5981, 2.6973, 2.5877, 2.5601, 2.4740, 2.3877, 2.3711, 2.5882,\n", + " 2.5131, 2.4530, 2.4438, 2.5704, 2.5857, 2.5634, 2.5562, 2.6067, 2.6320,\n", + " 2.6633, 2.3660, 2.3515, 2.3237, 2.1968, 1.7974, 1.2106, 1.6496, 1.5980,\n", + " 1.5358, 1.4974, 1.4642, 1.4554, 1.3507, 0.8125, 0.7619, 1.3634, 2.0772,\n", + " 2.1615, 1.4550, 2.1190]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6558, 0.0860, 1.7950, 0.3162, 0.0704, -0.4783, -0.0945, -0.0157,\n", + " -0.3754, -0.5326, -0.1827, 0.6928, 1.1621, 0.4559, -0.1239, -0.7416,\n", + " 1.1921, -0.2768, -0.1428, 0.9579, 0.0563, -0.3667, -1.2363, -0.3470,\n", + " -2.3390, 0.4450, -0.2691, 0.3033, -0.4149, 0.2447, 0.3854, 0.3172,\n", + " 0.3780, 0.4742, 0.4961, 0.6022, 0.3652, -0.0597, 0.7506, -0.3745,\n", + " -0.4628, -0.4412, -0.7429]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5683, 0.4443, 0.0636, 0.3454, 0.1072, -0.2565, -0.5076, -0.6035,\n", + " -0.2963, -0.3732, -0.3609, 0.2374, 0.3127, 0.4259, 0.3543, 0.4707,\n", + " 0.3456, 0.1972, 0.1155, 0.2381, 0.1159, 0.1202, 0.1274, 0.1055,\n", + " 0.0356, 0.0761, -0.0706, 0.0634, 0.3770, 0.4183, 0.3467, 0.2797,\n", + " 0.4142, 0.3968, 0.2520, 0.2545, -0.0377, -0.0501, -0.0742, -0.4094,\n", + " -0.4073, -0.3289, -0.3483]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 5.1088962209178135e-05\n", + "Grad encoder.fc1.bias: 0.0001963882241398096\n", + "Grad encoder.encoder.0.weight: 1.552616413391661e-05\n", + "Grad encoder.encoder.0.bias: 0.00031187228159978986\n", + "Grad encoder.encoder.2.weight: 1.637699460843578e-05\n", + "Grad encoder.encoder.2.bias: 0.00024257751647382975\n", + "Grad encoder.encoder.4.weight: 5.8264191466150805e-05\n", + "Grad encoder.encoder.4.bias: 0.0005666174693033099\n", + "Grad decoder.fc1.0.weight: 3.22524610965047e-05\n", + "Grad decoder.fc1.0.bias: 0.00021365846623666584\n", + "Grad decoder.fc1.2.weight: 4.930980139761232e-05\n", + "Grad decoder.fc1.2.bias: 0.00019836598949041218\n", + "Grad decoder.fc1.4.weight: 5.5797063396312296e-05\n", + "Grad decoder.fc1.4.bias: 0.00022351404186338186\n", + "Grad decoder.fc2.weight: 9.56429066718556e-05\n", + "Grad decoder.fc2.bias: 0.0018207360990345478\n", + "Grad _memory_unit.weight_ih_l0: 4.6782461140537634e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.8597824237076566e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.538469385006465e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.825862227633479e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.750588777824305e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.3670043447054923e-05\n", + "Data X Sample: tensor([[1.2221, 1.4259, 1.4831, 1.6530, 1.8201, 1.8607, 1.9921, 1.9207, 3.3491,\n", + " 3.8166, 4.0383, 3.7879, 3.6773, 3.5499, 3.1776, 3.2466, 3.2234, 3.3465,\n", + " 3.3577, 3.0964, 3.1897, 3.1736, 2.8508, 2.7161, 2.7251, 2.7843, 2.7599,\n", + " 2.6715, 2.7927, 2.9116, 3.0796, 3.0645, 3.2099, 2.2793, 3.7527, 4.3561,\n", + " 4.5721, 4.9613, 5.4891, 5.3735, 0.9593, 0.5815, 0.5295, 0.9903, 1.4112,\n", + " 1.5782, 1.0878, 1.5326]], device='cuda:0')\n", + "Data Y Sample: tensor([[-2.3351e-01, -8.3893e-01, -6.7945e-01, -1.2816e+00, 4.7853e-01,\n", + " 4.5806e-01, 1.0464e+00, 2.0365e-01, 2.4745e-01, 2.8731e-01,\n", + " -2.3236e-01, -1.5543e-01, 3.5826e-01, -8.3820e-01, 3.9556e-01,\n", + " -1.4029e-01, -1.6444e-02, -3.7625e-02, -3.5627e-01, -1.9026e+00,\n", + " -4.7072e-01, 2.5797e-01, -1.5735e-01, 4.8853e-01, 5.2923e-03,\n", + " -6.4029e-02, -2.9152e-01, -7.3187e-01, 5.8736e-01, 3.1399e-01,\n", + " 2.3590e-01, 5.0902e-01, -5.7717e-01, 5.6036e-01, 6.3749e-01,\n", + " -9.9700e-02, -2.2483e-01, 2.8616e-01, 2.1396e-02, 1.5073e-01,\n", + " 1.6592e-03, -2.3929e-01, 4.3915e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2098, -0.2446, -0.0584, -0.1600, -0.0839, 0.0473, 0.1210, 0.2067,\n", + " 0.1550, 0.1885, 0.1780, -0.1161, -0.1195, -0.1794, -0.1229, -0.2314,\n", + " -0.1991, -0.0698, -0.0495, -0.0510, -0.0349, -0.0317, -0.0578, -0.0558,\n", + " -0.0288, 0.0125, 0.0362, -0.0575, -0.1064, -0.1443, -0.1693, -0.1395,\n", + " -0.1851, -0.2227, -0.1459, -0.1323, 0.0034, 0.0457, 0.0015, 0.2496,\n", + " 0.2958, 0.2829, 0.2233]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0008887163130566478\n", + "Grad encoder.fc1.bias: 0.0004150604363530874\n", + "Grad encoder.encoder.0.weight: 0.00024759487132541835\n", + "Grad encoder.encoder.0.bias: 0.0004974041366949677\n", + "Grad encoder.encoder.2.weight: 0.00013637973461300135\n", + "Grad encoder.encoder.2.bias: 0.00041825801599770784\n", + "Grad encoder.encoder.4.weight: 0.000344927073456347\n", + "Grad encoder.encoder.4.bias: 0.0010397767182439566\n", + "Grad decoder.fc1.0.weight: 8.272917330032215e-05\n", + "Grad decoder.fc1.0.bias: 0.0003070453240070492\n", + "Grad decoder.fc1.2.weight: 7.043233927106485e-05\n", + "Grad decoder.fc1.2.bias: 0.00032355106668546796\n", + "Grad decoder.fc1.4.weight: 6.519228190882131e-05\n", + "Grad decoder.fc1.4.bias: 0.0006793462089262903\n", + "Grad decoder.fc2.weight: 0.00010511909204069525\n", + "Grad decoder.fc2.bias: 0.002179501112550497\n", + "Grad _memory_unit.weight_ih_l0: 3.5497303088050103e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.0818874216056429e-05\n", + "Grad _memory_unit.bias_hh_l0: 6.099010988691589e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.2728204385202844e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.988025077385828e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.954220508399885e-05\n", + "Data X Sample: tensor([[1.9212, 2.3770, 2.7633, 2.6720, 2.8958, 2.9509, 3.0628, 3.0877, 3.0952,\n", + " 3.1199, 3.0486, 3.2017, 3.1447, 3.0564, 3.0338, 3.1139, 3.0740, 3.1221,\n", + " 3.0934, 2.8881, 2.7628, 2.7388, 2.5761, 2.3668, 2.2728, 2.3403, 2.0539,\n", + " 2.1045, 1.9982, 2.0601, 2.0507, 1.9868, 1.8150, 1.1648, 2.0516, 2.3374,\n", + " 2.5643, 2.7536, 3.0488, 2.8542, 1.6609, 0.9360, 0.9741, 1.8342, 2.4895,\n", + " 2.5503, 1.8493, 2.5803]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5115, 0.3061, -0.3699, 0.2538, -1.7564, -1.6120, -2.5497, -2.0218,\n", + " -1.0206, -0.8992, -0.1544, 0.4780, 0.4027, 0.5386, 0.0530, -0.3187,\n", + " -0.6690, 0.5512, 2.3025, 0.2702, -0.7216, -0.6474, -0.9351, 1.6083,\n", + " 0.2844, 0.5221, 0.5179, -0.0577, 1.3500, 1.8164, 1.7461, 1.1348,\n", + " -0.0544, 0.0094, -0.6135, 0.6368, 0.7456, -0.1270, -0.7577, 0.0069,\n", + " 0.5396, 0.5488, 0.4801]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1684, -0.2110, -0.0560, -0.1629, -0.0963, 0.0201, 0.0774, 0.1653,\n", + " 0.1227, 0.1567, 0.1281, -0.0886, -0.0894, -0.1380, -0.0991, -0.2023,\n", + " -0.1881, -0.0629, -0.0291, -0.0470, -0.0255, -0.0314, -0.0575, -0.0568,\n", + " -0.0301, 0.0146, 0.0500, -0.0227, -0.0709, -0.1218, -0.1280, -0.1041,\n", + " -0.1506, -0.1722, -0.1229, -0.1043, -0.0017, 0.0463, -0.0095, 0.2035,\n", + " 0.2622, 0.2305, 0.1912]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 5.912614506087266e-05\n", + "Grad encoder.fc1.bias: 0.00046758129610680044\n", + "Grad encoder.encoder.0.weight: 1.972537938854657e-05\n", + "Grad encoder.encoder.0.bias: 0.0005221872124820948\n", + "Grad encoder.encoder.2.weight: 1.9966759282397106e-05\n", + "Grad encoder.encoder.2.bias: 0.00040900608291849494\n", + "Grad encoder.encoder.4.weight: 7.183202978922054e-05\n", + "Grad encoder.encoder.4.bias: 0.001152049284428358\n", + "Grad decoder.fc1.0.weight: 3.982595444540493e-05\n", + "Grad decoder.fc1.0.bias: 0.0003730030730366707\n", + "Grad decoder.fc1.2.weight: 5.288698594085872e-05\n", + "Grad decoder.fc1.2.bias: 0.0002823498216457665\n", + "Grad decoder.fc1.4.weight: 5.7004370319191366e-05\n", + "Grad decoder.fc1.4.bias: 0.000269167881924659\n", + "Grad decoder.fc2.weight: 0.00010738647688413039\n", + "Grad decoder.fc2.bias: 0.002077104989439249\n", + "Grad _memory_unit.weight_ih_l0: 7.686523531447165e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.3712447475409135e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.7567830582265742e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.5479924918035977e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010097934864461422\n", + "Grad _memory_unit.bias_hh_l1: 5.045924262958579e-05\n", + "Data X Sample: tensor([[1.2794, 1.4667, 1.6529, 1.7077, 1.7723, 1.8504, 1.9320, 2.0528, 1.8771,\n", + " 3.6270, 4.2223, 4.2864, 4.0324, 3.7298, 3.6416, 3.5926, 3.5300, 3.4045,\n", + " 3.4796, 3.3624, 3.3492, 3.4354, 3.0845, 2.9108, 2.8471, 2.8339, 2.8345,\n", + " 2.7653, 2.7094, 2.8854, 3.1111, 3.0314, 3.3859, 2.5402, 4.2699, 4.6942,\n", + " 4.8887, 5.3482, 5.9518, 5.6459, 1.0547, 0.5895, 0.6124, 1.0276, 1.4231,\n", + " 1.7269, 1.0606, 1.5091]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5166, -1.0731, -0.4324, -0.2711, -1.4556, -0.1796, 0.3431, 0.2194,\n", + " 1.1604, 0.7780, 0.6504, -0.4454, -0.8185, -1.1722, -0.7641, -0.7417,\n", + " -1.3194, -0.8866, -0.7847, -0.8795, 0.4082, 0.0183, -0.0348, -0.7049,\n", + " -0.7979, -0.0397, 0.6392, 1.2151, 0.6387, -0.1616, -0.7040, 0.4015,\n", + " -0.9018, -0.5800, -0.4481, 0.7928, 0.9926, -0.3178, 0.5659, 0.8517,\n", + " 0.6839, 1.0534, 1.0962]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2394, -0.2675, -0.0583, -0.1598, -0.0780, 0.0656, 0.1491, 0.2396,\n", + " 0.1753, 0.2093, 0.2111, -0.1328, -0.1386, -0.2088, -0.1365, -0.2535,\n", + " -0.2081, -0.0735, -0.0630, -0.0530, -0.0392, -0.0283, -0.0558, -0.0538,\n", + " -0.0253, 0.0118, 0.0303, -0.0757, -0.1307, -0.1585, -0.1978, -0.1644,\n", + " -0.2077, -0.2586, -0.1591, -0.1522, 0.0056, 0.0494, 0.0105, 0.2811,\n", + " 0.3197, 0.3207, 0.2468]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004241380956955254\n", + "Grad encoder.fc1.bias: 0.00048707611858844757\n", + "Grad encoder.encoder.0.weight: 0.00012107045040465891\n", + "Grad encoder.encoder.0.bias: 0.0005791950970888138\n", + "Grad encoder.encoder.2.weight: 7.143974653445184e-05\n", + "Grad encoder.encoder.2.bias: 0.0004269216151442379\n", + "Grad encoder.encoder.4.weight: 0.00019175044144503772\n", + "Grad encoder.encoder.4.bias: 0.0008197743445634842\n", + "Grad decoder.fc1.0.weight: 4.998180520487949e-05\n", + "Grad decoder.fc1.0.bias: 0.000254022772423923\n", + "Grad decoder.fc1.2.weight: 6.533843406941742e-05\n", + "Grad decoder.fc1.2.bias: 0.00032415823079645634\n", + "Grad decoder.fc1.4.weight: 6.942493200767785e-05\n", + "Grad decoder.fc1.4.bias: 0.0005415432387962937\n", + "Grad decoder.fc2.weight: 0.00011492821795400232\n", + "Grad decoder.fc2.bias: 0.0024316785857081413\n", + "Grad _memory_unit.weight_ih_l0: 5.694973879144527e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.9490089471219108e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.835689525061753e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.083254912577104e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.595184484263882e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.7802256227005273e-05\n", + "Data X Sample: tensor([[1.6305, 1.7857, 2.0090, 2.1275, 2.0916, 1.8401, 1.9705, 3.5987, 4.2522,\n", + " 4.3663, 4.2604, 4.3799, 4.0812, 4.0543, 3.7526, 3.8319, 3.7690, 3.5167,\n", + " 3.6530, 3.4237, 3.3418, 3.1965, 2.8532, 2.7981, 2.7890, 2.8235, 2.8131,\n", + " 2.9447, 2.8725, 2.9935, 3.0481, 3.1889, 3.5311, 2.6226, 4.3876, 4.6966,\n", + " 4.9988, 5.4648, 6.2814, 6.1083, 1.3125, 0.6791, 0.6811, 1.3491, 1.8592,\n", + " 2.0357, 1.3326, 1.8844]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2776, -0.0942, 0.4010, -1.0179, -0.7559, 0.9060, -0.1934, 1.0002,\n", + " 0.4167, 0.8379, 0.9950, -0.0561, -0.7372, -0.5078, -1.2080, -0.8595,\n", + " -0.8831, -0.3347, -0.5655, 0.0671, -0.4524, -0.3579, -0.6249, -1.2743,\n", + " -0.6170, -0.6919, 1.5934, 0.4126, 0.2073, -0.9267, -0.0611, -1.0779,\n", + " -0.4131, -0.5523, -0.1221, -1.1505, 0.0000, 0.0000, -0.0156, 0.9540,\n", + " 0.6606, 0.8301, 0.5896]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2492, -0.2752, -0.0582, -0.1600, -0.0758, 0.0717, 0.1581, 0.2514,\n", + " 0.1820, 0.2165, 0.2220, -0.1383, -0.1442, -0.2182, -0.1406, -0.2611,\n", + " -0.2109, -0.0741, -0.0671, -0.0537, -0.0406, -0.0267, -0.0548, -0.0528,\n", + " -0.0241, 0.0120, 0.0279, -0.0811, -0.1396, -0.1643, -0.2075, -0.1732,\n", + " -0.2157, -0.2706, -0.1631, -0.1584, 0.0067, 0.0498, 0.0130, 0.2918,\n", + " 0.3278, 0.3327, 0.2553]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 8.86639318196103e-05\n", + "Grad encoder.fc1.bias: 0.00012164605868747458\n", + "Grad encoder.encoder.0.weight: 2.9001977964071557e-05\n", + "Grad encoder.encoder.0.bias: 0.00011229710798943415\n", + "Grad encoder.encoder.2.weight: 1.701267137832474e-05\n", + "Grad encoder.encoder.2.bias: 9.866277105174959e-05\n", + "Grad encoder.encoder.4.weight: 4.615593934431672e-05\n", + "Grad encoder.encoder.4.bias: 0.00026724187773652375\n", + "Grad decoder.fc1.0.weight: 1.59235733008245e-05\n", + "Grad decoder.fc1.0.bias: 8.652627002447844e-05\n", + "Grad decoder.fc1.2.weight: 2.6750787583296187e-05\n", + "Grad decoder.fc1.2.bias: 0.00014115034718997777\n", + "Grad decoder.fc1.4.weight: 3.255673436797224e-05\n", + "Grad decoder.fc1.4.bias: 0.0002499329566489905\n", + "Grad decoder.fc2.weight: 7.592935435241088e-05\n", + "Grad decoder.fc2.bias: 0.0017650630325078964\n", + "Grad _memory_unit.weight_ih_l0: 2.4523881165805506e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.66561936668586e-06\n", + "Grad _memory_unit.bias_hh_l0: 3.923385065718321e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.0467255151525023e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.8317608919460326e-05\n", + "Grad _memory_unit.bias_hh_l1: 9.45469037105795e-06\n", + "Data X Sample: tensor([[2.5916, 2.0843, 1.9264, 1.9788, 2.0387, 2.0567, 3.2477, 4.0814, 4.3035,\n", + " 4.2289, 4.3365, 4.2514, 3.9925, 3.8579, 3.8030, 3.8428, 3.7312, 3.5805,\n", + " 3.6695, 3.5149, 3.4767, 3.5226, 2.9520, 2.8115, 2.7158, 2.8130, 2.8531,\n", + " 2.9121, 2.8933, 2.9476, 2.9466, 3.0811, 3.3265, 2.3938, 4.1596, 4.5361,\n", + " 4.8611, 5.3429, 6.0215, 5.8303, 1.3268, 0.6950, 0.6710, 1.2199, 1.8394,\n", + " 1.8870, 1.2918, 1.8297]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1908, -0.6133, -0.5963, 2.1083, 0.2185, 0.6193, -0.5929, 2.4050,\n", + " -0.5441, -0.3960, -0.5914, -2.2416, -1.3492, -0.0322, 0.4744, -0.4565,\n", + " -1.3220, -0.1507, 0.1166, -0.3928, -0.3105, -0.5883, -0.0876, -0.6689,\n", + " -0.2264, -0.3768, 0.7900, -0.4535, 0.3636, -0.9257, 1.6541, 0.0498,\n", + " 0.2950, 0.5596, 0.1265, 0.4790, 0.8233, 0.0000, 0.2870, 0.2426,\n", + " 0.6625, 0.6651, 1.1814]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2475, -0.2736, -0.0578, -0.1603, -0.0762, 0.0705, 0.1561, 0.2516,\n", + " 0.1804, 0.2150, 0.2193, -0.1368, -0.1420, -0.2165, -0.1393, -0.2605,\n", + " -0.2102, -0.0730, -0.0653, -0.0531, -0.0402, -0.0250, -0.0543, -0.0518,\n", + " -0.0242, 0.0123, 0.0284, -0.0784, -0.1392, -0.1649, -0.2062, -0.1724,\n", + " -0.2141, -0.2690, -0.1611, -0.1572, 0.0072, 0.0502, 0.0128, 0.2902,\n", + " 0.3261, 0.3301, 0.2548]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000167395148309879\n", + "Grad encoder.fc1.bias: 0.0001519938523415476\n", + "Grad encoder.encoder.0.weight: 5.003284604754299e-05\n", + "Grad encoder.encoder.0.bias: 0.00011348578846082091\n", + "Grad encoder.encoder.2.weight: 2.4630249754409306e-05\n", + "Grad encoder.encoder.2.bias: 0.00014238715812098235\n", + "Grad encoder.encoder.4.weight: 6.728409789502621e-05\n", + "Grad encoder.encoder.4.bias: 0.00018810047185979784\n", + "Grad decoder.fc1.0.weight: 2.7593485356192105e-05\n", + "Grad decoder.fc1.0.bias: 0.00013177342771086842\n", + "Grad decoder.fc1.2.weight: 4.360819730209187e-05\n", + "Grad decoder.fc1.2.bias: 0.00013028946705162525\n", + "Grad decoder.fc1.4.weight: 6.342220876831561e-05\n", + "Grad decoder.fc1.4.bias: 0.00024056060647126287\n", + "Grad decoder.fc2.weight: 7.55654982640408e-05\n", + "Grad decoder.fc2.bias: 0.0019985868129879236\n", + "Grad _memory_unit.weight_ih_l0: 1.7050533642759547e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.768538464209996e-06\n", + "Grad _memory_unit.bias_hh_l0: 4.669783265853766e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.0519403303987929e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.5190069209202193e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.274911846849136e-05\n", + "Data X Sample: tensor([[1.6008, 1.8847, 1.9985, 2.1275, 2.1736, 2.2511, 2.3418, 2.3551, 2.3702,\n", + " 2.4280, 2.4839, 2.3662, 2.4456, 2.3311, 2.3983, 2.2565, 2.1887, 2.3754,\n", + " 2.3892, 2.4120, 2.4242, 2.5643, 2.5158, 2.5519, 2.4680, 2.5179, 2.4908,\n", + " 2.3778, 2.1023, 2.0994, 2.0262, 1.9509, 1.6742, 1.0825, 1.4952, 1.4739,\n", + " 1.4454, 1.4205, 1.4388, 1.3420, 1.3268, 0.7408, 0.7740, 1.3376, 1.9345,\n", + " 2.1729, 1.3938, 2.0877]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 3.2437e-01, 8.6497e-01, -1.7056e+00, -9.9083e-01, -7.7272e-01,\n", + " -3.4297e-01, -6.6151e-01, -6.6129e-01, 2.7788e-01, -5.4225e-01,\n", + " -6.2768e-01, 6.1559e-01, 5.3235e-01, 2.8339e-01, 1.2232e+00,\n", + " 5.7439e-01, -9.8434e-01, 4.8703e-01, -1.9185e-01, -1.0705e+00,\n", + " 2.2321e-02, -4.6763e-01, -9.3975e-01, 7.7838e-01, -3.6524e-01,\n", + " -1.4570e-01, -9.3454e-01, 8.7145e-01, 2.8469e-01, 5.5017e-01,\n", + " 6.3557e-01, 8.5123e-01, -7.4413e-02, -5.8751e-01, -3.6401e+00,\n", + " 1.7162e-01, -6.2880e-04, 5.6055e-02, 5.0583e-01, -9.8804e-01,\n", + " -5.5730e-01, -9.8871e-01, -4.4427e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2419, 0.2022, 0.0483, 0.0245, 0.0213, -0.1654, -0.2613, -0.2256,\n", + " -0.1780, -0.2138, -0.2149, 0.1125, 0.0968, 0.1886, 0.1816, 0.1906,\n", + " 0.1174, 0.0545, 0.0736, 0.1268, 0.0778, 0.0851, 0.0059, 0.0038,\n", + " 0.0379, 0.0560, 0.0013, 0.0008, 0.1745, 0.2064, 0.1832, 0.1046,\n", + " 0.1806, 0.1507, 0.0898, 0.1285, -0.0203, 0.0117, 0.0264, -0.1724,\n", + " -0.1214, -0.1471, -0.1236]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002328821865376085\n", + "Grad encoder.fc1.bias: 0.00010419153841212392\n", + "Grad encoder.encoder.0.weight: 7.247830944834277e-05\n", + "Grad encoder.encoder.0.bias: 0.00013369925727602094\n", + "Grad encoder.encoder.2.weight: 3.930790990125388e-05\n", + "Grad encoder.encoder.2.bias: 0.00010448363900650293\n", + "Grad encoder.encoder.4.weight: 0.00010590351303108037\n", + "Grad encoder.encoder.4.bias: 0.00034877797588706017\n", + "Grad decoder.fc1.0.weight: 2.8677935915766284e-05\n", + "Grad decoder.fc1.0.bias: 6.702099199173972e-05\n", + "Grad decoder.fc1.2.weight: 4.546490526990965e-05\n", + "Grad decoder.fc1.2.bias: 0.00015476200496777892\n", + "Grad decoder.fc1.4.weight: 6.76979761919938e-05\n", + "Grad decoder.fc1.4.bias: 0.0003546166990417987\n", + "Grad decoder.fc2.weight: 7.088331767590716e-05\n", + "Grad decoder.fc2.bias: 0.002610171679407358\n", + "Grad _memory_unit.weight_ih_l0: 7.977663472047425e-07\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.148854592742282e-07\n", + "Grad _memory_unit.bias_hh_l0: 5.793901891593123e-07\n", + "Grad _memory_unit.weight_ih_l1: 5.019886089030479e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.6728738046367653e-05\n", + "Grad _memory_unit.bias_hh_l1: 8.260034519480541e-06\n", + "Data X Sample: tensor([[1.5138, 1.7245, 1.9384, 2.0860, 2.2931, 2.4088, 2.4928, 2.5383, 2.5777,\n", + " 2.6523, 2.7758, 2.6661, 2.5588, 2.5792, 2.6051, 2.5013, 2.4828, 2.5669,\n", + " 2.4760, 2.4641, 2.4511, 2.4464, 2.4435, 2.3401, 2.4042, 2.4604, 2.4349,\n", + " 2.5450, 2.2064, 2.2729, 2.3272, 2.2880, 2.2440, 1.4578, 1.9487, 1.8096,\n", + " 1.7010, 1.6432, 1.6543, 1.6115, 1.1741, 0.7348, 0.7154, 1.3089, 2.0415,\n", + " 2.0528, 1.3938, 2.0017]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.4988, -0.0258, -0.1273, 1.1199, 0.0117, 0.4122, 0.2647, -0.3325,\n", + " 0.2434, 0.2175, 0.5731, 1.8663, -0.5698, 0.3880, -0.8456, 0.1446,\n", + " -1.3797, -0.4134, -0.9543, 0.1513, 0.0465, 0.6429, 0.7766, -0.5191,\n", + " 0.4324, -0.2147, -0.8021, -0.2369, 0.0713, -0.4196, 1.0480, 0.2288,\n", + " 1.3142, 1.1076, 0.4403, 0.3778, 0.0501, 0.5417, 0.5660, 1.5314,\n", + " 0.2921, 0.6003, 0.5556]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2635, 0.2324, 0.0619, 0.0296, 0.0354, -0.1771, -0.2783, -0.2446,\n", + " -0.2064, -0.2472, -0.2428, 0.1248, 0.1029, 0.2083, 0.2035, 0.2199,\n", + " 0.1372, 0.0604, 0.0784, 0.1364, 0.0842, 0.1007, 0.0085, 0.0049,\n", + " 0.0471, 0.0527, -0.0040, -0.0083, 0.1873, 0.2349, 0.2044, 0.1122,\n", + " 0.2012, 0.1668, 0.1020, 0.1439, -0.0163, 0.0130, 0.0439, -0.1941,\n", + " -0.1478, -0.1768, -0.1488]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001546210260130465\n", + "Grad encoder.fc1.bias: 0.00014278586604632437\n", + "Grad encoder.encoder.0.weight: 5.1863469707313925e-05\n", + "Grad encoder.encoder.0.bias: 0.00017956143710762262\n", + "Grad encoder.encoder.2.weight: 3.027609272976406e-05\n", + "Grad encoder.encoder.2.bias: 0.0001824231876526028\n", + "Grad encoder.encoder.4.weight: 9.080773452296853e-05\n", + "Grad encoder.encoder.4.bias: 0.00048253574641421437\n", + "Grad decoder.fc1.0.weight: 3.0385835998458788e-05\n", + "Grad decoder.fc1.0.bias: 0.00022947673278395087\n", + "Grad decoder.fc1.2.weight: 4.21664044552017e-05\n", + "Grad decoder.fc1.2.bias: 0.00017367408145219088\n", + "Grad decoder.fc1.4.weight: 5.171447264729068e-05\n", + "Grad decoder.fc1.4.bias: 0.00024183961795642972\n", + "Grad decoder.fc2.weight: 9.461277659283951e-05\n", + "Grad decoder.fc2.bias: 0.0022774392273277044\n", + "Grad _memory_unit.weight_ih_l0: 4.75121714771376e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.089075860567391e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.0992931493092328e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.7803508853830863e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.271855479804799e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.6419922505738214e-05\n", + "Data X Sample: tensor([[1.5743, 1.7230, 1.9504, 1.9963, 2.0199, 2.0302, 2.2124, 2.2757, 2.2604,\n", + " 2.2780, 2.3031, 2.3935, 2.2703, 2.2848, 2.1714, 2.1416, 2.0740, 2.2535,\n", + " 2.2818, 2.3079, 2.3186, 2.3607, 2.4411, 2.4813, 2.5056, 2.5335, 2.4668,\n", + " 2.4675, 2.2307, 2.3941, 2.4217, 2.3488, 2.2022, 1.4120, 1.9340, 1.8242,\n", + " 1.6105, 1.4735, 1.5909, 1.5235, 1.2122, 0.7189, 0.7255, 1.2429, 1.6729,\n", + " 1.9957, 1.2714, 1.8219]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 3.4610e-01, 6.4973e-01, 6.7026e-01, 2.7720e-01, -9.7207e-02,\n", + " -6.5642e-01, -6.6732e-01, -5.0869e-01, -1.9328e-01, -5.9153e-01,\n", + " -3.6019e-01, 1.5902e+00, 5.4027e-01, 6.9522e-01, -5.4086e-01,\n", + " -1.2272e-03, -3.5695e-01, -2.7606e-01, -7.5310e-01, 1.9330e-01,\n", + " 1.2112e-01, 1.8364e-01, -2.6838e-01, 2.3146e-01, 6.5872e-01,\n", + " 4.1171e-02, 2.3128e-01, 4.5682e-03, 8.8452e-01, 5.3584e-01,\n", + " 1.1223e+00, 6.1230e-01, 6.7544e-01, 1.0851e-01, 1.5101e+00,\n", + " -1.0702e-01, 0.0000e+00, 2.3763e-01, 3.8169e-02, -4.4387e-01,\n", + " -3.2257e-02, -6.5952e-01, 5.8024e-02]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2948, 0.2488, 0.0642, 0.0563, 0.0395, -0.1857, -0.3032, -0.2793,\n", + " -0.2278, -0.2679, -0.2648, 0.1380, 0.1149, 0.2265, 0.2217, 0.2389,\n", + " 0.1572, 0.0751, 0.0800, 0.1380, 0.0876, 0.1084, 0.0218, 0.0179,\n", + " 0.0405, 0.0455, -0.0092, -0.0026, 0.2094, 0.2641, 0.2229, 0.1309,\n", + " 0.2237, 0.1910, 0.1233, 0.1547, -0.0253, 0.0085, 0.0475, -0.2209,\n", + " -0.1774, -0.1920, -0.1674]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002553462400101125\n", + "Grad encoder.fc1.bias: 0.00019744905875995755\n", + "Grad encoder.encoder.0.weight: 7.817856385372579e-05\n", + "Grad encoder.encoder.0.bias: 0.00020919443340972066\n", + "Grad encoder.encoder.2.weight: 4.468396946322173e-05\n", + "Grad encoder.encoder.2.bias: 0.00017084021237678826\n", + "Grad encoder.encoder.4.weight: 0.00010130480222869664\n", + "Grad encoder.encoder.4.bias: 0.00037501740735024214\n", + "Grad decoder.fc1.0.weight: 2.7149324523634277e-05\n", + "Grad decoder.fc1.0.bias: 0.00013351543748285621\n", + "Grad decoder.fc1.2.weight: 3.77038013539277e-05\n", + "Grad decoder.fc1.2.bias: 0.00019165020785294473\n", + "Grad decoder.fc1.4.weight: 5.569333006860688e-05\n", + "Grad decoder.fc1.4.bias: 0.00046567554818466306\n", + "Grad decoder.fc2.weight: 0.00010210054460912943\n", + "Grad decoder.fc2.bias: 0.0021794333588331938\n", + "Grad _memory_unit.weight_ih_l0: 2.8680171908490593e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.642315722478088e-06\n", + "Grad _memory_unit.bias_hh_l0: 4.03796093451092e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.1327085758239264e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.8765844035660848e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.4202606507751625e-05\n", + "Data X Sample: tensor([[ 0.0032, -0.0117, 0.0030, 0.0131, 0.0017, 0.0206, 0.0123, 0.0085,\n", + " 0.0122, 0.0190, 0.0159, 0.0078, 0.0244, 0.0136, 0.0252, 0.0096,\n", + " -0.0802, -0.0793, -0.0847, -0.0874, -0.0957, -0.0551, -0.0795, -0.0725,\n", + " -0.0601, -0.1437, -0.0826, -0.1835, -0.0486, -0.0098, -0.0245, -0.0055,\n", + " 0.0088, -0.0366, 0.0074, 0.0413, 0.0079, 0.0053, 0.0254, -0.0028,\n", + " 0.0525, 0.0060, -0.0101, -0.0201, 0.0198, 0.0057, -0.0068, -0.0626]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6254, 0.2187, 0.2522, 0.9366, -1.0978, -0.8260, -1.1863, -1.1966,\n", + " -0.5663, -0.7957, -1.0050, -0.7740, -1.3141, 0.2003, -0.2396, -0.8433,\n", + " 0.7204, -0.1367, 0.3681, -0.4980, -0.5712, 1.2866, 2.2350, -0.2052,\n", + " -0.0544, 1.5941, -0.1195, -0.1583, -0.1182, 0.1377, 0.2726, 0.7398,\n", + " 0.3104, 0.0361, 0.5988, 0.3525, -1.0293, 0.7916, 0.1407, -0.7592,\n", + " -0.2623, -0.5448, 0.3577]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5697, 0.4400, 0.1513, 0.3002, 0.1152, -0.2869, -0.5937, -0.6963,\n", + " -0.3574, -0.4277, -0.3682, 0.3449, 0.2366, 0.3783, 0.3587, 0.4445,\n", + " 0.3373, 0.2016, 0.1628, 0.1998, 0.1734, 0.1605, 0.0317, 0.0915,\n", + " 0.0859, 0.0490, -0.0578, 0.1224, 0.4453, 0.5386, 0.4926, 0.2851,\n", + " 0.4636, 0.4558, 0.2677, 0.2703, 0.0103, 0.0587, 0.0451, -0.4393,\n", + " -0.4396, -0.4002, -0.3492]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 5.219333979766816e-05\n", + "Grad encoder.fc1.bias: 0.00023746490478515625\n", + "Grad encoder.encoder.0.weight: 1.3546396075980738e-05\n", + "Grad encoder.encoder.0.bias: 0.00019337775302119553\n", + "Grad encoder.encoder.2.weight: 1.2360207620076835e-05\n", + "Grad encoder.encoder.2.bias: 0.00013047158427070826\n", + "Grad encoder.encoder.4.weight: 5.445657734526321e-05\n", + "Grad encoder.encoder.4.bias: 0.0001963743707165122\n", + "Grad decoder.fc1.0.weight: 2.551082070567645e-05\n", + "Grad decoder.fc1.0.bias: 8.285549120046198e-05\n", + "Grad decoder.fc1.2.weight: 5.0864837248809636e-05\n", + "Grad decoder.fc1.2.bias: 0.00014961189299356192\n", + "Grad decoder.fc1.4.weight: 7.815925346221775e-05\n", + "Grad decoder.fc1.4.bias: 0.00032185547752305865\n", + "Grad decoder.fc2.weight: 9.362528362544253e-05\n", + "Grad decoder.fc2.bias: 0.0019363632891327143\n", + "Grad _memory_unit.weight_ih_l0: 2.9685527351830387e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.2621394489542581e-05\n", + "Grad _memory_unit.bias_hh_l0: 6.664750799245667e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.195318077407137e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.265202445210889e-05\n", + "Grad _memory_unit.bias_hh_l1: 6.6135235101683065e-06\n", + "Data X Sample: tensor([[1.5934, 1.8439, 2.0631, 2.2018, 2.3102, 2.4014, 2.5452, 2.6220, 2.6705,\n", + " 2.6824, 2.7282, 2.7460, 2.7519, 2.6419, 2.5673, 2.5136, 2.4828, 2.5282,\n", + " 2.5131, 2.4920, 2.5297, 2.5520, 2.4869, 2.5863, 2.5900, 2.6197, 2.5894,\n", + " 2.5899, 2.4909, 2.4400, 2.4217, 2.4870, 2.3562, 1.5196, 2.0050, 1.9044,\n", + " 1.7423, 1.6856, 1.6290, 1.5235, 1.2791, 0.8045, 0.7255, 1.3491, 1.9742,\n", + " 2.2415, 1.4346, 2.0486]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5360, 0.7007, 0.1805, 0.6548, -0.6817, -0.0510, -0.6714, -0.4758,\n", + " -0.7944, -0.6189, -0.7027, 0.5720, 0.4943, 0.3700, -0.5615, -0.6915,\n", + " -0.2453, -0.0217, 0.2589, 0.2625, -1.0607, 0.3345, 0.8236, -0.4053,\n", + " 1.0941, 0.1310, -0.5191, 0.4966, 0.6971, 0.6905, 0.9097, 0.7984,\n", + " 1.3099, 0.0391, 0.4493, -1.6006, 0.1137, 0.5269, 0.4697, -0.3232,\n", + " -0.5065, -0.6218, -0.9440]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2470, 0.2290, 0.0712, 0.0252, 0.0483, -0.1628, -0.2689, -0.2322,\n", + " -0.2105, -0.2461, -0.2368, 0.1282, 0.0837, 0.1905, 0.1954, 0.2067,\n", + " 0.1333, 0.0573, 0.0799, 0.1199, 0.0890, 0.1021, 0.0011, -0.0008,\n", + " 0.0484, 0.0458, -0.0146, -0.0176, 0.1705, 0.2290, 0.2069, 0.1077,\n", + " 0.2000, 0.1706, 0.1070, 0.1381, -0.0131, 0.0209, 0.0661, -0.1898,\n", + " -0.1426, -0.1855, -0.1498]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 2.255549406982027e-05\n", + "Grad encoder.fc1.bias: 7.702364382566884e-05\n", + "Grad encoder.encoder.0.weight: 6.2139811234374065e-06\n", + "Grad encoder.encoder.0.bias: 0.00010737132106442004\n", + "Grad encoder.encoder.2.weight: 5.855448307556799e-06\n", + "Grad encoder.encoder.2.bias: 9.846847387962043e-05\n", + "Grad encoder.encoder.4.weight: 2.0762765416293405e-05\n", + "Grad encoder.encoder.4.bias: 0.0002082762512145564\n", + "Grad decoder.fc1.0.weight: 1.4454490155912936e-05\n", + "Grad decoder.fc1.0.bias: 9.812890493776649e-05\n", + "Grad decoder.fc1.2.weight: 1.5702149539720267e-05\n", + "Grad decoder.fc1.2.bias: 9.1284848167561e-05\n", + "Grad decoder.fc1.4.weight: 1.8734344848780893e-05\n", + "Grad decoder.fc1.4.bias: 0.00010544058750383556\n", + "Grad decoder.fc2.weight: 8.711487316759303e-05\n", + "Grad decoder.fc2.bias: 0.0017187563935294747\n", + "Grad _memory_unit.weight_ih_l0: 1.7828011777965003e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.539576472481713e-06\n", + "Grad _memory_unit.bias_hh_l0: 3.794097665377194e-06\n", + "Grad _memory_unit.weight_ih_l1: 5.971917289571138e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.871876338555012e-05\n", + "Grad _memory_unit.bias_hh_l1: 9.150035111815669e-06\n", + "Data X Sample: tensor([[1.5053, 1.7799, 1.9204, 2.0816, 2.1906, 2.3543, 2.3711, 2.3906, 2.4239,\n", + " 2.4549, 2.5125, 2.4792, 2.3857, 2.3693, 2.4008, 2.2989, 2.2705, 2.4431,\n", + " 2.5069, 2.4418, 2.5468, 2.5076, 2.5014, 2.5443, 2.5637, 2.5910, 2.5281,\n", + " 2.6755, 2.2827, 2.3417, 2.3377, 2.4151, 2.2176, 1.4212, 1.8482, 1.7342,\n", + " 1.5299, 1.4258, 1.5276, 1.5292, 1.2982, 0.7109, 0.7457, 1.2113, 1.9068,\n", + " 2.1558, 1.4142, 1.9939]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.7618, -0.0821, 0.3761, -0.0483, 0.4873, -0.6183, -0.3241, 0.5937,\n", + " 0.4576, 0.4714, 0.2516, 0.3374, -0.1356, -0.1491, -1.2248, 0.0590,\n", + " 0.2807, 1.2274, 0.5789, 0.5260, 0.8483, 0.6385, -1.0427, 0.3584,\n", + " 1.2680, -0.5106, 0.0222, 0.6219, -0.4051, -0.3400, 0.4779, -1.0144,\n", + " -1.3562, -0.6195, -1.1802, -0.6503, -0.8287, 0.3805, 0.5660, -1.2290,\n", + " 0.4360, 0.6714, -0.4959]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2484, 0.2232, 0.0710, 0.0375, 0.0481, -0.1572, -0.2722, -0.2379,\n", + " -0.2101, -0.2402, -0.2336, 0.1304, 0.0848, 0.1860, 0.1896, 0.1995,\n", + " 0.1347, 0.0612, 0.0782, 0.1118, 0.0886, 0.0992, 0.0044, 0.0052,\n", + " 0.0416, 0.0441, -0.0193, -0.0116, 0.1702, 0.2270, 0.2070, 0.1137,\n", + " 0.2033, 0.1769, 0.1145, 0.1346, -0.0179, 0.0201, 0.0653, -0.1920,\n", + " -0.1438, -0.1834, -0.1506]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 9.594568109605461e-05\n", + "Grad encoder.fc1.bias: 6.45868931314908e-05\n", + "Grad encoder.encoder.0.weight: 3.486750938463956e-05\n", + "Grad encoder.encoder.0.bias: 7.693329825997353e-05\n", + "Grad encoder.encoder.2.weight: 1.8982429537572898e-05\n", + "Grad encoder.encoder.2.bias: 8.31856596050784e-05\n", + "Grad encoder.encoder.4.weight: 7.682891737204045e-05\n", + "Grad encoder.encoder.4.bias: 0.0003223127278033644\n", + "Grad decoder.fc1.0.weight: 2.7910235075978562e-05\n", + "Grad decoder.fc1.0.bias: 8.843040268402547e-05\n", + "Grad decoder.fc1.2.weight: 5.5614334996789694e-05\n", + "Grad decoder.fc1.2.bias: 0.00016783745377324522\n", + "Grad decoder.fc1.4.weight: 8.761607750784606e-05\n", + "Grad decoder.fc1.4.bias: 0.00030320551013574004\n", + "Grad decoder.fc2.weight: 7.550873124273494e-05\n", + "Grad decoder.fc2.bias: 0.002422102726995945\n", + "Grad _memory_unit.weight_ih_l0: 2.869706349883927e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.3159960872144438e-05\n", + "Grad _memory_unit.bias_hh_l0: 6.821264832979068e-06\n", + "Grad _memory_unit.weight_ih_l1: 9.001508942674263e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.474694701959379e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.2325317584327422e-05\n", + "Data X Sample: tensor([[1.5287, 1.7740, 1.8813, 2.0116, 2.1821, 2.2880, 2.3156, 2.4432, 2.4434,\n", + " 2.5734, 2.5156, 2.5006, 2.5078, 2.5138, 2.4387, 2.4151, 2.4152, 2.4276,\n", + " 2.4429, 2.4567, 2.4757, 2.5291, 2.4146, 2.4049, 2.4361, 2.4265, 2.3549,\n", + " 2.4512, 2.1544, 2.3024, 2.2712, 2.2632, 2.2836, 1.5127, 1.9560, 1.8047,\n", + " 1.6243, 1.5027, 1.5593, 1.6228, 1.2600, 0.7109, 0.6871, 1.2314, 1.8196,\n", + " 2.0071, 1.2986, 1.9861]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6148, 0.1116, -0.3696, -0.1810, 0.0172, -0.4949, -0.8428, -0.4548,\n", + " -0.4409, -0.4373, -0.4829, 1.1659, 0.4144, 1.9582, 0.4365, 1.2143,\n", + " 0.3862, 1.1501, -0.0496, 0.7981, 1.0890, 0.8084, 0.5003, 0.0882,\n", + " 1.2380, 0.6821, 0.7250, 0.2474, 0.6267, 0.3323, 0.5057, 0.6213,\n", + " 1.4846, -0.0042, 0.5062, -1.0417, 0.1767, -0.4903, 0.9175, -0.4913,\n", + " -0.5889, -0.1146, -0.8185]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2205, 0.2075, 0.0722, 0.0241, 0.0507, -0.1414, -0.2525, -0.2117,\n", + " -0.1942, -0.2207, -0.2127, 0.1228, 0.0703, 0.1650, 0.1702, 0.1782,\n", + " 0.1195, 0.0531, 0.0769, 0.1020, 0.0888, 0.0923, -0.0075, -0.0027,\n", + " 0.0437, 0.0466, -0.0233, -0.0150, 0.1473, 0.2010, 0.1948, 0.1007,\n", + " 0.1880, 0.1634, 0.1028, 0.1229, -0.0124, 0.0256, 0.0694, -0.1722,\n", + " -0.1210, -0.1744, -0.1382]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 6.99824740877375e-05\n", + "Grad encoder.fc1.bias: 0.00037828937638550997\n", + "Grad encoder.encoder.0.weight: 2.879402381950058e-05\n", + "Grad encoder.encoder.0.bias: 0.00043641688534989953\n", + "Grad encoder.encoder.2.weight: 2.0077786757610738e-05\n", + "Grad encoder.encoder.2.bias: 0.00041391432750970125\n", + "Grad encoder.encoder.4.weight: 4.694374729297124e-05\n", + "Grad encoder.encoder.4.bias: 0.0009272191673517227\n", + "Grad decoder.fc1.0.weight: 3.2280127925332636e-05\n", + "Grad decoder.fc1.0.bias: 0.00027816632064059377\n", + "Grad decoder.fc1.2.weight: 4.26934493589215e-05\n", + "Grad decoder.fc1.2.bias: 0.0002902403939515352\n", + "Grad decoder.fc1.4.weight: 6.084530832595192e-05\n", + "Grad decoder.fc1.4.bias: 0.0004917940241284668\n", + "Grad decoder.fc2.weight: 8.351511496584862e-05\n", + "Grad decoder.fc2.bias: 0.0018417717656120658\n", + "Grad _memory_unit.weight_ih_l0: 3.858150193991605e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.571068580436986e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.3284903616295196e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.7043205389200011e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.053918670862913e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.5126166039844975e-05\n", + "Data X Sample: tensor([[ 0.0180, 0.0175, 0.0195, 0.0284, 0.0120, 0.0280, 0.0200, 0.0185,\n", + " 0.0366, 0.0205, 0.0317, 0.0136, 0.0244, 0.0245, 0.0126, 0.0191,\n", + " -0.1337, -0.1489, -0.1797, -0.1581, -0.1938, -0.0964, -0.1590, -0.1565,\n", + " -0.1520, -0.2795, -0.2691, -0.4079, -0.0763, -0.0753, -0.0700, -0.0359,\n", + " -0.0176, -0.0526, -0.0196, 0.0073, -0.0098, -0.0133, 0.0063, -0.0255,\n", + " 0.0143, 0.0020, 0.0040, 0.0115, 0.0317, 0.0572, -0.0136, 0.0235]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2073, 0.6737, 0.0384, 0.6988, 1.0051, 0.0947, -0.3660, -0.3578,\n", + " 0.3079, -0.4696, -0.4212, 0.4357, -0.2032, 0.0267, 0.2840, 0.7890,\n", + " -0.0886, 1.5274, 0.1221, 1.2440, -0.0611, 0.9135, -0.8184, 0.0787,\n", + " 0.4000, 0.0992, -0.2749, 1.0796, 0.3166, 0.2262, 0.1624, -0.7380,\n", + " 0.9937, 0.5901, 0.0705, 1.5042, -0.0091, 0.9093, 2.2782, -0.2203,\n", + " -0.5433, 0.0457, -0.1687]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5574, 0.4269, 0.1640, 0.3293, 0.1474, -0.2473, -0.5811, -0.6878,\n", + " -0.3751, -0.4305, -0.3715, 0.3477, 0.2328, 0.3616, 0.3430, 0.4388,\n", + " 0.3367, 0.2091, 0.1560, 0.1630, 0.1751, 0.1712, 0.0472, 0.1022,\n", + " 0.0767, 0.0213, -0.0866, 0.1201, 0.4218, 0.5317, 0.4869, 0.2913,\n", + " 0.4785, 0.4723, 0.2886, 0.2709, 0.0026, 0.0637, 0.0823, -0.4361,\n", + " -0.4437, -0.4193, -0.3774]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00044075105688534677\n", + "Grad encoder.fc1.bias: 0.0004609223688021302\n", + "Grad encoder.encoder.0.weight: 0.00015294979675672948\n", + "Grad encoder.encoder.0.bias: 0.0004944779211655259\n", + "Grad encoder.encoder.2.weight: 9.416737884748727e-05\n", + "Grad encoder.encoder.2.bias: 0.00040476961294189095\n", + "Grad encoder.encoder.4.weight: 0.0002147278282791376\n", + "Grad encoder.encoder.4.bias: 0.000674693554174155\n", + "Grad decoder.fc1.0.weight: 5.432451143860817e-05\n", + "Grad decoder.fc1.0.bias: 0.0002943057334050536\n", + "Grad decoder.fc1.2.weight: 5.1561903092078865e-05\n", + "Grad decoder.fc1.2.bias: 0.0002885187859646976\n", + "Grad decoder.fc1.4.weight: 6.109198875492439e-05\n", + "Grad decoder.fc1.4.bias: 0.0005305351223796606\n", + "Grad decoder.fc2.weight: 9.149308607447892e-05\n", + "Grad decoder.fc2.bias: 0.0016930567799136043\n", + "Grad _memory_unit.weight_ih_l0: 4.735606580652529e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.8022506992565468e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.360986950923689e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.1223172552709e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.4072937928140163e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.6617204639478587e-05\n", + "Data X Sample: tensor([[2.7020, 2.3683, 1.9414, 1.9876, 2.1258, 2.2953, 3.5990, 4.1510, 4.1253,\n", + " 4.3584, 4.3143, 4.2416, 4.0502, 3.9534, 3.7778, 3.7403, 3.6967, 3.8126,\n", + " 3.6158, 3.6134, 3.4080, 3.3496, 3.1231, 2.9394, 2.8115, 2.9044, 2.9117,\n", + " 2.8224, 2.9210, 2.9476, 3.0621, 3.1170, 3.3639, 2.5311, 4.0616, 4.5215,\n", + " 4.8021, 5.2793, 5.8123, 5.8927, 1.3745, 0.7249, 0.6952, 1.2400, 1.8751,\n", + " 1.8927, 1.3054, 1.7828]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1226, -0.0957, 0.2285, 0.2056, -0.9547, -0.6327, 0.1212, -0.0173,\n", + " -0.1180, 0.0855, -0.1374, -0.2663, 0.3617, 1.4576, 0.6298, 0.7257,\n", + " 0.5147, 0.8942, 0.9379, -0.2747, 0.3883, 0.1561, -0.1299, 0.0160,\n", + " 0.0495, -0.2102, -0.4454, -0.7233, -0.0572, -0.3292, -0.2596, 1.0534,\n", + " -0.1621, 0.1070, 0.0899, 0.0145, -0.5002, 0.0936, -0.2890, 0.2198,\n", + " -0.0111, -0.0602, -0.7667]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2611, -0.2765, -0.0608, -0.1565, -0.0687, 0.0893, 0.1583, 0.2733,\n", + " 0.1801, 0.2183, 0.2256, -0.1430, -0.1470, -0.2330, -0.1454, -0.2768,\n", + " -0.2086, -0.0831, -0.0688, -0.0764, -0.0418, -0.0300, -0.0569, -0.0412,\n", + " -0.0275, 0.0133, 0.0203, -0.0883, -0.1557, -0.1834, -0.2185, -0.1780,\n", + " -0.2252, -0.2806, -0.1608, -0.1696, 0.0111, 0.0494, 0.0253, 0.2995,\n", + " 0.3260, 0.3377, 0.2590]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00010414377902634442\n", + "Grad encoder.fc1.bias: 0.0005183914909139276\n", + "Grad encoder.encoder.0.weight: 3.6537618143483996e-05\n", + "Grad encoder.encoder.0.bias: 0.0005625398480333388\n", + "Grad encoder.encoder.2.weight: 2.608172144391574e-05\n", + "Grad encoder.encoder.2.bias: 0.00036689150147140026\n", + "Grad encoder.encoder.4.weight: 7.480471685994416e-05\n", + "Grad encoder.encoder.4.bias: 0.0006340149557217956\n", + "Grad decoder.fc1.0.weight: 3.318298331578262e-05\n", + "Grad decoder.fc1.0.bias: 0.00026129154139198363\n", + "Grad decoder.fc1.2.weight: 4.506420373218134e-05\n", + "Grad decoder.fc1.2.bias: 0.0002476514200679958\n", + "Grad decoder.fc1.4.weight: 5.064973811386153e-05\n", + "Grad decoder.fc1.4.bias: 0.00027596610016189516\n", + "Grad decoder.fc2.weight: 9.267300629289821e-05\n", + "Grad decoder.fc2.bias: 0.0021459267009049654\n", + "Grad _memory_unit.weight_ih_l0: 6.755330105079338e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.2151338271214627e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.1111776075267699e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.3813743155187694e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.089226735639386e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.0120500014163554e-05\n", + "Data X Sample: tensor([[1.7536, 1.8833, 2.0826, 2.1844, 2.2692, 2.4353, 2.4327, 2.4616, 2.4898,\n", + " 2.4612, 2.5918, 2.6505, 2.5078, 2.5683, 2.4261, 2.4479, 2.4104, 2.4741,\n", + " 2.5709, 2.5869, 2.6253, 2.6485, 2.5929, 2.6264, 2.6069, 2.7529, 2.6693,\n", + " 2.7408, 2.2688, 2.4432, 2.4042, 2.2659, 2.1648, 1.3754, 1.8996, 1.8120,\n", + " 1.6931, 1.6432, 1.6163, 1.5377, 1.3650, 0.8185, 0.7841, 1.3405, 1.9583,\n", + " 2.2816, 1.4278, 2.0486]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 7.2755e-01, 7.6385e-01, -1.1797e+00, 7.5418e-01, 2.0718e+00,\n", + " 1.1786e+00, 4.0627e-01, -1.5013e-01, 7.7173e-02, -1.5644e-01,\n", + " -1.6675e-01, -4.9069e-01, -1.9069e-01, -4.7839e-01, -9.5839e-04,\n", + " 1.9204e-01, -1.7520e-01, 1.2240e+00, 1.3047e+00, 1.5262e+00,\n", + " 9.9227e-01, 6.6175e-01, 1.2908e-02, -1.4241e+00, -5.0018e-01,\n", + " -1.4253e+00, 8.4600e-01, -3.8030e-01, -3.5030e-01, 6.5921e-01,\n", + " -2.1232e-01, 1.2831e+00, -1.6395e-01, 1.7099e-01, 2.9711e-01,\n", + " -2.8708e-01, 5.3996e-02, -1.0105e-01, 7.5508e-01, 0.0000e+00,\n", + " 6.6627e-02, -4.2095e-01, 3.0384e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2650, 0.2523, 0.0949, 0.0895, 0.0805, -0.1369, -0.2947, -0.2720,\n", + " -0.2178, -0.2482, -0.2338, 0.1520, 0.0909, 0.1856, 0.1843, 0.2128,\n", + " 0.1604, 0.0854, 0.0845, 0.1066, 0.1065, 0.0981, 0.0011, 0.0150,\n", + " 0.0488, 0.0504, -0.0515, -0.0020, 0.1626, 0.2263, 0.2347, 0.1272,\n", + " 0.2364, 0.2165, 0.1440, 0.1397, -0.0179, 0.0250, 0.0793, -0.2163,\n", + " -0.1702, -0.2223, -0.1809]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 2.7654152290779166e-05\n", + "Grad encoder.fc1.bias: 0.0001750704977894202\n", + "Grad encoder.encoder.0.weight: 1.1742142305593006e-05\n", + "Grad encoder.encoder.0.bias: 0.00015740407980047166\n", + "Grad encoder.encoder.2.weight: 1.0917149666056503e-05\n", + "Grad encoder.encoder.2.bias: 0.0002266115916427225\n", + "Grad encoder.encoder.4.weight: 4.323615212342702e-05\n", + "Grad encoder.encoder.4.bias: 0.000958096468821168\n", + "Grad decoder.fc1.0.weight: 2.9249942599562928e-05\n", + "Grad decoder.fc1.0.bias: 0.00031564547680318356\n", + "Grad decoder.fc1.2.weight: 3.953547275159508e-05\n", + "Grad decoder.fc1.2.bias: 0.00025658117374405265\n", + "Grad decoder.fc1.4.weight: 5.0417802412994206e-05\n", + "Grad decoder.fc1.4.bias: 0.00036290776915848255\n", + "Grad decoder.fc2.weight: 9.913084068102762e-05\n", + "Grad decoder.fc2.bias: 0.001726418500766158\n", + "Grad _memory_unit.weight_ih_l0: 4.933435775456019e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.8962829674128443e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.5453804735443555e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.7509699975780677e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.659804007038474e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.365763015812263e-05\n", + "Data X Sample: tensor([[1.5902, 1.8804, 1.9654, 2.0488, 2.1565, 2.3101, 2.3849, 2.4858, 2.6656,\n", + " 2.5907, 2.4332, 2.5941, 2.5477, 2.4375, 2.4286, 2.3672, 2.2328, 2.3270,\n", + " 2.3231, 2.3879, 2.4389, 2.4357, 2.4170, 2.4794, 2.3967, 2.5257, 2.3976,\n", + " 2.3900, 2.1058, 2.2762, 2.1067, 2.0338, 1.7116, 1.1282, 1.5908, 1.5615,\n", + " 1.4532, 1.4682, 1.4325, 1.3505, 1.3029, 0.7229, 0.7255, 1.3433, 1.9385,\n", + " 2.1386, 1.2714, 1.8610]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4843, 0.2292, 0.8900, -0.7031, 1.3093, 0.4625, -0.6831, -0.7476,\n", + " -0.6701, -0.7750, -0.3240, 0.5391, 0.1819, 0.0360, 0.6601, 0.3541,\n", + " 1.9622, 0.8776, 0.6129, 0.8279, 0.6092, 0.1107, -0.7224, 0.9047,\n", + " -0.2020, -0.2036, -0.1782, 0.7990, 0.4485, 1.0010, 0.1242, 0.3987,\n", + " 0.7684, 0.2352, -0.5276, 0.1068, 0.8810, -0.5535, 0.9834, -0.4164,\n", + " -0.9655, -0.9138, 0.4947]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2267, 0.2126, 0.0827, 0.0734, 0.0644, -0.1164, -0.2660, -0.2344,\n", + " -0.1829, -0.2065, -0.1978, 0.1331, 0.0741, 0.1516, 0.1498, 0.1686,\n", + " 0.1276, 0.0743, 0.0770, 0.0890, 0.0977, 0.0798, -0.0103, 0.0098,\n", + " 0.0395, 0.0515, -0.0449, 0.0058, 0.1346, 0.1844, 0.2067, 0.1111,\n", + " 0.2051, 0.1883, 0.1264, 0.1158, -0.0194, 0.0239, 0.0655, -0.1854,\n", + " -0.1313, -0.1858, -0.1461]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001927532721310854\n", + "Grad encoder.fc1.bias: 0.0001377423177473247\n", + "Grad encoder.encoder.0.weight: 5.426911957329139e-05\n", + "Grad encoder.encoder.0.bias: 0.00013567876885645092\n", + "Grad encoder.encoder.2.weight: 3.53230134351179e-05\n", + "Grad encoder.encoder.2.bias: 0.00013400796160567552\n", + "Grad encoder.encoder.4.weight: 7.796783756930381e-05\n", + "Grad encoder.encoder.4.bias: 0.0002371910959482193\n", + "Grad decoder.fc1.0.weight: 2.710843000386376e-05\n", + "Grad decoder.fc1.0.bias: 9.747753210831434e-05\n", + "Grad decoder.fc1.2.weight: 3.924886914319359e-05\n", + "Grad decoder.fc1.2.bias: 0.0001705574250081554\n", + "Grad decoder.fc1.4.weight: 5.7536206441000104e-05\n", + "Grad decoder.fc1.4.bias: 0.0004261996946297586\n", + "Grad decoder.fc2.weight: 7.865278166718781e-05\n", + "Grad decoder.fc2.bias: 0.001722431625239551\n", + "Grad _memory_unit.weight_ih_l0: 2.4625212518003536e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.246299669030122e-06\n", + "Grad _memory_unit.bias_hh_l0: 5.15279634782928e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.0703097359510139e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.3904036424937658e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.1591479960770812e-05\n", + "Data X Sample: tensor([[1.5881, 2.0012, 2.0947, 2.2062, 2.3204, 2.4589, 2.5606, 2.6291, 2.4898,\n", + " 2.6192, 2.5061, 2.6369, 2.4967, 2.4865, 2.5673, 2.4110, 2.4733, 2.5669,\n", + " 2.5957, 2.5683, 2.6057, 2.7112, 2.7351, 2.6722, 2.7420, 2.7529, 2.7705,\n", + " 2.8795, 2.4111, 2.4793, 2.4532, 2.3018, 2.0152, 1.2541, 1.7991, 1.6953,\n", + " 1.6184, 1.5875, 1.5846, 1.4242, 1.3984, 0.7886, 0.8003, 1.3692, 1.9861,\n", + " 2.1500, 1.3802, 2.1659]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2943, 0.5105, 0.5684, -0.2404, 1.4946, -0.3413, 0.1462, -0.1553,\n", + " 0.6892, -0.0153, -0.2831, -0.7271, 3.6113, 0.7627, 1.4557, 1.6403,\n", + " 0.2758, -2.2459, 1.2381, -0.4131, -0.2361, 0.6727, -0.0596, 1.5105,\n", + " 0.9673, -0.0815, 0.0295, 0.0263, -0.0638, -0.6074, 0.1615, 0.4722,\n", + " 0.2884, 0.7123, 3.1349, -0.3483, 0.0849, -0.8159, 0.0382, -0.2708,\n", + " -0.0602, -0.8245, -0.5027]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3445, 0.3136, 0.1146, 0.1757, 0.1093, -0.1507, -0.3622, -0.3702,\n", + " -0.2586, -0.2957, -0.2765, 0.1948, 0.1310, 0.2257, 0.2160, 0.2683,\n", + " 0.2198, 0.1283, 0.0938, 0.1201, 0.1222, 0.1131, 0.0233, 0.0400,\n", + " 0.0496, 0.0453, -0.0770, 0.0220, 0.2034, 0.2833, 0.2940, 0.1696,\n", + " 0.3058, 0.2875, 0.2014, 0.1698, -0.0279, 0.0156, 0.0797, -0.2876,\n", + " -0.2492, -0.2825, -0.2381]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 7.18437586328946e-05\n", + "Grad encoder.fc1.bias: 9.714554471429437e-05\n", + "Grad encoder.encoder.0.weight: 2.551087163737975e-05\n", + "Grad encoder.encoder.0.bias: 0.0001631933992030099\n", + "Grad encoder.encoder.2.weight: 1.5242194422171451e-05\n", + "Grad encoder.encoder.2.bias: 0.00011389192513888702\n", + "Grad encoder.encoder.4.weight: 4.229299520375207e-05\n", + "Grad encoder.encoder.4.bias: 0.00017316342564299703\n", + "Grad decoder.fc1.0.weight: 1.5015162716736086e-05\n", + "Grad decoder.fc1.0.bias: 6.860341090941802e-05\n", + "Grad decoder.fc1.2.weight: 2.826306808856316e-05\n", + "Grad decoder.fc1.2.bias: 0.00012525050260592252\n", + "Grad decoder.fc1.4.weight: 4.113008617423475e-05\n", + "Grad decoder.fc1.4.bias: 0.00021866121096536517\n", + "Grad decoder.fc2.weight: 7.338514114962891e-05\n", + "Grad decoder.fc2.bias: 0.0024616122245788574\n", + "Grad _memory_unit.weight_ih_l0: 1.8218803461422794e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.576874056918314e-06\n", + "Grad _memory_unit.bias_hh_l0: 3.2611094411549857e-06\n", + "Grad _memory_unit.weight_ih_l1: 5.636106834572274e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.4765113519388251e-05\n", + "Grad _memory_unit.bias_hh_l1: 7.209700015664566e-06\n", + "Data X Sample: tensor([[1.4894, 1.7799, 1.7671, 1.7667, 1.9294, 2.2467, 2.2016, 2.0514, 2.9048,\n", + " 4.0156, 4.0637, 4.1560, 3.8371, 3.7598, 3.5534, 3.3300, 3.3523, 3.4799,\n", + " 3.3722, 3.3903, 3.4817, 3.3190, 2.9303, 2.8917, 2.8246, 2.9384, 2.9090,\n", + " 2.9121, 3.0043, 3.0557, 3.1811, 3.2911, 3.4651, 2.4716, 4.2160, 4.7064,\n", + " 4.9024, 5.2793, 5.7806, 5.6516, 1.1502, 0.6452, 0.6508, 1.1166, 1.5579,\n", + " 1.7612, 1.1966, 1.6029]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4206, -0.1274, -0.0875, 0.6238, 0.6312, 0.2702, 0.7331, 1.1969,\n", + " 0.6002, 0.7717, 0.9524, -1.0525, -0.3786, -0.8496, -0.0799, -1.1388,\n", + " -0.6422, -1.1535, -0.7147, -5.9169, -1.0223, 0.5573, -0.0251, -0.8985,\n", + " -1.4264, -0.3466, -0.3211, -1.1265, -1.8898, -1.8026, -1.2620, -0.5455,\n", + " -1.2256, -0.5722, -1.0796, -0.2808, 0.4756, -0.0459, -0.5970, 0.7403,\n", + " 0.5669, 0.5743, 0.1549]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2651, -0.2810, -0.0628, -0.1488, -0.0636, 0.1023, 0.1590, 0.2843,\n", + " 0.1859, 0.2238, 0.2351, -0.1524, -0.1517, -0.2452, -0.1540, -0.2856,\n", + " -0.2100, -0.0812, -0.0728, -0.0880, -0.0496, -0.0346, -0.0578, -0.0386,\n", + " -0.0248, 0.0133, 0.0157, -0.0909, -0.1650, -0.1983, -0.2272, -0.1838,\n", + " -0.2326, -0.2919, -0.1608, -0.1761, 0.0133, 0.0428, 0.0248, 0.3045,\n", + " 0.3289, 0.3420, 0.2594]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00026053827605210245\n", + "Grad encoder.fc1.bias: 0.00021939091675449163\n", + "Grad encoder.encoder.0.weight: 7.53139320295304e-05\n", + "Grad encoder.encoder.0.bias: 0.0002348122652620077\n", + "Grad encoder.encoder.2.weight: 3.9483704313170165e-05\n", + "Grad encoder.encoder.2.bias: 0.00024165371723938733\n", + "Grad encoder.encoder.4.weight: 0.000105859617178794\n", + "Grad encoder.encoder.4.bias: 0.0006218778435140848\n", + "Grad decoder.fc1.0.weight: 3.0433029678533785e-05\n", + "Grad decoder.fc1.0.bias: 0.0001921853981912136\n", + "Grad decoder.fc1.2.weight: 3.9325703255599365e-05\n", + "Grad decoder.fc1.2.bias: 0.00019717795657925308\n", + "Grad decoder.fc1.4.weight: 5.195155245019123e-05\n", + "Grad decoder.fc1.4.bias: 0.0003743913839571178\n", + "Grad decoder.fc2.weight: 8.648022048873827e-05\n", + "Grad decoder.fc2.bias: 0.0021788913290947676\n", + "Grad _memory_unit.weight_ih_l0: 2.443862967993482e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.3631887668452691e-05\n", + "Grad _memory_unit.bias_hh_l0: 6.948199370526709e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.1963011274929158e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.914176704711281e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.9256560335634276e-05\n", + "Data X Sample: tensor([[1.5616, 1.8541, 1.9504, 2.1647, 2.1821, 2.2836, 2.3017, 2.3324, 2.3531,\n", + " 2.3411, 2.4807, 2.4694, 2.3702, 2.2957, 2.2445, 2.3508, 2.3145, 2.3464,\n", + " 2.4140, 2.4716, 2.4904, 2.5321, 2.5038, 2.4813, 2.4173, 2.4709, 2.4588,\n", + " 2.5083, 2.1231, 2.1059, 1.9667, 1.8542, 1.6236, 1.0504, 1.5124, 1.4520,\n", + " 1.4316, 1.3940, 1.3881, 1.3306, 1.3029, 0.7587, 0.7417, 1.3232, 2.0217,\n", + " 2.1958, 1.3394, 2.0174]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.0278e+00, -7.9765e-01, -7.6073e-01, 9.7115e-04, -4.1858e-01,\n", + " 6.6089e-01, 1.6750e+00, 4.1440e-01, -2.1836e-01, 5.3144e-01,\n", + " 8.8377e-01, -5.6114e-01, -3.0130e-01, -4.4728e-01, -1.8252e+00,\n", + " -2.1173e-01, -1.8356e-01, 8.8537e-01, -1.8494e+00, -1.3110e+00,\n", + " -1.0228e-01, -2.9506e-01, -2.5643e-01, -4.7563e-01, 9.5364e+00,\n", + " 7.9722e-01, 9.6610e-01, 3.8899e-01, -6.4186e-01, -2.3759e-01,\n", + " -1.5215e+00, 1.2778e-01, -1.2040e-01, -4.1425e-01, -2.5888e+00,\n", + " -7.9168e-01, 1.3434e-01, -6.5961e-01, -2.2862e+00, 6.6694e-01,\n", + " 7.3233e-01, 3.6885e-01, 5.1410e-02]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3089, 0.2707, 0.1008, 0.1662, 0.0919, -0.1301, -0.3346, -0.3317,\n", + " -0.2232, -0.2498, -0.2402, 0.1697, 0.1245, 0.1914, 0.1745, 0.2223,\n", + " 0.1889, 0.1179, 0.0865, 0.1002, 0.1066, 0.0974, 0.0182, 0.0395,\n", + " 0.0398, 0.0417, -0.0700, 0.0366, 0.1779, 0.2372, 0.2640, 0.1515,\n", + " 0.2736, 0.2572, 0.1880, 0.1476, -0.0325, 0.0119, 0.0554, -0.2539,\n", + " -0.2107, -0.2469, -0.2057]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00014652148820459843\n", + "Grad encoder.fc1.bias: 0.00015925160550978035\n", + "Grad encoder.encoder.0.weight: 3.936046778107993e-05\n", + "Grad encoder.encoder.0.bias: 0.00016034915461204946\n", + "Grad encoder.encoder.2.weight: 2.317318103450816e-05\n", + "Grad encoder.encoder.2.bias: 0.00020936170767527074\n", + "Grad encoder.encoder.4.weight: 5.4680975154042244e-05\n", + "Grad encoder.encoder.4.bias: 0.00035314878914505243\n", + "Grad decoder.fc1.0.weight: 1.7568279872648418e-05\n", + "Grad decoder.fc1.0.bias: 0.00011643028119578958\n", + "Grad decoder.fc1.2.weight: 2.2309319319901988e-05\n", + "Grad decoder.fc1.2.bias: 0.00012888849596492946\n", + "Grad decoder.fc1.4.weight: 3.353731881361455e-05\n", + "Grad decoder.fc1.4.bias: 0.00020173462689854205\n", + "Grad decoder.fc2.weight: 7.05845668562688e-05\n", + "Grad decoder.fc2.bias: 0.001751038944348693\n", + "Grad _memory_unit.weight_ih_l0: 2.7411706469138153e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.0515603207750246e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.565386800299166e-06\n", + "Grad _memory_unit.weight_ih_l1: 8.962782658272772e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.5169323635054752e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.2531781976576895e-05\n", + "Data X Sample: tensor([[1.4777, 1.6590, 1.8828, 2.0860, 2.1309, 2.2570, 2.2725, 2.4077, 2.4971,\n", + " 2.4865, 2.5601, 2.5220, 2.4390, 2.4047, 2.4135, 2.4835, 2.3963, 2.4064,\n", + " 2.3872, 2.4213, 2.4511, 2.4709, 2.4170, 2.5176, 2.4812, 2.5492, 2.4588,\n", + " 2.5165, 2.0746, 2.2697, 2.3307, 2.3654, 2.2792, 1.4418, 1.9487, 1.7609,\n", + " 1.6145, 1.5159, 1.6036, 1.5661, 1.2934, 0.7448, 0.6993, 1.2170, 1.8632,\n", + " 2.0300, 1.3734, 1.8141]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5406, -1.4109, 1.3330, -0.5608, 0.9574, 0.0869, 0.5446, -0.6666,\n", + " 0.7893, 0.9100, 1.0467, 1.6432, -0.7137, 0.6521, 0.2274, 0.7501,\n", + " 1.6616, 0.0570, 0.1614, -0.0776, 0.3046, 0.1082, 0.1671, 0.2197,\n", + " -0.0524, -0.0077, 1.3965, 0.0296, 0.1546, 0.8283, -1.1242, 0.5124,\n", + " -0.3318, -0.7190, -0.5834, 0.4626, -0.5754, 0.0940, -0.3730, 1.7204,\n", + " -1.0987, 0.7697, 0.0744]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4167, 0.3667, 0.1313, 0.2608, 0.1338, -0.1620, -0.4237, -0.4550,\n", + " -0.2945, -0.3342, -0.3146, 0.2250, 0.1803, 0.2610, 0.2348, 0.3163,\n", + " 0.2755, 0.1671, 0.1029, 0.1302, 0.1275, 0.1323, 0.0503, 0.0673,\n", + " 0.0519, 0.0356, -0.1013, 0.0520, 0.2417, 0.3289, 0.3446, 0.2017,\n", + " 0.3673, 0.3477, 0.2564, 0.1985, -0.0404, 0.0035, 0.0679, -0.3469,\n", + " -0.3198, -0.3404, -0.2943]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 7.616858056280762e-05\n", + "Grad encoder.fc1.bias: 0.00022287775937002152\n", + "Grad encoder.encoder.0.weight: 1.786928260116838e-05\n", + "Grad encoder.encoder.0.bias: 0.0003699931548908353\n", + "Grad encoder.encoder.2.weight: 1.6962878362392075e-05\n", + "Grad encoder.encoder.2.bias: 0.0002784943499136716\n", + "Grad encoder.encoder.4.weight: 4.843936039833352e-05\n", + "Grad encoder.encoder.4.bias: 0.0003813159419223666\n", + "Grad decoder.fc1.0.weight: 2.1582707631750964e-05\n", + "Grad decoder.fc1.0.bias: 0.0001504463143646717\n", + "Grad decoder.fc1.2.weight: 3.345843288116157e-05\n", + "Grad decoder.fc1.2.bias: 0.0001616654044482857\n", + "Grad decoder.fc1.4.weight: 4.4272113882470876e-05\n", + "Grad decoder.fc1.4.bias: 0.000208261888474226\n", + "Grad decoder.fc2.weight: 8.636057464173064e-05\n", + "Grad decoder.fc2.bias: 0.0016169946175068617\n", + "Grad _memory_unit.weight_ih_l0: 4.4710386646329425e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.5981164324330166e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.006240932445507e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.2338679198364844e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.7945909096160904e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.3699400369659998e-05\n", + "Data X Sample: tensor([[1.6899, 1.8323, 1.9820, 2.2215, 2.3973, 2.4486, 2.5036, 2.5014, 2.6216,\n", + " 2.6508, 2.6647, 2.7401, 2.6565, 2.5438, 2.5194, 2.5984, 2.5189, 2.4934,\n", + " 2.5627, 2.4678, 2.5076, 2.6270, 2.6122, 2.5328, 2.5074, 2.6145, 2.5041,\n", + " 2.5287, 2.2064, 2.3745, 2.3867, 2.3267, 1.9822, 1.2312, 1.8040, 1.6393,\n", + " 1.6086, 1.6114, 1.5656, 1.4526, 1.2218, 0.7787, 0.7215, 1.3319, 1.8909,\n", + " 2.2358, 1.4754, 1.8922]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 2.9279e-01, 6.6411e-04, -7.3179e-01, -5.0052e-01, -1.8919e-01,\n", + " -2.4271e-01, -4.1477e-01, -3.3865e-01, -2.8051e-01, -4.1018e-01,\n", + " -4.6720e-01, 6.9119e-01, 5.0525e-01, 7.1732e-01, 1.9896e+00,\n", + " 6.0470e-01, 3.2113e-01, 3.8110e-01, 8.3358e-01, 1.7891e+00,\n", + " 2.4401e-02, -1.2793e+00, 1.8767e-01, 8.3809e-02, 1.3267e+00,\n", + " 1.1382e-01, 1.5625e-01, 7.5458e-01, 6.8320e-01, 6.4396e-01,\n", + " 8.8334e-01, 2.2765e-01, 6.0634e-01, -2.2583e-01, 1.2221e+00,\n", + " -4.0802e-01, 7.3289e-01, -5.0732e-01, 4.4037e-01, -2.9483e-01,\n", + " -3.1629e-01, -7.3887e-01, -2.5250e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3879, 0.3411, 0.1256, 0.2453, 0.1234, -0.1474, -0.4023, -0.4252,\n", + " -0.2726, -0.3087, -0.2935, 0.2091, 0.1734, 0.2411, 0.2135, 0.2899,\n", + " 0.2537, 0.1583, 0.1001, 0.1215, 0.1210, 0.1257, 0.0433, 0.0614,\n", + " 0.0505, 0.0353, -0.0948, 0.0544, 0.2242, 0.3018, 0.3257, 0.1862,\n", + " 0.3453, 0.3259, 0.2404, 0.1862, -0.0375, 0.0039, 0.0590, -0.3221,\n", + " -0.2916, -0.3193, -0.2740]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003777240344788879\n", + "Grad encoder.fc1.bias: 0.0004935472388751805\n", + "Grad encoder.encoder.0.weight: 0.00010208319872617722\n", + "Grad encoder.encoder.0.bias: 0.0005182881141081452\n", + "Grad encoder.encoder.2.weight: 6.687191489618272e-05\n", + "Grad encoder.encoder.2.bias: 0.0006171776331029832\n", + "Grad encoder.encoder.4.weight: 0.00023195594258140773\n", + "Grad encoder.encoder.4.bias: 0.0025158836506307125\n", + "Grad decoder.fc1.0.weight: 8.209893712773919e-05\n", + "Grad decoder.fc1.0.bias: 0.0006966541986912489\n", + "Grad decoder.fc1.2.weight: 0.00010833845590241253\n", + "Grad decoder.fc1.2.bias: 0.0006445881444960833\n", + "Grad decoder.fc1.4.weight: 0.00014385906979441643\n", + "Grad decoder.fc1.4.bias: 0.0010813339613378048\n", + "Grad decoder.fc2.weight: 0.00017023140389937907\n", + "Grad decoder.fc2.bias: 0.0033078575506806374\n", + "Grad _memory_unit.weight_ih_l0: 1.359554698865395e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.004529470577836e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.781444684136659e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.877072337374557e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0002070233749691397\n", + "Grad _memory_unit.bias_hh_l1: 0.00010499587369849905\n", + "Data X Sample: tensor([[2.7221, 3.1126, 3.4455, 3.6340, 3.7786, 3.8452, 3.9287, 3.9536, 4.0179,\n", + " 4.0536, 4.0447, 3.9982, 3.8304, 3.6753, 3.4500, 3.4353, 3.4309, 3.5418,\n", + " 3.4548, 3.4832, 3.3811, 3.4583, 3.1472, 2.9890, 2.9185, 2.8600, 2.6746,\n", + " 2.8387, 2.5602, 2.7053, 2.6736, 2.9264, 3.1835, 2.2473, 3.6302, 3.9135,\n", + " 4.3184, 4.7360, 5.1848, 4.9621, 1.9615, 1.1451, 1.1277, 2.0351, 3.0802,\n", + " 3.2537, 2.2504, 3.3075]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.8475, -0.6518, -0.2553, -1.3371, 0.0605, -0.0195, 0.7194, 0.5719,\n", + " 1.0029, 1.4466, 0.3934, -1.3531, 0.6037, -0.9570, -0.3685, -0.1753,\n", + " 0.1233, 0.3426, -0.0793, 0.0000, 0.9915, 0.1578, 6.0159, -0.4785,\n", + " 1.0258, 0.1464, 0.5683, -0.3157, -0.0370, -0.0443, -0.6121, -0.0594,\n", + " 0.0330, 0.0513, 1.0489, 0.8265, -0.5701, 0.8248, -0.8482, 0.1388,\n", + " -0.2469, 0.1992, 0.1700]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2472, -0.2729, -0.0678, -0.1438, -0.0651, 0.0973, 0.1447, 0.2757,\n", + " 0.1791, 0.2167, 0.2199, -0.1529, -0.1358, -0.2360, -0.1508, -0.2794,\n", + " -0.2066, -0.0741, -0.0662, -0.0978, -0.0568, -0.0334, -0.0546, -0.0400,\n", + " -0.0229, 0.0145, 0.0226, -0.0718, -0.1532, -0.2002, -0.2150, -0.1731,\n", + " -0.2241, -0.2765, -0.1538, -0.1635, 0.0136, 0.0352, 0.0132, 0.2900,\n", + " 0.3172, 0.3209, 0.2494]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000256318278843537\n", + "Grad encoder.fc1.bias: 0.0002175638364860788\n", + "Grad encoder.encoder.0.weight: 7.01519165886566e-05\n", + "Grad encoder.encoder.0.bias: 0.0001954103645402938\n", + "Grad encoder.encoder.2.weight: 3.75501076632645e-05\n", + "Grad encoder.encoder.2.bias: 0.00022546645777765661\n", + "Grad encoder.encoder.4.weight: 0.0001196999364765361\n", + "Grad encoder.encoder.4.bias: 0.0005549650522880256\n", + "Grad decoder.fc1.0.weight: 3.373338404344395e-05\n", + "Grad decoder.fc1.0.bias: 0.0001725572074064985\n", + "Grad decoder.fc1.2.weight: 5.189687362872064e-05\n", + "Grad decoder.fc1.2.bias: 0.00022195535711944103\n", + "Grad decoder.fc1.4.weight: 7.239214755827561e-05\n", + "Grad decoder.fc1.4.bias: 0.0003949119709432125\n", + "Grad decoder.fc2.weight: 8.680939936311916e-05\n", + "Grad decoder.fc2.bias: 0.0024046481121331453\n", + "Grad _memory_unit.weight_ih_l0: 4.893133336736355e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.8825457775383256e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.4951479897717945e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.509064873062016e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.458580951904878e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.2442360204877332e-05\n", + "Data X Sample: tensor([[1.5372, 1.8192, 1.9173, 2.0903, 2.2914, 2.2836, 2.3649, 2.4034, 2.4752,\n", + " 2.4881, 2.4649, 2.4636, 2.3835, 2.4156, 2.4614, 2.3809, 2.3711, 2.4373,\n", + " 2.5214, 2.4437, 2.4315, 2.5689, 2.5327, 2.4985, 2.5393, 2.6537, 2.6187,\n", + " 2.6388, 2.3729, 2.3810, 2.2642, 2.2355, 2.1846, 1.4006, 1.8114, 1.7317,\n", + " 1.5437, 1.4629, 1.5466, 1.5774, 1.2504, 0.7448, 0.7478, 1.2314, 1.8473,\n", + " 2.1100, 1.3598, 2.0408]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2055, -0.0056, 0.9858, -0.1393, 0.5610, -0.4667, 1.7127, 0.1848,\n", + " 0.2455, 0.0374, 0.0248, -0.7908, 0.6753, 0.2633, 0.0821, -0.7714,\n", + " -0.6356, -0.1718, -0.2018, -0.4028, 0.5630, -0.4044, -1.2998, -0.2659,\n", + " -0.4111, -0.6734, 0.5246, -0.4664, 1.0723, 0.5287, 0.5212, 1.6300,\n", + " -0.7698, 0.3665, 1.0094, -0.1919, -0.4229, -0.7806, 0.0545, -0.7285,\n", + " 0.9400, 0.6886, 0.1892]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4103, 0.3584, 0.1281, 0.2686, 0.1241, -0.1468, -0.4188, -0.4559,\n", + " -0.2784, -0.3194, -0.3103, 0.2083, 0.2039, 0.2602, 0.2266, 0.3063,\n", + " 0.2683, 0.1739, 0.1052, 0.1257, 0.1171, 0.1358, 0.0633, 0.0693,\n", + " 0.0514, 0.0240, -0.0947, 0.0754, 0.2425, 0.3194, 0.3371, 0.1949,\n", + " 0.3682, 0.3420, 0.2517, 0.1968, -0.0334, -0.0005, 0.0499, -0.3351,\n", + " -0.3140, -0.3365, -0.2999]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 9.957235306501389e-05\n", + "Grad encoder.fc1.bias: 0.00033610055106692016\n", + "Grad encoder.encoder.0.weight: 1.862285535025876e-05\n", + "Grad encoder.encoder.0.bias: 0.0005296492017805576\n", + "Grad encoder.encoder.2.weight: 1.4585211829398759e-05\n", + "Grad encoder.encoder.2.bias: 0.00035119534004479647\n", + "Grad encoder.encoder.4.weight: 5.715035877074115e-05\n", + "Grad encoder.encoder.4.bias: 0.000791976461187005\n", + "Grad decoder.fc1.0.weight: 2.8640752134379e-05\n", + "Grad decoder.fc1.0.bias: 0.00028246495639905334\n", + "Grad decoder.fc1.2.weight: 3.6616864235838875e-05\n", + "Grad decoder.fc1.2.bias: 0.000254331884207204\n", + "Grad decoder.fc1.4.weight: 3.568039392121136e-05\n", + "Grad decoder.fc1.4.bias: 0.00027325903647579253\n", + "Grad decoder.fc2.weight: 9.60229299380444e-05\n", + "Grad decoder.fc2.bias: 0.0019961099606007338\n", + "Grad _memory_unit.weight_ih_l0: 6.57643613521941e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.5277628083131276e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.2801199773093686e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.431677330605453e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.87997744535096e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.422463851165958e-05\n", + "Data X Sample: tensor([[1.4671, 1.7522, 1.9399, 1.9766, 2.1104, 2.2364, 2.3110, 2.4063, 2.5191,\n", + " 2.5386, 2.6838, 2.5726, 2.3924, 2.4238, 2.4689, 2.4725, 2.4906, 2.4508,\n", + " 2.4532, 2.4530, 2.3947, 2.5245, 2.4387, 2.4813, 2.4530, 2.4343, 2.3949,\n", + " 2.4349, 2.2862, 2.3221, 2.3132, 2.3461, 2.2308, 1.4532, 1.9805, 1.7901,\n", + " 1.6617, 1.5265, 1.5783, 1.5746, 1.2838, 0.7010, 0.7336, 1.3003, 1.8513,\n", + " 1.8813, 1.3870, 1.9470]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.7906, 1.1895, 0.8150, 0.1050, 0.4746, 0.7359, -1.3633, -1.2478,\n", + " -0.5588, -0.6395, -0.8203, 0.7772, 0.7541, 0.6094, -0.4394, 0.3113,\n", + " 0.9070, -0.8609, 0.2468, 0.2910, -2.2649, 0.9285, 0.0096, -0.2339,\n", + " 0.3517, -0.2833, 0.0387, 2.0627, 0.8153, 0.6663, 1.0216, 0.9237,\n", + " 0.1890, 0.6253, 0.7699, 0.7744, -0.3045, 0.0000, -0.0231, -0.6430,\n", + " -0.6715, -0.7226, -0.6425]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4063, 0.3542, 0.1239, 0.2642, 0.1178, -0.1464, -0.4158, -0.4538,\n", + " -0.2743, -0.3164, -0.3117, 0.2002, 0.2139, 0.2640, 0.2256, 0.3035,\n", + " 0.2630, 0.1742, 0.1048, 0.1249, 0.1124, 0.1367, 0.0684, 0.0672,\n", + " 0.0504, 0.0178, -0.0884, 0.0812, 0.2438, 0.3169, 0.3323, 0.1903,\n", + " 0.3671, 0.3362, 0.2462, 0.1963, -0.0294, 0.0007, 0.0463, -0.3297,\n", + " -0.3103, -0.3336, -0.3036]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 8.324990631081164e-05\n", + "Grad encoder.fc1.bias: 0.0002374609757680446\n", + "Grad encoder.encoder.0.weight: 2.291392593178898e-05\n", + "Grad encoder.encoder.0.bias: 0.00031644769478589296\n", + "Grad encoder.encoder.2.weight: 2.3575941668241285e-05\n", + "Grad encoder.encoder.2.bias: 0.00020160101121291518\n", + "Grad encoder.encoder.4.weight: 6.836692045908421e-05\n", + "Grad encoder.encoder.4.bias: 0.0004047782567795366\n", + "Grad decoder.fc1.0.weight: 2.9048067517578602e-05\n", + "Grad decoder.fc1.0.bias: 0.000171814754139632\n", + "Grad decoder.fc1.2.weight: 4.211983468849212e-05\n", + "Grad decoder.fc1.2.bias: 0.00020385064999572933\n", + "Grad decoder.fc1.4.weight: 5.051746848039329e-05\n", + "Grad decoder.fc1.4.bias: 0.0002731425338424742\n", + "Grad decoder.fc2.weight: 0.0001139510641223751\n", + "Grad decoder.fc2.bias: 0.0018066423945128918\n", + "Grad _memory_unit.weight_ih_l0: 4.84374504594598e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.3803593901684508e-05\n", + "Grad _memory_unit.bias_hh_l0: 7.058097253320739e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.816378016883391e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.636871406342834e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.795366915757768e-05\n", + "Data X Sample: tensor([[2.0612, 2.4280, 2.6311, 2.8294, 2.8668, 2.9451, 2.9396, 3.0635, 3.1465,\n", + " 3.2226, 3.2135, 3.2406, 3.1403, 3.1791, 2.9405, 3.0647, 3.0347, 3.0447,\n", + " 3.0831, 2.9588, 2.7946, 2.7465, 2.7207, 2.5825, 2.4549, 2.3455, 2.2670,\n", + " 2.3085, 2.0607, 2.0011, 1.9212, 1.8984, 1.7974, 1.2083, 2.0590, 2.3520,\n", + " 2.6390, 2.8967, 2.9474, 2.9620, 1.6084, 1.0077, 0.9943, 1.6390, 2.4459,\n", + " 2.5560, 1.8629, 2.5334]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3474, 0.1288, -0.4386, 0.5984, 0.3954, -0.1566, 1.1388, 0.2721,\n", + " 0.2942, -0.0576, 0.2156, 0.7088, -0.0572, 0.1391, 1.4861, 0.2569,\n", + " 0.4202, -0.8351, 0.3074, 5.0895, -4.0197, -0.2702, 0.5874, -0.4257,\n", + " 1.6067, 0.0111, -1.0314, -0.4445, -0.5192, -0.0368, 0.3037, -0.0104,\n", + " -0.3454, -0.5848, -0.7268, 0.1647, -0.0868, 0.0000, 0.2253, -0.2805,\n", + " -0.0456, -0.0686, -0.5439]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2166, -0.2507, -0.0692, -0.1444, -0.0747, 0.0797, 0.1153, 0.2441,\n", + " 0.1593, 0.1942, 0.1835, -0.1392, -0.1097, -0.2064, -0.1363, -0.2581,\n", + " -0.1978, -0.0643, -0.0518, -0.0957, -0.0531, -0.0329, -0.0512, -0.0425,\n", + " -0.0257, 0.0134, 0.0336, -0.0450, -0.1284, -0.1858, -0.1844, -0.1508,\n", + " -0.2010, -0.2394, -0.1416, -0.1399, 0.0091, 0.0324, 0.0014, 0.2567,\n", + " 0.2934, 0.2806, 0.2249]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 8.12327562016435e-05\n", + "Grad encoder.fc1.bias: 0.00016460465849377215\n", + "Grad encoder.encoder.0.weight: 2.6966046789311804e-05\n", + "Grad encoder.encoder.0.bias: 0.00012473881361074746\n", + "Grad encoder.encoder.2.weight: 1.5049137800815515e-05\n", + "Grad encoder.encoder.2.bias: 0.00013751606456935406\n", + "Grad encoder.encoder.4.weight: 4.159212039667182e-05\n", + "Grad encoder.encoder.4.bias: 0.0002747859980445355\n", + "Grad decoder.fc1.0.weight: 2.0123568901908584e-05\n", + "Grad decoder.fc1.0.bias: 0.00013266198220662773\n", + "Grad decoder.fc1.2.weight: 2.9381528293015435e-05\n", + "Grad decoder.fc1.2.bias: 0.0001244064187631011\n", + "Grad decoder.fc1.4.weight: 4.1626546590123326e-05\n", + "Grad decoder.fc1.4.bias: 0.00024226389359682798\n", + "Grad decoder.fc2.weight: 9.54560237005353e-05\n", + "Grad decoder.fc2.bias: 0.0019262294517830014\n", + "Grad _memory_unit.weight_ih_l0: 2.473553195159184e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.0260766430292279e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.610977950709639e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.4956599443394225e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.8450862373574637e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.4613636267313268e-05\n", + "Data X Sample: tensor([[1.5456, 1.7638, 1.8903, 1.9919, 2.1138, 2.1274, 2.2278, 2.2686, 2.2335,\n", + " 2.3380, 2.3507, 2.3019, 2.2881, 2.2793, 2.1789, 2.0992, 2.0724, 2.3193,\n", + " 2.2426, 2.2298, 2.2794, 2.3086, 2.3086, 2.2694, 2.3610, 2.4395, 2.3816,\n", + " 2.4553, 2.2133, 2.2828, 2.2747, 2.3461, 2.2748, 1.5791, 2.0099, 1.8144,\n", + " 1.5712, 1.4921, 1.5593, 1.5235, 1.2791, 0.7149, 0.7033, 1.2630, 1.9306,\n", + " 2.0071, 1.2986, 1.8844]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7732, 1.3455, -0.7854, 2.0828, 0.1110, 0.7053, -0.5932, -0.7907,\n", + " -0.9147, -1.1048, -0.6786, 0.6664, -0.0578, -0.4826, 0.1804, 0.0583,\n", + " -0.4945, 0.3098, -0.2970, -0.6777, -0.1391, 0.0891, -0.1657, 0.4195,\n", + " 0.4864, 0.3305, 0.4735, -0.2955, 0.0876, 0.1814, 0.6585, -0.5582,\n", + " 1.0764, 1.0048, -0.7270, 0.4618, -0.4969, -0.4061, 1.1148, -0.5881,\n", + " -0.6727, -0.4840, -0.5555]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3987, 0.3435, 0.1159, 0.2563, 0.1070, -0.1421, -0.4094, -0.4441,\n", + " -0.2645, -0.3054, -0.3110, 0.1830, 0.2316, 0.2711, 0.2194, 0.2941,\n", + " 0.2474, 0.1802, 0.1016, 0.1251, 0.1095, 0.1350, 0.0785, 0.0685,\n", + " 0.0461, 0.0040, -0.0751, 0.0946, 0.2470, 0.3070, 0.3186, 0.1840,\n", + " 0.3544, 0.3220, 0.2345, 0.1909, -0.0225, 0.0019, 0.0341, -0.3170,\n", + " -0.2995, -0.3234, -0.3084]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00011009132140316069\n", + "Grad encoder.fc1.bias: 0.00024235283490270376\n", + "Grad encoder.encoder.0.weight: 3.672902676044032e-05\n", + "Grad encoder.encoder.0.bias: 0.00027785368729382753\n", + "Grad encoder.encoder.2.weight: 2.1521471353480592e-05\n", + "Grad encoder.encoder.2.bias: 0.0002611780073493719\n", + "Grad encoder.encoder.4.weight: 6.329599273158237e-05\n", + "Grad encoder.encoder.4.bias: 0.0009977170266211033\n", + "Grad decoder.fc1.0.weight: 2.462425982230343e-05\n", + "Grad decoder.fc1.0.bias: 0.00025674887001514435\n", + "Grad decoder.fc1.2.weight: 3.156933962600306e-05\n", + "Grad decoder.fc1.2.bias: 0.00024766367278061807\n", + "Grad decoder.fc1.4.weight: 3.70441994164139e-05\n", + "Grad decoder.fc1.4.bias: 0.00043054745765402913\n", + "Grad decoder.fc2.weight: 0.0001144938069046475\n", + "Grad decoder.fc2.bias: 0.0023360708728432655\n", + "Grad _memory_unit.weight_ih_l0: 4.243539933668217e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.492910425644368e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.3388045772444457e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.167093043681234e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.15896239853464e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.647933772299439e-05\n", + "Data X Sample: tensor([[1.7090, 1.9299, 2.0871, 2.1625, 2.3511, 2.5797, 2.5452, 2.7001, 2.7364,\n", + " 2.6034, 2.8107, 2.7207, 2.7674, 2.6065, 2.5774, 2.6626, 2.6495, 2.6211,\n", + " 2.5999, 2.5645, 2.5738, 2.6270, 2.6098, 2.5825, 2.6182, 2.6302, 2.6320,\n", + " 2.4635, 2.3729, 2.6136, 2.5092, 2.5201, 2.2528, 1.4990, 1.9854, 1.8971,\n", + " 1.8190, 1.6591, 1.6733, 1.5718, 1.3459, 0.8125, 0.8124, 1.3319, 1.9781,\n", + " 2.0814, 1.4210, 2.0955]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.6126, -0.1854, -0.3922, -0.3233, -0.1316, -0.4567, -1.3475, 0.6970,\n", + " 0.1955, 0.2424, 0.2079, 0.7158, 0.8087, -0.4779, 0.7773, 0.1246,\n", + " -0.5350, -0.1608, 0.2297, -0.1971, 0.2571, -0.0117, -0.1642, -0.3440,\n", + " -0.3257, -0.0403, -0.1614, 0.0195, -0.5132, 0.4681, -0.1514, -0.6767,\n", + " -1.0030, -0.0817, -0.2861, -0.2625, 0.8233, 0.7428, 0.2870, 0.2198,\n", + " 0.2290, 0.0094, 0.6671]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4021, 0.3568, 0.1217, 0.2589, 0.1163, -0.1415, -0.4127, -0.4457,\n", + " -0.2677, -0.3127, -0.3176, 0.1839, 0.2447, 0.2812, 0.2226, 0.3055,\n", + " 0.2509, 0.1880, 0.1064, 0.1338, 0.1146, 0.1407, 0.0823, 0.0665,\n", + " 0.0507, -0.0020, -0.0762, 0.0945, 0.2459, 0.3072, 0.3211, 0.1811,\n", + " 0.3576, 0.3256, 0.2315, 0.1955, -0.0148, 0.0056, 0.0370, -0.3187,\n", + " -0.3057, -0.3369, -0.3250]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00019253685604780912\n", + "Grad encoder.fc1.bias: 0.0007072182488627732\n", + "Grad encoder.encoder.0.weight: 6.0182672314113006e-05\n", + "Grad encoder.encoder.0.bias: 0.0006943171611055732\n", + "Grad encoder.encoder.2.weight: 3.815714444499463e-05\n", + "Grad encoder.encoder.2.bias: 0.0004737033450510353\n", + "Grad encoder.encoder.4.weight: 0.00010752379603218287\n", + "Grad encoder.encoder.4.bias: 0.0007373531116172671\n", + "Grad decoder.fc1.0.weight: 4.0437465941067785e-05\n", + "Grad decoder.fc1.0.bias: 0.0002853835467249155\n", + "Grad decoder.fc1.2.weight: 5.4107775213196874e-05\n", + "Grad decoder.fc1.2.bias: 0.0002904097782447934\n", + "Grad decoder.fc1.4.weight: 6.411634240066633e-05\n", + "Grad decoder.fc1.4.bias: 0.0003408872871659696\n", + "Grad decoder.fc2.weight: 9.977773879654706e-05\n", + "Grad decoder.fc2.bias: 0.001754593919031322\n", + "Grad _memory_unit.weight_ih_l0: 8.481115401082207e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.7076555852545425e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.3449469406623393e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.40465919887356e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.690658144885674e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.808564022416249e-05\n", + "Data X Sample: tensor([[1.5106, 1.7755, 2.0000, 2.0029, 2.1770, 2.1274, 2.1492, 2.2430, 2.2604,\n", + " 2.3238, 2.3665, 2.3156, 2.3413, 2.2330, 2.2823, 2.3850, 2.3507, 2.2826,\n", + " 2.3231, 2.3767, 2.4364, 2.5183, 2.4556, 2.4622, 2.6107, 2.5649, 2.6293,\n", + " 2.5613, 2.4041, 2.4400, 2.4252, 2.4511, 2.1054, 1.3891, 1.8751, 1.7731,\n", + " 1.6263, 1.4762, 1.5846, 1.5718, 1.3268, 0.7209, 0.7215, 1.2716, 1.8473,\n", + " 1.9613, 1.3190, 1.9079]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.8235, 1.3120, 1.1924, 0.0298, 0.5514, 0.4497, -0.8838, -0.6032,\n", + " 0.1575, -0.2859, -0.8055, 0.6072, 0.2437, 0.9553, 0.1642, 0.8394,\n", + " 0.8438, 0.0689, 0.2628, 0.1605, -0.0561, -0.1194, 0.2166, -0.6547,\n", + " -1.5589, 2.4213, 0.0999, 0.6334, 0.9043, 0.7484, 0.3355, 0.5670,\n", + " 0.0080, 0.8123, 1.2568, 0.9476, -0.5204, 0.8591, -0.2895, -0.5670,\n", + " -0.5434, -1.0347, -0.9438]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3989, 0.3472, 0.1155, 0.2554, 0.1076, -0.1407, -0.4108, -0.4382,\n", + " -0.2626, -0.3037, -0.3164, 0.1760, 0.2524, 0.2820, 0.2192, 0.2972,\n", + " 0.2431, 0.1906, 0.1054, 0.1307, 0.1105, 0.1386, 0.0904, 0.0696,\n", + " 0.0426, -0.0075, -0.0686, 0.1012, 0.2455, 0.2983, 0.3092, 0.1794,\n", + " 0.3471, 0.3173, 0.2246, 0.1900, -0.0153, 0.0036, 0.0284, -0.3119,\n", + " -0.2982, -0.3246, -0.3216]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00013702138676308095\n", + "Grad encoder.fc1.bias: 0.000519436551257968\n", + "Grad encoder.encoder.0.weight: 3.189501148881391e-05\n", + "Grad encoder.encoder.0.bias: 0.00040604363312013447\n", + "Grad encoder.encoder.2.weight: 2.3343141947407275e-05\n", + "Grad encoder.encoder.2.bias: 0.00032999899121932685\n", + "Grad encoder.encoder.4.weight: 7.179111707955599e-05\n", + "Grad encoder.encoder.4.bias: 0.0006309122545644641\n", + "Grad decoder.fc1.0.weight: 2.9912176614743657e-05\n", + "Grad decoder.fc1.0.bias: 0.00025827967328950763\n", + "Grad decoder.fc1.2.weight: 3.238309727748856e-05\n", + "Grad decoder.fc1.2.bias: 0.0002057267993222922\n", + "Grad decoder.fc1.4.weight: 3.655351611087099e-05\n", + "Grad decoder.fc1.4.bias: 0.0002562803274486214\n", + "Grad decoder.fc2.weight: 0.0001322514726780355\n", + "Grad decoder.fc2.bias: 0.002148996340110898\n", + "Grad _memory_unit.weight_ih_l0: 6.1637142607651185e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.208017758675851e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.136660466727335e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.454769173709792e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.613913137698546e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.264671249780804e-05\n", + "Data X Sample: tensor([[1.5138, 1.7930, 1.8618, 1.9701, 2.1070, 2.1790, 2.3819, 2.4630, 2.5142,\n", + " 2.5323, 2.6108, 2.6603, 2.5277, 2.5193, 2.4462, 2.4507, 2.3554, 2.4218,\n", + " 2.5235, 2.4567, 2.4192, 2.4219, 2.4797, 2.3362, 2.4417, 2.4735, 2.4322,\n", + " 2.3941, 2.1960, 2.3221, 2.2537, 2.4013, 2.3452, 1.5035, 1.9487, 1.7245,\n", + " 1.6636, 1.4921, 1.5719, 1.5633, 1.2934, 0.6671, 0.7094, 1.2802, 1.7878,\n", + " 1.9785, 1.3462, 2.0174]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.8094, 0.6872, 0.1250, 0.5797, 0.1880, 0.4581, -1.6250, -1.0541,\n", + " -0.3521, -0.6341, -0.6370, 1.4004, -0.4906, 1.0243, 0.5806, 1.2571,\n", + " 0.3219, 2.5312, 0.8882, 0.8966, 1.3067, 0.7346, 0.3354, 0.4439,\n", + " 0.3248, -1.6034, 1.0604, 0.6633, -0.1127, 0.5957, 1.5243, 0.1568,\n", + " -0.3314, 2.1796, 0.1403, 0.1637, 0.0000, -0.7815, -0.0104, -0.8593,\n", + " -0.3349, -0.5000, -0.4213]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3767, 0.3308, 0.1086, 0.2355, 0.1009, -0.1339, -0.3918, -0.4087,\n", + " -0.2457, -0.2839, -0.2994, 0.1641, 0.2474, 0.2705, 0.2039, 0.2791,\n", + " 0.2277, 0.1817, 0.1056, 0.1271, 0.1091, 0.1313, 0.0876, 0.0639,\n", + " 0.0400, -0.0058, -0.0632, 0.0996, 0.2282, 0.2732, 0.2869, 0.1658,\n", + " 0.3237, 0.2960, 0.2069, 0.1831, -0.0120, 0.0070, 0.0209, -0.2922,\n", + " -0.2757, -0.3065, -0.3044]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00015213694132398814\n", + "Grad encoder.fc1.bias: 0.0002980412682518363\n", + "Grad encoder.encoder.0.weight: 4.761634045280516e-05\n", + "Grad encoder.encoder.0.bias: 0.0001751571981003508\n", + "Grad encoder.encoder.2.weight: 2.6789117328007706e-05\n", + "Grad encoder.encoder.2.bias: 0.00014170630311127752\n", + "Grad encoder.encoder.4.weight: 8.757981413509697e-05\n", + "Grad encoder.encoder.4.bias: 0.0003516805300023407\n", + "Grad decoder.fc1.0.weight: 3.640523209469393e-05\n", + "Grad decoder.fc1.0.bias: 0.00015193942817859352\n", + "Grad decoder.fc1.2.weight: 5.594151298282668e-05\n", + "Grad decoder.fc1.2.bias: 0.00017607756308279932\n", + "Grad decoder.fc1.4.weight: 9.01259045349434e-05\n", + "Grad decoder.fc1.4.bias: 0.00033904853626154363\n", + "Grad decoder.fc2.weight: 0.00013485107047017664\n", + "Grad decoder.fc2.bias: 0.002311941236257553\n", + "Grad _memory_unit.weight_ih_l0: 2.189276756325853e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.1433678992034402e-05\n", + "Grad _memory_unit.bias_hh_l0: 6.070671133784344e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.5807772797415964e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.9532340704463422e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.5161647752393037e-05\n", + "Data X Sample: tensor([[1.4130, 1.5876, 1.6003, 1.8367, 1.9567, 2.0419, 2.2278, 2.1167, 3.7079,\n", + " 4.2874, 4.4476, 4.3098, 4.0990, 3.9997, 3.8459, 3.6678, 3.6243, 3.5302,\n", + " 3.5167, 3.5967, 3.5454, 3.4109, 3.0628, 2.7733, 2.8621, 2.8835, 3.0129,\n", + " 3.1120, 3.0563, 3.2293, 3.2895, 3.5315, 3.8523, 2.8011, 4.6621, 4.8620,\n", + " 5.1187, 5.4834, 5.7997, 5.8899, 1.0595, 0.6532, 0.5740, 1.0879, 1.6055,\n", + " 1.7784, 1.2306, 1.7437]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4477, -0.4700, 0.0378, -0.6417, -0.5398, 0.5600, 0.8507, 0.7218,\n", + " 0.5467, 0.5185, 0.8085, -0.7439, 1.5212, -0.1973, -0.1134, -0.8991,\n", + " -0.4564, 0.6143, 0.4217, 0.9207, 2.3698, 2.1079, 1.7657, 1.6132,\n", + " 1.7730, 1.1220, -0.2675, 1.6393, -0.1039, -0.3853, -0.6778, -0.8295,\n", + " -0.7867, 0.4024, 1.3269, -0.2389, 0.5692, -0.1902, 1.8119, 0.9533,\n", + " 1.0605, 1.0919, 1.3998]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3330, -0.3524, -0.0894, -0.1309, -0.0358, 0.1752, 0.2391, 0.3968,\n", + " 0.2668, 0.2895, 0.3326, -0.2291, -0.1884, -0.3462, -0.2064, -0.3564,\n", + " -0.2298, -0.0757, -0.1116, -0.1284, -0.1008, -0.0357, -0.0301, -0.0415,\n", + " -0.0303, 0.0136, 0.0015, -0.1371, -0.2509, -0.2869, -0.3177, -0.2669,\n", + " -0.3233, -0.4026, -0.2185, -0.2271, 0.0188, 0.0230, 0.0211, 0.3927,\n", + " 0.3944, 0.4281, 0.3274]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000310815084958449\n", + "Grad encoder.fc1.bias: 0.0008183823083527386\n", + "Grad encoder.encoder.0.weight: 9.05989290913567e-05\n", + "Grad encoder.encoder.0.bias: 0.00043680102680809796\n", + "Grad encoder.encoder.2.weight: 5.59410109417513e-05\n", + "Grad encoder.encoder.2.bias: 0.0003105071373283863\n", + "Grad encoder.encoder.4.weight: 0.00015119578165467829\n", + "Grad encoder.encoder.4.bias: 0.00043464096961542964\n", + "Grad decoder.fc1.0.weight: 4.645739682018757e-05\n", + "Grad decoder.fc1.0.bias: 0.00019724015146493912\n", + "Grad decoder.fc1.2.weight: 5.007051368011162e-05\n", + "Grad decoder.fc1.2.bias: 0.00018515526608098298\n", + "Grad decoder.fc1.4.weight: 5.653709376929328e-05\n", + "Grad decoder.fc1.4.bias: 0.0003643360687419772\n", + "Grad decoder.fc2.weight: 0.00011933909263461828\n", + "Grad decoder.fc2.bias: 0.0026221885345876217\n", + "Grad _memory_unit.weight_ih_l0: 7.552351689810166e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.4457854376814794e-05\n", + "Grad _memory_unit.bias_hh_l0: 7.568431101390161e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.9727241326327203e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.310400618123822e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.1817415472469293e-05\n", + "Data X Sample: tensor([[1.5743, 1.8614, 2.1142, 2.2609, 2.3699, 2.5296, 2.6099, 2.7058, 2.7193,\n", + " 2.6934, 2.8836, 2.7966, 2.7652, 2.6747, 2.5925, 2.5696, 2.4906, 2.5263,\n", + " 2.5627, 2.5459, 2.5002, 2.5413, 2.5014, 2.4718, 2.4643, 2.4996, 2.5654,\n", + " 2.5777, 2.4458, 2.4924, 2.2957, 2.3350, 2.2902, 1.4852, 1.9854, 1.8923,\n", + " 1.7541, 1.6405, 1.6607, 1.6172, 1.3220, 0.7269, 0.7922, 1.3118, 2.0455,\n", + " 2.1958, 1.5366, 2.0330]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3223, -0.1355, 0.1815, 0.0907, -0.1088, 1.4396, -0.5688, -0.3377,\n", + " -0.4436, -0.5152, -0.7615, 0.9169, -0.1206, 1.2320, -1.3929, 0.6216,\n", + " 0.5793, 0.6544, 0.1644, 0.9445, -0.2488, -0.9986, 0.1932, -0.6007,\n", + " -0.7455, -0.1353, -0.0428, 0.7177, 0.6160, 0.6008, 0.4978, 0.0979,\n", + " 0.4981, -0.4803, 0.9593, 1.1426, 0.9392, -0.6411, 0.0000, -0.6917,\n", + " -0.3456, -0.6812, 0.3455]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3520, 0.3159, 0.1090, 0.2144, 0.0997, -0.1231, -0.3701, -0.3705,\n", + " -0.2293, -0.2642, -0.2815, 0.1465, 0.2428, 0.2555, 0.1826, 0.2644,\n", + " 0.2145, 0.1721, 0.1137, 0.1315, 0.1137, 0.1235, 0.0868, 0.0620,\n", + " 0.0420, -0.0029, -0.0578, 0.0947, 0.2002, 0.2361, 0.2544, 0.1456,\n", + " 0.2907, 0.2668, 0.1844, 0.1780, -0.0083, 0.0120, 0.0098, -0.2707,\n", + " -0.2470, -0.2842, -0.2828]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 9.593672439223155e-05\n", + "Grad encoder.fc1.bias: 0.00010540830407990143\n", + "Grad encoder.encoder.0.weight: 3.1545838282909244e-05\n", + "Grad encoder.encoder.0.bias: 9.754869097378105e-05\n", + "Grad encoder.encoder.2.weight: 1.8726077541941777e-05\n", + "Grad encoder.encoder.2.bias: 0.0001781047321856022\n", + "Grad encoder.encoder.4.weight: 5.999307177262381e-05\n", + "Grad encoder.encoder.4.bias: 0.0007579905795864761\n", + "Grad decoder.fc1.0.weight: 2.7122781830257736e-05\n", + "Grad decoder.fc1.0.bias: 0.0002424242120468989\n", + "Grad decoder.fc1.2.weight: 4.0092443668982014e-05\n", + "Grad decoder.fc1.2.bias: 0.00019513450388330966\n", + "Grad decoder.fc1.4.weight: 5.4023174016037956e-05\n", + "Grad decoder.fc1.4.bias: 0.0002941249404102564\n", + "Grad decoder.fc2.weight: 9.04047628864646e-05\n", + "Grad decoder.fc2.bias: 0.0020047544967383146\n", + "Grad _memory_unit.weight_ih_l0: 3.3886085475387517e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.6672492822399363e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.4101684428169392e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.0168697574263206e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.294368697330356e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.712126999744214e-05\n", + "Data X Sample: tensor([[1.6273, 1.8439, 2.0255, 2.1734, 2.2982, 2.4530, 2.5498, 2.6930, 2.6705,\n", + " 2.6760, 2.7123, 2.7635, 2.7230, 2.5411, 2.4664, 2.4999, 2.5174, 2.4663,\n", + " 2.5214, 2.4195, 2.5149, 2.5444, 2.5062, 2.5004, 2.5243, 2.5597, 2.5467,\n", + " 2.5410, 2.3348, 2.3614, 2.3167, 2.3903, 2.1846, 1.3617, 1.9217, 1.8023,\n", + " 1.6872, 1.6087, 1.6417, 1.5008, 1.3029, 0.7508, 0.7821, 1.2457, 1.8988,\n", + " 2.1329, 1.5094, 2.0955]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4222, 0.4647, 0.6518, 1.4561, -0.0954, 0.5972, -0.4071, 0.3608,\n", + " 0.7896, -0.2830, 0.1308, 0.2806, -1.0210, 0.6636, -0.5557, -0.2249,\n", + " 0.6041, 0.4013, 0.5583, 0.3902, 0.2141, -0.2560, -0.6265, -0.2172,\n", + " -0.3772, 0.0856, -0.4308, -0.8341, 0.0311, -0.1686, -0.0954, 0.8204,\n", + " 0.1275, 0.2445, -0.7340, 0.2431, 0.4915, -0.6596, 1.1723, 0.2465,\n", + " -0.0869, 0.2185, 0.1947]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3543, 0.3171, 0.1105, 0.2159, 0.0980, -0.1238, -0.3715, -0.3694,\n", + " -0.2312, -0.2648, -0.2846, 0.1425, 0.2476, 0.2594, 0.1790, 0.2659,\n", + " 0.2179, 0.1734, 0.1182, 0.1349, 0.1155, 0.1220, 0.0937, 0.0665,\n", + " 0.0423, -0.0026, -0.0567, 0.0968, 0.1977, 0.2299, 0.2470, 0.1434,\n", + " 0.2848, 0.2623, 0.1816, 0.1839, -0.0083, 0.0124, 0.0051, -0.2734,\n", + " -0.2487, -0.2812, -0.2826]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 9.001517901197076e-05\n", + "Grad encoder.fc1.bias: 0.0005034608184359968\n", + "Grad encoder.encoder.0.weight: 3.509072121232748e-05\n", + "Grad encoder.encoder.0.bias: 0.0005415566847659647\n", + "Grad encoder.encoder.2.weight: 2.689608845685143e-05\n", + "Grad encoder.encoder.2.bias: 0.00039521261351183057\n", + "Grad encoder.encoder.4.weight: 8.813590829959139e-05\n", + "Grad encoder.encoder.4.bias: 0.0008816110203042626\n", + "Grad decoder.fc1.0.weight: 3.881576776620932e-05\n", + "Grad decoder.fc1.0.bias: 0.0002806656120810658\n", + "Grad decoder.fc1.2.weight: 4.46935991931241e-05\n", + "Grad decoder.fc1.2.bias: 0.0002222103939857334\n", + "Grad decoder.fc1.4.weight: 6.0075308283558115e-05\n", + "Grad decoder.fc1.4.bias: 0.000307652197079733\n", + "Grad decoder.fc2.weight: 0.0001395998551743105\n", + "Grad decoder.fc2.bias: 0.0021022625733166933\n", + "Grad _memory_unit.weight_ih_l0: 7.1219424171431456e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.4054350433289073e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.244679788214853e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.952885097329272e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.385559001704678e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.667293640319258e-05\n", + "Data X Sample: tensor([[1.5287, 1.8206, 1.9474, 2.0269, 2.1702, 2.2953, 2.3202, 2.3722, 2.4703,\n", + " 2.4059, 2.4934, 2.5551, 2.4434, 2.4320, 2.3529, 2.4780, 2.3963, 2.3696,\n", + " 2.4057, 2.4864, 2.4978, 2.5168, 2.5182, 2.5691, 2.5243, 2.5623, 2.6027,\n", + " 2.6062, 2.2272, 2.2697, 2.2572, 2.2991, 2.1868, 1.3662, 1.8408, 1.7196,\n", + " 1.5673, 1.4841, 1.5339, 1.5576, 1.3411, 0.7149, 0.7033, 1.3290, 1.9662,\n", + " 2.0357, 1.4006, 2.0486]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1472, -0.4375, 0.5437, 1.1667, 0.2777, 0.1701, -0.3629, -0.2754,\n", + " -0.3873, -0.1738, 0.0026, 1.9047, -0.1217, 1.4402, 1.0132, 0.3781,\n", + " 0.8531, -0.0679, 0.4967, 0.8138, -0.7156, -0.4338, 1.1405, 0.1417,\n", + " 0.4657, -0.7026, -1.1743, -1.1332, -0.0418, 0.7912, 0.3513, 0.2341,\n", + " 0.5342, 0.3557, 0.3849, 1.0310, -1.0105, 0.7357, -1.1818, -0.2414,\n", + " -0.3584, -0.1424, -0.8491]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3688, 0.3312, 0.1170, 0.2302, 0.0996, -0.1268, -0.3821, -0.3810,\n", + " -0.2391, -0.2731, -0.2950, 0.1449, 0.2602, 0.2740, 0.1834, 0.2779,\n", + " 0.2321, 0.1800, 0.1252, 0.1415, 0.1178, 0.1213, 0.1053, 0.0761,\n", + " 0.0435, -0.0038, -0.0566, 0.1004, 0.2037, 0.2314, 0.2479, 0.1469,\n", + " 0.2882, 0.2659, 0.1843, 0.1957, -0.0103, 0.0121, -0.0011, -0.2843,\n", + " -0.2623, -0.2866, -0.2934]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 8.789841376710683e-05\n", + "Grad encoder.fc1.bias: 0.0006923482287675142\n", + "Grad encoder.encoder.0.weight: 2.5883256967063062e-05\n", + "Grad encoder.encoder.0.bias: 0.00039353163447231054\n", + "Grad encoder.encoder.2.weight: 2.140618016710505e-05\n", + "Grad encoder.encoder.2.bias: 0.00028182577807456255\n", + "Grad encoder.encoder.4.weight: 4.786169301951304e-05\n", + "Grad encoder.encoder.4.bias: 0.000406032195314765\n", + "Grad decoder.fc1.0.weight: 2.2739937776350416e-05\n", + "Grad decoder.fc1.0.bias: 0.00014994193043094128\n", + "Grad decoder.fc1.2.weight: 3.566628583939746e-05\n", + "Grad decoder.fc1.2.bias: 0.00017901058890856802\n", + "Grad decoder.fc1.4.weight: 5.4235752031672746e-05\n", + "Grad decoder.fc1.4.bias: 0.0003455956175457686\n", + "Grad decoder.fc2.weight: 9.404824231751263e-05\n", + "Grad decoder.fc2.bias: 0.0016275768866762519\n", + "Grad _memory_unit.weight_ih_l0: 3.275421931903111e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.005061469390057e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.0079632374981884e-05\n", + "Grad _memory_unit.weight_ih_l1: 9.951412494046963e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.393545193830505e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.664147202973254e-05\n", + "Data X Sample: tensor([[1.4035, 1.5890, 1.7686, 1.9416, 1.9840, 2.0272, 2.0907, 1.9804, 3.1611,\n", + " 4.0251, 4.2731, 4.4286, 4.0280, 3.9752, 3.7072, 3.7786, 3.6196, 3.4877,\n", + " 3.5498, 3.5985, 3.4301, 3.4308, 2.9375, 2.7581, 2.7589, 2.9671, 2.9890,\n", + " 3.1283, 3.1049, 3.1081, 3.3945, 3.4210, 3.9469, 2.7531, 4.6719, 4.9228,\n", + " 5.1207, 5.5576, 5.9645, 5.8672, 1.1072, 0.5974, 0.5962, 1.2314, 1.8116,\n", + " 1.8184, 1.2782, 1.7124]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4520, 0.2061, 0.5674, 0.3250, -0.3400, 0.0292, -1.3509, 0.7277,\n", + " -0.8010, -0.6456, -0.5449, -0.5593, 0.0933, -0.1026, -0.6249, -1.0063,\n", + " -1.0068, -0.6008, -0.3594, -0.0957, 0.5100, -0.3893, -0.4973, 0.2042,\n", + " -0.1999, -0.1485, -0.0060, 0.4075, 0.2191, 1.0785, 0.0743, 1.7159,\n", + " -0.0577, 0.5200, 0.0438, -1.2753, 0.8233, 0.7428, -0.3730, 0.9807,\n", + " 0.1469, -0.4637, 1.3776]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2775, -0.3073, -0.0809, -0.1389, -0.0448, 0.1389, 0.1884, 0.3369,\n", + " 0.2220, 0.2445, 0.2629, -0.1873, -0.1548, -0.2907, -0.1822, -0.3107,\n", + " -0.2082, -0.0674, -0.0850, -0.1126, -0.0963, -0.0347, -0.0257, -0.0401,\n", + " -0.0362, 0.0147, 0.0116, -0.1004, -0.2121, -0.2650, -0.2680, -0.2295,\n", + " -0.2846, -0.3446, -0.1936, -0.1831, 0.0011, 0.0243, 0.0023, 0.3327,\n", + " 0.3507, 0.3614, 0.2875]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00016139022773131728\n", + "Grad encoder.fc1.bias: 0.00022259599063545465\n", + "Grad encoder.encoder.0.weight: 4.160179742029868e-05\n", + "Grad encoder.encoder.0.bias: 0.00031822145683690906\n", + "Grad encoder.encoder.2.weight: 2.7343423425918445e-05\n", + "Grad encoder.encoder.2.bias: 0.00023178165429271758\n", + "Grad encoder.encoder.4.weight: 6.789787585148588e-05\n", + "Grad encoder.encoder.4.bias: 0.0005103822331875563\n", + "Grad decoder.fc1.0.weight: 2.586985101515893e-05\n", + "Grad decoder.fc1.0.bias: 0.0001666466996539384\n", + "Grad decoder.fc1.2.weight: 3.7783429434057325e-05\n", + "Grad decoder.fc1.2.bias: 0.00021577435836661607\n", + "Grad decoder.fc1.4.weight: 4.005398659501225e-05\n", + "Grad decoder.fc1.4.bias: 0.00033760274527594447\n", + "Grad decoder.fc2.weight: 9.100561146624386e-05\n", + "Grad decoder.fc2.bias: 0.0016846071230247617\n", + "Grad _memory_unit.weight_ih_l0: 2.8660438147198875e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.067680204869248e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.484455869009253e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.2365831025817897e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.723647023434751e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.8395407096249983e-05\n", + "Data X Sample: tensor([[1.4862, 1.6080, 1.7445, 1.7842, 1.9260, 2.1097, 2.3095, 2.1791, 4.0203,\n", + " 4.1894, 4.2097, 4.3176, 3.9126, 3.9943, 3.7904, 3.6377, 3.5897, 3.5418,\n", + " 3.6861, 3.6822, 3.6681, 3.4889, 2.9014, 2.8993, 2.8640, 2.9723, 3.0049,\n", + " 2.9937, 3.0945, 3.2195, 3.3140, 3.3105, 3.7511, 2.7279, 4.6131, 4.8985,\n", + " 5.2230, 5.3482, 6.0469, 5.8899, 1.0834, 0.6771, 0.6184, 1.0850, 1.6134,\n", + " 1.7326, 1.1694, 1.6655]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3346, -0.2271, -0.6902, -0.1165, 0.0925, 0.4332, 0.1850, 0.3243,\n", + " 0.4203, 0.2735, 0.3068, -1.1566, -0.2927, -0.0972, 0.7866, -0.5558,\n", + " 0.3348, 0.7493, 0.1022, 0.7057, -0.4641, -0.6042, 1.2599, 0.6368,\n", + " 0.1746, 0.9518, -0.2635, -0.7426, -0.1836, 0.0324, -0.2653, -1.3221,\n", + " -0.1679, 0.3120, -0.7174, -0.2183, -0.5827, -0.0911, 0.2630, 0.3147,\n", + " 0.3843, 0.6764, -0.9507]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2636, -0.2960, -0.0782, -0.1410, -0.0492, 0.1281, 0.1741, 0.3205,\n", + " 0.2103, 0.2328, 0.2451, -0.1765, -0.1464, -0.2752, -0.1757, -0.2994,\n", + " -0.2038, -0.0661, -0.0774, -0.1089, -0.0945, -0.0343, -0.0269, -0.0402,\n", + " -0.0374, 0.0143, 0.0156, -0.0898, -0.1997, -0.2575, -0.2538, -0.2187,\n", + " -0.2737, -0.3280, -0.1866, -0.1730, -0.0019, 0.0251, -0.0035, 0.3180,\n", + " 0.3397, 0.3442, 0.2772]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002746584650594741\n", + "Grad encoder.fc1.bias: 0.0001347947254544124\n", + "Grad encoder.encoder.0.weight: 7.664126314921305e-05\n", + "Grad encoder.encoder.0.bias: 0.00016037067689467221\n", + "Grad encoder.encoder.2.weight: 4.194864595774561e-05\n", + "Grad encoder.encoder.2.bias: 0.00015981943579390645\n", + "Grad encoder.encoder.4.weight: 8.404243271797895e-05\n", + "Grad encoder.encoder.4.bias: 0.0004997566575184464\n", + "Grad decoder.fc1.0.weight: 2.7441070415079594e-05\n", + "Grad decoder.fc1.0.bias: 0.00013812544057145715\n", + "Grad decoder.fc1.2.weight: 2.5114553864113986e-05\n", + "Grad decoder.fc1.2.bias: 0.00016919587505981326\n", + "Grad decoder.fc1.4.weight: 3.11762560158968e-05\n", + "Grad decoder.fc1.4.bias: 0.0002752974396571517\n", + "Grad decoder.fc2.weight: 6.389762711478397e-05\n", + "Grad decoder.fc2.bias: 0.0017440705560147762\n", + "Grad _memory_unit.weight_ih_l0: 1.7156286276076571e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.564457973785466e-06\n", + "Grad _memory_unit.bias_hh_l0: 4.044543857162353e-06\n", + "Grad _memory_unit.weight_ih_l1: 8.270553735201247e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.652049781521782e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.8384043869446032e-05\n", + "Data X Sample: tensor([[1.4438, 1.6313, 1.7295, 1.7689, 2.0011, 2.0965, 2.1985, 1.9662, 2.3287,\n", + " 3.6539, 4.3524, 4.1676, 3.9170, 3.9397, 3.6542, 3.6459, 3.5095, 3.5534,\n", + " 3.3185, 3.3754, 3.4718, 3.4032, 3.0845, 2.7714, 2.8321, 2.8757, 2.8078,\n", + " 2.8550, 2.7823, 3.0557, 2.9116, 3.1806, 3.5707, 2.5173, 4.3361, 4.6966,\n", + " 5.0715, 5.2713, 5.6602, 5.7480, 1.2218, 0.6671, 0.6447, 1.0821, 1.6412,\n", + " 1.8355, 1.2510, 1.7437]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4448, -0.4697, 0.7536, -2.1454, -1.1862, -0.4132, 0.0348, 0.5409,\n", + " 0.6448, 0.3377, 0.3852, -0.5403, -0.6442, -1.0662, -0.7269, -0.8769,\n", + " -0.5167, -0.4405, 1.1864, -0.8617, -1.6825, -1.1140, -1.4504, 1.4217,\n", + " 2.1209, -1.1525, -0.1624, -0.3284, -0.4119, -0.1176, -0.4484, -0.4897,\n", + " -1.1936, -0.4015, -1.2986, -0.7296, 0.7316, 0.1005, -0.0231, 0.8572,\n", + " 0.5073, 0.8440, 0.0471]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2522, -0.2874, -0.0764, -0.1433, -0.0528, 0.1183, 0.1619, 0.3063,\n", + " 0.2002, 0.2233, 0.2302, -0.1665, -0.1389, -0.2611, -0.1709, -0.2901,\n", + " -0.2003, -0.0659, -0.0706, -0.1066, -0.0929, -0.0338, -0.0271, -0.0399,\n", + " -0.0384, 0.0140, 0.0197, -0.0815, -0.1892, -0.2507, -0.2414, -0.2096,\n", + " -0.2643, -0.3138, -0.1806, -0.1652, -0.0047, 0.0257, -0.0074, 0.3061,\n", + " 0.3311, 0.3299, 0.2686]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001257513795280829\n", + "Grad encoder.fc1.bias: 0.00013162146206013858\n", + "Grad encoder.encoder.0.weight: 3.7339013942983e-05\n", + "Grad encoder.encoder.0.bias: 0.00015485839685425162\n", + "Grad encoder.encoder.2.weight: 2.00903868972091e-05\n", + "Grad encoder.encoder.2.bias: 0.00012186872481834143\n", + "Grad encoder.encoder.4.weight: 7.096199988154694e-05\n", + "Grad encoder.encoder.4.bias: 0.00037796073593199253\n", + "Grad decoder.fc1.0.weight: 2.155258880520705e-05\n", + "Grad decoder.fc1.0.bias: 9.719486843096092e-05\n", + "Grad decoder.fc1.2.weight: 3.655524778878316e-05\n", + "Grad decoder.fc1.2.bias: 0.00016291503561660647\n", + "Grad decoder.fc1.4.weight: 5.464898276841268e-05\n", + "Grad decoder.fc1.4.bias: 0.0003219466598238796\n", + "Grad decoder.fc2.weight: 8.787587285041809e-05\n", + "Grad decoder.fc2.bias: 0.002251206198707223\n", + "Grad _memory_unit.weight_ih_l0: 1.7629140529606957e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.9813401094288565e-06\n", + "Grad _memory_unit.bias_hh_l0: 3.2263869798043743e-06\n", + "Grad _memory_unit.weight_ih_l1: 8.514897444911185e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.1016674509155564e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.0354284313507378e-05\n", + "Data X Sample: tensor([[1.4141, 1.7376, 1.9895, 2.0947, 2.0865, 2.0876, 2.0938, 2.1252, 3.3393,\n", + " 4.0978, 4.3556, 4.2806, 4.1789, 4.1142, 4.0098, 3.7457, 3.7014, 3.5766,\n", + " 3.7542, 3.6766, 3.6264, 3.4109, 2.9978, 2.8955, 2.9260, 2.9227, 3.0049,\n", + " 3.1691, 2.9453, 3.1671, 3.3175, 3.3547, 3.8017, 2.8034, 4.5689, 4.9836,\n", + " 5.1187, 5.5496, 6.0405, 5.9580, 1.1645, 0.6930, 0.6972, 1.2658, 1.7205,\n", + " 1.9613, 1.3734, 1.9001]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4566, 0.6568, -0.1316, 0.1073, 0.3060, 0.7435, 0.5898, 0.6165,\n", + " -0.3056, 0.2431, 0.7562, -0.7377, -0.0487, -0.4452, 0.1687, 0.0607,\n", + " 0.3922, 0.0386, -0.2418, -0.0401, 0.1402, 0.0862, 0.0479, 0.0938,\n", + " -0.0884, 0.0296, -0.5700, -1.0575, -0.8862, -0.5158, -1.1688, -0.3967,\n", + " -0.7880, -0.0085, 0.1075, -0.2936, -1.0138, 0.6895, 1.0325, 0.2710,\n", + " 0.3001, 0.2359, 0.7942]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2570, -0.2930, -0.0765, -0.1438, -0.0499, 0.1217, 0.1673, 0.3129,\n", + " 0.2048, 0.2275, 0.2362, -0.1685, -0.1430, -0.2668, -0.1757, -0.2935,\n", + " -0.2008, -0.0686, -0.0724, -0.1075, -0.0972, -0.0330, -0.0261, -0.0391,\n", + " -0.0399, 0.0142, 0.0171, -0.0878, -0.1960, -0.2579, -0.2480, -0.2170,\n", + " -0.2715, -0.3227, -0.1845, -0.1697, -0.0069, 0.0262, -0.0080, 0.3133,\n", + " 0.3359, 0.3364, 0.2745]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00021317139908205718\n", + "Grad encoder.fc1.bias: 0.00023214350221678615\n", + "Grad encoder.encoder.0.weight: 5.2809358749073e-05\n", + "Grad encoder.encoder.0.bias: 0.0001464092783862725\n", + "Grad encoder.encoder.2.weight: 2.657158620422706e-05\n", + "Grad encoder.encoder.2.bias: 9.98008472379297e-05\n", + "Grad encoder.encoder.4.weight: 7.00560340192169e-05\n", + "Grad encoder.encoder.4.bias: 0.00012194388546049595\n", + "Grad decoder.fc1.0.weight: 2.043052518274635e-05\n", + "Grad decoder.fc1.0.bias: 7.549673318862915e-05\n", + "Grad decoder.fc1.2.weight: 2.5441040634177625e-05\n", + "Grad decoder.fc1.2.bias: 6.801167182857171e-05\n", + "Grad decoder.fc1.4.weight: 3.4089320251950994e-05\n", + "Grad decoder.fc1.4.bias: 0.00011343678488628939\n", + "Grad decoder.fc2.weight: 0.00010344905604142696\n", + "Grad decoder.fc2.bias: 0.001757787773385644\n", + "Grad _memory_unit.weight_ih_l0: 1.620442731109506e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.353390411575674e-06\n", + "Grad _memory_unit.bias_hh_l0: 1.8112034467776539e-06\n", + "Grad _memory_unit.weight_ih_l1: 5.689997237823263e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.1907928637810983e-05\n", + "Grad _memory_unit.bias_hh_l1: 5.940920345892664e-06\n", + "Data X Sample: tensor([[2.6309, 2.7980, 2.3276, 2.2040, 2.2999, 2.1495, 3.4156, 3.9167, 4.1448,\n", + " 4.1389, 4.0161, 4.2475, 4.0657, 3.7325, 3.7475, 3.5816, 3.6102, 3.5128,\n", + " 3.4775, 3.2824, 3.3001, 3.2716, 3.1231, 2.8115, 2.7139, 2.7164, 2.7092,\n", + " 2.7530, 2.6713, 2.7380, 2.6806, 2.8849, 3.1197, 2.3411, 3.8606, 4.3123,\n", + " 4.6153, 5.0328, 5.6412, 5.5664, 1.7802, 0.9439, 0.8569, 1.3864, 1.8314,\n", + " 2.1157, 1.4754, 1.9704]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.1977, -0.1930, 0.3461, -0.9706, 1.0577, -0.0906, 0.4431, -0.0374,\n", + " -0.4042, -0.0157, 0.0057, 0.8020, -1.6338, -0.5165, -0.3852, 0.1404,\n", + " -0.3035, 4.4607, 0.4585, 0.0995, 1.5677, 1.5550, 0.1821, 0.9820,\n", + " -0.0720, 0.0948, 0.0345, -0.2399, -0.5262, -0.4668, -0.8089, -0.1430,\n", + " -0.6051, -0.2954, -0.3672, 0.1372, 0.7329, 0.5269, -0.5596, 0.2088,\n", + " -0.1432, -0.2304, 0.2794]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1911, -0.2353, -0.0682, -0.1519, -0.0757, 0.0675, 0.0964, 0.2286,\n", + " 0.1476, 0.1750, 0.1539, -0.1219, -0.0945, -0.1869, -0.1371, -0.2399,\n", + " -0.1840, -0.0609, -0.0378, -0.0915, -0.0726, -0.0333, -0.0325, -0.0429,\n", + " -0.0396, 0.0115, 0.0406, -0.0310, -0.1277, -0.2045, -0.1727, -0.1524,\n", + " -0.2045, -0.2305, -0.1461, -0.1216, -0.0130, 0.0317, -0.0226, 0.2364,\n", + " 0.2801, 0.2509, 0.2160]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 4.404699575388804e-05\n", + "Grad encoder.fc1.bias: 0.0002451619366183877\n", + "Grad encoder.encoder.0.weight: 1.3846798537997529e-05\n", + "Grad encoder.encoder.0.bias: 0.00017935188952833414\n", + "Grad encoder.encoder.2.weight: 1.5446756151504815e-05\n", + "Grad encoder.encoder.2.bias: 0.00024831670452840626\n", + "Grad encoder.encoder.4.weight: 4.043994704261422e-05\n", + "Grad encoder.encoder.4.bias: 0.0005639538867399096\n", + "Grad decoder.fc1.0.weight: 2.0626546756830066e-05\n", + "Grad decoder.fc1.0.bias: 0.00020340313494671136\n", + "Grad decoder.fc1.2.weight: 2.9735685529885814e-05\n", + "Grad decoder.fc1.2.bias: 0.00018099142471328378\n", + "Grad decoder.fc1.4.weight: 3.9446953451260924e-05\n", + "Grad decoder.fc1.4.bias: 0.0002438928058836609\n", + "Grad decoder.fc2.weight: 9.088868682738394e-05\n", + "Grad decoder.fc2.bias: 0.0018271403387188911\n", + "Grad _memory_unit.weight_ih_l0: 3.126016736132442e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.877718750620261e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.438126653549261e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.3859315686204354e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.434529546415433e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.17527303902898e-05\n", + "Data X Sample: tensor([[1.6485, 1.6633, 1.8467, 1.9001, 1.9823, 2.1510, 1.9921, 4.1552, 4.3352,\n", + " 4.3916, 4.3968, 4.6058, 4.3009, 4.1442, 4.0401, 3.7170, 3.8193, 3.6792,\n", + " 3.6282, 3.5855, 3.5724, 3.3573, 3.0146, 2.8478, 2.8640, 2.8365, 2.8424,\n", + " 2.9243, 2.9419, 3.1048, 3.0656, 3.2248, 3.6961, 2.6592, 4.5126, 4.9082,\n", + " 5.1561, 5.6848, 6.2750, 6.0005, 1.1025, 0.6193, 0.6629, 1.1309, 1.7244,\n", + " 1.8413, 1.2442, 1.5951]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0771, 0.6442, 0.4836, -0.5546, -0.0607, -0.1897, 0.1008, -0.2787,\n", + " -0.2246, -0.0579, -0.2190, -0.5105, 0.0842, -0.3788, 0.1961, 0.2605,\n", + " 1.0676, 0.0139, -1.9751, -0.7349, -0.2310, 1.0747, 0.3783, -1.6898,\n", + " 0.8431, 0.4421, -0.0366, -0.1246, -0.2068, 0.0849, -0.2573, -0.1330,\n", + " 1.3119, -0.3981, -0.0270, 0.2249, -0.7301, 0.6895, 0.5227, -0.3888,\n", + " -0.2739, 0.0199, -0.7823]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2024, -0.2460, -0.0693, -0.1528, -0.0714, 0.0761, 0.1080, 0.2424,\n", + " 0.1572, 0.1833, 0.1675, -0.1278, -0.1030, -0.1985, -0.1456, -0.2473,\n", + " -0.1862, -0.0653, -0.0436, -0.0945, -0.0781, -0.0329, -0.0313, -0.0418,\n", + " -0.0407, 0.0116, 0.0369, -0.0417, -0.1403, -0.2152, -0.1849, -0.1648,\n", + " -0.2166, -0.2467, -0.1537, -0.1308, -0.0150, 0.0323, -0.0215, 0.2506,\n", + " 0.2899, 0.2654, 0.2267]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006172440480440855\n", + "Grad encoder.fc1.bias: 0.0012619886547327042\n", + "Grad encoder.encoder.0.weight: 0.00018029773491434753\n", + "Grad encoder.encoder.0.bias: 0.0014519672840833664\n", + "Grad encoder.encoder.2.weight: 0.00010571669554337859\n", + "Grad encoder.encoder.2.bias: 0.0010325032053515315\n", + "Grad encoder.encoder.4.weight: 0.00030574604170396924\n", + "Grad encoder.encoder.4.bias: 0.0024478775449097157\n", + "Grad decoder.fc1.0.weight: 0.00010276112152496353\n", + "Grad decoder.fc1.0.bias: 0.0006723848637193441\n", + "Grad decoder.fc1.2.weight: 0.00011922325211344287\n", + "Grad decoder.fc1.2.bias: 0.0006649986607953906\n", + "Grad decoder.fc1.4.weight: 0.00013443018542602658\n", + "Grad decoder.fc1.4.bias: 0.0007534988690167665\n", + "Grad decoder.fc2.weight: 0.00015945758786983788\n", + "Grad decoder.fc2.bias: 0.002454644301906228\n", + "Grad _memory_unit.weight_ih_l0: 1.6183385014301166e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.122008587932214e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.5892790290527046e-05\n", + "Grad _memory_unit.weight_ih_l1: 6.788442988181487e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00017014099285006523\n", + "Grad _memory_unit.bias_hh_l1: 8.369324496015906e-05\n", + "Data X Sample: tensor([[1.4650, 1.6866, 1.7656, 1.8717, 2.0199, 2.1421, 2.2232, 3.6882, 4.4573,\n", + " 4.3221, 4.3175, 4.3371, 4.0146, 3.9806, 3.8106, 3.8305, 3.6825, 3.7198,\n", + " 3.6737, 3.6952, 3.4669, 3.4384, 3.0580, 2.9127, 2.7814, 2.9384, 2.9037,\n", + " 2.9814, 2.9419, 3.0753, 3.1601, 3.2580, 3.6851, 2.7233, 4.5003, 4.9374,\n", + " 5.0617, 5.3509, 5.9835, 5.8246, 1.1550, 0.6731, 0.6204, 1.2113, 1.5777,\n", + " 1.7726, 1.3802, 1.8610]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.7442, -0.2267, 0.3571, -0.4048, 0.7573, -0.1023, 0.1673, 0.1490,\n", + " 0.5497, 0.2090, 0.4031, 0.1531, -0.5205, -0.5207, -0.1252, -0.0712,\n", + " -1.4137, 0.7323, -1.5151, -0.1628, -1.1582, 0.6568, 0.6511, -0.8697,\n", + " -1.6987, -1.2634, 1.1442, 0.3086, -0.3053, -0.2832, 0.2659, -0.2720,\n", + " -0.3628, -0.3680, -0.1005, -1.0718, -0.4825, -0.0139, -0.4066, 0.4071,\n", + " 0.2043, -0.0359, -0.1682]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1707, -0.2180, -0.0655, -0.1572, -0.0848, 0.0497, 0.0735, 0.2009,\n", + " 0.1292, 0.1572, 0.1273, -0.1037, -0.0788, -0.1586, -0.1265, -0.2203,\n", + " -0.1779, -0.0618, -0.0269, -0.0865, -0.0655, -0.0332, -0.0343, -0.0432,\n", + " -0.0405, 0.0092, 0.0484, -0.0136, -0.1064, -0.1885, -0.1473, -0.1333,\n", + " -0.1835, -0.2014, -0.1348, -0.1081, -0.0182, 0.0351, -0.0281, 0.2127,\n", + " 0.2618, 0.2239, 0.1982]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00046185310930013657\n", + "Grad encoder.fc1.bias: 0.0008487127488479018\n", + "Grad encoder.encoder.0.weight: 0.00012285407865419984\n", + "Grad encoder.encoder.0.bias: 0.0004729385254904628\n", + "Grad encoder.encoder.2.weight: 5.827907079947181e-05\n", + "Grad encoder.encoder.2.bias: 0.00027986621716991067\n", + "Grad encoder.encoder.4.weight: 0.00017403924721293151\n", + "Grad encoder.encoder.4.bias: 0.0007036409224383533\n", + "Grad decoder.fc1.0.weight: 5.091140701551922e-05\n", + "Grad decoder.fc1.0.bias: 0.00025839050067588687\n", + "Grad decoder.fc1.2.weight: 5.4394906328525394e-05\n", + "Grad decoder.fc1.2.bias: 0.00024037976982071996\n", + "Grad decoder.fc1.4.weight: 7.087134144967422e-05\n", + "Grad decoder.fc1.4.bias: 0.0003205205430276692\n", + "Grad decoder.fc2.weight: 9.346248407382518e-05\n", + "Grad decoder.fc2.bias: 0.0021498985588550568\n", + "Grad _memory_unit.weight_ih_l0: 6.356785888783634e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.053703039768152e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.5288904251065105e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.6044891708588693e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.0597383960848674e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.5242283300030977e-05\n", + "Data X Sample: tensor([[1.3377, 1.5541, 1.8182, 1.8826, 1.9875, 1.9314, 2.0044, 2.1692, 3.5248,\n", + " 4.1831, 4.3112, 4.2748, 4.0013, 4.0488, 3.7652, 3.5967, 3.5504, 3.7024,\n", + " 3.5890, 3.5576, 3.4964, 3.4614, 3.2122, 2.9222, 2.8490, 2.8835, 2.9703,\n", + " 2.9121, 2.9523, 3.0688, 3.1286, 3.3077, 3.8017, 2.7508, 4.5640, 4.7745,\n", + " 5.2013, 5.4622, 5.7363, 5.6771, 1.1407, 0.6313, 0.6730, 1.1539, 1.6372,\n", + " 1.8355, 1.3190, 1.8688]], device='cuda:0')\n", + "Data Y Sample: tensor([[-2.9974e-01, -2.5307e-01, -6.7546e-01, -7.6359e-02, 3.4199e-01,\n", + " 2.4075e-02, 1.4344e+00, 3.9304e-01, -3.1730e-01, 3.4405e-01,\n", + " 4.3102e-01, 5.5720e-01, -3.9953e-02, -6.5074e-01, 1.4089e-01,\n", + " -7.8019e-01, -4.9835e-01, 1.2157e-01, 1.6832e+00, 1.2263e+00,\n", + " 1.3780e+00, 1.2233e-01, 9.9541e-01, 5.3727e-01, 6.6085e-01,\n", + " 5.1658e-01, -2.6964e-01, -1.1343e+00, -1.2103e+00, -7.7649e-01,\n", + " -1.0514e+00, -3.8046e-01, 1.1500e-02, -8.9725e-02, -8.0868e-01,\n", + " -9.4212e-01, -1.0781e-03, -8.3988e-01, 1.1148e+00, 4.6479e-01,\n", + " 3.5858e-01, 7.6624e-01, 2.5549e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1968, -0.2417, -0.0689, -0.1572, -0.0749, 0.0701, 0.1014, 0.2329,\n", + " 0.1510, 0.1769, 0.1589, -0.1192, -0.0979, -0.1876, -0.1438, -0.2386,\n", + " -0.1829, -0.0690, -0.0400, -0.0928, -0.0764, -0.0326, -0.0319, -0.0407,\n", + " -0.0425, 0.0089, 0.0390, -0.0366, -0.1337, -0.2112, -0.1751, -0.1607,\n", + " -0.2097, -0.2378, -0.1503, -0.1285, -0.0196, 0.0345, -0.0229, 0.2434,\n", + " 0.2837, 0.2574, 0.2220]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00014395068865269423\n", + "Grad encoder.fc1.bias: 0.00013480999041348696\n", + "Grad encoder.encoder.0.weight: 3.701344758155756e-05\n", + "Grad encoder.encoder.0.bias: 0.00019154726760461926\n", + "Grad encoder.encoder.2.weight: 2.4447685063933022e-05\n", + "Grad encoder.encoder.2.bias: 0.0001455039018765092\n", + "Grad encoder.encoder.4.weight: 6.813331856392324e-05\n", + "Grad encoder.encoder.4.bias: 0.00030955704278312624\n", + "Grad decoder.fc1.0.weight: 2.281665729242377e-05\n", + "Grad decoder.fc1.0.bias: 0.00011798493505921215\n", + "Grad decoder.fc1.2.weight: 3.796786768361926e-05\n", + "Grad decoder.fc1.2.bias: 0.0002071451162919402\n", + "Grad decoder.fc1.4.weight: 5.2691764722112566e-05\n", + "Grad decoder.fc1.4.bias: 0.0004292030353099108\n", + "Grad decoder.fc2.weight: 8.748321852181107e-05\n", + "Grad decoder.fc2.bias: 0.0020923323463648558\n", + "Grad _memory_unit.weight_ih_l0: 3.425056092964951e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.77105173660675e-06\n", + "Grad _memory_unit.bias_hh_l0: 5.326964583218796e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.4271457757786266e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.6375553463585675e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.7956366718863137e-05\n", + "Data X Sample: tensor([[1.5997, 1.8702, 1.9820, 2.2281, 2.4177, 2.4795, 2.4820, 2.5979, 2.7168,\n", + " 2.6855, 2.7885, 2.7635, 2.6520, 2.6392, 2.5169, 2.4725, 2.4498, 2.5127,\n", + " 2.4966, 2.3972, 2.3726, 2.4495, 2.4869, 2.4718, 2.4812, 2.6067, 2.5547,\n", + " 2.5491, 2.3105, 2.3548, 2.3307, 2.3599, 2.0900, 1.3685, 1.8457, 1.7658,\n", + " 1.6597, 1.5610, 1.6163, 1.4838, 1.2886, 0.7528, 0.7619, 1.3146, 1.9583,\n", + " 2.2816, 1.4278, 2.2128]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7968, 0.4377, 0.1357, -0.6806, -0.7947, -1.0372, -3.5083, -2.5460,\n", + " -0.8506, -1.2363, -2.5410, 0.9480, 0.1832, 0.3165, -0.4167, 0.9596,\n", + " -1.0245, -0.8695, -0.6368, -1.0553, -0.5591, -0.0296, -1.3748, -1.6445,\n", + " -1.0251, -0.6855, 0.4899, 0.9094, 1.0293, 1.5847, 1.0566, 0.6192,\n", + " 0.4663, 0.8452, -0.2314, 0.7002, 1.0300, -0.5083, -0.2912, -2.3529,\n", + " -1.5166, -1.2133, 1.1100]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3800, 0.3778, 0.1506, 0.2818, 0.1115, -0.1092, -0.3906, -0.3942,\n", + " -0.2280, -0.2799, -0.2886, 0.1616, 0.2754, 0.3312, 0.1874, 0.3170,\n", + " 0.2828, 0.1649, 0.1499, 0.1667, 0.1312, 0.0951, 0.1240, 0.0872,\n", + " 0.0258, -0.0072, -0.0656, 0.0860, 0.1787, 0.1884, 0.2296, 0.1351,\n", + " 0.2898, 0.2485, 0.1813, 0.2181, -0.0255, 0.0301, -0.0347, -0.3019,\n", + " -0.2931, -0.2946, -0.3128]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 2.8329513952485286e-05\n", + "Grad encoder.fc1.bias: 0.00017076003132387996\n", + "Grad encoder.encoder.0.weight: 1.1322794307488948e-05\n", + "Grad encoder.encoder.0.bias: 0.00020816604956053197\n", + "Grad encoder.encoder.2.weight: 1.085775966203073e-05\n", + "Grad encoder.encoder.2.bias: 0.00013985531404614449\n", + "Grad encoder.encoder.4.weight: 3.468004797468893e-05\n", + "Grad encoder.encoder.4.bias: 0.00025350283249281347\n", + "Grad decoder.fc1.0.weight: 1.5510777302552015e-05\n", + "Grad decoder.fc1.0.bias: 9.012044756673276e-05\n", + "Grad decoder.fc1.2.weight: 2.4704688257770613e-05\n", + "Grad decoder.fc1.2.bias: 0.00011765884846681729\n", + "Grad decoder.fc1.4.weight: 3.0819614039501175e-05\n", + "Grad decoder.fc1.4.bias: 0.00017989931802731007\n", + "Grad decoder.fc2.weight: 8.149616041919217e-05\n", + "Grad decoder.fc2.bias: 0.0018783435225486755\n", + "Grad _memory_unit.weight_ih_l0: 2.0642848994611995e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.9729609347414225e-06\n", + "Grad _memory_unit.bias_hh_l0: 3.1048562050273176e-06\n", + "Grad _memory_unit.weight_ih_l1: 8.30082171887625e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.9686798623297364e-05\n", + "Grad _memory_unit.bias_hh_l1: 9.73204896581592e-06\n", + "Data X Sample: tensor([[1.5711, 1.7478, 1.7716, 1.8717, 1.7382, 2.0596, 2.1754, 2.1791, 3.9080,\n", + " 4.3584, 4.2541, 4.1793, 4.0457, 3.8879, 3.6971, 3.7375, 3.6621, 3.6366,\n", + " 3.4961, 3.5279, 3.5504, 3.4966, 2.9857, 2.8210, 2.7965, 2.9462, 3.0502,\n", + " 3.0997, 3.0737, 3.1572, 3.3000, 3.2552, 3.6939, 2.7599, 4.4734, 4.8450,\n", + " 5.1954, 5.4330, 6.1039, 5.8502, 1.1836, 0.6114, 0.6265, 1.1510, 1.6848,\n", + " 1.7955, 1.1286, 1.5638]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2841, -0.4115, -0.2614, 1.1711, 0.7337, 0.3200, 0.0183, 0.5703,\n", + " -0.4717, 0.7463, 0.9043, -1.6690, 0.2959, -0.7216, 0.5832, -0.1965,\n", + " -0.3490, -0.4195, -4.7012, 0.6339, -1.4639, -0.9094, -1.9952, 2.7594,\n", + " -0.8207, -1.8951, -0.7223, -0.4141, 0.6908, 0.2337, 0.7429, -0.1560,\n", + " 0.4287, -0.2297, 0.0657, -0.8822, -1.0365, 0.6004, 1.0325, 0.8179,\n", + " 0.8979, 0.7029, -0.1304]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2176, -0.2604, -0.0735, -0.1608, -0.0686, 0.0855, 0.1238, 0.2556,\n", + " 0.1680, 0.1913, 0.1823, -0.1289, -0.1126, -0.2074, -0.1584, -0.2509,\n", + " -0.1866, -0.0799, -0.0506, -0.0977, -0.0858, -0.0315, -0.0312, -0.0387,\n", + " -0.0452, 0.0072, 0.0315, -0.0558, -0.1545, -0.2299, -0.1941, -0.1827,\n", + " -0.2286, -0.2644, -0.1625, -0.1457, -0.0237, 0.0341, -0.0184, 0.2665,\n", + " 0.2987, 0.2824, 0.2396]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00012650585267692804\n", + "Grad encoder.fc1.bias: 8.960344712249935e-05\n", + "Grad encoder.encoder.0.weight: 3.087463119300082e-05\n", + "Grad encoder.encoder.0.bias: 7.791395182721317e-05\n", + "Grad encoder.encoder.2.weight: 2.29400466196239e-05\n", + "Grad encoder.encoder.2.bias: 0.00014895707136020064\n", + "Grad encoder.encoder.4.weight: 7.041263597784564e-05\n", + "Grad encoder.encoder.4.bias: 0.0007953715394251049\n", + "Grad decoder.fc1.0.weight: 2.514767402317375e-05\n", + "Grad decoder.fc1.0.bias: 0.00022918538888916373\n", + "Grad decoder.fc1.2.weight: 3.517920777085237e-05\n", + "Grad decoder.fc1.2.bias: 0.0002292928984388709\n", + "Grad decoder.fc1.4.weight: 4.259226261638105e-05\n", + "Grad decoder.fc1.4.bias: 0.00039031149935908616\n", + "Grad decoder.fc2.weight: 7.833862764528021e-05\n", + "Grad decoder.fc2.bias: 0.0022582910023629665\n", + "Grad _memory_unit.weight_ih_l0: 3.7300326312106336e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.207472971349489e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.1766823263315018e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.0379629859235138e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.856236723251641e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.4690929169300944e-05\n", + "Data X Sample: tensor([[1.3356, 1.5206, 1.7536, 1.9001, 2.0472, 1.9447, 1.8488, 1.7575, 3.2050,\n", + " 4.1278, 4.2382, 4.0683, 3.9325, 3.8170, 3.7602, 3.7307, 3.6322, 3.5264,\n", + " 3.3309, 3.3642, 3.3590, 3.3665, 3.0508, 2.7943, 2.7814, 2.8078, 2.7519,\n", + " 2.8101, 2.8343, 2.9804, 2.9396, 3.1557, 3.5883, 2.6821, 4.4194, 4.8158,\n", + " 4.8493, 5.1998, 5.7426, 5.6572, 1.0691, 0.6472, 0.6184, 1.1740, 1.6451,\n", + " 1.8413, 1.2714, 1.7046]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6052, -0.1055, 0.9637, -0.8262, -0.0523, 1.0302, 0.9212, 0.9099,\n", + " -0.1356, 0.8108, 0.6204, -0.7482, -0.9602, -0.6551, -0.5885, -0.3617,\n", + " -0.7703, -0.4094, -0.5084, 1.4056, -0.7921, -0.4012, -0.9001, -0.4970,\n", + " 0.6545, 0.5174, 0.0063, -0.0951, 0.6109, -0.3337, -0.7283, 0.5521,\n", + " -1.0093, -0.9284, 0.4590, 0.0657, -1.0293, 0.9799, -0.2505, 0.7631,\n", + " 0.7630, 0.4496, 0.3560]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2275, -0.2695, -0.0766, -0.1624, -0.0658, 0.0930, 0.1342, 0.2660,\n", + " 0.1757, 0.1979, 0.1934, -0.1343, -0.1200, -0.2170, -0.1657, -0.2564,\n", + " -0.1893, -0.0847, -0.0554, -0.0999, -0.0908, -0.0318, -0.0312, -0.0379,\n", + " -0.0470, 0.0058, 0.0280, -0.0647, -0.1636, -0.2379, -0.2019, -0.1921,\n", + " -0.2364, -0.2766, -0.1682, -0.1540, -0.0262, 0.0342, -0.0157, 0.2776,\n", + " 0.3054, 0.2943, 0.2485]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00037803928717039526\n", + "Grad encoder.fc1.bias: 0.000570765056181699\n", + "Grad encoder.encoder.0.weight: 0.0001039049748214893\n", + "Grad encoder.encoder.0.bias: 0.0007274262607097626\n", + "Grad encoder.encoder.2.weight: 6.144726648926735e-05\n", + "Grad encoder.encoder.2.bias: 0.0004895571619272232\n", + "Grad encoder.encoder.4.weight: 0.00019609548326116055\n", + "Grad encoder.encoder.4.bias: 0.0011506755836308002\n", + "Grad decoder.fc1.0.weight: 5.533444709726609e-05\n", + "Grad decoder.fc1.0.bias: 0.0002902083215303719\n", + "Grad decoder.fc1.2.weight: 6.741980905644596e-05\n", + "Grad decoder.fc1.2.bias: 0.0003466215857770294\n", + "Grad decoder.fc1.4.weight: 7.88633624324575e-05\n", + "Grad decoder.fc1.4.bias: 0.0005225300556048751\n", + "Grad decoder.fc2.weight: 0.00012108534428989515\n", + "Grad decoder.fc2.bias: 0.0023001020308583975\n", + "Grad _memory_unit.weight_ih_l0: 8.625059308542404e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.60503056779271e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.3471842066792306e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.556839601515094e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.849647565511987e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.37030648754444e-05\n", + "Data X Sample: tensor([[ 0.0032, 0.0000, 0.0015, 0.0087, -0.0068, 0.0044, 0.0031, -0.0028,\n", + " 0.0146, 0.0158, 0.0095, 0.0117, 0.0111, 0.0055, 0.0050, 0.0082,\n", + " -0.0330, -0.0348, -0.0351, -0.0279, -0.0442, -0.0230, -0.0361, -0.0267,\n", + " -0.0169, -0.0313, -0.0213, -0.0326, -0.0069, 0.0098, -0.0315, 0.0193,\n", + " 0.0176, -0.0160, 0.0147, 0.0195, 0.0118, 0.0027, 0.0444, 0.0085,\n", + " 0.0382, 0.0060, 0.0081, 0.0115, 0.0277, 0.0000, -0.0136, 0.0235]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.1110, 0.8474, 0.8914, 0.3977, -0.6481, -0.9052, -1.0228, -1.2453,\n", + " -1.5036, -0.8970, -0.8167, 0.8644, 0.6201, 0.6974, -0.2019, 0.9472,\n", + " 0.3130, -2.5763, 0.3975, -0.0575, 2.0423, 0.0066, -0.6954, 0.2723,\n", + " -1.3605, 0.3311, 0.4947, -0.2585, 0.8103, 1.9029, 0.6404, 0.5003,\n", + " 1.6653, 0.3892, 1.0064, 0.3866, 0.3232, -0.6228, 0.9794, -0.8960,\n", + " -0.6549, -0.8300, -0.9418]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 9.2572e-01, 7.7004e-01, 9.7422e-02, 4.1945e-01, -7.2032e-01,\n", + " -8.6180e-01, -1.4482e+00, -1.2759e+00, -8.9488e-01, -1.0050e+00,\n", + " -1.0545e+00, 4.0511e-01, 5.8772e-01, 7.7675e-01, 3.8764e-01,\n", + " 6.0333e-01, 6.0415e-01, 1.3765e-03, 1.5993e-01, 1.0646e-01,\n", + " 2.3699e-01, -2.7690e-02, 1.7673e-01, 2.4893e-02, 2.7655e-02,\n", + " -6.8510e-02, 4.3861e-01, 7.8992e-01, 1.1389e+00, 9.4431e-01,\n", + " 9.2619e-01, 4.9549e-01, 7.5711e-01, 6.8418e-01, 3.8163e-01,\n", + " 3.9716e-01, 5.5260e-02, 1.4577e-01, 6.2000e-02, -9.4992e-01,\n", + " -7.9001e-01, -6.8421e-01, -4.7363e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 9.774739010026678e-05\n", + "Grad encoder.fc1.bias: 0.00043269633897580206\n", + "Grad encoder.encoder.0.weight: 2.6826734028873034e-05\n", + "Grad encoder.encoder.0.bias: 0.00042317132465541363\n", + "Grad encoder.encoder.2.weight: 2.0364062947919592e-05\n", + "Grad encoder.encoder.2.bias: 0.00030886445892974734\n", + "Grad encoder.encoder.4.weight: 6.696996570099145e-05\n", + "Grad encoder.encoder.4.bias: 0.0006146759260445833\n", + "Grad decoder.fc1.0.weight: 2.6477768187760375e-05\n", + "Grad decoder.fc1.0.bias: 0.00019213088671676815\n", + "Grad decoder.fc1.2.weight: 3.6964527680538595e-05\n", + "Grad decoder.fc1.2.bias: 0.0002166824124287814\n", + "Grad decoder.fc1.4.weight: 4.009732583654113e-05\n", + "Grad decoder.fc1.4.bias: 0.0002701017656363547\n", + "Grad decoder.fc2.weight: 0.00011443348921602592\n", + "Grad decoder.fc2.bias: 0.0017571913776919246\n", + "Grad _memory_unit.weight_ih_l0: 4.247000106261112e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.4562395335815381e-05\n", + "Grad _memory_unit.bias_hh_l0: 7.403175004583318e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.8075186289934209e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.6440163714578375e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.2782411178923212e-05\n", + "Data X Sample: tensor([[1.4767, 1.8367, 1.8678, 1.9744, 2.1497, 2.2467, 2.4173, 2.4815, 2.4630,\n", + " 2.5923, 2.6203, 2.4811, 2.5166, 2.4702, 2.3201, 2.4014, 2.4120, 2.3870,\n", + " 2.4801, 2.3637, 2.5002, 2.4280, 2.3833, 2.3420, 2.3967, 2.4369, 2.3469,\n", + " 2.4349, 2.1856, 2.2762, 2.2712, 2.2217, 2.2352, 1.4669, 1.9462, 1.7877,\n", + " 1.6774, 1.4841, 1.5529, 1.5576, 1.2313, 0.6831, 0.7134, 1.3519, 1.7244,\n", + " 2.0071, 1.3734, 1.8453]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.2958e+00, 1.3605e+00, -1.4252e-01, 1.2439e+00, 1.7919e+00,\n", + " -2.2817e-01, -4.1532e-01, -7.1662e-01, -1.7667e-01, -2.4433e-01,\n", + " -4.2581e-01, 1.0969e+00, 8.4771e-01, 4.0783e-01, -1.0890e-01,\n", + " 1.0786e+00, -1.6426e+00, -2.5415e+00, -1.7910e-02, 3.5063e-01,\n", + " -9.0240e-01, 1.9377e-01, 7.2693e-01, -2.3884e-01, 2.2564e-01,\n", + " 2.9037e-01, 7.7926e-01, 2.4974e-02, 5.1044e-01, 4.1021e-01,\n", + " 5.5339e-02, -6.0155e-01, 3.9036e-01, -2.1445e-01, -6.0088e-01,\n", + " -1.1999e-04, 9.7267e-01, 4.1658e-01, 2.2533e-01, -5.7210e-01,\n", + " -7.3933e-01, -6.4496e-01, -8.5656e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3719, 0.3725, 0.1343, 0.2780, 0.1151, -0.1019, -0.3824, -0.4114,\n", + " -0.2190, -0.2791, -0.2756, 0.1832, 0.2677, 0.3411, 0.1848, 0.3262,\n", + " 0.2867, 0.1495, 0.1491, 0.1631, 0.1349, 0.0922, 0.1211, 0.0748,\n", + " 0.0136, -0.0216, -0.0581, 0.0732, 0.1796, 0.1935, 0.2327, 0.1360,\n", + " 0.3040, 0.2564, 0.1867, 0.2188, -0.0331, 0.0254, -0.0367, -0.3085,\n", + " -0.3111, -0.2975, -0.3109]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004833345301449299\n", + "Grad encoder.fc1.bias: 0.00023339572362601757\n", + "Grad encoder.encoder.0.weight: 0.00014484662096947432\n", + "Grad encoder.encoder.0.bias: 0.00030415650689974427\n", + "Grad encoder.encoder.2.weight: 8.71648735483177e-05\n", + "Grad encoder.encoder.2.bias: 0.00027245181263424456\n", + "Grad encoder.encoder.4.weight: 0.0001521027006674558\n", + "Grad encoder.encoder.4.bias: 0.00043412577360868454\n", + "Grad decoder.fc1.0.weight: 5.17787120770663e-05\n", + "Grad decoder.fc1.0.bias: 0.0001398485037498176\n", + "Grad decoder.fc1.2.weight: 6.864884198876098e-05\n", + "Grad decoder.fc1.2.bias: 0.0003081239410676062\n", + "Grad decoder.fc1.4.weight: 6.719222437823191e-05\n", + "Grad decoder.fc1.4.bias: 0.00038503753603436053\n", + "Grad decoder.fc2.weight: 0.00010463970829732716\n", + "Grad decoder.fc2.bias: 0.0016600146191194654\n", + "Grad _memory_unit.weight_ih_l0: 3.696730118463165e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.913911758805625e-06\n", + "Grad _memory_unit.bias_hh_l0: 4.542156602838077e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.8473535874363733e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.344206197652966e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.6910880731302314e-05\n", + "Data X Sample: tensor([[1.5191, 1.7871, 1.9429, 2.0881, 2.1428, 2.3263, 2.3957, 2.4545, 2.5411,\n", + " 2.5117, 2.4427, 2.5687, 2.3768, 2.4211, 2.5421, 2.4671, 2.3523, 2.3831,\n", + " 2.4842, 2.4939, 2.5027, 2.5903, 2.5158, 2.5805, 2.5168, 2.5649, 2.5814,\n", + " 2.5206, 2.2133, 2.1976, 2.3237, 2.2963, 2.2154, 1.4395, 1.8923, 1.6953,\n", + " 1.6125, 1.4841, 1.6417, 1.5945, 1.3220, 0.7309, 0.7154, 1.3548, 1.9345,\n", + " 2.0414, 1.4346, 2.0564]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.8377, 1.2038, 0.5365, -0.5739, 1.8576, 0.1047, 1.1900, -0.8425,\n", + " 0.5164, 0.6151, 0.8289, 0.5533, 0.7449, 0.3860, -0.8154, -0.2593,\n", + " 0.8808, 5.4481, -0.5331, 0.9876, 1.1169, 0.0491, 0.2732, 0.5407,\n", + " -0.4445, 5.6805, -0.4382, -0.1412, 0.6511, 0.8220, 2.1906, 0.2556,\n", + " 0.1591, -0.3498, -0.4899, -0.1997, 0.2642, 0.0000, -0.7130, -0.5547,\n", + " 1.4417, 0.7845, 0.3542]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3748, 0.3769, 0.1352, 0.2799, 0.1217, -0.0989, -0.3828, -0.4177,\n", + " -0.2208, -0.2805, -0.2751, 0.1934, 0.2691, 0.3470, 0.1857, 0.3337,\n", + " 0.2892, 0.1478, 0.1546, 0.1651, 0.1387, 0.0930, 0.1176, 0.0711,\n", + " 0.0119, -0.0238, -0.0582, 0.0730, 0.1815, 0.1977, 0.2376, 0.1395,\n", + " 0.3114, 0.2648, 0.1872, 0.2245, -0.0331, 0.0236, -0.0358, -0.3129,\n", + " -0.3176, -0.3065, -0.3177]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 6.932417454663664e-05\n", + "Grad encoder.fc1.bias: 0.00014616886619478464\n", + "Grad encoder.encoder.0.weight: 1.915082975756377e-05\n", + "Grad encoder.encoder.0.bias: 0.00013000104809179902\n", + "Grad encoder.encoder.2.weight: 1.604134013177827e-05\n", + "Grad encoder.encoder.2.bias: 0.0002845679991878569\n", + "Grad encoder.encoder.4.weight: 6.438361015170813e-05\n", + "Grad encoder.encoder.4.bias: 0.0014498112723231316\n", + "Grad decoder.fc1.0.weight: 3.9238988392753527e-05\n", + "Grad decoder.fc1.0.bias: 0.0004893477307632565\n", + "Grad decoder.fc1.2.weight: 4.402241756906733e-05\n", + "Grad decoder.fc1.2.bias: 0.00032611959613859653\n", + "Grad decoder.fc1.4.weight: 4.484766395762563e-05\n", + "Grad decoder.fc1.4.bias: 0.0003534788847900927\n", + "Grad decoder.fc2.weight: 9.378961112815887e-05\n", + "Grad decoder.fc2.bias: 0.001897222944535315\n", + "Grad _memory_unit.weight_ih_l0: 7.1681683948554564e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.699463170254603e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.453482557029929e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.1794678509177174e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.0001448517432436347\n", + "Grad _memory_unit.bias_hh_l1: 7.243758591357619e-05\n", + "Data X Sample: tensor([[1.4682, 1.6575, 1.9925, 1.9941, 1.9619, 2.0611, 2.1384, 2.1678, 3.4906,\n", + " 4.1547, 4.4634, 4.3332, 4.3475, 3.8389, 3.9064, 3.8278, 3.6306, 3.6037,\n", + " 3.5498, 3.6283, 3.4547, 3.3802, 2.9110, 2.9489, 2.8734, 2.9723, 2.9410,\n", + " 3.0141, 3.0459, 3.2260, 3.1531, 3.3906, 3.8171, 2.8927, 4.6106, 5.0080,\n", + " 5.1915, 5.5231, 6.0912, 5.8246, 1.2075, 0.6731, 0.7316, 1.2658, 1.9107,\n", + " 1.8813, 1.3054, 1.7671]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6897, -0.1519, 0.1017, 0.0862, -0.4925, 0.1958, 0.2256, 0.2659,\n", + " 0.6938, 0.3270, 0.4769, -0.0587, -3.7820, -0.6490, 0.0867, -0.0547,\n", + " 0.3536, -0.9772, -0.1176, 0.6636, 0.6718, -0.0160, -0.8872, -0.3953,\n", + " 1.0505, 0.1907, -0.4622, -2.0089, -0.5331, -0.5055, -0.5366, -0.8428,\n", + " -0.4557, -0.7167, 0.6983, -0.0377, -0.4532, -0.4097, 1.1339, 0.4369,\n", + " 0.4228, 0.4600, 0.9072]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2948, -0.3343, -0.0899, -0.1673, -0.0353, 0.1515, 0.2114, 0.3464,\n", + " 0.2299, 0.2486, 0.2726, -0.1731, -0.1688, -0.2879, -0.2159, -0.2990,\n", + " -0.2063, -0.1080, -0.0841, -0.1115, -0.1201, -0.0319, -0.0266, -0.0356,\n", + " -0.0512, 0.0050, 0.0028, -0.1289, -0.2312, -0.2942, -0.2639, -0.2592,\n", + " -0.2998, -0.3662, -0.2084, -0.2052, -0.0372, 0.0315, 0.0021, 0.3582,\n", + " 0.3588, 0.3791, 0.3099]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00046158567420206964\n", + "Grad encoder.fc1.bias: 0.0003381617134436965\n", + "Grad encoder.encoder.0.weight: 0.00012726880959235132\n", + "Grad encoder.encoder.0.bias: 0.0003110230027232319\n", + "Grad encoder.encoder.2.weight: 6.335210491670296e-05\n", + "Grad encoder.encoder.2.bias: 0.0003133710124529898\n", + "Grad encoder.encoder.4.weight: 0.00013203492562752217\n", + "Grad encoder.encoder.4.bias: 0.0006704421248286963\n", + "Grad decoder.fc1.0.weight: 4.7295790864154696e-05\n", + "Grad decoder.fc1.0.bias: 0.0003325843717902899\n", + "Grad decoder.fc1.2.weight: 4.126136627746746e-05\n", + "Grad decoder.fc1.2.bias: 0.00022471978445537388\n", + "Grad decoder.fc1.4.weight: 3.7128382246010005e-05\n", + "Grad decoder.fc1.4.bias: 0.0001992164325201884\n", + "Grad decoder.fc2.weight: 8.180527220247313e-05\n", + "Grad decoder.fc2.bias: 0.0016992567107081413\n", + "Grad _memory_unit.weight_ih_l0: 4.487965725274989e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.6318388336221687e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.3805858543491922e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.7529126782610547e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.210129115264863e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.6021447158418596e-05\n", + "Data X Sample: tensor([[1.5902, 1.8527, 1.9219, 2.1363, 2.4007, 2.4913, 2.5729, 2.5511, 2.7217,\n", + " 2.6839, 2.7377, 2.7207, 2.6565, 2.5220, 2.6682, 2.5300, 2.5237, 2.5243,\n", + " 2.5813, 2.5125, 2.4806, 2.5168, 2.5038, 2.4431, 2.4530, 2.5283, 2.5361,\n", + " 2.5654, 2.2411, 2.3384, 2.3097, 2.3018, 2.2594, 1.5150, 2.0148, 1.8631,\n", + " 1.7384, 1.6511, 1.6733, 1.5633, 1.2266, 0.7109, 0.7276, 1.2544, 2.0059,\n", + " 2.1500, 1.4482, 2.1268]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.1136, 0.3083, -0.4698, -1.3628, 2.1407, 1.1391, 0.1613, -0.1120,\n", + " 0.0883, -0.0327, 0.1051, 0.8032, -0.4937, 0.5132, -0.2083, -0.0859,\n", + " 0.7364, 1.0495, -0.2073, -1.0646, -0.3763, 0.0894, -0.9729, -1.8813,\n", + " -1.1251, 2.5101, -0.7081, -0.8673, -0.0619, -0.4716, -0.2676, -0.3284,\n", + " 0.2070, 0.5035, -0.1526, 0.4323, -0.8131, -0.4031, 0.2870, 0.2708,\n", + " -0.2935, 0.9138, 0.4024]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3620, 0.3731, 0.1360, 0.2600, 0.1282, -0.0947, -0.3699, -0.4098,\n", + " -0.2133, -0.2701, -0.2625, 0.1976, 0.2540, 0.3417, 0.1791, 0.3292,\n", + " 0.2832, 0.1329, 0.1569, 0.1638, 0.1429, 0.0897, 0.1039, 0.0582,\n", + " 0.0127, -0.0171, -0.0561, 0.0645, 0.1752, 0.1940, 0.2370, 0.1386,\n", + " 0.3105, 0.2647, 0.1801, 0.2224, -0.0311, 0.0200, -0.0332, -0.3050,\n", + " -0.3097, -0.3094, -0.3113]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00020242820028215647\n", + "Grad encoder.fc1.bias: 0.00010669996845535934\n", + "Grad encoder.encoder.0.weight: 6.061957901692949e-05\n", + "Grad encoder.encoder.0.bias: 0.00011705312499543652\n", + "Grad encoder.encoder.2.weight: 3.254778130212799e-05\n", + "Grad encoder.encoder.2.bias: 0.0001372057304251939\n", + "Grad encoder.encoder.4.weight: 7.267884211614728e-05\n", + "Grad encoder.encoder.4.bias: 0.0004689749039243907\n", + "Grad decoder.fc1.0.weight: 2.4589398890384473e-05\n", + "Grad decoder.fc1.0.bias: 0.00013073263107798994\n", + "Grad decoder.fc1.2.weight: 3.5059943911619484e-05\n", + "Grad decoder.fc1.2.bias: 0.000151116430060938\n", + "Grad decoder.fc1.4.weight: 3.784596992773004e-05\n", + "Grad decoder.fc1.4.bias: 0.00024630833650007844\n", + "Grad decoder.fc2.weight: 7.804723281878978e-05\n", + "Grad decoder.fc2.bias: 0.0020644539035856724\n", + "Grad _memory_unit.weight_ih_l0: 1.6550708323848085e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.647193681099452e-06\n", + "Grad _memory_unit.bias_hh_l0: 4.633973730960861e-06\n", + "Grad _memory_unit.weight_ih_l1: 9.637672064854996e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.991031578858383e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.5015168173704296e-05\n", + "Data X Sample: tensor([[2.7126, 3.0412, 3.0383, 2.6610, 2.8497, 3.2515, 3.8409, 3.9607, 4.0301,\n", + " 3.9382, 4.2319, 4.0742, 3.8238, 3.6835, 3.6845, 3.4120, 3.3759, 3.4354,\n", + " 3.4073, 3.5093, 3.4547, 3.2256, 2.8436, 2.8497, 2.7364, 2.6537, 2.7785,\n", + " 2.7938, 2.6574, 2.8526, 2.8801, 2.8324, 3.1307, 2.3686, 3.7993, 4.2418,\n", + " 4.4777, 4.8288, 5.4510, 5.3565, 1.9234, 1.1650, 1.0994, 1.8428, 2.5688,\n", + " 2.5160, 1.6521, 2.4161]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5668, -0.2972, -0.4308, -0.4509, -0.8791, -0.8932, 0.4109, 0.8020,\n", + " 0.9161, 0.7443, 0.7674, -0.5573, -0.1597, -0.5681, -1.0342, -1.1267,\n", + " -0.2524, 0.9074, -0.2705, 0.7849, 0.1988, 0.3105, 0.9258, 0.1217,\n", + " -0.5168, 1.2996, -0.2261, -1.4187, -0.8262, -0.1826, -1.1177, -0.4538,\n", + " -0.4906, -1.3831, -0.2574, -0.8530, -1.0105, 0.0761, 0.0040, 0.8706,\n", + " 0.9495, 0.7924, 1.5007]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2077, -0.2554, -0.0781, -0.1721, -0.0685, 0.0801, 0.1172, 0.2351,\n", + " 0.1549, 0.1804, 0.1651, -0.1152, -0.1062, -0.1858, -0.1598, -0.2325,\n", + " -0.1858, -0.0899, -0.0396, -0.0904, -0.0803, -0.0345, -0.0349, -0.0442,\n", + " -0.0469, 0.0037, 0.0369, -0.0493, -0.1366, -0.2168, -0.1659, -0.1667,\n", + " -0.2095, -0.2419, -0.1549, -0.1384, -0.0370, 0.0370, -0.0152, 0.2531,\n", + " 0.2837, 0.2661, 0.2318]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 5.602069722954184e-05\n", + "Grad encoder.fc1.bias: 4.009371332358569e-05\n", + "Grad encoder.encoder.0.weight: 1.4566488971468061e-05\n", + "Grad encoder.encoder.0.bias: 3.299821401014924e-05\n", + "Grad encoder.encoder.2.weight: 1.2648686606553383e-05\n", + "Grad encoder.encoder.2.bias: 4.851256016991101e-05\n", + "Grad encoder.encoder.4.weight: 3.6502195143839344e-05\n", + "Grad encoder.encoder.4.bias: 0.00016430467076133937\n", + "Grad decoder.fc1.0.weight: 1.2002422408841085e-05\n", + "Grad decoder.fc1.0.bias: 5.767782568000257e-05\n", + "Grad decoder.fc1.2.weight: 1.786516440915875e-05\n", + "Grad decoder.fc1.2.bias: 8.350877033080906e-05\n", + "Grad decoder.fc1.4.weight: 1.9101997168036178e-05\n", + "Grad decoder.fc1.4.bias: 0.00017397914780303836\n", + "Grad decoder.fc2.weight: 6.488344661192968e-05\n", + "Grad decoder.fc2.bias: 0.0019399648299440742\n", + "Grad _memory_unit.weight_ih_l0: 1.5099916481631226e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.863220733066555e-06\n", + "Grad _memory_unit.bias_hh_l0: 3.707147243403597e-06\n", + "Grad _memory_unit.weight_ih_l1: 7.457165338564664e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.3077019502816256e-05\n", + "Grad _memory_unit.bias_hh_l1: 6.73324711897294e-06\n", + "Data X Sample: tensor([[1.3398, 1.6196, 1.7370, 1.8892, 1.9465, 1.9874, 2.1631, 2.0670, 2.9878,\n", + " 3.8182, 4.0954, 4.1618, 3.9259, 3.6780, 3.6744, 3.5474, 3.4812, 3.3929,\n", + " 3.3680, 3.2973, 3.4645, 3.3894, 2.9062, 2.8707, 2.8377, 2.8444, 2.9170,\n", + " 3.0671, 2.9974, 3.0557, 3.1636, 3.2690, 3.5509, 2.5585, 4.1866, 4.6164,\n", + " 4.9634, 5.3031, 5.6412, 5.6828, 1.1263, 0.6452, 0.6164, 1.1568, 1.8156,\n", + " 1.8584, 1.1830, 1.6499]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.0581, -0.7974, 0.0536, 0.0670, 1.2944, -0.0089, 0.3558, 0.8484,\n", + " 1.0247, 0.8906, 0.8358, 0.2462, -0.7957, -0.2114, -0.7733, -0.4198,\n", + " -0.7762, 1.0063, 0.8952, -0.1136, 1.8031, -1.3344, -1.7941, -4.3443,\n", + " -3.3745, 1.3897, 1.4732, 0.0445, -0.3431, -0.3761, -0.0486, -1.4825,\n", + " 0.2222, -0.1654, 0.9534, 0.0678, 0.5193, -0.0140, 1.1137, 0.6659,\n", + " 1.2371, 0.2146, 1.2232]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2988, -0.3415, -0.0889, -0.1712, -0.0286, 0.1555, 0.2156, 0.3472,\n", + " 0.2308, 0.2500, 0.2727, -0.1751, -0.1749, -0.2916, -0.2241, -0.2958,\n", + " -0.2056, -0.1094, -0.0819, -0.1097, -0.1163, -0.0308, -0.0248, -0.0374,\n", + " -0.0502, 0.0082, 0.0012, -0.1324, -0.2289, -0.2940, -0.2587, -0.2592,\n", + " -0.3028, -0.3676, -0.2086, -0.2086, -0.0424, 0.0367, 0.0064, 0.3620,\n", + " 0.3604, 0.3842, 0.3162]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001984003174584359\n", + "Grad encoder.fc1.bias: 0.00016920431517064571\n", + "Grad encoder.encoder.0.weight: 5.2893836254952475e-05\n", + "Grad encoder.encoder.0.bias: 0.00020615023095160723\n", + "Grad encoder.encoder.2.weight: 2.974330709548667e-05\n", + "Grad encoder.encoder.2.bias: 0.00017029073205776513\n", + "Grad encoder.encoder.4.weight: 8.43426096253097e-05\n", + "Grad encoder.encoder.4.bias: 0.00029772857669740915\n", + "Grad decoder.fc1.0.weight: 2.600693733256776e-05\n", + "Grad decoder.fc1.0.bias: 0.00011319015175104141\n", + "Grad decoder.fc1.2.weight: 3.600686977733858e-05\n", + "Grad decoder.fc1.2.bias: 0.0001853110152296722\n", + "Grad decoder.fc1.4.weight: 4.100096339243464e-05\n", + "Grad decoder.fc1.4.bias: 0.00026756274746730924\n", + "Grad decoder.fc2.weight: 0.00011760195775423199\n", + "Grad decoder.fc2.bias: 0.001753901015035808\n", + "Grad _memory_unit.weight_ih_l0: 2.0712759578600526e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.815869371872395e-06\n", + "Grad _memory_unit.bias_hh_l0: 3.0360411074070726e-06\n", + "Grad _memory_unit.weight_ih_l1: 9.132638183473318e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.917180634336546e-05\n", + "Grad _memory_unit.bias_hh_l1: 9.474340004089754e-06\n", + "Data X Sample: tensor([[1.3992, 1.5526, 1.7385, 1.7230, 1.8970, 2.0154, 2.2124, 2.1238, 3.4028,\n", + " 4.1673, 4.3588, 4.2611, 4.1345, 3.9616, 3.7400, 3.4996, 3.5143, 3.5380,\n", + " 3.5209, 3.5167, 3.4841, 3.3986, 2.9038, 2.8592, 2.7646, 2.8626, 2.9011,\n", + " 3.0467, 3.0529, 3.1212, 3.2406, 3.3353, 3.9029, 2.8675, 4.6523, 4.8936,\n", + " 5.1404, 5.5046, 5.9328, 5.9920, 1.1597, 0.6193, 0.6043, 1.1252, 1.5976,\n", + " 1.8527, 1.1558, 1.6499]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0458, -0.3146, 1.1054, -0.4295, -1.2549, 2.3108, 0.3446, 0.2695,\n", + " 0.1850, 0.2431, 0.2929, 0.1494, -0.1971, -0.5441, -0.0791, 0.8145,\n", + " 0.5324, 0.8843, 1.3103, 0.5720, -0.8430, 1.3970, 0.1470, 0.9298,\n", + " 0.4896, 0.4903, -0.1877, 1.0123, -0.1370, -0.3135, -0.1042, -0.9167,\n", + " -0.0639, -0.3211, -0.4216, -0.0364, -0.4582, -0.7204, 1.1574, 0.3243,\n", + " 0.2868, 0.0143, -0.0398]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3134, -0.3552, -0.0904, -0.1710, -0.0205, 0.1682, 0.2308, 0.3631,\n", + " 0.2422, 0.2607, 0.2886, -0.1847, -0.1872, -0.3093, -0.2350, -0.3041,\n", + " -0.2076, -0.1107, -0.0882, -0.1124, -0.1198, -0.0282, -0.0223, -0.0374,\n", + " -0.0510, 0.0108, -0.0052, -0.1449, -0.2425, -0.3057, -0.2696, -0.2732,\n", + " -0.3171, -0.3867, -0.2156, -0.2197, -0.0439, 0.0375, 0.0098, 0.3792,\n", + " 0.3726, 0.4027, 0.3302]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000138989242259413\n", + "Grad encoder.fc1.bias: 0.000723914010450244\n", + "Grad encoder.encoder.0.weight: 4.090392030775547e-05\n", + "Grad encoder.encoder.0.bias: 0.00047973543405532837\n", + "Grad encoder.encoder.2.weight: 2.8749087505275384e-05\n", + "Grad encoder.encoder.2.bias: 0.00038072597817517817\n", + "Grad encoder.encoder.4.weight: 8.059318497544155e-05\n", + "Grad encoder.encoder.4.bias: 0.0009120157919824123\n", + "Grad decoder.fc1.0.weight: 3.221472434233874e-05\n", + "Grad decoder.fc1.0.bias: 0.0003492283867672086\n", + "Grad decoder.fc1.2.weight: 3.47329732903745e-05\n", + "Grad decoder.fc1.2.bias: 0.0002621954772621393\n", + "Grad decoder.fc1.4.weight: 4.35155670857057e-05\n", + "Grad decoder.fc1.4.bias: 0.00038077300996519625\n", + "Grad decoder.fc2.weight: 0.00013328916975297034\n", + "Grad decoder.fc2.bias: 0.0020595293026417494\n", + "Grad _memory_unit.weight_ih_l0: 5.5425734899472445e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.083845876972191e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.5536317732767202e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.661420467120479e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.809156133793294e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.350589733803645e-05\n", + "Data X Sample: tensor([[1.5764, 1.7828, 1.9564, 2.0466, 2.1411, 2.1244, 2.2124, 2.3523, 2.3067,\n", + " 2.3617, 2.3253, 2.4344, 2.2770, 2.3120, 2.2521, 2.3344, 2.3114, 2.2884,\n", + " 2.3190, 2.3339, 2.4340, 2.4740, 2.5038, 2.4603, 2.4849, 2.6276, 2.5521,\n", + " 2.5369, 2.3660, 2.4727, 2.5232, 2.4234, 2.1406, 1.3571, 1.8212, 1.7804,\n", + " 1.6204, 1.4550, 1.4832, 1.5519, 1.2552, 0.7548, 0.7579, 1.3433, 1.8592,\n", + " 2.0071, 1.4074, 2.0252]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.4440e+00, 2.3659e-01, 1.9534e-01, 5.5173e-01, -9.5061e-02,\n", + " -1.4852e+00, -4.7485e-01, -3.1885e-01, -1.1247e+00, -4.9545e-01,\n", + " -2.8233e-01, 1.3740e+00, 1.3797e-01, 4.4788e-01, -7.7265e-03,\n", + " 1.6701e-01, 1.5002e-01, 8.7934e-02, -6.3940e-02, 6.0446e-01,\n", + " 4.3787e-01, -6.4853e-02, 4.3380e-01, 4.9761e-01, -7.9989e-01,\n", + " 1.4419e+00, 1.1027e-04, -1.1020e-01, 8.2043e-01, 5.6615e-01,\n", + " 6.4734e-01, -7.6003e-02, 6.2963e-01, 7.4946e-01, -5.2708e-01,\n", + " 6.1705e-01, 4.9151e-01, -7.0551e-01, 1.1723e+00, -4.5092e-02,\n", + " -6.0772e-02, -3.2012e-01, -5.2372e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4047, 0.4037, 0.1416, 0.2890, 0.1469, -0.0973, -0.4000, -0.4785,\n", + " -0.2395, -0.2932, -0.2836, 0.2318, 0.2641, 0.3876, 0.2031, 0.3738,\n", + " 0.3119, 0.1449, 0.1619, 0.1632, 0.1609, 0.1043, 0.1168, 0.0628,\n", + " 0.0012, -0.0220, -0.0640, 0.0698, 0.2086, 0.2455, 0.2656, 0.1656,\n", + " 0.3447, 0.3090, 0.2086, 0.2494, -0.0318, 0.0106, -0.0415, -0.3415,\n", + " -0.3559, -0.3415, -0.3414]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00015082189929671586\n", + "Grad encoder.fc1.bias: 0.00010706953617045656\n", + "Grad encoder.encoder.0.weight: 2.2739382984582335e-05\n", + "Grad encoder.encoder.0.bias: 0.00014273992564994842\n", + "Grad encoder.encoder.2.weight: 1.0694779120967723e-05\n", + "Grad encoder.encoder.2.bias: 0.00010541334631852806\n", + "Grad encoder.encoder.4.weight: 3.097570879617706e-05\n", + "Grad encoder.encoder.4.bias: 0.00020425475668162107\n", + "Grad decoder.fc1.0.weight: 1.640476330067031e-05\n", + "Grad decoder.fc1.0.bias: 7.1328817284666e-05\n", + "Grad decoder.fc1.2.weight: 3.161028871545568e-05\n", + "Grad decoder.fc1.2.bias: 0.00012775574577972293\n", + "Grad decoder.fc1.4.weight: 4.5606211642734706e-05\n", + "Grad decoder.fc1.4.bias: 0.00018941075541079044\n", + "Grad decoder.fc2.weight: 9.248840797226876e-05\n", + "Grad decoder.fc2.bias: 0.001443405169993639\n", + "Grad _memory_unit.weight_ih_l0: 1.2560402637973311e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.0426657506031916e-06\n", + "Grad _memory_unit.bias_hh_l0: 2.1310065676516388e-06\n", + "Grad _memory_unit.weight_ih_l1: 4.979482355338405e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.4527689927490428e-05\n", + "Grad _memory_unit.bias_hh_l1: 7.395869943138678e-06\n", + "Data X Sample: tensor([[1.5393, 1.7536, 1.9729, 2.0641, 2.0745, 2.0832, 2.1230, 2.1635, 3.4784,\n", + " 4.1420, 4.4032, 4.3838, 4.1700, 3.9806, 3.8308, 3.5734, 3.5992, 3.6250,\n", + " 3.5952, 3.6134, 3.3933, 3.2869, 2.8508, 2.8688, 2.7983, 2.9619, 3.0396,\n", + " 3.1283, 3.0529, 3.3046, 3.3070, 3.3602, 3.9139, 2.8583, 4.6229, 4.9545,\n", + " 5.1463, 5.4436, 5.9201, 5.8303, 1.1741, 0.6870, 0.7073, 1.2744, 1.7997,\n", + " 2.0071, 1.2918, 1.8844]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1316, -0.8464, -0.3115, 0.8779, 0.6330, -0.0277, 0.1823, 0.0774,\n", + " 0.0424, 0.4435, 0.3420, -0.1889, -0.1569, 0.8643, -0.5744, 0.3102,\n", + " 0.3071, -0.0787, 0.2501, 0.1280, 0.5806, 0.3134, -0.3556, -0.6174,\n", + " 0.1620, 0.2975, -0.2184, 0.0488, -0.3326, -0.5014, -0.2243, 0.7930,\n", + " -0.2091, -0.8313, -0.5307, 0.1335, 0.3346, -0.8262, 0.1656, 0.2444,\n", + " 0.0955, 0.4103, -0.7959]], device='cuda:0')\n", + "Prediction Sample: tensor([[-2.9251e-01, -3.3402e-01, -8.6876e-02, -1.7117e-01, -2.6497e-02,\n", + " 1.5455e-01, 2.0727e-01, 3.3428e-01, 2.2471e-01, 2.4440e-01,\n", + " 2.6243e-01, -1.7145e-01, -1.7485e-01, -2.8712e-01, -2.2413e-01,\n", + " -2.8615e-01, -2.0074e-01, -1.0443e-01, -7.8023e-02, -1.0811e-01,\n", + " -1.0679e-01, -2.5168e-02, -2.3110e-02, -3.9124e-02, -4.7503e-02,\n", + " 1.5650e-02, 2.4597e-04, -1.2312e-01, -2.1822e-01, -2.8583e-01,\n", + " -2.4111e-01, -2.5114e-01, -2.9470e-01, -3.5796e-01, -1.9965e-01,\n", + " -2.0394e-01, -4.4583e-02, 3.7322e-02, 6.5322e-03, 3.5502e-01,\n", + " 3.5477e-01, 3.7711e-01, 3.1252e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00016088547999970615\n", + "Grad encoder.fc1.bias: 0.0010721820872277021\n", + "Grad encoder.encoder.0.weight: 4.4745182094629854e-05\n", + "Grad encoder.encoder.0.bias: 0.0005454387282952666\n", + "Grad encoder.encoder.2.weight: 4.1825027437880635e-05\n", + "Grad encoder.encoder.2.bias: 0.0005444020498543978\n", + "Grad encoder.encoder.4.weight: 0.00010970392031595111\n", + "Grad encoder.encoder.4.bias: 0.0011317133903503418\n", + "Grad decoder.fc1.0.weight: 4.804494892596267e-05\n", + "Grad decoder.fc1.0.bias: 0.0003621784853748977\n", + "Grad decoder.fc1.2.weight: 6.210626452229917e-05\n", + "Grad decoder.fc1.2.bias: 0.0003152733261231333\n", + "Grad decoder.fc1.4.weight: 8.074371726252139e-05\n", + "Grad decoder.fc1.4.bias: 0.0006714350893162191\n", + "Grad decoder.fc2.weight: 0.000136238377308473\n", + "Grad decoder.fc2.bias: 0.0020495853386819363\n", + "Grad _memory_unit.weight_ih_l0: 1.0521501280891243e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.832287908764556e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.408048360142857e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.8919052965648007e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.935191777301952e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.4805372706614435e-05\n", + "Data X Sample: tensor([[2.5237, 2.7295, 3.0428, 3.0459, 3.2441, 3.3163, 3.4218, 3.5292, 3.6639,\n", + " 3.7692, 3.7687, 3.7314, 3.6729, 3.6480, 3.6038, 3.3710, 3.3759, 3.5786,\n", + " 3.5105, 3.4386, 3.1995, 3.1261, 2.9833, 2.8878, 2.7420, 2.6772, 2.6693,\n", + " 2.5695, 2.5117, 2.6529, 2.5861, 2.7412, 2.6247, 1.9246, 3.1473, 3.5900,\n", + " 3.8189, 3.9356, 4.2911, 4.2075, 1.9568, 1.0634, 1.0833, 2.0093, 2.8027,\n", + " 2.7447, 2.0329, 2.8931]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2028, -0.1461, -0.9671, -0.0146, 0.3525, -0.4305, 0.6736, 0.8460,\n", + " 0.8431, 0.9534, 0.9058, -0.1551, -0.3466, -0.8356, -0.9089, -0.9039,\n", + " 0.1539, -0.3960, -0.6318, -0.3598, 0.4226, 0.6889, 0.5992, 0.1363,\n", + " -0.2081, 0.2764, 0.6586, -0.7581, 0.6546, -0.9210, -0.8191, -0.3821,\n", + " -0.5032, -0.6180, -0.8300, 0.5140, 0.1343, 0.1511, 0.0040, 0.6355,\n", + " 0.7154, 0.8246, -0.0292]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1696, -0.2177, -0.0725, -0.1751, -0.0802, 0.0526, 0.0744, 0.1821,\n", + " 0.1212, 0.1497, 0.1169, -0.0892, -0.0826, -0.1431, -0.1371, -0.1992,\n", + " -0.1749, -0.0799, -0.0216, -0.0831, -0.0572, -0.0305, -0.0376, -0.0494,\n", + " -0.0431, 0.0087, 0.0498, -0.0109, -0.0916, -0.1786, -0.1137, -0.1236,\n", + " -0.1680, -0.1858, -0.1256, -0.1092, -0.0369, 0.0386, -0.0231, 0.2072,\n", + " 0.2506, 0.2175, 0.1983]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005587167688645422\n", + "Grad encoder.fc1.bias: 0.00043350987834855914\n", + "Grad encoder.encoder.0.weight: 0.00013372048852033913\n", + "Grad encoder.encoder.0.bias: 0.0005350378341972828\n", + "Grad encoder.encoder.2.weight: 7.633039786014706e-05\n", + "Grad encoder.encoder.2.bias: 0.00046258565271273255\n", + "Grad encoder.encoder.4.weight: 0.00015320567763410509\n", + "Grad encoder.encoder.4.bias: 0.000619964674115181\n", + "Grad decoder.fc1.0.weight: 5.393280298449099e-05\n", + "Grad decoder.fc1.0.bias: 0.0003049717633984983\n", + "Grad decoder.fc1.2.weight: 4.4684587919618934e-05\n", + "Grad decoder.fc1.2.bias: 0.00029402587097138166\n", + "Grad decoder.fc1.4.weight: 4.0592050936538726e-05\n", + "Grad decoder.fc1.4.bias: 0.00022463241475634277\n", + "Grad decoder.fc2.weight: 0.00010222640412393957\n", + "Grad decoder.fc2.bias: 0.0018297242932021618\n", + "Grad _memory_unit.weight_ih_l0: 4.025810994789936e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.6431698895758018e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.217059075832367e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.7351078440697165e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.4852971768705174e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.198722904722672e-05\n", + "Data X Sample: tensor([[1.4332, 1.8469, 2.2059, 2.2871, 2.4553, 2.5311, 2.6006, 2.6476, 2.6875,\n", + " 2.7361, 2.7853, 2.8570, 2.7142, 2.6283, 2.7413, 2.6490, 2.6149, 2.7739,\n", + " 2.8105, 2.6910, 2.7039, 2.7526, 2.6966, 2.6855, 2.3798, 2.4735, 2.2351,\n", + " 2.2514, 1.9011, 1.9029, 1.7148, 1.6497, 1.4344, 0.9543, 1.3555, 1.3645,\n", + " 1.4139, 1.5027, 1.7431, 1.7335, 1.2504, 0.8145, 0.7680, 1.3634, 2.1525,\n", + " 2.2072, 1.4958, 2.2363]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.3975, 0.6246, 0.6859, 0.4766, 0.7998, 2.1428, 0.7531, 0.1895,\n", + " -0.6407, -0.5134, -0.2623, -0.4532, -0.0644, 0.2387, 1.1547, -0.1893,\n", + " 0.1553, 2.0131, -0.9624, -1.5705, -0.6891, 1.4378, -0.7334, -1.0932,\n", + " 0.1136, -0.7003, -1.2386, -0.1107, 0.0438, -0.3359, 0.1738, -0.4957,\n", + " 0.2759, 0.2314, -0.4754, -1.2211, -0.3718, -0.0459, 0.2253, -0.2032,\n", + " -0.4053, -0.4248, -0.8473]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2185, 0.2276, 0.0852, 0.1178, 0.0882, -0.0414, -0.2398, -0.2456,\n", + " -0.1226, -0.1547, -0.1463, 0.1291, 0.1255, 0.2086, 0.0945, 0.1971,\n", + " 0.1584, 0.0595, 0.1013, 0.0920, 0.1042, 0.0604, 0.0353, 0.0156,\n", + " 0.0030, 0.0148, -0.0319, 0.0239, 0.0899, 0.1061, 0.1516, 0.0726,\n", + " 0.1813, 0.1448, 0.1080, 0.1386, -0.0305, 0.0113, -0.0376, -0.1748,\n", + " -0.1513, -0.1734, -0.1629]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00011831634765258059\n", + "Grad encoder.fc1.bias: 0.0011382634984329343\n", + "Grad encoder.encoder.0.weight: 3.560907134669833e-05\n", + "Grad encoder.encoder.0.bias: 0.0007176926592364907\n", + "Grad encoder.encoder.2.weight: 3.416023537283763e-05\n", + "Grad encoder.encoder.2.bias: 0.0005911170737817883\n", + "Grad encoder.encoder.4.weight: 8.598310523666441e-05\n", + "Grad encoder.encoder.4.bias: 0.001263970509171486\n", + "Grad decoder.fc1.0.weight: 4.572881880449131e-05\n", + "Grad decoder.fc1.0.bias: 0.00042135996045544744\n", + "Grad decoder.fc1.2.weight: 5.971302016405389e-05\n", + "Grad decoder.fc1.2.bias: 0.00033336353953927755\n", + "Grad decoder.fc1.4.weight: 6.834985106252134e-05\n", + "Grad decoder.fc1.4.bias: 0.00040325208101421595\n", + "Grad decoder.fc2.weight: 8.715052535990253e-05\n", + "Grad decoder.fc2.bias: 0.0021671440917998552\n", + "Grad _memory_unit.weight_ih_l0: 1.0038772416010033e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.858927372377366e-05\n", + "Grad _memory_unit.bias_hh_l0: 3.412639125599526e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.9514326342905406e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.947182115865871e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.8635156417731196e-05\n", + "Data X Sample: tensor([[1.6146, 1.8687, 2.1878, 2.1909, 2.3955, 2.5812, 2.6376, 2.6448, 2.6827,\n", + " 2.6887, 2.7726, 2.8842, 2.5988, 2.6610, 2.7110, 2.5054, 2.5488, 2.6133,\n", + " 2.6474, 2.6055, 2.6253, 2.6332, 2.6074, 2.6225, 2.6651, 2.7320, 2.6693,\n", + " 2.7000, 2.4180, 2.5939, 2.4707, 2.3461, 2.3760, 1.5150, 1.9732, 1.8874,\n", + " 1.7207, 1.6882, 1.6670, 1.6030, 1.2838, 0.7667, 0.7821, 1.3807, 1.9821,\n", + " 2.2415, 1.3734, 1.9704]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.3746, 0.4280, 0.6677, -0.5924, -1.2629, -2.6147, -2.7188, -2.0129,\n", + " -0.9502, -1.7898, -3.2771, 0.0119, 1.6481, 0.5308, 1.2317, 1.6442,\n", + " 0.1906, 0.6480, 2.6957, 1.7510, 1.5030, 1.2301, 0.0597, 0.6024,\n", + " 0.6778, 0.3241, 0.0922, 1.1606, 1.1259, 2.2910, 1.4908, 1.4512,\n", + " 0.8480, 0.5219, -0.0881, -0.9966, -0.5002, -0.7172, -0.6047, -3.4306,\n", + " -1.5128, -0.9027, 1.7105]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4052, 0.4088, 0.1443, 0.2765, 0.1567, -0.0907, -0.3893, -0.4742,\n", + " -0.2392, -0.2908, -0.2770, 0.2329, 0.2528, 0.3847, 0.2196, 0.3932,\n", + " 0.3059, 0.1426, 0.1381, 0.1491, 0.1565, 0.1158, 0.1011, 0.0579,\n", + " 0.0098, -0.0175, -0.0642, 0.0550, 0.2088, 0.2677, 0.2660, 0.1653,\n", + " 0.3382, 0.3005, 0.2192, 0.2523, -0.0258, 0.0057, -0.0488, -0.3394,\n", + " -0.3506, -0.3416, -0.3446]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001832240232033655\n", + "Grad encoder.fc1.bias: 0.0003636481415014714\n", + "Grad encoder.encoder.0.weight: 5.2239734941395e-05\n", + "Grad encoder.encoder.0.bias: 0.0003395071835257113\n", + "Grad encoder.encoder.2.weight: 3.1688265153206885e-05\n", + "Grad encoder.encoder.2.bias: 0.0002577883715275675\n", + "Grad encoder.encoder.4.weight: 7.433362043229863e-05\n", + "Grad encoder.encoder.4.bias: 0.00022058654576539993\n", + "Grad decoder.fc1.0.weight: 2.608404975035228e-05\n", + "Grad decoder.fc1.0.bias: 0.00011175588588230312\n", + "Grad decoder.fc1.2.weight: 2.765025055850856e-05\n", + "Grad decoder.fc1.2.bias: 0.00010902274516411126\n", + "Grad decoder.fc1.4.weight: 2.4488026610924862e-05\n", + "Grad decoder.fc1.4.bias: 0.00010791053500724956\n", + "Grad decoder.fc2.weight: 9.217803017236292e-05\n", + "Grad decoder.fc2.bias: 0.0017979120602831244\n", + "Grad _memory_unit.weight_ih_l0: 3.7140364383958513e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.61217870604014e-06\n", + "Grad _memory_unit.bias_hh_l0: 4.054642886330839e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.562827037560055e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.2732674551662058e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.1707892554113641e-05\n", + "Data X Sample: tensor([[1.6496, 1.9765, 2.1397, 2.2500, 2.3272, 2.4766, 2.5775, 2.5454, 2.5753,\n", + " 2.6571, 2.5981, 2.7343, 2.5965, 2.5929, 2.5673, 2.5984, 2.5315, 2.5360,\n", + " 2.5751, 2.6817, 2.6572, 2.6745, 2.6194, 2.6607, 2.7570, 2.7216, 2.7279,\n", + " 2.7163, 2.3937, 2.4858, 2.4182, 2.3958, 2.1648, 1.3731, 1.8751, 1.7853,\n", + " 1.7305, 1.5769, 1.5339, 1.5689, 1.3411, 0.8304, 0.7862, 1.3261, 2.0019,\n", + " 2.2758, 1.4278, 2.2597]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0931, -0.2374, 0.3280, 1.1145, 0.4536, 0.5143, -0.1590, -0.1879,\n", + " -0.7214, -0.5507, -0.8010, -0.7359, -0.1094, 0.9559, 1.4502, 0.8338,\n", + " 0.5617, 0.3358, 0.1836, 0.6959, 0.1133, -2.8567, 0.7737, -0.0152,\n", + " 0.6298, 0.2500, -1.2860, -0.6094, -1.3552, -0.5032, 0.6878, 0.0259,\n", + " 1.7317, 0.5355, 0.0333, 0.7176, 0.4756, -0.7725, -0.2505, -0.5639,\n", + " -0.6133, -0.3597, -0.7405]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3867, 0.3920, 0.1386, 0.2566, 0.1483, -0.0895, -0.3706, -0.4543,\n", + " -0.2250, -0.2743, -0.2620, 0.2238, 0.2385, 0.3668, 0.2146, 0.3787,\n", + " 0.2904, 0.1342, 0.1253, 0.1396, 0.1494, 0.1134, 0.0914, 0.0526,\n", + " 0.0139, -0.0131, -0.0621, 0.0494, 0.1985, 0.2561, 0.2562, 0.1590,\n", + " 0.3232, 0.2847, 0.2084, 0.2382, -0.0252, 0.0044, -0.0500, -0.3235,\n", + " -0.3318, -0.3252, -0.3276]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00016442465130239725\n", + "Grad encoder.fc1.bias: 0.00015929563960526139\n", + "Grad encoder.encoder.0.weight: 4.245563832228072e-05\n", + "Grad encoder.encoder.0.bias: 0.00014197059499565512\n", + "Grad encoder.encoder.2.weight: 1.9692888599820435e-05\n", + "Grad encoder.encoder.2.bias: 0.0001379938912577927\n", + "Grad encoder.encoder.4.weight: 5.830366717418656e-05\n", + "Grad encoder.encoder.4.bias: 0.00033436849480494857\n", + "Grad decoder.fc1.0.weight: 2.6898062060354277e-05\n", + "Grad decoder.fc1.0.bias: 0.00017513222701381892\n", + "Grad decoder.fc1.2.weight: 3.111444675596431e-05\n", + "Grad decoder.fc1.2.bias: 0.00012648297706618905\n", + "Grad decoder.fc1.4.weight: 3.197266778443009e-05\n", + "Grad decoder.fc1.4.bias: 0.0001741068554110825\n", + "Grad decoder.fc2.weight: 9.70002802205272e-05\n", + "Grad decoder.fc2.bias: 0.0017779947957023978\n", + "Grad _memory_unit.weight_ih_l0: 2.64725485976669e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.2678259736276232e-05\n", + "Grad _memory_unit.bias_hh_l0: 6.668721653113607e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.492471483288682e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.769743489101529e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.907107071019709e-05\n", + "Data X Sample: tensor([[1.9360, 2.3916, 2.7588, 2.9759, 2.9590, 3.1970, 3.3417, 3.3162, 3.3027,\n", + " 3.3853, 3.2865, 3.2893, 3.3222, 3.2254, 3.2003, 3.2343, 3.1023, 3.3387,\n", + " 3.4506, 3.3400, 3.0547, 2.9638, 2.9014, 2.8478, 2.6595, 2.6772, 2.5148,\n", + " 2.5817, 2.1925, 2.1518, 2.2047, 2.2908, 2.0042, 1.3617, 1.9560, 2.2498,\n", + " 2.4601, 2.8358, 3.0551, 2.9705, 1.6991, 1.0336, 0.9701, 1.8457, 2.6956,\n", + " 2.8019, 1.9989, 2.6742]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0140, -0.7782, -1.3414, 0.2064, -0.0950, 0.5441, 0.9615, 0.7835,\n", + " 0.1664, 0.7327, 0.5866, -0.7271, -1.1515, -0.8643, -0.5989, -0.2592,\n", + " -0.3267, -1.0826, 0.0253, -0.0197, 0.0659, -0.4554, -0.4034, -0.2287,\n", + " -0.4600, -0.2783, 1.9267, 0.5622, -0.4497, -0.3592, -0.3700, -0.9569,\n", + " 0.4562, -0.4646, -0.9762, -0.2417, 0.5692, 0.0761, 1.8119, 0.8137,\n", + " 0.9310, 0.7795, 0.8643]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1604, -0.2060, -0.0696, -0.1773, -0.0839, 0.0440, 0.0653, 0.1689,\n", + " 0.1125, 0.1412, 0.1044, -0.0797, -0.0757, -0.1323, -0.1293, -0.1875,\n", + " -0.1707, -0.0771, -0.0215, -0.0814, -0.0492, -0.0288, -0.0404, -0.0519,\n", + " -0.0383, 0.0102, 0.0529, 0.0007, -0.0776, -0.1664, -0.0961, -0.1099,\n", + " -0.1556, -0.1710, -0.1151, -0.1029, -0.0380, 0.0351, -0.0241, 0.1942,\n", + " 0.2418, 0.2031, 0.1886]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00021989298693370074\n", + "Grad encoder.fc1.bias: 0.00030215500737540424\n", + "Grad encoder.encoder.0.weight: 6.587205280084163e-05\n", + "Grad encoder.encoder.0.bias: 0.0002977602125611156\n", + "Grad encoder.encoder.2.weight: 3.295634815003723e-05\n", + "Grad encoder.encoder.2.bias: 0.00027143245097249746\n", + "Grad encoder.encoder.4.weight: 9.67673840932548e-05\n", + "Grad encoder.encoder.4.bias: 0.0005905540310777724\n", + "Grad decoder.fc1.0.weight: 4.259992056176998e-05\n", + "Grad decoder.fc1.0.bias: 0.00026047887513414025\n", + "Grad decoder.fc1.2.weight: 5.681451511918567e-05\n", + "Grad decoder.fc1.2.bias: 0.00026132911443710327\n", + "Grad decoder.fc1.4.weight: 7.339486182900146e-05\n", + "Grad decoder.fc1.4.bias: 0.0005056714871898293\n", + "Grad decoder.fc2.weight: 0.00010378676233813167\n", + "Grad decoder.fc2.bias: 0.0015935224946588278\n", + "Grad _memory_unit.weight_ih_l0: 4.732039997179527e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.3045715352054685e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.1712442756106611e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.2855108454677975e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.248321733437479e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.12804440909531e-05\n", + "Data X Sample: tensor([[2.5556, 2.9480, 3.1886, 3.3673, 3.4046, 3.6051, 3.7561, 3.6569, 3.8934,\n", + " 3.8735, 3.9686, 3.9787, 3.8105, 3.8334, 3.7375, 3.7184, 3.5819, 3.5747,\n", + " 3.5787, 3.4516, 3.4277, 3.3282, 3.0773, 2.9241, 2.8340, 2.7712, 2.7972,\n", + " 2.8428, 2.7684, 2.9050, 2.9186, 3.0314, 3.0031, 2.1764, 3.5738, 3.9402,\n", + " 4.2338, 4.5266, 5.0834, 5.0075, 2.0045, 1.1172, 1.1580, 1.8887, 2.8066,\n", + " 3.1965, 2.1145, 3.0260]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.5570, 0.4460, 0.1276, 0.5896, 0.3216, 1.5590, 0.6028, 0.1675,\n", + " -0.5745, -0.3600, -0.6303, -0.8638, 0.3483, 0.2554, -0.1706, -0.0359,\n", + " -0.2383, -0.6123, 0.1698, -1.1568, 0.1035, -0.6864, -0.5428, -0.2083,\n", + " -0.8780, -1.1395, -0.1157, 0.3098, 0.4423, -0.1699, 0.5439, 0.2307,\n", + " -0.1047, 1.1485, -1.2273, 0.1454, 0.6097, -0.0920, -0.4768, -0.6315,\n", + " 0.6511, -0.1231, 0.3857]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1706, -0.2154, -0.0704, -0.1772, -0.0784, 0.0529, 0.0776, 0.1818,\n", + " 0.1211, 0.1493, 0.1167, -0.0869, -0.0838, -0.1455, -0.1371, -0.1941,\n", + " -0.1722, -0.0800, -0.0280, -0.0834, -0.0519, -0.0281, -0.0394, -0.0509,\n", + " -0.0375, 0.0118, 0.0477, -0.0085, -0.0873, -0.1751, -0.1050, -0.1200,\n", + " -0.1662, -0.1859, -0.1212, -0.1114, -0.0401, 0.0333, -0.0207, 0.2069,\n", + " 0.2506, 0.2167, 0.1983]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00024947209749370813\n", + "Grad encoder.fc1.bias: 0.0003097183653153479\n", + "Grad encoder.encoder.0.weight: 6.967105582589284e-05\n", + "Grad encoder.encoder.0.bias: 0.0003510814858600497\n", + "Grad encoder.encoder.2.weight: 3.911538078682497e-05\n", + "Grad encoder.encoder.2.bias: 0.0002437917864881456\n", + "Grad encoder.encoder.4.weight: 0.00012923782924190164\n", + "Grad encoder.encoder.4.bias: 0.0004746854247059673\n", + "Grad decoder.fc1.0.weight: 4.189564424450509e-05\n", + "Grad decoder.fc1.0.bias: 0.00021185510559007525\n", + "Grad decoder.fc1.2.weight: 5.550557034439407e-05\n", + "Grad decoder.fc1.2.bias: 0.00022353290114551783\n", + "Grad decoder.fc1.4.weight: 6.774405483156443e-05\n", + "Grad decoder.fc1.4.bias: 0.00032119062962010503\n", + "Grad decoder.fc2.weight: 9.446560579817742e-05\n", + "Grad decoder.fc2.bias: 0.0023089570458978415\n", + "Grad _memory_unit.weight_ih_l0: 5.597412837232696e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.592750777490437e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.187637831724714e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.057356141449418e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.9274178561754525e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.0203235180815682e-05\n", + "Data X Sample: tensor([[1.5414, 1.8323, 1.9339, 2.0138, 2.1138, 2.2703, 2.4050, 2.5127, 2.5460,\n", + " 2.5623, 2.6172, 2.6077, 2.4257, 2.4811, 2.4916, 2.4165, 2.3523, 2.3483,\n", + " 2.5173, 2.5608, 2.4561, 2.4908, 2.4146, 2.4164, 2.4830, 2.5649, 2.4162,\n", + " 2.4064, 2.2099, 2.2762, 2.3937, 2.3820, 2.2572, 1.5310, 1.9389, 1.7926,\n", + " 1.6066, 1.4629, 1.5719, 1.5803, 1.1216, 0.7209, 0.7215, 1.2515, 1.7284,\n", + " 2.0471, 1.3190, 1.8532]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2372, 0.2309, 0.1176, 1.1518, 1.2117, 0.1584, -0.1575, -0.0357,\n", + " -0.5499, -0.3085, -0.2486, 0.1704, -0.0906, -0.5237, -0.7666, 0.3601,\n", + " -0.1502, 0.3361, 0.1510, 0.8137, 0.3999, 0.0820, 0.4499, 0.3307,\n", + " -0.4134, 0.5705, -0.2621, -0.8029, 1.1998, 0.6014, 0.4752, 0.2886,\n", + " 0.8255, 0.3116, 0.5190, 0.7722, -0.6306, 0.9093, -0.0156, -0.1829,\n", + " -0.0654, -0.0917, -0.0734]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 3.9685e-01, 3.9249e-01, 1.4722e-01, 2.5124e-01, 1.4848e-01,\n", + " -9.1794e-02, -3.5571e-01, -4.5328e-01, -2.2498e-01, -2.6862e-01,\n", + " -2.5607e-01, 2.2068e-01, 2.3648e-01, 3.6339e-01, 2.2926e-01,\n", + " 3.8583e-01, 2.9319e-01, 1.1794e-01, 9.8096e-02, 1.3464e-01,\n", + " 1.4611e-01, 1.1213e-01, 7.9053e-02, 5.0974e-02, 2.0011e-02,\n", + " -5.3576e-05, -6.7183e-02, 3.5631e-02, 1.9924e-01, 2.5651e-01,\n", + " 2.6180e-01, 1.6293e-01, 3.2470e-01, 2.7307e-01, 2.0595e-01,\n", + " 2.2684e-01, -2.8019e-02, -6.7601e-03, -5.9002e-02, -3.2163e-01,\n", + " -3.3439e-01, -3.2388e-01, -3.2664e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002221480681328103\n", + "Grad encoder.fc1.bias: 0.0001574521156726405\n", + "Grad encoder.encoder.0.weight: 6.31592411082238e-05\n", + "Grad encoder.encoder.0.bias: 0.00017011314048431814\n", + "Grad encoder.encoder.2.weight: 3.6228295357432216e-05\n", + "Grad encoder.encoder.2.bias: 0.0001530753361294046\n", + "Grad encoder.encoder.4.weight: 0.00010427524102851748\n", + "Grad encoder.encoder.4.bias: 0.00042231171391904354\n", + "Grad decoder.fc1.0.weight: 2.976901851070579e-05\n", + "Grad decoder.fc1.0.bias: 0.00013629002205561846\n", + "Grad decoder.fc1.2.weight: 3.725643182406202e-05\n", + "Grad decoder.fc1.2.bias: 0.00017077761003747582\n", + "Grad decoder.fc1.4.weight: 3.9035381632857025e-05\n", + "Grad decoder.fc1.4.bias: 0.00019060890190303326\n", + "Grad decoder.fc2.weight: 7.828779052942991e-05\n", + "Grad decoder.fc2.bias: 0.0018145728390663862\n", + "Grad _memory_unit.weight_ih_l0: 2.498375806680997e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.1084488505730405e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.787129339296371e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.2656527133003692e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.450539588811807e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.7442966054659337e-05\n", + "Data X Sample: tensor([[2.6998, 3.0266, 3.3013, 3.2973, 3.5532, 3.7642, 3.8486, 3.9579, 3.8861,\n", + " 3.9777, 4.1240, 3.9515, 3.8038, 3.5744, 3.4575, 3.5338, 3.4482, 3.4857,\n", + " 3.5043, 3.3698, 3.1234, 3.2700, 3.0002, 2.7848, 2.7308, 2.8496, 2.7146,\n", + " 2.7367, 2.7129, 2.8363, 2.8626, 2.8683, 3.0361, 2.2404, 3.6571, 4.0764,\n", + " 4.3675, 4.6035, 5.3243, 5.1834, 1.9568, 1.1511, 1.1580, 2.0466, 2.8304,\n", + " 3.0764, 2.0397, 3.0886]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4928, -0.6067, 0.4764, -0.3225, -0.6666, -1.4035, -2.2895, -2.3731,\n", + " -0.5188, -1.2882, 0.4357, 0.6647, -0.6861, -0.3680, -0.7193, 0.1729,\n", + " 1.0081, -0.7656, 0.6651, 0.0539, 0.8734, 1.7159, -0.6761, -1.6215,\n", + " -1.3229, -0.6087, -0.4062, 0.9463, 1.2910, 1.6685, 0.4858, 0.3527,\n", + " 0.5702, -0.0982, 0.9397, -1.6297, -0.5257, -0.1220, 0.2890, 1.1653,\n", + " 0.7052, 0.3507, 0.2189]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2001, -0.2421, -0.0734, -0.1753, -0.0621, 0.0786, 0.1118, 0.2187,\n", + " 0.1461, 0.1729, 0.1515, -0.1066, -0.1058, -0.1837, -0.1595, -0.2128,\n", + " -0.1774, -0.0886, -0.0452, -0.0885, -0.0608, -0.0265, -0.0365, -0.0475,\n", + " -0.0352, 0.0163, 0.0327, -0.0349, -0.1172, -0.2007, -0.1321, -0.1505,\n", + " -0.1972, -0.2291, -0.1375, -0.1351, -0.0449, 0.0291, -0.0108, 0.2433,\n", + " 0.2752, 0.2542, 0.2253]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 8.913189958548173e-05\n", + "Grad encoder.fc1.bias: 0.00013721035793423653\n", + "Grad encoder.encoder.0.weight: 3.292038672952913e-05\n", + "Grad encoder.encoder.0.bias: 0.00015955571143422276\n", + "Grad encoder.encoder.2.weight: 2.494809996278491e-05\n", + "Grad encoder.encoder.2.bias: 0.0001383760099997744\n", + "Grad encoder.encoder.4.weight: 7.37816808396019e-05\n", + "Grad encoder.encoder.4.bias: 0.00018378958338871598\n", + "Grad decoder.fc1.0.weight: 2.970102104882244e-05\n", + "Grad decoder.fc1.0.bias: 0.00010514505993342027\n", + "Grad decoder.fc1.2.weight: 4.0370279748458415e-05\n", + "Grad decoder.fc1.2.bias: 0.00018004985759034753\n", + "Grad decoder.fc1.4.weight: 5.61665219720453e-05\n", + "Grad decoder.fc1.4.bias: 0.00039654754800722003\n", + "Grad decoder.fc2.weight: 8.94151016836986e-05\n", + "Grad decoder.fc2.bias: 0.0018287698039785028\n", + "Grad _memory_unit.weight_ih_l0: 3.3052640446840087e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.57668692333391e-06\n", + "Grad _memory_unit.bias_hh_l0: 4.519179128692485e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.3017931905778823e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.131696601281874e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.066336699295789e-05\n", + "Data X Sample: tensor([[1.4862, 1.6910, 1.8873, 2.0182, 2.1002, 2.2246, 2.2109, 2.7413, 3.9325,\n", + " 4.2589, 4.3683, 4.3585, 4.2366, 3.9534, 3.8459, 3.6664, 3.6180, 3.7333,\n", + " 3.4424, 3.5316, 3.4547, 3.2899, 2.9472, 2.8268, 2.8415, 2.8626, 2.8771,\n", + " 2.9896, 2.8794, 3.1507, 3.3280, 3.2220, 3.6961, 2.7370, 4.4415, 4.8207,\n", + " 5.1207, 5.4463, 6.0912, 5.9126, 1.2122, 0.6791, 0.6245, 1.2343, 1.8037,\n", + " 1.9270, 1.3190, 1.8610]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0858, 1.0479, 1.0757, -0.0418, 0.6880, 1.3081, 0.3528, -0.3444,\n", + " -0.1293, -0.5305, 0.0946, 0.9761, 0.4030, 0.9825, 0.1663, -0.0691,\n", + " 0.2469, 0.1336, -1.1930, -1.1460, -0.8644, 0.2727, -1.0969, -0.8264,\n", + " -0.9634, 0.0068, -0.3743, -1.4735, -0.3576, -0.0488, -0.0800, -0.3649,\n", + " 0.1997, -0.6336, 1.0445, -0.2481, 0.4852, -0.6722, -0.7577, -1.0764,\n", + " -0.1130, -0.0574, -1.3121]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2400, -0.2773, -0.0778, -0.1727, -0.0407, 0.1137, 0.1554, 0.2673,\n", + " 0.1789, 0.2032, 0.1978, -0.1326, -0.1358, -0.2325, -0.1900, -0.2390,\n", + " -0.1837, -0.0981, -0.0656, -0.0959, -0.0734, -0.0245, -0.0322, -0.0438,\n", + " -0.0336, 0.0215, 0.0132, -0.0701, -0.1568, -0.2350, -0.1699, -0.1915,\n", + " -0.2377, -0.2851, -0.1592, -0.1662, -0.0501, 0.0250, 0.0010, 0.2914,\n", + " 0.3083, 0.3045, 0.2611]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001074987740139477\n", + "Grad encoder.fc1.bias: 0.00038989249151200056\n", + "Grad encoder.encoder.0.weight: 3.059727168874815e-05\n", + "Grad encoder.encoder.0.bias: 0.0002438363735564053\n", + "Grad encoder.encoder.2.weight: 1.7678448784863576e-05\n", + "Grad encoder.encoder.2.bias: 0.000213749342947267\n", + "Grad encoder.encoder.4.weight: 4.9043999752029777e-05\n", + "Grad encoder.encoder.4.bias: 0.00046668207505717874\n", + "Grad decoder.fc1.0.weight: 2.4015555027290247e-05\n", + "Grad decoder.fc1.0.bias: 0.0001975595369003713\n", + "Grad decoder.fc1.2.weight: 3.3650954719632864e-05\n", + "Grad decoder.fc1.2.bias: 0.00015626108506694436\n", + "Grad decoder.fc1.4.weight: 3.271456444053911e-05\n", + "Grad decoder.fc1.4.bias: 0.0001809436798794195\n", + "Grad decoder.fc2.weight: 7.067099068081006e-05\n", + "Grad decoder.fc2.bias: 0.0016180620295926929\n", + "Grad _memory_unit.weight_ih_l0: 3.898154773196438e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.5121563592401799e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.080356565187685e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.066832621494541e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.8082609282573685e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.4438360924250446e-05\n", + "Data X Sample: tensor([[1.5987, 1.8804, 1.9309, 2.1363, 2.2470, 2.4751, 2.5483, 2.5383, 2.5484,\n", + " 2.6081, 2.6647, 2.7460, 2.5566, 2.5601, 2.3832, 2.4342, 2.3523, 2.4566,\n", + " 2.4842, 2.4455, 2.4462, 2.4923, 2.5737, 2.4317, 2.4774, 2.4656, 2.5148,\n", + " 2.5165, 2.2341, 2.4301, 2.2327, 2.1775, 1.8788, 1.2243, 1.7158, 1.6588,\n", + " 1.5437, 1.5848, 1.5339, 1.3647, 1.3554, 0.7667, 0.7215, 1.2773, 1.8909,\n", + " 2.2873, 1.3870, 2.2832]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5944, 0.8153, 0.5386, 0.1079, 0.6139, 0.3798, -0.2022, -0.2001,\n", + " -0.2150, -0.3884, -0.4896, 0.0748, 0.1920, 1.0079, 0.0580, 1.1340,\n", + " 0.5644, -0.8158, -0.1859, 0.1511, 0.8534, 5.5971, 8.3184, 0.0355,\n", + " -0.3685, -1.8591, -0.6692, -0.4098, -0.7858, -0.2753, -0.9250, 0.6230,\n", + " 0.5281, -0.0329, -0.4220, 0.5228, -0.0630, -0.7725, -0.5970, -0.2342,\n", + " -0.4686, -0.1125, 0.1361]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3262, 0.3207, 0.1269, 0.1947, 0.1316, -0.0717, -0.2857, -0.3577,\n", + " -0.1844, -0.2125, -0.2005, 0.1795, 0.1859, 0.2843, 0.1880, 0.3116,\n", + " 0.2359, 0.0681, 0.0635, 0.1184, 0.1219, 0.0924, 0.0499, 0.0342,\n", + " 0.0260, 0.0240, -0.0620, 0.0064, 0.1468, 0.1920, 0.2170, 0.1294,\n", + " 0.2550, 0.2016, 0.1605, 0.1771, -0.0319, -0.0157, -0.0641, -0.2525,\n", + " -0.2565, -0.2566, -0.2541]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004035038291476667\n", + "Grad encoder.fc1.bias: 0.000289793882984668\n", + "Grad encoder.encoder.0.weight: 0.00010777622810564935\n", + "Grad encoder.encoder.0.bias: 0.0003936230787076056\n", + "Grad encoder.encoder.2.weight: 6.410095375031233e-05\n", + "Grad encoder.encoder.2.bias: 0.0003161478671245277\n", + "Grad encoder.encoder.4.weight: 0.0001757332356646657\n", + "Grad encoder.encoder.4.bias: 0.0011058388045057654\n", + "Grad decoder.fc1.0.weight: 5.1837527280440554e-05\n", + "Grad decoder.fc1.0.bias: 0.0003413324011489749\n", + "Grad decoder.fc1.2.weight: 7.056362665025517e-05\n", + "Grad decoder.fc1.2.bias: 0.00042372223106212914\n", + "Grad decoder.fc1.4.weight: 8.616999548394233e-05\n", + "Grad decoder.fc1.4.bias: 0.0008584444876760244\n", + "Grad decoder.fc2.weight: 0.0001293435343541205\n", + "Grad decoder.fc2.bias: 0.002951523521915078\n", + "Grad _memory_unit.weight_ih_l0: 5.048054390499601e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.7665269954013638e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.480902483308455e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.0897069791535614e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.271344606531784e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.7012312279548496e-05\n", + "Data X Sample: tensor([[1.6772, 1.8876, 2.0015, 2.2172, 2.2811, 2.4500, 2.5406, 2.5141, 2.6094,\n", + " 2.6760, 2.7187, 2.6116, 2.5632, 2.5601, 2.4790, 2.5778, 2.4875, 2.5766,\n", + " 2.4966, 2.4567, 2.4634, 2.5750, 2.4773, 2.4679, 2.5093, 2.5257, 2.4109,\n", + " 2.5695, 2.2619, 2.4105, 2.3062, 2.3765, 2.0900, 1.3228, 1.8531, 1.7074,\n", + " 1.6223, 1.6008, 1.5846, 1.4753, 1.3029, 0.8006, 0.7559, 1.2744, 1.8988,\n", + " 2.2473, 1.4822, 2.0408]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7532, 0.4327, 0.8491, -0.4723, -1.7246, -2.1011, -2.5063, -1.9909,\n", + " -0.4587, -1.5672, -1.3106, 0.0460, -0.4150, 0.6058, 0.3219, 0.4612,\n", + " -0.6290, -0.4582, -0.1531, -0.4451, 1.2527, -2.5062, -0.0811, 0.7897,\n", + " -0.2684, -0.5093, 0.6517, 1.7203, 1.7630, 0.7270, 0.8128, -0.2560,\n", + " 3.1203, 0.1055, 0.3922, -0.1180, 0.4927, 0.4193, -0.6028, -1.3294,\n", + " -0.6500, -0.2676, -0.2916]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3201, 0.3187, 0.1272, 0.1913, 0.1388, -0.0669, -0.2753, -0.3447,\n", + " -0.1818, -0.2078, -0.1932, 0.1740, 0.1793, 0.2739, 0.1884, 0.3091,\n", + " 0.2327, 0.0584, 0.0569, 0.1211, 0.1216, 0.0915, 0.0456, 0.0317,\n", + " 0.0308, 0.0297, -0.0670, -0.0052, 0.1376, 0.1860, 0.2126, 0.1272,\n", + " 0.2461, 0.1931, 0.1548, 0.1730, -0.0320, -0.0154, -0.0663, -0.2439,\n", + " -0.2482, -0.2533, -0.2485]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001621348492335528\n", + "Grad encoder.fc1.bias: 0.00011204050679225475\n", + "Grad encoder.encoder.0.weight: 3.657614070107229e-05\n", + "Grad encoder.encoder.0.bias: 7.808255031704903e-05\n", + "Grad encoder.encoder.2.weight: 3.1687977752881125e-05\n", + "Grad encoder.encoder.2.bias: 0.00012471071386244148\n", + "Grad encoder.encoder.4.weight: 8.021695975912735e-05\n", + "Grad encoder.encoder.4.bias: 0.00034971412969753146\n", + "Grad decoder.fc1.0.weight: 3.0426685043494217e-05\n", + "Grad decoder.fc1.0.bias: 0.0001500275102443993\n", + "Grad decoder.fc1.2.weight: 4.4195272494107485e-05\n", + "Grad decoder.fc1.2.bias: 0.0002215211425209418\n", + "Grad decoder.fc1.4.weight: 4.737973358714953e-05\n", + "Grad decoder.fc1.4.bias: 0.0003792145289480686\n", + "Grad decoder.fc2.weight: 6.826828757766634e-05\n", + "Grad decoder.fc2.bias: 0.0015509951626881957\n", + "Grad _memory_unit.weight_ih_l0: 2.5857368655124446e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.053468602360226e-06\n", + "Grad _memory_unit.bias_hh_l0: 5.017987859901041e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.5270468338712817e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.852525696856901e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.9291186617920175e-05\n", + "Data X Sample: tensor([[1.5032, 1.6895, 1.8888, 2.0204, 2.2453, 2.3322, 2.4974, 2.5141, 2.6363,\n", + " 2.6444, 2.6076, 2.7557, 2.5899, 2.5547, 2.5849, 2.5929, 2.4875, 2.5147,\n", + " 2.4883, 2.5645, 2.4070, 2.4663, 2.4556, 2.3878, 2.3254, 2.4291, 2.3896,\n", + " 2.4961, 2.2168, 2.3253, 2.2397, 2.3267, 2.2396, 1.4601, 1.9389, 1.7196,\n", + " 1.6990, 1.5186, 1.5783, 1.5973, 1.1645, 0.6791, 0.7296, 1.1855, 1.8394,\n", + " 2.0929, 1.3054, 1.8766]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4604, 0.4105, 1.0291, -2.1874, 0.6092, 1.8558, 0.1090, -0.0381,\n", + " -0.0920, -0.1946, -0.3886, 0.0994, 1.1647, -0.2980, 1.1910, 0.6533,\n", + " 1.0497, -0.0270, 0.7839, 0.5819, 0.0150, -0.8947, 0.8931, -4.6493,\n", + " 1.0475, 0.9262, 0.3007, -2.8104, -0.3488, 0.5606, -0.0083, 0.4062,\n", + " 0.1217, 0.9932, 0.8277, 0.4603, 0.0213, -0.0869, 0.5046, -0.2397,\n", + " -0.3275, -0.3617, -0.3102]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3299, 0.3285, 0.1309, 0.2027, 0.1491, -0.0684, -0.2794, -0.3553,\n", + " -0.1902, -0.2145, -0.1990, 0.1790, 0.1851, 0.2791, 0.2019, 0.3220,\n", + " 0.2400, 0.0556, 0.0537, 0.1259, 0.1246, 0.0944, 0.0478, 0.0339,\n", + " 0.0350, 0.0306, -0.0737, -0.0086, 0.1414, 0.1957, 0.2196, 0.1347,\n", + " 0.2519, 0.2026, 0.1596, 0.1791, -0.0314, -0.0145, -0.0714, -0.2511,\n", + " -0.2583, -0.2651, -0.2595]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00022076291497796774\n", + "Grad encoder.fc1.bias: 0.000607799447607249\n", + "Grad encoder.encoder.0.weight: 6.882869638502598e-05\n", + "Grad encoder.encoder.0.bias: 0.0006591998389922082\n", + "Grad encoder.encoder.2.weight: 4.22737211920321e-05\n", + "Grad encoder.encoder.2.bias: 0.0004586371942423284\n", + "Grad encoder.encoder.4.weight: 9.721959941089153e-05\n", + "Grad encoder.encoder.4.bias: 0.0007769285584799945\n", + "Grad decoder.fc1.0.weight: 3.540949910529889e-05\n", + "Grad decoder.fc1.0.bias: 0.0002615301054902375\n", + "Grad decoder.fc1.2.weight: 4.0769904444459826e-05\n", + "Grad decoder.fc1.2.bias: 0.0002555662940721959\n", + "Grad decoder.fc1.4.weight: 3.4143045922974125e-05\n", + "Grad decoder.fc1.4.bias: 0.00026069837622344494\n", + "Grad decoder.fc2.weight: 8.876292122295126e-05\n", + "Grad decoder.fc2.bias: 0.0017421895172446966\n", + "Grad _memory_unit.weight_ih_l0: 8.107618668873329e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.6533703678287566e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.832565430959221e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.926910499605583e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.711520887212828e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.3436394258169457e-05\n", + "Data X Sample: tensor([[2.5863, 2.9159, 3.1450, 3.3607, 3.4268, 3.7995, 3.7284, 3.7989, 4.0008,\n", + " 3.8103, 4.0447, 3.9612, 3.6951, 3.6862, 3.5962, 3.4503, 3.3806, 3.4142,\n", + " 3.3598, 3.4367, 3.3222, 3.1981, 2.9207, 2.7829, 2.7514, 2.6772, 2.7572,\n", + " 2.8061, 2.8239, 2.7839, 2.8941, 2.9264, 3.0273, 2.1512, 3.6130, 4.0035,\n", + " 4.4108, 4.6512, 5.3243, 5.1153, 1.8804, 1.1192, 1.1318, 1.8830, 2.9018,\n", + " 3.1393, 2.1621, 3.0651]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.4173, -0.1707, -0.7830, -1.0744, -0.4363, -0.2947, 0.1659, 0.8260,\n", + " 1.5042, 0.8914, 0.6285, -0.0655, -0.5048, -0.0983, -0.6234, -1.1894,\n", + " -0.3973, -0.7710, 0.5834, -0.0896, 0.1362, 1.3111, 1.5225, 1.2348,\n", + " 1.1848, 0.3359, 0.1689, -0.0797, 0.2367, -0.3207, 0.2218, -0.7632,\n", + " -0.5200, -0.5929, -0.5629, -1.0991, 1.0246, 0.7816, -0.9960, 0.7770,\n", + " 0.8139, 1.2123, 0.7294]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2155, -0.2549, -0.0749, -0.1729, -0.0480, 0.0924, 0.1325, 0.2375,\n", + " 0.1541, 0.1838, 0.1706, -0.1187, -0.1178, -0.2065, -0.1732, -0.2241,\n", + " -0.1810, -0.1024, -0.0596, -0.0937, -0.0612, -0.0279, -0.0386, -0.0468,\n", + " -0.0300, 0.0259, 0.0178, -0.0467, -0.1327, -0.2134, -0.1482, -0.1646,\n", + " -0.2165, -0.2505, -0.1475, -0.1493, -0.0505, 0.0209, -0.0083, 0.2639,\n", + " 0.2873, 0.2704, 0.2353]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003032421227544546\n", + "Grad encoder.fc1.bias: 0.0014237461145967245\n", + "Grad encoder.encoder.0.weight: 8.821675146464258e-05\n", + "Grad encoder.encoder.0.bias: 0.0008592575322836637\n", + "Grad encoder.encoder.2.weight: 5.2385646995389834e-05\n", + "Grad encoder.encoder.2.bias: 0.0005207898793742061\n", + "Grad encoder.encoder.4.weight: 0.0001380492903990671\n", + "Grad encoder.encoder.4.bias: 0.0007690241909585893\n", + "Grad decoder.fc1.0.weight: 4.2972580558853224e-05\n", + "Grad decoder.fc1.0.bias: 0.00024922622833400965\n", + "Grad decoder.fc1.2.weight: 6.086888606660068e-05\n", + "Grad decoder.fc1.2.bias: 0.0002657429431565106\n", + "Grad decoder.fc1.4.weight: 7.157487561926246e-05\n", + "Grad decoder.fc1.4.bias: 0.00046171637950465083\n", + "Grad decoder.fc2.weight: 9.564161155140027e-05\n", + "Grad decoder.fc2.bias: 0.0018742027459666133\n", + "Grad _memory_unit.weight_ih_l0: 7.19824174666428e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.080494934692979e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.5471661754418164e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.2369918042386416e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.6110016885213554e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.804507312248461e-05\n", + "Data X Sample: tensor([[2.0814, 2.5212, 2.8174, 2.8950, 3.0461, 3.1719, 3.1368, 3.1743, 3.3295,\n", + " 3.3743, 3.2929, 3.5152, 3.2978, 3.3890, 3.1902, 3.1563, 3.1306, 3.2227,\n", + " 3.2731, 3.2080, 3.1529, 3.2670, 3.0122, 2.9699, 2.8040, 2.7477, 2.6187,\n", + " 2.6674, 2.2341, 2.4203, 2.2537, 2.1720, 2.1098, 1.4166, 2.2207, 2.3131,\n", + " 2.5387, 2.8093, 3.0805, 2.9421, 1.7086, 0.9439, 1.0348, 1.8055, 2.5450,\n", + " 2.8534, 1.7609, 2.6663]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2836, -0.1919, -1.0220, -0.4714, -0.4582, -0.3828, -0.4318, -0.2297,\n", + " 0.6177, -0.2896, -0.0723, -0.3020, 0.2365, 0.1475, 0.9520, 1.2445,\n", + " 0.8707, 0.6601, 2.3254, 4.2625, 0.3426, -0.5049, 0.6624, -0.2180,\n", + " -0.9628, -0.9112, -0.0789, 0.0578, -0.0211, -0.1842, 0.1449, 0.1052,\n", + " -0.1021, 0.4928, -0.6770, -1.5060, 0.0000, -0.5073, 0.4404, 0.0125,\n", + " 0.1174, 0.3925, -0.5791]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1059, -0.1642, -0.0521, -0.1522, -0.0556, 0.0486, 0.0445, 0.1689,\n", + " 0.0381, 0.0840, 0.0474, -0.0899, -0.0634, -0.0868, -0.1099, -0.1327,\n", + " -0.1430, -0.0869, -0.0332, -0.0405, -0.0353, 0.0031, -0.0158, -0.0190,\n", + " -0.0384, 0.0064, 0.0589, -0.0297, -0.0640, -0.1108, -0.0905, -0.0701,\n", + " -0.1417, -0.1607, -0.0936, -0.0551, -0.0691, 0.0083, -0.0255, 0.1379,\n", + " 0.2048, 0.1686, 0.1326]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 9.887379565043375e-05\n", + "Grad encoder.fc1.bias: 4.1490162402624264e-05\n", + "Grad encoder.encoder.0.weight: 2.8083786673960276e-05\n", + "Grad encoder.encoder.0.bias: 3.9407961594406515e-05\n", + "Grad encoder.encoder.2.weight: 1.361355316475965e-05\n", + "Grad encoder.encoder.2.bias: 4.0358398109674454e-05\n", + "Grad encoder.encoder.4.weight: 4.009152326034382e-05\n", + "Grad encoder.encoder.4.bias: 8.273239654954523e-05\n", + "Grad decoder.fc1.0.weight: 1.5945706763886847e-05\n", + "Grad decoder.fc1.0.bias: 5.633552063954994e-05\n", + "Grad decoder.fc1.2.weight: 1.8178665413870476e-05\n", + "Grad decoder.fc1.2.bias: 8.998648263514042e-05\n", + "Grad decoder.fc1.4.weight: 1.8144197383662686e-05\n", + "Grad decoder.fc1.4.bias: 0.0001463002699892968\n", + "Grad decoder.fc2.weight: 4.833529965253547e-05\n", + "Grad decoder.fc2.bias: 0.0015743530821055174\n", + "Grad _memory_unit.weight_ih_l0: 9.74898739514174e-07\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.400085915927775e-06\n", + "Grad _memory_unit.bias_hh_l0: 1.8788293800753308e-06\n", + "Grad _memory_unit.weight_ih_l1: 6.120129114606243e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.5780435205670074e-05\n", + "Grad _memory_unit.bias_hh_l1: 7.980268492246978e-06\n", + "Data X Sample: tensor([[1.5117, 1.6560, 1.7986, 1.9067, 2.0062, 2.0802, 2.0198, 4.0686, 4.6428,\n", + " 4.5369, 4.4761, 4.4150, 4.2454, 4.0324, 3.9695, 3.8114, 3.7580, 3.7198,\n", + " 3.7026, 3.5576, 3.7246, 3.5578, 3.2002, 2.9069, 2.8528, 2.9097, 2.7785,\n", + " 2.7653, 2.8655, 3.0819, 3.1566, 3.2303, 3.6829, 2.7828, 4.5567, 4.9326,\n", + " 5.0774, 5.7325, 6.2053, 6.0686, 1.0022, 0.6412, 0.6245, 1.1654, 1.5817,\n", + " 1.8012, 1.3122, 1.7750]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4816, -0.2893, -0.2022, -2.2519, -0.0218, 0.2458, 0.1715, 0.2202,\n", + " 0.3489, 0.4419, 0.1487, -0.4665, 0.3536, -1.0816, -0.5290, -0.5745,\n", + " -0.6518, 3.2367, 0.7834, -0.3775, 0.7085, -0.7100, -1.1316, 0.9187,\n", + " -0.2025, 0.3070, -0.4489, -0.2660, -0.3807, -0.1471, 0.4554, -1.1024,\n", + " -0.1089, -0.3264, 0.3123, -1.8352, 0.5757, -0.6143, 0.9794, 0.2862,\n", + " 0.4312, 0.5211, -0.0241]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2353, -0.2730, -0.0765, -0.1713, -0.0371, 0.1074, 0.1541, 0.2610,\n", + " 0.1682, 0.1978, 0.1939, -0.1347, -0.1342, -0.2302, -0.1896, -0.2381,\n", + " -0.1862, -0.1096, -0.0702, -0.0975, -0.0669, -0.0242, -0.0371, -0.0442,\n", + " -0.0272, 0.0323, 0.0050, -0.0621, -0.1529, -0.2302, -0.1682, -0.1841,\n", + " -0.2385, -0.2777, -0.1602, -0.1655, -0.0547, 0.0184, -0.0039, 0.2861,\n", + " 0.3031, 0.2945, 0.2507]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00026854799943976104\n", + "Grad encoder.fc1.bias: 0.000674697570502758\n", + "Grad encoder.encoder.0.weight: 7.182926492532715e-05\n", + "Grad encoder.encoder.0.bias: 0.0006314090569503605\n", + "Grad encoder.encoder.2.weight: 4.551722668111324e-05\n", + "Grad encoder.encoder.2.bias: 0.0004406562075018883\n", + "Grad encoder.encoder.4.weight: 0.0001383278431603685\n", + "Grad encoder.encoder.4.bias: 0.0007596751675009727\n", + "Grad decoder.fc1.0.weight: 4.4121705286670476e-05\n", + "Grad decoder.fc1.0.bias: 0.000240604582359083\n", + "Grad decoder.fc1.2.weight: 6.122214836068451e-05\n", + "Grad decoder.fc1.2.bias: 0.0002914374053943902\n", + "Grad decoder.fc1.4.weight: 7.479614578187466e-05\n", + "Grad decoder.fc1.4.bias: 0.0004765852936543524\n", + "Grad decoder.fc2.weight: 0.00010413400013931096\n", + "Grad decoder.fc2.bias: 0.0020250650122761726\n", + "Grad _memory_unit.weight_ih_l0: 7.039692718535662e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.478698115737643e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.2259033610462211e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.3326761038333643e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.7481865951558575e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.8525297238957137e-05\n", + "Data X Sample: tensor([[2.6086, 2.8402, 2.3125, 2.1188, 2.2419, 2.3926, 3.7423, 4.1283, 4.2205,\n", + " 4.0930, 4.0479, 4.1053, 3.9259, 3.9697, 3.6795, 3.6527, 3.5803, 3.5844,\n", + " 3.4816, 3.4386, 3.5037, 3.3986, 3.1833, 2.9527, 2.7402, 2.7138, 2.7652,\n", + " 2.6837, 2.6470, 2.8199, 2.7716, 2.8849, 3.1483, 2.3068, 3.8949, 4.2296,\n", + " 4.5347, 4.9798, 5.4764, 5.5352, 1.9186, 0.9917, 0.8670, 1.3261, 1.7363,\n", + " 1.9156, 1.3802, 1.7124]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2525, 0.1458, 0.1777, 0.2027, -0.1680, 0.7992, -1.9166, -1.5254,\n", + " -1.1334, -0.6730, -0.5807, -0.3224, 0.0330, -0.9511, 0.1694, -0.4014,\n", + " -0.1709, 0.1899, 0.0384, -0.9916, -0.6748, 2.9153, 2.0910, 0.0363,\n", + " -1.2979, 0.1906, 0.1385, 0.9778, -0.0939, 0.9078, 1.1105, 0.0153,\n", + " 0.1731, -0.3884, 1.0670, 0.2258, -0.4777, -0.7034, -0.2955, -0.4456,\n", + " 0.1831, 0.3910, 0.6987]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1665, -0.2124, -0.0698, -0.1745, -0.0724, 0.0473, 0.0793, 0.1773,\n", + " 0.1095, 0.1449, 0.1140, -0.0890, -0.0830, -0.1484, -0.1357, -0.1918,\n", + " -0.1760, -0.0956, -0.0374, -0.0836, -0.0452, -0.0286, -0.0450, -0.0491,\n", + " -0.0280, 0.0250, 0.0370, -0.0027, -0.0856, -0.1704, -0.1009, -0.1129,\n", + " -0.1686, -0.1811, -0.1219, -0.1121, -0.0466, 0.0238, -0.0253, 0.2029,\n", + " 0.2458, 0.2081, 0.1900]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 8.587801130488515e-05\n", + "Grad encoder.fc1.bias: 0.0006235111504793167\n", + "Grad encoder.encoder.0.weight: 3.4189291909569874e-05\n", + "Grad encoder.encoder.0.bias: 0.0007489048293791711\n", + "Grad encoder.encoder.2.weight: 3.215562901459634e-05\n", + "Grad encoder.encoder.2.bias: 0.0004706693289335817\n", + "Grad encoder.encoder.4.weight: 8.789784624241292e-05\n", + "Grad encoder.encoder.4.bias: 0.000514256942551583\n", + "Grad decoder.fc1.0.weight: 4.239087502355687e-05\n", + "Grad decoder.fc1.0.bias: 0.00023061571118887514\n", + "Grad decoder.fc1.2.weight: 6.208506238181144e-05\n", + "Grad decoder.fc1.2.bias: 0.00023609132040292025\n", + "Grad decoder.fc1.4.weight: 6.973603740334511e-05\n", + "Grad decoder.fc1.4.bias: 0.0002976962714456022\n", + "Grad decoder.fc2.weight: 0.00011605141480686143\n", + "Grad decoder.fc2.bias: 0.0017376410542055964\n", + "Grad _memory_unit.weight_ih_l0: 9.428677913092542e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.410249362583272e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.1982610885752365e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.8447225304262247e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.519492722465657e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.2676254957332276e-05\n", + "Data X Sample: tensor([[1.5202, 1.7857, 1.9173, 1.9263, 2.1394, 2.2777, 2.3249, 2.3523, 2.4752,\n", + " 2.4312, 2.4807, 2.5863, 2.4190, 2.3884, 2.4235, 2.3686, 2.3507, 2.2980,\n", + " 2.3996, 2.3841, 2.3604, 2.3653, 2.3423, 2.4126, 2.2972, 2.3820, 2.3736,\n", + " 2.3860, 2.2411, 2.2631, 2.1592, 2.2853, 2.2044, 1.4463, 1.8776, 1.7658,\n", + " 1.5810, 1.4868, 1.5276, 1.5150, 1.1788, 0.6333, 0.7215, 1.2601, 1.7680,\n", + " 1.8241, 1.2442, 1.7593]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4083, 0.7957, 0.2868, 0.0796, -0.0230, 1.1665, 1.1510, -0.6793,\n", + " 0.0716, -0.1007, -0.0385, -0.3060, -1.0916, -2.3220, 1.6904, 0.5559,\n", + " -0.3019, -0.3886, 0.9198, -0.5678, -0.2536, 0.2458, 2.1731, 1.2084,\n", + " 0.7019, -0.1923, 0.3586, -0.0240, -0.2783, -0.9180, 1.0269, -0.6620,\n", + " -0.1315, -0.6248, 0.8851, -0.2743, 0.0501, 0.3805, 0.2870, 0.3092,\n", + " -0.3126, 0.0292, -0.1694]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3656, 0.3563, 0.1363, 0.2346, 0.1614, -0.0899, -0.3092, -0.4031,\n", + " -0.2273, -0.2448, -0.2275, 0.1876, 0.1862, 0.2967, 0.2482, 0.3585,\n", + " 0.2540, 0.0374, 0.0410, 0.1394, 0.1250, 0.0934, 0.0548, 0.0389,\n", + " 0.0633, 0.0444, -0.0886, -0.0064, 0.1577, 0.2340, 0.2514, 0.1714,\n", + " 0.2772, 0.2494, 0.1738, 0.1903, -0.0301, -0.0107, -0.0844, -0.2842,\n", + " -0.2873, -0.2972, -0.2861]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002029160677921027\n", + "Grad encoder.fc1.bias: 0.000813094899058342\n", + "Grad encoder.encoder.0.weight: 5.686876465915702e-05\n", + "Grad encoder.encoder.0.bias: 0.0009803709108382463\n", + "Grad encoder.encoder.2.weight: 4.437177994986996e-05\n", + "Grad encoder.encoder.2.bias: 0.0006400077836588025\n", + "Grad encoder.encoder.4.weight: 0.00014333383296616375\n", + "Grad encoder.encoder.4.bias: 0.0011832918971776962\n", + "Grad decoder.fc1.0.weight: 5.43405840289779e-05\n", + "Grad decoder.fc1.0.bias: 0.0004056828038301319\n", + "Grad decoder.fc1.2.weight: 6.671523442491889e-05\n", + "Grad decoder.fc1.2.bias: 0.00033002824056893587\n", + "Grad decoder.fc1.4.weight: 6.193591980263591e-05\n", + "Grad decoder.fc1.4.bias: 0.00023443593818228692\n", + "Grad decoder.fc2.weight: 0.00010812713298946619\n", + "Grad decoder.fc2.bias: 0.0017688778461888433\n", + "Grad _memory_unit.weight_ih_l0: 1.2686274203588255e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.026778697152622e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.0122808564337902e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.1083494579652324e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 9.66033258009702e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.811577673535794e-05\n", + "Data X Sample: tensor([[2.4696, 2.8154, 3.1300, 3.1574, 3.1793, 3.4327, 3.5528, 3.6498, 3.6517,\n", + " 3.7471, 3.7465, 3.9612, 3.8016, 3.6780, 3.7854, 3.6144, 3.5473, 3.4838,\n", + " 3.5209, 3.3717, 3.3663, 3.1261, 2.9183, 2.8859, 2.7589, 2.6850, 2.7385,\n", + " 2.6837, 2.5949, 2.5841, 2.6316, 2.7606, 2.7435, 1.9635, 3.3532, 3.7164,\n", + " 3.9133, 4.0999, 4.5130, 4.4401, 1.9711, 1.1451, 1.0893, 1.9633, 2.7432,\n", + " 2.9277, 2.0465, 2.7993]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1987, -0.6965, 1.0525, -1.8932, -1.5096, 0.4993, -0.2788, 0.0462,\n", + " 0.2449, -0.1666, 0.0836, 0.4305, -1.9282, -0.5817, -0.0456, 0.4265,\n", + " -0.4796, -0.7398, -1.4783, 2.5543, 0.5384, -0.3383, 0.4883, 0.5712,\n", + " 2.2624, 0.8621, -0.8900, -0.5895, 0.2212, 0.0397, 0.0422, 0.0746,\n", + " -0.3010, 0.1676, -1.3201, -0.8663, -0.8471, -0.5073, 0.7565, -0.1049,\n", + " -0.2147, -0.0027, 0.7220]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1632, -0.2085, -0.0690, -0.1734, -0.0735, 0.0435, 0.0742, 0.1724,\n", + " 0.1046, 0.1411, 0.1098, -0.0885, -0.0817, -0.1451, -0.1320, -0.1883,\n", + " -0.1781, -0.0951, -0.0355, -0.0824, -0.0447, -0.0294, -0.0459, -0.0489,\n", + " -0.0276, 0.0268, 0.0362, 0.0017, -0.0842, -0.1671, -0.0970, -0.1092,\n", + " -0.1656, -0.1755, -0.1199, -0.1098, -0.0472, 0.0238, -0.0272, 0.1968,\n", + " 0.2422, 0.2036, 0.1851]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 5.75911471969448e-05\n", + "Grad encoder.fc1.bias: 0.0005434462800621986\n", + "Grad encoder.encoder.0.weight: 1.7604741515242495e-05\n", + "Grad encoder.encoder.0.bias: 0.0001779887534212321\n", + "Grad encoder.encoder.2.weight: 9.305049388785847e-06\n", + "Grad encoder.encoder.2.bias: 0.00012334567145444453\n", + "Grad encoder.encoder.4.weight: 3.0110444640740752e-05\n", + "Grad encoder.encoder.4.bias: 0.000290427211439237\n", + "Grad decoder.fc1.0.weight: 1.3785262126475573e-05\n", + "Grad decoder.fc1.0.bias: 0.00010744426981545985\n", + "Grad decoder.fc1.2.weight: 2.0652729290304706e-05\n", + "Grad decoder.fc1.2.bias: 0.00011220629676245153\n", + "Grad decoder.fc1.4.weight: 3.132996062049642e-05\n", + "Grad decoder.fc1.4.bias: 0.00016444984066765755\n", + "Grad decoder.fc2.weight: 0.00011753461876651272\n", + "Grad decoder.fc2.bias: 0.001917117740958929\n", + "Grad _memory_unit.weight_ih_l0: 4.287041065254016e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.252376659977017e-05\n", + "Grad _memory_unit.bias_hh_l0: 6.633082193729933e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.3745127489528386e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.800214108196087e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.9138551579089835e-05\n", + "Data X Sample: tensor([[1.5679, 1.8192, 2.0120, 2.1188, 2.1497, 2.1849, 2.1847, 2.3296, 2.3605,\n", + " 2.4407, 2.4554, 2.3876, 2.3835, 2.2657, 2.2697, 2.2360, 2.2611, 2.3251,\n", + " 2.3046, 2.3451, 2.4364, 2.4296, 2.4917, 2.4488, 2.4211, 2.5283, 2.4588,\n", + " 2.5246, 2.1717, 2.1321, 2.0437, 2.0089, 1.6918, 1.0573, 1.5001, 1.4764,\n", + " 1.4395, 1.3781, 1.3121, 1.2966, 1.1932, 0.7747, 0.7983, 1.2515, 1.9504,\n", + " 2.1500, 1.4550, 1.9001]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.0135, -0.4814, 0.3877, 0.7761, -1.3990, 1.0248, -0.8289, -0.4697,\n", + " -1.3201, -0.2090, -0.3298, 0.4843, 1.4311, -1.0997, -0.1886, 0.7213,\n", + " 1.2038, -0.4801, -0.6053, 0.6102, -0.2936, 0.4469, -1.7168, -0.0028,\n", + " -0.7080, -0.7815, 0.1820, 0.4309, 0.7206, 0.0158, 0.6498, 0.0399,\n", + " 0.8907, 0.5908, 0.2047, -0.8059, 0.9839, 0.0182, 0.0000, -0.7021,\n", + " -0.4461, -0.9246, -1.1236]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3381, 0.3279, 0.1233, 0.2181, 0.1480, -0.0897, -0.2964, -0.3758,\n", + " -0.2137, -0.2283, -0.2139, 0.1669, 0.1547, 0.2642, 0.2330, 0.3274,\n", + " 0.2240, 0.0252, 0.0370, 0.1283, 0.1119, 0.0802, 0.0493, 0.0313,\n", + " 0.0638, 0.0460, -0.0851, -0.0033, 0.1409, 0.2128, 0.2337, 0.1660,\n", + " 0.2535, 0.2303, 0.1586, 0.1734, -0.0360, -0.0074, -0.0880, -0.2638,\n", + " -0.2579, -0.2656, -0.2630]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0011781507637351751\n", + "Grad encoder.fc1.bias: 0.00041067099664360285\n", + "Grad encoder.encoder.0.weight: 0.0003194971359334886\n", + "Grad encoder.encoder.0.bias: 0.00044211538624949753\n", + "Grad encoder.encoder.2.weight: 0.0001566180435474962\n", + "Grad encoder.encoder.2.bias: 0.0003305581340100616\n", + "Grad encoder.encoder.4.weight: 0.0003911486128345132\n", + "Grad encoder.encoder.4.bias: 0.0010141010861843824\n", + "Grad decoder.fc1.0.weight: 8.811207953840494e-05\n", + "Grad decoder.fc1.0.bias: 0.00017283266060985625\n", + "Grad decoder.fc1.2.weight: 7.870064291637391e-05\n", + "Grad decoder.fc1.2.bias: 0.00026801577769219875\n", + "Grad decoder.fc1.4.weight: 8.649555093143135e-05\n", + "Grad decoder.fc1.4.bias: 0.0004523032403085381\n", + "Grad decoder.fc2.weight: 5.5289037845795974e-05\n", + "Grad decoder.fc2.bias: 0.002624441171064973\n", + "Grad _memory_unit.weight_ih_l0: 4.2426836444064975e-07\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.0256197192102263e-07\n", + "Grad _memory_unit.bias_hh_l0: 1.8449092920036492e-07\n", + "Grad _memory_unit.weight_ih_l1: 6.60173441247025e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.23102717124857e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.5843692128546536e-05\n", + "Data X Sample: tensor([[1.4088, 1.6895, 1.8016, 1.9329, 2.0660, 2.1023, 2.0383, 2.7782, 3.9520,\n", + " 4.1547, 4.3461, 4.4189, 4.1145, 4.0352, 3.8585, 3.8127, 3.7753, 3.6308,\n", + " 3.4672, 3.5799, 3.4252, 3.2425, 2.8990, 2.8382, 2.8265, 2.9567, 2.9756,\n", + " 3.0263, 2.9627, 3.0721, 3.1986, 3.3630, 3.8215, 2.8171, 4.6670, 4.7769,\n", + " 4.9831, 5.3694, 5.8630, 5.9211, 1.1645, 0.6592, 0.6346, 1.0965, 1.6332,\n", + " 1.9156, 1.3394, 1.8375]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6056, -0.5621, -1.0023, 0.2248, -0.7095, -0.4384, -0.7354, 0.5448,\n", + " -0.7757, -0.6204, -0.6648, -1.3749, -0.4008, -1.2011, -0.0380, 0.1580,\n", + " -0.2076, 0.3465, -1.5333, -1.0851, -0.3516, -0.5277, -0.4923, -0.0746,\n", + " -0.4035, -0.5526, -0.1111, 1.0493, -0.5847, 0.4531, 0.8967, 0.1462,\n", + " -1.0042, -0.2084, -0.6640, -0.3565, -0.0182, 0.5417, 0.2870, 1.0928,\n", + " -0.0322, 0.3604, 0.1835]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2300, -0.2659, -0.0741, -0.1686, -0.0386, 0.0991, 0.1444, 0.2525,\n", + " 0.1588, 0.1916, 0.1861, -0.1358, -0.1344, -0.2250, -0.1829, -0.2325,\n", + " -0.1949, -0.1084, -0.0653, -0.0958, -0.0659, -0.0252, -0.0400, -0.0422,\n", + " -0.0257, 0.0393, 0.0013, -0.0533, -0.1517, -0.2251, -0.1608, -0.1774,\n", + " -0.2347, -0.2672, -0.1565, -0.1619, -0.0578, 0.0170, -0.0094, 0.2732,\n", + " 0.2954, 0.2862, 0.2401]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003165177768096328\n", + "Grad encoder.fc1.bias: 0.0001938664063345641\n", + "Grad encoder.encoder.0.weight: 8.449502638541162e-05\n", + "Grad encoder.encoder.0.bias: 0.00020533308270387352\n", + "Grad encoder.encoder.2.weight: 5.168882489670068e-05\n", + "Grad encoder.encoder.2.bias: 0.00023772980784997344\n", + "Grad encoder.encoder.4.weight: 0.0001405722287017852\n", + "Grad encoder.encoder.4.bias: 0.0008806837722659111\n", + "Grad decoder.fc1.0.weight: 4.315690603107214e-05\n", + "Grad decoder.fc1.0.bias: 0.0002857487415894866\n", + "Grad decoder.fc1.2.weight: 5.884782149223611e-05\n", + "Grad decoder.fc1.2.bias: 0.00038667855551466346\n", + "Grad decoder.fc1.4.weight: 6.785622099414468e-05\n", + "Grad decoder.fc1.4.bias: 0.0007844280335120857\n", + "Grad decoder.fc2.weight: 9.239684004569426e-05\n", + "Grad decoder.fc2.bias: 0.002812732709571719\n", + "Grad _memory_unit.weight_ih_l0: 3.6449418985284865e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.7935932191903703e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.729017619974911e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.2543158593180124e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.285301788011566e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.151544296997599e-05\n", + "Data X Sample: tensor([[1.4905, 1.7930, 2.1112, 2.2456, 2.3511, 2.4721, 2.5683, 2.5269, 2.5240,\n", + " 2.6539, 2.5188, 2.5025, 2.2526, 2.2384, 2.1688, 2.2141, 2.2186, 2.1433,\n", + " 2.0691, 1.9732, 1.9163, 1.8662, 1.8363, 1.7579, 1.7004, 1.7030, 1.5930,\n", + " 1.6518, 1.2420, 1.2675, 1.1268, 1.1219, 1.0604, 0.7438, 1.1839, 1.3158,\n", + " 1.3824, 1.6511, 1.8825, 1.8299, 1.3507, 0.7229, 0.7761, 1.4553, 1.9861,\n", + " 2.2072, 1.5026, 2.2050]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.0830, -0.8181, -0.8945, -1.0114, -0.9881, -0.2904, 0.9855, 2.0073,\n", + " 1.1803, 1.9455, 2.2714, -2.2781, -1.5283, -0.7655, -1.6397, -1.3254,\n", + " -1.4358, -1.0058, -0.7413, -0.0097, -0.0879, -0.2787, -0.4009, -0.2489,\n", + " -0.0422, 0.0384, 0.6758, 0.9137, 0.4579, -1.0685, -1.1069, -1.2091,\n", + " 1.0916, -1.2733, -1.0695, -1.8250, -1.0681, 0.8588, -0.2536, 5.1415,\n", + " 4.3068, 3.7481, 2.9193]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2338, -0.2692, -0.0749, -0.1681, -0.0379, 0.1012, 0.1482, 0.2574,\n", + " 0.1618, 0.1951, 0.1903, -0.1389, -0.1388, -0.2313, -0.1860, -0.2358,\n", + " -0.1986, -0.1095, -0.0665, -0.0976, -0.0675, -0.0257, -0.0405, -0.0414,\n", + " -0.0255, 0.0411, -0.0012, -0.0558, -0.1565, -0.2285, -0.1640, -0.1802,\n", + " -0.2392, -0.2726, -0.1582, -0.1655, -0.0595, 0.0169, -0.0093, 0.2775,\n", + " 0.2990, 0.2915, 0.2431]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004051385330967605\n", + "Grad encoder.fc1.bias: 0.00037042004987597466\n", + "Grad encoder.encoder.0.weight: 0.0001093343089451082\n", + "Grad encoder.encoder.0.bias: 0.0003512717375997454\n", + "Grad encoder.encoder.2.weight: 6.492070679087192e-05\n", + "Grad encoder.encoder.2.bias: 0.0002939897822216153\n", + "Grad encoder.encoder.4.weight: 0.00017221106099896133\n", + "Grad encoder.encoder.4.bias: 0.000577302707824856\n", + "Grad decoder.fc1.0.weight: 4.239850022713654e-05\n", + "Grad decoder.fc1.0.bias: 0.00016881291230674833\n", + "Grad decoder.fc1.2.weight: 6.270511948969215e-05\n", + "Grad decoder.fc1.2.bias: 0.0002808625577017665\n", + "Grad decoder.fc1.4.weight: 7.95764644863084e-05\n", + "Grad decoder.fc1.4.bias: 0.0005411232705228031\n", + "Grad decoder.fc2.weight: 0.0001346022036159411\n", + "Grad decoder.fc2.bias: 0.0023403975646942854\n", + "Grad _memory_unit.weight_ih_l0: 4.713574980996782e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.2033080565743148e-05\n", + "Grad _memory_unit.bias_hh_l0: 6.354910055961227e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.8943883333122358e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.293842357583344e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.1256781110423617e-05\n", + "Data X Sample: tensor([[1.4544, 1.5803, 1.7836, 1.8782, 1.9448, 2.0464, 2.0152, 2.2217, 3.5956,\n", + " 4.1799, 4.0574, 4.2416, 4.0391, 3.8716, 3.7274, 3.5775, 3.5630, 3.5824,\n", + " 3.5374, 3.4126, 3.3443, 3.2057, 2.7520, 2.7237, 2.8809, 3.0115, 3.0689,\n", + " 3.1609, 3.0806, 3.2817, 3.2510, 3.3270, 3.8369, 2.7279, 4.4341, 4.7477,\n", + " 5.0047, 5.3641, 5.9581, 5.7225, 1.0977, 0.6333, 0.5942, 1.1855, 1.7522,\n", + " 1.7784, 1.2102, 1.6889]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4733, -0.3228, -0.3827, -0.9273, 0.1541, 0.1033, 0.3050, 0.3527,\n", + " 0.6818, 0.5437, 0.4032, -1.0174, -0.3835, -0.1062, 0.3002, -0.3925,\n", + " -0.9180, -1.7769, -1.2616, -1.4920, -1.1939, 0.2385, 2.0557, -0.4507,\n", + " 0.3135, 0.0590, -1.0274, -0.1355, -0.1991, 0.5686, -0.0291, -0.4558,\n", + " -0.3852, -0.5570, -0.4612, -0.9424, 0.0213, -0.6143, 0.9027, 0.4988,\n", + " 0.6352, 0.4537, 1.0835]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3150, -0.3400, -0.0819, -0.1619, 0.0045, 0.1707, 0.2351, 0.3565,\n", + " 0.2297, 0.2584, 0.2852, -0.1952, -0.2005, -0.3290, -0.2495, -0.2907,\n", + " -0.2175, -0.1259, -0.1037, -0.1137, -0.0935, -0.0199, -0.0339, -0.0313,\n", + " -0.0246, 0.0560, -0.0424, -0.1232, -0.2392, -0.2988, -0.2430, -0.2636,\n", + " -0.3227, -0.3859, -0.2014, -0.2293, -0.0717, 0.0098, 0.0138, 0.3722,\n", + " 0.3651, 0.3933, 0.3116]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00010427366942167282\n", + "Grad encoder.fc1.bias: 6.0712867707479745e-05\n", + "Grad encoder.encoder.0.weight: 3.597698378143832e-05\n", + "Grad encoder.encoder.0.bias: 6.94863119861111e-05\n", + "Grad encoder.encoder.2.weight: 1.7759204638423398e-05\n", + "Grad encoder.encoder.2.bias: 6.22221123194322e-05\n", + "Grad encoder.encoder.4.weight: 4.191299376543611e-05\n", + "Grad encoder.encoder.4.bias: 0.00015149186947382987\n", + "Grad decoder.fc1.0.weight: 1.2416275239957031e-05\n", + "Grad decoder.fc1.0.bias: 4.680604979512282e-05\n", + "Grad decoder.fc1.2.weight: 1.9618706573965028e-05\n", + "Grad decoder.fc1.2.bias: 8.072321361396462e-05\n", + "Grad decoder.fc1.4.weight: 2.6223309760098346e-05\n", + "Grad decoder.fc1.4.bias: 0.00016478047473356128\n", + "Grad decoder.fc2.weight: 8.339581836480647e-05\n", + "Grad decoder.fc2.bias: 0.0019057552563026547\n", + "Grad _memory_unit.weight_ih_l0: 8.877550499164499e-07\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.527635155682219e-06\n", + "Grad _memory_unit.bias_hh_l0: 2.3466254788218066e-06\n", + "Grad _memory_unit.weight_ih_l1: 3.568845556856104e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.164253171737073e-05\n", + "Grad _memory_unit.bias_hh_l1: 5.8166692724626046e-06\n", + "Data X Sample: tensor([[2.6754, 2.9582, 2.6025, 2.2128, 2.3768, 2.6224, 3.6190, 3.8614, 4.0423,\n", + " 3.9935, 4.0257, 4.0488, 3.8415, 3.8225, 3.6593, 3.6377, 3.5583, 3.4412,\n", + " 3.5312, 3.3196, 3.2682, 3.2256, 2.9255, 2.8630, 2.7045, 2.7216, 2.7625,\n", + " 2.8428, 2.6851, 2.8952, 2.7961, 2.8490, 3.1351, 2.3137, 3.7968, 4.3002,\n", + " 4.5426, 5.0169, 5.3496, 5.3310, 1.9329, 0.9619, 0.9660, 1.5988, 2.0653,\n", + " 2.1386, 1.4414, 2.0174]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2080, 0.2979, 0.6887, -0.5380, -0.1934, 0.0238, -0.1196, 0.0568,\n", + " 0.1397, 0.0380, -0.0094, -0.0834, 0.5702, -0.0780, 0.1077, 0.7030,\n", + " 0.4893, -0.1863, -3.7102, 0.3595, 0.6488, -0.0753, 1.3355, 1.1807,\n", + " 0.4987, 1.0555, 0.8882, 0.2178, -0.1058, -0.4115, -0.9598, 0.1362,\n", + " -0.0200, -0.0091, -0.3944, -1.1467, -0.6699, -0.7204, 1.1574, 0.0690,\n", + " 0.0579, 0.0146, 0.2541]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2173, -0.2540, -0.0753, -0.1686, -0.0499, 0.0851, 0.1290, 0.2382,\n", + " 0.1485, 0.1842, 0.1720, -0.1275, -0.1272, -0.2143, -0.1731, -0.2265,\n", + " -0.1987, -0.1061, -0.0582, -0.0944, -0.0634, -0.0286, -0.0444, -0.0411,\n", + " -0.0252, 0.0401, 0.0088, -0.0402, -0.1416, -0.2129, -0.1473, -0.1600,\n", + " -0.2220, -0.2486, -0.1463, -0.1540, -0.0576, 0.0189, -0.0147, 0.2589,\n", + " 0.2871, 0.2734, 0.2296]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001925601827679202\n", + "Grad encoder.fc1.bias: 0.0004466563696041703\n", + "Grad encoder.encoder.0.weight: 5.632295869872905e-05\n", + "Grad encoder.encoder.0.bias: 0.00015073709073476493\n", + "Grad encoder.encoder.2.weight: 2.817491622408852e-05\n", + "Grad encoder.encoder.2.bias: 9.412795770913363e-05\n", + "Grad encoder.encoder.4.weight: 9.297061478719115e-05\n", + "Grad encoder.encoder.4.bias: 0.00028801243752241135\n", + "Grad decoder.fc1.0.weight: 3.7176581827225164e-05\n", + "Grad decoder.fc1.0.bias: 0.00012170917034382\n", + "Grad decoder.fc1.2.weight: 6.108709931140766e-05\n", + "Grad decoder.fc1.2.bias: 0.0001434906735084951\n", + "Grad decoder.fc1.4.weight: 8.27878902782686e-05\n", + "Grad decoder.fc1.4.bias: 0.0003061054740101099\n", + "Grad decoder.fc2.weight: 9.473491081735119e-05\n", + "Grad decoder.fc2.bias: 0.002292107790708542\n", + "Grad _memory_unit.weight_ih_l0: 2.7923342713620514e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.4892723811499309e-05\n", + "Grad _memory_unit.bias_hh_l0: 7.700691639911383e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.2207358395244228e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.206103039905429e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.124434831785038e-05\n", + "Data X Sample: tensor([[-0.0064, 0.0087, 0.0165, 0.0000, 0.0017, 0.0133, 0.0169, 0.0043,\n", + " 0.0146, 0.0253, 0.0381, 0.0117, 0.0111, 0.0300, 0.0227, 0.0109,\n", + " -0.0849, -0.0967, -0.1053, -0.0762, -0.1178, -0.0674, -0.0723, -0.0783,\n", + " -0.0638, -0.1201, -0.0906, -0.1795, -0.0659, -0.0197, -0.0560, 0.0083,\n", + " 0.0176, -0.0229, 0.0098, 0.0365, 0.0098, 0.0027, 0.0507, 0.0142,\n", + " 0.0286, 0.0060, 0.0040, 0.0057, 0.0159, 0.0343, 0.0000, -0.0704]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6332, 0.0254, 0.6479, -0.4017, -0.7243, -0.2278, -0.5165, -0.8350,\n", + " -0.3919, -0.3188, -0.2034, -0.3118, 1.5684, 0.2783, 0.2103, 0.0955,\n", + " 1.1376, 1.0657, -0.0286, 0.8361, -0.3947, -0.6906, -0.3677, 3.1604,\n", + " -0.1640, -0.1274, -0.9312, 0.1040, 1.0561, 1.4566, 0.6194, 0.1748,\n", + " -0.0933, 0.9012, 0.3763, 0.3865, 0.1343, 0.7357, -1.1818, -0.2535,\n", + " -0.4200, -0.2811, -0.8870]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4504, 0.3986, 0.1557, 0.3520, 0.1730, -0.1317, -0.4301, -0.5613,\n", + " -0.2408, -0.2586, -0.2264, 0.2370, 0.1700, 0.3059, 0.2719, 0.3904,\n", + " 0.2735, 0.0558, 0.0800, 0.1594, 0.1460, 0.0706, 0.0458, 0.0715,\n", + " 0.0968, 0.0562, -0.0979, 0.0819, 0.2161, 0.3079, 0.3400, 0.2578,\n", + " 0.3482, 0.3441, 0.2174, 0.2086, -0.0190, 0.0362, -0.1424, -0.3441,\n", + " -0.3510, -0.3285, -0.3298]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000251181423664093\n", + "Grad encoder.fc1.bias: 0.00032715420820750296\n", + "Grad encoder.encoder.0.weight: 7.943373930174857e-05\n", + "Grad encoder.encoder.0.bias: 0.00020054775814060122\n", + "Grad encoder.encoder.2.weight: 4.3680902308551595e-05\n", + "Grad encoder.encoder.2.bias: 0.0002967957407236099\n", + "Grad encoder.encoder.4.weight: 0.0001304707257077098\n", + "Grad encoder.encoder.4.bias: 0.0009158480679616332\n", + "Grad decoder.fc1.0.weight: 4.708411870524287e-05\n", + "Grad decoder.fc1.0.bias: 0.0003390990605112165\n", + "Grad decoder.fc1.2.weight: 6.824459705967456e-05\n", + "Grad decoder.fc1.2.bias: 0.00035722251050174236\n", + "Grad decoder.fc1.4.weight: 7.748565258225426e-05\n", + "Grad decoder.fc1.4.bias: 0.0005884729907847941\n", + "Grad decoder.fc2.weight: 0.00012222696386743337\n", + "Grad decoder.fc2.bias: 0.0023899732623249292\n", + "Grad _memory_unit.weight_ih_l0: 5.730488283006707e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.756256981228944e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.4182815903041046e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.561264864198165e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.492730946978554e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.750705946004018e-05\n", + "Data X Sample: tensor([[1.3377, 1.3910, 1.6935, 1.7733, 1.9072, 2.0714, 2.1061, 2.1933, 3.7274,\n", + " 4.2968, 4.4825, 4.2533, 4.1345, 4.0543, 3.8837, 3.9604, 3.8618, 3.6714,\n", + " 3.6241, 3.5502, 3.5528, 3.4782, 2.9424, 2.8707, 2.8959, 2.9567, 2.9756,\n", + " 3.0956, 3.0529, 3.1638, 3.3000, 3.3353, 3.8237, 2.8240, 4.6645, 4.9374,\n", + " 5.0696, 5.4171, 5.9708, 5.9495, 1.0357, 0.5915, 0.6326, 1.0620, 1.5103,\n", + " 1.7097, 1.2850, 1.7046]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1954, -0.1741, -1.1000, -0.8597, -0.3952, 0.1299, -0.1451, 0.2288,\n", + " -0.0758, 0.3654, 0.2018, -1.3118, -1.4657, -0.2142, 0.6282, -1.2022,\n", + " -0.6671, 0.4781, -0.8353, -1.5923, 0.3659, -0.9393, -0.4371, -1.1120,\n", + " 0.0733, 0.5017, 0.2353, 0.5245, -0.0742, -1.1052, -0.2278, -0.0438,\n", + " -0.2585, -0.4062, -0.1842, -0.0293, -0.6348, -0.7204, 0.0073, 0.2503,\n", + " 0.5119, -0.0228, 0.5109]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3278, -0.3487, -0.0845, -0.1614, 0.0065, 0.1794, 0.2478, 0.3743,\n", + " 0.2425, 0.2731, 0.3037, -0.2024, -0.2079, -0.3456, -0.2600, -0.3023,\n", + " -0.2253, -0.1231, -0.1076, -0.1161, -0.0974, -0.0222, -0.0316, -0.0231,\n", + " -0.0223, 0.0608, -0.0461, -0.1310, -0.2572, -0.3046, -0.2558, -0.2735,\n", + " -0.3375, -0.4002, -0.2031, -0.2434, -0.0753, 0.0076, 0.0197, 0.3896,\n", + " 0.3790, 0.4146, 0.3237]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00015352011541835964\n", + "Grad encoder.fc1.bias: 0.00015678617637604475\n", + "Grad encoder.encoder.0.weight: 4.4554042688105255e-05\n", + "Grad encoder.encoder.0.bias: 0.00012615317245945334\n", + "Grad encoder.encoder.2.weight: 2.296776801813394e-05\n", + "Grad encoder.encoder.2.bias: 0.00014132481010165066\n", + "Grad encoder.encoder.4.weight: 7.023721263976768e-05\n", + "Grad encoder.encoder.4.bias: 0.00042222472256980836\n", + "Grad decoder.fc1.0.weight: 3.0542876629624516e-05\n", + "Grad decoder.fc1.0.bias: 0.00020817198674194515\n", + "Grad decoder.fc1.2.weight: 4.3373569496907294e-05\n", + "Grad decoder.fc1.2.bias: 0.00018262967932969332\n", + "Grad decoder.fc1.4.weight: 4.996469215257093e-05\n", + "Grad decoder.fc1.4.bias: 0.00019004482601303607\n", + "Grad decoder.fc2.weight: 9.485099144512787e-05\n", + "Grad decoder.fc2.bias: 0.001828970736823976\n", + "Grad _memory_unit.weight_ih_l0: 2.712691866690875e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.844324287958443e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.292517461290117e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.4637870435763034e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.584624548442662e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.27325417654356e-05\n", + "Data X Sample: tensor([[1.3886, 1.6124, 1.7791, 1.9023, 1.9926, 2.1775, 2.1461, 1.9633, 3.2050,\n", + " 4.0915, 4.1526, 4.2592, 3.9969, 3.8579, 3.8081, 3.6199, 3.6149, 3.6037,\n", + " 3.6365, 3.5186, 3.4915, 3.3205, 2.8556, 2.8592, 2.8640, 2.9227, 3.0476,\n", + " 2.9162, 2.9245, 3.1769, 3.2196, 3.3878, 3.8127, 2.8171, 4.6302, 4.9715,\n", + " 5.0853, 5.6053, 5.9961, 5.9268, 1.1359, 0.6811, 0.6548, 1.0850, 1.7323,\n", + " 1.9270, 1.1694, 1.7750]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4344, -0.3764, 1.0105, 1.0577, 0.4709, -0.1276, -0.2412, -0.2245,\n", + " 0.2887, -0.2525, -0.3109, -0.0585, 0.5268, 0.7746, -0.8330, 0.2865,\n", + " 0.4989, 0.1249, -0.0415, 0.2899, -0.7398, 0.0196, 1.6066, 0.1951,\n", + " -0.6708, 0.1741, -1.4087, 0.0505, 0.1765, -0.2306, 0.1483, 0.0255,\n", + " -0.6522, -0.4237, 0.3282, -0.5496, 0.2315, 0.0000, 0.7114, -0.3035,\n", + " -0.5397, -0.4229, -0.0340]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3125, -0.3358, -0.0835, -0.1609, -0.0028, 0.1661, 0.2321, 0.3572,\n", + " 0.2314, 0.2635, 0.2882, -0.1926, -0.1966, -0.3280, -0.2482, -0.2932,\n", + " -0.2242, -0.1175, -0.1010, -0.1128, -0.0918, -0.0227, -0.0321, -0.0235,\n", + " -0.0217, 0.0583, -0.0384, -0.1187, -0.2446, -0.2903, -0.2410, -0.2571,\n", + " -0.3231, -0.3787, -0.1939, -0.2321, -0.0740, 0.0083, 0.0155, 0.3729,\n", + " 0.3682, 0.3977, 0.3110]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00024403368297498673\n", + "Grad encoder.fc1.bias: 0.0005789737915620208\n", + "Grad encoder.encoder.0.weight: 7.329619984375313e-05\n", + "Grad encoder.encoder.0.bias: 0.0002765364770311862\n", + "Grad encoder.encoder.2.weight: 3.8961676182225347e-05\n", + "Grad encoder.encoder.2.bias: 0.00019291677745059133\n", + "Grad encoder.encoder.4.weight: 0.00010008425306295976\n", + "Grad encoder.encoder.4.bias: 0.0005034995847381651\n", + "Grad decoder.fc1.0.weight: 2.826317540893797e-05\n", + "Grad decoder.fc1.0.bias: 0.00018728907161857933\n", + "Grad decoder.fc1.2.weight: 3.4409924410283566e-05\n", + "Grad decoder.fc1.2.bias: 0.0002010384196182713\n", + "Grad decoder.fc1.4.weight: 3.9970531361177564e-05\n", + "Grad decoder.fc1.4.bias: 0.00035638565896078944\n", + "Grad decoder.fc2.weight: 9.307290019933134e-05\n", + "Grad decoder.fc2.bias: 0.0019388716900721192\n", + "Grad _memory_unit.weight_ih_l0: 2.2382430415746057e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.6824687918415293e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.510678526363336e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.2097101489416673e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.859959542751312e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.9511218852130696e-05\n", + "Data X Sample: tensor([[1.6040, 1.8381, 2.0135, 2.0794, 2.2436, 2.4368, 2.5621, 2.6888, 2.6436,\n", + " 2.6934, 2.6616, 2.6700, 2.5455, 2.5383, 2.4765, 2.5177, 2.4372, 2.5050,\n", + " 2.4636, 2.4474, 2.4192, 2.5076, 2.4676, 2.4469, 2.4155, 2.4813, 2.5015,\n", + " 2.4675, 2.3139, 2.3679, 2.3307, 2.2659, 2.1714, 1.3914, 1.8678, 1.8290,\n", + " 1.6518, 1.6458, 1.5909, 1.4498, 1.2457, 0.7488, 0.7195, 1.3319, 1.9424,\n", + " 2.1901, 1.3734, 1.8532]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7959, -0.0863, 0.8413, -0.6643, 0.6473, -0.6138, -0.1251, -0.1415,\n", + " -0.8044, -0.0717, -0.1413, 0.4632, -0.3791, 0.8321, 0.3555, 0.0654,\n", + " 0.7002, 0.2089, 0.2016, -0.0699, 0.9782, -0.7189, 0.6281, -0.9392,\n", + " 0.3368, 0.4094, -0.0272, -1.1031, 0.6684, -0.3330, -0.0690, 0.7116,\n", + " 0.0351, 0.4591, 0.6545, -0.4003, 0.4915, 0.2663, -0.0059, 0.1130,\n", + " 0.0363, -0.2141, -0.9506]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3381, 0.3344, 0.1213, 0.2251, 0.1464, -0.1204, -0.3106, -0.3734,\n", + " -0.2251, -0.2456, -0.2254, 0.1516, 0.1190, 0.2506, 0.2331, 0.3144,\n", + " 0.1995, 0.0301, 0.0527, 0.1459, 0.1024, 0.0748, 0.0455, 0.0318,\n", + " 0.0941, 0.0355, -0.0718, 0.0148, 0.1155, 0.2306, 0.2530, 0.1983,\n", + " 0.2431, 0.2427, 0.1563, 0.1766, -0.0413, 0.0177, -0.0793, -0.2682,\n", + " -0.2624, -0.2653, -0.2734]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001312459644395858\n", + "Grad encoder.fc1.bias: 0.000391327659599483\n", + "Grad encoder.encoder.0.weight: 3.0138136935420334e-05\n", + "Grad encoder.encoder.0.bias: 0.00027063232846558094\n", + "Grad encoder.encoder.2.weight: 3.261233723605983e-05\n", + "Grad encoder.encoder.2.bias: 0.000249133154284209\n", + "Grad encoder.encoder.4.weight: 6.91916502546519e-05\n", + "Grad encoder.encoder.4.bias: 0.0005116278189234436\n", + "Grad decoder.fc1.0.weight: 3.602176730055362e-05\n", + "Grad decoder.fc1.0.bias: 0.0002168201026506722\n", + "Grad decoder.fc1.2.weight: 4.960694059263915e-05\n", + "Grad decoder.fc1.2.bias: 0.00027595245046541095\n", + "Grad decoder.fc1.4.weight: 5.673339182976633e-05\n", + "Grad decoder.fc1.4.bias: 0.00043175515020266175\n", + "Grad decoder.fc2.weight: 0.00011280746548436582\n", + "Grad decoder.fc2.bias: 0.001707619521766901\n", + "Grad _memory_unit.weight_ih_l0: 4.143189926253399e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.6879312170203775e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.843388968671206e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.8142543467547512e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.2759562347782776e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.174764813389629e-05\n", + "Data X Sample: tensor([[2.0294, 2.4513, 2.7784, 2.6763, 2.9846, 3.0187, 3.0305, 3.1047, 3.1880,\n", + " 3.3506, 3.3087, 3.3886, 3.1447, 3.1109, 3.1019, 3.1973, 3.1227, 3.0370,\n", + " 3.0500, 2.9774, 2.8609, 2.6975, 2.5544, 2.5061, 2.4098, 2.4761, 2.3310,\n", + " 2.3370, 1.9878, 1.9553, 1.8757, 1.8570, 1.7952, 1.2037, 1.9291, 2.3520,\n", + " 2.6056, 2.8729, 3.0551, 2.9421, 1.6704, 0.9200, 0.9600, 1.7624, 2.5450,\n", + " 2.6189, 1.8085, 2.5491]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3209, 0.4530, -0.5999, -0.2516, 0.2975, -0.0181, -0.2621, -0.4523,\n", + " -0.1357, -0.1688, -0.3160, 0.1708, -1.5831, -0.8649, 0.2289, 0.6492,\n", + " 1.6699, -0.7079, -0.2300, 0.3254, -0.1324, 0.3429, 0.8435, -0.6799,\n", + " 0.2960, 0.6465, 0.3617, -0.2215, -0.3864, 0.2285, -0.0226, -0.4248,\n", + " 0.7703, -0.5780, 0.9312, -0.8916, -0.3026, 0.8631, -0.2301, -0.2491,\n", + " -0.4922, -0.3596, 1.2137]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2139, -0.2518, -0.0745, -0.1650, -0.0571, 0.0819, 0.1281, 0.2400,\n", + " 0.1503, 0.1891, 0.1761, -0.1267, -0.1250, -0.2130, -0.1726, -0.2289,\n", + " -0.2059, -0.0963, -0.0589, -0.0931, -0.0615, -0.0284, -0.0409, -0.0344,\n", + " -0.0211, 0.0413, 0.0108, -0.0373, -0.1489, -0.2062, -0.1459, -0.1529,\n", + " -0.2245, -0.2438, -0.1408, -0.1570, -0.0610, 0.0164, -0.0122, 0.2602,\n", + " 0.2897, 0.2778, 0.2279]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00014710656250827014\n", + "Grad encoder.fc1.bias: 0.0010792803950607777\n", + "Grad encoder.encoder.0.weight: 3.439580905251205e-05\n", + "Grad encoder.encoder.0.bias: 0.0005978918634355068\n", + "Grad encoder.encoder.2.weight: 2.2206135326996446e-05\n", + "Grad encoder.encoder.2.bias: 0.00040550658013671637\n", + "Grad encoder.encoder.4.weight: 5.878957745153457e-05\n", + "Grad encoder.encoder.4.bias: 0.0006040901644155383\n", + "Grad decoder.fc1.0.weight: 3.171891512465663e-05\n", + "Grad decoder.fc1.0.bias: 0.00019790802616626024\n", + "Grad decoder.fc1.2.weight: 4.611541226040572e-05\n", + "Grad decoder.fc1.2.bias: 0.00023419884382747114\n", + "Grad decoder.fc1.4.weight: 5.9288315242156386e-05\n", + "Grad decoder.fc1.4.bias: 0.00033055938547477126\n", + "Grad decoder.fc2.weight: 8.191657980205491e-05\n", + "Grad decoder.fc2.bias: 0.0014584178570657969\n", + "Grad _memory_unit.weight_ih_l0: 3.862386165565113e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.8953358448925428e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.351308108307421e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.5329480902437354e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.4008538679918274e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.1985986677464098e-05\n", + "Data X Sample: tensor([[1.5308, 1.8876, 2.1998, 2.3702, 2.4929, 2.5856, 2.6931, 2.7370, 2.7388,\n", + " 2.7898, 2.7948, 2.8570, 2.8340, 2.7183, 2.7690, 2.7652, 2.7202, 2.7429,\n", + " 2.7981, 2.7617, 2.7848, 2.8980, 2.7568, 2.6321, 2.4549, 2.4056, 2.2564,\n", + " 2.2595, 1.8907, 1.8767, 1.7358, 1.7464, 1.4916, 0.9406, 1.3408, 1.3377,\n", + " 1.4100, 1.5716, 1.8381, 1.8441, 1.3459, 0.8284, 0.8185, 1.4208, 2.0733,\n", + " 2.2987, 1.4346, 2.2676]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3343, 0.8345, -0.3852, -0.8531, -0.3228, 0.0410, 0.0744, 0.5038,\n", + " -0.3855, -0.4007, -0.4178, -0.4897, 1.5971, 0.8919, 0.3601, 0.4921,\n", + " 0.7286, -2.7038, -0.1062, -0.9244, -1.4180, -0.5311, -1.1435, -1.4639,\n", + " -0.9723, -0.8552, -0.1040, -0.0890, -0.6625, -1.0757, -0.1214, -0.0463,\n", + " -0.0575, 0.7056, 0.0789, -1.3743, -0.4229, 0.5417, 0.2098, -0.3053,\n", + " -0.6836, 0.1267, -0.2580]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.0801, 0.0652, 0.0173, 0.0075, 0.0252, -0.0445, -0.1121, -0.0848,\n", + " -0.0565, -0.0603, -0.0398, 0.0301, -0.0346, 0.0292, 0.0344, 0.0383,\n", + " -0.0050, -0.0411, 0.0139, 0.0358, 0.0268, 0.0153, -0.0153, -0.0111,\n", + " 0.0414, 0.0485, -0.0181, -0.0090, -0.0126, 0.0389, 0.0907, 0.0417,\n", + " 0.0257, 0.0205, 0.0064, 0.0255, -0.0635, 0.0129, -0.0195, -0.0479,\n", + " -0.0077, -0.0163, -0.0064]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001865983213065192\n", + "Grad encoder.fc1.bias: 0.0006893651443533599\n", + "Grad encoder.encoder.0.weight: 5.187981150811538e-05\n", + "Grad encoder.encoder.0.bias: 0.0005024676211178303\n", + "Grad encoder.encoder.2.weight: 2.5280864065280184e-05\n", + "Grad encoder.encoder.2.bias: 0.00034568231785669923\n", + "Grad encoder.encoder.4.weight: 8.014452032512054e-05\n", + "Grad encoder.encoder.4.bias: 0.0003266177955083549\n", + "Grad decoder.fc1.0.weight: 3.170151831000112e-05\n", + "Grad decoder.fc1.0.bias: 0.00013998060603626072\n", + "Grad decoder.fc1.2.weight: 5.0057868065778166e-05\n", + "Grad decoder.fc1.2.bias: 0.0001690627250354737\n", + "Grad decoder.fc1.4.weight: 6.7610562837217e-05\n", + "Grad decoder.fc1.4.bias: 0.0002589282230474055\n", + "Grad decoder.fc2.weight: 0.00011133134830743074\n", + "Grad decoder.fc2.bias: 0.00211879494599998\n", + "Grad _memory_unit.weight_ih_l0: 2.2983888356975513e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.9326993070717435e-06\n", + "Grad _memory_unit.bias_hh_l0: 3.5249956908955937e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.2293958207010292e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.64736772805918e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.3222321285866201e-05\n", + "Data X Sample: tensor([[2.7104, 2.8897, 2.6762, 2.3790, 2.5578, 2.4235, 3.4095, 3.9650, 3.9935,\n", + " 3.9288, 4.0193, 4.0138, 3.7572, 3.6180, 3.6013, 3.6213, 3.5583, 3.4915,\n", + " 3.4961, 3.3568, 3.3050, 3.3114, 3.0146, 2.8325, 2.7007, 2.7373, 2.7092,\n", + " 2.7653, 2.7129, 2.7904, 2.7191, 2.7523, 3.1021, 2.3320, 3.8802, 4.2199,\n", + " 4.4206, 4.7784, 5.4003, 5.3423, 1.9854, 1.0913, 0.9398, 1.5902, 2.0891,\n", + " 2.1443, 1.5434, 2.4318]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2215, 1.1532, 0.1251, 0.6698, -0.4000, 0.2688, 0.3488, 0.2898,\n", + " -0.7856, 0.0475, -0.0954, -0.5274, -0.3284, -1.3928, -2.4549, -0.5238,\n", + " 0.2133, -0.7177, -0.6332, 0.8959, 0.3149, -0.1964, -0.3842, 0.9901,\n", + " -0.4744, -0.2153, -2.4383, -1.7290, -1.0091, -1.0059, -0.2484, -0.7228,\n", + " -0.1992, -0.2766, -0.6972, -1.3116, -0.9960, 0.7178, 0.0000, 0.0364,\n", + " 0.3244, 0.2313, 0.4213]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1603, -0.2061, -0.0702, -0.1683, -0.0883, 0.0355, 0.0708, 0.1756,\n", + " 0.1055, 0.1480, 0.1147, -0.0917, -0.0865, -0.1514, -0.1323, -0.1942,\n", + " -0.1967, -0.0841, -0.0360, -0.0823, -0.0457, -0.0316, -0.0468, -0.0416,\n", + " -0.0216, 0.0330, 0.0382, 0.0065, -0.0951, -0.1613, -0.0938, -0.0957,\n", + " -0.1710, -0.1713, -0.1121, -0.1174, -0.0540, 0.0204, -0.0264, 0.1989,\n", + " 0.2468, 0.2126, 0.1841]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002806201227940619\n", + "Grad encoder.fc1.bias: 8.952127245720476e-05\n", + "Grad encoder.encoder.0.weight: 7.70424521761015e-05\n", + "Grad encoder.encoder.0.bias: 8.89139628270641e-05\n", + "Grad encoder.encoder.2.weight: 3.96118666685652e-05\n", + "Grad encoder.encoder.2.bias: 7.158549851737916e-05\n", + "Grad encoder.encoder.4.weight: 0.00010554897016845644\n", + "Grad encoder.encoder.4.bias: 0.00021182010823395103\n", + "Grad decoder.fc1.0.weight: 2.409137596259825e-05\n", + "Grad decoder.fc1.0.bias: 3.88367916457355e-05\n", + "Grad decoder.fc1.2.weight: 2.3741478798910975e-05\n", + "Grad decoder.fc1.2.bias: 7.086105324560776e-05\n", + "Grad decoder.fc1.4.weight: 2.985502578667365e-05\n", + "Grad decoder.fc1.4.bias: 0.00016407616203650832\n", + "Grad decoder.fc2.weight: 5.656187204294838e-05\n", + "Grad decoder.fc2.bias: 0.0017118194373324513\n", + "Grad _memory_unit.weight_ih_l0: 3.710012776991789e-07\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.5462389291751606e-07\n", + "Grad _memory_unit.bias_hh_l0: 2.7051623874285724e-07\n", + "Grad _memory_unit.weight_ih_l1: 4.4368061935529113e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.6600795788690448e-05\n", + "Grad _memory_unit.bias_hh_l1: 8.251546205428895e-06\n", + "Data X Sample: tensor([[1.7684, 2.0901, 2.3666, 2.5757, 2.6807, 2.8950, 2.9396, 2.9627, 3.0488,\n", + " 3.0204, 2.9122, 2.8920, 2.8651, 2.6447, 2.6783, 2.5204, 2.6164, 2.6075,\n", + " 2.5358, 2.4716, 2.4389, 2.5107, 2.3110, 2.2732, 2.2278, 2.2358, 2.1045,\n", + " 2.1820, 1.8248, 1.7948, 1.7463, 1.6690, 1.6808, 1.1442, 1.7795, 1.9312,\n", + " 2.0727, 2.4091, 2.7636, 2.7407, 1.5797, 0.8703, 0.8387, 1.5931, 2.2953,\n", + " 2.5961, 1.7269, 2.3614]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.0321, -0.8052, 0.0441, -0.4429, -0.5895, -0.2516, -0.4939, 0.7157,\n", + " 0.0987, 0.4162, 0.7794, -0.8674, -1.2370, -0.9020, 0.0322, 0.0037,\n", + " 0.0951, 2.2862, 0.0831, 0.4280, -1.7617, -0.5468, -1.3700, 0.3200,\n", + " -0.2562, 0.9617, 0.6384, 0.9198, 0.7100, 0.3776, 0.0027, 0.2690,\n", + " -0.0940, 0.2176, -0.6610, 0.8579, -0.8912, -0.5556, -0.7577, 0.6059,\n", + " 1.2538, 0.2095, 0.7103]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1913, -0.2337, -0.0732, -0.1650, -0.0731, 0.0631, 0.1046, 0.2151,\n", + " 0.1336, 0.1746, 0.1536, -0.1144, -0.1099, -0.1902, -0.1582, -0.2165,\n", + " -0.2066, -0.0871, -0.0523, -0.0884, -0.0548, -0.0282, -0.0419, -0.0360,\n", + " -0.0207, 0.0404, 0.0217, -0.0210, -0.1297, -0.1883, -0.1258, -0.1285,\n", + " -0.2055, -0.2161, -0.1285, -0.1447, -0.0605, 0.0140, -0.0148, 0.2370,\n", + " 0.2740, 0.2538, 0.2116]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002810414298437536\n", + "Grad encoder.fc1.bias: 0.0003799867699854076\n", + "Grad encoder.encoder.0.weight: 7.234129589051008e-05\n", + "Grad encoder.encoder.0.bias: 0.00035367452073842287\n", + "Grad encoder.encoder.2.weight: 3.7696718209190294e-05\n", + "Grad encoder.encoder.2.bias: 0.0002987440675497055\n", + "Grad encoder.encoder.4.weight: 9.661352669354528e-05\n", + "Grad encoder.encoder.4.bias: 0.0006647079135291278\n", + "Grad decoder.fc1.0.weight: 3.33597490680404e-05\n", + "Grad decoder.fc1.0.bias: 0.00023908820003271103\n", + "Grad decoder.fc1.2.weight: 4.741838347399607e-05\n", + "Grad decoder.fc1.2.bias: 0.0002791493898257613\n", + "Grad decoder.fc1.4.weight: 5.647646321449429e-05\n", + "Grad decoder.fc1.4.bias: 0.0003475662670098245\n", + "Grad decoder.fc2.weight: 0.00010366347851231694\n", + "Grad decoder.fc2.bias: 0.0028549719136208296\n", + "Grad _memory_unit.weight_ih_l0: 4.101754257135326e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.8087041098624468e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.448594028071966e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.6823781834318652e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.9846767069539055e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.4586777726653963e-05\n", + "Data X Sample: tensor([[1.5117, 1.7187, 1.8572, 1.9285, 2.2265, 2.2570, 2.4789, 2.5198, 2.6021,\n", + " 2.6729, 2.6616, 2.7148, 2.5477, 2.4565, 2.4689, 2.5245, 2.4277, 2.4683,\n", + " 2.4718, 2.4864, 2.4659, 2.4403, 2.3953, 2.3744, 2.3216, 2.4186, 2.3576,\n", + " 2.3085, 2.1544, 2.3548, 2.2922, 2.2659, 2.2022, 1.4578, 1.9487, 1.8169,\n", + " 1.6066, 1.5583, 1.5909, 1.6143, 1.2075, 0.6970, 0.7276, 1.1883, 1.7086,\n", + " 1.9270, 1.2102, 1.8922]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2693, 0.7698, -1.1819, 0.2498, 0.3961, -2.3671, -0.1306, -0.5771,\n", + " -0.0523, -0.8810, -0.2260, 0.6257, -0.2055, 0.6699, -0.5327, 0.9421,\n", + " 0.0741, -0.2070, -0.5055, 0.2797, 0.9761, 0.9045, 0.1189, 0.4116,\n", + " 0.6428, -0.7611, 0.1534, -0.6990, 0.4926, 0.6792, -0.7840, 0.9611,\n", + " 0.6997, 0.5256, 0.4623, -0.2911, -0.8350, 0.7816, 0.0040, -0.2808,\n", + " -0.1810, -0.5409, -0.2353]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4478, 0.4246, 0.1573, 0.3500, 0.1714, -0.1432, -0.4055, -0.5036,\n", + " -0.2952, -0.3234, -0.2885, 0.1998, 0.1744, 0.3220, 0.2831, 0.3975,\n", + " 0.2524, 0.1037, 0.0684, 0.1936, 0.1134, 0.0980, 0.0871, 0.0605,\n", + " 0.1011, 0.0208, -0.1000, 0.0335, 0.1603, 0.3219, 0.3342, 0.2872,\n", + " 0.3070, 0.3337, 0.2178, 0.2244, -0.0572, 0.0216, -0.0765, -0.3620,\n", + " -0.3740, -0.3480, -0.3636]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006136572919785976\n", + "Grad encoder.fc1.bias: 0.0004970445297658443\n", + "Grad encoder.encoder.0.weight: 0.00017383656813763082\n", + "Grad encoder.encoder.0.bias: 0.00045172846876084805\n", + "Grad encoder.encoder.2.weight: 9.822702850215137e-05\n", + "Grad encoder.encoder.2.bias: 0.0004291239893063903\n", + "Grad encoder.encoder.4.weight: 0.00020856107585132122\n", + "Grad encoder.encoder.4.bias: 0.0006409863126464188\n", + "Grad decoder.fc1.0.weight: 5.959892587270588e-05\n", + "Grad decoder.fc1.0.bias: 0.00030279753264039755\n", + "Grad decoder.fc1.2.weight: 4.417185846250504e-05\n", + "Grad decoder.fc1.2.bias: 0.0002485060249455273\n", + "Grad decoder.fc1.4.weight: 3.636736437329091e-05\n", + "Grad decoder.fc1.4.bias: 0.0002481848932802677\n", + "Grad decoder.fc2.weight: 0.00011505572911119089\n", + "Grad decoder.fc2.bias: 0.002079519908875227\n", + "Grad _memory_unit.weight_ih_l0: 3.125399189229938e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.7327012756140903e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.222112566931173e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.9896438061550725e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.974652256350964e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.4594823116785847e-05\n", + "Data X Sample: tensor([[ 0.0074, 0.0131, 0.0225, 0.0284, 0.0171, 0.0309, 0.0216, 0.0142,\n", + " 0.0415, 0.0332, 0.0127, 0.0195, 0.0133, 0.0218, -0.0025, 0.0068,\n", + " -0.1195, -0.1412, -0.1673, -0.1655, -0.1595, -0.1087, -0.2169, -0.1737,\n", + " -0.1501, -0.3030, -0.3170, -0.5465, -0.0555, -0.0950, -0.1225, -0.0718,\n", + " -0.0506, -0.0664, -0.0221, 0.0000, -0.0059, -0.0318, -0.0063, -0.0199,\n", + " 0.0191, -0.0060, 0.0121, -0.0115, 0.0396, 0.0172, 0.0204, 0.0626]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.2504, 0.2784, -0.1134, 0.6564, -0.5466, -0.2008, -0.8134, -0.8150,\n", + " 0.3149, -0.8065, -0.7649, 1.4643, -0.1773, -0.1327, 0.5343, 0.4138,\n", + " 0.1943, 0.3269, -0.3518, -1.6691, 0.7987, -0.3350, -0.8893, -0.1624,\n", + " 0.8628, 0.5877, -0.1053, -0.0432, 1.4603, 0.6030, 0.7106, 0.8088,\n", + " -0.2596, -0.0258, 0.2353, -0.0974, 0.9536, 0.7916, 0.1407, -0.4554,\n", + " -0.2584, -0.0436, -0.5305]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.5685, 0.4846, 0.1940, 0.4290, 0.1263, -0.2163, -0.5509, -0.6803,\n", + " -0.3238, -0.3488, -0.3107, 0.2526, 0.2086, 0.3887, 0.3084, 0.4308,\n", + " 0.3178, 0.1307, 0.0758, 0.2140, 0.1128, 0.0821, 0.0654, 0.0906,\n", + " 0.1107, 0.0553, -0.0933, 0.1005, 0.2993, 0.4048, 0.4290, 0.3566,\n", + " 0.3847, 0.4091, 0.2539, 0.2342, -0.0383, 0.0472, -0.1234, -0.4399,\n", + " -0.4525, -0.3819, -0.4111]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0005412793252617121\n", + "Grad encoder.fc1.bias: 0.000607781985308975\n", + "Grad encoder.encoder.0.weight: 0.00014806303079240024\n", + "Grad encoder.encoder.0.bias: 0.0004708207561634481\n", + "Grad encoder.encoder.2.weight: 7.852178532630205e-05\n", + "Grad encoder.encoder.2.bias: 0.00034770386992022395\n", + "Grad encoder.encoder.4.weight: 0.0002103218575939536\n", + "Grad encoder.encoder.4.bias: 0.0005854861810803413\n", + "Grad decoder.fc1.0.weight: 5.736711318604648e-05\n", + "Grad decoder.fc1.0.bias: 0.0002521433343645185\n", + "Grad decoder.fc1.2.weight: 6.886688788654283e-05\n", + "Grad decoder.fc1.2.bias: 0.00029496714705601335\n", + "Grad decoder.fc1.4.weight: 8.556604734621942e-05\n", + "Grad decoder.fc1.4.bias: 0.0005083559080958366\n", + "Grad decoder.fc2.weight: 0.000109911008621566\n", + "Grad decoder.fc2.bias: 0.0028275116346776485\n", + "Grad _memory_unit.weight_ih_l0: 4.753708708449267e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.3740105714532547e-05\n", + "Grad _memory_unit.bias_hh_l0: 6.9526777224382386e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.977227611860144e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.5045359001960605e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.2377831555786543e-05\n", + "Data X Sample: tensor([[1.1202, 1.2672, 1.4455, 1.6661, 1.7484, 1.8814, 2.8055, 3.9536, 4.1936,\n", + " 3.9777, 4.1208, 3.7801, 3.6929, 3.6889, 3.5710, 3.3204, 3.3539, 3.3310,\n", + " 3.2772, 3.2675, 3.0793, 3.2088, 2.8098, 2.6168, 2.8002, 2.8208, 2.7465,\n", + " 2.8754, 2.8621, 2.9738, 3.0656, 3.0894, 3.4013, 2.4189, 4.1302, 4.5410,\n", + " 4.8100, 5.1839, 5.7553, 5.6289, 0.8782, 0.5098, 0.5073, 0.9759, 1.3161,\n", + " 1.6526, 1.0266, 1.5638]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6447, -0.4800, 0.7753, 0.4936, -0.1625, -0.2277, 0.1256, 0.2643,\n", + " 0.0752, 0.3791, 0.5491, -0.3534, -0.1664, -0.0846, 0.0942, -0.2319,\n", + " 0.5519, 1.1882, 0.1029, 0.7273, 0.5455, -0.6434, -0.0164, 0.0417,\n", + " 3.0714, -0.0501, 0.5168, -0.9811, -0.3331, -0.2157, -0.2480, 0.2092,\n", + " -1.1294, 0.3569, -0.1158, -0.3591, 0.5069, 0.0849, 0.5801, 0.1977,\n", + " 0.1815, -0.9216, -0.3382]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1678, -0.2157, -0.0739, -0.1680, -0.0924, 0.0405, 0.0790, 0.1882,\n", + " 0.1157, 0.1568, 0.1272, -0.0990, -0.0913, -0.1662, -0.1444, -0.2051,\n", + " -0.2049, -0.0781, -0.0423, -0.0831, -0.0504, -0.0288, -0.0462, -0.0391,\n", + " -0.0211, 0.0393, 0.0341, -0.0010, -0.1028, -0.1692, -0.1036, -0.1020,\n", + " -0.1839, -0.1869, -0.1181, -0.1281, -0.0586, 0.0124, -0.0173, 0.2112,\n", + " 0.2554, 0.2263, 0.1933]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00041076185880228877\n", + "Grad encoder.fc1.bias: 0.0007132476894184947\n", + "Grad encoder.encoder.0.weight: 0.00011725557124009356\n", + "Grad encoder.encoder.0.bias: 0.0006973682320676744\n", + "Grad encoder.encoder.2.weight: 6.512478285003453e-05\n", + "Grad encoder.encoder.2.bias: 0.0004877553437836468\n", + "Grad encoder.encoder.4.weight: 0.00020119210239499807\n", + "Grad encoder.encoder.4.bias: 0.0009718184592202306\n", + "Grad decoder.fc1.0.weight: 5.911701009608805e-05\n", + "Grad decoder.fc1.0.bias: 0.0003284060803707689\n", + "Grad decoder.fc1.2.weight: 7.135060877772048e-05\n", + "Grad decoder.fc1.2.bias: 0.0003454567340668291\n", + "Grad decoder.fc1.4.weight: 7.488293340429664e-05\n", + "Grad decoder.fc1.4.bias: 0.00031648273579776287\n", + "Grad decoder.fc2.weight: 0.00011512889614095911\n", + "Grad decoder.fc2.bias: 0.0019757202826440334\n", + "Grad _memory_unit.weight_ih_l0: 8.119927770167124e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.7215071895625442e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.3798718100588303e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.174374342052033e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.43407363188453e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.689616278279573e-05\n", + "Data X Sample: tensor([[2.0230, 2.4265, 2.8189, 2.8294, 2.8702, 2.9244, 3.0490, 3.0167, 3.2172,\n", + " 3.2305, 3.2960, 3.3088, 3.2335, 3.2827, 3.1599, 3.1645, 3.1385, 3.0698,\n", + " 3.0253, 3.0202, 2.8535, 2.7357, 2.6387, 2.6073, 2.4342, 2.3664, 2.2937,\n", + " 2.2840, 2.0086, 1.9684, 1.9247, 1.8873, 1.8040, 1.2060, 1.9756, 2.3617,\n", + " 2.7000, 2.8305, 3.0361, 3.0244, 1.7611, 1.0535, 1.0145, 1.8198, 2.3468,\n", + " 2.7905, 1.7881, 2.6507]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7450, 0.3025, -0.1355, 0.3937, -1.3005, -1.0653, -2.8855, -1.7942,\n", + " -0.7672, -0.3191, -0.3047, 0.0036, -0.0427, 1.8151, 1.0355, -0.6338,\n", + " -0.6474, 0.1788, 0.9253, -1.2812, 0.7703, -0.3268, -0.5802, -1.2121,\n", + " -0.2979, 0.4007, -0.4032, 1.9171, 1.3271, 0.8565, -0.1387, 0.4801,\n", + " 0.3757, 0.9344, -0.2149, -1.1670, 0.1601, 0.1931, 0.8916, 0.0912,\n", + " 0.7700, 1.1171, 0.6932]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1892, -0.2365, -0.0778, -0.1671, -0.0841, 0.0585, 0.1033, 0.2164,\n", + " 0.1366, 0.1760, 0.1549, -0.1142, -0.1073, -0.1935, -0.1622, -0.2221,\n", + " -0.2125, -0.0794, -0.0531, -0.0882, -0.0576, -0.0268, -0.0444, -0.0364,\n", + " -0.0203, 0.0441, 0.0237, -0.0188, -0.1246, -0.1876, -0.1264, -0.1242,\n", + " -0.2080, -0.2189, -0.1306, -0.1461, -0.0622, 0.0072, -0.0077, 0.2382,\n", + " 0.2747, 0.2552, 0.2123]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00020326935919001698\n", + "Grad encoder.fc1.bias: 0.0006455605034716427\n", + "Grad encoder.encoder.0.weight: 6.013231541146524e-05\n", + "Grad encoder.encoder.0.bias: 0.0005069668404757977\n", + "Grad encoder.encoder.2.weight: 4.1398747271159664e-05\n", + "Grad encoder.encoder.2.bias: 0.000325918837916106\n", + "Grad encoder.encoder.4.weight: 0.00013851973926648498\n", + "Grad encoder.encoder.4.bias: 0.0009646722464822233\n", + "Grad decoder.fc1.0.weight: 4.369487214717083e-05\n", + "Grad decoder.fc1.0.bias: 0.00025082845240831375\n", + "Grad decoder.fc1.2.weight: 5.181170490686782e-05\n", + "Grad decoder.fc1.2.bias: 0.000275828962912783\n", + "Grad decoder.fc1.4.weight: 5.9039812185801566e-05\n", + "Grad decoder.fc1.4.bias: 0.00045313386362977326\n", + "Grad decoder.fc2.weight: 0.00012675690231844783\n", + "Grad decoder.fc2.bias: 0.0019752297084778547\n", + "Grad _memory_unit.weight_ih_l0: 1.0645389011187945e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.017983883386478e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.056796074612066e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.5776915865426417e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.674928201595321e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.8178739487193525e-05\n", + "Data X Sample: tensor([[1.5128, 1.6313, 1.8227, 1.8454, 1.9772, 2.0228, 2.1122, 2.3495, 3.8202,\n", + " 4.0630, 4.2509, 3.9924, 3.9214, 3.7652, 3.5836, 3.4804, 3.4608, 3.6637,\n", + " 3.4217, 3.1968, 3.2854, 3.3603, 2.8942, 2.7867, 2.8096, 2.9044, 2.9836,\n", + " 3.0426, 2.9072, 3.1769, 3.2161, 3.2331, 3.4805, 2.5768, 4.2699, 4.6285,\n", + " 4.8493, 5.3270, 5.6539, 5.7168, 1.1884, 0.6532, 0.6427, 1.1941, 1.6808,\n", + " 1.8470, 1.1150, 1.6264]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2889, -0.3582, -0.3546, -1.2043, -0.5779, -0.2122, 0.3352, 0.4158,\n", + " 0.2081, 0.6805, 0.5106, -1.0432, 0.2861, -0.5084, -0.6138, -0.4215,\n", + " -0.0591, -0.4483, -0.5651, -0.3797, -0.0792, 0.1925, -0.6181, -0.2636,\n", + " -0.0258, -0.1065, -0.1896, 0.1730, 0.6475, -0.2806, 0.0228, -0.1935,\n", + " -0.1098, -0.1339, -0.8436, -0.9214, 0.8892, -0.6143, -0.3712, 0.7021,\n", + " 0.7546, 0.8567, 0.0993]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2815, -0.3218, -0.0902, -0.1613, -0.0412, 0.1384, 0.2073, 0.3351,\n", + " 0.2229, 0.2579, 0.2720, -0.1801, -0.1770, -0.3074, -0.2375, -0.2901,\n", + " -0.2424, -0.0896, -0.1005, -0.1091, -0.0849, -0.0175, -0.0331, -0.0219,\n", + " -0.0175, 0.0635, -0.0227, -0.0968, -0.2218, -0.2647, -0.2228, -0.2217,\n", + " -0.3101, -0.3534, -0.1820, -0.2233, -0.0775, -0.0113, 0.0258, 0.3523,\n", + " 0.3575, 0.3778, 0.2940]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 6.537885928992182e-05\n", + "Grad encoder.fc1.bias: 0.000537448562681675\n", + "Grad encoder.encoder.0.weight: 2.730462801991962e-05\n", + "Grad encoder.encoder.0.bias: 0.00039636032306589186\n", + "Grad encoder.encoder.2.weight: 1.3612784641736653e-05\n", + "Grad encoder.encoder.2.bias: 0.0003086032229475677\n", + "Grad encoder.encoder.4.weight: 3.938222653232515e-05\n", + "Grad encoder.encoder.4.bias: 0.0009019352728500962\n", + "Grad decoder.fc1.0.weight: 2.1634090444422327e-05\n", + "Grad decoder.fc1.0.bias: 0.00027751157176680863\n", + "Grad decoder.fc1.2.weight: 3.309041494503617e-05\n", + "Grad decoder.fc1.2.bias: 0.00022686092415824533\n", + "Grad decoder.fc1.4.weight: 3.860655488097109e-05\n", + "Grad decoder.fc1.4.bias: 0.0002711894048843533\n", + "Grad decoder.fc2.weight: 8.353350858669728e-05\n", + "Grad decoder.fc2.bias: 0.001825274433940649\n", + "Grad _memory_unit.weight_ih_l0: 2.8258361908228835e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.104911982314661e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.0891626516240649e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.6992843256957713e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.556027801707387e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.275269773439504e-05\n", + "Data X Sample: tensor([[1.6538, 1.8643, 2.0270, 2.0510, 2.1480, 2.2939, 2.5067, 2.5156, 2.6729,\n", + " 2.6966, 2.7345, 2.7070, 2.6076, 2.6283, 2.5219, 2.5136, 2.4309, 2.4547,\n", + " 2.4760, 2.4418, 2.4413, 2.5536, 2.4411, 2.4718, 2.4887, 2.6014, 2.4535,\n", + " 2.4471, 2.3486, 2.3941, 2.3552, 2.4041, 2.2682, 1.4257, 1.9536, 1.8363,\n", + " 1.7285, 1.6644, 1.6543, 1.5576, 1.2647, 0.7548, 0.7619, 1.3433, 1.8790,\n", + " 2.0014, 1.2714, 1.9783]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.3336, 0.1134, -0.3183, -0.3626, -0.0622, -0.4468, -0.2785, -0.3606,\n", + " -1.3704, -0.3048, -0.3379, 0.1676, 0.4728, 0.9067, 0.0617, 0.5762,\n", + " 0.9222, 1.0863, 1.5063, 0.1545, 0.2561, -0.2592, -0.2276, 5.3609,\n", + " 0.1135, -3.6689, -0.0125, -0.2696, -0.3932, 0.7807, 0.2262, -0.2238,\n", + " 1.0219, 1.2397, 1.3228, 0.3350, 0.0849, -0.7231, -0.7546, -0.0123,\n", + " 0.0666, -0.1896, -0.1486]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4591, 0.4013, 0.1254, 0.3317, 0.1152, -0.1723, -0.4285, -0.5150,\n", + " -0.2880, -0.3441, -0.3023, 0.2003, 0.1923, 0.3188, 0.2609, 0.3762,\n", + " 0.2375, 0.1356, 0.0842, 0.1902, 0.0833, 0.1074, 0.0835, 0.0450,\n", + " 0.0868, 0.0119, -0.0890, 0.0445, 0.1979, 0.3395, 0.3418, 0.2950,\n", + " 0.3118, 0.3342, 0.2009, 0.2165, -0.0529, 0.0064, -0.0332, -0.3651,\n", + " -0.3921, -0.3500, -0.3516]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00010391016257926822\n", + "Grad encoder.fc1.bias: 3.7524714571191e-05\n", + "Grad encoder.encoder.0.weight: 2.8346046747174114e-05\n", + "Grad encoder.encoder.0.bias: 4.029447882203385e-05\n", + "Grad encoder.encoder.2.weight: 1.6921567294048145e-05\n", + "Grad encoder.encoder.2.bias: 3.573605135898106e-05\n", + "Grad encoder.encoder.4.weight: 3.928403748432174e-05\n", + "Grad encoder.encoder.4.bias: 9.636946197133511e-05\n", + "Grad decoder.fc1.0.weight: 1.1596412150538526e-05\n", + "Grad decoder.fc1.0.bias: 2.7113879696116783e-05\n", + "Grad decoder.fc1.2.weight: 1.2734470146824606e-05\n", + "Grad decoder.fc1.2.bias: 5.4107298637973145e-05\n", + "Grad decoder.fc1.4.weight: 1.21083630801877e-05\n", + "Grad decoder.fc1.4.bias: 0.00011387967970222235\n", + "Grad decoder.fc2.weight: 7.210498733911663e-05\n", + "Grad decoder.fc2.bias: 0.001695981016382575\n", + "Grad _memory_unit.weight_ih_l0: 4.856391342400457e-07\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.735531208803877e-07\n", + "Grad _memory_unit.bias_hh_l0: 3.185083414791734e-07\n", + "Grad _memory_unit.weight_ih_l1: 3.5043007073909394e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.1420567716413643e-05\n", + "Grad _memory_unit.bias_hh_l1: 5.5449249884986784e-06\n", + "Data X Sample: tensor([[1.6167, 1.7522, 1.7235, 1.7624, 2.0780, 2.1524, 2.1246, 2.7952, 4.1814,\n", + " 4.2952, 4.3968, 4.3332, 4.0879, 4.0243, 3.7475, 3.7334, 3.7218, 3.6192,\n", + " 3.5374, 3.5762, 3.6215, 3.5624, 3.1375, 2.9776, 2.9916, 2.9671, 2.9357,\n", + " 3.0263, 3.0737, 3.2195, 3.3455, 3.2690, 3.7445, 2.7622, 4.4464, 4.8572,\n", + " 5.1207, 5.4065, 6.0532, 5.6998, 1.1263, 0.6313, 0.6144, 1.0735, 1.5896,\n", + " 1.8127, 1.0810, 1.7280]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5920, 0.3228, -0.8224, 1.2872, 0.9380, 0.1228, 0.5816, -0.0702,\n", + " 0.1461, -0.0184, -0.7758, 1.4310, -0.4023, 0.5657, 1.1956, 1.6737,\n", + " -0.5521, -0.9275, -1.2081, -1.6832, -0.4959, -0.6098, -0.5035, -0.4100,\n", + " -0.6356, -0.4504, -0.4752, -1.1440, -1.4315, 0.5215, -0.3592, 0.1885,\n", + " 0.1771, 1.3656, 1.8161, -0.8927, -0.6659, 0.8265, 0.5443, -1.0785,\n", + " -1.1986, -0.6497, 1.0337]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3199, -0.3590, -0.1003, -0.1618, -0.0300, 0.1705, 0.2507, 0.3853,\n", + " 0.2610, 0.2945, 0.3241, -0.2081, -0.2062, -0.3560, -0.2720, -0.3249,\n", + " -0.2570, -0.0896, -0.1192, -0.1212, -0.0952, -0.0145, -0.0310, -0.0156,\n", + " -0.0147, 0.0701, -0.0416, -0.1298, -0.2592, -0.2939, -0.2655, -0.2622,\n", + " -0.3559, -0.4125, -0.2068, -0.2578, -0.0822, -0.0222, 0.0431, 0.4012,\n", + " 0.3942, 0.4319, 0.3290]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00015068441280163825\n", + "Grad encoder.fc1.bias: 0.0004206832963973284\n", + "Grad encoder.encoder.0.weight: 3.0673010769532993e-05\n", + "Grad encoder.encoder.0.bias: 0.00039586625644005835\n", + "Grad encoder.encoder.2.weight: 2.1502415620489046e-05\n", + "Grad encoder.encoder.2.bias: 0.00025307718897238374\n", + "Grad encoder.encoder.4.weight: 8.49406496854499e-05\n", + "Grad encoder.encoder.4.bias: 0.0007095879409462214\n", + "Grad decoder.fc1.0.weight: 3.7618574424413964e-05\n", + "Grad decoder.fc1.0.bias: 0.00019959571363870054\n", + "Grad decoder.fc1.2.weight: 6.073784606996924e-05\n", + "Grad decoder.fc1.2.bias: 0.0002206435747211799\n", + "Grad decoder.fc1.4.weight: 8.578725100960582e-05\n", + "Grad decoder.fc1.4.bias: 0.000320302729960531\n", + "Grad decoder.fc2.weight: 0.0001078712593880482\n", + "Grad decoder.fc2.bias: 0.0020855641923844814\n", + "Grad _memory_unit.weight_ih_l0: 5.906185833737254e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.75511611107504e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.4101979104452766e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.2614840418100357e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.844484985573217e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.900688377849292e-05\n", + "Data X Sample: tensor([[1.5350, 1.6007, 1.7896, 1.8935, 1.9943, 2.1318, 2.1677, 2.0230, 3.3954,\n", + " 4.1752, 4.0828, 4.0995, 3.6818, 3.7952, 3.6492, 3.3984, 3.4168, 3.4354,\n", + " 3.4548, 3.3456, 3.3050, 3.2624, 2.9930, 2.8783, 2.8171, 2.7947, 2.8664,\n", + " 2.9039, 2.9210, 3.0491, 3.1111, 3.2165, 3.4717, 2.5128, 4.2356, 4.6991,\n", + " 5.0735, 5.3164, 5.8757, 5.6374, 1.1359, 0.5954, 0.6386, 1.1309, 1.7363,\n", + " 1.7898, 1.1966, 1.8141]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6260, -0.5794, 0.5469, -0.9557, -0.8567, 0.1148, -0.2512, 0.7061,\n", + " 0.7730, 0.7003, 0.7536, -0.6974, -0.6697, -1.2158, 0.3701, -1.0898,\n", + " -0.8632, -1.3232, 0.4544, -0.7566, -0.0164, 0.1002, -1.3233, -0.8890,\n", + " -0.8070, 0.0423, 1.1709, 0.6370, 0.3478, -0.0718, -0.7099, -0.9694,\n", + " -0.6624, -1.6547, -0.8386, -0.4217, -0.7076, 0.7966, 0.7551, 0.6621,\n", + " 0.7696, 0.9023, 0.8024]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3396, -0.3775, -0.1054, -0.1622, -0.0225, 0.1876, 0.2745, 0.4116,\n", + " 0.2827, 0.3137, 0.3514, -0.2235, -0.2218, -0.3816, -0.2895, -0.3428,\n", + " -0.2630, -0.0894, -0.1299, -0.1273, -0.1000, -0.0144, -0.0296, -0.0129,\n", + " -0.0136, 0.0731, -0.0529, -0.1488, -0.2805, -0.3101, -0.2898, -0.2841,\n", + " -0.3795, -0.4442, -0.2191, -0.2764, -0.0838, -0.0271, 0.0518, 0.4270,\n", + " 0.4131, 0.4606, 0.3478]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00017138093244284391\n", + "Grad encoder.fc1.bias: 0.0003671838785521686\n", + "Grad encoder.encoder.0.weight: 4.5845947170164436e-05\n", + "Grad encoder.encoder.0.bias: 0.00022173626348376274\n", + "Grad encoder.encoder.2.weight: 2.20452893699985e-05\n", + "Grad encoder.encoder.2.bias: 0.00016337023407686502\n", + "Grad encoder.encoder.4.weight: 6.420206045731902e-05\n", + "Grad encoder.encoder.4.bias: 0.0004894756712019444\n", + "Grad decoder.fc1.0.weight: 2.3327196686295792e-05\n", + "Grad decoder.fc1.0.bias: 0.0002004348352784291\n", + "Grad decoder.fc1.2.weight: 3.19653918268159e-05\n", + "Grad decoder.fc1.2.bias: 0.00020757193851750344\n", + "Grad decoder.fc1.4.weight: 4.520321817835793e-05\n", + "Grad decoder.fc1.4.bias: 0.0003988774260506034\n", + "Grad decoder.fc2.weight: 0.00011704924691002816\n", + "Grad decoder.fc2.bias: 0.0023869643919169903\n", + "Grad _memory_unit.weight_ih_l0: 4.10824577556923e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.7947562810149975e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.41056259762263e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.5748084933875361e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.305837112246081e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.6864818210015073e-05\n", + "Data X Sample: tensor([[1.5128, 1.8061, 1.8062, 1.9766, 2.1889, 2.2158, 2.3541, 2.4261, 2.5094,\n", + " 2.4817, 2.4649, 2.5882, 2.5344, 2.4674, 2.4563, 2.3248, 2.3082, 2.4683,\n", + " 2.5296, 2.4102, 2.4511, 2.4648, 2.4893, 2.3649, 2.3179, 2.4500, 2.4056,\n", + " 2.4390, 2.1856, 2.2729, 2.1977, 2.2659, 2.2594, 1.4669, 1.9168, 1.7536,\n", + " 1.6400, 1.5186, 1.5466, 1.6030, 1.2504, 0.7329, 0.6427, 1.2142, 1.7046,\n", + " 1.9728, 1.2102, 1.8453]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.8966, 0.7806, 0.9406, 0.2637, 0.6269, -0.4318, -0.5327, -0.3675,\n", + " 0.5160, -0.1318, -0.7481, -0.2724, 0.7644, 0.7480, 0.8575, 0.8247,\n", + " 1.3157, 0.5238, 0.3139, 0.0404, 1.2473, 0.4619, 0.1491, 0.1499,\n", + " -0.7603, 1.7522, -0.8687, 0.0436, 0.1216, 0.2422, 0.5810, 0.4556,\n", + " 0.8348, 0.5379, -0.5988, -0.4394, 0.1343, 0.7816, 0.0040, -0.4545,\n", + " -0.1599, -0.4104, -1.3769]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4128, 0.3557, 0.1002, 0.2663, 0.0715, -0.1693, -0.3979, -0.4545,\n", + " -0.2471, -0.3142, -0.2755, 0.1752, 0.1773, 0.2822, 0.2126, 0.3179,\n", + " 0.2050, 0.1237, 0.0961, 0.1702, 0.0709, 0.1009, 0.0620, 0.0286,\n", + " 0.0798, 0.0108, -0.0810, 0.0368, 0.1803, 0.2971, 0.3089, 0.2587,\n", + " 0.2762, 0.2916, 0.1652, 0.1842, -0.0403, -0.0018, -0.0082, -0.3199,\n", + " -0.3473, -0.3170, -0.2984]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00028117067995481193\n", + "Grad encoder.fc1.bias: 0.0003378131368663162\n", + "Grad encoder.encoder.0.weight: 8.03578514023684e-05\n", + "Grad encoder.encoder.0.bias: 0.0002881861000787467\n", + "Grad encoder.encoder.2.weight: 3.8800535548944026e-05\n", + "Grad encoder.encoder.2.bias: 0.0003678572247736156\n", + "Grad encoder.encoder.4.weight: 0.00011713737330865115\n", + "Grad encoder.encoder.4.bias: 0.0010607382282614708\n", + "Grad decoder.fc1.0.weight: 4.5862860133638605e-05\n", + "Grad decoder.fc1.0.bias: 0.0003893481916747987\n", + "Grad decoder.fc1.2.weight: 5.7795765314949676e-05\n", + "Grad decoder.fc1.2.bias: 0.000282699940726161\n", + "Grad decoder.fc1.4.weight: 7.254114461829886e-05\n", + "Grad decoder.fc1.4.bias: 0.00038138788659125566\n", + "Grad decoder.fc2.weight: 8.207387145375833e-05\n", + "Grad decoder.fc2.bias: 0.0018265254329890013\n", + "Grad _memory_unit.weight_ih_l0: 4.4091689233027864e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.3987584174610674e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.705580325506162e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.356431423322647e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 8.252788393292576e-05\n", + "Grad _memory_unit.bias_hh_l1: 4.066402107127942e-05\n", + "Data X Sample: tensor([[1.3812, 1.6080, 1.7701, 1.7820, 1.8645, 2.1215, 2.0830, 1.9690, 2.9756,\n", + " 4.0662, 4.2668, 4.0858, 4.0723, 3.7434, 3.6946, 3.5502, 3.4419, 3.4741,\n", + " 3.3639, 3.3940, 3.3884, 3.3006, 2.9038, 2.8020, 2.8396, 2.8861, 2.9756,\n", + " 3.0141, 2.8898, 3.0753, 3.1426, 3.2524, 3.5465, 2.5288, 4.2920, 4.6577,\n", + " 4.9870, 5.1865, 5.7426, 5.6629, 1.1359, 0.6651, 0.6851, 1.1367, 1.5262,\n", + " 1.7441, 1.1762, 1.6499]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4937, -0.5946, -1.2731, 0.4681, -0.4793, 0.4038, -0.0322, 0.4892,\n", + " 0.9805, 0.5995, 0.5493, -0.5377, -0.0180, 0.0122, -0.6211, -0.7552,\n", + " -0.7433, 0.3163, 0.7675, -0.7937, -0.1307, -1.6294, -0.8005, 0.3167,\n", + " 3.7779, 5.7369, -0.3167, -0.6262, 0.3780, -0.4330, -1.8695, -0.5192,\n", + " -1.3130, -0.4214, -0.3315, -1.2673, -0.3045, -0.6429, -0.9853, 0.5291,\n", + " 0.8441, 0.8818, 0.7018]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3423, -0.3809, -0.1077, -0.1670, -0.0284, 0.1871, 0.2775, 0.4158,\n", + " 0.2932, 0.3186, 0.3581, -0.2248, -0.2267, -0.3865, -0.2927, -0.3517,\n", + " -0.2664, -0.0850, -0.1298, -0.1304, -0.0972, -0.0189, -0.0328, -0.0129,\n", + " -0.0143, 0.0700, -0.0537, -0.1520, -0.2817, -0.3114, -0.2978, -0.2914,\n", + " -0.3839, -0.4518, -0.2252, -0.2783, -0.0796, -0.0271, 0.0566, 0.4323,\n", + " 0.4193, 0.4673, 0.3535]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00023347785463556647\n", + "Grad encoder.fc1.bias: 0.0002150154032278806\n", + "Grad encoder.encoder.0.weight: 6.523993943119422e-05\n", + "Grad encoder.encoder.0.bias: 0.00020032595784869045\n", + "Grad encoder.encoder.2.weight: 3.5365999792702496e-05\n", + "Grad encoder.encoder.2.bias: 0.0002158407005481422\n", + "Grad encoder.encoder.4.weight: 0.00010719900456024334\n", + "Grad encoder.encoder.4.bias: 0.0008500353433191776\n", + "Grad decoder.fc1.0.weight: 3.745306094060652e-05\n", + "Grad decoder.fc1.0.bias: 0.00024061475414782763\n", + "Grad decoder.fc1.2.weight: 5.119521665619686e-05\n", + "Grad decoder.fc1.2.bias: 0.0002291593700647354\n", + "Grad decoder.fc1.4.weight: 6.6483007685747e-05\n", + "Grad decoder.fc1.4.bias: 0.00033944653114303946\n", + "Grad decoder.fc2.weight: 0.00010373019176768139\n", + "Grad decoder.fc2.bias: 0.0017837961204349995\n", + "Grad _memory_unit.weight_ih_l0: 4.7189842007355765e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.1871582905296236e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.6624699128442444e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.240270077891182e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.402383926091716e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.721790562849492e-05\n", + "Data X Sample: tensor([[1.1096, 1.2613, 1.4666, 1.6508, 1.7587, 1.9344, 1.9412, 2.1110, 3.7689,\n", + " 4.0156, 3.9812, 3.7489, 3.6418, 3.5962, 3.5231, 3.2644, 3.2344, 3.3561,\n", + " 3.2978, 3.3047, 3.3295, 3.2164, 2.8725, 2.7714, 2.7796, 2.9567, 2.9224,\n", + " 3.0549, 3.0043, 3.3112, 3.3315, 3.3326, 3.3705, 2.4464, 4.0370, 4.5629,\n", + " 4.7412, 5.2501, 5.8377, 5.5324, 0.9688, 0.5596, 0.5194, 0.9702, 1.3359,\n", + " 1.6583, 1.1354, 1.6342]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3448, -0.4718, 0.0309, -0.4976, 0.3325, -0.2665, 0.0597, 0.3329,\n", + " 1.1271, 0.1108, 0.3899, 0.6472, 1.8856, 0.2574, 0.7419, 0.0594,\n", + " 0.3798, -0.2152, -0.1406, -0.7746, -0.1186, -0.1583, -0.2125, -0.9271,\n", + " 1.0415, 1.3272, -0.8531, -0.1742, 0.0789, -0.0893, -0.6030, 0.0942,\n", + " -0.4427, -0.8773, 0.6196, 0.5355, 0.4832, -0.1221, -0.5562, 0.2873,\n", + " -0.4984, 0.3136, -0.0470]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.3243, -0.3652, -0.1064, -0.1687, -0.0402, 0.1705, 0.2569, 0.3923,\n", + " 0.2790, 0.3026, 0.3364, -0.2117, -0.2141, -0.3647, -0.2781, -0.3400,\n", + " -0.2615, -0.0787, -0.1194, -0.1277, -0.0918, -0.0237, -0.0374, -0.0164,\n", + " -0.0147, 0.0658, -0.0442, -0.1366, -0.2606, -0.2948, -0.2798, -0.2747,\n", + " -0.3632, -0.4259, -0.2169, -0.2636, -0.0740, -0.0225, 0.0509, 0.4108,\n", + " 0.4049, 0.4432, 0.3378]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00021227488468866795\n", + "Grad encoder.fc1.bias: 0.0002310271665919572\n", + "Grad encoder.encoder.0.weight: 5.760162457590923e-05\n", + "Grad encoder.encoder.0.bias: 0.00022032452397979796\n", + "Grad encoder.encoder.2.weight: 3.917217691196129e-05\n", + "Grad encoder.encoder.2.bias: 0.00019949456327594817\n", + "Grad encoder.encoder.4.weight: 6.768980529159307e-05\n", + "Grad encoder.encoder.4.bias: 0.00024283200036734343\n", + "Grad decoder.fc1.0.weight: 2.6037796487798914e-05\n", + "Grad decoder.fc1.0.bias: 0.00011388010898372158\n", + "Grad decoder.fc1.2.weight: 2.8037869924446568e-05\n", + "Grad decoder.fc1.2.bias: 0.00016057584434747696\n", + "Grad decoder.fc1.4.weight: 3.4429001971147954e-05\n", + "Grad decoder.fc1.4.bias: 0.00017410672444384545\n", + "Grad decoder.fc2.weight: 9.330168541055173e-05\n", + "Grad decoder.fc2.bias: 0.0017755613662302494\n", + "Grad _memory_unit.weight_ih_l0: 1.8220930542156566e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.961178547091549e-06\n", + "Grad _memory_unit.bias_hh_l0: 2.660776772245299e-06\n", + "Grad _memory_unit.weight_ih_l1: 6.683020501441206e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.1683161321561784e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.0717772056523245e-05\n", + "Data X Sample: tensor([[1.6019, 1.8075, 1.9940, 2.0925, 2.1941, 2.2526, 2.3973, 2.4914, 2.4703,\n", + " 2.5291, 2.5442, 2.6291, 2.5055, 2.4811, 2.4967, 2.2674, 2.3554, 2.4044,\n", + " 2.3500, 2.4158, 2.5370, 2.5735, 2.6387, 2.6149, 2.5656, 2.5362, 2.5334,\n", + " 2.4798, 2.2966, 2.4432, 2.3797, 2.3709, 2.2726, 1.4624, 1.9658, 1.8242,\n", + " 1.6302, 1.5663, 1.5656, 1.6058, 1.2695, 0.6691, 0.7437, 1.2917, 1.7918,\n", + " 2.1615, 1.2714, 2.0408]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.5643, 0.7312, -0.1484, 0.0717, -0.9352, -0.1042, -0.0801, -0.4763,\n", + " -0.3694, -0.8545, -0.5373, 0.0708, -2.6336, 1.3840, 0.4879, 0.6002,\n", + " 1.5612, -0.7731, 0.5468, 0.4551, 0.0744, -0.2147, 0.1273, -0.6889,\n", + " -1.0525, -0.5598, -0.5888, 0.7430, 0.0239, 0.5586, 0.1270, 0.5744,\n", + " -0.3637, 0.0566, -0.3295, 0.2773, 0.8379, -0.5278, 1.1238, -0.1701,\n", + " -0.0611, -0.4090, -0.5369]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4106, 0.3586, 0.0926, 0.2407, 0.0506, -0.1785, -0.3962, -0.4443,\n", + " -0.2349, -0.3149, -0.2760, 0.1686, 0.1789, 0.2775, 0.1994, 0.3088,\n", + " 0.2060, 0.1339, 0.1108, 0.1720, 0.0673, 0.1037, 0.0503, 0.0190,\n", + " 0.0785, 0.0106, -0.0834, 0.0333, 0.1791, 0.2974, 0.3078, 0.2456,\n", + " 0.2778, 0.2855, 0.1492, 0.1753, -0.0289, -0.0032, 0.0177, -0.3112,\n", + " -0.3459, -0.3288, -0.2916]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 5.130683348397724e-05\n", + "Grad encoder.fc1.bias: 7.302494486793876e-05\n", + "Grad encoder.encoder.0.weight: 1.2042857633787207e-05\n", + "Grad encoder.encoder.0.bias: 8.574012463213876e-05\n", + "Grad encoder.encoder.2.weight: 1.0822659533005208e-05\n", + "Grad encoder.encoder.2.bias: 0.00013269326882436872\n", + "Grad encoder.encoder.4.weight: 3.2330688554793596e-05\n", + "Grad encoder.encoder.4.bias: 0.00041260055149905384\n", + "Grad decoder.fc1.0.weight: 1.733259705360979e-05\n", + "Grad decoder.fc1.0.bias: 0.0001556998904561624\n", + "Grad decoder.fc1.2.weight: 2.1935989934718236e-05\n", + "Grad decoder.fc1.2.bias: 0.00014064293645787984\n", + "Grad decoder.fc1.4.weight: 3.136152372462675e-05\n", + "Grad decoder.fc1.4.bias: 0.00030266857356764376\n", + "Grad decoder.fc2.weight: 0.00011363004159647971\n", + "Grad decoder.fc2.bias: 0.0018083163304254413\n", + "Grad _memory_unit.weight_ih_l0: 1.9492320006975206e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.2449134374037385e-05\n", + "Grad _memory_unit.bias_hh_l0: 6.499412847915664e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.2360723076199065e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.9550875953864306e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.989978591154795e-05\n", + "Data X Sample: tensor([[1.5467, 1.6735, 1.7686, 1.9941, 2.1531, 2.3646, 2.3988, 2.5014, 2.5362,\n", + " 2.6350, 2.6362, 2.6875, 2.4656, 2.4456, 2.5269, 2.5108, 2.3476, 2.4953,\n", + " 2.5462, 2.4623, 2.4732, 2.4188, 2.3785, 2.3038, 2.3310, 2.4186, 2.2590,\n", + " 2.3493, 2.1856, 2.2500, 2.0962, 2.2659, 2.1934, 1.4326, 1.9364, 1.7950,\n", + " 1.5732, 1.5318, 1.6353, 1.6228, 1.1502, 0.7169, 0.6770, 1.1539, 1.7442,\n", + " 2.0128, 1.3598, 2.0330]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1648, -0.0938, 1.1706, 0.5722, -0.0923, 0.4856, -0.3821, -0.1295,\n", + " 0.0774, -0.4508, -0.5815, 1.1360, -0.3055, 0.3399, 1.2086, 0.8630,\n", + " 0.3886, 0.0070, 0.5757, 1.2835, -0.3797, -0.3842, -1.1789, -0.5492,\n", + " 0.0589, -1.0229, -1.4827, 0.0028, -0.6395, -1.4164, -0.4367, 0.3363,\n", + " -0.1986, 0.3631, -0.1492, 0.8546, -0.0457, -0.0751, 1.8119, -0.1178,\n", + " -0.2566, -0.0840, -0.5075]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3576, 0.3150, 0.0789, 0.1893, 0.0297, -0.1617, -0.3519, -0.3790,\n", + " -0.1983, -0.2723, -0.2383, 0.1419, 0.1483, 0.2342, 0.1666, 0.2591,\n", + " 0.1728, 0.1145, 0.1044, 0.1544, 0.0630, 0.0899, 0.0295, 0.0054,\n", + " 0.0735, 0.0226, -0.0727, 0.0288, 0.1480, 0.2464, 0.2718, 0.2117,\n", + " 0.2355, 0.2434, 0.1207, 0.1458, -0.0266, -0.0033, 0.0220, -0.2653,\n", + " -0.2899, -0.2840, -0.2433]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 3.4573604352772236e-05\n", + "Grad encoder.fc1.bias: 0.00045964313903823495\n", + "Grad encoder.encoder.0.weight: 1.4952442143112421e-05\n", + "Grad encoder.encoder.0.bias: 0.0005449303425848484\n", + "Grad encoder.encoder.2.weight: 1.5288946087821387e-05\n", + "Grad encoder.encoder.2.bias: 0.00040612235898151994\n", + "Grad encoder.encoder.4.weight: 6.759278767276555e-05\n", + "Grad encoder.encoder.4.bias: 0.0009353694040328264\n", + "Grad decoder.fc1.0.weight: 2.8813925382564776e-05\n", + "Grad decoder.fc1.0.bias: 0.0002665316569618881\n", + "Grad decoder.fc1.2.weight: 3.984345676144585e-05\n", + "Grad decoder.fc1.2.bias: 0.00027188556850887835\n", + "Grad decoder.fc1.4.weight: 4.9486981879454106e-05\n", + "Grad decoder.fc1.4.bias: 0.0003576484741643071\n", + "Grad decoder.fc2.weight: 0.0001339801528956741\n", + "Grad decoder.fc2.bias: 0.002170940162613988\n", + "Grad _memory_unit.weight_ih_l0: 5.359164788387716e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.9333256204845384e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.819763363339007e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.3153720576374326e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.7328004913870245e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.8008493245579302e-05\n", + "Data X Sample: tensor([[2.6553, 2.8955, 3.0714, 3.4525, 3.3295, 3.7141, 3.7330, 3.7762, 3.7201,\n", + " 3.8577, 4.0288, 3.8405, 3.8593, 3.6262, 3.6441, 3.5242, 3.5394, 3.4528,\n", + " 3.4155, 3.4200, 3.2191, 3.2624, 3.0436, 2.9413, 2.7570, 2.8522, 2.7172,\n", + " 2.8305, 2.7094, 2.8788, 2.8136, 2.7854, 2.8689, 2.0711, 3.5125, 3.8989,\n", + " 4.2653, 4.6141, 5.1088, 4.9451, 2.1334, 1.1072, 1.0428, 1.9232, 2.9929,\n", + " 3.3280, 2.2029, 3.0338]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1019, 0.0878, -0.1860, -0.1211, -1.0508, -0.8451, -1.1650, -2.3857,\n", + " -0.2040, -0.8047, -0.4691, -0.1337, 1.4374, 0.8297, -0.7747, -1.3776,\n", + " 0.7985, -0.3484, 0.1508, -0.0645, -1.5658, 0.7403, -0.2686, -1.1724,\n", + " -0.2108, -0.4636, 0.2565, 0.2822, 1.4443, 1.1259, 0.6180, 0.3735,\n", + " 1.0813, -0.6354, 1.0106, 1.7736, 0.6586, 0.3924, 0.7106, 0.7896,\n", + " 1.0134, 0.3396, -0.2878]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1836, -0.2390, -0.0891, -0.1795, -0.1119, 0.0462, 0.0989, 0.2127,\n", + " 0.1478, 0.1767, 0.1564, -0.1096, -0.1074, -0.1939, -0.1627, -0.2351,\n", + " -0.2149, -0.0599, -0.0441, -0.0951, -0.0526, -0.0378, -0.0588, -0.0416,\n", + " -0.0190, 0.0397, 0.0277, -0.0139, -0.1110, -0.1797, -0.1320, -0.1286,\n", + " -0.2062, -0.2175, -0.1377, -0.1450, -0.0489, 0.0068, 0.0039, 0.2375,\n", + " 0.2777, 0.2530, 0.2142]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002709869295358658\n", + "Grad encoder.fc1.bias: 0.0005887681618332863\n", + "Grad encoder.encoder.0.weight: 7.93362851254642e-05\n", + "Grad encoder.encoder.0.bias: 0.00039912035572342575\n", + "Grad encoder.encoder.2.weight: 4.2472507630009204e-05\n", + "Grad encoder.encoder.2.bias: 0.00031809689244255424\n", + "Grad encoder.encoder.4.weight: 0.0001138434890890494\n", + "Grad encoder.encoder.4.bias: 0.0006222098018042743\n", + "Grad decoder.fc1.0.weight: 3.494614429655485e-05\n", + "Grad decoder.fc1.0.bias: 0.00018860802811104804\n", + "Grad decoder.fc1.2.weight: 3.9825688872952014e-05\n", + "Grad decoder.fc1.2.bias: 0.00017234744154848158\n", + "Grad decoder.fc1.4.weight: 4.568193253362551e-05\n", + "Grad decoder.fc1.4.bias: 0.00019909831462427974\n", + "Grad decoder.fc2.weight: 5.451926699606702e-05\n", + "Grad decoder.fc2.bias: 0.0019168879371136427\n", + "Grad _memory_unit.weight_ih_l0: 4.3516761252249125e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.279443990322761e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.633167630643584e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.213724658555293e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.9881379052530974e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.9531944417394698e-05\n", + "Data X Sample: tensor([[1.4194, 1.6764, 1.8437, 1.9110, 2.0455, 2.1038, 2.1107, 2.0655, 3.5102,\n", + " 4.1167, 4.1240, 4.0703, 3.7616, 3.7680, 3.6769, 3.5269, 3.5316, 3.4799,\n", + " 3.4796, 3.3717, 3.2706, 3.3267, 3.0195, 2.7695, 2.7871, 2.9697, 2.8531,\n", + " 2.9529, 3.0251, 3.0852, 3.2755, 3.3519, 3.5399, 2.5768, 4.3631, 4.7039,\n", + " 5.0204, 5.1521, 5.7553, 5.6686, 1.1311, 0.6791, 0.6629, 1.1855, 1.6927,\n", + " 1.9099, 1.1898, 1.6733]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.2753, -0.4478, -0.7545, 0.5509, 1.1686, 2.6017, 0.3809, 0.4556,\n", + " 0.1936, 0.4286, 0.6179, 0.6206, -1.5802, -0.6808, -0.4331, -0.0504,\n", + " -1.2336, -0.6649, -0.3409, -0.3986, -0.7355, -2.5090, -1.8822, -0.4322,\n", + " -0.2593, 0.4102, 0.1298, -0.4233, 0.0308, -0.7457, -0.3853, 0.0669,\n", + " -0.7217, -0.1788, -0.0693, -0.4187, 0.8291, -0.3710, 1.2050, 0.6706,\n", + " 0.6781, 1.3978, 0.3344]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2552, -0.3070, -0.1004, -0.1746, -0.0795, 0.1090, 0.1823, 0.3042,\n", + " 0.2215, 0.2421, 0.2506, -0.1588, -0.1669, -0.2839, -0.2190, -0.2911,\n", + " -0.2383, -0.0618, -0.0804, -0.1145, -0.0717, -0.0396, -0.0539, -0.0313,\n", + " -0.0173, 0.0517, -0.0104, -0.0759, -0.1875, -0.2408, -0.2140, -0.2128,\n", + " -0.2879, -0.3245, -0.1786, -0.2036, -0.0545, -0.0057, 0.0287, 0.3278,\n", + " 0.3455, 0.3517, 0.2781]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001325197663391009\n", + "Grad encoder.fc1.bias: 0.00010764000762719661\n", + "Grad encoder.encoder.0.weight: 4.283597081666812e-05\n", + "Grad encoder.encoder.0.bias: 0.0001694037055131048\n", + "Grad encoder.encoder.2.weight: 2.3640110157430172e-05\n", + "Grad encoder.encoder.2.bias: 0.00011616412666626275\n", + "Grad encoder.encoder.4.weight: 6.570348341483623e-05\n", + "Grad encoder.encoder.4.bias: 0.00025580916553735733\n", + "Grad decoder.fc1.0.weight: 1.6537353076273575e-05\n", + "Grad decoder.fc1.0.bias: 8.327765681315213e-05\n", + "Grad decoder.fc1.2.weight: 2.2260021069087088e-05\n", + "Grad decoder.fc1.2.bias: 0.00013025238877162337\n", + "Grad decoder.fc1.4.weight: 2.6407346013002098e-05\n", + "Grad decoder.fc1.4.bias: 0.0002603710745461285\n", + "Grad decoder.fc2.weight: 9.80772529146634e-05\n", + "Grad decoder.fc2.bias: 0.0019719868432730436\n", + "Grad _memory_unit.weight_ih_l0: 1.9425945083639817e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.059287104813848e-06\n", + "Grad _memory_unit.bias_hh_l0: 2.6146969958062982e-06\n", + "Grad _memory_unit.weight_ih_l1: 7.116591405065265e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.3900505109631922e-05\n", + "Grad _memory_unit.bias_hh_l1: 6.821406259405194e-06\n", + "Data X Sample: tensor([[1.7536, 2.2081, 2.7032, 2.6829, 3.0375, 3.1572, 3.2107, 3.2864, 3.4125,\n", + " 3.3695, 3.3944, 3.4101, 3.3045, 3.2963, 3.2154, 3.1139, 3.0410, 3.2304,\n", + " 3.1781, 3.1689, 3.2486, 3.0664, 2.9881, 2.7199, 2.6013, 2.5335, 2.4162,\n", + " 2.3452, 2.0850, 2.0437, 1.8617, 1.8348, 1.5752, 1.0664, 1.5197, 1.7317,\n", + " 1.8170, 2.1865, 2.5354, 2.5080, 1.5177, 0.9559, 0.9761, 1.7882, 2.4895,\n", + " 2.5103, 1.8017, 2.5569]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1436, 0.2041, -0.2584, -1.5286, 0.1500, 0.0964, 0.4318, 0.2363,\n", + " 0.0204, -0.1072, -0.0580, -0.2031, 0.1214, -0.3651, -0.5973, 0.3644,\n", + " -0.7090, 2.6740, -0.4823, 1.0109, -0.8810, 0.4338, -0.4174, -0.3603,\n", + " -0.7436, 3.7600, -0.3101, -0.4537, -0.5344, -0.4093, -0.0498, 0.1288,\n", + " 0.2268, -0.2775, -0.0063, -0.4215, -0.3740, -0.1765, -1.1357, -0.1966,\n", + " -0.2306, 0.2733, -0.9516]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1597, -0.2176, -0.0866, -0.1817, -0.1244, 0.0266, 0.0744, 0.1828,\n", + " 0.1272, 0.1548, 0.1266, -0.0921, -0.0909, -0.1661, -0.1429, -0.2176,\n", + " -0.2063, -0.0558, -0.0305, -0.0897, -0.0451, -0.0407, -0.0640, -0.0467,\n", + " -0.0186, 0.0347, 0.0375, 0.0067, -0.0875, -0.1632, -0.1086, -0.1066,\n", + " -0.1800, -0.1822, -0.1241, -0.1231, -0.0418, 0.0106, -0.0027, 0.2088,\n", + " 0.2562, 0.2212, 0.1937]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003708635922521353\n", + "Grad encoder.fc1.bias: 0.0011115786619484425\n", + "Grad encoder.encoder.0.weight: 0.00010834542626980692\n", + "Grad encoder.encoder.0.bias: 0.0007930463179945946\n", + "Grad encoder.encoder.2.weight: 5.672245242749341e-05\n", + "Grad encoder.encoder.2.bias: 0.0006406706525012851\n", + "Grad encoder.encoder.4.weight: 0.0001669383782427758\n", + "Grad encoder.encoder.4.bias: 0.0014370180433616042\n", + "Grad decoder.fc1.0.weight: 5.17850712640211e-05\n", + "Grad decoder.fc1.0.bias: 0.00033723871456459165\n", + "Grad decoder.fc1.2.weight: 6.0354483139235526e-05\n", + "Grad decoder.fc1.2.bias: 0.00023463135585188866\n", + "Grad decoder.fc1.4.weight: 7.371536048594862e-05\n", + "Grad decoder.fc1.4.bias: 0.0003613700100686401\n", + "Grad decoder.fc2.weight: 8.465070277452469e-05\n", + "Grad decoder.fc2.bias: 0.002033272059634328\n", + "Grad _memory_unit.weight_ih_l0: 1.233885905094212e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 9.083360055228695e-05\n", + "Grad _memory_unit.bias_hh_l0: 4.469899431569502e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.8672745884250617e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010021850903285667\n", + "Grad _memory_unit.bias_hh_l1: 4.9262009270023555e-05\n", + "Data X Sample: tensor([[1.6570, 1.8090, 2.1172, 2.2346, 2.3238, 2.4766, 2.4928, 2.6149, 2.6705,\n", + " 2.6855, 2.6425, 2.6895, 2.5632, 2.4865, 2.4614, 2.5683, 2.4922, 2.5321,\n", + " 2.5173, 2.5273, 2.5174, 2.5260, 2.5206, 2.4756, 2.5037, 2.6772, 2.4428,\n", + " 2.4961, 2.3070, 2.4891, 2.3342, 2.2770, 1.9690, 1.2884, 1.7893, 1.7147,\n", + " 1.6656, 1.5345, 1.5846, 1.4725, 1.3411, 0.7448, 0.7599, 1.4180, 1.9068,\n", + " 2.1901, 1.5502, 2.1659]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.0155, 0.3913, 0.5152, -0.4398, 0.5562, 0.5196, -0.3045, -0.2409,\n", + " 0.1019, -0.0223, -0.1280, 0.0195, -1.4288, -0.0318, 1.0436, 0.1274,\n", + " 0.8760, -1.5069, 0.3191, 0.2719, -0.6051, 0.5986, -0.0738, 0.3143,\n", + " 1.0537, -0.3895, 1.1240, 0.1702, -0.2557, 0.3717, -0.6191, 0.3477,\n", + " -1.0984, -0.0663, -0.2192, -0.6423, 0.3306, -0.7806, 0.0545, 0.8287,\n", + " -0.7431, 0.4622, 1.2101]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3096, 0.2868, 0.0721, 0.1535, 0.0259, -0.1289, -0.3059, -0.3174,\n", + " -0.1458, -0.2226, -0.1883, 0.1212, 0.1133, 0.1884, 0.1387, 0.2239,\n", + " 0.1574, 0.1133, 0.1159, 0.1522, 0.0759, 0.0825, 0.0092, -0.0095,\n", + " 0.0789, 0.0349, -0.0818, 0.0215, 0.1020, 0.1824, 0.2316, 0.1673,\n", + " 0.1957, 0.2053, 0.0942, 0.1181, -0.0113, -0.0034, 0.0314, -0.2184,\n", + " -0.2418, -0.2522, -0.2038]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000284785230178386\n", + "Grad encoder.fc1.bias: 0.00037930600228719413\n", + "Grad encoder.encoder.0.weight: 8.528345642844215e-05\n", + "Grad encoder.encoder.0.bias: 0.00038987206062301993\n", + "Grad encoder.encoder.2.weight: 4.781594543601386e-05\n", + "Grad encoder.encoder.2.bias: 0.00036897259997203946\n", + "Grad encoder.encoder.4.weight: 0.00011918629752472043\n", + "Grad encoder.encoder.4.bias: 0.0008699805475771427\n", + "Grad decoder.fc1.0.weight: 4.614379577105865e-05\n", + "Grad decoder.fc1.0.bias: 0.00029924209229648113\n", + "Grad decoder.fc1.2.weight: 6.316674989648163e-05\n", + "Grad decoder.fc1.2.bias: 0.0003225401451345533\n", + "Grad decoder.fc1.4.weight: 7.092631130944937e-05\n", + "Grad decoder.fc1.4.bias: 0.0003960694884881377\n", + "Grad decoder.fc2.weight: 0.00010534679313423112\n", + "Grad decoder.fc2.bias: 0.0019046408124268055\n", + "Grad _memory_unit.weight_ih_l0: 4.854919097851962e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.839263808913529e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.9128317944705486e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.010034449995146e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 5.836059426655993e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.853002297342755e-05\n", + "Data X Sample: tensor([[1.6284, 1.6968, 1.8407, 1.9919, 2.1941, 2.2526, 2.1708, 3.4852, 4.2254,\n", + " 4.4390, 4.2097, 4.3176, 4.1744, 3.9343, 3.6820, 3.7293, 3.6605, 3.7256,\n", + " 3.6468, 3.5651, 3.5430, 3.5425, 2.9086, 3.0024, 2.9504, 3.0611, 3.0449,\n", + " 3.2588, 3.1396, 3.2719, 3.3175, 3.3823, 3.7951, 2.7714, 4.5077, 4.8085,\n", + " 4.9614, 5.4675, 5.9771, 5.7736, 1.1359, 0.6751, 0.6669, 1.2285, 1.8909,\n", + " 2.0357, 1.3326, 1.9001]], device='cuda:0')\n", + "Data Y Sample: tensor([[-2.1897e-01, -1.6467e+00, -1.1962e+00, -2.7252e-01, 3.6968e-01,\n", + " -2.4490e-01, -7.8943e-01, 8.0959e-01, -7.5139e-01, -5.6647e-01,\n", + " -5.2994e-01, 4.0783e-01, -9.3386e-02, -5.3694e-04, -1.3465e-01,\n", + " 6.0974e-01, -5.0477e-01, -2.2742e-01, 1.0453e+00, 2.6075e-01,\n", + " 1.8884e-01, -2.0895e-01, -3.6852e-01, -4.2983e-01, -4.4752e-01,\n", + " 9.1826e-02, 3.3761e-01, -5.1297e-01, 4.9142e-01, 9.2184e-02,\n", + " 1.7116e-01, 1.0927e+00, -2.7301e-01, -1.0869e+00, -4.8477e-01,\n", + " 4.3177e-01, -3.6154e-01, -6.1947e-01, -7.1302e-01, -6.9728e-01,\n", + " -1.5841e+00, -6.6711e-03, -7.1552e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1760, -0.2334, -0.0911, -0.1808, -0.1172, 0.0418, 0.0950, 0.2022,\n", + " 0.1462, 0.1696, 0.1485, -0.1018, -0.1055, -0.1869, -0.1554, -0.2306,\n", + " -0.2126, -0.0545, -0.0379, -0.0929, -0.0486, -0.0424, -0.0661, -0.0446,\n", + " -0.0171, 0.0362, 0.0267, -0.0077, -0.1050, -0.1798, -0.1297, -0.1298,\n", + " -0.1983, -0.2056, -0.1311, -0.1338, -0.0399, 0.0077, 0.0040, 0.2297,\n", + " 0.2722, 0.2436, 0.2075]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 7.421687769237906e-05\n", + "Grad encoder.fc1.bias: 9.915944247040898e-05\n", + "Grad encoder.encoder.0.weight: 2.5014986022142693e-05\n", + "Grad encoder.encoder.0.bias: 9.992782725021243e-05\n", + "Grad encoder.encoder.2.weight: 1.2188749678898603e-05\n", + "Grad encoder.encoder.2.bias: 7.026632374618202e-05\n", + "Grad encoder.encoder.4.weight: 3.578458563424647e-05\n", + "Grad encoder.encoder.4.bias: 0.00014251048560254276\n", + "Grad decoder.fc1.0.weight: 1.4657783140137326e-05\n", + "Grad decoder.fc1.0.bias: 7.544122490799055e-05\n", + "Grad decoder.fc1.2.weight: 2.5466571969445795e-05\n", + "Grad decoder.fc1.2.bias: 0.00011359008203726262\n", + "Grad decoder.fc1.4.weight: 3.4842123568523675e-05\n", + "Grad decoder.fc1.4.bias: 0.00013790761295240372\n", + "Grad decoder.fc2.weight: 7.436388114001602e-05\n", + "Grad decoder.fc2.bias: 0.0019369811052456498\n", + "Grad _memory_unit.weight_ih_l0: 6.264194780669641e-07\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.981700501753949e-06\n", + "Grad _memory_unit.bias_hh_l0: 2.0993661564716604e-06\n", + "Grad _memory_unit.weight_ih_l1: 4.475255082070362e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.1132065992569551e-05\n", + "Grad _memory_unit.bias_hh_l1: 5.487034286488779e-06\n", + "Data X Sample: tensor([[1.4396, 1.6925, 1.8227, 1.9263, 2.1924, 2.1996, 2.2786, 2.4659, 2.5460,\n", + " 2.5339, 2.4998, 2.6057, 2.3635, 2.4620, 2.4135, 2.4260, 2.4167, 2.3657,\n", + " 2.3644, 2.3749, 2.4242, 2.4831, 2.3520, 2.4298, 2.4774, 2.4944, 2.4668,\n", + " 2.5491, 2.2966, 2.3155, 2.3307, 2.2770, 2.2374, 1.4440, 1.9242, 1.7317,\n", + " 1.6125, 1.4576, 1.6353, 1.5718, 1.1597, 0.6791, 0.6609, 1.2974, 1.7482,\n", + " 1.8984, 1.2510, 1.9626]], device='cuda:0')\n", + "Data Y Sample: tensor([[-1.9555, -2.0144, 0.1536, 0.3249, 0.6457, 0.4066, 0.9787, -0.5954,\n", + " 0.1592, 0.2165, 0.3413, 0.3299, -1.3523, -0.6704, 0.3678, 0.7329,\n", + " -0.2615, -0.2561, 0.5105, 0.1081, 0.9370, 0.2084, -0.4874, -0.5810,\n", + " 0.2913, -1.1739, -0.1071, 0.3836, -0.9644, 0.5981, -0.0284, 0.2224,\n", + " -0.3763, 0.4547, 0.6554, 1.6841, -0.8287, -0.7806, 0.5660, 1.1520,\n", + " 0.8504, -0.7623, 0.4176]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3454, 0.3267, 0.0834, 0.1918, 0.0472, -0.1276, -0.3329, -0.3624,\n", + " -0.1543, -0.2419, -0.2029, 0.1425, 0.1325, 0.2123, 0.1610, 0.2654,\n", + " 0.1897, 0.1375, 0.1344, 0.1788, 0.0911, 0.0945, 0.0137, -0.0076,\n", + " 0.0914, 0.0281, -0.1018, 0.0220, 0.1110, 0.2008, 0.2528, 0.1820,\n", + " 0.2221, 0.2401, 0.1135, 0.1388, -0.0056, -0.0024, 0.0367, -0.2442,\n", + " -0.2808, -0.2930, -0.2360]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001291909284191206\n", + "Grad encoder.fc1.bias: 5.729289841838181e-05\n", + "Grad encoder.encoder.0.weight: 2.444301571813412e-05\n", + "Grad encoder.encoder.0.bias: 5.284020517137833e-05\n", + "Grad encoder.encoder.2.weight: 1.9370247173355892e-05\n", + "Grad encoder.encoder.2.bias: 8.161745790857822e-05\n", + "Grad encoder.encoder.4.weight: 4.2565436160657555e-05\n", + "Grad encoder.encoder.4.bias: 0.00019831175450235605\n", + "Grad decoder.fc1.0.weight: 2.0960851543350145e-05\n", + "Grad decoder.fc1.0.bias: 9.415544627700001e-05\n", + "Grad decoder.fc1.2.weight: 3.725740680238232e-05\n", + "Grad decoder.fc1.2.bias: 0.00016226347361225635\n", + "Grad decoder.fc1.4.weight: 4.346245259512216e-05\n", + "Grad decoder.fc1.4.bias: 0.0002616728306747973\n", + "Grad decoder.fc2.weight: 5.766923277406022e-05\n", + "Grad decoder.fc2.bias: 0.0018047059420496225\n", + "Grad _memory_unit.weight_ih_l0: 1.0658957307896344e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.267518306733109e-06\n", + "Grad _memory_unit.bias_hh_l0: 2.281491788380663e-06\n", + "Grad _memory_unit.weight_ih_l1: 6.175275757414056e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 1.6233087080763653e-05\n", + "Grad _memory_unit.bias_hh_l1: 8.051807526499033e-06\n", + "Data X Sample: tensor([[1.5372, 1.6240, 1.8152, 1.9504, 1.9089, 2.0861, 2.1677, 4.1609, 4.3279,\n", + " 4.4074, 4.5808, 4.4539, 4.2210, 4.0733, 3.9518, 3.7033, 3.7611, 3.6482,\n", + " 3.5725, 3.4665, 3.4841, 3.5257, 3.0363, 2.8783, 2.8941, 2.8052, 2.7679,\n", + " 2.8509, 2.9245, 3.1572, 3.2301, 3.1972, 3.7687, 2.7965, 4.6082, 4.9909,\n", + " 5.1148, 5.4913, 6.1926, 6.1254, 1.1597, 0.6154, 0.6851, 1.0506, 1.5936,\n", + " 1.8584, 1.1830, 1.7671]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4047, -0.8792, 0.1937, -0.1970, 0.1950, 0.9644, 0.2223, 0.1549,\n", + " -0.5716, 0.2676, 0.0440, -0.4704, -0.6768, -0.6358, -2.0026, -0.5089,\n", + " -0.2267, 2.1960, -0.7148, 0.4928, 0.6294, 0.0365, -0.5661, -0.0782,\n", + " 0.6776, 0.5990, -1.1796, -1.8101, -0.6057, 0.4149, -0.0642, 0.0517,\n", + " 0.1618, 0.1392, -1.0481, -0.1839, 0.1767, 0.3075, 0.3478, 0.2352,\n", + " 0.1939, 0.1908, 0.3506]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1944, -0.2521, -0.0965, -0.1785, -0.1085, 0.0596, 0.1177, 0.2257,\n", + " 0.1668, 0.1866, 0.1726, -0.1123, -0.1215, -0.2109, -0.1695, -0.2454,\n", + " -0.2184, -0.0546, -0.0476, -0.0975, -0.0538, -0.0439, -0.0693, -0.0418,\n", + " -0.0158, 0.0387, 0.0149, -0.0262, -0.1250, -0.1984, -0.1537, -0.1543,\n", + " -0.2186, -0.2337, -0.1389, -0.1461, -0.0383, 0.0055, 0.0116, 0.2533,\n", + " 0.2914, 0.2698, 0.2247]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0003289011074230075\n", + "Grad encoder.fc1.bias: 0.00023424977553077042\n", + "Grad encoder.encoder.0.weight: 9.436299296794459e-05\n", + "Grad encoder.encoder.0.bias: 0.00018886791076511145\n", + "Grad encoder.encoder.2.weight: 5.1768700359389186e-05\n", + "Grad encoder.encoder.2.bias: 0.00015858231927268207\n", + "Grad encoder.encoder.4.weight: 0.00012939676526002586\n", + "Grad encoder.encoder.4.bias: 0.00044744618935510516\n", + "Grad decoder.fc1.0.weight: 3.2481610105605796e-05\n", + "Grad decoder.fc1.0.bias: 0.0001209124457091093\n", + "Grad decoder.fc1.2.weight: 5.064832657808438e-05\n", + "Grad decoder.fc1.2.bias: 0.00021056114928796887\n", + "Grad decoder.fc1.4.weight: 6.575787119800225e-05\n", + "Grad decoder.fc1.4.bias: 0.0004837241140194237\n", + "Grad decoder.fc2.weight: 6.886640039738268e-05\n", + "Grad decoder.fc2.bias: 0.0023265795316547155\n", + "Grad _memory_unit.weight_ih_l0: 1.8902788951891125e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 7.256295248225797e-06\n", + "Grad _memory_unit.bias_hh_l0: 4.0623599488753825e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.0641184644555324e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.3506075851619244e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.6694681107765064e-05\n", + "Data X Sample: tensor([[2.7656, 3.0674, 2.8550, 2.1778, 2.5373, 2.7182, 3.7176, 4.0204, 4.0569,\n", + " 4.1594, 3.9210, 4.0313, 3.9569, 3.7652, 3.5836, 3.5105, 3.5300, 3.5089,\n", + " 3.6406, 3.3940, 3.3884, 3.2869, 2.9496, 2.8478, 2.7552, 2.7686, 2.6746,\n", + " 2.6266, 2.7129, 2.8101, 2.7961, 2.8435, 3.0581, 2.2267, 3.8851, 4.1397,\n", + " 4.5190, 4.9666, 5.4384, 5.5409, 2.0236, 1.0853, 1.0226, 1.6533, 2.2477,\n", + " 2.1500, 1.4278, 2.1034]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1266, -0.3392, -0.2033, -0.6261, 0.3141, -0.4255, -0.8094, 0.7293,\n", + " -0.5796, -0.4940, -0.6674, 0.9919, -0.0553, 0.2283, 0.8022, -1.0271,\n", + " -0.8205, -1.2152, -1.1245, -0.5724, -0.2397, -0.3927, -2.0070, -0.4564,\n", + " -0.5553, -0.6150, 0.1855, 0.6736, -0.5334, -0.3685, -0.9630, -0.1301,\n", + " 1.1107, -0.5166, 0.1586, 0.0772, -0.8287, 0.7428, -0.4768, 0.1904,\n", + " 0.8985, 0.3088, 0.8913]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1530, -0.2131, -0.0904, -0.1825, -0.1277, 0.0237, 0.0691, 0.1728,\n", + " 0.1240, 0.1484, 0.1174, -0.0838, -0.0870, -0.1592, -0.1361, -0.2126,\n", + " -0.2032, -0.0526, -0.0265, -0.0858, -0.0426, -0.0424, -0.0735, -0.0477,\n", + " -0.0154, 0.0317, 0.0362, 0.0098, -0.0801, -0.1630, -0.1063, -0.1048,\n", + " -0.1707, -0.1713, -0.1152, -0.1116, -0.0340, 0.0123, -0.0021, 0.2013,\n", + " 0.2518, 0.2122, 0.1879]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00029085762798786163\n", + "Grad encoder.fc1.bias: 0.00055690947920084\n", + "Grad encoder.encoder.0.weight: 7.65798322390765e-05\n", + "Grad encoder.encoder.0.bias: 0.0007727330084890127\n", + "Grad encoder.encoder.2.weight: 4.964521576766856e-05\n", + "Grad encoder.encoder.2.bias: 0.0005533467046916485\n", + "Grad encoder.encoder.4.weight: 0.000152051099576056\n", + "Grad encoder.encoder.4.bias: 0.0015432218788191676\n", + "Grad decoder.fc1.0.weight: 5.024675920139998e-05\n", + "Grad decoder.fc1.0.bias: 0.0003994692233391106\n", + "Grad decoder.fc1.2.weight: 6.759171083103865e-05\n", + "Grad decoder.fc1.2.bias: 0.0004658952821046114\n", + "Grad decoder.fc1.4.weight: 7.855654985178262e-05\n", + "Grad decoder.fc1.4.bias: 0.0007113636238500476\n", + "Grad decoder.fc2.weight: 0.0001252729125553742\n", + "Grad decoder.fc2.bias: 0.0025477446615695953\n", + "Grad _memory_unit.weight_ih_l0: 9.478430911258329e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.307338192826137e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.733371027512476e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.6537473988573765e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00010811603715410456\n", + "Grad _memory_unit.bias_hh_l1: 5.3427909733727574e-05\n", + "Data X Sample: tensor([[1.3632, 1.4827, 1.6874, 1.7930, 1.9448, 1.9874, 2.0552, 2.3537, 3.9300,\n", + " 4.0899, 4.2604, 4.1521, 3.9925, 3.9234, 3.7425, 3.5679, 3.5441, 3.6134,\n", + " 3.3391, 3.3717, 3.3295, 3.3864, 2.8460, 2.8611, 2.8209, 2.8104, 2.9144,\n", + " 2.9814, 2.8690, 3.0557, 3.1356, 3.2966, 3.5949, 2.6959, 4.2944, 4.7550,\n", + " 4.8139, 5.2554, 5.6792, 5.6572, 1.0500, 0.5974, 0.5922, 1.0419, 1.5579,\n", + " 1.8070, 1.2238, 1.6108]], device='cuda:0')\n", + "Data Y Sample: tensor([[-4.5823e-01, -7.8408e-01, 3.0367e-02, -4.7443e-01, -5.9545e-01,\n", + " -1.3593e+00, 1.6892e-01, 5.2181e-01, 1.3465e+00, 7.0046e-01,\n", + " 7.2783e-01, 8.1149e-02, -2.1002e-01, -1.7254e+00, 4.2771e-01,\n", + " -2.0441e+00, 9.0156e-02, 6.5017e-01, -5.9043e-01, -3.3417e-02,\n", + " 2.6457e+00, -1.9141e-01, 6.1176e-01, 2.5169e-02, -6.0698e-02,\n", + " -9.5185e-01, -3.6988e-02, -1.5179e-01, -8.3270e-01, -2.2973e-04,\n", + " -1.1091e-01, -5.8146e-01, 3.7015e-01, -1.0310e+00, -5.3566e-01,\n", + " -1.0928e+00, 8.4931e-02, 2.3763e-01, 5.6860e-01, 8.7216e-01,\n", + " 8.9061e-01, 7.5306e-01, 6.8892e-01]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2128, -0.2707, -0.1009, -0.1768, -0.0992, 0.0770, 0.1384, 0.2484,\n", + " 0.1847, 0.2014, 0.1937, -0.1223, -0.1370, -0.2341, -0.1820, -0.2594,\n", + " -0.2239, -0.0545, -0.0588, -0.1008, -0.0593, -0.0450, -0.0739, -0.0375,\n", + " -0.0133, 0.0409, 0.0016, -0.0437, -0.1430, -0.2147, -0.1766, -0.1768,\n", + " -0.2369, -0.2599, -0.1463, -0.1567, -0.0348, 0.0032, 0.0177, 0.2759,\n", + " 0.3098, 0.2944, 0.2410]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0006229750579223037\n", + "Grad encoder.fc1.bias: 0.0005078461254015565\n", + "Grad encoder.encoder.0.weight: 0.00016350609075743705\n", + "Grad encoder.encoder.0.bias: 0.00040248659206554294\n", + "Grad encoder.encoder.2.weight: 8.594270911999047e-05\n", + "Grad encoder.encoder.2.bias: 0.00032136007212102413\n", + "Grad encoder.encoder.4.weight: 0.0002402962272753939\n", + "Grad encoder.encoder.4.bias: 0.0006437390111386776\n", + "Grad decoder.fc1.0.weight: 6.029577707522549e-05\n", + "Grad decoder.fc1.0.bias: 0.00019598258950281888\n", + "Grad decoder.fc1.2.weight: 7.789075607433915e-05\n", + "Grad decoder.fc1.2.bias: 0.0003525249776430428\n", + "Grad decoder.fc1.4.weight: 9.725119889480993e-05\n", + "Grad decoder.fc1.4.bias: 0.0005765638197772205\n", + "Grad decoder.fc2.weight: 7.782389729982242e-05\n", + "Grad decoder.fc2.bias: 0.002789326012134552\n", + "Grad _memory_unit.weight_ih_l0: 2.417953282929375e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 6.747043698851485e-06\n", + "Grad _memory_unit.bias_hh_l0: 3.521233111314359e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.3662072433362482e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.4411863452987745e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.6936130123212934e-05\n", + "Data X Sample: tensor([[1.4173, 1.8381, 1.9729, 2.1144, 2.2794, 2.4029, 2.3341, 2.4559, 2.6021,\n", + " 2.5734, 2.5125, 2.5571, 2.4634, 2.3448, 2.3958, 2.3905, 2.3837, 2.4257,\n", + " 2.5544, 2.5292, 2.5885, 2.6301, 2.5640, 2.5767, 2.5750, 2.5126, 2.3736,\n", + " 2.4227, 1.9427, 1.9422, 1.7568, 1.7685, 1.5268, 0.9543, 1.3972, 1.3207,\n", + " 1.3510, 1.3887, 1.4325, 1.4327, 1.2886, 0.7926, 0.7700, 1.3232, 1.9940,\n", + " 2.0357, 1.3462, 2.0330]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0434, 0.5171, 0.4196, -0.4289, 0.8042, 0.7453, -0.4248, 0.0374,\n", + " -0.9258, -0.4677, -0.0894, 0.1019, 0.7300, 0.3699, 0.1808, 0.5417,\n", + " -0.4419, 0.4433, 0.6239, -0.8263, 1.3561, -1.0487, -0.0954, 0.4941,\n", + " -0.7767, 1.2264, -0.3853, -0.5456, 0.2607, -0.6311, -0.0231, -0.3409,\n", + " 0.0163, -0.1161, -0.1159, 0.0472, -0.9937, 0.0846, 1.1148, -0.1007,\n", + " -0.1254, -0.1605, -0.1346]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.2283, 0.2179, 0.0523, 0.1092, 0.0314, -0.0701, -0.2360, -0.2274,\n", + " -0.0798, -0.1485, -0.1199, 0.0926, 0.0689, 0.1201, 0.0931, 0.1676,\n", + " 0.1257, 0.0943, 0.0998, 0.1430, 0.0781, 0.0596, -0.0334, -0.0187,\n", + " 0.0857, 0.0438, -0.0918, 0.0051, 0.0419, 0.0946, 0.1628, 0.1111,\n", + " 0.1342, 0.1420, 0.0706, 0.0913, -0.0073, -0.0066, 0.0288, -0.1400,\n", + " -0.1518, -0.1857, -0.1337]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 5.257007433101535e-05\n", + "Grad encoder.fc1.bias: 0.0005559602286666632\n", + "Grad encoder.encoder.0.weight: 1.3890446098230314e-05\n", + "Grad encoder.encoder.0.bias: 0.00039861357072368264\n", + "Grad encoder.encoder.2.weight: 1.1135315617138986e-05\n", + "Grad encoder.encoder.2.bias: 0.00037925352808088064\n", + "Grad encoder.encoder.4.weight: 3.384150841156952e-05\n", + "Grad encoder.encoder.4.bias: 0.001180251594632864\n", + "Grad decoder.fc1.0.weight: 2.420225428068079e-05\n", + "Grad decoder.fc1.0.bias: 0.0003569322288967669\n", + "Grad decoder.fc1.2.weight: 3.761749394470826e-05\n", + "Grad decoder.fc1.2.bias: 0.0002619857550598681\n", + "Grad decoder.fc1.4.weight: 4.3402389565017074e-05\n", + "Grad decoder.fc1.4.bias: 0.0002826098061632365\n", + "Grad decoder.fc2.weight: 9.282214887207374e-05\n", + "Grad decoder.fc2.bias: 0.0019968776032328606\n", + "Grad _memory_unit.weight_ih_l0: 2.9319921850401442e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.7696592951542698e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.4240804375731386e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.8963723960041534e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.901195931481197e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.95210154238157e-05\n", + "Data X Sample: tensor([[1.5764, 1.7624, 1.9474, 1.9723, 2.1975, 2.2114, 2.3557, 2.5184, 2.4483,\n", + " 2.5907, 2.6267, 2.5765, 2.4811, 2.4920, 2.4841, 2.4944, 2.3979, 2.4102,\n", + " 2.4202, 2.3897, 2.5076, 2.4862, 2.4267, 2.4049, 2.4568, 2.4813, 2.4002,\n", + " 2.4879, 2.2133, 2.2598, 2.3412, 2.3405, 2.2616, 1.4601, 1.9193, 1.7828,\n", + " 1.6204, 1.4550, 1.6290, 1.5916, 1.3650, 0.7090, 0.7538, 1.2917, 1.8830,\n", + " 1.9899, 1.4006, 2.0174]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.7113, 0.4511, -1.6986, 0.1807, -0.3742, -0.5809, -0.7757, -0.8606,\n", + " -0.1248, -0.8477, -0.3631, -0.1430, -0.5735, 0.4106, 0.2752, 0.3298,\n", + " 0.1988, 0.2056, 0.2518, 0.0277, 0.7292, 0.0791, 0.3827, -0.2072,\n", + " 0.5030, 2.0072, 0.1341, 0.0892, 0.7585, 0.9361, 0.9358, 0.2571,\n", + " 0.8013, 0.9188, 1.7368, 1.0511, -0.2469, -0.1625, 0.0000, -0.5073,\n", + " -0.2800, -0.6981, -0.8932]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3456, 0.3413, 0.0936, 0.2175, 0.0869, -0.0955, -0.3351, -0.3720,\n", + " -0.1433, -0.2357, -0.1953, 0.1570, 0.1367, 0.2143, 0.1714, 0.2960,\n", + " 0.2231, 0.1534, 0.1409, 0.2090, 0.1169, 0.0959, -0.0133, -0.0065,\n", + " 0.1131, 0.0299, -0.1333, 0.0213, 0.0951, 0.1882, 0.2487, 0.1819,\n", + " 0.2286, 0.2538, 0.1329, 0.1613, 0.0060, -0.0020, 0.0355, -0.2398,\n", + " -0.2818, -0.3173, -0.2434]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0004436096642166376\n", + "Grad encoder.fc1.bias: 0.0006432664813473821\n", + "Grad encoder.encoder.0.weight: 0.00012449505447875708\n", + "Grad encoder.encoder.0.bias: 0.0008290156256407499\n", + "Grad encoder.encoder.2.weight: 7.610406464664266e-05\n", + "Grad encoder.encoder.2.bias: 0.0006257249624468386\n", + "Grad encoder.encoder.4.weight: 0.00022173867910169065\n", + "Grad encoder.encoder.4.bias: 0.0018272827146574855\n", + "Grad decoder.fc1.0.weight: 6.215577013790607e-05\n", + "Grad decoder.fc1.0.bias: 0.000541554531082511\n", + "Grad decoder.fc1.2.weight: 7.261936116265133e-05\n", + "Grad decoder.fc1.2.bias: 0.0005235367571003735\n", + "Grad decoder.fc1.4.weight: 8.771060674916953e-05\n", + "Grad decoder.fc1.4.bias: 0.0008622081950306892\n", + "Grad decoder.fc2.weight: 0.00015799487300682813\n", + "Grad decoder.fc2.bias: 0.0029625880997627974\n", + "Grad _memory_unit.weight_ih_l0: 8.717103810340632e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.88806001865305e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.0266961655579507e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.91740286431741e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00013032768038101494\n", + "Grad _memory_unit.bias_hh_l1: 6.460816075559705e-05\n", + "Data X Sample: tensor([[1.5700, 1.7536, 1.8572, 1.9810, 2.0848, 2.1907, 2.2555, 2.2771, 2.2994,\n", + " 2.4391, 2.4617, 2.4246, 2.3058, 2.2302, 2.2142, 2.3248, 2.2611, 2.3270,\n", + " 2.2860, 2.3377, 2.5027, 2.4617, 2.5761, 2.4908, 2.5018, 2.5806, 2.6187,\n", + " 2.5532, 2.2203, 2.4400, 2.4252, 2.4483, 2.1604, 1.4418, 1.8898, 1.7853,\n", + " 1.6184, 1.4656, 1.5846, 1.5547, 1.3029, 0.6910, 0.6811, 1.1998, 1.8513,\n", + " 1.9328, 1.2714, 1.9157]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0206, 0.9295, -0.3574, 0.4599, 0.2602, -0.1278, -0.4087, -0.1889,\n", + " -0.7046, -0.1912, -0.1358, 0.5438, 0.0425, 0.5154, -0.3987, -0.2191,\n", + " -0.1607, -0.0486, -0.2736, 0.7361, -0.2297, -1.6263, -0.9684, -0.2432,\n", + " 0.4758, 0.4097, 0.1027, 0.1672, 1.3926, 0.6213, 1.5820, 0.3427,\n", + " 0.8684, 0.2317, 0.9979, 0.8073, 0.9776, -0.6596, -2.3004, -0.0721,\n", + " -0.1192, -0.6420, -0.5424]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3870, 0.3806, 0.1071, 0.2584, 0.1079, -0.1009, -0.3711, -0.4246,\n", + " -0.1628, -0.2631, -0.2193, 0.1777, 0.1584, 0.2454, 0.1970, 0.3410,\n", + " 0.2580, 0.1739, 0.1522, 0.2317, 0.1315, 0.1055, -0.0084, -0.0008,\n", + " 0.1205, 0.0287, -0.1485, 0.0262, 0.1161, 0.2221, 0.2749, 0.2068,\n", + " 0.2591, 0.2879, 0.1582, 0.1868, 0.0059, -0.0017, 0.0362, -0.2735,\n", + " -0.3250, -0.3600, -0.2766]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001102032110793516\n", + "Grad encoder.fc1.bias: 0.00040333124343305826\n", + "Grad encoder.encoder.0.weight: 2.7930336727877147e-05\n", + "Grad encoder.encoder.0.bias: 0.00028077454771846533\n", + "Grad encoder.encoder.2.weight: 2.5336006729048677e-05\n", + "Grad encoder.encoder.2.bias: 0.0003261561505496502\n", + "Grad encoder.encoder.4.weight: 7.124334661057219e-05\n", + "Grad encoder.encoder.4.bias: 0.0007524413522332907\n", + "Grad decoder.fc1.0.weight: 3.114893115707673e-05\n", + "Grad decoder.fc1.0.bias: 0.00029564579017460346\n", + "Grad decoder.fc1.2.weight: 4.348461516201496e-05\n", + "Grad decoder.fc1.2.bias: 0.00023909175070002675\n", + "Grad decoder.fc1.4.weight: 3.4966215025633574e-05\n", + "Grad decoder.fc1.4.bias: 0.0002759102499112487\n", + "Grad decoder.fc2.weight: 7.344697223743424e-05\n", + "Grad decoder.fc2.bias: 0.00193480821326375\n", + "Grad _memory_unit.weight_ih_l0: 3.8121688703540713e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.9719563826802187e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.505569071014179e-05\n", + "Grad _memory_unit.weight_ih_l1: 1.957653921635938e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 6.209862476680428e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.05883186229039e-05\n", + "Data X Sample: tensor([[1.4364, 1.3764, 1.6303, 1.8017, 2.1633, 3.8776, 4.2861, 4.1751, 4.2010,\n", + " 3.9825, 4.1145, 3.9164, 3.8438, 3.9043, 3.5004, 3.5775, 3.4970, 3.3871,\n", + " 3.3763, 3.2303, 3.1799, 3.2348, 2.8725, 2.7390, 2.7233, 2.7477, 2.8051,\n", + " 2.7816, 2.8968, 2.9509, 2.9396, 2.9512, 3.1681, 2.3091, 3.9831, 4.5264,\n", + " 4.7943, 5.3800, 5.9201, 5.6743, 1.0404, 0.5775, 0.5942, 1.0678, 1.4231,\n", + " 1.7155, 1.1150, 1.6968]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.8189, 0.4947, -0.2490, -0.1799, -0.4057, -0.7377, -0.4138, 0.4170,\n", + " -0.0664, 0.8430, 0.5680, 0.1778, 0.3957, 0.6328, 0.2864, 1.4439,\n", + " 0.7176, -0.0710, 1.0033, 0.5625, 2.4608, 0.6783, -0.4967, 0.9520,\n", + " 0.6806, -0.8995, -0.2261, -0.4614, 0.0880, -0.0610, -0.0108, -0.4760,\n", + " 1.1401, -0.6119, -0.5108, -0.2481, -0.7230, -0.4018, 0.0000, 0.5364,\n", + " -0.1913, -0.0107, 0.7841]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1539, -0.2150, -0.0919, -0.1825, -0.1230, 0.0265, 0.0675, 0.1731,\n", + " 0.1211, 0.1462, 0.1137, -0.0802, -0.0880, -0.1589, -0.1314, -0.2108,\n", + " -0.2025, -0.0536, -0.0299, -0.0833, -0.0416, -0.0453, -0.0863, -0.0453,\n", + " -0.0141, 0.0349, 0.0306, 0.0065, -0.0756, -0.1607, -0.1100, -0.1056,\n", + " -0.1687, -0.1723, -0.1102, -0.1045, -0.0306, 0.0133, -0.0034, 0.2026,\n", + " 0.2560, 0.2116, 0.1905]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.000437132955994457\n", + "Grad encoder.fc1.bias: 0.0005262702470645308\n", + "Grad encoder.encoder.0.weight: 0.00011894409544765949\n", + "Grad encoder.encoder.0.bias: 0.0006619574851356447\n", + "Grad encoder.encoder.2.weight: 6.689738802378997e-05\n", + "Grad encoder.encoder.2.bias: 0.0004483103402890265\n", + "Grad encoder.encoder.4.weight: 0.0001970502780750394\n", + "Grad encoder.encoder.4.bias: 0.001117904088459909\n", + "Grad decoder.fc1.0.weight: 5.460416286950931e-05\n", + "Grad decoder.fc1.0.bias: 0.00030662125209346414\n", + "Grad decoder.fc1.2.weight: 8.000267553143203e-05\n", + "Grad decoder.fc1.2.bias: 0.0003857910051010549\n", + "Grad decoder.fc1.4.weight: 0.00011103635188192129\n", + "Grad decoder.fc1.4.bias: 0.000785354757681489\n", + "Grad decoder.fc2.weight: 0.00013250835763756186\n", + "Grad decoder.fc2.bias: 0.0028857553843408823\n", + "Grad _memory_unit.weight_ih_l0: 5.699603207176551e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 2.0685807612608187e-05\n", + "Grad _memory_unit.bias_hh_l0: 1.0941002983599901e-05\n", + "Grad _memory_unit.weight_ih_l1: 2.6400798560644034e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 7.639870455022901e-05\n", + "Grad _memory_unit.bias_hh_l1: 3.802355786319822e-05\n", + "Data X Sample: tensor([[1.3812, 1.5352, 1.7205, 1.7842, 1.9567, 2.1230, 2.1138, 2.2984, 3.5077,\n", + " 4.1357, 4.2985, 4.2144, 4.1167, 3.9561, 3.7526, 3.6596, 3.6196, 3.7101,\n", + " 3.5415, 3.5167, 3.6264, 3.2547, 2.9496, 2.7829, 2.7852, 2.9541, 3.0183,\n", + " 3.0834, 3.0945, 3.2424, 3.2196, 3.3464, 3.8875, 2.8560, 4.5640, 5.0396,\n", + " 5.2249, 5.5311, 5.9898, 5.8956, 1.0261, 0.5656, 0.6204, 1.0592, 1.6253,\n", + " 1.8184, 1.1490, 1.6264]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.3799, -0.1727, 0.0966, -0.5370, 0.7326, 0.5997, 0.4794, 0.5854,\n", + " 0.7457, 0.5812, 0.6233, -0.7638, -0.2060, -0.6351, -0.2989, 0.0601,\n", + " 0.3721, -0.1008, -0.4254, 1.0010, 0.0123, -0.1796, -0.2283, 0.3097,\n", + " -0.8553, -0.2180, 0.9029, -0.5733, -0.4210, 0.1158, -0.1013, -0.0995,\n", + " -0.8863, -0.8464, -0.1791, 0.5037, -0.5002, 0.4164, 0.2630, 0.2586,\n", + " -0.1130, -0.2728, 0.0328]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2480, -0.3059, -0.1085, -0.1719, -0.0751, 0.1118, 0.1767, 0.2942,\n", + " 0.2174, 0.2302, 0.2347, -0.1407, -0.1688, -0.2783, -0.2038, -0.2858,\n", + " -0.2368, -0.0574, -0.0799, -0.1086, -0.0683, -0.0524, -0.0889, -0.0293,\n", + " -0.0117, 0.0518, -0.0229, -0.0811, -0.1752, -0.2410, -0.2235, -0.2200,\n", + " -0.2750, -0.3149, -0.1608, -0.1768, -0.0320, -0.0013, 0.0267, 0.3210,\n", + " 0.3484, 0.3420, 0.2752]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00023511708423029631\n", + "Grad encoder.fc1.bias: 0.0003951573162339628\n", + "Grad encoder.encoder.0.weight: 6.497776485048234e-05\n", + "Grad encoder.encoder.0.bias: 0.00035003124503418803\n", + "Grad encoder.encoder.2.weight: 3.962947812397033e-05\n", + "Grad encoder.encoder.2.bias: 0.00026900123339146376\n", + "Grad encoder.encoder.4.weight: 9.87676321528852e-05\n", + "Grad encoder.encoder.4.bias: 0.0005025416612625122\n", + "Grad decoder.fc1.0.weight: 3.2940915843937546e-05\n", + "Grad decoder.fc1.0.bias: 0.0001961400412255898\n", + "Grad decoder.fc1.2.weight: 3.630554783740081e-05\n", + "Grad decoder.fc1.2.bias: 0.00018151724361814559\n", + "Grad decoder.fc1.4.weight: 4.492334119277075e-05\n", + "Grad decoder.fc1.4.bias: 0.0002050900657195598\n", + "Grad decoder.fc2.weight: 9.538396989228204e-05\n", + "Grad decoder.fc2.bias: 0.002191278152167797\n", + "Grad _memory_unit.weight_ih_l0: 3.6117032777838176e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.404399790772004e-05\n", + "Grad _memory_unit.bias_hh_l0: 7.1297490649158135e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.5232469650072744e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.861238292302005e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.9081302525592037e-05\n", + "Data X Sample: tensor([[1.4937, 1.7332, 1.8227, 1.9001, 1.9158, 2.0405, 2.0953, 3.4454, 4.2864,\n", + " 4.3711, 4.4095, 4.3234, 4.1411, 4.1061, 3.8585, 3.7321, 3.7690, 3.7856,\n", + " 3.6365, 3.6320, 3.5970, 3.5211, 3.2147, 2.9776, 2.8941, 2.8626, 2.8558,\n", + " 2.8020, 3.0945, 3.0164, 3.2056, 3.2358, 3.6983, 2.7988, 4.5984, 4.8596,\n", + " 5.1640, 5.3615, 6.1039, 5.7452, 1.1884, 0.6612, 0.6508, 1.1281, 1.6372,\n", + " 1.7955, 1.2646, 1.7828]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.4732, -0.6124, 0.3636, -0.2349, -0.7785, -0.1120, 0.5132, 0.6332,\n", + " 0.5670, 0.2940, 0.2677, -0.4146, -0.8942, -0.4417, -0.6518, -0.2629,\n", + " -0.6243, -1.3107, 0.3599, -0.3905, 0.0879, -1.4981, -0.8557, -1.8066,\n", + " -2.1801, -1.4289, -2.1407, -1.4722, -3.2180, -2.3027, -1.2095, -0.8746,\n", + " -1.2135, -2.1412, -1.9107, -0.7233, 0.9536, 0.7428, 0.1407, 0.4242,\n", + " 0.6026, 0.6412, 1.1697]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1602, -0.2220, -0.0925, -0.1807, -0.1160, 0.0334, 0.0743, 0.1824,\n", + " 0.1262, 0.1512, 0.1212, -0.0835, -0.0949, -0.1674, -0.1343, -0.2147,\n", + " -0.2045, -0.0542, -0.0341, -0.0852, -0.0441, -0.0475, -0.0898, -0.0421,\n", + " -0.0128, 0.0371, 0.0267, -0.0018, -0.0815, -0.1632, -0.1198, -0.1138,\n", + " -0.1767, -0.1839, -0.1125, -0.1081, -0.0313, 0.0122, -0.0020, 0.2105,\n", + " 0.2630, 0.2206, 0.1973]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0001968698634300381\n", + "Grad encoder.fc1.bias: 0.00013416798901744187\n", + "Grad encoder.encoder.0.weight: 4.728247586172074e-05\n", + "Grad encoder.encoder.0.bias: 0.00014698720769956708\n", + "Grad encoder.encoder.2.weight: 2.4949758881120943e-05\n", + "Grad encoder.encoder.2.bias: 0.0001353835396002978\n", + "Grad encoder.encoder.4.weight: 6.530604150611907e-05\n", + "Grad encoder.encoder.4.bias: 0.0005595838883891702\n", + "Grad decoder.fc1.0.weight: 2.5458572054049e-05\n", + "Grad decoder.fc1.0.bias: 0.00018591097614262253\n", + "Grad decoder.fc1.2.weight: 3.172954166075215e-05\n", + "Grad decoder.fc1.2.bias: 0.00022234550851862878\n", + "Grad decoder.fc1.4.weight: 2.9303544579306617e-05\n", + "Grad decoder.fc1.4.bias: 0.0002997406118083745\n", + "Grad decoder.fc2.weight: 6.62508318782784e-05\n", + "Grad decoder.fc2.bias: 0.001968797529116273\n", + "Grad _memory_unit.weight_ih_l0: 2.0327304355305387e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.3043826584180351e-05\n", + "Grad _memory_unit.bias_hh_l0: 6.846327778475825e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.2505740869528381e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.035536039737053e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.0245126506779343e-05\n", + "Data X Sample: tensor([[1.2391, 1.3691, 1.5026, 1.6333, 1.7928, 1.8534, 1.9459, 1.7816, 2.6753,\n", + " 3.7013, 3.9368, 3.8619, 3.7039, 3.6398, 3.6391, 3.4941, 3.5268, 3.4780,\n", + " 3.4754, 3.3419, 3.2535, 3.0833, 2.8339, 2.6512, 2.7420, 2.7216, 2.7252,\n", + " 2.8061, 2.7406, 2.8887, 2.9291, 3.0839, 3.5377, 2.5494, 4.1253, 4.5677,\n", + " 4.5386, 5.0010, 5.3813, 5.4898, 1.0166, 0.5476, 0.5436, 1.0477, 1.4866,\n", + " 1.6183, 1.1150, 1.5638]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.4032, 0.6015, -0.7497, 0.8004, 0.6803, 1.9720, 0.2924, 0.3707,\n", + " 0.0143, 0.1071, 0.7198, 1.0903, -0.2158, 0.7716, -0.8195, 0.4145,\n", + " 0.1281, 0.8005, -1.0187, 0.5505, 0.1868, -1.4798, 0.6787, 0.2877,\n", + " -0.6485, -0.0600, -0.7389, 0.0605, -0.7822, 0.1944, -0.4905, 0.8485,\n", + " -1.0090, -1.1472, 0.0374, 1.1332, -0.4404, -0.7172, 0.0000, -0.5441,\n", + " 0.1402, 0.2809, -0.3472]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2279, -0.2885, -0.1043, -0.1724, -0.0794, 0.0961, 0.1542, 0.2710,\n", + " 0.1970, 0.2122, 0.2091, -0.1268, -0.1548, -0.2540, -0.1859, -0.2693,\n", + " -0.2292, -0.0572, -0.0698, -0.1032, -0.0643, -0.0533, -0.0917, -0.0300,\n", + " -0.0119, 0.0493, -0.0118, -0.0667, -0.1539, -0.2203, -0.2029, -0.1976,\n", + " -0.2544, -0.2873, -0.1487, -0.1592, -0.0320, 0.0030, 0.0192, 0.2958,\n", + " 0.3302, 0.3145, 0.2588]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00035158038372173905\n", + "Grad encoder.fc1.bias: 0.0006216575857251883\n", + "Grad encoder.encoder.0.weight: 0.0001029130580718629\n", + "Grad encoder.encoder.0.bias: 0.0004802662879228592\n", + "Grad encoder.encoder.2.weight: 5.9806767239933833e-05\n", + "Grad encoder.encoder.2.bias: 0.00029339970205910504\n", + "Grad encoder.encoder.4.weight: 0.00016594944463577121\n", + "Grad encoder.encoder.4.bias: 0.0003372509381733835\n", + "Grad decoder.fc1.0.weight: 4.625641668098979e-05\n", + "Grad decoder.fc1.0.bias: 0.00015700230142101645\n", + "Grad decoder.fc1.2.weight: 4.769052247866057e-05\n", + "Grad decoder.fc1.2.bias: 0.0001625760196475312\n", + "Grad decoder.fc1.4.weight: 6.034346006345004e-05\n", + "Grad decoder.fc1.4.bias: 0.0003847157349810004\n", + "Grad decoder.fc2.weight: 0.00011719556641764939\n", + "Grad decoder.fc2.bias: 0.001752105774357915\n", + "Grad _memory_unit.weight_ih_l0: 5.376225544750923e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 8.45714475872228e-06\n", + "Grad _memory_unit.bias_hh_l0: 4.71616476716008e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.2837568849354284e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.745842695934698e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.862601493485272e-05\n", + "Data X Sample: tensor([[1.5732, 1.7434, 1.9594, 2.1800, 2.3153, 2.4589, 2.6268, 2.5681, 2.6363,\n", + " 2.7424, 2.7504, 2.7849, 2.6698, 2.5274, 2.6228, 2.5601, 2.4513, 2.5901,\n", + " 2.5854, 2.4120, 2.4413, 2.4908, 2.3809, 2.4565, 2.3779, 2.4709, 2.4642,\n", + " 2.4349, 2.2931, 2.3712, 2.2432, 2.3322, 2.1582, 1.4143, 1.9536, 1.8339,\n", + " 1.7561, 1.6458, 1.5973, 1.4838, 1.2982, 0.7309, 0.7821, 1.2859, 1.9623,\n", + " 1.9957, 1.5366, 2.1737]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6833, -0.0081, 0.6385, 0.4070, 0.1141, -0.2915, 0.0592, 0.0691,\n", + " -0.1500, -0.2726, 0.0072, 0.1727, -0.0184, 0.7474, 0.2377, 0.4526,\n", + " 0.1390, 0.5616, 0.2206, 0.5918, 0.7053, 0.9987, 0.4642, 1.0122,\n", + " 0.7391, 1.4278, -1.0434, -0.3555, -1.0217, 0.3308, 0.6841, 0.0943,\n", + " -0.4109, 0.4015, -0.6251, 0.4695, -0.6306, 0.8959, -0.0156, 0.0684,\n", + " -0.2592, -0.1640, -0.1082]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.4441, 0.4122, 0.1112, 0.3051, 0.1256, -0.1270, -0.4370, -0.5119,\n", + " -0.2149, -0.3040, -0.2748, 0.2093, 0.1888, 0.3148, 0.2418, 0.4042,\n", + " 0.2994, 0.1941, 0.1551, 0.2387, 0.1361, 0.1011, -0.0064, 0.0252,\n", + " 0.1150, 0.0225, -0.1399, 0.0481, 0.1932, 0.3112, 0.3128, 0.2529,\n", + " 0.2975, 0.3311, 0.1986, 0.2254, -0.0142, -0.0056, 0.0365, -0.3310,\n", + " -0.3802, -0.4021, -0.3019]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00034719263203442097\n", + "Grad encoder.fc1.bias: 0.0008939114050008357\n", + "Grad encoder.encoder.0.weight: 0.00011144966265419498\n", + "Grad encoder.encoder.0.bias: 0.001194037962704897\n", + "Grad encoder.encoder.2.weight: 6.464459147537127e-05\n", + "Grad encoder.encoder.2.bias: 0.0007844874635338783\n", + "Grad encoder.encoder.4.weight: 0.00020109067554585636\n", + "Grad encoder.encoder.4.bias: 0.0017831226577982306\n", + "Grad decoder.fc1.0.weight: 6.677673809463158e-05\n", + "Grad decoder.fc1.0.bias: 0.0004642583953682333\n", + "Grad decoder.fc1.2.weight: 7.647859456483275e-05\n", + "Grad decoder.fc1.2.bias: 0.0004461063363123685\n", + "Grad decoder.fc1.4.weight: 8.503853314323351e-05\n", + "Grad decoder.fc1.4.bias: 0.0005389171419665217\n", + "Grad decoder.fc2.weight: 0.0001446972746634856\n", + "Grad decoder.fc2.bias: 0.0021034146193414927\n", + "Grad _memory_unit.weight_ih_l0: 1.2054581929987762e-05\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 4.121804522583261e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.121563557011541e-05\n", + "Grad _memory_unit.weight_ih_l1: 4.97751261718804e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00013762139133177698\n", + "Grad _memory_unit.bias_hh_l1: 6.90506276441738e-05\n", + "Data X Sample: tensor([[1.2794, 1.3618, 1.4560, 1.5874, 1.7484, 1.6854, 1.7132, 2.3438, 3.6127,\n", + " 3.9272, 3.9844, 3.7742, 3.7261, 3.3999, 3.3188, 3.2247, 3.1793, 3.3097,\n", + " 3.3784, 3.4721, 3.3933, 3.3649, 3.1520, 2.9451, 2.8302, 2.8000, 2.7679,\n", + " 2.8061, 2.8031, 2.8330, 2.9396, 2.8904, 3.2099, 2.3388, 3.6792, 4.1470,\n", + " 4.6409, 5.0620, 5.4130, 5.3593, 0.9402, 0.5078, 0.5800, 0.9013, 1.3914,\n", + " 1.5839, 1.1014, 1.6029]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.1264, 0.1080, 0.5756, -0.2133, -0.6363, -0.8788, -1.1615, -0.5534,\n", + " 0.2056, 0.1535, 0.1153, 1.4875, -0.0445, 0.3694, 0.5323, 0.2387,\n", + " 0.1113, -1.6980, -2.2001, -0.1565, 1.2626, -1.7441, 0.2035, 0.6078,\n", + " 2.4923, 0.9817, -0.6443, -2.1085, 0.2054, 0.0151, -0.6719, 0.9474,\n", + " -0.5189, -0.0096, 1.8049, -0.9638, -0.9787, -0.6991, 0.6631, 0.1376,\n", + " 0.5530, -0.6997, -0.7372]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2176, -0.2795, -0.1026, -0.1717, -0.0808, 0.0868, 0.1422, 0.2595,\n", + " 0.1850, 0.2014, 0.1934, -0.1182, -0.1470, -0.2407, -0.1754, -0.2616,\n", + " -0.2247, -0.0577, -0.0640, -0.0996, -0.0618, -0.0539, -0.0938, -0.0290,\n", + " -0.0131, 0.0489, -0.0053, -0.0602, -0.1408, -0.2070, -0.1916, -0.1847,\n", + " -0.2433, -0.2710, -0.1423, -0.1477, -0.0328, 0.0056, 0.0152, 0.2804,\n", + " 0.3199, 0.2984, 0.2503]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.0002046259760390967\n", + "Grad encoder.fc1.bias: 0.00047132777399383485\n", + "Grad encoder.encoder.0.weight: 6.0183698224136606e-05\n", + "Grad encoder.encoder.0.bias: 0.000521656300406903\n", + "Grad encoder.encoder.2.weight: 3.933186599169858e-05\n", + "Grad encoder.encoder.2.bias: 0.00029231421649456024\n", + "Grad encoder.encoder.4.weight: 0.00011676031863316894\n", + "Grad encoder.encoder.4.bias: 0.00018900043505709618\n", + "Grad decoder.fc1.0.weight: 3.715671118698083e-05\n", + "Grad decoder.fc1.0.bias: 0.0001809597888495773\n", + "Grad decoder.fc1.2.weight: 5.0272185035282746e-05\n", + "Grad decoder.fc1.2.bias: 0.00013948623382020742\n", + "Grad decoder.fc1.4.weight: 5.292187415761873e-05\n", + "Grad decoder.fc1.4.bias: 0.0002579438441898674\n", + "Grad decoder.fc2.weight: 0.00011886567517649382\n", + "Grad decoder.fc2.bias: 0.0022870604880154133\n", + "Grad _memory_unit.weight_ih_l0: 4.005187292932533e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.2678548046096694e-05\n", + "Grad _memory_unit.bias_hh_l0: 6.791442046960583e-06\n", + "Grad _memory_unit.weight_ih_l1: 2.050179546131403e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 3.217468110960908e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.639777110540308e-05\n", + "Data X Sample: tensor([[-0.0074, 0.0015, -0.0075, 0.0153, -0.0034, 0.0103, 0.0139, 0.0099,\n", + " 0.0171, 0.0000, 0.0063, 0.0058, 0.0200, 0.0218, 0.0151, 0.0000,\n", + " -0.0299, -0.0348, -0.0516, -0.0353, -0.0589, -0.0383, -0.0120, -0.0172,\n", + " -0.0300, -0.0418, -0.0133, -0.0571, -0.0278, 0.0033, -0.0105, 0.0166,\n", + " 0.0176, -0.0252, 0.0098, 0.0316, 0.0177, 0.0239, 0.0127, 0.0199,\n", + " 0.0382, 0.0219, 0.0182, 0.0057, 0.0000, 0.0400, 0.0204, 0.0000]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.6976, 1.0125, 0.7825, -0.2446, -2.1382, 0.1285, -2.2015, -1.9106,\n", + " -1.4240, -1.2350, -1.0112, 0.3734, -0.1702, 0.6873, -0.4683, 0.7010,\n", + " 0.9485, -7.0119, 0.0806, 0.3576, -0.4131, 0.0877, -0.1531, 0.3779,\n", + " 0.7827, 0.6756, 0.6052, 1.8949, 1.3632, 1.6123, 1.6157, 1.5315,\n", + " 0.7587, 0.8408, 0.0729, 0.1999, 0.7316, 0.0533, -0.7367, -1.1038,\n", + " -0.6827, -0.9421, 0.0468]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 1.1104, 0.8229, 0.0497, 0.5256, -0.7353, -0.9252, -1.6046, -1.4823,\n", + " -0.9772, -1.0667, -1.1019, 0.4759, 0.5003, 0.8694, 0.4984, 0.7024,\n", + " 0.6010, 0.0565, 0.1703, 0.1766, 0.1503, 0.0504, -0.0456, -0.0202,\n", + " 0.0547, -0.0988, 0.4308, 0.7446, 1.2656, 1.3421, 1.0067, 0.6476,\n", + " 0.7917, 0.8507, 0.5025, 0.4340, -0.0065, 0.0616, 0.1092, -1.0507,\n", + " -0.8789, -0.8180, -0.3781]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 5.8870777138508856e-05\n", + "Grad encoder.fc1.bias: 0.00016707443865016103\n", + "Grad encoder.encoder.0.weight: 2.3075022909324616e-05\n", + "Grad encoder.encoder.0.bias: 0.0001694803941063583\n", + "Grad encoder.encoder.2.weight: 1.9187933503417298e-05\n", + "Grad encoder.encoder.2.bias: 0.00019971697474829853\n", + "Grad encoder.encoder.4.weight: 5.0661816203501076e-05\n", + "Grad encoder.encoder.4.bias: 0.000650470785330981\n", + "Grad decoder.fc1.0.weight: 2.334296550543513e-05\n", + "Grad decoder.fc1.0.bias: 0.00018566296785138547\n", + "Grad decoder.fc1.2.weight: 3.167776594636962e-05\n", + "Grad decoder.fc1.2.bias: 0.00015826270100660622\n", + "Grad decoder.fc1.4.weight: 3.4761942515615374e-05\n", + "Grad decoder.fc1.4.bias: 0.00023046211572363973\n", + "Grad decoder.fc2.weight: 9.998785390052944e-05\n", + "Grad decoder.fc2.bias: 0.00196573487482965\n", + "Grad _memory_unit.weight_ih_l0: 3.0532335131283617e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.8582737538963556e-05\n", + "Grad _memory_unit.bias_hh_l0: 9.89426098385593e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.6435733414255083e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.999749216949567e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.574105565145146e-05\n", + "Data X Sample: tensor([[1.2719, 1.4201, 1.5913, 1.7317, 1.7757, 1.8519, 1.8919, 1.9903, 1.8991,\n", + " 3.2210, 4.0796, 4.0196, 3.8060, 3.6944, 3.5609, 3.3970, 3.3554, 3.3697,\n", + " 3.3515, 3.3270, 3.4547, 3.2915, 2.9954, 2.7752, 2.7495, 2.8261, 2.7092,\n", + " 2.7979, 2.8274, 2.8559, 3.0271, 3.0258, 3.4761, 2.6020, 4.3189, 4.7137,\n", + " 4.9064, 5.2872, 5.7363, 5.5977, 1.0022, 0.6014, 0.5861, 0.9673, 1.5500,\n", + " 1.7212, 1.0810, 1.6029]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.0434, -0.2784, -0.1526, 0.1959, 0.4189, 0.1046, 0.5564, 0.2852,\n", + " -0.0271, -0.0054, 0.0786, -0.1743, -0.4527, 0.2932, 0.4439, -0.7952,\n", + " -0.4038, 0.9580, -1.3853, -0.1899, -0.2904, 0.3155, 0.8350, 0.9681,\n", + " 0.1071, 0.5242, -1.2382, 0.1967, 0.4308, -0.2089, -0.1913, -0.5893,\n", + " -0.6211, 0.5823, 0.9049, -1.1461, 0.0000, 0.3449, -0.4557, -0.2805,\n", + " 0.0500, -0.6382, 0.3600]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2713, -0.3341, -0.1119, -0.1631, -0.0481, 0.1394, 0.2081, 0.3342,\n", + " 0.2406, 0.2504, 0.2631, -0.1520, -0.1967, -0.3118, -0.2147, -0.3081,\n", + " -0.2436, -0.0605, -0.0923, -0.1144, -0.0763, -0.0593, -0.0936, -0.0169,\n", + " -0.0131, 0.0618, -0.0352, -0.1185, -0.2003, -0.2522, -0.2609, -0.2516,\n", + " -0.3083, -0.3541, -0.1696, -0.1854, -0.0336, -0.0015, 0.0313, 0.3484,\n", + " 0.3754, 0.3737, 0.3017]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 8.369343413505703e-05\n", + "Grad encoder.fc1.bias: 0.000322140462230891\n", + "Grad encoder.encoder.0.weight: 2.36495125136571e-05\n", + "Grad encoder.encoder.0.bias: 0.00020269608648959547\n", + "Grad encoder.encoder.2.weight: 1.7766524251783267e-05\n", + "Grad encoder.encoder.2.bias: 0.00013515478349290788\n", + "Grad encoder.encoder.4.weight: 5.100516136735678e-05\n", + "Grad encoder.encoder.4.bias: 0.00025200832169502974\n", + "Grad decoder.fc1.0.weight: 2.4121958631440066e-05\n", + "Grad decoder.fc1.0.bias: 0.00011022061516996473\n", + "Grad decoder.fc1.2.weight: 3.3529555366840214e-05\n", + "Grad decoder.fc1.2.bias: 0.00014542255667038262\n", + "Grad decoder.fc1.4.weight: 4.453999281395227e-05\n", + "Grad decoder.fc1.4.bias: 0.0002844307746272534\n", + "Grad decoder.fc2.weight: 9.574524301569909e-05\n", + "Grad decoder.fc2.bias: 0.0018015351379290223\n", + "Grad _memory_unit.weight_ih_l0: 3.313733714094269e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.1544721019163262e-05\n", + "Grad _memory_unit.bias_hh_l0: 6.084511824155925e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.3966226788397762e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.979696000693366e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.5063876162457746e-05\n", + "Data X Sample: tensor([[1.4183, 1.6794, 1.7145, 1.9548, 2.0131, 2.0375, 1.9875, 2.0726, 3.4833,\n", + " 4.2826, 4.2921, 4.4578, 4.1079, 4.0324, 3.9695, 3.7457, 3.6636, 3.6153,\n", + " 3.5828, 3.5242, 3.6485, 3.4997, 3.1761, 2.9108, 2.9597, 2.9410, 3.0236,\n", + " 3.1079, 2.9904, 3.1409, 3.3805, 3.2828, 3.9403, 2.7759, 4.5861, 4.9496,\n", + " 5.1541, 5.5046, 6.0595, 6.0119, 1.0834, 0.6851, 0.6265, 1.1826, 1.7442,\n", + " 1.8012, 1.2782, 1.7280]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.6587, -1.1646, -0.4890, -0.9823, 0.0517, 0.3098, 0.9286, 0.8087,\n", + " 0.8558, 0.5415, 1.2007, -0.9661, -1.8000, 0.0893, -0.2572, -0.8153,\n", + " -0.3586, -0.8717, 0.5591, -0.1496, 0.8009, 1.2146, -0.0878, -0.0213,\n", + " -0.0977, -0.2344, 0.3126, -0.1076, 0.7426, 0.8275, -0.6769, -0.2757,\n", + " -0.5426, -0.2920, -0.1179, -1.2880, 0.1343, 0.1511, -2.3004, 0.9150,\n", + " 0.8151, 0.9458, 1.5060]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.2806, -0.3427, -0.1127, -0.1605, -0.0404, 0.1494, 0.2199, 0.3478,\n", + " 0.2489, 0.2587, 0.2744, -0.1583, -0.2064, -0.3237, -0.2210, -0.3168,\n", + " -0.2460, -0.0600, -0.0969, -0.1164, -0.0779, -0.0604, -0.0929, -0.0138,\n", + " -0.0134, 0.0654, -0.0400, -0.1302, -0.2113, -0.2593, -0.2726, -0.2620,\n", + " -0.3207, -0.3675, -0.1722, -0.1905, -0.0339, -0.0031, 0.0340, 0.3593,\n", + " 0.3846, 0.3866, 0.3102]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00029918955988250673\n", + "Grad encoder.fc1.bias: 0.00025493346038274467\n", + "Grad encoder.encoder.0.weight: 8.044107380555943e-05\n", + "Grad encoder.encoder.0.bias: 0.00041327421786263585\n", + "Grad encoder.encoder.2.weight: 4.609089592122473e-05\n", + "Grad encoder.encoder.2.bias: 0.00026594704831950366\n", + "Grad encoder.encoder.4.weight: 0.0001413859863532707\n", + "Grad encoder.encoder.4.bias: 0.0007040571654215455\n", + "Grad decoder.fc1.0.weight: 3.568602915038355e-05\n", + "Grad decoder.fc1.0.bias: 0.0001804580824682489\n", + "Grad decoder.fc1.2.weight: 3.709222801262513e-05\n", + "Grad decoder.fc1.2.bias: 0.0002242450718767941\n", + "Grad decoder.fc1.4.weight: 4.8009656893555075e-05\n", + "Grad decoder.fc1.4.bias: 0.00044871619320474565\n", + "Grad decoder.fc2.weight: 0.00010923777881544083\n", + "Grad decoder.fc2.bias: 0.002043043030425906\n", + "Grad _memory_unit.weight_ih_l0: 3.4825070542865433e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.0819834642461501e-05\n", + "Grad _memory_unit.bias_hh_l0: 5.722681635234039e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.6316864730470115e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.565594645100646e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.281793967995327e-05\n", + "Data X Sample: tensor([[-0.0011, 0.0029, -0.0015, 0.0044, 0.0034, 0.0059, 0.0139, 0.0085,\n", + " 0.0146, 0.0047, -0.0127, -0.0019, -0.0022, 0.0027, 0.0076, -0.0096,\n", + " 0.0220, 0.0329, 0.0062, 0.0205, 0.0344, 0.0168, -0.0072, 0.0076,\n", + " 0.0075, 0.0418, 0.0240, 0.0326, 0.0035, 0.0295, 0.0070, 0.0193,\n", + " 0.0066, -0.0137, -0.0074, 0.0195, -0.0079, 0.0027, 0.0634, 0.0057,\n", + " 0.0239, 0.0179, -0.0081, 0.0029, 0.0040, 0.0457, -0.0408, -0.0235]],\n", + " device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.4825, 0.8633, 0.4467, 1.5009, 0.2916, 1.1064, -1.2792, -1.1030,\n", + " 0.4799, -0.7192, -0.6969, -0.3966, -0.2122, 0.8808, 0.7729, -0.0370,\n", + " 1.0286, 0.3638, 0.7329, 0.2156, 0.1749, 0.0419, 0.6296, -0.3068,\n", + " 0.6406, 0.7832, 0.1435, 0.9074, 0.8612, 0.3182, 0.2593, -0.1173,\n", + " 1.8101, 1.1528, 0.2579, -0.4132, 0.4289, -0.5278, -0.7546, -1.0264,\n", + " -1.0288, -1.0436, -1.2338]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 1.0733, 0.7997, 0.0544, 0.5228, -0.7113, -0.8860, -1.5883, -1.4189,\n", + " -1.0151, -1.0528, -1.0937, 0.4559, 0.4842, 0.8834, 0.4853, 0.7024,\n", + " 0.5814, 0.0309, 0.1549, 0.1641, 0.0892, 0.0457, -0.0326, 0.0209,\n", + " 0.0640, -0.0702, 0.4559, 0.7198, 1.2661, 1.3253, 0.9860, 0.6659,\n", + " 0.7641, 0.8294, 0.4951, 0.4637, -0.0212, 0.0629, 0.0657, -1.0155,\n", + " -0.8243, -0.7747, -0.3648]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 9.604100341675803e-05\n", + "Grad encoder.fc1.bias: 0.0004484299279283732\n", + "Grad encoder.encoder.0.weight: 3.161889617331326e-05\n", + "Grad encoder.encoder.0.bias: 0.0005592755042016506\n", + "Grad encoder.encoder.2.weight: 2.8561160434037447e-05\n", + "Grad encoder.encoder.2.bias: 0.0004505949909798801\n", + "Grad encoder.encoder.4.weight: 8.051459008129314e-05\n", + "Grad encoder.encoder.4.bias: 0.001297210925258696\n", + "Grad decoder.fc1.0.weight: 4.728898420580663e-05\n", + "Grad decoder.fc1.0.bias: 0.0004309014184400439\n", + "Grad decoder.fc1.2.weight: 7.310754881473258e-05\n", + "Grad decoder.fc1.2.bias: 0.0003593434812501073\n", + "Grad decoder.fc1.4.weight: 9.60163160925731e-05\n", + "Grad decoder.fc1.4.bias: 0.0005393869942054152\n", + "Grad decoder.fc2.weight: 0.00013385075726546347\n", + "Grad decoder.fc2.bias: 0.0015867603942751884\n", + "Grad _memory_unit.weight_ih_l0: 6.6110401348851155e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.996471059508622e-05\n", + "Grad _memory_unit.bias_hh_l0: 2.017947190324776e-05\n", + "Grad _memory_unit.weight_ih_l1: 3.15995248456602e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 0.00011337925388943404\n", + "Grad _memory_unit.bias_hh_l1: 5.67154711461626e-05\n", + "Data X Sample: tensor([[2.5418, 2.9902, 3.2246, 3.3563, 3.4439, 3.7126, 3.8748, 3.8500, 3.8910,\n", + " 3.7787, 3.9337, 3.7918, 3.7062, 3.6044, 3.6315, 3.5830, 3.4765, 3.4819,\n", + " 3.3391, 3.3177, 3.2289, 3.1812, 2.8460, 2.8516, 2.7326, 2.8208, 2.7519,\n", + " 2.7286, 2.6886, 2.8919, 2.8276, 2.8407, 3.0339, 2.1489, 3.6522, 4.0107,\n", + " 4.3027, 4.6750, 5.1341, 5.0019, 1.8804, 1.0734, 1.1681, 1.9088, 2.9454,\n", + " 3.3337, 2.0873, 3.0338]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 1.1065, -0.4767, 0.3058, 0.1989, 1.2765, -0.1760, -0.6744, 0.5137,\n", + " -0.6513, -0.5967, -0.9709, -0.6318, -0.1803, -0.2045, -0.7549, -0.5768,\n", + " -0.5750, 1.1832, -0.0320, 0.7483, 0.7464, 0.6798, 0.0610, 0.0234,\n", + " 0.3096, 0.9018, 1.2123, 1.6609, 0.3243, 0.5832, -0.2760, 0.4759,\n", + " 0.0047, 0.3279, -1.1440, -1.4317, -0.7582, 0.5417, 0.2870, 0.0996,\n", + " 1.2089, -0.3724, 0.3501]], device='cuda:0')\n", + "Prediction Sample: tensor([[-0.1514, -0.2157, -0.0903, -0.1773, -0.1098, 0.0278, 0.0645, 0.1779,\n", + " 0.1078, 0.1397, 0.1028, -0.0764, -0.0905, -0.1530, -0.1205, -0.2119,\n", + " -0.1978, -0.0553, -0.0280, -0.0825, -0.0400, -0.0522, -0.0917, -0.0343,\n", + " -0.0155, 0.0421, 0.0361, -0.0055, -0.0675, -0.1452, -0.1103, -0.0978,\n", + " -0.1707, -0.1662, -0.0992, -0.0924, -0.0341, 0.0168, -0.0090, 0.1940,\n", + " 0.2568, 0.2066, 0.1917]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00010573035979177803\n", + "Grad encoder.fc1.bias: 0.0005039945826865733\n", + "Grad encoder.encoder.0.weight: 3.513378032948822e-05\n", + "Grad encoder.encoder.0.bias: 0.00047799578169360757\n", + "Grad encoder.encoder.2.weight: 2.9255168556119315e-05\n", + "Grad encoder.encoder.2.bias: 0.00036115513648837805\n", + "Grad encoder.encoder.4.weight: 8.5470310295932e-05\n", + "Grad encoder.encoder.4.bias: 0.0005536341341212392\n", + "Grad decoder.fc1.0.weight: 2.7044539820053615e-05\n", + "Grad decoder.fc1.0.bias: 0.00020005303667858243\n", + "Grad decoder.fc1.2.weight: 3.7856792914681137e-05\n", + "Grad decoder.fc1.2.bias: 0.00021705339895561337\n", + "Grad decoder.fc1.4.weight: 4.414354043547064e-05\n", + "Grad decoder.fc1.4.bias: 0.0001941652735695243\n", + "Grad decoder.fc2.weight: 0.00011179713328601792\n", + "Grad decoder.fc2.bias: 0.001826736843213439\n", + "Grad _memory_unit.weight_ih_l0: 4.388427441881504e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 1.7405056496500038e-05\n", + "Grad _memory_unit.bias_hh_l0: 8.78425817063544e-06\n", + "Grad _memory_unit.weight_ih_l1: 1.7932214859683882e-06\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 4.228629404678941e-05\n", + "Grad _memory_unit.bias_hh_l1: 2.1137171643204056e-05\n", + "Data X Sample: tensor([[1.5414, 1.6968, 1.8572, 2.0947, 2.0353, 2.1127, 1.9289, 2.3807, 3.5273,\n", + " 4.1120, 4.4254, 4.4812, 4.2943, 4.1006, 3.6921, 3.8278, 3.6825, 3.5882,\n", + " 3.6241, 3.6134, 3.5037, 3.2853, 2.9255, 2.8287, 2.7852, 2.9044, 2.8771,\n", + " 2.8428, 2.9800, 3.1998, 3.2475, 3.2552, 3.8061, 2.8149, 4.5837, 4.8620,\n", + " 5.0185, 5.4039, 5.9074, 5.8218, 1.2027, 0.6612, 0.6346, 1.1941, 1.8235,\n", + " 2.0757, 1.3530, 1.9548]], device='cuda:0')\n", + "Data Y Sample: tensor([[ 0.1684, -0.0296, -0.9086, 0.5276, -0.6458, -0.3797, -0.1893, 0.2223,\n", + " 0.6215, 0.1659, -0.0296, -0.0690, -0.3048, 0.7114, -0.5181, 0.1292,\n", + " 0.4042, -0.3237, -0.3862, 2.2650, -1.8772, -1.0829, -0.0780, -0.7893,\n", + " 0.0141, 0.4781, -0.6581, -0.2931, -0.4410, -1.0473, 0.4966, -0.4582,\n", + " -0.7484, -0.6567, -0.5363, -0.1033, 0.0423, 0.1005, -1.2279, 0.1981,\n", + " -0.1013, 0.2631, 0.4324]], device='cuda:0')\n", + "Prediction Sample: tensor([[-2.7940e-01, -3.4138e-01, -1.1089e-01, -1.5514e-01, -3.3909e-02,\n", + " 1.5244e-01, 2.2153e-01, 3.5225e-01, 2.4435e-01, 2.5732e-01,\n", + " 2.7297e-01, -1.6071e-01, -2.0950e-01, -3.2317e-01, -2.1973e-01,\n", + " -3.2248e-01, -2.4582e-01, -6.0298e-02, -9.4058e-02, -1.1358e-01,\n", + " -7.2816e-02, -6.2503e-02, -9.3212e-02, -1.2436e-02, -1.5513e-02,\n", + " 6.7246e-02, -3.8001e-02, -1.3754e-01, -2.1184e-01, -2.5664e-01,\n", + " -2.7223e-01, -2.5791e-01, -3.2248e-01, -3.6360e-01, -1.6723e-01,\n", + " -1.8738e-01, -3.4706e-02, -3.2870e-04, 2.8756e-02, 3.5634e-01,\n", + " 3.8484e-01, 3.8787e-01, 3.0878e-01]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00031723760184831917\n", + "Grad encoder.fc1.bias: 0.0002676474687177688\n", + "Grad encoder.encoder.0.weight: 8.197902207029983e-05\n", + "Grad encoder.encoder.0.bias: 0.0001765932684065774\n", + "Grad encoder.encoder.2.weight: 3.931431638193317e-05\n", + "Grad encoder.encoder.2.bias: 0.00013824060442857444\n", + "Grad encoder.encoder.4.weight: 0.00011344767699483782\n", + "Grad encoder.encoder.4.bias: 0.00040563903166912496\n", + "Grad decoder.fc1.0.weight: 3.162299617542885e-05\n", + "Grad decoder.fc1.0.bias: 0.00010989051224896684\n", + "Grad decoder.fc1.2.weight: 4.576138235279359e-05\n", + "Grad decoder.fc1.2.bias: 0.00015546957729384303\n", + "Grad decoder.fc1.4.weight: 6.736352224834263e-05\n", + "Grad decoder.fc1.4.bias: 0.00038893232704140246\n", + "Grad decoder.fc2.weight: 7.156305218813941e-05\n", + "Grad decoder.fc2.bias: 0.0022494851145893335\n", + "Grad _memory_unit.weight_ih_l0: 1.1945018059122958e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 5.757866347266827e-06\n", + "Grad _memory_unit.bias_hh_l0: 3.155302238155855e-06\n", + "Grad _memory_unit.weight_ih_l1: 9.194045560434461e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.3558151951874606e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.1868811270687729e-05\n", + "Data X Sample: tensor([[1.4841, 1.7871, 1.8753, 2.0291, 2.1428, 2.3528, 2.3572, 2.3892, 2.4801,\n", + " 2.4991, 2.5505, 2.5259, 2.4545, 2.4538, 2.3706, 2.3590, 2.3743, 2.3889,\n", + " 2.4078, 2.3786, 2.3726, 2.5168, 2.4773, 2.4641, 2.3761, 2.4395, 2.3976,\n", + " 2.4104, 2.1578, 2.2828, 2.2187, 2.2797, 2.2330, 1.4852, 1.9438, 1.7974,\n", + " 1.6440, 1.5106, 1.5529, 1.5576, 1.2457, 0.6831, 0.6730, 1.2974, 1.9345,\n", + " 2.0586, 1.4278, 1.8922]], device='cuda:0')\n", + "Data Y Sample: tensor([[-0.0571, 0.6855, 0.0378, 0.9752, 0.5068, 0.7126, -0.3710, -0.3954,\n", + " -1.0811, -0.4638, -0.2657, -0.4541, 1.2469, -0.3358, 0.0945, 0.0133,\n", + " -0.2083, 0.3786, 0.6928, -0.0311, 0.7191, 0.0376, 0.1846, 0.0949,\n", + " -0.1512, -0.9076, -0.2300, 0.4163, -1.1473, 0.2972, 0.2634, 0.7229,\n", + " 0.3841, 0.3385, -0.0244, -0.1105, 0.3148, -0.6596, 0.0040, -0.0647,\n", + " -0.0807, -0.3303, 1.1761]], device='cuda:0')\n", + "Prediction Sample: tensor([[ 0.3141, 0.2717, 0.0637, 0.2125, 0.0796, -0.0860, -0.3337, -0.3388,\n", + " -0.1963, -0.2176, -0.2294, 0.1394, 0.1274, 0.2666, 0.1773, 0.2594,\n", + " 0.2027, 0.1346, 0.0994, 0.1529, 0.0572, 0.0516, -0.0011, 0.0471,\n", + " 0.0661, 0.0518, -0.0665, 0.0193, 0.1731, 0.2399, 0.2150, 0.2132,\n", + " 0.1885, 0.2402, 0.1523, 0.1817, -0.0451, 0.0033, -0.0035, -0.2342,\n", + " -0.2147, -0.2508, -0.1980]], device='cuda:0',\n", + " grad_fn=)\n", + "Grad encoder.fc1.weight: 0.00018611193809192628\n", + "Grad encoder.fc1.bias: 0.00018479872960597277\n", + "Grad encoder.encoder.0.weight: 4.963254468748346e-05\n", + "Grad encoder.encoder.0.bias: 0.00017832417506724596\n", + "Grad encoder.encoder.2.weight: 3.199366619810462e-05\n", + "Grad encoder.encoder.2.bias: 0.0001306546328123659\n", + "Grad encoder.encoder.4.weight: 8.335164602613077e-05\n", + "Grad encoder.encoder.4.bias: 0.0002852723700925708\n", + "Grad decoder.fc1.0.weight: 2.5465331418672577e-05\n", + "Grad decoder.fc1.0.bias: 9.226420661434531e-05\n", + "Grad decoder.fc1.2.weight: 3.854696115013212e-05\n", + "Grad decoder.fc1.2.bias: 0.00015648434055037796\n", + "Grad decoder.fc1.4.weight: 5.050345498602837e-05\n", + "Grad decoder.fc1.4.bias: 0.0003858767740894109\n", + "Grad decoder.fc2.weight: 0.00010046646639239043\n", + "Grad decoder.fc2.bias: 0.0017829707358032465\n", + "Grad _memory_unit.weight_ih_l0: 1.8297679389434052e-06\n", + "Grad _memory_unit.weight_hh_l0: 0.0\n", + "Grad _memory_unit.bias_ih_l0: 3.993375685240608e-06\n", + "Grad _memory_unit.bias_hh_l0: 2.4000855773920193e-06\n", + "Grad _memory_unit.weight_ih_l1: 9.978708703783923e-07\n", + "Grad _memory_unit.weight_hh_l1: 0.0\n", + "Grad _memory_unit.bias_ih_l1: 2.310437776031904e-05\n", + "Grad _memory_unit.bias_hh_l1: 1.1327261745464057e-05\n", + "Data X Sample: tensor([[ 0.0011, -0.0087, 0.0060, 0.0000, 0.0000, -0.0029, 0.0031, 0.0028,\n", + " 0.0073, -0.0095, -0.0159, 0.0000, -0.0022, 0.0109, -0.0252, 0.0027,\n", + " 0.0189, 0.0271, 0.0186, 0.0019, 0.0221, 0.0276, 0.0145, 0.0057,\n", + " 0.0188, 0.0104, 0.0240, 0.0449, -0.0347, 0.0197, 0.0000, 0.0193,\n", + " -0.0154, -0.0252, 0.0074, 0.0170, 0.0020, 0.0027, 0.0380, -0.0057,\n", + " 0.0143, -0.0060, 0.0182, 0.0144, 0.0277, 0.0057, -0.0408, -0.0078]],\n", + " device='cuda:0')\n", + "Data Y Sample: " + ] + } + ], + "source": [ + "import torch\n", + "import torch.nn as nn\n", + "import torch.nn.functional as F\n", + "import numpy as np\n", + "import random\n", + "\n", + "class Config:\n", + " def __init__(self, input_dim, embed_dim, hidden_dim, output_dim, device):\n", + " print('device:', device)\n", + " self.IN_DIM = input_dim\n", + " self.EMBED_DIM = embed_dim\n", + " self.OUT_DIM = output_dim\n", + " self.HIDDEN = hidden_dim\n", + " self.DEVICE = device\n", + "\n", + "def build_model(in_dim, out_dim, layers, hidden, activation, normalize=lambda x: x):\n", + " model = [normalize(nn.Linear(in_dim, hidden))]\n", + " model += [activation()]\n", + " for i in range(layers - 1):\n", + " model += [normalize(nn.Linear(hidden, hidden))]\n", + " model += [activation()]\n", + " model += [normalize(nn.Linear(hidden, out_dim))]\n", + " return nn.Sequential(*model)\n", + "\n", + "class Decoder(nn.Module):\n", + " def __init__(self, embed, hidden, out_dim, layers=2):\n", + " super().__init__()\n", + " self.fc1 = build_model(embed + hidden, hidden, layers, hidden, nn.ReLU)\n", + " self.fc2 = nn.Linear(hidden, out_dim)\n", + "\n", + " def forward(self, z):\n", + " x = F.relu(self.fc1(z))\n", + " return self.fc2(x), x\n", + "\n", + "class Encoder(nn.Module):\n", + " def __init__(self, in_dim, hidden, embed, layers=2):\n", + " super().__init__()\n", + " self.fc1 = nn.Linear(in_dim, hidden)\n", + " self.encoder = build_model(hidden, embed, layers, hidden, nn.ReLU)\n", + "\n", + " def forward(self, x):\n", + " embed = F.relu(self.fc1(x))\n", + " return self.encoder(F.relu(embed))\n", + "\n", + "class HackNet(nn.Module):\n", + " def __init__(self, config):\n", + " super().__init__()\n", + " self.encoder = Encoder(in_dim=config.IN_DIM, hidden=config.HIDDEN, embed=config.EMBED_DIM)\n", + " self.decoder = Decoder(embed=config.EMBED_DIM, hidden=config.HIDDEN, out_dim=config.OUT_DIM)\n", + " self._memory_unit = nn.GRU(config.EMBED_DIM, config.HIDDEN, num_layers=2, batch_first=True)\n", + "\n", + " def forward(self, x):\n", + " embed = self.encoder(x)\n", + " mem_out = self._memory_unit(embed)[0]\n", + " pred, _ = self.decoder(torch.cat([embed, mem_out], axis=2))\n", + " return pred\n", + "\n", + " def to(self, device):\n", + " super().to(device)\n", + " self.encoder = self.encoder.to(device)\n", + " self.decoder = self.decoder.to(device)\n", + " self._memory_unit = self._memory_unit.to(device)\n", + " return self\n", + "\n", + "def init_weights(m):\n", + " if isinstance(m, nn.Linear):\n", + " torch.nn.init.xavier_uniform_(m.weight)\n", + " if m.bias is not None:\n", + " torch.nn.init.zeros_(m.bias)\n", + "\n", + "def train_epoch(network, optim, data_x, data_y, device):\n", + " network.train()\n", + " data_x, data_y = data_x.to(device), data_y.to(device)\n", + " \n", + " print(\"Data X Sample:\", data_x[0]) # Debug: Print sample input\n", + " print(\"Data Y Sample:\", data_y[0]) # Debug: Print sample target\n", + " \n", + " pred = network(data_x)\n", + " \n", + " print(\"Prediction Sample:\", pred[0]) # Debug: Print sample prediction\n", + " \n", + " loss = F.smooth_l1_loss(pred, data_y)\n", + " \n", + " optim.zero_grad()\n", + " loss.backward()\n", + " \n", + " # Debug: Check gradients\n", + " for name, param in network.named_parameters():\n", + " if param.grad is not None:\n", + " print(f\"Grad {name}: {param.grad.abs().mean().item()}\")\n", + " else:\n", + " print(f\"Grad {name}: None\")\n", + " \n", + " optim.step()\n", + " return loss.item()\n", + "\n", + "def val_epoch(network, data_x, data_y, device):\n", + " network.eval()\n", + " data_x, data_y = data_x.to(device), data_y.to(device)\n", + " with torch.no_grad():\n", + " pred = network(data_x)\n", + " loss = F.smooth_l1_loss(pred, data_y)\n", + " return loss.item()\n", + "\n", + "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n", + "config = Config(48, 24, 64, 43, device=device)\n", + "net = HackNet(config).to(device)\n", + "net.apply(init_weights)\n", + "opt = torch.optim.Adam(net.parameters(), lr=3e-3)\n", + "scheduler = torch.optim.lr_scheduler.StepLR(opt, step_size=30, gamma=0.1)\n", + "\n", + "num_epochs = 100\n", + "\n", + "for epoch in range(num_epochs):\n", + " train_losses = []\n", + " for data_x, data_y in train_loader:\n", + " train_loss = train_epoch(net, opt, data_x, data_y, device)\n", + " train_losses.append(train_loss)\n", + "\n", + " val_losses = []\n", + " for data_x, data_y in test_loader:\n", + " val_loss = val_epoch(net, data_x, data_y, device)\n", + " val_losses.append(val_loss)\n", + " \n", + " scheduler.step()\n", + " print(f\"Epoch {epoch} Train Loss: {np.mean(train_losses)} Val Loss: {np.mean(val_losses)}\")" + ] + }, { "cell_type": "code", "execution_count": null, From 85b5eccb1873cbca4fa995827533effe34f37a8d Mon Sep 17 00:00:00 2001 From: Nathaniel Chen Date: Wed, 9 Jul 2025 20:17:21 -0400 Subject: [PATCH 023/103] Refactor project structure and update dependencies. Renamed package from "fusion_ai_hub" to "fusionaihub". Removed several unused modules and files related to data loading, processing, and visualization. Added new dependencies for enhanced functionality, including ipykernel, ipywidgets, scikit-learn, torch, tables, and pyyaml. --- .gitignore | 4 +- notebooks/accessing_data.ipynb | 192 ++ notebooks/data_preparation.ipynb | 439 +++ pyproject.toml | 34 +- .../__init__.py | 0 .../base/__init__.py | 0 .../base/load.py | 0 .../base/merge.py | 0 .../base/save.py | 0 .../core/__init__.py | 0 .../core/fusion_signal/__init__.py | 0 .../core/fusion_signal/interpolation.py | 0 .../core/fusion_signal/resampling.py | 0 .../core/magnitude_scaling/compute_norms.py | 0 .../core/magnitude_scaling/norm.py | 0 .../core/magnitude_scaling/rescale.py | 0 .../core/scaling.py | 0 .../core/spectral_representation/__init__.py | 0 .../core/spectral_representation/sft.py | 0 .../core/time_domain_filtering/__init__.py | 0 .../core/time_domain_filtering/filtering.py | 0 .../core/time_domain_filtering/preemphasis.py | 0 .../core/time_domain_processing/cut_time.py | 0 .../get_windowed_data.py | 0 .../datasets/__init__.py | 0 .../datasets/fetch/fetch.py | 0 src/fusionaihub/datasets/prepare/README.md | 174 + .../datasets/prepare}/__init__.py | 0 .../datasets/prepare/config/default.yaml | 39 + .../datasets/prepare/core/__init__.py | 30 + .../datasets/prepare/core/data_extraction.py | 107 + .../datasets/prepare/core/dataset_utils.py | 84 + .../prepare/core/sample_processing.py | 160 + .../datasets/prepare/core/shot_processing.py | 122 + .../prepare/core/signal_processing.py | 56 + src/fusionaihub/datasets/prepare/prepare.py | 286 ++ src/fusionaihub/datasets/prepare/prepare2.py | 443 +++ .../datasets/prepare/prepare_dataset.py | 159 + .../datasets/toy_loader/load.py | 0 .../display}/__init__.py | 0 .../display/display.py | 0 .../display/specshow.py | 0 .../display/waveshow.py | 0 .../feature}/__init__.py | 0 .../util => fusionaihub/sampling}/__init__.py | 0 .../sampling/match_times.py | 0 src/fusionaihub/util/__init__.py | 0 src/fusionaihub/util/parmap.py | 170 + .../util/utils.py | 0 uv.lock | 3052 +++++++++++++++++ 50 files changed, 5547 insertions(+), 4 deletions(-) create mode 100644 notebooks/accessing_data.ipynb create mode 100644 notebooks/data_preparation.ipynb rename src/{fusion_ai_hub => fusionaihub}/__init__.py (100%) rename src/{fusion_ai_hub => fusionaihub}/base/__init__.py (100%) rename src/{fusion_ai_hub => fusionaihub}/base/load.py (100%) rename src/{fusion_ai_hub => fusionaihub}/base/merge.py (100%) rename src/{fusion_ai_hub => fusionaihub}/base/save.py (100%) rename src/{fusion_ai_hub => fusionaihub}/core/__init__.py (100%) rename src/{fusion_ai_hub => fusionaihub}/core/fusion_signal/__init__.py (100%) rename src/{fusion_ai_hub => fusionaihub}/core/fusion_signal/interpolation.py (100%) rename src/{fusion_ai_hub => fusionaihub}/core/fusion_signal/resampling.py (100%) rename src/{fusion_ai_hub => fusionaihub}/core/magnitude_scaling/compute_norms.py (100%) rename src/{fusion_ai_hub => fusionaihub}/core/magnitude_scaling/norm.py (100%) rename src/{fusion_ai_hub => fusionaihub}/core/magnitude_scaling/rescale.py (100%) rename src/{fusion_ai_hub => fusionaihub}/core/scaling.py (100%) rename src/{fusion_ai_hub => fusionaihub}/core/spectral_representation/__init__.py (100%) rename src/{fusion_ai_hub => fusionaihub}/core/spectral_representation/sft.py (100%) rename src/{fusion_ai_hub => fusionaihub}/core/time_domain_filtering/__init__.py (100%) rename src/{fusion_ai_hub => fusionaihub}/core/time_domain_filtering/filtering.py (100%) rename src/{fusion_ai_hub => fusionaihub}/core/time_domain_filtering/preemphasis.py (100%) rename src/{fusion_ai_hub => fusionaihub}/core/time_domain_processing/cut_time.py (100%) rename src/{fusion_ai_hub => fusionaihub}/core/time_domain_processing/get_windowed_data.py (100%) rename src/{fusion_ai_hub => fusionaihub}/datasets/__init__.py (100%) rename src/{fusion_ai_hub => fusionaihub}/datasets/fetch/fetch.py (100%) create mode 100644 src/fusionaihub/datasets/prepare/README.md rename src/{fusion_ai_hub/display => fusionaihub/datasets/prepare}/__init__.py (100%) create mode 100644 src/fusionaihub/datasets/prepare/config/default.yaml create mode 100644 src/fusionaihub/datasets/prepare/core/__init__.py create mode 100644 src/fusionaihub/datasets/prepare/core/data_extraction.py create mode 100644 src/fusionaihub/datasets/prepare/core/dataset_utils.py create mode 100644 src/fusionaihub/datasets/prepare/core/sample_processing.py create mode 100644 src/fusionaihub/datasets/prepare/core/shot_processing.py create mode 100644 src/fusionaihub/datasets/prepare/core/signal_processing.py create mode 100644 src/fusionaihub/datasets/prepare/prepare.py create mode 100644 src/fusionaihub/datasets/prepare/prepare2.py create mode 100644 src/fusionaihub/datasets/prepare/prepare_dataset.py rename src/{fusion_ai_hub => fusionaihub}/datasets/toy_loader/load.py (100%) rename src/{fusion_ai_hub/feature => fusionaihub/display}/__init__.py (100%) rename src/{fusion_ai_hub => fusionaihub}/display/display.py (100%) rename src/{fusion_ai_hub => fusionaihub}/display/specshow.py (100%) rename src/{fusion_ai_hub => fusionaihub}/display/waveshow.py (100%) rename src/{fusion_ai_hub/sampling => fusionaihub/feature}/__init__.py (100%) rename src/{fusion_ai_hub/util => fusionaihub/sampling}/__init__.py (100%) rename src/{fusion_ai_hub => fusionaihub}/sampling/match_times.py (100%) create mode 100644 src/fusionaihub/util/__init__.py create mode 100644 src/fusionaihub/util/parmap.py rename src/{fusion_ai_hub => fusionaihub}/util/utils.py (100%) create mode 100644 uv.lock diff --git a/.gitignore b/.gitignore index 6769e21..faa5f5e 100644 --- a/.gitignore +++ b/.gitignore @@ -157,4 +157,6 @@ cython_debug/ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore # and can be added to the global gitignore or merged into this file. For a more nuclear # option (not recommended) you can uncomment the following to ignore the entire idea folder. -#.idea/ \ No newline at end of file +#.idea/ + +*.pkl \ No newline at end of file diff --git a/notebooks/accessing_data.ipynb b/notebooks/accessing_data.ipynb new file mode 100644 index 0000000..301e1b0 --- /dev/null +++ b/notebooks/accessing_data.ipynb @@ -0,0 +1,192 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 65, + "id": "914fa271", + "metadata": {}, + "outputs": [], + "source": [ + "%load_ext autoreload\n", + "%autoreload 2" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "id": "836b5c67", + "metadata": {}, + "outputs": [], + "source": [ + "import joblib\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "id": "af64eb59", + "metadata": {}, + "outputs": [], + "source": [ + "file = \"/scratch/gpfs/nc1514/FusionAIHub/data/foundation_v2/train/170000_0.pkl\"\n", + "\n", + "with open(file, 'rb') as f:\n", + " data = joblib.load(f)\n", + " data1 = data['co2v1']\n", + " data2 = data['mhrb4']" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "id": "0818d229", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dict_keys(['mhrb1', 'mhrb2', 'mhrb3', 'mhrb4', 'mhrb5', 'mhrb6', 'mhrb7', 'mhrb8', 'ece01', 'ece02', 'ece03', 'ece04', 'ece05', 'ece06', 'ece07', 'ece08', 'ece09', 'ece10', 'ece11', 'ece12', 'ece13', 'ece14', 'ece15', 'ece16', 'ece17', 'ece18', 'ece19', 'ece20', 'ece21', 'ece22', 'ece23', 'ece24', 'ece25', 'ece26', 'ece27', 'ece28', 'ece29', 'ece30', 'ece31', 'ece32', 'ece33', 'ece34', 'ece35', 'ece36', 'ece37', 'ece38', 'ece39', 'ece40', 'ece41', 'ece42', 'ece43', 'ece44', 'ece45', 'ece46', 'ece47', 'ece48', 'co2r0', 'co2v1', 'co2v2', 'co2v3', 'gasgasa', 'gasgasb', 'gasgasc', 'gasgasd', 'gasgase', 'echechpwr', 'echechpwrc', 'echecleifpwrc', 'echecleipolang', 'echecleixmfrac', 'echeclukfpwrc', 'echeclukpolang', 'echeclukxmfrac', 'echecr2dfpwrc', 'echecr2dpolang', 'echecr2dxmfrac', 'pinpinjf_15l', 'pinpinjf_15r', 'pinpinjf_21l', 'pinpinjf_21r', 'pinpinjf_30l', 'pinpinjf_30r', 'pinpinjf_33l', 'pinpinjf_33r', 'tintinj_15l', 'tintinj_15r', 'tintinj_21l', 'tintinj_21r', 'tintinj_30l', 'tintinj_30r', 'tintinj_33l', 'tintinj_33r'])" + ] + }, + "execution_count": 70, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data.keys()" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "id": "36eb742e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(513, 11066)" + ] + }, + "execution_count": 71, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data['mhrb4'].shape" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "id": "59d841a1", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(11066,)" + ] + }, + "execution_count": 74, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data['gasgasa'].shape" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "id": "434b288f", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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Pmv48/TSwYMH8W/+zb/Btm3b0G63cemll+JLX/pS+J6I8Eu/9EvYtWsX2u02rr32Wjz44INT91hdXcX111+P2dlZzM/P48d//McxGAymrvnqV7+KF7/4xWi1WjjttNPwW7/1W0/J+z1TyRiDX/zFX8SZZ56JdruNs88+G7/+678+1X+z4c1TR//wD/+A7/me78Hu3bshhMBf//VfT33/VPLife97Hy644AK0Wi1ceuml+MhHPvLP/r5PGdEzjN7znvdQmqb0p3/6p3T33XfT6173Opqfn6cjR4483UM7Zei6666jd73rXXTXXXfR7bffTi972cvo9NNPp8FgEK75iZ/4CTrttNPopptuoi996Uv0/Oc/n17wgheE76uqoksuuYSuvfZa+spXvkIf+chHaGlpid7+9reHax555BHqdDp0ww030D333EPvfOc7SSlFH/3oR5/S930m0xe+8AV61rOeRZdddhm96U1vCp83/Hn6aHV1lc444wz60R/9Ubr11lvpkUceoY997GP00EMPhWve8Y530NzcHP31X/813XHHHfS93/u9dOaZZ9J4PA7XfPd3fzc9+9nPpltuuYU+85nP0DnnnEOvetWrwvcbGxu0vLxM119/Pd111130l3/5l9Rut+m//tf/+pS+7zOJfuM3foO2bdtGH/rQh+jRRx+l973vfdTr9eg//af/FK5pePPU0Uc+8hH6+Z//efqrv/orAkAf+MAHpr5/qnjxuc99jpRS9Fu/9Vt0zz330C/8wi9QkiR05513ftPn4JtBzzhgd9VVV9Eb3/jG8G9jDO3evZtuvPHGp3FUpzYdPXqUANCnP/1pIiJaX1+nJEnofe97X7jm3nvvJQB08803ExFvWCklrayshGv+6I/+iGZnZynPcyIieutb30oXX3zx1LN++Id/mK677rpv9iudEtTv9+ncc8+lj3/84/Qv/+W/DMCu4c/TS29729voRS960df83lpLO3fupN/+7d8On62vr1OWZfSXf/mXRER0zz33EAD64he/GK7527/9WxJC0MGDB4mI6A//8A9pYWEh8Ms/+/zzz//nfqVThl7+8pfTj/3Yj0199gM/8AN0/fXXE1HDm6eTtgK7p5IXP/RDP0Qvf/nLp8Zz9dVX07/7d//un/Udnyp6Rrlii6LAbbfdhmuvvTZ8JqXEtddei5tvvvlpHNmpTRsbGwCAxcVFAMBtt92Gsiyn+HDBBRfg9NNPD3y4+eabcemll04Vnb7uuuuwubmJu+++O1wT38Nf0/Dy66M3vvGNePnLX37SHDb8eXrpb/7mb3DllVfila98JXbs2IHLL78c/+2//bfw/aOPPoqVlZWpuZ2bm8PVV189xZ/5+XlceeWV4Zprr70WUkrceuut4Zp/8S/+BdI0Dddcd911uP/++7G2tvbNfs1nJL3gBS/ATTfdhAceeAAAcMcdd+Czn/0sXvrSlwJoePOtRE8lL041WfeMAnbHjx+HMeakDhXLy8tYWVl5mkZ1apO1Fm9+85vxwhe+EJdccgkAYGVlBWmaYn5+furamA8rKytPyCf/3ZNds7m5ifF4/M14nVOG3vOe9+DLX/4ybrzxxpO+a/jz9NIjjzyCP/qjP8K5556Lj33sY3jDG96An/qpn8Kf//mfA6jn98nk2MrKCnbs2DH1vdYai4uL3xAPG5qmn/u5n8OP/MiP4IILLkCSJLj88svx5je/Gddffz2AhjffSvRU8uJrXfNM5dXT0lKsoWcOvfGNb8Rdd92Fz372s0/3UBpytH//frzpTW/Cxz/+cbRarad7OA1tIWstrrzySvzmb/4mAODyyy/HXXfdhT/+4z/Ga17zmqd5dN/e9N73vhfvfve78Rd/8Re4+OKLcfvtt+PNb34zdu/e3fCmoVOGnlEWu6WlJSilTsruO3LkCHbu3Pk0jerUpZ/8yZ/Ehz70IXzqU5/C3r17w+c7d+5EURRYX1+fuj7mw86dO5+QT/67J7tmdnYW7Xb7n/t1Thm67bbbcPToUTz3uc+F1hpaa3z605/Gf/7P/xlaaywvLzf8eRpp165duOiii6Y+u/DCC7Fv3z4A9fw+mRzbuXMnjh49OvV9VVVYXV39hnjY0DS95S1vCVa7Sy+9FK9+9avx0z/908Hy3fDmW4eeSl58rWueqbx6RgG7NE1xxRVX4KabbgqfWWtx00034ZprrnkaR3ZqERHhJ3/yJ/GBD3wAn/zkJ3HmmWdOfX/FFVcgSZIpPtx///3Yt29f4MM111yDO++8c2rTffzjH8fs7GxQetdcc83UPfw1DS+fnF7ykpfgzjvvxO233x7+u/LKK3H99deHvzf8efrohS984UnlgR544AGcccYZAIAzzzwTO3funJrbzc1N3HrrrVP8WV9fx2233Rau+eQnPwlrLa6++upwzT/8wz+gLMtwzcc//nGcf/75WFhY+Ka93zOZRqMRpJxWe0opWGsBNLz5VqKnkhennKx7urM3vlF6z3veQ1mW0Z/92Z/RPffcQ69//etpfn5+Kruvof87esMb3kBzc3P093//93T48OHw32g0Ctf8xE/8BJ1++un0yU9+kr70pS/RNddcQ9dcc0343pfT+K7v+i66/fbb6aMf/Sht3779CctpvOUtb6F7772X/uAP/qApp/FPpDgrlqjhz9NJX/jCF0hrTb/xG79BDz74IL373e+mTqdD//N//s9wzTve8Q6an5+n//N//g999atfpVe84hVPWMbh8ssvp1tvvZU++9nP0rnnnjtVxmF9fZ2Wl5fp1a9+Nd111130nve8hzqdTlNS40noNa95De3ZsyeUO/mrv/orWlpaore+9a3hmoY3Tx31+336yle+Ql/5ylcIAP3u7/4ufeUrX6HHH3+ciJ46Xnzuc58jrTX9zu/8Dt177730y7/8y025k6ea3vnOd9Lpp59OaZrSVVddRbfccsvTPaRTigA84X/vete7wjXj8Zj+/b//97SwsECdToe+//u/nw4fPjx1n8cee4xe+tKXUrvdpqWlJfqZn/kZKsty6ppPfepT9JznPIfSNKWzzjpr6hkNff20Fdg1/Hl66YMf/CBdcskllGUZXXDBBfQnf/InU99ba+kXf/EXaXl5mbIso5e85CV0//33T11z4sQJetWrXkW9Xo9mZ2fpta99LfX7/alr7rjjDnrRi15EWZbRnj176B3veMc3/d2eybS5uUlvetOb6PTTT6dWq0VnnXUW/fzP//xUKYyGN08dfepTn3pCXfOa17yGiJ5aXrz3ve+l8847j9I0pYsvvpg+/OEPf9Pe+5tNgigqud1QQw011FBDDTXU0DOWnlExdg011FBDDTXUUEMNfW1qgF1DDTXUUEMNNdTQKUINsGuooYYaaqihhho6RagBdg011FBDDTXUUEOnCDXArqGGGmqooYYaaugUoQbYNdRQQw011FBDDZ0i1AC7hhpqqKGGGmqooVOEGmDXUEMNNdRQQw01dIpQA+waaqihhhpqqKGGThFqgF1DDTXUUEMNNdTQKUINsGuooYYaaqihhho6RagBdg011FBDDTXUUEOnCDXArqGGGmqooYYaaugUoQbYNdRQQw01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n8C5c+dw+vRpfLX2kHvs1us1PvzhD+NVr3qVf5dSwq233oo777zzsve85jWvwc/8zM8c+f6//NW3fd36uW3btm3btm3btm3b9khqFy5ceOQBuy996UsopeDs2bPd92fPnsX/+l//67L3vOpVr8LLX/5y/3zu3Dk88YlPxOc///mvOcBte+jb3t4envCEJ+AP//APcerUqYe7O9s2a9v5eeS27dw8stt2fh7Z7dE8P8yMCxcu4Prrr/+a114Ru2KXyyWWy+WR70+fPv2om7xHUzt16tR2fh7BbTs/j9y2nZtHdtvOzyO7PVrn54E6stLXvuSPt11zzTXIOeOee+7pvr/nnntw3XXXPdTd2bZt27Zt27Zt27Zte9S0hxzYLRYLPOtZz8Idd9zh39Vacccdd+CWW255qLuzbdu2bdu2bdu2bdv2qGkPSyj25S9/OV74whfipptuwrOf/Wy8/vWvx6VLl/BDP/RDD+j+5XKJn/7pn75seHbbHv62nZ9HdtvOzyO3befmkd228/PIbtv5kfawlDsBgF/4hV/wAsXPeMYz8IY3vAE333zzw9GVbdu2bdu2bdu2bdu2R0V72IDdtm3btm3btm3btm3btv3xtoc8x27btm3btm3btm3btm3bvj5tC+y2bdu2bdu2bdu2bdseJW0L7LZt27Zt27Zt27Zt2x4lbQvstm3btm3btm3btm3bHiXtigR2b3rTm/CN3/iN2NnZwc0334wPfvCDD3eXHlXtNa95Db79278dJ0+exLXXXovv+77vw6c//enumsPDQ7z4xS/GYx7zGJw4cQLf//3ff6To9Oc//3k8//nPx7Fjx3DttdfiFa94BaZp6q75jd/4DXzbt30blsslvvmbvxlvectbvt7De9S11772tSAivOxlL/PvtvPz8LY/+qM/wt/6W38Lj3nMY7C7u4unPe1p+NCHPuS/MzN+6qd+Co973OOwu7uLW2+9FZ/5zGe6Z9x33324/fbbcerUKZw5cwY//MM/jIsXL3bX/O7v/i7+/J//89jZ2cETnvAEvO51r3tIxneltlIKXv3qV+PGG2/E7u4u/tSf+lP4J//knyDuIdzOzUPX3v/+9+N7vud7cP3114OI8I53vKP7/aGci7e//e148pOfjJ2dHTztaU/Du971rj/28T5kja+w9ra3vY0XiwX/23/7b/n3fu/3+Ed+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X/OjP/qjfMMNN/B73/te/tCHPsS33HIL33LLLf67ldP4y3/5L/NHP/pRfve7382PfexjL1tO4xWveAV/6lOf4je96U3bchr/P7a4K5Z5Oz8PZ/vgBz/IwzDwz/7sz/JnPvMZfutb38rHjh3j//Af/oNf89rXvpbPnDnD//k//2f+3d/9Xf7e7/3ey5ZxeOYzn8l33XUXf+ADH+AnPelJXRmHc+fO8dmzZ/kHf/AH+ROf+AS/7W1v42PHjm1LanyV9sIXvpAf//jHe7mTX/3VX+VrrrmGX/nKV/o127l56NqFCxf4Ix/5CH/kIx9hAPzP//k/54985CP8f/7P/2Hmh24ufuu3fouHYeCf//mf50996lP80z/909tyJw91e+Mb38g33HADLxYLfvazn82//du//XB36VHVAFz2v1/6pV/yaw4ODvjv/b2/x1dddRUfO3aM/+pf/av8hS98oXvO//7f/5uf97zn8e7uLl9zzTX8j/7RP+LNZtNd8773vY+f8Yxn8GKx4G/6pm/q3rFtD7zNgd12fh7e9l//63/lpz71qbxcLvnJT34y/+t//a+732ut/OpXv5rPnj3Ly+WSn/vc5/KnP/3p7povf/nL/AM/8AN84sQJPnXqFP/QD/0QX7hwobvmYx/7GD/nOc/h5XLJj3/84/m1r33t131sV3Lb29vjl770pXzDDTfwzs4Of9M3fRP/xE/8RFcKYzs3D1173/ved1ld88IXvpCZH9q5+JVf+RX+03/6T/NiseCnPOUp/N/+23/7uo37692IOZTc3rZt27Zt27Zt27Zt27Yrtl1ROXbbtm3btm3btm3btm3b9pXbFtht27Zt27Zt27Zt27Y9StoW2G3btm3btm3btm3btj1K2hbYbdu2bdu2bdu2bdu2PUraFtht27Zt27Zt27Zt27Y9StoW2G3btm3btm3btm3btj1K2hbYbdu2bdu2bdu2bdu2PUraFtht27Zt27Zt27Zt27Y9StoW2G3btm3btm3btm3btj1K2hbYbdu2bdu2bdu2bdu2PUraFtht27Zt27Zt27Zt27Y9Str/B49Y4PK4iwLMAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.subplot(2, 1, 1)\n", + "plt.imshow(data['mhrb4'], aspect='auto', origin='lower')\n", + "plt.title('mhrb4')\n", + "plt.subplot(2, 1, 2)\n", + "plt.imshow(data['co2r0'], aspect='auto', origin='lower')\n", + "plt.title('co2r0')\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "id": "74391de4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 77, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(data['gasgasa'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4a656412", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/data_preparation.ipynb b/notebooks/data_preparation.ipynb new file mode 100644 index 0000000..4db2cbe --- /dev/null +++ b/notebooks/data_preparation.ipynb @@ -0,0 +1,439 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "e23296a9", + "metadata": {}, + "outputs": [], + "source": [ + "%load_ext autoreload\n", + "%autoreload 2" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9b8f64ca", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from pathlib import Path\n", + "import matplotlib.pyplot as plt\n", + "\n", + "from fusionaihub.datasets.prepare import prepare2 as p2" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "4baa86aa", + "metadata": {}, + "outputs": [], + "source": [ + "cfg = p2.sample_cfg\n", + "shot = 170000" + ] + }, + { + "cell_type": "code", + "execution_count": 141, + "id": "742dfd1b", + "metadata": {}, + "outputs": [], + "source": [ + "import h5py" + ] + }, + { + "cell_type": "code", + "execution_count": 146, + "id": "dece5ac7", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " CLASS: b'GROUP'\n", + " TITLE: Empty(dtype=dtype('S1'))\n", + " VERSION: b'1.0'\n", + " axis0_variety: b'regular'\n", + " axis1_variety: b'regular'\n", + " block0_items_variety: b'regular'\n", + " encoding: b'UTF-8'\n", + " end_time_ms: 13100.0\n", + " errors: b'strict'\n", + " missing_channels: Empty(dtype=dtype('S1'))\n", + " nblocks: 1\n", + " ndim: 2\n", + " pandas_type: b'frame'\n", + " pandas_version: b'0.15.2'\n", + " r_coordinates: b'N.'\n", + " sampling_frequency_kHz: 100.00000223517424\n", + " start_time_ms: 0.0\n", + " z_coordinates: b'N.'\n" + ] + } + ], + "source": [ + "import h5py\n", + "\n", + "def get_h5_attrs(directory, shot):\n", + " with h5py.File(directory + f'/{shot}.h5', 'r') as f:\n", + " mhr_group = f['p_inj']\n", + " for attr_name, attr_value in mhr_group.attrs.items():\n", + " print(f\" {attr_name}: {attr_value}\")\n", + "\n", + "# Get attrs for shot 170000\n", + "get_h5_attrs(cfg[\"raw_data_dir\"], 170000)" + ] + }, + { + "cell_type": "code", + "execution_count": 167, + "id": "484333c0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['/bes', '/bes_slow', '/beta', '/cer_amp', '/cer_amp_error', '/cer_coord_phi', '/cer_coord_r', '/cer_coord_z', '/cer_fz', '/cer_nz', '/cer_rot', '/cer_rot_error', '/cer_ti', '/cer_ti_error', '/cer_vb', '/cer_vb_error', '/cer_zeff', '/co2_density', '/co2_density_slow', '/co2_phase', '/coil_field_strength', '/d_alpha', '/divertor_geo', '/e_dens_fit', '/e_temp_fit', '/ece_cali', '/ece_slow', '/ech', '/gas', '/i_dens_fit', '/i_temp_fit', '/ip', '/mag_b0', '/mag_geo_para', '/mag_mode_number', '/mag_others', '/mag_pcb_coil', '/magnetics', '/magnetics_high_resolution', '/mse', '/neutron', '/other_profiles', '/p_inj', '/pressure', '/psi_r_z', '/q_psi', '/rho_qmin', '/rmp_current', '/ssi', '/t_inj', '/t_rot_fit', '/ts_core_density', '/ts_core_density_error', '/ts_core_temperature', '/ts_core_temperature_error', '/ts_divertor_density', '/ts_divertor_density_error', '/ts_divertor_temperature', '/ts_divertor_temperature_error', '/ts_tangential_density', '/ts_tangential_density_error', '/ts_tangential_temperature', '/ts_tangential_temperature_error']\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
gasagasbgascgasdgase
Time [ms]
-8053.6000980.0074010.0103830.0049320.0116070.008635
-8053.549805-0.0006170.0048860.0067810.0109960.003701
-8053.5000000.0148020.0079400.0110960.0085520.009252
-8053.450195-0.0061680.0024430.002466-0.000611-0.001234
-8053.3999020.0086350.0183230.0049320.0122170.006168
..................
11606.9501950.0037010.007940-0.001849-0.0012220.004318
11607.000000-0.014185-0.000611-0.017877-0.010996-0.012953
11607.0498050.0061680.0183230.0000000.001222-0.001234
11607.099609-0.004317-0.001222-0.007398-0.007330-0.011719
11607.1503910.0000000.004886-0.0024660.000000-0.000617
\n", + "

393216 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " gasa gasb gasc gasd gase\n", + "Time [ms] \n", + "-8053.600098 0.007401 0.010383 0.004932 0.011607 0.008635\n", + "-8053.549805 -0.000617 0.004886 0.006781 0.010996 0.003701\n", + "-8053.500000 0.014802 0.007940 0.011096 0.008552 0.009252\n", + "-8053.450195 -0.006168 0.002443 0.002466 -0.000611 -0.001234\n", + "-8053.399902 0.008635 0.018323 0.004932 0.012217 0.006168\n", + "... ... ... ... ... ...\n", + " 11606.950195 0.003701 0.007940 -0.001849 -0.001222 0.004318\n", + " 11607.000000 -0.014185 -0.000611 -0.017877 -0.010996 -0.012953\n", + " 11607.049805 0.006168 0.018323 0.000000 0.001222 -0.001234\n", + " 11607.099609 -0.004317 -0.001222 -0.007398 -0.007330 -0.011719\n", + " 11607.150391 0.000000 0.004886 -0.002466 0.000000 -0.000617\n", + "\n", + "[393216 rows x 5 columns]" + ] + }, + "execution_count": 167, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "\n", + "with pd.HDFStore(cfg[\"raw_data_dir\"] + '/170000.h5', \"r\") as store:\n", + " print(store.keys())\n", + " signal = store['gas']\n", + "\n", + "signal" + ] + }, + { + "cell_type": "code", + "execution_count": 168, + "id": "fdb1b47f", + "metadata": {}, + "outputs": [], + "source": [ + "channel = signal['gasa']" + ] + }, + { + "cell_type": "code", + "execution_count": 172, + "id": "f9cb5191", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 172, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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2GOux4MGDdLhw4f14osvur7cAsGTfaxaf79+/RQREaH7779fmZmZlp/OuSHv5aFDh3TjjTfq9ttv17333utabtX3EudMnDhRW7du1VdffeW2/L777nPd79u3r9q1a6frr79ee/bsUdeuXf1dpsdGjRrlut+vXz+lp6erY8eO+uijj/z+5eoP77zzjkaNGqWUlBTXsmB/D3FuYO0dd9whY4xmzJjh9pyVvmOCJqg8/vjjbmm+Jl26dHF7PHPmTLVp06ZeX1jp6elavHix63FycnK1UfpHjx5VcnKy6/nKZe3atXNb57LLLrtoezVpyD5WSk9PV0VFhfbv36+ePXvWWn/V2gOxj5Ln+3n48GFdd911uuqqq/TWW29ddPtWeC+9JSEhQaGhoXXWb1UPPfSQPvvsM61YscKtR7Mm6enpks71mnXt2lXJycnVzmyq789vTEyM38NCXFycevTood27d+uGG25QWVmZ8vPz3XpVLvyZC5b9O3DggJYsWeLqKalNsL+HVeuq67MgOTlZeXl5bq+rqKjQyZMnL7pfVdu42OeSr1WGlAMHDuiLL75w602piS++Y+oraMaoJCYmKi0trc5b1WNlxhjNnDlT48aNU3h4+EW3v3HjRrcfzCFDhujzzz93W2fx4sUaMmSIJKlz585KTk52W6ewsFDffvutax1f7+OF9YeEhLi6JIcMGaIVK1aovLzcrf6ePXsqPj4+YPvo6X4eOnRI1157rQYOHKiZM2cqJOTiP7JWeC+9JSIiQgMHDnSrzel06vPPPw94bbUxxuihhx7S3Llz9cUXX1TrHq7Jxo0bJcn1vg0ZMkRbtmxx+0JYvHixYmJidOmll7rWqet99afi4mLt2bNH7dq108CBAxUeHu5WW1ZWlrKzs121BdP+zZw5U0lJSRo9enSd6wX7eyjV77NgyJAhys/P17p161zrfPHFF3I6na6w5o3PX1+qDCm7du3SkiVL1KZNm4u+xhffMfXm0dDbILJkyRIjyezYsaPac7NmzTLvv/++2bFjh9mxY4f54x//aEJCQsxf//pX1zpff/21CQsLMy+99JLZsWOHmTp1ao2ntMbFxZlPPvnEbN682dx6661+OaX1m2++MX/605/Mxo0bzZ49e8x7771nEhMTzbhx41zr5Ofnm7Zt25q77rrLbN261cyePdu0bNmy2qljVt1HY4w5ePCg6datm7n++uvNwYMH3U6TqxTs72V9zJ4929jtdjNr1iyzfft2c99995m4uDi3syms5MEHHzSxsbFm2bJlbu9ZSUmJMcaY3bt3m2eeecasXbvW7Nu3z3zyySemS5cuZvjw4a5tVJ7aOmLECLNx40azcOFCk5iYWOOprU888YTZsWOHef311/12+u7jjz9uli1bZvbt22e+/vprk5GRYRISEkxeXp4x5tzpyR06dDBffPGFWbt2rRkyZIgZMmRI0OxfJYfDYTp06GAmT57stjyY38OioiKzYcMGs2HDBiPJvPzyy2bDhg2uM17q81lw4403mgEDBphvv/3WfPXVV6Z79+5upyd76/PXF/tYVlZmbrnlFtO+fXuzceNGt9/RyjN4/PkdUx9NNqiMGTPGbd6CqmbNmmV69eplWrZsaWJiYszgwYPdTiWs9NFHH5kePXqYiIgI07t3b/Ovf/3L7Xmn02n+3//7f6Zt27bGbreb66+/3mRlZflkf6pat26dSU9PN7GxsaZFixamV69e5rnnnjNnz551W2/Tpk3m6quvNna73VxyySVm2rRp1bZl1X00xpiZM2caSTXeKgX7e1lf06dPNx06dDARERFm8ODBZtWqVYEuqVa1vWczZ840xhiTnZ1thg8fblq3bm3sdrvp1q2beeKJJ9zm4DDGmP3795tRo0aZyMhIk5CQYB5//HFTXl7uts7SpUvNZZddZiIiIkyXLl1cbfjanXfeadq1a2ciIiLMJZdcYu68806ze/du1/Nnzpwxv/zlL018fLxp2bKl+dGPfuQWsI2x9v5VWrRokZFU7XchmN/DpUuX1vjzOX78eGNM/T4LTpw4YcaMGWOioqJMTEyMmTBhgikqKnJbxxufv77Yx8opHWq6Vc6R48/vmPqwGWOMZ30wAAAA/hE0Y1QAAEDzQ1ABAACWRVABAACWRVABAACWRVABAACWRVABAACWRVABAACWRVABAACWRVABmom7775bt912m9/bnTVrlmw2m2w2myZNmuSzdvbv3+9qJ9AXkwTgPUFz9WQAtbPZbHU+P3XqVL366qsK1ETUMTExysrKUqtWrXzWRmpqqo4cOaKXXnpJS5Ys8Vk7APyLoAI0AUeOHHHd//DDD/XUU08pKyvLtSwqKkpRUVGBKE3SuSDl68vXh4aGKjk5OaD7CcD7OPQDNAHJycmuW2xsrCsYVN6ioqKqHfq59tpr9fDDD2vSpEmKj49X27Zt9fbbb+v06dOaMGGCoqOj1a1bNy1YsMCtra1bt2rUqFGKiopS27Ztddddd+n48eMe19ypUyc9++yzGjdunKKiotSxY0d9+umnOnbsmG699VZFRUWpX79+Wrt2res1Bw4c0M0336z4+Hi1atVKvXv31vz58xv8/wbA+ggqQDP27rvvKiEhQatXr9bDDz+sBx98ULfffruuuuoqrV+/XiNGjNBdd92lkpISSVJ+fr5+8IMfaMCAAVq7dq0WLlyoo0eP6o477mhQ+3/60580dOhQbdiwQaNHj9Zdd92lcePG6Wc/+5nWr1+vrl27aty4ca5DVhMnTlRpaalWrFihLVu26Pnnn6cHBWjiCCpAM9a/f3/97ne/U/fu3TVlyhS1aNFCCQkJuvfee9W9e3c99dRTOnHihDZv3ixJeu211zRgwAA999xzSktL04ABA/TXv/5VS5cu1Xfffedx+z/84Q91//33u9oqLCzUoEGDdPvtt6tHjx6aPHmyduzYoaNHj0qSsrOzNXToUPXt21ddunTRTTfdpOHDh3v1/wSAtRBUgGasX79+rvuhoaFq06aN+vbt61rWtm1bSVJeXp4kadOmTVq6dKlrzEtUVJTS0tIkSXv27GlU+5Vt1dX+I488omeffVZDhw7V1KlTXQEKQNNFUAGasfDwcLfHNpvNbVnl2UROp1OSVFxcrJtvvlkbN250u+3atatBPRs1tVVX+7/4xS+0d+9e3XXXXdqyZYuuuOIKTZ8+3eN2AQQPggqAerv88su1bds2derUSd26dXO7+fLU46pSU1P1wAMPaM6cOXr88cf19ttv+6VdAIFBUAFQbxMnTtTJkyc1ZswYrVmzRnv27NGiRYs0YcIEORwOn7c/adIkLVq0SPv27dP69eu1dOlS9erVy+ftAggcggqAektJSdHXX38th8OhESNGqG/fvpo0aZLi4uIUEuL7jxOHw6GJEyeqV69euvHGG9WjRw+98cYbPm8XQODYTKCmqgTQLMyaNUuTJk1Sfn6+X9p7+umnNW/ePG3cuNEv7QHwLXpUAPhcQUGBoqKiNHnyZJ+1kZ2draioKD333HM+awOA/9GjAsCnioqKXPOgxMXFKSEhwSftVFRUaP/+/ZIku92u1NRUn7QDwL8IKgAAwLI49AMAACyLoAIAACyLoAIAACyLoAIAACyLoAIAACyLoAIAACyLoAIAACyLoAIAACzr/wMGvJxP6Uk3uwAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "channel.plot()" + ] + }, + { + "cell_type": "code", + "execution_count": 152, + "id": "91f88685", + "metadata": {}, + "outputs": [], + "source": [ + "import torch" + ] + }, + { + "cell_type": "code", + "execution_count": 159, + "id": "cf665d9e", + "metadata": {}, + "outputs": [], + "source": [ + "# Apply STFT transform to the channel data\n", + "x_tensor = torch.from_numpy(channel.values).float()\n", + "stft_result = torch.stft(\n", + " x_tensor, \n", + " n_fft=1024, \n", + " hop_length=256, \n", + " window=torch.hann_window(1024), \n", + " return_complex=True\n", + ")\n", + "# Take log of absolute values\n", + "log_abs_stft = torch.log(torch.abs(stft_result))" + ] + }, + { + "cell_type": "code", + "execution_count": 162, + "id": "1b0ca730", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Original signal length: 1310001\n", + "STFT time frames: 5118\n", + "Decimation factor: 255.95955451348183\n", + "Decimated signal length: 5118\n" + ] + } + ], + "source": [ + "# Decimate the original signal to match the STFT time dimension\n", + "stft_time_frames = log_abs_stft.shape[1]\n", + "original_length = len(channel)\n", + "\n", + "print(f\"Original signal length: {original_length}\")\n", + "print(f\"STFT time frames: {stft_time_frames}\")\n", + "print(f\"Decimation factor: {original_length / stft_time_frames}\")\n", + "\n", + "# Create decimated signal by taking every nth sample\n", + "decimation_factor = original_length // stft_time_frames\n", + "decimated_signal = channel.values[::decimation_factor][:stft_time_frames]\n", + "\n", + "print(f\"Decimated signal length: {len(decimated_signal)}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 166, + "id": "c9129a21", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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13W4z33ucx201jCbzfBbv/Vb+K3f+i189atfxYc+9CG84hWvwJvf/GZMJhO84Q1vWLn+R37kR1b+vuUtb4mUUuQfXXjhhVDV/a4jaN1intV3anW8+c1vvvL3l770JQDAj/7oj+537W1ve1u85z3vwd69e7F7925sbm6uVEMkruy1K3sW8Y53vAMveMEL8PGPfxzz+TxevzJS4qY3venK37Rh3uQmN7nS1y+77LIrfSZg4eUbGxtX2decM77yla/g+OOPv8p7XB32nUMRwa1udasDyrrat58kqK6uPwcLIoKnPe1peM973oMPfvCD1ygA/Zqs47W1tf2soUccccR+Y/KdrKeruueVXVvPya5duw547zY0NDQ0NFyXaKRUQ0NDQ0PDd4jpdIo73/nOuPOd74xb3/rWeMxjHoO3vOUteN7znnewm3a1OOaYY/Cwhz0MZ5xxBo4//ni8+c1vxp/+6Z9ebdbUvgflnDNEBO9617vQdd1+1x9IltE1wbfLNrqun/VP//RPOPXUU3H3u98dr371q3HMMcdgMpngda97Hd74xjfud/2VjcnVva6q31mjDxK+3/pDUvCb3/zmdfaMqxqTGt+t9XRl4/ztrr2+925DQ0NDQ8OVoZFSDQ0NDQ0N30Xc6U53AmC2su8XTCYTnHDCCbjwwgvDvkNceOGFK4qhiy66CDnnsKTd8pa3hKri5je/OW5961tf5TNoOfrUpz51tUqwa2LlA0p4++c+97n93vvsZz+LH/qhH8L27duxtraGtbU1XHTRRftdd2WvXRX+z//5P1hbW8N73vMezGazeP11r3vdNWr3tcENbnADbNu27Sr7mlLaT4F1TXDhhReu/K2quOiii3DCCSdc63t+r4J2t6sKub8qHOg6PlAczPV0oHu3oaGhoaHhukTLlGpoaGhoaLgW+MAHPnCl6gTm71yZxepg48ILL8SXv/zl/V7/1re+hfPPPx9HHHHEfof0c889d+XvV77ylQAQOUynn346uq7DWWedtd94qCq+8Y1vAAB+4id+Aje/+c3x8pe/fL/sqvpz27dvjzYdCI455hjc4Q53wOtf//qVz3zqU5/Ce9/7Xvzsz/4sgGKLfNvb3oaLL744rrvooovwrne964CexfuICMZxjNe++MUv4m1ve9sB3+Paous63Pe+98Xf/u3frljqvva1r+GNb3wj7na3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86u7SYqyRvLUU0/hgAMOQP/+/WGMwX333VfxPhHhvPPOQ79+/VBdXY3Ro0fjnXfeqbhmzpw5OPzww1FfX49u3brhu9/9LhYsWFBxzSuvvIJdd90VVVVVGDhwIH71q1+t7K4pyhrDpZdeiu233x5dunRB7969cdBBB2Hq1KkV17S0tODEE0/EOuusg7q6OhxyyCH49NNPK6758MMPsd9++6Gmpga9e/fGWWedhXK5XHHN+PHjse2226JYLGLDDTfEuHHjVnb3FGWN4LrrrsNWW22F+vp61NfXY8SIEXjwwQfD+7rHFGXFctlll8EYg9NOOy28pvtMUb4cF1xwAYwxFX823XTT8P7atMc6tSh1991344wzzsD555+Pl156CcOGDcOYMWMwa9as1d00RVnjaGxsxLBhw3Dttdd2+P6vfvUrXH311bj++usxadIk1NbWYsyYMWhpaQnXHH744Xj99dfx6KOP4oEHHsBTTz2F448/Przf0NCAvffeG4MGDcLkyZNxxRVX4IILLsAf//jHld4/RVkTmDBhAk488UQ899xzePTRR1EqlbD33nujsbExXHP66afj/vvvx1/+8hdMmDABn3zyCQ4++ODwfpqm2G+//dDW1oZ///vfuOWWWzBu3Dicd9554Zrp06djv/32w6hRozBlyhScdtpp+N73voeHH354lfZXUVYH6667Li677DJMnjwZL774IvbYYw8ceOCBeP311wHoHlOUFckLL7yAG264AVtttVXF67rPFOXLs8UWW2DGjBnhzzPPPBPeW6v2GHVidthhBzrxxBPD72maUv/+/enSSy9dja1SlDUfAHTvvfeG351z1LdvX7riiivCa3PnzqVisUh33nknERG98cYbBIBeeOGFcM2DDz5Ixhj6+OOPiYjoD3/4A3Xv3p1aW1vDNT/5yU9ok002Wck9UpQ1k1mzZhEAmjBhAhH5fZXP5+kvf/lLuObNN98kADRx4kQiIvrXv/5F1lqaOXNmuOa6666j+vr6sLd+/OMf0xZbbFHxrEMPPZTGjBmzsrukKGsk3bt3pxtvvFH3mKKsQObPn08bbbQRPfroozRy5Eg69dRTiUj/LlOUFcH5559Pw4YN6/C9tW2PdVqnVFtbGyZPnozRo0eH16y1GD16NCZOnLgaW6Yoax/Tp0/HzJkzK/ZT165dseOOO4b9NHHiRHTr1g3bbbdduGb06NGw1mLSpEnhmt122w2FQiFcM2bMGEydOhVffPHFKuqNoqw5zJs3DwDQo0cPAMDkyZNRKpUq9tqmm26K9dZbr2KvDR06FH369AnXjBkzBg0NDcEJMnHixIp7yDX695/S2UjTFHfddRcaGxsxYsQI3WOKsgI58cQTsd9++7XbC7rPFGXF8M4776B///5Yf/31cfjhh+PDDz8EsPbtsU4rSn3++edI07RiEgCgT58+mDlz5mpqlaKsncieWdx+mjlzJnr37l3xfi6XQ48ePSqu6ege2WcoSmfBOYfTTjsNX/va17DlllsC8PugUCigW7duFdcuvNeWtI8WdU1DQwOam5tXRncUZY3i1VdfRV1dHYrFIn7wgx/g3nvvxeabb657TFFWEHfddRdeeuklXHrppe3e032mKF+eHXfcEePGjcNDDz2E6667DtOnT8euu+6K+fPnr3V7LLfC7qQoiqIoygrjxBNPxGuvvVaRH0BRlBXDJptsgilTpmDevHm45557cPTRR2PChAmru1mK8pXgo48+wqmnnopHH30UVVVVq7s5ivKVZOzYseHnrbbaCjvuuCMGDRqE//u//0N1dfVqbNmy02mdUj179kSSJO0y0H/66afo27fvamqVoqydyJ5Z3H7q27dvuyIC5XIZc+bMqbimo3tkn6EonYGTTjoJDzzwAJ588kmsu+664fW+ffuira0Nc+fOrbh+4b22pH20qGvq6+vXuv+QUZTloVAoYMMNN8Tw4cNx6aWXYtiwYbjqqqt0jynKCmDy5MmYNWsWtt12W+RyOeRyOUyYMAFXX301crkc+vTpo/tMUVYw3bp1w8Ybb4xp06atdX+XdVpRqlAoYPjw4Xj88cfDa845PP744xgxYsRqbJmirH0MGTIEffv2rdhPDQ0NmDRpUthPI0aMwNy5czF58uRwzRNPPAHnHHbcccdwzVNPPYVSqRSuefTRR7HJJpuge/fuq6g3irL6ICKcdNJJuPfee/HEE09gyJAhFe8PHz4c+Xy+Yq9NnToVH374YcVee/XVVytE4EcffRT19fXYfPPNwzXZe8g1+vef0llxzqG1tVX3mKKsAPbcc0+8+uqrmDJlSviz3Xbb4fDDDw8/6z5TlBXLggUL8O6776Jfv35r399lKzRt+lrGXXfdRcVikcaNG0dvvPEGHX/88dStW7eKDPSKonjmz59P//nPf+g///kPAaDf/va39J///Ic++OADIiK67LLLqFu3bvT3v/+dXnnlFTrwwANpyJAh1NzcHO6xzz770DbbbEOTJk2iZ555hjbaaCM67LDDwvtz586lPn360JFHHkmvvfYa3XXXXVRTU0M33HDDKu+voqwOfvjDH1LXrl1p/PjxNGPGjPCnqakpXPODH/yA1ltvPXriiSfoxRdfpBEjRtCIESPC++Vymbbcckvae++9acqUKfTQQw9Rr1696JxzzgnXvPfee1RTU0NnnXUWvfnmm3TttddSkiT00EMPrdL+Ksrq4Oyzz6YJEybQ9OnT6ZVXXqGzzz6bjDH0yCOPEJHuMUVZGWSr7xHpPlOUL8uZZ55J48ePp+nTp9Ozzz5Lo0ePpp49e9KsWbOIaO3aY51alCIiuuaaa2i99dajQqFAO+ywAz333HOru0mKskby5JNPEoB2f44++mgiInLO0bnnnkt9+vShYrFIe+65J02dOrXiHrNnz6bDDjuM6urqqL6+no499liaP39+xTUvv/wy7bLLLlQsFmnAgAF02WWXraouKspqp6M9BoBuvvnmcE1zczP9v//3/6h79+5UU1ND3/jGN2jGjBkV93n//fdp7NixVF1dTT179qQzzzyTSqVSxTVPPvkkbb311lQoFGj99deveIaifJU57rjjaNCgQVQoFKhXr1605557BkGKSPeYoqwMFhaldJ8pypfj0EMPpX79+lGhUKABAwbQoYceStOmTQvvr017zBARrVjvlaIoiqIoiqIoiqIoiqIsnk6bU0pRFEVRFEVRFEVRFEVZfagopSiKoiiKoiiKoiiKoqxyVJRSFEVRFEVRFEVRFEVRVjkqSimKoiiKoiiKoiiKoiirHBWlFEVRFEVRFEVRFEVRlFWOilKKoiiKoiiKoiiKoijKKkdFKUVRFEVRFEVRFEVRFGWVo6KUoiiKoiiKoiiKoiiKsspRUUpRFEVRFGUZOOaYY3DQQQet7mYoiqIoiqKs9agopSiKoiiKwhhjFvvnggsuwFVXXYVx48at8raNHz++wzb9/Oc/X+VtURRFURRFWRHkVncDFEVRFEVR1hRmzJgRfr777rtx3nnnYerUqeG1uro61NXVrY6mBaZOnYr6+vrwe0ftSdMUxhhYq//+qCiKoijKmov+l4qiKIqiKArTt2/f8Kdr164wxlS8VldX1y58b/fdd8fJJ5+M0047Dd27d0efPn3wpz/9CY2NjTj22GPRpUsXbLjhhnjwwQcrnvXaa69h7NixqKurQ58+fXDkkUfi888/X2Ibe/fu3a5N48aNQ7du3fCPf/wDm2++OYrFIj788EO88MIL2GuvvdCzZ0907doVI0eOxEsvvVRxP2MMbrjhBuy///6oqanBZptthokTJ2LatGnYfffdUVtbi5133hnvvvtuxef+/ve/Y9ttt0VVVRXWX399XHjhhSiXy8s/+IqiKIqidDpUlFIURVEURfmS3HLLLejZsyeef/55nHzyyfjhD3+Ib33rW9h5553x0ksvYe+998aRRx6JpqYmAMDcuXOxxx57YJtttsGLL76Ihx56CJ9++in+53/+Z7nb0NTUhMsvvxw33ngjXn/9dfTu3Rvz58/H0UcfjWeeeQbPPfccNtpoI+y7776YP39+xWcvvvhiHHXUUZgyZQo23XRTfOc738EJJ5yAc845By+++CKICCeddFK4/umnn8ZRRx2FU089FW+88QZuuOEGjBs3Dr/85S+Xu/2KoiiKonQ+DBHR6m6EoiiKoijKmsa4ceNw2mmnYe7cuRWvH3PMMZg7dy7uu+8+AN4plaYpnn76aQA+dK5r1644+OCDceuttwIAZs6ciX79+mHixInYaaed8Itf/AJPP/00Hn744XDf//73vxg4cCCmTp2KjTfeuF17xo8fj1GjRqG2trbi9Q8++AD3338/jj32WEyZMgXDhg1bZJ+cc+jWrRv+/Oc/Y//99weAkJfq4osvBgA899xzGDFiBG666SYcd9xxAIC77roLxx57LJqbmwEAo0ePxp577olzzjkn3Pv222/Hj3/8Y3zyySdLHFtFURRFURRAc0opiqIoiqJ8abbaaqvwc5IkWGeddTB06NDwWp8+fQAAs2bNAgC8/PLLePLJJzvMB/Xuu+92KEoJTz/9NLp06RJ+7969OwCgUChUtAMAPv30U/z85z/H+PHjMWvWLKRpiqamJnz44YeLbL+0deH2t7S0oKGhAfX19Xj55Zfx7LPPVjij0jRFS0sLmpqaUFNTs8j2K4qiKIqiCCpKKYqiKIqifEny+XzF78aYiteMMQC8UwkAFixYgAMOOACXX355u3v169dvsc8aMmQIunXr1u716urq8Bzh6KOPxuzZs3HVVVdh0KBBKBaLGDFiBNra2hbZfrnHktp/4YUX4uCDD27XjqqqqsW2X1EURVEURVBRSlEURVEUZRWz7bbb4q9//SsGDx6MXG7l/efYs88+iz/84Q/Yd999AQAfffTRUiVTXxLbbrstpk6dig033PBL30tRFEVRlM6LJjpXFEVRFEVZxZx44omYM2cODjvsMLzwwgt499138fDDD+PYY49FmqYr7DkbbbQRbrvtNrz55puYNGkSDj/8cFRXV3/p+5533nm49dZbceGFF+L111/Hm2++ibvuugs///nPV0CrFUVRFEXpLKgopSiKoiiKsorp378/nn32WaRpir333htDhw7Faaedhm7dusHaFfefZzfddBO++OILbLvttjjyyCNxyimnoHfv3l/6vmPGjMEDDzyARx55BNtvvz122mkn/O53v8OgQYNWQKsVRVEUReksaPU9RVEURVEURVEURVEUZZWjTilFURRFURRFURRFURRllaOilKIoiqIoiqIoiqIoirLKUVFKURRFURRFURRFURRFWeWoKKUoiqIoiqIoiqIoiqKsclSUUhRFURRFURRFURRFUVY5KkopiqIoiqIoiqIoiqIoqxwVpRRFURRFURRFURRFUZRVjopSiqIoiqIoiqIoiqIoyipHRSlFURRFURRFURRFURRllaOilKIoiqIoiqIoiqIoirLKUVFKURRFURRFURRFURRFWeWoKKUoiqIoiqIoiqIoiqKsclSUUhRFURRFURRFURRFUVY5KkopiqIoiqIoiqIoiqIoqxwVpRRFURRFURRFURRFUZRVjopSiqIoiqIoiqIoiqIoyipHRSlFURRFURRFURRFURRllaOilKIoiqJ8BbjgggtgjFmuz44bNw7GGLz//vsrtlEZ3n//fRhjMG7cuBV2z9133x277777Crvfl8UYgwsuuGCF3W/BggX43ve+h759+8IYg9NOO+1L3/PLzPX48eNhjMH48eMrXr/tttuw6aabIp/Po1u3bl+6jcvLotq3PMg4vfjii1++YWsAq2KPK4qiKMryoKKUoiiKoqxGXn/9dRxxxBEYMGAAisUi+vfvj8MPPxyvv/766m7aauP999/Hscceiw022ABVVVXo27cvdtttN5x//vmru2mrlEsuuQTjxo3DD3/4Q9x222048sgjV3eT2vHWW2/hmGOOwQYbbIA//elP+OMf/7hUn1uwYAHOP/987LPPPujRo8diBctjjjkGxph2fzbddNMV2BNFURRFUVYHudXdAEVRFEXprPztb3/DYYcdhh49euC73/0uhgwZgvfffx833XQT7rnnHtx11134xje+sVT3+vnPf46zzz57udpx5JFH4tvf/jaKxeJyfX5FMm3aNGy//faorq7Gcccdh8GDB2PGjBl46aWXcPnll+PCCy8M1z7yyCOrsaUrnyeeeAI77bTTChXjvsxc77bbbmhubkahUAivjR8/Hs45XHXVVdhwww2X+l6ff/45LrroIqy33noYNmzYEt1NxWIRN954Y8VrXbt2Xab2K4qiKIqy5qGilKIoiqKsBt59910ceeSRWH/99fHUU0+hV69e4b1TTz0Vu+66K4488ki88sorWH/99Rd5n8bGRtTW1iKXyyGXW76/1pMkQZIky/XZFc3vfvc7LFiwAFOmTMGgQYMq3ps1a1bF71lx5KvIrFmzsPnmm6/Qe36ZubbWoqqqquI1mZNlDdvr168fZsyYgb59++LFF1/E9ttvv9jrc7kcjjjiiGV6hqIoiqIoaz4avqcoiqIoq4ErrrgCTU1N+OMf/1ghSAFAz549ccMNN6CxsRG/+tWvwuuSN+qNN97Ad77zHXTv3h277LJLxXtZmpubccopp6Bnz57o0qULvv71r+Pjjz9ul/uoo3wzgwcPxv77749nnnkGO+ywA6qqqrD++uvj1ltvrXjGnDlz8KMf/QhDhw5FXV0d6uvrMXbsWLz88svLNS7vvvsu1l133XaCFAD07t274veOckp98MEH+PrXv47a2lr07t0bp59+Oh5++OF2uYZ23313bLnllnjjjTcwatQo1NTUYMCAARXjDQBtbW0477zzMHz4cHTt2hW1tbXYdddd8eSTTy5X/wAv5Hz3u99Fnz59UFVVhWHDhuGWW24J70tupOnTp+Of//xnCFdbXD4gYwxOOukk3HHHHdhkk01QVVWF4cOH46mnnqq47svM9cI5mwYPHhxcXL169VqmnFrFYhF9+/ZdqmuFNE3R0NCwTJ9ZFB9//DG++93von///igWixgyZAh++MMfoq2treK61tZWnHHGGejVqxdqa2vxjW98A5999lnFNX//+9+x3377hXttsMEGuPjii5GmacV1S7vmZJz/7//+D7/85S+x7rrroqqqCnvuuSemTZvWri+TJk3CPvvsg65du6KmpgYjR47Es88+u0LGSVEURVFWNipKKYqiKMpq4P7778fgwYOx6667dvj+brvthsGDB+Of//xnu/e+9a1voampCZdccgm+//3vL/IZxxxzDK655hrsu+++uPzyy1FdXY399ttvqds4bdo0fPOb38Ree+2F3/zmN+jevTuOOeaYinxX7733Hu677z7sv//++O1vf4uzzjoLr776KkaOHIlPPvlkqZ8lDBo0CB999BGeeOKJZf5sY2Mj9thjDzz22GM45ZRT8LOf/Qz//ve/8ZOf/KTD67/44gvss88+GDZsGH7zm99g0003xU9+8hM8+OCD4ZqGhgbceOON2H333XH55ZfjggsuwGeffYYxY8ZgypQpy9zG5uZm7L777rjttttw+OGH44orrkDXrl1xzDHH4KqrrgIAbLbZZrjtttvQs2dPbL311rjttttw2223tRMvF2bChAk47bTTcMQRR+Ciiy7C7Nmzsc8+++C1115bYruWZq4X5sorrwzhpddddx1uu+02HHzwwcswGktPU1MT6uvr0bVrV/To0QMnnngiFixYsFz3+uSTT7DDDjvgrrvuwqGHHoqrr74aRx55JCZMmICmpqaKa08++WS8/PLLOP/88/HDH/4Q999/P0466aSKa8aNG4e6ujqcccYZuOqqqzB8+HCcd955HYbTLs2aEy677DLce++9+NGPfoRzzjkHzz33HA4//PCKa5544gnstttuaGhowPnnn49LLrkEc+fOxR577IHnn39+ucZHURRFUVYppCiKoijKKmXu3LkEgA488MDFXvf1r3+dAFBDQwMREZ1//vkEgA477LB218p7wuTJkwkAnXbaaRXXHXPMMQSAzj///PDazTffTABo+vTp4bVBgwYRAHrqqafCa7NmzaJisUhnnnlmeK2lpYXSNK14xvTp06lYLNJFF11U8RoAuvnmmxfb59dee42qq6sJAG299dZ06qmn0n333UeNjY3trh05ciSNHDky/P6b3/yGANB9990XXmtubqZNN92UANCTTz5Z8VkAdOutt4bXWltbqW/fvnTIIYeE18rlMrW2tlY894svvqA+ffrQcccdV/H6wuPaEVdeeSUBoNtvvz281tbWRiNGjKC6urow10R+Dvbbb7/F3i/7bAD04osvhtc++OADqqqqom984xvhtS8z108++WS7cZR199lnny1VOzvihRdeWOzaOPvss+knP/kJ3X333XTnnXfS0UcfTQDoa1/7GpVKpcW2ryOOOuoostbSCy+80O495xwRxXEaPXp0eI2I6PTTT6ckSWju3Lnhtaampnb3OeGEE6impoZaWlrCa0u75qQfm222WcXau+qqqwgAvfrqq6GtG220EY0ZM6aijU1NTTRkyBDaa6+9wmsdzbuiKIqirAmoU0pRFEVRVjHz588HAHTp0mWx18n7C4cs/eAHP1jiMx566CEAwP/7f/+v4vWTTz55qdu5+eabVzi5evXqhU022QTvvfdeeK1YLMJa/58TaZpi9uzZqKurwyabbIKXXnppqZ8lbLHFFpgyZQqOOOIIvP/++7jqqqtw0EEHoU+fPvjTn/602M8+9NBDGDBgAL7+9a+H16qqqhbpJqurq6vIU1QoFLDDDjtU9C9JkpC7yjmHOXPmoFwuY7vttluu/v3rX/9C3759cdhhh4XX8vk8TjnlFCxYsAATJkxY5nsKI0aMwPDhw8Pv6623Hg488EA8/PDD7ULJFmZp5np1cemll+Kyyy7D//zP/+Db3/42xo0bh1/+8pd49tlncc899yzTvZxzuO+++3DAAQdgu+22a/f+wiGwxx9/fMVru+66K9I0xQcffBBeq66uDj/Pnz8fn3/+OXbddVc0NTXhrbfeqrjf0qw54dhjj63ImybzI9dOmTIF77zzDr7zne9g9uzZ+Pzzz/H555+jsbERe+65J5566ik455ZqXBRFURRldaGiVIannnoKBxxwAPr37w9jDO67775lvgcR4de//jU23nhjFItFDBgwAL/85S9XfGMVRVGUtRYRm0ScWhSLEq+GDBmyxGd88MEHsNa2u3ZZKqStt9567V7r3r07vvjii/C7cw6/+93vsNFGG6FYLKJnz57o1asXXnnlFcybN2+pn5Vl4403xm233YbPP/8cr7zyCi655BLkcjkcf/zxeOyxxxb5uQ8++AAbbLBBO2FhUX1ed9112127cP8A4JZbbsFWW22FqqoqrLPOOujVqxf++c9/Llf/PvjgA2y00UZByBM222yz8P7ystFGG7V7beONN0ZTU1O7PEgLszRzvSZx+umnw1q72PXQEZ999hkaGhqw5ZZbLtX1C49L9+7dAaBiXF5//XV84xvfQNeuXVFfX49evXoF4WnhNbK0a25pnv3OO+8AAI4++mj06tWr4s+NN96I1tbW5d6DiqIoirKq0Op7GRobGzFs2DAcd9xxy50T4dRTT8UjjzyCX//61xg6dCjmzJmDOXPmrOCWKoqiKGszXbt2Rb9+/fDKK68s9rpXXnkFAwYMQH19fcXrWWfGymRRVdqIKPx8ySWX4Nxzz8Vxxx2Hiy++GD169IC1FqeddtqXdmkkSYKhQ4di6NChGDFiBEaNGoU77rgDo0eP/lL3zd6/I7L9u/3223HMMcfgoIMOwllnnYXevXsjSRJceumlePfdd1dIO9YElmYs1iSqq6uxzjrrrPT/xlrSuMydOxcjR45EfX09LrroImywwQaoqqrCSy+9hJ/85Cft9sCyjPOSrpV7X3HFFdh66607vLaurq7D1xVFURRlTUFFqQxjx47F2LFjF/l+a2srfvazn+HOO+/E3LlzseWWW+Lyyy8PlX/efPNNXHfddXjttdewySabAFi6f81WFEVROh/7778//vSnP+GZZ54JFfSyPP3003j//fdxwgknLNf9Bw0aBOccpk+fXuGg6ah615fhnnvuwahRo3DTTTdVvD537lz07NlzhT1HQq1mzJixyGsGDRqEN954A0RU4Ub5Mn2+5557sP766+Nvf/tbxT2l6tyyMmjQILzyyitwzlW4pSTMq6Oqg0uLOGeyvP3226ipqVlikvS1DQmTW9Z+9erVC/X19UuV/H1pGD9+PGbPno2//e1v2G233cLr06dPXyH3XxwbbLABAKC+vn6FCbWKoiiKsqrR8L1l4KSTTsLEiRNx11134ZVXXsG3vvUt7LPPPuE/Au+//36sv/76eOCBBzBkyBAMHjwY3/ve99QppSiKorTjrLPOQnV1NU444QTMnj274r05c+bgBz/4AWpqanDWWWct1/3HjBkDAPjDH/5Q8fo111yzfA1eBEmStHN5/OUvf8HHH3+8XPd7+umnUSqV2r3+r3/9CwDCP/p0xJgxY/Dxxx/jH//4R3itpaVlibmoFoe4VbJ9nDRpEiZOnLhc99t3330xc+ZM3H333eG1crmMa665BnV1dRg5cuRyt3XixIkVea4++ugj/P3vf8fee++9SNfNmk5LS0uHYa4XX3wxiAj77LPPMt3PWouDDjoI999/P1588cV27y+rM6yj9dHW1tZu360Mhg8fjg022AC//vWvO6xEuKSQTUVRFEVZE1Cn1FLy4Ycf4uabb8aHH36I/v37AwB+9KMf4aGHHsLNN9+MSy65BO+99x4++OAD/OUvf8Gtt96KNE1x+umn45vf/OZylbZWFEVRvrpstNFGuOWWW3D44Ydj6NCh+O53v4shQ4bg/fffx0033YTPP/8cd955Z3BDLCvDhw/HIYccgiuvvBKzZ8/GTjvthAkTJuDtt98G0D6h8/Ky//7746KLLsKxxx6LnXfeGa+++iruuOMOrL/++st1v8svvxyTJ0/GwQcfjK222goA8NJLL+HWW29Fjx49cNpppy3ysyeccAJ+//vf47DDDsOpp56Kfv364Y477kBVVRWA5evz/vvvj7/97W/4xje+gf322w/Tp0/H9ddfj80337xDIWBJHH/88bjhhhtwzDHHYPLkyRg8eDDuuecePPvss7jyyiuXmPx+cWy55ZYYM2YMTjnlFBSLxSCMXHjhhct9z5XJ73//e8ydOxeffPIJAP+Pe//9738B+IT8Xbt2xcyZM7HNNtvgsMMOw6abbgoAePjhh/Gvf/0L++yzDw488MBlfu4ll1yCRx55BCNHjsTxxx+PzTbbDDNmzMBf/vIXPPPMM+jWrdtS32vnnXdG9+7dcfTRR+OUU06BMQa33XbbKgl7tNbixhtvxNixY7HFFlvg2GOPxYABA/Dxxx/jySefRH19Pe6///6V3g5FURRF+TKoKLWUvPrqq0jTFBtvvHHF662trVhnnXUA+Nj+1tZW3HrrreG6m266CcOHD8fUqVMX+6+7iqIoSufjW9/6FjbddFNceumlQYhaZ511MGrUKPz0pz9d6mTMi+LWW29F3759ceedd+Lee+/F6NGjcffdd2OTTTYJQs2X5ac//SkaGxvx5z//GXfffTe23XZb/POf/8TZZ5+93Pf785//jAkTJuCOO+5AU1MT+vXrh29/+9s499xzFxsWX1dXhyeeeAInn3wyrrrqKtTV1eGoo47CzjvvjEMOOWS5+nzMMcdg5syZuOGGG/Dwww9j8803x+23346//OUvGD9+/DLfr7q6GuPHj8fZZ5+NW265BQ0NDdhkk01w880345hjjlnm+2UZOXIkRowYgQsvvBAffvghNt98c4wbNy6Ie2sav/71rysSu//tb3/D3/72NwDAEUccga5du6Jbt27Yf//98eijj+KWW25BmqbYcMMNcckll+BHP/pRu4TxS8OAAQMwadIknHvuubjjjjvQ0NCAAQMGYOzYsaipqVmme62zzjp44IEHcOaZZ+LnP/85unfvjiOOOAJ77rlncCuuTHbffXdMnDgRF198MX7/+99jwYIF6Nu3L3bcccflDv1VFEVRlFWJoTU1g+VqxhiDe++9FwcddBAA4O6778bhhx+O119/vZ0Fvq6uDn379sX555+PSy65pCLsoLm5GTU1NXjkkUew1157rcouKIqiKEo7pkyZgm222Qa33347Dj/88NXdnFXClVdeidNPPx3//e9/MWDAgNXdnJWCMQYnnngifv/736+0Zzz++OMYPXo0nn766Q7zoCmKoiiKoiwr6pRaSrbZZhukaYpZs2Zh11137fCar33tayiXy3j33XdDuIWESXyZxKWKoiiKsjw0Nze3q9R35ZVXwlpbkZT5q8TCfW5pacENN9yAjTba6CsrSK0qJMn8ikxgryiKoihK50ZFqQwLFiyoqNAzffp0TJkyBT169MDGG2+Mww8/HEcddRR+85vfYJtttsFnn32Gxx9/HFtttRX2228/jB49Gttuuy2OO+44XHnllXDO4cQTT8Ree+3VLuxPURRFUVY2v/rVrzB58mSMGjUKuVwODz74IB588EEcf/zxGDhw4Opu3krh4IMPxnrrrYett94a8+bNw+2334633noLd9xxx+pu2lpLY2Mj7rjjDlx11VVYd911F/vfNAsWLFhirq1evXqttYnXFUVRFEVZsagoleHFF1/EqFGjwu9nnHEGAODoo4/GuHHjcPPNN+MXv/gFzjzzTHz88cfo2bMndtppJ+y///4AfMLJ+++/HyeffDJ222031NbWYuzYsfjNb36zWvqjKIqidG523nlnPProo7j44ouxYMECrLfeerjgggvws5/9bHU3baUxZswY3HjjjbjjjjuQpik233xz3HXXXTj00ENXd9PWWj777DOcfPLJGDp0KG6++ebF5nH69a9/vcTE6tOnT8fgwYNXcCsVRVEURVkb0ZxSiqIoiqIoygrhvffew3vvvbfYa3bZZZcVlmhfURRFUZS1GxWlFEVRFEVRFEVRFEVRlFXOstfRVRRFURRFURRFURRFUZQvieaUAuCcwyeffIIuXbrAGLO6m6MoiqIoiqIoiqIoirLWQkSYP38++vfvv9h8lCpKAfjkk0++slWIFEVR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pET7dABfOu+880KfDxw4UMOHD1eXLl305z//Wc2bN4/imTVe3I6UatOmjRISEmqsQF9SUqKcnJwonRXgTVXPTH3PU05OTo1NBI4dO6Y9e/bY3lPbMcLLAOLB5MmTtWjRIr322mvq1KlT6PWcnBwdOXJEe/futb2/+rN2oueorvekp6d77n9kgMZKSkpSjx49NGTIEM2ePVt5eXmaO3cuzxfgkHXr1mnXrl0aPHiwEhMTlZiYqJUrV+qhhx5SYmKisrOzedYAh2VmZqpXr1769NNPPffvWdyGUklJSRoyZIiWLVsWeq2yslLLli1Tfn5+FM8M8J5u3bopJyfH9jyVlpZqzZo1oecpPz9fe/fu1bp160LvWb58uSorKzV8+PDQe1atWqWjR4+G3rN06VL17t1bWVlZhq4GiB7LsjR58mS98MILWr58ubp162b7/pAhQ9SsWTPbs7ZlyxZt27bN9qxt2rTJFgIvXbpU6enp6tevX+g94ceoeg///iEeVVZWqry8nOcLcMioUaO0adMmbdy4MfQxdOhQXXrppaHPedYAZ+3fv1+fffaZ2rdv771/zxxdNt1jFi5caCUnJ1vFxcXWhx9+aP3iF7+wMjMzbSvQAziurKzM2rBhg7VhwwZLknX//fdbGzZssL744gvLsixrzpw5VmZmpvXSSy9Z77//vjV27FirW7du1qFDh0LHOPfcc61BgwZZa9assd544w2rZ8+e1oQJE0Lf37t3r5WdnW1ddtll1gcffGAtXLjQSk1NtebPn2/8eoFouO6666yMjAxrxYoV1o4dO0IfBw8eDL3n2muvtTp37mwtX77cWrt2rZWfn2/l5+eHvn/s2DGrf//+1ujRo62NGzdaixcvttq2bWtNmzYt9J7PP//cSk1NtW655Rbro48+subNm2clJCRYixcvNnq9gGm/+c1vrJUrV1pbt2613n//fes3v/mNFQgErH/84x+WZfF8AW4J333PsnjWgEjdfPPN1ooVK6ytW7dab775plVQUGC1adPG2rVrl2VZ3nrG4jqUsizL+q//+i+rc+fOVlJSkjVs2DDr7bffjvYpATHptddesyTV+Jg4caJlWZZVWVlp3XbbbVZ2draVnJxsjRo1ytqyZYvtGLt377YmTJhgtWzZ0kpPT7eKioqssrIy23vee+896/TTT7eSk5Otjh07WnPmzDF1iUDU1faMSbL++Mc/ht5z6NAh6/rrr7eysrKs1NRU68c//rG1Y8cO23H+9a9/Weedd57VvHlzq02bNtbNN99sHT161Pae1157zTr55JOtpKQkq3v37rYyAL+68sorrS5dulhJSUlW27ZtrVGjRoUCKcvi+QLcUj2U4lkDIjN+/Hirffv2VlJSktWxY0dr/Pjx1qeffhr6vpeesYBlWZazY68AAAAAAACA+sXtmlIAAAAAAACIHkIpAAAAAAAAGEcoBQAAAAAAAOMIpQAAAAAAAGAcoRQAAAAAAACMI5QCAAAAAACAcYRSAAAAAAAAMI5QCgAAAAAAAMYRSgEAADTCFVdcoYsuuijapwEAAOB5hFIAAADfCQQC9X7cfvvtmjt3roqLi42f24oVK2o9p+nTpxs/FwAAACckRvsEAAAAYsWOHTtCnz/77LOaMWOGtmzZEnqtZcuWatmyZTROLWTLli1KT08PfV3b+VRUVCgQCCgY5O+PAAAgdvF/KgAAAN/JyckJfWRkZCgQCNhea9myZY3pe2eddZZ+9atfacqUKcrKylJ2drb+8Ic/6MCBAyoqKlJaWpp69OihV155xVbWBx98oPPOO08tW7ZUdna2LrvsMn3zzTcnPMd27drVOKfi4mJlZmbqf//3f9WvXz8lJydr27Ztevfdd3XOOeeoTZs2ysjI0MiRI7V+/Xrb8QKBgObPn68LLrhAqamp6tu3r1avXq1PP/1UZ511llq0aKERI0bos88+s/3cSy+9pMGDByslJUXdu3fXrFmzdOzYsaZXPgAAiDuEUgAAABH605/+pDZt2uidd97Rr371K1133XX6yU9+ohEjRmj9+vUaPXq0LrvsMh08eFCStHfvXv3whz/UoEGDtHbtWi1evFglJSX66U9/2uRzOHjwoO655x499thj2rx5s9q1a6eysjJNnDhRb7zxht5++2317NlT559/vsrKymw/e+edd+ryyy/Xxo0b1adPH11yySX65S9/qWnTpmnt2rWyLEuTJ08Ovf/111/X5ZdfrhtvvFEffvih5s+fr+LiYt19991NPn8AABB/ApZlWdE+CQAAgFhTXFysKVOmaO/evbbXr7jiCu3du1cvvviipOMjpSoqKvT6669LOj51LiMjQ+PGjdOTTz4pSdq5c6fat2+v1atX69RTT9Vdd92l119/XUuWLAkd99///rdyc3O1ZcsW9erVq8b5rFixQmeffbZatGhhe/2LL77Qyy+/rKKiIm3cuFF5eXl1XlNlZaUyMzP19NNP64ILLpCk0LpUd955pyTp7bffVn5+vh5//HFdeeWVkqSFCxeqqKhIhw4dkiQVFBRo1KhRmjZtWujY//M//6Nbb71VX3311QnrFgAAQGJNKQAAgIgNHDgw9HlCQoJat26tAQMGhF7Lzs6WJO3atUuS9N577+m1116rdT2ozz77rNZQqsrrr7+utLS00NdZWVmSpKSkJNt5SFJJSYmmT5+uFStWaNeuXaqoqNDBgwe1bdu2Os+/6lyrn//hw4dVWlqq9PR0vffee3rzzTdtI6MqKip0+PBhHTx4UKmpqXWePwAAQBVCKQAAgAg1a9bM9nUgELC9FggEJB0fqSRJ+/fv14UXXqh77rmnxrHat29fb1ndunVTZmZmjdebN28eKqfKxIkTtXv3bs2dO1ddunRRcnKy8vPzdeTIkTrPv+oYJzr/WbNmady4cTXOIyUlpd7zBwAAqEIoBQAAYNjgwYP117/+VV27dlVionv/O/bmm2/qkUce0fnnny9J+vLLLxu0mPqJDB48WFu2bFGPHj0iPhYAAIhfLHQOAABg2KRJk7Rnzx5NmDBB7777rj777DMtWbJERUVFqqiocKycnj176r//+7/10Ucfac2aNbr00kvVvHnziI87Y8YMPfnkk5o1a5Y2b96sjz76SAsXLtT06dMdOGsAABAvCKUAAAAM69Chg958801VVFRo9OjRGjBggKZMmaLMzEwFg87979njjz+ub7/9VoMHD9Zll12mG264Qe3atYv4uIWFhVq0aJH+8Y9/6JRTTtGpp56qBx54QF26dHHgrAEAQLxg9z0AAAAAAAAYx0gpAAAAAAAAGEcoBQAAAAAAAOMIpQAAAAAAAGAcoRQAAAAAAACMI5QCAAAAAACAcYRSAAAAAAAAMI5QCgAAAAAAAMYRSgEAAAAAAMA4QikAAAAAAAAYRygFAAAAAAAA4wilAAAAAAAAYByhFAAAAAAAAIz7/xydcf1B0hY9AAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Plot the spectrogram\n", + "import matplotlib.pyplot as plt\n", + "plt.figure(figsize=(12, 6))\n", + "plt.subplot(2, 1, 1)\n", + "plt.imshow(log_abs_stft.numpy(), aspect='auto', origin='lower', cmap='viridis')\n", + "plt.xlabel('Time Frame')\n", + "plt.ylabel('Frequency Bin')\n", + "plt.title('STFT Spectrogram of pinjf_15l channel')\n", + "plt.subplot(2, 1, 2)\n", + "plt.plot(decimated_signal)\n", + "plt.xlim(0, len(decimated_signal))\n", + "plt.xlabel('Time Frame')\n", + "plt.ylabel('Magnitude')\n", + "plt.title('Original Signal of pinjf_15l channel')\n", + "plt.tight_layout()\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7912cd5d", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/pyproject.toml b/pyproject.toml index 34eea6b..1f712c4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,5 @@ [project] -name = "fusion_ai_hub" +name = "fusionaihub" version = "0.0.1" authors = [ {name="Peter Steiner", email="peter.steiner@princeton.edu"}, @@ -17,10 +17,38 @@ classifiers = [ ] license = {file = "LICENSE"} dependencies = [ - "h5py", "numpy", "pandas", "matplotlib", "scipy", "tqdm", "opencv-python", - "paramiko" + "h5py", + "numpy", + "pandas", + "matplotlib", + "scipy", + "tqdm", + "opencv-python", + "paramiko", + "ipykernel>=6.29.5", + "ipywidgets>=8.1.7", + "scikit-learn>=1.6.1", + "torch>=2.7.1", + "tables>=3.9.2", + "pyyaml>=6.0.2", ] +[tool.uv.sources] +torch = [ + { index = "pytorch-cpu" }, +] +torchvision = [ + { index = "pytorch-cpu" }, +] + +[[tool.uv.index]] +name = "pytorch-cpu" +url = "https://download.pytorch.org/whl/cpu" +explicit = true + +[tool.uv] +package = true + [project.urls] Homepage = "https://github.com" Documentation = "https://readthedocs.org" diff --git a/src/fusion_ai_hub/__init__.py b/src/fusionaihub/__init__.py similarity index 100% rename from src/fusion_ai_hub/__init__.py rename to src/fusionaihub/__init__.py diff --git a/src/fusion_ai_hub/base/__init__.py b/src/fusionaihub/base/__init__.py similarity index 100% rename from src/fusion_ai_hub/base/__init__.py rename to src/fusionaihub/base/__init__.py diff --git a/src/fusion_ai_hub/base/load.py b/src/fusionaihub/base/load.py similarity index 100% rename from src/fusion_ai_hub/base/load.py rename to src/fusionaihub/base/load.py diff --git a/src/fusion_ai_hub/base/merge.py b/src/fusionaihub/base/merge.py similarity index 100% rename from src/fusion_ai_hub/base/merge.py rename to src/fusionaihub/base/merge.py diff --git a/src/fusion_ai_hub/base/save.py b/src/fusionaihub/base/save.py similarity index 100% rename from src/fusion_ai_hub/base/save.py rename to src/fusionaihub/base/save.py diff --git a/src/fusion_ai_hub/core/__init__.py b/src/fusionaihub/core/__init__.py similarity index 100% rename from src/fusion_ai_hub/core/__init__.py rename to src/fusionaihub/core/__init__.py diff --git a/src/fusion_ai_hub/core/fusion_signal/__init__.py b/src/fusionaihub/core/fusion_signal/__init__.py similarity index 100% rename from src/fusion_ai_hub/core/fusion_signal/__init__.py rename to src/fusionaihub/core/fusion_signal/__init__.py diff --git a/src/fusion_ai_hub/core/fusion_signal/interpolation.py b/src/fusionaihub/core/fusion_signal/interpolation.py similarity index 100% rename from src/fusion_ai_hub/core/fusion_signal/interpolation.py rename to src/fusionaihub/core/fusion_signal/interpolation.py diff --git a/src/fusion_ai_hub/core/fusion_signal/resampling.py b/src/fusionaihub/core/fusion_signal/resampling.py similarity index 100% rename from src/fusion_ai_hub/core/fusion_signal/resampling.py rename to src/fusionaihub/core/fusion_signal/resampling.py diff --git a/src/fusion_ai_hub/core/magnitude_scaling/compute_norms.py b/src/fusionaihub/core/magnitude_scaling/compute_norms.py similarity index 100% rename from src/fusion_ai_hub/core/magnitude_scaling/compute_norms.py rename to src/fusionaihub/core/magnitude_scaling/compute_norms.py diff --git a/src/fusion_ai_hub/core/magnitude_scaling/norm.py b/src/fusionaihub/core/magnitude_scaling/norm.py similarity index 100% rename from src/fusion_ai_hub/core/magnitude_scaling/norm.py rename to src/fusionaihub/core/magnitude_scaling/norm.py diff --git a/src/fusion_ai_hub/core/magnitude_scaling/rescale.py b/src/fusionaihub/core/magnitude_scaling/rescale.py similarity index 100% rename from src/fusion_ai_hub/core/magnitude_scaling/rescale.py rename to src/fusionaihub/core/magnitude_scaling/rescale.py diff --git a/src/fusion_ai_hub/core/scaling.py b/src/fusionaihub/core/scaling.py similarity index 100% rename from src/fusion_ai_hub/core/scaling.py rename to src/fusionaihub/core/scaling.py diff --git a/src/fusion_ai_hub/core/spectral_representation/__init__.py b/src/fusionaihub/core/spectral_representation/__init__.py similarity index 100% rename from src/fusion_ai_hub/core/spectral_representation/__init__.py rename to src/fusionaihub/core/spectral_representation/__init__.py diff --git a/src/fusion_ai_hub/core/spectral_representation/sft.py b/src/fusionaihub/core/spectral_representation/sft.py similarity index 100% rename from src/fusion_ai_hub/core/spectral_representation/sft.py rename to src/fusionaihub/core/spectral_representation/sft.py diff --git a/src/fusion_ai_hub/core/time_domain_filtering/__init__.py b/src/fusionaihub/core/time_domain_filtering/__init__.py similarity index 100% rename from src/fusion_ai_hub/core/time_domain_filtering/__init__.py rename to src/fusionaihub/core/time_domain_filtering/__init__.py diff --git a/src/fusion_ai_hub/core/time_domain_filtering/filtering.py b/src/fusionaihub/core/time_domain_filtering/filtering.py similarity index 100% rename from src/fusion_ai_hub/core/time_domain_filtering/filtering.py rename to src/fusionaihub/core/time_domain_filtering/filtering.py diff --git a/src/fusion_ai_hub/core/time_domain_filtering/preemphasis.py b/src/fusionaihub/core/time_domain_filtering/preemphasis.py similarity index 100% rename from src/fusion_ai_hub/core/time_domain_filtering/preemphasis.py rename to src/fusionaihub/core/time_domain_filtering/preemphasis.py diff --git a/src/fusion_ai_hub/core/time_domain_processing/cut_time.py b/src/fusionaihub/core/time_domain_processing/cut_time.py similarity index 100% rename from src/fusion_ai_hub/core/time_domain_processing/cut_time.py rename to src/fusionaihub/core/time_domain_processing/cut_time.py diff --git a/src/fusion_ai_hub/core/time_domain_processing/get_windowed_data.py b/src/fusionaihub/core/time_domain_processing/get_windowed_data.py similarity index 100% rename from src/fusion_ai_hub/core/time_domain_processing/get_windowed_data.py rename to src/fusionaihub/core/time_domain_processing/get_windowed_data.py diff --git a/src/fusion_ai_hub/datasets/__init__.py b/src/fusionaihub/datasets/__init__.py similarity index 100% rename from src/fusion_ai_hub/datasets/__init__.py rename to src/fusionaihub/datasets/__init__.py diff --git a/src/fusion_ai_hub/datasets/fetch/fetch.py b/src/fusionaihub/datasets/fetch/fetch.py similarity index 100% rename from src/fusion_ai_hub/datasets/fetch/fetch.py rename to src/fusionaihub/datasets/fetch/fetch.py diff --git a/src/fusionaihub/datasets/prepare/README.md b/src/fusionaihub/datasets/prepare/README.md new file mode 100644 index 0000000..7394c25 --- /dev/null +++ b/src/fusionaihub/datasets/prepare/README.md @@ -0,0 +1,174 @@ +# Fusion Dataset Preparation Pipeline + +This module provides a modular, configurable pipeline for preparing fusion plasma datasets from HDF5 data files. + +## Structure + +The pipeline has been refactored into a modular structure: + +``` +src/fusionaihub/datasets/prepare/ +├── config/ +│ └── default.yaml # Default configuration file +├── core/ # Core processing modules +│ ├── __init__.py # Package initialization +│ ├── signal_processing.py # Signal resampling and transformation +│ ├── data_extraction.py # Data extraction and alignment +│ ├── sample_processing.py # Sample splitting and transformation +│ ├── dataset_utils.py # Dataset utilities and indexing +│ └── shot_processing.py # Shot-level processing orchestration +├── prepare_dataset.py # Main executable script +├── prepare2.py # Original monolithic script (legacy) +└── README.md # This file +``` + +## Core Modules + +### `signal_processing.py` +- `resample_nearest()`: Resample signals to new length +- `transform_individual_sample()`: Apply STFT transformation + +### `data_extraction.py` +- `extract()`: Extract signal data from HDF5 files +- `running_time()`: Determine plasma running time from current threshold +- `align()`: Align signals to common timebase and sampling frequency + +### `sample_processing.py` +- `split()`: Split signals into overlapping time windows +- `transform_samples()`: Apply transformations and resample to match dimensions +- `save_samples()`: Save processed samples to disk + +### `dataset_utils.py` +- `create_missing_signal_dataframes()`: Create placeholder data for missing signals +- `index_dataset()`: Create dataset index files + +### `shot_processing.py` +- `process_shot()`: Main orchestration function for processing individual shots + +## Configuration + +The pipeline is configured using YAML files. The default configuration is in `config/default.yaml`: + +```yaml +# Signal configuration - list of signals to process +signal: + - ["magnetics_high_resolution", "mhr", true] + - ["ece_cali", "ece", true] + - ["co2_density", "co2", true] + - ["gas", "gas", false] + - ["ech", "ech", false] + - ["p_inj", "pin", false] + - ["t_inj", "tin", false] + +# Processing parameters +randomize_shots: true +random_seed: 42 +num_shots: 50 +fs_khz: 500 +ip_threshold: 0.1 +window_ms: 250 +hop_ms: 50 + +# Directory paths +raw_data_dir: "/scratch/gpfs/EKOLEMEN/d3d_fusion_data" +output_dir: "/scratch/gpfs/nc1514/FusionAIHub/data/foundation_v2" + +# Additional parameters... +``` + +### Signal Configuration Format +Each signal is configured as a list: `[signal_name, abbreviation, should_transform]` +- `signal_name`: Name in the HDF5 file +- `abbreviation`: Short name for column prefixes +- `should_transform`: Whether to apply STFT transformation (boolean) + +## Usage + +### Command Line +```bash +# Use default configuration +python -m src.fusionaihub.datasets.prepare.prepare_dataset + +# Use custom configuration file +python -m src.fusionaihub.datasets.prepare.prepare_dataset --config /path/to/config.yaml +``` + +### Programmatic Usage +```python +from src.fusionaihub.datasets.prepare.prepare_dataset import load_config, prepare_dataset + +# Load configuration +cfg = load_config("path/to/config.yaml") + +# Run dataset preparation +prepare_dataset(cfg) +``` + +### Customizing Configuration +Create a custom YAML file based on `config/default.yaml`: + +```python +import yaml +from src.fusionaihub.datasets.prepare.prepare_dataset import prepare_dataset + +# Load and modify configuration +with open("config/default.yaml", "r") as f: + cfg = yaml.safe_load(f) + +# Customize settings +cfg["num_shots"] = 100 +cfg["raw_data_dir"] = "/path/to/your/data" +cfg["output_dir"] = "/path/to/output" + +# Run with custom configuration +prepare_dataset(cfg) +``` + +## Output Structure + +The pipeline produces the following output structure: + +``` +output_dir/ +├── train/ +│ ├── 170000_0.pkl # Processed samples +│ ├── 170001_0.pkl +│ ├── ... +│ └── index.pkl # Dataset index +└── valid/ + ├── 170010_0.pkl + ├── 170011_0.pkl + ├── ... + └── index.pkl +``` + +Each `.pkl` file contains a dictionary with signal arrays, where transformed signals have STFT representation and non-transformed signals are resampled to match dimensions. + +## Key Features + +1. **Modular Design**: Each processing step is in a separate module for easier testing and modification +2. **YAML Configuration**: All parameters are configurable via YAML files +3. **Parallel Processing**: Uses `ParallelMapper` for efficient multi-shot processing +4. **Missing Signal Handling**: Automatically creates placeholder data for missing signals +5. **Flexible Transformations**: Configurable per-signal transformation (STFT or raw) +6. **Train/Validation Split**: Automatic dataset splitting with indexing + +## Migration from Legacy Code + +If you were using the original `prepare2.py`, the new modular structure provides the same functionality with improved organization: + +- Configuration moved from Python dictionary to YAML file +- Functions split into logical modules +- Same processing pipeline and output format +- Command-line interface added for easier use + +## Dependencies + +- numpy +- pandas +- scipy +- scikit-learn +- torch +- joblib +- PyYAML +- pathlib (built-in) \ No newline at end of file diff --git a/src/fusion_ai_hub/display/__init__.py b/src/fusionaihub/datasets/prepare/__init__.py similarity index 100% rename from src/fusion_ai_hub/display/__init__.py rename to src/fusionaihub/datasets/prepare/__init__.py diff --git a/src/fusionaihub/datasets/prepare/config/default.yaml b/src/fusionaihub/datasets/prepare/config/default.yaml new file mode 100644 index 0000000..bd25673 --- /dev/null +++ b/src/fusionaihub/datasets/prepare/config/default.yaml @@ -0,0 +1,39 @@ +# Dataset preparation configuration +# Configuration for fusion data processing pipeline + +# Signal configuration - list of signals to process +# Each signal has: [signal_name, abbreviation, should_transform] +signal: + - ["magnetics_high_resolution", "mhr", true] + - ["ece_cali", "ece", true] + - ["co2_density", "co2", true] + - ["gas", "gas", false] + - ["ech", "ech", false] + - ["p_inj", "pin", false] + - ["t_inj", "tin", false] + +# Data processing parameters +randomize_shots: true +random_seed: 42 +num_shots: 50 +fs_khz: 500 # Sampling frequency in kHz +ip_threshold: 0.1 # Plasma current threshold +window_ms: 250 # Window size in milliseconds +hop_ms: 50 # Hop size in milliseconds +remove_empty: true + +# Train/test split configuration +train_test_split: 0.2 + +# Directory paths +raw_data_dir: "/scratch/gpfs/EKOLEMEN/d3d_fusion_data" +output_dir: "/scratch/gpfs/EKOLEMEN/nc1514/foundation_v2" + +# Processing parameters +stft: + n_fft: 1024 + hop_length: 256 + window_type: "hann" + +# Output settings +compression: true # Whether to compress saved files \ No newline at end of file diff --git a/src/fusionaihub/datasets/prepare/core/__init__.py b/src/fusionaihub/datasets/prepare/core/__init__.py new file mode 100644 index 0000000..d608038 --- /dev/null +++ b/src/fusionaihub/datasets/prepare/core/__init__.py @@ -0,0 +1,30 @@ +""" +Core modules for fusion dataset preparation. + +This package contains modular components for processing fusion data: +- signal_processing: Signal resampling and transformation functions +- data_extraction: Data extraction and alignment functions +- sample_processing: Sample splitting, transformation, and saving +- shot_processing: Shot-level processing logic +- dataset_utils: Dataset utilities and indexing +""" + +from .signal_processing import resample_nearest, transform_individual_sample +from .data_extraction import extract, running_time, align +from .sample_processing import split, transform_samples, save_samples +from .dataset_utils import create_missing_signal_dataframes, index_dataset +from .shot_processing import process_shot_stft + +__all__ = [ + 'resample_nearest', + 'transform_individual_sample', + 'extract', + 'running_time', + 'align', + 'split', + 'transform_samples', + 'save_samples', + 'create_missing_signal_dataframes', + 'index_dataset', + 'process_shot_stft' +] \ No newline at end of file diff --git a/src/fusionaihub/datasets/prepare/core/data_extraction.py b/src/fusionaihub/datasets/prepare/core/data_extraction.py new file mode 100644 index 0000000..6ee2118 --- /dev/null +++ b/src/fusionaihub/datasets/prepare/core/data_extraction.py @@ -0,0 +1,107 @@ +""" +Data extraction utilities for fusion dataset preparation. + +This module contains functions for extracting data from HDF5 files, +determining plasma running time, and aligning signals to a common timebase. +""" + +import numpy as np +import pandas as pd +from pathlib import Path +from scipy.signal import resample + + +def extract(shot: int, directory: Path, signal: str) -> pd.DataFrame: + """ + Extract signal data from HDF5 file for a given shot. + + Args: + shot: Shot number + directory: Directory containing HDF5 files + signal: Signal name to extract + + Returns: + DataFrame containing the signal data + """ + path = (directory / str(shot)).with_suffix(".h5") + df = pd.read_hdf(path, key=signal) + return pd.DataFrame(df) + + +def running_time(directory: Path, shot: int, ip_threshold: float) -> tuple[float, float]: + """ + Determine the plasma running time for a shot based on plasma current threshold. + + Args: + directory: Directory containing HDF5 files + shot: Shot number + ip_threshold: Plasma current threshold + + Returns: + Tuple of (start_time, end_time) in milliseconds + """ + path = (directory / str(shot)).with_suffix(".h5") + with pd.HDFStore(path, 'r') as store: + df = store['ip']['ipsip'] + df = df.loc[df > ip_threshold] + start_time = df.index[0] + end_time = df.index[-1] + return start_time, end_time + + +def align(df: pd.DataFrame, start_time: float, end_time: float, fs: float) -> pd.DataFrame: + """ + Align signal data to a common timebase and sampling frequency. + + Crops the signal to the specified time window, resamples to the target + sampling frequency, and adds padding and state information. + + Args: + df: Input DataFrame with signal data + start_time: Start time for alignment (ms) + end_time: End time for alignment (ms) + fs: Target sampling frequency (kHz) + + Returns: + Aligned DataFrame with data and state columns + """ + # get sampling frequency + fs_raw = len(df) / (df.index[-1] - df.index[0]) + + # crop time + df = df.loc[(df.index >= start_time) & (df.index <= end_time)] + + # resample + num = len(df) + num = int(num * fs / fs_raw) + + df = pd.DataFrame( + {col: resample(df[col].values, num) for col in df.columns}, + index=np.linspace(df.index[0], df.index[-1], num) + ) + + # mark on-off states + start_nan = (df.index[0] - start_time) * fs + end_nan = (end_time - df.index[-1]) * fs + start_pad = pd.DataFrame( + 0, index=pd.RangeIndex(start=int(start_nan)), columns=df.columns) + end_pad = pd.DataFrame( + 0, index=pd.RangeIndex(start=int(len(df) + start_nan), stop=int(len(df) + start_nan + end_nan)), columns=df.columns) + + df_state = pd.DataFrame(True, index=df.index, columns=df.columns) + start_pad_state = pd.DataFrame(False, index=start_pad.index, columns=df.columns) + end_pad_state = pd.DataFrame(False, index=end_pad.index, columns=df.columns) + + df = pd.concat([start_pad, df, end_pad], ignore_index=True) + df_state = pd.concat([start_pad_state, df_state, end_pad_state], ignore_index=True) + df_state.columns = [f"{col}_state" for col in df.columns] + + # combine data with state + df = df.astype(np.float32) + df_state = df_state.astype(np.bool) + df = pd.concat([df, df_state], axis=1) + + # convert time to ms + df = df.rename_axis("time") + + return df \ No newline at end of file diff --git a/src/fusionaihub/datasets/prepare/core/dataset_utils.py b/src/fusionaihub/datasets/prepare/core/dataset_utils.py new file mode 100644 index 0000000..0d10803 --- /dev/null +++ b/src/fusionaihub/datasets/prepare/core/dataset_utils.py @@ -0,0 +1,84 @@ +""" +Dataset utilities for fusion dataset preparation. + +This module contains utility functions for handling missing signals, +creating placeholder dataframes, and indexing dataset files. +""" + +import pandas as pd +from pathlib import Path +from typing import Set, List, Dict + + +def create_missing_signal_dataframes( + cfg: Dict, + processed_signals: Set, + reference_df: pd.DataFrame +) -> List[pd.DataFrame]: + """ + Create fully off dataframes for missing signals using reference dataframe structure. + + When some signals are missing from a shot, this function creates placeholder + dataframes with the same structure but with all data set to 0 and all states + set to False. + + Args: + cfg: Configuration dictionary containing signal definitions + processed_signals: Set of signal abbreviations that were successfully processed + reference_df: Reference DataFrame to use for structure + + Returns: + List of DataFrames for missing signals + """ + missing_dfs = [] + + for signal in cfg["signal"]: + signal_name, signal_abbr, do_transform = signal + if signal_abbr not in processed_signals: + print(f"Creating fully off dataframe for missing signal {signal_name}") + + # Create off dataframe by copying structure and zeroing values + off_df = reference_df.copy() + + # Get columns that belong to the reference signal (to replace with new signal columns) + ref_signal_cols = [col for col in off_df.columns if not col.endswith('_state')] + + # Create new column names for the missing signal + new_cols = {} + new_state_cols = {} + + for i, col in enumerate(ref_signal_cols): + new_col_name = f"{signal_abbr}col{i}" + new_cols[col] = new_col_name + new_state_cols[f"{col}_state"] = f"{new_col_name}_state" + + # Rename columns to match the missing signal + off_df = off_df.rename(columns={**new_cols, **new_state_cols}) + + # Set all data columns to 0 and all state columns to False + for col in off_df.columns: + if col.endswith('_state'): + off_df[col] = False + else: + off_df[col] = 0.0 + + missing_dfs.append(off_df) + + return missing_dfs + + +def index_dataset(out_dir: Path) -> None: + """ + Create an index file listing all dataset files in the directory. + + Scans the output directory for .pkl files and creates an index.pkl + file containing the list of all dataset files. + + Args: + out_dir: Directory to index + """ + files = list(out_dir.glob("*.pkl")) + df_files = pd.DataFrame({'files': [str(file) for file in files]}) + df_files.to_pickle(out_dir / "index.pkl") + + print(f"Indexed {len(files)} files.") \ No newline at end of file diff --git a/src/fusionaihub/datasets/prepare/core/sample_processing.py b/src/fusionaihub/datasets/prepare/core/sample_processing.py new file mode 100644 index 0000000..7b7109a --- /dev/null +++ b/src/fusionaihub/datasets/prepare/core/sample_processing.py @@ -0,0 +1,160 @@ +""" +Sample processing utilities for fusion dataset preparation. + +This module contains functions for splitting signals into time windows, +applying transformations to samples, and saving processed data. +""" + +import numpy as np +import pandas as pd +import joblib +from pathlib import Path +from typing import List, Dict +from .signal_processing import resample_nearest, transform_individual_sample + + +def split(df: pd.DataFrame, window_ms: int, hop_ms: int, fs_khz: float) -> List[pd.DataFrame]: + """ + Split signal data into overlapping time windows. + + Args: + df: Input DataFrame with signal data + window_ms: Window size in milliseconds + hop_ms: Hop size in milliseconds + fs_khz: Sampling frequency in kHz + + Returns: + List of DataFrame samples + """ + # Create sample indicies + num_samples = int((window_ms) * fs_khz) + hop_samples = int((hop_ms) * fs_khz) + + # Separate samples + samples = [] + for start in range(0, len(df) - num_samples + 1, hop_samples): + end = start + num_samples + sample = df.iloc[start:end] + if len(sample) == num_samples: + samples.append(sample) + + return samples + + +def transform_samples( + samples: List[pd.DataFrame], + directory: Path, + signal_config: List[tuple], + shot: int, +) -> List[Dict]: + """ + Transform and process samples based on signal configuration. + + Applies transformations (like STFT) to specified signals and resamples + non-transformed signals to match the dimensions of transformed ones. + + Args: + samples: List of sample DataFrames + directory: Output directory + signal_config: List of (signal_name, abbreviation, should_transform) tuples + shot: Shot number for logging + + Returns: + List of dictionaries containing processed sample data + """ + directory.mkdir(parents=True, exist_ok=True) + print(f"Processing {len(samples)} samples for shot {shot}") + samples_dict = [] + + # Create mapping from signal abbreviation to whether it should be transformed + transform_map = {} + for signal_name, signal_abbr, should_transform in signal_config: + transform_map[signal_abbr] = should_transform + + for i, sample in enumerate(samples): + + # Remove columns ending with '_state' + sample_to_save = sample.loc[:, ~sample.columns.str.endswith('_state')] + + # Only save if not fully off (i.e., at least one True in any state col) + state_cols = [col for col in sample.columns if col.endswith('_state')] + if np.any(sample[state_cols].to_numpy()): + + # First pass: apply transformations and collect results + sample_dict = {} + transformed_sample = None + original_time_length = len(sample_to_save) + + for col in sample_to_save.columns: + # Convert each column to float32 numpy array + col_array = sample_to_save[col].values.astype(np.float32) + + # Determine if this column should be transformed based on signal abbreviation + should_transform = False + for signal_abbr in transform_map.keys(): + if col.startswith(signal_abbr): + should_transform = transform_map[signal_abbr] + break + + if should_transform: + transformed_array = transform_individual_sample(col_array) + sample_dict[col] = transformed_array + # Store an example transformed sample to get target dimensions + if transformed_sample is None: + transformed_sample = transformed_array + print(f"Reference transformed sample shape: {transformed_array.shape}") + else: + # Store original array for now, will resample later + sample_dict[col] = col_array + + # Second pass: resample non-transformed samples to match transformed dimensions + if transformed_sample is not None: + target_width = transformed_sample.shape[-1] # Last dimension is time + # Calculate target sample frequency based on transformed sample + target_fs = target_width / original_time_length + print(f"Target frequency ratio: {target_fs:.4f} (target width: {target_width}, original length: {original_time_length})") + + for col in sample_dict.keys(): + # Check if this column was transformed + should_transform = False + for signal_abbr in transform_map.keys(): + if col.startswith(signal_abbr): + should_transform = transform_map[signal_abbr] + break + + if not should_transform: + # Resample non-transformed data to match target width + original_array = sample_dict[col] + resampled_array = resample_nearest(original_array, target_width) + + # Crop end if needed to ensure exact match + if len(resampled_array) > target_width: + resampled_array = resampled_array[:target_width] + elif len(resampled_array) < target_width: + # Pad with zeros if too short (shouldn't happen with resample_nearest) + pad_width = target_width - len(resampled_array) + resampled_array = np.pad(resampled_array, (0, pad_width), mode='constant') + + sample_dict[col] = resampled_array.astype(np.float32) + print(f"Resampled {col} from {len(original_array)} to {len(resampled_array)}") + + samples_dict.append(sample_dict) + print(f"Sample {i} processed with {len(sample_dict)} signals") + + return samples_dict + + +def save_samples(samples: List[Dict], directory: Path, shot: int) -> None: + """ + Save processed samples to disk using joblib compression. + + Args: + samples: List of sample dictionaries to save + directory: Output directory + shot: Shot number for filename generation + """ + directory.mkdir(parents=True, exist_ok=True) + print(f"Saving {len(samples)} samples to {directory}") + for i, sample in enumerate(samples): + # Save using joblib + joblib.dump(sample, directory / f"{shot}_{i}.pkl", compress=True) \ No newline at end of file diff --git a/src/fusionaihub/datasets/prepare/core/shot_processing.py b/src/fusionaihub/datasets/prepare/core/shot_processing.py new file mode 100644 index 0000000..6cf17c8 --- /dev/null +++ b/src/fusionaihub/datasets/prepare/core/shot_processing.py @@ -0,0 +1,122 @@ +""" +Shot processing utilities for fusion dataset preparation. + +This module contains the main shot processing logic that orchestrates +data extraction, alignment, transformation, and saving for individual shots. +""" + +import numpy as np +import pandas as pd +from pathlib import Path +from typing import Dict + +from .data_extraction import extract, running_time, align +from .sample_processing import transform_samples, save_samples +from .dataset_utils import create_missing_signal_dataframes + + +def process_shot_stft(shot: int, cfg: Dict, out_dir: Path) -> None: + """ + Process a single shot through the complete data preparation pipeline accounting for STFT transformations. + + This function orchestrates the complete processing workflow for a shot: + 1. Determines plasma running time + 2. Extracts and aligns all configured signals to be transformed + 3. Handles missing signals by creating placeholder dataframes + 4. Combines all signals into a unified dataframe + 5. Transforms and saves the processed samples using STFT transformations. + 6. Downsamples shots not transformed to the same length as the transformed shots. + + Args: + shot: Shot number to process + cfg: Configuration dictionary + out_dir: Output directory for processed files + """ + try: + dfs = [] + start_time = None + end_time = None + + try: + start_time, end_time = running_time( + directory=Path(cfg["raw_data_dir"]), + shot=shot, + ip_threshold=cfg["ip_threshold"] + ) + reference_len = int((end_time - start_time) * cfg["fs_khz"]) + print(f"Running time for shot {shot}: {start_time} to {end_time}") + except Exception as e: + print(f"Error: Could not determine running time for shot {shot}: {e}") + return + + # Process each signal and track which ones succeeded + processed_signals = set() + + for signal in cfg["signal"]: + signal_name, signal_abbr, is_transformed = signal + df = None + + if is_transformed: + try: + # Try to extract and process the signal + df = extract(shot=shot, directory=Path(cfg["raw_data_dir"]), signal=signal_name) + df.columns = [f"{signal_abbr}{col}" if col != "time" else col for col in df.columns] + df = align(df, start_time, end_time, cfg["fs_khz"]) + processed_signals.add(signal_abbr) + dfs.append(df) + print(f"Successfully processed signal {signal_name} for shot {shot}") + except Exception as e: + print(f"Error processing signal {signal_name} for shot {shot}: {e}") + + if not dfs: + print(f"Error: No dataframes created for shot {shot}") + return + + df = pd.concat(dfs, axis=1, join='inner') + + # num_samples = len(df) + # new_index = np.linspace(start_time, end_time, num_samples) + # df.index = new_index + # df.index = pd.to_timedelta(df.index, unit='ms') + + samples = [df] # no splitting for this dataset + print(f"Shot {shot} has {len(samples)} samples after splitting.") + samples_dict_list = transform_samples(samples, out_dir, cfg["signal"], shot) + + # Get the first (and only) sample dictionary since we don't split + sample_dict = samples_dict_list[0] + + # Get a sample from sample_dict to determine STFT dimensions + first_key = next(iter(sample_dict.keys())) + stft_width = sample_dict[first_key].shape[-1] + print(f"Using {first_key} as reference for STFT dimensions: {stft_width}") + stft_fs = stft_width / (end_time - start_time) + + for signal in cfg["signal"]: + signal_name, signal_abbr, is_transformed = signal + if not is_transformed: + try: + df = extract(shot=shot, directory=Path(cfg["raw_data_dir"]), signal=signal_name) + df.columns = [f"{signal_abbr}{col}" if col != "time" else col for col in df.columns] + df = align(df, start_time, end_time, stft_fs) + # Ensure signal matches STFT width by truncating if necessary + if len(df) > stft_width: + df = df.iloc[:stft_width] + print(f"Truncated {signal_abbr} from {len(df)} to {stft_width} samples to match STFT width") + elif len(df) < stft_width: + print(f"Warning: {signal_abbr} has {len(df)} samples, less than STFT width {stft_width}") + pad_width = stft_width - len(df) + df = np.pad(df, (0, pad_width), mode='constant', constant_values=0) + print(f"Padded {signal_abbr} from {len(df)} to {stft_width} samples with zeros") + print(f"Successfully processed non-transformed signal {signal_name} for shot {shot}") + except Exception as e: + print(f"Error processing non-transformed signal {signal_name} for shot {shot}: {e}") + + save_samples([sample_dict], out_dir, shot) + print(f"Processed shot {shot} successfully with {len(cfg['signal'])} signals.") + + except Exception as e: + print(f"Error processing shot {shot}: {e}") + return + + return \ No newline at end of file diff --git a/src/fusionaihub/datasets/prepare/core/signal_processing.py b/src/fusionaihub/datasets/prepare/core/signal_processing.py new file mode 100644 index 0000000..eacb05a --- /dev/null +++ b/src/fusionaihub/datasets/prepare/core/signal_processing.py @@ -0,0 +1,56 @@ +""" +Signal processing utilities for fusion dataset preparation. + +This module contains functions for signal resampling and transformation, +including STFT transformations and nearest-neighbor resampling. +""" + +import numpy as np +import torch +from scipy.signal import resample + + +def resample_nearest(y: np.ndarray, new_len: int) -> np.ndarray: + """ + Resample a signal to a new length using scipy.signal.resample. + + Args: + y: Input signal array + new_len: Target length for resampled signal + + Returns: + Resampled signal as numpy array + """ + orig_len = len(y) + gcd = np.gcd(orig_len, new_len) + up = new_len // gcd + down = orig_len // gcd + # return resample_poly(y, up, down) + resampled = resample(y, new_len) + return np.asarray(resampled) + + +def transform_individual_sample(x: np.ndarray) -> np.ndarray: + """ + Apply STFT transformation to an individual sample. + + Transforms time-domain signal to frequency-domain representation using + Short-Time Fourier Transform with logarithmic magnitude scaling. + + Args: + x: Input time-domain signal + + Returns: + Log-magnitude STFT representation + """ + x_tensor = torch.from_numpy(x).float() + y = torch.stft( + x_tensor, + n_fft=1024, + hop_length=256, + window=torch.hann_window(1024), + return_complex=True + ) + y = torch.log(torch.abs(y)) + # y = torch.clip(y, min=-10, max=5) + return y.numpy() \ No newline at end of file diff --git a/src/fusionaihub/datasets/prepare/prepare.py b/src/fusionaihub/datasets/prepare/prepare.py new file mode 100644 index 0000000..aa1e9f3 --- /dev/null +++ b/src/fusionaihub/datasets/prepare/prepare.py @@ -0,0 +1,286 @@ +import re +import numpy as np +import pandas as pd +import polars as pl +import h5py +from pathlib import Path +from scipy.interpolate import interp1d +from scipy.signal import resample, resample_poly +from sklearn.model_selection import train_test_split +from datetime import time, timedelta +from ..utils.parmap import ParallelMapper +import logging +from tqdm.auto import tqdm +import pickle +import torch +from concurrent.futures import ProcessPoolExecutor + + +log = logging.getLogger(__name__) + +sample_cfg = { + "signal": [ + ("magnetics_high_resolution", "mhr"), + ("ece_cali", "ece"), + ("bes", "bes"), + ("co2_density", "co2"), + ], + "randomize_shots": True, + "random_seed": 42, + "num_shots": 50, + "fs_khz": 500, + "start_ms": 0, + "end_ms": 5000, + "window_ms": 250, + "hop_ms": 50, + "remove_empty": True, + "train_test_split": 0.2, + "raw_data_dir": "/scratch/gpfs/EKOLEMEN/d3d_fusion_data", + "output_dir": "/scratch/gpfs/nc1514/specseg/data/foundation_v1", +} + + +def resample_nearest(y: np.ndarray, new_len: int) -> np.ndarray: + orig_len = len(y) + gcd = np.gcd(orig_len, new_len) + up = new_len // gcd + down = orig_len // gcd + return resample_poly(y, up, down) + # return resample(y, new_len) + # return interp1d(np.linspace(0, 1, len(y)), y, kind='cubic')(np.linspace(0, 1, new_len)) + + +def extract( + shot: int, + directory: Path, + signal: str, +) -> pd.DataFrame: + + path = (directory / str(shot)).with_suffix(".h5") + df = pd.read_hdf(path, key=signal) + + return pd.DataFrame(df) + + +def align( + df: pd.DataFrame, + start_time: float, + end_time: float, + fs: float, +) -> pd.DataFrame: + + # get sampling frequency + fs_raw = len(df) / (df.index[-1] - df.index[0]) + + # crop time + df = df.loc[(df.index >= start_time) & (df.index <= end_time)] + + # resample + num = len(df) + num = int(num * fs / fs_raw) + + df = pd.DataFrame( + {col: resample(df[col].values, num) for col in df.columns}, + index=np.linspace(df.index[0], df.index[-1], num) + ) + + # mark on-off states + start_nan = (df.index[0] - start_time) * fs + end_nan = (end_time - df.index[-1]) * fs + start_pad = pd.DataFrame( + 0, index=pd.RangeIndex(start=int(start_nan)), columns=df.columns) + end_pad = pd.DataFrame( + 0, index=pd.RangeIndex(start=int(len(df) + start_nan), stop=int(len(df) + start_nan + end_nan)), columns=df.columns) + + df_state = pd.DataFrame(True, index=df.index, columns=df.columns) + start_pad_state = pd.DataFrame(False, index=start_pad.index, columns=df.columns) + end_pad_state = pd.DataFrame(False, index=end_pad.index, columns=df.columns) + + df = pd.concat([start_pad, df, end_pad], ignore_index=True) + df_state = pd.concat([start_pad_state, df_state, end_pad_state], ignore_index=True) + df_state.columns = [f"{col}_state" for col in df.columns] + + # combine data with state + df = df.astype(np.float32) + df_state = df_state.astype(np.bool) + df = pd.concat([df, df_state], axis=1) + + # convert time to ms + df = df.rename_axis("time") + df.index = pd.to_timedelta(df.index, unit='ms') + + return df + + +def split( + df: pd.DataFrame, + window_ms: int, + hop_ms: int, + fs_khz: float, +) -> list[pd.DataFrame]: + + # Create sample indicies + num_samples = int((window_ms) * fs_khz) + hop_samples = int((hop_ms) * fs_khz) + + # Separate samples + samples = [] + for start in range( + 0, len(df) - num_samples + 1, hop_samples + ): + end = start + num_samples + sample = df.iloc[start:end] + if len(sample) == num_samples: + samples.append(sample) + + return samples + +def transform_individual_sample( + x: np.ndarray, + ) -> np.ndarray: + x = torch.from_numpy(x).float() + transformed = torch.stft( + x, + n_fft=1024, + hop_length=256, + window=torch.hann_window(1024), + return_complex=True + ) + transformed = torch.log(torch.abs(transformed).clamp(min=1e-10)) + transformed = torch.clip(transformed, min=-10, max=5).numpy() + return transformed + +def save_samples( + samples: list[pd.DataFrame], + directory: Path, + shot: int +) -> None: + directory.mkdir(parents=True, exist_ok=True) + for i, sample in enumerate(samples): + + # Remove columns ending with '_state' + sample_to_save = sample.loc[:, ~sample.columns.str.endswith('_state')] + + # Only save if not fully off (i.e., at least one True in any state col) + state_cols = [col for col in sample.columns if col.endswith('_state')] + if np.any(sample[state_cols].to_numpy()): + sample_array = sample_to_save.to_numpy().T + sample_array = sample_array.astype(np.float32) + sample_array = transform_individual_sample(sample_array) + with open(directory / f"{shot}_{i}.pkl", 'wb') as f: + pickle.dump(sample_array, f, protocol=pickle.HIGHEST_PROTOCOL) + + +def process_shot( + shot: int, + cfg: dict, + out_dir: Path, +) -> None: + + dfs = [] + for signal in cfg["signal"]: + signal_name, signal_abbr = signal + + try: + df = extract(shot=shot, directory=Path(cfg["raw_data_dir"]), signal=signal_name) + except FileNotFoundError: + print(f"Missing {shot} -- {signal_name}") + return + + try: + df.columns = [f"{signal_abbr}{col}" if col != "time" else col for col in df.columns] + except Exception as e: + print(f"Error renaming columns for shot {shot} and signal {signal_name}: {e}") + return + + try: + df = align(df, cfg["start_ms"], cfg["end_ms"], cfg["fs_khz"]) + except ValueError: + print(f"Error aligning data for shot {shot} and signal {signal_name}.") + return + + dfs.append(df) + + df = pd.concat(dfs, axis=1) + + # Split into windows + samples = split(df, cfg["window_ms"], cfg["hop_ms"], cfg["fs_khz"]) + print(f"Shot {shot} has {len(samples)} samples after splitting.") + + # Save to cache (only non-fully-off windows) + save_samples(samples, out_dir, shot) + print(f"Processed shot {shot} successfully.") + + return + + +def index_dataset(out_dir: Path) -> None: + + files = list(out_dir.glob("*.pkl")) + df_files = pd.DataFrame({'files': [str(file) for file in files]}) + df_files.to_pickle(out_dir / "index.pkl") + + print(f"Indexed {len(files)} files.") + + +def prepare_dataset(cfg: dict) -> None: + + cfg["num_samples"] = int((cfg["end_ms"] - cfg["start_ms"]) * cfg["fs_khz"]) + raw_data_dir = Path(cfg["raw_data_dir"]) + cache_dir = Path(cfg["output_dir"]) / "cache" + cache_dir.mkdir(parents=True, exist_ok=True) + + # Collect and sort all shot numbers + print(f"Collecting shots from {raw_data_dir}...") + all_shots = [ + int(p.stem) + for p in raw_data_dir.iterdir() + if p.suffix == ".h5"] + all_shots.sort() + + # if cfg["randomize_shots"]: + # np.random.seed(cfg["random_seed"]) + # all_shots = np.random.permutation(all_shots) + # all_shots = all_shots[:cfg["num_shots"]] + + # print(f"Processing {len(all_shots)} shots into cache...") + + mapper = ParallelMapper() + mapper(process_shot, [170000], cfg=cfg, out_dir=cache_dir) + + # for shot in tqdm(all_shots): # for debugging + # process_shot(shot, cfg, out_dir=cache_dir) + # break + + # Move cached files into train/test split + print("Splitting dataset into train and valid sets...") + all_files = list(cache_dir.glob("*.pkl")) + all_files.sort() + train_files, valid_files = train_test_split( + all_files, + test_size=cfg.get("train_test_split", 0.2), + random_state=cfg["random_seed"]) + + train_dir = Path(cfg["output_dir"]) / "train" + valid_dir = Path(cfg["output_dir"]) / "valid" + train_dir.mkdir(parents=True, exist_ok=True) + valid_dir.mkdir(parents=True, exist_ok=True) + + for f in train_files: + f.rename(train_dir / f.name) + for f in valid_files: + f.rename(valid_dir / f.name) + + # Index the datasets + index_dataset(train_dir) + index_dataset(valid_dir) + + # Remove cache directory after splitting + for f in cache_dir.glob("*"): f.unlink() + cache_dir.rmdir() + + print("Dataset preparation complete.") + +if __name__ == "__main__": + cfg = sample_cfg.copy() + prepare_dataset(cfg=cfg) \ No newline at end of file diff --git a/src/fusionaihub/datasets/prepare/prepare2.py b/src/fusionaihub/datasets/prepare/prepare2.py new file mode 100644 index 0000000..67a8186 --- /dev/null +++ b/src/fusionaihub/datasets/prepare/prepare2.py @@ -0,0 +1,443 @@ +import re +import numpy as np +import pandas as pd +from pathlib import Path +from scipy.signal import resample, resample_poly +from sklearn.model_selection import train_test_split +from ...util.parmap import ParallelMapper +import logging +import joblib +import torch +from concurrent.futures import ProcessPoolExecutor +from typing import Optional + + +log = logging.getLogger(__name__) + +sample_cfg = { + "signal": [ # start with signals to be transformed. this is hacked on + ("magnetics_high_resolution", "mhr", True), + ("ece_cali", "ece", True), + ("co2_density", "co2", True), + ("gas", "gas", False), + ("ech", "ech", False), + ("p_inj", "pin", False), + ("t_inj", "tin", False), + ], + "randomize_shots": True, + "random_seed": 42, + "num_shots": 50, + "fs_khz": 500, + "ip_threshold": 1e-1, + "window_ms": 250, + "hop_ms": 50, + "remove_empty": True, + "train_test_split": 0.2, + "raw_data_dir": "/scratch/gpfs/EKOLEMEN/d3d_fusion_data", + "output_dir": "/scratch/gpfs/nc1514/FusionAIHub/data/foundation_v2", +} + + +def resample_nearest(y: np.ndarray, new_len: int) -> np.ndarray: + orig_len = len(y) + gcd = np.gcd(orig_len, new_len) + up = new_len // gcd + down = orig_len // gcd + # return resample_poly(y, up, down) + resampled = resample(y, new_len) + return np.asarray(resampled) + # return interp1d(np.linspace(0, 1, len(y)), y, kind='cubic')(np.linspace(0, 1, new_len)) + + +def extract( + shot: int, + directory: Path, + signal: str, +) -> pd.DataFrame: + + path = (directory / str(shot)).with_suffix(".h5") + df = pd.read_hdf(path, key=signal) + + return pd.DataFrame(df) + +def running_time( + directory: Path, + shot: int, + ip_threshold: float, +) -> tuple[float, float]: + + path = (directory / str(shot)).with_suffix(".h5") + with pd.HDFStore(path, 'r') as store: + df = store['ip']['ipsip'] + df = df.loc[df > ip_threshold] + start_time = df.index[0] + end_time = df.index[-1] + return start_time, end_time + +def align( + df: pd.DataFrame, + start_time: float, + end_time: float, + fs: float, +) -> pd.DataFrame: + + # get sampling frequency + fs_raw = len(df) / (df.index[-1] - df.index[0]) + + # crop time + df = df.loc[(df.index >= start_time) & (df.index <= end_time)] + + # resample + num = len(df) + num = int(num * fs / fs_raw) + + df = pd.DataFrame( + {col: resample(df[col].values, num) for col in df.columns}, + index=np.linspace(df.index[0], df.index[-1], num) + ) + + # mark on-off states + start_nan = (df.index[0] - start_time) * fs + end_nan = (end_time - df.index[-1]) * fs + start_pad = pd.DataFrame( + 0, index=pd.RangeIndex(start=int(start_nan)), columns=df.columns) + end_pad = pd.DataFrame( + 0, index=pd.RangeIndex(start=int(len(df) + start_nan), stop=int(len(df) + start_nan + end_nan)), columns=df.columns) + + df_state = pd.DataFrame(True, index=df.index, columns=df.columns) + start_pad_state = pd.DataFrame(False, index=start_pad.index, columns=df.columns) + end_pad_state = pd.DataFrame(False, index=end_pad.index, columns=df.columns) + + df = pd.concat([start_pad, df, end_pad], ignore_index=True) + df_state = pd.concat([start_pad_state, df_state, end_pad_state], ignore_index=True) + df_state.columns = [f"{col}_state" for col in df.columns] + + # combine data with state + df = df.astype(np.float32) + df_state = df_state.astype(np.bool) + df = pd.concat([df, df_state], axis=1) + + # convert time to ms + df = df.rename_axis("time") + + return df + + +def split( + df: pd.DataFrame, + window_ms: int, + hop_ms: int, + fs_khz: float, +) -> list[pd.DataFrame]: + + # Create sample indicies + num_samples = int((window_ms) * fs_khz) + hop_samples = int((hop_ms) * fs_khz) + + # Separate samples + samples = [] + for start in range( + 0, len(df) - num_samples + 1, hop_samples + ): + end = start + num_samples + sample = df.iloc[start:end] + if len(sample) == num_samples: + samples.append(sample) + + return samples + +def transform_individual_sample( + x: np.ndarray, + ) -> np.ndarray: + x_tensor = torch.from_numpy(x).float() + y = torch.stft( + x_tensor, + n_fft=1024, + hop_length=256, + window=torch.hann_window(1024), + return_complex=True + ) + y = torch.log(torch.abs(y)) + # y = torch.clip(y, min=-10, max=5) + return y.numpy() + + +def create_missing_signal_dataframes( + cfg: dict, + processed_signals: set, + reference_df: pd.DataFrame +) -> list[pd.DataFrame]: + """Create fully off dataframes for missing signals using reference dataframe structure.""" + + missing_dfs = [] + + for signal in cfg["signal"]: + signal_name, signal_abbr, do_transform = signal + if signal_abbr not in processed_signals: + print(f"Creating fully off dataframe for missing signal {signal_name}") + + # Create off dataframe by copying structure and zeroing values + off_df = reference_df.copy() + + # Get columns that belong to the reference signal (to replace with new signal columns) + ref_signal_cols = [col for col in off_df.columns if not col.endswith('_state')] + + # Create new column names for the missing signal + new_cols = {} + new_state_cols = {} + + for i, col in enumerate(ref_signal_cols): + new_col_name = f"{signal_abbr}col{i}" + new_cols[col] = new_col_name + new_state_cols[f"{col}_state"] = f"{new_col_name}_state" + + # Rename columns to match the missing signal + off_df = off_df.rename(columns={**new_cols, **new_state_cols}) + + # Set all data columns to 0 and all state columns to False + for col in off_df.columns: + if col.endswith('_state'): + off_df[col] = False + else: + off_df[col] = 0.0 + + missing_dfs.append(off_df) + + return missing_dfs + + +def transform_samples( + samples: list[pd.DataFrame], + directory: Path, + signal_config: list[tuple], + shot: int, +) -> list[dict]: + directory.mkdir(parents=True, exist_ok=True) + print(f"Processing {len(samples)} samples for shot {shot}") + samples_dict = [] + + # Create mapping from signal abbreviation to whether it should be transformed + transform_map = {} + for signal_name, signal_abbr, should_transform in signal_config: + transform_map[signal_abbr] = should_transform + + for i, sample in enumerate(samples): + + # Remove columns ending with '_state' + sample_to_save = sample.loc[:, ~sample.columns.str.endswith('_state')] + + # Only save if not fully off (i.e., at least one True in any state col) + state_cols = [col for col in sample.columns if col.endswith('_state')] + if np.any(sample[state_cols].to_numpy()): + + # First pass: apply transformations and collect results + sample_dict = {} + transformed_sample = None + original_time_length = len(sample_to_save) + + for col in sample_to_save.columns: + # Convert each column to float32 numpy array + col_array = sample_to_save[col].values.astype(np.float32) + + # Determine if this column should be transformed based on signal abbreviation + should_transform = False + for signal_abbr in transform_map.keys(): + if col.startswith(signal_abbr): + should_transform = transform_map[signal_abbr] + break + + if should_transform: + transformed_array = transform_individual_sample(col_array) + sample_dict[col] = transformed_array + # Store an example transformed sample to get target dimensions + if transformed_sample is None: + transformed_sample = transformed_array + print(f"Reference transformed sample shape: {transformed_array.shape}") + else: + # Store original array for now, will resample later + sample_dict[col] = col_array + + # Second pass: resample non-transformed samples to match transformed dimensions + if transformed_sample is not None: + target_width = transformed_sample.shape[-1] # Last dimension is time + # Calculate target sample frequency based on transformed sample + target_fs = target_width / original_time_length + print(f"Target frequency ratio: {target_fs:.4f} (target width: {target_width}, original length: {original_time_length})") + + for col in sample_dict.keys(): + # Check if this column was transformed + should_transform = False + for signal_abbr in transform_map.keys(): + if col.startswith(signal_abbr): + should_transform = transform_map[signal_abbr] + break + + if not should_transform: + # Resample non-transformed data to match target width + original_array = sample_dict[col] + resampled_array = resample_nearest(original_array, target_width) + + # Crop end if needed to ensure exact match + if len(resampled_array) > target_width: + resampled_array = resampled_array[:target_width] + elif len(resampled_array) < target_width: + # Pad with zeros if too short (shouldn't happen with resample_nearest) + pad_width = target_width - len(resampled_array) + resampled_array = np.pad(resampled_array, (0, pad_width), mode='constant') + + sample_dict[col] = resampled_array.astype(np.float32) + print(f"Resampled {col} from {len(original_array)} to {len(resampled_array)}") + + samples_dict.append(sample_dict) + print(f"Sample {i} processed with {len(sample_dict)} signals") + + return samples_dict + +def save_samples( + samples: list[dict], + directory: Path, + shot: int +) -> None: + directory.mkdir(parents=True, exist_ok=True) + print(f"Saving {len(samples)} samples to {directory}") + for i, sample in enumerate(samples): + # Save using joblib + joblib.dump(sample, directory / f"{shot}_{i}.pkl", compress=True) + +def process_shot( + shot: int, + cfg: dict, + out_dir: Path, +) -> None: + + dfs = [] + start_time = None + end_time = None + + try: + start_time, end_time = running_time( + directory=Path(cfg["raw_data_dir"]), + shot=shot, + ip_threshold=cfg["ip_threshold"] + ) + reference_len = int((end_time - start_time) * cfg["fs_khz"]) + print(f"Running time for shot {shot}: {start_time} to {end_time}") + except Exception as e: + print(f"Error: Could not determine running time for shot {shot}: {e}") + return + + # Process each signal and track which ones succeeded + processed_signals = set() + + for signal in cfg["signal"]: + signal_name, signal_abbr, is_transformed = signal + df = None + + try: + # Try to extract and process the signal + df = extract(shot=shot, directory=Path(cfg["raw_data_dir"]), signal=signal_name) + df.columns = [f"{signal_abbr}{col}" if col != "time" else col for col in df.columns] + df = align(df, start_time, end_time, cfg["fs_khz"]) + processed_signals.add(signal_abbr) + dfs.append(df) + print(f"Successfully processed signal {signal_name} for shot {shot}") + + except Exception as e: + print(f"Error processing signal {signal_name} for shot {shot}: {e}") + + if not dfs: + print(f"Error: No dataframes created for shot {shot}") + return + + # For missing signals, create "fully off" dataframes using the structure of the last dataframe + if len(processed_signals) < len(cfg["signal"]): + reference_df = dfs[-1] # Use the last successfully processed dataframe as reference + missing_dfs = create_missing_signal_dataframes(cfg, processed_signals, reference_df) + dfs.extend(missing_dfs) + + df = pd.concat(dfs, axis=1, join='inner') + + num_samples = len(df) + new_index = np.linspace(start_time, end_time, num_samples) + df.index = new_index + df.index = pd.to_timedelta(df.index, unit='ms') + + samples = [df] # no splitting for this dataset + print(f"Shot {shot} has {len(samples)} samples after splitting.") + samples_dict = transform_samples(samples, out_dir, cfg["signal"], shot) + + save_samples(samples_dict, out_dir, shot) + print(f"Processed shot {shot} successfully with {len(cfg['signal'])} signals.") + + return + + +def index_dataset(out_dir: Path) -> None: + + files = list(out_dir.glob("*.pkl")) + df_files = pd.DataFrame({'files': [str(file) for file in files]}) + df_files.to_pickle(out_dir / "index.pkl") + + print(f"Indexed {len(files)} files.") + + +def prepare_dataset(cfg: dict) -> None: + + raw_data_dir = Path(cfg["raw_data_dir"]) + cache_dir = Path(cfg["output_dir"]) / "cache" + cache_dir.mkdir(parents=True, exist_ok=True) + + # Collect and sort all shot numbers + print(f"Collecting shots from {raw_data_dir}...") + all_shots = [ + int(p.stem) + for p in raw_data_dir.iterdir() + if p.suffix == ".h5"] + all_shots.sort() + + # if cfg["randomize_shots"]: + # np.random.seed(cfg["random_seed"]) + # all_shots = np.random.permutation(all_shots) + # all_shots = all_shots[:cfg["num_shots"]] + + # print(f"Processing {len(all_shots)} shots into cache...") + + mapper = ParallelMapper() + mapper(process_shot, [170000], cfg=cfg, out_dir=cache_dir) + + # for shot in tqdm(all_shots): # for debugging + # process_shot(shot, cfg, out_dir=cache_dir) + # break + + # Move cached files into train/test split + print("Splitting dataset into train and valid sets...") + all_files = list(cache_dir.glob("*.pkl")) + all_files.sort() + train_files, valid_files = train_test_split( + all_files, + test_size=cfg.get("train_test_split", 0.2), + random_state=cfg["random_seed"]) + + train_dir = Path(cfg["output_dir"]) / "train" + valid_dir = Path(cfg["output_dir"]) / "valid" + train_dir.mkdir(parents=True, exist_ok=True) + valid_dir.mkdir(parents=True, exist_ok=True) + + for f in train_files: + f.rename(train_dir / f.name) + for f in valid_files: + f.rename(valid_dir / f.name) + + # Index the datasets + index_dataset(train_dir) + index_dataset(valid_dir) + + # Remove cache directory after splitting + for f in cache_dir.glob("*"): f.unlink() + cache_dir.rmdir() + + print("Dataset preparation complete.") + +if __name__ == "__main__": + cfg = sample_cfg.copy() + prepare_dataset(cfg=cfg) \ No newline at end of file diff --git a/src/fusionaihub/datasets/prepare/prepare_dataset.py b/src/fusionaihub/datasets/prepare/prepare_dataset.py new file mode 100644 index 0000000..152b0fd --- /dev/null +++ b/src/fusionaihub/datasets/prepare/prepare_dataset.py @@ -0,0 +1,159 @@ +#!/usr/bin/env python3 +""" +Main script for fusion dataset preparation. + +This script orchestrates the complete dataset preparation pipeline using +modular components and YAML configuration. +""" + +import yaml +import numpy as np +from pathlib import Path +from sklearn.model_selection import train_test_split +from typing import Optional +from ...util.parmap import ParallelMapper + +from .core import process_shot_stft, index_dataset + + +def load_config(config_path: Optional[str] = None) -> dict: + """ + Load configuration from YAML file. + + Args: + config_path: Path to YAML configuration file. + If None, uses default.yaml in config directory. + + Returns: + Configuration dictionary + """ + if config_path is None: + config_path = str(Path(__file__).parent / "config" / "default.yaml") + + with open(config_path, 'r') as f: + cfg = yaml.safe_load(f) + + return cfg + + +def prepare_dataset(cfg: dict) -> None: + """ + Prepare the complete fusion dataset using the modular pipeline. + + This function orchestrates the complete dataset preparation workflow: + 1. Collects shot numbers from raw data directory + 2. Processes shots in parallel using the modular pipeline + 3. Splits processed data into train/validation sets + 4. Creates dataset indices for both sets + + Args: + cfg: Configuration dictionary loaded from YAML + """ + raw_data_dir = Path(cfg["raw_data_dir"]) + cache_dir = Path(cfg["output_dir"]) / "cache" + cache_dir.mkdir(parents=True, exist_ok=True) + + # Collect and sort all shot numbers + print(f"Collecting shots from {raw_data_dir}...") + all_shots = [ + int(p.stem) + for p in raw_data_dir.iterdir() + if p.suffix == ".h5" + ] + all_shots.sort() + + # Apply shot selection and randomization if configured + if cfg.get("randomize_shots", False): + np.random.seed(cfg["random_seed"]) + all_shots = np.random.permutation(all_shots) + + if cfg.get("num_shots") is not None: + all_shots = all_shots[:cfg["num_shots"]] + + print(f"Processing {len(all_shots)} shots into cache...") + + # Clean up existing cache directory if it exists + if cache_dir.exists(): + import shutil + print(f"Removing existing cache directory: {cache_dir}") + shutil.rmtree(cache_dir) + cache_dir.mkdir(parents=True, exist_ok=True) + # Process shots using parallel mapping + # For debugging, process single shot + # process_shot_stft(170000, cfg, cache_dir) + mapper = ParallelMapper() + mapper(process_shot_stft, all_shots[:10], cfg=cfg, out_dir=cache_dir) + + # For production, uncomment this line and comment the above + # mapper(process_shot_stft, all_shots, cfg=cfg, out_dir=cache_dir) + + # Move cached files into train/test split + print("Splitting dataset into train and valid sets...") + all_files = list(cache_dir.glob("*.pkl")) + all_files.sort() + + if len(all_files) == 0: + print("Warning: No processed files found. Dataset preparation incomplete.") + return + + # Handle edge case where there are too few files for train-test split + if len(all_files) == 1: + print("Warning: Only 1 file found. Placing in train directory.") + train_files = all_files + valid_files = [] + else: + train_files, valid_files = train_test_split( + all_files, + test_size=cfg.get("train_test_split", 0.2), + random_state=cfg["random_seed"] + ) + + # Create train and validation directories + train_dir = Path(cfg["output_dir"]) / "train" + valid_dir = Path(cfg["output_dir"]) / "valid" + train_dir.mkdir(parents=True, exist_ok=True) + valid_dir.mkdir(parents=True, exist_ok=True) + + # Move files to appropriate directories + for f in train_files: + f.rename(train_dir / f.name) + for f in valid_files: + f.rename(valid_dir / f.name) + + # Index the datasets + index_dataset(train_dir) + index_dataset(valid_dir) + + # Clean up cache directory + for f in cache_dir.glob("*"): + f.unlink() + cache_dir.rmdir() + + print("Dataset preparation complete.") + print(f"Training samples: {len(train_files)}") + print(f"Validation samples: {len(valid_files)}") + + +def main(): + """Main entry point for the dataset preparation script.""" + import argparse + + parser = argparse.ArgumentParser(description="Prepare fusion dataset") + parser.add_argument( + "--config", + type=str, + default=None, + help="Path to configuration YAML file (default: config/default.yaml)" + ) + + args = parser.parse_args() + + # Load configuration + cfg = load_config(args.config) + + # Prepare dataset + prepare_dataset(cfg) + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/src/fusion_ai_hub/datasets/toy_loader/load.py b/src/fusionaihub/datasets/toy_loader/load.py similarity index 100% rename from src/fusion_ai_hub/datasets/toy_loader/load.py rename to src/fusionaihub/datasets/toy_loader/load.py diff --git a/src/fusion_ai_hub/feature/__init__.py b/src/fusionaihub/display/__init__.py similarity index 100% rename from src/fusion_ai_hub/feature/__init__.py rename to src/fusionaihub/display/__init__.py diff --git a/src/fusion_ai_hub/display/display.py b/src/fusionaihub/display/display.py similarity index 100% rename from src/fusion_ai_hub/display/display.py rename to src/fusionaihub/display/display.py diff --git a/src/fusion_ai_hub/display/specshow.py b/src/fusionaihub/display/specshow.py similarity index 100% rename from src/fusion_ai_hub/display/specshow.py rename to src/fusionaihub/display/specshow.py diff --git a/src/fusion_ai_hub/display/waveshow.py b/src/fusionaihub/display/waveshow.py similarity index 100% rename from src/fusion_ai_hub/display/waveshow.py rename to src/fusionaihub/display/waveshow.py diff --git a/src/fusion_ai_hub/sampling/__init__.py b/src/fusionaihub/feature/__init__.py similarity index 100% rename from src/fusion_ai_hub/sampling/__init__.py rename to src/fusionaihub/feature/__init__.py diff --git a/src/fusion_ai_hub/util/__init__.py b/src/fusionaihub/sampling/__init__.py similarity index 100% rename from src/fusion_ai_hub/util/__init__.py rename to src/fusionaihub/sampling/__init__.py diff --git a/src/fusion_ai_hub/sampling/match_times.py b/src/fusionaihub/sampling/match_times.py similarity index 100% rename from src/fusion_ai_hub/sampling/match_times.py rename to src/fusionaihub/sampling/match_times.py diff --git a/src/fusionaihub/util/__init__.py b/src/fusionaihub/util/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/fusionaihub/util/parmap.py b/src/fusionaihub/util/parmap.py new file mode 100644 index 0000000..2e98e75 --- /dev/null +++ b/src/fusionaihub/util/parmap.py @@ -0,0 +1,170 @@ +"""Defines function parmap, a parallel version of map.""" +from ctypes import c_ulong +import multiprocessing as mp +from multiprocessing.sharedctypes import Value +import gc +import sys + + +def _identity(x): + """The identity function.""" + return x + + +class ProgressBar: + """ + Usage : update_progress(progress) + An ASCII progression bar. + Values of input should be floats or ints ranging from 0 to ntot (default 1). + """ + def __init__(self, output=None, bar_length=50, ntot=None): + """ + "output" is a function that takes a string as input and prints it (defaults to stdout). + bar_length is the length of the progress bar in characters. + ntot is the maximum value of the progress bar (default 1). + """ + self.output = output + self.bar_length = bar_length + self.ntot = ntot + self._last = -1 + + def set_ntot(self, value): + self.ntot = value + + def _update(self, progress): + status = "" + try: + progress = float(progress) + except (ValueError, TypeError): + progress = 0 + status = "error: progress var must be float\r\n" + if self.ntot is not None: + progress /= self.ntot + if progress < self._last: + status = "Non monotonic" + self._last = progress + if progress < 0: + progress = 0 + status = "Halt...\r\n" + if progress >= 1: + progress = 1 + status = "Done...\r\n" + block = int(round(self.bar_length * progress)) + text = "\rPercent: [{0}] {1:.3f}% {2}" + text = text.format("#" * block + "-" * (self.bar_length - block), + progress * 100, status) + if self.output is None: + sys.stdout.write(text) + sys.stdout.flush() + else: + self.output(text) + + def __call__(self, progress): + """Update the progress bar to specified value.""" + self._update(progress) + + +class ParallelMapper: + """Parallel version of map.""" + def __init__(self, nprocs=None, progress=True, fetcher=_identity): + """ + nprocs is the number of processors to use (default is mp.cpu_count()). + progress is a boolean or a ProgressBar object. If True, a ProgressBar is used. + fetcher is a function that fetches the data from the iterable, defaults to identity function. + """ + if nprocs is None: + nprocs = mp.cpu_count() + self.nprocs = nprocs + self.fetcher = fetcher + self._counter = Value(c_ulong, 0) + self._set_counter(0) + if progress is True: + progress = ProgressBar() + self._progress = progress + + def progress(self, value, ntot=None): + """Update the progress bar to specified value.""" + if self._progress: + if ntot and value == 0: + self._progress.set_ntot(ntot) + self._progress(value) + + def _set_counter(self, value): + """Set the counter to value.""" + with self._counter.get_lock(): + self._counter.value = value + + def _get_counter(self): + """Return the current value of the counter.""" + with self._counter.get_lock(): + out = self._counter.value + return out + + def _inc_counter(self, value=1): + """Increment the counter by value and return the new value.""" + with self._counter.get_lock(): + self._counter.value += value + out = self._counter.value + return out + + def _fun(self, f, q_in, q_out, **kwargs): + """Function to be executed by each process. Wrapper for f and progress bar.""" + while True: + i, x = q_in.get() + if i is None: + break + q_out.put((i, f(self.fetcher(x), **kwargs))) + # Try to free memory + gc.collect() + self.progress(self._inc_counter()) + + def parmap(self, f, x, **kwargs): + """ + Parallelizes the computation of 'map(f, X)' over 'nprocs' processors, + where f is a function, X is an iterable. Returns list of length len(X). + """ + self.progress(0, len(x)) + if self.nprocs == 1: + return list(map(f, map(self.fetcher, x))) + + # Create input/output queues + q_in = mp.Queue(1) + q_out = mp.Queue() + + # Create and start processes + proc = [mp.Process(target=self._fun, args=(f, q_in, q_out), kwargs=kwargs) + for _ in range(self.nprocs)] + for p in proc: + p.daemon = True + p.start() + + # Feed/execute processes + sent = [q_in.put((i, x)) for i, x in enumerate(x)] + [q_in.put((None, None)) for _ in range(self.nprocs)] + res = [q_out.get() for _ in range(len(sent))] + + [p.join() for p in proc] + + # compile and return results + out = [x for i, x in sorted(res)] + for p in proc: + p.close() + del p + del (proc, res, sent, q_in, q_out) + gc.collect() + return out + + def __call__(self, f, x, **kwargs): + """ + Parallelizes the computation of 'map(f, X)' over 'nprocs' processors, + where f is a function, X is an iterable. Returns list of length len(X). + """ + return self.parmap(f, x, **kwargs) + + +def parmap(f, x, nprocs=None, **kwargs): + """ + Parallelizes the computation of 'map(f, x)' over 'nprocs' processors, + where f is a function, x is an iterable. Returns list of length len(x). + """ + return ParallelMapper(nprocs=nprocs, **kwargs)(f, x) \ No newline at end of file diff --git a/src/fusion_ai_hub/util/utils.py b/src/fusionaihub/util/utils.py similarity index 100% rename from src/fusion_ai_hub/util/utils.py rename to src/fusionaihub/util/utils.py diff --git a/uv.lock b/uv.lock new file mode 100644 index 0000000..b805b42 --- /dev/null +++ b/uv.lock @@ -0,0 +1,3052 @@ +version = 1 +revision = 2 +requires-python = ">=3.9" +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", + "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", +] + +[[package]] +name = "appnope" +version = "0.1.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/35/5d/752690df9ef5b76e169e68d6a129fa6d08a7100ca7f754c89495db3c6019/appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee", size = 4170, upload-time = "2024-02-06T09:43:11.258Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321, upload-time = "2024-02-06T09:43:09.663Z" }, +] + +[[package]] +name = "asttokens" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4a/e7/82da0a03e7ba5141f05cce0d302e6eed121ae055e0456ca228bf693984bc/asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7", size = 61978, upload-time = "2024-11-30T04:30:14.439Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2", size = 26918, upload-time = "2024-11-30T04:30:10.946Z" }, +] + +[[package]] +name = "bcrypt" +version = "4.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bb/5d/6d7433e0f3cd46ce0b43cd65e1db465ea024dbb8216fb2404e919c2ad77b/bcrypt-4.3.0.tar.gz", hash = "sha256:3a3fd2204178b6d2adcf09cb4f6426ffef54762577a7c9b54c159008cb288c18", size = 25697, upload-time = "2025-02-28T01:24:09.174Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bf/2c/3d44e853d1fe969d229bd58d39ae6902b3d924af0e2b5a60d17d4b809ded/bcrypt-4.3.0-cp313-cp313t-macosx_10_12_universal2.whl", hash = "sha256:f01e060f14b6b57bbb72fc5b4a83ac21c443c9a2ee708e04a10e9192f90a6281", size = 483719, upload-time = "2025-02-28T01:22:34.539Z" }, + { url = "https://files.pythonhosted.org/packages/a1/e2/58ff6e2a22eca2e2cff5370ae56dba29d70b1ea6fc08ee9115c3ae367795/bcrypt-4.3.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5eeac541cefd0bb887a371ef73c62c3cd78535e4887b310626036a7c0a817bb", size = 272001, upload-time = "2025-02-28T01:22:38.078Z" }, + { url = "https://files.pythonhosted.org/packages/37/1f/c55ed8dbe994b1d088309e366749633c9eb90d139af3c0a50c102ba68a1a/bcrypt-4.3.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59e1aa0e2cd871b08ca146ed08445038f42ff75968c7ae50d2fdd7860ade2180", size = 277451, upload-time = "2025-02-28T01:22:40.787Z" }, + { url = "https://files.pythonhosted.org/packages/d7/1c/794feb2ecf22fe73dcfb697ea7057f632061faceb7dcf0f155f3443b4d79/bcrypt-4.3.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:0042b2e342e9ae3d2ed22727c1262f76cc4f345683b5c1715f0250cf4277294f", size = 272792, upload-time = "2025-02-28T01:22:43.144Z" }, + { url = "https://files.pythonhosted.org/packages/13/b7/0b289506a3f3598c2ae2bdfa0ea66969812ed200264e3f61df77753eee6d/bcrypt-4.3.0-cp313-cp313t-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74a8d21a09f5e025a9a23e7c0fd2c7fe8e7503e4d356c0a2c1486ba010619f09", size = 289752, upload-time = "2025-02-28T01:22:45.56Z" }, + { url = "https://files.pythonhosted.org/packages/dc/24/d0fb023788afe9e83cc118895a9f6c57e1044e7e1672f045e46733421fe6/bcrypt-4.3.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:0142b2cb84a009f8452c8c5a33ace5e3dfec4159e7735f5afe9a4d50a8ea722d", size = 277762, upload-time = "2025-02-28T01:22:47.023Z" }, + { url = "https://files.pythonhosted.org/packages/e4/38/cde58089492e55ac4ef6c49fea7027600c84fd23f7520c62118c03b4625e/bcrypt-4.3.0-cp313-cp313t-manylinux_2_34_aarch64.whl", hash = "sha256:12fa6ce40cde3f0b899729dbd7d5e8811cb892d31b6f7d0334a1f37748b789fd", size = 272384, upload-time = "2025-02-28T01:22:49.221Z" }, + { url = "https://files.pythonhosted.org/packages/de/6a/d5026520843490cfc8135d03012a413e4532a400e471e6188b01b2de853f/bcrypt-4.3.0-cp313-cp313t-manylinux_2_34_x86_64.whl", hash = "sha256:5bd3cca1f2aa5dbcf39e2aa13dd094ea181f48959e1071265de49cc2b82525af", size = 277329, upload-time = "2025-02-28T01:22:51.603Z" }, + { url = "https://files.pythonhosted.org/packages/b3/a3/4fc5255e60486466c389e28c12579d2829b28a527360e9430b4041df4cf9/bcrypt-4.3.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:335a420cfd63fc5bc27308e929bee231c15c85cc4c496610ffb17923abf7f231", size = 305241, upload-time = "2025-02-28T01:22:53.283Z" }, + { url = "https://files.pythonhosted.org/packages/c7/15/2b37bc07d6ce27cc94e5b10fd5058900eb8fb11642300e932c8c82e25c4a/bcrypt-4.3.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:0e30e5e67aed0187a1764911af023043b4542e70a7461ad20e837e94d23e1d6c", size = 309617, upload-time = "2025-02-28T01:22:55.461Z" }, + { url = "https://files.pythonhosted.org/packages/5f/1f/99f65edb09e6c935232ba0430c8c13bb98cb3194b6d636e61d93fe60ac59/bcrypt-4.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:3b8d62290ebefd49ee0b3ce7500f5dbdcf13b81402c05f6dafab9a1e1b27212f", size = 335751, upload-time = "2025-02-28T01:22:57.81Z" }, + { url = "https://files.pythonhosted.org/packages/00/1b/b324030c706711c99769988fcb694b3cb23f247ad39a7823a78e361bdbb8/bcrypt-4.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:2ef6630e0ec01376f59a006dc72918b1bf436c3b571b80fa1968d775fa02fe7d", size = 355965, upload-time = "2025-02-28T01:22:59.181Z" }, + { url = "https://files.pythonhosted.org/packages/aa/dd/20372a0579dd915dfc3b1cd4943b3bca431866fcb1dfdfd7518c3caddea6/bcrypt-4.3.0-cp313-cp313t-win32.whl", hash = "sha256:7a4be4cbf241afee43f1c3969b9103a41b40bcb3a3f467ab19f891d9bc4642e4", size = 155316, upload-time = "2025-02-28T01:23:00.763Z" }, + { url = "https://files.pythonhosted.org/packages/6d/52/45d969fcff6b5577c2bf17098dc36269b4c02197d551371c023130c0f890/bcrypt-4.3.0-cp313-cp313t-win_amd64.whl", hash = "sha256:5c1949bf259a388863ced887c7861da1df681cb2388645766c89fdfd9004c669", size = 147752, upload-time = "2025-02-28T01:23:02.908Z" }, + { url = "https://files.pythonhosted.org/packages/11/22/5ada0b9af72b60cbc4c9a399fdde4af0feaa609d27eb0adc61607997a3fa/bcrypt-4.3.0-cp38-abi3-macosx_10_12_universal2.whl", hash = "sha256:f81b0ed2639568bf14749112298f9e4e2b28853dab50a8b357e31798686a036d", size = 498019, upload-time = "2025-02-28T01:23:05.838Z" }, + { url = "https://files.pythonhosted.org/packages/b8/8c/252a1edc598dc1ce57905be173328eda073083826955ee3c97c7ff5ba584/bcrypt-4.3.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:864f8f19adbe13b7de11ba15d85d4a428c7e2f344bac110f667676a0ff84924b", size = 279174, upload-time = "2025-02-28T01:23:07.274Z" }, + { url = "https://files.pythonhosted.org/packages/29/5b/4547d5c49b85f0337c13929f2ccbe08b7283069eea3550a457914fc078aa/bcrypt-4.3.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e36506d001e93bffe59754397572f21bb5dc7c83f54454c990c74a468cd589e", size = 283870, upload-time = "2025-02-28T01:23:09.151Z" }, + { url = "https://files.pythonhosted.org/packages/be/21/7dbaf3fa1745cb63f776bb046e481fbababd7d344c5324eab47f5ca92dd2/bcrypt-4.3.0-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:842d08d75d9fe9fb94b18b071090220697f9f184d4547179b60734846461ed59", size = 279601, upload-time = "2025-02-28T01:23:11.461Z" }, + { url = "https://files.pythonhosted.org/packages/6d/64/e042fc8262e971347d9230d9abbe70d68b0a549acd8611c83cebd3eaec67/bcrypt-4.3.0-cp38-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7c03296b85cb87db865d91da79bf63d5609284fc0cab9472fdd8367bbd830753", size = 297660, upload-time = "2025-02-28T01:23:12.989Z" }, + { url = "https://files.pythonhosted.org/packages/50/b8/6294eb84a3fef3b67c69b4470fcdd5326676806bf2519cda79331ab3c3a9/bcrypt-4.3.0-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:62f26585e8b219cdc909b6a0069efc5e4267e25d4a3770a364ac58024f62a761", size = 284083, upload-time = "2025-02-28T01:23:14.5Z" }, + { url = "https://files.pythonhosted.org/packages/62/e6/baff635a4f2c42e8788fe1b1633911c38551ecca9a749d1052d296329da6/bcrypt-4.3.0-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:beeefe437218a65322fbd0069eb437e7c98137e08f22c4660ac2dc795c31f8bb", size = 279237, upload-time = "2025-02-28T01:23:16.686Z" }, + { url = "https://files.pythonhosted.org/packages/39/48/46f623f1b0c7dc2e5de0b8af5e6f5ac4cc26408ac33f3d424e5ad8da4a90/bcrypt-4.3.0-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:97eea7408db3a5bcce4a55d13245ab3fa566e23b4c67cd227062bb49e26c585d", size = 283737, upload-time = "2025-02-28T01:23:18.897Z" }, + { url = "https://files.pythonhosted.org/packages/49/8b/70671c3ce9c0fca4a6cc3cc6ccbaa7e948875a2e62cbd146e04a4011899c/bcrypt-4.3.0-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:191354ebfe305e84f344c5964c7cd5f924a3bfc5d405c75ad07f232b6dffb49f", size = 312741, upload-time = "2025-02-28T01:23:21.041Z" }, + { url = "https://files.pythonhosted.org/packages/27/fb/910d3a1caa2d249b6040a5caf9f9866c52114d51523ac2fb47578a27faee/bcrypt-4.3.0-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:41261d64150858eeb5ff43c753c4b216991e0ae16614a308a15d909503617732", size = 316472, upload-time = "2025-02-28T01:23:23.183Z" }, + { url = "https://files.pythonhosted.org/packages/dc/cf/7cf3a05b66ce466cfb575dbbda39718d45a609daa78500f57fa9f36fa3c0/bcrypt-4.3.0-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:33752b1ba962ee793fa2b6321404bf20011fe45b9afd2a842139de3011898fef", size = 343606, upload-time = "2025-02-28T01:23:25.361Z" }, + { url = "https://files.pythonhosted.org/packages/e3/b8/e970ecc6d7e355c0d892b7f733480f4aa8509f99b33e71550242cf0b7e63/bcrypt-4.3.0-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:50e6e80a4bfd23a25f5c05b90167c19030cf9f87930f7cb2eacb99f45d1c3304", size = 362867, upload-time = "2025-02-28T01:23:26.875Z" }, + { url = "https://files.pythonhosted.org/packages/a9/97/8d3118efd8354c555a3422d544163f40d9f236be5b96c714086463f11699/bcrypt-4.3.0-cp38-abi3-win32.whl", hash = "sha256:67a561c4d9fb9465ec866177e7aebcad08fe23aaf6fbd692a6fab69088abfc51", size = 160589, upload-time = "2025-02-28T01:23:28.381Z" }, + { url = "https://files.pythonhosted.org/packages/29/07/416f0b99f7f3997c69815365babbc2e8754181a4b1899d921b3c7d5b6f12/bcrypt-4.3.0-cp38-abi3-win_amd64.whl", hash = "sha256:584027857bc2843772114717a7490a37f68da563b3620f78a849bcb54dc11e62", size = 152794, upload-time = "2025-02-28T01:23:30.187Z" }, + { url = "https://files.pythonhosted.org/packages/6e/c1/3fa0e9e4e0bfd3fd77eb8b52ec198fd6e1fd7e9402052e43f23483f956dd/bcrypt-4.3.0-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:0d3efb1157edebfd9128e4e46e2ac1a64e0c1fe46fb023158a407c7892b0f8c3", size = 498969, upload-time = "2025-02-28T01:23:31.945Z" }, + { url = "https://files.pythonhosted.org/packages/ce/d4/755ce19b6743394787fbd7dff6bf271b27ee9b5912a97242e3caf125885b/bcrypt-4.3.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08bacc884fd302b611226c01014eca277d48f0a05187666bca23aac0dad6fe24", size = 279158, upload-time = "2025-02-28T01:23:34.161Z" }, + { url = "https://files.pythonhosted.org/packages/9b/5d/805ef1a749c965c46b28285dfb5cd272a7ed9fa971f970435a5133250182/bcrypt-4.3.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6746e6fec103fcd509b96bacdfdaa2fbde9a553245dbada284435173a6f1aef", size = 284285, upload-time = "2025-02-28T01:23:35.765Z" }, + { url = "https://files.pythonhosted.org/packages/ab/2b/698580547a4a4988e415721b71eb45e80c879f0fb04a62da131f45987b96/bcrypt-4.3.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:afe327968aaf13fc143a56a3360cb27d4ad0345e34da12c7290f1b00b8fe9a8b", size = 279583, upload-time = "2025-02-28T01:23:38.021Z" }, + { url = "https://files.pythonhosted.org/packages/f2/87/62e1e426418204db520f955ffd06f1efd389feca893dad7095bf35612eec/bcrypt-4.3.0-cp39-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:d9af79d322e735b1fc33404b5765108ae0ff232d4b54666d46730f8ac1a43676", size = 297896, upload-time = "2025-02-28T01:23:39.575Z" }, + { url = "https://files.pythonhosted.org/packages/cb/c6/8fedca4c2ada1b6e889c52d2943b2f968d3427e5d65f595620ec4c06fa2f/bcrypt-4.3.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f1e3ffa1365e8702dc48c8b360fef8d7afeca482809c5e45e653af82ccd088c1", size = 284492, upload-time = "2025-02-28T01:23:40.901Z" }, + { url = "https://files.pythonhosted.org/packages/4d/4d/c43332dcaaddb7710a8ff5269fcccba97ed3c85987ddaa808db084267b9a/bcrypt-4.3.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:3004df1b323d10021fda07a813fd33e0fd57bef0e9a480bb143877f6cba996fe", size = 279213, upload-time = "2025-02-28T01:23:42.653Z" }, + { url = "https://files.pythonhosted.org/packages/dc/7f/1e36379e169a7df3a14a1c160a49b7b918600a6008de43ff20d479e6f4b5/bcrypt-4.3.0-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:531457e5c839d8caea9b589a1bcfe3756b0547d7814e9ce3d437f17da75c32b0", size = 284162, upload-time = "2025-02-28T01:23:43.964Z" }, + { url = "https://files.pythonhosted.org/packages/1c/0a/644b2731194b0d7646f3210dc4d80c7fee3ecb3a1f791a6e0ae6bb8684e3/bcrypt-4.3.0-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:17a854d9a7a476a89dcef6c8bd119ad23e0f82557afbd2c442777a16408e614f", size = 312856, upload-time = "2025-02-28T01:23:46.011Z" }, + { url = "https://files.pythonhosted.org/packages/dc/62/2a871837c0bb6ab0c9a88bf54de0fc021a6a08832d4ea313ed92a669d437/bcrypt-4.3.0-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:6fb1fd3ab08c0cbc6826a2e0447610c6f09e983a281b919ed721ad32236b8b23", size = 316726, upload-time = "2025-02-28T01:23:47.575Z" }, + { url = "https://files.pythonhosted.org/packages/0c/a1/9898ea3faac0b156d457fd73a3cb9c2855c6fd063e44b8522925cdd8ce46/bcrypt-4.3.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:e965a9c1e9a393b8005031ff52583cedc15b7884fce7deb8b0346388837d6cfe", size = 343664, upload-time = "2025-02-28T01:23:49.059Z" }, + { url = "https://files.pythonhosted.org/packages/40/f2/71b4ed65ce38982ecdda0ff20c3ad1b15e71949c78b2c053df53629ce940/bcrypt-4.3.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:79e70b8342a33b52b55d93b3a59223a844962bef479f6a0ea318ebbcadf71505", size = 363128, upload-time = "2025-02-28T01:23:50.399Z" }, + { url = "https://files.pythonhosted.org/packages/11/99/12f6a58eca6dea4be992d6c681b7ec9410a1d9f5cf368c61437e31daa879/bcrypt-4.3.0-cp39-abi3-win32.whl", hash = "sha256:b4d4e57f0a63fd0b358eb765063ff661328f69a04494427265950c71b992a39a", size = 160598, upload-time = "2025-02-28T01:23:51.775Z" }, + { url = "https://files.pythonhosted.org/packages/a9/cf/45fb5261ece3e6b9817d3d82b2f343a505fd58674a92577923bc500bd1aa/bcrypt-4.3.0-cp39-abi3-win_amd64.whl", hash = "sha256:e53e074b120f2877a35cc6c736b8eb161377caae8925c17688bd46ba56daaa5b", size = 152799, upload-time = "2025-02-28T01:23:53.139Z" }, + { url = "https://files.pythonhosted.org/packages/55/2d/0c7e5ab0524bf1a443e34cdd3926ec6f5879889b2f3c32b2f5074e99ed53/bcrypt-4.3.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c950d682f0952bafcceaf709761da0a32a942272fad381081b51096ffa46cea1", size = 275367, upload-time = "2025-02-28T01:23:54.578Z" }, + { url = "https://files.pythonhosted.org/packages/10/4f/f77509f08bdff8806ecc4dc472b6e187c946c730565a7470db772d25df70/bcrypt-4.3.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:107d53b5c67e0bbc3f03ebf5b030e0403d24dda980f8e244795335ba7b4a027d", size = 280644, upload-time = "2025-02-28T01:23:56.547Z" }, + { url = "https://files.pythonhosted.org/packages/35/18/7d9dc16a3a4d530d0a9b845160e9e5d8eb4f00483e05d44bb4116a1861da/bcrypt-4.3.0-pp310-pypy310_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:b693dbb82b3c27a1604a3dff5bfc5418a7e6a781bb795288141e5f80cf3a3492", size = 274881, upload-time = "2025-02-28T01:23:57.935Z" }, + { url = "https://files.pythonhosted.org/packages/df/c4/ae6921088adf1e37f2a3a6a688e72e7d9e45fdd3ae5e0bc931870c1ebbda/bcrypt-4.3.0-pp310-pypy310_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:b6354d3760fcd31994a14c89659dee887f1351a06e5dac3c1142307172a79f90", size = 280203, upload-time = "2025-02-28T01:23:59.331Z" }, + { url = "https://files.pythonhosted.org/packages/4c/b1/1289e21d710496b88340369137cc4c5f6ee036401190ea116a7b4ae6d32a/bcrypt-4.3.0-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:a839320bf27d474e52ef8cb16449bb2ce0ba03ca9f44daba6d93fa1d8828e48a", size = 275103, upload-time = "2025-02-28T01:24:00.764Z" }, + { url = "https://files.pythonhosted.org/packages/94/41/19be9fe17e4ffc5d10b7b67f10e459fc4eee6ffe9056a88de511920cfd8d/bcrypt-4.3.0-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:bdc6a24e754a555d7316fa4774e64c6c3997d27ed2d1964d55920c7c227bc4ce", size = 280513, upload-time = "2025-02-28T01:24:02.243Z" }, + { url = "https://files.pythonhosted.org/packages/aa/73/05687a9ef89edebdd8ad7474c16d8af685eb4591c3c38300bb6aad4f0076/bcrypt-4.3.0-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:55a935b8e9a1d2def0626c4269db3fcd26728cbff1e84f0341465c31c4ee56d8", size = 274685, upload-time = "2025-02-28T01:24:04.512Z" }, + { url = "https://files.pythonhosted.org/packages/63/13/47bba97924ebe86a62ef83dc75b7c8a881d53c535f83e2c54c4bd701e05c/bcrypt-4.3.0-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:57967b7a28d855313a963aaea51bf6df89f833db4320da458e5b3c5ab6d4c938", size = 280110, upload-time = "2025-02-28T01:24:05.896Z" }, +] + +[[package]] +name = "blosc2" +version = "2.5.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", + "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "msgpack", marker = "python_full_version < '3.10'" }, + { name = "ndindex", marker = "python_full_version < '3.10'" }, + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "py-cpuinfo", marker = "python_full_version < '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f7/60/5bc8601f8ffcd5d8787b346898de8a0b454d031c3e158e3bbc312003984e/blosc2-2.5.1.tar.gz", hash = "sha256:47d5df50e7286edf81e629ece35f87f13f55c13c5e8545832188c420c75d1659", size = 4676483, upload-time = "2024-01-25T12:31:31.168Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b2/75/4511f1f9cea0aad8c5464736720a9de1e762e60e359cde6b7d69186e97b0/blosc2-2.5.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c861262b7fe317c1614a9b59b6c9edf409532b4a6aaf5b2f4ad0d79c6f800b57", size = 4417584, upload-time = "2024-01-25T12:30:31.487Z" }, + { url = "https://files.pythonhosted.org/packages/c0/8a/c7ce322f90750eb7fdde0948e5c6b9c47ed03e276f2481b701f9d2360d3a/blosc2-2.5.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f35b5d69a7a41e9d5054297d2540c25f8af5ea3c62e4a80ca7359292d783c04", size = 3471945, upload-time = "2024-01-25T12:30:34.745Z" }, + { url = "https://files.pythonhosted.org/packages/32/72/32bbaf583eea51b27c91ddb145de017d970ec0a835ec70e966925b00c9cf/blosc2-2.5.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:546fa39f397dd54b13d7c42a4f890afaf16c70fe478712070942d464c440ce03", size = 4210024, upload-time = "2024-01-25T12:30:36.556Z" }, + { url = "https://files.pythonhosted.org/packages/a5/8c/d4ab68a40004f93c1fd20dceb1899e54477425542bffa1f5ebab2647956f/blosc2-2.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5455af77e7e94159bb4966cae554f232ca2d52bb80cd3f878ecef39cf569da2a", size = 4374211, upload-time = "2024-01-25T12:30:38.355Z" }, + { url = "https://files.pythonhosted.org/packages/16/7d/c81b1caa0aded9f3e63c4dbab7a334681ded12ad80a18de34e7199939df5/blosc2-2.5.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b4dc4f595bf95c350c50bb77a8749cdd08a5dc2bdf3bdb18983d49a52d60b595", size = 4467025, upload-time = "2024-01-25T12:30:40.682Z" }, + { url = "https://files.pythonhosted.org/packages/9b/cd/56150f9367516f039b62923a5cb243771e2a1f440de0232b195f6e79f1ab/blosc2-2.5.1-cp310-cp310-win32.whl", hash = "sha256:873483bd5c6afb8d139039180ee57b74373232e87b032cb80389fd8bb883ea8e", size = 1948573, upload-time = "2024-01-25T12:30:43.019Z" }, + { url = "https://files.pythonhosted.org/packages/67/ff/0cf994e434b5ae860546cfe6941c58bdcdc27ed10009caffac9a29b66651/blosc2-2.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:d5a7ef00b82fbca069e949335f9c92ce7cbe2039a9fa2e2bd4f5f418043d6262", size = 2343858, upload-time = "2024-01-25T12:30:44.621Z" }, + { url = "https://files.pythonhosted.org/packages/c3/f4/25a82b7191109beb0fc20c580f35667a2e86087ebac2f6a9e50469f618d7/blosc2-2.5.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:da826d42d616f8a939f27e1501b40e764fded66bc80177eeaefcebdbf3b3afb8", size = 4419509, upload-time = "2024-01-25T12:30:46.347Z" }, + { url = "https://files.pythonhosted.org/packages/03/50/b1d2bad6b9f77c3540b511b5dee77f213c8b179e942bbc34f5c410b92ede/blosc2-2.5.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ae2e0c5dc8561a6b17842ee4320b49621434c20e622c9e9f5c67c9c6eb3b06a3", size = 3472870, upload-time = "2024-01-25T12:30:48.698Z" }, + { url = "https://files.pythonhosted.org/packages/17/26/d34d521fc60b164738d986144642c58675bcdc344cc9fbb8c08e58bb11ab/blosc2-2.5.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:af3cab9c12a4364c643266ee7d9583b526c0f484a291d72ec6efb09ea7ffbbf9", size = 4208463, upload-time = "2024-01-25T12:30:51.019Z" }, + { url = "https://files.pythonhosted.org/packages/2a/00/35169a0765044be69a3bfb73441ff8b9ea05d92d4660be622bbf90c46913/blosc2-2.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22f03a723130cf07e4309fe34b1360c868f4376e862f8ff664eb40d019fdd3f6", size = 4371942, upload-time = "2024-01-25T12:30:53.304Z" }, + { url = "https://files.pythonhosted.org/packages/8f/9b/923e29af25f4c34b5b331829a87bc8397b18e8a361551230b70e6b0a785a/blosc2-2.5.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0fd109eef815ea1e50fde4f676388aa2f3bb5543502d125fb63f16ec7a014464", size = 4468495, upload-time = "2024-01-25T12:30:55.165Z" }, + { url = "https://files.pythonhosted.org/packages/9f/39/21d6d1dc00d765f5c1671f8c0b323096f0dde360e8e1d8005160679b4831/blosc2-2.5.1-cp311-cp311-win32.whl", hash = "sha256:1a3edc3256bad04d3db30c9de7eac3a820f96e741fc754cdabb6a9991e5c37e8", size = 1948151, upload-time = "2024-01-25T12:30:57.515Z" }, + { url = "https://files.pythonhosted.org/packages/d1/48/7d4be4e57342ec60c05d11478257b235cf33dc96c31049fb47e6ae98b652/blosc2-2.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:e7499e277c13334d54f84e74f429f32341f99f7b978deaf9a7c2e963904cb48c", size = 2344506, upload-time = "2024-01-25T12:30:59.641Z" }, + { url = "https://files.pythonhosted.org/packages/5b/4d/00824754a3b5b5c6ffb92a043b5122be6202039fc76a25fa913fe0d4e235/blosc2-2.5.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ab849d3adaeb035f2f16cf495cff1792b28d58dfb3de21b9459ee355c6bb8df3", size = 4414447, upload-time = "2024-01-25T12:31:01.39Z" }, + { url = "https://files.pythonhosted.org/packages/9b/21/9a887c9fdc46a5cfe4aa250eac4ed4f18213bf1996e113c1d1c662e31678/blosc2-2.5.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:dd66e60dafcc93d4c1f815d726d76f9fb067ecc9106a6c661010e709135c79ce", size = 3470989, upload-time = "2024-01-25T12:31:03.626Z" }, + { url = "https://files.pythonhosted.org/packages/92/8d/b13ea33ea4d5da344d1170638b2d7b3cc63a921b97f9a8184128fd78aacd/blosc2-2.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb5fcd1775b3884d9825aa51fb45253f45cfa21c77f4135fad5dc5db710c2a34", size = 4190080, upload-time = "2024-01-25T12:31:06.036Z" }, + { url = "https://files.pythonhosted.org/packages/33/bf/52c8385aa71ed8c42296016d48c80dcc41dd005e951a83970bde4e6d4ff2/blosc2-2.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19f79071a336fcf1eda01cd0171291a4ab82b16cf9a15d2b4d26c010146f13b5", size = 4355536, upload-time = "2024-01-25T12:31:07.839Z" }, + { url = "https://files.pythonhosted.org/packages/78/21/f1815f711f98c04eba5116d55041b2f64e17e8a9437d7c832d1168ed2fa8/blosc2-2.5.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:956a63231f1b448803e9b4bc3e704ea424c89fc14418d99093472c74f19c19e1", size = 4448554, upload-time = "2024-01-25T12:31:09.514Z" }, + { url = "https://files.pythonhosted.org/packages/a1/e6/e05e987db27986ca8bdaaf442b94212e116a1eb937a8cd35250548704aa6/blosc2-2.5.1-cp312-cp312-win32.whl", hash = "sha256:5856e57e0e81f9018f1a12e803b9f768fa5533175092d72d165ac60069c7d2ab", size = 1940131, upload-time = "2024-01-25T12:31:12.02Z" }, + { url = "https://files.pythonhosted.org/packages/29/80/871cf959e5e0d3d2a177caf7b9f4b714850a50c33bb5cedd86a95c6e05b2/blosc2-2.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:585d780c5e85f251dec72b75a47666e4a261dbfe1d228769bca545e9fe07f480", size = 2338243, upload-time = "2024-01-25T12:31:13.967Z" }, + { url = "https://files.pythonhosted.org/packages/c9/4b/799dcec670a1d511d11a40e919241c26a273cfd2305a4f3fe7444c39758a/blosc2-2.5.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0cb9a6ac1abc466c12bdc90052f17545512de8f854e672a1ea4d2b40292323f5", size = 4417609, upload-time = "2024-01-25T12:31:15.635Z" }, + { url = "https://files.pythonhosted.org/packages/07/cb/e97de5b2c40b6c2106d5b68c1d823707a16386fc08781a6c7c609000866e/blosc2-2.5.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3def4650faa1db43143d821228ef58797108cc95d6698c4b1581909cc2b149ca", size = 3471971, upload-time = "2024-01-25T12:31:18.231Z" }, + { url = "https://files.pythonhosted.org/packages/65/c4/0c9740c4f5efb7adde87ed8b5af88c171a3ec007df912cc2fbfb2736963d/blosc2-2.5.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf6efecc1a22da26c73ff5c60d0dc086db1e7edcceb6b360dd193cda893bef28", size = 4209984, upload-time = "2024-01-25T12:31:20.855Z" }, + { url = "https://files.pythonhosted.org/packages/a6/e2/a1367ad174006e5625a1c8ef1b526fc135adc6f546bfc46264ac8e508ebe/blosc2-2.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b473472b977b770aab3bf20d0feeee84ecd5bb8b15a675287e090ce818c1cd40", size = 4374484, upload-time = "2024-01-25T12:31:22.587Z" }, + { url = "https://files.pythonhosted.org/packages/62/88/a185ab2a50b930011396b601ae8e82e83dfa24597e5f1fd91f483f178a94/blosc2-2.5.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7afe59d35d93bf8da7db8de43f4d8aef277514de43953c1e5e416ca839b9023a", size = 4466917, upload-time = "2024-01-25T12:31:24.387Z" }, + { url = "https://files.pythonhosted.org/packages/b5/7c/6a7d46a6094a100e1bdfba7e1df584971efea00732006fdddcf0320d4846/blosc2-2.5.1-cp39-cp39-win32.whl", hash = "sha256:4315ae8d467fe91efa0dbe22004e967008f5fe021ebb3945518f5213d7c4511f", size = 1948282, upload-time = "2024-01-25T12:31:26.074Z" }, + { url = "https://files.pythonhosted.org/packages/5c/c1/f80115c66a181e2ff18027818d3e1f37a3d5133b350b3e25189e53e28cd8/blosc2-2.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:73eb5e569a91fbe67f7dd78efe6a1ca9a54afff2c847db5dfa675bfd6a424f60", size = 2343778, upload-time = "2024-01-25T12:31:27.669Z" }, +] + +[[package]] +name = "blosc2" +version = "3.5.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "msgpack", marker = "python_full_version >= '3.10'" }, + { name = "ndindex", marker = "python_full_version >= '3.10'" }, + { name = "numexpr", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10' and platform_machine != 'wasm32'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "platformdirs", marker = "python_full_version >= '3.10'" }, + { name = "py-cpuinfo", marker = "python_full_version >= '3.10' and platform_machine != 'wasm32'" }, + { name = "requests", marker = "python_full_version >= '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/10/a0/1abec67127972fabf07bc1b7208324399fb25576ba3a2104738dbd40fc8a/blosc2-3.5.1.tar.gz", hash = "sha256:5d72f7a9a8b3b523c588be9d66e9e7f2463483716c4c01e5056c1f7e37167f85", size = 3653626, upload-time = "2025-07-02T11:47:16.4Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/55/4c/89aa228bf6e64b0daa1b7e485d404601e8e136c3834f87909f2803cb60fa/blosc2-3.5.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ff031df2707cd7143b7c744bf10c55932151001cc5ff9d79a899714714732a2d", size = 4001801, upload-time = "2025-07-02T11:46:48.607Z" }, + { url = "https://files.pythonhosted.org/packages/fe/d3/22581f254299c27a81a2fb2356665e15fc0e7186f626e508d82514d22b26/blosc2-3.5.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0fc7976024a89d490911ce9ef78968369acca908f0f771cf00e072a457ee342d", size = 3376036, upload-time = "2025-07-02T11:46:50.673Z" }, + { url = "https://files.pythonhosted.org/packages/24/f1/c4112715dece9e0eb837f63c53ce1cd5e889afbe19712222ef0a5da3690d/blosc2-3.5.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0fcc6c64315121f02555a398e6fbaf4b71edc39a4ca7567e089ce1af7288e9ed", size = 4291062, upload-time = "2025-07-02T11:46:51.823Z" }, + { url = "https://files.pythonhosted.org/packages/84/a2/8019187fb5a1789203dd96eea0d4311bc56f3386ddfe9e723357acb8a7bd/blosc2-3.5.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d3174273decf69b9e61b2a57d4cad5bf651de04d22526568f5a5e3036631831f", size = 4433984, upload-time = "2025-07-02T11:46:53.288Z" }, + { url = "https://files.pythonhosted.org/packages/a1/d7/e8e98d5a2252d8aafd84a4a1431bd44612159ce339dd9a2199087998d8ea/blosc2-3.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:a4dcaf581cd7ec91d91f379e7e3dc7d5dd6c300e88ae162b04b106d21f10f5c1", size = 2224498, upload-time = "2025-07-02T11:46:54.988Z" }, + { url = "https://files.pythonhosted.org/packages/fa/18/2001026c7bdac8fb3d9df6f31d3c4e2a2f22f73870509ddd163e36b0e521/blosc2-3.5.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ebf860878dd7a4fb41dcb90b1c6b3c5db7e34dc64ab51bea3679534af4a54a4a", size = 4004794, upload-time = "2025-07-02T11:46:56.012Z" }, + { url = "https://files.pythonhosted.org/packages/a4/4e/0f94eb790fb86bfd0f4d92496bc515db849987a7b9cbb10c49a9cf3a0037/blosc2-3.5.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1a9fc80970d5bb135bd9579db26d96ec79739bd1f187bbaf52e04102e7c664de", size = 3379124, upload-time = "2025-07-02T11:46:57.958Z" }, + { url = "https://files.pythonhosted.org/packages/ee/4e/d3d80033a20e97a1d5c3eccfecce343144407334e8b7f17b1532987a4974/blosc2-3.5.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fcf6658546da153fc8537dbf8edab1b22d6cedba32ec8c2a9a4165e450375b28", size = 4295187, upload-time = "2025-07-02T11:46:59.167Z" }, + { url = "https://files.pythonhosted.org/packages/a6/31/171ed90aa74936f1335cb471d95915232328b280d4888e1a8c9cca1fd3f0/blosc2-3.5.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d77e0abe67675ec21ce812a4da3d01406dd4942c8929a5a78d91b2f558dd8c9e", size = 4437993, upload-time = "2025-07-02T11:47:00.667Z" }, + { url = "https://files.pythonhosted.org/packages/b4/59/e3fb8114b369a6f7467e642e7e9818fb77ca47a177de767eb2414f8678ec/blosc2-3.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:0e6f5ccfb817363191577dd0e40839788f664891908b82c2dcd969fb37e0e954", size = 2222769, upload-time = "2025-07-02T11:47:02.01Z" }, + { url = "https://files.pythonhosted.org/packages/d4/ab/bbc1771dc66815277c3d3e316d0f2864209bc15421608ee13ce955b9de3b/blosc2-3.5.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:780213c917d9ac28b52a09ac82baa761262e8421688937b67f6516987a96fc58", size = 4012189, upload-time = "2025-07-02T11:47:03.343Z" }, + { url = "https://files.pythonhosted.org/packages/20/84/dafbb363539313c5d5e2f4c082c42a652c5767831e7e1fe77eb509aed73e/blosc2-3.5.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6e3d1d0885e955e184efae81168448106644d5a0a60c0911b98e94fe9d756fa9", size = 3372462, upload-time = "2025-07-02T11:47:05.053Z" }, + { url = "https://files.pythonhosted.org/packages/07/7f/8e77b054ce2eff7b7c9810378cfcc78f73a4e45c2bf122833395f5dce61d/blosc2-3.5.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d7c23e48414283dcfa5676abc6a4be9fb92a7b372a20f7acf90438abc69a746e", size = 4278243, upload-time = "2025-07-02T11:47:06.757Z" }, + { url = "https://files.pythonhosted.org/packages/a6/fd/df0d0c7aec2d135b9c8df9d3d8136c84d614d04595f051b1f5b8aeab238d/blosc2-3.5.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5df464652ddcae9ef8d8b3354ad224b1e147187dde5b6470e0e9f95bec328756", size = 4420536, upload-time = "2025-07-02T11:47:07.974Z" }, + { url = "https://files.pythonhosted.org/packages/6b/64/a7497c8ba3aceed462d9cbe8227aeee20fbf77415702a0ced11a03fd0d5a/blosc2-3.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:530965c444186bfb92a4406ab4c2d801939df35a5c58658131000f68ce1a37ec", size = 2212429, upload-time = "2025-07-02T11:47:09.045Z" }, + { url = "https://files.pythonhosted.org/packages/c1/17/38adc448a44c8d0e6f3700de4c072d5cbf3cdd7dffdfe62ccf179c985641/blosc2-3.5.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:44b4e51fd0b5a7e6ccae8053e133037f5984f6990a1e9b787376f4ec42aaf5bf", size = 4010715, upload-time = "2025-07-02T11:47:10.49Z" }, + { url = "https://files.pythonhosted.org/packages/0c/3b/bd2803d030c204984f8b14ce9919bcb67b6582141898a28887ae1fa58d80/blosc2-3.5.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b59805aa56ff1f9e6e4ba2f293e54cdf356b64db983bb019dbdbac72f88f2e38", size = 3371665, upload-time = "2025-07-02T11:47:11.651Z" }, + { url = "https://files.pythonhosted.org/packages/2b/c8/b86f3ecfecff76cab9c3c1f54fcbb05ab654b6d0a940b9b614b896f8105f/blosc2-3.5.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:485ca015db7352fa0e3b78b912c66ec495d60b94cab36a82abfb9f87715e6abd", size = 4280046, upload-time = "2025-07-02T11:47:12.913Z" }, + { url = "https://files.pythonhosted.org/packages/c9/38/8815054e054e45fda3c9d1e25ac77e6387d10d8e33c64bcf79f432b3c4fa/blosc2-3.5.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f88cfa1f1d64d77278c7fae0ab8c42291b7b2e8f36fcee154a0c55388e697fe9", size = 4422773, upload-time = "2025-07-02T11:47:14.184Z" }, + { url = "https://files.pythonhosted.org/packages/b1/f0/55b5090c8fb6e9a12810cf141cd59875718148a78f62a4da818045f7e4b6/blosc2-3.5.1-cp313-cp313-win_amd64.whl", hash = "sha256:9d36c4a8489c0f8719040a7543918e2701821340b8643d508c450d0d012259bf", size = 2213487, upload-time = "2025-07-02T11:47:15.297Z" }, +] + +[[package]] +name = "certifi" +version = "2025.7.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/de/8a/c729b6b60c66a38f590c4e774decc4b2ec7b0576be8f1aa984a53ffa812a/certifi-2025.7.9.tar.gz", hash = "sha256:c1d2ec05395148ee10cf672ffc28cd37ea0ab0d99f9cc74c43e588cbd111b079", size = 160386, upload-time = "2025-07-09T02:13:58.874Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/66/f3/80a3f974c8b535d394ff960a11ac20368e06b736da395b551a49ce950cce/certifi-2025.7.9-py3-none-any.whl", hash = "sha256:d842783a14f8fdd646895ac26f719a061408834473cfc10203f6a575beb15d39", size = 159230, upload-time = "2025-07-09T02:13:57.007Z" }, +] + +[[package]] +name = "cffi" +version = "1.17.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621, upload-time = "2024-09-04T20:45:21.852Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/90/07/f44ca684db4e4f08a3fdc6eeb9a0d15dc6883efc7b8c90357fdbf74e186c/cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14", size = 182191, upload-time = "2024-09-04T20:43:30.027Z" }, + { url = "https://files.pythonhosted.org/packages/08/fd/cc2fedbd887223f9f5d170c96e57cbf655df9831a6546c1727ae13fa977a/cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67", size = 178592, upload-time = "2024-09-04T20:43:32.108Z" }, + { url = "https://files.pythonhosted.org/packages/de/cc/4635c320081c78d6ffc2cab0a76025b691a91204f4aa317d568ff9280a2d/cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382", size = 426024, upload-time = "2024-09-04T20:43:34.186Z" }, + { url = "https://files.pythonhosted.org/packages/b6/7b/3b2b250f3aab91abe5f8a51ada1b717935fdaec53f790ad4100fe2ec64d1/cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702", size = 448188, upload-time = "2024-09-04T20:43:36.286Z" }, + { url = "https://files.pythonhosted.org/packages/d3/48/1b9283ebbf0ec065148d8de05d647a986c5f22586b18120020452fff8f5d/cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3", size = 455571, upload-time = "2024-09-04T20:43:38.586Z" }, + { url = "https://files.pythonhosted.org/packages/40/87/3b8452525437b40f39ca7ff70276679772ee7e8b394934ff60e63b7b090c/cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6", size = 436687, upload-time = "2024-09-04T20:43:40.084Z" }, + { url = "https://files.pythonhosted.org/packages/8d/fb/4da72871d177d63649ac449aec2e8a29efe0274035880c7af59101ca2232/cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17", size = 446211, upload-time = "2024-09-04T20:43:41.526Z" }, + { url = "https://files.pythonhosted.org/packages/ab/a0/62f00bcb411332106c02b663b26f3545a9ef136f80d5df746c05878f8c4b/cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8", size = 461325, upload-time = "2024-09-04T20:43:43.117Z" }, + { url = "https://files.pythonhosted.org/packages/36/83/76127035ed2e7e27b0787604d99da630ac3123bfb02d8e80c633f218a11d/cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e", size = 438784, upload-time = "2024-09-04T20:43:45.256Z" }, + { url = "https://files.pythonhosted.org/packages/21/81/a6cd025db2f08ac88b901b745c163d884641909641f9b826e8cb87645942/cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be", size = 461564, upload-time = "2024-09-04T20:43:46.779Z" }, + { url = "https://files.pythonhosted.org/packages/f8/fe/4d41c2f200c4a457933dbd98d3cf4e911870877bd94d9656cc0fcb390681/cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c", size = 171804, upload-time = "2024-09-04T20:43:48.186Z" }, + { url = "https://files.pythonhosted.org/packages/d1/b6/0b0f5ab93b0df4acc49cae758c81fe4e5ef26c3ae2e10cc69249dfd8b3ab/cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15", size = 181299, upload-time = "2024-09-04T20:43:49.812Z" }, + { url = "https://files.pythonhosted.org/packages/6b/f4/927e3a8899e52a27fa57a48607ff7dc91a9ebe97399b357b85a0c7892e00/cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401", size = 182264, upload-time = "2024-09-04T20:43:51.124Z" }, + { url = "https://files.pythonhosted.org/packages/6c/f5/6c3a8efe5f503175aaddcbea6ad0d2c96dad6f5abb205750d1b3df44ef29/cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf", size = 178651, upload-time = "2024-09-04T20:43:52.872Z" }, + { url = "https://files.pythonhosted.org/packages/94/dd/a3f0118e688d1b1a57553da23b16bdade96d2f9bcda4d32e7d2838047ff7/cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4", size = 445259, upload-time = "2024-09-04T20:43:56.123Z" }, + { url = "https://files.pythonhosted.org/packages/2e/ea/70ce63780f096e16ce8588efe039d3c4f91deb1dc01e9c73a287939c79a6/cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41", size = 469200, upload-time = "2024-09-04T20:43:57.891Z" }, + { url = "https://files.pythonhosted.org/packages/1c/a0/a4fa9f4f781bda074c3ddd57a572b060fa0df7655d2a4247bbe277200146/cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1", size = 477235, upload-time = "2024-09-04T20:44:00.18Z" }, + { url = "https://files.pythonhosted.org/packages/62/12/ce8710b5b8affbcdd5c6e367217c242524ad17a02fe5beec3ee339f69f85/cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6", size = 459721, upload-time = "2024-09-04T20:44:01.585Z" }, + { url = "https://files.pythonhosted.org/packages/ff/6b/d45873c5e0242196f042d555526f92aa9e0c32355a1be1ff8c27f077fd37/cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d", size = 467242, upload-time = "2024-09-04T20:44:03.467Z" }, + { url = "https://files.pythonhosted.org/packages/1a/52/d9a0e523a572fbccf2955f5abe883cfa8bcc570d7faeee06336fbd50c9fc/cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6", size = 477999, upload-time = "2024-09-04T20:44:05.023Z" }, + { url = "https://files.pythonhosted.org/packages/44/74/f2a2460684a1a2d00ca799ad880d54652841a780c4c97b87754f660c7603/cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f", size = 454242, upload-time = "2024-09-04T20:44:06.444Z" }, + { url = "https://files.pythonhosted.org/packages/f8/4a/34599cac7dfcd888ff54e801afe06a19c17787dfd94495ab0c8d35fe99fb/cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b", size = 478604, upload-time = "2024-09-04T20:44:08.206Z" }, + { url = "https://files.pythonhosted.org/packages/34/33/e1b8a1ba29025adbdcda5fb3a36f94c03d771c1b7b12f726ff7fef2ebe36/cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655", size = 171727, upload-time = "2024-09-04T20:44:09.481Z" }, + { url = "https://files.pythonhosted.org/packages/3d/97/50228be003bb2802627d28ec0627837ac0bf35c90cf769812056f235b2d1/cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0", size = 181400, upload-time = "2024-09-04T20:44:10.873Z" }, + { url = "https://files.pythonhosted.org/packages/5a/84/e94227139ee5fb4d600a7a4927f322e1d4aea6fdc50bd3fca8493caba23f/cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", size = 183178, upload-time = "2024-09-04T20:44:12.232Z" }, + { url = "https://files.pythonhosted.org/packages/da/ee/fb72c2b48656111c4ef27f0f91da355e130a923473bf5ee75c5643d00cca/cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", size = 178840, upload-time = "2024-09-04T20:44:13.739Z" }, + { url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803, upload-time = "2024-09-04T20:44:15.231Z" }, + { url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850, upload-time = "2024-09-04T20:44:17.188Z" }, + { url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729, upload-time = "2024-09-04T20:44:18.688Z" }, + { url = "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256, upload-time = "2024-09-04T20:44:20.248Z" }, + { url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424, upload-time = "2024-09-04T20:44:21.673Z" }, + { url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568, upload-time = "2024-09-04T20:44:23.245Z" }, + { url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736, upload-time = "2024-09-04T20:44:24.757Z" }, + { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448, upload-time = "2024-09-04T20:44:26.208Z" }, + { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976, upload-time = "2024-09-04T20:44:27.578Z" }, + { url = "https://files.pythonhosted.org/packages/8d/f8/dd6c246b148639254dad4d6803eb6a54e8c85c6e11ec9df2cffa87571dbe/cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", size = 182989, upload-time = "2024-09-04T20:44:28.956Z" }, + { url = "https://files.pythonhosted.org/packages/8b/f1/672d303ddf17c24fc83afd712316fda78dc6fce1cd53011b839483e1ecc8/cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", size = 178802, upload-time = "2024-09-04T20:44:30.289Z" }, + { url = "https://files.pythonhosted.org/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792, upload-time = "2024-09-04T20:44:32.01Z" }, + { url = "https://files.pythonhosted.org/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893, upload-time = "2024-09-04T20:44:33.606Z" }, + { url = "https://files.pythonhosted.org/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810, upload-time = "2024-09-04T20:44:35.191Z" }, + { url = "https://files.pythonhosted.org/packages/c7/8a/1d0e4a9c26e54746dc08c2c6c037889124d4f59dffd853a659fa545f1b40/cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", size = 471200, upload-time = "2024-09-04T20:44:36.743Z" }, + { url = "https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447, upload-time = "2024-09-04T20:44:38.492Z" }, + { url = "https://files.pythonhosted.org/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358, upload-time = "2024-09-04T20:44:40.046Z" }, + { url = "https://files.pythonhosted.org/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469, upload-time = "2024-09-04T20:44:41.616Z" }, + { url = "https://files.pythonhosted.org/packages/bf/ee/f94057fa6426481d663b88637a9a10e859e492c73d0384514a17d78ee205/cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", size = 172475, upload-time = "2024-09-04T20:44:43.733Z" }, + { url = "https://files.pythonhosted.org/packages/7c/fc/6a8cb64e5f0324877d503c854da15d76c1e50eb722e320b15345c4d0c6de/cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", size = 182009, upload-time = "2024-09-04T20:44:45.309Z" }, + { url = "https://files.pythonhosted.org/packages/b9/ea/8bb50596b8ffbc49ddd7a1ad305035daa770202a6b782fc164647c2673ad/cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16", size = 182220, upload-time = "2024-09-04T20:45:01.577Z" }, + { url = "https://files.pythonhosted.org/packages/ae/11/e77c8cd24f58285a82c23af484cf5b124a376b32644e445960d1a4654c3a/cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36", size = 178605, upload-time = "2024-09-04T20:45:03.837Z" }, + { url = "https://files.pythonhosted.org/packages/ed/65/25a8dc32c53bf5b7b6c2686b42ae2ad58743f7ff644844af7cdb29b49361/cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8", size = 424910, upload-time = "2024-09-04T20:45:05.315Z" }, + { url = "https://files.pythonhosted.org/packages/42/7a/9d086fab7c66bd7c4d0f27c57a1b6b068ced810afc498cc8c49e0088661c/cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576", size = 447200, upload-time = "2024-09-04T20:45:06.903Z" }, + { url = "https://files.pythonhosted.org/packages/da/63/1785ced118ce92a993b0ec9e0d0ac8dc3e5dbfbcaa81135be56c69cabbb6/cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87", size = 454565, upload-time = "2024-09-04T20:45:08.975Z" }, + { url = "https://files.pythonhosted.org/packages/74/06/90b8a44abf3556599cdec107f7290277ae8901a58f75e6fe8f970cd72418/cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0", size = 435635, upload-time = "2024-09-04T20:45:10.64Z" }, + { url = "https://files.pythonhosted.org/packages/bd/62/a1f468e5708a70b1d86ead5bab5520861d9c7eacce4a885ded9faa7729c3/cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3", size = 445218, upload-time = "2024-09-04T20:45:12.366Z" }, + { url = "https://files.pythonhosted.org/packages/5b/95/b34462f3ccb09c2594aa782d90a90b045de4ff1f70148ee79c69d37a0a5a/cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595", size = 460486, upload-time = "2024-09-04T20:45:13.935Z" }, + { url = "https://files.pythonhosted.org/packages/fc/fc/a1e4bebd8d680febd29cf6c8a40067182b64f00c7d105f8f26b5bc54317b/cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a", size = 437911, upload-time = "2024-09-04T20:45:15.696Z" }, + { url = "https://files.pythonhosted.org/packages/e6/c3/21cab7a6154b6a5ea330ae80de386e7665254835b9e98ecc1340b3a7de9a/cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e", size = 460632, upload-time = "2024-09-04T20:45:17.284Z" }, + { url = "https://files.pythonhosted.org/packages/cb/b5/fd9f8b5a84010ca169ee49f4e4ad6f8c05f4e3545b72ee041dbbcb159882/cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7", size = 171820, upload-time = "2024-09-04T20:45:18.762Z" }, + { url = "https://files.pythonhosted.org/packages/8c/52/b08750ce0bce45c143e1b5d7357ee8c55341b52bdef4b0f081af1eb248c2/cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662", size = 181290, upload-time = "2024-09-04T20:45:20.226Z" }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e4/33/89c2ced2b67d1c2a61c19c6751aa8902d46ce3dacb23600a283619f5a12d/charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63", size = 126367, upload-time = "2025-05-02T08:34:42.01Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/95/28/9901804da60055b406e1a1c5ba7aac1276fb77f1dde635aabfc7fd84b8ab/charset_normalizer-3.4.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7c48ed483eb946e6c04ccbe02c6b4d1d48e51944b6db70f697e089c193404941", size = 201818, upload-time = "2025-05-02T08:31:46.725Z" }, + { url = "https://files.pythonhosted.org/packages/d9/9b/892a8c8af9110935e5adcbb06d9c6fe741b6bb02608c6513983048ba1a18/charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2d318c11350e10662026ad0eb71bb51c7812fc8590825304ae0bdd4ac283acd", size = 144649, upload-time = "2025-05-02T08:31:48.889Z" }, + { url = "https://files.pythonhosted.org/packages/7b/a5/4179abd063ff6414223575e008593861d62abfc22455b5d1a44995b7c101/charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9cbfacf36cb0ec2897ce0ebc5d08ca44213af24265bd56eca54bee7923c48fd6", size = 155045, upload-time = "2025-05-02T08:31:50.757Z" }, + { url = "https://files.pythonhosted.org/packages/3b/95/bc08c7dfeddd26b4be8c8287b9bb055716f31077c8b0ea1cd09553794665/charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18dd2e350387c87dabe711b86f83c9c78af772c748904d372ade190b5c7c9d4d", size = 147356, upload-time = "2025-05-02T08:31:52.634Z" }, + { url = "https://files.pythonhosted.org/packages/a8/2d/7a5b635aa65284bf3eab7653e8b4151ab420ecbae918d3e359d1947b4d61/charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8075c35cd58273fee266c58c0c9b670947c19df5fb98e7b66710e04ad4e9ff86", size = 149471, upload-time = "2025-05-02T08:31:56.207Z" }, + { url = "https://files.pythonhosted.org/packages/ae/38/51fc6ac74251fd331a8cfdb7ec57beba8c23fd5493f1050f71c87ef77ed0/charset_normalizer-3.4.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5bf4545e3b962767e5c06fe1738f951f77d27967cb2caa64c28be7c4563e162c", size = 151317, upload-time = "2025-05-02T08:31:57.613Z" }, + { url = "https://files.pythonhosted.org/packages/b7/17/edee1e32215ee6e9e46c3e482645b46575a44a2d72c7dfd49e49f60ce6bf/charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7a6ab32f7210554a96cd9e33abe3ddd86732beeafc7a28e9955cdf22ffadbab0", size = 146368, upload-time = "2025-05-02T08:31:59.468Z" }, + { url = "https://files.pythonhosted.org/packages/26/2c/ea3e66f2b5f21fd00b2825c94cafb8c326ea6240cd80a91eb09e4a285830/charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:b33de11b92e9f75a2b545d6e9b6f37e398d86c3e9e9653c4864eb7e89c5773ef", size = 154491, upload-time = "2025-05-02T08:32:01.219Z" }, + { url = "https://files.pythonhosted.org/packages/52/47/7be7fa972422ad062e909fd62460d45c3ef4c141805b7078dbab15904ff7/charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:8755483f3c00d6c9a77f490c17e6ab0c8729e39e6390328e42521ef175380ae6", size = 157695, upload-time = "2025-05-02T08:32:03.045Z" }, + { url = "https://files.pythonhosted.org/packages/2f/42/9f02c194da282b2b340f28e5fb60762de1151387a36842a92b533685c61e/charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:68a328e5f55ec37c57f19ebb1fdc56a248db2e3e9ad769919a58672958e8f366", size = 154849, upload-time = "2025-05-02T08:32:04.651Z" }, + { url = "https://files.pythonhosted.org/packages/67/44/89cacd6628f31fb0b63201a618049be4be2a7435a31b55b5eb1c3674547a/charset_normalizer-3.4.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:21b2899062867b0e1fde9b724f8aecb1af14f2778d69aacd1a5a1853a597a5db", size = 150091, upload-time = "2025-05-02T08:32:06.719Z" }, + { url = "https://files.pythonhosted.org/packages/1f/79/4b8da9f712bc079c0f16b6d67b099b0b8d808c2292c937f267d816ec5ecc/charset_normalizer-3.4.2-cp310-cp310-win32.whl", hash = "sha256:e8082b26888e2f8b36a042a58307d5b917ef2b1cacab921ad3323ef91901c71a", size = 98445, upload-time = "2025-05-02T08:32:08.66Z" }, + { url = "https://files.pythonhosted.org/packages/7d/d7/96970afb4fb66497a40761cdf7bd4f6fca0fc7bafde3a84f836c1f57a926/charset_normalizer-3.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:f69a27e45c43520f5487f27627059b64aaf160415589230992cec34c5e18a509", size = 105782, upload-time = "2025-05-02T08:32:10.46Z" }, + { url = "https://files.pythonhosted.org/packages/05/85/4c40d00dcc6284a1c1ad5de5e0996b06f39d8232f1031cd23c2f5c07ee86/charset_normalizer-3.4.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:be1e352acbe3c78727a16a455126d9ff83ea2dfdcbc83148d2982305a04714c2", size = 198794, upload-time = "2025-05-02T08:32:11.945Z" }, + { url = "https://files.pythonhosted.org/packages/41/d9/7a6c0b9db952598e97e93cbdfcb91bacd89b9b88c7c983250a77c008703c/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa88ca0b1932e93f2d961bf3addbb2db902198dca337d88c89e1559e066e7645", size = 142846, upload-time = "2025-05-02T08:32:13.946Z" }, + { url = "https://files.pythonhosted.org/packages/66/82/a37989cda2ace7e37f36c1a8ed16c58cf48965a79c2142713244bf945c89/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d524ba3f1581b35c03cb42beebab4a13e6cdad7b36246bd22541fa585a56cccd", size = 153350, upload-time = "2025-05-02T08:32:15.873Z" }, + { url = "https://files.pythonhosted.org/packages/df/68/a576b31b694d07b53807269d05ec3f6f1093e9545e8607121995ba7a8313/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28a1005facc94196e1fb3e82a3d442a9d9110b8434fc1ded7a24a2983c9888d8", size = 145657, upload-time = "2025-05-02T08:32:17.283Z" }, + { url = "https://files.pythonhosted.org/packages/92/9b/ad67f03d74554bed3aefd56fe836e1623a50780f7c998d00ca128924a499/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdb20a30fe1175ecabed17cbf7812f7b804b8a315a25f24678bcdf120a90077f", size = 147260, upload-time = "2025-05-02T08:32:18.807Z" }, + { url = "https://files.pythonhosted.org/packages/a6/e6/8aebae25e328160b20e31a7e9929b1578bbdc7f42e66f46595a432f8539e/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f5d9ed7f254402c9e7d35d2f5972c9bbea9040e99cd2861bd77dc68263277c7", size = 149164, upload-time = "2025-05-02T08:32:20.333Z" }, + { url = "https://files.pythonhosted.org/packages/8b/f2/b3c2f07dbcc248805f10e67a0262c93308cfa149a4cd3d1fe01f593e5fd2/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:efd387a49825780ff861998cd959767800d54f8308936b21025326de4b5a42b9", size = 144571, upload-time = "2025-05-02T08:32:21.86Z" }, + { url = "https://files.pythonhosted.org/packages/60/5b/c3f3a94bc345bc211622ea59b4bed9ae63c00920e2e8f11824aa5708e8b7/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f0aa37f3c979cf2546b73e8222bbfa3dc07a641585340179d768068e3455e544", size = 151952, upload-time = "2025-05-02T08:32:23.434Z" }, + { url = "https://files.pythonhosted.org/packages/e2/4d/ff460c8b474122334c2fa394a3f99a04cf11c646da895f81402ae54f5c42/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e70e990b2137b29dc5564715de1e12701815dacc1d056308e2b17e9095372a82", size = 155959, upload-time = "2025-05-02T08:32:24.993Z" }, + { url = "https://files.pythonhosted.org/packages/a2/2b/b964c6a2fda88611a1fe3d4c400d39c66a42d6c169c924818c848f922415/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0c8c57f84ccfc871a48a47321cfa49ae1df56cd1d965a09abe84066f6853b9c0", size = 153030, upload-time = "2025-05-02T08:32:26.435Z" }, + { url = "https://files.pythonhosted.org/packages/59/2e/d3b9811db26a5ebf444bc0fa4f4be5aa6d76fc6e1c0fd537b16c14e849b6/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6b66f92b17849b85cad91259efc341dce9c1af48e2173bf38a85c6329f1033e5", size = 148015, upload-time = "2025-05-02T08:32:28.376Z" }, + { url = "https://files.pythonhosted.org/packages/90/07/c5fd7c11eafd561bb51220d600a788f1c8d77c5eef37ee49454cc5c35575/charset_normalizer-3.4.2-cp311-cp311-win32.whl", hash = "sha256:daac4765328a919a805fa5e2720f3e94767abd632ae410a9062dff5412bae65a", size = 98106, upload-time = "2025-05-02T08:32:30.281Z" }, + { url = "https://files.pythonhosted.org/packages/a8/05/5e33dbef7e2f773d672b6d79f10ec633d4a71cd96db6673625838a4fd532/charset_normalizer-3.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:e53efc7c7cee4c1e70661e2e112ca46a575f90ed9ae3fef200f2a25e954f4b28", size = 105402, upload-time = "2025-05-02T08:32:32.191Z" }, + { url = "https://files.pythonhosted.org/packages/d7/a4/37f4d6035c89cac7930395a35cc0f1b872e652eaafb76a6075943754f095/charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7", size = 199936, upload-time = "2025-05-02T08:32:33.712Z" }, + { url = "https://files.pythonhosted.org/packages/ee/8a/1a5e33b73e0d9287274f899d967907cd0bf9c343e651755d9307e0dbf2b3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3", size = 143790, upload-time = "2025-05-02T08:32:35.768Z" }, + { url = "https://files.pythonhosted.org/packages/66/52/59521f1d8e6ab1482164fa21409c5ef44da3e9f653c13ba71becdd98dec3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a", size = 153924, upload-time = "2025-05-02T08:32:37.284Z" }, + { url = "https://files.pythonhosted.org/packages/86/2d/fb55fdf41964ec782febbf33cb64be480a6b8f16ded2dbe8db27a405c09f/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214", size = 146626, upload-time = "2025-05-02T08:32:38.803Z" }, + { url = "https://files.pythonhosted.org/packages/8c/73/6ede2ec59bce19b3edf4209d70004253ec5f4e319f9a2e3f2f15601ed5f7/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a", size = 148567, upload-time = "2025-05-02T08:32:40.251Z" }, + { url = "https://files.pythonhosted.org/packages/09/14/957d03c6dc343c04904530b6bef4e5efae5ec7d7990a7cbb868e4595ee30/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd", size = 150957, upload-time = "2025-05-02T08:32:41.705Z" }, + { url = "https://files.pythonhosted.org/packages/0d/c8/8174d0e5c10ccebdcb1b53cc959591c4c722a3ad92461a273e86b9f5a302/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981", size = 145408, upload-time = "2025-05-02T08:32:43.709Z" }, + { url = "https://files.pythonhosted.org/packages/58/aa/8904b84bc8084ac19dc52feb4f5952c6df03ffb460a887b42615ee1382e8/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c", size = 153399, upload-time = "2025-05-02T08:32:46.197Z" }, + { url = "https://files.pythonhosted.org/packages/c2/26/89ee1f0e264d201cb65cf054aca6038c03b1a0c6b4ae998070392a3ce605/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b", size = 156815, upload-time = "2025-05-02T08:32:48.105Z" }, + { url = "https://files.pythonhosted.org/packages/fd/07/68e95b4b345bad3dbbd3a8681737b4338ff2c9df29856a6d6d23ac4c73cb/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d", size = 154537, upload-time = "2025-05-02T08:32:49.719Z" }, + { url = "https://files.pythonhosted.org/packages/77/1a/5eefc0ce04affb98af07bc05f3bac9094513c0e23b0562d64af46a06aae4/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f", size = 149565, upload-time = "2025-05-02T08:32:51.404Z" }, + { url = "https://files.pythonhosted.org/packages/37/a0/2410e5e6032a174c95e0806b1a6585eb21e12f445ebe239fac441995226a/charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c", size = 98357, upload-time = "2025-05-02T08:32:53.079Z" }, + { url = "https://files.pythonhosted.org/packages/6c/4f/c02d5c493967af3eda9c771ad4d2bbc8df6f99ddbeb37ceea6e8716a32bc/charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e", size = 105776, upload-time = "2025-05-02T08:32:54.573Z" }, + { url = "https://files.pythonhosted.org/packages/ea/12/a93df3366ed32db1d907d7593a94f1fe6293903e3e92967bebd6950ed12c/charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0", size = 199622, upload-time = "2025-05-02T08:32:56.363Z" }, + { url = "https://files.pythonhosted.org/packages/04/93/bf204e6f344c39d9937d3c13c8cd5bbfc266472e51fc8c07cb7f64fcd2de/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf", size = 143435, upload-time = "2025-05-02T08:32:58.551Z" }, + { url = "https://files.pythonhosted.org/packages/22/2a/ea8a2095b0bafa6c5b5a55ffdc2f924455233ee7b91c69b7edfcc9e02284/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e", size = 153653, upload-time = "2025-05-02T08:33:00.342Z" }, + { url = "https://files.pythonhosted.org/packages/b6/57/1b090ff183d13cef485dfbe272e2fe57622a76694061353c59da52c9a659/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1", size = 146231, upload-time = "2025-05-02T08:33:02.081Z" }, + { url = "https://files.pythonhosted.org/packages/e2/28/ffc026b26f441fc67bd21ab7f03b313ab3fe46714a14b516f931abe1a2d8/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c", size = 148243, upload-time = "2025-05-02T08:33:04.063Z" }, + { url = "https://files.pythonhosted.org/packages/c0/0f/9abe9bd191629c33e69e47c6ef45ef99773320e9ad8e9cb08b8ab4a8d4cb/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691", size = 150442, upload-time = "2025-05-02T08:33:06.418Z" }, + { url = "https://files.pythonhosted.org/packages/67/7c/a123bbcedca91d5916c056407f89a7f5e8fdfce12ba825d7d6b9954a1a3c/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0", size = 145147, upload-time = "2025-05-02T08:33:08.183Z" }, + { url = "https://files.pythonhosted.org/packages/ec/fe/1ac556fa4899d967b83e9893788e86b6af4d83e4726511eaaad035e36595/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b", size = 153057, upload-time = "2025-05-02T08:33:09.986Z" }, + { url = "https://files.pythonhosted.org/packages/2b/ff/acfc0b0a70b19e3e54febdd5301a98b72fa07635e56f24f60502e954c461/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff", size = 156454, upload-time = "2025-05-02T08:33:11.814Z" }, + { url = "https://files.pythonhosted.org/packages/92/08/95b458ce9c740d0645feb0e96cea1f5ec946ea9c580a94adfe0b617f3573/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b", size = 154174, upload-time = "2025-05-02T08:33:13.707Z" }, + { url = "https://files.pythonhosted.org/packages/78/be/8392efc43487ac051eee6c36d5fbd63032d78f7728cb37aebcc98191f1ff/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148", size = 149166, upload-time = "2025-05-02T08:33:15.458Z" }, + { url = "https://files.pythonhosted.org/packages/44/96/392abd49b094d30b91d9fbda6a69519e95802250b777841cf3bda8fe136c/charset_normalizer-3.4.2-cp313-cp313-win32.whl", hash = "sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7", size = 98064, upload-time = "2025-05-02T08:33:17.06Z" }, + { url = "https://files.pythonhosted.org/packages/e9/b0/0200da600134e001d91851ddc797809e2fe0ea72de90e09bec5a2fbdaccb/charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980", size = 105641, upload-time = "2025-05-02T08:33:18.753Z" }, + { url = "https://files.pythonhosted.org/packages/28/f8/dfb01ff6cc9af38552c69c9027501ff5a5117c4cc18dcd27cb5259fa1888/charset_normalizer-3.4.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:005fa3432484527f9732ebd315da8da8001593e2cf46a3d817669f062c3d9ed4", size = 201671, upload-time = "2025-05-02T08:34:12.696Z" }, + { url = "https://files.pythonhosted.org/packages/32/fb/74e26ee556a9dbfe3bd264289b67be1e6d616329403036f6507bb9f3f29c/charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e92fca20c46e9f5e1bb485887d074918b13543b1c2a1185e69bb8d17ab6236a7", size = 144744, upload-time = "2025-05-02T08:34:14.665Z" }, + { url = "https://files.pythonhosted.org/packages/ad/06/8499ee5aa7addc6f6d72e068691826ff093329fe59891e83b092ae4c851c/charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:50bf98d5e563b83cc29471fa114366e6806bc06bc7a25fd59641e41445327836", size = 154993, upload-time = "2025-05-02T08:34:17.134Z" }, + { url = "https://files.pythonhosted.org/packages/f1/a2/5e4c187680728219254ef107a6949c60ee0e9a916a5dadb148c7ae82459c/charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:721c76e84fe669be19c5791da68232ca2e05ba5185575086e384352e2c309597", size = 147382, upload-time = "2025-05-02T08:34:19.081Z" }, + { url = "https://files.pythonhosted.org/packages/4c/fe/56aca740dda674f0cc1ba1418c4d84534be51f639b5f98f538b332dc9a95/charset_normalizer-3.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82d8fd25b7f4675d0c47cf95b594d4e7b158aca33b76aa63d07186e13c0e0ab7", size = 149536, upload-time = "2025-05-02T08:34:21.073Z" }, + { url = "https://files.pythonhosted.org/packages/53/13/db2e7779f892386b589173dd689c1b1e304621c5792046edd8a978cbf9e0/charset_normalizer-3.4.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3daeac64d5b371dea99714f08ffc2c208522ec6b06fbc7866a450dd446f5c0f", size = 151349, upload-time = "2025-05-02T08:34:23.193Z" }, + { url = "https://files.pythonhosted.org/packages/69/35/e52ab9a276186f729bce7a0638585d2982f50402046e4b0faa5d2c3ef2da/charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dccab8d5fa1ef9bfba0590ecf4d46df048d18ffe3eec01eeb73a42e0d9e7a8ba", size = 146365, upload-time = "2025-05-02T08:34:25.187Z" }, + { url = "https://files.pythonhosted.org/packages/a6/d8/af7333f732fc2e7635867d56cb7c349c28c7094910c72267586947561b4b/charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:aaf27faa992bfee0264dc1f03f4c75e9fcdda66a519db6b957a3f826e285cf12", size = 154499, upload-time = "2025-05-02T08:34:27.359Z" }, + { url = "https://files.pythonhosted.org/packages/7a/3d/a5b2e48acef264d71e036ff30bcc49e51bde80219bb628ba3e00cf59baac/charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:eb30abc20df9ab0814b5a2524f23d75dcf83cde762c161917a2b4b7b55b1e518", size = 157735, upload-time = "2025-05-02T08:34:29.798Z" }, + { url = "https://files.pythonhosted.org/packages/85/d8/23e2c112532a29f3eef374375a8684a4f3b8e784f62b01da931186f43494/charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:c72fbbe68c6f32f251bdc08b8611c7b3060612236e960ef848e0a517ddbe76c5", size = 154786, upload-time = "2025-05-02T08:34:31.858Z" }, + { url = "https://files.pythonhosted.org/packages/c7/57/93e0169f08ecc20fe82d12254a200dfaceddc1c12a4077bf454ecc597e33/charset_normalizer-3.4.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:982bb1e8b4ffda883b3d0a521e23abcd6fd17418f6d2c4118d257a10199c0ce3", size = 150203, upload-time = "2025-05-02T08:34:33.88Z" }, + { url = "https://files.pythonhosted.org/packages/2c/9d/9bf2b005138e7e060d7ebdec7503d0ef3240141587651f4b445bdf7286c2/charset_normalizer-3.4.2-cp39-cp39-win32.whl", hash = "sha256:43e0933a0eff183ee85833f341ec567c0980dae57c464d8a508e1b2ceb336471", size = 98436, upload-time = "2025-05-02T08:34:35.907Z" }, + { url = "https://files.pythonhosted.org/packages/6d/24/5849d46cf4311bbf21b424c443b09b459f5b436b1558c04e45dbb7cc478b/charset_normalizer-3.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:d11b54acf878eef558599658b0ffca78138c8c3655cf4f3a4a673c437e67732e", size = 105772, upload-time = "2025-05-02T08:34:37.935Z" }, + { url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626, upload-time = "2025-05-02T08:34:40.053Z" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "comm" +version = "0.2.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e9/a8/fb783cb0abe2b5fded9f55e5703015cdf1c9c85b3669087c538dd15a6a86/comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e", size = 6210, upload-time = "2024-03-12T16:53:41.133Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/75/49e5bfe642f71f272236b5b2d2691cf915a7283cc0ceda56357b61daa538/comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3", size = 7180, upload-time = "2024-03-12T16:53:39.226Z" }, +] + +[[package]] +name = "contourpy" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", + "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f5/f6/31a8f28b4a2a4fa0e01085e542f3081ab0588eff8e589d39d775172c9792/contourpy-1.3.0.tar.gz", hash = "sha256:7ffa0db17717a8ffb127efd0c95a4362d996b892c2904db72428d5b52e1938a4", size = 13464370, upload-time = "2024-08-27T21:00:03.328Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6c/e0/be8dcc796cfdd96708933e0e2da99ba4bb8f9b2caa9d560a50f3f09a65f3/contourpy-1.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:880ea32e5c774634f9fcd46504bf9f080a41ad855f4fef54f5380f5133d343c7", size = 265366, upload-time = "2024-08-27T20:50:09.947Z" }, + { url = "https://files.pythonhosted.org/packages/50/d6/c953b400219443535d412fcbbc42e7a5e823291236bc0bb88936e3cc9317/contourpy-1.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:76c905ef940a4474a6289c71d53122a4f77766eef23c03cd57016ce19d0f7b42", size = 249226, upload-time = "2024-08-27T20:50:16.1Z" }, + { url = "https://files.pythonhosted.org/packages/6f/b4/6fffdf213ffccc28483c524b9dad46bb78332851133b36ad354b856ddc7c/contourpy-1.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:92f8557cbb07415a4d6fa191f20fd9d2d9eb9c0b61d1b2f52a8926e43c6e9af7", size = 308460, upload-time = "2024-08-27T20:50:22.536Z" }, + { url = "https://files.pythonhosted.org/packages/cf/6c/118fc917b4050f0afe07179a6dcbe4f3f4ec69b94f36c9e128c4af480fb8/contourpy-1.3.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:36f965570cff02b874773c49bfe85562b47030805d7d8360748f3eca570f4cab", size = 347623, upload-time = "2024-08-27T20:50:28.806Z" }, + { url = "https://files.pythonhosted.org/packages/f9/a4/30ff110a81bfe3abf7b9673284d21ddce8cc1278f6f77393c91199da4c90/contourpy-1.3.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cacd81e2d4b6f89c9f8a5b69b86490152ff39afc58a95af002a398273e5ce589", size = 317761, upload-time = "2024-08-27T20:50:35.126Z" }, + { url = "https://files.pythonhosted.org/packages/99/e6/d11966962b1aa515f5586d3907ad019f4b812c04e4546cc19ebf62b5178e/contourpy-1.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69375194457ad0fad3a839b9e29aa0b0ed53bb54db1bfb6c3ae43d111c31ce41", size = 322015, upload-time = "2024-08-27T20:50:40.318Z" }, + { url = "https://files.pythonhosted.org/packages/4d/e3/182383743751d22b7b59c3c753277b6aee3637049197624f333dac5b4c80/contourpy-1.3.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7a52040312b1a858b5e31ef28c2e865376a386c60c0e248370bbea2d3f3b760d", size = 1262672, upload-time = "2024-08-27T20:50:55.643Z" }, + { url = "https://files.pythonhosted.org/packages/78/53/974400c815b2e605f252c8fb9297e2204347d1755a5374354ee77b1ea259/contourpy-1.3.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3faeb2998e4fcb256542e8a926d08da08977f7f5e62cf733f3c211c2a5586223", size = 1321688, upload-time = "2024-08-27T20:51:11.293Z" }, + { url = "https://files.pythonhosted.org/packages/52/29/99f849faed5593b2926a68a31882af98afbeac39c7fdf7de491d9c85ec6a/contourpy-1.3.0-cp310-cp310-win32.whl", hash = "sha256:36e0cff201bcb17a0a8ecc7f454fe078437fa6bda730e695a92f2d9932bd507f", size = 171145, upload-time = "2024-08-27T20:51:15.2Z" }, + { url = "https://files.pythonhosted.org/packages/a9/97/3f89bba79ff6ff2b07a3cbc40aa693c360d5efa90d66e914f0ff03b95ec7/contourpy-1.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:87ddffef1dbe5e669b5c2440b643d3fdd8622a348fe1983fad7a0f0ccb1cd67b", size = 216019, upload-time = "2024-08-27T20:51:19.365Z" }, + { url = "https://files.pythonhosted.org/packages/b3/1f/9375917786cb39270b0ee6634536c0e22abf225825602688990d8f5c6c19/contourpy-1.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0fa4c02abe6c446ba70d96ece336e621efa4aecae43eaa9b030ae5fb92b309ad", size = 266356, upload-time = "2024-08-27T20:51:24.146Z" }, + { url = "https://files.pythonhosted.org/packages/05/46/9256dd162ea52790c127cb58cfc3b9e3413a6e3478917d1f811d420772ec/contourpy-1.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:834e0cfe17ba12f79963861e0f908556b2cedd52e1f75e6578801febcc6a9f49", size = 250915, upload-time = "2024-08-27T20:51:28.683Z" }, + { url = "https://files.pythonhosted.org/packages/e1/5d/3056c167fa4486900dfbd7e26a2fdc2338dc58eee36d490a0ed3ddda5ded/contourpy-1.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dbc4c3217eee163fa3984fd1567632b48d6dfd29216da3ded3d7b844a8014a66", size = 310443, upload-time = "2024-08-27T20:51:33.675Z" }, + { url = "https://files.pythonhosted.org/packages/ca/c2/1a612e475492e07f11c8e267ea5ec1ce0d89971be496c195e27afa97e14a/contourpy-1.3.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4865cd1d419e0c7a7bf6de1777b185eebdc51470800a9f42b9e9decf17762081", size = 348548, upload-time = "2024-08-27T20:51:39.322Z" }, + { url = "https://files.pythonhosted.org/packages/45/cf/2c2fc6bb5874158277b4faf136847f0689e1b1a1f640a36d76d52e78907c/contourpy-1.3.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:303c252947ab4b14c08afeb52375b26781ccd6a5ccd81abcdfc1fafd14cf93c1", size = 319118, upload-time = "2024-08-27T20:51:44.717Z" }, + { url = "https://files.pythonhosted.org/packages/03/33/003065374f38894cdf1040cef474ad0546368eea7e3a51d48b8a423961f8/contourpy-1.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:637f674226be46f6ba372fd29d9523dd977a291f66ab2a74fbeb5530bb3f445d", size = 323162, upload-time = "2024-08-27T20:51:49.683Z" }, + { url = "https://files.pythonhosted.org/packages/42/80/e637326e85e4105a802e42959f56cff2cd39a6b5ef68d5d9aee3ea5f0e4c/contourpy-1.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:76a896b2f195b57db25d6b44e7e03f221d32fe318d03ede41f8b4d9ba1bff53c", size = 1265396, upload-time = "2024-08-27T20:52:04.926Z" }, + { url = "https://files.pythonhosted.org/packages/7c/3b/8cbd6416ca1bbc0202b50f9c13b2e0b922b64be888f9d9ee88e6cfabfb51/contourpy-1.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e1fd23e9d01591bab45546c089ae89d926917a66dceb3abcf01f6105d927e2cb", size = 1324297, upload-time = "2024-08-27T20:52:21.843Z" }, + { url = "https://files.pythonhosted.org/packages/4d/2c/021a7afaa52fe891f25535506cc861c30c3c4e5a1c1ce94215e04b293e72/contourpy-1.3.0-cp311-cp311-win32.whl", hash = "sha256:d402880b84df3bec6eab53cd0cf802cae6a2ef9537e70cf75e91618a3801c20c", size = 171808, upload-time = "2024-08-27T20:52:25.163Z" }, + { url = "https://files.pythonhosted.org/packages/8d/2f/804f02ff30a7fae21f98198828d0857439ec4c91a96e20cf2d6c49372966/contourpy-1.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:6cb6cc968059db9c62cb35fbf70248f40994dfcd7aa10444bbf8b3faeb7c2d67", size = 217181, upload-time = "2024-08-27T20:52:29.13Z" }, + { url = "https://files.pythonhosted.org/packages/c9/92/8e0bbfe6b70c0e2d3d81272b58c98ac69ff1a4329f18c73bd64824d8b12e/contourpy-1.3.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:570ef7cf892f0afbe5b2ee410c507ce12e15a5fa91017a0009f79f7d93a1268f", size = 267838, upload-time = "2024-08-27T20:52:33.911Z" }, + { url = "https://files.pythonhosted.org/packages/e3/04/33351c5d5108460a8ce6d512307690b023f0cfcad5899499f5c83b9d63b1/contourpy-1.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:da84c537cb8b97d153e9fb208c221c45605f73147bd4cadd23bdae915042aad6", size = 251549, upload-time = "2024-08-27T20:52:39.179Z" }, + { url = "https://files.pythonhosted.org/packages/51/3d/aa0fe6ae67e3ef9f178389e4caaaa68daf2f9024092aa3c6032e3d174670/contourpy-1.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0be4d8425bfa755e0fd76ee1e019636ccc7c29f77a7c86b4328a9eb6a26d0639", size = 303177, upload-time = "2024-08-27T20:52:44.789Z" }, + { url = "https://files.pythonhosted.org/packages/56/c3/c85a7e3e0cab635575d3b657f9535443a6f5d20fac1a1911eaa4bbe1aceb/contourpy-1.3.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9c0da700bf58f6e0b65312d0a5e695179a71d0163957fa381bb3c1f72972537c", size = 341735, upload-time = "2024-08-27T20:52:51.05Z" }, + { url = "https://files.pythonhosted.org/packages/dd/8d/20f7a211a7be966a53f474bc90b1a8202e9844b3f1ef85f3ae45a77151ee/contourpy-1.3.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eb8b141bb00fa977d9122636b16aa67d37fd40a3d8b52dd837e536d64b9a4d06", size = 314679, upload-time = "2024-08-27T20:52:58.473Z" }, + { url = "https://files.pythonhosted.org/packages/6e/be/524e377567defac0e21a46e2a529652d165fed130a0d8a863219303cee18/contourpy-1.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3634b5385c6716c258d0419c46d05c8aa7dc8cb70326c9a4fb66b69ad2b52e09", size = 320549, upload-time = "2024-08-27T20:53:06.593Z" }, + { url = "https://files.pythonhosted.org/packages/0f/96/fdb2552a172942d888915f3a6663812e9bc3d359d53dafd4289a0fb462f0/contourpy-1.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0dce35502151b6bd35027ac39ba6e5a44be13a68f55735c3612c568cac3805fd", size = 1263068, upload-time = "2024-08-27T20:53:23.442Z" }, + { url = "https://files.pythonhosted.org/packages/2a/25/632eab595e3140adfa92f1322bf8915f68c932bac468e89eae9974cf1c00/contourpy-1.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:aea348f053c645100612b333adc5983d87be69acdc6d77d3169c090d3b01dc35", size = 1322833, upload-time = "2024-08-27T20:53:39.243Z" }, + { url = "https://files.pythonhosted.org/packages/73/e3/69738782e315a1d26d29d71a550dbbe3eb6c653b028b150f70c1a5f4f229/contourpy-1.3.0-cp312-cp312-win32.whl", hash = "sha256:90f73a5116ad1ba7174341ef3ea5c3150ddf20b024b98fb0c3b29034752c8aeb", size = 172681, upload-time = "2024-08-27T20:53:43.05Z" }, + { url = "https://files.pythonhosted.org/packages/0c/89/9830ba00d88e43d15e53d64931e66b8792b46eb25e2050a88fec4a0df3d5/contourpy-1.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:b11b39aea6be6764f84360fce6c82211a9db32a7c7de8fa6dd5397cf1d079c3b", size = 218283, upload-time = "2024-08-27T20:53:47.232Z" }, + { url = "https://files.pythonhosted.org/packages/53/a1/d20415febfb2267af2d7f06338e82171824d08614084714fb2c1dac9901f/contourpy-1.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:3e1c7fa44aaae40a2247e2e8e0627f4bea3dd257014764aa644f319a5f8600e3", size = 267879, upload-time = "2024-08-27T20:53:51.597Z" }, + { url = "https://files.pythonhosted.org/packages/aa/45/5a28a3570ff6218d8bdfc291a272a20d2648104815f01f0177d103d985e1/contourpy-1.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:364174c2a76057feef647c802652f00953b575723062560498dc7930fc9b1cb7", size = 251573, upload-time = "2024-08-27T20:53:55.659Z" }, + { url = "https://files.pythonhosted.org/packages/39/1c/d3f51540108e3affa84f095c8b04f0aa833bb797bc8baa218a952a98117d/contourpy-1.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32b238b3b3b649e09ce9aaf51f0c261d38644bdfa35cbaf7b263457850957a84", size = 303184, upload-time = "2024-08-27T20:54:00.225Z" }, + { url = "https://files.pythonhosted.org/packages/00/56/1348a44fb6c3a558c1a3a0cd23d329d604c99d81bf5a4b58c6b71aab328f/contourpy-1.3.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d51fca85f9f7ad0b65b4b9fe800406d0d77017d7270d31ec3fb1cc07358fdea0", size = 340262, upload-time = "2024-08-27T20:54:05.234Z" }, + { url = "https://files.pythonhosted.org/packages/2b/23/00d665ba67e1bb666152131da07e0f24c95c3632d7722caa97fb61470eca/contourpy-1.3.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:732896af21716b29ab3e988d4ce14bc5133733b85956316fb0c56355f398099b", size = 313806, upload-time = "2024-08-27T20:54:09.889Z" }, + { url = "https://files.pythonhosted.org/packages/5a/42/3cf40f7040bb8362aea19af9a5fb7b32ce420f645dd1590edcee2c657cd5/contourpy-1.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d73f659398a0904e125280836ae6f88ba9b178b2fed6884f3b1f95b989d2c8da", size = 319710, upload-time = "2024-08-27T20:54:14.536Z" }, + { url = "https://files.pythonhosted.org/packages/05/32/f3bfa3fc083b25e1a7ae09197f897476ee68e7386e10404bdf9aac7391f0/contourpy-1.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c6c7c2408b7048082932cf4e641fa3b8ca848259212f51c8c59c45aa7ac18f14", size = 1264107, upload-time = "2024-08-27T20:54:29.735Z" }, + { url = "https://files.pythonhosted.org/packages/1c/1e/1019d34473a736664f2439542b890b2dc4c6245f5c0d8cdfc0ccc2cab80c/contourpy-1.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f317576606de89da6b7e0861cf6061f6146ead3528acabff9236458a6ba467f8", size = 1322458, upload-time = "2024-08-27T20:54:45.507Z" }, + { url = "https://files.pythonhosted.org/packages/22/85/4f8bfd83972cf8909a4d36d16b177f7b8bdd942178ea4bf877d4a380a91c/contourpy-1.3.0-cp313-cp313-win32.whl", hash = "sha256:31cd3a85dbdf1fc002280c65caa7e2b5f65e4a973fcdf70dd2fdcb9868069294", size = 172643, upload-time = "2024-08-27T20:55:52.754Z" }, + { url = "https://files.pythonhosted.org/packages/cc/4a/fb3c83c1baba64ba90443626c228ca14f19a87c51975d3b1de308dd2cf08/contourpy-1.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:4553c421929ec95fb07b3aaca0fae668b2eb5a5203d1217ca7c34c063c53d087", size = 218301, upload-time = "2024-08-27T20:55:56.509Z" }, + { url = "https://files.pythonhosted.org/packages/76/65/702f4064f397821fea0cb493f7d3bc95a5d703e20954dce7d6d39bacf378/contourpy-1.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:345af746d7766821d05d72cb8f3845dfd08dd137101a2cb9b24de277d716def8", size = 278972, upload-time = "2024-08-27T20:54:50.347Z" }, + { url = "https://files.pythonhosted.org/packages/80/85/21f5bba56dba75c10a45ec00ad3b8190dbac7fd9a8a8c46c6116c933e9cf/contourpy-1.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3bb3808858a9dc68f6f03d319acd5f1b8a337e6cdda197f02f4b8ff67ad2057b", size = 263375, upload-time = "2024-08-27T20:54:54.909Z" }, + { url = "https://files.pythonhosted.org/packages/0a/64/084c86ab71d43149f91ab3a4054ccf18565f0a8af36abfa92b1467813ed6/contourpy-1.3.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:420d39daa61aab1221567b42eecb01112908b2cab7f1b4106a52caaec8d36973", size = 307188, upload-time = "2024-08-27T20:55:00.184Z" }, + { url = "https://files.pythonhosted.org/packages/3d/ff/d61a4c288dc42da0084b8d9dc2aa219a850767165d7d9a9c364ff530b509/contourpy-1.3.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4d63ee447261e963af02642ffcb864e5a2ee4cbfd78080657a9880b8b1868e18", size = 345644, upload-time = "2024-08-27T20:55:05.673Z" }, + { url = "https://files.pythonhosted.org/packages/ca/aa/00d2313d35ec03f188e8f0786c2fc61f589306e02fdc158233697546fd58/contourpy-1.3.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:167d6c890815e1dac9536dca00828b445d5d0df4d6a8c6adb4a7ec3166812fa8", size = 317141, upload-time = "2024-08-27T20:55:11.047Z" }, + { url = "https://files.pythonhosted.org/packages/8d/6a/b5242c8cb32d87f6abf4f5e3044ca397cb1a76712e3fa2424772e3ff495f/contourpy-1.3.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:710a26b3dc80c0e4febf04555de66f5fd17e9cf7170a7b08000601a10570bda6", size = 323469, upload-time = "2024-08-27T20:55:15.914Z" }, + { url = "https://files.pythonhosted.org/packages/6f/a6/73e929d43028a9079aca4bde107494864d54f0d72d9db508a51ff0878593/contourpy-1.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:75ee7cb1a14c617f34a51d11fa7524173e56551646828353c4af859c56b766e2", size = 1260894, upload-time = "2024-08-27T20:55:31.553Z" }, + { url = "https://files.pythonhosted.org/packages/2b/1e/1e726ba66eddf21c940821df8cf1a7d15cb165f0682d62161eaa5e93dae1/contourpy-1.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:33c92cdae89ec5135d036e7218e69b0bb2851206077251f04a6c4e0e21f03927", size = 1314829, upload-time = "2024-08-27T20:55:47.837Z" }, + { url = "https://files.pythonhosted.org/packages/b3/e3/b9f72758adb6ef7397327ceb8b9c39c75711affb220e4f53c745ea1d5a9a/contourpy-1.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a11077e395f67ffc2c44ec2418cfebed032cd6da3022a94fc227b6faf8e2acb8", size = 265518, upload-time = "2024-08-27T20:56:01.333Z" }, + { url = "https://files.pythonhosted.org/packages/ec/22/19f5b948367ab5260fb41d842c7a78dae645603881ea6bc39738bcfcabf6/contourpy-1.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e8134301d7e204c88ed7ab50028ba06c683000040ede1d617298611f9dc6240c", size = 249350, upload-time = "2024-08-27T20:56:05.432Z" }, + { url = "https://files.pythonhosted.org/packages/26/76/0c7d43263dd00ae21a91a24381b7e813d286a3294d95d179ef3a7b9fb1d7/contourpy-1.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e12968fdfd5bb45ffdf6192a590bd8ddd3ba9e58360b29683c6bb71a7b41edca", size = 309167, upload-time = "2024-08-27T20:56:10.034Z" }, + { url = "https://files.pythonhosted.org/packages/96/3b/cadff6773e89f2a5a492c1a8068e21d3fccaf1a1c1df7d65e7c8e3ef60ba/contourpy-1.3.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fd2a0fc506eccaaa7595b7e1418951f213cf8255be2600f1ea1b61e46a60c55f", size = 348279, upload-time = "2024-08-27T20:56:15.41Z" }, + { url = "https://files.pythonhosted.org/packages/e1/86/158cc43aa549d2081a955ab11c6bdccc7a22caacc2af93186d26f5f48746/contourpy-1.3.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4cfb5c62ce023dfc410d6059c936dcf96442ba40814aefbfa575425a3a7f19dc", size = 318519, upload-time = "2024-08-27T20:56:21.813Z" }, + { url = "https://files.pythonhosted.org/packages/05/11/57335544a3027e9b96a05948c32e566328e3a2f84b7b99a325b7a06d2b06/contourpy-1.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68a32389b06b82c2fdd68276148d7b9275b5f5cf13e5417e4252f6d1a34f72a2", size = 321922, upload-time = "2024-08-27T20:56:26.983Z" }, + { url = "https://files.pythonhosted.org/packages/0b/e3/02114f96543f4a1b694333b92a6dcd4f8eebbefcc3a5f3bbb1316634178f/contourpy-1.3.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:94e848a6b83da10898cbf1311a815f770acc9b6a3f2d646f330d57eb4e87592e", size = 1258017, upload-time = "2024-08-27T20:56:42.246Z" }, + { url = "https://files.pythonhosted.org/packages/f3/3b/bfe4c81c6d5881c1c643dde6620be0b42bf8aab155976dd644595cfab95c/contourpy-1.3.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:d78ab28a03c854a873787a0a42254a0ccb3cb133c672f645c9f9c8f3ae9d0800", size = 1316773, upload-time = "2024-08-27T20:56:58.58Z" }, + { url = "https://files.pythonhosted.org/packages/f1/17/c52d2970784383cafb0bd918b6fb036d98d96bbf0bc1befb5d1e31a07a70/contourpy-1.3.0-cp39-cp39-win32.whl", hash = "sha256:81cb5ed4952aae6014bc9d0421dec7c5835c9c8c31cdf51910b708f548cf58e5", size = 171353, upload-time = "2024-08-27T20:57:02.718Z" }, + { url = "https://files.pythonhosted.org/packages/53/23/db9f69676308e094d3c45f20cc52e12d10d64f027541c995d89c11ad5c75/contourpy-1.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:14e262f67bd7e6eb6880bc564dcda30b15e351a594657e55b7eec94b6ef72843", size = 211817, upload-time = "2024-08-27T20:57:06.328Z" }, + { url = "https://files.pythonhosted.org/packages/d1/09/60e486dc2b64c94ed33e58dcfb6f808192c03dfc5574c016218b9b7680dc/contourpy-1.3.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:fe41b41505a5a33aeaed2a613dccaeaa74e0e3ead6dd6fd3a118fb471644fd6c", size = 261886, upload-time = "2024-08-27T20:57:10.863Z" }, + { url = "https://files.pythonhosted.org/packages/19/20/b57f9f7174fcd439a7789fb47d764974ab646fa34d1790551de386457a8e/contourpy-1.3.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eca7e17a65f72a5133bdbec9ecf22401c62bcf4821361ef7811faee695799779", size = 311008, upload-time = "2024-08-27T20:57:15.588Z" }, + { url = "https://files.pythonhosted.org/packages/74/fc/5040d42623a1845d4f17a418e590fd7a79ae8cb2bad2b2f83de63c3bdca4/contourpy-1.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1ec4dc6bf570f5b22ed0d7efba0dfa9c5b9e0431aeea7581aa217542d9e809a4", size = 215690, upload-time = "2024-08-27T20:57:19.321Z" }, + { url = "https://files.pythonhosted.org/packages/2b/24/dc3dcd77ac7460ab7e9d2b01a618cb31406902e50e605a8d6091f0a8f7cc/contourpy-1.3.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:00ccd0dbaad6d804ab259820fa7cb0b8036bda0686ef844d24125d8287178ce0", size = 261894, upload-time = "2024-08-27T20:57:23.873Z" }, + { url = "https://files.pythonhosted.org/packages/b1/db/531642a01cfec39d1682e46b5457b07cf805e3c3c584ec27e2a6223f8f6c/contourpy-1.3.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ca947601224119117f7c19c9cdf6b3ab54c5726ef1d906aa4a69dfb6dd58102", size = 311099, upload-time = "2024-08-27T20:57:28.58Z" }, + { url = "https://files.pythonhosted.org/packages/38/1e/94bda024d629f254143a134eead69e21c836429a2a6ce82209a00ddcb79a/contourpy-1.3.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:c6ec93afeb848a0845a18989da3beca3eec2c0f852322efe21af1931147d12cb", size = 215838, upload-time = "2024-08-27T20:57:32.913Z" }, +] + +[[package]] +name = "contourpy" +version = "1.3.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/54/eb9bfc647b19f2009dd5c7f5ec51c4e6ca831725f1aea7a993034f483147/contourpy-1.3.2.tar.gz", hash = "sha256:b6945942715a034c671b7fc54f9588126b0b8bf23db2696e3ca8328f3ff0ab54", size = 13466130, upload-time = "2025-04-15T17:47:53.79Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/12/a3/da4153ec8fe25d263aa48c1a4cbde7f49b59af86f0b6f7862788c60da737/contourpy-1.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ba38e3f9f330af820c4b27ceb4b9c7feee5fe0493ea53a8720f4792667465934", size = 268551, upload-time = "2025-04-15T17:34:46.581Z" }, + { url = "https://files.pythonhosted.org/packages/2f/6c/330de89ae1087eb622bfca0177d32a7ece50c3ef07b28002de4757d9d875/contourpy-1.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:dc41ba0714aa2968d1f8674ec97504a8f7e334f48eeacebcaa6256213acb0989", size = 253399, upload-time = "2025-04-15T17:34:51.427Z" }, + { url = "https://files.pythonhosted.org/packages/c1/bd/20c6726b1b7f81a8bee5271bed5c165f0a8e1f572578a9d27e2ccb763cb2/contourpy-1.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9be002b31c558d1ddf1b9b415b162c603405414bacd6932d031c5b5a8b757f0d", size = 312061, upload-time = "2025-04-15T17:34:55.961Z" }, + { url = "https://files.pythonhosted.org/packages/22/fc/a9665c88f8a2473f823cf1ec601de9e5375050f1958cbb356cdf06ef1ab6/contourpy-1.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8d2e74acbcba3bfdb6d9d8384cdc4f9260cae86ed9beee8bd5f54fee49a430b9", size = 351956, upload-time = "2025-04-15T17:35:00.992Z" }, + { url = "https://files.pythonhosted.org/packages/25/eb/9f0a0238f305ad8fb7ef42481020d6e20cf15e46be99a1fcf939546a177e/contourpy-1.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e259bced5549ac64410162adc973c5e2fb77f04df4a439d00b478e57a0e65512", size = 320872, upload-time = "2025-04-15T17:35:06.177Z" }, + { url = "https://files.pythonhosted.org/packages/32/5c/1ee32d1c7956923202f00cf8d2a14a62ed7517bdc0ee1e55301227fc273c/contourpy-1.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad687a04bc802cbe8b9c399c07162a3c35e227e2daccf1668eb1f278cb698631", size = 325027, upload-time = "2025-04-15T17:35:11.244Z" }, + { url = "https://files.pythonhosted.org/packages/83/bf/9baed89785ba743ef329c2b07fd0611d12bfecbedbdd3eeecf929d8d3b52/contourpy-1.3.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cdd22595308f53ef2f891040ab2b93d79192513ffccbd7fe19be7aa773a5e09f", size = 1306641, upload-time = "2025-04-15T17:35:26.701Z" }, + { url = "https://files.pythonhosted.org/packages/d4/cc/74e5e83d1e35de2d28bd97033426b450bc4fd96e092a1f7a63dc7369b55d/contourpy-1.3.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b4f54d6a2defe9f257327b0f243612dd051cc43825587520b1bf74a31e2f6ef2", size = 1374075, upload-time = "2025-04-15T17:35:43.204Z" }, + { url = "https://files.pythonhosted.org/packages/0c/42/17f3b798fd5e033b46a16f8d9fcb39f1aba051307f5ebf441bad1ecf78f8/contourpy-1.3.2-cp310-cp310-win32.whl", hash = "sha256:f939a054192ddc596e031e50bb13b657ce318cf13d264f095ce9db7dc6ae81c0", size = 177534, upload-time = "2025-04-15T17:35:46.554Z" }, + { url = "https://files.pythonhosted.org/packages/54/ec/5162b8582f2c994721018d0c9ece9dc6ff769d298a8ac6b6a652c307e7df/contourpy-1.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:c440093bbc8fc21c637c03bafcbef95ccd963bc6e0514ad887932c18ca2a759a", size = 221188, upload-time = "2025-04-15T17:35:50.064Z" }, + { url = "https://files.pythonhosted.org/packages/b3/b9/ede788a0b56fc5b071639d06c33cb893f68b1178938f3425debebe2dab78/contourpy-1.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6a37a2fb93d4df3fc4c0e363ea4d16f83195fc09c891bc8ce072b9d084853445", size = 269636, upload-time = "2025-04-15T17:35:54.473Z" }, + { url = "https://files.pythonhosted.org/packages/e6/75/3469f011d64b8bbfa04f709bfc23e1dd71be54d05b1b083be9f5b22750d1/contourpy-1.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b7cd50c38f500bbcc9b6a46643a40e0913673f869315d8e70de0438817cb7773", size = 254636, upload-time = "2025-04-15T17:35:58.283Z" }, + { url = "https://files.pythonhosted.org/packages/8d/2f/95adb8dae08ce0ebca4fd8e7ad653159565d9739128b2d5977806656fcd2/contourpy-1.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6658ccc7251a4433eebd89ed2672c2ed96fba367fd25ca9512aa92a4b46c4f1", size = 313053, upload-time = "2025-04-15T17:36:03.235Z" }, + { url = "https://files.pythonhosted.org/packages/c3/a6/8ccf97a50f31adfa36917707fe39c9a0cbc24b3bbb58185577f119736cc9/contourpy-1.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:70771a461aaeb335df14deb6c97439973d253ae70660ca085eec25241137ef43", size = 352985, upload-time = "2025-04-15T17:36:08.275Z" }, + { url = "https://files.pythonhosted.org/packages/1d/b6/7925ab9b77386143f39d9c3243fdd101621b4532eb126743201160ffa7e6/contourpy-1.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65a887a6e8c4cd0897507d814b14c54a8c2e2aa4ac9f7686292f9769fcf9a6ab", size = 323750, upload-time = "2025-04-15T17:36:13.29Z" }, + { url = "https://files.pythonhosted.org/packages/c2/f3/20c5d1ef4f4748e52d60771b8560cf00b69d5c6368b5c2e9311bcfa2a08b/contourpy-1.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3859783aefa2b8355697f16642695a5b9792e7a46ab86da1118a4a23a51a33d7", size = 326246, upload-time = "2025-04-15T17:36:18.329Z" }, + { url = "https://files.pythonhosted.org/packages/8c/e5/9dae809e7e0b2d9d70c52b3d24cba134dd3dad979eb3e5e71f5df22ed1f5/contourpy-1.3.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:eab0f6db315fa4d70f1d8ab514e527f0366ec021ff853d7ed6a2d33605cf4b83", size = 1308728, upload-time = "2025-04-15T17:36:33.878Z" }, + { url = "https://files.pythonhosted.org/packages/e2/4a/0058ba34aeea35c0b442ae61a4f4d4ca84d6df8f91309bc2d43bb8dd248f/contourpy-1.3.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d91a3ccc7fea94ca0acab82ceb77f396d50a1f67412efe4c526f5d20264e6ecd", size = 1375762, upload-time = "2025-04-15T17:36:51.295Z" }, + { url = "https://files.pythonhosted.org/packages/09/33/7174bdfc8b7767ef2c08ed81244762d93d5c579336fc0b51ca57b33d1b80/contourpy-1.3.2-cp311-cp311-win32.whl", hash = "sha256:1c48188778d4d2f3d48e4643fb15d8608b1d01e4b4d6b0548d9b336c28fc9b6f", size = 178196, upload-time = "2025-04-15T17:36:55.002Z" }, + { url = "https://files.pythonhosted.org/packages/5e/fe/4029038b4e1c4485cef18e480b0e2cd2d755448bb071eb9977caac80b77b/contourpy-1.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:5ebac872ba09cb8f2131c46b8739a7ff71de28a24c869bcad554477eb089a878", size = 222017, upload-time = "2025-04-15T17:36:58.576Z" }, + { url = "https://files.pythonhosted.org/packages/34/f7/44785876384eff370c251d58fd65f6ad7f39adce4a093c934d4a67a7c6b6/contourpy-1.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4caf2bcd2969402bf77edc4cb6034c7dd7c0803213b3523f111eb7460a51b8d2", size = 271580, upload-time = "2025-04-15T17:37:03.105Z" }, + { url = "https://files.pythonhosted.org/packages/93/3b/0004767622a9826ea3d95f0e9d98cd8729015768075d61f9fea8eeca42a8/contourpy-1.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:82199cb78276249796419fe36b7386bd8d2cc3f28b3bc19fe2454fe2e26c4c15", size = 255530, upload-time = "2025-04-15T17:37:07.026Z" }, + { url = "https://files.pythonhosted.org/packages/e7/bb/7bd49e1f4fa805772d9fd130e0d375554ebc771ed7172f48dfcd4ca61549/contourpy-1.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:106fab697af11456fcba3e352ad50effe493a90f893fca6c2ca5c033820cea92", size = 307688, upload-time = "2025-04-15T17:37:11.481Z" }, + { url = "https://files.pythonhosted.org/packages/fc/97/e1d5dbbfa170725ef78357a9a0edc996b09ae4af170927ba8ce977e60a5f/contourpy-1.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d14f12932a8d620e307f715857107b1d1845cc44fdb5da2bc8e850f5ceba9f87", size = 347331, upload-time = "2025-04-15T17:37:18.212Z" }, + { url = "https://files.pythonhosted.org/packages/6f/66/e69e6e904f5ecf6901be3dd16e7e54d41b6ec6ae3405a535286d4418ffb4/contourpy-1.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:532fd26e715560721bb0d5fc7610fce279b3699b018600ab999d1be895b09415", size = 318963, upload-time = "2025-04-15T17:37:22.76Z" }, + { url = "https://files.pythonhosted.org/packages/a8/32/b8a1c8965e4f72482ff2d1ac2cd670ce0b542f203c8e1d34e7c3e6925da7/contourpy-1.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f26b383144cf2d2c29f01a1e8170f50dacf0eac02d64139dcd709a8ac4eb3cfe", size = 323681, upload-time = "2025-04-15T17:37:33.001Z" }, + { url = "https://files.pythonhosted.org/packages/30/c6/12a7e6811d08757c7162a541ca4c5c6a34c0f4e98ef2b338791093518e40/contourpy-1.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c49f73e61f1f774650a55d221803b101d966ca0c5a2d6d5e4320ec3997489441", size = 1308674, upload-time = "2025-04-15T17:37:48.64Z" }, + { url = "https://files.pythonhosted.org/packages/2a/8a/bebe5a3f68b484d3a2b8ffaf84704b3e343ef1addea528132ef148e22b3b/contourpy-1.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3d80b2c0300583228ac98d0a927a1ba6a2ba6b8a742463c564f1d419ee5b211e", size = 1380480, upload-time = "2025-04-15T17:38:06.7Z" }, + { url = "https://files.pythonhosted.org/packages/34/db/fcd325f19b5978fb509a7d55e06d99f5f856294c1991097534360b307cf1/contourpy-1.3.2-cp312-cp312-win32.whl", hash = "sha256:90df94c89a91b7362e1142cbee7568f86514412ab8a2c0d0fca72d7e91b62912", size = 178489, upload-time = "2025-04-15T17:38:10.338Z" }, + { url = "https://files.pythonhosted.org/packages/01/c8/fadd0b92ffa7b5eb5949bf340a63a4a496a6930a6c37a7ba0f12acb076d6/contourpy-1.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:8c942a01d9163e2e5cfb05cb66110121b8d07ad438a17f9e766317bcb62abf73", size = 223042, upload-time = "2025-04-15T17:38:14.239Z" }, + { url = "https://files.pythonhosted.org/packages/2e/61/5673f7e364b31e4e7ef6f61a4b5121c5f170f941895912f773d95270f3a2/contourpy-1.3.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:de39db2604ae755316cb5967728f4bea92685884b1e767b7c24e983ef5f771cb", size = 271630, upload-time = "2025-04-15T17:38:19.142Z" }, + { url = "https://files.pythonhosted.org/packages/ff/66/a40badddd1223822c95798c55292844b7e871e50f6bfd9f158cb25e0bd39/contourpy-1.3.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3f9e896f447c5c8618f1edb2bafa9a4030f22a575ec418ad70611450720b5b08", size = 255670, upload-time = "2025-04-15T17:38:23.688Z" }, + { url = "https://files.pythonhosted.org/packages/1e/c7/cf9fdee8200805c9bc3b148f49cb9482a4e3ea2719e772602a425c9b09f8/contourpy-1.3.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71e2bd4a1c4188f5c2b8d274da78faab884b59df20df63c34f74aa1813c4427c", size = 306694, upload-time = "2025-04-15T17:38:28.238Z" }, + { url = "https://files.pythonhosted.org/packages/dd/e7/ccb9bec80e1ba121efbffad7f38021021cda5be87532ec16fd96533bb2e0/contourpy-1.3.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de425af81b6cea33101ae95ece1f696af39446db9682a0b56daaa48cfc29f38f", size = 345986, upload-time = "2025-04-15T17:38:33.502Z" }, + { url = "https://files.pythonhosted.org/packages/dc/49/ca13bb2da90391fa4219fdb23b078d6065ada886658ac7818e5441448b78/contourpy-1.3.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:977e98a0e0480d3fe292246417239d2d45435904afd6d7332d8455981c408b85", size = 318060, upload-time = "2025-04-15T17:38:38.672Z" }, + { url = "https://files.pythonhosted.org/packages/c8/65/5245ce8c548a8422236c13ffcdcdada6a2a812c361e9e0c70548bb40b661/contourpy-1.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:434f0adf84911c924519d2b08fc10491dd282b20bdd3fa8f60fd816ea0b48841", size = 322747, upload-time = "2025-04-15T17:38:43.712Z" }, + { url = "https://files.pythonhosted.org/packages/72/30/669b8eb48e0a01c660ead3752a25b44fdb2e5ebc13a55782f639170772f9/contourpy-1.3.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c66c4906cdbc50e9cba65978823e6e00b45682eb09adbb78c9775b74eb222422", size = 1308895, upload-time = "2025-04-15T17:39:00.224Z" }, + { url = "https://files.pythonhosted.org/packages/05/5a/b569f4250decee6e8d54498be7bdf29021a4c256e77fe8138c8319ef8eb3/contourpy-1.3.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8b7fc0cd78ba2f4695fd0a6ad81a19e7e3ab825c31b577f384aa9d7817dc3bef", size = 1379098, upload-time = "2025-04-15T17:43:29.649Z" }, + { url = "https://files.pythonhosted.org/packages/19/ba/b227c3886d120e60e41b28740ac3617b2f2b971b9f601c835661194579f1/contourpy-1.3.2-cp313-cp313-win32.whl", hash = "sha256:15ce6ab60957ca74cff444fe66d9045c1fd3e92c8936894ebd1f3eef2fff075f", size = 178535, upload-time = "2025-04-15T17:44:44.532Z" }, + { url = "https://files.pythonhosted.org/packages/12/6e/2fed56cd47ca739b43e892707ae9a13790a486a3173be063681ca67d2262/contourpy-1.3.2-cp313-cp313-win_amd64.whl", hash = "sha256:e1578f7eafce927b168752ed7e22646dad6cd9bca673c60bff55889fa236ebf9", size = 223096, upload-time = "2025-04-15T17:44:48.194Z" }, + { url = "https://files.pythonhosted.org/packages/54/4c/e76fe2a03014a7c767d79ea35c86a747e9325537a8b7627e0e5b3ba266b4/contourpy-1.3.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0475b1f6604896bc7c53bb070e355e9321e1bc0d381735421a2d2068ec56531f", size = 285090, upload-time = "2025-04-15T17:43:34.084Z" }, + { url = "https://files.pythonhosted.org/packages/7b/e2/5aba47debd55d668e00baf9651b721e7733975dc9fc27264a62b0dd26eb8/contourpy-1.3.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:c85bb486e9be652314bb5b9e2e3b0d1b2e643d5eec4992c0fbe8ac71775da739", size = 268643, upload-time = "2025-04-15T17:43:38.626Z" }, + { url = "https://files.pythonhosted.org/packages/a1/37/cd45f1f051fe6230f751cc5cdd2728bb3a203f5619510ef11e732109593c/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:745b57db7758f3ffc05a10254edd3182a2a83402a89c00957a8e8a22f5582823", size = 310443, upload-time = "2025-04-15T17:43:44.522Z" }, + { url = "https://files.pythonhosted.org/packages/8b/a2/36ea6140c306c9ff6dd38e3bcec80b3b018474ef4d17eb68ceecd26675f4/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:970e9173dbd7eba9b4e01aab19215a48ee5dd3f43cef736eebde064a171f89a5", size = 349865, upload-time = "2025-04-15T17:43:49.545Z" }, + { url = "https://files.pythonhosted.org/packages/95/b7/2fc76bc539693180488f7b6cc518da7acbbb9e3b931fd9280504128bf956/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c6c4639a9c22230276b7bffb6a850dfc8258a2521305e1faefe804d006b2e532", size = 321162, upload-time = "2025-04-15T17:43:54.203Z" }, + { url = "https://files.pythonhosted.org/packages/f4/10/76d4f778458b0aa83f96e59d65ece72a060bacb20cfbee46cf6cd5ceba41/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc829960f34ba36aad4302e78eabf3ef16a3a100863f0d4eeddf30e8a485a03b", size = 327355, upload-time = "2025-04-15T17:44:01.025Z" }, + { url = "https://files.pythonhosted.org/packages/43/a3/10cf483ea683f9f8ab096c24bad3cce20e0d1dd9a4baa0e2093c1c962d9d/contourpy-1.3.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:d32530b534e986374fc19eaa77fcb87e8a99e5431499949b828312bdcd20ac52", size = 1307935, upload-time = "2025-04-15T17:44:17.322Z" }, + { url = "https://files.pythonhosted.org/packages/78/73/69dd9a024444489e22d86108e7b913f3528f56cfc312b5c5727a44188471/contourpy-1.3.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e298e7e70cf4eb179cc1077be1c725b5fd131ebc81181bf0c03525c8abc297fd", size = 1372168, upload-time = "2025-04-15T17:44:33.43Z" }, + { url = "https://files.pythonhosted.org/packages/0f/1b/96d586ccf1b1a9d2004dd519b25fbf104a11589abfd05484ff12199cca21/contourpy-1.3.2-cp313-cp313t-win32.whl", hash = "sha256:d0e589ae0d55204991450bb5c23f571c64fe43adaa53f93fc902a84c96f52fe1", size = 189550, upload-time = "2025-04-15T17:44:37.092Z" }, + { url = "https://files.pythonhosted.org/packages/b0/e6/6000d0094e8a5e32ad62591c8609e269febb6e4db83a1c75ff8868b42731/contourpy-1.3.2-cp313-cp313t-win_amd64.whl", hash = "sha256:78e9253c3de756b3f6a5174d024c4835acd59eb3f8e2ca13e775dbffe1558f69", size = 238214, upload-time = "2025-04-15T17:44:40.827Z" }, + { url = "https://files.pythonhosted.org/packages/33/05/b26e3c6ecc05f349ee0013f0bb850a761016d89cec528a98193a48c34033/contourpy-1.3.2-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:fd93cc7f3139b6dd7aab2f26a90dde0aa9fc264dbf70f6740d498a70b860b82c", size = 265681, upload-time = "2025-04-15T17:44:59.314Z" }, + { url = "https://files.pythonhosted.org/packages/2b/25/ac07d6ad12affa7d1ffed11b77417d0a6308170f44ff20fa1d5aa6333f03/contourpy-1.3.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:107ba8a6a7eec58bb475329e6d3b95deba9440667c4d62b9b6063942b61d7f16", size = 315101, upload-time = "2025-04-15T17:45:04.165Z" }, + { url = "https://files.pythonhosted.org/packages/8f/4d/5bb3192bbe9d3f27e3061a6a8e7733c9120e203cb8515767d30973f71030/contourpy-1.3.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ded1706ed0c1049224531b81128efbd5084598f18d8a2d9efae833edbd2b40ad", size = 220599, upload-time = "2025-04-15T17:45:08.456Z" }, + { url = "https://files.pythonhosted.org/packages/ff/c0/91f1215d0d9f9f343e4773ba6c9b89e8c0cc7a64a6263f21139da639d848/contourpy-1.3.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5f5964cdad279256c084b69c3f412b7801e15356b16efa9d78aa974041903da0", size = 266807, upload-time = "2025-04-15T17:45:15.535Z" }, + { url = "https://files.pythonhosted.org/packages/d4/79/6be7e90c955c0487e7712660d6cead01fa17bff98e0ea275737cc2bc8e71/contourpy-1.3.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49b65a95d642d4efa8f64ba12558fcb83407e58a2dfba9d796d77b63ccfcaff5", size = 318729, upload-time = "2025-04-15T17:45:20.166Z" }, + { url = "https://files.pythonhosted.org/packages/87/68/7f46fb537958e87427d98a4074bcde4b67a70b04900cfc5ce29bc2f556c1/contourpy-1.3.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:8c5acb8dddb0752bf252e01a3035b21443158910ac16a3b0d20e7fed7d534ce5", size = 221791, upload-time = "2025-04-15T17:45:24.794Z" }, +] + +[[package]] +name = "cryptography" +version = "45.0.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/95/1e/49527ac611af559665f71cbb8f92b332b5ec9c6fbc4e88b0f8e92f5e85df/cryptography-45.0.5.tar.gz", hash = "sha256:72e76caa004ab63accdf26023fccd1d087f6d90ec6048ff33ad0445abf7f605a", size = 744903, upload-time = "2025-07-02T13:06:25.941Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f0/fb/09e28bc0c46d2c547085e60897fea96310574c70fb21cd58a730a45f3403/cryptography-45.0.5-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:101ee65078f6dd3e5a028d4f19c07ffa4dd22cce6a20eaa160f8b5219911e7d8", size = 7043092, upload-time = "2025-07-02T13:05:01.514Z" }, + { url = "https://files.pythonhosted.org/packages/b1/05/2194432935e29b91fb649f6149c1a4f9e6d3d9fc880919f4ad1bcc22641e/cryptography-45.0.5-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3a264aae5f7fbb089dbc01e0242d3b67dffe3e6292e1f5182122bdf58e65215d", size = 4205926, upload-time = "2025-07-02T13:05:04.741Z" }, + { url = "https://files.pythonhosted.org/packages/07/8b/9ef5da82350175e32de245646b1884fc01124f53eb31164c77f95a08d682/cryptography-45.0.5-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e74d30ec9c7cb2f404af331d5b4099a9b322a8a6b25c4632755c8757345baac5", size = 4429235, upload-time = "2025-07-02T13:05:07.084Z" }, + { url = "https://files.pythonhosted.org/packages/7c/e1/c809f398adde1994ee53438912192d92a1d0fc0f2d7582659d9ef4c28b0c/cryptography-45.0.5-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:3af26738f2db354aafe492fb3869e955b12b2ef2e16908c8b9cb928128d42c57", size = 4209785, upload-time = "2025-07-02T13:05:09.321Z" }, + { url = "https://files.pythonhosted.org/packages/d0/8b/07eb6bd5acff58406c5e806eff34a124936f41a4fb52909ffa4d00815f8c/cryptography-45.0.5-cp311-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e6c00130ed423201c5bc5544c23359141660b07999ad82e34e7bb8f882bb78e0", size = 3893050, upload-time = "2025-07-02T13:05:11.069Z" }, + { url = "https://files.pythonhosted.org/packages/ec/ef/3333295ed58d900a13c92806b67e62f27876845a9a908c939f040887cca9/cryptography-45.0.5-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:dd420e577921c8c2d31289536c386aaa30140b473835e97f83bc71ea9d2baf2d", size = 4457379, upload-time = "2025-07-02T13:05:13.32Z" }, + { url = "https://files.pythonhosted.org/packages/d9/9d/44080674dee514dbb82b21d6fa5d1055368f208304e2ab1828d85c9de8f4/cryptography-45.0.5-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:d05a38884db2ba215218745f0781775806bde4f32e07b135348355fe8e4991d9", size = 4209355, upload-time = "2025-07-02T13:05:15.017Z" }, + { url = "https://files.pythonhosted.org/packages/c9/d8/0749f7d39f53f8258e5c18a93131919ac465ee1f9dccaf1b3f420235e0b5/cryptography-45.0.5-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:ad0caded895a00261a5b4aa9af828baede54638754b51955a0ac75576b831b27", size = 4456087, upload-time = "2025-07-02T13:05:16.945Z" }, + { url = "https://files.pythonhosted.org/packages/09/d7/92acac187387bf08902b0bf0699816f08553927bdd6ba3654da0010289b4/cryptography-45.0.5-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9024beb59aca9d31d36fcdc1604dd9bbeed0a55bface9f1908df19178e2f116e", size = 4332873, upload-time = "2025-07-02T13:05:18.743Z" }, + { url = "https://files.pythonhosted.org/packages/03/c2/840e0710da5106a7c3d4153c7215b2736151bba60bf4491bdb421df5056d/cryptography-45.0.5-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:91098f02ca81579c85f66df8a588c78f331ca19089763d733e34ad359f474174", size = 4564651, upload-time = "2025-07-02T13:05:21.382Z" }, + { url = "https://files.pythonhosted.org/packages/2e/92/cc723dd6d71e9747a887b94eb3827825c6c24b9e6ce2bb33b847d31d5eaa/cryptography-45.0.5-cp311-abi3-win32.whl", hash = "sha256:926c3ea71a6043921050eaa639137e13dbe7b4ab25800932a8498364fc1abec9", size = 2929050, upload-time = "2025-07-02T13:05:23.39Z" }, + { url = "https://files.pythonhosted.org/packages/1f/10/197da38a5911a48dd5389c043de4aec4b3c94cb836299b01253940788d78/cryptography-45.0.5-cp311-abi3-win_amd64.whl", hash = "sha256:b85980d1e345fe769cfc57c57db2b59cff5464ee0c045d52c0df087e926fbe63", size = 3403224, upload-time = "2025-07-02T13:05:25.202Z" }, + { url = "https://files.pythonhosted.org/packages/fe/2b/160ce8c2765e7a481ce57d55eba1546148583e7b6f85514472b1d151711d/cryptography-45.0.5-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:f3562c2f23c612f2e4a6964a61d942f891d29ee320edb62ff48ffb99f3de9ae8", size = 7017143, upload-time = "2025-07-02T13:05:27.229Z" }, + { url = "https://files.pythonhosted.org/packages/c2/e7/2187be2f871c0221a81f55ee3105d3cf3e273c0a0853651d7011eada0d7e/cryptography-45.0.5-cp37-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3fcfbefc4a7f332dece7272a88e410f611e79458fab97b5efe14e54fe476f4fd", size = 4197780, upload-time = "2025-07-02T13:05:29.299Z" }, + { url = "https://files.pythonhosted.org/packages/b9/cf/84210c447c06104e6be9122661159ad4ce7a8190011669afceeaea150524/cryptography-45.0.5-cp37-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:460f8c39ba66af7db0545a8c6f2eabcbc5a5528fc1cf6c3fa9a1e44cec33385e", size = 4420091, upload-time = "2025-07-02T13:05:31.221Z" }, + { url = "https://files.pythonhosted.org/packages/3e/6a/cb8b5c8bb82fafffa23aeff8d3a39822593cee6e2f16c5ca5c2ecca344f7/cryptography-45.0.5-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:9b4cf6318915dccfe218e69bbec417fdd7c7185aa7aab139a2c0beb7468c89f0", size = 4198711, upload-time = "2025-07-02T13:05:33.062Z" }, + { url = "https://files.pythonhosted.org/packages/04/f7/36d2d69df69c94cbb2473871926daf0f01ad8e00fe3986ac3c1e8c4ca4b3/cryptography-45.0.5-cp37-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:2089cc8f70a6e454601525e5bf2779e665d7865af002a5dec8d14e561002e135", size = 3883299, upload-time = "2025-07-02T13:05:34.94Z" }, + { url = "https://files.pythonhosted.org/packages/82/c7/f0ea40f016de72f81288e9fe8d1f6748036cb5ba6118774317a3ffc6022d/cryptography-45.0.5-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:0027d566d65a38497bc37e0dd7c2f8ceda73597d2ac9ba93810204f56f52ebc7", size = 4450558, upload-time = "2025-07-02T13:05:37.288Z" }, + { url = "https://files.pythonhosted.org/packages/06/ae/94b504dc1a3cdf642d710407c62e86296f7da9e66f27ab12a1ee6fdf005b/cryptography-45.0.5-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:be97d3a19c16a9be00edf79dca949c8fa7eff621763666a145f9f9535a5d7f42", size = 4198020, upload-time = "2025-07-02T13:05:39.102Z" }, + { url = "https://files.pythonhosted.org/packages/05/2b/aaf0adb845d5dabb43480f18f7ca72e94f92c280aa983ddbd0bcd6ecd037/cryptography-45.0.5-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:7760c1c2e1a7084153a0f68fab76e754083b126a47d0117c9ed15e69e2103492", size = 4449759, upload-time = "2025-07-02T13:05:41.398Z" }, + { url = "https://files.pythonhosted.org/packages/91/e4/f17e02066de63e0100a3a01b56f8f1016973a1d67551beaf585157a86b3f/cryptography-45.0.5-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:6ff8728d8d890b3dda5765276d1bc6fb099252915a2cd3aff960c4c195745dd0", size = 4319991, upload-time = "2025-07-02T13:05:43.64Z" }, + { url = "https://files.pythonhosted.org/packages/f2/2e/e2dbd629481b499b14516eed933f3276eb3239f7cee2dcfa4ee6b44d4711/cryptography-45.0.5-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:7259038202a47fdecee7e62e0fd0b0738b6daa335354396c6ddebdbe1206af2a", size = 4554189, upload-time = "2025-07-02T13:05:46.045Z" }, + { url = "https://files.pythonhosted.org/packages/f8/ea/a78a0c38f4c8736287b71c2ea3799d173d5ce778c7d6e3c163a95a05ad2a/cryptography-45.0.5-cp37-abi3-win32.whl", hash = "sha256:1e1da5accc0c750056c556a93c3e9cb828970206c68867712ca5805e46dc806f", size = 2911769, upload-time = "2025-07-02T13:05:48.329Z" }, + { url = "https://files.pythonhosted.org/packages/79/b3/28ac139109d9005ad3f6b6f8976ffede6706a6478e21c889ce36c840918e/cryptography-45.0.5-cp37-abi3-win_amd64.whl", hash = "sha256:90cb0a7bb35959f37e23303b7eed0a32280510030daba3f7fdfbb65defde6a97", size = 3390016, upload-time = "2025-07-02T13:05:50.811Z" }, + { url = "https://files.pythonhosted.org/packages/f8/8b/34394337abe4566848a2bd49b26bcd4b07fd466afd3e8cce4cb79a390869/cryptography-45.0.5-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:206210d03c1193f4e1ff681d22885181d47efa1ab3018766a7b32a7b3d6e6afd", size = 3575762, upload-time = "2025-07-02T13:05:53.166Z" }, + { url = "https://files.pythonhosted.org/packages/8b/5d/a19441c1e89afb0f173ac13178606ca6fab0d3bd3ebc29e9ed1318b507fc/cryptography-45.0.5-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c648025b6840fe62e57107e0a25f604db740e728bd67da4f6f060f03017d5097", size = 4140906, upload-time = "2025-07-02T13:05:55.914Z" }, + { url = "https://files.pythonhosted.org/packages/4b/db/daceb259982a3c2da4e619f45b5bfdec0e922a23de213b2636e78ef0919b/cryptography-45.0.5-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b8fa8b0a35a9982a3c60ec79905ba5bb090fc0b9addcfd3dc2dd04267e45f25e", size = 4374411, upload-time = "2025-07-02T13:05:57.814Z" }, + { url = "https://files.pythonhosted.org/packages/6a/35/5d06ad06402fc522c8bf7eab73422d05e789b4e38fe3206a85e3d6966c11/cryptography-45.0.5-pp310-pypy310_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:14d96584701a887763384f3c47f0ca7c1cce322aa1c31172680eb596b890ec30", size = 4140942, upload-time = "2025-07-02T13:06:00.137Z" }, + { url = "https://files.pythonhosted.org/packages/65/79/020a5413347e44c382ef1f7f7e7a66817cd6273e3e6b5a72d18177b08b2f/cryptography-45.0.5-pp310-pypy310_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:57c816dfbd1659a367831baca4b775b2a5b43c003daf52e9d57e1d30bc2e1b0e", size = 4374079, upload-time = "2025-07-02T13:06:02.043Z" }, + { url = "https://files.pythonhosted.org/packages/9b/c5/c0e07d84a9a2a8a0ed4f865e58f37c71af3eab7d5e094ff1b21f3f3af3bc/cryptography-45.0.5-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:b9e38e0a83cd51e07f5a48ff9691cae95a79bea28fe4ded168a8e5c6c77e819d", size = 3321362, upload-time = "2025-07-02T13:06:04.463Z" }, + { url = "https://files.pythonhosted.org/packages/c0/71/9bdbcfd58d6ff5084687fe722c58ac718ebedbc98b9f8f93781354e6d286/cryptography-45.0.5-pp311-pypy311_pp73-macosx_10_9_x86_64.whl", hash = "sha256:8c4a6ff8a30e9e3d38ac0539e9a9e02540ab3f827a3394f8852432f6b0ea152e", size = 3587878, upload-time = "2025-07-02T13:06:06.339Z" }, + { url = "https://files.pythonhosted.org/packages/f0/63/83516cfb87f4a8756eaa4203f93b283fda23d210fc14e1e594bd5f20edb6/cryptography-45.0.5-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:bd4c45986472694e5121084c6ebbd112aa919a25e783b87eb95953c9573906d6", size = 4152447, upload-time = "2025-07-02T13:06:08.345Z" }, + { url = "https://files.pythonhosted.org/packages/22/11/d2823d2a5a0bd5802b3565437add16f5c8ce1f0778bf3822f89ad2740a38/cryptography-45.0.5-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:982518cd64c54fcada9d7e5cf28eabd3ee76bd03ab18e08a48cad7e8b6f31b18", size = 4386778, upload-time = "2025-07-02T13:06:10.263Z" }, + { url = "https://files.pythonhosted.org/packages/5f/38/6bf177ca6bce4fe14704ab3e93627c5b0ca05242261a2e43ef3168472540/cryptography-45.0.5-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:12e55281d993a793b0e883066f590c1ae1e802e3acb67f8b442e721e475e6463", size = 4151627, upload-time = "2025-07-02T13:06:13.097Z" }, + { url = "https://files.pythonhosted.org/packages/38/6a/69fc67e5266bff68a91bcb81dff8fb0aba4d79a78521a08812048913e16f/cryptography-45.0.5-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:5aa1e32983d4443e310f726ee4b071ab7569f58eedfdd65e9675484a4eb67bd1", size = 4385593, upload-time = "2025-07-02T13:06:15.689Z" }, + { url = "https://files.pythonhosted.org/packages/f6/34/31a1604c9a9ade0fdab61eb48570e09a796f4d9836121266447b0eaf7feb/cryptography-45.0.5-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:e357286c1b76403dd384d938f93c46b2b058ed4dfcdce64a770f0537ed3feb6f", size = 3331106, upload-time = "2025-07-02T13:06:18.058Z" }, +] + +[[package]] +name = "cycler" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a9/95/a3dbbb5028f35eafb79008e7522a75244477d2838f38cbb722248dabc2a8/cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c", size = 7615, upload-time = "2023-10-07T05:32:18.335Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321, upload-time = "2023-10-07T05:32:16.783Z" }, +] + +[[package]] +name = "debugpy" +version = "1.8.14" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bd/75/087fe07d40f490a78782ff3b0a30e3968936854105487decdb33446d4b0e/debugpy-1.8.14.tar.gz", hash = "sha256:7cd287184318416850aa8b60ac90105837bb1e59531898c07569d197d2ed5322", size = 1641444, upload-time = "2025-04-10T19:46:10.981Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fc/df/156df75a41aaebd97cee9d3870fe68f8001b6c1c4ca023e221cfce69bece/debugpy-1.8.14-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:93fee753097e85623cab1c0e6a68c76308cd9f13ffdf44127e6fab4fbf024339", size = 2076510, upload-time = "2025-04-10T19:46:13.315Z" }, + { url = "https://files.pythonhosted.org/packages/69/cd/4fc391607bca0996db5f3658762106e3d2427beaef9bfd363fd370a3c054/debugpy-1.8.14-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d937d93ae4fa51cdc94d3e865f535f185d5f9748efb41d0d49e33bf3365bd79", size = 3559614, upload-time = "2025-04-10T19:46:14.647Z" }, + { url = "https://files.pythonhosted.org/packages/1a/42/4e6d2b9d63e002db79edfd0cb5656f1c403958915e0e73ab3e9220012eec/debugpy-1.8.14-cp310-cp310-win32.whl", hash = "sha256:c442f20577b38cc7a9aafecffe1094f78f07fb8423c3dddb384e6b8f49fd2987", size = 5208588, upload-time = "2025-04-10T19:46:16.233Z" }, + { url = "https://files.pythonhosted.org/packages/97/b1/cc9e4e5faadc9d00df1a64a3c2d5c5f4b9df28196c39ada06361c5141f89/debugpy-1.8.14-cp310-cp310-win_amd64.whl", hash = "sha256:f117dedda6d969c5c9483e23f573b38f4e39412845c7bc487b6f2648df30fe84", size = 5241043, upload-time = "2025-04-10T19:46:17.768Z" }, + { url = "https://files.pythonhosted.org/packages/67/e8/57fe0c86915671fd6a3d2d8746e40485fd55e8d9e682388fbb3a3d42b86f/debugpy-1.8.14-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:1b2ac8c13b2645e0b1eaf30e816404990fbdb168e193322be8f545e8c01644a9", size = 2175064, upload-time = "2025-04-10T19:46:19.486Z" }, + { url = "https://files.pythonhosted.org/packages/3b/97/2b2fd1b1c9569c6764ccdb650a6f752e4ac31be465049563c9eb127a8487/debugpy-1.8.14-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf431c343a99384ac7eab2f763980724834f933a271e90496944195318c619e2", size = 3132359, upload-time = "2025-04-10T19:46:21.192Z" }, + { url = "https://files.pythonhosted.org/packages/c0/ee/b825c87ed06256ee2a7ed8bab8fb3bb5851293bf9465409fdffc6261c426/debugpy-1.8.14-cp311-cp311-win32.whl", hash = "sha256:c99295c76161ad8d507b413cd33422d7c542889fbb73035889420ac1fad354f2", size = 5133269, upload-time = "2025-04-10T19:46:23.047Z" }, + { url = "https://files.pythonhosted.org/packages/d5/a6/6c70cd15afa43d37839d60f324213843174c1d1e6bb616bd89f7c1341bac/debugpy-1.8.14-cp311-cp311-win_amd64.whl", hash = "sha256:7816acea4a46d7e4e50ad8d09d963a680ecc814ae31cdef3622eb05ccacf7b01", size = 5158156, upload-time = "2025-04-10T19:46:24.521Z" }, + { url = "https://files.pythonhosted.org/packages/d9/2a/ac2df0eda4898f29c46eb6713a5148e6f8b2b389c8ec9e425a4a1d67bf07/debugpy-1.8.14-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:8899c17920d089cfa23e6005ad9f22582fd86f144b23acb9feeda59e84405b84", size = 2501268, upload-time = "2025-04-10T19:46:26.044Z" }, + { url = "https://files.pythonhosted.org/packages/10/53/0a0cb5d79dd9f7039169f8bf94a144ad3efa52cc519940b3b7dde23bcb89/debugpy-1.8.14-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6bb5c0dcf80ad5dbc7b7d6eac484e2af34bdacdf81df09b6a3e62792b722826", size = 4221077, upload-time = "2025-04-10T19:46:27.464Z" }, + { url = "https://files.pythonhosted.org/packages/f8/d5/84e01821f362327bf4828728aa31e907a2eca7c78cd7c6ec062780d249f8/debugpy-1.8.14-cp312-cp312-win32.whl", hash = "sha256:281d44d248a0e1791ad0eafdbbd2912ff0de9eec48022a5bfbc332957487ed3f", size = 5255127, upload-time = "2025-04-10T19:46:29.467Z" }, + { url = "https://files.pythonhosted.org/packages/33/16/1ed929d812c758295cac7f9cf3dab5c73439c83d9091f2d91871e648093e/debugpy-1.8.14-cp312-cp312-win_amd64.whl", hash = "sha256:5aa56ef8538893e4502a7d79047fe39b1dae08d9ae257074c6464a7b290b806f", size = 5297249, upload-time = "2025-04-10T19:46:31.538Z" }, + { url = "https://files.pythonhosted.org/packages/4d/e4/395c792b243f2367d84202dc33689aa3d910fb9826a7491ba20fc9e261f5/debugpy-1.8.14-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:329a15d0660ee09fec6786acdb6e0443d595f64f5d096fc3e3ccf09a4259033f", size = 2485676, upload-time = "2025-04-10T19:46:32.96Z" }, + { url = "https://files.pythonhosted.org/packages/ba/f1/6f2ee3f991327ad9e4c2f8b82611a467052a0fb0e247390192580e89f7ff/debugpy-1.8.14-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f920c7f9af409d90f5fd26e313e119d908b0dd2952c2393cd3247a462331f15", size = 4217514, upload-time = "2025-04-10T19:46:34.336Z" }, + { url = "https://files.pythonhosted.org/packages/79/28/b9d146f8f2dc535c236ee09ad3e5ac899adb39d7a19b49f03ac95d216beb/debugpy-1.8.14-cp313-cp313-win32.whl", hash = "sha256:3784ec6e8600c66cbdd4ca2726c72d8ca781e94bce2f396cc606d458146f8f4e", size = 5254756, upload-time = "2025-04-10T19:46:36.199Z" }, + { url = "https://files.pythonhosted.org/packages/e0/62/a7b4a57013eac4ccaef6977966e6bec5c63906dd25a86e35f155952e29a1/debugpy-1.8.14-cp313-cp313-win_amd64.whl", hash = "sha256:684eaf43c95a3ec39a96f1f5195a7ff3d4144e4a18d69bb66beeb1a6de605d6e", size = 5297119, upload-time = "2025-04-10T19:46:38.141Z" }, + { url = "https://files.pythonhosted.org/packages/85/6f/96ba96545f55b6a675afa08c96b42810de9b18c7ad17446bbec82762127a/debugpy-1.8.14-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:413512d35ff52c2fb0fd2d65e69f373ffd24f0ecb1fac514c04a668599c5ce7f", size = 2077696, upload-time = "2025-04-10T19:46:46.817Z" }, + { url = "https://files.pythonhosted.org/packages/fa/84/f378a2dd837d94de3c85bca14f1db79f8fcad7e20b108b40d59da56a6d22/debugpy-1.8.14-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c9156f7524a0d70b7a7e22b2e311d8ba76a15496fb00730e46dcdeedb9e1eea", size = 3554846, upload-time = "2025-04-10T19:46:48.72Z" }, + { url = "https://files.pythonhosted.org/packages/db/52/88824fe5d6893f59933f664c6e12783749ab537a2101baf5c713164d8aa2/debugpy-1.8.14-cp39-cp39-win32.whl", hash = "sha256:b44985f97cc3dd9d52c42eb59ee9d7ee0c4e7ecd62bca704891f997de4cef23d", size = 5209350, upload-time = "2025-04-10T19:46:50.284Z" }, + { url = "https://files.pythonhosted.org/packages/41/35/72e9399be24a04cb72cfe1284572c9fcd1d742c7fa23786925c18fa54ad8/debugpy-1.8.14-cp39-cp39-win_amd64.whl", hash = "sha256:b1528cfee6c1b1c698eb10b6b096c598738a8238822d218173d21c3086de8123", size = 5241852, upload-time = "2025-04-10T19:46:52.022Z" }, + { url = "https://files.pythonhosted.org/packages/97/1a/481f33c37ee3ac8040d3d51fc4c4e4e7e61cb08b8bc8971d6032acc2279f/debugpy-1.8.14-py2.py3-none-any.whl", hash = "sha256:5cd9a579d553b6cb9759a7908a41988ee6280b961f24f63336835d9418216a20", size = 5256230, upload-time = "2025-04-10T19:46:54.077Z" }, +] + +[[package]] +name = "decorator" +version = "5.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711, upload-time = "2025-02-24T04:41:34.073Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190, upload-time = "2025-02-24T04:41:32.565Z" }, +] + +[[package]] +name = "exceptiongroup" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0b/9f/a65090624ecf468cdca03533906e7c69ed7588582240cfe7cc9e770b50eb/exceptiongroup-1.3.0.tar.gz", hash = "sha256:b241f5885f560bc56a59ee63ca4c6a8bfa46ae4ad651af316d4e81817bb9fd88", size = 29749, upload-time = "2025-05-10T17:42:51.123Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/36/f4/c6e662dade71f56cd2f3735141b265c3c79293c109549c1e6933b0651ffc/exceptiongroup-1.3.0-py3-none-any.whl", hash = "sha256:4d111e6e0c13d0644cad6ddaa7ed0261a0b36971f6d23e7ec9b4b9097da78a10", size = 16674, upload-time = "2025-05-10T17:42:49.33Z" }, +] + +[[package]] +name = "executing" +version = "2.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/91/50/a9d80c47ff289c611ff12e63f7c5d13942c65d68125160cefd768c73e6e4/executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755", size = 978693, upload-time = "2025-01-22T15:41:29.403Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa", size = 26702, upload-time = "2025-01-22T15:41:25.929Z" }, +] + +[[package]] +name = "filelock" +version = "3.18.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0a/10/c23352565a6544bdc5353e0b15fc1c563352101f30e24bf500207a54df9a/filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2", size = 18075, upload-time = "2025-03-14T07:11:40.47Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de", size = 16215, upload-time = "2025-03-14T07:11:39.145Z" }, +] + +[[package]] +name = "fonttools" +version = "4.58.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/52/97/5735503e58d3816b0989955ef9b2df07e4c99b246469bd8b3823a14095da/fonttools-4.58.5.tar.gz", hash = "sha256:b2a35b0a19f1837284b3a23dd64fd7761b8911d50911ecd2bdbaf5b2d1b5df9c", size = 3526243, upload-time = "2025-07-03T14:04:47.736Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/cd/d2a50d9e9e9f01491993acd557051a05b0bbe57eb47710c6381dca741ac9/fonttools-4.58.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d500d399aa4e92d969a0d21052696fa762385bb23c3e733703af4a195ad9f34c", size = 2749015, upload-time = "2025-07-03T14:03:15.683Z" }, + { url = "https://files.pythonhosted.org/packages/ee/5e/8f9a4781f79042b2efb68a1636b9013c54f80311dbbc05e6a4bacdaf7661/fonttools-4.58.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b00530b84f87792891874938bd42f47af2f7f4c2a1d70466e6eb7166577853ab", size = 2319224, upload-time = "2025-07-03T14:03:18.627Z" }, + { url = "https://files.pythonhosted.org/packages/51/87/dddb6c9b4af1f49b100e3ec84d45c769947fd8e58943d35a58f27aa017b0/fonttools-4.58.5-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c5579fb3744dfec151b5c29b35857df83e01f06fe446e8c2ebaf1effd7e6cdce", size = 4839510, upload-time = "2025-07-03T14:03:22.785Z" }, + { url = "https://files.pythonhosted.org/packages/30/57/63fd49a3328e39e3f8868dd0b0f00370f4f40c4bd44a8478efad3338ebd9/fonttools-4.58.5-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:adf440deecfcc2390998e649156e3bdd0b615863228c484732dc06ac04f57385", size = 4768294, upload-time = "2025-07-03T14:03:24.853Z" }, + { url = "https://files.pythonhosted.org/packages/84/1a/e943dfecf56b48d7e684be7c37749c48560461d14f480b4e7c42285976ce/fonttools-4.58.5-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a81769fc4d473c808310c9ed91fbe01b67f615e3196fb9773e093939f59e6783", size = 4820057, upload-time = "2025-07-03T14:03:26.939Z" }, + { url = "https://files.pythonhosted.org/packages/02/68/04e9dd0b711ca720f5473adde9325941c73faf947b771ea21fac9e3613c3/fonttools-4.58.5-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0162a6a37b0ca70d8505311d541e291cd6cab54d1a986ae3d2686c56c0581e8f", size = 4927299, upload-time = "2025-07-03T14:03:29.136Z" }, + { url = "https://files.pythonhosted.org/packages/80/82/9d36a24c47ae4b93377332343b4f018c965e9c4835bbebaed951f99784d0/fonttools-4.58.5-cp310-cp310-win32.whl", hash = "sha256:1cde303422198fdc7f502dbdf1bf65306166cdb9446debd6c7fb826b4d66a530", size = 2203042, upload-time = "2025-07-03T14:03:31.139Z" }, + { url = "https://files.pythonhosted.org/packages/b7/d1/c2c3582d575ef901cad6cfbe77aa5396debd652f51bf32b6963245f00dfa/fonttools-4.58.5-cp310-cp310-win_amd64.whl", hash = "sha256:75cf8c2812c898dd3d70d62b2b768df4eeb524a83fb987a512ddb3863d6a8c54", size = 2247338, upload-time = "2025-07-03T14:03:33.24Z" }, + { url = "https://files.pythonhosted.org/packages/14/50/26c683bf6f30dcbde6955c8e07ec6af23764aab86ff06b36383654ab6739/fonttools-4.58.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:cda226253bf14c559bc5a17c570d46abd70315c9a687d91c0e01147f87736182", size = 2769557, upload-time = "2025-07-03T14:03:35.383Z" }, + { url = "https://files.pythonhosted.org/packages/b1/00/c3c75fb6196b9ff9988e6a82319ae23f4ae7098e1c01e2408e58d2e7d9c7/fonttools-4.58.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:83a96e4a4e65efd6c098da549ec34f328f08963acd2d7bc910ceba01d2dc73e6", size = 2329367, upload-time = "2025-07-03T14:03:37.322Z" }, + { url = "https://files.pythonhosted.org/packages/59/e9/6946366c8e88650c199da9b284559de5d47a6e66ed6d175a166953347959/fonttools-4.58.5-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2d172b92dff59ef8929b4452d5a7b19b8e92081aa87bfb2d82b03b1ff14fc667", size = 5019491, upload-time = "2025-07-03T14:03:39.759Z" }, + { url = "https://files.pythonhosted.org/packages/76/12/2f3f7d09bba7a93bd48dcb54b170fba665f0b7e80e959ac831b907d40785/fonttools-4.58.5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0bfddfd09aafbbfb3bd98ae67415fbe51eccd614c17db0c8844fe724fbc5d43d", size = 4961579, upload-time = "2025-07-03T14:03:41.611Z" }, + { url = "https://files.pythonhosted.org/packages/2c/95/87e84071189e51c714074646dfac8275b2e9c6b2b118600529cc74f7451e/fonttools-4.58.5-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cfde5045f1bc92ad11b4b7551807564045a1b38cb037eb3c2bc4e737cd3a8d0f", size = 4997792, upload-time = "2025-07-03T14:03:44.529Z" }, + { url = "https://files.pythonhosted.org/packages/73/47/5c4df7473ecbeb8aa4e01373e4f614ca33f53227fe13ae673c6d5ca99be7/fonttools-4.58.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3515ac47a9a5ac025d2899d195198314023d89492340ba86e4ba79451f7518a8", size = 5109361, upload-time = "2025-07-03T14:03:46.693Z" }, + { url = "https://files.pythonhosted.org/packages/06/00/31406853c570210232b845e08e5a566e15495910790381566ffdbdc7f9a2/fonttools-4.58.5-cp311-cp311-win32.whl", hash = "sha256:9f7e2ab9c10b6811b4f12a0768661325a48e664ec0a0530232c1605896a598db", size = 2201369, upload-time = "2025-07-03T14:03:48.885Z" }, + { url = "https://files.pythonhosted.org/packages/c5/90/ac0facb57962cef53a5734d0be5d2f2936e55aa5c62647c38ca3497263d8/fonttools-4.58.5-cp311-cp311-win_amd64.whl", hash = "sha256:126c16ec4a672c9cb5c1c255dc438d15436b470afc8e9cac25a2d39dd2dc26eb", size = 2249021, upload-time = "2025-07-03T14:03:51.232Z" }, + { url = "https://files.pythonhosted.org/packages/d6/68/66b498ee66f3e7e92fd68476c2509508082b7f57d68c0cdb4b8573f44331/fonttools-4.58.5-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:c3af3fefaafb570a03051a0d6899b8374dcf8e6a4560e42575843aef33bdbad6", size = 2754751, upload-time = "2025-07-03T14:03:52.976Z" }, + { url = "https://files.pythonhosted.org/packages/f1/1e/edbc14b79290980c3944a1f43098624bc8965f534964aa03d52041f24cb4/fonttools-4.58.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:688137789dbd44e8757ad77b49a771539d8069195ffa9a8bcf18176e90bbd86d", size = 2322342, upload-time = "2025-07-03T14:03:54.957Z" }, + { url = "https://files.pythonhosted.org/packages/c1/d7/3c87cf147185d91c2e946460a5cf68c236427b4a23ab96793ccb7d8017c9/fonttools-4.58.5-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:2af65836cf84cd7cb882d0b353bdc73643a497ce23b7414c26499bb8128ca1af", size = 4897011, upload-time = "2025-07-03T14:03:56.829Z" }, + { url = "https://files.pythonhosted.org/packages/a0/d6/fbb44cc85d4195fe54356658bd9f934328b4f74ae14addd90b4b5558b5c9/fonttools-4.58.5-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d2d79cfeb456bf438cb9fb87437634d4d6f228f27572ca5c5355e58472d5519d", size = 4942291, upload-time = "2025-07-03T14:03:59.204Z" }, + { url = "https://files.pythonhosted.org/packages/4d/c8/453f82e21aedf25cdc2ae619c03a73512398cec9bd8b6c3b1c571e0b6632/fonttools-4.58.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0feac9dda9a48a7a342a593f35d50a5cee2dbd27a03a4c4a5192834a4853b204", size = 4886824, upload-time = "2025-07-03T14:04:01.517Z" }, + { url = "https://files.pythonhosted.org/packages/40/54/e9190001b8e22d123f78925b2f508c866d9d18531694b979277ad45d59b0/fonttools-4.58.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:36555230e168511e83ad8637232268649634b8dfff6ef58f46e1ebc057a041ad", size = 5038510, upload-time = "2025-07-03T14:04:03.917Z" }, + { url = "https://files.pythonhosted.org/packages/cf/9c/07cdad4774841a6304aabae939f8cbb9538cb1d8e97f5016b334da98e73a/fonttools-4.58.5-cp312-cp312-win32.whl", hash = "sha256:26ec05319353842d127bd02516eacb25b97ca83966e40e9ad6fab85cab0576f4", size = 2188459, upload-time = "2025-07-03T14:04:06.103Z" }, + { url = "https://files.pythonhosted.org/packages/0e/4d/1eaaad22781d55f49d1b184563842172aeb6a4fe53c029e503be81114314/fonttools-4.58.5-cp312-cp312-win_amd64.whl", hash = "sha256:778a632e538f82c1920579c0c01566a8f83dc24470c96efbf2fbac698907f569", size = 2236565, upload-time = "2025-07-03T14:04:08.27Z" }, + { url = "https://files.pythonhosted.org/packages/3a/ee/764dd8b99891f815241f449345863cfed9e546923d9cef463f37fd1d7168/fonttools-4.58.5-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:f4b6f1360da13cecc88c0d60716145b31e1015fbe6a59e32f73a4404e2ea92cf", size = 2745867, upload-time = "2025-07-03T14:04:10.586Z" }, + { url = "https://files.pythonhosted.org/packages/e2/23/8fef484c02fef55e226dfeac4339a015c5480b6a496064058491759ac71e/fonttools-4.58.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4a036822e915692aa2c03e2decc60f49a8190f8111b639c947a4f4e5774d0d7a", size = 2317933, upload-time = "2025-07-03T14:04:12.335Z" }, + { url = "https://files.pythonhosted.org/packages/ab/47/f92b135864fa777e11ad68420bf89446c91a572fe2782745586f8e6aac0c/fonttools-4.58.5-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:a6d7709fcf4577b0f294ee6327088884ca95046e1eccde87c53bbba4d5008541", size = 4877844, upload-time = "2025-07-03T14:04:14.58Z" }, + { url = "https://files.pythonhosted.org/packages/3e/65/6c1a83511d8ac32411930495645edb3f8dfabebcb78f08cf6009ba2585ec/fonttools-4.58.5-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b9b5099ca99b79d6d67162778b1b1616fc0e1de02c1a178248a0da8d78a33852", size = 4940106, upload-time = "2025-07-03T14:04:16.563Z" }, + { url = "https://files.pythonhosted.org/packages/fa/90/df8eb77d6cf266cbbba01866a1349a3e9121e0a63002cf8d6754e994f755/fonttools-4.58.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:3f2c05a8d82a4d15aebfdb3506e90793aea16e0302cec385134dd960647a36c0", size = 4879458, upload-time = "2025-07-03T14:04:19.584Z" }, + { url = "https://files.pythonhosted.org/packages/26/b1/e32f8de51b7afcfea6ad62780da2fa73212c43a32cd8cafcc852189d7949/fonttools-4.58.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:79f0c4b1cc63839b61deeac646d8dba46f8ed40332c2ac1b9997281462c2e4ba", size = 5021917, upload-time = "2025-07-03T14:04:21.736Z" }, + { url = "https://files.pythonhosted.org/packages/89/72/578aa7fe32918dd763c62f447aaed672d665ee10e3eeb1725f4d6493fe96/fonttools-4.58.5-cp313-cp313-win32.whl", hash = "sha256:a1a9a2c462760976882131cbab7d63407813413a2d32cd699e86a1ff22bf7aa5", size = 2186827, upload-time = "2025-07-03T14:04:24.237Z" }, + { url = "https://files.pythonhosted.org/packages/71/a3/21e921b16cb9c029d3308e0cb79c9a937e9ff1fc1ee28c2419f0957b9e7c/fonttools-4.58.5-cp313-cp313-win_amd64.whl", hash = "sha256:bca61b14031a4b7dc87e14bf6ca34c275f8e4b9f7a37bc2fe746b532a924cf30", size = 2235706, upload-time = "2025-07-03T14:04:26.082Z" }, + { url = "https://files.pythonhosted.org/packages/9d/76/170fb1bbe5e846500bf9715a68d6c5510a68c2f6fbba7a0f406cb2cc09a3/fonttools-4.58.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:082410bc40014db55be5457836043f0dd1e6b3817c7d11a0aeb44eaa862890af", size = 2755197, upload-time = "2025-07-03T14:04:28.308Z" }, + { url = "https://files.pythonhosted.org/packages/4b/4e/1408d99d6f849d9f88800d062267b2a14ffac4ee782c1242fe2334b08eb5/fonttools-4.58.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0b0983be58d8c8acb11161fdd3b43d64015cef8c3d65ad9289a252243b236128", size = 2322376, upload-time = "2025-07-03T14:04:30.053Z" }, + { url = "https://files.pythonhosted.org/packages/cd/d9/9cd095d3aa3a1b42a9f9d9f12ad77cae1637a49ca41933464b87dfd99101/fonttools-4.58.5-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b5a0e28fb6abc31ba45a2d11dc2fe826e5a074013d13b7b447b441e8236e5f1c", size = 4819660, upload-time = "2025-07-03T14:04:32.494Z" }, + { url = "https://files.pythonhosted.org/packages/69/b9/d7489c4c30cadba207919126a0b8657ca653d3a275589561341f84ed8855/fonttools-4.58.5-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d506652abc285934ee949a5f3a952c5d52a09257bc2ba44a92db3ec2804c76fe", size = 4749728, upload-time = "2025-07-03T14:04:34.532Z" }, + { url = "https://files.pythonhosted.org/packages/fa/03/cd03bc4e62af9d2b783a4e6b815ebb4b1aff22f10c2169522297f323454e/fonttools-4.58.5-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:9e2d71676025dd74a21d682be36d4846aa03644c619f2c2d695a11a7262433f6", size = 4802679, upload-time = "2025-07-03T14:04:36.728Z" }, + { url = "https://files.pythonhosted.org/packages/b6/8c/afe474eb489b9abd7785b2a12668faede78dabd52c391bb5f4cd0e9db67c/fonttools-4.58.5-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:eb46a73759efc8a7eca40203843241cd3c79aa983ed7f7515548ed3d82073761", size = 4911759, upload-time = "2025-07-03T14:04:38.96Z" }, + { url = "https://files.pythonhosted.org/packages/be/aa/0d1f16a48b4db6bf7f61193ebe666c8d49c7c36364baa604530835be8898/fonttools-4.58.5-cp39-cp39-win32.whl", hash = "sha256:bf09f14d73a18c62eb9ad1cac98a37569241ba3cd5789cc578286c128cc29f7f", size = 1472353, upload-time = "2025-07-03T14:04:41.205Z" }, + { url = "https://files.pythonhosted.org/packages/d9/02/78cf284e22254c20d673103a9d8c28a9bab6c56d927ca19dbe95bffd9ccd/fonttools-4.58.5-cp39-cp39-win_amd64.whl", hash = "sha256:8ddb7c0c3e91b187acc1bed31857376926569a18a348ac58d6a71eb8a6b22393", size = 1517191, upload-time = "2025-07-03T14:04:43.665Z" }, + { url = "https://files.pythonhosted.org/packages/d7/d4/1d85a1996b6188cd2713230e002d79a6f3a289bb17cef600cba385848b72/fonttools-4.58.5-py3-none-any.whl", hash = "sha256:e48a487ed24d9b611c5c4b25db1e50e69e9854ca2670e39a3486ffcd98863ec4", size = 1115318, upload-time = "2025-07-03T14:04:45.378Z" }, +] + +[[package]] +name = "fsspec" +version = "2025.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/00/f7/27f15d41f0ed38e8fcc488584b57e902b331da7f7c6dcda53721b15838fc/fsspec-2025.5.1.tar.gz", hash = "sha256:2e55e47a540b91843b755e83ded97c6e897fa0942b11490113f09e9c443c2475", size = 303033, upload-time = "2025-05-24T12:03:23.792Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bb/61/78c7b3851add1481b048b5fdc29067397a1784e2910592bc81bb3f608635/fsspec-2025.5.1-py3-none-any.whl", hash = "sha256:24d3a2e663d5fc735ab256263c4075f374a174c3410c0b25e5bd1970bceaa462", size = 199052, upload-time = "2025-05-24T12:03:21.66Z" }, +] + +[[package]] +name = "fusionaihub" +version = "0.0.1" +source = { editable = "." } +dependencies = [ + { name = "h5py" }, + { name = "ipykernel" }, + { name = "ipywidgets" }, + { name = "matplotlib", version = "3.9.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "matplotlib", version = "3.10.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "opencv-python" }, + { name = "pandas" }, + { name = "paramiko" }, + { name = "pyyaml" }, + { name = "scikit-learn", version = "1.6.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "scikit-learn", version = "1.7.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "scipy", version = "1.13.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "scipy", version = "1.16.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "tables", version = "3.9.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "tables", version = "3.10.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "tables", version = "3.10.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "torch", version = "2.7.1", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version >= '3.10' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, + { name = "torch", version = "2.7.1+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version < '3.10' and platform_machine != 'arm64') or sys_platform != 'darwin'" }, + { name = "tqdm" }, +] + +[package.metadata] +requires-dist = [ + { name = "h5py" }, + { name = "ipykernel", specifier = ">=6.29.5" }, + { name = "ipywidgets", specifier = ">=8.1.7" }, + { name = "matplotlib" }, + { name = "numpy" }, + { name = "opencv-python" }, + { name = "pandas" }, + { name = "paramiko" }, + { name = "pyyaml", specifier = ">=6.0.2" }, + { name = "scikit-learn", specifier = ">=1.6.1" }, + { name = "scipy" }, + { name = "tables", specifier = ">=3.9.2" }, + { name = "torch", specifier = ">=2.7.1", index = "https://download.pytorch.org/whl/cpu" }, + { name = "tqdm" }, +] + +[[package]] +name = "h5py" +version = "3.14.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5d/57/dfb3c5c3f1bf5f5ef2e59a22dec4ff1f3d7408b55bfcefcfb0ea69ef21c6/h5py-3.14.0.tar.gz", hash = "sha256:2372116b2e0d5d3e5e705b7f663f7c8d96fa79a4052d250484ef91d24d6a08f4", size = 424323, upload-time = "2025-06-06T14:06:15.01Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/52/89/06cbb421e01dea2e338b3154326523c05d9698f89a01f9d9b65e1ec3fb18/h5py-3.14.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:24df6b2622f426857bda88683b16630014588a0e4155cba44e872eb011c4eaed", size = 3332522, upload-time = "2025-06-06T14:04:13.775Z" }, + { url = "https://files.pythonhosted.org/packages/c3/e7/6c860b002329e408348735bfd0459e7b12f712c83d357abeef3ef404eaa9/h5py-3.14.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6ff2389961ee5872de697054dd5a033b04284afc3fb52dc51d94561ece2c10c6", size = 2831051, upload-time = "2025-06-06T14:04:18.206Z" }, + { url = "https://files.pythonhosted.org/packages/fa/cd/3dd38cdb7cc9266dc4d85f27f0261680cb62f553f1523167ad7454e32b11/h5py-3.14.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:016e89d3be4c44f8d5e115fab60548e518ecd9efe9fa5c5324505a90773e6f03", size = 4324677, upload-time = "2025-06-06T14:04:23.438Z" }, + { url = "https://files.pythonhosted.org/packages/b1/45/e1a754dc7cd465ba35e438e28557119221ac89b20aaebef48282654e3dc7/h5py-3.14.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1223b902ef0b5d90bcc8a4778218d6d6cd0f5561861611eda59fa6c52b922f4d", size = 4557272, upload-time = "2025-06-06T14:04:28.863Z" }, + { url = "https://files.pythonhosted.org/packages/5c/06/f9506c1531645829d302c420851b78bb717af808dde11212c113585fae42/h5py-3.14.0-cp310-cp310-win_amd64.whl", hash = "sha256:852b81f71df4bb9e27d407b43071d1da330d6a7094a588efa50ef02553fa7ce4", size = 2866734, upload-time = "2025-06-06T14:04:33.5Z" }, + { url = "https://files.pythonhosted.org/packages/61/1b/ad24a8ce846cf0519695c10491e99969d9d203b9632c4fcd5004b1641c2e/h5py-3.14.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f30dbc58f2a0efeec6c8836c97f6c94afd769023f44e2bb0ed7b17a16ec46088", size = 3352382, upload-time = "2025-06-06T14:04:37.95Z" }, + { url = "https://files.pythonhosted.org/packages/36/5b/a066e459ca48b47cc73a5c668e9924d9619da9e3c500d9fb9c29c03858ec/h5py-3.14.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:543877d7f3d8f8a9828ed5df6a0b78ca3d8846244b9702e99ed0d53610b583a8", size = 2852492, upload-time = "2025-06-06T14:04:42.092Z" }, + { url = "https://files.pythonhosted.org/packages/08/0c/5e6aaf221557314bc15ba0e0da92e40b24af97ab162076c8ae009320a42b/h5py-3.14.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c497600c0496548810047257e36360ff551df8b59156d3a4181072eed47d8ad", size = 4298002, upload-time = "2025-06-06T14:04:47.106Z" }, + { url = "https://files.pythonhosted.org/packages/21/d4/d461649cafd5137088fb7f8e78fdc6621bb0c4ff2c090a389f68e8edc136/h5py-3.14.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:723a40ee6505bd354bfd26385f2dae7bbfa87655f4e61bab175a49d72ebfc06b", size = 4516618, upload-time = "2025-06-06T14:04:52.467Z" }, + { url = "https://files.pythonhosted.org/packages/db/0c/6c3f879a0f8e891625817637fad902da6e764e36919ed091dc77529004ac/h5py-3.14.0-cp311-cp311-win_amd64.whl", hash = "sha256:d2744b520440a996f2dae97f901caa8a953afc055db4673a993f2d87d7f38713", size = 2874888, upload-time = "2025-06-06T14:04:56.95Z" }, + { url = "https://files.pythonhosted.org/packages/3e/77/8f651053c1843391e38a189ccf50df7e261ef8cd8bfd8baba0cbe694f7c3/h5py-3.14.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e0045115d83272090b0717c555a31398c2c089b87d212ceba800d3dc5d952e23", size = 3312740, upload-time = "2025-06-06T14:05:01.193Z" }, + { url = "https://files.pythonhosted.org/packages/ff/10/20436a6cf419b31124e59fefc78d74cb061ccb22213226a583928a65d715/h5py-3.14.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6da62509b7e1d71a7d110478aa25d245dd32c8d9a1daee9d2a42dba8717b047a", size = 2829207, upload-time = "2025-06-06T14:05:05.061Z" }, + { url = "https://files.pythonhosted.org/packages/3f/19/c8bfe8543bfdd7ccfafd46d8cfd96fce53d6c33e9c7921f375530ee1d39a/h5py-3.14.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:554ef0ced3571366d4d383427c00c966c360e178b5fb5ee5bb31a435c424db0c", size = 4708455, upload-time = "2025-06-06T14:05:11.528Z" }, + { url = "https://files.pythonhosted.org/packages/86/f9/f00de11c82c88bfc1ef22633557bfba9e271e0cb3189ad704183fc4a2644/h5py-3.14.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0cbd41f4e3761f150aa5b662df991868ca533872c95467216f2bec5fcad84882", size = 4929422, upload-time = "2025-06-06T14:05:18.399Z" }, + { url = "https://files.pythonhosted.org/packages/7a/6d/6426d5d456f593c94b96fa942a9b3988ce4d65ebaf57d7273e452a7222e8/h5py-3.14.0-cp312-cp312-win_amd64.whl", hash = "sha256:bf4897d67e613ecf5bdfbdab39a1158a64df105827da70ea1d90243d796d367f", size = 2862845, upload-time = "2025-06-06T14:05:23.699Z" }, + { url = "https://files.pythonhosted.org/packages/6c/c2/7efe82d09ca10afd77cd7c286e42342d520c049a8c43650194928bcc635c/h5py-3.14.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:aa4b7bbce683379b7bf80aaba68e17e23396100336a8d500206520052be2f812", size = 3289245, upload-time = "2025-06-06T14:05:28.24Z" }, + { url = "https://files.pythonhosted.org/packages/4f/31/f570fab1239b0d9441024b92b6ad03bb414ffa69101a985e4c83d37608bd/h5py-3.14.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ef9603a501a04fcd0ba28dd8f0995303d26a77a980a1f9474b3417543d4c6174", size = 2807335, upload-time = "2025-06-06T14:05:31.997Z" }, + { url = "https://files.pythonhosted.org/packages/0d/ce/3a21d87896bc7e3e9255e0ad5583ae31ae9e6b4b00e0bcb2a67e2b6acdbc/h5py-3.14.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8cbaf6910fa3983c46172666b0b8da7b7bd90d764399ca983236f2400436eeb", size = 4700675, upload-time = "2025-06-06T14:05:37.38Z" }, + { url = "https://files.pythonhosted.org/packages/e7/ec/86f59025306dcc6deee5fda54d980d077075b8d9889aac80f158bd585f1b/h5py-3.14.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d90e6445ab7c146d7f7981b11895d70bc1dd91278a4f9f9028bc0c95e4a53f13", size = 4921632, upload-time = "2025-06-06T14:05:43.464Z" }, + { url = "https://files.pythonhosted.org/packages/3f/6d/0084ed0b78d4fd3e7530c32491f2884140d9b06365dac8a08de726421d4a/h5py-3.14.0-cp313-cp313-win_amd64.whl", hash = "sha256:ae18e3de237a7a830adb76aaa68ad438d85fe6e19e0d99944a3ce46b772c69b3", size = 2852929, upload-time = "2025-06-06T14:05:47.659Z" }, + { url = "https://files.pythonhosted.org/packages/ec/ac/9ea82488c8790ee5b6ad1a807cd7dc3b9dadfece1cd0e0e369f68a7a8937/h5py-3.14.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f5cc1601e78027cedfec6dd50efb4802f018551754191aeb58d948bd3ec3bd7a", size = 3345097, upload-time = "2025-06-06T14:05:51.984Z" }, + { url = "https://files.pythonhosted.org/packages/6c/bc/a172ecaaf287e3af2f837f23b470b0a2229c79555a0da9ac8b5cc5bed078/h5py-3.14.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5e59d2136a8b302afd25acdf7a89b634e0eb7c66b1a211ef2d0457853768a2ef", size = 2843320, upload-time = "2025-06-06T14:05:55.754Z" }, + { url = "https://files.pythonhosted.org/packages/66/40/b423b57696514e05aa7bb06150ef96667d0e0006cc6de7ab52c71734ab51/h5py-3.14.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:573c33ad056ac7c1ab6d567b6db9df3ffc401045e3f605736218f96c1e0490c6", size = 4326368, upload-time = "2025-06-06T14:06:00.782Z" }, + { url = "https://files.pythonhosted.org/packages/f7/07/e088f89f04fdbe57ddf9de377f857158d3daa38cf5d0fb20ef9bd489e313/h5py-3.14.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ccbe17dc187c0c64178f1a10aa274ed3a57d055117588942b8a08793cc448216", size = 4559686, upload-time = "2025-06-06T14:06:07.416Z" }, + { url = "https://files.pythonhosted.org/packages/b4/e4/fb8032d0e5480b1db9b419b5b50737b61bb3c7187c49d809975d62129fb0/h5py-3.14.0-cp39-cp39-win_amd64.whl", hash = "sha256:4f025cf30ae738c4c4e38c7439a761a71ccfcce04c2b87b2a2ac64e8c5171d43", size = 2877166, upload-time = "2025-06-06T14:06:13.05Z" }, +] + +[[package]] +name = "idna" +version = "3.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490, upload-time = "2024-09-15T18:07:39.745Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442, upload-time = "2024-09-15T18:07:37.964Z" }, +] + +[[package]] +name = "importlib-metadata" +version = "8.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "zipp", marker = "python_full_version < '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/76/66/650a33bd90f786193e4de4b3ad86ea60b53c89b669a5c7be931fac31cdb0/importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000", size = 56641, upload-time = "2025-04-27T15:29:01.736Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/b0/36bd937216ec521246249be3bf9855081de4c5e06a0c9b4219dbeda50373/importlib_metadata-8.7.0-py3-none-any.whl", hash = "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd", size = 27656, upload-time = "2025-04-27T15:29:00.214Z" }, +] + +[[package]] +name = "importlib-resources" +version = "6.5.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "zipp", marker = "python_full_version < '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cf/8c/f834fbf984f691b4f7ff60f50b514cc3de5cc08abfc3295564dd89c5e2e7/importlib_resources-6.5.2.tar.gz", hash = "sha256:185f87adef5bcc288449d98fb4fba07cea78bc036455dd44c5fc4a2fe78fed2c", size = 44693, upload-time = "2025-01-03T18:51:56.698Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a4/ed/1f1afb2e9e7f38a545d628f864d562a5ae64fe6f7a10e28ffb9b185b4e89/importlib_resources-6.5.2-py3-none-any.whl", hash = "sha256:789cfdc3ed28c78b67a06acb8126751ced69a3d5f79c095a98298cd8a760ccec", size = 37461, upload-time = "2025-01-03T18:51:54.306Z" }, +] + +[[package]] +name = "ipykernel" +version = "6.29.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "appnope", marker = "sys_platform == 'darwin'" }, + { name = "comm" }, + { name = "debugpy" }, + { name = "ipython", version = "8.18.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "ipython", version = "8.37.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "ipython", version = "9.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "matplotlib-inline" }, + { name = "nest-asyncio" }, + { name = "packaging" }, + { name = "psutil" }, + { name = "pyzmq" }, + { name = "tornado" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e9/5c/67594cb0c7055dc50814b21731c22a601101ea3b1b50a9a1b090e11f5d0f/ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215", size = 163367, upload-time = "2024-07-01T14:07:22.543Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/94/5c/368ae6c01c7628438358e6d337c19b05425727fbb221d2a3c4303c372f42/ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5", size = 117173, upload-time = "2024-07-01T14:07:19.603Z" }, +] + +[[package]] +name = "ipython" +version = "8.18.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", + "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "colorama", marker = "python_full_version < '3.10' and sys_platform == 'win32'" }, + { name = "decorator", marker = "python_full_version < '3.10'" }, + { name = "exceptiongroup", marker = "python_full_version < '3.10'" }, + { name = "jedi", marker = "python_full_version < '3.10'" }, + { name = "matplotlib-inline", marker = "python_full_version < '3.10'" }, + { name = "pexpect", marker = "python_full_version < '3.10' and sys_platform != 'win32'" }, + { name = "prompt-toolkit", marker = "python_full_version < '3.10'" }, + { name = "pygments", marker = "python_full_version < '3.10'" }, + { name = "stack-data", marker = "python_full_version < '3.10'" }, + { name = "traitlets", marker = "python_full_version < '3.10'" }, + { name = "typing-extensions", marker = "python_full_version < '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b1/b9/3ba6c45a6df813c09a48bac313c22ff83efa26cbb55011218d925a46e2ad/ipython-8.18.1.tar.gz", hash = "sha256:ca6f079bb33457c66e233e4580ebfc4128855b4cf6370dddd73842a9563e8a27", size = 5486330, upload-time = "2023-11-27T09:58:34.596Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/47/6b/d9fdcdef2eb6a23f391251fde8781c38d42acd82abe84d054cb74f7863b0/ipython-8.18.1-py3-none-any.whl", hash = "sha256:e8267419d72d81955ec1177f8a29aaa90ac80ad647499201119e2f05e99aa397", size = 808161, upload-time = "2023-11-27T09:58:30.538Z" }, +] + +[[package]] +name = "ipython" +version = "8.37.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "colorama", marker = "python_full_version == '3.10.*' and sys_platform == 'win32'" }, + { name = "decorator", marker = "python_full_version == '3.10.*'" }, + { name = "exceptiongroup", marker = "python_full_version == '3.10.*'" }, + { name = "jedi", marker = "python_full_version == '3.10.*'" }, + { name = "matplotlib-inline", marker = "python_full_version == '3.10.*'" }, + { name = "pexpect", marker = "python_full_version == '3.10.*' and sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "prompt-toolkit", marker = "python_full_version == '3.10.*'" }, + { name = "pygments", marker = "python_full_version == '3.10.*'" }, + { name = "stack-data", marker = "python_full_version == '3.10.*'" }, + { name = "traitlets", marker = "python_full_version == '3.10.*'" }, + { name = "typing-extensions", marker = "python_full_version == '3.10.*'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/85/31/10ac88f3357fc276dc8a64e8880c82e80e7459326ae1d0a211b40abf6665/ipython-8.37.0.tar.gz", hash = "sha256:ca815841e1a41a1e6b73a0b08f3038af9b2252564d01fc405356d34033012216", size = 5606088, upload-time = "2025-05-31T16:39:09.613Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/91/d0/274fbf7b0b12643cbbc001ce13e6a5b1607ac4929d1b11c72460152c9fc3/ipython-8.37.0-py3-none-any.whl", hash = "sha256:ed87326596b878932dbcb171e3e698845434d8c61b8d8cd474bf663041a9dcf2", size = 831864, upload-time = "2025-05-31T16:39:06.38Z" }, +] + +[[package]] +name = "ipython" +version = "9.4.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "colorama", marker = "python_full_version >= '3.11' and sys_platform == 'win32'" }, + { name = "decorator", marker = "python_full_version >= '3.11'" }, + { name = "ipython-pygments-lexers", marker = "python_full_version >= '3.11'" }, + { name = "jedi", marker = "python_full_version >= '3.11'" }, + { name = "matplotlib-inline", marker = "python_full_version >= '3.11'" }, + { name = "pexpect", marker = "python_full_version >= '3.11' and sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "prompt-toolkit", marker = "python_full_version >= '3.11'" }, + { name = "pygments", marker = "python_full_version >= '3.11'" }, + { name = "stack-data", marker = "python_full_version >= '3.11'" }, + { name = "traitlets", marker = "python_full_version >= '3.11'" }, + { name = "typing-extensions", marker = "python_full_version == '3.11.*'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/54/80/406f9e3bde1c1fd9bf5a0be9d090f8ae623e401b7670d8f6fdf2ab679891/ipython-9.4.0.tar.gz", hash = "sha256:c033c6d4e7914c3d9768aabe76bbe87ba1dc66a92a05db6bfa1125d81f2ee270", size = 4385338, upload-time = "2025-07-01T11:11:30.606Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/63/f8/0031ee2b906a15a33d6bfc12dd09c3dfa966b3cb5b284ecfb7549e6ac3c4/ipython-9.4.0-py3-none-any.whl", hash = "sha256:25850f025a446d9b359e8d296ba175a36aedd32e83ca9b5060430fe16801f066", size = 611021, upload-time = "2025-07-01T11:11:27.85Z" }, +] + +[[package]] +name = "ipython-pygments-lexers" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pygments", marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393, upload-time = "2025-01-17T11:24:34.505Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074, upload-time = "2025-01-17T11:24:33.271Z" }, +] + +[[package]] +name = "ipywidgets" +version = "8.1.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "comm" }, + { name = "ipython", version = "8.18.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "ipython", version = "8.37.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "ipython", version = "9.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "jupyterlab-widgets" }, + { name = "traitlets" }, + { name = "widgetsnbextension" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3e/48/d3dbac45c2814cb73812f98dd6b38bbcc957a4e7bb31d6ea9c03bf94ed87/ipywidgets-8.1.7.tar.gz", hash = "sha256:15f1ac050b9ccbefd45dccfbb2ef6bed0029d8278682d569d71b8dd96bee0376", size = 116721, upload-time = "2025-05-05T12:42:03.489Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/58/6a/9166369a2f092bd286d24e6307de555d63616e8ddb373ebad2b5635ca4cd/ipywidgets-8.1.7-py3-none-any.whl", hash = "sha256:764f2602d25471c213919b8a1997df04bef869251db4ca8efba1b76b1bd9f7bb", size = 139806, upload-time = "2025-05-05T12:41:56.833Z" }, +] + +[[package]] +name = "jedi" +version = "0.19.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "parso" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/72/3a/79a912fbd4d8dd6fbb02bf69afd3bb72cf0c729bb3063c6f4498603db17a/jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0", size = 1231287, upload-time = "2024-11-11T01:41:42.873Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", size = 1572278, upload-time = "2024-11-11T01:41:40.175Z" }, +] + +[[package]] +name = "jinja2" +version = "3.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, +] + +[[package]] +name = "joblib" +version = "1.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/dc/fe/0f5a938c54105553436dbff7a61dc4fed4b1b2c98852f8833beaf4d5968f/joblib-1.5.1.tar.gz", hash = "sha256:f4f86e351f39fe3d0d32a9f2c3d8af1ee4cec285aafcb27003dda5205576b444", size = 330475, upload-time = "2025-05-23T12:04:37.097Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7d/4f/1195bbac8e0c2acc5f740661631d8d750dc38d4a32b23ee5df3cde6f4e0d/joblib-1.5.1-py3-none-any.whl", hash = "sha256:4719a31f054c7d766948dcd83e9613686b27114f190f717cec7eaa2084f8a74a", size = 307746, upload-time = "2025-05-23T12:04:35.124Z" }, +] + +[[package]] +name = "jupyter-client" +version = "8.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "importlib-metadata", marker = "python_full_version < '3.10'" }, + { name = "jupyter-core" }, + { name = "python-dateutil" }, + { name = "pyzmq" }, + { name = "tornado" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/71/22/bf9f12fdaeae18019a468b68952a60fe6dbab5d67cd2a103cac7659b41ca/jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419", size = 342019, upload-time = "2024-09-17T10:44:17.613Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f", size = 106105, upload-time = "2024-09-17T10:44:15.218Z" }, +] + +[[package]] +name = "jupyter-core" +version = "5.8.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "platformdirs" }, + { name = "pywin32", marker = "platform_python_implementation != 'PyPy' and sys_platform == 'win32'" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/99/1b/72906d554acfeb588332eaaa6f61577705e9ec752ddb486f302dafa292d9/jupyter_core-5.8.1.tar.gz", hash = "sha256:0a5f9706f70e64786b75acba995988915ebd4601c8a52e534a40b51c95f59941", size = 88923, upload-time = "2025-05-27T07:38:16.655Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2f/57/6bffd4b20b88da3800c5d691e0337761576ee688eb01299eae865689d2df/jupyter_core-5.8.1-py3-none-any.whl", hash = "sha256:c28d268fc90fb53f1338ded2eb410704c5449a358406e8a948b75706e24863d0", size = 28880, upload-time = "2025-05-27T07:38:15.137Z" }, +] + +[[package]] +name = "jupyterlab-widgets" +version = "3.0.15" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b9/7d/160595ca88ee87ac6ba95d82177d29ec60aaa63821d3077babb22ce031a5/jupyterlab_widgets-3.0.15.tar.gz", hash = "sha256:2920888a0c2922351a9202817957a68c07d99673504d6cd37345299e971bb08b", size = 213149, upload-time = "2025-05-05T12:32:31.004Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/6a/ca128561b22b60bd5a0c4ea26649e68c8556b82bc70a0c396eebc977fe86/jupyterlab_widgets-3.0.15-py3-none-any.whl", hash = "sha256:d59023d7d7ef71400d51e6fee9a88867f6e65e10a4201605d2d7f3e8f012a31c", size = 216571, upload-time = "2025-05-05T12:32:29.534Z" }, +] + +[[package]] +name = "kiwisolver" +version = "1.4.7" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", + "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +sdist = { url = "https://files.pythonhosted.org/packages/85/4d/2255e1c76304cbd60b48cee302b66d1dde4468dc5b1160e4b7cb43778f2a/kiwisolver-1.4.7.tar.gz", hash = "sha256:9893ff81bd7107f7b685d3017cc6583daadb4fc26e4a888350df530e41980a60", size = 97286, upload-time = "2024-09-04T09:39:44.302Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/97/14/fc943dd65268a96347472b4fbe5dcc2f6f55034516f80576cd0dd3a8930f/kiwisolver-1.4.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8a9c83f75223d5e48b0bc9cb1bf2776cf01563e00ade8775ffe13b0b6e1af3a6", size = 122440, upload-time = "2024-09-04T09:03:44.9Z" }, + { url = "https://files.pythonhosted.org/packages/1e/46/e68fed66236b69dd02fcdb506218c05ac0e39745d696d22709498896875d/kiwisolver-1.4.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:58370b1ffbd35407444d57057b57da5d6549d2d854fa30249771775c63b5fe17", size = 65758, upload-time = "2024-09-04T09:03:46.582Z" }, + { url = "https://files.pythonhosted.org/packages/ef/fa/65de49c85838681fc9cb05de2a68067a683717321e01ddafb5b8024286f0/kiwisolver-1.4.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:aa0abdf853e09aff551db11fce173e2177d00786c688203f52c87ad7fcd91ef9", size = 64311, upload-time = "2024-09-04T09:03:47.973Z" }, + { url = "https://files.pythonhosted.org/packages/42/9c/cc8d90f6ef550f65443bad5872ffa68f3dee36de4974768628bea7c14979/kiwisolver-1.4.7-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8d53103597a252fb3ab8b5845af04c7a26d5e7ea8122303dd7a021176a87e8b9", size = 1637109, upload-time = "2024-09-04T09:03:49.281Z" }, + { url = "https://files.pythonhosted.org/packages/55/91/0a57ce324caf2ff5403edab71c508dd8f648094b18cfbb4c8cc0fde4a6ac/kiwisolver-1.4.7-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:88f17c5ffa8e9462fb79f62746428dd57b46eb931698e42e990ad63103f35e6c", size = 1617814, upload-time = "2024-09-04T09:03:51.444Z" }, + { url = "https://files.pythonhosted.org/packages/12/5d/c36140313f2510e20207708adf36ae4919416d697ee0236b0ddfb6fd1050/kiwisolver-1.4.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88a9ca9c710d598fd75ee5de59d5bda2684d9db36a9f50b6125eaea3969c2599", size = 1400881, upload-time = "2024-09-04T09:03:53.357Z" }, + { url = "https://files.pythonhosted.org/packages/56/d0/786e524f9ed648324a466ca8df86298780ef2b29c25313d9a4f16992d3cf/kiwisolver-1.4.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f4d742cb7af1c28303a51b7a27aaee540e71bb8e24f68c736f6f2ffc82f2bf05", size = 1512972, upload-time = "2024-09-04T09:03:55.082Z" }, + { url = "https://files.pythonhosted.org/packages/67/5a/77851f2f201e6141d63c10a0708e996a1363efaf9e1609ad0441b343763b/kiwisolver-1.4.7-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e28c7fea2196bf4c2f8d46a0415c77a1c480cc0724722f23d7410ffe9842c407", size = 1444787, upload-time = "2024-09-04T09:03:56.588Z" }, + { url = "https://files.pythonhosted.org/packages/06/5f/1f5eaab84355885e224a6fc8d73089e8713dc7e91c121f00b9a1c58a2195/kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e968b84db54f9d42046cf154e02911e39c0435c9801681e3fc9ce8a3c4130278", size = 2199212, upload-time = "2024-09-04T09:03:58.557Z" }, + { url = "https://files.pythonhosted.org/packages/b5/28/9152a3bfe976a0ae21d445415defc9d1cd8614b2910b7614b30b27a47270/kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0c18ec74c0472de033e1bebb2911c3c310eef5649133dd0bedf2a169a1b269e5", size = 2346399, upload-time = "2024-09-04T09:04:00.178Z" }, + { url = "https://files.pythonhosted.org/packages/26/f6/453d1904c52ac3b400f4d5e240ac5fec25263716723e44be65f4d7149d13/kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:8f0ea6da6d393d8b2e187e6a5e3fb81f5862010a40c3945e2c6d12ae45cfb2ad", size = 2308688, upload-time = "2024-09-04T09:04:02.216Z" }, + { url = "https://files.pythonhosted.org/packages/5a/9a/d4968499441b9ae187e81745e3277a8b4d7c60840a52dc9d535a7909fac3/kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:f106407dda69ae456dd1227966bf445b157ccc80ba0dff3802bb63f30b74e895", size = 2445493, upload-time = "2024-09-04T09:04:04.571Z" }, + { url = "https://files.pythonhosted.org/packages/07/c9/032267192e7828520dacb64dfdb1d74f292765f179e467c1cba97687f17d/kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:84ec80df401cfee1457063732d90022f93951944b5b58975d34ab56bb150dfb3", size = 2262191, upload-time = "2024-09-04T09:04:05.969Z" }, + { url = "https://files.pythonhosted.org/packages/6c/ad/db0aedb638a58b2951da46ddaeecf204be8b4f5454df020d850c7fa8dca8/kiwisolver-1.4.7-cp310-cp310-win32.whl", hash = "sha256:71bb308552200fb2c195e35ef05de12f0c878c07fc91c270eb3d6e41698c3bcc", size = 46644, upload-time = "2024-09-04T09:04:07.408Z" }, + { url = "https://files.pythonhosted.org/packages/12/ca/d0f7b7ffbb0be1e7c2258b53554efec1fd652921f10d7d85045aff93ab61/kiwisolver-1.4.7-cp310-cp310-win_amd64.whl", hash = "sha256:44756f9fd339de0fb6ee4f8c1696cfd19b2422e0d70b4cefc1cc7f1f64045a8c", size = 55877, upload-time = "2024-09-04T09:04:08.869Z" }, + { url = "https://files.pythonhosted.org/packages/97/6c/cfcc128672f47a3e3c0d918ecb67830600078b025bfc32d858f2e2d5c6a4/kiwisolver-1.4.7-cp310-cp310-win_arm64.whl", hash = "sha256:78a42513018c41c2ffd262eb676442315cbfe3c44eed82385c2ed043bc63210a", size = 48347, upload-time = "2024-09-04T09:04:10.106Z" }, + { url = "https://files.pythonhosted.org/packages/e9/44/77429fa0a58f941d6e1c58da9efe08597d2e86bf2b2cce6626834f49d07b/kiwisolver-1.4.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d2b0e12a42fb4e72d509fc994713d099cbb15ebf1103545e8a45f14da2dfca54", size = 122442, upload-time = "2024-09-04T09:04:11.432Z" }, + { url = "https://files.pythonhosted.org/packages/e5/20/8c75caed8f2462d63c7fd65e16c832b8f76cda331ac9e615e914ee80bac9/kiwisolver-1.4.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2a8781ac3edc42ea4b90bc23e7d37b665d89423818e26eb6df90698aa2287c95", size = 65762, upload-time = "2024-09-04T09:04:12.468Z" }, + { url = "https://files.pythonhosted.org/packages/f4/98/fe010f15dc7230f45bc4cf367b012d651367fd203caaa992fd1f5963560e/kiwisolver-1.4.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:46707a10836894b559e04b0fd143e343945c97fd170d69a2d26d640b4e297935", size = 64319, upload-time = "2024-09-04T09:04:13.635Z" }, + { url = "https://files.pythonhosted.org/packages/8b/1b/b5d618f4e58c0675654c1e5051bcf42c776703edb21c02b8c74135541f60/kiwisolver-1.4.7-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef97b8df011141c9b0f6caf23b29379f87dd13183c978a30a3c546d2c47314cb", size = 1334260, upload-time = "2024-09-04T09:04:14.878Z" }, + { url = "https://files.pythonhosted.org/packages/b8/01/946852b13057a162a8c32c4c8d2e9ed79f0bb5d86569a40c0b5fb103e373/kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ab58c12a2cd0fc769089e6d38466c46d7f76aced0a1f54c77652446733d2d02", size = 1426589, upload-time = "2024-09-04T09:04:16.514Z" }, + { url = "https://files.pythonhosted.org/packages/70/d1/c9f96df26b459e15cf8a965304e6e6f4eb291e0f7a9460b4ad97b047561e/kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:803b8e1459341c1bb56d1c5c010406d5edec8a0713a0945851290a7930679b51", size = 1541080, upload-time = "2024-09-04T09:04:18.322Z" }, + { url = "https://files.pythonhosted.org/packages/d3/73/2686990eb8b02d05f3de759d6a23a4ee7d491e659007dd4c075fede4b5d0/kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f9a9e8a507420fe35992ee9ecb302dab68550dedc0da9e2880dd88071c5fb052", size = 1470049, upload-time = "2024-09-04T09:04:20.266Z" }, + { url = "https://files.pythonhosted.org/packages/a7/4b/2db7af3ed3af7c35f388d5f53c28e155cd402a55432d800c543dc6deb731/kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18077b53dc3bb490e330669a99920c5e6a496889ae8c63b58fbc57c3d7f33a18", size = 1426376, upload-time = "2024-09-04T09:04:22.419Z" }, + { url = "https://files.pythonhosted.org/packages/05/83/2857317d04ea46dc5d115f0df7e676997bbd968ced8e2bd6f7f19cfc8d7f/kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6af936f79086a89b3680a280c47ea90b4df7047b5bdf3aa5c524bbedddb9e545", size = 2222231, upload-time = "2024-09-04T09:04:24.526Z" }, + { url = "https://files.pythonhosted.org/packages/0d/b5/866f86f5897cd4ab6d25d22e403404766a123f138bd6a02ecb2cdde52c18/kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:3abc5b19d24af4b77d1598a585b8a719beb8569a71568b66f4ebe1fb0449460b", size = 2368634, upload-time = "2024-09-04T09:04:25.899Z" }, + { url = "https://files.pythonhosted.org/packages/c1/ee/73de8385403faba55f782a41260210528fe3273d0cddcf6d51648202d6d0/kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:933d4de052939d90afbe6e9d5273ae05fb836cc86c15b686edd4b3560cc0ee36", size = 2329024, upload-time = "2024-09-04T09:04:28.523Z" }, + { url = "https://files.pythonhosted.org/packages/a1/e7/cd101d8cd2cdfaa42dc06c433df17c8303d31129c9fdd16c0ea37672af91/kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:65e720d2ab2b53f1f72fb5da5fb477455905ce2c88aaa671ff0a447c2c80e8e3", size = 2468484, upload-time = "2024-09-04T09:04:30.547Z" }, + { url = "https://files.pythonhosted.org/packages/e1/72/84f09d45a10bc57a40bb58b81b99d8f22b58b2040c912b7eb97ebf625bf2/kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3bf1ed55088f214ba6427484c59553123fdd9b218a42bbc8c6496d6754b1e523", size = 2284078, upload-time = "2024-09-04T09:04:33.218Z" }, + { url = "https://files.pythonhosted.org/packages/d2/d4/71828f32b956612dc36efd7be1788980cb1e66bfb3706e6dec9acad9b4f9/kiwisolver-1.4.7-cp311-cp311-win32.whl", hash = "sha256:4c00336b9dd5ad96d0a558fd18a8b6f711b7449acce4c157e7343ba92dd0cf3d", size = 46645, upload-time = "2024-09-04T09:04:34.371Z" }, + { url = "https://files.pythonhosted.org/packages/a1/65/d43e9a20aabcf2e798ad1aff6c143ae3a42cf506754bcb6a7ed8259c8425/kiwisolver-1.4.7-cp311-cp311-win_amd64.whl", hash = "sha256:929e294c1ac1e9f615c62a4e4313ca1823ba37326c164ec720a803287c4c499b", size = 56022, upload-time = "2024-09-04T09:04:35.786Z" }, + { url = "https://files.pythonhosted.org/packages/35/b3/9f75a2e06f1b4ca00b2b192bc2b739334127d27f1d0625627ff8479302ba/kiwisolver-1.4.7-cp311-cp311-win_arm64.whl", hash = "sha256:e33e8fbd440c917106b237ef1a2f1449dfbb9b6f6e1ce17c94cd6a1e0d438376", size = 48536, upload-time = "2024-09-04T09:04:37.525Z" }, + { url = "https://files.pythonhosted.org/packages/97/9c/0a11c714cf8b6ef91001c8212c4ef207f772dd84540104952c45c1f0a249/kiwisolver-1.4.7-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:5360cc32706dab3931f738d3079652d20982511f7c0ac5711483e6eab08efff2", size = 121808, upload-time = "2024-09-04T09:04:38.637Z" }, + { url = "https://files.pythonhosted.org/packages/f2/d8/0fe8c5f5d35878ddd135f44f2af0e4e1d379e1c7b0716f97cdcb88d4fd27/kiwisolver-1.4.7-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:942216596dc64ddb25adb215c3c783215b23626f8d84e8eff8d6d45c3f29f75a", size = 65531, upload-time = "2024-09-04T09:04:39.694Z" }, + { url = "https://files.pythonhosted.org/packages/80/c5/57fa58276dfdfa612241d640a64ca2f76adc6ffcebdbd135b4ef60095098/kiwisolver-1.4.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:48b571ecd8bae15702e4f22d3ff6a0f13e54d3d00cd25216d5e7f658242065ee", size = 63894, upload-time = "2024-09-04T09:04:41.6Z" }, + { url = "https://files.pythonhosted.org/packages/8b/e9/26d3edd4c4ad1c5b891d8747a4f81b1b0aba9fb9721de6600a4adc09773b/kiwisolver-1.4.7-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ad42ba922c67c5f219097b28fae965e10045ddf145d2928bfac2eb2e17673640", size = 1369296, upload-time = "2024-09-04T09:04:42.886Z" }, + { url = "https://files.pythonhosted.org/packages/b6/67/3f4850b5e6cffb75ec40577ddf54f7b82b15269cc5097ff2e968ee32ea7d/kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:612a10bdae23404a72941a0fc8fa2660c6ea1217c4ce0dbcab8a8f6543ea9e7f", size = 1461450, upload-time = "2024-09-04T09:04:46.284Z" }, + { url = "https://files.pythonhosted.org/packages/52/be/86cbb9c9a315e98a8dc6b1d23c43cffd91d97d49318854f9c37b0e41cd68/kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9e838bba3a3bac0fe06d849d29772eb1afb9745a59710762e4ba3f4cb8424483", size = 1579168, upload-time = "2024-09-04T09:04:47.91Z" }, + { url = "https://files.pythonhosted.org/packages/0f/00/65061acf64bd5fd34c1f4ae53f20b43b0a017a541f242a60b135b9d1e301/kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:22f499f6157236c19f4bbbd472fa55b063db77a16cd74d49afe28992dff8c258", size = 1507308, upload-time = "2024-09-04T09:04:49.465Z" }, + { url = "https://files.pythonhosted.org/packages/21/e4/c0b6746fd2eb62fe702118b3ca0cb384ce95e1261cfada58ff693aeec08a/kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:693902d433cf585133699972b6d7c42a8b9f8f826ebcaf0132ff55200afc599e", size = 1464186, upload-time = "2024-09-04T09:04:50.949Z" }, + { url = "https://files.pythonhosted.org/packages/0a/0f/529d0a9fffb4d514f2782c829b0b4b371f7f441d61aa55f1de1c614c4ef3/kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4e77f2126c3e0b0d055f44513ed349038ac180371ed9b52fe96a32aa071a5107", size = 2247877, upload-time = "2024-09-04T09:04:52.388Z" }, + { url = "https://files.pythonhosted.org/packages/d1/e1/66603ad779258843036d45adcbe1af0d1a889a07af4635f8b4ec7dccda35/kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:657a05857bda581c3656bfc3b20e353c232e9193eb167766ad2dc58b56504948", size = 2404204, upload-time = "2024-09-04T09:04:54.385Z" }, + { url = "https://files.pythonhosted.org/packages/8d/61/de5fb1ca7ad1f9ab7970e340a5b833d735df24689047de6ae71ab9d8d0e7/kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4bfa75a048c056a411f9705856abfc872558e33c055d80af6a380e3658766038", size = 2352461, upload-time = "2024-09-04T09:04:56.307Z" }, + { url = "https://files.pythonhosted.org/packages/ba/d2/0edc00a852e369827f7e05fd008275f550353f1f9bcd55db9363d779fc63/kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:34ea1de54beef1c104422d210c47c7d2a4999bdecf42c7b5718fbe59a4cac383", size = 2501358, upload-time = "2024-09-04T09:04:57.922Z" }, + { url = "https://files.pythonhosted.org/packages/84/15/adc15a483506aec6986c01fb7f237c3aec4d9ed4ac10b756e98a76835933/kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:90da3b5f694b85231cf93586dad5e90e2d71b9428f9aad96952c99055582f520", size = 2314119, upload-time = "2024-09-04T09:04:59.332Z" }, + { url = "https://files.pythonhosted.org/packages/36/08/3a5bb2c53c89660863a5aa1ee236912269f2af8762af04a2e11df851d7b2/kiwisolver-1.4.7-cp312-cp312-win32.whl", hash = "sha256:18e0cca3e008e17fe9b164b55735a325140a5a35faad8de92dd80265cd5eb80b", size = 46367, upload-time = "2024-09-04T09:05:00.804Z" }, + { url = "https://files.pythonhosted.org/packages/19/93/c05f0a6d825c643779fc3c70876bff1ac221f0e31e6f701f0e9578690d70/kiwisolver-1.4.7-cp312-cp312-win_amd64.whl", hash = "sha256:58cb20602b18f86f83a5c87d3ee1c766a79c0d452f8def86d925e6c60fbf7bfb", size = 55884, upload-time = "2024-09-04T09:05:01.924Z" }, + { url = "https://files.pythonhosted.org/packages/d2/f9/3828d8f21b6de4279f0667fb50a9f5215e6fe57d5ec0d61905914f5b6099/kiwisolver-1.4.7-cp312-cp312-win_arm64.whl", hash = "sha256:f5a8b53bdc0b3961f8b6125e198617c40aeed638b387913bf1ce78afb1b0be2a", size = 48528, upload-time = "2024-09-04T09:05:02.983Z" }, + { url = "https://files.pythonhosted.org/packages/c4/06/7da99b04259b0f18b557a4effd1b9c901a747f7fdd84cf834ccf520cb0b2/kiwisolver-1.4.7-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:2e6039dcbe79a8e0f044f1c39db1986a1b8071051efba3ee4d74f5b365f5226e", size = 121913, upload-time = "2024-09-04T09:05:04.072Z" }, + { url = "https://files.pythonhosted.org/packages/97/f5/b8a370d1aa593c17882af0a6f6755aaecd643640c0ed72dcfd2eafc388b9/kiwisolver-1.4.7-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a1ecf0ac1c518487d9d23b1cd7139a6a65bc460cd101ab01f1be82ecf09794b6", size = 65627, upload-time = "2024-09-04T09:05:05.119Z" }, + { url = "https://files.pythonhosted.org/packages/2a/fc/6c0374f7503522539e2d4d1b497f5ebad3f8ed07ab51aed2af988dd0fb65/kiwisolver-1.4.7-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7ab9ccab2b5bd5702ab0803676a580fffa2aa178c2badc5557a84cc943fcf750", size = 63888, upload-time = "2024-09-04T09:05:06.191Z" }, + { url = "https://files.pythonhosted.org/packages/bf/3e/0b7172793d0f41cae5c923492da89a2ffcd1adf764c16159ca047463ebd3/kiwisolver-1.4.7-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f816dd2277f8d63d79f9c8473a79fe54047bc0467754962840782c575522224d", size = 1369145, upload-time = "2024-09-04T09:05:07.919Z" }, + { url = "https://files.pythonhosted.org/packages/77/92/47d050d6f6aced2d634258123f2688fbfef8ded3c5baf2c79d94d91f1f58/kiwisolver-1.4.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf8bcc23ceb5a1b624572a1623b9f79d2c3b337c8c455405ef231933a10da379", size = 1461448, upload-time = "2024-09-04T09:05:10.01Z" }, + { url = "https://files.pythonhosted.org/packages/9c/1b/8f80b18e20b3b294546a1adb41701e79ae21915f4175f311a90d042301cf/kiwisolver-1.4.7-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dea0bf229319828467d7fca8c7c189780aa9ff679c94539eed7532ebe33ed37c", size = 1578750, upload-time = "2024-09-04T09:05:11.598Z" }, + { url = "https://files.pythonhosted.org/packages/a4/fe/fe8e72f3be0a844f257cadd72689c0848c6d5c51bc1d60429e2d14ad776e/kiwisolver-1.4.7-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c06a4c7cf15ec739ce0e5971b26c93638730090add60e183530d70848ebdd34", size = 1507175, upload-time = "2024-09-04T09:05:13.22Z" }, + { url = "https://files.pythonhosted.org/packages/39/fa/cdc0b6105d90eadc3bee525fecc9179e2b41e1ce0293caaf49cb631a6aaf/kiwisolver-1.4.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:913983ad2deb14e66d83c28b632fd35ba2b825031f2fa4ca29675e665dfecbe1", size = 1463963, upload-time = "2024-09-04T09:05:15.925Z" }, + { url = "https://files.pythonhosted.org/packages/6e/5c/0c03c4e542720c6177d4f408e56d1c8315899db72d46261a4e15b8b33a41/kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5337ec7809bcd0f424c6b705ecf97941c46279cf5ed92311782c7c9c2026f07f", size = 2248220, upload-time = "2024-09-04T09:05:17.434Z" }, + { url = "https://files.pythonhosted.org/packages/3d/ee/55ef86d5a574f4e767df7da3a3a7ff4954c996e12d4fbe9c408170cd7dcc/kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:4c26ed10c4f6fa6ddb329a5120ba3b6db349ca192ae211e882970bfc9d91420b", size = 2404463, upload-time = "2024-09-04T09:05:18.997Z" }, + { url = "https://files.pythonhosted.org/packages/0f/6d/73ad36170b4bff4825dc588acf4f3e6319cb97cd1fb3eb04d9faa6b6f212/kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c619b101e6de2222c1fcb0531e1b17bbffbe54294bfba43ea0d411d428618c27", size = 2352842, upload-time = "2024-09-04T09:05:21.299Z" }, + { url = "https://files.pythonhosted.org/packages/0b/16/fa531ff9199d3b6473bb4d0f47416cdb08d556c03b8bc1cccf04e756b56d/kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:073a36c8273647592ea332e816e75ef8da5c303236ec0167196793eb1e34657a", size = 2501635, upload-time = "2024-09-04T09:05:23.588Z" }, + { url = "https://files.pythonhosted.org/packages/78/7e/aa9422e78419db0cbe75fb86d8e72b433818f2e62e2e394992d23d23a583/kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:3ce6b2b0231bda412463e152fc18335ba32faf4e8c23a754ad50ffa70e4091ee", size = 2314556, upload-time = "2024-09-04T09:05:25.907Z" }, + { url = "https://files.pythonhosted.org/packages/a8/b2/15f7f556df0a6e5b3772a1e076a9d9f6c538ce5f05bd590eca8106508e06/kiwisolver-1.4.7-cp313-cp313-win32.whl", hash = "sha256:f4c9aee212bc89d4e13f58be11a56cc8036cabad119259d12ace14b34476fd07", size = 46364, upload-time = "2024-09-04T09:05:27.184Z" }, + { url = "https://files.pythonhosted.org/packages/0b/db/32e897e43a330eee8e4770bfd2737a9584b23e33587a0812b8e20aac38f7/kiwisolver-1.4.7-cp313-cp313-win_amd64.whl", hash = "sha256:8a3ec5aa8e38fc4c8af308917ce12c536f1c88452ce554027e55b22cbbfbff76", size = 55887, upload-time = "2024-09-04T09:05:28.372Z" }, + { url = "https://files.pythonhosted.org/packages/c8/a4/df2bdca5270ca85fd25253049eb6708d4127be2ed0e5c2650217450b59e9/kiwisolver-1.4.7-cp313-cp313-win_arm64.whl", hash = "sha256:76c8094ac20ec259471ac53e774623eb62e6e1f56cd8690c67ce6ce4fcb05650", size = 48530, upload-time = "2024-09-04T09:05:30.225Z" }, + { url = "https://files.pythonhosted.org/packages/11/88/37ea0ea64512997b13d69772db8dcdc3bfca5442cda3a5e4bb943652ee3e/kiwisolver-1.4.7-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3f9362ecfca44c863569d3d3c033dbe8ba452ff8eed6f6b5806382741a1334bd", size = 122449, upload-time = "2024-09-04T09:05:55.311Z" }, + { url = "https://files.pythonhosted.org/packages/4e/45/5a5c46078362cb3882dcacad687c503089263c017ca1241e0483857791eb/kiwisolver-1.4.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e8df2eb9b2bac43ef8b082e06f750350fbbaf2887534a5be97f6cf07b19d9583", size = 65757, upload-time = "2024-09-04T09:05:56.906Z" }, + { url = "https://files.pythonhosted.org/packages/8a/be/a6ae58978772f685d48dd2e84460937761c53c4bbd84e42b0336473d9775/kiwisolver-1.4.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f32d6edbc638cde7652bd690c3e728b25332acbadd7cad670cc4a02558d9c417", size = 64312, upload-time = "2024-09-04T09:05:58.384Z" }, + { url = "https://files.pythonhosted.org/packages/f4/04/18ef6f452d311e1e1eb180c9bf5589187fa1f042db877e6fe443ef10099c/kiwisolver-1.4.7-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:e2e6c39bd7b9372b0be21456caab138e8e69cc0fc1190a9dfa92bd45a1e6e904", size = 1626966, upload-time = "2024-09-04T09:05:59.855Z" }, + { url = "https://files.pythonhosted.org/packages/21/b1/40655f6c3fa11ce740e8a964fa8e4c0479c87d6a7944b95af799c7a55dfe/kiwisolver-1.4.7-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:dda56c24d869b1193fcc763f1284b9126550eaf84b88bbc7256e15028f19188a", size = 1607044, upload-time = "2024-09-04T09:06:02.16Z" }, + { url = "https://files.pythonhosted.org/packages/fd/93/af67dbcfb9b3323bbd2c2db1385a7139d8f77630e4a37bb945b57188eb2d/kiwisolver-1.4.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79849239c39b5e1fd906556c474d9b0439ea6792b637511f3fe3a41158d89ca8", size = 1391879, upload-time = "2024-09-04T09:06:03.908Z" }, + { url = "https://files.pythonhosted.org/packages/40/6f/d60770ef98e77b365d96061d090c0cd9e23418121c55fff188fa4bdf0b54/kiwisolver-1.4.7-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5e3bc157fed2a4c02ec468de4ecd12a6e22818d4f09cde2c31ee3226ffbefab2", size = 1504751, upload-time = "2024-09-04T09:06:05.58Z" }, + { url = "https://files.pythonhosted.org/packages/fa/3a/5f38667d313e983c432f3fcd86932177519ed8790c724e07d77d1de0188a/kiwisolver-1.4.7-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3da53da805b71e41053dc670f9a820d1157aae77b6b944e08024d17bcd51ef88", size = 1436990, upload-time = "2024-09-04T09:06:08.126Z" }, + { url = "https://files.pythonhosted.org/packages/cb/3b/1520301a47326e6a6043b502647e42892be33b3f051e9791cc8bb43f1a32/kiwisolver-1.4.7-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:8705f17dfeb43139a692298cb6637ee2e59c0194538153e83e9ee0c75c2eddde", size = 2191122, upload-time = "2024-09-04T09:06:10.345Z" }, + { url = "https://files.pythonhosted.org/packages/cf/c4/eb52da300c166239a2233f1f9c4a1b767dfab98fae27681bfb7ea4873cb6/kiwisolver-1.4.7-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:82a5c2f4b87c26bb1a0ef3d16b5c4753434633b83d365cc0ddf2770c93829e3c", size = 2338126, upload-time = "2024-09-04T09:06:12.321Z" }, + { url = "https://files.pythonhosted.org/packages/1a/cb/42b92fd5eadd708dd9107c089e817945500685f3437ce1fd387efebc6d6e/kiwisolver-1.4.7-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ce8be0466f4c0d585cdb6c1e2ed07232221df101a4c6f28821d2aa754ca2d9e2", size = 2298313, upload-time = "2024-09-04T09:06:14.562Z" }, + { url = "https://files.pythonhosted.org/packages/4f/eb/be25aa791fe5fc75a8b1e0c965e00f942496bc04635c9aae8035f6b76dcd/kiwisolver-1.4.7-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:409afdfe1e2e90e6ee7fc896f3df9a7fec8e793e58bfa0d052c8a82f99c37abb", size = 2437784, upload-time = "2024-09-04T09:06:16.767Z" }, + { url = "https://files.pythonhosted.org/packages/c5/22/30a66be7f3368d76ff95689e1c2e28d382383952964ab15330a15d8bfd03/kiwisolver-1.4.7-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5b9c3f4ee0b9a439d2415012bd1b1cc2df59e4d6a9939f4d669241d30b414327", size = 2253988, upload-time = "2024-09-04T09:06:18.705Z" }, + { url = "https://files.pythonhosted.org/packages/35/d3/5f2ecb94b5211c8a04f218a76133cc8d6d153b0f9cd0b45fad79907f0689/kiwisolver-1.4.7-cp39-cp39-win32.whl", hash = "sha256:a79ae34384df2b615eefca647a2873842ac3b596418032bef9a7283675962644", size = 46980, upload-time = "2024-09-04T09:06:20.106Z" }, + { url = "https://files.pythonhosted.org/packages/ef/17/cd10d020578764ea91740204edc6b3236ed8106228a46f568d716b11feb2/kiwisolver-1.4.7-cp39-cp39-win_amd64.whl", hash = "sha256:cf0438b42121a66a3a667de17e779330fc0f20b0d97d59d2f2121e182b0505e4", size = 55847, upload-time = "2024-09-04T09:06:21.407Z" }, + { url = "https://files.pythonhosted.org/packages/91/84/32232502020bd78d1d12be7afde15811c64a95ed1f606c10456db4e4c3ac/kiwisolver-1.4.7-cp39-cp39-win_arm64.whl", hash = "sha256:764202cc7e70f767dab49e8df52c7455e8de0df5d858fa801a11aa0d882ccf3f", size = 48494, upload-time = "2024-09-04T09:06:22.648Z" }, + { url = "https://files.pythonhosted.org/packages/ac/59/741b79775d67ab67ced9bb38552da688c0305c16e7ee24bba7a2be253fb7/kiwisolver-1.4.7-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:94252291e3fe68001b1dd747b4c0b3be12582839b95ad4d1b641924d68fd4643", size = 59491, upload-time = "2024-09-04T09:06:24.188Z" }, + { url = "https://files.pythonhosted.org/packages/58/cc/fb239294c29a5656e99e3527f7369b174dd9cc7c3ef2dea7cb3c54a8737b/kiwisolver-1.4.7-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:5b7dfa3b546da08a9f622bb6becdb14b3e24aaa30adba66749d38f3cc7ea9706", size = 57648, upload-time = "2024-09-04T09:06:25.559Z" }, + { url = "https://files.pythonhosted.org/packages/3b/ef/2f009ac1f7aab9f81efb2d837301d255279d618d27b6015780115ac64bdd/kiwisolver-1.4.7-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bd3de6481f4ed8b734da5df134cd5a6a64fe32124fe83dde1e5b5f29fe30b1e6", size = 84257, upload-time = "2024-09-04T09:06:27.038Z" }, + { url = "https://files.pythonhosted.org/packages/81/e1/c64f50987f85b68b1c52b464bb5bf73e71570c0f7782d626d1eb283ad620/kiwisolver-1.4.7-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a91b5f9f1205845d488c928e8570dcb62b893372f63b8b6e98b863ebd2368ff2", size = 80906, upload-time = "2024-09-04T09:06:28.48Z" }, + { url = "https://files.pythonhosted.org/packages/fd/71/1687c5c0a0be2cee39a5c9c389e546f9c6e215e46b691d00d9f646892083/kiwisolver-1.4.7-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40fa14dbd66b8b8f470d5fc79c089a66185619d31645f9b0773b88b19f7223c4", size = 79951, upload-time = "2024-09-04T09:06:29.966Z" }, + { url = "https://files.pythonhosted.org/packages/ea/8b/d7497df4a1cae9367adf21665dd1f896c2a7aeb8769ad77b662c5e2bcce7/kiwisolver-1.4.7-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:eb542fe7933aa09d8d8f9d9097ef37532a7df6497819d16efe4359890a2f417a", size = 55715, upload-time = "2024-09-04T09:06:31.489Z" }, + { url = "https://files.pythonhosted.org/packages/d5/df/ce37d9b26f07ab90880923c94d12a6ff4d27447096b4c849bfc4339ccfdf/kiwisolver-1.4.7-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:8b01aac285f91ca889c800042c35ad3b239e704b150cfd3382adfc9dcc780e39", size = 58666, upload-time = "2024-09-04T09:06:43.756Z" }, + { url = "https://files.pythonhosted.org/packages/b0/d3/e4b04f43bc629ac8e186b77b2b1a251cdfa5b7610fa189dc0db622672ce6/kiwisolver-1.4.7-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:48be928f59a1f5c8207154f935334d374e79f2b5d212826307d072595ad76a2e", size = 57088, upload-time = "2024-09-04T09:06:45.406Z" }, + { url = "https://files.pythonhosted.org/packages/30/1c/752df58e2d339e670a535514d2db4fe8c842ce459776b8080fbe08ebb98e/kiwisolver-1.4.7-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f37cfe618a117e50d8c240555331160d73d0411422b59b5ee217843d7b693608", size = 84321, upload-time = "2024-09-04T09:06:47.557Z" }, + { url = "https://files.pythonhosted.org/packages/f0/f8/fe6484e847bc6e238ec9f9828089fb2c0bb53f2f5f3a79351fde5b565e4f/kiwisolver-1.4.7-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:599b5c873c63a1f6ed7eead644a8a380cfbdf5db91dcb6f85707aaab213b1674", size = 80776, upload-time = "2024-09-04T09:06:49.235Z" }, + { url = "https://files.pythonhosted.org/packages/9b/57/d7163c0379f250ef763aba85330a19feefb5ce6cb541ade853aaba881524/kiwisolver-1.4.7-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:801fa7802e5cfabe3ab0c81a34c323a319b097dfb5004be950482d882f3d7225", size = 79984, upload-time = "2024-09-04T09:06:51.336Z" }, + { url = "https://files.pythonhosted.org/packages/8c/95/4a103776c265d13b3d2cd24fb0494d4e04ea435a8ef97e1b2c026d43250b/kiwisolver-1.4.7-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:0c6c43471bc764fad4bc99c5c2d6d16a676b1abf844ca7c8702bdae92df01ee0", size = 55811, upload-time = "2024-09-04T09:06:53.078Z" }, +] + +[[package]] +name = "kiwisolver" +version = "1.4.8" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +sdist = { url = "https://files.pythonhosted.org/packages/82/59/7c91426a8ac292e1cdd53a63b6d9439abd573c875c3f92c146767dd33faf/kiwisolver-1.4.8.tar.gz", hash = "sha256:23d5f023bdc8c7e54eb65f03ca5d5bb25b601eac4d7f1a042888a1f45237987e", size = 97538, upload-time = "2024-12-24T18:30:51.519Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/47/5f/4d8e9e852d98ecd26cdf8eaf7ed8bc33174033bba5e07001b289f07308fd/kiwisolver-1.4.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:88c6f252f6816a73b1f8c904f7bbe02fd67c09a69f7cb8a0eecdbf5ce78e63db", size = 124623, upload-time = "2024-12-24T18:28:17.687Z" }, + { url = "https://files.pythonhosted.org/packages/1d/70/7f5af2a18a76fe92ea14675f8bd88ce53ee79e37900fa5f1a1d8e0b42998/kiwisolver-1.4.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c72941acb7b67138f35b879bbe85be0f6c6a70cab78fe3ef6db9c024d9223e5b", size = 66720, upload-time = "2024-12-24T18:28:19.158Z" }, + { url = "https://files.pythonhosted.org/packages/c6/13/e15f804a142353aefd089fadc8f1d985561a15358c97aca27b0979cb0785/kiwisolver-1.4.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ce2cf1e5688edcb727fdf7cd1bbd0b6416758996826a8be1d958f91880d0809d", size = 65413, upload-time = "2024-12-24T18:28:20.064Z" }, + { url = "https://files.pythonhosted.org/packages/ce/6d/67d36c4d2054e83fb875c6b59d0809d5c530de8148846b1370475eeeece9/kiwisolver-1.4.8-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c8bf637892dc6e6aad2bc6d4d69d08764166e5e3f69d469e55427b6ac001b19d", size = 1650826, upload-time = "2024-12-24T18:28:21.203Z" }, + { url = "https://files.pythonhosted.org/packages/de/c6/7b9bb8044e150d4d1558423a1568e4f227193662a02231064e3824f37e0a/kiwisolver-1.4.8-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:034d2c891f76bd3edbdb3ea11140d8510dca675443da7304205a2eaa45d8334c", size = 1628231, upload-time = "2024-12-24T18:28:23.851Z" }, + { url = "https://files.pythonhosted.org/packages/b6/38/ad10d437563063eaaedbe2c3540a71101fc7fb07a7e71f855e93ea4de605/kiwisolver-1.4.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d47b28d1dfe0793d5e96bce90835e17edf9a499b53969b03c6c47ea5985844c3", size = 1408938, upload-time = "2024-12-24T18:28:26.687Z" }, + { url = "https://files.pythonhosted.org/packages/52/ce/c0106b3bd7f9e665c5f5bc1e07cc95b5dabd4e08e3dad42dbe2faad467e7/kiwisolver-1.4.8-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb158fe28ca0c29f2260cca8c43005329ad58452c36f0edf298204de32a9a3ed", size = 1422799, upload-time = "2024-12-24T18:28:30.538Z" }, + { url = "https://files.pythonhosted.org/packages/d0/87/efb704b1d75dc9758087ba374c0f23d3254505edaedd09cf9d247f7878b9/kiwisolver-1.4.8-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5536185fce131780ebd809f8e623bf4030ce1b161353166c49a3c74c287897f", size = 1354362, upload-time = "2024-12-24T18:28:32.943Z" }, + { url = "https://files.pythonhosted.org/packages/eb/b3/fd760dc214ec9a8f208b99e42e8f0130ff4b384eca8b29dd0efc62052176/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:369b75d40abedc1da2c1f4de13f3482cb99e3237b38726710f4a793432b1c5ff", size = 2222695, upload-time = "2024-12-24T18:28:35.641Z" }, + { url = "https://files.pythonhosted.org/packages/a2/09/a27fb36cca3fc01700687cc45dae7a6a5f8eeb5f657b9f710f788748e10d/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:641f2ddf9358c80faa22e22eb4c9f54bd3f0e442e038728f500e3b978d00aa7d", size = 2370802, upload-time = "2024-12-24T18:28:38.357Z" }, + { url = "https://files.pythonhosted.org/packages/3d/c3/ba0a0346db35fe4dc1f2f2cf8b99362fbb922d7562e5f911f7ce7a7b60fa/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d561d2d8883e0819445cfe58d7ddd673e4015c3c57261d7bdcd3710d0d14005c", size = 2334646, upload-time = "2024-12-24T18:28:40.941Z" }, + { url = "https://files.pythonhosted.org/packages/41/52/942cf69e562f5ed253ac67d5c92a693745f0bed3c81f49fc0cbebe4d6b00/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:1732e065704b47c9afca7ffa272f845300a4eb959276bf6970dc07265e73b605", size = 2467260, upload-time = "2024-12-24T18:28:42.273Z" }, + { url = "https://files.pythonhosted.org/packages/32/26/2d9668f30d8a494b0411d4d7d4ea1345ba12deb6a75274d58dd6ea01e951/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:bcb1ebc3547619c3b58a39e2448af089ea2ef44b37988caf432447374941574e", size = 2288633, upload-time = "2024-12-24T18:28:44.87Z" }, + { url = "https://files.pythonhosted.org/packages/98/99/0dd05071654aa44fe5d5e350729961e7bb535372935a45ac89a8924316e6/kiwisolver-1.4.8-cp310-cp310-win_amd64.whl", hash = "sha256:89c107041f7b27844179ea9c85d6da275aa55ecf28413e87624d033cf1f6b751", size = 71885, upload-time = "2024-12-24T18:28:47.346Z" }, + { url = "https://files.pythonhosted.org/packages/6c/fc/822e532262a97442989335394d441cd1d0448c2e46d26d3e04efca84df22/kiwisolver-1.4.8-cp310-cp310-win_arm64.whl", hash = "sha256:b5773efa2be9eb9fcf5415ea3ab70fc785d598729fd6057bea38d539ead28271", size = 65175, upload-time = "2024-12-24T18:28:49.651Z" }, + { url = "https://files.pythonhosted.org/packages/da/ed/c913ee28936c371418cb167b128066ffb20bbf37771eecc2c97edf8a6e4c/kiwisolver-1.4.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a4d3601908c560bdf880f07d94f31d734afd1bb71e96585cace0e38ef44c6d84", size = 124635, upload-time = "2024-12-24T18:28:51.826Z" }, + { url = "https://files.pythonhosted.org/packages/4c/45/4a7f896f7467aaf5f56ef093d1f329346f3b594e77c6a3c327b2d415f521/kiwisolver-1.4.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:856b269c4d28a5c0d5e6c1955ec36ebfd1651ac00e1ce0afa3e28da95293b561", size = 66717, upload-time = "2024-12-24T18:28:54.256Z" }, + { url = "https://files.pythonhosted.org/packages/5f/b4/c12b3ac0852a3a68f94598d4c8d569f55361beef6159dce4e7b624160da2/kiwisolver-1.4.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c2b9a96e0f326205af81a15718a9073328df1173a2619a68553decb7097fd5d7", size = 65413, upload-time = "2024-12-24T18:28:55.184Z" }, + { url = "https://files.pythonhosted.org/packages/a9/98/1df4089b1ed23d83d410adfdc5947245c753bddfbe06541c4aae330e9e70/kiwisolver-1.4.8-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5020c83e8553f770cb3b5fc13faac40f17e0b205bd237aebd21d53d733adb03", size = 1343994, upload-time = "2024-12-24T18:28:57.493Z" }, + { url = "https://files.pythonhosted.org/packages/8d/bf/b4b169b050c8421a7c53ea1ea74e4ef9c335ee9013216c558a047f162d20/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dace81d28c787956bfbfbbfd72fdcef014f37d9b48830829e488fdb32b49d954", size = 1434804, upload-time = "2024-12-24T18:29:00.077Z" }, + { url = "https://files.pythonhosted.org/packages/66/5a/e13bd341fbcf73325ea60fdc8af752addf75c5079867af2e04cc41f34434/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11e1022b524bd48ae56c9b4f9296bce77e15a2e42a502cceba602f804b32bb79", size = 1450690, upload-time = "2024-12-24T18:29:01.401Z" }, + { url = "https://files.pythonhosted.org/packages/9b/4f/5955dcb376ba4a830384cc6fab7d7547bd6759fe75a09564910e9e3bb8ea/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b9b4d2892fefc886f30301cdd80debd8bb01ecdf165a449eb6e78f79f0fabd6", size = 1376839, upload-time = "2024-12-24T18:29:02.685Z" }, + { url = "https://files.pythonhosted.org/packages/3a/97/5edbed69a9d0caa2e4aa616ae7df8127e10f6586940aa683a496c2c280b9/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a96c0e790ee875d65e340ab383700e2b4891677b7fcd30a699146f9384a2bb0", size = 1435109, upload-time = "2024-12-24T18:29:04.113Z" }, + { url = "https://files.pythonhosted.org/packages/13/fc/e756382cb64e556af6c1809a1bbb22c141bbc2445049f2da06b420fe52bf/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:23454ff084b07ac54ca8be535f4174170c1094a4cff78fbae4f73a4bcc0d4dab", size = 2245269, upload-time = "2024-12-24T18:29:05.488Z" }, + { url = "https://files.pythonhosted.org/packages/76/15/e59e45829d7f41c776d138245cabae6515cb4eb44b418f6d4109c478b481/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:87b287251ad6488e95b4f0b4a79a6d04d3ea35fde6340eb38fbd1ca9cd35bbbc", size = 2393468, upload-time = "2024-12-24T18:29:06.79Z" }, + { url = "https://files.pythonhosted.org/packages/e9/39/483558c2a913ab8384d6e4b66a932406f87c95a6080112433da5ed668559/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:b21dbe165081142b1232a240fc6383fd32cdd877ca6cc89eab93e5f5883e1c25", size = 2355394, upload-time = "2024-12-24T18:29:08.24Z" }, + { url = "https://files.pythonhosted.org/packages/01/aa/efad1fbca6570a161d29224f14b082960c7e08268a133fe5dc0f6906820e/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:768cade2c2df13db52475bd28d3a3fac8c9eff04b0e9e2fda0f3760f20b3f7fc", size = 2490901, upload-time = "2024-12-24T18:29:09.653Z" }, + { url = "https://files.pythonhosted.org/packages/c9/4f/15988966ba46bcd5ab9d0c8296914436720dd67fca689ae1a75b4ec1c72f/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d47cfb2650f0e103d4bf68b0b5804c68da97272c84bb12850d877a95c056bd67", size = 2312306, upload-time = "2024-12-24T18:29:12.644Z" }, + { url = "https://files.pythonhosted.org/packages/2d/27/bdf1c769c83f74d98cbc34483a972f221440703054894a37d174fba8aa68/kiwisolver-1.4.8-cp311-cp311-win_amd64.whl", hash = "sha256:ed33ca2002a779a2e20eeb06aea7721b6e47f2d4b8a8ece979d8ba9e2a167e34", size = 71966, upload-time = "2024-12-24T18:29:14.089Z" }, + { url = "https://files.pythonhosted.org/packages/4a/c9/9642ea855604aeb2968a8e145fc662edf61db7632ad2e4fb92424be6b6c0/kiwisolver-1.4.8-cp311-cp311-win_arm64.whl", hash = "sha256:16523b40aab60426ffdebe33ac374457cf62863e330a90a0383639ce14bf44b2", size = 65311, upload-time = "2024-12-24T18:29:15.892Z" }, + { url = "https://files.pythonhosted.org/packages/fc/aa/cea685c4ab647f349c3bc92d2daf7ae34c8e8cf405a6dcd3a497f58a2ac3/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d6af5e8815fd02997cb6ad9bbed0ee1e60014438ee1a5c2444c96f87b8843502", size = 124152, upload-time = "2024-12-24T18:29:16.85Z" }, + { url = "https://files.pythonhosted.org/packages/c5/0b/8db6d2e2452d60d5ebc4ce4b204feeb16176a851fd42462f66ade6808084/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:bade438f86e21d91e0cf5dd7c0ed00cda0f77c8c1616bd83f9fc157fa6760d31", size = 66555, upload-time = "2024-12-24T18:29:19.146Z" }, + { url = "https://files.pythonhosted.org/packages/60/26/d6a0db6785dd35d3ba5bf2b2df0aedc5af089962c6eb2cbf67a15b81369e/kiwisolver-1.4.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b83dc6769ddbc57613280118fb4ce3cd08899cc3369f7d0e0fab518a7cf37fdb", size = 65067, upload-time = "2024-12-24T18:29:20.096Z" }, + { url = "https://files.pythonhosted.org/packages/c9/ed/1d97f7e3561e09757a196231edccc1bcf59d55ddccefa2afc9c615abd8e0/kiwisolver-1.4.8-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:111793b232842991be367ed828076b03d96202c19221b5ebab421ce8bcad016f", size = 1378443, upload-time = "2024-12-24T18:29:22.843Z" }, + { url = "https://files.pythonhosted.org/packages/29/61/39d30b99954e6b46f760e6289c12fede2ab96a254c443639052d1b573fbc/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:257af1622860e51b1a9d0ce387bf5c2c4f36a90594cb9514f55b074bcc787cfc", size = 1472728, upload-time = "2024-12-24T18:29:24.463Z" }, + { url = "https://files.pythonhosted.org/packages/0c/3e/804163b932f7603ef256e4a715e5843a9600802bb23a68b4e08c8c0ff61d/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b5637c3f316cab1ec1c9a12b8c5f4750a4c4b71af9157645bf32830e39c03a", size = 1478388, upload-time = "2024-12-24T18:29:25.776Z" }, + { url = "https://files.pythonhosted.org/packages/8a/9e/60eaa75169a154700be74f875a4d9961b11ba048bef315fbe89cb6999056/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:782bb86f245ec18009890e7cb8d13a5ef54dcf2ebe18ed65f795e635a96a1c6a", size = 1413849, upload-time = "2024-12-24T18:29:27.202Z" }, + { url = "https://files.pythonhosted.org/packages/bc/b3/9458adb9472e61a998c8c4d95cfdfec91c73c53a375b30b1428310f923e4/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc978a80a0db3a66d25767b03688f1147a69e6237175c0f4ffffaaedf744055a", size = 1475533, upload-time = "2024-12-24T18:29:28.638Z" }, + { url = "https://files.pythonhosted.org/packages/e4/7a/0a42d9571e35798de80aef4bb43a9b672aa7f8e58643d7bd1950398ffb0a/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:36dbbfd34838500a31f52c9786990d00150860e46cd5041386f217101350f0d3", size = 2268898, upload-time = "2024-12-24T18:29:30.368Z" }, + { url = "https://files.pythonhosted.org/packages/d9/07/1255dc8d80271400126ed8db35a1795b1a2c098ac3a72645075d06fe5c5d/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:eaa973f1e05131de5ff3569bbba7f5fd07ea0595d3870ed4a526d486fe57fa1b", size = 2425605, upload-time = "2024-12-24T18:29:33.151Z" }, + { url = "https://files.pythonhosted.org/packages/84/df/5a3b4cf13780ef6f6942df67b138b03b7e79e9f1f08f57c49957d5867f6e/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a66f60f8d0c87ab7f59b6fb80e642ebb29fec354a4dfad687ca4092ae69d04f4", size = 2375801, upload-time = "2024-12-24T18:29:34.584Z" }, + { url = "https://files.pythonhosted.org/packages/8f/10/2348d068e8b0f635c8c86892788dac7a6b5c0cb12356620ab575775aad89/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:858416b7fb777a53f0c59ca08190ce24e9abbd3cffa18886a5781b8e3e26f65d", size = 2520077, upload-time = "2024-12-24T18:29:36.138Z" }, + { url = "https://files.pythonhosted.org/packages/32/d8/014b89fee5d4dce157d814303b0fce4d31385a2af4c41fed194b173b81ac/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:085940635c62697391baafaaeabdf3dd7a6c3643577dde337f4d66eba021b2b8", size = 2338410, upload-time = "2024-12-24T18:29:39.991Z" }, + { url = "https://files.pythonhosted.org/packages/bd/72/dfff0cc97f2a0776e1c9eb5bef1ddfd45f46246c6533b0191887a427bca5/kiwisolver-1.4.8-cp312-cp312-win_amd64.whl", hash = "sha256:01c3d31902c7db5fb6182832713d3b4122ad9317c2c5877d0539227d96bb2e50", size = 71853, upload-time = "2024-12-24T18:29:42.006Z" }, + { url = "https://files.pythonhosted.org/packages/dc/85/220d13d914485c0948a00f0b9eb419efaf6da81b7d72e88ce2391f7aed8d/kiwisolver-1.4.8-cp312-cp312-win_arm64.whl", hash = "sha256:a3c44cb68861de93f0c4a8175fbaa691f0aa22550c331fefef02b618a9dcb476", size = 65424, upload-time = "2024-12-24T18:29:44.38Z" }, + { url = "https://files.pythonhosted.org/packages/79/b3/e62464a652f4f8cd9006e13d07abad844a47df1e6537f73ddfbf1bc997ec/kiwisolver-1.4.8-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:1c8ceb754339793c24aee1c9fb2485b5b1f5bb1c2c214ff13368431e51fc9a09", size = 124156, upload-time = "2024-12-24T18:29:45.368Z" }, + { url = "https://files.pythonhosted.org/packages/8d/2d/f13d06998b546a2ad4f48607a146e045bbe48030774de29f90bdc573df15/kiwisolver-1.4.8-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:54a62808ac74b5e55a04a408cda6156f986cefbcf0ada13572696b507cc92fa1", size = 66555, upload-time = "2024-12-24T18:29:46.37Z" }, + { url = "https://files.pythonhosted.org/packages/59/e3/b8bd14b0a54998a9fd1e8da591c60998dc003618cb19a3f94cb233ec1511/kiwisolver-1.4.8-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:68269e60ee4929893aad82666821aaacbd455284124817af45c11e50a4b42e3c", size = 65071, upload-time = "2024-12-24T18:29:47.333Z" }, + { url = "https://files.pythonhosted.org/packages/f0/1c/6c86f6d85ffe4d0ce04228d976f00674f1df5dc893bf2dd4f1928748f187/kiwisolver-1.4.8-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:34d142fba9c464bc3bbfeff15c96eab0e7310343d6aefb62a79d51421fcc5f1b", size = 1378053, upload-time = "2024-12-24T18:29:49.636Z" }, + { url = "https://files.pythonhosted.org/packages/4e/b9/1c6e9f6dcb103ac5cf87cb695845f5fa71379021500153566d8a8a9fc291/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc373e0eef45b59197de815b1b28ef89ae3955e7722cc9710fb91cd77b7f47", size = 1472278, upload-time = "2024-12-24T18:29:51.164Z" }, + { url = "https://files.pythonhosted.org/packages/ee/81/aca1eb176de671f8bda479b11acdc42c132b61a2ac861c883907dde6debb/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:77e6f57a20b9bd4e1e2cedda4d0b986ebd0216236f0106e55c28aea3d3d69b16", size = 1478139, upload-time = "2024-12-24T18:29:52.594Z" }, + { url = "https://files.pythonhosted.org/packages/49/f4/e081522473671c97b2687d380e9e4c26f748a86363ce5af48b4a28e48d06/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08e77738ed7538f036cd1170cbed942ef749137b1311fa2bbe2a7fda2f6bf3cc", size = 1413517, upload-time = "2024-12-24T18:29:53.941Z" }, + { url = "https://files.pythonhosted.org/packages/8f/e9/6a7d025d8da8c4931522922cd706105aa32b3291d1add8c5427cdcd66e63/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a5ce1e481a74b44dd5e92ff03ea0cb371ae7a0268318e202be06c8f04f4f1246", size = 1474952, upload-time = "2024-12-24T18:29:56.523Z" }, + { url = "https://files.pythonhosted.org/packages/82/13/13fa685ae167bee5d94b415991c4fc7bb0a1b6ebea6e753a87044b209678/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:fc2ace710ba7c1dfd1a3b42530b62b9ceed115f19a1656adefce7b1782a37794", size = 2269132, upload-time = "2024-12-24T18:29:57.989Z" }, + { url = "https://files.pythonhosted.org/packages/ef/92/bb7c9395489b99a6cb41d502d3686bac692586db2045adc19e45ee64ed23/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:3452046c37c7692bd52b0e752b87954ef86ee2224e624ef7ce6cb21e8c41cc1b", size = 2425997, upload-time = "2024-12-24T18:29:59.393Z" }, + { url = "https://files.pythonhosted.org/packages/ed/12/87f0e9271e2b63d35d0d8524954145837dd1a6c15b62a2d8c1ebe0f182b4/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:7e9a60b50fe8b2ec6f448fe8d81b07e40141bfced7f896309df271a0b92f80f3", size = 2376060, upload-time = "2024-12-24T18:30:01.338Z" }, + { url = "https://files.pythonhosted.org/packages/02/6e/c8af39288edbce8bf0fa35dee427b082758a4b71e9c91ef18fa667782138/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:918139571133f366e8362fa4a297aeba86c7816b7ecf0bc79168080e2bd79957", size = 2520471, upload-time = "2024-12-24T18:30:04.574Z" }, + { url = "https://files.pythonhosted.org/packages/13/78/df381bc7b26e535c91469f77f16adcd073beb3e2dd25042efd064af82323/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e063ef9f89885a1d68dd8b2e18f5ead48653176d10a0e324e3b0030e3a69adeb", size = 2338793, upload-time = "2024-12-24T18:30:06.25Z" }, + { url = "https://files.pythonhosted.org/packages/d0/dc/c1abe38c37c071d0fc71c9a474fd0b9ede05d42f5a458d584619cfd2371a/kiwisolver-1.4.8-cp313-cp313-win_amd64.whl", hash = "sha256:a17b7c4f5b2c51bb68ed379defd608a03954a1845dfed7cc0117f1cc8a9b7fd2", size = 71855, upload-time = "2024-12-24T18:30:07.535Z" }, + { url = "https://files.pythonhosted.org/packages/a0/b6/21529d595b126ac298fdd90b705d87d4c5693de60023e0efcb4f387ed99e/kiwisolver-1.4.8-cp313-cp313-win_arm64.whl", hash = "sha256:3cd3bc628b25f74aedc6d374d5babf0166a92ff1317f46267f12d2ed54bc1d30", size = 65430, upload-time = "2024-12-24T18:30:08.504Z" }, + { url = "https://files.pythonhosted.org/packages/34/bd/b89380b7298e3af9b39f49334e3e2a4af0e04819789f04b43d560516c0c8/kiwisolver-1.4.8-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:370fd2df41660ed4e26b8c9d6bbcad668fbe2560462cba151a721d49e5b6628c", size = 126294, upload-time = "2024-12-24T18:30:09.508Z" }, + { url = "https://files.pythonhosted.org/packages/83/41/5857dc72e5e4148eaac5aa76e0703e594e4465f8ab7ec0fc60e3a9bb8fea/kiwisolver-1.4.8-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:84a2f830d42707de1d191b9490ac186bf7997a9495d4e9072210a1296345f7dc", size = 67736, upload-time = "2024-12-24T18:30:11.039Z" }, + { url = "https://files.pythonhosted.org/packages/e1/d1/be059b8db56ac270489fb0b3297fd1e53d195ba76e9bbb30e5401fa6b759/kiwisolver-1.4.8-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:7a3ad337add5148cf51ce0b55642dc551c0b9d6248458a757f98796ca7348712", size = 66194, upload-time = "2024-12-24T18:30:14.886Z" }, + { url = "https://files.pythonhosted.org/packages/e1/83/4b73975f149819eb7dcf9299ed467eba068ecb16439a98990dcb12e63fdd/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7506488470f41169b86d8c9aeff587293f530a23a23a49d6bc64dab66bedc71e", size = 1465942, upload-time = "2024-12-24T18:30:18.927Z" }, + { url = "https://files.pythonhosted.org/packages/c7/2c/30a5cdde5102958e602c07466bce058b9d7cb48734aa7a4327261ac8e002/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f0121b07b356a22fb0414cec4666bbe36fd6d0d759db3d37228f496ed67c880", size = 1595341, upload-time = "2024-12-24T18:30:22.102Z" }, + { url = "https://files.pythonhosted.org/packages/ff/9b/1e71db1c000385aa069704f5990574b8244cce854ecd83119c19e83c9586/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d6d6bd87df62c27d4185de7c511c6248040afae67028a8a22012b010bc7ad062", size = 1598455, upload-time = "2024-12-24T18:30:24.947Z" }, + { url = "https://files.pythonhosted.org/packages/85/92/c8fec52ddf06231b31cbb779af77e99b8253cd96bd135250b9498144c78b/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:291331973c64bb9cce50bbe871fb2e675c4331dab4f31abe89f175ad7679a4d7", size = 1522138, upload-time = "2024-12-24T18:30:26.286Z" }, + { url = "https://files.pythonhosted.org/packages/0b/51/9eb7e2cd07a15d8bdd976f6190c0164f92ce1904e5c0c79198c4972926b7/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:893f5525bb92d3d735878ec00f781b2de998333659507d29ea4466208df37bed", size = 1582857, upload-time = "2024-12-24T18:30:28.86Z" }, + { url = "https://files.pythonhosted.org/packages/0f/95/c5a00387a5405e68ba32cc64af65ce881a39b98d73cc394b24143bebc5b8/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:b47a465040146981dc9db8647981b8cb96366fbc8d452b031e4f8fdffec3f26d", size = 2293129, upload-time = "2024-12-24T18:30:30.34Z" }, + { url = "https://files.pythonhosted.org/packages/44/83/eeb7af7d706b8347548313fa3a3a15931f404533cc54fe01f39e830dd231/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:99cea8b9dd34ff80c521aef46a1dddb0dcc0283cf18bde6d756f1e6f31772165", size = 2421538, upload-time = "2024-12-24T18:30:33.334Z" }, + { url = "https://files.pythonhosted.org/packages/05/f9/27e94c1b3eb29e6933b6986ffc5fa1177d2cd1f0c8efc5f02c91c9ac61de/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:151dffc4865e5fe6dafce5480fab84f950d14566c480c08a53c663a0020504b6", size = 2390661, upload-time = "2024-12-24T18:30:34.939Z" }, + { url = "https://files.pythonhosted.org/packages/d9/d4/3c9735faa36ac591a4afcc2980d2691000506050b7a7e80bcfe44048daa7/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:577facaa411c10421314598b50413aa1ebcf5126f704f1e5d72d7e4e9f020d90", size = 2546710, upload-time = "2024-12-24T18:30:37.281Z" }, + { url = "https://files.pythonhosted.org/packages/4c/fa/be89a49c640930180657482a74970cdcf6f7072c8d2471e1babe17a222dc/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:be4816dc51c8a471749d664161b434912eee82f2ea66bd7628bd14583a833e85", size = 2349213, upload-time = "2024-12-24T18:30:40.019Z" }, + { url = "https://files.pythonhosted.org/packages/1f/f9/ae81c47a43e33b93b0a9819cac6723257f5da2a5a60daf46aa5c7226ea85/kiwisolver-1.4.8-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e7a019419b7b510f0f7c9dceff8c5eae2392037eae483a7f9162625233802b0a", size = 60403, upload-time = "2024-12-24T18:30:41.372Z" }, + { url = "https://files.pythonhosted.org/packages/58/ca/f92b5cb6f4ce0c1ebfcfe3e2e42b96917e16f7090e45b21102941924f18f/kiwisolver-1.4.8-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:286b18e86682fd2217a48fc6be6b0f20c1d0ed10958d8dc53453ad58d7be0bf8", size = 58657, upload-time = "2024-12-24T18:30:42.392Z" }, + { url = "https://files.pythonhosted.org/packages/80/28/ae0240f732f0484d3a4dc885d055653c47144bdf59b670aae0ec3c65a7c8/kiwisolver-1.4.8-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4191ee8dfd0be1c3666ccbac178c5a05d5f8d689bbe3fc92f3c4abec817f8fe0", size = 84948, upload-time = "2024-12-24T18:30:44.703Z" }, + { url = "https://files.pythonhosted.org/packages/5d/eb/78d50346c51db22c7203c1611f9b513075f35c4e0e4877c5dde378d66043/kiwisolver-1.4.8-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7cd2785b9391f2873ad46088ed7599a6a71e762e1ea33e87514b1a441ed1da1c", size = 81186, upload-time = "2024-12-24T18:30:45.654Z" }, + { url = "https://files.pythonhosted.org/packages/43/f8/7259f18c77adca88d5f64f9a522792e178b2691f3748817a8750c2d216ef/kiwisolver-1.4.8-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c07b29089b7ba090b6f1a669f1411f27221c3662b3a1b7010e67b59bb5a6f10b", size = 80279, upload-time = "2024-12-24T18:30:47.951Z" }, + { url = "https://files.pythonhosted.org/packages/3a/1d/50ad811d1c5dae091e4cf046beba925bcae0a610e79ae4c538f996f63ed5/kiwisolver-1.4.8-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:65ea09a5a3faadd59c2ce96dc7bf0f364986a315949dc6374f04396b0d60e09b", size = 71762, upload-time = "2024-12-24T18:30:48.903Z" }, +] + +[[package]] +name = "markupsafe" +version = "3.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537, upload-time = "2024-10-18T15:21:54.129Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/90/d08277ce111dd22f77149fd1a5d4653eeb3b3eaacbdfcbae5afb2600eebd/MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8", size = 14357, upload-time = "2024-10-18T15:20:51.44Z" }, + { url = "https://files.pythonhosted.org/packages/04/e1/6e2194baeae0bca1fae6629dc0cbbb968d4d941469cbab11a3872edff374/MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158", size = 12393, upload-time = "2024-10-18T15:20:52.426Z" }, + { url = "https://files.pythonhosted.org/packages/1d/69/35fa85a8ece0a437493dc61ce0bb6d459dcba482c34197e3efc829aa357f/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579", size = 21732, upload-time = "2024-10-18T15:20:53.578Z" }, + { url = "https://files.pythonhosted.org/packages/22/35/137da042dfb4720b638d2937c38a9c2df83fe32d20e8c8f3185dbfef05f7/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d", size = 20866, upload-time = "2024-10-18T15:20:55.06Z" }, + { url = "https://files.pythonhosted.org/packages/29/28/6d029a903727a1b62edb51863232152fd335d602def598dade38996887f0/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb", size = 20964, upload-time = "2024-10-18T15:20:55.906Z" }, + { url = "https://files.pythonhosted.org/packages/cc/cd/07438f95f83e8bc028279909d9c9bd39e24149b0d60053a97b2bc4f8aa51/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b", size = 21977, upload-time = "2024-10-18T15:20:57.189Z" }, + { url = "https://files.pythonhosted.org/packages/29/01/84b57395b4cc062f9c4c55ce0df7d3108ca32397299d9df00fedd9117d3d/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c", size = 21366, upload-time = "2024-10-18T15:20:58.235Z" }, + { url = "https://files.pythonhosted.org/packages/bd/6e/61ebf08d8940553afff20d1fb1ba7294b6f8d279df9fd0c0db911b4bbcfd/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171", size = 21091, upload-time = "2024-10-18T15:20:59.235Z" }, + { url = "https://files.pythonhosted.org/packages/11/23/ffbf53694e8c94ebd1e7e491de185124277964344733c45481f32ede2499/MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50", size = 15065, upload-time = "2024-10-18T15:21:00.307Z" }, + { url = "https://files.pythonhosted.org/packages/44/06/e7175d06dd6e9172d4a69a72592cb3f7a996a9c396eee29082826449bbc3/MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a", size = 15514, upload-time = "2024-10-18T15:21:01.122Z" }, + { url = "https://files.pythonhosted.org/packages/6b/28/bbf83e3f76936960b850435576dd5e67034e200469571be53f69174a2dfd/MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d", size = 14353, upload-time = "2024-10-18T15:21:02.187Z" }, + { url = "https://files.pythonhosted.org/packages/6c/30/316d194b093cde57d448a4c3209f22e3046c5bb2fb0820b118292b334be7/MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93", size = 12392, upload-time = "2024-10-18T15:21:02.941Z" }, + { url = "https://files.pythonhosted.org/packages/f2/96/9cdafba8445d3a53cae530aaf83c38ec64c4d5427d975c974084af5bc5d2/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832", size = 23984, upload-time = "2024-10-18T15:21:03.953Z" }, + { url = "https://files.pythonhosted.org/packages/f1/a4/aefb044a2cd8d7334c8a47d3fb2c9f328ac48cb349468cc31c20b539305f/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84", size = 23120, upload-time = "2024-10-18T15:21:06.495Z" }, + { url = "https://files.pythonhosted.org/packages/8d/21/5e4851379f88f3fad1de30361db501300d4f07bcad047d3cb0449fc51f8c/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca", size = 23032, upload-time = "2024-10-18T15:21:07.295Z" }, + { url = "https://files.pythonhosted.org/packages/00/7b/e92c64e079b2d0d7ddf69899c98842f3f9a60a1ae72657c89ce2655c999d/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798", size = 24057, upload-time = "2024-10-18T15:21:08.073Z" }, + { url = "https://files.pythonhosted.org/packages/f9/ac/46f960ca323037caa0a10662ef97d0a4728e890334fc156b9f9e52bcc4ca/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e", size = 23359, upload-time = "2024-10-18T15:21:09.318Z" }, + { url = "https://files.pythonhosted.org/packages/69/84/83439e16197337b8b14b6a5b9c2105fff81d42c2a7c5b58ac7b62ee2c3b1/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4", size = 23306, upload-time = "2024-10-18T15:21:10.185Z" }, + { url = "https://files.pythonhosted.org/packages/9a/34/a15aa69f01e2181ed8d2b685c0d2f6655d5cca2c4db0ddea775e631918cd/MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d", size = 15094, upload-time = "2024-10-18T15:21:11.005Z" }, + { url = "https://files.pythonhosted.org/packages/da/b8/3a3bd761922d416f3dc5d00bfbed11f66b1ab89a0c2b6e887240a30b0f6b/MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b", size = 15521, upload-time = "2024-10-18T15:21:12.911Z" }, + { url = "https://files.pythonhosted.org/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", size = 14274, upload-time = "2024-10-18T15:21:13.777Z" }, + { url = "https://files.pythonhosted.org/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", size = 12348, upload-time = "2024-10-18T15:21:14.822Z" }, + { url = "https://files.pythonhosted.org/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", size = 24149, upload-time = "2024-10-18T15:21:15.642Z" }, + { url = "https://files.pythonhosted.org/packages/f3/f0/89e7aadfb3749d0f52234a0c8c7867877876e0a20b60e2188e9850794c17/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8", size = 23118, upload-time = "2024-10-18T15:21:17.133Z" }, + { url = "https://files.pythonhosted.org/packages/d5/da/f2eeb64c723f5e3777bc081da884b414671982008c47dcc1873d81f625b6/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c", size = 22993, upload-time = "2024-10-18T15:21:18.064Z" }, + { url = "https://files.pythonhosted.org/packages/da/0e/1f32af846df486dce7c227fe0f2398dc7e2e51d4a370508281f3c1c5cddc/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557", size = 24178, upload-time = "2024-10-18T15:21:18.859Z" }, + { url = "https://files.pythonhosted.org/packages/c4/f6/bb3ca0532de8086cbff5f06d137064c8410d10779c4c127e0e47d17c0b71/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22", size = 23319, upload-time = "2024-10-18T15:21:19.671Z" }, + { url = "https://files.pythonhosted.org/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", size = 23352, upload-time = "2024-10-18T15:21:20.971Z" }, + { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097, upload-time = "2024-10-18T15:21:22.646Z" }, + { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601, upload-time = "2024-10-18T15:21:23.499Z" }, + { url = "https://files.pythonhosted.org/packages/83/0e/67eb10a7ecc77a0c2bbe2b0235765b98d164d81600746914bebada795e97/MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd", size = 14274, upload-time = "2024-10-18T15:21:24.577Z" }, + { url = "https://files.pythonhosted.org/packages/2b/6d/9409f3684d3335375d04e5f05744dfe7e9f120062c9857df4ab490a1031a/MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430", size = 12352, upload-time = "2024-10-18T15:21:25.382Z" }, + { url = "https://files.pythonhosted.org/packages/d2/f5/6eadfcd3885ea85fe2a7c128315cc1bb7241e1987443d78c8fe712d03091/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094", size = 24122, upload-time = "2024-10-18T15:21:26.199Z" }, + { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085, upload-time = "2024-10-18T15:21:27.029Z" }, + { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978, upload-time = "2024-10-18T15:21:27.846Z" }, + { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208, upload-time = "2024-10-18T15:21:28.744Z" }, + { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357, upload-time = "2024-10-18T15:21:29.545Z" }, + { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344, upload-time = "2024-10-18T15:21:30.366Z" }, + { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101, upload-time = "2024-10-18T15:21:31.207Z" }, + { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603, upload-time = "2024-10-18T15:21:32.032Z" }, + { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510, upload-time = "2024-10-18T15:21:33.625Z" }, + { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486, upload-time = "2024-10-18T15:21:34.611Z" }, + { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480, upload-time = "2024-10-18T15:21:35.398Z" }, + { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914, upload-time = "2024-10-18T15:21:36.231Z" }, + { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796, upload-time = "2024-10-18T15:21:37.073Z" }, + { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473, upload-time = "2024-10-18T15:21:37.932Z" }, + { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114, upload-time = "2024-10-18T15:21:39.799Z" }, + { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098, upload-time = "2024-10-18T15:21:40.813Z" }, + { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208, upload-time = "2024-10-18T15:21:41.814Z" }, + { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739, upload-time = "2024-10-18T15:21:42.784Z" }, + { url = "https://files.pythonhosted.org/packages/a7/ea/9b1530c3fdeeca613faeb0fb5cbcf2389d816072fab72a71b45749ef6062/MarkupSafe-3.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a", size = 14344, upload-time = "2024-10-18T15:21:43.721Z" }, + { url = "https://files.pythonhosted.org/packages/4b/c2/fbdbfe48848e7112ab05e627e718e854d20192b674952d9042ebd8c9e5de/MarkupSafe-3.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff", size = 12389, upload-time = "2024-10-18T15:21:44.666Z" }, + { url = "https://files.pythonhosted.org/packages/f0/25/7a7c6e4dbd4f867d95d94ca15449e91e52856f6ed1905d58ef1de5e211d0/MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13", size = 21607, upload-time = "2024-10-18T15:21:45.452Z" }, + { url = "https://files.pythonhosted.org/packages/53/8f/f339c98a178f3c1e545622206b40986a4c3307fe39f70ccd3d9df9a9e425/MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144", size = 20728, upload-time = "2024-10-18T15:21:46.295Z" }, + { url = "https://files.pythonhosted.org/packages/1a/03/8496a1a78308456dbd50b23a385c69b41f2e9661c67ea1329849a598a8f9/MarkupSafe-3.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29", size = 20826, upload-time = "2024-10-18T15:21:47.134Z" }, + { url = "https://files.pythonhosted.org/packages/e6/cf/0a490a4bd363048c3022f2f475c8c05582179bb179defcee4766fb3dcc18/MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0", size = 21843, upload-time = "2024-10-18T15:21:48.334Z" }, + { url = "https://files.pythonhosted.org/packages/19/a3/34187a78613920dfd3cdf68ef6ce5e99c4f3417f035694074beb8848cd77/MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0", size = 21219, upload-time = "2024-10-18T15:21:49.587Z" }, + { url = "https://files.pythonhosted.org/packages/17/d8/5811082f85bb88410ad7e452263af048d685669bbbfb7b595e8689152498/MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178", size = 20946, upload-time = "2024-10-18T15:21:50.441Z" }, + { url = "https://files.pythonhosted.org/packages/7c/31/bd635fb5989440d9365c5e3c47556cfea121c7803f5034ac843e8f37c2f2/MarkupSafe-3.0.2-cp39-cp39-win32.whl", hash = "sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f", size = 15063, upload-time = "2024-10-18T15:21:51.385Z" }, + { url = "https://files.pythonhosted.org/packages/b3/73/085399401383ce949f727afec55ec3abd76648d04b9f22e1c0e99cb4bec3/MarkupSafe-3.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a", size = 15506, upload-time = "2024-10-18T15:21:52.974Z" }, +] + +[[package]] +name = "matplotlib" +version = "3.9.4" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", + "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "contourpy", version = "1.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "cycler", marker = "python_full_version < '3.10'" }, + { name = "fonttools", marker = "python_full_version < '3.10'" }, + { name = "importlib-resources", marker = "python_full_version < '3.10'" }, + { name = "kiwisolver", version = "1.4.7", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "packaging", marker = "python_full_version < '3.10'" }, + { name = "pillow", marker = "python_full_version < '3.10'" }, + { name = "pyparsing", marker = "python_full_version < '3.10'" }, + { name = "python-dateutil", marker = "python_full_version < '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/17/1747b4154034befd0ed33b52538f5eb7752d05bb51c5e2a31470c3bc7d52/matplotlib-3.9.4.tar.gz", hash = "sha256:1e00e8be7393cbdc6fedfa8a6fba02cf3e83814b285db1c60b906a023ba41bc3", size = 36106529, upload-time = "2024-12-13T05:56:34.184Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/94/27d2e2c30d54b56c7b764acc1874a909e34d1965a427fc7092bb6a588b63/matplotlib-3.9.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:c5fdd7abfb706dfa8d307af64a87f1a862879ec3cd8d0ec8637458f0885b9c50", size = 7885089, upload-time = "2024-12-13T05:54:24.224Z" }, + { url = "https://files.pythonhosted.org/packages/c6/25/828273307e40a68eb8e9df832b6b2aaad075864fdc1de4b1b81e40b09e48/matplotlib-3.9.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d89bc4e85e40a71d1477780366c27fb7c6494d293e1617788986f74e2a03d7ff", size = 7770600, upload-time = "2024-12-13T05:54:27.214Z" }, + { url = "https://files.pythonhosted.org/packages/f2/65/f841a422ec994da5123368d76b126acf4fc02ea7459b6e37c4891b555b83/matplotlib-3.9.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ddf9f3c26aae695c5daafbf6b94e4c1a30d6cd617ba594bbbded3b33a1fcfa26", size = 8200138, upload-time = "2024-12-13T05:54:29.497Z" }, + { url = "https://files.pythonhosted.org/packages/07/06/272aca07a38804d93b6050813de41ca7ab0e29ba7a9dd098e12037c919a9/matplotlib-3.9.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18ebcf248030173b59a868fda1fe42397253f6698995b55e81e1f57431d85e50", size = 8312711, upload-time = "2024-12-13T05:54:34.396Z" }, + { url = "https://files.pythonhosted.org/packages/98/37/f13e23b233c526b7e27ad61be0a771894a079e0f7494a10d8d81557e0e9a/matplotlib-3.9.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:974896ec43c672ec23f3f8c648981e8bc880ee163146e0312a9b8def2fac66f5", size = 9090622, upload-time = "2024-12-13T05:54:36.808Z" }, + { url = "https://files.pythonhosted.org/packages/4f/8c/b1f5bd2bd70e60f93b1b54c4d5ba7a992312021d0ddddf572f9a1a6d9348/matplotlib-3.9.4-cp310-cp310-win_amd64.whl", hash = "sha256:4598c394ae9711cec135639374e70871fa36b56afae17bdf032a345be552a88d", size = 7828211, upload-time = "2024-12-13T05:54:40.596Z" }, + { url = "https://files.pythonhosted.org/packages/74/4b/65be7959a8fa118a3929b49a842de5b78bb55475236fcf64f3e308ff74a0/matplotlib-3.9.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d4dd29641d9fb8bc4492420c5480398dd40a09afd73aebe4eb9d0071a05fbe0c", size = 7894430, upload-time = "2024-12-13T05:54:44.049Z" }, + { url = "https://files.pythonhosted.org/packages/e9/18/80f70d91896e0a517b4a051c3fd540daa131630fd75e02e250365353b253/matplotlib-3.9.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30e5b22e8bcfb95442bf7d48b0d7f3bdf4a450cbf68986ea45fca3d11ae9d099", size = 7780045, upload-time = "2024-12-13T05:54:46.414Z" }, + { url = "https://files.pythonhosted.org/packages/a2/73/ccb381026e3238c5c25c3609ba4157b2d1a617ec98d65a8b4ee4e1e74d02/matplotlib-3.9.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2bb0030d1d447fd56dcc23b4c64a26e44e898f0416276cac1ebc25522e0ac249", size = 8209906, upload-time = "2024-12-13T05:54:49.459Z" }, + { url = "https://files.pythonhosted.org/packages/ab/33/1648da77b74741c89f5ea95cbf42a291b4b364f2660b316318811404ed97/matplotlib-3.9.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aca90ed222ac3565d2752b83dbb27627480d27662671e4d39da72e97f657a423", size = 8322873, upload-time = "2024-12-13T05:54:53.066Z" }, + { url = "https://files.pythonhosted.org/packages/57/d3/8447ba78bc6593c9044c372d1609f8ea10fb1e071e7a9e0747bea74fc16c/matplotlib-3.9.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a181b2aa2906c608fcae72f977a4a2d76e385578939891b91c2550c39ecf361e", size = 9099566, upload-time = "2024-12-13T05:54:55.522Z" }, + { url = "https://files.pythonhosted.org/packages/23/e1/4f0e237bf349c02ff9d1b6e7109f1a17f745263809b9714a8576dc17752b/matplotlib-3.9.4-cp311-cp311-win_amd64.whl", hash = "sha256:1f6882828231eca17f501c4dcd98a05abb3f03d157fbc0769c6911fe08b6cfd3", size = 7838065, upload-time = "2024-12-13T05:54:58.337Z" }, + { url = "https://files.pythonhosted.org/packages/1a/2b/c918bf6c19d6445d1cefe3d2e42cb740fb997e14ab19d4daeb6a7ab8a157/matplotlib-3.9.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:dfc48d67e6661378a21c2983200a654b72b5c5cdbd5d2cf6e5e1ece860f0cc70", size = 7891131, upload-time = "2024-12-13T05:55:02.837Z" }, + { url = "https://files.pythonhosted.org/packages/c1/e5/b4e8fc601ca302afeeabf45f30e706a445c7979a180e3a978b78b2b681a4/matplotlib-3.9.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:47aef0fab8332d02d68e786eba8113ffd6f862182ea2999379dec9e237b7e483", size = 7776365, upload-time = "2024-12-13T05:55:05.158Z" }, + { url = "https://files.pythonhosted.org/packages/99/06/b991886c506506476e5d83625c5970c656a491b9f80161458fed94597808/matplotlib-3.9.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fba1f52c6b7dc764097f52fd9ab627b90db452c9feb653a59945de16752e965f", size = 8200707, upload-time = "2024-12-13T05:55:09.48Z" }, + { url = "https://files.pythonhosted.org/packages/c3/e2/556b627498cb27e61026f2d1ba86a78ad1b836fef0996bef5440e8bc9559/matplotlib-3.9.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:173ac3748acaac21afcc3fa1633924609ba1b87749006bc25051c52c422a5d00", size = 8313761, upload-time = "2024-12-13T05:55:12.95Z" }, + { url = "https://files.pythonhosted.org/packages/58/ff/165af33ec766ff818306ea88e91f9f60d2a6ed543be1eb122a98acbf3b0d/matplotlib-3.9.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:320edea0cadc07007765e33f878b13b3738ffa9745c5f707705692df70ffe0e0", size = 9095284, upload-time = "2024-12-13T05:55:16.199Z" }, + { url = "https://files.pythonhosted.org/packages/9f/8b/3d0c7a002db3b1ed702731c2a9a06d78d035f1f2fb0fb936a8e43cc1e9f4/matplotlib-3.9.4-cp312-cp312-win_amd64.whl", hash = "sha256:a4a4cfc82330b27042a7169533da7991e8789d180dd5b3daeaee57d75cd5a03b", size = 7841160, upload-time = "2024-12-13T05:55:19.991Z" }, + { url = "https://files.pythonhosted.org/packages/49/b1/999f89a7556d101b23a2f0b54f1b6e140d73f56804da1398f2f0bc0924bc/matplotlib-3.9.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:37eeffeeca3c940985b80f5b9a7b95ea35671e0e7405001f249848d2b62351b6", size = 7891499, upload-time = "2024-12-13T05:55:22.142Z" }, + { url = "https://files.pythonhosted.org/packages/87/7b/06a32b13a684977653396a1bfcd34d4e7539c5d55c8cbfaa8ae04d47e4a9/matplotlib-3.9.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3e7465ac859ee4abcb0d836137cd8414e7bb7ad330d905abced457217d4f0f45", size = 7776802, upload-time = "2024-12-13T05:55:25.947Z" }, + { url = "https://files.pythonhosted.org/packages/65/87/ac498451aff739e515891bbb92e566f3c7ef31891aaa878402a71f9b0910/matplotlib-3.9.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4c12302c34afa0cf061bea23b331e747e5e554b0fa595c96e01c7b75bc3b858", size = 8200802, upload-time = "2024-12-13T05:55:28.461Z" }, + { url = "https://files.pythonhosted.org/packages/f8/6b/9eb761c00e1cb838f6c92e5f25dcda3f56a87a52f6cb8fdfa561e6cf6a13/matplotlib-3.9.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2b8c97917f21b75e72108b97707ba3d48f171541a74aa2a56df7a40626bafc64", size = 8313880, upload-time = "2024-12-13T05:55:30.965Z" }, + { url = "https://files.pythonhosted.org/packages/d7/a2/c8eaa600e2085eec7e38cbbcc58a30fc78f8224939d31d3152bdafc01fd1/matplotlib-3.9.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:0229803bd7e19271b03cb09f27db76c918c467aa4ce2ae168171bc67c3f508df", size = 9094637, upload-time = "2024-12-13T05:55:33.701Z" }, + { url = "https://files.pythonhosted.org/packages/71/1f/c6e1daea55b7bfeb3d84c6cb1abc449f6a02b181e7e2a5e4db34c3afb793/matplotlib-3.9.4-cp313-cp313-win_amd64.whl", hash = "sha256:7c0d8ef442ebf56ff5e206f8083d08252ee738e04f3dc88ea882853a05488799", size = 7841311, upload-time = "2024-12-13T05:55:36.737Z" }, + { url = "https://files.pythonhosted.org/packages/c0/3a/2757d3f7d388b14dd48f5a83bea65b6d69f000e86b8f28f74d86e0d375bd/matplotlib-3.9.4-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:a04c3b00066a688834356d196136349cb32f5e1003c55ac419e91585168b88fb", size = 7919989, upload-time = "2024-12-13T05:55:39.024Z" }, + { url = "https://files.pythonhosted.org/packages/24/28/f5077c79a4f521589a37fe1062d6a6ea3534e068213f7357e7cfffc2e17a/matplotlib-3.9.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:04c519587f6c210626741a1e9a68eefc05966ede24205db8982841826af5871a", size = 7809417, upload-time = "2024-12-13T05:55:42.412Z" }, + { url = "https://files.pythonhosted.org/packages/36/c8/c523fd2963156692916a8eb7d4069084cf729359f7955cf09075deddfeaf/matplotlib-3.9.4-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:308afbf1a228b8b525fcd5cec17f246bbbb63b175a3ef6eb7b4d33287ca0cf0c", size = 8226258, upload-time = "2024-12-13T05:55:47.259Z" }, + { url = "https://files.pythonhosted.org/packages/f6/88/499bf4b8fa9349b6f5c0cf4cead0ebe5da9d67769129f1b5651e5ac51fbc/matplotlib-3.9.4-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ddb3b02246ddcffd3ce98e88fed5b238bc5faff10dbbaa42090ea13241d15764", size = 8335849, upload-time = "2024-12-13T05:55:49.763Z" }, + { url = "https://files.pythonhosted.org/packages/b8/9f/20a4156b9726188646a030774ee337d5ff695a965be45ce4dbcb9312c170/matplotlib-3.9.4-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8a75287e9cb9eee48cb79ec1d806f75b29c0fde978cb7223a1f4c5848d696041", size = 9102152, upload-time = "2024-12-13T05:55:51.997Z" }, + { url = "https://files.pythonhosted.org/packages/10/11/237f9c3a4e8d810b1759b67ff2da7c32c04f9c80aa475e7beb36ed43a8fb/matplotlib-3.9.4-cp313-cp313t-win_amd64.whl", hash = "sha256:488deb7af140f0ba86da003e66e10d55ff915e152c78b4b66d231638400b1965", size = 7896987, upload-time = "2024-12-13T05:55:55.941Z" }, + { url = "https://files.pythonhosted.org/packages/56/eb/501b465c9fef28f158e414ea3a417913dc2ac748564c7ed41535f23445b4/matplotlib-3.9.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:3c3724d89a387ddf78ff88d2a30ca78ac2b4c89cf37f2db4bd453c34799e933c", size = 7885919, upload-time = "2024-12-13T05:55:59.66Z" }, + { url = "https://files.pythonhosted.org/packages/da/36/236fbd868b6c91309a5206bd90c3f881f4f44b2d997cd1d6239ef652f878/matplotlib-3.9.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d5f0a8430ffe23d7e32cfd86445864ccad141797f7d25b7c41759a5b5d17cfd7", size = 7771486, upload-time = "2024-12-13T05:56:04.264Z" }, + { url = "https://files.pythonhosted.org/packages/e0/4b/105caf2d54d5ed11d9f4335398f5103001a03515f2126c936a752ccf1461/matplotlib-3.9.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6bb0141a21aef3b64b633dc4d16cbd5fc538b727e4958be82a0e1c92a234160e", size = 8201838, upload-time = "2024-12-13T05:56:06.792Z" }, + { url = "https://files.pythonhosted.org/packages/5d/a7/bb01188fb4013d34d274caf44a2f8091255b0497438e8b6c0a7c1710c692/matplotlib-3.9.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:57aa235109e9eed52e2c2949db17da185383fa71083c00c6c143a60e07e0888c", size = 8314492, upload-time = "2024-12-13T05:56:09.964Z" }, + { url = "https://files.pythonhosted.org/packages/33/19/02e1a37f7141fc605b193e927d0a9cdf9dc124a20b9e68793f4ffea19695/matplotlib-3.9.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b18c600061477ccfdd1e6fd050c33d8be82431700f3452b297a56d9ed7037abb", size = 9092500, upload-time = "2024-12-13T05:56:13.55Z" }, + { url = "https://files.pythonhosted.org/packages/57/68/c2feb4667adbf882ffa4b3e0ac9967f848980d9f8b5bebd86644aa67ce6a/matplotlib-3.9.4-cp39-cp39-win_amd64.whl", hash = "sha256:ef5f2d1b67d2d2145ff75e10f8c008bfbf71d45137c4b648c87193e7dd053eac", size = 7822962, upload-time = "2024-12-13T05:56:16.358Z" }, + { url = "https://files.pythonhosted.org/packages/0c/22/2ef6a364cd3f565442b0b055e0599744f1e4314ec7326cdaaa48a4d864d7/matplotlib-3.9.4-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:44e0ed786d769d85bc787b0606a53f2d8d2d1d3c8a2608237365e9121c1a338c", size = 7877995, upload-time = "2024-12-13T05:56:18.805Z" }, + { url = "https://files.pythonhosted.org/packages/87/b8/2737456e566e9f4d94ae76b8aa0d953d9acb847714f9a7ad80184474f5be/matplotlib-3.9.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:09debb9ce941eb23ecdbe7eab972b1c3e0276dcf01688073faff7b0f61d6c6ca", size = 7769300, upload-time = "2024-12-13T05:56:21.315Z" }, + { url = "https://files.pythonhosted.org/packages/b2/1f/e709c6ec7b5321e6568769baa288c7178e60a93a9da9e682b39450da0e29/matplotlib-3.9.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bcc53cf157a657bfd03afab14774d54ba73aa84d42cfe2480c91bd94873952db", size = 8313423, upload-time = "2024-12-13T05:56:26.719Z" }, + { url = "https://files.pythonhosted.org/packages/5e/b6/5a1f868782cd13f053a679984e222007ecff654a9bfbac6b27a65f4eeb05/matplotlib-3.9.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:ad45da51be7ad02387801fd154ef74d942f49fe3fcd26a64c94842ba7ec0d865", size = 7854624, upload-time = "2024-12-13T05:56:29.359Z" }, +] + +[[package]] +name = "matplotlib" +version = "3.10.3" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "contourpy", version = "1.3.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "cycler", marker = "python_full_version >= '3.10'" }, + { name = "fonttools", marker = "python_full_version >= '3.10'" }, + { name = "kiwisolver", version = "1.4.8", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "packaging", marker = "python_full_version >= '3.10'" }, + { name = "pillow", marker = "python_full_version >= '3.10'" }, + { name = "pyparsing", marker = "python_full_version >= '3.10'" }, + { name = "python-dateutil", marker = "python_full_version >= '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/26/91/d49359a21893183ed2a5b6c76bec40e0b1dcbf8ca148f864d134897cfc75/matplotlib-3.10.3.tar.gz", hash = "sha256:2f82d2c5bb7ae93aaaa4cd42aca65d76ce6376f83304fa3a630b569aca274df0", size = 34799811, upload-time = "2025-05-08T19:10:54.39Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d0/ea/2bba25d289d389c7451f331ecd593944b3705f06ddf593fa7be75037d308/matplotlib-3.10.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:213fadd6348d106ca7db99e113f1bea1e65e383c3ba76e8556ba4a3054b65ae7", size = 8167862, upload-time = "2025-05-08T19:09:39.563Z" }, + { url = "https://files.pythonhosted.org/packages/41/81/cc70b5138c926604e8c9ed810ed4c79e8116ba72e02230852f5c12c87ba2/matplotlib-3.10.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d3bec61cb8221f0ca6313889308326e7bb303d0d302c5cc9e523b2f2e6c73deb", size = 8042149, upload-time = "2025-05-08T19:09:42.413Z" }, + { url = "https://files.pythonhosted.org/packages/4a/9a/0ff45b6bfa42bb16de597e6058edf2361c298ad5ef93b327728145161bbf/matplotlib-3.10.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c21ae75651c0231b3ba014b6d5e08fb969c40cdb5a011e33e99ed0c9ea86ecb", size = 8453719, upload-time = "2025-05-08T19:09:44.901Z" }, + { url = "https://files.pythonhosted.org/packages/85/c7/1866e972fed6d71ef136efbc980d4d1854ab7ef1ea8152bbd995ca231c81/matplotlib-3.10.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a49e39755580b08e30e3620efc659330eac5d6534ab7eae50fa5e31f53ee4e30", size = 8590801, upload-time = "2025-05-08T19:09:47.404Z" }, + { url = "https://files.pythonhosted.org/packages/5d/b9/748f6626d534ab7e255bdc39dc22634d337cf3ce200f261b5d65742044a1/matplotlib-3.10.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cf4636203e1190871d3a73664dea03d26fb019b66692cbfd642faafdad6208e8", size = 9402111, upload-time = "2025-05-08T19:09:49.474Z" }, + { url = "https://files.pythonhosted.org/packages/1f/78/8bf07bd8fb67ea5665a6af188e70b57fcb2ab67057daa06b85a08e59160a/matplotlib-3.10.3-cp310-cp310-win_amd64.whl", hash = "sha256:fd5641a9bb9d55f4dd2afe897a53b537c834b9012684c8444cc105895c8c16fd", size = 8057213, upload-time = "2025-05-08T19:09:51.489Z" }, + { url = "https://files.pythonhosted.org/packages/f5/bd/af9f655456f60fe1d575f54fb14704ee299b16e999704817a7645dfce6b0/matplotlib-3.10.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:0ef061f74cd488586f552d0c336b2f078d43bc00dc473d2c3e7bfee2272f3fa8", size = 8178873, upload-time = "2025-05-08T19:09:53.857Z" }, + { url = "https://files.pythonhosted.org/packages/c2/86/e1c86690610661cd716eda5f9d0b35eaf606ae6c9b6736687cfc8f2d0cd8/matplotlib-3.10.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d96985d14dc5f4a736bbea4b9de9afaa735f8a0fc2ca75be2fa9e96b2097369d", size = 8052205, upload-time = "2025-05-08T19:09:55.684Z" }, + { url = "https://files.pythonhosted.org/packages/54/51/a9f8e49af3883dacddb2da1af5fca1f7468677f1188936452dd9aaaeb9ed/matplotlib-3.10.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c5f0283da91e9522bdba4d6583ed9d5521566f63729ffb68334f86d0bb98049", size = 8465823, upload-time = "2025-05-08T19:09:57.442Z" }, + { url = "https://files.pythonhosted.org/packages/e7/e3/c82963a3b86d6e6d5874cbeaa390166458a7f1961bab9feb14d3d1a10f02/matplotlib-3.10.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdfa07c0ec58035242bc8b2c8aae37037c9a886370eef6850703d7583e19964b", size = 8606464, upload-time = "2025-05-08T19:09:59.471Z" }, + { url = "https://files.pythonhosted.org/packages/0e/34/24da1027e7fcdd9e82da3194c470143c551852757a4b473a09a012f5b945/matplotlib-3.10.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c0b9849a17bce080a16ebcb80a7b714b5677d0ec32161a2cc0a8e5a6030ae220", size = 9413103, upload-time = "2025-05-08T19:10:03.208Z" }, + { url = "https://files.pythonhosted.org/packages/a6/da/948a017c3ea13fd4a97afad5fdebe2f5bbc4d28c0654510ce6fd6b06b7bd/matplotlib-3.10.3-cp311-cp311-win_amd64.whl", hash = "sha256:eef6ed6c03717083bc6d69c2d7ee8624205c29a8e6ea5a31cd3492ecdbaee1e1", size = 8065492, upload-time = "2025-05-08T19:10:05.271Z" }, + { url = "https://files.pythonhosted.org/packages/eb/43/6b80eb47d1071f234ef0c96ca370c2ca621f91c12045f1401b5c9b28a639/matplotlib-3.10.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0ab1affc11d1f495ab9e6362b8174a25afc19c081ba5b0775ef00533a4236eea", size = 8179689, upload-time = "2025-05-08T19:10:07.602Z" }, + { url = "https://files.pythonhosted.org/packages/0f/70/d61a591958325c357204870b5e7b164f93f2a8cca1dc6ce940f563909a13/matplotlib-3.10.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2a818d8bdcafa7ed2eed74487fdb071c09c1ae24152d403952adad11fa3c65b4", size = 8050466, upload-time = "2025-05-08T19:10:09.383Z" }, + { url = "https://files.pythonhosted.org/packages/e7/75/70c9d2306203148cc7902a961240c5927dd8728afedf35e6a77e105a2985/matplotlib-3.10.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:748ebc3470c253e770b17d8b0557f0aa85cf8c63fd52f1a61af5b27ec0b7ffee", size = 8456252, upload-time = "2025-05-08T19:10:11.958Z" }, + { url = "https://files.pythonhosted.org/packages/c4/91/ba0ae1ff4b3f30972ad01cd4a8029e70a0ec3b8ea5be04764b128b66f763/matplotlib-3.10.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed70453fd99733293ace1aec568255bc51c6361cb0da94fa5ebf0649fdb2150a", size = 8601321, upload-time = "2025-05-08T19:10:14.47Z" }, + { url = "https://files.pythonhosted.org/packages/d2/88/d636041eb54a84b889e11872d91f7cbf036b3b0e194a70fa064eb8b04f7a/matplotlib-3.10.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dbed9917b44070e55640bd13419de83b4c918e52d97561544814ba463811cbc7", size = 9406972, upload-time = "2025-05-08T19:10:16.569Z" }, + { url = "https://files.pythonhosted.org/packages/b1/79/0d1c165eac44405a86478082e225fce87874f7198300bbebc55faaf6d28d/matplotlib-3.10.3-cp312-cp312-win_amd64.whl", hash = "sha256:cf37d8c6ef1a48829443e8ba5227b44236d7fcaf7647caa3178a4ff9f7a5be05", size = 8067954, upload-time = "2025-05-08T19:10:18.663Z" }, + { url = "https://files.pythonhosted.org/packages/3b/c1/23cfb566a74c696a3b338d8955c549900d18fe2b898b6e94d682ca21e7c2/matplotlib-3.10.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9f2efccc8dcf2b86fc4ee849eea5dcaecedd0773b30f47980dc0cbeabf26ec84", size = 8180318, upload-time = "2025-05-08T19:10:20.426Z" }, + { url = "https://files.pythonhosted.org/packages/6c/0c/02f1c3b66b30da9ee343c343acbb6251bef5b01d34fad732446eaadcd108/matplotlib-3.10.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3ddbba06a6c126e3301c3d272a99dcbe7f6c24c14024e80307ff03791a5f294e", size = 8051132, upload-time = "2025-05-08T19:10:22.569Z" }, + { url = "https://files.pythonhosted.org/packages/b4/ab/8db1a5ac9b3a7352fb914133001dae889f9fcecb3146541be46bed41339c/matplotlib-3.10.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:748302b33ae9326995b238f606e9ed840bf5886ebafcb233775d946aa8107a15", size = 8457633, upload-time = "2025-05-08T19:10:24.749Z" }, + { url = "https://files.pythonhosted.org/packages/f5/64/41c4367bcaecbc03ef0d2a3ecee58a7065d0a36ae1aa817fe573a2da66d4/matplotlib-3.10.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a80fcccbef63302c0efd78042ea3c2436104c5b1a4d3ae20f864593696364ac7", size = 8601031, upload-time = "2025-05-08T19:10:27.03Z" }, + { url = "https://files.pythonhosted.org/packages/12/6f/6cc79e9e5ab89d13ed64da28898e40fe5b105a9ab9c98f83abd24e46d7d7/matplotlib-3.10.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:55e46cbfe1f8586adb34f7587c3e4f7dedc59d5226719faf6cb54fc24f2fd52d", size = 9406988, upload-time = "2025-05-08T19:10:29.056Z" }, + { url = "https://files.pythonhosted.org/packages/b1/0f/eed564407bd4d935ffabf561ed31099ed609e19287409a27b6d336848653/matplotlib-3.10.3-cp313-cp313-win_amd64.whl", hash = "sha256:151d89cb8d33cb23345cd12490c76fd5d18a56581a16d950b48c6ff19bb2ab93", size = 8068034, upload-time = "2025-05-08T19:10:31.221Z" }, + { url = "https://files.pythonhosted.org/packages/3e/e5/2f14791ff69b12b09e9975e1d116d9578ac684460860ce542c2588cb7a1c/matplotlib-3.10.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:c26dd9834e74d164d06433dc7be5d75a1e9890b926b3e57e74fa446e1a62c3e2", size = 8218223, upload-time = "2025-05-08T19:10:33.114Z" }, + { url = "https://files.pythonhosted.org/packages/5c/08/30a94afd828b6e02d0a52cae4a29d6e9ccfcf4c8b56cc28b021d3588873e/matplotlib-3.10.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:24853dad5b8c84c8c2390fc31ce4858b6df504156893292ce8092d190ef8151d", size = 8094985, upload-time = "2025-05-08T19:10:35.337Z" }, + { url = "https://files.pythonhosted.org/packages/89/44/f3bc6b53066c889d7a1a3ea8094c13af6a667c5ca6220ec60ecceec2dabe/matplotlib-3.10.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68f7878214d369d7d4215e2a9075fef743be38fa401d32e6020bab2dfabaa566", size = 8483109, upload-time = "2025-05-08T19:10:37.611Z" }, + { url = "https://files.pythonhosted.org/packages/ba/c7/473bc559beec08ebee9f86ca77a844b65747e1a6c2691e8c92e40b9f42a8/matplotlib-3.10.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6929fc618cb6db9cb75086f73b3219bbb25920cb24cee2ea7a12b04971a4158", size = 8618082, upload-time = "2025-05-08T19:10:39.892Z" }, + { url = "https://files.pythonhosted.org/packages/d8/e9/6ce8edd264c8819e37bbed8172e0ccdc7107fe86999b76ab5752276357a4/matplotlib-3.10.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6c7818292a5cc372a2dc4c795e5c356942eb8350b98ef913f7fda51fe175ac5d", size = 9413699, upload-time = "2025-05-08T19:10:42.376Z" }, + { url = "https://files.pythonhosted.org/packages/1b/92/9a45c91089c3cf690b5badd4be81e392ff086ccca8a1d4e3a08463d8a966/matplotlib-3.10.3-cp313-cp313t-win_amd64.whl", hash = "sha256:4f23ffe95c5667ef8a2b56eea9b53db7f43910fa4a2d5472ae0f72b64deab4d5", size = 8139044, upload-time = "2025-05-08T19:10:44.551Z" }, + { url = "https://files.pythonhosted.org/packages/3d/d1/f54d43e95384b312ffa4a74a4326c722f3b8187aaaa12e9a84cdf3037131/matplotlib-3.10.3-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:86ab63d66bbc83fdb6733471d3bff40897c1e9921cba112accd748eee4bce5e4", size = 8162896, upload-time = "2025-05-08T19:10:46.432Z" }, + { url = "https://files.pythonhosted.org/packages/24/a4/fbfc00c2346177c95b353dcf9b5a004106abe8730a62cb6f27e79df0a698/matplotlib-3.10.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:a48f9c08bf7444b5d2391a83e75edb464ccda3c380384b36532a0962593a1751", size = 8039702, upload-time = "2025-05-08T19:10:49.634Z" }, + { url = "https://files.pythonhosted.org/packages/6a/b9/59e120d24a2ec5fc2d30646adb2efb4621aab3c6d83d66fb2a7a182db032/matplotlib-3.10.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb73d8aa75a237457988f9765e4dfe1c0d2453c5ca4eabc897d4309672c8e014", size = 8594298, upload-time = "2025-05-08T19:10:51.738Z" }, +] + +[[package]] +name = "matplotlib-inline" +version = "0.1.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/99/5b/a36a337438a14116b16480db471ad061c36c3694df7c2084a0da7ba538b7/matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90", size = 8159, upload-time = "2024-04-15T13:44:44.803Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899, upload-time = "2024-04-15T13:44:43.265Z" }, +] + +[[package]] +name = "mpmath" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e0/47/dd32fa426cc72114383ac549964eecb20ecfd886d1e5ccf5340b55b02f57/mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f", size = 508106, upload-time = "2023-03-07T16:47:11.061Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c", size = 536198, upload-time = "2023-03-07T16:47:09.197Z" }, +] + +[[package]] +name = "msgpack" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/45/b1/ea4f68038a18c77c9467400d166d74c4ffa536f34761f7983a104357e614/msgpack-1.1.1.tar.gz", hash = "sha256:77b79ce34a2bdab2594f490c8e80dd62a02d650b91a75159a63ec413b8d104cd", size = 173555, upload-time = "2025-06-13T06:52:51.324Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/33/52/f30da112c1dc92cf64f57d08a273ac771e7b29dea10b4b30369b2d7e8546/msgpack-1.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:353b6fc0c36fde68b661a12949d7d49f8f51ff5fa019c1e47c87c4ff34b080ed", size = 81799, upload-time = "2025-06-13T06:51:37.228Z" }, + { url = "https://files.pythonhosted.org/packages/e4/35/7bfc0def2f04ab4145f7f108e3563f9b4abae4ab0ed78a61f350518cc4d2/msgpack-1.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:79c408fcf76a958491b4e3b103d1c417044544b68e96d06432a189b43d1215c8", size = 78278, upload-time = "2025-06-13T06:51:38.534Z" }, + { url = "https://files.pythonhosted.org/packages/e8/c5/df5d6c1c39856bc55f800bf82778fd4c11370667f9b9e9d51b2f5da88f20/msgpack-1.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78426096939c2c7482bf31ef15ca219a9e24460289c00dd0b94411040bb73ad2", size = 402805, upload-time = "2025-06-13T06:51:39.538Z" }, + { url = "https://files.pythonhosted.org/packages/20/8e/0bb8c977efecfe6ea7116e2ed73a78a8d32a947f94d272586cf02a9757db/msgpack-1.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b17ba27727a36cb73aabacaa44b13090feb88a01d012c0f4be70c00f75048b4", size = 408642, upload-time = "2025-06-13T06:51:41.092Z" }, + { url = "https://files.pythonhosted.org/packages/59/a1/731d52c1aeec52006be6d1f8027c49fdc2cfc3ab7cbe7c28335b2910d7b6/msgpack-1.1.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7a17ac1ea6ec3c7687d70201cfda3b1e8061466f28f686c24f627cae4ea8efd0", size = 395143, upload-time = "2025-06-13T06:51:42.575Z" }, + { url = "https://files.pythonhosted.org/packages/2b/92/b42911c52cda2ba67a6418ffa7d08969edf2e760b09015593c8a8a27a97d/msgpack-1.1.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:88d1e966c9235c1d4e2afac21ca83933ba59537e2e2727a999bf3f515ca2af26", size = 395986, upload-time = "2025-06-13T06:51:43.807Z" }, + { url = "https://files.pythonhosted.org/packages/61/dc/8ae165337e70118d4dab651b8b562dd5066dd1e6dd57b038f32ebc3e2f07/msgpack-1.1.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:f6d58656842e1b2ddbe07f43f56b10a60f2ba5826164910968f5933e5178af75", size = 402682, upload-time = "2025-06-13T06:51:45.534Z" }, + { url = "https://files.pythonhosted.org/packages/58/27/555851cb98dcbd6ce041df1eacb25ac30646575e9cd125681aa2f4b1b6f1/msgpack-1.1.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:96decdfc4adcbc087f5ea7ebdcfd3dee9a13358cae6e81d54be962efc38f6338", size = 406368, upload-time = "2025-06-13T06:51:46.97Z" }, + { url = "https://files.pythonhosted.org/packages/d4/64/39a26add4ce16f24e99eabb9005e44c663db00e3fce17d4ae1ae9d61df99/msgpack-1.1.1-cp310-cp310-win32.whl", hash = "sha256:6640fd979ca9a212e4bcdf6eb74051ade2c690b862b679bfcb60ae46e6dc4bfd", size = 65004, upload-time = "2025-06-13T06:51:48.582Z" }, + { url = "https://files.pythonhosted.org/packages/7d/18/73dfa3e9d5d7450d39debde5b0d848139f7de23bd637a4506e36c9800fd6/msgpack-1.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:8b65b53204fe1bd037c40c4148d00ef918eb2108d24c9aaa20bc31f9810ce0a8", size = 71548, upload-time = "2025-06-13T06:51:49.558Z" }, + { url = "https://files.pythonhosted.org/packages/7f/83/97f24bf9848af23fe2ba04380388216defc49a8af6da0c28cc636d722502/msgpack-1.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:71ef05c1726884e44f8b1d1773604ab5d4d17729d8491403a705e649116c9558", size = 82728, upload-time = "2025-06-13T06:51:50.68Z" }, + { url = "https://files.pythonhosted.org/packages/aa/7f/2eaa388267a78401f6e182662b08a588ef4f3de6f0eab1ec09736a7aaa2b/msgpack-1.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:36043272c6aede309d29d56851f8841ba907a1a3d04435e43e8a19928e243c1d", size = 79279, upload-time = "2025-06-13T06:51:51.72Z" }, + { url = "https://files.pythonhosted.org/packages/f8/46/31eb60f4452c96161e4dfd26dbca562b4ec68c72e4ad07d9566d7ea35e8a/msgpack-1.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a32747b1b39c3ac27d0670122b57e6e57f28eefb725e0b625618d1b59bf9d1e0", size = 423859, upload-time = "2025-06-13T06:51:52.749Z" }, + { url = "https://files.pythonhosted.org/packages/45/16/a20fa8c32825cc7ae8457fab45670c7a8996d7746ce80ce41cc51e3b2bd7/msgpack-1.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a8b10fdb84a43e50d38057b06901ec9da52baac6983d3f709d8507f3889d43f", size = 429975, upload-time = "2025-06-13T06:51:53.97Z" }, + { url = "https://files.pythonhosted.org/packages/86/ea/6c958e07692367feeb1a1594d35e22b62f7f476f3c568b002a5ea09d443d/msgpack-1.1.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba0c325c3f485dc54ec298d8b024e134acf07c10d494ffa24373bea729acf704", size = 413528, upload-time = "2025-06-13T06:51:55.507Z" }, + { url = "https://files.pythonhosted.org/packages/75/05/ac84063c5dae79722bda9f68b878dc31fc3059adb8633c79f1e82c2cd946/msgpack-1.1.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:88daaf7d146e48ec71212ce21109b66e06a98e5e44dca47d853cbfe171d6c8d2", size = 413338, upload-time = "2025-06-13T06:51:57.023Z" }, + { url = "https://files.pythonhosted.org/packages/69/e8/fe86b082c781d3e1c09ca0f4dacd457ede60a13119b6ce939efe2ea77b76/msgpack-1.1.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d8b55ea20dc59b181d3f47103f113e6f28a5e1c89fd5b67b9140edb442ab67f2", size = 422658, upload-time = "2025-06-13T06:51:58.419Z" }, + { url = "https://files.pythonhosted.org/packages/3b/2b/bafc9924df52d8f3bb7c00d24e57be477f4d0f967c0a31ef5e2225e035c7/msgpack-1.1.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4a28e8072ae9779f20427af07f53bbb8b4aa81151054e882aee333b158da8752", size = 427124, upload-time = "2025-06-13T06:51:59.969Z" }, + { url = "https://files.pythonhosted.org/packages/a2/3b/1f717e17e53e0ed0b68fa59e9188f3f610c79d7151f0e52ff3cd8eb6b2dc/msgpack-1.1.1-cp311-cp311-win32.whl", hash = "sha256:7da8831f9a0fdb526621ba09a281fadc58ea12701bc709e7b8cbc362feabc295", size = 65016, upload-time = "2025-06-13T06:52:01.294Z" }, + { url = "https://files.pythonhosted.org/packages/48/45/9d1780768d3b249accecc5a38c725eb1e203d44a191f7b7ff1941f7df60c/msgpack-1.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:5fd1b58e1431008a57247d6e7cc4faa41c3607e8e7d4aaf81f7c29ea013cb458", size = 72267, upload-time = "2025-06-13T06:52:02.568Z" }, + { url = "https://files.pythonhosted.org/packages/e3/26/389b9c593eda2b8551b2e7126ad3a06af6f9b44274eb3a4f054d48ff7e47/msgpack-1.1.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ae497b11f4c21558d95de9f64fff7053544f4d1a17731c866143ed6bb4591238", size = 82359, upload-time = "2025-06-13T06:52:03.909Z" }, + { url = "https://files.pythonhosted.org/packages/ab/65/7d1de38c8a22cf8b1551469159d4b6cf49be2126adc2482de50976084d78/msgpack-1.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:33be9ab121df9b6b461ff91baac6f2731f83d9b27ed948c5b9d1978ae28bf157", size = 79172, upload-time = "2025-06-13T06:52:05.246Z" }, + { url = "https://files.pythonhosted.org/packages/0f/bd/cacf208b64d9577a62c74b677e1ada005caa9b69a05a599889d6fc2ab20a/msgpack-1.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f64ae8fe7ffba251fecb8408540c34ee9df1c26674c50c4544d72dbf792e5ce", size = 425013, upload-time = "2025-06-13T06:52:06.341Z" }, + { url = "https://files.pythonhosted.org/packages/4d/ec/fd869e2567cc9c01278a736cfd1697941ba0d4b81a43e0aa2e8d71dab208/msgpack-1.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a494554874691720ba5891c9b0b39474ba43ffb1aaf32a5dac874effb1619e1a", size = 426905, upload-time = "2025-06-13T06:52:07.501Z" }, + { url = "https://files.pythonhosted.org/packages/55/2a/35860f33229075bce803a5593d046d8b489d7ba2fc85701e714fc1aaf898/msgpack-1.1.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cb643284ab0ed26f6957d969fe0dd8bb17beb567beb8998140b5e38a90974f6c", size = 407336, upload-time = "2025-06-13T06:52:09.047Z" }, + { url = "https://files.pythonhosted.org/packages/8c/16/69ed8f3ada150bf92745fb4921bd621fd2cdf5a42e25eb50bcc57a5328f0/msgpack-1.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d275a9e3c81b1093c060c3837e580c37f47c51eca031f7b5fb76f7b8470f5f9b", size = 409485, upload-time = "2025-06-13T06:52:10.382Z" }, + { url = "https://files.pythonhosted.org/packages/c6/b6/0c398039e4c6d0b2e37c61d7e0e9d13439f91f780686deb8ee64ecf1ae71/msgpack-1.1.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4fd6b577e4541676e0cc9ddc1709d25014d3ad9a66caa19962c4f5de30fc09ef", size = 412182, upload-time = "2025-06-13T06:52:11.644Z" }, + { url = "https://files.pythonhosted.org/packages/b8/d0/0cf4a6ecb9bc960d624c93effaeaae75cbf00b3bc4a54f35c8507273cda1/msgpack-1.1.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bb29aaa613c0a1c40d1af111abf025f1732cab333f96f285d6a93b934738a68a", size = 419883, upload-time = "2025-06-13T06:52:12.806Z" }, + { url = "https://files.pythonhosted.org/packages/62/83/9697c211720fa71a2dfb632cad6196a8af3abea56eece220fde4674dc44b/msgpack-1.1.1-cp312-cp312-win32.whl", hash = "sha256:870b9a626280c86cff9c576ec0d9cbcc54a1e5ebda9cd26dab12baf41fee218c", size = 65406, upload-time = "2025-06-13T06:52:14.271Z" }, + { url = "https://files.pythonhosted.org/packages/c0/23/0abb886e80eab08f5e8c485d6f13924028602829f63b8f5fa25a06636628/msgpack-1.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:5692095123007180dca3e788bb4c399cc26626da51629a31d40207cb262e67f4", size = 72558, upload-time = "2025-06-13T06:52:15.252Z" }, + { url = "https://files.pythonhosted.org/packages/a1/38/561f01cf3577430b59b340b51329803d3a5bf6a45864a55f4ef308ac11e3/msgpack-1.1.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:3765afa6bd4832fc11c3749be4ba4b69a0e8d7b728f78e68120a157a4c5d41f0", size = 81677, upload-time = "2025-06-13T06:52:16.64Z" }, + { url = "https://files.pythonhosted.org/packages/09/48/54a89579ea36b6ae0ee001cba8c61f776451fad3c9306cd80f5b5c55be87/msgpack-1.1.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:8ddb2bcfd1a8b9e431c8d6f4f7db0773084e107730ecf3472f1dfe9ad583f3d9", size = 78603, upload-time = "2025-06-13T06:52:17.843Z" }, + { url = "https://files.pythonhosted.org/packages/a0/60/daba2699b308e95ae792cdc2ef092a38eb5ee422f9d2fbd4101526d8a210/msgpack-1.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:196a736f0526a03653d829d7d4c5500a97eea3648aebfd4b6743875f28aa2af8", size = 420504, upload-time = "2025-06-13T06:52:18.982Z" }, + { url = "https://files.pythonhosted.org/packages/20/22/2ebae7ae43cd8f2debc35c631172ddf14e2a87ffcc04cf43ff9df9fff0d3/msgpack-1.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d592d06e3cc2f537ceeeb23d38799c6ad83255289bb84c2e5792e5a8dea268a", size = 423749, upload-time = "2025-06-13T06:52:20.211Z" }, + { url = "https://files.pythonhosted.org/packages/40/1b/54c08dd5452427e1179a40b4b607e37e2664bca1c790c60c442c8e972e47/msgpack-1.1.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4df2311b0ce24f06ba253fda361f938dfecd7b961576f9be3f3fbd60e87130ac", size = 404458, upload-time = "2025-06-13T06:52:21.429Z" }, + { url = "https://files.pythonhosted.org/packages/2e/60/6bb17e9ffb080616a51f09928fdd5cac1353c9becc6c4a8abd4e57269a16/msgpack-1.1.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e4141c5a32b5e37905b5940aacbc59739f036930367d7acce7a64e4dec1f5e0b", size = 405976, upload-time = "2025-06-13T06:52:22.995Z" }, + { url = "https://files.pythonhosted.org/packages/ee/97/88983e266572e8707c1f4b99c8fd04f9eb97b43f2db40e3172d87d8642db/msgpack-1.1.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b1ce7f41670c5a69e1389420436f41385b1aa2504c3b0c30620764b15dded2e7", size = 408607, upload-time = "2025-06-13T06:52:24.152Z" }, + { url = "https://files.pythonhosted.org/packages/bc/66/36c78af2efaffcc15a5a61ae0df53a1d025f2680122e2a9eb8442fed3ae4/msgpack-1.1.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4147151acabb9caed4e474c3344181e91ff7a388b888f1e19ea04f7e73dc7ad5", size = 424172, upload-time = "2025-06-13T06:52:25.704Z" }, + { url = "https://files.pythonhosted.org/packages/8c/87/a75eb622b555708fe0427fab96056d39d4c9892b0c784b3a721088c7ee37/msgpack-1.1.1-cp313-cp313-win32.whl", hash = "sha256:500e85823a27d6d9bba1d057c871b4210c1dd6fb01fbb764e37e4e8847376323", size = 65347, upload-time = "2025-06-13T06:52:26.846Z" }, + { url = "https://files.pythonhosted.org/packages/ca/91/7dc28d5e2a11a5ad804cf2b7f7a5fcb1eb5a4966d66a5d2b41aee6376543/msgpack-1.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:6d489fba546295983abd142812bda76b57e33d0b9f5d5b71c09a583285506f69", size = 72341, upload-time = "2025-06-13T06:52:27.835Z" }, + { url = "https://files.pythonhosted.org/packages/1f/bd/0792be119d7fe7dc2148689ef65c90507d82d20a204aab3b98c74a1f8684/msgpack-1.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f5be6b6bc52fad84d010cb45433720327ce886009d862f46b26d4d154001994b", size = 81882, upload-time = "2025-06-13T06:52:39.316Z" }, + { url = "https://files.pythonhosted.org/packages/75/77/ce06c8e26a816ae8730a8e030d263c5289adcaff9f0476f9b270bdd7c5c2/msgpack-1.1.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3a89cd8c087ea67e64844287ea52888239cbd2940884eafd2dcd25754fb72232", size = 78414, upload-time = "2025-06-13T06:52:40.341Z" }, + { url = "https://files.pythonhosted.org/packages/73/27/190576c497677fb4a0d05d896b24aea6cdccd910f206aaa7b511901befed/msgpack-1.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d75f3807a9900a7d575d8d6674a3a47e9f227e8716256f35bc6f03fc597ffbf", size = 400927, upload-time = "2025-06-13T06:52:41.399Z" }, + { url = "https://files.pythonhosted.org/packages/ed/af/6a0aa5a06762e70726ec3c10fb966600d84a7220b52635cb0ab2dc64d32f/msgpack-1.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d182dac0221eb8faef2e6f44701812b467c02674a322c739355c39e94730cdbf", size = 405903, upload-time = "2025-06-13T06:52:42.699Z" }, + { url = "https://files.pythonhosted.org/packages/1e/80/3f3da358cecbbe8eb12360814bd1277d59d2608485934742a074d99894a9/msgpack-1.1.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1b13fe0fb4aac1aa5320cd693b297fe6fdef0e7bea5518cbc2dd5299f873ae90", size = 393192, upload-time = "2025-06-13T06:52:43.986Z" }, + { url = "https://files.pythonhosted.org/packages/98/c6/3a0ec7fdebbb4f3f8f254696cd91d491c29c501dbebd86286c17e8f68cd7/msgpack-1.1.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:435807eeb1bc791ceb3247d13c79868deb22184e1fc4224808750f0d7d1affc1", size = 393851, upload-time = "2025-06-13T06:52:45.177Z" }, + { url = "https://files.pythonhosted.org/packages/39/37/df50d5f8e68514b60fbe70f6e8337ea2b32ae2be030871bcd9d1cf7d4b62/msgpack-1.1.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:4835d17af722609a45e16037bb1d4d78b7bdf19d6c0128116d178956618c4e88", size = 400292, upload-time = "2025-06-13T06:52:46.381Z" }, + { url = "https://files.pythonhosted.org/packages/fc/ec/1e067292e02d2ceb4c8cb5ba222c4f7bb28730eef5676740609dc2627e0f/msgpack-1.1.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a8ef6e342c137888ebbfb233e02b8fbd689bb5b5fcc59b34711ac47ebd504478", size = 401873, upload-time = "2025-06-13T06:52:47.957Z" }, + { url = "https://files.pythonhosted.org/packages/d3/31/e8c9c6b5b58d64c9efa99c8d181fcc25f38ead357b0360379fbc8a4234ad/msgpack-1.1.1-cp39-cp39-win32.whl", hash = "sha256:61abccf9de335d9efd149e2fff97ed5974f2481b3353772e8e2dd3402ba2bd57", size = 65028, upload-time = "2025-06-13T06:52:49.166Z" }, + { url = "https://files.pythonhosted.org/packages/20/d6/cd62cded572e5e25892747a5d27850170bcd03c855e9c69c538e024de6f9/msgpack-1.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:40eae974c873b2992fd36424a5d9407f93e97656d999f43fca9d29f820899084", size = 71700, upload-time = "2025-06-13T06:52:50.244Z" }, +] + +[[package]] +name = "ndindex" +version = "1.10.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/dc/a0/f584c0b6b998e4981201a1383200663a725f556f439cf58d02a093cb9f91/ndindex-1.10.0.tar.gz", hash = "sha256:20e3a2f0a8ed4646abf0f13296aab0b5b9cc8c5bc182b71b5945e76eb6f558bb", size = 258688, upload-time = "2025-05-21T17:42:22.718Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/61/de/45af0f9b0abe5795228ca79577541c1c79b664996a5c9d15df21789e2ced/ndindex-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3d96dc319c39dce679d85a997f4eeb439f6de73c0793956b66598954ca61365c", size = 162311, upload-time = "2025-05-21T17:40:36.873Z" }, + { url = "https://files.pythonhosted.org/packages/d9/dd/d950718536c3898580c3f903888209d75057659b862b3d8d8af17bdb4fa8/ndindex-1.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b082de3c042b6da7ca327f17d088de3695333c30e0f9717d2ed5de5dc4d70802", size = 161621, upload-time = "2025-05-21T17:40:38.792Z" }, + { url = "https://files.pythonhosted.org/packages/bd/00/462ef86c63590e1f2e56d31ce46e9f13ae6aebd7506d33c08b927d2f1594/ndindex-1.10.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:69cf517d138f47163d6c94cd9ccaafb91606a2aab386c05aaa0718975da09c88", size = 482241, upload-time = "2025-05-21T17:40:40.671Z" }, + { url = "https://files.pythonhosted.org/packages/e3/a6/975bfec7bec7f274853b0c33953b5f2df4ad51f62d1aab0c7142fee98261/ndindex-1.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9cea2a5f7a432dafadb6c5732a9af3e7139adbf9085320f284885fe5d4776e4", size = 501603, upload-time = "2025-05-21T17:40:42.394Z" }, + { url = "https://files.pythonhosted.org/packages/13/4a/8d39f8ab1d20cd246360d7af707107bc4a332c6758ea45780a5bff6ec29f/ndindex-1.10.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:a3d2ea706c80e21022f6661524efb0aeed89a714a8fda4712df8d4a90ef507f5", size = 1620040, upload-time = "2025-05-21T17:40:44.638Z" }, + { url = "https://files.pythonhosted.org/packages/87/83/ba24c57073c29ba3f69c52767bec64dc818e90ac23f6ee43c98172b9f888/ndindex-1.10.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d5b3b8f99970ce40fbff1e55ad9ddf9ea708e82ace91271784e7ff1d08707c4c", size = 1529863, upload-time = "2025-05-21T17:40:46.886Z" }, + { url = "https://files.pythonhosted.org/packages/cd/2c/61e88acae938898994a6cfe83716db0e440f44f7b0c821a7adb2ab4cedbd/ndindex-1.10.0-cp310-cp310-win32.whl", hash = "sha256:6a5a401b867530fe4f1022cc8d578c8092cfdc726348e6d1569ec91881da365f", size = 149122, upload-time = "2025-05-21T17:40:48.921Z" }, + { url = "https://files.pythonhosted.org/packages/a9/61/2bc88b2b5f71649f9e07fcf3509ce8eb187adbb3e787e4600b28ce00139c/ndindex-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:88504651ddcb6733ba0caf0cdfc214d8ba9f140609b69f6566ad143322ce5a96", size = 156550, upload-time = "2025-05-21T17:40:50.819Z" }, + { url = "https://files.pythonhosted.org/packages/b4/1c/a53253d68bb269e5591c39b96ae2c4dd671132a82f63d70aea486f76d70c/ndindex-1.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2e42198c8636eaf468cf28b7e1700738de37841853f5f15a0671bad4c3876a85", size = 162556, upload-time = "2025-05-21T17:40:52.668Z" }, + { url = "https://files.pythonhosted.org/packages/0d/2a/4e268ff5992d4b42755ee19cf46c3e954632aadd57810db7173fe945ad47/ndindex-1.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ec9865e787eababc9aa1be973bf8545c044e2b68297fe37adf7aeefe0ec61f59", size = 161769, upload-time = "2025-05-21T17:40:54.55Z" }, + { url = "https://files.pythonhosted.org/packages/14/67/28ef988483e1ff446873150979b20fa87833c711fbe3a816e0e6a3e6e7d3/ndindex-1.10.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:72377bc5d15229eeefa73a4370212d0bdb8992c76c2228df0771e0dcdeb5354a", size = 504542, upload-time = "2025-05-21T17:40:56.771Z" }, + { url = "https://files.pythonhosted.org/packages/79/d8/a4638485d17e5a236a7f8687a63229b4cc4737d018d8f8bdf18983419d5b/ndindex-1.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a8c9f85a1d6497a1fc3a8ac7faf64eef600f95d4330566ae7468e59b6da28d7", size = 528179, upload-time = "2025-05-21T17:40:58.859Z" }, + { url = "https://files.pythonhosted.org/packages/40/2a/a7c119db8332b85fa6886104ac388a771dd2b0ec35e4b2443d555c5e0e00/ndindex-1.10.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:560211699c4fa370c30edace212b4b61950934c3c9a7b3964f52f2dd09c6913a", size = 1642463, upload-time = "2025-05-21T17:41:01.234Z" }, + { url = "https://files.pythonhosted.org/packages/14/9a/41dd8270e9b0a411221c1c584fb088f0d43d750d596cf02e1f8b528c426d/ndindex-1.10.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:68e4ed3b5816d22cddf71478197c62ea2453a8f7dea0da57b52ce8b537c7a0c3", size = 1553373, upload-time = "2025-05-21T17:41:03.474Z" }, + { url = "https://files.pythonhosted.org/packages/6e/36/4d42edfc5f350b83801a473721927c4c01c210014bb2ea1a754e232871d3/ndindex-1.10.0-cp311-cp311-win32.whl", hash = "sha256:52adf006f99f21913300d93d8b08fdd9d12796ee2dc7a1737acd1beea5f7e7af", size = 148975, upload-time = "2025-05-21T17:41:05.65Z" }, + { url = "https://files.pythonhosted.org/packages/e9/b3/ec2b3447e49d69f033edb003761d3e2e01f2e5fe8ab397140099920405aa/ndindex-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:b90559638d35dd3c7f3f46dced6a306935866f86ba5cbd35190ef954334c33b9", size = 156723, upload-time = "2025-05-21T17:41:07.952Z" }, + { url = "https://files.pythonhosted.org/packages/e5/cb/c44335f5aa81d54d2c06ea0076cc394a9d247ad8bf7dd63c87dec10d2e1f/ndindex-1.10.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:50f9c49659d91b19964da9ee96d5cb18f5102dc1b31ea5ca085f0b4d905cdc60", size = 162959, upload-time = "2025-05-21T17:41:09.96Z" }, + { url = "https://files.pythonhosted.org/packages/42/f5/2bff167479b589a21288f8f150ca2dbbb5d20e3eb264515eafc5ff1c58f8/ndindex-1.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3e58c340b829275d2a2ac8fc468fca6dd1ca78a7351824dabf4a52cf0a79f648", size = 161618, upload-time = "2025-05-21T17:41:12.3Z" }, + { url = "https://files.pythonhosted.org/packages/69/ed/1e921acc45f18b6ade332af772496b5a3681856c13b3a0bc3f5a46630b4e/ndindex-1.10.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dd170addae6e4322438cc9ac1ae0cbf0d8f7bea25716fdbef53c4964ee84a64a", size = 521535, upload-time = "2025-05-21T17:41:13.863Z" }, + { url = "https://files.pythonhosted.org/packages/ec/4a/0b6a4c8c06803efe531fc57d008294bd12a95b94c9ca4922f87cee2c3829/ndindex-1.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b33b378d1ec4d2e041d7d14a2d6d05f74a6ef0f9273985930ad0b993d86e8064", size = 546226, upload-time = "2025-05-21T17:41:15.514Z" }, + { url = "https://files.pythonhosted.org/packages/4e/94/f8fb6e28660428bb359ffaf088409228fb9033db76ca6363fcf60d31ec13/ndindex-1.10.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c1eb9aa7ad4dd561dfb94b8c069677c59032f7c663e53ab05f97aa20c1643d1b", size = 1660328, upload-time = "2025-05-21T17:41:17.347Z" }, + { url = "https://files.pythonhosted.org/packages/df/8e/a70ba950fff63d0a3a7142a53ff160cb03076a95964adb057be75a9c9be5/ndindex-1.10.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d490499a09e9cb78d02801d39d7da21e4975f09c78d0e1095a881adf20d0d4e7", size = 1576545, upload-time = "2025-05-21T17:41:19.55Z" }, + { url = "https://files.pythonhosted.org/packages/d4/17/2a415224e7e35c7e36ffa1f58ef515f7653b118f0098c0f76f3e765b2826/ndindex-1.10.0-cp312-cp312-win32.whl", hash = "sha256:2c65d448210f8e3763e12d9a138195de77b383164d819080eaf64e832c2933bc", size = 149056, upload-time = "2025-05-21T17:41:21.141Z" }, + { url = "https://files.pythonhosted.org/packages/37/e7/4f955c90e86c025ef04234adfa34ee5053f3dfc835b7d632e7c38ab713fc/ndindex-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:d8a9bfac1ce127bf55ad73b62ec57a415d5489db7a76056905a449f8346b69a3", size = 157017, upload-time = "2025-05-21T17:41:22.977Z" }, + { url = "https://files.pythonhosted.org/packages/03/ee/8f7aa7dde0f2d947c2e4034f4c58b308bf1f48a18780183e7f84298a573c/ndindex-1.10.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:50b579a0c57a4072fc97848f1d0db8cb228ca73d050c8bc9d4e7cf2e75510829", size = 161193, upload-time = "2025-05-21T17:41:24.452Z" }, + { url = "https://files.pythonhosted.org/packages/9b/3b/9f2a49b5d3a558e9cd067e0911e1bb8d8d553e1d689bb9a9119c775636b9/ndindex-1.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0956611e29f51857a54ba0750568ebdbf0eacfad4a262253af2522e77b476369", size = 159952, upload-time = "2025-05-21T17:41:25.806Z" }, + { url = "https://files.pythonhosted.org/packages/76/b9/93273d8dd7a2e155af6ed0bad2f2618202794ffe537184b25ff666cf8e31/ndindex-1.10.0-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f82aada1f194c5ea11943ca89532cf449881de8c9c2c48b8baa43d467486fdb2", size = 502466, upload-time = "2025-05-21T17:41:27.342Z" }, + { url = "https://files.pythonhosted.org/packages/b5/07/c64b0c8416f604f6990da5d1fa97c9de1278a4eec1efcc63b71053b4f0c0/ndindex-1.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38a56a16edbd62ef039b93e393047e66238d02dbc1e95e95b79c0bdd0a4785f7", size = 526910, upload-time = "2025-05-21T17:41:29.071Z" }, + { url = "https://files.pythonhosted.org/packages/b3/a5/316f13eeda944db14015a6edaebd88fc83b196d86cae9f576be319b93873/ndindex-1.10.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:8b11a3b8fd983adafea988b2a7e51fe8c0be819639b16506a472429069158f6d", size = 1642168, upload-time = "2025-05-21T17:41:31.213Z" }, + { url = "https://files.pythonhosted.org/packages/f3/13/4c1cf1b6280669f32e9960215d6cbed027084b0bb423c924095f247f3185/ndindex-1.10.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:be7cfaed1e7a72c7e0bbc4a0e1965d3cc8207cb3d56bd351c0cb2b2d94db0bdd", size = 1557347, upload-time = "2025-05-21T17:41:32.893Z" }, + { url = "https://files.pythonhosted.org/packages/2d/ac/36124ca146aaa6e84ac479e06a81b5ae9ebde2e3b4b2c77c49492bcfebae/ndindex-1.10.0-cp313-cp313-win32.whl", hash = "sha256:f779a0c20ffd617535bf57c7437d5521d5453daf2e0db0d148301df6b24c0932", size = 148623, upload-time = "2025-05-21T17:41:34.628Z" }, + { url = "https://files.pythonhosted.org/packages/23/38/13169cc35be65a6683784c5a1f2c7e6d2219f58fb56abe9d13ef762a634a/ndindex-1.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:1ef8d71e0ddf0c6e39e64f1e328a37ebefcca1b89218a4068c353851bcb4cb0f", size = 156188, upload-time = "2025-05-21T17:41:36.043Z" }, + { url = "https://files.pythonhosted.org/packages/29/f6/ba98045516f39b0414d03c466e7c46b79290cd54a73ff961b9081bc66a6e/ndindex-1.10.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:6fcefeefc48815dd8e99999999477d91d4287d8034b1c81084042a49976b212c", size = 167198, upload-time = "2025-05-21T17:41:37.544Z" }, + { url = "https://files.pythonhosted.org/packages/ca/14/4c8b1256009cda78387e6e3035d4b86582d98b557e56f7ee8f58df3e57b4/ndindex-1.10.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:882367d3d5a4d20155c23d890bf01ffbac78019eee09a9456ff3322f62eb34c1", size = 167324, upload-time = "2025-05-21T17:41:39.004Z" }, + { url = "https://files.pythonhosted.org/packages/c5/34/a1e8117c0fe5a862da9e7f0162233340c7a9bbd728161a06cd0ad856514e/ndindex-1.10.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f04b3eeced5a10f1c00197ee93c913a691467c752306c0d97e6df9c02af4e6d", size = 608219, upload-time = "2025-05-21T17:41:40.556Z" }, + { url = "https://files.pythonhosted.org/packages/19/6c/f9b449d0d9db404637d026798a208b677c04c349ab740db33ab78065603d/ndindex-1.10.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:cb68232e58ca6cc92ddc8cdddcff8dcdfa5de030e89de8457e5d43de77bcc331", size = 1639541, upload-time = "2025-05-21T17:41:42.33Z" }, + { url = "https://files.pythonhosted.org/packages/2c/14/0bfe948a092ddba3c23f18a6f4e3fc2029adfc3e433e634410ba98b7700f/ndindex-1.10.0-cp313-cp313t-win32.whl", hash = "sha256:af8ecd5a0221482e9b467918b90e78f85241572102fdcf0a941ef087e7dcf2e4", size = 157843, upload-time = "2025-05-21T17:41:43.981Z" }, + { url = "https://files.pythonhosted.org/packages/50/49/0e7d831e918db3e8819f7327e835e4b106fe91ed0c865e96fb952f936b7f/ndindex-1.10.0-cp313-cp313t-win_amd64.whl", hash = "sha256:2fb32342379547032fd25dbf5bfc7003ebc1bde582779e9a171373a738d6fb8b", size = 166116, upload-time = "2025-05-21T17:41:45.506Z" }, + { url = "https://files.pythonhosted.org/packages/77/85/66a504a430e28cf0ed12a5092253814114dae2b842ec2894e5a81ee6df45/ndindex-1.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4542247a231a8a998636109d6241bc692b583de06afa3fc2b8fbbbd6424bb965", size = 163972, upload-time = "2025-05-21T17:41:47.653Z" }, + { url = "https://files.pythonhosted.org/packages/bb/59/ced90fe3e5d2a695310334162dec2f7bf00659a1d2c760e089cef1e58dbe/ndindex-1.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:442ee28aaaa471bcc845406d7f006715e685087217e1d58b516b8d58a8c778eb", size = 162983, upload-time = "2025-05-21T17:41:49.186Z" }, + { url = "https://files.pythonhosted.org/packages/2c/97/d7e08e27ac65a1869659985ec4e026f154d3b11e5298bdc97cdbec9b0aae/ndindex-1.10.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8f0274114cc986f017093d1f92e8c3c38cc4aaf7ed39facecdbb4bf636d1bc95", size = 489636, upload-time = "2025-05-21T17:41:50.766Z" }, + { url = "https://files.pythonhosted.org/packages/84/45/0beba49f64c9e06398c037b580467bf1001d186dc73de5aeafbad55e1ca7/ndindex-1.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:009dde7c7216ea784744ed1d4bc1606c39f6d1b192395377e95a657b59e524c7", size = 510063, upload-time = "2025-05-21T17:41:52.427Z" }, + { url = "https://files.pythonhosted.org/packages/d7/57/255a54840d0cac8f3e735e2ce2bba8bbe8dc33bf80b909d1cc39b9f97fce/ndindex-1.10.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:660cae3a9fae4fbdb12417fa4efe1f476c37793a5230a0fb28ea9cf38ad71658", size = 1628733, upload-time = "2025-05-21T17:41:54.197Z" }, + { url = "https://files.pythonhosted.org/packages/2d/27/da2fd1a1e2b670e3fab1ab217561b3bb6fe38b6b52f0edb56762f2a80f6f/ndindex-1.10.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:304de39ba6bbea3bf0b4069c6240c87e9697fe355128324bc74cb6e92813df58", size = 1538961, upload-time = "2025-05-21T17:41:56.326Z" }, + { url = "https://files.pythonhosted.org/packages/e7/18/eecb8a9df326b861fe021d1401026d7694f7d910c9f9baef4ae95448d3fe/ndindex-1.10.0-cp39-cp39-win32.whl", hash = "sha256:bf7aba235a994a0c488d9edfd00558a96eef3ae0f18c1504d9e50677ba82fbd5", size = 149916, upload-time = "2025-05-21T17:41:57.904Z" }, + { url = "https://files.pythonhosted.org/packages/89/de/83add3ed9a94c6e5f7401d2a3547a51ef9c89f69ff9b8fd8a8ece598886d/ndindex-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:041be825a10e4bd7368e481a7893a96e96680a9623860e58d65c843e7734cccc", size = 157607, upload-time = "2025-05-21T17:41:59.346Z" }, + { url = "https://files.pythonhosted.org/packages/b0/61/afde1bf918386625e477a7ac0fa518ca83f9239e2675affccf8d48d05e25/ndindex-1.10.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:1851d2d490413edc5c5734f5f74e8d3b59cfc23eae561d10bd4db6e4162dcf02", size = 146659, upload-time = "2025-05-21T17:42:00.855Z" }, + { url = "https://files.pythonhosted.org/packages/63/22/90a3e3aa613d4d7e5432e8d7cf0188049f61b34b104eef7f014b7e35a3aa/ndindex-1.10.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:490c577e6915f8d2d045239a14e70b1dfd14b703028a41f6a3713821598d0db8", size = 146160, upload-time = "2025-05-21T17:42:02.227Z" }, + { url = "https://files.pythonhosted.org/packages/80/a5/677dc41756ac9b2ac3bd0b458abda4dee0c74ee1c6560be3a1b36cc2c9d1/ndindex-1.10.0-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:21f4c61db28b7ba8dc03548a3b2c3561feb8d61f7293dfc310df52aa2676463f", size = 163067, upload-time = "2025-05-21T17:42:03.615Z" }, + { url = "https://files.pythonhosted.org/packages/01/8d/319499a3f9da41695a75243b8fd8576d42c1e382f5dc935b885f590a42be/ndindex-1.10.0-pp310-pypy310_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd41c7cce386bc21a38a2153427ce47f92d6bdb097dc3c5c42fa24e75090c8f", size = 160109, upload-time = "2025-05-21T17:42:05.137Z" }, + { url = "https://files.pythonhosted.org/packages/7c/66/a6721aac78028ee1dd35106a20a2f5c940f17587bc8c8fb9d98040eeddec/ndindex-1.10.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1ba5f6d09ad320e0045ea39d7efd66a21d73cd4875d114be08e7ba6204a8feb7", size = 148094, upload-time = "2025-05-21T17:42:06.563Z" }, + { url = "https://files.pythonhosted.org/packages/c3/61/1333424bdfcebdcea63f5ed86ac98dccaf07ebb7e1463ca845a06e321d91/ndindex-1.10.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:aa17ea725f85af9285b298f72ccc8012949c0916d4426b0215d1c556dd995246", size = 146929, upload-time = "2025-05-21T17:42:08.04Z" }, + { url = "https://files.pythonhosted.org/packages/eb/7c/0813615d958ec78c521b9c09518b1f49ec553a0bec0646b5f4ebbf33bdcb/ndindex-1.10.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:219fdef9d6a557913fd92418275088b46c727944356f3fe59f4f72d62efd6f3d", size = 146417, upload-time = "2025-05-21T17:42:09.534Z" }, + { url = "https://files.pythonhosted.org/packages/d8/a1/b340a47409253f05c78d400f98b43477549ad1a1f7a5358acb784c79ed48/ndindex-1.10.0-pp311-pypy311_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f1962137fcb69c00e2db42d5d045f9b7413fc37f44b143e7ae4a8c2c68ba3832", size = 163867, upload-time = "2025-05-21T17:42:10.994Z" }, + { url = "https://files.pythonhosted.org/packages/02/24/e5192ffb87070e9ff2328d715e5aa3a7f6b673e86c1ee8f48136815564e1/ndindex-1.10.0-pp311-pypy311_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18c9c8271926fb16c59e827b61bb77f45ee31a824eaa50b386edcd77a6a7c9a3", size = 160644, upload-time = "2025-05-21T17:42:12.415Z" }, + { url = "https://files.pythonhosted.org/packages/09/c5/b894cc961460e608b869d91164e9f825e3bb0579defb37c0eea61dce584e/ndindex-1.10.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:76e4fb082c83ccbc67c7a64b80e33bc5dfe9379f30c3b40a865914ae79947071", size = 147721, upload-time = "2025-05-21T17:42:13.825Z" }, + { url = "https://files.pythonhosted.org/packages/09/90/0a8e43e9ade1ff08dfe60ffe8bbc7751dbb6d19ffb45717b126445aa4ac7/ndindex-1.10.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:074be9fc105e87f0eab6b464e78ecea6ffbb78d8bee07c5bbc2476f7900796ce", size = 146460, upload-time = "2025-05-21T17:42:15.269Z" }, + { url = "https://files.pythonhosted.org/packages/70/ce/8796f89989ad6fc3603991bb20e55f28a9279ea905a9d63c127a0440df7c/ndindex-1.10.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:058002945c1e956761d9a9ae620a1ae1c01b613fc9808d09e6f65efd977e169d", size = 145977, upload-time = "2025-05-21T17:42:16.771Z" }, + { url = "https://files.pythonhosted.org/packages/19/5a/67d0e21d21ccf19d396cb84dbf65b089f7076406400281e0b0bfc269602a/ndindex-1.10.0-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:004cfdde6106891e63f1a22e5d53d2884c277fd749839c6869e0bfffe5be2ed0", size = 162824, upload-time = "2025-05-21T17:42:18.214Z" }, + { url = "https://files.pythonhosted.org/packages/bc/ac/72dbdbedce254317e83bcaec269f166450cf10cf5130296c0a7ca65a1bb9/ndindex-1.10.0-pp39-pypy39_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0a9bbd54500cebe3d481611acd420a46099ce65181b81e8347e11a6bac68445", size = 159876, upload-time = "2025-05-21T17:42:19.706Z" }, + { url = "https://files.pythonhosted.org/packages/d4/84/5d74108950086ea209672dff368c42bd47e9d2d4890438e763a906a4a401/ndindex-1.10.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:367a2af7fbb84395a9d66f92dd0c4287b86e7b2c60cb96505c13ff36571bc9af", size = 147961, upload-time = "2025-05-21T17:42:21.2Z" }, +] + +[[package]] +name = "nest-asyncio" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/83/f8/51569ac65d696c8ecbee95938f89d4abf00f47d58d48f6fbabfe8f0baefe/nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe", size = 7418, upload-time = "2024-01-21T14:25:19.227Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195, upload-time = "2024-01-21T14:25:17.223Z" }, +] + +[[package]] +name = "networkx" +version = "3.2.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", + "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +sdist = { url = "https://files.pythonhosted.org/packages/c4/80/a84676339aaae2f1cfdf9f418701dd634aef9cc76f708ef55c36ff39c3ca/networkx-3.2.1.tar.gz", hash = "sha256:9f1bb5cf3409bf324e0a722c20bdb4c20ee39bf1c30ce8ae499c8502b0b5e0c6", size = 2073928, upload-time = "2023-10-28T08:41:39.364Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d5/f0/8fbc882ca80cf077f1b246c0e3c3465f7f415439bdea6b899f6b19f61f70/networkx-3.2.1-py3-none-any.whl", hash = "sha256:f18c69adc97877c42332c170849c96cefa91881c99a7cb3e95b7c659ebdc1ec2", size = 1647772, upload-time = "2023-10-28T08:41:36.945Z" }, +] + +[[package]] +name = "networkx" +version = "3.4.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +sdist = { url = "https://files.pythonhosted.org/packages/fd/1d/06475e1cd5264c0b870ea2cc6fdb3e37177c1e565c43f56ff17a10e3937f/networkx-3.4.2.tar.gz", hash = "sha256:307c3669428c5362aab27c8a1260aa8f47c4e91d3891f48be0141738d8d053e1", size = 2151368, upload-time = "2024-10-21T12:39:38.695Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl", hash = "sha256:df5d4365b724cf81b8c6a7312509d0c22386097011ad1abe274afd5e9d3bbc5f", size = 1723263, upload-time = "2024-10-21T12:39:36.247Z" }, +] + +[[package]] +name = "networkx" +version = "3.5" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +sdist = { url = "https://files.pythonhosted.org/packages/6c/4f/ccdb8ad3a38e583f214547fd2f7ff1fc160c43a75af88e6aec213404b96a/networkx-3.5.tar.gz", hash = "sha256:d4c6f9cf81f52d69230866796b82afbccdec3db7ae4fbd1b65ea750feed50037", size = 2471065, upload-time = "2025-05-29T11:35:07.804Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl", hash = "sha256:0030d386a9a06dee3565298b4a734b68589749a544acbb6c412dc9e2489ec6ec", size = 2034406, upload-time = "2025-05-29T11:35:04.961Z" }, +] + +[[package]] +name = "numexpr" +version = "2.10.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", + "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/21/67/c7415cf04ebe418193cfd6595ae03e3a64d76dac7b9c010098b39cc7992e/numexpr-2.10.2.tar.gz", hash = "sha256:b0aff6b48ebc99d2f54f27b5f73a58cb92fde650aeff1b397c71c8788b4fff1a", size = 106787, upload-time = "2024-11-23T13:34:23.127Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/dc/bd84219318826d138b7e729ac3ffce3c706ab9d810ce74326a55c7252dd1/numexpr-2.10.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b5b0e82d2109c1d9e63fcd5ea177d80a11b881157ab61178ddbdebd4c561ea46", size = 145011, upload-time = "2024-11-23T13:33:24.846Z" }, + { url = "https://files.pythonhosted.org/packages/31/6a/b1f08141283327478a57490c0ab3f26a634d4741ff33b9e22f760a7cedb0/numexpr-2.10.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3fc2b8035a0c2cdc352e58c3875cb668836018065cbf5752cb531015d9a568d8", size = 134777, upload-time = "2024-11-23T13:33:26.693Z" }, + { url = "https://files.pythonhosted.org/packages/7c/d6/6641864b0446ce472330de7644c78f90bd7e55d902046b44161f92721279/numexpr-2.10.2-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0db5ff5183935d1612653559c319922143e8fa3019007696571b13135f216458", size = 408893, upload-time = "2024-11-23T13:33:28.44Z" }, + { url = "https://files.pythonhosted.org/packages/25/ab/cb5809cb1f66431632d63dc028c58cb91492725c74dddc4b97ba62e88a92/numexpr-2.10.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:15f59655458056fdb3a621b1bb8e071581ccf7e823916c7568bb7c9a3e393025", size = 397305, upload-time = "2024-11-23T13:33:30.181Z" }, + { url = "https://files.pythonhosted.org/packages/9c/a0/29bcb31a9debb743e3dc46bacd55f4f6ee6a77d95eda5c8dca19a29c0627/numexpr-2.10.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ce8cccf944339051e44a49a124a06287fe3066d0acbff33d1aa5aee10a96abb7", size = 1378789, upload-time = "2024-11-23T13:33:32.263Z" }, + { url = "https://files.pythonhosted.org/packages/cc/72/415262a7bdda706c41bf8254311a5ca13d3b8532341ab478be4583d7061a/numexpr-2.10.2-cp310-cp310-win32.whl", hash = "sha256:ba85371c9a8d03e115f4dfb6d25dfbce05387002b9bc85016af939a1da9624f0", size = 151935, upload-time = "2024-11-23T13:33:33.653Z" }, + { url = "https://files.pythonhosted.org/packages/71/fa/0124f0c2a502a0bac4553c8a171c551f154cf80a83a15e40d30c43e48a7e/numexpr-2.10.2-cp310-cp310-win_amd64.whl", hash = "sha256:deb64235af9eeba59fcefa67e82fa80cfc0662e1b0aa373b7118a28da124d51d", size = 144961, upload-time = "2024-11-23T13:33:34.883Z" }, + { url = "https://files.pythonhosted.org/packages/de/b7/f25d6166f92ef23737c1c90416144492a664f0a56510d90f7c6577c2cd14/numexpr-2.10.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6b360eb8d392483410fe6a3d5a7144afa298c9a0aa3e9fe193e89590b47dd477", size = 145055, upload-time = "2024-11-23T13:33:36.154Z" }, + { url = "https://files.pythonhosted.org/packages/66/64/428361ea6415826332f38ef2dd5c3abf4e7e601f033bfc9be68b680cb765/numexpr-2.10.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d9a42f5c24880350d88933c4efee91b857c378aaea7e8b86221fff569069841e", size = 134743, upload-time = "2024-11-23T13:33:37.273Z" }, + { url = "https://files.pythonhosted.org/packages/3f/fb/639ec91d2ea7b4a5d66e26e8ef8e06b020c8e9b9ebaf3bab7b0a9bee472e/numexpr-2.10.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:83fcb11988b57cc25b028a36d285287d706d1f536ebf2662ea30bd990e0de8b9", size = 410397, upload-time = "2024-11-23T13:33:38.474Z" }, + { url = "https://files.pythonhosted.org/packages/89/5a/0f5c5b8a3a6d34eeecb30d0e2f722d50b9b38c0e175937e7c6268ffab997/numexpr-2.10.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4213a92efa9770bc28e3792134e27c7e5c7e97068bdfb8ba395baebbd12f991b", size = 398902, upload-time = "2024-11-23T13:33:39.802Z" }, + { url = "https://files.pythonhosted.org/packages/a2/d5/ec734e735eba5a753efed5be3707ee7447ebd371772f8081b65a4153fb97/numexpr-2.10.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ebdbef5763ca057eea0c2b5698e4439d084a0505d9d6e94f4804f26e8890c45e", size = 1380354, upload-time = "2024-11-23T13:33:41.68Z" }, + { url = "https://files.pythonhosted.org/packages/30/51/406e572531d817480bd612ee08239a36ee82865fea02fce569f15631f4ee/numexpr-2.10.2-cp311-cp311-win32.whl", hash = "sha256:3bf01ec502d89944e49e9c1b5cc7c7085be8ca2eb9dd46a0eafd218afbdbd5f5", size = 151938, upload-time = "2024-11-23T13:33:43.998Z" }, + { url = "https://files.pythonhosted.org/packages/04/32/5882ed1dbd96234f327a73316a481add151ff827cfaf2ea24fb4d5ad04db/numexpr-2.10.2-cp311-cp311-win_amd64.whl", hash = "sha256:e2d0ae24b0728e4bc3f1d3f33310340d67321d36d6043f7ce26897f4f1042db0", size = 144961, upload-time = "2024-11-23T13:33:45.329Z" }, + { url = "https://files.pythonhosted.org/packages/2b/96/d5053dea06d8298ae8052b4b049cbf8ef74998e28d57166cc27b8ae909e2/numexpr-2.10.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b5323a46e75832334f1af86da1ef6ff0add00fbacdd266250be872b438bdf2be", size = 145029, upload-time = "2024-11-23T13:33:46.892Z" }, + { url = "https://files.pythonhosted.org/packages/3e/3c/fcd5a812ed5dda757b2d9ef2764a3e1cca6f6d1f02dbf113dc23a2c7702a/numexpr-2.10.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a42963bd4c62d8afa4f51e7974debfa39a048383f653544ab54f50a2f7ec6c42", size = 134851, upload-time = "2024-11-23T13:33:47.986Z" }, + { url = "https://files.pythonhosted.org/packages/0a/52/0ed3b306d8c9944129bce97fec73a2caff13adbd7e1df148d546d7eb2d4d/numexpr-2.10.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5191ba8f2975cb9703afc04ae845a929e193498c0e8bcd408ecb147b35978470", size = 411837, upload-time = "2024-11-23T13:33:49.223Z" }, + { url = "https://files.pythonhosted.org/packages/7d/9c/6b671dd3fb67d7e7da93cb76b7c5277743f310a216b7856bb18776bb3371/numexpr-2.10.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:97298b14f0105a794bea06fd9fbc5c423bd3ff4d88cbc618860b83eb7a436ad6", size = 400577, upload-time = "2024-11-23T13:33:50.559Z" }, + { url = "https://files.pythonhosted.org/packages/ea/4d/a167d1a215fe10ce58c45109f2869fd13aa0eef66f7e8c69af68be45d436/numexpr-2.10.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f9d7805ccb6be2d3b0f7f6fad3707a09ac537811e8e9964f4074d28cb35543db", size = 1381735, upload-time = "2024-11-23T13:33:51.918Z" }, + { url = "https://files.pythonhosted.org/packages/c1/d4/17e4434f989e4917d31cbd88a043e1c9c16958149cf43fa622987111392b/numexpr-2.10.2-cp312-cp312-win32.whl", hash = "sha256:cb845b2d4f9f8ef0eb1c9884f2b64780a85d3b5ae4eeb26ae2b0019f489cd35e", size = 152102, upload-time = "2024-11-23T13:33:53.93Z" }, + { url = "https://files.pythonhosted.org/packages/b8/25/9ae599994076ef2a42d35ff6b0430da002647f212567851336a6c7b132d6/numexpr-2.10.2-cp312-cp312-win_amd64.whl", hash = "sha256:57b59cbb5dcce4edf09cd6ce0b57ff60312479930099ca8d944c2fac896a1ead", size = 145061, upload-time = "2024-11-23T13:33:55.161Z" }, + { url = "https://files.pythonhosted.org/packages/8c/cb/2ea1848c46e4d75073c038dd75628d1aa442975303264ed230bf90f74f44/numexpr-2.10.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a37d6a51ec328c561b2ca8a2bef07025642eca995b8553a5267d0018c732976d", size = 145035, upload-time = "2024-11-23T13:33:56.778Z" }, + { url = "https://files.pythonhosted.org/packages/ec/cf/bb2bcd81d6f3243590e19ac3e7795a1a370f3ebcd8ecec1f46dcd5333f37/numexpr-2.10.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:81d1dde7dd6166d8ff5727bb46ab42a6b0048db0e97ceb84a121334a404a800f", size = 134858, upload-time = "2024-11-23T13:33:57.953Z" }, + { url = "https://files.pythonhosted.org/packages/48/9b/c9128ffb453205c2a4c84a3abed35447c7591c2c2812e77e34fd238cb2bb/numexpr-2.10.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5b3f814437d5a10797f8d89d2037cca2c9d9fa578520fc911f894edafed6ea3e", size = 415517, upload-time = "2024-11-23T13:33:59.163Z" }, + { url = "https://files.pythonhosted.org/packages/7e/b0/64c04c9f8b4a563218d00daa1ec4563364961b79025162c5276ab2c7c407/numexpr-2.10.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9309f2e43fe6e4560699ef5c27d7a848b3ff38549b6b57194207cf0e88900527", size = 403846, upload-time = "2024-11-23T13:34:01.006Z" }, + { url = "https://files.pythonhosted.org/packages/80/35/60e9041fd709fe98dd3109d73a03cdffaeb6ee2089179155f5c3754e9934/numexpr-2.10.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ebb73b93f5c4d6994f357fa5a47a9f7a5485577e633b3c46a603cb01445bbb19", size = 1381659, upload-time = "2024-11-23T13:34:02.979Z" }, + { url = "https://files.pythonhosted.org/packages/bd/5a/955bf5b5cf8f3de7b044a999e36327e14191fa073ed0e329456ed0f8161d/numexpr-2.10.2-cp313-cp313-win32.whl", hash = "sha256:ec04c9a3c050c175348801e27c18c68d28673b7bfb865ef88ce333be523bbc01", size = 152105, upload-time = "2024-11-23T13:34:04.374Z" }, + { url = "https://files.pythonhosted.org/packages/be/7a/8ce360a1848bb5bcc30a414493371678f43790ece397f8652d5f65757e57/numexpr-2.10.2-cp313-cp313-win_amd64.whl", hash = "sha256:d7a3fc83c959288544db3adc70612475d8ad53a66c69198105c74036182d10dd", size = 145060, upload-time = "2024-11-23T13:34:06.112Z" }, + { url = "https://files.pythonhosted.org/packages/41/6a/06a225ac970c5921f41bc069a30438ff64fd79ef5e828f5ec2d4f6658307/numexpr-2.10.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0495f8111c3633e265248709b8b3b521bbfa646ba384909edd10e2b9a588a83a", size = 145100, upload-time = "2024-11-23T13:33:12.013Z" }, + { url = "https://files.pythonhosted.org/packages/bb/c5/9ecfa0da1d93d57e3f447d10da8cf6d695c93131cec085625e5092b37631/numexpr-2.10.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2aa05ac71bee3b1253e73173c4d7fa96a09a18970c0226f1c2c07a71ffe988dc", size = 134839, upload-time = "2024-11-23T13:33:13.608Z" }, + { url = "https://files.pythonhosted.org/packages/f5/30/f1a48c485183da517bd28e0df6fee337d12bbb0cd2d6bf13f8f5695afd37/numexpr-2.10.2-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c3a23c3002ab330056fbdd2785871937a6f2f2fa85d06c8d0ff74ea8418119d1", size = 408149, upload-time = "2024-11-23T13:33:15.549Z" }, + { url = "https://files.pythonhosted.org/packages/ed/f2/009d9dd8cd22f253fd6ead4165f81fafbe22489c1cfea612e18aa3dcb0fa/numexpr-2.10.2-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a018a7d81326f4c73d8b5aee61794d7d8514512f43957c0db61eb2a8a86848c7", size = 396740, upload-time = "2024-11-23T13:33:17.396Z" }, + { url = "https://files.pythonhosted.org/packages/47/90/e3f12670b3cca9bed85096671265e0f65cde6cf4646baadd4ee9c33944a8/numexpr-2.10.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:037859b17a0abe2b489d4c2cfdadd2bf458ec80dd83f338ea5544c7987e06b85", size = 1377883, upload-time = "2024-11-23T13:33:20.385Z" }, + { url = "https://files.pythonhosted.org/packages/06/1d/068c09a3c013c1178495f73a21ebd6ee25b9f0fc4202cea38b7a826c43a2/numexpr-2.10.2-cp39-cp39-win32.whl", hash = "sha256:eb278ccda6f893a312aa0452701bb17d098b7b14eb7c9381517d509cce0a39a3", size = 151878, upload-time = "2024-11-23T13:33:21.67Z" }, + { url = "https://files.pythonhosted.org/packages/70/81/affb9ff26e8accb210fe5585b095bd6872f5614d18b76cd53888e955ed9a/numexpr-2.10.2-cp39-cp39-win_amd64.whl", hash = "sha256:734b64c6d6a597601ce9d0ef7b666e678ec015b446f1d1412c23903c021436c3", size = 144960, upload-time = "2024-11-23T13:33:23.617Z" }, +] + +[[package]] +name = "numexpr" +version = "2.11.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d2/8f/2cc977e91adbfbcdb6b49fdb9147e1d1c7566eb2c0c1e737e9a47020b5ca/numexpr-2.11.0.tar.gz", hash = "sha256:75b2c01a4eda2e7c357bc67a3f5c3dd76506c15b5fd4dc42845ef2e182181bad", size = 108960, upload-time = "2025-06-09T11:05:56.79Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/aa/3a/99d5c9fb7f1cbb465798b79b9fd6d5df5ab10fee0d499c2b72a76634c80e/numexpr-2.11.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7f471fd055a9e13cf5f4337ee12379b30b4dcda1ae0d85018d4649e841578c02", size = 147492, upload-time = "2025-06-09T11:04:59.605Z" }, + { url = "https://files.pythonhosted.org/packages/f4/32/914b8bb3d9a40e27ee56bfa915dcdfd60a460a6a9006bab80aa25df91c91/numexpr-2.11.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6e68a9800a3fa37c438b73a669f507c4973801a456a864ac56b62c3bd63d08af", size = 136741, upload-time = "2025-06-09T11:05:01.096Z" }, + { url = "https://files.pythonhosted.org/packages/5c/89/177fae13baaa9380a9f714bdf8b88ae941ed2c2f89bd228f2f089a651afa/numexpr-2.11.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ad5cf0ebc3cdb12edb5aa50472108807ffd0a0ce95f87c0366a479fa83a7c346", size = 409327, upload-time = "2025-06-09T11:05:02.706Z" }, + { url = "https://files.pythonhosted.org/packages/83/03/0718f1ac2d7cc0422096ab0ac16cc04597539a2c69a22616d781a2be4359/numexpr-2.11.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8c9e6b07c136d06495c792f603099039bb1e7c6c29854cc5eb3d7640268df016", size = 399827, upload-time = "2025-06-09T11:05:04.33Z" }, + { url = "https://files.pythonhosted.org/packages/81/7d/8225d6fcafaa937606543bee6e985966c91d8741d25a8eb6d0143f64ce77/numexpr-2.11.0-cp310-cp310-win32.whl", hash = "sha256:4aba2f640d9d45b986a613ce94fcf008c42cc72eeba2990fefdb575228b1d3d1", size = 153165, upload-time = "2025-06-09T11:05:06.583Z" }, + { url = "https://files.pythonhosted.org/packages/8d/c8/abd6371906c2690852dbbd4cb8faa3d26c51bc8ce849cb4b16dc24e799c1/numexpr-2.11.0-cp310-cp310-win_amd64.whl", hash = "sha256:7f75797bc75a2e7edf52a1c9e68a1295fa84250161c8f4e41df9e72723332c65", size = 146233, upload-time = "2025-06-09T11:05:07.614Z" }, + { url = "https://files.pythonhosted.org/packages/d8/d1/1cf8137990b3f3d445556ed63b9bc347aec39bde8c41146b02d3b35c1adc/numexpr-2.11.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:450eba3c93c3e3e8070566ad8d70590949d6e574b1c960bf68edd789811e7da8", size = 147535, upload-time = "2025-06-09T11:05:08.929Z" }, + { url = "https://files.pythonhosted.org/packages/b6/5e/bac7649d043f47c7c14c797efe60dbd19476468a149399cd706fe2e47f8c/numexpr-2.11.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f0eb88dbac8a7e61ee433006d0ddfd6eb921f5c6c224d1b50855bc98fb304c44", size = 136710, upload-time = "2025-06-09T11:05:10.366Z" }, + { url = "https://files.pythonhosted.org/packages/1b/9f/c88fc34d82d23c66ea0b78b00a1fb3b64048e0f7ac7791b2cd0d2a4ce14d/numexpr-2.11.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a194e3684b3553ea199c3f4837f422a521c7e2f0cce13527adc3a6b4049f9e7c", size = 411169, upload-time = "2025-06-09T11:05:11.797Z" }, + { url = "https://files.pythonhosted.org/packages/e4/8d/4d78dad430b41d836146f9e6f545f5c4f7d1972a6aa427d8570ab232bf16/numexpr-2.11.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f677668ab2bb2452fee955af3702fbb3b71919e61e4520762b1e5f54af59c0d8", size = 401671, upload-time = "2025-06-09T11:05:13.127Z" }, + { url = "https://files.pythonhosted.org/packages/83/1c/414670eb41a82b78bd09769a4f5fb49a934f9b3990957f02c833637a511e/numexpr-2.11.0-cp311-cp311-win32.whl", hash = "sha256:7d9e76a77c9644fbd60da3984e516ead5b84817748c2da92515cd36f1941a04d", size = 153159, upload-time = "2025-06-09T11:05:14.452Z" }, + { url = "https://files.pythonhosted.org/packages/0c/97/8d00ca9b36f3ac68a8fd85e930ab0c9448d8c9ca7ce195ee75c188dabd45/numexpr-2.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:7163b488bfdcd13c300a8407c309e4cee195ef95d07facf5ac2678d66c988805", size = 146224, upload-time = "2025-06-09T11:05:15.877Z" }, + { url = "https://files.pythonhosted.org/packages/38/45/7a0e5a0b800d92e73825494ac695fa05a52c7fc7088d69a336880136b437/numexpr-2.11.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4229060be866813122385c608bbd3ea48fe0b33e91f2756810d28c1cdbfc98f1", size = 147494, upload-time = "2025-06-09T11:05:17.015Z" }, + { url = "https://files.pythonhosted.org/packages/74/46/3a26b84e44f4739ec98de0ede4b95b4b8096f721e22d0e97517eeb02017e/numexpr-2.11.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:097aa8835d32d6ac52f2be543384019b4b134d1fb67998cbfc4271155edfe54a", size = 136832, upload-time = "2025-06-09T11:05:18.55Z" }, + { url = "https://files.pythonhosted.org/packages/75/05/e3076ff25d4a108b47640c169c0a64811748c43b63d9cc052ea56de1631e/numexpr-2.11.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7f082321c244ff5d0e252071fb2c4fe02063a45934144a1456a5370ca139bec2", size = 412618, upload-time = "2025-06-09T11:05:20.093Z" }, + { url = "https://files.pythonhosted.org/packages/70/e8/15e0e077a004db0edd530da96c60c948689c888c464ee5d14b82405ebd86/numexpr-2.11.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d7a19435ca3d7dd502b8d8dce643555eb1b6013989e3f7577857289f6db6be16", size = 403363, upload-time = "2025-06-09T11:05:21.217Z" }, + { url = "https://files.pythonhosted.org/packages/10/14/f22afb3a7ae41d03ba87f62d00fbcfb76389f9cc91b7a82593c39c509318/numexpr-2.11.0-cp312-cp312-win32.whl", hash = "sha256:f326218262c8d8537887cc4bbd613c8409d62f2cac799835c0360e0d9cefaa5c", size = 153307, upload-time = "2025-06-09T11:05:22.855Z" }, + { url = "https://files.pythonhosted.org/packages/18/70/abc585269424582b3cd6db261e33b2ec96b5d4971da3edb29fc9b62a8926/numexpr-2.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:0a184e5930c77ab91dd9beee4df403b825cd9dfc4e9ba4670d31c9fcb4e2c08e", size = 146337, upload-time = "2025-06-09T11:05:23.976Z" }, + { url = "https://files.pythonhosted.org/packages/74/63/dbf4fb6c48006d413a82db138d03c3c007d0ed0684f693c4b77196448660/numexpr-2.11.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:eb766218abad05c7c3ddad5367d0ec702d6152cb4a48d9fd56a6cef6abade70c", size = 147495, upload-time = "2025-06-09T11:05:25.105Z" }, + { url = "https://files.pythonhosted.org/packages/3a/e4/2fbbf5b9121f54722dc4d4dfc75bc0b4e8ee2675f92ec86ee5697aecc53f/numexpr-2.11.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2036be213a6a1b5ce49acf60de99b911a0f9d174aab7679dde1fae315134f826", size = 136839, upload-time = "2025-06-09T11:05:26.171Z" }, + { url = "https://files.pythonhosted.org/packages/a8/3f/aa36415919c90f712a11127eaa7c0c8d045768d62a484a29364e4801c383/numexpr-2.11.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:096ec768bee2ef14ac757b4178e3c5f05e5f1cb6cae83b2eea9b4ba3ec1a86dd", size = 416240, upload-time = "2025-06-09T11:05:27.634Z" }, + { url = "https://files.pythonhosted.org/packages/b9/7d/4911f40d3610fc5557029f0d1f20ef9f571488319567ac4d8ee6d0978ee6/numexpr-2.11.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a1719788a787808c15c9bb98b6ff0c97d64a0e59c1a6ebe36d4ae4d7c5c09b95", size = 406641, upload-time = "2025-06-09T11:05:29.408Z" }, + { url = "https://files.pythonhosted.org/packages/6f/bc/d00e717e77691c410c6c461d7880b4c498896874316acc0e044d7eafacbf/numexpr-2.11.0-cp313-cp313-win32.whl", hash = "sha256:6b5fdfc86cbf5373ea67d554cc6f08863825ea8e928416bed8d5285e387420c6", size = 153313, upload-time = "2025-06-09T11:05:30.633Z" }, + { url = "https://files.pythonhosted.org/packages/52/a2/93346789e6d73a76fdb68171904ade25c112f25df363a8f602c6b21bc220/numexpr-2.11.0-cp313-cp313-win_amd64.whl", hash = "sha256:5ff337b36db141a1a0b49f01282783744f49f0d401cc83a512fc5596eb7db5c6", size = 146340, upload-time = "2025-06-09T11:05:31.771Z" }, + { url = "https://files.pythonhosted.org/packages/0b/20/c0e3aaf3cc4497e5253df2523a55c83b9d316cb5c9d5caaa4a1156cef6e3/numexpr-2.11.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:b9854fa70edbe93242b8bb4840e58d1128c45766d9a70710f05b4f67eb0feb6e", size = 148206, upload-time = "2025-06-09T11:05:33.3Z" }, + { url = "https://files.pythonhosted.org/packages/de/49/22fd38ac990ba333f25b771305a5ffcd98c771f4d278868661ffb26deac1/numexpr-2.11.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:321736cb98f090ce864b58cc5c37661cb5548e394e0fe24d5f2c7892a89070c3", size = 137573, upload-time = "2025-06-09T11:05:34.422Z" }, + { url = "https://files.pythonhosted.org/packages/fb/1e/50074e472e9e6bea4fe430869708d9ede333a187d8d0740e70d5a9560aad/numexpr-2.11.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b5cc434eb4a4df2fe442bcc50df114e82ff7aa234657baf873b2c9cf3f851e8e", size = 426674, upload-time = "2025-06-09T11:05:35.553Z" }, + { url = "https://files.pythonhosted.org/packages/8e/6d/7ccbc72b950653df62d29e2531c811ed80cfff93c927a5bfd86a71edb4da/numexpr-2.11.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:238d19465a272ada3967600fada55e4c6900485aefb42122a78dfcaf2efca65f", size = 416037, upload-time = "2025-06-09T11:05:36.601Z" }, + { url = "https://files.pythonhosted.org/packages/31/7c/bbccad2734dd4b251cc6bdff8cf5ded18b5383f5a05aa8de7bf02acbb65b/numexpr-2.11.0-cp313-cp313t-win32.whl", hash = "sha256:0db4c2dcad09f9594b45fce794f4b903345195a8c216e252de2aa92884fd81a8", size = 153967, upload-time = "2025-06-09T11:05:37.907Z" }, + { url = "https://files.pythonhosted.org/packages/75/d7/41287384e413e8d20457d35e264d9c9754e65eb13a988af51ceb7057f61b/numexpr-2.11.0-cp313-cp313t-win_amd64.whl", hash = "sha256:a69b5c02014448a412012752dc46091902d28932c3be0c6e02e73cecceffb700", size = 147207, upload-time = "2025-06-09T11:05:39.011Z" }, +] + +[[package]] +name = "numpy" +version = "2.0.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", + "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +sdist = { url = "https://files.pythonhosted.org/packages/a9/75/10dd1f8116a8b796cb2c737b674e02d02e80454bda953fa7e65d8c12b016/numpy-2.0.2.tar.gz", hash = "sha256:883c987dee1880e2a864ab0dc9892292582510604156762362d9326444636e78", size = 18902015, upload-time = "2024-08-26T20:19:40.945Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/21/91/3495b3237510f79f5d81f2508f9f13fea78ebfdf07538fc7444badda173d/numpy-2.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:51129a29dbe56f9ca83438b706e2e69a39892b5eda6cedcb6b0c9fdc9b0d3ece", size = 21165245, upload-time = "2024-08-26T20:04:14.625Z" }, + { url = "https://files.pythonhosted.org/packages/05/33/26178c7d437a87082d11019292dce6d3fe6f0e9026b7b2309cbf3e489b1d/numpy-2.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f15975dfec0cf2239224d80e32c3170b1d168335eaedee69da84fbe9f1f9cd04", size = 13738540, upload-time = "2024-08-26T20:04:36.784Z" }, + { url = "https://files.pythonhosted.org/packages/ec/31/cc46e13bf07644efc7a4bf68df2df5fb2a1a88d0cd0da9ddc84dc0033e51/numpy-2.0.2-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:8c5713284ce4e282544c68d1c3b2c7161d38c256d2eefc93c1d683cf47683e66", size = 5300623, upload-time = "2024-08-26T20:04:46.491Z" }, + { url = "https://files.pythonhosted.org/packages/6e/16/7bfcebf27bb4f9d7ec67332ffebee4d1bf085c84246552d52dbb548600e7/numpy-2.0.2-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:becfae3ddd30736fe1889a37f1f580e245ba79a5855bff5f2a29cb3ccc22dd7b", size = 6901774, upload-time = "2024-08-26T20:04:58.173Z" }, + { url = "https://files.pythonhosted.org/packages/f9/a3/561c531c0e8bf082c5bef509d00d56f82e0ea7e1e3e3a7fc8fa78742a6e5/numpy-2.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2da5960c3cf0df7eafefd806d4e612c5e19358de82cb3c343631188991566ccd", size = 13907081, upload-time = "2024-08-26T20:05:19.098Z" }, + { url = "https://files.pythonhosted.org/packages/fa/66/f7177ab331876200ac7563a580140643d1179c8b4b6a6b0fc9838de2a9b8/numpy-2.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:496f71341824ed9f3d2fd36cf3ac57ae2e0165c143b55c3a035ee219413f3318", size = 19523451, upload-time = "2024-08-26T20:05:47.479Z" }, + { url = "https://files.pythonhosted.org/packages/25/7f/0b209498009ad6453e4efc2c65bcdf0ae08a182b2b7877d7ab38a92dc542/numpy-2.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a61ec659f68ae254e4d237816e33171497e978140353c0c2038d46e63282d0c8", size = 19927572, upload-time = "2024-08-26T20:06:17.137Z" }, + { url = "https://files.pythonhosted.org/packages/3e/df/2619393b1e1b565cd2d4c4403bdd979621e2c4dea1f8532754b2598ed63b/numpy-2.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d731a1c6116ba289c1e9ee714b08a8ff882944d4ad631fd411106a30f083c326", size = 14400722, upload-time = "2024-08-26T20:06:39.16Z" }, + { url = "https://files.pythonhosted.org/packages/22/ad/77e921b9f256d5da36424ffb711ae79ca3f451ff8489eeca544d0701d74a/numpy-2.0.2-cp310-cp310-win32.whl", hash = "sha256:984d96121c9f9616cd33fbd0618b7f08e0cfc9600a7ee1d6fd9b239186d19d97", size = 6472170, upload-time = "2024-08-26T20:06:50.361Z" }, + { url = "https://files.pythonhosted.org/packages/10/05/3442317535028bc29cf0c0dd4c191a4481e8376e9f0db6bcf29703cadae6/numpy-2.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:c7b0be4ef08607dd04da4092faee0b86607f111d5ae68036f16cc787e250a131", size = 15905558, upload-time = "2024-08-26T20:07:13.881Z" }, + { url = "https://files.pythonhosted.org/packages/8b/cf/034500fb83041aa0286e0fb16e7c76e5c8b67c0711bb6e9e9737a717d5fe/numpy-2.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:49ca4decb342d66018b01932139c0961a8f9ddc7589611158cb3c27cbcf76448", size = 21169137, upload-time = "2024-08-26T20:07:45.345Z" }, + { url = "https://files.pythonhosted.org/packages/4a/d9/32de45561811a4b87fbdee23b5797394e3d1504b4a7cf40c10199848893e/numpy-2.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:11a76c372d1d37437857280aa142086476136a8c0f373b2e648ab2c8f18fb195", size = 13703552, upload-time = "2024-08-26T20:08:06.666Z" }, + { url = "https://files.pythonhosted.org/packages/c1/ca/2f384720020c7b244d22508cb7ab23d95f179fcfff33c31a6eeba8d6c512/numpy-2.0.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:807ec44583fd708a21d4a11d94aedf2f4f3c3719035c76a2bbe1fe8e217bdc57", size = 5298957, upload-time = "2024-08-26T20:08:15.83Z" }, + { url = "https://files.pythonhosted.org/packages/0e/78/a3e4f9fb6aa4e6fdca0c5428e8ba039408514388cf62d89651aade838269/numpy-2.0.2-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:8cafab480740e22f8d833acefed5cc87ce276f4ece12fdaa2e8903db2f82897a", size = 6905573, upload-time = "2024-08-26T20:08:27.185Z" }, + { url = "https://files.pythonhosted.org/packages/a0/72/cfc3a1beb2caf4efc9d0b38a15fe34025230da27e1c08cc2eb9bfb1c7231/numpy-2.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a15f476a45e6e5a3a79d8a14e62161d27ad897381fecfa4a09ed5322f2085669", size = 13914330, upload-time = "2024-08-26T20:08:48.058Z" }, + { url = "https://files.pythonhosted.org/packages/ba/a8/c17acf65a931ce551fee11b72e8de63bf7e8a6f0e21add4c937c83563538/numpy-2.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13e689d772146140a252c3a28501da66dfecd77490b498b168b501835041f951", size = 19534895, upload-time = "2024-08-26T20:09:16.536Z" }, + { url = "https://files.pythonhosted.org/packages/ba/86/8767f3d54f6ae0165749f84648da9dcc8cd78ab65d415494962c86fac80f/numpy-2.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9ea91dfb7c3d1c56a0e55657c0afb38cf1eeae4544c208dc465c3c9f3a7c09f9", size = 19937253, upload-time = "2024-08-26T20:09:46.263Z" }, + { url = "https://files.pythonhosted.org/packages/df/87/f76450e6e1c14e5bb1eae6836478b1028e096fd02e85c1c37674606ab752/numpy-2.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c1c9307701fec8f3f7a1e6711f9089c06e6284b3afbbcd259f7791282d660a15", size = 14414074, upload-time = "2024-08-26T20:10:08.483Z" }, + { url = "https://files.pythonhosted.org/packages/5c/ca/0f0f328e1e59f73754f06e1adfb909de43726d4f24c6a3f8805f34f2b0fa/numpy-2.0.2-cp311-cp311-win32.whl", hash = "sha256:a392a68bd329eafac5817e5aefeb39038c48b671afd242710b451e76090e81f4", size = 6470640, upload-time = "2024-08-26T20:10:19.732Z" }, + { url = "https://files.pythonhosted.org/packages/eb/57/3a3f14d3a759dcf9bf6e9eda905794726b758819df4663f217d658a58695/numpy-2.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:286cd40ce2b7d652a6f22efdfc6d1edf879440e53e76a75955bc0c826c7e64dc", size = 15910230, upload-time = "2024-08-26T20:10:43.413Z" }, + { url = "https://files.pythonhosted.org/packages/45/40/2e117be60ec50d98fa08c2f8c48e09b3edea93cfcabd5a9ff6925d54b1c2/numpy-2.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:df55d490dea7934f330006d0f81e8551ba6010a5bf035a249ef61a94f21c500b", size = 20895803, upload-time = "2024-08-26T20:11:13.916Z" }, + { url = "https://files.pythonhosted.org/packages/46/92/1b8b8dee833f53cef3e0a3f69b2374467789e0bb7399689582314df02651/numpy-2.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8df823f570d9adf0978347d1f926b2a867d5608f434a7cff7f7908c6570dcf5e", size = 13471835, upload-time = "2024-08-26T20:11:34.779Z" }, + { url = "https://files.pythonhosted.org/packages/7f/19/e2793bde475f1edaea6945be141aef6c8b4c669b90c90a300a8954d08f0a/numpy-2.0.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:9a92ae5c14811e390f3767053ff54eaee3bf84576d99a2456391401323f4ec2c", size = 5038499, upload-time = "2024-08-26T20:11:43.902Z" }, + { url = "https://files.pythonhosted.org/packages/e3/ff/ddf6dac2ff0dd50a7327bcdba45cb0264d0e96bb44d33324853f781a8f3c/numpy-2.0.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:a842d573724391493a97a62ebbb8e731f8a5dcc5d285dfc99141ca15a3302d0c", size = 6633497, upload-time = "2024-08-26T20:11:55.09Z" }, + { url = "https://files.pythonhosted.org/packages/72/21/67f36eac8e2d2cd652a2e69595a54128297cdcb1ff3931cfc87838874bd4/numpy-2.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c05e238064fc0610c840d1cf6a13bf63d7e391717d247f1bf0318172e759e692", size = 13621158, upload-time = "2024-08-26T20:12:14.95Z" }, + { url = "https://files.pythonhosted.org/packages/39/68/e9f1126d757653496dbc096cb429014347a36b228f5a991dae2c6b6cfd40/numpy-2.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0123ffdaa88fa4ab64835dcbde75dcdf89c453c922f18dced6e27c90d1d0ec5a", size = 19236173, upload-time = "2024-08-26T20:12:44.049Z" }, + { url = "https://files.pythonhosted.org/packages/d1/e9/1f5333281e4ebf483ba1c888b1d61ba7e78d7e910fdd8e6499667041cc35/numpy-2.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:96a55f64139912d61de9137f11bf39a55ec8faec288c75a54f93dfd39f7eb40c", size = 19634174, upload-time = "2024-08-26T20:13:13.634Z" }, + { url = "https://files.pythonhosted.org/packages/71/af/a469674070c8d8408384e3012e064299f7a2de540738a8e414dcfd639996/numpy-2.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ec9852fb39354b5a45a80bdab5ac02dd02b15f44b3804e9f00c556bf24b4bded", size = 14099701, upload-time = "2024-08-26T20:13:34.851Z" }, + { url = "https://files.pythonhosted.org/packages/d0/3d/08ea9f239d0e0e939b6ca52ad403c84a2bce1bde301a8eb4888c1c1543f1/numpy-2.0.2-cp312-cp312-win32.whl", hash = "sha256:671bec6496f83202ed2d3c8fdc486a8fc86942f2e69ff0e986140339a63bcbe5", size = 6174313, upload-time = "2024-08-26T20:13:45.653Z" }, + { url = "https://files.pythonhosted.org/packages/b2/b5/4ac39baebf1fdb2e72585c8352c56d063b6126be9fc95bd2bb5ef5770c20/numpy-2.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:cfd41e13fdc257aa5778496b8caa5e856dc4896d4ccf01841daee1d96465467a", size = 15606179, upload-time = "2024-08-26T20:14:08.786Z" }, + { url = "https://files.pythonhosted.org/packages/43/c1/41c8f6df3162b0c6ffd4437d729115704bd43363de0090c7f913cfbc2d89/numpy-2.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9059e10581ce4093f735ed23f3b9d283b9d517ff46009ddd485f1747eb22653c", size = 21169942, upload-time = "2024-08-26T20:14:40.108Z" }, + { url = "https://files.pythonhosted.org/packages/39/bc/fd298f308dcd232b56a4031fd6ddf11c43f9917fbc937e53762f7b5a3bb1/numpy-2.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:423e89b23490805d2a5a96fe40ec507407b8ee786d66f7328be214f9679df6dd", size = 13711512, upload-time = "2024-08-26T20:15:00.985Z" }, + { url = "https://files.pythonhosted.org/packages/96/ff/06d1aa3eeb1c614eda245c1ba4fb88c483bee6520d361641331872ac4b82/numpy-2.0.2-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:2b2955fa6f11907cf7a70dab0d0755159bca87755e831e47932367fc8f2f2d0b", size = 5306976, upload-time = "2024-08-26T20:15:10.876Z" }, + { url = "https://files.pythonhosted.org/packages/2d/98/121996dcfb10a6087a05e54453e28e58694a7db62c5a5a29cee14c6e047b/numpy-2.0.2-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:97032a27bd9d8988b9a97a8c4d2c9f2c15a81f61e2f21404d7e8ef00cb5be729", size = 6906494, upload-time = "2024-08-26T20:15:22.055Z" }, + { url = "https://files.pythonhosted.org/packages/15/31/9dffc70da6b9bbf7968f6551967fc21156207366272c2a40b4ed6008dc9b/numpy-2.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e795a8be3ddbac43274f18588329c72939870a16cae810c2b73461c40718ab1", size = 13912596, upload-time = "2024-08-26T20:15:42.452Z" }, + { url = "https://files.pythonhosted.org/packages/b9/14/78635daab4b07c0930c919d451b8bf8c164774e6a3413aed04a6d95758ce/numpy-2.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f26b258c385842546006213344c50655ff1555a9338e2e5e02a0756dc3e803dd", size = 19526099, upload-time = "2024-08-26T20:16:11.048Z" }, + { url = "https://files.pythonhosted.org/packages/26/4c/0eeca4614003077f68bfe7aac8b7496f04221865b3a5e7cb230c9d055afd/numpy-2.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5fec9451a7789926bcf7c2b8d187292c9f93ea30284802a0ab3f5be8ab36865d", size = 19932823, upload-time = "2024-08-26T20:16:40.171Z" }, + { url = "https://files.pythonhosted.org/packages/f1/46/ea25b98b13dccaebddf1a803f8c748680d972e00507cd9bc6dcdb5aa2ac1/numpy-2.0.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:9189427407d88ff25ecf8f12469d4d39d35bee1db5d39fc5c168c6f088a6956d", size = 14404424, upload-time = "2024-08-26T20:17:02.604Z" }, + { url = "https://files.pythonhosted.org/packages/c8/a6/177dd88d95ecf07e722d21008b1b40e681a929eb9e329684d449c36586b2/numpy-2.0.2-cp39-cp39-win32.whl", hash = "sha256:905d16e0c60200656500c95b6b8dca5d109e23cb24abc701d41c02d74c6b3afa", size = 6476809, upload-time = "2024-08-26T20:17:13.553Z" }, + { url = "https://files.pythonhosted.org/packages/ea/2b/7fc9f4e7ae5b507c1a3a21f0f15ed03e794c1242ea8a242ac158beb56034/numpy-2.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:a3f4ab0caa7f053f6797fcd4e1e25caee367db3112ef2b6ef82d749530768c73", size = 15911314, upload-time = "2024-08-26T20:17:36.72Z" }, + { url = "https://files.pythonhosted.org/packages/8f/3b/df5a870ac6a3be3a86856ce195ef42eec7ae50d2a202be1f5a4b3b340e14/numpy-2.0.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:7f0a0c6f12e07fa94133c8a67404322845220c06a9e80e85999afe727f7438b8", size = 21025288, upload-time = "2024-08-26T20:18:07.732Z" }, + { url = "https://files.pythonhosted.org/packages/2c/97/51af92f18d6f6f2d9ad8b482a99fb74e142d71372da5d834b3a2747a446e/numpy-2.0.2-pp39-pypy39_pp73-macosx_14_0_x86_64.whl", hash = "sha256:312950fdd060354350ed123c0e25a71327d3711584beaef30cdaa93320c392d4", size = 6762793, upload-time = "2024-08-26T20:18:19.125Z" }, + { url = "https://files.pythonhosted.org/packages/12/46/de1fbd0c1b5ccaa7f9a005b66761533e2f6a3e560096682683a223631fe9/numpy-2.0.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26df23238872200f63518dd2aa984cfca675d82469535dc7162dc2ee52d9dd5c", size = 19334885, upload-time = "2024-08-26T20:18:47.237Z" }, + { url = "https://files.pythonhosted.org/packages/cc/dc/d330a6faefd92b446ec0f0dfea4c3207bb1fef3c4771d19cf4543efd2c78/numpy-2.0.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a46288ec55ebbd58947d31d72be2c63cbf839f0a63b49cb755022310792a3385", size = 15828784, upload-time = "2024-08-26T20:19:11.19Z" }, +] + +[[package]] +name = "numpy" +version = "2.2.6" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +sdist = { url = "https://files.pythonhosted.org/packages/76/21/7d2a95e4bba9dc13d043ee156a356c0a8f0c6309dff6b21b4d71a073b8a8/numpy-2.2.6.tar.gz", hash = "sha256:e29554e2bef54a90aa5cc07da6ce955accb83f21ab5de01a62c8478897b264fd", size = 20276440, upload-time = "2025-05-17T22:38:04.611Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9a/3e/ed6db5be21ce87955c0cbd3009f2803f59fa08df21b5df06862e2d8e2bdd/numpy-2.2.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b412caa66f72040e6d268491a59f2c43bf03eb6c96dd8f0307829feb7fa2b6fb", size = 21165245, upload-time = "2025-05-17T21:27:58.555Z" }, + { url = "https://files.pythonhosted.org/packages/22/c2/4b9221495b2a132cc9d2eb862e21d42a009f5a60e45fc44b00118c174bff/numpy-2.2.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e41fd67c52b86603a91c1a505ebaef50b3314de0213461c7a6e99c9a3beff90", size = 14360048, upload-time = "2025-05-17T21:28:21.406Z" }, + { url = "https://files.pythonhosted.org/packages/fd/77/dc2fcfc66943c6410e2bf598062f5959372735ffda175b39906d54f02349/numpy-2.2.6-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:37e990a01ae6ec7fe7fa1c26c55ecb672dd98b19c3d0e1d1f326fa13cb38d163", size = 5340542, upload-time = "2025-05-17T21:28:30.931Z" }, + { url = "https://files.pythonhosted.org/packages/7a/4f/1cb5fdc353a5f5cc7feb692db9b8ec2c3d6405453f982435efc52561df58/numpy-2.2.6-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:5a6429d4be8ca66d889b7cf70f536a397dc45ba6faeb5f8c5427935d9592e9cf", size = 6878301, upload-time = "2025-05-17T21:28:41.613Z" }, + { url = "https://files.pythonhosted.org/packages/eb/17/96a3acd228cec142fcb8723bd3cc39c2a474f7dcf0a5d16731980bcafa95/numpy-2.2.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:efd28d4e9cd7d7a8d39074a4d44c63eda73401580c5c76acda2ce969e0a38e83", size = 14297320, upload-time = "2025-05-17T21:29:02.78Z" }, + { url = "https://files.pythonhosted.org/packages/b4/63/3de6a34ad7ad6646ac7d2f55ebc6ad439dbbf9c4370017c50cf403fb19b5/numpy-2.2.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc7b73d02efb0e18c000e9ad8b83480dfcd5dfd11065997ed4c6747470ae8915", size = 16801050, upload-time = "2025-05-17T21:29:27.675Z" }, + { url = "https://files.pythonhosted.org/packages/07/b6/89d837eddef52b3d0cec5c6ba0456c1bf1b9ef6a6672fc2b7873c3ec4e2e/numpy-2.2.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:74d4531beb257d2c3f4b261bfb0fc09e0f9ebb8842d82a7b4209415896adc680", size = 15807034, upload-time = "2025-05-17T21:29:51.102Z" }, + { url = "https://files.pythonhosted.org/packages/01/c8/dc6ae86e3c61cfec1f178e5c9f7858584049b6093f843bca541f94120920/numpy-2.2.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8fc377d995680230e83241d8a96def29f204b5782f371c532579b4f20607a289", size = 18614185, upload-time = "2025-05-17T21:30:18.703Z" }, + { url = "https://files.pythonhosted.org/packages/5b/c5/0064b1b7e7c89137b471ccec1fd2282fceaae0ab3a9550f2568782d80357/numpy-2.2.6-cp310-cp310-win32.whl", hash = "sha256:b093dd74e50a8cba3e873868d9e93a85b78e0daf2e98c6797566ad8044e8363d", size = 6527149, upload-time = "2025-05-17T21:30:29.788Z" }, + { url = "https://files.pythonhosted.org/packages/a3/dd/4b822569d6b96c39d1215dbae0582fd99954dcbcf0c1a13c61783feaca3f/numpy-2.2.6-cp310-cp310-win_amd64.whl", hash = "sha256:f0fd6321b839904e15c46e0d257fdd101dd7f530fe03fd6359c1ea63738703f3", size = 12904620, upload-time = "2025-05-17T21:30:48.994Z" }, + { url = "https://files.pythonhosted.org/packages/da/a8/4f83e2aa666a9fbf56d6118faaaf5f1974d456b1823fda0a176eff722839/numpy-2.2.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f9f1adb22318e121c5c69a09142811a201ef17ab257a1e66ca3025065b7f53ae", size = 21176963, upload-time = "2025-05-17T21:31:19.36Z" }, + { url = "https://files.pythonhosted.org/packages/b3/2b/64e1affc7972decb74c9e29e5649fac940514910960ba25cd9af4488b66c/numpy-2.2.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c820a93b0255bc360f53eca31a0e676fd1101f673dda8da93454a12e23fc5f7a", size = 14406743, upload-time = "2025-05-17T21:31:41.087Z" }, + { url = "https://files.pythonhosted.org/packages/4a/9f/0121e375000b5e50ffdd8b25bf78d8e1a5aa4cca3f185d41265198c7b834/numpy-2.2.6-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3d70692235e759f260c3d837193090014aebdf026dfd167834bcba43e30c2a42", size = 5352616, upload-time = "2025-05-17T21:31:50.072Z" }, + { url = "https://files.pythonhosted.org/packages/31/0d/b48c405c91693635fbe2dcd7bc84a33a602add5f63286e024d3b6741411c/numpy-2.2.6-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:481b49095335f8eed42e39e8041327c05b0f6f4780488f61286ed3c01368d491", size = 6889579, upload-time = "2025-05-17T21:32:01.712Z" }, + { url = "https://files.pythonhosted.org/packages/52/b8/7f0554d49b565d0171eab6e99001846882000883998e7b7d9f0d98b1f934/numpy-2.2.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b64d8d4d17135e00c8e346e0a738deb17e754230d7e0810ac5012750bbd85a5a", size = 14312005, upload-time = "2025-05-17T21:32:23.332Z" }, + { url = "https://files.pythonhosted.org/packages/b3/dd/2238b898e51bd6d389b7389ffb20d7f4c10066d80351187ec8e303a5a475/numpy-2.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba10f8411898fc418a521833e014a77d3ca01c15b0c6cdcce6a0d2897e6dbbdf", size = 16821570, upload-time = "2025-05-17T21:32:47.991Z" }, + { url = "https://files.pythonhosted.org/packages/83/6c/44d0325722cf644f191042bf47eedad61c1e6df2432ed65cbe28509d404e/numpy-2.2.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bd48227a919f1bafbdda0583705e547892342c26fb127219d60a5c36882609d1", size = 15818548, upload-time = "2025-05-17T21:33:11.728Z" }, + { url = "https://files.pythonhosted.org/packages/ae/9d/81e8216030ce66be25279098789b665d49ff19eef08bfa8cb96d4957f422/numpy-2.2.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9551a499bf125c1d4f9e250377c1ee2eddd02e01eac6644c080162c0c51778ab", size = 18620521, upload-time = "2025-05-17T21:33:39.139Z" }, + { url = "https://files.pythonhosted.org/packages/6a/fd/e19617b9530b031db51b0926eed5345ce8ddc669bb3bc0044b23e275ebe8/numpy-2.2.6-cp311-cp311-win32.whl", hash = "sha256:0678000bb9ac1475cd454c6b8c799206af8107e310843532b04d49649c717a47", size = 6525866, upload-time = "2025-05-17T21:33:50.273Z" }, + { url = "https://files.pythonhosted.org/packages/31/0a/f354fb7176b81747d870f7991dc763e157a934c717b67b58456bc63da3df/numpy-2.2.6-cp311-cp311-win_amd64.whl", hash = "sha256:e8213002e427c69c45a52bbd94163084025f533a55a59d6f9c5b820774ef3303", size = 12907455, upload-time = "2025-05-17T21:34:09.135Z" }, + { url = "https://files.pythonhosted.org/packages/82/5d/c00588b6cf18e1da539b45d3598d3557084990dcc4331960c15ee776ee41/numpy-2.2.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:41c5a21f4a04fa86436124d388f6ed60a9343a6f767fced1a8a71c3fbca038ff", size = 20875348, upload-time = "2025-05-17T21:34:39.648Z" }, + { url = "https://files.pythonhosted.org/packages/66/ee/560deadcdde6c2f90200450d5938f63a34b37e27ebff162810f716f6a230/numpy-2.2.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:de749064336d37e340f640b05f24e9e3dd678c57318c7289d222a8a2f543e90c", size = 14119362, upload-time = "2025-05-17T21:35:01.241Z" }, + { url = "https://files.pythonhosted.org/packages/3c/65/4baa99f1c53b30adf0acd9a5519078871ddde8d2339dc5a7fde80d9d87da/numpy-2.2.6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:894b3a42502226a1cac872f840030665f33326fc3dac8e57c607905773cdcde3", size = 5084103, upload-time = "2025-05-17T21:35:10.622Z" }, + { url = "https://files.pythonhosted.org/packages/cc/89/e5a34c071a0570cc40c9a54eb472d113eea6d002e9ae12bb3a8407fb912e/numpy-2.2.6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:71594f7c51a18e728451bb50cc60a3ce4e6538822731b2933209a1f3614e9282", size = 6625382, upload-time = "2025-05-17T21:35:21.414Z" }, + { url = "https://files.pythonhosted.org/packages/f8/35/8c80729f1ff76b3921d5c9487c7ac3de9b2a103b1cd05e905b3090513510/numpy-2.2.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2618db89be1b4e05f7a1a847a9c1c0abd63e63a1607d892dd54668dd92faf87", size = 14018462, upload-time = "2025-05-17T21:35:42.174Z" }, + { url = "https://files.pythonhosted.org/packages/8c/3d/1e1db36cfd41f895d266b103df00ca5b3cbe965184df824dec5c08c6b803/numpy-2.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd83c01228a688733f1ded5201c678f0c53ecc1006ffbc404db9f7a899ac6249", size = 16527618, upload-time = "2025-05-17T21:36:06.711Z" }, + { url = "https://files.pythonhosted.org/packages/61/c6/03ed30992602c85aa3cd95b9070a514f8b3c33e31124694438d88809ae36/numpy-2.2.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:37c0ca431f82cd5fa716eca9506aefcabc247fb27ba69c5062a6d3ade8cf8f49", size = 15505511, upload-time = "2025-05-17T21:36:29.965Z" }, + { url = "https://files.pythonhosted.org/packages/b7/25/5761d832a81df431e260719ec45de696414266613c9ee268394dd5ad8236/numpy-2.2.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fe27749d33bb772c80dcd84ae7e8df2adc920ae8297400dabec45f0dedb3f6de", size = 18313783, upload-time = "2025-05-17T21:36:56.883Z" }, + { url = "https://files.pythonhosted.org/packages/57/0a/72d5a3527c5ebffcd47bde9162c39fae1f90138c961e5296491ce778e682/numpy-2.2.6-cp312-cp312-win32.whl", hash = "sha256:4eeaae00d789f66c7a25ac5f34b71a7035bb474e679f410e5e1a94deb24cf2d4", size = 6246506, upload-time = "2025-05-17T21:37:07.368Z" }, + { url = "https://files.pythonhosted.org/packages/36/fa/8c9210162ca1b88529ab76b41ba02d433fd54fecaf6feb70ef9f124683f1/numpy-2.2.6-cp312-cp312-win_amd64.whl", hash = "sha256:c1f9540be57940698ed329904db803cf7a402f3fc200bfe599334c9bd84a40b2", size = 12614190, upload-time = "2025-05-17T21:37:26.213Z" }, + { url = "https://files.pythonhosted.org/packages/f9/5c/6657823f4f594f72b5471f1db1ab12e26e890bb2e41897522d134d2a3e81/numpy-2.2.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0811bb762109d9708cca4d0b13c4f67146e3c3b7cf8d34018c722adb2d957c84", size = 20867828, upload-time = "2025-05-17T21:37:56.699Z" }, + { url = "https://files.pythonhosted.org/packages/dc/9e/14520dc3dadf3c803473bd07e9b2bd1b69bc583cb2497b47000fed2fa92f/numpy-2.2.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:287cc3162b6f01463ccd86be154f284d0893d2b3ed7292439ea97eafa8170e0b", size = 14143006, upload-time = "2025-05-17T21:38:18.291Z" }, + { url = "https://files.pythonhosted.org/packages/4f/06/7e96c57d90bebdce9918412087fc22ca9851cceaf5567a45c1f404480e9e/numpy-2.2.6-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:f1372f041402e37e5e633e586f62aa53de2eac8d98cbfb822806ce4bbefcb74d", size = 5076765, upload-time = "2025-05-17T21:38:27.319Z" }, + { url = "https://files.pythonhosted.org/packages/73/ed/63d920c23b4289fdac96ddbdd6132e9427790977d5457cd132f18e76eae0/numpy-2.2.6-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:55a4d33fa519660d69614a9fad433be87e5252f4b03850642f88993f7b2ca566", size = 6617736, upload-time = "2025-05-17T21:38:38.141Z" }, + { url = "https://files.pythonhosted.org/packages/85/c5/e19c8f99d83fd377ec8c7e0cf627a8049746da54afc24ef0a0cb73d5dfb5/numpy-2.2.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f92729c95468a2f4f15e9bb94c432a9229d0d50de67304399627a943201baa2f", size = 14010719, upload-time = "2025-05-17T21:38:58.433Z" }, + { url = "https://files.pythonhosted.org/packages/19/49/4df9123aafa7b539317bf6d342cb6d227e49f7a35b99c287a6109b13dd93/numpy-2.2.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1bc23a79bfabc5d056d106f9befb8d50c31ced2fbc70eedb8155aec74a45798f", size = 16526072, upload-time = "2025-05-17T21:39:22.638Z" }, + { url = "https://files.pythonhosted.org/packages/b2/6c/04b5f47f4f32f7c2b0e7260442a8cbcf8168b0e1a41ff1495da42f42a14f/numpy-2.2.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e3143e4451880bed956e706a3220b4e5cf6172ef05fcc397f6f36a550b1dd868", size = 15503213, upload-time = "2025-05-17T21:39:45.865Z" }, + { url = "https://files.pythonhosted.org/packages/17/0a/5cd92e352c1307640d5b6fec1b2ffb06cd0dabe7d7b8227f97933d378422/numpy-2.2.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b4f13750ce79751586ae2eb824ba7e1e8dba64784086c98cdbbcc6a42112ce0d", size = 18316632, upload-time = "2025-05-17T21:40:13.331Z" }, + { url = "https://files.pythonhosted.org/packages/f0/3b/5cba2b1d88760ef86596ad0f3d484b1cbff7c115ae2429678465057c5155/numpy-2.2.6-cp313-cp313-win32.whl", hash = "sha256:5beb72339d9d4fa36522fc63802f469b13cdbe4fdab4a288f0c441b74272ebfd", size = 6244532, upload-time = "2025-05-17T21:43:46.099Z" }, + { url = "https://files.pythonhosted.org/packages/cb/3b/d58c12eafcb298d4e6d0d40216866ab15f59e55d148a5658bb3132311fcf/numpy-2.2.6-cp313-cp313-win_amd64.whl", hash = "sha256:b0544343a702fa80c95ad5d3d608ea3599dd54d4632df855e4c8d24eb6ecfa1c", size = 12610885, upload-time = "2025-05-17T21:44:05.145Z" }, + { url = "https://files.pythonhosted.org/packages/6b/9e/4bf918b818e516322db999ac25d00c75788ddfd2d2ade4fa66f1f38097e1/numpy-2.2.6-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0bca768cd85ae743b2affdc762d617eddf3bcf8724435498a1e80132d04879e6", size = 20963467, upload-time = "2025-05-17T21:40:44Z" }, + { url = "https://files.pythonhosted.org/packages/61/66/d2de6b291507517ff2e438e13ff7b1e2cdbdb7cb40b3ed475377aece69f9/numpy-2.2.6-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:fc0c5673685c508a142ca65209b4e79ed6740a4ed6b2267dbba90f34b0b3cfda", size = 14225144, upload-time = "2025-05-17T21:41:05.695Z" }, + { url = "https://files.pythonhosted.org/packages/e4/25/480387655407ead912e28ba3a820bc69af9adf13bcbe40b299d454ec011f/numpy-2.2.6-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:5bd4fc3ac8926b3819797a7c0e2631eb889b4118a9898c84f585a54d475b7e40", size = 5200217, upload-time = "2025-05-17T21:41:15.903Z" }, + { url = "https://files.pythonhosted.org/packages/aa/4a/6e313b5108f53dcbf3aca0c0f3e9c92f4c10ce57a0a721851f9785872895/numpy-2.2.6-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:fee4236c876c4e8369388054d02d0e9bb84821feb1a64dd59e137e6511a551f8", size = 6712014, upload-time = "2025-05-17T21:41:27.321Z" }, + { url = "https://files.pythonhosted.org/packages/b7/30/172c2d5c4be71fdf476e9de553443cf8e25feddbe185e0bd88b096915bcc/numpy-2.2.6-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1dda9c7e08dc141e0247a5b8f49cf05984955246a327d4c48bda16821947b2f", size = 14077935, upload-time = "2025-05-17T21:41:49.738Z" }, + { url = "https://files.pythonhosted.org/packages/12/fb/9e743f8d4e4d3c710902cf87af3512082ae3d43b945d5d16563f26ec251d/numpy-2.2.6-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f447e6acb680fd307f40d3da4852208af94afdfab89cf850986c3ca00562f4fa", size = 16600122, upload-time = "2025-05-17T21:42:14.046Z" }, + { url = "https://files.pythonhosted.org/packages/12/75/ee20da0e58d3a66f204f38916757e01e33a9737d0b22373b3eb5a27358f9/numpy-2.2.6-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:389d771b1623ec92636b0786bc4ae56abafad4a4c513d36a55dce14bd9ce8571", size = 15586143, upload-time = "2025-05-17T21:42:37.464Z" }, + { url = "https://files.pythonhosted.org/packages/76/95/bef5b37f29fc5e739947e9ce5179ad402875633308504a52d188302319c8/numpy-2.2.6-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8e9ace4a37db23421249ed236fdcdd457d671e25146786dfc96835cd951aa7c1", size = 18385260, upload-time = "2025-05-17T21:43:05.189Z" }, + { url = "https://files.pythonhosted.org/packages/09/04/f2f83279d287407cf36a7a8053a5abe7be3622a4363337338f2585e4afda/numpy-2.2.6-cp313-cp313t-win32.whl", hash = "sha256:038613e9fb8c72b0a41f025a7e4c3f0b7a1b5d768ece4796b674c8f3fe13efff", size = 6377225, upload-time = "2025-05-17T21:43:16.254Z" }, + { url = "https://files.pythonhosted.org/packages/67/0e/35082d13c09c02c011cf21570543d202ad929d961c02a147493cb0c2bdf5/numpy-2.2.6-cp313-cp313t-win_amd64.whl", hash = "sha256:6031dd6dfecc0cf9f668681a37648373bddd6421fff6c66ec1624eed0180ee06", size = 12771374, upload-time = "2025-05-17T21:43:35.479Z" }, + { url = "https://files.pythonhosted.org/packages/9e/3b/d94a75f4dbf1ef5d321523ecac21ef23a3cd2ac8b78ae2aac40873590229/numpy-2.2.6-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0b605b275d7bd0c640cad4e5d30fa701a8d59302e127e5f79138ad62762c3e3d", size = 21040391, upload-time = "2025-05-17T21:44:35.948Z" }, + { url = "https://files.pythonhosted.org/packages/17/f4/09b2fa1b58f0fb4f7c7963a1649c64c4d315752240377ed74d9cd878f7b5/numpy-2.2.6-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:7befc596a7dc9da8a337f79802ee8adb30a552a94f792b9c9d18c840055907db", size = 6786754, upload-time = "2025-05-17T21:44:47.446Z" }, + { url = "https://files.pythonhosted.org/packages/af/30/feba75f143bdc868a1cc3f44ccfa6c4b9ec522b36458e738cd00f67b573f/numpy-2.2.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce47521a4754c8f4593837384bd3424880629f718d87c5d44f8ed763edd63543", size = 16643476, upload-time = "2025-05-17T21:45:11.871Z" }, + { url = "https://files.pythonhosted.org/packages/37/48/ac2a9584402fb6c0cd5b5d1a91dcf176b15760130dd386bbafdbfe3640bf/numpy-2.2.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d042d24c90c41b54fd506da306759e06e568864df8ec17ccc17e9e884634fd00", size = 12812666, upload-time = "2025-05-17T21:45:31.426Z" }, +] + +[[package]] +name = "numpy" +version = "2.3.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +sdist = { url = "https://files.pythonhosted.org/packages/2e/19/d7c972dfe90a353dbd3efbbe1d14a5951de80c99c9dc1b93cd998d51dc0f/numpy-2.3.1.tar.gz", hash = "sha256:1ec9ae20a4226da374362cca3c62cd753faf2f951440b0e3b98e93c235441d2b", size = 20390372, upload-time = "2025-06-21T12:28:33.469Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b0/c7/87c64d7ab426156530676000c94784ef55676df2f13b2796f97722464124/numpy-2.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6ea9e48336a402551f52cd8f593343699003d2353daa4b72ce8d34f66b722070", size = 21199346, upload-time = "2025-06-21T11:47:47.57Z" }, + { url = "https://files.pythonhosted.org/packages/58/0e/0966c2f44beeac12af8d836e5b5f826a407cf34c45cb73ddcdfce9f5960b/numpy-2.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5ccb7336eaf0e77c1635b232c141846493a588ec9ea777a7c24d7166bb8533ae", size = 14361143, upload-time = "2025-06-21T11:48:10.766Z" }, + { url = "https://files.pythonhosted.org/packages/7d/31/6e35a247acb1bfc19226791dfc7d4c30002cd4e620e11e58b0ddf836fe52/numpy-2.3.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0bb3a4a61e1d327e035275d2a993c96fa786e4913aa089843e6a2d9dd205c66a", size = 5378989, upload-time = "2025-06-21T11:48:19.998Z" }, + { url = "https://files.pythonhosted.org/packages/b0/25/93b621219bb6f5a2d4e713a824522c69ab1f06a57cd571cda70e2e31af44/numpy-2.3.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:e344eb79dab01f1e838ebb67aab09965fb271d6da6b00adda26328ac27d4a66e", size = 6912890, upload-time = "2025-06-21T11:48:31.376Z" }, + { url = "https://files.pythonhosted.org/packages/ef/60/6b06ed98d11fb32e27fb59468b42383f3877146d3ee639f733776b6ac596/numpy-2.3.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:467db865b392168ceb1ef1ffa6f5a86e62468c43e0cfb4ab6da667ede10e58db", size = 14569032, upload-time = "2025-06-21T11:48:52.563Z" }, + { url = "https://files.pythonhosted.org/packages/75/c9/9bec03675192077467a9c7c2bdd1f2e922bd01d3a69b15c3a0fdcd8548f6/numpy-2.3.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:afed2ce4a84f6b0fc6c1ce734ff368cbf5a5e24e8954a338f3bdffa0718adffb", size = 16930354, upload-time = "2025-06-21T11:49:17.473Z" }, + { url = "https://files.pythonhosted.org/packages/6a/e2/5756a00cabcf50a3f527a0c968b2b4881c62b1379223931853114fa04cda/numpy-2.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0025048b3c1557a20bc80d06fdeb8cc7fc193721484cca82b2cfa072fec71a93", size = 15879605, upload-time = "2025-06-21T11:49:41.161Z" }, + { url = "https://files.pythonhosted.org/packages/ff/86/a471f65f0a86f1ca62dcc90b9fa46174dd48f50214e5446bc16a775646c5/numpy-2.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a5ee121b60aa509679b682819c602579e1df14a5b07fe95671c8849aad8f2115", size = 18666994, upload-time = "2025-06-21T11:50:08.516Z" }, + { url = "https://files.pythonhosted.org/packages/43/a6/482a53e469b32be6500aaf61cfafd1de7a0b0d484babf679209c3298852e/numpy-2.3.1-cp311-cp311-win32.whl", hash = "sha256:a8b740f5579ae4585831b3cf0e3b0425c667274f82a484866d2adf9570539369", size = 6603672, upload-time = "2025-06-21T11:50:19.584Z" }, + { url = "https://files.pythonhosted.org/packages/6b/fb/bb613f4122c310a13ec67585c70e14b03bfc7ebabd24f4d5138b97371d7c/numpy-2.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:d4580adadc53311b163444f877e0789f1c8861e2698f6b2a4ca852fda154f3ff", size = 13024015, upload-time = "2025-06-21T11:50:39.139Z" }, + { url = "https://files.pythonhosted.org/packages/51/58/2d842825af9a0c041aca246dc92eb725e1bc5e1c9ac89712625db0c4e11c/numpy-2.3.1-cp311-cp311-win_arm64.whl", hash = "sha256:ec0bdafa906f95adc9a0c6f26a4871fa753f25caaa0e032578a30457bff0af6a", size = 10456989, upload-time = "2025-06-21T11:50:55.616Z" }, + { url = "https://files.pythonhosted.org/packages/c6/56/71ad5022e2f63cfe0ca93559403d0edef14aea70a841d640bd13cdba578e/numpy-2.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2959d8f268f3d8ee402b04a9ec4bb7604555aeacf78b360dc4ec27f1d508177d", size = 20896664, upload-time = "2025-06-21T12:15:30.845Z" }, + { url = "https://files.pythonhosted.org/packages/25/65/2db52ba049813670f7f987cc5db6dac9be7cd95e923cc6832b3d32d87cef/numpy-2.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:762e0c0c6b56bdedfef9a8e1d4538556438288c4276901ea008ae44091954e29", size = 14131078, upload-time = "2025-06-21T12:15:52.23Z" }, + { url = "https://files.pythonhosted.org/packages/57/dd/28fa3c17b0e751047ac928c1e1b6990238faad76e9b147e585b573d9d1bd/numpy-2.3.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:867ef172a0976aaa1f1d1b63cf2090de8b636a7674607d514505fb7276ab08fc", size = 5112554, upload-time = "2025-06-21T12:16:01.434Z" }, + { url = "https://files.pythonhosted.org/packages/c9/fc/84ea0cba8e760c4644b708b6819d91784c290288c27aca916115e3311d17/numpy-2.3.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:4e602e1b8682c2b833af89ba641ad4176053aaa50f5cacda1a27004352dde943", size = 6646560, upload-time = "2025-06-21T12:16:11.895Z" }, + { url = "https://files.pythonhosted.org/packages/61/b2/512b0c2ddec985ad1e496b0bd853eeb572315c0f07cd6997473ced8f15e2/numpy-2.3.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:8e333040d069eba1652fb08962ec5b76af7f2c7bce1df7e1418c8055cf776f25", size = 14260638, upload-time = "2025-06-21T12:16:32.611Z" }, + { url = "https://files.pythonhosted.org/packages/6e/45/c51cb248e679a6c6ab14b7a8e3ead3f4a3fe7425fc7a6f98b3f147bec532/numpy-2.3.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:e7cbf5a5eafd8d230a3ce356d892512185230e4781a361229bd902ff403bc660", size = 16632729, upload-time = "2025-06-21T12:16:57.439Z" }, + { url = "https://files.pythonhosted.org/packages/e4/ff/feb4be2e5c09a3da161b412019caf47183099cbea1132fd98061808c2df2/numpy-2.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5f1b8f26d1086835f442286c1d9b64bb3974b0b1e41bb105358fd07d20872952", size = 15565330, upload-time = "2025-06-21T12:17:20.638Z" }, + { url = "https://files.pythonhosted.org/packages/bc/6d/ceafe87587101e9ab0d370e4f6e5f3f3a85b9a697f2318738e5e7e176ce3/numpy-2.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ee8340cb48c9b7a5899d1149eece41ca535513a9698098edbade2a8e7a84da77", size = 18361734, upload-time = "2025-06-21T12:17:47.938Z" }, + { url = "https://files.pythonhosted.org/packages/2b/19/0fb49a3ea088be691f040c9bf1817e4669a339d6e98579f91859b902c636/numpy-2.3.1-cp312-cp312-win32.whl", hash = "sha256:e772dda20a6002ef7061713dc1e2585bc1b534e7909b2030b5a46dae8ff077ab", size = 6320411, upload-time = "2025-06-21T12:17:58.475Z" }, + { url = "https://files.pythonhosted.org/packages/b1/3e/e28f4c1dd9e042eb57a3eb652f200225e311b608632bc727ae378623d4f8/numpy-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:cfecc7822543abdea6de08758091da655ea2210b8ffa1faf116b940693d3df76", size = 12734973, upload-time = "2025-06-21T12:18:17.601Z" }, + { url = "https://files.pythonhosted.org/packages/04/a8/8a5e9079dc722acf53522b8f8842e79541ea81835e9b5483388701421073/numpy-2.3.1-cp312-cp312-win_arm64.whl", hash = "sha256:7be91b2239af2658653c5bb6f1b8bccafaf08226a258caf78ce44710a0160d30", size = 10191491, upload-time = "2025-06-21T12:18:33.585Z" }, + { url = "https://files.pythonhosted.org/packages/d4/bd/35ad97006d8abff8631293f8ea6adf07b0108ce6fec68da3c3fcca1197f2/numpy-2.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:25a1992b0a3fdcdaec9f552ef10d8103186f5397ab45e2d25f8ac51b1a6b97e8", size = 20889381, upload-time = "2025-06-21T12:19:04.103Z" }, + { url = "https://files.pythonhosted.org/packages/f1/4f/df5923874d8095b6062495b39729178eef4a922119cee32a12ee1bd4664c/numpy-2.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7dea630156d39b02a63c18f508f85010230409db5b2927ba59c8ba4ab3e8272e", size = 14152726, upload-time = "2025-06-21T12:19:25.599Z" }, + { url = "https://files.pythonhosted.org/packages/8c/0f/a1f269b125806212a876f7efb049b06c6f8772cf0121139f97774cd95626/numpy-2.3.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:bada6058dd886061f10ea15f230ccf7dfff40572e99fef440a4a857c8728c9c0", size = 5105145, upload-time = "2025-06-21T12:19:34.782Z" }, + { url = "https://files.pythonhosted.org/packages/6d/63/a7f7fd5f375b0361682f6ffbf686787e82b7bbd561268e4f30afad2bb3c0/numpy-2.3.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:a894f3816eb17b29e4783e5873f92faf55b710c2519e5c351767c51f79d8526d", size = 6639409, upload-time = "2025-06-21T12:19:45.228Z" }, + { url = "https://files.pythonhosted.org/packages/bf/0d/1854a4121af895aab383f4aa233748f1df4671ef331d898e32426756a8a6/numpy-2.3.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:18703df6c4a4fee55fd3d6e5a253d01c5d33a295409b03fda0c86b3ca2ff41a1", size = 14257630, upload-time = "2025-06-21T12:20:06.544Z" }, + { url = "https://files.pythonhosted.org/packages/50/30/af1b277b443f2fb08acf1c55ce9d68ee540043f158630d62cef012750f9f/numpy-2.3.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:5902660491bd7a48b2ec16c23ccb9124b8abfd9583c5fdfa123fe6b421e03de1", size = 16627546, upload-time = "2025-06-21T12:20:31.002Z" }, + { url = "https://files.pythonhosted.org/packages/6e/ec/3b68220c277e463095342d254c61be8144c31208db18d3fd8ef02712bcd6/numpy-2.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:36890eb9e9d2081137bd78d29050ba63b8dab95dff7912eadf1185e80074b2a0", size = 15562538, upload-time = "2025-06-21T12:20:54.322Z" }, + { url = "https://files.pythonhosted.org/packages/77/2b/4014f2bcc4404484021c74d4c5ee8eb3de7e3f7ac75f06672f8dcf85140a/numpy-2.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a780033466159c2270531e2b8ac063704592a0bc62ec4a1b991c7c40705eb0e8", size = 18360327, upload-time = "2025-06-21T12:21:21.053Z" }, + { url = "https://files.pythonhosted.org/packages/40/8d/2ddd6c9b30fcf920837b8672f6c65590c7d92e43084c25fc65edc22e93ca/numpy-2.3.1-cp313-cp313-win32.whl", hash = "sha256:39bff12c076812595c3a306f22bfe49919c5513aa1e0e70fac756a0be7c2a2b8", size = 6312330, upload-time = "2025-06-21T12:25:07.447Z" }, + { url = "https://files.pythonhosted.org/packages/dd/c8/beaba449925988d415efccb45bf977ff8327a02f655090627318f6398c7b/numpy-2.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:8d5ee6eec45f08ce507a6570e06f2f879b374a552087a4179ea7838edbcbfa42", size = 12731565, upload-time = "2025-06-21T12:25:26.444Z" }, + { url = "https://files.pythonhosted.org/packages/0b/c3/5c0c575d7ec78c1126998071f58facfc124006635da75b090805e642c62e/numpy-2.3.1-cp313-cp313-win_arm64.whl", hash = "sha256:0c4d9e0a8368db90f93bd192bfa771ace63137c3488d198ee21dfb8e7771916e", size = 10190262, upload-time = "2025-06-21T12:25:42.196Z" }, + { url = "https://files.pythonhosted.org/packages/ea/19/a029cd335cf72f79d2644dcfc22d90f09caa86265cbbde3b5702ccef6890/numpy-2.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:b0b5397374f32ec0649dd98c652a1798192042e715df918c20672c62fb52d4b8", size = 20987593, upload-time = "2025-06-21T12:21:51.664Z" }, + { url = "https://files.pythonhosted.org/packages/25/91/8ea8894406209107d9ce19b66314194675d31761fe2cb3c84fe2eeae2f37/numpy-2.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:c5bdf2015ccfcee8253fb8be695516ac4457c743473a43290fd36eba6a1777eb", size = 14300523, upload-time = "2025-06-21T12:22:13.583Z" }, + { url = "https://files.pythonhosted.org/packages/a6/7f/06187b0066eefc9e7ce77d5f2ddb4e314a55220ad62dd0bfc9f2c44bac14/numpy-2.3.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:d70f20df7f08b90a2062c1f07737dd340adccf2068d0f1b9b3d56e2038979fee", size = 5227993, upload-time = "2025-06-21T12:22:22.53Z" }, + { url = "https://files.pythonhosted.org/packages/e8/ec/a926c293c605fa75e9cfb09f1e4840098ed46d2edaa6e2152ee35dc01ed3/numpy-2.3.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:2fb86b7e58f9ac50e1e9dd1290154107e47d1eef23a0ae9145ded06ea606f992", size = 6736652, upload-time = "2025-06-21T12:22:33.629Z" }, + { url = "https://files.pythonhosted.org/packages/e3/62/d68e52fb6fde5586650d4c0ce0b05ff3a48ad4df4ffd1b8866479d1d671d/numpy-2.3.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:23ab05b2d241f76cb883ce8b9a93a680752fbfcbd51c50eff0b88b979e471d8c", size = 14331561, upload-time = "2025-06-21T12:22:55.056Z" }, + { url = "https://files.pythonhosted.org/packages/fc/ec/b74d3f2430960044bdad6900d9f5edc2dc0fb8bf5a0be0f65287bf2cbe27/numpy-2.3.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:ce2ce9e5de4703a673e705183f64fd5da5bf36e7beddcb63a25ee2286e71ca48", size = 16693349, upload-time = "2025-06-21T12:23:20.53Z" }, + { url = "https://files.pythonhosted.org/packages/0d/15/def96774b9d7eb198ddadfcbd20281b20ebb510580419197e225f5c55c3e/numpy-2.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c4913079974eeb5c16ccfd2b1f09354b8fed7e0d6f2cab933104a09a6419b1ee", size = 15642053, upload-time = "2025-06-21T12:23:43.697Z" }, + { url = "https://files.pythonhosted.org/packages/2b/57/c3203974762a759540c6ae71d0ea2341c1fa41d84e4971a8e76d7141678a/numpy-2.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:010ce9b4f00d5c036053ca684c77441f2f2c934fd23bee058b4d6f196efd8280", size = 18434184, upload-time = "2025-06-21T12:24:10.708Z" }, + { url = "https://files.pythonhosted.org/packages/22/8a/ccdf201457ed8ac6245187850aff4ca56a79edbea4829f4e9f14d46fa9a5/numpy-2.3.1-cp313-cp313t-win32.whl", hash = "sha256:6269b9edfe32912584ec496d91b00b6d34282ca1d07eb10e82dfc780907d6c2e", size = 6440678, upload-time = "2025-06-21T12:24:21.596Z" }, + { url = "https://files.pythonhosted.org/packages/f1/7e/7f431d8bd8eb7e03d79294aed238b1b0b174b3148570d03a8a8a8f6a0da9/numpy-2.3.1-cp313-cp313t-win_amd64.whl", hash = "sha256:2a809637460e88a113e186e87f228d74ae2852a2e0c44de275263376f17b5bdc", size = 12870697, upload-time = "2025-06-21T12:24:40.644Z" }, + { url = "https://files.pythonhosted.org/packages/d4/ca/af82bf0fad4c3e573c6930ed743b5308492ff19917c7caaf2f9b6f9e2e98/numpy-2.3.1-cp313-cp313t-win_arm64.whl", hash = "sha256:eccb9a159db9aed60800187bc47a6d3451553f0e1b08b068d8b277ddfbb9b244", size = 10260376, upload-time = "2025-06-21T12:24:56.884Z" }, + { url = "https://files.pythonhosted.org/packages/e8/34/facc13b9b42ddca30498fc51f7f73c3d0f2be179943a4b4da8686e259740/numpy-2.3.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:ad506d4b09e684394c42c966ec1527f6ebc25da7f4da4b1b056606ffe446b8a3", size = 21070637, upload-time = "2025-06-21T12:26:12.518Z" }, + { url = "https://files.pythonhosted.org/packages/65/b6/41b705d9dbae04649b529fc9bd3387664c3281c7cd78b404a4efe73dcc45/numpy-2.3.1-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:ebb8603d45bc86bbd5edb0d63e52c5fd9e7945d3a503b77e486bd88dde67a19b", size = 5304087, upload-time = "2025-06-21T12:26:22.294Z" }, + { url = "https://files.pythonhosted.org/packages/7a/b4/fe3ac1902bff7a4934a22d49e1c9d71a623204d654d4cc43c6e8fe337fcb/numpy-2.3.1-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:15aa4c392ac396e2ad3d0a2680c0f0dee420f9fed14eef09bdb9450ee6dcb7b7", size = 6817588, upload-time = "2025-06-21T12:26:32.939Z" }, + { url = "https://files.pythonhosted.org/packages/ae/ee/89bedf69c36ace1ac8f59e97811c1f5031e179a37e4821c3a230bf750142/numpy-2.3.1-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c6e0bf9d1a2f50d2b65a7cf56db37c095af17b59f6c132396f7c6d5dd76484df", size = 14399010, upload-time = "2025-06-21T12:26:54.086Z" }, + { url = "https://files.pythonhosted.org/packages/15/08/e00e7070ede29b2b176165eba18d6f9784d5349be3c0c1218338e79c27fd/numpy-2.3.1-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:eabd7e8740d494ce2b4ea0ff05afa1b7b291e978c0ae075487c51e8bd93c0c68", size = 16752042, upload-time = "2025-06-21T12:27:19.018Z" }, + { url = "https://files.pythonhosted.org/packages/48/6b/1c6b515a83d5564b1698a61efa245727c8feecf308f4091f565988519d20/numpy-2.3.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:e610832418a2bc09d974cc9fecebfa51e9532d6190223bc5ef6a7402ebf3b5cb", size = 12927246, upload-time = "2025-06-21T12:27:38.618Z" }, +] + +[[package]] +name = "opencv-python" +version = "4.11.0.86" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/17/06/68c27a523103dad5837dc5b87e71285280c4f098c60e4fe8a8db6486ab09/opencv-python-4.11.0.86.tar.gz", hash = "sha256:03d60ccae62304860d232272e4a4fda93c39d595780cb40b161b310244b736a4", size = 95171956, upload-time = "2025-01-16T13:52:24.737Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/4d/53b30a2a3ac1f75f65a59eb29cf2ee7207ce64867db47036ad61743d5a23/opencv_python-4.11.0.86-cp37-abi3-macosx_13_0_arm64.whl", hash = "sha256:432f67c223f1dc2824f5e73cdfcd9db0efc8710647d4e813012195dc9122a52a", size = 37326322, upload-time = "2025-01-16T13:52:25.887Z" }, + { url = "https://files.pythonhosted.org/packages/3b/84/0a67490741867eacdfa37bc18df96e08a9d579583b419010d7f3da8ff503/opencv_python-4.11.0.86-cp37-abi3-macosx_13_0_x86_64.whl", hash = "sha256:9d05ef13d23fe97f575153558653e2d6e87103995d54e6a35db3f282fe1f9c66", size = 56723197, upload-time = "2025-01-16T13:55:21.222Z" }, + { url = "https://files.pythonhosted.org/packages/f3/bd/29c126788da65c1fb2b5fb621b7fed0ed5f9122aa22a0868c5e2c15c6d23/opencv_python-4.11.0.86-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b92ae2c8852208817e6776ba1ea0d6b1e0a1b5431e971a2a0ddd2a8cc398202", size = 42230439, upload-time = "2025-01-16T13:51:35.822Z" }, + { url = "https://files.pythonhosted.org/packages/2c/8b/90eb44a40476fa0e71e05a0283947cfd74a5d36121a11d926ad6f3193cc4/opencv_python-4.11.0.86-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b02611523803495003bd87362db3e1d2a0454a6a63025dc6658a9830570aa0d", size = 62986597, upload-time = "2025-01-16T13:52:08.836Z" }, + { url = "https://files.pythonhosted.org/packages/fb/d7/1d5941a9dde095468b288d989ff6539dd69cd429dbf1b9e839013d21b6f0/opencv_python-4.11.0.86-cp37-abi3-win32.whl", hash = "sha256:810549cb2a4aedaa84ad9a1c92fbfdfc14090e2749cedf2c1589ad8359aa169b", size = 29384337, upload-time = "2025-01-16T13:52:13.549Z" }, + { url = "https://files.pythonhosted.org/packages/a4/7d/f1c30a92854540bf789e9cd5dde7ef49bbe63f855b85a2e6b3db8135c591/opencv_python-4.11.0.86-cp37-abi3-win_amd64.whl", hash = "sha256:085ad9b77c18853ea66283e98affefe2de8cc4c1f43eda4c100cf9b2721142ec", size = 39488044, upload-time = "2025-01-16T13:52:21.928Z" }, +] + +[[package]] +name = "packaging" +version = "25.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload-time = "2025-04-19T11:48:59.673Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" }, +] + +[[package]] +name = "pandas" +version = "2.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "python-dateutil" }, + { name = "pytz" }, + { name = "tzdata" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d1/6f/75aa71f8a14267117adeeed5d21b204770189c0a0025acbdc03c337b28fc/pandas-2.3.1.tar.gz", hash = "sha256:0a95b9ac964fe83ce317827f80304d37388ea77616b1425f0ae41c9d2d0d7bb2", size = 4487493, upload-time = "2025-07-07T19:20:04.079Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c4/ca/aa97b47287221fa37a49634532e520300088e290b20d690b21ce3e448143/pandas-2.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:22c2e866f7209ebc3a8f08d75766566aae02bcc91d196935a1d9e59c7b990ac9", size = 11542731, upload-time = "2025-07-07T19:18:12.619Z" }, + { url = "https://files.pythonhosted.org/packages/80/bf/7938dddc5f01e18e573dcfb0f1b8c9357d9b5fa6ffdee6e605b92efbdff2/pandas-2.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3583d348546201aff730c8c47e49bc159833f971c2899d6097bce68b9112a4f1", size = 10790031, upload-time = "2025-07-07T19:18:16.611Z" }, + { url = "https://files.pythonhosted.org/packages/ee/2f/9af748366763b2a494fed477f88051dbf06f56053d5c00eba652697e3f94/pandas-2.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f951fbb702dacd390561e0ea45cdd8ecfa7fb56935eb3dd78e306c19104b9b0", size = 11724083, upload-time = "2025-07-07T19:18:20.512Z" }, + { url = "https://files.pythonhosted.org/packages/2c/95/79ab37aa4c25d1e7df953dde407bb9c3e4ae47d154bc0dd1692f3a6dcf8c/pandas-2.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd05b72ec02ebfb993569b4931b2e16fbb4d6ad6ce80224a3ee838387d83a191", size = 12342360, upload-time = "2025-07-07T19:18:23.194Z" }, + { url = "https://files.pythonhosted.org/packages/75/a7/d65e5d8665c12c3c6ff5edd9709d5836ec9b6f80071b7f4a718c6106e86e/pandas-2.3.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:1b916a627919a247d865aed068eb65eb91a344b13f5b57ab9f610b7716c92de1", size = 13202098, upload-time = "2025-07-07T19:18:25.558Z" }, + { url = "https://files.pythonhosted.org/packages/65/f3/4c1dbd754dbaa79dbf8b537800cb2fa1a6e534764fef50ab1f7533226c5c/pandas-2.3.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fe67dc676818c186d5a3d5425250e40f179c2a89145df477dd82945eaea89e97", size = 13837228, upload-time = "2025-07-07T19:18:28.344Z" }, + { url = "https://files.pythonhosted.org/packages/3f/d6/d7f5777162aa9b48ec3910bca5a58c9b5927cfd9cfde3aa64322f5ba4b9f/pandas-2.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:2eb789ae0274672acbd3c575b0598d213345660120a257b47b5dafdc618aec83", size = 11336561, upload-time = "2025-07-07T19:18:31.211Z" }, + { url = "https://files.pythonhosted.org/packages/76/1c/ccf70029e927e473a4476c00e0d5b32e623bff27f0402d0a92b7fc29bb9f/pandas-2.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2b0540963d83431f5ce8870ea02a7430adca100cec8a050f0811f8e31035541b", size = 11566608, upload-time = "2025-07-07T19:18:33.86Z" }, + { url = "https://files.pythonhosted.org/packages/ec/d3/3c37cb724d76a841f14b8f5fe57e5e3645207cc67370e4f84717e8bb7657/pandas-2.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fe7317f578c6a153912bd2292f02e40c1d8f253e93c599e82620c7f69755c74f", size = 10823181, upload-time = "2025-07-07T19:18:36.151Z" }, + { url = "https://files.pythonhosted.org/packages/8a/4c/367c98854a1251940edf54a4df0826dcacfb987f9068abf3e3064081a382/pandas-2.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6723a27ad7b244c0c79d8e7007092d7c8f0f11305770e2f4cd778b3ad5f9f85", size = 11793570, upload-time = "2025-07-07T19:18:38.385Z" }, + { url = "https://files.pythonhosted.org/packages/07/5f/63760ff107bcf5146eee41b38b3985f9055e710a72fdd637b791dea3495c/pandas-2.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3462c3735fe19f2638f2c3a40bd94ec2dc5ba13abbb032dd2fa1f540a075509d", size = 12378887, upload-time = "2025-07-07T19:18:41.284Z" }, + { url = "https://files.pythonhosted.org/packages/15/53/f31a9b4dfe73fe4711c3a609bd8e60238022f48eacedc257cd13ae9327a7/pandas-2.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:98bcc8b5bf7afed22cc753a28bc4d9e26e078e777066bc53fac7904ddef9a678", size = 13230957, upload-time = "2025-07-07T19:18:44.187Z" }, + { url = "https://files.pythonhosted.org/packages/e0/94/6fce6bf85b5056d065e0a7933cba2616dcb48596f7ba3c6341ec4bcc529d/pandas-2.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4d544806b485ddf29e52d75b1f559142514e60ef58a832f74fb38e48d757b299", size = 13883883, upload-time = "2025-07-07T19:18:46.498Z" }, + { url = "https://files.pythonhosted.org/packages/c8/7b/bdcb1ed8fccb63d04bdb7635161d0ec26596d92c9d7a6cce964e7876b6c1/pandas-2.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:b3cd4273d3cb3707b6fffd217204c52ed92859533e31dc03b7c5008aa933aaab", size = 11340212, upload-time = "2025-07-07T19:18:49.293Z" }, + { url = "https://files.pythonhosted.org/packages/46/de/b8445e0f5d217a99fe0eeb2f4988070908979bec3587c0633e5428ab596c/pandas-2.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:689968e841136f9e542020698ee1c4fbe9caa2ed2213ae2388dc7b81721510d3", size = 11588172, upload-time = "2025-07-07T19:18:52.054Z" }, + { url = "https://files.pythonhosted.org/packages/1e/e0/801cdb3564e65a5ac041ab99ea6f1d802a6c325bb6e58c79c06a3f1cd010/pandas-2.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:025e92411c16cbe5bb2a4abc99732a6b132f439b8aab23a59fa593eb00704232", size = 10717365, upload-time = "2025-07-07T19:18:54.785Z" }, + { url = "https://files.pythonhosted.org/packages/51/a5/c76a8311833c24ae61a376dbf360eb1b1c9247a5d9c1e8b356563b31b80c/pandas-2.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b7ff55f31c4fcb3e316e8f7fa194566b286d6ac430afec0d461163312c5841e", size = 11280411, upload-time = "2025-07-07T19:18:57.045Z" }, + { url = "https://files.pythonhosted.org/packages/da/01/e383018feba0a1ead6cf5fe8728e5d767fee02f06a3d800e82c489e5daaf/pandas-2.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7dcb79bf373a47d2a40cf7232928eb7540155abbc460925c2c96d2d30b006eb4", size = 11988013, upload-time = "2025-07-07T19:18:59.771Z" }, + { url = "https://files.pythonhosted.org/packages/5b/14/cec7760d7c9507f11c97d64f29022e12a6cc4fc03ac694535e89f88ad2ec/pandas-2.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:56a342b231e8862c96bdb6ab97170e203ce511f4d0429589c8ede1ee8ece48b8", size = 12767210, upload-time = "2025-07-07T19:19:02.944Z" }, + { url = "https://files.pythonhosted.org/packages/50/b9/6e2d2c6728ed29fb3d4d4d302504fb66f1a543e37eb2e43f352a86365cdf/pandas-2.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ca7ed14832bce68baef331f4d7f294411bed8efd032f8109d690df45e00c4679", size = 13440571, upload-time = "2025-07-07T19:19:06.82Z" }, + { url = "https://files.pythonhosted.org/packages/80/a5/3a92893e7399a691bad7664d977cb5e7c81cf666c81f89ea76ba2bff483d/pandas-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:ac942bfd0aca577bef61f2bc8da8147c4ef6879965ef883d8e8d5d2dc3e744b8", size = 10987601, upload-time = "2025-07-07T19:19:09.589Z" }, + { url = "https://files.pythonhosted.org/packages/32/ed/ff0a67a2c5505e1854e6715586ac6693dd860fbf52ef9f81edee200266e7/pandas-2.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9026bd4a80108fac2239294a15ef9003c4ee191a0f64b90f170b40cfb7cf2d22", size = 11531393, upload-time = "2025-07-07T19:19:12.245Z" }, + { url = "https://files.pythonhosted.org/packages/c7/db/d8f24a7cc9fb0972adab0cc80b6817e8bef888cfd0024eeb5a21c0bb5c4a/pandas-2.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6de8547d4fdb12421e2d047a2c446c623ff4c11f47fddb6b9169eb98ffba485a", size = 10668750, upload-time = "2025-07-07T19:19:14.612Z" }, + { url = "https://files.pythonhosted.org/packages/0f/b0/80f6ec783313f1e2356b28b4fd8d2148c378370045da918c73145e6aab50/pandas-2.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:782647ddc63c83133b2506912cc6b108140a38a37292102aaa19c81c83db2928", size = 11342004, upload-time = "2025-07-07T19:19:16.857Z" }, + { url = "https://files.pythonhosted.org/packages/e9/e2/20a317688435470872885e7fc8f95109ae9683dec7c50be29b56911515a5/pandas-2.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ba6aff74075311fc88504b1db890187a3cd0f887a5b10f5525f8e2ef55bfdb9", size = 12050869, upload-time = "2025-07-07T19:19:19.265Z" }, + { url = "https://files.pythonhosted.org/packages/55/79/20d746b0a96c67203a5bee5fb4e00ac49c3e8009a39e1f78de264ecc5729/pandas-2.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e5635178b387bd2ba4ac040f82bc2ef6e6b500483975c4ebacd34bec945fda12", size = 12750218, upload-time = "2025-07-07T19:19:21.547Z" }, + { url = "https://files.pythonhosted.org/packages/7c/0f/145c8b41e48dbf03dd18fdd7f24f8ba95b8254a97a3379048378f33e7838/pandas-2.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6f3bf5ec947526106399a9e1d26d40ee2b259c66422efdf4de63c848492d91bb", size = 13416763, upload-time = "2025-07-07T19:19:23.939Z" }, + { url = "https://files.pythonhosted.org/packages/b2/c0/54415af59db5cdd86a3d3bf79863e8cc3fa9ed265f0745254061ac09d5f2/pandas-2.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:1c78cf43c8fde236342a1cb2c34bcff89564a7bfed7e474ed2fffa6aed03a956", size = 10987482, upload-time = "2025-07-07T19:19:42.699Z" }, + { url = "https://files.pythonhosted.org/packages/48/64/2fd2e400073a1230e13b8cd604c9bc95d9e3b962e5d44088ead2e8f0cfec/pandas-2.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8dfc17328e8da77be3cf9f47509e5637ba8f137148ed0e9b5241e1baf526e20a", size = 12029159, upload-time = "2025-07-07T19:19:26.362Z" }, + { url = "https://files.pythonhosted.org/packages/d8/0a/d84fd79b0293b7ef88c760d7dca69828d867c89b6d9bc52d6a27e4d87316/pandas-2.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:ec6c851509364c59a5344458ab935e6451b31b818be467eb24b0fe89bd05b6b9", size = 11393287, upload-time = "2025-07-07T19:19:29.157Z" }, + { url = "https://files.pythonhosted.org/packages/50/ae/ff885d2b6e88f3c7520bb74ba319268b42f05d7e583b5dded9837da2723f/pandas-2.3.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:911580460fc4884d9b05254b38a6bfadddfcc6aaef856fb5859e7ca202e45275", size = 11309381, upload-time = "2025-07-07T19:19:31.436Z" }, + { url = "https://files.pythonhosted.org/packages/85/86/1fa345fc17caf5d7780d2699985c03dbe186c68fee00b526813939062bb0/pandas-2.3.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f4d6feeba91744872a600e6edbbd5b033005b431d5ae8379abee5bcfa479fab", size = 11883998, upload-time = "2025-07-07T19:19:34.267Z" }, + { url = "https://files.pythonhosted.org/packages/81/aa/e58541a49b5e6310d89474333e994ee57fea97c8aaa8fc7f00b873059bbf/pandas-2.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:fe37e757f462d31a9cd7580236a82f353f5713a80e059a29753cf938c6775d96", size = 12704705, upload-time = "2025-07-07T19:19:36.856Z" }, + { url = "https://files.pythonhosted.org/packages/d5/f9/07086f5b0f2a19872554abeea7658200824f5835c58a106fa8f2ae96a46c/pandas-2.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5db9637dbc24b631ff3707269ae4559bce4b7fd75c1c4d7e13f40edc42df4444", size = 13189044, upload-time = "2025-07-07T19:19:39.999Z" }, + { url = "https://files.pythonhosted.org/packages/6e/21/ecf2df680982616459409b09962a8c2065330c7151dc6538069f3b634acf/pandas-2.3.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4645f770f98d656f11c69e81aeb21c6fca076a44bed3dcbb9396a4311bc7f6d8", size = 11567275, upload-time = "2025-07-07T19:19:45.152Z" }, + { url = "https://files.pythonhosted.org/packages/1e/1a/dcb50e44b75419e96b276c9fb023b0f147b3c411be1cd517492aa2a184d4/pandas-2.3.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:342e59589cc454aaff7484d75b816a433350b3d7964d7847327edda4d532a2e3", size = 10811488, upload-time = "2025-07-07T19:19:47.797Z" }, + { url = "https://files.pythonhosted.org/packages/2d/55/66cd2b679f6a27398380eac7574bc24746128f74626a3c02b978ea00e5ce/pandas-2.3.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d12f618d80379fde6af007f65f0c25bd3e40251dbd1636480dfffce2cf1e6da", size = 11763000, upload-time = "2025-07-07T19:19:50.83Z" }, + { url = "https://files.pythonhosted.org/packages/ae/1c/5b9b263c80fd5e231b77df6f78cd7426d1d4ad3a4e858e85b7b3d93d0e9c/pandas-2.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd71c47a911da120d72ef173aeac0bf5241423f9bfea57320110a978457e069e", size = 12361395, upload-time = "2025-07-07T19:19:53.714Z" }, + { url = "https://files.pythonhosted.org/packages/f7/74/7e817b31413fbb96366ea327d43d1926a9c48c58074e27e094e2839a0e36/pandas-2.3.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:09e3b1587f0f3b0913e21e8b32c3119174551deb4a4eba4a89bc7377947977e7", size = 13225086, upload-time = "2025-07-07T19:19:56.378Z" }, + { url = "https://files.pythonhosted.org/packages/1f/0f/bc0a44b47eba2f22ae4235719a573d552ef7ad76ed3ea39ae62d554e040b/pandas-2.3.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2323294c73ed50f612f67e2bf3ae45aea04dce5690778e08a09391897f35ff88", size = 13871698, upload-time = "2025-07-07T19:19:58.854Z" }, + { url = "https://files.pythonhosted.org/packages/fa/cb/6c32f8fadefa4314b740fbe8f74f6a02423bd1549e7c930826df35ac3c1b/pandas-2.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:b4b0de34dc8499c2db34000ef8baad684cfa4cbd836ecee05f323ebfba348c7d", size = 11357186, upload-time = "2025-07-07T19:20:01.475Z" }, +] + +[[package]] +name = "paramiko" +version = "3.5.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "bcrypt" }, + { name = "cryptography" }, + { name = "pynacl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7d/15/ad6ce226e8138315f2451c2aeea985bf35ee910afb477bae7477dc3a8f3b/paramiko-3.5.1.tar.gz", hash = "sha256:b2c665bc45b2b215bd7d7f039901b14b067da00f3a11e6640995fd58f2664822", size = 1566110, upload-time = "2025-02-04T02:37:59.783Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/15/f8/c7bd0ef12954a81a1d3cea60a13946bd9a49a0036a5927770c461eade7ae/paramiko-3.5.1-py3-none-any.whl", hash = "sha256:43b9a0501fc2b5e70680388d9346cf252cfb7d00b0667c39e80eb43a408b8f61", size = 227298, upload-time = "2025-02-04T02:37:57.672Z" }, +] + +[[package]] +name = "parso" +version = "0.8.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/66/94/68e2e17afaa9169cf6412ab0f28623903be73d1b32e208d9e8e541bb086d/parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d", size = 400609, upload-time = "2024-04-05T09:43:55.897Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c6/ac/dac4a63f978e4dcb3c6d3a78c4d8e0192a113d288502a1216950c41b1027/parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18", size = 103650, upload-time = "2024-04-05T09:43:53.299Z" }, +] + +[[package]] +name = "pexpect" +version = "4.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ptyprocess" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450, upload-time = "2023-11-25T09:07:26.339Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772, upload-time = "2023-11-25T06:56:14.81Z" }, +] + +[[package]] +name = "pillow" +version = "11.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/0d/d0d6dea55cd152ce3d6767bb38a8fc10e33796ba4ba210cbab9354b6d238/pillow-11.3.0.tar.gz", hash = "sha256:3828ee7586cd0b2091b6209e5ad53e20d0649bbe87164a459d0676e035e8f523", size = 47113069, upload-time = "2025-07-01T09:16:30.666Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4c/5d/45a3553a253ac8763f3561371432a90bdbe6000fbdcf1397ffe502aa206c/pillow-11.3.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:1b9c17fd4ace828b3003dfd1e30bff24863e0eb59b535e8f80194d9cc7ecf860", size = 5316554, upload-time = "2025-07-01T09:13:39.342Z" }, + { url = "https://files.pythonhosted.org/packages/7c/c8/67c12ab069ef586a25a4a79ced553586748fad100c77c0ce59bb4983ac98/pillow-11.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:65dc69160114cdd0ca0f35cb434633c75e8e7fad4cf855177a05bf38678f73ad", size = 4686548, upload-time = "2025-07-01T09:13:41.835Z" }, + { url = "https://files.pythonhosted.org/packages/2f/bd/6741ebd56263390b382ae4c5de02979af7f8bd9807346d068700dd6d5cf9/pillow-11.3.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7107195ddc914f656c7fc8e4a5e1c25f32e9236ea3ea860f257b0436011fddd0", size = 5859742, upload-time = "2025-07-03T13:09:47.439Z" }, + { url = "https://files.pythonhosted.org/packages/ca/0b/c412a9e27e1e6a829e6ab6c2dca52dd563efbedf4c9c6aa453d9a9b77359/pillow-11.3.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cc3e831b563b3114baac7ec2ee86819eb03caa1a2cef0b481a5675b59c4fe23b", size = 7633087, upload-time = "2025-07-03T13:09:51.796Z" }, + { url = "https://files.pythonhosted.org/packages/59/9d/9b7076aaf30f5dd17e5e5589b2d2f5a5d7e30ff67a171eb686e4eecc2adf/pillow-11.3.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f1f182ebd2303acf8c380a54f615ec883322593320a9b00438eb842c1f37ae50", size = 5963350, upload-time = "2025-07-01T09:13:43.865Z" }, + { url = "https://files.pythonhosted.org/packages/f0/16/1a6bf01fb622fb9cf5c91683823f073f053005c849b1f52ed613afcf8dae/pillow-11.3.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4445fa62e15936a028672fd48c4c11a66d641d2c05726c7ec1f8ba6a572036ae", size = 6631840, upload-time = "2025-07-01T09:13:46.161Z" }, + { url = "https://files.pythonhosted.org/packages/7b/e6/6ff7077077eb47fde78739e7d570bdcd7c10495666b6afcd23ab56b19a43/pillow-11.3.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:71f511f6b3b91dd543282477be45a033e4845a40278fa8dcdbfdb07109bf18f9", size = 6074005, upload-time = "2025-07-01T09:13:47.829Z" }, + { url = "https://files.pythonhosted.org/packages/c3/3a/b13f36832ea6d279a697231658199e0a03cd87ef12048016bdcc84131601/pillow-11.3.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:040a5b691b0713e1f6cbe222e0f4f74cd233421e105850ae3b3c0ceda520f42e", size = 6708372, upload-time = "2025-07-01T09:13:52.145Z" }, + { url = "https://files.pythonhosted.org/packages/6c/e4/61b2e1a7528740efbc70b3d581f33937e38e98ef3d50b05007267a55bcb2/pillow-11.3.0-cp310-cp310-win32.whl", hash = "sha256:89bd777bc6624fe4115e9fac3352c79ed60f3bb18651420635f26e643e3dd1f6", size = 6277090, upload-time = "2025-07-01T09:13:53.915Z" }, + { url = "https://files.pythonhosted.org/packages/a9/d3/60c781c83a785d6afbd6a326ed4d759d141de43aa7365725cbcd65ce5e54/pillow-11.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:19d2ff547c75b8e3ff46f4d9ef969a06c30ab2d4263a9e287733aa8b2429ce8f", size = 6985988, upload-time = "2025-07-01T09:13:55.699Z" }, + { url = "https://files.pythonhosted.org/packages/9f/28/4f4a0203165eefb3763939c6789ba31013a2e90adffb456610f30f613850/pillow-11.3.0-cp310-cp310-win_arm64.whl", hash = "sha256:819931d25e57b513242859ce1876c58c59dc31587847bf74cfe06b2e0cb22d2f", size = 2422899, upload-time = "2025-07-01T09:13:57.497Z" }, + { url = "https://files.pythonhosted.org/packages/db/26/77f8ed17ca4ffd60e1dcd220a6ec6d71210ba398cfa33a13a1cd614c5613/pillow-11.3.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:1cd110edf822773368b396281a2293aeb91c90a2db00d78ea43e7e861631b722", size = 5316531, upload-time = "2025-07-01T09:13:59.203Z" }, + { url = "https://files.pythonhosted.org/packages/cb/39/ee475903197ce709322a17a866892efb560f57900d9af2e55f86db51b0a5/pillow-11.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9c412fddd1b77a75aa904615ebaa6001f169b26fd467b4be93aded278266b288", size = 4686560, upload-time = "2025-07-01T09:14:01.101Z" }, + { url = "https://files.pythonhosted.org/packages/d5/90/442068a160fd179938ba55ec8c97050a612426fae5ec0a764e345839f76d/pillow-11.3.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7d1aa4de119a0ecac0a34a9c8bde33f34022e2e8f99104e47a3ca392fd60e37d", size = 5870978, upload-time = "2025-07-03T13:09:55.638Z" }, + { url = "https://files.pythonhosted.org/packages/13/92/dcdd147ab02daf405387f0218dcf792dc6dd5b14d2573d40b4caeef01059/pillow-11.3.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:91da1d88226663594e3f6b4b8c3c8d85bd504117d043740a8e0ec449087cc494", size = 7641168, upload-time = "2025-07-03T13:10:00.37Z" }, + { url = "https://files.pythonhosted.org/packages/6e/db/839d6ba7fd38b51af641aa904e2960e7a5644d60ec754c046b7d2aee00e5/pillow-11.3.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:643f189248837533073c405ec2f0bb250ba54598cf80e8c1e043381a60632f58", size = 5973053, upload-time = "2025-07-01T09:14:04.491Z" }, + { url = "https://files.pythonhosted.org/packages/f2/2f/d7675ecae6c43e9f12aa8d58b6012683b20b6edfbdac7abcb4e6af7a3784/pillow-11.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:106064daa23a745510dabce1d84f29137a37224831d88eb4ce94bb187b1d7e5f", size = 6640273, upload-time = "2025-07-01T09:14:06.235Z" }, + { url = "https://files.pythonhosted.org/packages/45/ad/931694675ede172e15b2ff03c8144a0ddaea1d87adb72bb07655eaffb654/pillow-11.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cd8ff254faf15591e724dc7c4ddb6bf4793efcbe13802a4ae3e863cd300b493e", size = 6082043, upload-time = "2025-07-01T09:14:07.978Z" }, + { url = "https://files.pythonhosted.org/packages/3a/04/ba8f2b11fc80d2dd462d7abec16351b45ec99cbbaea4387648a44190351a/pillow-11.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:932c754c2d51ad2b2271fd01c3d121daaa35e27efae2a616f77bf164bc0b3e94", size = 6715516, upload-time = "2025-07-01T09:14:10.233Z" }, + { url = "https://files.pythonhosted.org/packages/48/59/8cd06d7f3944cc7d892e8533c56b0acb68399f640786313275faec1e3b6f/pillow-11.3.0-cp311-cp311-win32.whl", hash = "sha256:b4b8f3efc8d530a1544e5962bd6b403d5f7fe8b9e08227c6b255f98ad82b4ba0", size = 6274768, upload-time = "2025-07-01T09:14:11.921Z" }, + { url = "https://files.pythonhosted.org/packages/f1/cc/29c0f5d64ab8eae20f3232da8f8571660aa0ab4b8f1331da5c2f5f9a938e/pillow-11.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:1a992e86b0dd7aeb1f053cd506508c0999d710a8f07b4c791c63843fc6a807ac", size = 6986055, upload-time = "2025-07-01T09:14:13.623Z" }, + { url = "https://files.pythonhosted.org/packages/c6/df/90bd886fabd544c25addd63e5ca6932c86f2b701d5da6c7839387a076b4a/pillow-11.3.0-cp311-cp311-win_arm64.whl", hash = "sha256:30807c931ff7c095620fe04448e2c2fc673fcbb1ffe2a7da3fb39613489b1ddd", size = 2423079, upload-time = "2025-07-01T09:14:15.268Z" }, + { url = "https://files.pythonhosted.org/packages/40/fe/1bc9b3ee13f68487a99ac9529968035cca2f0a51ec36892060edcc51d06a/pillow-11.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdae223722da47b024b867c1ea0be64e0df702c5e0a60e27daad39bf960dd1e4", size = 5278800, upload-time = "2025-07-01T09:14:17.648Z" }, + { url = "https://files.pythonhosted.org/packages/2c/32/7e2ac19b5713657384cec55f89065fb306b06af008cfd87e572035b27119/pillow-11.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:921bd305b10e82b4d1f5e802b6850677f965d8394203d182f078873851dada69", size = 4686296, upload-time = "2025-07-01T09:14:19.828Z" }, + { url = "https://files.pythonhosted.org/packages/8e/1e/b9e12bbe6e4c2220effebc09ea0923a07a6da1e1f1bfbc8d7d29a01ce32b/pillow-11.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:eb76541cba2f958032d79d143b98a3a6b3ea87f0959bbe256c0b5e416599fd5d", size = 5871726, upload-time = "2025-07-03T13:10:04.448Z" }, + { url = "https://files.pythonhosted.org/packages/8d/33/e9200d2bd7ba00dc3ddb78df1198a6e80d7669cce6c2bdbeb2530a74ec58/pillow-11.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:67172f2944ebba3d4a7b54f2e95c786a3a50c21b88456329314caaa28cda70f6", size = 7644652, upload-time = "2025-07-03T13:10:10.391Z" }, + { url = "https://files.pythonhosted.org/packages/41/f1/6f2427a26fc683e00d985bc391bdd76d8dd4e92fac33d841127eb8fb2313/pillow-11.3.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:97f07ed9f56a3b9b5f49d3661dc9607484e85c67e27f3e8be2c7d28ca032fec7", size = 5977787, upload-time = "2025-07-01T09:14:21.63Z" }, + { url = "https://files.pythonhosted.org/packages/e4/c9/06dd4a38974e24f932ff5f98ea3c546ce3f8c995d3f0985f8e5ba48bba19/pillow-11.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:676b2815362456b5b3216b4fd5bd89d362100dc6f4945154ff172e206a22c024", size = 6645236, upload-time = "2025-07-01T09:14:23.321Z" }, + { url = "https://files.pythonhosted.org/packages/40/e7/848f69fb79843b3d91241bad658e9c14f39a32f71a301bcd1d139416d1be/pillow-11.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3e184b2f26ff146363dd07bde8b711833d7b0202e27d13540bfe2e35a323a809", size = 6086950, upload-time = "2025-07-01T09:14:25.237Z" }, + { url = "https://files.pythonhosted.org/packages/0b/1a/7cff92e695a2a29ac1958c2a0fe4c0b2393b60aac13b04a4fe2735cad52d/pillow-11.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6be31e3fc9a621e071bc17bb7de63b85cbe0bfae91bb0363c893cbe67247780d", size = 6723358, upload-time = "2025-07-01T09:14:27.053Z" }, + { url = "https://files.pythonhosted.org/packages/26/7d/73699ad77895f69edff76b0f332acc3d497f22f5d75e5360f78cbcaff248/pillow-11.3.0-cp312-cp312-win32.whl", hash = "sha256:7b161756381f0918e05e7cb8a371fff367e807770f8fe92ecb20d905d0e1c149", size = 6275079, upload-time = "2025-07-01T09:14:30.104Z" }, + { url = "https://files.pythonhosted.org/packages/8c/ce/e7dfc873bdd9828f3b6e5c2bbb74e47a98ec23cc5c74fc4e54462f0d9204/pillow-11.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:a6444696fce635783440b7f7a9fc24b3ad10a9ea3f0ab66c5905be1c19ccf17d", size = 6986324, upload-time = "2025-07-01T09:14:31.899Z" }, + { url = "https://files.pythonhosted.org/packages/16/8f/b13447d1bf0b1f7467ce7d86f6e6edf66c0ad7cf44cf5c87a37f9bed9936/pillow-11.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:2aceea54f957dd4448264f9bf40875da0415c83eb85f55069d89c0ed436e3542", size = 2423067, upload-time = "2025-07-01T09:14:33.709Z" }, + { url = "https://files.pythonhosted.org/packages/1e/93/0952f2ed8db3a5a4c7a11f91965d6184ebc8cd7cbb7941a260d5f018cd2d/pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:1c627742b539bba4309df89171356fcb3cc5a9178355b2727d1b74a6cf155fbd", size = 2128328, upload-time = "2025-07-01T09:14:35.276Z" }, + { url = "https://files.pythonhosted.org/packages/4b/e8/100c3d114b1a0bf4042f27e0f87d2f25e857e838034e98ca98fe7b8c0a9c/pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:30b7c02f3899d10f13d7a48163c8969e4e653f8b43416d23d13d1bbfdc93b9f8", size = 2170652, upload-time = "2025-07-01T09:14:37.203Z" }, + { url = "https://files.pythonhosted.org/packages/aa/86/3f758a28a6e381758545f7cdb4942e1cb79abd271bea932998fc0db93cb6/pillow-11.3.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:7859a4cc7c9295f5838015d8cc0a9c215b77e43d07a25e460f35cf516df8626f", size = 2227443, upload-time = "2025-07-01T09:14:39.344Z" }, + { url = "https://files.pythonhosted.org/packages/01/f4/91d5b3ffa718df2f53b0dc109877993e511f4fd055d7e9508682e8aba092/pillow-11.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ec1ee50470b0d050984394423d96325b744d55c701a439d2bd66089bff963d3c", size = 5278474, upload-time = "2025-07-01T09:14:41.843Z" }, + { url = "https://files.pythonhosted.org/packages/f9/0e/37d7d3eca6c879fbd9dba21268427dffda1ab00d4eb05b32923d4fbe3b12/pillow-11.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7db51d222548ccfd274e4572fdbf3e810a5e66b00608862f947b163e613b67dd", size = 4686038, upload-time = "2025-07-01T09:14:44.008Z" }, + { url = "https://files.pythonhosted.org/packages/ff/b0/3426e5c7f6565e752d81221af9d3676fdbb4f352317ceafd42899aaf5d8a/pillow-11.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2d6fcc902a24ac74495df63faad1884282239265c6839a0a6416d33faedfae7e", size = 5864407, upload-time = "2025-07-03T13:10:15.628Z" }, + { url = "https://files.pythonhosted.org/packages/fc/c1/c6c423134229f2a221ee53f838d4be9d82bab86f7e2f8e75e47b6bf6cd77/pillow-11.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f0f5d8f4a08090c6d6d578351a2b91acf519a54986c055af27e7a93feae6d3f1", size = 7639094, upload-time = "2025-07-03T13:10:21.857Z" }, + { url = "https://files.pythonhosted.org/packages/ba/c9/09e6746630fe6372c67c648ff9deae52a2bc20897d51fa293571977ceb5d/pillow-11.3.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c37d8ba9411d6003bba9e518db0db0c58a680ab9fe5179f040b0463644bc9805", size = 5973503, upload-time = "2025-07-01T09:14:45.698Z" }, + { url = "https://files.pythonhosted.org/packages/d5/1c/a2a29649c0b1983d3ef57ee87a66487fdeb45132df66ab30dd37f7dbe162/pillow-11.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:13f87d581e71d9189ab21fe0efb5a23e9f28552d5be6979e84001d3b8505abe8", size = 6642574, upload-time = "2025-07-01T09:14:47.415Z" }, + { url = "https://files.pythonhosted.org/packages/36/de/d5cc31cc4b055b6c6fd990e3e7f0f8aaf36229a2698501bcb0cdf67c7146/pillow-11.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:023f6d2d11784a465f09fd09a34b150ea4672e85fb3d05931d89f373ab14abb2", size = 6084060, upload-time = "2025-07-01T09:14:49.636Z" }, + { url = "https://files.pythonhosted.org/packages/d5/ea/502d938cbaeec836ac28a9b730193716f0114c41325db428e6b280513f09/pillow-11.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:45dfc51ac5975b938e9809451c51734124e73b04d0f0ac621649821a63852e7b", size = 6721407, upload-time = "2025-07-01T09:14:51.962Z" }, + { url = "https://files.pythonhosted.org/packages/45/9c/9c5e2a73f125f6cbc59cc7087c8f2d649a7ae453f83bd0362ff7c9e2aee2/pillow-11.3.0-cp313-cp313-win32.whl", hash = "sha256:a4d336baed65d50d37b88ca5b60c0fa9d81e3a87d4a7930d3880d1624d5b31f3", size = 6273841, upload-time = "2025-07-01T09:14:54.142Z" }, + { url = "https://files.pythonhosted.org/packages/23/85/397c73524e0cd212067e0c969aa245b01d50183439550d24d9f55781b776/pillow-11.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:0bce5c4fd0921f99d2e858dc4d4d64193407e1b99478bc5cacecba2311abde51", size = 6978450, upload-time = "2025-07-01T09:14:56.436Z" }, + { url = "https://files.pythonhosted.org/packages/17/d2/622f4547f69cd173955194b78e4d19ca4935a1b0f03a302d655c9f6aae65/pillow-11.3.0-cp313-cp313-win_arm64.whl", hash = "sha256:1904e1264881f682f02b7f8167935cce37bc97db457f8e7849dc3a6a52b99580", size = 2423055, upload-time = "2025-07-01T09:14:58.072Z" }, + { url = "https://files.pythonhosted.org/packages/dd/80/a8a2ac21dda2e82480852978416cfacd439a4b490a501a288ecf4fe2532d/pillow-11.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4c834a3921375c48ee6b9624061076bc0a32a60b5532b322cc0ea64e639dd50e", size = 5281110, upload-time = "2025-07-01T09:14:59.79Z" }, + { url = "https://files.pythonhosted.org/packages/44/d6/b79754ca790f315918732e18f82a8146d33bcd7f4494380457ea89eb883d/pillow-11.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5e05688ccef30ea69b9317a9ead994b93975104a677a36a8ed8106be9260aa6d", size = 4689547, upload-time = "2025-07-01T09:15:01.648Z" }, + { url = "https://files.pythonhosted.org/packages/49/20/716b8717d331150cb00f7fdd78169c01e8e0c219732a78b0e59b6bdb2fd6/pillow-11.3.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1019b04af07fc0163e2810167918cb5add8d74674b6267616021ab558dc98ced", size = 5901554, upload-time = "2025-07-03T13:10:27.018Z" }, + { url = "https://files.pythonhosted.org/packages/74/cf/a9f3a2514a65bb071075063a96f0a5cf949c2f2fce683c15ccc83b1c1cab/pillow-11.3.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f944255db153ebb2b19c51fe85dd99ef0ce494123f21b9db4877ffdfc5590c7c", size = 7669132, upload-time = "2025-07-03T13:10:33.01Z" }, + { url = "https://files.pythonhosted.org/packages/98/3c/da78805cbdbee9cb43efe8261dd7cc0b4b93f2ac79b676c03159e9db2187/pillow-11.3.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1f85acb69adf2aaee8b7da124efebbdb959a104db34d3a2cb0f3793dbae422a8", size = 6005001, upload-time = "2025-07-01T09:15:03.365Z" }, + { url = "https://files.pythonhosted.org/packages/6c/fa/ce044b91faecf30e635321351bba32bab5a7e034c60187fe9698191aef4f/pillow-11.3.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:05f6ecbeff5005399bb48d198f098a9b4b6bdf27b8487c7f38ca16eeb070cd59", size = 6668814, upload-time = "2025-07-01T09:15:05.655Z" }, + { url = "https://files.pythonhosted.org/packages/7b/51/90f9291406d09bf93686434f9183aba27b831c10c87746ff49f127ee80cb/pillow-11.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a7bc6e6fd0395bc052f16b1a8670859964dbd7003bd0af2ff08342eb6e442cfe", size = 6113124, upload-time = "2025-07-01T09:15:07.358Z" }, + { url = "https://files.pythonhosted.org/packages/cd/5a/6fec59b1dfb619234f7636d4157d11fb4e196caeee220232a8d2ec48488d/pillow-11.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:83e1b0161c9d148125083a35c1c5a89db5b7054834fd4387499e06552035236c", size = 6747186, upload-time = "2025-07-01T09:15:09.317Z" }, + { url = "https://files.pythonhosted.org/packages/49/6b/00187a044f98255225f172de653941e61da37104a9ea60e4f6887717e2b5/pillow-11.3.0-cp313-cp313t-win32.whl", hash = "sha256:2a3117c06b8fb646639dce83694f2f9eac405472713fcb1ae887469c0d4f6788", size = 6277546, upload-time = "2025-07-01T09:15:11.311Z" }, + { url = "https://files.pythonhosted.org/packages/e8/5c/6caaba7e261c0d75bab23be79f1d06b5ad2a2ae49f028ccec801b0e853d6/pillow-11.3.0-cp313-cp313t-win_amd64.whl", hash = "sha256:857844335c95bea93fb39e0fa2726b4d9d758850b34075a7e3ff4f4fa3aa3b31", size = 6985102, upload-time = "2025-07-01T09:15:13.164Z" }, + { url = "https://files.pythonhosted.org/packages/f3/7e/b623008460c09a0cb38263c93b828c666493caee2eb34ff67f778b87e58c/pillow-11.3.0-cp313-cp313t-win_arm64.whl", hash = "sha256:8797edc41f3e8536ae4b10897ee2f637235c94f27404cac7297f7b607dd0716e", size = 2424803, upload-time = "2025-07-01T09:15:15.695Z" }, + { url = "https://files.pythonhosted.org/packages/73/f4/04905af42837292ed86cb1b1dabe03dce1edc008ef14c473c5c7e1443c5d/pillow-11.3.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:d9da3df5f9ea2a89b81bb6087177fb1f4d1c7146d583a3fe5c672c0d94e55e12", size = 5278520, upload-time = "2025-07-01T09:15:17.429Z" }, + { url = "https://files.pythonhosted.org/packages/41/b0/33d79e377a336247df6348a54e6d2a2b85d644ca202555e3faa0cf811ecc/pillow-11.3.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:0b275ff9b04df7b640c59ec5a3cb113eefd3795a8df80bac69646ef699c6981a", size = 4686116, upload-time = "2025-07-01T09:15:19.423Z" }, + { url = "https://files.pythonhosted.org/packages/49/2d/ed8bc0ab219ae8768f529597d9509d184fe8a6c4741a6864fea334d25f3f/pillow-11.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0743841cabd3dba6a83f38a92672cccbd69af56e3e91777b0ee7f4dba4385632", size = 5864597, upload-time = "2025-07-03T13:10:38.404Z" }, + { url = "https://files.pythonhosted.org/packages/b5/3d/b932bb4225c80b58dfadaca9d42d08d0b7064d2d1791b6a237f87f661834/pillow-11.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2465a69cf967b8b49ee1b96d76718cd98c4e925414ead59fdf75cf0fd07df673", size = 7638246, upload-time = "2025-07-03T13:10:44.987Z" }, + { url = "https://files.pythonhosted.org/packages/09/b5/0487044b7c096f1b48f0d7ad416472c02e0e4bf6919541b111efd3cae690/pillow-11.3.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41742638139424703b4d01665b807c6468e23e699e8e90cffefe291c5832b027", size = 5973336, upload-time = "2025-07-01T09:15:21.237Z" }, + { url = "https://files.pythonhosted.org/packages/a8/2d/524f9318f6cbfcc79fbc004801ea6b607ec3f843977652fdee4857a7568b/pillow-11.3.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:93efb0b4de7e340d99057415c749175e24c8864302369e05914682ba642e5d77", size = 6642699, upload-time = "2025-07-01T09:15:23.186Z" }, + { url = "https://files.pythonhosted.org/packages/6f/d2/a9a4f280c6aefedce1e8f615baaa5474e0701d86dd6f1dede66726462bbd/pillow-11.3.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7966e38dcd0fa11ca390aed7c6f20454443581d758242023cf36fcb319b1a874", size = 6083789, upload-time = "2025-07-01T09:15:25.1Z" }, + { url = "https://files.pythonhosted.org/packages/fe/54/86b0cd9dbb683a9d5e960b66c7379e821a19be4ac5810e2e5a715c09a0c0/pillow-11.3.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:98a9afa7b9007c67ed84c57c9e0ad86a6000da96eaa638e4f8abe5b65ff83f0a", size = 6720386, upload-time = "2025-07-01T09:15:27.378Z" }, + { url = "https://files.pythonhosted.org/packages/e7/95/88efcaf384c3588e24259c4203b909cbe3e3c2d887af9e938c2022c9dd48/pillow-11.3.0-cp314-cp314-win32.whl", hash = "sha256:02a723e6bf909e7cea0dac1b0e0310be9d7650cd66222a5f1c571455c0a45214", size = 6370911, upload-time = "2025-07-01T09:15:29.294Z" }, + { url = "https://files.pythonhosted.org/packages/2e/cc/934e5820850ec5eb107e7b1a72dd278140731c669f396110ebc326f2a503/pillow-11.3.0-cp314-cp314-win_amd64.whl", hash = "sha256:a418486160228f64dd9e9efcd132679b7a02a5f22c982c78b6fc7dab3fefb635", size = 7117383, upload-time = "2025-07-01T09:15:31.128Z" }, + { url = "https://files.pythonhosted.org/packages/d6/e9/9c0a616a71da2a5d163aa37405e8aced9a906d574b4a214bede134e731bc/pillow-11.3.0-cp314-cp314-win_arm64.whl", hash = "sha256:155658efb5e044669c08896c0c44231c5e9abcaadbc5cd3648df2f7c0b96b9a6", size = 2511385, upload-time = "2025-07-01T09:15:33.328Z" }, + { url = "https://files.pythonhosted.org/packages/1a/33/c88376898aff369658b225262cd4f2659b13e8178e7534df9e6e1fa289f6/pillow-11.3.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:59a03cdf019efbfeeed910bf79c7c93255c3d54bc45898ac2a4140071b02b4ae", size = 5281129, upload-time = "2025-07-01T09:15:35.194Z" }, + { url = "https://files.pythonhosted.org/packages/1f/70/d376247fb36f1844b42910911c83a02d5544ebd2a8bad9efcc0f707ea774/pillow-11.3.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f8a5827f84d973d8636e9dc5764af4f0cf2318d26744b3d902931701b0d46653", size = 4689580, upload-time = "2025-07-01T09:15:37.114Z" }, + { url = "https://files.pythonhosted.org/packages/eb/1c/537e930496149fbac69efd2fc4329035bbe2e5475b4165439e3be9cb183b/pillow-11.3.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ee92f2fd10f4adc4b43d07ec5e779932b4eb3dbfbc34790ada5a6669bc095aa6", size = 5902860, upload-time = "2025-07-03T13:10:50.248Z" }, + { url = "https://files.pythonhosted.org/packages/bd/57/80f53264954dcefeebcf9dae6e3eb1daea1b488f0be8b8fef12f79a3eb10/pillow-11.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c96d333dcf42d01f47b37e0979b6bd73ec91eae18614864622d9b87bbd5bbf36", size = 7670694, upload-time = "2025-07-03T13:10:56.432Z" }, + { url = "https://files.pythonhosted.org/packages/70/ff/4727d3b71a8578b4587d9c276e90efad2d6fe0335fd76742a6da08132e8c/pillow-11.3.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4c96f993ab8c98460cd0c001447bff6194403e8b1d7e149ade5f00594918128b", size = 6005888, upload-time = "2025-07-01T09:15:39.436Z" }, + { url = "https://files.pythonhosted.org/packages/05/ae/716592277934f85d3be51d7256f3636672d7b1abfafdc42cf3f8cbd4b4c8/pillow-11.3.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41342b64afeba938edb034d122b2dda5db2139b9a4af999729ba8818e0056477", size = 6670330, upload-time = "2025-07-01T09:15:41.269Z" }, + { url = "https://files.pythonhosted.org/packages/e7/bb/7fe6cddcc8827b01b1a9766f5fdeb7418680744f9082035bdbabecf1d57f/pillow-11.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:068d9c39a2d1b358eb9f245ce7ab1b5c3246c7c8c7d9ba58cfa5b43146c06e50", size = 6114089, upload-time = "2025-07-01T09:15:43.13Z" }, + { url = "https://files.pythonhosted.org/packages/8b/f5/06bfaa444c8e80f1a8e4bff98da9c83b37b5be3b1deaa43d27a0db37ef84/pillow-11.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a1bc6ba083b145187f648b667e05a2534ecc4b9f2784c2cbe3089e44868f2b9b", size = 6748206, upload-time = "2025-07-01T09:15:44.937Z" }, + { url = "https://files.pythonhosted.org/packages/f0/77/bc6f92a3e8e6e46c0ca78abfffec0037845800ea38c73483760362804c41/pillow-11.3.0-cp314-cp314t-win32.whl", hash = "sha256:118ca10c0d60b06d006be10a501fd6bbdfef559251ed31b794668ed569c87e12", size = 6377370, upload-time = "2025-07-01T09:15:46.673Z" }, + { url = "https://files.pythonhosted.org/packages/4a/82/3a721f7d69dca802befb8af08b7c79ebcab461007ce1c18bd91a5d5896f9/pillow-11.3.0-cp314-cp314t-win_amd64.whl", hash = "sha256:8924748b688aa210d79883357d102cd64690e56b923a186f35a82cbc10f997db", size = 7121500, upload-time = "2025-07-01T09:15:48.512Z" }, + { url = "https://files.pythonhosted.org/packages/89/c7/5572fa4a3f45740eaab6ae86fcdf7195b55beac1371ac8c619d880cfe948/pillow-11.3.0-cp314-cp314t-win_arm64.whl", hash = "sha256:79ea0d14d3ebad43ec77ad5272e6ff9bba5b679ef73375ea760261207fa8e0aa", size = 2512835, upload-time = "2025-07-01T09:15:50.399Z" }, + { url = "https://files.pythonhosted.org/packages/9e/8e/9c089f01677d1264ab8648352dcb7773f37da6ad002542760c80107da816/pillow-11.3.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:48d254f8a4c776de343051023eb61ffe818299eeac478da55227d96e241de53f", size = 5316478, upload-time = "2025-07-01T09:15:52.209Z" }, + { url = "https://files.pythonhosted.org/packages/b5/a9/5749930caf674695867eb56a581e78eb5f524b7583ff10b01b6e5048acb3/pillow-11.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7aee118e30a4cf54fdd873bd3a29de51e29105ab11f9aad8c32123f58c8f8081", size = 4686522, upload-time = "2025-07-01T09:15:54.162Z" }, + { url = "https://files.pythonhosted.org/packages/43/46/0b85b763eb292b691030795f9f6bb6fcaf8948c39413c81696a01c3577f7/pillow-11.3.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:23cff760a9049c502721bdb743a7cb3e03365fafcdfc2ef9784610714166e5a4", size = 5853376, upload-time = "2025-07-03T13:11:01.066Z" }, + { url = "https://files.pythonhosted.org/packages/5e/c6/1a230ec0067243cbd60bc2dad5dc3ab46a8a41e21c15f5c9b52b26873069/pillow-11.3.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6359a3bc43f57d5b375d1ad54a0074318a0844d11b76abccf478c37c986d3cfc", size = 7626020, upload-time = "2025-07-03T13:11:06.479Z" }, + { url = "https://files.pythonhosted.org/packages/63/dd/f296c27ffba447bfad76c6a0c44c1ea97a90cb9472b9304c94a732e8dbfb/pillow-11.3.0-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:092c80c76635f5ecb10f3f83d76716165c96f5229addbd1ec2bdbbda7d496e06", size = 5956732, upload-time = "2025-07-01T09:15:56.111Z" }, + { url = "https://files.pythonhosted.org/packages/a5/a0/98a3630f0b57f77bae67716562513d3032ae70414fcaf02750279c389a9e/pillow-11.3.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cadc9e0ea0a2431124cde7e1697106471fc4c1da01530e679b2391c37d3fbb3a", size = 6624404, upload-time = "2025-07-01T09:15:58.245Z" }, + { url = "https://files.pythonhosted.org/packages/de/e6/83dfba5646a290edd9a21964da07674409e410579c341fc5b8f7abd81620/pillow-11.3.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:6a418691000f2a418c9135a7cf0d797c1bb7d9a485e61fe8e7722845b95ef978", size = 6067760, upload-time = "2025-07-01T09:16:00.003Z" }, + { url = "https://files.pythonhosted.org/packages/bc/41/15ab268fe6ee9a2bc7391e2bbb20a98d3974304ab1a406a992dcb297a370/pillow-11.3.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:97afb3a00b65cc0804d1c7abddbf090a81eaac02768af58cbdcaaa0a931e0b6d", size = 6700534, upload-time = "2025-07-01T09:16:02.29Z" }, + { url = "https://files.pythonhosted.org/packages/64/79/6d4f638b288300bed727ff29f2a3cb63db054b33518a95f27724915e3fbc/pillow-11.3.0-cp39-cp39-win32.whl", hash = "sha256:ea944117a7974ae78059fcc1800e5d3295172bb97035c0c1d9345fca1419da71", size = 6277091, upload-time = "2025-07-01T09:16:04.4Z" }, + { url = "https://files.pythonhosted.org/packages/46/05/4106422f45a05716fd34ed21763f8ec182e8ea00af6e9cb05b93a247361a/pillow-11.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:e5c5858ad8ec655450a7c7df532e9842cf8df7cc349df7225c60d5d348c8aada", size = 6986091, upload-time = "2025-07-01T09:16:06.342Z" }, + { url = "https://files.pythonhosted.org/packages/63/c6/287fd55c2c12761d0591549d48885187579b7c257bef0c6660755b0b59ae/pillow-11.3.0-cp39-cp39-win_arm64.whl", hash = "sha256:6abdbfd3aea42be05702a8dd98832329c167ee84400a1d1f61ab11437f1717eb", size = 2422632, upload-time = "2025-07-01T09:16:08.142Z" }, + { url = "https://files.pythonhosted.org/packages/6f/8b/209bd6b62ce8367f47e68a218bffac88888fdf2c9fcf1ecadc6c3ec1ebc7/pillow-11.3.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:3cee80663f29e3843b68199b9d6f4f54bd1d4a6b59bdd91bceefc51238bcb967", size = 5270556, upload-time = "2025-07-01T09:16:09.961Z" }, + { url = "https://files.pythonhosted.org/packages/2e/e6/231a0b76070c2cfd9e260a7a5b504fb72da0a95279410fa7afd99d9751d6/pillow-11.3.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b5f56c3f344f2ccaf0dd875d3e180f631dc60a51b314295a3e681fe8cf851fbe", size = 4654625, upload-time = "2025-07-01T09:16:11.913Z" }, + { url = "https://files.pythonhosted.org/packages/13/f4/10cf94fda33cb12765f2397fc285fa6d8eb9c29de7f3185165b702fc7386/pillow-11.3.0-pp310-pypy310_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e67d793d180c9df62f1f40aee3accca4829d3794c95098887edc18af4b8b780c", size = 4874207, upload-time = "2025-07-03T13:11:10.201Z" }, + { url = "https://files.pythonhosted.org/packages/72/c9/583821097dc691880c92892e8e2d41fe0a5a3d6021f4963371d2f6d57250/pillow-11.3.0-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d000f46e2917c705e9fb93a3606ee4a819d1e3aa7a9b442f6444f07e77cf5e25", size = 6583939, upload-time = "2025-07-03T13:11:15.68Z" }, + { url = "https://files.pythonhosted.org/packages/3b/8e/5c9d410f9217b12320efc7c413e72693f48468979a013ad17fd690397b9a/pillow-11.3.0-pp310-pypy310_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:527b37216b6ac3a12d7838dc3bd75208ec57c1c6d11ef01902266a5a0c14fc27", size = 4957166, upload-time = "2025-07-01T09:16:13.74Z" }, + { url = "https://files.pythonhosted.org/packages/62/bb/78347dbe13219991877ffb3a91bf09da8317fbfcd4b5f9140aeae020ad71/pillow-11.3.0-pp310-pypy310_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:be5463ac478b623b9dd3937afd7fb7ab3d79dd290a28e2b6df292dc75063eb8a", size = 5581482, upload-time = "2025-07-01T09:16:16.107Z" }, + { url = "https://files.pythonhosted.org/packages/d9/28/1000353d5e61498aaeaaf7f1e4b49ddb05f2c6575f9d4f9f914a3538b6e1/pillow-11.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:8dc70ca24c110503e16918a658b869019126ecfe03109b754c402daff12b3d9f", size = 6984596, upload-time = "2025-07-01T09:16:18.07Z" }, + { url = "https://files.pythonhosted.org/packages/9e/e3/6fa84033758276fb31da12e5fb66ad747ae83b93c67af17f8c6ff4cc8f34/pillow-11.3.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7c8ec7a017ad1bd562f93dbd8505763e688d388cde6e4a010ae1486916e713e6", size = 5270566, upload-time = "2025-07-01T09:16:19.801Z" }, + { url = "https://files.pythonhosted.org/packages/5b/ee/e8d2e1ab4892970b561e1ba96cbd59c0d28cf66737fc44abb2aec3795a4e/pillow-11.3.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:9ab6ae226de48019caa8074894544af5b53a117ccb9d3b3dcb2871464c829438", size = 4654618, upload-time = "2025-07-01T09:16:21.818Z" }, + { url = "https://files.pythonhosted.org/packages/f2/6d/17f80f4e1f0761f02160fc433abd4109fa1548dcfdca46cfdadaf9efa565/pillow-11.3.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fe27fb049cdcca11f11a7bfda64043c37b30e6b91f10cb5bab275806c32f6ab3", size = 4874248, upload-time = "2025-07-03T13:11:20.738Z" }, + { url = "https://files.pythonhosted.org/packages/de/5f/c22340acd61cef960130585bbe2120e2fd8434c214802f07e8c03596b17e/pillow-11.3.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:465b9e8844e3c3519a983d58b80be3f668e2a7a5db97f2784e7079fbc9f9822c", size = 6583963, upload-time = "2025-07-03T13:11:26.283Z" }, + { url = "https://files.pythonhosted.org/packages/31/5e/03966aedfbfcbb4d5f8aa042452d3361f325b963ebbadddac05b122e47dd/pillow-11.3.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5418b53c0d59b3824d05e029669efa023bbef0f3e92e75ec8428f3799487f361", size = 4957170, upload-time = "2025-07-01T09:16:23.762Z" }, + { url = "https://files.pythonhosted.org/packages/cc/2d/e082982aacc927fc2cab48e1e731bdb1643a1406acace8bed0900a61464e/pillow-11.3.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:504b6f59505f08ae014f724b6207ff6222662aab5cc9542577fb084ed0676ac7", size = 5581505, upload-time = "2025-07-01T09:16:25.593Z" }, + { url = "https://files.pythonhosted.org/packages/34/e7/ae39f538fd6844e982063c3a5e4598b8ced43b9633baa3a85ef33af8c05c/pillow-11.3.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:c84d689db21a1c397d001aa08241044aa2069e7587b398c8cc63020390b1c1b8", size = 6984598, upload-time = "2025-07-01T09:16:27.732Z" }, +] + +[[package]] +name = "platformdirs" +version = "4.3.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fe/8b/3c73abc9c759ecd3f1f7ceff6685840859e8070c4d947c93fae71f6a0bf2/platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc", size = 21362, upload-time = "2025-05-07T22:47:42.121Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4", size = 18567, upload-time = "2025-05-07T22:47:40.376Z" }, +] + +[[package]] +name = "prompt-toolkit" +version = "3.0.51" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wcwidth" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bb/6e/9d084c929dfe9e3bfe0c6a47e31f78a25c54627d64a66e884a8bf5474f1c/prompt_toolkit-3.0.51.tar.gz", hash = "sha256:931a162e3b27fc90c86f1b48bb1fb2c528c2761475e57c9c06de13311c7b54ed", size = 428940, upload-time = "2025-04-15T09:18:47.731Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ce/4f/5249960887b1fbe561d9ff265496d170b55a735b76724f10ef19f9e40716/prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07", size = 387810, upload-time = "2025-04-15T09:18:44.753Z" }, +] + +[[package]] +name = "psutil" +version = "7.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2a/80/336820c1ad9286a4ded7e845b2eccfcb27851ab8ac6abece774a6ff4d3de/psutil-7.0.0.tar.gz", hash = "sha256:7be9c3eba38beccb6495ea33afd982a44074b78f28c434a1f51cc07fd315c456", size = 497003, upload-time = "2025-02-13T21:54:07.946Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/e6/2d26234410f8b8abdbf891c9da62bee396583f713fb9f3325a4760875d22/psutil-7.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25", size = 238051, upload-time = "2025-02-13T21:54:12.36Z" }, + { url = "https://files.pythonhosted.org/packages/04/8b/30f930733afe425e3cbfc0e1468a30a18942350c1a8816acfade80c005c4/psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:39db632f6bb862eeccf56660871433e111b6ea58f2caea825571951d4b6aa3da", size = 239535, upload-time = "2025-02-13T21:54:16.07Z" }, + { url = "https://files.pythonhosted.org/packages/2a/ed/d362e84620dd22876b55389248e522338ed1bf134a5edd3b8231d7207f6d/psutil-7.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fcee592b4c6f146991ca55919ea3d1f8926497a713ed7faaf8225e174581e91", size = 275004, upload-time = "2025-02-13T21:54:18.662Z" }, + { url = "https://files.pythonhosted.org/packages/bf/b9/b0eb3f3cbcb734d930fdf839431606844a825b23eaf9a6ab371edac8162c/psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b1388a4f6875d7e2aff5c4ca1cc16c545ed41dd8bb596cefea80111db353a34", size = 277986, upload-time = "2025-02-13T21:54:21.811Z" }, + { url = "https://files.pythonhosted.org/packages/eb/a2/709e0fe2f093556c17fbafda93ac032257242cabcc7ff3369e2cb76a97aa/psutil-7.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f098451abc2828f7dc6b58d44b532b22f2088f4999a937557b603ce72b1993", size = 279544, upload-time = "2025-02-13T21:54:24.68Z" }, + { url = "https://files.pythonhosted.org/packages/50/e6/eecf58810b9d12e6427369784efe814a1eec0f492084ce8eb8f4d89d6d61/psutil-7.0.0-cp37-abi3-win32.whl", hash = "sha256:ba3fcef7523064a6c9da440fc4d6bd07da93ac726b5733c29027d7dc95b39d99", size = 241053, upload-time = "2025-02-13T21:54:34.31Z" }, + { url = "https://files.pythonhosted.org/packages/50/1b/6921afe68c74868b4c9fa424dad3be35b095e16687989ebbb50ce4fceb7c/psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553", size = 244885, upload-time = "2025-02-13T21:54:37.486Z" }, +] + +[[package]] +name = "ptyprocess" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762, upload-time = "2020-12-28T15:15:30.155Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993, upload-time = "2020-12-28T15:15:28.35Z" }, +] + +[[package]] +name = "pure-eval" +version = "0.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/05/0a34433a064256a578f1783a10da6df098ceaa4a57bbeaa96a6c0352786b/pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42", size = 19752, upload-time = "2024-07-21T12:58:21.801Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842, upload-time = "2024-07-21T12:58:20.04Z" }, +] + +[[package]] +name = "py-cpuinfo" +version = "9.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/37/a8/d832f7293ebb21690860d2e01d8115e5ff6f2ae8bbdc953f0eb0fa4bd2c7/py-cpuinfo-9.0.0.tar.gz", hash = "sha256:3cdbbf3fac90dc6f118bfd64384f309edeadd902d7c8fb17f02ffa1fc3f49690", size = 104716, upload-time = "2022-10-25T20:38:06.303Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e0/a9/023730ba63db1e494a271cb018dcd361bd2c917ba7004c3e49d5daf795a2/py_cpuinfo-9.0.0-py3-none-any.whl", hash = "sha256:859625bc251f64e21f077d099d4162689c762b5d6a4c3c97553d56241c9674d5", size = 22335, upload-time = "2022-10-25T20:38:27.636Z" }, +] + +[[package]] +name = "pycparser" +version = "2.22" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736, upload-time = "2024-03-30T13:22:22.564Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552, upload-time = "2024-03-30T13:22:20.476Z" }, +] + +[[package]] +name = "pygments" +version = "2.19.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload-time = "2025-06-21T13:39:12.283Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" }, +] + +[[package]] +name = "pynacl" +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a7/22/27582568be639dfe22ddb3902225f91f2f17ceff88ce80e4db396c8986da/PyNaCl-1.5.0.tar.gz", hash = "sha256:8ac7448f09ab85811607bdd21ec2464495ac8b7c66d146bf545b0f08fb9220ba", size = 3392854, upload-time = "2022-01-07T22:05:41.134Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ce/75/0b8ede18506041c0bf23ac4d8e2971b4161cd6ce630b177d0a08eb0d8857/PyNaCl-1.5.0-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:401002a4aaa07c9414132aaed7f6836ff98f59277a234704ff66878c2ee4a0d1", size = 349920, upload-time = "2022-01-07T22:05:49.156Z" }, + { url = "https://files.pythonhosted.org/packages/59/bb/fddf10acd09637327a97ef89d2a9d621328850a72f1fdc8c08bdf72e385f/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:52cb72a79269189d4e0dc537556f4740f7f0a9ec41c1322598799b0bdad4ef92", size = 601722, upload-time = "2022-01-07T22:05:50.989Z" }, + { url = "https://files.pythonhosted.org/packages/5d/70/87a065c37cca41a75f2ce113a5a2c2aa7533be648b184ade58971b5f7ccc/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a36d4a9dda1f19ce6e03c9a784a2921a4b726b02e1c736600ca9c22029474394", size = 680087, upload-time = "2022-01-07T22:05:52.539Z" }, + { url = "https://files.pythonhosted.org/packages/ee/87/f1bb6a595f14a327e8285b9eb54d41fef76c585a0edef0a45f6fc95de125/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:0c84947a22519e013607c9be43706dd42513f9e6ae5d39d3613ca1e142fba44d", size = 856678, upload-time = "2022-01-07T22:05:54.251Z" }, + { url = "https://files.pythonhosted.org/packages/66/28/ca86676b69bf9f90e710571b67450508484388bfce09acf8a46f0b8c785f/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858", size = 1133660, upload-time = "2022-01-07T22:05:56.056Z" }, + { url = "https://files.pythonhosted.org/packages/3d/85/c262db650e86812585e2bc59e497a8f59948a005325a11bbbc9ecd3fe26b/PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:a422368fc821589c228f4c49438a368831cb5bbc0eab5ebe1d7fac9dded6567b", size = 663824, upload-time = "2022-01-07T22:05:57.434Z" }, + { url = "https://files.pythonhosted.org/packages/fd/1a/cc308a884bd299b651f1633acb978e8596c71c33ca85e9dc9fa33a5399b9/PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:61f642bf2378713e2c2e1de73444a3778e5f0a38be6fee0fe532fe30060282ff", size = 1117912, upload-time = "2022-01-07T22:05:58.665Z" }, + { url = "https://files.pythonhosted.org/packages/25/2d/b7df6ddb0c2a33afdb358f8af6ea3b8c4d1196ca45497dd37a56f0c122be/PyNaCl-1.5.0-cp36-abi3-win32.whl", hash = "sha256:e46dae94e34b085175f8abb3b0aaa7da40767865ac82c928eeb9e57e1ea8a543", size = 204624, upload-time = "2022-01-07T22:06:00.085Z" }, + { url = "https://files.pythonhosted.org/packages/5e/22/d3db169895faaf3e2eda892f005f433a62db2decbcfbc2f61e6517adfa87/PyNaCl-1.5.0-cp36-abi3-win_amd64.whl", hash = "sha256:20f42270d27e1b6a29f54032090b972d97f0a1b0948cc52392041ef7831fee93", size = 212141, upload-time = "2022-01-07T22:06:01.861Z" }, +] + +[[package]] +name = "pyparsing" +version = "3.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bb/22/f1129e69d94ffff626bdb5c835506b3a5b4f3d070f17ea295e12c2c6f60f/pyparsing-3.2.3.tar.gz", hash = "sha256:b9c13f1ab8b3b542f72e28f634bad4de758ab3ce4546e4301970ad6fa77c38be", size = 1088608, upload-time = "2025-03-25T05:01:28.114Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/e7/df2285f3d08fee213f2d041540fa4fc9ca6c2d44cf36d3a035bf2a8d2bcc/pyparsing-3.2.3-py3-none-any.whl", hash = "sha256:a749938e02d6fd0b59b356ca504a24982314bb090c383e3cf201c95ef7e2bfcf", size = 111120, upload-time = "2025-03-25T05:01:24.908Z" }, +] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, +] + +[[package]] +name = "pytz" +version = "2025.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884, upload-time = "2025-03-25T02:25:00.538Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225, upload-time = "2025-03-25T02:24:58.468Z" }, +] + +[[package]] +name = "pywin32" +version = "310" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/95/da/a5f38fffbba2fb99aa4aa905480ac4b8e83ca486659ac8c95bce47fb5276/pywin32-310-cp310-cp310-win32.whl", hash = "sha256:6dd97011efc8bf51d6793a82292419eba2c71cf8e7250cfac03bba284454abc1", size = 8848240, upload-time = "2025-03-17T00:55:46.783Z" }, + { url = "https://files.pythonhosted.org/packages/aa/fe/d873a773324fa565619ba555a82c9dabd677301720f3660a731a5d07e49a/pywin32-310-cp310-cp310-win_amd64.whl", hash = "sha256:c3e78706e4229b915a0821941a84e7ef420bf2b77e08c9dae3c76fd03fd2ae3d", size = 9601854, upload-time = "2025-03-17T00:55:48.783Z" }, + { url = "https://files.pythonhosted.org/packages/3c/84/1a8e3d7a15490d28a5d816efa229ecb4999cdc51a7c30dd8914f669093b8/pywin32-310-cp310-cp310-win_arm64.whl", hash = "sha256:33babed0cf0c92a6f94cc6cc13546ab24ee13e3e800e61ed87609ab91e4c8213", size = 8522963, upload-time = "2025-03-17T00:55:50.969Z" }, + { url = "https://files.pythonhosted.org/packages/f7/b1/68aa2986129fb1011dabbe95f0136f44509afaf072b12b8f815905a39f33/pywin32-310-cp311-cp311-win32.whl", hash = "sha256:1e765f9564e83011a63321bb9d27ec456a0ed90d3732c4b2e312b855365ed8bd", size = 8784284, upload-time = "2025-03-17T00:55:53.124Z" }, + { url = "https://files.pythonhosted.org/packages/b3/bd/d1592635992dd8db5bb8ace0551bc3a769de1ac8850200cfa517e72739fb/pywin32-310-cp311-cp311-win_amd64.whl", hash = "sha256:126298077a9d7c95c53823934f000599f66ec9296b09167810eb24875f32689c", size = 9520748, upload-time = "2025-03-17T00:55:55.203Z" }, + { url = "https://files.pythonhosted.org/packages/90/b1/ac8b1ffce6603849eb45a91cf126c0fa5431f186c2e768bf56889c46f51c/pywin32-310-cp311-cp311-win_arm64.whl", hash = "sha256:19ec5fc9b1d51c4350be7bb00760ffce46e6c95eaf2f0b2f1150657b1a43c582", size = 8455941, upload-time = "2025-03-17T00:55:57.048Z" }, + { url = "https://files.pythonhosted.org/packages/6b/ec/4fdbe47932f671d6e348474ea35ed94227fb5df56a7c30cbbb42cd396ed0/pywin32-310-cp312-cp312-win32.whl", hash = "sha256:8a75a5cc3893e83a108c05d82198880704c44bbaee4d06e442e471d3c9ea4f3d", size = 8796239, upload-time = "2025-03-17T00:55:58.807Z" }, + { url = "https://files.pythonhosted.org/packages/e3/e5/b0627f8bb84e06991bea89ad8153a9e50ace40b2e1195d68e9dff6b03d0f/pywin32-310-cp312-cp312-win_amd64.whl", hash = "sha256:bf5c397c9a9a19a6f62f3fb821fbf36cac08f03770056711f765ec1503972060", size = 9503839, upload-time = "2025-03-17T00:56:00.8Z" }, + { url = "https://files.pythonhosted.org/packages/1f/32/9ccf53748df72301a89713936645a664ec001abd35ecc8578beda593d37d/pywin32-310-cp312-cp312-win_arm64.whl", hash = "sha256:2349cc906eae872d0663d4d6290d13b90621eaf78964bb1578632ff20e152966", size = 8459470, upload-time = "2025-03-17T00:56:02.601Z" }, + { url = "https://files.pythonhosted.org/packages/1c/09/9c1b978ffc4ae53999e89c19c77ba882d9fce476729f23ef55211ea1c034/pywin32-310-cp313-cp313-win32.whl", hash = "sha256:5d241a659c496ada3253cd01cfaa779b048e90ce4b2b38cd44168ad555ce74ab", size = 8794384, upload-time = "2025-03-17T00:56:04.383Z" }, + { url = "https://files.pythonhosted.org/packages/45/3c/b4640f740ffebadd5d34df35fecba0e1cfef8fde9f3e594df91c28ad9b50/pywin32-310-cp313-cp313-win_amd64.whl", hash = "sha256:667827eb3a90208ddbdcc9e860c81bde63a135710e21e4cb3348968e4bd5249e", size = 9503039, upload-time = "2025-03-17T00:56:06.207Z" }, + { url = "https://files.pythonhosted.org/packages/b4/f4/f785020090fb050e7fb6d34b780f2231f302609dc964672f72bfaeb59a28/pywin32-310-cp313-cp313-win_arm64.whl", hash = "sha256:e308f831de771482b7cf692a1f308f8fca701b2d8f9dde6cc440c7da17e47b33", size = 8458152, upload-time = "2025-03-17T00:56:07.819Z" }, + { url = "https://files.pythonhosted.org/packages/a2/cd/d09d434630edb6a0c44ad5079611279a67530296cfe0451e003de7f449ff/pywin32-310-cp39-cp39-win32.whl", hash = "sha256:851c8d927af0d879221e616ae1f66145253537bbdd321a77e8ef701b443a9a1a", size = 8848099, upload-time = "2025-03-17T00:55:42.415Z" }, + { url = "https://files.pythonhosted.org/packages/93/ff/2a8c10315ffbdee7b3883ac0d1667e267ca8b3f6f640d81d43b87a82c0c7/pywin32-310-cp39-cp39-win_amd64.whl", hash = "sha256:96867217335559ac619f00ad70e513c0fcf84b8a3af9fc2bba3b59b97da70475", size = 9602031, upload-time = "2025-03-17T00:55:44.512Z" }, +] + +[[package]] +name = "pyyaml" +version = "6.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631, upload-time = "2024-08-06T20:33:50.674Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9b/95/a3fac87cb7158e231b5a6012e438c647e1a87f09f8e0d123acec8ab8bf71/PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086", size = 184199, upload-time = "2024-08-06T20:31:40.178Z" }, + { url = "https://files.pythonhosted.org/packages/c7/7a/68bd47624dab8fd4afbfd3c48e3b79efe09098ae941de5b58abcbadff5cb/PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf", size = 171758, upload-time = "2024-08-06T20:31:42.173Z" }, + { url = "https://files.pythonhosted.org/packages/49/ee/14c54df452143b9ee9f0f29074d7ca5516a36edb0b4cc40c3f280131656f/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237", size = 718463, upload-time = "2024-08-06T20:31:44.263Z" }, + { url = "https://files.pythonhosted.org/packages/4d/61/de363a97476e766574650d742205be468921a7b532aa2499fcd886b62530/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b", size = 719280, upload-time = "2024-08-06T20:31:50.199Z" }, + { url = "https://files.pythonhosted.org/packages/6b/4e/1523cb902fd98355e2e9ea5e5eb237cbc5f3ad5f3075fa65087aa0ecb669/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed", size = 751239, upload-time = "2024-08-06T20:31:52.292Z" }, + { url = "https://files.pythonhosted.org/packages/b7/33/5504b3a9a4464893c32f118a9cc045190a91637b119a9c881da1cf6b7a72/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180", size = 695802, upload-time = "2024-08-06T20:31:53.836Z" }, + { url = "https://files.pythonhosted.org/packages/5c/20/8347dcabd41ef3a3cdc4f7b7a2aff3d06598c8779faa189cdbf878b626a4/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68", size = 720527, upload-time = "2024-08-06T20:31:55.565Z" }, + { url = "https://files.pythonhosted.org/packages/be/aa/5afe99233fb360d0ff37377145a949ae258aaab831bde4792b32650a4378/PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99", size = 144052, upload-time = "2024-08-06T20:31:56.914Z" }, + { url = "https://files.pythonhosted.org/packages/b5/84/0fa4b06f6d6c958d207620fc60005e241ecedceee58931bb20138e1e5776/PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e", size = 161774, upload-time = "2024-08-06T20:31:58.304Z" }, + { url = "https://files.pythonhosted.org/packages/f8/aa/7af4e81f7acba21a4c6be026da38fd2b872ca46226673c89a758ebdc4fd2/PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774", size = 184612, upload-time = "2024-08-06T20:32:03.408Z" }, + { url = "https://files.pythonhosted.org/packages/8b/62/b9faa998fd185f65c1371643678e4d58254add437edb764a08c5a98fb986/PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee", size = 172040, upload-time = "2024-08-06T20:32:04.926Z" }, + { url = "https://files.pythonhosted.org/packages/ad/0c/c804f5f922a9a6563bab712d8dcc70251e8af811fce4524d57c2c0fd49a4/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c", size = 736829, upload-time = "2024-08-06T20:32:06.459Z" }, + { url = "https://files.pythonhosted.org/packages/51/16/6af8d6a6b210c8e54f1406a6b9481febf9c64a3109c541567e35a49aa2e7/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317", size = 764167, upload-time = "2024-08-06T20:32:08.338Z" }, + { url = "https://files.pythonhosted.org/packages/75/e4/2c27590dfc9992f73aabbeb9241ae20220bd9452df27483b6e56d3975cc5/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85", size = 762952, upload-time = "2024-08-06T20:32:14.124Z" }, + { url = "https://files.pythonhosted.org/packages/9b/97/ecc1abf4a823f5ac61941a9c00fe501b02ac3ab0e373c3857f7d4b83e2b6/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4", size = 735301, upload-time = "2024-08-06T20:32:16.17Z" }, + { url = "https://files.pythonhosted.org/packages/45/73/0f49dacd6e82c9430e46f4a027baa4ca205e8b0a9dce1397f44edc23559d/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e", size = 756638, upload-time = "2024-08-06T20:32:18.555Z" }, + { url = "https://files.pythonhosted.org/packages/22/5f/956f0f9fc65223a58fbc14459bf34b4cc48dec52e00535c79b8db361aabd/PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5", size = 143850, upload-time = "2024-08-06T20:32:19.889Z" }, + { url = "https://files.pythonhosted.org/packages/ed/23/8da0bbe2ab9dcdd11f4f4557ccaf95c10b9811b13ecced089d43ce59c3c8/PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44", size = 161980, upload-time = "2024-08-06T20:32:21.273Z" }, + { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873, upload-time = "2024-08-06T20:32:25.131Z" }, + { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302, upload-time = "2024-08-06T20:32:26.511Z" }, + { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154, upload-time = "2024-08-06T20:32:28.363Z" }, + { url = "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", size = 766223, upload-time = "2024-08-06T20:32:30.058Z" }, + { url = "https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", size = 767542, upload-time = "2024-08-06T20:32:31.881Z" }, + { url = "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", size = 731164, upload-time = "2024-08-06T20:32:37.083Z" }, + { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611, upload-time = "2024-08-06T20:32:38.898Z" }, + { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591, upload-time = "2024-08-06T20:32:40.241Z" }, + { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338, upload-time = "2024-08-06T20:32:41.93Z" }, + { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309, upload-time = "2024-08-06T20:32:43.4Z" }, + { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679, upload-time = "2024-08-06T20:32:44.801Z" }, + { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428, upload-time = "2024-08-06T20:32:46.432Z" }, + { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361, upload-time = "2024-08-06T20:32:51.188Z" }, + { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523, upload-time = "2024-08-06T20:32:53.019Z" }, + { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660, upload-time = "2024-08-06T20:32:54.708Z" }, + { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597, upload-time = "2024-08-06T20:32:56.985Z" }, + { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527, upload-time = "2024-08-06T20:33:03.001Z" }, + { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446, upload-time = "2024-08-06T20:33:04.33Z" }, + { url = "https://files.pythonhosted.org/packages/65/d8/b7a1db13636d7fb7d4ff431593c510c8b8fca920ade06ca8ef20015493c5/PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d", size = 184777, upload-time = "2024-08-06T20:33:25.896Z" }, + { url = "https://files.pythonhosted.org/packages/0a/02/6ec546cd45143fdf9840b2c6be8d875116a64076218b61d68e12548e5839/PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f", size = 172318, upload-time = "2024-08-06T20:33:27.212Z" }, + { url = "https://files.pythonhosted.org/packages/0e/9a/8cc68be846c972bda34f6c2a93abb644fb2476f4dcc924d52175786932c9/PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290", size = 720891, upload-time = "2024-08-06T20:33:28.974Z" }, + { url = "https://files.pythonhosted.org/packages/e9/6c/6e1b7f40181bc4805e2e07f4abc10a88ce4648e7e95ff1abe4ae4014a9b2/PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12", size = 722614, upload-time = "2024-08-06T20:33:34.157Z" }, + { url = "https://files.pythonhosted.org/packages/3d/32/e7bd8535d22ea2874cef6a81021ba019474ace0d13a4819c2a4bce79bd6a/PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19", size = 737360, upload-time = "2024-08-06T20:33:35.84Z" }, + { url = "https://files.pythonhosted.org/packages/d7/12/7322c1e30b9be969670b672573d45479edef72c9a0deac3bb2868f5d7469/PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e", size = 699006, upload-time = "2024-08-06T20:33:37.501Z" }, + { url = "https://files.pythonhosted.org/packages/82/72/04fcad41ca56491995076630c3ec1e834be241664c0c09a64c9a2589b507/PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725", size = 723577, upload-time = "2024-08-06T20:33:39.389Z" }, + { url = "https://files.pythonhosted.org/packages/ed/5e/46168b1f2757f1fcd442bc3029cd8767d88a98c9c05770d8b420948743bb/PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631", size = 144593, upload-time = "2024-08-06T20:33:46.63Z" }, + { url = "https://files.pythonhosted.org/packages/19/87/5124b1c1f2412bb95c59ec481eaf936cd32f0fe2a7b16b97b81c4c017a6a/PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8", size = 162312, upload-time = "2024-08-06T20:33:49.073Z" }, +] + +[[package]] +name = "pyzmq" +version = "27.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "implementation_name == 'pypy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f1/06/50a4e9648b3e8b992bef8eb632e457307553a89d294103213cfd47b3da69/pyzmq-27.0.0.tar.gz", hash = "sha256:b1f08eeb9ce1510e6939b6e5dcd46a17765e2333daae78ecf4606808442e52cf", size = 280478, upload-time = "2025-06-13T14:09:07.087Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9c/09/1681d4b047626d352c083770618ac29655ab1f5c20eee31dc94c000b9b7b/pyzmq-27.0.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:b973ee650e8f442ce482c1d99ca7ab537c69098d53a3d046676a484fd710c87a", size = 1329291, upload-time = "2025-06-13T14:06:57.945Z" }, + { url = "https://files.pythonhosted.org/packages/9d/b2/9c9385225fdd54db9506ed8accbb9ea63ca813ba59d43d7f282a6a16a30b/pyzmq-27.0.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:661942bc7cd0223d569d808f2e5696d9cc120acc73bf3e88a1f1be7ab648a7e4", size = 905952, upload-time = "2025-06-13T14:07:03.232Z" }, + { url = "https://files.pythonhosted.org/packages/41/73/333c72c7ec182cdffe25649e3da1c3b9f3cf1cede63cfdc23d1384d4a601/pyzmq-27.0.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:50360fb2a056ffd16e5f4177eee67f1dd1017332ea53fb095fe7b5bf29c70246", size = 666165, upload-time = "2025-06-13T14:07:04.667Z" }, + { url = "https://files.pythonhosted.org/packages/a5/fe/fc7b9c1a50981928e25635a926653cb755364316db59ccd6e79cfb9a0b4f/pyzmq-27.0.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cf209a6dc4b420ed32a7093642843cbf8703ed0a7d86c16c0b98af46762ebefb", size = 853755, upload-time = "2025-06-13T14:07:06.93Z" }, + { url = "https://files.pythonhosted.org/packages/8c/4c/740ed4b6e8fa160cd19dc5abec8db68f440564b2d5b79c1d697d9862a2f7/pyzmq-27.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c2dace4a7041cca2fba5357a2d7c97c5effdf52f63a1ef252cfa496875a3762d", size = 1654868, upload-time = "2025-06-13T14:07:08.224Z" }, + { url = "https://files.pythonhosted.org/packages/97/00/875b2ecfcfc78ab962a59bd384995186818524ea957dc8ad3144611fae12/pyzmq-27.0.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:63af72b2955fc77caf0a77444baa2431fcabb4370219da38e1a9f8d12aaebe28", size = 2033443, upload-time = "2025-06-13T14:07:09.653Z" }, + { url = "https://files.pythonhosted.org/packages/60/55/6dd9c470c42d713297c5f2a56f7903dc1ebdb4ab2edda996445c21651900/pyzmq-27.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e8c4adce8e37e75c4215297d7745551b8dcfa5f728f23ce09bf4e678a9399413", size = 1891288, upload-time = "2025-06-13T14:07:11.099Z" }, + { url = "https://files.pythonhosted.org/packages/28/5d/54b0ef50d40d7c65a627f4a4b4127024ba9820f2af8acd933a4d30ae192e/pyzmq-27.0.0-cp310-cp310-win32.whl", hash = "sha256:5d5ef4718ecab24f785794e0e7536436698b459bfbc19a1650ef55280119d93b", size = 567936, upload-time = "2025-06-13T14:07:12.468Z" }, + { url = "https://files.pythonhosted.org/packages/18/ea/dedca4321de748ca48d3bcdb72274d4d54e8d84ea49088d3de174bd45d88/pyzmq-27.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:e40609380480b3d12c30f841323f42451c755b8fece84235236f5fe5ffca8c1c", size = 628686, upload-time = "2025-06-13T14:07:14.051Z" }, + { url = "https://files.pythonhosted.org/packages/d4/a7/fcdeedc306e71e94ac262cba2d02337d885f5cdb7e8efced8e5ffe327808/pyzmq-27.0.0-cp310-cp310-win_arm64.whl", hash = "sha256:6b0397b0be277b46762956f576e04dc06ced265759e8c2ff41a0ee1aa0064198", size = 559039, upload-time = "2025-06-13T14:07:15.289Z" }, + { url = "https://files.pythonhosted.org/packages/44/df/84c630654106d9bd9339cdb564aa941ed41b023a0264251d6743766bb50e/pyzmq-27.0.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:21457825249b2a53834fa969c69713f8b5a79583689387a5e7aed880963ac564", size = 1332718, upload-time = "2025-06-13T14:07:16.555Z" }, + { url = "https://files.pythonhosted.org/packages/c1/8e/f6a5461a07654d9840d256476434ae0ff08340bba562a455f231969772cb/pyzmq-27.0.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1958947983fef513e6e98eff9cb487b60bf14f588dc0e6bf35fa13751d2c8251", size = 908248, upload-time = "2025-06-13T14:07:18.033Z" }, + { url = "https://files.pythonhosted.org/packages/7c/93/82863e8d695a9a3ae424b63662733ae204a295a2627d52af2f62c2cd8af9/pyzmq-27.0.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c0dc628b5493f9a8cd9844b8bee9732ef587ab00002157c9329e4fc0ef4d3afa", size = 668647, upload-time = "2025-06-13T14:07:19.378Z" }, + { url = "https://files.pythonhosted.org/packages/f3/85/15278769b348121eacdbfcbd8c4d40f1102f32fa6af5be1ffc032ed684be/pyzmq-27.0.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f7bbe9e1ed2c8d3da736a15694d87c12493e54cc9dc9790796f0321794bbc91f", size = 856600, upload-time = "2025-06-13T14:07:20.906Z" }, + { url = "https://files.pythonhosted.org/packages/d4/af/1c469b3d479bd095edb28e27f12eee10b8f00b356acbefa6aeb14dd295d1/pyzmq-27.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:dc1091f59143b471d19eb64f54bae4f54bcf2a466ffb66fe45d94d8d734eb495", size = 1657748, upload-time = "2025-06-13T14:07:22.549Z" }, + { url = "https://files.pythonhosted.org/packages/8c/f4/17f965d0ee6380b1d6326da842a50e4b8b9699745161207945f3745e8cb5/pyzmq-27.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:7011ade88c8e535cf140f8d1a59428676fbbce7c6e54fefce58bf117aefb6667", size = 2034311, upload-time = "2025-06-13T14:07:23.966Z" }, + { url = "https://files.pythonhosted.org/packages/e0/6e/7c391d81fa3149fd759de45d298003de6cfab343fb03e92c099821c448db/pyzmq-27.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2c386339d7e3f064213aede5d03d054b237937fbca6dd2197ac8cf3b25a6b14e", size = 1893630, upload-time = "2025-06-13T14:07:25.899Z" }, + { url = "https://files.pythonhosted.org/packages/0e/e0/eaffe7a86f60e556399e224229e7769b717f72fec0706b70ab2c03aa04cb/pyzmq-27.0.0-cp311-cp311-win32.whl", hash = "sha256:0546a720c1f407b2172cb04b6b094a78773491497e3644863cf5c96c42df8cff", size = 567706, upload-time = "2025-06-13T14:07:27.595Z" }, + { url = "https://files.pythonhosted.org/packages/c9/05/89354a8cffdcce6e547d48adaaf7be17007fc75572123ff4ca90a4ca04fc/pyzmq-27.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:15f39d50bd6c9091c67315ceb878a4f531957b121d2a05ebd077eb35ddc5efed", size = 630322, upload-time = "2025-06-13T14:07:28.938Z" }, + { url = "https://files.pythonhosted.org/packages/fa/07/4ab976d5e1e63976719389cc4f3bfd248a7f5f2bb2ebe727542363c61b5f/pyzmq-27.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:c5817641eebb391a2268c27fecd4162448e03538387093cdbd8bf3510c316b38", size = 558435, upload-time = "2025-06-13T14:07:30.256Z" }, + { url = "https://files.pythonhosted.org/packages/93/a7/9ad68f55b8834ede477842214feba6a4c786d936c022a67625497aacf61d/pyzmq-27.0.0-cp312-abi3-macosx_10_15_universal2.whl", hash = "sha256:cbabc59dcfaac66655c040dfcb8118f133fb5dde185e5fc152628354c1598e52", size = 1305438, upload-time = "2025-06-13T14:07:31.676Z" }, + { url = "https://files.pythonhosted.org/packages/ba/ee/26aa0f98665a22bc90ebe12dced1de5f3eaca05363b717f6fb229b3421b3/pyzmq-27.0.0-cp312-abi3-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:cb0ac5179cba4b2f94f1aa208fbb77b62c4c9bf24dd446278b8b602cf85fcda3", size = 895095, upload-time = "2025-06-13T14:07:33.104Z" }, + { url = "https://files.pythonhosted.org/packages/cf/85/c57e7ab216ecd8aa4cc7e3b83b06cc4e9cf45c87b0afc095f10cd5ce87c1/pyzmq-27.0.0-cp312-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53a48f0228eab6cbf69fde3aa3c03cbe04e50e623ef92ae395fce47ef8a76152", size = 651826, upload-time = "2025-06-13T14:07:34.831Z" }, + { url = "https://files.pythonhosted.org/packages/69/9a/9ea7e230feda9400fb0ae0d61d7d6ddda635e718d941c44eeab22a179d34/pyzmq-27.0.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:111db5f395e09f7e775f759d598f43cb815fc58e0147623c4816486e1a39dc22", size = 839750, upload-time = "2025-06-13T14:07:36.553Z" }, + { url = "https://files.pythonhosted.org/packages/08/66/4cebfbe71f3dfbd417011daca267539f62ed0fbc68105357b68bbb1a25b7/pyzmq-27.0.0-cp312-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c8878011653dcdc27cc2c57e04ff96f0471e797f5c19ac3d7813a245bcb24371", size = 1641357, upload-time = "2025-06-13T14:07:38.21Z" }, + { url = "https://files.pythonhosted.org/packages/ac/f6/b0f62578c08d2471c791287149cb8c2aaea414ae98c6e995c7dbe008adfb/pyzmq-27.0.0-cp312-abi3-musllinux_1_2_i686.whl", hash = "sha256:c0ed2c1f335ba55b5fdc964622254917d6b782311c50e138863eda409fbb3b6d", size = 2020281, upload-time = "2025-06-13T14:07:39.599Z" }, + { url = "https://files.pythonhosted.org/packages/37/b9/4f670b15c7498495da9159edc374ec09c88a86d9cd5a47d892f69df23450/pyzmq-27.0.0-cp312-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:e918d70862d4cfd4b1c187310015646a14e1f5917922ab45b29f28f345eeb6be", size = 1877110, upload-time = "2025-06-13T14:07:41.027Z" }, + { url = "https://files.pythonhosted.org/packages/66/31/9dee25c226295b740609f0d46db2fe972b23b6f5cf786360980524a3ba92/pyzmq-27.0.0-cp312-abi3-win32.whl", hash = "sha256:88b4e43cab04c3c0f0d55df3b1eef62df2b629a1a369b5289a58f6fa8b07c4f4", size = 559297, upload-time = "2025-06-13T14:07:42.533Z" }, + { url = "https://files.pythonhosted.org/packages/9b/12/52da5509800f7ff2d287b2f2b4e636e7ea0f001181cba6964ff6c1537778/pyzmq-27.0.0-cp312-abi3-win_amd64.whl", hash = "sha256:dce4199bf5f648a902ce37e7b3afa286f305cd2ef7a8b6ec907470ccb6c8b371", size = 619203, upload-time = "2025-06-13T14:07:43.843Z" }, + { url = "https://files.pythonhosted.org/packages/93/6d/7f2e53b19d1edb1eb4f09ec7c3a1f945ca0aac272099eab757d15699202b/pyzmq-27.0.0-cp312-abi3-win_arm64.whl", hash = "sha256:56e46bbb85d52c1072b3f809cc1ce77251d560bc036d3a312b96db1afe76db2e", size = 551927, upload-time = "2025-06-13T14:07:45.51Z" }, + { url = "https://files.pythonhosted.org/packages/19/62/876b27c4ff777db4ceba1c69ea90d3c825bb4f8d5e7cd987ce5802e33c55/pyzmq-27.0.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:c36ad534c0c29b4afa088dc53543c525b23c0797e01b69fef59b1a9c0e38b688", size = 1340826, upload-time = "2025-06-13T14:07:46.881Z" }, + { url = "https://files.pythonhosted.org/packages/43/69/58ef8f4f59d3bcd505260c73bee87b008850f45edca40ddaba54273c35f4/pyzmq-27.0.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:67855c14173aec36395d7777aaba3cc527b393821f30143fd20b98e1ff31fd38", size = 897283, upload-time = "2025-06-13T14:07:49.562Z" }, + { url = "https://files.pythonhosted.org/packages/43/15/93a0d0396700a60475ad3c5d42c5f1c308d3570bc94626b86c71ef9953e0/pyzmq-27.0.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8617c7d43cd8ccdb62aebe984bfed77ca8f036e6c3e46dd3dddda64b10f0ab7a", size = 660567, upload-time = "2025-06-13T14:07:51.364Z" }, + { url = "https://files.pythonhosted.org/packages/0e/b3/fe055513e498ca32f64509abae19b9c9eb4d7c829e02bd8997dd51b029eb/pyzmq-27.0.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:67bfbcbd0a04c575e8103a6061d03e393d9f80ffdb9beb3189261e9e9bc5d5e9", size = 847681, upload-time = "2025-06-13T14:07:52.77Z" }, + { url = "https://files.pythonhosted.org/packages/b6/4f/ff15300b00b5b602191f3df06bbc8dd4164e805fdd65bb77ffbb9c5facdc/pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:5cd11d46d7b7e5958121b3eaf4cd8638eff3a720ec527692132f05a57f14341d", size = 1650148, upload-time = "2025-06-13T14:07:54.178Z" }, + { url = "https://files.pythonhosted.org/packages/c4/6f/84bdfff2a224a6f26a24249a342e5906993c50b0761e311e81b39aef52a7/pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:b801c2e40c5aa6072c2f4876de8dccd100af6d9918d4d0d7aa54a1d982fd4f44", size = 2023768, upload-time = "2025-06-13T14:07:55.714Z" }, + { url = "https://files.pythonhosted.org/packages/64/39/dc2db178c26a42228c5ac94a9cc595030458aa64c8d796a7727947afbf55/pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:20d5cb29e8c5f76a127c75b6e7a77e846bc4b655c373baa098c26a61b7ecd0ef", size = 1885199, upload-time = "2025-06-13T14:07:57.166Z" }, + { url = "https://files.pythonhosted.org/packages/c7/21/dae7b06a1f8cdee5d8e7a63d99c5d129c401acc40410bef2cbf42025e26f/pyzmq-27.0.0-cp313-cp313t-win32.whl", hash = "sha256:a20528da85c7ac7a19b7384e8c3f8fa707841fd85afc4ed56eda59d93e3d98ad", size = 575439, upload-time = "2025-06-13T14:07:58.959Z" }, + { url = "https://files.pythonhosted.org/packages/eb/bc/1709dc55f0970cf4cb8259e435e6773f9946f41a045c2cb90e870b7072da/pyzmq-27.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:d8229f2efece6a660ee211d74d91dbc2a76b95544d46c74c615e491900dc107f", size = 639933, upload-time = "2025-06-13T14:08:00.777Z" }, + { url = "https://files.pythonhosted.org/packages/19/dc/95210fe17e5d7dba89bd663e1d88f50a8003f296284731b09f1d95309a42/pyzmq-27.0.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:100f6e5052ba42b2533011d34a018a5ace34f8cac67cb03cfa37c8bdae0ca617", size = 1330656, upload-time = "2025-06-13T14:08:17.414Z" }, + { url = "https://files.pythonhosted.org/packages/d3/7e/63f742b578316258e03ecb393d35c0964348d80834bdec8a100ed7bb9c91/pyzmq-27.0.0-cp39-cp39-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:bf6c6b061efd00404b9750e2cfbd9507492c8d4b3721ded76cb03786131be2ed", size = 906522, upload-time = "2025-06-13T14:08:18.945Z" }, + { url = "https://files.pythonhosted.org/packages/1f/bf/f0b2b67f5a9bfe0fbd0e978a2becd901f802306aa8e29161cb0963094352/pyzmq-27.0.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ee05728c0b0b2484a9fc20466fa776fffb65d95f7317a3419985b8c908563861", size = 863545, upload-time = "2025-06-13T14:08:20.386Z" }, + { url = "https://files.pythonhosted.org/packages/87/0e/7d90ccd2ef577c8bae7f926acd2011a6d960eea8a068c5fd52b419206960/pyzmq-27.0.0-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7cdf07fe0a557b131366f80727ec8ccc4b70d89f1e3f920d94a594d598d754f0", size = 666796, upload-time = "2025-06-13T14:08:21.836Z" }, + { url = "https://files.pythonhosted.org/packages/4f/6d/ca8007a313baa73361778773aef210f4902e68f468d1f93b6c8b908fabbd/pyzmq-27.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:90252fa2ff3a104219db1f5ced7032a7b5fc82d7c8d2fec2b9a3e6fd4e25576b", size = 1655599, upload-time = "2025-06-13T14:08:23.343Z" }, + { url = "https://files.pythonhosted.org/packages/46/de/5cb4f99d6c0dd8f33d729c9ebd49af279586e5ab127e93aa6ef0ecd08c4c/pyzmq-27.0.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ea6d441c513bf18c578c73c323acf7b4184507fc244762193aa3a871333c9045", size = 2034119, upload-time = "2025-06-13T14:08:26.369Z" }, + { url = "https://files.pythonhosted.org/packages/d0/8d/57cc90c8b5f30a97a7e86ec91a3b9822ec7859d477e9c30f531fb78f4a97/pyzmq-27.0.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ae2b34bcfaae20c064948a4113bf8709eee89fd08317eb293ae4ebd69b4d9740", size = 1891955, upload-time = "2025-06-13T14:08:28.39Z" }, + { url = "https://files.pythonhosted.org/packages/24/f5/a7012022573188903802ab75b5314b00e5c629228f3a36fadb421a42ebff/pyzmq-27.0.0-cp39-cp39-win32.whl", hash = "sha256:5b10bd6f008937705cf6e7bf8b6ece5ca055991e3eb130bca8023e20b86aa9a3", size = 568497, upload-time = "2025-06-13T14:08:30.089Z" }, + { url = "https://files.pythonhosted.org/packages/9b/f3/2a4b2798275a574801221d94d599ed3e26d19f6378a7364cdfa3bee53944/pyzmq-27.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:00387d12a8af4b24883895f7e6b9495dc20a66027b696536edac35cb988c38f3", size = 629315, upload-time = "2025-06-13T14:08:31.877Z" }, + { url = "https://files.pythonhosted.org/packages/da/eb/386a70314f305816142d6e8537f5557e5fd9614c03698d6c88cbd6c41190/pyzmq-27.0.0-cp39-cp39-win_arm64.whl", hash = "sha256:4c19d39c04c29a6619adfeb19e3735c421b3bfee082f320662f52e59c47202ba", size = 559596, upload-time = "2025-06-13T14:08:33.357Z" }, + { url = "https://files.pythonhosted.org/packages/09/6f/be6523a7f3821c0b5370912ef02822c028611360e0d206dd945bdbf9eaef/pyzmq-27.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:656c1866505a5735d0660b7da6d7147174bbf59d4975fc2b7f09f43c9bc25745", size = 835950, upload-time = "2025-06-13T14:08:35Z" }, + { url = "https://files.pythonhosted.org/packages/c6/1e/a50fdd5c15018de07ab82a61bc460841be967ee7bbe7abee3b714d66f7ac/pyzmq-27.0.0-pp310-pypy310_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:74175b9e12779382432dd1d1f5960ebe7465d36649b98a06c6b26be24d173fab", size = 799876, upload-time = "2025-06-13T14:08:36.849Z" }, + { url = "https://files.pythonhosted.org/packages/88/a1/89eb5b71f5a504f8f887aceb8e1eb3626e00c00aa8085381cdff475440dc/pyzmq-27.0.0-pp310-pypy310_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d8c6de908465697a8708e4d6843a1e884f567962fc61eb1706856545141d0cbb", size = 567400, upload-time = "2025-06-13T14:08:38.95Z" }, + { url = "https://files.pythonhosted.org/packages/56/aa/4571dbcff56cfb034bac73fde8294e123c975ce3eea89aff31bf6dc6382b/pyzmq-27.0.0-pp310-pypy310_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c644aaacc01d0df5c7072826df45e67301f191c55f68d7b2916d83a9ddc1b551", size = 747031, upload-time = "2025-06-13T14:08:40.413Z" }, + { url = "https://files.pythonhosted.org/packages/46/e0/d25f30fe0991293c5b2f5ef3b070d35fa6d57c0c7428898c3ab4913d0297/pyzmq-27.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:10f70c1d9a446a85013a36871a296007f6fe4232b530aa254baf9da3f8328bc0", size = 544726, upload-time = "2025-06-13T14:08:41.997Z" }, + { url = "https://files.pythonhosted.org/packages/98/a6/92394373b8dbc1edc9d53c951e8d3989d518185174ee54492ec27711779d/pyzmq-27.0.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:cd1dc59763effd1576f8368047c9c31468fce0af89d76b5067641137506792ae", size = 835948, upload-time = "2025-06-13T14:08:43.516Z" }, + { url = "https://files.pythonhosted.org/packages/56/f3/4dc38d75d9995bfc18773df3e41f2a2ca9b740b06f1a15dbf404077e7588/pyzmq-27.0.0-pp311-pypy311_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:60e8cc82d968174650c1860d7b716366caab9973787a1c060cf8043130f7d0f7", size = 799874, upload-time = "2025-06-13T14:08:45.017Z" }, + { url = "https://files.pythonhosted.org/packages/ab/ba/64af397e0f421453dc68e31d5e0784d554bf39013a2de0872056e96e58af/pyzmq-27.0.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:14fe7aaac86e4e93ea779a821967360c781d7ac5115b3f1a171ced77065a0174", size = 567400, upload-time = "2025-06-13T14:08:46.855Z" }, + { url = "https://files.pythonhosted.org/packages/63/87/ec956cbe98809270b59a22891d5758edae147a258e658bf3024a8254c855/pyzmq-27.0.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6ad0562d4e6abb785be3e4dd68599c41be821b521da38c402bc9ab2a8e7ebc7e", size = 747031, upload-time = "2025-06-13T14:08:48.419Z" }, + { url = "https://files.pythonhosted.org/packages/be/8a/4a3764a68abc02e2fbb0668d225b6fda5cd39586dd099cee8b2ed6ab0452/pyzmq-27.0.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:9df43a2459cd3a3563404c1456b2c4c69564daa7dbaf15724c09821a3329ce46", size = 544726, upload-time = "2025-06-13T14:08:49.903Z" }, + { url = "https://files.pythonhosted.org/packages/03/f6/11b2a6c8cd13275c31cddc3f89981a1b799a3c41dec55289fa18dede96b5/pyzmq-27.0.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:39ddd3ba0a641f01d8f13a3cfd4c4924eb58e660d8afe87e9061d6e8ca6f7ac3", size = 835944, upload-time = "2025-06-13T14:08:59.189Z" }, + { url = "https://files.pythonhosted.org/packages/73/34/aa39076f4e07ae1912fa4b966fe24e831e01d736d4c1c7e8a3aa28a555b5/pyzmq-27.0.0-pp39-pypy39_pp73-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:8ca7e6a0388dd9e1180b14728051068f4efe83e0d2de058b5ff92c63f399a73f", size = 799869, upload-time = "2025-06-13T14:09:00.758Z" }, + { url = "https://files.pythonhosted.org/packages/65/f3/81ed6b3dd242408ee79c0d8a88734644acf208baee8666ecd7e52664cf55/pyzmq-27.0.0-pp39-pypy39_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2524c40891be6a3106885a3935d58452dd83eb7a5742a33cc780a1ad4c49dec0", size = 758371, upload-time = "2025-06-13T14:09:02.461Z" }, + { url = "https://files.pythonhosted.org/packages/e1/04/dac4ca674764281caf744e8adefd88f7e325e1605aba0f9a322094b903fa/pyzmq-27.0.0-pp39-pypy39_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6a56e3e5bd2d62a01744fd2f1ce21d760c7c65f030e9522738d75932a14ab62a", size = 567393, upload-time = "2025-06-13T14:09:04.037Z" }, + { url = "https://files.pythonhosted.org/packages/51/8b/619a9ee2fa4d3c724fbadde946427735ade64da03894b071bbdc3b789d83/pyzmq-27.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:096af9e133fec3a72108ddefba1e42985cb3639e9de52cfd336b6fc23aa083e9", size = 544715, upload-time = "2025-06-13T14:09:05.579Z" }, +] + +[[package]] +name = "requests" +version = "2.32.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi", marker = "python_full_version >= '3.10'" }, + { name = "charset-normalizer", marker = "python_full_version >= '3.10'" }, + { name = "idna", marker = "python_full_version >= '3.10'" }, + { name = "urllib3", marker = "python_full_version >= '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e1/0a/929373653770d8a0d7ea76c37de6e41f11eb07559b103b1c02cafb3f7cf8/requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422", size = 135258, upload-time = "2025-06-09T16:43:07.34Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7c/e4/56027c4a6b4ae70ca9de302488c5ca95ad4a39e190093d6c1a8ace08341b/requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c", size = 64847, upload-time = "2025-06-09T16:43:05.728Z" }, +] + +[[package]] +name = "scikit-learn" +version = "1.6.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", + "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "joblib", marker = "python_full_version < '3.10'" }, + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "scipy", version = "1.13.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "threadpoolctl", marker = "python_full_version < '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9e/a5/4ae3b3a0755f7b35a280ac90b28817d1f380318973cff14075ab41ef50d9/scikit_learn-1.6.1.tar.gz", hash = "sha256:b4fc2525eca2c69a59260f583c56a7557c6ccdf8deafdba6e060f94c1c59738e", size = 7068312, upload-time = "2025-01-10T08:07:55.348Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2e/3a/f4597eb41049110b21ebcbb0bcb43e4035017545daa5eedcfeb45c08b9c5/scikit_learn-1.6.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d056391530ccd1e501056160e3c9673b4da4805eb67eb2bdf4e983e1f9c9204e", size = 12067702, upload-time = "2025-01-10T08:05:56.515Z" }, + { url = "https://files.pythonhosted.org/packages/37/19/0423e5e1fd1c6ec5be2352ba05a537a473c1677f8188b9306097d684b327/scikit_learn-1.6.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:0c8d036eb937dbb568c6242fa598d551d88fb4399c0344d95c001980ec1c7d36", size = 11112765, upload-time = "2025-01-10T08:06:00.272Z" }, + { url = "https://files.pythonhosted.org/packages/70/95/d5cb2297a835b0f5fc9a77042b0a2d029866379091ab8b3f52cc62277808/scikit_learn-1.6.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8634c4bd21a2a813e0a7e3900464e6d593162a29dd35d25bdf0103b3fce60ed5", size = 12643991, upload-time = "2025-01-10T08:06:04.813Z" }, + { url = "https://files.pythonhosted.org/packages/b7/91/ab3c697188f224d658969f678be86b0968ccc52774c8ab4a86a07be13c25/scikit_learn-1.6.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:775da975a471c4f6f467725dff0ced5c7ac7bda5e9316b260225b48475279a1b", size = 13497182, upload-time = "2025-01-10T08:06:08.42Z" }, + { url = "https://files.pythonhosted.org/packages/17/04/d5d556b6c88886c092cc989433b2bab62488e0f0dafe616a1d5c9cb0efb1/scikit_learn-1.6.1-cp310-cp310-win_amd64.whl", hash = "sha256:8a600c31592bd7dab31e1c61b9bbd6dea1b3433e67d264d17ce1017dbdce8002", size = 11125517, upload-time = "2025-01-10T08:06:12.783Z" }, + { url = "https://files.pythonhosted.org/packages/6c/2a/e291c29670795406a824567d1dfc91db7b699799a002fdaa452bceea8f6e/scikit_learn-1.6.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:72abc587c75234935e97d09aa4913a82f7b03ee0b74111dcc2881cba3c5a7b33", size = 12102620, upload-time = "2025-01-10T08:06:16.675Z" }, + { url = "https://files.pythonhosted.org/packages/25/92/ee1d7a00bb6b8c55755d4984fd82608603a3cc59959245068ce32e7fb808/scikit_learn-1.6.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:b3b00cdc8f1317b5f33191df1386c0befd16625f49d979fe77a8d44cae82410d", size = 11116234, upload-time = "2025-01-10T08:06:21.83Z" }, + { url = "https://files.pythonhosted.org/packages/30/cd/ed4399485ef364bb25f388ab438e3724e60dc218c547a407b6e90ccccaef/scikit_learn-1.6.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc4765af3386811c3ca21638f63b9cf5ecf66261cc4815c1db3f1e7dc7b79db2", size = 12592155, upload-time = "2025-01-10T08:06:27.309Z" }, + { url = "https://files.pythonhosted.org/packages/a8/f3/62fc9a5a659bb58a03cdd7e258956a5824bdc9b4bb3c5d932f55880be569/scikit_learn-1.6.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:25fc636bdaf1cc2f4a124a116312d837148b5e10872147bdaf4887926b8c03d8", size = 13497069, upload-time = "2025-01-10T08:06:32.515Z" }, + { url = "https://files.pythonhosted.org/packages/a1/a6/c5b78606743a1f28eae8f11973de6613a5ee87366796583fb74c67d54939/scikit_learn-1.6.1-cp311-cp311-win_amd64.whl", hash = "sha256:fa909b1a36e000a03c382aade0bd2063fd5680ff8b8e501660c0f59f021a6415", size = 11139809, upload-time = "2025-01-10T08:06:35.514Z" }, + { url = "https://files.pythonhosted.org/packages/0a/18/c797c9b8c10380d05616db3bfb48e2a3358c767affd0857d56c2eb501caa/scikit_learn-1.6.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:926f207c804104677af4857b2c609940b743d04c4c35ce0ddc8ff4f053cddc1b", size = 12104516, upload-time = "2025-01-10T08:06:40.009Z" }, + { url = "https://files.pythonhosted.org/packages/c4/b7/2e35f8e289ab70108f8cbb2e7a2208f0575dc704749721286519dcf35f6f/scikit_learn-1.6.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:2c2cae262064e6a9b77eee1c8e768fc46aa0b8338c6a8297b9b6759720ec0ff2", size = 11167837, upload-time = "2025-01-10T08:06:43.305Z" }, + { url = "https://files.pythonhosted.org/packages/a4/f6/ff7beaeb644bcad72bcfd5a03ff36d32ee4e53a8b29a639f11bcb65d06cd/scikit_learn-1.6.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1061b7c028a8663fb9a1a1baf9317b64a257fcb036dae5c8752b2abef31d136f", size = 12253728, upload-time = "2025-01-10T08:06:47.618Z" }, + { url = "https://files.pythonhosted.org/packages/29/7a/8bce8968883e9465de20be15542f4c7e221952441727c4dad24d534c6d99/scikit_learn-1.6.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e69fab4ebfc9c9b580a7a80111b43d214ab06250f8a7ef590a4edf72464dd86", size = 13147700, upload-time = "2025-01-10T08:06:50.888Z" }, + { url = "https://files.pythonhosted.org/packages/62/27/585859e72e117fe861c2079bcba35591a84f801e21bc1ab85bce6ce60305/scikit_learn-1.6.1-cp312-cp312-win_amd64.whl", hash = "sha256:70b1d7e85b1c96383f872a519b3375f92f14731e279a7b4c6cfd650cf5dffc52", size = 11110613, upload-time = "2025-01-10T08:06:54.115Z" }, + { url = "https://files.pythonhosted.org/packages/2e/59/8eb1872ca87009bdcdb7f3cdc679ad557b992c12f4b61f9250659e592c63/scikit_learn-1.6.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2ffa1e9e25b3d93990e74a4be2c2fc61ee5af85811562f1288d5d055880c4322", size = 12010001, upload-time = "2025-01-10T08:06:58.613Z" }, + { url = "https://files.pythonhosted.org/packages/9d/05/f2fc4effc5b32e525408524c982c468c29d22f828834f0625c5ef3d601be/scikit_learn-1.6.1-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:dc5cf3d68c5a20ad6d571584c0750ec641cc46aeef1c1507be51300e6003a7e1", size = 11096360, upload-time = "2025-01-10T08:07:01.556Z" }, + { url = "https://files.pythonhosted.org/packages/c8/e4/4195d52cf4f113573fb8ebc44ed5a81bd511a92c0228889125fac2f4c3d1/scikit_learn-1.6.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c06beb2e839ecc641366000ca84f3cf6fa9faa1777e29cf0c04be6e4d096a348", size = 12209004, upload-time = "2025-01-10T08:07:06.931Z" }, + { url = "https://files.pythonhosted.org/packages/94/be/47e16cdd1e7fcf97d95b3cb08bde1abb13e627861af427a3651fcb80b517/scikit_learn-1.6.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e8ca8cb270fee8f1f76fa9bfd5c3507d60c6438bbee5687f81042e2bb98e5a97", size = 13171776, upload-time = "2025-01-10T08:07:11.715Z" }, + { url = "https://files.pythonhosted.org/packages/34/b0/ca92b90859070a1487827dbc672f998da95ce83edce1270fc23f96f1f61a/scikit_learn-1.6.1-cp313-cp313-win_amd64.whl", hash = "sha256:7a1c43c8ec9fde528d664d947dc4c0789be4077a3647f232869f41d9bf50e0fb", size = 11071865, upload-time = "2025-01-10T08:07:16.088Z" }, + { url = "https://files.pythonhosted.org/packages/12/ae/993b0fb24a356e71e9a894e42b8a9eec528d4c70217353a1cd7a48bc25d4/scikit_learn-1.6.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:a17c1dea1d56dcda2fac315712f3651a1fea86565b64b48fa1bc090249cbf236", size = 11955804, upload-time = "2025-01-10T08:07:20.385Z" }, + { url = "https://files.pythonhosted.org/packages/d6/54/32fa2ee591af44507eac86406fa6bba968d1eb22831494470d0a2e4a1eb1/scikit_learn-1.6.1-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:6a7aa5f9908f0f28f4edaa6963c0a6183f1911e63a69aa03782f0d924c830a35", size = 11100530, upload-time = "2025-01-10T08:07:23.675Z" }, + { url = "https://files.pythonhosted.org/packages/3f/58/55856da1adec655bdce77b502e94a267bf40a8c0b89f8622837f89503b5a/scikit_learn-1.6.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0650e730afb87402baa88afbf31c07b84c98272622aaba002559b614600ca691", size = 12433852, upload-time = "2025-01-10T08:07:26.817Z" }, + { url = "https://files.pythonhosted.org/packages/ff/4f/c83853af13901a574f8f13b645467285a48940f185b690936bb700a50863/scikit_learn-1.6.1-cp313-cp313t-win_amd64.whl", hash = "sha256:3f59fe08dc03ea158605170eb52b22a105f238a5d512c4470ddeca71feae8e5f", size = 11337256, upload-time = "2025-01-10T08:07:31.084Z" }, + { url = "https://files.pythonhosted.org/packages/d2/37/b305b759cc65829fe1b8853ff3e308b12cdd9d8884aa27840835560f2b42/scikit_learn-1.6.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6849dd3234e87f55dce1db34c89a810b489ead832aaf4d4550b7ea85628be6c1", size = 12101868, upload-time = "2025-01-10T08:07:34.189Z" }, + { url = "https://files.pythonhosted.org/packages/83/74/f64379a4ed5879d9db744fe37cfe1978c07c66684d2439c3060d19a536d8/scikit_learn-1.6.1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:e7be3fa5d2eb9be7d77c3734ff1d599151bb523674be9b834e8da6abe132f44e", size = 11144062, upload-time = "2025-01-10T08:07:37.67Z" }, + { url = "https://files.pythonhosted.org/packages/fd/dc/d5457e03dc9c971ce2b0d750e33148dd060fefb8b7dc71acd6054e4bb51b/scikit_learn-1.6.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:44a17798172df1d3c1065e8fcf9019183f06c87609b49a124ebdf57ae6cb0107", size = 12693173, upload-time = "2025-01-10T08:07:42.713Z" }, + { url = "https://files.pythonhosted.org/packages/79/35/b1d2188967c3204c78fa79c9263668cf1b98060e8e58d1a730fe5b2317bb/scikit_learn-1.6.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8b7a3b86e411e4bce21186e1c180d792f3d99223dcfa3b4f597ecc92fa1a422", size = 13518605, upload-time = "2025-01-10T08:07:46.551Z" }, + { url = "https://files.pythonhosted.org/packages/fb/d8/8d603bdd26601f4b07e2363032b8565ab82eb857f93d86d0f7956fcf4523/scikit_learn-1.6.1-cp39-cp39-win_amd64.whl", hash = "sha256:7a73d457070e3318e32bdb3aa79a8d990474f19035464dfd8bede2883ab5dc3b", size = 11155078, upload-time = "2025-01-10T08:07:51.376Z" }, +] + +[[package]] +name = "scikit-learn" +version = "1.7.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "joblib", marker = "python_full_version >= '3.10'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "scipy", version = "1.16.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "threadpoolctl", marker = "python_full_version >= '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/3b/29fa87e76b1d7b3b77cc1fcbe82e6e6b8cd704410705b008822de530277c/scikit_learn-1.7.0.tar.gz", hash = "sha256:c01e869b15aec88e2cdb73d27f15bdbe03bce8e2fb43afbe77c45d399e73a5a3", size = 7178217, upload-time = "2025-06-05T22:02:46.703Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a4/70/e725b1da11e7e833f558eb4d3ea8b7ed7100edda26101df074f1ae778235/scikit_learn-1.7.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9fe7f51435f49d97bd41d724bb3e11eeb939882af9c29c931a8002c357e8cdd5", size = 11728006, upload-time = "2025-06-05T22:01:43.007Z" }, + { url = "https://files.pythonhosted.org/packages/32/aa/43874d372e9dc51eb361f5c2f0a4462915c9454563b3abb0d9457c66b7e9/scikit_learn-1.7.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:d0c93294e1e1acbee2d029b1f2a064f26bd928b284938d51d412c22e0c977eb3", size = 10726255, upload-time = "2025-06-05T22:01:46.082Z" }, + { url = "https://files.pythonhosted.org/packages/f5/1a/da73cc18e00f0b9ae89f7e4463a02fb6e0569778120aeab138d9554ecef0/scikit_learn-1.7.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf3755f25f145186ad8c403312f74fb90df82a4dfa1af19dc96ef35f57237a94", size = 12205657, upload-time = "2025-06-05T22:01:48.729Z" }, + { url = "https://files.pythonhosted.org/packages/fb/f6/800cb3243dd0137ca6d98df8c9d539eb567ba0a0a39ecd245c33fab93510/scikit_learn-1.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2726c8787933add436fb66fb63ad18e8ef342dfb39bbbd19dc1e83e8f828a85a", size = 12877290, upload-time = "2025-06-05T22:01:51.073Z" }, + { url = "https://files.pythonhosted.org/packages/4c/bd/99c3ccb49946bd06318fe194a1c54fb7d57ac4fe1c2f4660d86b3a2adf64/scikit_learn-1.7.0-cp310-cp310-win_amd64.whl", hash = "sha256:e2539bb58886a531b6e86a510c0348afaadd25005604ad35966a85c2ec378800", size = 10713211, upload-time = "2025-06-05T22:01:54.107Z" }, + { url = "https://files.pythonhosted.org/packages/5a/42/c6b41711c2bee01c4800ad8da2862c0b6d2956a399d23ce4d77f2ca7f0c7/scikit_learn-1.7.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8ef09b1615e1ad04dc0d0054ad50634514818a8eb3ee3dee99af3bffc0ef5007", size = 11719657, upload-time = "2025-06-05T22:01:56.345Z" }, + { url = "https://files.pythonhosted.org/packages/a3/24/44acca76449e391b6b2522e67a63c0454b7c1f060531bdc6d0118fb40851/scikit_learn-1.7.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:7d7240c7b19edf6ed93403f43b0fcb0fe95b53bc0b17821f8fb88edab97085ef", size = 10712636, upload-time = "2025-06-05T22:01:59.093Z" }, + { url = "https://files.pythonhosted.org/packages/9f/1b/fcad1ccb29bdc9b96bcaa2ed8345d56afb77b16c0c47bafe392cc5d1d213/scikit_learn-1.7.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:80bd3bd4e95381efc47073a720d4cbab485fc483966f1709f1fd559afac57ab8", size = 12242817, upload-time = "2025-06-05T22:02:01.43Z" }, + { url = "https://files.pythonhosted.org/packages/c6/38/48b75c3d8d268a3f19837cb8a89155ead6e97c6892bb64837183ea41db2b/scikit_learn-1.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9dbe48d69aa38ecfc5a6cda6c5df5abef0c0ebdb2468e92437e2053f84abb8bc", size = 12873961, upload-time = "2025-06-05T22:02:03.951Z" }, + { url = "https://files.pythonhosted.org/packages/f4/5a/ba91b8c57aa37dbd80d5ff958576a9a8c14317b04b671ae7f0d09b00993a/scikit_learn-1.7.0-cp311-cp311-win_amd64.whl", hash = "sha256:8fa979313b2ffdfa049ed07252dc94038def3ecd49ea2a814db5401c07f1ecfa", size = 10717277, upload-time = "2025-06-05T22:02:06.77Z" }, + { url = "https://files.pythonhosted.org/packages/70/3a/bffab14e974a665a3ee2d79766e7389572ffcaad941a246931c824afcdb2/scikit_learn-1.7.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c2c7243d34aaede0efca7a5a96d67fddaebb4ad7e14a70991b9abee9dc5c0379", size = 11646758, upload-time = "2025-06-05T22:02:09.51Z" }, + { url = "https://files.pythonhosted.org/packages/58/d8/f3249232fa79a70cb40595282813e61453c1e76da3e1a44b77a63dd8d0cb/scikit_learn-1.7.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:9f39f6a811bf3f15177b66c82cbe0d7b1ebad9f190737dcdef77cfca1ea3c19c", size = 10673971, upload-time = "2025-06-05T22:02:12.217Z" }, + { url = "https://files.pythonhosted.org/packages/67/93/eb14c50533bea2f77758abe7d60a10057e5f2e2cdcf0a75a14c6bc19c734/scikit_learn-1.7.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63017a5f9a74963d24aac7590287149a8d0f1a0799bbe7173c0d8ba1523293c0", size = 11818428, upload-time = "2025-06-05T22:02:14.947Z" }, + { url = "https://files.pythonhosted.org/packages/08/17/804cc13b22a8663564bb0b55fb89e661a577e4e88a61a39740d58b909efe/scikit_learn-1.7.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b2f8a0b1e73e9a08b7cc498bb2aeab36cdc1f571f8ab2b35c6e5d1c7115d97d", size = 12505887, upload-time = "2025-06-05T22:02:17.824Z" }, + { url = "https://files.pythonhosted.org/packages/68/c7/4e956281a077f4835458c3f9656c666300282d5199039f26d9de1dabd9be/scikit_learn-1.7.0-cp312-cp312-win_amd64.whl", hash = "sha256:34cc8d9d010d29fb2b7cbcd5ccc24ffdd80515f65fe9f1e4894ace36b267ce19", size = 10668129, upload-time = "2025-06-05T22:02:20.536Z" }, + { url = "https://files.pythonhosted.org/packages/9a/c3/a85dcccdaf1e807e6f067fa95788a6485b0491d9ea44fd4c812050d04f45/scikit_learn-1.7.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5b7974f1f32bc586c90145df51130e02267e4b7e77cab76165c76cf43faca0d9", size = 11559841, upload-time = "2025-06-05T22:02:23.308Z" }, + { url = "https://files.pythonhosted.org/packages/d8/57/eea0de1562cc52d3196eae51a68c5736a31949a465f0b6bb3579b2d80282/scikit_learn-1.7.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:014e07a23fe02e65f9392898143c542a50b6001dbe89cb867e19688e468d049b", size = 10616463, upload-time = "2025-06-05T22:02:26.068Z" }, + { url = "https://files.pythonhosted.org/packages/10/a4/39717ca669296dfc3a62928393168da88ac9d8cbec88b6321ffa62c6776f/scikit_learn-1.7.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e7e7ced20582d3a5516fb6f405fd1d254e1f5ce712bfef2589f51326af6346e8", size = 11766512, upload-time = "2025-06-05T22:02:28.689Z" }, + { url = "https://files.pythonhosted.org/packages/d5/cd/a19722241d5f7b51e08351e1e82453e0057aeb7621b17805f31fcb57bb6c/scikit_learn-1.7.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1babf2511e6ffd695da7a983b4e4d6de45dce39577b26b721610711081850906", size = 12461075, upload-time = "2025-06-05T22:02:31.233Z" }, + { url = "https://files.pythonhosted.org/packages/f3/bc/282514272815c827a9acacbe5b99f4f1a4bc5961053719d319480aee0812/scikit_learn-1.7.0-cp313-cp313-win_amd64.whl", hash = "sha256:5abd2acff939d5bd4701283f009b01496832d50ddafa83c90125a4e41c33e314", size = 10652517, upload-time = "2025-06-05T22:02:34.139Z" }, + { url = "https://files.pythonhosted.org/packages/ea/78/7357d12b2e4c6674175f9a09a3ba10498cde8340e622715bcc71e532981d/scikit_learn-1.7.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:e39d95a929b112047c25b775035c8c234c5ca67e681ce60d12413afb501129f7", size = 12111822, upload-time = "2025-06-05T22:02:36.904Z" }, + { url = "https://files.pythonhosted.org/packages/d0/0c/9c3715393343f04232f9d81fe540eb3831d0b4ec351135a145855295110f/scikit_learn-1.7.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:0521cb460426c56fee7e07f9365b0f45ec8ca7b2d696534ac98bfb85e7ae4775", size = 11325286, upload-time = "2025-06-05T22:02:39.739Z" }, + { url = "https://files.pythonhosted.org/packages/64/e0/42282ad3dd70b7c1a5f65c412ac3841f6543502a8d6263cae7b466612dc9/scikit_learn-1.7.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:317ca9f83acbde2883bd6bb27116a741bfcb371369706b4f9973cf30e9a03b0d", size = 12380865, upload-time = "2025-06-05T22:02:42.137Z" }, + { url = "https://files.pythonhosted.org/packages/4e/d0/3ef4ab2c6be4aa910445cd09c5ef0b44512e3de2cfb2112a88bb647d2cf7/scikit_learn-1.7.0-cp313-cp313t-win_amd64.whl", hash = "sha256:126c09740a6f016e815ab985b21e3a0656835414521c81fc1a8da78b679bdb75", size = 11549609, upload-time = "2025-06-05T22:02:44.483Z" }, +] + +[[package]] +name = "scipy" +version = "1.13.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", + "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ae/00/48c2f661e2816ccf2ecd77982f6605b2950afe60f60a52b4cbbc2504aa8f/scipy-1.13.1.tar.gz", hash = "sha256:095a87a0312b08dfd6a6155cbbd310a8c51800fc931b8c0b84003014b874ed3c", size = 57210720, upload-time = "2024-05-23T03:29:26.079Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/33/59/41b2529908c002ade869623b87eecff3e11e3ce62e996d0bdcb536984187/scipy-1.13.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:20335853b85e9a49ff7572ab453794298bcf0354d8068c5f6775a0eabf350aca", size = 39328076, upload-time = "2024-05-23T03:19:01.687Z" }, + { url = "https://files.pythonhosted.org/packages/d5/33/f1307601f492f764062ce7dd471a14750f3360e33cd0f8c614dae208492c/scipy-1.13.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:d605e9c23906d1994f55ace80e0125c587f96c020037ea6aa98d01b4bd2e222f", size = 30306232, upload-time = "2024-05-23T03:19:09.089Z" }, + { url = "https://files.pythonhosted.org/packages/c0/66/9cd4f501dd5ea03e4a4572ecd874936d0da296bd04d1c45ae1a4a75d9c3a/scipy-1.13.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cfa31f1def5c819b19ecc3a8b52d28ffdcc7ed52bb20c9a7589669dd3c250989", size = 33743202, upload-time = "2024-05-23T03:19:15.138Z" }, + { url = "https://files.pythonhosted.org/packages/a3/ba/7255e5dc82a65adbe83771c72f384d99c43063648456796436c9a5585ec3/scipy-1.13.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f26264b282b9da0952a024ae34710c2aff7d27480ee91a2e82b7b7073c24722f", size = 38577335, upload-time = "2024-05-23T03:19:21.984Z" }, + { url = "https://files.pythonhosted.org/packages/49/a5/bb9ded8326e9f0cdfdc412eeda1054b914dfea952bda2097d174f8832cc0/scipy-1.13.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:eccfa1906eacc02de42d70ef4aecea45415f5be17e72b61bafcfd329bdc52e94", size = 38820728, upload-time = "2024-05-23T03:19:28.225Z" }, + { url = "https://files.pythonhosted.org/packages/12/30/df7a8fcc08f9b4a83f5f27cfaaa7d43f9a2d2ad0b6562cced433e5b04e31/scipy-1.13.1-cp310-cp310-win_amd64.whl", hash = "sha256:2831f0dc9c5ea9edd6e51e6e769b655f08ec6db6e2e10f86ef39bd32eb11da54", size = 46210588, upload-time = "2024-05-23T03:19:35.661Z" }, + { url = "https://files.pythonhosted.org/packages/b4/15/4a4bb1b15bbd2cd2786c4f46e76b871b28799b67891f23f455323a0cdcfb/scipy-1.13.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:27e52b09c0d3a1d5b63e1105f24177e544a222b43611aaf5bc44d4a0979e32f9", size = 39333805, upload-time = "2024-05-23T03:19:43.081Z" }, + { url = "https://files.pythonhosted.org/packages/ba/92/42476de1af309c27710004f5cdebc27bec62c204db42e05b23a302cb0c9a/scipy-1.13.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:54f430b00f0133e2224c3ba42b805bfd0086fe488835effa33fa291561932326", size = 30317687, upload-time = "2024-05-23T03:19:48.799Z" }, + { url = "https://files.pythonhosted.org/packages/80/ba/8be64fe225360a4beb6840f3cbee494c107c0887f33350d0a47d55400b01/scipy-1.13.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e89369d27f9e7b0884ae559a3a956e77c02114cc60a6058b4e5011572eea9299", size = 33694638, upload-time = "2024-05-23T03:19:55.104Z" }, + { url = "https://files.pythonhosted.org/packages/36/07/035d22ff9795129c5a847c64cb43c1fa9188826b59344fee28a3ab02e283/scipy-1.13.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a78b4b3345f1b6f68a763c6e25c0c9a23a9fd0f39f5f3d200efe8feda560a5fa", size = 38569931, upload-time = "2024-05-23T03:20:01.82Z" }, + { url = "https://files.pythonhosted.org/packages/d9/10/f9b43de37e5ed91facc0cfff31d45ed0104f359e4f9a68416cbf4e790241/scipy-1.13.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:45484bee6d65633752c490404513b9ef02475b4284c4cfab0ef946def50b3f59", size = 38838145, upload-time = "2024-05-23T03:20:09.173Z" }, + { url = "https://files.pythonhosted.org/packages/4a/48/4513a1a5623a23e95f94abd675ed91cfb19989c58e9f6f7d03990f6caf3d/scipy-1.13.1-cp311-cp311-win_amd64.whl", hash = "sha256:5713f62f781eebd8d597eb3f88b8bf9274e79eeabf63afb4a737abc6c84ad37b", size = 46196227, upload-time = "2024-05-23T03:20:16.433Z" }, + { url = "https://files.pythonhosted.org/packages/f2/7b/fb6b46fbee30fc7051913068758414f2721003a89dd9a707ad49174e3843/scipy-1.13.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5d72782f39716b2b3509cd7c33cdc08c96f2f4d2b06d51e52fb45a19ca0c86a1", size = 39357301, upload-time = "2024-05-23T03:20:23.538Z" }, + { url = "https://files.pythonhosted.org/packages/dc/5a/2043a3bde1443d94014aaa41e0b50c39d046dda8360abd3b2a1d3f79907d/scipy-1.13.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:017367484ce5498445aade74b1d5ab377acdc65e27095155e448c88497755a5d", size = 30363348, upload-time = "2024-05-23T03:20:29.885Z" }, + { url = "https://files.pythonhosted.org/packages/e7/cb/26e4a47364bbfdb3b7fb3363be6d8a1c543bcd70a7753ab397350f5f189a/scipy-1.13.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:949ae67db5fa78a86e8fa644b9a6b07252f449dcf74247108c50e1d20d2b4627", size = 33406062, upload-time = "2024-05-23T03:20:36.012Z" }, + { url = "https://files.pythonhosted.org/packages/88/ab/6ecdc526d509d33814835447bbbeedbebdec7cca46ef495a61b00a35b4bf/scipy-1.13.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de3ade0e53bc1f21358aa74ff4830235d716211d7d077e340c7349bc3542e884", size = 38218311, upload-time = "2024-05-23T03:20:42.086Z" }, + { url = "https://files.pythonhosted.org/packages/0b/00/9f54554f0f8318100a71515122d8f4f503b1a2c4b4cfab3b4b68c0eb08fa/scipy-1.13.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2ac65fb503dad64218c228e2dc2d0a0193f7904747db43014645ae139c8fad16", size = 38442493, upload-time = "2024-05-23T03:20:48.292Z" }, + { url = "https://files.pythonhosted.org/packages/3e/df/963384e90733e08eac978cd103c34df181d1fec424de383cdc443f418dd4/scipy-1.13.1-cp312-cp312-win_amd64.whl", hash = "sha256:cdd7dacfb95fea358916410ec61bbc20440f7860333aee6d882bb8046264e949", size = 45910955, upload-time = "2024-05-23T03:20:55.091Z" }, + { url = "https://files.pythonhosted.org/packages/7f/29/c2ea58c9731b9ecb30b6738113a95d147e83922986b34c685b8f6eefde21/scipy-1.13.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:436bbb42a94a8aeef855d755ce5a465479c721e9d684de76bf61a62e7c2b81d5", size = 39352927, upload-time = "2024-05-23T03:21:01.95Z" }, + { url = "https://files.pythonhosted.org/packages/5c/c0/e71b94b20ccf9effb38d7147c0064c08c622309fd487b1b677771a97d18c/scipy-1.13.1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:8335549ebbca860c52bf3d02f80784e91a004b71b059e3eea9678ba994796a24", size = 30324538, upload-time = "2024-05-23T03:21:07.634Z" }, + { url = "https://files.pythonhosted.org/packages/6d/0f/aaa55b06d474817cea311e7b10aab2ea1fd5d43bc6a2861ccc9caec9f418/scipy-1.13.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d533654b7d221a6a97304ab63c41c96473ff04459e404b83275b60aa8f4b7004", size = 33732190, upload-time = "2024-05-23T03:21:14.41Z" }, + { url = "https://files.pythonhosted.org/packages/35/f5/d0ad1a96f80962ba65e2ce1de6a1e59edecd1f0a7b55990ed208848012e0/scipy-1.13.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:637e98dcf185ba7f8e663e122ebf908c4702420477ae52a04f9908707456ba4d", size = 38612244, upload-time = "2024-05-23T03:21:21.827Z" }, + { url = "https://files.pythonhosted.org/packages/8d/02/1165905f14962174e6569076bcc3315809ae1291ed14de6448cc151eedfd/scipy-1.13.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a014c2b3697bde71724244f63de2476925596c24285c7a637364761f8710891c", size = 38845637, upload-time = "2024-05-23T03:21:28.729Z" }, + { url = "https://files.pythonhosted.org/packages/3e/77/dab54fe647a08ee4253963bcd8f9cf17509c8ca64d6335141422fe2e2114/scipy-1.13.1-cp39-cp39-win_amd64.whl", hash = "sha256:392e4ec766654852c25ebad4f64e4e584cf19820b980bc04960bca0b0cd6eaa2", size = 46227440, upload-time = "2024-05-23T03:21:35.888Z" }, +] + +[[package]] +name = "scipy" +version = "1.15.3" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0f/37/6964b830433e654ec7485e45a00fc9a27cf868d622838f6b6d9c5ec0d532/scipy-1.15.3.tar.gz", hash = "sha256:eae3cf522bc7df64b42cad3925c876e1b0b6c35c1337c93e12c0f366f55b0eaf", size = 59419214, upload-time = "2025-05-08T16:13:05.955Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/2f/4966032c5f8cc7e6a60f1b2e0ad686293b9474b65246b0c642e3ef3badd0/scipy-1.15.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:a345928c86d535060c9c2b25e71e87c39ab2f22fc96e9636bd74d1dbf9de448c", size = 38702770, upload-time = "2025-05-08T16:04:20.849Z" }, + { url = "https://files.pythonhosted.org/packages/a0/6e/0c3bf90fae0e910c274db43304ebe25a6b391327f3f10b5dcc638c090795/scipy-1.15.3-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:ad3432cb0f9ed87477a8d97f03b763fd1d57709f1bbde3c9369b1dff5503b253", size = 30094511, upload-time = "2025-05-08T16:04:27.103Z" }, + { url = "https://files.pythonhosted.org/packages/ea/b1/4deb37252311c1acff7f101f6453f0440794f51b6eacb1aad4459a134081/scipy-1.15.3-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:aef683a9ae6eb00728a542b796f52a5477b78252edede72b8327a886ab63293f", size = 22368151, upload-time = "2025-05-08T16:04:31.731Z" }, + { url = "https://files.pythonhosted.org/packages/38/7d/f457626e3cd3c29b3a49ca115a304cebb8cc6f31b04678f03b216899d3c6/scipy-1.15.3-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:1c832e1bd78dea67d5c16f786681b28dd695a8cb1fb90af2e27580d3d0967e92", size = 25121732, upload-time = "2025-05-08T16:04:36.596Z" }, + { url = "https://files.pythonhosted.org/packages/db/0a/92b1de4a7adc7a15dcf5bddc6e191f6f29ee663b30511ce20467ef9b82e4/scipy-1.15.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:263961f658ce2165bbd7b99fa5135195c3a12d9bef045345016b8b50c315cb82", size = 35547617, upload-time = "2025-05-08T16:04:43.546Z" }, + { url = "https://files.pythonhosted.org/packages/8e/6d/41991e503e51fc1134502694c5fa7a1671501a17ffa12716a4a9151af3df/scipy-1.15.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e2abc762b0811e09a0d3258abee2d98e0c703eee49464ce0069590846f31d40", size = 37662964, upload-time = "2025-05-08T16:04:49.431Z" }, + { url = "https://files.pythonhosted.org/packages/25/e1/3df8f83cb15f3500478c889be8fb18700813b95e9e087328230b98d547ff/scipy-1.15.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ed7284b21a7a0c8f1b6e5977ac05396c0d008b89e05498c8b7e8f4a1423bba0e", size = 37238749, upload-time = "2025-05-08T16:04:55.215Z" }, + { url = "https://files.pythonhosted.org/packages/93/3e/b3257cf446f2a3533ed7809757039016b74cd6f38271de91682aa844cfc5/scipy-1.15.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5380741e53df2c566f4d234b100a484b420af85deb39ea35a1cc1be84ff53a5c", size = 40022383, upload-time = "2025-05-08T16:05:01.914Z" }, + { url = "https://files.pythonhosted.org/packages/d1/84/55bc4881973d3f79b479a5a2e2df61c8c9a04fcb986a213ac9c02cfb659b/scipy-1.15.3-cp310-cp310-win_amd64.whl", hash = "sha256:9d61e97b186a57350f6d6fd72640f9e99d5a4a2b8fbf4b9ee9a841eab327dc13", size = 41259201, upload-time = "2025-05-08T16:05:08.166Z" }, + { url = "https://files.pythonhosted.org/packages/96/ab/5cc9f80f28f6a7dff646c5756e559823614a42b1939d86dd0ed550470210/scipy-1.15.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:993439ce220d25e3696d1b23b233dd010169b62f6456488567e830654ee37a6b", size = 38714255, upload-time = "2025-05-08T16:05:14.596Z" }, + { url = "https://files.pythonhosted.org/packages/4a/4a/66ba30abe5ad1a3ad15bfb0b59d22174012e8056ff448cb1644deccbfed2/scipy-1.15.3-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:34716e281f181a02341ddeaad584205bd2fd3c242063bd3423d61ac259ca7eba", size = 30111035, upload-time = "2025-05-08T16:05:20.152Z" }, + { url = "https://files.pythonhosted.org/packages/4b/fa/a7e5b95afd80d24313307f03624acc65801846fa75599034f8ceb9e2cbf6/scipy-1.15.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3b0334816afb8b91dab859281b1b9786934392aa3d527cd847e41bb6f45bee65", size = 22384499, upload-time = "2025-05-08T16:05:24.494Z" }, + { url = "https://files.pythonhosted.org/packages/17/99/f3aaddccf3588bb4aea70ba35328c204cadd89517a1612ecfda5b2dd9d7a/scipy-1.15.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:6db907c7368e3092e24919b5e31c76998b0ce1684d51a90943cb0ed1b4ffd6c1", size = 25152602, upload-time = "2025-05-08T16:05:29.313Z" }, + { url = "https://files.pythonhosted.org/packages/56/c5/1032cdb565f146109212153339f9cb8b993701e9fe56b1c97699eee12586/scipy-1.15.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:721d6b4ef5dc82ca8968c25b111e307083d7ca9091bc38163fb89243e85e3889", size = 35503415, upload-time = "2025-05-08T16:05:34.699Z" }, + { url = "https://files.pythonhosted.org/packages/bd/37/89f19c8c05505d0601ed5650156e50eb881ae3918786c8fd7262b4ee66d3/scipy-1.15.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39cb9c62e471b1bb3750066ecc3a3f3052b37751c7c3dfd0fd7e48900ed52982", size = 37652622, upload-time = "2025-05-08T16:05:40.762Z" }, + { url = "https://files.pythonhosted.org/packages/7e/31/be59513aa9695519b18e1851bb9e487de66f2d31f835201f1b42f5d4d475/scipy-1.15.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:795c46999bae845966368a3c013e0e00947932d68e235702b5c3f6ea799aa8c9", size = 37244796, upload-time = "2025-05-08T16:05:48.119Z" }, + { url = "https://files.pythonhosted.org/packages/10/c0/4f5f3eeccc235632aab79b27a74a9130c6c35df358129f7ac8b29f562ac7/scipy-1.15.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:18aaacb735ab38b38db42cb01f6b92a2d0d4b6aabefeb07f02849e47f8fb3594", size = 40047684, upload-time = "2025-05-08T16:05:54.22Z" }, + { url = "https://files.pythonhosted.org/packages/ab/a7/0ddaf514ce8a8714f6ed243a2b391b41dbb65251affe21ee3077ec45ea9a/scipy-1.15.3-cp311-cp311-win_amd64.whl", hash = "sha256:ae48a786a28412d744c62fd7816a4118ef97e5be0bee968ce8f0a2fba7acf3bb", size = 41246504, upload-time = "2025-05-08T16:06:00.437Z" }, + { url = "https://files.pythonhosted.org/packages/37/4b/683aa044c4162e10ed7a7ea30527f2cbd92e6999c10a8ed8edb253836e9c/scipy-1.15.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6ac6310fdbfb7aa6612408bd2f07295bcbd3fda00d2d702178434751fe48e019", size = 38766735, upload-time = "2025-05-08T16:06:06.471Z" }, + { url = "https://files.pythonhosted.org/packages/7b/7e/f30be3d03de07f25dc0ec926d1681fed5c732d759ac8f51079708c79e680/scipy-1.15.3-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:185cd3d6d05ca4b44a8f1595af87f9c372bb6acf9c808e99aa3e9aa03bd98cf6", size = 30173284, upload-time = "2025-05-08T16:06:11.686Z" }, + { url = "https://files.pythonhosted.org/packages/07/9c/0ddb0d0abdabe0d181c1793db51f02cd59e4901da6f9f7848e1f96759f0d/scipy-1.15.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:05dc6abcd105e1a29f95eada46d4a3f251743cfd7d3ae8ddb4088047f24ea477", size = 22446958, upload-time = "2025-05-08T16:06:15.97Z" }, + { url = "https://files.pythonhosted.org/packages/af/43/0bce905a965f36c58ff80d8bea33f1f9351b05fad4beaad4eae34699b7a1/scipy-1.15.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:06efcba926324df1696931a57a176c80848ccd67ce6ad020c810736bfd58eb1c", size = 25242454, upload-time = "2025-05-08T16:06:20.394Z" }, + { url = "https://files.pythonhosted.org/packages/56/30/a6f08f84ee5b7b28b4c597aca4cbe545535c39fe911845a96414700b64ba/scipy-1.15.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c05045d8b9bfd807ee1b9f38761993297b10b245f012b11b13b91ba8945f7e45", size = 35210199, upload-time = "2025-05-08T16:06:26.159Z" }, + { url = "https://files.pythonhosted.org/packages/0b/1f/03f52c282437a168ee2c7c14a1a0d0781a9a4a8962d84ac05c06b4c5b555/scipy-1.15.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:271e3713e645149ea5ea3e97b57fdab61ce61333f97cfae392c28ba786f9bb49", size = 37309455, upload-time = "2025-05-08T16:06:32.778Z" }, + { url = "https://files.pythonhosted.org/packages/89/b1/fbb53137f42c4bf630b1ffdfc2151a62d1d1b903b249f030d2b1c0280af8/scipy-1.15.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6cfd56fc1a8e53f6e89ba3a7a7251f7396412d655bca2aa5611c8ec9a6784a1e", size = 36885140, upload-time = "2025-05-08T16:06:39.249Z" }, + { url = "https://files.pythonhosted.org/packages/2e/2e/025e39e339f5090df1ff266d021892694dbb7e63568edcfe43f892fa381d/scipy-1.15.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0ff17c0bb1cb32952c09217d8d1eed9b53d1463e5f1dd6052c7857f83127d539", size = 39710549, upload-time = "2025-05-08T16:06:45.729Z" }, + { url = "https://files.pythonhosted.org/packages/e6/eb/3bf6ea8ab7f1503dca3a10df2e4b9c3f6b3316df07f6c0ded94b281c7101/scipy-1.15.3-cp312-cp312-win_amd64.whl", hash = "sha256:52092bc0472cfd17df49ff17e70624345efece4e1a12b23783a1ac59a1b728ed", size = 40966184, upload-time = "2025-05-08T16:06:52.623Z" }, + { url = "https://files.pythonhosted.org/packages/73/18/ec27848c9baae6e0d6573eda6e01a602e5649ee72c27c3a8aad673ebecfd/scipy-1.15.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2c620736bcc334782e24d173c0fdbb7590a0a436d2fdf39310a8902505008759", size = 38728256, upload-time = "2025-05-08T16:06:58.696Z" }, + { url = "https://files.pythonhosted.org/packages/74/cd/1aef2184948728b4b6e21267d53b3339762c285a46a274ebb7863c9e4742/scipy-1.15.3-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:7e11270a000969409d37ed399585ee530b9ef6aa99d50c019de4cb01e8e54e62", size = 30109540, upload-time = "2025-05-08T16:07:04.209Z" }, + { url = "https://files.pythonhosted.org/packages/5b/d8/59e452c0a255ec352bd0a833537a3bc1bfb679944c4938ab375b0a6b3a3e/scipy-1.15.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:8c9ed3ba2c8a2ce098163a9bdb26f891746d02136995df25227a20e71c396ebb", size = 22383115, upload-time = "2025-05-08T16:07:08.998Z" }, + { url = "https://files.pythonhosted.org/packages/08/f5/456f56bbbfccf696263b47095291040655e3cbaf05d063bdc7c7517f32ac/scipy-1.15.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:0bdd905264c0c9cfa74a4772cdb2070171790381a5c4d312c973382fc6eaf730", size = 25163884, upload-time = "2025-05-08T16:07:14.091Z" }, + { url = "https://files.pythonhosted.org/packages/a2/66/a9618b6a435a0f0c0b8a6d0a2efb32d4ec5a85f023c2b79d39512040355b/scipy-1.15.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79167bba085c31f38603e11a267d862957cbb3ce018d8b38f79ac043bc92d825", size = 35174018, upload-time = "2025-05-08T16:07:19.427Z" }, + { url = "https://files.pythonhosted.org/packages/b5/09/c5b6734a50ad4882432b6bb7c02baf757f5b2f256041da5df242e2d7e6b6/scipy-1.15.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9deabd6d547aee2c9a81dee6cc96c6d7e9a9b1953f74850c179f91fdc729cb7", size = 37269716, upload-time = "2025-05-08T16:07:25.712Z" }, + { url = "https://files.pythonhosted.org/packages/77/0a/eac00ff741f23bcabd352731ed9b8995a0a60ef57f5fd788d611d43d69a1/scipy-1.15.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:dde4fc32993071ac0c7dd2d82569e544f0bdaff66269cb475e0f369adad13f11", size = 36872342, upload-time = "2025-05-08T16:07:31.468Z" }, + { url = "https://files.pythonhosted.org/packages/fe/54/4379be86dd74b6ad81551689107360d9a3e18f24d20767a2d5b9253a3f0a/scipy-1.15.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f77f853d584e72e874d87357ad70f44b437331507d1c311457bed8ed2b956126", size = 39670869, upload-time = "2025-05-08T16:07:38.002Z" }, + { url = "https://files.pythonhosted.org/packages/87/2e/892ad2862ba54f084ffe8cc4a22667eaf9c2bcec6d2bff1d15713c6c0703/scipy-1.15.3-cp313-cp313-win_amd64.whl", hash = "sha256:b90ab29d0c37ec9bf55424c064312930ca5f4bde15ee8619ee44e69319aab163", size = 40988851, upload-time = "2025-05-08T16:08:33.671Z" }, + { url = "https://files.pythonhosted.org/packages/1b/e9/7a879c137f7e55b30d75d90ce3eb468197646bc7b443ac036ae3fe109055/scipy-1.15.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3ac07623267feb3ae308487c260ac684b32ea35fd81e12845039952f558047b8", size = 38863011, upload-time = "2025-05-08T16:07:44.039Z" }, + { url = "https://files.pythonhosted.org/packages/51/d1/226a806bbd69f62ce5ef5f3ffadc35286e9fbc802f606a07eb83bf2359de/scipy-1.15.3-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:6487aa99c2a3d509a5227d9a5e889ff05830a06b2ce08ec30df6d79db5fcd5c5", size = 30266407, upload-time = "2025-05-08T16:07:49.891Z" }, + { url = "https://files.pythonhosted.org/packages/e5/9b/f32d1d6093ab9eeabbd839b0f7619c62e46cc4b7b6dbf05b6e615bbd4400/scipy-1.15.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:50f9e62461c95d933d5c5ef4a1f2ebf9a2b4e83b0db374cb3f1de104d935922e", size = 22540030, upload-time = "2025-05-08T16:07:54.121Z" }, + { url = "https://files.pythonhosted.org/packages/e7/29/c278f699b095c1a884f29fda126340fcc201461ee8bfea5c8bdb1c7c958b/scipy-1.15.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:14ed70039d182f411ffc74789a16df3835e05dc469b898233a245cdfd7f162cb", size = 25218709, upload-time = "2025-05-08T16:07:58.506Z" }, + { url = "https://files.pythonhosted.org/packages/24/18/9e5374b617aba742a990581373cd6b68a2945d65cc588482749ef2e64467/scipy-1.15.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a769105537aa07a69468a0eefcd121be52006db61cdd8cac8a0e68980bbb723", size = 34809045, upload-time = "2025-05-08T16:08:03.929Z" }, + { url = "https://files.pythonhosted.org/packages/e1/fe/9c4361e7ba2927074360856db6135ef4904d505e9b3afbbcb073c4008328/scipy-1.15.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9db984639887e3dffb3928d118145ffe40eff2fa40cb241a306ec57c219ebbbb", size = 36703062, upload-time = "2025-05-08T16:08:09.558Z" }, + { url = "https://files.pythonhosted.org/packages/b7/8e/038ccfe29d272b30086b25a4960f757f97122cb2ec42e62b460d02fe98e9/scipy-1.15.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:40e54d5c7e7ebf1aa596c374c49fa3135f04648a0caabcb66c52884b943f02b4", size = 36393132, upload-time = "2025-05-08T16:08:15.34Z" }, + { url = "https://files.pythonhosted.org/packages/10/7e/5c12285452970be5bdbe8352c619250b97ebf7917d7a9a9e96b8a8140f17/scipy-1.15.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5e721fed53187e71d0ccf382b6bf977644c533e506c4d33c3fb24de89f5c3ed5", size = 38979503, upload-time = "2025-05-08T16:08:21.513Z" }, + { url = "https://files.pythonhosted.org/packages/81/06/0a5e5349474e1cbc5757975b21bd4fad0e72ebf138c5592f191646154e06/scipy-1.15.3-cp313-cp313t-win_amd64.whl", hash = "sha256:76ad1fb5f8752eabf0fa02e4cc0336b4e8f021e2d5f061ed37d6d264db35e3ca", size = 40308097, upload-time = "2025-05-08T16:08:27.627Z" }, +] + +[[package]] +name = "scipy" +version = "1.16.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/81/18/b06a83f0c5ee8cddbde5e3f3d0bb9b702abfa5136ef6d4620ff67df7eee5/scipy-1.16.0.tar.gz", hash = "sha256:b5ef54021e832869c8cfb03bc3bf20366cbcd426e02a58e8a58d7584dfbb8f62", size = 30581216, upload-time = "2025-06-22T16:27:55.782Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d9/f8/53fc4884df6b88afd5f5f00240bdc49fee2999c7eff3acf5953eb15bc6f8/scipy-1.16.0-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:deec06d831b8f6b5fb0b652433be6a09db29e996368ce5911faf673e78d20085", size = 36447362, upload-time = "2025-06-22T16:18:17.817Z" }, + { url = "https://files.pythonhosted.org/packages/c9/25/fad8aa228fa828705142a275fc593d701b1817c98361a2d6b526167d07bc/scipy-1.16.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:d30c0fe579bb901c61ab4bb7f3eeb7281f0d4c4a7b52dbf563c89da4fd2949be", size = 28547120, upload-time = "2025-06-22T16:18:24.117Z" }, + { url = "https://files.pythonhosted.org/packages/8d/be/d324ddf6b89fd1c32fecc307f04d095ce84abb52d2e88fab29d0cd8dc7a8/scipy-1.16.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:b2243561b45257f7391d0f49972fca90d46b79b8dbcb9b2cb0f9df928d370ad4", size = 20818922, upload-time = "2025-06-22T16:18:28.035Z" }, + { url = "https://files.pythonhosted.org/packages/cd/e0/cf3f39e399ac83fd0f3ba81ccc5438baba7cfe02176be0da55ff3396f126/scipy-1.16.0-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:e6d7dfc148135e9712d87c5f7e4f2ddc1304d1582cb3a7d698bbadedb61c7afd", size = 23409695, upload-time = "2025-06-22T16:18:32.497Z" }, + { url = "https://files.pythonhosted.org/packages/5b/61/d92714489c511d3ffd6830ac0eb7f74f243679119eed8b9048e56b9525a1/scipy-1.16.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:90452f6a9f3fe5a2cf3748e7be14f9cc7d9b124dce19667b54f5b429d680d539", size = 33444586, upload-time = "2025-06-22T16:18:37.992Z" }, + { url = "https://files.pythonhosted.org/packages/af/2c/40108915fd340c830aee332bb85a9160f99e90893e58008b659b9f3dddc0/scipy-1.16.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a2f0bf2f58031c8701a8b601df41701d2a7be17c7ffac0a4816aeba89c4cdac8", size = 35284126, upload-time = "2025-06-22T16:18:43.605Z" }, + { url = "https://files.pythonhosted.org/packages/d3/30/e9eb0ad3d0858df35d6c703cba0a7e16a18a56a9e6b211d861fc6f261c5f/scipy-1.16.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6c4abb4c11fc0b857474241b812ce69ffa6464b4bd8f4ecb786cf240367a36a7", size = 35608257, upload-time = "2025-06-22T16:18:49.09Z" }, + { url = "https://files.pythonhosted.org/packages/c8/ff/950ee3e0d612b375110d8cda211c1f787764b4c75e418a4b71f4a5b1e07f/scipy-1.16.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b370f8f6ac6ef99815b0d5c9f02e7ade77b33007d74802efc8316c8db98fd11e", size = 38040541, upload-time = "2025-06-22T16:18:55.077Z" }, + { url = "https://files.pythonhosted.org/packages/8b/c9/750d34788288d64ffbc94fdb4562f40f609d3f5ef27ab4f3a4ad00c9033e/scipy-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:a16ba90847249bedce8aa404a83fb8334b825ec4a8e742ce6012a7a5e639f95c", size = 38570814, upload-time = "2025-06-22T16:19:00.912Z" }, + { url = "https://files.pythonhosted.org/packages/01/c0/c943bc8d2bbd28123ad0f4f1eef62525fa1723e84d136b32965dcb6bad3a/scipy-1.16.0-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:7eb6bd33cef4afb9fa5f1fb25df8feeb1e52d94f21a44f1d17805b41b1da3180", size = 36459071, upload-time = "2025-06-22T16:19:06.605Z" }, + { url = "https://files.pythonhosted.org/packages/99/0d/270e2e9f1a4db6ffbf84c9a0b648499842046e4e0d9b2275d150711b3aba/scipy-1.16.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:1dbc8fdba23e4d80394ddfab7a56808e3e6489176d559c6c71935b11a2d59db1", size = 28490500, upload-time = "2025-06-22T16:19:11.775Z" }, + { url = "https://files.pythonhosted.org/packages/1c/22/01d7ddb07cff937d4326198ec8d10831367a708c3da72dfd9b7ceaf13028/scipy-1.16.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:7dcf42c380e1e3737b343dec21095c9a9ad3f9cbe06f9c05830b44b1786c9e90", size = 20762345, upload-time = "2025-06-22T16:19:15.813Z" }, + { url = "https://files.pythonhosted.org/packages/34/7f/87fd69856569ccdd2a5873fe5d7b5bbf2ad9289d7311d6a3605ebde3a94b/scipy-1.16.0-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:26ec28675f4a9d41587266084c626b02899db373717d9312fa96ab17ca1ae94d", size = 23418563, upload-time = "2025-06-22T16:19:20.746Z" }, + { url = "https://files.pythonhosted.org/packages/f6/f1/e4f4324fef7f54160ab749efbab6a4bf43678a9eb2e9817ed71a0a2fd8de/scipy-1.16.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:952358b7e58bd3197cfbd2f2f2ba829f258404bdf5db59514b515a8fe7a36c52", size = 33203951, upload-time = "2025-06-22T16:19:25.813Z" }, + { url = "https://files.pythonhosted.org/packages/6d/f0/b6ac354a956384fd8abee2debbb624648125b298f2c4a7b4f0d6248048a5/scipy-1.16.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:03931b4e870c6fef5b5c0970d52c9f6ddd8c8d3e934a98f09308377eba6f3824", size = 35070225, upload-time = "2025-06-22T16:19:31.416Z" }, + { url = "https://files.pythonhosted.org/packages/e5/73/5cbe4a3fd4bc3e2d67ffad02c88b83edc88f381b73ab982f48f3df1a7790/scipy-1.16.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:512c4f4f85912767c351a0306824ccca6fd91307a9f4318efe8fdbd9d30562ef", size = 35389070, upload-time = "2025-06-22T16:19:37.387Z" }, + { url = "https://files.pythonhosted.org/packages/86/e8/a60da80ab9ed68b31ea5a9c6dfd3c2f199347429f229bf7f939a90d96383/scipy-1.16.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e69f798847e9add03d512eaf5081a9a5c9a98757d12e52e6186ed9681247a1ac", size = 37825287, upload-time = "2025-06-22T16:19:43.375Z" }, + { url = "https://files.pythonhosted.org/packages/ea/b5/29fece1a74c6a94247f8a6fb93f5b28b533338e9c34fdcc9cfe7a939a767/scipy-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:adf9b1999323ba335adc5d1dc7add4781cb5a4b0ef1e98b79768c05c796c4e49", size = 38431929, upload-time = "2025-06-22T16:19:49.385Z" }, + { url = "https://files.pythonhosted.org/packages/46/95/0746417bc24be0c2a7b7563946d61f670a3b491b76adede420e9d173841f/scipy-1.16.0-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:e9f414cbe9ca289a73e0cc92e33a6a791469b6619c240aa32ee18abdce8ab451", size = 36418162, upload-time = "2025-06-22T16:19:56.3Z" }, + { url = "https://files.pythonhosted.org/packages/19/5a/914355a74481b8e4bbccf67259bbde171348a3f160b67b4945fbc5f5c1e5/scipy-1.16.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:bbba55fb97ba3cdef9b1ee973f06b09d518c0c7c66a009c729c7d1592be1935e", size = 28465985, upload-time = "2025-06-22T16:20:01.238Z" }, + { url = "https://files.pythonhosted.org/packages/58/46/63477fc1246063855969cbefdcee8c648ba4b17f67370bd542ba56368d0b/scipy-1.16.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:58e0d4354eacb6004e7aa1cd350e5514bd0270acaa8d5b36c0627bb3bb486974", size = 20737961, upload-time = "2025-06-22T16:20:05.913Z" }, + { url = "https://files.pythonhosted.org/packages/93/86/0fbb5588b73555e40f9d3d6dde24ee6fac7d8e301a27f6f0cab9d8f66ff2/scipy-1.16.0-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:75b2094ec975c80efc273567436e16bb794660509c12c6a31eb5c195cbf4b6dc", size = 23377941, upload-time = "2025-06-22T16:20:10.668Z" }, + { url = "https://files.pythonhosted.org/packages/ca/80/a561f2bf4c2da89fa631b3cbf31d120e21ea95db71fd9ec00cb0247c7a93/scipy-1.16.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:6b65d232157a380fdd11a560e7e21cde34fdb69d65c09cb87f6cc024ee376351", size = 33196703, upload-time = "2025-06-22T16:20:16.097Z" }, + { url = "https://files.pythonhosted.org/packages/11/6b/3443abcd0707d52e48eb315e33cc669a95e29fc102229919646f5a501171/scipy-1.16.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1d8747f7736accd39289943f7fe53a8333be7f15a82eea08e4afe47d79568c32", size = 35083410, upload-time = "2025-06-22T16:20:21.734Z" }, + { url = "https://files.pythonhosted.org/packages/20/ab/eb0fc00e1e48961f1bd69b7ad7e7266896fe5bad4ead91b5fc6b3561bba4/scipy-1.16.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:eb9f147a1b8529bb7fec2a85cf4cf42bdfadf9e83535c309a11fdae598c88e8b", size = 35387829, upload-time = "2025-06-22T16:20:27.548Z" }, + { url = "https://files.pythonhosted.org/packages/57/9e/d6fc64e41fad5d481c029ee5a49eefc17f0b8071d636a02ceee44d4a0de2/scipy-1.16.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d2b83c37edbfa837a8923d19c749c1935ad3d41cf196006a24ed44dba2ec4358", size = 37841356, upload-time = "2025-06-22T16:20:35.112Z" }, + { url = "https://files.pythonhosted.org/packages/7c/a7/4c94bbe91f12126b8bf6709b2471900577b7373a4fd1f431f28ba6f81115/scipy-1.16.0-cp313-cp313-win_amd64.whl", hash = "sha256:79a3c13d43c95aa80b87328a46031cf52508cf5f4df2767602c984ed1d3c6bbe", size = 38403710, upload-time = "2025-06-22T16:21:54.473Z" }, + { url = "https://files.pythonhosted.org/packages/47/20/965da8497f6226e8fa90ad3447b82ed0e28d942532e92dd8b91b43f100d4/scipy-1.16.0-cp313-cp313t-macosx_10_14_x86_64.whl", hash = "sha256:f91b87e1689f0370690e8470916fe1b2308e5b2061317ff76977c8f836452a47", size = 36813833, upload-time = "2025-06-22T16:20:43.925Z" }, + { url = "https://files.pythonhosted.org/packages/28/f4/197580c3dac2d234e948806e164601c2df6f0078ed9f5ad4a62685b7c331/scipy-1.16.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:88a6ca658fb94640079e7a50b2ad3b67e33ef0f40e70bdb7dc22017dae73ac08", size = 28974431, upload-time = "2025-06-22T16:20:51.302Z" }, + { url = "https://files.pythonhosted.org/packages/8a/fc/e18b8550048d9224426e76906694c60028dbdb65d28b1372b5503914b89d/scipy-1.16.0-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:ae902626972f1bd7e4e86f58fd72322d7f4ec7b0cfc17b15d4b7006efc385176", size = 21246454, upload-time = "2025-06-22T16:20:57.276Z" }, + { url = "https://files.pythonhosted.org/packages/8c/48/07b97d167e0d6a324bfd7484cd0c209cc27338b67e5deadae578cf48e809/scipy-1.16.0-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:8cb824c1fc75ef29893bc32b3ddd7b11cf9ab13c1127fe26413a05953b8c32ed", size = 23772979, upload-time = "2025-06-22T16:21:03.363Z" }, + { url = "https://files.pythonhosted.org/packages/4c/4f/9efbd3f70baf9582edf271db3002b7882c875ddd37dc97f0f675ad68679f/scipy-1.16.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:de2db7250ff6514366a9709c2cba35cb6d08498e961cba20d7cff98a7ee88938", size = 33341972, upload-time = "2025-06-22T16:21:11.14Z" }, + { url = "https://files.pythonhosted.org/packages/3f/dc/9e496a3c5dbe24e76ee24525155ab7f659c20180bab058ef2c5fa7d9119c/scipy-1.16.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e85800274edf4db8dd2e4e93034f92d1b05c9421220e7ded9988b16976f849c1", size = 35185476, upload-time = "2025-06-22T16:21:19.156Z" }, + { url = "https://files.pythonhosted.org/packages/ce/b3/21001cff985a122ba434c33f2c9d7d1dc3b669827e94f4fc4e1fe8b9dfd8/scipy-1.16.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4f720300a3024c237ace1cb11f9a84c38beb19616ba7c4cdcd771047a10a1706", size = 35570990, upload-time = "2025-06-22T16:21:27.797Z" }, + { url = "https://files.pythonhosted.org/packages/e5/d3/7ba42647d6709251cdf97043d0c107e0317e152fa2f76873b656b509ff55/scipy-1.16.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:aad603e9339ddb676409b104c48a027e9916ce0d2838830691f39552b38a352e", size = 37950262, upload-time = "2025-06-22T16:21:36.976Z" }, + { url = "https://files.pythonhosted.org/packages/eb/c4/231cac7a8385394ebbbb4f1ca662203e9d8c332825ab4f36ffc3ead09a42/scipy-1.16.0-cp313-cp313t-win_amd64.whl", hash = "sha256:f56296fefca67ba605fd74d12f7bd23636267731a72cb3947963e76b8c0a25db", size = 38515076, upload-time = "2025-06-22T16:21:45.694Z" }, +] + +[[package]] +name = "setuptools" +version = "80.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/18/5d/3bf57dcd21979b887f014ea83c24ae194cfcd12b9e0fda66b957c69d1fca/setuptools-80.9.0.tar.gz", hash = "sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c", size = 1319958, upload-time = "2025-05-27T00:56:51.443Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a3/dc/17031897dae0efacfea57dfd3a82fdd2a2aeb58e0ff71b77b87e44edc772/setuptools-80.9.0-py3-none-any.whl", hash = "sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922", size = 1201486, upload-time = "2025-05-27T00:56:49.664Z" }, +] + +[[package]] +name = "six" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, +] + +[[package]] +name = "stack-data" +version = "0.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asttokens" }, + { name = "executing" }, + { name = "pure-eval" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/28/e3/55dcc2cfbc3ca9c29519eb6884dd1415ecb53b0e934862d3559ddcb7e20b/stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9", size = 44707, upload-time = "2023-09-30T13:58:05.479Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521, upload-time = "2023-09-30T13:58:03.53Z" }, +] + +[[package]] +name = "sympy" +version = "1.14.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mpmath" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/83/d3/803453b36afefb7c2bb238361cd4ae6125a569b4db67cd9e79846ba2d68c/sympy-1.14.0.tar.gz", hash = "sha256:d3d3fe8df1e5a0b42f0e7bdf50541697dbe7d23746e894990c030e2b05e72517", size = 7793921, upload-time = "2025-04-27T18:05:01.611Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a2/09/77d55d46fd61b4a135c444fc97158ef34a095e5681d0a6c10b75bf356191/sympy-1.14.0-py3-none-any.whl", hash = "sha256:e091cc3e99d2141a0ba2847328f5479b05d94a6635cb96148ccb3f34671bd8f5", size = 6299353, upload-time = "2025-04-27T18:04:59.103Z" }, +] + +[[package]] +name = "tables" +version = "3.9.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", + "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "blosc2", version = "2.5.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "numexpr", version = "2.10.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "packaging", marker = "python_full_version < '3.10'" }, + { name = "py-cpuinfo", marker = "python_full_version < '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/31/83/8a13be8338219c3fe0aa7357d1ec4edb27bc346e0f224df7212892b243b5/tables-3.9.2.tar.gz", hash = "sha256:d470263c2e50c4b7c8635a0d99ac1ff2f9e704c24d71e5fa33c4529e7d0ad9c3", size = 4683437, upload-time = "2023-11-27T11:53:17.229Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/17/95/dea498a083e1fbe60bf0ea999da38cb8e33b5506ba99237b5416267a9bc0/tables-3.9.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8a4e71fc9d2a3a0cacce4994afd47cd5f4797093ff9cee2cc7dc87e51f308107", size = 7392824, upload-time = "2023-11-27T11:52:19.054Z" }, + { url = "https://files.pythonhosted.org/packages/49/b0/e424d4d409925cdf38689bb85f33e2a7c7bca310fb188de65af031c933b7/tables-3.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5fbea426ce9bdd60cda435a265823b31d18f2b36e9045fb2d565679825a7aa46", size = 7113863, upload-time = "2023-11-27T11:52:24.217Z" }, + { url = "https://files.pythonhosted.org/packages/22/86/5a474f002126e37d9ee1062e71dc99223d1618ffcfbd5683a7662766c4af/tables-3.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e756c272bb111d016fec1d03a60095403a8fb42a5fbaf5f317dcf6e3b9d8e92e", size = 7481194, upload-time = "2023-11-27T11:52:29.369Z" }, + { url = "https://files.pythonhosted.org/packages/90/eb/8b998ae92009d6e9a696d8ec43a5b5ab9200a715f8da86d9f952a1a1bde5/tables-3.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:eea41cb32dd22b30d6f3dd4e113f6d693384d301c89f3c4b4712f90c9c955875", size = 4391242, upload-time = "2023-11-27T11:52:33.314Z" }, + { url = "https://files.pythonhosted.org/packages/14/41/ea4928ece6c79614d1b61215a52760d88a134e55eca42a3a09815468afa9/tables-3.9.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d71913fb8147dc6132595b94fc82f88f6c2436a3b5c57aadfe26c680f96aa387", size = 7323512, upload-time = "2023-11-27T11:52:37.305Z" }, + { url = "https://files.pythonhosted.org/packages/d2/de/a3f2a4c6ac32b81e4e2789d7364db0f8fff0657f1b767004c3e63b353142/tables-3.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d6bbc477d038a17c5062ab6ccd94c8b1fa365cf017b9a2ad6c2dff1a07abb2b", size = 7112660, upload-time = "2023-11-27T11:52:40.427Z" }, + { url = "https://files.pythonhosted.org/packages/03/76/53d432936c6955de1346b629b9f92213b11ee9e8aeab8831027fac9e053d/tables-3.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e67c71070b871fade3694a4c764504e03836bb1843321766cf2e40b7d280e84", size = 7478756, upload-time = "2023-11-27T11:52:44.182Z" }, + { url = "https://files.pythonhosted.org/packages/64/09/1071a5cef60108dc3fd8d44596371d223834171800f43a652a9bd523588f/tables-3.9.2-cp311-cp311-win_amd64.whl", hash = "sha256:ab9291ff4d243e7966b6706a2675b83138bd9bbe82721d695b78971660d59632", size = 4391764, upload-time = "2023-11-27T11:52:47.4Z" }, + { url = "https://files.pythonhosted.org/packages/01/4f/cb9e44384982889ff720b8fabddb24aa4b0deb69afb1a5f09dd17a93b4ca/tables-3.9.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c14dc879b041cf53be1afe9e5ed581e1aeacdcee9e2e1ee79110dc96a4c8d97c", size = 7351431, upload-time = "2023-11-27T11:52:51.371Z" }, + { url = "https://files.pythonhosted.org/packages/9a/e0/070c3ebc11614f1c3fc413f2327ea9d1818444eab7ae4975a2fea7de03cb/tables-3.9.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2848fb3dce30a7b83fa099d026a91d7b10ad48afae04fa10f974f1da3f1e2bbf", size = 7077135, upload-time = "2023-11-27T11:52:54.361Z" }, + { url = "https://files.pythonhosted.org/packages/dd/50/8efbd7339a1fd69658f623bcee5e4c0318d823cc39bb23dbc6b0ff1a7491/tables-3.9.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b131c9b4e003816a45e2efe5c5c797d01d8308cac4aee72597a15837cedb605c", size = 7442059, upload-time = "2023-11-27T11:52:57.999Z" }, + { url = "https://files.pythonhosted.org/packages/8b/84/93dd082a991c36f3e55e170cb71c4011256e45549c0a3b0d3693cf9053e3/tables-3.9.2-cp312-cp312-win_amd64.whl", hash = "sha256:c6304d321452fd56865e5c309e38373011b0f0f6c714786c5660613ceb623acb", size = 4374051, upload-time = "2023-11-27T11:53:00.801Z" }, + { url = "https://files.pythonhosted.org/packages/64/5d/eb0c1b4401cbd9006589cb1f2a4288e70faa246538c7115ee7e54805c2d7/tables-3.9.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c52087ed8b90a5f6ba87f0adcd1c433e5f5db7c7ca5984b08ff45f2247635f7d", size = 7396210, upload-time = "2023-11-27T11:53:03.627Z" }, + { url = "https://files.pythonhosted.org/packages/a9/9c/fb98d7a5b9e1c7f588bf71ea75c87711212c964f0c1c8e0cb1246bda0a35/tables-3.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:164b945d0cb731c7232775fd3657f150bcf05413928b86033b023a1dc8dbeb05", size = 7116751, upload-time = "2023-11-27T11:53:07.406Z" }, + { url = "https://files.pythonhosted.org/packages/62/cf/897ad10477897bd55bcb3431833b274adda1c01bc8f856b8de57f6de0b83/tables-3.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a068d4ad08d5a6b2ad457f60ac6676efdab9e29459e776e433d5537a46e62e41", size = 7483600, upload-time = "2023-11-27T11:53:10.155Z" }, + { url = "https://files.pythonhosted.org/packages/28/67/f710befc6a57a339ac0aa7272c7df58014fff4f8863c16f683894b8c7893/tables-3.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:bca5a6bf162a84a6ef74ca4017b28c59c1526cffdbd93ce94c98ff8f9593f1d5", size = 4394103, upload-time = "2023-11-27T11:53:13.632Z" }, +] + +[[package]] +name = "tables" +version = "3.10.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "blosc2", version = "3.5.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "numexpr", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "packaging", marker = "python_full_version == '3.10.*'" }, + { name = "py-cpuinfo", marker = "python_full_version == '3.10.*'" }, + { name = "typing-extensions", marker = "python_full_version == '3.10.*'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0d/5d/96708a84e9fcd29d1f684d56d4c38a23d29b1c934599a072a49f27ccfa71/tables-3.10.1.tar.gz", hash = "sha256:4aa07ac734b9c037baeaf44aec64ec902ad247f57811b59f30c4e31d31f126cf", size = 4762413, upload-time = "2024-08-17T09:57:47.127Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ff/69/a768ec8104ada032c9be09f521f548766ddd0351bc941c9d42fa5db001de/tables-3.10.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bca9d11a570ca1bc57f0845e54e55c3093d5a1ace376faee639e09503a73745b", size = 6823691, upload-time = "2024-08-17T09:56:50.229Z" }, + { url = "https://files.pythonhosted.org/packages/e4/2d/074bc14b39de9b552eec02ee583eff2997d903da1355f4450506335a6055/tables-3.10.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b62881cb682438d1e92b9178db42b160638aef3ca23341f7d98e9b27821b1eb4", size = 5471221, upload-time = "2024-08-17T09:56:54.84Z" }, + { url = "https://files.pythonhosted.org/packages/4a/30/29411ab804b5ac4bee25c82ba38f4e7a8c0b52c6a1cdbeea7d1db33a53fe/tables-3.10.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9cf1bfd8b0e0195196205fc8a134628219cff85d20da537facd67a291e6b347", size = 7170201, upload-time = "2024-08-17T09:56:59.011Z" }, + { url = "https://files.pythonhosted.org/packages/0a/7d/3165c7538b8e89b22fa17ad68e04106cca7023cf68e94011ae7b3b6d2a78/tables-3.10.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77f0e6dd45b91d99bf3976c8655c48fe3816baf390b9098e4fb2f0fdf9da7078", size = 7571035, upload-time = "2024-08-17T09:57:03.115Z" }, + { url = "https://files.pythonhosted.org/packages/46/b3/985a23d2cf27aad383301a5e99e1851228a1941b868515612b5357bded5f/tables-3.10.1-cp310-cp310-win_amd64.whl", hash = "sha256:d90542ec172d1d60df0b796c48ad446f2b69a5d5cd3077bd6450891b854d1ffb", size = 6311650, upload-time = "2024-08-17T09:57:06.593Z" }, + { url = "https://files.pythonhosted.org/packages/dc/04/957264eb35e60251830a965e2d02332eb36ed14fbd8345df06981bbf3ece/tables-3.10.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f8917262a2bb3cd79d37e108557e34ec4b365fdcc806e01dd10765a84c65dab6", size = 6790492, upload-time = "2024-08-17T09:57:10.247Z" }, + { url = "https://files.pythonhosted.org/packages/b2/19/eb7af9d92aaf6766f5fedfce11a97ab03cf39856561c5f562dc0c769a682/tables-3.10.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f93f6db623b484bb6606537c2a71e95ee34fae19b0d891867642dd8c7be05af6", size = 5506835, upload-time = "2024-08-17T09:57:13.883Z" }, + { url = "https://files.pythonhosted.org/packages/b0/8f/897324e1ad543ca439b2c91f04c406f3eeda6e7ff2f43b4cd939f05043e4/tables-3.10.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01ca51624bca1a87e703d6d6b796368bc3460ff007ea8b1341be03bedd863833", size = 7166960, upload-time = "2024-08-17T09:57:17.463Z" }, + { url = "https://files.pythonhosted.org/packages/4e/5c/3f21d1135bf60af99ac79a17bbffd333d69763df2197ba04f47dd30bbd4e/tables-3.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9372516c76be3a05a573df63a69ce38315d03b5816d2a1e89c48129ec8b161b0", size = 7568724, upload-time = "2024-08-17T09:57:23.02Z" }, + { url = "https://files.pythonhosted.org/packages/1f/e3/3ee6b66263902eccadc4e0e23bca7fb480fd190904b7ce0bea4777b5b799/tables-3.10.1-cp311-cp311-win_amd64.whl", hash = "sha256:09190fb504888aeacafb7739c13d5c5a3e87af3d261f4d2f832b1f8407be133a", size = 6312200, upload-time = "2024-08-17T09:57:26.322Z" }, + { url = "https://files.pythonhosted.org/packages/95/ec/ea6c476e33602c172c797fe8f8ab96d007d964137068276d142b142a28e5/tables-3.10.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a7090af37909e3bf229d5599fa442633e5a93b6082960b01038dc0106e07a8da", size = 6791597, upload-time = "2024-08-17T09:57:29.598Z" }, + { url = "https://files.pythonhosted.org/packages/74/02/a967a506e9204e3328a8c03f67e6f3c919defc8df11aba83ae5b2abf7b0f/tables-3.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:203ed50c0c5f30f007df7633089b2a567b99856cd25d68f19d91624a8db2e7ad", size = 5474779, upload-time = "2024-08-17T09:57:32.43Z" }, + { url = "https://files.pythonhosted.org/packages/c3/26/925793f753664ec698b2c6315c818269313db143da38150897cf260405c2/tables-3.10.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e36ce9f10471c69c1f0b06c6966de762558a35d62592c55df7994a8019adaf0c", size = 7130683, upload-time = "2024-08-17T09:57:36.181Z" }, + { url = "https://files.pythonhosted.org/packages/d8/79/2b34f22284459e940a84e71dba19b2a34c7cc0ce3cdf685923c50d5b9611/tables-3.10.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f233e78cc9fa4157ec4c3ef2abf01a731fe7969bc6ed73539e5f4cd3b94c98b2", size = 7531367, upload-time = "2024-08-17T09:57:39.864Z" }, + { url = "https://files.pythonhosted.org/packages/3d/27/5a23830f611e26dd7ee104096c6bb82e481b16f3f17ccaed3075f8d48312/tables-3.10.1-cp312-cp312-win_amd64.whl", hash = "sha256:34357d2f2f75843a44e6fe54d1f11fc2e35a8fd3cb134df3d3362cff78010adb", size = 6295046, upload-time = "2024-08-17T09:57:43.561Z" }, + { url = "https://files.pythonhosted.org/packages/d3/d4/e7c25df877e054b05f146d6ccb920bcdbe8d39b35a0962868b80547532c7/tables-3.10.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:6fc5b46a4f359249c3ab9a0a0a2448d7e680e68cffd63fdf3fb7171781edd46e", size = 6824253, upload-time = "2024-11-09T19:26:06.428Z" }, + { url = "https://files.pythonhosted.org/packages/c6/49/091865d75090a24493bd1b66e52d72f4d9627ff42983a13d4dcd89455d02/tables-3.10.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2ecabd7f459d40b7f9f5256850dd5f43773fda7b789f827de92c3d26df1e320f", size = 5499587, upload-time = "2024-11-09T19:26:12.402Z" }, + { url = "https://files.pythonhosted.org/packages/23/83/9dac8af333149fa01add439f710d4a312b70faf81c2f59a16b8bfaebb75e/tables-3.10.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40a4ee18f3c9339d9dd8fd3777c75cda5768f2ff347064a2796f59161a190af8", size = 7128236, upload-time = "2024-11-09T19:26:15.716Z" }, + { url = "https://files.pythonhosted.org/packages/89/fd/62f31643596f6ab71fc6d2a87acdee0bc01a03fbe1a7f3f6dc0c91e2546d/tables-3.10.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:757c6ea257c174af8036cf8f273ede756bbcd6db5ac7e2a4d64e788b0f371152", size = 7527953, upload-time = "2024-11-09T19:26:20.229Z" }, +] + +[[package]] +name = "tables" +version = "3.10.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "blosc2", version = "3.5.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "numexpr", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "packaging", marker = "python_full_version >= '3.11'" }, + { name = "py-cpuinfo", marker = "python_full_version >= '3.11'" }, + { name = "typing-extensions", marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/15/50/23ead25f60bb1babe7f2f061d8a2f8c2f6804c1a20b3058677beb9085b56/tables-3.10.2.tar.gz", hash = "sha256:2544812a7186fadba831d6dd34eb49ccd788d6a83f4e4c2b431b835b6796c910", size = 4779722, upload-time = "2025-01-04T20:44:13.034Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/96/f6/ef0c376c1fa01b916d5db0c2681be063f6289ee99faf7bb6610e0b55b773/tables-3.10.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:63f8adec3c4421a011c5c6a245c0c1fccf16dba7aaa67d9915d2821cf365ed4a", size = 6767194, upload-time = "2025-01-04T20:42:53.5Z" }, + { url = "https://files.pythonhosted.org/packages/d9/d0/accd41382fa9da45bf816c56f85bda64223a3b8d0006d3496b67e0781a6e/tables-3.10.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:34c120bff666d33d3bdfb9e33173a4869d5f34e6c87824f2c7ec6a72c8dfab82", size = 5482665, upload-time = "2025-01-04T20:42:58.589Z" }, + { url = "https://files.pythonhosted.org/packages/59/2f/c95e94423c463177b8a7d55a1dbbd524840fe6a684844ff728f238e71f68/tables-3.10.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e71f63ac67c583ac42943c99c2d33bcc9e361e94d1ab1a763dc0698bdd9ff815", size = 7117696, upload-time = "2025-01-04T20:43:04.014Z" }, + { url = "https://files.pythonhosted.org/packages/88/d5/71665919aa2a5a3d2a20eeef3c71dc7c2ebbd9f26d114a7808514aba24d6/tables-3.10.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:154773f97763ccc91a29bcead6ab7b5ef164c2ed8c409cd79a2115aa9b4184c9", size = 7520921, upload-time = "2025-01-04T20:43:10.002Z" }, + { url = "https://files.pythonhosted.org/packages/46/96/b5023c1f7b9d560cac3e2c0daceebaeb88dd24c70c75db2d291abfa563e5/tables-3.10.2-cp311-cp311-win_amd64.whl", hash = "sha256:96b5e945d275415e79ddb0578657ecc6ac77030dcc0632ab2c39f89390bb239d", size = 6407137, upload-time = "2025-01-04T20:43:15.838Z" }, + { url = "https://files.pythonhosted.org/packages/ab/c4/1efbcc699db863d88874f3d111e5bb6dd2e0fbaca38f91c992e696324730/tables-3.10.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c6ba58205d1f6a4e0e2212bc221e76cf104f22190f90c3f1683f3c1ab138f28f", size = 6734990, upload-time = "2025-01-04T20:43:20.794Z" }, + { url = "https://files.pythonhosted.org/packages/4a/db/4c7facfc805ab764f2ee256011d20f96791d2426afa3389ca7ff2a8a4ea8/tables-3.10.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cdb5c040aa43e5e96259d6f6bb9df5b66fef2b071a6eb035c21bf6508e865d40", size = 5483377, upload-time = "2025-01-04T20:43:25.923Z" }, + { url = "https://files.pythonhosted.org/packages/93/0a/53815b516a2465b329e5dc2079c99a8b6b1a23f6b9ce5da8a7ebc7892bf4/tables-3.10.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e694123fa886d9be57f55fc7e1dcacac49f0b4ed4a931c795bd8f82f7111b5a8", size = 7081356, upload-time = "2025-01-04T20:43:31.066Z" }, + { url = "https://files.pythonhosted.org/packages/d3/e1/3f4adfc83eb7390abb964682a7d1df0dbe451dd2cee99750b1c7ca8e2c9d/tables-3.10.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6c12d0d04de89297763923ebeaddfd7e0b51f29041895db284fd4913e7448b7", size = 7483570, upload-time = "2025-01-04T20:43:36.694Z" }, + { url = "https://files.pythonhosted.org/packages/9a/d4/0b9ba57a5a8d2d05d1108055a8d70a4b066db4ebed61921de34043a31bdb/tables-3.10.2-cp312-cp312-win_amd64.whl", hash = "sha256:a406d5dbbcb6604bd1ca129af337e0790d4e02d29d06159ddb9f74e38d756d32", size = 6388443, upload-time = "2025-01-04T20:43:42.503Z" }, + { url = "https://files.pythonhosted.org/packages/ab/02/8c7aeaa6c8aac8e0298d40dc5fc55477fddc30cb31e4dc7e5e473be4b464/tables-3.10.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7b8bc07c715bad3d447ed8f834388ef2e10265e2c4af6b1297fc61adb645948f", size = 6725764, upload-time = "2025-01-04T20:43:48.171Z" }, + { url = "https://files.pythonhosted.org/packages/91/f4/8683395d294b9e4576fd7d888aa6cf5583c013c2c0a2e47f862c2842407f/tables-3.10.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:28677ed8e1a371471495599078f48da0850f82457d6c852ca77959c974371140", size = 5442663, upload-time = "2025-01-04T20:43:53.722Z" }, + { url = "https://files.pythonhosted.org/packages/72/9b/ea43159eed8f81bfa1ead8fa8201a3c352e84c7220e046bb548736833951/tables-3.10.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aaaea478dcf27dd54679ef2643c26d3b8b15676ad81e4d80a88fd1682d23deb1", size = 7078747, upload-time = "2025-01-04T20:43:59.596Z" }, + { url = "https://files.pythonhosted.org/packages/04/95/b3e88edc674e35d9011b168df0d7a9b1c3ab98733fa26e740ac7964edc2f/tables-3.10.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c5e67a9f901842f9a4b1f3d2307f4bdd94047514fe0d0c558ed19c11f53c402a", size = 7479985, upload-time = "2025-01-04T20:44:04.13Z" }, + { url = "https://files.pythonhosted.org/packages/63/ca/eaa029a43d269bdda6985931d6cfd479e876cd8cf7c887d818bef05ef03b/tables-3.10.2-cp313-cp313-win_amd64.whl", hash = "sha256:5637fdcded5ba5426aa24e0e42d6f990926a4da7f193830df131dfcb7e842900", size = 6385562, upload-time = "2025-01-04T20:44:08.196Z" }, +] + +[[package]] +name = "threadpoolctl" +version = "3.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b7/4d/08c89e34946fce2aec4fbb45c9016efd5f4d7f24af8e5d93296e935631d8/threadpoolctl-3.6.0.tar.gz", hash = "sha256:8ab8b4aa3491d812b623328249fab5302a68d2d71745c8a4c719a2fcaba9f44e", size = 21274, upload-time = "2025-03-13T13:49:23.031Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl", hash = "sha256:43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb", size = 18638, upload-time = "2025-03-13T13:49:21.846Z" }, +] + +[[package]] +name = "torch" +version = "2.7.1" +source = { registry = "https://download.pytorch.org/whl/cpu" } +resolution-markers = [ + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", +] +dependencies = [ + { name = "filelock", marker = "(python_full_version >= '3.10' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, + { name = "fsspec", marker = "(python_full_version >= '3.10' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, + { name = "jinja2", marker = "(python_full_version >= '3.10' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, + { name = "networkx", version = "3.2.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'" }, + { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*' and sys_platform == 'darwin'" }, + { name = "networkx", version = "3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "setuptools", marker = "python_full_version >= '3.12' and sys_platform == 'darwin'" }, + { name = "sympy", marker = "(python_full_version >= '3.10' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, + { name = "typing-extensions", marker = "(python_full_version >= '3.10' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, +] +wheels = [ + { url = "https://download.pytorch.org/whl/cpu/torch-2.7.1-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:f8c3bee261b0c8e090f6347490dc6ee2aebfd661eb0f3f6aeae06d992d8ed56f" }, + { url = "https://download.pytorch.org/whl/cpu/torch-2.7.1-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:68a352c7f435abb5cb47e2c032dcd1012772ae2bacb6fc8b83b0c1b11874ab3a" }, + { url = "https://download.pytorch.org/whl/cpu/torch-2.7.1-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:7b4f8b2b83bd08f7d399025a9a7b323bdbb53d20566f1e0d584689bb92d82f9a" }, + { url = "https://download.pytorch.org/whl/cpu/torch-2.7.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:95af97e7b2cecdc89edc0558962a51921bf9c61538597dbec6b7cc48d31e2e13" }, + { url = "https://download.pytorch.org/whl/cpu/torch-2.7.1-cp313-none-macosx_11_0_arm64.whl", hash = "sha256:7ecd868a086468e1bcf74b91db425c1c2951a9cfcd0592c4c73377b7e42485ae" }, + { url = "https://download.pytorch.org/whl/cpu/torch-2.7.1-cp39-none-macosx_11_0_arm64.whl", hash = "sha256:351be905d1ba693f317be603441e4ed9580ed9a8d7ee17b3dae60fa2ff49bff7" }, +] + +[[package]] +name = "torch" +version = "2.7.1+cpu" +source = { registry = "https://download.pytorch.org/whl/cpu" } +resolution-markers = [ + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "filelock", marker = "(python_full_version < '3.10' and platform_machine != 'arm64') or sys_platform != 'darwin'" }, + { name = "fsspec", marker = "(python_full_version < '3.10' and platform_machine != 'arm64') or sys_platform != 'darwin'" }, + { name = "jinja2", marker = "(python_full_version < '3.10' and platform_machine != 'arm64') or sys_platform != 'darwin'" }, + { name = "networkx", version = "3.2.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.10' and platform_machine != 'arm64') or (python_full_version < '3.10' and sys_platform != 'darwin')" }, + { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*' and sys_platform != 'darwin'" }, + { name = "networkx", version = "3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform != 'darwin'" }, + { name = "setuptools", marker = "python_full_version >= '3.12' and sys_platform != 'darwin'" }, + { name = "sympy", marker = "(python_full_version < '3.10' and platform_machine != 'arm64') or sys_platform != 'darwin'" }, + { name = "typing-extensions", marker = "(python_full_version < '3.10' and platform_machine != 'arm64') or sys_platform != 'darwin'" }, +] +wheels = [ + { url = "https://download.pytorch.org/whl/cpu/torch-2.7.1%2Bcpu-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:c0df17cee97653d09a4e84488a33d21217f9b24208583c55cf28f0045aab0766" }, + { url = "https://download.pytorch.org/whl/cpu/torch-2.7.1%2Bcpu-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:1f04a373a3f643821f721da9898ef77dce73b5b6bfc64486f0976f7fb5f90e83" }, + { url = "https://download.pytorch.org/whl/cpu/torch-2.7.1%2Bcpu-cp310-cp310-win_amd64.whl", hash = "sha256:b4cc706973655151f198d027ed34c92ab31a3db55676b44251194e1280631426" }, + { url = "https://download.pytorch.org/whl/cpu/torch-2.7.1%2Bcpu-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:5fe6045b8f426bf2d0426e4fe009f1667a954ec2aeb82f1bd0bf60c6d7a85445" }, + { url = "https://download.pytorch.org/whl/cpu/torch-2.7.1%2Bcpu-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a1684793e352f03fa14f78857e55d65de4ada8405ded1da2bf4f452179c4b779" }, + { url = "https://download.pytorch.org/whl/cpu/torch-2.7.1%2Bcpu-cp311-cp311-win_amd64.whl", hash = "sha256:7b977eccbc85ae2bd19d6998de7b1f1f4bd3c04eaffd3015deb7934389783399" }, + { url = "https://download.pytorch.org/whl/cpu/torch-2.7.1%2Bcpu-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:3bf2db5adf77b433844f080887ade049c4705ddf9fe1a32023ff84ff735aa5ad" }, + { url = "https://download.pytorch.org/whl/cpu/torch-2.7.1%2Bcpu-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:8f8b3cfc53010a4b4a3c7ecb88c212e9decc4f5eeb6af75c3c803937d2d60947" }, + { url = "https://download.pytorch.org/whl/cpu/torch-2.7.1%2Bcpu-cp312-cp312-win_amd64.whl", hash = "sha256:0bc887068772233f532b51a3e8c8cfc682ae62bef74bf4e0c53526c8b9e4138f" }, + { url = "https://download.pytorch.org/whl/cpu/torch-2.7.1%2Bcpu-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:eb17646792ac4374ffc87e42369f45d21eff17c790868963b90483ef0b6db4ef" }, + { url = "https://download.pytorch.org/whl/cpu/torch-2.7.1%2Bcpu-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:84ea1f6a1d15663037d01b121d6e33bb9da3c90af8e069e5072c30f413455a57" }, + { url = "https://download.pytorch.org/whl/cpu/torch-2.7.1%2Bcpu-cp313-cp313-win_amd64.whl", hash = "sha256:b66f77f6f67317344ee083aa7ac4751a14395fcb38060d564bf513978d267153" }, + { url = "https://download.pytorch.org/whl/cpu/torch-2.7.1%2Bcpu-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:56136a2aca6707df3c8811e46ea2d379eaafd18e656e2fd51e8e4d0ca995651b" }, + { url = "https://download.pytorch.org/whl/cpu/torch-2.7.1%2Bcpu-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:355614185a2aea7155f9c88a20bfd49de5f3063866f3cf9b2f21b6e9e59e31e0" }, + { url = "https://download.pytorch.org/whl/cpu/torch-2.7.1%2Bcpu-cp313-cp313t-win_amd64.whl", hash = "sha256:464bca1bc9452f2ccd676514688896e66b9488f2a0268ecd3ac497cf09c5aac1" }, + { url = "https://download.pytorch.org/whl/cpu/torch-2.7.1%2Bcpu-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:a4551cb97b83df5f93fc0d7538332535828581e1db2f179afc287027afbdd6e8" }, + { url = "https://download.pytorch.org/whl/cpu/torch-2.7.1%2Bcpu-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:d205cac087d60bc176bdc0b63a1d00dc7a4ee5ac76fd20a2ca318ac65674167e" }, + { url = "https://download.pytorch.org/whl/cpu/torch-2.7.1%2Bcpu-cp39-cp39-win_amd64.whl", hash = "sha256:d25435bdc4780d3cb512aad55142aca9584ae1fe8f8691cda6d32f19faf5d58e" }, +] + +[[package]] +name = "tornado" +version = "6.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/51/89/c72771c81d25d53fe33e3dca61c233b665b2780f21820ba6fd2c6793c12b/tornado-6.5.1.tar.gz", hash = "sha256:84ceece391e8eb9b2b95578db65e920d2a61070260594819589609ba9bc6308c", size = 509934, upload-time = "2025-05-22T18:15:38.788Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/89/f4532dee6843c9e0ebc4e28d4be04c67f54f60813e4bf73d595fe7567452/tornado-6.5.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d50065ba7fd11d3bd41bcad0825227cc9a95154bad83239357094c36708001f7", size = 441948, upload-time = "2025-05-22T18:15:20.862Z" }, + { url = "https://files.pythonhosted.org/packages/15/9a/557406b62cffa395d18772e0cdcf03bed2fff03b374677348eef9f6a3792/tornado-6.5.1-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9e9ca370f717997cb85606d074b0e5b247282cf5e2e1611568b8821afe0342d6", size = 440112, upload-time = "2025-05-22T18:15:22.591Z" }, + { url = "https://files.pythonhosted.org/packages/55/82/7721b7319013a3cf881f4dffa4f60ceff07b31b394e459984e7a36dc99ec/tornado-6.5.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b77e9dfa7ed69754a54c89d82ef746398be82f749df69c4d3abe75c4d1ff4888", size = 443672, upload-time = "2025-05-22T18:15:24.027Z" }, + { url = "https://files.pythonhosted.org/packages/7d/42/d11c4376e7d101171b94e03cef0cbce43e823ed6567ceda571f54cf6e3ce/tornado-6.5.1-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:253b76040ee3bab8bcf7ba9feb136436a3787208717a1fb9f2c16b744fba7331", size = 443019, upload-time = "2025-05-22T18:15:25.735Z" }, + { url = "https://files.pythonhosted.org/packages/7d/f7/0c48ba992d875521ac761e6e04b0a1750f8150ae42ea26df1852d6a98942/tornado-6.5.1-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:308473f4cc5a76227157cdf904de33ac268af770b2c5f05ca6c1161d82fdd95e", size = 443252, upload-time = "2025-05-22T18:15:27.499Z" }, + { url = "https://files.pythonhosted.org/packages/89/46/d8d7413d11987e316df4ad42e16023cd62666a3c0dfa1518ffa30b8df06c/tornado-6.5.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:caec6314ce8a81cf69bd89909f4b633b9f523834dc1a352021775d45e51d9401", size = 443930, upload-time = "2025-05-22T18:15:29.299Z" }, + { url = "https://files.pythonhosted.org/packages/78/b2/f8049221c96a06df89bed68260e8ca94beca5ea532ffc63b1175ad31f9cc/tornado-6.5.1-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:13ce6e3396c24e2808774741331638ee6c2f50b114b97a55c5b442df65fd9692", size = 443351, upload-time = "2025-05-22T18:15:31.038Z" }, + { url = "https://files.pythonhosted.org/packages/76/ff/6a0079e65b326cc222a54720a748e04a4db246870c4da54ece4577bfa702/tornado-6.5.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5cae6145f4cdf5ab24744526cc0f55a17d76f02c98f4cff9daa08ae9a217448a", size = 443328, upload-time = "2025-05-22T18:15:32.426Z" }, + { url = "https://files.pythonhosted.org/packages/49/18/e3f902a1d21f14035b5bc6246a8c0f51e0eef562ace3a2cea403c1fb7021/tornado-6.5.1-cp39-abi3-win32.whl", hash = "sha256:e0a36e1bc684dca10b1aa75a31df8bdfed656831489bc1e6a6ebed05dc1ec365", size = 444396, upload-time = "2025-05-22T18:15:34.205Z" }, + { url = "https://files.pythonhosted.org/packages/7b/09/6526e32bf1049ee7de3bebba81572673b19a2a8541f795d887e92af1a8bc/tornado-6.5.1-cp39-abi3-win_amd64.whl", hash = "sha256:908e7d64567cecd4c2b458075589a775063453aeb1d2a1853eedb806922f568b", size = 444840, upload-time = "2025-05-22T18:15:36.1Z" }, + { url = "https://files.pythonhosted.org/packages/55/a7/535c44c7bea4578e48281d83c615219f3ab19e6abc67625ef637c73987be/tornado-6.5.1-cp39-abi3-win_arm64.whl", hash = "sha256:02420a0eb7bf617257b9935e2b754d1b63897525d8a289c9d65690d580b4dcf7", size = 443596, upload-time = "2025-05-22T18:15:37.433Z" }, +] + +[[package]] +name = "tqdm" +version = "4.67.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2", size = 169737, upload-time = "2024-11-24T20:12:22.481Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", size = 78540, upload-time = "2024-11-24T20:12:19.698Z" }, +] + +[[package]] +name = "traitlets" +version = "5.14.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/eb/79/72064e6a701c2183016abbbfedaba506d81e30e232a68c9f0d6f6fcd1574/traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7", size = 161621, upload-time = "2024-04-19T11:11:49.746Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359, upload-time = "2024-04-19T11:11:46.763Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.14.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/98/5a/da40306b885cc8c09109dc2e1abd358d5684b1425678151cdaed4731c822/typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36", size = 107673, upload-time = "2025-07-04T13:28:34.16Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b5/00/d631e67a838026495268c2f6884f3711a15a9a2a96cd244fdaea53b823fb/typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76", size = 43906, upload-time = "2025-07-04T13:28:32.743Z" }, +] + +[[package]] +name = "tzdata" +version = "2025.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380, upload-time = "2025-03-23T13:54:43.652Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839, upload-time = "2025-03-23T13:54:41.845Z" }, +] + +[[package]] +name = "urllib3" +version = "2.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/15/22/9ee70a2574a4f4599c47dd506532914ce044817c7752a79b6a51286319bc/urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760", size = 393185, upload-time = "2025-06-18T14:07:41.644Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795, upload-time = "2025-06-18T14:07:40.39Z" }, +] + +[[package]] +name = "wcwidth" +version = "0.2.13" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/63/53559446a878410fc5a5974feb13d31d78d752eb18aeba59c7fef1af7598/wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5", size = 101301, upload-time = "2024-01-06T02:10:57.829Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", size = 34166, upload-time = "2024-01-06T02:10:55.763Z" }, +] + +[[package]] +name = "widgetsnbextension" +version = "4.0.14" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/41/53/2e0253c5efd69c9656b1843892052a31c36d37ad42812b5da45c62191f7e/widgetsnbextension-4.0.14.tar.gz", hash = "sha256:a3629b04e3edb893212df862038c7232f62973373869db5084aed739b437b5af", size = 1097428, upload-time = "2025-04-10T13:01:25.628Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ca/51/5447876806d1088a0f8f71e16542bf350918128d0a69437df26047c8e46f/widgetsnbextension-4.0.14-py3-none-any.whl", hash = "sha256:4875a9eaf72fbf5079dc372a51a9f268fc38d46f767cbf85c43a36da5cb9b575", size = 2196503, upload-time = "2025-04-10T13:01:23.086Z" }, +] + +[[package]] +name = "zipp" +version = "3.23.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e3/02/0f2892c661036d50ede074e376733dca2ae7c6eb617489437771209d4180/zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166", size = 25547, upload-time = "2025-06-08T17:06:39.4Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2e/54/647ade08bf0db230bfea292f893923872fd20be6ac6f53b2b936ba839d75/zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e", size = 10276, upload-time = "2025-06-08T17:06:38.034Z" }, +] From 6ccc0752cb38e0327e914fc05c0753275509a23b Mon Sep 17 00:00:00 2001 From: Nathaniel Chen Date: Thu, 10 Jul 2025 21:41:27 -0400 Subject: [PATCH 024/103] Update .gitignore to exclude data and logs directories. Modify Jupyter notebooks to reset execution counts, streamline data loading, and enhance visualization. Refactor dataset preparation scripts to improve logging, configuration handling, and remove deprecated modules. --- .gitignore | 2 + commands/prepare_data.sh | 16 + notebooks/accessing_data.ipynb | 152 ++---- notebooks/data_preparation.ipynb | 473 +++++++----------- src/fusionaihub/datasets/prepare/__main__.py | 4 + .../datasets/prepare/config/default.yaml | 26 +- .../datasets/prepare/config/raw.yaml | 39 ++ .../datasets/prepare/core/__init__.py | 30 -- .../datasets/prepare/core/dataset_utils.py | 84 ---- .../prepare/core/sample_processing.py | 160 ------ .../datasets/prepare/core/shot_processing.py | 122 ----- .../prepare/{core => }/data_extraction.py | 39 +- .../datasets/prepare/dataset_utils.py | 30 ++ .../datasets/prepare/logging_config.py | 64 +++ src/fusionaihub/datasets/prepare/prepare.py | 286 ----------- src/fusionaihub/datasets/prepare/prepare2.py | 443 ---------------- .../datasets/prepare/prepare_dataset.py | 84 +++- .../datasets/prepare/sample_processing.py | 95 ++++ .../datasets/prepare/shot_processing.py | 193 +++++++ .../prepare/{core => }/signal_processing.py | 58 ++- 20 files changed, 801 insertions(+), 1599 deletions(-) create mode 100644 commands/prepare_data.sh create mode 100644 src/fusionaihub/datasets/prepare/__main__.py create mode 100644 src/fusionaihub/datasets/prepare/config/raw.yaml delete mode 100644 src/fusionaihub/datasets/prepare/core/__init__.py delete mode 100644 src/fusionaihub/datasets/prepare/core/dataset_utils.py delete mode 100644 src/fusionaihub/datasets/prepare/core/sample_processing.py delete mode 100644 src/fusionaihub/datasets/prepare/core/shot_processing.py rename src/fusionaihub/datasets/prepare/{core => }/data_extraction.py (74%) create mode 100644 src/fusionaihub/datasets/prepare/dataset_utils.py create mode 100644 src/fusionaihub/datasets/prepare/logging_config.py delete mode 100644 src/fusionaihub/datasets/prepare/prepare.py delete mode 100644 src/fusionaihub/datasets/prepare/prepare2.py create mode 100644 src/fusionaihub/datasets/prepare/sample_processing.py create mode 100644 src/fusionaihub/datasets/prepare/shot_processing.py rename src/fusionaihub/datasets/prepare/{core => }/signal_processing.py (51%) diff --git a/.gitignore b/.gitignore index faa5f5e..0d9cab5 100644 --- a/.gitignore +++ b/.gitignore @@ -159,4 +159,6 @@ cython_debug/ # option (not recommended) you can uncomment the following to ignore the entire idea folder. #.idea/ +data/ +logs/ *.pkl \ No newline at end of file diff --git a/commands/prepare_data.sh b/commands/prepare_data.sh new file mode 100644 index 0000000..28bc22f --- /dev/null +++ b/commands/prepare_data.sh @@ -0,0 +1,16 @@ +#!/bin/bash +#SBATCH --job-name=dataprep # create a short name for your job +#SBATCH --nodes=1 # node count +#SBATCH --ntasks=1 # total number of tasks across all nodes +#SBATCH --cpus-per-task=96 # cpu-cores per task (>1 if multi-threaded tasks) +#SBATCH --mem=100GB # memory per node +#SBATCH --time=01:00:00 # maximum time needed (HH:MM:SS) +#SBATCH --output=logs/%A_%a.out +#SBATCH --error=logs/%A_%a.err + +# Set environment +module purge +source .venv/bin/activate + +# Run pipeline +srun python -m fusionaihub.datasets.prepare \ No newline at end of file diff --git a/notebooks/accessing_data.ipynb b/notebooks/accessing_data.ipynb index 301e1b0..86fbc6f 100644 --- a/notebooks/accessing_data.ipynb +++ b/notebooks/accessing_data.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 65, + "execution_count": 1, "id": "914fa271", "metadata": {}, "outputs": [], @@ -13,104 +13,50 @@ }, { "cell_type": "code", - "execution_count": 66, + "execution_count": null, "id": "836b5c67", "metadata": {}, "outputs": [], "source": [ + "import pandas as pd\n", "import joblib\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", - "execution_count": 69, - "id": "af64eb59", + "execution_count": null, + "id": "d564239f", "metadata": {}, "outputs": [], "source": [ - "file = \"/scratch/gpfs/nc1514/FusionAIHub/data/foundation_v2/train/170000_0.pkl\"\n", - "\n", - "with open(file, 'rb') as f:\n", - " data = joblib.load(f)\n", - " data1 = data['co2v1']\n", - " data2 = data['mhrb4']" - ] - }, - { - "cell_type": "code", - "execution_count": 70, - "id": "0818d229", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "dict_keys(['mhrb1', 'mhrb2', 'mhrb3', 'mhrb4', 'mhrb5', 'mhrb6', 'mhrb7', 'mhrb8', 'ece01', 'ece02', 'ece03', 'ece04', 'ece05', 'ece06', 'ece07', 'ece08', 'ece09', 'ece10', 'ece11', 'ece12', 'ece13', 'ece14', 'ece15', 'ece16', 'ece17', 'ece18', 'ece19', 'ece20', 'ece21', 'ece22', 'ece23', 'ece24', 'ece25', 'ece26', 'ece27', 'ece28', 'ece29', 'ece30', 'ece31', 'ece32', 'ece33', 'ece34', 'ece35', 'ece36', 'ece37', 'ece38', 'ece39', 'ece40', 'ece41', 'ece42', 'ece43', 'ece44', 'ece45', 'ece46', 'ece47', 'ece48', 'co2r0', 'co2v1', 'co2v2', 'co2v3', 'gasgasa', 'gasgasb', 'gasgasc', 'gasgasd', 'gasgase', 'echechpwr', 'echechpwrc', 'echecleifpwrc', 'echecleipolang', 'echecleixmfrac', 'echeclukfpwrc', 'echeclukpolang', 'echeclukxmfrac', 'echecr2dfpwrc', 'echecr2dpolang', 'echecr2dxmfrac', 'pinpinjf_15l', 'pinpinjf_15r', 'pinpinjf_21l', 'pinpinjf_21r', 'pinpinjf_30l', 'pinpinjf_30r', 'pinpinjf_33l', 'pinpinjf_33r', 'tintinj_15l', 'tintinj_15r', 'tintinj_21l', 'tintinj_21r', 'tintinj_30l', 'tintinj_30r', 'tintinj_33l', 'tintinj_33r'])" - ] - }, - "execution_count": 70, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "data.keys()" - ] - }, - { - "cell_type": "code", - "execution_count": 71, - "id": "36eb742e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(513, 11066)" - ] - }, - "execution_count": 71, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "data['mhrb4'].shape" - ] - }, - { - "cell_type": "code", - "execution_count": 74, - "id": "59d841a1", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(11066,)" - ] - }, - "execution_count": 74, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "data['gasgasa'].shape" + "files = pd.read_csv(\"/scratch/gpfs/EKOLEMEN/hackathon/foundation25/train/index.csv\").values[:,0]" ] }, { "cell_type": "code", - "execution_count": 73, + "execution_count": 45, "id": "434b288f", "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mhr (8, 513, 13195)\n", + "ece (48, 513, 13195)\n", + "co2 (4, 513, 13195)\n", + "gas (5, 1, 13195)\n", + "ech (11, 1, 13195)\n", + "pin (8, 1, 13195)\n", + "tin (8, 1, 13195)\n" + ] + }, { "data": { - "image/png": "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Pmv48/TSwYMH8W/+zb/Btm3b0G63cemll+JLX/pS+J6I8Eu/9EvYtWsX2u02rr32Wjz44INT91hdXcX111+P2dlZzM/P48d//McxGAymrvnqV7+KF7/4xWi1WjjttNPwW7/1W0/J+z1TyRiDX/zFX8SZZ56JdruNs88+G7/+678+1X+z4c1TR//wD/+A7/me78Hu3bshhMBf//VfT33/VPLife97Hy644AK0Wi1ceuml+MhHPvLP/r5PGdEzjN7znvdQmqb0p3/6p3T33XfT6173Opqfn6cjR4483UM7Zei6666jd73rXXTXXXfR7bffTi972cvo9NNPp8FgEK75iZ/4CTrttNPopptuoi996Uv0/Oc/n17wgheE76uqoksuuYSuvfZa+spXvkIf+chHaGlpid7+9reHax555BHqdDp0ww030D333EPvfOc7SSlFH/3oR5/S930m0xe+8AV61rOeRZdddhm96U1vCp83/Hn6aHV1lc444wz60R/9Ubr11lvpkUceoY997GP00EMPhWve8Y530NzcHP31X/813XHHHfS93/u9dOaZZ9J4PA7XfPd3fzc9+9nPpltuuYU+85nP0DnnnEOvetWrwvcbGxu0vLxM119/Pd111130l3/5l9Rut+m//tf/+pS+7zOJfuM3foO2bdtGH/rQh+jRRx+l973vfdTr9eg//af/FK5pePPU0Uc+8hH6+Z//efqrv/orAkAf+MAHpr5/qnjxuc99jpRS9Fu/9Vt0zz330C/8wi9QkiR05513ftPn4JtBzzhgd9VVV9Eb3/jG8G9jDO3evZtuvPHGp3FUpzYdPXqUANCnP/1pIiJaX1+nJEnofe97X7jm3nvvJQB08803ExFvWCklrayshGv+6I/+iGZnZynPcyIieutb30oXX3zx1LN++Id/mK677rpv9iudEtTv9+ncc8+lj3/84/Qv/+W/DMCu4c/TS29729voRS960df83lpLO3fupN/+7d8On62vr1OWZfSXf/mXRER0zz33EAD64he/GK7527/9WxJC0MGDB4mI6A//8A9pYWEh8Ms/+/zzz//nfqVThl7+8pfTj/3Yj0199gM/8AN0/fXXE1HDm6eTtgK7p5IXP/RDP0Qvf/nLp8Zz9dVX07/7d//un/Udnyp6Rrlii6LAbbfdhmuvvTZ8JqXEtddei5tvvvlpHNmpTRsbGwCAxcVFAMBtt92Gsiyn+HDBBRfg9NNPD3y4+eabcemll04Vnb7uuuuwubmJu+++O1wT38Nf0/Dy66M3vvGNePnLX37SHDb8eXrpb/7mb3DllVfila98JXbs2IHLL78c/+2//bfw/aOPPoqVlZWpuZ2bm8PVV189xZ/5+XlceeWV4Zprr70WUkrceuut4Zp/8S/+BdI0Dddcd911uP/++7G2tvbNfs1nJL3gBS/ATTfdhAceeAAAcMcdd+Czn/0sXvrSlwJoePOtRE8lL041WfeMAnbHjx+HMeakDhXLy8tYWVl5mkZ1apO1Fm9+85vxwhe+EJdccgkAYGVlBWmaYn5+furamA8rKytPyCf/3ZNds7m5ifF4/M14nVOG3vOe9+DLX/4ybrzxxpO+a/jz9NIjjzyCP/qjP8K5556Lj33sY3jDG96An/qpn8Kf//mfA6jn98nk2MrKCnbs2DH1vdYai4uL3xAPG5qmn/u5n8OP/MiP4IILLkCSJLj88svx5je/Gddffz2AhjffSvRU8uJrXfNM5dXT0lKsoWcOvfGNb8Rdd92Fz372s0/3UBpytH//frzpTW/Cxz/+cbRarad7OA1tIWstrrzySvzmb/4mAODyyy/HXXfdhT/+4z/Ga17zmqd5dN/e9N73vhfvfve78Rd/8Re4+OKLcfvtt+PNb34zdu/e3fCmoVOGnlEWu6WlJSilTsruO3LkCHbu3Pk0jerUpZ/8yZ/Ehz70IXzqU5/C3r17w+c7d+5EURRYX1+fuj7mw86dO5+QT/67J7tmdnYW7Xb7n/t1Thm67bbbcPToUTz3uc+F1hpaa3z605/Gf/7P/xlaaywvLzf8eRpp165duOiii6Y+u/DCC7Fv3z4A9fw+mRzbuXMnjh49OvV9VVVYXV39hnjY0DS95S1vCVa7Sy+9FK9+9avx0z/908Hy3fDmW4eeSl58rWueqbx6RgG7NE1xxRVX4KabbgqfWWtx00034ZprrnkaR3ZqERHhJ3/yJ/GBD3wAn/zkJ3HmmWdOfX/FFVcgSZIpPtx///3Yt29f4MM111yDO++8c2rTffzjH8fs7GxQetdcc83UPfw1DS+fnF7ykpfgzjvvxO233x7+u/LKK3H99deHvzf8efrohS984UnlgR544AGcccYZAIAzzzwTO3funJrbzc1N3HrrrVP8WV9fx2233Rau+eQnPwlrLa6++upwzT/8wz+gLMtwzcc//nGcf/75WFhY+Ka93zOZRqMRpJxWe0opWGsBNLz5VqKnkhennKx7urM3vlF6z3veQ1mW0Z/92Z/RPffcQ69//etpfn5+Kruvof87esMb3kBzc3P093//93T48OHw32g0Ctf8xE/8BJ1++un0yU9+kr70pS/RNddcQ9dcc0343pfT+K7v+i66/fbb6aMf/Sht3779CctpvOUtb6F7772X/uAP/qApp/FPpDgrlqjhz9NJX/jCF0hrTb/xG79BDz74IL373e+mTqdD//N//s9wzTve8Q6an5+n//N//g999atfpVe84hVPWMbh8ssvp1tvvZU++9nP0rnnnjtVxmF9fZ2Wl5fp1a9+Nd111130nve8hzqdTlNS40noNa95De3ZsyeUO/mrv/orWlpaore+9a3hmoY3Tx31+336yle+Ql/5ylcIAP3u7/4ufeUrX6HHH3+ciJ46Xnzuc58jrTX9zu/8Dt177730y7/8y025k6ea3vnOd9Lpp59OaZrSVVddRbfccsvTPaRTigA84X/vete7wjXj8Zj+/b//97SwsECdToe+//u/nw4fPjx1n8cee4xe+tKXUrvdpqWlJfqZn/kZKsty6ppPfepT9JznPIfSNKWzzjpr6hkNff20Fdg1/Hl66YMf/CBdcskllGUZXXDBBfQnf/InU99ba+kXf/EXaXl5mbIso5e85CV0//33T11z4sQJetWrXkW9Xo9mZ2fpta99LfX7/alr7rjjDnrRi15EWZbRnj176B3veMc3/d2eybS5uUlvetOb6PTTT6dWq0VnnXUW/fzP//xUKYyGN08dfepTn3pCXfOa17yGiJ5aXrz3ve+l8847j9I0pYsvvpg+/OEPf9Pe+5tNgigqud1QQw011FBDDTXU0DOWnlExdg011FBDDTXUUEMNfW1qgF1DDTXUUEMNNdTQKUINsGuooYYaaqihhho6RagBdg011FBDDTXUUEOnCDXArqGGGmqooYYaaugUoQbYNdRQQw011FBDDZ0i1AC7hhpqqKGGGmqooVOEGmDXUEMNNdRQQw01dIpQA+waaqihhhpqqKGGThFqgF1DDTXUUEMNNdTQKUINsGuooYYaaqihhho6RagBdg011FBDDTXUUEOnCDXArqGGGmqooYYaaugUoQbYNdRQQw01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n8C5c+dw+vRpfLX2kHvs1us1PvzhD+NVr3qVf5dSwq233oo777zzsve85jWvwc/8zM8c+f6//NW3fd36uW3btm3btm3btm3b9khqFy5ceOQBuy996UsopeDs2bPd92fPnsX/+l//67L3vOpVr8LLX/5y/3zu3Dk88YlPxOc///mvOcBte+jb3t4envCEJ+AP//APcerUqYe7O9s2a9v5eeS27dw8stt2fh7Z7dE8P8yMCxcu4Prrr/+a114Ru2KXyyWWy+WR70+fPv2om7xHUzt16tR2fh7BbTs/j9y2nZtHdtvOzyO7PVrn54E6stLXvuSPt11zzTXIOeOee+7pvr/nnntw3XXXPdTd2bZt27Zt27Zt27Zte9S0hxzYLRYLPOtZz8Idd9zh39Vacccdd+CWW255qLuzbdu2bdu2bdu2bdv2qGkPSyj25S9/OV74whfipptuwrOf/Wy8/vWvx6VLl/BDP/RDD+j+5XKJn/7pn75seHbbHv62nZ9HdtvOzyO3befmkd228/PIbtv5kfawlDsBgF/4hV/wAsXPeMYz8IY3vAE333zzw9GVbdu2bdu2bdu2bdu2R0V72IDdtm3btm3btm3btm3btv3xtoc8x27btm3btm3btm3btm3bvj5tC+y2bdu2bdu2bdu2bdseJW0L7LZt27Zt27Zt27Zt2x4lbQvstm3btm3btm3btm3bHiXtigR2b3rTm/CN3/iN2NnZwc0334wPfvCDD3eXHlXtNa95Db79278dJ0+exLXXXovv+77vw6c//enumsPDQ7z4xS/GYx7zGJw4cQLf//3ff6To9Oc//3k8//nPx7Fjx3DttdfiFa94BaZp6q75jd/4DXzbt30blsslvvmbvxlvectbvt7De9S11772tSAivOxlL/PvtvPz8LY/+qM/wt/6W38Lj3nMY7C7u4unPe1p+NCHPuS/MzN+6qd+Co973OOwu7uLW2+9FZ/5zGe6Z9x33324/fbbcerUKZw5cwY//MM/jIsXL3bX/O7v/i7+/J//89jZ2cETnvAEvO51r3tIxneltlIKXv3qV+PGG2/E7u4u/tSf+lP4J//knyDuIdzOzUPX3v/+9+N7vud7cP3114OI8I53vKP7/aGci7e//e148pOfjJ2dHTztaU/Du971rj/28T5kja+w9ra3vY0XiwX/23/7b/n3fu/3+Ed+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X/OjP/qjfMMNN/B73/te/tCHPsS33HIL33LLLf67ldP4y3/5L/NHP/pRfve7382PfexjL1tO4xWveAV/6lOf4je96U3bchr/P7a4K5Z5Oz8PZ/vgBz/IwzDwz/7sz/JnPvMZfutb38rHjh3j//Af/oNf89rXvpbPnDnD//k//2f+3d/9Xf7e7/3ey5ZxeOYzn8l33XUXf+ADH+AnPelJXRmHc+fO8dmzZ/kHf/AH+ROf+AS/7W1v42PHjm1LanyV9sIXvpAf//jHe7mTX/3VX+VrrrmGX/nKV/o127l56NqFCxf4Ix/5CH/kIx9hAPzP//k/54985CP8f/7P/2Hmh24ufuu3fouHYeCf//mf50996lP80z/909tyJw91e+Mb38g33HADLxYLfvazn82//du//XB36VHVAFz2v1/6pV/yaw4ODvjv/b2/x1dddRUfO3aM/+pf/av8hS98oXvO//7f/5uf97zn8e7uLl9zzTX8j/7RP+LNZtNd8773vY+f8Yxn8GKx4G/6pm/q3rFtD7zNgd12fh7e9l//63/lpz71qbxcLvnJT34y/+t//a+732ut/OpXv5rPnj3Ly+WSn/vc5/KnP/3p7povf/nL/AM/8AN84sQJPnXqFP/QD/0QX7hwobvmYx/7GD/nOc/h5XLJj3/84/m1r33t131sV3Lb29vjl770pXzDDTfwzs4Of9M3fRP/xE/8RFcKYzs3D1173/ved1ld88IXvpCZH9q5+JVf+RX+03/6T/NiseCnPOUp/N/+23/7uo37692IOZTc3rZt27Zt27Zt27Zt27Yrtl1ROXbbtm3btm3btm3btm3b9pXbFtht27Zt27Zt27Zt27Y9StoW2G3btm3btm3btm3btj1K2hbYbdu2bdu2bdu2bdu2PUraFtht27Zt27Zt27Zt27Y9StoW2G3btm3btm3btm3btj1K2hbYbdu2bdu2bdu2bdu2PUraFtht27Zt27Zt27Zt27Y9StoW2G3btm3btm3btm3btj1K2hbYbdu2bdu2bdu2bdu2PUraFtht27Zt27Zt27Zt27Y9Str/B49Y4PK4iwLMAAAAAElFTkSuQmCC", + "image/png": "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2Oz+ddy4cSLSurF8+umn5Stf+YrE43Hp37+/vPLKKy3W79ZwpNhu27btM49tCxcuDOtgbEWUSGT4cSIiIiJqs9rMd+yIiIiI6MiY2BERERHlCCZ2RERERDmCiR0RERFRjmBiR0RERJQjmNgRERER5QgmdkREREQ5gokdERERUY5gYkdERESUI5jYEREREeUIJnZEREREOYKJHREREVGOYGJHRERElCOY2BERERHlCCZ2RERERDmCiR0RERFRjmBiR0RERJQjmNgRER2lnj174tprr812M4iIPhMTOyIiIqIcoUREst0IIqK2oKGhAVprxGKxbDeFiKhZTOyIiIiIcgRvxRLRl96vfvUrKKWwadMmjBo1CoWFhejUqRMmTJiA+vr6sFzT79g9/vjjUEph2bJlmDRpEk4++WS0a9cOV155JT766KMs9ISIvuyY2BER+UaNGoX6+npMnz4dl1xyCR588EHceOONn/u5W2+9FWvXrsW0adNw880346WXXsItt9zSCi0mIsrkZrsBREQnil69euGFF14AAIwfPx6FhYV46KGH8Itf/AJnnnnmZ36uU6dO+Nvf/galFADAGIMHH3wQNTU1KCoqapW2ExEBvGJHRBQaP358xutbb70VADB37twjfu7GG28MkzoAuOCCC+B5HrZv3378G0lEdARM7IiIfH369Ml4fdppp0Frjffff/+In+vevXvG644dOwIA9u3bd1zbR0T0eZjYERF9huhVuCNxHKfZ9znoABG1NiZ2RES+LVu2ZLx+7733YIxBz549s9MgIqIviIkdEZFv1qxZGa9nzpwJABgxYkQ2mkNE9IXxqVgiIt+2bdtw2WWX4eKLL0ZVVRX+/Oc/4/vf/z7OOuusbDeNiOio8IodEZHvqaeeQiKRwO23345XXnkFt9xyC/7nf/4n280iIjpq/EkxIvrS+9WvfoW7774bH330ETp37pzt5hARHTNesSMiIiLKEUzsiIiIiHIEEzsiIiKiHMHv2BERERHlCF6xIyIiIsoRTOyIiIiIckSbHKDYGINdu3ahQ4cOR/1bjkRERERtkYigrq4OZWVl0PrI1+TaZGK3a9cudOvWLdvNICIiImo1O3fuRNeuXY9Ypk0mdh06dAAAfLPLtXB1PMutoVaXiMF9uBEFbiNqk3kocBthRCFlHOS5SaSMPZs5lIqhXawRAFDX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", "text/plain": [ - "
" + "
" ] }, "metadata": {}, @@ -118,54 +64,22 @@ } ], "source": [ - "plt.subplot(2, 1, 1)\n", - "plt.imshow(data['mhrb4'], aspect='auto', origin='lower')\n", + "file_name = files[-1]\n", + "data = joblib.load(file_name)\n", + "for key, value in data.items():\n", + " print(key, value.shape)\n", + "plt.subplot(3, 1, 1)\n", + "plt.imshow(data['mhr'][4], aspect='auto', origin='lower')\n", "plt.title('mhrb4')\n", - "plt.subplot(2, 1, 2)\n", - "plt.imshow(data['co2r0'], aspect='auto', origin='lower')\n", + "plt.subplot(3, 1, 2)\n", + "plt.imshow(data['co2'][0], aspect='auto', origin='lower')\n", "plt.title('co2r0')\n", + "plt.subplot(3, 1, 3)\n", + "plt.imshow(data['pin'][:,0,:], aspect='auto', origin='lower', interpolation='none')\n", + "plt.title('pin')\n", "plt.tight_layout()\n", "plt.show()" ] - }, - { - "cell_type": "code", - "execution_count": 77, - "id": "74391de4", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[]" - ] - }, - "execution_count": 77, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.plot(data['gasgasa'])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "4a656412", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { diff --git a/notebooks/data_preparation.ipynb b/notebooks/data_preparation.ipynb index 4db2cbe..534d2fa 100644 --- a/notebooks/data_preparation.ipynb +++ b/notebooks/data_preparation.ipynb @@ -13,7 +13,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "id": "9b8f64ca", "metadata": {}, "outputs": [], @@ -21,366 +21,249 @@ "import pandas as pd\n", "from pathlib import Path\n", "import matplotlib.pyplot as plt\n", + "import yaml\n", + "\n", + "shot_number = 170000\n", + "yaml_path = \"/scratch/gpfs/nc1514/FusionAIHub/src/fusionaihub/datasets/prepare/config/default.yaml\"\n", + "with open(yaml_path, 'r') as f:\n", + " cfg = yaml.safe_load(f)\n", "\n", - "from fusionaihub.datasets.prepare import prepare2 as p2" + "from fusionaihub.datasets.prepare.data_extraction import (\n", + " extract_signal, \n", + " extract_running_time, \n", + " align_signal,\n", + ")\n", + "from fusionaihub.datasets.prepare.sample_processing import (\n", + " split_samples,\n", + " remove_empty_samples,\n", + " save_sample,\n", + ")\n", + "from fusionaihub.datasets.prepare.signal_processing import (\n", + " identity_transform,\n", + " stft_transform,\n", + " resample_transform,\n", + ")" ] }, { "cell_type": "code", - "execution_count": 50, - "id": "4baa86aa", + "execution_count": 3, + "id": "c8e825ce", "metadata": {}, "outputs": [], "source": [ - "cfg = p2.sample_cfg\n", - "shot = 170000" + "start_time, end_time = extract_running_time(\n", + " shot_number=shot_number,\n", + " directory=Path(cfg[\"raw_data_dir\"]),\n", + " ip_threshold=cfg[\"ip_threshold\"],\n", + " start_time=cfg[\"start_time\"],\n", + " end_time=cfg[\"end_time\"],\n", + " )" ] }, { "cell_type": "code", - "execution_count": 141, - "id": "742dfd1b", + "execution_count": 4, + "id": "a68aaa6f", "metadata": {}, "outputs": [], "source": [ - "import h5py" + "dfs = []\n", + "missing_signals = []\n", + "for signal in cfg[\"signal\"]:\n", + " try:\n", + " df = extract_signal(\n", + " shot_number=shot_number,\n", + " directory=Path(cfg[\"raw_data_dir\"]),\n", + " signal=signal['name'], \n", + " start_time=start_time,\n", + " end_time=end_time,\n", + " )\n", + " df.columns = [\n", + " f\"{signal['abbr']}_{col}\" if col != \"time\" else col\n", + " for col in range(len(df.columns))\n", + " ]\n", + "\n", + " # Add a column to the dataframe for this signal indicating if a transform is present.\n", + " # We'll use the signal's abbreviation to name the column, e.g., 'IP_transform'\n", + " df = align_signal(\n", + " df=df,\n", + " start_time=start_time,\n", + " end_time=end_time,\n", + " fs=cfg[\"fs_khz\"],\n", + " )\n", + " dfs.append(df)\n", + " except Exception as e:\n", + " missing_signals.append((signal['name'], signal['abbr']))" ] }, { "cell_type": "code", - "execution_count": 146, - "id": "dece5ac7", + "execution_count": 55, + "id": "fe35d6ca", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " CLASS: b'GROUP'\n", - " TITLE: Empty(dtype=dtype('S1'))\n", - " VERSION: b'1.0'\n", - " axis0_variety: b'regular'\n", - " axis1_variety: b'regular'\n", - " block0_items_variety: b'regular'\n", - " encoding: b'UTF-8'\n", - " end_time_ms: 13100.0\n", - " errors: b'strict'\n", - " missing_channels: Empty(dtype=dtype('S1'))\n", - " nblocks: 1\n", - " ndim: 2\n", - " pandas_type: b'frame'\n", - " pandas_version: b'0.15.2'\n", - " r_coordinates: b'N.'\n", - " sampling_frequency_kHz: 100.00000223517424\n", - " start_time_ms: 0.0\n", - " z_coordinates: b'N.'\n" - ] - } - ], + "outputs": [], "source": [ - "import h5py\n", - "\n", - "def get_h5_attrs(directory, shot):\n", - " with h5py.File(directory + f'/{shot}.h5', 'r') as f:\n", - " mhr_group = f['p_inj']\n", - " for attr_name, attr_value in mhr_group.attrs.items():\n", - " print(f\" {attr_name}: {attr_value}\")\n", - "\n", - "# Get attrs for shot 170000\n", - "get_h5_attrs(cfg[\"raw_data_dir\"], 170000)" + "df = pd.concat(dfs, axis=1, join='inner')\n", + "for signal_name, signal_abbr in missing_signals:\n", + " df[signal_abbr] = 0.0\n", + " df[f\"{signal_abbr}_state\"] = False" ] }, { "cell_type": "code", - "execution_count": 167, - "id": "484333c0", + "execution_count": 56, + "id": "87a1b47e", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['/bes', '/bes_slow', '/beta', '/cer_amp', '/cer_amp_error', '/cer_coord_phi', '/cer_coord_r', '/cer_coord_z', '/cer_fz', '/cer_nz', '/cer_rot', '/cer_rot_error', '/cer_ti', '/cer_ti_error', '/cer_vb', '/cer_vb_error', '/cer_zeff', '/co2_density', '/co2_density_slow', '/co2_phase', '/coil_field_strength', '/d_alpha', '/divertor_geo', '/e_dens_fit', '/e_temp_fit', '/ece_cali', '/ece_slow', '/ech', '/gas', '/i_dens_fit', '/i_temp_fit', '/ip', '/mag_b0', '/mag_geo_para', '/mag_mode_number', '/mag_others', '/mag_pcb_coil', '/magnetics', '/magnetics_high_resolution', '/mse', '/neutron', '/other_profiles', '/p_inj', '/pressure', '/psi_r_z', '/q_psi', '/rho_qmin', '/rmp_current', '/ssi', '/t_inj', '/t_rot_fit', '/ts_core_density', '/ts_core_density_error', '/ts_core_temperature', '/ts_core_temperature_error', '/ts_divertor_density', '/ts_divertor_density_error', '/ts_divertor_temperature', '/ts_divertor_temperature_error', '/ts_tangential_density', '/ts_tangential_density_error', '/ts_tangential_temperature', '/ts_tangential_temperature_error']\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
gasagasbgascgasdgase
Time [ms]
-8053.6000980.0074010.0103830.0049320.0116070.008635
-8053.549805-0.0006170.0048860.0067810.0109960.003701
-8053.5000000.0148020.0079400.0110960.0085520.009252
-8053.450195-0.0061680.0024430.002466-0.000611-0.001234
-8053.3999020.0086350.0183230.0049320.0122170.006168
..................
11606.9501950.0037010.007940-0.001849-0.0012220.004318
11607.000000-0.014185-0.000611-0.017877-0.010996-0.012953
11607.0498050.0061680.0183230.0000000.001222-0.001234
11607.099609-0.004317-0.001222-0.007398-0.007330-0.011719
11607.1503910.0000000.004886-0.0024660.000000-0.000617
\n", - "

393216 rows × 5 columns

\n", - "
" - ], - "text/plain": [ - " gasa gasb gasc gasd gase\n", - "Time [ms] \n", - "-8053.600098 0.007401 0.010383 0.004932 0.011607 0.008635\n", - "-8053.549805 -0.000617 0.004886 0.006781 0.010996 0.003701\n", - "-8053.500000 0.014802 0.007940 0.011096 0.008552 0.009252\n", - "-8053.450195 -0.006168 0.002443 0.002466 -0.000611 -0.001234\n", - "-8053.399902 0.008635 0.018323 0.004932 0.012217 0.006168\n", - "... ... ... ... ... ...\n", - " 11606.950195 0.003701 0.007940 -0.001849 -0.001222 0.004318\n", - " 11607.000000 -0.014185 -0.000611 -0.017877 -0.010996 -0.012953\n", - " 11607.049805 0.006168 0.018323 0.000000 0.001222 -0.001234\n", - " 11607.099609 -0.004317 -0.001222 -0.007398 -0.007330 -0.011719\n", - " 11607.150391 0.000000 0.004886 -0.002466 0.000000 -0.000617\n", - "\n", - "[393216 rows x 5 columns]" - ] - }, - "execution_count": 167, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "import pandas as pd\n", - "\n", - "with pd.HDFStore(cfg[\"raw_data_dir\"] + '/170000.h5', \"r\") as store:\n", - " print(store.keys())\n", - " signal = store['gas']\n", - "\n", - "signal" + "samples = split_samples(\n", + " df=df,\n", + " shot_number=shot_number,\n", + " window_ms=cfg[\"window_ms\"],\n", + " hop_ms=cfg[\"hop_ms\"],\n", + " fs_khz=cfg[\"fs_khz\"],\n", + ")" ] }, { "cell_type": "code", - "execution_count": 168, - "id": "fdb1b47f", + "execution_count": 57, + "id": "40750cb0", "metadata": {}, "outputs": [], "source": [ - "channel = signal['gasa']" + "samples = remove_empty_samples(samples)" ] }, { "cell_type": "code", - "execution_count": 172, - "id": "f9cb5191", + "execution_count": null, + "id": "de25ce4f", "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 172, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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2GOux4MGDdLhw4f14osvur7cAsGTfaxaf79+/RQREaH7779fmZmZlp/OuSHv5aFDh3TjjTfq9ttv17333utabtX3EudMnDhRW7du1VdffeW2/L777nPd79u3r9q1a6frr79ee/bsUdeuXf1dpsdGjRrlut+vXz+lp6erY8eO+uijj/z+5eoP77zzjkaNGqWUlBTXsmB/D3FuYO0dd9whY4xmzJjh9pyVvmOCJqg8/vjjbmm+Jl26dHF7PHPmTLVp06ZeX1jp6elavHix63FycnK1UfpHjx5VcnKy6/nKZe3atXNb57LLLrtoezVpyD5WSk9PV0VFhfbv36+ePXvWWn/V2gOxj5Ln+3n48GFdd911uuqqq/TWW29ddPtWeC+9JSEhQaGhoXXWb1UPPfSQPvvsM61YscKtR7Mm6enpks71mnXt2lXJycnVzmyq789vTEyM38NCXFycevTood27d+uGG25QWVmZ8vPz3XpVLvyZC5b9O3DggJYsWeLqKalNsL+HVeuq67MgOTlZeXl5bq+rqKjQyZMnL7pfVdu42OeSr1WGlAMHDuiLL75w602piS++Y+oraMaoJCYmKi0trc5b1WNlxhjNnDlT48aNU3h4+EW3v3HjRrcfzCFDhujzzz93W2fx4sUaMmSIJKlz585KTk52W6ewsFDffvutax1f7+OF9YeEhLi6JIcMGaIVK1aovLzcrf6ePXsqPj4+YPvo6X4eOnRI1157rQYOHKiZM2cqJOTiP7JWeC+9JSIiQgMHDnSrzel06vPPPw94bbUxxuihhx7S3Llz9cUXX1TrHq7Jxo0bJcn1vg0ZMkRbtmxx+0JYvHixYmJidOmll7rWqet99afi4mLt2bNH7dq108CBAxUeHu5WW1ZWlrKzs121BdP+zZw5U0lJSRo9enSd6wX7eyjV77NgyJAhys/P17p161zrfPHFF3I6na6w5o3PX1+qDCm7du3SkiVL1KZNm4u+xhffMfXm0dDbILJkyRIjyezYsaPac7NmzTLvv/++2bFjh9mxY4f54x//aEJCQsxf//pX1zpff/21CQsLMy+99JLZsWOHmTp1ao2ntMbFxZlPPvnEbN682dx6661+OaX1m2++MX/605/Mxo0bzZ49e8x7771nEhMTzbhx41zr5Ofnm7Zt25q77rrLbN261cyePdu0bNmy2qljVt1HY4w5ePCg6datm7n++uvNwYMH3U6TqxTs72V9zJ4929jtdjNr1iyzfft2c99995m4uDi3syms5MEHHzSxsbFm2bJlbu9ZSUmJMcaY3bt3m2eeecasXbvW7Nu3z3zyySemS5cuZvjw4a5tVJ7aOmLECLNx40azcOFCk5iYWOOprU888YTZsWOHef311/12+u7jjz9uli1bZvbt22e+/vprk5GRYRISEkxeXp4x5tzpyR06dDBffPGFWbt2rRkyZIgZMmRI0OxfJYfDYTp06GAmT57stjyY38OioiKzYcMGs2HDBiPJvPzyy2bDhg2uM17q81lw4403mgEDBphvv/3WfPXVV6Z79+5upyd76/PXF/tYVlZmbrnlFtO+fXuzceNGt9/RyjN4/PkdUx9NNqiMGTPGbd6CqmbNmmV69eplWrZsaWJiYszgwYPdTiWs9NFHH5kePXqYiIgI07t3b/Ovf/3L7Xmn02n+3//7f6Zt27bGbreb66+/3mRlZflkf6pat26dSU9PN7GxsaZFixamV69e5rnnnjNnz551W2/Tpk3m6quvNna73VxyySVm2rRp1bZl1X00xpiZM2caSTXeKgX7e1lf06dPNx06dDARERFm8ODBZtWqVYEuqVa1vWczZ840xhiTnZ1thg8fblq3bm3sdrvp1q2beeKJJ9zm4DDGmP3795tRo0aZyMhIk5CQYB5//HFTXl7uts7SpUvNZZddZiIiIkyXLl1cbfjanXfeadq1a2ciIiLMJZdcYu68806ze/du1/Nnzpwxv/zlL018fLxp2bKl+dGPfuQWsI2x9v5VWrRokZFU7XchmN/DpUuX1vjzOX78eGNM/T4LTpw4YcaMGWOioqJMTEyMmTBhgikqKnJbxxufv77Yx8opHWq6Vc6R48/vmPqwGWOMZ30wAAAA/hE0Y1QAAEDzQ1ABAACWRVABAACWRVABAACWRVABAACWRVABAACWRVABAACWRVABAACWRVABmom7775bt912m9/bnTVrlmw2m2w2myZNmuSzdvbv3+9qJ9AXkwTgPUFz9WQAtbPZbHU+P3XqVL366qsK1ETUMTExysrKUqtWrXzWRmpqqo4cOaKXXnpJS5Ys8Vk7APyLoAI0AUeOHHHd//DDD/XUU08pKyvLtSwqKkpRUVGBKE3SuSDl68vXh4aGKjk5OaD7CcD7OPQDNAHJycmuW2xsrCsYVN6ioqKqHfq59tpr9fDDD2vSpEmKj49X27Zt9fbbb+v06dOaMGGCoqOj1a1bNy1YsMCtra1bt2rUqFGKiopS27Ztddddd+n48eMe19ypUyc9++yzGjdunKKiotSxY0d9+umnOnbsmG699VZFRUWpX79+Wrt2res1Bw4c0M0336z4+Hi1atVKvXv31vz58xv8/wbA+ggqQDP27rvvKiEhQatXr9bDDz+sBx98ULfffruuuuoqrV+/XiNGjNBdd92lkpISSVJ+fr5+8IMfaMCAAVq7dq0WLlyoo0eP6o477mhQ+3/60580dOhQbdiwQaNHj9Zdd92lcePG6Wc/+5nWr1+vrl27aty4ca5DVhMnTlRpaalWrFihLVu26Pnnn6cHBWjiCCpAM9a/f3/97ne/U/fu3TVlyhS1aNFCCQkJuvfee9W9e3c99dRTOnHihDZv3ixJeu211zRgwAA999xzSktL04ABA/TXv/5VS5cu1Xfffedx+z/84Q91//33u9oqLCzUoEGDdPvtt6tHjx6aPHmyduzYoaNHj0qSsrOzNXToUPXt21ddunTRTTfdpOHDh3v1/wSAtRBUgGasX79+rvuhoaFq06aN+vbt61rWtm1bSVJeXp4kadOmTVq6dKlrzEtUVJTS0tIkSXv27GlU+5Vt1dX+I488omeffVZDhw7V1KlTXQEKQNNFUAGasfDwcLfHNpvNbVnl2UROp1OSVFxcrJtvvlkbN250u+3atatBPRs1tVVX+7/4xS+0d+9e3XXXXdqyZYuuuOIKTZ8+3eN2AQQPggqAerv88su1bds2derUSd26dXO7+fLU46pSU1P1wAMPaM6cOXr88cf19ttv+6VdAIFBUAFQbxMnTtTJkyc1ZswYrVmzRnv27NGiRYs0YcIEORwOn7c/adIkLVq0SPv27dP69eu1dOlS9erVy+ftAggcggqAektJSdHXX38th8OhESNGqG/fvpo0aZLi4uIUEuL7jxOHw6GJEyeqV69euvHGG9WjRw+98cYbPm8XQODYTKCmqgTQLMyaNUuTJk1Sfn6+X9p7+umnNW/ePG3cuNEv7QHwLXpUAPhcQUGBoqKiNHnyZJ+1kZ2draioKD333HM+awOA/9GjAsCnioqKXPOgxMXFKSEhwSftVFRUaP/+/ZIku92u1NRUn7QDwL8IKgAAwLI49AMAACyLoAIAACyLoAIAACyLoAIAACyLoAIAACyLoAIAACyLoAIAACyLoAIAACzr/wMGvJxP6Uk3uwAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" + "name": "stdout", + "output_type": "stream", + "text": [ + "mhr (8, 1, 2832874)\n", + "ece (48, 1, 2832874)\n", + "co2 (4, 1, 2832874)\n", + "gas (5, 1, 2832874)\n", + "ech (11, 1, 2832874)\n", + "pin (8, 1, 2832874)\n", + "tin (8, 1, 2832874)\n" + ] } ], "source": [ - "channel.plot()" + "for sample in samples:\n", + " transformed_samples = {}\n", + " for key, value in sample.items():\n", + " for signal in cfg[\"signal\"]:\n", + " abbr = signal['abbr']\n", + " cols = [col for col in value.columns if abbr in col]\n", + " transformed_samples[abbr] = identity_transform(\n", + " x=value[cols].to_numpy().T)\n", + " print(abbr, transformed_samples[abbr].shape)\n", + " save_sample(transformed_samples, Path('.'), key)" ] }, { "cell_type": "code", - "execution_count": 152, - "id": "91f88685", + "execution_count": 58, + "id": "bc37f8e0", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(2832874,) (513, 11066)\n" + ] + } + ], "source": [ - "import torch" + "first_arr = list(samples[0].values())[0].iloc[:, 0].values\n", + "transform_shape = stft_transform(x=first_arr).shape\n", + "print(first_arr.shape, transform_shape)" ] }, { "cell_type": "code", - "execution_count": 159, - "id": "cf665d9e", + "execution_count": 83, + "id": "f6cae5ac", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mhr (8, 513, 11066)\n", + "ece (48, 513, 11066)\n", + "co2 (4, 513, 11066)\n", + "gas (5, 1, 11066)\n", + "ech (11, 1, 11066)\n", + "pin (8, 1, 11066)\n", + "tin (8, 1, 11066)\n" + ] + } + ], "source": [ - "# Apply STFT transform to the channel data\n", - "x_tensor = torch.from_numpy(channel.values).float()\n", - "stft_result = torch.stft(\n", - " x_tensor, \n", - " n_fft=1024, \n", - " hop_length=256, \n", - " window=torch.hann_window(1024), \n", - " return_complex=True\n", - ")\n", - "# Take log of absolute values\n", - "log_abs_stft = torch.log(torch.abs(stft_result))" + "for sample in samples:\n", + " transformed_samples = {}\n", + " for key, value in sample.items():\n", + " for signal in cfg[\"signal\"]:\n", + " abbr = signal['abbr']\n", + " cols = [col for col in value.columns if abbr in col]\n", + " if signal[\"make_stft\"]:\n", + " transformed_samples[abbr] = stft_transform(\n", + " x=value[cols].to_numpy().T,\n", + " n_fft=cfg[\"stft\"][\"n_fft\"],\n", + " hop_length=cfg[\"stft\"][\"hop_length\"],\n", + " )\n", + " else:\n", + " transformed_samples[abbr] = resample_transform(\n", + " x=value[cols].to_numpy().T,\n", + " ref_shape=transform_shape,\n", + " )\n", + " print(abbr, transformed_samples[abbr].shape)\n", + " save_sample(transformed_samples, Path('.'), key)\n", + " break\n", + " break" ] }, { "cell_type": "code", - "execution_count": 162, - "id": "1b0ca730", + "execution_count": 85, + "id": "c8797e68", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Original signal length: 1310001\n", - "STFT time frames: 5118\n", - "Decimation factor: 255.95955451348183\n", - "Decimated signal length: 5118\n" + "float32\n" ] } ], "source": [ - "# Decimate the original signal to match the STFT time dimension\n", - "stft_time_frames = log_abs_stft.shape[1]\n", - "original_length = len(channel)\n", - "\n", - "print(f\"Original signal length: {original_length}\")\n", - "print(f\"STFT time frames: {stft_time_frames}\")\n", - "print(f\"Decimation factor: {original_length / stft_time_frames}\")\n", - "\n", - "# Create decimated signal by taking every nth sample\n", - "decimation_factor = original_length // stft_time_frames\n", - "decimated_signal = channel.values[::decimation_factor][:stft_time_frames]\n", - "\n", - "print(f\"Decimated signal length: {len(decimated_signal)}\")\n" + "import joblib\n", + "test_load = joblib.load('/scratch/gpfs/EKOLEMEN/nc1514/foundation_v2/train/170000_0.pkl')\n", + "print(test_load['mhr'].dtype)" ] }, { "cell_type": "code", - "execution_count": 166, - "id": "c9129a21", + "execution_count": 86, + "id": "883637b2", "metadata": {}, "outputs": [ { "data": { - "image/png": "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13W4z33ucx201jCbzfBbv/Vb+K3f+i189atfxYc+9CG84hWvwJvf/GZMJhO84Q1vWLn+R37kR1b+vuUtb4mUUuQfXXjhhVDV/a4jaN1intV3anW8+c1vvvL3l770JQDAj/7oj+537W1ve1u85z3vwd69e7F7925sbm6uVEMkruy1K3sW8Y53vAMveMEL8PGPfxzz+TxevzJS4qY3venK37Rh3uQmN7nS1y+77LIrfSZg4eUbGxtX2decM77yla/g+OOPv8p7XB32nUMRwa1udasDyrrat58kqK6uPwcLIoKnPe1peM973oMPfvCD1ygA/Zqs47W1tf2soUccccR+Y/KdrKeruueVXVvPya5duw547zY0NDQ0NFyXaKRUQ0NDQ0PDd4jpdIo73/nOuPOd74xb3/rWeMxjHoO3vOUteN7znnewm3a1OOaYY/Cwhz0MZ5xxBo4//ni8+c1vxp/+6Z9ebdbUvgflnDNEBO9617vQdd1+1x9IltE1wbfLNrqun/VP//RPOPXUU3H3u98dr371q3HMMcdgMpngda97Hd74xjfud/2VjcnVva6q31mjDxK+3/pDUvCb3/zmdfaMqxqTGt+t9XRl4/ztrr2+925DQ0NDQ8OVoZFSDQ0NDQ0N30Xc6U53AmC2su8XTCYTnHDCCbjwwgvDvkNceOGFK4qhiy66CDnnsKTd8pa3hKri5je/OW5961tf5TNoOfrUpz51tUqwa2LlA0p4++c+97n93vvsZz+LH/qhH8L27duxtraGtbU1XHTRRftdd2WvXRX+z//5P1hbW8N73vMezGazeP11r3vdNWr3tcENbnADbNu27Sr7mlLaT4F1TXDhhReu/K2quOiii3DCCSdc63t+r4J2t6sKub8qHOg6PlAczPV0oHu3oaGhoaHhukTLlGpoaGhoaLgW+MAHPnCl6gTm71yZxepg48ILL8SXv/zl/V7/1re+hfPPPx9HHHHEfof0c889d+XvV77ylQAQOUynn346uq7DWWedtd94qCq+8Y1vAAB+4id+Aje/+c3x8pe/fL/sqvpz27dvjzYdCI455hjc4Q53wOtf//qVz3zqU5/Ce9/7Xvzsz/4sgGKLfNvb3oaLL744rrvooovwrne964CexfuICMZxjNe++MUv4m1ve9sB3+Paous63Pe+98Xf/u3frljqvva1r+GNb3wj7na3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86u7SYqyRvLUU0/hgAMOQP/+/WGMwX333VfxPhHhvPPOQ79+/VBdXY3Ro0fjnXfeqbhmzpw5OPzww1FfX49u3brhu9/9LhYsWFBxzSuvvIJdd90VVVVVGDhwIH71q1+t7K4pyhrDpZdeiu233x5dunRB7969cdBBB2Hq1KkV17S0tODEE0/EOuusg7q6OhxyyCH49NNPK6758MMPsd9++6Gmpga9e/fGWWedhXK5XHHN+PHjse2226JYLGLDDTfEuHHjVnb3FGWN4LrrrsNWW22F+vp61NfXY8SIEXjwwQfD+7rHFGXFctlll8EYg9NOOy28pvtMUb4cF1xwAYwxFX823XTT8P7atMc6tSh1991344wzzsD555+Pl156CcOGDcOYMWMwa9as1d00RVnjaGxsxLBhw3Dttdd2+P6vfvUrXH311bj++usxadIk1NbWYsyYMWhpaQnXHH744Xj99dfx6KOP4oEHHsBTTz2F448/Przf0NCAvffeG4MGDcLkyZNxxRVX4IILLsAf//jHld4/RVkTmDBhAk488UQ899xzePTRR1EqlbD33nujsbExXHP66afj/vvvx1/+8hdMmDABn3zyCQ4++ODwfpqm2G+//dDW1oZ///vfuOWWWzBu3Dicd9554Zrp06djv/32w6hRozBlyhScdtpp+N73voeHH354lfZXUVYH6667Li677DJMnjwZL774IvbYYw8ceOCBeP311wHoHlOUFckLL7yAG264AVtttVXF67rPFOXLs8UWW2DGjBnhzzPPPBPeW6v2GHVidthhBzrxxBPD72maUv/+/enSSy9dja1SlDUfAHTvvfeG351z1LdvX7riiivCa3PnzqVisUh33nknERG98cYbBIBeeOGFcM2DDz5Ixhj6+OOPiYjoD3/4A3Xv3p1aW1vDNT/5yU9ok002Wck9UpQ1k1mzZhEAmjBhAhH5fZXP5+kvf/lLuObNN98kADRx4kQiIvrXv/5F1lqaOXNmuOa6666j+vr6sLd+/OMf0xZbbFHxrEMPPZTGjBmzsrukKGsk3bt3pxtvvFH3mKKsQObPn08bbbQRPfroozRy5Eg69dRTiUj/LlOUFcH5559Pw4YN6/C9tW2PdVqnVFtbGyZPnozRo0eH16y1GD16NCZOnLgaW6Yoax/Tp0/HzJkzK/ZT165dseOOO4b9NHHiRHTr1g3bbbdduGb06NGw1mLSpEnhmt122w2FQiFcM2bMGEydOhVffPHFKuqNoqw5zJs3DwDQo0cPAMDkyZNRKpUq9tqmm26K9dZbr2KvDR06FH369AnXjBkzBg0NDcEJMnHixIp7yDX695/S2UjTFHfddRcaGxsxYsQI3WOKsgI58cQTsd9++7XbC7rPFGXF8M4776B///5Yf/31cfjhh+PDDz8EsPbtsU4rSn3++edI07RiEgCgT58+mDlz5mpqlaKsncieWdx+mjlzJnr37l3xfi6XQ48ePSqu6ege2WcoSmfBOYfTTjsNX/va17DlllsC8PugUCigW7duFdcuvNeWtI8WdU1DQwOam5tXRncUZY3i1VdfRV1dHYrFIn7wgx/g3nvvxeabb657TFFWEHfddRdeeuklXHrppe3e032mKF+eHXfcEePGjcNDDz2E6667DtOnT8euu+6K+fPnr3V7LLfC7qQoiqIoygrjxBNPxGuvvVaRH0BRlBXDJptsgilTpmDevHm45557cPTRR2PChAmru1mK8pXgo48+wqmnnopHH30UVVVVq7s5ivKVZOzYseHnrbbaCjvuuCMGDRqE//u//0N1dfVqbNmy02mdUj179kSSJO0y0H/66afo27fvamqVoqydyJ5Z3H7q27dvuyIC5XIZc+bMqbimo3tkn6EonYGTTjoJDzzwAJ588kmsu+664fW+ffuira0Nc+fOrbh+4b22pH20qGvq6+vXuv+QUZTloVAoYMMNN8Tw4cNx6aWXYtiwYbjqqqt0jynKCmDy5MmYNWsWtt12W+RyOeRyOUyYMAFXX301crkc+vTpo/tMUVYw3bp1w8Ybb4xp06atdX+XdVpRqlAoYPjw4Xj88cfDa845PP744xgxYsRqbJmirH0MGTIEffv2rdhPDQ0NmDRpUthPI0aMwNy5czF58uRwzRNPPAHnHHbcccdwzVNPPYVSqRSuefTRR7HJJpuge/fuq6g3irL6ICKcdNJJuPfee/HEE09gyJAhFe8PHz4c+Xy+Yq9NnToVH374YcVee/XVVytE4EcffRT19fXYfPPNwzXZe8g1+vef0llxzqG1tVX3mKKsAPbcc0+8+uqrmDJlSviz3Xbb4fDDDw8/6z5TlBXLggUL8O6776Jfv35r399lKzRt+lrGXXfdRcVikcaNG0dvvPEGHX/88dStW7eKDPSKonjmz59P//nPf+g///kPAaDf/va39J///Ic++OADIiK67LLLqFu3bvT3v/+dXnnlFTrwwANpyJAh1NzcHO6xzz770DbbbEOTJk2iZ555hjbaaCM67LDDwvtz586lPn360JFHHkmvvfYa3XXXXVRTU0M33HDDKu+voqwOfvjDH1LXrl1p/PjxNGPGjPCnqakpXPODH/yA1ltvPXriiSfoxRdfpBEjRtCIESPC++Vymbbcckvae++9acqUKfTQQw9Rr1696JxzzgnXvPfee1RTU0NnnXUWvfnmm3TttddSkiT00EMPrdL+Ksrq4Oyzz6YJEybQ9OnT6ZVXXqGzzz6bjDH0yCOPEJHuMUVZGWSr7xHpPlOUL8uZZ55J48ePp+nTp9Ozzz5Lo0ePpp49e9KsWbOIaO3aY51alCIiuuaaa2i99dajQqFAO+ywAz333HOru0mKskby5JNPEoB2f44++mgiInLO0bnnnkt9+vShYrFIe+65J02dOrXiHrNnz6bDDjuM6urqqL6+no499liaP39+xTUvv/wy7bLLLlQsFmnAgAF02WWXraouKspqp6M9BoBuvvnmcE1zczP9v//3/6h79+5UU1ND3/jGN2jGjBkV93n//fdp7NixVF1dTT179qQzzzyTSqVSxTVPPvkkbb311lQoFGj99deveIaifJU57rjjaNCgQVQoFKhXr1605557BkGKSPeYoqwMFhaldJ8pypfj0EMPpX79+lGhUKABAwbQoYceStOmTQvvr017zBARrVjvlaIoiqIoiqIoiqIoiqIsnk6bU0pRFEVRFEVRFEVRFEVZfagopSiKoiiKoiiKoiiKoqxyVJRSFEVRFEVRFEVRFEVRVjkqSimKoiiKoiiKoiiKoiirHBWlFEVRFEVRFEVRFEVRlFWOilKKoiiKoiiKoiiKoijKKkdFKUVRFEVRFEVRFEVRFGWVo6KUoiiKoiiKoiiKoiiKsspRUUpRFEVRFGUZOOaYY3DQQQet7mYoiqIoiqKs9agopSiKoiiKwhhjFvvnggsuwFVXXYVx48at8raNHz++wzb9/Oc/X+VtURRFURRFWRHkVncDFEVRFEVR1hRmzJgRfr777rtx3nnnYerUqeG1uro61NXVrY6mBaZOnYr6+vrwe0ftSdMUxhhYq//+qCiKoijKmov+l4qiKIqiKArTt2/f8Kdr164wxlS8VldX1y58b/fdd8fJJ5+M0047Dd27d0efPn3wpz/9CY2NjTj22GPRpUsXbLjhhnjwwQcrnvXaa69h7NixqKurQ58+fXDkkUfi888/X2Ibe/fu3a5N48aNQ7du3fCPf/wDm2++OYrFIj788EO88MIL2GuvvdCzZ0907doVI0eOxEsvvVRxP2MMbrjhBuy///6oqanBZptthokTJ2LatGnYfffdUVtbi5133hnvvvtuxef+/ve/Y9ttt0VVVRXWX399XHjhhSiXy8s/+IqiKIqidDpUlFIURVEURfmS3HLLLejZsyeef/55nHzyyfjhD3+Ib33rW9h5553x0ksvYe+998aRRx6JpqYmAMDcuXOxxx57YJtttsGLL76Ihx56CJ9++in+53/+Z7nb0NTUhMsvvxw33ngjXn/9dfTu3Rvz58/H0UcfjWeeeQbPPfccNtpoI+y7776YP39+xWcvvvhiHHXUUZgyZQo23XRTfOc738EJJ5yAc845By+++CKICCeddFK4/umnn8ZRRx2FU089FW+88QZuuOEGjBs3Dr/85S+Xu/2KoiiKonQ+DBHR6m6EoiiKoijKmsa4ceNw2mmnYe7cuRWvH3PMMZg7dy7uu+8+AN4plaYpnn76aQA+dK5r1644+OCDceuttwIAZs6ciX79+mHixInYaaed8Itf/AJPP/00Hn744XDf//73vxg4cCCmTp2KjTfeuF17xo8fj1GjRqG2trbi9Q8++AD3338/jj32WEyZMgXDhg1bZJ+cc+jWrRv+/Oc/Y//99weAkJfq4osvBgA899xzGDFiBG666SYcd9xxAIC77roLxx57LJqbmwEAo0ePxp577olzzjkn3Pv222/Hj3/8Y3zyySdLHFtFURRFURRAc0opiqIoiqJ8abbaaqvwc5IkWGeddTB06NDwWp8+fQAAs2bNAgC8/PLLePLJJzvMB/Xuu+92KEoJTz/9NLp06RJ+7969OwCgUChUtAMAPv30U/z85z/H+PHjMWvWLKRpiqamJnz44YeLbL+0deH2t7S0oKGhAfX19Xj55Zfx7LPPVjij0jRFS0sLmpqaUFNTs8j2K4qiKIqiCCpKKYqiKIqifEny+XzF78aYiteMMQC8UwkAFixYgAMOOACXX355u3v169dvsc8aMmQIunXr1u716urq8Bzh6KOPxuzZs3HVVVdh0KBBKBaLGDFiBNra2hbZfrnHktp/4YUX4uCDD27XjqqqqsW2X1EURVEURVBRSlEURVEUZRWz7bbb4q9//SsGDx6MXG7l/efYs88+iz/84Q/Yd999AQAfffTRUiVTXxLbbrstpk6dig033PBL30tRFEVRlM6LJjpXFEVRFEVZxZx44omYM2cODjvsMLzwwgt499138fDDD+PYY49FmqYr7DkbbbQRbrvtNrz55puYNGkSDj/8cFRXV3/p+5533nm49dZbceGFF+L111/Hm2++ibvuugs///nPV0CrFUVRFEXpLKgopSiKoiiKsorp378/nn32WaRpir333htDhw7Faaedhm7dusHaFfefZzfddBO++OILbLvttjjyyCNxyimnoHfv3l/6vmPGjMEDDzyARx55BNtvvz122mkn/O53v8OgQYNWQKsVRVEUReksaPU9RVEURVEURVEURVEUZZWjTilFURRFURRFURRFURRllaOilKIoiqIoiqIoiqIoirLKUVFKURRFURRFURRFURRFWeWoKKUoiqIoiqIoiqIoiqKsclSUUhRFURRFURRFURRFUVY5KkopiqIoiqIoiqIoiqIoqxwVpRRFURRFURRFURRFUZRVjopSiqIoiqIoiqIoiqIoyipHRSlFURRFURRFURRFURRllaOilKIoiqIoiqIoiqIoirLKUVFKURRFURRFURRFURRFWeWoKKUoiqIoiqIoiqIoiqKsclSUUhRFURRFURRFURRFUVY5KkopiqIoiqIoiqIoiqIoqxwVpRRFURRFURRFURRFUZRVjopSiqIoiqIoiqIoiqIoyipHRSlFURRFURRFURRFURRllaOilKIoiqJ8BbjgggtgjFmuz44bNw7GGLz//vsrtlEZ3n//fRhjMG7cuBV2z9133x277777Crvfl8UYgwsuuGCF3W/BggX43ve+h759+8IYg9NOO+1L3/PLzPX48eNhjMH48eMrXr/tttuw6aabIp/Po1u3bl+6jcvLotq3PMg4vfjii1++YWsAq2KPK4qiKMryoKKUoiiKoqxGXn/9dRxxxBEYMGAAisUi+vfvj8MPPxyvv/766m7aauP999/Hscceiw022ABVVVXo27cvdtttN5x//vmru2mrlEsuuQTjxo3DD3/4Q9x222048sgjV3eT2vHWW2/hmGOOwQYbbIA//elP+OMf/7hUn1uwYAHOP/987LPPPujRo8diBctjjjkGxph2fzbddNMV2BNFURRFUVYHudXdAEVRFEXprPztb3/DYYcdhh49euC73/0uhgwZgvfffx833XQT7rnnHtx11134xje+sVT3+vnPf46zzz57udpx5JFH4tvf/jaKxeJyfX5FMm3aNGy//faorq7Gcccdh8GDB2PGjBl46aWXcPnll+PCCy8M1z7yyCOrsaUrnyeeeAI77bTTChXjvsxc77bbbmhubkahUAivjR8/Hs45XHXVVdhwww2X+l6ff/45LrroIqy33noYNmzYEt1NxWIRN954Y8VrXbt2Xab2K4qiKIqy5qGilKIoiqKsBt59910ceeSRWH/99fHUU0+hV69e4b1TTz0Vu+66K4488ki88sorWH/99Rd5n8bGRtTW1iKXyyGXW76/1pMkQZIky/XZFc3vfvc7LFiwAFOmTMGgQYMq3ps1a1bF71lx5KvIrFmzsPnmm6/Qe36ZubbWoqqqquI1mZNlDdvr168fZsyYgb59++LFF1/E9ttvv9jrc7kcjjjiiGV6hqIoiqIoaz4avqcoiqIoq4ErrrgCTU1N+OMf/1ghSAFAz549ccMNN6CxsRG/+tWvwuuSN+qNN97Ad77zHXTv3h277LJLxXtZmpubccopp6Bnz57o0qULvv71r+Pjjz9ul/uoo3wzgwcPxv77749nnnkGO+ywA6qqqrD++uvj1ltvrXjGnDlz8KMf/QhDhw5FXV0d6uvrMXbsWLz88svLNS7vvvsu1l133XaCFAD07t274veOckp98MEH+PrXv47a2lr07t0bp59+Oh5++OF2uYZ23313bLnllnjjjTcwatQo1NTUYMCAARXjDQBtbW0477zzMHz4cHTt2hW1tbXYdddd8eSTTy5X/wAv5Hz3u99Fnz59UFVVhWHDhuGWW24J70tupOnTp+Of//xnCFdbXD4gYwxOOukk3HHHHdhkk01QVVWF4cOH46mnnqq47svM9cI5mwYPHhxcXL169VqmnFrFYhF9+/ZdqmuFNE3R0NCwTJ9ZFB9//DG++93von///igWixgyZAh++MMfoq2treK61tZWnHHGGejVqxdqa2vxjW98A5999lnFNX//+9+x3377hXttsMEGuPjii5GmacV1S7vmZJz/7//+D7/85S+x7rrroqqqCnvuuSemTZvWri+TJk3CPvvsg65du6KmpgYjR47Es88+u0LGSVEURVFWNipKKYqiKMpq4P7778fgwYOx6667dvj+brvthsGDB+Of//xnu/e+9a1voampCZdccgm+//3vL/IZxxxzDK655hrsu+++uPzyy1FdXY399ttvqds4bdo0fPOb38Ree+2F3/zmN+jevTuOOeaYinxX7733Hu677z7sv//++O1vf4uzzjoLr776KkaOHIlPPvlkqZ8lDBo0CB999BGeeOKJZf5sY2Mj9thjDzz22GM45ZRT8LOf/Qz//ve/8ZOf/KTD67/44gvss88+GDZsGH7zm99g0003xU9+8hM8+OCD4ZqGhgbceOON2H333XH55ZfjggsuwGeffYYxY8ZgypQpy9zG5uZm7L777rjttttw+OGH44orrkDXrl1xzDHH4KqrrgIAbLbZZrjtttvQs2dPbL311rjttttw2223tRMvF2bChAk47bTTcMQRR+Ciiy7C7Nmzsc8+++C1115bYruWZq4X5sorrwzhpddddx1uu+02HHzwwcswGktPU1MT6uvr0bVrV/To0QMnnngiFixYsFz3+uSTT7DDDjvgrrvuwqGHHoqrr74aRx55JCZMmICmpqaKa08++WS8/PLLOP/88/HDH/4Q999/P0466aSKa8aNG4e6ujqcccYZuOqqqzB8+HCcd955HYbTLs2aEy677DLce++9+NGPfoRzzjkHzz33HA4//PCKa5544gnstttuaGhowPnnn49LLrkEc+fOxR577IHnn39+ucZHURRFUVYppCiKoijKKmXu3LkEgA488MDFXvf1r3+dAFBDQwMREZ1//vkEgA477LB218p7wuTJkwkAnXbaaRXXHXPMMQSAzj///PDazTffTABo+vTp4bVBgwYRAHrqqafCa7NmzaJisUhnnnlmeK2lpYXSNK14xvTp06lYLNJFF11U8RoAuvnmmxfb59dee42qq6sJAG299dZ06qmn0n333UeNjY3trh05ciSNHDky/P6b3/yGANB9990XXmtubqZNN92UANCTTz5Z8VkAdOutt4bXWltbqW/fvnTIIYeE18rlMrW2tlY894svvqA+ffrQcccdV/H6wuPaEVdeeSUBoNtvvz281tbWRiNGjKC6urow10R+Dvbbb7/F3i/7bAD04osvhtc++OADqqqqom984xvhtS8z108++WS7cZR199lnny1VOzvihRdeWOzaOPvss+knP/kJ3X333XTnnXfS0UcfTQDoa1/7GpVKpcW2ryOOOuoostbSCy+80O495xwRxXEaPXp0eI2I6PTTT6ckSWju3Lnhtaampnb3OeGEE6impoZaWlrCa0u75qQfm222WcXau+qqqwgAvfrqq6GtG220EY0ZM6aijU1NTTRkyBDaa6+9wmsdzbuiKIqirAmoU0pRFEVRVjHz588HAHTp0mWx18n7C4cs/eAHP1jiMx566CEAwP/7f/+v4vWTTz55qdu5+eabVzi5evXqhU022QTvvfdeeK1YLMJa/58TaZpi9uzZqKurwyabbIKXXnppqZ8lbLHFFpgyZQqOOOIIvP/++7jqqqtw0EEHoU+fPvjTn/602M8+9NBDGDBgAL7+9a+H16qqqhbpJqurq6vIU1QoFLDDDjtU9C9JkpC7yjmHOXPmoFwuY7vttluu/v3rX/9C3759cdhhh4XX8vk8TjnlFCxYsAATJkxY5nsKI0aMwPDhw8Pv6623Hg488EA8/PDD7ULJFmZp5np1cemll+Kyyy7D//zP/+Db3/42xo0bh1/+8pd49tlncc899yzTvZxzuO+++3DAAQdgu+22a/f+wiGwxx9/fMVru+66K9I0xQcffBBeq66uDj/Pnz8fn3/+OXbddVc0NTXhrbfeqrjf0qw54dhjj63ImybzI9dOmTIF77zzDr7zne9g9uzZ+Pzzz/H555+jsbERe+65J5566ik455ZqXBRFURRldaGiVIannnoKBxxwAPr37w9jDO67775lvgcR4de//jU23nhjFItFDBgwAL/85S9XfGMVRVGUtRYRm0ScWhSLEq+GDBmyxGd88MEHsNa2u3ZZKqStt9567V7r3r07vvjii/C7cw6/+93vsNFGG6FYLKJnz57o1asXXnnlFcybN2+pn5Vl4403xm233YbPP/8cr7zyCi655BLkcjkcf/zxeOyxxxb5uQ8++AAbbLBBO2FhUX1ed9112127cP8A4JZbbsFWW22FqqoqrLPOOujVqxf++c9/Llf/PvjgA2y00UZByBM222yz8P7ystFGG7V7beONN0ZTU1O7PEgLszRzvSZx+umnw1q72PXQEZ999hkaGhqw5ZZbLtX1C49L9+7dAaBiXF5//XV84xvfQNeuXVFfX49evXoF4WnhNbK0a25pnv3OO+8AAI4++mj06tWr4s+NN96I1tbW5d6DiqIoirKq0Op7GRobGzFs2DAcd9xxy50T4dRTT8UjjzyCX//61xg6dCjmzJmDOXPmrOCWKoqiKGszXbt2Rb9+/fDKK68s9rpXXnkFAwYMQH19fcXrWWfGymRRVdqIKPx8ySWX4Nxzz8Vxxx2Hiy++GD169IC1FqeddtqXdmkkSYKhQ4di6NChGDFiBEaNGoU77rgDo0eP/lL3zd6/I7L9u/3223HMMcfgoIMOwllnnYXevXsjSRJceumlePfdd1dIO9YElmYs1iSqq6uxzjrrrPT/xlrSuMydOxcjR45EfX09LrroImywwQaoqqrCSy+9hJ/85Cft9sCyjPOSrpV7X3HFFdh66607vLaurq7D1xVFURRlTUFFqQxjx47F2LFjF/l+a2srfvazn+HOO+/E3LlzseWWW+Lyyy8PlX/efPNNXHfddXjttdewySabAFi6f81WFEVROh/7778//vSnP+GZZ54JFfSyPP3003j//fdxwgknLNf9Bw0aBOccpk+fXuGg6ah615fhnnvuwahRo3DTTTdVvD537lz07NlzhT1HQq1mzJixyGsGDRqEN954A0RU4Ub5Mn2+5557sP766+Nvf/tbxT2l6tyyMmjQILzyyitwzlW4pSTMq6Oqg0uLOGeyvP3226ipqVlikvS1DQmTW9Z+9erVC/X19UuV/H1pGD9+PGbPno2//e1v2G233cLr06dPXyH3XxwbbLABAKC+vn6FCbWKoiiKsqrR8L1l4KSTTsLEiRNx11134ZVXXsG3vvUt7LPPPuE/Au+//36sv/76eOCBBzBkyBAMHjwY3/ve99QppSiKorTjrLPOQnV1NU444QTMnj274r05c+bgBz/4AWpqanDWWWct1/3HjBkDAPjDH/5Q8fo111yzfA1eBEmStHN5/OUvf8HHH3+8XPd7+umnUSqV2r3+r3/9CwDCP/p0xJgxY/Dxxx/jH//4R3itpaVlibmoFoe4VbJ9nDRpEiZOnLhc99t3330xc+ZM3H333eG1crmMa665BnV1dRg5cuRyt3XixIkVea4++ugj/P3vf8fee++9SNfNmk5LS0uHYa4XX3wxiAj77LPPMt3PWouDDjoI999/P1588cV27y+rM6yj9dHW1tZu360Mhg8fjg022AC//vWvO6xEuKSQTUVRFEVZE1Cn1FLy4Ycf4uabb8aHH36I/v37AwB+9KMf4aGHHsLNN9+MSy65BO+99x4++OAD/OUvf8Gtt96KNE1x+umn45vf/OZylbZWFEVRvrpstNFGuOWWW3D44Ydj6NCh+O53v4shQ4bg/fffx0033YTPP/8cd955Z3BDLCvDhw/HIYccgiuvvBKzZ8/GTjvthAkTJuDtt98G0D6h8/Ky//7746KLLsKxxx6LnXfeGa+++iruuOMOrL/++st1v8svvxyTJ0/GwQcfjK222goA8NJLL+HWW29Fjx49cNpppy3ysyeccAJ+//vf47DDDsOpp56Kfv364Y477kBVVRWA5evz/vvvj7/97W/4xje+gf322w/Tp0/H9ddfj80337xDIWBJHH/88bjhhhtwzDHHYPLkyRg8eDDuuecePPvss7jyyiuXmPx+cWy55ZYYM2YMTjnlFBSLxSCMXHjhhct9z5XJ73//e8ydOxeffPIJAP+Pe//9738B+IT8Xbt2xcyZM7HNNtvgsMMOw6abbgoAePjhh/Gvf/0L++yzDw488MBlfu4ll1yCRx55BCNHjsTxxx+PzTbbDDNmzMBf/vIXPPPMM+jWrdtS32vnnXdG9+7dcfTRR+OUU06BMQa33XbbKgl7tNbixhtvxNixY7HFFlvg2GOPxYABA/Dxxx/jySefRH19Pe6///6V3g5FURRF+TKoKLWUvPrqq0jTFBtvvHHF662trVhnnXUA+Nj+1tZW3HrrreG6m266CcOHD8fUqVMX+6+7iqIoSufjW9/6FjbddFNceumlQYhaZ511MGrUKPz0pz9d6mTMi+LWW29F3759ceedd+Lee+/F6NGjcffdd2OTTTYJQs2X5ac//SkaGxvx5z//GXfffTe23XZb/POf/8TZZ5+93Pf785//jAkTJuCOO+5AU1MT+vXrh29/+9s499xzFxsWX1dXhyeeeAInn3wyrrrqKtTV1eGoo47CzjvvjEMOOWS5+nzMMcdg5syZuOGGG/Dwww9j8803x+23346//OUvGD9+/DLfr7q6GuPHj8fZZ5+NW265BQ0NDdhkk01w880345hjjlnm+2UZOXIkRowYgQsvvBAffvghNt98c4wbNy6Ie2sav/71rysSu//tb3/D3/72NwDAEUccga5du6Jbt27Yf//98eijj+KWW25BmqbYcMMNcckll+BHP/pRu4TxS8OAAQMwadIknHvuubjjjjvQ0NCAAQMGYOzYsaipqVmme62zzjp44IEHcOaZZ+LnP/85unfvjiOOOAJ77rlncCuuTHbffXdMnDgRF198MX7/+99jwYIF6Nu3L3bcccflDv1VFEVRlFWJoTU1g+VqxhiDe++9FwcddBAA4O6778bhhx+O119/vZ0Fvq6uDn379sX555+PSy65pCLsoLm5GTU1NXjkkUew1157rcouKIqiKEo7pkyZgm222Qa33347Dj/88NXdnFXClVdeidNPPx3//e9/MWDAgNXdnJWCMQYnnngifv/736+0Zzz++OMYPXo0nn766Q7zoCmKoiiKoiwr6pRaSrbZZhukaYpZs2Zh11137fCar33tayiXy3j33XdDuIWESXyZxKWKoiiKsjw0Nze3q9R35ZVXwlpbkZT5q8TCfW5pacENN9yAjTba6CsrSK0qJMn8ikxgryiKoihK50ZFqQwLFiyoqNAzffp0TJkyBT169MDGG2+Mww8/HEcddRR+85vfYJtttsFnn32Gxx9/HFtttRX2228/jB49Gttuuy2OO+44XHnllXDO4cQTT8Ree+3VLuxPURRFUVY2v/rVrzB58mSMGjUKuVwODz74IB588EEcf/zxGDhw4Opu3krh4IMPxnrrrYett94a8+bNw+2334633noLd9xxx+pu2lpLY2Mj7rjjDlx11VVYd911F/vfNAsWLFhirq1evXqttYnXFUVRFEVZsagoleHFF1/EqFGjwu9nnHEGAODoo4/GuHHjcPPNN+MXv/gFzjzzTHz88cfo2bMndtppJ+y///4AfMLJ+++/HyeffDJ222031NbWYuzYsfjNb36zWvqjKIqidG523nlnPProo7j44ouxYMECrLfeerjgggvws5/9bHU3baUxZswY3HjjjbjjjjuQpik233xz3HXXXTj00ENXd9PWWj777DOcfPLJGDp0KG6++ebF5nH69a9/vcTE6tOnT8fgwYNXcCsVRVEURVkb0ZxSiqIoiqIoygrhvffew3vvvbfYa3bZZZcVlmhfURRFUZS1GxWlFEVRFEVRFEVRFEVRlFXOstfRVRRFURRFURRFURRFUZQvieaUAuCcwyeffIIuXbrAGLO6m6MoiqIoiqIoiqIoirLWQkSYP38++vfvv9h8lCpKAfjkk0++slWIFEVR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pET7dABfOu+880KfDxw4UMOHD1eXLl305z//Wc2bN4/imTVe3I6UatOmjRISEmqsQF9SUqKcnJwonRXgTVXPTH3PU05OTo1NBI4dO6Y9e/bY3lPbMcLLAOLB5MmTtWjRIr322mvq1KlT6PWcnBwdOXJEe/futb2/+rN2oueorvekp6d77n9kgMZKSkpSjx49NGTIEM2ePVt5eXmaO3cuzxfgkHXr1mnXrl0aPHiwEhMTlZiYqJUrV+qhhx5SYmKisrOzedYAh2VmZqpXr1769NNPPffvWdyGUklJSRoyZIiWLVsWeq2yslLLli1Tfn5+FM8M8J5u3bopJyfH9jyVlpZqzZo1oecpPz9fe/fu1bp160LvWb58uSorKzV8+PDQe1atWqWjR4+G3rN06VL17t1bWVlZhq4GiB7LsjR58mS98MILWr58ubp162b7/pAhQ9SsWTPbs7ZlyxZt27bN9qxt2rTJFgIvXbpU6enp6tevX+g94ceoeg///iEeVVZWqry8nOcLcMioUaO0adMmbdy4MfQxdOhQXXrppaHPedYAZ+3fv1+fffaZ2rdv771/zxxdNt1jFi5caCUnJ1vFxcXWhx9+aP3iF7+wMjMzbSvQAziurKzM2rBhg7VhwwZLknX//fdbGzZssL744gvLsixrzpw5VmZmpvXSSy9Z77//vjV27FirW7du1qFDh0LHOPfcc61BgwZZa9assd544w2rZ8+e1oQJE0Lf37t3r5WdnW1ddtll1gcffGAtXLjQSk1NtebPn2/8eoFouO6666yMjAxrxYoV1o4dO0IfBw8eDL3n2muvtTp37mwtX77cWrt2rZWfn2/l5+eHvn/s2DGrf//+1ujRo62NGzdaixcvttq2bWtNmzYt9J7PP//cSk1NtW655Rbro48+subNm2clJCRYixcvNnq9gGm/+c1vrJUrV1pbt2613n//fes3v/mNFQgErH/84x+WZfF8AW4J333PsnjWgEjdfPPN1ooVK6ytW7dab775plVQUGC1adPG2rVrl2VZ3nrG4jqUsizL+q//+i+rc+fOVlJSkjVs2DDr7bffjvYpATHptddesyTV+Jg4caJlWZZVWVlp3XbbbVZ2draVnJxsjRo1ytqyZYvtGLt377YmTJhgtWzZ0kpPT7eKioqssrIy23vee+896/TTT7eSk5Otjh07WnPmzDF1iUDU1faMSbL++Mc/ht5z6NAh6/rrr7eysrKs1NRU68c//rG1Y8cO23H+9a9/Weedd57VvHlzq02bNtbNN99sHT161Pae1157zTr55JOtpKQkq3v37rYyAL+68sorrS5dulhJSUlW27ZtrVGjRoUCKcvi+QLcUj2U4lkDIjN+/Hirffv2VlJSktWxY0dr/Pjx1qeffhr6vpeesYBlWZazY68AAAAAAACA+sXtmlIAAAAAAACIHkIpAAAAAAAAGEcoBQAAAAAAAOMIpQAAAAAAAGAcoRQAAAAAAACMI5QCAAAAAACAcYRSAAAAAAAAMI5QCgAAAAAAAMYRSgEAADTCFVdcoYsuuijapwEAAOB5hFIAAADfCQQC9X7cfvvtmjt3roqLi42f24oVK2o9p+nTpxs/FwAAACckRvsEAAAAYsWOHTtCnz/77LOaMWOGtmzZEnqtZcuWatmyZTROLWTLli1KT08PfV3b+VRUVCgQCCgY5O+PAAAgdvF/KgAAAN/JyckJfWRkZCgQCNhea9myZY3pe2eddZZ+9atfacqUKcrKylJ2drb+8Ic/6MCBAyoqKlJaWpp69OihV155xVbWBx98oPPOO08tW7ZUdna2LrvsMn3zzTcnPMd27drVOKfi4mJlZmbqf//3f9WvXz8lJydr27Ztevfdd3XOOeeoTZs2ysjI0MiRI7V+/Xrb8QKBgObPn68LLrhAqamp6tu3r1avXq1PP/1UZ511llq0aKERI0bos88+s/3cSy+9pMGDByslJUXdu3fXrFmzdOzYsaZXPgAAiDuEUgAAABH605/+pDZt2uidd97Rr371K1133XX6yU9+ohEjRmj9+vUaPXq0LrvsMh08eFCStHfvXv3whz/UoEGDtHbtWi1evFglJSX66U9/2uRzOHjwoO655x499thj2rx5s9q1a6eysjJNnDhRb7zxht5++2317NlT559/vsrKymw/e+edd+ryyy/Xxo0b1adPH11yySX65S9/qWnTpmnt2rWyLEuTJ08Ovf/111/X5ZdfrhtvvFEffvih5s+fr+LiYt19991NPn8AABB/ApZlWdE+CQAAgFhTXFysKVOmaO/evbbXr7jiCu3du1cvvviipOMjpSoqKvT6669LOj51LiMjQ+PGjdOTTz4pSdq5c6fat2+v1atX69RTT9Vdd92l119/XUuWLAkd99///rdyc3O1ZcsW9erVq8b5rFixQmeffbZatGhhe/2LL77Qyy+/rKKiIm3cuFF5eXl1XlNlZaUyMzP19NNP64ILLpCk0LpUd955pyTp7bffVn5+vh5//HFdeeWVkqSFCxeqqKhIhw4dkiQVFBRo1KhRmjZtWujY//M//6Nbb71VX3311QnrFgAAQGJNKQAAgIgNHDgw9HlCQoJat26tAQMGhF7Lzs6WJO3atUuS9N577+m1116rdT2ozz77rNZQqsrrr7+utLS00NdZWVmSpKSkJNt5SFJJSYmmT5+uFStWaNeuXaqoqNDBgwe1bdu2Os+/6lyrn//hw4dVWlqq9PR0vffee3rzzTdtI6MqKip0+PBhHTx4UKmpqXWePwAAQBVCKQAAgAg1a9bM9nUgELC9FggEJB0fqSRJ+/fv14UXXqh77rmnxrHat29fb1ndunVTZmZmjdebN28eKqfKxIkTtXv3bs2dO1ddunRRcnKy8vPzdeTIkTrPv+oYJzr/WbNmady4cTXOIyUlpd7zBwAAqEIoBQAAYNjgwYP117/+VV27dlVionv/O/bmm2/qkUce0fnnny9J+vLLLxu0mPqJDB48WFu2bFGPHj0iPhYAAIhfLHQOAABg2KRJk7Rnzx5NmDBB7777rj777DMtWbJERUVFqqiocKycnj176r//+7/10Ucfac2aNbr00kvVvHnziI87Y8YMPfnkk5o1a5Y2b96sjz76SAsXLtT06dMdOGsAABAvCKUAAAAM69Chg958801VVFRo9OjRGjBggKZMmaLMzEwFg87979njjz+ub7/9VoMHD9Zll12mG264Qe3atYv4uIWFhVq0aJH+8Y9/6JRTTtGpp56qBx54QF26dHHgrAEAQLxg9z0AAAAAAAAYx0gpAAAAAAAAGEcoBQAAAAAAAOMIpQAAAAAAAGAcoRQAAAAAAACMI5QCAAAAAACAcYRSAAAAAAAAMI5QCgAAAAAAAMYRSgEAAAAAAMA4QikAAAAAAAAYRygFAAAAAAAA4wilAAAAAAAAYByhFAAAAAAAAIz7/xydcf1B0hY9AAAAAElFTkSuQmCC", + "image/png": "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T3safuqnfgrf+q3fim//9m/Hf/gP/wFAztEn4w333HMPHv/4x6++n6YJn/d5n/dprcPv5fad3/md+Et/6S/h6U9/OjabDZ797GfjpS99KV74whcCOM7zw9EeyTn9RNdcr3P+qJW6P7ZHtr34xS/G+973PrzlLW95tLvye679+q//Ol7ykpfgjW98I05OTh7t7vyebGMMPPe5z8U/+kf/CADw7Gc/G+973/vwr//1v8aLXvSiR7l3v3faj/7oj+KHf/iH8Z/+03/CM57xDLz73e/GS1/6UjzhCU84zvOxPeLthrKg3Hrrrei9X5X98JGPfAS33377o9Sr679927d9G37yJ38Sb37zm/FFX/RF8fntt9+O/X6Pe++9d3V9nc/bb7/9mvPN7z7ZNRcvXsS5c+c+28O57to73/lOfPSjH8VXfMVXYJomTNOEn/mZn8G/+Bf/AtM04bbbbjvO82fYvuALvgB/8A/+wdVnf+AP/AF8+MMfBpBz9Ml4w+23346PfvSjq+/necbHPvaxT2sdfi+3l7/85WFFedaznoVv+qZvwt/5O38nLIPHef7st0dyTj/RNdfrnN9QAGW73eI5z3kO7r777vhsjIG7774bd95556PYs+uzqSq+7du+DT/+4z+ON73pTXjqU5+6+v45z3kONpvNaj4/+MEP4sMf/nDM55133on3vve9q83xxje+ERcvXgyBceedd66ewWs+V9bk677u6/De974X7373u+Pnuc99Ll74whfGv4/z/Jm1r/mar7kqRf5XfuVX8OQnPxkA8NSnPhW33377an7uv/9+vO1tb1vN8b333ot3vvOdcc2b3vQmjDFwxx13xDU/+7M/i8PhENe88Y1vxJd+6ZfisY997MM2vuulXbp0Ca2txULvHWMMAMd5fjjaIzmnNxwPebSjdD/d9trXvlZ3u53+0A/9kL7//e/Xv/E3/obecsstq+yHY7P2rd/6rXrzzTfrT//0T+tv/uZvxs+lS5fimm/5lm/RJz3pSfqmN71J3/GOd+idd96pd955Z3zP9Nc/9sf+mL773e/WN7zhDfr5n//510x/ffnLX64f+MAH9DWvec3nTPrrJ2o1i0f1OM+faXv729+u0zTp937v9+qv/uqv6g//8A/r+fPn9T/+x/8Y17z61a/WW265Rf/Lf/kv+ku/9Ev6p//0n75mquazn/1sfdvb3qZvectb9GlPe9oqVfPee+/V2267Tb/pm75J3/e+9+lrX/taPX/+/O/Z9Nez7UUvepF+4Rd+YaQZ/9iP/Zjeeuut+h3f8R1xzXGeP/32wAMP6Lve9S5917vepQD0n/7Tf6rvete79P/+3/+rqo/cnP7cz/2cTtOk/+Sf/BP9wAc+oK985SuPacaf7fb93//9+qQnPUm3260+73nP05//+Z9/tLt0XTYA1/z5wR/8wbjm8uXL+rf+1t/Sxz72sXr+/Hn9s3/2z+pv/uZvrp7zf/7P/9Gv//qv13Pnzumtt96qf/fv/l09HA6ra9785jfrl3/5l+t2u9Uv/uIvXr3jc7GdBSjHef7M23/7b/9Nn/nMZ+put9OnP/3p+m//7b9dfT/G0O/+7u/W2267TXe7nX7d132dfvCDH1xd8zu/8zv6jd/4jXrhwgW9ePGifvM3f7M+8MADq2ve85736Nd+7dfqbrfTL/zCL9RXv/rVD/vYrpd2//3360te8hJ90pOepCcnJ/rFX/zF+l3f9V2r1NXjPH/67c1vfvM1efGLXvQiVX1k5/RHf/RH9ff//t+v2+1Wn/GMZ+h//+///WEb92faRLWUCDy2Yzu2Yzu2Yzu2Y7sO2g0Vg3Jsx3Zsx3Zsx3ZsnxvtCFCO7diO7diO7diO7bprR4BybMd2bMd2bMd2bNddOwKUYzu2Yzu2Yzu2Y7vu2hGgHNuxHduxHduxHdt1144A5diO7diO7diO7diuu3YEKMd2bMd2bMd2bMd23bUjQDm2Yzu2Yzu2Yzu2664dAcqxHduxHduxHduxXXftCFCO7diO7diO7diO7bprR4BybMd2bMd2bMd2bNddOwKUYzu2Yzu2Yzu2Y7vu2v8fqRc6FV+bWnoAAAAASUVORK5CYII=", "text/plain": [ - "
" + "
" ] }, "metadata": {}, @@ -388,31 +271,9 @@ } ], "source": [ - "# Plot the spectrogram\n", - "import matplotlib.pyplot as plt\n", - "plt.figure(figsize=(12, 6))\n", - "plt.subplot(2, 1, 1)\n", - "plt.imshow(log_abs_stft.numpy(), aspect='auto', origin='lower', cmap='viridis')\n", - "plt.xlabel('Time Frame')\n", - "plt.ylabel('Frequency Bin')\n", - "plt.title('STFT Spectrogram of pinjf_15l channel')\n", - "plt.subplot(2, 1, 2)\n", - "plt.plot(decimated_signal)\n", - "plt.xlim(0, len(decimated_signal))\n", - "plt.xlabel('Time Frame')\n", - "plt.ylabel('Magnitude')\n", - "plt.title('Original Signal of pinjf_15l channel')\n", - "plt.tight_layout()\n", - "plt.show()\n" + "plt.imshow(test_load['ece'][4], aspect='auto', origin='lower')\n", + "plt.show()" ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "7912cd5d", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { diff --git a/src/fusionaihub/datasets/prepare/__main__.py b/src/fusionaihub/datasets/prepare/__main__.py new file mode 100644 index 0000000..444fa44 --- /dev/null +++ b/src/fusionaihub/datasets/prepare/__main__.py @@ -0,0 +1,4 @@ +from .prepare_dataset import main + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/src/fusionaihub/datasets/prepare/config/default.yaml b/src/fusionaihub/datasets/prepare/config/default.yaml index bd25673..28d8ff6 100644 --- a/src/fusionaihub/datasets/prepare/config/default.yaml +++ b/src/fusionaihub/datasets/prepare/config/default.yaml @@ -4,13 +4,13 @@ # Signal configuration - list of signals to process # Each signal has: [signal_name, abbreviation, should_transform] signal: - - ["magnetics_high_resolution", "mhr", true] - - ["ece_cali", "ece", true] - - ["co2_density", "co2", true] - - ["gas", "gas", false] - - ["ech", "ech", false] - - ["p_inj", "pin", false] - - ["t_inj", "tin", false] + - {name: "magnetics_high_resolution", abbr: "mhr", make_stft: true} + - {name: "ece_cali", abbr: "ece", make_stft: true} + - {name: "co2_density", abbr: "co2", make_stft: true} + - {name: "gas", abbr: "gas", make_stft: false} + - {name: "ech", abbr: "ech", make_stft: false} + - {name: "p_inj", abbr: "pin", make_stft: false} + - {name: "t_inj", abbr: "tin", make_stft: false} # Data processing parameters randomize_shots: true @@ -18,22 +18,24 @@ random_seed: 42 num_shots: 50 fs_khz: 500 # Sampling frequency in kHz ip_threshold: 0.1 # Plasma current threshold -window_ms: 250 # Window size in milliseconds -hop_ms: 50 # Hop size in milliseconds +window_ms: null # Window size in milliseconds +hop_ms: null # Hop size in milliseconds remove_empty: true +do_stft: true +start_time: null # Start time for signal extraction (null for auto-detection) +end_time: null # End time for signal extraction (null for auto-detection) # Train/test split configuration train_test_split: 0.2 # Directory paths -raw_data_dir: "/scratch/gpfs/EKOLEMEN/d3d_fusion_data" -output_dir: "/scratch/gpfs/EKOLEMEN/nc1514/foundation_v2" +raw_data_dir: /scratch/gpfs/EKOLEMEN/d3d_fusion_data +output_dir: /scratch/gpfs/EKOLEMEN/hackathon/foundation25/ # Processing parameters stft: n_fft: 1024 hop_length: 256 - window_type: "hann" # Output settings compression: true # Whether to compress saved files \ No newline at end of file diff --git a/src/fusionaihub/datasets/prepare/config/raw.yaml b/src/fusionaihub/datasets/prepare/config/raw.yaml new file mode 100644 index 0000000..79dc8f4 --- /dev/null +++ b/src/fusionaihub/datasets/prepare/config/raw.yaml @@ -0,0 +1,39 @@ +# Dataset preparation configuration +# Configuration for fusion data processing pipeline + +# Signal configuration - list of signals to process +# Each signal has: [signal_name, abbreviation, should_transform] +signal: + - ["magnetics_high_resolution", "mhr", false] + - ["ece_cali", "ece", false] + - ["co2_density", "co2", false] + - ["gas", "gas", false] + - ["ech", "ech", false] + - ["p_inj", "pin", false] + - ["t_inj", "tin", false] + +# Data processing parameters +randomize_shots: true +random_seed: 42 +num_shots: 50 +fs_khz: 500 # Sampling frequency in kHz +ip_threshold: 0.1 # Plasma current threshold +window_ms: 250 # Window size in milliseconds +hop_ms: 50 # Hop size in milliseconds +remove_empty: true + +# Train/test split configuration +train_test_split: 0.2 + +# Directory paths +raw_data_dir: "/scratch/gpfs/EKOLEMEN/d3d_fusion_data" +output_dir: "/scratch/gpfs/EKOLEMEN/nc1514/foundation_v1" + +# Processing parameters +stft: + n_fft: 1024 + hop_length: 256 + window_type: "hann" + +# Output settings +compression: true # Whether to compress saved files \ No newline at end of file diff --git a/src/fusionaihub/datasets/prepare/core/__init__.py b/src/fusionaihub/datasets/prepare/core/__init__.py deleted file mode 100644 index d608038..0000000 --- a/src/fusionaihub/datasets/prepare/core/__init__.py +++ /dev/null @@ -1,30 +0,0 @@ -""" -Core modules for fusion dataset preparation. - -This package contains modular components for processing fusion data: -- signal_processing: Signal resampling and transformation functions -- data_extraction: Data extraction and alignment functions -- sample_processing: Sample splitting, transformation, and saving -- shot_processing: Shot-level processing logic -- dataset_utils: Dataset utilities and indexing -""" - -from .signal_processing import resample_nearest, transform_individual_sample -from .data_extraction import extract, running_time, align -from .sample_processing import split, transform_samples, save_samples -from .dataset_utils import create_missing_signal_dataframes, index_dataset -from .shot_processing import process_shot_stft - -__all__ = [ - 'resample_nearest', - 'transform_individual_sample', - 'extract', - 'running_time', - 'align', - 'split', - 'transform_samples', - 'save_samples', - 'create_missing_signal_dataframes', - 'index_dataset', - 'process_shot_stft' -] \ No newline at end of file diff --git a/src/fusionaihub/datasets/prepare/core/dataset_utils.py b/src/fusionaihub/datasets/prepare/core/dataset_utils.py deleted file mode 100644 index 0d10803..0000000 --- a/src/fusionaihub/datasets/prepare/core/dataset_utils.py +++ /dev/null @@ -1,84 +0,0 @@ -""" -Dataset utilities for fusion dataset preparation. - -This module contains utility functions for handling missing signals, -creating placeholder dataframes, and indexing dataset files. -""" - -import pandas as pd -from pathlib import Path -from typing import Set, List, Dict - - -def create_missing_signal_dataframes( - cfg: Dict, - processed_signals: Set, - reference_df: pd.DataFrame -) -> List[pd.DataFrame]: - """ - Create fully off dataframes for missing signals using reference dataframe structure. - - When some signals are missing from a shot, this function creates placeholder - dataframes with the same structure but with all data set to 0 and all states - set to False. - - Args: - cfg: Configuration dictionary containing signal definitions - processed_signals: Set of signal abbreviations that were successfully processed - reference_df: Reference DataFrame to use for structure - - Returns: - List of DataFrames for missing signals - """ - missing_dfs = [] - - for signal in cfg["signal"]: - signal_name, signal_abbr, do_transform = signal - if signal_abbr not in processed_signals: - print(f"Creating fully off dataframe for missing signal {signal_name}") - - # Create off dataframe by copying structure and zeroing values - off_df = reference_df.copy() - - # Get columns that belong to the reference signal (to replace with new signal columns) - ref_signal_cols = [col for col in off_df.columns if not col.endswith('_state')] - - # Create new column names for the missing signal - new_cols = {} - new_state_cols = {} - - for i, col in enumerate(ref_signal_cols): - new_col_name = f"{signal_abbr}col{i}" - new_cols[col] = new_col_name - new_state_cols[f"{col}_state"] = f"{new_col_name}_state" - - # Rename columns to match the missing signal - off_df = off_df.rename(columns={**new_cols, **new_state_cols}) - - # Set all data columns to 0 and all state columns to False - for col in off_df.columns: - if col.endswith('_state'): - off_df[col] = False - else: - off_df[col] = 0.0 - - missing_dfs.append(off_df) - - return missing_dfs - - -def index_dataset(out_dir: Path) -> None: - """ - Create an index file listing all dataset files in the directory. - - Scans the output directory for .pkl files and creates an index.pkl - file containing the list of all dataset files. - - Args: - out_dir: Directory to index - """ - files = list(out_dir.glob("*.pkl")) - df_files = pd.DataFrame({'files': [str(file) for file in files]}) - df_files.to_pickle(out_dir / "index.pkl") - - print(f"Indexed {len(files)} files.") \ No newline at end of file diff --git a/src/fusionaihub/datasets/prepare/core/sample_processing.py b/src/fusionaihub/datasets/prepare/core/sample_processing.py deleted file mode 100644 index 7b7109a..0000000 --- a/src/fusionaihub/datasets/prepare/core/sample_processing.py +++ /dev/null @@ -1,160 +0,0 @@ -""" -Sample processing utilities for fusion dataset preparation. - -This module contains functions for splitting signals into time windows, -applying transformations to samples, and saving processed data. -""" - -import numpy as np -import pandas as pd -import joblib -from pathlib import Path -from typing import List, Dict -from .signal_processing import resample_nearest, transform_individual_sample - - -def split(df: pd.DataFrame, window_ms: int, hop_ms: int, fs_khz: float) -> List[pd.DataFrame]: - """ - Split signal data into overlapping time windows. - - Args: - df: Input DataFrame with signal data - window_ms: Window size in milliseconds - hop_ms: Hop size in milliseconds - fs_khz: Sampling frequency in kHz - - Returns: - List of DataFrame samples - """ - # Create sample indicies - num_samples = int((window_ms) * fs_khz) - hop_samples = int((hop_ms) * fs_khz) - - # Separate samples - samples = [] - for start in range(0, len(df) - num_samples + 1, hop_samples): - end = start + num_samples - sample = df.iloc[start:end] - if len(sample) == num_samples: - samples.append(sample) - - return samples - - -def transform_samples( - samples: List[pd.DataFrame], - directory: Path, - signal_config: List[tuple], - shot: int, -) -> List[Dict]: - """ - Transform and process samples based on signal configuration. - - Applies transformations (like STFT) to specified signals and resamples - non-transformed signals to match the dimensions of transformed ones. - - Args: - samples: List of sample DataFrames - directory: Output directory - signal_config: List of (signal_name, abbreviation, should_transform) tuples - shot: Shot number for logging - - Returns: - List of dictionaries containing processed sample data - """ - directory.mkdir(parents=True, exist_ok=True) - print(f"Processing {len(samples)} samples for shot {shot}") - samples_dict = [] - - # Create mapping from signal abbreviation to whether it should be transformed - transform_map = {} - for signal_name, signal_abbr, should_transform in signal_config: - transform_map[signal_abbr] = should_transform - - for i, sample in enumerate(samples): - - # Remove columns ending with '_state' - sample_to_save = sample.loc[:, ~sample.columns.str.endswith('_state')] - - # Only save if not fully off (i.e., at least one True in any state col) - state_cols = [col for col in sample.columns if col.endswith('_state')] - if np.any(sample[state_cols].to_numpy()): - - # First pass: apply transformations and collect results - sample_dict = {} - transformed_sample = None - original_time_length = len(sample_to_save) - - for col in sample_to_save.columns: - # Convert each column to float32 numpy array - col_array = sample_to_save[col].values.astype(np.float32) - - # Determine if this column should be transformed based on signal abbreviation - should_transform = False - for signal_abbr in transform_map.keys(): - if col.startswith(signal_abbr): - should_transform = transform_map[signal_abbr] - break - - if should_transform: - transformed_array = transform_individual_sample(col_array) - sample_dict[col] = transformed_array - # Store an example transformed sample to get target dimensions - if transformed_sample is None: - transformed_sample = transformed_array - print(f"Reference transformed sample shape: {transformed_array.shape}") - else: - # Store original array for now, will resample later - sample_dict[col] = col_array - - # Second pass: resample non-transformed samples to match transformed dimensions - if transformed_sample is not None: - target_width = transformed_sample.shape[-1] # Last dimension is time - # Calculate target sample frequency based on transformed sample - target_fs = target_width / original_time_length - print(f"Target frequency ratio: {target_fs:.4f} (target width: {target_width}, original length: {original_time_length})") - - for col in sample_dict.keys(): - # Check if this column was transformed - should_transform = False - for signal_abbr in transform_map.keys(): - if col.startswith(signal_abbr): - should_transform = transform_map[signal_abbr] - break - - if not should_transform: - # Resample non-transformed data to match target width - original_array = sample_dict[col] - resampled_array = resample_nearest(original_array, target_width) - - # Crop end if needed to ensure exact match - if len(resampled_array) > target_width: - resampled_array = resampled_array[:target_width] - elif len(resampled_array) < target_width: - # Pad with zeros if too short (shouldn't happen with resample_nearest) - pad_width = target_width - len(resampled_array) - resampled_array = np.pad(resampled_array, (0, pad_width), mode='constant') - - sample_dict[col] = resampled_array.astype(np.float32) - print(f"Resampled {col} from {len(original_array)} to {len(resampled_array)}") - - samples_dict.append(sample_dict) - print(f"Sample {i} processed with {len(sample_dict)} signals") - - return samples_dict - - -def save_samples(samples: List[Dict], directory: Path, shot: int) -> None: - """ - Save processed samples to disk using joblib compression. - - Args: - samples: List of sample dictionaries to save - directory: Output directory - shot: Shot number for filename generation - """ - directory.mkdir(parents=True, exist_ok=True) - print(f"Saving {len(samples)} samples to {directory}") - for i, sample in enumerate(samples): - # Save using joblib - joblib.dump(sample, directory / f"{shot}_{i}.pkl", compress=True) \ No newline at end of file diff --git a/src/fusionaihub/datasets/prepare/core/shot_processing.py b/src/fusionaihub/datasets/prepare/core/shot_processing.py deleted file mode 100644 index 6cf17c8..0000000 --- a/src/fusionaihub/datasets/prepare/core/shot_processing.py +++ /dev/null @@ -1,122 +0,0 @@ -""" -Shot processing utilities for fusion dataset preparation. - -This module contains the main shot processing logic that orchestrates -data extraction, alignment, transformation, and saving for individual shots. -""" - -import numpy as np -import pandas as pd -from pathlib import Path -from typing import Dict - -from .data_extraction import extract, running_time, align -from .sample_processing import transform_samples, save_samples -from .dataset_utils import create_missing_signal_dataframes - - -def process_shot_stft(shot: int, cfg: Dict, out_dir: Path) -> None: - """ - Process a single shot through the complete data preparation pipeline accounting for STFT transformations. - - This function orchestrates the complete processing workflow for a shot: - 1. Determines plasma running time - 2. Extracts and aligns all configured signals to be transformed - 3. Handles missing signals by creating placeholder dataframes - 4. Combines all signals into a unified dataframe - 5. Transforms and saves the processed samples using STFT transformations. - 6. Downsamples shots not transformed to the same length as the transformed shots. - - Args: - shot: Shot number to process - cfg: Configuration dictionary - out_dir: Output directory for processed files - """ - try: - dfs = [] - start_time = None - end_time = None - - try: - start_time, end_time = running_time( - directory=Path(cfg["raw_data_dir"]), - shot=shot, - ip_threshold=cfg["ip_threshold"] - ) - reference_len = int((end_time - start_time) * cfg["fs_khz"]) - print(f"Running time for shot {shot}: {start_time} to {end_time}") - except Exception as e: - print(f"Error: Could not determine running time for shot {shot}: {e}") - return - - # Process each signal and track which ones succeeded - processed_signals = set() - - for signal in cfg["signal"]: - signal_name, signal_abbr, is_transformed = signal - df = None - - if is_transformed: - try: - # Try to extract and process the signal - df = extract(shot=shot, directory=Path(cfg["raw_data_dir"]), signal=signal_name) - df.columns = [f"{signal_abbr}{col}" if col != "time" else col for col in df.columns] - df = align(df, start_time, end_time, cfg["fs_khz"]) - processed_signals.add(signal_abbr) - dfs.append(df) - print(f"Successfully processed signal {signal_name} for shot {shot}") - except Exception as e: - print(f"Error processing signal {signal_name} for shot {shot}: {e}") - - if not dfs: - print(f"Error: No dataframes created for shot {shot}") - return - - df = pd.concat(dfs, axis=1, join='inner') - - # num_samples = len(df) - # new_index = np.linspace(start_time, end_time, num_samples) - # df.index = new_index - # df.index = pd.to_timedelta(df.index, unit='ms') - - samples = [df] # no splitting for this dataset - print(f"Shot {shot} has {len(samples)} samples after splitting.") - samples_dict_list = transform_samples(samples, out_dir, cfg["signal"], shot) - - # Get the first (and only) sample dictionary since we don't split - sample_dict = samples_dict_list[0] - - # Get a sample from sample_dict to determine STFT dimensions - first_key = next(iter(sample_dict.keys())) - stft_width = sample_dict[first_key].shape[-1] - print(f"Using {first_key} as reference for STFT dimensions: {stft_width}") - stft_fs = stft_width / (end_time - start_time) - - for signal in cfg["signal"]: - signal_name, signal_abbr, is_transformed = signal - if not is_transformed: - try: - df = extract(shot=shot, directory=Path(cfg["raw_data_dir"]), signal=signal_name) - df.columns = [f"{signal_abbr}{col}" if col != "time" else col for col in df.columns] - df = align(df, start_time, end_time, stft_fs) - # Ensure signal matches STFT width by truncating if necessary - if len(df) > stft_width: - df = df.iloc[:stft_width] - print(f"Truncated {signal_abbr} from {len(df)} to {stft_width} samples to match STFT width") - elif len(df) < stft_width: - print(f"Warning: {signal_abbr} has {len(df)} samples, less than STFT width {stft_width}") - pad_width = stft_width - len(df) - df = np.pad(df, (0, pad_width), mode='constant', constant_values=0) - print(f"Padded {signal_abbr} from {len(df)} to {stft_width} samples with zeros") - print(f"Successfully processed non-transformed signal {signal_name} for shot {shot}") - except Exception as e: - print(f"Error processing non-transformed signal {signal_name} for shot {shot}: {e}") - - save_samples([sample_dict], out_dir, shot) - print(f"Processed shot {shot} successfully with {len(cfg['signal'])} signals.") - - except Exception as e: - print(f"Error processing shot {shot}: {e}") - return - - return \ No newline at end of file diff --git a/src/fusionaihub/datasets/prepare/core/data_extraction.py b/src/fusionaihub/datasets/prepare/data_extraction.py similarity index 74% rename from src/fusionaihub/datasets/prepare/core/data_extraction.py rename to src/fusionaihub/datasets/prepare/data_extraction.py index 6ee2118..a6ff154 100644 --- a/src/fusionaihub/datasets/prepare/core/data_extraction.py +++ b/src/fusionaihub/datasets/prepare/data_extraction.py @@ -11,7 +11,13 @@ from scipy.signal import resample -def extract(shot: int, directory: Path, signal: str) -> pd.DataFrame: +def extract_signal( + shot_number: int, + directory: Path, + signal: str, + start_time: float | None = None, + end_time: float | None = None, +) -> pd.DataFrame: """ Extract signal data from HDF5 file for a given shot. @@ -23,33 +29,50 @@ def extract(shot: int, directory: Path, signal: str) -> pd.DataFrame: Returns: DataFrame containing the signal data """ - path = (directory / str(shot)).with_suffix(".h5") + path = (directory / str(shot_number)).with_suffix(".h5") df = pd.read_hdf(path, key=signal) return pd.DataFrame(df) -def running_time(directory: Path, shot: int, ip_threshold: float) -> tuple[float, float]: +def extract_running_time( + shot_number: int, + directory: Path, + ip_threshold: float, + start_time: float | None = None, + end_time: float | None = None, +) -> tuple[float, float]: """ Determine the plasma running time for a shot based on plasma current threshold. Args: directory: Directory containing HDF5 files shot: Shot number - ip_threshold: Plasma current threshold + ip_threshold: Plasma current threshold for a shot to be considered running + start_time: Manually set start time for the shot (ms) (optional) + end_time: Manually set end time for the shot (ms) (optional) Returns: Tuple of (start_time, end_time) in milliseconds """ - path = (directory / str(shot)).with_suffix(".h5") + path = (directory / str(shot_number)).with_suffix(".h5") with pd.HDFStore(path, 'r') as store: df = store['ip']['ipsip'] df = df.loc[df > ip_threshold] - start_time = df.index[0] - end_time = df.index[-1] + if start_time is not None: + df = df.loc[df.index >= start_time] + if end_time is not None: + df = df.loc[df.index <= end_time] + start_time = float(df.index[0]) + end_time = float(df.index[-1]) return start_time, end_time -def align(df: pd.DataFrame, start_time: float, end_time: float, fs: float) -> pd.DataFrame: +def align_signal( + df: pd.DataFrame, + start_time: float, + end_time: float, + fs: float, +) -> pd.DataFrame: """ Align signal data to a common timebase and sampling frequency. diff --git a/src/fusionaihub/datasets/prepare/dataset_utils.py b/src/fusionaihub/datasets/prepare/dataset_utils.py new file mode 100644 index 0000000..26ba018 --- /dev/null +++ b/src/fusionaihub/datasets/prepare/dataset_utils.py @@ -0,0 +1,30 @@ +""" +Dataset utilities for fusion dataset preparation. + +This module contains utility functions for handling missing signals, +creating placeholder dataframes, and indexing dataset files. +""" + +import pandas as pd +import logging +from pathlib import Path +from typing import Set, List, Dict + +# Set up logger for this module +logger = logging.getLogger(__name__) + +def index_dataset(out_dir: Path) -> None: + """ + Create an index file listing all dataset files in the directory. + + Scans the output directory for .joblib files and creates an index.pkl + file containing the list of all dataset files. + + Args: + out_dir: Directory to index + """ + files = list(out_dir.glob("*.joblib")) + df_files = pd.DataFrame({'files': [str(file) for file in files]}) + df_files.to_csv(out_dir / "index.csv", index=False) + + logger.info(f"Indexed {len(files)} files.") \ No newline at end of file diff --git a/src/fusionaihub/datasets/prepare/logging_config.py b/src/fusionaihub/datasets/prepare/logging_config.py new file mode 100644 index 0000000..20ddf51 --- /dev/null +++ b/src/fusionaihub/datasets/prepare/logging_config.py @@ -0,0 +1,64 @@ +""" +Logging configuration for fusion dataset preparation. + +This module provides centralized logging configuration for the signal processing +and dataset preparation pipeline. +""" + +import logging +import sys +from typing import Optional + + +def setup_logging( + level: str = "INFO", + format_string: Optional[str] = None, + logger_name: str = "fusionaihub.datasets.prepare" +) -> logging.Logger: + """ + Set up logging configuration for the dataset preparation pipeline. + + Args: + level: Logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL) + format_string: Custom format string for log messages + logger_name: Name for the logger + + Returns: + Configured logger instance + """ + if format_string is None: + format_string = "%(asctime)s - %(name)s - %(levelname)s - %(message)s" + + # Create logger + logger = logging.getLogger(logger_name) + logger.setLevel(getattr(logging, level.upper())) + + # Remove existing handlers to avoid duplicates + for handler in logger.handlers[:]: + logger.removeHandler(handler) + + # Create console handler + console_handler = logging.StreamHandler(sys.stdout) + console_handler.setLevel(getattr(logging, level.upper())) + + # Create formatter + formatter = logging.Formatter(format_string) + console_handler.setFormatter(formatter) + + # Add handler to logger + logger.addHandler(console_handler) + + return logger + + +def get_logger(name: str) -> logging.Logger: + """ + Get a logger instance for a specific module. + + Args: + name: Module name (typically __name__) + + Returns: + Logger instance + """ + return logging.getLogger(f"fusionaihub.datasets.prepare.{name}") \ No newline at end of file diff --git a/src/fusionaihub/datasets/prepare/prepare.py b/src/fusionaihub/datasets/prepare/prepare.py deleted file mode 100644 index aa1e9f3..0000000 --- a/src/fusionaihub/datasets/prepare/prepare.py +++ /dev/null @@ -1,286 +0,0 @@ -import re -import numpy as np -import pandas as pd -import polars as pl -import h5py -from pathlib import Path -from scipy.interpolate import interp1d -from scipy.signal import resample, resample_poly -from sklearn.model_selection import train_test_split -from datetime import time, timedelta -from ..utils.parmap import ParallelMapper -import logging -from tqdm.auto import tqdm -import pickle -import torch -from concurrent.futures import ProcessPoolExecutor - - -log = logging.getLogger(__name__) - -sample_cfg = { - "signal": [ - ("magnetics_high_resolution", "mhr"), - ("ece_cali", "ece"), - ("bes", "bes"), - ("co2_density", "co2"), - ], - "randomize_shots": True, - "random_seed": 42, - "num_shots": 50, - "fs_khz": 500, - "start_ms": 0, - "end_ms": 5000, - "window_ms": 250, - "hop_ms": 50, - "remove_empty": True, - "train_test_split": 0.2, - "raw_data_dir": "/scratch/gpfs/EKOLEMEN/d3d_fusion_data", - "output_dir": "/scratch/gpfs/nc1514/specseg/data/foundation_v1", -} - - -def resample_nearest(y: np.ndarray, new_len: int) -> np.ndarray: - orig_len = len(y) - gcd = np.gcd(orig_len, new_len) - up = new_len // gcd - down = orig_len // gcd - return resample_poly(y, up, down) - # return resample(y, new_len) - # return interp1d(np.linspace(0, 1, len(y)), y, kind='cubic')(np.linspace(0, 1, new_len)) - - -def extract( - shot: int, - directory: Path, - signal: str, -) -> pd.DataFrame: - - path = (directory / str(shot)).with_suffix(".h5") - df = pd.read_hdf(path, key=signal) - - return pd.DataFrame(df) - - -def align( - df: pd.DataFrame, - start_time: float, - end_time: float, - fs: float, -) -> pd.DataFrame: - - # get sampling frequency - fs_raw = len(df) / (df.index[-1] - df.index[0]) - - # crop time - df = df.loc[(df.index >= start_time) & (df.index <= end_time)] - - # resample - num = len(df) - num = int(num * fs / fs_raw) - - df = pd.DataFrame( - {col: resample(df[col].values, num) for col in df.columns}, - index=np.linspace(df.index[0], df.index[-1], num) - ) - - # mark on-off states - start_nan = (df.index[0] - start_time) * fs - end_nan = (end_time - df.index[-1]) * fs - start_pad = pd.DataFrame( - 0, index=pd.RangeIndex(start=int(start_nan)), columns=df.columns) - end_pad = pd.DataFrame( - 0, index=pd.RangeIndex(start=int(len(df) + start_nan), stop=int(len(df) + start_nan + end_nan)), columns=df.columns) - - df_state = pd.DataFrame(True, index=df.index, columns=df.columns) - start_pad_state = pd.DataFrame(False, index=start_pad.index, columns=df.columns) - end_pad_state = pd.DataFrame(False, index=end_pad.index, columns=df.columns) - - df = pd.concat([start_pad, df, end_pad], ignore_index=True) - df_state = pd.concat([start_pad_state, df_state, end_pad_state], ignore_index=True) - df_state.columns = [f"{col}_state" for col in df.columns] - - # combine data with state - df = df.astype(np.float32) - df_state = df_state.astype(np.bool) - df = pd.concat([df, df_state], axis=1) - - # convert time to ms - df = df.rename_axis("time") - df.index = pd.to_timedelta(df.index, unit='ms') - - return df - - -def split( - df: pd.DataFrame, - window_ms: int, - hop_ms: int, - fs_khz: float, -) -> list[pd.DataFrame]: - - # Create sample indicies - num_samples = int((window_ms) * fs_khz) - hop_samples = int((hop_ms) * fs_khz) - - # Separate samples - samples = [] - for start in range( - 0, len(df) - num_samples + 1, hop_samples - ): - end = start + num_samples - sample = df.iloc[start:end] - if len(sample) == num_samples: - samples.append(sample) - - return samples - -def transform_individual_sample( - x: np.ndarray, - ) -> np.ndarray: - x = torch.from_numpy(x).float() - transformed = torch.stft( - x, - n_fft=1024, - hop_length=256, - window=torch.hann_window(1024), - return_complex=True - ) - transformed = torch.log(torch.abs(transformed).clamp(min=1e-10)) - transformed = torch.clip(transformed, min=-10, max=5).numpy() - return transformed - -def save_samples( - samples: list[pd.DataFrame], - directory: Path, - shot: int -) -> None: - directory.mkdir(parents=True, exist_ok=True) - for i, sample in enumerate(samples): - - # Remove columns ending with '_state' - sample_to_save = sample.loc[:, ~sample.columns.str.endswith('_state')] - - # Only save if not fully off (i.e., at least one True in any state col) - state_cols = [col for col in sample.columns if col.endswith('_state')] - if np.any(sample[state_cols].to_numpy()): - sample_array = sample_to_save.to_numpy().T - sample_array = sample_array.astype(np.float32) - sample_array = transform_individual_sample(sample_array) - with open(directory / f"{shot}_{i}.pkl", 'wb') as f: - pickle.dump(sample_array, f, protocol=pickle.HIGHEST_PROTOCOL) - - -def process_shot( - shot: int, - cfg: dict, - out_dir: Path, -) -> None: - - dfs = [] - for signal in cfg["signal"]: - signal_name, signal_abbr = signal - - try: - df = extract(shot=shot, directory=Path(cfg["raw_data_dir"]), signal=signal_name) - except FileNotFoundError: - print(f"Missing {shot} -- {signal_name}") - return - - try: - df.columns = [f"{signal_abbr}{col}" if col != "time" else col for col in df.columns] - except Exception as e: - print(f"Error renaming columns for shot {shot} and signal {signal_name}: {e}") - return - - try: - df = align(df, cfg["start_ms"], cfg["end_ms"], cfg["fs_khz"]) - except ValueError: - print(f"Error aligning data for shot {shot} and signal {signal_name}.") - return - - dfs.append(df) - - df = pd.concat(dfs, axis=1) - - # Split into windows - samples = split(df, cfg["window_ms"], cfg["hop_ms"], cfg["fs_khz"]) - print(f"Shot {shot} has {len(samples)} samples after splitting.") - - # Save to cache (only non-fully-off windows) - save_samples(samples, out_dir, shot) - print(f"Processed shot {shot} successfully.") - - return - - -def index_dataset(out_dir: Path) -> None: - - files = list(out_dir.glob("*.pkl")) - df_files = pd.DataFrame({'files': [str(file) for file in files]}) - df_files.to_pickle(out_dir / "index.pkl") - - print(f"Indexed {len(files)} files.") - - -def prepare_dataset(cfg: dict) -> None: - - cfg["num_samples"] = int((cfg["end_ms"] - cfg["start_ms"]) * cfg["fs_khz"]) - raw_data_dir = Path(cfg["raw_data_dir"]) - cache_dir = Path(cfg["output_dir"]) / "cache" - cache_dir.mkdir(parents=True, exist_ok=True) - - # Collect and sort all shot numbers - print(f"Collecting shots from {raw_data_dir}...") - all_shots = [ - int(p.stem) - for p in raw_data_dir.iterdir() - if p.suffix == ".h5"] - all_shots.sort() - - # if cfg["randomize_shots"]: - # np.random.seed(cfg["random_seed"]) - # all_shots = np.random.permutation(all_shots) - # all_shots = all_shots[:cfg["num_shots"]] - - # print(f"Processing {len(all_shots)} shots into cache...") - - mapper = ParallelMapper() - mapper(process_shot, [170000], cfg=cfg, out_dir=cache_dir) - - # for shot in tqdm(all_shots): # for debugging - # process_shot(shot, cfg, out_dir=cache_dir) - # break - - # Move cached files into train/test split - print("Splitting dataset into train and valid sets...") - all_files = list(cache_dir.glob("*.pkl")) - all_files.sort() - train_files, valid_files = train_test_split( - all_files, - test_size=cfg.get("train_test_split", 0.2), - random_state=cfg["random_seed"]) - - train_dir = Path(cfg["output_dir"]) / "train" - valid_dir = Path(cfg["output_dir"]) / "valid" - train_dir.mkdir(parents=True, exist_ok=True) - valid_dir.mkdir(parents=True, exist_ok=True) - - for f in train_files: - f.rename(train_dir / f.name) - for f in valid_files: - f.rename(valid_dir / f.name) - - # Index the datasets - index_dataset(train_dir) - index_dataset(valid_dir) - - # Remove cache directory after splitting - for f in cache_dir.glob("*"): f.unlink() - cache_dir.rmdir() - - print("Dataset preparation complete.") - -if __name__ == "__main__": - cfg = sample_cfg.copy() - prepare_dataset(cfg=cfg) \ No newline at end of file diff --git a/src/fusionaihub/datasets/prepare/prepare2.py b/src/fusionaihub/datasets/prepare/prepare2.py deleted file mode 100644 index 67a8186..0000000 --- a/src/fusionaihub/datasets/prepare/prepare2.py +++ /dev/null @@ -1,443 +0,0 @@ -import re -import numpy as np -import pandas as pd -from pathlib import Path -from scipy.signal import resample, resample_poly -from sklearn.model_selection import train_test_split -from ...util.parmap import ParallelMapper -import logging -import joblib -import torch -from concurrent.futures import ProcessPoolExecutor -from typing import Optional - - -log = logging.getLogger(__name__) - -sample_cfg = { - "signal": [ # start with signals to be transformed. this is hacked on - ("magnetics_high_resolution", "mhr", True), - ("ece_cali", "ece", True), - ("co2_density", "co2", True), - ("gas", "gas", False), - ("ech", "ech", False), - ("p_inj", "pin", False), - ("t_inj", "tin", False), - ], - "randomize_shots": True, - "random_seed": 42, - "num_shots": 50, - "fs_khz": 500, - "ip_threshold": 1e-1, - "window_ms": 250, - "hop_ms": 50, - "remove_empty": True, - "train_test_split": 0.2, - "raw_data_dir": "/scratch/gpfs/EKOLEMEN/d3d_fusion_data", - "output_dir": "/scratch/gpfs/nc1514/FusionAIHub/data/foundation_v2", -} - - -def resample_nearest(y: np.ndarray, new_len: int) -> np.ndarray: - orig_len = len(y) - gcd = np.gcd(orig_len, new_len) - up = new_len // gcd - down = orig_len // gcd - # return resample_poly(y, up, down) - resampled = resample(y, new_len) - return np.asarray(resampled) - # return interp1d(np.linspace(0, 1, len(y)), y, kind='cubic')(np.linspace(0, 1, new_len)) - - -def extract( - shot: int, - directory: Path, - signal: str, -) -> pd.DataFrame: - - path = (directory / str(shot)).with_suffix(".h5") - df = pd.read_hdf(path, key=signal) - - return pd.DataFrame(df) - -def running_time( - directory: Path, - shot: int, - ip_threshold: float, -) -> tuple[float, float]: - - path = (directory / str(shot)).with_suffix(".h5") - with pd.HDFStore(path, 'r') as store: - df = store['ip']['ipsip'] - df = df.loc[df > ip_threshold] - start_time = df.index[0] - end_time = df.index[-1] - return start_time, end_time - -def align( - df: pd.DataFrame, - start_time: float, - end_time: float, - fs: float, -) -> pd.DataFrame: - - # get sampling frequency - fs_raw = len(df) / (df.index[-1] - df.index[0]) - - # crop time - df = df.loc[(df.index >= start_time) & (df.index <= end_time)] - - # resample - num = len(df) - num = int(num * fs / fs_raw) - - df = pd.DataFrame( - {col: resample(df[col].values, num) for col in df.columns}, - index=np.linspace(df.index[0], df.index[-1], num) - ) - - # mark on-off states - start_nan = (df.index[0] - start_time) * fs - end_nan = (end_time - df.index[-1]) * fs - start_pad = pd.DataFrame( - 0, index=pd.RangeIndex(start=int(start_nan)), columns=df.columns) - end_pad = pd.DataFrame( - 0, index=pd.RangeIndex(start=int(len(df) + start_nan), stop=int(len(df) + start_nan + end_nan)), columns=df.columns) - - df_state = pd.DataFrame(True, index=df.index, columns=df.columns) - start_pad_state = pd.DataFrame(False, index=start_pad.index, columns=df.columns) - end_pad_state = pd.DataFrame(False, index=end_pad.index, columns=df.columns) - - df = pd.concat([start_pad, df, end_pad], ignore_index=True) - df_state = pd.concat([start_pad_state, df_state, end_pad_state], ignore_index=True) - df_state.columns = [f"{col}_state" for col in df.columns] - - # combine data with state - df = df.astype(np.float32) - df_state = df_state.astype(np.bool) - df = pd.concat([df, df_state], axis=1) - - # convert time to ms - df = df.rename_axis("time") - - return df - - -def split( - df: pd.DataFrame, - window_ms: int, - hop_ms: int, - fs_khz: float, -) -> list[pd.DataFrame]: - - # Create sample indicies - num_samples = int((window_ms) * fs_khz) - hop_samples = int((hop_ms) * fs_khz) - - # Separate samples - samples = [] - for start in range( - 0, len(df) - num_samples + 1, hop_samples - ): - end = start + num_samples - sample = df.iloc[start:end] - if len(sample) == num_samples: - samples.append(sample) - - return samples - -def transform_individual_sample( - x: np.ndarray, - ) -> np.ndarray: - x_tensor = torch.from_numpy(x).float() - y = torch.stft( - x_tensor, - n_fft=1024, - hop_length=256, - window=torch.hann_window(1024), - return_complex=True - ) - y = torch.log(torch.abs(y)) - # y = torch.clip(y, min=-10, max=5) - return y.numpy() - - -def create_missing_signal_dataframes( - cfg: dict, - processed_signals: set, - reference_df: pd.DataFrame -) -> list[pd.DataFrame]: - """Create fully off dataframes for missing signals using reference dataframe structure.""" - - missing_dfs = [] - - for signal in cfg["signal"]: - signal_name, signal_abbr, do_transform = signal - if signal_abbr not in processed_signals: - print(f"Creating fully off dataframe for missing signal {signal_name}") - - # Create off dataframe by copying structure and zeroing values - off_df = reference_df.copy() - - # Get columns that belong to the reference signal (to replace with new signal columns) - ref_signal_cols = [col for col in off_df.columns if not col.endswith('_state')] - - # Create new column names for the missing signal - new_cols = {} - new_state_cols = {} - - for i, col in enumerate(ref_signal_cols): - new_col_name = f"{signal_abbr}col{i}" - new_cols[col] = new_col_name - new_state_cols[f"{col}_state"] = f"{new_col_name}_state" - - # Rename columns to match the missing signal - off_df = off_df.rename(columns={**new_cols, **new_state_cols}) - - # Set all data columns to 0 and all state columns to False - for col in off_df.columns: - if col.endswith('_state'): - off_df[col] = False - else: - off_df[col] = 0.0 - - missing_dfs.append(off_df) - - return missing_dfs - - -def transform_samples( - samples: list[pd.DataFrame], - directory: Path, - signal_config: list[tuple], - shot: int, -) -> list[dict]: - directory.mkdir(parents=True, exist_ok=True) - print(f"Processing {len(samples)} samples for shot {shot}") - samples_dict = [] - - # Create mapping from signal abbreviation to whether it should be transformed - transform_map = {} - for signal_name, signal_abbr, should_transform in signal_config: - transform_map[signal_abbr] = should_transform - - for i, sample in enumerate(samples): - - # Remove columns ending with '_state' - sample_to_save = sample.loc[:, ~sample.columns.str.endswith('_state')] - - # Only save if not fully off (i.e., at least one True in any state col) - state_cols = [col for col in sample.columns if col.endswith('_state')] - if np.any(sample[state_cols].to_numpy()): - - # First pass: apply transformations and collect results - sample_dict = {} - transformed_sample = None - original_time_length = len(sample_to_save) - - for col in sample_to_save.columns: - # Convert each column to float32 numpy array - col_array = sample_to_save[col].values.astype(np.float32) - - # Determine if this column should be transformed based on signal abbreviation - should_transform = False - for signal_abbr in transform_map.keys(): - if col.startswith(signal_abbr): - should_transform = transform_map[signal_abbr] - break - - if should_transform: - transformed_array = transform_individual_sample(col_array) - sample_dict[col] = transformed_array - # Store an example transformed sample to get target dimensions - if transformed_sample is None: - transformed_sample = transformed_array - print(f"Reference transformed sample shape: {transformed_array.shape}") - else: - # Store original array for now, will resample later - sample_dict[col] = col_array - - # Second pass: resample non-transformed samples to match transformed dimensions - if transformed_sample is not None: - target_width = transformed_sample.shape[-1] # Last dimension is time - # Calculate target sample frequency based on transformed sample - target_fs = target_width / original_time_length - print(f"Target frequency ratio: {target_fs:.4f} (target width: {target_width}, original length: {original_time_length})") - - for col in sample_dict.keys(): - # Check if this column was transformed - should_transform = False - for signal_abbr in transform_map.keys(): - if col.startswith(signal_abbr): - should_transform = transform_map[signal_abbr] - break - - if not should_transform: - # Resample non-transformed data to match target width - original_array = sample_dict[col] - resampled_array = resample_nearest(original_array, target_width) - - # Crop end if needed to ensure exact match - if len(resampled_array) > target_width: - resampled_array = resampled_array[:target_width] - elif len(resampled_array) < target_width: - # Pad with zeros if too short (shouldn't happen with resample_nearest) - pad_width = target_width - len(resampled_array) - resampled_array = np.pad(resampled_array, (0, pad_width), mode='constant') - - sample_dict[col] = resampled_array.astype(np.float32) - print(f"Resampled {col} from {len(original_array)} to {len(resampled_array)}") - - samples_dict.append(sample_dict) - print(f"Sample {i} processed with {len(sample_dict)} signals") - - return samples_dict - -def save_samples( - samples: list[dict], - directory: Path, - shot: int -) -> None: - directory.mkdir(parents=True, exist_ok=True) - print(f"Saving {len(samples)} samples to {directory}") - for i, sample in enumerate(samples): - # Save using joblib - joblib.dump(sample, directory / f"{shot}_{i}.pkl", compress=True) - -def process_shot( - shot: int, - cfg: dict, - out_dir: Path, -) -> None: - - dfs = [] - start_time = None - end_time = None - - try: - start_time, end_time = running_time( - directory=Path(cfg["raw_data_dir"]), - shot=shot, - ip_threshold=cfg["ip_threshold"] - ) - reference_len = int((end_time - start_time) * cfg["fs_khz"]) - print(f"Running time for shot {shot}: {start_time} to {end_time}") - except Exception as e: - print(f"Error: Could not determine running time for shot {shot}: {e}") - return - - # Process each signal and track which ones succeeded - processed_signals = set() - - for signal in cfg["signal"]: - signal_name, signal_abbr, is_transformed = signal - df = None - - try: - # Try to extract and process the signal - df = extract(shot=shot, directory=Path(cfg["raw_data_dir"]), signal=signal_name) - df.columns = [f"{signal_abbr}{col}" if col != "time" else col for col in df.columns] - df = align(df, start_time, end_time, cfg["fs_khz"]) - processed_signals.add(signal_abbr) - dfs.append(df) - print(f"Successfully processed signal {signal_name} for shot {shot}") - - except Exception as e: - print(f"Error processing signal {signal_name} for shot {shot}: {e}") - - if not dfs: - print(f"Error: No dataframes created for shot {shot}") - return - - # For missing signals, create "fully off" dataframes using the structure of the last dataframe - if len(processed_signals) < len(cfg["signal"]): - reference_df = dfs[-1] # Use the last successfully processed dataframe as reference - missing_dfs = create_missing_signal_dataframes(cfg, processed_signals, reference_df) - dfs.extend(missing_dfs) - - df = pd.concat(dfs, axis=1, join='inner') - - num_samples = len(df) - new_index = np.linspace(start_time, end_time, num_samples) - df.index = new_index - df.index = pd.to_timedelta(df.index, unit='ms') - - samples = [df] # no splitting for this dataset - print(f"Shot {shot} has {len(samples)} samples after splitting.") - samples_dict = transform_samples(samples, out_dir, cfg["signal"], shot) - - save_samples(samples_dict, out_dir, shot) - print(f"Processed shot {shot} successfully with {len(cfg['signal'])} signals.") - - return - - -def index_dataset(out_dir: Path) -> None: - - files = list(out_dir.glob("*.pkl")) - df_files = pd.DataFrame({'files': [str(file) for file in files]}) - df_files.to_pickle(out_dir / "index.pkl") - - print(f"Indexed {len(files)} files.") - - -def prepare_dataset(cfg: dict) -> None: - - raw_data_dir = Path(cfg["raw_data_dir"]) - cache_dir = Path(cfg["output_dir"]) / "cache" - cache_dir.mkdir(parents=True, exist_ok=True) - - # Collect and sort all shot numbers - print(f"Collecting shots from {raw_data_dir}...") - all_shots = [ - int(p.stem) - for p in raw_data_dir.iterdir() - if p.suffix == ".h5"] - all_shots.sort() - - # if cfg["randomize_shots"]: - # np.random.seed(cfg["random_seed"]) - # all_shots = np.random.permutation(all_shots) - # all_shots = all_shots[:cfg["num_shots"]] - - # print(f"Processing {len(all_shots)} shots into cache...") - - mapper = ParallelMapper() - mapper(process_shot, [170000], cfg=cfg, out_dir=cache_dir) - - # for shot in tqdm(all_shots): # for debugging - # process_shot(shot, cfg, out_dir=cache_dir) - # break - - # Move cached files into train/test split - print("Splitting dataset into train and valid sets...") - all_files = list(cache_dir.glob("*.pkl")) - all_files.sort() - train_files, valid_files = train_test_split( - all_files, - test_size=cfg.get("train_test_split", 0.2), - random_state=cfg["random_seed"]) - - train_dir = Path(cfg["output_dir"]) / "train" - valid_dir = Path(cfg["output_dir"]) / "valid" - train_dir.mkdir(parents=True, exist_ok=True) - valid_dir.mkdir(parents=True, exist_ok=True) - - for f in train_files: - f.rename(train_dir / f.name) - for f in valid_files: - f.rename(valid_dir / f.name) - - # Index the datasets - index_dataset(train_dir) - index_dataset(valid_dir) - - # Remove cache directory after splitting - for f in cache_dir.glob("*"): f.unlink() - cache_dir.rmdir() - - print("Dataset preparation complete.") - -if __name__ == "__main__": - cfg = sample_cfg.copy() - prepare_dataset(cfg=cfg) \ No newline at end of file diff --git a/src/fusionaihub/datasets/prepare/prepare_dataset.py b/src/fusionaihub/datasets/prepare/prepare_dataset.py index 152b0fd..4f623b9 100644 --- a/src/fusionaihub/datasets/prepare/prepare_dataset.py +++ b/src/fusionaihub/datasets/prepare/prepare_dataset.py @@ -8,12 +8,17 @@ import yaml import numpy as np +import logging from pathlib import Path from sklearn.model_selection import train_test_split from typing import Optional from ...util.parmap import ParallelMapper -from .core import process_shot_stft, index_dataset +from .shot_processing import process_shot_stft +from .dataset_utils import index_dataset + +# Set up logger for this module +logger = logging.getLogger(__name__) def load_config(config_path: Optional[str] = None) -> dict: @@ -36,6 +41,22 @@ def load_config(config_path: Optional[str] = None) -> dict: return cfg +def should_use_stft_processing(cfg: dict) -> bool: + """ + Determine whether to use STFT processing based on configuration. + + Args: + cfg: Configuration dictionary + + Returns: + True if any signals should be transformed with STFT, False otherwise + """ + for signal in cfg["signal"]: + if signal.get("make_stft", False): + return True + return False + + def prepare_dataset(cfg: dict) -> None: """ Prepare the complete fusion dataset using the modular pipeline. @@ -53,8 +74,17 @@ def prepare_dataset(cfg: dict) -> None: cache_dir = Path(cfg["output_dir"]) / "cache" cache_dir.mkdir(parents=True, exist_ok=True) + logger.info(f"Target sampling frequency: {cfg['fs_khz']} kHz") + logger.info("Signals configured:") + for signal in cfg["signal"]: + signal_name = signal["name"] + signal_abbr = signal["abbr"] + should_transform = signal.get("make_stft", False) + logger.info(f" - {signal_name} ({signal_abbr}): transform={should_transform}") + logger.info("=" * 40) + # Collect and sort all shot numbers - print(f"Collecting shots from {raw_data_dir}...") + logger.info(f"Collecting shots from {raw_data_dir}...") all_shots = [ int(p.stem) for p in raw_data_dir.iterdir() @@ -70,35 +100,32 @@ def prepare_dataset(cfg: dict) -> None: if cfg.get("num_shots") is not None: all_shots = all_shots[:cfg["num_shots"]] - print(f"Processing {len(all_shots)} shots into cache...") + logger.info(f"Processing {len(all_shots)} shots into cache...") # Clean up existing cache directory if it exists - if cache_dir.exists(): - import shutil - print(f"Removing existing cache directory: {cache_dir}") - shutil.rmtree(cache_dir) - cache_dir.mkdir(parents=True, exist_ok=True) - # Process shots using parallel mapping - # For debugging, process single shot - # process_shot_stft(170000, cfg, cache_dir) - mapper = ParallelMapper() - mapper(process_shot_stft, all_shots[:10], cfg=cfg, out_dir=cache_dir) - - # For production, uncomment this line and comment the above + # if cache_dir.exists(): + # import shutil + # logger.info(f"Removing existing cache directory: {cache_dir}") + # shutil.rmtree(cache_dir) + # cache_dir.mkdir(parents=True, exist_ok=True) + + # Process shots using the appropriate function + # process_shot_stft(170000, cfg, cache_dir) # For debugging + # mapper = ParallelMapper() # mapper(process_shot_stft, all_shots, cfg=cfg, out_dir=cache_dir) # Move cached files into train/test split - print("Splitting dataset into train and valid sets...") - all_files = list(cache_dir.glob("*.pkl")) + logger.info("Splitting dataset into train and valid sets...") + all_files = list(cache_dir.glob("*.joblib")) all_files.sort() if len(all_files) == 0: - print("Warning: No processed files found. Dataset preparation incomplete.") + logger.warning("Warning: No processed files found. Dataset preparation incomplete.") return # Handle edge case where there are too few files for train-test split if len(all_files) == 1: - print("Warning: Only 1 file found. Placing in train directory.") + logger.warning("Warning: Only 1 file found. Placing in train directory.") train_files = all_files valid_files = [] else: @@ -129,9 +156,9 @@ def prepare_dataset(cfg: dict) -> None: f.unlink() cache_dir.rmdir() - print("Dataset preparation complete.") - print(f"Training samples: {len(train_files)}") - print(f"Validation samples: {len(valid_files)}") + logger.info("Dataset preparation complete.") + logger.info(f"Training samples: {len(train_files)}") + logger.info(f"Validation samples: {len(valid_files)}") def main(): @@ -145,9 +172,22 @@ def main(): default=None, help="Path to configuration YAML file (default: config/default.yaml)" ) + parser.add_argument( + "--log-level", + type=str, + default="INFO", + choices=["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"], + help="Set logging level (default: INFO)" + ) args = parser.parse_args() + # Set up logging + logging.basicConfig( + level=getattr(logging, args.log_level.upper()), + format="%(asctime)s - %(name)s - %(levelname)s - %(message)s" + ) + # Load configuration cfg = load_config(args.config) diff --git a/src/fusionaihub/datasets/prepare/sample_processing.py b/src/fusionaihub/datasets/prepare/sample_processing.py new file mode 100644 index 0000000..d3e9fb0 --- /dev/null +++ b/src/fusionaihub/datasets/prepare/sample_processing.py @@ -0,0 +1,95 @@ +""" +Sample processing utilities for fusion dataset preparation. + +This module contains functions for splitting signals into time windows, +applying transformations to samples, and saving processed data. +""" + +import numpy as np +import pandas as pd +import joblib +import logging +from pathlib import Path +from typing import Dict + +# Set up logger for this module +logger = logging.getLogger(__name__) + + +def split_samples( + df: pd.DataFrame, + shot_number: int, + window_ms: int | None = None, + hop_ms: int | None = None, + fs_khz: float | None = None, +) -> list[dict[str, pd.DataFrame]]: + """ + Split signal data into overlapping time windows. + + Args: + df: Input DataFrame with signal data + window_ms: Window size in milliseconds + hop_ms: Hop size in milliseconds + fs_khz: Sampling frequency in kHz + + Returns: + List of DataFrame samples + """ + + if window_ms is None or hop_ms is None or fs_khz is None: + return [{f"{shot_number}_0": df}] + + else: + # Create sample indicies + num_samples = int((window_ms) * fs_khz) + hop_samples = int((hop_ms) * fs_khz) + + # Separate samples + samples = [] + for start_index in range(0, len(df) - num_samples + 1, hop_samples): + end_index = start_index + num_samples + sample = df.iloc[start_index:end_index] + if len(sample) == num_samples: + samples.append({ + f"{shot_number}_{start_index}": sample, + }) + + return samples + + +def remove_empty_samples( + samples: list[dict[str, pd.DataFrame]], +) -> list[dict[str, pd.DataFrame]]: + """ + Remove empty samples from a list of samples. + + Args: + samples: List of sample DataFrames + """ + samples = [ + { + key: value.drop(columns=[col for col in value.columns if col.endswith('_state')]) + for key, value in sample.items() + if np.any(value.loc[:, value.columns.str.endswith('_state')].to_numpy()) + } + for sample in samples + ] + + return samples + + +def save_sample( + sample: Dict, + directory: Path, + id_val: str, +) -> None: + """ + Save processed samples to disk using joblib compression. + + Args: + samples: List of sample dictionaries to save + directory: Output directory + shot: Shot number for filename generation + """ + logger.info(f"Saving sample to {directory / f'{id_val}.joblib'}") + joblib.dump(sample, directory / f"{id_val}.joblib") \ No newline at end of file diff --git a/src/fusionaihub/datasets/prepare/shot_processing.py b/src/fusionaihub/datasets/prepare/shot_processing.py new file mode 100644 index 0000000..448f812 --- /dev/null +++ b/src/fusionaihub/datasets/prepare/shot_processing.py @@ -0,0 +1,193 @@ +""" +Shot processing utilities for fusion dataset preparation. + +This module contains the main shot processing logic that orchestrates +data extraction, alignment, transformation, and saving for individual shots. +""" + +import numpy as np +import pandas as pd +import logging +from pathlib import Path +from typing import Dict + +from .data_extraction import ( + extract_signal, + extract_running_time, + align_signal, +) +from .sample_processing import ( + split_samples, + remove_empty_samples, + save_sample, +) +from .signal_processing import ( + identity_transform, + stft_transform, + resample_transform, +) + +# Set up logger for this module +logger = logging.getLogger(__name__) + + +def process_shot_stft( + shot_number: int, + cfg: Dict, + out_dir: Path, +) -> None: + """ + Process a single shot through the complete data preparation pipeline accounting for STFT transformations. + + This function orchestrates the complete processing workflow for a shot: + 1. Determines plasma running time + 2. Extracts and aligns all configured signals to be transformed + 3. Handles missing signals by creating placeholder dataframes + 4. Combines all signals into a unified dataframe + 5. Splits into samples + 6. Transforms and saves the processed samples using STFT transformations. + + Args: + shot: Shot number to process + cfg: Configuration dictionary + out_dir: Output directory for processed files + """ + + # Extract running time + try: + start_time, end_time = extract_running_time( + shot_number=shot_number, + directory=Path(cfg["raw_data_dir"]), + ip_threshold=cfg["ip_threshold"], + start_time=cfg["start_time"], + end_time=cfg["end_time"], + ) + logger.info(f"Running time for shot {shot_number}: {start_time} to {end_time}") + except Exception as e: + logger.error(f"Error: Could not determine running time for shot {shot_number}: {e}") + return + + # Extract all signals + try: + dfs = [] + missing_signals = [] + for signal in cfg["signal"]: + try: + df = extract_signal( + shot_number=shot_number, + directory=Path(cfg["raw_data_dir"]), + signal=signal['name'], + start_time=start_time, + end_time=end_time, + ) + df.columns = [ + f"{signal['abbr']}{col}" if col != "time" else col + for col in range(len(df.columns)) + ] + + # Add a log to validate our assumption about the config and the transform key: + logger.debug(f"Signal config for {signal['name']}: {signal}") + + # Add a column to the dataframe for this signal indicating if a transform is present. + # We'll use the signal's abbreviation to name the column, e.g., 'IP_transform' + df = align_signal( + df=df, + start_time=start_time, + end_time=end_time, + fs=cfg["fs_khz"], + ) + dfs.append(df) + except Exception as e: + missing_signals.append((signal['name'], signal['abbr'])) + except Exception as e: + logger.error(f"Error: Could not extract signals for shot {shot_number}: {e}") + raise e + + # Create main aligned dataframe (important since interpolated signals + # could have alignment off) + try: + df = pd.concat(dfs, axis=1, join='inner') + except Exception as e: + logger.error(f"Error: Could not concatenate dataframes for shot {shot_number}: {e}") + raise e + + # Add missing signals + try: + for signal_name, signal_abbr in missing_signals: + df[signal_abbr] = 0.0 + df[f"{signal_abbr}_state"] = False + except Exception as e: + logger.error(f"Error: Could not add missing signals for shot {shot_number}: {e}") + raise e + + # Split into samples + try: + samples = split_samples( + df=df, + shot_number=shot_number, + window_ms=cfg["window_ms"], + hop_ms=cfg["hop_ms"], + fs_khz=cfg["fs_khz"], + ) + except Exception as e: + logger.error(f"Error: Could not split samples for shot {shot_number}: {e}") + raise e + + # Remove empty samples + try: + samples = remove_empty_samples(samples) + except Exception as e: + logger.error(f"Error: Could not remove empty samples for shot {shot_number}: {e}") + raise e + + # If no transform function is provided, save the samples as is + try: + if not cfg["do_stft"]: + for sample in samples: + transformed_samples = {} + for key, value in sample.items(): + for signal in cfg["signal"]: + abbr = signal['abbr'] + cols = [col for col in value.columns if abbr in col] + transformed_samples[abbr] = identity_transform( + x=value[cols].to_numpy().T) + save_sample(transformed_samples, out_dir, key) + return + except Exception as e: + logger.error(f"Error: Could not save samples for shot {shot_number}: {e}") + raise e + + # Get the first transformed sample to determine STFT dimensions + try: + first_arr = list(samples[0].values())[0].iloc[:, 0].values + transform_shape = stft_transform(x=first_arr).shape + logger.info(f"Using {getattr(first_arr, 'name', 'unknown')} as reference for STFT dimensions: {transform_shape}") + except Exception as e: + logger.error(f"Error: Could not get first transformed sample for shot {shot_number}: {e}") + raise e + + # Transform and save samples + try: + for sample in samples: + transformed_samples = {} + for key, value in sample.items(): + for signal in cfg["signal"]: + abbr = signal['abbr'] + cols = [col for col in value.columns if abbr in col] + if signal["make_stft"]: + transformed_samples[abbr] = stft_transform( + x=value[cols].to_numpy().T, + n_fft=cfg["stft"]["n_fft"], + hop_length=cfg["stft"]["hop_length"], + ) + else: + transformed_samples[abbr] = resample_transform( + x=value[cols].to_numpy().T, + ref_shape=transform_shape, + ) + save_sample(transformed_samples, out_dir, key) + except Exception as e: + logger.error(f"Error: Could not transform samples for shot {shot_number}: {e}") + raise e + + return \ No newline at end of file diff --git a/src/fusionaihub/datasets/prepare/core/signal_processing.py b/src/fusionaihub/datasets/prepare/signal_processing.py similarity index 51% rename from src/fusionaihub/datasets/prepare/core/signal_processing.py rename to src/fusionaihub/datasets/prepare/signal_processing.py index eacb05a..2339962 100644 --- a/src/fusionaihub/datasets/prepare/core/signal_processing.py +++ b/src/fusionaihub/datasets/prepare/signal_processing.py @@ -8,9 +8,13 @@ import numpy as np import torch from scipy.signal import resample +import logging +# Set up logger for this module +logger = logging.getLogger(__name__) -def resample_nearest(y: np.ndarray, new_len: int) -> np.ndarray: + +def resample_fn(y: np.ndarray, new_len: int) -> np.ndarray: """ Resample a signal to a new length using scipy.signal.resample. @@ -30,7 +34,11 @@ def resample_nearest(y: np.ndarray, new_len: int) -> np.ndarray: return np.asarray(resampled) -def transform_individual_sample(x: np.ndarray) -> np.ndarray: +def stft_transform( + x: np.ndarray, + n_fft: int = 1024, + hop_length: int = 256, +) -> np.ndarray: """ Apply STFT transformation to an individual sample. @@ -43,14 +51,50 @@ def transform_individual_sample(x: np.ndarray) -> np.ndarray: Returns: Log-magnitude STFT representation """ + x = x.astype(np.float32) x_tensor = torch.from_numpy(x).float() y = torch.stft( x_tensor, - n_fft=1024, - hop_length=256, - window=torch.hann_window(1024), + n_fft=n_fft, + hop_length=hop_length, + window=torch.hann_window(n_fft), return_complex=True ) y = torch.log(torch.abs(y)) - # y = torch.clip(y, min=-10, max=5) - return y.numpy() \ No newline at end of file + return y.numpy() + + +def resample_transform( + x: np.ndarray, + ref_shape: tuple, +) -> np.ndarray: + """ + Resample a signal to match a reference shape. + + Args: + x: Input signal + ref_shape: Reference shape (tuple from STFT result) + + Returns: + Resampled signal to match reference time dimension + """ + x = x.astype(np.float32) + target_length = ref_shape[1] + y = [resample_fn(x_, target_length) for x_ in x] + y = np.expand_dims(y, axis=1) + return np.array(y) + + +def identity_transform(x: np.ndarray) -> np.ndarray: + """ + Identity transform. + + Args: + x: Input signal + + Returns: + Input signal + """ + y = x.astype(np.float32) + y = np.expand_dims(y, axis=1) + return y \ No newline at end of file From 2f2d04688a971bef6bf9c3fa575c9d7f9e99007d Mon Sep 17 00:00:00 2001 From: Nathaniel Chen Date: Thu, 10 Jul 2025 21:46:05 -0400 Subject: [PATCH 025/103] Update README.md to include instructions for activating the virtual environment and installing necessary packages. --- README.md | 12 +++++++- notebooks/data_preparation.ipynb | 48 ++------------------------------ 2 files changed, 14 insertions(+), 46 deletions(-) diff --git a/README.md b/README.md index 7a531b0..c0436b3 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,14 @@ # FusionAIHub -This will be the readme of the FusionAIHub. \ No newline at end of file +This will be the readme of the FusionAIHub. + +When you are in the root directory, you can run the following command to activate the virtual environmnent: +``` +module load anaconda3/2024.10 +python -m venv .venv +source .venv/bin/activate +pip install --upgrade pip +pip install uv +uv sync +``` \ No newline at end of file diff --git a/notebooks/data_preparation.ipynb b/notebooks/data_preparation.ipynb index 534d2fa..c795280 100644 --- a/notebooks/data_preparation.ipynb +++ b/notebooks/data_preparation.ipynb @@ -13,7 +13,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "id": "9b8f64ca", "metadata": {}, "outputs": [], @@ -24,7 +24,7 @@ "import yaml\n", "\n", "shot_number = 170000\n", - "yaml_path = \"/scratch/gpfs/nc1514/FusionAIHub/src/fusionaihub/datasets/prepare/config/default.yaml\"\n", + "yaml_path = \"../src/fusionaihub/datasets/prepare/config/default.yaml\"\n", "with open(yaml_path, 'r') as f:\n", " cfg = yaml.safe_load(f)\n", "\n", @@ -138,7 +138,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 80, "id": "de25ce4f", "metadata": {}, "outputs": [ @@ -232,48 +232,6 @@ " break\n", " break" ] - }, - { - "cell_type": "code", - "execution_count": 85, - "id": "c8797e68", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "float32\n" - ] - } - ], - "source": [ - "import joblib\n", - "test_load = joblib.load('/scratch/gpfs/EKOLEMEN/nc1514/foundation_v2/train/170000_0.pkl')\n", - "print(test_load['mhr'].dtype)" - ] - }, - { - "cell_type": "code", - "execution_count": 86, - "id": "883637b2", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAigAAAGdCAYAAAA44ojeAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs/V+otm9aF4x/jvO+1/Od/DNaojNJKrQRNqVIBvqFasNEkWknZ0vMItyKIUpJQhAR3TDaSOhlighRoUIS2lGkNKmBmBFiohAFqd5ijGlGCHT0B86z1n0dv43z+HyOz3GtZ2aex973zYXrgvU8a933dZ1/jv//zuOKzEw8X8/X8/V8PV/P1/P1fP0eutb/6QU8X8/X8/V8PV/P1/P1fJ2vZwPl+Xq+nq/n6/l6vp6v33PXs4HyfD1fz9fz9Xw9X8/X77nr2UB5vp6v5+v5er6er+fr99z1bKA8X8/X8/V8PV/P1/P1e+56NlCer+fr+Xq+nq/n6/n6PXc9GyjP1/P1fD1fz9fz9Xz9nrueDZTn6/l6vp6v5+v5er5+z13X/9ML+N1cx3HgYx/7GD7/8z8fEfF/ejnP1/P1fD1fz9fz9Xy9xpWZ+K3f+i186Zd+Kdb6zDGSJ2mgfOxjH8OXfdmX/Z9exvP1fD1fz9fz9Xw9X7+L69d+7dfwR/7IH/mM9zxJA+XzP//zAQB/9G98P66XdyAXkBcACUQCGYnjCsQRAFLfrYdArtz3rP0ZAkDafajPUd+FfWbGXl4BHHZfzQ3U5/VcLvu85suoz4/Td/Z73u3vcdtzRQJxvz/P2GuJlzXedc6fXLev+dgwWg/AcQHWDchLAkcAC8jF37PXDl9fAJEbbqvX2QCpz3Ov+7gStDlgGBl7fysRR+Gj1oawOdNg5/jwOQuWcczv4u5APizkAlYmLitxn7HpwccFELfal8ErL3vNcR9jrqiHLuvAw+1ia6j7E8AtgGsi7gPHtfceD/tzHAXLmutyOfBw6wXFLZDXjYtIIFYCD7Hhc9Q2VyIjBOs4ArgeyAzkJfeeXgGzSCCve68BYEXiuF+4XA/cMpCIvU4AcTmKJGPDlzC4JPIhemyDQdwCcXdgrcTD/QVxyeaFmxHV4mJi/3l3IB9ir2vtcTI3HAKJLLzFbe9vXRNH7TESg4bX/UK89YC8vyCLXjeOAVwP4AhkjRXXPcCmFdLjHnNdDxyk+YLBZR24PVwQb91w3BbWOhAPew95LbgXDOKSuL28IK4H8la0d0kcD0soiZVbxFwP3B5W4TPIahv6sXkjElhI3G4LKLgmAnFJrFoXkcy51jqAl6v20XIhbr2/zW/FhwXTJN0ar8Vty4ZE0ZvhfMug4o3LgeN+4Xq94eFYSMTGTwKBRKzEkdFy4JJDbuCF0VcW30Tj3ul63d0KBgeOl5cNs+LdPUfBA8Bx7EkiQ3I7V5HwAVzubjgQm1RvG0co2bDlce0PieO2tpw8hKiNo6P0ij9b8NWGrik+y9VwjqPWtTZ/rrsDeb82vIt3imWQC7j8TmC93J/ntXXB3iyQL2rGyH1fbP1xvLX5L7HnQobkZwawXnL9AO72WOThvG7awdrfxwHTuTXfXes24pVXBrA+BeT/71P4v/+vH5Qe/0zXkzRQmNZZb70D68U7NkOXIgeAOBK3u00YcSSOUn5xQyuSEkaboSEjZzNESkjsex4rfSGhEEEErRvms5hKNBewSiHHrb8bxgVMiVLAB4AXAC5AcLw7GyO3UbDhgxLo+37BZwFx2T+EQzzstWwDgYtooSVD6hYFo83wVJivMhLymtvOOYwJuYbW68BRPLKwlXopeCrZuMUWDIcx/7H3JOOwmEVzHADe2gYKDiCuiYXEyrX3a2sYNGX4irUFKV4uwSWOQGTRxeXAul0a96UwpCyvCbwILCq9SwkCwpfCKIB4ccOllCkFkfZ0KSMiKeABXDa9ogT35vpsw+EC4KHwvooGQNre8EDuveCOCv2G9amL4J01L25bgbVGBXA9EC/XnscEU2DPFW8d2yiMy4ZDfZlUGBRchMUtENcDx3UhIrdyz8DxEJvOV24Fn7bXSMThlj+aCe4C68UVx93aQl+OSCmHDKzaV1yPvbWHUgRI0cC6OwTjpLH44kAcG684AiuLB8kDhduI3PdgGyhH4TRuAF7sm9dRNF+0lverDfYarKAvfl/Yyo28uxXqNtjyYbXCSQArcbkeON4KXH7nsvnwUvR7xDZeMhqBvCibDoj3XO6tWzt5MrSjeADFGy8W1rphxdqwuy96vyTWJRG3tekbQL5oHMYBxCVxvKPou9YW2Mo1r+SLjacrDhxRfHVZm3/ujo3zh+J3bDrHsRVxlkLOS2LRKzkC68VNhhceqMFrcrTcW5GITy3kHzj2/2UYB/ZQUfKS9J6Xjc9NgnsteQvECxoJDfq4D+FoXQ7kdW1ZYbgJyrkViLsN/1XzujFw3BXNHUafL7bsl14qR2hRBwQQd9uJpb5bDwWiMngoP+OBOAsgi3suKWdZV26jhWtf181Pm65PtPeK60kXybqC38o/kasNEsB+DxTCoizfHofeO4qxKQCESB+DOuQB7flnGxkyTjg2IXwycuJWCsOUPGAytyzhc9RmGwttUHF/Y42w32lzrNP3vPRce5CPYEwj7UIjotaWp/Gy5wsSYRkagMlCGk++roX21rOMoegx87LvoeelPSY/t8+A9vpRwqgYqg3A4uzhxdg+zEOPI3YkCyjlCnk7KOONRmvepWhR0R8SBWF4s3FED7avB4/27EVorMO0YWB7jB4NvGG7HdlCRMqOcNL8WZEzwqbGWqn96zKjIu+y11awDoM9cTWEr7+TlEqPfMh1RcHhqMGMnghTyFiBhLeiYeRHrsXoDBkt7DmXbW9bGxvucZRpcDG4wujj2B6wgoMZWPelkAom2q322uPg4oBF4z8aniC+TO4oUmxblBJnJM1lD9BrCpTxUrx4joIeW2GRfhXVYPSn4MmIJ+fROAcUKRF8b9h8s2zMisKANOI8xzFKZmy62vQ5ZDEIr1oH5cfFYM/1XVqOMBJF3Ofaxjij6VlyEHa/y2XinzKf+oZjkn7jIUR3otVLbueS8qToTHLmIZqmC1eKbHN811MlS2j4Sv9cWxdQx5A+svTEwP3KdmyT9IKhE93R4b3URS3wUw67nFXymOGYQYLXvZ60gULrNa8FRAoshACtSMHRhAtsYSymJmNhW54HrUnCXkKOczYSWwnVLWSgAzJA3NgZzEYlhR5f35fidcXpc/NeEdQrjA9nMAAdIjTFfxBGDC1zrvpHIdyV9kXvjaG+YQC5oKLgcamJhp3DJcoIIMxGBInproogBEOTNQf3n9fNtCNMnbYfRiOo6Lkm80BIR9SR/J4ROv19qXkOVEi35+MYXK+2fkThJZthseG8HkKhdClYwuNoHEZ94fTjBgLhrX2g1sd1cjH6PloI8jmOz3v1fbRy4KPX3OmUa2rcftYEL3Fxl+Xt17gMYXNcGkkwQc51LQphE9xBeEbTDbCjSBe7lyBKVOTQolaCif3kfkLrOtDRANJcISXvUlHPjoZWxKMM6yjDU0ryvuUO6QkIRUK2AZClaLM9YimSgiPpgRtkypGR4WvjhmMydcSUgiKVpbQG3RM+bhCYt8Goz3qYfKn1OJ0e0YrNZYqMsf6s4dv7UpSy9u+OCBippBHrEeFyMjSeGatB2qFzVIY69UbQIbP0Nx6iaYN6h2M635B2HzbdJGk19njkbxpEes700zm1JQOQMoZGA40SM0yOuzYq9gd1b0U35RhR95DvXUfVc/FgMptw5/0mI45r30OdsmpdjyJ2n+V6IwPlB37gBxAR4+crv/Ir9f3v/M7v4P3vfz++6Iu+CJ/3eZ+H973vffjEJz4xxvjoRz+K9773vficz/kcfMmXfAm+53u+Bw8PD+epXu+KHXI8eznrUxhKUYizePQmhgQyZdUyBaB7+D8f43douUuvjekSGjFCnClRLfvAK40ewMY6GyWBaZXDiIWGxWme8z0JVJh236d5fG0ljGkEeG5VnkIJSjGrKwXOSS+RxG4Ezeu4g4wQKiEKs3DPy5mTCqq8n77fNLUxi0ewXKlKGTHfLaXOxUXvkxeVKVNBFIRUHLf9XPPgTlNwzkDdExXGX2l4Txx32XDjnm+bADvV2PUywl2FrMcezUhzQx1SRkXv53oSp6GwMRNN9HWfvL4z3Gls0hogrIXDnNEMRnFcdiUQMEXJoS45PXLU86sEPyBnJRkhSpTHnk1jEsCd9tBe6RWXJ0y+3ng6rRMYDg7n55r292gZFVCIm3UNgoM8zRD4xae11q1A0ZEOKl/C1hYi5WNR1qhIKW4uG1IKj/CmTBw1ZDeDEbDTjWbky7umocV9MB0ZKTqVJ7+ad4eiq/G1G4I4/Sd6LQf/TlOM0evm9xxj0dHpfY2MF42lS+J4UamLVQ9nzxW3AfLaf3aEiDhvME8ejZQRiUu2QxM2Fp8hjSi6Vf8/GDz5rEWg10PjH6CsinZKbU1n3UNe8YgKDQ6lxKkr7G/tz/ml+ML16Ge73jiC8if+xJ/A//yf/1M//+7f/Tt9913f9V346Z/+afzUT/0UPvjBD+JjH/sYvvVbv1Xf3243vPe978XLly/xoQ99CD/xEz+BH//xH8f3f//3v+kyAExgAmmW6QQoljOPa9L+VYIfpcD5uBkA/nt7SftvD5ONyEj9vm5lRdaaGW7TeBZZ6UXZPXw25/eIKUDJaGfDY/zuoUoTOFFhXn3nlwmPNGLX86+YbzNaF2UOpVaMpbHJWBQYPg6FO/dhCnmEQPks0y5B2LkAOkmTWrvqFbRfU2al5M/esXtI3Efjcn+fjNjcWBhXn1U4O4gPerumOH2/7jkN5fwKxU4cuRFMWiJ+hyLw/ynYajIKbfeaGLkESGdDqjdozSgJ9P6osPKUnqIQnwK/8aji5TTla14aLp9mjJPi3p+lRZCyayIsHSIwVd3XhPPJSqGHTnrg/VzrAvLFllE0yhPG86RV42OPHm0PdhZW0oOScVp1EvGw1+IpZSo01rDAcOg8ou2thkU8AOtlnOjfZMx4LgePdbg/tS3NC5jxlpvnGAG9ZEfRHlAR7ziNeZK13KfrhVfQYC/OYGS1coQZ7RDxrzkrUVGW40pcQelSOpRMAeG8nnOaGuhIDK0F1n9xf2lrJw6Kd5J0f0CHKCij6ThJZ4Xhl/tOg8MJL9p/mnw6dpahHRyjQV7ZkRTJj7o/3iAe8cZFstfrFe9+97sfff6bv/mb+NEf/VH8s3/2z/AN3/ANAIAf+7Efwx//438cv/iLv4iv//qvx8/93M/hV37lV/Cv//W/xrve9S58zdd8DX7oh34If/tv/238wA/8AF68ePGmyykiaoLPVWkLAFT+UCFoS2ICtxVtFUHyz1vR7UvgeAHlHYFmThajUrAcdxhELMLiCQwL1curIQEU08kK5TxUNsv+Xvas/URZyriS+LA9pVPkByfjQ8pHFnCIwQCUIk3thblON0qor5NFmCwEzVLCiMeGRsaMlBBsVa+gQl1gGjH1HdfKfWVsnERuGoh7g48J10eGW+x18yQHlcPeezM6hfrGQ3/fTJ9AnV5SwSNxrf2GQvjSmxeUt54d+Tg6OpN1kqfXXqdNHtC1IYkOYWMrlD12zrwvBS29XxeUFCKmoO1X0VzcA1hhkTEzVkowjhqbchi0jgyF1XniILO3obU8kO72CSNpoLPxEfYc0FEsF/5McSSUWlj+TCmZOBntYDqOivfepl+76FaS/DRW1vM7EhTtaV5TXmxeK4Vj6QpGShog2Eg5UgXi4TTKEy4HdnGmNkd4EKbZPFXV6UqZcF7jly0/q1BdqV5uMVuh1vjxgE3/GcA65IjRSOABhF002jyfiyOm1htHbLmNBC5dx4boyGum7b34gDI9KyWzaDi04AAihtwd0V7lwRuXjK7zkMGOXm2YxMq9DjNY/fAEx6Bs2oZSKpolWcniaKY7iYL7eCS/KKPk6DIq7rpkQcZ1ut7hwCg8HNtgCN5LMJ0j3qKHIaoLd9kOkRtRZjBqTI/Ivcb1xhGU//yf/zO+9Eu/FH/0j/5RfPu3fzs++tGPAgA+8pGP4P7+Ht/4jd+oe7/yK78SX/7lX44Pf/jDAIAPf/jD+Kqv+iq8613v0j3f/M3fjE9+8pP45V/+5U8756c+9Sl88pOfHD9AIecKuHujcBkBVEAVsJxZFN7cPwJyGh7RCv5RuN9DYWbVxrGZSIaD38c1EtkWDvNLnoEjmOFEEwq+Ho+2SCG4YiZRX3KORbmkyEoq/aBUGHqMV1ncB4uzGN4mblBK/ZIyEqOUsuSv54NvbTQqImZCTmH8CuUKxmM5UfiMLvYkPE/RLUUUUIL1zDykGRcONb+iKlT4N/N4a/x9r/1cSqmVlyjD149bWpoNVARrzj9okUWFLLhzL/4smJh6iBLcEqJpkZycXi7no8FlIeatbAkTtCfqj1NRkWcCRtQUbGmplV5HK31uyHk9Z8Fp2lgkrhP9uBEhoyZDNL+NpvpSBgAq/15/l0KhcenBFIXoqdRoa3iEkTrwmjNtEk3fDKFveca9YoT4VX/CGgXOSSNL3nPLxpFGMgXnMKQC43riID85UkNH1mng4wKraahood0/jJ8yLpBliFcKXjC26M4J7Xstax8/T2A4Q9uTbxygvlf0tPYi4ytqXbeQga9TVIZYp1+vOxG/sjiatW9hsE30nLH5f/I4cdYEIjkJmKNY8tFoiEZ/Olz5tzsOhts4yoHxqAqjIw7rnM+krxdFm4xq3mLW6NFIy9Z31Cf5BmGRNzJQvu7rvg4//uM/jn/5L/8l/uE//If4b//tv+HP/tk/i9/6rd/Cxz/+cbx48QJf+IVfOJ5517vehY9//OMAgI9//OPDOOH3/O7TXT/8wz+ML/iCL9BPN2krZuaJGgsXB9BE4qkUnpAwAtoIp9KAhBeFA4ARSlaok4rP0jhtDGWH0UhozBM6AReRPRq71s9tyhgr5Ov0kAmyro1AOwIXmKEBDexGD0POulJLljW+DZ1ob8iITwVlRAl599I55y6Os2lKKeXdMQwyGVunkCZD3jq2a56KhGeiPVBgj+91HVwz54ohF1yi1vPo+hQJKKiGRAVhvLdoQikexAzVU39zjQzFW05XAoGRB+4zDPbESxicSokl0wk01E2BhtHj/gASrjIc7xt28MeZ9uDeqJBsKBmXrCtRgSsUNVRaiIbLgkLax8Vo1YwE8YaHnsPwt6awxbWMKTOOgjii8q7vWW+hqIXDhQYxGn+tLGNGHslL5gDwVNCes7xVk0EyfEmXBeNjGM6150s+mlM0cR8z1Qt0pFRKpmDpdXvEB3Hi0WedvmMEqKJA9wYL4Ym/h/4LbD7RqS/KPRnzrYR18sWcuSyY0WDOizkFtz0YFbscDcL0fLqG0VwqdkVWep/rPjQftyVZmOgIyIEpL12+Ra2HeCnjhLSmyKjhSakh0RiVw/7Oo0e5+kQiqNvcWaVRtCAD6xFPoXRJwSqvlqoSbFrHiMbcGDobtaY0hk4oHSVYnGH3Wa43SvF8y7d8i37/6q/+anzd130dvuIrvgL//J//c/yBP/AH3mSoN7q+93u/F9/93d+tvz/5yU9uI4WKkPL0IXDcMcx31jQUAGghlAAlXBwA7vfvudBHuuoWpTbCPi9g02uRhWmCxsfYi7T7TMEDqOZymARR6x5Eg35eYztx1LOelooTobUigZTvUYqCXimZjp5sFiOOqANMrjOEzeI2S+FkhXbVr6aUvHLyJF5jjKFwgFaYVWci+RjAykDmFlRxye2FRxtIhBG9QT6HWwyYHVV8GMBOO/iJlgWlkBRmrzUKp25EeBpoQU2k5JWWoF0PVYxoCpCh0+DvNXYSmW4YlFLMKI+SAnahFUAZQunrhV1M6TD6Fg1f5tWpk4HC0TURL6fwpBERt2iyNGFG/IcpKjfIENCJByBO9UmpMaTQSa8upAn7rBTRgT3hyu0lM4RfBfJZxlPzdm7D9uhjxyjPHBfIqGSaNxXdKwBfUgDcnvDGVwT6hGCkUnTxEDikdGsdHlkrZYwb9n4upCHzDKT8CX+MNJufKgPQfTNu/dyGba37LpGeauWzGduIPaDIBJlL9WC3GHCikaigiNWEBUNMFbHt1FVKWYJGWdCoqBQn6S2h/iwk0ixG3X+mRZXYBwXit02jibwaR5jc5hhA0SllLWUBaf8hqiGj8b/V9EX1F+HJv+B41AG33AbSnRXKDoOgjRX19CJs2buklpomS1Akrd5blP2XVF2cO4d0fI9qEErnSWkuyuokL3aPLDda9Uw1eNs4wxtdb5zi8esLv/AL8cf+2B/Df/kv/wXvfve78fLlS/zGb/zGuOcTn/iEalbe/e53PzrVw79fVdfC66233sI73/nO8QNAgkbFXHmKprhSqnRKe8sVTizFQAtdXsJJaALoYiMdO/Px6v9iyHMkROkdEnURj/K0fh1kzP5OR5p9PT4nBU6aEDylcZyA8mSAsTJbTFwTyJsgYxVHC0b3aIueuDg/b0ZYW5PQdxRiUt4OU603B7V2VT2HbaOqO0CWwBjHyI+GPbqng0KwHJBwd4NDYSIaHoY4rpUeApVNrbvrCijYs1Nhy+ZePV8r6p4yzjlcoSQ6KgCUl277cE4PS/E5jEmnafdSYCU6rUZQWM65iwCj61y47sNqCIznOopgQvKAnfTYk7NhYHptFVrROXzcGMUD+tSVebVAqiFW+rPcNw3kh6g6B/Tgzq9VP9LHows3TB+XgTGispfczy2buGjeFawrAPInC8yDPVfIE+asyBB1WMh4aR4Z0QrSlAy4Vjwg3ztcSbslBxTpShoJ2XUpCRmrgv5d13slYkRGGLWKoxq8MT1Ag4KK+kA3PkyTkzAZUmsOTzsyzVPrKvC37Cr47JM4KR6UrkDzUgB9Qsjhc6AjtzSwzn1RtG6r10PJNaa9SFuebtXReYgvYEN6NFzlDGjd1elzmDyC0WDDejiOJRtcjmzDEMBBfPbn3oKDRtFM+b3e9b9loPz2b/82/ut//a/4w3/4D+Nrv/ZrcXd3h1/4hV/Q97/6q7+Kj370o3j77bcBAG+//TZ+6Zd+Cb/+67+ue37+538e73znO/Ge97znd7cIEgbQhBqNKOXOeC+V69HPPPIw0r6q3hweVuP/I33kJyawvzuu8zMAMnBILIyOyPAJdLMd2F6AUVfi8wzLl0zOx9P26ms5bM0FI/KghByJ0o4+e55RQqGsZwojdh8czdoYFmbon0LtcEVVa34woXFWxkLMWWhiXhlKcUQZDJ6P3/sOGXxZXhk9rJBQgvAb2MKaAlUwsqOAMkjurPcEw811xFheJ5UMlS73ISF32rOQilmkXEIsL1n1EjFSLBI6iqhRMLfhIFo4pb8AdGEmPcLCS0oTQtG1fX827fD4pJ+2AkaYV5EX9oGhUeMe+omf9xqMUdPgT/jdpTknvVbhlM+wlw3n9WOQZhBtebCV7fmINV8bofqEGnu5oajUY8qICxH9BqIa8zECZTTACIaMXXNidEJLNg+F3Y7UCMY0OmBpJqBlBlOrrO/gqTjKTY94lkJjBNpbNOCSKjzvE2mNR8oCOV3ArN8AjCdScymSTKeH+70B8XLt/2lAVFEua7R6r013LQ/bqD6nfjafsx8NVMeVhVNF8ji2r78ipzqGWzJy4y9abt/KYWZ6kDqK+0OqZcHe+6a3NjAaXozmd1SM/Nm6JGx8pe3gtNY4xjK9Q3gUDG88QEJ+vyNNNC0oxfPQ87/u9UYGyt/6W38LH/zgB/Hf//t/x4c+9CH8xb/4F3G5XPBt3/Zt+IIv+AJ853d+J777u78b/+bf/Bt85CMfwV/9q38Vb7/9Nr7+678eAPBN3/RNeM973oPv+I7vwH/6T/8J/+pf/St83/d9H97//vfjrbfeerOVAxKkSkUUkqS00US9/0AJExRhmXCo61DR7dR5YgoTSq74ZbGb1eiRBc+Jjm6QQ+nWZydmHykhE66yni891o6cxPA8ZATd7KigE3sARxFWe1n7/nVvDdEAY2LMyAhsPS4AuIdLK3Y3psKElTwDJ255kvWhcBkjxdaLmLCUEVP9DPT3rYdRis/vz8fjhcNiZdccAC3YlcIL7ZHMuwuDYxZ2hgnKCu5Q2CjffhbiVogooy+tCRiFisXVw2DuhpBOLnFem1/7p4IHYTA94hZcReNVMKlITa07LWrGwk4XZoogWDO5UbvD9ucmIPdzkCBUfcVqelZ0wg0UE7g6Yh5ZJyt6XKU0HTaeTuIYdXwyuR5fe/hPj7WNXRj8T8qfypo8byAP4t/XUh+NaIzLG6dpnkoqoypqb8OQZGTPC1/RslAK79pjahEVvYwHGlpWC0a5QQfAIwTuQHCjpLdVje9gciOJ57r9FkrBDMPV1sYmnSzo380+0+qdmv6Y2qRx12l3KxgnPghiMxYc7AJNRRuCD7o40Ik7Okz2HAeLbJ1wyhYMuWr3DEceJmPR943Gd67fyujRIzW+j+HZBUXE6/nD2t+7LHud641qUP7H//gf+LZv+zb8r//1v/DFX/zF+DN/5s/gF3/xF/HFX/zFAIAf+ZEfwVoL73vf+/CpT30K3/zN34x/8A/+gZ6/XC74mZ/5Gfy1v/bX8Pbbb+NzP/dz8Vf+yl/BD/7gD77JMvqi4jALMbOUYTQQdQTvAsBbbhOpx6496CKgbO+F90UzpSINfLZy6kIoLc5TmNstUE/JuJeeppgAtAImUaxJHMoRUoBZyJfRTGfmQ/ljmx8AGxcdgc5P00o3ReJWuCAZ6GZM2XBjqDQpDHhdICU7csMcjvlkErMrg9pfH1mt/bJYrGCS1AOxFQFe9p53DQC6BqIM0hFpK9jLGyROXIjRoGPO3PSYqv3teO2582WSLkQLu3Bw0NoVSNT8p7oTRbQoGGy/eUl5RUwHiG7c4HQjQcZN7YXCvuoJVHfj+WkKr4pUqEtpTHhtgySRl2ilF4DSbBUKz7ujnzFFGWa0yNCqRZMPXRHEy9jvYEHRPCOd2XN11AQq5Iz72O+HWdjP87h2rYHvZEEVu8p4qIiNIhwHF4uxsG5pDp1kO66536NU8PJizOE1Az0/DeQjEJcYsgEETfQzyE0X6oRbRuc2GAPpx1t9HKBlpzF+JLqj7w1qOhe2YaWFqfwpNF2GXLKOkxvtoY6hHwREkYKKe6NlKmytlzaC2kAL4EJFgBnNYarxIRCXjYc4IHmVtSie9JE8qbmT9UGkd0b47kxuXk6wJIxPfV72klI0GiWr5YySZ3hRWHE77lCY7pOMbbQ0HxC31EdnKxj9rNbA8RLjVS3I3SZB/cAOgxX15wXAS1vHa1xvZKD85E/+5Gf8/h3veAc+8IEP4AMf+MCnvecrvuIr8LM/+7NvMu1nuLKF7aUBxmLTXZhUUKWCTdjbUdFEdMsRQmT/ED8ZxEIk6cuwMWs5ImwrQpWnXYQX9nkrBSOqumhlK6QWp/md8HgPMAkUBosbuoCLa0DvMWFFrRxL7aMhL1gMx4KrkxcHwCJKlS83441eQHtSNWZGt0F3uLrQxWkcN1okSDk3ZCQAkEBbN1r10czDWhuul4ZHhXZZ/AuelDjQL+5LdN3L4WOiI2e8qliya3NyF2cfsA3DPClIcSIA3K+9T6Cb6lXvFRgdhtdBNFbAbhM7MnDsQtCwyBZI19mRBX6G5g29r8cNG1fExAv/sCiMG8Ua91pF1DQ2NF/OsaP4snDE1BttYJIdVj1igjsSyFu08RQY7dEzUkXSxLF6gHDPDs+iEQlh7oNTBvZLHGsBKqo+rBfKghVjp1IGKlYNVHHs3suu/Uzj2Z6X8IHhinwXGSqQfnTM/GZRNBriRbcZuV9MdwC5Wltu5WywogHw4ugImPMwIIODDgh7K8mpIe+6w0W88QQT6YkhBcqM+0Z+iB8BXG/dLTktAlqpL2Cn4XAN49nij0q18bPExudOmaF7lrgBQsPpIMz7KDYL3uUj1xZk0PPEUhUoqzjZ5V7ucckjUfOrCDUxeHVVWsXf2SbnnTU2Li/Je6bbOL2+qzFWLY4vUfVIfxwYfcEY5TruTG+9xvVGKZ7faxff+6B6gAvQRFxC3oo8he2m10JEn6qQoWFCMWAEYADXl3Z5uFGKl/OxUMiiEfrcjBCNFb1uD9kpgsPPsgmDzE6rWPPX+PLmz5Z9du2F9uZpBtBjq4WZF6R1uWGDVi58V0ec4LqLHnmEEPLGjrsTjAGrW7HxvXsh4Uc5VkpRTZpKyGWFlsWTpJO0omlXagO5UCH1RBK6YJEKgKikEOXvnt6zo6hakAmLluyt2GPAr7WlaMrW7K3ftxEF4WPUvnA/FC73IQEtT8n0g58OAxr3HI+KzcO83mNGp3DOISs3YikgYbcQr+QLQKeNeE/aj56nA82cPWHIVJSf4CHwWPxIOucpHvFYAYBpNQK+FBHRpiHLiB65fZzok0az0lox4BFA9VWxOhmvNzO6VFQqrT/OAwtSqxePaLFlJjtqZzHHSFOdx8as61LEjM9TDh0xDS6uRemRkIxjP5/g3ggrRmMvHdFomY6mZTeWGAHmO5BIB+zJVNg53krVlex73KoaIqZxyIvoo2Ehed17Ip5mh90Q7XQ0hZ836rW3I+S4KRLrtH42Thido86pukaP5rphLbxm/y594Se9CmeLqZxgEXhKbjEqq6GjDaUBk9e4nrSBorC7IeVgYSSFMfr7zqmxiG9jY30Kw5CIIjCOnTWXVzhz/umhoudGzyki8mfMcBhhWdsbazL4nTqH+jyc39NCnMd/P/q5XlwrC83Pz+wEUK6U0cAiQq3NGEU1LrceS0zlTcmGIdaKa0QPsscdikOCr4yfU6Mu/c/cOiMbUYIQ6ELKYiaGdtWM6yH6JIo3XyMT0vDytZlMk9FVxg5JlMequZZOg9hYCuV/GvqioPA9K8xq8rkUDOlLxZEM5VKwO8xqXhlI9BwvUAh/80KlQKnsKvqh+qHE7ikR6ILZ2E9vuETn9m80XI0OuCQqGE0MGfLk0XnCwIyuyG75fp0CvWmIsLPaE6MzHSlHPxtAFT0SRtkypk4dDb40o4bGkWiW6Zqsf7gWnRJ0opq0LmdmtWIHLWqHZ/RzlAPqRKoX2GWP5zzr9Uv1v6fahLfDZesGlPjJ5Y6v5wB08od8JSMmm+yr/ieIE6ODWLtTLBfX7RCyZcxhTdqiccdU9ZDLNKatuJ+nZXCjwR46ReX1NaLFOv3jNTeaj0avoVwvkDydBuJ+pfR5/40RKO5bJDF6mewP+juvD1Fq0GnLjLJl/XSOK3R6To4v4dXo1loiK0rCuhO7n/QwIkKf5XrSBgoSynnpBXiWE0RsAmLdhZiusK086LKK9XpW3nYphP0+Cijcpyv6P0Yg2jPeY7FYloS6BX7hTyHHtnZH8W0d5UwnVlNaHvGgYcGwtxslMra8sRhO32MT6i6u7H2QuLiJ4y5bMPpavCiYc3vEI9BeW9j+PSJh+5S1Tc+KQqAiMnvPrWxpAFFJPi5sro1SUR89pd/LNQ0vBq0UusYG4CkFva32oaMzwSkPINP6xxR8aEOcq+QfRS3yBCMqu+N0EgMY3jYqRA2jMTQIpqHItJopfOHAxyDM6xhov5Ct5iOdXeaa4yDStxSj0siS1PS65BXTAK3oGk+FYOU8XsoX7hXO1KzMDBEhGamiSL88uqrj2fxcE2H2vTFDToqaUbjyWFWoG6RT788UrXBLEapLaKC98U/nXABtePiRUxlDDRcdmyXuajA3lqloRQscByYvTIGSf50uzg3VWFw8Tohw+rvuUTL2Fim+YSREFyOdBwR4RQI98sQBDNRAvw5Ap8XQPLyjGa34+f+6h91rOCvcCLf8HhQzRUvF6wl0PxuXx4ysrcaj8AvfH7ruxeFF1NhJS/1QlqXJZkWtDBeEX62Hhk4cUNsO8kQk9K66R+Og9ZSyGm7A8JnfLxGUYS1WVeR6IMEE5Upbyu5VVKh/e4DQm2SJAAE6ADUX4+9AW4PLfsiHZXU6g8dZyJhCHfuh0sgTIouA/TjoqDnxN1r6sLWm49NUG2URot78Wg8wbztO8biXm0Z8rhAOTMXK++mxuPDjPbZOfWZpMqZ/pjBCGyyEAbCrqhaqdXzuokspoL7RU1V4CHn8GVuwSgnWI6NvTMGfuWoJ2grzogwSN3LooZ+LkxX6Vp1MC8JhWPH4MsEiQZqPa01KkQjebnwRpmgafxSaLyO7O1jmCO8SL95ZWKcyav6tXCn40emjSHnK8uKozDwCcGwBvyqaoNoAHv2sI6x6K7PhRLS1yqA5qHioxMwDrRRIggK69lprmTROpEHODL1ywkSng4IGAdrIoAG36mbSwvXUB4V4oRFoJ/o8xdf9PAo2pAeTMc6vrDvYfNrGpY4C8172DrJnR5EPuMaGh1KfNBJozDhdVZpMUWXVmpmhi3PdxdR+I5VInBOOPOpdOPbC7TbAQ7J/yJpLgqfQ+mi8ydgLUyLZhpktT80pb7HhR7o2fJIe1MyyaHQXPudYT9bRZEWBPUpaL1T06J6cyTDxkr3+dkCNHqyGbJ2MT6Vn6VBTZjL140eGycu3fjZIL7F1sjt3b/KywCdtoIzUSSV+j2uSxKHQfuko1WxYIymFhmlEpI0JtFBAK6mhu4ww3LggQ6uYjb+7seLCyHqSAH3PCOf7+rJ/J2EcVM6nKIwE5tmYqHn2fktYXXIISreezyFnweCg8CulWJ6AnpOwQnsZRtASQdc+rTHytRTqLnD5/6XxwnB1P4hTDp3CPqdiIbwpxNEM1UI5BXMxsPRSCcSEwsCEkYw1W4c+u4UUBkP/25MyZVH7cCXZRXHZqOD9XDeNbEZUjhMtcUummCgwO7JYSprH8rmuGjcrqqFeI/e9Z+0xcii7kUpw/BxQnxa+48UF8eiymu0BU0GrGJ54oRJMRkcb7VuxUbm2IbHlRLRg5/2siSja3qHyVs7ir6MFkuo0iIuKJtBZidrMTnWVsrJQv0dWcen1Ou8b26KWbUaa073Rhd3Xx9tj9nVpsDTejQb8KDKjzTBweC8b0bdwdUpPnKNVxIe0LIbXr5RtNm4TMWUT0rcy5B3HG0aZzZMBvTZg9HXhAmh4LPI6egymPmlwi4/qf767CDi9sDVm9Ofo/ScwIlf9UlMMI8mNFe3ldApIcoDRGgCdjiZ+MIwLT9Vo7Yf9nSc4OaxfocMkG17zetIGioyO+mNYafSSXKdemkB20WYXfq57bIFh46ybhYw5Tf3tx69cwLuFOiIc2ffoojK3yIdaFtt9I8eHSXAcR/leea9oYSShjmFwiHDo0QHy3o8KMR8WahbsLNzn6xseBxoPCHQlvSl2PStF34L8/NIxZ3Zn2mRVfX2mYuezdy/AbYDw/tFZ0eAsprxWagGmFHXEmSc4Ul6fUk98fkGdM0UnftIoWlHEzbxlrkP5cEg4tlEbuu2R4ciIhxvDDncZ09H2a/AorT2zzGOkUiAsz3MbLHWcteBBI6frlPY4B0+G8aSMTpNkK1EOw4JMGfHGJLUXSTTWovGH9KdIIVrBeqoL1hHTxqYRP4rOjab0e2yFOT3nSh9QId/iUbddCe4RNc1a795bjMhGvzNmauP6iJG1+v6RAnPlT1yytsLdcEVactJttqx4NC7HPuxz/914TcXY/OqhUy3idcLo1vjygk4Z/iwkrcHFc1ar5FuXw+rGGQ2DIM1COoRFtTTi9ZZjzo0NSx0N91OPPBEX2yg492HyItl4GY/S3jMCagXG5lj5/So1APTiWsGu6CyAfYJJFmTDoOWDzWE0lNVmgDDyXk5n53hkGWg4veb1pA2UcZIEmIrO4M66C1Ul+zkvUNCbsAca6KaUVT9ixCHPTEyCMQ5z63ueWp+dFT8r/bQx5G3ZPMddP8N58wIcb/W8O2/aRHZeu3d3VPvwCFnxafuVm0bY+gmlUjaLLbg9TJg9np9SGRGSA93O3ZtsnYwYnaCq+oBAKa/kM91oSs+4oKTyC4w0CdD1Qd31sr44TKEA2zClsHMB4acprBeL0iTIGRU77U/v70DjS3UVtV6lMWgklNHEiJwKAM+84EohGy0UTtzXKOSmQLn2sxKwdRJCKSFOGdA7R8aV0e91otCPxHFpL1Ce4jI6oZF3v4lm/0lNYIYeDQXWbjlbl2HMKI8bDN78TYuzKTZeiy6XSeaKrpGm2TjOYdXGCuFm8C9gcU2Cr0WZ8s5qOIxWxymxwKz3CpTxhhmVs5C80mpewG6Ggjs0xKnSj/LGU0aoyzelS8gv4hPuv2lAfOnRYMo5b+uQA9VyJgKFv6qDGg6hpWGCsiXMmPB+WaKh4k+LYOQd0yuEDY0Ho5nszwFGlaJTGAX78boRpIp+fTwa6y6zaCBRromWjthvIi45AEDHnr3kQE50GlwLCW58ACyLgHBNYxBAH4bg/Wb08vJazXUD4h7N2xz/OOml17yetIEywqhRwBFhNwS938iuN0GHtXSTCX0y6ik9I6LxqA3HcOVM4q/nvU3+CN2eiFIRFcdK9tx6lmHcml+FVoFB6GFWuuYp4aFIg75zxmmDhHDWaQsKPAp/7pWhwBICyyu2TfBrz+A+fCJb45r3er6TglDpmGqyBYtqeWRLc1gVvcBrUSTWk3gBndIJJWAUngd2A6iqcWgBgj7xEuieEOxDwNQIa2QqjeGc2HirvDiNS8KYRh8Fo1lmo9iWNU6HPWepRIVyBQwo/+7pkp2GcCT0HNvbtShL0Vd3cG36VB8MS4Vw2KHwfA7Dv6cd5JwYHyv94A4E6yJqT1n3jTUEZsSh5lYUbESUUO/S2TeEwXwUqWo/YWknFzhQWmczTCpVEmdj4obuYlx7H5FKebEnPjmMjkUXVMTGE8Voeks4B/a0SZ1sg8IJthePdlH+mYyTQqz6D387L/W2vPswGMiISd2/jc09D+u8zo6JDFfxVu8jYPScMaNFOMveEBwVLeB6R3Q8FDn1qCwLptlVWQYc6YrDlfOlaasYnLBOwzH1FA3UkYIHcHkJS7MbXHhfVrbA5j4bDF2fheFg+97PJ1VJayozMDwcHqV2/n6N60kbKEPZOZGXhT2KcUigJZSV68dmmsPCTkr5gEIQnR659ecJ4HhRD5UQPqzPgTxe86wfFcvWPmj4+H7Oxox7afopazdg0QAKq6PHTpwIzZSWUiMqQLPFHTEJlns1YXzUS9N4eiFMgMpDZlMxNwzPwgz9/4gKcIxLMb0MhhZw2hP/oPKlMLU8fuAE5xJE3leECB71QiA8TUgTXkxlIbowcjWTdjSqnqN3bPsjrakBVMYQPtQv7TFv5aa6GlmotU4pbpubfxvY2iuqqIB3rGQqgrg/591LmegdNaVYoxTL3ncVAo4wdLYQI74c30ALdpCm9wPqn8L7aCzUKY+h1MyL3bUKhAXpqw1QGY0Liro4v7t3CxiM3TNwb9txxj+cru13Rbao1GhY2fOkF5728cZ3inawJmjgO0fROSNgAVNcllpTdNXD8VxzRSy3omIkLB5Hs7l0KX7bt0fOWAdmkQX1RKLRFOhIYdq+UfWG7jA6DxOOliZ85ctIXfbTKEgoTSjY0wEhzuxYPWWPXi9Bh5ZGSa2P79zRiT+T0y0H+CBlCvnJ8dRw8D5aLqsFg/pbPWuKf+V0r44wkn+dZi/VhkOGF+W786rJBa99EX1Z9O/THdh41fW0DRRgvJDPi30eKYi6jUaGXuJlxX9ugEiI0+CIfh5GdDIC1jYQ1u2xgvYQWaeZMCzycw4RgDwiD8N7TcyoW3mFJUzjRfDgx2Sui62XvQmYeqmCPcHI1j+MIzQh9mZ6PSpAhq/PFExJ8EcEn1UA92IaDX5en0cxJQQNnkDjyMfkgpWyoTIr4Tt7afD7FrBSfFyv2m9jClxOR+Elr7j3HkCnSqjYPARfClehWotQ6K3bBGd2PpyK09OPjHa1oYhOtzHd4jTtR5g5JvfN/clowOC1g7+TBwgMGikGXylHrlFrYW1CrYEKrASo+kyUIpdzUnhX35cLRihceL4WHaA9crVZBxUJlLZL2PotWrr5kkDexoXSWS9oDfTawmkgSiGqrwqBTJz274JVbcFf1OiGt/PQ+Q3gfr9OjRCOvFbfF0dU6i7Bo/1Rjp8fl1ZPIlOGatJIPqf8rA7HVLaunKMAx7Xx6LWnVtzQ51uKOy0LU8Cp/yNjGi4wHIIyKsfeu4ia8AIYXQqge95wv8WDLWvQPJu1Vx635k2XRHq6ScYzVKTLN3qjtqTIOSOxZlh4pN8NBMoAvW9NJ0wr/eVOjbdqqDHU/mL094FYkwZnGzyGr3NKJy2j8BrXEzdQEpEpYovs46KHWb/DQxURUeDt+4d1WZd0oSl0vvhIubkSmEKECS8y51AUJytX6RJRfn+u5maDcWDr3R/JSKMwMGOHURl5DibARoQHME8o5hq4trL2vV6G/1MRP37xWcGUx9IMxq2sTBgEun6D+1gNp0j0W4pLiXTtyJaETMW1d9wh+aKa6RmSqdzL4xj8HLGL3woXMyLSv8tAoABnCJ+f0dunh+zHO9Ew79M0G2FielcqGS1c04m1/jehORrWoRUFeoppfBud6IjwSIlA/LPrKVrAi144xu0klFzhZMFXR+5j1F7IaK4paFyrB8zRND7mLti7kqcRNxwRVyy3iiCxJohHT4EtZ1bR1MNqTzabbNt4qUmtjbhHYJpQ6iNGwvRV4Vy9Qhrmj/reZA/XKSMMpa4iUc7JCOhRJFV06C+N5PuciBM6DK7E2jGJphs/bsp1NqhmBHXlkAdJK9gih13oWn9bailWv+qAxuEeF0hrMSwSeLCUDqNk1BMZqlNjykbsZ/U0CXSE82F1I0DtNTWXjB7nb+9rgn5GzQ89eiUeqrWsVKpO9GQGgdOY6srQn3stI6NjHkUR/xQcs0HYeCQ9m4zwekegeH31HMSf5vz9UiR7XIC8xAjbxrF/sP8EnTAKaSozWudIvk+FlMzOfnuIbu+OzvESQbxiAn+EAK0fCtBCNhKjOGlvqFNNLPJS6JeGhtUyyHA5RTW8PmWusYjfmvowd9zeNFQjodMliTZUWJhmyvpsYI3Oikh1GgWVET1WCTWMF33Jol8YaTpZ5xSIxVA8/TL6ogCjPoHKV55xDeOGl4SRXS5HBqPRKHIlL0VC48Bg8uLQ72OdC5DBEjYWU2v1w8JgmPDvNEYMY2fUSNG7ZnOqowvyvPeNe14CLwUf987fJQjd6I0+2lwDxEHBWjBLox2Gy5WfzgZ2oqIVgT56Gy1IKagBtaknrFT3VJG/gcuKDjqcxykSo1/tgwYvdeeqiMt5bNje7bhwFrDVwCyg+hxFz7IVhBQ0nQQZFSm6k1EbmhQwSmXRJY0QGZ6XTrXFDYrccL+KotIRocEmgVXyQMZojEidYEHZWnQHbDgzAqBIAElF+266cn7CrY0Pd6o4ZrzK+KWhwDGL1rLWorlvhnhOTdyuVLppRILEr9k64eTsDcJwvWFGRKdezXDC5AX2TNnTW60LCc7lfukIdSLmEgKj+Rrlw+LLRE8OrSL3paPkMHrhrMn7gRsYGh0GBLPLrde4nrSBAjSemH/Oi3UDtHoQREhxUjiok2IhqnPQpciLyVmZTcSfa1vcg+MVCdWxnI8SU7HqdiqMi/hKxsMqD+FRvtOjNWTKVZEj2LyvSPuoqNY8Vc1Lpc/wq4Qcw7EFMztuTa+gK8iLcu2oa1qInoqT8+BSOJA1kROHUuam+G29+t8En6x680gE6weokduoGSgh3uukxGhG9TkfL6DoBIYTjn1rz3Kw50MrwDaCTZEnpmFRR1Q3PCBFCHorZxwwqqGW4VV0azl/7RnE6YTJ4fcymsJ6p4t1q71QeW0Dgh12uRZ3FpCBfOGF6gGnj7inM1HC2lNTQL8/p4p6Fb2oyJM6t7JuRXRvTbLIOzTKrAkiF8yGdWH420CB1rPhYl4/yThaaMf4AtMYB6wQG5bO7XnA6M8rFJLWRBBaJFB2Fh0Rr2tJ0orBnYaj49v0N1CKkn14KA8SXee1EodFM0jzj9IstVbVy1121Civ6ML3c5pRR51T4+eaf/P/8OfRyllF6hXxkUzlicAjkHdHRzATE27L9A75WXjgvux/N3o4Bmkdmyf9+8jonkBe43M0bgmzjpA33Wh8mJG22lChAZJn2We/q66Fx4lXzyWjF5zbTlOh9Rhp6Ry5f0RQn+F60gYKiwjDhEWuaS2KUKj0yLiJtlqL4BMUbD6JC4FW+rKc3YA5DDHoZ7posP/WdVa2NZfSNkczg4iaRsPJKBIjJU7H2wCnoPEunYpIHKXM+3RPwvP4QMLDczIKCTNAAlQz1frY/ApAGxD0DK/ZESIT8II5lYd7BMDjKIQZPhQiZ0M9L4njxSFF5Y21ZJSdvEEWwHo9Ddevokxur+ZFFcKpEJaKkIrNabEml4d1Q9tGFD6laXSKg+iUgdGGQodbs3Fj96pjqrqfRiuhU6oPQP8veJx+DE80smTYenRJtJCKGvm9rDvx6IBoxIxLXLKLpCM7ogTs4+6MOlLpwGDhxsh9H+/ePNURCqXDgMewMz7WmIqSFL69yDjq+zx/Rpgl8uDR4N47O5eenR8dq4/sNAxP15ijIry4clTaIMT3G4ysLWnD+Gzw772KYJtml+GHys2MHqVjK3qlCJLTpT0zIhXATLvSEojs6JPrOsdN8VE3QjQDA2jcM1pwMIXb42sszRHt0Nw6xYiFfbLLwNP8Z/uxbtBM6WgPMsaj97p6rCEvXBa6oxr9TC5gWb0bwXbezyiIJf+yVmtZ/QlKJ8lg5tqtBYKBSfuyzy4vMR9+jetJGygAJOR26HJ7Un6aRUqUt5NB62FFLYTAVnDuvbtVyDCawHwS0q+qM1n3tQYLoXl+clTMG3GONEJt5BFRuTxN6M2VPJKohSaV+75xFJ8JNkbYbpHD9s9TD0N4YdYuUDCWENZ7LNjvhM2RtFcT/lSgJpi1QNaUXFMFtInGld5aSvjZO0hYtzDqOVyA1JRSYH6ygW20VeRXc1/saHqUB0ihQcEMwOt6lFKqsZ2PpbT5Z91PA0oV8gwpM+zOY8dUal58S+XHiwItSZMFU8IZpKEsDyo6DWd7lpAOwh4yTFSYyoJW60Wkwmm18LYaIeG7CTNuu3kVI1FJ+BdNZBrPmTEjGoqmWXUPrhSmUoQvVxtVpaD83U99ym4DriOKTT+KmDCdI7zVekfn4g1zwR8Y9RVI7CjCglJCfdoiH6WYVDdw6gQN0o3w3jQCpyHisE6XUInq9FXNy8Jb1ccFEGlwzr1/GlJe+yLlS9w4zk3GoGDizlJH9R73DBl6kHxHGJ/SvjLMF4Rfpd+Ii7D/9WMwH8YSRipP6xgh8ubHjiIWHSU6Qlc00Y5HOYl1Qi5trPHOHquLbPh25FOfWxRGKRtFnG29pd/6/p58OOYGU0VzDpiTZMihI0/5/5rXkzZQPHIiCQFMy60uJ2qdAMC2/o5rM5s8agtpeeRFijl6fjcyAAyL0mtTGP6XIUJmomKngOdcNDai1xGJkWJSSG7ZGMlxu95CXgINJAsfD4XIorGYSkZCzhlTf5tycIPCvkcRfCIUzqUgyFXCmMYXn6cQ5ZQ1t7fS1ueBoZxG4S3QdQkJBFgP0Pd0VCxKIKKjVIBOE/CdMbNXCtc3m66p8yXBYMr8lbltnizyz+o5hWSN5jZdtJA9XqT6rSjyxiPmgRlmpgdpDb6GF+QKhwKJgp/pjnN0hYYAC3yzYUph7NpExhOjTdWxV9HOg2PaXDw94UWqBXe13gc6pXWEIi6J5pNt3MakUysgHPu22i2A+8HMxQdkhIR7uwD0cksKZ4a+WfeVhWMHZRkLSv2RXyKhwm2Dt3vQnTaqrbmxQjo25SHaUmSsfictPbRxKLm3IJ5urwKdhkwObDKUxgHHYAQzbZ3G713YP40F8RjhUTBS/xiLjOo+oCM39TuQw0nkujIbdrPwO2VMgs4I+lmg139+ezIOVBq7Yb55N2RId6q8ZDBP/UjJ5+R7qzkbqb+CnwxEmM4JG5BGbe2xDy30GtdLPCp6Hs1Jyzhl+kj3cF46JgHVDfnLBj/b9aQNFNJte8lohZhGBGhh4KcmPKR2zu0q+kJlTSXmDbfYhRV9/zimTMXFcKNZnXFMGfYoGmGGi1uzMloUrkUbJSfikscOg4tHlYygkwBNYBxFPbhva7zlx165dmNy9+x7U5zflA+AQLYCMkHl4fgBqLsWSB7+VRFh9NrlYUfvlfUZo7mS1plb6C4g7yoVdGPPArRC8LQOBSNHiEq1ICUso/atIkOrV5BRcEC5d3/XiQQilbVSeFGvZzAYmYeqAkKSOwU3lZgadJl+8VB92nitV/pv1h7xfhpcq2pcEN2dN+ZYs4jXYOhHsYEqroY6tbYgNbw5bTASgTm+buFpI4/28T6vs1nZDetqXNHorb4/6Y4BL3iNiytTyBDQyw4BRJ3WyVrHdhJCyBtvA6YnXl638MFuzqyVct4zWGldlxwRHcKAxczCE52BW9TL+Gpo0q/3kOF1q0ifF8ezTwv51RQZu/KKt7LkAvo+GK2p2Jhrre8kt7wrNA0oo2OXP3IECWKrk5ETVzQp+g9UjUi0jildMgr8y1B6lCrSfI2DVH/8niMELMNbAvKajhhr1/N1y7kmqiMsids7OmrUBdgtA/Ky0zvHXcPM16DTQFeDKb9zxz3tf8rp3y+neCS0HAHYKQpVsqPf/yH5bZ6fFJeOXG0BsqMUIWKWAWOyg5eiJA5NEhn/Xi1oEZXbC+w3J1+hLrijQM2fvbN9OuIHo/f6dA9vIe8vhu1hhVApZSYhZoJwmSeniIHPzdMb53VTUZ7CpvJkEjq2rU6ZHOYVtUAJ1JtW8QqrPiTscGC/zyIwvEgv6mtlU3grL1cNlPiqdCoTeksKjabmb+XGz1IGrGhhTZxsZRJNTF7YeDNBx1D4xdZ57AE8ypCFh3OolooznEYqEpRAd9t03CoS1XuE0ZZweDbw7FmmQ6LGcX7hgkefFdILIOHeUYxUP5JXzln7CcKA6yS+b1Bju/26hDoqHFBKZuTny7OlIJYsSdTbqkO8KoXhTBuFW490Uh4QlqWAxHeueBIdRUKlMjk8cVX3K9XGNGraIQGL/kTRW9TYkeg39nLtKgTOQVNuLG/yDtHocLpuje8MdK+W6OdReHHlD2D8vqNeS4Zt3NApYSp/YNfu8Nkw+JGGeD9yRidgp6hoYJCW6m+l58iLdr8iYFbDpJNRSbgVX0fDX7oDaAfM6MMj3korMyLpkRBG9+W0GIyj1+L1XcPZM7mgV1HYPgQHzGfkrFqjtb0uk7WBNnYI08LH0F+veT1pA0WRABEvLWfm9ojQzmE6kDZDFyYcuEE51WFpAl8pFf4OQ2o0ottirPnO4bRamzrPciwKRXkop/GKYJaHo21N2qIRAQklAL03Z3gwUu5oZjNlo3ClKZI8UY7XszRBR+355JGWUuf7PZTusALcEXoFJlEXk+yup49hIzyR0bwC3/HjYzJXfYG8fuXgiTdGDXj8VQIVY/xhQJYxoxexMSS/YOuOroU6onP8E8QVmWj4q8i51pMXdCrNcCWjlUaO40l57/qQhl9Fj+j1KCUX6LoEGi3eF8Pro8QfMeFtxsWrU0WngkEqtSM6mnAx7/wwHFBYkh8LLqonsyjR8Bxh6zf4yAGiR0xFWOkLRYeomYYy65OCvEadCY3M1fAXP2YoDZJUpHXyUI6MIjHGj5baVHoEGPU4wsFDw1L317Oi5WpdrjSEPAUoWsaaE6ZNlQqzRoBev+GRvNEQ89L3dLF7KuLX72pC01uTDACrL/MoGQ1eRd6iaZ9GfqW3dILu2j1oXH6NvlRmUI7TQtkw4hx8KSaAdr5ODJ61tnBvb6FlNZ04j4yE0fYrxkTtYbHwNSCnkzTbKTnDhS/K9Nyu9zzJk7A6paP1B6M47HTN9caZ3z/D9aQNFO/TQQW9gct8NO+DENEWaguowbguPwrgajKV2HUkD6d7+D9lKl8GSEMj+vulDoG2XtI5jQxH5Fmp+GUEmhfIMqcS6yN4PQaV/3D6imBuLxoQqdBjCa+HScQjj22CXLnbUxpI8/CHSke1D82Q22jJFkb7o42HwKsZNFBeJHFgACOj0INkoR9TOMyp3uxFa2mChgqW+2IaKRqee3+htUopr9pbQmFyPpeX3IKQofSjtkyv10Cn97Q4HUQL/07/FdzUPTWaDs0wG0YUgP2ySKi2YJw0c0XNPLzy/RiLGjLSw+uwOU/1QeNB0lsBUhEHGnZ1b8aJv7QOo5tzqqOiVa3MuZ96pJ4bLwo0Y0rRLEAGa9iG2wM2xY8YNSekQ6WRYV1dCS4qeinNlnFAKVAzCs+w1L3kPTNOBI4A4n41bwDNc34PcTLSvKaY/XYaAzd7juMZLFnUHGcD2OYdY6sGqGj65vDtpfj7bBpfmNEupmN4YizT3n2DBnZUjdqJVDva1bw2eMkZ4FwnlRj0MnQHo6iEUyl2RnFGCsX/NuN83ZtcNjioNvIGBNPCpD+TbdRJLJ5VEzw3XEhXpMtb41J4554PqICXJySHXHmN60kbKACwK8g3MS2G5aNTB04MAbR3Wf+roCqh8C+JztMgAGRls6JfhLp6Dq2LUQ15E3aPCx2lGNACASSeltkcQ6FCP/FT+zrq9E6nilpAeEgxwTmLwS4ttFUYTBjpOHKfShgRCBcmrvwKPsdl3tNHFVtAaZMUqAwh31udCHod5zobKWcEjktHvQbeaLABHdotwax10zjxuo8SoF2H0qd2FBGxCIoYnnikoUQvTJ54tidWRnDXo5jg5t+nKE3DvL9jSJehfaYs3cNWPVM2rgUoN2jPxl/ViAzl7lEcLqnSZBJi5skKXufLT2yZ7tOf1vuFSjLuo/uz0LqQvmqFJwOucKBxrjn2fnZUAgDuV8GiFVUbZjMcv/GEflE60xgck6eGjH7b+43CTZ80Ex0ZT+hyqU054ikD57ean3US4eu57KiUWPDBNu98ThoLKLLBFF/35bB+JgULpL0ziF11tcQyNkiDOM05vPhWyGoiSWOlDOYwnqZjkASAPSc5UHKbHadxOzXsqyiL5Db3RWfA+PfRIQPjn5aTVpdUxq34+hbiHRXNElZlZCFynOpyntJ+WRPJ35kK0pFrdHomSr/Q+OThiHUyIvLx7zKC0k5a0YE6Wtbosc8UBPgs15M2UDaDhKqDZV2WQNnWPoYSp6ESt1CaRBmMBLpleBOwh8Y9pTKKO6nkDBmKkqyeh5fuS0d4fVfMeXsBEbsbGG7Fk9Ai0c3kKJSOmbrZD5tykiXeAhJAe6fGfGePe3gCQOcfvZeGK3EaR9YLwE8tqckYjTTN28WEFBw6gWPrIYyWao8GoXTumVE0hs+RymmflVFHDXruUIrMPHHHXdVLBMPH3AONK+K8DBudGKHA9HQaw/yB4TUpakP4n44eM4LjmZvRqbbG2EKxfpgGZVTRismdBqIUDU/M8GQRld0WwCVUqRSoCEiHcgJYbBrac0YMI0A5clcCtX8dGSe8tMdaOA3J07FMCWDRcDSMbtUgjvgiHigg3CC4xY42PdQCTNArQia6b3oap6nO4e6irV7s/NpTUGzg13DpU2Ej0laKSB/V+nUk2Xmwvo+HjljKQ65CVs64e3lEefHR8m/19/6uM6XtAnor8SjMdlnjtAJYb44cdA4zkrp4mYRr+7VoVHdjbl5X7yIZi1B0YIzFPSzoVM5O/2DogijmCi0A4n8VwVukVJHkwGwLcNQ4RWtTZrasoJ6RXC7Z4lE46ST2Nim5fFyya4+y6cCdFNcFumovjIDnwn7fjzv1h9EV6nu8/vWkDZSkQgE6N1bCRVEAAvkkPNSA62JCloK/xhtGgQk1GhfHC1cA9X3dz459qxidee4+idA/y42BIrB1jzawzFBqrx7Akc24RoANoP5RhXsJsE4tGZNGV78rWsJxCMpjfjZglZCHKwZCM6SEpntNORmLOW0AqlMZr0S3yJV7el4gLCHBVcuwiF53nTLwt7xqk9kCQ0qASnkBPAG0vQX7rAQ1+zZkwdaLhMX0FE436CVeHoHxd2Oodb5otBXfMiNZ9H70M6QZkYJH6k4GFo2vIIDpcZeCl01oeNz4t2PQyCmgsg1G1R0Bggu90fZuOYkL8oI9+ZMKj6dy+FzNt5nT8EZhYEaj9ox61iMQsKGo+HRKA705L15Og3mc5igvVidWqOQp2MsIcsPDG3nttZgHXtv2N4QPo6U+S5t/7tvqMfiMI1YGBoVfzVMnzJL8d2m4ALBj2jlqlkZhPQmRTgvhSRhYdFSFprZX1HuQ5ov57Gi6rZewlqEj+WDRL9T62PQu0ozAE71wfq4f6Ejc7XTfkE397i8t2etZLIXmNW77zfB7IE+Jufwb9Uevuh7JtYaPeJB7la5A8xrh44YG+flyks+kfdMbi2kdW+s48fVZridtoKDSOhnd6fOcU6MV/CjMBH5GYQMJ41F0SoJAj3OuwH68rla4IzJroTMRVTri6lkr/FRNCT/yNA77vjCNEmhGKeLYgrz3I8VEgWbGwkgFHNYzxfKhEnimDLWnUsLDYJKQR3vsJH4fr+CmZmDuGVNJLUiwKnwOVPGq3U8vroTuuVBRjAiMmpjh4RXzse+JG1WKspSgH4XMQIfTrTjU4RwvISPHCcSbvkl5lxDR+ullFu5GyoXf09BxQe0wPo31aO1MeTL0DChnL2HML0yAK33A76iEqLAojB/xIERL+dDN6AAaGdnzJPds/XDOCrN4KKp/R9S0iiKchCiwWYnRHhUm6p5QLc+IWKBAVTUMVKoRraCHceDRVUXtzMjgRQXgfOp9eMjLVSOgtFkQPkXHFxuHUQ4ek17olPZh/OS8IRlU43MvlFMPJwMThQ+rvXADRMHBOiVHo4RpBh3DF22YwC75rF4iZx3nmoxyKVLpvU6DZUVaTrxOOmLKBx2pVf2ER22XwZn79kMAqw3qljMx1ygYhckUDLnnMlfpTYPvUPYm0wGME4ySXwFFkTtlf2pVTx10NPpIQ6yNmU51toNQ87P+xGtnWH+5vFbos1xP2kCRMiWiChCXlwCtRe9HwkvhcrADXin6qqbXefxlkYyz9Qh0cSXsswMd1eDaiuAk+2nkuLA6FQ95wdLlZSGX85sgOSucADoESKKioKGHw/s1YBE/idh+pNhesWZ+TuPKPcU+NVD/u1FD5g6oQZvqYRwGYXCh4LykFKj2QMHnJ0J8D1RqgR01SbTnYzUUSv8wJRPZxkvlf9Wu+mTwTKM1Gx/El6VzNm6tJoGCg9EjE4SkU84RNjwcPo3KFtAVks+70yk2Pl+59+G92m2wojfi1D2rVqTUaIUX0gowIpzNhylPKjL2Onn8l3C7D+XOW/BGT0taMnwLLEYiIpWKdsjAOcsDwSWtyNPw6XS7WA9gtA20c1Mnb5Lr8PdjMeVhfKgoqTVJ1OSMQroSpTJYRpfGx4itTGVeSh6k5KGMLYNfy0UMo7hT5qH9xsvAeAuzyWLhv5RhcryMLuIm39a4o+fUMNRrPspkGpGulw0Hnv5OtBzVqztAPuPctn+rGcpauwznC3YaiDgIvloiWra5w0HYeV0b6fjBnuNYhG+gD2FQFpWx48ef+fd62XiSU7zIr2j9NwyipjkaGbxfjjqIi/5ekTWPkPJvPkKjZhncqPcUMcJrX0/aQFHojIgGGTnEBBlt7YngMfNm8kpdsUsyo5WxKQCO6c+LmbIVNYBGSjRTeNhLzGyE48+pdb32iFaKwMxLH0083dvF1h9GyBJAaMWVLR87xNjfCU782z3EfMXvZPTzfWW1x0OMcLTCz5f2SIexdAqJjtMBrH/h3lwRc94K8+vEDi/2RKFxUvePNtRpw7HivvA0TgKcmrnJA6EBdcFui37DSBV1863m4DDFeJhHopSW6CUbN4RFCWYKsxHafQjlup0WVVuR6Lx67VEGnKcU6IX7UUWPAIpOyggpInyUKjTDQcuU02GKgsZ8sq4kVB8BFa8X/Bw/5D0zngCo+VhHEBrPikYWfnnkXGPHfj6KKBSit3mR6HfzcHymegw2mnNlG2Vee0WR5spDxm137mUEI8H/u6eP+tKUouOLFtvJmPvzlg1Azbcod1txar1IvZOs5Zl19i15wfolJLbxLBl70lw0znhPdN2TIkmqmbL9W1TcX2UxmjjyOtpYGA5dLWdE6fhfwRi+JkVq68cdFpOTNFiVwlsuI7JKDaJP0nApDwAeWjeNCAgNgWy+B8z4MDHnTqgcgJInI4VkMNKYiWnwcIzAI9SNKHaaTH5VW4HPcD1pAwWY1p16i1wT634ee9LRPhoufB7Q+1POlqHfz7kA03cnxb89mhaG+yaMyAmJ9fAmXmlz09LkuLylFNpYB+sLOLYMqRYGqnFhEZYTYDGSiNPmo+LicW2loEbPCxOytd4+um35X0ChZPei1TOjAHTul4B0oWjwIzx4OsBgrcitMZFX4Lv3djayuoo/IY+RxiXX/hBFW9EhY66JgiejBdSA1Z6cRoMM4YKBp/0AjIgQlUunfTZulNYw1I8okj2jz+IxLAUf/n9pxKrVOw2jU0HhWagrGoOTMqj5lXJj8arRrqcb27AvZVbwksfG6BYNzdsW7hqnIl4SygeQKHjVKTEkRlt89RXhXo7mu2G8PMQ0LIQANyJySth046j5BIndUpzwVCrt5GknwD4kSi+4sM8+xTjeI+R1IlwX61fqZ2TeSNI0RkzhjVq94Aj2PRWYjM1OXyjA4LjFCV7cf0UA4d+ZodCL5yCYssg/5ykfQIbhuo8+Nk5ZwUctwiUjzQwORcQCHVGpv4ei9vX4STXeS5pGrY9pQrDeKGUIKbriID+PVXy9jaDNZ34AQ1ES0iHXa5FvoaGIYrmz4TBYmA6T8a0bQNLPwOOo1WtcT9tAORpo8uQAKcphUEhYbCwv5uGojAw5a4Qb0d+LoND1Im70RH/nNRTrAWpL7iFzCc4z4zkhnI0g2DiJrkfBJojjUswnpbMNtoaDzZOn+dOiBYOBes2MEBGmkgNMd7EQMdKq5etH3n/oPiq9fQIpmiG5Bq6DRtsBhWpHFTvx7sYHjSoPWxJupAUyVuXQdzfZhZD3mm24mMLbe66G3AQC63Y8nRK9zrweiNzGM18A9oj5PaIRBROeTGNfhDq94ifXBo0wyuCfXTrErYgPccIjp7dob1oGQQ1y63nHmmUIGHxLUDLqImPlFIVQepWGXlTqhKcYAvXWXuNh4rEMQRb9uecobxiADD8poei5+WfuhZ+bObbhZEaC7Q1eI5HNF4wMxs2UIIwWCsY0II6sbiiRbZQA0zhgzYbPacbJcLyi5ixYMpLRJ+Kij0PDFIiHHTP6NQ+ka37OomI+X4aSyzy+JNOjXENJW0O/5CkS1H4rIqcIOeWKFKctF9i8OtbT8rHXUGNU1OC4euQGlt6FDG8auY9Oi1Em1RpkPFhBrjc/U21f7AdGROOBC97PjTVVU8K4n6fQyN9uZDyqi6zF0SCUzD7QRfmm9467Hutg5H4BN57KsdSgw8Kd7lEiAFSwwHnRxnrN62kbKAVAIuioiAKNBj/mq1QQ0OG5CwB0uLmNkBKOLDJyxvNeJFR8ayPVUzskBr0vxRVkNKJp8XrI20PQ7OQI9JifDmujGPikePfvPT692O7kmP369rPwIly8Jwbhgv5e1d7LChiB2TQNLTCG8cW9U8hbJGV4+CXYwwcowd2eMOE15/WeJTIOovD2sH/RM1wHSgARLEdHOvKORWu1FleMXNorhNVxlxLgVFrj6PQAlv1KWjh/RhTn/E4GWlBB1e+mzER/tz1Ae0BtWDClokI7E2Bcz4bNvk9K8oC+VAE7eQPNn0JlkYzQZlEowfJVUQvCKfthGU/upJhDg9h4GILW4U0lmtDJChn4Po8vhriWomqaOY8tz/KIrWBPhe5em6QalajeKvxxhVlGSRe09hq8yylR031DQsZW9/xoBa1owio+WDZPKVw5ebfW3JsG9vcspI3705q1oEbirHNLKe9R6O7P8xYau8Q9L4OdeJKpLpdrMJkT04juCGERGZ1itWVoXuaaPKI9XpegNdV6yD88Tk94VR1OBvYhgLtEvsjBL4/qFk+OmPMRjRI5xqSxE/0r+lwyIAgD4uTaY54dbtq3o8aSa6ET6p+/xvW0DRTs6EQrhmbQKMKTICBQlh0BPTYmeApoP4hHuX7m+4bXaISSaASo0vk4jVWP8I2Px4tmDDGUITgDiPsycIBB3DJuvKGPCXISvjeBklA1gacjrUFFihZ2Rw3UPKt7gRyKKngroxVuwPhzLjgOViMYtXLfFHZuTOieNiBG4Sa9aRoxKGYXszVsdJyWyovvSFKEgcICDTuFrCFlz6LWvGtlMgwACljCgv+bjqUH1gV5McLfLNaVV/jg+EQLWFdCY88Nn7Ep4nrZJhcfrjVyjIqy7B+uO2F3Nz1IAIaEll4oF6ZAWf8CiGZ0HxvaOfxJv763RL3TijzPPe5/VJsCSKH6SwHDt6v0CqTU/XsX4nqXTwZSBhkUPaFzFMdOBzoPKfrnKY44HbOmUXmpmo4E2HUZQB2JNdgYWkcEotJQ3YU4oNotN96Llo4XtgZgpETHYYNKzc3IC/oUVDZsaeSMOhEq/dP8/abgGsujYkSYyRfuT/JG/VbQxv6B6kKMdsLIv6wvM96VMONVx325z3H4e5WjERQf9XtuvdTv9AqlWyQfLHUXvgcVXkdHPlif5hGKUScHOc6kF0XxgS4NqH1G+j0pmQuYfjsZH6QBFyOuC/lSQc1zWhdyy9lEr+t1ridtoHiI2Q0MIZyWrgRmNOCpwEGFiE9v3Zl1KEvS6kSIcL2vB00MfSS4iYcW7JjrPG8xI4BumlRr0fdJzkALhUC/gI9zkbDRimW8jC8s3HlQKQJnIcb98UWH6vdRBDpOGghHVDz9odfDSFC7YDMvVxZgPadRBvPQ81LjcMkYKgvuJ0rR+dHgHGMVrqgMUEzMgj07hSAPpxTIiDLQ+KFCKK+TQotH7STYzAPUnHetuHjyB2H9Hg6j22WfW9O00bk1YYIu2gCsHjFKGxnupLBrsaO5Wglo5b2p0Hgq7mLyfqHpFdgnd7zweEFFqcNwZh47sA1B7PF3cTVGyq33YgpKNG3RQSpA8kcpAWCvIUB8miAmnm/RdO7KEzAmw4joiQ6WsQaVthtchFUZcnKM/MjqNdVLMh6InzCDv6a82ho90skop747GSrFbxF13F+F5JYGtG3qGC8/OAwsC8i7Q4bOuRYmDiiNkcvwWzhmBEtpwhOsdJIKve79Kxl6f851K03GHZne2AWqBcfecl8XtGFHWWkiVKR9YPT7GdHgglc7uGGpQgJlK3Klw2DfW5prFwpDTm8ujFewjBQvoFe05GVH+5NOQdENDWtfhxp/crwELp/C0H8exZETZbJP9H+FXuj5+yeCkjN0taMClWutYjcWBqnqnBb4YUrSwn9CkisYe3sjDRs/sqtUkMLplW6qNSrFBCj68SitZOkpr0FIIwZ61jJAKHACoysuC7s85EaPTsYSmjmHAeEMfPZgPL1QDDaOz3ktxNqcpG6jVPzuPZFRz0LavzvXBfieKPDIXFQ4ANg/QwyhZwjPEK46ZUfFvgVfcs9kNK618MiiNhl3SvSiay0qKsAcPk/7jJQC0ynuVRKUiW4d77DlmqhQSA+Uay7zGNXzpm6sZXAhOMLZQFATci7PzWPTU9YHwzs0XDSeSPvNazIUy8j0dJEbKQNO/LP60yy+QC0gvOmeimC1bVz0T6Hq+fDVUSryHWsLTiS/90LLNqwWRt5K05aU7lkoj2hPTyD4jVTkjARuJdDNv+hg4Na/Z2QXcFLJC6/Rys4ML3XhFj/VPqyFQ6OAdF2t8qthV3c8zlbGSjc5vaENfI5YhnY7fb1GP2FCoy0ux4bPJbtdAfdnNMZUI6NLHCsK7zJoeLIIkK4gMzUdck2P5ZJQWgYxam2sGxpGrclc4gswhU/2PBv2pIfDlnK0PBdMbS0yHIquHDRaM6MdpUeFk9JFOrXqdBDo987l1nnH1WSRwSfLkKah/brX0zZQ0IBQ0RmFQ+FfR20vZCJU0WgTmI8hwF4a4XwJk8aTQrKFUA45wa6T4rj0z3FFv3/lNBZDdX0qB50iKUFMBbduk2ikZHGqreEeFf3oNW9lEg1HYzYZKau/0xalXJqxZiooxtgS2tZQaxgm5UWrZmVoBlsz4epC/zzeJREvPcQPpUEUEaFxot8pBGtC87zOx1BdcARgTavQwoVL97oEPmvTtFFpsDEjrlMeblSjowLRNJl3e815Tf2g1qejiEqfFMwoTBkxAUbUUB6gQr21kYOKwxC0Eri2pRWvMGoUVkfzp1p5s3eL8GmCXUIvBXf19iC4PCJXCknIqCgbSZORDoD7Qu8/rTBRxqfR5kEhs+E4nYiCeRHwdmhizucKmwyl8LopdKZ/zrjPOd6OeNSx4oQZj2j6uPL5HArEHTjY8zSEuF7ibf+kYCqn6oAM8LHHnqrTGmrW1saBWE/KmQ5AjhRJHEUnRXeBnMawJit8S153l2tYRK0dt+y0DXodKAO0Ox/3+iTfRrM8Fvim5BVQkSbugTKS463iUb60ky/5hNXlUN6xFxRsnaI947Xi9ePFSXa73IxUtJYynlF3T8Xc7vpvGT3ULwUbvQiX4yT0csKRBfD5P8v19A2U2jwtbmcyAEBCgGui5cP8JyaSgT6VkhNR8mDQxNaLaeTyXnn2hhTllY3GVFy7uk5F3sODjXFMZXhz4qMQ4Rpyrok6SUpnvYJSPNXC+XRCp7blxg2VR/3uyn+vPea4rLXg916vIgMjJhEXn1NwUlkpfMriybD1JJTzBEr5XBsRHtJXt9JTBOGcKx9kU8KJ7d29lsNTJelCMepzRj2seFat8mn0+P7PRZbE6W3CKTIF77xgh8/r+KLGpHAsnIyTUzalFDANMeMnkNfKAApkGy1kp8vu26I+FHYyjEaSDA+jH03CzyuFMADCdSvEuL+Xc+A0WB6ydA4NL0558u6lVNwYK/oazsZQhKTh7D0kqgHdSfb4VYhgrxvJm8gqiM6OWo60Ra1vdVSAxooMT/7HKBKRbqfn2LW5CSL0K9OOMrbciy8ejcKFnB7WKdX9iqh6dM6ikTS85dnTmHWnC0WDg1Dq76OUXhkDzT/Fj8Xv/EjyiTKDaX+ui7yjNWbLwqMa79GoEe/RMOm96NQQZRllntePGUrb4EGnivl3DeHpwn7+VJeSGLI/bQzJxOj9jcJjc1BHuqd4lfpArHqbYx8WFVYkp7IPr+rN8rrXkzZQ9MZiYChSlHcH9PdduUzCcIiZwOdXJFoql2zE7TbapqidwLBDXW00GUIsJYPc62eKyutGcCIQRW8oyNBEuMqwYXjtLAh1rEtEtgXL8lyyCcfxmV1RhhHvY88ZWdWEM98ofQBqgcy/DxPi/NtATsXnp3WoDDy8KK8k0Maae4QU2oTXmLOUTQkgVcZTAJsc9KPQfjyWkbiN19Czs39NK1RGOoKWFiqyQSVK2qCQqZfPtTGX9pI+tFJGwUv01cAkLs/t2Zs+ovECUwgSOinFonAy6xrQx1S1RtZaPXgtBHkr9P6WrP3QCzSzo6OdgTZseUMZSy7sOsrXo/BormpRmKID9mmZgWOr05Bwr6PmlAmUK1wLTzRJsNdXpFlr4y3+ODcqFIhJc9m0Xwo5qPAObENzAbimii6DKalbdMpQytGaEFZdhYwVh8FJQdKbVnqFhaoJqHfP+Wg/WhapHib5wsW6V7hrDccooVrXM+Wh01IVCdZ6TTui5aR49VZpNuKKUUv0s61cY6Q7iVvv+jxS/CXIVcvoeoJ0EYA3hZPBLP0ShdOSZdeKeJmc6waIDqeeQ8az6bS9n6ITl92MhCTxN+U1nSgZ+ied46ntkOyu7ZmsGvLb9SX1pMGYEaPfNwaKohtlsc5CWYy8uMJODDFaOFXh9TCBBVMxZjiIR0gEbrh4RMWYyYtxJRhcQCT6tI4Tls3fjIiOpBwYCF8VaVHxV4UWc6UKW2lcILHfY0Qvk4rhtj9nwVXYeDIUFP1oOMrIAWHB6nXDRRlKWttCd0o1eIkJTb6QgXUk92rcwfEcZiYgvNlVlJGUTB1wXDJopKIqHkUbCvMGCb94MFxyzUwn+frY/8IKWEeU1ro1AlDHRRomu7U4JPxG4zvzSlt5nxQReSQmmFzAa4N8zqIeOx1J4Zz9MrhlXjisLoIe2TWHYpLXn5hKJ3qNSAuPn4yB83uPtM6KBKWPRwVupDIM5loIDdpNE0038qSZ/mAonLgk7TIVyLlEC3t/B4smHVfcD9AvnmOkwfgJZbBIyVR6mnxGz11GumgMbZBwPF4FAqU/2XTuLJuodAN1oiabf4HWHvq+p4gT7tr4s2fQYwUNqRq3oynGQ8WLbXxVup51HpbqY92Wp7u2fIuSI7ZP64o76A2oiFDslH/RyVGn9ugcjddVnIwEiXhPe/nPif+2nGQEsOZhtIfFwrXuwwz6s2OqlLv335Ie6zpN4sqbmuri34c/23pkjaLceEw7aL7zwxpn5/czXU/aQIEAFhKqClGxuVO20gdMeQNwT1fKm0IwMHJqQ/grXVHDOGKyEU3C6XP2PdawVmH31RhDsYetAb1+1bSY4dXCo4mbOVSBre7vNbTHdX7ZIve5I0+ktt7TngvydDKwj1a6AXjtuViMJW9PyqLh1fn6gtlwf9CeGkoo3VqWN/P3nlUcTVpAC66RcgGQL9qQYG7+rPz9/T1nhtRnwm1YhKP2fc1WtuBiWuFvg6bH0TulgP2OmgPq4eG1PDQiGe1hTcuI0kiIWq+a4gMalsMLtFosCnMtWd1UT424zFJ9pJiAjsbpg7Y44gzTwD45AxjB9poBtLHIoXilKYbW6BOfGW0nyajb/z/iqTAeSOwoBqCjpt18bA/e98ZcGGUHYZx9wkQnHRRh5OLQssWUVB9XjUe1XjLeJJ+iUy9HdDR5VXSPMpJRORZ4e1EpYcLmj9Xm/VERN8eoqANZweWMojTZPNr4bQUtOc/aC8oK8a9YvlOSms/I6yi+Bk9IsU7L6MGOZPu7e9jDRZFUL1SPXjIAGVNiA7uX79NRMTHlnHBFpdF89ej4dJjMF7z4PWakucm1aabgT75K9FhssQ9g4GPwVS/P0kmMsNU+afBU1JPy67iiu6i/xvW0DZS6InNESJhHlQHh9x5GNMf8HDAkm1BSZ1lP0bhSMIE6jBmOVeNLIMiyRwtCoHOYlbcjwnXGnMTHdT3w/lai8vqtWRTv57sXVFjI9fCSoEjkHaRctBflvCcMRpi71szXBzBsrL2hU0DjPTtp93LsghMtdc8ZP3pJHj1fQ/jssFpSbWWHfhmlOOr7w56hcmN9igwIg1EJmnFkvAQ0BRkLyOBeqhtGpNuHyqPzlQzoubRuCn+tadL2XneHbWmEAUVT6tLa+Bty52ZjuEQrwcxKfDUjg+HObBOgToOM0dGePQs4qRwPa35ntVGdKiQc0cL6ys64hhvypyvl+l3RxvtoRUvlGLWY1fAUXI23/ehrK0nMAknnZz8ZgX6uo4jZxz4ZFVi7oZmcnvOlBZqCPE430jmgYUgD/EbFUsgiLGtgvo5hK+DTmtPkVxI5BVMz2vh/oGuvPHqg49OJWVBbtE2c52plR1i6YYSwqDB7jSitVLxx43H0iVvBxtJf54ikGicCMmSULvP6iyE/Q/D0SJEaFFpUkLIRWeuno3zJId/yRSupXVoQZMmOtBP8BbPNJxgOGZeHJFxT+oPk30bt3vN4R9dJ97hzLCeZaylaY+NUgenMH69xPW0DhYiJ2EYEWU2hzvqetzsxLQ5QXh5mO+OR2iByCNyKPnhUg/pP1rOlFFgjImZHj93eAUa+boQKZQxlK4MrdJSZLaFlvZ72qzSEPj+9oI/5VRJYQMV9ckbuT0RoYb8ohkeyVXMLW8eTiu6S6y3D8trGRVbhnp/OmKc0uiU7EAZnU9olfOVxKXTMdUEGgCxIrsnXS3ybMia8uwgWncYAOk+dge7H0HAYp32Uc27hpfQZvWcqr7MQchw6Lszwk0BkLxFTIPR6iECFpCmt6sbRwIw45HotTCwjgFdsvswybgg38QhKsSX3azii0mP3TRpTNEo8leoRw+KjV73xtosAc58O5qkhPneFjpmK30j7VF7RNEnlNlKFnM9fI1CyI040NIwPRrK41DtzuDagZgrJjv2yWNZPXcn45VQWCRotDNYE0Va6ls7iuv2Ysde2wPBmhozG8xYB/EnsCI2ip6d1jvvNYUE/Lw//cPrKjnQ4rqMeJGyMTkVbNGgdGMBIKykCc5bxRs8ZW3bFQ1Srfo6Z9iJL+4ypPRPYalZI5e5RQ8KgHhcOF2lsO9MsF0Df2s+uinBrLBpGJXPqLe/ssWPsMOWHzU0Ykb5CRpC2pTmQj9f3ma4nbaBIMNgHlHn+OS1KPiODw2tXBvH4mOg0i3WYlSK0OXg/lch66HnJI+seTeBikHqOg9EThKWZqjjylQ3lSAAOj5xzi7Es/LhkuHTjsH1UEM0kXssAg20JBhkWJE4dx3OJ2/vZx7ftfTaHZFETdBUihs9lQt8L17x7ZRsbLYgtfi8YSTAl5MUG5631sqka9Gh73vFQcPDaCs5tAjtwEtKGr6RFq/WWZ3k1QrBnxskAM7QGnN2gOQv7W+joojxv0gOsPw69L7Q3C9BoqPH5JllutYopO2WIplWLLrjhunmpjRuln47YkM4NXxYz85h2SkFVLZIiS5jKhPTgBdK1jlGXIkMmp+ED1NwUzqFCYN3C363nRbjVTtQTn35CiGthBI+fM8oGKOrqTRXlKHGPXIx55ACP3SamkDJ6vIWapJEnZYBxOp544RT3BpxEz+GRVpMHjzrB1pj7LcoYRoOvkePDjLLReNCabibxRKMsUJ12Sy4MmO8FeifdQIpGogCsotObybFyihQt5Zweza1UnRuBEjilCzxtTzxGWk2M79/oNulEhKaaLy0EpvN8yV2fQ2dARmoKnrOZHBShUUaSayDPHfY3aAz5gnx+zJQd0F1u38DqeNIGCtMCAJQPoy5iWmCECY8mEPcylKuv4VSfQZ1dL0zylJArwsiKZpx0BVvfewRA+bczIfIz/pj3pVwfLBITmMaPFzklhjXrAo3RlKiIwcHmRCK80EvpYITmha2CJa39AM5Fam7IDGXo+61QZwI6HdHFVqnloBRd8nfbp9JoSsltgZOIxpcUV53gOWwdj9JcrQzkJbQdoT0Hek5vqd6h+xIo1odESlrGVjbDn4w9KVwqeUYO/ETJWbDfV5Fn1c+c+2zsYsEQmPokQ6eWWijZi+pMmbH/hbpQslAQDcc8C3IKRioBN55IE1SwvN/6VKgGSQYHGWDvMaydfB8br79ZlFzGpHqskFbtFEm/X6b2caXRUrRIY4vrl4IOzZMLMmyEJ0ZgvCePwQr2TqBRbGhRIH9P1lByrzjl0iH36PocnpIhfEmLth8quaDnznTMMv6jEeApDu7XFTdx4Q4OaR9GH4QBec0MIl5KwRrNZ+QuA3mAToi1HLUxlO8vJR85lO8wqvuhOU529+AtV+qHb76+zEeZnpd+kr6BUuuER6J6n5S1O1LcRuqq14F9jhgRFKDGNx0x8EP89X/Q60D42ZAXvS1P8yi7d93749FukSHlSo2xD17ssY87zMann+V60gZKW8V1OaLccqzbZNURkmhPXp5DTGQAG7jLjg1TSLjhI4I6FaOiptJRTa8e9/vT1lbfyRL1HN8FyDsScg7GGpGBoqLD5+PHtKZjds9ksWs4WAOdHrB9OzEqJMhIU3kokZhGzAl3HQ2KUhglvGoC9zQAO/5Ipb3QKZPe8rDQt0DIVpK80Zh9G2SVriDDmUKVjOX+GFIt5TYiV5H9Ire1f6fR4kcXHc/E3ei1IVhO3I/CPApOefAYRsOg/ZW77bgKWTn3Hswb8vWx7ei5ODeNSOKZhhiNBcCiVzADCw0r0Muc9NvvX2pFKgXMML4YHDJEjiv3Z8r6VmRD44BwI1yJZ/MyVbRNeA/6w0nY98KjDJykfFBjv5jRKoPxUAJtWzQcEjoNNBoXrt53F2o/Tj2hUlkARpfVfXuwn6XWoLoiM0yAk7xymlVaMU5vqU7hfVwFI1QbgnFKqwre3dCn/HhUsOkhLBqa7BlDemcjwMCj3iN0iqRpXQ5TTpH8Lug0rRBmcBB/tawQP652OEZ0rwwWMFVNWXTWxGbEDuchoVSpZG/JZzoGiaID51/CoBwYyvO0z8+nIXmS0w+WqBFbyecd2W9+lXNVsBoHQ65QT6/XvZ62gVKKC9jC5bj2C7Vk1Z4IEAMx0XUdhwH8dBGJCrk6woHR7tcNo+MOba2jnyNvOAM+2hdpy6I+Cid6bpKEQaFQjElGXzrJYusr5TLqa+x3przUZCp7Ov5/3PWR7M4Do42SmnMcMaXiKybQPO5RwwyJocBbyclDSM4BMzhqkMLrPmZnYUugX+7Hi8pDuOgv3ctUXYjdMir0gfY0eTTQl3UKOTsKHzWsC0DvLCKNEzcs/pZhJtWw/79spaZ3ldyAcBzUYHltujo3GRuvc3AjhLVB2j/XYGNQqR7WjVXzx3jOPVlP47kBIkVy5hUCt5qpsbiShZ5deFqC9bJhohMknJ8pPSnpiYc9Bj1oSPCi8JYFFwC7voJrs8JXL7AnLEnOgdQJIOcXGcYeVfEjyYnui5Jm7NAZCvSLB+1ETF6PqZwGIWZHa4wmxhvJA3IsVHAr5R6t7C6QUaJLhcYbt22Qx5AN/X4oO91TvD5shhuQ7ixaOkyniUhPdDzseUXNKuLIaE2i8bXxjOaTuoQrRkfM4dP6SDRynqP3604S6cPoUSdgmI6SzOvn5BwVzxJO1I2KsCzDmaLOdtov+gexHVvVNB7Aekn6aFQKTzDZYwaJvw9IJ0IT43jyZ7uetIHCMNcm8npzqIcUo4E8vFw+GzkAN7yaEzLc4PFjnwBGCsa97Jk6gEUbmhA+7VEuf9QiQzJA3EjhvI7NgF4iNfqXgAJyh7QXG6sZY81GZGilY57/iIyQ0YGurGcB2yrGdZge2ALhQmFYY/M0Bxl7NRzPawGw1458tbeWsfdPRUsFwwhHeZncNF+mhYA8zqG0uUbW5XjtgxsROiWTLTSot6l0S2DxeGoGkC8OKVSh1VOKMBhwnvJ8qTQVCcv+8TTTBlo9e6pl8rC3hGlg9DsR7SVm7Y/jDbaGSL0kzJuFsQjTDbgoaesG/uiUG7ZeU2YsYh4t9U1Yx8utRA8WKRKvgE5jnE+hbKGbU7leDIZFj5ozuEBIwUkRr3x0cmrjISW3dKrnhNtWOGYcMbJ3xO6NA+jlgWl4UzYnah81eZxvCMjr98J0OU/SPMb/JlfHG6Tr6Gq/e6fH4j7VRt4Ir0/L1f5cjtmprhZQ0L2KqvKzayr1MorbLZWhCMQBK06v3iCKIkTzEXlCRfupdcp5lOM3t+eGYVSkSDWPBCcNlrpYByJZKWM+1JKe+BlFqbmdYsE+mzh0ipR9rmpct6clCw/IcJFT7k5loE8A1QnasoemQw4+172QcuH3zzFjCkJXYqppYOTh1j9A6z4RHpVfIXk9wPX+QORQliJA9DFkXuYdj8gLjCA8GuOCqwwYVzKKajqTcC0P/fyjAloynKRbXcuUOpWahdsdHv2M7V2GjjFfCftNuGkC2AQ5m44VfBQG516Xb7aZxetAfB/02OIgU6fW6mNpLrSwjMXTQrDjeyehZMyWsjIE2lZ0NFwUvUHPSyNCxozhwhSjikkZnl+99seKHyraQ3Z+d+AIMaMVt1b+g+YsAsS1cH9u2A+8cxgat1X0LLT5OjmueZeq/9JJEAzYjxRYQPU5zO3T46Vg7wL1eFwn5hLuMJiwJuXB0mRaqz1P2Fc6zZv6JWDpkxzP+sm5kQ72kBojTKazVRTKvYy6IabXjLapHEhbANSTQnTVLfAlGxesHquPGAPZRabEu9JQxp9R8yxrGujRFBo3VktUgwz8KrVJHFXUkB6+0kLkz/p81JElhoIHoPdomQU8cXzGdxTMI1seOs44zhGn30884vQNbOOVRcgJJAL5Vr3k0Ap9QRwq6mynLEnTLttL/vCVEq6zOkq+/+c736YuS+kWwYD7PxmmHNOj8Cw9OE4GGSrdJF4mEJyW3uB60gaKe78AcFz22W6mNZRLJQGaF64jj37xBIoZCToaVYYLBaWqo5lyCUNiGUTSP5f+/vIS7TExvE6he/T9YWH80ZbZlKQThRtEeoMwMAwFPc+KeBoni1KlHrmHXiw2WmUP2AOB6GJD6tcrMDzhWzQsr7OZD4Uac6j9fhXYC76gCJCflApA+B/e59VOCKmmAeW9oYUrlVcJE1r13vqZXlf33GjFk1F7u6HD0BTQ3BeVbYHX03re3daFHOBpyhSjx30Mo1J0cclu2jaih6XWCp4jVXXroj8tTB02U4qDXW91pLaeV+EpoBNQwgP3EugTSZH2IrTYfMbGV+SbyCHYkLGViBcIU/gRD4yC3XVUpgmh4SD6VHiFMCENoPm5kNR7yh7PDdBLItZ+m3JqAoA1XFmevIQ0DRGrx5GyZs8c8qUpuk1ne27BvwRRv+At2yErowAZOirKCEMUjSrKowhhthHCqBFxGL2uUXjtEVE7xSL6JEgYIaq3Oif3yaPVq1NKOh1WeOmoS8GTPGOywcRWG+qkV4+AGm9m2P+kE/SzhBv1hD5PjmONB8lzNCTJa8a7NJS1RxCuNoQbIrWe3ZSx+EzRmo6YgmiiY7owdNy633s57rZc9saibBgnuYXidy/kPsGZl2cjiOdHzo/vC3stSOjVLK97PW0DBf2SKHkdCb3yGTBvx4UnCY1KmsSY28jxKCiv5N/mzSuawePHIkTMsRMdilsnpHNcKjE/pSLhPehjRossdA0Oyby0GRZnApWH5EoUXbU/oHwqIJNivbVSPPgiPmf2UnJSBGH5RxcMHl0yfeCnqTLQnsgyOHKcUiSMpvTnGGuS90Dj5JI4XmzJTqUso4BK6TBaknFVyrYW52uN9O8Lhix0wxQiG+fR8C+cqZMlpzilCXhipI0MdFrNDIhRlGbGJt81gwPbq/M0UCm5LMWifVkUiici/NTMSMGk1UVwuweG0hjRA6IsbRzCiP8Puix4enGnvqpx104xBWGesSMHMIPXa9NcEJOfqCT58S2UplBULwpoNJLq2LXqkEg37MsThC+JnbiscVfDJjgeLR33bsvQSNJNjanUGccspcn5aCwMQ6nqlahkldqydXV0wJ4FlK71gmlRk8sD/nkWrEBFPEgfpPUUzxKfQ2YkBt3myVkSLVI2UCYOw8UXR9niNGqkFc03WTzPt28rgujDeeqGMoXyya5Oj87PhU8zEBmJTcogLwguPTBq5biO7OcpA1XjVsbvCF4bfse7fswQ9vd8jdOeboAUufA9cenwfo3raRso5JtrKUi0cvUwlO+SVt2jlIsX11KgoAWsiMM8h5Evd8FqxA3siMQgkhGKN0V7ZnxTZOew6KPvYPtFC0/WKOjlfpHywtx42nA8CYQC2CgqdSVtcFBn2mJU9gMYxZCW6goxUwgGsto1brZiqYjUVsInAavl7Yf5llSF5K1IUeFXMySi4KQoDuFMQbDQSA1Yg6XsY8+u4Gz9CAwPUccVLaIxGm+BAkbg78iA4yrsHUMu8NHKU+uttYsGKdzPxxZFNL1Hj1qo82iWsKdyo2KyFzcqgkgNrvd+uCEBGR6qOYHxgytD0nza/644GFkg39JwOXoJassOo1lTal7LobUd2LUebUsgrd5FHTcrZTM6OFNWGO8oTcK90tA6ULUTXq9lWl2yJ3cN2+oI2ckGmPIE6BM2xKkZXE4nox6OkYS6v52IhNO4+JVja59QtIwdm8f3bryTP62vh69DnznOuTd3VHjgoWScise5yaPvGUfTSWeco2hZyl/LTpM1Lht6TYqCGc/06yai1wIoqqaoCPsXyciw8W4tD+NWa8EeNx5Kx4zoRKi+jxHCjnLQ6Ek4f1GekK+HvIDJ7DS6KdywX9e5AJZrknN+Bbpi/7NfT9pASSK9woFxELIGwDwRcfqzUCTieJFSAO7tZkVjKC9oWIyCRfdqJBRM4V4bOSo8wnymhf3+6LiDiKQNmfJq9f6I9m6BkpEVJo3DUl21gTZksvfutROuFPk3P3OlY9coVJXQNZhznE+nwPlV4YYFrWqSxPohMi1Dv2iF1oGbKvRzIca8Nb1afk6v4KEEmBtSFJi1qI2vfl8Jay8iUN5ojj3mgqJYEnhesc97dUoFZSjlxAEVmbxutAd92XOrwyiNPynKxtEoUL6Szvf6RtM1rp/HRu/3Fx5VmpFIEl7T7/aYQiF6nhRKoNNKNB5RY/BVFcTTY3ur4eLNs5L0myO9Qx7x50RbNMyNZ4ZCTPvl2DBmR2I5FeUZK3plhhThMgxLi2QOw7EUT9cTRduTrvxFJ9Xt+Nq033DIphPYHObhAhv2MrhID4FRTwSeAguM1v4ak5EvL14lL1KDH1SiaIMomhaUAhFooruvHtHH8z0SAHQ6CUVnpP/a6zjJUjzLufn6jQTkxDjOyQMdEWnjotOVaIPa5fKLY0apSJuMrJgtIPognikL7Hh+wo7zV2SHc+t9QgXz4wW68JTjAo9SRsDUWy6Td51cywIZ8Cb/z7If2GtRJIXRfnO8pyy231/zetIGSjTGN3AQLfio3HMrIQnpk3V4NhJU5GlCWymdwPAERgrnwcZFz6Uw+gWTYBZkrEjxRzNLRzVMuCT7W2wFtF6G9uXRGz9CPIgwsymGYUzlok1gLAxCPhOm50spQP0kxLpvGDacQ0aB6gVsLY/Savyfxl2ld7wOZfRoALpIlIV19BK4/lvRAjA8eYZEh9IcGgzTi/QaH/St9IDCoza8vMcDcWLNw1ywiFYqbO9H+aQUfZmiq2wvUg9ARhVfI4DoiOMuXDajoNYjYzx5T+9fXW8tRcM+MnpVAWkL/YwkNT/nONEfq6EVj0hzjzqtUJsyI0SGcJ3EGELY6EWKWEbGCX+WitSL8vg9l23RB9G3ns9THcyJ12p/s7Fc1Bu99wRpjwEAe3gl915zJGP1pgCk9LLlR8u81P6VrvaID+VOGe1qM8B5PDUxwi4Gk0o36VSQKbhH0WdjMRWecq4ai0ZgR5+tJgpQq3um1YbcqnUlvfUk/PeeuN6uByw8MNJ5l0Nme5H4xqnhI61uRalj6qeYcjjtFRWrI6tRyIuETmeBMinQho95yzruXzKb/3eEfsP1nFLea6rTk346LfpZ4Wmhe5+YE6cxjfcAVDajdVY4/EjLr2jl8emup22gHFQuAWS/nErWrTEeLWd5LbyIEN7D46SmMDjX9i7RTONK3E/X0DO3CIJCc94JNDAt1TRCYKQloDqCYemTgIrAjivn2EyutuSX/ZlebldrDaYWzE7QumzvbZmH2hoPq1gCJ+VxqC2/vSBvE2rXVZDwG8At3EcERyHH7Gd5jJARkwtkp1KYah+Vd5Y3sgpv6vHR+3MYKELgxW4HuqU7xzpdogv/zrvBmsEj4Ur9JbpLGWQEiHK+qklAG8iv4mIaU69q0kUBI36JFl7EJWmGIGEhMGnQmkvtTrML3kZfAunQI1XoG1p7FwlG12SY0ZVUwOS9U+qFBm2QZzzaFD22v6ae3qcu4pX8JcVcOKq16sWC9px3zITwV/NTaRNOpXCbtrCjBACOMhb0AjuDX0Z2UTL5+2CRczYOE/036eLaCg5Vl6W/66QIsu5jATtRbMoaSMFv4xuSVyr0XylDo98SXoCRcqooocPe5awbYXwnDOGixnfcoK0lC/cuICnfHGmxaUq0PI6x5/yd/HHiLadbZKVsaCxwT3baa+/fasuksKMdO9JLOap8iaIMrvM6TmnS0UKeekS4Cukjwar4rGs3DdaGm4TpUoJIKVSby/UmiM/SS3d9X+PZaOCzXE/aQJHBUQxOj2p4D0SUCblhvZNJKND5OSEzBDlETMPrKsNF89j0I5xlBOSRG9W3pN1X9wyPQHvKqVzNQpbn6qeUapw+woguJHWvw6xdOWhWn3LctWIcFvEplL2VJoVjPzPe7UGGKFyoMZP1fpBiegXMxEpK1dGzKuEWBR/mwB22FNALiLAjsod59MgOZYPFdY0CrSMhgYiHJW8MAeRbh4QtFcrIaTMKRYNDYfuWMuoTQ7ozhSpjRgXCreCEP9I2Ux7s4Hr1aU5KA8YjFUbRUVKrTRk8RANUqbH92XoIpcKUYoS36C4gsh7E6Dw4uAlkGUY0pogjVy6+DxVVp8mDbLrivT6N8ZFO++nvho1H9lQAy2ioKyik6J9euzz3KLi9tMgODamLpScuuWtfuFdFpCC7PBD9RylnRWTpMBBErjA8XXTtluVMI+u+GmzIFYuc0njiiTDJyjWfZ9E5gEevWPCOto86P1uDN31u/KZRSfPnlBedHatrcVmmlFLSoIiOFtNwIj4sUjmcVcePGdHbgUPLPXklVPwubyCDco8f/d6k0kP+XqRRVF6O8LL2EzoKTJpF42oX20fjlfKbaKccjf48F9RjS7qFndZZD5PzAIvW6jTzGteTNlBG3UCFR/eR443c486EiYeVKLwPABEjjOXhcc/du/Pr1qVSHWiBo4pm/s65UOmPtHlqnBFWc4VcBHGuoQH23PNlcXslHiVtAVNEuE5jOBNQyGRXpnN9MogCj6JAEiwo4vOjmYFRhMaC26AXqCJDLbEBvU7zES/sK+IKDdhvXL6Y0oj2lUeUikWdXFvBEmsbYYN9SrjI8KOiKSOMtNZzclyoaZUie4n2NEVnVlNxTkfUXkdkIhuPqqPKaCWMvV6letQZtdbOSn5KcirISnPJIJNhGdzipDWul7Rq8y/bW3uRNVV5ZFHwRqDTX06XhHdgKALmypM0RwVCuPN02q3C+GUoMy0qb1UKtWEahI87IDBcE+ZUJtHzss29IrWS9mglSgOciouet3nviljgFIWw5dBLJ988UrplbY1TYFTyEIq1x3iIhk/SOKgbzfsfThSf5Ro8ncooTaWF4j6mYoqaJ4xYeLqGvEXWKn6Rd04DEUBQAZq8HPYU+abGcD4kPTFSJz6rMFK+ONShWO80Ijoq+tF6NnoNXngO7JcEKpWUs2liLVavJGC0WlHIkL3pDp100clRZU2hTuusBjMCeiVEGKwIU+pQANKDPgaLYN1J1+nOGoZOFFtU+JFl1WQCFTJ8vetJGyhJxgNkBbLHw9lLGIWCYX9ndo8TNp6JHt8tyv0hhCC2so8DXb3McKcUt8mfA7i9wID6CLdzfM5hRtWIpMiYaCJReProQrtxRC1MoVkxWRtwVbeiqnNT4sbUMpjogaMVhddm6FQF5Y8VZ2pe8yT3cVYToAb/0ZocGGHeMI9eaSNvQnc1Zc1nLVrGAmnPX+fK3TPCcL3nqLmkGJnLtRbXJnQptJmqyBJkITxT8CeUE1793W5UZfOaQayUzxEdvl2oWo0QPNrQLSLwUDYo+Kl9IMN0RBkp3PmojJpKn9QxUynUEsYao+iy3zyc2oMMxqOXwT4ZIxJn3UFpTCewjw07P7NYj4qPYyhika3kEsBtdZSFMC4DT88n2qMNtOEJ9DFuj7QQRm4Uk5b9iOkF20hZ6KLUQL8R13koUP1eep/Jd9CUUaBXBWTjq5vhde3JUOp+nQ0Q/Z1dGH5KLxz16oBkmkjpHqMD4s6tB5IdP3Bnk3Qunn28ThVLl6LecqAV+tYDxHHxIU8xnlPblu5ibyHnzSZ8tCInrkp2SkYaDLcxi8lbpHdGljgW+RhU6JSlJc8pWytaMRwLGTS2BvQ65HyXY+AHNvJsaF/6HrW8WBjvdNOxYzeQi67cqJEerWeP0q95dSL4zNeTNlCAxPKCPioEGgYEosHDlV5iIoJhsS66w0C8GxPzSBe6SRBaYUuZrx5LuV5HYDSSpwJrYeI5vgCVehOn3hZ7s+eoqMjEJWxmfrLXKkJdmMKMcPJQqK3x0TG2hHmGhZPKRSYAdbA8RUb8/30fYWi5dA1p6YyqQ2H3yK2gO0zbgIYED8OsgtOlOVswMSEtWLxKuDP0ifreIg1S4ok+phvWLIt7yRBNjWI/h7WnN5Q/RtOT5YVHVMBp2E8X5RngrVAk40j4CRl3Mro95E96D06KPmIJtJFI4UWDIEgPXp+UrXjNyEVAfVl0T0V+tsGduk9vhy5vVwgyvKlIkHx1iqioqdy54FTRiiyBHtqfhDoVIz8XPmsBlnqMxHhp4ThezfluEw6OMyDNoOn9+esJdCrLe8YQp8iuyyBsPW08jDyjFyliU+AXLjD0PO+fctXG4UVcuZItmUli0akR3z/pmCmfpDzsnjABCLe7mWP03nyhZixs3MVpDSaHGR1xfJzSaIpYBJoHyIcPE89KGUZDUCeJ+IwMcGC3kLfnWZzqOLcDGNygHEriTVEs05ekS4tun+vdvO5yKtkNgLOeCDNqXvd60gYKu+HJelst3L1gh3rJLcxsCtiFPLyHho1biOcwolv4ZQDcXkDKXXLSwtkqhqV3s3pdA/lm9OgZYFiz+0u0pVrEC+z71320UcI9a+20hiCaWg+d5tJ9FChiqIaJQnvuOSSwXhZgs1MwOmWUPBLbeBn7tVSHPDUS8irlQYWuYl2m9UI4ZZ2MpJIrJWdUKiIXoJj3x6dieiUj9E94RIcwgZGS0ZHZMg6D6/KmRicDQUWwFMjLhCOjRaThFyn4yOj2ELPBmiBIYN5DGNAA9KhLLXd76r1vP93gHVx5dFO6xeBGI0rGjxkG3Pd4ZxPXd/47uuuq+kfQCDbcbEM/wcJSr78atWA0vkpQq+ePr92lpEJxxXuuuIgLryc46qBr8aMihwDYpn94vSNd1esULsdaGk9ApzB0nJvj0oF4kR3l1HcVaSAvVlqGsu38rpezwehHvgd8OL72kk3bZsDixdEGC6ObhJHvlYp0AaxhonyDOW+kPzlWnJ8GSY3VUZ4cy3djQUYh0ceICPF02ndHpa2TNtd9wD4wvFB+ylmxdaPl/zBkKmI7atMCOqV4LlQfctwda+P3pDGG5tPDe4ideMuNuz3eXjhf++KRcr2PjJGfxGtfT9pAkdDz8K1+r5tar43nSAlufIh2bjYGEW2RhI3AYlxGMWgYWa5NApPGTAncjuL0GvcDpfTuey5+363n0YR9q6VXMd2wWMuq9e6KChuWUKGXQcNMa4leo9Zha5HBU58drCtRjrI9BSnXjP22aQoH3/f5f6YxSrASP+lrkQAspZhUWphCh/vxtuMWQlUb/RIkQ+DGXrdoCzb3YcYD10oB5XUFq2GoYlTiDzX+tVMQiWZuCccjOrddOB9RimuaQDQFQtycFUXtYwjRxD7eyFx7GSEqjIuETlMYrkajPaNpppkGvZvip6LQMdpam4oFC6baCnmFxYeweUirSqWhUy6q6SjFQcVAOEqxWQ+LsyHqSkPNzopWmGKtz4S3hL3vpQeIoh3JFdLZjUAyG4CKy2qmdNJDvN7H6emEsf1AFNxGLYtFc8cPYQmMHiGiBeHbQBPoCAJb0cPkGjdBBe0RksKR9kg68mOvlIeqwTK5UfPqNNNKW4+lwi7HHPeSiJdrOnvcnu/TDBXinV0aNq9nvxnbekCJx4hnptbcEA30MeaMjsKZnpGsDyvMvnDsaL1m95PUNo2YLDN68T5D4kdAzs2spet7hRKOFRj6i4EBpYJIJMsbDzqwX+960gaK0i4KG0ULAQKWwvcUFoybRRpIjByClumB/V6aVwBWOXYSnglzrq2R1GsdiOV8dhIhL9jpkHW6z/dEAyKaYJS/9ugRLDzIQjPKcyO+rtk5ndlfVWdzNAzS4cP7+R2PlHEMD0sbOJTeYXqFSsuE4ahHsX13ftbg4waPjhxXaNeq3/fz5OT6/JSOccPUj76ODpB++dy1NgncCv3LYHE6Ij4pvNNu8eOAyH4bMMFVsPeQPg2/BIZRFxlISi/z/ofXDxM6iXHCaxQ4U9hwQtLdEKrRDQKBEWJ3EPax7xRIkHbSxLueRs60VEWeaMxIb/HNra+q34j9fRh+x7taxFC1ERoMZJMkPrGVsdJGIfiJrNzANHLrbsiQ8ptRAktXAzM9zRM9rAc6mo8URWbo3o6oq/jZo74cO9EpPHdQqMwDJvtSUUHxpBUdM3U0uMRkshuWW3GWIGIaVjwD8RJlqp8G7G6xEG3qCD+NIJNJOoWlwuaT0nVcefrB6ltwYBhp7Rnv7wUjrQviJQS6jxDhK33BfWU7Uxx32bM81VRRmnChGE0LOfje9lg0J+Ny9brnCaDHLQi0Xm7RIjruiAd6/hlxtGcXaROvfT1pAwUoxLDVffBUSDyy8o6rwbmowesqQOCFIYGfXfv3PSkaKxzPlI7SMtULxZW7p1G0B3ZxrLHdaOI4Cm8WgrfyLaLjW4JvluJACy71QBEX7P9WHe1txWxa66R4tL4KBTPVQ4LOa6oQlt6j6jvQe0qYF845aVRSeJTneVyBgNXsONOASiIk2ATCUu7J9wO5cK7GTcHSedNJgCmPwOwhYgKSL4TTxS6M5ilsYZDV6dLuTReqJAqIdpFbCSoyQ+GNEtRq4oYyPhqfPYUd5+YYNJT4mby1lGBSdNDC24quMEReRcdSKuWpxZl2stcyDBgznhXpoldHhceCWsLrITo9UDhIg4Pghu53o14x96t4OqGmXeKveLReBPRSSRac6x1ffJapBXqlhKeUf0jx6mRIZNOTjg8nZAARKqv5dR+TD73vJVF7fTBDgMpGcHXYmWKl8cO2AUzZUBFfYBGgaNn5aUL8YfqbL2t9lcdNZbxJJdppqc+7Jmf1flRM3Wtv5b15TUYKhav/R9lVMNsGWLQzUmkizUcaOnv/0QP2CRSTRW7BMbXEnkd8vmjejQfyfxdMx2P4emPFkmeMsqjIVg7RNBwEhLR6nejlHmyBr+XHqCOSM3CKwHjJguAtudnO7SiytSPsfKvyYyL59NfTNlBciRfy1kMLVk//6EV5DHkGhHQKZgG/kOxFSzI+zNN0JvJwl4yiF1B+95EDzr/TvifSzaMGzkT/GLkBjLC3ilxv0LEztSOmkDIdM8KqnKKIcD3M9asYlwrtysZX+waGK9XV1z05SympbqI4kKHioBFzcG3FW7T+yTiu6KiQYpL+8CosnLyPqjY8SSsOPx0TNsVJYcFmTwrXHz2HDA8qSi6o1nz2bNqg4xhQzYBCtH6Em89feu2iWQv9IgDcEd61QT9GKcFbcygE3TgjvpWuQeHceY40wf3wxA2F5IJOMgT38uBaoMbJXksQHsD2LXU0005mhP2M1Ga2cYdtIFEZsA17K1477ZfYRlaajNeJrxzC16Ojoysyde9d359gWsmEPYzfiXOg+dPuRUJt1OVgnFO5xzy5pzogRu4AOy0EG7to9BadjioY7vFrPQ8BsPutGWUiR+ItTLbC5rHi8Jl+qXmOXqcuXw8MJrbnXGb0RTZcTIECaEOnjg3rOLM5p0Are6aJZUDYWjbKUsYIaHghFVWnsu93cRXRMIKE/d1Z7soB4EWh5K9tYGSWReW8POpRcNJLbPl30ZvSUlwP9dqlHRuPeo7aRDoFov/9+XHp/jmjdpPRpJvp4k8XjX7F9aQNlJFGqT/oLUnxs3dHCaXdCbbTM6NgLObYNHA8z7eMEIQIeiVM8ZiCH8dea7x1s+84tNcRVERCRFBvIpazoNAnWojpLHwXSvIEiYyQYgpWXWdFlfa6YxCzFwmPpjzZzcMk3KtafB+1rlMgPBHlDAeM98mITj18Kiqv+e5D6R6kHSEHOqq0LFwJyPDiezpOTlb9XjBipKBC0O1JmIER+3vWS0TBaD+P+jyszwQVaSj6s9cDUzTZQQi2mzcjd0SvVHCWFbUKu3fufdNUSNGK/pHz1MCFv6AFcGAYQTQk9RqAKlRWVEddi/f/BBvKqJDArqmSAPXozn3BXdY4eo1UHkyvuPdPGmGkDjDPMjqq5Xwdc/xYc66EzZUAj5EjgLjuSRRlAnEU0Imk4vsEeo+uDAtf+3NbjylivbFbCt22YLSDsCgScU3loo66KUM3L6iTQmm0kVDUo2os1BTMnKTx3ho5ekwHNHMJq/VcNwdsRZ8eZeXpJH5HA4Kw5FjATEEVbDJjNCWVIvWIXUAvd9xGsLG318AEZrrHT1JxHTr9Av2vk00eUV/9q1JXLl+ZpgtUdAyq1aDh4Mfks9bKyJGcN9YTuogt1LvsImwkRhe7/XJc03G1V0WtCR7um/uzSDP1rLqOc9tVqgBAmYjRTf01rv8tA+Xv/J2/g4jA3/ybf1Of/c7v/A7e//7344u+6IvweZ/3eXjf+96HT3ziE+O5j370o3jve9+Lz/mcz8GXfMmX4Hu+53vw8HB6DeJrXjIKqNgKW8cdLBTeAJeyIFGCz0JGDMOWbKqm9IiEWM1N44BdZNOQeWlESKHm/uyogtfjRX1ulmyHEJvgPU0EQCE2tnhXVTfvY06SCtUbWoHEnw03egxp+/TQMCv5CVMJGMwXK3KNrlwtndPHN9E5+0o/9Okni2jUWrQmvXslmzlM2Gm/SSVBYV8CvdbURhpmXjQhhaz9We2HfknbS5jAMuVOQdihaMhg3IYWup7GCgw5Hg0FvrlWJzGqlwONShcALmSCeCetUGjdldJSIzPi7CSQCXca2izsBGFegu3sGfKf7HuD6Q2+ZZrruTHSxn23pFWhOunJeKgLLrG798K+y+YPpS8oyCu8nHbSK1hXw0HOhkV2BGT5+AW7hlF2ZI84v9gpswUZW8KLXUoJSrigUk1pFkrjphHENYXm1UvraNiqaLPXRiW303P9nWir+K2dveK9wMBVXnKfJvM6uqvNz894jN95pGg0ip5GAXTaqSQXvh4puJUx5bxpEXLxnuR8KlLQ46SMOKoPpdloYDHFKF5A/05aIY/H3lOK9kz+MkVL43KhX0ZZy9eBixO+OxpzwnmYDCud03zYIOdJ1VBEfKZ8u4C55duIYt96LDnO5liuB6gnkKeDuFampJDTkPls1+/aQPn3//7f4x/9o3+Er/7qrx6ff9d3fRd++qd/Gj/1Uz+FD37wg/jYxz6Gb/3Wb9X3t9sN733ve/Hy5Ut86EMfwk/8xE/gx3/8x/H93//9b7yGtN/ba0Bb0iZk2VhsPVDIo4Hpljd/gCkUCOT6fBzhpELHvudgfwVsJKmhW/aYfdoB8rZhgk8bdKUBiDoYsVguyJdNElDIUsSMFkwS3NERCRE19xtoYW5f6bQMSIyEe+PA55SQoqFQL4KTIC3loeZKsGfJgNecra4TnVKByXEPj8vgbESej+2dC5al0C+tTLUOoIRMH9XUEToeN7aIHPUI4dS/9z1wYcooFUwQlcDKu+y3vbKaH6ijhbZnU/J6vmAlhXmqL+n9275GjJeC6dTDhznyC/HLfaTSZONEB3+31N9oagfsiNk55XqEOrVKZ5+2uWERWgcO7GPvLGZn5IcKUsdFQ0orCCcj201TtfZLboMsTO/RqzXYJ2yv3L6dnnjUnj8BpYLc6OQkdp9SNg9Wb1MKp0+xPea9/ZDtT1EiwutEQ5w75nNhgNH6ZHE03gTnMTfsRI7JF/MsXBYmYQ+LohK2CcSZ1rkGr5M6e+ym8RQZ8poR8juV78qur1LbACg6pOjJUXJGx8HbkPCOyWq8KBkJMw5O+0PjSZHW+r5rObLH53Xb3ykiP6InBVtPleq/xqO+K73XEXSAp1U9kqT1Cv81n8N0/vpa1+/KQPnt3/5tfPu3fzv+8T/+x/iDf/AP6vPf/M3fxI/+6I/i7/29v4dv+IZvwNd+7dfix37sx/ChD30Iv/iLvwgA+Lmf+zn8yq/8Cv7JP/kn+Jqv+Rp8y7d8C37oh34IH/jAB/Dy5cs3W8gFu+CHXi9SluTy8/soZX5fiv3elHT9iHEwgT+sSBuvrXY8ClvJIwBkTSo0HI1wdrDVMxwy5voU/TbikCAGqo9JTiUYJshrHEZ6ZKCxUVsvV6E6pXDcK7d9tDV/zs97Q67sebMY2BmR633VHEPJlfK6BWLEdFOf67hhPU/cDGOJxg2Nx6xaEuKYDZzcyGI0xYXhffeyGULF8JV3B9RXA/U5er3yquziS+20j0uOoucoCaFQMJoWaByN5kkBpXX8yG4Citx4rxavrqfekZCkp8l6BQrXtW9k9Ejp06xRGOkZCjlk0O0i7/5uRP0s3eBRUO6BBaJtcJUSPQL5IhWpFP1bISANYv9+pBcWsBiV488CsizVNC/cjdj9fz1wEJ9QjZwrBUX9iCumsVx5JXSCLJjWZaqWcK7mhDrd5m9vVyE8GgeM+KAjeSz8luwquSbcH5iNFU3+aZ7IPgbrt9b34hm/EmorHwv9pmcqP5vvEZ45H6dTOq0IhcYD04Dn6AxgRm2exiCsOk2bZbAweim6TdTJLo6fLRtUx7T3oChJja2o25gflhbMQZve70rGHMwokNzvbsvTSeqUKOs193g1T2TrKkbVb63HOM44FZStUxSZvnLMlKG52GPs/+0Uz/vf/368973vxTd+4zeOzz/ykY/g/v5+fP6VX/mV+PIv/3J8+MMfBgB8+MMfxld91VfhXe96l+755m/+Znzyk5/EL//yL79yvk996lP45Cc/OX4AmFIsojUgyrI7GngApuVo1h5TIlL+tPI9zIxGDH9XmNeU4f5yrkXeNtDEePqzCccFtfH7mZgAeYtMxVDZRKYYgmOv+/2BjBcbkwLNG9Wd99upLjtaZyb4I5hdbGybS545OyMW7OjJjagGH7mPwiOjJm1EjCOABm+9q4dCmQrqMCXD6IwpMUWZaplS1gzjoxWVvNhwZW+4QRls3luHwoRG8C104sjTHPRYNF4ZzjJynaYNFU1v2Z/XiSfhWcWxlViokLPSUBzqYqk/U+7CoYRgtvI4tvBOmFDkPiig2M/jAnmrAXREjUr4LnddBmuXaKk4r6HpksompIR7Hx4BFd1zb+dOrcSnhePH8UsaXXRAuNfDYOIa1oy5bSQTD1xmllHb926lGINPt6Ecky7uJt2oNoLzlFINo4Wt7LM/45YIG0ae6OE7b/vnQsD+JwjQkjE6wVJKPbkXq7tQjQaHIu5WDUz5ExwvBfcgbIW/PbHLQkUvXEi4vA7qjxTvMP0kHkTDQY7bNaHzVFXns2WR0ZJ5oNJV0XSh1AdXd4vxnFi6cLjf57NlFptCrvuej3Q48GiyQifMgD55GfYw9U45hrk6PTTqHg97hCc6jT9EjRKg+9eDMHrN640NlJ/8yZ/Ef/gP/wE//MM//Oi7j3/843jx4gW+8Au/cHz+rne9Cx//+Md1jxsn/J7fver64R/+YXzBF3yBfr7sy75sf5GYhX8EGo/i3tpqk/Ua0EsERRxhgC8m8KjF+YgY594FtzBrdt8nzw29nj0YIE8AdV8A62WNR+uTobk0oiBD1j49D97NwkLtkBku3mMkjosVZfq5egqBbMPAW64rvAdT1LW3dX8yJqj8ma4hdxVM/T4XzEGPujbttRyo9etEEKMmxNudncQgfBMt8IjTSosEUyKB7pHCwuLDlKQJr+m1l3BMGjXZCptXpGpzeDz0rBTZr8Xz9SIZ0ts6jWtRmv19CbqKhggOZvwIB1QGN18IWuGVh0lYC9elLM7HEmFwYh1DZOx36rjB3Lf33l1pRe4GWFSIilA4To3ojhNeo3nk5Lir3oaLGF5zAHzvVBeQ2xqL92T4EB5ULlSgBeMOwSfs8Hcviuk5eu8WBg9GL9TorBTjUeMtiwBQ3vlxXUv7mGbYPMYog6/FFSRlAL+SIV9GCZ0h5wnCn9EG0qrozjVSP5MrZ20Fi3ddprHg3U8tBnaEYpx6YSSj/qzIzTlKEzA+T+yUz0v7W2mKhE7GWCTNu5XjQDcWvJDmUuMOpQGDCfe6UCcApxyPE3q0Q+oo7HWMV2VYJKXXiuYtfhfb4XUZmZfs066nqDhhdnZuaRCT94aRQXAt8gE/OnVK5n5ODvpnut7IQPm1X/s1/I2/8TfwT//pP8U73vGON3n0f+v63u/9Xvzmb/6mfn7t134NAOQVUAmjOkUyheOFogp5n71zGi0UcIf9YN/PFwGqcVL0vYq8kBjT5j6fTqHBYRYt8rFBs71q+3EC9pTHSQENwV7j+OkICUYCrbV5e9v0lHzdsP0FJH5HT5ZTmitXC2l/t4eKvVh/4qkBzkOhZMyr4uU6Xuj4UQg90aHvaCU7hCo3VjUZYIpBC+/OnOfjcPS0PZXi0Q0Jx1oHqo+Ff678rzyOlgqajVG9m/W0QO2RURd/HTsFgAtXvqHW9y5Q7D8WCwzp8R4x26unRVfAz+qXbJhrXzVZlhBEeWdKLx3YRn32epBWrEsFqAic0S6XbXRF46YNKfQpMV4OI9IGhT5/Z3Qp9/h7zDYovHizjahGWOSpwWGgjC7I6NNerD7NBb7g6/UQvL9SfwHIAZDhcGF/jNDcOr2o9dpcrsTMENipNjtpAqNP/n9SoJtHY7SE50sfydOE6SPnap3G4d4Kx1o3j/6OOiu0U2H8LBygZdNufNkGdr/5m7jKTt+e6wotEqHj05ySp9ocX3XKDc53lFW2NxnANHLGEW8Ij6OuieskX9KwtgjfQA3hnb0P6QvbH+l+ODfFT9Kfkke1TDMU9f46o43jrmje0/G1jjD99TrXGxkoH/nIR/Drv/7r+FN/6k/her3ier3igx/8IP7+3//7uF6veNe73oWXL1/iN37jN8Zzn/jEJ/Dud78bAPDud7/70ake/s17ztdbb72Fd77zneNnX9uKPi4bacxvyYIkkXl0BPb7ANor7iFyMT+XkAvIgHDjRTlzhlYZ2vP/gfY+7CcSXT9j40mwmOCRMjc6oEXc0rO+8CI4D31HGxmAMe4G77DwHV40MrYhtpnkeGGV71w3J6HSih5Pgt1wwhcYsh5Drdprm1KCNAi8ONXxV+tFwXkIvMV3WRjgyDglRLXecZ2PVqZgMuY0BnTDdePPhFEC7M2hZ502L2Yk0av2WifCtxRU1l6VjrDOmGrrz3UbjunZqK6CfzNCcuu5lDaIVkAyCi/gF8MwYDSPcDZw9ph1c744en1HAA+kkRCO/K29KtC1HLqMcCpuzss1iVenAOV69bbbLIV7pil/jgrs1lFLKVHlTBqmoPFT8kE1PDaHTnWUchse7vXYRgv5KPbzUhyMMnrEw+u+otcAi1IooiWDLSdvtnX6OGJoRol4Q6d8OL/RBQ3ptHFNPoxDAjQOXXnSsK56qKZ7S7N6V1gilhEzL2C99drEA9nPNIx7TY8K6wFL9ZfxQDnihmMxQwIdvSfMRDO23jJ2JBeYEmf9mdMM9U7VUnJ8P3ggUKfjJzvlB5OBhI/tezh71H/Z8kE65LoXpPb5Ptd53M9yvZGB8uf//J/HL/3SL+E//sf/qJ8//af/NL79279dv9/d3eEXfuEX9Myv/uqv4qMf/SjefvttAMDbb7+NX/qlX8Kv//qv656f//mfxzvf+U685z3veZPlAIhh2GekCjJHaoLh67C/KZgtVMWTMSJKT7Xw3nqWPSnEWK64WWTrR9d82TWeey/D+1o7qqJXYl97P74vnYDIUOdBWbrZ++ApBVndCRBqw8s+rE8AIym1F3YB9GIz74A70iK+xmilyjd4usUfiXF0Tkq4IiqACVKrvQl+78qeYXQXcq0hOyxK5VsEMY65uuKmkCk4DeXK74N4t3dfSDnVPq4w7q2oCGkEYWtFt3rnHJzzFKbfQjCK1nffGRq/oiU3MggTRcrKYPETBEkcRytxKTiThiNFgBbAJfiG45SNu/FyRp9TjaAMf2786dRT9tx2hD+prLI/07hmmOzwasFDrnDNVzgce1Uayvaqv1ORVnX8jFqr1XFtzxeWDjHFvQgfo8uzUUzHC9xLAZqCv0DaPTHC/iesDe/872Qo7wZ3ZhyeDRBGSgDAI75EKZ+RU2JjFLxU88W6plqnaI7T22kVgcGdTML5iOIBKzb2FIro1/ZBfuUaDS4j2hj2TM4fjxpPhwKdBnJHD9jvBKITAUAnrag/Eo/gTtI4R0HlBNepRq1jnb5DDH3AMUdgmCy1th55ZHwaPNROg12NAzgYDFhTR3r2gvjZ5Qd4o+sNTiQDn//5n48/+Sf/5Pjscz/3c/FFX/RF+vw7v/M78d3f/d34Q3/oD+Gd73wn/vpf/+t4++238fVf//UAgG/6pm/Ce97zHnzHd3wH/u7f/bv4+Mc/ju/7vu/D+9//frz11ltvtPhWrI1kycAEwHPhB9Qi3CMaUna3poIN/GwFas8IQQe2z1LKP+43kaSfGoDh2ZWojScjScxldOqnkIpo1j067xkhAyjX/nMbIg2fvFho1QFT/+sED/cdtgAyJNfPsCzlmq+dRO6KikxbSpDTxw3IG4UTVGGfJXT2GLuJHPO6kdWQiUVqfrS6YCFYszkbam70SZ3eLKDGRzfmmPeCM/Zpgm2sVWM4byY1xmlE93HnqBeURQkXNpOKDiW7QKLBJyFXAC4jgTtj5CCKcIfzL/phozKpvO674DfzZMYFyMxtfAKCQ0bu9Ey1VB8NwC4J3K9HdBBIZBUHepQvDhQ8J00FsmmIfWDqNAoCu4+EhbuluNkVdiXyZqE/KcjY/XpuTVPI2LVKhdssvLS2rjkQe0OMNN02LuOGKSkjgVXC/zAP1ddieCb/7RNJLf1bsRcwL1lddtEREOCR0c3oCQtdobdN237Ir+QzK/hUCk6nTaKKVmst0j5oHCy0E8R0UK151CMQ1w4PAHnZOGvH0Ayk4lHCIt3Qp+FlfDfS0Wp62fwVK3G8aFgwraPiUHMIpramLqi1H8azheeI4sEbFOHMbNwoCuJylPO4oUjHx/hFTMpI8xGWKow2cEs2rYemPXYNJ47PvUai2muoFi1Dr1zYRkvJymvxC3UUl0Y6yJ6DMGRkcEe0Cx+lf5mQDb/3DUIobxRBeZ3rR37kR/AX/sJfwPve9z78uT/35/Dud78b/+Jf/At9f7lc8DM/8zO4XC54++238Zf+0l/CX/7Lfxk/+IM/+MZznZ06rJ0eIVN5o7UJElfMaOUAVFUzmtdXI8DDrW4hek5VhV4jXIf2Dm69Jl20Pvm237D9GTH0fjsc+ajJlQlzj4wg6hiuGx8M2xOejNS4wOF6+LkxHws8x4vcuEb+73nlqt2QcUKDpELem3nDus9mKQ6Mups9LtqjpEDlOvmoAImpGCgcbt11V6zkJ74qVO6pD4bPR2MnMh4FSOFbXr9HSKQsjHj95FitT6tSvUJOXDmsbR0C/VG/UeBSyBfcGRGSgcahAhUZc+aq6SuCkRYud14JE7qBuSbcoNTMo3eVuEI3hbhxhI6OsJB4Nc6Q6JexkQYJE49kOa0Qp9iGUjsU2XslPVqKLUljTI+sE37Octf4Vo2/XLDnNgCDhoGlcgV3pgEq/6+Giq/yRKsmoet5au08ShyyB05CZuJCKQCPAtAJHPUSp8JsRpcL7io4JQ0CVZdkOKTsEn1N2DGqG/ehfXtn5UfyZu3IYrxcHcVi9AroVEzUj8lA2awUwtE48N5apBzJIpO3uzg+CmdWEF3jjzeVn2mC+Pe0ziVHvZlHkvgWeckN1tKJxhqHkusa2xzDmClvyS67uI8+BYiR+kWaUUQdyah7nsYbldKf+XqjCMqrrn/7b//t+Psd73gHPvCBD+ADH/jAp33mK77iK/CzP/uz/7tTA8hmvOgIwFDo0QhUJOSUW1fRowtLz6uaAD5HNQbTHxtJaolMhYZWZrcXPYU8mlWf3fcRYLdYlf+/9HgSiEEPv42EdQQOnuqg5x726AOQlyi49TxTQNV90XOTZ9WVkFGDW41HQSN4hRhhD2ww5h4XgCPlJURCTbmGYUWj0gT8Xn/3waBxVsGEDiUDOsWkeYu5dTMLUm+QEN3eUS3GoiUJKCoTCR35G6ktRsSqIBYB5GGN1rLxMbwthv3LS9eaTWnT+MiAwslZ+GA/mIjovZSC0FFK0t5KHAtbQd4COLJD5yw6rrWoyJBwV7qh1r4APLTw3qfo7AQECevATOkBXUdUAnnvMYbwpXGhUxRV0CuvkAWeYT/IDWs3YHjKDUBYC3fxyFFha5OhXu+0Xi7E3WH1A3XPydUL+6w91kMNvvQ256LZeHk67SXvpPZIDyo7lat1iec6RRtGi5GJXK3kfJFJPLgh4jTJaBEdAj5UMouFquqZcq35uIUb+rg/YF1ZSTupSIi/GFN4qUhYENe3xpXSnUXLWlpufkcGlMoTTcz96Yg/DQWmRgwXTNFKmT9cxBPBItgsWUSYRQgPrE+SkV+ysOkjlP6SzjlK9tQeg7ghCmQ8WyTc2jpQPRzXxMXaBsQNO8JYcFgPRVPFwzzccY44i7esZ5HmrHvXfekGyjHYZTQ2DiV8luv/8QjK/7eXeX8eXqXgMEHT1nfdX4Rw3DViXcG4gOF3AFowDcHQRBFm2Gzl7BXdvUxqTgrwJuBevxtYqv/g8s/MhtpbKaCl4kJTBhSIZDj3nJ1BACRaKa17gF1gQ/vq+WU5W4GVDD9a7mVMKATM/bon6CFVFlahdY2ECgz+JuQbricFCA4yfgHG/HymBiyBLG/txbEVoXn/u5FaP66Umh0BlTdKHRkYKUl5JR7h4RFmoAvofD8JsGlbJmYunDRzfgeSQvdUjgavZXt3WNKg4pysz7I89fAIKx1mkX2LvNharBaDYXwpZ+73cjx6boxlfO3fD+8vUJEO48MQa3basPaqFLCMVUbYUgpq9xyBwuMDN6wpgNkX9UfA5iKbULk9dH+Q0cCPOqgMqcCUAd44TfzAFGdCkQnVARFfwb0bGdAjZvqO6zgMvwUbsFCZ96H4XIZnGHmxRqL4ecjr5gGloNAyWnvl2J7qOoC8BQ9ggWkJDkmek3xkxFBvfo8yPkjrRFo9q9Mz6HQW5SMNpPPBAz+dUp8J9E67lKFZY2si2Mm1JlY6HUpNio/RdW/GE80bMfSI0jx8/gByTR2q16Cg5xiOPfESrTfJByOjUPRyPlX6Jk3agCduoMRRgsMqr2UBPrSu0VHUApoANjxSPPImRljPjpWKccw40HP+PL3Aej4rKqETI2VAhYhl/xx3pfQjp0FFDSfBUGFUD4uTUEz49Fp6PTR4fG7ABJb3WQAANUhDe+oru1bGw6gkSs9bAq34dZS11rPQilo9Wlp4sKg1yoAZXTSHUtqb02mh6m45mliFpTc8t237p4WvzpyMQPC9Q4z8uAdrUbp0XHDfBoPI3TfkXLjYtDmVFGBzW90QcT6OuFPQe26eOsa8TO/5wcLnrUQ5ZmnXs8LHhlucPClwTI4HW5v2lcJ7nE4kDN4hbSBGOkegUVQF3Q056/h3jTMUg9G9YHbXBsZQ+gl58wl0zxRAKUnWFDHyugX4rLEA2KDP8KV0EcSnQQOCxr9glx3xoi5XEXz09644uUfu2SKcw4DlGgs/4fgttKfdz/b+So3xeOtJ3uGa1mZ+7yXvjq7xYu1TntYj2Zy1z55LqUYrkJeDwxTTqiirORS6pLSL9k8OUJ+kDN0zTn/FfpY9aYRM8lQZNi0viVhA9XI0Zi82X9H2IwPmMKNipfq/yOdSNLz7XbnhEKCu2XJv3QcuL2HpmJKp4qNs1K/923Y6T8eXubcw2eEpPYf30d/p+8Kzeoa95vWkDRSgjYD+AFLy87667eS9S8GSd3h+HpjIAap9r41ZL16SsUvF+wrFr45+fP6wH1+nC3i0dZsX01nl1XnvERFLfZ935u0n+2mUJ3mw62EaoWKktR4ZYqVcDnqQ/JwMchKU44ePF7H6iZ9HfR9cIVO5Vj48I+UhDoNMVGy9KyhEaAwcG7ghIFPgtyDXGspjkFAGtpd7sdoij0hQeFHIsmYFGDnfTNRr71NyjG+xJoiJq730FspUgojsWg1eor8+2THTHS2EsKpY1OfjffyPeL0CuLNOsib7Ob6fOuGpAh2T9X8Zcr+vLrMWqdxpr2xasSilfgKdHsHp2SRuYxj9sNMg04AuRciwvus0lyWAFZcSKHajIkxNCw0Mg717ClXkS/pRXYBgnv078UbDtCIXow/PMmUT6DcGk0bsLelAKb5bqOHbiN5xzVKwm45VBEpYVXRJ45Hf1Iyu1yYHrOSt9pro+hTC4WRbKNrKsb2WBUBcEuuA3pUjOV5yYsxHXFGWEEYPsRu3sdaJsoL8qyLgkp1cO9M5RRN0StgRmiQyulaTzq1WjXiSo0OYEqcs8r5SN2wAHJfdBZb463objChFXhIHI9gXYBUcRZKUTYr+9lrGqyEC7bDToVdk3PB8mJ6MrD4pvV/J/9e8nrSBorxqeWTLmvkcd3hE8MzZSrfQsk/m4tCFtdVtFkAfV+Q4JhBGPo1RkEt7Vh7aVGjMlQeg9wkBaM/UnuOPdI09q3vAtRYje2hPxx6j625sb24UeYi5C3BNOWIvgsdT6eWokMuUvK+PeJHClTBsBXVu162USnkomtP3Tx3uhC+F0gosKnLhBhiFrb9TQ54LPX8qxuDfKYGp1RJGZwV1/pv/L/Q7R/R8/WFRDm3G6KGBB0U9dILBBQXhfMkO+5egVkqBBkZ56krzUeixoPti+GJURfAzOB0xaEnKjpc9t2W778lwUFKv+7aghfmB7gOxmm8UpCrcqNbB58uqUyOimdZx44J7ImFRRuB0T9g+AWsC1yeAsqKbbWdaX40FOe1SborMZdOw5kzdzOcQ2e/Asb1uWNdJNqXjOCbaUHOFIVrAUEJMUbUH3XAh37kT0mkSmPGIRyfZdCJs9E2y/VY0daRgIsd34U5HwW15RJRFw9z+FdU8sdcaMD1A2iJuaLwoalrwGRHBFN3veVMRbAAtO45Q1GM0t6sUmepyslEdDwG8XNpzFkL8HTlxYL8wloYCwXnrCAtpS863R/qi6UDGHEpXEGVWi9i4KpieouRJOqo/2C2dA0f2769zPWkDhREP/S7gYiq/aGUrBQe0YI055qo0jJB3OtUia9W6btLI2V1nw+6jUdDMp3oSV1CMZujI4BSAq4ykvOR+S6sLywPd7t6VInPcpSgoiI67HOkroI0IFpYCUCpI11GGAr0vCh8P256MAArS7hVBQcoGSzV3FZk63iSED1NGYW2/C0bjGCzRpFwuOiVVH/A4bL95FDoloM0XE8d9HQ+tY7BSWH6a4WZzV46egizKW4r7tW8vg2GvPWYEyXCn8L3RpiJPBzpFQrgfDXdFZ4bBlxKs7Hcwcsa1hgT0CgN/YR+N3l5rjIgb5c7Z8OwUWEWFrq3Id0oohCMJVOKXNEuBOo6E956DUSvSBufkQkw2CDjuxZYyk3FqwlsQ9PQKDeW77HWWslNvoEuvpV/HEVIUalkf2YWW9PBNpnTUIBrm7OdzV3tODIMySNs06uv5LS9rfB11z071PES/18flAnHJEyoPsYtXXQaBME9FEmTXRdHc9Wij0J9xfDh9GR72MftJfwHIEHrlqaZRiJuK/NDoUiSP31EWYZYNUD4HeYhroNNYcpndZd1IZ+2e1nF79VrHUV3+TueXBcjEk040mi4rmln2vl2HP42T40r8zHmB0kElN9cD9IoA8UA9J0Pa9AOdXvK0Xk8SHsnnYK6kPvP1pA2Ug173IlMVUR1mRLRsABI6H593KIGbj1JCx9V4xEOpaMNEIW4i7QIVi4oeb/Pvc9SDn4ngOKcRIQWQ8sgWQeiQfo4wcU+CjoIwqnOxkL2tg8bG8aLDx0pRUeFRuPk8zP+zaI7eBpWVbawbC0XPSWFhyk/GZrYH4ApltnYOeanDAywFrZoQ8kiFWBWZcYP1IfoEHPOt1Reg1wopBNUnKLRbKzJBaybCLrQtghxvEqYCLwXkuWKg4UmcjkLd1Z9zI/KuDBZcTC7geHFABY/EKzCia7FYT4ApJajcFNmZ+slTFDCYCDaqqdqIpuGUd9lvfuYjZGkZLYYTTuh0BhOeDHVzXjPgEJg9SRLbgLQIXbggZVh+5a6piGzPH1Hv0slBqzztpEJB4ZJGhUcCs9cCdAh9NX4fvW2Xt1+gwlaulXiLRHvLN7TNBhoxLXeIElyyXxdAWLHWoXrJsP5KOKBSdTplhIQpjpIPyRmdh5AjpaIFpsGC6biiF6ZKaWABUMQqnfG4J+07pcz5YQBTfvJ7oy0Xq3onjmgtzWiAZIcimc4g5CVGLFZ2LRuio5VHF/2OonaTyVyYv7X7uIPVh3VxuJwFx5npAHeYdTCAspPR4TLEVDhr3XqPOyjCLMec9XIWsfM01etcT9pACTNEEGePEvJWIit1Q6svMV5JLmV9wW6bT8+najzSmFWW55mIw34HpAyUDkojBPR8anxUHpRSTNHPJqA8op51TzIszLd4/DV09PXw8+1ApSdiRoBqzSihpqOMtNpJWIxI1bxb4aRgf7xIg0fN+1BFlZeWOyR4l44Kp/J7MqeY1JSOwWy8C8TrgJiWitNc58jCtZXjUJElRGmcbQGOEU5/1ATuVcZEec5sId7j72iODB7C9iwo1aunDKqrrZWCmkAzmpHxW3LcBa8MGJMAlK1SvjT8E+1dWXRI43m6amUbaG5oZSvbrbhTXqEMWwBJwewpP08pcf2mkAlLpc1KkbkhKwVPQRuYeHOvXkqlDRh/p5Jgykgm/+ZadSKo8MRUA9NphzUPLF4FsI++2/yejhHr08Al3Xu6jnKKBrUpTo1588HQJ1R4D/nN+IrvEoqwKBMNA/7tEQfS2sNqfES2wZUAX9xpK8G4qrA00PN5vxt1gmZtCY+qOz8yckLCPkLGS3CdmPJdAiotxUjaFf3ZXiM7WnT0aSzK4gTa+HRnAimHzWl2RPaK52dkuaKblJWkE66fziHr5TB1EnXbstKEKDl1eWltDUzfjMaYxsdK3wz9EY1KRmEJftbbeavpz3I9aQNF8oNAMuC5kcG/4wEKm11eGmLRxggouA5j5mLsdV/zUhla9MEV+dk4ak6rKIaO6AHrZexwWoWGeQR4FCzpebQ17KHKI4aXpvHTxiAjFNwkf8WMKGoI1bEIJlRQZACDL8Y4tVSGmmk4KNrEtM7mYMECqcgO850Uujhw6sA5FXm/xTcs5XASdjBhT8EWVSz6EB1uf0W1vARwYHtDVAikkVKyozh3Nfy1prXnCqDD/960j3O5d2a47wr9PbBCyhQIlj/mSSm9FZoRKPT/eumiCRC9SE3j1HcyuvpeXy+jTFi7U6sfW2Z3ZXr5ecFotw+DkVKznMTSP7wvWEPjKCbPetEevVOG3Ll8G1dXogxU4rkLmd3xCKD6qBRuLvu5TavRCqLGRKK75VYXUqWhOD97G3mxMWvpTKHoOz0brczeOobRLPpwg7DGSp+PhaInPo56XiCi0iJNuNGjL4jzuufGDTQM1V+Hj7nM4XNAGbYsCEbT6MoufMYpVe8X5f5Ya8GK9TYFJxo3XRBai1WKpvffnlVoSKV++R3h67RGGghrxFm8ptM1nOfB1lxyQ7isSKNo8uqpcwh2t3dgOJ+LNVsERdWjqWaTsKWcISuUDuqDHmgZFhiZK8n8w+wV9pOiUXVrPfm619M2UAAdbaRQJ/1Q2Y3cGKDQqt5eDExCr+/UBAoQMzlgpfyHMZP7HToUlFfzAhMdBuT7VkpgHy/qloWqpm4B0IYI77EGYWt2npVXCcIjW8mZsMiqACdTjfBeltKv1sk+JucaTOtCEFB4caQ9SgHs+pX6270bWf2FQ2x5n8QJjaLq83Lep3+g0HztU4qK9R7et+Hiz3R9QAas6HcqUc3JqJhkiWs8SNHrtAC/Z5pCcjZbmXG9wIALBVd7QkU/jCAd0cYK13igFJWtibUynMtgF6QXMxbWfdPfoBGghbIbRtEKWV4uDTfjA9XpcJ0VDUxs5ai5VqqHhzxUCn+rxxlRMk9/EG+OHxtbx91rvKmQCcvcRg7TPAnki9T+WrnsvSZq357u5Tpo8JkxRKAqYsF9pJ0a43pgcoh1bX4SKXLggo5T8Ng04cbo6lFwkUJHpzzJz4oyGW0Jh3tcX188MmpJpzENFEbiiJ/CSSR6T35pjw3TfKjxPOKg+1lYT/yiadXGYrQpzikr43HuIRwOXOIJ5jJSaiydUIuqwbL0ox+A8ELtqHE9gia6LceGKXsaDDIS0DLYU+0uO/QeKKW69308WuzdyZVlYESQ8JPM4j5bT4UAiZaRiccnNl/jetIGigMXaMKNSnfQWPCiyn4DL/bRrYoUdL6vvHhgEnP9PVIMnI//l3cVpdhkKde4fnqGhOCFSVkGiZQ70ERbAtFrQvrr8vjWiSjqRhc4HEsvOryiu866AKrvPCw/jodxzAr1UuFxri4SszEPqIuhcpSEMdAek4REtpewTkqeSjkSvnR2bhqptqh9MCWoglYotTNanlNpajyDn0VgVFxJRVxKqvPZ2YLxgIVdK3Jz7kVygr+4faGadWWF7YtOCEel2Rq2e6178Djv24nH6SJav49TaLRMi+7lfT50YaaMwMQ49hm32B4561myT19oflcKJfDjhirGjE4FXewBoxttqQy8c7dheYZ8DQYfyMJ7Nt9F0UVHD5tWqKREK1KY2adKUEr/wSKbpSGktCv1uh2qPkkSJUN6r2iP1AyzjtjmnudmcEoID5RNqrsirqlsa1iP+HnksB03aeMu2i0WkEHqLQEs7dZysNcjpU2HEph9TjgOfy+800HJDeThZIw9lKzqVzFE0wpxQpmAbiMgI8DlANde9TLCh0dKGG0y41gyhJ/RMJHz1I/LSA/72+nF67rEJy0ztsOJXX+Sp3Fqn22olcyUXDfdU7IkQZop59nx4hdZ8Zi6SbixDIPDJfH615M2UBCdx6TQ86JWAsWrjvMKWZhxlFKsM+Zu0a/bvI/jENlhDCLEWHhcp10WZO0qIjGgHk2g/OQBltKAEM59dj6whcVw/0q5E0YAugJe2vxU9e+ee0a17McjYqeAUa6S61fet36KyfreUDqGuvdVhOrHHqP2OyrisY0KhVd5I9MzYUIXgI5DIlsIMuTIug+G888XlSVhxGcffJ/Rc8T58RBcZmFYNC3QgKxi43HUUtx+wrkp9KFQGAY+hWu9JsUjNhIwRffKktV9eZVuVXGcLqWYbKkW2h5RLjv5JaPzyg0IO7I7JMD5zXUXoVI5R0Yr+UC3F/ei43qVQZghJON39bqzUjNZSpbRVtV4OZ7R8JjojuYFbqYUh+bn51asG/b55pO09GY+nl88DXv/y55TBpjLPB7LLmWXd4dwp/oK1gJJkYUM6qEU0XyoSBLlqujJ+IhMjugI6IX9fZo0ZATrg+i0iRtc5LlaP48U63QRoH14cfaMIhOuvSfB0hdGxU8DgzRzfpcU1wr0cX0+D4xOvzjQLxrl5HJOQ8uTM+URZjripTvcoZUDdL5c9nKrTHtlKELOOkmR2y0adZRd9xgFsdoCdWP0/w4Lb1RKnsbY7We/nrSBsgsMoxjQGtJcN/wuvwMhlQyYALCigXlWKhVdobelqmob47gzoJ+Y2K1NP41By3SkCpJKpI8Ajxc2Aa2wAehYKpWmojhkEs5XhOHM6aFaV1T82E7oMAKk77ivI4by4760LgpmwSsliGWYkeFga6g1Ru1bKCFuCWNPuUW2ACv4d7dfT5NJE4kZdbGIUUqg7pfQJKDRqUSgj5rWxk63gtqWDD/uc4FHIaCTFxYFOXWOVTEwo38XqFao19CCmXjw/HFeq/CwFjxorFqJa/3CZwOMylvpCEDeKEHYKZVaw13aSwArmsNj28SVGwAunIFekBsMqDV4WsavwuU2iqK34R4u38zrSt8MF/f6doRlw1BN7i5Z0YOKoLnB5kqaskG8mNb7w+jfjsjLEJYVVXARvWefIGMUkZ0/vWOoO2yRwG31/o4Jk50K2ouVbLnvrsyNj+ZpXW5IMXpyiwm/4i095ydTeMk4z8YhOHfIiJzPUEYaTqygmbJQvH3zv01mwGjJ6GxEeXwvp2jLkLFer0cj0Wq9BKcE1stTFNLkoRemxjBsY9yjiDh6Xy2It7PdURQKZChbQOPEj7iPgmauxSNRBg83ViS/6m8dBDGayUeDfPrrSRsofo3OsUcVBlHhmlGwkTXrLgAKRqhBW166iys9zHVPhQwpW/VMqXkVdpNS61SGFNnRv7ckR6dQJHggRhvEAsiQAdD5Y3by9IK5esAr28UklgsdTMf1OcMwfO/rFOzy08J7GFiswvcfDQIJeu4vo8O0O4yN9moC3YIbe9/qBVFFevJ0HD8JO40SjQPumSk2hhMYEjaYqJ23vM0WtvKwS2CpL4CanRmOVaQY6OZwpjAJ5hJKUo5h+KEgBLqweUTDTMC2zJrKq/YZLnQTwN3xuPeDyagRXvfUVqKMSWv2Buy6jIV5nDiA/ZI1O/5OPABVsxBt2NQLNTOglwAmIOWmtvc0SHPDX1FJev/EoWgxB7xkzJoRJ/hx+eZ9euqIe1A3ZK5PfJe6F7n3mBdHLPlx11gEab2cGX3+ckmZNO1Ej+02gHgttHYk+sWU7FB71wXCKn7meHUiTUdgi44CliJm9CWJXDTP3AK4Hp3aPadxSACk36urslae4nUat3Q0JCtgHV0N1oClY0xhC3U5oyb1o3R72F7C+OwhFIXhqT0ZHFFzM5132PdU4AuKGGnMkueqGbs7GsesI6KuIXiO3rJqFy2qlWqahukoFzz81OnuhRQFVwNj0c0A7bJ7igfFP5H7vXD1927F4YL/M19P2kDpnDtGcSaF4niRG4UDac3z9CREi5Yw+uC9TFRcJCGPYcScXz+tNSaZYX4nZXB0l0G+lVUW82GKNlun4ojddl5GQfTComFBr3VcTphZp4g8TEilagYH4ZDlLjOvnXc7WsG3WI6XnQWskyKUSlF+GJhKgoLPw5YUeCjhTIY3xmxhYEcZ0TjcCjNVFLkte3JXjWsptIEf3sPUGvfOqFF5ojK+wPWZEF57EXGLfZrF9w20AWVzKmRcNCLhSVotIdUN6M77Dgmp8Q4XGlQmaAIYIV95UNknlmabazvSD6M9GhmY6wBKWD5Ee7inlCJz3uxlgRdHRyXKxaPSoXFGdm7ju9GtKAyNQBOyEvTDG+89iI9kAJqiCYwTEh2gq194PN97wJgy794feGT8wGUHm9KRd1hkyu+PWgAVbnnpqpspuSHPmhE5XuK7Dff91uHsSJWBhUZXrkRejyk/jjq661dgahb+vbDfsnx3NPwtkqvXGdCBEH9Ep/wYpVppRn/fN6IimldIEhohfqp56mDEKKoFegJFhA0vpgfUU4i1gJRnaDBvUm/ghfCQbTjD5jZZ1rRKmdDj5F2Kn1v2Fyc4HMHv0O3oaciyxopjEyeSRxhRew8y0RDWKbGah4Y+8RUMHLzB9aQNFMoUFlDGURENGg6OGAIK0BlwFk4iCnCFYBbZAhATuCMxcnvGrGrWFib0K2d4eHM3rxhXiPJUQ3H2ZiNlyes0y80q/XnPhZ+/Gg5idBFqIiNU5JTXBFUeLWEAsxFb8/vjYquz4qUip9EhjQjI4+W9hInLxzqCvY0zcvnGZ6Dg9RDKQ0v4WXv6OGaPjK5JSnu3BqQkFQU1I2OHz2MXJT7s8fJ6YN0CWFnvKErDV63fjQJ/L8oR3UeDUjOLNpi+gY3jHjg/99gzcVI3qb7KBW2go06KJjUtC081jyKFAbBfy15XmofK53sth42hZlrRt+hFfIAZ9NZDggxnBcqeRvH3DQWVdTbMwuFiNBXnz87/rwmbofjs1jiwe7/cuOaTwcWLe74Z3P0GPlK4jzL+wEwM1wS0QU0+jNyniWi02Bpl7JFui89G1K14IV6uruUqgxvIrbBZ+0GF50aXyybqMwPBjn6ejRlYCgJNeBVBUNrWDTjyPItjzZFKRv3qR2k/rk2Rmt4303KCt0VX25owuuTnRWfVQarw16nVPKJer1ByA+iibWC+H0mERFgYb9OY8jTgkKcNa9rTq3qinA818IWzgrnrl6CR0jKCaeWRyqXuI78pNYiWIXU/dVzLE8qYNAWKN7qetIGi92qsyqWVYqaFSIE/T6JsxB1nhUvkkTA9vcP5nPjJOCflD+TAgYjBThN5watocxRHwhQDCWNP1LnGsDVIO0GvijeFMGSid5Q0Q0G/V5gxTaDutTeBqc06Gn4q0LTwfTysbRhQMJ8UbGgftg7LTfsbn8d7YtLmJHwrFdFpHQKvnvX6AHq58lSaiSUEKZRJG9p8/aoq99SaOiqX4FGS8ZI6F4o1/5ZPNc9hOozr5sU1MrdvPL+/r7Ev5ImCYWLjYKWEkaIv0fijYnbhOYxwKo9LKz0JVH+GODjBRIbKtQs09+ke0gFkxMYNKjAcETniOE+f29wqeC46UIoUFbWTEq4N0phKqBZGUbjigXB8ME10OqIsXo0y0CyMLyPCj1eTTh1+nLOWtwEXw6PGzT7TseRoumbqyk+WAKpR6S7O0TDjdcltsIgRzkWvhfdlv/t7qg50nwzOcW265dvItWbSEMd0WaS6JfvMcMG0qJxHOlNMcXN9ij7hBGfbOw0cOqlEiTky+4g79x4ap6OEXGMNwFpCvvqAsv7lKp6LNh4S3bPoXLBbc/F1Ezsq2rLX206MInYab4iJL5JX9fUabQhqfzK6aGyYfG5jpoak0UJ42ZXR9OavDngU0f8M15M2UPgCOBomEu78P05Io7Aaof76Xw2l6n8ewzUloCOdxYiKLlya3gDrW0IePPUyORs3rv/IHN4DQTKriM6JalkoWK9hD3SnXNQ6qo5iP4RWiA8Yysw7DNLgGd5kwKIpHbnY42YLGwo45pGZvKdwAU5GFlrYu/CiUBAuT+tJ2BFWyFNUiNOUmPieP8e2I5JrcWa6ZCtCTla/5l02wzEKAwwYPUIuZb5wkK1MyYXVtG4Lo3q8BL/ocEG5aXnFVI6r8O5EywiW7xsQUVGwsIGainOjuwPL0OCpAxqQ53FX4ZzPSJmgFXPGOB7uxuUwBpXOQ2t+RtI8zJ5QuudsSCnEjIbx1iHNVEmDmB46vW3umfrHnQpCrqKVQzGhniMAeHLBjG29iA2YRvKpEFXzyLhPI8XHdXR6V44bE4yKab7sKAmjUsBI/7jRGlpPKUXBq7ZsxqhSEmXA6dQKDQTWyLzsE46ijZIzQVi4Z2g1g6NTNFARJZ7KQxu6XJfTZkKRIRPYe5/OG/B1FLQrrMrauEaNy/ucJwsdlxVhSabULo5L7FovyTV2GTaZWSl1ORIyGtopl5woWtkOUB/zDqPpRxF6k5nqlOypfdJfyQrqoDS+8uhYHOiu4hl9wsx58jWuJ22gAFAUJQNqvqZ8GCDLMqpaeRwdptdJ5QFjAEBEoNwb3+pYSFJKhlGR7PFItGQcpScsGqJWwRb2SyppQMJXxOMEZWFzhtFUj0CDC1NJeGU2w+PKRdZ8rLOhCOWJgKSQtJTR8PApU42Q+Xw4Q3FMGoAXMsIrlChhAOsWC4tQ0ZOVgNiRsZGXJr4MbOxGGfVdOAOtPsWgXiuOC60rtCYWckroE/CXhI7EUqgx1Gv62pVMlmI+7tA5YfQ9/VLJVB0QUaPTDjVulOd+vChN8aroU/GEegFRwFcdA2wNyQUz1x+wSACAzO1pmkfZBYX1AeHj3mvGhK3hYRtxWSH8PWkgpVDVT4g1KZcN42mcNHOxpw6jPMH5FIL2zQ50Q6fYgH0ihikIFjgWTWivgV3YTVo8emidmlqJEH4sHXpBFcZyHIMrX/h2QSvzSyuic7pCf6vbZ2g+hzfrfJyv3QvexiRxRJwYjOlJ0+CQrKqxDMcydEshY+U2PImLjH7Fgxs+ZC+PRCa20xAYtIeFzet82aUfi2c0knzNyGDBYr7vafNxAJXeXYhPRc8/iMTgfWDWPql4NMdzI8rqp7MuBdzVsts7BCuNX3hRuwzu35ZEHaXaSueP6PFd+DrvMupDQ4WFseotlP33ut/DLEbP3dlx2f4a15M2UJIbD0PymkiRVbfsd1pyNCYvjVhZhtZEa+TgxvzGdEQaiQd7zrxzzd3P6XemA2zNXsA7IhSBR+8/GGkOr9I2xcYUkXS2e0t1Csk9E3pZXXuzATDeGiyhA3uTcnRb+uz78oKhNN1ToMAk03qqi2mmVzHnVqzRCs5xzu+zxxJ+XVmU8Nn5coPZLXZdTmB0eKQi3XuEKd5mYN0rAZFdJwHMhlRnY9ivV9WzEIcx7/Ho3Dg6m5hdbG2OdR8dwrZoxPlFfJEmVD1UzPGMFukFZ8FDJ6HIAtV8Lfi6AMcbSiGbEiHfiaS5RvFr0czD/lIpGE/buiIyr1z8qck33MKEtr8kEDDedKOMXU/rJ8rooHzBBQg6DlwDDYAyPPz3nYZCv8kWaNpxBV1Rn+nBowuCOSb/J63wZFHBvo8ko/fKminKPadNRruA9txFBzH4r3FstFNpPq3NIkuK4tD48bbvwHhFgr/ZeNRZMZrGKF/9LqNLtIBOI+lGWxfHAxpvTJuENR4kPzO16ut13jjRn3BAek8MPmzn1/bE/Qo+kJHYTlU/55FmNQW1F9tGojMGNQa7jI9TbBapk5yDWEZ8xjpOynsAXds49JLB4bNcT9pAocfivSJkTZ4MERdYw8NG/z7C6oCEnwpl/SiVFEIpBdixLobBFpS79CNgfrxuKtQeb7RpBiSAO8QYRQzNVHpXEGyuSoEBHVlQcSHXYLAZYWNT3BTOZAoaIIp+LKDfolnzWMW99nyKpnAPI1d5Mio7imCKof5UXvtUyAh4HQ3a4JRVD+WsJeQBpclo8DICt9ceHWHg84Ehd8YlBm5iSwr/xPbsqleHG3RUjKLTwvF4BbxCwDaXIh4xjQkJ2MabfmdxMQ0V1RRkgzyhEw76sVMhTHs6TFRUS3wZzin43MigMazbTIHICEeviwPRE5QwZuomohUt16G/oyNPCTUGEzQJu3vKlfrumvvoNdeRhU/xGpQiUoM2jn8xJcO1xP5/1eaSKbbYcwn2ldpSEzXUPotnYTzadVpRRZvde0QwSnueitIvWZm2J18zMOtdyKtp/wOdIuAzZ4Xd6BKORDOBXQTMG1m/wwcOG28YEujIFE5bK94WfXO8ojU1/JORxrW1bGEEPYwvJQM4LiN0RtB6I7Qxgt4MnbFfrCjY13O3EA0kTDY7vMlzNQzbZNDI0FX086jkgWP5fedotpOcsg7b6D4YqbeIJoiaoccs6mIO8me7nrSBwqOXSlesVtJe7KooCDYCI3fUBMAQvE1MnAAdxnJFJ6JPKW5eeoOuCcBwQiLBKRc8Fea2aqOLkC77hIg8AgmJjfxFLyOL+ElEViNzDueBMtUiPu61xlCYqe8ZIFD7eRlM/f3eBxV8wZ/1EjzTz6JVVEHuIjFDUkC1L1wUqOzRTCUBWrCpd45skJbw0KKhWpEOoxeOzHPyFy3Se+zQaRkKdoLFllfRlbU96IJ1XqFQqYQR0J5zvfdIjcMIH4OXlLlgXGLuQNXQxCPhv/HfuNN4jGrZS8f6oey32ZJWiMeKAmTanljnIziH1qZIgYfc7dhwyKuKfp61N1T6TMUBWwlT6HIqplYDFU0lfGM4AapPIu2g6Se5VsKCcIaBhzBfvX4q66BSvth49bBSVNd9v04zsLbACCgeArhLHRntI+O2VisUfxQyr/FZwG4+TMOIjpOncHSMu+lEOPGIBveFkoeVOpFVwcaWNGyP6FoFbtcVHk9kMQJlyhjAjDIxlXb6PIsQHO3BPjmMyroBx/1pX/VDvqAh+kBB3CgSLxSPHtfsN0qb84eMPpVFecbaLRmPDXK8XO3AeRE44WAGoCLVZXiKLtP0V/2+2Ln5FB0f6bqST8PY8y0z7Ws8dNZDfkgiAdVINi2iZTDh+AbX0zZQvDg1u1CKnoSiKfSwmCsjjsiXBDTQjAoSNETI3q1vV0+Heg+EiKGIVUWBbWXKEjUhwJzrue+KlPZDe9nnHiNugChkay6DIjru4lPhDUDWWqr+RFECYFq7i4oxBEQZZEb8boEnUygSMJDy0WcnT4XWuZRpGXyKFp0ZqkKlyXttTwJEbJzpBY63njcv6EZIFXIeNMFIUn2vqIcEU4LFyQy7E0ean8x9qWOKrkA87UNcooX9NCR674mq6GeBZ0AGHwUXx0wfh4Y959Pcp6idR2xI41Lw2Uq5FNMoHuR1Enp99HMzmqIvxZ9J5WX8owJL8p+UIb///5P3NqG2bdtVcOtzrX1uPn28JwomBY0V/3hgEF7FWw1qiEEEU7CkKVgxBAsKFgJiQRHFgmLhaSmoICJYsKAoUQStJPEnIAQDViPoS0omQfCevdfsFkZrrbcx97n3nisI2V/m5dy991pzjjlG7330/95HXV7VW7WThJQVSwkDCQJN26FJgyN6dZQFKVCb63vOisJefaJtXj2xeoWNQO/PfSk+W76M5kSyWDkzose+hCUQtFxohWg5ViH4lnG3FmcZHN6cUfoxHpI0ugpbUrrHS/wGGrymZLYd9wqm4kmiy+AhTlQ/459Q4ufLysDW6+c279rCUcJVzrXij8YoudpfEXPcEpKdeFoGc8fnzp/hlwqlbEUC8oi+TCPCpM3xKvcouuIDxxiJo2jq/sH/xkKu3nIs3jGKR+2Kreb0Mo0r/ZxgF/wFgKMIReZTXMdXSZK9f/ktv3YvuY7sXmYOxsmKnOMlmBhCoJ/7GH0DHu/0AXxAktxZ1Vilg4p9H1IyhhhXkt6Ec44XLM+HGJHvwRJywcsXbZXDKSuc1GEhshmaKhNKxIRRlI6xLqVAmYZlhellx9ClxhjteATDgk2NN6TBWvsRqBPGwYRUYpMUyCjSItEGuDdwiuGSyTuMM30P6lyM18qJrMhHTc7EiaiqWMKsgN0NS4+Tz7JIKzR7gIjZSFgefIEUJU5x9fOYOTsMCNitnzAXjPsYJr3WVsajy1sVhuDcMmTpK8JmRZxuljfXUYRl33qdymsvE+ZUawzTlxDe+v2ghtkM0c4NzlnorddKCq96XgN0s2HbbQmYLe8ohUjzewvvHKsmv6vhHigNTAO9LKEU+UlgdNkyr65NSTTsjh5BtHkGIiFXDF1hmFpVTNZJz+IJzUymPtpeqgZwOGRIPra5PQfhqyEi36cX+L6gL3vpeo5GKCyPR+6Vo9HM3dm8FqL9BwDR6Sa8+YwUCO3ZA2svkyaqlsJvBSL5gmkTs8eayd2R02ea1P0pmAsorL1kD6jG4lbtR6GeQgrLY3qS/kyfvQwcHRKLuijnuZd7aESEdRfMMQoo4V7SQRruX9U6aiW9ffy+gQmzNtYAL/MqwXcZfRWeSEyyuECoLuE1MJQRcd5XtMFyiPx7IhHlz60Yq2dSL7lQDSfzX/ebDA2tXc6E46zJH/qI6017UNxjQcmhFwaeHpTMeF7PTpgnHQzrQWAENEw8RmYSLzCWhZEpiqnRbmuUiw4hp/fZ23HMeMDMeSkstSXqqkFd8rSSYC4Jk53JWNBpnZccj41Rl+ZWE9fe3r3Db9ySvPeSLyCuXOd4jCY8AmxKlHHZEyLRO+z56G1tWy+Ed6Gw2RwB3AuEm6cKY2FqbOXDaB0POFbfeb8EhuYtuhEzFQJ1Pcrt2adDKuzadaWXFFi5hhuo9+VKNCs8J5mK5m4ABX1uzE5ww3glEtaGvWi1BiaCeSZiaw2ykIXnSNRt9OwPernszfwA49/2MNfZgp2GFZ1qnKw8Udhrs/AHrlYmHsXnSMuPGg9N6giXhE6DN4XmCet4MjUlW7y1dOBhJkvbuufDhE2Gm1Wqu7n8Hbrjhr5Y6ACiu2jN5/LGCsbZy+VKAwy51iMUm8aEQ2S0KGSi/izBt4xXfZ5esaBHKzppMFxo1pf2i/Yuf3qceIVbQpz7vMwDuR/lSXAI2InECARiPH3AUvQzT2yLy2D2gRObF57KXql4xt5fjqX9pnG9h9dN6+Mdlku+9e4B1V7jOMuwnEoz9wwzXGFj1kYrmukGtXllBsj8XYaRvM0pZ4TLq+f+I643raC4/ff6wwR0vJeiAEjREGEd6oxIANaj1v28T4ldTvgUg5CWWPO3Qgpm5NK/MyxS87eSlDJpCBKY9Mq4mkVuOQmlxzzr5j+QQhGZ0j1z3AQmBevxPLBwUp2mKoYkj9Sr+HEIUB3zrs3XFXDgR2S6s8/LeDOD6Hm3jqjPMbaN6CZVQiYmJBWwTlz6cthk/s7qovV871VThuE0mdoEhT4/B75b1nswOefHSDmQcl2ck5MAEV6ayMOhtd5kYC1GoVh/KOFQTyAyqFcdbqXUyMIWTOgtsufkleYea+sC2La/XrguBHwkcCWYUrAi6Ixh0cwJ2hToxuBENBNM2wI3Wwxo6sW8EcJYic+hK292hnthaA73aHa2CQlsYShXqwHuVFoB506cpidRa5IgaUR+VkxOP1NxSaYfSsUmKA0M2FtgIXgVMuSFhcCDQlcS2JmkmvxAY95zwwmPnCg9lE4+z7Cm8iIc9sAOIyCUtjY81vKW4ucDKDPR3L06Bp57vxHBHLtH/K7Y3RgKFt56TkpNyB0lM1uB02vlIdMHynWRoZTrI3/NaqkBQoeyDcs15Zus3KPoTaVQvIzLzkpMWM7pwEBQ9rlJYkdTOMqGg4n9O2+VXIL54JIPfu2KKvBgxCzm+LLrTSsoTryUq9aWNUZYhUapfg8O0xARpxKFMD8rGXcKdH2kd1iAlueU3y/m2L4ltXlXQ8gPhkVsKST73k4YdSfIgt1x9pIIHl1zOJPi7lrXOcSyhGZ5s2Z0x/BN9s25i9nK4vdYsggAW5cFCccRTtqQZiLmHWy4Vx/YmMDuVZJSIAHWI8g3wyIFndagaerfFYd691nuwGpFNXOAFF6SNRS5BxYe91ifmHNOUtN6Uf5Ueew6seLRmDHlrt2EqMIcZzKmeIWUIQulHg/RKyFQo7AkUwf2/BophbR6JyQC+CDOZLiJt0z05NoU4rCCBxjflcp3VhecAG4n+t25xtLBgcei+dVanM/dSMuFCeulV0UWfuZKZDKlwwrru4WHnnlU5GYR1hQD6/+Eg/e+85gwVja4H89p+Y+jV4WP8CFaSxhl00CFQLpcCq/9WojnpBBwijqI8JpUvdGNvR9rMVZEdZ9x2Xbv97n3F0p4uwQ9w7/EnxUNveNQonG88xhvQRWWcSQciRaYVO1+LAqzpSIsDxjxImUX23IFrxrlIdes7y/yYjNSELznRCTSDg/eQl4gPs6BhemHvEs8/nwapcP84qIUbc4d8akwbDa5IDl6yOsiPPD7FAvPmP1JGbGJjcsesqfoI683raAA2IRrB/IAQBnR9khQyFt4afMm0PnMlnCr8Z0NXdZALbAtIfmewkyERLwlQxaQlm327DCiOcS4q0m4OV7PfPN7f9az1r0CCTOfIKidAGcTWgHJsA2C2MNiQLzbI4Vnxlq9vyPvfxof4CT2haCUh0lTy1BbCAvPGZfv5LkKPFiYHj0hFY2tTSfYyf0Zh3PZ+pdy4PBAjRIly7Pi/cCq1pK36t05Cp/gitzw/bkeBu+BPMG5l9B2mO6xYvWVwtlCZsGhk2nrOWDvytmDr3l/jGcFYOZmZeP01IJmyPRfyOWuoZmK8f2eWkIklEnjEJe5NewBuPYU8r7SnqXgrEfFeT6Xtd1Xjk0/1KAPIWR7TmUWzGSNy5VOWvDJuzaqepub1yWrXe/WPamJax5SevS1eErXVG1J0RE8LVjAnKAahaixe2Uc0pvxDSbtsSadRZ6dvWOVOIs9Ep9tyqMueROUhE/6av+BTdEzf+F+mFyz4L8J5wx59qwDmPYHQOwPhfCuYUEZYelpaYxRoSRt4qF5bxvOnNYL98NGX9h7uAD29ueaNuMTcCWVDEXLyghjGhahZLgpYp5AfwLnE6YCNkhjZNBlPNJIkVeW8P6R19tWUMy0ymdA9G3CONYyw6IHgoGBe5iNaxSP2+q1CysxNBgaX2l3eCmhqOCy4O0Qv65RkIQ4vackePXepbVmySAA7HG9jgTGlTybDDdP6l0LjnWLuQCjEbsXBsfh2rva88FiOyZgbxQJmmPGXHgIYQKtocdLIpdqhDo+pCxt5dG2JjGblvPuy1q9PmAY3IWx2oOlB8+Z55p6w/kFZtR6d0403qvySeJmDv2atengQvcMMJPd12smE3kk9oglwxHTUYXS9bKOU2PhR6MpgTYt/HVfWTFLhb71vDwLqPFKaq0OE46wyez9XJOE0mZgUHEs4U4DNwaQjxoBYgGJGQfYhKPPANKefVDQyBIPHmGLUALzrKV7bXlVWEmzwNobynFJ75NgqbL5CO+hGuqLYZ6SIQx934O/1lq5fkMjcDsG1QWmUgh5f2kO2suCS/KJjnuvMBfOwhiRm38q5rArHpqw8tCK+GGOV5boD15r8555XuJz93PgJpqUxR7Gh8eR512TTm+fhLsSdzfXw/yqLtRb1RLHqpwLahSLR7RPaGyenaWcK0k1CJEvXkvinLQnuhxaOZ6xK3skZqcKqC8LsJUPp5fZMkiek2PkjMM3fXn+mGf3gTDGu+auO6688wuuN62gpJW+MWquSpvHGlzBoRvXqCN+xpiO6WP/feLzF0aIENzANDGjt8VxzrBes8/IeGtIxI/wuCQRUVmwd0hCmzDYvDQxbqkSxF8EQVKZ2s5pyPVwyoKxerhsXhILoSg3NZOJ/g4h6OT1cXKxmNCJrZRRm6ufegQ+eqwXYJSWsG668SrhrVIJCWXSAJS13zOePQdicNFcDQEjAyk/C9iU6ELji5F7FwrQ8aeYguaQnUB7WYcWomL26YUQvMkgAYy3Avs9Dsc11hrlcbrksLi3wTW3JfJMirAoxPvDNV6C+RFeKwkdMX8JJ8FQOJHQI46b+Mz1+IiBDIko34sCbNoDREw9QlelwcRwjwuj5/x9Zk8YBtd9iCcJ69nzs9d608vtmbgmgd/Cg2JlJGkRbmd/pSOHftRnBhhYHLDxsVX6mP+EsXULejgCV5pH9BHaklOpQBW0x3rmLNpIHOb8BTPtL+FM64wyY3lEHYJLryPXsifvY8I2XFNWh8HHCcTa7TWJtchz0WWFr0QLwjfDoetkbpi3rfvWZh+dv7f5ecZnfHVjQipYGaN9kWjPxmi5RbK5YsiYzXseirvDQbz32vDtlee3r9+TXx3YtsWXXW9aQXG50hGAuXQulNVyZvVBWnoCtpEe40gZ6Z0o0srx2TVWTsI6p1JwbT+u3ibFpM+NmYU3Yq1p3pXv2fJa4ryP1Gjt5uVO8TqTQkL5suUUXSwzUcoCkmOIXW5Wv15cZOhiANrwgBW1bOTkEIoYHgBZAXP+SaHeh3RP66UvP4XfD3o72gwzmfB4dWKca/hO42ZviZyzPsPl7whDzEGQw6h8X7qqg45FIx204PnlPABkVYiZR3jmsqzR+S66KGRG2BJGaFc8qGLAbm3NG4izRDjviyJUwFiY8i5IKQcVgFR8JOwkPDaFziTivbfWz7LtK70XImm2B2YyGmJPubJHxjlDDK2XYgme0t5qjp0KGjACGT3CxXjG7CO9X3SRHhGM4N2OIrCyPussKXBfEA5Etb2Do7gP3F7tpQJcDSMARRjE60tvVj6vz0Qz4hFnkf7rA2GdK4JHyOmEZEJ6+JO8zNmFV987RI2hLb3n6KkEskWA+XdWJI5iDIBrhRNId3ymQRyFUSX5VNUTItQS5bEVPAL2BmPKJMqYTYFMkGuPC7/HXgSQRv0rXPEDV7GKvi5zcVGCi0rCQyRvlfYP4XmZ5hdeb1tBIaNb9N6wQgKYqDfBB4ZyUpjnPXo0DqnyUJ3frwTJtLrGncUwRiBkQ2zXJpQlwDPEIeu+mpUxeH2fGGYqBKnJpsXwwZCf5qR1xsYboo8GYJj45ZqPrKGQxyS+RbBlBliCqfayXZSxMe0WxVQIycMUAgaFUZII40oha0tLMI5KDLkuxYSA1z0aAlgV74DG0FwV4pAsFZzJDLVxJzclGviF9yG9ZnY9O1k1QjisgtiYv/AnRhc5PECU9MpDILcwRCc1NLUxUkz4USXWiPfHHJz71Fi9SeQZOzElnC/lf+7+fA5cQK/b5GXUuKtz80mBlBfg2GlGFr6nd6lCMyyP9oF7e0gu3xl7TVNIgc99s/XukSdDSr9K2TOR1LgbTt1dQFi6Sz/pebH3aNnTOAou/zFR0vuPxo9DEZyzeyLlOoBJQhUvqaGPWVPsRWAUkoTbdY+mZ0rCdidT1O0c2Nmg4vVyWNnalMr7Cn91YzMa5RHKvjwN/i1kKsG95j6fuaXPhItnEk56T5P/yqPJd7nHiuZ6ganbIETyrJfNnCOHfLc5DUrsgSXeFBkQa9oMVF0XL7qUBhd7ZBsNfW4jiHgKo6wAp0Z4bxXYe6z9D8DqIZZz+QrXm1ZQAFCIz+b0nmbMzEJSSa1qhnZhtkKQhXDco1AI0DjeD6Sn7wmM3UxIAmDCEFZTgUiGpAUcOojuvFq2iEqZqHeXQqO5RiKsQkxHlGnuJ4piGEgyrAKUFV/nbKAzcxyYMb426Mylet5R+c5Wl8Lo26GpcLN7XsVmV49AEHHoun0yBCkhs6rXe8GKaIwlpmFhKCZyNCa0F6PKIjojcSzyLDwdMQJVkIhhSqABZqZW4qSMaPJyd/N+ewdF04IH5lk0VtvsbA8v5oyxENWDpwlnjbXltoQcsBcMGG+T8igaDDHVeGLSQlW8XEnBiRwJ1RKe47lk0BV401cZ9pGiqL8Tb3pMikSEZ3z/Q3k2HCdDCcoFA3y2y6LdES7b+UkcD9It7AHpmAe0qAgj4UJ3/ClhFPNtvqtDOTNgan63V4bNwbzegE1d937CBZjwmGiy44YMVekZhU+KYRItIsrXBYfxFoEhR96uNSnkmztbIQyuQ3y5xBBO3p/eTdPmBe8H5uwdYLxf2pt8fsK/FJaFCRkzz0Z0LPxM64HYLwJRzkPkyHk2OKb4ob4ryTnYcEiDNtfVhe1U4+3QQNGO99mFBi4oXrwne71gclRKayW6nta/1z1QxNeGXje59iXXm1ZQlIA1yMBYvbzSo6J4nE9dzI2pTaHnA3nbPtQ5A1QgtmQ/UMEgc3ATLQtpWMnYMr09AX0Wm59aU1Z1lCzuWKPLonv+9QGct7Z3aYXEau6J1+6Ajd85lQ+97xVjkyCQtZU8/7Y2s7zXdv0Bo5wI9oRp1/5di9kfGCv6kkVfsdFtrcnNGcJtjhTosaRz00ciY4a17Al5jh4owptAK6vWcG5bW6Yl0Wj0LFE+xXwfgqUxoTgpwwewVX9tHpaQbMILknkOrKvXerbmVLfTVmBrjle8a80V+ML8vaaqxlKxV7TPpOjImwM4TyQZ3Lxc66EwkQIg4d5ct5N94Z8+lRmYPAlQMKHd1VbryjDfeDP49TlT8qJD8KiE1ArBbV+DXfNBo9Ap4FleW4M3yWDnwDwKeBxD10rsrOADIVg0bw3W2mu6r+GSWy56aCT3v96TIcBUGA2kgfOq0qrx6JE3bXNpMEE3ecHCi3O+MldJfEn0EDCzQqVLioSUVIfQgx4Dvpv39joO8Vj5t2hFQt5hrJgTMGGk5DnIku0dX6nMy5hI3isl4aBn5AzFRM/3ZT/Jw2QDiu/V75KNavg5KQXDy4Ha8CfSluffxp9yB0lDB9t8ZIj2y643raCsePho0ilgWlU58iwQwLk5Dp3Mi0HsEurYBX3x3lpM9nhfIzAdXgiCxHTT27Rd8OA/Ci3JrmxzbiKo5bHwhtQmw7p/O7BORNta13hNrLBpnXb1I5gRfwyPtfdF4TNZEge9B+e79jOVYwHjWRBT6NrmAMBeBq0vDcB0mQLYz73gC52wSNBL2G3t9kEBjpp8gswp0AvFXI7V8GncncF8xXQAV5Zk8uiWGCy3eDIb5X7I/QzYNd0pbKXBvczD1RhmHzTu+3Mdmqvmo8PhOPetQiCU3y2/ICs1RKsK3UQyoeeABVvcMJVnUrBO8OC2WbdhpPk/DexcOm+LKz2JmWg64zi8KrjoX1aSifFK4dT6Q0gV11+ajOFKmBzNwxLHYHBSuIyRLOUXXq34iXbHM7OdsCvprTBMPO8eKaKjLLE/k774jPhd0o24fYacgr+gsHe3vc18TDdbzoXWOvjTnw7pKkxZ8e/KKxRmMf3DZeQOXTjhudwnRSXdVqbUKE48Rz2mgpeMNMWOl0vyvD0nCr1qn2qMYy3KCoEUR4eBY71cZ4u+gTGsbHRgmgGKRx8XWNPImzgNvGfS878dbktev2Qky3zpVds8njX3zZ6u1TvshJu5qRWC+Si98MLRJkOw4K75qF9LcPovvd62ggJgS3jtKBuk0N5CH3IH8p8at1nByVhbENcRh3FtQvHoEHZUMm4jPOVlsaXkATlEEkQSL/Q8zFyk6HS4gtdY8/fWYCc25MRlZ+3Xnijbs2R2NsI5Pzdq63EbFiJ+L8twE6Bcl8bXRggPg5OFQ+AmCcutrXdsgVSHJrBZFmI6Pi1VCqT+vIYBIlwDTIdec6BkPHqOClidhXp/DHz1TruMyYCPD4yjnJSS0KmBneYroazphPWy5dD4M9F7+x2tL+NdTi68D85H6F17XJBhibEBo9RQYLbgeMaEtJYsfdc/CWfu1eVJWItT6Kh78FnJtJWDckSeB99j5dPCq00ueK4VChMcz5rwl0C45SoFDHIfkblXw3keWyXRqcTfdmjTeE8D4RZdVa+4FfkILxm6yMoTJ7nnhu5dUfaaMGsS3LU/Ek/X9dprUzztN2CbAlO/5P6XQE9FTnPUngf2pF8qKq4yTNhec2Ga92svyBgphcJ7N6IS1pELJH69KR1Bt25WKNjcmOgqA8w8qvY5KgE8+K9pS97xWJ4VDSnSmqsT6nuD7/Ys5m/LOvHvjVfU3Br7vBzCXnvLSsX1HYAVk/SQHHGKuqqM+oC90Mtz86HBPny9aQUFGPdREpYOC2wE49OGfxkFpBkzkyIjZSFp34YcKxeWFswvuxy6gO9ZSFJsbn0xxJ+XkwJZUnw8r/Wcl+x8186HApVMOBNwpz/KwGLLhyjYk7DeDXuaNkYP3qsW7cnsGsi8AMsiZXwrDEVvxL5oWAhbochSPiehETZiPpf5b0IcGofKgoSBFMNjNdCCOoyGF0MdRm1xyfvgnVEjEOyF4ELOmJ9KoKUEZ04GMD0rAo8Ju0rFpNYXVgKVl1QhBPUjlF1XhmyVQT0MTnJSlTbguqVYykME7CEqCsOV61Oeg2PZjRU+FLNKQQyMRUuhOeHCEVDr1eNFXGuLXAp5x4BRbuUJ6KEf9STacicwMNecs1nUNWHXcftUON3PZuhl7fFYy4UmJQdWQr36jggvGA+HPtd3mntHgzWNwz1b8dqBRXz2qPHMyVMgOo8KIsNGHgolaevSGKKvCmsdmJ4hhHUTRg65yYsKeA9tLn7RphRV5Xfpu1Ri/Hnyj6BTjUtB28Dy6umdGkdzSQ8avWNLma+NfjcPkBGLgelmyGAvl6597Q4xkScZfqkBiO8J7prro9aBm4BDta6eATaD1rSO2KezxZ036PYWjjSsuWy5KRESytYTRVmk3KrmHLYqu0i+tUET5PVl15tWUAQQh0fkTgQsV/T78Zgwzfm0A9SCPrrDZkgIgPNdNiSKAwHeNLjQprwpW8yVLnX3RQHCPbYz4W0e17wPCYRzf9ZVBCRArdtEy88Np1CcJvlumFpXzxiGWRMWWNxSQlvCV3CrIOgATJ59kYJji1t3bYqKj6y/dyR7Cf6BBgdU8Uop9Bzk0ckS68LuXiUTsGdHc0m3tEulOYFHwEZMLWkiwhNSFOQ6hYYh/OMxbIoqFag0RE4lPNtFToBLGTixnxUia+ryDnvOxPBDwLhvTwpSjffZEa56Lr4wylJa9IjxMxkw+Lzhdu4w2TxMssrlGpfi3gFnhf74eB1Af9c54cfqXeEFx6VH1SAmbPB8hNKElatD3Aj/xfl7Sxa2sND0l6gRXIKH9jjnPx4O8gV7ajrc8wHbUFJsMW/CHdEZuKNJGgZegr1Cq/pOidtRNqvuoA6FABev9qDTf+c8Q6kwP9EcgcvcRJhtwenr4oXYQr32NF0+y7CM85kwVTT83PuY6/QcpSBk8vVjn0eGVi0uNk8K9g7HLwvufWuHrFJZ2Zq1YejcMitTG3KvYX6fME7IP01VdO92G7X2VeIucLW8I3yGFbLHY8ZTlaIVo4u8+bLrTSsogDrd9e4JkFZ4IYTGLrilQPSxgOqumbfLa7zPF5bceZYcqEHhacE0GyFdk3ZVPzBu5EQWkzyP92QMCJdjv/bADJVd3qGvcu1kJKmkAftap6qjrOxtITKseZ/2QvBV4cHROrLXh8NHha3sUfLGzCv2aWreem8m9W3nUvCdDoNEjoEtewsfjHsePYzaDDwUA3lSEr5pkSPWF9aBLTCPA3a75N+q3jnYITLyQhr4oJt93QcmFF6Y98EqnaaFtVmsM4bnrZh1hJs63NPeFzl/wEnOgpPnV3BSnZhl5iDgFmEO5YwFLNTVs/TPIVoyd9TsFSmpptUFh2bFl5KnzVBvgk+vEJGF41q36VEC8ORYJ6bDqt6TSc6qTJFwSHic4jUduBQDQoRN5ivzAVdBLNxY2TZwY66NQBK/L4yClbxI9MC1nOER3DaaFDwrEqLl3r00J2HHE6G3EF4m+uq9aZEXHPbwZxGiA2l5jad1FibhvQZ+t7lHvXRacNTaYv1u4GZPEQV9Nep+Avdz80DbYxQo0DI956cej2N6o5rPy4MI7CEi04sk/nw23Xpjb5Ifia6qsSu+ui28IpvMIJ8SOr0Xgi6n4pE/j3a/Ma8/DeXCGAVUVDT3OpfhdD1f7ddPq3vUaI23UDgK05hNuCcjMvMUocn1K2QS0FnzDRCXT0MMe1ilbFVUaI8dLv+lGLTd3c5RIXGcJDQ1oupw/SqkkInAUnJyjrZcOGYK/uO5HA/UgtYx2vN8IeYkQaNNE5sHwFgNFG4+pVnCOqwpC7OrgMCCiTxSnjTjsls4Q1r4rcfdz3yIQ9n/F+Gxwgl8v2D1UmtzE84WTnIxa1qqquhtqgsUmXioMN9NClJ0uBTcFMPXj2BYTaV0c62H8MoXr140NUrFkxSTgae9Sg5bkF403hEKghiNhRrHpVK3CSmFeUq0U1Y+cDT6E/Yy4dLSrax1boLnytyPEfJFweNEUsw9SYsKpY1lx/127L1vDJhS2XWNINHzUSqeyuq1X4mVtIqxBT/Bt8un5k4/oArFK+jOuU6YdXA+6T1o0oX5hvpvaAL3c9q56+PbuVXuOOR5zeHQpX3J3AGo11PuHa33ZL+P6Hc0ytPM34cWptFXa2wLtghh+rr1eO/snW30sehudYqeTsLjCcHkUIhmgk58qKB4S5yvBmCF+1LB2jxG2PcSv98uGQuCeQy1Ppq9pPu3qig+sJWjy1sa+Y+++xGGq3kBdo9Szzq0p30cTO7J4PsosOqw9qo1LGO+wlu55TNeaMEo7aHxr6CfvHEFpfYKnvMO4Aac7/Q9DJRqej2ozAhQW1IU4Hru8x02ZG3JfIjPZOmQoKwEUADWC6YaR7E8Jh8tRJXdanXuc5Yg2xokyWtB9+3hluTYrN7NVY6Y9zHft5S4U8+G4C3Bt5l0yd8bmzW8uYQlcICV9c6xnfX9GHi6EZA3UWETXjl/Miif/Ala5ITB+cQck4gnW9gqXKPhrhZ2xIbXXo3s9hBAE2YIIabwQAjwLa7tl8azYfk7+97MYj33KlbbCmFy+cFAW+GyrEyhojidVEcIphCutOQl9NBmJmb8nG89H7PWZJiGTe1MMpQpM8Jz/oSSz/WvFnwMOuHgwChxjZ1r3eDusDiwTjcW7VXASouW94WfOYSS9109WjIqpBhyrVJCvBcao2TlnC7KszqFNonK3hdVMIWyuvVBSVqSsFGuxfvY2PIKHpgQq3IWTH41ONELpLCHYDPvSePo6nVUKOkiTQopvIIONAnxDishmD2e/4jnYWbrmWvuUIbmPK9kiF1rr0mJ28LJGF4QU8z3bfxA8BItmQ+qzcH65yRaepRNT4945wPTSyoU1isvrx55pbwaG7aWO8EnwngHYiurbb28X1d+JS/KfXnLu4DzRpl1bzyUImHjbsnMftKYweNq4a7vNPDvwPn/JXC/+HrTCoo7sQIm/g6Ct8yjoNpDBjBSfFBgCDSHgnrGMBI57pwUScJJ4k8hU3R1AZOgS+vgFEJPTGKX7gNgF6NdhEEcPcqPy8cUptIaub6t1X8MJ89SKRkWcB7KVrqdcBfz45H2eGgjjBdozbWtQMgN/qo5VDALdy0toMLiKjLkDgtxC2WFAmLvi/7OmH7AZBYDw89nZPilNcpfF4+Ir1BGMIxVXpLaxzUjTMCLSZ+0AnWOBmm00/ITPqhkGB1WmIcuHJIiXCyXNRfhlUxpU0DOUIR1r5illIKAs3uaJHOTkNZ87ud02wyY+VDD675aKnL0NIHhsHX6TMG8rZkwRYWb+/I92t61bc3E2Xh+OBd5WQD2yOAcGFayctExrzPmS6Hi5Miu1fH3LLdEN7GatttrtUBD7cmUt3PPadFXUggOTBVL5vkw4TfbEmzGQP4UyBSiiUq6DPXl4YgTyumh2+C1xqHeU2BTt8UDrQg4lBTwQdN7smjk7IF/pbJzPweWwt+NRgxqfR9GjLw1pid5d4RX9PAPBH+zlRvrT5hq25oHzXq2Cjgp4NrD8mLfzukJFQqBaVQwDNl2DfG7R1HgdZ1BhpElt+sz/FUKDxUM3BYvt/ENys7bkmPTFoOwylYbESHYikC+5Lp/+S2/hi8C83gGwJ/nHcDzJDLJXQ3wPixtT9Uuefpx34DjPYDjUs/dEq6LeI4HGfRj5jEdAtfLlqZ7leycxwuWZn3O5l6JvnuSLziGm7yxLFOhmdUoDu646MQoyRXxY7mWFY4Qv4py6mqskz/JNIsxZldMSBjLu9CYBmak7OV2VadYDuoqnvW3lT2+30oHGv2uX4VVZClpPQrjLeHV9HyM0HcDN3l5auABaDPGbibTcikvBVgBi3G91Hqx4tdn7VUyLdohnF4KeNejFGUbbxGT5sf1ZXlva14SCEejXo49T+XextGy0PkZq6ZSqM1JtWKAgr3WA1tlneuyp6SC+WMMgFAU8CiUco6oaNeJyQ+Qxd3xEzOX/L0IbqhSpTHx9o0x84PbOa3FqUDW/UTXtXtorTHPgIlpUWOtddWjgDuVEnnbIndGXo3qmqozKQYPoKvWFjkQSgXncgI4yl5LaL25NoUJU2HcTHrhY2hiU4LPilBoPC94PHrKwnU/4v2Cb134nO5hNVedi2dsLn4p7HqvaF8COud+CS14CgwP20NCuFpZLax8IOFe+Pf6aqpJwku4+EbszTy3zTxieIJ4XN9q4HcwpyRz4GS4pGH2OOxRtbGLWU8/nVPeTvp6hQuNqfWUaKahh13y/wg8iA9ycCujNMIsU2TUFpwvckixbwB3rHSHBur94pGas3MED2zl0PbOSHnuJXf7WPcc7wv1qxe5+AXXm/agAAgiwWzGEKhZeiVPyRYLxiAhx5Pmu1V5SCuXMLs0prGr7SavQcfcggC7XHY47vxomGX3Kc8uuWOsWc1RhJ+CN4S/hTiZ6lZ/LkYa2N9a5EObOGApGORPMZzIjp+zgdoKlqzvdbKzmAhxoYQy47OnQgeAtKl+HCFER5g0PVPdhJ0YR1pHhXE76vPnkAhy64vZiJbSaszSQcx9A9D4TThMjq856Q/haisNrhnqg8mChJVKln2sAkxXPiJAeLsPsx2lAqZLV6pIwZLCqJDLCytgqJw4ITiFvD1WKxHV4T0xrlsPvLiOq7wduGLovOOfQpnAnNUUYatXgrywhCiwK4Ax58xPyaofeWaVsFtiCKFMuk/O7eKxu/fuUUhmnfxJ4b1Hoc9j32c3lXRjwl+bkovXdK7P5IWQ5wpYHhspQ/eAmTwcEvAZIvV4HMPCF6NYSZHPUOHRW6deeA2c/y3GzX2v0ArfI2VUYTUnM5u/rHutCIVAlKDMv70H4l8V9pArlf0M9021F6zLTu5SwCbYCbomKV6fi2ddw8Yas3rLMfGVXjp9Hoq3l+MQ2cyhUtkJuVDvsVpApAIPLMM7+G6WMHtvhcBred7zZORjZOcyqjUXrHQE4eIjr7etoDi/gcxZGnZ4EgBYkKfbzqEZ1XETuB6Dwk8br0SwSohEgLlrtZS/9SCH73VnwoNPHG0X99prw6kzoW0QXd7gOuugvVGXRrq5yz3XEVQZBjB9aH3a3PpMVjIVoI3I3QY5hXPIHVmZx5QAu/oiGXAwXPclEZPT95s5x/lokyTMJDiwYNQH2LtFcw6hfxEcmSCX63TeStCQf7FVGzCvntN2lVuUeRoUGnXrKLvFLqTlZRACtZlfUgnu2bFSgrp2QUM8vPLaHPO9GaWEfCizap5mfUIhEoaXnCFSMedQvnWKsJTJLuyxfsFZChGHssIPWABZmaAnQIekeQ+moBZObmAeS4QMr8JcAlRrDjxbcPOPfqc4vb7EnDYrWRnKk4R0Jez503tP3q3orTTz74vnBPQoKPEXg0tXSsW7Kmjrslc2ZQ/RqC89MfKWOQGXf78cQ5NdFuJbh2HhUUnPJ/YS2ghbKtF1S+LVP+WxaT8D9qptfEfzTFhX7DF9Lu9SGhza3nKHfSjsQKWiOHZrnjeBK9Z8sEoMmDOz1NROcgSYDsncZwD2Kp/mXMRTrgaW+RrI2zcSi73ck2QeSgeA7aweLzV5gDzoCjVp7ja8XoNJsuOVoXcN/csD9JHXm1ZQxm1PROfx6kYKRuCH12BLGu3LZ8KDPg8Xp3I96kIgdmuf05zMeQmyDqRMyRNzk6SauZrxSsawPHgYsgixx43Jz7eIUgdcGlP6BYx1rHwYdBAhoIOpfMibGpiFYmTYeV2DE8NOCFKF1S0apaWyQG9LVvxU4M4WGBBJdPz5fLizZTt+XU5M3KyUnpbhSMVJsJKLX+NHbHYSmHtoDLACZNjL4k36szs4BBl6qoHCkvTBe5rXq3GGDrZLNxZC4Zy55vzqwYJe004Z7pP4Gl4OWbUpCAWDbNQFOMS1moo1SnE55rRIeTAOBTNg+plIacp9LKUkhZxgJyXwrC3k0k89NKFn0nuktR2YnBpg6OMALeE1hku8LRBh2nE+yZnAhnFZjUmqFR5JJ4disMAoVFI6U+ArVy3nrzVJyEr5NKxITzo0UPQhY0UeTiqIXn8NfN1C4bh0gQVWAiQwHpqutSe19+RRSSEZXqjxaPX23rVdIodGz2rMEk2ymd9jOgKblrCX1BaweEUaLaogEow2fgG4WknPC+c8TTl5kzuoMuxuOt/299zvsCvinuStZzwUyuSmc2b+CJ+v4EneZskLk1flPhPOBdejR4HT+jigm3J2PAtM2F80H/Saxv/HXm9aQTHTx57sZnxSCFtoHgOcesHKPZkhZkwKAIcUgicBS8mQdwQAztskbtmFemmEtXnHxOCBEZRF5aX1O+BdobW8zDiZiZ3v2ISjGBGZdK5hrQOboqYzflz6mkJQSpKUjKuQ1MaQUuawDraSNN2bepljuLiMZ7dwz3oaW4dau2CBEZTnMJNpWR9w0fvS+vbmDYF2znfekM8hkDsejE255koBoYW+P6YkUszTHqNwxzNPYrOEc0y9kgJRZ8tcj2dYQmpwZwF0Rht/wJ1Xt5ObmdNk4cg5it9aqakY1+Cb3+2a1imK4LwAAQAASURBVD3CR+YIaRzBMK+I6aupWVc8TzoreWOuuRLKg5EAsUIkZo/Jc7Ekw+zHigT1mGd5M/e8P+F+TMlyc9hNgRWsRM8gUEXvwkEqMt4P/FxeHdN6R8lvjdCveL/W2tiFZ07yiL9F48qlKQyuZWiEJ0zTsHA/Liht0lkqxPLkNWLflQ0ZV5kcWMqulVhO0TkZ2PK0vC4ZgQ125WU1oLw3wu+jXFo9e3tIwiXNB+xJUvmt5Yt4PvdMo+BcG81XYzK3Difvyz2uy/uX7wtvZ8f5VV4757TxM2BPiCbNuMQ7KulE0mpRLx6lcPdqFCnDpS0X7fgNA9/z4j8Zqa86i3/J9aYVlGkERoIQYM5Bil2EYi4Eplv3svIlFZfRIjHhEgSia77XmH0LAR2CXxnqqs3fztuJuWwCOpmMmRM2j0m61UwgkUiWypHyNLaDqQIGQJG5l5lLF5wgqJCBO/amEtaXd6bwCxet3wvYwuunC5MTaKR0HlFaHGEzrRtiAFlt8gi4QXMMoZmMWx80xrOSc/TGG+GRpdlesxkPK0guwkBW5GJmFEePYEyFCUMqLCirVuA8A4BaM2AaX+7umBdwsYiTsUevFsR3Wk/lu4S7tut3Eya6UjFW4t2hEtree3TwI9PNVTmK8FiroZcFde0em8ae9CpGrVvkUUkrXss7sao8BN8HkyruvcOxgdbhm2COif3qmFOQpZQq/CGXujbs1VNFRadwKZPn5I2GVOAVPj3jfU40J67l8YgWBNseEaoa85y6IVePIJSXQsuVF+nE5Be91IRK0Zsnsi/v2E7zTYEG7EqQ5hnGG4DxFlAJPLKqCfBedhO9p5O8kvc8aqoBxdM03r0nP67jX3qNhbeO1z21dRwfBZA0HDTkkI3erRCP3mNY8KH0HPewsdW+IpLXASbzYlIVbkbnfmUYXXzjQJJz4IV9puRpl7GbigjX5jYIkeoAjZW8MPfgR1xvWkGxoNamT+aXfLfg9rsVwJ7nR8gnoz6esQsArJLQUycJB9EAwRTFXUKwbpYMMN6BIOBBXs09iPf3CAhVLm1Kk/7GjOlQFBZxbaXZEdZZ98fO08QyQUzhLTIne280HuHpxzvWnCGk7DmxMeb5TPFKe8bo3lZJ8zDcmvM7JKDS05CuU7kbY3kAXGK4H6aFfXdwI3vMDfF8JMNG9kx1KHBkTqo00rhiyPJYBFfpe/TLGQKbfACNIYUlmMZGFxaWGA8ByLxzzVuODecV2v2mfGlAeuq8hwJOVxewBZkEYCRfAkBXERcBBuc8hAA5+LJILCzlgBXQT+eidYwwXI3uLvPXu7U/hTvtN1nvgLvGpqKn+bXB38azz1qRQM93FsYDpq/EExjisWBNms456xmt3/uuxsuid13/cYzxPLf5aBf3uJRLzemMMMomORj6Yf7PRnuRfL81lpQSLhheE0T1eSapOyy85uYziQw/bF1crVek8Rd02wHX0knIMiByXxzRfK16wnYBgRIuLD/aa3RieXird1zEYErALUN1TUt5ZfL8SAm5NttMnk6D1vcrX0i3i6fFIhx5IP5UmWeln+H+vmPb3/KO6FiXOTdrH/+8X2TUl1xvW0ERUM7Ix2i4DX3Kf91voIshBgTcUEyClYrBybDHee+Ncd6eK0loYnT63QPDxGDPSmzWLWa4Waz8Pj0yuStORFv3WWxWKu0Weo3CkDA8Z00WTiCRcSNIkKWXaCNwadeNPTGO31XXhHqkpDwfK3dHB2C91Bbm8k9u/OJYnqyEbrh9tzi0YrwyP5T7onEd5xeMQihH6KKlkEIw3Rm3S8oJDx1auMWXnW/UUPv1LRlSzENz03P2ovQmlDJkaedIrkmehg6GIMHO59Z5Hz0MKXp+ANg8FT43KIVMY7xfFWPqXbpHCiQVOLdGN/2sG5cgWXOXRVbVm4fEHrEMz/F9meC9is9ZUp/CrzDdhUVTws9dSe4au7d1KlHVXWJFOyJJCtwMG5nXXBMECRfPVwqM1vMS8+vaqkkyFOL99lJ7uTL5kGH0PnIvYt3TiZg0SMVEp1vXiaXAi7ZVEYR47ly9X5aCRyGqZ7P67flYYQ3xh6O3Vg320F09fmfgEHG/5v58fIE3OsL/2tPaq/KmNJYn7dZ7Ttk1BKw9nAnezO0ZoyyS2i1HelVSFfbmhmnkGgcYhUD4C28uSA/r5SMvrCtTARC+rHeqxJ6GRCoeCu9sxR3az0dPnybxHOZFbuE8xLjARodT0TP5WB97vWkFZTRDtY4P3MlToi564TExAm5zTxhDm1JQAiwGsMXW6qdL2chMztoFE+RKr5kDN5EVBmA2YwrPniRGze98altFE35qz9dNd7Sp9a4t1o35JTbGq1JIwDFk97SoD9xT8XwyBvLbtSmxe0nCEu4AbOZGbIeEYY3t8MwWr+OvSnIDXPkkK2Kthe/QGClo7eYmg7LEjvnHPAZ2677NkySLmDjwmuV1SqUqLSvF3c2EsFvA8iBJ8MklH0qXrXv2etmS/tJThRBwnKcUHdGE6daKbmHLMTqTCEiGJ5Zb/QiNpS7jBC6mnLktLEqCoGbfGV9HNHg7AuYS1PmOE0soS9gCSzhW7B0N4PBIwJBwr+cyTLbDFrnPXaoa+FF5sps+KtSZ9AyY6Rdi/0lJ0tqscFKIEo/SP3xFXtRWkiteIKVVCkHCrwC5cTSuwpo++DFDehRqg3xsCr1w28KD7hcdMw9lUzq4brE0j+d9w/XohvBAS681nnJvA/BJ4c4LW7ha+VfldXV6DSvGU+hcYd4DVjytCAi+HXMBmCMzuDDdHXO/2sl7TeS7mbfnfUDvso1BoSVkgH7f3hfy4VT3s/TkSHZovUJtY7y4wQN1uK2MAnvOxZMgeajfEZWr+OjrTSso0gxT0FYIhVddQ7E+r5cV8tm6BRa2Ml4rEYA3hKwcKQYjUGazWzDx81F82sTnrq/VMcc1xvEooGl9VGjmsWE27VWPOt+AH92DEMTUw6sylh1ea70YYVWY59amCa6oPRZMdTWDw3aPcGFQOakVu0V9YDXE+5A73MwiN3MId8QG4R9WAq/hgUsC87Z2uXgPrAoO7X49ewnBbExRTOmZdJLWIeHopDRgGHQquv7H+ySY3T+CaxTAT7BiiWMp70BtrImf6XganCYZvaaZikyG8zLZWN4fMdm0OukZw8u8e5SIwKt+ak5SljTu0dPxE7UfmpeKvOL+EsTyenHOtqyJJ/WJmfJY7ImeR0zOHocepi/ohfDK5NtScnLugaPH6+LJTQPGJHU8l3OQSsqnqumUCyWayaodgfNcvKaBTYmYkNqsrwrj9RXf9P2NVI62jsCCU06ccLYVrvusHMz8FvwmdLkOcpzurVbeCVPh2uEMnbVzpODGzifDG5I8bY1RY0QA4zkUDaZcODGHTKZCpTJhjZ3C2Xz3AiMoB5EEOUxzeLDghP0yGxIsQqnejMS+PMPntgaVfK+3VHjnRdvW1Up7qoff33r2j8fW+wdf501tJ2ZO19DYl11vWkFRI7U8sTOR5LwTwGEJN2VrrDwOffbAXtWjnySGrHY5Q/iPkqONO0SqRmQ2xjPBKgh5O8TPXiFsm9oCTx0DT0zCpt6rzSntWeXQHPca+zPROyRU9gI5AfhZ6wvmCryqy3dHx3N9mIqimXy6I6Wt1IzhsVLDTy+ImAcwjFNrk2Cqcra+hJmbemnMFEhyJ2fuhXJJHse8y1Y8wpMAC9dsxZ6b16ETrRuDh+104Lr8jLNWJOBdti7vheAh4ZB9Ja5KmWDrD2JfFPYDzrTmbGefsMOAany2WWorPDFkIOXmfr5K1F5z5TwoJHQgnpWCjp+RsL3mNHSV4bXqBUN7tyRQyGCX0tf2qoCx9UVWfHfSRcP9OTKJ0ZUaj3L+hfNeXvb3ugJOfS5uM/cKvgFZ9VLEAdNpPwr9fAx93/bqvExg3wRWJlyTLrfkYsx3mwAUDcZQs88vuBR9HQtPlcqeaOUQzOaz7nKycl0q9nJ+fWArWe7ApUOn5kM1p09TyWsl5iPG9rtq9pobj7VRse0DjZm0l8qQxm5sBp3FlO/j4PZkdMwfU2KtuT1q9qBoLfZC9czvanyDe/P2Wbnqz8q7DgcNo93hUuLheB4GUYArWYGQncKHcMV/mSjrTtcfeb1pBcWXhMJjKSUGSHoaJCyuBA+gn+Yz9zmxQG9/LmtQcWolfLqBTWPcXhJkh87bwWJKGYPk3K2JpgAGxkM003tFVHaxxaEFDnUFgUkb9hpTYUkXPy2wxWB3Jrf4iQYJmNEV38dUKdk6KUzCnQSpNrjGEV4ySTQFmIjbCwzBydyB6agKM0IAc+7LWfZabcyvsXezfVUNAWfdCwjGk6yh20XR4KFaVjypAFQKoE1A5x9tBuvqqwKTgwMIZO6Tt0K4Z2mizoYCXOkxHkfiROOZYdV8X9gU5RR2Pm+m8Koxls/60bLSqryde4J47snq6ezJ8V959xi2enU2j66YI4AZT4NsSkfkkMlboamS9js8TKk8WC9zE7Da9MGZc9lCb4UsmGu1Gr6R5Wd4TyEFLJhI2PaNdFRYSsoDy1uVJbPOtwlakfCT0OkKuiovxkKNfxcwnoGkOwvJmK9CwAmEYx3TMLCLMSK/o4A5eqHn2W0dul+5IiKhWjypgr9YGbtWB3oe4bHQu7SHRYvEjY0kaC/33HNiettgeYE8BpUcL/shudBbeGqLd5D/+v1n7XwFYL8WVVfCnk0ZM9X6DMN/ZITgokAADgO/qraUzMCa80kZmedkbSFVzn8LK2P/bjPEP/J6+wqK+XpY/RS+W/6F/hbTJyGl4AYwuStizmTqzlPR5kZbAVLI5Xw3mDnkhhQi+Ugfvc4j6CW4j88idIQg4CD2Ka/TJIM4tMkjdCBq1lp9nggF6zAiDPGSSPs+GjJq76Lpk5MFPymANYTvTa3x5U5/zHeLvpNj1TBK4MMhGHuwiDAzopoVBy1YaDtnhAmTEmj6WKE6f06r/2hbun5/KjJ8VswVwBI+W94HhvmfsODpEGqv7g1BOaG5Cs9DKEP5fLqMdekZlaE2tvLk7d06IC0S8qyg53OIeaZQQCQjStCfl/d0od4fIzwqxrXiLrpru/ArrNWu2RvZxMvvVjKpUJprlHAV7KKarN6d3nddPUaK8GvhrufhfWN60XtEl/IgiOE7H2M9WPTedq7fwkn3YWjRAqznlFxgaCoUzgnJxbwsfGFl2V66a/7IfboJv5ISXHPJ06h5OPzZJpsrLds4iTyw6bQda9Z4hikGXxzDh3f2wnO9RM5SYSWmxpq879Oy12cS0sKfFsCwlvJT5gRrrtv0F/pGcdJSPivuTwNPcxWvShyFl+/6nWjdoNZ0g99vBR+i28Z49AtOgHWvsBPuiuw2HACN0kxXgPNJch7mqfKGcQ9pfvNefPT19hUUwJt4S4rUJcGbGrMA+7JcV1uuAAEoeTHVPm2iFv3pLJRTXQU5RhK+kCgXWYmQuBnOd1OKZgJH0HL8ndUm6fGQcpECwQlTiI2X8ArG3QdwPk0JmkVRhwav76INdVpoc5ZJ7Zo1Xa/2xBwrFLB5VdC7BVkYpU7zFTyS0UjFf9TepCvDS7eenACNoQ31ULtxXAREAqE2a8+X4ZL5L5ibEsa5jhTa2Tk1LE+HKJIha7AO4QOMMiilQM/pEa5N1Ri5hE1JTy09yxz1fHrTtMSaOdnLlF6QrgV3rYO9X+yZIPw871uvKpGEtWhK61Pu1g3Rk2YJiuY7W2NpAAsIjdkW6rY2xZg1Rs1YW/jyYoE2sA65vGmyYsQ9uNYVIbOVF4SBReDMJpDpPekAu6J8KF+lx6NYsHJqz4LxTdrJ8IfyZkL45/tsFUeuh8Myor3bObiQEdfgiefGxAhbfZCCujAl+DI8RDuh0JZOYz5rHZApPl299dGZ+Wn9wSc6jC/C0vJDz4jFHWAeSoQW6QEzehUCEXybPM6aGsZ4yXXnOq90KiBZGPUorppH3ObW9oS98SaZVBhvPt9tOdOSE4MfhWOUK2QYXWTJNc9kPLtJp7GuXy8KiuNvGautC35DSPcFp+iFsGtYBQdcoSNXmpjElDJiNERbMENH2WYeCg8R0XazZWigY6Mpb4LCplIxMePB5sFZ4w1zzPp3wcUy7kpQmoJdokrU611wB/Ealmf88/oL0tYN6Pgx8OndW5JKZCJRFiQttg9WJeWGv+JZiowsvrxiE2vjb8le+bzepVyGGhyuRkm9J+dlGTFez6s6BIqUlNpfDeDSPbNehwk1n3fn7sUwjubdEsCOn0sI+UTSuLH3v82OM/9GQ8taO7hWewE4F9QIEY1NmrRbOmPtUoqAaW4FDG6cpIvxNmpPOIG6jLKNYM54cWGsc91cPSWowZxRGI+MPj4xJb4pxM0nCq4+6prEVo1Kj6nLeu/q3xLwkcICjDdTz2u/CyZcU+qI+U69ON+Nl2OazyUe4n1bmE4wd7J7vxKYBbhjq2ihE75Z0i7e5IMMe+3LR423MfZ3vxxoFOrsUDB6FBjyTVtxVjw4fnp9Io9EhmnSp8uQeyk8W9k4OvZWTTid+2/zzAqWEd6pmNMgmJ+J592CYYVsUCpClg2nYTidxudvwaie+Y97M4saFMI5ngOPMdesvMrwk+BWmzHX46kC9sTej7zetIIiV5NdnELIJccAwMpNaexehWMQ4vDPfZ7tBG7rvvVLVvpcwy322HgjlPNElDS1haCcdDeSySGRYCyFMgM+NV8pG5ofYSCmr5r1zPae2v2ezrkOi1zkaCQEgtpfKZehuSYyEbfH73gXgFKy6T0Yra1JvBYSSibchGx8L/wbz6zVv2Ft6IsmOsKr5lwh0YYUmrQ+ZIlK+VU8WBtPzFzLZB5MdU2lQcSa67mA+8leETUwfYntJ+GW/zgvW5QSnDX4KlqcZv6au8ZkGGrDh+XuMP8u7GsSfLmWV6WG8lS8hBUZ79wUAr0rLPAtsRWzHntyYq+ieuVaABPWSSYXHg8EjophtU68yZiR6fiIRdX6riQohecPMGIvK9zpaLCkmOvnHoPKpU2HMJ9Yu7rHQyk4+P4Q5JpA5nkpv4pTVbJz536JdwKwQtRSAKrRzzXCVvjJ9yh3SYmateZaHE+hEGCe25Sa4B0KpY1CNXutPjmhJFvjjGO6267o2v2EMEqDeIdoUJ9rE0RyJ2QgJSxVJp9zj1BrnWATNyYByyDZaAs2IK2Uiiceamo3CdytEPxt3rOH3DC0DfJ1hmS91VLpCv6bcvCkx3Ed4De0ACwe7tBM0PuHxvQxIyFfjeVQnNZcMUa9UHLtk/UF19tWUG49FTW1EHCyzltA0cmSJ7vuJfM10MgspGxkpY+0b4dUsO6vF0QYRc26sJ3BU9qIGILdNNpA+hZrbBKMmBaxVFFldASDNgMOIlBjnrW29NRwLDJmn2xZDXcbTcUAWvu4bQUDWSP5Hj9XWO56PXP09JHgsQCjOPW+MTR+ekNkrQsvFxesLwn9FATA5LhkXonG0/wj8c+Wp6yiE2hJjrNWhU/vioGUxT5gj4TyFyRstpOnr255MSevP+atFyWMqJiXGD8TJu3mxrzTuKM1PzDBrjyw0mElec9UVL20GlrN+52wSFhIDuBdHOuQ+Nf3+t3hOAm1vcOoGn/ZMtwEDkGSjDIY8+yLDljC780QR917exbAWutZk8ugsXJczQmw9V69cO7mfenxyUkWlpGQ/FoJ97GXR4mLtdgDeSyhq5CD+dYCzFYJovdEU7hq+BRet/gvvizgbu9XKm1pSGSpqeDvPRi8TUqwiEV7kIpcK1SXeKYX5FUiZ1j0Hs/4E/0Q/oJLziHHkSKfxk16N54rh537Mk8mBK89LfKMxmOu7CFuK2lKvK338cYoqs1TlgqAjWgZx8GPFr/ha9PoVcqCCKzjfs7npDJkuZrhVc1BbOo279wqgY7hr1urii+53rSCkk1gAO6flw98zlCH2vMCoZBImKv6Rxs06MFC4FE4nqfL5Rocs2F7MRw9eyWc9eL1jowPmlD97qgI0FySqYTC5EQoYOsJ4wzvk4wy339glJZg7tmrJe/3+7CUGO83rTlw4h4O4cLdLH7GZbumT4c7jWLe68qaTLLjujZNnkJVFsxYOEQOPT8SHO0JxbOy4LRTZRkGf+gDe5t3WsmrGgNT7VGIMFF8LgUr15uudAlQwSjDEyFUQTrMIxscWkqFIGCSlxMLE94vZeU0j3FXkmdrzg1b+FNymUJsvVM5FXUgeHPt9wqO+l5W+VnTkKwa9b7m+9xHNfAyzd5PKE/k2lcCqOkXo3tCtjSFZIYoh0nXCAx5A0lXZrbpEeQenwTd3r1l59xTzT4gKjlOj2VhT/SUkJLhIxpR/kcKewgOHY3vYk0crw/O04oFv8yQjZ45g4YTH1YWgtfJuj9m7OwjsysyNQJM+SOZe2NLBDx9uEbZVKjpnPcOT64pXc+Qjr1Usfea3XDliUjcadL6W2uUcBcPkUdHMJFS7ionvvulwpDAVPGZvnvHZ3pzxCfSw1IzrU2OyLPneB9vV46ZDDDJiCP4zYX/S046oTn3bvzuCEEk3rpsO+bwsdebVlCExw6mkMpBanfWDHkd4QHZXNeX8QFMnktNbsehVtRm6DVEJVdfugTyHZKPJoKyl2YJ4TaBbe7IJAo+pn/XpNKrYmN3oN4tN+/Rm0ZtBg5gq/gRM0vFxsDsy/vFGDFhsnQxp5UihkFvgC1nJ82NQDGDPtoNsroxngPOOa8ijmRVqIoEIHz9XEg/MRmuxYd8iSHmhkxQbBuW92+Jn236tOBP5UgWeYa3FIN3yGkafOEEexrUCGuNdQmHbZZrKnuZIKlH5PXhmpwDpVCSlOW0ph16mfc2cl/0fgJuhLEmaQ8jaJ743VNPWEv3XJmc5FfEuK1ghcCp9IRA30eIitZ7C45SkHXDNfyWITsbED24ErcPDxrOoqeCNM/1jCILC3UlGzew9pKYSCqk93MEinicBKz4UMKtMTkwjT3RWXuN66rErWk66Dbd/zJcHutAgI6vdQaSrWpgKRXvj6W4db5fCogWPnx1E/xav2Coe56Df4lvOewTa5F3QzBm+e6iPYZ5HrV4ywcEsY06e4iAavGIucGtBU7yq7MYiuZ+kOGiYejtUuPBJt1V94SSgO3IEckxK4cpZ4INqEJH8FZhho3aYhhIdMR3o1dY7OABhccztorO4yXgil32aj6vkms/8nrbCooITr/zn/ZShnAA7L0/eqNPI0xjdSK5R9GR4HSiphqnkXCyec00vWkrEX3ssUNNVu6x7ThqClcTfbjuPLdNu65Za4dwkAcpNuu43+MZxbIf+wF8WwkxMJ4WTSPcrKuMtzaGki49e0CyasC7E7v7PnDiM1hoZZYEQ3pYyHSyFbTH15+6X4qO4ATMfk6m3NhCP8X26Wbiuj9wlgLD78+Q3MEbNWdgP1MpXcC2tgOxwoUsQb+vhq6BzauieWYYrtC2/joUpUrYiVkdcQ5NMppKvGPmk0JN8MlW8Rof2CqwNhxIqCkJFZh8A6GRiqU6xHoQhUCk4B0r58LeNf2ud9XA2CGX7Aar+YmxCA72eJTzEXyGigZX/x3RgDwg1fYeOJfF3rPxAlX18C4rDdwPcqXeZ12mBQFTIUxNyrlANUpJhrjkyXkco1D688GN81Je9jFcoSeeePIUI4ZxBJZRlsvz2UKgov9UtCJ06ZwJ/j04gvOH6t5zZtIp4sDAsPjZsWAo3MtbWql0M5/P1W3piXw+0FX2ABn7F35mz7e8TVKQJHMIQ4emVBVVgU/yDaUkZJdYl/WCnytiUHqfxhhY1ss8I7lkhdIyaXpNjXd73qc9+6E+KCljXxkXX3J9JQXl7/7dv4vv+77vw9e//nV8/etfx6effop/+S//pb//3//7f+PHfuzH8Ft+y2/B1772NfzwD/8wfvEXf3Eb4xd+4RfwQz/0Q/gNv+E34Lf+1t+Kv/AX/gJeXl6ur/roy+HNdE0DVgj2o6I/oHhkvE2WohAc0HFnUAhxJCQSwclW5Mp5SaXIGjtg99p5hLDWZsTlZ4QizHOuSO6ZZ1YHbYLB665RPiiYR/tdtf4txnmb56WsFBt/WYAIRmYkih9zs7BVukNMhWHUsVm2BC/Ed+wE6qZWxnONkqQxBQsLsMV00pIDQviAgsFhn8V45oykGjeyk2X5lZhqWGYpVNON7Cs8IBueNe414x8YAZquf867UzCKNgMnq/dMzZwaK/dH7wQWTBV6iNycljKSblkmVK4jAPiizFEIXp1XHxhlNN3fV7rXL6l0xppS0cz7mnRcx9CslZmujWFWjiMBLaEppn2A4ceBbwnOCCGvZYsOn85RGnSJDuQ52nhPGYY2XFrnb41Qa+WXhJArzknKWaXHQWisyDsS7J8oTTKnR+NpT2Z+w9UAcDgCI1F1VlHFe6p9SrMrfeKQ1QImpKO8HcKy7C3FJYzUrw0SnfGlhUoR0/LsjeGHEVbyZLR/gFHolWvVAQMm0bfWJFjpup8bHxLCzJ60XtLnFFIsGvQZbkevkF1WqeWlvZjAPOHOwdnLyLdQIZZxvNa9nj1eAJ/6bdjAvLYeXMNJJDdwPqkJZePxDluhyfmEST14zPwybNofUPw/7/pKCspv+22/DX/9r/91/OzP/iz+03/6T/j+7/9+/LE/9sfwX/7LfwEA/Lk/9+fwz/7ZP8M/+Sf/BP/u3/07/Pf//t/xx//4H/fzj8cDP/RDP4T379/jp37qp/AP/sE/wN//+38ff+kv/aWvMg1fcheKyJzzEZvBVohr+WGiv5Yej8cDjrtlaa8ZwGPubyA8M21h7GY6FO7H+xplKJmCNN6iC633suJUnIBZXypXh5o9BTGPm62tBEwoawh/aeHzTod1jut406bbSkAod4a9wmzXWK463T5YGh7uyoxHb+cdJQ5LAkljzoZJ3CDfnwxJIYNg9G7ApOEUKpHWqzh/Kq6qEkphoE0NTAhIDIxMSOKtpaAxFNBpjWsMnSiL2iqmLGDteaECRy645TwcS7jZylO1Bt9hrxEVy4xGoiPsETk/HlvrJNxc+YZAeQWTEoDyUMUIx6Slr1i4GTwFVuo06U4uYGe6IvKWsCrjUd4KC6JUjImT0tyUCyOl+5YhOWyCOhXBJoyL2uzWm8JzpKB6OcZqTtzanEYcNje4ER5b8DqJT+VnpPdEmmOGawqjSHCOc7ZMjdKqPSG+mcJZ+wO1C+oMP52j/FdhDsokCAwz5QOR/8w817j1KO8Jr+txfS+8j9b2Fd55//2c+WGW530qb4U+O7Hty+yo28DuWQJWkrW86nGv+RJ6mqSJR8gT0eX5NWbfdsIjeQyGZyuZXSXD2yUvhwzLxzJI5RmxsiDyi3YGfeHtm4AhPxZvyipWh6nEh5331C4Q2dIBvuT6SgrKH/2jfxR/5I/8Efyu3/W78Lt/9+/GX/2rfxVf+9rX8DM/8zP45V/+ZfzET/wE/ubf/Jv4/u//fnzrW9/C3/t7fw8/9VM/hZ/5mZ8BAPyrf/Wv8PM///P4h//wH+L3//7fjx/8wR/EX/krfwXf/va38f79+68yFQBSIobBO5kn7skck+MlAKbnz7gve4wAQxQdgk3vjk6TFtB5LhCR43NZNB5G/mV4qgsuC/ZGFYFXzCkssUO17BKADi+N4D7y4Dq9pzB5NfoOGGFo4M38HGM2I+azKlNWe3MyRFnxjv+GVWyrxFbNMJKMFW+Hk1XMJRluYZXxpoV61n7gGMcztWvc2zklgPonq2wTGhyGrvSWpdc1jHVL2Ox5Fy30fqkQ9lyELOEsB3XuCBUKfGDss+aU3ShXdO7CyXVE0mwBjPnXeGSodBZhtm2cI2hRM5bg5Sf+nsoW7kpYDKF2BMMWrELAT6ULbKl6g1B4OKkvvHobMZPuyr8jcE94kYHrO1fgRbhjzoSpSfDW91I0et5rAaf8BX7f57F7GjfvBKJ6yrqK32F61jpVeai/b2pAt+h7NZKLHjzx6Ks29ZEnp8ofK7MHonz70vQywiqmH1n8fIXHbSwecEZFkXhHBbylFCvUdskF8h46gP6E+1ShMsErPZLARkeZl9K3dtv7aqxzgm4dvLoWXE9MAnvtY/aDxqOrI3tgLF6aRQFnDZ/R38C2Ln/H8KOVlS0Btne6Mbx7m6e9GFIkU3bdQ86VZAGRIxgd870r3DrkUipK2jsnfH6dr1M9fWIJyVukwHzk9ZUUlLwejwf+8T/+x/hf/+t/4dNPP8XP/uzP4vn5GX/wD/5B3/N7f+/vxfd+7/fip3/6pwEAP/3TP43f9/t+H777u7/b9/zAD/wAfuVXfsVemA9dn332GX7lV35l+wdg1+q4MxdA+fUBh3+6Qgkh8uSOkhaaFUBGtjZSDfLT4pe17mqaWoLVGu4dON/ByaXSNud8HtiVluVZToDyroWZ+zaPxvSo6JmXTmyde4CVxLUYvhSH4neAlI7ZZG4YRUXEFTwdG4CVUJ0TleKXSgMwzCmpLj0tYuRnTXIzAFutypE59/HyfAi5Rmc6xF9Hv4ojNicwFlSReSVZRUxZJa8lBUjMY3P5asfDDKgAKw72rsRBjibjxoQDBDttdoUjdDMZ24xZ/q51VGswWZ9mTJpuCUJgwkVas7wjkMBCuI3L1jeA8Tppvb2j3Hh9TK8OKzX0YLliI5ijbjEWRQPA/qUrIbCUp77AQ16QEKblnh+9eXLsRZRiqEv4fZGA7lEUbg28O3e3dc8vq4Eadms+ji1wCELWrlB8XO7VZxojmf5tvFl1O2efpUX0Xn3QOTM9zvv8O2kkts92TV4MTActBfB54bGolLvqTXRMuNq7fe+V/NsrRFfau1uIlAhVaFFeClxK5dEz6a4pnebr3VVW71bIQgbZ0YMnPaSEehmiGH4qL7BDQS8LeXUbPFdhEm4TnI1JONec0oOD/R2mOXldo/om82rc1qJhAzFllI2NhjtDp0GtF9v7zS0iT+jywJQN/QJW6fEt5xx/S1kSX6es+X9aZvxzP/dz+NrXvoZPPvkEf+bP/Bn803/6T/HNb34T3/nOd/Du3Tv8pt/0m7b7v/u7vxvf+c53AADf+c53NuVE3+u7z7v+2l/7a/jGN77hf7/9t/92ANgblRVjhPfXm8tuKGCEvgQtgS1l4byPILEhR6ni8AW16dHQAVkJKw63ZpBaqROWOI8cfwnPEYRptUoh2Moma+7xz9RwJQwVkz0STnr/et8ZHTNtnKSmHqEfM7iK3zVH6N0Kc8WAJ4WCPTvtTqFbEyoAiE2WYR7F8leeTLwv5ySAXXMBUlDrs/TMiNm27vnAs8lEYjwzwmSq4aXzdyBelL2PGkWU8ynNK12gDXugsp9BCyYdeQuytLRInySM8U6kciEvU+BSwq8jtLXcs/GsmD3zB7bSThFSz1yXICj0gyGNYwl1f585EeCaXmor3V7kVPO8wrq3XpJAFWOyYgN+FnD6UF7VM95xpTvlc4mOuhyOy5BSCQ9xTfIxRsHN8FKqP4Upf35gWf46jZv7aVm9kyhcotGka+Kj+f1oLITVRXP0rwTfCGqMlS9aknJFJcL5PilotMbMO8hQnGAsHGb1XGXolj/0ThQ2xfcxh+UBGktAGF6H2zmnURvkbbqWF6Q0OYXKkh9kNZ2Fxhqrgdmruj9hJ7LQuokX04vgSr5RiL/DcwngdTiSMMwWE55T8mzM94vEwnAjjhSOUVf2Q+Hl2/QYa4H3qd0LxYqi9ifD/pvM4+dnKtlf8frKCsrv+T2/B//5P/9n/Pt//+/xoz/6o/iRH/kR/PzP//z//Qw+4vrxH/9x/PIv/7L//bf/9t/WF7FHU+E2cs7BqV26Nd8fz0shEbCFCICfazzUzuAS6fpF89Gx03HmwfEMtkIHULUpDH0sxG8Cgkzf1T76vAAfvHcV4Bgi2TYqGbRDNxn7j3l7GfpHQne46MCyUp8nl2bF23uHOZnHqzb5TAb0i64Kj5hFeA5sKYhBiAmGoFnj9wiYwI+fKwn4HndjuljNAHtnKmY8Evw9f2sjKhSVHo6coxgR4Wnmyxsctjh6Ly+OJSjctYtBzbEtCDK0l8mOS2mqXXnR3kgvVwra/pyfl89kpRUEE3XKBAVHz3yYlzBJ05MgCcFFY6o9u+c7idF5onadCwf2piVJF6bqJxbQKs/VO89aytbTCiW46Vzsse55x7jrOaAMmK38tzcyMA6iSgdnrVBDeEA8Jj1T8k64W3NY7QATyO2F4WYSTVRPdZWMODFJrUdJoan0CyN5qCU/c88f3au9esNSXJSP9BR7V8qm0O4mfYTH8xGKFGYtDv/y3VyLuvMqjFPHeofPa9LeQg0PSz7Cc5Ag71bC7+ip9MoQpb4TzUhBk/f2LOD9YdgogXl4XZkP7fwJ4wmVNxKwQjhhTAzNlngHqBy051bhLQQwZ73NR2vIe8MchZ4URRo8HylAF2XVXnnKsKwUMm1xuTYiCNKVH/qKk33udf/yW/br3bt3+J2/83cCAL71rW/hP/7H/4i//bf/Nv7En/gTeP/+Pf7n//yfmxflF3/xF/E93/M9AIDv+Z7vwX/4D/9hG09VPrrnQ9cnn3yCTz755MNfEtnpIUkELc0PI6BFH40tQUjPn/fGwc2R524sh4m4n2LeMAImfMANWL2UlYzTiikz9JNrMM7kHmR2tcq8WmMz/GGikOXYQxAi/FRgxMg3t7nyKJ7IJM9gzK5+igckgM74+yxv0uyci3sznrsWpyMJFpOka9+ubsBxWF1iwtrUVXsnUm0Y6QY6ZExCjfP3iJLVCudIgbIbtLbOp2ZEsvChz4ZRquRwMUyMtZ2ehIhXu5TzmQvIvgnJuMT406vj9usIxQqzgwu2kBoYIaglJZPmA6448ztn/fvhcdhhZfdyKjTT3M7DkLnbjUy4NEgr6RExvmc9tmYvPTG2fUnm21L+ZOHLgmf4tm+1wh/0gi0vyWnFzRj2fJa3pzhnhUWngmIJKeWs1KPck6RR8KF3Gk/W9q2dON8Uhqf2hwSh4O4cH1j49uOwAAbKZ4CJ7PpgyEU40K0KuWSeinBAuFmJ1bEgiH0SoYSlgJyz3x6zztI+Dhxlq3cnhce+2rxNVd4PBe61pMtj1qm8EtFWe2FkCg2gKvKiFnE63InBTYtvqqfSbYDq82k0B8LTvIyfu69IhOtK4ULugbo18IzhX+SZfW/0AytBWRsJmMorn5i91rUUh/E8WbF4LpSiefYSR25g7Hfjnbw7FY/h/az0bKAe5QqeqycGHfvs7F0Gh9FcD+D8fxniuV7neeKzzz7Dt771LTw9PeHf/Jt/4+/+63/9r/iFX/gFfPrppwCATz/9FD/3cz+HX/qlX/I9//pf/2t8/etfxze/+c3/i5dj4mMiVH4mxdMMOoX4xpSxCfvjvXIWMED1GCFENgxhXMtGLGafUEPdvDz86eoiM/H47pWLdOald1Xc51CWxjCDJhNOIaB5ioYdE72EfEjR2vebAHmUk2SVYOsN8Kx8EW6o4/Jeubul/b8nKerQRTEUWTYZ9hBAyDxtkWnNSf8ag+su3UNhsdaOEAYUBGS8poUQMnZXy6qiQuvqK/2ukABqdto577DLt0Dret1kPEm5Ea3JHRseAwvAQliJ6x3u+Hmnd0An2GqdEgpifhl/T2+QlBsnNg5djLsaZHoh5B4X3Kd7I6wy05au52MJDYYAGxjvknCB9bO0d2RlWkY1cXLt+TOw7EeGbZolvTFv0dFZ6KeT7eRhb4BpB3NfgfRy6pcQ9On+7ujDEi5zez5kPT/iXVq78E26d7Jv4k+/CtZY/O1aJt3Vy9uheVDxHI9KOdQxZxPV7E8PJNyvfeIk1ZizDCSPnVPp4ZG4n0MXUiZeCvV8zHiPmnJczd3uuKxow8BFe1KGVPV4xjIs8zzVUdpzhxBwYFOEMom6PzmHDtHDM3IuUlz1wRVv6fnkhNz400oXh5ThJEPzgEMq07Mk3i1YBj0dz5f0AtFhA64o7XiPwBzyzkOmBleYNhqNSeKNir+Pub6SB+XHf/zH8YM/+IP43u/9Xvzqr/4q/tE/+kf4t//23+Inf/In8Y1vfAN/+k//afz5P//n8Zt/82/G17/+dfzZP/tn8emnn+IP/IE/AAD4w3/4D+Ob3/wm/uSf/JP4G3/jb+A73/kO/uJf/Iv4sR/7sc/3kHzBlTqC+11IQGgj5GZlYqLCN8fzaHUF4PGO95+w96PF/DQU4+6KAcojYu0ZsHvbmc/BJDyQ20LXljvQTz0uydjMrrSRwAQmB4dzWbHX4Bs3za/Gc6D36ycFj131j1rHxz9Gb0qDwxvkSEsQmxtayos8G5NQxzl1AfIusatmazNzXFvWqOVxUFLqvUdpyXEF58cxrlAJ+BQADhtI+CPehWFecivLxd61GPkZ8KYV2Iz9N/E+MXKEMhBCUoJS3jI0WkR7Lo+WY9O0zjs5AWEgT1cHkS+aEyPlux+FYv6OuZsYOpaA6qw4AOZ0XCsjPfjQhjP82wLF9KnW3soliHfWuBPDulY+y/rc3sl3vQQGDyUsgJbzuXAtD4dotTGKlN7J8KQuK6Q3AGfsC9Le2fBhdXU08NwTBjkuCbQF1O1EHxN6qbB2l+u8trVtRxIUcKDXf2f44oVHCtsSLouekJdBS6FXGMXN2mAPhNd17wkF3YE+aqMjK10WknxWAkp75845URGwwiAYqmnbgeUpACYHQ3khErZHL9qXdzQryqA9pv0K93dyuTiNoqm4q/CIwnSn7b4pTDUy2/dLWXBSc3n+6g1kw5H8RF6pFj6FNhqGfT+X4XFrlJOImt4PPqPKqMdMyuFMGzhBM0nPaZBxHx3iCafkW7lvyWaQaq8xB9Mh8C3su6IKay2UfcSLFRjN4cTwd5WnmQhHwfkqfVC+koLyS7/0S/hTf+pP4X/8j/+Bb3zjG/i+7/s+/ORP/iT+0B/6QwCAv/W3/haO48AP//AP47PPPsMP/MAP4O/8nb/j52+3G/75P//n+NEf/VF8+umn+I2/8TfiR37kR/CX//Jf/irTmKvLYZAvuAUAtuxiyQpV8eAEzrCAwR9nIMk/Q/BkZYAOVLL2+ZDGgT2U1BgtMsrmXiV+NkZ5ontVrZQ3C0QEC4wQrhEUJkxEr5MQGBZi+rsuiXZnbIwH79m8Iev5V2E1WiVOqLI2ycE0/iXHRYrRtkn0u8IbV1zokndDTPbidWkEIxYz0oZsMmrBQtUzFArL7VuDQ30v71UqSSmMRncgDGu+p5XWFgrN8M+MY6VCVwgi4RXBPBVCaL2L8DdTD/oyDo6JR4vRFhCucBEvFsNFzTpunPNNzC0Wy01USduFOQVXcHiU1yEmK6/TIfjo/c0xpZFoaAu+QLjyBKJdeZ21XMwFx9itHKvEXPkUG+HUlkdjWuPfHWvz/jix3O3chyW86rsuVJ3OK1kwJ74UUhOt0mvReucNkFVU2j+C/zH7txro52PO9FEpeMIJmBBO5P2sSo/2uMN3eIPpnwrGE2nDlX2kwctpviu5uF0iXRpb6HM4qR1aLISAvXRfXNVbo0zYILClugau2wWn2g8Of4oXiyb5mdrxi5fJ4yIjQ5eUStJLd+HoMVa01lTKUQXnm2whU2y4N9iVi5V74gbUQ1WiZb5hHPhd2OQKKgxXPqtqUod/BTALzYXPPoCDnUG2nlPcl8fL8uSIRjIa8Ir2vuD6SgrKT/zET3zh99/1Xd+Fb3/72/j2t7/9uff8jt/xO/Av/sW/+Cqv/YKr50cgzB8fmDpt5n0oJPEqAfUYRcJeloKTWyXwlcykxFa3tFfbYb1fxBHzOR7jqchcGY93YrwSN1jjtKIQe6blHckENxKKugM2Ba8m0OopAYSGT4EWTCSrml4Jswu8ixt8y1U5tVF64Kw16jZZIPlujZEWjCzwqzJCi8uXPU49ipiUHm6aEuMREz5XP5HW88m4HY8jw7tjzfMZu1v2Fijme9QHwiWiCgGh17k8tpTaeSuOVSPWXhSIz7w9mIze7XNjFJIqzb13a9J4bOBGr9CNa6TVa4XHeykQrT4u9gBhmLNg3ZFk/JB05HS9JowCRNioiqQB1FHjKu6518w6aVBWdzdaBHDj/pE2I8VCc8hk4bNWNZFypQTf9LJ1s2qGQvLBxNbH4TF8AGPwnW2+hTnQTvR3YIU8bj35UxZ8WMJeSZMSjuHNtflvpUkCBCM4s1IGGIVCf5NeltKDxXAktEEeEPzKiproi9Voo5gXRuuj4I1T2aswlYW8tb2YwKvCyl4zP0oFWPBVAi89EEUBOjQ6wl3hG+31nuHjlzXnpXTHe4B1+GUv+iih+4blfUQH/6/hWdpD2qPBz7SnmzRruqTX2yQl5VueOZIqlItIuJ73ni2ruYr3cT+6Lf7Bvw9Mt1/CvlI2AauXVuKs4bPoDnrJzgqZk3u8Zy5buOkjr+PLb/m1e6mkWD1M3DujLgoI4KS/z2vGtikWqc1vhAOsWN9w2PEQxNgRN84MaodpXkJxKk5C+TRXbVNzpDdiq845qZ1rMSE01JdkCLYtwHVIoJQRW3RKhquZwzQA6s0CV5y+C4zxRzdSS58F2OA5c4MYqOYnRltYyYtaF5MQJ1GP8Hb57D7s9n4LDG7w82K58ztlzzuzXzKA71znYPQmrx2H1/i5Pv8tZSmEMzDMBjOWS03Ds+L5Pg1Tux4OtzE1Tn+j2wLUHyQtmE7lKQHHXh/VmBO0Ba/qKcsF1p4K5tWbYIn3nUoiHUXBXiMtJSfv5D5YmCjRUWvZ2sJrlPQQpRbUMK3ZQJAw03r0foXEMIy7Q8Ep9lspKpct4Z3KhemEwrHUK6Q81dJ4B9Z5MQCVWEzX1FSu5GUqTMKy+MQ1KVVeQYWyjvj6qbf9uO3LAitYevaaYKI5KIwFYDvCQvlcgrfWWMy9E66y7Ff8NNiXaY3hBjkZRtjznhPAS5StN+LMnRoaOJiAmopdKApZ3jxAwf7zaCarxvZXaIMLdkhbYU0LfcKPBlLnOxSmsud3kCgPSGnv3JTDWJMvKBxF2HnJvsRf4Dd/Fzmda0zhaOs/BWyGHwCcT8Nnzjum7JiyxJ5776d5l6H3/6rV/a+5iwsXsOzlkAeAl2O1F2S5ORoRdTxjZzJH21NhrfTWu5JTMx4A19eftBxkodRZ7o+CY4WX/Jw8keGRdKJvtiTW/UWtVlMTg7JAXszDeouZhppl1cQglcSqDZ3wscIUwvg2S94SuuSmFYHeeoUDqkehMN4SnomT8jwB2JW+9Y4Qkwvr6pVQkkIAjDs1l6d4r1yTjtfXKCJcQwraJJ/NQga2ypI194UXg1UeksYkN54qvU5EYZhXCNMt0dPw4v/kKUvGEmud84Ww7fjlxu0Z1p6nBQA1KsyF++wZwdn8tsfKjWX4UfVMUSdOMeXcl5aF3AQHViKkYNPYw0OaeDJBhg+2pF5d5w6jvjH3JkEWFreFXVZxPbUNg5aCIQWaQlI5IRakDIG0aXnoZQvlaA6qrJDFeV9jFsYbseEjnrESIzxqD6VgfByDE3tGMPDdlP60ylOAYtZz61FsdN/TaXqYwyez10/kafX6rJWLwbkp3GyB7+8wQhDBA2+98CNPgt4j5GlfaQEWnNgNJCqNNlSkLMZcxxKu5UWJs6xqIzoEPgLWUpIq7kn6vFZbaX3padUlHmZcY8er9qrZzK6I5f7L8H22sN9yIZm+YPl5i++Ej3hBY/h0nVj5hx95vW0FhUzOfF1ek17xsQ7AZsv7V5doTQRkoVTYhMY5927cl4BfjwSz0XjMA5ELbMvhyBwaKlpAKALaiD3T6Q9hTevaXLT0loDJlpouLVifeyL4bHX1cEhmWpqT+VtT53sdr+UPbca6zEcMS5v8COTF5xWWmi2ewljgakdtQJeZkf/WhhdM+Hcm8poxvusNxmYAmQOQOQRpdQe+IQVJjEbn5Gg+rEJwfgCEy2EsAJbn4iXWdF7u0QTpagattn7iDS7b5L0vtefMnPqM48jqk3JAhU2dPX2OEYCzY07yFN5WwhzCMwdgrD8mBKokdwslCb7y0ByYNfUFt0VBZAERc0+cHHDyXpseYo30epbgR/AqzKak7k7vwW3T03YPrP5FSMfT0/4obC75XJv7ioDzEg2JNjhnnSTdwHik+LmNkNQOpeRG6HKFkzAKAsPTVgBO4klIVAgr4GRlg/lF1XDCp7oCdxfpB+M1OLFuZL8Ze4JQe0m1YKdeKhKOobDnPu2zrDjaw0b6siWv9R29n6p9xjsbKyE7caQxQlj7p2hROSwvB0N/otceb3DXdEwWfqRsar8DowSGp7zV1DBg5EuC/7lGHp61yRgQBHWy6lK4EGz4jNclsmOag9poiNfJWLoeE+OO5PL03+GjAVZIefHZ45EL+OLrbSsoGHwD2HMPjvnb+RTANDn7vHCKxs0+ECd2TTHCM26wA4zlfSEOAFN6qk3oE4Xh8tzNOgp5sVt9GGRviWsYotZkSIC17NvdkipVnoSA5YbwAWRRpeP5oGLzhJCQtakNLKs+BGIxmTLPDXG/DcBhqY3hq89CChfDpbFpqFqD3vkqKW4Y9ZZsmy5yrek2DK8k5NMdvHlexFRrvEW3mZe+Uit8NVbqW09ugq23Hre15pEVTI1NYOPocYHnmvS3BLaYC+azmVz8rq7IQChEI6zOvuAi6LOEEnqwKl3dukkwuw+xF0b4AhjPTYUw2WikN+XW5dpWRDlne+0WjKTc2MKt9jx8Yrfo9xGNBeU9lOLsfbfmuFXICT8VLEDMXbAs7E3dGgxDrAGatN2U/M53oXxzVRxj+8ubsd5WDB9qDNOE3mPDgXi4naEsBU4D5rOnavZaY8JlhlvivHcPVuwdK1OeX3yR9+gSXw2aFy2fJuD1gPm22heockivUehUPEVhPPEHgtoe0fRAGe6kvaMjPBW0LmVYBKAcpwib2cMdXjUvQ3JFSkXCpq6/w2kG/RTyIFICpOye72aP+QrYOEk2q8xiXlI6nHgfDoEPXe76HXTU9+DzH3G9aQXlVdJNgzXg2CxSAOM9kSCPJmjQJk8BjxDelWWC++ZxOMa5Gusd7m8iYal74+yHCb1gU0g2xSotiJPIFVFuXHDuKZWGcizfKzhoo19DJNpfz9hq46WQBSvZE3h99kIwCbTHXykcIWgqx+jd25IC2kxlBHJJcHgcCqLbubuApeUH0zODkcCQRQUsQSWl4q7mSnDsd62jR1l6gH0zggk7Zr4IqtNLJPq5uHaVRBaapccywsQcJXTTkmSXTtGOaUL4yFyCoK3p6st5iyYiomLaU+loxeeZw5JMSvjK6UgY1czbn4kXyh0vGtecK5Kem4Jdydbpicwkb+LNSksIXScEKtdH/OBpWamtsNytJ7/sYLiWz+0N5Gqql6QoODeBPxV+4e+FtvXeLyt4MyGvmgZkIJwlRFQZKAVQ+1y0IcUpBPgS0kPXnpN5RjCPUDirohFaWu7a73rHy7FwxufatFabANf4JRjp1Ry7MO/oXuOab2qv6+cJ76t17hm8f4SnAsu7xbOd50GyEx8UXdAT0tqjwjXYQyjDveesr+7nWqf2vpUU3q4QurySUGn1zMdGTdCkDVCtP+EofHM/O5+xKcPCwyFj1jJGbEUGmEL9GjcVmHin5Rsw/a5S7uhcseAtdZVPjf3YmY+43rSCkp4RAKM9NsY9pQQqAuUMN9R5x+SCpHyQq8yWdQ9y64KcxsotEY5DeG6GvZQOapDbMdc1/FtjVg/STVy3EfRT3ruEkF23BR9OaKaonxKW/GyVOwcRkfnoQCfHHSVw+GxzA4lBqGRyI25uInUSdYhBzOvE9GXQ/IDZrJqP/h40jAKj56PV/Ka8PAp4OfZ47CPWC0wTKn2vja/W2coveIQrXt4vYObfM79hfDWbWoIolMJSomYyoDwYTMw4554CUfDSlVVN8d2HYsn45NwUJd8vJpyVVcmwK2hJHiA+ts4+4TNPp8fqEES4kfl2JAbr6kVHEiwlizb3+SNgG7CvFwps0TbI2KVc9cyhgaG3Sz6MK98kpI9c+9Dhpn09jXJsT1DXCBYLICyBJg8VPToW7lIkFNLbvKMhRA442R1FD4veLdrX2hTasDdTTGzWUcAoVZlzRLzJAzFegg54BGM8B6xOXLUHjaBLfIcHUvgcL3iPxyTXEfMfT9IoQm6m1yucqz3bR7DyVDakEFZ7y1WEFYdOh1UieZ0lfnneqhZskHfe2ARQYXPtaymTKlSIfW6PX8ilpURh45ettYUHFljyQB6T4yUStPnQnMjMcmT3ScLksmzv5vA6vV5D8d0qttiUj8fcI5nWNTL4Y643raAgaON8CuYLjAejp1XvYmS8QX+nW/MK4MvL5JLrS4LrWIkzh8wrMV8TojAJYn7uHuuR8lLwYYZ2ByKeOy9dVLEYly0xbXoKVJVLi1gdQ9Rm4JqWAhKwMFzlbrwydEycVj83wVu79yBCXd6YVjSwM2Rdj3KpnK1iCctkFsqNUCiiwhLWWq4JajcVkcLP2+FT+QxGmYnNu8blDnyumFNPtUgBe/tzIXGH51YBoPN3GEJwU6SjRxHQnDP8pEvM27kWzSRVjOenMGGm9IrJK3POegpwNQ04nCwxM0yPiVkn4C65qbXrMDcL1hM8jReTE8T3nFJGC5MbkgqkaDDHTkEtGjx6zUVruMbiiQMJojyw0GvXnhItAHATLuGVrywJduLPzdwU3rmzUZnm2dOk0F4mPXOsREgfW8AF6n431/P8uYaXWnRJYWlJIZprTChVnpPCeD+U1N2RoFyCd41wF4zSmyRhb7QPzaegt/EnGvM9MO0NvihIpV11vpcPZHhO44gnCvYqWmDIx2Fr7THtc02fHzlpXzSksJ/uS/7VWLk0UiaV0yOlSzJENNFgP6gaQ9kGBvfho8YgvAX88memFHTAV3mJwrHCQFySDN0vjMLEPpOhlajVPcnTzifY0Ph140ExrZMuLcgxCoIqeiqBTtfX8TLAmtDIPvbmcsNsUIdORAD83YrGuRONBX7P+/0ejp+apZvp6HkRmDwbct8xUW7zdogHQUIVUF7JVAMV6n0ZgJmLYrcp13Y+xWRNxDVlgBJQgpk06sYS/I1JKAOGYeUGvYkbYJhmeldqxgYtlOwnYKZg5WM2YIY6NsH1wChFFws15+nOo1jjb4cYhsUMBKxDmPadFU0qF968YKQVW4cxh2As/v3oZYXpxhcqbkpGEB5OjCCmG1dycIsLx1C+hMqCw1W66pTXjO+N8E8LxxLEYqgnxvuQyo0EiYSI9qzoomv3WhBGlXM+egl59dtwn5syPIowtsJhgRXwh1/JUMn6xLR1IjwJgJJbz6LFbiOnN8ZsRUU5LuySbIgel/VJoaXy4lyJs9ggq0cvtzTkRf7iHh09fwtWxmcoKV3YkoUTtu4dVA3cz0mgFa4V1gV4QCpxJ6XmkuuxeekKaCpEmmM7NMp5sOS9pbE+9cZHNkFqUOy8xCE14dfwbn82gr2HGNKzEuXVrxWHWJO0lHyP+czQ5Hg6AoapdAgewFJgz0lqbsIN6C1CcCUHGR3qfi7juGTsJbiIG43RIVP0fYufau3AtPgIL447nDvdYYf95s35kuv/FwrKSujEKy9DbrbskWLBpXuEgPSGNDbE6HNv/JjDrhH29p68VwcAasxUZuwJ0XMcO0uaJ7ZHZnBn9YQu5d4AUCviPoaIU9DZ+tDcuuw+3JQvEZgYiji04dOjcWdpt8r0kjkJdmLcqsY540v/XaPAnLVyRDJrHth6PFghSu8K11JdDAHUJiDt2RDjSBgZ6NPl0m78wtyU9wMj3CIsIiFRTmTEKGmKwYfVnXTrHJq81z1hepQyecU0Ee0F53ZEQzqAHpKyEjEhmKGLolUIYA46ZHihsp167A/9udEwauAjOr71hF7ici8L7T2HW9binJ+SnhyF9nK/NZeW3i97iXpKaVNBeDCR+xGcepsbTL/KebGSIM/Kyc6o+lseCdEFE57dc+csHLfTVRhOImdfnj7ZyO5+svdGTU8MzaciVEJYm6wRS5H1bhwxebiDN2qP1DLHumvK1CVA2YvHStIl5GFepvVqD+snEEqoJhh40D8p+SmlpAA6VNuL72xtAwgF59ohjJYgUvEiKW6x73DA/GIpoO29BIVrdD6Uw158r7Wd7cfwCT2TcAdG4ZOSt9E4rPSN1598jTgoYIxa0bwIgd+Vjh8IWMsbs0q1sXlY8l7tsfSGbIpY8p6LC0YOgvrAd190vW0FBbBCCoxw6hvc4W47gyAY6UFEntQUxwNxASYwik94PqzN3qYvCoAhGGCYpARnwUlCVxm3L0qDzXNp9SZ6MyNayU7ZM2XCO23BWOhY82XQDGM89vcOMObeZkJqMksDSESd4R5xTTEPDAC2dvES8GYkZAjpfQGcKNjXjfJcw8ROrAx3YITUIzrYnvOOEdhw7klV01OBGVNhCK617L0Z5m9FqrE19FIVj6/bpZFUMirRbf5+wdfQNzneAefWbEm6FHY+9E2KYHrzLu51x6MFu4IZXwP25hTLKd0RN2LYr6xc5UTQqixV9PSCu6vH5AXTl4Vxg2teSUsKfRFOzWRnJytrbOEu1xpwXrknOzy2RNNq5p0093hPiCGZtH7qNRny0NdNofbUk7+i1upZvZbPnZjKEAqxBjZmaIGqVyXNxR7T0FZ0gi43ZTATd8/i+UNtY2fxNL5bHsYInY+Cz3nJ8/agEiRCuVGhy0t7L5SDhcNe5xcJxIUPKzXKJ0svpQwdKR0KibxkwjlmH8gTe6Ub0UirWhK7EiSedYDJvwzPyAN9UZQkGBxuSpp6WrRnvhP8ID3yK7xTc6YZFfvqmiocTTH4n3XQR/EQwZGpujLJVV4SNSN1lZy8xOS9Cav0Vn3M9aYVlNvzyi+RsvB5lxM55QJ1fsqEeYTrq3sKiGf4fem5lxlb9zhPoGAEN38346wZL5MA7bkpKj73mGsKJ25y95kwcdYuZPlvCUxg9UPBaO3atKACw6FbPR9Ka6rR2JV0du+wSEcRUhxdZzk4xJKlaymAA28+B8fBXI6dfVGCSQIcXx6EdB1qXelREaz1fSbuSjFQ9YAS18R2b8BJ37mUDVtdcoNrfcEop+LjCEEAM2dXtACO/WeJt9dMi25VAHDeTAB2bo5wK/iEsJ6wyOQqCN9WkGLeYuBTbsnH5VUChsHfe7nyw8syghXcMIJ7NKy7YZ4B7FXpp8HnOvUXAws9mwodsOYv5eFl4OF5MNel7wP3PSG0ozycY3I+tlA/tNe4h7bDHDPUmFaw1q75cro6O2kTbr2SN7ckU8Epk6WzDNuxbngPVcPKgMM4nEvief08xiB5PgZOwr+8UN6PNeExCeL0ZF30DDOVHp5nugje4v2hcFYou8ZpaSMRR8eQhWldpx0zLF4J36PjYEM1hIN7eYgHA72atqXHRryP900RAd9BIT0t5IuKOz0vNiSuCkcPbpMejYOhI8kRKSRDs7vSMWHAwql+T6k0+EGF62NMzN+V9E2aNVpDXmjfbVWekp961RM++nrTCspJr8DejZQ/6N3I8rL87nyCBZcVAw2hhmrbF5NUyD9dB+5yroITXOsF485kCMpXbuAzhEruO2oW40Zd4ylBKsNQfqbGk+GwDLV7UAnTiZXT4n6YtAWHY6zFdYaw6YHr5t0RHMm0OwWPGKYuEb+Yauvvmi8koI99U5UOO7OV1bvQT9d9sdsh5jNX5iTD0/0aTvB3bg2Z/REE0Ep2mzFcMaA1h0AyYwciDwCb96lPmAFamYHwOYxtsuyjGqxjvnoXaUbvWdPioGeUF0phdCiwbR0nvmxFWxHm546vw++v94dIeL4TcBpbnxjjTfMFrNSs3iPCb827sehL+QsuAQ9FyxSXFjlRmNU2UiTL3/c6J6exhAp7lGyhvrSS7Y3SO2pK+0UjpoMQNqKpA04qLu3Z9Jw0WI48cKnb6d4dVVOBsknoDLNKoIEw09zTKyDLWGvNfSZhjqlu20IL+T6ddyPYJA4a0YeGa35EIy/lerw77enqPHPq+ZhQR64ZvfMPjS8e/Ai4BB0AYXTloKFcNPM/Wp7a8ExVjsewqT0LwIZ78/KXY1NcgzOOgqCwjDxKmnrKFCvP+g7jrbeBFkIiZMUkyYpXxzsQY2pr34KXkf4zf3MzNKV8ntjaeIwijY++3rSCskp2AYj/ifnIg/EINxVgb0Yn4dMqkIJhzfPEVp5VUdBvvnE9U8CbEuNCVgiJnhl7VW5xfzKHWkg9nrFCLD70D3tYQFxBY2ePg4t1aabamE1fMWbex3W0QgcWfvFOMaZ4pYiwdEhdhoa4oQt6X4+rNpPEMowhPOq6xdxRrnCxda1nM8QmmGNwagTKTc45ec/ooDEJW61Xz4UFtoUuhLxG9PkYeKLgEtM1txg74SRGnCEu4yvwGgLAnjbEWCGU1V3TVqDgoV/lAZKiwY63M/8Y6wrvDBs031bMg1BpdsIQZQZnGulYt8Y5YsxbKhSwkmVvZfvVCy8JW605kqqhkvxYohN89Zz2vRh3YetHYUYvWrXyC3slihLB84nEYffdkdDgXKRfSPgbTkL9gxOUkkGlTXk+9b5CEQ6YPw6vXx7AfqaSLdjKM6AwbwLIno5Ad833EsZlxVBlyIFTBN1IgdZYPpIi7k/pK7wIDmet0Fopx06w6vH0vFzeoeonCc97r9yeDKNIWU96kDdE9zzGq2e5Y1BPsrbZ6kWA51p2FlIOj5kuC5jTi+NuPR/Vn1cc4UDwoZrxpJzEONkPxc/oAM9z7ksZmbwp23d4n+oZ9aWqGfdjrzetoKgqRYJ/b+C1rg95J/J0YmB99qDbyV4AzPfZRVYMU0LBrepr/e1jqom4zXMiz8FlGXmImN6nP9KSToYgb4mzuKlMqbJm3b8WrHvyeWdyBwxEWMppmEQrWurknNshYdy3bpNfGEEj5UMldpl4JatTihqZZmrZioduja5kCXiM2rwYyyrQeqJvh+CVAtBnI033Ttx6FIkD462h4BGj2pi33Z895bVUGAvYK0sOWol8nd23qSimIqWf8kzp+0JUq2BCXdu8MHkxvH9rClYYSy6VsdQ8qUTW8wElDM5eIlzoWZKwUwiqPZceGDm/6ZiDCVXlcC64ZZmpDz47w2uYgiYFrGHVzq9AYRQE4UjwCiagxGd72IhvK9bCQdD2OqG1Votz0sHV8+U9cLTLdOvWs+e11/1MjZDM64CrW0Rj7vipcMDJhNbwsPmS4ZJ7hYLQOUkJz8buIdS7bgyXKPQg3qC5N9hIr/x3XY+XUHWM8ruOULbEe16OrfpI73Yvm5q9uXV4Tlxp70d4InvFdK+/7dHR78kT0YNzzefijWxg0XH1VGCZp/BdL/M5MHzVMAllCiecIJ0KI7h3QUUmix+Uc7QM40CHxm/sYWNgM+Q3ualtoYKOLDAhXFbhAWz8HzzX61qhc94/9D589PWmFRQvGKRDCUl5AAKgJhS5n4QEETvW3+c9nrsSfRO4UStezxghnUgEItzAeQqhvX5/JYD47ApLlH/fNGQRUk8psBUQMepayonbCpvghqCVZLYUmhqhCDDe2DN2ae0Elg6JAqwU4QiXn9raa1PlOhvrO210E7U4yHyuZkdr7e1zTapURVHT3yGYQTmgz/VrjRYwtQvXxNlJxqDvH/vY9tily1Pr4jwdthGKw43uMk0LiRCeWb6c7urGMDPA+JA14rCA8nDEiAgvO/8E12PoMMGenicoRGE64L1K4AyGWlqp3v8I91l6WjhPw02fi6lSCM+JyWsX9IHVrVT3UghLQFvwC+eCGwVSp3fpAPDJOZ09uSc8p+eCFb50bfjdwRSej60acINz5p50Km/BK2Qpc1wueYX6pLjWCFUdPtlW5Gua8+kzzlP8bKpMEkCLkNX7o4037eMK2g86NKMdGKsKaE+8HpYjenSu3sYfe/ZHXM0y9hafwBq/1FQRVA5E46GANkgPUtr0Ps0rkmIXzmrP8TgL9n3IAEpvXq+xvL4uK/8ovuflGKHS4ZmwpzbaOIgAClNQoPGojDhML2VLfwvQuipK3IHJsdPYwaM3eKfxGHvdOZUdvIGwULsLy6fG8pzWVLFqD5VgK/L7ClrHm1ZQJlcEC4gZE9NPMXP9IIFlAusrKFQ09xIDJyLOJ5hJnndsTdWuAgyAQ0ipfNQDywOjzy+egyFczQfTXhhzr/u7mMAtKpaGm624Aw7yZvQTbKG6UZFhqRK2CqG5gYgw7Fmr5tCc9HVjFya0Azj5dVOicv0HnOhZGMbtUm1gum9ujA8WEtVlXl7aLPI86B0+fHDNr2KttlKHJY0bW259xd6vUlKu4VoM9bidm7XqJmdiTBJMGifpUuGBC9PtA8vrEKc2Szg5HACJ+stSiA/BTGPZTd2Ex4kZR/St54EphxUj64H/zkAxgpDhmcqGcxXVZVQmxdzcgwiAOhrbuyOLkwJBHYR9Jk0o3FqDQk/Lo1R7dRbfqcP9+iGh1aNklOYtxWJKjDOEaVxUYIAwUgjIe0s0qVwM0NvDPeWy1i0vpEaoJR2KDHVP5txwEp9riMlDJW9W0oHoRfecGIUJQLbBl2KtpS0SmIo1de2tA9up0nsTwvCcUTOSEuJ/mRPSDK1BdBZehfQM6gcTsRH8wc0Gs1cI36l5s0h/wox53IcmnLldUtQq7gOmuACkxdjzJRpxAn7g8YEJ4SzAboLf84rQ5tbXJGSMwWJv7rxuog21PbvlHepzjXW0lbLjOdYneXtNjfiC600rKFI0rk3TAIzwQfzNnxc6BTDIO54xkQQyInk+rMQqETYQ7fCREhwlhCP01OkyY5XOpoxU3GdC5jNPMQ6FWwUBZvtmN+1JxqO/pUFf44i39tqaG8BWZCMEFmazh9dnS3SUgiDB1lycGI0YaYaYtjyHNqNWSKCdNIvd4pEw0xgVgrFmifJ6OZ5LD830YikbMyksfLJs4NTJfPLGiGk+Cv188LsZq5oM9dQAgZN03WaVSCbojmTecSi6uygBW4guD//LqozcK4y5byW8euctrKt4L8S4vA7gpAt+6+mi+ere53KL8hUm0Ji9M+eroqfDGoEoGYVxPefhxDiZqI2ZhxUpflZcp61NLV/WYS0hXMBSfKTMNKjA9+SgoHchFLwBhbXmsyZRWh6jYEw6BRgSWJqsQnNNZfCJG92hD623R7BUPB/oc5gic4j40yFzKV8hm1x2HzJzwUc9U9ZA22F74FwPLOBGaMEhlTtp5xKCWtY6RpEUXGOvX2llKS4zv65ZoDwxdYZSlCEk5Z908FR5GLRPdC/32BbWu/TbEgMyGZ5YvFU5QTIITC9tg0XvN72mByrPfhMe9Hfw9lJIKGig5H1P1F81AdHOh2RI0Ip5gpSl2r/fuscWlnf7A16cz7vetoISAll07pb3Pd+Jucp7scX4K+7X77RmF8ADsWJwGicJ5NA7ZHHGPUGorZhcxnf1CsmOl3nWF9+bDEc5IuOtieqLDwiYCoHqXJWi0NbnHfM4gU1zlkKinANZAQrzBNPvvJ+fjUKh+eK1Ell7v5ICVhdWWltGtHCjuUbegpUKuv6bAq1j/eveEKTQnHtyRqqXmxlrvCz5lGLgTyQsRWsALZKBk08+1fwzl+S2z2Wzdsm8cTvhPINgBA1Mwm8wtUxgrZ7vVqOt3i3V6q2keNH4WHxqNpZxdDftk8KhZ+mCtmUri//E9BfpqYxwnoYF48KVzyLJ2H0ROAoDaM/KSr14S0wnunINpNG+dyiiPT1kNLcT7lmhOXvvpAEivFGiuExYIdikMd13a+carPNXSGtWFrWOgbUtWgvB6T2h0EfdTisypiNZ1bTu7e1RTom8gcwzsYcG2JKjzc9COLkpXfUS/FKEM8Qnwk/hnuHZFHziVzJ0xE9k/ADo85jW8Rn+qEG5FKAiDNc5PaJZ3iNaUG5YJpi7ORppzoZgzVlS6YUUn8tY3suxeCyNQPNA8T7BW/SjPUJDSH1iSrDhT3s8UuATzM2eP53vFM06tDb4a31+68mtPBZtH+/LRs9WFZtzpTcdwOQ31simmWPN3vyI620rKLzsqqQWl0k4nUh4GsKdMAN/NvaQUGE6KFb8Df4ewnqLzwkpCiGlKyz6r+DyzAjdmJ+VHricejvaHfNMEoW/zbFIgKOUxDu56bWn3IhHxEd3YloG1sjJXFVFNAKDk9P8NFfEc9pNEfO0y3pMn2E83PDFTpZZqpnuTQtanosjmWaYmHsFHqRJJpOUxa7QSpaxcvOafjA0VE9tJtQaNzw0zblvBwVuMOJgmzclvpeQA5mp4BQhSTfqIqOzUktrvcis5ba3gg0sK5ANDpsN73R+yCi/gZPC6xBJ0JoTh6NL5exZwkpCGoDOIulbCnnAZaRN+ByNup278tW4nOmEUYo4z34c04cEFKqE98pzwggdzgGbtweRlBwbrjF4BkYhEM4kuM8Qbph9tk5y3tmDhWuuT8oaLf0zPXkKFfLh6URco2Co4iJ7blDIbEZZwb1EFNIqCjzjlrxuug4XHC58OYynDFMUYk+JJq1c8h6FCaQkcW3VQU8IeGvv3VjP1HOLplXHlCKPCgI4fFiXf6T3KuwGVwePAexBa50uLV70Iv7TIwOeQlEhzlNBH9oGq+m0r3p4v7w44QVZeyAX3B4zjdYWYFKGAC7umKpVTBrEATc2lYEtxS372ej+NN7ddPEeLP3XS5Ks3MzNfBBrchFKARBlxYOoV2fwhBaa7egVF18frH+pAG0t6qHvM9EKu8Wjd4q4Igm2HtiUmm1czTeYgwWbOga25r9uUrVNKm1bKZkXjC0k0Zcl+YyUhAGAeqaHImOKoVFn7ksDkUhGoFABdLKvYUhL8Og5QVjeF2AO2+J8XK7stcQztnTW3Jx2qzHEnA+M61oKEOds92lKDsNpmFsxV0KCSYoIHmTgiUdarEd4hEYBlIKDrarAoQCH27TOAb9a0G/fpeJ9b+B9TZ8PvU/3yANYUR4rAQqsODq/96Vf5fXKkBg9Mz6QUPM8hkmPF2dgb3qV0A8LTV6OpbxgD1fI26T5qK/GgVEIpYCb0NtKYPNz4cq9L4RjPW8B2GPVH+1zcEoev1Rog0c4AfwsnHTnl2CmPYTYc06whAWoT0E+I5m85jPlkaxEWuGyN57Qj2KvGa2/DAtImT2ZzybFDlqvJojwEvcIMPK9SoF4wl6TEh1I+eu1LxS68mnFoZytPcWl0mNT+uLe3s5WkrD2/MAnqhCp4ALYQzVxMrySlwvr/uEBsx4fImke33sYTHzr5ZjQk+haZzRxLJyFQ7iVYZZ7BW0PdfaaEr3ayI71q1+X+Vzu383zXQNb4YOwAWYf+PiVjERoneLjIlbSsuTspkh9xPW2FRQCRqcVu0V9hGKkjBQ3jTXBA5urfFM6Yiz9PZYtBvjBo7MzbCoydQKn2u0jnq0hJoUgzAADKzq/RzHlqe4p5KVy5vGMBLGpv0XM/1V1kGLddjvCbrvMb1EIbDWwWt8XeidWMhUngXYBPPq7ghnaqs+FyDrUfOQylaBlaepm5aliKJmlxrrGta+w2TwvIVgpiJwwK++JhIIEgd5T3Mgcfz9DJvDU81zfaP1aGPSEFmx51ygbmSibnwkO59DHYsSDWym2ZmBq/S+LlgJVDQ6xrZv7QS73azhNS6wQ+hLkl71SzzPv7gtwCJ/jaOAdrVKFgjQGtapqClcx2PxdCgPx0RzYVUDnvFNhP+MpSEsdbUsLIM0W6VienaTfPoV/0Ul86/ASliImsEg5AabpmvaRXOsvCyF9FvD+mPCZxjQS4F5Ajvs7pwVwk0cgjkMYvuEQk8JUyscII837pGf+oLIo/J+am/ascnQkNLGUZJfc3xKKmBJnbRbxC/FZGWFe9wjcNQ8MIvl5i28Jpg77IpJJo2xaSjrghGfnQTlcht3QgUl0Wg3Y4OC+fXCOBeggQCfQCudaoy4tNPtnCd+3AYG93kHja44B28LwsoM4vge4NH/RhLwq6UG8zeG2W9QiDe6Gq33m3QOnj7netIKy5YGEDAYwG6FGe3YzNgoh/S2GYBeUXFtiho+pZunjgpgUfkG0q0PfKBZWSDj2Vl7K955PEnAzpvqt2H2GWGdPIhUUM3xovnA7euWmZMMgVx8B3vRO+LsKc62nELkSo0gs7xRGqOnZTGqTMqbeI0mkhDkODV0BNIzQcRJZhWDu/b0IkScBRYFlxgFMW3RdEjiNLVek5bKVdZ4MQK5nCZOY0kyiR5Eh3VlI9gj4xcCTSdTAOfIlXDLd2Kw8L7x6Gq5dmNRWtXZKKO/W5RICNUqtGLQE/sEXEUcW+rLMdZ+SVnU759Lvgu5tHffMt2Ie4QH0mLkmhaUKkyjpjqeY8YjHrR8KMPh2HkSjukcJO1XWuwQKqHzgdq6zeIQDK3G141o/BGApn8JRDVpVkeKHQmkxb6My6dJi0Sdh5IMWiePWPZHP5iRxKRNSEIIPaU/l755/YTeOAqQKVyxFlvO8YfIonM8y+7iA6GvTgweuu+7nqlAr7N2Bg/cuzxlxQV6jlgT2Ujh8KFxj94hKJnB+PvlbsLXxwGdurOJxaKaYXD3l4t67pEGHK/l5mYf2lJlX43xZnqo+dgVpEqHbBvf6bs87fIWfx+Kp25lxyacPrMRd0QCNd3vzRee6X/ASfRVWdStIV1nkcdYcklv54Mddb1pB2VxLYmTia6kAAGPJSEiJ0CoQAf59i7+J/L6pdCpyCfK5y+XQTxIC57PF/RtOrC25siNG6Tnfc7i27K5zMrTXGClE4XwCgD9PvO4QqE6kIkIx2Qxt1TBb9U+ZG7G7RT057LHV2Nxb5U0KocfamO5FcoXrvZdwsNVSSJovzsUJlrKMFM6NvI9KJgJsic7+W1O4wT1HPK1k3oKlGF/0ffB7xNgISHs4Albjwg7mpjHuLFNWvhEVZlfONMzEC5g8lFDM3VVWsC+MQphKQlpvSbuIpnYvh63tYZCac89YDlcFPAm/AkbpoIBt1Cu8SamfcFsIGgvwoILY+5mnoH4kPtna/AEj2AybCat0vjO1jwKbfc2rtwZn/Nvl5i9DmzYYKsp55X1JSxpwQ7Nd44k1UUiiwIqZEZyrtbrGwQhDrSGFj/6lxS26Oon/p3M1UuPnTlSlUmpcROLt1gBNsAemOqYxindPYrnnJXoSbwjjR4LeLJMeG2DhppkT1sAe/hONWKHdZUMqOSp37uA34/k2VyYdlJOuK/aUVyQvtPYG6VfsRHuiXsoeJnl3hGN5OsdrO+tRPpWU5j6AU96ynLveL9hLjhDe9oDceipXIwR0POvZ9XO7h/+Ol+SXH2TpX3i9aQWlb0tzqwf3IgWxQj6iiMUva3I7CntIQgwQOwBbWrncfrIa8yYRiwjtNkRgBWqzcBFEghHewKYgnE9BTJH8tEJPwwB1SqXfcwDnE+P4stLzLBMpFlK25AUQXGRh6DPNvbErfSLi8HzIol1rqWnnLUFdvVVQJOHac6WPXMbLD6S86P0+MTU2aAj8tfl7t5wu9zYkdGq8PLoCFxl2yhNeS3hRGCseWZ6oNdmO/IcOhXLmt5hvU+Bv7fZPrLCIQmO0ovrdORZ5qyvD0JXl6EFlks9nOW4KlRR8C73kJhIUsn6ZW7CdeosKa/hY+S3J/CNcKlrahDGwLOXiWFqWFGpgwhWIv8WUQ4isxOT1XaU3pWHFx97FDjiFAQNglYQT397OSY9Y9FxPpytDOjwbDo0Am8fDgko8x7BhSEteAMFUTP2256DIG+TKmQLPcuKrAk8LtqEMdsCVNNSn5hmeJkz1SIVAs0A6MF6bjvv4r9mLZuhrBLU8bZu1r2o9ejCaniafw3O7dI2tmiTxLBCg10Y0qnnV7ZzWDAi+WJiwWIPei9nS4hMOjZCXTpdqrelcCoW8kieiqR73RPCY8zzMB6W/6SDPTdGTZ0q/iy84lYHrObFC/QfsqZQSVbpP789QrkjTSiNs/LgkOT3VCmM6SkHUvgBHdqulXOzC5JQFuj/metMKSvBkMyUADKuMVyIFnzPm00sSSJMGaAYY94yXI7CacxHTvVNrt0ZZS3G4dLo9VE5cYF+Udqvq7WRPzb16qx7K78eCXda1D4GSIsDNVI2VhyMC9drK2vho9j2Mvtm4TR4G0WFhz3GR16FBRlBTs78xF9hqsICXG1N48jxgpjLWQqyfserKI+g1zh1ITuPEMoFXrdY17wPj4tW7AHsK8toUVXkxsN7hx5tsXgya3jMrjDdahHL9NqZkWOujECn1WJGiIWGTgtiT0yvb89CHLjenMOzEAZ9xOOMlNHcJvMQH95fPYFIughks79NhdwDq3iPcuIRlhRNocoXrfglt4Zr7qQTzLcxUMzclO4uB+pwoCvUDs0exxksQrPUShmnxcr54PkbBZR5B+xndW6R9TIgxDZMOOErwARZucyAggaEQcgt33DfCba+5OWTzYN4FvRLJJ4V79SgpScQDQ5O6L0IQI6S5DoZLP7fCsDAhPsKnAZdty0AoelpciUSelHliCMWsgdVPBAFPJR+nh9awK/PWOtgr5gjvVYakHVZtV3Id215CVB9pvQsuhzzgXPs2h2z7b5dJD700xmuStCLacBg05JdkTMq1UFadeiBZ0MVjWYJvhBc+jeZrbqYrNNOzktEH0wyGf6YnPn9+xPW2FRTQWyIGdMZPCIG9J4QifpeGF+fsuP9IL20wY3sjeLFctWcgpKUYYdxzFfkcwLi+xEiSyLRRe63Jbut8LvyPV++LFYee9euyW/y2/638FLt/ZXVhCNN9AFrjcyPIStBYKWAFKwB4wd5PgWe6mDk/OMDV95dmhRIr5VlI968EP1ZfDnshxHB0CjDDUiYDCjnhoJ5nbS4tJRysRAHjtSnsfREgpWrNOfOMuhZTaybHJTMyvAUzC9QRBH0D+pMHm/PVnCEk4XLJrUCBCtqEkVaHTUz5pmhEZa/nhCHkqbH7nfO1QtGxVsOEDDvyNwBM7kgwWXuNuoZHKyQHTLv78MRYqFS81ziuocF7O7fCfW/AOfMFrnqhB9Bx/scxz5lO+LOVI8L4v0K+sl4p6BxCvJ/sRYJx8XMu+nzlV5xDk8+ZY7GeqQhXQF6OWmspYK9iIUg2pczjwXwpcVZFulR+Q3p1RI+6DsJBOKZCV/GeTdk9CHGFhwijxrrH1V1UBjrJ+EovEX4owufsGlxyTK11vWcmb0VNipSBxfdQad7WnPtUHkd6rIpdoTd9jGuyggHKFzL8JizQoPLJ37uMxzJ+iW8ziEk1ED1V7LGVgoDxpjhchlFmSBzy2M4cJ5xjnvQcRjKnsQ79m4/cS6tnbN8rZetp5qZqoq8S5nnbCsrsS+dQ1EN0x//fsHVhBeL307if0AB/yp22HWwUhDuHFE6ZrIjICOhy7xKfa1D+arRPKh/6/nyazdiFlZSbiszFw5Ln5Yx19Pp3KU3e/Kn5hmdBh73N8eVYgv7er79L61Zg1yaXEiKPxhHMgRK5nwKJsT4DKeHe/F8wYAsmYBJfQzlYTHE27pa8GZvLSaCFVQ6oOUtYFixQpchsORUf+CmFACAzkaJUPS7p9MYJH0wu9KX+CsL102nFuOX6LWyeI8NNBC4GF8N6HQeFnCxhC2NssHLYJwWfwnxU6twOXfuC32UvFtGv29NzXauXBJVMwW7LFViCtHhQmjuGUlCU4LjReLuUdfOAZY6SP+ba7pfxzgJu516N0XDPjTk9+UKvmLU7JCMvAze356T53s+BC2mh3zNs5oRizjY8bUtozoOt0DRp1N49xHITTj3jrD4x/NpMaO2bLaFYr5fxJAVMYb0yic2/jJsI6lRo1lTaMNdBfh33aN7bdgsasVLSHCsNLMFI4+X7hTZ6kUvroNHWqDGUbsOKcI5C4oMmtQ+VH8K+PpvyQz5icAjGIae4WIb4MM/rWAvJGnlExAt7e3yrSN1AH/PJlhwbbkImGq7ZSLThiEOGzPJ0dVcBnRuZfNT1thUUYNd6o83wBlTAAtn8QJ6MFwBnJCeGbFx8/QLNmntQgUAiwm7cQFL2KbH3ApyLSqFVJiyBpn4WukgAPhtHdGhvBHZspouP361pUUnh5so5aE129XKMfmJFknIpFL/mxnHFU4R+CthCNttcYgygY51zb+kFtIpHUNYuVNIbI0Ypxsv8GMFd1UwjZLT5ByEWGOkBCEbcAW9716QM6X2JH3kTlBybVg8W3LxpG8N8znlnac3yyD0fk48iC3JjagsOVjQ0T3nYqvcTZrnerfV3Y/JeUuFI+ZKhs/hnixOEhXuR9OAmrDUnwAKT7U9Y1dFsIqXkXBjf8ug1ahQjPUs3u5QeV3RIiPBWe0HO5d2qmJcEVRe279zjIkgjT8NWDwsnehfG0te+Y06VFVcqnn5hjF0MFXUirPm78GJvl+inTD9GFfeSKpLscdXcG8uLpLyUGyb3wmyw9zkmv5MSJGVViq/oAOs967TwEVzOHzqxlzMD0MGQwqlCZK8qgbiPlVfRSQtXHFS8szFhGAFKxoDXHUZABewKkWsVVUoKI+aYCBw2GOYKXiTDIBVn43k96RyWjmeMF8KP8/FBsOLVL9FL6Aj52MDx/IFIQRjqXnuEimxg637uY/dI4TM64FL3HS/4StebVlDsFiagBTTlHTjOhqE7XWrju5BRo2UG35ZQU9muxklhrp92aUmIdIzXsOdgziSIe2Ks0smf8WG11tWjXDTHwkpk2g7ty7hgEOKKEQ9z3dZjRhYTkvJHayxDR85xMbMOJnKL2ncJaAsmhHCqKTE00GFhBYBCEobDjhyMAiOm0xhrJD5TboSJgOG/TZE9MB4WfcZeGN60wind4lZ4U/EBpnLh+RhlS4yQ8CgxcmAsVSmGYlDMTdpyjjQXgeOsrTOpaSMZb4SBlqubtA2MAhXKZBrXFl6CJ7SvSG8Fn1FjC1aKmi1QCj9NU16ioEUJG1vOmv8n5zQx03yJU0jBZcipQrEbWMO04CRw52MI3y29yvTui713ChgvRS8YnPLiPMYatnfmVAirvS7DRXsCpNcX5hd1fKfTexUCCa+p6bCwetoQ/hYM3iM1AlW4eEwS6PQBOUahEl0Rce7NonYLp+U2nNScnjOudTvEj3A8qVQtxZIXBbpDcBLkEQZae+VcnyWd3U9um3JoUBVDUs4bofhECG4ZCXyHLchB+/CWNo1ov/goAOH1di5c3TXHCTWPcrPeNz1vMGFAv1MQwISD350z75r3bhWkfIk9xYUxvBFyUTwsjF+1r9BzPitO/JG43853OuBilK1Rp6IYmW95p0xQaPoraB1vWkFxbw+QoTpfAHBr+PCwVONVabA8A2bAYuKK0SrhlPS7C8nRMI9nzWOI0lZxAaoiSjeX+7L0vBfAZoWPpAiJwftPtVQvbTBsJV6vFKhHuTeL1xBrSWHteGR873JcCTJbpnh9byhSS+jW7ubcTiyFhT664nj22mAzeR2BiHwHGUnF5129MSo9VLJeqmdzvj+gRnRSEFxVUfMzlVQJOYUbNmuUjNaCEBNmEYOXAmjhIKYeDLUemDwehTNo+fvMFi2u63WYR0JPOA24psJrN/qxvswQDPROzVchC3kl5dL2e/f8q23hHENa+gaLuKQAbgm0HBtMIK0nPi/alCWrUIfwoeeUgGthH/tKCBUNNOcQ32WCpMguBXO/RA6L5mHvHrZeJYX1t9Dhe0VHShTNOcrD6jV3dIGdPdz0Bip0pwq/pIvt9F4bTsyHOOadAr0VRim4rTUFToG1F/K4Ab5DClE/yrk3WprgYR4h74724WMJfRt2WHjxPEUcys8gwpzImjAsLQbjRU6cNNBsM18ITwjX3x/gxyU64FwhxbmApmesm12DCz58sjRwX+aofW5ewhUKB5pz0reUKCqk67T7GiWhZp2p4KqYIvmIlVHSVAOj/NeSPdeDAPVw5uJ5PjIeP7DPv+h60wpKWvRnNJaR/FJClGvFMQxXCkR439b3x74hN4Dm/doolwY3Ini/BxiBDiyieQCHnguXpgVTI1ov725Je4161i8hsw6H4lR7tGkTF5nj5MzMupc12+E1KQvvOgvHe5pcsf7s0OvkwOcai/xclSdQAzo9KyUjLawUjly/rez0XBAOAPb4OOoDnReJRMWVTzK2TKQ9FkPx/mJbenX6HGHOCdCjtkIIu/Cyq/0lTRLMxtzBZ46zKlpm3s410IPOYaBwEu2p6koMgWEgVT+4GkFDv5TdzxIUgqcU5vHU9IRk5H3JEI32S7rlOceS0NT7L03x6oVhGcK902Xe63nd7T3QZeGxddPU1pZSYMHasbf0XeBB+S03WNmo+7nF4CU4W31F5O1SzljBrfZLQuiGCfMknqU4cOTWlqjek3IBNoGrCXuc4YJXGadDjzWhlIvFrpLVrSJQQsrCpjd3fhdDYgxBlp5Pz3AYJPYIqwLRCnONl+oIhees8NT18kAJjxJot9PwNPo4Z3sE5Cnh7yAsdU6X8/KA5c3ocsjvlZFzXyFPe6oEF40t5ZohVeeQaX0iFHrhJnxSoTBdFPZjfbbBk0zIvAALJs7JEjGFN9RhzjDE+w7nFGZX6GM7KLe8P7bE2ogs5Nlt07CRYuAhLyxWjiTpZ5SVWcS0u6jh5R95vWkFZTsTIDwjfcAlveUEw/bmTcVEre+zy6pdegBDFnphvJzKhDbPVhar3I1QMqzMOC65Ky7WiJ0bUy5DFmPIJFPvr5xTz/jL6xNrlleGTHSbrx+uIcxzLVJt+rfGSVY0MNq5wiw9iaRubicGfSPT2RITL2s4MT1OsqW9NtPLNMrDWdNr5epR0Zg1/8Q3gchFIa7FSEUYRYHk8AGEx3KoQwl/PlejsFz1YY15LPSsHXC5YOv9Yt6ai5U3zqkwFSr3niXG0Fpv3Ya524oHtrM7ppEUgHcnnOcyQJoBZRGKwRTCq8TbeBBeSTB24Cm8P8avwElANeG04VYMVx4Th2VggeemaNq/BXopgnYEJ3skMDSpyjWG1bRdhX9bxhKiyOfb3gd5FzbvA4JXM+9E3qASXTTGlU8BbaNEXg+usRVqEk+Q4Ab25mVatvZhY0rXCxPqzDyVoEEc2E8k1npu5zS6k/BSCPQMz4v+SSnQfM6Yl2hHSkHQ3Ap9tM9W8hlLkRxqTxJxkuW4PthPYaxQrHVAogsNzqEfV6Eh3mEFqnAcKjOurQ1BayIkZPecIY1MFRdBKThIXul58e7G1mF56+qc4RSudyvAED941P6Z36Nne+Yv2q62t875hkFPV3lV8Q8AusTTMJ4a0zVGifr1EuLZkhFFuAEQM3a75eZRadjL6xKxtsZY8xxC2uH2fF3eSYrswqsQSrrG6qwl0LWBlGOAURqUT+JmbedOLOMJrtceGK2bf/vQp2h3XQ9sWdav5gmM+1Df6yRlWfFi9GmxprC1Bc2FS/A5BCXmWIZDntWxXSecA5C4lLdsTxyL5/g+a/b6TGdXnDE35yoEc9X9PaAFwrNAgWLL6+hpltVgwzJ5A2qjAwvaoDVbRhKuvdysOuV2E/KxTntu5FFJD5GEnhiPaIPvy6qHq16yeQ8PKQOBNyDWjgn5AQGf9c9DJzyJl/Fi9iiNFCbq6THVL9hpU3R1YJJoNd6jtrwaAMyViA+4toS79/ojwnb6jJ7IigMlDUMpfPq8epKHAXvqHDKQUnvOfhxhhakO0RcHooKEe0neGnkc9UCPUATKVUwrtNmbkDfMpJQHT9u6xG5aFwJXHPNyivQ1zIxjrb11yjEyD8tSDv18DGq5P15VzFFhwNGTu0N6qmr3N6rSgZw1JdDCQWMLZena88LivcqvkRdRdPOoUdy41mkrMB6R5f1bdGNcxHrEb6zkkx5l5Fk9yDkdy4Cul9oSX91dfKvyA2XC3k9lcrgQ3pSQizWy6UOXDrndPLxYnx3v9/zIVJg+5nrbCgqTcQoXgQusrnaPEOz6qkjEvQTGed/vAWB39+aSc4x2+CQ4HooCVhxdBBkhDCOY715jhrAoenP0rOLKkacxybNgZc36TocJOpSl/IBgENXY3H0+i0cCLFytq2dG0cvQW0MfO6OypDQF/IE5PfUsMwKcAN4ftmxU4WPmG1PxJUtYwlchPCb81Qlb6xaCEsCysCgJLbuo4JgBaO5prb4ccPlga7PCjN2HjUloBp79edCGXfVaIzDu4sybagyTT+s1lNCCmDa87pYiK9ezngP2WL7yM/j9dlJyCifFslPg6D4RAOezn6+C5bKnBibvhnuv0CPWUrrkmpabOpUXC5+FC1cwhJK3hbCOXngTkOltqsZ0MPa4vEc9RoLZbxU6tITtBb24pwUGeWyacztE+5RWrQkLlhmOauA4WFWV9JR7UzAT3dToBdUAlJuRYYno51LHufaOlAzioUIwtYSv1hZhcc/lfUWH5xD4EsgSfkdPA0rRfRK/lIJYq3kz94U7H+tLGyED/5ZnzkjCNKmjt2rhP+hGCj6GVWyGRsV3ggkNMzeQK2K142bRUYqA9MwSd/LCmA+LrqwsRsivQ4bc1uBF3pBHdpDoZp8SD61DauM+V40lbk9MJWeOEaHB4vEhDutr+eEpKSVfUyHxWXeCm6YafWK+7HrTCkpqantVDiALUNa8Tw620AhFJAT51lMEM2Y/DT0C2Ky4PA/BiUWFOZ+mMVomLSApF9mZVsg1UbaUBbCfSwexxnqBtRk4vnNTUC79ynbrc/YKhlFrU3GzTtVRbTk80qa3TqZiOmKSkUk+7cFrFyaC3SbEmRchS5RKjPHBzWlh+uSFrh9J+JE70lemn4pVzl8eD29eMmJ56mo+p+xZ160nZ4Woc1Ozc5gKmiEcCZYTZiIWyPFe/bqYNv9IqzQ9XpqzvFyCa85Rz4gzpzdF64ln/W591xgvhfBY+/d1hSnLDDXsaLg1QlVzloco9l96uSxQU/jE9DWGFa8aeCpZVC3PN8WvMN5YWR/aZ1JKq+fk6VCCV6ijTJvSQ6Tc26rEJPMqrGdFRWABlmcm8zgsBAN2gDu7mibplFBDOylvxfvwLMuca8sk9KbAZfjJ5GQvyMBB+6TRIyS5nyrIafWrOcdDovdqXwtWPfN3F9h35ygrrXyd6JMiwUj8Hcc5BonWu3lwG+70fATTCV6VPV3aPLsmf01rj/CkvW0qmwY2hckdcMUazP+G7qxkdjn8VOfMx9vTgO0xum5TLXmSR2j/Ob1AnhHxCqYjKGm2D6yDFkVi2u+NaEY6Soae8TY+gPOYd24Xcb5oO1pw9OW+L7jetIKyNMwQcuKt2fefXCwbZW2aJ7AfppdaiDa8NiGWJaiKHd1zKElUG4fMy54CYNNwN8UimLGaoKEwXUNFRIpPyorThufGWZ6F+K7nmemxQoFY7exuj693xvqLn22atTaA5qr7I3lXmf4VcW8LIoVPEgax+RasLuW/3HipOKiEd6sM+lDIT7+nhyTcmL4kLJgw55yZ2zCx9Hi1La62cuV5NUbYalNq7XzxJD7S0jgjGZrzACQMMDArzMFz9AaV1tgB7/Q0SGvSJaEknIgmC1PW/RhlKmn1dH9ysJ/GwKTIME/h4nJ5epKzhJMPnjsGIfaMNSbx0TQYoRtghKfpa61fS9+qpIDViCysOiWqrmRKzB7W8xTmzXCkFRnOs9HTBGxT2LhgehXtoSzYqzZ5LgOkLWRXDMPV4Mtrv7NMNhXFW0/TQS7DKIuSbysJmzHDZF8uvtBTzVEUaqI98QSthUJrqg/hJGwpJ65gCkPCHoHPjtlLTgCGe8oQyoRFj/BvbKdU+2whCYVAx3YPN2Z9MqE6z4kTW14UrMaNogcaR64WO9ZcKvaB+aANoZocLcLVyq149LPCQcSdEtoR9NLkE5EgbSCwBPh8GvgfL9iUCvH6PG1Y+7Aox6zApCdRxjx7c3W81vgVLpTzGfAGOB6/PzOP5kuut62gAFvoBcAIBMCJnpO0hfAifECgp9ZSYtrtyhuHXZRkKoGvR+XWFOPmOLLAtlgcOHaxPrxhS2zyY9oE40e2/A1AJ9tm2GoxuVEYFHMsEZsysZtKiTZuVP2k8WZCzDBOrfU6tOY29JhciBTefLY4byuDepkY6CGw9aZ8OLRjJUbMt4GnKAVkHFjW+e71iucb+4GDYiRSLDiLMrGQWRyK5QdDivCBhFADkwMhhi44cp7ewBJmhi9ZsUL1qhg44n6BbROKs44CtrOJltemwyN1UaYUjpH7XrkHN9Ci7fEIZGdM8UoqXKWJPcSIF44mL6sNN4d3Mpav0MRJmg6lxftUCgeFYXqo7FZJ74jCBvLQNcYbw3BCNZYiJDoBcfZYMK5HLbJIJVHz0Tv4rEsqgaXsNtDvj23sVKg9Z63dcOSt9xPH/VzrfD44tx6yLESPmV7zPNhzo+Ex7T05YCWmWHlTlNP9sjQNJyFnYvVZG+12zN3tDcSAxXtZHjzegdpxSnrfFC/x3fzec3LGD3kUDcjn3LdgGXPv9AnA50RpLYSVBjTNa38fHEu45nEIDn/2LFk8yfAGJrwpXIciip42BOdTb4qZJ25WNPSlnjuJ/y3X8JIv4rDM8xrHXdd1P2VGy7DEVH7ZKDh6VQdJVuj5VObBKtKioStPFPmK+3N9Ba3jTSsofcdkNXcIXscbYYbYwEjcZPQC9gknFFmGXQ9eKthasLtKgv4DmmlW0lgoyKqQ0kCLdevZ8mqh8VMbNgSVCKHRDhMBWOfLcL0NChbJWz5aZ7GbLlAv4pcp4LAl6LrRFa1VN2t7FIm9dq+GmBhzELZupVqLBF9Sowmcc6iLV0UJmYHjLRfk3mN5eLG5cIzb1zBeSa4KS22nndq9LkGHvTyUQkvx74WXGstdSprWRgVhSqWxCS8rvoKRrhOjbFtISljXdo+FkJjIDXsJIyjUFTKL79Lb44nUDkLTZXiS+go3uf873t2wReoTfAWzGxaDZAOuLTlSbw4vYueaQdr1fil6oKZMt17hnMJayokUbKw5KmzR98ahtUghBcaTIO2sFRJNQCdgMf1DGAJLmtzmRqEH9uRI71BapuvVbUHus4gUMtEzBzbFR8+LfnRsgJlbYRQF4SxzHbQ/eSaVqrBMLofKbiO/I71c8mihpkLromRDMA5vg+9LerqBVWTaE7BS04J50CMa0/hNHpKXgFdjPEyFCe3EPlYzvC6sMmu9o9rN+3yfDByNofVrH/Bzl1qLryqPRKzBVYuLX3v/R8jdUcGQR/aiZAEHeWadhfOTczfWJEMEWz2miEKFrI0wUmk+uocePXmLt2rQj7jetIICwEJr73KKDVFWRBpzjoA+JwLOJxjp5Q55kcXM3A5vQNKPc0v8cgzhNYU7XYBZ727FB0BBBEHCk/DtVfFTPYSca3PfAa0zXO59a5zvGjiA894rzijPihQa5u6IkM93Y514LQqX5ZHxVOacoCzX8b2HAaj7aQ/sBfMCthN7/Zvuv4aLCiO8JUBolYhh9Msx5aWyMoA5HyYZlOYmBg7MybcyfeJfAeO5UkhRCkFhmrpd1li3hWB7foLB1nMNDFSBIekhN7jmrE0vwfH+QL0//O4lSMXQ1jgdylAXoBNkveBH/kGYyJOSzP+lGEpb6z/soWASqioYiL85HbZGIGmfScAdWF6vDKE1RgDV2g/ZglwJqFuy6+gEtlwd3ghc7DSGEbJKVD6LidH1Wik9osqE8D1l/XYtunF8fy20Aqw4QzgqL8TenbZisHmA6b3axhEtkk6KsKwuQK3K6RVoLME2ymvvIcYQIsU5u6twk1aiN4byU/S9Yfquh3aE80vOknrFWHXxHigPVLcTB3Ghnh96leFEmnbVW2Epsk1PEu926E3PO1RYU6Fy6zjqYehIvNeVXgesIDfx4n0W3Z1VRFBWkIYwO/e+XYxwXx+//ATwctCLTt6gpO8sGRadteTbVFNu3crFR4OGVik9LM+kALeUkjDEG4XzKWSbYE4j191mC1NllLSc9BwpCkk/H3O9bQVFs7f1hFm8+Gxkeq/kIGzC2Zc8LffLOwLBVgwVtw1rx+Egjql8DiMwXWFbfgDGUpYgphtOiFY5rRKBi4xU7jl3veUcCti8DVbUFZ+mcqTGZUASWTsc5Q0rphJJWcrgb5DYJeBEjHK5S2CGYnFNRJ4OrMSbrWotob0pBbHu8omiZth8FqlYcjM57i0GTwELn65chr0FsM4iAaZiqkRoxLt3Y08IgYyhFXK7XdZcmDiyjou3xcKyWtNIu5rBHgh6rlylETJhYwASEkfjTKZBGil5AyLJG/dzhZYgRjcSXmEF9/HgY67sqMX8DwAqDX+lnEgYymPmvIf1vdDcjwN4Wgf0rZyRY2CgdSi5W8qG3ktFvIUjKX0NhpCCHihwjJ8bwg0PexSKcC++o1PosOrLCiKwhRDUY8WKgZE19LYli4oXad/Zyzhrb61VngsJFo3Luc9BiQsOWRUoOp+coLLSL0+EcaPtF/xwjIke2L4cQ4eiy+rcMv6lz1h3jht/r7Fqwnqxh5YhQiGeeTdn+ewkPyNlWMoAhbDL7klDTcXCCuWmFNTwOL3/wHRiZUO/0gbRfB7aUIRpeKQXIDACXJ5mh7p531M7VyoPG7UMiZQDjb1Ie7QBHQHjZzR4Y5ptnovexNYcCSBPtadf8xLP1p658/77Sl2wx0VXGOYfc71tBYVCWsI7r2wupvCNNxlSABBRIlrG+gvYzuBBEcEpDSqIFfEzEKLckGa+wzRIG4ZjBUIusrOQBx8CNVVKeP0+05mUB/G9ZBL8vYOoJUSHYIaYtzI2MSKNI4UoGPhYnTGUhWVftPncoBhGL0asA81u57rlEacLa4GAQwrCYcfzDoNgMap6Omc+gnda/JH1LyvIFQjyzEDjxRKYeyELHID7i/j8GFkfVA6tjIViIAHonhlieiAt0HO2wkIXHB7+dT4/erw+tLT1WAHhssZoBaRLJ11K2UzhF3j2+ySYKaRwTNms5XCBHpJaDFheJ8W6AfTL5PxUEpJo8OA9N5bdxt6tEFAAyxxNqz2cjgLCViPp6eAalJS5KYxag7wQ2neCU1SdlBQMaxJlr4cv4Zh73fk0zCeqA6uF/wGWZJP2tKfkaZDHMdemeZ2kU65nylkRghhbwqrzt9DmawrJSslxcjE9dzYGaIxkp9Y8WHOUN62lY02cW4ZoVBZvLZjPvJQVdYUCnWNEY8IGkkJIJxwyUct8K7cOTe18bHrVEDYKezTG2NQekDGm8Da0T4f5WnETnzIvGt5QT6sRXt/g5nTy1vqIAM1vSP2SB2IQu9ILwCa2gJGbAOUaaaJeykoJasqFxcez/cbmKeHnnS8qTEdb0VvHJD7ietsKihYbBOOYmNx6JrD1gGNq8iDodMWqLSR01RK7MNVB8kC8DEKcw/IhJULEnG4ufmcaPdcHihWKtOwt0WY/sVtBGc6SQCRMnImN+U5uPrs7eUKyk4dlcZzxzGOsQZccb5UtNeEKMlDUVCFtVqOYJmBmWQyx2/PwfExs/KWYOzMxaXkULCA1VzLNVuz4nI1tS6lzjrB71ILXiirvk9KikBtxYAEq5Ur7kkzQwubdY+Lnoo1Q6rqiLBIw3draDvPDylCTOdtthCmxlsIgoSZhpdLaqA6Z/jI9QvnWkwypSxaVfg/c4X66THE74ND4DlqVd0mwFv0w7MFGlMbNtk+kYGJwuHWetaANDh5hU8Q+leLUjenK29PjAXGAm1z7GWaw1c9wonunaA8VcNx7yxcYGmtI0RxYce7b+VPtJm9eX2PuFe5bv/bQuJ0eS8Hux4RpXN0k72coQFY8tUaTnuYE8xqFlCwMO8qbQ1D7SAUm0Rt2yhHLewDz7qbQ3g2dEHQ2KBRShPl/rscJqvmO6lmDlBgzY0QYtwd/2iv0KFkRFz2y8gbAhPDEizdY9ihF5C8FsAM1+ebtjB5FPWFzwb9rQv3yiOuVz7V5KKrh8+ZsxClMQxjMzmkb0SVZCvL/l5BBvM4nkDfqHT25leLbIRfdUuPXjQflwCpZcuiDnzfcJl6CuxXjFGIzI7kxIRPe+6oNPWACsWWmnzX3yWMCxEZuTGwx7u3qKbnaXL/YmFkS+GTL1wjUnscW0c44VrqksPBRnyxZ+/IcF9fpyQx1rLBTecO6p0AhcjwCZghlRuMmcVJ4lJQJMRpgy0tIYWZPl5j9EZUMVv5qkp0Nph7PVAhyZfkLbmIEbcWoVnO5l5XbYKWETMKTqoCJ5itGL0YKMsHGVDQAq4oiFA/PRQxSsNP8lDdT690d696U9UMu2SCOjVmGQBBDByZhkIpL0RvVwORghTdJ8xO5ulTSAwrf63f1xpCF7R4Zoov0WjpZr7f+NOra6UvVLxpHtFaAa2z99zxm75h4hBdV4zlJ+Ep5pXdN8kOKQWv+CZzG6kECjAKi3BcgOg0TZ1IYSKtTOUMUS7EMehE23IRQuQvAHNpn5aV2+k2ewL2oHkdmPQqPCWay+oHIu9L+Dj7W3GPeD7CC1TImujZ68fqk4BPepmspCfamak3ch/Zy9eyJWu92ArU8e/K6xPg29ASz9FwAq6ke//nYgltPZ2HRgvga4LDt5j0XvYQEroabA1r5BSbJ9gi5JMUrWASAPaGWfCtp5XiuCd/oxcrJxPALK6CiF3lppegIp7wvUybcMv8AIwH7HL7K9eYVlItMXAJfQjo0WCd0NoZZNrVADPH4uGpg8jLyuPvwWDhscjQTilZ7erslr9N9wZx6fFKQ8hyFQ+cpSLNOASQPgwgDfO65Zn0UTg4FSHPl/BxjNDx6iFH9DSwkMELDnqRR7sAfam/s/BLB52o1phcC87fWk0lU4g9OkAy389aKXyG7JtOLnI3FI2SFnT7u+6pMAnDYZVlGNWGWCvx3CJJUMu9NgVQTrpFCUoSFerXoiHQMrFzNoS8KbiTms4C0sc/i4Ylrci7HFTxvAz9gyspViVANC/G0tLM7sddlSxjuhyLB7JyixqtmX9t3ArME3RHjyrspr8Ztp/FtzQ2XW2f/kE2pCUt2Cc0y3fVJYfF0Dgy1v0hH9nppTsRXcw9OJUi5keDynGCUWa5NJ5/3CZw65E0eq/TiAR7H675LYRJxwsJ6O0Qxc2gwdGpvY8Ht2kHabPEBKYbHwN4KwomV0yHFn+EUhdRUwtoKiRzNxM4RolIAjMcIM+2eVuJW7z4aeGp3Ki7dI9K8nws+yVev9OpnyBuslE4OkWmlelVPNuDTrfk+n2DdMCz6xDrhmO+1fqf3ykvkEFfQYQ1vVTjZZfxr0iQJ5i3aU8Gx353RL4eCx7lKNUZkB8hKuALqPewRORU2qrWPLCfPeGWvAVwYgcF734I8O97V2A+qDYPBZfdPvRtMH3G9bQVFLiRZNsRdNmqzByPbxCPup0dCisNmGJ/l6p0tSfNYo3QKXWiXEkGXkmU3zJFA1lMSVtdTe9OqNZGXmZZPq21M6Ia3eQOJQFWOG8xxCbAQcEWlRZubrv4ZdOZgBYrjbBaHFTkxDIwyolNaNyVsNo9zdKggFcjAb/36ROTggdvnFEwTL66tR8ayBmu+oyUEeYcoQDvW6VySgoWV5u3X03rrW7s9O4A990jPdE2oQxa/cRmD+ufg3QmN4pWNpaiecCOlcR9xCCkEEUoRqOyNUBiIcMmQjhNgQykowMzKYygHQe4IMv8SfA4sD43DWUt5UJWThbPerbJ1KXxBvxBN1CVB9JIs61JRKjbGNbC1ehczdThHjfIkaGgl1v0cj1gLdxgB9wgPSChvzTm3xsN8vmAI02Ap14beI586XTBf6HtPCES0I2UmlA8g+Ibo6FwLzhO0Aaw1P502ONyBWTCRonXWwM1e0qC5UGpHGeOr6AlzLyERGsN/Di0Jbif33OOYdXA+y9sXlXiIMmFwP8gTKhrNNT8NDNSvxl5ehe4YbrJyFF4iteW3siG4J/8RX5BhKw+aFIwMJ4WIsaEnGk4epzmm9zb6dAFL3nVNSoOVYI+/ElmTfzpLbf/QHnTDlH8e78tVrCX+U7DHRG0qsrlozvFjrretoPQCyskYm1eTAnvzAowCovs2AQkEIsKy6T23xLLjabK+fST5WU60BTAut9gYYvQrbCAktuN1fe/tfZ5yuLW3KiQzbUwZdfF3yTtadl53aPVWcqzNYaxyyZuwUs0Ezgs8JWiB+eKiGC2cDIP2z7NWsyVmsDewJXDqwDy75PX4Dd7cpQ03b5pqCq4rQxAbM9OcxHzEEELoSaDbY6nNZiEdcBBzJiydXyFakrV5ICz+9b2Yrlzt7iz6fJCGw+olTS9PRQ3c7+dWoTAJmXC/C9PPy+Excg6Cn4Fl70egLrxS9kQI3IIflQ49o/LrpI1+PrburOia5OBkagpNWnBi80RNjwmTwN4PJ7XKTBClEJormAW9hGcIJjfsM/45B62JAk4hjBJd5IYh3R4VdPt8ODFVZ824y7Bw2OVQXAVO/H6XzIforp5TrknTfVH8tkPtivkrAqcUeXvhsOeCCb7yNuV+Im8uhQwx9+4M7sI7LrJyCfvTQvtsJrxKCa0Or6L+ccxQ5nTOkD3gopmjnZiq3CNDUJ4uRCI1MDi44Mf8hLklxTFs9Gx5GOPRsmf0aJQ7G3MvhmL7SmkBdkU+Fe+QE3k+3DrwdT1jLzpXvLwhUX5OQ8IJs+dFBkmuFccND70m6uZ2X+F62woKmXrflpKS1+oBEnF4Za7LonOsnvtbh+0hBBSWsN/cUic24aUY68TkejYWFQ4AsclA5M3Hm1uOHzqsVMA1M1pzqBSKHEf9XHBQcTNAYlOIwE3chXqe3IZ6rv10TM07CBvA5CmIaDUJ0XnXuKPlOgcmdusNVY5tTiUGn9Ppn+dUb1grZz5GNdg3gAqJQg+wbAwlD/ZqALCL3gKgsDeFExOTlS9GIgbrEFTgBRQIR0cZM5x8uZJoA56FKE3GuP6BpWgccDOsJr7ExFxmGu5iWXbVPQJF+Hup5QUQg6alZze3uiufBIg9AqKDnjwku7NJp7oPsHBb6z3cPEw4MB3WkJgBK0+KFBnOR+MBcGjByKUFnPx68+Zp72uvy6BAL7yl50ZXjSD2laGVsFZc2WXlsUc5shJXUxIspTr2tj2lhJ8FqRRc7Tc9f0ZSeA3sNliC9K0qM+Vw2Z0buLCnpl26rfwtle2Olrn4Uiqo9iQUcBzn+lgVTITLcZzTH8ibS/jCeKMkBOXFiTUpHAd5T5SzIkUf8IGIa9/10DQVPqGuOY9UOopzKcSak1+WH/S6De8IWbnZmq5jWhvIsF3jUbGil6Y4fzfOY4jvauhZ0ZBCK56WpfJ59XxvxZO/uKknMF5dvaKxhZAakrmt6U9koLEbzpFqsMHvI6+3raAAe/ktsG84wIRooqdn5LzjFaEBsLA9nWw147m3RsEdYJdWCtRjubxMtHJpK4Tjcqs286/IRE/jYes2q3K4K2FK+5UmrbnH+t2v5cDyNIgJArv3xDuVc9RmP+Pe3u8vTbZ5v+bc84zbKEsCSfmQ4JIVImEHRG5JLSYhl/V9lJOxSOFN47kVgHfn0IQYOpmkW52jhxneevI7CrR4ehdMwLhdrwl6Z3yfniMLop6KE2C8OCKXCw06R4fwUOjDCgU9VWagshTvsabGKh9MYaQ1S3AJ7xk7PzDHFkhgKoxBt7rplUzdazhr1sb3qbrD/TieYrMqR4rrso4gWhHDV+iRimedtUrQry77VG5FS6IznREi+r1Ym1dBmOGPxnr+kFLBUJBDbcIJYC9U3Q2g2Tuy9AU3KZKiEdKNOtVez5NBjyI1tMRf7GW5eL2kUAIh2AdE7k+jPC2FNaQA5/rCQ5hdgaF5e24dMId5gD0woqsLnDX2FqYkL9DaDFLureXZWZvNCjhgL1IJ7puExIRj+D/nnIgWj3PnV3nJMNnFw85TyadCW4S7EosfnZgEasHRCcKxt1mFWMDwK3l1tdfTk9nYPfeUBfKSuE19vNbzVB6JjEnO17LEreyx8fvCyB/LgJBlQMzpQ8rT51xvW0FRXsADOEJZ6MJK8IpTeq+nFgPYhPNof0S8ZFDmmVRPPDaUlZzLpsUDccNlztLWM7fFAgi2GJeLLcpL7doL5gFAZbUjLGbKUqB8Suat4U6TARKfn1BDTGpfLy3d7jvmiqhfwStKUphCzOjKHCW8w60IcJ4SivcTSnaVBeYkRglJu5YxTFJwxsjmjpwblQyn9brWhumLQu+qhL675Ub+gkJRWosUiM3q4ve+TwJXOI7ktCzrsxWjOd+avRuCvpgA2qHougrEDIcwfnD9/H1wANN1iWCUi6G8CsgFzbnIYhMM9bqjo8Ry3e/zVSQkn4dQpsKgNst2KQHlcZzu+dSzP/QPoDIZ7w2htyWBiivLzZ84qfhdwuCgQkaBfKQ7TrTQQzMTPuyB7RFzZrOwNnx6lA7E1lCIhvOxaiv4zHbZhYVCaQ5rwvqlaUkwT/xmvowUEzNA/qC3ZglOLrFra0GQOFFCsmh7OyuJ3Ynpv9pDE87bKRsK7lPCyQjWx+20l8mXQlHaJ054reGvmVBOsCgx3nPnplXozgqRYHdjPlsBaoInZcL0wbmu38vKYBEofWBV8T2zg+xLTSK2iaFHodlolnip3pNZBe9UWNTtXDhSeEbKoHKODsCFERkpOPbx7XURXEJe5f5YciTnNSGlj73etoJSS6M7dW4JV5MhGCe00ZuRAht6hoD0semK+wsvITg0dt+ajdtgJeekxVoUJOvUYFD4lOvEFWbIRjpe0jnjiXGeT5fsdREbf5d3ZhHMCGgrEcC49bRZNe8tP2c2wHQATEsRr4/UVlZ39ShPwQicQ4BYl63ZWg3OlDjpxMd8PyaBjszBTM8CBYyvT3MoNxvrKavz+tLj4fDFzpDX2nryNe49pYNaj6xfncORnpWCqyZsmQfOrIzce6pkMPJ6s+qqt94Hw/CBVFJXk6WeSg3O0fsgGLXCM1PiWSGYsZ2fYatfVhhYdknlasvFUYJkYzt3qZk/YyVOqDuaArkdeoLyZArstNtOSK1aVXKZX3NWTd4KMEqs3uWkxECzlt01AkaSSGEv0pWazDHLZ5JQXXWDSa7VQXNbuA8M+REVVGbP59umcGkf+aRcwj1h3HGv13wMTOyxovDxURZpzCDWi6B9KrvyJhVxseAVSgzh11j4e1V1IhqYl73yijgJNZWjijXFvnEjxfC4uhxd+5P0Voh3BQ/fuJb4M9clWqwmnszjnDa6PCoQHVDGmh8QouIBPfkiFuDxrxm+q1uvpd8HbgMvzllw0pTeaY/UPq6uDLmZ3xGO2jO3gAiNT1VP2bhlyF0FIqsPCulGRuwNPug2jQK/g4DNpqlfVeN42woKD7kz4kNjc06DAJfxUzFKIxLWAu3ayiOhrcT0aIAncHxGYXibvad3L0WoRqDHHEuZ5ZpXCCIzyHh3Kkut5DaftRGKky6Od00QHusGq1IGGOI55lGtdZ7rKWUE2NZecOnxDkiwQAJLTLtHqYpYvbwkdpdqgxMuLuEE4Hh/MBAzrsRh8F1bg4IzwwM+UDHeZ0HTsVlFH7QS3Sn0wHbg1zonpoYWCWPnH+jzq8s++breT8UuG3kBgd+C4dmah2LqteAkBu4jzpV3QEWgNT8jfM1B590sxk/Y8bynJYxg139jmLXg75N7Xw4oYdfWYDLfEHTXAx2XMKCg4kZ1F1oemlcF1DNWgqTwzX9WlsJTYGUmSDM9my4xVt4BidEKsfaOxr3AbYS2BCucvK3XCM9NOsJLsWqqRuBwXv1g6S49nUdubirTU3WCSdqlgG1gnRckuL3a+9PXY3O3R4jOdCQ+2nCYbmJxmNybrDgJnBYwCbWiF/FSA2Zdh7xKxyiC8iJD/YL4uRWYJm8oTNm6nueeUx6NvYfimyHYrYwHrjZvXfAfGy5P3Ic3rPOEyL/7MWMpF61K5edBi4Zh25Nh3iaxEB7TCU/vtJW6dVfHkSRlHtc6dFC8j8ta3hX+fV4qTwP3W4v7eOfCJaYgozD9r/h3WUGasT72etsKig7wo8vKjILEVoE4S1HtrwgBuPmZiZHPhXKQfTTq2dIAOgQw5SJCyzQVURNdglLzJuLofvcBTPYEzWbaSrW69gx8vkZeICtFUrhCq/YDPvmZgiTv0Zh212OP72fX2LBk+95beea2fsA5N84rOcdil+ckLV8z7YIt0pUPsFvM8sZksqCdQdokYtboUULJiaqGWZmZPMrx7JKFJqGtMA5YRUBE6NAwJwvG/MvvWuvcmkPZagwBSfga6rKkgM0j5bh/HqF+gt6IshVtRaAXvB0KkrAq0jfWM+cpfwHHFBoNR4znhgxJeUNzrkwkbALjZTCDJgzk5cSsZyk1bA+u5EZtu6PRTyEwj31+U+Yqbo4QZlpQj8DhXMU3vI6TNCCFPuZqb53G1gLsEVAehkpn+fP9qr7pTB51WAMjgDh3JXDq0MtJuu2dxkOQeQ7P0XSvAh5Pp3UW032NJ8/jKOfnaPMiJ3EXaUyoVBmwQopBIyXlRTAApv2/9snB86LEl8UbIy+oNV/CwOhTOEKHp+oSnwnvoT2RSkC+icFy2VqfflciPhXlLJNXwz5XpXEsl70/jklO5rjrLJ1Yo7x96YnTdT/HSyS4AZMzJiWI1TWWKUI1O5Db3hJMw4Oka3rhED704LnqR3SXeVovcIsDe+w1Vxk7kRIh2eboxUdcb1tBIeDU4dJ8JzqpgswmsdEWzlgdZ4VrKQJivB0KjJhHxvdTqGsC4D1SZsKqtmZ6G4EyCO8p42IMdCXBxrv0nhN7yVbFRg6LqJ96youPZk+XNf8mHDSv2QgjVNHYS6lfIhu74t5bwCbitzP4+tmfrORVVVVtVSCSS7mmxni+xFQU6yxMgp+FDTyme1ZoHRKgtGxnM5dLCnO+3oYZ0uF9zQP+mpMW0+kDy9tiBWyeHU/HAvRhjjjzd0MwUBFTyMWCNeZVPUmxwOZVSSGzhFAv74lw3thhLm9YCKBsWLYxJd6zndrK9TUrqWTNKiyiBm+u7BH+jjYNNWoEH3qUoIYrSDyLxlaRpv4vZYmFyY0KT9cwz3KeQoXCUfJGqNdJsdqOIRILYRszU4arMkwAwL3pDcDsE+0thkScxyE6GVAMrYrJh1fYRkl6B/XgU+SuKCctvVXEk1mVxgKGdjCfZWM+CI/nhJEMf4ZXM99mFM09FOO5CUeRmGsPTOxF08gDk2/SfLGMOe47Ccbz5Ri6FnxEV0ro13ses1kaNWOJzwefcgPFyPVrjm/Pq5SkTLAnn2pgDu0knyxgvE8+/LTHQAsaqDA81WXYiDVPRnTnBrYurkFjUliGz5UNZ+0XKzT8nz3tIfN8GGp4RaQALdD0HNb6f6FtvG0FBRigphdE9J6xL1FUCWmR/2Gi561qMCPGdIwCYFcgXWkA9jJkCUwPBt+zVfLU+syNb2L8ApmuNta1miQILi0MKzgS3JRoWyv6XnCxkS5GcgJbH5QPwNneHWWRZ0w7E7ukVAQYLJTcHGgUgzxx06WGxJ2TVk9YMfDx5lhMZwtPmQlOrwg35xLudC6IntE9+qeKJI7awDTFujB8FMZVD0S5KVwZ1JxXOz8hvBOQUBQjGaFq4UfmvlzEgXsgkvJqYC40MkzWzPPBo1bVgPaJlOgLqjWE4s3j0RNpl9/hckjPnWM8CH+B3eGmIV6Xsh6TM7EdFyAAaY/boiwLep9PxH/H0+nQgBeDmZ+nX/G1vKOHyk3hEJ3PMNKepzJqowjYK6kAnKIf7Q95XgTzBjvcErBy7+PDl70ONI3de0Xc2/yv5tyd9BIQ7j2g38IKKCkuO41bITgD3zV7rl80f4z3hfNp7wcm+d56BH/wDePG8NGEhzbQWB5f4Vv5KC/B7xgW3c7/UniOiLZnXdV66c1Lw4V0UBg+17EnpUxVY3WjTb4RYdJMwh8PVcwJ2BVersl7uwt4R4X5dlrh0vvqOfCvZQpPUhhEq/FvyRTivTjX55reX94zzejEGKleHGWiZeARxkfKwAzpi398HqF/4HrbCoqSdTIxCAS44nXakC+CnncZpIS4ydsBJyw1kdi5mTTESe31NK2yfIvExhBMoyMUU8jDk86nXpvuzgTMRC4VjOrlWnUSlZg1W05DccWWpjqxx+4hQjEZbd5UCFS546xuzTOYmSWW8ik2zZ1AloxORlwYS4LeDzMNjcP23N3rRNmV4MnhydxculnaDOs93kf6nJbFYWbQu0LRo5g0mV9zrlsXU81D8Vox7ZNMK+EBTFXRegnmkLfFXFxFwPBPCt+VZ3P4O1cqCde8b9vYwj1haQtPuGL4aX5fn7cUhBvcS8OO3qZA1hh6j/KNKLA2uEJjEPbVqKceAUJ6UvhRyZxLk8Aejz96yjAVSrufKB3mR8vWuzHdyZz/EoKHrdpFKz3dO4tMNYQnUHvTK+FE+S0YHMgLBJCOg/6U8HnSRW4bJUMvEo7I9yPYUjtssueVwGGEPNvJdHKL6i3RV1q78lJoSioVx9CHe27UZU4vk6Q55fpDD97jYe3PRRiFF7kJO0DzxvAMgebOsEl4e93l2LS17ss2E+PxCZ79OFY+jp6lF7O1nmuvEi1fdEBYOAys/XbChk6R/wF43SySONU+reM0frbmmYD7MelE7DUt4UeCBt5brd5f4fnygZdnbA3KufNdOzdTFTtqtub9+dQ+/NP3Ce0PLJlG3uQv+MseLahJo9AcU5585PW2FRRgMV5pi6/cT9H9TjGwCgUGGKBqvz5jNiGwTocEIgeFBF1AoSbmbxfjRfhjlKYxuWCB5TwT3YhRePqO1QznnO82hUyueSodewVQjCcrqejFacwx2ho2YOTLCtfAY0quYTj4SqYny0ffZ3xUHoSTzdcUdpBLUQpBB3M0ghCdMjFMzr/XCG7PEyMQhauLdbWF0IQvkKlYqRpBZ3wI36rO4mfypKx4dcxdypTeUwrrLNi4k2TgW8JXlstWFZUxe9NF0GIokwXS1Uu5S2mGQcRI3BRM+JO3oqnktAQaXGp8CC631Viujh7cSAYILlpaWt2P2o4hUChiElR71kVl1/M0fcFWuhVJMusF/57KKn7n8QVPzBys5PCehrwM7V5Bqwx57pmOqxgai8RM06ZQKK+gQiP+XfDsBZvnY3DKNTl3SHRKL9RG17d2WMaWOWlkeJb4F9dbo7g291TCqIFphAa4As8endsVxtIyglY1b8I59SLjgHRRhQnBMv/CIcStvFy8sibUpNAm1jzSA4Lk2eLjRwCviLvnY+sqKyFfaYDG1QpNhXdKfOjQXhE+UjnDUnAyhwvNkHJXlFS39+WaT8BeckF7rrC1LygJI/LEaszBscHvJ/eEc+A7p/wfA7vHKCeuHGrgeJl1eX2vlNgvvt6+giKrXszICgBGMzyBUwJZxFRDaADp9ZPGecfyboiGpPxEGKmtYYpR8Z42PocA6dI8lQR6KsF1/a3ns7KkXhHImq+b3uSGsPIyHMBatD0AZAbB3HRJERKx6qrHCOfZDCJSzJpllWjTp3CEGNCCh4hXhwzqOHrlF2ROgpkzN3DHhjYIGt7EtjQzlHBr1LvHwEtesmMS2YCeTpOcsIWF5q78Ds6j7qfP+Ij9OB4PYM/dMAPqECq9eZcK7eRWJ/Rm6FAb/JB1CeNarzCequenqicO/u7wHMZlDmA0997elzF65Wy4akICCAvuBQD0YDi0Az+6Ce7NklI8nvOXm1kwBbCdIitlpxHC16eCY3qzPLGbqZTWwii/4ckqjePP20p2iSYLUxljgGPhIivyBLsCc3t6PB7PxygWxKVoRorfqRCIPCLyGjHnwJ2MN0GGba/YQ3ojTqS8yLvz7hGCsbbmYAD3EYWWysmTJBwu0vylMLyvTRirc3KS8NnFfja4dLPG5P6os3NhmtY9jvEo3S7hvUO0iRHQ9DQ14awcjiJNpTLnAy3JP7z3xMe4LzzV2mFlHFg5FS8kiM9aXtLnUBB0UUmyB128W/fJkIaMhNq8eKVclGH/5ueuVKxhq15o7j/xUdHEY8k247naHhGf0caQv1mG+caCl9sUKKwUIbJfP1U8hfEOhJsLkIAO4czvjmdYw702bzueMaEhaYTMHSno84I0RYd0UJOsRaQ5dpluXMT7UpjHJnW1wtGsPS8TrkI48oKkBOinXPz8U+mY8nHqpZzU6r4swGzm1jow5ylwXigyxrSCRZdOdsMWVplKIE5YVT5iwApvYMHEOSMNt+j2BpAyGkpbU1L2EZYew1V5Wmha0WLaVvzSkyCLFsPUbekEiAHi+HayH4bGxyg1KYzJRAWHzI43TpSHYkYxjEQeFnFuKVhZ8WPrUfjvSYJr4UgwUJMrK0JKMoVDcDoAcRRBjJAIEgRo5R3yUNbu5dHPUuVLhEpAa50hjPMShpQydEoBpmDzrpZCaumJOR2Zc0qLvm69qlg4l0MKEXG4GgUGHh/xjmL4ymHYtrIi/rK8fjDOV54NYSQa5V4zTYdiLuULgi2VwlWCepqOGpGLITqrdY+Esiuq+M4MRRn3VNazigMNlspikBwKkOf2cvj8on7Qk8TcI9+DUGaEG5BW9X7Rn71AAwP1W3HitIR27t/j3MIsc1p3eInSwyKY35n7Jd4kfnLTvifuxdOFJ+NYvYbgKh8cbWVKW3arkiutrWd7iH5kAIb3xcqytHY9KjzJmxhG+uYFF8/QfORxjZBL/R/y/jfk+jYrC8ePde593c9M5YxMMDNKGr4IvkpRUKFDIVaDZhZJvhHszwvJNzOBCRWCSVggSFAYkm8iC5IiKCMJyTT0RaOUEJSFFAgKMeMLcQalmfva+1y/F+s4jrXOfT/5PHc/f19+N2647uu+9v7sz+c817nOtY7193xZPO1jUiw/8jCW56G8uqaN9AeeTUCnGs82GDNn8t283miA4u6vbgoDqAnbjO/J41EJP9HuzBjrLgIqafXO5jRKmNVDuTFUV75Y2RJoZkEkT5OEy5CPtvPgNSiAII+CtQmZ30y0emEja0yurhEtoubpfJWU0kczz8ykliI3kNLfcLmchd5UfmswPyazZm8cWbkciNy4FugOb6FzQEbJol3H2nDj/QSQe/m58ZLCMGqMR8dLoMto1RDt4RntscnufEkCJdAKZVjcAFpx+0wlCtvDZIz+TeUuN2rKYpEC0FrNDeyvMzeFia6yHmPeU8JHZFSVF49qB9AgCXwOTfAg/eZhZME5urcELTc7/y1Aeb00idzkeqYEJEvpLdT1vsCAaC06K4RCq3GrcuomDyT5x6fcStmKptrQ8BlOUhS2kncPob1l/EM8iPB5SpGDv3aMU4YHOJ58NRPHEw1k9Z6uN2DAqZg4DynHLYUpxTIt0WwZo7Dh4VlG1POVIDpO+c1bnACY63Tw/PMaCavZlTCa7ia/MEkZpJXoDSqrrcP9tH8JHBSa03e893cYMIrvZPTt+7JXTB66RHRujEI6wADMCiW2XHP7AdS8FLYTOHFn2q3E+qEwyEBH2b7AlOUdBmgCjbA1+JxrRXroUErvr5vo+LBPtfQTkIi/bJBRptODLda2Iaq9F6ik28GbPoH9jvKqCAzl1K+jeg0FWNR9/Ogam6XD8jFH5x1ebzRAOTKTgQ7pJM6+HkHlrCNlFXuTpaVrkwQc33c58BpVGI7ljQVGjlLfFvR+SRISnUcSUCj0RBAS2pnTc8HHHgCG86+QU3IEcBho9nBxCaSUuMYwE53E1A85J0jef3oEhvDXNTO3ABmjWU8cIRSdUBzXMUcjFf55aUu1wh1wD4IJbhqETeHKDUiBJvetXdXq4XLvfIiuQuH3GRaRzpEVra6i6m0gqy2VgC0hpZct5aZvMlN+9mdISbHV0zCN5aWL2vy2hvQjC3BeJyCZYjycCsy8CId6DLyfl63KxxbhxV/om2SNSYoD+j1CCu4oKcUyXckUvlpDqkl6JdKtxE0Uhmzcsv/CpEOFCgM8AwdjbSrkZKUpD9k1K9TgPdt0DY9Hz00uZ7Zi07qi76n1Ku/UdtjkOJ1YxHe+DRUygc9ce5cEa33FrxP87eYlNRQs13qwq2/TMOmhRKK9YzcBcbSyXUoizc7B8PNK/smwMfhWyXsMOmr/87s+h0y8qec9t/dFHqMAHKLKe4GC2AUuAgMQyNN2q54jtUfFYyef1d7v8G43ZeTfiAHmW8Z5r4pXFjpZ+SI+HDIuxhztQSVfKgka6bBogkDq0s+x3LlHjxNwmLyTvtFGrtZIOm6GMW993TQqLRNu6CT5QFedLmBf4bUM0sv6hPOynfcQsjoblXI9bnjXrzcaoLiN81CqcUP397ijeneo3ftQqFbIQ3DXl2ALtxe9vhjaZFS40yMRRKgWIhM9T+tEHVwD1eRmAo9E57c4JkwG0DHg0XpHi+9zcpL/fwQQwVCO3JUzzMR76R4AzqoGoN2d08U7u+FCyrPvN62keUz7dG+6G+593IuCSqWcthh1XytNWkrDY2Ra2m2OzjW59f2PU1s5JrcXp6Aw+r/0mpbQwCFw5vqFaKXNiAGMVmLTMpsJkeKJpPC1IpKQoiLzCayygk0Lzbnov0ZYs+8xvj9cz6pKimgPQ+j0aHpjHG4zmccar2yvgABNDMUU2Z2CiSZdOTXoAJKrhXzaqxDZ1+DWgvxMLg8mF6NzCgSM5S3BSWOfqYTxUvhIXqqhaGZeyzQ8rNiVKyFBPteB62Re5EcChiHwP0NjQCtA/V9renjZ4uADkV3PHUM1rVThk7KqFYqSDNVYNaeVDRoEXuTdUmkqAfLWydUBnzCNHk7x5whp6WgE5+Wgw2AzT8hzk1UfwLr2ycjg8I92AfOD4Z1y4ziRb3psdf2jrkD/zhsTdyUn70N2iN+GsFZlj0G7+Ir0dMNBjt8ea8C9bSQrtAadIIsjbHP0I7mP+wyx6+ajgTbO5aESAKHMt3d/6snE4XmRgax+RKkzs0Q7jRWwEfVuX68FUL77u78bf/AP/kF83ud9Hj74wQ/i67/+6/FzP/dzxzWf/exn8bGPfQy//bf/dvy23/bb8A3f8A341Kc+dVzzC7/wC/i6r/s6/Jbf8lvwwQ9+EH/lr/wV3G6vAavm6Ml8keiyWqArayRPp0sdsJBA9CLPWm4nmmrDKiYqACFPDXKcEslrrNRa4UmRRXZGNAADqAoJtUA7qmUAYAPrebjTKCRA4dDNeYrz4j7G4XySwYQYSlgKZsy5hOWgscEFOgdgKGILPpXtaUOIqWcMW1z3HK56sNtezaZcFdChFp9p8kJxuKSS3N3VUWus0M5E+NqMsurvgdkHBoCbpQFVrjz7GmQGe+MMIRTjbwHANYSmXN9+br7iFbMAk9JVCPI+lKT5+lHrjHW/Vm6FjwdgaKPCT732aqiWY/zzpirntZLX/3WtxsPxdkdVjFAI11A5RECFqLRP9D1p1JVuABacllzaKzs0EeIlARf97ECAOUsjwdGH2Y0xt+WdY74j4Xk1NdxmXhawPUXZXoWp3KWs9ba8UwFXQXUFFA7r2D0qpjIVQFITL4ambAxYpoX3qg2xqWT1O8FkUSqVyb8C9uK1hEM2DSx53QSO/POVvix6DYBzdEkessxVcvQEmaZ3hRZhcFSfjfyIxMj5CPceOrrIDlCvknj96LRkj28q1jxpPRv7HYnVIjnX303iJBcEQqanWCAsB3i5BxOgo8HxmuX5J92ViNv5lDkqT0uvYIAQe9UFFLx/xCfci9KBd7Q3RLrA88cRbbDnjt+VnFVy7QSb7/b1WgDlJ37iJ/Cxj30MP/VTP4Uf/dEfxfPzM776q78av/Zrv+Zr/vJf/sv41//6X+Of//N/jp/4iZ/A//pf/wt/5s/8GX9+v9/xdV/3dXj58iX+w3/4D/hH/+gf4Qd+4Afwnd/5na8zlHptVCmTQh1R7igAJqR7jACNXi2LiznWrf+s0A9aoPM5xynHOYSJN3+c/Ur0vcnw1mn06qRlfIMJbbrdjOEyQE7M4EtMKWUuoAVf6kRXe1tsEQ8u2freUJxT8M6XBAkVtWg4w1qvJEI5TPCwNvwsmISWL1cfly5ii3byDElIDDe3lKcUpRNt7QEYEpfzBekmiyoGgArRRDk4SG8+0W4a8E7QE83Uol1C3xsze5yO30twpj8v4Z7dcVd5TZ5XOK9CYZDupCmlD5YsiomyAcYUFDpdePIFhd4rfE7PxJFHMXmCc5YXpjqmZgvBUfIZaNYBwqRwYqdeq8vQ3eU553db6Rn47+arfMpjqKYxeTdFhyl4pZzGdxIYIckx54VOHF77DLlp3nPSosmq03iB8jqYPsHKkuHRTHk7RHvxK3ACAXDeUopzn/EzAA3I5pqM/Sua+D0+357Ltdv7Se+HlORMVDf5Bh3m4ZkOsWKASI3L3qXdf8vomPNcnQxv4yKbvwC40633+JiLQljqVmwPJt93qbjkd0bPTfJ+PdB6hvECBt6ZOCrLYtx3Gi3ubzNoJANwtmAAdYlbyG90h/Eg79OL5UNr7+FkfJ1wb9kcoBHbvKuO2+rt41Yd8s4mOuw7231MA5fyNh73xLt4Xd/5kn79yI/8yPH3D/zAD+CDH/wgfuZnfgZf+ZVfiU9/+tP4B//gH+AHf/AH8Uf/6B8FAPzDf/gP8aVf+qX4qZ/6KXzFV3wF/u2//bf4b//tv+Hf/bt/hw996EP4fb/v9+Fv/s2/ib/21/4a/sbf+Bt48eLFux6P0JvO4nEvD24Qd2Ck0hRPrkSHgSZylBy3MuzvO+766ij4JS76c1+nDrT2jPBmiRqfE3IzkLRIdFaBFl+PyFBcFl2Oa4U0klJjPorWs2hlxVxvGAgNV+zbWV+R5zU4nlXixYdn7SH0Nc5db7i073kBW4orvYkBzscHodGyWUBmuutseQZqcwpMOEfmHp5fXrWEHDBBXd2TdAl0pZWmlzXWFBBAFEB6qxWUBWrUPTaijfJheTmPQ42nEn2oHglOsUylkchogRviFa2B+CfrG1IIQdpgZYch+BORJXOlzK4dcpmhOecNrRP4BOldtGsggvtChlz0rDDbUe9xLSZt1b49QAWcKHAoZTr4qa7HqGSKBjX37lDrPAt5LFNMXJN/pc+QwbP2bf9ZOSDhvKdHgBsA8jmQb41tFm9zbz1y7hMpcsb6E0z+5WZx0ziBYinEzXW+l2BI8ZPWd/Vz47Irh8i5NYOuiVIYoxy7FGjNL5k7gwy3RmiAUnvWoGiBoJ08d+ERFh5H9vpxDkfog3Iaq44ESH7XTRqHgp4t/+vmOZQ115egTvJGwDgu28A6FnlOcml6MbUXONdIJYMzNI4ALvcTx/IelgNjHUO0HqDH+2bQqarM6vlH87xdyMBydRguFebKZnN51Mbg8sp73MfeG6kHGRiVSfWe0w0A5zY2yiPNqVeRpDfC+s55oCOv0J1mvVko214DoPx/lYPy6U9/GgDwgQ98AADwMz/zM3h+fsZHP/pRX/P//D//D774i78Yn/jEJwAAn/jEJ/B7fs/vwYc+9CFf8zVf8zX4zGc+g5/92Z992+d87nOfw2c+85njB0BvUAu3eklpeS8HRlIXLxJBmQTksAjQbmh+7rN7lBxL13H1EBmLy3HMipujTwrf02ue+2OLBAOAAC2ANE4A62WMxl1U8Er4VZa0QI3c6av5rXieCuLezw0I5Qo8jHHqJQsDKKUtQKjSPN3ojrYmuVhypZZ7fCg6ZIcpZj7KArPox/omugJhCDEl1c6KKGfSK2+D99OptRaWUn68v8NEMRZsVIrlRjfOCiYnZtqTEimrOFvTbJa0qox9xKMVVzf/8LeTGq8jDi0+Yv6Nc0REP87BMXeH1STkor0iOt+EoRkwHHL02xGfkV4ZcPJkUmh6rWKQjPRfopkE7W11CSwvNghIdMWGQMkxDgIS7W0CHCm3tUaCJAEfVlY46/li/irZSr6w27723Kz0SvIWUOPaoyeMMIK8Fa5CYw5L6Luh7RU+e0Zt1FM0HQrYXjErK9AjRx6m1SuAaX6Q92LhaEGPwcJ5ze7fQwNMpceSawpTdtiHipg8ZIWb0R4J0YrVZpquqmtMF4Ithwk3GM5Jr3d/N70nBD5m2b941aEm8pA9BZSh8joeIRegvWEADSA+WGQlL+ZTdphznGPle66WtzWfNZomZic+y+jVPuePsZhyTRQKQskYNVQMyTYZgDoXbeHQVdBWYrGHxiW6QnqMvNzHrsBpAD5MUGCE51G5LUW2/gBYyWoPXNAw4TMFCgPt5fl/47DAvTe+9Vu/FX/oD/0h/O7f/bsBAJ/85Cfx4sULfP7nf/5x7Yc+9CF88pOf9DUTnOhzffZ2r+/+7u/G+9//fv980Rd9kT8TXwGDgfjebDltdnQsFZ0sasFOwSLhCb/tmxzu5/mSkvD/ZVGHGcCvEccGmQkgs94AtcA/EjINFsgwYopAK1M9W9/LYcFqPFKAiW6Nr3vgnEPorIsxp2lxGPDJc6E5LVo2YtoLByjF5wqfpg8Au6+9hH52eCH13xhjtasUeDXWDbRVpldkAQgKLyuRGabSd++jgoEC2rktXF9bv1SucUms625Xp4CGSJ3okJGlVPaYlcC5sseRPbYaVxQP6KC2a3bGvwnaAv0xH6fKdXEAEYMBnYTMUKJDC5AC5YUb3fiNk9Ox8hjC0uCHFqUtas1H/LvmPKm4RDTOx30rxjoryTcBu68dCpP2yFbgLkOdrnTtgQeXfm8WGPA4IVLua41xnbRwKPGxF4cXgZkgyh3Jms9i9UR7VUQbTsVD4mZQaGPrWvEmrChjrq+eLyNNtJO8GvQ3HfR9GQCSAQZX9UD3WeFnDWIEHmoQAc6JzzpCV1Oe6bmSE3MO5C1V/7gKKICtOWk5uD5ugjjX2AAdBqw1PoI3gePdj7WQyjrewKXiif79AHZrn6ET7x2aDMscq50AXHTB8S7x/5CZ5lHJ9tsQddkFIuZF8/nQiUM++jBXje0KlxkXhm/eCnrGE3VN3Ad7X4D91h4G6liz13j9XwOUj33sY/iv//W/4p/+03/6f3uLd/369m//dnz605/2zy/+4i/WByKGrTH0wqJ+zx4pGThyNfawXOU+V17HcSaP1kR5HFyoGfpRjohbHysu/YBeNR6dAeSxc8/gMhhnrk7C9eUAOjQlxpw9F5hDE34whzArZRafJcs3a+xue8w55gIP5wvSIXtcqfd5XwnjTTqM023t7ZkjSth6dj8E00phhegNLWF3HZ9pjfQ8KwIQGIQrjgLZlr9oItezhjSAVpUBtiL0MesB9+yYvSLsGpdwmrk4FKRxTSvsGUY0SAqMsAgrt5xbQ3oK/MmKjP5+7B6rLWkJJdJ8WjWHMpBla+8c99I9hlLkOK67rDqOI2kNbwE1IbLdgt2VMVJUWifxhxQimn5x47pN79yRbBijjL3j+gJuj1U2dm0HqtEYee5ovy6vzmoeUs8NjfFQUlpPrn/nJmCAtUdBnaaJ11BeQAENPiRHyNP7PZpGLQc6F61DgahQnO5JQJka3wzj+F7t0QjtO4+Xw9c60KqPVcBKXUPVk8TjRo4E+jTANoBeQ2NO42bwrXuJkF5uVIda71BVD9coGe4tLwpvw3nZk6aEWvR86pBLMbvmgF7fsWfmkRr2Lo61lRdH22LOR2dPOdn0HgWsnHagh/T+z3t9OUal4ZRnfmXYI3Ign43KTVGlTbR8l4d0hmXmNjvuo301DUFt0czOsZSOna/HvKlf5/V/BVA+/vGP44d/+Ifx7//9v8fv+B2/w+9/+MMfxsuXL/Erv/Irx/Wf+tSn8OEPf9jXPFb16G9d8/h666238L73ve/4AdDEkmzRD6IbpMklOqxtxe4CoCtM15IRSNTYqLN5gEaOC6wRR8X6xvu+vxD3LFG9gydGoi3/iTon43JDHOGhyRwaowSRmGlJYNSNUs/YLbhLEPJBLAtTkqytQMfBw811lIibiFdKIfNpH14eH609Y6q8NsY8/Zuu77Zm87hHnVKKo7NqXJNt7NNZ/k7QE3hgSK5kTFgABVoJpU4XpcUaHG9wvA6jyLqj5W/WS1Qy3XRJb1pVmtLueVlhosfhrrBA53wo7KESchAsLeaPTEVI5VQu3weeES+2/m0wBNJFayahLhAn61Gu/QcaeIJTGRmg41SosipJaymuogFc1igp7sTXJ4GFIeV2VEI1YKBaeiFP5c17YzQBtPdKfSwyujEXrdtUkrMUC6vDkoRUrg0CXW0hGlm5JlYyEVZMOKStvBY2TqZCpsZTMuv8jo8roDEFoKu2RE/umdych+avPQ4pUhgYCYyX4l8nuB7eHv/fXrEG+AZ1axyOl+ieK9qHWwmuGLSDAUGsZI7S0L4jKd5ymH/qOh/oR55EAlsNMy8zPAXud9LixXZvKPPwjmqmpj1tI4xGT45nBXzkgQwXe4KGHMuEvS0G5TIy9FIi8INSdzt+WuLqB4OHcEleYd1Va55svZENPMa93aKCbFpGNecg3aTUAaY2HHoyhk4F2sNP/TG9ecptecTqv97rtQBKZuLjH/84/uW//Jf48R//cXzJl3zJ8fnv//2/H09PT/ixH/sxv/dzP/dz+IVf+AV85CMfAQB85CMfwX/5L/8Fv/RLv+RrfvRHfxTve9/78GVf9mWvM5xm1qF8i0DZnow8AYc3tZhx/NhytZDgn+KnDZ5ToHvUdbVg3IAPFKWYLMYe4Ysj9qQfC+76v9t9857OpFZuBqfQCx7DjRdHnBWAwZXvLWGlZ7c2rw1FWnqjKXQ0Xb8CStO6kFtZSgdoASUP0IU5ABribR3fhZSM1hXRikzKQVn23KzzjBpbF9mgKvUMraXyB4C3Pecob4tvZTOBLW0JXBgYOqQ3ANL0EiSfG8M710wKg2Z7hhJlAVJpKv/HlqT41Ml/sDD0OS+y7vkod4bVPKdnSO9LyY7cEAE4nRQt5WqLUcmqw8o9LDuFLFwtNcM32Yo6WxgDoGU9xwPnnlgJSKlwvbU2Cq0p0dKl6l7gcak8bHouWvGKtxbbyLs6SWtF4HB0Bd1lDbtNyfB0TO9aBrqUWeBP3kYqPoMjh1RpcAg4LXROQmqPFZ+6tFUHRGrhBH5vY1zXyqUx6FBIasiqWSHndc7WeUF3gUGiWI/8aFmrRZCMI6Edjl31rvirFS5/38ffWv9nyWGPhtdwvykvTJ+OxHXLGe2XjM6DmSkAF+Yb2YvM+cycON5Hhg0S3UhuKmztA8kWjdNgdsjvhCtqTEBdN3Wgpj3y9pxeQP0UApK6tcKxq9MfcMlqfSEP2ZwfZXmQF49QsdcVB4800YHXOYvntap4Pvaxj+EHf/AH8a/+1b/C533e5zln5P3vfz/e+9734v3vfz+++Zu/Gd/2bd+GD3zgA3jf+96Hv/SX/hI+8pGP4Cu+4isAAF/91V+NL/uyL8Of+3N/Dt/zPd+DT37yk/iO7/gOfOxjH8Nbb731OsOphJ5sBV68WRu5SqN6g8xsd7sAFz0E0w22A7HzaIDTXpe6ZvZYOcAQGSMS2E9gX5ZsxuAYEXBirTKdXVVkhXzspTYupVhtccUBxuIe5b5jbxUDNCni4ZnpQ6aIsq9js+qBl0oCtvvuFsinEkTO+ZFMEENTEdnzgPSJp2FviTY/RgZ/HJ6UGjMFrYTz7Nop4USrcgNOePT39J7uKyGw0J0VqaVWUBEIIAEOyyiE4Xj5oKm9VtILa5cV3roacd1YaIAqYZXPYfChfgcJ8tcTx3uLI3QUd7YMp4A9G+EBhxamAHT7bKBDOciKcy44h8UAYOVI0m1lvMSMU/AsFP/oeyAdkFSwG/jcpTsEU9mqsVvKvSNlFUoyBfZzbXILwwTiUvT0Ok1BKPAqwKx50wK0xzEH/zxtO0KPSpxda50JelXuzrHw9GV5B5WQwAtlyQTEleAb2Lk6t0GJ93plVEXfME078RcN8LhHrZemgrgDGwsXNzEjnYI7QyCAj/GxAvJcAgR0C8haQ3VLDvKU5p2kmQ/+5OMK+K5uiBc9DuWVZGodSRu6JdSZd56CrL46ohEWsCNw9DG6gLIAnUclmah4Pnmtz1U6QUDzdM8Rz6s9PdH3yA3EGqhE8iXhuQi8X966H12sHe6+jkRaft80GwUCocrEYWzMV/W94hTnWW3UU3ErT3jc0FWSCo89uDTsiL6ce8t5kQEa89H6hGNS8UjREJ08GybbK2P/9V6v5UH5+3//7+PTn/40vuqrvgpf8AVf4J9/9s/+ma/5O3/n7+BP/sk/iW/4hm/AV37lV+LDH/4w/sW/+Bf+/HK54Id/+IdxuVzwkY98BH/2z/5Z/Pk//+fxXd/1Xa8zFACnArdyIHio8ElYcdhlTcU8DzCyVUJPSOo+OZ6xxn0U5rGg6GcKXBgY8NoY10mhe7H8fykCPpPhILna4jmcMd3gJ80Y+rrnvlhltNGZ2aKTx5idBzMa3ZkuiQZwl2Z+lcIiUWDkouTIbGs3qLAuXB4KJSTc3nrmYCjE0q2vV29kbajLrjLa+dqcl3JlJKgBW3zBk1VlWUO/eN8AFaWFeXaugzwE2fe0lalrOX707VsJjLCZnznNdwmmaU3pQg07snsiSElxXn3gWfPTPFXWildjTLn0a4ydmEjeJ1+nPh9C11tmenHkxuZzE7MShYMYITqH8Ki0Ta8ZEiAhDeyfKCnlrVo1WYW71Fxu9sLQfwLocv9F/uI1GovP65me1xz5AKnljNqeBIaX6266JLCQ9ohMuuIFG62p8RmVXwB1UrOZeUhwenx9EKPWcAg+KzaFYYfisSeKe/c4WmJ8B4BDewovxJOUMQbYax6XB8ChOHWQ1ccCzkz4dT6GPEQoT4SqXjx/zU1hn33yjoxAMNfKSnYYDD7XJ4F1be+Tw0iiizxfBl5oOSQwMJbD3oWUDEAfukn98pgrVZ4u7Ucm5ytcugYttKQBl7h78UR/haGna1LjmV6M8b5/pL+uzash+a8hK1SqpNjVa+Hw0IxGHOGlaL0lfoPo3eMynd/l67U8KPl/LGHp13ve8x583/d9H77v+77v/3jN7/ydvxP/5t/8m9d59Nu/FN6VvAlU74sbzFiRKKS7p+IYNMr+/75m9yAZC5xP2Qs9PB37MkDGbSif4S1xL5QFH2JopQ8ASYvYVgz5jGGeWYmEyG5EJyUWaU9IlYgVGKkjABqkSAmDpYZCx97jk2meclhScbg4fZ0Er3cvGmzQMiyh2jQzWFRCIRVbJY5yvuOWAGy9dJOuKD8Er5PwzI3Otg+cSYsSsk8Av026UrjKXRp7jDVaiV6i48i7lJSHKUXG35UUqvNfyF/S5YqVo5/RLdGpfC5cn6cNnwaKil2r2ZNB2wj3hKdAnqDVbaV7uI9bCcekdRR9QG+W98F9ANtACybda6OSZrc8NdHXJpysmOzD4WPvnxeVqgbfeRw7wbN3sr2fl8QaIcdElhf0wjyyHIpHU1ott+qMpWF5OGei5iCALf3tPhp3zT0P7Bjk6RTxMOiq6iatOcmSwxuGe+ByvfsE4gmeTV/uF3sg6CGTXLtc0GEQwGHC2VFZ6xTMTbNsA7rqCoCsqLg87EN5EanM1nVXnpXCeqv5ZYInV2xpOgBlI+mygNzJuYQ9MHGRB7KMm7zps/D+dZI4x783yBt1zd7r2FsexcpuZUBQk89RmvA2ctIk6rTfZkgvtFQiIp8rjyMBkPodAeVNWqrAoXHReUcEzzQ40nLg0YWPsyOu5rbgaAICLdtlVAX6oL8lg4AG9kOIy/pr6jPy5uyW7lD7YUDCufHi58AYjwzJ13i9lgfl/59fsQuYCDjsF8zRuPSPHQ5chAw4lLN11D0JWFnIZEYrO/ABD/o5wCogdNiEcei4wb0L6sb8LauAC1+fTRdp/Z4143W4IJpZeAAUuJFVdryd9Y8ORyiMJMtauRoT2s58E6Hew1mR53uaq+KTsurlHtU1Ogspo8MFVky+M+lEd7GUboY3c86up1TES4dvOQcEdlxYCcWg00Q/p07pPAqggcCL3XF6CcjsMahngcuqZeXIy4Gif4gnEnUqLQY4kMCU6/eSFgCKZ9szsKMEFz149kZIKVKJBGliRZRhizo0PxG+5bjBSylYMjoBp3pWFJ8Pnr7SOh2KzuBkhpbkpt5oD49j/r0kM8SG57LMy7OD3qNaD93+utt7kORrh36poC/pvBDlhBm4MeTm54/8LZ8LxU1v+ZHA/T4Yz8I8O/lxnlnFvRK6pycMg7YJQNtlhwdlBlaspD2gvr+WVEBYm4H3lVdHYVUZcQEmjRNcH9U1I8QXKLDcIbr68ZlTgTP3ZG63DeznRQAaJwhi2GcxDOiQL8Z+Gnwie8L31v4bgCsu9Fhwz9rzKZlYVx0ePL7VSbHKt9B35L3xeKJD1KYHJyZwmP15QnxMviMQ80LMF+VwAJYdro4CDu0tD3z1Khm8MDqrqxhEHwrAhO4lkBEYBjS6EmeGaxSmB/y8pIddRrU998gjD+51Xm82QHkbgHl6A7KRJWAgsa95CCcA3UBG+5mozwcwtdYbghinApfCk8KW8tJYtdAXDOHZt3TezBCs8+wVz23zrovAyNUqYlA9n1/d40fPlLAXAhZg2uNzjZvWjsMdhxAd9FYOw4ObsyWG5i+l3t+xsJaFk8o3IAChRwBDCdtVq/vyfj5wi7RSl9OggHIsGbDS7UoEDexhXUEhDgKw+8OcfI/sGC+TV48kQlroOudGytcveYQeaGW2E91ddcNw2B60J12cLEkFVHSkcjKgynbhyjVuyyi6mkhrqfUWn0qoiY+lnEQPWbEzlq3W7lJCul9IiRSvKW/JRsA9en14/5gx+0lD7WfxDrfR0v12HEaDrF17BbLGEKSj+4hwDYF+/kyE1iAKJEghDgYQ7+t7ej/PHx+Cl8GeOuMZeyhQzZVz8ksyYBgBAvHmRY11eL1yo09fRj8ngSNUo4Z73XCwfh9GG8MsDZDgfda8ipbj8twFCoBd6UGT8ShZIBnAec5w46xkemzoqHXP1fzjV+DIzfCaTWBAAyKAkQtC3iI/F98uy3UDkbFXvB6iv5EL+ru6bK7XUi4W2vDK7FCgriOtEzCAVW5Ief2jQz6iIxLqexTPY96jIscyWuk9I9QK9HfmvnpszfGq0fvrv95sgCLd13t5AI04kji96LJmhU6zblRlydEoUwxz6c/LEge/F6dy1gZROZduIcTrpmt975hjG7HuqZzkmemOnfV3n0is7/QczKkmCkanP3RISPcGbIUFcHaAlYKRVbmyAJbuN6xqoOcU06K0uxu2whyCEKG0YTTmR0V+l1Ktz21cynrRCaMWhtnPdXOvIWCh8WrgWpv5dykldaHN8T3RJndgOQ6dlcSbTXfTaCpiWerZj3IPBnkUboEJArs/C44whJosqZ/LkVBJOhuUEVgJ0GcAYGInTNsGCN4f2Uo+7nCZphSG7y2QEYAPwXukN3A2dwMV+VQiiT5VWeDGXqx5o77P0chOtJkhx5vABmk2gAp280UALhHXXlTZd/ZqnYDkeblKw+WfuuZyKkJZz/YOSBHqtlG0L68ZJ+TQJgwElG+l8I9F3G0xp2Zj1bHDBlc+X5Hz3gIQA7THqvbzkIdlgh7JAfEP+XrmY4lhpFzVa2budcnFksNDIefI+bkt803vlQ6l+jiCsUdcgRTNPw3q4sgVcrkxYHmifRiXfexPzd1gTY98sUu2c/0EJNeLyhNwB9yx72bYS1riaA6ngQR4n7Rn1uOdYRnxEeV6KByrSObMTRyePvfNkh4iDXNlhbsWoO7Z9rpw7eSt9/eGx+x4cR5zXik5+y5fbzZAkZv5YdLzgLNQPgp/xQ3VKj7gmLVO+bWMUxM1CY0d7V251qrmygYdQ8EadXIcimtPNOnvyEW2YzS0CY//sXzLya+aF7JPq5z3HX/KinS8VEroOQx6Znt7j8MWWBEmXo7wynSBU3h6E6mE1h4XXdOMOpubudmTBn7vsEZb39GNlTQHhxro8n7i31QoTkKc4Q+FQzQPjOQvKfKxRkdjqElVrt1a+yzhlUWs3gKiDcZ451LJ3T8VmJSVNn3CFR8HQBLg0/XRYE6lwGqwdngVJaTlWdKYxMMeHNfvMp5HnlgEqjGV/AQ4XEeDhSF0Abhplmkm4auwiL6DMW6gymADLBfnwHcpKur1uqcsbCqIuh+arwmAeww95ySNImFPnBRbYiinXtJSjBL2g2UE0iUDPBXyVQCnV+FwmU9+jw6LrazePFP5aiAyIOLhvuO57uLL5F4bDFR2bqm+KmzncnXNdQ3ajhyELqkNg/7u2EpAEZ186pwteXCNEGp9nKsnotlDSMCTxSiTdjmYWZVhBwD0zaLlFsfp/bj6kuo7UwAqEu3VGh51B1xSwCkH/4dBpMGqvkc54e+44mrMl/xxyEfJBgDxMrxvD49GgOfJ4fBWuDOttqa87WITym9XRs3UBAL5dZveeniNfJjuPfrAQg2bXmKfmzf29Du93myAwg26Lyi3FHCEZCywNuwBKaAALDVJw2BguY75t1yBSDg5Vd1CzTiD50MJbCMG2PAVB2qt5EtUXkm0YprRBY9tLrYqbYZHpB4Tx1imYg2dKql5Dc+JcjPMzLr32Kiz/fyrClv3TXs3LKT4Xty5jWXd8DsZrTicX7AqBVXKz7kcUoZznkC7yXP8TQsQkVX94ZwVHCGDo/X3Dru2O7k1j1vXXMM7LBGdS7NR7tmreKO+K3Che84GV17eaMVnTDQ9A4/eupEMbG+bgB+fYWUm8Kh7xZgHlQY0zsj2NnE/2Ar0OvM3q8Is3GUUjOqE43h5jU23OCxzjSdHkl20ItJacA1zKEWBSHfvpdLwmu4ozwZgT5g8UAC6XBk4PQzDK9RjHVUo/ozrwWaFqQktnJUn8gRuOBymAxiRwTwtza/5+HHNZm8gRDLRnc+RMhnGQ8xxYq4tZyQ+4vVyr8XTNh/GGp9jfP2yO/ShfWxajpwl8b29RvBD27sHg0OvpcaHMbfV9z8AF+WWZYoGOgDM5vlZ9sK4sq+Bzh5hznlyciJ63OYFso7ovAO4Znmm9GzxpD1UZE2V9wfnAoXDhlyfoR95jUdIbKYNHDlhqiYdysSNPffQa+MzgQx5Ykw/6zGzRuuJQLfcyPF8fuZGpTaExTjv/vVmA5RhSDmOuTH6fPC69D8WcL08clWlBX4GXM3z2KAmlb+SfW/9nReUMFBZLmA3m8NQo2mOkfSsW6dAzqmMDw3J+4wzGboyKI+zdcJjC1cFiU45LXDUs8w7YmBtbo1zP3DXQiv/w23feQFAOKEqE938jQLlTJCsTP026VCVHkAfoDUR/9g88+WwxINHpKoRdjcmo4WcD8BRaHEKVbvBdT+HDZLu4r7O1iCFYa3nsPamlUsl08KbIG7lOdfWo33gW2J4PcJCTR1HEa20XQniOWSv3RqVHAY5aLpL2ZDWBgoCQgI7QDXLSjSovTzMGRS202AcitqnM/flZclfaWUu5YJ0HpE73EIKD6bv9OS4NHXwjEKDNUa+r5yWuc8vA6goBBNMupYyMxAEcwIqf0TnF6kPSgwlaWs2pFzHXOR50PqyUqrLbqNkoBKso/mt+KrGs5XzgzF+KhF7KLW/s4C6Ppa3w2AvVaGyOxQ4Kkt88nUC62kjXuwO6Y08HssLGiSQJ0JDZNmyjAb3oCKPB7JzMsRGCWxWvrgx3lDytf+iE5KlWPVgKVaPcXOcuz0fl23es6fh+SEcteihAnovW85k8zLQuR5zrAqbMdQk4JwaI+czG5DuJ7J1ottBBHiy8ZCJDzl/LuPXizk6qeNSxMuUEfbwZrAqlbrECg+uGAJaN00d+psmxNNCtf+vst6jHMqbEc20UZ4XgYHHw/xkmcYNkhAWDkaYgAVYd+Pz5R7jbOQmRgFAzwJfWl8d0y1lrnvJFc4s6VTZ3/B0HKEagzSFo4qh1NrYzKpBRieSWrgDfU6DvqPrJQBWVjmo6Ov5ZP/mGrgVNb97lL/Okrpptc7wRwxLRYqMc/MARwrI0cBsCGA/E/BJwS43nW6JYZ0dvVVIg4SUjEDJUGhAe20k4I2mo/kj2817gFSOSdUC87YIjOoCjRkGkTEBx7yO1ybgszzanRvoKrVBW7rkGzRq4PD6u3lZBsMwTUfLfgFe/n/y7UQjbgGvMSg0x8TQE7QF2gLFCGdxTgJ+U8r5OWKZzkUIEXHSdORm7XuwYVv6+Z1rlWcScZQSdyLoyGsTOA+BLPNnr7/Liqe1K7AgpZAo5TkS/p1gLKAp3uL3vXb83bkwTZvmxYPrutJsAKvDQ6J7879b+U2r7xdzTqn11j3pMWLIr8JGk27ZtAy0x4r/B+AS6FTyLNCGgKqRyLfVXwYdxhoJ+c44srfcTAIDaYG2e3SXXlQOzwQlAvFL4R/JPmCA0UHnQXuBVvPIXcameJW8xM/PviaAjn/wraWnJGeQXT4sL03AqRF9r3iITIwIhXpyDb46eGGARAGbd/t6owFKuaPQmx7w+TZS3vuSRpfrOfxFnS9j0AApc5CBBVpI3EtfA75d8uxMrHUDmyHL7bmYQgpwA7dEM1bFETmu3QzTnpGRnOSxd2Z63ZjfeZsTlH2d8mxGUq8FySwzFuPPxFkR35Z/tBXngaGtHoEKoK+R1UtlG2t3bFskEgrPIWw0HoypSolMbk5YScobZa/AvZTDUp6KzkuRe5exaNMe6LwJPVgKXfuf8zQgBvq5SgS8DQU7Q1OPnh6HpEhjAapB3pnY2YTo+4aE3Ixli7Yaa46B6r1ZeRYPikd8rNO3ZwJotFKxPNxjneTVkdK8pMMrfTp078lZSeJxTC8OooXsTEIe+T991MBDfpHISHB1VJ1RAU/Pk5TMpqJLfvcA5NlKwsI74WRP90FBfR5PmzzZwDwYitF3H3M0AgNwyGLPKJAiOnAMOjnYVTFAeWCAU9nOdeIY4joUf6ANmZmjdPym8hXAIB/IS2Se59iVe+V1cuO8OL2ZfIir4zIQL7Z5OcWkMkKAKuEXT3FOQI/Ha6U15GcOR+p7krdBRR/AWlmG1OQbFwCQR26rvDhaj1tU75/h2ZO3ZPJd9Q/K0l+Ul0c1kEPcOIBwLtR5VSvZrys6iqBrBGYFtKYc0fYmje25v5C+a9yD4sa6zvzO7wg4P3p1pW+zeE3pGO/m9UYDlOM1ZI8FOVAIGWjgEQ+fj68KMMx4npu02UuT3biK38G4vjdXNAPs8RALYzSjaNACTIrdzmRCCon1DB462Bv5cJeTmSa4qTnnAXKsGPVSSewU+spdkUDUJp8MPtoft6sYrUxk/d8prCz4V1fc6LnDYzBp1BYrOhQyhSyt3iOvgW5gAw/AbaWt4Obm0roA9ja4P82Dx8wKdYICOmJmpr0sMWfpDwWh02CnwjnybQDmBwzhLm+FHn1pi1SeB2AotslzYx4dXsjuySCvlWg1LKJYWb1Osr6r0NLRt3GEwJx3c81eg8MChQGWrFcE53uL7iSsL8hTOBTK8RKwkdK6t5fI77Nfibamt+cqoLpe3NFl6+l528u3AxeuocfAEE9K6TAEJUVcNMcIZ6BzlKjcnA+xiicVLpr5MBlAsAMtsnqI7OHFcNn2tQFj5Uft8tK+XAb5SkZWO3kbCWIRAeMM8/CWvFB+EeWkjQCBaF0n8BQmpffjPHdmrn36O+mk4xXDiCDfGOjyeRmoUIhCmMrvWqxGosLukmjKk825kw8TBW42AaU8X86JmrwuPlnFTLNd/QwfF7AAxMkd9h6fc14au3ISDagG+EICeGoQePw8vEIG4whTxzM6RPjoeR+GlR6l8I6MJpft73DeUyS6lUeO9Q6MPl1AZNApAOzXONHmjQco7p56P987vAcJo8qMQcxbdGLQVJR6BeiJocDafHNl53RI4EroPlKUnpgczOjYM5+ljq5TEfp65UTouy/yCBmZH8aR2ZqzhG3IYpFgAVopSClpHgId3FzJKbe20vfj1Y2hccmKDwpjTwatINAKTUrRYZ5hvfhvZCnrI9dlABVO2ln0ovP5cX32JIKTGQR8gvSSggr9DMWoMUXf09bDHDOtOIGF2TAvAIOj8IM4jqN7JFxpM9fAf47Qjz0SUlIUnloLdZSdfBaagIT+bCoWUtA1ZgvlDLgNNr0LPlNmjNFJmbYEKahGiEA0jTEMn5583bVnDdJ7D/gxI6TpUBxwVJAFwDnsAxTNNQBwtlyPk/6h9ZQHzmCx3p+hu14qzvNK4RKJSAJW7WmCwq0JUaakQ1OV2OlcCVC5ioQ8SNCAi7RI8XqiPDUzjDAU1lRu5o17JRVXhUnNY+mcHfJRbgKDNcaAMDi17AEMHLynLgQdflFh8kvOeZKGlFw+PLAjh0RAZdxOsqnyUVrGaG1LLHRyr84DEkncFFH/F8id3nrtzWweDuA0nATaAw1EMcI88XCtwqMEFv54GrTSXQBTGca887wGKP0VQHlZLsAr3W9pDM+8OXtf+QxkYL2E0wNcqUm95rYci3tv6kbASbhHkci7fL3ZACXKo+BQwh7EfVSeCbebBzAyj8Of6Z7zOwAFUg7Qo8WP/v9+gl1otvYCVaolIafvyOIejGQvjBTXBAA7zFjOxgZ44GAn7tqNpnkobCSX7a1j00ey7MEw/Fv3GjF4W/ePG0a/ZW2q2y17IIQs3DvYzyQ7I17WtfJS+BwPaXgnrCBkfQ1JmHKXp4iMDhc9gBpbLAQpx2F1AWbYU4Eolj0EhgXAtNBtmSRUuplU8mVhR3fI5BhLoG0rW49jhGbchCzhniV5hCvIv5r3rKhY6f4fFmxq7z8tNFvdJt0IIYE9N3qM9upwkj53J2s8opN7h2TPY2fzpednYtWY19O2IpFVa0+TvIsAqzD6+3x8Wc7jZaAl/jRB0XkCCg05n6Pu2wCTXYvFN+QHKwlZlKKD6H1JHpq3ujKL9zaAPdD4+NNKTjyb9ghrscySWfstJdOkZAX4BkBwhdkI7aZydUSj1XkUh+dKPOPQaI/VCnwlFnlQHlMpWTct1H28qVqeJvONnGhNQOcE4hclY9faXCqGzFYe92tiAliw1wm3deSxyLgMjjNJazU1hA/zHOL1MmjD51fpdn221ugnw7kbkEj2DvluIBaTB8d3JrAc37GddSuw4aou4GxrMcPbk/Z3/R/Nt9PI0xlPl9Y9yfy1up/WGV3iDIwGcbBulo47PP7v8HqjAUoGsK+DcCLSoyvXZ4fwd/R3VIJs5bcfiC3r/sobyCswclW8AECjzKkQ7y08wwPn+BaZYKyEhTrji0c8VOGURHs6gE4KlhCMDldNoOHxi9e5SadrzslwUl7ZeRzt9sl2VQuA6J7SARJKe1icu2wIKcc9MuAtVNEKze5rgQFrPwDj5NOQa1fjkctZ49JYbsvegCO/QkBVA7j3dVb6MZ4voS6yzQTJlQY1ADpUl7TqBvg0l8QYZ45Sded0DO+fQzGnQLYLmULLQo+f7x0VD3/suUAPkIBcAu0VkACjJ8UyTGvijcbh6Gn3xR4ScT6LICTvQUXRVXQ6NM+sqZCCvBcZBr8GIRMEaQ1vXQWh93USNYCznFPfv/SxCQplOizAcRsESHFp0jOclkVfyyQ9fyj2CVSb1mkNbRafYACAzxHS8nLvKP/rkZd82B4GDfj9vcPfn8cSHHlFGe3tEABjVUvtn9VhXyTyZVlw67pLgU1PrxT02CZOYucz1zASyotB0H5NtvUHK6FAwJhNNwLYJVAz+Y7XH7JBskQ0lnCmx88hUzM8HO5wszXRR3uBfCSaZAC4bOzbYlhUk6+9vGVQee3rGdpfMo7UDt/htUt2dcxQM3O+mo7bT8hbQubxOWxKfCUQDtIygaMq1DmIGzSMceg/My0re44jWMbeeJ0ussAbDlAQ6COm9X/xpZDaxtE4DcCrYRigwkQz0RVoxoTej2aKqRvi4foYzHPhWJjl7aoJucLQ4wfQoIlu9HhUZkKw1zzDWIGjnNlW6VD+ioHHHX30t4ZgunET38d97NroeRyAh3OeB4V5vKRplRjDG3kNBj96DmhjDbeygByADgdxhxxJmbPCQwLxkSYaG+Prtr44F3er5fC6QyoXaVg7k4IWIKIJrb66R4O19cTTmKnwbKUhTpDyNGhJAXi0+ydNBPqU+IpQiXd24vLg6cpBWB1+EwiRB2HE62s5w/O3OztyeOLSe8FJyhK66M+AErhLeUCP4DEDW+D+3nQm/Cwa2hXdNDg6B5Pd5wGKrhzS8g9hKbA6u3z2XqbXVGuj+2ntBV7mnLO/O/+WwnF1lb0JlUtyH2FZGyIE26mES/KRaLuYVA6QngIWQxatp3t7Thj+Az1CAjQpfuW4QuO/5PB2NM9rTyyBvzlne4hg48VdmG8LBk3e0/Xcy9M+cqjCPx3Kyed1jEFdZwPoOfI7faM03TrnagAwfivJGM4VWywrHsZEJ9JigBo44bdL7mFg+cqREvRARtC7ovUSbwPe0/ZOae8BbRSZ54f+e/AMdkO03oAuHwaGEc4x3FaBC4UDd7Tu0bl0IrL272oVc+ZBZoGYDOva8uTz5zVQxxsNUOKGOrmYROt4HIku60yC4goA0egx0FUtMbwEdZm9Kbq36r4PYbRBK5PPCNDFVosjGW/GGYlSspIdQhrXG3zoGoUN9N39cB90FZAudNhHA0sMb05vNldCiV4x7qu8G4EmdShE3cuhoOe3YSUKTj8faBczFW33oGjrFZjKIF1JIdCVomfQWgMc68/HsdFyTAIVWyEbJfRkWT96XCTMYggPgFZxOB5/lDGPmLg8Euq6KsG1tW4xFIqtoVFxIZqN8JR4Y+Y/HRUopF+Hz/zLYwndifOaCheaEz2Q5Wbf9qaowiOm5TqssmNOWmuCCXt+sgcbdIO3QdCKeiYU1vak5cg5JpM/rY+fF/J5laub89y3cPt5qFJrWPV203PfKL9CSmFPbU9g1iBp8KaUF+BOp05IHfvJyoXjRQLrkrirHFf5Fw4LsDojS2El88zMI8OK9wnRG53QfK8Th70e09PDcI67yWr9lfejfXGnN4keJiV0d8gSffqxDJkd9mg6EZa8pbBdmj8GyNmBtXbxlzy35AtX2awJvMNevSO0pglz7AkYwMmb5fUSmLCHqPNRuofPuD8NKu+H1TxpYwFNW/VNmUaNE4LF55RLZeQ1X03+h8J3em/IwDJqY5yN03pKoZnKfSqhehjy8zdl0azsVN6ljXdWL86OsHmpFIe4wx6bvNIbepdORHvzf7OEeDquZv1/eitmDC5w1Gun49ECE9luON5zX3m9kKLQ5wsytxhiEfzoGZASIdMJbXLhBZr2kxiqBYcBFUNPKUuaiWTrsxU/TVrpXRo9wIVoARwx7FJu5MQBtHxwYszvof+WxcdGdNPiNpqWckNtHp9IrNsM74b+VuzfFvmuvxtQhAV3zS0rwVWloFJ6evlhONzuIU/D8lA7/KTQEL8vMNLeEFhAhRZHglWCjYCgw2AoxS4wyLCWG0QpEXa3cKrntZcid/hskQYRg+S3IVCv2XtheC6m5eR8g0DZpUNRybIPf5/zvgeBcXao4dFTJsAqGuhGVAauEnraiBd3e2AWBXeuqqApJbu9FgaH2qeJCgdOZUsQePSqkOU/eUHrMrCUAahyNIAO63AMKildXAcnt8saN28MnjMvn/Rt/uo5GfxS9jik5RBc+DvTiwEQgHC+6+nel08eua+j9N/8zAvae4dRcRPeJwaKkkkCpfQG2KKXJ+OSDfLo6RJAWNeGe8WecVa8UObNcmCPbcqm6W1Nfbe/4zDZai1YexDmy0lLHwApntbem/yD8/8TPGhP1Hj7GZJN9rBkJxfb8Fp9D4eztP8pL/RZe2Bwyjkp/DBhIcB9jH9H6R6gDU9+r3KiOAdFG1ip6lOLyYPKIbHOzdZ5apGRIFgackL5ka+TfwK86QAlYK+BXE0CCghUSdOLPBfMC0tmkNUtuR79sc++0UuJVPfwuQLa9Ec29ZGQFE5i7Xggv6NW+1QYXSWA87rh4cAly0ocArcGzC8mGlxIgWdfk5dsBiW4ihGflIzy42fYROjbnpZBsKEMfPnkrsSrGf7DcvPG5hp13gBskfhWw4We436HANIiak7ayAI+gbY6Ew4FZUbX/O/A47kxrkgICkF6Tbxk93LbB+/Z8+hxrRej5GwCxeEOTsCWmizGGcM/xkShAJDPL3CL8j4xlXRYWcCHwg+i7coCOpdWsh6yxkjguF9eWtEOI+BM+gvP1wdtXvMEtrw2d2Azx6RIEe7cGplnPpTCQOSd5D2MqxRSwPh7AgYpUCpa8UAgndej5N5Yu61reW+GDCmLtgCbP7PPG2P+vdyze6lA7/SyaW2spAWihpdGVUTrks4XO4AEZYCTxOl12AL8gdHmvfX1xEAGVasmlszNMGiJASDnvhNwA+oQReYhiabeq1KOkm3aj+J3jkEVTwavlDsGeRqnB54dUiXdtoCz1h1gRU3vn+mB6TLvHPdsYG7vRWK0BDjpYSNgAXixPUcDkPvqEGKUcRIEw+b16Y10GBrm/yPPcfBf6RrNH2c3dF4T07AY9417+IyfEFOg9GQksJla4CNaIJ2ILuCwvtEYuQcDfRTNu3y98QDF/9VaRoGBfQUSOdBlvY429DsYEyvu9mFGUvBykwntCiRASor3XK303WI4dN/xW1ofZJrLqWyRsFdGur9KoVvn7hfpvJZuy96LbkEt5WO3WkA9TVSPXl9Ed6SN9u5IMTlkQgazlSrBQKXvDPJnekTuy51y57wzo6qJZBUAI44f3lQArGS91LLi0e5ag38CEAMOATO5dnUTCjgJgTqRFP0QhXNEx6GMBFqmp8CCQ/ROGGTFUDp5W0OJDIVKWs2dGDkEnWLdcnc/3NuNsDZsiaqfiQFJVCghgiEmla7yYa/k8UzhNS3P63BBS5irZDtg4GbhjezcI33EShgffijQR2Dk0J54W167lSNZWfzYHoecwnyG5HLs1T3/7jBMgnuOuUFSNqAVa4+e6TX4tVMjPKZKEkXT5VqgsHmkEzBthZLv8+XC/tzYzNqAyn+IBi+QF3Xy75AlENBTwuKuypsjB0KKWSA40dVRwyjwvTVXK/reE7MdfJXnouUT+dTeCT1zgEsbKRMw0Dt8hog5FOWWXNTzBNAJ0PvlxYaN54vaN9UkD67gAu+l+9grlyhPn/hXtJje1TuBG2npe0a6oaHHHTlCjBVCLCDV09+S0/bODgXPe8/2CcfRIfJWSuhKhg8PngxE9/xiY1NXlYoW0Z+pkMSG20oDlpw6MVFVq+IRzVVrd28PzLt9vdkAZYAPK1K/EuryOj0IbrhGINOMJ7dp39OLdmnF57N4dlSoY7i32muB9rSAYEQCNTtxSBU5dkdLqAswYHwWDX7qy2hBnWDssJWBS1HtORpMurIBDngPZI1XraX1M5/H57jUEbBrvfNnqHgIDs302qzy3GAIyF6yYxMHUK3o51iUw6K4tJSPFLoYwS55CiYp4WjFKOtd7bU7XNBJaR5TBlRqG1MIeC2yxxesaCCdcoClI4a+lANBpRfj2QIm9x6rLEDpHjelApzdX1OU9MKoFBFQLMK6p8tISE3Gly3ogmudcIx8znvLqtYeVJhOa4nhjucYpsdIOTcGlJrvAKZO0JOXaigakE4GB4BDhPbGeR+kvQFHgjcZbQp+g8IYY545KkGArRDG8zK9altyjOq4i+x2Btk86jDivQHvEZqizHA3W0R/V23ZpQQUitM+GbyvHA7vRW+59iLYW5dxhCALWKEVG1DrMyqetLabg7eHSvRIjleK79LluLioEVw932PcyvMCQ0k9dO2/O8JN5IYUmfYoFrvs+vtcB+XxhMZOD2WMZ4kHpjdpHtnQ+SzbuVumvZ/Tcq+MlHUMtiqtai9t7/E81xK9N9VsDsDRBE3y3IZpAvHZdQJA8nIA0Hk9EtU6FX4a1ZtNSquvWD/X83QunIRLfWY8Sc+8S5EvDCX/pgEowMmNo91f7BhJnrBX4miNnw0igGiQk3CMzY1n0N8xg8Xxywvdlrru0cIhUWPIp2IAl0DPxKUpQKcLU4zIex67MjlOJdWiGdjKXvfQc6arTUpUbn4T8gQApdTQrv8YCmA3+AIY2kIp47iO78sdSvp7/AKM/G2FIKVh2vM7K4+EOpD5NbagILKSoqLtkuf6OY4H9xrzPc0LokELfQCHV8TAw96rQeun9sxkRlfpSElLeUpIRQtVsyWT/py78rTrIDiRRZN4ImAc3p77y0t7VS67c6QIzDCeYUUp4b+S1SSn0lsGLWFwEmMtxD+qCJr5BfLEBOmkM1m2wmKA3fRJIOGlUfKj1kWPYuUXdhxVaioxLgXUqDmGa8+VS1SiibBSMTCl0shbMAeICv6phIrc+kdTsSwl6dwBGSf0aCjM1GdRofcaPbv+e55hsgffWHkzdyHApGA4jGovCvlhydsRA8jxLhk1R8tIeW8UBr63HLKX8JI+yuFYv4CTf9fa5hMZJ1N55q3zuBJNx+D6J3oMbikgHr8PVSZvmOhHUCle7AQb6gXxIJv1GaBqD8k7ibRRo6Wy3BF4J6hLfrZHpRhWGoC6rBqdaO15KUxrt3nTIXTumTkXPY9ppQ8dJ+ChLrJOgL2xUueS3TE9tM15g2mwzwMELb/5fxd8oM7xQfaRM1d+R0D/NVDHGw1QVLLUxzhHJ4zOMloS0p4LKaaZX7ES69b9UBxWoRLV4UnBxMFW0GjlHnAi7CtJSjlAE1BClwoggFECFiOhtJWdwxhyi4//twbjM6L1qyqMUkJoJO8h8gRsGM+wm54vMbVq4PWa39N97sWkUsh9zDznMsMWAVuVUhAtbEY82+NvpZK3dZYWIw+3tZtEjY2qMj4LSoDt+qMVjx9R1mROugC2bB1iOIBL0ysxriE9j+629mbgnIeuf1RWFGymx8QB/DdAWYwel5UAptLoIb9yGOHqPAwrfArh2mYnb7hh1bXH2i5tWCmOgVog79Q6pwUfAgUwDFDD9+p5nGw7S00xFb7oraE9bSsWbTE1TFPpqtdR4xZvAiNnhc+cHidZzSDAWcz3iabHEZ4c1m31YAkrOZ2yPJW0cyuSAE3zYpgLmrtoprXkPYvgI5wHNOglb8XCAQLsJZDhQlCmsIaByMjH06985nEWMqoysJ8vvR5hYjXP8HrJhpm/YoNhGCPqJ6PQodsHcG6YPMt1j4vyPHhTjcM0OPdy3uZRATFASucHqVOzwa/AiDwTEH9F845lBXzAoPjHNBpGhBNtZWxNbwnlnT1w1EUTjJeh3BU5IupRbiz8Lj34cAbdYfRr7exJGeCHYEgGqe7tlIN3+XqjAUrHx2CFpJJbJ51pjcjXJmqgY6SBzkC296J++UC9RyUePYbaOGimkeKQUuQbBjWLQOL54R4cjpWRxsnx1VAHCgcFhK32cHzQ3hchXlqBk3baPBM5A7xW4Gl0EdXUO2w0xj1czVgA3hq5CcNSclUGcCjdKXgt2LVxGEayYBDTA7ZkH69zJ8jh/rTA0T/DajStCGDcyOkyFpuWeALVoVU02NEnpS4Jy2w+kMCXsBxhLTeQksDWiORZ0fIcIRwuzy6FGhd2X0204pp8fBtJzXcpqM4jyTHOLr9sTeP3aMUeFtwuT4pLKm+BvXWKLdoLNCvqRAt6smI8o6uZKIz3ag+MFK0UMvljgWs/FdnI2XDvjcXW8cMrt+/qvoqO+4N7QflLvk8RS1U9AOzx0diPqrKpzK2PBlBwaEA8OZSp5EnkoL9o1SBLCdLO1dLeF+8PL4bKtI8qI/VG0ZztEW1Gi2aFrmYC3CfE83o7z6tlHsGOvx++TrLSwEIygZVdfp5eA7S7Ak3f1zrOdRj5P5p/FrntMbO+sJBQIvL2b/UX0uGi1agODSoUHplG5fTcXnfpbHskccjQR09tn2u1DTSToDYSR+fwPhyQY5DXWK/xLJFfR8LM4yfchXZEHGIYuV4K60Luc3n0BdizLupO7c0P02B6p9cbDVBM8Jn4mkA+wbXZPi8AaBdToBhwtOGNO9gnBa3MuODlFcEZP5cVP5GjhMooczb4EFPFuAe/u+U6QxocpO5pEysbIetzAh3IXR9pBovdXqRc6ByQRCtZjqW8RtncoLkvbYI43utDqHQ9c1fkYp/CafczDZToOjWvR/P74SXQve9RfVb0mTxW09pBUDCtIZy4RvcaTKx02/Zyl+boe6J7w1aED9HirjYZaGkG2tPRLcFb4MdUFPvBehq/oTW1opt8RhZQiTyfJeEnq+2ooLkNpRJZJb6jaicHKLCnY3e+gft9rHQlkpNyMXhHZF4CFMseMQt8eZv0YFm4SjylQuxtxb4eskbFS3oc/9Fhk7NBXcgThZqbgbws5qm0RKvd6+TXSIqNa3a30IQtZ49J4UgpRc5lExx47WUBxJgb94T5DuUBdmUWvWrliahNIhrJ26MqMVddMS/JPCbl6F1Sz15PCgjBXo5AgakVXVod1+1E6BmKQKBOR7Z3CL0PMs4Qm7fomZzrknQpVXmHB9CzZ1X8Nr2YmrM8G6ur2cwD+izS9zIvShjL8ND8tNYTGGWvS7VRyDPsTdoBMH/LW+YSeqA73QaaxqKFQJzHMbxh4hONid5K9dCKkQ8JNOhwiwvJYsnw6YmlYX8cQMs5i1TTYNb3gjoOwIgYjPsSMB7fS/wmCvEovAP9jl6I4VmRh2QKfH+m1yD8QfzVTGDlKu+xvQZwF9fOqE4DhOBYNSZ/T0ljmk8QbCEfrBE0oJESm3HSq0I+kzhoZk6U0hKDClgMwWKlb2aSFsRRSmoCCjELqMgy13MpLKd1plwCK51LL0hiKF6M5+ieWi8JOCtH/laSKZVr7lFZZCUu/qBo3oB6TBx5DRndTtqKnQpXyvtpo3MO0N1P2waDz+6gAAr9fy97Olrgt3B1U7qxfO2i7/ft2drRlQTzsyHMlSwbyFaKeklRXFrZHC5oKh6PS141oHMPMtxIbN+7gZoqHlxeq6Rnhgtcyk3aqkOpT7IFsDBCTpASrDnWf0c+hsYumiVqPLZGs/vT0GvmXBCepeJGfAy1GChMsCX6PUd7AOXJ3WMv6HXX/NL8rzOM5H2s+2zOMSrfgHw4PZTdrwXNJzEWiwBLXqbaD/Vd32eMrRRo86poPBM6Z7IzMPiWzRCP5lsaW7aiTEQPc8haVdc4P0nyQv9sI5Me8zBQ9GwnH1sG8Psj+TUILBfg/CYnyo/8MeXn1Nllqx+vvcbnL7X8vw2+4Lwc7oz2fKhNvz0lmrPocu+k5d7HDRrWdbuRXBrUYnjY4xzGLOkXnXWB9vB9qArxr0D35C+gcw+nDpH+k3weRoAcBwcgeeCjd3q90QAlxgIB6K51o+zVpVESvBPQkNh5RStnAgGfiDpQpcI9kbX41c637+OyZG2cQGVLT/4N4Ehm0vUS/irD3GOMKzt0lGi0LMYTg0Y/O/V/0UbhnMl0zLdw/bqGlcEE2jDYANAgaDJtjnk/r87YJnIH0HkXmh+tCyej0UoIPtJMLi/o0wau45mAwxYqqS2FG3YNu7JIc6Yw0kF0AkUWaFqzC2zROJdDQGrMZ1Z62A1OrWRcZdCn+WTT4nm1N0EKaoKWEbcHYuR3oBXMbY2clKy/Nc6ssXfFCOyp0jLaOyIwOgBc6DtLEACdIyB6vs085XJPlivblT2ApXrJXN6aR5CfvNbYOgo4+eiFHGHCaAFOkOjupGyyJpZydRT/v67bjfDkxrfSlTC/B3aUMukDC+HUBQDuQFsAi+NdU2FybSYwGPytj4PfwSaT7ZpDgPdN+EDDteRRqDVwZVOgcxbIl070bdLWuHVwqIAZ0t4kK6FoOrikf3q2RIcYc7v0/sNKhNrtawtddyfZCliEAB33lDwdunc2zwQTjo+wml5KuN+SL4v0QZ17E3VNWqZynhOYy8MhI2WGldFgR24QA2MJ+QFmNTLnnlgvpOdqkfYgY5zMa/mNNnImrYaMz0vzuDzw+ZTNb4MnWmnyCyurqOGaVThyzS444L1cAaSwzThA0AyW456MPrhYQ7p3Jnu/w+uNBihFOJiQKsNVyGIiN3s4pEwZfytAw2u077Zvb2QL5ru0dEctvkI/0GcxYnBAH5o1NjQ3hgUBPUFxi3aNcjP5fB0JYTGywlraIBOAAK3IhmCH5jqFpfd3Hr/8/2gG9/11zWBEd1fVZtX7snzEqIrzc35+lAW6EvOoOPWi9WALTP1mhlu9njVAwZingYDmrGoVARwfS9+JgUkQ0EkfdV8BiUC5rB1Xjxy5AGjXNoV/TbsVrK1SKdnrHjwYtvpBL5AiSAZXzhfBqMppZZAK96iiwZ9HW3GJ01un+1FxTSBiWq7dFqqBHkZ35l4jC37xI0GxkxtJq/YqDJ6QNbvDVU+znFPKaYm3FcoSLc20fNHTM5OkZ6WTvUxa6tlbaLjgxaMxFI0U3cHLCST7QthTkOXRyXuM83TQpcS7gYY8H6kHBOrvQCUXax/p/xr/ZdtTZeVKPrdiXPImLXuUZs8hKWZ7FoDOE7oM3tWaWMZ16MkgiffU2qg9vhSmPBsAOk9LU46m2wTZM1equ+DyRZAmYJhDbifgBORuuMjfzi0ZHrbd97NRglpDbaD1dGfvF2CwJ1xJmE0z9YhRP5pj3te0l3J2Gfbzbx2+No2G4dqLV3NXMUgzBk7ZrzUQwND+vqF11EMY6/TGlD4JeZBm/sm4Pi/JEDXfUirFu3i92QAFOISnQzckesfHsqpKEnZ77af0IroyZcawZcEO4ankVgC9EDnGwWunay3ohZlt8Q/FDiA+16EpdXVNCbyEN5uUs5DyAZhGuOkgjJjXJmkLqWMsHjD/OxiqFXscB0d5g81cBk1NGf/XTvZKxj4NFhibtcUeacu7KhlGqIBCP7VxRYOplCnAPedhUSnL3oJHyhLoZmtTyE3r10IE1VZcypGKbhk59Joelu1C0cFehGFleg7jmSuBayt+oOa+Bab0tp6lJaVidSyedMjnoXk8uOEVEU/PaUgZy0Uvywtw/sdiea3O5pE12WEMWaN8JK1A5w2oh4rDVGGaHiXmpL1pNdeKQtzXPteFLoGWJU7vWOWtpEtKZ9L2AgXuZRfw3Ciac10SZw5Dt7xPA4oJUidQn17E4HkzXdXBMWKEi8hj5SVc/q4rfwiUVnS+ib5j8EVjSfs0nnIa5aRp1mm78jyS/9QTaF3Sxwccic7671SYBr1xXkO5ZE/bNBQUeqIsWwYKsPdQ4aZ9qwMlBRInT3g/Dh5fl57Tuuz2roHgC83bAggH4BQQHjLWocKE+75oT+zn1eddEdx435Ima2V5c/SM6GeJd7W3vXcUsiOfxKDftAGtm8Y9rT8OvYNDdvh9GsnKbVQ0wqFkrpc+P860C3TSblL3Tq+4+PMxteIdXm80QJHS94mOktCJLjfe/QOg0XXC7X7depdENkPqNRY3r69W+mAABbeMZ7txxfwccpIAuGH0TJFiAoB0DNDhpYS9PXrZAzhjv6pqYlKoQbGby9X9beXuHq+fLxfk7mxxyrESCvr8HlaCMwHUgwO6QiVIG1CoOG4t4Z9t9SHsyej587pZeqrnDdNBQOxMKBSxtF6816VAQCu8aMtQgvgetY7sYQC5v00/bdqRc2B6coPqA9IAaDqppFnemiOXQc+/R7t9pUwleJU8mRiVR7CyjEuW52EMqRQPabo6Pq48HM3rCL+NZNZDQT8v51YE1xd3xfA756aBLpywaSFMnozLmHcIiHQipcvy5S3VGgrYZAtVzcWVYRBtauzOVZA83e0V2xiJoOphcUmA3WHbzU5aC4iNkENEVRYpide5NuIzh87EEyJI0UEHSm6FHLVn+bPvTEbebFQmnqTicgKxPAKab7ShUGXNBCDigd37fSZ/u4HZyNOaL/8l+SElKlkHnDJzK+cr7JlIeYy4R1f0XnDPIu1dycR7AzphheCzmXHSQIh0WuyD4wRtztWyZMg7e0AJirp8ucKHkb327jMzCGIQHGMcgEOrdenYU+w4bP4OWMamALb+H4CakB4t5iUPxp4AqOvGwboH8JoLueB9aN2yx//FazTufT6b1kibm3yDDFbbkj4X/CYK8QAuNS6gUQo0uGiLvUuARnd2ICihTg3ZSFSf/qhFSnRyEHM/pOf0zCPsYc8NrRVZB/sEP7Iq6jtkdFULYdyP93A528i7ORLXyJTJDoEzxqvSzKrKQSvthS4PExiQB4LjO+iVrQDKAs9W/rNdsmgZ6Pi1NhwFi93hFDwhF6qsPcD5OI8Wk6xDW+HaqEJwWwsHP9drxDg70BvIDZo01uFJq9yGtnj0f7ee1/rpc1keFwkvzU/otHkP12xemtbOdXiZpARl3Rp5URAn6qRTeVeGUPPYxPsY6yyLGVImdZ1zVqbwujBng8K/PUFoQ+CgRVpYCxT1c8yunXukL0v3hEp7ex11SjAQA9yi5zk8UlYU85kGC614jrJgKTiBVOnXy3br987Xgau4pHC7fJv/KsGVfBYBQOXGszHg/J30Gu5+fqC8JEvAboRwfW5Nk7V5jLw6zxKTh2oZmQnchau6sJIdguO8H9DhYu/l6OZtDItueiZ8v6xkXedzWE4SuJA/6rTkPPlIe1oeqqlNpWgluzbfkIfp3nPrRHr+vQfPDaU+eSGe9qi26sd22HbsMX3NhlB71SYPg3OIsba699bJ6jucH+RkcPJYMtSrcSdluG6SelbgyE2pBwBHV/V5zZhfjRNuu4GV7iTrjrLSk9QRfYBgjFzP6P4q87kYOu5dvN5ogBIjL8Seg8Rxlo0VJYGHm7ElWLbbRC3C1r33tZUzP2K+SydZ1Rj4zLfy4YjqoawDo2vrENIPiVFK3IodBjr5VF4YH2MtJXXppCbwraNNPVF1kE4GKZrrdDknWpBRefoQRTGZ4pmzCkF00NiGl6fyIqKtbilToOOrdjNm9ZOQQBlJXEqMe9xHAkd2q4+wghX4NQvkcAkwvRGimbToomdBjDM8FfG0mecw7h0jyY6KWyGtpbLWIfQctshWKkfp8ZydQE60gq2kv2hgANgDlAqVCRzo/mK36aIVP4qO07XPZ89QnehwuPI5Hsei9RnvcZFC4bMKtKX5SIpNz95ZHWSXQLRc4FScbkWe6IofKiEr/2YlenRIW4Zram41eB8SqfUetFBlRgCV4HnZ9KQAS3wp8EiiuYIqSfDpxpanZ3jgkuABVM5SYp1v0Hsa5AH14CgCcy+t9CnBqT28UYmkUrbXbCtenr4B5Mqjw7EB2C8v7d14LDtVDshKN6CbnqnIQU55lbQHKBNXwNVSok/r/LT80mF67od0Kc9PXHc12+MY8LLDU2p25gT9yevc56n5R1ZOh/dCgxP3B1II8EV6rhZZAwRrTWzEDQ8Jgt6qFO+g96o8YICPDjjCsXvQ5roPEJlAn4+jXBKBA+2VyDKoVT30qhBt2jDXpnVK+vrp8bDXX9Oj8e4CEuV69vK2ZwUMH/1m8aCIMCZWgiGYdI8TV15I+AlYqGOoEN1cLNTfSjw0Urzr+3kuNHAkFZUMK0uiDhrMrq4ZuQaxg96Z9ITycRw3brYRmgIojGZ4howb4H0xQITAkdz1Q/BY2c1chJHHgwlc9PdUdHMcM/RBZWqP0Z01+XKFjvDW4fbXsy+dZ+J7y6KZSZ2iC2ClKMtNHoWgVdI5PSO+q7VWaEUKZY4nB1D1UeXRtCO8UEdLJxjqSxLSM6wwQIK8LhboAPM1YKWlfhorMtJmAAD5XElEQVQS3rM/Szekq7CLac4HmVqq5ojxXHkF5neC8fX7KFscgskn0AIEma0wLZiHKz5Qgqu8T0WHroxqQVge88TKNPiwFb0k7FYnGZsP2ruWKG+ckpCPZE/RnPkQPt2XdMv7cndi5U6BoDJAxY8GYjN8Io+ackAOZa3wyQhZuKcGcz0cYiTwkVfPFjaPGihPHM6cFoFq7avxPbO4+QgNQOTt4UC3Kp+kZO/Nlyk29vqSxp7HPo0QwGEz8dS67Paqag8QFAIFjpBo7yGNL+eVKdQk3hNPaE735vXUvAg0NsKeE+euqOJw0Muepdsq/lGSvPanRGsklvYdPYh5jwZfArLcZ/KeOCE5stvsy8AjbRe/OnN+fDTE9OisHDkisDc8ZTRKN270objSJTH4Ury6x34fL62l+oU53KP0imYlV87OppNlvNbYFN14t683GqAEwy3KRdnXRD7hFML6V/E7hTkAe1YOokcvxJEIO5TybGjT7fPHA8XEd9jzEbJ+h8LoAwZnnDL43ZAsr+/eYoxBK40Hyzi7kmLm1QDnmTf5MLdBL33nRNfR3pdHJs9RbZMP39OP79lWtTfcOEZcFTnqxHqU1Q3hYgGmRVTYS54P0UhemQk4RONp9Us5a0y8LnlBJ+ktrjeFjCxxjQNwi3VXHYhe9EKoRDQ4oMONPHjMihboE4aRbY1KScWD6/uSgLpv3le7hfW+cgQ0b6CS9uSpWSPsNMAfcoxj8qzW5ZL2EHk6w/2YckVrfRRekQdpWU77P4t84ATUrPXp2SZOxm0QgKGc3F8j4JBYrOw8qtX3tOLfHLo8aatCLQ59AA4X6l7iAw/p0mOOS9JrxHFq7GOMopkbltEitpVtRUWgMGWcFK3oKNCgbWLgEs3/qr645hnS0bOdk8Yxc71dektQ1fIrDCQ0sgrtLOePTZe/8i8ELuwp1T0GqR+Br0OswwgC4K7Ga8llk+Yhr7PurRy0qUsFEmN6JdFhavEEuAYJ6Hwn00fzVLjmvlruGRiG+U1rGcx1mrkstl0nHeSVVY4jwUNvIHTOYaD38JTrM69EPPs2YSW3xHj04GNcF+M+AI1ztFwd5wod4ed38XqjAUq+ALYTZRPrORA30nLExrCAeBm4fI4JO88U7FTUJRh0HxjwqPJHi6zYmUqUlXSaYmht2jxGeW6AAX5io6yEaRXc+/mz50VORYF6/ziY8DYYN9AhGSnAGN+fDOt7ca72JPAzZvHPkJA/f44GLgBUGguBjvupyI9kOG3kW5Rlz4HEuNeswrFykbDRN67dw0LKzcls0+2+GFvXPGjRyzo+4tDyWo3nrad7KUwmkU3B5mQ9bW7lglh/1oXKD/ESSrhcs6o6tNkFMqW8FJoSj3BN3HtFXkIvPsfDg8W6Vwo6FJHj/YQtxnYVZZdvJ8ynHUDPxgcaF7Ld8tnz8+AGLTwefTTXlXkfm/lFQWAkwNc5MMX8DvMuKiaFCqOfq7Lb4FwUWqr1FV334QlK9qrRvqpGWaNiKBe9Dk3L5HqIPxyC0sskj5bvt06yrvwDXrdhq7t4r8acg3hK8MyEwy2uVhPAj87pUT7Xcgn58C4ppAHgwiTaGCFkEERgZXvx2PDr/ryYR7J7XMxpqnBMtvIDuJ4jdHhpjxKABu7cM0ggny+1JtoXI9yuHLalPlLTEODe3nu1p0Ce2BwyB3DTtcX9VV4g/mesZdAwkJduDa9BbtRp5ug1md10EdnVSAS5a+2WMVpdXSPvtkDSsU952x1HwYQM3FQqgKIK4i15n4YOcMjPALKuz0BX6DifBzbspW/6TLz54h67ww6Ft/PS/J9ebzZAGaO3V2PPC+C8jLjj6PLqJl4EMPZ6zBg3cFgQgEBB9jOFCGfoY1j11VCsb5DXJHModBStMBQCAjrXgOEh30EKaSaCcq6hz8ExjOSwOfe6T3YpsYSmPptj0L2UOKr7P6+zSkIgQjk+auKjLG8rquiSVVoXuWjBXbabUQGwVXl4X3YnxgbQlha9KsnhIsMtyu3FwDlXJRDneF9KAPRWqA9EHRiG5hdoDWDLt8MC/Fyx6BgKWM+X4BvegdAAvZZt2eq7cofLGo07cBxwhwZypskMP5CeGRzzAD2dAMj7Tzekhi4gpyEMwKn7iC0dwpAHQRJRijLRYSwt+9aY+jmeP+8v2vaawcm9R54OPRbO01AIQMpGvSsMODsv5lAsw9V+eevWNASBxvC+Sge7CooyRt2JxQsHrWXJy0ug2/H9C5udqSrO4E8W/KX5TkBnehoAdN7XZSPYjNBJ1uZPWimqWlGyv+6l9R3Ac0v+iR+tyFMkOfjOHtCnBiJ1QGg4DJpZpwCb9zXv2H02lvaWgXvdZyuEfF+9Lydd9NtygXTT/rSc5D5ihAcMCRa/jeoyyXzyeHKi8XQ3v74CUL3vGsDZK6XhEQga6I69HWh+CVU2ytul/SCZl/3MXhBYNkDgQx5U8LtKiB1hosnjSFQkYnpiHuYoY312PZ+/383rjQYo65myhoo2J3PR4xEbWM9xeCVk5diLAdibUjeGwz/+Xgoh1qnHVvpAezLQAAfgd1/UHx4b0BuEIMGlyRD/SAjzukTnqRhQjJuxOsgKxDebUnA8gEwzm8AJOPk6jDFKSE9rSkKpTWO/P0suj/i8enuMfAa5+g/PiZ4thmbOgFtG73Bc2rF6PtcJYvxxUqbowc3oWLTzDOLcDRLswLDqNLTsEt7N97Xm92gPx7XDE1ag8vDISrHkhkOALusNtKudD/D3l+LZLf2WhA7zFY5whCuUmj/k5ZESEY108rSbdD2CGf9Oe+xt6RJMJ2ixjrm6tHO4o6U4jooHudeDHgMpE/BzK6bmb63R3gUU23uIIyfDXid6uRa1unmTPKhcB43PCkSW6rB8TwUUZm3RTbRMjt/lx577dlilq4jkSaE3LlAeJdJh8T6zU7AAlkNt5FW77jU9Ae85DslDkjXlBVReQsI9c5x3Qq+hSnAd9iENfVKyaCpupcLbOruGIckERj5I36cbKY41D2DRwzTHYD6nWBJ4tPLP6CTjIWsswuS59JoPfQGulb1YQ2SMhO2IdMdqrZMA8Nl7ionhc2xzLIBBiht+ZgOZMmDRXn7yk79L+VKRhMR+YaY4VYMAhjwthw6j7BM9Nb6oz46qV4kW7k1XnAoIqR3I3C/v8HqjAYpLnCaxo0GHiQx4k+VcHDFf9u95sjAAqLLG1yteF9lutchz0cjQxWAFTuIWPpDJlTfTAljo5lzalEbU4zoBCjIHGCbxHB/pwfsaYNBqT8Cdd+shcQjyiZplQcznz7i9/p59FGYmd3up8kzsTbDJF98SI4uDuXkXn2+LCb2pdatpJckqAdAejeFxaQFWwm2pq6NCNdftXeSmYkC31BcvaQyO9dZ35e7Vj93hEjIAG9RRkT+L9nF4ALs6JhvArERiKsEGAIfgkZJTtYhCUGglnazuMjjkd4ABbuS9098M3+VtYd9XWdCyJpl8OUMU2i9HjxUNNLJDrAJPZDNVnmg6gj2ugBo8qXvn+Ht6CBLcg9OVf4TF0Ir03ooygCOEmPcgSBCxWsEfvE6ZkIPXA+gKkzjn22vCk5nlfdC9h+JfVMiTv/ZtmU/3jdUv8syRZ0IyAAUUFMpyKFElrgHEe++mnbv8qrxe41H4j3LA+w3cP7LgA+15ANiqIZrdNC+FVMgjBhgD4EhBuxsrQ4mm8WUTnEpW1e91UY4IaTv0glsbSK6O0F4qMXkusIwtzSeKM6sSbR2htFjd08aJxolXvCNpYqBDuohxVhk6XMb9bttQY3sIsfQhtlwV6Yos+h8ydqKAASR8b6U3ROtbN2sTSS9orw2y8lAYXoohS3LIoXfzeqMBSl5Q5cDKCxjhEgA9O12D/ix8BH0LdbebJ2BwUzYJkWlNAM3sKgEkgwTQ4ZIJeOSx0GuGPqbFJ0WkBmvaQNwM9miQj5UgZabU7tnjeQI9iVcTZgG3Nz6sQZCnh4sbgU6wXGOrEgTM7HsnUG7Fwvty567cYWFoN7HGpWe82P1c9LwR6U3vez6Nc1WWwMpJOwnB4HecXDvnpwsFrGiVytJV3xEnQm64vNACRxaE13poXE1XyktNtUgge1xsEY7y2MFDs5No3tZ4FqygZNVZwDG85nNfBNoEtjlPz2N4/3zQodYxYbCxdBQBQyvdUh7dXVbjArCu5a1xwjL3jCuWgt/TeqKTTOc2BxMClRNw8BkvzudL3/tOpUhec15LpPtfuGJEtJfwtfXa3rECHw12HKLSa4BiW9l8Xn1WuSz7tmyMeDxrAGrNO8eeH8+JIT8CcImueWbIgwwqYPGr+EYK0sCJiz1zQ8YCKHSVgL0/HYJtOhp0kbfEDzIY3Po9Bx/oeZalrexjbfObwaj6FdFjJCBjD4jDli2P2nNnKnYk0kUByhGM/o54xqfEt7fIe23KlOFldWI4uN8lS+w9bZm25vrfG+RM3irDGN3r69ETrnExD8TrEGjDaVZ3Tl2qpQ60J0Qe3Eu+mq+ZKHAiuopPBtjKy5zAr/964wGKX9pQMxcEMMEVzlm3/iABJ6UCBDvXkZ8CWOC2IIZbtjt2N66fpcDlLos+LClwei08ESpxtjp2gqwAU6Lcm0kkfEEx+XMJHI1n3u/whNyC4aJs0MU4o2Os3MRTYRRRTqV6ji8sZEKeDTHlTBob3pNY5Tk4uqRSaM+NF5GVvwN0opiU/G2ZhmsoJVnwhS/Ku+U29JJNoKKQl0ShDIEUCnFbhHbBZn+uz5jQ1jkKYRezSjSxWbmTpO39zPuosaQFYlwqzh6w/qpb70C+vNiyT3si6vsS/Aa4MIaD4uN4AJp+AMMVsXv8DoHxwL9YlUC6SRM1+7Lym+5p8cIEHAJ24zDGrURJ8p29HfY81APztljpIKnN9dy13osKoe4TI6w3eJdssK67+VH8rXCHeE3N//gMRPZaC/yZhuJbeuOuG5F5KNu8L5efN/iVBV29MJSjs3V68hq5C5cxb1UCTSUkAEQNEdo/OyonbIQRfO0I/8WkgwCMjv/gIwzIEp1M3SRoMEo6OL/MwAwdUl3N7+qKOwfjHCq9tF+9jnyqAAvpbA8E1zGQ3biTRqQrm+wJ7XAXSDcbSHbLEgThDANqPJ0AiwbIuoUKBOz5Y9hIKxXJkBNlzIXP2cGzo+CxCRTFta6R3vDTpG+Gx7/zQ4ZuEQkNNilHCEzMovJ06T47kAL19ACuZ7Tu4BTcQO5Rz8XQZ+/y9UYDlOPEX8Dd7uIWEyyPsAhGy/exuBQ2MhbihupCO8FOwNnQ0AZNtIKVW5EgoBRktCclmzm8SAQcKfcrBZ3dxDmY5iH05NDSABd6Tig8JLAgZsmakxu3aVyuZc8OCY15z+TY0Pdl2UjBgM8hEtfz7YqUazSAeMoOHUioyKqQxSz9MjZooJ4bT9uLlRiWCxVn8rp6M3utKCy1OWfb7gTBjPTW5I2EY/yu7EiGM26rG4EBbE3ecz6UNDr04JAa8GARaZ3QXiZQ4fAk6Hb9SlHzWglXhm1s8SjExPVPNO8q8bjGnqZjrG3SQWvLOYvuVrYaC+dp5Tji5U4WnjRXGGe3VHd/kvG5ElelfOZ7lYDJewtwiYbDna/k4qNaaABXe0oCrubZ957L5Jud1VdjS6GL18W0qkiRsWIFFJDHxNeKVaiEQ/tN7BDF00tyh3kYsbZDVuuoniGr35e9NeKruJSwNP0EAJU/cZX3CKUEqUjt0RiyVmutHA+VCGuf997tee4d9jg5v0lg3jLgcb+OEOTwpqgKJlR0sNn0bAdDtnD1jcNI8pZG39tAcVWYJufzNN3s3zOcWOAzusonYXDh5ojT43ZJe7V8rwQNNtDrKMFLfSUeubWq1vlljQ6BGF5HvycRZm8dP5Oc0z0lRwJHWInIFGZS8SBieOLgvXE0cXsAIXEPn1HXoOqdX280QHH4ZcP5HYgOyzQSxkmwhe5mt8Y1w8NSBK/PYmgQn5QcFVtLX8x7uF9Jnmuk8bQsNiAJMSnQpyML6S50vFcuWm1eXn+ck8CfagyH1jADpHQIqMGSGsk5nOT7ZQ8+xjjMiNG5G3qcwgNSiLJmohl6dkV8fEm4u/Jj1cYHtIFxuo21vrLUReLA0aYesjqkxIdVHCt9rkkvZx4WEYA+5C1hV6+ElQUWYCHXfQ5ayB6NoR7ub2/OZdAZtQ7B7/fFU4YM4IEBegZA6vLc7L4kAeY+UdDKKyhamrY4QEJrfnQYIUHrcOSZPM6RFqOUuD12sqqt2IPlm9tK2mWtqWc1X/rcj8HbuRdcmkwjYOueHLe7y5ouOfbHoNni/TgfKfJFyzqmIgrya6TXRGGQx3AG9B7vKboMCvOZbTXXh7wvr13R6yE62HO15Dngd65q447WAJI5gU6SngB2hh4Cpvli19EcCa/1/h4KOQf/wobj1r4ZcguAAfzRh2SUQvvgQrH73BLy9KymR5J+AqIJsOXA+C5tHjfv054Z3t3FtRGtq7JvJPOieL/DSmO/DM+rk61nXtS15Zn3+Mt18rSMIt1Tcj7S+mwaxGITM9H8GYa6X6vo5/vQ+HbISIaZ+CWyKnm0DZUTKvkmr8uMMDys1zu93miAEurCKkBCL0MJDF2EnmWAHfWA/YRWpAIsAWy525VPwo2qGyS1sFxcJRfTO8VusbvyVQpUKGHIO0qd/dRThZZGPEfHCieQmXkUqP/Lld4HNnHTqiLnkg2uZAmuHEqov9dgoQWBrUMCDexSYPmU1QNFnh7gbO88PAcYglOuZTVmcuLr8xoJbNzostZ0SyvGaMtsuHgNvu6rrBgOOxSn5hj0Y+GvhDvAXikpIYzQmS08CXx9n4rA7u2RVGklKl6JEuR7eEF0GJstSqEjoCs0FI6KBnjO89CzRAJ9zjfWZSi27PCAk+0Mlsa8hjBxxRDnr3CVj5bfnRSbCKhJU0DhgKFUtTeGYrAS5bOc1zFDMIFWVrIUc/CP+RtQg7Wu1ACTAuF9VLzaNBJg1p/GVUMx6Fdcci6R82syEo8eC43P/S6keLVQCi1LrqDpEqRXkkf2XgZ9Tvwe67Tl1TJwJz0U0pGVz2dYyQMFMiKRt6CXA73ftSYKTQtw7wHq9vI8q7dQ7e8Q7QW0FR4TqBRwmuGZmceVYw/NNSDflReriNhnFbX2U27buu4zl4OfrbF3RM+ZdzL5NLgO/vvROJKBQv3jlw0EPkbPu3Zy8ZQpMZYpXtyP3jZVoRfWFbMg4sg70XuzcnSPz8lbuKTXyJU7DLkdpcMSoNPAiYTP9mG7+33h7afewINMyYd7v8PrzQYoKQAxNmwAST9nBoGBCD7DJlxIEU+o3sqBWclCkmYablqVHieGwJXQGQxyeE2cOjEki0I3vC4FEo5ql2gGEyC4ohU1EvFycIAGFVIa9Wx7VMb+sXtaz5rJuqr8OcqL05ae5yvwI0XFcUmYOJ+Dyk75EKmSyjHVZu6HcUJ0HYJoJF56vhI0Wltb59kbOvJQ7KBHJEkvWcj2dgylk0BXi0iAjiWdPUE8DuaVlLLp0kK3p791zsNhNg/50oqUHhwq4M0Ga91nZcxplpFLSYte+pyvdaWyIA8EFWoCbendwqfBKiZvNzy4x5TrIo+d5qT5AtWOn2NU87uuiOLvpbBG+vsB1KnCgDdkmC/qfj7pWeEjusnlmVr2/3TugXlBQpUKUMDAykMeHz5KFVUK9c2QFoBRqjoU+uK5U1NZChRng6KzqqhBDtA5Ankn73DZDOxCfw+WSpSXgzzu0KgsZoHcLHopjBr8sjoE17rs09MzyonlnUSgO+CSTzRGh9Ki1097yV4tjcd7MM3/9tZyoqqeicsuIKf9zDCXEoG7J0yax8SjwbC8+zAluGcrlNfcFk7AB/edZLT7XT2ABcsigkgbb5LpI1+jDbEer8ba4eG+r7wTrgwFOoVg8KLTDSJ9hAu4P2QXBvMUQ4bS9IjoVhtYypV8GLs9jZo/UwdSsoJG9W+awwKdQXwPV/RY2RMMzNONpwIYcpzMWH87y1nCwNYh0OWkqDdljUsQB45eLCB4Sm+6+slI4AbH5ORh8T2BYkinWjRAEDAS19c1MRZ9MLXnmgWE5MGhJyOAZkiVo+pzWXtS6PO2AzgEE12PA8BEUwlsCnZ5Aty9lQpUiWui42OyrAUKFXqfUUGlJyUkARcc82O2OJW63cWPm9hrnGdeiD6XwiahXKo53Nczrr3k3ubN3ZkycIAY6J5DYRUvaJ4cwEP8u3ubtNA1mKAAqj4iwwt4D+C51LSV0AT4Ah30ZDinCFw/uXkH7XxQI2mhDq1u26413fB3DTK8VvvwUE2w4FDKquqPdVH+RZrPPCbgIQyh/4Plpvyb+RUNHHmr22pa8L/uqZNA7uWwk0JQTUteJ+DDXCvlmCnPagLd3IGL1ltejhjAeHHcVOK5wWZkPX7zRKKBj5XkuFb7iMcmqAS9mVLPJC8FPTd7dTiD93Db/8RoTpguMS4gy9s/tDM4vF7Dq+O1W/oOE4zXGB+/H6EQeiXaCnipwVvwXvJqiC6Xt+4j1IkGn0WRSlgONCDmy0UAm6Epy4De71uhsETLQnqy14vdgJXeKeWcyIO6NbcJ8L0v+f9ryx3pvsOQo/GivMXq9ho+C2fKTNP8RdPDtxl9sR49HjNnUc3cnGIhI9B5Q82LSk7/TVPFc3oe+N5Ek3tcM7wg9naOhZecM9C4AsgcgEDPSbukHdoZx1DrR5sH6OcamaJAxYz7alzgfQW+jm6GgVdOI0651YZg1EunCc/rZRUFik75RKUrVHwd82ACXT1nCBPASizluZDM0aaX8NG4Hg4/82aNGJsxMKRFX0uBFKsOG9u7BFEt97A+rYTRitDPGwJY1vJUQMOjobbqtlSuo/R0rHE3sqKFpnybRJ0Kix6/k+lGgusa3iidZaO8mEDPQZZdkkYCFC47ptDRfKX8PAArqOaVQCtvdcl1iEL5GdlJrAYPUgy2eLOB4Y2J4fIKAe0907Wg4pY3ZVp7AjzReT3iw24jLsDT6wfA1ptDQAN4Pa4D0vK1AbkU0m5Q1WFKPkIgLKtyyIAye12K/wnWRxjJyZU59gdZyaW8gM9tUbKr6DNbzi/ldlxylAQzrCn5w3w8h8+0DrKctR+3mECDaR7SeBHpnAUBBt6tPTcKjXOPZAhYPXqValzK9RCIVU5a6OgPhZqiiWyRsEHLv+i45c0+xl3PFMCa3hqQfxUeEl+U/Kjvrcsm0Em4unF4had3w/16SAfLk9siUBoeHHmeJEiieRoAE5l7nA06w+sTAzhI/lrvsVAkI/tIFk5L58JNnQigEnQTo3cKefNpuxEbEjSoo9MD0AAppQPn/cU7Ym/ukwNQvcPrzQYoQFXbAKfyBADxgJT7ABtm1CHAlX/QZVgVYztjcbz2RrUoHh3VPsMo7NLg1QtXjWr4x8rux6IHyMjbwYqZek9thQG0J2TOQ+BF1oGtXHT4RYzMsNcc8zHJI3YZI55Y89GzwmeVwOBNPCiE7mZRwwsUiT6tdgjxmIx/rZs6aRThZEy17K7NzuupEGzZ07Xbn49JPoItPt9dYOdx4wDy5WlVB59rAa9NuBcFaXSm/bDQAvIOoL0O8qxpPYAGK6yMkJCbCbIm58pRghnj0Lrmj9xDGQfK2qfQdet8UKDyHByASk5ntuwxX71k5eq50nOy2idgFu3A+SK7BPNhbghUJ07NQ0QQMBvLE9lK2fF+7WGWtdsro/0rBWNAnK0sNT15gCZw4nrs26qTdwNQCXqBKlRnWVmKmk92Xs4xJ+XL3Gr+s6pMYSrTljzj+XJPdjkz7J3pHKOmwwGQBVa8h7a9CuU1WwfAdHt6h3S0qYDUrLinrcQ1FnmEpMju4fu5Z4qeg84/irWbdRgW9py0VwGsgCucAsDFFTywMrShsuQ1ouxxyWvys6B3E0dIVjIdG670s1fnYZ0BOJxn7ynzPAD0IY9ZMn6zwk5yTV4550dSLiZATxZlSvB5wzCfeR+H4bs6+dvFIUCnF2zqsxlyIiCrNhxpEBJ+P/y55dZGV6WOeTsvE/39d/t64wFKDmIC2coRZMxQVn4RJS+oheHLFjGKYTKEIMnch4eDG3QIy8PyoOmQ0YvqfiOJcbZBdmhI+Y+6lswrhnoMTan/icCXFeCI2wIFotTXAgnHA21h8lAtMZ5AiUuQnUuQ/p4qFSIJCFbH+8HDwkzp8T1LD37ZLsal67KFrRVbNICS5T51WMBWbN7aexCB6nYqgTvd+hRa0wKyxwcNIuZ1EsJYbfUd5re+v8gISe9OwMmEjyAwFs4cIwExWqgOE5COj11QlahpK85gpUNKwbk5LBb93S5ph4VcldWyWdjwjoQS6SQAteZjvdQfAQy/YI2mbQIUWn+tKag4DVpIp3gYGy+etLcrXSAn4Ph/KwV5f0oBKP8ionJAgI7px0qsF2VGlmdit/Uua/J5HaWeG3DreR30mLszXLpBYCm8ADrkJd5mCEj9Tbw/SCeH63i53f9EABJr1eF2zJ97c115X763eNaVcnO6fHgoPb63YjeoF8AgI2ufWfFHjy3HWnvLk+5Jft4CMjvaelfYQ+suHhzepRhjnF7atbbDVcugq5gvxHPyUCXns2cVn5cV912ly1snEAvYcD+k5UUa+B+ea8p2s6/20WK+0gzt0oiaoa7cgf18wZbxpzXguC2zH99jvgi0FxKH8WewJs+w897GzSSPtew8NNWeF1kF9FZqaXxoIDolwr2/9DV53C95gqR3eL3ZAEUJOaKzlTA/Fy9oobIXMcePvyNL8x7VWbW1VlWuSAHL+r/gbIyjBQHqM6HHoZwasfZ3DJJGHNCHEgrU6P5zfgQTBaowuppGn6GgYWkjmRaDANNzNEBSARsK0EFDeWZSDAf+nSNuK2FjQQIrIcey7YYPC7lZkaP5C2S4/E+KdFQITAVkxWz3sgQsLAw8zmia45IVcpIloh+kQzeKF+d9sa8CyaLQy0hAC3TC7PZCoAWMFLJAm4SWHzsYSl4tATU9L5jz4RuigZ7mIV5anQwqemwmOEaivT56Pq3KGZaaSXr22IjmgzUBsFqMY6dAt8A2D+JILPahcS0nG5hOECI+0XNl2eXgE/Eq932OJlFqitdNvuIA+DmUpdcGcLhp6XRk0VT/l+Af1HBelNZ+txfBL1nR+vOusEOeoSbyQMgYC5xSnOAt2SVY1yh8GaLV5jUcsw/DBLplfKKT3P3cfrkrbo5rNAfRXWE95eAIFM39zc9Fd3+eMTyN0WCLBkOKx8XPfL573rgCBr3PhxyJS52ZE6h5rhcdkopEAZgLQ7EB00QGVvUaQu/3lS5FHsvfnjnd5zDSmvfEF20EVYhq8kZMusqQnryRqPzGkQAP4OgiqwNcnWcZIAghv04dmSjjY7c3/zCExTM7emzTyypvonhwfOfdvN5ogHJ4inIo+qTy5ImZ++kUaOqE2kqqF6WtYzgUou55vQM6OcpeEbm9MMbAhTndYvB5BM4RATBLJyGTKdAWlpj+PvTmlGhCwiLKghN0222NATjGWOnCl6lrRs7osrY475Pg+G+rXHrqbiivhhOK2+qY5aS1QZSQhs614SZL0WG31XEAuYefGCfWHkxBBW3QImGn0EpGheykoCWAMJTepV3McenqEjVzsxdmhBEA2PqNy+6W9CmA1qO0UJOwIo+ZBxgL1/2OkBv5JtHJp+1tSa/5uqQtPbnZQSs67GVEn6yb0cmR6ty70CXiChNeJmgJg4TNZFPlCLlF/eRX/mrvYWnE2ZnTfR0kfEVeeSf0thJSxT8CaxrbDG3ofVFJYYYrvQYjfGJgM9bW5cLXDknMPIuu0tF7vb5+NvdgRLqdP6LpL34TUJpNBM2j5G3xmnOQOHYp7VmRZQU9+a2H6fvpkMYJ1DD4PTkG702BdWvRppWBu5bV8yNfEAir3DoudZ6VK6D4PBlg8xBFA3JgADBp1zhA0SIAz/GZlT1vMROSDdZlDJjZgPvzpcYw5rmunTztpeI1aiMg8LRWywMZD0XbPDxEJuVYP6/FEjPAeTnu8j30nQzDrqzL1l1JPTdkywQSBTzi1J0cc+iZLtDI3pfDI59XUDc8Xv/OrzcaoLji5o7hWkIvhoTmI3GBVrhKsDLxsi19gRi6wN0MRwt/Z1KgGEkCdaE3M3AwYfGHcljo9uMzeHe7y81cQ+m6KiHhXIkWqnGiU6Hk6SXwoNCCRDQS6NKhghrXY16D6KdKCp0mPdD8KxYRheRsI69SWQMY0eltFEj1DuEaUyh1fwd0jgTinK7WUtOVq3EokBSdpfi1hhn2AIVoz+qPCHT1gMhIwHkITCVMTqsqW0lJmKWkz0blgui+B9YYQuzSse9Y3TxK9PJCcF8oru4SzckPHOtUejpvQ/kqzpcBoHN2lHNwuL4lGC/0MohXgbJWyddLQtL8LOXXi5e7j7g/wmgYLn6eJ4OEy037ULWH9TePN18+ejFqoKMzK5jjExjJjr0m02WfGqdouwrMLrSCSsBrbG8R+SMBVtgQHOm9PZQpKDMk0xQOVYgngMvTHl7Lui7Qe9KVLfLuGujXtQIHQntubudwabLf0FCc46Xp7+fuibLv1TQvIWNBF8sIRK9Zhnk/b+usXgt0witpdBk5NB4Dq8KQlWAuOezzeXZgP68G0isRWfyrc4K6jUPTapb6ihc07n1jTgkBQ4hJMMZ8H/vMnk+Mqkpuh+HRsMwQ761s4I5wOMXlw0BV5kw5r+Uc+TD9sPGM8aOCkBSA1i21P8dtcnzQ7fB5Xx4QGYkKG828znd4vdEABQt9pLPCO3wvngPrFuMMgbrOST0jMTG07+5g7gZ4ArGuZaWGESjg1ZKyUBt8bXgqnDNBlr+HAtN95mFKrgoCHkIyvG2iQdAawABwFY4OPayEJXEUbEnagyNaPJ5srK9Rs9t7odcRS+VmGo8y8hd4osJXHFZKxEJkh8snj6z4Q/AkLczdOQsY9w8AFEzpsY1xDG+XrbvItpDWVJgwOKlW8ej7TutLI5OUHeGhCYARlTuxETyXBciXlxqDQFtiJJ7CJ7PK4uw4Oj0q9OhM70sAlS+h9bn0uhzdRcUPWm+RKkFPTIzGcQln6TgvooVnJ5jWe6pOcsUIH3PhCc4GebxmXXeBFz7CniKOLQCDPy2qLWMpuHlqs8Egb6JxaC4M0bnKAjhyKfK27Oa3l0lsE6TzUuLiQwiIidYxvJTGQPx+9cLpVvXbkh49zgUq9crnUZl1IqofjWj8tN16//CsrTEnoM+gsWKMAwxq/aWIdQKwmpk5F0ZyDehwpgFUmH+85+zhE1+JabgW8tBouYfXxG0B7NFksnEMZcn76mgGg9JkorqU8z3sCZznc00jBAF7Qeq+cex7eXxqP57dgCUTcpJU+wwMb0a6RN1HaYgBjwIH3pI5Ti4pvo6E702ZK4ryjLUj90Pju/Sj+plh3ef8xECfM2fi9nKpuZyN+Dl+GRsJuKpx1QX2wChP5jVebzZAAaz47QEBjnwJe1cotDZb877yfS6i9AwwFHgOwODGajEWFHB8VsBhMo+1Hl51bwWcQBT3/lo8c2m0QtNFOvqnYEfPT48MDIQwPtv87stxQJclbxpszWRdjSEXyo0OmCEdnsIDw95b0NUEh7BGu0Llpo3LruUZIMwKVLfVppCApMfDPRjSsqg3ZvYzj2S0YP5BgAl74zmAD58D0B4gXbA7f0ZJutOzUt+ZcTXYitTQHMaTlaxxKh4/dmXQ/a0D86rSaASJN0Yuzpif3MQL5QWhAF0CxJzLK3FSSCHLKzIU24WHu93RTbAsTfmelAKA/XLVgWdUaJv7oLwD4jsg72V9Ki8hViU+rstmI7ccgl/AbLfilMdjpYFKrUueuRfm5+GBkTzXXMeaY6HPWRpGR5ffR3s4nYyeVNJhD9AM2SwqN4EVJX8fZbD3vqeTpqM9c0rKRbJqhSFEK+PBs8aRI1Q3Q2gCuuKJDBhs+ziKpCdLvJKw12wCeRsUUfPJgBXzBI7ydCl86rlpi80Qm5J5tT8Jypvniqc6z2OsH2oc68Jy2YC7Cl/e2va8qPvt/eUFK5JeFQHUtGxP1HzyfnqqBfrX00Pvoy0gjUOO+7wfedtW09k8FGiPJPlsP18aaAnEZzBUE51nkiSOclz43Fd0w9ALR46hjCqJsSwdWntw3C/gUE7yjKjSxdlN2oYeSV7/mybEY0/C/JsLbkRIQtUBesAiYDEQ2FzUPb6Hut4JuH5W9tk3WnCAbd/JjHRneRx6SaFHM45PNqbSMji6R7vVLAT4o9jtPXz/HOEIC/23YwJl9aPmnBoX0ABDgnbQSGWhAnx2S+eITwPN8CPEJann7PkAc15EaD5/xNy1ibHDpYBSIqVox/rqfa//yNVQzgUBgvqpAH1/x8AnnYJemgyGW0YOwRQ+U6BakJar2EqdwMFJkdFhHYETJxcf/lUywwAxAXTcfuQMgffyuSkKyYDXTQCqkNVQZtZX1zE3ehDyeTnsIKWh++YM/2l+QykeZy3JElUYLmiN3QPL+iS8/nNNO2cnm5fGOE0n05DfJ9BSOXto3RMNboCu0JBnjQmwBtnj98xpMC0vbVG/0t8EDUTc24RrrjBLbiZ948AAzSML7aVigv5muey+r8phUvM6M3LzucCCle30KA2gCFR4Q6BJY5CBMROZO0+p87vWuK9Bl6uswLUTH9dYltath9zAUopb1+QYA++FBd9DvzXuucaB9P7UmsugnX1+nMd13Vgv7oinAbrQc9Df6yLe6lD7lnLHycfB9bTClk4JsLtyezads6G9CxQQnceUaDpRclndxK0PZJBO+h6CrvlNIMgy3zKG9+C+FeBInR2k51smZ/++e+gtr9d471283miAkkoEvQCm/Ai/26sS/V59MU5wo4V+0A/zO3GLDv9QWwYZwGVdkpWAvSIAOrQw3KDHa+UBOF7xflg419j3i+zQka5XbDHB6h49Dw2uBFwYktLLsUJfL8HVNNIcU4cZDubU8yUcQG+LNyhzdQQIFJvuhZSmr99OIAt0xYEZPdsy0OZQ3HUocqCFUATnPKzeyFNxBK1VhTNCG5yZ/I41a76Ac0vkcdCirRelLNZlhAEUkxY/ah5cm+T8rcQTlZw5Y9ZczP28GrBGgxzxTMfyB4mt5GFw5kqKBMfLZN5LWa5WEk+1vkoytKAiqHdVjpXcbgtxhFsCcOXMTFC0UNMvhlg280vUSEseACnEPZr/5QRK6u1CIK3ckckruEyGHS/eu8OcCSXFJ/eh6Lhpeft51mLoMIUeMZR2gywCZAkf0kMAKcjvDonOhGSAoI/PUOku771HeGAszVHB0pocpwUNeP5HKG0PPkuMpmNDrEmODu9iTtBMcCNA7Twj7aXrNkgC0F6t7LWToaGQShIIzXJggwcwLEa6GyxN2TiYwApf+2qGS6PpfzRqW2CLfdjTdLlsXK67QnnynIlWA9SJVrGykoQ1nP3AnMFkarEZn5/kAySQT1kRgskjGSeLS26oz1CgDc5AH88ymcbGMolNfZYLrtixp0Q6Q6G7rHu6zf6DXHqn1xsNUMIaEG8bCrGCH8o8QYJd3wa4CB1edHMpweww0HqVuinPhawW3W/GhJGnm41emAY89ZlidJEoy1XMc8SXOZ87EDdUOIgCY9aon8R6+O4lO+n3kh27nLjBdABUaqaSUagluFyKQSGSQN7HI+dAVqIlSisuYAhUMrgFEpG8QySHByCHhyLLA6CyWSq9C1uRrzVcw/r/BH+h0BOXXcNc5fLN23JTpTW8KeWa11z8T7mCKUg7fk8LZZeAMeARieTajSp/nJUj5ifSOTEAk9YrYbAjQGhAxTn5ulGVJIbbCiMlnBRpmUOBlqIfebJzR6hQtCYJdw9WZYI8SZVvtDrE4T3cniqHvQTsRMPpXZF3CdG0FU8NS1uhLk1mMZRmy1m0BWwJKzG6btc5U4FWXq3gh1eAvKbcIe3d1LAGv2pd1hq8p6kxNKflPwFd7YdEYF3TXVDbm5PHd0QrW085qsIA90Yx3yOsTNxqfsEJpkoaXmuf1SiJEc4c3so99iTXRAC5ZSUJlJ2j5oMDqfRVqWegwBwHnSBunuEeqN45y5VnPiLgAoAgepHWIrTAUx9mWuAnIeCT3c6eMmTf1mhl0cDBXpnhpXROmUOn4bCxvEyawyEnAVeHRfZ6TrldJwtneTy0tiu7J5b2gAxlgZGpK3ZHDqyPhofNgPc5nPBa3jmxWTOxu8v6foPB3+XrjQYo9SoKZ2CcIIwGAym+V3ihv6ZzCnwXEnKWNqYYl2CleKM3vsupqFhV+mUPhT4zCuezHwRjXrKSkOihOMrFdKsJvqhkdL6B9KzHDbQCHwqgAVJwo2rOfYNAVuv7wZyuc5elKoXB4LktQw1AIQgBt+GWigcgMD1GUiSLbu2yqlrByLK2EBM9RF4JS85XcVw3l9q0ikj7TvCEhQmyrTwJmXnGzebndu2K5gcooECxwG7lIrf1UcWh60Zianit+FtVODMcNoVLBhbXLFXlE52I6NJtCxu0YNwMZx1hSdS5PUwmBdDl1lIS4jPR3p6vIbw0D1mMEtBab4H1yGqXD9gzoNbn2kg6nVlJxNNtbzAGGFwprJic79woDu0AttSljDwv7j+HtuyN4d8Xyp5Lb07fV4qHQsmVVpQVWr8614ancO9W3hg/9h5kKz6PkWBYuRt1f61J/T0PzjOgt/ER7dXS1LS35zxWKWfxgxoSai8B4bCKvCICJu4lcpln0qwuede1BIg6YbfymrKrcgJ9LlAynEpA2MZNHGtmj8017Y3rgfeSiF5HI8dLdiWRwNPq8U5vfM1diFrXUM4LXLAJoOa8h/w7+FRjHsaA1t+Gy24AoFQFN9Oc/bcGGLYOkWdaAILjNf8wxO+5YrxYgOFtN/VOZDdCnWGf8ex8DdTxRgMUn4UDbarp6eBFS4sVHcoAF3SjQyULBwqOHVjPI6cEsCKezwVQfTQuYxECh9dG43PjNqDbzVP5+9prT0gJT0qerZg/Tq8KUOfpXA8W6ntNphvz6BwGjHwTbkIClqUTkmW1CTBNwKM/KVT8wKGQKkQywjTalCOHweWKAhGJtoolnLWxN+xJcY8OKVnIaqr37+r+OcNIitGOaouwqzkNhAQmbNmKf2RdJQ/4GiE+01M0u0WfryIXtObBdVaCo8uRA8zgh70HdnWrNbbCKmjl6OTLITAcjqB7W14u844S7rQupHt+blnRxUqHM9waX5ahFKZozHX2utjCI1CQ4A/9dHOrfHnp8Fe2olO+igjs8MmGG6NJCRp0cjzyLKxVyoxPp+U89ii/p+6/Cv2Zb7RXeeBlBMrDcWmg6bCA1vEelSSsJGZ0HtFjqEVNv2Zp8ZIRgKKbytrFK+u6D0UPNIBJaC2l9KjIIWXe4FxzEjBvz92r3iQXG9BIuD+vbuY3gSufqyRVHaYYmjOvcRhmh+VHkucN7rUfFcrg/52Q6utELIE/bgYp+sFFav2v0IO+W6XC4Xwhv5IemdEQEgQ7Di/ZIyee4Fcp69ZVSR0M0w5ZkOTHShAfexu9nqp483xHisLseN6AItiUbcxFQE4Gs2V61nhpKEP7edX4Aw1+xBvb3pFZ/ahwvv5Ge37lZZmG9ju83miA4t0OtIIgUex2mqBhgBMAXf1zaeKJp527YqXKhRWRNQQJmudw1Y/bzk+5vwgkaNEHx+EmOYnOI4nxzJU9lkt2oq1vgs43WWOcV/TDDUS4aZ8HJ29ukENJ1cT3i/R380FwWYlguJPZrE05HxV22aVopzDhT6zqWFkCnJakAAmtJkzgJaE3ym/lIbAiuct9PXpBaP4rsZ7ube2SNpVnstuaG88zC0j50KtjBTNIKctzs4pnrcT1xYbOFVkUPv7+UEBWCKvHqvEthihirqUYVUpUS6z77qLvZk8VcA5HMq8EC9AJk2K/K+P4zIdAKKl1xOS1Jsor4NguKzscoHwCCdXoMI/BkKZkL0Hd7zh9+B4dfrqqagWuxvKmiQo9hNZ3n2skOuQaz5ZCEy113aUZQLkENT7ew+FEOHFSQGSFqqCG9w2jbNaCm3xOpSaRNp93JD1TBs3eO67+Eq0CbmVupSklHAMUAQYfCumJVjOH5BEUaW86J0YKG70N/Z6A6fAKBS8UYHXfmkti0wOoPKbOlalwFiT6rpSjARsJybmtS3f67fN2xh4ADkXdbQ3QFYaHocKOsw+ewyQvFMjepoUBhr3B2Xt78EuiZNUM44T4i/vqaPqXncgrUNE9d9A6cP5N76T5YoaNydtTlZg2opXu+Zg6wWek98zDTfismLQfDoJ3+3qjAYoAwVGxwsS9quUmk13z7JYHOJs4EuwZQsrN39Eb1AAG1s3ejUngIG9MTubQl8bY3A9lol5bEP0957as7HN1ZjzPJWUtnO0tkTtXCk/5M7QooPySaGEXCYI3hlSOaphoxk1tGHReDmPUBgQSpAwNBROngAIidQktVQqJLo3VRs6e1/RkUNHt4T1Rtrti0wITEtxpgYlDcHeL7Di6ccpz4iREeQk0fyl6oMsi2dyrPUBFi6XuoGQEueiVq2AeEQAa/CBSOl5PUDj7dgBwNYhfcg2Tt9e1ABieO+SkM20EEPvsjqEMDQSlWGDPRzj0gl73e9PPg+f3ktfa2t/D+wS094CvzVL7zBjn7+CM6Wu4ifKQuAkVwct9fA9S1jVXK5LAK+FUzz9OJeCQoPkhjmRjZHntnMcjmgFWMAKd5mmBCAI770vAoS/Lfa6Jhqd5hnKWBnBvpdh8pQRU3dP0X4nLi/ux95y3QQVpMCPwojkNb5N72UCEZciOyaaxOpdCBolyrpbDOO2dA5/RxkQCL6r3i8+vAgzoa5784gjZCog4X+rCDRXNZz4/ygwEN+xrjyoTX1fiwv40dY9Leb1Ab+Ahl2rNNpPwbViNvbEIxHzmlOSBLWaYLofxK56lvD0q4AJHh/Q64bh5oz08xjt1b71/wen5n89yKInPhL6XrXMss3o801Hwbl5vNEABMLrIhoGcLadEezg2TtcT0K2BkeO6Xnys9NHVoUYMB/EJgvQV5YQI9ev/I+lIiDTFPLxXILGeJxM0Y4OuSAm7E6WO98bJklPYxi3qs4XqZTKZhLQLWRoEA9WoLroySEIY4/fxfyYOyitwDytRKG8APXcAyFsUT7Pi50E2wLk+iT5HRXuVCjj0fwMxXkRg5HEo/CPAt9JJnDOj33kaoiGtYQnt7go7npmlMMtzggZ8DI1sjuV+r0RbraM8CtrwmRIoFGDe0BT8CgEQWO3bam+IxiQAyvATnnZ3cRR409QyOlx2Ia/rOj5P4QpblUC7x1H0Wpes9aECOkp5V3tMlO9iob0Sm0cpuPvtwsj3Ae7o5EYZDIdHaGxXJYnv22oA6RwWnMpP/4/qvOqut0Ea28My8jN2fx7ZCdjOhQFcwRXDI2VPjQAyNNWmqZS6FOomqFgrcQGTaIdL3fkkANS4z2fVHF5YHAm4yetNP4FE8tNmNdsir0yP0r5X7pbB++B18WBudFgJyUPkwBPY6TWlF7GbonUIzMaXnhvDA2UBD4cjysjpcNc94/AaqgLNgIfWpRPEh0dhhmwNCTmWBMOkQINc/qgHz1zbiJ6fQ8dAdcV+7vGVUREGQGtt749gEjIQ3ctoNiQc4H4+214sZCeqRsnT4FofVUyuyhlzePDAuBJnOAOcePsAOtrwHoMCjqaR7/b1RgOUHArCRIoJRibHAMozyUkg5aw8KvYE9nXQfTLDTCrSd6aklLtYLeOnq1aue4MjmLn3i94sXfGT7SpLsIETzs1gpYazI6yGR9coEhXeSZwthwOunc/g+Hd0rTtp67Ja0ngqVmia02Oi145RIppNHzQIOfIBsq4/OmxizDHq/knat5UhdzHoQeMFd7m44d+2MAMl3Fe7yQ/7XPQ3MOl5iqSqZpAlOsshdUCexmrwscMnB8ekuYS04rZc8wB4jEN6/idoIg3tdk88TqOTSmGPFZ7SVS2RAJ4V98TYEzF+YE/CURYtvlUIS3k6mvZq8FRVIA0U8nkqpvZIVWmxeKXCc0lCzsTB6fZWuKdA1DLt9609AHd53jhn54hInHjQVLr35WZeeh6uKlvHUIBt1Rffw65/74ehUILyIcXzypUbnkSDYMC5OIuhmKSCSJOu82BMT/EQvxsE1rqXPGFeC85xC6SQj5tYCmvN8UnbAgLT8jyYFwwOmvecUzMAhLenDbKuBponbQtQgPS4XKobsfMmJLrWAJ6ay/B2KcwmwP/Ka8gcge5EefTuNBBys0tyjnBTjvJpL3jai+0qHQC54QpBe5VXunKuBQh5kp6knCCFnox57Iue6dwR0ZZy2BU3lr0xwkGJo0JnoQ38oTNnnmRVjw49yNsc4Mk5L+/u9UYDlImyAcYk7ycAMUHEk48z5qLqdodXAuhTjcHf9ziJLEQZeTQ5M5jQYXuWfmOz+8X3hDBpLbhDbID5KzhaGRu0TFoAdvV235Xw2K0IyXS+kSz2CaqO02jHoxJ9tAABR9B6qzNf0BtDe4y5JHsIO7lbHRqSALDQrh/tHecU8TMrPG327HtYWArNr3MOsoRVlSNYcghsKnLlnTiWzLXqVunhckwLbCqay4uzfFQvl796biV01rXdxtWenApjw51kwVCABPi+hQGBwF19qf62spi06V8DYCTixb17ihDwFAiEvS2movKEZB3SwsvNc1pUvs4cFSsE5VrJ7X6l5a3wLLVJudEr+VXKMkQw0Zr8HGMuyn+ZklB8kIC7uaaVGRMjV3n6AnK5C5DUHOW+97kp5EUnc2fT0kB8NzBK8pkAlTxoO5dzkhx2vPGsGPKhQ0oMjWjfuP/JrTaHy6EjDWQEFA+lZZmWR2UKgK60IQ9UX5XJxJojvIdnZZ2Ao7yHqRN5W08ewGvedp6cLWW8dZijeIBrYI8OEvfRE0cGhgCgcmVKDGsQMTw9MHBQK3qfpUMPu3qQiK4KpVW4j15SPYd8nsNbOmlumpngxWOz6ggZuP/va1cABtq7qdLy9FJwDujz5AB7x/VS8091c53GqI3WmUKgBFsVdCQ6z5Ig721Vm/9BG6OUx68DTkz+N/elBFMuopTKCOO4r8hzYN3gBdChgkdljzUw6hwfHzyY9nw4XKJFnApUdeWABXOHhMLuMgOIhepl8swtNZhu/KfBzowvrvRpzXnNU+g/T0Zg7oO45zIniUK8slKHFwB2BeLopGmGFl1Fh4AFd1JnSSD47CEyaYoeGIIqWriCHg1PX+9LAQNtPQk48DtL1QJUYKk500JVFr5oeAAeEHxRAcqaF5iQkPZGlJXheymvBV73fQ/rBaTCRYMvZBFd0vkukCCiIMgoV/YEmwpVGYgptOblbfomn+N1Y6zaSirHMwfNba0qV4Kkc/t3gmUnDPNG6qwLoJOcJagEuIGyABUauWYnRA7vT6RyJsaaIVvhCTSqBBtwOe+Rc0S+nKW0wWsm2NOUt0u+a2zrQuXFfVP0ApznENNbkq7uyM38BA1FHqfdtGvFOsZMeiOjQodc22oG1gmwM6HTdJaHRHsN6PntyrnIO/v5pEpf88gHAsfqvDGFdYA6mmDH6XkiLwiwquOtPIv2Kh6eaH4m5Y/Jk9xrtwFORGvgbFp3WwcN5ZVUmf9MzhR9h3gsGkiBjkTlomcDWlfi3cPGgw9B5X5c8rbq++O/li2krTyeuqpoOwy0a/bey/Ec8kZdx+8rCuBGmvC5Xjaa9bKRMuQs0BGJO5wuYLAndTTIBmAYqkDc6h4GLZFtdHMdjhSKd/F6bYDykz/5k/hTf+pP4Qu/8AsREfihH/qh4/PMxHd+53fiC77gC/De974XH/3oR/E//sf/OK755V/+ZXzTN30T3ve+9+HzP//z8c3f/M341V/91dcdSoMQubU4I1vuCXa749jkvV5gUxucJcmU/+A1IRTJz47yKIGIRCceAQxxDMmvhU0040AAZvy9Kw8kfQ/eXzkiz2HL/XH+bT6Cx1unAROElDmc+TXX0XMjHIpb14/7BLIlu6YvECZGX4BOLX3MrxASEBDwOTI5ElCt/OsBR3WFFNpzTdaeDn2Pnh9X6cgTAbj3ihMOJVQ1TrRgcyhntdIzY0ghU7DGJXG5bldiRKD+1sbWP1tJuPU8K3nAHVGdkG03dMfmj6ZuM7M/4JBJS2g0vXmfQ8EPfRaXbY8M0AqzvBNw7kpcdneIDXRp8Ei4NYhinoR4TLQ1wAK6fNuIfqyLPCLHnuJay2s154ihTOUJJKhxWISerfBhjNH8NfhOtPJBbYjOKQqCA3kqBp85J4r7c/FASIEye2cFcEQ78Zv4YQAusZ1yd6qhG9dP49bcA3CfkRGqCdQ6du4VxrlFMe7T4NmgkfkiR74J+dhCRQpZKUSXMT7pojX4fvQBESBOYHiv0grUYx49ZgSmsSpJdfKJ/58MBzmvKUfIqX71d5uW61petY3wfpZ86fBSOEm6DAjYwxRzjByo5t/pBi0TBb6BpgUAh8SUG+awKT19Ag7lQUZ7/BXq1+NtFKD52+N7eC9gYyIkj3cgV7T+NP8WPyaNheOg24koBLSCa0t9/Dqo47UByq/92q/h9/7e34vv+77ve9vPv+d7vgff+73fi+///u/HT//0T+O3/tbfiq/5mq/BZz/7WV/zTd/0TfjZn/1Z/OiP/ih++Id/GD/5kz+Jb/mWb3ndoXQMWhqKzLuf8ujIKqLkJfvsnRDig91iyU0CgOCGC8aa9epAmw1aplIPOMwhIVnltiggIkbb496jmVsG780VEZDycF4Mt5zcqOo/MJIIc+FVwLGptWTFaDPIujiYCq6S8XeTz3nKrs7gsw5gEQ/34Phm1cdUShVvReeoTEtyWKMeu4SWmstRUPhYd41XY5YXDGU1xmWPMu16fioDfQAGu9nlVpelAZWClqDfrNawnqTi6ZBTGCNo7d0jRDxjJuWzB3gA0JYiGky0QhxeFxQwtFIHLBiTJboeIl3krXjTgjpCYC47PEa6O66uMQd82i0S7ui5h5vfJcNPd9NWClcKwn9f9P4Q2pMewyskGkvwie1C+TEZzmGqMEG0xU5hf+SViD9tkeq04QbUboQ2QG1Ee5SkyJSbYA/rpeex9Ax6Be/3VXOW+JKXUOsVI0Q4SmbtVRIfmwkGWBONn9IhCXsqea0rZ3iHqvZibtTgp5S8AQwEZ8da9wJRHs2lF84J3Hym9pF7z6gRoLzbl908tNSDB763Q1obDrko/HoZxyxMr8O+rwqb3YMH34VBt7yutceKmjNRNgI+k0t0Ts7RwCeKP+S10d4xb8rzYQDfoEwuh+VNoc/g4oD98jIEDfdjAArBAei8SyYQI7L68BDIqBBicEvrj5E3lSz2kM1zhPP1fISdAUue1EtWZ3M9X+PK6FYZK1+rUdv1nS85X1/7tV+Lr/3ar33bzzITf/fv/l18x3d8B/70n/7TAIB//I//MT70oQ/hh37oh/CN3/iN+O///b/jR37kR/Af/+N/xB/4A38AAPD3/t7fw5/4E38Cf/tv/2184Rd+4bsfTMw/apfbYxIi7CHu2ZytwAkS5zk0436R8MIfYEJEvwXySY8uTnQcd9eFfjJdtYfHROt3GdZVS2JgkZkyUO0Gx1guWcmM43J/d6HR+mDoCUjijh4re4p4UAEelCjNm+0+lDU5gZM2YcL9Nzopjj9yi9JibRdo2thQToDyPaC4s+4jcOJwCDeF5meXelgYJArMWOg/SzL0Mw8aSklJ4Wy0O1TgSuPYWuoS3BuBy4UnMF5g5pmJvkduBwVTooFWZepTIOp7XtuqgFD4Yt+C1mUiditDgS13aAWrmRDtwAgYZOd9IWMk6/L5hBe2GuWtwgUs78628J4v5vuIIeCpIOKyEXmxoCxgWPdYa7ols13nBK9xSVcrOdGWY3QokhmRzh1QqHUAcdMeGAqZa6BwAi3G4sH6va5VoRTgWEWjMRaQvmuVYnUX5I3j5OEOx/B5RB4XJGJtqEzcOU8My1nZ6/dmw7x702StyqXygXkGJABu6XFDdA2BvAPeUAkTOCh36Bbd0O+G0hqRnROhm98DG6uTaLV1RmhGhxym9uyqJOR9D1wuQ5EPb4CakhUP0EP0knkt1/ZCQKzA4aiKJpm/pdwcgbi4nGuj5oiZgbyFwRrcCwjjHpIRBCP0huR9IZnDgx3Ai2wZImFJkLgicc9l2ZKkvwwbbWd/ps/lYVWKgAwEzicUZo6sqk013OQYUvRVaI06ESgaKwE2+RnGWCz/kcBeXXSyqTfYn2YWqOi7xT9xGIPv9PoNzUH5+Z//eXzyk5/ERz/6Ub/3/ve/H1/+5V+OT3ziEwCAT3ziE/j8z/98gxMA+OhHP4q1Fn76p3/6be/7uc99Dp/5zGeOHwDe7PuJv4fXwAhQAnkIEwDO54gb/5bnYuVQzoO4Ix4LDMW8htCZIMP/7zE5m1qJTMPS6Rvry+dY1bo81DkTfPYIQbmRW3J+QtP6fIZihLDvD89KtFUu2imnZFxbH2UzbaKY7yFPo+8bdrnGotXD1tNYLBdcIpsy2VvvqqJDPUWA3qwBuNFUfVADcr8HKc0xpq7mGeRWyETXDAu+xicPEsGPvBh8ZDI0p0Z98rZ0KFB8YQRQ4585U7SI1hrfu9MLcleLfiAutUBHsuEaoHjkW0iZHP+flWAS7OKNyHI/y5U/wzIjHKo+ImpjDuaRLBHN/DQ8UqRPrN0KAsIZ4XyjtbZDIOonogTGGdpLFAhYQHvnFreADnqTMtZaa90V7hBohgRwK+mkblKS5AytiGe6gVuMJEuGk2QIeH1hGt+fF+57QV2CHQJZQ5Emlev08GkcCsdJaVIBdcgPDqEugfqxNJZxE0Rn/TgUQ75yYvYlHVqL8GO8UZN0NT/Sq5YEBZjfFegXXyVcSbMu6v4rxcy5SYQ+bZfFW2Zpy2SDsJyHuZJXXbG0lZOm8FzzlylyycohimEnRo1PlT8+liHQya4CoZrvTANIeI0lV71OK7Gu9yGrwvJAifiVIBvWYc4dWb69Pzs6ulrbp4ESdrQuWuiKz6GrplEdQMuOQKdL6MX35Ln2a4S5Xvns13n9hgKUT37ykwCAD33oQ8f7H/rQh/zZJz/5SXzwgx88Pr9er/jABz7gax5f3/3d3433v//9/vmiL/oiAFT4UULOeRdCg7ae6h6bRMxrfb5fCDUKWAxLIoD9BDaoqd9ObtU9r1QG0/UJXjOEUkw3dKRdaho75N5+ON/ADDVikwggKVDnkdoek7X5ENa6lxUiOmY481myFYi9ReOo7hyX6vJ577wthpdqt0rAFkOf9LFgyLR7u6ypfRxi5/BLEhAM4TjXNndgN8E9LG9YWg1H+IOCNFafE+K8EClrSCkPrwDPTAHa23KErUL5GLBgcl6HLogGZvHUoawALcyZlMxrtB46JG52ElUOy1RaziWgB2x25CwwgVcqM2aCbaKetZ7ubjtuwM01NaC4biw3vIAPkAst32Z/icE7Gq8SQOtChR6ik4AjR1XOGU45gOZqT6S8aPJEKZ9k78CFXhCXecvzBoI0LqVLW9lG3i39H0J4WgMkuhdMgvxCkeQkzqq4MsWvJzB3kzPlA/EZO5etegEkl9YD7d3iWKz8xzzE78bGvP5y2bhe70feh4Dn9CaaR3XasDwcCyP0iA5HiT7ZfKlrZjNEyT/T13yjxQC9htmhOoGPAyzqYkDVZkkA6vypCTxFlmh5paRhhVpSB6IKCGwl64O0Ao58oXsg0B45eYJdWUbws1Z20rEM5QEgZVjqe9pjXVAAA+laRL0/PIeztYT2bqDXSe87Twr97KGDCrygvSIxrjdiIa+NIg95pkyHsaY5l+0dXr+hAOX/V69v//Zvx6c//Wn//OIv/iIA2J01e5vMhB4riXtg8YRHo01Z/7JyFkpJ6iTeKU15H3AR2gobDHJsTDSaF0rVwjK/IyWUJVRXMcKj+w3AEWawea9XjOfLa4Keu2Oe83qNf1ryYp7JQfqM6FohnFKeaLcgGX/y3fGXNjXHr3jypktVm3y/vPTptX0jb2CXlc7JRDrebGeVlRNauS3do3abwzW7OzwCQ7lpLYEWOBsWFPP7vmYojG5vjiOXRUmAtk4VktL4o4TLzkAGc1geLE+viYQ64GZcqiowHGAiZKSs0t2CS/SzwJWS4rju3XfiUAb01MhDkeSPSi7lPTn/dZEwHonB4smsREHTVu5v5eo8AIDjpfENxey5ymNiT0QpnszqgbKix6WeLrPx1p7hKdSez/uyZ08Ay94cKWPLnPTeS0WFZD2G5lk0X1S8BdZaoashlxFTohJkMUAHPTbI2ovyAshjNGXApvIIetCSe937dA3l+bRxedq4XEux67f2RCYYWtHaSF4wRHdXbhde8XZWVWCH7FZonUB+oTYc3qvUWkUrcTcKFIAEzCM+H0k8o7VFr08A5s/HPWzjgfIqrpyXbnJNnsaNw8vjteIzFOZrHlb3XO0p+J7ax3svH0bqkLj2zPDM9APHHEF9dhk6LdApDyv7fCjtfSfGUoaycMDJu8pRXJUj6fwRyhAf05I4K3iYn9J6cfw+BPyv//oNBSgf/vCHAQCf+tSnjvc/9alP+bMPf/jD+KVf+qXj89vthl/+5V/2NY+vt956C+973/uOH4By4A4A4VySvOA41REAQ0AwwFg3HG6/owMrmqkAHEDBzc10gKDAge6lfBZZeRfA8dZshe4Nw3Em0F4X7QOBJaHhCSykC6OvbZDUwg9DWfTGQZcjD2vOFo5LzOJk8JpR94W5nm5QW0ajHwFAhb+XadJlwXCiWn1QgiqTHS1fMh7P65KJbXKHBr/TYRzYvav8kECNRwdDmnZSlMPl3Ue2oytSVifzSfkYuNLaCgxlOpUm760Qjw++u6QrSRocwnM1ZpWw13Ovuxs38bNm2QGMND96h5KgRRbZvi8r4OldOKwcoNeF3sPSkWOg5P3kNbkZ3tjhwzlldc68oBqnNE/RwAnOXP9kR14LPu7lbU8YeXGeIGxaaOExQEMp/wA9IqRRsMGXxxNd8bMYhozLRrzo8OHODtvJ2yWljwX3yND95ODR8zKB/XwpHpalz7VwDw3KE4ErW96X9lLJk7hvq3KreKRBeVqWaeicLq3tuP/1ckcgsffCZQCT+8uKG99eXnC/XcqrQo9xDqUjz5IO19Na+hBFoPOBxkutIZwILPkknpRMpPys+ZIv6KGQ9+2e4S7ARfuHPUXg5wM7owHz/tzlaP5mrLyj1w28b0Z76+59VlDm8A4KfACQkRQ2CsJHSig/awU6N0/Lcm+AOkGPQVSkwUsbGg97YHrC08M5AZuMPfKHcxITwK1xkAztV1IRFCng/Y7qnPUwNukazeE1UMdvKED5ki/5Enz4wx/Gj/3Yj/m9z3zmM/jpn/5pfOQjHwEAfOQjH8Gv/Mqv4Gd+5md8zY//+I9j740v//Ivf+1nOik2mU0MNHGWkoYK3fkkYbqzrLhiABpqifPcAhj82Ivh/g5ozZVDmU+kObu7jiTWADrpdVhFZipQwAs5y1rZ0adwjp4bfdN+hm80xlOMn30CshSUwIxcuGpgRzcf7quSvuQJkfLOurEUq70aGg9wZPzn/FthApSg0tHqUMw12kJZ6+G+U6OvrClHzVUCY98rxlpnlcAhELuUPWYKCwEoPnNWcqwHAaSKHAuMNeYu62ehgcV8trwTkQZdwABP/L/LfaW8ON2jqoJzcdkqhdq8h6tE+FEJHbSFpxba4jF6tuT50zhcpXHvR81GfnnJVroON9X3t0I9pKF76KDWbN8W9l6vhBOBXqs16OBxaUyyvLMBgUlBheY+OdyvqkoitewZE22VCyRwZssyB/gUj8cAiFROswqrQC8MqtfTZr6OFnWAL82Z91qknz5drFSZeVHyYGXAyaLVVr1BPO/sk4DFu9e3blhr4/Zc9L+9XO6WqrNzpKxl2Xe5bVvcSuCtbUg+IKjwesh3E8njH4byyugmefK6SmkDneMxvHRaD5UI2/OGWnPlbgCoM4EUJlr0hMzQj72d/HF+SZL3RphN+/neYzcGELjUfhatgWO+bmkQ6ZCuk3t9HzQYT62veCYcEg7qhrhFAVY3CR0iQWkD0lUbdbDkUBcBdA+vCVTkEdIzJEMAh9ZaKMCN4SqtQIvUqu7dvF67iudXf/VX8T//5//03z//8z+P//yf/zM+8IEP4Iu/+Ivxrd/6rfhbf+tv4Xf9rt+FL/mSL8Ff/+t/HV/4hV+Ir//6rwcAfOmXfin++B//4/iLf/Ev4vu///vx/PyMj3/84/jGb/zG16vgQaHJVBXKokK4oU8n5iaNW3TbdqBc58xVmeVUJjLQHo2M81A/Lfi97uPXDP2MHJO3be2b470RGgDgHA6BkUDamndDNb0C5X5+GkADxai+oza67ingdRLSiV3HZ9G/jMAlvOctBBSY7BdykTZ2qQ11j/K8SFhZsneFxAbzAhiSKWXJdeP4Ta4pzD3mHpgy9WfTpYlp4mkbLNgtLtAw3L3dATMA9wsB1qIRouRfK754taskcCgy5XgAsPerQyRFcOVyzJeEqizuMF9ks9VtsTqmnivgh8+dik1mnASSQ1KrFIcFDWlxufIwtYoVGAhI2LvLrQSzBKD21cx52YHriztuys+gkeH14aV789ySBaxdx9TvS41NoSXI0DAvpT1GS25n7eGRxB0vCDtSHoASoNU6/Y7b7VpJ2VGUXJBHhEADcKfXGDx6WTwx8V6JsnmLDjtQ6c48D/GEPUgRfRqvFCLX03kbyALHBBZ5KwAdCp3pvtesowTIuxWiopflAtxeXoEMvPxs/dZ5MzU/JmQGfFjji/c+A5F4/txTb3uWKgdZKncg2JJgJbDtmih6XAS2yD9KNE5zLHo/0jucDsNqL9V6lIdwGAkMZ3HDkv/LszfL6uVh3Fa6lANXnXZO4XUZsnSj8rmot/POdbpzHqxu01dzB3DFkRws2bMxqqQGWAnuN89nLz//snjOlMJSG12RqfGRz124QBARAPZbvIabK/VsLyTHvsDWGE3Dej+7LDnLU+rIk/UGv3BNHqsSLuRwWPvIffv1X68NUP7Tf/pP+CN/5I/472/7tm8DAPyFv/AX8AM/8AP4q3/1r+LXfu3X8C3f8i34lV/5FfzhP/yH8SM/8iN4z3ve4+/8k3/yT/Dxj38cf+yP/TGstfAN3/AN+N7v/d7XHcp5ijFg5nDcLMvTsF8kD60qCk0FpzME2puA9rSIjnJncQMaJMzP7Yqs99NcDAMWv8f3j3gegkAKnVOjnJmpo7i5Stiic1auSSRc34kdr2Zka+KBBjz8W0BiZjBR/3f+DCh0n3ZbPNrsSWanMnRjJy8W6X2hwIxw7sr1esd73vOM5+cLPvvyUgx/J5Eka3YLXSVtBoD1lHQxZ4951TNsxVDQFgKo9/cQJhUuiV6vxVwVFu8nUAIdJaSTO21dNwQDZLXmfVlgT5c8gM4L2AXQ1HVyXTb2vtj9K0/Rfl7lB6YytnWve1yHV2qUZSdKsTshmd/X/4tPa3w+iI/C57FKRUng8YJK6OmOldnl00SuCpG5WiYDuG7Zyha64oV42rixI6rj7aKRLHbFt1G03YBplkOwxqKH7FIhyOnl2uTpC09zToYi5b3ZdNcrzCFWldei6NHj23vhcuc6cp9JMfeXAZ0GvpVLoo/Ff/eFdb3XXr9q4WpOystwQ76g7GKzurDAL6WY17B1X4oyGvxQICkXS6AtVuL2fO0E5vvqTtj+CcsrnQr9/PKKt97zjPe89yVutwvu5B8BiHXJOusogaenO16+vEI5JUEZm9RbeQ8fuFgatIDf3OshYyFrPe48CDAvGMnBde0e8l0Jte5Twn0Sqhy812KtSOwYYH/KumE8ah0qUbjWx2HWEdIT6LJ3MBV6WpYBNvxEFwKwJePnvpCX8PNVwbMDtadeXmww2sBeJYvD3nXO45LASxrZBjANMqy77JnW31yUyDZQtUbWb+T9lS4xLh2gTY7SMcyLycRrd5J9bYDyVV/1Vci388HyFRH4ru/6LnzXd33X//GaD3zgA/jBH/zB1330q8+6w94T9+6A9YrdS7jAcfRO3qiXXE9Cg2bI+ZzbWHTFT6dnhGOwW2xHP0Kycg3myYE67wFcatHKE8LxiXF0r52dZzKADy79d92z5p2cs8eUYzxyxRFQ1L1WN5Oj4FMfBz9PykICpHNLvT8DYL8RzmNUDDmhD0yiuyTWDtxvF3z2f481CbQy5iaNizZqGETJo6JH5WYu0rWFl0EBaoBJS0mCXmAwAFuXpbDhqonylpAvKHTUXyGylNFs+LVJkDpwjRdRgHfCbXQOh8YmJc61t8VHQCZBPkM/Sv41nwH2XC3ugSSejFXAQh6BmXAnMCDlWQJltUckPMwGMVz0IE+pBFm06YTj5r91LciCQB8dwEWPS+K6NnYu3G2GRjdZ00vKi7yKy0Z+7tr8EAIh2eEeKs+NymXIe+99MbirtV5eSjK2foc9WlofhrgQHcaQre1cB66RFZEVE7AZGg4lRO/K83AVFkb8nbS6KOGbyZWlxNks7F65JC5jBlCdSkFwUnxfZz11mKbAF2jpc0mdI4Iz2Zbem5efu+L6dMeLF88EKez9IVC5i1/vPEsogg6yXXLToFjhXVWKrA61XJ62S46t6wO1Z4fhIbN8JrYGANzI77eFy2X74L7Sv+Vpyt2gwIZKNtiy5whx7AGFZSX3y9sVrxhvE1xJ3ppHbTQ2IBa/qy1CXDZwu4zw7QBuOw6jynrlFrWWOv7kAuSLdJWo9FMA9qY0oCE975Ttt5p7BpAzJ01ARN7irJDvfuIcthaMw9N70l2v8foNzUH5f/tVx0fDYNeLjFI8Lt3lhp6xZGQBnEiwMid5MqPARZzU4XMiOyEX4D0ElKjYjtidwIGYaCySHtNhpeLkBIbrDWZc31PvK2Obc7UwnS5FI+Px3Tk20UzC/sbwlBJfx/i7Tj46R2FHufKErMW4I+YIpBWbFcYqwJJZuQe3lxfcnhfe+1tfug11+w+jBSo30uRzWdSZQWDW31MJLgDHbVMKeaNCanKb62s7Wsis7d4r7pNCK8/N5HTYITBKRxs46cyW9iB0nFzjKtbh+lNhzROb7QkTSeXVUzgFMxxF2nJYCnOp3X8CtCwLSPj+pMt62ixthZN/lWTqea59HKjnPJsMur7TYyEHQInUAlmPQtodduVRkbAe3oT7jefaKBzikESfg6L3Oj8j7WGylwHlNbgwwTKU5O193tciw6GAkHIiOCthT6XB7zkhmbF9JXHKC9ANzrjbo72Op2XEwyPJy84TEkiKCt8lis9VEVTzBBRGFGAshUGvGgJx3U6cthClZ632Z/GYgJlA+v2+8PJzT/jsZ1+YXwOJp7duDl8CwO128XRUQbaiQYRay6sHiMG3Gp0JmcijBHTIM8Fzc9J/QvyK5rH1tG0Yqe+O80iik6KPnBp7QCSj86jKkxekQCl5N9EtEh5k1ZH4Owwsd7zlfvJ2iTaIlowPGTPWLdm5c4DzQvLKEP6FMpjJqa62IR/ktdIj6p5cJHrJvMnFz0D13yKPI9B5lYNfrUuH3sqnAWz2JOq7e73RAKWQXWvcHLQFcIKBrDdmC3wAPi46CS7cRCbSqC8vcMnUlB8I1CnDygGx4gesSag0fD6PEk/lap55CEL/a/40gx7zmYxAC179RJDo8I2AjTcMWtlxA3ncVELJRD4j/RSx0YBQiZ2JaoEvBY7sQ6o0L0R5IySAfb+w4q63SxFcdFaIgFuCZZ4EBghbyFJOvSbZ9wdsOU++KKW93V/Enh+OV56afGZYB+zSuXZbXPSGbbqcgxa4LEYJuiqnDj//MnsyiI6sWKqGVd390uCWgnrSvFviB2PfTStE84MTgSc4liUnoay55wBnZmkKZoWHhEMIDibQsjdhhIl0Zk9XpJC3qOBjjEn3xQRNWjCGi9xPAjieG6IJ8zxK8XZnVZccc6I1Ttg6XexQalqJluS1ReW2fUYPLyGp1tqHwjnyyobH0VMac9MYnZei/4sPRYOp7Aj2tW7yjumkY7XUd6k3q8A2wZbXyWFmJeRS6SlkBzjk5usA5K0SaJ+Z2Hy/X3C/VeO5IxF+FU9fWDHlcnSuf4HOPnKggYJCsB12bHAp5qrx0Jfi31673QB3ee3B/QEDT9OX33M5/OqTi/Whz/cBHOKZe8ufSxcLKF14PheLAGKlQ1EDD3RIj/JRhoFF/47mY3sQK4VB4Rbf7BYNmqVPAs2jI2G2jdCS327XIdlJejocyQFNYx3Aq9WkDyAGc4zv4vVGAxSFZtQW2S17CSomYJEgAeAzePYVVYK8+ppu/xsNKgLlFnwOJseimUMvuV61q6PfTwlnMcpI6ssZ990PGwwYmwMnI8nbQzogcCQCmzGmwJzM8nh/hTCGElI2uCprrEyGIA1LSECue1kJnoutfNibgMgzmx0Vq/3c/37Cumw8vbh16ELuSzzyejgJ1Zaf1jlb0bgSSL9HuGbzjA0ne2qtqJAIcypXxKXVDS5sUaMVs6whC/VdAG0uoTuYHsoQR7hGc6jeFPfygNBrEUTLup+El63OJM/Keo/x8D3GOr8rz5NoJlc/19CWrtza0dauqjksqLe8QEMA39orY9e/QO4AEEr0dKMs4EhAniXLjVTIcwGfJeTmU0NZFJ/Wsy+q6AGOap4JOHO30pcnD8NSEVgyGNSzyF9ADjGhUNM2EI5ItxrY9lwOoAApvRwNuWA+dqUUX3eVp9bTEKvOp3nx4jbCGTVp6yufvZQOi0wvsICbFeiGvXK17sVY9ztDOqMZ3iJvXVyF0rTd99X7IrVGDT5dMab1iOllCt6jrtZznEw7PGzmEwJvg270XpHs0mGHQPOp7K7McP5bJ7LCfKE8Jb/E02ggfjZDbFk0jwBYa9ub55WljitDj7y+4zBw94s8Qv6aHgCfcB8Je3q6AZvuD7cVUDhu6os+hDde8fBLJ7ZuRIeCZgjpNV9vNEBRrkkhx36v0GQayCmL+bB8VEo7kQswVhQWbkejG0l0MYcY9M5wkxbOyom3fSqXmlxjKanGxygZ0UzTn3RlD19mSv26tWfIUufBazDn4zlO9Bso75FKRu/sDHt4bpiA6/GjgCCtHcWPBdZCcwKFJacki9qAB3AWfO5KxFPiZ1ixpKcRSOa5wL99Tk3CXRqlVLSsseCcGm1yucu3PRN0zSfepn0+bOEstnWPp8pr2DyCQA3TlFcg62kxEW4/X86Q01wzwMmIdRCZhNdQ9rKsybvJEIOtRKD5nN6BrpLhYy5pOobc0rJMeTCbFLcTFK8N4M5zbdbgD3TORVBYyYMotzjnrrVSuOUMg9V3F7uWysOg2Lz2yZLNrPkBXVFCr8/9tuyVq3nO/jE1jsv1XveXUuN4rbBZqpqkrXgyxFMEFFY+Bn9FyFcb39WPATr7KrlqS3KJYyogGgZpCoOIfve9HNYSYBHgikg8P1/w/PKK2+euUAM0eYLU2K1DKOj1kiwL1HU2ZuD5doJ2WMGqYk89he63hefnC263iz2azjF7GkBoGlwCqjQGXNHnvSM6h0M5yfeTlV/Hyc5D5riUmIBIdM57lSlv0kjyXGAqAOcBzRCljQwBHK6ZHOmh0BGvXV6/eLXZIEGMPGgVkqv192GCSHs23FNm6ALLeNFVe1N6ksniWDkOqKU8VN6itshzjLN6su7Pw3ORbeBbZ01EIRks0DLk3Lt9vdEA5bDeuamDyW8JlAV5i3at0i2vWbsPinJUbGLCZ/Ic7qgFh3Nm3b/a6+dlLMIBEgYIEghQDoSuHejSmdkylRQbHKg1n9KWluZb4xn30/81rfmsqVRIxsr0Vq6B7o9uHmTmHnPXvVWLL2/HNQGWpXp/SEHJtWz/41CGqAZRt9ulrW8qhNxwj5T1ok8ibaEs5Truu9J9EHxUuXopoBTffnlpa3CMFYC9JEABBVtevijb2xAwyApaTSkXNJG0lLYqj2Zyn9zVoJKYIbGwwIZLkQ0kNOwXu5dVeTJSkLpu4wgbOMFTFjHn5bOAbB6lBfY8/G223Ddlxh5TcypZmAZJEqjm/ez8H4HZlQxHRFvvgHOGkt8P7SfdLzsUpnVVkqTplziTdLlWUgrlXhf4bQ9iAOXNEnBIglr12hieJwEyNS3rh3Eu0muDz9VIbk9wycRQV2TJq6D7J9gdt1Bacu1nU0R1Sz6AR87f0XsHg6eG6DLduU4OyyTawieIcN8Q3kNhnCVPwxaf92nEzk9L2LsQD4aWvBZ5D9zv8jwt3J+L/hfJgxTYGt+XLNQ6LFajaf3GycSzeaBFfcaYO9rzOl45wOX9bgjdSbpTzkQbB9obPnMH6X3s0NsC1os7Zi+t8mwA8ZILNfaSQ4563PDoWqcIyGht1etLyIAemQD16vTSo8CXIwKTr+7BMmO07pljeJevNxugzIOgZjjGGz761GLp5Axs5pQkMBq11ZczaEHt8A+A3sx6BgAlpx4xPSQ7xKIWyAChmCGGG1yb5Ghrz1f6n+gFJuOkQg07qrR4x9E10Mm+Y7xNNArPPT6LHp+AigWDLWIKrdX3NhZYs2KGN9RzNPxI5gCX0No6jXm8ZyVApXW4TAn8OtcFVvrT3WwF5ZBD2isxha0/Z7hiJihKESXdRFYKD2ukMI0qEYaKNih+zLdQvxdbbtMzw6RtD0VeudVCEYC7c3o8LA/Ol6sr2W5h+lUoZZ2dbFFrm9mJ5tMVq8RvKZn9fDl0moCam1dpDoHyqhCktVHc+3SGeY4GdWOeCbSnJtoLZWE5uqUWG/UYlnhCYTuNkWu1mOMElBK5q6/M4FmNKUEQcl/dYJp7UW3SncsxFKHAQgzvpxWuWa34U50u9uh54XBUYKBA5UeM5z546S7Xav7mBnPaE2Ssfe/E3VjbfFrzDNNp3ypkOnRLsUagc0tMJ72H5qUJKugBUyPE222dl8gDoOcToJrfPTbYw7aedgG363YnVyn63CVf7szN8qnklicBJcJaPHMfqCxcRyHMnJK8B/bLC699yOXh+syKpLmZdWr3JliWXpEss1eF49F+PdtapPekw3VAd3HN8PlyqaRrebsuqFQD5bbp6zLQqYcOGcbtUAaoGADdpBSta9VTzHpK4Ehj47PkeX+3rzcboNzHhGnx10mKpMDKSurJsvpb6aPDPhtViiWkHPx9Ry0yvSix677xHIznUXFdyUH83NUswEldMoLvJe/GBAoTjQ9XoWPp6g4IMUOyrT8OoeCmaKIL+jOov8hCxytFFykpdwmUK1Rx5ew8DiHuGM/e4SRjnyUywJeFQ0qopiVEu0k79n/0wRDA2F0dceTnBFyVoLH7eyvbbS9LZrpZQSFLy+QQjJy/1kTlhbI24zpKCYGREIf2GsR4356JaLpZd8fgv1bk4DlSGAopQV4i38cqIaRnurnZtRNya05tsbkNucITwVUSL06PnYUv3dIqwTbv9Foo8VQHAeYO3mrkpPB+DWqi97AAdGDkJnAotM4LRG9bpwKCs7y53fry/sAAafL9bK3feTAEEvIuoACED/7bQ2FOwAnRk94YhecweRydVxRgcnTnV5Bz20tL0KQW7QqxloypsJX46vrihvXUB8vdCWTy1q3eYwCcwNhHTMKWN0/r41wX8uNMNhbY8ZrK2ygAJWOB4GzvTojdCtmEvAV5At2HMJeTWkkLh13FeAqjBPcy11xr4qRZy8SWTeqFpLyPliM1DgHAkPz2MRThe/u1mhcEEroEv+aT0Xuzx5Ceh4B2MgykkJjW3HqPYfjYwHpG6yfJx7sMbTyEWGLsgXAresvzPC+xMLRQHPfTfkS2kfOIRATiPYl393qjAYqJor/JK4eyfsisd+6JvkNw8raNbhKQBnG45z7yPQQACBAo60esNht1KvxjWchr6KLt+wGGrmKs4a62V0NAQP9oQ83QiSzOyDPbWsCEY1cClU9azt6gttSeVyctWkANELGYDDy9MxIsAjya2p0JksM7NbPj8ShALKj5Z2SHaaTEwhRtpTxK5vS/ak/f+QCen2Sgv5GeZ2r8WmMCG9FcFSAapBNtZT0MJaY13LdAXLNPhjV9wuA0Ec03QeWLnuviIwU4dBprKZXRkpxWl709cr+sFrR+dqBblV93CVKBSV0yPBNNtHZ3uwoJlT9yedq2+hZBZGod1UMCBCGhs000udore7QotxLf0eEBhkJ0gdg7ed/ZI8Ply0PBKdQFgPkG2QpudaKxLfbkmVHuIpwOJamCCCB4El20BgQBynfxPhPIW3nw5RqWtUOkpIUBC0NSt+cLaX7vMvBE5xgBLlmVV0KEWk/bilChU4nBfVveFzo40SLsHr1H9lw38SfsbXlmX4/IsY8d4pihxX75PqNjbUTlrBlMUBOou6uBMJ8dwTmJ1/i9BBwKK+VPkhFYXl7cT36XR0LyajcAE+9A3lalHcTZ/Vme27yvNlwTbdQJxOwHWYowiKxJNI8i4Mal5f3kPnFVKs59PnMLc+jJGNdK/sXUo+kxut+YjMFA6Y9n5WOi+2yBxjS/925fbzZAuaYjEwi0oH+I0c2FmKBOuR7rJUNBfLkPSBTb251OoLFfZN/nAB85atC5rR6bTB0MV2OdJ0LWwKIGdh2JtetkohzPzadshtMctbLB5FXRJOZz0PfSmJ44B1mlGpvr3icBARFHwr/detmKgfkySbo6fk/QI6UvoaycEfct2e1mlWVnGEGB35UWdU1G09hJjLIOZfXwuXK9u7RzKn70HFOKwQIm3PRKyk4JgIqT75cXe6JySu2Ro6FW9IeV6seWEFelkpSR+yJkubMFHjPB01CpFGTpa60AJ/Q690peggRCbnZZviEF3aG1rrQIK0gBJFuHPPtIeQJiF3egvfdzgQZAosnBwwmG4jqnoQFROO/BQOmaHfMHjvDdPmRAjPfLMyLwkbrvKiA4EyXtvlgNyqw0BCiSAFwgTk8c3ohSXGFZZUWpMAefu6LzPrRcd4bRgErcbIBcY5tVMwJCzmEZSZACL8p5Mn2HnArytfI1XLqr/QFADQ4v1zpwsBR0ONS4Xa0TpsPsiZIZJ9AX8NLfAqMEHwKAArVVOce1kCcF6ER3Akr14kiu43FwKYo/VWWVDpnA8lmtD7boyt8CJd4DGTwFmVVR6Oestcf5QuFS8Jkvo3tUP6HSQQIxDjeL5yXvonSi9dMl3evEnhEZTArtDLaR57ZlfHQ6AcBijDB/xAbW6EZulpJsGh5wsKo2Mw4HwTu93miA0q8mxDwIUEawwyAk7ExmLXQIdH4IlVnvPNTBgTBqPEzt6S2ZiawTJClxSh4GSU6BFOVI3HmNhJosbmkiPUPfTUngQYoJQuj58GnN8vbo+1r9lUcopl0R8Lk6zud4dGd6DOO5AiHT8oAEYTppMPkMAFbqCr3YLa3rZO1K7kpAoTezAFBKsVNxeh2leGLMkQvt2Wvjyi0vXsken6syhjJ3xcewrGLxNFwz5xDQBiRx4GYnspo/oksnZyKo7kdFmqsBmMM296hTkCX8JHyBo2lbArbWQn1aRLc7n5/R6UuTx7RRCBTt0tfnAXs/ugQ3+0yZsa6cLa5v3duDoVvJUtVYe4OO+XaJLfLkEQMZKVh9N5qHNg+nVANBoBT9TiV90pORY63E3+Q1l51OwJtxKtXrtsFjMkXH/4N00Dq4SZ5AivhJIQDRnErsdrvg5WefcGPiqL7nQzAv5X3ArTeCQhv0Q1CZgCGSkYCbvacEaBY9IZWEnr2WPNXY/GIapZboBCQjmfjYlVp3hToouAUE7/feq+62y3tKDs6qJ4dSose6KXvlARe93XKB91LoVKXPi/slwURgGVlbwOUEY3vobB8/wNluATrJ/3XSDqjckpCxkPCZb4fhM3UPwPQE9CGCuo6yBgGGlB/z0VpuaWP5zB3pDumWDUeu2zhG71N5cjBAzbt4vfkAJYPn3ID5JzgUdgqFMFwSU7gxLpePXfHkRhWDBho42HWYB/r0b3lxlFSkHBXM6wcwGSi23mY8kGO2olJyKjTOaNChFw+N6wQobZAhTO0FGDT0hh00eKqde7RBFl2kDMXMj5vkFu6ZoeZibsFNhYzQmHIIb+VHwK7TGb83YDAItFSFcxdEGin+IwE5e00dwuInoxlVELCp8mE2bnIPGB7t7uPaNZ8E3bk1kP4sH/gLLTCjKxj0WlPIQsI5LVTV8yWAVrhSygGkYv3mAc5JZ5ncW6nppfcdq5cyAwHCtHgdpoAVqdTOJm8epeSao9ZeHjUUf5a7OyrBcwhGg4zB585/Qq+zDtezsmaOVeo+D4rWQE4EuNWapIwERHsUqGCkEJeUnHjJ+ykMrrV+kZwb+cMJ3kB51+QFnUKAz1epuk+AbvZGV3c0W2ud9vPq6qcRfvC8gyDpSu8cRG7JxhNsumRenpPryOOgF2DykaufMPbL6u9IzMyeJ5IlTnLPkXthQMZ1jE7+rnBaN3F09U0wyZWek/tednxNgK/fWptAOgR4JqjCYbK5l/098vq6bvIjd4Pv1TdSMrTyZMJJ0O0186GNSSB4jwMcmh6DberoFHQHdcpmG2SS44+ARn+sdPmx6TPnGRgtLupZE4wkBq/Ne+gCRRimSH6H15sPULRgziDGOM24VkmhES+mckYuOMIrlRRbvyUEMBSrf7TYbFYl9zv4tgFRwhU9sycIgAYyel3SpcMHkwisyC2ncSWf87iCEpYD2DhBWDkMCgfp2udSDjEtPEqREKOrPweFAhJ1gBxQXhW9Rka5XqVIQBBBcrL6SWV1Oc4ROWO+ZVmWYNxdnSHX7K1BkHpuyLsBPtfWhunTwtbtq0fs3MqHa9vu81bYr1Qz0GpSKaKEgRW3eNPjinOf8hFKRt0TSLMtveLXbtsOPQNwEpoPp+OzNa1Lx+XlgZDXR/TV5/dbM5WVCOepg+z+P+39e9ClWVUfjn/W3s855+2epmeQkRlRbkYiCRBFkHHUJH84FWKo3CsxFrGISSXRYISQwkgZpVIpA2VSqSSGmEtVNPWNkUiVmsQQLGpADRaCICAIQfPDBMtyQMW5MN39nvM8e/3+WOuz1nrebmAIzEy3nF3zztvvOc9lX9Ze67OuW0tftTBWuFlAaT6nQKGwW1qMKyxmKAIvreH5fQGJrJBaLYUhAJi5wL3FCa5Cxt8TLqCG0Hb7dnHwZQK+ie3dhjLGTpcEAqyNALea4M614OFAJ4wBBBuaII1/m2CXsGSop7Wz+jCbGpbCNA1MfUmwyDkpAdUQZGwDkODeaYfWseq2AmxepCn6bvFy+k7SgiiyF9bOGus13IWhwOLxJhSIy9J8PsTqF3FOJfehKjKGpBWa6HRztVVKd1RlHmXehsR5YIxzovcks/1sRIwTE9/rzBJiFiOVqJptRl4EAjPSAq0svjtVY5cGOS4OxFW9gq4kXTLgnZbjCugGlVkSQAAM4wljQma1LiWDjrKMaxvxh/zRdPvwucXtGLF2ngQSvMw9Dut4Tac7KudAlNoP6wqQB/M+hHZDA5QwKDSsAg1p8q1pTsoAOkGmQwFoXogmEGc83Be8BBzxBMxqOqzXA0hrDBAEFfSk9ceFqS9WvJtMBsiAXIKUEJrsf+kwXQAlsroGqcriTAe4yi8e3IdjYKZCBTcUAN7HADAKsPKnCSZj+CibNawfwMpKUS0GFO71GqYHysazbVwY0epiQikFI824xg0l5pndZ2xQAh+kpUYQ91emLVMt7KVp/gVindSD3DguWo6iDoWeATlSwAaQlo5iCTFNfcRSJkhGAIBVRgbn0eNZKCDFzQD0WzcW5go68HFSCNd18fTriMUp4440dM4B0v/Oz0ZowHW9k5FnICjX25mwgy5pJpy59lEIje8vc0dBOG2XVadC8ytuLu510hLq6MqYCNzUhRpr4kQdD9gaRYqnunbM8fP8kmrFc8DWmgXdM52UgHwwJqtpgAlalJKH1MBb0hTys2ptqlZf/wlAVd0r3FfFVcTrakXTsCwoXDFoZyw0I+ZCmgVIGyhI9wcEluquyGyYAA3OC0qNmng3cZZoHGYaShSQlgIlSZl1Z/DdtI5pzhcDwsnLYi4rkPXGOWMqcrhxBH7cBOOHkAXYfGz8TTpubdiRHsh9QHcds8+WfU96dctVZC95cH2cDkzloygQSTTln4UnJurMa/LfmsqpT+jZhBMWaQt5Ksh6KGUfQzyWUmGZt58rQbIRaNgdLVKuUFADa1AArM4qqJYu+yjBAS0rqyApJ3oAa02Ez6+xJlx43l8Xl5adah4TmAVj4wKEhA8uul0YKWPQKK4T/WFnCBiU/RTPU1fodiTzYz9da9WuDmYkor9JcJGGvThQoTWgjC/SOUuzctYNY/HMBpqLFRHYGcKL0ewK03oaAY9lR4zFKnoyyNOERWaBcC4FMP+3pOYRQIHWKMEqFTKyWQQlKNQYjaUV2v3DGW8ejV5iUQQrF0IhrBBqPNCtApEagBoMwtcsxtTMDaawTS7+jiYIoWeA0ImasUoQTLslYmMYlJeWP6QfXDRrk1CLqkJskOWXvte1PgPYWxEGzARqLPTES7vFNSkFrAKskRLr4/OlIA35Cyhoev4bwEobDQ3XmaVyzdzt2fxZbbPEuhGYkH6jdkgzmurM6lFAxcCd9BFFyBg3wven4JX4PWgJo3unBg763p92MwLIBYi1udz0JWtqFIFEEBYg3EFsTXFnvZLAu4LgTTyrp1oOI9sKWIFEBjYTeK5qDbm1NGjWrR1R8VvNYjTUs6E8I0pAgIDiAtKwKASwJ18jqBZNVwngNUzWoJLWJAWweDXUUcc5DXQH3suh+fXJs+B7jRPQN3n4oQEQnpKuMT90M9Fy20Sj2jRj2QRYFZkMK82mWIcaruL1SsBW5CAAC2zlvBTwsubN/gf3E38TzNJaQrnHe4tHgcq7KMIqcpaNZWl8WM0uyOcOQFlFA6flOJmSC9sqCIjiVmYun86wlvjnUTWWbp1ICSXzkfVzgul6N7hxgfTFs+9c8AJ0oqCQkvudGZeopzt7H6q1hWbaCqicEYF1CripKbzOoG/2R/2UZFXkkfSu8dEqQg0KMFCDJX2dIcCAqPwaFiMKIa9YOOZWTKYovlqgHhMvdBXQzaRwxtFiMsO3TIZFF0bNkiqCVXitMxSdDUxJQzAe1jGg9iTexygCJSnkmwAbrzLaNwtYQ6Jqtur3r2NODCBFRgEZpjOwEFCSfWa200B5jpjvu2ZjiCh6XwKULAQlZDpcrAoaxESCAnGoJfzfwv6xP5LZRCFErgFU67omGHN6qjQvpGUfD5/vAMEeYIQm1+h7TetdgSi3EjVqdWVMq4256h+CeY9Zgr4i5kZzLhmACnGA5W6Ivh0RLyKKEE6iSQd0e2RKs7oVMvvUiildVMPVwlgTlsqntanuw4jroGBTpJWNgNRbnxbPKssD7agYxPlRUuaJfQorNVYu72qpiey0qiBocRuQfhpP4y6xHX1EFo5MftCnJF2IAwIMTzOGplUBQNQKYtArs3Tc8pHWtbKXmoaSI3Q7hTVM0/KK7DNdRUCJuRGsXJVBVh6rxsNZJfroe4tKMnkF14q0Fu5pxO8oANdyX4arr4YOuNsMhW5DaREUV33+SFVY+OyzzeeoAhaWygilQa5x3ydoNzRAWVkwBiDzGiVG+XnByvfGjJxYGLokyByHWG2QyugoPKh9crEJQrioAFZIlybTQvhB5DRRMtio+WdN80RgXs/nkwkUoMB/VELl86OqLPsarjCN+VhFbDe1Y7tVoioiuoE0gdjZGfV636RRwAy+GWl6prWGwh6I9DMG6ykQZtpYu9BckJuR5nwKbgXCjMj7CnOMdFpnsuxPjQEIBkRzf0vGs3rf7Fk5cZZLMmcAftbLwHLo2G5nTH56a627ACBdI5rWFgojClerj+L3ioZ7otUNTubnLggpzxQYqGttYNrNmJceFhzGglDDpgYpQ8I6IoJMx3XhE5kFSvCTQCQOS+Szafpuapas+h5qnHzP0gyceWaLCXcJS8Y6YwcRhBi0xTUC0vQe87GORQKtRwCwiMVERFCsP9Pne5lbWlJKGqhZAht223kFPO2AtyypXyuHBuDw/RLavALhPCtaOMTm3Nw9YsGsUurIuJJB4a9ApG/TDcqYL7ax1H2Tm81qg9hctW60FzU3fD3Iw6J0uwJR68XBkg7JAoV0DZK/OI8JsNxsvto0PF4CAVbZL8ZBRWE8lTgRPU70jjXDGohw3jknbplRp+W0iCgYW1XBSxZXc6DjdMo0a4BgKPlNZEHR4gHrJy1ItQ4PaTdimpwebH5GgIoQ6EAoNqFcCWLuzGKC9eF+HGdx09dCosFHyjzFLlsQ8iIP361IhUyv3ETPcVEuuCg87yfOzisZPZ+q3dAAhaai4NctgUC4QWiBcCHQ/AhqPfssLkIBEup+Nx7ItHIlsHkQUAh+CmQCC1pw+BmZU1Cq/y+Iwj9fZLU6wkJIonmgXxAYLGPBmUuMrQGjIywc0QffQCs0S9PdVOaPOfGMsRDNw/NCRfNhUePy55LprWJVRKMQXAg8IOMzHEAR7MDdAlIKLNVDEMMU3POgMHIuCveUWOQgzpdingrTELhfWKOSK08QNiHhe5vPdQFmfnZ7Dg+nG0UIcGwsyd/cfUVA0lxT5RiEG5xaFfvoTCwNBkZrwiDhpmEdi5OPRxYUi2DaYrUL2ezaXZw47PTAAElQ+11tnuI3pyCCa7T+bsYz6cF99GERcprxeRtMcwTWmqTPCYVi1rjIuAl7J9dEQoMNIF2eE2nkHAtWXQ/Qr3TnweaM/WmTA0+/nyCzT8PGTUEkNmfU+lXWAYV0TTCYmHNLQM902e7vo8VumhazKnlcGoN2CTxIO6zSHFp+AWF9ogvTLEN2HcING+nqJJAizPq0+Lpz7yEDx7n2XKHZA2Zb7p2MSfI1pIAGQtEJC6//6BAsQ6KuSOzj4F8ac8nzZ8L6yXmN99r3naneQzLWy/ca1Oh1OfQ4wsJotOX6cZ+Jge/WFIuW8vdA1FIhCIj4JS2gDEaPRs/ex073WAuaI30qpMRuIazaqzgQxi76oggVVBI4AVCVKVTcqiIdbmK4GwdhVZHZFVMWhxuyzg71rLion0XeX70eD6Hd0AAl5pIR1sUsyvMJFIjNFfUl/Fq6JCBYZXGE6YzPHx5k6ueTBOjxxQ8/H1tFsZMa0iSRCNKPSRTOa7X+FOKpgq4Kgwp+qi+RxDqXa4tgNxleBJXCzg2qBMbn80/e7xk/V5foT0ZY/bXqMSsQZKosx8c5W5mZfePTBE3mRY2RTFwApkhGBL+QaRL52OMUzhB5b9NgNnaOSAlWcyBq9yQYYCCq+gObC/Q2DfRpWZurfU4XjhcIrTYLTKXgpKbEMZh/3gUOmbRm5kGYZv1z0CRfGBznIs6Zgb2/u8stBYwz/Q4/FdenbrTUMguIUSCryjp9hruDVpXCDNXvC8DiYzLLS0srBKctLERFmA135aFYwmiiZ0q3knmz//auOF02IJ0E4GSMjI48wTq3oKeHel+oyS+zrelhP60A1XLoEC0AooDuET4RX4eRwspoifUw7OUEXq0P9OZZMs3GfjidIn6mBo23zZKav9NPgFJmrnl/Vinmbj2rTCZcYG6hYqAjC6mtLA2qUWU23K6a4ANIaw9TftVBIq1SrafrwwqrpeBujA3Tsh8dpKdCL1ErJk8ddmVAbI8SRORezLgSZsWZCzl95BUMUT9VX8cxks/WzKDIXqPM4TxWmuB+In3SgiEeJO3AINyRtKwWpS54Oi3+i8lBKuOrYxOcLiJ7xtc95B+HzPmp8sMforTuR9c1wbzvsbDg8P6ljNf572r8D6Hd0ACFgo6gw7J5kpKIJGVBmsF6ASmLP2LSCKyNAJ5R3jHIPBGgIsxUQTOSROlm4VgJaiFarnGNyISShjDlo6IardNIzTyKhd+M4nJBEkVFz3QZ8d6m61L3wFVmP+3Vv5pjjvupxbfMcJCmkYbGyPJI1eNYHE1TC6gLGWtShF1NwYyAziHhVhiexriKafA1EU6kC2Ka3ENb43QORHVGuPCwWACzdJj/3YNoR/H5t9SEWMOjugrmuYMpzmTcNNvqcI2bpcXJ63zHtyK0adno01KkOBI4KekLqQVxHhdnpGopqU38MLmuFgxY5oxm88hyIm2XmB/ammghWGXgVLBDIIkSi+KCNGg95AC5fhFGJE/OhTNmggHG5QyCX7+hqQaosgMLUfpbBGDVJrlfSY6KOLiNAo7WwdYHdG447CevNWIHDW42CxTAtF0ioNvofoBadrzT+QzjrlpLralq+ctsRVzqqcZjsYwUO/QxY7a4LlkCPedcYXRhQDpBLDOuZOPxHOSlNYXdrRnK96wsWHY9jxkImgAibsisJtG7kEtj7qs+DvLrUDySHxJINTEeNJYG8b50ybgP9pOurlGsA642+Dh8nMEX7f08qwiwd0asiLtRGhm989bW87kRhCp2XWQGUTkpFqQm6foTPtMVjzFaUX419kQEyJeDaWmNrohF6ZZhkoiSP8DKz8917RBehWCGVL65p1q5FkhFmLdRvvi/U+4VMuSza82UT6Pd0AAlgn6KYACQ7h4SuiItJgEaEEI5fHMKK3nvgIYgxwI6/bmBCiUnfyXsUQiHEt4bsyMEAFNayeMLs4+8cfaTJmsSM/tQsm2CiDZj/TfOfH8WgLmko0ZCoR2VdotA0DnHzmO3xfsbZk0CRloTyGRiXew+Vbg7QXIjcOw+Vi1zHXU8yAzqfPj8ZyohvBDVWBf1AkKAR10JCnYKFQI4xuA1tQwGf0dqARIa7MKTR4ek1aIIFQBx4iqv4VinvoQlhsI3Sp6HvFGPa1lyvdxMDUhmNriWT+sMfeYUmiagFJvdjN25/WosbLSOMPCwCokaw8L1pPUK6taNEsxs1oq1IBXPrjhLn/x+9Z0Do+iiJGApbDkzJbpGjIG4Jq6FqXKNSAvD9xlBSAJVfyc1f87pUtawnB6+FLC9LN1jNRCglDEjIM0v+TxbZw0LSt9axtVwFwPTlunSItCi24L0FX32+J9G148igENk/dAC5v1WRShURl4EG7IKMA+XChUascP/EjDbcwfX2emeNUOY5it9xNk0tF5l5lYLsFQ2QK6vWDVWZicxjZ4uqcXdmZHh4u8gHWbGkz0/g7AV1SJVs7nEFYCY6aoIBHECDD6mIhPXO1BQjoNfeAA6+6R8htocj6UoREBYzmIMhpwSZFSZUX/z66ZWRJMfVCU67i0bk0p1y+vF14bgRGbJn1VCCqC7UWImnf4bzorrT9puaIDCCdIGjKl84ZMUwbCcJMI+lL95PeDAwH7ie/eVhruIWTxORJm2XO6Rck21UkAzNqbcI2eJRYxprUBQK7+p8QQYcqbCLCAgkCwzkcL/RwuLMxqerRBn/sQYEgysEDaJUxAFoFg9M8deJ7WAGM67bzTOYVhNvN9krmZVMItDdSsYQ0X4tgMLeh+ZDaU0XVOQEsiopGVDkvETdLDvDDRM37QxICvFXkiHzBtl+rrFcyyzEeEyJ0MGXQUeCEurzTQtzsT8wR6voyoRoMg4GbOEmDrHLAfSGk98ZUAhhcUyd/e3m4siMiamkdklzWqJ5FkuPsEUslwD2NyE5gSsLRadZ8gYzXRWej0j3C37qcScVAZO6qGlisLL+yVAWpt8X4YbjY9xoUBNWIEAC8EOSM+gwEFJF9Xcx4I4zI5zMBYxa9kQzB7wWwO+BwRdxgrcQODVRMX3a/bHisLl2LluPBka/gwCLVqyxoFncSQQ4H4UX79BS1+l2SJopWsEVC4Hc8UoCm3zeXSBk08AWYCu7IFaGwjggXx0Vfo8u7U019RAT8QhsX9eDyfcP3SJ8oUeQ2PFHM2CwTojBnp8rofE4aVSrKoEOPbvnGcRnsCc/eW+49hqIb6zjc/i2OzDtM6EJdmBPV3fDJYPV16jK9Wft4jxa1/rdcG0sgi+pVYxKECek1MsmLEhKtDw/hr/537Rq0FQLIb1f1Vrq7ikI1HjIbYbGqAAjsjckkB3DuA0L2ounXpD8Z0l2tOyRzKdNv4GgBkFJLgwL5sFVCPOEsLq3QWztPLe4uvMzoqZxZhhpIizFK7y8fs86IR1sbYadyJIP6KaQIxTjLnfIuIcBcAgCE6m4b7HMqNNA3Bwzo0pSgg81lAIAKV5b9QhaSMDHcmApTAM32gRI6KIzRubjHPJuXVNPkzHzgCyvgIiLqYyW8CeM0bWZQip4xaeKjhqWi+AZKw9z3WhcJ+mJf3VAGbPDli0hVUkSoUX18N+P2EsYjEOzlgXj6NZMToXOpOnOwdQVQs0XA4dp5e2OJxOxV+/tuL05ufx+FlCfVL07WIn5HKuFgGWlufNINfG1tPmU1mVVtIFwIBXaX6QWtC+Z4KoCdXI4Ii03sRLBCGD1g26URzgMBZqUJAHsHBLjUqAs+7jnnZzbMDmgieAoAvS1lOA2cRm/BNpS5G0FOCXwLtnSr2tsQXcTpsFfRpQmPWjb5cEv+LVZKnNk+242VOa13FxYCibEUXigibgQl50ld3GMQT5Ukg5cKpj5RrXs4poKeV3sY1ETdFTWMGxQIwFlLQar5Tn6GQ8B3JdCWx8vzPFfqHVzte+OU+NnUzXXLGQRlkBZiWNkl2mMKuMoUWjHZ647QALgFs4mrmSiouLdWTqURUKs0g28dO9ed6Vzzc5KuWSCDCVM7wEyFOMR/JVIMdNRVNouSkgg/JGCi2AigIXlv+o8tAVkPi6Yy1fXNFVyha+rPJj9oPPUTE59RDbDQ1QVBABOgEwvMx9AJdULMMHp0Jrgy0oGUFuKreiDJhFhZYGusjJX+K3ZEU/Pmv1u6CVGucC5MmP1dzOXV7vU4TbSd1XGGaGcg03UsahaAIfmoPdZaGTC1JPA4vUaZqgA1hIbCYhoylmU8YXRLaTM58QzMUEHkCBGmk5LoAWj6ESgohHktOXzVoqYXr290cwKjNDXOiR4WUQbhUcHpsyJHy91f3CTA6Ld5G4na6bFJpOM/6+4d8zkNYyfZYwFVNrN3N/C6ENIIUQx4NiYXBrCy0q1QrAeJeYf2d0ALKAmhZXE2CAow/M+ynKk48h2J9ugsbCVL80bLYLZLJ4GPHAXKAIJoKAkfMV2ibdgLReMM4J8PWxNWFMw6BA8OFAM+uF464aYGSLMc2aYKduPVprQNBm17H4GwNxQ8sfCfziN+9zQZV1X/yZw9Z0WfL8FwFpHm41S9CxisFpI8694SKpCnqj+w8lS0gDfDaUk4W59rEuFvjJqrA8s4h7lIfdrZrTcd8sEM3AURvHiLiGxiMYfIwGlOF7Azn/ThcEAGEp0+QrgFsvR9JvxMOoH8QX/dMIBI8aM5JrX1sUUuPcFO1efX9lqnCCjZh/VqHl7ZzcGD8iCJeAOqxs5EGCoOngR5qBr7bVJTKaqPAw2y2tVlIsH3AF1mmXcYKcpLBYIApwBh+ucYoEHFwH31N870rz4gZg8KwCirKfKnAJgnGZwHev0OOnbjc0QEEwr7XQp+uH1gGp2SzM7iHxuMUlqvDRrOvPj9+S14mKWR8oqM9m4vC+hoIgdf08LddGDIzk94ADL4mNGNcf2vp+7wd4WiXTgxnz4r72Vd+cOOkzDesHsq8Bhn2DkbDJU6V2l/0nqvbPYpOVcdVATkbx8+94P/K9tJyY9lM0yXC/uMAIaZ1ZGQSVEczHy5xRknlFdVoXBpGSqsjMkbJsFFB8BoVvRM9X7TDmx5eVrh04g/RzSRZmkoSrw7a/BUq2zIRwZigUWD4+MkaRKqA1BF24RRhTA0APVsVzcaE6Di3mBsMOnlP/Pe/NVxrCq6d5m7VASFsBGJxRsoowGR4tHHT9WNaRhvCp9MF4Aq67Qqx+R9ES09qmCZRwjc8UYF2XcPW5Fs1DLSNVVhi34pYqSRoNlyC9TpMmrTtQF12vCSjs3dKy2c5Wq6YPLEsLVxHdCgm6CTrYZ/jzk85oKbK5RazL0LYqXmfA0+cBRuNmnTFFYdos2Gxn9O2Ck3N7nJy3n74p9Yo8I4NAJBUVxNrEu8RBQu6EtAgcWtSuaW5JCr7izw3XrGbfI2DZBeCqOjMSxLJYXpNcgziU0sGTSlrLgva47lL4BLA6xqDRwlEyVSIYm+td6Y+FyyARh0QhH+ujCEsHY3Tg4n/MLJSHVLZG8pCY1yJGCrNCBM8Cpni6eyjSkYmkCTJcLglcRlIuOh+zZAUxhVWL+2qceQb7QVA5JA8cfAjtxgYoZ4AJC8GsSuk22JkBgFkg3HJSrQ9hFfBn2rM0f1efGnkiF5tBr9RwiE4j3kMyF5wggHJrJMix9GAnAl7jgb60JnhnbfMSdDnxrX7o8wtXz7B4nEjfE0Q5/KYWOBVam4S7RoAQagCMCWsG8EYxNS19J8KnSZKgQdzVQ2uH5rxFul8w1qJZuQmTboxgNsipApDuHNeQw0/v86uAWz7oUjBtb5mbuXN8YXWsYz1inFwCBz/CDadA03QRsRZDRN5zIARZztjH7O4RxmM4Q430YrorCC7A+AeERjerxTxMXqZ92iyY3A0zPH4laoAMgUzDjnt38DHPHaMhin9F/Y3YUAg3CVMgl0PHfDrlXDefd78/UsnBqq3+u1fwQe1XrUJryRwKAYyyP8VcGLQEsfZEVsJMBhkWNiBjCWg18sP4SOvVUkU+Dl8buvFAC4tYZhBTahvBDu/3NaGFygQpMNOdggTinNeZVZTbiPNi2C9VxPWz01vrGoctUmvXCmToopC0qEgR3hEj4nt4mkzIz3PD7uSA7W629fd1Oxx6zPluM2PjFrcQaMWit3I9EVB1WuUIvJFWoGlAe7quALsu3HqyBvmb3ZxxbpxvdUA5aZwQTHEdwaRLPaCSQATFVSUBSgRuxZrpU0Za7OhqF2RKujofHdzjBEO+33w/VGXS4hk1LD+9pFUvS6ayawU+pE0xftE2IxUyiaGtjsZYKbk13ZeTU3m3P5vNwiUklGslmKlJEm6ZUVGLc6T8iCQMyXACwLNShxclzXd9qnZDAxQToCjCHzl4zZ/IdGHUsQtHbRajQk07mltZxNEg9+PKilGYQU0BVtY8oVXiWosRwAKF+Pm5ZOAcN33tW9koOXZJAEPTXp0j3tc0A2GLNSTAV6gHaX7nVEJhWTzl3bUYWlQ2LG4SxjRwT2QAVgEuwGpzwEGK+mYWft/XTCzBYmqUGSEv8cxwVbGvA3nejAMV+q4JYtgdWl0iZoCMWBCn6katBJ8j8Wfo0qLaJJlya+rFlxi3Ip46iOh7ZZzxTAd/y2D10xYgprcsFmYaua3HGGbxCKHH9N8QKihuL+Rc0aoQmrp/6WniAwn0GHxp2qFndJgd3GpbeDlybXBXQjW3JwCO03g14wFYOr75GTfhEnDtlACRCkPE6yitHgZAMwC60BmBJK1vHhtFd5RpzB5TUK1sDlzjhGKuNftNF5Rr/SEwXYDFsyjo/GTes5VRzXrCNfFnLNYnFj7LHZOWINuTZS7KHKHnwZWA0cMS2U0Np6cbHPYTDqcT9qcT5rljPkw4Pd3g9PIGh0OParm9D6O1KQvW2TNLyq/6Ikcv3e0j2V9+O9x6F7EnTCSolkSVrN7qILA5wI1MJqdZUYK0EfxhFXdWfrhfQ563tOA1z3pr0wA2Iw/qA6zujQPc2LMsrNYSdLDycByN4cBavb8E/+0MjUrXjCMLnltdYuywkqRTjnCPNaPrDHcoPMXlH/g8v5Z/K8EPwSZdRJVV833xmeSk8v0l7ZhfjM+VGBQ2TibgC8FJOgMEVp9RIHMyPTVfJzX3DdFfcI36slxwrYiRoIaXxmIVQlB4enASS4AkIEEJS9TX74rlR6eKWngvzhAMMoi0AIToY6B/v91jPWhKZf9WQkqKYKOnoAo9AgFmBZH5ktE0MtFSMt7fodUygRTaLGYUrhT/LjVHu59ncJA3mik4hZIFE5aqkb42wcDibwkLCMvLR4xKU7CwHK0F4bKiuV+QWpmvCUuek+EEs/UFW8VzuFbdpyXBCxBCN0jJta396QatDZxe3mB/eYNl6dZ/Cq1wD+Wcimv4NLGzJHfUVdEyBoVZ2RTpoy9r4CMIs3k9SBFwYFusA22yAmQBvpDzk6AzwWYVGDbPtoYEqmktQKR3kieEVQEIq97UBzbTEsGKAVb8nkj5hoaQ0pI6TgYvvcRwlD4QSEbAJ6eUlrBJo4CeQsJ1JerC0gOUTWgjXWf+TqbmknnRshh7kVq/76sIYAddql6d9tCx7Lsd5rnv6VYo16uaFXCo4HCYsBw6DvsegpXzFu5TgjSq9ZJrzP1Ys1HCtYIcp3SsrCV0WVrWTYkPYjwTB6oWIxJs0IFq83WK54HADyu3HUFiuBp5sb9z2sxhuUhXHxCVct16HbFiArStg7jull1dxxjFeHxdrObRiL0a7kbyYIVbLJGDYVwjrRY1rECtfzp5Ziicx1fFOazesH1OGSLI83e4HmSnVT5SDoq5cCLmiB0mXQ5gbNfuvk/VbmyAMhI5xkF/3uLsG2B1IrF2hHvG0m4TSQYNMB6loldeQEZC7EK3Sjxfz5xcjHUMiAvkIIIwjfm7AkSQ2GAgxY+2RtkQOUAgAlwByL5lsNlZaqDFh0RUrRHUBAuAEWT/JR+xqrIYU+Ov1KWZMDhtGefhDyBzCI2P5tGiAZPphPncGXcEjJERQhzIITR+M5XzGYj0Uol360oA8V2ZEknw4uFfInESr9L/22wOIzUWWAc2OpBgRViCGpq6m5dKxxnLQlit1IBDCEdNhhpBhwCgEiBkoYsAZf64hgSWXnad4Hu4Vs614ziluBUDjHSnAzGQF4e3FYFegRTdQRHUy/oUw/qwOgpAgQC5rn37UkPVTN951gx/+7o54zRrhAtGSSHVCAbdrcDAYJtv0qd1I89kQjDknEcNIBJ8YqRri+medDlxXaoLKTJ8XMhESjvp1wU9XaekwYjr8jlqTbPWkv9ijZOQsny1Slo6mhWT254cwiJhVXWHB8RrKB3mHmmxZ7hfuU+X0eK8HCdFJ3+JsUYQOunI93t1X0UsjWuVmcLLcZdsLCo/KrEOjW5Aukt8jpn2HEpNAEXfL4d0qUV/acUr1h3SWgTNI60YtT/D+UKACbfe1WJoPM8nrMmF9peIgTPLCVSsj6GkjXp5AivKEPIfQWR7cm7jc24KJjNEnB6FmawtHk0Bz44lyOEZcQp4LSwEALflLPvHH0mZFWO+hm79idoNDVBEJTJ2VpVWgRTmQCKPIgDzIYig1wjgUQ8AYvGZGrPSNQ4/Wvn3Vqas8o7iy4td7Ca3ADd8Nm8MrR9wmzJWEdostsP31Liarum2qRlOFTRN+V51kzwEkc2zclk5gZF5xmdLbhABsqIgif1gDJfBYQIUF1FheHU5PKI8shQobFpaGLgZQjvtDHwsmhwovBBZEXEKqOQLDXSY0Ix4BR+Dgq4CRFAq5yH6RxJSsmWfHM6dMztdxNJA4esSWqDfT4HjtEnt+nA6udBJwqYLAdDIAMhUbY2U2fC1DyQYaxYo1yYNYb461NEnN0ze1T3kc9oaTfgS8SSItUeApaDpeG6uMwUIgztDs3VrES1iFCwRm+P0xxLueZw9Yu4IKAhwl6VhmhaPn7AesALsEtYgjg8hpBJwuTuBZnhfY95VD+Gjq5B1ZYJeuS9gwGT43NHSK35/pOX7dQCyrgqFEemSGrPyBZL9pRVEFE0sAHZ3MqNPC+ZDx/7SNvYprUhBC2WfR9yQr1pYZiTfXd0e1jlf+uKiSNeNWYwYiBz1dxwQXxUwT7pR0oNEQGvsiMKDKGMNsDqtqER8TxzcqBL0bucaWfzK1Ae22xmbzRzP4LrT9WuANoPBW6GfBs/Masb3wnJU6FGAUKrs/hEnqKtKicEpgMmtQOayLGKNg77K1YLg6SxvXwNTlUTHvRmBrZRFSWuWBZTPiX3NPbu4ilPjTQ4SIGZVdJT75NNAHTc0QGG6sCggC9AOQFgneE09/ZeWgEXy3AAX0iuriigUDkSuNcFcVJTfQDAKALmIvqDqhcUYDa20iNDSAb93U3Yb40b8ORa4hETAHCeDcIcYciYQmVvWNmEAr0q6j9jnYiKNeA9JARh+Uf8xH6qs3A/RHHQpNfeWmSh1YZiBEv53j2kIV0tDLGbdlACFVnFZFDOOtPrOiIL2TAjB4qbsAEmdGhbWDKeasDXHGebb6t4hqHJL0VgSJLGAGmuOqJcqh1uN6KNW/zu1qyIMabnREpjqQrIyv8jw0Ro8KfwPfTOCwZtgGMn0igCMzCmS9EgyoesrfOouAAxEaggM0tI49NDIWzNGRpfTWMSygWilIROt2WdOU5kxlkcBcG4jJqYwWcb7sDppEzVrqZJ27NlRk6IlyKQgGYeG+dCjf1HunPQo6z3BYwXEhXi4g8J6ING37gGqXL8QtLQ0TjZ3TEOPIoRLTETwCRv7cAvYyL463c8e7Mp04yHlPRXklr1iVVFHurLIU/ydcayBOnjjQYnd0tC328MqtXkMVre1YOsmJpx324PRZVhLE4hCbQ1C+3faDOux05+B3/yQcTAEaX2y9HiOja6U6o4XcavQaNcUinX/s2hexBkJwlUYhwU6TeqQTCcXn1MqiAoML61q8Wxm6WI2X2TCOdAGMtZplYQBl1sdKUussyvrSmWVcJqlUhoWcpakD7mlQc9wSzCZATOAogxF1Ivh4ng3pMjR6lp6CO2GBiii6S/TDowNjAjKcc6xHq0gcVoTSAAkvq5Z1p43u8CIKG6FIURujAkpeIswvxq4IK/h77B6IO9h8CqtNESmxcURwaaj/M2BcnPT5OxEIVpMym1NxysqcItPmNsrc4CDwtXE+rA3xVeqyOJGDO7rIwq2ZcqwxUEUfhMM2QLf3G1zJgjOvs9o/6guy74WQR4aWd0YUtM1OT5/1kAe2AW6Y5J5Wwn4FFR1kanpVDcMzdni/6b/XMo8kqnVeeVptAYUEcKk0pK4FjSGV5o9w4Bq1os4CCNQzIDVBHqMsZDCiJRCwEGnyWgXEpLAgS4b8QBzlL5E2rJryq0Po/EKWp1O1dcnM9rs4LesDdGyvzT7u/umUXv1CRrOnJel4crlbWrOLWlgYVYM6TEI2l1ZbZhbShJkBNge1dLiSzPWliEDriNoM1Ja4SBKy752QUt8x7WdFz/XiS5Fvq8Z8Wrz6sJupUuXBulFcNh3zJ7Ozn5CC400FjPT5DnqvGgWLHMv81eugRUf3J3MmFzw73azH/9glsDJ4316z7if1heoWvXd7TRfVRk5gH9P12crezjq+ZS4ILpcWHuo7s3eR8RvBXgpAcScs/nQcXCrG9O1aQGausWFbbZzuIojXs1ByzJ3o9GgaQQguipOx/m7jVvCikYrU58WB6eaBQ+5PwQWBwlkMcZJVyEMaPBsT03esKz5DIlN4fcx5tEVtVr8dFU09AxQVoHxjJKplnLT7y3xgA+13dAARelbp8ukMu9i9uIkU6G0m8v9yM9iwWLi8x1MzRVezIDT4jbNh0mayiLAof6URSIwOetOypEWlw2SUAhsGORUGF1EwNN1wdgYyb8FBixWxHom8LW+22JMjOCF4fKcyyEe92MdqGCFwWpRcVGd8Xg9l1qjQYv2HM+mtcD9mFHuWrCyKFgQGlJgSLpiWIzLNLyRFWYd3ESQJpC+2iGFMejKr1rjT0zY5WV2JD3ibJfhpm3SR2QpSJICtTHWs4hMjgIc6nxQgJgZGuEiyhoePhYHAxTM4aN3K0mtiYJSdVkrDZxxJ/AwPQJGgg3+ZFou1yFBnw/JmfDa1SfCmhaIg+0UiFgHKTQAIF07LOjl729S+q9l7Uuf6D5kJk1kDvnckARyX0icA2QpzrSAuIZOGvDPViDSBVxUFZ4tE21wfzbuAd9TDgwY2EmBW6v2Rqadj2uaRr7H57UzFZk046QcMVD++RiZWQYQbGoeFAhZ0ffq2AogslQ2G6vrcno62fgiO0mw283hZqNAX/zgxXnpHrSsK2veqnLuklWBVzFGGwv4XSlMziNoFVXnq0KaaUgwRh5VTsUew9x/AYTD2mxnYvU+cHLugPMne2w9rd+Ala0x2XNkNTkfjQw1B4ERY8f5LfxMoB6IjASFDtzDmiOANl3TKUiDCOARQMb3FmakrAHSKoIzfw+JCuXKB/sv7cDwQ3ZVKEuLHKLsI/+glb8ha8c8hHZDA5RVaxalXIEEAFuk5ovp9VBYFtiyYfwzLZ8Dq+yZlXAXe49QqeL7KuMjkox1IHPXWPw4dVk0fPUCpPa5YH0mAjMh5iSScAHxM2q/gnC1EMnGPRX58pkk1EL4ER/BDRrgyRko06nZf2ITusgarNYBn+kCEcDqALIVYBNjOIyEZ2fEfwdzUvhJsMUNNSTMuHxfNu+zu5SY0kjNOTIL3I3SNmmupoWGVhFaXhQ5RyGIHejUtFFLI20RkApBZCWF9i8egDvbREqz9MlwPZ0NKlvEY3I8kLep1ahhCjKpzhk5tWllUBwZBwGIM3EGLNc0Y1a3jGDPpaynW9u4/iw+RfAhLnClW6xBxAztrcgctVoKU7oTCFyGWzjs5OCatZXi0fZMOQFaNGq9mPsowdnQUsBvSVAoTeP06WlaIq4iArHFBdVIoVnTilc1K5zGBMWCJ4gg3wzwtj5GMC1pLNYOAVyajJxvSY2b8UXSFMvcMHtqe98sVrafaFAQNWlYm0R8rghCYl7dIsB+x3s5wHEGrMBO7l4WS1Wel+4l4FvQ+DI3q6nic9BaCl+FYH/o2O8nAAnCpu0CWrlYW4TKDl2p4kKf9B3Ai/Nc5pOViSN+TM7wGNGoYM0TpsMa2w386RAcDh37yxvMc8OV/VQOOLRnsahjBZb23KSXMRo6z1PzOQ4g5oATDaEcsWgf45MAhPs8gUSBjAQMvpasV0JLB2k6pof1SUiLks8Nulak1UzUDw6UiKVkVqtU2mA/iB/pEioejk/VbmiAIrNEDMrgwYBNzRQ6ObI7684A8mAlfwZ80dQ3gSzi2T3IRQCSIBpKDnl5ePUHuoUFXCACBV9olbwtgFDTsKQI4Of9IP2IFMaKXLkzAiw00lWgLQKchB/Qn6lSrqX5u4KabkxNFFkSnxajit4hGTNAAeDumwARs4SmEuXsRVNDdu3eylNn+ibnOdgkmTy1dn9nMFIyIgpXn+SacVOzZvh3aCpankfrDvvlG5d7WJCMSCkQXMib/3ukpuTCguBRHDjRWhcuBhDErAWVPcMBtzKOonAEWjIOLS1ozkxC8JT5jGA8ODMkYPGfVuevyCjGkUR2SQGD1QViGSIaQFC4jhvNwFsHJItXsI1sBU2Qx8DiiB+pbhanBcajRN2QUeqOsM+a6ymTrgQzx9mbaeRNkLE9Pn7SCOuJZFE25FgItL3zKxcEEpwwK6RmwjBOJIJxaxC1ZB8ARIE7zus8m/nr4CcgtzZsTmk98nmgdSXX1K1FncGamvPrY+K8BmhRWqrKnlJgPvQ4nJJHIYTrZO44HHpSKwGwC2bW91kOzd1BI/YYFZhaPJEtgmlJM7hG8PUZuriqhg3fwXXimJayZ3qu21B3mc0dKgZq+zQii4g1TcZswHrxwNc+DUtBnzNbh3FDYalxviEEAcUyRwtZHQMWBydd05pP/ozi2gGSpzvvUfIi7mHSXZUdMJDBk5RBZY9yiPKyfGX1sBJohaUVAlmQcaEPod3QAKWCkDajIED7Z5uLD4xaHrUEWgQU5q4IMxqKD8+tMhQ8FFgKYG6lYi3vdUJmEGtZaIV4eXwN4Z6arD+mHN4UBBOSUDODaHJNiIxryv4CSKRLCwscIGwHsBsWPAuFeknqAEC00HAsfNYQC95lPwlilrLhJfsiKmiTbyym9NKUreV9gjRhAqGNUrCE1ly0Y59M18bHOrjPtVYLDBYoK+QCEccB0VWMDS0zqiWLojHuQ9PdAxMgXTxDw9c2zeWSzETt74h/ca2VgEJ8zjleAdaBqq61RYaN18Ugo+W4CSqiTsRmZO0S+u6pRcHGo14JlcBRPXZlBeY45y2ZETU4J0+vSisrgNLYZ/+MYCddDPb+5vEOoW1yF400p9NqRQtXJwBxmq9ZRwCiLojA3I/MAmOqLuNwYu6LEF68hD/UDmU0gYIQOJ0VkB0YiiIOoGtibqlITdXsc6Ttc14150U8nmGalqAv0rhSCCHPpYpnBcAsAIpb07ftsu92WjXXECm8gZw7cW0nXQ0ATw5nif56hAJ/aGlRQR726PNKIDRtFkzTiBRvaFqwlmpt9r1JZYH3n2wPODm3DzdXmSIMHrkgpBEGOVv/mVVXMfV86Blz1vLeoIsKdJz+VCVq+ERWYbDBBJ6bDV18EllJrdONZan2Y89MNAvmXg5r12Jk/Hgl5xoMXIOfR5276lbh/I0VMfkDfOkVESYQpSZ4/VSAByfhjCKvvM7fr+Jgw+cwgK8r5VW5DAt2rev1ENqNDVAaIhLbKsSm2anNEjEmZwNWZXEm63ErtJxAEJYRUXjRN4IeCmwXrtCrkGZw/rrQAXw0F7zunNXOk/VnNJnRklKee1WAIcfgWRnoCtl6xDhPXiY4WArh0qpSNeVqtqfWD4TWsypj7xp4WHZgcxiplxxvtVC4qTkEehmLEHG7NlkzeIYXrgIQZ2oAuQ9jgziTs4yZlv1UhPkenCNaZhyoCIUImZbPL4ELhUX6q9IyEMG/NMdSePDaoknTGhDPJePzdYz4nxgfx6oBLla0BddaoJGhwxNTeegaYygApGuBT25pUYlYDNfAeYZJuAO8axb4ZxMUFsIiNEmaYekhGAytWzK+woOqeYwAD/Xj7wAcvrZSnh2A1YEC1W4KEO6Pun41ZibXvGRBif172izRD85Z3ywWU6MSlVFpaak1NCINn0CXNO7CUUdey/1sGnJL1x/p3gV8xNm0gc12IQkG8VSLR8R9CSLQPLOYbE37ZM9p8JObJxOG1O5F1GvHaOyzqLorFKjqoGZkoTzuJ2gA/5hDn5sAqg6aaWlbloYrVzbGNlzBIt2MYa675qA75mswMN73qiTYUkjOtSDoOKy0oumWDVAPtM2ysrTl2T4Iy4TF0XQDXnuLpRGgVIgdawuM9caun1vwhrC8kIYoh6oiS1BF2mJjmAEPjQ7rkeYhtlXSM8aPsiAIVjM8ItlPykVBKukRq5hiiWCP/FWpJJfncO8+1HZDAxTJ09Ft0YaABdoUKFVeDZTEacaeyqsVYLhAlkNj/GEAE26e1QmQPNeH31Gwe4CgVCKgsPcMoUC0fP+QTHnbDnv2RvPZbHEAolwd80KCJTpW34g1dmX2vx18raq8MkWN2hUtT0Aw+tj4nC//TjxupFoTbF7LPMAJuLu0UAo9N6tQmA8SvMQ6cpy1JDoFPU/bZYqeCTjKKHMVAdSwKRwl3G4RX+ECkIF41Ihi02mZKz6bFhxNppFZDnlKLmCxNXZ9y9Nhi+uGFheClSBCNaAwGCSouRbUdPk81jNgeqhCVi4q9n0UZg0gztWhpVDVBFCbzEqn/oB6Zk7EBDl9h+VpIGlZEHuE2SrqMSU8yDBSgRcTykMl42gkxxmgTaWY/zMgVAVR78LWTGO9Oa/COXIGGsHVm3QlOnUYLQ2J4wJM6MJAL89zUmQdFAcmrdt5R9Tgg/ezn5y+kSAleJgw5sWOMKBbKrR7X4s2DWz8bKJqdQLf68BRh0SGSghwF+LTZqBvFwM5aoHdm92M3kaUng93QvmZPFuIhzw2Wuo8449jZfo8rWB8FjPawgXbvMCaA+TF3SL7ecLpfsJud4CB74xbOXduj81mSVeQzwuDe6mURID6kOAD6tZJElh1u0bKu69TEwOjdIcOJV+webYpFyyjYcAD1lsCjbbJysoBSLlPpjzOIY6vKPshYoZEAwynElkQenWX0JpSLI2qKAcCohT40+TT5INkFOSH/CdjRopFNTK5/B4e8WLdLHyKGyAU5LVI+1TthgYoFVgMP3QtgGVTm1jP69bKLZzj0hwmhUlQ0w5NFoCKOhgqaLPOsmgCBneJxPHXHs+CjgQYfBcXmuiaKLV8zyyJVUpymFyxNsWXg+eij0Vzis579HU14QV6ptXJc/Uj02VIMvci2HMW3GTO7Bgyq81IpqwC1vSghmVpuxTwCCGyiv+gtYEuE9FIWWaGinqQljH1Ith8HmQko7doe2OQYaYugqsCDmY/2DN9CkeJri9kYONzYmum2Y1DN42zaJJhKg9rgzNWr/5ICwatF6ap0t3kDHhIWJPIzIIBhDbp44VrkYDXgUiNNAWaRDYCNbUYq99H6wAFbaTm1nnoiP0TQZ20+vjci1eipRIQ8Tp+holKxkoQSDfv51BYECyA4eZz+FgcJxi9QAIQs5rpymQtZT34sazXneSwDK8A2oE2LQmOi7spz/9x2vC9K8UVtHqngzdaGCisquUJDV4ozNOIJ5vH3rJiquEZf+40It5BfTCkAx7xQM1eB+dQcPCMojhRWc1aQCBGYTMWCVCw2cwJGgicaCXxdwwehmhnaARdshx9xNo0O2cKZb/B572JZUk1ATbTgnMne4zFAoLF150nQouwXoh/7q6XqY2gpwAmBdw1D9DebBZsd7OnEcMD1X0jNN875LnkE1SsnOdcvrSNzKkIyCa9+R7gHKKpW1GwtpgEPzFAz6wj8saMAaH8gskn3288TgRLygTxM79CZtJNH6CDxI/oM/meMr6ThMmK1GzETv4TolHTjR6War77IbYbGqBog9U+AeJcnFV+NoGGt7Etvh6CR4HHpZTPBWWWy8ICeR0fxbopomn5oPB3gS+0vtDnR0Rb+gYUAqxmMQIGatu9UADB1LVWkeY7Empl0Hx3JchDixz5cFOcAWG6mpeca2aHaHGnEBiN4bESASokxt16HqpVwUgE5MUUWX/aNGJeqpuFAjQAlffXLpSYR5aalz7i+zHa6jRTwEEBYymCwSQzkpb9CHeIWx2CvTjTqcG3tI6IvzfGEc/3+ziWaaxSFeNYeyAEIQDPlkoQzvgOpfWKQhFc+xTUzeNWVkcXDDJHCX/yIFjSjNRnOmelV/rUw51UabUNMOON8ScEShkkiABBQYcBtpKZMhOMLjRjgLpinNUdxhgbxkTUWJfYh8VCF9YqZH8W0s+KiWsCNdGwRlUgqy7UVpYOurYas7EQri6OuTfWDBmxbn2zWGzDoYMIr3u9lt7SDcO5602jxsi0m+0EYyA09cXdoGG54tpyTUp6b5vshOOZWTcU0CQc0h/XUkwALw4mSPOcK46fcVig3C3lFvaHCZvJjie46cIVjCG4fGUbqc01w25iJhi1fzgwLK4rgvgAy6KWueVnH9FyJPC+F8urMjbJ+92cn+toQWdc57DaNY006BrnZSnZfi4V+xXzllbOUfaPoVPfB6usUqdHxj+SasMNIybjKOf4U8BQXEuCZ6tApsqmrhHsqpP3YypWSiCsTNwnUSbj02g3NEBBiUHhOo6umWHjzMcQZvENU9PmovEBWh+uq8VRWhfYfFMweEBpvQAsUBR5vZ59B4NFI83XoptDQPR8VgQ9iY9rllUl2DARd2fOzAShmW7KPoewpMWnmPHS/+j0e8h4D/EaCwGuiiAkStbZ4wz82QQQEUDp10dsxVz675uD5lpLB/a+uKCiKTne6/2Pwlf0HbPEtMrqfSHcBWvh5P1mIKB4afA0i2e/WSlUkWZ9e04GQlZNApIR+qFNuYy1E09HzNkq0LgI2RqAGiXmubbOcMahef8RIJJm4QBJVfD7EkTfFoIktfgiJ43mf1tZesT5MdLHKoODgoVuqDjrxmOGuG7BSQnogRCoKubPZ6p1bQM5JyyUNw7NgFllg86w+QEF73Lw1Neo4gtErIwLJGqeBHLLGTcT4Om0cw/3oLplzGJpXAjFtvL95FbUyMxwi1+nhYhTQ/M/gN3OCpdNmwW9abhclkO38438fWbp8IBRgtqu2OyWYt0yC8687+aucrqOmk5VaBWBBpCGkeukiJo+9WBBWli18KSxtChEx7oi4vQWJ1U7gFTSntNoc140FsE8N2w2ZjmZl44rpxujszkzWkKYL4Kpe10SSbdPWG7JP9TiWLYnB4+jsrEscwvANm2WGDNB52Y349y5vZXDnwbOndtfpRAJzMKVxelGWIrVXUBmkWtxaGPEnAiiWB3dnFkoLreFxYRJzFdYWQ9FhnkcoQqy6Gesc+5b8tEIXmURUirV3HvD4zEFaZXhTw0HKHgq9pNbaAPg1JjQT9FubIBC05YgUqFAK8qZSdDugmlI3APYtRZg659xIcnsuYEHSpl5YMUVmenCdzJ7pFpKZH2v8m8gCERnyaClriW1DYXBI4FO1Ekh8FkLqbiH4/HuhmtrsdgXat4RiKiIwjoRjCs5DlHrK8cQJuspTc01g6Bm4VgAp60Hr1WBByeiaMb1ZSW4khq0MwT1+YizTcgsy/yLIFMolULfn+NaF4CID4kYF/+8MYtDgDizR92MSwtF6QcBbbUC1ODcMPX7ekRwnAfhDc1+c+5NgCE0tRq0yHeFkGm0iPDMHaRWU606cE2tWDDadqQrrLoBxUEel6Wc+cO0WwYB0ypglgIEaOAacu3CreEBz6zhQfCj7nYTX4PIpCBJkizL52Eq971L7d+CYdVPbxY/MdbuMYHXwi1j7kenAcXaleaaa2t+1ozPcwZXesZVc3AACRcaTfm9j0iX5powTmG7nS0ldz9hfzrlmUGCaIxvifo9rt13n2eeTC0ObmihoBuHGyfejzMAQwsNsRXQxz9qsHHEaRCg0vLlcwjfH4sXcOtNcdhPZpVyZswg1GppUABXrmyw31tMCtOqIy7Jf3qzE7Kn7idlj/WRBtyLPKuqiR0BMB/MXcTxiO+JCrZoASGIoQvrcOiR6WV9ypg0gshps0BHi0wckTwqYpm7Aewh2EwLNhuLAWIV2VDw6EYSBB0xgYIgJvZEGIc193yc/XMGmFA2zUnrK6tKbQqTf8hrlHzBa3ZF6Xv1zxvjA+ne0c8tFw+1nviTAqprVs9zJAdRtIMT60Tk5xvUg2iBXMNAp7Nz5A6AZe2HZGU870daFjSzYOoDCWrIzAXrAKdA4v43zfNN87paDZd0JAgCCUFEEyCFQ8v50YE8rZlCmAKr9vUsymX/xdIgha4s5Ts0rmFKaaDsZpuShYcYG8B0ShPG1GS8r0098NUFDM3tPDeFAaUMWGQfOOe+HmEYo4nSXRWRacPhceM3TWDS0krAQmOhxbRk0HU5qsuAgj7cLRSiRZCezSjJaqSgcc6fXSSUIgOgFx5kWJ6n+XwCU2Y90F2TriuNJaQgS8DkgtFBTGfVYYInWlw4DxOFijP44qaj2y7O6/E5p+svMn+UYEzDehWau5ecH4vk2nAcxf1nz07BWwMVqc2xmJiUSrpl6RKTixow7HSj2G9MPD23CHfOi4N8FoIzAJ7gdz707JOPuXfTulXNasC15B7qkS0zHPiZ8O/TYkBZzeoDsdgHFrdb5g4WCVu759KC1tz1Gu6kwVga21OWxl7ohVlFi8S5SnxmzHnLYNWIQWoZc0WlJFxzpOshYSmkMnI4dOxPN6FgRTwP0sU6Lw1bjzkZEKvuy73pPKk3rwQ7DbNGLZlyz4XnwaBjCPrWs5c85gYADrMVnDscurmfNgvOndvbCcS+pq1rpBEfTqfYb635OUQtA6ZZ5G+eO1pTAyo9D7asBypyy9kX3M/itVC41+nOQcog37/GCEjohX+T4dBLUMGINxmS58mFpV7D2BKgByb7lHEz5FVFgTljIP2k7YYGKIEWi5tnVQ3W/xGLJ/DzdnKG7DNgTEhhH9IGuaAlCjkaQYEzpZhN+uX575JNlOfuSEZUE4igfEfBsG8JQJjy5tYV+iG1V+Ts9xFBl+eGr1gLsXYyIAkUTaaTAZAJCIAi4D1gKzR9PxW0puwFQWsKMqZQogTiAS5Y69zD3sPS0CtrERCmXPr+G08ZbZpz5WnU6d6y77P8OXJjc7c5mKjaNwoTjrX01qYRjJCCkO4qCrlRLDPSNAPwOE5m5FT3jmaBMz3kSafMXOL6xWm0kuPh/DAdNMnUrxuu8dDs7fMWJ7UCbp4307x089HTf78Mc8fEmLqGOZ2F3JgxQZ4UgX6kGUoGX5NYi2Ihy2wEib8FiOfGXNEKVF0PPgdhQYg9V/jkIJhIgAdoWEs09pL95rPD/UlrmFsHM45DVmsZ/XRAydgDCu2hgv1+wn7fI+ulxvKMIVE9ORQBAF3UD5yDC1yncbE1YIxHbCvSOmRtOaFbpZwjEwX3fNx0UYCWCNL/xumv0C1PAq9rRKVgjIb9fjJ2SqsoEEUNc/01A+p976sXJhu0kAhBueDgQr5Bsd3NESTLtiwWc7N4ULAAcep0HC3Q4K5DhAWEdVqgWLnceh+YGVdDMnZ+qcPOGWKl2WXuYdkiryMdAhkTBAFuOneKqQ1spsUCfMsYQi7Q2j2wOm7FQIzzWIWt3ZRKFwDAFY1IHOi6lmUD60roAgM9POAWMC8BB0BFWABMI1KSBS57IywBa4J4CO2GBijqroLQWOML+KLEitnnVaskUJAziyflB74w1/KdOXMncVATwiJ5LlBoeESrBUFWsMP4Eb6fhNI0C8vx2uYaBztd3EhhTfJ+RF8IMmZZj4MBxSVAkgwzCLX4FzlfxqCdQGkFqWCIZl9Fom0P+Bz1OyGrLHQrBXGTEWvRzgkWhSmZqJ3z/2u6kzbmQmJFT9YGCVeNaFk8hBYYJcEJgMjEKZzCWuO/ivUpCkKxv5J9DobpcxjdFn93cP2zBZw0tJ4ahAekFsn3B2g3RGLr4SiEWWGRRUOttrh5VlaSOrW0SsXz0yISZ/5ICvMMoETMXxSyo33a51+XFrErEHclOBhiRg0kffOVHldBq5yD4lakMIc4mAwaYB/KuAg4+HhB1h9hDI4DqzEEyyHLkAcoJ13E5wR5NrbWR9bAKKAsYlIa41o0YoEY/zQcoHJRFi19Ip3mNGQAJa3FUoGCrOZNXeg318Azu6xB3SITVhK3ghBIVSWGJ3czIHoVs0IXCIHiaKF4kxanzVJcvFwfAysMDpYGYLK+sfDifm/VdHsfmOcegKc1C4SVppgPXr+mD/RpYLebo5bNbjfbwYeexWOnTi+W3eSl+rXMowJW8v7Kxg9HrGtPOgR6X2K/G11merxxK6ftYWcTXTrdAuKuQM1TkSO7UXxu4a7kSbOmF2m6rGmAGO5bp4fQj87snRR+Pobh72MIwkHWMSkLIIsYL51N5gSf6wp0B7G99OEhthsaoAC2IGk5sF+RfRJ7Nf1jIdsVVg+lVMKzwFlkHZHqdqHJrOwZeEokGrIqqyILxFXGea2/K0pVXG2tAUp9EqSwoQuDzxnlGYAXFxJPJ8YKsEAQjNInK29uGuX5wxSrApy2YEgRXCsp5ANctTJuMtLiLkgrhES9knB7cJr9sDtzSVShWuNQENYEixeAVa4dCO0Vrk0LkC4lf1G4EhRXadwAgnGTSa0sQd43IdP3YD5OPl0izBiq2nB8TkGOAmwGEqq5ZBEHxzULSEKrdIEy5yFn6mAw6JVjBAGlBPOMIGZWs3SGraVPEVgIjhGr1FqWM2eMRcQteF+1MnSfG2Ff6Ebw91nQpySg8LTIcAN4kDPN3bq0DPwtFker8kthMMLcvKoDUgQk06fDteYAosmwQFzXVNXHboLdaWgpQdQ+ViGwLKBPRPOcpW4uoyicNsQzRxCAhsKIrh5uzzxrifsIEcdAuuR+UO5z35dSnq0j3UEBvLWsE2ucEHTBg88jZg6RcmyB6mNV18a6m0X4wgXkvIMHVHKNegGuYSlzpcFOlLY5gyIrqi7m8rM9rXHvfm9xO5tpcYXEiGSaFktFdnCy3c44OdmDMSwQxf7QMbtlxN6xtnr2PjBtZosVmZY4KDDAHsxVIw04Obe3WjZq6dHdg6innlk7Y99N2Qnrp1lGrZpxX/Ngb+Emm1tY42s8G4CoZK4MQyi8zQYmCRQCBxaU4qA6QhWCvWnw/iDKBggkvReUEwBA96krKjWr8KG2GxqgSCA3rAftxB4odvbrHQQImTQnnkS4yOrU46gie3VigW2MKpBLalz0hRua5jMgGEEwBRKC4NoHBCIFNQCzglDu850erY25rZ9fXSOCjD2hSc4uzOj2uZCp5H0sPrcKym3sJFbzUE2q9h0CVAWT99+MlSDtA/CCXf7nSEEamjKQhcka0zSRJk+agf2R1YQcNS/Y12pxKgKHVU3FNVcGeVmfTHuzuhj+PCBcMaxESl84gyGjNoszsxDetKr4v5Xpx0OiQFulG45d3fR+NnWbtTVY8I79GwCk1oMIy5A/q6XwHmf6a/NLJuhzQTegC3U20lIVTGw0YQc4Ycl+t5BZvyX3kADpSEiyjFRa19iZ2cP4lKjRQnqkECKgIS0Wyyezb0ZxWzWawksgpBYGG0G2Dn4YZMl9s4oDIiD0tagHVIZLRCUtKy0BEQVtBHgrUqtWBB0GcOSan6kgTHojEKsWHhRaoFvHQG/LtHzluLkS9uyZlVTntnITRpyXg5hKTwyWpyWCDLkKe4vzKovP+fD9ENdJztVQ23+Tg4D9fsLBDzNkBhqLvJ2ebnB6uikhgVYz5fR04+nVViW2FuIjwJg8JmnyOLnWLL5l6ksIe/H07kEeC6+p4+BQtmPlRlcVP0XZf4OHV17D4geYIumyYxQaiIQNuto7IstUkJ8zTCD2HeCKuF+4MatohERQVlEmOjBR0azoDidwngfmClacHs/98RDbDQ1QdEKan9QWYZViTLABE8pjKvc2RAZLABa6EUIaqRWewpmJ1fJTLRmC9eTXfwsAbvSmQWNBKHAE6ubVDFjyDjLSmlVwiWwjOAoBSsINAkHYT9m/pmaiIyjiGIrpUJHMV5rmOQ0VPR8oKP2ZBEzsR3U7UAhz8yCFMv3aUUOELqaiNXD+WH2zWjOoQGXgJ5GOhJACkLEETiuRbk0B7LfWuhuKtU+5dVbIlBi7+I1RUj/cJDlm8f6edclEOjRSIEGywJz5rCWZ71xBgfoppxxxChgtAnG1nsixx1lDPr2sK0F6OAs0h9OmMv0RNnYCMCsodkYg+ws5R3aTC0stmSkUvAFMdCVw2GqMjjpoZm0NgJYPm1MGoFpckMazmcVCzZfpwZGN4s9uSAtIaLhtrdG2Ztk4nMSwGKqEZlymwQS9KxUKRO0cBlzbhxwX42kQFhIKGKPPEf2JInZLxn1w9TJOCwmKq0buwiVqkTgdpbUkAUVmakmpbmr9o/uGgLX1EendQX9kEyWwlsAPiuLGSneJABGwK2XfROBoo4BHxvMMwaVLW5w/2eNkd8C53X51/2HfcfnSFqqCc7s9pj6w3c147GMu4fMuXMLF85fBLCxbSw/OVotz2R/MSrPfT+ht4NzJ3qwqfeD8uT1UBadXNuG2PJlmExMCC4ANnqMr5UaQ1jeo4LCfAhhV1zvjwgCLp1ztVCqkQAANWbB21XNth+SBtgJTcGnlcFokgA/ZQQBcQxsEGWohJjMViFi+WJviln6obfrUl1zHjWMdyDLyw4CGzI4cxRCgDEGb/e9WJpj7dWW6crDi7pWYUlm/Vpw5R6ouF7qmIlOQet0PxptE3YuIqkaa5GbJfk0GKOoBho5GghlyHNFHvlf9/jgA0K/xeVpZRVjHRRCWBL5POVa6iwIAIZgxT68MDdq/o4BK7c1eYtqz93sAy9KdidXMCAoX99luNFJxI0LcmaPAmeIwpoCDT9FZiw6HyXeL5oF5G9fovcBOaODD/Ktk3OE/h7hWB6SK7ofHLc3cj6QfX5c+LTicbrxCpEkTLS6iFG4Is/LYb6LMtzR3K1YQ5PeFLHTAQCEO+NqoAxrKnpn9r5o0wloSJNVyzLb+mR0hbiXanFvy9AXX/qKCK+nK741skUPPdw+zXgzWE/EMEx0FcMGF7CIRmMznr1xMA1Dxwmocf9PoPkFdtQrl2DUClhtGZMQ0P9qCcQ0hHEUhiwnVOHfFn2cWI8EQCUsiAaiq12c5WSzQUhEuER6mZ4XynGfRwib2Lm1ZU4RWRNWsWEttd6BhzN2ykNxixXosRg8mdJqDCkjzWBTb09FnBRYFWF2UMSEKE3AyJCrZlq2W1haCOKcPxlBwEVVbFmekVdjBe9SpKRl7ERvmGXLDA/Bsrix1+PLpFifbA7oMXDjZ4/LpBqMpFhWcP9njsTddAgBcOmywlQWX9luLgekDu+2M0/0mzl/SpeH8bo+bd5dxXveYR8e2z7j/9ATzaY8Cb2NacNJnfN7FB3H/5RN0UVw8fxkDwOlhg5t2lvFz34PnIlgeAPrG3gsAB7VCbvv9rrigkAHM3Gix4VCab7RW/uRvl33k/+I0pu7KEdW0WDkg0aXl86us8hggmcUBisd8mq8nFexBSznCGnOWJX+ydkMDFFl8omiBHPCKspxFXQWOhvejoEmZJa0R1Sfnmr42WQlkcQAEGABaIUynDRmAHiT9d4TPQJreXKjzWcHAGdRaQYBgTXAHF9KT31OiqGmJjWI+BCG1kBwzi1ZZSOX5BGuLGKpumsDKGVEVfPYPnxMXFKoWF5KLVQAQkHEfDmoUJkTIvGl1CL+8g67QeBlZH89HmPNtTkoMS2RxtAA2Zy1FAAVxQ3UnRWaKM3wKMMy2EZlVY4MyrXe4cAWPFvfxxPuA0M7CjO/zHCWqK7jBmc80QVl+h9SY3BqjbgVgiu+YURYaDl4RPu2IPdhkbRhaF7q7kqyvXE+JQPThjKoVK0Kkr3NvNEDoVxGk8PE1s2J07lIAXWMeS0L8V4B2WF34OS0E3Yu+1W1DuhqS23zDs6NySlpT4MDnYT0PBExNktZdk13FUzVzsVEuExSouwfDxSQuoLhePp8ClMwsja3KGCT7zxUDZ/g1mJupu9oQ1UrHvoV11qaSLszucQQa+yOYpfBEbbdk+RyLKNpm/b5FuciIObW+towbId06iDNwm+5a0knbLhmn5GsQCo5KWBkCoAJxDo6AoN2CZgWKMdlCdK+5tNnMuOWmy4AC914+h/3cca4fcHm/te00GnYnB0+jFk8BzzTzMW9wMh0gAty03VutGrG4l0unW/TNAZtpwS0XLmNqA5f2W5w/OWC3NUtKE8VjL1wyY8OkON1P6F0x9RnbvuD+S+cw9YGpLziM7jFTQYaWKRMWZBurpQFrURyR1lXyd9JyAI5C4E2zjMaSa+06F8Vpxnc2zRCDXoBPyCpNWdcB1VSstJbX+BTthgYoUewLCK0Y3MBd0+8W1gukO4OmJkeK8W9fkIht0fWiR1BW9KEIXmdKCuRiib9X8zpZBLoZxayLTD/mq8iV/CwhxprYHtUI5DX3j2sWTCebSx+HWLASXVHlHTH2ms3jTDQsQYXxx5ywVbM8N0j9LgSkpuXBo70rEKF/sqY708LDDI7wA3eaq0wYsiy2aXL+akg8R8UzgGgxAhIAsvs8nXZkIC7jM8RN18Q91FpraX5dJEzpENcQXDg3uFtIBb1ZMTrSXw2kBJDuKwIiMmYul/g1hcHU+BZh8KbyEkXrZCw+N0oNWdAnQFkwyvsVTK2ruQJhNIHuqdEbKQfEIc7OiZofQzC0x14Y2iC7GdhLgpIIWPa195Rw4X6jZg6stGd7TwoyauJS5hLeh4jZcSBrRcAWq2fjwY86GqQIYQJCAoxMb/VN0zSqOOvcIDuki0kTsIyloWvGgjRRTH2J8vDcL0MbxIVCWEiW2ORxsF4AEu6NrjH2MTdoZ3YLAiyrSri7BZpWmCGZwcVS5RwrrVAx5KTLqEDrTxS34JxtBmAl4o0iMBeWEl2L3ingWUMIgForItPio3Da7CMOO11Gg4oUQMb5hwduj1WtnCvzZEGtPr6Pffy8pTo7z9nqEiUCrlzaAHsDNBiCx1y8jN4Grswb/M6+4YEr57DZzFi04bEXLuHWCw/idDZhdLI5YIyG37rvAnbbBQ0OgmfBbjrg/ivncHqYcP7cHjefXMZuM2O/69j1GVcOG5xsD7iwO7VAZm1YDg3QgbH0tKYAGYMYCNx4XACVsLTaHpC901dh0VHPa8X/sXKhV2ucBZyb1YQlCuxgQF2DnwUQkQDEssDqZvlaXYNsPmG7oQHK2RTYcN0QaFDAS7lO7Jo4fTFcJlhZRJQLrpJZOc4cqKFbH+RqZOoMfZXdQl+f5/Gb64bPxBpAVL+gE6IooJ5lYYwlBQeo0bMDxSpnOx+JioEoUBeEQkCCnDvMsiq0BVFgq3kKMgEM7NpIkXRspNSkKUwi3TmJXnyuyBJ1YTpmFTI23yLAGMCYWdrbNHFp7pNVFHcHEoDUfnDTdfUaHqmd2fMl5oAulciicRBQp5XxIUMlhHTrPFbeOiBu5oz0ThciUTOlFddRddXxnYpi2UsGE4XXapdovXK3lFlSBlCqhwrBjDM7FWQ8g1sfdTSzEtBKAhckPses24FW3knBC2RgK/chErTpYi6P4QONOIbZLE+Ta9e0EIXvvQPj0CEYxdSswUwj0Nu/IhCxlGfk+g2fEwjyxGM73ZfaN0FxnIDttCNAZIhAaOUAxt5oMgqftYHWF4haNlDrihmZsSSOeuhOSKFhcy5Ii0DzomLm6pLcj1z7lZU1A6AhFldEMGJ9y6jT1pThJAa2xN6lQAZXxj7K+Cma66OOiJ9+jCEQLw8vcDp2wBnF6yovEIJ60jsC5EVcj2Ll2oyUb0cwWUskhWkUkAOtVLYmy9JwGgpI7v2IS4OBt+F9XxazopzsDliWhiunG3RRdDWam5cOBXDvg+dwZbuBQLGfOz7/MR/HfZfOQQR48PIWuz4DzYJ1L7ctNt1SqD9+aYdxMEC12x4g2nHlsMF+nnB+t8f56RS7zQEPHraeNt3QuvNATwJIt72DQbdirmIKnX9oVYDJ/0l3zmsCAFP+0NpBEltgoLAHqcb6Ue5SrkYVdMqJZjxbWQ77IbYbOkjW/LPm6tAqnGhu4gTSAjHbZ7pxwXu2Wl4t0uaTaC4Y3wAEJgFIpAQUre9bgRMyUzhoKmnEYYypK8GNy/cVoRNjDGmQwCP6rnnvSuAVywgBWBCQBzQxxiGYUwS++t/TyOvJyJw5RsE8vodMicOikOYwuCnK88Ocq4BMw6qX0mTOeVSstKOIzUBqgLGBiE0ibgTFNZDlsK1/HqwmTAsmcKC2jQQkLmhoAQlTNQgiivYtyHLwSKATGj9dPb6plUKatNvKvAWgSnN/ZDsU4R7pxXQ7uJldppIRgGT8KwDfRmQLZaxFPiPGIA7GTnsZgwm5iOPoXrvE38F6NpGO65VLuWgES63skUGXSAGI4QJx4FG1+UahT42d6wrkPtWcS6iXHvdzbgArna6uGAiQbhhQSGs8r4liHHrGUDj9MHBYRC1tlK6NrlHHRgEP7EVqq0BYIIdbR7nmYWEA3T/u1gj6KnTm47e1dPBT1j3cnYLgLfaEYtl0GgrXjKNAm0+b90GQ6XQnLEInZZxnaH0oY4QQ87aM5vWK8kTm3LUIkKlBhhJ7I8ZGYIuMm1pmq+I7zz32PJuWfcrAZMD6e9h3HOaOyw/ucDhMWGgBGAmOhgruf/AED1w+weX9FvfcdxGnhykOSdXBYoca+3OzmYNnHA4dD17Z4YHLZlm5tN/gI797EVf2W0xt4KbtPkDaGIUP0KpBN31kdGpa42nVJd8kPzkj41LeSMpObhh+5XKBPLUWeIwaLJQDjRMq+S5Qfl4tdz9Zu7EBSpHLornZNBYFOcIC3AwJIg/4K8w5NP5JM6bThaMCWayGBLEZ6wUtlor00/mmqWm8s2SdkqYlvVnPrIovckdW4ytjD6sEGZNiRRQR0yDIYm/1HZwrIOZPxN8XGxb5XAIiEuSSjC0CN0sKZe1qDimFvHIMasKLKZtsg1HloPlWPbWWA5Q4I4Z59mHFIQ6hS2gaZgINt8hIl4mk0I1URl/XqIXgFhBaDbjZ7bTYtCKkoELGG1C4AcF8V4xfER1m8J+4awggkNAYB2kjTxOmW0pcYJWJFzugLGaVYAFrRk7QwNL8IcD8GRSOPPgwXHJO73STxbwNyaJ7FLK+ZnS7sA5L91oRIUDB+BuN+YKvZRQuQwFrzaqb1mDhODuHpOuC4lqZBHV+6UaKTBHRiKNguXIJ5mD0K9PA4oc2EjCN0XJ7Od0QVDOYNGMmEAIhaNGBwkI3I4FnZVslxk7coti8LP400X3loIp9blqEsa2ttownWUUxin2fe1LDHRTA0edHOM5F4syjcMlxXuF7c0nAtPi8iK9DrRobJ20Pt3AGULfdJLD+MvBa+nB6lLAo8btps5TquHDX8kj+qED3yrEQDQChZVwR6xVEZeuyOE1YKXwbO6s4V57cp4EtDxL0g0mXpVnskU/94XTC6WHCfp5wsjmYF3+2YGda9SJDscgu3blSU8/eIT8nuCBQ8nGIj0EILMhvOcdU1MjLN7o6gHZVywtYKerisidq85Av1FCAT9FufICiyURDGR+yOqMH9XvyAgaxqWRFWlpanKAY5yGaKNFuLtKPzyfhctGBVRAqsUO4WQSWqqvwFGKCl4I6SWxsDcUPXBoDfUmUbCS0mlbmwiy0WcLipmHZoeaYQYBYxUrUGAoz3fm9FJxkMHBm6jnxYW2YWzDmOKdDCBg0NPCwyJD5FjCVtRJCdPkcaVoT/NPwq7PfodFJMBmREdp0xnmwxPgSZ5SgWWYNC681j+/hWTs6t6AhIRMlg3IAkdoycl58nDZeZxgTszMQvnLVjHuIgNGosrtOrV4FelLIRapyCWBl0yQfdbMszem1lg2ZnsLH7do83xOaNPdDsfZw7QjYgr7gz9aMg6nWYGrzmS6aewtI+mA6eaS7ErQVq5UOL+DXNS103Kv1vQ4WWWeEwqFaBSEmLLoHdtYU9NAZKAC8T6O4ngRICwTjNipAULPmtO1ifWD9GbdCVEBDQTrKwZhhXSjPDFes00eTtFgFsGgZJwZl6XoWPtMViIn4GCS4jiDXsHIWUOlCTZwWwuLj6joVhcwckzxwzkGvAOjiBwMGg7Vg7iZl8mmNA6L+SJuW3B8E+Uj5kNbKEsBPqxjsJGq6p5i9EyncMLdXd6AkTbHZLJHCv5GBiydX8NibLuHihSs4v9tjtz1gNy2YupW2l8ksgJdPNzidJy+3nwXu4Gw8+HrX9dlwuS2CjgFEQkkkH/C7lZKJjEEhM6jZqVSmuD8Y70g+VN1EwBrsklYfOj65wWNQSESOls8yLBVJq4GDiECYAhMsBVCoJPNhTRLdpCCJdzaNuiQrUNPErCJcnAi/T8LiI7T8DQBK4mN/A0jo2izXkghWAUe8lgTG57tLSfjMCYgaDSRwTyVbFXBrmoQX48vf4mhbceYdZLSDAKj0xwX6WErhKQDUisI3DNvYFAiIpVWzlNEaMey9oY1x0wHJMHxMUT3XBbbArDMhpDWDBMci0NaCOYfZsinGaYv4ibSKWFE12dmzWlcMaNTagJiffmojtUAy9cbg1paWpMpoRN0q551nZWHnUnEAY1eLbYjNr0lnAGRokFVMkjOhKOjF7AAB2qSWVhoMyNeLBx92d1ttdC0QWzmTRw1YtO2wzB8V6CBYKZYyv86+YTxMS00VZhVYlm5jUonYIAZNRwaKwoOkCa58nEOyPgOTgjwezLKYOtruYEJnbhit0PCCGJ9ZSAZEW8RuMP6KFiaBLVe4YBQu3AdktMyI4TN97wzfK3a/+rrZXjGX0UBDdZvKiubhVg3OCQUOLV1dslJwb8OWv85zs/UdtFh6do8CUflZVFdWEYu3yr3Yg2/omj9J9jeC4yn8m+3rMSRcgFBJS2mSScQRwedtYRaax48s2nBuc8BuN2O/n5wN2j3JE9KyRGVURLHdGEg4qFWUbWKB4da3XN8xBJtuKaQiI9LEI3B5CA5z8/Em4BE1sHlxdwXb8zO6KE4Xcx01KH7r4xewjIZL+y16U/SRp3EzQ2k0X58h6VJRmNeASnQ5e4euTpmb8fsS36NclxpX6R2NM+0aXIEvctDfa+9sWa8rYmAEuh1pBGgJXK0sPh5yu7EBCvkXtW0ifgpmAhLHCDBZYem5yImSQ0565IgvAt1qBosWnziA0Aw1Uqk0QcXZVjQB21kIIqGfTiYNYoprRTM9mACJLiRuMBIFkBBYDNkqES2zb86g7AR0Ctla9D1EwtoQmRF+XQiUkUFyq8h/XkPrxEC4XxiMFvEZ4ZNGgAIDUVy36i9Hmn2h+U7XzJVF0pYGbNzFdPAhBrPVmCMdAtmMWBedBaNJpmw2N1kv8PdRAEsAvwgKJfaUPIAwLSIGkGm50bhXopS/QI0pk3EDK5+9NIVsBui4CHDl8yEFLNesqNCavJ+tK9pmQZsUoiP77/NM7ZVF2hi7QCYmDPB2ctTZAzAhrvFJuOcazNrUNorRCNRgsS0eCCzN3JoQoG8G2hgZb0HypMAtQAaCVXE0zi2FTNRHcXfOYF0cFxK9D8xSwAX9+2HZTJDIgmNt0QBGwwVabFFkHBLfM4bYycRLi7UNC4cDmeFCqcHcb9y+FPSMzREeoTEncI0idAPQloGdEZANm2uHe7GH+f7IDHPLGGuOtDbMYDsANIFqHmAZ5z0V4Ge01nxuEJYPWjHElcewqDlYi6ybsJz4XLY6/5qWTbvTM38MxNBSFny02TwOBxBjCE5ODtj2GRdPrkBFcDpPdnZSV3Q/jG87LRgquOXkkrleZODivMXHPn4eD17ZOWgDelec3+1xcXMZ25MZYzT0NvDgfosHr2zRd7ZO89xx4eQUF89fwccv73CyPeBxNz2I35kW7A8dF3dX8NEHL+BkM+Mx0xVspwW7PrBrM+7v53AAcNP5KzjZ7aENOIyeoEAzXkbcyiHTsP1fy2VUCyM/GzDlZiIgb0XmUDTlPeHuq6UoIMZ4/Nrg6R1op/a97ggqJZM36GqDBr091HZDA5RazySCe2aElcH8a3ZNHKgE2AIrELZ8QVhSlAsUG6TcS/dBdfdQC14kappELRYXABm34QsK72PPZ+mhpQmNvk6FFW2DXRcxM5p94SFN4RrhEMv7LA25oivvF4EVI7VzetJdNWdAGL+0WhX+/CI7mFVkjKu8ShBBf5ZKO9aaI83dYVJGavJVWJcx0mfNku4CpIlx5HuZMUOhJn14NggyXVYFVphNo3ZLVNN0JhmHHKIANSjQfCMz1Y5gbDQruEUhTosGTLgP1pJxUCdNMZ82N2V7ldgSy8J1V4KtpZlA3yBjaura+m+BBwI3ciFe39BODmjqZ50sPq8EQHCapQl7MZSoanUheJYLVON6hVlj4vA4dx1obDouVDh0Yh7VzfhKRoh4fAg5ABFMDK+Omdki9n3zEuTD938tFFbdasyCEoFpyX4Zz5iha0d8HpfRjO8PQy5D21rRCMDMoRogXLmCF15s76PQH8FbxOfCOsPgWRWJ/TCWhiENXUa8FyAN2mSMxavLTtx3MaUrUMD5jJTgoEX/0q0SvQ8M8JRjj9vw9wRwd/q0OXd6DIL0fxP4V56B3E/MwgH8Hf5sZUHBbmBBnTmOA48FkAAsvVk/DnMPq9E87ODAc22PtrPxTW1Bb4p5NDS3+N1/6QTdafCxN122k4+14WRzwG4z4+LuCi5uruCKFRTCpi245VzHg+e2WNTc1g/ud7jl/GWcmw64+ZzVQZlk4LaL92MZDeenPe75rcfgvkvncHm7ARrQm+LC7hQXdqfY9hkKQccIgL6dZpzOU1iArFChGq9VmMVkjwQiw9dhk+5sZQjCMHoK8EDycMAL5F4qImGlvENg1lryOz88MBIoKHe57gSmk2JMhb4eQruhAUo0ggCCOyJHYF1fhD/czM4gWC8gxE4D2h4YOzd10ZxWYzmQKFMhq8CfdLv475aMS93Ss8r66Qo5OBNmyeDor0CnkWCrMkUVO6TQAZH4PWb6Q5rfPJ8/3hfzowEcIDmWYBScI0EJtnMTMoU3UARFBtrZEeWw1DivQ0OwEJOkJSaDwIb9K/Nc59X2hPU3tLbZxkM3AASWreJjo7lcXZu0d3lRML8u1mcRaPe3aArIsRgYaC4gZTYz/sLQlLAcYZUBFJoOtfymUceie0G0CGz16xevhcG6FTwYbZXp4wzfhKy9Yxx4InAyfas542MDEmR5UTaQeYlakOfGhfNAzq8DRroawoXpAIhauQXZDiOZVmIOGAzLYm9AxHxEXZuR9JGZXYrW1jEaCgNbKwFIK99I9wcPH+x9YOb5RWKuiijqpSWQEdw/ktVDB7DMHQNWJXaIW6LaADzdnfQQqc4EHaNlQTF/b1ihfI/Nc4OcKDqskJoCEdsQ6cKw7BbOLbiG3fakLuaOivOdNEFcBGC6C5QF5poXl8OgW69lfFEznhcp+HOeNiwAWP04glV9neD1dvjsyPoa3a1mGplsWjzekQHn4CjOoipg2g4vRXE9GQBumwFZGqQNNOclCngqbsNoitPDhPnQsV86JreYiAKXTjdWO8bpat8mHJaO1hSn0nHTySkee+GS7Rm3bN5/5QQPXt7i/ivnsNlYVsPNJ1dwMh2waMN+6fj8Cw/g8mGDj378Mdj2GQJLSRZRnN8e8ODpFod5wrIIDq3jdFgtlivzhMedexBTW3DL7jIEit0043eu3ISP73e4cthg1m7KAZgmraHkhPLKhSIfHcUCuUjGKkI9TtNpV1wZp5t/U1DkPpURWlmUlhjyesqtxd/XCn8KhZp8MGXlp2o3NEDRhsyxpnCmu2HkpNlx04ny7ebyoIIMXZleny1A7dIZEP2ogUaJTiPQTvP5vuA6xKwwdLPUWiIDAQRWTWAMgQBJEdahVZE0B1yZak3Q4T/hbxWkpq8mYV0AgeBBYWbAiOZ2BlzNi5OCRcIyGNUZKoMcXLMLf/siWZANFPxrWqWLhNrcmN187T5j8Uer3yhCPZwapsa82Bo16GgYreV9NDE6MxOQSSNcSVROw4LmQAHQ0GBC66xrJZpMQ1Obz7NH7PvuwlNnKb5idzVoxsLED5Dzzde5UGBwqAjcFURXkqe+blxgdIUejEGRbIYfXKYTBWJ0PYUFsUInM7LnCACmfFrQYtJvZkcRdHNOZDXWsHTSxuLWieiLAL0vdibJQARyBviKqc95Xw4NbauZlSNAU7pjHUQ5ABdfd67fcFAQaaQuiNVjgAJwOAhgxg4WjkljbZhe2jYjiJxWIsa0AIiATw6GZvfWslpod4uagYASW9KG0S41a25/RcloU6DnGS9jEUh36+XwPcL76d51UB0KGLNpfP3jzCYHWq25e87BhsCBytLtfYIAV5zswfGS/xCQ+94NMN+AZRF0VwBZa4bzLLSn+H42niQJWlW8yi2wP93gyuWtrT+3EoEZMwT7gB4mPPDxczgcJkx9wZV5gzELdtsZN/VTnM4TZj8v6MrpJmh1v++46dweAHB5v8HHxw5dFdvdAZdPt7j/QcWFc1d8HE6bTTG7lfI3H7gZm77gMSdmqblpe4rPP/cAPnb5fGxMxjrN+752nYR88GGV7DWhy5wf0J3Z1Cz3TRH1ksi/N1reyZgwn7MaRE7lq6VnX1uuncxF4YArOJ8zFhSBERYFJzlsCQYSghYiP9cOAQRT8P3hGh1WhdJoGlOViAexvalAOetj7fZBFmpzbZpnBMXnFeUSGFEI0cpCQXvwzdYJlLACM9W9ZOAHRmBBcKVfJUoyGb2k8HYhr07N4Z7xzRGuJYKrAjACOVPAlBM0SZRG8wLWaLEN5JqzB1vGacLMYqHlgwjerTN9k2buNHHbOKOmhRfTokBhJ1Zar0+JqjE47W663pu/u7VhMSrs69LidFZq3TmruaZjWPVYzq14YbYBZ/pOA0xhFe9DnH83cjym3aT7J2InosaIhouNsSlRw2URLLSWFVdB38yITCpqQv7q3ocBGB8Y64Kk+wjR5wErdEYB011wRHwMgDZpCivfgM0BId1ZdrBcEZIU+C3PgqmnK9Oyg45Iix5DPO6iVdJEBI3G2CjAKCRzDZnBImo/GB6H4WOwuARJelnyWTpkRfd8aPP5bN3ThrmmKhlMDcQcLUPQC9CVkYdqogpwLSC1IY9M4PhcoNG62cjDCgDBeqZC0xU/ZIwCJoIzaamSvO9s/xWSBx7SDeUCNOKkgACRfH6kovp+Z2aderHDSLV2q0+UBvDxEaRJ89iVAgbDCld4JYFg68N0yQELeG+Ky1e2fp0pFQbwWipVPs7Z+dbQhktX7Pwf2/vmGFuWtI4NFT+wUoHJ96/Twzw3HOaOK/sNruwmAI/BF958LzYwUDZNCw6joWmLcgBQ2KnIB1PGxPvLAqRB29zb04DEPCng1XP7NMwlHQUauRvU5uvUx0xAWYBOXFqQNmOoMnXdLqKb/qG2TwPLXH9N3V/PFFndjCS+yWZRXWgyCll80+aEIoL1aO1IqYqCSjUOGIzv6lQr1gGsYQb3XwQl9XreI2XRGWjrQs2EOXLxyaAX7+silmnEAE++F5IuKU8bjv6Ix5aQ2XhQMJON2C8DJ2UOmoalh/dFgTdufprT5xYEqmXcLGYZJlstAXig4OGhZwjLSZNhdS4KcDJtNhkxHORFSqBruwpktVvfsKyv0oBwQXAcjmQdKCG0ljSpFiCpCLO6yTLriDE+80uH+RxYASKmLFOz5VHx1MhCQBPYFnqCJuABnFZcWCmQ2i9pllYZVKGGCNw1kEzrloDBspxPpp82aKRWCxCF7qj1RuaV5P1AWsfowhAxTZzzMdh/ZIGzJrBYCtF0xfi9FOq0gIgfHZF1bUpaps+7wMCJupAYhxb0Bs4LLSx0Qfn0dE8DpVVCXTjZyzVcVRYYbfNXXVwsWAbuLx/HNC0WVFoBNNeXtOP7RAhWCHTdMjd1ozXjF1hZ36CIOC6mQdN9FGszu6ujrBNdkxFgu9je5r4kKQZtSM4xgu4S9EWMEWkglAmJui3NlYbm683+MaU/AAbX0t20DM5mf+x0Z6N7np+zsJ4J9xa3khhPG0szqwSQUnExoNMIsMSBq9/PfhFkCGzvjWFF6KKP6htNkLWhfF1ZS4YHEy6z1V45zB2X5w0+8uBj8EU3/y5OphmtDat47OnxXONJGNfjwr8BDPKG5J4zSwlCOZSGqCsVWY5ULAQmA9KImjzI5U3rw2Rw01Lk1HkH13dBxFZGeYYCbD9Ve1QBymte8xo85SlPwcnJCe644w68/e1v//Qf0tWKpXlAG7N1bBL9GgpaEuac/4Yg3Tk07YcpyxfKtcC1cEEABwYYwokmDuOj+2bxGBVuWoKRQKH+/OiTpvY8YDEkTnRhMo+TJNlH06SVDDcAj2+MADk5bxFQiwq1imnXgYkxBWQRH1qj4ACKm4MgrGkeKMhArKIphfClZkaQ01P4U2AlAEBom+w05yKCH9UYkvCCACw+Xn5GAOOFuFLAgCMKDSWezXXnb3ezUYCXmLE09TPY0vsQgoKujmIhiUJvFA6cJ4IJFPeCm9U1TO1lnPB5co1PYEyoT1ZLIRhmpQV1oOHl/xm0rHMKR7o/Ah8NiRTnzuq0XBePAYh1HJwrxHrXdaQQZdYMrWHU1Ov4GYdCt1krrofYO3wuQSSBAmnGhSQtc1xUgldaM+MbZ66RVl/WObLWiothCSCM2OMEt9dkzZpMW8r7CGpmj3epwlmQ1gUSToASYQyOd8HHHb/d3UpaDIuA2+hpJcy03Nw3iqT5GiA7ytyQdlu3Pda6ZfWE1c/H0LjvQGBvczWGAItE+nrrI6yp4c4EQYuD6uFHDASBuhvFY9No7SSNBgji0KmQgSBQo1gln2cuwmF7KcZT3Ice5N+E8T+cXwklhPew/lPUT3KgEzQF2zv3XjqPS4ctbj65HIBxs5mtsCH39GRnTFFu8eRqKhFRk2WywG1bOxtHLSYX6+drjQoUGbNG4NMTrMmmKEqAVyr3a7cZ/8hieZlk8KnbowZQ/vN//s942ctehle+8pX4xV/8RXzZl30Znv/85+OjH/3oQ36GnCyQ7UCbFG23QLYLZKN2MJFbM4ika1OefdMQ1oe0jJwRqAI0nkzcNNK0GNAoYiYw7f7ZxtEshQNgGhVdNhTcBEV0k/BiassTpbOEyylBjo9jowGsTHD5xqV5jwIPmqWWq1zg+zsSNTdKDM37C1HGzdS0OE9q1ghxk2GkaW5Y8nqEgG2uMVrWzLJieLHhQlvRtM6orSn9tzTTh1WSTK4Iariro64ZOE8+mNCiffxM9+apvgQx1JYCHE0OYtytJYKo4shU4sGiYL7hw21V3AIEfAEySA/OFNuwMZL5iluypJtVyTQhq3HRXIOM8ZOuijUrLC1LybrwjIhwnSjnoghFCinv63BB3Aq4IwMTvt/7MAgWxPakaeiItSdIjNLwmim90zTivd2LbBGM8kA5ghuALo2CK/2ZPDSy9RGCM0CzXx1ae9dCISlU+TcBBV1sEZzqlhCHDEYfi7mxOrOC6trA1p9xTStgh2y0jI1R6vOo6ezmNksgnNbPzE5iNVXODZxWhODQ9wnpnH/zmavvy/gZy8OMvCi8CHNTQX3tW45DyGMCHaQVtTnNtc0It7AJfGRV4sKG+M5Ufuzf3WmJfLBTIPu6S9M81NArAPtUlUk3QTsI0oAAEsy4ors44yxoObNMr5Wy5y+Q+IcGGA0wWDswLBvp//c7t4KWkKkNPObkFOd2e5ycHHCy2+P8bo/pZEbbLeg3zdieO2CzndG2A9NuxrRdIJuBtlmw283YnT/g5DF7XLjpCk5ODrhw4Qp22zl4I7vammLTDMS0nYE22Q60kxl9Z9VwZbtgczJ7/FsuiijSWEBaFHWAgofcRPXTCKn9LLY77rgDX/mVX4l/+S//JQBgjIEnPvGJ+Nt/+2/jO7/zOz/pvffffz9uvvlmfNWPfju2F7aAAts+YysLJrf59oOm5gUEASzi7JsRze6+aQNxEJSQkXr8QRsZZLbS1Io2DCCZNazYk6ggztChi4nxMQFKNAQUrrVwCmfkCC3fPk9kT8HK4+pDa2Rfufn0zOfsF8hYNDQTKWCELhm6MaDuDnIQoy64+AwLolpv+NaKeRfwf3MAyZjSSmI1HOqhfSlMqM3Ymgy3ZnQ/iKuL1boYi6VjTn3gMBomKGZtobEvbk4eZVcKjLlNbcF+mUJgjyHYtgX7pWPTFux1wqYvFivgAqlD7fu+4LBYaqMMhNtm6otp/6NFZtO57QF77ebuIABwRiUANlhsLE5rkwORAfGqlgOn84RNs6PZpz6s8BMFg7dJBhbY/Ye5m39cgVkbtm3G6WJFrVofWIYdiLeMtb+9QbHtC64cNkmqtEaJeh1AS6t88LCL8W5kwemY0lICRZeB/TyhT8O+XyZAgN00YwzxzAegY4T70q5fsJGBK4eNaZAAtm3GlWWDyedi12ccRrc+LVbEbdos2PQZ8+KlyMVM44DVmqC1adMW7EfHhb7H5WWDJoqDNnQYs76ybLDtM0795NkxDDQYOrT162IuiysHOxyutYGDWobIsjQ3/9va7fpsWSVjEyZ/uld6H9j0ueyLgdNlwsazVi6PDbrYM06XDRYHm+LrPbUFAw0HzcwYKgm7aTaXgrYEENzydNkBqcgVWgoN2/cxgBA6J33Gfuk2R8smrVYApj6waTP2Y1rtX27sBsUkCy7Pm9iX0WfRKCg43EJ4YbvHYWnYyMBezYVDsHbQFkKxy8BhmSJgnWNgH6DArs9YvLbJ6ZjSLcvxNcV2WrCVGZcOO4ujIm9Qtw76tZu+4PQwhfsNoli02fg6+Yri3HTAQbvxShUr+Obv3E5Gwyx6eNPuFPNoxpumgUuHDS6Nre2vvuB3r9yE+WDK0nZzQFevgt0GtDVc3m/QMHB+s8fUjIds2ohnjiF48PIOy76D9cOkKdpGsZ8ns3oOjewwFasdtT9sMPWBK4cJ0xjY6mKKk9NZgLsh2J4/4MrY4hd/6Xa8/9v/Ee677z5cvHgRn6w9KkGy+/0e73znO/GKV7wiPmut4a677sJb3/rWq64/PT3F6elp/H3fffcBAJ5204dx0wXb7BemU1zop7jQLkMEuNCuGAMHCxY1zOiYtWFBC98fYL7DjSzmy3MhzSJKW5kxiR2bXbXTa7XAHKbXfNI54NvVBQ0+yXPB554B2Nd6ZoueXPsZZ9/PxrHx8LHVfbIeF98jZZQRL1De0/yl4neJ962lDrEy4Y1yXw334WcpFPPX0JANaZAol7Uzf6/+oWe+E0TfcgUF4xOsppQZyXuEfCuTpz5B/3gPkIweq++uvp6f13m+1mrLNa4TrMdb55d9PPsZyjjShQSfK6BS1SigtPYp37+eS7nGrJ79pM7vtVD8teaSaxCxxmfurHMycPVc1jdcS2/QM9fXubsWPdd76rvq56FoYk0vbLzmLC2f7Qeucc/ZJme+q0bms/07O8aH0j6RrnV2n2C1tnkv+zGg8e5rjb8VTnt2TYBrr2k+Q6NH17pv4BPPHbCmrWut6Sd6/1kawTWuQbk2/529PihwuhN8bNnigI6hwKXtztLVIQZE2owJCxY03Lecg9yk2MiM83LIIHZ/K4shjpvEUpiLBLg0tgGidu3g41LM2vHxcWLvh+CgE25pl3BTu4KpyMrKOYcCHz48Du/bnbOxPATbyKMCUH77t38by7LgtttuW31+22234X/9r/911fWvetWr8A/+wT+46vP/7wU/8XB18diO7diO7diO7dg+q+1DAH4BAPDAAw/g5ptv/qRX3xBpxq94xSvwspe9LP6+99578eQnPxkf/vCHP+UAj+3/vd1///144hOfiF//9V//lKa4Y/t/a8c5fmTacZ4fmXac54e/3ehzrKp44IEH8IQnPOFTXvuoAJRbb70VvXd85CMfWX3+kY98BLfffvtV1+92O+x2u6s+v/nmm2/IBbrR2sWLF4/z/DC34xw/Mu04z49MO87zw99u5Dl+qIaFRyWLZ7vd4jnPeQ7uvvvu+GyMgbvvvht33nnno9GlYzu2Yzu2Yzu2Y7uO2qPm4nnZy16GF73oRXjuc5+L5z3vefhn/+yf4cEHH8Q3f/M3P1pdOrZjO7ZjO7ZjO7brpD1qAOUbvuEb8Fu/9Vv4nu/5Htxzzz348i//crzhDW+4KnD2Wm232+GVr3zlNd0+x/bZa8d5fvjbcY4fmXac50emHef54W+fS3P8qNVBObZjO7ZjO7ZjO7Zj+0Tthj6L59iO7diO7diO7dh+b7YjQDm2Yzu2Yzu2Yzu2664dAcqxHduxHduxHduxXXftCFCO7diO7diO7diO7bprNyRAec1rXoOnPOUpODk5wR133IG3v/3tj3aXrsv2qle9Cl/5lV+JxzzmMXj84x+PP/Nn/gw++MEPrq65cuUKXvziF+Nxj3scLly4gD//5//8VQX0PvzhD+MFL3gBzp8/j8c//vF4+ctfjnmeV9f89E//NL7iK74Cu90OX/IlX4If+qEferiHd922V7/61RARvPSlL43PjvP8mbff+I3fwF/+y38Zj3vc43Du3Dk861nPwjve8Y74XlXxPd/zPfiCL/gCnDt3DnfddRd+9Vd/dfWMj33sY3jhC1+Iixcv4pZbbsFf+2t/DR//+MdX1/zSL/0S/vAf/sM4OTnBE5/4RHzf933fIzK+66Ety4Lv/u7vxlOf+lScO3cOv+/3/T78w3/4D1fnphzn+dNvP/uzP4s/+Sf/JJ7whCdARPATP/ETq+8fyTl93eteh6c//ek4OTnBs571LLz+9a//rI/3s9b0Bmuvfe1rdbvd6r//9/9ef/mXf1n/+l//63rLLbfoRz7ykUe7a9dde/7zn68/+IM/qO973/v03e9+t/6JP/En9ElPepJ+/OMfj2u+5Vu+RZ/4xCfq3Xffre94xzv0q77qq/Srv/qr4/t5nvWZz3ym3nXXXfqud71LX//61+utt96qr3jFK+KaD33oQ3r+/Hl92ctepu9///v1+7//+7X3rm94wxse0fFeD+3tb3+7PuUpT9E/9If+kL7kJS+Jz4/z/Jm1j33sY/rkJz9Z/8pf+Sv6tre9TT/0oQ/pT/3UT+n//t//O6559atfrTfffLP+xE/8hL7nPe/RP/Wn/pQ+9alP1cuXL8c1f/yP/3H9si/7Mv35n/95/Z//83/ql3zJl+g3fuM3xvf33Xef3nbbbfrCF75Q3/e+9+mP/MiP6Llz5/Tf/Jt/84iO99Fq3/u936uPe9zj9Cd/8if1137t1/R1r3udXrhwQf/5P//ncc1xnj/99vrXv16/67u+S3/sx35MAeiP//iPr75/pOb0537u57T3rt/3fd+n73//+/Xv//2/r5vNRt/73vc+7HPw/9JuOIDyvOc9T1/84hfH38uy6BOe8AR91ate9Sj26sZoH/3oRxWA/szP/Iyqqt5777262Wz0da97XVzzgQ98QAHoW9/6VlW1jdVa03vuuSeu+YEf+AG9ePGinp6eqqrqd3zHd+gznvGM1bu+4Ru+QZ///Oc/3EO6rtoDDzygT3va0/SNb3yj/tE/+kcDoBzn+TNvf+/v/T392q/92k/4/RhDb7/9dv3H//gfx2f33nuv7nY7/ZEf+RFVVX3/+9+vAPQXfuEX4pr/8T/+h4qI/sZv/Iaqqv6rf/Wv9LGPfWzMOd/9pV/6pZ/tIV2X7QUveIH+1b/6V1ef/bk/9+f0hS98oaoe5/mz0c4ClEdyTv/iX/yL+oIXvGDVnzvuuEP/5t/8m5/VMX622g3l4tnv93jnO9+Ju+66Kz5rreGuu+7CW9/61kexZzdGu++++wAAn/d5nwcAeOc734nD4bCaz6c//el40pOeFPP51re+Fc961rNWBfSe//zn4/7778cv//IvxzX1Gbzmc21NXvziF+MFL3jBVXNxnOfPvP3X//pf8dznPhd/4S/8BTz+8Y/Hs5/9bPy7f/fv4vtf+7Vfwz333LOan5tvvhl33HHHao5vueUWPPe5z41r7rrrLrTW8La3vS2u+SN/5I9gu93GNc9//vPxwQ9+EL/7u7/7cA/zUW9f/dVfjbvvvhu/8iu/AgB4z3veg7e85S34+q//egDHeX442iM5pzcaD7mhAMpv//ZvY1mWq6rN3nbbbbjnnnsepV7dGG2MgZe+9KX4mq/5Gjzzmc8EANxzzz3Ybre45ZZbVtfW+bznnnuuOd/87pNdc//99+Py5csPx3Cuu/ba174Wv/iLv4hXvepVV313nOfPvH3oQx/CD/zAD+BpT3safuqnfgrf+q3fim//9m/Hf/gP/wFAztEn4w333HMPHv/4x6++n6YJn/d5n/dprcPv5fad3/md+Et/6S/h6U9/OjabDZ797GfjpS99KV74whcCOM7zw9EeyTn9RNdcr3P+qJW6P7ZHtr34xS/G+973PrzlLW95tLvye679+q//Ol7ykpfgjW98I05OTh7t7vyebGMMPPe5z8U/+kf/CADw7Gc/G+973/vwr//1v8aLXvSiR7l3v3faj/7oj+KHf/iH8Z/+03/CM57xDLz73e/GS1/6UjzhCU84zvOxPeLthrKg3Hrrrei9X5X98JGPfAS33377o9Sr679927d9G37yJ38Sb37zm/FFX/RF8fntt9+O/X6Pe++9d3V9nc/bb7/9mvPN7z7ZNRcvXsS5c+c+28O57to73/lOfPSjH8VXfMVXYJomTNOEn/mZn8G/+Bf/AtM04bbbbjvO82fYvuALvgB/8A/+wdVnf+AP/AF8+MMfBpBz9Ml4w+23346PfvSjq+/necbHPvaxT2sdfi+3l7/85WFFedaznoVv+qZvwt/5O38nLIPHef7st0dyTj/RNdfrnN9QAGW73eI5z3kO7r777vhsjIG7774bd95556PYs+uzqSq+7du+DT/+4z+ON73pTXjqU5+6+v45z3kONpvNaj4/+MEP4sMf/nDM55133on3vve9q83xxje+ERcvXgyBceedd66ewWs+V9bk677u6/De974X7373u+Pnuc99Ll74whfGv4/z/Jm1r/mar7kqRf5XfuVX8OQnPxkA8NSnPhW33377an7uv/9+vO1tb1vN8b333ot3vvOdcc2b3vQmjDFwxx13xDU/+7M/i8PhENe88Y1vxJd+6ZfisY997MM2vuulXbp0Ca2txULvHWMMAMd5fjjaIzmnNxwPebSjdD/d9trXvlZ3u53+0A/9kL7//e/Xv/E3/obecsstq+yHY7P2rd/6rXrzzTfrT//0T+tv/uZvxs+lS5fimm/5lm/RJz3pSfqmN71J3/GOd+idd96pd955Z3zP9Nc/9sf+mL773e/WN7zhDfr5n//510x/ffnLX64f+MAH9DWvec3nTPrrJ2o1i0f1OM+faXv729+u0zTp937v9+qv/uqv6g//8A/r+fPn9T/+x/8Y17z61a/WW265Rf/Lf/kv+ku/9Ev6p//0n75mquazn/1sfdvb3qZvectb9GlPe9oqVfPee+/V2267Tb/pm75J3/e+9+lrX/taPX/+/O/Z9Nez7UUvepF+4Rd+YaQZ/9iP/Zjeeuut+h3f8R1xzXGeP/32wAMP6Lve9S5917vepQD0n/7Tf6rvete79P/+3/+rqo/cnP7cz/2cTtOk/+Sf/BP9wAc+oK985SuPacaf7fb93//9+qQnPUm3260+73nP05//+Z9/tLt0XTYA1/z5wR/8wbjm8uXL+rf+1t/Sxz72sXr+/Hn9s3/2z+pv/uZvrp7zf/7P/9Gv//qv13Pnzumtt96qf/fv/l09HA6ra9785jfrl3/5l+t2u9Uv/uIvXr3jc7GdBSjHef7M23/7b/9Nn/nMZ+put9OnP/3p+m//7b9dfT/G0O/+7u/W2267TXe7nX7d132dfvCDH1xd8zu/8zv6jd/4jXrhwgW9ePGifvM3f7M+8MADq2ve85736Nd+7dfqbrfTL/zCL9RXv/rVD/vYrpd2//3360te8hJ90pOepCcnJ/rFX/zF+l3f9V2r1NXjPH/67c1vfvM1efGLXvQiVX1k5/RHf/RH9ff//t+v2+1Wn/GMZ+h//+///WEb92faRLWUCDy2Yzu2Yzu2Yzu2Y7sO2g0Vg3Jsx3Zsx3Zsx3ZsnxvtCFCO7diO7diO7diO7bprR4BybMd2bMd2bMd2bNddOwKUYzu2Yzu2Yzu2Y7vu2hGgHNuxHduxHduxHdt1144A5diO7diO7diO7diuu3YEKMd2bMd2bMd2bMd23bUjQDm2Yzu2Yzu2Yzu2664dAcqxHduxHduxHduxXXftCFCO7diO7diO7diO7bprR4BybMd2bMd2bMd2bNddOwKUYzu2Yzu2Yzu2Y7vu2v8fqRc6FV+bWnoAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.imshow(test_load['ece'][4], aspect='auto', origin='lower')\n", - "plt.show()" - ] } ], "metadata": { From 9c8a50cca7a7fc679e0e7e70e896e363acd83f4b Mon Sep 17 00:00:00 2001 From: Nathaniel Chen Date: Thu, 10 Jul 2025 21:57:28 -0400 Subject: [PATCH 026/103] Enhance README.md with project purpose, team members, and setup instructions. Remove deprecated logging configuration file and update dataset preparation README for improved clarity and modular structure. --- README.md | 20 +++++- src/fusionaihub/datasets/prepare/README.md | 32 ++++------ .../datasets/prepare/logging_config.py | 64 ------------------- 3 files changed, 29 insertions(+), 87 deletions(-) delete mode 100644 src/fusionaihub/datasets/prepare/logging_config.py diff --git a/README.md b/README.md index c0436b3..88d3d3c 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,24 @@ # FusionAIHub +A general fusion hub for the Princeton cluster designed to standardize fusion machine learning processes for the plasma control group at Princeton University. -This will be the readme of the FusionAIHub. +## Purpose -When you are in the root directory, you can run the following command to activate the virtual environmnent: -``` +This repository serves as a centralized platform for fusion-related machine learning workflows, providing standardized tools, processes, and methodologies for plasma control research at Princeton. + +## Team + +This project is led by: +- **Egemen Kolemen** +- **Azarakash Jalalvand** +- **Peter Steiner** +- **Kouroche Bouichat** +- **Nathaniel Chen** + +## Setup + +When you are in the root directory, you can run the following command to activate the virtual environment: +```bash module load anaconda3/2024.10 python -m venv .venv source .venv/bin/activate diff --git a/src/fusionaihub/datasets/prepare/README.md b/src/fusionaihub/datasets/prepare/README.md index 7394c25..b194a3b 100644 --- a/src/fusionaihub/datasets/prepare/README.md +++ b/src/fusionaihub/datasets/prepare/README.md @@ -9,16 +9,16 @@ The pipeline has been refactored into a modular structure: ``` src/fusionaihub/datasets/prepare/ ├── config/ -│ └── default.yaml # Default configuration file -├── core/ # Core processing modules -│ ├── __init__.py # Package initialization -│ ├── signal_processing.py # Signal resampling and transformation -│ ├── data_extraction.py # Data extraction and alignment -│ ├── sample_processing.py # Sample splitting and transformation -│ ├── dataset_utils.py # Dataset utilities and indexing -│ └── shot_processing.py # Shot-level processing orchestration +│ ├── default.yaml # Default configuration file +│ └── raw.yaml # Raw signal configuration +├── __init__.py # Package initialization +├── signal_processing.py # Signal resampling and transformation +├── data_extraction.py # Data extraction and alignment +├── sample_processing.py # Sample splitting and transformation +├── dataset_utils.py # Dataset utilities and indexing +├── shot_processing.py # Shot-level processing orchestration ├── prepare_dataset.py # Main executable script -├── prepare2.py # Original monolithic script (legacy) +├── __main__.py # Module entry point for direct execution └── README.md # This file ``` @@ -87,10 +87,10 @@ Each signal is configured as a list: `[signal_name, abbreviation, should_transfo ### Command Line ```bash # Use default configuration -python -m src.fusionaihub.datasets.prepare.prepare_dataset +python -m src.fusionaihub.datasets.prepare # Use custom configuration file -python -m src.fusionaihub.datasets.prepare.prepare_dataset --config /path/to/config.yaml +python -m src.fusionaihub.datasets.prepare --config /path/to/config.yaml ``` ### Programmatic Usage @@ -152,15 +152,7 @@ Each `.pkl` file contains a dictionary with signal arrays, where transformed sig 4. **Missing Signal Handling**: Automatically creates placeholder data for missing signals 5. **Flexible Transformations**: Configurable per-signal transformation (STFT or raw) 6. **Train/Validation Split**: Automatic dataset splitting with indexing - -## Migration from Legacy Code - -If you were using the original `prepare2.py`, the new modular structure provides the same functionality with improved organization: - -- Configuration moved from Python dictionary to YAML file -- Functions split into logical modules -- Same processing pipeline and output format -- Command-line interface added for easier use +7. **Multiple Configurations**: Includes default and raw signal configurations ## Dependencies diff --git a/src/fusionaihub/datasets/prepare/logging_config.py b/src/fusionaihub/datasets/prepare/logging_config.py deleted file mode 100644 index 20ddf51..0000000 --- a/src/fusionaihub/datasets/prepare/logging_config.py +++ /dev/null @@ -1,64 +0,0 @@ -""" -Logging configuration for fusion dataset preparation. - -This module provides centralized logging configuration for the signal processing -and dataset preparation pipeline. -""" - -import logging -import sys -from typing import Optional - - -def setup_logging( - level: str = "INFO", - format_string: Optional[str] = None, - logger_name: str = "fusionaihub.datasets.prepare" -) -> logging.Logger: - """ - Set up logging configuration for the dataset preparation pipeline. - - Args: - level: Logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL) - format_string: Custom format string for log messages - logger_name: Name for the logger - - Returns: - Configured logger instance - """ - if format_string is None: - format_string = "%(asctime)s - %(name)s - %(levelname)s - %(message)s" - - # Create logger - logger = logging.getLogger(logger_name) - logger.setLevel(getattr(logging, level.upper())) - - # Remove existing handlers to avoid duplicates - for handler in logger.handlers[:]: - logger.removeHandler(handler) - - # Create console handler - console_handler = logging.StreamHandler(sys.stdout) - console_handler.setLevel(getattr(logging, level.upper())) - - # Create formatter - formatter = logging.Formatter(format_string) - console_handler.setFormatter(formatter) - - # Add handler to logger - logger.addHandler(console_handler) - - return logger - - -def get_logger(name: str) -> logging.Logger: - """ - Get a logger instance for a specific module. - - Args: - name: Module name (typically __name__) - - Returns: - Logger instance - """ - return logging.getLogger(f"fusionaihub.datasets.prepare.{name}") \ No newline at end of file From 5aaff62b3787c9ef083d11d0e28e9cebdfb56493 Mon Sep 17 00:00:00 2001 From: Nathaniel Chen Date: Thu, 10 Jul 2025 21:57:59 -0400 Subject: [PATCH 027/103] Update dataset preparation README to reflect changes in output file formats from .pkl to .joblib and .csv for dataset indexing, enhancing clarity on the output structure. --- src/fusionaihub/datasets/prepare/README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/fusionaihub/datasets/prepare/README.md b/src/fusionaihub/datasets/prepare/README.md index b194a3b..0903a2d 100644 --- a/src/fusionaihub/datasets/prepare/README.md +++ b/src/fusionaihub/datasets/prepare/README.md @@ -131,18 +131,18 @@ The pipeline produces the following output structure: ``` output_dir/ ├── train/ -│ ├── 170000_0.pkl # Processed samples -│ ├── 170001_0.pkl +│ ├── 170000_0.joblib # Processed samples +│ ├── 170001_0.joblib │ ├── ... -│ └── index.pkl # Dataset index +│ └── index.csv # Dataset index └── valid/ - ├── 170010_0.pkl - ├── 170011_0.pkl + ├── 170010_0.joblib + ├── 170011_0.joblib ├── ... - └── index.pkl + └── index.csv ``` -Each `.pkl` file contains a dictionary with signal arrays, where transformed signals have STFT representation and non-transformed signals are resampled to match dimensions. +Each `.joblib` file contains a dictionary with signal arrays, where transformed signals have STFT representation and non-transformed signals are resampled to match dimensions. ## Key Features From aff09d3296b6a13a831e3b294274c8bc73049301 Mon Sep 17 00:00:00 2001 From: Nathaniel Chen <79379842+nathanchenseanwalter@users.noreply.github.com> Date: Fri, 11 Jul 2025 09:40:29 -0400 Subject: [PATCH 028/103] Update README.md --- README.md | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 88d3d3c..18d92ed 100644 --- a/README.md +++ b/README.md @@ -6,15 +6,6 @@ A general fusion hub for the Princeton cluster designed to standardize fusion ma This repository serves as a centralized platform for fusion-related machine learning workflows, providing standardized tools, processes, and methodologies for plasma control research at Princeton. -## Team - -This project is led by: -- **Egemen Kolemen** -- **Azarakash Jalalvand** -- **Peter Steiner** -- **Kouroche Bouichat** -- **Nathaniel Chen** - ## Setup When you are in the root directory, you can run the following command to activate the virtual environment: @@ -25,4 +16,12 @@ source .venv/bin/activate pip install --upgrade pip pip install uv uv sync -``` \ No newline at end of file +``` + +## Contact + +For more information, please contact +- **Azarakash Jalalvand** +- **Peter Steiner** +- **Kouroche Bouichat** +- **Nathaniel Chen** From c67f69870696282eff410ec28660022e6368fbf5 Mon Sep 17 00:00:00 2001 From: Nathaniel Chen <79379842+nathanchenseanwalter@users.noreply.github.com> Date: Fri, 11 Jul 2025 09:42:16 -0400 Subject: [PATCH 029/103] Update README.md --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 18d92ed..1450255 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,9 @@ This repository serves as a centralized platform for fusion-related machine lear When you are in the root directory, you can run the following command to activate the virtual environment: ```bash +git clone git@github.com:PlasmaControl/FusionAIHub.git +cd FusionAIHub +git switch foundation25 module load anaconda3/2024.10 python -m venv .venv source .venv/bin/activate From 9202eaa5309da64ded8a231064318fec855d1a67 Mon Sep 17 00:00:00 2001 From: Nathaniel Chen <79379842+nathanchenseanwalter@users.noreply.github.com> Date: Fri, 11 Jul 2025 09:42:35 -0400 Subject: [PATCH 030/103] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 1450255..67bf10b 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,6 @@ This repository serves as a centralized platform for fusion-related machine lear ## Setup -When you are in the root directory, you can run the following command to activate the virtual environment: ```bash git clone git@github.com:PlasmaControl/FusionAIHub.git cd FusionAIHub From f8eac8c1ea30fbf6eec494b5c16905e58f86301b Mon Sep 17 00:00:00 2001 From: Nathaniel Chen <79379842+nathanchenseanwalter@users.noreply.github.com> Date: Fri, 11 Jul 2025 09:42:49 -0400 Subject: [PATCH 031/103] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 67bf10b..c8b2ba6 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ A general fusion hub for the Princeton cluster designed to standardize fusion ma This repository serves as a centralized platform for fusion-related machine learning workflows, providing standardized tools, processes, and methodologies for plasma control research at Princeton. ## Setup - +In your scratch directory, run ```bash git clone git@github.com:PlasmaControl/FusionAIHub.git cd FusionAIHub From f6e301fcda2cfb0cd38305c0f28f11c5081664f1 Mon Sep 17 00:00:00 2001 From: Nathaniel Chen Date: Fri, 11 Jul 2025 12:56:21 -0400 Subject: [PATCH 032/103] Refactor signal configuration in YAML and update related processing scripts to enhance clarity and functionality. Adjusted execution counts in Jupyter notebooks and improved handling of missing signals. Updated README.md to include a to-do for changing YAML loading to hydra. --- notebooks/accessing_data.ipynb | 37 +++--- notebooks/data_preparation.ipynb | 106 +++++++++++------- src/fusionaihub/datasets/prepare/README.md | 5 +- .../datasets/prepare/config/default.yaml | 35 ++++-- .../datasets/prepare/prepare_dataset.py | 22 ++-- .../datasets/prepare/shot_processing.py | 29 ++--- 6 files changed, 150 insertions(+), 84 deletions(-) diff --git a/notebooks/accessing_data.ipynb b/notebooks/accessing_data.ipynb index 86fbc6f..be68705 100644 --- a/notebooks/accessing_data.ipynb +++ b/notebooks/accessing_data.ipynb @@ -13,19 +13,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, "id": "836b5c67", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import joblib\n", - "import matplotlib.pyplot as plt" + "import matplotlib.pyplot as plt\n", + "import numpy as np" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "id": "d564239f", "metadata": {}, "outputs": [], @@ -35,7 +36,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 20, "id": "434b288f", "metadata": {}, "outputs": [ @@ -43,18 +44,19 @@ "name": "stdout", "output_type": "stream", "text": [ - "mhr (8, 513, 13195)\n", - "ece (48, 513, 13195)\n", - "co2 (4, 513, 13195)\n", - "gas (5, 1, 13195)\n", - "ech (11, 1, 13195)\n", - "pin (8, 1, 13195)\n", - "tin (8, 1, 13195)\n" + "/scratch/gpfs/EKOLEMEN/hackathon/foundation25/train/175210_0.joblib\n", + "mhr (8, 513, 12028)\n", + "ece (48, 513, 12028)\n", + "co2 (4, 513, 12028)\n", + "gas (5, 1, 12028)\n", + "ech (11, 1, 12028)\n", + "pin (8, 1, 12028)\n", + "tin (8, 1, 12028)\n" ] }, { "data": { - "image/png": "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2Oz+ddy4cSLSurF8+umn5Stf+YrE43Hp37+/vPLKKy3W79ZwpNhu27btM49tCxcuDOtgbEWUSGT4cSIiIiJqs9rMd+yIiIiI6MiY2BERERHlCCZ2RERERDmCiR0RERFRjmBiR0RERJQjmNgRERER5QgmdkREREQ5gokdERERUY5gYkdERESUI5jYEREREeUIJnZEREREOYKJHREREVGOYGJHRERElCOY2BERERHlCCZ2RERERDmCiR0RERFRjmBiR0RERJQjmNgRER2lnj174tprr812M4iIPhMTOyIiIqIcoUREst0IIqK2oKGhAVprxGKxbDeFiKhZTOyIiIiIcgRvxRLRl96vfvUrKKWwadMmjBo1CoWFhejUqRMmTJiA+vr6sFzT79g9/vjjUEph2bJlmDRpEk4++WS0a9cOV155JT766KMs9ISIvuyY2BER+UaNGoX6+npMnz4dl1xyCR588EHceOONn/u5W2+9FWvXrsW0adNw880346WXXsItt9zSCi0mIsrkZrsBREQnil69euGFF14AAIwfPx6FhYV46KGH8Itf/AJnnnnmZ36uU6dO+Nvf/galFADAGIMHH3wQNTU1KCoqapW2ExEBvGJHRBQaP358xutbb70VADB37twjfu7GG28MkzoAuOCCC+B5HrZv3378G0lEdARM7IiIfH369Ml4fdppp0Frjffff/+In+vevXvG644dOwIA9u3bd1zbR0T0eZjYERF9huhVuCNxHKfZ9znoABG1NiZ2RES+LVu2ZLx+7733YIxBz549s9MgIqIviIkdEZFv1qxZGa9nzpwJABgxYkQ2mkNE9IXxqVgiIt+2bdtw2WWX4eKLL0ZVVRX+/Oc/4/vf/z7OOuusbDeNiOio8IodEZHvqaeeQiKRwO23345XXnkFt9xyC/7nf/4n280iIjpq/EkxIvrS+9WvfoW7774bH330ETp37pzt5hARHTNesSMiIiLKEUzsiIiIiHIEEzsiIiKiHMHv2BERERHlCF6xIyIiIsoRTOyIiIiIckSbHKDYGINdu3ahQ4cOR/1bjkRERERtkYigrq4OZWVl0PrI1+TaZGK3a9cudOvWLdvNICIiImo1O3fuRNeuXY9Ypk0mdh06dAAAfLPLtXB1PMutoVaXiMF9uBEFbiNqk3kocBthRCFlHOS5SaSMPZs5lIqhXawRAFDX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", + "image/png": "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3/tm15w+fRpXXXUVzjnnHBw5cgTPfOYzzygQfcMNN+CKK67AoUOHcO655+JFL3oRxnGcXfMbv/Eb+PzP/3xsbW3hMY95DH76p3/6k929T3l52ctehlIKnv/85/tny3jfs/LBD34Q3/AN34BzzjkHOzs7uPjii/G7v/u7/r2I4KUvfSke9rCHYWdnB5dddhn++I//eHaPj3zkI7jyyitx9OhRnH322XjOc56DO+64Y3bN//k//wd/82/+TWxvb+PCCy/Ey1/+8nulf59KMk0Tvvd7vxePfvSjsbOzg0//9E/HD/zAD8zOuVzG+xOT3/zN38Tf+Tt/BxdccAFKKXjTm940+/7eHN83vOENeNzjHoft7W1cfPHFeMtb3nKP9/e+lo823pvNBi9+8Ytx8cUX4/Dhw7jgggvwTd/0Tbjppptm9/iUGW+5H8nrXvc6Wa/X8lM/9VPynve8R/7xP/7HcvbZZ8vNN998XzftU1ouv/xyee1rXyvvfve75Z3vfKd85Vd+pTzykY+UO+64w6/5tm/7Nrnwwgvl2muvld/93d+Vpz71qfKFX/iF/v04jvKEJzxBLrvsMvn93/99ectb3iIPechD5CUveYlf84EPfEAOHTokL3zhC+W9732v/NiP/Zi01uSXf/mX79X+firJ29/+drnooovkcz7nc+R5z3uef76M9z0nH/nIR+RRj3qUfPM3f7P8zu/8jnzgAx+QX/mVX5E/+ZM/8Wte9rKXybFjx+RNb3qT/MEf/IH83b/7d+XRj3603HXXXX7N3/7bf1s+93M/V972trfJ//pf/0se85jHyNd//df79ydOnJDzzjtPrrzySnn3u98tP//zPy87OzvyEz/xE/dqf+9r+aEf+iE555xz5M1vfrP86Z/+qbzhDW+QI0eOyL//9//er1nG+xOTt7zlLfIv/+W/lF/4hV8QAPLGN75x9v29Nb7/+3//b2mtyctf/nJ573vfK9/zPd8jq9VK3vWud33Sx+DelI823rfddptcdtll8vrXv17+6I/+SK677jp58pOfLE960pNm9/hUGe/7Fah78pOfLFdddZX/e5omueCCC+Tqq6++D1t1/5NbbrlFAMhb3/pWEdFFu1qt5A1veINf84d/+IcCQK677joR0UVfa5Xjx4/7Na9+9avl6NGjsru7KyIi3/Vd3yWf/dmfPXvWs571LLn88ss/2V36lJTbb79dPuMzPkOuueYa+Vt/6285qFvG+56VF7/4xfI3/sbf+Eu/773L+eefLz/8wz/sn912222ytbUlP//zPy8iIu9973sFgLzjHe/wa37pl35JSinywQ9+UEREfvzHf1we9KAH+fjz2Y997GPv6S59SssVV1wh//Af/sPZZ894xjPkyiuvFJFlvO9p2Q8y7s3x/bqv+zq54oorZu15ylOeIt/6rd96j/bxU0nuDkTvl7e//e0CQP78z/9cRD61xvt+437d29vD9ddfj8suu8w/q7Xisssuw3XXXXcftuz+JydOnAAAPPjBDwYAXH/99dhsNrOxfdzjHodHPvKRPrbXXXcdLr744lmB6MsvvxwnT57Ee97zHr8m34PXHNT5ueqqq3DFFVecMSbLeN+z8j/+x//AJZdcgq/92q/Fueeei8/7vM/DT/7kT/r3f/qnf4rjx4/PxurYsWN4ylOeMhvvs88+G5dccolfc9lll6HWit/5nd/xa572tKdhvV77NZdffjne97734dZbb/1kd/NTRr7wC78Q1157Ld7//vcDAP7gD/4Av/Vbv4WnP/3pAJbx/mTLvTm+yx5z93LixAmUUnD22WcD+NQa7/sNqPvwhz+MaZrOOHXivPPOw/Hjx++jVt3/pPeO5z//+fiiL/oiPOEJTwAAHD9+HOv12hcoJY/t8ePH73bs+d1Hu+bkyZO46667Phnd+ZSV173udfi93/s9XH311Wd8t4z3PSsf+MAH8OpXvxqf8RmfgV/5lV/Bt3/7t+Of/bN/hp/5mZ8BEOP10faO48eP49xzz519PwwDHvzgB39Mc3IQ5Lu/+7vxD/7BP8DjHvc4rFYrfN7nfR6e//zn48orrwSwjPcnW+7N8f3LrjnI43/69Gm8+MUvxtd//dfj6NGjAD61xvs+OSZskftOrrrqKrz73e/Gb/3Wb93XTXnAyo033ojnPe95uOaaa7C9vX1fN+cBL713XHLJJfg3/+bfAAA+7/M+D+9+97vxmte8Bs9+9rPv49Y98OS//Jf/gp/92Z/Fz/3cz+GzP/uz8c53vhPPf/7zccEFFyzjvcgDWjabDb7u674OIoJXv/rV93Vz7lbuN0zdQx7yELTWzsgQvPnmm3H++effR626f8lzn/tcvPnNb8av//qv4xGPeIR/fv7552Nvbw+33Xbb7Po8tueff/7djj2/+2jXHD16FDs7O/d0dz5l5frrr8ctt9yCz//8z8cwDBiGAW9961vxoz/6oxiGAeedd94y3vegPOxhD8PjH//42Wef9VmfhRtuuAFAjNdH2zvOP/983HLLLbPvx3HERz7ykY9pTg6CvOhFL3K27uKLL8Y3fuM34gUveIGz0st4f3Ll3hzfv+yagzj+BHR//ud/jmuuucZZOuBTa7zvN6BuvV7jSU96Eq699lr/rPeOa6+9Fpdeeul92LJPfRERPPe5z8Ub3/hG/Nqv/Roe/ehHz75/0pOehNVqNRvb973vfbjhhht8bC+99FK8613vmi1cLmwq1EsvvXR2D15z0Obny77sy/Cud70L73znO/3PJZdcgiuvvNL/voz3PSdf9EVfdEaJnve///141KMeBQB49KMfjfPPP382VidPnsTv/M7vzMb7tttuw/XXX+/X/Nqv/Rp673jKU57i1/zmb/4mNpuNX3PNNdfgsY99LB70oAd90vr3qSanTp1CrXPV0Vr7/7P37tGWXVWZ+Lf2OffeSpFUQhJSIUB4KBogQR4hUIK2Q9KkIcpTUEZERIa0GBCIAtIK/NTWZCADbBDxMVqgh2gEGqRBRDEEFAgBIgFCIGLzSJpQAR9JBUiq6p49f3/s9c31zbl3RQNJVarYc4yqe84+6zHXXPO9Hht93wOY6X1rw/6k76xjBqBD97nPfQ5/+7d/i2OOOSb8fpui93/4SMVtAM4//3zb2Niw17/+9Xb55ZfbM57xDDvqqKPCCcEZxvDMZz7TjjzySHvf+95nX/nKV/zfN7/5TS/zcz/3c3biiSfae9/7XvvYxz5mO3bssB07dvjvvGLjEY94hF166aX27ne/2+5whztMXrHx/Oc/3z7zmc/Ya17zmu/IKzamQE+/ms30viXhIx/5iC2XS/vN3/xN+9znPmdvfOMbbevWrfYnf/InXua8886zo446yt7+9rfbJz/5SXvMYx4zeQXE/e9/f7v44ovtAx/4gN3znvcMVxJce+21tn37dnvKU55il112mZ1//vm2devW74grNhSe+tSn2p3udCe/0uStb32rHXvssfaCF7zAy8z0/vbg+uuvt49//OP28Y9/3ADYK17xCvv4xz/upy33F30/+MEP2nK5tJe//OX2mc98xl760pceklea3BS99+zZY49+9KPtzne+s1166aXBhupJ1tsKvQ8qp87M7NWvfrWdeOKJtr6+bqeddpp9+MMfPtAo3eYBwOS/173udV7mhhtusJ//+Z+329/+9rZ161Z73OMeZ1/5yldCO1/84hftkY98pB122GF27LHH2i/+4i/a3r17Q5kLL7zQ7ne/+9n6+rrd4x73CH18J0N26mZ637Lwjne8w04++WTb2Niwk046yf7wD/8w/N73vb34xS+27du328bGhj384Q+3K664IpT5l3/5F3vyk59shx9+uG3bts2e9rSn2fXXXx/KfOITn7CHPexhtrGxYXe6053svPPOu9XHdluDXbt22XOe8xw78cQTbcuWLXaPe9zDfuVXfiUYuJne3x5ceOGFkzr7qU99qpntX/q+6U1vsu/5nu+x9fV1u8997mN/+Zd/eauN+0DBTdH7C1/4wj5t6IUXXuht3FboXczkGvAZZphhhhlmmGGGGQ5KOGj21M0wwwwzzDDDDDPMsG+YnboZZphhhhlmmGGGQwBmp26GGWaYYYYZZpjhEIDZqZthhhlmmGGGGWY4BGB26maYYYYZZphhhhkOAZiduhlmmGGGGWaYYYZDAGanboYZZphhhhlmmOEQgNmpm2GGGWaYYYYZZjgEYHbqZphhhhlmmGGGGQ4BmJ26GWaYYYYZZphhhkMAZqduhhlmmGGGGWaY4RCA2ambYYYZZphhhhlmOARgdupmmGGGGWaYYYYZDgGYnboZZphhhhlmmGGGQwBmp26GGWaYYYYZZpjhEIDZqZthhhlmmGGGGWY4BGB26maYYYYZZphhhhkOAZiduhlmmGGGGWaYYYZDAGanboYZZviOhKuuugq/9mu/htNOOw23v/3tceyxx+KHfuiH8Ld/+7c3u60vf/nLeNKTnoSjjjoK27Ztw2Me8xh8/vOfvxWwnmGGGWbYNxQzswONxAwzzDDD/obf/d3fxQte8AI89rGPxUMf+lBsbm7if/2v/4V/+Id/wB//8R/jaU972n+ona9//et4wAMegOuuuw6/+Iu/iLW1Nbzyla+EmeHSSy/FMccccyuPZIYZZphhgNmpm2GGGb4j4dOf/jS2b9+OY4891p/t3r0b97vf/fD1r38dV1111U3W/8Y3voHb3e52eNnLXoYXvvCF+MhHPoIHPehBAIDPfvazOPnkk/GCF7wAv/Vbv3WrjmOGGWaYgTAvv84wwwwHHXz5y1/G05/+dJxwwgnY2NjA3e9+dzzzmc/Enj17AACf//zn8cQnPhFHH300tm7dioc85CH4y7/8y9DGfe5zn+DQAcDGxgYe9ahH4f/9v/+H66+/3p//9E//NA4//HD83//7f/GoRz0KRxxxBM466ywAwFve8hY86EEPcocOAE466SQ8/OEPx5ve9KZbiwQzzDDDDCNYHmgEZphhhhluDlx99dU47bTTcO211+IZz3gGTjrpJHz5y1/GW97yFnzzm9/Ev/3bv+H7v//78c1vfhO/8Au/gGOOOQZveMMb8OhHPxpvectb8LjHPe4m29+5cye2bt2KrVu3huebm5s444wz8LCHPQwvf/nLsXXrVvR9j09+8pP4mZ/5mVE7p512Gv7mb/4G119/PY444ohblAYzzDDDDFMwO3UzzDDDQQUvetGLsHPnTlx88cU49dRT/fmv//qvw8xwzjnn4JprrsHf//3f42EPexgA4Gd/9mdx3/veF+eccw4e85jHoOumFyn+6Z/+CW9961vxxCc+EYvFIvy2e/duPPGJT8S5557rz/75n/8Zu3fvxh3veMdRW3x29dVX43u/93u/7XHPMMMMM/x7MC+/zjDDDAcN9H2Pv/iLv8CP/uiPBoeOUErBu971Lpx22mnu0AHA4Ycfjmc84xn44he/iMsvv3yy7W9+85t44hOfiMMOOwznnXfeZJlnPvOZ4fsNN9wAYFi2zbBly5ZQZoYZZpjh1obZqZthhhkOGvja176GXbt24eSTT95nmS996UuTmbF73ete/nuG1WqFn/iJn8Dll1+Ot7zlLTjhhBNGZZbLJe585zuHZ4cddhiAIYuX4cYbbwxlZphhhhlubZiXX2eYYYbvePjZn/1ZvPOd78Qb3/hG/PAP//BkmY2NjdGy7dFHH42NjQ185StfGZXnsykHcYYZZpjh1oDZqZthhhkOGrjDHe6Abdu24bLLLttnmbve9a644oorRs8/+9nP+u8Kz3/+8/G6170Ov/M7v4MnP/nJNwufrutwyimn4GMf+9jot4svvhj3uMc95kMSM8www36Defl1hhlmOGig6zo89rGPxTve8Y5JR8rM8KhHPQof+chHcNFFF/nzb3zjG/jDP/xD3O1ud8O9731vf/7bv/3bePnLX47/9t/+G57znOd8Szj92I/9GD760Y8GfK644gq8973vxROf+MRv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b/xGeM/lTO9vD/7u7/4OP/qjP4oTTjgBpRT8xV/8Rfh9f9L3zW9+M0466SRs2bIFp5xyCt71rnfd4uM90HBT9N67dy9e+MIX4pRTTsHtbnc7nHDCCfipn/opXH311aGN2wy97SCC888/39bX1+2P//iP7dOf/rT97M/+rB111FF2zTXXHGjUbtNwxhln2Ote9zq77LLL7NJLL7VHPepRduKJJ9rXv/51L/NzP/dzdpe73MUuuOAC+9jHPmYPechD7Pu///v9983NTTv55JPt9NNPt49//OP2rne9y4499lh70Yte5GU+//nP29atW+2cc86xyy+/3F796lfbYrGwd7/73ft1vLcl+MhHPmJ3u9vd7L73va895znP8eczvW85+Nd//Ve7613vaj/90z9tF198sX3+85+3v/7rv7Z/+qd/8jLnnXeeHXnkkfYXf/EX9olPfMIe/ehH293vfne74YYbvMx/+S//xb7v+77PPvzhD9vf//3f23d/93fbk5/8ZP/9uuuus+3bt9tZZ51ll112mf3Zn/2ZHXbYYfYHf/AH+3W8Bxp+8zd/04455hh75zvfaV/4whfszW9+sx1++OH2P/7H//AyM72/PXjXu95lv/Irv2JvfetbDYC97W1vC7/vL/p+8IMftMViYS972cvs8ssvt1/91V+1tbU1+9SnPnWr02B/wk3R+9prr7XTTz/d/vzP/9w++9nP2kUXXWSnnXaaPfCBDwxt3FbofVA5daeddpqdffbZ/n21WtkJJ5xg55577gHE6uCDr371qwbA3v/+95vZwLRra2v25je/2ct85jOfMQB20UUXmdnA9F3X2c6dO73Ma1/7Wtu2bZvt3r3bzMxe8IIX2H3uc5/Q14//+I/bGWeccWsP6TYJ119/vd3znve097znPfaf/tN/cqdupvctCy984QvtYQ972D5/7/vejj/+ePvt3/5tf3bttdfaxsaG/dmf/ZmZmV1++eUGwD760Y96mb/6q7+yUop9+ctfNjOz3/u937Pb3/72Tn/2/b3f+7239JBu03DmmWfaz/zMz4Rnj3/84+2ss84ys5netzRkJ2N/0vdJT3qSnXnmmQGfBz/4wfZf/+t/vUXHeFuCKSc6w0c+8hEDYF/60pfM7LZF74Nm+XXPnj245JJLcPrpp/uzrutw+umn46KLLjqAmB18cN111wEAjj76aADAJZdcgr179wbannTSSTjxxBOdthdddBFOOeWUcEH0GWecgV27duHTn/60l9E2WOY7dX7OPvtsnHnmmSOazPS+ZeH//J//g1NPPRVPfOITcdxxx+H+978//uiP/sh//8IXvoCdO3cGWh155JF48IMfHOh91FFH4dRTT/Uyp59+Orquw8UXX+xlfvAHfxDr6+te5owzzsAVV1yBf/u3f7u1h3mbge///u/HBRdcgH/8x38EAHziE5/ABz7wATzykY8EMNP71ob9Sd9Zx0zDddddh1IKjjrqKAC3LXofNE7dP//zP2O1Wo3eOrF9+3bs3LnzAGF18EHf93juc5+Lhz70oTj55JMBADt37sT6+rozKEFpu3Pnzkna87ebKrNr1y7ccMMNt8ZwbrNw/vnn4x/+4R9w7rnnjn6b6X3Lwuc//3m89rWvxT3veU/89V//NZ75zGfiF37hF/CGN7wBQKPXTemOnTt34rjjjgu/L5dLHH300TdrTr4T4Jd/+ZfxEz/xEzjppJOwtraG+9///njuc5+Ls846C8BM71sb9id991XmO5n+N954I174whfiyU9+MrZt2wbgtkXvA/KasBkOHJx99tm47LLL8IEPfOBAo3LIwlVXXYXnPOc5eM973oMtW7YcaHQOeej7Hqeeeip+67d+CwBw//vfH5dddhl+//d/H0996lMPMHaHHrzpTW/CG9/4Rvzpn/4p7nOf++DSSy/Fc5/7XJxwwgkzvWc4pGHv3r140pOeBDPDa1/72gONziQcNJm6Y489FovFYnRC8JprrsHxxx9/gLA6uOBZz3oW3vnOd+LCCy/Ene98Z39+/PHHY8+ePbj22mtDeaXt8ccfP0l7/nZTZbZt24bDDjvslh7ObRYuueQSfPWrX8UDHvAALJdLLJdLvP/978erXvUqLJdLbN++fab3LQh3vOMdce973zs8u9e97oUrr7wSQKPXTemO448/Hl/96lfD75ubm/jXf/3XmzUn3wnw/Oc/37N1p5xyCp7ylKfgec97nmelZ3rfurA/6buvMt+J9KdD96UvfQnvec97PEsH3LbofdA4devr63jgAx+ICy64wJ/1fY8LLrgAO3bsOICY3fbBzPCsZz0Lb3vb2/De974Xd7/73cPvD3zgA7G2thZoe8UVV+DKK6902u7YsQOf+tSnAuOSsWlQd+zYEdpgme+0+Xn4wx+OT33qU7j00kv936mnnoqzzjrLP8/0vuXgoQ996OiKnn/8x3/EXe96VwDA3e9+dxx//PGBVrt27cLFF18c6H3ttdfikksu8TLvfe970fc9HvzgB3uZv/u7v8PevXu9zHve8x587/d+L25/+9vfauO7rcE3v/lNdF00HYvFAn3fA5jpfWvD/qTvrGMGoEP3uc99Dn/7t3+LY445Jvx+m6L3f/hIxW0Azj//fNvY2LDXv/71dvnll9sznvEMO+qoo8IJwRnG8MxnPtOOPPJIe9/73mdf+cpX/N83v/lNL/NzP/dzduKJJ9p73/te+9jHPmY7duywHTt2+O+8YuMRj3iEXXrppfbud7/b7nCHO0xesfH85z/fPvOZz9hrXvOa78grNqZAT7+azfS+JeEjH/mILZdL+83f/E373Oc+Z2984xtt69at9id/8ide5rzzzrOjjjrK3v72t9snP/lJe8xjHjN5BcT9739/u/jii+0DH/iA3fOe9wxXElx77bW2fft2e8pTnmKXXXaZnX/++bZ169bviCs2FJ761Kfane50J7/S5K1vfasde+yx9oIXvMDLzPT+9uD666+3j3/84/bxj3/cANgrXvEK+/jHP+6nLfcXfT/4wQ/acrm0l7/85faZz3zGXvrSlx6SV5rcFL337Nljj370o+3Od76zXXrppcGG6knW2wq9Dyqnzszs1a9+tZ144om2vr5up512mn34wx8+0Cjd5gHA5L/Xve51XuaGG26wn//5n7fb3/72tnXrVnvc4x5nX/nKV0I7X/ziF+2Rj3ykHXbYYXbsscfaL/7iL9revXtDmQsvvNDud7/72fr6ut3jHvcIfXwnQ3bqZnrfsvCOd7zDTj75ZNvY2LCTTjrJ/vAP/zD83ve9vfjFL7bt27fbxsaGPfzhD7crrrgilPmXf/kXe/KTn2yHH364bdu2zZ72tKfZ9ddfH8p84hOfsIc97GG2sbFhd7rTney888671cd2W4Ndu3bZc57zHDvxxBNty5Ytdo973MN+5Vd+JRi4md7fHlx44YWTOvupT32qme1f+r7pTW+y7/me77H19XW7z33uY3/5l395q437QMFN0fsLX/jCPm3ohRde6G3cVuhdzOQa8BlmmGGGGWaYYYYZDko4aPbUzTDDDDPMMMMMM8ywb5iduhlmmGGGGWaYYYZDAGanboYZ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LkzZ+dr5mXp5Xh9/i1NvmDA20QZz0llMyvgClqSzWLg3EUE52vUjJKUIvqfL0W9bBYKT8zEj6yCC9lw+PzNsWJC1GyGZxagd4IsH00/ClJGH2Xv2wpqcp62t5Hy8lJWG0Liv0XPLAdyTXABrwhltXil5WLg3ESHJhVicux0hyTb0OGzDfamnEZSVr80rpRCv7vkM1nTtnAlZdwTNJj3uzzwNc0oeJqUdQnBSnjavZO38CNl4HP6b92N8ciHMydq8rOmFWJCTjODUQryduw2hCfnwzziFe5ILYMkq0sZK1cYKTrNh4Z4EhGw4hqBdJ7QcJufhyfQDCE7W1pg1OQ/vHdyG0LXHELBxP8bvzoNl9xlEZ+yFNb0Q7+RuRUhyId7f/zEshysRuPMr/FvqGViyivDCnkxY0wqxKGcHLEln8eqezxCy8TgsCScRmXYGltR8rZ+Uy+dnwlltrJgjMK3fjzG7CmDOLsKT6QdgTSvE2/u3IyQxH/97YCtM39Yh6KD2umXNsOGlPRnusay7z2LhviSExn8La8IZ/HL3KVhT8jErIweW1Hy8vX87gnedxf8c2I6K2wwwx36OMbsKYMkswoK9KQhOKcT/S/vMQ9VIF/mbOiIiIiL6cVjUEREREXkBFnVEREREXoBFHREREZEXYFFHRERE5AVY1BERERF5ARZ1RERERF6ARR0RERGRF2BRR0REROQFWNQREREReQEWdUREREReQBJCCE8H8UPV1NQgMDAQkWHPQicbPB0OEREREQDAqdqRWrIC1dXVCAgI6NSx+U4dERERkRdgUUdERETkBVjUEREREXkBFnVEREREXoBFHREREZEXYFFHRERE5AVY1BERERF5ARZ1RERERF6ARR0RERGRF2BRR0REROQFWNQREREReQEWdURERERegEUdERERkRdgUUdERETkBVjUEREREXkBFnVEREREXoBFHREREZEXYFFHRERE5AVY1BERERF5ARZ1RERERF6ARR0RERGRF2BRR0REROQFWNQREREReQEWdURERERegEUdERERkRdgUUdERETkBVjUEREREXkBFnVEREREXoBFHREREZEXYFFHRERE5AVY1BERERF5ARZ1RERERF6ARR0RERGRF2BRR0REROQFdJ4OgOiGEQJlDw0ERKttEiCpgJCu/A4AQgYkl7ZNSNq/Zaf2CKnVvsv/2ePuA4AkrvwuZEB2ddC/dJ19rfts9ftV+zroU1KvxNwS51Uxt3peRzF3tO87Y75Gn+33ueMUHf/ePrcdxdz+ee7j1Wqf7AT0DdoGVS8BAhAKoCoSJCEgJMmdF4jLj610NIeOfr/WvvaPHblun/K189U6ru/K5w+JuaN939W2o/lcq80PjfO7jkGLrjT37zPXa8bc6ph/n+e1/FvIAETH/XxXn+3XqrvP9v2j3TXo8niqom1vc/1oF9c1+2wXc0hKEeB0Xp1cuqH4Th0RERGRF/BYUbdkyRL0798fPj4+GDduHA4ePOipUIiIiIi6PY8UdZs3b8b8+fOxaNEifPHFFxg1ahQmTJiAsrIyT4RDRERE1O15pKh79913MXv2bMycORO33XYbli1bBj8/P6xevdoT4RARERF1e51e1Nntdhw+fBiRkZFXgpBlREZGIjc3t8PnNDc3o6amps0PEREREV3R6UXdxYsX4XK5EBoa2mZ7aGgoSkpKOnzO4sWLERgY6P6JiIjojFCJiIiIuo1u8enXV155BdXV1e6foqIiT4dERERE1KV0+vfUWa1WKIqC0tLSNttLS0sRFhbW4XOMRiOMRmNnhEdERETULXX6O3UGgwF33XUX0tLS3NtUVUVaWhrGjx/f2eEQEREReQWP3FFi/vz5iI6OxpgxYzB27Fi89957qK+vx8yZMz0RDhEREVG355GibsqUKSgvL8drr72GkpIS3HHHHUhMTLzqwxPXIoR27xGnar+ZYVJ3IwRc9qZ/+TZh4l+8TZi4zm3COtzXxW8Tdq35dKXbhAknIDku3yYM2m3CoAKqi7cJ+yH7vqttR/PhbcJ4m7B/5TZhTrUZUF1XJ9cLtdQmLbVKZ5KEJ0b9kfLy8jBo0CBPh0FERETUoaKiIvTp06dTx/TIO3U/ltlsBgDYbDYEBgZ6OBrvV1NTg4iICBQVFSEgIMDT4Xg95rtzMd+di/nuXMx352rJ94kTJxAeHt7p43fLok6WtfeLAwMDuUg7UUBAAPPdiZjvzsV8dy7mu3Mx352rd+/e7lqlM3WL76kjIiIioutjUUdERETkBbplUWc0GrFo0SJ+IXEnYb47F/PduZjvzsV8dy7mu3N5Ot/d8tOvRERERNRWt3ynjoiIiIjaYlFHRERE5AVY1BERERF5ARZ1RERERF6g2xV1S5YsQf/+/eHj44Nx48bh4MGDng6py1u8eDHuvvtu+Pv7IyQkBL/5zW9w8uTJNm2ampowZ84cWCwW9OzZE48//jhKS0vbtLHZbHj44Yfh5+eHkJAQLFiwAE6ns02bzMxM3HnnnTAajRg8eDBiYmJu9vS6vLfeeguSJGHevHnubcz3jXX+/HlMnz4dFosFvr6+GDlyJA4dOuTeL4TAa6+9hl69esHX1xeRkZE4ffp0mz4qKysRFRWFgIAAmEwmPPPMM6irq2vT5ssvv8QvfvEL+Pj4ICIiAm+//XanzK8rcblcePXVVzFgwAD4+vpi0KBB+Otf/9rmPpfM94+TnZ2NX//61wgPD4ckSdi+fXub/Z2Z3y1btmDYsGHw8fHByJEjkZCQcMPn62nXy7fD4cDChQsxcuRI9OjRA+Hh4XjqqadQXFzcpo8uk2/RjcTFxQmDwSBWr14tvv76azF79mxhMplEaWmpp0Pr0iZMmCDWrFkjjh8/Lo4ePSoeeugh0bdvX1FXV+du89xzz4mIiAiRlpYmDh06JH72s5+Jn//85+79TqdTjBgxQkRGRoojR46IhIQEYbVaxSuvvOJuk5eXJ/z8/MT8+fPFiRMnxAcffCAURRGJiYmdOt+u5ODBg6J///7i9ttvF3PnznVvZ75vnMrKStGvXz/x9NNPiwMHDoi8vDyRlJQkzpw5427z1ltvicDAQLF9+3Zx7NgxMXHiRDFgwADR2NjobvPAAw+IUaNGif3794s9e/aIwYMHi2nTprn3V1dXi9DQUBEVFSWOHz8uNm3aJHx9fcXy5cs7db6e9uabbwqLxSJ27twp8vPzxZYtW0TPnj3FP/7xD3cb5vvHSUhIEH/605/E1q1bBQCxbdu2Nvs7K7979+4ViqKIt99+W5w4cUL8+c9/Fnq9Xnz11Vc3PQed6Xr5rqqqEpGRkWLz5s3i22+/Fbm5uWLs2LHirrvuatNHV8l3tyrqxo4dK+bMmeP+t8vlEuHh4WLx4sUejKr7KSsrEwBEVlaWEEJbtHq9XmzZssXd5ptvvhEARG5urhBCW/SyLIuSkhJ3m6VLl4qAgADR3NwshBDi5ZdfFsOHD28z1pQpU8SECRNu9pS6pNraWjFkyBCRkpIifvWrX7mLOub7xlq4cKG49957r7lfVVURFhYm/v73v7u3VVVVCaPRKDZt2iSEEOLEiRMCgPj888/dbXbv3i0kSRLnz58XQgjx4YcfiqCgIHf+W8a+5ZZbbvSUurSHH35YzJo1q822xx57TERFRQkhmO8brX2R0Zn5nTx5snj44YfbxDNu3Djx29/+9obOsSvpqIhu7+DBgwKAKCwsFEJ0rXx3m//9arfbcfjwYURGRrq3ybKMyMhI5ObmejCy7qe6uhoAYDabAQCHDx+Gw+Fok9thw4ahb9++7tzm5uZi5MiRCA0NdbeZMGECampq8PXXX7vbtO6jpc1P9fjMmTMHDz/88FU5Yb5vrE8//RRjxozBpEmTEBISgtGjR2PlypXu/fn5+SgpKWmTq8DAQIwbN65Nvk0mE8aMGeNuExkZCVmWceDAAXebX/7ylzAYDO42EyZMwMmTJ3Hp0qWbPc0u4+c//znS0tJw6tQpAMCxY8eQk5ODBx98EADzfbN1Zn55jelYdXU1JEmCyWQC0LXy3W2KuosXL8LlcrV5kQOA0NBQlJSUeCiq7kdVVcybNw/33HMPRowYAQAoKSmBwWBwL9AWrXNbUlLSYe5b9l2vTU1NDRobG2/GdLqsuLg4fPHFF1i8ePFV+5jvGysvLw9Lly7FkCFDkJSUhOeffx7/+Z//ibVr1wK4kq/rXTtKSkoQEhLSZr9Op4PZbP5Bx+Sn4A9/+AOmTp2KYcOGQa/XY/To0Zg3bx6ioqIAMN83W2fm91ptfsr5b2pqwsKFCzFt2jQEBAQA6Fr51v2w6VB3N2fOHBw/fhw5OTmeDsVrFRUVYe7cuUhJSYGPj4+nw/F6qqpizJgx+Nvf/gYAGD16NI4fP45ly5YhOjraw9F5n/j4eMTGxmLjxo0YPnw4jh49innz5iE8PJz5Jq/mcDgwefJkCCGwdOlST4fToW7zTp3VaoWiKFd9QrC0tBRhYWEeiqp7efHFF7Fz505kZGSgT58+7u1hYWGw2+2oqqpq0751bsPCwjrMfcu+67UJCAiAr6/vjZ5Ol3X48GGUlZXhzjvvhE6ng06nQ1ZWFt5//33odDqEhoYy3zdQr169cNttt7XZduutt8JmswG4kq/rXTvCwsJQVlbWZr/T6URlZeUPOiY/BQsWLHC/Wzdy5EjMmDEDv/vd79zvSjPfN1dn5vdabX6K+W8p6AoLC5GSkuJ+lw7oWvnuNkWdwWDAXXfdhbS0NPc2VVWRlpaG8ePHezCyrk8IgRdffBHbtm1Deno6BgwY0Gb/XXfdBb1e3ya3J0+ehM1mc+d2/Pjx+Oqrr9os3JaF3fKCOn78+DZ9tLT5qR2f++67D1999RWOHj3q/hkzZgyioqLcvzPfN84999xz1Vf0nDp1Cv369QMADBgwAGFhYW1yVVNTgwMHDrTJd1VVFQ4fPuxuk56eDlVVMW7cOHeb7OxsOBwOd5uUlBTccsstCAoKumnz62oaGhogy21fOhRFgaqqAJjvm60z88trjKaloDt9+jRSU1NhsVja7O9S+f7eH6noAuLi4oTRaBQxMTHixIkT4tlnnxUmk6nNJwTpas8//7wIDAwUmZmZ4sKFC+6fhoYGd5vnnntO9O3bV6Snp4tDhw6J8ePHi/Hjx7v3t3zFxv333y+OHj0qEhMTRXBwcIdfsbFgwQLxzTffiCVLlvwkv2KjI60//SoE830jHTx4UOh0OvHmm2+K06dPi9jYWOHn5yc2bNjgbvPWW28Jk8kkduzYIb788kvxyCOPdPgVEKNHjxYHDhwQOTk5YsiQIW2+kqCqqkqEhoaKGTNmiOPHj4u4uDjh5+f3k/iKjdaio6NF79693V9psnXrVmG1WsXLL7/sbsN8/zi1tbXiyJEj4siRIwKAePfdd8WRI0fcn7bsrPzu3btX6HQ68c4774hvvvlGLFq0yCu/0uR6+bbb7WLixImiT58+4ujRo21eQ1t/krWr5LtbFXVCCPHBBx+Ivn37CoPBIMaOHSv279/v6ZC6PAAd/qxZs8bdprGxUbzwwgsiKChI+Pn5iUcffVRcuHChTT8FBQXiwQcfFL6+vsJqtYrf//73wuFwtGmTkZEh7rjjDmEwGMTAgQPbjPFT1r6oY75vrM8++0yMGDFCGI1GMWzYMLFixYo2+1VVFa+++qoIDQ0VRqNR3HfffeLkyZNt2lRUVIhp06aJnj17ioCAADFz5kxRW1vbps2xY8fEvffeK4xGo+jdu7d46623bvrcupqamhoxd+5c0bdvX+Hj4yMGDhwo/vSnP7V5gWO+f5yMjIwOr9nR0dFCiM7Nb3x8vBg6dKgwGAxi+PDhYteuXTdt3p5yvXzn5+df8zU0IyPD3UdXybckRKuvASciIiKibqnb/E0dEREREV0bizoiIiIiL8CijoiIiMgLsKgjIiIi8gIs6oiIiIi8AIs6IiIiIi/Aoo6IiIjIC7CoIyIiIvICLOqIiIiIvACLOiIiIiIvwKKOiIiIyAuwqCMiIiLyAv8ffQPUJtalcm8AAAAASUVORK5CYII=", "text/plain": [ "
" ] @@ -64,7 +66,8 @@ } ], "source": [ - "file_name = files[-1]\n", + "file_name = files[4]\n", + "print(file_name)\n", "data = joblib.load(file_name)\n", "for key, value in data.items():\n", " print(key, value.shape)\n", @@ -80,6 +83,14 @@ "plt.tight_layout()\n", "plt.show()" ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7fbe52bc", + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { diff --git a/notebooks/data_preparation.ipynb b/notebooks/data_preparation.ipynb index c795280..ffea9fe 100644 --- a/notebooks/data_preparation.ipynb +++ b/notebooks/data_preparation.ipynb @@ -21,9 +21,10 @@ "import pandas as pd\n", "from pathlib import Path\n", "import matplotlib.pyplot as plt\n", + "import numpy as np\n", "import yaml\n", "\n", - "shot_number = 170000\n", + "shot_number = 171348\n", "yaml_path = \"../src/fusionaihub/datasets/prepare/config/default.yaml\"\n", "with open(yaml_path, 'r') as f:\n", " cfg = yaml.safe_load(f)\n", @@ -47,7 +48,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 18, "id": "c8e825ce", "metadata": {}, "outputs": [], @@ -63,27 +64,53 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 60, "id": "a68aaa6f", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "magnetics_high_resolution\n", + "{'abbr': 'mhr', 'make_stft': True, 'expected_channels': 8}\n", + "ece_cali\n", + "{'abbr': 'ece', 'make_stft': True, 'expected_channels': 48}\n", + "co2_density\n", + "{'abbr': 'co2', 'make_stft': True, 'expected_channels': 4}\n", + "gas\n", + "{'abbr': 'gas', 'make_stft': False, 'expected_channels': 5}\n", + "ech\n", + "{'abbr': 'ech', 'make_stft': False, 'expected_channels': 11}\n", + "p_inj\n", + "{'abbr': 'pin', 'make_stft': False, 'expected_channels': 8}\n", + "t_inj\n", + "{'abbr': 'tin', 'make_stft': False, 'expected_channels': 8}\n" + ] + } + ], "source": [ "dfs = []\n", "missing_signals = []\n", - "for signal in cfg[\"signal\"]:\n", + "for signal in cfg['signal'].items():\n", + " print(signal[0])\n", + " print(signal[1])\n", " try:\n", " df = extract_signal(\n", " shot_number=shot_number,\n", " directory=Path(cfg[\"raw_data_dir\"]),\n", - " signal=signal['name'], \n", + " signal=signal[0], \n", " start_time=start_time,\n", " end_time=end_time,\n", " )\n", " df.columns = [\n", - " f\"{signal['abbr']}_{col}\" if col != \"time\" else col\n", + " f\"{signal[1]['abbr']}_{col}\" if col != \"time\" else col\n", " for col in range(len(df.columns))\n", " ]\n", "\n", + " # # Add a log to validate our assumption about the config and the transform key:\n", + " # logger.debug(f\"Signal config for {signal['name']}: {signal}\")\n", + "\n", " # Add a column to the dataframe for this signal indicating if a transform is present.\n", " # We'll use the signal's abbreviation to name the column, e.g., 'IP_transform'\n", " df = align_signal(\n", @@ -94,25 +121,26 @@ " )\n", " dfs.append(df)\n", " except Exception as e:\n", - " missing_signals.append((signal['name'], signal['abbr']))" + " for channel in range(int(signal[1]['expected_channels'])):\n", + " missing_signals.append((signal[1]['abbr'], channel))" ] }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 61, "id": "fe35d6ca", "metadata": {}, "outputs": [], "source": [ "df = pd.concat(dfs, axis=1, join='inner')\n", - "for signal_name, signal_abbr in missing_signals:\n", - " df[signal_abbr] = 0.0\n", - " df[f\"{signal_abbr}_state\"] = False" + "for signal_abbr, channel in missing_signals:\n", + " df[f\"{signal_abbr}_{channel}\"] = np.nan\n", + " df[f\"{signal_abbr}_{channel}_state\"] = False" ] }, { "cell_type": "code", - "execution_count": 56, + "execution_count": 62, "id": "87a1b47e", "metadata": {}, "outputs": [], @@ -128,7 +156,7 @@ }, { "cell_type": "code", - "execution_count": 57, + "execution_count": 64, "id": "40750cb0", "metadata": {}, "outputs": [], @@ -138,7 +166,7 @@ }, { "cell_type": "code", - "execution_count": 80, + "execution_count": null, "id": "de25ce4f", "metadata": {}, "outputs": [ @@ -146,13 +174,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "mhr (8, 1, 2832874)\n", - "ece (48, 1, 2832874)\n", - "co2 (4, 1, 2832874)\n", - "gas (5, 1, 2832874)\n", - "ech (11, 1, 2832874)\n", - "pin (8, 1, 2832874)\n", - "tin (8, 1, 2832874)\n" + "mhr (8, 1, 653000)\n", + "ece (48, 1, 653000)\n", + "co2 (4, 1, 653000)\n", + "gas (5, 1, 653000)\n", + "ech (11, 1, 653000)\n", + "pin (8, 1, 653000)\n", + "tin (8, 1, 653000)\n" ] } ], @@ -160,18 +188,18 @@ "for sample in samples:\n", " transformed_samples = {}\n", " for key, value in sample.items():\n", - " for signal in cfg[\"signal\"]:\n", - " abbr = signal['abbr']\n", + " for signal in cfg['signal'].items():\n", + " abbr = signal[1]['abbr']\n", " cols = [col for col in value.columns if abbr in col]\n", " transformed_samples[abbr] = identity_transform(\n", " x=value[cols].to_numpy().T)\n", " print(abbr, transformed_samples[abbr].shape)\n", - " save_sample(transformed_samples, Path('.'), key)" + " save_sample(transformed_samples, Path('../data'), key)" ] }, { "cell_type": "code", - "execution_count": 58, + "execution_count": 67, "id": "bc37f8e0", "metadata": {}, "outputs": [ @@ -179,7 +207,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "(2832874,) (513, 11066)\n" + "(653000,) (513, 2551)\n" ] } ], @@ -191,7 +219,7 @@ }, { "cell_type": "code", - "execution_count": 83, + "execution_count": null, "id": "f6cae5ac", "metadata": {}, "outputs": [ @@ -199,13 +227,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "mhr (8, 513, 11066)\n", - "ece (48, 513, 11066)\n", - "co2 (4, 513, 11066)\n", - "gas (5, 1, 11066)\n", - "ech (11, 1, 11066)\n", - "pin (8, 1, 11066)\n", - "tin (8, 1, 11066)\n" + "mhr (8, 513, 2551)\n", + "ece (48, 513, 2551)\n", + "co2 (4, 513, 2551)\n", + "gas (5, 1, 2551)\n", + "ech (11, 1, 2551)\n", + "pin (8, 1, 2551)\n", + "tin (8, 1, 2551)\n" ] } ], @@ -213,10 +241,10 @@ "for sample in samples:\n", " transformed_samples = {}\n", " for key, value in sample.items():\n", - " for signal in cfg[\"signal\"]:\n", - " abbr = signal['abbr']\n", + " for signal in cfg['signal'].items():\n", + " abbr = signal[1]['abbr']\n", " cols = [col for col in value.columns if abbr in col]\n", - " if signal[\"make_stft\"]:\n", + " if signal[1]['make_stft']:\n", " transformed_samples[abbr] = stft_transform(\n", " x=value[cols].to_numpy().T,\n", " n_fft=cfg[\"stft\"][\"n_fft\"],\n", @@ -228,7 +256,7 @@ " ref_shape=transform_shape,\n", " )\n", " print(abbr, transformed_samples[abbr].shape)\n", - " save_sample(transformed_samples, Path('.'), key)\n", + " save_sample(transformed_samples, Path('../data'), key)\n", " break\n", " break" ] diff --git a/src/fusionaihub/datasets/prepare/README.md b/src/fusionaihub/datasets/prepare/README.md index 0903a2d..55787d7 100644 --- a/src/fusionaihub/datasets/prepare/README.md +++ b/src/fusionaihub/datasets/prepare/README.md @@ -163,4 +163,7 @@ Each `.joblib` file contains a dictionary with signal arrays, where transformed - torch - joblib - PyYAML -- pathlib (built-in) \ No newline at end of file +- pathlib (built-in) + +# To-Do +Change YAML loading to hydra \ No newline at end of file diff --git a/src/fusionaihub/datasets/prepare/config/default.yaml b/src/fusionaihub/datasets/prepare/config/default.yaml index 28d8ff6..bf84ecc 100644 --- a/src/fusionaihub/datasets/prepare/config/default.yaml +++ b/src/fusionaihub/datasets/prepare/config/default.yaml @@ -4,13 +4,34 @@ # Signal configuration - list of signals to process # Each signal has: [signal_name, abbreviation, should_transform] signal: - - {name: "magnetics_high_resolution", abbr: "mhr", make_stft: true} - - {name: "ece_cali", abbr: "ece", make_stft: true} - - {name: "co2_density", abbr: "co2", make_stft: true} - - {name: "gas", abbr: "gas", make_stft: false} - - {name: "ech", abbr: "ech", make_stft: false} - - {name: "p_inj", abbr: "pin", make_stft: false} - - {name: "t_inj", abbr: "tin", make_stft: false} + magnetics_high_resolution: + abbr: "mhr" + make_stft: true + expected_channels: 8 + ece_cali: + abbr: "ece" + make_stft: true + expected_channels: 48 + co2_density: + abbr: "co2" + make_stft: true + expected_channels: 4 + gas: + abbr: "gas" + make_stft: false + expected_channels: 5 + ech: + abbr: "ech" + make_stft: false + expected_channels: 11 + p_inj: + abbr: "pin" + make_stft: false + expected_channels: 8 + t_inj: + abbr: "tin" + make_stft: false + expected_channels: 8 # Data processing parameters randomize_shots: true diff --git a/src/fusionaihub/datasets/prepare/prepare_dataset.py b/src/fusionaihub/datasets/prepare/prepare_dataset.py index 4f623b9..91f4e54 100644 --- a/src/fusionaihub/datasets/prepare/prepare_dataset.py +++ b/src/fusionaihub/datasets/prepare/prepare_dataset.py @@ -76,10 +76,10 @@ def prepare_dataset(cfg: dict) -> None: logger.info(f"Target sampling frequency: {cfg['fs_khz']} kHz") logger.info("Signals configured:") - for signal in cfg["signal"]: - signal_name = signal["name"] - signal_abbr = signal["abbr"] - should_transform = signal.get("make_stft", False) + for signal in cfg['signal'].items(): + signal_name = signal[0] + signal_abbr = signal[1]['abbr'] + should_transform = signal[1].get("make_stft", False) logger.info(f" - {signal_name} ({signal_abbr}): transform={should_transform}") logger.info("=" * 40) @@ -103,16 +103,16 @@ def prepare_dataset(cfg: dict) -> None: logger.info(f"Processing {len(all_shots)} shots into cache...") # Clean up existing cache directory if it exists - # if cache_dir.exists(): - # import shutil - # logger.info(f"Removing existing cache directory: {cache_dir}") - # shutil.rmtree(cache_dir) - # cache_dir.mkdir(parents=True, exist_ok=True) + if cache_dir.exists(): + import shutil + logger.info(f"Removing existing cache directory: {cache_dir}") + shutil.rmtree(cache_dir) + cache_dir.mkdir(parents=True, exist_ok=True) # Process shots using the appropriate function # process_shot_stft(170000, cfg, cache_dir) # For debugging - # mapper = ParallelMapper() - # mapper(process_shot_stft, all_shots, cfg=cfg, out_dir=cache_dir) + mapper = ParallelMapper() + mapper(process_shot_stft, all_shots, cfg=cfg, out_dir=cache_dir) # Move cached files into train/test split logger.info("Splitting dataset into train and valid sets...") diff --git a/src/fusionaihub/datasets/prepare/shot_processing.py b/src/fusionaihub/datasets/prepare/shot_processing.py index 448f812..1a72158 100644 --- a/src/fusionaihub/datasets/prepare/shot_processing.py +++ b/src/fusionaihub/datasets/prepare/shot_processing.py @@ -71,22 +71,23 @@ def process_shot_stft( try: dfs = [] missing_signals = [] - for signal in cfg["signal"]: + for signal in cfg['signal'].items(): + print(signal[1]) try: df = extract_signal( shot_number=shot_number, directory=Path(cfg["raw_data_dir"]), - signal=signal['name'], + signal=signal[0], start_time=start_time, end_time=end_time, ) df.columns = [ - f"{signal['abbr']}{col}" if col != "time" else col + f"{signal[1]['abbr']}_{col}" if col != "time" else col for col in range(len(df.columns)) ] # Add a log to validate our assumption about the config and the transform key: - logger.debug(f"Signal config for {signal['name']}: {signal}") + logger.debug(f"Signal config for {signal[0]}: {signal[1]}") # Add a column to the dataframe for this signal indicating if a transform is present. # We'll use the signal's abbreviation to name the column, e.g., 'IP_transform' @@ -98,7 +99,8 @@ def process_shot_stft( ) dfs.append(df) except Exception as e: - missing_signals.append((signal['name'], signal['abbr'])) + for channel in range(int(signal[1]['expected_channels'])): + missing_signals.append((signal[1]['abbr'], channel)) except Exception as e: logger.error(f"Error: Could not extract signals for shot {shot_number}: {e}") raise e @@ -113,9 +115,10 @@ def process_shot_stft( # Add missing signals try: - for signal_name, signal_abbr in missing_signals: - df[signal_abbr] = 0.0 - df[f"{signal_abbr}_state"] = False + dfs = [] + for signal_abbr, channel in missing_signals: + df[f"{signal_abbr}_{channel}"] = np.nan + df[f"{signal_abbr}_{channel}_state"] = False except Exception as e: logger.error(f"Error: Could not add missing signals for shot {shot_number}: {e}") raise e @@ -146,8 +149,8 @@ def process_shot_stft( for sample in samples: transformed_samples = {} for key, value in sample.items(): - for signal in cfg["signal"]: - abbr = signal['abbr'] + for signal in cfg['signal'].items(): + abbr = signal[1]['abbr'] cols = [col for col in value.columns if abbr in col] transformed_samples[abbr] = identity_transform( x=value[cols].to_numpy().T) @@ -171,10 +174,10 @@ def process_shot_stft( for sample in samples: transformed_samples = {} for key, value in sample.items(): - for signal in cfg["signal"]: - abbr = signal['abbr'] + for signal in cfg['signal'].items(): + abbr = signal[1]['abbr'] cols = [col for col in value.columns if abbr in col] - if signal["make_stft"]: + if signal[1]['make_stft']: transformed_samples[abbr] = stft_transform( x=value[cols].to_numpy().T, n_fft=cfg["stft"]["n_fft"], From fb18479af196b9860d7b3c6c4c45abc788cbb9ff Mon Sep 17 00:00:00 2001 From: Nathaniel Chen Date: Sun, 13 Jul 2025 10:19:07 -0400 Subject: [PATCH 033/103] Update memory allocation in prepare_data.sh, reset execution counts in Jupyter notebooks, and enhance signal processing configurations in YAML. Adjusted data loading and visualization methods for improved clarity and functionality. --- commands/prepare_data.sh | 2 +- notebooks/accessing_data.ipynb | 36 ++++++++++--------- notebooks/data_preparation.ipynb | 34 +++++++++--------- .../datasets/prepare/config/default.yaml | 3 +- .../datasets/prepare/config/raw.yaml | 23 ++++++------ .../datasets/prepare/prepare_dataset.py | 8 +++-- .../datasets/prepare/shot_processing.py | 32 ++++++++--------- .../datasets/prepare/signal_processing.py | 5 +-- 8 files changed, 73 insertions(+), 70 deletions(-) diff --git a/commands/prepare_data.sh b/commands/prepare_data.sh index 28bc22f..967d552 100644 --- a/commands/prepare_data.sh +++ b/commands/prepare_data.sh @@ -3,7 +3,7 @@ #SBATCH --nodes=1 # node count #SBATCH --ntasks=1 # total number of tasks across all nodes #SBATCH --cpus-per-task=96 # cpu-cores per task (>1 if multi-threaded tasks) -#SBATCH --mem=100GB # memory per node +#SBATCH --mem=500GB # memory per node #SBATCH --time=01:00:00 # maximum time needed (HH:MM:SS) #SBATCH --output=logs/%A_%a.out #SBATCH --error=logs/%A_%a.err diff --git a/notebooks/accessing_data.ipynb b/notebooks/accessing_data.ipynb index be68705..2f0abfc 100644 --- a/notebooks/accessing_data.ipynb +++ b/notebooks/accessing_data.ipynb @@ -13,7 +13,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 2, "id": "836b5c67", "metadata": {}, "outputs": [], @@ -26,7 +26,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 3, "id": "d564239f", "metadata": {}, "outputs": [], @@ -36,7 +36,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 8, "id": "434b288f", "metadata": {}, "outputs": [ @@ -44,19 +44,19 @@ "name": "stdout", "output_type": "stream", "text": [ - "/scratch/gpfs/EKOLEMEN/hackathon/foundation25/train/175210_0.joblib\n", - "mhr (8, 513, 12028)\n", - "ece (48, 513, 12028)\n", - "co2 (4, 513, 12028)\n", - "gas (5, 1, 12028)\n", - "ech (11, 1, 12028)\n", - "pin (8, 1, 12028)\n", - "tin (8, 1, 12028)\n" + "/scratch/gpfs/EKOLEMEN/hackathon/foundation25/train/170000_0.joblib\n", + "mhr (8, 11066, 513)\n", + "ece (48, 11066, 513)\n", + "co2 (4, 11066, 513)\n", + "gas (5, 11066, 1)\n", + "ech (11, 11066, 1)\n", + "pin (8, 11066, 1)\n", + "tin (8, 11066, 1)\n" ] }, { "data": { - "image/png": "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3/tm15w+fRpXXXUVzjnnHBw5cgTPfOYzzygQfcMNN+CKK67AoUOHcO655+JFL3oRxnGcXfMbv/Eb+PzP/3xsbW3hMY95DH76p3/6k929T3l52ctehlIKnv/85/tny3jfs/LBD34Q3/AN34BzzjkHOzs7uPjii/G7v/u7/r2I4KUvfSke9rCHYWdnB5dddhn++I//eHaPj3zkI7jyyitx9OhRnH322XjOc56DO+64Y3bN//k//wd/82/+TWxvb+PCCy/Ey1/+8nulf59KMk0Tvvd7vxePfvSjsbOzg0//9E/HD/zAD8zOuVzG+xOT3/zN38Tf+Tt/BxdccAFKKXjTm940+/7eHN83vOENeNzjHoft7W1cfPHFeMtb3nKP9/e+lo823pvNBi9+8Ytx8cUX4/Dhw7jgggvwTd/0Tbjppptm9/iUGW+5H8nrXvc6Wa/X8lM/9VPynve8R/7xP/7HcvbZZ8vNN998XzftU1ouv/xyee1rXyvvfve75Z3vfKd85Vd+pTzykY+UO+64w6/5tm/7Nrnwwgvl2muvld/93d+Vpz71qfKFX/iF/v04jvKEJzxBLrvsMvn93/99ectb3iIPechD5CUveYlf84EPfEAOHTokL3zhC+W9732v/NiP/Zi01uSXf/mX79X+firJ29/+drnooovkcz7nc+R5z3uef76M9z0nH/nIR+RRj3qUfPM3f7P8zu/8jnzgAx+QX/mVX5E/+ZM/8Wte9rKXybFjx+RNb3qT/MEf/IH83b/7d+XRj3603HXXXX7N3/7bf1s+93M/V972trfJ//pf/0se85jHyNd//df79ydOnJDzzjtPrrzySnn3u98tP//zPy87OzvyEz/xE/dqf+9r+aEf+iE555xz5M1vfrP86Z/+qbzhDW+QI0eOyL//9//er1nG+xOTt7zlLfIv/+W/lF/4hV8QAPLGN75x9v29Nb7/+3//b2mtyctf/nJ573vfK9/zPd8jq9VK3vWud33Sx+DelI823rfddptcdtll8vrXv17+6I/+SK677jp58pOfLE960pNm9/hUGe/7Fah78pOfLFdddZX/e5omueCCC+Tqq6++D1t1/5NbbrlFAMhb3/pWEdFFu1qt5A1veINf84d/+IcCQK677joR0UVfa5Xjx4/7Na9+9avl6NGjsru7KyIi3/Vd3yWf/dmfPXvWs571LLn88ss/2V36lJTbb79dPuMzPkOuueYa+Vt/6285qFvG+56VF7/4xfI3/sbf+Eu/773L+eefLz/8wz/sn912222ytbUlP//zPy8iIu9973sFgLzjHe/wa37pl35JSinywQ9+UEREfvzHf1we9KAH+fjz2Y997GPv6S59SssVV1wh//Af/sPZZ894xjPkyiuvFJFlvO9p2Q8y7s3x/bqv+zq54oorZu15ylOeIt/6rd96j/bxU0nuDkTvl7e//e0CQP78z/9cRD61xvt+437d29vD9ddfj8suu8w/q7Xisssuw3XXXXcftuz+JydOnAAAPPjBDwYAXH/99dhsNrOxfdzjHodHPvKRPrbXXXcdLr744lmB6MsvvxwnT57Ee97zHr8m34PXHNT5ueqqq3DFFVecMSbLeN+z8j/+x//AJZdcgq/92q/Fueeei8/7vM/DT/7kT/r3f/qnf4rjx4/PxurYsWN4ylOeMhvvs88+G5dccolfc9lll6HWit/5nd/xa572tKdhvV77NZdffjne97734dZbb/1kd/NTRr7wC78Q1157Ld7//vcDAP7gD/4Av/Vbv4WnP/3pAJbx/mTLvTm+yx5z93LixAmUUnD22WcD+NQa7/sNqPvwhz+MaZrOOHXivPPOw/Hjx++jVt3/pPeO5z//+fiiL/oiPOEJTwAAHD9+HOv12hcoJY/t8ePH73bs+d1Hu+bkyZO46667Phnd+ZSV173udfi93/s9XH311Wd8t4z3PSsf+MAH8OpXvxqf8RmfgV/5lV/Bt3/7t+Of/bN/hp/5mZ8BEOP10faO48eP49xzz519PwwDHvzgB39Mc3IQ5Lu/+7vxD/7BP8DjHvc4rFYrfN7nfR6e//zn48orrwSwjPcnW+7N8f3LrjnI43/69Gm8+MUvxtd//dfj6NGjAD61xvs+OSZskftOrrrqKrz73e/Gb/3Wb93XTXnAyo033ojnPe95uOaaa7C9vX1fN+cBL713XHLJJfg3/+bfAAA+7/M+D+9+97vxmte8Bs9+9rPv49Y98OS//Jf/gp/92Z/Fz/3cz+GzP/uz8c53vhPPf/7zccEFFyzjvcgDWjabDb7u674OIoJXv/rV93Vz7lbuN0zdQx7yELTWzsgQvPnmm3H++effR626f8lzn/tcvPnNb8av//qv4xGPeIR/fv7552Nvbw+33Xbb7Po8tueff/7djj2/+2jXHD16FDs7O/d0dz5l5frrr8ctt9yCz//8z8cwDBiGAW9961vxoz/6oxiGAeedd94y3vegPOxhD8PjH//42Wef9VmfhRtuuAFAjNdH2zvOP/983HLLLbPvx3HERz7ykY9pTg6CvOhFL3K27uKLL8Y3fuM34gUveIGz0st4f3Ll3hzfv+yagzj+BHR//ud/jmuuucZZOuBTa7zvN6BuvV7jSU96Eq699lr/rPeOa6+9Fpdeeul92LJPfRERPPe5z8Ub3/hG/Nqv/Roe/ehHz75/0pOehNVqNRvb973vfbjhhht8bC+99FK8613vmi1cLmwq1EsvvXR2D15z0Obny77sy/Cud70L73znO/3PJZdcgiuvvNL/voz3PSdf9EVfdEaJnve///141KMeBQB49KMfjfPPP382VidPnsTv/M7vzMb7tttuw/XXX+/X/Nqv/Rp673jKU57i1/zmb/4mNpuNX3PNNdfgsY99LB70oAd90vr3qSanTp1CrXPV0Vr7/7P37tGWXVWZ+Lf2OffeSpFUQhJSIUB4KBogQR4hUIK2Q9KkIcpTUEZERIa0GBCIAtIK/NTWZCADbBDxMVqgh2gEGqRBRDEEFAgBIgFCIGLzSJpQAR9JBUiq6p49f3/s9c31zbl3RQNJVarYc4yqe84+6zHXXPO9Hht93wOY6X1rw/6k76xjBqBD97nPfQ5/+7d/i2OOOSb8fpui93/4SMVtAM4//3zb2Niw17/+9Xb55ZfbM57xDDvqqKPCCcEZxvDMZz7TjjzySHvf+95nX/nKV/zfN7/5TS/zcz/3c3biiSfae9/7XvvYxz5mO3bssB07dvjvvGLjEY94hF166aX27ne/2+5whztMXrHx/Oc/3z7zmc/Ya17zmu/IKzamQE+/ms30viXhIx/5iC2XS/vN3/xN+9znPmdvfOMbbevWrfYnf/InXua8886zo446yt7+9rfbJz/5SXvMYx4zeQXE/e9/f7v44ovtAx/4gN3znvcMVxJce+21tn37dnvKU55il112mZ1//vm2devW74grNhSe+tSn2p3udCe/0uStb32rHXvssfaCF7zAy8z0/vbg+uuvt49//OP28Y9/3ADYK17xCvv4xz/upy33F30/+MEP2nK5tJe//OX2mc98xl760pceklea3BS99+zZY49+9KPtzne+s1166aXBhupJ1tsKvQ8qp87M7NWvfrWdeOKJtr6+bqeddpp9+MMfPtAo3eYBwOS/173udV7mhhtusJ//+Z+329/+9rZ161Z73OMeZ1/5yldCO1/84hftkY98pB122GF27LHH2i/+4i/a3r17Q5kLL7zQ7ne/+9n6+rrd4x73CH18J0N26mZ637Lwjne8w04++WTb2Niwk046yf7wD/8w/N73vb34xS+27du328bGhj384Q+3K664IpT5l3/5F3vyk59shx9+uG3bts2e9rSn2fXXXx/KfOITn7CHPexhtrGxYXe6053svPPOu9XHdluDXbt22XOe8xw78cQTbcuWLXaPe9zDfuVXfiUYuJne3x5ceOGFkzr7qU99qpntX/q+6U1vsu/5nu+x9fV1u8997mN/+Zd/eauN+0DBTdH7C1/4wj5t6IUXXuht3FboXczkGvAZZphhhhlmmGGGGQ5KOGj21M0wwwwzzDDDDDPMsG+YnboZZphhhhlmmGGGQwBmp26GGWaYYYYZZpjhEIDZqZthhhlmmGGGGWY4BGB26maYYYYZZphhhhkOAZiduhlmmGGGGWaYYYZDAGanboYZZphhhhlmmOEQgNmpm2GGGWaYYYYZZjgEYHbqZphhhhlmmGGGGQ4BmJ26GWaYYYYZZphhhkMAZqduhhlmmGGGGWaY4RCA2ambYYYZZphhhhlmOARgdupmmGGGGWaYYYYZDgGYnboZZphhhhlmmGGGQwBmp26GGWaYYYYZZpjhEIDZqZthhhlmmGGGGWY4BGB26maYYYYZZphhhhkOAZiduhlmmGGGGWaYYYZDAGanboYZZviOhKuuugq/9mu/htNOOw23v/3tceyxx+KHfuiH8Ld/+7c3u60vf/nLeNKTnoSjjjoK27Ztw2Me8xh8/vOfvxWwnmGGGWbYNxQzswONxAwzzDDD/obf/d3fxQte8AI89rGPxUMf+lBsbm7if/2v/4V/+Id/wB//8R/jaU972n+ona9//et4wAMegOuuuw6/+Iu/iLW1Nbzyla+EmeHSSy/FMccccyuPZIYZZphhgNmpm2GGGb4j4dOf/jS2b9+OY4891p/t3r0b97vf/fD1r38dV1111U3W/8Y3voHb3e52eNnLXoYXvvCF+MhHPoIHPehBAIDPfvazOPnkk/GCF7wAv/Vbv3WrjmOGGWaYgTAvv84wwwwHHXz5y1/G05/+dJxwwgnY2NjA3e9+dzzzmc/Enj17AACf//zn8cQnPhFHH300tm7dioc85CH4y7/8y9DGfe5zn+DQAcDGxgYe9ahH4f/9v/+H66+/3p//9E//NA4//HD83//7f/GoRz0KRxxxBM466ywAwFve8hY86EEPcocOAE466SQ8/OEPx5ve9KZbiwQzzDDDDCNYHmgEZphhhhluDlx99dU47bTTcO211+IZz3gGTjrpJHz5y1/GW97yFnzzm9/Ev/3bv+H7v//78c1vfhO/8Au/gGOOOQZveMMb8OhHPxpvectb8LjHPe4m29+5cye2bt2KrVu3huebm5s444wz8LCHPQwvf/nLsXXrVvR9j09+8pP4mZ/5mVE7p512Gv7mb/4G119/PY444ohblAYzzDDDDFMwO3UzzDDDQQUvetGLsHPnTlx88cU49dRT/fmv//qvw8xwzjnn4JprrsHf//3f42EPexgA4Gd/9mdx3/veF+eccw4e85jHoOumFyn+6Z/+CW9961vxxCc+EYvFIvy2e/duPPGJT8S5557rz/75n/8Zu3fvxh3veMdRW3x29dVX43u/93u/7XHPMMMMM/x7MC+/zjDDDAcN9H2Pv/iLv8CP/uiPBoeOUErBu971Lpx22mnu0AHA4Ycfjmc84xn44he/iMsvv3yy7W9+85t44hOfiMMOOwznnXfeZJlnPvOZ4fsNN9wAYFi2zbBly5ZQZoYZZpjh1obZqZthhhkOGvja176GXbt24eSTT95nmS996UuTmbF73ete/nuG1WqFn/iJn8Dll1+Ot7zlLTjhhBNGZZbLJe585zuHZ4cddhiAIYuX4cYbbwxlZphhhhlubZiXX2eYYYbvePjZn/1ZvPOd78Qb3/hG/PAP//BkmY2NjdGy7dFHH42NjQ185StfGZXnsykHcYYZZpjh1oDZqZthhhkOGrjDHe6Abdu24bLLLttnmbve9a644oorRs8/+9nP+u8Kz3/+8/G6170Ov/M7v4MnP/nJNwufrutwyimn4GMf+9jot4svvhj3uMc95kMSM8www36Defl1hhlmOGig6zo89rGPxTve8Y5JR8rM8KhHPQof+chHcNFFF/nzb3zjG/jDP/xD3O1ud8O9731vf/7bv/3bePnLX47/9t/+G57znOd8Szj92I/9GD760Y8GfK644gq8973vxROf+MRv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b/xGeM/lTO9vD/7u7/4OP/qjP4oTTjgBpRT8xV/8Rfh9f9L3zW9+M0466SRs2bIFp5xyCt71rnfd4uM90HBT9N67dy9e+MIX4pRTTsHtbnc7nHDCCfipn/opXH311aGN2wy97SCC888/39bX1+2P//iP7dOf/rT97M/+rB111FF2zTXXHGjUbtNwxhln2Ote9zq77LLL7NJLL7VHPepRduKJJ9rXv/51L/NzP/dzdpe73MUuuOAC+9jHPmYPechD7Pu///v9983NTTv55JPt9NNPt49//OP2rne9y4499lh70Yte5GU+//nP29atW+2cc86xyy+/3F796lfbYrGwd7/73ft1vLcl+MhHPmJ3u9vd7L73va895znP8eczvW85+Nd//Ve7613vaj/90z9tF198sX3+85+3v/7rv7Z/+qd/8jLnnXeeHXnkkfYXf/EX9olPfMIe/ehH293vfne74YYbvMx/+S//xb7v+77PPvzhD9vf//3f23d/93fbk5/8ZP/9uuuus+3bt9tZZ51ll112mf3Zn/2ZHXbYYfYHf/AH+3W8Bxp+8zd/04455hh75zvfaV/4whfszW9+sx1++OH2P/7H//AyM72/PXjXu95lv/Irv2JvfetbDYC97W1vC7/vL/p+8IMftMViYS972cvs8ssvt1/91V+1tbU1+9SnPnWr02B/wk3R+9prr7XTTz/d/vzP/9w++9nP2kUXXWSnnXaaPfCBDwxt3FbofVA5daeddpqdffbZ/n21WtkJJ5xg55577gHE6uCDr371qwbA3v/+95vZwLRra2v25je/2ct85jOfMQB20UUXmdnA9F3X2c6dO73Ma1/7Wtu2bZvt3r3bzMxe8IIX2H3uc5/Q14//+I/bGWeccWsP6TYJ119/vd3znve097znPfaf/tN/cqdupvctCy984QvtYQ972D5/7/vejj/+ePvt3/5tf3bttdfaxsaG/dmf/ZmZmV1++eUGwD760Y96mb/6q7+yUop9+ctfNjOz3/u937Pb3/72Tn/2/b3f+7239JBu03DmmWfaz/zMz4Rnj3/84+2ss84ys5netzRkJ2N/0vdJT3qSnXnmmQGfBz/4wfZf/+t/vUXHeFuCKSc6w0c+8hEDYF/60pfM7LZF74Nm+XXPnj245JJLcPrpp/uzrutw+umn46KLLjqAmB18cN111wEAjj76aADAJZdcgr179wbannTSSTjxxBOdthdddBFOOeWUcEH0GWecgV27duHTn/60l9E2WOY7dX7OPvtsnHnmmSOazPS+ZeH//J//g1NPPRVPfOITcdxxx+H+978//uiP/sh//8IXvoCdO3cGWh155JF48IMfHOh91FFH4dRTT/Uyp59+Orquw8UXX+xlfvAHfxDr6+te5owzzsAVV1yBf/u3f7u1h3mbge///u/HBRdcgH/8x38EAHziE5/ABz7wATzykY8EMNP71ob9Sd9Zx0zDddddh1IKjjrqKAC3LXofNE7dP//zP2O1Wo3eOrF9+3bs3LnzAGF18EHf93juc5+Lhz70oTj55JMBADt37sT6+rozKEFpu3Pnzkna87ebKrNr1y7ccMMNt8ZwbrNw/vnn4x/+4R9w7rnnjn6b6X3Lwuc//3m89rWvxT3veU/89V//NZ75zGfiF37hF/CGN7wBQKPXTemOnTt34rjjjgu/L5dLHH300TdrTr4T4Jd/+ZfxEz/xEzjppJOwtraG+9///njuc5+Ls846C8BM71sb9id991XmO5n+N954I174whfiyU9+MrZt2wbgtkXvA/KasBkOHJx99tm47LLL8IEPfOBAo3LIwlVXXYXnPOc5eM973oMtW7YcaHQOeej7Hqeeeip+67d+CwBw//vfH5dddhl+//d/H0996lMPMHaHHrzpTW/CG9/4Rvzpn/4p7nOf++DSSy/Fc5/7XJxwwgkzvWc4pGHv3r140pOeBDPDa1/72gONziQcNJm6Y489FovFYnRC8JprrsHxxx9/gLA6uOBZz3oW3vnOd+LCCy/Ene98Z39+/PHHY8+ePbj22mtDeaXt8ccfP0l7/nZTZbZt24bDDjvslh7ObRYuueQSfPWrX8UDHvAALJdLLJdLvP/978erXvUqLJdLbN++fab3LQh3vOMdce973zs8u9e97oUrr7wSQKPXTemO448/Hl/96lfD75ubm/jXf/3XmzUn3wnw/Oc/37N1p5xyCp7ylKfgec97nmelZ3rfurA/6buvMt+J9KdD96UvfQnvec97PEsH3LbofdA4devr63jgAx+ICy64wJ/1fY8LLrgAO3bsOICY3fbBzPCsZz0Lb3vb2/De974Xd7/73cPvD3zgA7G2thZoe8UVV+DKK6902u7YsQOf+tSnAuOSsWlQd+zYEdpgme+0+Xn4wx+OT33qU7j00kv936mnnoqzzjrLP8/0vuXgoQ996OiKnn/8x3/EXe96VwDA3e9+dxx//PGBVrt27cLFF18c6H3ttdfikksu8TLvfe970fc9HvzgB3uZv/u7v8PevXu9zHve8x587/d+L25/+9vfauO7rcE3v/lNdF00HYvFAn3fA5jpfWvD/qTvrGMGoEP3uc99Dn/7t3+LY445Jvx+m6L3f/hIxW0Azj//fNvY2LDXv/71dvnll9sznvEMO+qoo8IJwRnG8MxnPtOOPPJIe9/73mdf+cpX/N83v/lNL/NzP/dzduKJJ9p73/te+9jHPmY7duywHTt2+O+8YuMRj3iEXXrppfbud7/b7nCHO0xesfH85z/fPvOZz9hrXvOa78grNqZAT7+azfS+JeEjH/mILZdL+83f/E373Oc+Z2984xtt69at9id/8ide5rzzzrOjjjrK3v72t9snP/lJe8xjHjN5BcT9739/u/jii+0DH/iA3fOe9wxXElx77bW2fft2e8pTnmKXXXaZnX/++bZ169bviCs2FJ761Kfane50J7/S5K1vfasde+yx9oIXvMDLzPT+9uD666+3j3/84/bxj3/cANgrXvEK+/jHP+6nLfcXfT/4wQ/acrm0l7/85faZz3zGXvrSlx6SV5rcFL337Nljj370o+3Od76zXXrppcGG6knW2wq9Dyqnzszs1a9+tZ144om2vr5up512mn34wx8+0Cjd5gHA5L/Xve51XuaGG26wn//5n7fb3/72tnXrVnvc4x5nX/nKV0I7X/ziF+2Rj3ykHXbYYXbsscfaL/7iL9revXtDmQsvvNDud7/72fr6ut3jHvcIfXwnQ3bqZnrfsvCOd7zDTj75ZNvY2LCTTjrJ/vAP/zD83ve9vfjFL7bt27fbxsaGPfzhD7crrrgilPmXf/kXe/KTn2yHH364bdu2zZ72tKfZ9ddfH8p84hOfsIc97GG2sbFhd7rTney888671cd2W4Ndu3bZc57zHDvxxBNty5Ytdo973MN+5Vd+JRi4md7fHlx44YWTOvupT32qme1f+r7pTW+y7/me77H19XW7z33uY3/5l395q437QMFN0fsLX/jCPm3ohRde6G3cVuhdzOQa8BlmmGGGGWaYYYYZDko4aPbUzTDDDDPMMMMMM8ywb5iduhlmmGGGGWaYYYZDAGanboYZ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LkzZ+dr5mXp5Xh9/i1NvmDA20QZz0llMyvgClqSzWLg3EUE52vUjJKUIvqfL0W9bBYKT8zEj6yCC9lw+PzNsWJC1GyGZxagd4IsH00/ClJGH2Xv2wpqcp62t5Hy8lJWG0Liv0XPLAdyTXABrwhltXil5WLg3ESHJhVicux0hyTb0OGzDfamnEZSVr80rpRCv7vkM1nTtnAlZdwTNJj3uzzwNc0oeJqUdQnBSnjavZO38CNl4HP6b92N8ciHMydq8rOmFWJCTjODUQryduw2hCfnwzziFe5ILYMkq0sZK1cYKTrNh4Z4EhGw4hqBdJ7QcJufhyfQDCE7W1pg1OQ/vHdyG0LXHELBxP8bvzoNl9xlEZ+yFNb0Q7+RuRUhyId7f/zEshysRuPMr/FvqGViyivDCnkxY0wqxKGcHLEln8eqezxCy8TgsCScRmXYGltR8rZ+Uy+dnwlltrJgjMK3fjzG7CmDOLsKT6QdgTSvE2/u3IyQxH/97YCtM39Yh6KD2umXNsOGlPRnusay7z2LhviSExn8La8IZ/HL3KVhT8jErIweW1Hy8vX87gnedxf8c2I6K2wwwx36OMbsKYMkswoK9KQhOKcT/S/vMQ9VIF/mbOiIiIiL6cVjUEREREXkBFnVEREREXoBFHREREZEXYFFHRERE5AVY1BERERF5ARZ1RERERF6ARR0RERGRF2BRR0REROQFWNQREREReQEWdUREREReQBJCCE8H8UPV1NQgMDAQkWHPQicbPB0OEREREQDAqdqRWrIC1dXVCAgI6NSx+U4dERERkRdgUUdERETkBVjUEREREXkBFnVEREREXoBFHREREZEXYFFHRERE5AVY1BERERF5ARZ1RERERF6ARR0RERGRF2BRR0REROQFWNQREREReQEWdURERERegEUdERERkRdgUUdERETkBVjUEREREXkBFnVEREREXoBFHREREZEXYFFHRERE5AVY1BERERF5ARZ1RERERF6ARR0RERGRF2BRR0REROQFWNQREREReQEWdURERERegEUdERERkRdgUUdERETkBVjUEREREXkBFnVEREREXoBFHREREZEXYFFHRERE5AVY1BERERF5ARZ1RERERF6ARR0RERGRF2BRR0REROQFdJ4OgOiGEQJlDw0ERKttEiCpgJCu/A4AQgYkl7ZNSNq/Zaf2CKnVvsv/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", + "image/png": "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oxluNzc38YEPfCBbn7Nnz+L666/XZ971rnchhICnPOUp+szf/M3foK5rfeYd73gHHvGIR2Dfvn1ftfmdz7C7uwvvc7FXFAVCCAD6tflagvtyLS44Xnd/Z298JfCmN72JhsMh/cEf/AHdeOON9PznP5/W19ezzL4e/t/hBS94Aa2trdFf//Vf01133aX/dnd39Zkf+ZEfocsuu4ze9a530Yc//GG6+uqr6eqrr9bvpZzGt3zLt9ANN9xAf/EXf0GHDh06ZzmNl770pfSpT32KXve61/XlNP6RYLNiifr1uT/hgx/8IJVlSb/0S79En/3sZ+mNb3wjTSYT+sM//EN95lWvehWtr6/T//pf/4s+9rGP0bd/+7efs4zDE57wBPrABz5A733ve+nhD394Vsbh7NmzdOTIEXrOc55Dn/jEJ+hNb3oTTSaTvqTGPcBzn/tcuuSSS7TcyZ/8yZ/QwYMH6WUve5k+06/NfQdbW1v0kY98hD7ykY8QAHrNa15DH/nIR+iLX/wiEd13a/F3f/d3VJYl/eqv/ip96lOfop/7uZ/ry53cl/Da176WLrvsMhoMBnTVVVfR+9///vt7SBccADjnv9e//vX6zHQ6pX//7/897du3jyaTCX3nd34n3XXXXVk7X/jCF+iZz3wmjcdjOnjwIP3ET/wE1XWdPfPud7+bHv/4x9NgMKCHPOQhWR893HvoKnb9+ty/8Na3vpUe85jH0HA4pMsvv5x+93d/N/s+hEA/+7M/S0eOHKHhcEhPf/rT6aabbsqeufvuu+n7v//7aXl5mVZXV+kHf/AHaWtrK3vmox/9KD3taU+j4XBIl1xyCb3qVa/6qs/tfIbNzU160YteRJdddhmNRiN6yEMeQj/90z+dlcLo1+a+g3e/+93nlDXPfe5ziei+XYs//uM/pq/7uq+jwWBAj370o+nP//zPv2rz/mqDIzIlt3vooYceeuihhx56OG/hvImx66GHHnrooYceeujhnqFX7HrooYceeuihhx4uEOgVux566KGHHnrooYcLBHrFroceeuihhx566OECgV6x66GHHnrooYceerhAoFfseuihhx566KGHHi4Q6BW7HnrooYceeuihhwsEesWuhx566KGHHnro4QKBXrHroYceeuihhx56uECgV+x66KGHHnrooYceLhDoFbseeuihhx566KGHCwR6xa6HHnrooYceeujhAoFeseuhhx566KGHHnq4QKBX7HrooYceeuihhx4uEOgVux566KGHHnrooYcLBHrFroceeuihhx566OECgV6x66GHHnrooYceerhAoFfseuihhx566KGHHi4Q6BW7HnrooYd7gNtuuw0///M/j6uuugr79u3DwYMH8U3f9E34v//3/37Fbd1xxx34nu/5Hqyvr2N1dRXf/u3fjptvvvmrMOoeeujhnys4IqL7exA99NBDD1+r8F/+y3/By172MnzHd3wHvuEbvgFN0+C//bf/hn/4h3/A7//+7+MHf/AH71U729vbeOITn4iNjQ38xE/8BKqqwq/92q+BiHDDDTfgwIEDX+WZ9NBDD/8coFfseuihhx7uAT75yU/iyJEjOHjwoH42n8/x+Mc/Htvb27jtttvu8f2dnR0sLS3h1a9+NX7yJ38SH/zgB/HkJz8ZAPDpT38aj3nMY/Cyl70Mv/zLv/xVnUcPPfTwzwN6V2wPPfRwwcIdd9yBH/7hH8bFF1+M4XCIBz/4wXjBC16AxWIBALj55pvx7Gc/G/v378dkMsFTn/pU/Pmf/3nWxqMf/ehMqQOA4XCIZz3rWbj99tuxtbWln//AD/wAlpeX8fnPfx7PetazsLKyguuuuw4A8Ja3vAVPfvKTVakDgMsvvxxPf/rT8cd//MdfLRT00EMP/8ygvL8H0EMPPfTw1YA777wTV111Fc6ePYvnP//5uPzyy3HHHXfgLW95C3Z3d3HmzBl8/dd/PXZ3d/FjP/ZjOHDgAN7whjfg277t2/CWt7wF3/md33mP7R87dgyTyQSTyST7vGkaXHPNNXja056GX/3VX8VkMkEIAR/72MfwQz/0Q3vaueqqq/BXf/VX2NrawsrKyj8pDnrooYd/ftArdj300MMFCS9/+ctx7NgxfOADH8CVV16pn//CL/wCiAgveclLcPz4cfzt3/4tnva0pwEAnve85+Gxj30sXvKSl+Dbv/3b4f25nRqf+9zn8Cd/8id49rOfjaIosu/m8zme/exn45WvfKV+durUKcznc1x00UV72pLP7rzzTjziEY/4f553Dz308M8beldsDz30cMFBCAF/9md/hm/91m/NlDoB5xze/va346qrrlKlDgCWl5fx/Oc/H1/4whdw4403nrPt3d1dPPvZz8Z4PMarXvWqcz7zghe8IPt7Op0C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rbb41a9+RUVR0Mc+9jFavXo1vfvd76ZWq0XXXnvtn1wGfwpsV8Tu0EMPpTPPPFM+13VNixYtonPOOWcblmrq4/777ycAdOmllxIR0fr166nVatF3vvMdueaGG24gAHTZZZcRke+w1lpat26dXPO5z32OhoeHaXx8nIiI3vGOd9C+++6bvOvlL385rVy58k9dpSmBTZs20R577EEXX3wxPfe5zxVil9tn2+Lv/u7v6IgjjnjU351ztHDhQvr4xz8u361fv546nQ594xvfICKi1atXEwD6r//6L7nmJz/5CRlj6O677yYios9+9rM0a9YsaS9+91577fXHrtKUwfHHH09nnHFG8t2LXvQiOuWUU4got822RJPYbc22eNnLXkbHH398Up7DDjuM/uIv/uKPWsethe1mKHZiYgJXXnklVqxYId9Za7FixQpcdtll27BkUx8bNmwAAMyePRsAcOWVV6LX6yVtsffee2Pp0qXSFpdddhn233//ZNPplStXYuPGjbj++uvlGv0Mvia35xPDmWeeieOPP75Phrl9ti1++MMf4uCDD8ZLX/pSzJ8/H09/+tPxxS9+UX6/7bbbsG7dukS2M2bMwGGHHZa0z8yZM3HwwQfLNStWrIC1Fr/97W/lmuc85zlot9tyzcqVK7FmzRo88sgjf+pqbpd41rOehVWrVuGmm24CAFxzzTX45S9/iWOPPRZAbpunErZmW0w1W7fdELsHH3wQdV33nU6xYMECrFu3bhuVaurDOYe3ve1tOPzww7HffvsBANatW4d2u42ZM2cm1+q2WLdu3aRtxb891jUbN27E6Ojon6I6Uwbf/OY38bvf/Q7nnHNO32+5fbYtbr31Vnzuc5/DHnvsgZ/+9Kd405vehL/6q7/CV7/6VQBRvo9ly9atW4f58+cnv5dlidmzZz+pNsxI8c53vhOveMUrsPfee6PVauHpT3863va2t+GUU04BkNvmqYSt2RaPds322lbb5EixjO0HZ555Jq677jr88pe/3NZFyQi488478da3vhUXX3wxut3uti5ORgPOORx88MH4h3/4BwDA05/+dFx33XX4/Oc/j9NOO20bl+5/Nr797W/ja1/7Gr7+9a9j3333xdVXX423ve1tWLRoUW6bjCmD7SZjN3fuXBRF0bey77777sPChQu3UammNt785jfjggsuwM9//nPsuOOO8v3ChQsxMTGB9evXJ9frtli4cOGkbcW/PdY1w8PDGBgY+GNXZ8rgyiuvxP33349nPOMZKMsSZVni0ksvxac//WmUZYkFCxbk9tmG2GGHHbBs2bLku3322Qdr164FEOX7WLZs4cKFuP/++5Pfq6rCww8//KTaMCPF29/+dsna7b///jj11FPx13/915L5zm3z1MHWbItHu2Z7bavthti1220cdNBBWLVqlXznnMOqVauwfPnybViyqQciwpvf/GZ8//vfx89+9jPssssuye8HHXQQWq1W0hZr1qzB2rVrpS2WL1+Oa6+9Nul0F198MYaHh8XpLV++PHkGX5Pb87Hx/Oc/H9deey2uvvpq+e/ggw/GKaecIv/O7bPtcPjhh/dtD3TTTTdhp512AgDssssuWLhwYSLbjRs34re//W3SPuvXr8eVV14p1/zsZz+Dcw6HHXaYXPOLX/wCvV5Prrn44oux1157YdasWX+y+m3PGBkZgbWp2yuKAs45ALltnkrYmm0x5Wzdtl698WTwzW9+kzqdDp133nm0evVqesMb3kAzZ85MVvZl/L/jTW96E82YMYMuueQSuvfee+W/kZERueaNb3wjLV26lH72s5/RFVdcQcuXL6fly5fL77ydxtFHH01XX301XXTRRTRv3rxJt9N4+9vfTjfccAOde+65eTuN/yb0qlii3D7bEpdffjmVZUkf/vCH6eabb6avfe1rNDg4SP/2b/8m13zkIx+hmTNn0g9+8AP6/e9/TyeddNKk2zg8/elPp9/+9rf0y1/+kvbYY49kG4f169fTggUL6NRTT6XrrruOvvnNb9Lg4GDeUuMxcNppp9HixYtlu5Pvfe97NHfuXHrHO94h1+S22XrYtGkTXXXVVXTVVVcRAPrEJz5BV111Fd1xxx1EtPXa4le/+hWVZUn/+I//SDfccAO9733vy9udbE185jOfoaVLl1K73aZDDz2UfvOb32zrIk05AJj0v6985StyzejoKP3lX/4lzZo1iwYHB+mFL3wh3Xvvvclzbr/9djr22GNpYGCA5s6dS3/zN39DvV4vuebnP/85Pe1pT6N2u0277rpr8o6MJ44mscvts23xox/9iPbbbz/qdDq0995707/+678mvzvn6D3veQ8tWLCAOp0OPf/5z6c1a9Yk1zz00EP0yle+kqZPn07Dw8P02te+ljZt2pRc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", "text/plain": [ "
" ] @@ -66,19 +66,19 @@ } ], "source": [ - "file_name = files[4]\n", + "file_name = files[0]\n", "print(file_name)\n", "data = joblib.load(file_name)\n", "for key, value in data.items():\n", " print(key, value.shape)\n", "plt.subplot(3, 1, 1)\n", - "plt.imshow(data['mhr'][4], aspect='auto', origin='lower')\n", + "plt.imshow(data['mhr'][4].T, aspect='auto', origin='lower')\n", "plt.title('mhrb4')\n", "plt.subplot(3, 1, 2)\n", - "plt.imshow(data['co2'][0], aspect='auto', origin='lower')\n", + "plt.imshow(data['co2'][0].T, aspect='auto', origin='lower')\n", "plt.title('co2r0')\n", "plt.subplot(3, 1, 3)\n", - "plt.imshow(data['pin'][:,0,:], aspect='auto', origin='lower', interpolation='none')\n", + "plt.imshow(data['pin'][:,:,0], aspect='auto', origin='lower', interpolation='none')\n", "plt.title('pin')\n", "plt.tight_layout()\n", "plt.show()" @@ -90,7 +90,9 @@ "id": "7fbe52bc", "metadata": {}, "outputs": [], - "source": [] + "source": [ + "data = joblib.load('../data/170000/170000.pkl')" + ] } ], "metadata": { diff --git a/notebooks/data_preparation.ipynb b/notebooks/data_preparation.ipynb index ffea9fe..a9b4cfd 100644 --- a/notebooks/data_preparation.ipynb +++ b/notebooks/data_preparation.ipynb @@ -13,7 +13,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "id": "9b8f64ca", "metadata": {}, "outputs": [], @@ -48,7 +48,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 3, "id": "c8e825ce", "metadata": {}, "outputs": [], @@ -64,7 +64,7 @@ }, { "cell_type": "code", - "execution_count": 60, + "execution_count": 4, "id": "a68aaa6f", "metadata": {}, "outputs": [ @@ -127,7 +127,7 @@ }, { "cell_type": "code", - "execution_count": 61, + "execution_count": null, "id": "fe35d6ca", "metadata": {}, "outputs": [], @@ -140,7 +140,7 @@ }, { "cell_type": "code", - "execution_count": 62, + "execution_count": 12, "id": "87a1b47e", "metadata": {}, "outputs": [], @@ -156,7 +156,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 13, "id": "40750cb0", "metadata": {}, "outputs": [], @@ -199,7 +199,7 @@ }, { "cell_type": "code", - "execution_count": 67, + "execution_count": 17, "id": "bc37f8e0", "metadata": {}, "outputs": [ @@ -207,19 +207,19 @@ "name": "stdout", "output_type": "stream", "text": [ - "(653000,) (513, 2551)\n" + "(1, 653000) (1, 2551, 513)\n" ] } ], "source": [ - "first_arr = list(samples[0].values())[0].iloc[:, 0].values\n", + "first_arr = np.array([list(samples[0].values())[0].iloc[:, 0].values])\n", "transform_shape = stft_transform(x=first_arr).shape\n", "print(first_arr.shape, transform_shape)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "id": "f6cae5ac", "metadata": {}, "outputs": [ @@ -227,13 +227,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "mhr (8, 513, 2551)\n", - "ece (48, 513, 2551)\n", - "co2 (4, 513, 2551)\n", - "gas (5, 1, 2551)\n", - "ech (11, 1, 2551)\n", - "pin (8, 1, 2551)\n", - "tin (8, 1, 2551)\n" + "mhr (8, 2551, 513)\n", + "ece (48, 2551, 513)\n", + "co2 (4, 2551, 513)\n", + "gas (5, 2551, 1)\n", + "ech (11, 2551, 1)\n", + "pin (8, 2551, 1)\n", + "tin (8, 2551, 1)\n" ] } ], diff --git a/src/fusionaihub/datasets/prepare/config/default.yaml b/src/fusionaihub/datasets/prepare/config/default.yaml index bf84ecc..406ce79 100644 --- a/src/fusionaihub/datasets/prepare/config/default.yaml +++ b/src/fusionaihub/datasets/prepare/config/default.yaml @@ -36,7 +36,7 @@ signal: # Data processing parameters randomize_shots: true random_seed: 42 -num_shots: 50 +num_shots: 15000 fs_khz: 500 # Sampling frequency in kHz ip_threshold: 0.1 # Plasma current threshold window_ms: null # Window size in milliseconds @@ -47,6 +47,7 @@ start_time: null # Start time for signal extraction (null for auto-detection) end_time: null # End time for signal extraction (null for auto-detection) # Train/test split configuration +debug: false train_test_split: 0.2 # Directory paths diff --git a/src/fusionaihub/datasets/prepare/config/raw.yaml b/src/fusionaihub/datasets/prepare/config/raw.yaml index 79dc8f4..f3951a3 100644 --- a/src/fusionaihub/datasets/prepare/config/raw.yaml +++ b/src/fusionaihub/datasets/prepare/config/raw.yaml @@ -4,36 +4,35 @@ # Signal configuration - list of signals to process # Each signal has: [signal_name, abbreviation, should_transform] signal: - - ["magnetics_high_resolution", "mhr", false] - - ["ece_cali", "ece", false] - - ["co2_density", "co2", false] - - ["gas", "gas", false] - - ["ech", "ech", false] - - ["p_inj", "pin", false] - - ["t_inj", "tin", false] + magnetics_high_resolution: + abbr: "mhr" + make_stft: true + expected_channels: 8 # Data processing parameters randomize_shots: true random_seed: 42 num_shots: 50 -fs_khz: 500 # Sampling frequency in kHz +fs_khz: 440 # Sampling frequency in kHz ip_threshold: 0.1 # Plasma current threshold window_ms: 250 # Window size in milliseconds hop_ms: 50 # Hop size in milliseconds remove_empty: true +do_stft: false +start_time: 0 # Start time for signal extraction (null for auto-detection) +end_time: 5000 # End time for signal extraction (null for auto-detection) # Train/test split configuration train_test_split: 0.2 # Directory paths -raw_data_dir: "/scratch/gpfs/EKOLEMEN/d3d_fusion_data" -output_dir: "/scratch/gpfs/EKOLEMEN/nc1514/foundation_v1" +raw_data_dir: /scratch/gpfs/EKOLEMEN/d3d_fusion_data +output_dir: /scratch/gpfs/nc1514/encoding/data/magnetics # Processing parameters stft: n_fft: 1024 hop_length: 256 - window_type: "hann" # Output settings -compression: true # Whether to compress saved files \ No newline at end of file +compression: false # Whether to compress saved files \ No newline at end of file diff --git a/src/fusionaihub/datasets/prepare/prepare_dataset.py b/src/fusionaihub/datasets/prepare/prepare_dataset.py index 91f4e54..22e413f 100644 --- a/src/fusionaihub/datasets/prepare/prepare_dataset.py +++ b/src/fusionaihub/datasets/prepare/prepare_dataset.py @@ -110,9 +110,11 @@ def prepare_dataset(cfg: dict) -> None: cache_dir.mkdir(parents=True, exist_ok=True) # Process shots using the appropriate function - # process_shot_stft(170000, cfg, cache_dir) # For debugging - mapper = ParallelMapper() - mapper(process_shot_stft, all_shots, cfg=cfg, out_dir=cache_dir) + if cfg.get("debug", False): + process_shot_stft(170000, cfg, cache_dir) # For debugging + else: + mapper = ParallelMapper() + mapper(process_shot_stft, all_shots, cfg=cfg, out_dir=cache_dir) # Move cached files into train/test split logger.info("Splitting dataset into train and valid sets...") diff --git a/src/fusionaihub/datasets/prepare/shot_processing.py b/src/fusionaihub/datasets/prepare/shot_processing.py index 1a72158..5d76899 100644 --- a/src/fusionaihub/datasets/prepare/shot_processing.py +++ b/src/fusionaihub/datasets/prepare/shot_processing.py @@ -10,6 +10,8 @@ import logging from pathlib import Path from typing import Dict +from warnings import simplefilter +simplefilter(action="ignore", category=pd.errors.PerformanceWarning) from .data_extraction import ( extract_signal, @@ -72,7 +74,6 @@ def process_shot_stft( dfs = [] missing_signals = [] for signal in cfg['signal'].items(): - print(signal[1]) try: df = extract_signal( shot_number=shot_number, @@ -85,12 +86,6 @@ def process_shot_stft( f"{signal[1]['abbr']}_{col}" if col != "time" else col for col in range(len(df.columns)) ] - - # Add a log to validate our assumption about the config and the transform key: - logger.debug(f"Signal config for {signal[0]}: {signal[1]}") - - # Add a column to the dataframe for this signal indicating if a transform is present. - # We'll use the signal's abbreviation to name the column, e.g., 'IP_transform' df = align_signal( df=df, start_time=start_time, @@ -114,14 +109,14 @@ def process_shot_stft( raise e # Add missing signals - try: - dfs = [] - for signal_abbr, channel in missing_signals: - df[f"{signal_abbr}_{channel}"] = np.nan - df[f"{signal_abbr}_{channel}_state"] = False - except Exception as e: - logger.error(f"Error: Could not add missing signals for shot {shot_number}: {e}") - raise e + if len(missing_signals) > 0: + try: + for signal_abbr, channel in missing_signals: + df[f"{signal_abbr}_{channel}"] = np.nan + df[f"{signal_abbr}_{channel}_state"] = False + except Exception as e: + logger.error(f"Error: Could not add missing signals for shot {shot_number}: {e}") + raise e # Split into samples try: @@ -162,9 +157,9 @@ def process_shot_stft( # Get the first transformed sample to determine STFT dimensions try: - first_arr = list(samples[0].values())[0].iloc[:, 0].values + first_arr = np.array([list(samples[0].values())[0].iloc[:, 0].values]) transform_shape = stft_transform(x=first_arr).shape - logger.info(f"Using {getattr(first_arr, 'name', 'unknown')} as reference for STFT dimensions: {transform_shape}") + logger.info(f"Using {first_arr.shape} as reference for STFT dimensions: {transform_shape}") except Exception as e: logger.error(f"Error: Could not get first transformed sample for shot {shot_number}: {e}") raise e @@ -188,6 +183,9 @@ def process_shot_stft( x=value[cols].to_numpy().T, ref_shape=transform_shape, ) + # logger.info( + # f"Transformed {abbr} with shape {transformed_samples[abbr].shape}" + # ) save_sample(transformed_samples, out_dir, key) except Exception as e: logger.error(f"Error: Could not transform samples for shot {shot_number}: {e}") diff --git a/src/fusionaihub/datasets/prepare/signal_processing.py b/src/fusionaihub/datasets/prepare/signal_processing.py index 2339962..838eaf5 100644 --- a/src/fusionaihub/datasets/prepare/signal_processing.py +++ b/src/fusionaihub/datasets/prepare/signal_processing.py @@ -61,6 +61,7 @@ def stft_transform( return_complex=True ) y = torch.log(torch.abs(y)) + y = y.permute(0, 2, 1) return y.numpy() @@ -79,9 +80,9 @@ def resample_transform( Resampled signal to match reference time dimension """ x = x.astype(np.float32) - target_length = ref_shape[1] + target_length = ref_shape[1] # assuming time dimension is second dimension y = [resample_fn(x_, target_length) for x_ in x] - y = np.expand_dims(y, axis=1) + y = np.expand_dims(y, axis=2) return np.array(y) From 6fc8109bbea07f1e630358c165e7e575ad705c4e Mon Sep 17 00:00:00 2001 From: Nathaniel Chen Date: Sun, 13 Jul 2025 15:26:07 -0400 Subject: [PATCH 034/103] Update time allocation in prepare_data.sh, modify YAML configuration for signal processing, and adjust sample indexing in sample_processing.py. Reset execution counts in Jupyter notebooks for consistency and clarity. --- commands/prepare_data.sh | 2 +- notebooks/data_preparation.ipynb | 111 ++++++++++++------ .../datasets/prepare/config/raw.yaml | 2 +- .../datasets/prepare/sample_processing.py | 4 +- 4 files changed, 83 insertions(+), 36 deletions(-) diff --git a/commands/prepare_data.sh b/commands/prepare_data.sh index 967d552..9ebb115 100644 --- a/commands/prepare_data.sh +++ b/commands/prepare_data.sh @@ -4,7 +4,7 @@ #SBATCH --ntasks=1 # total number of tasks across all nodes #SBATCH --cpus-per-task=96 # cpu-cores per task (>1 if multi-threaded tasks) #SBATCH --mem=500GB # memory per node -#SBATCH --time=01:00:00 # maximum time needed (HH:MM:SS) +#SBATCH --time=010:00:00 # maximum time needed (HH:MM:SS) #SBATCH --output=logs/%A_%a.out #SBATCH --error=logs/%A_%a.err diff --git a/notebooks/data_preparation.ipynb b/notebooks/data_preparation.ipynb index a9b4cfd..b67b55f 100644 --- a/notebooks/data_preparation.ipynb +++ b/notebooks/data_preparation.ipynb @@ -25,7 +25,7 @@ "import yaml\n", "\n", "shot_number = 171348\n", - "yaml_path = \"../src/fusionaihub/datasets/prepare/config/default.yaml\"\n", + "yaml_path = \"../src/fusionaihub/datasets/prepare/config/raw.yaml\"\n", "with open(yaml_path, 'r') as f:\n", " cfg = yaml.safe_load(f)\n", "\n", @@ -48,7 +48,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 20, "id": "c8e825ce", "metadata": {}, "outputs": [], @@ -64,7 +64,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 21, "id": "a68aaa6f", "metadata": {}, "outputs": [ @@ -73,19 +73,7 @@ "output_type": "stream", "text": [ "magnetics_high_resolution\n", - "{'abbr': 'mhr', 'make_stft': True, 'expected_channels': 8}\n", - "ece_cali\n", - "{'abbr': 'ece', 'make_stft': True, 'expected_channels': 48}\n", - "co2_density\n", - "{'abbr': 'co2', 'make_stft': True, 'expected_channels': 4}\n", - "gas\n", - "{'abbr': 'gas', 'make_stft': False, 'expected_channels': 5}\n", - "ech\n", - "{'abbr': 'ech', 'make_stft': False, 'expected_channels': 11}\n", - "p_inj\n", - "{'abbr': 'pin', 'make_stft': False, 'expected_channels': 8}\n", - "t_inj\n", - "{'abbr': 'tin', 'make_stft': False, 'expected_channels': 8}\n" + "{'abbr': 'mhr', 'make_stft': False, 'expected_channels': 8}\n" ] } ], @@ -127,7 +115,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 22, "id": "fe35d6ca", "metadata": {}, "outputs": [], @@ -140,10 +128,21 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 23, "id": "87a1b47e", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "22" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "samples = split_samples(\n", " df=df,\n", @@ -151,22 +150,53 @@ " window_ms=cfg[\"window_ms\"],\n", " hop_ms=cfg[\"hop_ms\"],\n", " fs_khz=cfg[\"fs_khz\"],\n", - ")" + ")\n", + "len(samples)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "95af9251", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[dict_keys(['171348_0']), dict_keys(['171348_1']), dict_keys(['171348_2']), dict_keys(['171348_3']), dict_keys(['171348_4']), dict_keys(['171348_5']), dict_keys(['171348_6']), dict_keys(['171348_7']), dict_keys(['171348_8']), dict_keys(['171348_9']), dict_keys(['171348_10']), dict_keys(['171348_11']), dict_keys(['171348_12']), dict_keys(['171348_13']), dict_keys(['171348_14']), dict_keys(['171348_15']), dict_keys(['171348_16']), dict_keys(['171348_17']), dict_keys(['171348_18']), dict_keys(['171348_19']), dict_keys(['171348_20']), dict_keys(['171348_21'])]\n" + ] + } + ], + "source": [ + "print([sample.keys() for sample in samples])" ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 25, "id": "40750cb0", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "22" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "samples = remove_empty_samples(samples)" + "samples = remove_empty_samples(samples)\n", + "len(samples)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 26, "id": "de25ce4f", "metadata": {}, "outputs": [ @@ -174,13 +204,28 @@ "name": "stdout", "output_type": "stream", "text": [ - "mhr (8, 1, 653000)\n", - "ece (48, 1, 653000)\n", - "co2 (4, 1, 653000)\n", - "gas (5, 1, 653000)\n", - "ech (11, 1, 653000)\n", - "pin (8, 1, 653000)\n", - "tin (8, 1, 653000)\n" + "mhr (8, 1, 110000)\n", + "mhr (8, 1, 110000)\n", + "mhr (8, 1, 110000)\n", + "mhr (8, 1, 110000)\n", + "mhr (8, 1, 110000)\n", + "mhr (8, 1, 110000)\n", + "mhr (8, 1, 110000)\n", + "mhr (8, 1, 110000)\n", + "mhr (8, 1, 110000)\n", + "mhr (8, 1, 110000)\n", + "mhr (8, 1, 110000)\n", + "mhr (8, 1, 110000)\n", + "mhr (8, 1, 110000)\n", + "mhr (8, 1, 110000)\n", + "mhr (8, 1, 110000)\n", + "mhr (8, 1, 110000)\n", + "mhr (8, 1, 110000)\n", + "mhr (8, 1, 110000)\n", + "mhr (8, 1, 110000)\n", + "mhr (8, 1, 110000)\n", + "mhr (8, 1, 110000)\n", + "mhr (8, 1, 110000)\n" ] } ], @@ -199,7 +244,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 12, "id": "bc37f8e0", "metadata": {}, "outputs": [ @@ -207,7 +252,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "(1, 653000) (1, 2551, 513)\n" + "(1, 110000) (1, 430, 513)\n" ] } ], diff --git a/src/fusionaihub/datasets/prepare/config/raw.yaml b/src/fusionaihub/datasets/prepare/config/raw.yaml index f3951a3..d243396 100644 --- a/src/fusionaihub/datasets/prepare/config/raw.yaml +++ b/src/fusionaihub/datasets/prepare/config/raw.yaml @@ -6,7 +6,7 @@ signal: magnetics_high_resolution: abbr: "mhr" - make_stft: true + make_stft: false expected_channels: 8 # Data processing parameters diff --git a/src/fusionaihub/datasets/prepare/sample_processing.py b/src/fusionaihub/datasets/prepare/sample_processing.py index d3e9fb0..6e96434 100644 --- a/src/fusionaihub/datasets/prepare/sample_processing.py +++ b/src/fusionaihub/datasets/prepare/sample_processing.py @@ -46,13 +46,15 @@ def split_samples( # Separate samples samples = [] + start_window_idx = 0 for start_index in range(0, len(df) - num_samples + 1, hop_samples): end_index = start_index + num_samples sample = df.iloc[start_index:end_index] if len(sample) == num_samples: samples.append({ - f"{shot_number}_{start_index}": sample, + f"{shot_number}_{start_window_idx}": sample, }) + start_window_idx += 1 return samples From 20a2aadf98e14645da57cae81ce86b0fe3b0629c Mon Sep 17 00:00:00 2001 From: Nathaniel Chen <79379842+nathanchenseanwalter@users.noreply.github.com> Date: Mon, 14 Jul 2025 14:44:24 -0400 Subject: [PATCH 035/103] Update README.md --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index c8b2ba6..a44725a 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,10 @@ A general fusion hub for the Princeton cluster designed to standardize fusion ma This repository serves as a centralized platform for fusion-related machine learning workflows, providing standardized tools, processes, and methodologies for plasma control research at Princeton. ## Setup + +Go to your scratch directory +/scratch/gpfs/ + In your scratch directory, run ```bash git clone git@github.com:PlasmaControl/FusionAIHub.git From 886fba2f2a644cfebb4efb3b93da5668cbc0bef5 Mon Sep 17 00:00:00 2001 From: Nathaniel Chen <79379842+nathanchenseanwalter@users.noreply.github.com> Date: Mon, 14 Jul 2025 14:44:48 -0400 Subject: [PATCH 036/103] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a44725a..4041ae2 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ This repository serves as a centralized platform for fusion-related machine lear ## Setup Go to your scratch directory -/scratch/gpfs/ +/scratch/gpfs/[username] In your scratch directory, run ```bash From 1ceaaf64d07863f7ac966f4e7b3b2f0653d77d11 Mon Sep 17 00:00:00 2001 From: Nathaniel Chen <79379842+nathanchenseanwalter@users.noreply.github.com> Date: Mon, 14 Jul 2025 14:46:26 -0400 Subject: [PATCH 037/103] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 4041ae2..eb7cae7 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,8 @@ This repository serves as a centralized platform for fusion-related machine lear ## Setup -Go to your scratch directory +Go to your scratch directory while you are on the HEAD node (so you need internet access, which computing nodes do not have). + /scratch/gpfs/[username] In your scratch directory, run From 544440f3e7989d883254c2ace15e160cb9573e4e Mon Sep 17 00:00:00 2001 From: Nathaniel Chen <79379842+nathanchenseanwalter@users.noreply.github.com> Date: Mon, 14 Jul 2025 14:51:07 -0400 Subject: [PATCH 038/103] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index eb7cae7..59f405f 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,8 @@ This repository serves as a centralized platform for fusion-related machine lear Go to your scratch directory while you are on the HEAD node (so you need internet access, which computing nodes do not have). +We will be using Python 3.12. + /scratch/gpfs/[username] In your scratch directory, run From 6a841b8cfd6ed95a1747c57121b8e6cdf6ba618f Mon Sep 17 00:00:00 2001 From: Nathaniel Chen <79379842+nathanchenseanwalter@users.noreply.github.com> Date: Mon, 14 Jul 2025 14:51:36 -0400 Subject: [PATCH 039/103] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 59f405f..d692c07 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,7 @@ cd FusionAIHub git switch foundation25 module load anaconda3/2024.10 python -m venv .venv +conda deactivate source .venv/bin/activate pip install --upgrade pip pip install uv From 57eaf9b2cdbfb1b9c84448f7d3b7ed8f4b7c02ee Mon Sep 17 00:00:00 2001 From: Nathaniel Chen <79379842+nathanchenseanwalter@users.noreply.github.com> Date: Mon, 14 Jul 2025 14:54:10 -0400 Subject: [PATCH 040/103] Update README.md --- README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index d692c07..f810b36 100644 --- a/README.md +++ b/README.md @@ -28,10 +28,15 @@ pip install uv uv sync ``` +From now on, whenever you go into the repo, all you need to do is to run +```bash +source .venv/bin/activate +``` + ## Contact For more information, please contact - **Azarakash Jalalvand** - **Peter Steiner** -- **Kouroche Bouichat** +- **Kouroche Bouchiat** - **Nathaniel Chen** From c6381560dd222988afb94d04362d0a68424c5355 Mon Sep 17 00:00:00 2001 From: Nathaniel Chen Date: Tue, 15 Jul 2025 10:02:17 -0400 Subject: [PATCH 041/103] Enhance data preparation script with additional logging options, update YAML configuration for increased shot count, and refine signal processing methods with new TODOs for future improvements. Adjust Jupyter notebook kernel display name and Python version for consistency. --- commands/prepare_data.sh | 2 +- notebooks/accessing_data.ipynb | 4 ++-- src/fusionaihub/datasets/prepare/config/raw.yaml | 4 ++-- src/fusionaihub/datasets/prepare/data_extraction.py | 8 ++++++++ src/fusionaihub/datasets/prepare/prepare_dataset.py | 2 ++ src/fusionaihub/datasets/prepare/shot_processing.py | 6 ++++++ src/fusionaihub/datasets/prepare/signal_processing.py | 9 ++++++--- 7 files changed, 27 insertions(+), 8 deletions(-) diff --git a/commands/prepare_data.sh b/commands/prepare_data.sh index 9ebb115..7e69625 100644 --- a/commands/prepare_data.sh +++ b/commands/prepare_data.sh @@ -13,4 +13,4 @@ module purge source .venv/bin/activate # Run pipeline -srun python -m fusionaihub.datasets.prepare \ No newline at end of file +srun python -m fusionaihub.datasets.prepare --config config/raw.yaml --log-level DEBUG \ No newline at end of file diff --git a/notebooks/accessing_data.ipynb b/notebooks/accessing_data.ipynb index 2f0abfc..4cd7659 100644 --- a/notebooks/accessing_data.ipynb +++ b/notebooks/accessing_data.ipynb @@ -97,7 +97,7 @@ ], "metadata": { "kernelspec": { - "display_name": ".venv", + "display_name": "Python 3", "language": "python", "name": "python3" }, @@ -111,7 +111,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.7" + "version": "3.12.4" } }, "nbformat": 4, diff --git a/src/fusionaihub/datasets/prepare/config/raw.yaml b/src/fusionaihub/datasets/prepare/config/raw.yaml index d243396..6813c80 100644 --- a/src/fusionaihub/datasets/prepare/config/raw.yaml +++ b/src/fusionaihub/datasets/prepare/config/raw.yaml @@ -12,7 +12,7 @@ signal: # Data processing parameters randomize_shots: true random_seed: 42 -num_shots: 50 +num_shots: 5000 fs_khz: 440 # Sampling frequency in kHz ip_threshold: 0.1 # Plasma current threshold window_ms: 250 # Window size in milliseconds @@ -23,7 +23,7 @@ start_time: 0 # Start time for signal extraction (null for auto-detection) end_time: 5000 # End time for signal extraction (null for auto-detection) # Train/test split configuration -train_test_split: 0.2 +train_test_split: 0.1 # Directory paths raw_data_dir: /scratch/gpfs/EKOLEMEN/d3d_fusion_data diff --git a/src/fusionaihub/datasets/prepare/data_extraction.py b/src/fusionaihub/datasets/prepare/data_extraction.py index a6ff154..79416a8 100644 --- a/src/fusionaihub/datasets/prepare/data_extraction.py +++ b/src/fusionaihub/datasets/prepare/data_extraction.py @@ -89,12 +89,16 @@ def align_signal( Aligned DataFrame with data and state columns """ # get sampling frequency + # TODO: can change to getting mean or individual fs_raw = len(df) / (df.index[-1] - df.index[0]) # crop time df = df.loc[(df.index >= start_time) & (df.index <= end_time)] # resample + # TODO: can this be precomputed? + # TODO: merge dataframe at closest time with a tolerance? + # TODO: have 2 modules based on "make_stft" function? num = len(df) num = int(num * fs / fs_raw) @@ -104,6 +108,9 @@ def align_signal( ) # mark on-off states + # TODO: add intermtermittent detection, not just beginning and end + # TODO: or just want the model to be robust + # TODO: shot defined as plasma current > 0.5 MA, or 0.5s. start_nan = (df.index[0] - start_time) * fs end_nan = (end_time - df.index[-1]) * fs start_pad = pd.DataFrame( @@ -120,6 +127,7 @@ def align_signal( df_state.columns = [f"{col}_state" for col in df.columns] # combine data with state + # TODO: change this to a variable df = df.astype(np.float32) df_state = df_state.astype(np.bool) df = pd.concat([df, df_state], axis=1) diff --git a/src/fusionaihub/datasets/prepare/prepare_dataset.py b/src/fusionaihub/datasets/prepare/prepare_dataset.py index 22e413f..e61c14d 100644 --- a/src/fusionaihub/datasets/prepare/prepare_dataset.py +++ b/src/fusionaihub/datasets/prepare/prepare_dataset.py @@ -97,6 +97,8 @@ def prepare_dataset(cfg: dict) -> None: np.random.seed(cfg["random_seed"]) all_shots = np.random.permutation(all_shots) + # Set to -1 to use all shots, or just don't include as argument + # However, keep argument to stay consistent with other scripts if cfg.get("num_shots") is not None: all_shots = all_shots[:cfg["num_shots"]] diff --git a/src/fusionaihub/datasets/prepare/shot_processing.py b/src/fusionaihub/datasets/prepare/shot_processing.py index 5d76899..cd1c814 100644 --- a/src/fusionaihub/datasets/prepare/shot_processing.py +++ b/src/fusionaihub/datasets/prepare/shot_processing.py @@ -56,7 +56,10 @@ def process_shot_stft( """ # Extract running time + # TODO: Change to call this running_time from ip_threshold try: + # TODO: shot defined as plasma current > 0.5 MA, or 0.5s + # TODO: George Sips, (find reference slide and cite it) start_time, end_time = extract_running_time( shot_number=shot_number, directory=Path(cfg["raw_data_dir"]), @@ -103,6 +106,7 @@ def process_shot_stft( # Create main aligned dataframe (important since interpolated signals # could have alignment off) try: + # TODO: if df is fixed to same length, then join without inner df = pd.concat(dfs, axis=1, join='inner') except Exception as e: logger.error(f"Error: Could not concatenate dataframes for shot {shot_number}: {e}") @@ -119,6 +123,7 @@ def process_shot_stft( raise e # Split into samples + # TODO: rename this to slice_windows try: samples = split_samples( df=df, @@ -132,6 +137,7 @@ def process_shot_stft( raise e # Remove empty samples + # TODO: Add warning if samples change even if no windows and using ip criterion try: samples = remove_empty_samples(samples) except Exception as e: diff --git a/src/fusionaihub/datasets/prepare/signal_processing.py b/src/fusionaihub/datasets/prepare/signal_processing.py index 838eaf5..25abb31 100644 --- a/src/fusionaihub/datasets/prepare/signal_processing.py +++ b/src/fusionaihub/datasets/prepare/signal_processing.py @@ -51,16 +51,19 @@ def stft_transform( Returns: Log-magnitude STFT representation """ + # TODO: make this modular pipeline-ish + # TODO: parameterize window type + # TODO: parameterize window size (check if gives warning or allowed) x = x.astype(np.float32) x_tensor = torch.from_numpy(x).float() y = torch.stft( - x_tensor, + x_tensor, n_fft=n_fft, hop_length=hop_length, window=torch.hann_window(n_fft), - return_complex=True + return_complex=True, ) - y = torch.log(torch.abs(y)) + y = torch.abs(y) y = y.permute(0, 2, 1) return y.numpy() From c6ae9286ac019b2b0dce9c91a2c74ed683ec2809 Mon Sep 17 00:00:00 2001 From: Nathaniel Chen Date: Tue, 15 Jul 2025 10:02:17 -0400 Subject: [PATCH 042/103] Enhance data preparation script with additional logging options, update YAML configuration for increased shot count, and refine signal processing methods with new TODOs for future improvements. Adjust Jupyter notebook kernel display name and Python version for consistency. --- commands/prepare_data.sh | 2 +- notebooks/accessing_data.ipynb | 4 ++-- src/fusionaihub/datasets/prepare/config/raw.yaml | 4 ++-- src/fusionaihub/datasets/prepare/data_extraction.py | 8 ++++++++ src/fusionaihub/datasets/prepare/prepare_dataset.py | 2 ++ src/fusionaihub/datasets/prepare/shot_processing.py | 6 ++++++ src/fusionaihub/datasets/prepare/signal_processing.py | 9 ++++++--- 7 files changed, 27 insertions(+), 8 deletions(-) diff --git a/commands/prepare_data.sh b/commands/prepare_data.sh index 9ebb115..7e69625 100644 --- a/commands/prepare_data.sh +++ b/commands/prepare_data.sh @@ -13,4 +13,4 @@ module purge source .venv/bin/activate # Run pipeline -srun python -m fusionaihub.datasets.prepare \ No newline at end of file +srun python -m fusionaihub.datasets.prepare --config config/raw.yaml --log-level DEBUG \ No newline at end of file diff --git a/notebooks/accessing_data.ipynb b/notebooks/accessing_data.ipynb index 2f0abfc..4cd7659 100644 --- a/notebooks/accessing_data.ipynb +++ b/notebooks/accessing_data.ipynb @@ -97,7 +97,7 @@ ], "metadata": { "kernelspec": { - "display_name": ".venv", + "display_name": "Python 3", "language": "python", "name": "python3" }, @@ -111,7 +111,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.7" + "version": "3.12.4" } }, "nbformat": 4, diff --git a/src/fusionaihub/datasets/prepare/config/raw.yaml b/src/fusionaihub/datasets/prepare/config/raw.yaml index d243396..6813c80 100644 --- a/src/fusionaihub/datasets/prepare/config/raw.yaml +++ b/src/fusionaihub/datasets/prepare/config/raw.yaml @@ -12,7 +12,7 @@ signal: # Data processing parameters randomize_shots: true random_seed: 42 -num_shots: 50 +num_shots: 5000 fs_khz: 440 # Sampling frequency in kHz ip_threshold: 0.1 # Plasma current threshold window_ms: 250 # Window size in milliseconds @@ -23,7 +23,7 @@ start_time: 0 # Start time for signal extraction (null for auto-detection) end_time: 5000 # End time for signal extraction (null for auto-detection) # Train/test split configuration -train_test_split: 0.2 +train_test_split: 0.1 # Directory paths raw_data_dir: /scratch/gpfs/EKOLEMEN/d3d_fusion_data diff --git a/src/fusionaihub/datasets/prepare/data_extraction.py b/src/fusionaihub/datasets/prepare/data_extraction.py index a6ff154..79416a8 100644 --- a/src/fusionaihub/datasets/prepare/data_extraction.py +++ b/src/fusionaihub/datasets/prepare/data_extraction.py @@ -89,12 +89,16 @@ def align_signal( Aligned DataFrame with data and state columns """ # get sampling frequency + # TODO: can change to getting mean or individual fs_raw = len(df) / (df.index[-1] - df.index[0]) # crop time df = df.loc[(df.index >= start_time) & (df.index <= end_time)] # resample + # TODO: can this be precomputed? + # TODO: merge dataframe at closest time with a tolerance? + # TODO: have 2 modules based on "make_stft" function? num = len(df) num = int(num * fs / fs_raw) @@ -104,6 +108,9 @@ def align_signal( ) # mark on-off states + # TODO: add intermtermittent detection, not just beginning and end + # TODO: or just want the model to be robust + # TODO: shot defined as plasma current > 0.5 MA, or 0.5s. start_nan = (df.index[0] - start_time) * fs end_nan = (end_time - df.index[-1]) * fs start_pad = pd.DataFrame( @@ -120,6 +127,7 @@ def align_signal( df_state.columns = [f"{col}_state" for col in df.columns] # combine data with state + # TODO: change this to a variable df = df.astype(np.float32) df_state = df_state.astype(np.bool) df = pd.concat([df, df_state], axis=1) diff --git a/src/fusionaihub/datasets/prepare/prepare_dataset.py b/src/fusionaihub/datasets/prepare/prepare_dataset.py index 22e413f..e61c14d 100644 --- a/src/fusionaihub/datasets/prepare/prepare_dataset.py +++ b/src/fusionaihub/datasets/prepare/prepare_dataset.py @@ -97,6 +97,8 @@ def prepare_dataset(cfg: dict) -> None: np.random.seed(cfg["random_seed"]) all_shots = np.random.permutation(all_shots) + # Set to -1 to use all shots, or just don't include as argument + # However, keep argument to stay consistent with other scripts if cfg.get("num_shots") is not None: all_shots = all_shots[:cfg["num_shots"]] diff --git a/src/fusionaihub/datasets/prepare/shot_processing.py b/src/fusionaihub/datasets/prepare/shot_processing.py index 5d76899..cd1c814 100644 --- a/src/fusionaihub/datasets/prepare/shot_processing.py +++ b/src/fusionaihub/datasets/prepare/shot_processing.py @@ -56,7 +56,10 @@ def process_shot_stft( """ # Extract running time + # TODO: Change to call this running_time from ip_threshold try: + # TODO: shot defined as plasma current > 0.5 MA, or 0.5s + # TODO: George Sips, (find reference slide and cite it) start_time, end_time = extract_running_time( shot_number=shot_number, directory=Path(cfg["raw_data_dir"]), @@ -103,6 +106,7 @@ def process_shot_stft( # Create main aligned dataframe (important since interpolated signals # could have alignment off) try: + # TODO: if df is fixed to same length, then join without inner df = pd.concat(dfs, axis=1, join='inner') except Exception as e: logger.error(f"Error: Could not concatenate dataframes for shot {shot_number}: {e}") @@ -119,6 +123,7 @@ def process_shot_stft( raise e # Split into samples + # TODO: rename this to slice_windows try: samples = split_samples( df=df, @@ -132,6 +137,7 @@ def process_shot_stft( raise e # Remove empty samples + # TODO: Add warning if samples change even if no windows and using ip criterion try: samples = remove_empty_samples(samples) except Exception as e: diff --git a/src/fusionaihub/datasets/prepare/signal_processing.py b/src/fusionaihub/datasets/prepare/signal_processing.py index 838eaf5..25abb31 100644 --- a/src/fusionaihub/datasets/prepare/signal_processing.py +++ b/src/fusionaihub/datasets/prepare/signal_processing.py @@ -51,16 +51,19 @@ def stft_transform( Returns: Log-magnitude STFT representation """ + # TODO: make this modular pipeline-ish + # TODO: parameterize window type + # TODO: parameterize window size (check if gives warning or allowed) x = x.astype(np.float32) x_tensor = torch.from_numpy(x).float() y = torch.stft( - x_tensor, + x_tensor, n_fft=n_fft, hop_length=hop_length, window=torch.hann_window(n_fft), - return_complex=True + return_complex=True, ) - y = torch.log(torch.abs(y)) + y = torch.abs(y) y = y.permute(0, 2, 1) return y.numpy() From ea0ebb2ba0b1dff5af0dd814cd251bd61a78c684 Mon Sep 17 00:00:00 2001 From: Peter Steiner <61472983+renierts@users.noreply.github.com> Date: Tue, 15 Jul 2025 11:49:03 -0400 Subject: [PATCH 043/103] Changed name of Python package to faith. Moved signal processing utilities to preprocess Added empty subpackage for model training --- notebooks/data_preparation.ipynb | 2 +- pyproject.toml | 14 ++++++++------ src/{fusionaihub => faith}/__init__.py | 0 src/{fusionaihub => faith}/base/__init__.py | 0 src/{fusionaihub => faith}/base/load.py | 0 src/{fusionaihub => faith}/base/merge.py | 0 src/{fusionaihub => faith}/base/save.py | 0 src/{fusionaihub => faith}/core/__init__.py | 0 .../core/fusion_signal/__init__.py | 0 .../core/fusion_signal/interpolation.py | 0 .../core/fusion_signal/resampling.py | 0 .../core/magnitude_scaling/compute_norms.py | 0 .../core/magnitude_scaling/norm.py | 0 .../core/magnitude_scaling/rescale.py | 0 src/{fusionaihub => faith}/core/scaling.py | 0 .../core/spectral_representation/__init__.py | 0 .../core/spectral_representation/sft.py | 0 .../core/time_domain_filtering/__init__.py | 0 .../core/time_domain_filtering/filtering.py | 0 .../core/time_domain_filtering/preemphasis.py | 0 .../core/time_domain_processing/cut_time.py | 0 .../time_domain_processing/get_windowed_data.py | 0 src/{fusionaihub => faith}/datasets/__init__.py | 0 src/{fusionaihub => faith}/datasets/fetch/fetch.py | 0 .../datasets/prepare/README.md | 12 ++++++++---- .../datasets/prepare/__init__.py | 0 .../datasets/prepare/__main__.py | 0 .../datasets/prepare/config/default.yaml | 0 .../datasets/prepare/config/raw.yaml | 0 .../datasets/prepare/data_extraction.py | 0 .../datasets/prepare/dataset_utils.py | 0 .../datasets/prepare/prepare_dataset.py | 0 .../datasets/prepare/sample_processing.py | 0 .../datasets/prepare/shot_processing.py | 0 .../datasets/prepare/signal_processing.py | 0 .../datasets/toy_loader/load.py | 0 src/{fusionaihub => faith}/display/__init__.py | 0 src/{fusionaihub => faith}/display/display.py | 0 src/{fusionaihub => faith}/display/specshow.py | 0 src/{fusionaihub => faith}/display/waveshow.py | 0 src/{fusionaihub => faith}/feature/__init__.py | 0 src/{fusionaihub => faith}/sampling/__init__.py | 0 src/{fusionaihub => faith}/sampling/match_times.py | 0 src/{fusionaihub/util => faith/train}/__init__.py | 0 src/faith/util/__init__.py | 0 src/{fusionaihub => faith}/util/parmap.py | 0 src/{fusionaihub => faith}/util/utils.py | 0 47 files changed, 17 insertions(+), 11 deletions(-) rename src/{fusionaihub => faith}/__init__.py (100%) rename src/{fusionaihub => faith}/base/__init__.py (100%) rename src/{fusionaihub => faith}/base/load.py (100%) rename src/{fusionaihub => faith}/base/merge.py (100%) rename src/{fusionaihub => faith}/base/save.py (100%) rename src/{fusionaihub => faith}/core/__init__.py (100%) rename src/{fusionaihub => faith}/core/fusion_signal/__init__.py (100%) rename src/{fusionaihub => faith}/core/fusion_signal/interpolation.py (100%) rename src/{fusionaihub => faith}/core/fusion_signal/resampling.py (100%) rename src/{fusionaihub => faith}/core/magnitude_scaling/compute_norms.py (100%) rename src/{fusionaihub => faith}/core/magnitude_scaling/norm.py (100%) rename src/{fusionaihub => faith}/core/magnitude_scaling/rescale.py (100%) rename src/{fusionaihub => faith}/core/scaling.py (100%) rename src/{fusionaihub => faith}/core/spectral_representation/__init__.py (100%) rename src/{fusionaihub => faith}/core/spectral_representation/sft.py (100%) rename src/{fusionaihub => faith}/core/time_domain_filtering/__init__.py (100%) rename src/{fusionaihub => faith}/core/time_domain_filtering/filtering.py (100%) rename src/{fusionaihub => faith}/core/time_domain_filtering/preemphasis.py (100%) rename src/{fusionaihub => faith}/core/time_domain_processing/cut_time.py (100%) rename src/{fusionaihub => faith}/core/time_domain_processing/get_windowed_data.py (100%) rename src/{fusionaihub => faith}/datasets/__init__.py (100%) rename src/{fusionaihub => faith}/datasets/fetch/fetch.py (100%) rename src/{fusionaihub => faith}/datasets/prepare/README.md (94%) rename src/{fusionaihub => faith}/datasets/prepare/__init__.py (100%) rename src/{fusionaihub => faith}/datasets/prepare/__main__.py (100%) rename src/{fusionaihub => faith}/datasets/prepare/config/default.yaml (100%) rename src/{fusionaihub => faith}/datasets/prepare/config/raw.yaml (100%) rename src/{fusionaihub => faith}/datasets/prepare/data_extraction.py (100%) rename src/{fusionaihub => faith}/datasets/prepare/dataset_utils.py (100%) rename src/{fusionaihub => faith}/datasets/prepare/prepare_dataset.py (100%) rename src/{fusionaihub => faith}/datasets/prepare/sample_processing.py (100%) rename src/{fusionaihub => faith}/datasets/prepare/shot_processing.py (100%) rename src/{fusionaihub => faith}/datasets/prepare/signal_processing.py (100%) rename src/{fusionaihub => faith}/datasets/toy_loader/load.py (100%) rename src/{fusionaihub => faith}/display/__init__.py (100%) rename src/{fusionaihub => faith}/display/display.py (100%) rename src/{fusionaihub => faith}/display/specshow.py (100%) rename src/{fusionaihub => faith}/display/waveshow.py (100%) rename src/{fusionaihub => faith}/feature/__init__.py (100%) rename src/{fusionaihub => faith}/sampling/__init__.py (100%) rename src/{fusionaihub => faith}/sampling/match_times.py (100%) rename src/{fusionaihub/util => faith/train}/__init__.py (100%) create mode 100644 src/faith/util/__init__.py rename src/{fusionaihub => faith}/util/parmap.py (100%) rename src/{fusionaihub => faith}/util/utils.py (100%) diff --git a/notebooks/data_preparation.ipynb b/notebooks/data_preparation.ipynb index b67b55f..f096a22 100644 --- a/notebooks/data_preparation.ipynb +++ b/notebooks/data_preparation.ipynb @@ -25,7 +25,7 @@ "import yaml\n", "\n", "shot_number = 171348\n", - "yaml_path = \"../src/fusionaihub/datasets/prepare/config/raw.yaml\"\n", + "yaml_path = \"../src/faith/datasets/prepare/config/raw.yaml\"\n", "with open(yaml_path, 'r') as f:\n", " cfg = yaml.safe_load(f)\n", "\n", diff --git a/pyproject.toml b/pyproject.toml index 1f712c4..f9658bb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -2,12 +2,12 @@ name = "fusionaihub" version = "0.0.1" authors = [ - {name="Peter Steiner", email="peter.steiner@princeton.edu"}, - {name="Max Tian Curie", email="max.curie@princeton.edu"}, - {name="Nathaniel Chen", email="nathaniel@princeton.edu"}, - {name="Azarakhsh Jalalvand", email="azarakhsh.jalalvand@princeton.edu"} + { name = "Peter Steiner", email = "peter.steiner@princeton.edu" }, + { name = "Nathaniel Chen", email = "nathaniel@princeton.edu" }, + { name = "Kouroche Bouchiat", email = "bouchiat@princeton.edu" }, + { name = "Azarakhsh Jalalvand", email = "azarakhsh.jalalvand@princeton.edu" } ] -description = "FusionAIHub - Fetch nuclear fusion data, preprocess it, and use it for training machine learning models." +description = "FusionAIHub - Fetch nuclear fusion data, preprocess it, train machine learning models." readme = "README.md" requires-python = ">=3.9" classifiers = [ @@ -15,12 +15,14 @@ classifiers = [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", ] -license = {file = "LICENSE"} +license = { file = "LICENSE" } dependencies = [ "h5py", + "scikit-learn", "numpy", "pandas", "matplotlib", + "seaborn", "scipy", "tqdm", "opencv-python", diff --git a/src/fusionaihub/__init__.py b/src/faith/__init__.py similarity index 100% rename from src/fusionaihub/__init__.py rename to src/faith/__init__.py diff --git a/src/fusionaihub/base/__init__.py b/src/faith/base/__init__.py similarity index 100% rename from src/fusionaihub/base/__init__.py rename to src/faith/base/__init__.py diff --git a/src/fusionaihub/base/load.py b/src/faith/base/load.py similarity index 100% rename from src/fusionaihub/base/load.py rename to src/faith/base/load.py diff --git a/src/fusionaihub/base/merge.py b/src/faith/base/merge.py similarity index 100% rename from src/fusionaihub/base/merge.py rename to src/faith/base/merge.py diff --git a/src/fusionaihub/base/save.py b/src/faith/base/save.py similarity index 100% rename from src/fusionaihub/base/save.py rename to src/faith/base/save.py diff --git a/src/fusionaihub/core/__init__.py b/src/faith/core/__init__.py similarity index 100% rename from src/fusionaihub/core/__init__.py rename to src/faith/core/__init__.py diff --git a/src/fusionaihub/core/fusion_signal/__init__.py b/src/faith/core/fusion_signal/__init__.py similarity index 100% rename from src/fusionaihub/core/fusion_signal/__init__.py rename to src/faith/core/fusion_signal/__init__.py diff --git a/src/fusionaihub/core/fusion_signal/interpolation.py b/src/faith/core/fusion_signal/interpolation.py similarity index 100% rename from src/fusionaihub/core/fusion_signal/interpolation.py rename to src/faith/core/fusion_signal/interpolation.py diff --git a/src/fusionaihub/core/fusion_signal/resampling.py b/src/faith/core/fusion_signal/resampling.py similarity index 100% rename from src/fusionaihub/core/fusion_signal/resampling.py rename to src/faith/core/fusion_signal/resampling.py diff --git a/src/fusionaihub/core/magnitude_scaling/compute_norms.py b/src/faith/core/magnitude_scaling/compute_norms.py similarity index 100% rename from src/fusionaihub/core/magnitude_scaling/compute_norms.py rename to src/faith/core/magnitude_scaling/compute_norms.py diff --git a/src/fusionaihub/core/magnitude_scaling/norm.py b/src/faith/core/magnitude_scaling/norm.py similarity index 100% rename from src/fusionaihub/core/magnitude_scaling/norm.py rename to src/faith/core/magnitude_scaling/norm.py diff --git a/src/fusionaihub/core/magnitude_scaling/rescale.py b/src/faith/core/magnitude_scaling/rescale.py similarity index 100% rename from src/fusionaihub/core/magnitude_scaling/rescale.py rename to src/faith/core/magnitude_scaling/rescale.py diff --git a/src/fusionaihub/core/scaling.py b/src/faith/core/scaling.py similarity index 100% rename from src/fusionaihub/core/scaling.py rename to src/faith/core/scaling.py diff --git a/src/fusionaihub/core/spectral_representation/__init__.py b/src/faith/core/spectral_representation/__init__.py similarity index 100% rename from src/fusionaihub/core/spectral_representation/__init__.py rename to src/faith/core/spectral_representation/__init__.py diff --git a/src/fusionaihub/core/spectral_representation/sft.py b/src/faith/core/spectral_representation/sft.py similarity index 100% rename from src/fusionaihub/core/spectral_representation/sft.py rename to src/faith/core/spectral_representation/sft.py diff --git a/src/fusionaihub/core/time_domain_filtering/__init__.py b/src/faith/core/time_domain_filtering/__init__.py similarity index 100% rename from src/fusionaihub/core/time_domain_filtering/__init__.py rename to src/faith/core/time_domain_filtering/__init__.py diff --git a/src/fusionaihub/core/time_domain_filtering/filtering.py b/src/faith/core/time_domain_filtering/filtering.py similarity index 100% rename from src/fusionaihub/core/time_domain_filtering/filtering.py rename to src/faith/core/time_domain_filtering/filtering.py diff --git a/src/fusionaihub/core/time_domain_filtering/preemphasis.py b/src/faith/core/time_domain_filtering/preemphasis.py similarity index 100% rename from src/fusionaihub/core/time_domain_filtering/preemphasis.py rename to src/faith/core/time_domain_filtering/preemphasis.py diff --git a/src/fusionaihub/core/time_domain_processing/cut_time.py b/src/faith/core/time_domain_processing/cut_time.py similarity index 100% rename from src/fusionaihub/core/time_domain_processing/cut_time.py rename to src/faith/core/time_domain_processing/cut_time.py diff --git a/src/fusionaihub/core/time_domain_processing/get_windowed_data.py b/src/faith/core/time_domain_processing/get_windowed_data.py similarity index 100% rename from src/fusionaihub/core/time_domain_processing/get_windowed_data.py rename to src/faith/core/time_domain_processing/get_windowed_data.py diff --git a/src/fusionaihub/datasets/__init__.py b/src/faith/datasets/__init__.py similarity index 100% rename from src/fusionaihub/datasets/__init__.py rename to src/faith/datasets/__init__.py diff --git a/src/fusionaihub/datasets/fetch/fetch.py b/src/faith/datasets/fetch/fetch.py similarity index 100% rename from src/fusionaihub/datasets/fetch/fetch.py rename to src/faith/datasets/fetch/fetch.py diff --git a/src/fusionaihub/datasets/prepare/README.md b/src/faith/datasets/prepare/README.md similarity index 94% rename from src/fusionaihub/datasets/prepare/README.md rename to src/faith/datasets/prepare/README.md index 55787d7..70a6020 100644 --- a/src/fusionaihub/datasets/prepare/README.md +++ b/src/faith/datasets/prepare/README.md @@ -87,15 +87,18 @@ Each signal is configured as a list: `[signal_name, abbreviation, should_transfo ### Command Line ```bash # Use default configuration -python -m src.fusionaihub.datasets.prepare +python -m src.faith.datasets.prepare # Use custom configuration file -python -m src.fusionaihub.datasets.prepare --config /path/to/config.yaml +python -m src.faith.datasets.prepare --config /path/to/config.yaml ``` ### Programmatic Usage + ```python -from src.fusionaihub.datasets.prepare.prepare_dataset import load_config, prepare_dataset +from src.faith.datasets.prepare.prepare_dataset import load_config, + prepare_dataset + # Load configuration cfg = load_config("path/to/config.yaml") @@ -109,7 +112,8 @@ Create a custom YAML file based on `config/default.yaml`: ```python import yaml -from src.fusionaihub.datasets.prepare.prepare_dataset import prepare_dataset +from src.faith.datasets.prepare.prepare_dataset import prepare_dataset + # Load and modify configuration with open("config/default.yaml", "r") as f: diff --git a/src/fusionaihub/datasets/prepare/__init__.py b/src/faith/datasets/prepare/__init__.py similarity index 100% rename from src/fusionaihub/datasets/prepare/__init__.py rename to src/faith/datasets/prepare/__init__.py diff --git a/src/fusionaihub/datasets/prepare/__main__.py b/src/faith/datasets/prepare/__main__.py similarity index 100% rename from src/fusionaihub/datasets/prepare/__main__.py rename to src/faith/datasets/prepare/__main__.py diff --git a/src/fusionaihub/datasets/prepare/config/default.yaml b/src/faith/datasets/prepare/config/default.yaml similarity index 100% rename from src/fusionaihub/datasets/prepare/config/default.yaml rename to src/faith/datasets/prepare/config/default.yaml diff --git a/src/fusionaihub/datasets/prepare/config/raw.yaml b/src/faith/datasets/prepare/config/raw.yaml similarity index 100% rename from src/fusionaihub/datasets/prepare/config/raw.yaml rename to src/faith/datasets/prepare/config/raw.yaml diff --git a/src/fusionaihub/datasets/prepare/data_extraction.py b/src/faith/datasets/prepare/data_extraction.py similarity index 100% rename from src/fusionaihub/datasets/prepare/data_extraction.py rename to src/faith/datasets/prepare/data_extraction.py diff --git a/src/fusionaihub/datasets/prepare/dataset_utils.py b/src/faith/datasets/prepare/dataset_utils.py similarity index 100% rename from src/fusionaihub/datasets/prepare/dataset_utils.py rename to src/faith/datasets/prepare/dataset_utils.py diff --git a/src/fusionaihub/datasets/prepare/prepare_dataset.py b/src/faith/datasets/prepare/prepare_dataset.py similarity index 100% rename from src/fusionaihub/datasets/prepare/prepare_dataset.py rename to src/faith/datasets/prepare/prepare_dataset.py diff --git a/src/fusionaihub/datasets/prepare/sample_processing.py b/src/faith/datasets/prepare/sample_processing.py similarity index 100% rename from src/fusionaihub/datasets/prepare/sample_processing.py rename to src/faith/datasets/prepare/sample_processing.py diff --git a/src/fusionaihub/datasets/prepare/shot_processing.py b/src/faith/datasets/prepare/shot_processing.py similarity index 100% rename from src/fusionaihub/datasets/prepare/shot_processing.py rename to src/faith/datasets/prepare/shot_processing.py diff --git a/src/fusionaihub/datasets/prepare/signal_processing.py b/src/faith/datasets/prepare/signal_processing.py similarity index 100% rename from src/fusionaihub/datasets/prepare/signal_processing.py rename to src/faith/datasets/prepare/signal_processing.py diff --git a/src/fusionaihub/datasets/toy_loader/load.py b/src/faith/datasets/toy_loader/load.py similarity index 100% rename from src/fusionaihub/datasets/toy_loader/load.py rename to src/faith/datasets/toy_loader/load.py diff --git a/src/fusionaihub/display/__init__.py b/src/faith/display/__init__.py similarity index 100% rename from src/fusionaihub/display/__init__.py rename to src/faith/display/__init__.py diff --git a/src/fusionaihub/display/display.py b/src/faith/display/display.py similarity index 100% rename from src/fusionaihub/display/display.py rename to src/faith/display/display.py diff --git a/src/fusionaihub/display/specshow.py b/src/faith/display/specshow.py similarity index 100% rename from src/fusionaihub/display/specshow.py rename to src/faith/display/specshow.py diff --git a/src/fusionaihub/display/waveshow.py b/src/faith/display/waveshow.py similarity index 100% rename from src/fusionaihub/display/waveshow.py rename to src/faith/display/waveshow.py diff --git a/src/fusionaihub/feature/__init__.py b/src/faith/feature/__init__.py similarity index 100% rename from src/fusionaihub/feature/__init__.py rename to src/faith/feature/__init__.py diff --git a/src/fusionaihub/sampling/__init__.py b/src/faith/sampling/__init__.py similarity index 100% rename from src/fusionaihub/sampling/__init__.py rename to src/faith/sampling/__init__.py diff --git a/src/fusionaihub/sampling/match_times.py b/src/faith/sampling/match_times.py similarity index 100% rename from src/fusionaihub/sampling/match_times.py rename to src/faith/sampling/match_times.py diff --git a/src/fusionaihub/util/__init__.py b/src/faith/train/__init__.py similarity index 100% rename from src/fusionaihub/util/__init__.py rename to src/faith/train/__init__.py diff --git a/src/faith/util/__init__.py b/src/faith/util/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/fusionaihub/util/parmap.py b/src/faith/util/parmap.py similarity index 100% rename from src/fusionaihub/util/parmap.py rename to src/faith/util/parmap.py diff --git a/src/fusionaihub/util/utils.py b/src/faith/util/utils.py similarity index 100% rename from src/fusionaihub/util/utils.py rename to src/faith/util/utils.py From 4013b095fec670e22a700149156dac03cd73b2a5 Mon Sep 17 00:00:00 2001 From: Nathaniel Chen Date: Tue, 15 Jul 2025 11:49:08 -0400 Subject: [PATCH 044/103] Refactor data processing scripts for improved performance, enhance logging in data preparation, and update YAML configuration for better signal handling. Adjust Jupyter notebook settings for consistency and clarity. --- .github/workflows/python-publish.yml | 70 ++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 .github/workflows/python-publish.yml diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml new file mode 100644 index 0000000..82f8dbd --- /dev/null +++ b/.github/workflows/python-publish.yml @@ -0,0 +1,70 @@ +# This workflow will upload a Python Package to PyPI when a release is created +# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python#publishing-to-package-registries + +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. + +name: Upload Python Package + +on: + release: + types: [published] + +permissions: + contents: read + +jobs: + release-build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-python@v5 + with: + python-version: "3.x" + + - name: Build release distributions + run: | + # NOTE: put your own distribution build steps here. + python -m pip install build + python -m build + + - name: Upload distributions + uses: actions/upload-artifact@v4 + with: + name: release-dists + path: dist/ + + pypi-publish: + runs-on: ubuntu-latest + needs: + - release-build + permissions: + # IMPORTANT: this permission is mandatory for trusted publishing + id-token: write + + # Dedicated environments with protections for publishing are strongly recommended. + # For more information, see: https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment#deployment-protection-rules + environment: + name: pypi + # OPTIONAL: uncomment and update to include your PyPI project URL in the deployment status: + # url: https://pypi.org/p/YOURPROJECT + # + # ALTERNATIVE: if your GitHub Release name is the PyPI project version string + # ALTERNATIVE: exactly, uncomment the following line instead: + # url: https://pypi.org/project/YOURPROJECT/${{ github.event.release.name }} + + steps: + - name: Retrieve release distributions + uses: actions/download-artifact@v4 + with: + name: release-dists + path: dist/ + + - name: Publish release distributions to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: dist/ From 99241a5e12a2c96d996bbfdce086c11b698a8fef Mon Sep 17 00:00:00 2001 From: Peter Steiner <61472983+renierts@users.noreply.github.com> Date: Tue, 15 Jul 2025 12:13:28 -0400 Subject: [PATCH 045/103] Added first blocks for model training. Added one empty unit test in order to having the pytest directory set up. --- pyproject.toml | 18 +- requirements.txt | 10 - src/faith/train/blocks/__init__.py | 11 + src/faith/train/blocks/base.py | 384 +++++++++++++++ src/faith/train/blocks/decoder.py | 667 ++++++++++++++++++++++++++ src/faith/train/blocks/encoder.py | 578 ++++++++++++++++++++++ src/faith/train/blocks/residual.py | 389 +++++++++++++++ src/faith/train/models/__init__.py | 92 ++++ src/faith/train/models/autoencoder.py | 452 +++++++++++++++++ src/faith/train/models/configs.py | 634 ++++++++++++++++++++++++ src/faith/train/models/mae.py | 618 ++++++++++++++++++++++++ src/faith/train/models/utils.py | 571 ++++++++++++++++++++++ tests/test_residual_block.py | 0 13 files changed, 4407 insertions(+), 17 deletions(-) delete mode 100644 requirements.txt create mode 100644 src/faith/train/blocks/__init__.py create mode 100644 src/faith/train/blocks/base.py create mode 100644 src/faith/train/blocks/decoder.py create mode 100644 src/faith/train/blocks/encoder.py create mode 100644 src/faith/train/blocks/residual.py create mode 100644 src/faith/train/models/__init__.py create mode 100644 src/faith/train/models/autoencoder.py create mode 100644 src/faith/train/models/configs.py create mode 100644 src/faith/train/models/mae.py create mode 100644 src/faith/train/models/utils.py create mode 100644 tests/test_residual_block.py diff --git a/pyproject.toml b/pyproject.toml index f9658bb..b69c43b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,14 +25,18 @@ dependencies = [ "seaborn", "scipy", "tqdm", - "opencv-python", "paramiko", - "ipykernel>=6.29.5", - "ipywidgets>=8.1.7", - "scikit-learn>=1.6.1", - "torch>=2.7.1", - "tables>=3.9.2", - "pyyaml>=6.0.2", + "ipykernel", + "ipywidgets", + "torch", + "torchvision", + "torchaudio", + "torchmetrics", + "lightning", + "ray[data,train,tune,serve]", + "tables", + "pyyaml", + "jupyter", ] [tool.uv.sources] diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index a2c1898..0000000 --- a/requirements.txt +++ /dev/null @@ -1,10 +0,0 @@ -torch==1.12.1+cu116 -torchvision==0.13.1+cu116 -torchaudio==0.12.1+cu116 -numpy -pandas -scikit-learn -matplotlib -seaborn -jupyter -h5py \ No newline at end of file diff --git a/src/faith/train/blocks/__init__.py b/src/faith/train/blocks/__init__.py new file mode 100644 index 0000000..352d19b --- /dev/null +++ b/src/faith/train/blocks/__init__.py @@ -0,0 +1,11 @@ +"""Neural network blocks for building autoencoders.""" + +from .residual import ResidualBlock +from .encoder import EncoderBlock, BlockBasedEncoder +from .decoder import DecoderBlock, BlockBasedDecoder +from .base import BaseBlock + +__all__ = ["ResidualBlock", + "EncoderBlock", "BlockBasedEncoder", + "DecoderBlock", "BlockBasedDecoder", + "BaseBlock"] diff --git a/src/faith/train/blocks/base.py b/src/faith/train/blocks/base.py new file mode 100644 index 0000000..f20c23e --- /dev/null +++ b/src/faith/train/blocks/base.py @@ -0,0 +1,384 @@ +"""Base classes and utilities for neural network blocks. + +This module provides abstract base classes, common utilities, and shared +functionality that can be inherited by specific block implementations. +It ensures consistency across different block types and provides common +patterns for initialization, forward passes, and configuration. +""" + +import torch +import torch.nn as nn +from abc import ABC, abstractmethod +from typing import Union, Any, Optional +import math + + +class BaseBlock(nn.Module, ABC): + """Abstract base class for all neural network blocks. + + This class defines the common interface that all blocks should implement, + ensuring consistency across different block types in the autoencoder + architecture. + + Parameters + ---------- + in_channels : int + Number of input channels. + out_channels : int + Number of output channels. + kernel_size : int or tuple of int, default=3 + Kernel size for convolutions. + bias : bool, default=True + Whether to use bias in convolution layers. + + Attributes + ---------- + in_channels : int + Stored input channel count. + out_channels : int + Stored output channel count. + kernel_size : int or tuple + Stored kernel size. + bias : bool + Stored bias setting. + """ + + def __init__( + self, + in_channels: int, + out_channels: int, + kernel_size: Union[int, tuple[int, int]] = 3, + bias: bool = True, + **kwargs + ) -> None: + super().__init__() + + if in_channels <= 0: + raise ValueError( + f"in_channels must be positive, got {in_channels}") + if out_channels <= 0: + raise ValueError( + f"out_channels must be positive, got {out_channels}") + + self.in_channels = in_channels + self.out_channels = out_channels + self.kernel_size = self._normalize_kernel_size(kernel_size) + self.bias = bias + + @staticmethod + def _normalize_kernel_size(kernel_size: Union[int, tuple[int, int]]) \ + -> tuple[int, int]: + """Normalize kernel size to tuple format.""" + if isinstance(kernel_size, int): + return (kernel_size, kernel_size) + return kernel_size + + @staticmethod + def _calculate_padding( + kernel_size: Union[int, tuple[int, int]], + padding: Union[int, tuple[int, int], str]) \ + -> tuple[int, ...]: + """Calculate padding based on kernel size and padding specification.""" + if padding == 'auto': + if isinstance(kernel_size, int): + return (kernel_size // 2, kernel_size // 2) + else: + return tuple(k // 2 for k in kernel_size) + elif isinstance(padding, int): + return (padding, padding) + else: + return padding + + @abstractmethod + def forward(self, x: torch.Tensor) -> torch.Tensor: + """ + Forward pass through the block. + + Parameters + ---------- + x : torch.Tensor + Input tensor. + + Returns + ------- + torch.Tensor + Output tensor. + """ + pass + + def get_config(self) -> dict[str, Any]: + """ + Get configuration dictionary for this block. + + Returns + ------- + dict + Configuration dictionary containing all parameters needed + to reconstruct this block. + """ + return { + 'in_channels': self.in_channels, + 'out_channels': self.out_channels, + 'kernel_size': self.kernel_size, + 'bias': self.bias, + } + + @property + def parameter_count(self) -> int: + """Get total number of trainable parameters in this block.""" + return sum(p.numel() for p in self.parameters() if p.requires_grad) + + def __repr__(self) -> str: + return (f"{self.__class__.__name__}(" + f"in_channels={self.in_channels}, " + f"out_channels={self.out_channels}, " + f"kernel_size={self.kernel_size}, " + f"bias={self.bias})") + + +class SequentialBlock(BaseBlock): + """Base class for blocks that apply operations sequentially. + + This class provides common functionality for blocks that consist of + multiple sequential operations (like EncoderBlock and DecoderBlock). + + Parameters + ---------- + in_channels : int + Number of input channels. + out_channels : int + Number of output channels. + operations : list of nn.Module + List of operations to apply sequentially. + **kwargs + Additional arguments passed to BaseBlock. + """ + + def __init__( + self, + in_channels: int, + out_channels: int, + operations: Optional[list[nn.Module]] = None, + **kwargs + ) -> None: + super().__init__(in_channels, out_channels, **kwargs) + + if operations is None: + operations = [] + + self.operations = nn.Sequential(*operations) + + def forward(self, x: torch.Tensor) -> torch.Tensor: + """Forward pass through sequential operations.""" + return self.operations(x) + + def add_operation(self, operation: nn.Module) -> None: + """Add an operation to the sequential block.""" + self.operations.add_module(str(len(self.operations)), operation) + + +class ConfigurableBlock(BaseBlock): + """ + Base class for blocks with extensive configuration options. + + This class provides utilities for blocks that need to handle complex + configuration dictionaries and parameter validation. + """ + + def __init__(self, **kwargs) -> None: + # Extract base parameters + in_channels = kwargs.pop('in_channels') + out_channels = kwargs.pop('out_channels') + kernel_size = kwargs.pop('kernel_size', 3) + bias = kwargs.pop('bias', True) + + super().__init__(in_channels, out_channels, kernel_size, bias) + + # Store additional configuration + self._config = kwargs + + def get_config(self) -> dict[str, Any]: + """Get full configuration including additional parameters.""" + config = super().get_config() + config.update(self._config) + return config + + @classmethod + def from_config(cls, config: dict[str, Any]) -> 'ConfigurableBlock': + """Create block instance from configuration dictionary.""" + return cls(**config) + + +class BlockRegistry: + """Registry for different block types. + + This class provides a way to register and retrieve different block + implementations, making it easy to create blocks from string names + or configuration files. + """ + + _registry: dict[str, type] = {} + + @classmethod + def register(cls, name: str, block_class: type) -> None: + """Register a block class with a given name.""" + if not issubclass(block_class, BaseBlock): + raise ValueError( + f"Block class must inherit from BaseBlock, got {block_class}") + cls._registry[name] = block_class + + @classmethod + def get(cls, name: str) -> type: + """Get a block class by name.""" + if name not in cls._registry: + raise KeyError(f"Block '{name}' not found in registry. " + f"Available blocks: {list(cls._registry.keys())}") + return cls._registry[name] + + @classmethod + def create(cls, name: str, **kwargs) -> BaseBlock: + """Create a block instance by name.""" + block_class = cls.get(name) + return block_class(**kwargs) + + @classmethod + def list_blocks(cls) -> list[str]: + """List all registered block names.""" + return list(cls._registry.keys()) + + +def register_block(name: str): + """Decorator to register a block class.""" + + def decorator(block_class: type): + BlockRegistry.register(name, block_class) + return block_class + + return decorator + + +class WeightInitializer: + """Utilities for weight initialization in blocks.""" + + @staticmethod + def xavier_uniform_(module: nn.Module) -> None: + """Apply Xavier uniform initialization to conv and linear layers.""" + if isinstance(module, (nn.Conv2d, nn.Linear)): + nn.init.xavier_uniform_(module.weight) + if module.bias is not None: + nn.init.zeros_(module.bias) + + @staticmethod + def kaiming_normal_(module: nn.Module) -> None: + """Apply Kaiming normal initialization to conv and linear layers.""" + if isinstance(module, (nn.Conv2d, nn.Linear)): + nn.init.kaiming_normal_(module.weight, mode='fan_out', + nonlinearity='relu') + if module.bias is not None: + nn.init.zeros_(module.bias) + + @staticmethod + def init_batch_norm_(module: nn.Module) -> None: + """Initialize batch normalization layers.""" + if isinstance(module, nn.BatchNorm2d): + nn.init.ones_(module.weight) + nn.init.zeros_(module.bias) + + +class BlockUtils: + """Utility functions for working with blocks.""" + + @staticmethod + def calculate_output_shape( + input_shape: tuple[int, ...], + kernel_size: Union[int, tuple[int, int]], + stride: Union[int, tuple[int, int]] = 1, + padding: Union[int, tuple[int, int]] = 0, + dilation: Union[int, tuple[int, int]] = 1) \ + -> tuple[int, ...]: + """Calculate output shape after convolution operation.""" + if isinstance(kernel_size, int): + kernel_size = (kernel_size, kernel_size) + if isinstance(stride, int): + stride = (stride, stride) + if isinstance(padding, int): + padding = (padding, padding) + if isinstance(dilation, int): + dilation = (dilation, dilation) + + batch_size, channels = input_shape[:2] + height, width = input_shape[2:] + + out_height = math.floor( + (height + 2 * padding[0] - dilation[0] * (kernel_size[0] - 1) - 1) + / stride[0] + 1 + ) + out_width = math.floor( + (width + 2 * padding[1] - dilation[1] * (kernel_size[1] - 1) - 1) / + stride[1] + 1 + ) + + return (batch_size, channels, out_height, out_width) + + @staticmethod + def count_parameters(block: nn.Module, trainable_only: bool = True) -> int: + """Count parameters in a block.""" + if trainable_only: + return sum( + p.numel() for p in block.parameters() if p.requires_grad) + else: + return sum(p.numel() for p in block.parameters()) + + @staticmethod + def get_memory_usage(block: nn.Module, input_shape: tuple[int, ...]) \ + -> dict[str, float]: + """Estimate memory usage of a block.""" + # This is a simplified estimation + param_memory = BlockUtils.count_parameters( + block) * 4 # 4 bytes per float32 + + # Rough estimation of activation memory + output_elements = math.prod(input_shape) + activation_memory = output_elements * 4 # 4 bytes per float32 + + return { + 'parameters_mb': param_memory / (1024 * 1024), + 'activations_mb': activation_memory / (1024 * 1024), + 'total_mb': (param_memory + activation_memory) / (1024 * 1024) + } + + +# Example usage and testing +if __name__ == "__main__": + # Example of how the base classes would be used + + class ExampleBlock(BaseBlock): + """Example implementation of BaseBlock.""" + + def __init__(self, in_channels: int, out_channels: int, **kwargs): + super().__init__(in_channels, out_channels, **kwargs) + self.conv = nn.Conv2d(in_channels, out_channels, + kernel_size=self.kernel_size) + + def forward(self, x: torch.Tensor) -> torch.Tensor: + return self.conv(x) + + + # Register the block + BlockRegistry.register('example', ExampleBlock) + + # Create block from registry + block = BlockRegistry.create('example', in_channels=64, out_channels=128) + print(f"Created block: {block}") + print(f"Parameter count: {block.parameter_count}") + print(f"Config: {block.get_config()}") + + # Test utility functions + input_shape = (1, 64, 32, 32) + memory_info = BlockUtils.get_memory_usage(block, input_shape) + print(f"Memory usage: {memory_info}") + + output_shape = BlockUtils.calculate_output_shape( + input_shape, kernel_size=3, stride=1, padding=1 + ) + print(f"Output shape: {output_shape}") diff --git a/src/faith/train/blocks/decoder.py b/src/faith/train/blocks/decoder.py new file mode 100644 index 0000000..dae1c76 --- /dev/null +++ b/src/faith/train/blocks/decoder.py @@ -0,0 +1,667 @@ +"""Decoder block implementations derived from base classes. + +This module implements the DecoderBlock and BlockBasedDecoder classes that +inherit from the base classes, following established patterns and interfaces. +The decoder creates a symmetric reconstruction path to the encoder. +""" + +import torch +import torch.nn as nn +from typing import Union, Any, Optional +from .base import (SequentialBlock, ConfigurableBlock, register_block, + WeightInitializer) +from torch_training.blocks.residual import ResidualBlock +from . import EncoderBlock + + +@register_block('decoder') +class DecoderBlock(SequentialBlock): + # TODO: ConvTranspose2d + """Single decoder block: Upsample + ResidualBlock + Dropout. + + This block represents the fundamental building unit of the decoder, + combining spatial upsampling, feature refinement through ResidualBlock, + and regularization through Dropout. + + Parameters + ---------- + in_channels : int + Number of input channels. + out_channels : int + Number of output channels from the ResidualBlock. + upsample_factor : tuple of int, default=(1, 2) + Scale factor for upsampling. Format: (height_factor, width_factor). + kernel_size : int or tuple of int, default=3 + Kernel size for convolutions in ResidualBlock. + stride : int or tuple of int, default=1 + Stride for convolutions in ResidualBlock. The DecoderBlock uses + stride=1 and relies on Upsample for dimension changes. + padding : int, tuple of int, or str, default='auto' + Padding for convolutions in ResidualBlock. 'auto' calculates + padding to maintain spatial dimensions. + dropout : float, default=0.3 + Dropout probability. Must be between 0.0 and 1.0. + bias : bool, default=True + Whether to use bias in convolution layers. + use_batch_norm : bool, default=True + Whether to use batch normalization in ResidualBlock. + activation : str, default='relu' + Activation function for ResidualBlock. + upsampling_mode : str, default='nearest' + Upsampling algorithm. Options: 'nearest', 'linear', 'bilinear', + 'bicubic', 'trilinear', 'area'. + residual_init_method : str, default='kaiming' + Weight initialization method for ResidualBlock. + + Attributes + ---------- + upsample : nn.Upsample + Upsampling layer for spatial dimension restoration. + residual_block : ResidualBlock + The residual convolutional block for feature refinement. + dropout : nn.Dropout + Dropout layer for regularization. + upsample_factor : tuple of int + Stored upsampling factor. + dropout_prob : float + Stored dropout probability. + upsampling_mode : str + Stored upsampling mode. + + Examples + -------- + >>> block = DecoderBlock(in_channels=128, out_channels=64) + >>> x = torch.randn(1, 128, 16, 8) + >>> out = block(x) + >>> print(out.shape) + torch.Size([1, 64, 16, 16]) + + >>> # Custom configuration + >>> block = DecoderBlock( + ... in_channels=128, out_channels=64, + ... upsample_factor=(2, 2), upsampling_mode='bilinear', + ... activation='gelu' + ... ) + """ + + def __init__( + self, + in_channels: int, + out_channels: int, + upsample_factor: tuple[int, int] = (1, 2), + kernel_size: Union[int, tuple[int, int]] = 3, + stride: Union[int, tuple[int, int]] = 1, + padding: Union[int, tuple[int, int], str] = 'auto', + dropout: float = 0.3, + bias: bool = True, + use_batch_norm: bool = True, + activation: str = 'relu', + upsampling_mode: str = 'nearest', + residual_init_method: str = 'kaiming' + ) -> None: + """Initialize DecoderBlock.""" + + # Validate parameters + if not 0.0 <= dropout <= 1.0: + raise ValueError( + f"Dropout must be between 0.0 and 1.0, got {dropout}") + + if len(upsample_factor) != 2: + raise ValueError(f"upsample_factor must be a tuple of length 2, " + f"got {upsample_factor}") + + valid_modes = { + 'nearest', 'linear', 'bilinear', 'bicubic', 'trilinear', 'area'} + if upsampling_mode not in valid_modes: + raise ValueError(f"upsampling_mode must be one of {valid_modes}, " + f"got {upsampling_mode}") + + # Store configuration + self.upsample_factor = upsample_factor + self.dropout_prob = dropout + self.upsampling_mode = upsampling_mode + self.use_batch_norm = use_batch_norm + self.activation_name = activation + self.residual_init_method = residual_init_method + + # Build the sequential operations + operations = self._build_operations( + in_channels, out_channels, kernel_size, stride, padding, + bias, use_batch_norm, activation, residual_init_method + ) + + # Initialize SequentialBlock with operations + super().__init__( + in_channels=in_channels, + out_channels=out_channels, + operations=operations, + kernel_size=kernel_size, + bias=bias + ) + + # Store individual components for introspection + self.upsample = self.operations[0] + self.residual_block = self.operations[1] + self.dropout = self.operations[2] + + def _build_operations( + self, + in_channels: int, + out_channels: int, + kernel_size: Union[int, tuple[int, int]], + stride: Union[int, tuple[int, int]], + padding: Union[int, tuple[int, int], str], + bias: bool, + use_batch_norm: bool, + activation: str, + init_method: str + ) -> list[nn.Module]: + """Build the list of operations for this decoder block.""" + + operations = [] + + # 1. Upsample for spatial dimension restoration + upsample_layer = nn.Upsample( + scale_factor=self.upsample_factor, + mode=self.upsampling_mode + ) + operations.append(upsample_layer) + + # 2. ResidualBlock for feature refinement + residual_block = ResidualBlock( + in_channels=in_channels, + out_channels=out_channels, + kernel_size=kernel_size, + stride=stride, + padding=padding, + bias=bias, + use_batch_norm=use_batch_norm, + activation=activation, + init_method=init_method + ) + operations.append(residual_block) + + # 3. Dropout for regularization + dropout_layer = nn.Dropout(p=self.dropout_prob) + operations.append(dropout_layer) + + return operations + + def get_config(self) -> dict[str, Any]: + """Get configuration dictionary for this block.""" + config = super().get_config() + config.update({ + 'upsample_factor': self.upsample_factor, + 'dropout': self.dropout_prob, + 'upsampling_mode': self.upsampling_mode, + 'use_batch_norm': self.use_batch_norm, + 'activation': self.activation_name, + 'residual_init_method': self.residual_init_method, + 'stride': getattr(self.residual_block, 'stride', 1), + 'padding': getattr(self.residual_block, 'padding', 'auto'), + }) + return config + + @classmethod + def from_config(cls, config: dict[str, Any]) -> 'DecoderBlock': + """Create DecoderBlock instance from configuration dictionary.""" + return cls(**config) + + def get_output_shape( + self, + input_shape: tuple[int, ...] + ) -> tuple[int, ...]: + """Calculate output shape given input shape.""" + batch_size, channels, height, width = input_shape + + # Apply upsampling + upsampled_height = height * self.upsample_factor[0] + upsampled_width = width * self.upsample_factor[1] + + # ResidualBlock changes channels but maintains spatial dimensions + return (batch_size, self.out_channels, upsampled_height, + upsampled_width) + + def __repr__(self) -> str: + """String representation of the DecoderBlock.""" + return (f"DecoderBlock(" + f"in_channels={self.in_channels}, " + f"out_channels={self.out_channels}, " + f"upsample_factor={self.upsample_factor}, " + f"dropout={self.dropout_prob}, " + f"upsampling_mode='{self.upsampling_mode}', " + f"activation='{self.activation_name}')") + + +class BlockBasedDecoder(ConfigurableBlock): + """Decoder architecture built from a sequence of DecoderBlocks. + + This decoder mirrors the encoder architecture by using the encoder's + block configuration to create a symmetric upsampling path. Each decoding + stage consists of a DecoderBlock (Upsample + ResidualBlock + Dropout). + + Parameters + ---------- + output_channels : int + Number of channels in the final output (should match encoder input). + encoder_blocks : list of EncoderBlock + List of encoder blocks to create symmetric decoder from. + bottleneck_channels : int + Number of channels from the encoder's bottleneck. + kernel_size : int or tuple of int, default=3 + Default kernel size for convolutions. + bias : bool, default=True + Default bias setting for convolutions. + upsampling_mode : str, default='nearest' + Upsampling algorithm for all decoder blocks. + use_batch_norm : bool, default=True + Whether to use batch normalization in blocks. + activation : str, default='relu' + Default activation function for blocks. + init_method : str, default='kaiming' + Weight initialization method. + reconstruction_kernel_size : int or tuple of int, optional + Kernel size for final reconstruction layer. If None, uses kernel_size. + + Attributes + ---------- + decoder_start : nn.Sequential + Initial layers to process bottleneck output. + blocks : nn.ModuleList + List of DecoderBlock modules. + reconstruction : nn.Conv2d + Final reconstruction convolution layer. + output_channels : int + Number of output channels. + upsampling_mode : str + Upsampling mode used throughout decoder. + """ + + def __init__( + self, + output_channels: int, + encoder_blocks: list[EncoderBlock], + bottleneck_channels: int, + kernel_size: Union[int, tuple[int, int]] = 3, + bias: bool = True, + upsampling_mode: str = 'nearest', + use_batch_norm: bool = True, + activation: str = 'relu', + init_method: str = 'kaiming', + reconstruction_kernel_size: + Optional[Union[int, tuple[int, int]]] = None, + **kwargs + ) -> None: + """Initialize BlockBasedDecoder.""" + + # Initialize ConfigurableBlock + super().__init__( + in_channels=bottleneck_channels, + out_channels=output_channels, + kernel_size=kernel_size, + bias=bias, + encoder_blocks=encoder_blocks, + bottleneck_channels=bottleneck_channels, + upsampling_mode=upsampling_mode, + use_batch_norm=use_batch_norm, + activation=activation, + init_method=init_method, + reconstruction_kernel_size=reconstruction_kernel_size, + **kwargs + ) + + # Validate inputs + if output_channels <= 0: + raise ValueError( + f"output_channels must be positive, got {output_channels}") + + if bottleneck_channels <= 0: + raise ValueError(f"bottleneck_channels must be positive, " + f"got {bottleneck_channels}") + + self.output_channels = output_channels + self.encoder_blocks = encoder_blocks + self.bottleneck_channels = bottleneck_channels + self.upsampling_mode = upsampling_mode + self.use_batch_norm = use_batch_norm + self.activation_name = activation + self.init_method = init_method + + if reconstruction_kernel_size is None: + reconstruction_kernel_size = kernel_size + self.reconstruction_kernel_size = reconstruction_kernel_size + + # Build decoder components + self.decoder_start = self._build_decoder_start(kernel_size, bias) + self.blocks = self._build_decoder_blocks() + self.reconstruction = self._build_reconstruction_layer() + + # Initialize weights + self._initialize_weights() + + def _build_decoder_start( + self, + kernel_size: Union[int, tuple[int, int]], + bias: bool + ) -> nn.Sequential: + """Build the initial decoder layers to process bottleneck output.""" + # Calculate padding for convolution + if isinstance(kernel_size, int): + padding = kernel_size // 2 + else: + padding = tuple(k // 2 for k in kernel_size) + + # Determine first block channels + first_block_channels = ( + self.encoder_blocks[-1].out_channels + if self.encoder_blocks + else self.bottleneck_channels + ) + + layers = [ + nn.Conv2d( + self.bottleneck_channels, + first_block_channels, + kernel_size=kernel_size, + padding=padding, + bias=bias and not self.use_batch_norm + ) + ] + + if self.use_batch_norm: + layers.append(nn.BatchNorm2d(first_block_channels)) + + layers.append(self._create_activation(self.activation_name)) + + return nn.Sequential(*layers) + + def _build_decoder_blocks(self) -> nn.ModuleList: + """Build decoder blocks by mirroring encoder blocks.""" + blocks = [] + + # Get the output channels from decoder_start + current_channels = ( + self.encoder_blocks[-1].out_channels + if self.encoder_blocks + else self.bottleneck_channels + ) + + # Create symmetric decoder by reversing encoder blocks + for i, encoder_block in enumerate(reversed(self.encoder_blocks)): + # Determine output channels for this decoder block + if i == len(self.encoder_blocks) - 1: + # Last block outputs to final channels + out_channels = self.output_channels + else: + # Use the input channels of the corresponding encoder block + corresponding_encoder_idx = len(self.encoder_blocks) - 2 - i + out_channels = ( + self.encoder_blocks[corresponding_encoder_idx].in_channels) + + # Create decoder block configuration + block_config = self._create_decoder_block_config( + encoder_block, current_channels, out_channels + ) + + # Create decoder block + decoder_block = DecoderBlock(**block_config) + blocks.append(decoder_block) + current_channels = out_channels + + return nn.ModuleList(blocks) + + def _create_decoder_block_config( + self, + encoder_block: EncoderBlock, + in_channels: int, + out_channels: int + ) -> dict[str, Any]: + """Create configuration for a decoder block based on encoder block.""" + return { + 'in_channels': in_channels, + 'out_channels': out_channels, + 'upsample_factor': encoder_block.pool_size, # Mirror the pooling + 'kernel_size': self.kernel_size, + 'stride': 1, # Always use stride=1 in decoder + 'padding': 'auto', + 'dropout': encoder_block.dropout_prob, # Match encoder dropout + 'bias': self.bias, + 'use_batch_norm': self.use_batch_norm, + 'activation': self.activation_name, + 'upsampling_mode': self.upsampling_mode, + 'residual_init_method': self.init_method, + } + + def _build_reconstruction_layer(self) -> nn.Conv2d: + """Build the final reconstruction convolution layer.""" + # Calculate padding for reconstruction layer + if isinstance(self.reconstruction_kernel_size, int): + padding = self.reconstruction_kernel_size // 2 + else: + padding = tuple(k // 2 for k in self.reconstruction_kernel_size) + + return nn.Conv2d( + self.output_channels, + self.output_channels, + kernel_size=self.reconstruction_kernel_size, + padding=padding, + bias=self.bias + ) + + def _create_activation(self, activation: str) -> nn.Module: + """Create activation function based on name.""" + activations = { + 'relu': nn.ReLU(inplace=True), + 'leaky_relu': nn.LeakyReLU(0.1, inplace=True), + 'gelu': nn.GELU(), + 'swish': nn.SiLU(), + 'mish': nn.Mish(), + } + if activation not in activations: + raise ValueError(f"Unknown activation: {activation}") + return activations[activation] + + def _initialize_weights(self) -> None: + """Initialize weights according to the specified method.""" + if self.init_method == 'kaiming': + self.apply(WeightInitializer.kaiming_normal_) + elif self.init_method == 'xavier': + self.apply(WeightInitializer.xavier_uniform_) + + # Always properly initialize batch norm + if self.use_batch_norm: + self.apply(WeightInitializer.init_batch_norm_) + + def forward(self, z: torch.Tensor) -> torch.Tensor: + """Forward pass through the decoder. + + Parameters + ---------- + z : torch.Tensor + Latent representation with shape + (batch_size, bottleneck_channels, height, width). + + Returns + ------- + torch.Tensor + Reconstructed output with shape + (batch_size, output_channels, height', width') where height' + and width' are restored to approximate original input dimensions. + """ + # Process through decoder start + x = self.decoder_start(z) + + # Process through decoder blocks + for block in self.blocks: + x = block(x) + + # Final reconstruction + x = self.reconstruction(x) + + return x + + def get_feature_maps(self, z: torch.Tensor) -> list[torch.Tensor]: + """Get intermediate feature maps from each decoder block. + + Useful for visualization and debugging. + + Parameters + ---------- + z : torch.Tensor + Latent representation. + + Returns + ------- + list of torch.Tensor + Feature maps after each decoder block. + """ + feature_maps = [] + + # Process through decoder start + x = self.decoder_start(z) + feature_maps.append(x.clone()) + + # Process through decoder blocks + for block in self.blocks: + x = block(x) + feature_maps.append(x.clone()) + + return feature_maps + + def get_output_shape( + self, + input_shape: tuple[int, ...] + ) -> tuple[int, ...]: + """Calculate output shape given input shape.""" + current_shape = input_shape + + # Apply decoder start (changes channels but not spatial dims) + batch_size, _, height, width = current_shape + first_channels = ( + self.encoder_blocks[-1].out_channels + if self.encoder_blocks + else self.bottleneck_channels + ) + current_shape = (batch_size, first_channels, height, width) + + # Apply each decoder block + for block in self.blocks: + current_shape = block.get_output_shape(current_shape) + + # Final reconstruction doesn't change shape + return current_shape + + @classmethod + def from_encoder( + cls, + encoder_blocks: list[EncoderBlock], + bottleneck_channels: int, + output_channels: int, + **kwargs + ) -> 'BlockBasedDecoder': + """Create decoder that mirrors the given encoder blocks. + + Parameters + ---------- + encoder_blocks : list of EncoderBlock + Encoder blocks to mirror. + bottleneck_channels : int + Number of channels from encoder bottleneck. + output_channels : int + Number of output channels. + **kwargs + Additional arguments for decoder configuration. + + Returns + ------- + BlockBasedDecoder + Configured decoder instance. + """ + return cls( + output_channels=output_channels, + encoder_blocks=encoder_blocks, + bottleneck_channels=bottleneck_channels, + **kwargs + ) + + def __repr__(self) -> str: + """String representation of the BlockBasedDecoder.""" + return (f"BlockBasedDecoder(" + f"output_channels={self.output_channels}, " + f"num_blocks={len(self.blocks)}, " + f"bottleneck_channels={self.bottleneck_channels}, " + f"upsampling_mode='{self.upsampling_mode}')") + + +# Example usage and testing +if __name__ == "__main__": + # Test DecoderBlock + print("Testing DecoderBlock...") + decoder_block = DecoderBlock( + in_channels=128, + out_channels=64, + upsample_factor=(1, 2), + dropout=0.3, + upsampling_mode='nearest', + activation='relu' + ) + + x = torch.randn(1, 128, 16, 8) + output = decoder_block(x) + print(f"DecoderBlock - Input: {x.shape}, Output: {output.shape}") + + # Test configuration + config = decoder_block.get_config() + new_block = DecoderBlock.from_config(config) + print(f"Config serialization successful: {new_block}") + + # Test BlockBasedDecoder with mock encoder blocks + print("\nTesting BlockBasedDecoder...") + + # Create mock encoder blocks for testing + from src import EncoderBlock + + + mock_encoder_blocks = [ + EncoderBlock(80, 128, pool_size=(1, 2)), + EncoderBlock(128, 256, pool_size=(1, 4)), + EncoderBlock(256, 128, pool_size=(1, 2)), + ] + + decoder = BlockBasedDecoder( + output_channels=80, + encoder_blocks=mock_encoder_blocks, + bottleneck_channels=64, + upsampling_mode='nearest' + ) + + # Test forward pass + latent = torch.randn(2, 64, 25, 4) + reconstructed = decoder(latent) + print(f"Decoder - Input: {latent.shape}, Output: {reconstructed.shape}") + + # Test feature map extraction + feature_maps = decoder.get_feature_maps(latent) + print(f"Feature maps shapes: {[fm.shape for fm in feature_maps]}") + + # Test from_encoder class method + decoder2 = BlockBasedDecoder.from_encoder( + encoder_blocks=mock_encoder_blocks, + bottleneck_channels=64, + output_channels=80, + upsampling_mode='bilinear' + ) + print(f"Decoder from encoder: {decoder2}") + + # Test registry + from src import BlockRegistry + + + registry_block = BlockRegistry.create( + 'decoder', + in_channels=64, + out_channels=32, + upsample_factor=(2, 2), + upsampling_mode='bilinear' + ) + print(f"Registry block: {registry_block}") diff --git a/src/faith/train/blocks/encoder.py b/src/faith/train/blocks/encoder.py new file mode 100644 index 0000000..d1d6735 --- /dev/null +++ b/src/faith/train/blocks/encoder.py @@ -0,0 +1,578 @@ +"""Encoder block implementations derived from base classes. + +This module implements the EncoderBlock and BlockBasedEncoder classes that +inherit from the base classes, following established patterns and interfaces. +""" + +import torch +import torch.nn as nn +from typing import Union, Any, Optional +from .base import (SequentialBlock, ConfigurableBlock, register_block, + WeightInitializer) +from .residual import ResidualBlock + + +@register_block('encoder') +class EncoderBlock(SequentialBlock): + """Single encoder block: ResidualBlock + Dropout + MaxPool. + + This block represents the fundamental building unit of the encoder, + combining feature extraction through ResidualBlock, regularization + through Dropout, and spatial downsampling through MaxPooling. + + Parameters + ---------- + in_channels : int + Number of input channels. + out_channels : int + Number of output channels from the ResidualBlock. + pool_size : tuple of int, default=(1, 2) + Kernel size for MaxPool2d operation. Format: (height, width). + kernel_size : int or tuple of int, default=3 + Kernel size for convolutions in ResidualBlock. + stride : int or tuple of int, default=1 + Stride for convolutions in ResidualBlock. The EncoderBlock uses + stride=1 and relies on MaxPool for downsampling. + padding : int, tuple of int, or str, default='auto' + Padding for convolutions in ResidualBlock. 'auto' calculates + padding to maintain spatial dimensions. + dropout : float, default=0.3 + Dropout probability. Must be between 0.0 and 1.0. + bias : bool, default=True + Whether to use bias in convolution layers. + use_batch_norm : bool, default=True + Whether to use batch normalization in ResidualBlock. + activation : str, default='relu' + Activation function for ResidualBlock. + residual_init_method : str, default='kaiming' + Weight initialization method for ResidualBlock. + + Attributes + ---------- + residual_block : ResidualBlock + The residual convolutional block for feature extraction. + dropout : nn.Dropout + Dropout layer for regularization. + pool : nn.MaxPool2d + Max pooling layer for spatial downsampling. + pool_size : tuple of int + Stored pooling size for decoder symmetry. + dropout_prob : float + Stored dropout probability. + + Examples + -------- + >>> block = EncoderBlock(in_channels=64, out_channels=128) + >>> x = torch.randn(1, 64, 32, 32) + >>> out = block(x) + >>> print(out.shape) + torch.Size([1, 128, 32, 16]) + + >>> # Custom configuration + >>> block = EncoderBlock( + ... in_channels=64, out_channels=128, + ... pool_size=(2, 2), dropout=0.5, activation='gelu' + ... ) + """ + + def __init__( + self, + in_channels: int, + out_channels: int, + pool_size: tuple[int, int] = (1, 2), + kernel_size: Union[int, tuple[int, int]] = 3, + stride: Union[int, tuple[int, int]] = 1, + padding: Union[int, tuple[int, int], str] = 'auto', + dropout: float = 0.3, + bias: bool = True, + use_batch_norm: bool = True, + activation: str = 'relu', + residual_init_method: str = 'kaiming' + ) -> None: + """Initialize EncoderBlock.""" + + # Validate parameters + if not 0.0 <= dropout <= 1.0: + raise ValueError( + f"Dropout must be between 0.0 and 1.0, got {dropout}") + + if len(pool_size) != 2: + raise ValueError( + f"pool_size must be a tuple of length 2, got {pool_size}") + + # Store configuration + self.pool_size = pool_size + self.dropout_prob = dropout + self.use_batch_norm = use_batch_norm + self.activation_name = activation + self.residual_init_method = residual_init_method + + # Build the sequential operations + operations = self._build_operations( + in_channels, out_channels, kernel_size, stride, padding, + bias, use_batch_norm, activation, residual_init_method + ) + + # Initialize SequentialBlock with operations + super().__init__( + in_channels=in_channels, + out_channels=out_channels, + operations=operations, + kernel_size=kernel_size, + bias=bias + ) + + # Store individual components for introspection + self.residual_block = self.operations[0] + self.dropout = self.operations[1] + self.pool = self.operations[2] + + def _build_operations( + self, + in_channels: int, + out_channels: int, + kernel_size: Union[int, tuple[int, int]], + stride: Union[int, tuple[int, int]], + padding: Union[int, tuple[int, int], str], + bias: bool, + use_batch_norm: bool, + activation: str, + init_method: str + ) -> list[nn.Module]: + """Build the list of operations for this encoder block.""" + + operations = [] + + # 1. ResidualBlock for feature extraction + residual_block = ResidualBlock( + in_channels=in_channels, + out_channels=out_channels, + kernel_size=kernel_size, + stride=stride, + padding=padding, + bias=bias, + use_batch_norm=use_batch_norm, + activation=activation, + init_method=init_method + ) + operations.append(residual_block) + + # 2. Dropout for regularization + dropout_layer = nn.Dropout(p=self.dropout_prob) + operations.append(dropout_layer) + + # 3. MaxPool for downsampling + pool_layer = nn.MaxPool2d(kernel_size=self.pool_size) + operations.append(pool_layer) + + return operations + + def get_config(self) -> dict[str, Any]: + """Get configuration dictionary for this block.""" + config = super().get_config() + config.update({ + 'pool_size': self.pool_size, + 'dropout': self.dropout_prob, + 'use_batch_norm': self.use_batch_norm, + 'activation': self.activation_name, + 'residual_init_method': self.residual_init_method, + 'stride': getattr(self.residual_block, 'stride', 1), + 'padding': getattr(self.residual_block, 'padding', 'auto'), + }) + return config + + @classmethod + def from_config(cls, config: dict[str, Any]) -> 'EncoderBlock': + """Create EncoderBlock instance from configuration dictionary.""" + return cls(**config) + + def get_output_shape(self, input_shape: tuple[int, ...]) \ + -> tuple[int, ...]: + """Calculate output shape given input shape.""" + + # Get shape after residual block + residual_output_shape = ( + self.residual_block.get_output_shape(input_shape)) + + # Apply pooling + batch_size, channels, height, width = residual_output_shape + + # Calculate pooled dimensions + pooled_height = height // self.pool_size[0] + pooled_width = width // self.pool_size[1] + + return (batch_size, channels, pooled_height, pooled_width) + + def __repr__(self) -> str: + """String representation of the EncoderBlock.""" + return (f"EncoderBlock(" + f"in_channels={self.in_channels}, " + f"out_channels={self.out_channels}, " + f"pool_size={self.pool_size}, " + f"dropout={self.dropout_prob}, " + f"activation='{self.activation_name}')") + + +class BlockBasedEncoder(ConfigurableBlock): + """Encoder architecture built from a sequence of EncoderBlocks. + + This encoder provides a flexible architecture where each encoding stage + consists of an EncoderBlock (ResidualBlock + Dropout + MaxPool) followed + by an optional bottleneck compression layer. + + Parameters + ---------- + input_channels : int + Number of input channels in the data. + block_configs : list of dict + Configuration for each encoder block. Each dict should contain: + - 'out_channels' (int): Output channels for the block + - 'pool_size' (tuple, optional): MaxPool kernel size, default (1, 2) + - 'dropout' (float, optional): Dropout probability, default 0.3 + - 'kernel_size' (int/tuple, optional): Conv kernel size, default 3 + - 'bias' (bool, optional): Use bias in convolutions, default True + - Other ResidualBlock parameters (activation, use_batch_norm, etc.) + bottleneck_channels : int, optional + Number of channels in the bottleneck layer. If None, defaults to + max(16, last_block_channels // 2). + hidden_dim : int, optional + Target frequency dimension after adaptive pooling. If None, no + adaptive pooling is applied. + kernel_size : int or tuple of int, default=3 + Default kernel size for blocks that don't specify one. + bias : bool, default=True + Default bias setting for blocks that don't specify one. + bottleneck_activation : str, default='relu' + Activation function for bottleneck layer. + bottleneck_init_method : str, default='kaiming' + Weight initialization method for bottleneck. + + Attributes + ---------- + blocks : nn.ModuleList + List of EncoderBlock modules. + bottleneck : nn.Sequential + Bottleneck compression layers. + bottleneck_channels : int + Number of channels in the bottleneck output. + block_configs : list of dict + Stored block configurations. + hidden_dim : int or None + Stored target frequency dimension. + """ + + def __init__( + self, + input_channels: int, + block_configs: list[dict[str, Any]], + bottleneck_channels: Optional[int] = None, + hidden_dim: Optional[int] = None, + kernel_size: Union[int, tuple[int, int]] = 3, + bias: bool = True, + bottleneck_activation: str = 'relu', + bottleneck_init_method: str = 'kaiming', + **kwargs + ) -> None: + """Initialize BlockBasedEncoder.""" + + # Initialize ConfigurableBlock + super().__init__( + in_channels=input_channels, + out_channels=input_channels, # Will be updated after building + kernel_size=kernel_size, + bias=bias, + block_configs=block_configs, + bottleneck_channels=bottleneck_channels, + hidden_dim=hidden_dim, + bottleneck_activation=bottleneck_activation, + bottleneck_init_method=bottleneck_init_method, + **kwargs + ) + + # Validate inputs + if not block_configs: + raise ValueError("block_configs cannot be empty") + + if input_channels <= 0: + raise ValueError( + f"input_channels must be positive, got {input_channels}") + + self.input_channels = input_channels + self.block_configs = block_configs + self.hidden_dim = hidden_dim + self.bottleneck_activation = bottleneck_activation + self.bottleneck_init_method = bottleneck_init_method + + # Build encoder blocks + self.blocks = self._build_encoder_blocks() + + # Build bottleneck + self.bottleneck, self.bottleneck_channels = self._build_bottleneck( + bottleneck_channels, kernel_size, bias + ) + + # Update out_channels after building + self.out_channels = self.bottleneck_channels + + def _build_encoder_blocks(self) -> nn.ModuleList: + """Build the sequence of encoder blocks.""" + blocks = [] + current_channels = self.input_channels + + for i, config in enumerate(self.block_configs): + if 'out_channels' not in config: + raise ValueError( + f"Block {i} missing required 'out_channels' key") + + # Extract config with defaults + block_config = self._prepare_block_config(config, current_channels) + + # Validate channels + out_channels = block_config['out_channels'] + if out_channels <= 0: + raise ValueError(f"out_channels must be positive, " + f"got {out_channels} in block {i}") + + # Create encoder block + block = EncoderBlock(**block_config) + blocks.append(block) + current_channels = out_channels + + return nn.ModuleList(blocks) + + def _prepare_block_config( + self, + config: dict[str, Any], + current_channels: int + ) -> dict[str, Any]: + """Prepare block configuration with defaults.""" + block_config = { + 'in_channels': current_channels, + 'out_channels': config['out_channels'], + 'pool_size': config.get('pool_size', (1, 2)), + 'kernel_size': config.get('kernel_size', self.kernel_size), + 'stride': config.get('stride', 1), + 'padding': config.get('padding', 'auto'), + 'dropout': config.get('dropout', 0.3), + 'bias': config.get('bias', self.bias), + 'use_batch_norm': config.get('use_batch_norm', True), + 'activation': config.get('activation', 'relu'), + 'residual_init_method': config.get('residual_init_method', + 'kaiming'), + } + return block_config + + def _build_bottleneck( + self, + bottleneck_channels: Optional[int], + kernel_size: Union[int, tuple[int, int]], + bias: bool + ) -> tuple[nn.Sequential, int]: + """Build the bottleneck compression layers.""" + bottleneck_layers = [] + + # Get input channels from last block + if self.blocks: + current_channels = self.blocks[-1].out_channels + else: + current_channels = self.input_channels + + # Optional adaptive pooling + if self.hidden_dim is not None: + if self.hidden_dim <= 0: + raise ValueError(f"hidden_dim must be positive, " + f"got {self.hidden_dim}") + bottleneck_layers.append( + nn.AdaptiveAvgPool2d((None, self.hidden_dim))) + + # Channel compression + if bottleneck_channels is None: + bottleneck_channels = max(16, current_channels // 2) + + if bottleneck_channels <= 0: + raise ValueError(f"bottleneck_channels must be positive, " + f"got {bottleneck_channels}") + + # Calculate padding for bottleneck convolution + if isinstance(kernel_size, int): + padding = kernel_size // 2 + else: + padding = tuple(k // 2 for k in kernel_size) + + # Add compression layers + bottleneck_layers.extend([ + nn.Conv2d( + current_channels, + bottleneck_channels, + kernel_size=kernel_size, + padding=padding, + bias=bias + ), + nn.BatchNorm2d(bottleneck_channels), + self._create_activation(self.bottleneck_activation), + ]) + + bottleneck = nn.Sequential(*bottleneck_layers) + + # Initialize bottleneck weights + self._initialize_bottleneck_weights(bottleneck) + + return bottleneck, bottleneck_channels + + def _create_activation(self, activation: str) -> nn.Module: + """Create activation function based on name.""" + activations = { + 'relu': nn.ReLU(inplace=True), + 'leaky_relu': nn.LeakyReLU(0.1, inplace=True), + 'gelu': nn.GELU(), + 'swish': nn.SiLU(), + 'mish': nn.Mish(), + } + if activation not in activations: + raise ValueError(f"Unknown activation: {activation}") + return activations[activation] + + def _initialize_bottleneck_weights( + self, + bottleneck: nn.Sequential + ) -> None: + """Initialize bottleneck weights.""" + if self.bottleneck_init_method == 'kaiming': + bottleneck.apply(WeightInitializer.kaiming_normal_) + elif self.bottleneck_init_method == 'xavier': + bottleneck.apply(WeightInitializer.xavier_uniform_) + + # Always properly initialize batch norm + bottleneck.apply(WeightInitializer.init_batch_norm_) + + def forward(self, x: torch.Tensor) -> torch.Tensor: + """Forward pass through the encoder. + + Parameters + ---------- + x : torch.Tensor + Input tensor with shape (batch_size, input_channels, height, width) + + Returns + ------- + torch.Tensor + Encoded latent representation with shape + (batch_size, bottleneck_channels, height', width') where height' + and width' depend on the pooling operations and hidden_dim. + """ + # Pass through encoder blocks + for block in self.blocks: + x = block(x) + + # Pass through bottleneck + x = self.bottleneck(x) + + return x + + def get_feature_maps(self, x: torch.Tensor) -> list[torch.Tensor]: + """Get intermediate feature maps from each encoder block. + + Useful for visualization and debugging. + + Parameters + ---------- + x : torch.Tensor + Input tensor. + + Returns + ------- + list of torch.Tensor + Feature maps after each encoder block. + """ + feature_maps = [] + + for block in self.blocks: + x = block(x) + feature_maps.append(x.clone()) + + return feature_maps + + def get_output_shape( + self, + input_shape: tuple[int, ...] + ) -> tuple[int, ...]: + """Calculate output shape given input shape.""" + current_shape = input_shape + + # Apply each encoder block + for block in self.blocks: + current_shape = block.get_output_shape(current_shape) + + # Apply adaptive pooling if present + if self.hidden_dim is not None: + batch_size, channels, height, _ = current_shape + current_shape = (batch_size, channels, height, self.hidden_dim) + + # Apply bottleneck channel reduction + batch_size, _, height, width = current_shape + return (batch_size, self.bottleneck_channels, height, width) + + def __repr__(self) -> str: + """String representation of the BlockBasedEncoder.""" + return (f"BlockBasedEncoder(" + f"input_channels={self.input_channels}, " + f"num_blocks={len(self.blocks)}, " + f"bottleneck_channels={self.bottleneck_channels}, " + f"hidden_dim={self.hidden_dim})") + + +# Example usage and testing +if __name__ == "__main__": + # Test EncoderBlock + print("Testing EncoderBlock...") + encoder_block = EncoderBlock( + in_channels=64, + out_channels=128, + pool_size=(1, 2), + dropout=0.3, + activation='relu' + ) + + x = torch.randn(1, 64, 32, 32) + output = encoder_block(x) + print(f"EncoderBlock - Input: {x.shape}, Output: {output.shape}") + + # Test configuration + config = encoder_block.get_config() + new_block = EncoderBlock.from_config(config) + print(f"Config serialization successful: {new_block}") + + # Test BlockBasedEncoder + print("\nTesting BlockBasedEncoder...") + block_configs = [ + {'out_channels': 128, 'pool_size': (1, 2), 'dropout': 0.2}, + {'out_channels': 256, 'pool_size': (1, 4), 'dropout': 0.3}, + {'out_channels': 128, 'pool_size': (1, 2), 'dropout': 0.4}, + ] + + encoder = BlockBasedEncoder( + input_channels=80, + block_configs=block_configs, + hidden_dim=16, + bottleneck_channels=64 + ) + + x = torch.randn(2, 80, 100, 128) + latent = encoder(x) + print(f"Encoder - Input: {x.shape}, Output: {latent.shape}") + + # Test feature map extraction + feature_maps = encoder.get_feature_maps(x) + print(f"Feature maps shapes: {[fm.shape for fm in feature_maps]}") + + # Test registry + from src import BlockRegistry + + + registry_block = BlockRegistry.create( + 'encoder', + in_channels=32, + out_channels=64, + activation='gelu' + ) + print(f"Registry block: {registry_block}") diff --git a/src/faith/train/blocks/residual.py b/src/faith/train/blocks/residual.py new file mode 100644 index 0000000..1c84372 --- /dev/null +++ b/src/faith/train/blocks/residual.py @@ -0,0 +1,389 @@ +"""Residual block implementation derived from base classes. + +This module implements the ResidualBlock class that inherits from BaseBlock, +following the established patterns and interfaces defined in the base module. +""" + +import torch +import torch.nn as nn +from typing import Union, Any +from .base import BaseBlock, register_block, WeightInitializer + + +@register_block('residual') +class ResidualBlock(BaseBlock): + """Residual convolutional block with batch normalization and ReLU. + + This block implements a standard residual connection with two convolutional + layers, batch normalization, and ReLU activation. It includes an optional + projection layer for dimension matching in the skip connection. + + Parameters + ---------- + in_channels : int + Number of input channels. + out_channels : int + Number of output channels. + kernel_size : int or tuple of int, default=3 + Size of the convolving kernel. + stride : int or tuple of int, default=1 + Stride of the convolution. + padding : int, tuple of int, or str, default='auto' + Padding added to all four sides of the input. If 'auto', padding is + calculated to maintain spatial dimensions when stride=1. + bias : bool, default=True + If True, adds a learnable bias to the output. + use_batch_norm : bool, default=True + Whether to use batch normalization layers. + activation : str, default='relu' + Activation function to use ('relu', 'leaky_relu', 'gelu', etc.). + init_method : str, default='kaiming' + Weight initialization method ('kaiming', 'xavier', 'default'). + + Attributes + ---------- + conv1 : torch.nn.Conv2d + First convolutional layer. + batch_norm_1 : torch.nn.BatchNorm2d or None + First batch normalization layer. + activation_fn : torch.nn.Module + Activation function. + conv2 : torch.nn.Conv2d + Second convolutional layer. + batch_norm_2 : torch.nn.BatchNorm2d or None + Second batch normalization layer. + skip_conv : torch.nn.Conv2d or None + Optional 1x1 convolution for dimension matching. + stride : tuple of int + Stored stride values. + padding : tuple of int + Stored padding values. + + Examples + -------- + >>> block = ResidualBlock(64, 128) + >>> x = torch.randn(1, 64, 32, 32) + >>> out = block(x) + >>> print(out.shape) + torch.Size([1, 128, 32, 32]) + + >>> # Custom configuration + >>> block = ResidualBlock(64, 128, stride=2, activation='gelu') + >>> config = block.get_config() + >>> new_block = ResidualBlock.from_config(config) + """ + + def __init__( + self, + in_channels: int, + out_channels: int, + kernel_size: Union[int, tuple[int, int]] = 3, + stride: Union[int, tuple[int, int]] = 1, + padding: Union[int, tuple[int, int], str] = 'auto', + bias: bool = True, + use_batch_norm: bool = True, + activation: str = 'relu', + init_method: str = 'kaiming' + ) -> None: + """Initialize ResidualBlock. + + Parameters + ---------- + in_channels : int + Number of input channels. + out_channels : int + Number of output channels. + kernel_size : int or tuple of int, default=3 + Size of the convolving kernel. + stride : int or tuple of int, default=1 + Stride of the convolution. + padding : int, tuple of int, or str, default='auto' + Padding specification. + bias : bool, default=True + Whether to use bias in convolutions. + use_batch_norm : bool, default=True + Whether to use batch normalization. + activation : str, default='relu' + Activation function name. + init_method : str, default='kaiming' + Weight initialization method. + """ + # Initialize base class + super().__init__(in_channels, out_channels, kernel_size, bias) + + # Normalize stride and padding + self.stride = self._normalize_stride(stride) + self.padding = self._calculate_padding(self.kernel_size, padding) + self.use_batch_norm = use_batch_norm + self.activation_name = activation + self.init_method = init_method + + # Validate parameters + self._validate_parameters() + + # Build the block layers + self._build_layers() + + # Initialize weights + self._initialize_weights() + + def _normalize_stride(self, stride: Union[int, tuple[int, int]]) \ + -> tuple[int, int]: + """Normalize stride to tuple format.""" + if isinstance(stride, int): + return (stride, stride) + return stride + + def _validate_parameters(self) -> None: + """Validate input parameters.""" + valid_activations = {'relu', 'leaky_relu', 'gelu', 'swish', 'mish'} + if self.activation_name not in valid_activations: + raise ValueError(f"activation must be one of {valid_activations}, " + f"got {self.activation_name}") + + valid_init_methods = {'kaiming', 'xavier', 'default'} + if self.init_method not in valid_init_methods: + raise ValueError(f"init_method must be one of {valid_init_methods}" + f", got {self.init_method}") + + def _build_layers(self) -> None: + """Build the convolutional layers and other components.""" + # First convolutional layer + self.conv1 = nn.Conv2d( + self.in_channels, + self.out_channels, + kernel_size=self.kernel_size, + stride=self.stride, + padding=self.padding, + bias=self.bias and not self.use_batch_norm + # No bias if using batch norm + ) + + # First batch normalization (optional) + if self.use_batch_norm: + self.batch_norm_1 = nn.BatchNorm2d(self.out_channels) + else: + self.batch_norm_1 = None + + # Activation function + self.activation_fn = self._create_activation() + + # Second convolutional layer (always stride=1 to maintain dimensions) + self.conv2 = nn.Conv2d( + self.out_channels, + self.out_channels, + kernel_size=self.kernel_size, + stride=1, + padding=self.padding, + bias=self.bias and not self.use_batch_norm + ) + + # Second batch normalization (optional) + if self.use_batch_norm: + self.batch_norm_2 = nn.BatchNorm2d(self.out_channels) + else: + self.batch_norm_2 = None + + # Projection for skip connection if dimensions don't match + if self.in_channels != self.out_channels or self.stride != (1, 1): + self.skip_conv = nn.Conv2d( + self.in_channels, + self.out_channels, + kernel_size=1, + stride=self.stride, + padding=0, + bias=self.bias and not self.use_batch_norm + ) + if self.use_batch_norm: + self.skip_batch_norm = nn.BatchNorm2d(self.out_channels) + else: + self.skip_batch_norm = None + else: + self.skip_conv = None + self.skip_batch_norm = None + + def _create_activation(self) -> nn.Module: + """Create activation function based on name.""" + activations = { + 'relu': nn.ReLU(inplace=True), + 'leaky_relu': nn.LeakyReLU(0.1, inplace=True), + 'gelu': nn.GELU(), + 'swish': nn.SiLU(), # SiLU is the same as Swish + 'mish': nn.Mish(), + } + return activations[self.activation_name] + + def _initialize_weights(self) -> None: + """Initialize weights according to the specified method.""" + if self.init_method == 'kaiming': + self.apply(WeightInitializer.kaiming_normal_) + elif self.init_method == 'xavier': + self.apply(WeightInitializer.xavier_uniform_) + elif self.init_method == 'default': + pass # Use PyTorch's default initialization + + # Always properly initialize batch norm + if self.use_batch_norm: + self.apply(WeightInitializer.init_batch_norm_) + + def forward(self, x: torch.Tensor) -> torch.Tensor: + """Forward pass through the residual block. + + TODO: What does ResNet do for initializing the residual connections? + + Parameters + ---------- + x : torch.Tensor + Input tensor with shape (batch_size, in_channels, height, width). + + Returns + ------- + torch.Tensor + Output tensor with shape (batch_size, out_channels, height', width') + where height' and width' depend on stride. + """ + # Store input for residual connection + residual = x + + # First conv block + out = self.conv1(x) + if self.batch_norm_1 is not None: + out = self.batch_norm_1(out) + out = self.activation_fn(out) + + # Second conv block + out = self.conv2(out) + if self.batch_norm_2 is not None: + out = self.batch_norm_2(out) + + # Apply skip connection with optional projection + if self.skip_conv is not None: + residual = self.skip_conv(residual) + if self.skip_batch_norm is not None: + residual = self.skip_batch_norm(residual) + + # Add residual connection + out += residual + + # Final activation + out = self.activation_fn(out) + + return out + + def get_config(self) -> dict[str, Any]: + """Get configuration dictionary for this block. + + Returns + ------- + dict + Configuration dictionary containing all parameters needed + to reconstruct this block. + """ + config = super().get_config() + config.update({ + 'stride': self.stride, + 'padding': self.padding, + 'use_batch_norm': self.use_batch_norm, + 'activation': self.activation_name, + 'init_method': self.init_method, + }) + return config + + @classmethod + def from_config(cls, config: dict[str, Any]) -> 'ResidualBlock': + """Create ResidualBlock instance from configuration dictionary. + + Parameters + ---------- + config : dict + Configuration dictionary. + + Returns + ------- + ResidualBlock + New ResidualBlock instance. + """ + return cls(**config) + + def __repr__(self) -> str: + """String representation of the ResidualBlock.""" + return (f"ResidualBlock(" + f"in_channels={self.in_channels}, " + f"out_channels={self.out_channels}, " + f"kernel_size={self.kernel_size}, " + f"stride={self.stride}, " + f"padding={self.padding}, " + f"bias={self.bias}, " + f"use_batch_norm={self.use_batch_norm}, " + f"activation='{self.activation_name}')") + + @property + def has_skip_connection(self) -> bool: + """Check if this block has a skip connection projection.""" + return self.skip_conv is not None + + def get_output_shape(self, input_shape: tuple[int, ...]) \ + -> tuple[int, ...]: + """Calculate output shape given input shape. + + Parameters + ---------- + input_shape : tuple + Input tensor shape (batch, channels, height, width). + + Returns + ------- + tuple + Output tensor shape. + """ + from src import BlockUtils + + # Account for stride in the first convolution + temp_shape = BlockUtils.calculate_output_shape( + input_shape, + kernel_size=self.kernel_size, + stride=self.stride, + padding=self.padding + ) + + # Update channels + batch_size, _, height, width = temp_shape + return (batch_size, self.out_channels, height, width) + + +# Example usage and testing +if __name__ == "__main__": + # Test basic functionality + block = ResidualBlock(64, 128, stride=2) + x = torch.randn(1, 64, 32, 32) + output = block(x) + print(f"Input shape: {x.shape}") + print(f"Output shape: {output.shape}") + print(f"Block: {block}") + + # Test configuration serialization + config = block.get_config() + print(f"Config: {config}") + + # Create from config + new_block = ResidualBlock.from_config(config) + print(f"Recreated block: {new_block}") + + # Test registry functionality + from src import BlockRegistry + + + registry_block = BlockRegistry.create( + 'residual', + in_channels=32, + out_channels=64, + activation='gelu' + ) + print(f"Registry block: {registry_block}") + + # Test parameter counting + print(f"Parameter count: {block.parameter_count}") + + # Test output shape calculation + output_shape = block.get_output_shape((1, 64, 32, 32)) + print(f"Calculated output shape: {output_shape}") diff --git a/src/faith/train/models/__init__.py b/src/faith/train/models/__init__.py new file mode 100644 index 0000000..f1bffd0 --- /dev/null +++ b/src/faith/train/models/__init__.py @@ -0,0 +1,92 @@ +"""Model implementations for block-based autoencoders. + +This package provides complete autoencoder models built from the modular +blocks, including standard autoencoders, masked autoencoders (MAE), and +various configuration utilities. + +The main components are: +- BlockBasedAutoencoder: Complete autoencoder with configurable architecture +- MaskedAutoencoder: MAE implementation for self-supervised learning +- MaskGenerator: Various masking strategies for MAE training +- Configuration utilities for creating models from presets or config files + +Examples +-------- +Basic usage: +>>> from faith.train.models import BlockBasedAutoencoder, \ +create_block_autoencoder +>>> autoencoder = create_block_autoencoder('default', input_channels=80) +>>> x = torch.randn(1, 80, 100, 128) +>>> reconstructed, latent = autoencoder(x) + +Masked autoencoder: +>>> from faith.train.models import MaskedAutoencoder, MaskGenerator +>>> mask_gen = MaskGenerator(mask_ratio=0.75) +>>> mae = MaskedAutoencoder(autoencoder, mask_gen) +>>> reconstructed, mask, masked_input = mae(x, mask_type='frequency') +""" + +# TODO masked loss functions + +# Core model implementations +from .autoencoder import BlockBasedAutoencoder + +# Masked autoencoder components +from .mae import ( + MaskedAutoencoder, + MaskGenerator, + mae_loss +) + +# Configuration and factory functions +from .configs import ( + create_block_autoencoder, + get_preset_config, + save_model_config, + load_model_config, + ModelConfig, + PRESET_CONFIGS +) + +# Utility functions +from .utils import ( + create_mae_model, + get_model_info, + get_memory_estimate, + validate_input_shape +) + +# Package metadata +__version__ = "0.1.0" +__author__ = "Peter Steiner" +__email__ = "peter.steiner@princeton.edu" + +# Public API - only these should be imported by users +__all__ = [ + # Core models + "BlockBasedAutoencoder", + + # Masked autoencoder components + "MaskedAutoencoder", + "MaskGenerator", + "mae_loss", + + # Configuration utilities + "create_block_autoencoder", + "get_preset_config", + "save_model_config", + "load_model_config", + "ModelConfig", + "PRESET_CONFIGS", + + # Utility functions + "create_mae_model", + "get_model_info", + "get_memory_estimate", + "validate_input_shape", + + # Metadata + "__version__", + "__author__", + "__email__", +] diff --git a/src/faith/train/models/autoencoder.py b/src/faith/train/models/autoencoder.py new file mode 100644 index 0000000..ad8cea8 --- /dev/null +++ b/src/faith/train/models/autoencoder.py @@ -0,0 +1,452 @@ +"""Complete autoencoder model implementation. + +This module provides the BlockBasedAutoencoder class that combines the +encoder and decoder blocks into a complete autoencoder architecture. +The autoencoder uses the modular blocks from the blocks package to create +flexible and configurable models for audio and spectral data. +""" + +import torch +import torch.nn as nn +from typing import Union, Optional, Any + +# Import the building blocks +from ..blocks import BlockBasedEncoder +from ..blocks.decoder import BlockBasedDecoder + + +class BlockBasedAutoencoder(nn.Module): + """Complete autoencoder built from modular encoder and decoder blocks. + + This autoencoder provides a flexible, block-based architecture where + both encoder and decoder are constructed from configurable blocks. + The decoder automatically mirrors the encoder's architecture for + symmetric reconstruction. + + Parameters + ---------- + input_channels : int + Number of input channels in the data. + block_configs : list of dict, optional + Configuration for encoder blocks. If None, uses default configuration. + Each dict should contain 'out_channels' and optionally 'pool_size', + 'dropout', 'kernel_size', 'bias', etc. + bottleneck_channels : int, optional + Number of channels in the bottleneck. If None, auto-calculated. + kernel_size : int or tuple of int, default=3 + Default kernel size for convolutions. + bias : bool, default=True + Whether to use bias in convolution layers. + upsampling_mode : str, default='nearest' + Upsampling algorithm for decoder ('nearest', 'bilinear', etc.). + use_batch_norm : bool, default=True + Whether to use batch normalization in blocks. + activation : str, default='relu' + Default activation function for blocks. + init_method : str, default='kaiming' + Weight initialization method. + + Attributes + ---------- + encoder : BlockBasedEncoder + The encoder module. + decoder : BlockBasedDecoder + The decoder module. + input_channels : int + Number of input channels. + block_configs : list of dict + Encoder block configurations. + + Examples + -------- + >>> # Basic usage with default configuration + >>> autoencoder = BlockBasedAutoencoder(input_channels=80) + >>> x = torch.randn(1, 80, 100, 128) + >>> reconstructed, latent = autoencoder(x) + + >>> # Custom configuration + >>> configs = [ + ... {'out_channels': 64, 'pool_size': (1, 2)}, + ... {'out_channels': 128, 'pool_size': (1, 4)}, + ... ] + >>> autoencoder = BlockBasedAutoencoder( + ... input_channels=80, + ... block_configs=configs, + ... ) + """ + + def __init__( + self, + input_channels: int, + block_configs: Optional[list[dict[str, Any]]] = None, + bottleneck_channels: Optional[int] = None, + kernel_size: Union[int, tuple[int, int]] = 3, + bias: bool = True, + upsampling_mode: str = 'nearest', + use_batch_norm: bool = True, + activation: str = 'relu', + init_method: str = 'kaiming', + **kwargs + ) -> None: + """Initialize BlockBasedAutoencoder. + + Parameters + ---------- + input_channels : int + Number of input channels in the data. + block_configs : list of dict, optional + Configuration for encoder blocks. + bottleneck_channels : int, optional + Number of channels in the bottleneck. + kernel_size : int or tuple of int, default=3 + Default kernel size for convolutions. + bias : bool, default=True + Whether to use bias in convolution layers. + upsampling_mode : str, default='nearest' + Upsampling algorithm for decoder. + use_batch_norm : bool, default=True + Whether to use batch normalization. + activation : str, default='relu' + Default activation function. + init_method : str, default='kaiming' + Weight initialization method. + **kwargs + Additional arguments (for future extensibility). + """ + super().__init__() + + if input_channels <= 0: + raise ValueError( + f"input_channels must be positive, got {input_channels}") + + # Store configuration + self.input_channels = input_channels + self.block_configs = block_configs + self.upsampling_mode = upsampling_mode + self.use_batch_norm = use_batch_norm + self.activation = activation + self.init_method = init_method + + # Use default block configuration if none provided + if block_configs is None: + block_configs = self._get_default_block_configs() + + # Create encoder + self.encoder = BlockBasedEncoder( + input_channels=input_channels, + block_configs=block_configs, + bottleneck_channels=bottleneck_channels, + kernel_size=kernel_size, + bias=bias, + bottleneck_activation=activation, + bottleneck_init_method=init_method + ) + + # Create decoder that mirrors the encoder + self.decoder = BlockBasedDecoder( + output_channels=input_channels, + encoder_blocks=self.encoder.blocks, + bottleneck_channels=self.encoder.bottleneck_channels, + kernel_size=kernel_size, + bias=bias, + upsampling_mode=upsampling_mode, + use_batch_norm=use_batch_norm, + activation=activation, + init_method=init_method + ) + + def _get_default_block_configs(self) -> list[dict[str, Any]]: + """Get default block configuration.""" + return [ + {'out_channels': 32, 'pool_size': (1, 2)}, + {'out_channels': 16, 'pool_size': (1, 2)}, + ] + + def encode(self, x: torch.Tensor) -> torch.Tensor: + """Encode input to latent representation. + + Parameters + ---------- + x : torch.Tensor + Input with shape (batch_size, input_channels, height, width). + + Returns + ------- + torch.Tensor + Latent representation with shape + (batch_size, bottleneck_channels, height', width'). + """ + return self.encoder(x) + + def decode(self, z: torch.Tensor) -> torch.Tensor: + """ + Decode latent representation to reconstructed output. + + Parameters + ---------- + z : torch.Tensor + Latent representation with shape + (batch_size, bottleneck_channels, height, width). + + Returns + ------- + torch.Tensor + Reconstructed output with shape approximately matching + the original input dimensions. + """ + return self.decoder(z) + + def forward(self, inputs: torch.Tensor) -> torch.Tensor: + """Forward pass through the complete autoencoder. + + Parameters + ---------- + inputs : torch.Tensor + Input with shape (batch_size, input_channels, height, width). + + Returns + ------- + torch.Tensor + Reconstructed input with the same shape as input. + """ + latent = self.encode(inputs) + reconstructed = self.decode(latent) + return reconstructed + + def latent_with_reconstruction(self, inputs: torch.Tensor) \ + -> tuple[torch.Tensor, torch.Tensor]: + """Forward pass through the complete autoencoder. + + Parameters + ---------- + inputs : torch.Tensor + Input with shape (batch_size, input_channels, height, width). + + Returns + ------- + torch.Tensor + Latent representation with shape + (batch_size, bottleneck_channels, height', width'). + torch.Tensor + Reconstructed output with shape approximately matching the original + input dimensions. + """ + latent = self.encode(inputs) + reconstructed = self.decode(latent) + return latent, reconstructed + + def get_config(self) -> dict[str, Any]: + """Get configuration dictionary for this autoencoder. + + Returns + ------- + dict + Configuration dictionary containing all parameters needed + to reconstruct this autoencoder. + """ + return { + 'input_channels': self.input_channels, + 'block_configs': self.block_configs, + 'bottleneck_channels': self.encoder.bottleneck_channels, + 'kernel_size': self.encoder.kernel_size, + 'bias': self.encoder.bias, + 'upsampling_mode': self.upsampling_mode, + 'use_batch_norm': self.use_batch_norm, + 'activation': self.activation, + 'init_method': self.init_method, + } + + @classmethod + def from_config(cls, config: dict[str, Any]) -> 'BlockBasedAutoencoder': + """Create BlockBasedAutoencoder instance from configuration dictionary. + + Parameters + ---------- + config : dict + Configuration dictionary from get_config(). + + Returns + ------- + BlockBasedAutoencoder + New autoencoder instance. + """ + return cls(**config) + + def get_output_shape(self, input_shape: tuple[int, ...]) -> tuple[ + int, ...]: + """Calculate output shape given input shape. + + Parameters + ---------- + input_shape : tuple of int + Input tensor shape (batch, channels, height, width). + + Returns + ------- + tuple of int + Output tensor shape (should match input for autoencoder). + """ + # For autoencoder, output shape should match input shape + latent_shape = self.encoder.get_output_shape(input_shape) + output_shape = self.decoder.get_output_shape(latent_shape) + return output_shape + + def get_latent_shape(self, input_shape: tuple[int, ...]) -> tuple[ + int, ...]: + """Calculate latent representation shape given input shape. + + Parameters + ---------- + input_shape : tuple of int + Input tensor shape (batch, channels, height, width). + + Returns + ------- + tuple of int + Latent tensor shape. + """ + return self.encoder.get_output_shape(input_shape) + + def get_feature_maps(self, inputs: torch.Tensor) -> dict[ + str, list[torch.Tensor]]: + """Get intermediate feature maps from encoder and decoder. + + Useful for visualization and debugging. + + Parameters + ---------- + inputs : torch.Tensor + Input tensor. + + Returns + ------- + dict + Dictionary containing: + - 'encoder': List of feature maps from encoder blocks + - 'decoder': List of feature maps from decoder blocks + """ + # Get encoder feature maps + encoder_features = self.encoder.get_feature_maps(inputs) + + # Get latent representation + latent = self.encoder(inputs) + + # Get decoder feature maps + decoder_features = self.decoder.get_feature_maps(latent) + + return { + 'encoder': encoder_features, + 'decoder': decoder_features, + 'latent': latent + } + + @property + def parameter_count(self) -> int: + """Get total number of trainable parameters.""" + return sum(p.numel() for p in self.parameters() if p.requires_grad) + + @property + def encoder_parameter_count(self) -> int: + """Get number of trainable parameters in encoder.""" + return sum( + p.numel() for p in self.encoder.parameters() if p.requires_grad) + + @property + def decoder_parameter_count(self) -> int: + """Get number of trainable parameters in decoder.""" + return sum( + p.numel() for p in self.decoder.parameters() if p.requires_grad) + + def freeze_encoder(self) -> None: + """Freeze encoder parameters (useful for fine-tuning decoder only).""" + for param in self.encoder.parameters(): + param.requires_grad = False + + def freeze_decoder(self) -> None: + """Freeze decoder parameters (useful for feature extraction).""" + for param in self.decoder.parameters(): + param.requires_grad = False + + def unfreeze_all(self) -> None: + """Unfreeze all parameters.""" + for param in self.parameters(): + param.requires_grad = True + + def __repr__(self) -> str: + """String representation of the BlockBasedAutoencoder.""" + return (f"BlockBasedAutoencoder(" + f"input_channels={self.input_channels}, " + f"encoder_blocks={len(self.encoder.blocks)}, " + f"decoder_blocks={len(self.decoder.blocks)}, " + f"bottleneck_channels={self.encoder.bottleneck_channels}, " + f"parameters={self.parameter_count:,})") + + +# Example usage and testing +if __name__ == "__main__": + # Test basic functionality + print("Testing BlockBasedAutoencoder...") + + # Create autoencoder with default config + autoencoder = BlockBasedAutoencoder(input_channels=80) + + # Test forward pass + x = torch.randn(2, 80, 100, 128) + reconstructed = autoencoder(x) + latent = autoencoder.encode(x) + + print(f"Input shape: {x.shape}") + print(f"Latent shape: {latent.shape}") + print(f"Reconstructed shape: {reconstructed.shape}") + print(f"Autoencoder: {autoencoder}") + + # Test individual methods + latent_only = autoencoder.get_latent_representation(x) + reconstructed_only = autoencoder.reconstruct(x) + + print(f"Latent only shape: {latent_only.shape}") + print(f"Reconstructed only shape: {reconstructed_only.shape}") + + # Test configuration serialization + config = autoencoder.get_config() + print(f"Config keys: {list(config.keys())}") + + new_autoencoder = BlockBasedAutoencoder.from_config(config) + print(f"Recreated autoencoder: {new_autoencoder}") + + # Test shape calculation + output_shape = autoencoder.get_output_shape((1, 80, 100, 128)) + latent_shape = autoencoder.get_latent_shape((1, 80, 100, 128)) + print(f"Calculated output shape: {output_shape}") + print(f"Calculated latent shape: {latent_shape}") + + # Test parameter counting + print(f"Total parameters: {autoencoder.parameter_count:,}") + print(f"Encoder parameters: {autoencoder.encoder_parameter_count:,}") + print(f"Decoder parameters: {autoencoder.decoder_parameter_count:,}") + + # Test feature map extraction + feature_maps = autoencoder.get_feature_maps(x) + print(f"Encoder feature maps: {len(feature_maps['encoder'])}") + print(f"Decoder feature maps: {len(feature_maps['decoder'])}") + + # Test custom configuration + custom_configs = [ + {'out_channels': 64, 'pool_size': (1, 2), 'dropout': 0.2}, + {'out_channels': 128, 'pool_size': (1, 4), 'dropout': 0.3}, + ] + + custom_autoencoder = BlockBasedAutoencoder( + input_channels=80, + block_configs=custom_configs, + activation='gelu' + ) + + x_custom = torch.randn(1, 80, 100, 128) + reconstructed_custom, latent_custom = custom_autoencoder(x_custom) + + print(f"\nCustom autoencoder:") + print(f"Input shape: {x_custom.shape}") + print(f"Latent shape: {latent_custom.shape}") + print(f"Reconstructed shape: {reconstructed_custom.shape}") + print(f"Custom autoencoder: {custom_autoencoder}") diff --git a/src/faith/train/models/configs.py b/src/faith/train/models/configs.py new file mode 100644 index 0000000..4e9adba --- /dev/null +++ b/src/faith/train/models/configs.py @@ -0,0 +1,634 @@ +"""Configuration management for autoencoder models. + +This module provides utilities for creating, saving, loading, and managing +configurations for autoencoder models. It includes preset configurations +for common use cases and tools for custom configuration management. +""" + +import json +import yaml +from pathlib import Path +from typing import Union, Optional, Any +from dataclasses import dataclass, asdict, field +from copy import deepcopy + +from .autoencoder import BlockBasedAutoencoder +from .mae import MaskedAutoencoder, MaskGenerator + + +@dataclass +class ModelConfig: + """Configuration dataclass for autoencoder models. + + This dataclass provides a structured way to define and manage + autoencoder configurations with validation and serialization support. + + Parameters + ---------- + input_channels : int + Number of input channels. + block_configs : list of dict + Configuration for each encoder block. + bottleneck_channels : int, optional + Number of channels in bottleneck. + hidden_dim : int, optional + Target frequency dimension after adaptive pooling. + kernel_size : int or tuple of int, default=3 + Default kernel size for convolutions. + bias : bool, default=True + Whether to use bias in convolutions. + upsampling_mode : str, default='nearest' + Upsampling mode for decoder. + use_batch_norm : bool, default=True + Whether to use batch normalization. + activation : str, default='relu' + Default activation function. + init_method : str, default='kaiming' + Weight initialization method. + model_type : str, default='autoencoder' + Type of model ('autoencoder' or 'mae'). + mae_config : dict, optional + Configuration for MAE-specific parameters. + metadata : dict, optional + Additional metadata (description, version, etc.). + + Examples + -------- + >>> config = ModelConfig( + ... input_channels=80, + ... block_configs=[ + ... {'out_channels': 128, 'pool_size': (1, 2)}, + ... {'out_channels': 256, 'pool_size': (1, 4)}, + ... ], + ... hidden_dim=16 + ... ) + >>> model = create_model_from_config(config) + """ + + input_channels: int + block_configs: list[dict[str, Any]] + bottleneck_channels: Optional[int] = None + hidden_dim: Optional[int] = None + kernel_size: Union[int, tuple[int, int]] = 3 + bias: bool = True + upsampling_mode: str = 'nearest' + use_batch_norm: bool = True + activation: str = 'relu' + init_method: str = 'kaiming' + model_type: str = 'autoencoder' + mae_config: Optional[dict[str, Any]] = None + metadata: dict[str, Any] = field(default_factory=dict) + + def __post_init__(self): + """Validate configuration after initialization.""" + self._validate() + + def _validate(self): + """Validate configuration parameters.""" + if self.input_channels <= 0: + raise ValueError( + f"input_channels must be positive, got {self.input_channels}") + + if not self.block_configs: + raise ValueError("block_configs cannot be empty") + + for i, config in enumerate(self.block_configs): + if 'out_channels' not in config: + raise ValueError( + f"Block {i} missing required 'out_channels' key") + if config['out_channels'] <= 0: + raise ValueError(f"Block {i} out_channels must be positive") + + if (self.bottleneck_channels is not None + and self.bottleneck_channels <= 0): + raise ValueError( + "bottleneck_channels must be positive if specified") + + if self.hidden_dim is not None and self.hidden_dim <= 0: + raise ValueError("hidden_dim must be positive if specified") + + valid_model_types = ['autoencoder', 'mae'] + if self.model_type not in valid_model_types: + raise ValueError(f"model_type must be one of {valid_model_types}") + + valid_activations = ['relu', 'leaky_relu', 'gelu', 'swish', 'mish'] + if self.activation not in valid_activations: + raise ValueError(f"activation must be one of {valid_activations}") + + valid_init_methods = ['kaiming', 'xavier', 'default'] + if self.init_method not in valid_init_methods: + raise ValueError( + f"init_method must be one of {valid_init_methods}") + + valid_upsampling_modes = ['nearest', 'bilinear', 'bicubic', 'area'] + if self.upsampling_mode not in valid_upsampling_modes: + raise ValueError( + f"upsampling_mode must be one of {valid_upsampling_modes}") + + def to_dict(self) -> dict[str, Any]: + """Convert configuration to dictionary.""" + return asdict(self) + + @classmethod + def from_dict(cls, config_dict: dict[str, Any]) -> 'ModelConfig': + """Create configuration from dictionary.""" + return cls(**config_dict) + + def save(self, filepath: Union[str, Path], format: str = 'yaml') -> None: + """Save configuration to file. + + Parameters + ---------- + filepath : str or Path + Path to save configuration. + format : str, default='yaml' + File format ('yaml' or 'json'). + """ + filepath = Path(filepath) + config_dict = self.to_dict() + + if format.lower() == 'yaml': + with open(filepath, 'w') as f: + yaml.dump(config_dict, f, default_flow_style=False, indent=2) + elif format.lower() == 'json': + with open(filepath, 'w') as f: + json.dump(config_dict, f, indent=2) + else: + raise ValueError( + f"Unsupported format: {format}. Use 'yaml' or 'json'.") + + @classmethod + def load(cls, filepath: Union[str, Path]) -> 'ModelConfig': + """Load configuration from file. + + Parameters + ---------- + filepath : str or Path + Path to configuration file. + + Returns + ------- + ModelConfig + Loaded configuration. + """ + filepath = Path(filepath) + + if not filepath.exists(): + raise FileNotFoundError( + f"Configuration file not found: {filepath}") + + suffix = filepath.suffix.lower() + + with open(filepath, 'r') as f: + if suffix in ['.yaml', '.yml']: + config_dict = yaml.safe_load(f) + elif suffix == '.json': + config_dict = json.load(f) + else: + raise ValueError(f"Unsupported file format: {suffix}. " + f"Use .yaml, .yml, or .json") + + return cls.from_dict(config_dict) + + def copy(self) -> 'ModelConfig': + """Create a deep copy of the configuration.""" + return ModelConfig.from_dict(deepcopy(self.to_dict())) + + def update(self, **kwargs) -> 'ModelConfig': + """Create a new configuration with updated parameters. + + Parameters + ---------- + **kwargs + Parameters to update. + + Returns + ------- + ModelConfig + New configuration with updated parameters. + """ + config_dict = self.to_dict() + config_dict.update(kwargs) + return self.from_dict(config_dict) + + +# Preset configurations for common use cases +PRESET_CONFIGS = { + 'default': ModelConfig( + input_channels=80, # Will be overridden by user + block_configs=[ + {'out_channels': 128, 'pool_size': (1, 2)}, + {'out_channels': 256, 'pool_size': (1, 2)}, + {'out_channels': 256, 'pool_size': (1, 2)}, + {'out_channels': 128, 'pool_size': (1, 2)}, + {'out_channels': 64, 'pool_size': (1, 2)}, + ], + metadata={ + 'description': 'Default balanced configuration', + 'use_case': 'General purpose autoencoder' + } + ), + + 'light': ModelConfig( + input_channels=80, + block_configs=[ + {'out_channels': 64, 'pool_size': (1, 2)}, + {'out_channels': 128, 'pool_size': (1, 2)}, + {'out_channels': 64, 'pool_size': (1, 2)}, + ], + metadata={ + 'description': 'Lightweight configuration for fast training', + 'use_case': 'Resource-constrained environments' + } + ), + + 'heavy': ModelConfig( + input_channels=80, + block_configs=[ + {'out_channels': 128, 'pool_size': (1, 2)}, + {'out_channels': 256, 'pool_size': (1, 2)}, + {'out_channels': 512, 'pool_size': (1, 2)}, + {'out_channels': 512, 'pool_size': (1, 2)}, + {'out_channels': 256, 'pool_size': (1, 2)}, + {'out_channels': 128, 'pool_size': (1, 2)}, + ], + metadata={ + 'description': 'Heavy configuration for maximum capacity', + 'use_case': 'Large datasets, high-quality reconstruction' + } + ), + + 'asymmetric': ModelConfig( + input_channels=80, + block_configs=[ + {'out_channels': 64, 'pool_size': (1, 4)}, + {'out_channels': 128, 'pool_size': (1, 2)}, + {'out_channels': 256, 'pool_size': (1, 2)}, + ], + metadata={ + 'description': 'Asymmetric pooling for different compression ' + 'ratios', + 'use_case': 'Audio with varying frequency resolution needs' + } + ), + + 'variable_dropout': ModelConfig( + input_channels=80, + block_configs=[ + {'out_channels': 128, 'pool_size': (1, 2), 'dropout': 0.1}, + {'out_channels': 256, 'pool_size': (1, 2), 'dropout': 0.2}, + {'out_channels': 256, 'pool_size': (1, 2), 'dropout': 0.3}, + {'out_channels': 128, 'pool_size': (1, 2), 'dropout': 0.4}, + ], + metadata={ + 'description': 'Progressive dropout for regularization', + 'use_case': 'Preventing overfitting in deep networks' + } + ), + + 'mae_default': ModelConfig( + input_channels=80, + block_configs=[ + {'out_channels': 128, 'pool_size': (1, 2)}, + {'out_channels': 256, 'pool_size': (1, 2)}, + {'out_channels': 128, 'pool_size': (1, 2)}, + ], + model_type='mae', + mae_config={ + 'mask_ratio': 0.75, + 'patch_size': (8, 8), + 'min_mask_size': 1, + 'max_mask_size': None, + 'mask_token_value': 0.0 + }, + metadata={ + 'description': 'Default configuration for Masked Autoencoder', + 'use_case': 'Self-supervised pre-training' + } + ), + + 'mae_aggressive': ModelConfig( + input_channels=80, + block_configs=[ + {'out_channels': 64, 'pool_size': (1, 2)}, + {'out_channels': 128, 'pool_size': (1, 4)}, + {'out_channels': 256, 'pool_size': (1, 2)}, + ], + model_type='mae', + mae_config={ + 'mask_ratio': 0.85, + 'patch_size': (4, 4), + 'min_mask_size': 2, + 'max_mask_size': 16, + 'mask_token_value': 0.0 + }, + metadata={ + 'description': 'Aggressive masking for challenging pre-training', + 'use_case': 'Learning robust representations' + } + ), +} + + +def get_preset_config(name: str) -> ModelConfig: + """Get a preset configuration by name. + + Parameters + ---------- + name : str + Name of the preset configuration. + + Returns + ------- + ModelConfig + Copy of the preset configuration. + + Raises + ------ + KeyError + If preset name is not found. + """ + if name not in PRESET_CONFIGS: + available = list(PRESET_CONFIGS.keys()) + raise KeyError( + f"Unknown preset: {name}. Available presets: {available}") + + return PRESET_CONFIGS[name].copy() + + +def list_preset_configs() -> list[str]: + """List available preset configuration names. + + Returns + ------- + list of str + Available preset names. + """ + return list(PRESET_CONFIGS.keys()) + + +def create_block_autoencoder( + config_name: str = 'default', + input_channels: Optional[int] = None, + **kwargs +) -> BlockBasedAutoencoder: + """Create autoencoder with predefined or custom configuration. + + Parameters + ---------- + config_name : str, default='default' + Name of the preset configuration. + input_channels : int, optional + Override input channels in preset. + **kwargs + Additional parameters to override in preset. + + Returns + ------- + BlockBasedAutoencoder + Configured autoencoder instance. + + Examples + -------- + >>> # Use preset with custom input channels + >>> autoencoder = create_block_autoencoder('light', input_channels=80) + + >>> # Override multiple parameters + >>> autoencoder = create_block_autoencoder( + ... 'default', + ... input_channels=80, + ... hidden_dim=16, + ... activation='gelu' + ... ) + """ + # Get base configuration + config = get_preset_config(config_name) + + # Override input channels if provided + if input_channels is not None: + config = config.update(input_channels=input_channels) + + # Override any additional parameters + if kwargs: + config = config.update(**kwargs) + + # Create model based on type + if config.model_type == 'autoencoder': + return create_autoencoder_from_config(config) + elif config.model_type == 'mae': + return create_mae_from_config(config) + else: + raise ValueError(f"Unknown model_type: {config.model_type}") + + +def create_autoencoder_from_config( + config: ModelConfig) -> BlockBasedAutoencoder: + """Create BlockBasedAutoencoder from configuration. + + Parameters + ---------- + config : ModelConfig + Model configuration. + + Returns + ------- + BlockBasedAutoencoder + Configured autoencoder. + """ + # Extract autoencoder parameters + autoencoder_params = { + 'input_channels': config.input_channels, + 'block_configs': config.block_configs, + 'bottleneck_channels': config.bottleneck_channels, + 'hidden_dim': config.hidden_dim, + 'kernel_size': config.kernel_size, + 'bias': config.bias, + 'upsampling_mode': config.upsampling_mode, + 'use_batch_norm': config.use_batch_norm, + 'activation': config.activation, + 'init_method': config.init_method, + } + + return BlockBasedAutoencoder(**autoencoder_params) + + +def create_mae_from_config(config: ModelConfig) -> MaskedAutoencoder: + """Create MaskedAutoencoder from configuration. + + Parameters + ---------- + config : ModelConfig + Model configuration with MAE parameters. + + Returns + ------- + MaskedAutoencoder + Configured MAE model. + """ + # Create base autoencoder + autoencoder = create_autoencoder_from_config(config) + + # Create mask generator + mae_config = config.mae_config or {} + mask_generator = MaskGenerator( + mask_ratio=mae_config.get('mask_ratio', 0.75), + patch_size=mae_config.get('patch_size', (8, 8)), + min_mask_size=mae_config.get('min_mask_size', 1), + max_mask_size=mae_config.get('max_mask_size', None) + ) + + # Create MAE + mae = MaskedAutoencoder( + autoencoder=autoencoder, + mask_generator=mask_generator, + mask_token_value=mae_config.get('mask_token_value', 0.0) + ) + + return mae + + +def save_model_config( + model: Union[BlockBasedAutoencoder, MaskedAutoencoder], + filepath: Union[str, Path], + format: str = 'yaml', + include_metadata: bool = True +) -> None: + """Save model configuration to file. + + Parameters + ---------- + model : BlockBasedAutoencoder or MaskedAutoencoder + Model to save configuration for. + filepath : str or Path + Path to save configuration. + format : str, default='yaml' + File format ('yaml' or 'json'). + include_metadata : bool, default=True + Whether to include metadata in saved config. + """ + if isinstance(model, MaskedAutoencoder): + config_dict = model.get_config() + model_type = 'mae' + + # Restructure for ModelConfig format + autoencoder_config = config_dict['autoencoder_config'] + mae_params = {k: v for k, v in config_dict.items() + if k != 'autoencoder_config'} + + config = ModelConfig( + model_type=model_type, + mae_config=mae_params, + **autoencoder_config + ) + + elif isinstance(model, BlockBasedAutoencoder): + config_dict = model.get_config() + config = ModelConfig( + model_type='autoencoder', + **config_dict + ) + + else: + raise TypeError(f"Unsupported model type: {type(model)}") + + # Add metadata if requested + if include_metadata: + import datetime + config.metadata.update({ + 'saved_at': datetime.datetime.now().isoformat(), + 'model_class': model.__class__.__name__, + 'parameter_count': getattr(model, 'parameter_count', None) + }) + + config.save(filepath, format) + + +def load_model_config(filepath: Union[str, Path]) -> ModelConfig: + """Load model configuration from file. + + Parameters + ---------- + filepath : str or Path + Path to configuration file. + + Returns + ------- + ModelConfig + Loaded configuration. + """ + return ModelConfig.load(filepath) + + +def create_model_from_config_file(filepath: Union[str, Path]) -> Union[ + BlockBasedAutoencoder, MaskedAutoencoder]: + """Create model from configuration file. + + Parameters + ---------- + filepath : str or Path + Path to configuration file. + + Returns + ------- + BlockBasedAutoencoder or MaskedAutoencoder + Model created from configuration. + """ + config = load_model_config(filepath) + + if config.model_type == 'autoencoder': + return create_autoencoder_from_config(config) + elif config.model_type == 'mae': + return create_mae_from_config(config) + else: + raise ValueError(f"Unknown model_type: {config.model_type}") + + +# Example usage and testing +if __name__ == "__main__": + # Test preset configurations + print("Available presets:", list_preset_configs()) + + # Test creating models from presets + for preset_name in ['default', 'light', 'mae_default']: + print(f"\nTesting {preset_name} preset:") + + try: + model = create_block_autoencoder(preset_name, input_channels=80) + print(f"Created model: {type(model).__name__}") + + if hasattr(model, 'parameter_count'): + print(f"Parameters: {model.parameter_count:,}") + + except Exception as e: + print(f"Error creating {preset_name}: {e}") + + # Test configuration serialization + print("\nTesting configuration serialization:") + + config = get_preset_config('default') + config = config.update(input_channels=80, hidden_dim=16) + + # Save and load + config.save('test_config.yaml') + loaded_config = ModelConfig.load('test_config.yaml') + + print(f"Original: {config.input_channels}, {config.hidden_dim}") + print( + f"Loaded: {loaded_config.input_channels}, {loaded_config.hidden_dim}") + + # Test model config saving + autoencoder = create_autoencoder_from_config(config) + save_model_config(autoencoder, 'model_config.yaml') + + # Load and recreate model + recreated_model = create_model_from_config_file('model_config.yaml') + print(f"Recreated model: {type(recreated_model).__name__}") + + # Cleanup + import os + + + os.remove('test_config.yaml') + os.remove('model_config.yaml') + + print("Configuration tests completed successfully!") diff --git a/src/faith/train/models/mae.py b/src/faith/train/models/mae.py new file mode 100644 index 0000000..3561e62 --- /dev/null +++ b/src/faith/train/models/mae.py @@ -0,0 +1,618 @@ +"""Masked Autoencoder (MAE) implementation for self-supervised learning. + +This module provides the MaskedAutoencoder class and associated utilities +for training autoencoders with various masking strategies. The MAE approach +is particularly effective for learning robust representations from partially +observed data, such as audio spectrograms with missing frequency bands or +time frames. +""" + +import torch +import torch.nn as nn +import torch.nn.functional as F +import random +from typing import Optional, Any +from enum import Enum + +from .autoencoder import BlockBasedAutoencoder + + +class MaskType(Enum): + """Enumeration of available masking strategies.""" + RANDOM = "random" + FREQUENCY = "frequency" + TIME = "time" + PATCH = "patch" + MIXED = "mixed" + + +# Export mask types for convenience +MASK_TYPES = [mask_type.value for mask_type in MaskType] + + +class MaskGenerator: + """Generates various types of masks for audio spectrograms. + + This class provides different masking strategies for Masked Autoencoder + training, including random masking, frequency band masking, temporal + masking, and patch-based masking. + + Parameters + ---------- + mask_ratio : float, default=0.75 + Ratio of input to mask (0.0 to 1.0). Higher values mean more masking. + patch_size : tuple of int, default=(8, 8) + Size of patches for patch-based masking (height, width). + min_mask_size : int, default=1 + Minimum size for contiguous masked regions. + max_mask_size : int, optional + Maximum size for contiguous masked regions. If None, no upper limit. + + Attributes + ---------- + mask_ratio : float + Stored mask ratio. + patch_size : tuple of int + Stored patch size. + min_mask_size : int + Stored minimum mask size. + max_mask_size : int or None + Stored maximum mask size. + + Examples + -------- + >>> mask_gen = MaskGenerator(mask_ratio=0.75) + >>> shape = (2, 80, 100, 128) # batch, channels, time, freq + >>> mask = mask_gen.random_mask(shape) + >>> print(f"Mask shape: {mask.shape}, Masked ratio: {(1 - mask.mean()).item():.2f}") + """ + + def __init__( + self, + mask_ratio: float = 0.75, + patch_size: tuple[int, int] = (8, 8), + min_mask_size: int = 1, + max_mask_size: Optional[int] = None + ) -> None: + """Initialize MaskGenerator. + + Parameters + ---------- + mask_ratio : float, default=0.75 + Ratio of input to mask. + patch_size : tuple of int, default=(8, 8) + Size of patches for patch-based masking. + min_mask_size : int, default=1 + Minimum size for contiguous masked regions. + max_mask_size : int, optional + Maximum size for contiguous masked regions. + """ + if not 0.0 <= mask_ratio <= 1.0: + raise ValueError( + f"mask_ratio must be between 0.0 and 1.0, got {mask_ratio}") + + if len(patch_size) != 2 or any(s <= 0 for s in patch_size): + raise ValueError(f"patch_size must be a tuple of two positive " + f"integers, got {patch_size}") + + if min_mask_size <= 0: + raise ValueError( + f"min_mask_size must be positive, got {min_mask_size}") + + if max_mask_size is not None and max_mask_size < min_mask_size: + raise ValueError( + f"max_mask_size must be >= min_mask_size, got {max_mask_size}") + + self.mask_ratio = mask_ratio + self.patch_size = patch_size + self.min_mask_size = min_mask_size + self.max_mask_size = max_mask_size + + def random_mask(self, shape: tuple[int, ...]) -> torch.Tensor: + """Generate random masking of individual time-frequency bins. + + Parameters + ---------- + shape : tuple of int + Input tensor shape (batch_size, channels, time_steps, freq_bins). + + Returns + ------- + torch.Tensor + Binary mask tensor where 1 = keep, 0 = mask. + """ + batch_size, channels, time_steps, freq_bins = shape + mask = torch.rand(batch_size, 1, time_steps, + freq_bins) > self.mask_ratio + return mask.float() + + def frequency_band_mask(self, shape: tuple[int, ...]) -> torch.Tensor: + """Generate frequency band masking. + + Masks contiguous frequency bands, which is common in audio augmentation + and simulates frequency-selective interference. + + Parameters + ---------- + shape : tuple of int + Input tensor shape (batch_size, channels, time_steps, freq_bins). + + Returns + ------- + torch.Tensor + Binary mask tensor where 1 = keep, 0 = mask. + """ + batch_size, channels, time_steps, freq_bins = shape + mask = torch.ones(batch_size, 1, time_steps, freq_bins) + + for b in range(batch_size): + # Calculate number of frequency bins to mask + num_bins_to_mask = int(freq_bins * self.mask_ratio) + + if num_bins_to_mask > 0: + # Choose number of bands to create + max_bands = min(num_bins_to_mask, + freq_bins // self.min_mask_size) + num_bands = random.randint(1, max(1, max_bands)) + + bins_per_band = num_bins_to_mask // num_bands + remaining_bins = num_bins_to_mask % num_bands + + masked_bins = 0 + for _ in range(num_bands): + if masked_bins >= num_bins_to_mask: + break + + # Size of this band + band_size = bins_per_band + if remaining_bins > 0: + band_size += 1 + remaining_bins -= 1 + + # Ensure we don't exceed limits + if self.max_mask_size is not None: + band_size = min(band_size, self.max_mask_size) + band_size = max(band_size, self.min_mask_size) + band_size = min(band_size, freq_bins - masked_bins) + + if band_size <= 0: + break + + # Choose random start position + max_start = freq_bins - band_size + if max_start >= 0: + start_freq = random.randint(0, max_start) + mask[b, :, :, start_freq:start_freq + band_size] = 0 + masked_bins += band_size + + return mask + + def time_frame_mask(self, shape: tuple[int, ...]) -> torch.Tensor: + """Generate temporal frame masking. + + Masks contiguous time frames, simulating temporal dropouts or + transmission errors in audio signals. + + Parameters + ---------- + shape : tuple of int + Input tensor shape (batch_size, channels, time_steps, freq_bins). + + Returns + ------- + torch.Tensor + Binary mask tensor where 1 = keep, 0 = mask. + """ + batch_size, channels, time_steps, freq_bins = shape + mask = torch.ones(batch_size, 1, time_steps, freq_bins) + + for b in range(batch_size): + # Calculate number of time frames to mask + num_frames_to_mask = int(time_steps * self.mask_ratio) + + if num_frames_to_mask > 0: + # Choose number of segments to create + max_segments = min(num_frames_to_mask, + time_steps // self.min_mask_size) + num_segments = random.randint(1, max(1, max_segments)) + + frames_per_segment = num_frames_to_mask // num_segments + remaining_frames = num_frames_to_mask % num_segments + + masked_frames = 0 + for _ in range(num_segments): + if masked_frames >= num_frames_to_mask: + break + + # Size of this segment + segment_size = frames_per_segment + if remaining_frames > 0: + segment_size += 1 + remaining_frames -= 1 + + # Ensure we don't exceed limits + if self.max_mask_size is not None: + segment_size = min(segment_size, self.max_mask_size) + segment_size = max(segment_size, self.min_mask_size) + segment_size = min(segment_size, + time_steps - masked_frames) + + if segment_size <= 0: + break + + # Choose random start position + max_start = time_steps - segment_size + if max_start >= 0: + start_time = random.randint(0, max_start) + mask[b, :, start_time:start_time + segment_size, :] = 0 + masked_frames += segment_size + + return mask + + def patch_mask(self, shape: tuple[int, ...]) -> torch.Tensor: + """Generate patch-based masking. + + Masks rectangular patches, similar to Vision Transformer masking + but adapted for spectrograms. + + Parameters + ---------- + shape : tuple of int + Input tensor shape (batch_size, channels, time_steps, freq_bins). + + Returns + ------- + torch.Tensor + Binary mask tensor where 1 = keep, 0 = mask. + """ + batch_size, channels, time_steps, freq_bins = shape + mask = torch.ones(batch_size, 1, time_steps, freq_bins) + + patch_time, patch_freq = self.patch_size + + # Calculate number of patches in each dimension + num_patches_time = time_steps // patch_time + num_patches_freq = freq_bins // patch_freq + total_patches = num_patches_time * num_patches_freq + + if total_patches == 0: + return mask + + for b in range(batch_size): + # Number of patches to mask + num_masked_patches = int(total_patches * self.mask_ratio) + + if num_masked_patches > 0: + # Randomly select patches to mask + masked_patches = random.sample(range(total_patches), + min(num_masked_patches, + total_patches)) + + for patch_idx in masked_patches: + # Convert patch index to 2D coordinates + patch_t = (patch_idx // num_patches_freq) * patch_time + patch_f = (patch_idx % num_patches_freq) * patch_freq + + # Apply mask to patch + end_t = min(patch_t + patch_time, time_steps) + end_f = min(patch_f + patch_freq, freq_bins) + + mask[b, :, patch_t:end_t, patch_f:end_f] = 0 + + return mask + + def mixed_mask(self, shape: tuple[int, ...]) -> torch.Tensor: + """Generate mixed masking strategy. + + Combines multiple masking strategies for more diverse augmentation. + + Parameters + ---------- + shape : tuple of int + Input tensor shape (batch_size, channels, time_steps, freq_bins). + + Returns + ------- + torch.Tensor + Binary mask tensor where 1 = keep, 0 = mask. + """ + batch_size = shape[0] + + # For mixed masking, use different strategies for different samples + mask_strategies = [ + self.random_mask, + self.frequency_band_mask, + self.time_frame_mask, + self.patch_mask + ] + + # Generate masks using different strategies + masks = [] + for b in range(batch_size): + strategy = random.choice(mask_strategies) + single_batch_shape = (1,) + shape[1:] + single_mask = strategy(single_batch_shape) + masks.append(single_mask) + + return torch.cat(masks, dim=0) + + def generate_mask(self, shape: tuple[int, ...], + mask_type: str) -> torch.Tensor: + """Generate mask using specified strategy. + + Parameters + ---------- + shape : tuple of int + Input tensor shape. + mask_type : str + Type of masking strategy to use. + + Returns + ------- + torch.Tensor + Generated mask tensor. + """ + if mask_type == MaskType.RANDOM.value: + return self.random_mask(shape) + elif mask_type == MaskType.FREQUENCY.value: + return self.frequency_band_mask(shape) + elif mask_type == MaskType.TIME.value: + return self.time_frame_mask(shape) + elif mask_type == MaskType.PATCH.value: + return self.patch_mask(shape) + elif mask_type == MaskType.MIXED.value: + return self.mixed_mask(shape) + else: + raise ValueError(f"Unknown mask_type: {mask_type}. " + f"Available types: {MASK_TYPES}") + + +class MaskedAutoencoder(nn.Module): + """Masked Autoencoder using block-based architecture. + + This class wraps a BlockBasedAutoencoder and adds masking functionality + for self-supervised learning. The key insight is that the model learns + to reconstruct masked regions based on visible context, leading to + robust representations. + + Parameters + ---------- + autoencoder : BlockBasedAutoencoder + The base autoencoder model to wrap. + mask_generator : MaskGenerator + Generator for creating masks. + mask_token_value : float, default=0.0 + Value to use for masked regions in input. + + Attributes + ---------- + autoencoder : BlockBasedAutoencoder + The wrapped autoencoder. + mask_generator : MaskGenerator + The mask generator. + mask_token_value : float + Value used for masked tokens. + + Examples + -------- + >>> autoencoder = BlockBasedAutoencoder(input_channels=80) + >>> mask_gen = MaskGenerator(mask_ratio=0.75) + >>> mae = MaskedAutoencoder(autoencoder, mask_gen) + >>> + >>> x = torch.randn(2, 80, 100, 128) + >>> reconstructed, mask, masked_input = mae(x, mask_type='frequency') + >>> loss = mae_loss(reconstructed, x, mask) + """ + + def __init__( + self, + autoencoder: BlockBasedAutoencoder, + mask_generator: MaskGenerator, + mask_token_value: float = 0.0 + ) -> None: + """Initialize MaskedAutoencoder. + + Parameters + ---------- + autoencoder : BlockBasedAutoencoder + The base autoencoder model. + mask_generator : MaskGenerator + Generator for creating masks. + mask_token_value : float, default=0.0 + Value to use for masked regions. + """ + super().__init__() + + self.autoencoder = autoencoder + self.mask_generator = mask_generator + self.mask_token_value = mask_token_value + + def apply_mask(self, x: torch.Tensor, mask: torch.Tensor) -> torch.Tensor: + """Apply mask to input tensor. + + Parameters + ---------- + x : torch.Tensor + Input tensor. + mask : torch.Tensor + Binary mask (1 = keep, 0 = mask). + + Returns + ------- + torch.Tensor + Masked input tensor. + """ + # Apply mask: keep visible regions, masked regions to mask_token_value + return x * mask + self.mask_token_value * (1 - mask) + + def forward( + self, + x: torch.Tensor, + mask_type: str = 'random', + mask: Optional[torch.Tensor] = None + ) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: + """Forward pass with masking. + + Parameters + ---------- + x : torch.Tensor + Input tensor with shape (batch_size, channels, height, width). + mask_type : str, default='random' + Type of masking to apply. Options: 'random', 'frequency', + 'time', 'patch', 'mixed'. + mask : torch.Tensor, optional + Pre-generated mask. If provided, mask_type is ignored. + + Returns + ------- + tuple of torch.Tensor + - reconstructed : torch.Tensor + Full reconstruction of the input. + - mask : torch.Tensor + Applied mask (1 = keep, 0 = mask). + - masked_input : torch.Tensor + Input with mask applied. + """ + # Generate mask if not provided + if mask is None: + mask = self.mask_generator.generate_mask(x.shape, mask_type) + mask = mask.to(x.device) + + # Apply mask to input + masked_input = self.apply_mask(x, mask) + + # Forward through autoencoder + reconstructed, latent = self.autoencoder(masked_input) + + return reconstructed, mask, masked_input + + def encode(self, x: torch.Tensor, + mask_type: str = 'random') -> torch.Tensor: + """Encode masked input to latent representation. + + Parameters + ---------- + x : torch.Tensor + Input tensor. + mask_type : str, default='random' + Type of masking to apply. + + Returns + ------- + torch.Tensor + Latent representation of masked input. + """ + mask = self.mask_generator.generate_mask(x.shape, mask_type) + mask = mask.to(x.device) + masked_input = self.apply_mask(x, mask) + return self.autoencoder.encode(masked_input) + + def get_config(self) -> dict[str, Any]: + """Get configuration dictionary.""" + return { + 'autoencoder_config': self.autoencoder.get_config(), + 'mask_ratio': self.mask_generator.mask_ratio, + 'patch_size': self.mask_generator.patch_size, + 'min_mask_size': self.mask_generator.min_mask_size, + 'max_mask_size': self.mask_generator.max_mask_size, + 'mask_token_value': self.mask_token_value, + } + + @classmethod + def from_config(cls, config: dict[str, Any]) -> 'MaskedAutoencoder': + """Create MaskedAutoencoder from configuration.""" + # Recreate autoencoder + autoencoder = BlockBasedAutoencoder.from_config( + config['autoencoder_config']) + + # Recreate mask generator + mask_generator = MaskGenerator( + mask_ratio=config['mask_ratio'], + patch_size=config['patch_size'], + min_mask_size=config['min_mask_size'], + max_mask_size=config['max_mask_size'] + ) + + return cls( + autoencoder=autoencoder, + mask_generator=mask_generator, + mask_token_value=config['mask_token_value'] + ) + + def __repr__(self) -> str: + """String representation.""" + return (f"MaskedAutoencoder(" + f"mask_ratio={self.mask_generator.mask_ratio}, " + f"autoencoder={self.autoencoder})") + + +def mae_loss( + reconstructed: torch.Tensor, + target: torch.Tensor, + mask: torch.Tensor, + loss_type: str = 'mse', + reduction: str = 'mean' +) -> torch.Tensor: + """Compute MAE loss only on masked regions. + + This is the key insight of MAE: only compute reconstruction loss + on the masked regions, not on the visible regions. + + Parameters + ---------- + reconstructed : torch.Tensor + Model output/reconstruction. + target : torch.Tensor + Original unmasked input. + mask : torch.Tensor + Binary mask tensor (1 = keep, 0 = mask). + loss_type : str, default='mse' + Type of loss function ('mse', 'l1', 'smooth_l1'). + reduction : str, default='mean' + Reduction method ('mean', 'sum', 'none'). + + Returns + ------- + torch.Tensor + Computed loss value. + + Examples + -------- + >>> reconstructed = torch.randn(2, 80, 100, 128) + >>> target = torch.randn(2, 80, 100, 128) + >>> mask = torch.rand(2, 1, 100, 128) > 0.5 + >>> loss = mae_loss(reconstructed, target, mask, loss_type='mse') + """ + # Invert mask: we want loss only on masked regions (where mask=0) + masked_regions = (1 - mask) + + # Compute loss per pixel + if loss_type == 'mse': + loss_per_pixel = F.mse_loss(reconstructed, target, reduction='none') + elif loss_type == 'l1': + loss_per_pixel = F.l1_loss(reconstructed, target, reduction='none') + elif loss_type == 'smooth_l1': + loss_per_pixel = F.smooth_l1_loss(reconstructed, target, + reduction='none') + else: + raise ValueError(f"Unknown loss_type: {loss_type}. " + f"Available types: ['mse', 'l1', 'smooth_l1']") + + # Only compute loss on masked regions + masked_loss = loss_per_pixel * masked_regions + + # Apply reduction + if reduction == 'none': + return masked_loss + elif reduction == 'sum': + return masked_loss.sum() + elif reduction == 'mean': + # Average over masked pixels only + num_masked_pixels = masked_regions.sum() + if num_masked_pixels > 0: + return masked_loss.sum() / num_masked_pixels + else: + return torch.tensor(0.0, device=reconstructed.device) + else: + raise ValueError(f"Unknown reduction: {reduction}. " + f"Available reductions: ['none', 'sum', 'mean']") diff --git a/src/faith/train/models/utils.py b/src/faith/train/models/utils.py new file mode 100644 index 0000000..7677232 --- /dev/null +++ b/src/faith/train/models/utils.py @@ -0,0 +1,571 @@ +"""Utility functions for autoencoder models. + +This module provides convenience functions, model analysis tools, validation +utilities, and helper functions for working with autoencoder models. +""" + +import torch +from typing import Union, Optional, Any + +from torch_training.models.autoencoder import BlockBasedAutoencoder +from torch_training.models.mae import MaskedAutoencoder, MASK_TYPES +from . import create_block_autoencoder, PRESET_CONFIGS + + +def create_mae_model( + config_name: str = 'mae_default', + input_channels: Optional[int] = None, + mask_ratio: float = 0.75, + mask_type: str = 'random', + **kwargs +) -> MaskedAutoencoder: + """Create a masked autoencoder with sensible defaults. + + This convenience function creates a complete MAE model with a single + function call, using preset configurations and sensible defaults. + + Parameters + ---------- + config_name : str, default='mae_default' + Preset configuration name for the base autoencoder. + Use 'mae_default' or 'mae_aggressive' for MAE-specific presets, + or any autoencoder preset which will be converted to MAE. + input_channels : int, optional + Number of input channels. If None, must be specified in kwargs. + mask_ratio : float, default=0.75 + Ratio of input to mask (0.0 to 1.0). + mask_type : str, default='random' + Default masking strategy to use during training. + **kwargs + Additional arguments passed to create_block_autoencoder. + + Returns + ------- + MaskedAutoencoder + Configured MAE model ready for training. + + Examples + -------- + >>> # Simple MAE creation + >>> mae = create_mae_model('mae_default', input_channels=80) + >>> x = torch.randn(1, 80, 100, 128) + >>> reconstructed, mask, masked_input = mae(x) + + >>> # Custom configuration + >>> mae = create_mae_model( + ... 'light', + ... input_channels=80, + ... mask_ratio=0.8, + ... hidden_dim=16 + ... ) + """ + # Handle input_channels + if input_channels is not None: + kwargs['input_channels'] = input_channels + elif 'input_channels' not in kwargs: + raise ValueError("input_channels must be specified either as " + "parameter or in kwargs") + + # Override MAE config if using non-MAE preset + if not config_name.startswith('mae_'): + kwargs.setdefault('model_type', 'mae') + kwargs.setdefault('mae_config', { + 'mask_ratio': mask_ratio, + 'patch_size': (8, 8), + 'min_mask_size': 1, + 'max_mask_size': None, + 'mask_token_value': 0.0 + }) + + # Create the model + model = create_block_autoencoder(config_name, **kwargs) + + if not isinstance(model, MaskedAutoencoder): + raise RuntimeError( + f"Expected MaskedAutoencoder, got {type(model).__name__}") + + return model + + +def get_model_info() -> dict[str, Any]: + """Get information about available models and configurations. + + Returns comprehensive information about the models package including + available configurations, model types, masking strategies, and versions. + + Returns + ------- + dict + Dictionary containing model information including: + - available_configs: List of preset configuration names + - model_types: List of available model types + - mask_types: List of available masking strategies + - preset_descriptions: Descriptions of each preset + - version: Package version (if available) + + Examples + -------- + >>> info = get_model_info() + >>> print(f"Available configs: {info['available_configs']}") + >>> print(f"MAE presets: {info['mae_presets']}") + >>> for name, desc in info['preset_descriptions'].items(): + ... print(f"{name}: {desc}") + """ + # Get preset information + preset_info = {} + mae_presets = [] + autoencoder_presets = [] + + for name, config in PRESET_CONFIGS.items(): + preset_info[name] = { + 'description': config.metadata.get('description', + 'No description'), + 'use_case': config.metadata.get('use_case', 'General'), + 'model_type': config.model_type, + 'num_blocks': len(config.block_configs), + 'has_mae_config': config.mae_config is not None + } + + if config.model_type == 'mae': + mae_presets.append(name) + else: + autoencoder_presets.append(name) + + # Package version + try: + from src import __version__ + + version = __version__ + except ImportError: + version = "unknown" + + return { + 'available_configs': list(PRESET_CONFIGS.keys()), + 'autoencoder_presets': autoencoder_presets, + 'mae_presets': mae_presets, + 'model_types': ['BlockBasedAutoencoder', 'MaskedAutoencoder'], + 'mask_types': MASK_TYPES, + 'preset_descriptions': { + name: info['description'] for name, info in preset_info.items()}, + 'preset_details': preset_info, + 'version': version, + 'description': 'Block-based autoencoders for audio and spectral data' + } + + +def validate_input_shape(shape: tuple[int, ...]) -> bool: + """Validate input tensor shape for autoencoder models. + + Checks if the input shape is compatible with autoencoder models, + which expect 4D tensors (batch, channels, height, width). + + Parameters + ---------- + shape : tuple of int + Input tensor shape to validate. + + Returns + ------- + bool + True if shape is valid, False otherwise. + + Examples + -------- + >>> validate_input_shape((32, 80, 100, 128)) # Valid + True + >>> validate_input_shape((80, 100, 128)) # Missing batch dimension + False + >>> validate_input_shape((32, 80, 100, 128, 1)) # Too many dimensions + False + """ + if len(shape) != 4: + return False + + batch, channels, height, width = shape + return all(dim > 0 for dim in shape) + + +def get_memory_estimate( + model: Union[BlockBasedAutoencoder, MaskedAutoencoder], + input_shape: tuple[int, ...], + batch_size: int = 1, + dtype: torch.dtype = torch.float32 +) -> dict[str, float]: + """Estimate memory usage for a model with given input shape. + + Provides estimates for parameter memory, activation memory, and total + memory usage. Useful for planning training on resource-constrained systems. + + Parameters + ---------- + model : BlockBasedAutoencoder or MaskedAutoencoder + The autoencoder model to analyze. + input_shape : tuple of int + Input tensor shape (channels, height, width) + or (batch, channels, height, width). + batch_size : int, default=1 + Batch size for estimation (ignored if input_shape includes batch). + dtype : torch.dtype, default=torch.float32 + Data type for memory calculation. + + Returns + ------- + dict + Memory estimates in MB including: + - parameters_mb: Model parameter memory + - activations_mb: Estimated activation memory + - total_mb: Total estimated memory + - encoder_mb: Encoder-specific memory + - decoder_mb: Decoder-specific memory + + Examples + -------- + >>> model = create_mae_model('light', input_channels=80) + >>> memory = get_memory_estimate(model, (80, 100, 128), batch_size=32) + >>> print(f"Total memory: {memory['total_mb']:.1f} MB") + >>> print(f"Parameters: {memory['parameters_mb']:.1f} MB") + """ + + # Handle different input shapes + if len(input_shape) == 3: + full_shape = (batch_size,) + input_shape + elif len(input_shape) == 4: + full_shape = input_shape + else: + raise ValueError( + f"Input shape must be 3D or 4D, got {len(input_shape)}D") + + # Validate shape + if not validate_input_shape(full_shape): + raise ValueError(f"Invalid input shape: {full_shape}") + + # Get base autoencoder for analysis + if isinstance(model, MaskedAutoencoder): + base_model = model.autoencoder + else: + base_model = model + + # Bytes per element based on dtype + dtype_bytes = { + torch.float32: 4, + torch.float16: 2, + torch.float64: 8, + torch.int32: 4, + torch.int64: 8, + }.get(dtype, 4) + + # Parameter memory + total_params = sum(p.numel() for p in base_model.parameters()) + param_memory_mb = (total_params * dtype_bytes) / (1024 * 1024) + + # Encoder memory + encoder_params = sum(p.numel() for p in base_model.encoder.parameters()) + encoder_param_mb = (encoder_params * dtype_bytes) / (1024 * 1024) + + # Decoder memory + decoder_params = sum(p.numel() for p in base_model.decoder.parameters()) + decoder_param_mb = (decoder_params * dtype_bytes) / (1024 * 1024) + + # Estimate activation memory (rough approximation) + # This is a simplified estimation - actual memory depends on implementation + # details + + # Input activation memory + input_elements = 1 + for dim in full_shape: + input_elements *= dim + input_memory_mb = (input_elements * dtype_bytes) / (1024 * 1024) + + # Estimate latent representation size + try: + latent_shape = base_model.get_latent_shape(full_shape) + latent_elements = 1 + for dim in latent_shape: + latent_elements *= dim + latent_memory_mb = (latent_elements * dtype_bytes) / (1024 * 1024) + except: + # Fallback estimation + latent_memory_mb = input_memory_mb * 0.1 # Assume 10x compression + + # Rough estimate of intermediate activations (2-3x input + latent) + activation_memory_mb = input_memory_mb * 2.5 + latent_memory_mb * 1.5 + + # Total memory (parameters + activations + gradients during training) + # Gradients roughly equal parameter memory during training + total_memory_mb = param_memory_mb * 2 + activation_memory_mb + + return { + 'parameters_mb': param_memory_mb, + 'encoder_params_mb': encoder_param_mb, + 'decoder_params_mb': decoder_param_mb, + 'activations_mb': activation_memory_mb, + 'input_mb': input_memory_mb, + 'latent_mb': latent_memory_mb, + 'total_mb': total_memory_mb, + 'total_params': total_params, + 'dtype': str(dtype), + 'batch_size': full_shape[0], + } + + +def analyze_model_architecture( + model: Union[BlockBasedAutoencoder, MaskedAutoencoder], + input_shape: tuple[int, ...] = (1, 80, 100, 128) +) -> dict[str, Any]: + """Analyze model architecture and provide detailed information. + + Parameters + ---------- + model : BlockBasedAutoencoder or MaskedAutoencoder + Model to analyze. + input_shape : tuple of int, default=(1, 80, 100, 128) + Input shape for analysis. + + Returns + ------- + dict + Detailed architecture analysis. + """ + # Get base autoencoder + if isinstance(model, MaskedAutoencoder): + base_model = model.autoencoder + model_type = "MaskedAutoencoder" + has_masking = True + mask_info = { + 'mask_ratio': model.mask_generator.mask_ratio, + 'patch_size': model.mask_generator.patch_size, + 'available_mask_types': MASK_TYPES + } + else: + base_model = model + model_type = "BlockBasedAutoencoder" + has_masking = False + mask_info = None + + # Basic model info + total_params = sum(p.numel() for p in base_model.parameters()) + trainable_params = sum( + p.numel() for p in base_model.parameters() if p.requires_grad) + + # Encoder analysis + encoder_blocks = [] + for i, block in enumerate(base_model.encoder.blocks): + encoder_blocks.append({ + 'block_id': i, + 'in_channels': block.in_channels, + 'out_channels': block.out_channels, + 'pool_size': block.pool_size, + 'dropout': block.dropout_prob, + 'parameters': sum(p.numel() for p in block.parameters()) + }) + + # Decoder analysis + decoder_blocks = [] + for i, block in enumerate(base_model.decoder.blocks): + decoder_blocks.append({ + 'block_id': i, + 'in_channels': block.in_channels, + 'out_channels': block.out_channels, + 'upsample_factor': block.upsample_factor, + 'dropout': block.dropout_prob, + 'parameters': sum(p.numel() for p in block.parameters()) + }) + + # Shape analysis + try: + latent_shape = base_model.get_latent_shape(input_shape) + output_shape = base_model.get_output_shape(input_shape) + compression_ratio = (input_shape[2] * input_shape[3]) / ( + latent_shape[2] * latent_shape[3]) + except Exception as e: + latent_shape = None + output_shape = None + compression_ratio = None + + analysis = { + 'model_type': model_type, + 'has_masking': has_masking, + 'mask_info': mask_info, + 'parameters': { + 'total': total_params, + 'trainable': trainable_params, + 'encoder': sum(p.numel() for p in base_model.encoder.parameters()), + 'decoder': sum(p.numel() for p in base_model.decoder.parameters()), + }, + 'architecture': { + 'input_channels': base_model.input_channels, + 'bottleneck_channels': base_model.encoder.bottleneck_channels, + 'hidden_dim': base_model.encoder.hidden_dim, + 'num_encoder_blocks': len(base_model.encoder.blocks), + 'num_decoder_blocks': len(base_model.decoder.blocks), + 'upsampling_mode': base_model.decoder.upsampling_mode, + }, + 'encoder_blocks': encoder_blocks, + 'decoder_blocks': decoder_blocks, + 'shapes': { + 'input': input_shape, + 'latent': latent_shape, + 'output': output_shape, + 'compression_ratio': compression_ratio, + }, + 'config': base_model.get_config() if hasattr(base_model, + 'get_config') else None, + } + + return analysis + + +def compare_models( + models: dict[str, Union[BlockBasedAutoencoder, MaskedAutoencoder]], + input_shape: tuple[int, ...] = (1, 80, 100, 128) +) -> dict[str, Any]: + """Compare multiple models side by side. + + Parameters + ---------- + models : dict + Dictionary of model_name -> model pairs. + input_shape : tuple of int + Input shape for comparison. + + Returns + ------- + dict + Comparison results. + """ + comparison = { + 'input_shape': input_shape, + 'models': {}, + 'summary': {} + } + + # Analyze each model + for name, model in models.items(): + try: + analysis = analyze_model_architecture(model, input_shape) + memory = get_memory_estimate(model, input_shape) + + comparison['models'][name] = { + 'analysis': analysis, + 'memory': memory, + 'error': None + } + except Exception as e: + comparison['models'][name] = { + 'analysis': None, + 'memory': None, + 'error': str(e) + } + + # Create summary comparison + successful_models = {name: data for name, data in + comparison['models'].items() + if data['error'] is None} + + if successful_models: + comparison['summary'] = { + 'parameter_counts': {name: data['analysis']['parameters']['total'] + for name, data in successful_models.items()}, + 'memory_usage': {name: data['memory']['total_mb'] + for name, data in successful_models.items()}, + 'compression_ratios': { + name: data['analysis']['shapes']['compression_ratio'] + for name, data in successful_models.items() + if + data['analysis']['shapes']['compression_ratio'] is not None}, + } + + return comparison + + +def print_model_summary( + model: Union[BlockBasedAutoencoder, MaskedAutoencoder], + input_shape: tuple[int, ...] = (1, 80, 100, 128) +) -> None: + """Print a formatted summary of model architecture. + + Parameters + ---------- + model : BlockBasedAutoencoder or MaskedAutoencoder + Model to summarize. + input_shape : tuple of int + Input shape for analysis. + """ + analysis = analyze_model_architecture(model, input_shape) + memory = get_memory_estimate(model, input_shape) + + print(f"=== {analysis['model_type']} Summary ===") + print(f"Total Parameters: {analysis['parameters']['total']:,}") + print(f"Trainable Parameters: {analysis['parameters']['trainable']:,}") + print(f"Memory Usage: {memory['total_mb']:.1f} MB") + + if analysis['has_masking']: + print(f"Mask Ratio: {analysis['mask_info']['mask_ratio']:.2f}") + print(f"Patch Size: {analysis['mask_info']['patch_size']}") + + print(f"\nArchitecture:") + print(f" Input Channels: {analysis['architecture']['input_channels']}") + print(f" Bottleneck Channels: " + f"{analysis['architecture']['bottleneck_channels']}") + print(f" Encoder Blocks: " + f"{analysis['architecture']['num_encoder_blocks']}") + print(f" Decoder Blocks: " + f"{analysis['architecture']['num_decoder_blocks']}") + + if analysis['shapes']['compression_ratio']: + print(f" Compression Ratio: " + f"{analysis['shapes']['compression_ratio']:.1f}x") + + print(f"\nShapes:") + print(f" Input: {analysis['shapes']['input']}") + print(f" Latent: {analysis['shapes']['latent']}") + print(f" Output: {analysis['shapes']['output']}") + + +# Example usage and testing +if __name__ == "__main__": + # Test utility functions + print("Testing model utilities...") + + # Test model creation + mae = create_mae_model('mae_default', input_channels=80) + autoencoder = create_block_autoencoder('light', input_channels=80) + + print(f"Created MAE: {type(mae).__name__}") + print(f"Created Autoencoder: {type(autoencoder).__name__}") + + # Test model info + info = get_model_info() + print(f"\nAvailable configs: {info['available_configs']}") + print(f"MAE presets: {info['mae_presets']}") + + # Test validation + valid_shape = (32, 80, 100, 128) + invalid_shape = (80, 100, 128) + print(f"\nShape validation:") + print(f" {valid_shape}: {validate_input_shape(valid_shape)}") + print(f" {invalid_shape}: {validate_input_shape(invalid_shape)}") + + # Test memory estimation + memory = get_memory_estimate(mae, (80, 100, 128), batch_size=32) + print(f"\nMemory estimate for MAE:") + print(f" Total: {memory['total_mb']:.1f} MB") + print(f" Parameters: {memory['parameters_mb']:.1f} MB") + print(f" Activations: {memory['activations_mb']:.1f} MB") + + # Test architecture analysis + print(f"\nModel summary:") + print_model_summary(mae, (1, 80, 100, 128)) + + # Test model comparison + models = { + 'mae': mae, + 'autoencoder': autoencoder + } + comparison = compare_models(models) + print(f"\nModel comparison:") + for name, params in comparison['summary']['parameter_counts'].items(): + memory = comparison['summary']['memory_usage'][name] + print(f" {name}: {params:,} params, {memory:.1f} MB") + + print("Utility tests completed successfully!") diff --git a/tests/test_residual_block.py b/tests/test_residual_block.py new file mode 100644 index 0000000..e69de29 From a6fbab5231cc0769980802fec11cc83189c804d7 Mon Sep 17 00:00:00 2001 From: Nathaniel Chen Date: Tue, 15 Jul 2025 13:00:01 -0400 Subject: [PATCH 046/103] Refactor fusion dataset preparation pipeline - Introduced modular structure for dataset preparation with dedicated modules for signal processing, data extraction, sample processing, and utilities. - Implemented YAML configuration files for flexible parameter management. - Added functionality for windowed data extraction with `get_window` function. - Enhanced signal extraction and alignment processes, including handling of missing signals. - Integrated STFT transformations and resampling methods for signal processing. - Developed a parallel processing mechanism for efficient shot processing. - Created comprehensive README documentation outlining the pipeline structure, usage, and configuration. - Established logging for better traceability and debugging. - Added utility functions for dataset indexing and sample saving. --- .gitignore | 4 ++- pyproject.toml | 6 ++-- .../fusion_signal/__init__.py => __main__.py} | 0 src/faith/datasets/prepare/__main__.py | 4 --- .../.archive}/base/__init__.py | 0 .../{ => preprocess/.archive}/base/load.py | 0 .../{ => preprocess/.archive}/base/merge.py | 0 .../{ => preprocess/.archive}/base/save.py | 3 ++ .../.archive}/dataset_utils.py | 0 .../.archive}/datasets/__init__.py | 0 .../.archive}/datasets/fetch/fetch.py | 0 .../.archive}/datasets/toy_loader/load.py | 0 .../.archive/sampling}/__init__.py | 0 .../.archive}/sampling/match_times.py | 0 .../.archive/signal}/__init__.py | 0 .../signal/fusion_signal}/__init__.py | 0 .../signal}/fusion_signal/interpolation.py | 0 .../signal}/fusion_signal/resampling.py | 0 .../magnitude_scaling/compute_norms.py | 0 .../signal}/magnitude_scaling/norm.py | 0 .../signal}/magnitude_scaling/rescale.py | 0 .../.archive/signal}/scaling.py | 0 .../spectral_representation/__init__.py | 0 .../signal}/spectral_representation/sft.py | 0 .../signal}/time_domain_filtering/__init__.py | 0 .../time_domain_filtering/filtering.py | 0 .../time_domain_filtering/preemphasis.py | 0 .../time_domain_processing/cut_time.py | 0 .../get_windowed_data.py | 0 .../prepare => preprocess}/README.md | 0 src/faith/preprocess/__init__.py | 1 + src/faith/preprocess/__main__.py | 14 +++++++++ .../config/default.yaml | 2 +- .../prepare => preprocess}/config/raw.yaml | 0 .../extract}/data_extraction.py | 0 src/faith/preprocess/pipelines/__init__.py | 1 + .../pipelines/processing_v0.py} | 10 +++---- .../preprocess.py} | 14 ++++----- .../transform}/__init__.py | 0 .../transform}/sample_processing.py | 0 .../transform}/signal_processing.py | 0 src/faith/preprocess/util/__init__.py | 3 ++ src/faith/{ => preprocess}/util/parmap.py | 0 src/faith/preprocess/util/utils.py | 30 +++++++++++++++++++ src/faith/util/__init__.py | 0 src/faith/util/utils.py | 5 ---- 46 files changed, 71 insertions(+), 26 deletions(-) rename src/faith/{core/fusion_signal/__init__.py => __main__.py} (100%) delete mode 100644 src/faith/datasets/prepare/__main__.py rename src/faith/{ => preprocess/.archive}/base/__init__.py (100%) rename src/faith/{ => preprocess/.archive}/base/load.py (100%) rename src/faith/{ => preprocess/.archive}/base/merge.py (100%) rename src/faith/{ => preprocess/.archive}/base/save.py (95%) rename src/faith/{datasets/prepare => preprocess/.archive}/dataset_utils.py (100%) rename src/faith/{ => preprocess/.archive}/datasets/__init__.py (100%) rename src/faith/{ => preprocess/.archive}/datasets/fetch/fetch.py (100%) rename src/faith/{ => preprocess/.archive}/datasets/toy_loader/load.py (100%) rename src/faith/{datasets/prepare => preprocess/.archive/sampling}/__init__.py (100%) rename src/faith/{ => preprocess/.archive}/sampling/match_times.py (100%) rename src/faith/{core => preprocess/.archive/signal}/__init__.py (100%) rename src/faith/{feature => preprocess/.archive/signal/fusion_signal}/__init__.py (100%) rename src/faith/{core => preprocess/.archive/signal}/fusion_signal/interpolation.py (100%) rename src/faith/{core => preprocess/.archive/signal}/fusion_signal/resampling.py (100%) rename src/faith/{core => preprocess/.archive/signal}/magnitude_scaling/compute_norms.py (100%) rename src/faith/{core => preprocess/.archive/signal}/magnitude_scaling/norm.py (100%) rename src/faith/{core => preprocess/.archive/signal}/magnitude_scaling/rescale.py (100%) rename src/faith/{core => preprocess/.archive/signal}/scaling.py (100%) rename src/faith/{core => preprocess/.archive/signal}/spectral_representation/__init__.py (100%) rename src/faith/{core => preprocess/.archive/signal}/spectral_representation/sft.py (100%) rename src/faith/{core => preprocess/.archive/signal}/time_domain_filtering/__init__.py (100%) rename src/faith/{core => preprocess/.archive/signal}/time_domain_filtering/filtering.py (100%) rename src/faith/{core => preprocess/.archive/signal}/time_domain_filtering/preemphasis.py (100%) rename src/faith/{core => preprocess/.archive/signal}/time_domain_processing/cut_time.py (100%) rename src/faith/{core => preprocess/.archive/signal}/time_domain_processing/get_windowed_data.py (100%) rename src/faith/{datasets/prepare => preprocess}/README.md (100%) create mode 100644 src/faith/preprocess/__init__.py create mode 100644 src/faith/preprocess/__main__.py rename src/faith/{datasets/prepare => preprocess}/config/default.yaml (98%) rename src/faith/{datasets/prepare => preprocess}/config/raw.yaml (100%) rename src/faith/{datasets/prepare => preprocess/extract}/data_extraction.py (100%) create mode 100644 src/faith/preprocess/pipelines/__init__.py rename src/faith/{datasets/prepare/shot_processing.py => preprocess/pipelines/processing_v0.py} (97%) rename src/faith/{datasets/prepare/prepare_dataset.py => preprocess/preprocess.py} (95%) rename src/faith/{sampling => preprocess/transform}/__init__.py (100%) rename src/faith/{datasets/prepare => preprocess/transform}/sample_processing.py (100%) rename src/faith/{datasets/prepare => preprocess/transform}/signal_processing.py (100%) create mode 100644 src/faith/preprocess/util/__init__.py rename src/faith/{ => preprocess}/util/parmap.py (100%) create mode 100644 src/faith/preprocess/util/utils.py delete mode 100644 src/faith/util/__init__.py delete mode 100644 src/faith/util/utils.py diff --git a/.gitignore b/.gitignore index 0d9cab5..4b8399c 100644 --- a/.gitignore +++ b/.gitignore @@ -161,4 +161,6 @@ cython_debug/ data/ logs/ -*.pkl \ No newline at end of file +outputs/ +*.pkl +*.joblib \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index f9658bb..aa1c270 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,13 +1,13 @@ [project] -name = "fusionaihub" -version = "0.0.1" +name = "Fusion Artificial InTelligence Hub" +version = "0.0.1-alpha" authors = [ { name = "Peter Steiner", email = "peter.steiner@princeton.edu" }, { name = "Nathaniel Chen", email = "nathaniel@princeton.edu" }, { name = "Kouroche Bouchiat", email = "bouchiat@princeton.edu" }, { name = "Azarakhsh Jalalvand", email = "azarakhsh.jalalvand@princeton.edu" } ] -description = "FusionAIHub - Fetch nuclear fusion data, preprocess it, train machine learning models." +description = "Fusion Artificial InTelligence Hub - Fetch nuclear fusion data, preprocess it, train machine learning models." readme = "README.md" requires-python = ">=3.9" classifiers = [ diff --git a/src/faith/core/fusion_signal/__init__.py b/src/faith/__main__.py similarity index 100% rename from src/faith/core/fusion_signal/__init__.py rename to src/faith/__main__.py diff --git a/src/faith/datasets/prepare/__main__.py b/src/faith/datasets/prepare/__main__.py deleted file mode 100644 index 444fa44..0000000 --- a/src/faith/datasets/prepare/__main__.py +++ /dev/null @@ -1,4 +0,0 @@ -from .prepare_dataset import main - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/src/faith/base/__init__.py b/src/faith/preprocess/.archive/base/__init__.py similarity index 100% rename from src/faith/base/__init__.py rename to src/faith/preprocess/.archive/base/__init__.py diff --git a/src/faith/base/load.py b/src/faith/preprocess/.archive/base/load.py similarity index 100% rename from src/faith/base/load.py rename to src/faith/preprocess/.archive/base/load.py diff --git a/src/faith/base/merge.py b/src/faith/preprocess/.archive/base/merge.py similarity index 100% rename from src/faith/base/merge.py rename to src/faith/preprocess/.archive/base/merge.py diff --git a/src/faith/base/save.py b/src/faith/preprocess/.archive/base/save.py similarity index 95% rename from src/faith/base/save.py rename to src/faith/preprocess/.archive/base/save.py index d9e38b3..b77b5cf 100644 --- a/src/faith/base/save.py +++ b/src/faith/preprocess/.archive/base/save.py @@ -8,6 +8,9 @@ # also do other file formats +import warnings + +@warnings._deprecated('Use the new function save instead') def dict_to_hdf5( dictionary: dict, h5file: h5py.File, diff --git a/src/faith/datasets/prepare/dataset_utils.py b/src/faith/preprocess/.archive/dataset_utils.py similarity index 100% rename from src/faith/datasets/prepare/dataset_utils.py rename to src/faith/preprocess/.archive/dataset_utils.py diff --git a/src/faith/datasets/__init__.py b/src/faith/preprocess/.archive/datasets/__init__.py similarity index 100% rename from src/faith/datasets/__init__.py rename to src/faith/preprocess/.archive/datasets/__init__.py diff --git a/src/faith/datasets/fetch/fetch.py b/src/faith/preprocess/.archive/datasets/fetch/fetch.py similarity index 100% rename from src/faith/datasets/fetch/fetch.py rename to src/faith/preprocess/.archive/datasets/fetch/fetch.py diff --git a/src/faith/datasets/toy_loader/load.py b/src/faith/preprocess/.archive/datasets/toy_loader/load.py similarity index 100% rename from src/faith/datasets/toy_loader/load.py rename to src/faith/preprocess/.archive/datasets/toy_loader/load.py diff --git a/src/faith/datasets/prepare/__init__.py b/src/faith/preprocess/.archive/sampling/__init__.py similarity index 100% rename from src/faith/datasets/prepare/__init__.py rename to src/faith/preprocess/.archive/sampling/__init__.py diff --git a/src/faith/sampling/match_times.py b/src/faith/preprocess/.archive/sampling/match_times.py similarity index 100% rename from src/faith/sampling/match_times.py rename to src/faith/preprocess/.archive/sampling/match_times.py diff --git a/src/faith/core/__init__.py b/src/faith/preprocess/.archive/signal/__init__.py similarity index 100% rename from src/faith/core/__init__.py rename to src/faith/preprocess/.archive/signal/__init__.py diff --git a/src/faith/feature/__init__.py b/src/faith/preprocess/.archive/signal/fusion_signal/__init__.py similarity index 100% rename from src/faith/feature/__init__.py rename to src/faith/preprocess/.archive/signal/fusion_signal/__init__.py diff --git a/src/faith/core/fusion_signal/interpolation.py b/src/faith/preprocess/.archive/signal/fusion_signal/interpolation.py similarity index 100% rename from src/faith/core/fusion_signal/interpolation.py rename to src/faith/preprocess/.archive/signal/fusion_signal/interpolation.py diff --git a/src/faith/core/fusion_signal/resampling.py b/src/faith/preprocess/.archive/signal/fusion_signal/resampling.py similarity index 100% rename from src/faith/core/fusion_signal/resampling.py rename to src/faith/preprocess/.archive/signal/fusion_signal/resampling.py diff --git a/src/faith/core/magnitude_scaling/compute_norms.py b/src/faith/preprocess/.archive/signal/magnitude_scaling/compute_norms.py similarity index 100% rename from src/faith/core/magnitude_scaling/compute_norms.py rename to src/faith/preprocess/.archive/signal/magnitude_scaling/compute_norms.py diff --git a/src/faith/core/magnitude_scaling/norm.py b/src/faith/preprocess/.archive/signal/magnitude_scaling/norm.py similarity index 100% rename from src/faith/core/magnitude_scaling/norm.py rename to src/faith/preprocess/.archive/signal/magnitude_scaling/norm.py diff --git a/src/faith/core/magnitude_scaling/rescale.py b/src/faith/preprocess/.archive/signal/magnitude_scaling/rescale.py similarity index 100% rename from src/faith/core/magnitude_scaling/rescale.py rename to src/faith/preprocess/.archive/signal/magnitude_scaling/rescale.py diff --git a/src/faith/core/scaling.py b/src/faith/preprocess/.archive/signal/scaling.py similarity index 100% rename from src/faith/core/scaling.py rename to src/faith/preprocess/.archive/signal/scaling.py diff --git a/src/faith/core/spectral_representation/__init__.py b/src/faith/preprocess/.archive/signal/spectral_representation/__init__.py similarity index 100% rename from src/faith/core/spectral_representation/__init__.py rename to src/faith/preprocess/.archive/signal/spectral_representation/__init__.py diff --git a/src/faith/core/spectral_representation/sft.py b/src/faith/preprocess/.archive/signal/spectral_representation/sft.py similarity index 100% rename from src/faith/core/spectral_representation/sft.py rename to src/faith/preprocess/.archive/signal/spectral_representation/sft.py diff --git a/src/faith/core/time_domain_filtering/__init__.py b/src/faith/preprocess/.archive/signal/time_domain_filtering/__init__.py similarity index 100% rename from src/faith/core/time_domain_filtering/__init__.py rename to src/faith/preprocess/.archive/signal/time_domain_filtering/__init__.py diff --git a/src/faith/core/time_domain_filtering/filtering.py b/src/faith/preprocess/.archive/signal/time_domain_filtering/filtering.py similarity index 100% rename from src/faith/core/time_domain_filtering/filtering.py rename to src/faith/preprocess/.archive/signal/time_domain_filtering/filtering.py diff --git a/src/faith/core/time_domain_filtering/preemphasis.py b/src/faith/preprocess/.archive/signal/time_domain_filtering/preemphasis.py similarity index 100% rename from src/faith/core/time_domain_filtering/preemphasis.py rename to src/faith/preprocess/.archive/signal/time_domain_filtering/preemphasis.py diff --git a/src/faith/core/time_domain_processing/cut_time.py b/src/faith/preprocess/.archive/signal/time_domain_processing/cut_time.py similarity index 100% rename from src/faith/core/time_domain_processing/cut_time.py rename to src/faith/preprocess/.archive/signal/time_domain_processing/cut_time.py diff --git a/src/faith/core/time_domain_processing/get_windowed_data.py b/src/faith/preprocess/.archive/signal/time_domain_processing/get_windowed_data.py similarity index 100% rename from src/faith/core/time_domain_processing/get_windowed_data.py rename to src/faith/preprocess/.archive/signal/time_domain_processing/get_windowed_data.py diff --git a/src/faith/datasets/prepare/README.md b/src/faith/preprocess/README.md similarity index 100% rename from src/faith/datasets/prepare/README.md rename to src/faith/preprocess/README.md diff --git a/src/faith/preprocess/__init__.py b/src/faith/preprocess/__init__.py new file mode 100644 index 0000000..5fd6075 --- /dev/null +++ b/src/faith/preprocess/__init__.py @@ -0,0 +1 @@ +from .preprocess import preprocess \ No newline at end of file diff --git a/src/faith/preprocess/__main__.py b/src/faith/preprocess/__main__.py new file mode 100644 index 0000000..70e8be8 --- /dev/null +++ b/src/faith/preprocess/__main__.py @@ -0,0 +1,14 @@ +import hydra +from omegaconf import DictConfig + +from . import preprocess + +@hydra.main( + config_path="config", + config_name="config", + version_base=None, + ) +def main(cfg: DictConfig): + + # TODO: Add hydra config to preprocess + preprocess() \ No newline at end of file diff --git a/src/faith/datasets/prepare/config/default.yaml b/src/faith/preprocess/config/default.yaml similarity index 98% rename from src/faith/datasets/prepare/config/default.yaml rename to src/faith/preprocess/config/default.yaml index 406ce79..bad59d2 100644 --- a/src/faith/datasets/prepare/config/default.yaml +++ b/src/faith/preprocess/config/default.yaml @@ -36,7 +36,7 @@ signal: # Data processing parameters randomize_shots: true random_seed: 42 -num_shots: 15000 +num_shots: 100 fs_khz: 500 # Sampling frequency in kHz ip_threshold: 0.1 # Plasma current threshold window_ms: null # Window size in milliseconds diff --git a/src/faith/datasets/prepare/config/raw.yaml b/src/faith/preprocess/config/raw.yaml similarity index 100% rename from src/faith/datasets/prepare/config/raw.yaml rename to src/faith/preprocess/config/raw.yaml diff --git a/src/faith/datasets/prepare/data_extraction.py b/src/faith/preprocess/extract/data_extraction.py similarity index 100% rename from src/faith/datasets/prepare/data_extraction.py rename to src/faith/preprocess/extract/data_extraction.py diff --git a/src/faith/preprocess/pipelines/__init__.py b/src/faith/preprocess/pipelines/__init__.py new file mode 100644 index 0000000..00c5cd8 --- /dev/null +++ b/src/faith/preprocess/pipelines/__init__.py @@ -0,0 +1 @@ +from .processing_v0 import pipeline as pipeline_v0_stable \ No newline at end of file diff --git a/src/faith/datasets/prepare/shot_processing.py b/src/faith/preprocess/pipelines/processing_v0.py similarity index 97% rename from src/faith/datasets/prepare/shot_processing.py rename to src/faith/preprocess/pipelines/processing_v0.py index cd1c814..32272e1 100644 --- a/src/faith/datasets/prepare/shot_processing.py +++ b/src/faith/preprocess/pipelines/processing_v0.py @@ -13,17 +13,17 @@ from warnings import simplefilter simplefilter(action="ignore", category=pd.errors.PerformanceWarning) -from .data_extraction import ( +from ..extract.data_extraction import ( extract_signal, extract_running_time, align_signal, ) -from .sample_processing import ( +from ..transform.sample_processing import ( split_samples, remove_empty_samples, save_sample, ) -from .signal_processing import ( +from ..transform.signal_processing import ( identity_transform, stft_transform, resample_transform, @@ -33,13 +33,13 @@ logger = logging.getLogger(__name__) -def process_shot_stft( +def pipeline( shot_number: int, cfg: Dict, out_dir: Path, ) -> None: """ - Process a single shot through the complete data preparation pipeline accounting for STFT transformations. + Process a single shot through the complete data preparation pipeline accounting transformations. This function orchestrates the complete processing workflow for a shot: 1. Determines plasma running time diff --git a/src/faith/datasets/prepare/prepare_dataset.py b/src/faith/preprocess/preprocess.py similarity index 95% rename from src/faith/datasets/prepare/prepare_dataset.py rename to src/faith/preprocess/preprocess.py index e61c14d..1317d61 100644 --- a/src/faith/datasets/prepare/prepare_dataset.py +++ b/src/faith/preprocess/preprocess.py @@ -12,10 +12,10 @@ from pathlib import Path from sklearn.model_selection import train_test_split from typing import Optional -from ...util.parmap import ParallelMapper -from .shot_processing import process_shot_stft -from .dataset_utils import index_dataset +from .util import ParallelMapper +from .pipelines import pipeline_v0_stable as pipeline +from .util import index_dataset # Set up logger for this module logger = logging.getLogger(__name__) @@ -113,10 +113,10 @@ def prepare_dataset(cfg: dict) -> None: # Process shots using the appropriate function if cfg.get("debug", False): - process_shot_stft(170000, cfg, cache_dir) # For debugging + pipeline(170000, cfg, cache_dir) # For debugging else: mapper = ParallelMapper() - mapper(process_shot_stft, all_shots, cfg=cfg, out_dir=cache_dir) + mapper(pipeline, all_shots, cfg=cfg, out_dir=cache_dir) # Move cached files into train/test split logger.info("Splitting dataset into train and valid sets...") @@ -165,7 +165,7 @@ def prepare_dataset(cfg: dict) -> None: logger.info(f"Validation samples: {len(valid_files)}") -def main(): +def preprocess(): """Main entry point for the dataset preparation script.""" import argparse @@ -200,4 +200,4 @@ def main(): if __name__ == "__main__": - main() \ No newline at end of file + preprocess() \ No newline at end of file diff --git a/src/faith/sampling/__init__.py b/src/faith/preprocess/transform/__init__.py similarity index 100% rename from src/faith/sampling/__init__.py rename to src/faith/preprocess/transform/__init__.py diff --git a/src/faith/datasets/prepare/sample_processing.py b/src/faith/preprocess/transform/sample_processing.py similarity index 100% rename from src/faith/datasets/prepare/sample_processing.py rename to src/faith/preprocess/transform/sample_processing.py diff --git a/src/faith/datasets/prepare/signal_processing.py b/src/faith/preprocess/transform/signal_processing.py similarity index 100% rename from src/faith/datasets/prepare/signal_processing.py rename to src/faith/preprocess/transform/signal_processing.py diff --git a/src/faith/preprocess/util/__init__.py b/src/faith/preprocess/util/__init__.py new file mode 100644 index 0000000..e3ac639 --- /dev/null +++ b/src/faith/preprocess/util/__init__.py @@ -0,0 +1,3 @@ +from .parmap import ParallelMapper + +from .utils import index_dataset \ No newline at end of file diff --git a/src/faith/util/parmap.py b/src/faith/preprocess/util/parmap.py similarity index 100% rename from src/faith/util/parmap.py rename to src/faith/preprocess/util/parmap.py diff --git a/src/faith/preprocess/util/utils.py b/src/faith/preprocess/util/utils.py new file mode 100644 index 0000000..26ba018 --- /dev/null +++ b/src/faith/preprocess/util/utils.py @@ -0,0 +1,30 @@ +""" +Dataset utilities for fusion dataset preparation. + +This module contains utility functions for handling missing signals, +creating placeholder dataframes, and indexing dataset files. +""" + +import pandas as pd +import logging +from pathlib import Path +from typing import Set, List, Dict + +# Set up logger for this module +logger = logging.getLogger(__name__) + +def index_dataset(out_dir: Path) -> None: + """ + Create an index file listing all dataset files in the directory. + + Scans the output directory for .joblib files and creates an index.pkl + file containing the list of all dataset files. + + Args: + out_dir: Directory to index + """ + files = list(out_dir.glob("*.joblib")) + df_files = pd.DataFrame({'files': [str(file) for file in files]}) + df_files.to_csv(out_dir / "index.csv", index=False) + + logger.info(f"Indexed {len(files)} files.") \ No newline at end of file diff --git a/src/faith/util/__init__.py b/src/faith/util/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/src/faith/util/utils.py b/src/faith/util/utils.py deleted file mode 100644 index 6cd4b51..0000000 --- a/src/faith/util/utils.py +++ /dev/null @@ -1,5 +0,0 @@ -import numpy as np -from typing import Any - - - From e15379f0d23b58dfb55f09d9d2c0c570a8f56978 Mon Sep 17 00:00:00 2001 From: Nathaniel Chen Date: Tue, 15 Jul 2025 13:26:52 -0400 Subject: [PATCH 047/103] Add hydra --- pyproject.toml | 4 +- uv.lock | 3239 +++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 3073 insertions(+), 170 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 69ff4d7..c0c311d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,5 @@ [project] -name = "Fusion Artificial InTelligence Hub" +name = "faith" version = "0.0.1-alpha" authors = [ { name = "Peter Steiner", email = "peter.steiner@princeton.edu" }, @@ -37,6 +37,8 @@ dependencies = [ "tables", "pyyaml", "jupyter", + "hydra-core", + "omegaconf", ] [tool.uv.sources] diff --git a/uv.lock b/uv.lock index b805b42..e1a7e88 100644 --- a/uv.lock +++ b/uv.lock @@ -2,18 +2,193 @@ version = 1 revision = 2 requires-python = ">=3.9" resolution-markers = [ - "python_full_version >= '3.12' and sys_platform == 'darwin'", - "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", +] + +[[package]] +name = "aiohappyeyeballs" +version = "2.6.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/26/30/f84a107a9c4331c14b2b586036f40965c128aa4fee4dda5d3d51cb14ad54/aiohappyeyeballs-2.6.1.tar.gz", hash = "sha256:c3f9d0113123803ccadfdf3f0faa505bc78e6a72d1cc4806cbd719826e943558", size = 22760, upload-time = "2025-03-12T01:42:48.764Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0f/15/5bf3b99495fb160b63f95972b81750f18f7f4e02ad051373b669d17d44f2/aiohappyeyeballs-2.6.1-py3-none-any.whl", hash = "sha256:f349ba8f4b75cb25c99c5c2d84e997e485204d2902a9597802b0371f09331fb8", size = 15265, upload-time = "2025-03-12T01:42:47.083Z" }, +] + +[[package]] +name = "aiohttp" +version = "3.12.14" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aiohappyeyeballs" }, + { name = "aiosignal" }, + { name = "async-timeout", marker = "python_full_version < '3.11'" }, + { name = "attrs" }, + { name = "frozenlist" }, + { name = "multidict" }, + { name = "propcache" }, + { name = "yarl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e6/0b/e39ad954107ebf213a2325038a3e7a506be3d98e1435e1f82086eec4cde2/aiohttp-3.12.14.tar.gz", hash = "sha256:6e06e120e34d93100de448fd941522e11dafa78ef1a893c179901b7d66aa29f2", size = 7822921, upload-time = "2025-07-10T13:05:33.968Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/88/f161f429f9de391eee6a5c2cffa54e2ecd5b7122ae99df247f7734dfefcb/aiohttp-3.12.14-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:906d5075b5ba0dd1c66fcaaf60eb09926a9fef3ca92d912d2a0bbdbecf8b1248", size = 702641, upload-time = "2025-07-10T13:02:38.98Z" }, + { url = "https://files.pythonhosted.org/packages/fe/b5/24fa382a69a25d242e2baa3e56d5ea5227d1b68784521aaf3a1a8b34c9a4/aiohttp-3.12.14-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c875bf6fc2fd1a572aba0e02ef4e7a63694778c5646cdbda346ee24e630d30fb", size = 479005, upload-time = "2025-07-10T13:02:42.714Z" }, + { url = "https://files.pythonhosted.org/packages/09/67/fda1bc34adbfaa950d98d934a23900918f9d63594928c70e55045838c943/aiohttp-3.12.14-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fbb284d15c6a45fab030740049d03c0ecd60edad9cd23b211d7e11d3be8d56fd", size = 466781, upload-time = "2025-07-10T13:02:44.639Z" }, + { url = "https://files.pythonhosted.org/packages/36/96/3ce1ea96d3cf6928b87cfb8cdd94650367f5c2f36e686a1f5568f0f13754/aiohttp-3.12.14-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38e360381e02e1a05d36b223ecab7bc4a6e7b5ab15760022dc92589ee1d4238c", size = 1648841, upload-time = "2025-07-10T13:02:46.356Z" }, + { url = "https://files.pythonhosted.org/packages/be/04/ddea06cb4bc7d8db3745cf95e2c42f310aad485ca075bd685f0e4f0f6b65/aiohttp-3.12.14-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:aaf90137b5e5d84a53632ad95ebee5c9e3e7468f0aab92ba3f608adcb914fa95", size = 1622896, upload-time = "2025-07-10T13:02:48.422Z" }, + { url = "https://files.pythonhosted.org/packages/73/66/63942f104d33ce6ca7871ac6c1e2ebab48b88f78b2b7680c37de60f5e8cd/aiohttp-3.12.14-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e532a25e4a0a2685fa295a31acf65e027fbe2bea7a4b02cdfbbba8a064577663", size = 1695302, upload-time = "2025-07-10T13:02:50.078Z" }, + { url = "https://files.pythonhosted.org/packages/20/00/aab615742b953f04b48cb378ee72ada88555b47b860b98c21c458c030a23/aiohttp-3.12.14-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eab9762c4d1b08ae04a6c77474e6136da722e34fdc0e6d6eab5ee93ac29f35d1", size = 1737617, upload-time = "2025-07-10T13:02:52.123Z" }, + { url = "https://files.pythonhosted.org/packages/d6/4f/ef6d9f77225cf27747368c37b3d69fac1f8d6f9d3d5de2d410d155639524/aiohttp-3.12.14-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abe53c3812b2899889a7fca763cdfaeee725f5be68ea89905e4275476ffd7e61", size = 1642282, upload-time = "2025-07-10T13:02:53.899Z" }, + { url = "https://files.pythonhosted.org/packages/37/e1/e98a43c15aa52e9219a842f18c59cbae8bbe2d50c08d298f17e9e8bafa38/aiohttp-3.12.14-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5760909b7080aa2ec1d320baee90d03b21745573780a072b66ce633eb77a8656", size = 1582406, upload-time = "2025-07-10T13:02:55.515Z" }, + { url = "https://files.pythonhosted.org/packages/71/5c/29c6dfb49323bcdb0239bf3fc97ffcf0eaf86d3a60426a3287ec75d67721/aiohttp-3.12.14-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:02fcd3f69051467bbaa7f84d7ec3267478c7df18d68b2e28279116e29d18d4f3", size = 1626255, upload-time = "2025-07-10T13:02:57.343Z" }, + { url = "https://files.pythonhosted.org/packages/79/60/ec90782084090c4a6b459790cfd8d17be2c5662c9c4b2d21408b2f2dc36c/aiohttp-3.12.14-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:4dcd1172cd6794884c33e504d3da3c35648b8be9bfa946942d353b939d5f1288", size = 1637041, upload-time = "2025-07-10T13:02:59.008Z" }, + { url = "https://files.pythonhosted.org/packages/22/89/205d3ad30865c32bc472ac13f94374210745b05bd0f2856996cb34d53396/aiohttp-3.12.14-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:224d0da41355b942b43ad08101b1b41ce633a654128ee07e36d75133443adcda", size = 1612494, upload-time = "2025-07-10T13:03:00.618Z" }, + { url = "https://files.pythonhosted.org/packages/48/ae/2f66edaa8bd6db2a4cba0386881eb92002cdc70834e2a93d1d5607132c7e/aiohttp-3.12.14-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:e387668724f4d734e865c1776d841ed75b300ee61059aca0b05bce67061dcacc", size = 1692081, upload-time = "2025-07-10T13:03:02.154Z" }, + { url = "https://files.pythonhosted.org/packages/08/3a/fa73bfc6e21407ea57f7906a816f0dc73663d9549da703be05dbd76d2dc3/aiohttp-3.12.14-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:dec9cde5b5a24171e0b0a4ca064b1414950904053fb77c707efd876a2da525d8", size = 1715318, upload-time = "2025-07-10T13:03:04.322Z" }, + { url = "https://files.pythonhosted.org/packages/e3/b3/751124b8ceb0831c17960d06ee31a4732cb4a6a006fdbfa1153d07c52226/aiohttp-3.12.14-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:bbad68a2af4877cc103cd94af9160e45676fc6f0c14abb88e6e092b945c2c8e3", size = 1643660, upload-time = "2025-07-10T13:03:06.406Z" }, + { url = "https://files.pythonhosted.org/packages/81/3c/72477a1d34edb8ab8ce8013086a41526d48b64f77e381c8908d24e1c18f5/aiohttp-3.12.14-cp310-cp310-win32.whl", hash = "sha256:ee580cb7c00bd857b3039ebca03c4448e84700dc1322f860cf7a500a6f62630c", size = 428289, upload-time = "2025-07-10T13:03:08.274Z" }, + { url = "https://files.pythonhosted.org/packages/a2/c4/8aec4ccf1b822ec78e7982bd5cf971113ecce5f773f04039c76a083116fc/aiohttp-3.12.14-cp310-cp310-win_amd64.whl", hash = "sha256:cf4f05b8cea571e2ccc3ca744e35ead24992d90a72ca2cf7ab7a2efbac6716db", size = 451328, upload-time = "2025-07-10T13:03:10.146Z" }, + { url = "https://files.pythonhosted.org/packages/53/e1/8029b29316971c5fa89cec170274582619a01b3d82dd1036872acc9bc7e8/aiohttp-3.12.14-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f4552ff7b18bcec18b60a90c6982049cdb9dac1dba48cf00b97934a06ce2e597", size = 709960, upload-time = "2025-07-10T13:03:11.936Z" }, + { url = "https://files.pythonhosted.org/packages/96/bd/4f204cf1e282041f7b7e8155f846583b19149e0872752711d0da5e9cc023/aiohttp-3.12.14-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8283f42181ff6ccbcf25acaae4e8ab2ff7e92b3ca4a4ced73b2c12d8cd971393", size = 482235, upload-time = "2025-07-10T13:03:14.118Z" }, + { url = "https://files.pythonhosted.org/packages/d6/0f/2a580fcdd113fe2197a3b9df30230c7e85bb10bf56f7915457c60e9addd9/aiohttp-3.12.14-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:040afa180ea514495aaff7ad34ec3d27826eaa5d19812730fe9e529b04bb2179", size = 470501, upload-time = "2025-07-10T13:03:16.153Z" }, + { url = "https://files.pythonhosted.org/packages/38/78/2c1089f6adca90c3dd74915bafed6d6d8a87df5e3da74200f6b3a8b8906f/aiohttp-3.12.14-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b413c12f14c1149f0ffd890f4141a7471ba4b41234fe4fd4a0ff82b1dc299dbb", size = 1740696, upload-time = "2025-07-10T13:03:18.4Z" }, + { url = "https://files.pythonhosted.org/packages/4a/c8/ce6c7a34d9c589f007cfe064da2d943b3dee5aabc64eaecd21faf927ab11/aiohttp-3.12.14-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:1d6f607ce2e1a93315414e3d448b831238f1874b9968e1195b06efaa5c87e245", size = 1689365, upload-time = "2025-07-10T13:03:20.629Z" }, + { url = "https://files.pythonhosted.org/packages/18/10/431cd3d089de700756a56aa896faf3ea82bee39d22f89db7ddc957580308/aiohttp-3.12.14-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:565e70d03e924333004ed101599902bba09ebb14843c8ea39d657f037115201b", size = 1788157, upload-time = "2025-07-10T13:03:22.44Z" }, + { url = "https://files.pythonhosted.org/packages/fa/b2/26f4524184e0f7ba46671c512d4b03022633bcf7d32fa0c6f1ef49d55800/aiohttp-3.12.14-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4699979560728b168d5ab63c668a093c9570af2c7a78ea24ca5212c6cdc2b641", size = 1827203, upload-time = "2025-07-10T13:03:24.628Z" }, + { url = "https://files.pythonhosted.org/packages/e0/30/aadcdf71b510a718e3d98a7bfeaea2396ac847f218b7e8edb241b09bd99a/aiohttp-3.12.14-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad5fdf6af93ec6c99bf800eba3af9a43d8bfd66dce920ac905c817ef4a712afe", size = 1729664, upload-time = "2025-07-10T13:03:26.412Z" }, + { url = "https://files.pythonhosted.org/packages/67/7f/7ccf11756ae498fdedc3d689a0c36ace8fc82f9d52d3517da24adf6e9a74/aiohttp-3.12.14-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4ac76627c0b7ee0e80e871bde0d376a057916cb008a8f3ffc889570a838f5cc7", size = 1666741, upload-time = "2025-07-10T13:03:28.167Z" }, + { url = "https://files.pythonhosted.org/packages/6b/4d/35ebc170b1856dd020c92376dbfe4297217625ef4004d56587024dc2289c/aiohttp-3.12.14-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:798204af1180885651b77bf03adc903743a86a39c7392c472891649610844635", size = 1715013, upload-time = "2025-07-10T13:03:30.018Z" }, + { url = "https://files.pythonhosted.org/packages/7b/24/46dc0380146f33e2e4aa088b92374b598f5bdcde1718c77e8d1a0094f1a4/aiohttp-3.12.14-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:4f1205f97de92c37dd71cf2d5bcfb65fdaed3c255d246172cce729a8d849b4da", size = 1710172, upload-time = "2025-07-10T13:03:31.821Z" }, + { url = "https://files.pythonhosted.org/packages/2f/0a/46599d7d19b64f4d0fe1b57bdf96a9a40b5c125f0ae0d8899bc22e91fdce/aiohttp-3.12.14-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:76ae6f1dd041f85065d9df77c6bc9c9703da9b5c018479d20262acc3df97d419", size = 1690355, upload-time = "2025-07-10T13:03:34.754Z" }, + { url = "https://files.pythonhosted.org/packages/08/86/b21b682e33d5ca317ef96bd21294984f72379454e689d7da584df1512a19/aiohttp-3.12.14-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a194ace7bc43ce765338ca2dfb5661489317db216ea7ea700b0332878b392cab", size = 1783958, upload-time = "2025-07-10T13:03:36.53Z" }, + { url = "https://files.pythonhosted.org/packages/4f/45/f639482530b1396c365f23c5e3b1ae51c9bc02ba2b2248ca0c855a730059/aiohttp-3.12.14-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:16260e8e03744a6fe3fcb05259eeab8e08342c4c33decf96a9dad9f1187275d0", size = 1804423, upload-time = "2025-07-10T13:03:38.504Z" }, + { url = "https://files.pythonhosted.org/packages/7e/e5/39635a9e06eed1d73671bd4079a3caf9cf09a49df08490686f45a710b80e/aiohttp-3.12.14-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:8c779e5ebbf0e2e15334ea404fcce54009dc069210164a244d2eac8352a44b28", size = 1717479, upload-time = "2025-07-10T13:03:40.158Z" }, + { url = "https://files.pythonhosted.org/packages/51/e1/7f1c77515d369b7419c5b501196526dad3e72800946c0099594c1f0c20b4/aiohttp-3.12.14-cp311-cp311-win32.whl", hash = "sha256:a289f50bf1bd5be227376c067927f78079a7bdeccf8daa6a9e65c38bae14324b", size = 427907, upload-time = "2025-07-10T13:03:41.801Z" }, + { url = "https://files.pythonhosted.org/packages/06/24/a6bf915c85b7a5b07beba3d42b3282936b51e4578b64a51e8e875643c276/aiohttp-3.12.14-cp311-cp311-win_amd64.whl", hash = "sha256:0b8a69acaf06b17e9c54151a6c956339cf46db4ff72b3ac28516d0f7068f4ced", size = 452334, upload-time = "2025-07-10T13:03:43.485Z" }, + { url = "https://files.pythonhosted.org/packages/c3/0d/29026524e9336e33d9767a1e593ae2b24c2b8b09af7c2bd8193762f76b3e/aiohttp-3.12.14-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:a0ecbb32fc3e69bc25efcda7d28d38e987d007096cbbeed04f14a6662d0eee22", size = 701055, upload-time = "2025-07-10T13:03:45.59Z" }, + { url = "https://files.pythonhosted.org/packages/0a/b8/a5e8e583e6c8c1056f4b012b50a03c77a669c2e9bf012b7cf33d6bc4b141/aiohttp-3.12.14-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0400f0ca9bb3e0b02f6466421f253797f6384e9845820c8b05e976398ac1d81a", size = 475670, upload-time = "2025-07-10T13:03:47.249Z" }, + { url = "https://files.pythonhosted.org/packages/29/e8/5202890c9e81a4ec2c2808dd90ffe024952e72c061729e1d49917677952f/aiohttp-3.12.14-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a56809fed4c8a830b5cae18454b7464e1529dbf66f71c4772e3cfa9cbec0a1ff", size = 468513, upload-time = "2025-07-10T13:03:49.377Z" }, + { url = "https://files.pythonhosted.org/packages/23/e5/d11db8c23d8923d3484a27468a40737d50f05b05eebbb6288bafcb467356/aiohttp-3.12.14-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:27f2e373276e4755691a963e5d11756d093e346119f0627c2d6518208483fb6d", size = 1715309, upload-time = "2025-07-10T13:03:51.556Z" }, + { url = "https://files.pythonhosted.org/packages/53/44/af6879ca0eff7a16b1b650b7ea4a827301737a350a464239e58aa7c387ef/aiohttp-3.12.14-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:ca39e433630e9a16281125ef57ece6817afd1d54c9f1bf32e901f38f16035869", size = 1697961, upload-time = "2025-07-10T13:03:53.511Z" }, + { url = "https://files.pythonhosted.org/packages/bb/94/18457f043399e1ec0e59ad8674c0372f925363059c276a45a1459e17f423/aiohttp-3.12.14-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9c748b3f8b14c77720132b2510a7d9907a03c20ba80f469e58d5dfd90c079a1c", size = 1753055, upload-time = "2025-07-10T13:03:55.368Z" }, + { url = "https://files.pythonhosted.org/packages/26/d9/1d3744dc588fafb50ff8a6226d58f484a2242b5dd93d8038882f55474d41/aiohttp-3.12.14-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f0a568abe1b15ce69d4cc37e23020720423f0728e3cb1f9bcd3f53420ec3bfe7", size = 1799211, upload-time = "2025-07-10T13:03:57.216Z" }, + { url = "https://files.pythonhosted.org/packages/73/12/2530fb2b08773f717ab2d249ca7a982ac66e32187c62d49e2c86c9bba9b4/aiohttp-3.12.14-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9888e60c2c54eaf56704b17feb558c7ed6b7439bca1e07d4818ab878f2083660", size = 1718649, upload-time = "2025-07-10T13:03:59.469Z" }, + { url = "https://files.pythonhosted.org/packages/b9/34/8d6015a729f6571341a311061b578e8b8072ea3656b3d72329fa0faa2c7c/aiohttp-3.12.14-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3006a1dc579b9156de01e7916d38c63dc1ea0679b14627a37edf6151bc530088", size = 1634452, upload-time = "2025-07-10T13:04:01.698Z" }, + { url = "https://files.pythonhosted.org/packages/ff/4b/08b83ea02595a582447aeb0c1986792d0de35fe7a22fb2125d65091cbaf3/aiohttp-3.12.14-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:aa8ec5c15ab80e5501a26719eb48a55f3c567da45c6ea5bb78c52c036b2655c7", size = 1695511, upload-time = "2025-07-10T13:04:04.165Z" }, + { url = "https://files.pythonhosted.org/packages/b5/66/9c7c31037a063eec13ecf1976185c65d1394ded4a5120dd5965e3473cb21/aiohttp-3.12.14-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:39b94e50959aa07844c7fe2206b9f75d63cc3ad1c648aaa755aa257f6f2498a9", size = 1716967, upload-time = "2025-07-10T13:04:06.132Z" }, + { url = "https://files.pythonhosted.org/packages/ba/02/84406e0ad1acb0fb61fd617651ab6de760b2d6a31700904bc0b33bd0894d/aiohttp-3.12.14-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:04c11907492f416dad9885d503fbfc5dcb6768d90cad8639a771922d584609d3", size = 1657620, upload-time = "2025-07-10T13:04:07.944Z" }, + { url = "https://files.pythonhosted.org/packages/07/53/da018f4013a7a179017b9a274b46b9a12cbeb387570f116964f498a6f211/aiohttp-3.12.14-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:88167bd9ab69bb46cee91bd9761db6dfd45b6e76a0438c7e884c3f8160ff21eb", size = 1737179, upload-time = "2025-07-10T13:04:10.182Z" }, + { url = "https://files.pythonhosted.org/packages/49/e8/ca01c5ccfeaafb026d85fa4f43ceb23eb80ea9c1385688db0ef322c751e9/aiohttp-3.12.14-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:791504763f25e8f9f251e4688195e8b455f8820274320204f7eafc467e609425", size = 1765156, upload-time = "2025-07-10T13:04:12.029Z" }, + { url = "https://files.pythonhosted.org/packages/22/32/5501ab525a47ba23c20613e568174d6c63aa09e2caa22cded5c6ea8e3ada/aiohttp-3.12.14-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2785b112346e435dd3a1a67f67713a3fe692d288542f1347ad255683f066d8e0", size = 1724766, upload-time = "2025-07-10T13:04:13.961Z" }, + { url = "https://files.pythonhosted.org/packages/06/af/28e24574801fcf1657945347ee10df3892311c2829b41232be6089e461e7/aiohttp-3.12.14-cp312-cp312-win32.whl", hash = "sha256:15f5f4792c9c999a31d8decf444e79fcfd98497bf98e94284bf390a7bb8c1729", size = 422641, upload-time = "2025-07-10T13:04:16.018Z" }, + { url = "https://files.pythonhosted.org/packages/98/d5/7ac2464aebd2eecac38dbe96148c9eb487679c512449ba5215d233755582/aiohttp-3.12.14-cp312-cp312-win_amd64.whl", hash = "sha256:3b66e1a182879f579b105a80d5c4bd448b91a57e8933564bf41665064796a338", size = 449316, upload-time = "2025-07-10T13:04:18.289Z" }, + { url = "https://files.pythonhosted.org/packages/06/48/e0d2fa8ac778008071e7b79b93ab31ef14ab88804d7ba71b5c964a7c844e/aiohttp-3.12.14-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:3143a7893d94dc82bc409f7308bc10d60285a3cd831a68faf1aa0836c5c3c767", size = 695471, upload-time = "2025-07-10T13:04:20.124Z" }, + { url = "https://files.pythonhosted.org/packages/8d/e7/f73206afa33100804f790b71092888f47df65fd9a4cd0e6800d7c6826441/aiohttp-3.12.14-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:3d62ac3d506cef54b355bd34c2a7c230eb693880001dfcda0bf88b38f5d7af7e", size = 473128, upload-time = "2025-07-10T13:04:21.928Z" }, + { url = "https://files.pythonhosted.org/packages/df/e2/4dd00180be551a6e7ee979c20fc7c32727f4889ee3fd5b0586e0d47f30e1/aiohttp-3.12.14-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:48e43e075c6a438937c4de48ec30fa8ad8e6dfef122a038847456bfe7b947b63", size = 465426, upload-time = "2025-07-10T13:04:24.071Z" }, + { url = "https://files.pythonhosted.org/packages/de/dd/525ed198a0bb674a323e93e4d928443a680860802c44fa7922d39436b48b/aiohttp-3.12.14-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:077b4488411a9724cecc436cbc8c133e0d61e694995b8de51aaf351c7578949d", size = 1704252, upload-time = "2025-07-10T13:04:26.049Z" }, + { url = "https://files.pythonhosted.org/packages/d8/b1/01e542aed560a968f692ab4fc4323286e8bc4daae83348cd63588e4f33e3/aiohttp-3.12.14-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:d8c35632575653f297dcbc9546305b2c1133391089ab925a6a3706dfa775ccab", size = 1685514, upload-time = "2025-07-10T13:04:28.186Z" }, + { url = "https://files.pythonhosted.org/packages/b3/06/93669694dc5fdabdc01338791e70452d60ce21ea0946a878715688d5a191/aiohttp-3.12.14-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6b8ce87963f0035c6834b28f061df90cf525ff7c9b6283a8ac23acee6502afd4", size = 1737586, upload-time = "2025-07-10T13:04:30.195Z" }, + { url = "https://files.pythonhosted.org/packages/a5/3a/18991048ffc1407ca51efb49ba8bcc1645961f97f563a6c480cdf0286310/aiohttp-3.12.14-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f0a2cf66e32a2563bb0766eb24eae7e9a269ac0dc48db0aae90b575dc9583026", size = 1786958, upload-time = "2025-07-10T13:04:32.482Z" }, + { url = "https://files.pythonhosted.org/packages/30/a8/81e237f89a32029f9b4a805af6dffc378f8459c7b9942712c809ff9e76e5/aiohttp-3.12.14-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdea089caf6d5cde975084a884c72d901e36ef9c2fd972c9f51efbbc64e96fbd", size = 1709287, upload-time = "2025-07-10T13:04:34.493Z" }, + { url = "https://files.pythonhosted.org/packages/8c/e3/bd67a11b0fe7fc12c6030473afd9e44223d456f500f7cf526dbaa259ae46/aiohttp-3.12.14-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8a7865f27db67d49e81d463da64a59365ebd6b826e0e4847aa111056dcb9dc88", size = 1622990, upload-time = "2025-07-10T13:04:36.433Z" }, + { url = "https://files.pythonhosted.org/packages/83/ba/e0cc8e0f0d9ce0904e3cf2d6fa41904e379e718a013c721b781d53dcbcca/aiohttp-3.12.14-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0ab5b38a6a39781d77713ad930cb5e7feea6f253de656a5f9f281a8f5931b086", size = 1676015, upload-time = "2025-07-10T13:04:38.958Z" }, + { url = "https://files.pythonhosted.org/packages/d8/b3/1e6c960520bda094c48b56de29a3d978254637ace7168dd97ddc273d0d6c/aiohttp-3.12.14-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:9b3b15acee5c17e8848d90a4ebc27853f37077ba6aec4d8cb4dbbea56d156933", size = 1707678, upload-time = "2025-07-10T13:04:41.275Z" }, + { url = "https://files.pythonhosted.org/packages/0a/19/929a3eb8c35b7f9f076a462eaa9830b32c7f27d3395397665caa5e975614/aiohttp-3.12.14-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:e4c972b0bdaac167c1e53e16a16101b17c6d0ed7eac178e653a07b9f7fad7151", size = 1650274, upload-time = "2025-07-10T13:04:43.483Z" }, + { url = "https://files.pythonhosted.org/packages/22/e5/81682a6f20dd1b18ce3d747de8eba11cbef9b270f567426ff7880b096b48/aiohttp-3.12.14-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:7442488b0039257a3bdbc55f7209587911f143fca11df9869578db6c26feeeb8", size = 1726408, upload-time = "2025-07-10T13:04:45.577Z" }, + { url = "https://files.pythonhosted.org/packages/8c/17/884938dffaa4048302985483f77dfce5ac18339aad9b04ad4aaa5e32b028/aiohttp-3.12.14-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:f68d3067eecb64c5e9bab4a26aa11bd676f4c70eea9ef6536b0a4e490639add3", size = 1759879, upload-time = "2025-07-10T13:04:47.663Z" }, + { url = "https://files.pythonhosted.org/packages/95/78/53b081980f50b5cf874359bde707a6eacd6c4be3f5f5c93937e48c9d0025/aiohttp-3.12.14-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f88d3704c8b3d598a08ad17d06006cb1ca52a1182291f04979e305c8be6c9758", size = 1708770, upload-time = "2025-07-10T13:04:49.944Z" }, + { url = "https://files.pythonhosted.org/packages/ed/91/228eeddb008ecbe3ffa6c77b440597fdf640307162f0c6488e72c5a2d112/aiohttp-3.12.14-cp313-cp313-win32.whl", hash = "sha256:a3c99ab19c7bf375c4ae3debd91ca5d394b98b6089a03231d4c580ef3c2ae4c5", size = 421688, upload-time = "2025-07-10T13:04:51.993Z" }, + { url = "https://files.pythonhosted.org/packages/66/5f/8427618903343402fdafe2850738f735fd1d9409d2a8f9bcaae5e630d3ba/aiohttp-3.12.14-cp313-cp313-win_amd64.whl", hash = "sha256:3f8aad695e12edc9d571f878c62bedc91adf30c760c8632f09663e5f564f4baa", size = 448098, upload-time = "2025-07-10T13:04:53.999Z" }, + { url = "https://files.pythonhosted.org/packages/cf/54/8a65095784f5c8b2a60a8baa2baabb15b8d507efb0911d59f94af04ba908/aiohttp-3.12.14-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b8cc6b05e94d837bcd71c6531e2344e1ff0fb87abe4ad78a9261d67ef5d83eae", size = 705553, upload-time = "2025-07-10T13:04:56.475Z" }, + { url = "https://files.pythonhosted.org/packages/d0/23/65a82d33841c790178aed8aa6b5e720e37f08bdf7256936fa3bc86f03257/aiohttp-3.12.14-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d1dcb015ac6a3b8facd3677597edd5ff39d11d937456702f0bb2b762e390a21b", size = 480529, upload-time = "2025-07-10T13:04:58.524Z" }, + { url = "https://files.pythonhosted.org/packages/10/66/9d51ec40613aca2f38d6ac527b592686a302197109aa1c0fe045040835ec/aiohttp-3.12.14-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3779ed96105cd70ee5e85ca4f457adbce3d9ff33ec3d0ebcdf6c5727f26b21b3", size = 467929, upload-time = "2025-07-10T13:05:00.815Z" }, + { url = "https://files.pythonhosted.org/packages/48/9e/2f14e4780a461351325d7821fb64e9107189315dd8f6e8a67e7afdbf875c/aiohttp-3.12.14-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:717a0680729b4ebd7569c1dcd718c46b09b360745fd8eb12317abc74b14d14d0", size = 1642894, upload-time = "2025-07-10T13:05:02.966Z" }, + { url = "https://files.pythonhosted.org/packages/b8/26/26ef03e6cc4b7fb275eaa76b33c128f72729e8833e512b6770f877560b6e/aiohttp-3.12.14-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b5dd3a2ef7c7e968dbbac8f5574ebeac4d2b813b247e8cec28174a2ba3627170", size = 1617388, upload-time = "2025-07-10T13:05:05.035Z" }, + { url = "https://files.pythonhosted.org/packages/68/cf/fffc2a9edacbd475cfb508075bad052426ce0b9100f1045536ee1b683872/aiohttp-3.12.14-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4710f77598c0092239bc12c1fcc278a444e16c7032d91babf5abbf7166463f7b", size = 1691015, upload-time = "2025-07-10T13:05:07.223Z" }, + { url = "https://files.pythonhosted.org/packages/0b/c5/bb8b29ef079d3ecb5960ec1b547b56bc52ee5ffc43c8a30ef21f9afeb67b/aiohttp-3.12.14-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f3e9f75ae842a6c22a195d4a127263dbf87cbab729829e0bd7857fb1672400b2", size = 1730330, upload-time = "2025-07-10T13:05:09.393Z" }, + { url = "https://files.pythonhosted.org/packages/09/0d/d18e2d2754497bf91b9559425e8c4286af61bdbe42d49c43d955c7269680/aiohttp-3.12.14-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f9c8d55d6802086edd188e3a7d85a77787e50d56ce3eb4757a3205fa4657922", size = 1636573, upload-time = "2025-07-10T13:05:11.796Z" }, + { url = "https://files.pythonhosted.org/packages/33/c8/2c32cd25deb9f590cb8d50ff33fb3bb2cc8d1761958989f6f64cf00ef1cb/aiohttp-3.12.14-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:79b29053ff3ad307880d94562cca80693c62062a098a5776ea8ef5ef4b28d140", size = 1571573, upload-time = "2025-07-10T13:05:14.216Z" }, + { url = "https://files.pythonhosted.org/packages/0f/36/1b36ae47b9d6afdd39072373bb7157b464996376d562d3c50950ddf6d10e/aiohttp-3.12.14-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:23e1332fff36bebd3183db0c7a547a1da9d3b4091509f6d818e098855f2f27d3", size = 1619535, upload-time = "2025-07-10T13:05:16.292Z" }, + { url = "https://files.pythonhosted.org/packages/2b/e8/6864b7812351821168e80ca102d7fa244a78fefe9690995a40e8b5c19f4b/aiohttp-3.12.14-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:a564188ce831fd110ea76bcc97085dd6c625b427db3f1dbb14ca4baa1447dcbc", size = 1629672, upload-time = "2025-07-10T13:05:18.548Z" }, + { url = "https://files.pythonhosted.org/packages/9b/55/f90e3eb25330f8a564a6e6b4d3cc15d3630bd28b0795a025e397e3279411/aiohttp-3.12.14-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:a7a1b4302f70bb3ec40ca86de82def532c97a80db49cac6a6700af0de41af5ee", size = 1606317, upload-time = "2025-07-10T13:05:20.856Z" }, + { url = "https://files.pythonhosted.org/packages/1b/f7/39c3570434bb7e81601155ba71327735b26548473cca2d5c7f5badabb140/aiohttp-3.12.14-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:1b07ccef62950a2519f9bfc1e5b294de5dd84329f444ca0b329605ea787a3de5", size = 1693913, upload-time = "2025-07-10T13:05:22.951Z" }, + { url = "https://files.pythonhosted.org/packages/46/0d/caee8733fbe511c34a54e93ee26c4b8d505e12785444d31f772a610df7ab/aiohttp-3.12.14-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:938bd3ca6259e7e48b38d84f753d548bd863e0c222ed6ee6ace3fd6752768a84", size = 1709592, upload-time = "2025-07-10T13:05:25.587Z" }, + { url = "https://files.pythonhosted.org/packages/24/f3/5d21196abf74dee66c5809e764cc27a2275e54c9355019c21be3bf77dd77/aiohttp-3.12.14-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:8bc784302b6b9f163b54c4e93d7a6f09563bd01ff2b841b29ed3ac126e5040bf", size = 1639262, upload-time = "2025-07-10T13:05:27.782Z" }, + { url = "https://files.pythonhosted.org/packages/54/bb/b4226f4fd0597d5245f284d10be48bf1ef610ab4f57d4239686fb03d1814/aiohttp-3.12.14-cp39-cp39-win32.whl", hash = "sha256:a3416f95961dd7d5393ecff99e3f41dc990fb72eda86c11f2a60308ac6dcd7a0", size = 429202, upload-time = "2025-07-10T13:05:29.78Z" }, + { url = "https://files.pythonhosted.org/packages/a0/c0/2f1cefb7b077bf5c19f01bdf0d82b89de0bf2801b441eda23ada0b8966ac/aiohttp-3.12.14-cp39-cp39-win_amd64.whl", hash = "sha256:196858b8820d7f60578f8b47e5669b3195c21d8ab261e39b1d705346458f445f", size = 452436, upload-time = "2025-07-10T13:05:31.77Z" }, +] + +[[package]] +name = "aiohttp-cors" +version = "0.8.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aiohttp" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/d89e846a5444b3d5eb8985a6ddb0daef3774928e1bfbce8e84ec97b0ffa7/aiohttp_cors-0.8.1.tar.gz", hash = "sha256:ccacf9cb84b64939ea15f859a146af1f662a6b1d68175754a07315e305fb1403", size = 38626, upload-time = "2025-03-31T14:16:20.048Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/98/3b/40a68de458904bcc143622015fff2352b6461cd92fd66d3527bf1c6f5716/aiohttp_cors-0.8.1-py3-none-any.whl", hash = "sha256:3180cf304c5c712d626b9162b195b1db7ddf976a2a25172b35bb2448b890a80d", size = 25231, upload-time = "2025-03-31T14:16:18.478Z" }, +] + +[[package]] +name = "aiosignal" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "frozenlist" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/61/62/06741b579156360248d1ec624842ad0edf697050bbaf7c3e46394e106ad1/aiosignal-1.4.0.tar.gz", hash = "sha256:f47eecd9468083c2029cc99945502cb7708b082c232f9aca65da147157b251c7", size = 25007, upload-time = "2025-07-03T22:54:43.528Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fb/76/641ae371508676492379f16e2fa48f4e2c11741bd63c48be4b12a6b09cba/aiosignal-1.4.0-py3-none-any.whl", hash = "sha256:053243f8b92b990551949e63930a839ff0cf0b0ebbe0597b0f3fb19e1a0fe82e", size = 7490, upload-time = "2025-07-03T22:54:42.156Z" }, +] + +[[package]] +name = "annotated-types" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload-time = "2024-05-20T21:33:25.928Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, +] + +[[package]] +name = "antlr4-python3-runtime" +version = "4.9.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3e/38/7859ff46355f76f8d19459005ca000b6e7012f2f1ca597746cbcd1fbfe5e/antlr4-python3-runtime-4.9.3.tar.gz", hash = "sha256:f224469b4168294902bb1efa80a8bf7855f24c99aef99cbefc1bcd3cce77881b", size = 117034, upload-time = "2021-11-06T17:52:23.524Z" } + +[[package]] +name = "anyio" +version = "4.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, + { name = "idna" }, + { name = "sniffio" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/95/7d/4c1bd541d4dffa1b52bd83fb8527089e097a106fc90b467a7313b105f840/anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028", size = 190949, upload-time = "2025-03-17T00:02:54.77Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a1/ee/48ca1a7c89ffec8b6a0c5d02b89c305671d5ffd8d3c94acf8b8c408575bb/anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c", size = 100916, upload-time = "2025-03-17T00:02:52.713Z" }, ] [[package]] @@ -25,6 +200,52 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321, upload-time = "2024-02-06T09:43:09.663Z" }, ] +[[package]] +name = "argon2-cffi" +version = "25.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "argon2-cffi-bindings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0e/89/ce5af8a7d472a67cc819d5d998aa8c82c5d860608c4db9f46f1162d7dab9/argon2_cffi-25.1.0.tar.gz", hash = "sha256:694ae5cc8a42f4c4e2bf2ca0e64e51e23a040c6a517a85074683d3959e1346c1", size = 45706, upload-time = "2025-06-03T06:55:32.073Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4f/d3/a8b22fa575b297cd6e3e3b0155c7e25db170edf1c74783d6a31a2490b8d9/argon2_cffi-25.1.0-py3-none-any.whl", hash = "sha256:fdc8b074db390fccb6eb4a3604ae7231f219aa669a2652e0f20e16ba513d5741", size = 14657, upload-time = "2025-06-03T06:55:30.804Z" }, +] + +[[package]] +name = "argon2-cffi-bindings" +version = "21.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b9/e9/184b8ccce6683b0aa2fbb7ba5683ea4b9c5763f1356347f1312c32e3c66e/argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3", size = 1779911, upload-time = "2021-12-01T08:52:55.68Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d4/13/838ce2620025e9666aa8f686431f67a29052241692a3dd1ae9d3692a89d3/argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367", size = 29658, upload-time = "2021-12-01T09:09:17.016Z" }, + { url = "https://files.pythonhosted.org/packages/b3/02/f7f7bb6b6af6031edb11037639c697b912e1dea2db94d436e681aea2f495/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d", size = 80583, upload-time = "2021-12-01T09:09:19.546Z" }, + { url = "https://files.pythonhosted.org/packages/ec/f7/378254e6dd7ae6f31fe40c8649eea7d4832a42243acaf0f1fff9083b2bed/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae", size = 86168, upload-time = "2021-12-01T09:09:21.445Z" }, + { url = "https://files.pythonhosted.org/packages/74/f6/4a34a37a98311ed73bb80efe422fed95f2ac25a4cacc5ae1d7ae6a144505/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c", size = 82709, upload-time = "2021-12-01T09:09:18.182Z" }, + { url = "https://files.pythonhosted.org/packages/74/2b/73d767bfdaab25484f7e7901379d5f8793cccbb86c6e0cbc4c1b96f63896/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86", size = 83613, upload-time = "2021-12-01T09:09:22.741Z" }, + { url = "https://files.pythonhosted.org/packages/4f/fd/37f86deef67ff57c76f137a67181949c2d408077e2e3dd70c6c42912c9bf/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f", size = 84583, upload-time = "2021-12-01T09:09:24.177Z" }, + { url = "https://files.pythonhosted.org/packages/6f/52/5a60085a3dae8fded8327a4f564223029f5f54b0cb0455a31131b5363a01/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e", size = 88475, upload-time = "2021-12-01T09:09:26.673Z" }, + { url = "https://files.pythonhosted.org/packages/8b/95/143cd64feb24a15fa4b189a3e1e7efbaeeb00f39a51e99b26fc62fbacabd/argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082", size = 27698, upload-time = "2021-12-01T09:09:27.87Z" }, + { url = "https://files.pythonhosted.org/packages/37/2c/e34e47c7dee97ba6f01a6203e0383e15b60fb85d78ac9a15cd066f6fe28b/argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f", size = 30817, upload-time = "2021-12-01T09:09:30.267Z" }, + { url = "https://files.pythonhosted.org/packages/5a/e4/bf8034d25edaa495da3c8a3405627d2e35758e44ff6eaa7948092646fdcc/argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93", size = 53104, upload-time = "2021-12-01T09:09:31.335Z" }, +] + +[[package]] +name = "arrow" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil" }, + { name = "types-python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2e/00/0f6e8fcdb23ea632c866620cc872729ff43ed91d284c866b515c6342b173/arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85", size = 131960, upload-time = "2023-09-30T22:11:18.25Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/ed/e97229a566617f2ae958a6b13e7cc0f585470eac730a73e9e82c32a3cdd2/arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80", size = 66419, upload-time = "2023-09-30T22:11:16.072Z" }, +] + [[package]] name = "asttokens" version = "3.0.0" @@ -34,6 +255,45 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2", size = 26918, upload-time = "2024-11-30T04:30:10.946Z" }, ] +[[package]] +name = "async-lru" +version = "2.0.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b2/4d/71ec4d3939dc755264f680f6c2b4906423a304c3d18e96853f0a595dfe97/async_lru-2.0.5.tar.gz", hash = "sha256:481d52ccdd27275f42c43a928b4a50c3bfb2d67af4e78b170e3e0bb39c66e5bb", size = 10380, upload-time = "2025-03-16T17:25:36.919Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/03/49/d10027df9fce941cb8184e78a02857af36360d33e1721df81c5ed2179a1a/async_lru-2.0.5-py3-none-any.whl", hash = "sha256:ab95404d8d2605310d345932697371a5f40def0487c03d6d0ad9138de52c9943", size = 6069, upload-time = "2025-03-16T17:25:35.422Z" }, +] + +[[package]] +name = "async-timeout" +version = "5.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a5/ae/136395dfbfe00dfc94da3f3e136d0b13f394cba8f4841120e34226265780/async_timeout-5.0.1.tar.gz", hash = "sha256:d9321a7a3d5a6a5e187e824d2fa0793ce379a202935782d555d6e9d2735677d3", size = 9274, upload-time = "2024-11-06T16:41:39.6Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fe/ba/e2081de779ca30d473f21f5b30e0e737c438205440784c7dfc81efc2b029/async_timeout-5.0.1-py3-none-any.whl", hash = "sha256:39e3809566ff85354557ec2398b55e096c8364bacac9405a7a1fa429e77fe76c", size = 6233, upload-time = "2024-11-06T16:41:37.9Z" }, +] + +[[package]] +name = "attrs" +version = "25.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032, upload-time = "2025-03-13T11:10:22.779Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815, upload-time = "2025-03-13T11:10:21.14Z" }, +] + +[[package]] +name = "babel" +version = "2.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852, upload-time = "2025-02-01T15:17:41.026Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537, upload-time = "2025-02-01T15:17:37.39Z" }, +] + [[package]] name = "bcrypt" version = "4.3.0" @@ -92,6 +352,36 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/63/13/47bba97924ebe86a62ef83dc75b7c8a881d53c535f83e2c54c4bd701e05c/bcrypt-4.3.0-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:57967b7a28d855313a963aaea51bf6df89f833db4320da458e5b3c5ab6d4c938", size = 280110, upload-time = "2025-02-28T01:24:05.896Z" }, ] +[[package]] +name = "beautifulsoup4" +version = "4.13.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "soupsieve" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d8/e4/0c4c39e18fd76d6a628d4dd8da40543d136ce2d1752bd6eeeab0791f4d6b/beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195", size = 621067, upload-time = "2025-04-15T17:05:13.836Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/50/cd/30110dc0ffcf3b131156077b90e9f60ed75711223f306da4db08eff8403b/beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b", size = 187285, upload-time = "2025-04-15T17:05:12.221Z" }, +] + +[[package]] +name = "bleach" +version = "6.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "webencodings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/76/9a/0e33f5054c54d349ea62c277191c020c2d6ef1d65ab2cb1993f91ec846d1/bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f", size = 203083, upload-time = "2024-10-29T18:30:40.477Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fc/55/96142937f66150805c25c4d0f31ee4132fd33497753400734f9dfdcbdc66/bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e", size = 163406, upload-time = "2024-10-29T18:30:38.186Z" }, +] + +[package.optional-dependencies] +css = [ + { name = "tinycss2" }, +] + [[package]] name = "blosc2" version = "2.5.1" @@ -99,7 +389,8 @@ source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", ] dependencies = [ { name = "msgpack", marker = "python_full_version < '3.10'" }, @@ -144,13 +435,20 @@ name = "blosc2" version = "3.5.1" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.12' and sys_platform == 'darwin'", - "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -188,6 +486,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b1/f0/55b5090c8fb6e9a12810cf141cd59875718148a78f62a4da818045f7e4b6/blosc2-3.5.1-cp313-cp313-win_amd64.whl", hash = "sha256:9d36c4a8489c0f8719040a7543918e2701821340b8643d508c450d0d012259bf", size = 2213487, upload-time = "2025-07-02T11:47:15.297Z" }, ] +[[package]] +name = "cachetools" +version = "5.5.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/81/3747dad6b14fa2cf53fcf10548cf5aea6913e96fab41a3c198676f8948a5/cachetools-5.5.2.tar.gz", hash = "sha256:1a661caa9175d26759571b2e19580f9d6393969e5dfca11fdb1f947a23e640d4", size = 28380, upload-time = "2025-02-20T21:01:19.524Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/72/76/20fa66124dbe6be5cafeb312ece67de6b61dd91a0247d1ea13db4ebb33c2/cachetools-5.5.2-py3-none-any.whl", hash = "sha256:d26a22bcc62eb95c3beabd9f1ee5e820d3d2704fe2967cbe350e20c8ffcd3f0a", size = 10080, upload-time = "2025-02-20T21:01:16.647Z" }, +] + [[package]] name = "certifi" version = "2025.7.9" @@ -340,6 +647,54 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626, upload-time = "2025-05-02T08:34:40.053Z" }, ] +[[package]] +name = "click" +version = "8.1.8" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", + "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "colorama", marker = "python_full_version < '3.10' and sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593, upload-time = "2024-12-21T18:38:44.339Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2", size = 98188, upload-time = "2024-12-21T18:38:41.666Z" }, +] + +[[package]] +name = "click" +version = "8.2.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "colorama", marker = "python_full_version >= '3.10' and sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202", size = 286342, upload-time = "2025-05-20T23:19:49.832Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b", size = 102215, upload-time = "2025-05-20T23:19:47.796Z" }, +] + [[package]] name = "colorama" version = "0.4.6" @@ -349,6 +704,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, ] +[[package]] +name = "colorful" +version = "0.5.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0c/0c/d180ebf230b771907f46981023a80f62cf592d49673cc5f8a5993aa67bb6/colorful-0.5.7.tar.gz", hash = "sha256:c5452179b56601c178b03d468a5326cc1fe37d9be81d24d0d6bdab36c4b93ad8", size = 209487, upload-time = "2025-06-30T15:24:03.936Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e2/98/0d791b3d1eaed89d7d370b5cf9b8079b124da0545559417f394ba21b5532/colorful-0.5.7-py2.py3-none-any.whl", hash = "sha256:495dd3a23151a9568cee8a90fc1174c902ad7ef06655f50b6bddf9e80008da69", size = 201475, upload-time = "2025-06-30T15:24:02.693Z" }, +] + [[package]] name = "comm" version = "0.2.2" @@ -368,7 +735,8 @@ source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", ] dependencies = [ { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, @@ -446,13 +814,20 @@ name = "contourpy" version = "1.3.2" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.12' and sys_platform == 'darwin'", - "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -614,6 +989,24 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190, upload-time = "2025-02-24T04:41:32.565Z" }, ] +[[package]] +name = "defusedxml" +version = "0.7.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520, upload-time = "2021-03-08T10:59:26.269Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604, upload-time = "2021-03-08T10:59:24.45Z" }, +] + +[[package]] +name = "distlib" +version = "0.3.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0d/dd/1bec4c5ddb504ca60fc29472f3d27e8d4da1257a854e1d96742f15c1d02d/distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403", size = 613923, upload-time = "2024-10-09T18:35:47.551Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/91/a1/cf2472db20f7ce4a6be1253a81cfdf85ad9c7885ffbed7047fb72c24cf87/distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87", size = 468973, upload-time = "2024-10-09T18:35:44.272Z" }, +] + [[package]] name = "exceptiongroup" version = "1.3.0" @@ -635,6 +1028,94 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa", size = 26702, upload-time = "2025-01-22T15:41:25.929Z" }, ] +[[package]] +name = "faith" +version = "0.0.1a0" +source = { editable = "." } +dependencies = [ + { name = "h5py" }, + { name = "hydra-core" }, + { name = "ipykernel" }, + { name = "ipywidgets" }, + { name = "jupyter" }, + { name = "lightning" }, + { name = "matplotlib", version = "3.9.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "matplotlib", version = "3.10.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "omegaconf" }, + { name = "pandas" }, + { name = "paramiko" }, + { name = "pyyaml" }, + { name = "ray", extra = ["data", "serve", "train", "tune"] }, + { name = "scikit-learn", version = "1.6.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "scikit-learn", version = "1.7.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "scipy", version = "1.13.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "scipy", version = "1.16.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "seaborn" }, + { name = "tables", version = "3.9.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "tables", version = "3.10.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "tables", version = "3.10.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "torch", version = "2.7.1", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version >= '3.10' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, + { name = "torch", version = "2.7.1+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64') or platform_machine == 'x86_64' or sys_platform != 'darwin'" }, + { name = "torchaudio" }, + { name = "torchmetrics" }, + { name = "torchvision", version = "0.22.1", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version >= '3.10' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin') or (platform_machine == 'aarch64' and sys_platform == 'linux')" }, + { name = "torchvision", version = "0.22.1+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (platform_machine == 'x86_64' and sys_platform == 'darwin') or (platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "tqdm" }, +] + +[package.metadata] +requires-dist = [ + { name = "h5py" }, + { name = "hydra-core" }, + { name = "ipykernel" }, + { name = "ipywidgets" }, + { name = "jupyter" }, + { name = "lightning" }, + { name = "matplotlib" }, + { name = "numpy" }, + { name = "omegaconf" }, + { name = "pandas" }, + { name = "paramiko" }, + { name = "pyyaml" }, + { name = "ray", extras = ["data", "train", "tune", "serve"] }, + { name = "scikit-learn" }, + { name = "scipy" }, + { name = "seaborn" }, + { name = "tables" }, + { name = "torch", index = "https://download.pytorch.org/whl/cpu" }, + { name = "torchaudio" }, + { name = "torchmetrics" }, + { name = "torchvision", index = "https://download.pytorch.org/whl/cpu" }, + { name = "tqdm" }, +] + +[[package]] +name = "fastapi" +version = "0.116.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pydantic" }, + { name = "starlette" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/78/d7/6c8b3bfe33eeffa208183ec037fee0cce9f7f024089ab1c5d12ef04bd27c/fastapi-0.116.1.tar.gz", hash = "sha256:ed52cbf946abfd70c5a0dccb24673f0670deeb517a88b3544d03c2a6bf283143", size = 296485, upload-time = "2025-07-11T16:22:32.057Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/47/d63c60f59a59467fda0f93f46335c9d18526d7071f025cb5b89d5353ea42/fastapi-0.116.1-py3-none-any.whl", hash = "sha256:c46ac7c312df840f0c9e220f7964bada936781bc4e2e6eb71f1c4d7553786565", size = 95631, upload-time = "2025-07-11T16:22:30.485Z" }, +] + +[[package]] +name = "fastjsonschema" +version = "2.21.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8b/50/4b769ce1ac4071a1ef6d86b1a3fb56cdc3a37615e8c5519e1af96cdac366/fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4", size = 373939, upload-time = "2024-12-02T10:55:15.133Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/90/2b/0817a2b257fe88725c25589d89aec060581aabf668707a8d03b2e9e0cb2a/fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667", size = 23924, upload-time = "2024-12-02T10:55:07.599Z" }, +] + [[package]] name = "filelock" version = "3.18.0" @@ -693,6 +1174,126 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d7/d4/1d85a1996b6188cd2713230e002d79a6f3a289bb17cef600cba385848b72/fonttools-4.58.5-py3-none-any.whl", hash = "sha256:e48a487ed24d9b611c5c4b25db1e50e69e9854ca2670e39a3486ffcd98863ec4", size = 1115318, upload-time = "2025-07-03T14:04:45.378Z" }, ] +[[package]] +name = "fqdn" +version = "1.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/30/3e/a80a8c077fd798951169626cde3e239adeba7dab75deb3555716415bd9b0/fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f", size = 6015, upload-time = "2021-03-11T07:16:29.08Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cf/58/8acf1b3e91c58313ce5cb67df61001fc9dcd21be4fadb76c1a2d540e09ed/fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014", size = 9121, upload-time = "2021-03-11T07:16:28.351Z" }, +] + +[[package]] +name = "frozenlist" +version = "1.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/79/b1/b64018016eeb087db503b038296fd782586432b9c077fc5c7839e9cb6ef6/frozenlist-1.7.0.tar.gz", hash = "sha256:2e310d81923c2437ea8670467121cc3e9b0f76d3043cc1d2331d56c7fb7a3a8f", size = 45078, upload-time = "2025-06-09T23:02:35.538Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/af/36/0da0a49409f6b47cc2d060dc8c9040b897b5902a8a4e37d9bc1deb11f680/frozenlist-1.7.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cc4df77d638aa2ed703b878dd093725b72a824c3c546c076e8fdf276f78ee84a", size = 81304, upload-time = "2025-06-09T22:59:46.226Z" }, + { url = "https://files.pythonhosted.org/packages/77/f0/77c11d13d39513b298e267b22eb6cb559c103d56f155aa9a49097221f0b6/frozenlist-1.7.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:716a9973a2cc963160394f701964fe25012600f3d311f60c790400b00e568b61", size = 47735, upload-time = "2025-06-09T22:59:48.133Z" }, + { url = "https://files.pythonhosted.org/packages/37/12/9d07fa18971a44150593de56b2f2947c46604819976784bcf6ea0d5db43b/frozenlist-1.7.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a0fd1bad056a3600047fb9462cff4c5322cebc59ebf5d0a3725e0ee78955001d", size = 46775, upload-time = "2025-06-09T22:59:49.564Z" }, + { url = "https://files.pythonhosted.org/packages/70/34/f73539227e06288fcd1f8a76853e755b2b48bca6747e99e283111c18bcd4/frozenlist-1.7.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3789ebc19cb811163e70fe2bd354cea097254ce6e707ae42e56f45e31e96cb8e", size = 224644, upload-time = "2025-06-09T22:59:51.35Z" }, + { url = "https://files.pythonhosted.org/packages/fb/68/c1d9c2f4a6e438e14613bad0f2973567586610cc22dcb1e1241da71de9d3/frozenlist-1.7.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:af369aa35ee34f132fcfad5be45fbfcde0e3a5f6a1ec0712857f286b7d20cca9", size = 222125, upload-time = "2025-06-09T22:59:52.884Z" }, + { url = "https://files.pythonhosted.org/packages/b9/d0/98e8f9a515228d708344d7c6986752be3e3192d1795f748c24bcf154ad99/frozenlist-1.7.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac64b6478722eeb7a3313d494f8342ef3478dff539d17002f849101b212ef97c", size = 233455, upload-time = "2025-06-09T22:59:54.74Z" }, + { url = "https://files.pythonhosted.org/packages/79/df/8a11bcec5600557f40338407d3e5bea80376ed1c01a6c0910fcfdc4b8993/frozenlist-1.7.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f89f65d85774f1797239693cef07ad4c97fdd0639544bad9ac4b869782eb1981", size = 227339, upload-time = "2025-06-09T22:59:56.187Z" }, + { url = "https://files.pythonhosted.org/packages/50/82/41cb97d9c9a5ff94438c63cc343eb7980dac4187eb625a51bdfdb7707314/frozenlist-1.7.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1073557c941395fdfcfac13eb2456cb8aad89f9de27bae29fabca8e563b12615", size = 212969, upload-time = "2025-06-09T22:59:57.604Z" }, + { url = "https://files.pythonhosted.org/packages/13/47/f9179ee5ee4f55629e4f28c660b3fdf2775c8bfde8f9c53f2de2d93f52a9/frozenlist-1.7.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ed8d2fa095aae4bdc7fdd80351009a48d286635edffee66bf865e37a9125c50", size = 222862, upload-time = "2025-06-09T22:59:59.498Z" }, + { url = "https://files.pythonhosted.org/packages/1a/52/df81e41ec6b953902c8b7e3a83bee48b195cb0e5ec2eabae5d8330c78038/frozenlist-1.7.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:24c34bea555fe42d9f928ba0a740c553088500377448febecaa82cc3e88aa1fa", size = 222492, upload-time = "2025-06-09T23:00:01.026Z" }, + { url = "https://files.pythonhosted.org/packages/84/17/30d6ea87fa95a9408245a948604b82c1a4b8b3e153cea596421a2aef2754/frozenlist-1.7.0-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:69cac419ac6a6baad202c85aaf467b65ac860ac2e7f2ac1686dc40dbb52f6577", size = 238250, upload-time = "2025-06-09T23:00:03.401Z" }, + { url = "https://files.pythonhosted.org/packages/8f/00/ecbeb51669e3c3df76cf2ddd66ae3e48345ec213a55e3887d216eb4fbab3/frozenlist-1.7.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:960d67d0611f4c87da7e2ae2eacf7ea81a5be967861e0c63cf205215afbfac59", size = 218720, upload-time = "2025-06-09T23:00:05.282Z" }, + { url = "https://files.pythonhosted.org/packages/1a/c0/c224ce0e0eb31cc57f67742071bb470ba8246623c1823a7530be0e76164c/frozenlist-1.7.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:41be2964bd4b15bf575e5daee5a5ce7ed3115320fb3c2b71fca05582ffa4dc9e", size = 232585, upload-time = "2025-06-09T23:00:07.962Z" }, + { url = "https://files.pythonhosted.org/packages/55/3c/34cb694abf532f31f365106deebdeac9e45c19304d83cf7d51ebbb4ca4d1/frozenlist-1.7.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:46d84d49e00c9429238a7ce02dc0be8f6d7cd0cd405abd1bebdc991bf27c15bd", size = 234248, upload-time = "2025-06-09T23:00:09.428Z" }, + { url = "https://files.pythonhosted.org/packages/98/c0/2052d8b6cecda2e70bd81299e3512fa332abb6dcd2969b9c80dfcdddbf75/frozenlist-1.7.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:15900082e886edb37480335d9d518cec978afc69ccbc30bd18610b7c1b22a718", size = 221621, upload-time = "2025-06-09T23:00:11.32Z" }, + { url = "https://files.pythonhosted.org/packages/c5/bf/7dcebae315436903b1d98ffb791a09d674c88480c158aa171958a3ac07f0/frozenlist-1.7.0-cp310-cp310-win32.whl", hash = "sha256:400ddd24ab4e55014bba442d917203c73b2846391dd42ca5e38ff52bb18c3c5e", size = 39578, upload-time = "2025-06-09T23:00:13.526Z" }, + { url = "https://files.pythonhosted.org/packages/8f/5f/f69818f017fa9a3d24d1ae39763e29b7f60a59e46d5f91b9c6b21622f4cd/frozenlist-1.7.0-cp310-cp310-win_amd64.whl", hash = "sha256:6eb93efb8101ef39d32d50bce242c84bcbddb4f7e9febfa7b524532a239b4464", size = 43830, upload-time = "2025-06-09T23:00:14.98Z" }, + { url = "https://files.pythonhosted.org/packages/34/7e/803dde33760128acd393a27eb002f2020ddb8d99d30a44bfbaab31c5f08a/frozenlist-1.7.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:aa51e147a66b2d74de1e6e2cf5921890de6b0f4820b257465101d7f37b49fb5a", size = 82251, upload-time = "2025-06-09T23:00:16.279Z" }, + { url = "https://files.pythonhosted.org/packages/75/a9/9c2c5760b6ba45eae11334db454c189d43d34a4c0b489feb2175e5e64277/frozenlist-1.7.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9b35db7ce1cd71d36ba24f80f0c9e7cff73a28d7a74e91fe83e23d27c7828750", size = 48183, upload-time = "2025-06-09T23:00:17.698Z" }, + { url = "https://files.pythonhosted.org/packages/47/be/4038e2d869f8a2da165f35a6befb9158c259819be22eeaf9c9a8f6a87771/frozenlist-1.7.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:34a69a85e34ff37791e94542065c8416c1afbf820b68f720452f636d5fb990cd", size = 47107, upload-time = "2025-06-09T23:00:18.952Z" }, + { url = "https://files.pythonhosted.org/packages/79/26/85314b8a83187c76a37183ceed886381a5f992975786f883472fcb6dc5f2/frozenlist-1.7.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a646531fa8d82c87fe4bb2e596f23173caec9185bfbca5d583b4ccfb95183e2", size = 237333, upload-time = "2025-06-09T23:00:20.275Z" }, + { url = "https://files.pythonhosted.org/packages/1f/fd/e5b64f7d2c92a41639ffb2ad44a6a82f347787abc0c7df5f49057cf11770/frozenlist-1.7.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:79b2ffbba483f4ed36a0f236ccb85fbb16e670c9238313709638167670ba235f", size = 231724, upload-time = "2025-06-09T23:00:21.705Z" }, + { url = "https://files.pythonhosted.org/packages/20/fb/03395c0a43a5976af4bf7534759d214405fbbb4c114683f434dfdd3128ef/frozenlist-1.7.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a26f205c9ca5829cbf82bb2a84b5c36f7184c4316617d7ef1b271a56720d6b30", size = 245842, upload-time = "2025-06-09T23:00:23.148Z" }, + { url = "https://files.pythonhosted.org/packages/d0/15/c01c8e1dffdac5d9803507d824f27aed2ba76b6ed0026fab4d9866e82f1f/frozenlist-1.7.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bcacfad3185a623fa11ea0e0634aac7b691aa925d50a440f39b458e41c561d98", size = 239767, upload-time = "2025-06-09T23:00:25.103Z" }, + { url = "https://files.pythonhosted.org/packages/14/99/3f4c6fe882c1f5514b6848aa0a69b20cb5e5d8e8f51a339d48c0e9305ed0/frozenlist-1.7.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:72c1b0fe8fe451b34f12dce46445ddf14bd2a5bcad7e324987194dc8e3a74c86", size = 224130, upload-time = "2025-06-09T23:00:27.061Z" }, + { url = "https://files.pythonhosted.org/packages/4d/83/220a374bd7b2aeba9d0725130665afe11de347d95c3620b9b82cc2fcab97/frozenlist-1.7.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61d1a5baeaac6c0798ff6edfaeaa00e0e412d49946c53fae8d4b8e8b3566c4ae", size = 235301, upload-time = "2025-06-09T23:00:29.02Z" }, + { url = "https://files.pythonhosted.org/packages/03/3c/3e3390d75334a063181625343e8daab61b77e1b8214802cc4e8a1bb678fc/frozenlist-1.7.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7edf5c043c062462f09b6820de9854bf28cc6cc5b6714b383149745e287181a8", size = 234606, upload-time = "2025-06-09T23:00:30.514Z" }, + { url = "https://files.pythonhosted.org/packages/23/1e/58232c19608b7a549d72d9903005e2d82488f12554a32de2d5fb59b9b1ba/frozenlist-1.7.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:d50ac7627b3a1bd2dcef6f9da89a772694ec04d9a61b66cf87f7d9446b4a0c31", size = 248372, upload-time = "2025-06-09T23:00:31.966Z" }, + { url = "https://files.pythonhosted.org/packages/c0/a4/e4a567e01702a88a74ce8a324691e62a629bf47d4f8607f24bf1c7216e7f/frozenlist-1.7.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ce48b2fece5aeb45265bb7a58259f45027db0abff478e3077e12b05b17fb9da7", size = 229860, upload-time = "2025-06-09T23:00:33.375Z" }, + { url = "https://files.pythonhosted.org/packages/73/a6/63b3374f7d22268b41a9db73d68a8233afa30ed164c46107b33c4d18ecdd/frozenlist-1.7.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:fe2365ae915a1fafd982c146754e1de6ab3478def8a59c86e1f7242d794f97d5", size = 245893, upload-time = "2025-06-09T23:00:35.002Z" }, + { url = "https://files.pythonhosted.org/packages/6d/eb/d18b3f6e64799a79673c4ba0b45e4cfbe49c240edfd03a68be20002eaeaa/frozenlist-1.7.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:45a6f2fdbd10e074e8814eb98b05292f27bad7d1883afbe009d96abdcf3bc898", size = 246323, upload-time = "2025-06-09T23:00:36.468Z" }, + { url = "https://files.pythonhosted.org/packages/5a/f5/720f3812e3d06cd89a1d5db9ff6450088b8f5c449dae8ffb2971a44da506/frozenlist-1.7.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:21884e23cffabb157a9dd7e353779077bf5b8f9a58e9b262c6caad2ef5f80a56", size = 233149, upload-time = "2025-06-09T23:00:37.963Z" }, + { url = "https://files.pythonhosted.org/packages/69/68/03efbf545e217d5db8446acfd4c447c15b7c8cf4dbd4a58403111df9322d/frozenlist-1.7.0-cp311-cp311-win32.whl", hash = "sha256:284d233a8953d7b24f9159b8a3496fc1ddc00f4db99c324bd5fb5f22d8698ea7", size = 39565, upload-time = "2025-06-09T23:00:39.753Z" }, + { url = "https://files.pythonhosted.org/packages/58/17/fe61124c5c333ae87f09bb67186d65038834a47d974fc10a5fadb4cc5ae1/frozenlist-1.7.0-cp311-cp311-win_amd64.whl", hash = "sha256:387cbfdcde2f2353f19c2f66bbb52406d06ed77519ac7ee21be0232147c2592d", size = 44019, upload-time = "2025-06-09T23:00:40.988Z" }, + { url = "https://files.pythonhosted.org/packages/ef/a2/c8131383f1e66adad5f6ecfcce383d584ca94055a34d683bbb24ac5f2f1c/frozenlist-1.7.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:3dbf9952c4bb0e90e98aec1bd992b3318685005702656bc6f67c1a32b76787f2", size = 81424, upload-time = "2025-06-09T23:00:42.24Z" }, + { url = "https://files.pythonhosted.org/packages/4c/9d/02754159955088cb52567337d1113f945b9e444c4960771ea90eb73de8db/frozenlist-1.7.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:1f5906d3359300b8a9bb194239491122e6cf1444c2efb88865426f170c262cdb", size = 47952, upload-time = "2025-06-09T23:00:43.481Z" }, + { url = "https://files.pythonhosted.org/packages/01/7a/0046ef1bd6699b40acd2067ed6d6670b4db2f425c56980fa21c982c2a9db/frozenlist-1.7.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3dabd5a8f84573c8d10d8859a50ea2dec01eea372031929871368c09fa103478", size = 46688, upload-time = "2025-06-09T23:00:44.793Z" }, + { url = "https://files.pythonhosted.org/packages/d6/a2/a910bafe29c86997363fb4c02069df4ff0b5bc39d33c5198b4e9dd42d8f8/frozenlist-1.7.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa57daa5917f1738064f302bf2626281a1cb01920c32f711fbc7bc36111058a8", size = 243084, upload-time = "2025-06-09T23:00:46.125Z" }, + { url = "https://files.pythonhosted.org/packages/64/3e/5036af9d5031374c64c387469bfcc3af537fc0f5b1187d83a1cf6fab1639/frozenlist-1.7.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c193dda2b6d49f4c4398962810fa7d7c78f032bf45572b3e04dd5249dff27e08", size = 233524, upload-time = "2025-06-09T23:00:47.73Z" }, + { url = "https://files.pythonhosted.org/packages/06/39/6a17b7c107a2887e781a48ecf20ad20f1c39d94b2a548c83615b5b879f28/frozenlist-1.7.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bfe2b675cf0aaa6d61bf8fbffd3c274b3c9b7b1623beb3809df8a81399a4a9c4", size = 248493, upload-time = "2025-06-09T23:00:49.742Z" }, + { url = "https://files.pythonhosted.org/packages/be/00/711d1337c7327d88c44d91dd0f556a1c47fb99afc060ae0ef66b4d24793d/frozenlist-1.7.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8fc5d5cda37f62b262405cf9652cf0856839c4be8ee41be0afe8858f17f4c94b", size = 244116, upload-time = "2025-06-09T23:00:51.352Z" }, + { url = "https://files.pythonhosted.org/packages/24/fe/74e6ec0639c115df13d5850e75722750adabdc7de24e37e05a40527ca539/frozenlist-1.7.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b0d5ce521d1dd7d620198829b87ea002956e4319002ef0bc8d3e6d045cb4646e", size = 224557, upload-time = "2025-06-09T23:00:52.855Z" }, + { url = "https://files.pythonhosted.org/packages/8d/db/48421f62a6f77c553575201e89048e97198046b793f4a089c79a6e3268bd/frozenlist-1.7.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:488d0a7d6a0008ca0db273c542098a0fa9e7dfaa7e57f70acef43f32b3f69dca", size = 241820, upload-time = "2025-06-09T23:00:54.43Z" }, + { url = "https://files.pythonhosted.org/packages/1d/fa/cb4a76bea23047c8462976ea7b7a2bf53997a0ca171302deae9d6dd12096/frozenlist-1.7.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:15a7eaba63983d22c54d255b854e8108e7e5f3e89f647fc854bd77a237e767df", size = 236542, upload-time = "2025-06-09T23:00:56.409Z" }, + { url = "https://files.pythonhosted.org/packages/5d/32/476a4b5cfaa0ec94d3f808f193301debff2ea42288a099afe60757ef6282/frozenlist-1.7.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:1eaa7e9c6d15df825bf255649e05bd8a74b04a4d2baa1ae46d9c2d00b2ca2cb5", size = 249350, upload-time = "2025-06-09T23:00:58.468Z" }, + { url = "https://files.pythonhosted.org/packages/8d/ba/9a28042f84a6bf8ea5dbc81cfff8eaef18d78b2a1ad9d51c7bc5b029ad16/frozenlist-1.7.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e4389e06714cfa9d47ab87f784a7c5be91d3934cd6e9a7b85beef808297cc025", size = 225093, upload-time = "2025-06-09T23:01:00.015Z" }, + { url = "https://files.pythonhosted.org/packages/bc/29/3a32959e68f9cf000b04e79ba574527c17e8842e38c91d68214a37455786/frozenlist-1.7.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:73bd45e1488c40b63fe5a7df892baf9e2a4d4bb6409a2b3b78ac1c6236178e01", size = 245482, upload-time = "2025-06-09T23:01:01.474Z" }, + { url = "https://files.pythonhosted.org/packages/80/e8/edf2f9e00da553f07f5fa165325cfc302dead715cab6ac8336a5f3d0adc2/frozenlist-1.7.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:99886d98e1643269760e5fe0df31e5ae7050788dd288947f7f007209b8c33f08", size = 249590, upload-time = "2025-06-09T23:01:02.961Z" }, + { url = "https://files.pythonhosted.org/packages/1c/80/9a0eb48b944050f94cc51ee1c413eb14a39543cc4f760ed12657a5a3c45a/frozenlist-1.7.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:290a172aae5a4c278c6da8a96222e6337744cd9c77313efe33d5670b9f65fc43", size = 237785, upload-time = "2025-06-09T23:01:05.095Z" }, + { url = "https://files.pythonhosted.org/packages/f3/74/87601e0fb0369b7a2baf404ea921769c53b7ae00dee7dcfe5162c8c6dbf0/frozenlist-1.7.0-cp312-cp312-win32.whl", hash = "sha256:426c7bc70e07cfebc178bc4c2bf2d861d720c4fff172181eeb4a4c41d4ca2ad3", size = 39487, upload-time = "2025-06-09T23:01:06.54Z" }, + { url = "https://files.pythonhosted.org/packages/0b/15/c026e9a9fc17585a9d461f65d8593d281fedf55fbf7eb53f16c6df2392f9/frozenlist-1.7.0-cp312-cp312-win_amd64.whl", hash = "sha256:563b72efe5da92e02eb68c59cb37205457c977aa7a449ed1b37e6939e5c47c6a", size = 43874, upload-time = "2025-06-09T23:01:07.752Z" }, + { url = "https://files.pythonhosted.org/packages/24/90/6b2cebdabdbd50367273c20ff6b57a3dfa89bd0762de02c3a1eb42cb6462/frozenlist-1.7.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ee80eeda5e2a4e660651370ebffd1286542b67e268aa1ac8d6dbe973120ef7ee", size = 79791, upload-time = "2025-06-09T23:01:09.368Z" }, + { url = "https://files.pythonhosted.org/packages/83/2e/5b70b6a3325363293fe5fc3ae74cdcbc3e996c2a11dde2fd9f1fb0776d19/frozenlist-1.7.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d1a81c85417b914139e3a9b995d4a1c84559afc839a93cf2cb7f15e6e5f6ed2d", size = 47165, upload-time = "2025-06-09T23:01:10.653Z" }, + { url = "https://files.pythonhosted.org/packages/f4/25/a0895c99270ca6966110f4ad98e87e5662eab416a17e7fd53c364bf8b954/frozenlist-1.7.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cbb65198a9132ebc334f237d7b0df163e4de83fb4f2bdfe46c1e654bdb0c5d43", size = 45881, upload-time = "2025-06-09T23:01:12.296Z" }, + { url = "https://files.pythonhosted.org/packages/19/7c/71bb0bbe0832793c601fff68cd0cf6143753d0c667f9aec93d3c323f4b55/frozenlist-1.7.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dab46c723eeb2c255a64f9dc05b8dd601fde66d6b19cdb82b2e09cc6ff8d8b5d", size = 232409, upload-time = "2025-06-09T23:01:13.641Z" }, + { url = "https://files.pythonhosted.org/packages/c0/45/ed2798718910fe6eb3ba574082aaceff4528e6323f9a8570be0f7028d8e9/frozenlist-1.7.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:6aeac207a759d0dedd2e40745575ae32ab30926ff4fa49b1635def65806fddee", size = 225132, upload-time = "2025-06-09T23:01:15.264Z" }, + { url = "https://files.pythonhosted.org/packages/ba/e2/8417ae0f8eacb1d071d4950f32f229aa6bf68ab69aab797b72a07ea68d4f/frozenlist-1.7.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bd8c4e58ad14b4fa7802b8be49d47993182fdd4023393899632c88fd8cd994eb", size = 237638, upload-time = "2025-06-09T23:01:16.752Z" }, + { url = "https://files.pythonhosted.org/packages/f8/b7/2ace5450ce85f2af05a871b8c8719b341294775a0a6c5585d5e6170f2ce7/frozenlist-1.7.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:04fb24d104f425da3540ed83cbfc31388a586a7696142004c577fa61c6298c3f", size = 233539, upload-time = "2025-06-09T23:01:18.202Z" }, + { url = "https://files.pythonhosted.org/packages/46/b9/6989292c5539553dba63f3c83dc4598186ab2888f67c0dc1d917e6887db6/frozenlist-1.7.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6a5c505156368e4ea6b53b5ac23c92d7edc864537ff911d2fb24c140bb175e60", size = 215646, upload-time = "2025-06-09T23:01:19.649Z" }, + { url = "https://files.pythonhosted.org/packages/72/31/bc8c5c99c7818293458fe745dab4fd5730ff49697ccc82b554eb69f16a24/frozenlist-1.7.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8bd7eb96a675f18aa5c553eb7ddc24a43c8c18f22e1f9925528128c052cdbe00", size = 232233, upload-time = "2025-06-09T23:01:21.175Z" }, + { url = "https://files.pythonhosted.org/packages/59/52/460db4d7ba0811b9ccb85af996019f5d70831f2f5f255f7cc61f86199795/frozenlist-1.7.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:05579bf020096fe05a764f1f84cd104a12f78eaab68842d036772dc6d4870b4b", size = 227996, upload-time = "2025-06-09T23:01:23.098Z" }, + { url = "https://files.pythonhosted.org/packages/ba/c9/f4b39e904c03927b7ecf891804fd3b4df3db29b9e487c6418e37988d6e9d/frozenlist-1.7.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:376b6222d114e97eeec13d46c486facd41d4f43bab626b7c3f6a8b4e81a5192c", size = 242280, upload-time = "2025-06-09T23:01:24.808Z" }, + { url = "https://files.pythonhosted.org/packages/b8/33/3f8d6ced42f162d743e3517781566b8481322be321b486d9d262adf70bfb/frozenlist-1.7.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:0aa7e176ebe115379b5b1c95b4096fb1c17cce0847402e227e712c27bdb5a949", size = 217717, upload-time = "2025-06-09T23:01:26.28Z" }, + { url = "https://files.pythonhosted.org/packages/3e/e8/ad683e75da6ccef50d0ab0c2b2324b32f84fc88ceee778ed79b8e2d2fe2e/frozenlist-1.7.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:3fbba20e662b9c2130dc771e332a99eff5da078b2b2648153a40669a6d0e36ca", size = 236644, upload-time = "2025-06-09T23:01:27.887Z" }, + { url = "https://files.pythonhosted.org/packages/b2/14/8d19ccdd3799310722195a72ac94ddc677541fb4bef4091d8e7775752360/frozenlist-1.7.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:f3f4410a0a601d349dd406b5713fec59b4cee7e71678d5b17edda7f4655a940b", size = 238879, upload-time = "2025-06-09T23:01:29.524Z" }, + { url = "https://files.pythonhosted.org/packages/ce/13/c12bf657494c2fd1079a48b2db49fa4196325909249a52d8f09bc9123fd7/frozenlist-1.7.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e2cdfaaec6a2f9327bf43c933c0319a7c429058e8537c508964a133dffee412e", size = 232502, upload-time = "2025-06-09T23:01:31.287Z" }, + { url = "https://files.pythonhosted.org/packages/d7/8b/e7f9dfde869825489382bc0d512c15e96d3964180c9499efcec72e85db7e/frozenlist-1.7.0-cp313-cp313-win32.whl", hash = "sha256:5fc4df05a6591c7768459caba1b342d9ec23fa16195e744939ba5914596ae3e1", size = 39169, upload-time = "2025-06-09T23:01:35.503Z" }, + { url = "https://files.pythonhosted.org/packages/35/89/a487a98d94205d85745080a37860ff5744b9820a2c9acbcdd9440bfddf98/frozenlist-1.7.0-cp313-cp313-win_amd64.whl", hash = "sha256:52109052b9791a3e6b5d1b65f4b909703984b770694d3eb64fad124c835d7cba", size = 43219, upload-time = "2025-06-09T23:01:36.784Z" }, + { url = "https://files.pythonhosted.org/packages/56/d5/5c4cf2319a49eddd9dd7145e66c4866bdc6f3dbc67ca3d59685149c11e0d/frozenlist-1.7.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:a6f86e4193bb0e235ef6ce3dde5cbabed887e0b11f516ce8a0f4d3b33078ec2d", size = 84345, upload-time = "2025-06-09T23:01:38.295Z" }, + { url = "https://files.pythonhosted.org/packages/a4/7d/ec2c1e1dc16b85bc9d526009961953df9cec8481b6886debb36ec9107799/frozenlist-1.7.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:82d664628865abeb32d90ae497fb93df398a69bb3434463d172b80fc25b0dd7d", size = 48880, upload-time = "2025-06-09T23:01:39.887Z" }, + { url = "https://files.pythonhosted.org/packages/69/86/f9596807b03de126e11e7d42ac91e3d0b19a6599c714a1989a4e85eeefc4/frozenlist-1.7.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:912a7e8375a1c9a68325a902f3953191b7b292aa3c3fb0d71a216221deca460b", size = 48498, upload-time = "2025-06-09T23:01:41.318Z" }, + { url = "https://files.pythonhosted.org/packages/5e/cb/df6de220f5036001005f2d726b789b2c0b65f2363b104bbc16f5be8084f8/frozenlist-1.7.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9537c2777167488d539bc5de2ad262efc44388230e5118868e172dd4a552b146", size = 292296, upload-time = "2025-06-09T23:01:42.685Z" }, + { url = "https://files.pythonhosted.org/packages/83/1f/de84c642f17c8f851a2905cee2dae401e5e0daca9b5ef121e120e19aa825/frozenlist-1.7.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:f34560fb1b4c3e30ba35fa9a13894ba39e5acfc5f60f57d8accde65f46cc5e74", size = 273103, upload-time = "2025-06-09T23:01:44.166Z" }, + { url = "https://files.pythonhosted.org/packages/88/3c/c840bfa474ba3fa13c772b93070893c6e9d5c0350885760376cbe3b6c1b3/frozenlist-1.7.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:acd03d224b0175f5a850edc104ac19040d35419eddad04e7cf2d5986d98427f1", size = 292869, upload-time = "2025-06-09T23:01:45.681Z" }, + { url = "https://files.pythonhosted.org/packages/a6/1c/3efa6e7d5a39a1d5ef0abeb51c48fb657765794a46cf124e5aca2c7a592c/frozenlist-1.7.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f2038310bc582f3d6a09b3816ab01737d60bf7b1ec70f5356b09e84fb7408ab1", size = 291467, upload-time = "2025-06-09T23:01:47.234Z" }, + { url = "https://files.pythonhosted.org/packages/4f/00/d5c5e09d4922c395e2f2f6b79b9a20dab4b67daaf78ab92e7729341f61f6/frozenlist-1.7.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b8c05e4c8e5f36e5e088caa1bf78a687528f83c043706640a92cb76cd6999384", size = 266028, upload-time = "2025-06-09T23:01:48.819Z" }, + { url = "https://files.pythonhosted.org/packages/4e/27/72765be905619dfde25a7f33813ac0341eb6b076abede17a2e3fbfade0cb/frozenlist-1.7.0-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:765bb588c86e47d0b68f23c1bee323d4b703218037765dcf3f25c838c6fecceb", size = 284294, upload-time = "2025-06-09T23:01:50.394Z" }, + { url = "https://files.pythonhosted.org/packages/88/67/c94103a23001b17808eb7dd1200c156bb69fb68e63fcf0693dde4cd6228c/frozenlist-1.7.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:32dc2e08c67d86d0969714dd484fd60ff08ff81d1a1e40a77dd34a387e6ebc0c", size = 281898, upload-time = "2025-06-09T23:01:52.234Z" }, + { url = "https://files.pythonhosted.org/packages/42/34/a3e2c00c00f9e2a9db5653bca3fec306349e71aff14ae45ecc6d0951dd24/frozenlist-1.7.0-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:c0303e597eb5a5321b4de9c68e9845ac8f290d2ab3f3e2c864437d3c5a30cd65", size = 290465, upload-time = "2025-06-09T23:01:53.788Z" }, + { url = "https://files.pythonhosted.org/packages/bb/73/f89b7fbce8b0b0c095d82b008afd0590f71ccb3dee6eee41791cf8cd25fd/frozenlist-1.7.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:a47f2abb4e29b3a8d0b530f7c3598badc6b134562b1a5caee867f7c62fee51e3", size = 266385, upload-time = "2025-06-09T23:01:55.769Z" }, + { url = "https://files.pythonhosted.org/packages/cd/45/e365fdb554159462ca12df54bc59bfa7a9a273ecc21e99e72e597564d1ae/frozenlist-1.7.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:3d688126c242a6fabbd92e02633414d40f50bb6002fa4cf995a1d18051525657", size = 288771, upload-time = "2025-06-09T23:01:57.4Z" }, + { url = "https://files.pythonhosted.org/packages/00/11/47b6117002a0e904f004d70ec5194fe9144f117c33c851e3d51c765962d0/frozenlist-1.7.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:4e7e9652b3d367c7bd449a727dc79d5043f48b88d0cbfd4f9f1060cf2b414104", size = 288206, upload-time = "2025-06-09T23:01:58.936Z" }, + { url = "https://files.pythonhosted.org/packages/40/37/5f9f3c3fd7f7746082ec67bcdc204db72dad081f4f83a503d33220a92973/frozenlist-1.7.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:1a85e345b4c43db8b842cab1feb41be5cc0b10a1830e6295b69d7310f99becaf", size = 282620, upload-time = "2025-06-09T23:02:00.493Z" }, + { url = "https://files.pythonhosted.org/packages/0b/31/8fbc5af2d183bff20f21aa743b4088eac4445d2bb1cdece449ae80e4e2d1/frozenlist-1.7.0-cp313-cp313t-win32.whl", hash = "sha256:3a14027124ddb70dfcee5148979998066897e79f89f64b13328595c4bdf77c81", size = 43059, upload-time = "2025-06-09T23:02:02.072Z" }, + { url = "https://files.pythonhosted.org/packages/bb/ed/41956f52105b8dbc26e457c5705340c67c8cc2b79f394b79bffc09d0e938/frozenlist-1.7.0-cp313-cp313t-win_amd64.whl", hash = "sha256:3bf8010d71d4507775f658e9823210b7427be36625b387221642725b515dcf3e", size = 47516, upload-time = "2025-06-09T23:02:03.779Z" }, + { url = "https://files.pythonhosted.org/packages/dd/b1/ee59496f51cd244039330015d60f13ce5a54a0f2bd8d79e4a4a375ab7469/frozenlist-1.7.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:cea3dbd15aea1341ea2de490574a4a37ca080b2ae24e4b4f4b51b9057b4c3630", size = 82434, upload-time = "2025-06-09T23:02:05.195Z" }, + { url = "https://files.pythonhosted.org/packages/75/e1/d518391ce36a6279b3fa5bc14327dde80bcb646bb50d059c6ca0756b8d05/frozenlist-1.7.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7d536ee086b23fecc36c2073c371572374ff50ef4db515e4e503925361c24f71", size = 48232, upload-time = "2025-06-09T23:02:07.728Z" }, + { url = "https://files.pythonhosted.org/packages/b7/8d/a0d04f28b6e821a9685c22e67b5fb798a5a7b68752f104bfbc2dccf080c4/frozenlist-1.7.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:dfcebf56f703cb2e346315431699f00db126d158455e513bd14089d992101e44", size = 47186, upload-time = "2025-06-09T23:02:09.243Z" }, + { url = "https://files.pythonhosted.org/packages/93/3a/a5334c0535c8b7c78eeabda1579179e44fe3d644e07118e59a2276dedaf1/frozenlist-1.7.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:974c5336e61d6e7eb1ea5b929cb645e882aadab0095c5a6974a111e6479f8878", size = 226617, upload-time = "2025-06-09T23:02:10.949Z" }, + { url = "https://files.pythonhosted.org/packages/0a/67/8258d971f519dc3f278c55069a775096cda6610a267b53f6248152b72b2f/frozenlist-1.7.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c70db4a0ab5ab20878432c40563573229a7ed9241506181bba12f6b7d0dc41cb", size = 224179, upload-time = "2025-06-09T23:02:12.603Z" }, + { url = "https://files.pythonhosted.org/packages/fc/89/8225905bf889b97c6d935dd3aeb45668461e59d415cb019619383a8a7c3b/frozenlist-1.7.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1137b78384eebaf70560a36b7b229f752fb64d463d38d1304939984d5cb887b6", size = 235783, upload-time = "2025-06-09T23:02:14.678Z" }, + { url = "https://files.pythonhosted.org/packages/54/6e/ef52375aa93d4bc510d061df06205fa6dcfd94cd631dd22956b09128f0d4/frozenlist-1.7.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e793a9f01b3e8b5c0bc646fb59140ce0efcc580d22a3468d70766091beb81b35", size = 229210, upload-time = "2025-06-09T23:02:16.313Z" }, + { url = "https://files.pythonhosted.org/packages/ee/55/62c87d1a6547bfbcd645df10432c129100c5bd0fd92a384de6e3378b07c1/frozenlist-1.7.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:74739ba8e4e38221d2c5c03d90a7e542cb8ad681915f4ca8f68d04f810ee0a87", size = 215994, upload-time = "2025-06-09T23:02:17.9Z" }, + { url = "https://files.pythonhosted.org/packages/45/d2/263fea1f658b8ad648c7d94d18a87bca7e8c67bd6a1bbf5445b1bd5b158c/frozenlist-1.7.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e63344c4e929b1a01e29bc184bbb5fd82954869033765bfe8d65d09e336a677", size = 225122, upload-time = "2025-06-09T23:02:19.479Z" }, + { url = "https://files.pythonhosted.org/packages/7b/22/7145e35d12fb368d92124f679bea87309495e2e9ddf14c6533990cb69218/frozenlist-1.7.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2ea2a7369eb76de2217a842f22087913cdf75f63cf1307b9024ab82dfb525938", size = 224019, upload-time = "2025-06-09T23:02:20.969Z" }, + { url = "https://files.pythonhosted.org/packages/44/1e/7dae8c54301beb87bcafc6144b9a103bfd2c8f38078c7902984c9a0c4e5b/frozenlist-1.7.0-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:836b42f472a0e006e02499cef9352ce8097f33df43baaba3e0a28a964c26c7d2", size = 239925, upload-time = "2025-06-09T23:02:22.466Z" }, + { url = "https://files.pythonhosted.org/packages/4b/1e/99c93e54aa382e949a98976a73b9b20c3aae6d9d893f31bbe4991f64e3a8/frozenlist-1.7.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:e22b9a99741294b2571667c07d9f8cceec07cb92aae5ccda39ea1b6052ed4319", size = 220881, upload-time = "2025-06-09T23:02:24.521Z" }, + { url = "https://files.pythonhosted.org/packages/5e/9c/ca5105fa7fb5abdfa8837581be790447ae051da75d32f25c8f81082ffc45/frozenlist-1.7.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:9a19e85cc503d958abe5218953df722748d87172f71b73cf3c9257a91b999890", size = 234046, upload-time = "2025-06-09T23:02:26.206Z" }, + { url = "https://files.pythonhosted.org/packages/8d/4d/e99014756093b4ddbb67fb8f0df11fe7a415760d69ace98e2ac6d5d43402/frozenlist-1.7.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:f22dac33bb3ee8fe3e013aa7b91dc12f60d61d05b7fe32191ffa84c3aafe77bd", size = 235756, upload-time = "2025-06-09T23:02:27.79Z" }, + { url = "https://files.pythonhosted.org/packages/8b/72/a19a40bcdaa28a51add2aaa3a1a294ec357f36f27bd836a012e070c5e8a5/frozenlist-1.7.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:9ccec739a99e4ccf664ea0775149f2749b8a6418eb5b8384b4dc0a7d15d304cb", size = 222894, upload-time = "2025-06-09T23:02:29.848Z" }, + { url = "https://files.pythonhosted.org/packages/08/49/0042469993e023a758af81db68c76907cd29e847d772334d4d201cbe9a42/frozenlist-1.7.0-cp39-cp39-win32.whl", hash = "sha256:b3950f11058310008a87757f3eee16a8e1ca97979833239439586857bc25482e", size = 39848, upload-time = "2025-06-09T23:02:31.413Z" }, + { url = "https://files.pythonhosted.org/packages/5a/45/827d86ee475c877f5f766fbc23fb6acb6fada9e52f1c9720e2ba3eae32da/frozenlist-1.7.0-cp39-cp39-win_amd64.whl", hash = "sha256:43a82fce6769c70f2f5a06248b614a7d268080a9d20f7457ef10ecee5af82b63", size = 44102, upload-time = "2025-06-09T23:02:32.808Z" }, + { url = "https://files.pythonhosted.org/packages/ee/45/b82e3c16be2182bff01179db177fe144d58b5dc787a7d4492c6ed8b9317f/frozenlist-1.7.0-py3-none-any.whl", hash = "sha256:9a5af342e34f7e97caf8c995864c7a396418ae2859cc6fdf1b1073020d516a7e", size = 13106, upload-time = "2025-06-09T23:02:34.204Z" }, +] + [[package]] name = "fsspec" version = "2025.5.1" @@ -702,52 +1303,118 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/bb/61/78c7b3851add1481b048b5fdc29067397a1784e2910592bc81bb3f608635/fsspec-2025.5.1-py3-none-any.whl", hash = "sha256:24d3a2e663d5fc735ab256263c4075f374a174c3410c0b25e5bd1970bceaa462", size = 199052, upload-time = "2025-05-24T12:03:21.66Z" }, ] +[package.optional-dependencies] +http = [ + { name = "aiohttp" }, +] + [[package]] -name = "fusionaihub" -version = "0.0.1" -source = { editable = "." } +name = "google-api-core" +version = "2.25.1" +source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "h5py" }, - { name = "ipykernel" }, - { name = "ipywidgets" }, - { name = "matplotlib", version = "3.9.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "matplotlib", version = "3.10.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, - { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, - { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, - { name = "opencv-python" }, - { name = "pandas" }, - { name = "paramiko" }, - { name = "pyyaml" }, - { name = "scikit-learn", version = "1.6.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "scikit-learn", version = "1.7.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, - { name = "scipy", version = "1.13.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, - { name = "scipy", version = "1.16.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, - { name = "tables", version = "3.9.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "tables", version = "3.10.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, - { name = "tables", version = "3.10.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, - { name = "torch", version = "2.7.1", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version >= '3.10' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, - { name = "torch", version = "2.7.1+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version < '3.10' and platform_machine != 'arm64') or sys_platform != 'darwin'" }, - { name = "tqdm" }, + { name = "google-auth" }, + { name = "googleapis-common-protos" }, + { name = "proto-plus" }, + { name = "protobuf" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/dc/21/e9d043e88222317afdbdb567165fdbc3b0aad90064c7e0c9eb0ad9955ad8/google_api_core-2.25.1.tar.gz", hash = "sha256:d2aaa0b13c78c61cb3f4282c464c046e45fbd75755683c9c525e6e8f7ed0a5e8", size = 165443, upload-time = "2025-06-12T20:52:20.439Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/14/4b/ead00905132820b623732b175d66354e9d3e69fcf2a5dcdab780664e7896/google_api_core-2.25.1-py3-none-any.whl", hash = "sha256:8a2a56c1fef82987a524371f99f3bd0143702fecc670c72e600c1cda6bf8dbb7", size = 160807, upload-time = "2025-06-12T20:52:19.334Z" }, ] -[package.metadata] -requires-dist = [ - { name = "h5py" }, - { name = "ipykernel", specifier = ">=6.29.5" }, - { name = "ipywidgets", specifier = ">=8.1.7" }, - { name = "matplotlib" }, - { name = "numpy" }, - { name = "opencv-python" }, - { name = "pandas" }, - { name = "paramiko" }, - { name = "pyyaml", specifier = ">=6.0.2" }, - { name = "scikit-learn", specifier = ">=1.6.1" }, - { name = "scipy" }, - { name = "tables", specifier = ">=3.9.2" }, - { name = "torch", specifier = ">=2.7.1", index = "https://download.pytorch.org/whl/cpu" }, - { name = "tqdm" }, +[[package]] +name = "google-auth" +version = "2.40.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cachetools" }, + { name = "pyasn1-modules" }, + { name = "rsa" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9e/9b/e92ef23b84fa10a64ce4831390b7a4c2e53c0132568d99d4ae61d04c8855/google_auth-2.40.3.tar.gz", hash = "sha256:500c3a29adedeb36ea9cf24b8d10858e152f2412e3ca37829b3fa18e33d63b77", size = 281029, upload-time = "2025-06-04T18:04:57.577Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/17/63/b19553b658a1692443c62bd07e5868adaa0ad746a0751ba62c59568cd45b/google_auth-2.40.3-py2.py3-none-any.whl", hash = "sha256:1370d4593e86213563547f97a92752fc658456fe4514c809544f330fed45a7ca", size = 216137, upload-time = "2025-06-04T18:04:55.573Z" }, +] + +[[package]] +name = "googleapis-common-protos" +version = "1.70.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/39/24/33db22342cf4a2ea27c9955e6713140fedd51e8b141b5ce5260897020f1a/googleapis_common_protos-1.70.0.tar.gz", hash = "sha256:0e1b44e0ea153e6594f9f394fef15193a68aaaea2d843f83e2742717ca753257", size = 145903, upload-time = "2025-04-14T10:17:02.924Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/86/f1/62a193f0227cf15a920390abe675f386dec35f7ae3ffe6da582d3ade42c7/googleapis_common_protos-1.70.0-py3-none-any.whl", hash = "sha256:b8bfcca8c25a2bb253e0e0b0adaf8c00773e5e6af6fd92397576680b807e0fd8", size = 294530, upload-time = "2025-04-14T10:17:01.271Z" }, +] + +[[package]] +name = "grpcio" +version = "1.73.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/79/e8/b43b851537da2e2f03fa8be1aef207e5cbfb1a2e014fbb6b40d24c177cd3/grpcio-1.73.1.tar.gz", hash = "sha256:7fce2cd1c0c1116cf3850564ebfc3264fba75d3c74a7414373f1238ea365ef87", size = 12730355, upload-time = "2025-06-26T01:53:24.622Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8f/51/a5748ab2773d893d099b92653039672f7e26dd35741020972b84d604066f/grpcio-1.73.1-cp310-cp310-linux_armv7l.whl", hash = "sha256:2d70f4ddd0a823436c2624640570ed6097e40935c9194482475fe8e3d9754d55", size = 5365087, upload-time = "2025-06-26T01:51:44.541Z" }, + { url = "https://files.pythonhosted.org/packages/ae/12/c5ee1a5dfe93dbc2eaa42a219e2bf887250b52e2e2ee5c036c4695f2769c/grpcio-1.73.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:3841a8a5a66830261ab6a3c2a3dc539ed84e4ab019165f77b3eeb9f0ba621f26", size = 10608921, upload-time = "2025-06-26T01:51:48.111Z" }, + { url = "https://files.pythonhosted.org/packages/c4/6d/b0c6a8120f02b7d15c5accda6bfc43bc92be70ada3af3ba6d8e077c00374/grpcio-1.73.1-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:628c30f8e77e0258ab788750ec92059fc3d6628590fb4b7cea8c102503623ed7", size = 5803221, upload-time = "2025-06-26T01:51:50.486Z" }, + { url = "https://files.pythonhosted.org/packages/a6/7a/3c886d9f1c1e416ae81f7f9c7d1995ae72cd64712d29dab74a6bafacb2d2/grpcio-1.73.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:67a0468256c9db6d5ecb1fde4bf409d016f42cef649323f0a08a72f352d1358b", size = 6444603, upload-time = "2025-06-26T01:51:52.203Z" }, + { url = "https://files.pythonhosted.org/packages/42/07/f143a2ff534982c9caa1febcad1c1073cdec732f6ac7545d85555a900a7e/grpcio-1.73.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68b84d65bbdebd5926eb5c53b0b9ec3b3f83408a30e4c20c373c5337b4219ec5", size = 6040969, upload-time = "2025-06-26T01:51:55.028Z" }, + { url = "https://files.pythonhosted.org/packages/fb/0f/523131b7c9196d0718e7b2dac0310eb307b4117bdbfef62382e760f7e8bb/grpcio-1.73.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c54796ca22b8349cc594d18b01099e39f2b7ffb586ad83217655781a350ce4da", size = 6132201, upload-time = "2025-06-26T01:51:56.867Z" }, + { url = "https://files.pythonhosted.org/packages/ad/18/010a055410eef1d3a7a1e477ec9d93b091ac664ad93e9c5f56d6cc04bdee/grpcio-1.73.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:75fc8e543962ece2f7ecd32ada2d44c0c8570ae73ec92869f9af8b944863116d", size = 6774718, upload-time = "2025-06-26T01:51:58.338Z" }, + { url = "https://files.pythonhosted.org/packages/16/11/452bfc1ab39d8ee748837ab8ee56beeae0290861052948785c2c445fb44b/grpcio-1.73.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6a6037891cd2b1dd1406b388660522e1565ed340b1fea2955b0234bdd941a862", size = 6304362, upload-time = "2025-06-26T01:51:59.802Z" }, + { url = "https://files.pythonhosted.org/packages/1e/1c/c75ceee626465721e5cb040cf4b271eff817aa97388948660884cb7adffa/grpcio-1.73.1-cp310-cp310-win32.whl", hash = "sha256:cce7265b9617168c2d08ae570fcc2af4eaf72e84f8c710ca657cc546115263af", size = 3679036, upload-time = "2025-06-26T01:52:01.817Z" }, + { url = "https://files.pythonhosted.org/packages/62/2e/42cb31b6cbd671a7b3dbd97ef33f59088cf60e3cf2141368282e26fafe79/grpcio-1.73.1-cp310-cp310-win_amd64.whl", hash = "sha256:6a2b372e65fad38842050943f42ce8fee00c6f2e8ea4f7754ba7478d26a356ee", size = 4340208, upload-time = "2025-06-26T01:52:03.674Z" }, + { url = "https://files.pythonhosted.org/packages/e4/41/921565815e871d84043e73e2c0e748f0318dab6fa9be872cd042778f14a9/grpcio-1.73.1-cp311-cp311-linux_armv7l.whl", hash = "sha256:ba2cea9f7ae4bc21f42015f0ec98f69ae4179848ad744b210e7685112fa507a1", size = 5363853, upload-time = "2025-06-26T01:52:05.5Z" }, + { url = "https://files.pythonhosted.org/packages/b0/cc/9c51109c71d068e4d474becf5f5d43c9d63038cec1b74112978000fa72f4/grpcio-1.73.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:d74c3f4f37b79e746271aa6cdb3a1d7e4432aea38735542b23adcabaaee0c097", size = 10621476, upload-time = "2025-06-26T01:52:07.211Z" }, + { url = "https://files.pythonhosted.org/packages/8f/d3/33d738a06f6dbd4943f4d377468f8299941a7c8c6ac8a385e4cef4dd3c93/grpcio-1.73.1-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:5b9b1805a7d61c9e90541cbe8dfe0a593dfc8c5c3a43fe623701b6a01b01d710", size = 5807903, upload-time = "2025-06-26T01:52:09.466Z" }, + { url = "https://files.pythonhosted.org/packages/5d/47/36deacd3c967b74e0265f4c608983e897d8bb3254b920f8eafdf60e4ad7e/grpcio-1.73.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3215f69a0670a8cfa2ab53236d9e8026bfb7ead5d4baabe7d7dc11d30fda967", size = 6448172, upload-time = "2025-06-26T01:52:11.459Z" }, + { url = "https://files.pythonhosted.org/packages/0e/64/12d6dc446021684ee1428ea56a3f3712048a18beeadbdefa06e6f8814a6e/grpcio-1.73.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc5eccfd9577a5dc7d5612b2ba90cca4ad14c6d949216c68585fdec9848befb1", size = 6044226, upload-time = "2025-06-26T01:52:12.987Z" }, + { url = "https://files.pythonhosted.org/packages/72/4b/6bae2d88a006000f1152d2c9c10ffd41d0131ca1198e0b661101c2e30ab9/grpcio-1.73.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:dc7d7fd520614fce2e6455ba89791458020a39716951c7c07694f9dbae28e9c0", size = 6135690, upload-time = "2025-06-26T01:52:14.92Z" }, + { url = "https://files.pythonhosted.org/packages/38/64/02c83b5076510784d1305025e93e0d78f53bb6a0213c8c84cfe8a00c5c48/grpcio-1.73.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:105492124828911f85127e4825d1c1234b032cb9d238567876b5515d01151379", size = 6775867, upload-time = "2025-06-26T01:52:16.446Z" }, + { url = "https://files.pythonhosted.org/packages/42/72/a13ff7ba6c68ccffa35dacdc06373a76c0008fd75777cba84d7491956620/grpcio-1.73.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:610e19b04f452ba6f402ac9aa94eb3d21fbc94553368008af634812c4a85a99e", size = 6308380, upload-time = "2025-06-26T01:52:18.417Z" }, + { url = "https://files.pythonhosted.org/packages/65/ae/d29d948021faa0070ec33245c1ae354e2aefabd97e6a9a7b6dcf0fb8ef6b/grpcio-1.73.1-cp311-cp311-win32.whl", hash = "sha256:d60588ab6ba0ac753761ee0e5b30a29398306401bfbceffe7d68ebb21193f9d4", size = 3679139, upload-time = "2025-06-26T01:52:20.171Z" }, + { url = "https://files.pythonhosted.org/packages/af/66/e1bbb0c95ea222947f0829b3db7692c59b59bcc531df84442e413fa983d9/grpcio-1.73.1-cp311-cp311-win_amd64.whl", hash = "sha256:6957025a4608bb0a5ff42abd75bfbb2ed99eda29d5992ef31d691ab54b753643", size = 4342558, upload-time = "2025-06-26T01:52:22.137Z" }, + { url = "https://files.pythonhosted.org/packages/b8/41/456caf570c55d5ac26f4c1f2db1f2ac1467d5bf3bcd660cba3e0a25b195f/grpcio-1.73.1-cp312-cp312-linux_armv7l.whl", hash = "sha256:921b25618b084e75d424a9f8e6403bfeb7abef074bb6c3174701e0f2542debcf", size = 5334621, upload-time = "2025-06-26T01:52:23.602Z" }, + { url = "https://files.pythonhosted.org/packages/2a/c2/9a15e179e49f235bb5e63b01590658c03747a43c9775e20c4e13ca04f4c4/grpcio-1.73.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:277b426a0ed341e8447fbf6c1d6b68c952adddf585ea4685aa563de0f03df887", size = 10601131, upload-time = "2025-06-26T01:52:25.691Z" }, + { url = "https://files.pythonhosted.org/packages/0c/1d/1d39e90ef6348a0964caa7c5c4d05f3bae2c51ab429eb7d2e21198ac9b6d/grpcio-1.73.1-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:96c112333309493c10e118d92f04594f9055774757f5d101b39f8150f8c25582", size = 5759268, upload-time = "2025-06-26T01:52:27.631Z" }, + { url = "https://files.pythonhosted.org/packages/8a/2b/2dfe9ae43de75616177bc576df4c36d6401e0959833b2e5b2d58d50c1f6b/grpcio-1.73.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f48e862aed925ae987eb7084409a80985de75243389dc9d9c271dd711e589918", size = 6409791, upload-time = "2025-06-26T01:52:29.711Z" }, + { url = "https://files.pythonhosted.org/packages/6e/66/e8fe779b23b5a26d1b6949e5c70bc0a5fd08f61a6ec5ac7760d589229511/grpcio-1.73.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:83a6c2cce218e28f5040429835fa34a29319071079e3169f9543c3fbeff166d2", size = 6003728, upload-time = "2025-06-26T01:52:31.352Z" }, + { url = "https://files.pythonhosted.org/packages/a9/39/57a18fcef567784108c4fc3f5441cb9938ae5a51378505aafe81e8e15ecc/grpcio-1.73.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:65b0458a10b100d815a8426b1442bd17001fdb77ea13665b2f7dc9e8587fdc6b", size = 6103364, upload-time = "2025-06-26T01:52:33.028Z" }, + { url = "https://files.pythonhosted.org/packages/c5/46/28919d2aa038712fc399d02fa83e998abd8c1f46c2680c5689deca06d1b2/grpcio-1.73.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:0a9f3ea8dce9eae9d7cb36827200133a72b37a63896e0e61a9d5ec7d61a59ab1", size = 6749194, upload-time = "2025-06-26T01:52:34.734Z" }, + { url = "https://files.pythonhosted.org/packages/3d/56/3898526f1fad588c5d19a29ea0a3a4996fb4fa7d7c02dc1be0c9fd188b62/grpcio-1.73.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:de18769aea47f18e782bf6819a37c1c528914bfd5683b8782b9da356506190c8", size = 6283902, upload-time = "2025-06-26T01:52:36.503Z" }, + { url = "https://files.pythonhosted.org/packages/dc/64/18b77b89c5870d8ea91818feb0c3ffb5b31b48d1b0ee3e0f0d539730fea3/grpcio-1.73.1-cp312-cp312-win32.whl", hash = "sha256:24e06a5319e33041e322d32c62b1e728f18ab8c9dbc91729a3d9f9e3ed336642", size = 3668687, upload-time = "2025-06-26T01:52:38.678Z" }, + { url = "https://files.pythonhosted.org/packages/3c/52/302448ca6e52f2a77166b2e2ed75f5d08feca4f2145faf75cb768cccb25b/grpcio-1.73.1-cp312-cp312-win_amd64.whl", hash = "sha256:303c8135d8ab176f8038c14cc10d698ae1db9c480f2b2823f7a987aa2a4c5646", size = 4334887, upload-time = "2025-06-26T01:52:40.743Z" }, + { url = "https://files.pythonhosted.org/packages/37/bf/4ca20d1acbefabcaba633ab17f4244cbbe8eca877df01517207bd6655914/grpcio-1.73.1-cp313-cp313-linux_armv7l.whl", hash = "sha256:b310824ab5092cf74750ebd8a8a8981c1810cb2b363210e70d06ef37ad80d4f9", size = 5335615, upload-time = "2025-06-26T01:52:42.896Z" }, + { url = "https://files.pythonhosted.org/packages/75/ed/45c345f284abec5d4f6d77cbca9c52c39b554397eb7de7d2fcf440bcd049/grpcio-1.73.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:8f5a6df3fba31a3485096ac85b2e34b9666ffb0590df0cd044f58694e6a1f6b5", size = 10595497, upload-time = "2025-06-26T01:52:44.695Z" }, + { url = "https://files.pythonhosted.org/packages/a4/75/bff2c2728018f546d812b755455014bc718f8cdcbf5c84f1f6e5494443a8/grpcio-1.73.1-cp313-cp313-manylinux_2_17_aarch64.whl", hash = "sha256:052e28fe9c41357da42250a91926a3e2f74c046575c070b69659467ca5aa976b", size = 5765321, upload-time = "2025-06-26T01:52:46.871Z" }, + { url = "https://files.pythonhosted.org/packages/70/3b/14e43158d3b81a38251b1d231dfb45a9b492d872102a919fbf7ba4ac20cd/grpcio-1.73.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c0bf15f629b1497436596b1cbddddfa3234273490229ca29561209778ebe182", size = 6415436, upload-time = "2025-06-26T01:52:49.134Z" }, + { url = "https://files.pythonhosted.org/packages/e5/3f/81d9650ca40b54338336fd360f36773be8cb6c07c036e751d8996eb96598/grpcio-1.73.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ab860d5bfa788c5a021fba264802e2593688cd965d1374d31d2b1a34cacd854", size = 6007012, upload-time = "2025-06-26T01:52:51.076Z" }, + { url = "https://files.pythonhosted.org/packages/55/f4/59edf5af68d684d0f4f7ad9462a418ac517201c238551529098c9aa28cb0/grpcio-1.73.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:ad1d958c31cc91ab050bd8a91355480b8e0683e21176522bacea225ce51163f2", size = 6105209, upload-time = "2025-06-26T01:52:52.773Z" }, + { url = "https://files.pythonhosted.org/packages/e4/a8/700d034d5d0786a5ba14bfa9ce974ed4c976936c2748c2bd87aa50f69b36/grpcio-1.73.1-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:f43ffb3bd415c57224c7427bfb9e6c46a0b6e998754bfa0d00f408e1873dcbb5", size = 6753655, upload-time = "2025-06-26T01:52:55.064Z" }, + { url = "https://files.pythonhosted.org/packages/1f/29/efbd4ac837c23bc48e34bbaf32bd429f0dc9ad7f80721cdb4622144c118c/grpcio-1.73.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:686231cdd03a8a8055f798b2b54b19428cdf18fa1549bee92249b43607c42668", size = 6287288, upload-time = "2025-06-26T01:52:57.33Z" }, + { url = "https://files.pythonhosted.org/packages/d8/61/c6045d2ce16624bbe18b5d169c1a5ce4d6c3a47bc9d0e5c4fa6a50ed1239/grpcio-1.73.1-cp313-cp313-win32.whl", hash = "sha256:89018866a096e2ce21e05eabed1567479713ebe57b1db7cbb0f1e3b896793ba4", size = 3668151, upload-time = "2025-06-26T01:52:59.405Z" }, + { url = "https://files.pythonhosted.org/packages/c2/d7/77ac689216daee10de318db5aa1b88d159432dc76a130948a56b3aa671a2/grpcio-1.73.1-cp313-cp313-win_amd64.whl", hash = "sha256:4a68f8c9966b94dff693670a5cf2b54888a48a5011c5d9ce2295a1a1465ee84f", size = 4335747, upload-time = "2025-06-26T01:53:01.233Z" }, + { url = "https://files.pythonhosted.org/packages/58/c7/f552f0e79e7f585ff8c35b703342bd70a93a46fdf6d8b6574f33d39acb74/grpcio-1.73.1-cp39-cp39-linux_armv7l.whl", hash = "sha256:b4adc97d2d7f5c660a5498bda978ebb866066ad10097265a5da0511323ae9f50", size = 5363972, upload-time = "2025-06-26T01:53:03.185Z" }, + { url = "https://files.pythonhosted.org/packages/2c/63/226989531ea73030775ef87ac6c01460384f7c6ea7423e93383674e60a81/grpcio-1.73.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:c45a28a0cfb6ddcc7dc50a29de44ecac53d115c3388b2782404218db51cb2df3", size = 10614120, upload-time = "2025-06-26T01:53:05.643Z" }, + { url = "https://files.pythonhosted.org/packages/45/63/12027d4a09b613efa481447f5d12a52804d77287325bbfeed39d72cf29da/grpcio-1.73.1-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:10af9f2ab98a39f5b6c1896c6fc2036744b5b41d12739d48bed4c3e15b6cf900", size = 5804172, upload-time = "2025-06-26T01:53:07.828Z" }, + { url = "https://files.pythonhosted.org/packages/09/c5/a158c4fa26c0f203966664f37e52175c0c262772a8c39b78812b2e39a9e8/grpcio-1.73.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:45cf17dcce5ebdb7b4fe9e86cb338fa99d7d1bb71defc78228e1ddf8d0de8cbb", size = 6445602, upload-time = "2025-06-26T01:53:09.657Z" }, + { url = "https://files.pythonhosted.org/packages/cb/e2/d6fb85964d52d30baace1a6b2fe1be7941882239ae1f1cda2aaa80827ccd/grpcio-1.73.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c502c2e950fc7e8bf05c047e8a14522ef7babac59abbfde6dbf46b7a0d9c71e", size = 6041413, upload-time = "2025-06-26T01:53:11.591Z" }, + { url = "https://files.pythonhosted.org/packages/da/a6/8d06b3de85486ac71a49a656d7ff546974f3a5449ecb6178fd62a3251cdb/grpcio-1.73.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6abfc0f9153dc4924536f40336f88bd4fe7bd7494f028675e2e04291b8c2c62a", size = 6133190, upload-time = "2025-06-26T01:53:13.888Z" }, + { url = "https://files.pythonhosted.org/packages/5d/80/73f86bc940fd570f2486673424277bfdef8b0046309fd693856d31f1c1df/grpcio-1.73.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:ed451a0e39c8e51eb1612b78686839efd1a920666d1666c1adfdb4fd51680c0f", size = 6775225, upload-time = "2025-06-26T01:53:15.718Z" }, + { url = "https://files.pythonhosted.org/packages/23/c5/722cfa1b6b5f747a2066291eb8ba3acbcd25f02ce9dc9088eafb7f92eb6d/grpcio-1.73.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:07f08705a5505c9b5b0cbcbabafb96462b5a15b7236bbf6bbcc6b0b91e1cbd7e", size = 6305332, upload-time = "2025-06-26T01:53:18.363Z" }, + { url = "https://files.pythonhosted.org/packages/a9/d8/8ecdccf7759249a6d124c624e2b5a26176d44e91be78975c9aabbe81159b/grpcio-1.73.1-cp39-cp39-win32.whl", hash = "sha256:ad5c958cc3d98bb9d71714dc69f1c13aaf2f4b53e29d4cc3f1501ef2e4d129b2", size = 3680535, upload-time = "2025-06-26T01:53:20.266Z" }, + { url = "https://files.pythonhosted.org/packages/2c/d9/e7369ba582129094ecedb16f60e3cd250cd0fb0ea28adbdcf98002b4f80a/grpcio-1.73.1-cp39-cp39-win_amd64.whl", hash = "sha256:42f0660bce31b745eb9d23f094a332d31f210dcadd0fc8e5be7e4c62a87ce86b", size = 4342138, upload-time = "2025-06-26T01:53:22.095Z" }, +] + +[[package]] +name = "h11" +version = "0.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250, upload-time = "2025-04-24T03:35:25.427Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" }, ] [[package]] @@ -788,6 +1455,91 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b4/e4/fb8032d0e5480b1db9b419b5b50737b61bb3c7187c49d809975d62129fb0/h5py-3.14.0-cp39-cp39-win_amd64.whl", hash = "sha256:4f025cf30ae738c4c4e38c7439a761a71ccfcce04c2b87b2a2ac64e8c5171d43", size = 2877166, upload-time = "2025-06-06T14:06:13.05Z" }, ] +[[package]] +name = "httpcore" +version = "1.0.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "h11" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484, upload-time = "2025-04-24T22:06:22.219Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784, upload-time = "2025-04-24T22:06:20.566Z" }, +] + +[[package]] +name = "httptools" +version = "0.6.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a7/9a/ce5e1f7e131522e6d3426e8e7a490b3a01f39a6696602e1c4f33f9e94277/httptools-0.6.4.tar.gz", hash = "sha256:4e93eee4add6493b59a5c514da98c939b244fce4a0d8879cd3f466562f4b7d5c", size = 240639, upload-time = "2024-10-16T19:45:08.902Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3b/6f/972f8eb0ea7d98a1c6be436e2142d51ad2a64ee18e02b0e7ff1f62171ab1/httptools-0.6.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3c73ce323711a6ffb0d247dcd5a550b8babf0f757e86a52558fe5b86d6fefcc0", size = 198780, upload-time = "2024-10-16T19:44:06.882Z" }, + { url = "https://files.pythonhosted.org/packages/6a/b0/17c672b4bc5c7ba7f201eada4e96c71d0a59fbc185e60e42580093a86f21/httptools-0.6.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:345c288418f0944a6fe67be8e6afa9262b18c7626c3ef3c28adc5eabc06a68da", size = 103297, upload-time = "2024-10-16T19:44:08.129Z" }, + { url = "https://files.pythonhosted.org/packages/92/5e/b4a826fe91971a0b68e8c2bd4e7db3e7519882f5a8ccdb1194be2b3ab98f/httptools-0.6.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:deee0e3343f98ee8047e9f4c5bc7cedbf69f5734454a94c38ee829fb2d5fa3c1", size = 443130, upload-time = "2024-10-16T19:44:09.45Z" }, + { url = "https://files.pythonhosted.org/packages/b0/51/ce61e531e40289a681a463e1258fa1e05e0be54540e40d91d065a264cd8f/httptools-0.6.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca80b7485c76f768a3bc83ea58373f8db7b015551117375e4918e2aa77ea9b50", size = 442148, upload-time = "2024-10-16T19:44:11.539Z" }, + { url = "https://files.pythonhosted.org/packages/ea/9e/270b7d767849b0c96f275c695d27ca76c30671f8eb8cc1bab6ced5c5e1d0/httptools-0.6.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:90d96a385fa941283ebd231464045187a31ad932ebfa541be8edf5b3c2328959", size = 415949, upload-time = "2024-10-16T19:44:13.388Z" }, + { url = "https://files.pythonhosted.org/packages/81/86/ced96e3179c48c6f656354e106934e65c8963d48b69be78f355797f0e1b3/httptools-0.6.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:59e724f8b332319e2875efd360e61ac07f33b492889284a3e05e6d13746876f4", size = 417591, upload-time = "2024-10-16T19:44:15.258Z" }, + { url = "https://files.pythonhosted.org/packages/75/73/187a3f620ed3175364ddb56847d7a608a6fc42d551e133197098c0143eca/httptools-0.6.4-cp310-cp310-win_amd64.whl", hash = "sha256:c26f313951f6e26147833fc923f78f95604bbec812a43e5ee37f26dc9e5a686c", size = 88344, upload-time = "2024-10-16T19:44:16.54Z" }, + { url = "https://files.pythonhosted.org/packages/7b/26/bb526d4d14c2774fe07113ca1db7255737ffbb119315839af2065abfdac3/httptools-0.6.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f47f8ed67cc0ff862b84a1189831d1d33c963fb3ce1ee0c65d3b0cbe7b711069", size = 199029, upload-time = "2024-10-16T19:44:18.427Z" }, + { url = "https://files.pythonhosted.org/packages/a6/17/3e0d3e9b901c732987a45f4f94d4e2c62b89a041d93db89eafb262afd8d5/httptools-0.6.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0614154d5454c21b6410fdf5262b4a3ddb0f53f1e1721cfd59d55f32138c578a", size = 103492, upload-time = "2024-10-16T19:44:19.515Z" }, + { url = "https://files.pythonhosted.org/packages/b7/24/0fe235d7b69c42423c7698d086d4db96475f9b50b6ad26a718ef27a0bce6/httptools-0.6.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8787367fbdfccae38e35abf7641dafc5310310a5987b689f4c32cc8cc3ee975", size = 462891, upload-time = "2024-10-16T19:44:21.067Z" }, + { url = "https://files.pythonhosted.org/packages/b1/2f/205d1f2a190b72da6ffb5f41a3736c26d6fa7871101212b15e9b5cd8f61d/httptools-0.6.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40b0f7fe4fd38e6a507bdb751db0379df1e99120c65fbdc8ee6c1d044897a636", size = 459788, upload-time = "2024-10-16T19:44:22.958Z" }, + { url = "https://files.pythonhosted.org/packages/6e/4c/d09ce0eff09057a206a74575ae8f1e1e2f0364d20e2442224f9e6612c8b9/httptools-0.6.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:40a5ec98d3f49904b9fe36827dcf1aadfef3b89e2bd05b0e35e94f97c2b14721", size = 433214, upload-time = "2024-10-16T19:44:24.513Z" }, + { url = "https://files.pythonhosted.org/packages/3e/d2/84c9e23edbccc4a4c6f96a1b8d99dfd2350289e94f00e9ccc7aadde26fb5/httptools-0.6.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:dacdd3d10ea1b4ca9df97a0a303cbacafc04b5cd375fa98732678151643d4988", size = 434120, upload-time = "2024-10-16T19:44:26.295Z" }, + { url = "https://files.pythonhosted.org/packages/d0/46/4d8e7ba9581416de1c425b8264e2cadd201eb709ec1584c381f3e98f51c1/httptools-0.6.4-cp311-cp311-win_amd64.whl", hash = "sha256:288cd628406cc53f9a541cfaf06041b4c71d751856bab45e3702191f931ccd17", size = 88565, upload-time = "2024-10-16T19:44:29.188Z" }, + { url = "https://files.pythonhosted.org/packages/bb/0e/d0b71465c66b9185f90a091ab36389a7352985fe857e352801c39d6127c8/httptools-0.6.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:df017d6c780287d5c80601dafa31f17bddb170232d85c066604d8558683711a2", size = 200683, upload-time = "2024-10-16T19:44:30.175Z" }, + { url = "https://files.pythonhosted.org/packages/e2/b8/412a9bb28d0a8988de3296e01efa0bd62068b33856cdda47fe1b5e890954/httptools-0.6.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:85071a1e8c2d051b507161f6c3e26155b5c790e4e28d7f236422dbacc2a9cc44", size = 104337, upload-time = "2024-10-16T19:44:31.786Z" }, + { url = "https://files.pythonhosted.org/packages/9b/01/6fb20be3196ffdc8eeec4e653bc2a275eca7f36634c86302242c4fbb2760/httptools-0.6.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69422b7f458c5af875922cdb5bd586cc1f1033295aa9ff63ee196a87519ac8e1", size = 508796, upload-time = "2024-10-16T19:44:32.825Z" }, + { url = "https://files.pythonhosted.org/packages/f7/d8/b644c44acc1368938317d76ac991c9bba1166311880bcc0ac297cb9d6bd7/httptools-0.6.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16e603a3bff50db08cd578d54f07032ca1631450ceb972c2f834c2b860c28ea2", size = 510837, upload-time = "2024-10-16T19:44:33.974Z" }, + { url = "https://files.pythonhosted.org/packages/52/d8/254d16a31d543073a0e57f1c329ca7378d8924e7e292eda72d0064987486/httptools-0.6.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ec4f178901fa1834d4a060320d2f3abc5c9e39766953d038f1458cb885f47e81", size = 485289, upload-time = "2024-10-16T19:44:35.111Z" }, + { url = "https://files.pythonhosted.org/packages/5f/3c/4aee161b4b7a971660b8be71a92c24d6c64372c1ab3ae7f366b3680df20f/httptools-0.6.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f9eb89ecf8b290f2e293325c646a211ff1c2493222798bb80a530c5e7502494f", size = 489779, upload-time = "2024-10-16T19:44:36.253Z" }, + { url = "https://files.pythonhosted.org/packages/12/b7/5cae71a8868e555f3f67a50ee7f673ce36eac970f029c0c5e9d584352961/httptools-0.6.4-cp312-cp312-win_amd64.whl", hash = "sha256:db78cb9ca56b59b016e64b6031eda5653be0589dba2b1b43453f6e8b405a0970", size = 88634, upload-time = "2024-10-16T19:44:37.357Z" }, + { url = "https://files.pythonhosted.org/packages/94/a3/9fe9ad23fd35f7de6b91eeb60848986058bd8b5a5c1e256f5860a160cc3e/httptools-0.6.4-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ade273d7e767d5fae13fa637f4d53b6e961fb7fd93c7797562663f0171c26660", size = 197214, upload-time = "2024-10-16T19:44:38.738Z" }, + { url = "https://files.pythonhosted.org/packages/ea/d9/82d5e68bab783b632023f2fa31db20bebb4e89dfc4d2293945fd68484ee4/httptools-0.6.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:856f4bc0478ae143bad54a4242fccb1f3f86a6e1be5548fecfd4102061b3a083", size = 102431, upload-time = "2024-10-16T19:44:39.818Z" }, + { url = "https://files.pythonhosted.org/packages/96/c1/cb499655cbdbfb57b577734fde02f6fa0bbc3fe9fb4d87b742b512908dff/httptools-0.6.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:322d20ea9cdd1fa98bd6a74b77e2ec5b818abdc3d36695ab402a0de8ef2865a3", size = 473121, upload-time = "2024-10-16T19:44:41.189Z" }, + { url = "https://files.pythonhosted.org/packages/af/71/ee32fd358f8a3bb199b03261f10921716990808a675d8160b5383487a317/httptools-0.6.4-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4d87b29bd4486c0093fc64dea80231f7c7f7eb4dc70ae394d70a495ab8436071", size = 473805, upload-time = "2024-10-16T19:44:42.384Z" }, + { url = "https://files.pythonhosted.org/packages/8a/0a/0d4df132bfca1507114198b766f1737d57580c9ad1cf93c1ff673e3387be/httptools-0.6.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:342dd6946aa6bda4b8f18c734576106b8a31f2fe31492881a9a160ec84ff4bd5", size = 448858, upload-time = "2024-10-16T19:44:43.959Z" }, + { url = "https://files.pythonhosted.org/packages/1e/6a/787004fdef2cabea27bad1073bf6a33f2437b4dbd3b6fb4a9d71172b1c7c/httptools-0.6.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4b36913ba52008249223042dca46e69967985fb4051951f94357ea681e1f5dc0", size = 452042, upload-time = "2024-10-16T19:44:45.071Z" }, + { url = "https://files.pythonhosted.org/packages/4d/dc/7decab5c404d1d2cdc1bb330b1bf70e83d6af0396fd4fc76fc60c0d522bf/httptools-0.6.4-cp313-cp313-win_amd64.whl", hash = "sha256:28908df1b9bb8187393d5b5db91435ccc9c8e891657f9cbb42a2541b44c82fc8", size = 87682, upload-time = "2024-10-16T19:44:46.46Z" }, + { url = "https://files.pythonhosted.org/packages/51/b1/4fc6f52afdf93b7c4304e21f6add9e981e4f857c2fa622a55dfe21b6059e/httptools-0.6.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:85797e37e8eeaa5439d33e556662cc370e474445d5fab24dcadc65a8ffb04003", size = 201123, upload-time = "2024-10-16T19:44:59.13Z" }, + { url = "https://files.pythonhosted.org/packages/c2/01/e6ecb40ac8fdfb76607c7d3b74a41b464458d5c8710534d8f163b0c15f29/httptools-0.6.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:db353d22843cf1028f43c3651581e4bb49374d85692a85f95f7b9a130e1b2cab", size = 104507, upload-time = "2024-10-16T19:45:00.254Z" }, + { url = "https://files.pythonhosted.org/packages/dc/24/c70c34119d209bf08199d938dc9c69164f585ed3029237b4bdb90f673cb9/httptools-0.6.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1ffd262a73d7c28424252381a5b854c19d9de5f56f075445d33919a637e3547", size = 449615, upload-time = "2024-10-16T19:45:01.351Z" }, + { url = "https://files.pythonhosted.org/packages/2b/62/e7f317fed3703bd81053840cacba4e40bcf424b870e4197f94bd1cf9fe7a/httptools-0.6.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:703c346571fa50d2e9856a37d7cd9435a25e7fd15e236c397bf224afaa355fe9", size = 448819, upload-time = "2024-10-16T19:45:02.652Z" }, + { url = "https://files.pythonhosted.org/packages/2a/13/68337d3be6b023260139434c49d7aa466aaa98f9aee7ed29270ac7dde6a2/httptools-0.6.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:aafe0f1918ed07b67c1e838f950b1c1fabc683030477e60b335649b8020e1076", size = 422093, upload-time = "2024-10-16T19:45:03.765Z" }, + { url = "https://files.pythonhosted.org/packages/fc/b3/3a1bc45be03dda7a60c7858e55b6cd0489a81613c1908fb81cf21d34ae50/httptools-0.6.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0e563e54979e97b6d13f1bbc05a96109923e76b901f786a5eae36e99c01237bd", size = 423898, upload-time = "2024-10-16T19:45:05.683Z" }, + { url = "https://files.pythonhosted.org/packages/05/72/2ddc2ae5f7ace986f7e68a326215b2e7c32e32fd40e6428fa8f1d8065c7e/httptools-0.6.4-cp39-cp39-win_amd64.whl", hash = "sha256:b799de31416ecc589ad79dd85a0b2657a8fe39327944998dea368c1d4c9e55e6", size = 89552, upload-time = "2024-10-16T19:45:07.566Z" }, +] + +[[package]] +name = "httpx" +version = "0.28.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "certifi" }, + { name = "httpcore" }, + { name = "idna" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406, upload-time = "2024-12-06T15:37:23.222Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload-time = "2024-12-06T15:37:21.509Z" }, +] + +[[package]] +name = "hydra-core" +version = "1.3.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "antlr4-python3-runtime" }, + { name = "omegaconf" }, + { name = "packaging" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6d/8e/07e42bc434a847154083b315779b0a81d567154504624e181caf2c71cd98/hydra-core-1.3.2.tar.gz", hash = "sha256:8a878ed67216997c3e9d88a8e72e7b4767e81af37afb4ea3334b269a4390a824", size = 3263494, upload-time = "2023-02-23T18:33:43.03Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c6/50/e0edd38dcd63fb26a8547f13d28f7a008bc4a3fd4eb4ff030673f22ad41a/hydra_core-1.3.2-py3-none-any.whl", hash = "sha256:fa0238a9e31df3373b35b0bfb672c34cc92718d21f81311d8996a16de1141d8b", size = 154547, upload-time = "2023-02-23T18:33:40.801Z" }, +] + [[package]] name = "idna" version = "3.10" @@ -802,7 +1554,7 @@ name = "importlib-metadata" version = "8.7.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "zipp", marker = "python_full_version < '3.10'" }, + { name = "zipp" }, ] sdist = { url = "https://files.pythonhosted.org/packages/76/66/650a33bd90f786193e4de4b3ad86ea60b53c89b669a5c7be931fac31cdb0/importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000", size = 56641, upload-time = "2025-04-27T15:29:01.736Z" } wheels = [ @@ -854,7 +1606,8 @@ source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", ] dependencies = [ { name = "colorama", marker = "python_full_version < '3.10' and sys_platform == 'win32'" }, @@ -879,7 +1632,8 @@ name = "ipython" version = "8.37.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -906,10 +1660,16 @@ name = "ipython" version = "9.4.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.12' and sys_platform == 'darwin'", - "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -961,6 +1721,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/58/6a/9166369a2f092bd286d24e6307de555d63616e8ddb373ebad2b5635ca4cd/ipywidgets-8.1.7-py3-none-any.whl", hash = "sha256:764f2602d25471c213919b8a1997df04bef869251db4ca8efba1b76b1bd9f7bb", size = 139806, upload-time = "2025-05-05T12:41:56.833Z" }, ] +[[package]] +name = "isoduration" +version = "20.11.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "arrow" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7c/1a/3c8edc664e06e6bd06cce40c6b22da5f1429aa4224d0c590f3be21c91ead/isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9", size = 11649, upload-time = "2020-11-01T11:00:00.312Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/55/e5326141505c5d5e34c5e0935d2908a74e4561eca44108fbfb9c13d2911a/isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042", size = 11321, upload-time = "2020-11-01T10:59:58.02Z" }, +] + [[package]] name = "jedi" version = "0.19.2" @@ -991,38 +1763,262 @@ version = "1.5.1" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/dc/fe/0f5a938c54105553436dbff7a61dc4fed4b1b2c98852f8833beaf4d5968f/joblib-1.5.1.tar.gz", hash = "sha256:f4f86e351f39fe3d0d32a9f2c3d8af1ee4cec285aafcb27003dda5205576b444", size = 330475, upload-time = "2025-05-23T12:04:37.097Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7d/4f/1195bbac8e0c2acc5f740661631d8d750dc38d4a32b23ee5df3cde6f4e0d/joblib-1.5.1-py3-none-any.whl", hash = "sha256:4719a31f054c7d766948dcd83e9613686b27114f190f717cec7eaa2084f8a74a", size = 307746, upload-time = "2025-05-23T12:04:35.124Z" }, + { url = "https://files.pythonhosted.org/packages/7d/4f/1195bbac8e0c2acc5f740661631d8d750dc38d4a32b23ee5df3cde6f4e0d/joblib-1.5.1-py3-none-any.whl", hash = "sha256:4719a31f054c7d766948dcd83e9613686b27114f190f717cec7eaa2084f8a74a", size = 307746, upload-time = "2025-05-23T12:04:35.124Z" }, +] + +[[package]] +name = "json5" +version = "0.12.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/12/be/c6c745ec4c4539b25a278b70e29793f10382947df0d9efba2fa09120895d/json5-0.12.0.tar.gz", hash = "sha256:0b4b6ff56801a1c7dc817b0241bca4ce474a0e6a163bfef3fc594d3fd263ff3a", size = 51907, upload-time = "2025-04-03T16:33:13.201Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/41/9f/3500910d5a98549e3098807493851eeef2b89cdd3032227558a104dfe926/json5-0.12.0-py3-none-any.whl", hash = "sha256:6d37aa6c08b0609f16e1ec5ff94697e2cbbfbad5ac112afa05794da9ab7810db", size = 36079, upload-time = "2025-04-03T16:33:11.927Z" }, +] + +[[package]] +name = "jsonpointer" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6a/0a/eebeb1fa92507ea94016a2a790b93c2ae41a7e18778f85471dc54475ed25/jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef", size = 9114, upload-time = "2024-06-10T19:24:42.462Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/71/92/5e77f98553e9e75130c78900d000368476aed74276eb8ae8796f65f00918/jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942", size = 7595, upload-time = "2024-06-10T19:24:40.698Z" }, +] + +[[package]] +name = "jsonschema" +version = "4.24.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "jsonschema-specifications" }, + { name = "referencing" }, + { name = "rpds-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bf/d3/1cf5326b923a53515d8f3a2cd442e6d7e94fcc444716e879ea70a0ce3177/jsonschema-4.24.0.tar.gz", hash = "sha256:0b4e8069eb12aedfa881333004bccaec24ecef5a8a6a4b6df142b2cc9599d196", size = 353480, upload-time = "2025-05-26T18:48:10.459Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a2/3d/023389198f69c722d039351050738d6755376c8fd343e91dc493ea485905/jsonschema-4.24.0-py3-none-any.whl", hash = "sha256:a462455f19f5faf404a7902952b6f0e3ce868f3ee09a359b05eca6673bd8412d", size = 88709, upload-time = "2025-05-26T18:48:08.417Z" }, +] + +[package.optional-dependencies] +format-nongpl = [ + { name = "fqdn" }, + { name = "idna" }, + { name = "isoduration" }, + { name = "jsonpointer" }, + { name = "rfc3339-validator" }, + { name = "rfc3986-validator" }, + { name = "uri-template" }, + { name = "webcolors" }, +] + +[[package]] +name = "jsonschema-specifications" +version = "2025.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "referencing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bf/ce/46fbd9c8119cfc3581ee5643ea49464d168028cfb5caff5fc0596d0cf914/jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608", size = 15513, upload-time = "2025-04-23T12:34:07.418Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/01/0e/b27cdbaccf30b890c40ed1da9fd4a3593a5cf94dae54fb34f8a4b74fcd3f/jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af", size = 18437, upload-time = "2025-04-23T12:34:05.422Z" }, +] + +[[package]] +name = "jupyter" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ipykernel" }, + { name = "ipywidgets" }, + { name = "jupyter-console" }, + { name = "jupyterlab" }, + { name = "nbconvert" }, + { name = "notebook" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/58/f3/af28ea964ab8bc1e472dba2e82627d36d470c51f5cd38c37502eeffaa25e/jupyter-1.1.1.tar.gz", hash = "sha256:d55467bceabdea49d7e3624af7e33d59c37fff53ed3a350e1ac957bed731de7a", size = 5714959, upload-time = "2024-08-30T07:15:48.299Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/64/285f20a31679bf547b75602702f7800e74dbabae36ef324f716c02804753/jupyter-1.1.1-py2.py3-none-any.whl", hash = "sha256:7a59533c22af65439b24bbe60373a4e95af8f16ac65a6c00820ad378e3f7cc83", size = 2657, upload-time = "2024-08-30T07:15:47.045Z" }, +] + +[[package]] +name = "jupyter-client" +version = "8.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "importlib-metadata", marker = "python_full_version < '3.10'" }, + { name = "jupyter-core" }, + { name = "python-dateutil" }, + { name = "pyzmq" }, + { name = "tornado" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/71/22/bf9f12fdaeae18019a468b68952a60fe6dbab5d67cd2a103cac7659b41ca/jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419", size = 342019, upload-time = "2024-09-17T10:44:17.613Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f", size = 106105, upload-time = "2024-09-17T10:44:15.218Z" }, +] + +[[package]] +name = "jupyter-console" +version = "6.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ipykernel" }, + { name = "ipython", version = "8.18.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "ipython", version = "8.37.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "ipython", version = "9.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "prompt-toolkit" }, + { name = "pygments" }, + { name = "pyzmq" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bd/2d/e2fd31e2fc41c14e2bcb6c976ab732597e907523f6b2420305f9fc7fdbdb/jupyter_console-6.6.3.tar.gz", hash = "sha256:566a4bf31c87adbfadf22cdf846e3069b59a71ed5da71d6ba4d8aaad14a53539", size = 34363, upload-time = "2023-03-06T14:13:31.02Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ca/77/71d78d58f15c22db16328a476426f7ac4a60d3a5a7ba3b9627ee2f7903d4/jupyter_console-6.6.3-py3-none-any.whl", hash = "sha256:309d33409fcc92ffdad25f0bcdf9a4a9daa61b6f341177570fdac03de5352485", size = 24510, upload-time = "2023-03-06T14:13:28.229Z" }, +] + +[[package]] +name = "jupyter-core" +version = "5.8.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "platformdirs" }, + { name = "pywin32", marker = "platform_python_implementation != 'PyPy' and sys_platform == 'win32'" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/99/1b/72906d554acfeb588332eaaa6f61577705e9ec752ddb486f302dafa292d9/jupyter_core-5.8.1.tar.gz", hash = "sha256:0a5f9706f70e64786b75acba995988915ebd4601c8a52e534a40b51c95f59941", size = 88923, upload-time = "2025-05-27T07:38:16.655Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2f/57/6bffd4b20b88da3800c5d691e0337761576ee688eb01299eae865689d2df/jupyter_core-5.8.1-py3-none-any.whl", hash = "sha256:c28d268fc90fb53f1338ded2eb410704c5449a358406e8a948b75706e24863d0", size = 28880, upload-time = "2025-05-27T07:38:15.137Z" }, +] + +[[package]] +name = "jupyter-events" +version = "0.12.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jsonschema", extra = ["format-nongpl"] }, + { name = "packaging" }, + { name = "python-json-logger" }, + { name = "pyyaml" }, + { name = "referencing" }, + { name = "rfc3339-validator" }, + { name = "rfc3986-validator" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9d/c3/306d090461e4cf3cd91eceaff84bede12a8e52cd821c2d20c9a4fd728385/jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b", size = 62196, upload-time = "2025-02-03T17:23:41.485Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e2/48/577993f1f99c552f18a0428731a755e06171f9902fa118c379eb7c04ea22/jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb", size = 19430, upload-time = "2025-02-03T17:23:38.643Z" }, +] + +[[package]] +name = "jupyter-lsp" +version = "2.2.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "importlib-metadata", marker = "python_full_version < '3.10'" }, + { name = "jupyter-server" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/85/b4/3200b0b09c12bc3b72d943d923323c398eff382d1dcc7c0dbc8b74630e40/jupyter-lsp-2.2.5.tar.gz", hash = "sha256:793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943a982cb4f545001", size = 48741, upload-time = "2024-04-09T17:59:44.918Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/e0/7bd7cff65594fd9936e2f9385701e44574fc7d721331ff676ce440b14100/jupyter_lsp-2.2.5-py3-none-any.whl", hash = "sha256:45fbddbd505f3fbfb0b6cb2f1bc5e15e83ab7c79cd6e89416b248cb3c00c11da", size = 69146, upload-time = "2024-04-09T17:59:43.388Z" }, +] + +[[package]] +name = "jupyter-server" +version = "2.16.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "argon2-cffi" }, + { name = "jinja2" }, + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "jupyter-events" }, + { name = "jupyter-server-terminals" }, + { name = "nbconvert" }, + { name = "nbformat" }, + { name = "overrides" }, + { name = "packaging" }, + { name = "prometheus-client" }, + { name = "pywinpty", marker = "(python_full_version < '3.10' and os_name == 'nt' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (os_name == 'nt' and platform_machine != 'aarch64' and sys_platform == 'linux') or (os_name == 'nt' and sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "pyzmq" }, + { name = "send2trash" }, + { name = "terminado" }, + { name = "tornado" }, + { name = "traitlets" }, + { name = "websocket-client" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/41/c8/ba2bbcd758c47f1124c4ca14061e8ce60d9c6fd537faee9534a95f83521a/jupyter_server-2.16.0.tar.gz", hash = "sha256:65d4b44fdf2dcbbdfe0aa1ace4a842d4aaf746a2b7b168134d5aaed35621b7f6", size = 728177, upload-time = "2025-05-12T16:44:46.245Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/46/1f/5ebbced977171d09a7b0c08a285ff9a20aafb9c51bde07e52349ff1ddd71/jupyter_server-2.16.0-py3-none-any.whl", hash = "sha256:3d8db5be3bc64403b1c65b400a1d7f4647a5ce743f3b20dbdefe8ddb7b55af9e", size = 386904, upload-time = "2025-05-12T16:44:43.335Z" }, +] + +[[package]] +name = "jupyter-server-terminals" +version = "0.5.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pywinpty", marker = "(python_full_version < '3.10' and os_name == 'nt' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (os_name == 'nt' and platform_machine != 'aarch64' and sys_platform == 'linux') or (os_name == 'nt' and sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "terminado" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fc/d5/562469734f476159e99a55426d697cbf8e7eb5efe89fb0e0b4f83a3d3459/jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269", size = 31430, upload-time = "2024-03-12T14:37:03.049Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/2d/2b32cdbe8d2a602f697a649798554e4f072115438e92249624e532e8aca6/jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa", size = 13656, upload-time = "2024-03-12T14:37:00.708Z" }, ] [[package]] -name = "jupyter-client" -version = "8.6.3" +name = "jupyterlab" +version = "4.4.4" source = { registry = "https://pypi.org/simple" } dependencies = [ + { name = "async-lru" }, + { name = "httpx" }, { name = "importlib-metadata", marker = "python_full_version < '3.10'" }, + { name = "ipykernel" }, + { name = "jinja2" }, { name = "jupyter-core" }, - { name = "python-dateutil" }, - { name = "pyzmq" }, + { name = "jupyter-lsp" }, + { name = "jupyter-server" }, + { name = "jupyterlab-server" }, + { name = "notebook-shim" }, + { name = "packaging" }, + { name = "setuptools" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, { name = "tornado" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/71/22/bf9f12fdaeae18019a468b68952a60fe6dbab5d67cd2a103cac7659b41ca/jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419", size = 342019, upload-time = "2024-09-17T10:44:17.613Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e2/4d/7ca5b46ea56742880d71a768a9e6fb8f8482228427eb89492d55c5d0bb7d/jupyterlab-4.4.4.tar.gz", hash = "sha256:163fee1ef702e0a057f75d2eed3ed1da8a986d59eb002cbeb6f0c2779e6cd153", size = 23044296, upload-time = "2025-06-28T13:07:20.708Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f", size = 106105, upload-time = "2024-09-17T10:44:15.218Z" }, + { url = "https://files.pythonhosted.org/packages/f8/82/66910ce0995dbfdb33609f41c99fe32ce483b9624a3e7d672af14ff63b9f/jupyterlab-4.4.4-py3-none-any.whl", hash = "sha256:711611e4f59851152eb93316c3547c3ec6291f16bb455f1f4fa380d25637e0dd", size = 12296310, upload-time = "2025-06-28T13:07:15.676Z" }, ] [[package]] -name = "jupyter-core" -version = "5.8.1" +name = "jupyterlab-pygments" +version = "0.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/90/51/9187be60d989df97f5f0aba133fa54e7300f17616e065d1ada7d7646b6d6/jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d", size = 512900, upload-time = "2023-11-23T09:26:37.44Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b1/dd/ead9d8ea85bf202d90cc513b533f9c363121c7792674f78e0d8a854b63b4/jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780", size = 15884, upload-time = "2023-11-23T09:26:34.325Z" }, +] + +[[package]] +name = "jupyterlab-server" +version = "2.27.3" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "platformdirs" }, - { name = "pywin32", marker = "platform_python_implementation != 'PyPy' and sys_platform == 'win32'" }, - { name = "traitlets" }, + { name = "babel" }, + { name = "importlib-metadata", marker = "python_full_version < '3.10'" }, + { name = "jinja2" }, + { name = "json5" }, + { name = "jsonschema" }, + { name = "jupyter-server" }, + { name = "packaging" }, + { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/99/1b/72906d554acfeb588332eaaa6f61577705e9ec752ddb486f302dafa292d9/jupyter_core-5.8.1.tar.gz", hash = "sha256:0a5f9706f70e64786b75acba995988915ebd4601c8a52e534a40b51c95f59941", size = 88923, upload-time = "2025-05-27T07:38:16.655Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0a/c9/a883ce65eb27905ce77ace410d83587c82ea64dc85a48d1f7ed52bcfa68d/jupyterlab_server-2.27.3.tar.gz", hash = "sha256:eb36caca59e74471988f0ae25c77945610b887f777255aa21f8065def9e51ed4", size = 76173, upload-time = "2024-07-16T17:02:04.149Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2f/57/6bffd4b20b88da3800c5d691e0337761576ee688eb01299eae865689d2df/jupyter_core-5.8.1-py3-none-any.whl", hash = "sha256:c28d268fc90fb53f1338ded2eb410704c5449a358406e8a948b75706e24863d0", size = 28880, upload-time = "2025-05-27T07:38:15.137Z" }, + { url = "https://files.pythonhosted.org/packages/54/09/2032e7d15c544a0e3cd831c51d77a8ca57f7555b2e1b2922142eddb02a84/jupyterlab_server-2.27.3-py3-none-any.whl", hash = "sha256:e697488f66c3db49df675158a77b3b017520d772c6e1548c7d9bcc5df7944ee4", size = 59700, upload-time = "2024-07-16T17:02:01.115Z" }, ] [[package]] @@ -1041,7 +2037,8 @@ source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", ] sdist = { url = "https://files.pythonhosted.org/packages/85/4d/2255e1c76304cbd60b48cee302b66d1dde4468dc5b1160e4b7cb43778f2a/kiwisolver-1.4.7.tar.gz", hash = "sha256:9893ff81bd7107f7b685d3017cc6583daadb4fc26e4a888350df530e41980a60", size = 97286, upload-time = "2024-09-04T09:39:44.302Z" } wheels = [ @@ -1144,13 +2141,20 @@ name = "kiwisolver" version = "1.4.8" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.12' and sys_platform == 'darwin'", - "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -1237,6 +2241,41 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/3a/1d/50ad811d1c5dae091e4cf046beba925bcae0a610e79ae4c538f996f63ed5/kiwisolver-1.4.8-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:65ea09a5a3faadd59c2ce96dc7bf0f364986a315949dc6374f04396b0d60e09b", size = 71762, upload-time = "2024-12-24T18:30:48.903Z" }, ] +[[package]] +name = "lightning" +version = "2.5.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "fsspec", extra = ["http"] }, + { name = "lightning-utilities" }, + { name = "packaging" }, + { name = "pytorch-lightning" }, + { name = "pyyaml" }, + { name = "torch", version = "2.7.1", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version >= '3.10' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, + { name = "torch", version = "2.7.1+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64') or platform_machine == 'x86_64' or sys_platform != 'darwin'" }, + { name = "torchmetrics" }, + { name = "tqdm" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/3c/6a930ac7c64fb896adbe560a9141570732d9ca890a11e6d158edd5aece76/lightning-2.5.2.tar.gz", hash = "sha256:9550df613cfb22358ebf77b4a8ad45f3767cd7d26ba2d52b7f036bd3cdd701c4", size = 633391, upload-time = "2025-06-20T15:58:22.065Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/71/a9/5d39280e55dc5df9e98be074029f6b48f86fe3db4929cb9ada6401234b47/lightning-2.5.2-py3-none-any.whl", hash = "sha256:7e7f23245e214c8ec14d5d8119d3856c25cfe96f9856296fd5df4e29c2ff88a7", size = 821145, upload-time = "2025-06-20T15:58:18.609Z" }, +] + +[[package]] +name = "lightning-utilities" +version = "0.14.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, + { name = "setuptools" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0f/bb/63a6a8c9e7a96b6ba92647fa5b1595c2dbee29f8178705adb4704d82ecba/lightning_utilities-0.14.3.tar.gz", hash = "sha256:37e2f83f273890052955a44054382c211a303012ee577619efbaa5df9e65e9f5", size = 30346, upload-time = "2025-04-03T15:59:56.928Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1a/c1/31b3184cba7b257a4a3b5ca5b88b9204ccb7aa02fe3c992280899293ed54/lightning_utilities-0.14.3-py3-none-any.whl", hash = "sha256:4ab9066aa36cd7b93a05713808901909e96cc3f187ea6fd3052b2fd91313b468", size = 28894, upload-time = "2025-04-03T15:59:55.658Z" }, +] + [[package]] name = "markupsafe" version = "3.0.2" @@ -1312,7 +2351,8 @@ source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", ] dependencies = [ { name = "contourpy", version = "1.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, @@ -1375,13 +2415,20 @@ name = "matplotlib" version = "3.10.3" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.12' and sys_platform == 'darwin'", - "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -1446,6 +2493,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899, upload-time = "2024-04-15T13:44:43.265Z" }, ] +[[package]] +name = "mistune" +version = "3.1.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c4/79/bda47f7dd7c3c55770478d6d02c9960c430b0cf1773b72366ff89126ea31/mistune-3.1.3.tar.gz", hash = "sha256:a7035c21782b2becb6be62f8f25d3df81ccb4d6fa477a6525b15af06539f02a0", size = 94347, upload-time = "2025-03-19T14:27:24.955Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/01/4d/23c4e4f09da849e127e9f123241946c23c1e30f45a88366879e064211815/mistune-3.1.3-py3-none-any.whl", hash = "sha256:1a32314113cff28aa6432e99e522677c8587fd83e3d51c29b82a52409c842bd9", size = 53410, upload-time = "2025-03-19T14:27:23.451Z" }, +] + [[package]] name = "mpmath" version = "1.3.0" @@ -1513,6 +2572,182 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/20/d6/cd62cded572e5e25892747a5d27850170bcd03c855e9c69c538e024de6f9/msgpack-1.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:40eae974c873b2992fd36424a5d9407f93e97656d999f43fca9d29f820899084", size = 71700, upload-time = "2025-06-13T06:52:50.244Z" }, ] +[[package]] +name = "multidict" +version = "6.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3d/2c/5dad12e82fbdf7470f29bff2171484bf07cb3b16ada60a6589af8f376440/multidict-6.6.3.tar.gz", hash = "sha256:798a9eb12dab0a6c2e29c1de6f3468af5cb2da6053a20dfa3344907eed0937cc", size = 101006, upload-time = "2025-06-30T15:53:46.929Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/67/414933982bce2efce7cbcb3169eaaf901e0f25baec69432b4874dfb1f297/multidict-6.6.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a2be5b7b35271f7fff1397204ba6708365e3d773579fe2a30625e16c4b4ce817", size = 77017, upload-time = "2025-06-30T15:50:58.931Z" }, + { url = "https://files.pythonhosted.org/packages/8a/fe/d8a3ee1fad37dc2ef4f75488b0d9d4f25bf204aad8306cbab63d97bff64a/multidict-6.6.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:12f4581d2930840295c461764b9a65732ec01250b46c6b2c510d7ee68872b140", size = 44897, upload-time = "2025-06-30T15:51:00.999Z" }, + { url = "https://files.pythonhosted.org/packages/1f/e0/265d89af8c98240265d82b8cbcf35897f83b76cd59ee3ab3879050fd8c45/multidict-6.6.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:dd7793bab517e706c9ed9d7310b06c8672fd0aeee5781bfad612f56b8e0f7d14", size = 44574, upload-time = "2025-06-30T15:51:02.449Z" }, + { url = "https://files.pythonhosted.org/packages/e6/05/6b759379f7e8e04ccc97cfb2a5dcc5cdbd44a97f072b2272dc51281e6a40/multidict-6.6.3-cp310-cp310-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:72d8815f2cd3cf3df0f83cac3f3ef801d908b2d90409ae28102e0553af85545a", size = 225729, upload-time = "2025-06-30T15:51:03.794Z" }, + { url = "https://files.pythonhosted.org/packages/4e/f5/8d5a15488edd9a91fa4aad97228d785df208ed6298580883aa3d9def1959/multidict-6.6.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:531e331a2ee53543ab32b16334e2deb26f4e6b9b28e41f8e0c87e99a6c8e2d69", size = 242515, upload-time = "2025-06-30T15:51:05.002Z" }, + { url = "https://files.pythonhosted.org/packages/6e/b5/a8f317d47d0ac5bb746d6d8325885c8967c2a8ce0bb57be5399e3642cccb/multidict-6.6.3-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:42ca5aa9329a63be8dc49040f63817d1ac980e02eeddba763a9ae5b4027b9c9c", size = 222224, upload-time = "2025-06-30T15:51:06.148Z" }, + { url = "https://files.pythonhosted.org/packages/76/88/18b2a0d5e80515fa22716556061189c2853ecf2aa2133081ebbe85ebea38/multidict-6.6.3-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:208b9b9757060b9faa6f11ab4bc52846e4f3c2fb8b14d5680c8aac80af3dc751", size = 253124, upload-time = "2025-06-30T15:51:07.375Z" }, + { url = "https://files.pythonhosted.org/packages/62/bf/ebfcfd6b55a1b05ef16d0775ae34c0fe15e8dab570d69ca9941073b969e7/multidict-6.6.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:acf6b97bd0884891af6a8b43d0f586ab2fcf8e717cbd47ab4bdddc09e20652d8", size = 251529, upload-time = "2025-06-30T15:51:08.691Z" }, + { url = "https://files.pythonhosted.org/packages/44/11/780615a98fd3775fc309d0234d563941af69ade2df0bb82c91dda6ddaea1/multidict-6.6.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:68e9e12ed00e2089725669bdc88602b0b6f8d23c0c95e52b95f0bc69f7fe9b55", size = 241627, upload-time = "2025-06-30T15:51:10.605Z" }, + { url = "https://files.pythonhosted.org/packages/28/3d/35f33045e21034b388686213752cabc3a1b9d03e20969e6fa8f1b1d82db1/multidict-6.6.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:05db2f66c9addb10cfa226e1acb363450fab2ff8a6df73c622fefe2f5af6d4e7", size = 239351, upload-time = "2025-06-30T15:51:12.18Z" }, + { url = "https://files.pythonhosted.org/packages/6e/cc/ff84c03b95b430015d2166d9aae775a3985d757b94f6635010d0038d9241/multidict-6.6.3-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:0db58da8eafb514db832a1b44f8fa7906fdd102f7d982025f816a93ba45e3dcb", size = 233429, upload-time = "2025-06-30T15:51:13.533Z" }, + { url = "https://files.pythonhosted.org/packages/2e/f0/8cd49a0b37bdea673a4b793c2093f2f4ba8e7c9d6d7c9bd672fd6d38cd11/multidict-6.6.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:14117a41c8fdb3ee19c743b1c027da0736fdb79584d61a766da53d399b71176c", size = 243094, upload-time = "2025-06-30T15:51:14.815Z" }, + { url = "https://files.pythonhosted.org/packages/96/19/5d9a0cfdafe65d82b616a45ae950975820289069f885328e8185e64283c2/multidict-6.6.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:877443eaaabcd0b74ff32ebeed6f6176c71850feb7d6a1d2db65945256ea535c", size = 248957, upload-time = "2025-06-30T15:51:16.076Z" }, + { url = "https://files.pythonhosted.org/packages/e6/dc/c90066151da87d1e489f147b9b4327927241e65f1876702fafec6729c014/multidict-6.6.3-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:70b72e749a4f6e7ed8fb334fa8d8496384840319512746a5f42fa0aec79f4d61", size = 243590, upload-time = "2025-06-30T15:51:17.413Z" }, + { url = "https://files.pythonhosted.org/packages/ec/39/458afb0cccbb0ee9164365273be3e039efddcfcb94ef35924b7dbdb05db0/multidict-6.6.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:43571f785b86afd02b3855c5ac8e86ec921b760298d6f82ff2a61daf5a35330b", size = 237487, upload-time = "2025-06-30T15:51:19.039Z" }, + { url = "https://files.pythonhosted.org/packages/35/38/0016adac3990426610a081787011177e661875546b434f50a26319dc8372/multidict-6.6.3-cp310-cp310-win32.whl", hash = "sha256:20c5a0c3c13a15fd5ea86c42311859f970070e4e24de5a550e99d7c271d76318", size = 41390, upload-time = "2025-06-30T15:51:20.362Z" }, + { url = "https://files.pythonhosted.org/packages/f3/d2/17897a8f3f2c5363d969b4c635aa40375fe1f09168dc09a7826780bfb2a4/multidict-6.6.3-cp310-cp310-win_amd64.whl", hash = "sha256:ab0a34a007704c625e25a9116c6770b4d3617a071c8a7c30cd338dfbadfe6485", size = 45954, upload-time = "2025-06-30T15:51:21.383Z" }, + { url = "https://files.pythonhosted.org/packages/2d/5f/d4a717c1e457fe44072e33fa400d2b93eb0f2819c4d669381f925b7cba1f/multidict-6.6.3-cp310-cp310-win_arm64.whl", hash = "sha256:769841d70ca8bdd140a715746199fc6473414bd02efd678d75681d2d6a8986c5", size = 42981, upload-time = "2025-06-30T15:51:22.809Z" }, + { url = "https://files.pythonhosted.org/packages/08/f0/1a39863ced51f639c81a5463fbfa9eb4df59c20d1a8769ab9ef4ca57ae04/multidict-6.6.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:18f4eba0cbac3546b8ae31e0bbc55b02c801ae3cbaf80c247fcdd89b456ff58c", size = 76445, upload-time = "2025-06-30T15:51:24.01Z" }, + { url = "https://files.pythonhosted.org/packages/c9/0e/a7cfa451c7b0365cd844e90b41e21fab32edaa1e42fc0c9f68461ce44ed7/multidict-6.6.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef43b5dd842382329e4797c46f10748d8c2b6e0614f46b4afe4aee9ac33159df", size = 44610, upload-time = "2025-06-30T15:51:25.158Z" }, + { url = "https://files.pythonhosted.org/packages/c6/bb/a14a4efc5ee748cc1904b0748be278c31b9295ce5f4d2ef66526f410b94d/multidict-6.6.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bf9bd1fd5eec01494e0f2e8e446a74a85d5e49afb63d75a9934e4a5423dba21d", size = 44267, upload-time = "2025-06-30T15:51:26.326Z" }, + { url = "https://files.pythonhosted.org/packages/c2/f8/410677d563c2d55e063ef74fe578f9d53fe6b0a51649597a5861f83ffa15/multidict-6.6.3-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:5bd8d6f793a787153956cd35e24f60485bf0651c238e207b9a54f7458b16d539", size = 230004, upload-time = "2025-06-30T15:51:27.491Z" }, + { url = "https://files.pythonhosted.org/packages/fd/df/2b787f80059314a98e1ec6a4cc7576244986df3e56b3c755e6fc7c99e038/multidict-6.6.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1bf99b4daf908c73856bd87ee0a2499c3c9a3d19bb04b9c6025e66af3fd07462", size = 247196, upload-time = "2025-06-30T15:51:28.762Z" }, + { url = "https://files.pythonhosted.org/packages/05/f2/f9117089151b9a8ab39f9019620d10d9718eec2ac89e7ca9d30f3ec78e96/multidict-6.6.3-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:0b9e59946b49dafaf990fd9c17ceafa62976e8471a14952163d10a7a630413a9", size = 225337, upload-time = "2025-06-30T15:51:30.025Z" }, + { url = "https://files.pythonhosted.org/packages/93/2d/7115300ec5b699faa152c56799b089a53ed69e399c3c2d528251f0aeda1a/multidict-6.6.3-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e2db616467070d0533832d204c54eea6836a5e628f2cb1e6dfd8cd6ba7277cb7", size = 257079, upload-time = "2025-06-30T15:51:31.716Z" }, + { url = "https://files.pythonhosted.org/packages/15/ea/ff4bab367623e39c20d3b07637225c7688d79e4f3cc1f3b9f89867677f9a/multidict-6.6.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7394888236621f61dcdd25189b2768ae5cc280f041029a5bcf1122ac63df79f9", size = 255461, upload-time = "2025-06-30T15:51:33.029Z" }, + { url = "https://files.pythonhosted.org/packages/74/07/2c9246cda322dfe08be85f1b8739646f2c4c5113a1422d7a407763422ec4/multidict-6.6.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f114d8478733ca7388e7c7e0ab34b72547476b97009d643644ac33d4d3fe1821", size = 246611, upload-time = "2025-06-30T15:51:34.47Z" }, + { url = "https://files.pythonhosted.org/packages/a8/62/279c13d584207d5697a752a66ffc9bb19355a95f7659140cb1b3cf82180e/multidict-6.6.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cdf22e4db76d323bcdc733514bf732e9fb349707c98d341d40ebcc6e9318ef3d", size = 243102, upload-time = "2025-06-30T15:51:36.525Z" }, + { url = "https://files.pythonhosted.org/packages/69/cc/e06636f48c6d51e724a8bc8d9e1db5f136fe1df066d7cafe37ef4000f86a/multidict-6.6.3-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:e995a34c3d44ab511bfc11aa26869b9d66c2d8c799fa0e74b28a473a692532d6", size = 238693, upload-time = "2025-06-30T15:51:38.278Z" }, + { url = "https://files.pythonhosted.org/packages/89/a4/66c9d8fb9acf3b226cdd468ed009537ac65b520aebdc1703dd6908b19d33/multidict-6.6.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:766a4a5996f54361d8d5a9050140aa5362fe48ce51c755a50c0bc3706460c430", size = 246582, upload-time = "2025-06-30T15:51:39.709Z" }, + { url = "https://files.pythonhosted.org/packages/cf/01/c69e0317be556e46257826d5449feb4e6aa0d18573e567a48a2c14156f1f/multidict-6.6.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:3893a0d7d28a7fe6ca7a1f760593bc13038d1d35daf52199d431b61d2660602b", size = 253355, upload-time = "2025-06-30T15:51:41.013Z" }, + { url = "https://files.pythonhosted.org/packages/c0/da/9cc1da0299762d20e626fe0042e71b5694f9f72d7d3f9678397cbaa71b2b/multidict-6.6.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:934796c81ea996e61914ba58064920d6cad5d99140ac3167901eb932150e2e56", size = 247774, upload-time = "2025-06-30T15:51:42.291Z" }, + { url = "https://files.pythonhosted.org/packages/e6/91/b22756afec99cc31105ddd4a52f95ab32b1a4a58f4d417979c570c4a922e/multidict-6.6.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9ed948328aec2072bc00f05d961ceadfd3e9bfc2966c1319aeaf7b7c21219183", size = 242275, upload-time = "2025-06-30T15:51:43.642Z" }, + { url = "https://files.pythonhosted.org/packages/be/f1/adcc185b878036a20399d5be5228f3cbe7f823d78985d101d425af35c800/multidict-6.6.3-cp311-cp311-win32.whl", hash = "sha256:9f5b28c074c76afc3e4c610c488e3493976fe0e596dd3db6c8ddfbb0134dcac5", size = 41290, upload-time = "2025-06-30T15:51:45.264Z" }, + { url = "https://files.pythonhosted.org/packages/e0/d4/27652c1c6526ea6b4f5ddd397e93f4232ff5de42bea71d339bc6a6cc497f/multidict-6.6.3-cp311-cp311-win_amd64.whl", hash = "sha256:bc7f6fbc61b1c16050a389c630da0b32fc6d4a3d191394ab78972bf5edc568c2", size = 45942, upload-time = "2025-06-30T15:51:46.377Z" }, + { url = "https://files.pythonhosted.org/packages/16/18/23f4932019804e56d3c2413e237f866444b774b0263bcb81df2fdecaf593/multidict-6.6.3-cp311-cp311-win_arm64.whl", hash = "sha256:d4e47d8faffaae822fb5cba20937c048d4f734f43572e7079298a6c39fb172cb", size = 42880, upload-time = "2025-06-30T15:51:47.561Z" }, + { url = "https://files.pythonhosted.org/packages/0e/a0/6b57988ea102da0623ea814160ed78d45a2645e4bbb499c2896d12833a70/multidict-6.6.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:056bebbeda16b2e38642d75e9e5310c484b7c24e3841dc0fb943206a72ec89d6", size = 76514, upload-time = "2025-06-30T15:51:48.728Z" }, + { url = "https://files.pythonhosted.org/packages/07/7a/d1e92665b0850c6c0508f101f9cf0410c1afa24973e1115fe9c6a185ebf7/multidict-6.6.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e5f481cccb3c5c5e5de5d00b5141dc589c1047e60d07e85bbd7dea3d4580d63f", size = 45394, upload-time = "2025-06-30T15:51:49.986Z" }, + { url = "https://files.pythonhosted.org/packages/52/6f/dd104490e01be6ef8bf9573705d8572f8c2d2c561f06e3826b081d9e6591/multidict-6.6.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:10bea2ee839a759ee368b5a6e47787f399b41e70cf0c20d90dfaf4158dfb4e55", size = 43590, upload-time = "2025-06-30T15:51:51.331Z" }, + { url = "https://files.pythonhosted.org/packages/44/fe/06e0e01b1b0611e6581b7fd5a85b43dacc08b6cea3034f902f383b0873e5/multidict-6.6.3-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:2334cfb0fa9549d6ce2c21af2bfbcd3ac4ec3646b1b1581c88e3e2b1779ec92b", size = 237292, upload-time = "2025-06-30T15:51:52.584Z" }, + { url = "https://files.pythonhosted.org/packages/ce/71/4f0e558fb77696b89c233c1ee2d92f3e1d5459070a0e89153c9e9e804186/multidict-6.6.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b8fee016722550a2276ca2cb5bb624480e0ed2bd49125b2b73b7010b9090e888", size = 258385, upload-time = "2025-06-30T15:51:53.913Z" }, + { url = "https://files.pythonhosted.org/packages/e3/25/cca0e68228addad24903801ed1ab42e21307a1b4b6dd2cf63da5d3ae082a/multidict-6.6.3-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e5511cb35f5c50a2db21047c875eb42f308c5583edf96bd8ebf7d770a9d68f6d", size = 242328, upload-time = "2025-06-30T15:51:55.672Z" }, + { url = "https://files.pythonhosted.org/packages/6e/a3/46f2d420d86bbcb8fe660b26a10a219871a0fbf4d43cb846a4031533f3e0/multidict-6.6.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:712b348f7f449948e0a6c4564a21c7db965af900973a67db432d724619b3c680", size = 268057, upload-time = "2025-06-30T15:51:57.037Z" }, + { url = "https://files.pythonhosted.org/packages/9e/73/1c743542fe00794a2ec7466abd3f312ccb8fad8dff9f36d42e18fb1ec33e/multidict-6.6.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e4e15d2138ee2694e038e33b7c3da70e6b0ad8868b9f8094a72e1414aeda9c1a", size = 269341, upload-time = "2025-06-30T15:51:59.111Z" }, + { url = "https://files.pythonhosted.org/packages/a4/11/6ec9dcbe2264b92778eeb85407d1df18812248bf3506a5a1754bc035db0c/multidict-6.6.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8df25594989aebff8a130f7899fa03cbfcc5d2b5f4a461cf2518236fe6f15961", size = 256081, upload-time = "2025-06-30T15:52:00.533Z" }, + { url = "https://files.pythonhosted.org/packages/9b/2b/631b1e2afeb5f1696846d747d36cda075bfdc0bc7245d6ba5c319278d6c4/multidict-6.6.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:159ca68bfd284a8860f8d8112cf0521113bffd9c17568579e4d13d1f1dc76b65", size = 253581, upload-time = "2025-06-30T15:52:02.43Z" }, + { url = "https://files.pythonhosted.org/packages/bf/0e/7e3b93f79efeb6111d3bf9a1a69e555ba1d07ad1c11bceb56b7310d0d7ee/multidict-6.6.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:e098c17856a8c9ade81b4810888c5ad1914099657226283cab3062c0540b0643", size = 250750, upload-time = "2025-06-30T15:52:04.26Z" }, + { url = "https://files.pythonhosted.org/packages/ad/9e/086846c1d6601948e7de556ee464a2d4c85e33883e749f46b9547d7b0704/multidict-6.6.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:67c92ed673049dec52d7ed39f8cf9ebbadf5032c774058b4406d18c8f8fe7063", size = 251548, upload-time = "2025-06-30T15:52:06.002Z" }, + { url = "https://files.pythonhosted.org/packages/8c/7b/86ec260118e522f1a31550e87b23542294880c97cfbf6fb18cc67b044c66/multidict-6.6.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:bd0578596e3a835ef451784053cfd327d607fc39ea1a14812139339a18a0dbc3", size = 262718, upload-time = "2025-06-30T15:52:07.707Z" }, + { url = "https://files.pythonhosted.org/packages/8c/bd/22ce8f47abb0be04692c9fc4638508b8340987b18691aa7775d927b73f72/multidict-6.6.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:346055630a2df2115cd23ae271910b4cae40f4e336773550dca4889b12916e75", size = 259603, upload-time = "2025-06-30T15:52:09.58Z" }, + { url = "https://files.pythonhosted.org/packages/07/9c/91b7ac1691be95cd1f4a26e36a74b97cda6aa9820632d31aab4410f46ebd/multidict-6.6.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:555ff55a359302b79de97e0468e9ee80637b0de1fce77721639f7cd9440b3a10", size = 251351, upload-time = "2025-06-30T15:52:10.947Z" }, + { url = "https://files.pythonhosted.org/packages/6f/5c/4d7adc739884f7a9fbe00d1eac8c034023ef8bad71f2ebe12823ca2e3649/multidict-6.6.3-cp312-cp312-win32.whl", hash = "sha256:73ab034fb8d58ff85c2bcbadc470efc3fafeea8affcf8722855fb94557f14cc5", size = 41860, upload-time = "2025-06-30T15:52:12.334Z" }, + { url = "https://files.pythonhosted.org/packages/6a/a3/0fbc7afdf7cb1aa12a086b02959307848eb6bcc8f66fcb66c0cb57e2a2c1/multidict-6.6.3-cp312-cp312-win_amd64.whl", hash = "sha256:04cbcce84f63b9af41bad04a54d4cc4e60e90c35b9e6ccb130be2d75b71f8c17", size = 45982, upload-time = "2025-06-30T15:52:13.6Z" }, + { url = "https://files.pythonhosted.org/packages/b8/95/8c825bd70ff9b02462dc18d1295dd08d3e9e4eb66856d292ffa62cfe1920/multidict-6.6.3-cp312-cp312-win_arm64.whl", hash = "sha256:0f1130b896ecb52d2a1e615260f3ea2af55fa7dc3d7c3003ba0c3121a759b18b", size = 43210, upload-time = "2025-06-30T15:52:14.893Z" }, + { url = "https://files.pythonhosted.org/packages/52/1d/0bebcbbb4f000751fbd09957257903d6e002943fc668d841a4cf2fb7f872/multidict-6.6.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:540d3c06d48507357a7d57721e5094b4f7093399a0106c211f33540fdc374d55", size = 75843, upload-time = "2025-06-30T15:52:16.155Z" }, + { url = "https://files.pythonhosted.org/packages/07/8f/cbe241b0434cfe257f65c2b1bcf9e8d5fb52bc708c5061fb29b0fed22bdf/multidict-6.6.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9c19cea2a690f04247d43f366d03e4eb110a0dc4cd1bbeee4d445435428ed35b", size = 45053, upload-time = "2025-06-30T15:52:17.429Z" }, + { url = "https://files.pythonhosted.org/packages/32/d2/0b3b23f9dbad5b270b22a3ac3ea73ed0a50ef2d9a390447061178ed6bdb8/multidict-6.6.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7af039820cfd00effec86bda5d8debef711a3e86a1d3772e85bea0f243a4bd65", size = 43273, upload-time = "2025-06-30T15:52:19.346Z" }, + { url = "https://files.pythonhosted.org/packages/fd/fe/6eb68927e823999e3683bc49678eb20374ba9615097d085298fd5b386564/multidict-6.6.3-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:500b84f51654fdc3944e936f2922114349bf8fdcac77c3092b03449f0e5bc2b3", size = 237124, upload-time = "2025-06-30T15:52:20.773Z" }, + { url = "https://files.pythonhosted.org/packages/e7/ab/320d8507e7726c460cb77117848b3834ea0d59e769f36fdae495f7669929/multidict-6.6.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f3fc723ab8a5c5ed6c50418e9bfcd8e6dceba6c271cee6728a10a4ed8561520c", size = 256892, upload-time = "2025-06-30T15:52:22.242Z" }, + { url = "https://files.pythonhosted.org/packages/76/60/38ee422db515ac69834e60142a1a69111ac96026e76e8e9aa347fd2e4591/multidict-6.6.3-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:94c47ea3ade005b5976789baaed66d4de4480d0a0bf31cef6edaa41c1e7b56a6", size = 240547, upload-time = "2025-06-30T15:52:23.736Z" }, + { url = "https://files.pythonhosted.org/packages/27/fb/905224fde2dff042b030c27ad95a7ae744325cf54b890b443d30a789b80e/multidict-6.6.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:dbc7cf464cc6d67e83e136c9f55726da3a30176f020a36ead246eceed87f1cd8", size = 266223, upload-time = "2025-06-30T15:52:25.185Z" }, + { url = "https://files.pythonhosted.org/packages/76/35/dc38ab361051beae08d1a53965e3e1a418752fc5be4d3fb983c5582d8784/multidict-6.6.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:900eb9f9da25ada070f8ee4a23f884e0ee66fe4e1a38c3af644256a508ad81ca", size = 267262, upload-time = "2025-06-30T15:52:26.969Z" }, + { url = "https://files.pythonhosted.org/packages/1f/a3/0a485b7f36e422421b17e2bbb5a81c1af10eac1d4476f2ff92927c730479/multidict-6.6.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7c6df517cf177da5d47ab15407143a89cd1a23f8b335f3a28d57e8b0a3dbb884", size = 254345, upload-time = "2025-06-30T15:52:28.467Z" }, + { url = "https://files.pythonhosted.org/packages/b4/59/bcdd52c1dab7c0e0d75ff19cac751fbd5f850d1fc39172ce809a74aa9ea4/multidict-6.6.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4ef421045f13879e21c994b36e728d8e7d126c91a64b9185810ab51d474f27e7", size = 252248, upload-time = "2025-06-30T15:52:29.938Z" }, + { url = "https://files.pythonhosted.org/packages/bb/a4/2d96aaa6eae8067ce108d4acee6f45ced5728beda55c0f02ae1072c730d1/multidict-6.6.3-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:6c1e61bb4f80895c081790b6b09fa49e13566df8fbff817da3f85b3a8192e36b", size = 250115, upload-time = "2025-06-30T15:52:31.416Z" }, + { url = "https://files.pythonhosted.org/packages/25/d2/ed9f847fa5c7d0677d4f02ea2c163d5e48573de3f57bacf5670e43a5ffaa/multidict-6.6.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:e5e8523bb12d7623cd8300dbd91b9e439a46a028cd078ca695eb66ba31adee3c", size = 249649, upload-time = "2025-06-30T15:52:32.996Z" }, + { url = "https://files.pythonhosted.org/packages/1f/af/9155850372563fc550803d3f25373308aa70f59b52cff25854086ecb4a79/multidict-6.6.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:ef58340cc896219e4e653dade08fea5c55c6df41bcc68122e3be3e9d873d9a7b", size = 261203, upload-time = "2025-06-30T15:52:34.521Z" }, + { url = "https://files.pythonhosted.org/packages/36/2f/c6a728f699896252cf309769089568a33c6439626648843f78743660709d/multidict-6.6.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:fc9dc435ec8699e7b602b94fe0cd4703e69273a01cbc34409af29e7820f777f1", size = 258051, upload-time = "2025-06-30T15:52:35.999Z" }, + { url = "https://files.pythonhosted.org/packages/d0/60/689880776d6b18fa2b70f6cc74ff87dd6c6b9b47bd9cf74c16fecfaa6ad9/multidict-6.6.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9e864486ef4ab07db5e9cb997bad2b681514158d6954dd1958dfb163b83d53e6", size = 249601, upload-time = "2025-06-30T15:52:37.473Z" }, + { url = "https://files.pythonhosted.org/packages/75/5e/325b11f2222a549019cf2ef879c1f81f94a0d40ace3ef55cf529915ba6cc/multidict-6.6.3-cp313-cp313-win32.whl", hash = "sha256:5633a82fba8e841bc5c5c06b16e21529573cd654f67fd833650a215520a6210e", size = 41683, upload-time = "2025-06-30T15:52:38.927Z" }, + { url = "https://files.pythonhosted.org/packages/b1/ad/cf46e73f5d6e3c775cabd2a05976547f3f18b39bee06260369a42501f053/multidict-6.6.3-cp313-cp313-win_amd64.whl", hash = "sha256:e93089c1570a4ad54c3714a12c2cef549dc9d58e97bcded193d928649cab78e9", size = 45811, upload-time = "2025-06-30T15:52:40.207Z" }, + { url = "https://files.pythonhosted.org/packages/c5/c9/2e3fe950db28fb7c62e1a5f46e1e38759b072e2089209bc033c2798bb5ec/multidict-6.6.3-cp313-cp313-win_arm64.whl", hash = "sha256:c60b401f192e79caec61f166da9c924e9f8bc65548d4246842df91651e83d600", size = 43056, upload-time = "2025-06-30T15:52:41.575Z" }, + { url = "https://files.pythonhosted.org/packages/3a/58/aaf8114cf34966e084a8cc9517771288adb53465188843d5a19862cb6dc3/multidict-6.6.3-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:02fd8f32d403a6ff13864b0851f1f523d4c988051eea0471d4f1fd8010f11134", size = 82811, upload-time = "2025-06-30T15:52:43.281Z" }, + { url = "https://files.pythonhosted.org/packages/71/af/5402e7b58a1f5b987a07ad98f2501fdba2a4f4b4c30cf114e3ce8db64c87/multidict-6.6.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:f3aa090106b1543f3f87b2041eef3c156c8da2aed90c63a2fbed62d875c49c37", size = 48304, upload-time = "2025-06-30T15:52:45.026Z" }, + { url = "https://files.pythonhosted.org/packages/39/65/ab3c8cafe21adb45b24a50266fd747147dec7847425bc2a0f6934b3ae9ce/multidict-6.6.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e924fb978615a5e33ff644cc42e6aa241effcf4f3322c09d4f8cebde95aff5f8", size = 46775, upload-time = "2025-06-30T15:52:46.459Z" }, + { url = "https://files.pythonhosted.org/packages/49/ba/9fcc1b332f67cc0c0c8079e263bfab6660f87fe4e28a35921771ff3eea0d/multidict-6.6.3-cp313-cp313t-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:b9fe5a0e57c6dbd0e2ce81ca66272282c32cd11d31658ee9553849d91289e1c1", size = 229773, upload-time = "2025-06-30T15:52:47.88Z" }, + { url = "https://files.pythonhosted.org/packages/a4/14/0145a251f555f7c754ce2dcbcd012939bbd1f34f066fa5d28a50e722a054/multidict-6.6.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b24576f208793ebae00280c59927c3b7c2a3b1655e443a25f753c4611bc1c373", size = 250083, upload-time = "2025-06-30T15:52:49.366Z" }, + { url = "https://files.pythonhosted.org/packages/9e/d4/d5c0bd2bbb173b586c249a151a26d2fb3ec7d53c96e42091c9fef4e1f10c/multidict-6.6.3-cp313-cp313t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:135631cb6c58eac37d7ac0df380294fecdc026b28837fa07c02e459c7fb9c54e", size = 228980, upload-time = "2025-06-30T15:52:50.903Z" }, + { url = "https://files.pythonhosted.org/packages/21/32/c9a2d8444a50ec48c4733ccc67254100c10e1c8ae8e40c7a2d2183b59b97/multidict-6.6.3-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:274d416b0df887aef98f19f21578653982cfb8a05b4e187d4a17103322eeaf8f", size = 257776, upload-time = "2025-06-30T15:52:52.764Z" }, + { url = "https://files.pythonhosted.org/packages/68/d0/14fa1699f4ef629eae08ad6201c6b476098f5efb051b296f4c26be7a9fdf/multidict-6.6.3-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e252017a817fad7ce05cafbe5711ed40faeb580e63b16755a3a24e66fa1d87c0", size = 256882, upload-time = "2025-06-30T15:52:54.596Z" }, + { url = "https://files.pythonhosted.org/packages/da/88/84a27570fbe303c65607d517a5f147cd2fc046c2d1da02b84b17b9bdc2aa/multidict-6.6.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2e4cc8d848cd4fe1cdee28c13ea79ab0ed37fc2e89dd77bac86a2e7959a8c3bc", size = 247816, upload-time = "2025-06-30T15:52:56.175Z" }, + { url = "https://files.pythonhosted.org/packages/1c/60/dca352a0c999ce96a5d8b8ee0b2b9f729dcad2e0b0c195f8286269a2074c/multidict-6.6.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9e236a7094b9c4c1b7585f6b9cca34b9d833cf079f7e4c49e6a4a6ec9bfdc68f", size = 245341, upload-time = "2025-06-30T15:52:57.752Z" }, + { url = "https://files.pythonhosted.org/packages/50/ef/433fa3ed06028f03946f3993223dada70fb700f763f70c00079533c34578/multidict-6.6.3-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:e0cb0ab69915c55627c933f0b555a943d98ba71b4d1c57bc0d0a66e2567c7471", size = 235854, upload-time = "2025-06-30T15:52:59.74Z" }, + { url = "https://files.pythonhosted.org/packages/1b/1f/487612ab56fbe35715320905215a57fede20de7db40a261759690dc80471/multidict-6.6.3-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:81ef2f64593aba09c5212a3d0f8c906a0d38d710a011f2f42759704d4557d3f2", size = 243432, upload-time = "2025-06-30T15:53:01.602Z" }, + { url = "https://files.pythonhosted.org/packages/da/6f/ce8b79de16cd885c6f9052c96a3671373d00c59b3ee635ea93e6e81b8ccf/multidict-6.6.3-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:b9cbc60010de3562545fa198bfc6d3825df430ea96d2cc509c39bd71e2e7d648", size = 252731, upload-time = "2025-06-30T15:53:03.517Z" }, + { url = "https://files.pythonhosted.org/packages/bb/fe/a2514a6aba78e5abefa1624ca85ae18f542d95ac5cde2e3815a9fbf369aa/multidict-6.6.3-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:70d974eaaa37211390cd02ef93b7e938de564bbffa866f0b08d07e5e65da783d", size = 247086, upload-time = "2025-06-30T15:53:05.48Z" }, + { url = "https://files.pythonhosted.org/packages/8c/22/b788718d63bb3cce752d107a57c85fcd1a212c6c778628567c9713f9345a/multidict-6.6.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:3713303e4a6663c6d01d648a68f2848701001f3390a030edaaf3fc949c90bf7c", size = 243338, upload-time = "2025-06-30T15:53:07.522Z" }, + { url = "https://files.pythonhosted.org/packages/22/d6/fdb3d0670819f2228f3f7d9af613d5e652c15d170c83e5f1c94fbc55a25b/multidict-6.6.3-cp313-cp313t-win32.whl", hash = "sha256:639ecc9fe7cd73f2495f62c213e964843826f44505a3e5d82805aa85cac6f89e", size = 47812, upload-time = "2025-06-30T15:53:09.263Z" }, + { url = "https://files.pythonhosted.org/packages/b6/d6/a9d2c808f2c489ad199723197419207ecbfbc1776f6e155e1ecea9c883aa/multidict-6.6.3-cp313-cp313t-win_amd64.whl", hash = "sha256:9f97e181f344a0ef3881b573d31de8542cc0dbc559ec68c8f8b5ce2c2e91646d", size = 53011, upload-time = "2025-06-30T15:53:11.038Z" }, + { url = "https://files.pythonhosted.org/packages/f2/40/b68001cba8188dd267590a111f9661b6256debc327137667e832bf5d66e8/multidict-6.6.3-cp313-cp313t-win_arm64.whl", hash = "sha256:ce8b7693da41a3c4fde5871c738a81490cea5496c671d74374c8ab889e1834fb", size = 45254, upload-time = "2025-06-30T15:53:12.421Z" }, + { url = "https://files.pythonhosted.org/packages/d2/64/ba29bd6dfc895e592b2f20f92378e692ac306cf25dd0be2f8e0a0f898edb/multidict-6.6.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c8161b5a7778d3137ea2ee7ae8a08cce0010de3b00ac671c5ebddeaa17cefd22", size = 76959, upload-time = "2025-06-30T15:53:13.827Z" }, + { url = "https://files.pythonhosted.org/packages/ca/cd/872ae4c134257dacebff59834983c1615d6ec863b6e3d360f3203aad8400/multidict-6.6.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1328201ee930f069961ae707d59c6627ac92e351ed5b92397cf534d1336ce557", size = 44864, upload-time = "2025-06-30T15:53:15.658Z" }, + { url = "https://files.pythonhosted.org/packages/15/35/d417d8f62f2886784b76df60522d608aba39dfc83dd53b230ca71f2d4c53/multidict-6.6.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b1db4d2093d6b235de76932febf9d50766cf49a5692277b2c28a501c9637f616", size = 44540, upload-time = "2025-06-30T15:53:17.208Z" }, + { url = "https://files.pythonhosted.org/packages/85/59/25cddf781f12cddb2386baa29744a3fdd160eb705539b48065f0cffd86d5/multidict-6.6.3-cp39-cp39-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:53becb01dd8ebd19d1724bebe369cfa87e4e7f29abbbe5c14c98ce4c383e16cd", size = 224075, upload-time = "2025-06-30T15:53:18.705Z" }, + { url = "https://files.pythonhosted.org/packages/c4/21/4055b6a527954c572498a8068c26bd3b75f2b959080e17e12104b592273c/multidict-6.6.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41bb9d1d4c303886e2d85bade86e59885112a7f4277af5ad47ab919a2251f306", size = 240535, upload-time = "2025-06-30T15:53:20.359Z" }, + { url = "https://files.pythonhosted.org/packages/58/98/17f1f80bdba0b2fef49cf4ba59cebf8a81797f745f547abb5c9a4039df62/multidict-6.6.3-cp39-cp39-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:775b464d31dac90f23192af9c291dc9f423101857e33e9ebf0020a10bfcf4144", size = 219361, upload-time = "2025-06-30T15:53:22.371Z" }, + { url = "https://files.pythonhosted.org/packages/f8/0e/a5e595fdd0820069f0c29911d5dc9dc3a75ec755ae733ce59a4e6962ae42/multidict-6.6.3-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:d04d01f0a913202205a598246cf77826fe3baa5a63e9f6ccf1ab0601cf56eca0", size = 251207, upload-time = "2025-06-30T15:53:24.307Z" }, + { url = "https://files.pythonhosted.org/packages/66/9e/0f51e4cffea2daf24c137feabc9ec848ce50f8379c9badcbac00b41ab55e/multidict-6.6.3-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d25594d3b38a2e6cabfdcafef339f754ca6e81fbbdb6650ad773ea9775af35ab", size = 249749, upload-time = "2025-06-30T15:53:26.056Z" }, + { url = "https://files.pythonhosted.org/packages/49/a0/a7cfc13c9a71ceb8c1c55457820733af9ce01e121139271f7b13e30c29d2/multidict-6.6.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:35712f1748d409e0707b165bf49f9f17f9e28ae85470c41615778f8d4f7d9609", size = 239202, upload-time = "2025-06-30T15:53:28.096Z" }, + { url = "https://files.pythonhosted.org/packages/c7/50/7ae0d1149ac71cab6e20bb7faf2a1868435974994595dadfdb7377f7140f/multidict-6.6.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1c8082e5814b662de8589d6a06c17e77940d5539080cbab9fe6794b5241b76d9", size = 237269, upload-time = "2025-06-30T15:53:30.124Z" }, + { url = "https://files.pythonhosted.org/packages/b4/ac/2d0bf836c9c63a57360d57b773359043b371115e1c78ff648993bf19abd0/multidict-6.6.3-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:61af8a4b771f1d4d000b3168c12c3120ccf7284502a94aa58c68a81f5afac090", size = 232961, upload-time = "2025-06-30T15:53:31.766Z" }, + { url = "https://files.pythonhosted.org/packages/85/e1/68a65f069df298615591e70e48bfd379c27d4ecb252117c18bf52eebc237/multidict-6.6.3-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:448e4a9afccbf297577f2eaa586f07067441e7b63c8362a3540ba5a38dc0f14a", size = 240863, upload-time = "2025-06-30T15:53:33.488Z" }, + { url = "https://files.pythonhosted.org/packages/ae/ab/702f1baca649f88ea1dc6259fc2aa4509f4ad160ba48c8e61fbdb4a5a365/multidict-6.6.3-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:233ad16999afc2bbd3e534ad8dbe685ef8ee49a37dbc2cdc9514e57b6d589ced", size = 246800, upload-time = "2025-06-30T15:53:35.21Z" }, + { url = "https://files.pythonhosted.org/packages/5e/0b/726e690bfbf887985a8710ef2f25f1d6dd184a35bd3b36429814f810a2fc/multidict-6.6.3-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:bb933c891cd4da6bdcc9733d048e994e22e1883287ff7540c2a0f3b117605092", size = 242034, upload-time = "2025-06-30T15:53:36.913Z" }, + { url = "https://files.pythonhosted.org/packages/73/bb/839486b27bcbcc2e0d875fb9d4012b4b6aa99639137343106aa7210e047a/multidict-6.6.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:37b09ca60998e87734699e88c2363abfd457ed18cfbf88e4009a4e83788e63ed", size = 235377, upload-time = "2025-06-30T15:53:38.618Z" }, + { url = "https://files.pythonhosted.org/packages/e3/46/574d75ab7b9ae8690fe27e89f5fcd0121633112b438edfb9ed2be8be096b/multidict-6.6.3-cp39-cp39-win32.whl", hash = "sha256:f54cb79d26d0cd420637d184af38f0668558f3c4bbe22ab7ad830e67249f2e0b", size = 41420, upload-time = "2025-06-30T15:53:40.309Z" }, + { url = "https://files.pythonhosted.org/packages/78/c3/8b3bc755508b777868349f4bfa844d3d31832f075ee800a3d6f1807338c5/multidict-6.6.3-cp39-cp39-win_amd64.whl", hash = "sha256:295adc9c0551e5d5214b45cf29ca23dbc28c2d197a9c30d51aed9e037cb7c578", size = 46124, upload-time = "2025-06-30T15:53:41.984Z" }, + { url = "https://files.pythonhosted.org/packages/b2/30/5a66e7e4550e80975faee5b5dd9e9bd09194d2fd8f62363119b9e46e204b/multidict-6.6.3-cp39-cp39-win_arm64.whl", hash = "sha256:15332783596f227db50fb261c2c251a58ac3873c457f3a550a95d5c0aa3c770d", size = 42973, upload-time = "2025-06-30T15:53:43.505Z" }, + { url = "https://files.pythonhosted.org/packages/d8/30/9aec301e9772b098c1f5c0ca0279237c9766d94b97802e9888010c64b0ed/multidict-6.6.3-py3-none-any.whl", hash = "sha256:8db10f29c7541fc5da4defd8cd697e1ca429db743fa716325f236079b96f775a", size = 12313, upload-time = "2025-06-30T15:53:45.437Z" }, +] + +[[package]] +name = "nbclient" +version = "0.10.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "nbformat" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/87/66/7ffd18d58eae90d5721f9f39212327695b749e23ad44b3881744eaf4d9e8/nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193", size = 62424, upload-time = "2024-12-19T10:32:27.164Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/34/6d/e7fa07f03a4a7b221d94b4d586edb754a9b0dc3c9e2c93353e9fa4e0d117/nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d", size = 25434, upload-time = "2024-12-19T10:32:24.139Z" }, +] + +[[package]] +name = "nbconvert" +version = "7.16.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "beautifulsoup4" }, + { name = "bleach", extra = ["css"] }, + { name = "defusedxml" }, + { name = "importlib-metadata", marker = "python_full_version < '3.10'" }, + { name = "jinja2" }, + { name = "jupyter-core" }, + { name = "jupyterlab-pygments" }, + { name = "markupsafe" }, + { name = "mistune" }, + { name = "nbclient" }, + { name = "nbformat" }, + { name = "packaging" }, + { name = "pandocfilters" }, + { name = "pygments" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a3/59/f28e15fc47ffb73af68a8d9b47367a8630d76e97ae85ad18271b9db96fdf/nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582", size = 857715, upload-time = "2025-01-28T09:29:14.724Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cc/9a/cd673b2f773a12c992f41309ef81b99da1690426bd2f96957a7ade0d3ed7/nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b", size = 258525, upload-time = "2025-01-28T09:29:12.551Z" }, +] + +[[package]] +name = "nbformat" +version = "5.10.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "fastjsonschema" }, + { name = "jsonschema" }, + { name = "jupyter-core" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6d/fd/91545e604bc3dad7dca9ed03284086039b294c6b3d75c0d2fa45f9e9caf3/nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a", size = 142749, upload-time = "2024-04-04T11:20:37.371Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b", size = 78454, upload-time = "2024-04-04T11:20:34.895Z" }, +] + [[package]] name = "ndindex" version = "1.10.0" @@ -1598,7 +2833,8 @@ source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", ] sdist = { url = "https://files.pythonhosted.org/packages/c4/80/a84676339aaae2f1cfdf9f418701dd634aef9cc76f708ef55c36ff39c3ca/networkx-3.2.1.tar.gz", hash = "sha256:9f1bb5cf3409bf324e0a722c20bdb4c20ee39bf1c30ce8ae499c8502b0b5e0c6", size = 2073928, upload-time = "2023-10-28T08:41:39.364Z" } wheels = [ @@ -1610,7 +2846,8 @@ name = "networkx" version = "3.4.2" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -1624,10 +2861,16 @@ name = "networkx" version = "3.5" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.12' and sys_platform == 'darwin'", - "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -1636,6 +2879,34 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl", hash = "sha256:0030d386a9a06dee3565298b4a734b68589749a544acbb6c412dc9e2489ec6ec", size = 2034406, upload-time = "2025-05-29T11:35:04.961Z" }, ] +[[package]] +name = "notebook" +version = "7.4.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-server" }, + { name = "jupyterlab" }, + { name = "jupyterlab-server" }, + { name = "notebook-shim" }, + { name = "tornado" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b1/4e/a40b5a94eb01fc51746db7854296d88b84905ab18ee0fcef853a60d708a3/notebook-7.4.4.tar.gz", hash = "sha256:392fd501e266f2fb3466c6fcd3331163a2184968cb5c5accf90292e01dfe528c", size = 13883628, upload-time = "2025-06-30T13:04:18.099Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/c0/e64d2047fd752249b0b69f6aee2a7049eb94e7273e5baabc8b8ad05cc068/notebook-7.4.4-py3-none-any.whl", hash = "sha256:32840f7f777b6bff79bb101159336e9b332bdbfba1495b8739e34d1d65cbc1c0", size = 14288000, upload-time = "2025-06-30T13:04:14.584Z" }, +] + +[[package]] +name = "notebook-shim" +version = "0.2.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-server" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/54/d2/92fa3243712b9a3e8bafaf60aac366da1cada3639ca767ff4b5b3654ec28/notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb", size = 13167, upload-time = "2024-02-14T23:35:18.353Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef", size = 13307, upload-time = "2024-02-14T23:35:16.286Z" }, +] + [[package]] name = "numexpr" version = "2.10.2" @@ -1643,7 +2914,8 @@ source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", ] dependencies = [ { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, @@ -1692,13 +2964,20 @@ name = "numexpr" version = "2.11.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.12' and sys_platform == 'darwin'", - "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -1747,7 +3026,8 @@ source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", ] sdist = { url = "https://files.pythonhosted.org/packages/a9/75/10dd1f8116a8b796cb2c737b674e02d02e80454bda953fa7e65d8c12b016/numpy-2.0.2.tar.gz", hash = "sha256:883c987dee1880e2a864ab0dc9892292582510604156762362d9326444636e78", size = 18902015, upload-time = "2024-08-26T20:19:40.945Z" } wheels = [ @@ -1802,7 +3082,8 @@ name = "numpy" version = "2.2.6" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -1869,10 +3150,16 @@ name = "numpy" version = "2.3.1" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.12' and sys_platform == 'darwin'", - "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -1931,22 +3218,114 @@ wheels = [ ] [[package]] -name = "opencv-python" -version = "4.11.0.86" +name = "omegaconf" +version = "2.3.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, - { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "antlr4-python3-runtime" }, + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/09/48/6388f1bb9da707110532cb70ec4d2822858ddfb44f1cdf1233c20a80ea4b/omegaconf-2.3.0.tar.gz", hash = "sha256:d5d4b6d29955cc50ad50c46dc269bcd92c6e00f5f90d23ab5fee7bfca4ba4cc7", size = 3298120, upload-time = "2022-12-08T20:59:22.753Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e3/94/1843518e420fa3ed6919835845df698c7e27e183cb997394e4a670973a65/omegaconf-2.3.0-py3-none-any.whl", hash = "sha256:7b4df175cdb08ba400f45cae3bdcae7ba8365db4d165fc65fd04b050ab63b46b", size = 79500, upload-time = "2022-12-08T20:59:19.686Z" }, +] + +[[package]] +name = "opencensus" +version = "0.11.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "google-api-core" }, + { name = "opencensus-context" }, + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/15/a7/a46dcffa1b63084f9f17fe3c8cb20724c4c8f91009fd0b2cfdb27d5d2b35/opencensus-0.11.4.tar.gz", hash = "sha256:cbef87d8b8773064ab60e5c2a1ced58bbaa38a6d052c41aec224958ce544eff2", size = 64966, upload-time = "2024-01-03T18:04:07.085Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b5/ed/9fbdeb23a09e430d87b7d72d430484b88184633dc50f6bfb792354b6f661/opencensus-0.11.4-py2.py3-none-any.whl", hash = "sha256:a18487ce68bc19900336e0ff4655c5a116daf10c1b3685ece8d971bddad6a864", size = 128225, upload-time = "2024-01-03T18:04:05.127Z" }, +] + +[[package]] +name = "opencensus-context" +version = "0.1.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4c/96/3b6f638f6275a8abbd45e582448723bffa29c1fb426721dedb5c72f7d056/opencensus-context-0.1.3.tar.gz", hash = "sha256:a03108c3c10d8c80bb5ddf5c8a1f033161fa61972a9917f9b9b3a18517f0088c", size = 4066, upload-time = "2022-08-03T22:20:22.359Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/68/162c97ea78c957d68ecf78a5c5041d2e25bd5562bdf5d89a6cbf7f8429bf/opencensus_context-0.1.3-py2.py3-none-any.whl", hash = "sha256:073bb0590007af276853009fac7e4bab1d523c3f03baf4cb4511ca38967c6039", size = 5060, upload-time = "2022-08-03T22:20:20.352Z" }, +] + +[[package]] +name = "opentelemetry-api" +version = "1.35.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "importlib-metadata" }, + { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/17/06/68c27a523103dad5837dc5b87e71285280c4f098c60e4fe8a8db6486ab09/opencv-python-4.11.0.86.tar.gz", hash = "sha256:03d60ccae62304860d232272e4a4fda93c39d595780cb40b161b310244b736a4", size = 95171956, upload-time = "2025-01-16T13:52:24.737Z" } +sdist = { url = "https://files.pythonhosted.org/packages/99/c9/4509bfca6bb43220ce7f863c9f791e0d5001c2ec2b5867d48586008b3d96/opentelemetry_api-1.35.0.tar.gz", hash = "sha256:a111b959bcfa5b4d7dffc2fbd6a241aa72dd78dd8e79b5b1662bda896c5d2ffe", size = 64778, upload-time = "2025-07-11T12:23:28.804Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/05/4d/53b30a2a3ac1f75f65a59eb29cf2ee7207ce64867db47036ad61743d5a23/opencv_python-4.11.0.86-cp37-abi3-macosx_13_0_arm64.whl", hash = "sha256:432f67c223f1dc2824f5e73cdfcd9db0efc8710647d4e813012195dc9122a52a", size = 37326322, upload-time = "2025-01-16T13:52:25.887Z" }, - { url = "https://files.pythonhosted.org/packages/3b/84/0a67490741867eacdfa37bc18df96e08a9d579583b419010d7f3da8ff503/opencv_python-4.11.0.86-cp37-abi3-macosx_13_0_x86_64.whl", hash = "sha256:9d05ef13d23fe97f575153558653e2d6e87103995d54e6a35db3f282fe1f9c66", size = 56723197, upload-time = "2025-01-16T13:55:21.222Z" }, - { url = "https://files.pythonhosted.org/packages/f3/bd/29c126788da65c1fb2b5fb621b7fed0ed5f9122aa22a0868c5e2c15c6d23/opencv_python-4.11.0.86-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b92ae2c8852208817e6776ba1ea0d6b1e0a1b5431e971a2a0ddd2a8cc398202", size = 42230439, upload-time = "2025-01-16T13:51:35.822Z" }, - { url = "https://files.pythonhosted.org/packages/2c/8b/90eb44a40476fa0e71e05a0283947cfd74a5d36121a11d926ad6f3193cc4/opencv_python-4.11.0.86-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b02611523803495003bd87362db3e1d2a0454a6a63025dc6658a9830570aa0d", size = 62986597, upload-time = "2025-01-16T13:52:08.836Z" }, - { url = "https://files.pythonhosted.org/packages/fb/d7/1d5941a9dde095468b288d989ff6539dd69cd429dbf1b9e839013d21b6f0/opencv_python-4.11.0.86-cp37-abi3-win32.whl", hash = "sha256:810549cb2a4aedaa84ad9a1c92fbfdfc14090e2749cedf2c1589ad8359aa169b", size = 29384337, upload-time = "2025-01-16T13:52:13.549Z" }, - { url = "https://files.pythonhosted.org/packages/a4/7d/f1c30a92854540bf789e9cd5dde7ef49bbe63f855b85a2e6b3db8135c591/opencv_python-4.11.0.86-cp37-abi3-win_amd64.whl", hash = "sha256:085ad9b77c18853ea66283e98affefe2de8cc4c1f43eda4c100cf9b2721142ec", size = 39488044, upload-time = "2025-01-16T13:52:21.928Z" }, + { url = "https://files.pythonhosted.org/packages/1d/5a/3f8d078dbf55d18442f6a2ecedf6786d81d7245844b2b20ce2b8ad6f0307/opentelemetry_api-1.35.0-py3-none-any.whl", hash = "sha256:c4ea7e258a244858daf18474625e9cc0149b8ee354f37843415771a40c25ee06", size = 65566, upload-time = "2025-07-11T12:23:07.944Z" }, +] + +[[package]] +name = "opentelemetry-exporter-prometheus" +version = "0.56b0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-api" }, + { name = "opentelemetry-sdk" }, + { name = "prometheus-client" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bf/75/e784a56805a0bf125da3cadacdbb2d5e2519ac48852ec52eac86a9f16fa3/opentelemetry_exporter_prometheus-0.56b0.tar.gz", hash = "sha256:c783146b66400269783b773c5ccedf7d2ff140271478e2816202930a14c07c6b", size = 14905, upload-time = "2025-07-11T12:23:33.271Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/de/a4/813a192c391c252cacb8d95e606a9917036ca94b477f2a8fc6748d86692d/opentelemetry_exporter_prometheus-0.56b0-py3-none-any.whl", hash = "sha256:0a7d8952e2938f830deb5000505eecf20416ef25fdb591753b9b0cb91d9560ea", size = 12924, upload-time = "2025-07-11T12:23:14.886Z" }, +] + +[[package]] +name = "opentelemetry-proto" +version = "1.35.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/dc/a2/7366e32d9a2bccbb8614942dbea2cf93c209610385ea966cb050334f8df7/opentelemetry_proto-1.35.0.tar.gz", hash = "sha256:532497341bd3e1c074def7c5b00172601b28bb83b48afc41a4b779f26eb4ee05", size = 46151, upload-time = "2025-07-11T12:23:38.797Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/a7/3f05de580da7e8a8b8dff041d3d07a20bf3bb62d3bcc027f8fd669a73ff4/opentelemetry_proto-1.35.0-py3-none-any.whl", hash = "sha256:98fffa803164499f562718384e703be8d7dfbe680192279a0429cb150a2f8809", size = 72536, upload-time = "2025-07-11T12:23:23.247Z" }, +] + +[[package]] +name = "opentelemetry-sdk" +version = "1.35.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-api" }, + { name = "opentelemetry-semantic-conventions" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9a/cf/1eb2ed2ce55e0a9aa95b3007f26f55c7943aeef0a783bb006bdd92b3299e/opentelemetry_sdk-1.35.0.tar.gz", hash = "sha256:2a400b415ab68aaa6f04e8a6a9f6552908fb3090ae2ff78d6ae0c597ac581954", size = 160871, upload-time = "2025-07-11T12:23:39.566Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/01/4f/8e32b757ef3b660511b638ab52d1ed9259b666bdeeceba51a082ce3aea95/opentelemetry_sdk-1.35.0-py3-none-any.whl", hash = "sha256:223d9e5f5678518f4842311bb73966e0b6db5d1e0b74e35074c052cd2487f800", size = 119379, upload-time = "2025-07-11T12:23:24.521Z" }, +] + +[[package]] +name = "opentelemetry-semantic-conventions" +version = "0.56b0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-api" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/32/8e/214fa817f63b9f068519463d8ab46afd5d03b98930c39394a37ae3e741d0/opentelemetry_semantic_conventions-0.56b0.tar.gz", hash = "sha256:c114c2eacc8ff6d3908cb328c811eaf64e6d68623840be9224dc829c4fd6c2ea", size = 124221, upload-time = "2025-07-11T12:23:40.71Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/3f/e80c1b017066a9d999efffe88d1cce66116dcf5cb7f80c41040a83b6e03b/opentelemetry_semantic_conventions-0.56b0-py3-none-any.whl", hash = "sha256:df44492868fd6b482511cc43a942e7194be64e94945f572db24df2e279a001a2", size = 201625, upload-time = "2025-07-11T12:23:25.63Z" }, +] + +[[package]] +name = "overrides" +version = "7.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/36/86/b585f53236dec60aba864e050778b25045f857e17f6e5ea0ae95fe80edd2/overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a", size = 22812, upload-time = "2024-01-27T21:01:33.423Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/ab/fc8290c6a4c722e5514d80f62b2dc4c4df1a68a41d1364e625c35990fcf3/overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49", size = 17832, upload-time = "2024-01-27T21:01:31.393Z" }, ] [[package]] @@ -2015,6 +3394,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/fa/cb/6c32f8fadefa4314b740fbe8f74f6a02423bd1549e7c930826df35ac3c1b/pandas-2.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:b4b0de34dc8499c2db34000ef8baad684cfa4cbd836ecee05f323ebfba348c7d", size = 11357186, upload-time = "2025-07-07T19:20:01.475Z" }, ] +[[package]] +name = "pandocfilters" +version = "1.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/70/6f/3dd4940bbe001c06a65f88e36bad298bc7a0de5036115639926b0c5c0458/pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e", size = 8454, upload-time = "2024-01-18T20:08:13.726Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc", size = 8663, upload-time = "2024-01-18T20:08:11.28Z" }, +] + [[package]] name = "paramiko" version = "3.5.1" @@ -2172,6 +3560,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4", size = 18567, upload-time = "2025-05-07T22:47:40.376Z" }, ] +[[package]] +name = "prometheus-client" +version = "0.22.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5e/cf/40dde0a2be27cc1eb41e333d1a674a74ce8b8b0457269cc640fd42b07cf7/prometheus_client-0.22.1.tar.gz", hash = "sha256:190f1331e783cf21eb60bca559354e0a4d4378facecf78f5428c39b675d20d28", size = 69746, upload-time = "2025-06-02T14:29:01.152Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/ae/ec06af4fe3ee72d16973474f122541746196aaa16cea6f66d18b963c6177/prometheus_client-0.22.1-py3-none-any.whl", hash = "sha256:cca895342e308174341b2cbf99a56bef291fbc0ef7b9e5412a0f26d653ba7094", size = 58694, upload-time = "2025-06-02T14:29:00.068Z" }, +] + [[package]] name = "prompt-toolkit" version = "3.0.51" @@ -2184,6 +3581,139 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ce/4f/5249960887b1fbe561d9ff265496d170b55a735b76724f10ef19f9e40716/prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07", size = 387810, upload-time = "2025-04-15T09:18:44.753Z" }, ] +[[package]] +name = "propcache" +version = "0.3.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a6/16/43264e4a779dd8588c21a70f0709665ee8f611211bdd2c87d952cfa7c776/propcache-0.3.2.tar.gz", hash = "sha256:20d7d62e4e7ef05f221e0db2856b979540686342e7dd9973b815599c7057e168", size = 44139, upload-time = "2025-06-09T22:56:06.081Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ab/14/510deed325e262afeb8b360043c5d7c960da7d3ecd6d6f9496c9c56dc7f4/propcache-0.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:22d9962a358aedbb7a2e36187ff273adeaab9743373a272976d2e348d08c7770", size = 73178, upload-time = "2025-06-09T22:53:40.126Z" }, + { url = "https://files.pythonhosted.org/packages/cd/4e/ad52a7925ff01c1325653a730c7ec3175a23f948f08626a534133427dcff/propcache-0.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0d0fda578d1dc3f77b6b5a5dce3b9ad69a8250a891760a548df850a5e8da87f3", size = 43133, upload-time = "2025-06-09T22:53:41.965Z" }, + { url = "https://files.pythonhosted.org/packages/63/7c/e9399ba5da7780871db4eac178e9c2e204c23dd3e7d32df202092a1ed400/propcache-0.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3def3da3ac3ce41562d85db655d18ebac740cb3fa4367f11a52b3da9d03a5cc3", size = 43039, upload-time = "2025-06-09T22:53:43.268Z" }, + { url = "https://files.pythonhosted.org/packages/22/e1/58da211eb8fdc6fc854002387d38f415a6ca5f5c67c1315b204a5d3e9d7a/propcache-0.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9bec58347a5a6cebf239daba9bda37dffec5b8d2ce004d9fe4edef3d2815137e", size = 201903, upload-time = "2025-06-09T22:53:44.872Z" }, + { url = "https://files.pythonhosted.org/packages/c4/0a/550ea0f52aac455cb90111c8bab995208443e46d925e51e2f6ebdf869525/propcache-0.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:55ffda449a507e9fbd4aca1a7d9aa6753b07d6166140e5a18d2ac9bc49eac220", size = 213362, upload-time = "2025-06-09T22:53:46.707Z" }, + { url = "https://files.pythonhosted.org/packages/5a/af/9893b7d878deda9bb69fcf54600b247fba7317761b7db11fede6e0f28bd0/propcache-0.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:64a67fb39229a8a8491dd42f864e5e263155e729c2e7ff723d6e25f596b1e8cb", size = 210525, upload-time = "2025-06-09T22:53:48.547Z" }, + { url = "https://files.pythonhosted.org/packages/7c/bb/38fd08b278ca85cde36d848091ad2b45954bc5f15cce494bb300b9285831/propcache-0.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9da1cf97b92b51253d5b68cf5a2b9e0dafca095e36b7f2da335e27dc6172a614", size = 198283, upload-time = "2025-06-09T22:53:50.067Z" }, + { url = "https://files.pythonhosted.org/packages/78/8c/9fe55bd01d362bafb413dfe508c48753111a1e269737fa143ba85693592c/propcache-0.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5f559e127134b07425134b4065be45b166183fdcb433cb6c24c8e4149056ad50", size = 191872, upload-time = "2025-06-09T22:53:51.438Z" }, + { url = "https://files.pythonhosted.org/packages/54/14/4701c33852937a22584e08abb531d654c8bcf7948a8f87ad0a4822394147/propcache-0.3.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:aff2e4e06435d61f11a428360a932138d0ec288b0a31dd9bd78d200bd4a2b339", size = 199452, upload-time = "2025-06-09T22:53:53.229Z" }, + { url = "https://files.pythonhosted.org/packages/16/44/447f2253d859602095356007657ee535e0093215ea0b3d1d6a41d16e5201/propcache-0.3.2-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:4927842833830942a5d0a56e6f4839bc484785b8e1ce8d287359794818633ba0", size = 191567, upload-time = "2025-06-09T22:53:54.541Z" }, + { url = "https://files.pythonhosted.org/packages/f2/b3/e4756258749bb2d3b46defcff606a2f47410bab82be5824a67e84015b267/propcache-0.3.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:6107ddd08b02654a30fb8ad7a132021759d750a82578b94cd55ee2772b6ebea2", size = 193015, upload-time = "2025-06-09T22:53:56.44Z" }, + { url = "https://files.pythonhosted.org/packages/1e/df/e6d3c7574233164b6330b9fd697beeac402afd367280e6dc377bb99b43d9/propcache-0.3.2-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:70bd8b9cd6b519e12859c99f3fc9a93f375ebd22a50296c3a295028bea73b9e7", size = 204660, upload-time = "2025-06-09T22:53:57.839Z" }, + { url = "https://files.pythonhosted.org/packages/b2/53/e4d31dd5170b4a0e2e6b730f2385a96410633b4833dc25fe5dffd1f73294/propcache-0.3.2-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2183111651d710d3097338dd1893fcf09c9f54e27ff1a8795495a16a469cc90b", size = 206105, upload-time = "2025-06-09T22:53:59.638Z" }, + { url = "https://files.pythonhosted.org/packages/7f/fe/74d54cf9fbe2a20ff786e5f7afcfde446588f0cf15fb2daacfbc267b866c/propcache-0.3.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fb075ad271405dcad8e2a7ffc9a750a3bf70e533bd86e89f0603e607b93aa64c", size = 196980, upload-time = "2025-06-09T22:54:01.071Z" }, + { url = "https://files.pythonhosted.org/packages/22/ec/c469c9d59dada8a7679625e0440b544fe72e99311a4679c279562051f6fc/propcache-0.3.2-cp310-cp310-win32.whl", hash = "sha256:404d70768080d3d3bdb41d0771037da19d8340d50b08e104ca0e7f9ce55fce70", size = 37679, upload-time = "2025-06-09T22:54:03.003Z" }, + { url = "https://files.pythonhosted.org/packages/38/35/07a471371ac89d418f8d0b699c75ea6dca2041fbda360823de21f6a9ce0a/propcache-0.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:7435d766f978b4ede777002e6b3b6641dd229cd1da8d3d3106a45770365f9ad9", size = 41459, upload-time = "2025-06-09T22:54:04.134Z" }, + { url = "https://files.pythonhosted.org/packages/80/8d/e8b436717ab9c2cfc23b116d2c297305aa4cd8339172a456d61ebf5669b8/propcache-0.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0b8d2f607bd8f80ddc04088bc2a037fdd17884a6fcadc47a96e334d72f3717be", size = 74207, upload-time = "2025-06-09T22:54:05.399Z" }, + { url = "https://files.pythonhosted.org/packages/d6/29/1e34000e9766d112171764b9fa3226fa0153ab565d0c242c70e9945318a7/propcache-0.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:06766d8f34733416e2e34f46fea488ad5d60726bb9481d3cddf89a6fa2d9603f", size = 43648, upload-time = "2025-06-09T22:54:08.023Z" }, + { url = "https://files.pythonhosted.org/packages/46/92/1ad5af0df781e76988897da39b5f086c2bf0f028b7f9bd1f409bb05b6874/propcache-0.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a2dc1f4a1df4fecf4e6f68013575ff4af84ef6f478fe5344317a65d38a8e6dc9", size = 43496, upload-time = "2025-06-09T22:54:09.228Z" }, + { url = "https://files.pythonhosted.org/packages/b3/ce/e96392460f9fb68461fabab3e095cb00c8ddf901205be4eae5ce246e5b7e/propcache-0.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:be29c4f4810c5789cf10ddf6af80b041c724e629fa51e308a7a0fb19ed1ef7bf", size = 217288, upload-time = "2025-06-09T22:54:10.466Z" }, + { url = "https://files.pythonhosted.org/packages/c5/2a/866726ea345299f7ceefc861a5e782b045545ae6940851930a6adaf1fca6/propcache-0.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59d61f6970ecbd8ff2e9360304d5c8876a6abd4530cb752c06586849ac8a9dc9", size = 227456, upload-time = "2025-06-09T22:54:11.828Z" }, + { url = "https://files.pythonhosted.org/packages/de/03/07d992ccb6d930398689187e1b3c718339a1c06b8b145a8d9650e4726166/propcache-0.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:62180e0b8dbb6b004baec00a7983e4cc52f5ada9cd11f48c3528d8cfa7b96a66", size = 225429, upload-time = "2025-06-09T22:54:13.823Z" }, + { url = "https://files.pythonhosted.org/packages/5d/e6/116ba39448753b1330f48ab8ba927dcd6cf0baea8a0ccbc512dfb49ba670/propcache-0.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c144ca294a204c470f18cf4c9d78887810d04a3e2fbb30eea903575a779159df", size = 213472, upload-time = "2025-06-09T22:54:15.232Z" }, + { url = "https://files.pythonhosted.org/packages/a6/85/f01f5d97e54e428885a5497ccf7f54404cbb4f906688a1690cd51bf597dc/propcache-0.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5c2a784234c28854878d68978265617aa6dc0780e53d44b4d67f3651a17a9a2", size = 204480, upload-time = "2025-06-09T22:54:17.104Z" }, + { url = "https://files.pythonhosted.org/packages/e3/79/7bf5ab9033b8b8194cc3f7cf1aaa0e9c3256320726f64a3e1f113a812dce/propcache-0.3.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5745bc7acdafa978ca1642891b82c19238eadc78ba2aaa293c6863b304e552d7", size = 214530, upload-time = "2025-06-09T22:54:18.512Z" }, + { url = "https://files.pythonhosted.org/packages/31/0b/bd3e0c00509b609317df4a18e6b05a450ef2d9a963e1d8bc9c9415d86f30/propcache-0.3.2-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:c0075bf773d66fa8c9d41f66cc132ecc75e5bb9dd7cce3cfd14adc5ca184cb95", size = 205230, upload-time = "2025-06-09T22:54:19.947Z" }, + { url = "https://files.pythonhosted.org/packages/7a/23/fae0ff9b54b0de4e819bbe559508da132d5683c32d84d0dc2ccce3563ed4/propcache-0.3.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5f57aa0847730daceff0497f417c9de353c575d8da3579162cc74ac294c5369e", size = 206754, upload-time = "2025-06-09T22:54:21.716Z" }, + { url = "https://files.pythonhosted.org/packages/b7/7f/ad6a3c22630aaa5f618b4dc3c3598974a72abb4c18e45a50b3cdd091eb2f/propcache-0.3.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:eef914c014bf72d18efb55619447e0aecd5fb7c2e3fa7441e2e5d6099bddff7e", size = 218430, upload-time = "2025-06-09T22:54:23.17Z" }, + { url = "https://files.pythonhosted.org/packages/5b/2c/ba4f1c0e8a4b4c75910742f0d333759d441f65a1c7f34683b4a74c0ee015/propcache-0.3.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:2a4092e8549031e82facf3decdbc0883755d5bbcc62d3aea9d9e185549936dcf", size = 223884, upload-time = "2025-06-09T22:54:25.539Z" }, + { url = "https://files.pythonhosted.org/packages/88/e4/ebe30fc399e98572019eee82ad0caf512401661985cbd3da5e3140ffa1b0/propcache-0.3.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:85871b050f174bc0bfb437efbdb68aaf860611953ed12418e4361bc9c392749e", size = 211480, upload-time = "2025-06-09T22:54:26.892Z" }, + { url = "https://files.pythonhosted.org/packages/96/0a/7d5260b914e01d1d0906f7f38af101f8d8ed0dc47426219eeaf05e8ea7c2/propcache-0.3.2-cp311-cp311-win32.whl", hash = "sha256:36c8d9b673ec57900c3554264e630d45980fd302458e4ac801802a7fd2ef7897", size = 37757, upload-time = "2025-06-09T22:54:28.241Z" }, + { url = "https://files.pythonhosted.org/packages/e1/2d/89fe4489a884bc0da0c3278c552bd4ffe06a1ace559db5ef02ef24ab446b/propcache-0.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:e53af8cb6a781b02d2ea079b5b853ba9430fcbe18a8e3ce647d5982a3ff69f39", size = 41500, upload-time = "2025-06-09T22:54:29.4Z" }, + { url = "https://files.pythonhosted.org/packages/a8/42/9ca01b0a6f48e81615dca4765a8f1dd2c057e0540f6116a27dc5ee01dfb6/propcache-0.3.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:8de106b6c84506b31c27168582cd3cb3000a6412c16df14a8628e5871ff83c10", size = 73674, upload-time = "2025-06-09T22:54:30.551Z" }, + { url = "https://files.pythonhosted.org/packages/af/6e/21293133beb550f9c901bbece755d582bfaf2176bee4774000bd4dd41884/propcache-0.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:28710b0d3975117239c76600ea351934ac7b5ff56e60953474342608dbbb6154", size = 43570, upload-time = "2025-06-09T22:54:32.296Z" }, + { url = "https://files.pythonhosted.org/packages/0c/c8/0393a0a3a2b8760eb3bde3c147f62b20044f0ddac81e9d6ed7318ec0d852/propcache-0.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce26862344bdf836650ed2487c3d724b00fbfec4233a1013f597b78c1cb73615", size = 43094, upload-time = "2025-06-09T22:54:33.929Z" }, + { url = "https://files.pythonhosted.org/packages/37/2c/489afe311a690399d04a3e03b069225670c1d489eb7b044a566511c1c498/propcache-0.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bca54bd347a253af2cf4544bbec232ab982f4868de0dd684246b67a51bc6b1db", size = 226958, upload-time = "2025-06-09T22:54:35.186Z" }, + { url = "https://files.pythonhosted.org/packages/9d/ca/63b520d2f3d418c968bf596839ae26cf7f87bead026b6192d4da6a08c467/propcache-0.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:55780d5e9a2ddc59711d727226bb1ba83a22dd32f64ee15594b9392b1f544eb1", size = 234894, upload-time = "2025-06-09T22:54:36.708Z" }, + { url = "https://files.pythonhosted.org/packages/11/60/1d0ed6fff455a028d678df30cc28dcee7af77fa2b0e6962ce1df95c9a2a9/propcache-0.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:035e631be25d6975ed87ab23153db6a73426a48db688070d925aa27e996fe93c", size = 233672, upload-time = "2025-06-09T22:54:38.062Z" }, + { url = "https://files.pythonhosted.org/packages/37/7c/54fd5301ef38505ab235d98827207176a5c9b2aa61939b10a460ca53e123/propcache-0.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee6f22b6eaa39297c751d0e80c0d3a454f112f5c6481214fcf4c092074cecd67", size = 224395, upload-time = "2025-06-09T22:54:39.634Z" }, + { url = "https://files.pythonhosted.org/packages/ee/1a/89a40e0846f5de05fdc6779883bf46ba980e6df4d2ff8fb02643de126592/propcache-0.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7ca3aee1aa955438c4dba34fc20a9f390e4c79967257d830f137bd5a8a32ed3b", size = 212510, upload-time = "2025-06-09T22:54:41.565Z" }, + { url = "https://files.pythonhosted.org/packages/5e/33/ca98368586c9566a6b8d5ef66e30484f8da84c0aac3f2d9aec6d31a11bd5/propcache-0.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7a4f30862869fa2b68380d677cc1c5fcf1e0f2b9ea0cf665812895c75d0ca3b8", size = 222949, upload-time = "2025-06-09T22:54:43.038Z" }, + { url = "https://files.pythonhosted.org/packages/ba/11/ace870d0aafe443b33b2f0b7efdb872b7c3abd505bfb4890716ad7865e9d/propcache-0.3.2-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:b77ec3c257d7816d9f3700013639db7491a434644c906a2578a11daf13176251", size = 217258, upload-time = "2025-06-09T22:54:44.376Z" }, + { url = "https://files.pythonhosted.org/packages/5b/d2/86fd6f7adffcfc74b42c10a6b7db721d1d9ca1055c45d39a1a8f2a740a21/propcache-0.3.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:cab90ac9d3f14b2d5050928483d3d3b8fb6b4018893fc75710e6aa361ecb2474", size = 213036, upload-time = "2025-06-09T22:54:46.243Z" }, + { url = "https://files.pythonhosted.org/packages/07/94/2d7d1e328f45ff34a0a284cf5a2847013701e24c2a53117e7c280a4316b3/propcache-0.3.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:0b504d29f3c47cf6b9e936c1852246c83d450e8e063d50562115a6be6d3a2535", size = 227684, upload-time = "2025-06-09T22:54:47.63Z" }, + { url = "https://files.pythonhosted.org/packages/b7/05/37ae63a0087677e90b1d14710e532ff104d44bc1efa3b3970fff99b891dc/propcache-0.3.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:ce2ac2675a6aa41ddb2a0c9cbff53780a617ac3d43e620f8fd77ba1c84dcfc06", size = 234562, upload-time = "2025-06-09T22:54:48.982Z" }, + { url = "https://files.pythonhosted.org/packages/a4/7c/3f539fcae630408d0bd8bf3208b9a647ccad10976eda62402a80adf8fc34/propcache-0.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:62b4239611205294cc433845b914131b2a1f03500ff3c1ed093ed216b82621e1", size = 222142, upload-time = "2025-06-09T22:54:50.424Z" }, + { url = "https://files.pythonhosted.org/packages/7c/d2/34b9eac8c35f79f8a962546b3e97e9d4b990c420ee66ac8255d5d9611648/propcache-0.3.2-cp312-cp312-win32.whl", hash = "sha256:df4a81b9b53449ebc90cc4deefb052c1dd934ba85012aa912c7ea7b7e38b60c1", size = 37711, upload-time = "2025-06-09T22:54:52.072Z" }, + { url = "https://files.pythonhosted.org/packages/19/61/d582be5d226cf79071681d1b46b848d6cb03d7b70af7063e33a2787eaa03/propcache-0.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:7046e79b989d7fe457bb755844019e10f693752d169076138abf17f31380800c", size = 41479, upload-time = "2025-06-09T22:54:53.234Z" }, + { url = "https://files.pythonhosted.org/packages/dc/d1/8c747fafa558c603c4ca19d8e20b288aa0c7cda74e9402f50f31eb65267e/propcache-0.3.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ca592ed634a73ca002967458187109265e980422116c0a107cf93d81f95af945", size = 71286, upload-time = "2025-06-09T22:54:54.369Z" }, + { url = "https://files.pythonhosted.org/packages/61/99/d606cb7986b60d89c36de8a85d58764323b3a5ff07770a99d8e993b3fa73/propcache-0.3.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9ecb0aad4020e275652ba3975740f241bd12a61f1a784df044cf7477a02bc252", size = 42425, upload-time = "2025-06-09T22:54:55.642Z" }, + { url = "https://files.pythonhosted.org/packages/8c/96/ef98f91bbb42b79e9bb82bdd348b255eb9d65f14dbbe3b1594644c4073f7/propcache-0.3.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7f08f1cc28bd2eade7a8a3d2954ccc673bb02062e3e7da09bc75d843386b342f", size = 41846, upload-time = "2025-06-09T22:54:57.246Z" }, + { url = "https://files.pythonhosted.org/packages/5b/ad/3f0f9a705fb630d175146cd7b1d2bf5555c9beaed54e94132b21aac098a6/propcache-0.3.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1a342c834734edb4be5ecb1e9fb48cb64b1e2320fccbd8c54bf8da8f2a84c33", size = 208871, upload-time = "2025-06-09T22:54:58.975Z" }, + { url = "https://files.pythonhosted.org/packages/3a/38/2085cda93d2c8b6ec3e92af2c89489a36a5886b712a34ab25de9fbca7992/propcache-0.3.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8a544caaae1ac73f1fecfae70ded3e93728831affebd017d53449e3ac052ac1e", size = 215720, upload-time = "2025-06-09T22:55:00.471Z" }, + { url = "https://files.pythonhosted.org/packages/61/c1/d72ea2dc83ac7f2c8e182786ab0fc2c7bd123a1ff9b7975bee671866fe5f/propcache-0.3.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:310d11aa44635298397db47a3ebce7db99a4cc4b9bbdfcf6c98a60c8d5261cf1", size = 215203, upload-time = "2025-06-09T22:55:01.834Z" }, + { url = "https://files.pythonhosted.org/packages/af/81/b324c44ae60c56ef12007105f1460d5c304b0626ab0cc6b07c8f2a9aa0b8/propcache-0.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c1396592321ac83157ac03a2023aa6cc4a3cc3cfdecb71090054c09e5a7cce3", size = 206365, upload-time = "2025-06-09T22:55:03.199Z" }, + { url = "https://files.pythonhosted.org/packages/09/73/88549128bb89e66d2aff242488f62869014ae092db63ccea53c1cc75a81d/propcache-0.3.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8cabf5b5902272565e78197edb682017d21cf3b550ba0460ee473753f28d23c1", size = 196016, upload-time = "2025-06-09T22:55:04.518Z" }, + { url = "https://files.pythonhosted.org/packages/b9/3f/3bdd14e737d145114a5eb83cb172903afba7242f67c5877f9909a20d948d/propcache-0.3.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0a2f2235ac46a7aa25bdeb03a9e7060f6ecbd213b1f9101c43b3090ffb971ef6", size = 205596, upload-time = "2025-06-09T22:55:05.942Z" }, + { url = "https://files.pythonhosted.org/packages/0f/ca/2f4aa819c357d3107c3763d7ef42c03980f9ed5c48c82e01e25945d437c1/propcache-0.3.2-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:92b69e12e34869a6970fd2f3da91669899994b47c98f5d430b781c26f1d9f387", size = 200977, upload-time = "2025-06-09T22:55:07.792Z" }, + { url = "https://files.pythonhosted.org/packages/cd/4a/e65276c7477533c59085251ae88505caf6831c0e85ff8b2e31ebcbb949b1/propcache-0.3.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:54e02207c79968ebbdffc169591009f4474dde3b4679e16634d34c9363ff56b4", size = 197220, upload-time = "2025-06-09T22:55:09.173Z" }, + { url = "https://files.pythonhosted.org/packages/7c/54/fc7152e517cf5578278b242396ce4d4b36795423988ef39bb8cd5bf274c8/propcache-0.3.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4adfb44cb588001f68c5466579d3f1157ca07f7504fc91ec87862e2b8e556b88", size = 210642, upload-time = "2025-06-09T22:55:10.62Z" }, + { url = "https://files.pythonhosted.org/packages/b9/80/abeb4a896d2767bf5f1ea7b92eb7be6a5330645bd7fb844049c0e4045d9d/propcache-0.3.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:fd3e6019dc1261cd0291ee8919dd91fbab7b169bb76aeef6c716833a3f65d206", size = 212789, upload-time = "2025-06-09T22:55:12.029Z" }, + { url = "https://files.pythonhosted.org/packages/b3/db/ea12a49aa7b2b6d68a5da8293dcf50068d48d088100ac016ad92a6a780e6/propcache-0.3.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4c181cad81158d71c41a2bce88edce078458e2dd5ffee7eddd6b05da85079f43", size = 205880, upload-time = "2025-06-09T22:55:13.45Z" }, + { url = "https://files.pythonhosted.org/packages/d1/e5/9076a0bbbfb65d1198007059c65639dfd56266cf8e477a9707e4b1999ff4/propcache-0.3.2-cp313-cp313-win32.whl", hash = "sha256:8a08154613f2249519e549de2330cf8e2071c2887309a7b07fb56098f5170a02", size = 37220, upload-time = "2025-06-09T22:55:15.284Z" }, + { url = "https://files.pythonhosted.org/packages/d3/f5/b369e026b09a26cd77aa88d8fffd69141d2ae00a2abaaf5380d2603f4b7f/propcache-0.3.2-cp313-cp313-win_amd64.whl", hash = "sha256:e41671f1594fc4ab0a6dec1351864713cb3a279910ae8b58f884a88a0a632c05", size = 40678, upload-time = "2025-06-09T22:55:16.445Z" }, + { url = "https://files.pythonhosted.org/packages/a4/3a/6ece377b55544941a08d03581c7bc400a3c8cd3c2865900a68d5de79e21f/propcache-0.3.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:9a3cf035bbaf035f109987d9d55dc90e4b0e36e04bbbb95af3055ef17194057b", size = 76560, upload-time = "2025-06-09T22:55:17.598Z" }, + { url = "https://files.pythonhosted.org/packages/0c/da/64a2bb16418740fa634b0e9c3d29edff1db07f56d3546ca2d86ddf0305e1/propcache-0.3.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:156c03d07dc1323d8dacaa221fbe028c5c70d16709cdd63502778e6c3ccca1b0", size = 44676, upload-time = "2025-06-09T22:55:18.922Z" }, + { url = "https://files.pythonhosted.org/packages/36/7b/f025e06ea51cb72c52fb87e9b395cced02786610b60a3ed51da8af017170/propcache-0.3.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:74413c0ba02ba86f55cf60d18daab219f7e531620c15f1e23d95563f505efe7e", size = 44701, upload-time = "2025-06-09T22:55:20.106Z" }, + { url = "https://files.pythonhosted.org/packages/a4/00/faa1b1b7c3b74fc277f8642f32a4c72ba1d7b2de36d7cdfb676db7f4303e/propcache-0.3.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f066b437bb3fa39c58ff97ab2ca351db465157d68ed0440abecb21715eb24b28", size = 276934, upload-time = "2025-06-09T22:55:21.5Z" }, + { url = "https://files.pythonhosted.org/packages/74/ab/935beb6f1756e0476a4d5938ff44bf0d13a055fed880caf93859b4f1baf4/propcache-0.3.2-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f1304b085c83067914721e7e9d9917d41ad87696bf70f0bc7dee450e9c71ad0a", size = 278316, upload-time = "2025-06-09T22:55:22.918Z" }, + { url = "https://files.pythonhosted.org/packages/f8/9d/994a5c1ce4389610838d1caec74bdf0e98b306c70314d46dbe4fcf21a3e2/propcache-0.3.2-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ab50cef01b372763a13333b4e54021bdcb291fc9a8e2ccb9c2df98be51bcde6c", size = 282619, upload-time = "2025-06-09T22:55:24.651Z" }, + { url = "https://files.pythonhosted.org/packages/2b/00/a10afce3d1ed0287cef2e09506d3be9822513f2c1e96457ee369adb9a6cd/propcache-0.3.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fad3b2a085ec259ad2c2842666b2a0a49dea8463579c606426128925af1ed725", size = 265896, upload-time = "2025-06-09T22:55:26.049Z" }, + { url = "https://files.pythonhosted.org/packages/2e/a8/2aa6716ffa566ca57c749edb909ad27884680887d68517e4be41b02299f3/propcache-0.3.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:261fa020c1c14deafd54c76b014956e2f86991af198c51139faf41c4d5e83892", size = 252111, upload-time = "2025-06-09T22:55:27.381Z" }, + { url = "https://files.pythonhosted.org/packages/36/4f/345ca9183b85ac29c8694b0941f7484bf419c7f0fea2d1e386b4f7893eed/propcache-0.3.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:46d7f8aa79c927e5f987ee3a80205c987717d3659f035c85cf0c3680526bdb44", size = 268334, upload-time = "2025-06-09T22:55:28.747Z" }, + { url = "https://files.pythonhosted.org/packages/3e/ca/fcd54f78b59e3f97b3b9715501e3147f5340167733d27db423aa321e7148/propcache-0.3.2-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:6d8f3f0eebf73e3c0ff0e7853f68be638b4043c65a70517bb575eff54edd8dbe", size = 255026, upload-time = "2025-06-09T22:55:30.184Z" }, + { url = "https://files.pythonhosted.org/packages/8b/95/8e6a6bbbd78ac89c30c225210a5c687790e532ba4088afb8c0445b77ef37/propcache-0.3.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:03c89c1b14a5452cf15403e291c0ccd7751d5b9736ecb2c5bab977ad6c5bcd81", size = 250724, upload-time = "2025-06-09T22:55:31.646Z" }, + { url = "https://files.pythonhosted.org/packages/ee/b0/0dd03616142baba28e8b2d14ce5df6631b4673850a3d4f9c0f9dd714a404/propcache-0.3.2-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:0cc17efde71e12bbaad086d679ce575268d70bc123a5a71ea7ad76f70ba30bba", size = 268868, upload-time = "2025-06-09T22:55:33.209Z" }, + { url = "https://files.pythonhosted.org/packages/c5/98/2c12407a7e4fbacd94ddd32f3b1e3d5231e77c30ef7162b12a60e2dd5ce3/propcache-0.3.2-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:acdf05d00696bc0447e278bb53cb04ca72354e562cf88ea6f9107df8e7fd9770", size = 271322, upload-time = "2025-06-09T22:55:35.065Z" }, + { url = "https://files.pythonhosted.org/packages/35/91/9cb56efbb428b006bb85db28591e40b7736847b8331d43fe335acf95f6c8/propcache-0.3.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4445542398bd0b5d32df908031cb1b30d43ac848e20470a878b770ec2dcc6330", size = 265778, upload-time = "2025-06-09T22:55:36.45Z" }, + { url = "https://files.pythonhosted.org/packages/9a/4c/b0fe775a2bdd01e176b14b574be679d84fc83958335790f7c9a686c1f468/propcache-0.3.2-cp313-cp313t-win32.whl", hash = "sha256:f86e5d7cd03afb3a1db8e9f9f6eff15794e79e791350ac48a8c924e6f439f394", size = 41175, upload-time = "2025-06-09T22:55:38.436Z" }, + { url = "https://files.pythonhosted.org/packages/a4/ff/47f08595e3d9b5e149c150f88d9714574f1a7cbd89fe2817158a952674bf/propcache-0.3.2-cp313-cp313t-win_amd64.whl", hash = "sha256:9704bedf6e7cbe3c65eca4379a9b53ee6a83749f047808cbb5044d40d7d72198", size = 44857, upload-time = "2025-06-09T22:55:39.687Z" }, + { url = "https://files.pythonhosted.org/packages/6c/39/8ea9bcfaaff16fd0b0fc901ee522e24c9ec44b4ca0229cfffb8066a06959/propcache-0.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a7fad897f14d92086d6b03fdd2eb844777b0c4d7ec5e3bac0fbae2ab0602bbe5", size = 74678, upload-time = "2025-06-09T22:55:41.227Z" }, + { url = "https://files.pythonhosted.org/packages/d3/85/cab84c86966e1d354cf90cdc4ba52f32f99a5bca92a1529d666d957d7686/propcache-0.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1f43837d4ca000243fd7fd6301947d7cb93360d03cd08369969450cc6b2ce3b4", size = 43829, upload-time = "2025-06-09T22:55:42.417Z" }, + { url = "https://files.pythonhosted.org/packages/23/f7/9cb719749152d8b26d63801b3220ce2d3931312b2744d2b3a088b0ee9947/propcache-0.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:261df2e9474a5949c46e962065d88eb9b96ce0f2bd30e9d3136bcde84befd8f2", size = 43729, upload-time = "2025-06-09T22:55:43.651Z" }, + { url = "https://files.pythonhosted.org/packages/a2/a2/0b2b5a210ff311260002a315f6f9531b65a36064dfb804655432b2f7d3e3/propcache-0.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e514326b79e51f0a177daab1052bc164d9d9e54133797a3a58d24c9c87a3fe6d", size = 204483, upload-time = "2025-06-09T22:55:45.327Z" }, + { url = "https://files.pythonhosted.org/packages/3f/e0/7aff5de0c535f783b0c8be5bdb750c305c1961d69fbb136939926e155d98/propcache-0.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d4a996adb6904f85894570301939afeee65f072b4fd265ed7e569e8d9058e4ec", size = 217425, upload-time = "2025-06-09T22:55:46.729Z" }, + { url = "https://files.pythonhosted.org/packages/92/1d/65fa889eb3b2a7d6e4ed3c2b568a9cb8817547a1450b572de7bf24872800/propcache-0.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:76cace5d6b2a54e55b137669b30f31aa15977eeed390c7cbfb1dafa8dfe9a701", size = 214723, upload-time = "2025-06-09T22:55:48.342Z" }, + { url = "https://files.pythonhosted.org/packages/9a/e2/eecf6989870988dfd731de408a6fa366e853d361a06c2133b5878ce821ad/propcache-0.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31248e44b81d59d6addbb182c4720f90b44e1efdc19f58112a3c3a1615fb47ef", size = 200166, upload-time = "2025-06-09T22:55:49.775Z" }, + { url = "https://files.pythonhosted.org/packages/12/06/c32be4950967f18f77489268488c7cdc78cbfc65a8ba8101b15e526b83dc/propcache-0.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abb7fa19dbf88d3857363e0493b999b8011eea856b846305d8c0512dfdf8fbb1", size = 194004, upload-time = "2025-06-09T22:55:51.335Z" }, + { url = "https://files.pythonhosted.org/packages/46/6c/17b521a6b3b7cbe277a4064ff0aa9129dd8c89f425a5a9b6b4dd51cc3ff4/propcache-0.3.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:d81ac3ae39d38588ad0549e321e6f773a4e7cc68e7751524a22885d5bbadf886", size = 203075, upload-time = "2025-06-09T22:55:52.681Z" }, + { url = "https://files.pythonhosted.org/packages/62/cb/3bdba2b736b3e45bc0e40f4370f745b3e711d439ffbffe3ae416393eece9/propcache-0.3.2-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:cc2782eb0f7a16462285b6f8394bbbd0e1ee5f928034e941ffc444012224171b", size = 195407, upload-time = "2025-06-09T22:55:54.048Z" }, + { url = "https://files.pythonhosted.org/packages/29/bd/760c5c6a60a4a2c55a421bc34a25ba3919d49dee411ddb9d1493bb51d46e/propcache-0.3.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:db429c19a6c7e8a1c320e6a13c99799450f411b02251fb1b75e6217cf4a14fcb", size = 196045, upload-time = "2025-06-09T22:55:55.485Z" }, + { url = "https://files.pythonhosted.org/packages/76/58/ced2757a46f55b8c84358d6ab8de4faf57cba831c51e823654da7144b13a/propcache-0.3.2-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:21d8759141a9e00a681d35a1f160892a36fb6caa715ba0b832f7747da48fb6ea", size = 208432, upload-time = "2025-06-09T22:55:56.884Z" }, + { url = "https://files.pythonhosted.org/packages/bb/ec/d98ea8d5a4d8fe0e372033f5254eddf3254344c0c5dc6c49ab84349e4733/propcache-0.3.2-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:2ca6d378f09adb13837614ad2754fa8afaee330254f404299611bce41a8438cb", size = 210100, upload-time = "2025-06-09T22:55:58.498Z" }, + { url = "https://files.pythonhosted.org/packages/56/84/b6d8a7ecf3f62d7dd09d9d10bbf89fad6837970ef868b35b5ffa0d24d9de/propcache-0.3.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:34a624af06c048946709f4278b4176470073deda88d91342665d95f7c6270fbe", size = 200712, upload-time = "2025-06-09T22:55:59.906Z" }, + { url = "https://files.pythonhosted.org/packages/bf/32/889f4903ddfe4a9dc61da71ee58b763758cf2d608fe1decede06e6467f8d/propcache-0.3.2-cp39-cp39-win32.whl", hash = "sha256:4ba3fef1c30f306b1c274ce0b8baaa2c3cdd91f645c48f06394068f37d3837a1", size = 38187, upload-time = "2025-06-09T22:56:01.212Z" }, + { url = "https://files.pythonhosted.org/packages/67/74/d666795fb9ba1dc139d30de64f3b6fd1ff9c9d3d96ccfdb992cd715ce5d2/propcache-0.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:7a2368eed65fc69a7a7a40b27f22e85e7627b74216f0846b04ba5c116e191ec9", size = 42025, upload-time = "2025-06-09T22:56:02.875Z" }, + { url = "https://files.pythonhosted.org/packages/cc/35/cc0aaecf278bb4575b8555f2b137de5ab821595ddae9da9d3cd1da4072c7/propcache-0.3.2-py3-none-any.whl", hash = "sha256:98f1ec44fb675f5052cccc8e609c46ed23a35a1cfd18545ad4e29002d858a43f", size = 12663, upload-time = "2025-06-09T22:56:04.484Z" }, +] + +[[package]] +name = "proto-plus" +version = "1.26.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f4/ac/87285f15f7cce6d4a008f33f1757fb5a13611ea8914eb58c3d0d26243468/proto_plus-1.26.1.tar.gz", hash = "sha256:21a515a4c4c0088a773899e23c7bbade3d18f9c66c73edd4c7ee3816bc96a012", size = 56142, upload-time = "2025-03-10T15:54:38.843Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4e/6d/280c4c2ce28b1593a19ad5239c8b826871fc6ec275c21afc8e1820108039/proto_plus-1.26.1-py3-none-any.whl", hash = "sha256:13285478c2dcf2abb829db158e1047e2f1e8d63a077d94263c2b88b043c75a66", size = 50163, upload-time = "2025-03-10T15:54:37.335Z" }, +] + +[[package]] +name = "protobuf" +version = "6.31.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/52/f3/b9655a711b32c19720253f6f06326faf90580834e2e83f840472d752bc8b/protobuf-6.31.1.tar.gz", hash = "sha256:d8cac4c982f0b957a4dc73a80e2ea24fab08e679c0de9deb835f4a12d69aca9a", size = 441797, upload-time = "2025-05-28T19:25:54.947Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f3/6f/6ab8e4bf962fd5570d3deaa2d5c38f0a363f57b4501047b5ebeb83ab1125/protobuf-6.31.1-cp310-abi3-win32.whl", hash = "sha256:7fa17d5a29c2e04b7d90e5e32388b8bfd0e7107cd8e616feef7ed3fa6bdab5c9", size = 423603, upload-time = "2025-05-28T19:25:41.198Z" }, + { url = "https://files.pythonhosted.org/packages/44/3a/b15c4347dd4bf3a1b0ee882f384623e2063bb5cf9fa9d57990a4f7df2fb6/protobuf-6.31.1-cp310-abi3-win_amd64.whl", hash = "sha256:426f59d2964864a1a366254fa703b8632dcec0790d8862d30034d8245e1cd447", size = 435283, upload-time = "2025-05-28T19:25:44.275Z" }, + { url = "https://files.pythonhosted.org/packages/6a/c9/b9689a2a250264a84e66c46d8862ba788ee7a641cdca39bccf64f59284b7/protobuf-6.31.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:6f1227473dc43d44ed644425268eb7c2e488ae245d51c6866d19fe158e207402", size = 425604, upload-time = "2025-05-28T19:25:45.702Z" }, + { url = "https://files.pythonhosted.org/packages/76/a1/7a5a94032c83375e4fe7e7f56e3976ea6ac90c5e85fac8576409e25c39c3/protobuf-6.31.1-cp39-abi3-manylinux2014_aarch64.whl", hash = "sha256:a40fc12b84c154884d7d4c4ebd675d5b3b5283e155f324049ae396b95ddebc39", size = 322115, upload-time = "2025-05-28T19:25:47.128Z" }, + { url = "https://files.pythonhosted.org/packages/fa/b1/b59d405d64d31999244643d88c45c8241c58f17cc887e73bcb90602327f8/protobuf-6.31.1-cp39-abi3-manylinux2014_x86_64.whl", hash = "sha256:4ee898bf66f7a8b0bd21bce523814e6fbd8c6add948045ce958b73af7e8878c6", size = 321070, upload-time = "2025-05-28T19:25:50.036Z" }, + { url = "https://files.pythonhosted.org/packages/b1/f0/4160dbd205eee8fdf8647d154e7ceaa9d25b3a877b6311274eb6dc896b75/protobuf-6.31.1-cp39-cp39-win32.whl", hash = "sha256:0414e3aa5a5f3ff423828e1e6a6e907d6c65c1d5b7e6e975793d5590bdeecc16", size = 423626, upload-time = "2025-05-28T19:25:51.355Z" }, + { url = "https://files.pythonhosted.org/packages/09/34/13989eb9f482409ed821bfa3e34e6a3878b42607c38e7f7572b4cc825091/protobuf-6.31.1-cp39-cp39-win_amd64.whl", hash = "sha256:8764cf4587791e7564051b35524b72844f845ad0bb011704c3736cce762d8fe9", size = 435347, upload-time = "2025-05-28T19:25:52.932Z" }, + { url = "https://files.pythonhosted.org/packages/f7/af/ab3c51ab7507a7325e98ffe691d9495ee3d3aa5f589afad65ec920d39821/protobuf-6.31.1-py3-none-any.whl", hash = "sha256:720a6c7e6b77288b85063569baae8536671b39f15cc22037ec7045658d80489e", size = 168724, upload-time = "2025-05-28T19:25:53.926Z" }, +] + [[package]] name = "psutil" version = "7.0.0" @@ -2226,6 +3756,83 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e0/a9/023730ba63db1e494a271cb018dcd361bd2c917ba7004c3e49d5daf795a2/py_cpuinfo-9.0.0-py3-none-any.whl", hash = "sha256:859625bc251f64e21f077d099d4162689c762b5d6a4c3c97553d56241c9674d5", size = 22335, upload-time = "2022-10-25T20:38:27.636Z" }, ] +[[package]] +name = "py-spy" +version = "0.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7c/cd/9dacc04604dc4398ce5bed77ed59918ad0940f15165954d4aaa651cc640c/py_spy-0.4.0.tar.gz", hash = "sha256:806602ce7972782cc9c1e383f339bfc27bfb822d42485e6a3e0530ae5040e1f0", size = 253236, upload-time = "2024-11-01T19:08:51.487Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/7e/02ca3ee68507db47afce769504060d71b4dc1455f0f9faa8d32fc7762221/py_spy-0.4.0-py2.py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:f2cf3f7130e7d780471faa5957441d3b4e0ec39a79b2c00f4c33d494f7728428", size = 3617847, upload-time = "2024-11-01T19:08:37.44Z" }, + { url = "https://files.pythonhosted.org/packages/65/7c/d9e26cc4c8e91f96a3a65de04d2e2e4131fbcaf6830d10917d4fab9d6788/py_spy-0.4.0-py2.py3-none-macosx_11_0_arm64.whl", hash = "sha256:47cdda4c34d9b6cb01f3aaeceb2e88faf57da880207fe72ff6ff97e9bb6cc8a9", size = 1761955, upload-time = "2024-11-01T19:08:39.632Z" }, + { url = "https://files.pythonhosted.org/packages/d2/e4/8fbfd219b7f282b80e6b2e74c9197850d2c51db8555705567bb65507b060/py_spy-0.4.0-py2.py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eee3d0bde85ca5cf4f01f012d461180ca76c24835a96f7b5c4ded64eb6a008ab", size = 2059471, upload-time = "2024-11-01T19:08:41.818Z" }, + { url = "https://files.pythonhosted.org/packages/a7/1d/79a94a5ace810c13b730ce96765ca465c171b4952034f1be7402d8accbc1/py_spy-0.4.0-py2.py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c5f06ffce4c9c98b7fc9f5e67e5e7db591173f1351837633f3f23d9378b1d18a", size = 2067486, upload-time = "2024-11-01T19:08:43.673Z" }, + { url = "https://files.pythonhosted.org/packages/6d/90/fbbb038f826a83ed15ebc4ae606815d6cad6c5c6399c86c7ab96f6c60817/py_spy-0.4.0-py2.py3-none-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:87573e64dbfdfc89ba2e0f5e2f525aa84e0299c7eb6454b47ea335fde583a7a0", size = 2141433, upload-time = "2024-11-01T19:08:45.988Z" }, + { url = "https://files.pythonhosted.org/packages/c9/c1/5e012669ebb687e546dc99fcfc4861ebfcf3a337b7a41af945df23140bb5/py_spy-0.4.0-py2.py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:8bf2f3702cef367a489faa45177b41a6c31b2a3e5bd78c978d44e29340152f5a", size = 2732951, upload-time = "2024-11-01T19:08:48.109Z" }, + { url = "https://files.pythonhosted.org/packages/74/8b/dd8490660019a6b0be28d9ffd2bf1db967604b19f3f2719c0e283a16ac7f/py_spy-0.4.0-py2.py3-none-win_amd64.whl", hash = "sha256:77d8f637ade38367d944874776f45b703b7ac5938b1f7be8891f3a5876ddbb96", size = 1810770, upload-time = "2024-11-01T19:08:50.229Z" }, +] + +[[package]] +name = "pyarrow" +version = "17.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/27/4e/ea6d43f324169f8aec0e57569443a38bab4b398d09769ca64f7b4d467de3/pyarrow-17.0.0.tar.gz", hash = "sha256:4beca9521ed2c0921c1023e68d097d0299b62c362639ea315572a58f3f50fd28", size = 1112479, upload-time = "2024-07-17T10:41:25.092Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/39/5d/78d4b040bc5ff2fc6c3d03e80fca396b742f6c125b8af06bcf7427f931bc/pyarrow-17.0.0-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:a5c8b238d47e48812ee577ee20c9a2779e6a5904f1708ae240f53ecbee7c9f07", size = 28994846, upload-time = "2024-07-16T10:29:13.082Z" }, + { url = "https://files.pythonhosted.org/packages/3b/73/8ed168db7642e91180330e4ea9f3ff8bab404678f00d32d7df0871a4933b/pyarrow-17.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:db023dc4c6cae1015de9e198d41250688383c3f9af8f565370ab2b4cb5f62655", size = 27165908, upload-time = "2024-07-16T10:29:20.362Z" }, + { url = "https://files.pythonhosted.org/packages/81/36/e78c24be99242063f6d0590ef68c857ea07bdea470242c361e9a15bd57a4/pyarrow-17.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da1e060b3876faa11cee287839f9cc7cdc00649f475714b8680a05fd9071d545", size = 39264209, upload-time = "2024-07-16T10:29:27.621Z" }, + { url = "https://files.pythonhosted.org/packages/18/4c/3db637d7578f683b0a8fb8999b436bdbedd6e3517bd4f90c70853cf3ad20/pyarrow-17.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75c06d4624c0ad6674364bb46ef38c3132768139ddec1c56582dbac54f2663e2", size = 39862883, upload-time = "2024-07-16T10:29:34.34Z" }, + { url = "https://files.pythonhosted.org/packages/81/3c/0580626896c842614a523e66b351181ed5bb14e5dfc263cd68cea2c46d90/pyarrow-17.0.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:fa3c246cc58cb5a4a5cb407a18f193354ea47dd0648194e6265bd24177982fe8", size = 38723009, upload-time = "2024-07-16T10:29:41.123Z" }, + { url = "https://files.pythonhosted.org/packages/ee/fb/c1b47f0ada36d856a352da261a44d7344d8f22e2f7db3945f8c3b81be5dd/pyarrow-17.0.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:f7ae2de664e0b158d1607699a16a488de3d008ba99b3a7aa5de1cbc13574d047", size = 39855626, upload-time = "2024-07-16T10:29:49.004Z" }, + { url = "https://files.pythonhosted.org/packages/19/09/b0a02908180a25d57312ab5919069c39fddf30602568980419f4b02393f6/pyarrow-17.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:5984f416552eea15fd9cee03da53542bf4cddaef5afecefb9aa8d1010c335087", size = 25147242, upload-time = "2024-07-16T10:29:56.195Z" }, + { url = "https://files.pythonhosted.org/packages/f9/46/ce89f87c2936f5bb9d879473b9663ce7a4b1f4359acc2f0eb39865eaa1af/pyarrow-17.0.0-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:1c8856e2ef09eb87ecf937104aacfa0708f22dfeb039c363ec99735190ffb977", size = 29028748, upload-time = "2024-07-16T10:30:02.609Z" }, + { url = "https://files.pythonhosted.org/packages/8d/8e/ce2e9b2146de422f6638333c01903140e9ada244a2a477918a368306c64c/pyarrow-17.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2e19f569567efcbbd42084e87f948778eb371d308e137a0f97afe19bb860ccb3", size = 27190965, upload-time = "2024-07-16T10:30:10.718Z" }, + { url = "https://files.pythonhosted.org/packages/3b/c8/5675719570eb1acd809481c6d64e2136ffb340bc387f4ca62dce79516cea/pyarrow-17.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b244dc8e08a23b3e352899a006a26ae7b4d0da7bb636872fa8f5884e70acf15", size = 39269081, upload-time = "2024-07-16T10:30:18.878Z" }, + { url = "https://files.pythonhosted.org/packages/5e/78/3931194f16ab681ebb87ad252e7b8d2c8b23dad49706cadc865dff4a1dd3/pyarrow-17.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b72e87fe3e1db343995562f7fff8aee354b55ee83d13afba65400c178ab2597", size = 39864921, upload-time = "2024-07-16T10:30:27.008Z" }, + { url = "https://files.pythonhosted.org/packages/d8/81/69b6606093363f55a2a574c018901c40952d4e902e670656d18213c71ad7/pyarrow-17.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:dc5c31c37409dfbc5d014047817cb4ccd8c1ea25d19576acf1a001fe07f5b420", size = 38740798, upload-time = "2024-07-16T10:30:34.814Z" }, + { url = "https://files.pythonhosted.org/packages/4c/21/9ca93b84b92ef927814cb7ba37f0774a484c849d58f0b692b16af8eebcfb/pyarrow-17.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:e3343cb1e88bc2ea605986d4b94948716edc7a8d14afd4e2c097232f729758b4", size = 39871877, upload-time = "2024-07-16T10:30:42.672Z" }, + { url = "https://files.pythonhosted.org/packages/30/d1/63a7c248432c71c7d3ee803e706590a0b81ce1a8d2b2ae49677774b813bb/pyarrow-17.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:a27532c38f3de9eb3e90ecab63dfda948a8ca859a66e3a47f5f42d1e403c4d03", size = 25151089, upload-time = "2024-07-16T10:30:49.279Z" }, + { url = "https://files.pythonhosted.org/packages/d4/62/ce6ac1275a432b4a27c55fe96c58147f111d8ba1ad800a112d31859fae2f/pyarrow-17.0.0-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:9b8a823cea605221e61f34859dcc03207e52e409ccf6354634143e23af7c8d22", size = 29019418, upload-time = "2024-07-16T10:30:55.573Z" }, + { url = "https://files.pythonhosted.org/packages/8e/0a/dbd0c134e7a0c30bea439675cc120012337202e5fac7163ba839aa3691d2/pyarrow-17.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f1e70de6cb5790a50b01d2b686d54aaf73da01266850b05e3af2a1bc89e16053", size = 27152197, upload-time = "2024-07-16T10:31:02.036Z" }, + { url = "https://files.pythonhosted.org/packages/cb/05/3f4a16498349db79090767620d6dc23c1ec0c658a668d61d76b87706c65d/pyarrow-17.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0071ce35788c6f9077ff9ecba4858108eebe2ea5a3f7cf2cf55ebc1dbc6ee24a", size = 39263026, upload-time = "2024-07-16T10:31:10.351Z" }, + { url = "https://files.pythonhosted.org/packages/c2/0c/ea2107236740be8fa0e0d4a293a095c9f43546a2465bb7df34eee9126b09/pyarrow-17.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:757074882f844411fcca735e39aae74248a1531367a7c80799b4266390ae51cc", size = 39880798, upload-time = "2024-07-16T10:31:17.66Z" }, + { url = "https://files.pythonhosted.org/packages/f6/b0/b9164a8bc495083c10c281cc65064553ec87b7537d6f742a89d5953a2a3e/pyarrow-17.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:9ba11c4f16976e89146781a83833df7f82077cdab7dc6232c897789343f7891a", size = 38715172, upload-time = "2024-07-16T10:31:25.965Z" }, + { url = "https://files.pythonhosted.org/packages/f1/c4/9625418a1413005e486c006e56675334929fad864347c5ae7c1b2e7fe639/pyarrow-17.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b0c6ac301093b42d34410b187bba560b17c0330f64907bfa4f7f7f2444b0cf9b", size = 39874508, upload-time = "2024-07-16T10:31:33.721Z" }, + { url = "https://files.pythonhosted.org/packages/ae/49/baafe2a964f663413be3bd1cf5c45ed98c5e42e804e2328e18f4570027c1/pyarrow-17.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:392bc9feabc647338e6c89267635e111d71edad5fcffba204425a7c8d13610d7", size = 25099235, upload-time = "2024-07-16T10:31:40.893Z" }, + { url = "https://files.pythonhosted.org/packages/43/e0/a898096d35be240aa61fb2d54db58b86d664b10e1e51256f9300f47565e8/pyarrow-17.0.0-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:13d7a460b412f31e4c0efa1148e1d29bdf18ad1411eb6757d38f8fbdcc8645fb", size = 29007881, upload-time = "2024-07-17T10:40:37.927Z" }, + { url = "https://files.pythonhosted.org/packages/59/22/f7d14907ed0697b5dd488d393129f2738629fa5bcba863e00931b7975946/pyarrow-17.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9b564a51fbccfab5a04a80453e5ac6c9954a9c5ef2890d1bcf63741909c3f8df", size = 27178117, upload-time = "2024-07-17T10:40:43.964Z" }, + { url = "https://files.pythonhosted.org/packages/bf/ee/661211feac0ed48467b1d5c57298c91403809ec3ab78b1d175e1d6ad03cf/pyarrow-17.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32503827abbc5aadedfa235f5ece8c4f8f8b0a3cf01066bc8d29de7539532687", size = 39273896, upload-time = "2024-07-17T10:40:51.276Z" }, + { url = "https://files.pythonhosted.org/packages/af/61/bcd9b58e38ead6ad42b9ed00da33a3f862bc1d445e3d3164799c25550ac2/pyarrow-17.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a155acc7f154b9ffcc85497509bcd0d43efb80d6f733b0dc3bb14e281f131c8b", size = 39875438, upload-time = "2024-07-17T10:40:58.5Z" }, + { url = "https://files.pythonhosted.org/packages/75/63/29d1bfcc57af73cde3fc3baccab2f37548de512dbe0ab294b033cd203516/pyarrow-17.0.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:dec8d129254d0188a49f8a1fc99e0560dc1b85f60af729f47de4046015f9b0a5", size = 38735092, upload-time = "2024-07-17T10:41:06.034Z" }, + { url = "https://files.pythonhosted.org/packages/39/f4/90258b4de753df7cc61cefb0312f8abcf226672e96cc64996e66afce817a/pyarrow-17.0.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:a48ddf5c3c6a6c505904545c25a4ae13646ae1f8ba703c4df4a1bfe4f4006bda", size = 39867610, upload-time = "2024-07-17T10:41:13.61Z" }, + { url = "https://files.pythonhosted.org/packages/e7/f6/b75d4816c32f1618ed31a005ee635dd1d91d8164495d94f2ea092f594661/pyarrow-17.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:42bf93249a083aca230ba7e2786c5f673507fa97bbd9725a1e2754715151a204", size = 25148611, upload-time = "2024-07-17T10:41:20.698Z" }, +] + +[[package]] +name = "pyasn1" +version = "0.6.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ba/e9/01f1a64245b89f039897cb0130016d79f77d52669aae6ee7b159a6c4c018/pyasn1-0.6.1.tar.gz", hash = "sha256:6f580d2bdd84365380830acf45550f2511469f673cb4a5ae3857a3170128b034", size = 145322, upload-time = "2024-09-10T22:41:42.55Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/f1/d6a797abb14f6283c0ddff96bbdd46937f64122b8c925cab503dd37f8214/pyasn1-0.6.1-py3-none-any.whl", hash = "sha256:0d632f46f2ba09143da3a8afe9e33fb6f92fa2320ab7e886e2d0f7672af84629", size = 83135, upload-time = "2024-09-11T16:00:36.122Z" }, +] + +[[package]] +name = "pyasn1-modules" +version = "0.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyasn1" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e9/e6/78ebbb10a8c8e4b61a59249394a4a594c1a7af95593dc933a349c8d00964/pyasn1_modules-0.4.2.tar.gz", hash = "sha256:677091de870a80aae844b1ca6134f54652fa2c8c5a52aa396440ac3106e941e6", size = 307892, upload-time = "2025-03-28T02:41:22.17Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/47/8d/d529b5d697919ba8c11ad626e835d4039be708a35b0d22de83a269a6682c/pyasn1_modules-0.4.2-py3-none-any.whl", hash = "sha256:29253a9207ce32b64c3ac6600edc75368f98473906e8fd1043bd6b5b1de2c14a", size = 181259, upload-time = "2025-03-28T02:41:19.028Z" }, +] + [[package]] name = "pycparser" version = "2.22" @@ -2235,6 +3842,130 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552, upload-time = "2024-03-30T13:22:20.476Z" }, ] +[[package]] +name = "pydantic" +version = "2.11.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/00/dd/4325abf92c39ba8623b5af936ddb36ffcfe0beae70405d456ab1fb2f5b8c/pydantic-2.11.7.tar.gz", hash = "sha256:d989c3c6cb79469287b1569f7447a17848c998458d49ebe294e975b9baf0f0db", size = 788350, upload-time = "2025-06-14T08:33:17.137Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/c0/ec2b1c8712ca690e5d61979dee872603e92b8a32f94cc1b72d53beab008a/pydantic-2.11.7-py3-none-any.whl", hash = "sha256:dde5df002701f6de26248661f6835bbe296a47bf73990135c7d07ce741b9623b", size = 444782, upload-time = "2025-06-14T08:33:14.905Z" }, +] + +[[package]] +name = "pydantic-core" +version = "2.33.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195, upload-time = "2025-04-23T18:33:52.104Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/92/b31726561b5dae176c2d2c2dc43a9c5bfba5d32f96f8b4c0a600dd492447/pydantic_core-2.33.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2b3d326aaef0c0399d9afffeb6367d5e26ddc24d351dbc9c636840ac355dc5d8", size = 2028817, upload-time = "2025-04-23T18:30:43.919Z" }, + { url = "https://files.pythonhosted.org/packages/a3/44/3f0b95fafdaca04a483c4e685fe437c6891001bf3ce8b2fded82b9ea3aa1/pydantic_core-2.33.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e5b2671f05ba48b94cb90ce55d8bdcaaedb8ba00cc5359f6810fc918713983d", size = 1861357, upload-time = "2025-04-23T18:30:46.372Z" }, + { url = "https://files.pythonhosted.org/packages/30/97/e8f13b55766234caae05372826e8e4b3b96e7b248be3157f53237682e43c/pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0069c9acc3f3981b9ff4cdfaf088e98d83440a4c7ea1bc07460af3d4dc22e72d", size = 1898011, upload-time = "2025-04-23T18:30:47.591Z" }, + { url = "https://files.pythonhosted.org/packages/9b/a3/99c48cf7bafc991cc3ee66fd544c0aae8dc907b752f1dad2d79b1b5a471f/pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d53b22f2032c42eaaf025f7c40c2e3b94568ae077a606f006d206a463bc69572", size = 1982730, upload-time = "2025-04-23T18:30:49.328Z" }, + { url = "https://files.pythonhosted.org/packages/de/8e/a5b882ec4307010a840fb8b58bd9bf65d1840c92eae7534c7441709bf54b/pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0405262705a123b7ce9f0b92f123334d67b70fd1f20a9372b907ce1080c7ba02", size = 2136178, upload-time = "2025-04-23T18:30:50.907Z" }, + { url = "https://files.pythonhosted.org/packages/e4/bb/71e35fc3ed05af6834e890edb75968e2802fe98778971ab5cba20a162315/pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4b25d91e288e2c4e0662b8038a28c6a07eaac3e196cfc4ff69de4ea3db992a1b", size = 2736462, upload-time = "2025-04-23T18:30:52.083Z" }, + { url = "https://files.pythonhosted.org/packages/31/0d/c8f7593e6bc7066289bbc366f2235701dcbebcd1ff0ef8e64f6f239fb47d/pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bdfe4b3789761f3bcb4b1ddf33355a71079858958e3a552f16d5af19768fef2", size = 2005652, upload-time = "2025-04-23T18:30:53.389Z" }, + { url = "https://files.pythonhosted.org/packages/d2/7a/996d8bd75f3eda405e3dd219ff5ff0a283cd8e34add39d8ef9157e722867/pydantic_core-2.33.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:efec8db3266b76ef9607c2c4c419bdb06bf335ae433b80816089ea7585816f6a", size = 2113306, upload-time = "2025-04-23T18:30:54.661Z" }, + { url = "https://files.pythonhosted.org/packages/ff/84/daf2a6fb2db40ffda6578a7e8c5a6e9c8affb251a05c233ae37098118788/pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:031c57d67ca86902726e0fae2214ce6770bbe2f710dc33063187a68744a5ecac", size = 2073720, upload-time = "2025-04-23T18:30:56.11Z" }, + { url = "https://files.pythonhosted.org/packages/77/fb/2258da019f4825128445ae79456a5499c032b55849dbd5bed78c95ccf163/pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:f8de619080e944347f5f20de29a975c2d815d9ddd8be9b9b7268e2e3ef68605a", size = 2244915, upload-time = "2025-04-23T18:30:57.501Z" }, + { url = "https://files.pythonhosted.org/packages/d8/7a/925ff73756031289468326e355b6fa8316960d0d65f8b5d6b3a3e7866de7/pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:73662edf539e72a9440129f231ed3757faab89630d291b784ca99237fb94db2b", size = 2241884, upload-time = "2025-04-23T18:30:58.867Z" }, + { url = "https://files.pythonhosted.org/packages/0b/b0/249ee6d2646f1cdadcb813805fe76265745c4010cf20a8eba7b0e639d9b2/pydantic_core-2.33.2-cp310-cp310-win32.whl", hash = "sha256:0a39979dcbb70998b0e505fb1556a1d550a0781463ce84ebf915ba293ccb7e22", size = 1910496, upload-time = "2025-04-23T18:31:00.078Z" }, + { url = "https://files.pythonhosted.org/packages/66/ff/172ba8f12a42d4b552917aa65d1f2328990d3ccfc01d5b7c943ec084299f/pydantic_core-2.33.2-cp310-cp310-win_amd64.whl", hash = "sha256:b0379a2b24882fef529ec3b4987cb5d003b9cda32256024e6fe1586ac45fc640", size = 1955019, upload-time = "2025-04-23T18:31:01.335Z" }, + { url = "https://files.pythonhosted.org/packages/3f/8d/71db63483d518cbbf290261a1fc2839d17ff89fce7089e08cad07ccfce67/pydantic_core-2.33.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:4c5b0a576fb381edd6d27f0a85915c6daf2f8138dc5c267a57c08a62900758c7", size = 2028584, upload-time = "2025-04-23T18:31:03.106Z" }, + { url = "https://files.pythonhosted.org/packages/24/2f/3cfa7244ae292dd850989f328722d2aef313f74ffc471184dc509e1e4e5a/pydantic_core-2.33.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e799c050df38a639db758c617ec771fd8fb7a5f8eaaa4b27b101f266b216a246", size = 1855071, upload-time = "2025-04-23T18:31:04.621Z" }, + { url = "https://files.pythonhosted.org/packages/b3/d3/4ae42d33f5e3f50dd467761304be2fa0a9417fbf09735bc2cce003480f2a/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc46a01bf8d62f227d5ecee74178ffc448ff4e5197c756331f71efcc66dc980f", size = 1897823, upload-time = "2025-04-23T18:31:06.377Z" }, + { url = "https://files.pythonhosted.org/packages/f4/f3/aa5976e8352b7695ff808599794b1fba2a9ae2ee954a3426855935799488/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a144d4f717285c6d9234a66778059f33a89096dfb9b39117663fd8413d582dcc", size = 1983792, upload-time = "2025-04-23T18:31:07.93Z" }, + { url = "https://files.pythonhosted.org/packages/d5/7a/cda9b5a23c552037717f2b2a5257e9b2bfe45e687386df9591eff7b46d28/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73cf6373c21bc80b2e0dc88444f41ae60b2f070ed02095754eb5a01df12256de", size = 2136338, upload-time = "2025-04-23T18:31:09.283Z" }, + { url = "https://files.pythonhosted.org/packages/2b/9f/b8f9ec8dd1417eb9da784e91e1667d58a2a4a7b7b34cf4af765ef663a7e5/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dc625f4aa79713512d1976fe9f0bc99f706a9dee21dfd1810b4bbbf228d0e8a", size = 2730998, upload-time = "2025-04-23T18:31:11.7Z" }, + { url = "https://files.pythonhosted.org/packages/47/bc/cd720e078576bdb8255d5032c5d63ee5c0bf4b7173dd955185a1d658c456/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b21b5549499972441da4758d662aeea93f1923f953e9cbaff14b8b9565aef", size = 2003200, upload-time = "2025-04-23T18:31:13.536Z" }, + { url = "https://files.pythonhosted.org/packages/ca/22/3602b895ee2cd29d11a2b349372446ae9727c32e78a94b3d588a40fdf187/pydantic_core-2.33.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bdc25f3681f7b78572699569514036afe3c243bc3059d3942624e936ec93450e", size = 2113890, upload-time = "2025-04-23T18:31:15.011Z" }, + { url = "https://files.pythonhosted.org/packages/ff/e6/e3c5908c03cf00d629eb38393a98fccc38ee0ce8ecce32f69fc7d7b558a7/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fe5b32187cbc0c862ee201ad66c30cf218e5ed468ec8dc1cf49dec66e160cc4d", size = 2073359, upload-time = "2025-04-23T18:31:16.393Z" }, + { url = "https://files.pythonhosted.org/packages/12/e7/6a36a07c59ebefc8777d1ffdaf5ae71b06b21952582e4b07eba88a421c79/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:bc7aee6f634a6f4a95676fcb5d6559a2c2a390330098dba5e5a5f28a2e4ada30", size = 2245883, upload-time = "2025-04-23T18:31:17.892Z" }, + { url = "https://files.pythonhosted.org/packages/16/3f/59b3187aaa6cc0c1e6616e8045b284de2b6a87b027cce2ffcea073adf1d2/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:235f45e5dbcccf6bd99f9f472858849f73d11120d76ea8707115415f8e5ebebf", size = 2241074, upload-time = "2025-04-23T18:31:19.205Z" }, + { url = "https://files.pythonhosted.org/packages/e0/ed/55532bb88f674d5d8f67ab121a2a13c385df382de2a1677f30ad385f7438/pydantic_core-2.33.2-cp311-cp311-win32.whl", hash = "sha256:6368900c2d3ef09b69cb0b913f9f8263b03786e5b2a387706c5afb66800efd51", size = 1910538, upload-time = "2025-04-23T18:31:20.541Z" }, + { url = "https://files.pythonhosted.org/packages/fe/1b/25b7cccd4519c0b23c2dd636ad39d381abf113085ce4f7bec2b0dc755eb1/pydantic_core-2.33.2-cp311-cp311-win_amd64.whl", hash = "sha256:1e063337ef9e9820c77acc768546325ebe04ee38b08703244c1309cccc4f1bab", size = 1952909, upload-time = "2025-04-23T18:31:22.371Z" }, + { url = "https://files.pythonhosted.org/packages/49/a9/d809358e49126438055884c4366a1f6227f0f84f635a9014e2deb9b9de54/pydantic_core-2.33.2-cp311-cp311-win_arm64.whl", hash = "sha256:6b99022f1d19bc32a4c2a0d544fc9a76e3be90f0b3f4af413f87d38749300e65", size = 1897786, upload-time = "2025-04-23T18:31:24.161Z" }, + { url = "https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", size = 2009000, upload-time = "2025-04-23T18:31:25.863Z" }, + { url = "https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", size = 1847996, upload-time = "2025-04-23T18:31:27.341Z" }, + { url = "https://files.pythonhosted.org/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", size = 1880957, upload-time = "2025-04-23T18:31:28.956Z" }, + { url = "https://files.pythonhosted.org/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", size = 1964199, upload-time = "2025-04-23T18:31:31.025Z" }, + { url = "https://files.pythonhosted.org/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", size = 2120296, upload-time = "2025-04-23T18:31:32.514Z" }, + { url = "https://files.pythonhosted.org/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", size = 2676109, upload-time = "2025-04-23T18:31:33.958Z" }, + { url = "https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", size = 2002028, upload-time = "2025-04-23T18:31:39.095Z" }, + { url = "https://files.pythonhosted.org/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", size = 2100044, upload-time = "2025-04-23T18:31:41.034Z" }, + { url = "https://files.pythonhosted.org/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", size = 2058881, upload-time = "2025-04-23T18:31:42.757Z" }, + { url = "https://files.pythonhosted.org/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", size = 2227034, upload-time = "2025-04-23T18:31:44.304Z" }, + { url = "https://files.pythonhosted.org/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", size = 2234187, upload-time = "2025-04-23T18:31:45.891Z" }, + { url = "https://files.pythonhosted.org/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", size = 1892628, upload-time = "2025-04-23T18:31:47.819Z" }, + { url = "https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", size = 1955866, upload-time = "2025-04-23T18:31:49.635Z" }, + { url = "https://files.pythonhosted.org/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", size = 1888894, upload-time = "2025-04-23T18:31:51.609Z" }, + { url = "https://files.pythonhosted.org/packages/46/8c/99040727b41f56616573a28771b1bfa08a3d3fe74d3d513f01251f79f172/pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f", size = 2015688, upload-time = "2025-04-23T18:31:53.175Z" }, + { url = "https://files.pythonhosted.org/packages/3a/cc/5999d1eb705a6cefc31f0b4a90e9f7fc400539b1a1030529700cc1b51838/pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6", size = 1844808, upload-time = "2025-04-23T18:31:54.79Z" }, + { url = "https://files.pythonhosted.org/packages/6f/5e/a0a7b8885c98889a18b6e376f344da1ef323d270b44edf8174d6bce4d622/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef", size = 1885580, upload-time = "2025-04-23T18:31:57.393Z" }, + { url = "https://files.pythonhosted.org/packages/3b/2a/953581f343c7d11a304581156618c3f592435523dd9d79865903272c256a/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a", size = 1973859, upload-time = "2025-04-23T18:31:59.065Z" }, + { url = "https://files.pythonhosted.org/packages/e6/55/f1a813904771c03a3f97f676c62cca0c0a4138654107c1b61f19c644868b/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916", size = 2120810, upload-time = "2025-04-23T18:32:00.78Z" }, + { url = "https://files.pythonhosted.org/packages/aa/c3/053389835a996e18853ba107a63caae0b9deb4a276c6b472931ea9ae6e48/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a", size = 2676498, upload-time = "2025-04-23T18:32:02.418Z" }, + { url = "https://files.pythonhosted.org/packages/eb/3c/f4abd740877a35abade05e437245b192f9d0ffb48bbbbd708df33d3cda37/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d", size = 2000611, upload-time = "2025-04-23T18:32:04.152Z" }, + { url = "https://files.pythonhosted.org/packages/59/a7/63ef2fed1837d1121a894d0ce88439fe3e3b3e48c7543b2a4479eb99c2bd/pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56", size = 2107924, upload-time = "2025-04-23T18:32:06.129Z" }, + { url = "https://files.pythonhosted.org/packages/04/8f/2551964ef045669801675f1cfc3b0d74147f4901c3ffa42be2ddb1f0efc4/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5", size = 2063196, upload-time = "2025-04-23T18:32:08.178Z" }, + { url = "https://files.pythonhosted.org/packages/26/bd/d9602777e77fc6dbb0c7db9ad356e9a985825547dce5ad1d30ee04903918/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e", size = 2236389, upload-time = "2025-04-23T18:32:10.242Z" }, + { url = "https://files.pythonhosted.org/packages/42/db/0e950daa7e2230423ab342ae918a794964b053bec24ba8af013fc7c94846/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162", size = 2239223, upload-time = "2025-04-23T18:32:12.382Z" }, + { url = "https://files.pythonhosted.org/packages/58/4d/4f937099c545a8a17eb52cb67fe0447fd9a373b348ccfa9a87f141eeb00f/pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849", size = 1900473, upload-time = "2025-04-23T18:32:14.034Z" }, + { url = "https://files.pythonhosted.org/packages/a0/75/4a0a9bac998d78d889def5e4ef2b065acba8cae8c93696906c3a91f310ca/pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9", size = 1955269, upload-time = "2025-04-23T18:32:15.783Z" }, + { url = "https://files.pythonhosted.org/packages/f9/86/1beda0576969592f1497b4ce8e7bc8cbdf614c352426271b1b10d5f0aa64/pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9", size = 1893921, upload-time = "2025-04-23T18:32:18.473Z" }, + { url = "https://files.pythonhosted.org/packages/a4/7d/e09391c2eebeab681df2b74bfe6c43422fffede8dc74187b2b0bf6fd7571/pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac", size = 1806162, upload-time = "2025-04-23T18:32:20.188Z" }, + { url = "https://files.pythonhosted.org/packages/f1/3d/847b6b1fed9f8ed3bb95a9ad04fbd0b212e832d4f0f50ff4d9ee5a9f15cf/pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5", size = 1981560, upload-time = "2025-04-23T18:32:22.354Z" }, + { url = "https://files.pythonhosted.org/packages/6f/9a/e73262f6c6656262b5fdd723ad90f518f579b7bc8622e43a942eec53c938/pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9", size = 1935777, upload-time = "2025-04-23T18:32:25.088Z" }, + { url = "https://files.pythonhosted.org/packages/53/ea/bbe9095cdd771987d13c82d104a9c8559ae9aec1e29f139e286fd2e9256e/pydantic_core-2.33.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a2b911a5b90e0374d03813674bf0a5fbbb7741570dcd4b4e85a2e48d17def29d", size = 2028677, upload-time = "2025-04-23T18:32:27.227Z" }, + { url = "https://files.pythonhosted.org/packages/49/1d/4ac5ed228078737d457a609013e8f7edc64adc37b91d619ea965758369e5/pydantic_core-2.33.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6fa6dfc3e4d1f734a34710f391ae822e0a8eb8559a85c6979e14e65ee6ba2954", size = 1864735, upload-time = "2025-04-23T18:32:29.019Z" }, + { url = "https://files.pythonhosted.org/packages/23/9a/2e70d6388d7cda488ae38f57bc2f7b03ee442fbcf0d75d848304ac7e405b/pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c54c939ee22dc8e2d545da79fc5381f1c020d6d3141d3bd747eab59164dc89fb", size = 1898467, upload-time = "2025-04-23T18:32:31.119Z" }, + { url = "https://files.pythonhosted.org/packages/ff/2e/1568934feb43370c1ffb78a77f0baaa5a8b6897513e7a91051af707ffdc4/pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:53a57d2ed685940a504248187d5685e49eb5eef0f696853647bf37c418c538f7", size = 1983041, upload-time = "2025-04-23T18:32:33.655Z" }, + { url = "https://files.pythonhosted.org/packages/01/1a/1a1118f38ab64eac2f6269eb8c120ab915be30e387bb561e3af904b12499/pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09fb9dd6571aacd023fe6aaca316bd01cf60ab27240d7eb39ebd66a3a15293b4", size = 2136503, upload-time = "2025-04-23T18:32:35.519Z" }, + { url = "https://files.pythonhosted.org/packages/5c/da/44754d1d7ae0f22d6d3ce6c6b1486fc07ac2c524ed8f6eca636e2e1ee49b/pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0e6116757f7959a712db11f3e9c0a99ade00a5bbedae83cb801985aa154f071b", size = 2736079, upload-time = "2025-04-23T18:32:37.659Z" }, + { url = "https://files.pythonhosted.org/packages/4d/98/f43cd89172220ec5aa86654967b22d862146bc4d736b1350b4c41e7c9c03/pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d55ab81c57b8ff8548c3e4947f119551253f4e3787a7bbc0b6b3ca47498a9d3", size = 2006508, upload-time = "2025-04-23T18:32:39.637Z" }, + { url = "https://files.pythonhosted.org/packages/2b/cc/f77e8e242171d2158309f830f7d5d07e0531b756106f36bc18712dc439df/pydantic_core-2.33.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c20c462aa4434b33a2661701b861604913f912254e441ab8d78d30485736115a", size = 2113693, upload-time = "2025-04-23T18:32:41.818Z" }, + { url = "https://files.pythonhosted.org/packages/54/7a/7be6a7bd43e0a47c147ba7fbf124fe8aaf1200bc587da925509641113b2d/pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:44857c3227d3fb5e753d5fe4a3420d6376fa594b07b621e220cd93703fe21782", size = 2074224, upload-time = "2025-04-23T18:32:44.033Z" }, + { url = "https://files.pythonhosted.org/packages/2a/07/31cf8fadffbb03be1cb520850e00a8490c0927ec456e8293cafda0726184/pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:eb9b459ca4df0e5c87deb59d37377461a538852765293f9e6ee834f0435a93b9", size = 2245403, upload-time = "2025-04-23T18:32:45.836Z" }, + { url = "https://files.pythonhosted.org/packages/b6/8d/bbaf4c6721b668d44f01861f297eb01c9b35f612f6b8e14173cb204e6240/pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9fcd347d2cc5c23b06de6d3b7b8275be558a0c90549495c699e379a80bf8379e", size = 2242331, upload-time = "2025-04-23T18:32:47.618Z" }, + { url = "https://files.pythonhosted.org/packages/bb/93/3cc157026bca8f5006250e74515119fcaa6d6858aceee8f67ab6dc548c16/pydantic_core-2.33.2-cp39-cp39-win32.whl", hash = "sha256:83aa99b1285bc8f038941ddf598501a86f1536789740991d7d8756e34f1e74d9", size = 1910571, upload-time = "2025-04-23T18:32:49.401Z" }, + { url = "https://files.pythonhosted.org/packages/5b/90/7edc3b2a0d9f0dda8806c04e511a67b0b7a41d2187e2003673a996fb4310/pydantic_core-2.33.2-cp39-cp39-win_amd64.whl", hash = "sha256:f481959862f57f29601ccced557cc2e817bce7533ab8e01a797a48b49c9692b3", size = 1956504, upload-time = "2025-04-23T18:32:51.287Z" }, + { url = "https://files.pythonhosted.org/packages/30/68/373d55e58b7e83ce371691f6eaa7175e3a24b956c44628eb25d7da007917/pydantic_core-2.33.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5c4aa4e82353f65e548c476b37e64189783aa5384903bfea4f41580f255fddfa", size = 2023982, upload-time = "2025-04-23T18:32:53.14Z" }, + { url = "https://files.pythonhosted.org/packages/a4/16/145f54ac08c96a63d8ed6442f9dec17b2773d19920b627b18d4f10a061ea/pydantic_core-2.33.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d946c8bf0d5c24bf4fe333af284c59a19358aa3ec18cb3dc4370080da1e8ad29", size = 1858412, upload-time = "2025-04-23T18:32:55.52Z" }, + { url = "https://files.pythonhosted.org/packages/41/b1/c6dc6c3e2de4516c0bb2c46f6a373b91b5660312342a0cf5826e38ad82fa/pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87b31b6846e361ef83fedb187bb5b4372d0da3f7e28d85415efa92d6125d6e6d", size = 1892749, upload-time = "2025-04-23T18:32:57.546Z" }, + { url = "https://files.pythonhosted.org/packages/12/73/8cd57e20afba760b21b742106f9dbdfa6697f1570b189c7457a1af4cd8a0/pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa9d91b338f2df0508606f7009fde642391425189bba6d8c653afd80fd6bb64e", size = 2067527, upload-time = "2025-04-23T18:32:59.771Z" }, + { url = "https://files.pythonhosted.org/packages/e3/d5/0bb5d988cc019b3cba4a78f2d4b3854427fc47ee8ec8e9eaabf787da239c/pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2058a32994f1fde4ca0480ab9d1e75a0e8c87c22b53a3ae66554f9af78f2fe8c", size = 2108225, upload-time = "2025-04-23T18:33:04.51Z" }, + { url = "https://files.pythonhosted.org/packages/f1/c5/00c02d1571913d496aabf146106ad8239dc132485ee22efe08085084ff7c/pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:0e03262ab796d986f978f79c943fc5f620381be7287148b8010b4097f79a39ec", size = 2069490, upload-time = "2025-04-23T18:33:06.391Z" }, + { url = "https://files.pythonhosted.org/packages/22/a8/dccc38768274d3ed3a59b5d06f59ccb845778687652daa71df0cab4040d7/pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:1a8695a8d00c73e50bff9dfda4d540b7dee29ff9b8053e38380426a85ef10052", size = 2237525, upload-time = "2025-04-23T18:33:08.44Z" }, + { url = "https://files.pythonhosted.org/packages/d4/e7/4f98c0b125dda7cf7ccd14ba936218397b44f50a56dd8c16a3091df116c3/pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:fa754d1850735a0b0e03bcffd9d4b4343eb417e47196e4485d9cca326073a42c", size = 2238446, upload-time = "2025-04-23T18:33:10.313Z" }, + { url = "https://files.pythonhosted.org/packages/ce/91/2ec36480fdb0b783cd9ef6795753c1dea13882f2e68e73bce76ae8c21e6a/pydantic_core-2.33.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a11c8d26a50bfab49002947d3d237abe4d9e4b5bdc8846a63537b6488e197808", size = 2066678, upload-time = "2025-04-23T18:33:12.224Z" }, + { url = "https://files.pythonhosted.org/packages/7b/27/d4ae6487d73948d6f20dddcd94be4ea43e74349b56eba82e9bdee2d7494c/pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:dd14041875d09cc0f9308e37a6f8b65f5585cf2598a53aa0123df8b129d481f8", size = 2025200, upload-time = "2025-04-23T18:33:14.199Z" }, + { url = "https://files.pythonhosted.org/packages/f1/b8/b3cb95375f05d33801024079b9392a5ab45267a63400bf1866e7ce0f0de4/pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d87c561733f66531dced0da6e864f44ebf89a8fba55f31407b00c2f7f9449593", size = 1859123, upload-time = "2025-04-23T18:33:16.555Z" }, + { url = "https://files.pythonhosted.org/packages/05/bc/0d0b5adeda59a261cd30a1235a445bf55c7e46ae44aea28f7bd6ed46e091/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f82865531efd18d6e07a04a17331af02cb7a651583c418df8266f17a63c6612", size = 1892852, upload-time = "2025-04-23T18:33:18.513Z" }, + { url = "https://files.pythonhosted.org/packages/3e/11/d37bdebbda2e449cb3f519f6ce950927b56d62f0b84fd9cb9e372a26a3d5/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bfb5112df54209d820d7bf9317c7a6c9025ea52e49f46b6a2060104bba37de7", size = 2067484, upload-time = "2025-04-23T18:33:20.475Z" }, + { url = "https://files.pythonhosted.org/packages/8c/55/1f95f0a05ce72ecb02a8a8a1c3be0579bbc29b1d5ab68f1378b7bebc5057/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:64632ff9d614e5eecfb495796ad51b0ed98c453e447a76bcbeeb69615079fc7e", size = 2108896, upload-time = "2025-04-23T18:33:22.501Z" }, + { url = "https://files.pythonhosted.org/packages/53/89/2b2de6c81fa131f423246a9109d7b2a375e83968ad0800d6e57d0574629b/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:f889f7a40498cc077332c7ab6b4608d296d852182211787d4f3ee377aaae66e8", size = 2069475, upload-time = "2025-04-23T18:33:24.528Z" }, + { url = "https://files.pythonhosted.org/packages/b8/e9/1f7efbe20d0b2b10f6718944b5d8ece9152390904f29a78e68d4e7961159/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:de4b83bb311557e439b9e186f733f6c645b9417c84e2eb8203f3f820a4b988bf", size = 2239013, upload-time = "2025-04-23T18:33:26.621Z" }, + { url = "https://files.pythonhosted.org/packages/3c/b2/5309c905a93811524a49b4e031e9851a6b00ff0fb668794472ea7746b448/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:82f68293f055f51b51ea42fafc74b6aad03e70e191799430b90c13d643059ebb", size = 2238715, upload-time = "2025-04-23T18:33:28.656Z" }, + { url = "https://files.pythonhosted.org/packages/32/56/8a7ca5d2cd2cda1d245d34b1c9a942920a718082ae8e54e5f3e5a58b7add/pydantic_core-2.33.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:329467cecfb529c925cf2bbd4d60d2c509bc2fb52a20c1045bf09bb70971a9c1", size = 2066757, upload-time = "2025-04-23T18:33:30.645Z" }, + { url = "https://files.pythonhosted.org/packages/08/98/dbf3fdfabaf81cda5622154fda78ea9965ac467e3239078e0dcd6df159e7/pydantic_core-2.33.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:87acbfcf8e90ca885206e98359d7dca4bcbb35abdc0ff66672a293e1d7a19101", size = 2024034, upload-time = "2025-04-23T18:33:32.843Z" }, + { url = "https://files.pythonhosted.org/packages/8d/99/7810aa9256e7f2ccd492590f86b79d370df1e9292f1f80b000b6a75bd2fb/pydantic_core-2.33.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:7f92c15cd1e97d4b12acd1cc9004fa092578acfa57b67ad5e43a197175d01a64", size = 1858578, upload-time = "2025-04-23T18:33:34.912Z" }, + { url = "https://files.pythonhosted.org/packages/d8/60/bc06fa9027c7006cc6dd21e48dbf39076dc39d9abbaf718a1604973a9670/pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3f26877a748dc4251cfcfda9dfb5f13fcb034f5308388066bcfe9031b63ae7d", size = 1892858, upload-time = "2025-04-23T18:33:36.933Z" }, + { url = "https://files.pythonhosted.org/packages/f2/40/9d03997d9518816c68b4dfccb88969756b9146031b61cd37f781c74c9b6a/pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac89aea9af8cd672fa7b510e7b8c33b0bba9a43186680550ccf23020f32d535", size = 2068498, upload-time = "2025-04-23T18:33:38.997Z" }, + { url = "https://files.pythonhosted.org/packages/d8/62/d490198d05d2d86672dc269f52579cad7261ced64c2df213d5c16e0aecb1/pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:970919794d126ba8645f3837ab6046fb4e72bbc057b3709144066204c19a455d", size = 2108428, upload-time = "2025-04-23T18:33:41.18Z" }, + { url = "https://files.pythonhosted.org/packages/9a/ec/4cd215534fd10b8549015f12ea650a1a973da20ce46430b68fc3185573e8/pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3eb3fe62804e8f859c49ed20a8451342de53ed764150cb14ca71357c765dc2a6", size = 2069854, upload-time = "2025-04-23T18:33:43.446Z" }, + { url = "https://files.pythonhosted.org/packages/1a/1a/abbd63d47e1d9b0d632fee6bb15785d0889c8a6e0a6c3b5a8e28ac1ec5d2/pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:3abcd9392a36025e3bd55f9bd38d908bd17962cc49bc6da8e7e96285336e2bca", size = 2237859, upload-time = "2025-04-23T18:33:45.56Z" }, + { url = "https://files.pythonhosted.org/packages/80/1c/fa883643429908b1c90598fd2642af8839efd1d835b65af1f75fba4d94fe/pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:3a1c81334778f9e3af2f8aeb7a960736e5cab1dfebfb26aabca09afd2906c039", size = 2239059, upload-time = "2025-04-23T18:33:47.735Z" }, + { url = "https://files.pythonhosted.org/packages/d4/29/3cade8a924a61f60ccfa10842f75eb12787e1440e2b8660ceffeb26685e7/pydantic_core-2.33.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2807668ba86cb38c6817ad9bc66215ab8584d1d304030ce4f0887336f28a5e27", size = 2066661, upload-time = "2025-04-23T18:33:49.995Z" }, +] + [[package]] name = "pygments" version = "2.19.2" @@ -2280,9 +4011,50 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "six" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, +] + +[[package]] +name = "python-dotenv" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f6/b0/4bc07ccd3572a2f9df7e6782f52b0c6c90dcbb803ac4a167702d7d0dfe1e/python_dotenv-1.1.1.tar.gz", hash = "sha256:a8a6399716257f45be6a007360200409fce5cda2661e3dec71d23dc15f6189ab", size = 41978, upload-time = "2025-06-24T04:21:07.341Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5f/ed/539768cf28c661b5b068d66d96a2f155c4971a5d55684a514c1a0e0dec2f/python_dotenv-1.1.1-py3-none-any.whl", hash = "sha256:31f23644fe2602f88ff55e1f5c79ba497e01224ee7737937930c448e4d0e24dc", size = 20556, upload-time = "2025-06-24T04:21:06.073Z" }, +] + +[[package]] +name = "python-json-logger" +version = "3.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9e/de/d3144a0bceede957f961e975f3752760fbe390d57fbe194baf709d8f1f7b/python_json_logger-3.3.0.tar.gz", hash = "sha256:12b7e74b17775e7d565129296105bbe3910842d9d0eb083fc83a6a617aa8df84", size = 16642, upload-time = "2025-03-07T07:08:27.301Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/08/20/0f2523b9e50a8052bc6a8b732dfc8568abbdc42010aef03a2d750bdab3b2/python_json_logger-3.3.0-py3-none-any.whl", hash = "sha256:dd980fae8cffb24c13caf6e158d3d61c0d6d22342f932cb6e9deedab3d35eec7", size = 15163, upload-time = "2025-03-07T07:08:25.627Z" }, +] + +[[package]] +name = "pytorch-lightning" +version = "2.5.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "fsspec", extra = ["http"] }, + { name = "lightning-utilities" }, + { name = "packaging" }, + { name = "pyyaml" }, + { name = "torch", version = "2.7.1", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version >= '3.10' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, + { name = "torch", version = "2.7.1+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64') or platform_machine == 'x86_64' or sys_platform != 'darwin'" }, + { name = "torchmetrics" }, + { name = "tqdm" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/01/3e/728fbdc671d07727ad447f9401d98a43570573965beb3cb2060f9a330b4f/pytorch_lightning-2.5.2.tar.gz", hash = "sha256:f817087d611be8d43b777dd4e543d72703e235510936677a13e6c29f7fd790e3", size = 636859, upload-time = "2025-06-20T15:58:27.062Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, + { url = "https://files.pythonhosted.org/packages/e2/42/47c186c8f9e956e559c89e6c764d5d5d0d0af517c04ca0ad39bd0a357d3a/pytorch_lightning-2.5.2-py3-none-any.whl", hash = "sha256:17cfdf89bd98074e389101f097cdf34c486a1f5c6d3fdcefbaf4dea7f97ff0bf", size = 825366, upload-time = "2025-06-20T15:58:25.534Z" }, ] [[package]] @@ -2315,6 +4087,20 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/93/ff/2a8c10315ffbdee7b3883ac0d1667e267ca8b3f6f640d81d43b87a82c0c7/pywin32-310-cp39-cp39-win_amd64.whl", hash = "sha256:96867217335559ac619f00ad70e513c0fcf84b8a3af9fc2bba3b59b97da70475", size = 9602031, upload-time = "2025-03-17T00:55:44.512Z" }, ] +[[package]] +name = "pywinpty" +version = "2.0.15" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2d/7c/917f9c4681bb8d34bfbe0b79d36bbcd902651aeab48790df3d30ba0202fb/pywinpty-2.0.15.tar.gz", hash = "sha256:312cf39153a8736c617d45ce8b6ad6cd2107de121df91c455b10ce6bba7a39b2", size = 29017, upload-time = "2025-02-03T21:53:23.265Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a6/b7/855db919ae526d2628f3f2e6c281c4cdff7a9a8af51bb84659a9f07b1861/pywinpty-2.0.15-cp310-cp310-win_amd64.whl", hash = "sha256:8e7f5de756a615a38b96cd86fa3cd65f901ce54ce147a3179c45907fa11b4c4e", size = 1405161, upload-time = "2025-02-03T21:56:25.008Z" }, + { url = "https://files.pythonhosted.org/packages/5e/ac/6884dcb7108af66ad53f73ef4dad096e768c9203a6e6ce5e6b0c4a46e238/pywinpty-2.0.15-cp311-cp311-win_amd64.whl", hash = "sha256:9a6bcec2df2707aaa9d08b86071970ee32c5026e10bcc3cc5f6f391d85baf7ca", size = 1405249, upload-time = "2025-02-03T21:55:47.114Z" }, + { url = "https://files.pythonhosted.org/packages/88/e5/9714def18c3a411809771a3fbcec70bffa764b9675afb00048a620fca604/pywinpty-2.0.15-cp312-cp312-win_amd64.whl", hash = "sha256:83a8f20b430bbc5d8957249f875341a60219a4e971580f2ba694fbfb54a45ebc", size = 1405243, upload-time = "2025-02-03T21:56:52.476Z" }, + { url = "https://files.pythonhosted.org/packages/fb/16/2ab7b3b7f55f3c6929e5f629e1a68362981e4e5fed592a2ed1cb4b4914a5/pywinpty-2.0.15-cp313-cp313-win_amd64.whl", hash = "sha256:ab5920877dd632c124b4ed17bc6dd6ef3b9f86cd492b963ffdb1a67b85b0f408", size = 1405020, upload-time = "2025-02-03T21:56:04.753Z" }, + { url = "https://files.pythonhosted.org/packages/7c/16/edef3515dd2030db2795dbfbe392232c7a0f3dc41b98e92b38b42ba497c7/pywinpty-2.0.15-cp313-cp313t-win_amd64.whl", hash = "sha256:a4560ad8c01e537708d2790dbe7da7d986791de805d89dd0d3697ca59e9e4901", size = 1404151, upload-time = "2025-02-03T21:55:53.628Z" }, + { url = "https://files.pythonhosted.org/packages/47/96/90fa02f19b1eff7469ad7bf0ef8efca248025de9f1d0a0b25682d2aacf68/pywinpty-2.0.15-cp39-cp39-win_amd64.whl", hash = "sha256:d261cd88fcd358cfb48a7ca0700db3e1c088c9c10403c9ebc0d8a8b57aa6a117", size = 1405302, upload-time = "2025-02-03T21:55:40.394Z" }, +] + [[package]] name = "pyyaml" version = "6.0.2" @@ -2443,21 +4229,306 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/51/8b/619a9ee2fa4d3c724fbadde946427735ade64da03894b071bbdc3b789d83/pyzmq-27.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:096af9e133fec3a72108ddefba1e42985cb3639e9de52cfd336b6fc23aa083e9", size = 544715, upload-time = "2025-06-13T14:09:05.579Z" }, ] +[[package]] +name = "ray" +version = "2.47.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click", version = "8.1.8", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "click", version = "8.2.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "filelock" }, + { name = "jsonschema" }, + { name = "msgpack" }, + { name = "packaging" }, + { name = "protobuf" }, + { name = "pyyaml" }, + { name = "requests" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/92/fe/2f1fc21b7a321385fe34fd159c27245c06bad795aba7de71f29e7a00e741/ray-2.47.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:36a30930e8d265e708df96f37f6f1f5484f4b97090d505912f992e045a69d310", size = 66145880, upload-time = "2025-06-17T22:26:11.637Z" }, + { url = "https://files.pythonhosted.org/packages/87/4a/60b0ce7dc1ac04e9c48fc398afed557f0f0cb3fd74c07cb71b567a041157/ray-2.47.1-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:7c03a1e366d3a868a55f8c2f728f5ce35ac85ddf093ac81d0c1a35bf1c25c377", size = 68562947, upload-time = "2025-06-17T22:26:18.483Z" }, + { url = "https://files.pythonhosted.org/packages/2f/a6/bad64e886ef74bbcab7d36b617e41c378088fc4852557005c1e227669697/ray-2.47.1-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:6fc7df8657b8df684b77c2d1b643137ad745aa1c12ade34743f06cca79003df0", size = 67810643, upload-time = "2025-06-17T22:26:24.75Z" }, + { url = "https://files.pythonhosted.org/packages/6d/98/9289f360deb9b3d32cc9170168dff919c2f5192bf87682d5b72050206dca/ray-2.47.1-cp310-cp310-manylinux2014_x86_64.whl", hash = "sha256:84a96b4720175a0000521a48eb7aa915f3b419bb5cd6172d8dee005c3f23b813", size = 68760640, upload-time = "2025-06-17T22:26:30.545Z" }, + { url = "https://files.pythonhosted.org/packages/b6/6c/80690615b50e5e6f5309d5f0f9fcaaf83170e5240252c0d8bbeedc8dc9bd/ray-2.47.1-cp310-cp310-win_amd64.whl", hash = "sha256:44900a1a72cb3bfb331db160a8975737c25945a97f376c70e72ccf35adf3b744", size = 26231731, upload-time = "2025-06-17T22:26:35.84Z" }, + { url = "https://files.pythonhosted.org/packages/82/8c/f763f633a4c80d9ead6c1e9277983c42286a3a83dedccedb15363f3d4c40/ray-2.47.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a640d447e0e6cf63f85b9220c883ec02bb2b8e40a9c1d84efa012795c769ba68", size = 66106702, upload-time = "2025-06-17T22:26:40.409Z" }, + { url = "https://files.pythonhosted.org/packages/5d/10/05b70d425c46eba22bdd46a77cf7db09328eb9dcbf5952fa32e42c5c28e5/ray-2.47.1-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:feeba1e715cfd8737d3adcd2018d0cdabb7c6084fa4b093e638e6c7d42f3c956", size = 68525746, upload-time = "2025-06-17T22:26:46.284Z" }, + { url = "https://files.pythonhosted.org/packages/cd/2d/a3fe20b0830ecbe74dac1ae809c265023f713e19a9f6100870d50885f44d/ray-2.47.1-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:db5ff652e9035f03c65e1742a706b76519f6e8a6744cc005396053ac8766fc46", size = 67906931, upload-time = "2025-06-17T22:26:52.132Z" }, + { url = "https://files.pythonhosted.org/packages/5f/2b/d1395192c748b3761a43f2dbd9fa702a56f8e185fc2beee73ba25e801a46/ray-2.47.1-cp311-cp311-manylinux2014_x86_64.whl", hash = "sha256:48961229614b2b56a535be510c8abc76e99a9aa7fa195b5c949bd0c6c69af40a", size = 68851571, upload-time = "2025-06-17T22:26:57.862Z" }, + { url = "https://files.pythonhosted.org/packages/de/dd/b5dc7d3581e52683259c80014e95074835042ceaf1dea6a400185e0e1947/ray-2.47.1-cp311-cp311-win_amd64.whl", hash = "sha256:bd1cba64070db06bbf79c0e075cdc4529193e2d0b19564f4f057b4193b29e912", size = 26180204, upload-time = "2025-06-17T22:27:03.972Z" }, + { url = "https://files.pythonhosted.org/packages/96/d8/833edaf128fb5cdd53818d307bb93df75d943f32ecc5cb0d7b14981265e6/ray-2.47.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:322049c4546cf67e5efdad90c371c5508acbb193e5aaaf4038103c6c5ce1f578", size = 66091855, upload-time = "2025-06-17T22:27:08.946Z" }, + { url = "https://files.pythonhosted.org/packages/ce/fa/23640e58046c91fcc05edd04bd51dd3d6a44cd7b408faf5bb3528a24c13d/ray-2.47.1-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:e6d9c78e53ac89cabbc4056aecfec53c506c692e3132af9dae941d6180ef462f", size = 68512697, upload-time = "2025-06-17T22:27:15.109Z" }, + { url = "https://files.pythonhosted.org/packages/c5/32/6abf17053eb0ae720a2981a17e6b22797cc655782b603a707052b47f64eb/ray-2.47.1-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:cd4e7eb475487364b5209963b17cefedcb7fbd3a816fdb6def7ea533ebd72424", size = 67918881, upload-time = "2025-06-17T22:27:21.43Z" }, + { url = "https://files.pythonhosted.org/packages/5c/31/4545d03ed68eedf42b52e2a8705a584361e262640e145d6ab219ae33969c/ray-2.47.1-cp312-cp312-manylinux2014_x86_64.whl", hash = "sha256:3eaeaeec3bbe2ca6493e530c30473d84b8580a7ac3256bb9183d8c63def5a92f", size = 68888167, upload-time = "2025-06-17T22:27:27.978Z" }, + { url = "https://files.pythonhosted.org/packages/94/f6/ed91383e0057ad9e3d9c45212a0c7edc5a9d24a2e46da0d55c8233df868c/ray-2.47.1-cp312-cp312-win_amd64.whl", hash = "sha256:601f23ba89918b7b3ffebf967328f7bdb605deaf8c103aad7820dc2722fe450c", size = 26164455, upload-time = "2025-06-17T22:27:33.784Z" }, + { url = "https://files.pythonhosted.org/packages/7b/85/4dbf9a126f080a1114ec7738d9274759c256ff2a1c21662b09123311bbf0/ray-2.47.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:8cd625d469ce15391e5f1f44ddf8dd30b2380f917603fa0172661229acb0011f", size = 66082130, upload-time = "2025-06-17T22:27:38.631Z" }, + { url = "https://files.pythonhosted.org/packages/5a/8e/e893176ca3c02a310bb962b287436508f5b61fd179a7283f37610c0e0087/ray-2.47.1-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:e578929f58b3f0c59c7544a96d864e26278238b755d13cd19ae798070c848e57", size = 68507369, upload-time = "2025-06-17T22:27:44.945Z" }, + { url = "https://files.pythonhosted.org/packages/0c/97/f36e8a19885d930ab0dbcb0b7b6706e630412336b08fa3312bcaaad818b7/ray-2.47.1-cp313-cp313-manylinux2014_aarch64.whl", hash = "sha256:d6ed6d182e25d6f77179dc77bc97a749c81765b13cb671a46db3203029389663", size = 67875541, upload-time = "2025-06-17T22:27:51.191Z" }, + { url = "https://files.pythonhosted.org/packages/52/60/83430886d17526f4757e298b77268533afeedc74ed934f911d522f191ef2/ray-2.47.1-cp313-cp313-manylinux2014_x86_64.whl", hash = "sha256:252a471e8afb918b105cdbffb4cbebb0143baad75a06c8ffcde27ac317579ccb", size = 68848558, upload-time = "2025-06-17T22:27:57.97Z" }, + { url = "https://files.pythonhosted.org/packages/cf/84/055a43a9157869912b7455afbf83a7f01795def134655f82e681496378ed/ray-2.47.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c21720f283a3df360ddec002a592ddfbaf520faf4cb1b86562a7b7c196ad96a0", size = 66149938, upload-time = "2025-06-17T22:28:03.836Z" }, + { url = "https://files.pythonhosted.org/packages/98/5c/08e162bf1d83709d4bb3d7cffdd12763f6f62605c5c2ad7f3b071a66353e/ray-2.47.1-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:6c7b4abe112c4d698243e30023bcbffe2c2c9a68416b95a6a0d50f9ca5725545", size = 68568408, upload-time = "2025-06-17T22:28:09.485Z" }, + { url = "https://files.pythonhosted.org/packages/9b/0f/cec17486997fae42b00a6e82f007514635a556d32217a38204ed4a3a9530/ray-2.47.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:21f2689c1bbc688f9cd31a18bae2c9582027e91b508073849441167bb5077816", size = 67814246, upload-time = "2025-06-17T22:28:15.566Z" }, + { url = "https://files.pythonhosted.org/packages/b2/f1/734d5fd9835610c7d00ec5bbfb232a8bb4d560d0030d85f749c0eb0ee0f2/ray-2.47.1-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:106817f80087d21d24e63f6e56ea5ab7c387a25105eb65e6b783551f569534ea", size = 68763833, upload-time = "2025-06-17T22:28:22.924Z" }, + { url = "https://files.pythonhosted.org/packages/20/1d/64e6d6751b11668a634c7983dffc7a739487de4544110a6cacdf33c1da64/ray-2.47.1-cp39-cp39-win_amd64.whl", hash = "sha256:dee02ba9b8cd45c4eadc457183f6d80f1701b85f966d02cdacd5b11867cb7375", size = 26234907, upload-time = "2025-06-17T22:28:27.977Z" }, +] + +[package.optional-dependencies] +data = [ + { name = "fsspec" }, + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "pandas" }, + { name = "pyarrow" }, +] +serve = [ + { name = "aiohttp" }, + { name = "aiohttp-cors" }, + { name = "colorful" }, + { name = "fastapi" }, + { name = "grpcio" }, + { name = "opencensus" }, + { name = "opentelemetry-exporter-prometheus" }, + { name = "opentelemetry-proto" }, + { name = "opentelemetry-sdk" }, + { name = "prometheus-client" }, + { name = "py-spy" }, + { name = "pydantic" }, + { name = "requests" }, + { name = "smart-open" }, + { name = "starlette" }, + { name = "uvicorn", extra = ["standard"] }, + { name = "virtualenv" }, + { name = "watchfiles" }, +] +train = [ + { name = "fsspec" }, + { name = "pandas" }, + { name = "pyarrow" }, + { name = "pydantic" }, + { name = "requests" }, + { name = "tensorboardx" }, +] +tune = [ + { name = "fsspec" }, + { name = "pandas" }, + { name = "pyarrow" }, + { name = "requests" }, + { name = "tensorboardx" }, +] + +[[package]] +name = "referencing" +version = "0.36.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "rpds-py" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744, upload-time = "2025-01-25T08:48:16.138Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775, upload-time = "2025-01-25T08:48:14.241Z" }, +] + [[package]] name = "requests" version = "2.32.4" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "certifi", marker = "python_full_version >= '3.10'" }, - { name = "charset-normalizer", marker = "python_full_version >= '3.10'" }, - { name = "idna", marker = "python_full_version >= '3.10'" }, - { name = "urllib3", marker = "python_full_version >= '3.10'" }, + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, ] sdist = { url = "https://files.pythonhosted.org/packages/e1/0a/929373653770d8a0d7ea76c37de6e41f11eb07559b103b1c02cafb3f7cf8/requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422", size = 135258, upload-time = "2025-06-09T16:43:07.34Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/7c/e4/56027c4a6b4ae70ca9de302488c5ca95ad4a39e190093d6c1a8ace08341b/requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c", size = 64847, upload-time = "2025-06-09T16:43:05.728Z" }, ] +[[package]] +name = "rfc3339-validator" +version = "0.1.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/28/ea/a9387748e2d111c3c2b275ba970b735e04e15cdb1eb30693b6b5708c4dbd/rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b", size = 5513, upload-time = "2021-05-12T16:37:54.178Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa", size = 3490, upload-time = "2021-05-12T16:37:52.536Z" }, +] + +[[package]] +name = "rfc3986-validator" +version = "0.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/da/88/f270de456dd7d11dcc808abfa291ecdd3f45ff44e3b549ffa01b126464d0/rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055", size = 6760, upload-time = "2019-10-28T16:00:19.144Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/51/17023c0f8f1869d8806b979a2bffa3f861f26a3f1a66b094288323fba52f/rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9", size = 4242, upload-time = "2019-10-28T16:00:13.976Z" }, +] + +[[package]] +name = "rpds-py" +version = "0.26.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a5/aa/4456d84bbb54adc6a916fb10c9b374f78ac840337644e4a5eda229c81275/rpds_py-0.26.0.tar.gz", hash = "sha256:20dae58a859b0906f0685642e591056f1e787f3a8b39c8e8749a45dc7d26bdb0", size = 27385, upload-time = "2025-07-01T15:57:13.958Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b9/31/1459645f036c3dfeacef89e8e5825e430c77dde8489f3b99eaafcd4a60f5/rpds_py-0.26.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:4c70c70f9169692b36307a95f3d8c0a9fcd79f7b4a383aad5eaa0e9718b79b37", size = 372466, upload-time = "2025-07-01T15:53:40.55Z" }, + { url = "https://files.pythonhosted.org/packages/dd/ff/3d0727f35836cc8773d3eeb9a46c40cc405854e36a8d2e951f3a8391c976/rpds_py-0.26.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:777c62479d12395bfb932944e61e915741e364c843afc3196b694db3d669fcd0", size = 357825, upload-time = "2025-07-01T15:53:42.247Z" }, + { url = "https://files.pythonhosted.org/packages/bf/ce/badc5e06120a54099ae287fa96d82cbb650a5f85cf247ffe19c7b157fd1f/rpds_py-0.26.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec671691e72dff75817386aa02d81e708b5a7ec0dec6669ec05213ff6b77e1bd", size = 381530, upload-time = "2025-07-01T15:53:43.585Z" }, + { url = "https://files.pythonhosted.org/packages/1e/a5/fa5d96a66c95d06c62d7a30707b6a4cfec696ab8ae280ee7be14e961e118/rpds_py-0.26.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6a1cb5d6ce81379401bbb7f6dbe3d56de537fb8235979843f0d53bc2e9815a79", size = 396933, upload-time = "2025-07-01T15:53:45.78Z" }, + { url = "https://files.pythonhosted.org/packages/00/a7/7049d66750f18605c591a9db47d4a059e112a0c9ff8de8daf8fa0f446bba/rpds_py-0.26.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4f789e32fa1fb6a7bf890e0124e7b42d1e60d28ebff57fe806719abb75f0e9a3", size = 513973, upload-time = "2025-07-01T15:53:47.085Z" }, + { url = "https://files.pythonhosted.org/packages/0e/f1/528d02c7d6b29d29fac8fd784b354d3571cc2153f33f842599ef0cf20dd2/rpds_py-0.26.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c55b0a669976cf258afd718de3d9ad1b7d1fe0a91cd1ab36f38b03d4d4aeaaf", size = 402293, upload-time = "2025-07-01T15:53:48.117Z" }, + { url = "https://files.pythonhosted.org/packages/15/93/fde36cd6e4685df2cd08508f6c45a841e82f5bb98c8d5ecf05649522acb5/rpds_py-0.26.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c70d9ec912802ecfd6cd390dadb34a9578b04f9bcb8e863d0a7598ba5e9e7ccc", size = 383787, upload-time = "2025-07-01T15:53:50.874Z" }, + { url = "https://files.pythonhosted.org/packages/69/f2/5007553aaba1dcae5d663143683c3dfd03d9395289f495f0aebc93e90f24/rpds_py-0.26.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3021933c2cb7def39d927b9862292e0f4c75a13d7de70eb0ab06efed4c508c19", size = 416312, upload-time = "2025-07-01T15:53:52.046Z" }, + { url = "https://files.pythonhosted.org/packages/8f/a7/ce52c75c1e624a79e48a69e611f1c08844564e44c85db2b6f711d76d10ce/rpds_py-0.26.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8a7898b6ca3b7d6659e55cdac825a2e58c638cbf335cde41f4619e290dd0ad11", size = 558403, upload-time = "2025-07-01T15:53:53.192Z" }, + { url = "https://files.pythonhosted.org/packages/79/d5/e119db99341cc75b538bf4cb80504129fa22ce216672fb2c28e4a101f4d9/rpds_py-0.26.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:12bff2ad9447188377f1b2794772f91fe68bb4bbfa5a39d7941fbebdbf8c500f", size = 588323, upload-time = "2025-07-01T15:53:54.336Z" }, + { url = "https://files.pythonhosted.org/packages/93/94/d28272a0b02f5fe24c78c20e13bbcb95f03dc1451b68e7830ca040c60bd6/rpds_py-0.26.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:191aa858f7d4902e975d4cf2f2d9243816c91e9605070aeb09c0a800d187e323", size = 554541, upload-time = "2025-07-01T15:53:55.469Z" }, + { url = "https://files.pythonhosted.org/packages/93/e0/8c41166602f1b791da892d976057eba30685486d2e2c061ce234679c922b/rpds_py-0.26.0-cp310-cp310-win32.whl", hash = "sha256:b37a04d9f52cb76b6b78f35109b513f6519efb481d8ca4c321f6a3b9580b3f45", size = 220442, upload-time = "2025-07-01T15:53:56.524Z" }, + { url = "https://files.pythonhosted.org/packages/87/f0/509736bb752a7ab50fb0270c2a4134d671a7b3038030837e5536c3de0e0b/rpds_py-0.26.0-cp310-cp310-win_amd64.whl", hash = "sha256:38721d4c9edd3eb6670437d8d5e2070063f305bfa2d5aa4278c51cedcd508a84", size = 231314, upload-time = "2025-07-01T15:53:57.842Z" }, + { url = "https://files.pythonhosted.org/packages/09/4c/4ee8f7e512030ff79fda1df3243c88d70fc874634e2dbe5df13ba4210078/rpds_py-0.26.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:9e8cb77286025bdb21be2941d64ac6ca016130bfdcd228739e8ab137eb4406ed", size = 372610, upload-time = "2025-07-01T15:53:58.844Z" }, + { url = "https://files.pythonhosted.org/packages/fa/9d/3dc16be00f14fc1f03c71b1d67c8df98263ab2710a2fbd65a6193214a527/rpds_py-0.26.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5e09330b21d98adc8ccb2dbb9fc6cb434e8908d4c119aeaa772cb1caab5440a0", size = 358032, upload-time = "2025-07-01T15:53:59.985Z" }, + { url = "https://files.pythonhosted.org/packages/e7/5a/7f1bf8f045da2866324a08ae80af63e64e7bfaf83bd31f865a7b91a58601/rpds_py-0.26.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c9c1b92b774b2e68d11193dc39620d62fd8ab33f0a3c77ecdabe19c179cdbc1", size = 381525, upload-time = "2025-07-01T15:54:01.162Z" }, + { url = "https://files.pythonhosted.org/packages/45/8a/04479398c755a066ace10e3d158866beb600867cacae194c50ffa783abd0/rpds_py-0.26.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:824e6d3503ab990d7090768e4dfd9e840837bae057f212ff9f4f05ec6d1975e7", size = 397089, upload-time = "2025-07-01T15:54:02.319Z" }, + { url = "https://files.pythonhosted.org/packages/72/88/9203f47268db488a1b6d469d69c12201ede776bb728b9d9f29dbfd7df406/rpds_py-0.26.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ad7fd2258228bf288f2331f0a6148ad0186b2e3643055ed0db30990e59817a6", size = 514255, upload-time = "2025-07-01T15:54:03.38Z" }, + { url = "https://files.pythonhosted.org/packages/f5/b4/01ce5d1e853ddf81fbbd4311ab1eff0b3cf162d559288d10fd127e2588b5/rpds_py-0.26.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0dc23bbb3e06ec1ea72d515fb572c1fea59695aefbffb106501138762e1e915e", size = 402283, upload-time = "2025-07-01T15:54:04.923Z" }, + { url = "https://files.pythonhosted.org/packages/34/a2/004c99936997bfc644d590a9defd9e9c93f8286568f9c16cdaf3e14429a7/rpds_py-0.26.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d80bf832ac7b1920ee29a426cdca335f96a2b5caa839811803e999b41ba9030d", size = 383881, upload-time = "2025-07-01T15:54:06.482Z" }, + { url = "https://files.pythonhosted.org/packages/05/1b/ef5fba4a8f81ce04c427bfd96223f92f05e6cd72291ce9d7523db3b03a6c/rpds_py-0.26.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0919f38f5542c0a87e7b4afcafab6fd2c15386632d249e9a087498571250abe3", size = 415822, upload-time = "2025-07-01T15:54:07.605Z" }, + { url = "https://files.pythonhosted.org/packages/16/80/5c54195aec456b292f7bd8aa61741c8232964063fd8a75fdde9c1e982328/rpds_py-0.26.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d422b945683e409000c888e384546dbab9009bb92f7c0b456e217988cf316107", size = 558347, upload-time = "2025-07-01T15:54:08.591Z" }, + { url = "https://files.pythonhosted.org/packages/f2/1c/1845c1b1fd6d827187c43afe1841d91678d7241cbdb5420a4c6de180a538/rpds_py-0.26.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:77a7711fa562ba2da1aa757e11024ad6d93bad6ad7ede5afb9af144623e5f76a", size = 587956, upload-time = "2025-07-01T15:54:09.963Z" }, + { url = "https://files.pythonhosted.org/packages/2e/ff/9e979329dd131aa73a438c077252ddabd7df6d1a7ad7b9aacf6261f10faa/rpds_py-0.26.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:238e8c8610cb7c29460e37184f6799547f7e09e6a9bdbdab4e8edb90986a2318", size = 554363, upload-time = "2025-07-01T15:54:11.073Z" }, + { url = "https://files.pythonhosted.org/packages/00/8b/d78cfe034b71ffbe72873a136e71acc7a831a03e37771cfe59f33f6de8a2/rpds_py-0.26.0-cp311-cp311-win32.whl", hash = "sha256:893b022bfbdf26d7bedb083efeea624e8550ca6eb98bf7fea30211ce95b9201a", size = 220123, upload-time = "2025-07-01T15:54:12.382Z" }, + { url = "https://files.pythonhosted.org/packages/94/c1/3c8c94c7dd3905dbfde768381ce98778500a80db9924731d87ddcdb117e9/rpds_py-0.26.0-cp311-cp311-win_amd64.whl", hash = "sha256:87a5531de9f71aceb8af041d72fc4cab4943648d91875ed56d2e629bef6d4c03", size = 231732, upload-time = "2025-07-01T15:54:13.434Z" }, + { url = "https://files.pythonhosted.org/packages/67/93/e936fbed1b734eabf36ccb5d93c6a2e9246fbb13c1da011624b7286fae3e/rpds_py-0.26.0-cp311-cp311-win_arm64.whl", hash = "sha256:de2713f48c1ad57f89ac25b3cb7daed2156d8e822cf0eca9b96a6f990718cc41", size = 221917, upload-time = "2025-07-01T15:54:14.559Z" }, + { url = "https://files.pythonhosted.org/packages/ea/86/90eb87c6f87085868bd077c7a9938006eb1ce19ed4d06944a90d3560fce2/rpds_py-0.26.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:894514d47e012e794f1350f076c427d2347ebf82f9b958d554d12819849a369d", size = 363933, upload-time = "2025-07-01T15:54:15.734Z" }, + { url = "https://files.pythonhosted.org/packages/63/78/4469f24d34636242c924626082b9586f064ada0b5dbb1e9d096ee7a8e0c6/rpds_py-0.26.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc921b96fa95a097add244da36a1d9e4f3039160d1d30f1b35837bf108c21136", size = 350447, upload-time = "2025-07-01T15:54:16.922Z" }, + { url = "https://files.pythonhosted.org/packages/ad/91/c448ed45efdfdade82348d5e7995e15612754826ea640afc20915119734f/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e1157659470aa42a75448b6e943c895be8c70531c43cb78b9ba990778955582", size = 384711, upload-time = "2025-07-01T15:54:18.101Z" }, + { url = "https://files.pythonhosted.org/packages/ec/43/e5c86fef4be7f49828bdd4ecc8931f0287b1152c0bb0163049b3218740e7/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:521ccf56f45bb3a791182dc6b88ae5f8fa079dd705ee42138c76deb1238e554e", size = 400865, upload-time = "2025-07-01T15:54:19.295Z" }, + { url = "https://files.pythonhosted.org/packages/55/34/e00f726a4d44f22d5c5fe2e5ddd3ac3d7fd3f74a175607781fbdd06fe375/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9def736773fd56b305c0eef698be5192c77bfa30d55a0e5885f80126c4831a15", size = 517763, upload-time = "2025-07-01T15:54:20.858Z" }, + { url = "https://files.pythonhosted.org/packages/52/1c/52dc20c31b147af724b16104500fba13e60123ea0334beba7b40e33354b4/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cdad4ea3b4513b475e027be79e5a0ceac8ee1c113a1a11e5edc3c30c29f964d8", size = 406651, upload-time = "2025-07-01T15:54:22.508Z" }, + { url = "https://files.pythonhosted.org/packages/2e/77/87d7bfabfc4e821caa35481a2ff6ae0b73e6a391bb6b343db2c91c2b9844/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82b165b07f416bdccf5c84546a484cc8f15137ca38325403864bfdf2b5b72f6a", size = 386079, upload-time = "2025-07-01T15:54:23.987Z" }, + { url = "https://files.pythonhosted.org/packages/e3/d4/7f2200c2d3ee145b65b3cddc4310d51f7da6a26634f3ac87125fd789152a/rpds_py-0.26.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d04cab0a54b9dba4d278fe955a1390da3cf71f57feb78ddc7cb67cbe0bd30323", size = 421379, upload-time = "2025-07-01T15:54:25.073Z" }, + { url = "https://files.pythonhosted.org/packages/ae/13/9fdd428b9c820869924ab62236b8688b122baa22d23efdd1c566938a39ba/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:79061ba1a11b6a12743a2b0f72a46aa2758613d454aa6ba4f5a265cc48850158", size = 562033, upload-time = "2025-07-01T15:54:26.225Z" }, + { url = "https://files.pythonhosted.org/packages/f3/e1/b69686c3bcbe775abac3a4c1c30a164a2076d28df7926041f6c0eb5e8d28/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f405c93675d8d4c5ac87364bb38d06c988e11028a64b52a47158a355079661f3", size = 591639, upload-time = "2025-07-01T15:54:27.424Z" }, + { url = "https://files.pythonhosted.org/packages/5c/c9/1e3d8c8863c84a90197ac577bbc3d796a92502124c27092413426f670990/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dafd4c44b74aa4bed4b250f1aed165b8ef5de743bcca3b88fc9619b6087093d2", size = 557105, upload-time = "2025-07-01T15:54:29.93Z" }, + { url = "https://files.pythonhosted.org/packages/9f/c5/90c569649057622959f6dcc40f7b516539608a414dfd54b8d77e3b201ac0/rpds_py-0.26.0-cp312-cp312-win32.whl", hash = "sha256:3da5852aad63fa0c6f836f3359647870e21ea96cf433eb393ffa45263a170d44", size = 223272, upload-time = "2025-07-01T15:54:31.128Z" }, + { url = "https://files.pythonhosted.org/packages/7d/16/19f5d9f2a556cfed454eebe4d354c38d51c20f3db69e7b4ce6cff904905d/rpds_py-0.26.0-cp312-cp312-win_amd64.whl", hash = "sha256:cf47cfdabc2194a669dcf7a8dbba62e37a04c5041d2125fae0233b720da6f05c", size = 234995, upload-time = "2025-07-01T15:54:32.195Z" }, + { url = "https://files.pythonhosted.org/packages/83/f0/7935e40b529c0e752dfaa7880224771b51175fce08b41ab4a92eb2fbdc7f/rpds_py-0.26.0-cp312-cp312-win_arm64.whl", hash = "sha256:20ab1ae4fa534f73647aad289003f1104092890849e0266271351922ed5574f8", size = 223198, upload-time = "2025-07-01T15:54:33.271Z" }, + { url = "https://files.pythonhosted.org/packages/6a/67/bb62d0109493b12b1c6ab00de7a5566aa84c0e44217c2d94bee1bd370da9/rpds_py-0.26.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:696764a5be111b036256c0b18cd29783fab22154690fc698062fc1b0084b511d", size = 363917, upload-time = "2025-07-01T15:54:34.755Z" }, + { url = "https://files.pythonhosted.org/packages/4b/f3/34e6ae1925a5706c0f002a8d2d7f172373b855768149796af87bd65dcdb9/rpds_py-0.26.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1e6c15d2080a63aaed876e228efe4f814bc7889c63b1e112ad46fdc8b368b9e1", size = 350073, upload-time = "2025-07-01T15:54:36.292Z" }, + { url = "https://files.pythonhosted.org/packages/75/83/1953a9d4f4e4de7fd0533733e041c28135f3c21485faaef56a8aadbd96b5/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:390e3170babf42462739a93321e657444f0862c6d722a291accc46f9d21ed04e", size = 384214, upload-time = "2025-07-01T15:54:37.469Z" }, + { url = "https://files.pythonhosted.org/packages/48/0e/983ed1b792b3322ea1d065e67f4b230f3b96025f5ce3878cc40af09b7533/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7da84c2c74c0f5bc97d853d9e17bb83e2dcafcff0dc48286916001cc114379a1", size = 400113, upload-time = "2025-07-01T15:54:38.954Z" }, + { url = "https://files.pythonhosted.org/packages/69/7f/36c0925fff6f660a80be259c5b4f5e53a16851f946eb080351d057698528/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c5fe114a6dd480a510b6d3661d09d67d1622c4bf20660a474507aaee7eeeee9", size = 515189, upload-time = "2025-07-01T15:54:40.57Z" }, + { url = "https://files.pythonhosted.org/packages/13/45/cbf07fc03ba7a9b54662c9badb58294ecfb24f828b9732970bd1a431ed5c/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3100b3090269f3a7ea727b06a6080d4eb7439dca4c0e91a07c5d133bb1727ea7", size = 406998, upload-time = "2025-07-01T15:54:43.025Z" }, + { url = "https://files.pythonhosted.org/packages/6c/b0/8fa5e36e58657997873fd6a1cf621285ca822ca75b4b3434ead047daa307/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c03c9b0c64afd0320ae57de4c982801271c0c211aa2d37f3003ff5feb75bb04", size = 385903, upload-time = "2025-07-01T15:54:44.752Z" }, + { url = "https://files.pythonhosted.org/packages/4b/f7/b25437772f9f57d7a9fbd73ed86d0dcd76b4c7c6998348c070d90f23e315/rpds_py-0.26.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5963b72ccd199ade6ee493723d18a3f21ba7d5b957017607f815788cef50eaf1", size = 419785, upload-time = "2025-07-01T15:54:46.043Z" }, + { url = "https://files.pythonhosted.org/packages/a7/6b/63ffa55743dfcb4baf2e9e77a0b11f7f97ed96a54558fcb5717a4b2cd732/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9da4e873860ad5bab3291438525cae80169daecbfafe5657f7f5fb4d6b3f96b9", size = 561329, upload-time = "2025-07-01T15:54:47.64Z" }, + { url = "https://files.pythonhosted.org/packages/2f/07/1f4f5e2886c480a2346b1e6759c00278b8a69e697ae952d82ae2e6ee5db0/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:5afaddaa8e8c7f1f7b4c5c725c0070b6eed0228f705b90a1732a48e84350f4e9", size = 590875, upload-time = "2025-07-01T15:54:48.9Z" }, + { url = "https://files.pythonhosted.org/packages/cc/bc/e6639f1b91c3a55f8c41b47d73e6307051b6e246254a827ede730624c0f8/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4916dc96489616a6f9667e7526af8fa693c0fdb4f3acb0e5d9f4400eb06a47ba", size = 556636, upload-time = "2025-07-01T15:54:50.619Z" }, + { url = "https://files.pythonhosted.org/packages/05/4c/b3917c45566f9f9a209d38d9b54a1833f2bb1032a3e04c66f75726f28876/rpds_py-0.26.0-cp313-cp313-win32.whl", hash = "sha256:2a343f91b17097c546b93f7999976fd6c9d5900617aa848c81d794e062ab302b", size = 222663, upload-time = "2025-07-01T15:54:52.023Z" }, + { url = "https://files.pythonhosted.org/packages/e0/0b/0851bdd6025775aaa2365bb8de0697ee2558184c800bfef8d7aef5ccde58/rpds_py-0.26.0-cp313-cp313-win_amd64.whl", hash = "sha256:0a0b60701f2300c81b2ac88a5fb893ccfa408e1c4a555a77f908a2596eb875a5", size = 234428, upload-time = "2025-07-01T15:54:53.692Z" }, + { url = "https://files.pythonhosted.org/packages/ed/e8/a47c64ed53149c75fb581e14a237b7b7cd18217e969c30d474d335105622/rpds_py-0.26.0-cp313-cp313-win_arm64.whl", hash = "sha256:257d011919f133a4746958257f2c75238e3ff54255acd5e3e11f3ff41fd14256", size = 222571, upload-time = "2025-07-01T15:54:54.822Z" }, + { url = "https://files.pythonhosted.org/packages/89/bf/3d970ba2e2bcd17d2912cb42874107390f72873e38e79267224110de5e61/rpds_py-0.26.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:529c8156d7506fba5740e05da8795688f87119cce330c244519cf706a4a3d618", size = 360475, upload-time = "2025-07-01T15:54:56.228Z" }, + { url = "https://files.pythonhosted.org/packages/82/9f/283e7e2979fc4ec2d8ecee506d5a3675fce5ed9b4b7cb387ea5d37c2f18d/rpds_py-0.26.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f53ec51f9d24e9638a40cabb95078ade8c99251945dad8d57bf4aabe86ecee35", size = 346692, upload-time = "2025-07-01T15:54:58.561Z" }, + { url = "https://files.pythonhosted.org/packages/e3/03/7e50423c04d78daf391da3cc4330bdb97042fc192a58b186f2d5deb7befd/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab504c4d654e4a29558eaa5bb8cea5fdc1703ea60a8099ffd9c758472cf913f", size = 379415, upload-time = "2025-07-01T15:54:59.751Z" }, + { url = "https://files.pythonhosted.org/packages/57/00/d11ee60d4d3b16808432417951c63df803afb0e0fc672b5e8d07e9edaaae/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fd0641abca296bc1a00183fe44f7fced8807ed49d501f188faa642d0e4975b83", size = 391783, upload-time = "2025-07-01T15:55:00.898Z" }, + { url = "https://files.pythonhosted.org/packages/08/b3/1069c394d9c0d6d23c5b522e1f6546b65793a22950f6e0210adcc6f97c3e/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b312fecc1d017b5327afa81d4da1480f51c68810963a7336d92203dbb3d4f1", size = 512844, upload-time = "2025-07-01T15:55:02.201Z" }, + { url = "https://files.pythonhosted.org/packages/08/3b/c4fbf0926800ed70b2c245ceca99c49f066456755f5d6eb8863c2c51e6d0/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c741107203954f6fc34d3066d213d0a0c40f7bb5aafd698fb39888af277c70d8", size = 402105, upload-time = "2025-07-01T15:55:03.698Z" }, + { url = "https://files.pythonhosted.org/packages/1c/b0/db69b52ca07413e568dae9dc674627a22297abb144c4d6022c6d78f1e5cc/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc3e55a7db08dc9a6ed5fb7103019d2c1a38a349ac41901f9f66d7f95750942f", size = 383440, upload-time = "2025-07-01T15:55:05.398Z" }, + { url = "https://files.pythonhosted.org/packages/4c/e1/c65255ad5b63903e56b3bb3ff9dcc3f4f5c3badde5d08c741ee03903e951/rpds_py-0.26.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9e851920caab2dbcae311fd28f4313c6953993893eb5c1bb367ec69d9a39e7ed", size = 412759, upload-time = "2025-07-01T15:55:08.316Z" }, + { url = "https://files.pythonhosted.org/packages/e4/22/bb731077872377a93c6e93b8a9487d0406c70208985831034ccdeed39c8e/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:dfbf280da5f876d0b00c81f26bedce274e72a678c28845453885a9b3c22ae632", size = 556032, upload-time = "2025-07-01T15:55:09.52Z" }, + { url = "https://files.pythonhosted.org/packages/e0/8b/393322ce7bac5c4530fb96fc79cc9ea2f83e968ff5f6e873f905c493e1c4/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:1cc81d14ddfa53d7f3906694d35d54d9d3f850ef8e4e99ee68bc0d1e5fed9a9c", size = 585416, upload-time = "2025-07-01T15:55:11.216Z" }, + { url = "https://files.pythonhosted.org/packages/49/ae/769dc372211835bf759319a7aae70525c6eb523e3371842c65b7ef41c9c6/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dca83c498b4650a91efcf7b88d669b170256bf8017a5db6f3e06c2bf031f57e0", size = 554049, upload-time = "2025-07-01T15:55:13.004Z" }, + { url = "https://files.pythonhosted.org/packages/6b/f9/4c43f9cc203d6ba44ce3146246cdc38619d92c7bd7bad4946a3491bd5b70/rpds_py-0.26.0-cp313-cp313t-win32.whl", hash = "sha256:4d11382bcaf12f80b51d790dee295c56a159633a8e81e6323b16e55d81ae37e9", size = 218428, upload-time = "2025-07-01T15:55:14.486Z" }, + { url = "https://files.pythonhosted.org/packages/7e/8b/9286b7e822036a4a977f2f1e851c7345c20528dbd56b687bb67ed68a8ede/rpds_py-0.26.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ff110acded3c22c033e637dd8896e411c7d3a11289b2edf041f86663dbc791e9", size = 231524, upload-time = "2025-07-01T15:55:15.745Z" }, + { url = "https://files.pythonhosted.org/packages/55/07/029b7c45db910c74e182de626dfdae0ad489a949d84a468465cd0ca36355/rpds_py-0.26.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:da619979df60a940cd434084355c514c25cf8eb4cf9a508510682f6c851a4f7a", size = 364292, upload-time = "2025-07-01T15:55:17.001Z" }, + { url = "https://files.pythonhosted.org/packages/13/d1/9b3d3f986216b4d1f584878dca15ce4797aaf5d372d738974ba737bf68d6/rpds_py-0.26.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ea89a2458a1a75f87caabefe789c87539ea4e43b40f18cff526052e35bbb4fdf", size = 350334, upload-time = "2025-07-01T15:55:18.922Z" }, + { url = "https://files.pythonhosted.org/packages/18/98/16d5e7bc9ec715fa9668731d0cf97f6b032724e61696e2db3d47aeb89214/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feac1045b3327a45944e7dcbeb57530339f6b17baff154df51ef8b0da34c8c12", size = 384875, upload-time = "2025-07-01T15:55:20.399Z" }, + { url = "https://files.pythonhosted.org/packages/f9/13/aa5e2b1ec5ab0e86a5c464d53514c0467bec6ba2507027d35fc81818358e/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b818a592bd69bfe437ee8368603d4a2d928c34cffcdf77c2e761a759ffd17d20", size = 399993, upload-time = "2025-07-01T15:55:21.729Z" }, + { url = "https://files.pythonhosted.org/packages/17/03/8021810b0e97923abdbab6474c8b77c69bcb4b2c58330777df9ff69dc559/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a8b0dd8648709b62d9372fc00a57466f5fdeefed666afe3fea5a6c9539a0331", size = 516683, upload-time = "2025-07-01T15:55:22.918Z" }, + { url = "https://files.pythonhosted.org/packages/dc/b1/da8e61c87c2f3d836954239fdbbfb477bb7b54d74974d8f6fcb34342d166/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6d3498ad0df07d81112aa6ec6c95a7e7b1ae00929fb73e7ebee0f3faaeabad2f", size = 408825, upload-time = "2025-07-01T15:55:24.207Z" }, + { url = "https://files.pythonhosted.org/packages/38/bc/1fc173edaaa0e52c94b02a655db20697cb5fa954ad5a8e15a2c784c5cbdd/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24a4146ccb15be237fdef10f331c568e1b0e505f8c8c9ed5d67759dac58ac246", size = 387292, upload-time = "2025-07-01T15:55:25.554Z" }, + { url = "https://files.pythonhosted.org/packages/7c/eb/3a9bb4bd90867d21916f253caf4f0d0be7098671b6715ad1cead9fe7bab9/rpds_py-0.26.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a9a63785467b2d73635957d32a4f6e73d5e4df497a16a6392fa066b753e87387", size = 420435, upload-time = "2025-07-01T15:55:27.798Z" }, + { url = "https://files.pythonhosted.org/packages/cd/16/e066dcdb56f5632713445271a3f8d3d0b426d51ae9c0cca387799df58b02/rpds_py-0.26.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:de4ed93a8c91debfd5a047be327b7cc8b0cc6afe32a716bbbc4aedca9e2a83af", size = 562410, upload-time = "2025-07-01T15:55:29.057Z" }, + { url = "https://files.pythonhosted.org/packages/60/22/ddbdec7eb82a0dc2e455be44c97c71c232983e21349836ce9f272e8a3c29/rpds_py-0.26.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:caf51943715b12af827696ec395bfa68f090a4c1a1d2509eb4e2cb69abbbdb33", size = 590724, upload-time = "2025-07-01T15:55:30.719Z" }, + { url = "https://files.pythonhosted.org/packages/2c/b4/95744085e65b7187d83f2fcb0bef70716a1ea0a9e5d8f7f39a86e5d83424/rpds_py-0.26.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:4a59e5bc386de021f56337f757301b337d7ab58baa40174fb150accd480bc953", size = 558285, upload-time = "2025-07-01T15:55:31.981Z" }, + { url = "https://files.pythonhosted.org/packages/37/37/6309a75e464d1da2559446f9c811aa4d16343cebe3dbb73701e63f760caa/rpds_py-0.26.0-cp314-cp314-win32.whl", hash = "sha256:92c8db839367ef16a662478f0a2fe13e15f2227da3c1430a782ad0f6ee009ec9", size = 223459, upload-time = "2025-07-01T15:55:33.312Z" }, + { url = "https://files.pythonhosted.org/packages/d9/6f/8e9c11214c46098b1d1391b7e02b70bb689ab963db3b19540cba17315291/rpds_py-0.26.0-cp314-cp314-win_amd64.whl", hash = "sha256:b0afb8cdd034150d4d9f53926226ed27ad15b7f465e93d7468caaf5eafae0d37", size = 236083, upload-time = "2025-07-01T15:55:34.933Z" }, + { url = "https://files.pythonhosted.org/packages/47/af/9c4638994dd623d51c39892edd9d08e8be8220a4b7e874fa02c2d6e91955/rpds_py-0.26.0-cp314-cp314-win_arm64.whl", hash = "sha256:ca3f059f4ba485d90c8dc75cb5ca897e15325e4e609812ce57f896607c1c0867", size = 223291, upload-time = "2025-07-01T15:55:36.202Z" }, + { url = "https://files.pythonhosted.org/packages/4d/db/669a241144460474aab03e254326b32c42def83eb23458a10d163cb9b5ce/rpds_py-0.26.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:5afea17ab3a126006dc2f293b14ffc7ef3c85336cf451564a0515ed7648033da", size = 361445, upload-time = "2025-07-01T15:55:37.483Z" }, + { url = "https://files.pythonhosted.org/packages/3b/2d/133f61cc5807c6c2fd086a46df0eb8f63a23f5df8306ff9f6d0fd168fecc/rpds_py-0.26.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:69f0c0a3df7fd3a7eec50a00396104bb9a843ea6d45fcc31c2d5243446ffd7a7", size = 347206, upload-time = "2025-07-01T15:55:38.828Z" }, + { url = "https://files.pythonhosted.org/packages/05/bf/0e8fb4c05f70273469eecf82f6ccf37248558526a45321644826555db31b/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:801a71f70f9813e82d2513c9a96532551fce1e278ec0c64610992c49c04c2dad", size = 380330, upload-time = "2025-07-01T15:55:40.175Z" }, + { url = "https://files.pythonhosted.org/packages/d4/a8/060d24185d8b24d3923322f8d0ede16df4ade226a74e747b8c7c978e3dd3/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:df52098cde6d5e02fa75c1f6244f07971773adb4a26625edd5c18fee906fa84d", size = 392254, upload-time = "2025-07-01T15:55:42.015Z" }, + { url = "https://files.pythonhosted.org/packages/b9/7b/7c2e8a9ee3e6bc0bae26bf29f5219955ca2fbb761dca996a83f5d2f773fe/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9bc596b30f86dc6f0929499c9e574601679d0341a0108c25b9b358a042f51bca", size = 516094, upload-time = "2025-07-01T15:55:43.603Z" }, + { url = "https://files.pythonhosted.org/packages/75/d6/f61cafbed8ba1499b9af9f1777a2a199cd888f74a96133d8833ce5eaa9c5/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9dfbe56b299cf5875b68eb6f0ebaadc9cac520a1989cac0db0765abfb3709c19", size = 402889, upload-time = "2025-07-01T15:55:45.275Z" }, + { url = "https://files.pythonhosted.org/packages/92/19/c8ac0a8a8df2dd30cdec27f69298a5c13e9029500d6d76718130f5e5be10/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac64f4b2bdb4ea622175c9ab7cf09444e412e22c0e02e906978b3b488af5fde8", size = 384301, upload-time = "2025-07-01T15:55:47.098Z" }, + { url = "https://files.pythonhosted.org/packages/41/e1/6b1859898bc292a9ce5776016c7312b672da00e25cec74d7beced1027286/rpds_py-0.26.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:181ef9b6bbf9845a264f9aa45c31836e9f3c1f13be565d0d010e964c661d1e2b", size = 412891, upload-time = "2025-07-01T15:55:48.412Z" }, + { url = "https://files.pythonhosted.org/packages/ef/b9/ceb39af29913c07966a61367b3c08b4f71fad841e32c6b59a129d5974698/rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:49028aa684c144ea502a8e847d23aed5e4c2ef7cadfa7d5eaafcb40864844b7a", size = 557044, upload-time = "2025-07-01T15:55:49.816Z" }, + { url = "https://files.pythonhosted.org/packages/2f/27/35637b98380731a521f8ec4f3fd94e477964f04f6b2f8f7af8a2d889a4af/rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:e5d524d68a474a9688336045bbf76cb0def88549c1b2ad9dbfec1fb7cfbe9170", size = 585774, upload-time = "2025-07-01T15:55:51.192Z" }, + { url = "https://files.pythonhosted.org/packages/52/d9/3f0f105420fecd18551b678c9a6ce60bd23986098b252a56d35781b3e7e9/rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c1851f429b822831bd2edcbe0cfd12ee9ea77868f8d3daf267b189371671c80e", size = 554886, upload-time = "2025-07-01T15:55:52.541Z" }, + { url = "https://files.pythonhosted.org/packages/6b/c5/347c056a90dc8dd9bc240a08c527315008e1b5042e7a4cf4ac027be9d38a/rpds_py-0.26.0-cp314-cp314t-win32.whl", hash = "sha256:7bdb17009696214c3b66bb3590c6d62e14ac5935e53e929bcdbc5a495987a84f", size = 219027, upload-time = "2025-07-01T15:55:53.874Z" }, + { url = "https://files.pythonhosted.org/packages/75/04/5302cea1aa26d886d34cadbf2dc77d90d7737e576c0065f357b96dc7a1a6/rpds_py-0.26.0-cp314-cp314t-win_amd64.whl", hash = "sha256:f14440b9573a6f76b4ee4770c13f0b5921f71dde3b6fcb8dabbefd13b7fe05d7", size = 232821, upload-time = "2025-07-01T15:55:55.167Z" }, + { url = "https://files.pythonhosted.org/packages/fb/74/846ab687119c9d31fc21ab1346ef9233c31035ce53c0e2d43a130a0c5a5e/rpds_py-0.26.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:7a48af25d9b3c15684059d0d1fc0bc30e8eee5ca521030e2bffddcab5be40226", size = 372786, upload-time = "2025-07-01T15:55:56.512Z" }, + { url = "https://files.pythonhosted.org/packages/33/02/1f9e465cb1a6032d02b17cd117c7bd9fb6156bc5b40ffeb8053d8a2aa89c/rpds_py-0.26.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0c71c2f6bf36e61ee5c47b2b9b5d47e4d1baad6426bfed9eea3e858fc6ee8806", size = 358062, upload-time = "2025-07-01T15:55:58.084Z" }, + { url = "https://files.pythonhosted.org/packages/2a/49/81a38e3c67ac943907a9711882da3d87758c82cf26b2120b8128e45d80df/rpds_py-0.26.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d815d48b1804ed7867b539236b6dd62997850ca1c91cad187f2ddb1b7bbef19", size = 381576, upload-time = "2025-07-01T15:55:59.422Z" }, + { url = "https://files.pythonhosted.org/packages/14/37/418f030a76ef59f41e55f9dc916af8afafa3c9e3be38df744b2014851474/rpds_py-0.26.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:84cfbd4d4d2cdeb2be61a057a258d26b22877266dd905809e94172dff01a42ae", size = 397062, upload-time = "2025-07-01T15:56:00.868Z" }, + { url = "https://files.pythonhosted.org/packages/47/e3/9090817a8f4388bfe58e28136e9682fa7872a06daff2b8a2f8c78786a6e1/rpds_py-0.26.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fbaa70553ca116c77717f513e08815aec458e6b69a028d4028d403b3bc84ff37", size = 516277, upload-time = "2025-07-01T15:56:02.672Z" }, + { url = "https://files.pythonhosted.org/packages/3f/3a/1ec3dd93250fb8023f27d49b3f92e13f679141f2e59a61563f88922c2821/rpds_py-0.26.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:39bfea47c375f379d8e87ab4bb9eb2c836e4f2069f0f65731d85e55d74666387", size = 402604, upload-time = "2025-07-01T15:56:04.453Z" }, + { url = "https://files.pythonhosted.org/packages/f2/98/9133c06e42ec3ce637936263c50ac647f879b40a35cfad2f5d4ad418a439/rpds_py-0.26.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1533b7eb683fb5f38c1d68a3c78f5fdd8f1412fa6b9bf03b40f450785a0ab915", size = 383664, upload-time = "2025-07-01T15:56:05.823Z" }, + { url = "https://files.pythonhosted.org/packages/a9/10/a59ce64099cc77c81adb51f06909ac0159c19a3e2c9d9613bab171f4730f/rpds_py-0.26.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c5ab0ee51f560d179b057555b4f601b7df909ed31312d301b99f8b9fc6028284", size = 415944, upload-time = "2025-07-01T15:56:07.132Z" }, + { url = "https://files.pythonhosted.org/packages/c3/f1/ae0c60b3be9df9d5bef3527d83b8eb4b939e3619f6dd8382840e220a27df/rpds_py-0.26.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:e5162afc9e0d1f9cae3b577d9c29ddbab3505ab39012cb794d94a005825bde21", size = 558311, upload-time = "2025-07-01T15:56:08.484Z" }, + { url = "https://files.pythonhosted.org/packages/fb/2b/bf1498ebb3ddc5eff2fe3439da88963d1fc6e73d1277fa7ca0c72620d167/rpds_py-0.26.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:43f10b007033f359bc3fa9cd5e6c1e76723f056ffa9a6b5c117cc35720a80292", size = 587928, upload-time = "2025-07-01T15:56:09.946Z" }, + { url = "https://files.pythonhosted.org/packages/b6/eb/e6b949edf7af5629848c06d6e544a36c9f2781e2d8d03b906de61ada04d0/rpds_py-0.26.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e3730a48e5622e598293eee0762b09cff34dd3f271530f47b0894891281f051d", size = 554554, upload-time = "2025-07-01T15:56:11.775Z" }, + { url = "https://files.pythonhosted.org/packages/0a/1c/aa0298372ea898620d4706ad26b5b9e975550a4dd30bd042b0fe9ae72cce/rpds_py-0.26.0-cp39-cp39-win32.whl", hash = "sha256:4b1f66eb81eab2e0ff5775a3a312e5e2e16bf758f7b06be82fb0d04078c7ac51", size = 220273, upload-time = "2025-07-01T15:56:13.273Z" }, + { url = "https://files.pythonhosted.org/packages/b8/b0/8b3bef6ad0b35c172d1c87e2e5c2bb027d99e2a7bc7a16f744e66cf318f3/rpds_py-0.26.0-cp39-cp39-win_amd64.whl", hash = "sha256:519067e29f67b5c90e64fb1a6b6e9d2ec0ba28705c51956637bac23a2f4ddae1", size = 231627, upload-time = "2025-07-01T15:56:14.853Z" }, + { url = "https://files.pythonhosted.org/packages/ef/9a/1f033b0b31253d03d785b0cd905bc127e555ab496ea6b4c7c2e1f951f2fd/rpds_py-0.26.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3c0909c5234543ada2515c05dc08595b08d621ba919629e94427e8e03539c958", size = 373226, upload-time = "2025-07-01T15:56:16.578Z" }, + { url = "https://files.pythonhosted.org/packages/58/29/5f88023fd6aaaa8ca3c4a6357ebb23f6f07da6079093ccf27c99efce87db/rpds_py-0.26.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:c1fb0cda2abcc0ac62f64e2ea4b4e64c57dfd6b885e693095460c61bde7bb18e", size = 359230, upload-time = "2025-07-01T15:56:17.978Z" }, + { url = "https://files.pythonhosted.org/packages/6c/6c/13eaebd28b439da6964dde22712b52e53fe2824af0223b8e403249d10405/rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:84d142d2d6cf9b31c12aa4878d82ed3b2324226270b89b676ac62ccd7df52d08", size = 382363, upload-time = "2025-07-01T15:56:19.977Z" }, + { url = "https://files.pythonhosted.org/packages/55/fc/3bb9c486b06da19448646f96147796de23c5811ef77cbfc26f17307b6a9d/rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a547e21c5610b7e9093d870be50682a6a6cf180d6da0f42c47c306073bfdbbf6", size = 397146, upload-time = "2025-07-01T15:56:21.39Z" }, + { url = "https://files.pythonhosted.org/packages/15/18/9d1b79eb4d18e64ba8bba9e7dec6f9d6920b639f22f07ee9368ca35d4673/rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:35e9a70a0f335371275cdcd08bc5b8051ac494dd58bff3bbfb421038220dc871", size = 514804, upload-time = "2025-07-01T15:56:22.78Z" }, + { url = "https://files.pythonhosted.org/packages/4f/5a/175ad7191bdbcd28785204621b225ad70e85cdfd1e09cc414cb554633b21/rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0dfa6115c6def37905344d56fb54c03afc49104e2ca473d5dedec0f6606913b4", size = 402820, upload-time = "2025-07-01T15:56:24.584Z" }, + { url = "https://files.pythonhosted.org/packages/11/45/6a67ecf6d61c4d4aff4bc056e864eec4b2447787e11d1c2c9a0242c6e92a/rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:313cfcd6af1a55a286a3c9a25f64af6d0e46cf60bc5798f1db152d97a216ff6f", size = 384567, upload-time = "2025-07-01T15:56:26.064Z" }, + { url = "https://files.pythonhosted.org/packages/a1/ba/16589da828732b46454c61858950a78fe4c931ea4bf95f17432ffe64b241/rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f7bf2496fa563c046d05e4d232d7b7fd61346e2402052064b773e5c378bf6f73", size = 416520, upload-time = "2025-07-01T15:56:27.608Z" }, + { url = "https://files.pythonhosted.org/packages/81/4b/00092999fc7c0c266045e984d56b7314734cc400a6c6dc4d61a35f135a9d/rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:aa81873e2c8c5aa616ab8e017a481a96742fdf9313c40f14338ca7dbf50cb55f", size = 559362, upload-time = "2025-07-01T15:56:29.078Z" }, + { url = "https://files.pythonhosted.org/packages/96/0c/43737053cde1f93ac4945157f7be1428724ab943e2132a0d235a7e161d4e/rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:68ffcf982715f5b5b7686bdd349ff75d422e8f22551000c24b30eaa1b7f7ae84", size = 588113, upload-time = "2025-07-01T15:56:30.485Z" }, + { url = "https://files.pythonhosted.org/packages/46/46/8e38f6161466e60a997ed7e9951ae5de131dedc3cf778ad35994b4af823d/rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:6188de70e190847bb6db3dc3981cbadff87d27d6fe9b4f0e18726d55795cee9b", size = 555429, upload-time = "2025-07-01T15:56:31.956Z" }, + { url = "https://files.pythonhosted.org/packages/2c/ac/65da605e9f1dd643ebe615d5bbd11b6efa1d69644fc4bf623ea5ae385a82/rpds_py-0.26.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1c962145c7473723df9722ba4c058de12eb5ebedcb4e27e7d902920aa3831ee8", size = 231950, upload-time = "2025-07-01T15:56:33.337Z" }, + { url = "https://files.pythonhosted.org/packages/51/f2/b5c85b758a00c513bb0389f8fc8e61eb5423050c91c958cdd21843faa3e6/rpds_py-0.26.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f61a9326f80ca59214d1cceb0a09bb2ece5b2563d4e0cd37bfd5515c28510674", size = 373505, upload-time = "2025-07-01T15:56:34.716Z" }, + { url = "https://files.pythonhosted.org/packages/23/e0/25db45e391251118e915e541995bb5f5ac5691a3b98fb233020ba53afc9b/rpds_py-0.26.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:183f857a53bcf4b1b42ef0f57ca553ab56bdd170e49d8091e96c51c3d69ca696", size = 359468, upload-time = "2025-07-01T15:56:36.219Z" }, + { url = "https://files.pythonhosted.org/packages/0b/73/dd5ee6075bb6491be3a646b301dfd814f9486d924137a5098e61f0487e16/rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:941c1cfdf4799d623cf3aa1d326a6b4fdb7a5799ee2687f3516738216d2262fb", size = 382680, upload-time = "2025-07-01T15:56:37.644Z" }, + { url = "https://files.pythonhosted.org/packages/2f/10/84b522ff58763a5c443f5bcedc1820240e454ce4e620e88520f04589e2ea/rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72a8d9564a717ee291f554eeb4bfeafe2309d5ec0aa6c475170bdab0f9ee8e88", size = 397035, upload-time = "2025-07-01T15:56:39.241Z" }, + { url = "https://files.pythonhosted.org/packages/06/ea/8667604229a10a520fcbf78b30ccc278977dcc0627beb7ea2c96b3becef0/rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:511d15193cbe013619dd05414c35a7dedf2088fcee93c6bbb7c77859765bd4e8", size = 514922, upload-time = "2025-07-01T15:56:40.645Z" }, + { url = "https://files.pythonhosted.org/packages/24/e6/9ed5b625c0661c4882fc8cdf302bf8e96c73c40de99c31e0b95ed37d508c/rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aea1f9741b603a8d8fedb0ed5502c2bc0accbc51f43e2ad1337fe7259c2b77a5", size = 402822, upload-time = "2025-07-01T15:56:42.137Z" }, + { url = "https://files.pythonhosted.org/packages/8a/58/212c7b6fd51946047fb45d3733da27e2fa8f7384a13457c874186af691b1/rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4019a9d473c708cf2f16415688ef0b4639e07abaa569d72f74745bbeffafa2c7", size = 384336, upload-time = "2025-07-01T15:56:44.239Z" }, + { url = "https://files.pythonhosted.org/packages/aa/f5/a40ba78748ae8ebf4934d4b88e77b98497378bc2c24ba55ebe87a4e87057/rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:093d63b4b0f52d98ebae33b8c50900d3d67e0666094b1be7a12fffd7f65de74b", size = 416871, upload-time = "2025-07-01T15:56:46.284Z" }, + { url = "https://files.pythonhosted.org/packages/d5/a6/33b1fc0c9f7dcfcfc4a4353daa6308b3ece22496ceece348b3e7a7559a09/rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:2abe21d8ba64cded53a2a677e149ceb76dcf44284202d737178afe7ba540c1eb", size = 559439, upload-time = "2025-07-01T15:56:48.549Z" }, + { url = "https://files.pythonhosted.org/packages/71/2d/ceb3f9c12f8cfa56d34995097f6cd99da1325642c60d1b6680dd9df03ed8/rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:4feb7511c29f8442cbbc28149a92093d32e815a28aa2c50d333826ad2a20fdf0", size = 588380, upload-time = "2025-07-01T15:56:50.086Z" }, + { url = "https://files.pythonhosted.org/packages/c8/ed/9de62c2150ca8e2e5858acf3f4f4d0d180a38feef9fdab4078bea63d8dba/rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e99685fc95d386da368013e7fb4269dd39c30d99f812a8372d62f244f662709c", size = 555334, upload-time = "2025-07-01T15:56:51.703Z" }, + { url = "https://files.pythonhosted.org/packages/7e/78/a08e2f28e91c7e45db1150813c6d760a0fb114d5652b1373897073369e0d/rpds_py-0.26.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a90a13408a7a856b87be8a9f008fff53c5080eea4e4180f6c2e546e4a972fb5d", size = 373157, upload-time = "2025-07-01T15:56:53.291Z" }, + { url = "https://files.pythonhosted.org/packages/52/01/ddf51517497c8224fb0287e9842b820ed93748bc28ea74cab56a71e3dba4/rpds_py-0.26.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:3ac51b65e8dc76cf4949419c54c5528adb24fc721df722fd452e5fbc236f5c40", size = 358827, upload-time = "2025-07-01T15:56:54.963Z" }, + { url = "https://files.pythonhosted.org/packages/4d/f4/acaefa44b83705a4fcadd68054280127c07cdb236a44a1c08b7c5adad40b/rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59b2093224a18c6508d95cfdeba8db9cbfd6f3494e94793b58972933fcee4c6d", size = 382182, upload-time = "2025-07-01T15:56:56.474Z" }, + { url = "https://files.pythonhosted.org/packages/e9/a2/d72ac03d37d33f6ff4713ca4c704da0c3b1b3a959f0bf5eb738c0ad94ea2/rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4f01a5d6444a3258b00dc07b6ea4733e26f8072b788bef750baa37b370266137", size = 397123, upload-time = "2025-07-01T15:56:58.272Z" }, + { url = "https://files.pythonhosted.org/packages/74/58/c053e9d1da1d3724434dd7a5f506623913e6404d396ff3cf636a910c0789/rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b6e2c12160c72aeda9d1283e612f68804621f448145a210f1bf1d79151c47090", size = 516285, upload-time = "2025-07-01T15:57:00.283Z" }, + { url = "https://files.pythonhosted.org/packages/94/41/c81e97ee88b38b6d1847c75f2274dee8d67cb8d5ed7ca8c6b80442dead75/rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cb28c1f569f8d33b2b5dcd05d0e6ef7005d8639c54c2f0be824f05aedf715255", size = 402182, upload-time = "2025-07-01T15:57:02.587Z" }, + { url = "https://files.pythonhosted.org/packages/74/74/38a176b34ce5197b4223e295f36350dd90713db13cf3c3b533e8e8f7484e/rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1766b5724c3f779317d5321664a343c07773c8c5fd1532e4039e6cc7d1a815be", size = 384436, upload-time = "2025-07-01T15:57:04.125Z" }, + { url = "https://files.pythonhosted.org/packages/e4/21/f40b9a5709d7078372c87fd11335469dc4405245528b60007cd4078ed57a/rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b6d9e5a2ed9c4988c8f9b28b3bc0e3e5b1aaa10c28d210a594ff3a8c02742daf", size = 417039, upload-time = "2025-07-01T15:57:05.608Z" }, + { url = "https://files.pythonhosted.org/packages/02/ee/ed835925731c7e87306faa80a3a5e17b4d0f532083155e7e00fe1cd4e242/rpds_py-0.26.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:b5f7a446ddaf6ca0fad9a5535b56fbfc29998bf0e0b450d174bbec0d600e1d72", size = 559111, upload-time = "2025-07-01T15:57:07.371Z" }, + { url = "https://files.pythonhosted.org/packages/ce/88/d6e9e686b8ffb6139b82eb1c319ef32ae99aeb21f7e4bf45bba44a760d09/rpds_py-0.26.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:eed5ac260dd545fbc20da5f4f15e7efe36a55e0e7cf706e4ec005b491a9546a0", size = 588609, upload-time = "2025-07-01T15:57:09.319Z" }, + { url = "https://files.pythonhosted.org/packages/e5/96/09bcab08fa12a69672716b7f86c672ee7f79c5319f1890c5a79dcb8e0df2/rpds_py-0.26.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:582462833ba7cee52e968b0341b85e392ae53d44c0f9af6a5927c80e539a8b67", size = 555212, upload-time = "2025-07-01T15:57:10.905Z" }, + { url = "https://files.pythonhosted.org/packages/2c/07/c554b6ed0064b6e0350a622714298e930b3cf5a3d445a2e25c412268abcf/rpds_py-0.26.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:69a607203441e07e9a8a529cff1d5b73f6a160f22db1097211e6212a68567d11", size = 232048, upload-time = "2025-07-01T15:57:12.473Z" }, +] + +[[package]] +name = "rsa" +version = "4.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyasn1" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/da/8a/22b7beea3ee0d44b1916c0c1cb0ee3af23b700b6da9f04991899d0c555d4/rsa-4.9.1.tar.gz", hash = "sha256:e7bdbfdb5497da4c07dfd35530e1a902659db6ff241e39d9953cad06ebd0ae75", size = 29034, upload-time = "2025-04-16T09:51:18.218Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/64/8d/0133e4eb4beed9e425d9a98ed6e081a55d195481b7632472be1af08d2f6b/rsa-4.9.1-py3-none-any.whl", hash = "sha256:68635866661c6836b8d39430f97a996acbd61bfa49406748ea243539fe239762", size = 34696, upload-time = "2025-04-16T09:51:17.142Z" }, +] + [[package]] name = "scikit-learn" version = "1.6.1" @@ -2465,7 +4536,8 @@ source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", ] dependencies = [ { name = "joblib", marker = "python_full_version < '3.10'" }, @@ -2511,13 +4583,20 @@ name = "scikit-learn" version = "1.7.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.12' and sys_platform == 'darwin'", - "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -2564,7 +4643,8 @@ source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", ] dependencies = [ { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, @@ -2602,7 +4682,8 @@ name = "scipy" version = "1.15.3" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -2663,10 +4744,16 @@ name = "scipy" version = "1.16.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.12' and sys_platform == 'darwin'", - "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -2713,6 +4800,32 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/eb/c4/231cac7a8385394ebbbb4f1ca662203e9d8c332825ab4f36ffc3ead09a42/scipy-1.16.0-cp313-cp313t-win_amd64.whl", hash = "sha256:f56296fefca67ba605fd74d12f7bd23636267731a72cb3947963e76b8c0a25db", size = 38515076, upload-time = "2025-06-22T16:21:45.694Z" }, ] +[[package]] +name = "seaborn" +version = "0.13.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "matplotlib", version = "3.9.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "matplotlib", version = "3.10.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "pandas" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/86/59/a451d7420a77ab0b98f7affa3a1d78a313d2f7281a57afb1a34bae8ab412/seaborn-0.13.2.tar.gz", hash = "sha256:93e60a40988f4d65e9f4885df477e2fdaff6b73a9ded434c1ab356dd57eefff7", size = 1457696, upload-time = "2024-01-25T13:21:52.551Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/83/11/00d3c3dfc25ad54e731d91449895a79e4bf2384dc3ac01809010ba88f6d5/seaborn-0.13.2-py3-none-any.whl", hash = "sha256:636f8336facf092165e27924f223d3c62ca560b1f2bb5dff7ab7fad265361987", size = 294914, upload-time = "2024-01-25T13:21:49.598Z" }, +] + +[[package]] +name = "send2trash" +version = "1.8.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fd/3a/aec9b02217bb79b87bbc1a21bc6abc51e3d5dcf65c30487ac96c0908c722/Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf", size = 17394, upload-time = "2024-04-07T00:01:09.267Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/b0/4562db6223154aa4e22f939003cb92514c79f3d4dccca3444253fd17f902/Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9", size = 18072, upload-time = "2024-04-07T00:01:07.438Z" }, +] + [[package]] name = "setuptools" version = "80.9.0" @@ -2731,6 +4844,36 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, ] +[[package]] +name = "smart-open" +version = "7.3.0.post1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wrapt" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/18/2b/5e7234c68ed5bc872ad6ae77b8a421c2ed70dcb1190b44dc1abdeed5e347/smart_open-7.3.0.post1.tar.gz", hash = "sha256:ce6a3d9bc1afbf6234ad13c010b77f8cd36d24636811e3c52c3b5160f5214d1e", size = 51557, upload-time = "2025-07-03T10:06:31.271Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/08/5b/a2a3d4514c64818925f4e886d39981f1926eeb5288a4549c6b3c17ed66bb/smart_open-7.3.0.post1-py3-none-any.whl", hash = "sha256:c73661a2c24bf045c1e04e08fffc585b59af023fe783d57896f590489db66fb4", size = 61946, upload-time = "2025-07-03T10:06:29.599Z" }, +] + +[[package]] +name = "sniffio" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372, upload-time = "2024-02-25T23:20:04.057Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235, upload-time = "2024-02-25T23:20:01.196Z" }, +] + +[[package]] +name = "soupsieve" +version = "2.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3f/f4/4a80cd6ef364b2e8b65b15816a843c0980f7a5a2b4dc701fc574952aa19f/soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a", size = 103418, upload-time = "2025-04-20T18:50:08.518Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677, upload-time = "2025-04-20T18:50:07.196Z" }, +] + [[package]] name = "stack-data" version = "0.6.3" @@ -2745,6 +4888,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521, upload-time = "2023-09-30T13:58:03.53Z" }, ] +[[package]] +name = "starlette" +version = "0.47.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0a/69/662169fdb92fb96ec3eaee218cf540a629d629c86d7993d9651226a6789b/starlette-0.47.1.tar.gz", hash = "sha256:aef012dd2b6be325ffa16698f9dc533614fb1cebd593a906b90dc1025529a79b", size = 2583072, upload-time = "2025-06-21T04:03:17.337Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/82/95/38ef0cd7fa11eaba6a99b3c4f5ac948d8bc6ff199aabd327a29cc000840c/starlette-0.47.1-py3-none-any.whl", hash = "sha256:5e11c9f5c7c3f24959edbf2dffdc01bba860228acf657129467d8a7468591527", size = 72747, upload-time = "2025-06-21T04:03:15.705Z" }, +] + [[package]] name = "sympy" version = "1.14.0" @@ -2764,7 +4920,8 @@ source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", ] dependencies = [ { name = "blosc2", version = "2.5.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, @@ -2798,7 +4955,8 @@ name = "tables" version = "3.10.1" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -2838,10 +4996,16 @@ name = "tables" version = "3.10.2" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.12' and sys_platform == 'darwin'", - "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -2872,6 +5036,36 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/63/ca/eaa029a43d269bdda6985931d6cfd479e876cd8cf7c887d818bef05ef03b/tables-3.10.2-cp313-cp313-win_amd64.whl", hash = "sha256:5637fdcded5ba5426aa24e0e42d6f990926a4da7f193830df131dfcb7e842900", size = 6385562, upload-time = "2025-01-04T20:44:08.196Z" }, ] +[[package]] +name = "tensorboardx" +version = "2.6.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "packaging" }, + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2b/c5/d4cc6e293fb837aaf9f76dd7745476aeba8ef7ef5146c3b3f9ee375fe7a5/tensorboardx-2.6.4.tar.gz", hash = "sha256:b163ccb7798b31100b9f5fa4d6bc22dad362d7065c2f24b51e50731adde86828", size = 4769801, upload-time = "2025-06-10T22:37:07.419Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e0/1d/b5d63f1a6b824282b57f7b581810d20b7a28ca951f2d5b59f1eb0782c12b/tensorboardx-2.6.4-py3-none-any.whl", hash = "sha256:5970cf3a1f0a6a6e8b180ccf46f3fe832b8a25a70b86e5a237048a7c0beb18e2", size = 87201, upload-time = "2025-06-10T22:37:05.44Z" }, +] + +[[package]] +name = "terminado" +version = "0.18.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ptyprocess", marker = "os_name != 'nt'" }, + { name = "pywinpty", marker = "(python_full_version < '3.10' and os_name == 'nt' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (os_name == 'nt' and platform_machine != 'aarch64' and sys_platform == 'linux') or (os_name == 'nt' and sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "tornado" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8a/11/965c6fd8e5cc254f1fe142d547387da17a8ebfd75a3455f637c663fb38a0/terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e", size = 32701, upload-time = "2024-03-12T14:34:39.026Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/9e/2064975477fdc887e47ad42157e214526dcad8f317a948dee17e1659a62f/terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0", size = 14154, upload-time = "2024-03-12T14:34:36.569Z" }, +] + [[package]] name = "threadpoolctl" version = "3.6.0" @@ -2881,26 +5075,78 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl", hash = "sha256:43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb", size = 18638, upload-time = "2025-03-13T13:49:21.846Z" }, ] +[[package]] +name = "tinycss2" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "webencodings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7a/fd/7a5ee21fd08ff70d3d33a5781c255cbe779659bd03278feb98b19ee550f4/tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7", size = 87085, upload-time = "2024-10-24T14:58:29.895Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289", size = 26610, upload-time = "2024-10-24T14:58:28.029Z" }, +] + +[[package]] +name = "tomli" +version = "2.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff", size = 17175, upload-time = "2024-11-27T22:38:36.873Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/ca/75707e6efa2b37c77dadb324ae7d9571cb424e61ea73fad7c56c2d14527f/tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249", size = 131077, upload-time = "2024-11-27T22:37:54.956Z" }, + { url = "https://files.pythonhosted.org/packages/c7/16/51ae563a8615d472fdbffc43a3f3d46588c264ac4f024f63f01283becfbb/tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6", size = 123429, upload-time = "2024-11-27T22:37:56.698Z" }, + { url = "https://files.pythonhosted.org/packages/f1/dd/4f6cd1e7b160041db83c694abc78e100473c15d54620083dbd5aae7b990e/tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a", size = 226067, upload-time = "2024-11-27T22:37:57.63Z" }, + { url = "https://files.pythonhosted.org/packages/a9/6b/c54ede5dc70d648cc6361eaf429304b02f2871a345bbdd51e993d6cdf550/tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee", size = 236030, upload-time = "2024-11-27T22:37:59.344Z" }, + { url = "https://files.pythonhosted.org/packages/1f/47/999514fa49cfaf7a92c805a86c3c43f4215621855d151b61c602abb38091/tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e", size = 240898, upload-time = "2024-11-27T22:38:00.429Z" }, + { url = "https://files.pythonhosted.org/packages/73/41/0a01279a7ae09ee1573b423318e7934674ce06eb33f50936655071d81a24/tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4", size = 229894, upload-time = "2024-11-27T22:38:02.094Z" }, + { url = "https://files.pythonhosted.org/packages/55/18/5d8bc5b0a0362311ce4d18830a5d28943667599a60d20118074ea1b01bb7/tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106", size = 245319, upload-time = "2024-11-27T22:38:03.206Z" }, + { url = "https://files.pythonhosted.org/packages/92/a3/7ade0576d17f3cdf5ff44d61390d4b3febb8a9fc2b480c75c47ea048c646/tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8", size = 238273, upload-time = "2024-11-27T22:38:04.217Z" }, + { url = "https://files.pythonhosted.org/packages/72/6f/fa64ef058ac1446a1e51110c375339b3ec6be245af9d14c87c4a6412dd32/tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff", size = 98310, upload-time = "2024-11-27T22:38:05.908Z" }, + { url = "https://files.pythonhosted.org/packages/6a/1c/4a2dcde4a51b81be3530565e92eda625d94dafb46dbeb15069df4caffc34/tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b", size = 108309, upload-time = "2024-11-27T22:38:06.812Z" }, + { url = "https://files.pythonhosted.org/packages/52/e1/f8af4c2fcde17500422858155aeb0d7e93477a0d59a98e56cbfe75070fd0/tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea", size = 132762, upload-time = "2024-11-27T22:38:07.731Z" }, + { url = "https://files.pythonhosted.org/packages/03/b8/152c68bb84fc00396b83e7bbddd5ec0bd3dd409db4195e2a9b3e398ad2e3/tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8", size = 123453, upload-time = "2024-11-27T22:38:09.384Z" }, + { url = "https://files.pythonhosted.org/packages/c8/d6/fc9267af9166f79ac528ff7e8c55c8181ded34eb4b0e93daa767b8841573/tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192", size = 233486, upload-time = "2024-11-27T22:38:10.329Z" }, + { url = "https://files.pythonhosted.org/packages/5c/51/51c3f2884d7bab89af25f678447ea7d297b53b5a3b5730a7cb2ef6069f07/tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222", size = 242349, upload-time = "2024-11-27T22:38:11.443Z" }, + { url = "https://files.pythonhosted.org/packages/ab/df/bfa89627d13a5cc22402e441e8a931ef2108403db390ff3345c05253935e/tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77", size = 252159, upload-time = "2024-11-27T22:38:13.099Z" }, + { url = "https://files.pythonhosted.org/packages/9e/6e/fa2b916dced65763a5168c6ccb91066f7639bdc88b48adda990db10c8c0b/tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6", size = 237243, upload-time = "2024-11-27T22:38:14.766Z" }, + { url = "https://files.pythonhosted.org/packages/b4/04/885d3b1f650e1153cbb93a6a9782c58a972b94ea4483ae4ac5cedd5e4a09/tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd", size = 259645, upload-time = "2024-11-27T22:38:15.843Z" }, + { url = "https://files.pythonhosted.org/packages/9c/de/6b432d66e986e501586da298e28ebeefd3edc2c780f3ad73d22566034239/tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e", size = 244584, upload-time = "2024-11-27T22:38:17.645Z" }, + { url = "https://files.pythonhosted.org/packages/1c/9a/47c0449b98e6e7d1be6cbac02f93dd79003234ddc4aaab6ba07a9a7482e2/tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98", size = 98875, upload-time = "2024-11-27T22:38:19.159Z" }, + { url = "https://files.pythonhosted.org/packages/ef/60/9b9638f081c6f1261e2688bd487625cd1e660d0a85bd469e91d8db969734/tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4", size = 109418, upload-time = "2024-11-27T22:38:20.064Z" }, + { url = "https://files.pythonhosted.org/packages/04/90/2ee5f2e0362cb8a0b6499dc44f4d7d48f8fff06d28ba46e6f1eaa61a1388/tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7", size = 132708, upload-time = "2024-11-27T22:38:21.659Z" }, + { url = "https://files.pythonhosted.org/packages/c0/ec/46b4108816de6b385141f082ba99e315501ccd0a2ea23db4a100dd3990ea/tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c", size = 123582, upload-time = "2024-11-27T22:38:22.693Z" }, + { url = "https://files.pythonhosted.org/packages/a0/bd/b470466d0137b37b68d24556c38a0cc819e8febe392d5b199dcd7f578365/tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13", size = 232543, upload-time = "2024-11-27T22:38:24.367Z" }, + { url = "https://files.pythonhosted.org/packages/d9/e5/82e80ff3b751373f7cead2815bcbe2d51c895b3c990686741a8e56ec42ab/tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281", size = 241691, upload-time = "2024-11-27T22:38:26.081Z" }, + { url = "https://files.pythonhosted.org/packages/05/7e/2a110bc2713557d6a1bfb06af23dd01e7dde52b6ee7dadc589868f9abfac/tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272", size = 251170, upload-time = "2024-11-27T22:38:27.921Z" }, + { url = "https://files.pythonhosted.org/packages/64/7b/22d713946efe00e0adbcdfd6d1aa119ae03fd0b60ebed51ebb3fa9f5a2e5/tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140", size = 236530, upload-time = "2024-11-27T22:38:29.591Z" }, + { url = "https://files.pythonhosted.org/packages/38/31/3a76f67da4b0cf37b742ca76beaf819dca0ebef26d78fc794a576e08accf/tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2", size = 258666, upload-time = "2024-11-27T22:38:30.639Z" }, + { url = "https://files.pythonhosted.org/packages/07/10/5af1293da642aded87e8a988753945d0cf7e00a9452d3911dd3bb354c9e2/tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744", size = 243954, upload-time = "2024-11-27T22:38:31.702Z" }, + { url = "https://files.pythonhosted.org/packages/5b/b9/1ed31d167be802da0fc95020d04cd27b7d7065cc6fbefdd2f9186f60d7bd/tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec", size = 98724, upload-time = "2024-11-27T22:38:32.837Z" }, + { url = "https://files.pythonhosted.org/packages/c7/32/b0963458706accd9afcfeb867c0f9175a741bf7b19cd424230714d722198/tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69", size = 109383, upload-time = "2024-11-27T22:38:34.455Z" }, + { url = "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", size = 14257, upload-time = "2024-11-27T22:38:35.385Z" }, +] + [[package]] name = "torch" version = "2.7.1" source = { registry = "https://download.pytorch.org/whl/cpu" } resolution-markers = [ - "python_full_version >= '3.12' and sys_platform == 'darwin'", - "python_full_version == '3.11.*' and sys_platform == 'darwin'", - "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", ] dependencies = [ - { name = "filelock", marker = "(python_full_version >= '3.10' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, - { name = "fsspec", marker = "(python_full_version >= '3.10' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, - { name = "jinja2", marker = "(python_full_version >= '3.10' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, + { name = "filelock", marker = "(python_full_version >= '3.10' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, + { name = "fsspec", marker = "(python_full_version >= '3.10' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, + { name = "jinja2", marker = "(python_full_version >= '3.10' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, { name = "networkx", version = "3.2.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'" }, - { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*' and sys_platform == 'darwin'" }, - { name = "networkx", version = "3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, - { name = "setuptools", marker = "python_full_version >= '3.12' and sys_platform == 'darwin'" }, - { name = "sympy", marker = "(python_full_version >= '3.10' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, - { name = "typing-extensions", marker = "(python_full_version >= '3.10' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, + { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'" }, + { name = "networkx", version = "3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and platform_machine != 'x86_64' and sys_platform == 'darwin'" }, + { name = "setuptools", marker = "python_full_version >= '3.12' and platform_machine != 'x86_64' and sys_platform == 'darwin'" }, + { name = "sympy", marker = "(python_full_version >= '3.10' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, + { name = "typing-extensions", marker = "(python_full_version >= '3.10' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, ] wheels = [ { url = "https://download.pytorch.org/whl/cpu/torch-2.7.1-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:f8c3bee261b0c8e090f6347490dc6ee2aebfd661eb0f3f6aeae06d992d8ed56f" }, @@ -2916,25 +5162,32 @@ name = "torch" version = "2.7.1+cpu" source = { registry = "https://download.pytorch.org/whl/cpu" } resolution-markers = [ - "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", ] dependencies = [ - { name = "filelock", marker = "(python_full_version < '3.10' and platform_machine != 'arm64') or sys_platform != 'darwin'" }, - { name = "fsspec", marker = "(python_full_version < '3.10' and platform_machine != 'arm64') or sys_platform != 'darwin'" }, - { name = "jinja2", marker = "(python_full_version < '3.10' and platform_machine != 'arm64') or sys_platform != 'darwin'" }, + { name = "filelock", marker = "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64') or platform_machine == 'x86_64' or sys_platform != 'darwin'" }, + { name = "fsspec", marker = "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64') or platform_machine == 'x86_64' or sys_platform != 'darwin'" }, + { name = "jinja2", marker = "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64') or platform_machine == 'x86_64' or sys_platform != 'darwin'" }, { name = "networkx", version = "3.2.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.10' and platform_machine != 'arm64') or (python_full_version < '3.10' and sys_platform != 'darwin')" }, - { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*' and sys_platform != 'darwin'" }, - { name = "networkx", version = "3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform != 'darwin'" }, - { name = "setuptools", marker = "python_full_version >= '3.12' and sys_platform != 'darwin'" }, - { name = "sympy", marker = "(python_full_version < '3.10' and platform_machine != 'arm64') or sys_platform != 'darwin'" }, - { name = "typing-extensions", marker = "(python_full_version < '3.10' and platform_machine != 'arm64') or sys_platform != 'darwin'" }, + { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version == '3.10.*' and platform_machine == 'x86_64') or (python_full_version == '3.10.*' and sys_platform != 'darwin')" }, + { name = "networkx", version = "3.5", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and platform_machine == 'x86_64') or (python_full_version >= '3.11' and sys_platform != 'darwin')" }, + { name = "setuptools", marker = "(python_full_version >= '3.12' and platform_machine == 'x86_64') or (python_full_version >= '3.12' and sys_platform != 'darwin')" }, + { name = "sympy", marker = "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64') or platform_machine == 'x86_64' or sys_platform != 'darwin'" }, + { name = "typing-extensions", marker = "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64') or platform_machine == 'x86_64' or sys_platform != 'darwin'" }, ] wheels = [ { url = "https://download.pytorch.org/whl/cpu/torch-2.7.1%2Bcpu-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:c0df17cee97653d09a4e84488a33d21217f9b24208583c55cf28f0045aab0766" }, @@ -2957,6 +5210,136 @@ wheels = [ { url = "https://download.pytorch.org/whl/cpu/torch-2.7.1%2Bcpu-cp39-cp39-win_amd64.whl", hash = "sha256:d25435bdc4780d3cb512aad55142aca9584ae1fe8f8691cda6d32f19faf5d58e" }, ] +[[package]] +name = "torchaudio" +version = "2.7.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "torch", version = "2.7.1", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version >= '3.10' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, + { name = "torch", version = "2.7.1+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64') or platform_machine == 'x86_64' or sys_platform != 'darwin'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/71/bfc6d2b28ede6c4c5446901cfa4d98fa25b2606eb12e641baccec16fcde0/torchaudio-2.7.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4739af57d0eb94347d1c6a1b5668be78a7383afe826dde18a04883b9f9f263b1", size = 1842457, upload-time = "2025-06-04T17:44:12.073Z" }, + { url = "https://files.pythonhosted.org/packages/e6/8c/35eea5138ccd4abf38b163743d5ab4a8b25349bafa8bdf3d629e7f3036b9/torchaudio-2.7.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:c089dbfc14c5f47091b7bf3f6bf2bbac93b86619299d04d9c102f4ad53758990", size = 1680682, upload-time = "2025-06-04T17:44:11.056Z" }, + { url = "https://files.pythonhosted.org/packages/7d/dc/7569889c1fc95ebf18b0295bc4fdebafbbb89ba9e0018c7e9b0844bae011/torchaudio-2.7.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:6bb1e6db22fa2aad6b89b2a455ec5c6dc31df2635dbfafa213394f8b07b09516", size = 3498891, upload-time = "2025-06-04T17:43:52.161Z" }, + { url = "https://files.pythonhosted.org/packages/b3/e0/ff0ac4234798a0b6b1398fa878a2e7d22f1d06d4327feb312d9e77e079bd/torchaudio-2.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:2ba4df6e3ad35cb1e5bd162cf86b492526138f6476f5a06b10725b8880c618eb", size = 2483343, upload-time = "2025-06-04T17:43:57.779Z" }, + { url = "https://files.pythonhosted.org/packages/85/a2/52e6760d352584ae1ab139d97647bdc51d1eb7d480b688fe69c72616c956/torchaudio-2.7.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d5a62f88c629035913f506df03f710c48fc8bb9637191933f27c67088d5ca136", size = 1849254, upload-time = "2025-06-04T17:44:05.392Z" }, + { url = "https://files.pythonhosted.org/packages/df/e6/0f3835895f9d0b8900ca4a7196932b13b74156ad9ffb76e7aacfc5bb4157/torchaudio-2.7.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:53bc4ba12e7468be34a7ca2ee837ee5c8bd5755b25c12f665af9339cae37e265", size = 1686156, upload-time = "2025-06-04T17:44:09.39Z" }, + { url = "https://files.pythonhosted.org/packages/0d/c5/8ba8869ac5607bbd83ea864bda2c628f8b7b55a9200f8147687995e95a49/torchaudio-2.7.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:f8bd69354a397753b9dea9699d9e1251f8496fbbdf3028c7086a57a615bf33c3", size = 3508053, upload-time = "2025-06-04T17:43:49.398Z" }, + { url = "https://files.pythonhosted.org/packages/78/cc/11709b2cbf841eda124918523088d9aaa1509ae4400f346192037e6de6c6/torchaudio-2.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:0ae0678ad27355eebea5a9fdd9ae9bfec444f8405f9b6c60026905ba3665c43a", size = 2488974, upload-time = "2025-06-04T17:44:04.294Z" }, + { url = "https://files.pythonhosted.org/packages/0b/d1/eb8bc3b3502dddb1b789567b7b19668b1d32817266887b9f381494cfe463/torchaudio-2.7.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9306dcfc4586cebd7647a93fe9a448e791c4f83934da616b9433b75597a1f978", size = 1846897, upload-time = "2025-06-04T17:44:07.79Z" }, + { url = "https://files.pythonhosted.org/packages/62/7d/6c15f15d3edc5271abc808f70713644b50f0f7bfb85a09dba8b5735fbad3/torchaudio-2.7.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:d66bd76b226fdd4135c97650e1b7eb63fb7659b4ed0e3a778898e41dbba21b61", size = 1686680, upload-time = "2025-06-04T17:43:58.986Z" }, + { url = "https://files.pythonhosted.org/packages/48/65/0f46ba74cdc67ea9a8c37c8acfb5194d81639e481e85903c076bcd97188c/torchaudio-2.7.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:9cbcdaab77ad9a73711acffee58f4eebc8a0685289a938a3fa6f660af9489aee", size = 3506966, upload-time = "2025-06-04T17:44:06.537Z" }, + { url = "https://files.pythonhosted.org/packages/52/29/06f887baf22cbba85ae331b71b110b115bf11b3968f5914a50c17dde5ab7/torchaudio-2.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:9cfb8f6ace8e01e2b89de74eb893ba5ce936b88b415383605b0a4d974009dec7", size = 2484265, upload-time = "2025-06-04T17:44:00.277Z" }, + { url = "https://files.pythonhosted.org/packages/b6/ee/6e308868b9467e1b51da9d781cb73dd5aadca7c8b6256f88ce5d18a7fb77/torchaudio-2.7.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e5f0599a507f4683546878ed9667e1b32d7ca3c8a957e4c15c6b302378ef4dee", size = 1847208, upload-time = "2025-06-04T17:44:01.365Z" }, + { url = "https://files.pythonhosted.org/packages/3a/f9/ca0e0960526e6deaa476d168b877480a3fbae5d44668a54de963a9800097/torchaudio-2.7.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:271f717844e5c7f9e05c8328de817bf90f46d83281c791e94f54d4edea2f5817", size = 1686311, upload-time = "2025-06-04T17:44:02.785Z" }, + { url = "https://files.pythonhosted.org/packages/bb/ab/83f282ca5475ae34c58520a4a97b6d69438bc699d70d16432deb19791cda/torchaudio-2.7.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:1862b063d8d4e55cb4862bcbd63568545f549825a3c5605bd312224c3ebb1919", size = 3507174, upload-time = "2025-06-04T17:43:46.526Z" }, + { url = "https://files.pythonhosted.org/packages/12/91/dbd17a6eda4b0504d9b4f1f721a1654456e39f7178b8462344f942100865/torchaudio-2.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:edb4deaa6f95acd5522912ed643303d0b86d79a6f15914362f5a5d49baaf5d13", size = 2484503, upload-time = "2025-06-04T17:43:48.169Z" }, + { url = "https://files.pythonhosted.org/packages/73/5e/da52d2fa9f7cc89512b63dd8a88fb3e097a89815f440cc16159b216ec611/torchaudio-2.7.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:18560955b8beb2a8d39a6bfae20a442337afcefb3dfd4ee007ce82233a796799", size = 1929983, upload-time = "2025-06-04T17:43:56.659Z" }, + { url = "https://files.pythonhosted.org/packages/f7/16/9d03dc62613f276f9666eb0609164287df23986b67d20b53e78d21a3d8d8/torchaudio-2.7.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:1850475ef9101ea0b3593fe93ff6ee4e7a20598f6da6510761220b9fe56eb7fa", size = 1700436, upload-time = "2025-06-04T17:43:55.589Z" }, + { url = "https://files.pythonhosted.org/packages/83/45/57a437fe41b302fc79b4eb78fdb3e480ff42c66270e7505eedf0b000969c/torchaudio-2.7.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:98257fc14dd493ba5a3258fb6d61d27cd64a48ee79537c3964c4da26b9bf295f", size = 3521631, upload-time = "2025-06-04T17:43:50.628Z" }, + { url = "https://files.pythonhosted.org/packages/91/5e/9262a7e41e47bc87eb245c4fc485eb26ff41a05886b241c003440c9e0107/torchaudio-2.7.1-cp313-cp313t-win_amd64.whl", hash = "sha256:c802e0dcbf38669007327bb52f065573cc5cac106eaca987f6e1a32e6282263a", size = 2534956, upload-time = "2025-06-04T17:43:42.324Z" }, + { url = "https://files.pythonhosted.org/packages/3b/67/82ee183a867d5138b594a5c07be403d8efd0e010b3ea8a7e135058e965cd/torchaudio-2.7.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a07100fe2cf7af4fa69d8cb046a2b74046612621a1a548afa5af1c69e02eaf81", size = 1843193, upload-time = "2025-06-04T17:43:54.418Z" }, + { url = "https://files.pythonhosted.org/packages/a5/57/6f7c8b9c00970248498152549f004587db0a83e6caad0025c9723994ffc9/torchaudio-2.7.1-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:e8b2da11a7f7782b00b823c99e812eb00ee8b3455ad474f8fd42a0da0bc4f46a", size = 1681224, upload-time = "2025-06-04T17:43:53.36Z" }, + { url = "https://files.pythonhosted.org/packages/37/7b/0bf5da00d883b241bd4986e2d26dc1aabd16cc860c4c5d4bc9237e6350c3/torchaudio-2.7.1-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:9ce8aed225d5ce65705d30f6ef8e457d329fe6ea0b8729ad953ba99e87da264e", size = 3502377, upload-time = "2025-06-04T17:43:44.992Z" }, + { url = "https://files.pythonhosted.org/packages/26/99/00764e98c82d0b48a1e1fd059a0f10cf1bec741013a7e9c05077bd1fd481/torchaudio-2.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:30e21f043f5cc50f703c2cf0de75633e2c720227f9bf848ffc9b8b987871b3fc", size = 2477692, upload-time = "2025-06-04T17:43:43.799Z" }, +] + +[[package]] +name = "torchmetrics" +version = "1.7.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "lightning-utilities" }, + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "packaging" }, + { name = "torch", version = "2.7.1", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version >= '3.10' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, + { name = "torch", version = "2.7.1+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64') or platform_machine == 'x86_64' or sys_platform != 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/96/80/bcf680d3d7de7646707884ed7ce0859c83be33380239971a97255147184f/torchmetrics-1.7.4.tar.gz", hash = "sha256:506a1a5c7c304cd77ba323ca4b009e46b814fd2be9dcf0f4ccc2e5c0f5b4b0c1", size = 567802, upload-time = "2025-07-05T12:28:42.02Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/70/19/2d8db70030d3472dad5d49136770af949f5ed597df2c1a6a509dadc5d57d/torchmetrics-1.7.4-py3-none-any.whl", hash = "sha256:9298ad0e893b0cf2956bee95b0f7eecdc65205ab84ddb4f6762eff157c240518", size = 963504, upload-time = "2025-07-05T12:28:39.827Z" }, +] + +[[package]] +name = "torchvision" +version = "0.22.1" +source = { registry = "https://download.pytorch.org/whl/cpu" } +resolution-markers = [ + "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", + "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", +] +dependencies = [ + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux')" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux')" }, + { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version >= '3.11' and platform_machine == 'aarch64' and sys_platform == 'linux')" }, + { name = "pillow", marker = "(python_full_version >= '3.10' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin') or (platform_machine == 'aarch64' and sys_platform == 'linux')" }, + { name = "torch", version = "2.7.1", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version >= '3.10' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, + { name = "torch", version = "2.7.1+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "platform_machine == 'aarch64' and sys_platform == 'linux'" }, +] +wheels = [ + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3b47d8369ee568c067795c0da0b4078f39a9dfea6f3bc1f3ac87530dfda1dd56" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:990de4d657a41ed71680cd8be2e98ebcab55371f30993dc9bd2e676441f7180e" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4addf626e2b57fc22fd6d329cf1346d474497672e6af8383b7b5b636fba94a53" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:8b4a53a6067d63adba0c52f2b8dd2290db649d642021674ee43c0c922f0c6a69" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:153f1790e505bd6da123e21eee6e83e2e155df05c0fe7d56347303067d8543c5" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:964414eef19459d55a10e886e2fca50677550e243586d1678f65e3f6f6bac47a" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9c3ae3319624c43cc8127020f46c14aa878406781f0899bb6283ae474afeafbf" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:4a614a6a408d2ed74208d0ea6c28a2fbb68290e9a7df206c5fef3f0b6865d307" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:043d9e35ed69c2e586aff6eb9e2887382e7863707115668ac9d140da58f42cba" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:27142bcc8a984227a6dcf560985e83f52b82a7d3f5fe9051af586a2ccc46ef26" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8be941b4d35c0aba819be70fdbbbed8ceb60401ce6996b8cfaaba1300ce62263" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:154a2bdc37a16122c2024f2f77e65f5986020b40c013515c694b5d357fac99a1" }, +] + +[[package]] +name = "torchvision" +version = "0.22.1+cpu" +source = { registry = "https://download.pytorch.org/whl/cpu" } +resolution-markers = [ + "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin') or (python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and platform_machine == 'x86_64' and sys_platform == 'darwin') or (python_full_version >= '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.11' and sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "pillow", marker = "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (platform_machine == 'x86_64' and sys_platform == 'darwin') or (platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "torch", version = "2.7.1+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (platform_machine == 'x86_64' and sys_platform == 'darwin') or (platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" }, +] +wheels = [ + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1%2Bcpu-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:e31f1273a8dd9760906288036ac3c8f5fef25eed393da0491db150d7be78910d" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1%2Bcpu-cp310-cp310-win_amd64.whl", hash = "sha256:445e442b94c365f7fd96596347c8a5a7fcfcbfca17a23baa8c9dcc8cb00fceee" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1%2Bcpu-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:4e0cbc165a472605d0c13da68ae22e84b17a6b815d5e600834777823e1bcb658" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1%2Bcpu-cp311-cp311-win_amd64.whl", hash = "sha256:9482adee074f60a45fd69892f7488281aadfda7836948c94b0a9b0caf55d1d67" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1%2Bcpu-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b5fa7044bd82c6358e8229351c98070cf3a7bf4a6e89ea46352ae6c65745ef94" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1%2Bcpu-cp312-cp312-win_amd64.whl", hash = "sha256:433cb4dbced7291f17064cea08ac1e5aebd02ec190e1c207d117ad62a8961f2b" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1%2Bcpu-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:a93c21f18c33a819616b3dda7655aa4de40b219682c654175b6bbeb65ecc2e5f" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1%2Bcpu-cp313-cp313-win_amd64.whl", hash = "sha256:34c914ad4728b81848ac802c5fc5eeb8de8ff4058cc59c1463a74ce4f4fbf0d8" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1%2Bcpu-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:ab7ae82529887c704c1b5d1d5198f65dc777d04fc3858b374503a6deedb82b19" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1%2Bcpu-cp313-cp313t-win_amd64.whl", hash = "sha256:b2d1c4bdbfd8e6c779dc810a6171b56224f1332fc46986810d4081bed1633804" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1%2Bcpu-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:c852e61bc903351169017e2e96389f28f6cfb52ca7c3945acceb31e7fe1b21e6" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1%2Bcpu-cp39-cp39-win_amd64.whl", hash = "sha256:99788dd0d97ac8cdf25c74481e869e298626ffd8d6532defff6711f60516c88a" }, +] + [[package]] name = "tornado" version = "6.5.1" @@ -2997,6 +5380,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359, upload-time = "2024-04-19T11:11:46.763Z" }, ] +[[package]] +name = "types-python-dateutil" +version = "2.9.0.20250708" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c9/95/6bdde7607da2e1e99ec1c1672a759d42f26644bbacf939916e086db34870/types_python_dateutil-2.9.0.20250708.tar.gz", hash = "sha256:ccdbd75dab2d6c9696c350579f34cffe2c281e4c5f27a585b2a2438dd1d5c8ab", size = 15834, upload-time = "2025-07-08T03:14:03.382Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/72/52/43e70a8e57fefb172c22a21000b03ebcc15e47e97f5cb8495b9c2832efb4/types_python_dateutil-2.9.0.20250708-py3-none-any.whl", hash = "sha256:4d6d0cc1cc4d24a2dc3816024e502564094497b713f7befda4d5bc7a8e3fd21f", size = 17724, upload-time = "2025-07-08T03:14:02.593Z" }, +] + [[package]] name = "typing-extensions" version = "4.14.1" @@ -3006,6 +5398,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b5/00/d631e67a838026495268c2f6884f3711a15a9a2a96cd244fdaea53b823fb/typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76", size = 43906, upload-time = "2025-07-04T13:28:32.743Z" }, ] +[[package]] +name = "typing-inspection" +version = "0.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726, upload-time = "2025-05-21T18:55:23.885Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552, upload-time = "2025-05-21T18:55:22.152Z" }, +] + [[package]] name = "tzdata" version = "2025.2" @@ -3015,6 +5419,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839, upload-time = "2025-03-23T13:54:41.845Z" }, ] +[[package]] +name = "uri-template" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/31/c7/0336f2bd0bcbada6ccef7aaa25e443c118a704f828a0620c6fa0207c1b64/uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7", size = 21678, upload-time = "2023-06-21T01:49:05.374Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363", size = 11140, upload-time = "2023-06-21T01:49:03.467Z" }, +] + [[package]] name = "urllib3" version = "2.5.0" @@ -3024,6 +5437,200 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795, upload-time = "2025-06-18T14:07:40.39Z" }, ] +[[package]] +name = "uvicorn" +version = "0.35.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click", version = "8.1.8", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "click", version = "8.2.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "h11" }, + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5e/42/e0e305207bb88c6b8d3061399c6a961ffe5fbb7e2aa63c9234df7259e9cd/uvicorn-0.35.0.tar.gz", hash = "sha256:bc662f087f7cf2ce11a1d7fd70b90c9f98ef2e2831556dd078d131b96cc94a01", size = 78473, upload-time = "2025-06-28T16:15:46.058Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d2/e2/dc81b1bd1dcfe91735810265e9d26bc8ec5da45b4c0f6237e286819194c3/uvicorn-0.35.0-py3-none-any.whl", hash = "sha256:197535216b25ff9b785e29a0b79199f55222193d47f820816e7da751e9bc8d4a", size = 66406, upload-time = "2025-06-28T16:15:44.816Z" }, +] + +[package.optional-dependencies] +standard = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "httptools" }, + { name = "python-dotenv" }, + { name = "pyyaml" }, + { name = "uvloop", marker = "platform_python_implementation != 'PyPy' and sys_platform != 'cygwin' and sys_platform != 'win32'" }, + { name = "watchfiles" }, + { name = "websockets" }, +] + +[[package]] +name = "uvloop" +version = "0.21.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/af/c0/854216d09d33c543f12a44b393c402e89a920b1a0a7dc634c42de91b9cf6/uvloop-0.21.0.tar.gz", hash = "sha256:3bf12b0fda68447806a7ad847bfa591613177275d35b6724b1ee573faa3704e3", size = 2492741, upload-time = "2024-10-14T23:38:35.489Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3d/76/44a55515e8c9505aa1420aebacf4dd82552e5e15691654894e90d0bd051a/uvloop-0.21.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ec7e6b09a6fdded42403182ab6b832b71f4edaf7f37a9a0e371a01db5f0cb45f", size = 1442019, upload-time = "2024-10-14T23:37:20.068Z" }, + { url = "https://files.pythonhosted.org/packages/35/5a/62d5800358a78cc25c8a6c72ef8b10851bdb8cca22e14d9c74167b7f86da/uvloop-0.21.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:196274f2adb9689a289ad7d65700d37df0c0930fd8e4e743fa4834e850d7719d", size = 801898, upload-time = "2024-10-14T23:37:22.663Z" }, + { url = "https://files.pythonhosted.org/packages/f3/96/63695e0ebd7da6c741ccd4489b5947394435e198a1382349c17b1146bb97/uvloop-0.21.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f38b2e090258d051d68a5b14d1da7203a3c3677321cf32a95a6f4db4dd8b6f26", size = 3827735, upload-time = "2024-10-14T23:37:25.129Z" }, + { url = "https://files.pythonhosted.org/packages/61/e0/f0f8ec84979068ffae132c58c79af1de9cceeb664076beea86d941af1a30/uvloop-0.21.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87c43e0f13022b998eb9b973b5e97200c8b90823454d4bc06ab33829e09fb9bb", size = 3825126, upload-time = "2024-10-14T23:37:27.59Z" }, + { url = "https://files.pythonhosted.org/packages/bf/fe/5e94a977d058a54a19df95f12f7161ab6e323ad49f4dabc28822eb2df7ea/uvloop-0.21.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:10d66943def5fcb6e7b37310eb6b5639fd2ccbc38df1177262b0640c3ca68c1f", size = 3705789, upload-time = "2024-10-14T23:37:29.385Z" }, + { url = "https://files.pythonhosted.org/packages/26/dd/c7179618e46092a77e036650c1f056041a028a35c4d76945089fcfc38af8/uvloop-0.21.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:67dd654b8ca23aed0a8e99010b4c34aca62f4b7fce88f39d452ed7622c94845c", size = 3800523, upload-time = "2024-10-14T23:37:32.048Z" }, + { url = "https://files.pythonhosted.org/packages/57/a7/4cf0334105c1160dd6819f3297f8700fda7fc30ab4f61fbf3e725acbc7cc/uvloop-0.21.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c0f3fa6200b3108919f8bdabb9a7f87f20e7097ea3c543754cabc7d717d95cf8", size = 1447410, upload-time = "2024-10-14T23:37:33.612Z" }, + { url = "https://files.pythonhosted.org/packages/8c/7c/1517b0bbc2dbe784b563d6ab54f2ef88c890fdad77232c98ed490aa07132/uvloop-0.21.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0878c2640cf341b269b7e128b1a5fed890adc4455513ca710d77d5e93aa6d6a0", size = 805476, upload-time = "2024-10-14T23:37:36.11Z" }, + { url = "https://files.pythonhosted.org/packages/ee/ea/0bfae1aceb82a503f358d8d2fa126ca9dbdb2ba9c7866974faec1cb5875c/uvloop-0.21.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9fb766bb57b7388745d8bcc53a359b116b8a04c83a2288069809d2b3466c37e", size = 3960855, upload-time = "2024-10-14T23:37:37.683Z" }, + { url = "https://files.pythonhosted.org/packages/8a/ca/0864176a649838b838f36d44bf31c451597ab363b60dc9e09c9630619d41/uvloop-0.21.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a375441696e2eda1c43c44ccb66e04d61ceeffcd76e4929e527b7fa401b90fb", size = 3973185, upload-time = "2024-10-14T23:37:40.226Z" }, + { url = "https://files.pythonhosted.org/packages/30/bf/08ad29979a936d63787ba47a540de2132169f140d54aa25bc8c3df3e67f4/uvloop-0.21.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:baa0e6291d91649c6ba4ed4b2f982f9fa165b5bbd50a9e203c416a2797bab3c6", size = 3820256, upload-time = "2024-10-14T23:37:42.839Z" }, + { url = "https://files.pythonhosted.org/packages/da/e2/5cf6ef37e3daf2f06e651aae5ea108ad30df3cb269102678b61ebf1fdf42/uvloop-0.21.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4509360fcc4c3bd2c70d87573ad472de40c13387f5fda8cb58350a1d7475e58d", size = 3937323, upload-time = "2024-10-14T23:37:45.337Z" }, + { url = "https://files.pythonhosted.org/packages/8c/4c/03f93178830dc7ce8b4cdee1d36770d2f5ebb6f3d37d354e061eefc73545/uvloop-0.21.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:359ec2c888397b9e592a889c4d72ba3d6befba8b2bb01743f72fffbde663b59c", size = 1471284, upload-time = "2024-10-14T23:37:47.833Z" }, + { url = "https://files.pythonhosted.org/packages/43/3e/92c03f4d05e50f09251bd8b2b2b584a2a7f8fe600008bcc4523337abe676/uvloop-0.21.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f7089d2dc73179ce5ac255bdf37c236a9f914b264825fdaacaded6990a7fb4c2", size = 821349, upload-time = "2024-10-14T23:37:50.149Z" }, + { url = "https://files.pythonhosted.org/packages/a6/ef/a02ec5da49909dbbfb1fd205a9a1ac4e88ea92dcae885e7c961847cd51e2/uvloop-0.21.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:baa4dcdbd9ae0a372f2167a207cd98c9f9a1ea1188a8a526431eef2f8116cc8d", size = 4580089, upload-time = "2024-10-14T23:37:51.703Z" }, + { url = "https://files.pythonhosted.org/packages/06/a7/b4e6a19925c900be9f98bec0a75e6e8f79bb53bdeb891916609ab3958967/uvloop-0.21.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86975dca1c773a2c9864f4c52c5a55631038e387b47eaf56210f873887b6c8dc", size = 4693770, upload-time = "2024-10-14T23:37:54.122Z" }, + { url = "https://files.pythonhosted.org/packages/ce/0c/f07435a18a4b94ce6bd0677d8319cd3de61f3a9eeb1e5f8ab4e8b5edfcb3/uvloop-0.21.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:461d9ae6660fbbafedd07559c6a2e57cd553b34b0065b6550685f6653a98c1cb", size = 4451321, upload-time = "2024-10-14T23:37:55.766Z" }, + { url = "https://files.pythonhosted.org/packages/8f/eb/f7032be105877bcf924709c97b1bf3b90255b4ec251f9340cef912559f28/uvloop-0.21.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:183aef7c8730e54c9a3ee3227464daed66e37ba13040bb3f350bc2ddc040f22f", size = 4659022, upload-time = "2024-10-14T23:37:58.195Z" }, + { url = "https://files.pythonhosted.org/packages/3f/8d/2cbef610ca21539f0f36e2b34da49302029e7c9f09acef0b1c3b5839412b/uvloop-0.21.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:bfd55dfcc2a512316e65f16e503e9e450cab148ef11df4e4e679b5e8253a5281", size = 1468123, upload-time = "2024-10-14T23:38:00.688Z" }, + { url = "https://files.pythonhosted.org/packages/93/0d/b0038d5a469f94ed8f2b2fce2434a18396d8fbfb5da85a0a9781ebbdec14/uvloop-0.21.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:787ae31ad8a2856fc4e7c095341cccc7209bd657d0e71ad0dc2ea83c4a6fa8af", size = 819325, upload-time = "2024-10-14T23:38:02.309Z" }, + { url = "https://files.pythonhosted.org/packages/50/94/0a687f39e78c4c1e02e3272c6b2ccdb4e0085fda3b8352fecd0410ccf915/uvloop-0.21.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ee4d4ef48036ff6e5cfffb09dd192c7a5027153948d85b8da7ff705065bacc6", size = 4582806, upload-time = "2024-10-14T23:38:04.711Z" }, + { url = "https://files.pythonhosted.org/packages/d2/19/f5b78616566ea68edd42aacaf645adbf71fbd83fc52281fba555dc27e3f1/uvloop-0.21.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3df876acd7ec037a3d005b3ab85a7e4110422e4d9c1571d4fc89b0fc41b6816", size = 4701068, upload-time = "2024-10-14T23:38:06.385Z" }, + { url = "https://files.pythonhosted.org/packages/47/57/66f061ee118f413cd22a656de622925097170b9380b30091b78ea0c6ea75/uvloop-0.21.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bd53ecc9a0f3d87ab847503c2e1552b690362e005ab54e8a48ba97da3924c0dc", size = 4454428, upload-time = "2024-10-14T23:38:08.416Z" }, + { url = "https://files.pythonhosted.org/packages/63/9a/0962b05b308494e3202d3f794a6e85abe471fe3cafdbcf95c2e8c713aabd/uvloop-0.21.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a5c39f217ab3c663dc699c04cbd50c13813e31d917642d459fdcec07555cc553", size = 4660018, upload-time = "2024-10-14T23:38:10.888Z" }, + { url = "https://files.pythonhosted.org/packages/3c/a4/646a9d0edff7cde25fc1734695d3dfcee0501140dd0e723e4df3f0a50acb/uvloop-0.21.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c097078b8031190c934ed0ebfee8cc5f9ba9642e6eb88322b9958b649750f72b", size = 1439646, upload-time = "2024-10-14T23:38:24.656Z" }, + { url = "https://files.pythonhosted.org/packages/01/2e/e128c66106af9728f86ebfeeb52af27ecd3cb09336f3e2f3e06053707a15/uvloop-0.21.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:46923b0b5ee7fc0020bef24afe7836cb068f5050ca04caf6b487c513dc1a20b2", size = 800931, upload-time = "2024-10-14T23:38:26.087Z" }, + { url = "https://files.pythonhosted.org/packages/2d/1a/9fbc2b1543d0df11f7aed1632f64bdf5ecc4053cf98cdc9edb91a65494f9/uvloop-0.21.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:53e420a3afe22cdcf2a0f4846e377d16e718bc70103d7088a4f7623567ba5fb0", size = 3829660, upload-time = "2024-10-14T23:38:27.905Z" }, + { url = "https://files.pythonhosted.org/packages/b8/c0/392e235e4100ae3b95b5c6dac77f82b529d2760942b1e7e0981e5d8e895d/uvloop-0.21.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88cb67cdbc0e483da00af0b2c3cdad4b7c61ceb1ee0f33fe00e09c81e3a6cb75", size = 3827185, upload-time = "2024-10-14T23:38:29.458Z" }, + { url = "https://files.pythonhosted.org/packages/e1/24/a5da6aba58f99aed5255eca87d58d1760853e8302d390820cc29058408e3/uvloop-0.21.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:221f4f2a1f46032b403bf3be628011caf75428ee3cc204a22addf96f586b19fd", size = 3705833, upload-time = "2024-10-14T23:38:31.155Z" }, + { url = "https://files.pythonhosted.org/packages/1a/5c/6ba221bb60f1e6474474102e17e38612ec7a06dc320e22b687ab563d877f/uvloop-0.21.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2d1f581393673ce119355d56da84fe1dd9d2bb8b3d13ce792524e1607139feff", size = 3804696, upload-time = "2024-10-14T23:38:33.633Z" }, +] + +[[package]] +name = "virtualenv" +version = "20.31.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "distlib" }, + { name = "filelock" }, + { name = "platformdirs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/56/2c/444f465fb2c65f40c3a104fd0c495184c4f2336d65baf398e3c75d72ea94/virtualenv-20.31.2.tar.gz", hash = "sha256:e10c0a9d02835e592521be48b332b6caee6887f332c111aa79a09b9e79efc2af", size = 6076316, upload-time = "2025-05-08T17:58:23.811Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f3/40/b1c265d4b2b62b58576588510fc4d1fe60a86319c8de99fd8e9fec617d2c/virtualenv-20.31.2-py3-none-any.whl", hash = "sha256:36efd0d9650ee985f0cad72065001e66d49a6f24eb44d98980f630686243cf11", size = 6057982, upload-time = "2025-05-08T17:58:21.15Z" }, +] + +[[package]] +name = "watchfiles" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2a/9a/d451fcc97d029f5812e898fd30a53fd8c15c7bbd058fd75cfc6beb9bd761/watchfiles-1.1.0.tar.gz", hash = "sha256:693ed7ec72cbfcee399e92c895362b6e66d63dac6b91e2c11ae03d10d503e575", size = 94406, upload-time = "2025-06-15T19:06:59.42Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b9/dd/579d1dc57f0f895426a1211c4ef3b0cb37eb9e642bb04bdcd962b5df206a/watchfiles-1.1.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:27f30e14aa1c1e91cb653f03a63445739919aef84c8d2517997a83155e7a2fcc", size = 405757, upload-time = "2025-06-15T19:04:51.058Z" }, + { url = "https://files.pythonhosted.org/packages/1c/a0/7a0318cd874393344d48c34d53b3dd419466adf59a29ba5b51c88dd18b86/watchfiles-1.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3366f56c272232860ab45c77c3ca7b74ee819c8e1f6f35a7125556b198bbc6df", size = 397511, upload-time = "2025-06-15T19:04:52.79Z" }, + { url = "https://files.pythonhosted.org/packages/06/be/503514656d0555ec2195f60d810eca29b938772e9bfb112d5cd5ad6f6a9e/watchfiles-1.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8412eacef34cae2836d891836a7fff7b754d6bcac61f6c12ba5ca9bc7e427b68", size = 450739, upload-time = "2025-06-15T19:04:54.203Z" }, + { url = "https://files.pythonhosted.org/packages/4e/0d/a05dd9e5f136cdc29751816d0890d084ab99f8c17b86f25697288ca09bc7/watchfiles-1.1.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:df670918eb7dd719642e05979fc84704af913d563fd17ed636f7c4783003fdcc", size = 458106, upload-time = "2025-06-15T19:04:55.607Z" }, + { url = "https://files.pythonhosted.org/packages/f1/fa/9cd16e4dfdb831072b7ac39e7bea986e52128526251038eb481effe9f48e/watchfiles-1.1.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d7642b9bc4827b5518ebdb3b82698ada8c14c7661ddec5fe719f3e56ccd13c97", size = 484264, upload-time = "2025-06-15T19:04:57.009Z" }, + { url = "https://files.pythonhosted.org/packages/32/04/1da8a637c7e2b70e750a0308e9c8e662ada0cca46211fa9ef24a23937e0b/watchfiles-1.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:199207b2d3eeaeb80ef4411875a6243d9ad8bc35b07fc42daa6b801cc39cc41c", size = 597612, upload-time = "2025-06-15T19:04:58.409Z" }, + { url = "https://files.pythonhosted.org/packages/30/01/109f2762e968d3e58c95731a206e5d7d2a7abaed4299dd8a94597250153c/watchfiles-1.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a479466da6db5c1e8754caee6c262cd373e6e6c363172d74394f4bff3d84d7b5", size = 477242, upload-time = "2025-06-15T19:04:59.786Z" }, + { url = "https://files.pythonhosted.org/packages/b5/b8/46f58cf4969d3b7bc3ca35a98e739fa4085b0657a1540ccc29a1a0bc016f/watchfiles-1.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:935f9edd022ec13e447e5723a7d14456c8af254544cefbc533f6dd276c9aa0d9", size = 453148, upload-time = "2025-06-15T19:05:01.103Z" }, + { url = "https://files.pythonhosted.org/packages/a5/cd/8267594263b1770f1eb76914940d7b2d03ee55eca212302329608208e061/watchfiles-1.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8076a5769d6bdf5f673a19d51da05fc79e2bbf25e9fe755c47595785c06a8c72", size = 626574, upload-time = "2025-06-15T19:05:02.582Z" }, + { url = "https://files.pythonhosted.org/packages/a1/2f/7f2722e85899bed337cba715723e19185e288ef361360718973f891805be/watchfiles-1.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:86b1e28d4c37e89220e924305cd9f82866bb0ace666943a6e4196c5df4d58dcc", size = 624378, upload-time = "2025-06-15T19:05:03.719Z" }, + { url = "https://files.pythonhosted.org/packages/bf/20/64c88ec43d90a568234d021ab4b2a6f42a5230d772b987c3f9c00cc27b8b/watchfiles-1.1.0-cp310-cp310-win32.whl", hash = "sha256:d1caf40c1c657b27858f9774d5c0e232089bca9cb8ee17ce7478c6e9264d2587", size = 279829, upload-time = "2025-06-15T19:05:04.822Z" }, + { url = "https://files.pythonhosted.org/packages/39/5c/a9c1ed33de7af80935e4eac09570de679c6e21c07070aa99f74b4431f4d6/watchfiles-1.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:a89c75a5b9bc329131115a409d0acc16e8da8dfd5867ba59f1dd66ae7ea8fa82", size = 292192, upload-time = "2025-06-15T19:05:06.348Z" }, + { url = "https://files.pythonhosted.org/packages/8b/78/7401154b78ab484ccaaeef970dc2af0cb88b5ba8a1b415383da444cdd8d3/watchfiles-1.1.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:c9649dfc57cc1f9835551deb17689e8d44666315f2e82d337b9f07bd76ae3aa2", size = 405751, upload-time = "2025-06-15T19:05:07.679Z" }, + { url = "https://files.pythonhosted.org/packages/76/63/e6c3dbc1f78d001589b75e56a288c47723de28c580ad715eb116639152b5/watchfiles-1.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:406520216186b99374cdb58bc48e34bb74535adec160c8459894884c983a149c", size = 397313, upload-time = "2025-06-15T19:05:08.764Z" }, + { url = "https://files.pythonhosted.org/packages/6c/a2/8afa359ff52e99af1632f90cbf359da46184207e893a5f179301b0c8d6df/watchfiles-1.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb45350fd1dc75cd68d3d72c47f5b513cb0578da716df5fba02fff31c69d5f2d", size = 450792, upload-time = "2025-06-15T19:05:09.869Z" }, + { url = "https://files.pythonhosted.org/packages/1d/bf/7446b401667f5c64972a57a0233be1104157fc3abf72c4ef2666c1bd09b2/watchfiles-1.1.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:11ee4444250fcbeb47459a877e5e80ed994ce8e8d20283857fc128be1715dac7", size = 458196, upload-time = "2025-06-15T19:05:11.91Z" }, + { url = "https://files.pythonhosted.org/packages/58/2f/501ddbdfa3fa874ea5597c77eeea3d413579c29af26c1091b08d0c792280/watchfiles-1.1.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bda8136e6a80bdea23e5e74e09df0362744d24ffb8cd59c4a95a6ce3d142f79c", size = 484788, upload-time = "2025-06-15T19:05:13.373Z" }, + { url = "https://files.pythonhosted.org/packages/61/1e/9c18eb2eb5c953c96bc0e5f626f0e53cfef4bd19bd50d71d1a049c63a575/watchfiles-1.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b915daeb2d8c1f5cee4b970f2e2c988ce6514aace3c9296e58dd64dc9aa5d575", size = 597879, upload-time = "2025-06-15T19:05:14.725Z" }, + { url = "https://files.pythonhosted.org/packages/8b/6c/1467402e5185d89388b4486745af1e0325007af0017c3384cc786fff0542/watchfiles-1.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ed8fc66786de8d0376f9f913c09e963c66e90ced9aa11997f93bdb30f7c872a8", size = 477447, upload-time = "2025-06-15T19:05:15.775Z" }, + { url = "https://files.pythonhosted.org/packages/2b/a1/ec0a606bde4853d6c4a578f9391eeb3684a9aea736a8eb217e3e00aa89a1/watchfiles-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe4371595edf78c41ef8ac8df20df3943e13defd0efcb732b2e393b5a8a7a71f", size = 453145, upload-time = "2025-06-15T19:05:17.17Z" }, + { url = "https://files.pythonhosted.org/packages/90/b9/ef6f0c247a6a35d689fc970dc7f6734f9257451aefb30def5d100d6246a5/watchfiles-1.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b7c5f6fe273291f4d414d55b2c80d33c457b8a42677ad14b4b47ff025d0893e4", size = 626539, upload-time = "2025-06-15T19:05:18.557Z" }, + { url = "https://files.pythonhosted.org/packages/34/44/6ffda5537085106ff5aaa762b0d130ac6c75a08015dd1621376f708c94de/watchfiles-1.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7738027989881e70e3723c75921f1efa45225084228788fc59ea8c6d732eb30d", size = 624472, upload-time = "2025-06-15T19:05:19.588Z" }, + { url = "https://files.pythonhosted.org/packages/c3/e3/71170985c48028fa3f0a50946916a14055e741db11c2e7bc2f3b61f4d0e3/watchfiles-1.1.0-cp311-cp311-win32.whl", hash = "sha256:622d6b2c06be19f6e89b1d951485a232e3b59618def88dbeda575ed8f0d8dbf2", size = 279348, upload-time = "2025-06-15T19:05:20.856Z" }, + { url = "https://files.pythonhosted.org/packages/89/1b/3e39c68b68a7a171070f81fc2561d23ce8d6859659406842a0e4bebf3bba/watchfiles-1.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:48aa25e5992b61debc908a61ab4d3f216b64f44fdaa71eb082d8b2de846b7d12", size = 292607, upload-time = "2025-06-15T19:05:21.937Z" }, + { url = "https://files.pythonhosted.org/packages/61/9f/2973b7539f2bdb6ea86d2c87f70f615a71a1fc2dba2911795cea25968aea/watchfiles-1.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:00645eb79a3faa70d9cb15c8d4187bb72970b2470e938670240c7998dad9f13a", size = 285056, upload-time = "2025-06-15T19:05:23.12Z" }, + { url = "https://files.pythonhosted.org/packages/f6/b8/858957045a38a4079203a33aaa7d23ea9269ca7761c8a074af3524fbb240/watchfiles-1.1.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9dc001c3e10de4725c749d4c2f2bdc6ae24de5a88a339c4bce32300a31ede179", size = 402339, upload-time = "2025-06-15T19:05:24.516Z" }, + { url = "https://files.pythonhosted.org/packages/80/28/98b222cca751ba68e88521fabd79a4fab64005fc5976ea49b53fa205d1fa/watchfiles-1.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d9ba68ec283153dead62cbe81872d28e053745f12335d037de9cbd14bd1877f5", size = 394409, upload-time = "2025-06-15T19:05:25.469Z" }, + { url = "https://files.pythonhosted.org/packages/86/50/dee79968566c03190677c26f7f47960aff738d32087087bdf63a5473e7df/watchfiles-1.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:130fc497b8ee68dce163e4254d9b0356411d1490e868bd8790028bc46c5cc297", size = 450939, upload-time = "2025-06-15T19:05:26.494Z" }, + { url = "https://files.pythonhosted.org/packages/40/45/a7b56fb129700f3cfe2594a01aa38d033b92a33dddce86c8dfdfc1247b72/watchfiles-1.1.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:50a51a90610d0845a5931a780d8e51d7bd7f309ebc25132ba975aca016b576a0", size = 457270, upload-time = "2025-06-15T19:05:27.466Z" }, + { url = "https://files.pythonhosted.org/packages/b5/c8/fa5ef9476b1d02dc6b5e258f515fcaaecf559037edf8b6feffcbc097c4b8/watchfiles-1.1.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dc44678a72ac0910bac46fa6a0de6af9ba1355669b3dfaf1ce5f05ca7a74364e", size = 483370, upload-time = "2025-06-15T19:05:28.548Z" }, + { url = "https://files.pythonhosted.org/packages/98/68/42cfcdd6533ec94f0a7aab83f759ec11280f70b11bfba0b0f885e298f9bd/watchfiles-1.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a543492513a93b001975ae283a51f4b67973662a375a403ae82f420d2c7205ee", size = 598654, upload-time = "2025-06-15T19:05:29.997Z" }, + { url = "https://files.pythonhosted.org/packages/d3/74/b2a1544224118cc28df7e59008a929e711f9c68ce7d554e171b2dc531352/watchfiles-1.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ac164e20d17cc285f2b94dc31c384bc3aa3dd5e7490473b3db043dd70fbccfd", size = 478667, upload-time = "2025-06-15T19:05:31.172Z" }, + { url = "https://files.pythonhosted.org/packages/8c/77/e3362fe308358dc9f8588102481e599c83e1b91c2ae843780a7ded939a35/watchfiles-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7590d5a455321e53857892ab8879dce62d1f4b04748769f5adf2e707afb9d4f", size = 452213, upload-time = "2025-06-15T19:05:32.299Z" }, + { url = "https://files.pythonhosted.org/packages/6e/17/c8f1a36540c9a1558d4faf08e909399e8133599fa359bf52ec8fcee5be6f/watchfiles-1.1.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:37d3d3f7defb13f62ece99e9be912afe9dd8a0077b7c45ee5a57c74811d581a4", size = 626718, upload-time = "2025-06-15T19:05:33.415Z" }, + { url = "https://files.pythonhosted.org/packages/26/45/fb599be38b4bd38032643783d7496a26a6f9ae05dea1a42e58229a20ac13/watchfiles-1.1.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:7080c4bb3efd70a07b1cc2df99a7aa51d98685be56be6038c3169199d0a1c69f", size = 623098, upload-time = "2025-06-15T19:05:34.534Z" }, + { url = "https://files.pythonhosted.org/packages/a1/e7/fdf40e038475498e160cd167333c946e45d8563ae4dd65caf757e9ffe6b4/watchfiles-1.1.0-cp312-cp312-win32.whl", hash = "sha256:cbcf8630ef4afb05dc30107bfa17f16c0896bb30ee48fc24bf64c1f970f3b1fd", size = 279209, upload-time = "2025-06-15T19:05:35.577Z" }, + { url = "https://files.pythonhosted.org/packages/3f/d3/3ae9d5124ec75143bdf088d436cba39812122edc47709cd2caafeac3266f/watchfiles-1.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:cbd949bdd87567b0ad183d7676feb98136cde5bb9025403794a4c0db28ed3a47", size = 292786, upload-time = "2025-06-15T19:05:36.559Z" }, + { url = "https://files.pythonhosted.org/packages/26/2f/7dd4fc8b5f2b34b545e19629b4a018bfb1de23b3a496766a2c1165ca890d/watchfiles-1.1.0-cp312-cp312-win_arm64.whl", hash = "sha256:0a7d40b77f07be87c6faa93d0951a0fcd8cbca1ddff60a1b65d741bac6f3a9f6", size = 284343, upload-time = "2025-06-15T19:05:37.5Z" }, + { url = "https://files.pythonhosted.org/packages/d3/42/fae874df96595556a9089ade83be34a2e04f0f11eb53a8dbf8a8a5e562b4/watchfiles-1.1.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:5007f860c7f1f8df471e4e04aaa8c43673429047d63205d1630880f7637bca30", size = 402004, upload-time = "2025-06-15T19:05:38.499Z" }, + { url = "https://files.pythonhosted.org/packages/fa/55/a77e533e59c3003d9803c09c44c3651224067cbe7fb5d574ddbaa31e11ca/watchfiles-1.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:20ecc8abbd957046f1fe9562757903f5eaf57c3bce70929fda6c7711bb58074a", size = 393671, upload-time = "2025-06-15T19:05:39.52Z" }, + { url = "https://files.pythonhosted.org/packages/05/68/b0afb3f79c8e832e6571022611adbdc36e35a44e14f129ba09709aa4bb7a/watchfiles-1.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2f0498b7d2a3c072766dba3274fe22a183dbea1f99d188f1c6c72209a1063dc", size = 449772, upload-time = "2025-06-15T19:05:40.897Z" }, + { url = "https://files.pythonhosted.org/packages/ff/05/46dd1f6879bc40e1e74c6c39a1b9ab9e790bf1f5a2fe6c08b463d9a807f4/watchfiles-1.1.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:239736577e848678e13b201bba14e89718f5c2133dfd6b1f7846fa1b58a8532b", size = 456789, upload-time = "2025-06-15T19:05:42.045Z" }, + { url = "https://files.pythonhosted.org/packages/8b/ca/0eeb2c06227ca7f12e50a47a3679df0cd1ba487ea19cf844a905920f8e95/watchfiles-1.1.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eff4b8d89f444f7e49136dc695599a591ff769300734446c0a86cba2eb2f9895", size = 482551, upload-time = "2025-06-15T19:05:43.781Z" }, + { url = "https://files.pythonhosted.org/packages/31/47/2cecbd8694095647406645f822781008cc524320466ea393f55fe70eed3b/watchfiles-1.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:12b0a02a91762c08f7264e2e79542f76870c3040bbc847fb67410ab81474932a", size = 597420, upload-time = "2025-06-15T19:05:45.244Z" }, + { url = "https://files.pythonhosted.org/packages/d9/7e/82abc4240e0806846548559d70f0b1a6dfdca75c1b4f9fa62b504ae9b083/watchfiles-1.1.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:29e7bc2eee15cbb339c68445959108803dc14ee0c7b4eea556400131a8de462b", size = 477950, upload-time = "2025-06-15T19:05:46.332Z" }, + { url = "https://files.pythonhosted.org/packages/25/0d/4d564798a49bf5482a4fa9416dea6b6c0733a3b5700cb8a5a503c4b15853/watchfiles-1.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d9481174d3ed982e269c090f780122fb59cee6c3796f74efe74e70f7780ed94c", size = 451706, upload-time = "2025-06-15T19:05:47.459Z" }, + { url = "https://files.pythonhosted.org/packages/81/b5/5516cf46b033192d544102ea07c65b6f770f10ed1d0a6d388f5d3874f6e4/watchfiles-1.1.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:80f811146831c8c86ab17b640801c25dc0a88c630e855e2bef3568f30434d52b", size = 625814, upload-time = "2025-06-15T19:05:48.654Z" }, + { url = "https://files.pythonhosted.org/packages/0c/dd/7c1331f902f30669ac3e754680b6edb9a0dd06dea5438e61128111fadd2c/watchfiles-1.1.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:60022527e71d1d1fda67a33150ee42869042bce3d0fcc9cc49be009a9cded3fb", size = 622820, upload-time = "2025-06-15T19:05:50.088Z" }, + { url = "https://files.pythonhosted.org/packages/1b/14/36d7a8e27cd128d7b1009e7715a7c02f6c131be9d4ce1e5c3b73d0e342d8/watchfiles-1.1.0-cp313-cp313-win32.whl", hash = "sha256:32d6d4e583593cb8576e129879ea0991660b935177c0f93c6681359b3654bfa9", size = 279194, upload-time = "2025-06-15T19:05:51.186Z" }, + { url = "https://files.pythonhosted.org/packages/25/41/2dd88054b849aa546dbeef5696019c58f8e0774f4d1c42123273304cdb2e/watchfiles-1.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:f21af781a4a6fbad54f03c598ab620e3a77032c5878f3d780448421a6e1818c7", size = 292349, upload-time = "2025-06-15T19:05:52.201Z" }, + { url = "https://files.pythonhosted.org/packages/c8/cf/421d659de88285eb13941cf11a81f875c176f76a6d99342599be88e08d03/watchfiles-1.1.0-cp313-cp313-win_arm64.whl", hash = "sha256:5366164391873ed76bfdf618818c82084c9db7fac82b64a20c44d335eec9ced5", size = 283836, upload-time = "2025-06-15T19:05:53.265Z" }, + { url = "https://files.pythonhosted.org/packages/45/10/6faf6858d527e3599cc50ec9fcae73590fbddc1420bd4fdccfebffeedbc6/watchfiles-1.1.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:17ab167cca6339c2b830b744eaf10803d2a5b6683be4d79d8475d88b4a8a4be1", size = 400343, upload-time = "2025-06-15T19:05:54.252Z" }, + { url = "https://files.pythonhosted.org/packages/03/20/5cb7d3966f5e8c718006d0e97dfe379a82f16fecd3caa7810f634412047a/watchfiles-1.1.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:328dbc9bff7205c215a7807da7c18dce37da7da718e798356212d22696404339", size = 392916, upload-time = "2025-06-15T19:05:55.264Z" }, + { url = "https://files.pythonhosted.org/packages/8c/07/d8f1176328fa9e9581b6f120b017e286d2a2d22ae3f554efd9515c8e1b49/watchfiles-1.1.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7208ab6e009c627b7557ce55c465c98967e8caa8b11833531fdf95799372633", size = 449582, upload-time = "2025-06-15T19:05:56.317Z" }, + { url = "https://files.pythonhosted.org/packages/66/e8/80a14a453cf6038e81d072a86c05276692a1826471fef91df7537dba8b46/watchfiles-1.1.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a8f6f72974a19efead54195bc9bed4d850fc047bb7aa971268fd9a8387c89011", size = 456752, upload-time = "2025-06-15T19:05:57.359Z" }, + { url = "https://files.pythonhosted.org/packages/5a/25/0853b3fe0e3c2f5af9ea60eb2e781eade939760239a72c2d38fc4cc335f6/watchfiles-1.1.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d181ef50923c29cf0450c3cd47e2f0557b62218c50b2ab8ce2ecaa02bd97e670", size = 481436, upload-time = "2025-06-15T19:05:58.447Z" }, + { url = "https://files.pythonhosted.org/packages/fe/9e/4af0056c258b861fbb29dcb36258de1e2b857be4a9509e6298abcf31e5c9/watchfiles-1.1.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:adb4167043d3a78280d5d05ce0ba22055c266cf8655ce942f2fb881262ff3cdf", size = 596016, upload-time = "2025-06-15T19:05:59.59Z" }, + { url = "https://files.pythonhosted.org/packages/c5/fa/95d604b58aa375e781daf350897aaaa089cff59d84147e9ccff2447c8294/watchfiles-1.1.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8c5701dc474b041e2934a26d31d39f90fac8a3dee2322b39f7729867f932b1d4", size = 476727, upload-time = "2025-06-15T19:06:01.086Z" }, + { url = "https://files.pythonhosted.org/packages/65/95/fe479b2664f19be4cf5ceeb21be05afd491d95f142e72d26a42f41b7c4f8/watchfiles-1.1.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b067915e3c3936966a8607f6fe5487df0c9c4afb85226613b520890049deea20", size = 451864, upload-time = "2025-06-15T19:06:02.144Z" }, + { url = "https://files.pythonhosted.org/packages/d3/8a/3c4af14b93a15ce55901cd7a92e1a4701910f1768c78fb30f61d2b79785b/watchfiles-1.1.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:9c733cda03b6d636b4219625a4acb5c6ffb10803338e437fb614fef9516825ef", size = 625626, upload-time = "2025-06-15T19:06:03.578Z" }, + { url = "https://files.pythonhosted.org/packages/da/f5/cf6aa047d4d9e128f4b7cde615236a915673775ef171ff85971d698f3c2c/watchfiles-1.1.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:cc08ef8b90d78bfac66f0def80240b0197008e4852c9f285907377b2947ffdcb", size = 622744, upload-time = "2025-06-15T19:06:05.066Z" }, + { url = "https://files.pythonhosted.org/packages/2c/00/70f75c47f05dea6fd30df90f047765f6fc2d6eb8b5a3921379b0b04defa2/watchfiles-1.1.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:9974d2f7dc561cce3bb88dfa8eb309dab64c729de85fba32e98d75cf24b66297", size = 402114, upload-time = "2025-06-15T19:06:06.186Z" }, + { url = "https://files.pythonhosted.org/packages/53/03/acd69c48db4a1ed1de26b349d94077cca2238ff98fd64393f3e97484cae6/watchfiles-1.1.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c68e9f1fcb4d43798ad8814c4c1b61547b014b667216cb754e606bfade587018", size = 393879, upload-time = "2025-06-15T19:06:07.369Z" }, + { url = "https://files.pythonhosted.org/packages/2f/c8/a9a2a6f9c8baa4eceae5887fecd421e1b7ce86802bcfc8b6a942e2add834/watchfiles-1.1.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:95ab1594377effac17110e1352989bdd7bdfca9ff0e5eeccd8c69c5389b826d0", size = 450026, upload-time = "2025-06-15T19:06:08.476Z" }, + { url = "https://files.pythonhosted.org/packages/fe/51/d572260d98388e6e2b967425c985e07d47ee6f62e6455cefb46a6e06eda5/watchfiles-1.1.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fba9b62da882c1be1280a7584ec4515d0a6006a94d6e5819730ec2eab60ffe12", size = 457917, upload-time = "2025-06-15T19:06:09.988Z" }, + { url = "https://files.pythonhosted.org/packages/c6/2d/4258e52917bf9f12909b6ec314ff9636276f3542f9d3807d143f27309104/watchfiles-1.1.0-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3434e401f3ce0ed6b42569128b3d1e3af773d7ec18751b918b89cd49c14eaafb", size = 483602, upload-time = "2025-06-15T19:06:11.088Z" }, + { url = "https://files.pythonhosted.org/packages/84/99/bee17a5f341a4345fe7b7972a475809af9e528deba056f8963d61ea49f75/watchfiles-1.1.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fa257a4d0d21fcbca5b5fcba9dca5a78011cb93c0323fb8855c6d2dfbc76eb77", size = 596758, upload-time = "2025-06-15T19:06:12.197Z" }, + { url = "https://files.pythonhosted.org/packages/40/76/e4bec1d59b25b89d2b0716b41b461ed655a9a53c60dc78ad5771fda5b3e6/watchfiles-1.1.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7fd1b3879a578a8ec2076c7961076df540b9af317123f84569f5a9ddee64ce92", size = 477601, upload-time = "2025-06-15T19:06:13.391Z" }, + { url = "https://files.pythonhosted.org/packages/1f/fa/a514292956f4a9ce3c567ec0c13cce427c158e9f272062685a8a727d08fc/watchfiles-1.1.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62cc7a30eeb0e20ecc5f4bd113cd69dcdb745a07c68c0370cea919f373f65d9e", size = 451936, upload-time = "2025-06-15T19:06:14.656Z" }, + { url = "https://files.pythonhosted.org/packages/32/5d/c3bf927ec3bbeb4566984eba8dd7a8eb69569400f5509904545576741f88/watchfiles-1.1.0-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:891c69e027748b4a73847335d208e374ce54ca3c335907d381fde4e41661b13b", size = 626243, upload-time = "2025-06-15T19:06:16.232Z" }, + { url = "https://files.pythonhosted.org/packages/e6/65/6e12c042f1a68c556802a84d54bb06d35577c81e29fba14019562479159c/watchfiles-1.1.0-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:12fe8eaffaf0faa7906895b4f8bb88264035b3f0243275e0bf24af0436b27259", size = 623073, upload-time = "2025-06-15T19:06:17.457Z" }, + { url = "https://files.pythonhosted.org/packages/89/ab/7f79d9bf57329e7cbb0a6fd4c7bd7d0cee1e4a8ef0041459f5409da3506c/watchfiles-1.1.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:bfe3c517c283e484843cb2e357dd57ba009cff351edf45fb455b5fbd1f45b15f", size = 400872, upload-time = "2025-06-15T19:06:18.57Z" }, + { url = "https://files.pythonhosted.org/packages/df/d5/3f7bf9912798e9e6c516094db6b8932df53b223660c781ee37607030b6d3/watchfiles-1.1.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:a9ccbf1f129480ed3044f540c0fdbc4ee556f7175e5ab40fe077ff6baf286d4e", size = 392877, upload-time = "2025-06-15T19:06:19.55Z" }, + { url = "https://files.pythonhosted.org/packages/0d/c5/54ec7601a2798604e01c75294770dbee8150e81c6e471445d7601610b495/watchfiles-1.1.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba0e3255b0396cac3cc7bbace76404dd72b5438bf0d8e7cefa2f79a7f3649caa", size = 449645, upload-time = "2025-06-15T19:06:20.66Z" }, + { url = "https://files.pythonhosted.org/packages/0a/04/c2f44afc3b2fce21ca0b7802cbd37ed90a29874f96069ed30a36dfe57c2b/watchfiles-1.1.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4281cd9fce9fc0a9dbf0fc1217f39bf9cf2b4d315d9626ef1d4e87b84699e7e8", size = 457424, upload-time = "2025-06-15T19:06:21.712Z" }, + { url = "https://files.pythonhosted.org/packages/9f/b0/eec32cb6c14d248095261a04f290636da3df3119d4040ef91a4a50b29fa5/watchfiles-1.1.0-cp314-cp314t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6d2404af8db1329f9a3c9b79ff63e0ae7131986446901582067d9304ae8aaf7f", size = 481584, upload-time = "2025-06-15T19:06:22.777Z" }, + { url = "https://files.pythonhosted.org/packages/d1/e2/ca4bb71c68a937d7145aa25709e4f5d68eb7698a25ce266e84b55d591bbd/watchfiles-1.1.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e78b6ed8165996013165eeabd875c5dfc19d41b54f94b40e9fff0eb3193e5e8e", size = 596675, upload-time = "2025-06-15T19:06:24.226Z" }, + { url = "https://files.pythonhosted.org/packages/a1/dd/b0e4b7fb5acf783816bc950180a6cd7c6c1d2cf7e9372c0ea634e722712b/watchfiles-1.1.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:249590eb75ccc117f488e2fabd1bfa33c580e24b96f00658ad88e38844a040bb", size = 477363, upload-time = "2025-06-15T19:06:25.42Z" }, + { url = "https://files.pythonhosted.org/packages/69/c4/088825b75489cb5b6a761a4542645718893d395d8c530b38734f19da44d2/watchfiles-1.1.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d05686b5487cfa2e2c28ff1aa370ea3e6c5accfe6435944ddea1e10d93872147", size = 452240, upload-time = "2025-06-15T19:06:26.552Z" }, + { url = "https://files.pythonhosted.org/packages/10/8c/22b074814970eeef43b7c44df98c3e9667c1f7bf5b83e0ff0201b0bd43f9/watchfiles-1.1.0-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:d0e10e6f8f6dc5762adee7dece33b722282e1f59aa6a55da5d493a97282fedd8", size = 625607, upload-time = "2025-06-15T19:06:27.606Z" }, + { url = "https://files.pythonhosted.org/packages/32/fa/a4f5c2046385492b2273213ef815bf71a0d4c1943b784fb904e184e30201/watchfiles-1.1.0-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:af06c863f152005c7592df1d6a7009c836a247c9d8adb78fef8575a5a98699db", size = 623315, upload-time = "2025-06-15T19:06:29.076Z" }, + { url = "https://files.pythonhosted.org/packages/47/8a/a45db804b9f0740f8408626ab2bca89c3136432e57c4673b50180bf85dd9/watchfiles-1.1.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:865c8e95713744cf5ae261f3067861e9da5f1370ba91fc536431e29b418676fa", size = 406400, upload-time = "2025-06-15T19:06:30.233Z" }, + { url = "https://files.pythonhosted.org/packages/64/06/a08684f628fb41addd451845aceedc2407dc3d843b4b060a7c4350ddee0c/watchfiles-1.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:42f92befc848bb7a19658f21f3e7bae80d7d005d13891c62c2cd4d4d0abb3433", size = 397920, upload-time = "2025-06-15T19:06:31.315Z" }, + { url = "https://files.pythonhosted.org/packages/79/e6/e10d5675af653b1b07d4156906858041149ca222edaf8995877f2605ba9e/watchfiles-1.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa0cc8365ab29487eb4f9979fd41b22549853389e22d5de3f134a6796e1b05a4", size = 451196, upload-time = "2025-06-15T19:06:32.435Z" }, + { url = "https://files.pythonhosted.org/packages/f6/8a/facd6988100cd0f39e89f6c550af80edb28e3a529e1ee662e750663e6b36/watchfiles-1.1.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:90ebb429e933645f3da534c89b29b665e285048973b4d2b6946526888c3eb2c7", size = 458218, upload-time = "2025-06-15T19:06:33.503Z" }, + { url = "https://files.pythonhosted.org/packages/90/26/34cbcbc4d0f2f8f9cc243007e65d741ae039f7a11ef8ec6e9cd25bee08d1/watchfiles-1.1.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c588c45da9b08ab3da81d08d7987dae6d2a3badd63acdb3e206a42dbfa7cb76f", size = 484851, upload-time = "2025-06-15T19:06:34.541Z" }, + { url = "https://files.pythonhosted.org/packages/d7/1f/f59faa9fc4b0e36dbcdd28a18c430416443b309d295d8b82e18192d120ad/watchfiles-1.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7c55b0f9f68590115c25272b06e63f0824f03d4fc7d6deed43d8ad5660cabdbf", size = 599520, upload-time = "2025-06-15T19:06:35.785Z" }, + { url = "https://files.pythonhosted.org/packages/83/72/3637abecb3bf590529f5154ca000924003e5f4bbb9619744feeaf6f0b70b/watchfiles-1.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd17a1e489f02ce9117b0de3c0b1fab1c3e2eedc82311b299ee6b6faf6c23a29", size = 477956, upload-time = "2025-06-15T19:06:36.965Z" }, + { url = "https://files.pythonhosted.org/packages/f7/f3/d14ffd9acc0c1bd4790378995e320981423263a5d70bd3929e2e0dc87fff/watchfiles-1.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da71945c9ace018d8634822f16cbc2a78323ef6c876b1d34bbf5d5222fd6a72e", size = 453196, upload-time = "2025-06-15T19:06:38.024Z" }, + { url = "https://files.pythonhosted.org/packages/7f/38/78ad77bd99e20c0fdc82262be571ef114fc0beef9b43db52adb939768c38/watchfiles-1.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:51556d5004887045dba3acdd1fdf61dddea2be0a7e18048b5e853dcd37149b86", size = 627479, upload-time = "2025-06-15T19:06:39.442Z" }, + { url = "https://files.pythonhosted.org/packages/e6/cf/549d50a22fcc83f1017c6427b1c76c053233f91b526f4ad7a45971e70c0b/watchfiles-1.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04e4ed5d1cd3eae68c89bcc1a485a109f39f2fd8de05f705e98af6b5f1861f1f", size = 624414, upload-time = "2025-06-15T19:06:40.859Z" }, + { url = "https://files.pythonhosted.org/packages/72/de/57d6e40dc9140af71c12f3a9fc2d3efc5529d93981cd4d265d484d7c9148/watchfiles-1.1.0-cp39-cp39-win32.whl", hash = "sha256:c600e85f2ffd9f1035222b1a312aff85fd11ea39baff1d705b9b047aad2ce267", size = 280020, upload-time = "2025-06-15T19:06:41.89Z" }, + { url = "https://files.pythonhosted.org/packages/88/bb/7d287fc2a762396b128a0fca2dbae29386e0a242b81d1046daf389641db3/watchfiles-1.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:3aba215958d88182e8d2acba0fdaf687745180974946609119953c0e112397dc", size = 292758, upload-time = "2025-06-15T19:06:43.251Z" }, + { url = "https://files.pythonhosted.org/packages/be/7c/a3d7c55cfa377c2f62c4ae3c6502b997186bc5e38156bafcb9b653de9a6d/watchfiles-1.1.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3a6fd40bbb50d24976eb275ccb55cd1951dfb63dbc27cae3066a6ca5f4beabd5", size = 406748, upload-time = "2025-06-15T19:06:44.2Z" }, + { url = "https://files.pythonhosted.org/packages/38/d0/c46f1b2c0ca47f3667b144de6f0515f6d1c670d72f2ca29861cac78abaa1/watchfiles-1.1.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9f811079d2f9795b5d48b55a37aa7773680a5659afe34b54cc1d86590a51507d", size = 398801, upload-time = "2025-06-15T19:06:45.774Z" }, + { url = "https://files.pythonhosted.org/packages/70/9c/9a6a42e97f92eeed77c3485a43ea96723900aefa3ac739a8c73f4bff2cd7/watchfiles-1.1.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a2726d7bfd9f76158c84c10a409b77a320426540df8c35be172444394b17f7ea", size = 451528, upload-time = "2025-06-15T19:06:46.791Z" }, + { url = "https://files.pythonhosted.org/packages/51/7b/98c7f4f7ce7ff03023cf971cd84a3ee3b790021ae7584ffffa0eb2554b96/watchfiles-1.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:df32d59cb9780f66d165a9a7a26f19df2c7d24e3bd58713108b41d0ff4f929c6", size = 454095, upload-time = "2025-06-15T19:06:48.211Z" }, + { url = "https://files.pythonhosted.org/packages/8c/6b/686dcf5d3525ad17b384fd94708e95193529b460a1b7bf40851f1328ec6e/watchfiles-1.1.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:0ece16b563b17ab26eaa2d52230c9a7ae46cf01759621f4fbbca280e438267b3", size = 406910, upload-time = "2025-06-15T19:06:49.335Z" }, + { url = "https://files.pythonhosted.org/packages/f3/d3/71c2dcf81dc1edcf8af9f4d8d63b1316fb0a2dd90cbfd427e8d9dd584a90/watchfiles-1.1.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:51b81e55d40c4b4aa8658427a3ee7ea847c591ae9e8b81ef94a90b668999353c", size = 398816, upload-time = "2025-06-15T19:06:50.433Z" }, + { url = "https://files.pythonhosted.org/packages/b8/fa/12269467b2fc006f8fce4cd6c3acfa77491dd0777d2a747415f28ccc8c60/watchfiles-1.1.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2bcdc54ea267fe72bfc7d83c041e4eb58d7d8dc6f578dfddb52f037ce62f432", size = 451584, upload-time = "2025-06-15T19:06:51.834Z" }, + { url = "https://files.pythonhosted.org/packages/bd/d3/254cea30f918f489db09d6a8435a7de7047f8cb68584477a515f160541d6/watchfiles-1.1.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:923fec6e5461c42bd7e3fd5ec37492c6f3468be0499bc0707b4bbbc16ac21792", size = 454009, upload-time = "2025-06-15T19:06:52.896Z" }, + { url = "https://files.pythonhosted.org/packages/48/93/5c96bdb65e7f88f7da40645f34c0a3c317a2931ed82161e93c91e8eddd27/watchfiles-1.1.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7b3443f4ec3ba5aa00b0e9fa90cf31d98321cbff8b925a7c7b84161619870bc9", size = 406640, upload-time = "2025-06-15T19:06:54.868Z" }, + { url = "https://files.pythonhosted.org/packages/e3/25/09204836e93e1b99cce88802ce87264a1d20610c7a8f6de24def27ad95b1/watchfiles-1.1.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:7049e52167fc75fc3cc418fc13d39a8e520cbb60ca08b47f6cedb85e181d2f2a", size = 398543, upload-time = "2025-06-15T19:06:55.95Z" }, + { url = "https://files.pythonhosted.org/packages/5e/dc/6f324a6f32c5ab73b54311b5f393a79df34c1584b8d2404cf7e6d780aa5d/watchfiles-1.1.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54062ef956807ba806559b3c3d52105ae1827a0d4ab47b621b31132b6b7e2866", size = 451787, upload-time = "2025-06-15T19:06:56.998Z" }, + { url = "https://files.pythonhosted.org/packages/45/5d/1d02ef4caa4ec02389e72d5594cdf9c67f1800a7c380baa55063c30c6598/watchfiles-1.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a7bd57a1bb02f9d5c398c0c1675384e7ab1dd39da0ca50b7f09af45fa435277", size = 454272, upload-time = "2025-06-15T19:06:58.055Z" }, +] + [[package]] name = "wcwidth" version = "0.2.13" @@ -3033,6 +5640,109 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", size = 34166, upload-time = "2024-01-06T02:10:55.763Z" }, ] +[[package]] +name = "webcolors" +version = "24.11.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7b/29/061ec845fb58521848f3739e466efd8250b4b7b98c1b6c5bf4d40b419b7e/webcolors-24.11.1.tar.gz", hash = "sha256:ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6", size = 45064, upload-time = "2024-11-11T07:43:24.224Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/60/e8/c0e05e4684d13459f93d312077a9a2efbe04d59c393bc2b8802248c908d4/webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9", size = 14934, upload-time = "2024-11-11T07:43:22.529Z" }, +] + +[[package]] +name = "webencodings" +version = "0.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923", size = 9721, upload-time = "2017-04-05T20:21:34.189Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", size = 11774, upload-time = "2017-04-05T20:21:32.581Z" }, +] + +[[package]] +name = "websocket-client" +version = "1.8.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e6/30/fba0d96b4b5fbf5948ed3f4681f7da2f9f64512e1d303f94b4cc174c24a5/websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da", size = 54648, upload-time = "2024-04-23T22:16:16.976Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526", size = 58826, upload-time = "2024-04-23T22:16:14.422Z" }, +] + +[[package]] +name = "websockets" +version = "15.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/21/e6/26d09fab466b7ca9c7737474c52be4f76a40301b08362eb2dbc19dcc16c1/websockets-15.0.1.tar.gz", hash = "sha256:82544de02076bafba038ce055ee6412d68da13ab47f0c60cab827346de828dee", size = 177016, upload-time = "2025-03-05T20:03:41.606Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/da/6462a9f510c0c49837bbc9345aca92d767a56c1fb2939e1579df1e1cdcf7/websockets-15.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d63efaa0cd96cf0c5fe4d581521d9fa87744540d4bc999ae6e08595a1014b45b", size = 175423, upload-time = "2025-03-05T20:01:35.363Z" }, + { url = "https://files.pythonhosted.org/packages/1c/9f/9d11c1a4eb046a9e106483b9ff69bce7ac880443f00e5ce64261b47b07e7/websockets-15.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ac60e3b188ec7574cb761b08d50fcedf9d77f1530352db4eef1707fe9dee7205", size = 173080, upload-time = "2025-03-05T20:01:37.304Z" }, + { url = "https://files.pythonhosted.org/packages/d5/4f/b462242432d93ea45f297b6179c7333dd0402b855a912a04e7fc61c0d71f/websockets-15.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5756779642579d902eed757b21b0164cd6fe338506a8083eb58af5c372e39d9a", size = 173329, upload-time = "2025-03-05T20:01:39.668Z" }, + { url = "https://files.pythonhosted.org/packages/6e/0c/6afa1f4644d7ed50284ac59cc70ef8abd44ccf7d45850d989ea7310538d0/websockets-15.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fdfe3e2a29e4db3659dbd5bbf04560cea53dd9610273917799f1cde46aa725e", size = 182312, upload-time = "2025-03-05T20:01:41.815Z" }, + { url = "https://files.pythonhosted.org/packages/dd/d4/ffc8bd1350b229ca7a4db2a3e1c482cf87cea1baccd0ef3e72bc720caeec/websockets-15.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c2529b320eb9e35af0fa3016c187dffb84a3ecc572bcee7c3ce302bfeba52bf", size = 181319, upload-time = "2025-03-05T20:01:43.967Z" }, + { url = "https://files.pythonhosted.org/packages/97/3a/5323a6bb94917af13bbb34009fac01e55c51dfde354f63692bf2533ffbc2/websockets-15.0.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac1e5c9054fe23226fb11e05a6e630837f074174c4c2f0fe442996112a6de4fb", size = 181631, upload-time = "2025-03-05T20:01:46.104Z" }, + { url = "https://files.pythonhosted.org/packages/a6/cc/1aeb0f7cee59ef065724041bb7ed667b6ab1eeffe5141696cccec2687b66/websockets-15.0.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:5df592cd503496351d6dc14f7cdad49f268d8e618f80dce0cd5a36b93c3fc08d", size = 182016, upload-time = "2025-03-05T20:01:47.603Z" }, + { url = "https://files.pythonhosted.org/packages/79/f9/c86f8f7af208e4161a7f7e02774e9d0a81c632ae76db2ff22549e1718a51/websockets-15.0.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0a34631031a8f05657e8e90903e656959234f3a04552259458aac0b0f9ae6fd9", size = 181426, upload-time = "2025-03-05T20:01:48.949Z" }, + { url = "https://files.pythonhosted.org/packages/c7/b9/828b0bc6753db905b91df6ae477c0b14a141090df64fb17f8a9d7e3516cf/websockets-15.0.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3d00075aa65772e7ce9e990cab3ff1de702aa09be3940d1dc88d5abf1ab8a09c", size = 181360, upload-time = "2025-03-05T20:01:50.938Z" }, + { url = "https://files.pythonhosted.org/packages/89/fb/250f5533ec468ba6327055b7d98b9df056fb1ce623b8b6aaafb30b55d02e/websockets-15.0.1-cp310-cp310-win32.whl", hash = "sha256:1234d4ef35db82f5446dca8e35a7da7964d02c127b095e172e54397fb6a6c256", size = 176388, upload-time = "2025-03-05T20:01:52.213Z" }, + { url = "https://files.pythonhosted.org/packages/1c/46/aca7082012768bb98e5608f01658ff3ac8437e563eca41cf068bd5849a5e/websockets-15.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:39c1fec2c11dc8d89bba6b2bf1556af381611a173ac2b511cf7231622058af41", size = 176830, upload-time = "2025-03-05T20:01:53.922Z" }, + { url = "https://files.pythonhosted.org/packages/9f/32/18fcd5919c293a398db67443acd33fde142f283853076049824fc58e6f75/websockets-15.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:823c248b690b2fd9303ba00c4f66cd5e2d8c3ba4aa968b2779be9532a4dad431", size = 175423, upload-time = "2025-03-05T20:01:56.276Z" }, + { url = "https://files.pythonhosted.org/packages/76/70/ba1ad96b07869275ef42e2ce21f07a5b0148936688c2baf7e4a1f60d5058/websockets-15.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678999709e68425ae2593acf2e3ebcbcf2e69885a5ee78f9eb80e6e371f1bf57", size = 173082, upload-time = "2025-03-05T20:01:57.563Z" }, + { url = "https://files.pythonhosted.org/packages/86/f2/10b55821dd40eb696ce4704a87d57774696f9451108cff0d2824c97e0f97/websockets-15.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d50fd1ee42388dcfb2b3676132c78116490976f1300da28eb629272d5d93e905", size = 173330, upload-time = "2025-03-05T20:01:59.063Z" }, + { url = "https://files.pythonhosted.org/packages/a5/90/1c37ae8b8a113d3daf1065222b6af61cc44102da95388ac0018fcb7d93d9/websockets-15.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d99e5546bf73dbad5bf3547174cd6cb8ba7273062a23808ffea025ecb1cf8562", size = 182878, upload-time = "2025-03-05T20:02:00.305Z" }, + { url = "https://files.pythonhosted.org/packages/8e/8d/96e8e288b2a41dffafb78e8904ea7367ee4f891dafc2ab8d87e2124cb3d3/websockets-15.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:66dd88c918e3287efc22409d426c8f729688d89a0c587c88971a0faa2c2f3792", size = 181883, upload-time = "2025-03-05T20:02:03.148Z" }, + { url = "https://files.pythonhosted.org/packages/93/1f/5d6dbf551766308f6f50f8baf8e9860be6182911e8106da7a7f73785f4c4/websockets-15.0.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8dd8327c795b3e3f219760fa603dcae1dcc148172290a8ab15158cf85a953413", size = 182252, upload-time = "2025-03-05T20:02:05.29Z" }, + { url = "https://files.pythonhosted.org/packages/d4/78/2d4fed9123e6620cbf1706c0de8a1632e1a28e7774d94346d7de1bba2ca3/websockets-15.0.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8fdc51055e6ff4adeb88d58a11042ec9a5eae317a0a53d12c062c8a8865909e8", size = 182521, upload-time = "2025-03-05T20:02:07.458Z" }, + { url = "https://files.pythonhosted.org/packages/e7/3b/66d4c1b444dd1a9823c4a81f50231b921bab54eee2f69e70319b4e21f1ca/websockets-15.0.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:693f0192126df6c2327cce3baa7c06f2a117575e32ab2308f7f8216c29d9e2e3", size = 181958, upload-time = "2025-03-05T20:02:09.842Z" }, + { url = "https://files.pythonhosted.org/packages/08/ff/e9eed2ee5fed6f76fdd6032ca5cd38c57ca9661430bb3d5fb2872dc8703c/websockets-15.0.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:54479983bd5fb469c38f2f5c7e3a24f9a4e70594cd68cd1fa6b9340dadaff7cf", size = 181918, upload-time = "2025-03-05T20:02:11.968Z" }, + { url = "https://files.pythonhosted.org/packages/d8/75/994634a49b7e12532be6a42103597b71098fd25900f7437d6055ed39930a/websockets-15.0.1-cp311-cp311-win32.whl", hash = "sha256:16b6c1b3e57799b9d38427dda63edcbe4926352c47cf88588c0be4ace18dac85", size = 176388, upload-time = "2025-03-05T20:02:13.32Z" }, + { url = "https://files.pythonhosted.org/packages/98/93/e36c73f78400a65f5e236cd376713c34182e6663f6889cd45a4a04d8f203/websockets-15.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:27ccee0071a0e75d22cb35849b1db43f2ecd3e161041ac1ee9d2352ddf72f065", size = 176828, upload-time = "2025-03-05T20:02:14.585Z" }, + { url = "https://files.pythonhosted.org/packages/51/6b/4545a0d843594f5d0771e86463606a3988b5a09ca5123136f8a76580dd63/websockets-15.0.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:3e90baa811a5d73f3ca0bcbf32064d663ed81318ab225ee4f427ad4e26e5aff3", size = 175437, upload-time = "2025-03-05T20:02:16.706Z" }, + { url = "https://files.pythonhosted.org/packages/f4/71/809a0f5f6a06522af902e0f2ea2757f71ead94610010cf570ab5c98e99ed/websockets-15.0.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:592f1a9fe869c778694f0aa806ba0374e97648ab57936f092fd9d87f8bc03665", size = 173096, upload-time = "2025-03-05T20:02:18.832Z" }, + { url = "https://files.pythonhosted.org/packages/3d/69/1a681dd6f02180916f116894181eab8b2e25b31e484c5d0eae637ec01f7c/websockets-15.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0701bc3cfcb9164d04a14b149fd74be7347a530ad3bbf15ab2c678a2cd3dd9a2", size = 173332, upload-time = "2025-03-05T20:02:20.187Z" }, + { url = "https://files.pythonhosted.org/packages/a6/02/0073b3952f5bce97eafbb35757f8d0d54812b6174ed8dd952aa08429bcc3/websockets-15.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8b56bdcdb4505c8078cb6c7157d9811a85790f2f2b3632c7d1462ab5783d215", size = 183152, upload-time = "2025-03-05T20:02:22.286Z" }, + { url = "https://files.pythonhosted.org/packages/74/45/c205c8480eafd114b428284840da0b1be9ffd0e4f87338dc95dc6ff961a1/websockets-15.0.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0af68c55afbd5f07986df82831c7bff04846928ea8d1fd7f30052638788bc9b5", size = 182096, upload-time = "2025-03-05T20:02:24.368Z" }, + { url = "https://files.pythonhosted.org/packages/14/8f/aa61f528fba38578ec553c145857a181384c72b98156f858ca5c8e82d9d3/websockets-15.0.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64dee438fed052b52e4f98f76c5790513235efaa1ef7f3f2192c392cd7c91b65", size = 182523, upload-time = "2025-03-05T20:02:25.669Z" }, + { url = "https://files.pythonhosted.org/packages/ec/6d/0267396610add5bc0d0d3e77f546d4cd287200804fe02323797de77dbce9/websockets-15.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d5f6b181bb38171a8ad1d6aa58a67a6aa9d4b38d0f8c5f496b9e42561dfc62fe", size = 182790, upload-time = "2025-03-05T20:02:26.99Z" }, + { url = "https://files.pythonhosted.org/packages/02/05/c68c5adbf679cf610ae2f74a9b871ae84564462955d991178f95a1ddb7dd/websockets-15.0.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5d54b09eba2bada6011aea5375542a157637b91029687eb4fdb2dab11059c1b4", size = 182165, upload-time = "2025-03-05T20:02:30.291Z" }, + { url = "https://files.pythonhosted.org/packages/29/93/bb672df7b2f5faac89761cb5fa34f5cec45a4026c383a4b5761c6cea5c16/websockets-15.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3be571a8b5afed347da347bfcf27ba12b069d9d7f42cb8c7028b5e98bbb12597", size = 182160, upload-time = "2025-03-05T20:02:31.634Z" }, + { url = "https://files.pythonhosted.org/packages/ff/83/de1f7709376dc3ca9b7eeb4b9a07b4526b14876b6d372a4dc62312bebee0/websockets-15.0.1-cp312-cp312-win32.whl", hash = "sha256:c338ffa0520bdb12fbc527265235639fb76e7bc7faafbb93f6ba80d9c06578a9", size = 176395, upload-time = "2025-03-05T20:02:33.017Z" }, + { url = "https://files.pythonhosted.org/packages/7d/71/abf2ebc3bbfa40f391ce1428c7168fb20582d0ff57019b69ea20fa698043/websockets-15.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:fcd5cf9e305d7b8338754470cf69cf81f420459dbae8a3b40cee57417f4614a7", size = 176841, upload-time = "2025-03-05T20:02:34.498Z" }, + { url = "https://files.pythonhosted.org/packages/cb/9f/51f0cf64471a9d2b4d0fc6c534f323b664e7095640c34562f5182e5a7195/websockets-15.0.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ee443ef070bb3b6ed74514f5efaa37a252af57c90eb33b956d35c8e9c10a1931", size = 175440, upload-time = "2025-03-05T20:02:36.695Z" }, + { url = "https://files.pythonhosted.org/packages/8a/05/aa116ec9943c718905997412c5989f7ed671bc0188ee2ba89520e8765d7b/websockets-15.0.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5a939de6b7b4e18ca683218320fc67ea886038265fd1ed30173f5ce3f8e85675", size = 173098, upload-time = "2025-03-05T20:02:37.985Z" }, + { url = "https://files.pythonhosted.org/packages/ff/0b/33cef55ff24f2d92924923c99926dcce78e7bd922d649467f0eda8368923/websockets-15.0.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:746ee8dba912cd6fc889a8147168991d50ed70447bf18bcda7039f7d2e3d9151", size = 173329, upload-time = "2025-03-05T20:02:39.298Z" }, + { url = "https://files.pythonhosted.org/packages/31/1d/063b25dcc01faa8fada1469bdf769de3768b7044eac9d41f734fd7b6ad6d/websockets-15.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:595b6c3969023ecf9041b2936ac3827e4623bfa3ccf007575f04c5a6aa318c22", size = 183111, upload-time = "2025-03-05T20:02:40.595Z" }, + { url = "https://files.pythonhosted.org/packages/93/53/9a87ee494a51bf63e4ec9241c1ccc4f7c2f45fff85d5bde2ff74fcb68b9e/websockets-15.0.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3c714d2fc58b5ca3e285461a4cc0c9a66bd0e24c5da9911e30158286c9b5be7f", size = 182054, upload-time = "2025-03-05T20:02:41.926Z" }, + { url = "https://files.pythonhosted.org/packages/ff/b2/83a6ddf56cdcbad4e3d841fcc55d6ba7d19aeb89c50f24dd7e859ec0805f/websockets-15.0.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f3c1e2ab208db911594ae5b4f79addeb3501604a165019dd221c0bdcabe4db8", size = 182496, upload-time = "2025-03-05T20:02:43.304Z" }, + { url = "https://files.pythonhosted.org/packages/98/41/e7038944ed0abf34c45aa4635ba28136f06052e08fc2168520bb8b25149f/websockets-15.0.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:229cf1d3ca6c1804400b0a9790dc66528e08a6a1feec0d5040e8b9eb14422375", size = 182829, upload-time = "2025-03-05T20:02:48.812Z" }, + { url = "https://files.pythonhosted.org/packages/e0/17/de15b6158680c7623c6ef0db361da965ab25d813ae54fcfeae2e5b9ef910/websockets-15.0.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:756c56e867a90fb00177d530dca4b097dd753cde348448a1012ed6c5131f8b7d", size = 182217, upload-time = "2025-03-05T20:02:50.14Z" }, + { url = "https://files.pythonhosted.org/packages/33/2b/1f168cb6041853eef0362fb9554c3824367c5560cbdaad89ac40f8c2edfc/websockets-15.0.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:558d023b3df0bffe50a04e710bc87742de35060580a293c2a984299ed83bc4e4", size = 182195, upload-time = "2025-03-05T20:02:51.561Z" }, + { url = "https://files.pythonhosted.org/packages/86/eb/20b6cdf273913d0ad05a6a14aed4b9a85591c18a987a3d47f20fa13dcc47/websockets-15.0.1-cp313-cp313-win32.whl", hash = "sha256:ba9e56e8ceeeedb2e080147ba85ffcd5cd0711b89576b83784d8605a7df455fa", size = 176393, upload-time = "2025-03-05T20:02:53.814Z" }, + { url = "https://files.pythonhosted.org/packages/1b/6c/c65773d6cab416a64d191d6ee8a8b1c68a09970ea6909d16965d26bfed1e/websockets-15.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:e09473f095a819042ecb2ab9465aee615bd9c2028e4ef7d933600a8401c79561", size = 176837, upload-time = "2025-03-05T20:02:55.237Z" }, + { url = "https://files.pythonhosted.org/packages/36/db/3fff0bcbe339a6fa6a3b9e3fbc2bfb321ec2f4cd233692272c5a8d6cf801/websockets-15.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5f4c04ead5aed67c8a1a20491d54cdfba5884507a48dd798ecaf13c74c4489f5", size = 175424, upload-time = "2025-03-05T20:02:56.505Z" }, + { url = "https://files.pythonhosted.org/packages/46/e6/519054c2f477def4165b0ec060ad664ed174e140b0d1cbb9fafa4a54f6db/websockets-15.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:abdc0c6c8c648b4805c5eacd131910d2a7f6455dfd3becab248ef108e89ab16a", size = 173077, upload-time = "2025-03-05T20:02:58.37Z" }, + { url = "https://files.pythonhosted.org/packages/1a/21/c0712e382df64c93a0d16449ecbf87b647163485ca1cc3f6cbadb36d2b03/websockets-15.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a625e06551975f4b7ea7102bc43895b90742746797e2e14b70ed61c43a90f09b", size = 173324, upload-time = "2025-03-05T20:02:59.773Z" }, + { url = "https://files.pythonhosted.org/packages/1c/cb/51ba82e59b3a664df54beed8ad95517c1b4dc1a913730e7a7db778f21291/websockets-15.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d591f8de75824cbb7acad4e05d2d710484f15f29d4a915092675ad3456f11770", size = 182094, upload-time = "2025-03-05T20:03:01.827Z" }, + { url = "https://files.pythonhosted.org/packages/fb/0f/bf3788c03fec679bcdaef787518dbe60d12fe5615a544a6d4cf82f045193/websockets-15.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:47819cea040f31d670cc8d324bb6435c6f133b8c7a19ec3d61634e62f8d8f9eb", size = 181094, upload-time = "2025-03-05T20:03:03.123Z" }, + { url = "https://files.pythonhosted.org/packages/5e/da/9fb8c21edbc719b66763a571afbaf206cb6d3736d28255a46fc2fe20f902/websockets-15.0.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac017dd64572e5c3bd01939121e4d16cf30e5d7e110a119399cf3133b63ad054", size = 181397, upload-time = "2025-03-05T20:03:04.443Z" }, + { url = "https://files.pythonhosted.org/packages/2e/65/65f379525a2719e91d9d90c38fe8b8bc62bd3c702ac651b7278609b696c4/websockets-15.0.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:4a9fac8e469d04ce6c25bb2610dc535235bd4aa14996b4e6dbebf5e007eba5ee", size = 181794, upload-time = "2025-03-05T20:03:06.708Z" }, + { url = "https://files.pythonhosted.org/packages/d9/26/31ac2d08f8e9304d81a1a7ed2851c0300f636019a57cbaa91342015c72cc/websockets-15.0.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:363c6f671b761efcb30608d24925a382497c12c506b51661883c3e22337265ed", size = 181194, upload-time = "2025-03-05T20:03:08.844Z" }, + { url = "https://files.pythonhosted.org/packages/98/72/1090de20d6c91994cd4b357c3f75a4f25ee231b63e03adea89671cc12a3f/websockets-15.0.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2034693ad3097d5355bfdacfffcbd3ef5694f9718ab7f29c29689a9eae841880", size = 181164, upload-time = "2025-03-05T20:03:10.242Z" }, + { url = "https://files.pythonhosted.org/packages/2d/37/098f2e1c103ae8ed79b0e77f08d83b0ec0b241cf4b7f2f10edd0126472e1/websockets-15.0.1-cp39-cp39-win32.whl", hash = "sha256:3b1ac0d3e594bf121308112697cf4b32be538fb1444468fb0a6ae4feebc83411", size = 176381, upload-time = "2025-03-05T20:03:12.77Z" }, + { url = "https://files.pythonhosted.org/packages/75/8b/a32978a3ab42cebb2ebdd5b05df0696a09f4d436ce69def11893afa301f0/websockets-15.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:b7643a03db5c95c799b89b31c036d5f27eeb4d259c798e878d6937d71832b1e4", size = 176841, upload-time = "2025-03-05T20:03:14.367Z" }, + { url = "https://files.pythonhosted.org/packages/02/9e/d40f779fa16f74d3468357197af8d6ad07e7c5a27ea1ca74ceb38986f77a/websockets-15.0.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0c9e74d766f2818bb95f84c25be4dea09841ac0f734d1966f415e4edfc4ef1c3", size = 173109, upload-time = "2025-03-05T20:03:17.769Z" }, + { url = "https://files.pythonhosted.org/packages/bc/cd/5b887b8585a593073fd92f7c23ecd3985cd2c3175025a91b0d69b0551372/websockets-15.0.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1009ee0c7739c08a0cd59de430d6de452a55e42d6b522de7aa15e6f67db0b8e1", size = 173343, upload-time = "2025-03-05T20:03:19.094Z" }, + { url = "https://files.pythonhosted.org/packages/fe/ae/d34f7556890341e900a95acf4886833646306269f899d58ad62f588bf410/websockets-15.0.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76d1f20b1c7a2fa82367e04982e708723ba0e7b8d43aa643d3dcd404d74f1475", size = 174599, upload-time = "2025-03-05T20:03:21.1Z" }, + { url = "https://files.pythonhosted.org/packages/71/e6/5fd43993a87db364ec60fc1d608273a1a465c0caba69176dd160e197ce42/websockets-15.0.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f29d80eb9a9263b8d109135351caf568cc3f80b9928bccde535c235de55c22d9", size = 174207, upload-time = "2025-03-05T20:03:23.221Z" }, + { url = "https://files.pythonhosted.org/packages/2b/fb/c492d6daa5ec067c2988ac80c61359ace5c4c674c532985ac5a123436cec/websockets-15.0.1-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b359ed09954d7c18bbc1680f380c7301f92c60bf924171629c5db97febb12f04", size = 174155, upload-time = "2025-03-05T20:03:25.321Z" }, + { url = "https://files.pythonhosted.org/packages/68/a1/dcb68430b1d00b698ae7a7e0194433bce4f07ded185f0ee5fb21e2a2e91e/websockets-15.0.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:cad21560da69f4ce7658ca2cb83138fb4cf695a2ba3e475e0559e05991aa8122", size = 176884, upload-time = "2025-03-05T20:03:27.934Z" }, + { url = "https://files.pythonhosted.org/packages/b7/48/4b67623bac4d79beb3a6bb27b803ba75c1bdedc06bd827e465803690a4b2/websockets-15.0.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7f493881579c90fc262d9cdbaa05a6b54b3811c2f300766748db79f098db9940", size = 173106, upload-time = "2025-03-05T20:03:29.404Z" }, + { url = "https://files.pythonhosted.org/packages/ed/f0/adb07514a49fe5728192764e04295be78859e4a537ab8fcc518a3dbb3281/websockets-15.0.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:47b099e1f4fbc95b701b6e85768e1fcdaf1630f3cbe4765fa216596f12310e2e", size = 173339, upload-time = "2025-03-05T20:03:30.755Z" }, + { url = "https://files.pythonhosted.org/packages/87/28/bd23c6344b18fb43df40d0700f6d3fffcd7cef14a6995b4f976978b52e62/websockets-15.0.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67f2b6de947f8c757db2db9c71527933ad0019737ec374a8a6be9a956786aaf9", size = 174597, upload-time = "2025-03-05T20:03:32.247Z" }, + { url = "https://files.pythonhosted.org/packages/6d/79/ca288495863d0f23a60f546f0905ae8f3ed467ad87f8b6aceb65f4c013e4/websockets-15.0.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d08eb4c2b7d6c41da6ca0600c077e93f5adcfd979cd777d747e9ee624556da4b", size = 174205, upload-time = "2025-03-05T20:03:33.731Z" }, + { url = "https://files.pythonhosted.org/packages/04/e4/120ff3180b0872b1fe6637f6f995bcb009fb5c87d597c1fc21456f50c848/websockets-15.0.1-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b826973a4a2ae47ba357e4e82fa44a463b8f168e1ca775ac64521442b19e87f", size = 174150, upload-time = "2025-03-05T20:03:35.757Z" }, + { url = "https://files.pythonhosted.org/packages/cb/c3/30e2f9c539b8da8b1d76f64012f3b19253271a63413b2d3adb94b143407f/websockets-15.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:21c1fa28a6a7e3cbdc171c694398b6df4744613ce9b36b1a498e816787e28123", size = 176877, upload-time = "2025-03-05T20:03:37.199Z" }, + { url = "https://files.pythonhosted.org/packages/fa/a8/5b41e0da817d64113292ab1f8247140aac61cbf6cfd085d6a0fa77f4984f/websockets-15.0.1-py3-none-any.whl", hash = "sha256:f7a866fbc1e97b5c617ee4116daaa09b722101d4a3c170c787450ba409f9736f", size = 169743, upload-time = "2025-03-05T20:03:39.41Z" }, +] + [[package]] name = "widgetsnbextension" version = "4.0.14" @@ -3042,6 +5752,197 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ca/51/5447876806d1088a0f8f71e16542bf350918128d0a69437df26047c8e46f/widgetsnbextension-4.0.14-py3-none-any.whl", hash = "sha256:4875a9eaf72fbf5079dc372a51a9f268fc38d46f767cbf85c43a36da5cb9b575", size = 2196503, upload-time = "2025-04-10T13:01:23.086Z" }, ] +[[package]] +name = "wrapt" +version = "1.17.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c3/fc/e91cc220803d7bc4db93fb02facd8461c37364151b8494762cc88b0fbcef/wrapt-1.17.2.tar.gz", hash = "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3", size = 55531, upload-time = "2025-01-14T10:35:45.465Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/d1/1daec934997e8b160040c78d7b31789f19b122110a75eca3d4e8da0049e1/wrapt-1.17.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3d57c572081fed831ad2d26fd430d565b76aa277ed1d30ff4d40670b1c0dd984", size = 53307, upload-time = "2025-01-14T10:33:13.616Z" }, + { url = "https://files.pythonhosted.org/packages/1b/7b/13369d42651b809389c1a7153baa01d9700430576c81a2f5c5e460df0ed9/wrapt-1.17.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b5e251054542ae57ac7f3fba5d10bfff615b6c2fb09abeb37d2f1463f841ae22", size = 38486, upload-time = "2025-01-14T10:33:15.947Z" }, + { url = "https://files.pythonhosted.org/packages/62/bf/e0105016f907c30b4bd9e377867c48c34dc9c6c0c104556c9c9126bd89ed/wrapt-1.17.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:80dd7db6a7cb57ffbc279c4394246414ec99537ae81ffd702443335a61dbf3a7", size = 38777, upload-time = "2025-01-14T10:33:17.462Z" }, + { url = "https://files.pythonhosted.org/packages/27/70/0f6e0679845cbf8b165e027d43402a55494779295c4b08414097b258ac87/wrapt-1.17.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a6e821770cf99cc586d33833b2ff32faebdbe886bd6322395606cf55153246c", size = 83314, upload-time = "2025-01-14T10:33:21.282Z" }, + { url = "https://files.pythonhosted.org/packages/0f/77/0576d841bf84af8579124a93d216f55d6f74374e4445264cb378a6ed33eb/wrapt-1.17.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b60fb58b90c6d63779cb0c0c54eeb38941bae3ecf7a73c764c52c88c2dcb9d72", size = 74947, upload-time = "2025-01-14T10:33:24.414Z" }, + { url = "https://files.pythonhosted.org/packages/90/ec/00759565518f268ed707dcc40f7eeec38637d46b098a1f5143bff488fe97/wrapt-1.17.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b870b5df5b71d8c3359d21be8f0d6c485fa0ebdb6477dda51a1ea54a9b558061", size = 82778, upload-time = "2025-01-14T10:33:26.152Z" }, + { url = "https://files.pythonhosted.org/packages/f8/5a/7cffd26b1c607b0b0c8a9ca9d75757ad7620c9c0a9b4a25d3f8a1480fafc/wrapt-1.17.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4011d137b9955791f9084749cba9a367c68d50ab8d11d64c50ba1688c9b457f2", size = 81716, upload-time = "2025-01-14T10:33:27.372Z" }, + { url = "https://files.pythonhosted.org/packages/7e/09/dccf68fa98e862df7e6a60a61d43d644b7d095a5fc36dbb591bbd4a1c7b2/wrapt-1.17.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:1473400e5b2733e58b396a04eb7f35f541e1fb976d0c0724d0223dd607e0f74c", size = 74548, upload-time = "2025-01-14T10:33:28.52Z" }, + { url = "https://files.pythonhosted.org/packages/b7/8e/067021fa3c8814952c5e228d916963c1115b983e21393289de15128e867e/wrapt-1.17.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3cedbfa9c940fdad3e6e941db7138e26ce8aad38ab5fe9dcfadfed9db7a54e62", size = 81334, upload-time = "2025-01-14T10:33:29.643Z" }, + { url = "https://files.pythonhosted.org/packages/4b/0d/9d4b5219ae4393f718699ca1c05f5ebc0c40d076f7e65fd48f5f693294fb/wrapt-1.17.2-cp310-cp310-win32.whl", hash = "sha256:582530701bff1dec6779efa00c516496968edd851fba224fbd86e46cc6b73563", size = 36427, upload-time = "2025-01-14T10:33:30.832Z" }, + { url = "https://files.pythonhosted.org/packages/72/6a/c5a83e8f61aec1e1aeef939807602fb880e5872371e95df2137142f5c58e/wrapt-1.17.2-cp310-cp310-win_amd64.whl", hash = "sha256:58705da316756681ad3c9c73fd15499aa4d8c69f9fd38dc8a35e06c12468582f", size = 38774, upload-time = "2025-01-14T10:33:32.897Z" }, + { url = "https://files.pythonhosted.org/packages/cd/f7/a2aab2cbc7a665efab072344a8949a71081eed1d2f451f7f7d2b966594a2/wrapt-1.17.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ff04ef6eec3eee8a5efef2401495967a916feaa353643defcc03fc74fe213b58", size = 53308, upload-time = "2025-01-14T10:33:33.992Z" }, + { url = "https://files.pythonhosted.org/packages/50/ff/149aba8365fdacef52b31a258c4dc1c57c79759c335eff0b3316a2664a64/wrapt-1.17.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db983e7bca53819efdbd64590ee96c9213894272c776966ca6306b73e4affda", size = 38488, upload-time = "2025-01-14T10:33:35.264Z" }, + { url = "https://files.pythonhosted.org/packages/65/46/5a917ce85b5c3b490d35c02bf71aedaa9f2f63f2d15d9949cc4ba56e8ba9/wrapt-1.17.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9abc77a4ce4c6f2a3168ff34b1da9b0f311a8f1cfd694ec96b0603dff1c79438", size = 38776, upload-time = "2025-01-14T10:33:38.28Z" }, + { url = "https://files.pythonhosted.org/packages/ca/74/336c918d2915a4943501c77566db41d1bd6e9f4dbc317f356b9a244dfe83/wrapt-1.17.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b929ac182f5ace000d459c59c2c9c33047e20e935f8e39371fa6e3b85d56f4a", size = 83776, upload-time = "2025-01-14T10:33:40.678Z" }, + { url = "https://files.pythonhosted.org/packages/09/99/c0c844a5ccde0fe5761d4305485297f91d67cf2a1a824c5f282e661ec7ff/wrapt-1.17.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f09b286faeff3c750a879d336fb6d8713206fc97af3adc14def0cdd349df6000", size = 75420, upload-time = "2025-01-14T10:33:41.868Z" }, + { url = "https://files.pythonhosted.org/packages/b4/b0/9fc566b0fe08b282c850063591a756057c3247b2362b9286429ec5bf1721/wrapt-1.17.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a7ed2d9d039bd41e889f6fb9364554052ca21ce823580f6a07c4ec245c1f5d6", size = 83199, upload-time = "2025-01-14T10:33:43.598Z" }, + { url = "https://files.pythonhosted.org/packages/9d/4b/71996e62d543b0a0bd95dda485219856def3347e3e9380cc0d6cf10cfb2f/wrapt-1.17.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:129a150f5c445165ff941fc02ee27df65940fcb8a22a61828b1853c98763a64b", size = 82307, upload-time = "2025-01-14T10:33:48.499Z" }, + { url = "https://files.pythonhosted.org/packages/39/35/0282c0d8789c0dc9bcc738911776c762a701f95cfe113fb8f0b40e45c2b9/wrapt-1.17.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1fb5699e4464afe5c7e65fa51d4f99e0b2eadcc176e4aa33600a3df7801d6662", size = 75025, upload-time = "2025-01-14T10:33:51.191Z" }, + { url = "https://files.pythonhosted.org/packages/4f/6d/90c9fd2c3c6fee181feecb620d95105370198b6b98a0770cba090441a828/wrapt-1.17.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9a2bce789a5ea90e51a02dfcc39e31b7f1e662bc3317979aa7e5538e3a034f72", size = 81879, upload-time = "2025-01-14T10:33:52.328Z" }, + { url = "https://files.pythonhosted.org/packages/8f/fa/9fb6e594f2ce03ef03eddbdb5f4f90acb1452221a5351116c7c4708ac865/wrapt-1.17.2-cp311-cp311-win32.whl", hash = "sha256:4afd5814270fdf6380616b321fd31435a462019d834f83c8611a0ce7484c7317", size = 36419, upload-time = "2025-01-14T10:33:53.551Z" }, + { url = "https://files.pythonhosted.org/packages/47/f8/fb1773491a253cbc123c5d5dc15c86041f746ed30416535f2a8df1f4a392/wrapt-1.17.2-cp311-cp311-win_amd64.whl", hash = "sha256:acc130bc0375999da18e3d19e5a86403667ac0c4042a094fefb7eec8ebac7cf3", size = 38773, upload-time = "2025-01-14T10:33:56.323Z" }, + { url = "https://files.pythonhosted.org/packages/a1/bd/ab55f849fd1f9a58ed7ea47f5559ff09741b25f00c191231f9f059c83949/wrapt-1.17.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d5e2439eecc762cd85e7bd37161d4714aa03a33c5ba884e26c81559817ca0925", size = 53799, upload-time = "2025-01-14T10:33:57.4Z" }, + { url = "https://files.pythonhosted.org/packages/53/18/75ddc64c3f63988f5a1d7e10fb204ffe5762bc663f8023f18ecaf31a332e/wrapt-1.17.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fc7cb4c1c744f8c05cd5f9438a3caa6ab94ce8344e952d7c45a8ed59dd88392", size = 38821, upload-time = "2025-01-14T10:33:59.334Z" }, + { url = "https://files.pythonhosted.org/packages/48/2a/97928387d6ed1c1ebbfd4efc4133a0633546bec8481a2dd5ec961313a1c7/wrapt-1.17.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fdbdb757d5390f7c675e558fd3186d590973244fab0c5fe63d373ade3e99d40", size = 38919, upload-time = "2025-01-14T10:34:04.093Z" }, + { url = "https://files.pythonhosted.org/packages/73/54/3bfe5a1febbbccb7a2f77de47b989c0b85ed3a6a41614b104204a788c20e/wrapt-1.17.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bb1d0dbf99411f3d871deb6faa9aabb9d4e744d67dcaaa05399af89d847a91d", size = 88721, upload-time = "2025-01-14T10:34:07.163Z" }, + { url = "https://files.pythonhosted.org/packages/25/cb/7262bc1b0300b4b64af50c2720ef958c2c1917525238d661c3e9a2b71b7b/wrapt-1.17.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d18a4865f46b8579d44e4fe1e2bcbc6472ad83d98e22a26c963d46e4c125ef0b", size = 80899, upload-time = "2025-01-14T10:34:09.82Z" }, + { url = "https://files.pythonhosted.org/packages/2a/5a/04cde32b07a7431d4ed0553a76fdb7a61270e78c5fd5a603e190ac389f14/wrapt-1.17.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc570b5f14a79734437cb7b0500376b6b791153314986074486e0b0fa8d71d98", size = 89222, upload-time = "2025-01-14T10:34:11.258Z" }, + { url = "https://files.pythonhosted.org/packages/09/28/2e45a4f4771fcfb109e244d5dbe54259e970362a311b67a965555ba65026/wrapt-1.17.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6d9187b01bebc3875bac9b087948a2bccefe464a7d8f627cf6e48b1bbae30f82", size = 86707, upload-time = "2025-01-14T10:34:12.49Z" }, + { url = "https://files.pythonhosted.org/packages/c6/d2/dcb56bf5f32fcd4bd9aacc77b50a539abdd5b6536872413fd3f428b21bed/wrapt-1.17.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9e8659775f1adf02eb1e6f109751268e493c73716ca5761f8acb695e52a756ae", size = 79685, upload-time = "2025-01-14T10:34:15.043Z" }, + { url = "https://files.pythonhosted.org/packages/80/4e/eb8b353e36711347893f502ce91c770b0b0929f8f0bed2670a6856e667a9/wrapt-1.17.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8b2816ebef96d83657b56306152a93909a83f23994f4b30ad4573b00bd11bb9", size = 87567, upload-time = "2025-01-14T10:34:16.563Z" }, + { url = "https://files.pythonhosted.org/packages/17/27/4fe749a54e7fae6e7146f1c7d914d28ef599dacd4416566c055564080fe2/wrapt-1.17.2-cp312-cp312-win32.whl", hash = "sha256:468090021f391fe0056ad3e807e3d9034e0fd01adcd3bdfba977b6fdf4213ea9", size = 36672, upload-time = "2025-01-14T10:34:17.727Z" }, + { url = "https://files.pythonhosted.org/packages/15/06/1dbf478ea45c03e78a6a8c4be4fdc3c3bddea5c8de8a93bc971415e47f0f/wrapt-1.17.2-cp312-cp312-win_amd64.whl", hash = "sha256:ec89ed91f2fa8e3f52ae53cd3cf640d6feff92ba90d62236a81e4e563ac0e991", size = 38865, upload-time = "2025-01-14T10:34:19.577Z" }, + { url = "https://files.pythonhosted.org/packages/ce/b9/0ffd557a92f3b11d4c5d5e0c5e4ad057bd9eb8586615cdaf901409920b14/wrapt-1.17.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6ed6ffac43aecfe6d86ec5b74b06a5be33d5bb9243d055141e8cabb12aa08125", size = 53800, upload-time = "2025-01-14T10:34:21.571Z" }, + { url = "https://files.pythonhosted.org/packages/c0/ef/8be90a0b7e73c32e550c73cfb2fa09db62234227ece47b0e80a05073b375/wrapt-1.17.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:35621ae4c00e056adb0009f8e86e28eb4a41a4bfa8f9bfa9fca7d343fe94f998", size = 38824, upload-time = "2025-01-14T10:34:22.999Z" }, + { url = "https://files.pythonhosted.org/packages/36/89/0aae34c10fe524cce30fe5fc433210376bce94cf74d05b0d68344c8ba46e/wrapt-1.17.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a604bf7a053f8362d27eb9fefd2097f82600b856d5abe996d623babd067b1ab5", size = 38920, upload-time = "2025-01-14T10:34:25.386Z" }, + { url = "https://files.pythonhosted.org/packages/3b/24/11c4510de906d77e0cfb5197f1b1445d4fec42c9a39ea853d482698ac681/wrapt-1.17.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cbabee4f083b6b4cd282f5b817a867cf0b1028c54d445b7ec7cfe6505057cf8", size = 88690, upload-time = "2025-01-14T10:34:28.058Z" }, + { url = "https://files.pythonhosted.org/packages/71/d7/cfcf842291267bf455b3e266c0c29dcb675b5540ee8b50ba1699abf3af45/wrapt-1.17.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49703ce2ddc220df165bd2962f8e03b84c89fee2d65e1c24a7defff6f988f4d6", size = 80861, upload-time = "2025-01-14T10:34:29.167Z" }, + { url = "https://files.pythonhosted.org/packages/d5/66/5d973e9f3e7370fd686fb47a9af3319418ed925c27d72ce16b791231576d/wrapt-1.17.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8112e52c5822fc4253f3901b676c55ddf288614dc7011634e2719718eaa187dc", size = 89174, upload-time = "2025-01-14T10:34:31.702Z" }, + { url = "https://files.pythonhosted.org/packages/a7/d3/8e17bb70f6ae25dabc1aaf990f86824e4fd98ee9cadf197054e068500d27/wrapt-1.17.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9fee687dce376205d9a494e9c121e27183b2a3df18037f89d69bd7b35bcf59e2", size = 86721, upload-time = "2025-01-14T10:34:32.91Z" }, + { url = "https://files.pythonhosted.org/packages/6f/54/f170dfb278fe1c30d0ff864513cff526d624ab8de3254b20abb9cffedc24/wrapt-1.17.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:18983c537e04d11cf027fbb60a1e8dfd5190e2b60cc27bc0808e653e7b218d1b", size = 79763, upload-time = "2025-01-14T10:34:34.903Z" }, + { url = "https://files.pythonhosted.org/packages/4a/98/de07243751f1c4a9b15c76019250210dd3486ce098c3d80d5f729cba029c/wrapt-1.17.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:703919b1633412ab54bcf920ab388735832fdcb9f9a00ae49387f0fe67dad504", size = 87585, upload-time = "2025-01-14T10:34:36.13Z" }, + { url = "https://files.pythonhosted.org/packages/f9/f0/13925f4bd6548013038cdeb11ee2cbd4e37c30f8bfd5db9e5a2a370d6e20/wrapt-1.17.2-cp313-cp313-win32.whl", hash = "sha256:abbb9e76177c35d4e8568e58650aa6926040d6a9f6f03435b7a522bf1c487f9a", size = 36676, upload-time = "2025-01-14T10:34:37.962Z" }, + { url = "https://files.pythonhosted.org/packages/bf/ae/743f16ef8c2e3628df3ddfd652b7d4c555d12c84b53f3d8218498f4ade9b/wrapt-1.17.2-cp313-cp313-win_amd64.whl", hash = "sha256:69606d7bb691b50a4240ce6b22ebb319c1cfb164e5f6569835058196e0f3a845", size = 38871, upload-time = "2025-01-14T10:34:39.13Z" }, + { url = "https://files.pythonhosted.org/packages/3d/bc/30f903f891a82d402ffb5fda27ec1d621cc97cb74c16fea0b6141f1d4e87/wrapt-1.17.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:4a721d3c943dae44f8e243b380cb645a709ba5bd35d3ad27bc2ed947e9c68192", size = 56312, upload-time = "2025-01-14T10:34:40.604Z" }, + { url = "https://files.pythonhosted.org/packages/8a/04/c97273eb491b5f1c918857cd26f314b74fc9b29224521f5b83f872253725/wrapt-1.17.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:766d8bbefcb9e00c3ac3b000d9acc51f1b399513f44d77dfe0eb026ad7c9a19b", size = 40062, upload-time = "2025-01-14T10:34:45.011Z" }, + { url = "https://files.pythonhosted.org/packages/4e/ca/3b7afa1eae3a9e7fefe499db9b96813f41828b9fdb016ee836c4c379dadb/wrapt-1.17.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e496a8ce2c256da1eb98bd15803a79bee00fc351f5dfb9ea82594a3f058309e0", size = 40155, upload-time = "2025-01-14T10:34:47.25Z" }, + { url = "https://files.pythonhosted.org/packages/89/be/7c1baed43290775cb9030c774bc53c860db140397047cc49aedaf0a15477/wrapt-1.17.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d615e4fe22f4ad3528448c193b218e077656ca9ccb22ce2cb20db730f8d306", size = 113471, upload-time = "2025-01-14T10:34:50.934Z" }, + { url = "https://files.pythonhosted.org/packages/32/98/4ed894cf012b6d6aae5f5cc974006bdeb92f0241775addad3f8cd6ab71c8/wrapt-1.17.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a5aaeff38654462bc4b09023918b7f21790efb807f54c000a39d41d69cf552cb", size = 101208, upload-time = "2025-01-14T10:34:52.297Z" }, + { url = "https://files.pythonhosted.org/packages/ea/fd/0c30f2301ca94e655e5e057012e83284ce8c545df7661a78d8bfca2fac7a/wrapt-1.17.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a7d15bbd2bc99e92e39f49a04653062ee6085c0e18b3b7512a4f2fe91f2d681", size = 109339, upload-time = "2025-01-14T10:34:53.489Z" }, + { url = "https://files.pythonhosted.org/packages/75/56/05d000de894c4cfcb84bcd6b1df6214297b8089a7bd324c21a4765e49b14/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:e3890b508a23299083e065f435a492b5435eba6e304a7114d2f919d400888cc6", size = 110232, upload-time = "2025-01-14T10:34:55.327Z" }, + { url = "https://files.pythonhosted.org/packages/53/f8/c3f6b2cf9b9277fb0813418e1503e68414cd036b3b099c823379c9575e6d/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:8c8b293cd65ad716d13d8dd3624e42e5a19cc2a2f1acc74b30c2c13f15cb61a6", size = 100476, upload-time = "2025-01-14T10:34:58.055Z" }, + { url = "https://files.pythonhosted.org/packages/a7/b1/0bb11e29aa5139d90b770ebbfa167267b1fc548d2302c30c8f7572851738/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4c82b8785d98cdd9fed4cac84d765d234ed3251bd6afe34cb7ac523cb93e8b4f", size = 106377, upload-time = "2025-01-14T10:34:59.3Z" }, + { url = "https://files.pythonhosted.org/packages/6a/e1/0122853035b40b3f333bbb25f1939fc1045e21dd518f7f0922b60c156f7c/wrapt-1.17.2-cp313-cp313t-win32.whl", hash = "sha256:13e6afb7fe71fe7485a4550a8844cc9ffbe263c0f1a1eea569bc7091d4898555", size = 37986, upload-time = "2025-01-14T10:35:00.498Z" }, + { url = "https://files.pythonhosted.org/packages/09/5e/1655cf481e079c1f22d0cabdd4e51733679932718dc23bf2db175f329b76/wrapt-1.17.2-cp313-cp313t-win_amd64.whl", hash = "sha256:eaf675418ed6b3b31c7a989fd007fa7c3be66ce14e5c3b27336383604c9da85c", size = 40750, upload-time = "2025-01-14T10:35:03.378Z" }, + { url = "https://files.pythonhosted.org/packages/8a/f4/6ed2b8f6f1c832933283974839b88ec7c983fd12905e01e97889dadf7559/wrapt-1.17.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:99039fa9e6306880572915728d7f6c24a86ec57b0a83f6b2491e1d8ab0235b9a", size = 53308, upload-time = "2025-01-14T10:35:24.413Z" }, + { url = "https://files.pythonhosted.org/packages/a2/a9/712a53f8f4f4545768ac532619f6e56d5d0364a87b2212531685e89aeef8/wrapt-1.17.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2696993ee1eebd20b8e4ee4356483c4cb696066ddc24bd70bcbb80fa56ff9061", size = 38489, upload-time = "2025-01-14T10:35:26.913Z" }, + { url = "https://files.pythonhosted.org/packages/fa/9b/e172c8f28a489a2888df18f953e2f6cb8d33b1a2e78c9dfc52d8bf6a5ead/wrapt-1.17.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:612dff5db80beef9e649c6d803a8d50c409082f1fedc9dbcdfde2983b2025b82", size = 38776, upload-time = "2025-01-14T10:35:28.183Z" }, + { url = "https://files.pythonhosted.org/packages/cf/cb/7a07b51762dcd59bdbe07aa97f87b3169766cadf240f48d1cbe70a1be9db/wrapt-1.17.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62c2caa1585c82b3f7a7ab56afef7b3602021d6da34fbc1cf234ff139fed3cd9", size = 83050, upload-time = "2025-01-14T10:35:30.645Z" }, + { url = "https://files.pythonhosted.org/packages/a5/51/a42757dd41032afd6d8037617aa3bc6803ba971850733b24dfb7d5c627c4/wrapt-1.17.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c958bcfd59bacc2d0249dcfe575e71da54f9dcf4a8bdf89c4cb9a68a1170d73f", size = 74718, upload-time = "2025-01-14T10:35:32.047Z" }, + { url = "https://files.pythonhosted.org/packages/bf/bb/d552bfe47db02fcfc950fc563073a33500f8108efa5f7b41db2f83a59028/wrapt-1.17.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc78a84e2dfbc27afe4b2bd7c80c8db9bca75cc5b85df52bfe634596a1da846b", size = 82590, upload-time = "2025-01-14T10:35:33.329Z" }, + { url = "https://files.pythonhosted.org/packages/77/99/77b06b3c3c410dbae411105bf22496facf03a5496bfaca8fbcf9da381889/wrapt-1.17.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:ba0f0eb61ef00ea10e00eb53a9129501f52385c44853dbd6c4ad3f403603083f", size = 81462, upload-time = "2025-01-14T10:35:34.933Z" }, + { url = "https://files.pythonhosted.org/packages/2d/21/cf0bd85ae66f92600829ea1de8e1da778e5e9f6e574ccbe74b66db0d95db/wrapt-1.17.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1e1fe0e6ab7775fd842bc39e86f6dcfc4507ab0ffe206093e76d61cde37225c8", size = 74309, upload-time = "2025-01-14T10:35:37.542Z" }, + { url = "https://files.pythonhosted.org/packages/6d/16/112d25e9092398a0dd6fec50ab7ac1b775a0c19b428f049785096067ada9/wrapt-1.17.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:c86563182421896d73858e08e1db93afdd2b947a70064b813d515d66549e15f9", size = 81081, upload-time = "2025-01-14T10:35:38.9Z" }, + { url = "https://files.pythonhosted.org/packages/2b/49/364a615a0cc0872685646c495c7172e4fc7bf1959e3b12a1807a03014e05/wrapt-1.17.2-cp39-cp39-win32.whl", hash = "sha256:f393cda562f79828f38a819f4788641ac7c4085f30f1ce1a68672baa686482bb", size = 36423, upload-time = "2025-01-14T10:35:40.177Z" }, + { url = "https://files.pythonhosted.org/packages/00/ad/5d2c1b34ba3202cd833d9221833e74d6500ce66730974993a8dc9a94fb8c/wrapt-1.17.2-cp39-cp39-win_amd64.whl", hash = "sha256:36ccae62f64235cf8ddb682073a60519426fdd4725524ae38874adf72b5f2aeb", size = 38772, upload-time = "2025-01-14T10:35:42.763Z" }, + { url = "https://files.pythonhosted.org/packages/2d/82/f56956041adef78f849db6b289b282e72b55ab8045a75abad81898c28d19/wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8", size = 23594, upload-time = "2025-01-14T10:35:44.018Z" }, +] + +[[package]] +name = "yarl" +version = "1.20.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "idna" }, + { name = "multidict" }, + { name = "propcache" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3c/fb/efaa23fa4e45537b827620f04cf8f3cd658b76642205162e072703a5b963/yarl-1.20.1.tar.gz", hash = "sha256:d017a4997ee50c91fd5466cef416231bb82177b93b029906cefc542ce14c35ac", size = 186428, upload-time = "2025-06-10T00:46:09.923Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/65/7fed0d774abf47487c64be14e9223749468922817b5e8792b8a64792a1bb/yarl-1.20.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6032e6da6abd41e4acda34d75a816012717000fa6839f37124a47fcefc49bec4", size = 132910, upload-time = "2025-06-10T00:42:31.108Z" }, + { url = "https://files.pythonhosted.org/packages/8a/7b/988f55a52da99df9e56dc733b8e4e5a6ae2090081dc2754fc8fd34e60aa0/yarl-1.20.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2c7b34d804b8cf9b214f05015c4fee2ebe7ed05cf581e7192c06555c71f4446a", size = 90644, upload-time = "2025-06-10T00:42:33.851Z" }, + { url = "https://files.pythonhosted.org/packages/f7/de/30d98f03e95d30c7e3cc093759982d038c8833ec2451001d45ef4854edc1/yarl-1.20.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0c869f2651cc77465f6cd01d938d91a11d9ea5d798738c1dc077f3de0b5e5fed", size = 89322, upload-time = "2025-06-10T00:42:35.688Z" }, + { url = "https://files.pythonhosted.org/packages/e0/7a/f2f314f5ebfe9200724b0b748de2186b927acb334cf964fd312eb86fc286/yarl-1.20.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62915e6688eb4d180d93840cda4110995ad50c459bf931b8b3775b37c264af1e", size = 323786, upload-time = "2025-06-10T00:42:37.817Z" }, + { url = "https://files.pythonhosted.org/packages/15/3f/718d26f189db96d993d14b984ce91de52e76309d0fd1d4296f34039856aa/yarl-1.20.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:41ebd28167bc6af8abb97fec1a399f412eec5fd61a3ccbe2305a18b84fb4ca73", size = 319627, upload-time = "2025-06-10T00:42:39.937Z" }, + { url = "https://files.pythonhosted.org/packages/a5/76/8fcfbf5fa2369157b9898962a4a7d96764b287b085b5b3d9ffae69cdefd1/yarl-1.20.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:21242b4288a6d56f04ea193adde174b7e347ac46ce6bc84989ff7c1b1ecea84e", size = 339149, upload-time = "2025-06-10T00:42:42.627Z" }, + { url = "https://files.pythonhosted.org/packages/3c/95/d7fc301cc4661785967acc04f54a4a42d5124905e27db27bb578aac49b5c/yarl-1.20.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bea21cdae6c7eb02ba02a475f37463abfe0a01f5d7200121b03e605d6a0439f8", size = 333327, upload-time = "2025-06-10T00:42:44.842Z" }, + { url = "https://files.pythonhosted.org/packages/65/94/e21269718349582eee81efc5c1c08ee71c816bfc1585b77d0ec3f58089eb/yarl-1.20.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f8a891e4a22a89f5dde7862994485e19db246b70bb288d3ce73a34422e55b23", size = 326054, upload-time = "2025-06-10T00:42:47.149Z" }, + { url = "https://files.pythonhosted.org/packages/32/ae/8616d1f07853704523519f6131d21f092e567c5af93de7e3e94b38d7f065/yarl-1.20.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dd803820d44c8853a109a34e3660e5a61beae12970da479cf44aa2954019bf70", size = 315035, upload-time = "2025-06-10T00:42:48.852Z" }, + { url = "https://files.pythonhosted.org/packages/48/aa/0ace06280861ef055855333707db5e49c6e3a08840a7ce62682259d0a6c0/yarl-1.20.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b982fa7f74c80d5c0c7b5b38f908971e513380a10fecea528091405f519b9ebb", size = 338962, upload-time = "2025-06-10T00:42:51.024Z" }, + { url = "https://files.pythonhosted.org/packages/20/52/1e9d0e6916f45a8fb50e6844f01cb34692455f1acd548606cbda8134cd1e/yarl-1.20.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:33f29ecfe0330c570d997bcf1afd304377f2e48f61447f37e846a6058a4d33b2", size = 335399, upload-time = "2025-06-10T00:42:53.007Z" }, + { url = "https://files.pythonhosted.org/packages/f2/65/60452df742952c630e82f394cd409de10610481d9043aa14c61bf846b7b1/yarl-1.20.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:835ab2cfc74d5eb4a6a528c57f05688099da41cf4957cf08cad38647e4a83b30", size = 338649, upload-time = "2025-06-10T00:42:54.964Z" }, + { url = "https://files.pythonhosted.org/packages/7b/f5/6cd4ff38dcde57a70f23719a838665ee17079640c77087404c3d34da6727/yarl-1.20.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:46b5e0ccf1943a9a6e766b2c2b8c732c55b34e28be57d8daa2b3c1d1d4009309", size = 358563, upload-time = "2025-06-10T00:42:57.28Z" }, + { url = "https://files.pythonhosted.org/packages/d1/90/c42eefd79d0d8222cb3227bdd51b640c0c1d0aa33fe4cc86c36eccba77d3/yarl-1.20.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:df47c55f7d74127d1b11251fe6397d84afdde0d53b90bedb46a23c0e534f9d24", size = 357609, upload-time = "2025-06-10T00:42:59.055Z" }, + { url = "https://files.pythonhosted.org/packages/03/c8/cea6b232cb4617514232e0f8a718153a95b5d82b5290711b201545825532/yarl-1.20.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:76d12524d05841276b0e22573f28d5fbcb67589836772ae9244d90dd7d66aa13", size = 350224, upload-time = "2025-06-10T00:43:01.248Z" }, + { url = "https://files.pythonhosted.org/packages/ce/a3/eaa0ab9712f1f3d01faf43cf6f1f7210ce4ea4a7e9b28b489a2261ca8db9/yarl-1.20.1-cp310-cp310-win32.whl", hash = "sha256:6c4fbf6b02d70e512d7ade4b1f998f237137f1417ab07ec06358ea04f69134f8", size = 81753, upload-time = "2025-06-10T00:43:03.486Z" }, + { url = "https://files.pythonhosted.org/packages/8f/34/e4abde70a9256465fe31c88ed02c3f8502b7b5dead693a4f350a06413f28/yarl-1.20.1-cp310-cp310-win_amd64.whl", hash = "sha256:aef6c4d69554d44b7f9d923245f8ad9a707d971e6209d51279196d8e8fe1ae16", size = 86817, upload-time = "2025-06-10T00:43:05.231Z" }, + { url = "https://files.pythonhosted.org/packages/b1/18/893b50efc2350e47a874c5c2d67e55a0ea5df91186b2a6f5ac52eff887cd/yarl-1.20.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:47ee6188fea634bdfaeb2cc420f5b3b17332e6225ce88149a17c413c77ff269e", size = 133833, upload-time = "2025-06-10T00:43:07.393Z" }, + { url = "https://files.pythonhosted.org/packages/89/ed/b8773448030e6fc47fa797f099ab9eab151a43a25717f9ac043844ad5ea3/yarl-1.20.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d0f6500f69e8402d513e5eedb77a4e1818691e8f45e6b687147963514d84b44b", size = 91070, upload-time = "2025-06-10T00:43:09.538Z" }, + { url = "https://files.pythonhosted.org/packages/e3/e3/409bd17b1e42619bf69f60e4f031ce1ccb29bd7380117a55529e76933464/yarl-1.20.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7a8900a42fcdaad568de58887c7b2f602962356908eedb7628eaf6021a6e435b", size = 89818, upload-time = "2025-06-10T00:43:11.575Z" }, + { url = "https://files.pythonhosted.org/packages/f8/77/64d8431a4d77c856eb2d82aa3de2ad6741365245a29b3a9543cd598ed8c5/yarl-1.20.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bad6d131fda8ef508b36be3ece16d0902e80b88ea7200f030a0f6c11d9e508d4", size = 347003, upload-time = "2025-06-10T00:43:14.088Z" }, + { url = "https://files.pythonhosted.org/packages/8d/d2/0c7e4def093dcef0bd9fa22d4d24b023788b0a33b8d0088b51aa51e21e99/yarl-1.20.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:df018d92fe22aaebb679a7f89fe0c0f368ec497e3dda6cb81a567610f04501f1", size = 336537, upload-time = "2025-06-10T00:43:16.431Z" }, + { url = "https://files.pythonhosted.org/packages/f0/f3/fc514f4b2cf02cb59d10cbfe228691d25929ce8f72a38db07d3febc3f706/yarl-1.20.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f969afbb0a9b63c18d0feecf0db09d164b7a44a053e78a7d05f5df163e43833", size = 362358, upload-time = "2025-06-10T00:43:18.704Z" }, + { url = "https://files.pythonhosted.org/packages/ea/6d/a313ac8d8391381ff9006ac05f1d4331cee3b1efaa833a53d12253733255/yarl-1.20.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:812303eb4aa98e302886ccda58d6b099e3576b1b9276161469c25803a8db277d", size = 357362, upload-time = "2025-06-10T00:43:20.888Z" }, + { url = "https://files.pythonhosted.org/packages/00/70/8f78a95d6935a70263d46caa3dd18e1f223cf2f2ff2037baa01a22bc5b22/yarl-1.20.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98c4a7d166635147924aa0bf9bfe8d8abad6fffa6102de9c99ea04a1376f91e8", size = 348979, upload-time = "2025-06-10T00:43:23.169Z" }, + { url = "https://files.pythonhosted.org/packages/cb/05/42773027968968f4f15143553970ee36ead27038d627f457cc44bbbeecf3/yarl-1.20.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:12e768f966538e81e6e7550f9086a6236b16e26cd964cf4df35349970f3551cf", size = 337274, upload-time = "2025-06-10T00:43:27.111Z" }, + { url = "https://files.pythonhosted.org/packages/05/be/665634aa196954156741ea591d2f946f1b78ceee8bb8f28488bf28c0dd62/yarl-1.20.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:fe41919b9d899661c5c28a8b4b0acf704510b88f27f0934ac7a7bebdd8938d5e", size = 363294, upload-time = "2025-06-10T00:43:28.96Z" }, + { url = "https://files.pythonhosted.org/packages/eb/90/73448401d36fa4e210ece5579895731f190d5119c4b66b43b52182e88cd5/yarl-1.20.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:8601bc010d1d7780592f3fc1bdc6c72e2b6466ea34569778422943e1a1f3c389", size = 358169, upload-time = "2025-06-10T00:43:30.701Z" }, + { url = "https://files.pythonhosted.org/packages/c3/b0/fce922d46dc1eb43c811f1889f7daa6001b27a4005587e94878570300881/yarl-1.20.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:daadbdc1f2a9033a2399c42646fbd46da7992e868a5fe9513860122d7fe7a73f", size = 362776, upload-time = "2025-06-10T00:43:32.51Z" }, + { url = "https://files.pythonhosted.org/packages/f1/0d/b172628fce039dae8977fd22caeff3eeebffd52e86060413f5673767c427/yarl-1.20.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:03aa1e041727cb438ca762628109ef1333498b122e4c76dd858d186a37cec845", size = 381341, upload-time = "2025-06-10T00:43:34.543Z" }, + { url = "https://files.pythonhosted.org/packages/6b/9b/5b886d7671f4580209e855974fe1cecec409aa4a89ea58b8f0560dc529b1/yarl-1.20.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:642980ef5e0fa1de5fa96d905c7e00cb2c47cb468bfcac5a18c58e27dbf8d8d1", size = 379988, upload-time = "2025-06-10T00:43:36.489Z" }, + { url = "https://files.pythonhosted.org/packages/73/be/75ef5fd0fcd8f083a5d13f78fd3f009528132a1f2a1d7c925c39fa20aa79/yarl-1.20.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:86971e2795584fe8c002356d3b97ef6c61862720eeff03db2a7c86b678d85b3e", size = 371113, upload-time = "2025-06-10T00:43:38.592Z" }, + { url = "https://files.pythonhosted.org/packages/50/4f/62faab3b479dfdcb741fe9e3f0323e2a7d5cd1ab2edc73221d57ad4834b2/yarl-1.20.1-cp311-cp311-win32.whl", hash = "sha256:597f40615b8d25812f14562699e287f0dcc035d25eb74da72cae043bb884d773", size = 81485, upload-time = "2025-06-10T00:43:41.038Z" }, + { url = "https://files.pythonhosted.org/packages/f0/09/d9c7942f8f05c32ec72cd5c8e041c8b29b5807328b68b4801ff2511d4d5e/yarl-1.20.1-cp311-cp311-win_amd64.whl", hash = "sha256:26ef53a9e726e61e9cd1cda6b478f17e350fb5800b4bd1cd9fe81c4d91cfeb2e", size = 86686, upload-time = "2025-06-10T00:43:42.692Z" }, + { url = "https://files.pythonhosted.org/packages/5f/9a/cb7fad7d73c69f296eda6815e4a2c7ed53fc70c2f136479a91c8e5fbdb6d/yarl-1.20.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdcc4cd244e58593a4379fe60fdee5ac0331f8eb70320a24d591a3be197b94a9", size = 133667, upload-time = "2025-06-10T00:43:44.369Z" }, + { url = "https://files.pythonhosted.org/packages/67/38/688577a1cb1e656e3971fb66a3492501c5a5df56d99722e57c98249e5b8a/yarl-1.20.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b29a2c385a5f5b9c7d9347e5812b6f7ab267193c62d282a540b4fc528c8a9d2a", size = 91025, upload-time = "2025-06-10T00:43:46.295Z" }, + { url = "https://files.pythonhosted.org/packages/50/ec/72991ae51febeb11a42813fc259f0d4c8e0507f2b74b5514618d8b640365/yarl-1.20.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1112ae8154186dfe2de4732197f59c05a83dc814849a5ced892b708033f40dc2", size = 89709, upload-time = "2025-06-10T00:43:48.22Z" }, + { url = "https://files.pythonhosted.org/packages/99/da/4d798025490e89426e9f976702e5f9482005c548c579bdae792a4c37769e/yarl-1.20.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:90bbd29c4fe234233f7fa2b9b121fb63c321830e5d05b45153a2ca68f7d310ee", size = 352287, upload-time = "2025-06-10T00:43:49.924Z" }, + { url = "https://files.pythonhosted.org/packages/1a/26/54a15c6a567aac1c61b18aa0f4b8aa2e285a52d547d1be8bf48abe2b3991/yarl-1.20.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:680e19c7ce3710ac4cd964e90dad99bf9b5029372ba0c7cbfcd55e54d90ea819", size = 345429, upload-time = "2025-06-10T00:43:51.7Z" }, + { url = "https://files.pythonhosted.org/packages/d6/95/9dcf2386cb875b234353b93ec43e40219e14900e046bf6ac118f94b1e353/yarl-1.20.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4a979218c1fdb4246a05efc2cc23859d47c89af463a90b99b7c56094daf25a16", size = 365429, upload-time = "2025-06-10T00:43:53.494Z" }, + { url = "https://files.pythonhosted.org/packages/91/b2/33a8750f6a4bc224242a635f5f2cff6d6ad5ba651f6edcccf721992c21a0/yarl-1.20.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255b468adf57b4a7b65d8aad5b5138dce6a0752c139965711bdcb81bc370e1b6", size = 363862, upload-time = "2025-06-10T00:43:55.766Z" }, + { url = "https://files.pythonhosted.org/packages/98/28/3ab7acc5b51f4434b181b0cee8f1f4b77a65919700a355fb3617f9488874/yarl-1.20.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a97d67108e79cfe22e2b430d80d7571ae57d19f17cda8bb967057ca8a7bf5bfd", size = 355616, upload-time = "2025-06-10T00:43:58.056Z" }, + { url = "https://files.pythonhosted.org/packages/36/a3/f666894aa947a371724ec7cd2e5daa78ee8a777b21509b4252dd7bd15e29/yarl-1.20.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8570d998db4ddbfb9a590b185a0a33dbf8aafb831d07a5257b4ec9948df9cb0a", size = 339954, upload-time = "2025-06-10T00:43:59.773Z" }, + { url = "https://files.pythonhosted.org/packages/f1/81/5f466427e09773c04219d3450d7a1256138a010b6c9f0af2d48565e9ad13/yarl-1.20.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:97c75596019baae7c71ccf1d8cc4738bc08134060d0adfcbe5642f778d1dca38", size = 365575, upload-time = "2025-06-10T00:44:02.051Z" }, + { url = "https://files.pythonhosted.org/packages/2e/e3/e4b0ad8403e97e6c9972dd587388940a032f030ebec196ab81a3b8e94d31/yarl-1.20.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:1c48912653e63aef91ff988c5432832692ac5a1d8f0fb8a33091520b5bbe19ef", size = 365061, upload-time = "2025-06-10T00:44:04.196Z" }, + { url = "https://files.pythonhosted.org/packages/ac/99/b8a142e79eb86c926f9f06452eb13ecb1bb5713bd01dc0038faf5452e544/yarl-1.20.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4c3ae28f3ae1563c50f3d37f064ddb1511ecc1d5584e88c6b7c63cf7702a6d5f", size = 364142, upload-time = "2025-06-10T00:44:06.527Z" }, + { url = "https://files.pythonhosted.org/packages/34/f2/08ed34a4a506d82a1a3e5bab99ccd930a040f9b6449e9fd050320e45845c/yarl-1.20.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c5e9642f27036283550f5f57dc6156c51084b458570b9d0d96100c8bebb186a8", size = 381894, upload-time = "2025-06-10T00:44:08.379Z" }, + { url = "https://files.pythonhosted.org/packages/92/f8/9a3fbf0968eac704f681726eff595dce9b49c8a25cd92bf83df209668285/yarl-1.20.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:2c26b0c49220d5799f7b22c6838409ee9bc58ee5c95361a4d7831f03cc225b5a", size = 383378, upload-time = "2025-06-10T00:44:10.51Z" }, + { url = "https://files.pythonhosted.org/packages/af/85/9363f77bdfa1e4d690957cd39d192c4cacd1c58965df0470a4905253b54f/yarl-1.20.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:564ab3d517e3d01c408c67f2e5247aad4019dcf1969982aba3974b4093279004", size = 374069, upload-time = "2025-06-10T00:44:12.834Z" }, + { url = "https://files.pythonhosted.org/packages/35/99/9918c8739ba271dcd935400cff8b32e3cd319eaf02fcd023d5dcd487a7c8/yarl-1.20.1-cp312-cp312-win32.whl", hash = "sha256:daea0d313868da1cf2fac6b2d3a25c6e3a9e879483244be38c8e6a41f1d876a5", size = 81249, upload-time = "2025-06-10T00:44:14.731Z" }, + { url = "https://files.pythonhosted.org/packages/eb/83/5d9092950565481b413b31a23e75dd3418ff0a277d6e0abf3729d4d1ce25/yarl-1.20.1-cp312-cp312-win_amd64.whl", hash = "sha256:48ea7d7f9be0487339828a4de0360d7ce0efc06524a48e1810f945c45b813698", size = 86710, upload-time = "2025-06-10T00:44:16.716Z" }, + { url = "https://files.pythonhosted.org/packages/8a/e1/2411b6d7f769a07687acee88a062af5833cf1966b7266f3d8dfb3d3dc7d3/yarl-1.20.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:0b5ff0fbb7c9f1b1b5ab53330acbfc5247893069e7716840c8e7d5bb7355038a", size = 131811, upload-time = "2025-06-10T00:44:18.933Z" }, + { url = "https://files.pythonhosted.org/packages/b2/27/584394e1cb76fb771371770eccad35de400e7b434ce3142c2dd27392c968/yarl-1.20.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:14f326acd845c2b2e2eb38fb1346c94f7f3b01a4f5c788f8144f9b630bfff9a3", size = 90078, upload-time = "2025-06-10T00:44:20.635Z" }, + { url = "https://files.pythonhosted.org/packages/bf/9a/3246ae92d4049099f52d9b0fe3486e3b500e29b7ea872d0f152966fc209d/yarl-1.20.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f60e4ad5db23f0b96e49c018596707c3ae89f5d0bd97f0ad3684bcbad899f1e7", size = 88748, upload-time = "2025-06-10T00:44:22.34Z" }, + { url = "https://files.pythonhosted.org/packages/a3/25/35afe384e31115a1a801fbcf84012d7a066d89035befae7c5d4284df1e03/yarl-1.20.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:49bdd1b8e00ce57e68ba51916e4bb04461746e794e7c4d4bbc42ba2f18297691", size = 349595, upload-time = "2025-06-10T00:44:24.314Z" }, + { url = "https://files.pythonhosted.org/packages/28/2d/8aca6cb2cabc8f12efcb82749b9cefecbccfc7b0384e56cd71058ccee433/yarl-1.20.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:66252d780b45189975abfed839616e8fd2dbacbdc262105ad7742c6ae58f3e31", size = 342616, upload-time = "2025-06-10T00:44:26.167Z" }, + { url = "https://files.pythonhosted.org/packages/0b/e9/1312633d16b31acf0098d30440ca855e3492d66623dafb8e25b03d00c3da/yarl-1.20.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59174e7332f5d153d8f7452a102b103e2e74035ad085f404df2e40e663a22b28", size = 361324, upload-time = "2025-06-10T00:44:27.915Z" }, + { url = "https://files.pythonhosted.org/packages/bc/a0/688cc99463f12f7669eec7c8acc71ef56a1521b99eab7cd3abb75af887b0/yarl-1.20.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e3968ec7d92a0c0f9ac34d5ecfd03869ec0cab0697c91a45db3fbbd95fe1b653", size = 359676, upload-time = "2025-06-10T00:44:30.041Z" }, + { url = "https://files.pythonhosted.org/packages/af/44/46407d7f7a56e9a85a4c207724c9f2c545c060380718eea9088f222ba697/yarl-1.20.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d1a4fbb50e14396ba3d375f68bfe02215d8e7bc3ec49da8341fe3157f59d2ff5", size = 352614, upload-time = "2025-06-10T00:44:32.171Z" }, + { url = "https://files.pythonhosted.org/packages/b1/91/31163295e82b8d5485d31d9cf7754d973d41915cadce070491778d9c9825/yarl-1.20.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11a62c839c3a8eac2410e951301309426f368388ff2f33799052787035793b02", size = 336766, upload-time = "2025-06-10T00:44:34.494Z" }, + { url = "https://files.pythonhosted.org/packages/b4/8e/c41a5bc482121f51c083c4c2bcd16b9e01e1cf8729e380273a952513a21f/yarl-1.20.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:041eaa14f73ff5a8986b4388ac6bb43a77f2ea09bf1913df7a35d4646db69e53", size = 364615, upload-time = "2025-06-10T00:44:36.856Z" }, + { url = "https://files.pythonhosted.org/packages/e3/5b/61a3b054238d33d70ea06ebba7e58597891b71c699e247df35cc984ab393/yarl-1.20.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:377fae2fef158e8fd9d60b4c8751387b8d1fb121d3d0b8e9b0be07d1b41e83dc", size = 360982, upload-time = "2025-06-10T00:44:39.141Z" }, + { url = "https://files.pythonhosted.org/packages/df/a3/6a72fb83f8d478cb201d14927bc8040af901811a88e0ff2da7842dd0ed19/yarl-1.20.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:1c92f4390e407513f619d49319023664643d3339bd5e5a56a3bebe01bc67ec04", size = 369792, upload-time = "2025-06-10T00:44:40.934Z" }, + { url = "https://files.pythonhosted.org/packages/7c/af/4cc3c36dfc7c077f8dedb561eb21f69e1e9f2456b91b593882b0b18c19dc/yarl-1.20.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:d25ddcf954df1754ab0f86bb696af765c5bfaba39b74095f27eececa049ef9a4", size = 382049, upload-time = "2025-06-10T00:44:42.854Z" }, + { url = "https://files.pythonhosted.org/packages/19/3a/e54e2c4752160115183a66dc9ee75a153f81f3ab2ba4bf79c3c53b33de34/yarl-1.20.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:909313577e9619dcff8c31a0ea2aa0a2a828341d92673015456b3ae492e7317b", size = 384774, upload-time = "2025-06-10T00:44:45.275Z" }, + { url = "https://files.pythonhosted.org/packages/9c/20/200ae86dabfca89060ec6447649f219b4cbd94531e425e50d57e5f5ac330/yarl-1.20.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:793fd0580cb9664548c6b83c63b43c477212c0260891ddf86809e1c06c8b08f1", size = 374252, upload-time = "2025-06-10T00:44:47.31Z" }, + { url = "https://files.pythonhosted.org/packages/83/75/11ee332f2f516b3d094e89448da73d557687f7d137d5a0f48c40ff211487/yarl-1.20.1-cp313-cp313-win32.whl", hash = "sha256:468f6e40285de5a5b3c44981ca3a319a4b208ccc07d526b20b12aeedcfa654b7", size = 81198, upload-time = "2025-06-10T00:44:49.164Z" }, + { url = "https://files.pythonhosted.org/packages/ba/ba/39b1ecbf51620b40ab402b0fc817f0ff750f6d92712b44689c2c215be89d/yarl-1.20.1-cp313-cp313-win_amd64.whl", hash = "sha256:495b4ef2fea40596bfc0affe3837411d6aa3371abcf31aac0ccc4bdd64d4ef5c", size = 86346, upload-time = "2025-06-10T00:44:51.182Z" }, + { url = "https://files.pythonhosted.org/packages/43/c7/669c52519dca4c95153c8ad96dd123c79f354a376346b198f438e56ffeb4/yarl-1.20.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:f60233b98423aab21d249a30eb27c389c14929f47be8430efa7dbd91493a729d", size = 138826, upload-time = "2025-06-10T00:44:52.883Z" }, + { url = "https://files.pythonhosted.org/packages/6a/42/fc0053719b44f6ad04a75d7f05e0e9674d45ef62f2d9ad2c1163e5c05827/yarl-1.20.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:6f3eff4cc3f03d650d8755c6eefc844edde99d641d0dcf4da3ab27141a5f8ddf", size = 93217, upload-time = "2025-06-10T00:44:54.658Z" }, + { url = "https://files.pythonhosted.org/packages/4f/7f/fa59c4c27e2a076bba0d959386e26eba77eb52ea4a0aac48e3515c186b4c/yarl-1.20.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:69ff8439d8ba832d6bed88af2c2b3445977eba9a4588b787b32945871c2444e3", size = 92700, upload-time = "2025-06-10T00:44:56.784Z" }, + { url = "https://files.pythonhosted.org/packages/2f/d4/062b2f48e7c93481e88eff97a6312dca15ea200e959f23e96d8ab898c5b8/yarl-1.20.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3cf34efa60eb81dd2645a2e13e00bb98b76c35ab5061a3989c7a70f78c85006d", size = 347644, upload-time = "2025-06-10T00:44:59.071Z" }, + { url = "https://files.pythonhosted.org/packages/89/47/78b7f40d13c8f62b499cc702fdf69e090455518ae544c00a3bf4afc9fc77/yarl-1.20.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:8e0fe9364ad0fddab2688ce72cb7a8e61ea42eff3c7caeeb83874a5d479c896c", size = 323452, upload-time = "2025-06-10T00:45:01.605Z" }, + { url = "https://files.pythonhosted.org/packages/eb/2b/490d3b2dc66f52987d4ee0d3090a147ea67732ce6b4d61e362c1846d0d32/yarl-1.20.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f64fbf81878ba914562c672024089e3401974a39767747691c65080a67b18c1", size = 346378, upload-time = "2025-06-10T00:45:03.946Z" }, + { url = "https://files.pythonhosted.org/packages/66/ad/775da9c8a94ce925d1537f939a4f17d782efef1f973039d821cbe4bcc211/yarl-1.20.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f6342d643bf9a1de97e512e45e4b9560a043347e779a173250824f8b254bd5ce", size = 353261, upload-time = "2025-06-10T00:45:05.992Z" }, + { url = "https://files.pythonhosted.org/packages/4b/23/0ed0922b47a4f5c6eb9065d5ff1e459747226ddce5c6a4c111e728c9f701/yarl-1.20.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56dac5f452ed25eef0f6e3c6a066c6ab68971d96a9fb441791cad0efba6140d3", size = 335987, upload-time = "2025-06-10T00:45:08.227Z" }, + { url = "https://files.pythonhosted.org/packages/3e/49/bc728a7fe7d0e9336e2b78f0958a2d6b288ba89f25a1762407a222bf53c3/yarl-1.20.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7d7f497126d65e2cad8dc5f97d34c27b19199b6414a40cb36b52f41b79014be", size = 329361, upload-time = "2025-06-10T00:45:10.11Z" }, + { url = "https://files.pythonhosted.org/packages/93/8f/b811b9d1f617c83c907e7082a76e2b92b655400e61730cd61a1f67178393/yarl-1.20.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:67e708dfb8e78d8a19169818eeb5c7a80717562de9051bf2413aca8e3696bf16", size = 346460, upload-time = "2025-06-10T00:45:12.055Z" }, + { url = "https://files.pythonhosted.org/packages/70/fd/af94f04f275f95da2c3b8b5e1d49e3e79f1ed8b6ceb0f1664cbd902773ff/yarl-1.20.1-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:595c07bc79af2494365cc96ddeb772f76272364ef7c80fb892ef9d0649586513", size = 334486, upload-time = "2025-06-10T00:45:13.995Z" }, + { url = "https://files.pythonhosted.org/packages/84/65/04c62e82704e7dd0a9b3f61dbaa8447f8507655fd16c51da0637b39b2910/yarl-1.20.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:7bdd2f80f4a7df852ab9ab49484a4dee8030023aa536df41f2d922fd57bf023f", size = 342219, upload-time = "2025-06-10T00:45:16.479Z" }, + { url = "https://files.pythonhosted.org/packages/91/95/459ca62eb958381b342d94ab9a4b6aec1ddec1f7057c487e926f03c06d30/yarl-1.20.1-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:c03bfebc4ae8d862f853a9757199677ab74ec25424d0ebd68a0027e9c639a390", size = 350693, upload-time = "2025-06-10T00:45:18.399Z" }, + { url = "https://files.pythonhosted.org/packages/a6/00/d393e82dd955ad20617abc546a8f1aee40534d599ff555ea053d0ec9bf03/yarl-1.20.1-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:344d1103e9c1523f32a5ed704d576172d2cabed3122ea90b1d4e11fe17c66458", size = 355803, upload-time = "2025-06-10T00:45:20.677Z" }, + { url = "https://files.pythonhosted.org/packages/9e/ed/c5fb04869b99b717985e244fd93029c7a8e8febdfcffa06093e32d7d44e7/yarl-1.20.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:88cab98aa4e13e1ade8c141daeedd300a4603b7132819c484841bb7af3edce9e", size = 341709, upload-time = "2025-06-10T00:45:23.221Z" }, + { url = "https://files.pythonhosted.org/packages/24/fd/725b8e73ac2a50e78a4534ac43c6addf5c1c2d65380dd48a9169cc6739a9/yarl-1.20.1-cp313-cp313t-win32.whl", hash = "sha256:b121ff6a7cbd4abc28985b6028235491941b9fe8fe226e6fdc539c977ea1739d", size = 86591, upload-time = "2025-06-10T00:45:25.793Z" }, + { url = "https://files.pythonhosted.org/packages/94/c3/b2e9f38bc3e11191981d57ea08cab2166e74ea770024a646617c9cddd9f6/yarl-1.20.1-cp313-cp313t-win_amd64.whl", hash = "sha256:541d050a355bbbc27e55d906bc91cb6fe42f96c01413dd0f4ed5a5240513874f", size = 93003, upload-time = "2025-06-10T00:45:27.752Z" }, + { url = "https://files.pythonhosted.org/packages/01/75/0d37402d208d025afa6b5b8eb80e466d267d3fd1927db8e317d29a94a4cb/yarl-1.20.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e42ba79e2efb6845ebab49c7bf20306c4edf74a0b20fc6b2ccdd1a219d12fad3", size = 134259, upload-time = "2025-06-10T00:45:29.882Z" }, + { url = "https://files.pythonhosted.org/packages/73/84/1fb6c85ae0cf9901046f07d0ac9eb162f7ce6d95db541130aa542ed377e6/yarl-1.20.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:41493b9b7c312ac448b7f0a42a089dffe1d6e6e981a2d76205801a023ed26a2b", size = 91269, upload-time = "2025-06-10T00:45:32.917Z" }, + { url = "https://files.pythonhosted.org/packages/f3/9c/eae746b24c4ea29a5accba9a06c197a70fa38a49c7df244e0d3951108861/yarl-1.20.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f5a5928ff5eb13408c62a968ac90d43f8322fd56d87008b8f9dabf3c0f6ee983", size = 89995, upload-time = "2025-06-10T00:45:35.066Z" }, + { url = "https://files.pythonhosted.org/packages/fb/30/693e71003ec4bc1daf2e4cf7c478c417d0985e0a8e8f00b2230d517876fc/yarl-1.20.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30c41ad5d717b3961b2dd785593b67d386b73feca30522048d37298fee981805", size = 325253, upload-time = "2025-06-10T00:45:37.052Z" }, + { url = "https://files.pythonhosted.org/packages/0f/a2/5264dbebf90763139aeb0b0b3154763239398400f754ae19a0518b654117/yarl-1.20.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:59febc3969b0781682b469d4aca1a5cab7505a4f7b85acf6db01fa500fa3f6ba", size = 320897, upload-time = "2025-06-10T00:45:39.962Z" }, + { url = "https://files.pythonhosted.org/packages/e7/17/77c7a89b3c05856489777e922f41db79ab4faf58621886df40d812c7facd/yarl-1.20.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d2b6fb3622b7e5bf7a6e5b679a69326b4279e805ed1699d749739a61d242449e", size = 340696, upload-time = "2025-06-10T00:45:41.915Z" }, + { url = "https://files.pythonhosted.org/packages/6d/55/28409330b8ef5f2f681f5b478150496ec9cf3309b149dab7ec8ab5cfa3f0/yarl-1.20.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:749d73611db8d26a6281086f859ea7ec08f9c4c56cec864e52028c8b328db723", size = 335064, upload-time = "2025-06-10T00:45:43.893Z" }, + { url = "https://files.pythonhosted.org/packages/85/58/cb0257cbd4002828ff735f44d3c5b6966c4fd1fc8cc1cd3cd8a143fbc513/yarl-1.20.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9427925776096e664c39e131447aa20ec738bdd77c049c48ea5200db2237e000", size = 327256, upload-time = "2025-06-10T00:45:46.393Z" }, + { url = "https://files.pythonhosted.org/packages/53/f6/c77960370cfa46f6fb3d6a5a79a49d3abfdb9ef92556badc2dcd2748bc2a/yarl-1.20.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff70f32aa316393eaf8222d518ce9118148eddb8a53073c2403863b41033eed5", size = 316389, upload-time = "2025-06-10T00:45:48.358Z" }, + { url = "https://files.pythonhosted.org/packages/64/ab/be0b10b8e029553c10905b6b00c64ecad3ebc8ace44b02293a62579343f6/yarl-1.20.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:c7ddf7a09f38667aea38801da8b8d6bfe81df767d9dfc8c88eb45827b195cd1c", size = 340481, upload-time = "2025-06-10T00:45:50.663Z" }, + { url = "https://files.pythonhosted.org/packages/c5/c3/3f327bd3905a4916029bf5feb7f86dcf864c7704f099715f62155fb386b2/yarl-1.20.1-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:57edc88517d7fc62b174fcfb2e939fbc486a68315d648d7e74d07fac42cec240", size = 336941, upload-time = "2025-06-10T00:45:52.554Z" }, + { url = "https://files.pythonhosted.org/packages/d1/42/040bdd5d3b3bb02b4a6ace4ed4075e02f85df964d6e6cb321795d2a6496a/yarl-1.20.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:dab096ce479d5894d62c26ff4f699ec9072269d514b4edd630a393223f45a0ee", size = 339936, upload-time = "2025-06-10T00:45:54.919Z" }, + { url = "https://files.pythonhosted.org/packages/0d/1c/911867b8e8c7463b84dfdc275e0d99b04b66ad5132b503f184fe76be8ea4/yarl-1.20.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:14a85f3bd2d7bb255be7183e5d7d6e70add151a98edf56a770d6140f5d5f4010", size = 360163, upload-time = "2025-06-10T00:45:56.87Z" }, + { url = "https://files.pythonhosted.org/packages/e2/31/8c389f6c6ca0379b57b2da87f1f126c834777b4931c5ee8427dd65d0ff6b/yarl-1.20.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:2c89b5c792685dd9cd3fa9761c1b9f46fc240c2a3265483acc1565769996a3f8", size = 359108, upload-time = "2025-06-10T00:45:58.869Z" }, + { url = "https://files.pythonhosted.org/packages/7f/09/ae4a649fb3964324c70a3e2b61f45e566d9ffc0affd2b974cbf628957673/yarl-1.20.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:69e9b141de5511021942a6866990aea6d111c9042235de90e08f94cf972ca03d", size = 351875, upload-time = "2025-06-10T00:46:01.45Z" }, + { url = "https://files.pythonhosted.org/packages/8d/43/bbb4ed4c34d5bb62b48bf957f68cd43f736f79059d4f85225ab1ef80f4b9/yarl-1.20.1-cp39-cp39-win32.whl", hash = "sha256:b5f307337819cdfdbb40193cad84978a029f847b0a357fbe49f712063cfc4f06", size = 82293, upload-time = "2025-06-10T00:46:03.763Z" }, + { url = "https://files.pythonhosted.org/packages/d7/cd/ce185848a7dba68ea69e932674b5c1a42a1852123584bccc5443120f857c/yarl-1.20.1-cp39-cp39-win_amd64.whl", hash = "sha256:eae7bfe2069f9c1c5b05fc7fe5d612e5bbc089a39309904ee8b829e322dcad00", size = 87385, upload-time = "2025-06-10T00:46:05.655Z" }, + { url = "https://files.pythonhosted.org/packages/b4/2d/2345fce04cfd4bee161bf1e7d9cdc702e3e16109021035dbb24db654a622/yarl-1.20.1-py3-none-any.whl", hash = "sha256:83b8eb083fe4683c6115795d9fc1cfaf2cbbefb19b3a1cb68f6527460f483a77", size = 46542, upload-time = "2025-06-10T00:46:07.521Z" }, +] + [[package]] name = "zipp" version = "3.23.0" From 1d2fe6d0ae51a53096960257e60fc8135a3b2b2f Mon Sep 17 00:00:00 2001 From: Nathaniel Chen Date: Tue, 15 Jul 2025 13:44:30 -0400 Subject: [PATCH 048/103] Implement singleton logger class for FusionAIHub --- src/faith/util/__init__.py | 0 src/faith/util/logging.py | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 src/faith/util/__init__.py create mode 100644 src/faith/util/logging.py diff --git a/src/faith/util/__init__.py b/src/faith/util/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/faith/util/logging.py b/src/faith/util/logging.py new file mode 100644 index 0000000..1d07d69 --- /dev/null +++ b/src/faith/util/logging.py @@ -0,0 +1,38 @@ +import logging +from threading import Lock + +class Logger: + _instance = None + _lock = Lock() + + def __new__(cls, *args, **kwargs): + if not cls._instance: + with cls._lock: + if not cls._instance: + cls._instance = super(Logger, cls).__new__(cls, *args, **kwargs) + cls._instance._initialize() + return cls._instance + + def _initialize(self): + self.logger = logging.getLogger("FusionAIHubLogger") + self.logger.setLevel(logging.DEBUG) + + # Create console handler + console_handler = logging.StreamHandler() + console_handler.setLevel(logging.DEBUG) + + # Create formatter and add it to the handler + formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') + console_handler.setFormatter(formatter) + + # Add the handler to the logger + self.logger.addHandler(console_handler) + + def get_logger(self): + return self.logger + +logger = Logger() + +# Usage example: +# logger = Logger().get_logger() +# logger.info("This is a singleton logger.") \ No newline at end of file From cff14969b89bfead4298f8d5c8002cc805e0b478 Mon Sep 17 00:00:00 2001 From: Nathaniel Chen <79379842+nathanchenseanwalter@users.noreply.github.com> Date: Tue, 15 Jul 2025 14:28:42 -0400 Subject: [PATCH 049/103] Revert "Dev nathan" --- pyproject.toml | 4 +- src/faith/util/__init__.py | 0 src/faith/util/logging.py | 38 - uv.lock | 3241 ++---------------------------------- 4 files changed, 171 insertions(+), 3112 deletions(-) delete mode 100644 src/faith/util/__init__.py delete mode 100644 src/faith/util/logging.py diff --git a/pyproject.toml b/pyproject.toml index c0c311d..69ff4d7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,5 @@ [project] -name = "faith" +name = "Fusion Artificial InTelligence Hub" version = "0.0.1-alpha" authors = [ { name = "Peter Steiner", email = "peter.steiner@princeton.edu" }, @@ -37,8 +37,6 @@ dependencies = [ "tables", "pyyaml", "jupyter", - "hydra-core", - "omegaconf", ] [tool.uv.sources] diff --git a/src/faith/util/__init__.py b/src/faith/util/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/src/faith/util/logging.py b/src/faith/util/logging.py deleted file mode 100644 index 1d07d69..0000000 --- a/src/faith/util/logging.py +++ /dev/null @@ -1,38 +0,0 @@ -import logging -from threading import Lock - -class Logger: - _instance = None - _lock = Lock() - - def __new__(cls, *args, **kwargs): - if not cls._instance: - with cls._lock: - if not cls._instance: - cls._instance = super(Logger, cls).__new__(cls, *args, **kwargs) - cls._instance._initialize() - return cls._instance - - def _initialize(self): - self.logger = logging.getLogger("FusionAIHubLogger") - self.logger.setLevel(logging.DEBUG) - - # Create console handler - console_handler = logging.StreamHandler() - console_handler.setLevel(logging.DEBUG) - - # Create formatter and add it to the handler - formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') - console_handler.setFormatter(formatter) - - # Add the handler to the logger - self.logger.addHandler(console_handler) - - def get_logger(self): - return self.logger - -logger = Logger() - -# Usage example: -# logger = Logger().get_logger() -# logger.info("This is a singleton logger.") \ No newline at end of file diff --git a/uv.lock b/uv.lock index e1a7e88..b805b42 100644 --- a/uv.lock +++ b/uv.lock @@ -2,193 +2,18 @@ version = 1 revision = 2 requires-python = ">=3.9" resolution-markers = [ - "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and sys_platform == 'darwin'", "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", -] - -[[package]] -name = "aiohappyeyeballs" -version = "2.6.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/26/30/f84a107a9c4331c14b2b586036f40965c128aa4fee4dda5d3d51cb14ad54/aiohappyeyeballs-2.6.1.tar.gz", hash = "sha256:c3f9d0113123803ccadfdf3f0faa505bc78e6a72d1cc4806cbd719826e943558", size = 22760, upload-time = "2025-03-12T01:42:48.764Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0f/15/5bf3b99495fb160b63f95972b81750f18f7f4e02ad051373b669d17d44f2/aiohappyeyeballs-2.6.1-py3-none-any.whl", hash = "sha256:f349ba8f4b75cb25c99c5c2d84e997e485204d2902a9597802b0371f09331fb8", size = 15265, upload-time = "2025-03-12T01:42:47.083Z" }, -] - -[[package]] -name = "aiohttp" -version = "3.12.14" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "aiohappyeyeballs" }, - { name = "aiosignal" }, - { name = "async-timeout", marker = "python_full_version < '3.11'" }, - { name = "attrs" }, - { name = "frozenlist" }, - { name = "multidict" }, - { name = "propcache" }, - { name = "yarl" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/e6/0b/e39ad954107ebf213a2325038a3e7a506be3d98e1435e1f82086eec4cde2/aiohttp-3.12.14.tar.gz", hash = "sha256:6e06e120e34d93100de448fd941522e11dafa78ef1a893c179901b7d66aa29f2", size = 7822921, upload-time = "2025-07-10T13:05:33.968Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0c/88/f161f429f9de391eee6a5c2cffa54e2ecd5b7122ae99df247f7734dfefcb/aiohttp-3.12.14-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:906d5075b5ba0dd1c66fcaaf60eb09926a9fef3ca92d912d2a0bbdbecf8b1248", size = 702641, upload-time = "2025-07-10T13:02:38.98Z" }, - { url = "https://files.pythonhosted.org/packages/fe/b5/24fa382a69a25d242e2baa3e56d5ea5227d1b68784521aaf3a1a8b34c9a4/aiohttp-3.12.14-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c875bf6fc2fd1a572aba0e02ef4e7a63694778c5646cdbda346ee24e630d30fb", size = 479005, upload-time = "2025-07-10T13:02:42.714Z" }, - { url = "https://files.pythonhosted.org/packages/09/67/fda1bc34adbfaa950d98d934a23900918f9d63594928c70e55045838c943/aiohttp-3.12.14-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fbb284d15c6a45fab030740049d03c0ecd60edad9cd23b211d7e11d3be8d56fd", size = 466781, upload-time = "2025-07-10T13:02:44.639Z" }, - { url = "https://files.pythonhosted.org/packages/36/96/3ce1ea96d3cf6928b87cfb8cdd94650367f5c2f36e686a1f5568f0f13754/aiohttp-3.12.14-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38e360381e02e1a05d36b223ecab7bc4a6e7b5ab15760022dc92589ee1d4238c", size = 1648841, upload-time = "2025-07-10T13:02:46.356Z" }, - { url = "https://files.pythonhosted.org/packages/be/04/ddea06cb4bc7d8db3745cf95e2c42f310aad485ca075bd685f0e4f0f6b65/aiohttp-3.12.14-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:aaf90137b5e5d84a53632ad95ebee5c9e3e7468f0aab92ba3f608adcb914fa95", size = 1622896, upload-time = "2025-07-10T13:02:48.422Z" }, - { url = "https://files.pythonhosted.org/packages/73/66/63942f104d33ce6ca7871ac6c1e2ebab48b88f78b2b7680c37de60f5e8cd/aiohttp-3.12.14-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e532a25e4a0a2685fa295a31acf65e027fbe2bea7a4b02cdfbbba8a064577663", size = 1695302, upload-time = "2025-07-10T13:02:50.078Z" }, - { url = "https://files.pythonhosted.org/packages/20/00/aab615742b953f04b48cb378ee72ada88555b47b860b98c21c458c030a23/aiohttp-3.12.14-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eab9762c4d1b08ae04a6c77474e6136da722e34fdc0e6d6eab5ee93ac29f35d1", size = 1737617, upload-time = "2025-07-10T13:02:52.123Z" }, - { url = "https://files.pythonhosted.org/packages/d6/4f/ef6d9f77225cf27747368c37b3d69fac1f8d6f9d3d5de2d410d155639524/aiohttp-3.12.14-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abe53c3812b2899889a7fca763cdfaeee725f5be68ea89905e4275476ffd7e61", size = 1642282, upload-time = "2025-07-10T13:02:53.899Z" }, - { url = "https://files.pythonhosted.org/packages/37/e1/e98a43c15aa52e9219a842f18c59cbae8bbe2d50c08d298f17e9e8bafa38/aiohttp-3.12.14-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5760909b7080aa2ec1d320baee90d03b21745573780a072b66ce633eb77a8656", size = 1582406, upload-time = "2025-07-10T13:02:55.515Z" }, - { url = "https://files.pythonhosted.org/packages/71/5c/29c6dfb49323bcdb0239bf3fc97ffcf0eaf86d3a60426a3287ec75d67721/aiohttp-3.12.14-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:02fcd3f69051467bbaa7f84d7ec3267478c7df18d68b2e28279116e29d18d4f3", size = 1626255, upload-time = "2025-07-10T13:02:57.343Z" }, - { url = "https://files.pythonhosted.org/packages/79/60/ec90782084090c4a6b459790cfd8d17be2c5662c9c4b2d21408b2f2dc36c/aiohttp-3.12.14-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:4dcd1172cd6794884c33e504d3da3c35648b8be9bfa946942d353b939d5f1288", size = 1637041, upload-time = "2025-07-10T13:02:59.008Z" }, - { url = "https://files.pythonhosted.org/packages/22/89/205d3ad30865c32bc472ac13f94374210745b05bd0f2856996cb34d53396/aiohttp-3.12.14-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:224d0da41355b942b43ad08101b1b41ce633a654128ee07e36d75133443adcda", size = 1612494, upload-time = "2025-07-10T13:03:00.618Z" }, - { url = "https://files.pythonhosted.org/packages/48/ae/2f66edaa8bd6db2a4cba0386881eb92002cdc70834e2a93d1d5607132c7e/aiohttp-3.12.14-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:e387668724f4d734e865c1776d841ed75b300ee61059aca0b05bce67061dcacc", size = 1692081, upload-time = "2025-07-10T13:03:02.154Z" }, - { url = "https://files.pythonhosted.org/packages/08/3a/fa73bfc6e21407ea57f7906a816f0dc73663d9549da703be05dbd76d2dc3/aiohttp-3.12.14-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:dec9cde5b5a24171e0b0a4ca064b1414950904053fb77c707efd876a2da525d8", size = 1715318, upload-time = "2025-07-10T13:03:04.322Z" }, - { url = "https://files.pythonhosted.org/packages/e3/b3/751124b8ceb0831c17960d06ee31a4732cb4a6a006fdbfa1153d07c52226/aiohttp-3.12.14-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:bbad68a2af4877cc103cd94af9160e45676fc6f0c14abb88e6e092b945c2c8e3", size = 1643660, upload-time = "2025-07-10T13:03:06.406Z" }, - { url = "https://files.pythonhosted.org/packages/81/3c/72477a1d34edb8ab8ce8013086a41526d48b64f77e381c8908d24e1c18f5/aiohttp-3.12.14-cp310-cp310-win32.whl", hash = "sha256:ee580cb7c00bd857b3039ebca03c4448e84700dc1322f860cf7a500a6f62630c", size = 428289, upload-time = "2025-07-10T13:03:08.274Z" }, - { url = "https://files.pythonhosted.org/packages/a2/c4/8aec4ccf1b822ec78e7982bd5cf971113ecce5f773f04039c76a083116fc/aiohttp-3.12.14-cp310-cp310-win_amd64.whl", hash = "sha256:cf4f05b8cea571e2ccc3ca744e35ead24992d90a72ca2cf7ab7a2efbac6716db", size = 451328, upload-time = "2025-07-10T13:03:10.146Z" }, - { url = "https://files.pythonhosted.org/packages/53/e1/8029b29316971c5fa89cec170274582619a01b3d82dd1036872acc9bc7e8/aiohttp-3.12.14-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f4552ff7b18bcec18b60a90c6982049cdb9dac1dba48cf00b97934a06ce2e597", size = 709960, upload-time = "2025-07-10T13:03:11.936Z" }, - { url = "https://files.pythonhosted.org/packages/96/bd/4f204cf1e282041f7b7e8155f846583b19149e0872752711d0da5e9cc023/aiohttp-3.12.14-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8283f42181ff6ccbcf25acaae4e8ab2ff7e92b3ca4a4ced73b2c12d8cd971393", size = 482235, upload-time = "2025-07-10T13:03:14.118Z" }, - { url = "https://files.pythonhosted.org/packages/d6/0f/2a580fcdd113fe2197a3b9df30230c7e85bb10bf56f7915457c60e9addd9/aiohttp-3.12.14-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:040afa180ea514495aaff7ad34ec3d27826eaa5d19812730fe9e529b04bb2179", size = 470501, upload-time = "2025-07-10T13:03:16.153Z" }, - { url = "https://files.pythonhosted.org/packages/38/78/2c1089f6adca90c3dd74915bafed6d6d8a87df5e3da74200f6b3a8b8906f/aiohttp-3.12.14-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b413c12f14c1149f0ffd890f4141a7471ba4b41234fe4fd4a0ff82b1dc299dbb", size = 1740696, upload-time = "2025-07-10T13:03:18.4Z" }, - { url = "https://files.pythonhosted.org/packages/4a/c8/ce6c7a34d9c589f007cfe064da2d943b3dee5aabc64eaecd21faf927ab11/aiohttp-3.12.14-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:1d6f607ce2e1a93315414e3d448b831238f1874b9968e1195b06efaa5c87e245", size = 1689365, upload-time = "2025-07-10T13:03:20.629Z" }, - { url = "https://files.pythonhosted.org/packages/18/10/431cd3d089de700756a56aa896faf3ea82bee39d22f89db7ddc957580308/aiohttp-3.12.14-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:565e70d03e924333004ed101599902bba09ebb14843c8ea39d657f037115201b", size = 1788157, upload-time = "2025-07-10T13:03:22.44Z" }, - { url = "https://files.pythonhosted.org/packages/fa/b2/26f4524184e0f7ba46671c512d4b03022633bcf7d32fa0c6f1ef49d55800/aiohttp-3.12.14-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4699979560728b168d5ab63c668a093c9570af2c7a78ea24ca5212c6cdc2b641", size = 1827203, upload-time = "2025-07-10T13:03:24.628Z" }, - { url = "https://files.pythonhosted.org/packages/e0/30/aadcdf71b510a718e3d98a7bfeaea2396ac847f218b7e8edb241b09bd99a/aiohttp-3.12.14-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad5fdf6af93ec6c99bf800eba3af9a43d8bfd66dce920ac905c817ef4a712afe", size = 1729664, upload-time = "2025-07-10T13:03:26.412Z" }, - { url = "https://files.pythonhosted.org/packages/67/7f/7ccf11756ae498fdedc3d689a0c36ace8fc82f9d52d3517da24adf6e9a74/aiohttp-3.12.14-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4ac76627c0b7ee0e80e871bde0d376a057916cb008a8f3ffc889570a838f5cc7", size = 1666741, upload-time = "2025-07-10T13:03:28.167Z" }, - { url = "https://files.pythonhosted.org/packages/6b/4d/35ebc170b1856dd020c92376dbfe4297217625ef4004d56587024dc2289c/aiohttp-3.12.14-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:798204af1180885651b77bf03adc903743a86a39c7392c472891649610844635", size = 1715013, upload-time = "2025-07-10T13:03:30.018Z" }, - { url = "https://files.pythonhosted.org/packages/7b/24/46dc0380146f33e2e4aa088b92374b598f5bdcde1718c77e8d1a0094f1a4/aiohttp-3.12.14-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:4f1205f97de92c37dd71cf2d5bcfb65fdaed3c255d246172cce729a8d849b4da", size = 1710172, upload-time = "2025-07-10T13:03:31.821Z" }, - { url = "https://files.pythonhosted.org/packages/2f/0a/46599d7d19b64f4d0fe1b57bdf96a9a40b5c125f0ae0d8899bc22e91fdce/aiohttp-3.12.14-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:76ae6f1dd041f85065d9df77c6bc9c9703da9b5c018479d20262acc3df97d419", size = 1690355, upload-time = "2025-07-10T13:03:34.754Z" }, - { url = "https://files.pythonhosted.org/packages/08/86/b21b682e33d5ca317ef96bd21294984f72379454e689d7da584df1512a19/aiohttp-3.12.14-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a194ace7bc43ce765338ca2dfb5661489317db216ea7ea700b0332878b392cab", size = 1783958, upload-time = "2025-07-10T13:03:36.53Z" }, - { url = "https://files.pythonhosted.org/packages/4f/45/f639482530b1396c365f23c5e3b1ae51c9bc02ba2b2248ca0c855a730059/aiohttp-3.12.14-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:16260e8e03744a6fe3fcb05259eeab8e08342c4c33decf96a9dad9f1187275d0", size = 1804423, upload-time = "2025-07-10T13:03:38.504Z" }, - { url = "https://files.pythonhosted.org/packages/7e/e5/39635a9e06eed1d73671bd4079a3caf9cf09a49df08490686f45a710b80e/aiohttp-3.12.14-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:8c779e5ebbf0e2e15334ea404fcce54009dc069210164a244d2eac8352a44b28", size = 1717479, upload-time = "2025-07-10T13:03:40.158Z" }, - { url = "https://files.pythonhosted.org/packages/51/e1/7f1c77515d369b7419c5b501196526dad3e72800946c0099594c1f0c20b4/aiohttp-3.12.14-cp311-cp311-win32.whl", hash = "sha256:a289f50bf1bd5be227376c067927f78079a7bdeccf8daa6a9e65c38bae14324b", size = 427907, upload-time = "2025-07-10T13:03:41.801Z" }, - { url = "https://files.pythonhosted.org/packages/06/24/a6bf915c85b7a5b07beba3d42b3282936b51e4578b64a51e8e875643c276/aiohttp-3.12.14-cp311-cp311-win_amd64.whl", hash = "sha256:0b8a69acaf06b17e9c54151a6c956339cf46db4ff72b3ac28516d0f7068f4ced", size = 452334, upload-time = "2025-07-10T13:03:43.485Z" }, - { url = "https://files.pythonhosted.org/packages/c3/0d/29026524e9336e33d9767a1e593ae2b24c2b8b09af7c2bd8193762f76b3e/aiohttp-3.12.14-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:a0ecbb32fc3e69bc25efcda7d28d38e987d007096cbbeed04f14a6662d0eee22", size = 701055, upload-time = "2025-07-10T13:03:45.59Z" }, - { url = "https://files.pythonhosted.org/packages/0a/b8/a5e8e583e6c8c1056f4b012b50a03c77a669c2e9bf012b7cf33d6bc4b141/aiohttp-3.12.14-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0400f0ca9bb3e0b02f6466421f253797f6384e9845820c8b05e976398ac1d81a", size = 475670, upload-time = "2025-07-10T13:03:47.249Z" }, - { url = "https://files.pythonhosted.org/packages/29/e8/5202890c9e81a4ec2c2808dd90ffe024952e72c061729e1d49917677952f/aiohttp-3.12.14-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a56809fed4c8a830b5cae18454b7464e1529dbf66f71c4772e3cfa9cbec0a1ff", size = 468513, upload-time = "2025-07-10T13:03:49.377Z" }, - { url = "https://files.pythonhosted.org/packages/23/e5/d11db8c23d8923d3484a27468a40737d50f05b05eebbb6288bafcb467356/aiohttp-3.12.14-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:27f2e373276e4755691a963e5d11756d093e346119f0627c2d6518208483fb6d", size = 1715309, upload-time = "2025-07-10T13:03:51.556Z" }, - { url = "https://files.pythonhosted.org/packages/53/44/af6879ca0eff7a16b1b650b7ea4a827301737a350a464239e58aa7c387ef/aiohttp-3.12.14-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:ca39e433630e9a16281125ef57ece6817afd1d54c9f1bf32e901f38f16035869", size = 1697961, upload-time = "2025-07-10T13:03:53.511Z" }, - { url = "https://files.pythonhosted.org/packages/bb/94/18457f043399e1ec0e59ad8674c0372f925363059c276a45a1459e17f423/aiohttp-3.12.14-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9c748b3f8b14c77720132b2510a7d9907a03c20ba80f469e58d5dfd90c079a1c", size = 1753055, upload-time = "2025-07-10T13:03:55.368Z" }, - { url = "https://files.pythonhosted.org/packages/26/d9/1d3744dc588fafb50ff8a6226d58f484a2242b5dd93d8038882f55474d41/aiohttp-3.12.14-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f0a568abe1b15ce69d4cc37e23020720423f0728e3cb1f9bcd3f53420ec3bfe7", size = 1799211, upload-time = "2025-07-10T13:03:57.216Z" }, - { url = "https://files.pythonhosted.org/packages/73/12/2530fb2b08773f717ab2d249ca7a982ac66e32187c62d49e2c86c9bba9b4/aiohttp-3.12.14-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9888e60c2c54eaf56704b17feb558c7ed6b7439bca1e07d4818ab878f2083660", size = 1718649, upload-time = "2025-07-10T13:03:59.469Z" }, - { url = "https://files.pythonhosted.org/packages/b9/34/8d6015a729f6571341a311061b578e8b8072ea3656b3d72329fa0faa2c7c/aiohttp-3.12.14-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3006a1dc579b9156de01e7916d38c63dc1ea0679b14627a37edf6151bc530088", size = 1634452, upload-time = "2025-07-10T13:04:01.698Z" }, - { url = "https://files.pythonhosted.org/packages/ff/4b/08b83ea02595a582447aeb0c1986792d0de35fe7a22fb2125d65091cbaf3/aiohttp-3.12.14-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:aa8ec5c15ab80e5501a26719eb48a55f3c567da45c6ea5bb78c52c036b2655c7", size = 1695511, upload-time = "2025-07-10T13:04:04.165Z" }, - { url = "https://files.pythonhosted.org/packages/b5/66/9c7c31037a063eec13ecf1976185c65d1394ded4a5120dd5965e3473cb21/aiohttp-3.12.14-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:39b94e50959aa07844c7fe2206b9f75d63cc3ad1c648aaa755aa257f6f2498a9", size = 1716967, upload-time = "2025-07-10T13:04:06.132Z" }, - { url = "https://files.pythonhosted.org/packages/ba/02/84406e0ad1acb0fb61fd617651ab6de760b2d6a31700904bc0b33bd0894d/aiohttp-3.12.14-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:04c11907492f416dad9885d503fbfc5dcb6768d90cad8639a771922d584609d3", size = 1657620, upload-time = "2025-07-10T13:04:07.944Z" }, - { url = "https://files.pythonhosted.org/packages/07/53/da018f4013a7a179017b9a274b46b9a12cbeb387570f116964f498a6f211/aiohttp-3.12.14-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:88167bd9ab69bb46cee91bd9761db6dfd45b6e76a0438c7e884c3f8160ff21eb", size = 1737179, upload-time = "2025-07-10T13:04:10.182Z" }, - { url = "https://files.pythonhosted.org/packages/49/e8/ca01c5ccfeaafb026d85fa4f43ceb23eb80ea9c1385688db0ef322c751e9/aiohttp-3.12.14-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:791504763f25e8f9f251e4688195e8b455f8820274320204f7eafc467e609425", size = 1765156, upload-time = "2025-07-10T13:04:12.029Z" }, - { url = "https://files.pythonhosted.org/packages/22/32/5501ab525a47ba23c20613e568174d6c63aa09e2caa22cded5c6ea8e3ada/aiohttp-3.12.14-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2785b112346e435dd3a1a67f67713a3fe692d288542f1347ad255683f066d8e0", size = 1724766, upload-time = "2025-07-10T13:04:13.961Z" }, - { url = "https://files.pythonhosted.org/packages/06/af/28e24574801fcf1657945347ee10df3892311c2829b41232be6089e461e7/aiohttp-3.12.14-cp312-cp312-win32.whl", hash = "sha256:15f5f4792c9c999a31d8decf444e79fcfd98497bf98e94284bf390a7bb8c1729", size = 422641, upload-time = "2025-07-10T13:04:16.018Z" }, - { url = "https://files.pythonhosted.org/packages/98/d5/7ac2464aebd2eecac38dbe96148c9eb487679c512449ba5215d233755582/aiohttp-3.12.14-cp312-cp312-win_amd64.whl", hash = "sha256:3b66e1a182879f579b105a80d5c4bd448b91a57e8933564bf41665064796a338", size = 449316, upload-time = "2025-07-10T13:04:18.289Z" }, - { url = "https://files.pythonhosted.org/packages/06/48/e0d2fa8ac778008071e7b79b93ab31ef14ab88804d7ba71b5c964a7c844e/aiohttp-3.12.14-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:3143a7893d94dc82bc409f7308bc10d60285a3cd831a68faf1aa0836c5c3c767", size = 695471, upload-time = "2025-07-10T13:04:20.124Z" }, - { url = "https://files.pythonhosted.org/packages/8d/e7/f73206afa33100804f790b71092888f47df65fd9a4cd0e6800d7c6826441/aiohttp-3.12.14-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:3d62ac3d506cef54b355bd34c2a7c230eb693880001dfcda0bf88b38f5d7af7e", size = 473128, upload-time = "2025-07-10T13:04:21.928Z" }, - { url = "https://files.pythonhosted.org/packages/df/e2/4dd00180be551a6e7ee979c20fc7c32727f4889ee3fd5b0586e0d47f30e1/aiohttp-3.12.14-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:48e43e075c6a438937c4de48ec30fa8ad8e6dfef122a038847456bfe7b947b63", size = 465426, upload-time = "2025-07-10T13:04:24.071Z" }, - { url = "https://files.pythonhosted.org/packages/de/dd/525ed198a0bb674a323e93e4d928443a680860802c44fa7922d39436b48b/aiohttp-3.12.14-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:077b4488411a9724cecc436cbc8c133e0d61e694995b8de51aaf351c7578949d", size = 1704252, upload-time = "2025-07-10T13:04:26.049Z" }, - { url = "https://files.pythonhosted.org/packages/d8/b1/01e542aed560a968f692ab4fc4323286e8bc4daae83348cd63588e4f33e3/aiohttp-3.12.14-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:d8c35632575653f297dcbc9546305b2c1133391089ab925a6a3706dfa775ccab", size = 1685514, upload-time = "2025-07-10T13:04:28.186Z" }, - { url = "https://files.pythonhosted.org/packages/b3/06/93669694dc5fdabdc01338791e70452d60ce21ea0946a878715688d5a191/aiohttp-3.12.14-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6b8ce87963f0035c6834b28f061df90cf525ff7c9b6283a8ac23acee6502afd4", size = 1737586, upload-time = "2025-07-10T13:04:30.195Z" }, - { url = "https://files.pythonhosted.org/packages/a5/3a/18991048ffc1407ca51efb49ba8bcc1645961f97f563a6c480cdf0286310/aiohttp-3.12.14-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f0a2cf66e32a2563bb0766eb24eae7e9a269ac0dc48db0aae90b575dc9583026", size = 1786958, upload-time = "2025-07-10T13:04:32.482Z" }, - { url = "https://files.pythonhosted.org/packages/30/a8/81e237f89a32029f9b4a805af6dffc378f8459c7b9942712c809ff9e76e5/aiohttp-3.12.14-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdea089caf6d5cde975084a884c72d901e36ef9c2fd972c9f51efbbc64e96fbd", size = 1709287, upload-time = "2025-07-10T13:04:34.493Z" }, - { url = "https://files.pythonhosted.org/packages/8c/e3/bd67a11b0fe7fc12c6030473afd9e44223d456f500f7cf526dbaa259ae46/aiohttp-3.12.14-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8a7865f27db67d49e81d463da64a59365ebd6b826e0e4847aa111056dcb9dc88", size = 1622990, upload-time = "2025-07-10T13:04:36.433Z" }, - { url = "https://files.pythonhosted.org/packages/83/ba/e0cc8e0f0d9ce0904e3cf2d6fa41904e379e718a013c721b781d53dcbcca/aiohttp-3.12.14-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0ab5b38a6a39781d77713ad930cb5e7feea6f253de656a5f9f281a8f5931b086", size = 1676015, upload-time = "2025-07-10T13:04:38.958Z" }, - { url = "https://files.pythonhosted.org/packages/d8/b3/1e6c960520bda094c48b56de29a3d978254637ace7168dd97ddc273d0d6c/aiohttp-3.12.14-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:9b3b15acee5c17e8848d90a4ebc27853f37077ba6aec4d8cb4dbbea56d156933", size = 1707678, upload-time = "2025-07-10T13:04:41.275Z" }, - { url = "https://files.pythonhosted.org/packages/0a/19/929a3eb8c35b7f9f076a462eaa9830b32c7f27d3395397665caa5e975614/aiohttp-3.12.14-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:e4c972b0bdaac167c1e53e16a16101b17c6d0ed7eac178e653a07b9f7fad7151", size = 1650274, upload-time = "2025-07-10T13:04:43.483Z" }, - { url = "https://files.pythonhosted.org/packages/22/e5/81682a6f20dd1b18ce3d747de8eba11cbef9b270f567426ff7880b096b48/aiohttp-3.12.14-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:7442488b0039257a3bdbc55f7209587911f143fca11df9869578db6c26feeeb8", size = 1726408, upload-time = "2025-07-10T13:04:45.577Z" }, - { url = "https://files.pythonhosted.org/packages/8c/17/884938dffaa4048302985483f77dfce5ac18339aad9b04ad4aaa5e32b028/aiohttp-3.12.14-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:f68d3067eecb64c5e9bab4a26aa11bd676f4c70eea9ef6536b0a4e490639add3", size = 1759879, upload-time = "2025-07-10T13:04:47.663Z" }, - { url = "https://files.pythonhosted.org/packages/95/78/53b081980f50b5cf874359bde707a6eacd6c4be3f5f5c93937e48c9d0025/aiohttp-3.12.14-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f88d3704c8b3d598a08ad17d06006cb1ca52a1182291f04979e305c8be6c9758", size = 1708770, upload-time = "2025-07-10T13:04:49.944Z" }, - { url = "https://files.pythonhosted.org/packages/ed/91/228eeddb008ecbe3ffa6c77b440597fdf640307162f0c6488e72c5a2d112/aiohttp-3.12.14-cp313-cp313-win32.whl", hash = "sha256:a3c99ab19c7bf375c4ae3debd91ca5d394b98b6089a03231d4c580ef3c2ae4c5", size = 421688, upload-time = "2025-07-10T13:04:51.993Z" }, - { url = "https://files.pythonhosted.org/packages/66/5f/8427618903343402fdafe2850738f735fd1d9409d2a8f9bcaae5e630d3ba/aiohttp-3.12.14-cp313-cp313-win_amd64.whl", hash = "sha256:3f8aad695e12edc9d571f878c62bedc91adf30c760c8632f09663e5f564f4baa", size = 448098, upload-time = "2025-07-10T13:04:53.999Z" }, - { url = "https://files.pythonhosted.org/packages/cf/54/8a65095784f5c8b2a60a8baa2baabb15b8d507efb0911d59f94af04ba908/aiohttp-3.12.14-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b8cc6b05e94d837bcd71c6531e2344e1ff0fb87abe4ad78a9261d67ef5d83eae", size = 705553, upload-time = "2025-07-10T13:04:56.475Z" }, - { url = "https://files.pythonhosted.org/packages/d0/23/65a82d33841c790178aed8aa6b5e720e37f08bdf7256936fa3bc86f03257/aiohttp-3.12.14-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d1dcb015ac6a3b8facd3677597edd5ff39d11d937456702f0bb2b762e390a21b", size = 480529, upload-time = "2025-07-10T13:04:58.524Z" }, - { url = "https://files.pythonhosted.org/packages/10/66/9d51ec40613aca2f38d6ac527b592686a302197109aa1c0fe045040835ec/aiohttp-3.12.14-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3779ed96105cd70ee5e85ca4f457adbce3d9ff33ec3d0ebcdf6c5727f26b21b3", size = 467929, upload-time = "2025-07-10T13:05:00.815Z" }, - { url = "https://files.pythonhosted.org/packages/48/9e/2f14e4780a461351325d7821fb64e9107189315dd8f6e8a67e7afdbf875c/aiohttp-3.12.14-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:717a0680729b4ebd7569c1dcd718c46b09b360745fd8eb12317abc74b14d14d0", size = 1642894, upload-time = "2025-07-10T13:05:02.966Z" }, - { url = "https://files.pythonhosted.org/packages/b8/26/26ef03e6cc4b7fb275eaa76b33c128f72729e8833e512b6770f877560b6e/aiohttp-3.12.14-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b5dd3a2ef7c7e968dbbac8f5574ebeac4d2b813b247e8cec28174a2ba3627170", size = 1617388, upload-time = "2025-07-10T13:05:05.035Z" }, - { url = "https://files.pythonhosted.org/packages/68/cf/fffc2a9edacbd475cfb508075bad052426ce0b9100f1045536ee1b683872/aiohttp-3.12.14-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4710f77598c0092239bc12c1fcc278a444e16c7032d91babf5abbf7166463f7b", size = 1691015, upload-time = "2025-07-10T13:05:07.223Z" }, - { url = "https://files.pythonhosted.org/packages/0b/c5/bb8b29ef079d3ecb5960ec1b547b56bc52ee5ffc43c8a30ef21f9afeb67b/aiohttp-3.12.14-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f3e9f75ae842a6c22a195d4a127263dbf87cbab729829e0bd7857fb1672400b2", size = 1730330, upload-time = "2025-07-10T13:05:09.393Z" }, - { url = "https://files.pythonhosted.org/packages/09/0d/d18e2d2754497bf91b9559425e8c4286af61bdbe42d49c43d955c7269680/aiohttp-3.12.14-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f9c8d55d6802086edd188e3a7d85a77787e50d56ce3eb4757a3205fa4657922", size = 1636573, upload-time = "2025-07-10T13:05:11.796Z" }, - { url = "https://files.pythonhosted.org/packages/33/c8/2c32cd25deb9f590cb8d50ff33fb3bb2cc8d1761958989f6f64cf00ef1cb/aiohttp-3.12.14-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:79b29053ff3ad307880d94562cca80693c62062a098a5776ea8ef5ef4b28d140", size = 1571573, upload-time = "2025-07-10T13:05:14.216Z" }, - { url = "https://files.pythonhosted.org/packages/0f/36/1b36ae47b9d6afdd39072373bb7157b464996376d562d3c50950ddf6d10e/aiohttp-3.12.14-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:23e1332fff36bebd3183db0c7a547a1da9d3b4091509f6d818e098855f2f27d3", size = 1619535, upload-time = "2025-07-10T13:05:16.292Z" }, - { url = "https://files.pythonhosted.org/packages/2b/e8/6864b7812351821168e80ca102d7fa244a78fefe9690995a40e8b5c19f4b/aiohttp-3.12.14-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:a564188ce831fd110ea76bcc97085dd6c625b427db3f1dbb14ca4baa1447dcbc", size = 1629672, upload-time = "2025-07-10T13:05:18.548Z" }, - { url = "https://files.pythonhosted.org/packages/9b/55/f90e3eb25330f8a564a6e6b4d3cc15d3630bd28b0795a025e397e3279411/aiohttp-3.12.14-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:a7a1b4302f70bb3ec40ca86de82def532c97a80db49cac6a6700af0de41af5ee", size = 1606317, upload-time = "2025-07-10T13:05:20.856Z" }, - { url = "https://files.pythonhosted.org/packages/1b/f7/39c3570434bb7e81601155ba71327735b26548473cca2d5c7f5badabb140/aiohttp-3.12.14-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:1b07ccef62950a2519f9bfc1e5b294de5dd84329f444ca0b329605ea787a3de5", size = 1693913, upload-time = "2025-07-10T13:05:22.951Z" }, - { url = "https://files.pythonhosted.org/packages/46/0d/caee8733fbe511c34a54e93ee26c4b8d505e12785444d31f772a610df7ab/aiohttp-3.12.14-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:938bd3ca6259e7e48b38d84f753d548bd863e0c222ed6ee6ace3fd6752768a84", size = 1709592, upload-time = "2025-07-10T13:05:25.587Z" }, - { url = "https://files.pythonhosted.org/packages/24/f3/5d21196abf74dee66c5809e764cc27a2275e54c9355019c21be3bf77dd77/aiohttp-3.12.14-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:8bc784302b6b9f163b54c4e93d7a6f09563bd01ff2b841b29ed3ac126e5040bf", size = 1639262, upload-time = "2025-07-10T13:05:27.782Z" }, - { url = "https://files.pythonhosted.org/packages/54/bb/b4226f4fd0597d5245f284d10be48bf1ef610ab4f57d4239686fb03d1814/aiohttp-3.12.14-cp39-cp39-win32.whl", hash = "sha256:a3416f95961dd7d5393ecff99e3f41dc990fb72eda86c11f2a60308ac6dcd7a0", size = 429202, upload-time = "2025-07-10T13:05:29.78Z" }, - { url = "https://files.pythonhosted.org/packages/a0/c0/2f1cefb7b077bf5c19f01bdf0d82b89de0bf2801b441eda23ada0b8966ac/aiohttp-3.12.14-cp39-cp39-win_amd64.whl", hash = "sha256:196858b8820d7f60578f8b47e5669b3195c21d8ab261e39b1d705346458f445f", size = 452436, upload-time = "2025-07-10T13:05:31.77Z" }, -] - -[[package]] -name = "aiohttp-cors" -version = "0.8.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "aiohttp" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/d89e846a5444b3d5eb8985a6ddb0daef3774928e1bfbce8e84ec97b0ffa7/aiohttp_cors-0.8.1.tar.gz", hash = "sha256:ccacf9cb84b64939ea15f859a146af1f662a6b1d68175754a07315e305fb1403", size = 38626, upload-time = "2025-03-31T14:16:20.048Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/98/3b/40a68de458904bcc143622015fff2352b6461cd92fd66d3527bf1c6f5716/aiohttp_cors-0.8.1-py3-none-any.whl", hash = "sha256:3180cf304c5c712d626b9162b195b1db7ddf976a2a25172b35bb2448b890a80d", size = 25231, upload-time = "2025-03-31T14:16:18.478Z" }, -] - -[[package]] -name = "aiosignal" -version = "1.4.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "frozenlist" }, - { name = "typing-extensions", marker = "python_full_version < '3.13'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/61/62/06741b579156360248d1ec624842ad0edf697050bbaf7c3e46394e106ad1/aiosignal-1.4.0.tar.gz", hash = "sha256:f47eecd9468083c2029cc99945502cb7708b082c232f9aca65da147157b251c7", size = 25007, upload-time = "2025-07-03T22:54:43.528Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fb/76/641ae371508676492379f16e2fa48f4e2c11741bd63c48be4b12a6b09cba/aiosignal-1.4.0-py3-none-any.whl", hash = "sha256:053243f8b92b990551949e63930a839ff0cf0b0ebbe0597b0f3fb19e1a0fe82e", size = 7490, upload-time = "2025-07-03T22:54:42.156Z" }, -] - -[[package]] -name = "annotated-types" -version = "0.7.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload-time = "2024-05-20T21:33:25.928Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, -] - -[[package]] -name = "antlr4-python3-runtime" -version = "4.9.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3e/38/7859ff46355f76f8d19459005ca000b6e7012f2f1ca597746cbcd1fbfe5e/antlr4-python3-runtime-4.9.3.tar.gz", hash = "sha256:f224469b4168294902bb1efa80a8bf7855f24c99aef99cbefc1bcd3cce77881b", size = 117034, upload-time = "2021-11-06T17:52:23.524Z" } - -[[package]] -name = "anyio" -version = "4.9.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, - { name = "idna" }, - { name = "sniffio" }, - { name = "typing-extensions", marker = "python_full_version < '3.13'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/95/7d/4c1bd541d4dffa1b52bd83fb8527089e097a106fc90b467a7313b105f840/anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028", size = 190949, upload-time = "2025-03-17T00:02:54.77Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a1/ee/48ca1a7c89ffec8b6a0c5d02b89c305671d5ffd8d3c94acf8b8c408575bb/anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c", size = 100916, upload-time = "2025-03-17T00:02:52.713Z" }, + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", ] [[package]] @@ -200,52 +25,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321, upload-time = "2024-02-06T09:43:09.663Z" }, ] -[[package]] -name = "argon2-cffi" -version = "25.1.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "argon2-cffi-bindings" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/0e/89/ce5af8a7d472a67cc819d5d998aa8c82c5d860608c4db9f46f1162d7dab9/argon2_cffi-25.1.0.tar.gz", hash = "sha256:694ae5cc8a42f4c4e2bf2ca0e64e51e23a040c6a517a85074683d3959e1346c1", size = 45706, upload-time = "2025-06-03T06:55:32.073Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4f/d3/a8b22fa575b297cd6e3e3b0155c7e25db170edf1c74783d6a31a2490b8d9/argon2_cffi-25.1.0-py3-none-any.whl", hash = "sha256:fdc8b074db390fccb6eb4a3604ae7231f219aa669a2652e0f20e16ba513d5741", size = 14657, upload-time = "2025-06-03T06:55:30.804Z" }, -] - -[[package]] -name = "argon2-cffi-bindings" -version = "21.2.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "cffi" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b9/e9/184b8ccce6683b0aa2fbb7ba5683ea4b9c5763f1356347f1312c32e3c66e/argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3", size = 1779911, upload-time = "2021-12-01T08:52:55.68Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d4/13/838ce2620025e9666aa8f686431f67a29052241692a3dd1ae9d3692a89d3/argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367", size = 29658, upload-time = "2021-12-01T09:09:17.016Z" }, - { url = "https://files.pythonhosted.org/packages/b3/02/f7f7bb6b6af6031edb11037639c697b912e1dea2db94d436e681aea2f495/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d", size = 80583, upload-time = "2021-12-01T09:09:19.546Z" }, - { url = "https://files.pythonhosted.org/packages/ec/f7/378254e6dd7ae6f31fe40c8649eea7d4832a42243acaf0f1fff9083b2bed/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae", size = 86168, upload-time = "2021-12-01T09:09:21.445Z" }, - { url = "https://files.pythonhosted.org/packages/74/f6/4a34a37a98311ed73bb80efe422fed95f2ac25a4cacc5ae1d7ae6a144505/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c", size = 82709, upload-time = "2021-12-01T09:09:18.182Z" }, - { url = "https://files.pythonhosted.org/packages/74/2b/73d767bfdaab25484f7e7901379d5f8793cccbb86c6e0cbc4c1b96f63896/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86", size = 83613, upload-time = "2021-12-01T09:09:22.741Z" }, - { url = "https://files.pythonhosted.org/packages/4f/fd/37f86deef67ff57c76f137a67181949c2d408077e2e3dd70c6c42912c9bf/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f", size = 84583, upload-time = "2021-12-01T09:09:24.177Z" }, - { url = "https://files.pythonhosted.org/packages/6f/52/5a60085a3dae8fded8327a4f564223029f5f54b0cb0455a31131b5363a01/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e", size = 88475, upload-time = "2021-12-01T09:09:26.673Z" }, - { url = "https://files.pythonhosted.org/packages/8b/95/143cd64feb24a15fa4b189a3e1e7efbaeeb00f39a51e99b26fc62fbacabd/argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082", size = 27698, upload-time = "2021-12-01T09:09:27.87Z" }, - { url = "https://files.pythonhosted.org/packages/37/2c/e34e47c7dee97ba6f01a6203e0383e15b60fb85d78ac9a15cd066f6fe28b/argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f", size = 30817, upload-time = "2021-12-01T09:09:30.267Z" }, - { url = "https://files.pythonhosted.org/packages/5a/e4/bf8034d25edaa495da3c8a3405627d2e35758e44ff6eaa7948092646fdcc/argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93", size = 53104, upload-time = "2021-12-01T09:09:31.335Z" }, -] - -[[package]] -name = "arrow" -version = "1.3.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "python-dateutil" }, - { name = "types-python-dateutil" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/2e/00/0f6e8fcdb23ea632c866620cc872729ff43ed91d284c866b515c6342b173/arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85", size = 131960, upload-time = "2023-09-30T22:11:18.25Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f8/ed/e97229a566617f2ae958a6b13e7cc0f585470eac730a73e9e82c32a3cdd2/arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80", size = 66419, upload-time = "2023-09-30T22:11:16.072Z" }, -] - [[package]] name = "asttokens" version = "3.0.0" @@ -255,45 +34,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2", size = 26918, upload-time = "2024-11-30T04:30:10.946Z" }, ] -[[package]] -name = "async-lru" -version = "2.0.5" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typing-extensions", marker = "python_full_version < '3.11'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b2/4d/71ec4d3939dc755264f680f6c2b4906423a304c3d18e96853f0a595dfe97/async_lru-2.0.5.tar.gz", hash = "sha256:481d52ccdd27275f42c43a928b4a50c3bfb2d67af4e78b170e3e0bb39c66e5bb", size = 10380, upload-time = "2025-03-16T17:25:36.919Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/03/49/d10027df9fce941cb8184e78a02857af36360d33e1721df81c5ed2179a1a/async_lru-2.0.5-py3-none-any.whl", hash = "sha256:ab95404d8d2605310d345932697371a5f40def0487c03d6d0ad9138de52c9943", size = 6069, upload-time = "2025-03-16T17:25:35.422Z" }, -] - -[[package]] -name = "async-timeout" -version = "5.0.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a5/ae/136395dfbfe00dfc94da3f3e136d0b13f394cba8f4841120e34226265780/async_timeout-5.0.1.tar.gz", hash = "sha256:d9321a7a3d5a6a5e187e824d2fa0793ce379a202935782d555d6e9d2735677d3", size = 9274, upload-time = "2024-11-06T16:41:39.6Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fe/ba/e2081de779ca30d473f21f5b30e0e737c438205440784c7dfc81efc2b029/async_timeout-5.0.1-py3-none-any.whl", hash = "sha256:39e3809566ff85354557ec2398b55e096c8364bacac9405a7a1fa429e77fe76c", size = 6233, upload-time = "2024-11-06T16:41:37.9Z" }, -] - -[[package]] -name = "attrs" -version = "25.3.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032, upload-time = "2025-03-13T11:10:22.779Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815, upload-time = "2025-03-13T11:10:21.14Z" }, -] - -[[package]] -name = "babel" -version = "2.17.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852, upload-time = "2025-02-01T15:17:41.026Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537, upload-time = "2025-02-01T15:17:37.39Z" }, -] - [[package]] name = "bcrypt" version = "4.3.0" @@ -352,36 +92,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/63/13/47bba97924ebe86a62ef83dc75b7c8a881d53c535f83e2c54c4bd701e05c/bcrypt-4.3.0-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:57967b7a28d855313a963aaea51bf6df89f833db4320da458e5b3c5ab6d4c938", size = 280110, upload-time = "2025-02-28T01:24:05.896Z" }, ] -[[package]] -name = "beautifulsoup4" -version = "4.13.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "soupsieve" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/d8/e4/0c4c39e18fd76d6a628d4dd8da40543d136ce2d1752bd6eeeab0791f4d6b/beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195", size = 621067, upload-time = "2025-04-15T17:05:13.836Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/50/cd/30110dc0ffcf3b131156077b90e9f60ed75711223f306da4db08eff8403b/beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b", size = 187285, upload-time = "2025-04-15T17:05:12.221Z" }, -] - -[[package]] -name = "bleach" -version = "6.2.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "webencodings" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/76/9a/0e33f5054c54d349ea62c277191c020c2d6ef1d65ab2cb1993f91ec846d1/bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f", size = 203083, upload-time = "2024-10-29T18:30:40.477Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fc/55/96142937f66150805c25c4d0f31ee4132fd33497753400734f9dfdcbdc66/bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e", size = 163406, upload-time = "2024-10-29T18:30:38.186Z" }, -] - -[package.optional-dependencies] -css = [ - { name = "tinycss2" }, -] - [[package]] name = "blosc2" version = "2.5.1" @@ -389,8 +99,7 @@ source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", ] dependencies = [ { name = "msgpack", marker = "python_full_version < '3.10'" }, @@ -435,20 +144,13 @@ name = "blosc2" version = "3.5.1" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and sys_platform == 'darwin'", "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -486,15 +188,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b1/f0/55b5090c8fb6e9a12810cf141cd59875718148a78f62a4da818045f7e4b6/blosc2-3.5.1-cp313-cp313-win_amd64.whl", hash = "sha256:9d36c4a8489c0f8719040a7543918e2701821340b8643d508c450d0d012259bf", size = 2213487, upload-time = "2025-07-02T11:47:15.297Z" }, ] -[[package]] -name = "cachetools" -version = "5.5.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6c/81/3747dad6b14fa2cf53fcf10548cf5aea6913e96fab41a3c198676f8948a5/cachetools-5.5.2.tar.gz", hash = "sha256:1a661caa9175d26759571b2e19580f9d6393969e5dfca11fdb1f947a23e640d4", size = 28380, upload-time = "2025-02-20T21:01:19.524Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/72/76/20fa66124dbe6be5cafeb312ece67de6b61dd91a0247d1ea13db4ebb33c2/cachetools-5.5.2-py3-none-any.whl", hash = "sha256:d26a22bcc62eb95c3beabd9f1ee5e820d3d2704fe2967cbe350e20c8ffcd3f0a", size = 10080, upload-time = "2025-02-20T21:01:16.647Z" }, -] - [[package]] name = "certifi" version = "2025.7.9" @@ -647,54 +340,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626, upload-time = "2025-05-02T08:34:40.053Z" }, ] -[[package]] -name = "click" -version = "8.1.8" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", - "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", -] -dependencies = [ - { name = "colorama", marker = "python_full_version < '3.10' and sys_platform == 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593, upload-time = "2024-12-21T18:38:44.339Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2", size = 98188, upload-time = "2024-12-21T18:38:41.666Z" }, -] - -[[package]] -name = "click" -version = "8.2.1" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", -] -dependencies = [ - { name = "colorama", marker = "python_full_version >= '3.10' and sys_platform == 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202", size = 286342, upload-time = "2025-05-20T23:19:49.832Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b", size = 102215, upload-time = "2025-05-20T23:19:47.796Z" }, -] - [[package]] name = "colorama" version = "0.4.6" @@ -704,18 +349,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, ] -[[package]] -name = "colorful" -version = "0.5.7" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/0c/0c/d180ebf230b771907f46981023a80f62cf592d49673cc5f8a5993aa67bb6/colorful-0.5.7.tar.gz", hash = "sha256:c5452179b56601c178b03d468a5326cc1fe37d9be81d24d0d6bdab36c4b93ad8", size = 209487, upload-time = "2025-06-30T15:24:03.936Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e2/98/0d791b3d1eaed89d7d370b5cf9b8079b124da0545559417f394ba21b5532/colorful-0.5.7-py2.py3-none-any.whl", hash = "sha256:495dd3a23151a9568cee8a90fc1174c902ad7ef06655f50b6bddf9e80008da69", size = 201475, upload-time = "2025-06-30T15:24:02.693Z" }, -] - [[package]] name = "comm" version = "0.2.2" @@ -735,8 +368,7 @@ source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", ] dependencies = [ { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, @@ -814,20 +446,13 @@ name = "contourpy" version = "1.3.2" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and sys_platform == 'darwin'", "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -989,24 +614,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190, upload-time = "2025-02-24T04:41:32.565Z" }, ] -[[package]] -name = "defusedxml" -version = "0.7.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520, upload-time = "2021-03-08T10:59:26.269Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604, upload-time = "2021-03-08T10:59:24.45Z" }, -] - -[[package]] -name = "distlib" -version = "0.3.9" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0d/dd/1bec4c5ddb504ca60fc29472f3d27e8d4da1257a854e1d96742f15c1d02d/distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403", size = 613923, upload-time = "2024-10-09T18:35:47.551Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/91/a1/cf2472db20f7ce4a6be1253a81cfdf85ad9c7885ffbed7047fb72c24cf87/distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87", size = 468973, upload-time = "2024-10-09T18:35:44.272Z" }, -] - [[package]] name = "exceptiongroup" version = "1.3.0" @@ -1028,94 +635,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa", size = 26702, upload-time = "2025-01-22T15:41:25.929Z" }, ] -[[package]] -name = "faith" -version = "0.0.1a0" -source = { editable = "." } -dependencies = [ - { name = "h5py" }, - { name = "hydra-core" }, - { name = "ipykernel" }, - { name = "ipywidgets" }, - { name = "jupyter" }, - { name = "lightning" }, - { name = "matplotlib", version = "3.9.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "matplotlib", version = "3.10.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, - { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, - { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, - { name = "omegaconf" }, - { name = "pandas" }, - { name = "paramiko" }, - { name = "pyyaml" }, - { name = "ray", extra = ["data", "serve", "train", "tune"] }, - { name = "scikit-learn", version = "1.6.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "scikit-learn", version = "1.7.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, - { name = "scipy", version = "1.13.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, - { name = "scipy", version = "1.16.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, - { name = "seaborn" }, - { name = "tables", version = "3.9.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "tables", version = "3.10.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, - { name = "tables", version = "3.10.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, - { name = "torch", version = "2.7.1", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version >= '3.10' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, - { name = "torch", version = "2.7.1+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64') or platform_machine == 'x86_64' or sys_platform != 'darwin'" }, - { name = "torchaudio" }, - { name = "torchmetrics" }, - { name = "torchvision", version = "0.22.1", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version >= '3.10' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin') or (platform_machine == 'aarch64' and sys_platform == 'linux')" }, - { name = "torchvision", version = "0.22.1+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (platform_machine == 'x86_64' and sys_platform == 'darwin') or (platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" }, - { name = "tqdm" }, -] - -[package.metadata] -requires-dist = [ - { name = "h5py" }, - { name = "hydra-core" }, - { name = "ipykernel" }, - { name = "ipywidgets" }, - { name = "jupyter" }, - { name = "lightning" }, - { name = "matplotlib" }, - { name = "numpy" }, - { name = "omegaconf" }, - { name = "pandas" }, - { name = "paramiko" }, - { name = "pyyaml" }, - { name = "ray", extras = ["data", "train", "tune", "serve"] }, - { name = "scikit-learn" }, - { name = "scipy" }, - { name = "seaborn" }, - { name = "tables" }, - { name = "torch", index = "https://download.pytorch.org/whl/cpu" }, - { name = "torchaudio" }, - { name = "torchmetrics" }, - { name = "torchvision", index = "https://download.pytorch.org/whl/cpu" }, - { name = "tqdm" }, -] - -[[package]] -name = "fastapi" -version = "0.116.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pydantic" }, - { name = "starlette" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/78/d7/6c8b3bfe33eeffa208183ec037fee0cce9f7f024089ab1c5d12ef04bd27c/fastapi-0.116.1.tar.gz", hash = "sha256:ed52cbf946abfd70c5a0dccb24673f0670deeb517a88b3544d03c2a6bf283143", size = 296485, upload-time = "2025-07-11T16:22:32.057Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e5/47/d63c60f59a59467fda0f93f46335c9d18526d7071f025cb5b89d5353ea42/fastapi-0.116.1-py3-none-any.whl", hash = "sha256:c46ac7c312df840f0c9e220f7964bada936781bc4e2e6eb71f1c4d7553786565", size = 95631, upload-time = "2025-07-11T16:22:30.485Z" }, -] - -[[package]] -name = "fastjsonschema" -version = "2.21.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8b/50/4b769ce1ac4071a1ef6d86b1a3fb56cdc3a37615e8c5519e1af96cdac366/fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4", size = 373939, upload-time = "2024-12-02T10:55:15.133Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/90/2b/0817a2b257fe88725c25589d89aec060581aabf668707a8d03b2e9e0cb2a/fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667", size = 23924, upload-time = "2024-12-02T10:55:07.599Z" }, -] - [[package]] name = "filelock" version = "3.18.0" @@ -1174,126 +693,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d7/d4/1d85a1996b6188cd2713230e002d79a6f3a289bb17cef600cba385848b72/fonttools-4.58.5-py3-none-any.whl", hash = "sha256:e48a487ed24d9b611c5c4b25db1e50e69e9854ca2670e39a3486ffcd98863ec4", size = 1115318, upload-time = "2025-07-03T14:04:45.378Z" }, ] -[[package]] -name = "fqdn" -version = "1.5.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/30/3e/a80a8c077fd798951169626cde3e239adeba7dab75deb3555716415bd9b0/fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f", size = 6015, upload-time = "2021-03-11T07:16:29.08Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cf/58/8acf1b3e91c58313ce5cb67df61001fc9dcd21be4fadb76c1a2d540e09ed/fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014", size = 9121, upload-time = "2021-03-11T07:16:28.351Z" }, -] - -[[package]] -name = "frozenlist" -version = "1.7.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/79/b1/b64018016eeb087db503b038296fd782586432b9c077fc5c7839e9cb6ef6/frozenlist-1.7.0.tar.gz", hash = "sha256:2e310d81923c2437ea8670467121cc3e9b0f76d3043cc1d2331d56c7fb7a3a8f", size = 45078, upload-time = "2025-06-09T23:02:35.538Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/af/36/0da0a49409f6b47cc2d060dc8c9040b897b5902a8a4e37d9bc1deb11f680/frozenlist-1.7.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cc4df77d638aa2ed703b878dd093725b72a824c3c546c076e8fdf276f78ee84a", size = 81304, upload-time = "2025-06-09T22:59:46.226Z" }, - { url = "https://files.pythonhosted.org/packages/77/f0/77c11d13d39513b298e267b22eb6cb559c103d56f155aa9a49097221f0b6/frozenlist-1.7.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:716a9973a2cc963160394f701964fe25012600f3d311f60c790400b00e568b61", size = 47735, upload-time = "2025-06-09T22:59:48.133Z" }, - { url = "https://files.pythonhosted.org/packages/37/12/9d07fa18971a44150593de56b2f2947c46604819976784bcf6ea0d5db43b/frozenlist-1.7.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a0fd1bad056a3600047fb9462cff4c5322cebc59ebf5d0a3725e0ee78955001d", size = 46775, upload-time = "2025-06-09T22:59:49.564Z" }, - { url = "https://files.pythonhosted.org/packages/70/34/f73539227e06288fcd1f8a76853e755b2b48bca6747e99e283111c18bcd4/frozenlist-1.7.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3789ebc19cb811163e70fe2bd354cea097254ce6e707ae42e56f45e31e96cb8e", size = 224644, upload-time = "2025-06-09T22:59:51.35Z" }, - { url = "https://files.pythonhosted.org/packages/fb/68/c1d9c2f4a6e438e14613bad0f2973567586610cc22dcb1e1241da71de9d3/frozenlist-1.7.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:af369aa35ee34f132fcfad5be45fbfcde0e3a5f6a1ec0712857f286b7d20cca9", size = 222125, upload-time = "2025-06-09T22:59:52.884Z" }, - { url = "https://files.pythonhosted.org/packages/b9/d0/98e8f9a515228d708344d7c6986752be3e3192d1795f748c24bcf154ad99/frozenlist-1.7.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac64b6478722eeb7a3313d494f8342ef3478dff539d17002f849101b212ef97c", size = 233455, upload-time = "2025-06-09T22:59:54.74Z" }, - { url = "https://files.pythonhosted.org/packages/79/df/8a11bcec5600557f40338407d3e5bea80376ed1c01a6c0910fcfdc4b8993/frozenlist-1.7.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f89f65d85774f1797239693cef07ad4c97fdd0639544bad9ac4b869782eb1981", size = 227339, upload-time = "2025-06-09T22:59:56.187Z" }, - { url = "https://files.pythonhosted.org/packages/50/82/41cb97d9c9a5ff94438c63cc343eb7980dac4187eb625a51bdfdb7707314/frozenlist-1.7.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1073557c941395fdfcfac13eb2456cb8aad89f9de27bae29fabca8e563b12615", size = 212969, upload-time = "2025-06-09T22:59:57.604Z" }, - { url = "https://files.pythonhosted.org/packages/13/47/f9179ee5ee4f55629e4f28c660b3fdf2775c8bfde8f9c53f2de2d93f52a9/frozenlist-1.7.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ed8d2fa095aae4bdc7fdd80351009a48d286635edffee66bf865e37a9125c50", size = 222862, upload-time = "2025-06-09T22:59:59.498Z" }, - { url = "https://files.pythonhosted.org/packages/1a/52/df81e41ec6b953902c8b7e3a83bee48b195cb0e5ec2eabae5d8330c78038/frozenlist-1.7.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:24c34bea555fe42d9f928ba0a740c553088500377448febecaa82cc3e88aa1fa", size = 222492, upload-time = "2025-06-09T23:00:01.026Z" }, - { url = "https://files.pythonhosted.org/packages/84/17/30d6ea87fa95a9408245a948604b82c1a4b8b3e153cea596421a2aef2754/frozenlist-1.7.0-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:69cac419ac6a6baad202c85aaf467b65ac860ac2e7f2ac1686dc40dbb52f6577", size = 238250, upload-time = "2025-06-09T23:00:03.401Z" }, - { url = "https://files.pythonhosted.org/packages/8f/00/ecbeb51669e3c3df76cf2ddd66ae3e48345ec213a55e3887d216eb4fbab3/frozenlist-1.7.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:960d67d0611f4c87da7e2ae2eacf7ea81a5be967861e0c63cf205215afbfac59", size = 218720, upload-time = "2025-06-09T23:00:05.282Z" }, - { url = "https://files.pythonhosted.org/packages/1a/c0/c224ce0e0eb31cc57f67742071bb470ba8246623c1823a7530be0e76164c/frozenlist-1.7.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:41be2964bd4b15bf575e5daee5a5ce7ed3115320fb3c2b71fca05582ffa4dc9e", size = 232585, upload-time = "2025-06-09T23:00:07.962Z" }, - { url = "https://files.pythonhosted.org/packages/55/3c/34cb694abf532f31f365106deebdeac9e45c19304d83cf7d51ebbb4ca4d1/frozenlist-1.7.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:46d84d49e00c9429238a7ce02dc0be8f6d7cd0cd405abd1bebdc991bf27c15bd", size = 234248, upload-time = "2025-06-09T23:00:09.428Z" }, - { url = "https://files.pythonhosted.org/packages/98/c0/2052d8b6cecda2e70bd81299e3512fa332abb6dcd2969b9c80dfcdddbf75/frozenlist-1.7.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:15900082e886edb37480335d9d518cec978afc69ccbc30bd18610b7c1b22a718", size = 221621, upload-time = "2025-06-09T23:00:11.32Z" }, - { url = "https://files.pythonhosted.org/packages/c5/bf/7dcebae315436903b1d98ffb791a09d674c88480c158aa171958a3ac07f0/frozenlist-1.7.0-cp310-cp310-win32.whl", hash = "sha256:400ddd24ab4e55014bba442d917203c73b2846391dd42ca5e38ff52bb18c3c5e", size = 39578, upload-time = "2025-06-09T23:00:13.526Z" }, - { url = "https://files.pythonhosted.org/packages/8f/5f/f69818f017fa9a3d24d1ae39763e29b7f60a59e46d5f91b9c6b21622f4cd/frozenlist-1.7.0-cp310-cp310-win_amd64.whl", hash = "sha256:6eb93efb8101ef39d32d50bce242c84bcbddb4f7e9febfa7b524532a239b4464", size = 43830, upload-time = "2025-06-09T23:00:14.98Z" }, - { url = "https://files.pythonhosted.org/packages/34/7e/803dde33760128acd393a27eb002f2020ddb8d99d30a44bfbaab31c5f08a/frozenlist-1.7.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:aa51e147a66b2d74de1e6e2cf5921890de6b0f4820b257465101d7f37b49fb5a", size = 82251, upload-time = "2025-06-09T23:00:16.279Z" }, - { url = "https://files.pythonhosted.org/packages/75/a9/9c2c5760b6ba45eae11334db454c189d43d34a4c0b489feb2175e5e64277/frozenlist-1.7.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9b35db7ce1cd71d36ba24f80f0c9e7cff73a28d7a74e91fe83e23d27c7828750", size = 48183, upload-time = "2025-06-09T23:00:17.698Z" }, - { url = "https://files.pythonhosted.org/packages/47/be/4038e2d869f8a2da165f35a6befb9158c259819be22eeaf9c9a8f6a87771/frozenlist-1.7.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:34a69a85e34ff37791e94542065c8416c1afbf820b68f720452f636d5fb990cd", size = 47107, upload-time = "2025-06-09T23:00:18.952Z" }, - { url = "https://files.pythonhosted.org/packages/79/26/85314b8a83187c76a37183ceed886381a5f992975786f883472fcb6dc5f2/frozenlist-1.7.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a646531fa8d82c87fe4bb2e596f23173caec9185bfbca5d583b4ccfb95183e2", size = 237333, upload-time = "2025-06-09T23:00:20.275Z" }, - { url = "https://files.pythonhosted.org/packages/1f/fd/e5b64f7d2c92a41639ffb2ad44a6a82f347787abc0c7df5f49057cf11770/frozenlist-1.7.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:79b2ffbba483f4ed36a0f236ccb85fbb16e670c9238313709638167670ba235f", size = 231724, upload-time = "2025-06-09T23:00:21.705Z" }, - { url = "https://files.pythonhosted.org/packages/20/fb/03395c0a43a5976af4bf7534759d214405fbbb4c114683f434dfdd3128ef/frozenlist-1.7.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a26f205c9ca5829cbf82bb2a84b5c36f7184c4316617d7ef1b271a56720d6b30", size = 245842, upload-time = "2025-06-09T23:00:23.148Z" }, - { url = "https://files.pythonhosted.org/packages/d0/15/c01c8e1dffdac5d9803507d824f27aed2ba76b6ed0026fab4d9866e82f1f/frozenlist-1.7.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bcacfad3185a623fa11ea0e0634aac7b691aa925d50a440f39b458e41c561d98", size = 239767, upload-time = "2025-06-09T23:00:25.103Z" }, - { url = "https://files.pythonhosted.org/packages/14/99/3f4c6fe882c1f5514b6848aa0a69b20cb5e5d8e8f51a339d48c0e9305ed0/frozenlist-1.7.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:72c1b0fe8fe451b34f12dce46445ddf14bd2a5bcad7e324987194dc8e3a74c86", size = 224130, upload-time = "2025-06-09T23:00:27.061Z" }, - { url = "https://files.pythonhosted.org/packages/4d/83/220a374bd7b2aeba9d0725130665afe11de347d95c3620b9b82cc2fcab97/frozenlist-1.7.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61d1a5baeaac6c0798ff6edfaeaa00e0e412d49946c53fae8d4b8e8b3566c4ae", size = 235301, upload-time = "2025-06-09T23:00:29.02Z" }, - { url = "https://files.pythonhosted.org/packages/03/3c/3e3390d75334a063181625343e8daab61b77e1b8214802cc4e8a1bb678fc/frozenlist-1.7.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7edf5c043c062462f09b6820de9854bf28cc6cc5b6714b383149745e287181a8", size = 234606, upload-time = "2025-06-09T23:00:30.514Z" }, - { url = "https://files.pythonhosted.org/packages/23/1e/58232c19608b7a549d72d9903005e2d82488f12554a32de2d5fb59b9b1ba/frozenlist-1.7.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:d50ac7627b3a1bd2dcef6f9da89a772694ec04d9a61b66cf87f7d9446b4a0c31", size = 248372, upload-time = "2025-06-09T23:00:31.966Z" }, - { url = "https://files.pythonhosted.org/packages/c0/a4/e4a567e01702a88a74ce8a324691e62a629bf47d4f8607f24bf1c7216e7f/frozenlist-1.7.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ce48b2fece5aeb45265bb7a58259f45027db0abff478e3077e12b05b17fb9da7", size = 229860, upload-time = "2025-06-09T23:00:33.375Z" }, - { url = "https://files.pythonhosted.org/packages/73/a6/63b3374f7d22268b41a9db73d68a8233afa30ed164c46107b33c4d18ecdd/frozenlist-1.7.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:fe2365ae915a1fafd982c146754e1de6ab3478def8a59c86e1f7242d794f97d5", size = 245893, upload-time = "2025-06-09T23:00:35.002Z" }, - { url = "https://files.pythonhosted.org/packages/6d/eb/d18b3f6e64799a79673c4ba0b45e4cfbe49c240edfd03a68be20002eaeaa/frozenlist-1.7.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:45a6f2fdbd10e074e8814eb98b05292f27bad7d1883afbe009d96abdcf3bc898", size = 246323, upload-time = "2025-06-09T23:00:36.468Z" }, - { url = "https://files.pythonhosted.org/packages/5a/f5/720f3812e3d06cd89a1d5db9ff6450088b8f5c449dae8ffb2971a44da506/frozenlist-1.7.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:21884e23cffabb157a9dd7e353779077bf5b8f9a58e9b262c6caad2ef5f80a56", size = 233149, upload-time = "2025-06-09T23:00:37.963Z" }, - { url = "https://files.pythonhosted.org/packages/69/68/03efbf545e217d5db8446acfd4c447c15b7c8cf4dbd4a58403111df9322d/frozenlist-1.7.0-cp311-cp311-win32.whl", hash = "sha256:284d233a8953d7b24f9159b8a3496fc1ddc00f4db99c324bd5fb5f22d8698ea7", size = 39565, upload-time = "2025-06-09T23:00:39.753Z" }, - { url = "https://files.pythonhosted.org/packages/58/17/fe61124c5c333ae87f09bb67186d65038834a47d974fc10a5fadb4cc5ae1/frozenlist-1.7.0-cp311-cp311-win_amd64.whl", hash = "sha256:387cbfdcde2f2353f19c2f66bbb52406d06ed77519ac7ee21be0232147c2592d", size = 44019, upload-time = "2025-06-09T23:00:40.988Z" }, - { url = "https://files.pythonhosted.org/packages/ef/a2/c8131383f1e66adad5f6ecfcce383d584ca94055a34d683bbb24ac5f2f1c/frozenlist-1.7.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:3dbf9952c4bb0e90e98aec1bd992b3318685005702656bc6f67c1a32b76787f2", size = 81424, upload-time = "2025-06-09T23:00:42.24Z" }, - { url = "https://files.pythonhosted.org/packages/4c/9d/02754159955088cb52567337d1113f945b9e444c4960771ea90eb73de8db/frozenlist-1.7.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:1f5906d3359300b8a9bb194239491122e6cf1444c2efb88865426f170c262cdb", size = 47952, upload-time = "2025-06-09T23:00:43.481Z" }, - { url = "https://files.pythonhosted.org/packages/01/7a/0046ef1bd6699b40acd2067ed6d6670b4db2f425c56980fa21c982c2a9db/frozenlist-1.7.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3dabd5a8f84573c8d10d8859a50ea2dec01eea372031929871368c09fa103478", size = 46688, upload-time = "2025-06-09T23:00:44.793Z" }, - { url = "https://files.pythonhosted.org/packages/d6/a2/a910bafe29c86997363fb4c02069df4ff0b5bc39d33c5198b4e9dd42d8f8/frozenlist-1.7.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa57daa5917f1738064f302bf2626281a1cb01920c32f711fbc7bc36111058a8", size = 243084, upload-time = "2025-06-09T23:00:46.125Z" }, - { url = "https://files.pythonhosted.org/packages/64/3e/5036af9d5031374c64c387469bfcc3af537fc0f5b1187d83a1cf6fab1639/frozenlist-1.7.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c193dda2b6d49f4c4398962810fa7d7c78f032bf45572b3e04dd5249dff27e08", size = 233524, upload-time = "2025-06-09T23:00:47.73Z" }, - { url = "https://files.pythonhosted.org/packages/06/39/6a17b7c107a2887e781a48ecf20ad20f1c39d94b2a548c83615b5b879f28/frozenlist-1.7.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bfe2b675cf0aaa6d61bf8fbffd3c274b3c9b7b1623beb3809df8a81399a4a9c4", size = 248493, upload-time = "2025-06-09T23:00:49.742Z" }, - { url = "https://files.pythonhosted.org/packages/be/00/711d1337c7327d88c44d91dd0f556a1c47fb99afc060ae0ef66b4d24793d/frozenlist-1.7.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8fc5d5cda37f62b262405cf9652cf0856839c4be8ee41be0afe8858f17f4c94b", size = 244116, upload-time = "2025-06-09T23:00:51.352Z" }, - { url = "https://files.pythonhosted.org/packages/24/fe/74e6ec0639c115df13d5850e75722750adabdc7de24e37e05a40527ca539/frozenlist-1.7.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b0d5ce521d1dd7d620198829b87ea002956e4319002ef0bc8d3e6d045cb4646e", size = 224557, upload-time = "2025-06-09T23:00:52.855Z" }, - { url = "https://files.pythonhosted.org/packages/8d/db/48421f62a6f77c553575201e89048e97198046b793f4a089c79a6e3268bd/frozenlist-1.7.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:488d0a7d6a0008ca0db273c542098a0fa9e7dfaa7e57f70acef43f32b3f69dca", size = 241820, upload-time = "2025-06-09T23:00:54.43Z" }, - { url = "https://files.pythonhosted.org/packages/1d/fa/cb4a76bea23047c8462976ea7b7a2bf53997a0ca171302deae9d6dd12096/frozenlist-1.7.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:15a7eaba63983d22c54d255b854e8108e7e5f3e89f647fc854bd77a237e767df", size = 236542, upload-time = "2025-06-09T23:00:56.409Z" }, - { url = "https://files.pythonhosted.org/packages/5d/32/476a4b5cfaa0ec94d3f808f193301debff2ea42288a099afe60757ef6282/frozenlist-1.7.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:1eaa7e9c6d15df825bf255649e05bd8a74b04a4d2baa1ae46d9c2d00b2ca2cb5", size = 249350, upload-time = "2025-06-09T23:00:58.468Z" }, - { url = "https://files.pythonhosted.org/packages/8d/ba/9a28042f84a6bf8ea5dbc81cfff8eaef18d78b2a1ad9d51c7bc5b029ad16/frozenlist-1.7.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e4389e06714cfa9d47ab87f784a7c5be91d3934cd6e9a7b85beef808297cc025", size = 225093, upload-time = "2025-06-09T23:01:00.015Z" }, - { url = "https://files.pythonhosted.org/packages/bc/29/3a32959e68f9cf000b04e79ba574527c17e8842e38c91d68214a37455786/frozenlist-1.7.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:73bd45e1488c40b63fe5a7df892baf9e2a4d4bb6409a2b3b78ac1c6236178e01", size = 245482, upload-time = "2025-06-09T23:01:01.474Z" }, - { url = "https://files.pythonhosted.org/packages/80/e8/edf2f9e00da553f07f5fa165325cfc302dead715cab6ac8336a5f3d0adc2/frozenlist-1.7.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:99886d98e1643269760e5fe0df31e5ae7050788dd288947f7f007209b8c33f08", size = 249590, upload-time = "2025-06-09T23:01:02.961Z" }, - { url = "https://files.pythonhosted.org/packages/1c/80/9a0eb48b944050f94cc51ee1c413eb14a39543cc4f760ed12657a5a3c45a/frozenlist-1.7.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:290a172aae5a4c278c6da8a96222e6337744cd9c77313efe33d5670b9f65fc43", size = 237785, upload-time = "2025-06-09T23:01:05.095Z" }, - { url = "https://files.pythonhosted.org/packages/f3/74/87601e0fb0369b7a2baf404ea921769c53b7ae00dee7dcfe5162c8c6dbf0/frozenlist-1.7.0-cp312-cp312-win32.whl", hash = "sha256:426c7bc70e07cfebc178bc4c2bf2d861d720c4fff172181eeb4a4c41d4ca2ad3", size = 39487, upload-time = "2025-06-09T23:01:06.54Z" }, - { url = "https://files.pythonhosted.org/packages/0b/15/c026e9a9fc17585a9d461f65d8593d281fedf55fbf7eb53f16c6df2392f9/frozenlist-1.7.0-cp312-cp312-win_amd64.whl", hash = "sha256:563b72efe5da92e02eb68c59cb37205457c977aa7a449ed1b37e6939e5c47c6a", size = 43874, upload-time = "2025-06-09T23:01:07.752Z" }, - { url = "https://files.pythonhosted.org/packages/24/90/6b2cebdabdbd50367273c20ff6b57a3dfa89bd0762de02c3a1eb42cb6462/frozenlist-1.7.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ee80eeda5e2a4e660651370ebffd1286542b67e268aa1ac8d6dbe973120ef7ee", size = 79791, upload-time = "2025-06-09T23:01:09.368Z" }, - { url = "https://files.pythonhosted.org/packages/83/2e/5b70b6a3325363293fe5fc3ae74cdcbc3e996c2a11dde2fd9f1fb0776d19/frozenlist-1.7.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d1a81c85417b914139e3a9b995d4a1c84559afc839a93cf2cb7f15e6e5f6ed2d", size = 47165, upload-time = "2025-06-09T23:01:10.653Z" }, - { url = "https://files.pythonhosted.org/packages/f4/25/a0895c99270ca6966110f4ad98e87e5662eab416a17e7fd53c364bf8b954/frozenlist-1.7.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cbb65198a9132ebc334f237d7b0df163e4de83fb4f2bdfe46c1e654bdb0c5d43", size = 45881, upload-time = "2025-06-09T23:01:12.296Z" }, - { url = "https://files.pythonhosted.org/packages/19/7c/71bb0bbe0832793c601fff68cd0cf6143753d0c667f9aec93d3c323f4b55/frozenlist-1.7.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dab46c723eeb2c255a64f9dc05b8dd601fde66d6b19cdb82b2e09cc6ff8d8b5d", size = 232409, upload-time = "2025-06-09T23:01:13.641Z" }, - { url = "https://files.pythonhosted.org/packages/c0/45/ed2798718910fe6eb3ba574082aaceff4528e6323f9a8570be0f7028d8e9/frozenlist-1.7.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:6aeac207a759d0dedd2e40745575ae32ab30926ff4fa49b1635def65806fddee", size = 225132, upload-time = "2025-06-09T23:01:15.264Z" }, - { url = "https://files.pythonhosted.org/packages/ba/e2/8417ae0f8eacb1d071d4950f32f229aa6bf68ab69aab797b72a07ea68d4f/frozenlist-1.7.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bd8c4e58ad14b4fa7802b8be49d47993182fdd4023393899632c88fd8cd994eb", size = 237638, upload-time = "2025-06-09T23:01:16.752Z" }, - { url = "https://files.pythonhosted.org/packages/f8/b7/2ace5450ce85f2af05a871b8c8719b341294775a0a6c5585d5e6170f2ce7/frozenlist-1.7.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:04fb24d104f425da3540ed83cbfc31388a586a7696142004c577fa61c6298c3f", size = 233539, upload-time = "2025-06-09T23:01:18.202Z" }, - { url = "https://files.pythonhosted.org/packages/46/b9/6989292c5539553dba63f3c83dc4598186ab2888f67c0dc1d917e6887db6/frozenlist-1.7.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6a5c505156368e4ea6b53b5ac23c92d7edc864537ff911d2fb24c140bb175e60", size = 215646, upload-time = "2025-06-09T23:01:19.649Z" }, - { url = "https://files.pythonhosted.org/packages/72/31/bc8c5c99c7818293458fe745dab4fd5730ff49697ccc82b554eb69f16a24/frozenlist-1.7.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8bd7eb96a675f18aa5c553eb7ddc24a43c8c18f22e1f9925528128c052cdbe00", size = 232233, upload-time = "2025-06-09T23:01:21.175Z" }, - { url = "https://files.pythonhosted.org/packages/59/52/460db4d7ba0811b9ccb85af996019f5d70831f2f5f255f7cc61f86199795/frozenlist-1.7.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:05579bf020096fe05a764f1f84cd104a12f78eaab68842d036772dc6d4870b4b", size = 227996, upload-time = "2025-06-09T23:01:23.098Z" }, - { url = "https://files.pythonhosted.org/packages/ba/c9/f4b39e904c03927b7ecf891804fd3b4df3db29b9e487c6418e37988d6e9d/frozenlist-1.7.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:376b6222d114e97eeec13d46c486facd41d4f43bab626b7c3f6a8b4e81a5192c", size = 242280, upload-time = "2025-06-09T23:01:24.808Z" }, - { url = "https://files.pythonhosted.org/packages/b8/33/3f8d6ced42f162d743e3517781566b8481322be321b486d9d262adf70bfb/frozenlist-1.7.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:0aa7e176ebe115379b5b1c95b4096fb1c17cce0847402e227e712c27bdb5a949", size = 217717, upload-time = "2025-06-09T23:01:26.28Z" }, - { url = "https://files.pythonhosted.org/packages/3e/e8/ad683e75da6ccef50d0ab0c2b2324b32f84fc88ceee778ed79b8e2d2fe2e/frozenlist-1.7.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:3fbba20e662b9c2130dc771e332a99eff5da078b2b2648153a40669a6d0e36ca", size = 236644, upload-time = "2025-06-09T23:01:27.887Z" }, - { url = "https://files.pythonhosted.org/packages/b2/14/8d19ccdd3799310722195a72ac94ddc677541fb4bef4091d8e7775752360/frozenlist-1.7.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:f3f4410a0a601d349dd406b5713fec59b4cee7e71678d5b17edda7f4655a940b", size = 238879, upload-time = "2025-06-09T23:01:29.524Z" }, - { url = "https://files.pythonhosted.org/packages/ce/13/c12bf657494c2fd1079a48b2db49fa4196325909249a52d8f09bc9123fd7/frozenlist-1.7.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e2cdfaaec6a2f9327bf43c933c0319a7c429058e8537c508964a133dffee412e", size = 232502, upload-time = "2025-06-09T23:01:31.287Z" }, - { url = "https://files.pythonhosted.org/packages/d7/8b/e7f9dfde869825489382bc0d512c15e96d3964180c9499efcec72e85db7e/frozenlist-1.7.0-cp313-cp313-win32.whl", hash = "sha256:5fc4df05a6591c7768459caba1b342d9ec23fa16195e744939ba5914596ae3e1", size = 39169, upload-time = "2025-06-09T23:01:35.503Z" }, - { url = "https://files.pythonhosted.org/packages/35/89/a487a98d94205d85745080a37860ff5744b9820a2c9acbcdd9440bfddf98/frozenlist-1.7.0-cp313-cp313-win_amd64.whl", hash = "sha256:52109052b9791a3e6b5d1b65f4b909703984b770694d3eb64fad124c835d7cba", size = 43219, upload-time = "2025-06-09T23:01:36.784Z" }, - { url = "https://files.pythonhosted.org/packages/56/d5/5c4cf2319a49eddd9dd7145e66c4866bdc6f3dbc67ca3d59685149c11e0d/frozenlist-1.7.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:a6f86e4193bb0e235ef6ce3dde5cbabed887e0b11f516ce8a0f4d3b33078ec2d", size = 84345, upload-time = "2025-06-09T23:01:38.295Z" }, - { url = "https://files.pythonhosted.org/packages/a4/7d/ec2c1e1dc16b85bc9d526009961953df9cec8481b6886debb36ec9107799/frozenlist-1.7.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:82d664628865abeb32d90ae497fb93df398a69bb3434463d172b80fc25b0dd7d", size = 48880, upload-time = "2025-06-09T23:01:39.887Z" }, - { url = "https://files.pythonhosted.org/packages/69/86/f9596807b03de126e11e7d42ac91e3d0b19a6599c714a1989a4e85eeefc4/frozenlist-1.7.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:912a7e8375a1c9a68325a902f3953191b7b292aa3c3fb0d71a216221deca460b", size = 48498, upload-time = "2025-06-09T23:01:41.318Z" }, - { url = "https://files.pythonhosted.org/packages/5e/cb/df6de220f5036001005f2d726b789b2c0b65f2363b104bbc16f5be8084f8/frozenlist-1.7.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9537c2777167488d539bc5de2ad262efc44388230e5118868e172dd4a552b146", size = 292296, upload-time = "2025-06-09T23:01:42.685Z" }, - { url = "https://files.pythonhosted.org/packages/83/1f/de84c642f17c8f851a2905cee2dae401e5e0daca9b5ef121e120e19aa825/frozenlist-1.7.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:f34560fb1b4c3e30ba35fa9a13894ba39e5acfc5f60f57d8accde65f46cc5e74", size = 273103, upload-time = "2025-06-09T23:01:44.166Z" }, - { url = "https://files.pythonhosted.org/packages/88/3c/c840bfa474ba3fa13c772b93070893c6e9d5c0350885760376cbe3b6c1b3/frozenlist-1.7.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:acd03d224b0175f5a850edc104ac19040d35419eddad04e7cf2d5986d98427f1", size = 292869, upload-time = "2025-06-09T23:01:45.681Z" }, - { url = "https://files.pythonhosted.org/packages/a6/1c/3efa6e7d5a39a1d5ef0abeb51c48fb657765794a46cf124e5aca2c7a592c/frozenlist-1.7.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f2038310bc582f3d6a09b3816ab01737d60bf7b1ec70f5356b09e84fb7408ab1", size = 291467, upload-time = "2025-06-09T23:01:47.234Z" }, - { url = "https://files.pythonhosted.org/packages/4f/00/d5c5e09d4922c395e2f2f6b79b9a20dab4b67daaf78ab92e7729341f61f6/frozenlist-1.7.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b8c05e4c8e5f36e5e088caa1bf78a687528f83c043706640a92cb76cd6999384", size = 266028, upload-time = "2025-06-09T23:01:48.819Z" }, - { url = "https://files.pythonhosted.org/packages/4e/27/72765be905619dfde25a7f33813ac0341eb6b076abede17a2e3fbfade0cb/frozenlist-1.7.0-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:765bb588c86e47d0b68f23c1bee323d4b703218037765dcf3f25c838c6fecceb", size = 284294, upload-time = "2025-06-09T23:01:50.394Z" }, - { url = "https://files.pythonhosted.org/packages/88/67/c94103a23001b17808eb7dd1200c156bb69fb68e63fcf0693dde4cd6228c/frozenlist-1.7.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:32dc2e08c67d86d0969714dd484fd60ff08ff81d1a1e40a77dd34a387e6ebc0c", size = 281898, upload-time = "2025-06-09T23:01:52.234Z" }, - { url = "https://files.pythonhosted.org/packages/42/34/a3e2c00c00f9e2a9db5653bca3fec306349e71aff14ae45ecc6d0951dd24/frozenlist-1.7.0-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:c0303e597eb5a5321b4de9c68e9845ac8f290d2ab3f3e2c864437d3c5a30cd65", size = 290465, upload-time = "2025-06-09T23:01:53.788Z" }, - { url = "https://files.pythonhosted.org/packages/bb/73/f89b7fbce8b0b0c095d82b008afd0590f71ccb3dee6eee41791cf8cd25fd/frozenlist-1.7.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:a47f2abb4e29b3a8d0b530f7c3598badc6b134562b1a5caee867f7c62fee51e3", size = 266385, upload-time = "2025-06-09T23:01:55.769Z" }, - { url = "https://files.pythonhosted.org/packages/cd/45/e365fdb554159462ca12df54bc59bfa7a9a273ecc21e99e72e597564d1ae/frozenlist-1.7.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:3d688126c242a6fabbd92e02633414d40f50bb6002fa4cf995a1d18051525657", size = 288771, upload-time = "2025-06-09T23:01:57.4Z" }, - { url = "https://files.pythonhosted.org/packages/00/11/47b6117002a0e904f004d70ec5194fe9144f117c33c851e3d51c765962d0/frozenlist-1.7.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:4e7e9652b3d367c7bd449a727dc79d5043f48b88d0cbfd4f9f1060cf2b414104", size = 288206, upload-time = "2025-06-09T23:01:58.936Z" }, - { url = "https://files.pythonhosted.org/packages/40/37/5f9f3c3fd7f7746082ec67bcdc204db72dad081f4f83a503d33220a92973/frozenlist-1.7.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:1a85e345b4c43db8b842cab1feb41be5cc0b10a1830e6295b69d7310f99becaf", size = 282620, upload-time = "2025-06-09T23:02:00.493Z" }, - { url = "https://files.pythonhosted.org/packages/0b/31/8fbc5af2d183bff20f21aa743b4088eac4445d2bb1cdece449ae80e4e2d1/frozenlist-1.7.0-cp313-cp313t-win32.whl", hash = "sha256:3a14027124ddb70dfcee5148979998066897e79f89f64b13328595c4bdf77c81", size = 43059, upload-time = "2025-06-09T23:02:02.072Z" }, - { url = "https://files.pythonhosted.org/packages/bb/ed/41956f52105b8dbc26e457c5705340c67c8cc2b79f394b79bffc09d0e938/frozenlist-1.7.0-cp313-cp313t-win_amd64.whl", hash = "sha256:3bf8010d71d4507775f658e9823210b7427be36625b387221642725b515dcf3e", size = 47516, upload-time = "2025-06-09T23:02:03.779Z" }, - { url = "https://files.pythonhosted.org/packages/dd/b1/ee59496f51cd244039330015d60f13ce5a54a0f2bd8d79e4a4a375ab7469/frozenlist-1.7.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:cea3dbd15aea1341ea2de490574a4a37ca080b2ae24e4b4f4b51b9057b4c3630", size = 82434, upload-time = "2025-06-09T23:02:05.195Z" }, - { url = "https://files.pythonhosted.org/packages/75/e1/d518391ce36a6279b3fa5bc14327dde80bcb646bb50d059c6ca0756b8d05/frozenlist-1.7.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7d536ee086b23fecc36c2073c371572374ff50ef4db515e4e503925361c24f71", size = 48232, upload-time = "2025-06-09T23:02:07.728Z" }, - { url = "https://files.pythonhosted.org/packages/b7/8d/a0d04f28b6e821a9685c22e67b5fb798a5a7b68752f104bfbc2dccf080c4/frozenlist-1.7.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:dfcebf56f703cb2e346315431699f00db126d158455e513bd14089d992101e44", size = 47186, upload-time = "2025-06-09T23:02:09.243Z" }, - { url = "https://files.pythonhosted.org/packages/93/3a/a5334c0535c8b7c78eeabda1579179e44fe3d644e07118e59a2276dedaf1/frozenlist-1.7.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:974c5336e61d6e7eb1ea5b929cb645e882aadab0095c5a6974a111e6479f8878", size = 226617, upload-time = "2025-06-09T23:02:10.949Z" }, - { url = "https://files.pythonhosted.org/packages/0a/67/8258d971f519dc3f278c55069a775096cda6610a267b53f6248152b72b2f/frozenlist-1.7.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c70db4a0ab5ab20878432c40563573229a7ed9241506181bba12f6b7d0dc41cb", size = 224179, upload-time = "2025-06-09T23:02:12.603Z" }, - { url = "https://files.pythonhosted.org/packages/fc/89/8225905bf889b97c6d935dd3aeb45668461e59d415cb019619383a8a7c3b/frozenlist-1.7.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1137b78384eebaf70560a36b7b229f752fb64d463d38d1304939984d5cb887b6", size = 235783, upload-time = "2025-06-09T23:02:14.678Z" }, - { url = "https://files.pythonhosted.org/packages/54/6e/ef52375aa93d4bc510d061df06205fa6dcfd94cd631dd22956b09128f0d4/frozenlist-1.7.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e793a9f01b3e8b5c0bc646fb59140ce0efcc580d22a3468d70766091beb81b35", size = 229210, upload-time = "2025-06-09T23:02:16.313Z" }, - { url = "https://files.pythonhosted.org/packages/ee/55/62c87d1a6547bfbcd645df10432c129100c5bd0fd92a384de6e3378b07c1/frozenlist-1.7.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:74739ba8e4e38221d2c5c03d90a7e542cb8ad681915f4ca8f68d04f810ee0a87", size = 215994, upload-time = "2025-06-09T23:02:17.9Z" }, - { url = "https://files.pythonhosted.org/packages/45/d2/263fea1f658b8ad648c7d94d18a87bca7e8c67bd6a1bbf5445b1bd5b158c/frozenlist-1.7.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e63344c4e929b1a01e29bc184bbb5fd82954869033765bfe8d65d09e336a677", size = 225122, upload-time = "2025-06-09T23:02:19.479Z" }, - { url = "https://files.pythonhosted.org/packages/7b/22/7145e35d12fb368d92124f679bea87309495e2e9ddf14c6533990cb69218/frozenlist-1.7.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2ea2a7369eb76de2217a842f22087913cdf75f63cf1307b9024ab82dfb525938", size = 224019, upload-time = "2025-06-09T23:02:20.969Z" }, - { url = "https://files.pythonhosted.org/packages/44/1e/7dae8c54301beb87bcafc6144b9a103bfd2c8f38078c7902984c9a0c4e5b/frozenlist-1.7.0-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:836b42f472a0e006e02499cef9352ce8097f33df43baaba3e0a28a964c26c7d2", size = 239925, upload-time = "2025-06-09T23:02:22.466Z" }, - { url = "https://files.pythonhosted.org/packages/4b/1e/99c93e54aa382e949a98976a73b9b20c3aae6d9d893f31bbe4991f64e3a8/frozenlist-1.7.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:e22b9a99741294b2571667c07d9f8cceec07cb92aae5ccda39ea1b6052ed4319", size = 220881, upload-time = "2025-06-09T23:02:24.521Z" }, - { url = "https://files.pythonhosted.org/packages/5e/9c/ca5105fa7fb5abdfa8837581be790447ae051da75d32f25c8f81082ffc45/frozenlist-1.7.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:9a19e85cc503d958abe5218953df722748d87172f71b73cf3c9257a91b999890", size = 234046, upload-time = "2025-06-09T23:02:26.206Z" }, - { url = "https://files.pythonhosted.org/packages/8d/4d/e99014756093b4ddbb67fb8f0df11fe7a415760d69ace98e2ac6d5d43402/frozenlist-1.7.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:f22dac33bb3ee8fe3e013aa7b91dc12f60d61d05b7fe32191ffa84c3aafe77bd", size = 235756, upload-time = "2025-06-09T23:02:27.79Z" }, - { url = "https://files.pythonhosted.org/packages/8b/72/a19a40bcdaa28a51add2aaa3a1a294ec357f36f27bd836a012e070c5e8a5/frozenlist-1.7.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:9ccec739a99e4ccf664ea0775149f2749b8a6418eb5b8384b4dc0a7d15d304cb", size = 222894, upload-time = "2025-06-09T23:02:29.848Z" }, - { url = "https://files.pythonhosted.org/packages/08/49/0042469993e023a758af81db68c76907cd29e847d772334d4d201cbe9a42/frozenlist-1.7.0-cp39-cp39-win32.whl", hash = "sha256:b3950f11058310008a87757f3eee16a8e1ca97979833239439586857bc25482e", size = 39848, upload-time = "2025-06-09T23:02:31.413Z" }, - { url = "https://files.pythonhosted.org/packages/5a/45/827d86ee475c877f5f766fbc23fb6acb6fada9e52f1c9720e2ba3eae32da/frozenlist-1.7.0-cp39-cp39-win_amd64.whl", hash = "sha256:43a82fce6769c70f2f5a06248b614a7d268080a9d20f7457ef10ecee5af82b63", size = 44102, upload-time = "2025-06-09T23:02:32.808Z" }, - { url = "https://files.pythonhosted.org/packages/ee/45/b82e3c16be2182bff01179db177fe144d58b5dc787a7d4492c6ed8b9317f/frozenlist-1.7.0-py3-none-any.whl", hash = "sha256:9a5af342e34f7e97caf8c995864c7a396418ae2859cc6fdf1b1073020d516a7e", size = 13106, upload-time = "2025-06-09T23:02:34.204Z" }, -] - [[package]] name = "fsspec" version = "2025.5.1" @@ -1303,118 +702,52 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/bb/61/78c7b3851add1481b048b5fdc29067397a1784e2910592bc81bb3f608635/fsspec-2025.5.1-py3-none-any.whl", hash = "sha256:24d3a2e663d5fc735ab256263c4075f374a174c3410c0b25e5bd1970bceaa462", size = 199052, upload-time = "2025-05-24T12:03:21.66Z" }, ] -[package.optional-dependencies] -http = [ - { name = "aiohttp" }, -] - -[[package]] -name = "google-api-core" -version = "2.25.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "google-auth" }, - { name = "googleapis-common-protos" }, - { name = "proto-plus" }, - { name = "protobuf" }, - { name = "requests" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/dc/21/e9d043e88222317afdbdb567165fdbc3b0aad90064c7e0c9eb0ad9955ad8/google_api_core-2.25.1.tar.gz", hash = "sha256:d2aaa0b13c78c61cb3f4282c464c046e45fbd75755683c9c525e6e8f7ed0a5e8", size = 165443, upload-time = "2025-06-12T20:52:20.439Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/14/4b/ead00905132820b623732b175d66354e9d3e69fcf2a5dcdab780664e7896/google_api_core-2.25.1-py3-none-any.whl", hash = "sha256:8a2a56c1fef82987a524371f99f3bd0143702fecc670c72e600c1cda6bf8dbb7", size = 160807, upload-time = "2025-06-12T20:52:19.334Z" }, -] - [[package]] -name = "google-auth" -version = "2.40.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "cachetools" }, - { name = "pyasn1-modules" }, - { name = "rsa" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/9e/9b/e92ef23b84fa10a64ce4831390b7a4c2e53c0132568d99d4ae61d04c8855/google_auth-2.40.3.tar.gz", hash = "sha256:500c3a29adedeb36ea9cf24b8d10858e152f2412e3ca37829b3fa18e33d63b77", size = 281029, upload-time = "2025-06-04T18:04:57.577Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/17/63/b19553b658a1692443c62bd07e5868adaa0ad746a0751ba62c59568cd45b/google_auth-2.40.3-py2.py3-none-any.whl", hash = "sha256:1370d4593e86213563547f97a92752fc658456fe4514c809544f330fed45a7ca", size = 216137, upload-time = "2025-06-04T18:04:55.573Z" }, -] - -[[package]] -name = "googleapis-common-protos" -version = "1.70.0" -source = { registry = "https://pypi.org/simple" } +name = "fusionaihub" +version = "0.0.1" +source = { editable = "." } dependencies = [ - { name = "protobuf" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/39/24/33db22342cf4a2ea27c9955e6713140fedd51e8b141b5ce5260897020f1a/googleapis_common_protos-1.70.0.tar.gz", hash = "sha256:0e1b44e0ea153e6594f9f394fef15193a68aaaea2d843f83e2742717ca753257", size = 145903, upload-time = "2025-04-14T10:17:02.924Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/86/f1/62a193f0227cf15a920390abe675f386dec35f7ae3ffe6da582d3ade42c7/googleapis_common_protos-1.70.0-py3-none-any.whl", hash = "sha256:b8bfcca8c25a2bb253e0e0b0adaf8c00773e5e6af6fd92397576680b807e0fd8", size = 294530, upload-time = "2025-04-14T10:17:01.271Z" }, -] - -[[package]] -name = "grpcio" -version = "1.73.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/79/e8/b43b851537da2e2f03fa8be1aef207e5cbfb1a2e014fbb6b40d24c177cd3/grpcio-1.73.1.tar.gz", hash = "sha256:7fce2cd1c0c1116cf3850564ebfc3264fba75d3c74a7414373f1238ea365ef87", size = 12730355, upload-time = "2025-06-26T01:53:24.622Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/8f/51/a5748ab2773d893d099b92653039672f7e26dd35741020972b84d604066f/grpcio-1.73.1-cp310-cp310-linux_armv7l.whl", hash = "sha256:2d70f4ddd0a823436c2624640570ed6097e40935c9194482475fe8e3d9754d55", size = 5365087, upload-time = "2025-06-26T01:51:44.541Z" }, - { url = "https://files.pythonhosted.org/packages/ae/12/c5ee1a5dfe93dbc2eaa42a219e2bf887250b52e2e2ee5c036c4695f2769c/grpcio-1.73.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:3841a8a5a66830261ab6a3c2a3dc539ed84e4ab019165f77b3eeb9f0ba621f26", size = 10608921, upload-time = "2025-06-26T01:51:48.111Z" }, - { url = "https://files.pythonhosted.org/packages/c4/6d/b0c6a8120f02b7d15c5accda6bfc43bc92be70ada3af3ba6d8e077c00374/grpcio-1.73.1-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:628c30f8e77e0258ab788750ec92059fc3d6628590fb4b7cea8c102503623ed7", size = 5803221, upload-time = "2025-06-26T01:51:50.486Z" }, - { url = "https://files.pythonhosted.org/packages/a6/7a/3c886d9f1c1e416ae81f7f9c7d1995ae72cd64712d29dab74a6bafacb2d2/grpcio-1.73.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:67a0468256c9db6d5ecb1fde4bf409d016f42cef649323f0a08a72f352d1358b", size = 6444603, upload-time = "2025-06-26T01:51:52.203Z" }, - { url = "https://files.pythonhosted.org/packages/42/07/f143a2ff534982c9caa1febcad1c1073cdec732f6ac7545d85555a900a7e/grpcio-1.73.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68b84d65bbdebd5926eb5c53b0b9ec3b3f83408a30e4c20c373c5337b4219ec5", size = 6040969, upload-time = "2025-06-26T01:51:55.028Z" }, - { url = "https://files.pythonhosted.org/packages/fb/0f/523131b7c9196d0718e7b2dac0310eb307b4117bdbfef62382e760f7e8bb/grpcio-1.73.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c54796ca22b8349cc594d18b01099e39f2b7ffb586ad83217655781a350ce4da", size = 6132201, upload-time = "2025-06-26T01:51:56.867Z" }, - { url = "https://files.pythonhosted.org/packages/ad/18/010a055410eef1d3a7a1e477ec9d93b091ac664ad93e9c5f56d6cc04bdee/grpcio-1.73.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:75fc8e543962ece2f7ecd32ada2d44c0c8570ae73ec92869f9af8b944863116d", size = 6774718, upload-time = "2025-06-26T01:51:58.338Z" }, - { url = "https://files.pythonhosted.org/packages/16/11/452bfc1ab39d8ee748837ab8ee56beeae0290861052948785c2c445fb44b/grpcio-1.73.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6a6037891cd2b1dd1406b388660522e1565ed340b1fea2955b0234bdd941a862", size = 6304362, upload-time = "2025-06-26T01:51:59.802Z" }, - { url = "https://files.pythonhosted.org/packages/1e/1c/c75ceee626465721e5cb040cf4b271eff817aa97388948660884cb7adffa/grpcio-1.73.1-cp310-cp310-win32.whl", hash = "sha256:cce7265b9617168c2d08ae570fcc2af4eaf72e84f8c710ca657cc546115263af", size = 3679036, upload-time = "2025-06-26T01:52:01.817Z" }, - { url = "https://files.pythonhosted.org/packages/62/2e/42cb31b6cbd671a7b3dbd97ef33f59088cf60e3cf2141368282e26fafe79/grpcio-1.73.1-cp310-cp310-win_amd64.whl", hash = "sha256:6a2b372e65fad38842050943f42ce8fee00c6f2e8ea4f7754ba7478d26a356ee", size = 4340208, upload-time = "2025-06-26T01:52:03.674Z" }, - { url = "https://files.pythonhosted.org/packages/e4/41/921565815e871d84043e73e2c0e748f0318dab6fa9be872cd042778f14a9/grpcio-1.73.1-cp311-cp311-linux_armv7l.whl", hash = "sha256:ba2cea9f7ae4bc21f42015f0ec98f69ae4179848ad744b210e7685112fa507a1", size = 5363853, upload-time = "2025-06-26T01:52:05.5Z" }, - { url = "https://files.pythonhosted.org/packages/b0/cc/9c51109c71d068e4d474becf5f5d43c9d63038cec1b74112978000fa72f4/grpcio-1.73.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:d74c3f4f37b79e746271aa6cdb3a1d7e4432aea38735542b23adcabaaee0c097", size = 10621476, upload-time = "2025-06-26T01:52:07.211Z" }, - { url = "https://files.pythonhosted.org/packages/8f/d3/33d738a06f6dbd4943f4d377468f8299941a7c8c6ac8a385e4cef4dd3c93/grpcio-1.73.1-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:5b9b1805a7d61c9e90541cbe8dfe0a593dfc8c5c3a43fe623701b6a01b01d710", size = 5807903, upload-time = "2025-06-26T01:52:09.466Z" }, - { url = "https://files.pythonhosted.org/packages/5d/47/36deacd3c967b74e0265f4c608983e897d8bb3254b920f8eafdf60e4ad7e/grpcio-1.73.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3215f69a0670a8cfa2ab53236d9e8026bfb7ead5d4baabe7d7dc11d30fda967", size = 6448172, upload-time = "2025-06-26T01:52:11.459Z" }, - { url = "https://files.pythonhosted.org/packages/0e/64/12d6dc446021684ee1428ea56a3f3712048a18beeadbdefa06e6f8814a6e/grpcio-1.73.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc5eccfd9577a5dc7d5612b2ba90cca4ad14c6d949216c68585fdec9848befb1", size = 6044226, upload-time = "2025-06-26T01:52:12.987Z" }, - { url = "https://files.pythonhosted.org/packages/72/4b/6bae2d88a006000f1152d2c9c10ffd41d0131ca1198e0b661101c2e30ab9/grpcio-1.73.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:dc7d7fd520614fce2e6455ba89791458020a39716951c7c07694f9dbae28e9c0", size = 6135690, upload-time = "2025-06-26T01:52:14.92Z" }, - { url = "https://files.pythonhosted.org/packages/38/64/02c83b5076510784d1305025e93e0d78f53bb6a0213c8c84cfe8a00c5c48/grpcio-1.73.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:105492124828911f85127e4825d1c1234b032cb9d238567876b5515d01151379", size = 6775867, upload-time = "2025-06-26T01:52:16.446Z" }, - { url = "https://files.pythonhosted.org/packages/42/72/a13ff7ba6c68ccffa35dacdc06373a76c0008fd75777cba84d7491956620/grpcio-1.73.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:610e19b04f452ba6f402ac9aa94eb3d21fbc94553368008af634812c4a85a99e", size = 6308380, upload-time = "2025-06-26T01:52:18.417Z" }, - { url = "https://files.pythonhosted.org/packages/65/ae/d29d948021faa0070ec33245c1ae354e2aefabd97e6a9a7b6dcf0fb8ef6b/grpcio-1.73.1-cp311-cp311-win32.whl", hash = "sha256:d60588ab6ba0ac753761ee0e5b30a29398306401bfbceffe7d68ebb21193f9d4", size = 3679139, upload-time = "2025-06-26T01:52:20.171Z" }, - { url = "https://files.pythonhosted.org/packages/af/66/e1bbb0c95ea222947f0829b3db7692c59b59bcc531df84442e413fa983d9/grpcio-1.73.1-cp311-cp311-win_amd64.whl", hash = "sha256:6957025a4608bb0a5ff42abd75bfbb2ed99eda29d5992ef31d691ab54b753643", size = 4342558, upload-time = "2025-06-26T01:52:22.137Z" }, - { url = "https://files.pythonhosted.org/packages/b8/41/456caf570c55d5ac26f4c1f2db1f2ac1467d5bf3bcd660cba3e0a25b195f/grpcio-1.73.1-cp312-cp312-linux_armv7l.whl", hash = "sha256:921b25618b084e75d424a9f8e6403bfeb7abef074bb6c3174701e0f2542debcf", size = 5334621, upload-time = "2025-06-26T01:52:23.602Z" }, - { url = "https://files.pythonhosted.org/packages/2a/c2/9a15e179e49f235bb5e63b01590658c03747a43c9775e20c4e13ca04f4c4/grpcio-1.73.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:277b426a0ed341e8447fbf6c1d6b68c952adddf585ea4685aa563de0f03df887", size = 10601131, upload-time = "2025-06-26T01:52:25.691Z" }, - { url = "https://files.pythonhosted.org/packages/0c/1d/1d39e90ef6348a0964caa7c5c4d05f3bae2c51ab429eb7d2e21198ac9b6d/grpcio-1.73.1-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:96c112333309493c10e118d92f04594f9055774757f5d101b39f8150f8c25582", size = 5759268, upload-time = "2025-06-26T01:52:27.631Z" }, - { url = "https://files.pythonhosted.org/packages/8a/2b/2dfe9ae43de75616177bc576df4c36d6401e0959833b2e5b2d58d50c1f6b/grpcio-1.73.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f48e862aed925ae987eb7084409a80985de75243389dc9d9c271dd711e589918", size = 6409791, upload-time = "2025-06-26T01:52:29.711Z" }, - { url = "https://files.pythonhosted.org/packages/6e/66/e8fe779b23b5a26d1b6949e5c70bc0a5fd08f61a6ec5ac7760d589229511/grpcio-1.73.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:83a6c2cce218e28f5040429835fa34a29319071079e3169f9543c3fbeff166d2", size = 6003728, upload-time = "2025-06-26T01:52:31.352Z" }, - { url = "https://files.pythonhosted.org/packages/a9/39/57a18fcef567784108c4fc3f5441cb9938ae5a51378505aafe81e8e15ecc/grpcio-1.73.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:65b0458a10b100d815a8426b1442bd17001fdb77ea13665b2f7dc9e8587fdc6b", size = 6103364, upload-time = "2025-06-26T01:52:33.028Z" }, - { url = "https://files.pythonhosted.org/packages/c5/46/28919d2aa038712fc399d02fa83e998abd8c1f46c2680c5689deca06d1b2/grpcio-1.73.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:0a9f3ea8dce9eae9d7cb36827200133a72b37a63896e0e61a9d5ec7d61a59ab1", size = 6749194, upload-time = "2025-06-26T01:52:34.734Z" }, - { url = "https://files.pythonhosted.org/packages/3d/56/3898526f1fad588c5d19a29ea0a3a4996fb4fa7d7c02dc1be0c9fd188b62/grpcio-1.73.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:de18769aea47f18e782bf6819a37c1c528914bfd5683b8782b9da356506190c8", size = 6283902, upload-time = "2025-06-26T01:52:36.503Z" }, - { url = "https://files.pythonhosted.org/packages/dc/64/18b77b89c5870d8ea91818feb0c3ffb5b31b48d1b0ee3e0f0d539730fea3/grpcio-1.73.1-cp312-cp312-win32.whl", hash = "sha256:24e06a5319e33041e322d32c62b1e728f18ab8c9dbc91729a3d9f9e3ed336642", size = 3668687, upload-time = "2025-06-26T01:52:38.678Z" }, - { url = "https://files.pythonhosted.org/packages/3c/52/302448ca6e52f2a77166b2e2ed75f5d08feca4f2145faf75cb768cccb25b/grpcio-1.73.1-cp312-cp312-win_amd64.whl", hash = "sha256:303c8135d8ab176f8038c14cc10d698ae1db9c480f2b2823f7a987aa2a4c5646", size = 4334887, upload-time = "2025-06-26T01:52:40.743Z" }, - { url = "https://files.pythonhosted.org/packages/37/bf/4ca20d1acbefabcaba633ab17f4244cbbe8eca877df01517207bd6655914/grpcio-1.73.1-cp313-cp313-linux_armv7l.whl", hash = "sha256:b310824ab5092cf74750ebd8a8a8981c1810cb2b363210e70d06ef37ad80d4f9", size = 5335615, upload-time = "2025-06-26T01:52:42.896Z" }, - { url = "https://files.pythonhosted.org/packages/75/ed/45c345f284abec5d4f6d77cbca9c52c39b554397eb7de7d2fcf440bcd049/grpcio-1.73.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:8f5a6df3fba31a3485096ac85b2e34b9666ffb0590df0cd044f58694e6a1f6b5", size = 10595497, upload-time = "2025-06-26T01:52:44.695Z" }, - { url = "https://files.pythonhosted.org/packages/a4/75/bff2c2728018f546d812b755455014bc718f8cdcbf5c84f1f6e5494443a8/grpcio-1.73.1-cp313-cp313-manylinux_2_17_aarch64.whl", hash = "sha256:052e28fe9c41357da42250a91926a3e2f74c046575c070b69659467ca5aa976b", size = 5765321, upload-time = "2025-06-26T01:52:46.871Z" }, - { url = "https://files.pythonhosted.org/packages/70/3b/14e43158d3b81a38251b1d231dfb45a9b492d872102a919fbf7ba4ac20cd/grpcio-1.73.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c0bf15f629b1497436596b1cbddddfa3234273490229ca29561209778ebe182", size = 6415436, upload-time = "2025-06-26T01:52:49.134Z" }, - { url = "https://files.pythonhosted.org/packages/e5/3f/81d9650ca40b54338336fd360f36773be8cb6c07c036e751d8996eb96598/grpcio-1.73.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ab860d5bfa788c5a021fba264802e2593688cd965d1374d31d2b1a34cacd854", size = 6007012, upload-time = "2025-06-26T01:52:51.076Z" }, - { url = "https://files.pythonhosted.org/packages/55/f4/59edf5af68d684d0f4f7ad9462a418ac517201c238551529098c9aa28cb0/grpcio-1.73.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:ad1d958c31cc91ab050bd8a91355480b8e0683e21176522bacea225ce51163f2", size = 6105209, upload-time = "2025-06-26T01:52:52.773Z" }, - { url = "https://files.pythonhosted.org/packages/e4/a8/700d034d5d0786a5ba14bfa9ce974ed4c976936c2748c2bd87aa50f69b36/grpcio-1.73.1-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:f43ffb3bd415c57224c7427bfb9e6c46a0b6e998754bfa0d00f408e1873dcbb5", size = 6753655, upload-time = "2025-06-26T01:52:55.064Z" }, - { url = "https://files.pythonhosted.org/packages/1f/29/efbd4ac837c23bc48e34bbaf32bd429f0dc9ad7f80721cdb4622144c118c/grpcio-1.73.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:686231cdd03a8a8055f798b2b54b19428cdf18fa1549bee92249b43607c42668", size = 6287288, upload-time = "2025-06-26T01:52:57.33Z" }, - { url = "https://files.pythonhosted.org/packages/d8/61/c6045d2ce16624bbe18b5d169c1a5ce4d6c3a47bc9d0e5c4fa6a50ed1239/grpcio-1.73.1-cp313-cp313-win32.whl", hash = "sha256:89018866a096e2ce21e05eabed1567479713ebe57b1db7cbb0f1e3b896793ba4", size = 3668151, upload-time = "2025-06-26T01:52:59.405Z" }, - { url = "https://files.pythonhosted.org/packages/c2/d7/77ac689216daee10de318db5aa1b88d159432dc76a130948a56b3aa671a2/grpcio-1.73.1-cp313-cp313-win_amd64.whl", hash = "sha256:4a68f8c9966b94dff693670a5cf2b54888a48a5011c5d9ce2295a1a1465ee84f", size = 4335747, upload-time = "2025-06-26T01:53:01.233Z" }, - { url = "https://files.pythonhosted.org/packages/58/c7/f552f0e79e7f585ff8c35b703342bd70a93a46fdf6d8b6574f33d39acb74/grpcio-1.73.1-cp39-cp39-linux_armv7l.whl", hash = "sha256:b4adc97d2d7f5c660a5498bda978ebb866066ad10097265a5da0511323ae9f50", size = 5363972, upload-time = "2025-06-26T01:53:03.185Z" }, - { url = "https://files.pythonhosted.org/packages/2c/63/226989531ea73030775ef87ac6c01460384f7c6ea7423e93383674e60a81/grpcio-1.73.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:c45a28a0cfb6ddcc7dc50a29de44ecac53d115c3388b2782404218db51cb2df3", size = 10614120, upload-time = "2025-06-26T01:53:05.643Z" }, - { url = "https://files.pythonhosted.org/packages/45/63/12027d4a09b613efa481447f5d12a52804d77287325bbfeed39d72cf29da/grpcio-1.73.1-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:10af9f2ab98a39f5b6c1896c6fc2036744b5b41d12739d48bed4c3e15b6cf900", size = 5804172, upload-time = "2025-06-26T01:53:07.828Z" }, - { url = "https://files.pythonhosted.org/packages/09/c5/a158c4fa26c0f203966664f37e52175c0c262772a8c39b78812b2e39a9e8/grpcio-1.73.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:45cf17dcce5ebdb7b4fe9e86cb338fa99d7d1bb71defc78228e1ddf8d0de8cbb", size = 6445602, upload-time = "2025-06-26T01:53:09.657Z" }, - { url = "https://files.pythonhosted.org/packages/cb/e2/d6fb85964d52d30baace1a6b2fe1be7941882239ae1f1cda2aaa80827ccd/grpcio-1.73.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c502c2e950fc7e8bf05c047e8a14522ef7babac59abbfde6dbf46b7a0d9c71e", size = 6041413, upload-time = "2025-06-26T01:53:11.591Z" }, - { url = "https://files.pythonhosted.org/packages/da/a6/8d06b3de85486ac71a49a656d7ff546974f3a5449ecb6178fd62a3251cdb/grpcio-1.73.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6abfc0f9153dc4924536f40336f88bd4fe7bd7494f028675e2e04291b8c2c62a", size = 6133190, upload-time = "2025-06-26T01:53:13.888Z" }, - { url = "https://files.pythonhosted.org/packages/5d/80/73f86bc940fd570f2486673424277bfdef8b0046309fd693856d31f1c1df/grpcio-1.73.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:ed451a0e39c8e51eb1612b78686839efd1a920666d1666c1adfdb4fd51680c0f", size = 6775225, upload-time = "2025-06-26T01:53:15.718Z" }, - { url = "https://files.pythonhosted.org/packages/23/c5/722cfa1b6b5f747a2066291eb8ba3acbcd25f02ce9dc9088eafb7f92eb6d/grpcio-1.73.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:07f08705a5505c9b5b0cbcbabafb96462b5a15b7236bbf6bbcc6b0b91e1cbd7e", size = 6305332, upload-time = "2025-06-26T01:53:18.363Z" }, - { url = "https://files.pythonhosted.org/packages/a9/d8/8ecdccf7759249a6d124c624e2b5a26176d44e91be78975c9aabbe81159b/grpcio-1.73.1-cp39-cp39-win32.whl", hash = "sha256:ad5c958cc3d98bb9d71714dc69f1c13aaf2f4b53e29d4cc3f1501ef2e4d129b2", size = 3680535, upload-time = "2025-06-26T01:53:20.266Z" }, - { url = "https://files.pythonhosted.org/packages/2c/d9/e7369ba582129094ecedb16f60e3cd250cd0fb0ea28adbdcf98002b4f80a/grpcio-1.73.1-cp39-cp39-win_amd64.whl", hash = "sha256:42f0660bce31b745eb9d23f094a332d31f210dcadd0fc8e5be7e4c62a87ce86b", size = 4342138, upload-time = "2025-06-26T01:53:22.095Z" }, + { name = "h5py" }, + { name = "ipykernel" }, + { name = "ipywidgets" }, + { name = "matplotlib", version = "3.9.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "matplotlib", version = "3.10.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "opencv-python" }, + { name = "pandas" }, + { name = "paramiko" }, + { name = "pyyaml" }, + { name = "scikit-learn", version = "1.6.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "scikit-learn", version = "1.7.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "scipy", version = "1.13.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "scipy", version = "1.16.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "tables", version = "3.9.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "tables", version = "3.10.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "tables", version = "3.10.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "torch", version = "2.7.1", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version >= '3.10' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, + { name = "torch", version = "2.7.1+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version < '3.10' and platform_machine != 'arm64') or sys_platform != 'darwin'" }, + { name = "tqdm" }, ] -[[package]] -name = "h11" -version = "0.16.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250, upload-time = "2025-04-24T03:35:25.427Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" }, +[package.metadata] +requires-dist = [ + { name = "h5py" }, + { name = "ipykernel", specifier = ">=6.29.5" }, + { name = "ipywidgets", specifier = ">=8.1.7" }, + { name = "matplotlib" }, + { name = "numpy" }, + { name = "opencv-python" }, + { name = "pandas" }, + { name = "paramiko" }, + { name = "pyyaml", specifier = ">=6.0.2" }, + { name = "scikit-learn", specifier = ">=1.6.1" }, + { name = "scipy" }, + { name = "tables", specifier = ">=3.9.2" }, + { name = "torch", specifier = ">=2.7.1", index = "https://download.pytorch.org/whl/cpu" }, + { name = "tqdm" }, ] [[package]] @@ -1455,91 +788,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b4/e4/fb8032d0e5480b1db9b419b5b50737b61bb3c7187c49d809975d62129fb0/h5py-3.14.0-cp39-cp39-win_amd64.whl", hash = "sha256:4f025cf30ae738c4c4e38c7439a761a71ccfcce04c2b87b2a2ac64e8c5171d43", size = 2877166, upload-time = "2025-06-06T14:06:13.05Z" }, ] -[[package]] -name = "httpcore" -version = "1.0.9" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "certifi" }, - { name = "h11" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484, upload-time = "2025-04-24T22:06:22.219Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784, upload-time = "2025-04-24T22:06:20.566Z" }, -] - -[[package]] -name = "httptools" -version = "0.6.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a7/9a/ce5e1f7e131522e6d3426e8e7a490b3a01f39a6696602e1c4f33f9e94277/httptools-0.6.4.tar.gz", hash = "sha256:4e93eee4add6493b59a5c514da98c939b244fce4a0d8879cd3f466562f4b7d5c", size = 240639, upload-time = "2024-10-16T19:45:08.902Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3b/6f/972f8eb0ea7d98a1c6be436e2142d51ad2a64ee18e02b0e7ff1f62171ab1/httptools-0.6.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3c73ce323711a6ffb0d247dcd5a550b8babf0f757e86a52558fe5b86d6fefcc0", size = 198780, upload-time = "2024-10-16T19:44:06.882Z" }, - { url = "https://files.pythonhosted.org/packages/6a/b0/17c672b4bc5c7ba7f201eada4e96c71d0a59fbc185e60e42580093a86f21/httptools-0.6.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:345c288418f0944a6fe67be8e6afa9262b18c7626c3ef3c28adc5eabc06a68da", size = 103297, upload-time = "2024-10-16T19:44:08.129Z" }, - { url = "https://files.pythonhosted.org/packages/92/5e/b4a826fe91971a0b68e8c2bd4e7db3e7519882f5a8ccdb1194be2b3ab98f/httptools-0.6.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:deee0e3343f98ee8047e9f4c5bc7cedbf69f5734454a94c38ee829fb2d5fa3c1", size = 443130, upload-time = "2024-10-16T19:44:09.45Z" }, - { url = "https://files.pythonhosted.org/packages/b0/51/ce61e531e40289a681a463e1258fa1e05e0be54540e40d91d065a264cd8f/httptools-0.6.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca80b7485c76f768a3bc83ea58373f8db7b015551117375e4918e2aa77ea9b50", size = 442148, upload-time = "2024-10-16T19:44:11.539Z" }, - { url = "https://files.pythonhosted.org/packages/ea/9e/270b7d767849b0c96f275c695d27ca76c30671f8eb8cc1bab6ced5c5e1d0/httptools-0.6.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:90d96a385fa941283ebd231464045187a31ad932ebfa541be8edf5b3c2328959", size = 415949, upload-time = "2024-10-16T19:44:13.388Z" }, - { url = "https://files.pythonhosted.org/packages/81/86/ced96e3179c48c6f656354e106934e65c8963d48b69be78f355797f0e1b3/httptools-0.6.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:59e724f8b332319e2875efd360e61ac07f33b492889284a3e05e6d13746876f4", size = 417591, upload-time = "2024-10-16T19:44:15.258Z" }, - { url = "https://files.pythonhosted.org/packages/75/73/187a3f620ed3175364ddb56847d7a608a6fc42d551e133197098c0143eca/httptools-0.6.4-cp310-cp310-win_amd64.whl", hash = "sha256:c26f313951f6e26147833fc923f78f95604bbec812a43e5ee37f26dc9e5a686c", size = 88344, upload-time = "2024-10-16T19:44:16.54Z" }, - { url = "https://files.pythonhosted.org/packages/7b/26/bb526d4d14c2774fe07113ca1db7255737ffbb119315839af2065abfdac3/httptools-0.6.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f47f8ed67cc0ff862b84a1189831d1d33c963fb3ce1ee0c65d3b0cbe7b711069", size = 199029, upload-time = "2024-10-16T19:44:18.427Z" }, - { url = "https://files.pythonhosted.org/packages/a6/17/3e0d3e9b901c732987a45f4f94d4e2c62b89a041d93db89eafb262afd8d5/httptools-0.6.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0614154d5454c21b6410fdf5262b4a3ddb0f53f1e1721cfd59d55f32138c578a", size = 103492, upload-time = "2024-10-16T19:44:19.515Z" }, - { url = "https://files.pythonhosted.org/packages/b7/24/0fe235d7b69c42423c7698d086d4db96475f9b50b6ad26a718ef27a0bce6/httptools-0.6.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8787367fbdfccae38e35abf7641dafc5310310a5987b689f4c32cc8cc3ee975", size = 462891, upload-time = "2024-10-16T19:44:21.067Z" }, - { url = "https://files.pythonhosted.org/packages/b1/2f/205d1f2a190b72da6ffb5f41a3736c26d6fa7871101212b15e9b5cd8f61d/httptools-0.6.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40b0f7fe4fd38e6a507bdb751db0379df1e99120c65fbdc8ee6c1d044897a636", size = 459788, upload-time = "2024-10-16T19:44:22.958Z" }, - { url = "https://files.pythonhosted.org/packages/6e/4c/d09ce0eff09057a206a74575ae8f1e1e2f0364d20e2442224f9e6612c8b9/httptools-0.6.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:40a5ec98d3f49904b9fe36827dcf1aadfef3b89e2bd05b0e35e94f97c2b14721", size = 433214, upload-time = "2024-10-16T19:44:24.513Z" }, - { url = "https://files.pythonhosted.org/packages/3e/d2/84c9e23edbccc4a4c6f96a1b8d99dfd2350289e94f00e9ccc7aadde26fb5/httptools-0.6.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:dacdd3d10ea1b4ca9df97a0a303cbacafc04b5cd375fa98732678151643d4988", size = 434120, upload-time = "2024-10-16T19:44:26.295Z" }, - { url = "https://files.pythonhosted.org/packages/d0/46/4d8e7ba9581416de1c425b8264e2cadd201eb709ec1584c381f3e98f51c1/httptools-0.6.4-cp311-cp311-win_amd64.whl", hash = "sha256:288cd628406cc53f9a541cfaf06041b4c71d751856bab45e3702191f931ccd17", size = 88565, upload-time = "2024-10-16T19:44:29.188Z" }, - { url = "https://files.pythonhosted.org/packages/bb/0e/d0b71465c66b9185f90a091ab36389a7352985fe857e352801c39d6127c8/httptools-0.6.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:df017d6c780287d5c80601dafa31f17bddb170232d85c066604d8558683711a2", size = 200683, upload-time = "2024-10-16T19:44:30.175Z" }, - { url = "https://files.pythonhosted.org/packages/e2/b8/412a9bb28d0a8988de3296e01efa0bd62068b33856cdda47fe1b5e890954/httptools-0.6.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:85071a1e8c2d051b507161f6c3e26155b5c790e4e28d7f236422dbacc2a9cc44", size = 104337, upload-time = "2024-10-16T19:44:31.786Z" }, - { url = "https://files.pythonhosted.org/packages/9b/01/6fb20be3196ffdc8eeec4e653bc2a275eca7f36634c86302242c4fbb2760/httptools-0.6.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69422b7f458c5af875922cdb5bd586cc1f1033295aa9ff63ee196a87519ac8e1", size = 508796, upload-time = "2024-10-16T19:44:32.825Z" }, - { url = "https://files.pythonhosted.org/packages/f7/d8/b644c44acc1368938317d76ac991c9bba1166311880bcc0ac297cb9d6bd7/httptools-0.6.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16e603a3bff50db08cd578d54f07032ca1631450ceb972c2f834c2b860c28ea2", size = 510837, upload-time = "2024-10-16T19:44:33.974Z" }, - { url = "https://files.pythonhosted.org/packages/52/d8/254d16a31d543073a0e57f1c329ca7378d8924e7e292eda72d0064987486/httptools-0.6.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ec4f178901fa1834d4a060320d2f3abc5c9e39766953d038f1458cb885f47e81", size = 485289, upload-time = "2024-10-16T19:44:35.111Z" }, - { url = "https://files.pythonhosted.org/packages/5f/3c/4aee161b4b7a971660b8be71a92c24d6c64372c1ab3ae7f366b3680df20f/httptools-0.6.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f9eb89ecf8b290f2e293325c646a211ff1c2493222798bb80a530c5e7502494f", size = 489779, upload-time = "2024-10-16T19:44:36.253Z" }, - { url = "https://files.pythonhosted.org/packages/12/b7/5cae71a8868e555f3f67a50ee7f673ce36eac970f029c0c5e9d584352961/httptools-0.6.4-cp312-cp312-win_amd64.whl", hash = "sha256:db78cb9ca56b59b016e64b6031eda5653be0589dba2b1b43453f6e8b405a0970", size = 88634, upload-time = "2024-10-16T19:44:37.357Z" }, - { url = "https://files.pythonhosted.org/packages/94/a3/9fe9ad23fd35f7de6b91eeb60848986058bd8b5a5c1e256f5860a160cc3e/httptools-0.6.4-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ade273d7e767d5fae13fa637f4d53b6e961fb7fd93c7797562663f0171c26660", size = 197214, upload-time = "2024-10-16T19:44:38.738Z" }, - { url = "https://files.pythonhosted.org/packages/ea/d9/82d5e68bab783b632023f2fa31db20bebb4e89dfc4d2293945fd68484ee4/httptools-0.6.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:856f4bc0478ae143bad54a4242fccb1f3f86a6e1be5548fecfd4102061b3a083", size = 102431, upload-time = "2024-10-16T19:44:39.818Z" }, - { url = "https://files.pythonhosted.org/packages/96/c1/cb499655cbdbfb57b577734fde02f6fa0bbc3fe9fb4d87b742b512908dff/httptools-0.6.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:322d20ea9cdd1fa98bd6a74b77e2ec5b818abdc3d36695ab402a0de8ef2865a3", size = 473121, upload-time = "2024-10-16T19:44:41.189Z" }, - { url = "https://files.pythonhosted.org/packages/af/71/ee32fd358f8a3bb199b03261f10921716990808a675d8160b5383487a317/httptools-0.6.4-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4d87b29bd4486c0093fc64dea80231f7c7f7eb4dc70ae394d70a495ab8436071", size = 473805, upload-time = "2024-10-16T19:44:42.384Z" }, - { url = "https://files.pythonhosted.org/packages/8a/0a/0d4df132bfca1507114198b766f1737d57580c9ad1cf93c1ff673e3387be/httptools-0.6.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:342dd6946aa6bda4b8f18c734576106b8a31f2fe31492881a9a160ec84ff4bd5", size = 448858, upload-time = "2024-10-16T19:44:43.959Z" }, - { url = "https://files.pythonhosted.org/packages/1e/6a/787004fdef2cabea27bad1073bf6a33f2437b4dbd3b6fb4a9d71172b1c7c/httptools-0.6.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4b36913ba52008249223042dca46e69967985fb4051951f94357ea681e1f5dc0", size = 452042, upload-time = "2024-10-16T19:44:45.071Z" }, - { url = "https://files.pythonhosted.org/packages/4d/dc/7decab5c404d1d2cdc1bb330b1bf70e83d6af0396fd4fc76fc60c0d522bf/httptools-0.6.4-cp313-cp313-win_amd64.whl", hash = "sha256:28908df1b9bb8187393d5b5db91435ccc9c8e891657f9cbb42a2541b44c82fc8", size = 87682, upload-time = "2024-10-16T19:44:46.46Z" }, - { url = "https://files.pythonhosted.org/packages/51/b1/4fc6f52afdf93b7c4304e21f6add9e981e4f857c2fa622a55dfe21b6059e/httptools-0.6.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:85797e37e8eeaa5439d33e556662cc370e474445d5fab24dcadc65a8ffb04003", size = 201123, upload-time = "2024-10-16T19:44:59.13Z" }, - { url = "https://files.pythonhosted.org/packages/c2/01/e6ecb40ac8fdfb76607c7d3b74a41b464458d5c8710534d8f163b0c15f29/httptools-0.6.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:db353d22843cf1028f43c3651581e4bb49374d85692a85f95f7b9a130e1b2cab", size = 104507, upload-time = "2024-10-16T19:45:00.254Z" }, - { url = "https://files.pythonhosted.org/packages/dc/24/c70c34119d209bf08199d938dc9c69164f585ed3029237b4bdb90f673cb9/httptools-0.6.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1ffd262a73d7c28424252381a5b854c19d9de5f56f075445d33919a637e3547", size = 449615, upload-time = "2024-10-16T19:45:01.351Z" }, - { url = "https://files.pythonhosted.org/packages/2b/62/e7f317fed3703bd81053840cacba4e40bcf424b870e4197f94bd1cf9fe7a/httptools-0.6.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:703c346571fa50d2e9856a37d7cd9435a25e7fd15e236c397bf224afaa355fe9", size = 448819, upload-time = "2024-10-16T19:45:02.652Z" }, - { url = "https://files.pythonhosted.org/packages/2a/13/68337d3be6b023260139434c49d7aa466aaa98f9aee7ed29270ac7dde6a2/httptools-0.6.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:aafe0f1918ed07b67c1e838f950b1c1fabc683030477e60b335649b8020e1076", size = 422093, upload-time = "2024-10-16T19:45:03.765Z" }, - { url = "https://files.pythonhosted.org/packages/fc/b3/3a1bc45be03dda7a60c7858e55b6cd0489a81613c1908fb81cf21d34ae50/httptools-0.6.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0e563e54979e97b6d13f1bbc05a96109923e76b901f786a5eae36e99c01237bd", size = 423898, upload-time = "2024-10-16T19:45:05.683Z" }, - { url = "https://files.pythonhosted.org/packages/05/72/2ddc2ae5f7ace986f7e68a326215b2e7c32e32fd40e6428fa8f1d8065c7e/httptools-0.6.4-cp39-cp39-win_amd64.whl", hash = "sha256:b799de31416ecc589ad79dd85a0b2657a8fe39327944998dea368c1d4c9e55e6", size = 89552, upload-time = "2024-10-16T19:45:07.566Z" }, -] - -[[package]] -name = "httpx" -version = "0.28.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "anyio" }, - { name = "certifi" }, - { name = "httpcore" }, - { name = "idna" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406, upload-time = "2024-12-06T15:37:23.222Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload-time = "2024-12-06T15:37:21.509Z" }, -] - -[[package]] -name = "hydra-core" -version = "1.3.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "antlr4-python3-runtime" }, - { name = "omegaconf" }, - { name = "packaging" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/6d/8e/07e42bc434a847154083b315779b0a81d567154504624e181caf2c71cd98/hydra-core-1.3.2.tar.gz", hash = "sha256:8a878ed67216997c3e9d88a8e72e7b4767e81af37afb4ea3334b269a4390a824", size = 3263494, upload-time = "2023-02-23T18:33:43.03Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c6/50/e0edd38dcd63fb26a8547f13d28f7a008bc4a3fd4eb4ff030673f22ad41a/hydra_core-1.3.2-py3-none-any.whl", hash = "sha256:fa0238a9e31df3373b35b0bfb672c34cc92718d21f81311d8996a16de1141d8b", size = 154547, upload-time = "2023-02-23T18:33:40.801Z" }, -] - [[package]] name = "idna" version = "3.10" @@ -1554,7 +802,7 @@ name = "importlib-metadata" version = "8.7.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "zipp" }, + { name = "zipp", marker = "python_full_version < '3.10'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/76/66/650a33bd90f786193e4de4b3ad86ea60b53c89b669a5c7be931fac31cdb0/importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000", size = 56641, upload-time = "2025-04-27T15:29:01.736Z" } wheels = [ @@ -1606,8 +854,7 @@ source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", ] dependencies = [ { name = "colorama", marker = "python_full_version < '3.10' and sys_platform == 'win32'" }, @@ -1632,8 +879,7 @@ name = "ipython" version = "8.37.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and sys_platform == 'darwin'", "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -1660,16 +906,10 @@ name = "ipython" version = "9.4.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -1721,18 +961,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/58/6a/9166369a2f092bd286d24e6307de555d63616e8ddb373ebad2b5635ca4cd/ipywidgets-8.1.7-py3-none-any.whl", hash = "sha256:764f2602d25471c213919b8a1997df04bef869251db4ca8efba1b76b1bd9f7bb", size = 139806, upload-time = "2025-05-05T12:41:56.833Z" }, ] -[[package]] -name = "isoduration" -version = "20.11.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "arrow" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/7c/1a/3c8edc664e06e6bd06cce40c6b22da5f1429aa4224d0c590f3be21c91ead/isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9", size = 11649, upload-time = "2020-11-01T11:00:00.312Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/55/e5326141505c5d5e34c5e0935d2908a74e4561eca44108fbfb9c13d2911a/isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042", size = 11321, upload-time = "2020-11-01T10:59:58.02Z" }, -] - [[package]] name = "jedi" version = "0.19.2" @@ -1761,264 +989,40 @@ wheels = [ name = "joblib" version = "1.5.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/dc/fe/0f5a938c54105553436dbff7a61dc4fed4b1b2c98852f8833beaf4d5968f/joblib-1.5.1.tar.gz", hash = "sha256:f4f86e351f39fe3d0d32a9f2c3d8af1ee4cec285aafcb27003dda5205576b444", size = 330475, upload-time = "2025-05-23T12:04:37.097Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7d/4f/1195bbac8e0c2acc5f740661631d8d750dc38d4a32b23ee5df3cde6f4e0d/joblib-1.5.1-py3-none-any.whl", hash = "sha256:4719a31f054c7d766948dcd83e9613686b27114f190f717cec7eaa2084f8a74a", size = 307746, upload-time = "2025-05-23T12:04:35.124Z" }, -] - -[[package]] -name = "json5" -version = "0.12.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/12/be/c6c745ec4c4539b25a278b70e29793f10382947df0d9efba2fa09120895d/json5-0.12.0.tar.gz", hash = "sha256:0b4b6ff56801a1c7dc817b0241bca4ce474a0e6a163bfef3fc594d3fd263ff3a", size = 51907, upload-time = "2025-04-03T16:33:13.201Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/41/9f/3500910d5a98549e3098807493851eeef2b89cdd3032227558a104dfe926/json5-0.12.0-py3-none-any.whl", hash = "sha256:6d37aa6c08b0609f16e1ec5ff94697e2cbbfbad5ac112afa05794da9ab7810db", size = 36079, upload-time = "2025-04-03T16:33:11.927Z" }, -] - -[[package]] -name = "jsonpointer" -version = "3.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6a/0a/eebeb1fa92507ea94016a2a790b93c2ae41a7e18778f85471dc54475ed25/jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef", size = 9114, upload-time = "2024-06-10T19:24:42.462Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/71/92/5e77f98553e9e75130c78900d000368476aed74276eb8ae8796f65f00918/jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942", size = 7595, upload-time = "2024-06-10T19:24:40.698Z" }, -] - -[[package]] -name = "jsonschema" -version = "4.24.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "attrs" }, - { name = "jsonschema-specifications" }, - { name = "referencing" }, - { name = "rpds-py" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/bf/d3/1cf5326b923a53515d8f3a2cd442e6d7e94fcc444716e879ea70a0ce3177/jsonschema-4.24.0.tar.gz", hash = "sha256:0b4e8069eb12aedfa881333004bccaec24ecef5a8a6a4b6df142b2cc9599d196", size = 353480, upload-time = "2025-05-26T18:48:10.459Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a2/3d/023389198f69c722d039351050738d6755376c8fd343e91dc493ea485905/jsonschema-4.24.0-py3-none-any.whl", hash = "sha256:a462455f19f5faf404a7902952b6f0e3ce868f3ee09a359b05eca6673bd8412d", size = 88709, upload-time = "2025-05-26T18:48:08.417Z" }, -] - -[package.optional-dependencies] -format-nongpl = [ - { name = "fqdn" }, - { name = "idna" }, - { name = "isoduration" }, - { name = "jsonpointer" }, - { name = "rfc3339-validator" }, - { name = "rfc3986-validator" }, - { name = "uri-template" }, - { name = "webcolors" }, -] - -[[package]] -name = "jsonschema-specifications" -version = "2025.4.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "referencing" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/bf/ce/46fbd9c8119cfc3581ee5643ea49464d168028cfb5caff5fc0596d0cf914/jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608", size = 15513, upload-time = "2025-04-23T12:34:07.418Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/01/0e/b27cdbaccf30b890c40ed1da9fd4a3593a5cf94dae54fb34f8a4b74fcd3f/jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af", size = 18437, upload-time = "2025-04-23T12:34:05.422Z" }, -] - -[[package]] -name = "jupyter" -version = "1.1.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "ipykernel" }, - { name = "ipywidgets" }, - { name = "jupyter-console" }, - { name = "jupyterlab" }, - { name = "nbconvert" }, - { name = "notebook" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/58/f3/af28ea964ab8bc1e472dba2e82627d36d470c51f5cd38c37502eeffaa25e/jupyter-1.1.1.tar.gz", hash = "sha256:d55467bceabdea49d7e3624af7e33d59c37fff53ed3a350e1ac957bed731de7a", size = 5714959, upload-time = "2024-08-30T07:15:48.299Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/38/64/285f20a31679bf547b75602702f7800e74dbabae36ef324f716c02804753/jupyter-1.1.1-py2.py3-none-any.whl", hash = "sha256:7a59533c22af65439b24bbe60373a4e95af8f16ac65a6c00820ad378e3f7cc83", size = 2657, upload-time = "2024-08-30T07:15:47.045Z" }, -] - -[[package]] -name = "jupyter-client" -version = "8.6.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "importlib-metadata", marker = "python_full_version < '3.10'" }, - { name = "jupyter-core" }, - { name = "python-dateutil" }, - { name = "pyzmq" }, - { name = "tornado" }, - { name = "traitlets" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/71/22/bf9f12fdaeae18019a468b68952a60fe6dbab5d67cd2a103cac7659b41ca/jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419", size = 342019, upload-time = "2024-09-17T10:44:17.613Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f", size = 106105, upload-time = "2024-09-17T10:44:15.218Z" }, -] - -[[package]] -name = "jupyter-console" -version = "6.6.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "ipykernel" }, - { name = "ipython", version = "8.18.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "ipython", version = "8.37.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, - { name = "ipython", version = "9.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, - { name = "jupyter-client" }, - { name = "jupyter-core" }, - { name = "prompt-toolkit" }, - { name = "pygments" }, - { name = "pyzmq" }, - { name = "traitlets" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/bd/2d/e2fd31e2fc41c14e2bcb6c976ab732597e907523f6b2420305f9fc7fdbdb/jupyter_console-6.6.3.tar.gz", hash = "sha256:566a4bf31c87adbfadf22cdf846e3069b59a71ed5da71d6ba4d8aaad14a53539", size = 34363, upload-time = "2023-03-06T14:13:31.02Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ca/77/71d78d58f15c22db16328a476426f7ac4a60d3a5a7ba3b9627ee2f7903d4/jupyter_console-6.6.3-py3-none-any.whl", hash = "sha256:309d33409fcc92ffdad25f0bcdf9a4a9daa61b6f341177570fdac03de5352485", size = 24510, upload-time = "2023-03-06T14:13:28.229Z" }, -] - -[[package]] -name = "jupyter-core" -version = "5.8.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "platformdirs" }, - { name = "pywin32", marker = "platform_python_implementation != 'PyPy' and sys_platform == 'win32'" }, - { name = "traitlets" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/99/1b/72906d554acfeb588332eaaa6f61577705e9ec752ddb486f302dafa292d9/jupyter_core-5.8.1.tar.gz", hash = "sha256:0a5f9706f70e64786b75acba995988915ebd4601c8a52e534a40b51c95f59941", size = 88923, upload-time = "2025-05-27T07:38:16.655Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2f/57/6bffd4b20b88da3800c5d691e0337761576ee688eb01299eae865689d2df/jupyter_core-5.8.1-py3-none-any.whl", hash = "sha256:c28d268fc90fb53f1338ded2eb410704c5449a358406e8a948b75706e24863d0", size = 28880, upload-time = "2025-05-27T07:38:15.137Z" }, -] - -[[package]] -name = "jupyter-events" -version = "0.12.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "jsonschema", extra = ["format-nongpl"] }, - { name = "packaging" }, - { name = "python-json-logger" }, - { name = "pyyaml" }, - { name = "referencing" }, - { name = "rfc3339-validator" }, - { name = "rfc3986-validator" }, - { name = "traitlets" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/9d/c3/306d090461e4cf3cd91eceaff84bede12a8e52cd821c2d20c9a4fd728385/jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b", size = 62196, upload-time = "2025-02-03T17:23:41.485Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e2/48/577993f1f99c552f18a0428731a755e06171f9902fa118c379eb7c04ea22/jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb", size = 19430, upload-time = "2025-02-03T17:23:38.643Z" }, -] - -[[package]] -name = "jupyter-lsp" -version = "2.2.5" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "importlib-metadata", marker = "python_full_version < '3.10'" }, - { name = "jupyter-server" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/85/b4/3200b0b09c12bc3b72d943d923323c398eff382d1dcc7c0dbc8b74630e40/jupyter-lsp-2.2.5.tar.gz", hash = "sha256:793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943a982cb4f545001", size = 48741, upload-time = "2024-04-09T17:59:44.918Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/07/e0/7bd7cff65594fd9936e2f9385701e44574fc7d721331ff676ce440b14100/jupyter_lsp-2.2.5-py3-none-any.whl", hash = "sha256:45fbddbd505f3fbfb0b6cb2f1bc5e15e83ab7c79cd6e89416b248cb3c00c11da", size = 69146, upload-time = "2024-04-09T17:59:43.388Z" }, -] - -[[package]] -name = "jupyter-server" -version = "2.16.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "anyio" }, - { name = "argon2-cffi" }, - { name = "jinja2" }, - { name = "jupyter-client" }, - { name = "jupyter-core" }, - { name = "jupyter-events" }, - { name = "jupyter-server-terminals" }, - { name = "nbconvert" }, - { name = "nbformat" }, - { name = "overrides" }, - { name = "packaging" }, - { name = "prometheus-client" }, - { name = "pywinpty", marker = "(python_full_version < '3.10' and os_name == 'nt' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (os_name == 'nt' and platform_machine != 'aarch64' and sys_platform == 'linux') or (os_name == 'nt' and sys_platform != 'darwin' and sys_platform != 'linux')" }, - { name = "pyzmq" }, - { name = "send2trash" }, - { name = "terminado" }, - { name = "tornado" }, - { name = "traitlets" }, - { name = "websocket-client" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/41/c8/ba2bbcd758c47f1124c4ca14061e8ce60d9c6fd537faee9534a95f83521a/jupyter_server-2.16.0.tar.gz", hash = "sha256:65d4b44fdf2dcbbdfe0aa1ace4a842d4aaf746a2b7b168134d5aaed35621b7f6", size = 728177, upload-time = "2025-05-12T16:44:46.245Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/46/1f/5ebbced977171d09a7b0c08a285ff9a20aafb9c51bde07e52349ff1ddd71/jupyter_server-2.16.0-py3-none-any.whl", hash = "sha256:3d8db5be3bc64403b1c65b400a1d7f4647a5ce743f3b20dbdefe8ddb7b55af9e", size = 386904, upload-time = "2025-05-12T16:44:43.335Z" }, -] - -[[package]] -name = "jupyter-server-terminals" -version = "0.5.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pywinpty", marker = "(python_full_version < '3.10' and os_name == 'nt' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (os_name == 'nt' and platform_machine != 'aarch64' and sys_platform == 'linux') or (os_name == 'nt' and sys_platform != 'darwin' and sys_platform != 'linux')" }, - { name = "terminado" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/fc/d5/562469734f476159e99a55426d697cbf8e7eb5efe89fb0e0b4f83a3d3459/jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269", size = 31430, upload-time = "2024-03-12T14:37:03.049Z" } +sdist = { url = "https://files.pythonhosted.org/packages/dc/fe/0f5a938c54105553436dbff7a61dc4fed4b1b2c98852f8833beaf4d5968f/joblib-1.5.1.tar.gz", hash = "sha256:f4f86e351f39fe3d0d32a9f2c3d8af1ee4cec285aafcb27003dda5205576b444", size = 330475, upload-time = "2025-05-23T12:04:37.097Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/07/2d/2b32cdbe8d2a602f697a649798554e4f072115438e92249624e532e8aca6/jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa", size = 13656, upload-time = "2024-03-12T14:37:00.708Z" }, + { url = "https://files.pythonhosted.org/packages/7d/4f/1195bbac8e0c2acc5f740661631d8d750dc38d4a32b23ee5df3cde6f4e0d/joblib-1.5.1-py3-none-any.whl", hash = "sha256:4719a31f054c7d766948dcd83e9613686b27114f190f717cec7eaa2084f8a74a", size = 307746, upload-time = "2025-05-23T12:04:35.124Z" }, ] [[package]] -name = "jupyterlab" -version = "4.4.4" +name = "jupyter-client" +version = "8.6.3" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "async-lru" }, - { name = "httpx" }, { name = "importlib-metadata", marker = "python_full_version < '3.10'" }, - { name = "ipykernel" }, - { name = "jinja2" }, { name = "jupyter-core" }, - { name = "jupyter-lsp" }, - { name = "jupyter-server" }, - { name = "jupyterlab-server" }, - { name = "notebook-shim" }, - { name = "packaging" }, - { name = "setuptools" }, - { name = "tomli", marker = "python_full_version < '3.11'" }, + { name = "python-dateutil" }, + { name = "pyzmq" }, { name = "tornado" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e2/4d/7ca5b46ea56742880d71a768a9e6fb8f8482228427eb89492d55c5d0bb7d/jupyterlab-4.4.4.tar.gz", hash = "sha256:163fee1ef702e0a057f75d2eed3ed1da8a986d59eb002cbeb6f0c2779e6cd153", size = 23044296, upload-time = "2025-06-28T13:07:20.708Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f8/82/66910ce0995dbfdb33609f41c99fe32ce483b9624a3e7d672af14ff63b9f/jupyterlab-4.4.4-py3-none-any.whl", hash = "sha256:711611e4f59851152eb93316c3547c3ec6291f16bb455f1f4fa380d25637e0dd", size = 12296310, upload-time = "2025-06-28T13:07:15.676Z" }, -] - -[[package]] -name = "jupyterlab-pygments" -version = "0.3.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/90/51/9187be60d989df97f5f0aba133fa54e7300f17616e065d1ada7d7646b6d6/jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d", size = 512900, upload-time = "2023-11-23T09:26:37.44Z" } +sdist = { url = "https://files.pythonhosted.org/packages/71/22/bf9f12fdaeae18019a468b68952a60fe6dbab5d67cd2a103cac7659b41ca/jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419", size = 342019, upload-time = "2024-09-17T10:44:17.613Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b1/dd/ead9d8ea85bf202d90cc513b533f9c363121c7792674f78e0d8a854b63b4/jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780", size = 15884, upload-time = "2023-11-23T09:26:34.325Z" }, + { url = "https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f", size = 106105, upload-time = "2024-09-17T10:44:15.218Z" }, ] [[package]] -name = "jupyterlab-server" -version = "2.27.3" +name = "jupyter-core" +version = "5.8.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "babel" }, - { name = "importlib-metadata", marker = "python_full_version < '3.10'" }, - { name = "jinja2" }, - { name = "json5" }, - { name = "jsonschema" }, - { name = "jupyter-server" }, - { name = "packaging" }, - { name = "requests" }, + { name = "platformdirs" }, + { name = "pywin32", marker = "platform_python_implementation != 'PyPy' and sys_platform == 'win32'" }, + { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0a/c9/a883ce65eb27905ce77ace410d83587c82ea64dc85a48d1f7ed52bcfa68d/jupyterlab_server-2.27.3.tar.gz", hash = "sha256:eb36caca59e74471988f0ae25c77945610b887f777255aa21f8065def9e51ed4", size = 76173, upload-time = "2024-07-16T17:02:04.149Z" } +sdist = { url = "https://files.pythonhosted.org/packages/99/1b/72906d554acfeb588332eaaa6f61577705e9ec752ddb486f302dafa292d9/jupyter_core-5.8.1.tar.gz", hash = "sha256:0a5f9706f70e64786b75acba995988915ebd4601c8a52e534a40b51c95f59941", size = 88923, upload-time = "2025-05-27T07:38:16.655Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/54/09/2032e7d15c544a0e3cd831c51d77a8ca57f7555b2e1b2922142eddb02a84/jupyterlab_server-2.27.3-py3-none-any.whl", hash = "sha256:e697488f66c3db49df675158a77b3b017520d772c6e1548c7d9bcc5df7944ee4", size = 59700, upload-time = "2024-07-16T17:02:01.115Z" }, + { url = "https://files.pythonhosted.org/packages/2f/57/6bffd4b20b88da3800c5d691e0337761576ee688eb01299eae865689d2df/jupyter_core-5.8.1-py3-none-any.whl", hash = "sha256:c28d268fc90fb53f1338ded2eb410704c5449a358406e8a948b75706e24863d0", size = 28880, upload-time = "2025-05-27T07:38:15.137Z" }, ] [[package]] @@ -2037,8 +1041,7 @@ source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", ] sdist = { url = "https://files.pythonhosted.org/packages/85/4d/2255e1c76304cbd60b48cee302b66d1dde4468dc5b1160e4b7cb43778f2a/kiwisolver-1.4.7.tar.gz", hash = "sha256:9893ff81bd7107f7b685d3017cc6583daadb4fc26e4a888350df530e41980a60", size = 97286, upload-time = "2024-09-04T09:39:44.302Z" } wheels = [ @@ -2141,20 +1144,13 @@ name = "kiwisolver" version = "1.4.8" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and sys_platform == 'darwin'", "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -2241,41 +1237,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/3a/1d/50ad811d1c5dae091e4cf046beba925bcae0a610e79ae4c538f996f63ed5/kiwisolver-1.4.8-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:65ea09a5a3faadd59c2ce96dc7bf0f364986a315949dc6374f04396b0d60e09b", size = 71762, upload-time = "2024-12-24T18:30:48.903Z" }, ] -[[package]] -name = "lightning" -version = "2.5.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "fsspec", extra = ["http"] }, - { name = "lightning-utilities" }, - { name = "packaging" }, - { name = "pytorch-lightning" }, - { name = "pyyaml" }, - { name = "torch", version = "2.7.1", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version >= '3.10' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, - { name = "torch", version = "2.7.1+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64') or platform_machine == 'x86_64' or sys_platform != 'darwin'" }, - { name = "torchmetrics" }, - { name = "tqdm" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/42/3c/6a930ac7c64fb896adbe560a9141570732d9ca890a11e6d158edd5aece76/lightning-2.5.2.tar.gz", hash = "sha256:9550df613cfb22358ebf77b4a8ad45f3767cd7d26ba2d52b7f036bd3cdd701c4", size = 633391, upload-time = "2025-06-20T15:58:22.065Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/71/a9/5d39280e55dc5df9e98be074029f6b48f86fe3db4929cb9ada6401234b47/lightning-2.5.2-py3-none-any.whl", hash = "sha256:7e7f23245e214c8ec14d5d8119d3856c25cfe96f9856296fd5df4e29c2ff88a7", size = 821145, upload-time = "2025-06-20T15:58:18.609Z" }, -] - -[[package]] -name = "lightning-utilities" -version = "0.14.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "packaging" }, - { name = "setuptools" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/0f/bb/63a6a8c9e7a96b6ba92647fa5b1595c2dbee29f8178705adb4704d82ecba/lightning_utilities-0.14.3.tar.gz", hash = "sha256:37e2f83f273890052955a44054382c211a303012ee577619efbaa5df9e65e9f5", size = 30346, upload-time = "2025-04-03T15:59:56.928Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1a/c1/31b3184cba7b257a4a3b5ca5b88b9204ccb7aa02fe3c992280899293ed54/lightning_utilities-0.14.3-py3-none-any.whl", hash = "sha256:4ab9066aa36cd7b93a05713808901909e96cc3f187ea6fd3052b2fd91313b468", size = 28894, upload-time = "2025-04-03T15:59:55.658Z" }, -] - [[package]] name = "markupsafe" version = "3.0.2" @@ -2351,8 +1312,7 @@ source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", ] dependencies = [ { name = "contourpy", version = "1.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, @@ -2415,20 +1375,13 @@ name = "matplotlib" version = "3.10.3" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and sys_platform == 'darwin'", "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -2493,18 +1446,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899, upload-time = "2024-04-15T13:44:43.265Z" }, ] -[[package]] -name = "mistune" -version = "3.1.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typing-extensions", marker = "python_full_version < '3.11'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/c4/79/bda47f7dd7c3c55770478d6d02c9960c430b0cf1773b72366ff89126ea31/mistune-3.1.3.tar.gz", hash = "sha256:a7035c21782b2becb6be62f8f25d3df81ccb4d6fa477a6525b15af06539f02a0", size = 94347, upload-time = "2025-03-19T14:27:24.955Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/01/4d/23c4e4f09da849e127e9f123241946c23c1e30f45a88366879e064211815/mistune-3.1.3-py3-none-any.whl", hash = "sha256:1a32314113cff28aa6432e99e522677c8587fd83e3d51c29b82a52409c842bd9", size = 53410, upload-time = "2025-03-19T14:27:23.451Z" }, -] - [[package]] name = "mpmath" version = "1.3.0" @@ -2572,182 +1513,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/20/d6/cd62cded572e5e25892747a5d27850170bcd03c855e9c69c538e024de6f9/msgpack-1.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:40eae974c873b2992fd36424a5d9407f93e97656d999f43fca9d29f820899084", size = 71700, upload-time = "2025-06-13T06:52:50.244Z" }, ] -[[package]] -name = "multidict" -version = "6.6.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typing-extensions", marker = "python_full_version < '3.11'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/3d/2c/5dad12e82fbdf7470f29bff2171484bf07cb3b16ada60a6589af8f376440/multidict-6.6.3.tar.gz", hash = "sha256:798a9eb12dab0a6c2e29c1de6f3468af5cb2da6053a20dfa3344907eed0937cc", size = 101006, upload-time = "2025-06-30T15:53:46.929Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0b/67/414933982bce2efce7cbcb3169eaaf901e0f25baec69432b4874dfb1f297/multidict-6.6.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a2be5b7b35271f7fff1397204ba6708365e3d773579fe2a30625e16c4b4ce817", size = 77017, upload-time = "2025-06-30T15:50:58.931Z" }, - { url = "https://files.pythonhosted.org/packages/8a/fe/d8a3ee1fad37dc2ef4f75488b0d9d4f25bf204aad8306cbab63d97bff64a/multidict-6.6.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:12f4581d2930840295c461764b9a65732ec01250b46c6b2c510d7ee68872b140", size = 44897, upload-time = "2025-06-30T15:51:00.999Z" }, - { url = "https://files.pythonhosted.org/packages/1f/e0/265d89af8c98240265d82b8cbcf35897f83b76cd59ee3ab3879050fd8c45/multidict-6.6.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:dd7793bab517e706c9ed9d7310b06c8672fd0aeee5781bfad612f56b8e0f7d14", size = 44574, upload-time = "2025-06-30T15:51:02.449Z" }, - { url = "https://files.pythonhosted.org/packages/e6/05/6b759379f7e8e04ccc97cfb2a5dcc5cdbd44a97f072b2272dc51281e6a40/multidict-6.6.3-cp310-cp310-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:72d8815f2cd3cf3df0f83cac3f3ef801d908b2d90409ae28102e0553af85545a", size = 225729, upload-time = "2025-06-30T15:51:03.794Z" }, - { url = "https://files.pythonhosted.org/packages/4e/f5/8d5a15488edd9a91fa4aad97228d785df208ed6298580883aa3d9def1959/multidict-6.6.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:531e331a2ee53543ab32b16334e2deb26f4e6b9b28e41f8e0c87e99a6c8e2d69", size = 242515, upload-time = "2025-06-30T15:51:05.002Z" }, - { url = "https://files.pythonhosted.org/packages/6e/b5/a8f317d47d0ac5bb746d6d8325885c8967c2a8ce0bb57be5399e3642cccb/multidict-6.6.3-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:42ca5aa9329a63be8dc49040f63817d1ac980e02eeddba763a9ae5b4027b9c9c", size = 222224, upload-time = "2025-06-30T15:51:06.148Z" }, - { url = "https://files.pythonhosted.org/packages/76/88/18b2a0d5e80515fa22716556061189c2853ecf2aa2133081ebbe85ebea38/multidict-6.6.3-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:208b9b9757060b9faa6f11ab4bc52846e4f3c2fb8b14d5680c8aac80af3dc751", size = 253124, upload-time = "2025-06-30T15:51:07.375Z" }, - { url = "https://files.pythonhosted.org/packages/62/bf/ebfcfd6b55a1b05ef16d0775ae34c0fe15e8dab570d69ca9941073b969e7/multidict-6.6.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:acf6b97bd0884891af6a8b43d0f586ab2fcf8e717cbd47ab4bdddc09e20652d8", size = 251529, upload-time = "2025-06-30T15:51:08.691Z" }, - { url = "https://files.pythonhosted.org/packages/44/11/780615a98fd3775fc309d0234d563941af69ade2df0bb82c91dda6ddaea1/multidict-6.6.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:68e9e12ed00e2089725669bdc88602b0b6f8d23c0c95e52b95f0bc69f7fe9b55", size = 241627, upload-time = "2025-06-30T15:51:10.605Z" }, - { url = "https://files.pythonhosted.org/packages/28/3d/35f33045e21034b388686213752cabc3a1b9d03e20969e6fa8f1b1d82db1/multidict-6.6.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:05db2f66c9addb10cfa226e1acb363450fab2ff8a6df73c622fefe2f5af6d4e7", size = 239351, upload-time = "2025-06-30T15:51:12.18Z" }, - { url = "https://files.pythonhosted.org/packages/6e/cc/ff84c03b95b430015d2166d9aae775a3985d757b94f6635010d0038d9241/multidict-6.6.3-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:0db58da8eafb514db832a1b44f8fa7906fdd102f7d982025f816a93ba45e3dcb", size = 233429, upload-time = "2025-06-30T15:51:13.533Z" }, - { url = "https://files.pythonhosted.org/packages/2e/f0/8cd49a0b37bdea673a4b793c2093f2f4ba8e7c9d6d7c9bd672fd6d38cd11/multidict-6.6.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:14117a41c8fdb3ee19c743b1c027da0736fdb79584d61a766da53d399b71176c", size = 243094, upload-time = "2025-06-30T15:51:14.815Z" }, - { url = "https://files.pythonhosted.org/packages/96/19/5d9a0cfdafe65d82b616a45ae950975820289069f885328e8185e64283c2/multidict-6.6.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:877443eaaabcd0b74ff32ebeed6f6176c71850feb7d6a1d2db65945256ea535c", size = 248957, upload-time = "2025-06-30T15:51:16.076Z" }, - { url = "https://files.pythonhosted.org/packages/e6/dc/c90066151da87d1e489f147b9b4327927241e65f1876702fafec6729c014/multidict-6.6.3-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:70b72e749a4f6e7ed8fb334fa8d8496384840319512746a5f42fa0aec79f4d61", size = 243590, upload-time = "2025-06-30T15:51:17.413Z" }, - { url = "https://files.pythonhosted.org/packages/ec/39/458afb0cccbb0ee9164365273be3e039efddcfcb94ef35924b7dbdb05db0/multidict-6.6.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:43571f785b86afd02b3855c5ac8e86ec921b760298d6f82ff2a61daf5a35330b", size = 237487, upload-time = "2025-06-30T15:51:19.039Z" }, - { url = "https://files.pythonhosted.org/packages/35/38/0016adac3990426610a081787011177e661875546b434f50a26319dc8372/multidict-6.6.3-cp310-cp310-win32.whl", hash = "sha256:20c5a0c3c13a15fd5ea86c42311859f970070e4e24de5a550e99d7c271d76318", size = 41390, upload-time = "2025-06-30T15:51:20.362Z" }, - { url = "https://files.pythonhosted.org/packages/f3/d2/17897a8f3f2c5363d969b4c635aa40375fe1f09168dc09a7826780bfb2a4/multidict-6.6.3-cp310-cp310-win_amd64.whl", hash = "sha256:ab0a34a007704c625e25a9116c6770b4d3617a071c8a7c30cd338dfbadfe6485", size = 45954, upload-time = "2025-06-30T15:51:21.383Z" }, - { url = "https://files.pythonhosted.org/packages/2d/5f/d4a717c1e457fe44072e33fa400d2b93eb0f2819c4d669381f925b7cba1f/multidict-6.6.3-cp310-cp310-win_arm64.whl", hash = "sha256:769841d70ca8bdd140a715746199fc6473414bd02efd678d75681d2d6a8986c5", size = 42981, upload-time = "2025-06-30T15:51:22.809Z" }, - { url = "https://files.pythonhosted.org/packages/08/f0/1a39863ced51f639c81a5463fbfa9eb4df59c20d1a8769ab9ef4ca57ae04/multidict-6.6.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:18f4eba0cbac3546b8ae31e0bbc55b02c801ae3cbaf80c247fcdd89b456ff58c", size = 76445, upload-time = "2025-06-30T15:51:24.01Z" }, - { url = "https://files.pythonhosted.org/packages/c9/0e/a7cfa451c7b0365cd844e90b41e21fab32edaa1e42fc0c9f68461ce44ed7/multidict-6.6.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef43b5dd842382329e4797c46f10748d8c2b6e0614f46b4afe4aee9ac33159df", size = 44610, upload-time = "2025-06-30T15:51:25.158Z" }, - { url = "https://files.pythonhosted.org/packages/c6/bb/a14a4efc5ee748cc1904b0748be278c31b9295ce5f4d2ef66526f410b94d/multidict-6.6.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bf9bd1fd5eec01494e0f2e8e446a74a85d5e49afb63d75a9934e4a5423dba21d", size = 44267, upload-time = "2025-06-30T15:51:26.326Z" }, - { url = "https://files.pythonhosted.org/packages/c2/f8/410677d563c2d55e063ef74fe578f9d53fe6b0a51649597a5861f83ffa15/multidict-6.6.3-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:5bd8d6f793a787153956cd35e24f60485bf0651c238e207b9a54f7458b16d539", size = 230004, upload-time = "2025-06-30T15:51:27.491Z" }, - { url = "https://files.pythonhosted.org/packages/fd/df/2b787f80059314a98e1ec6a4cc7576244986df3e56b3c755e6fc7c99e038/multidict-6.6.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1bf99b4daf908c73856bd87ee0a2499c3c9a3d19bb04b9c6025e66af3fd07462", size = 247196, upload-time = "2025-06-30T15:51:28.762Z" }, - { url = "https://files.pythonhosted.org/packages/05/f2/f9117089151b9a8ab39f9019620d10d9718eec2ac89e7ca9d30f3ec78e96/multidict-6.6.3-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:0b9e59946b49dafaf990fd9c17ceafa62976e8471a14952163d10a7a630413a9", size = 225337, upload-time = "2025-06-30T15:51:30.025Z" }, - { url = "https://files.pythonhosted.org/packages/93/2d/7115300ec5b699faa152c56799b089a53ed69e399c3c2d528251f0aeda1a/multidict-6.6.3-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e2db616467070d0533832d204c54eea6836a5e628f2cb1e6dfd8cd6ba7277cb7", size = 257079, upload-time = "2025-06-30T15:51:31.716Z" }, - { url = "https://files.pythonhosted.org/packages/15/ea/ff4bab367623e39c20d3b07637225c7688d79e4f3cc1f3b9f89867677f9a/multidict-6.6.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7394888236621f61dcdd25189b2768ae5cc280f041029a5bcf1122ac63df79f9", size = 255461, upload-time = "2025-06-30T15:51:33.029Z" }, - { url = "https://files.pythonhosted.org/packages/74/07/2c9246cda322dfe08be85f1b8739646f2c4c5113a1422d7a407763422ec4/multidict-6.6.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f114d8478733ca7388e7c7e0ab34b72547476b97009d643644ac33d4d3fe1821", size = 246611, upload-time = "2025-06-30T15:51:34.47Z" }, - { url = "https://files.pythonhosted.org/packages/a8/62/279c13d584207d5697a752a66ffc9bb19355a95f7659140cb1b3cf82180e/multidict-6.6.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cdf22e4db76d323bcdc733514bf732e9fb349707c98d341d40ebcc6e9318ef3d", size = 243102, upload-time = "2025-06-30T15:51:36.525Z" }, - { url = "https://files.pythonhosted.org/packages/69/cc/e06636f48c6d51e724a8bc8d9e1db5f136fe1df066d7cafe37ef4000f86a/multidict-6.6.3-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:e995a34c3d44ab511bfc11aa26869b9d66c2d8c799fa0e74b28a473a692532d6", size = 238693, upload-time = "2025-06-30T15:51:38.278Z" }, - { url = "https://files.pythonhosted.org/packages/89/a4/66c9d8fb9acf3b226cdd468ed009537ac65b520aebdc1703dd6908b19d33/multidict-6.6.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:766a4a5996f54361d8d5a9050140aa5362fe48ce51c755a50c0bc3706460c430", size = 246582, upload-time = "2025-06-30T15:51:39.709Z" }, - { url = "https://files.pythonhosted.org/packages/cf/01/c69e0317be556e46257826d5449feb4e6aa0d18573e567a48a2c14156f1f/multidict-6.6.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:3893a0d7d28a7fe6ca7a1f760593bc13038d1d35daf52199d431b61d2660602b", size = 253355, upload-time = "2025-06-30T15:51:41.013Z" }, - { url = "https://files.pythonhosted.org/packages/c0/da/9cc1da0299762d20e626fe0042e71b5694f9f72d7d3f9678397cbaa71b2b/multidict-6.6.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:934796c81ea996e61914ba58064920d6cad5d99140ac3167901eb932150e2e56", size = 247774, upload-time = "2025-06-30T15:51:42.291Z" }, - { url = "https://files.pythonhosted.org/packages/e6/91/b22756afec99cc31105ddd4a52f95ab32b1a4a58f4d417979c570c4a922e/multidict-6.6.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9ed948328aec2072bc00f05d961ceadfd3e9bfc2966c1319aeaf7b7c21219183", size = 242275, upload-time = "2025-06-30T15:51:43.642Z" }, - { url = "https://files.pythonhosted.org/packages/be/f1/adcc185b878036a20399d5be5228f3cbe7f823d78985d101d425af35c800/multidict-6.6.3-cp311-cp311-win32.whl", hash = "sha256:9f5b28c074c76afc3e4c610c488e3493976fe0e596dd3db6c8ddfbb0134dcac5", size = 41290, upload-time = "2025-06-30T15:51:45.264Z" }, - { url = "https://files.pythonhosted.org/packages/e0/d4/27652c1c6526ea6b4f5ddd397e93f4232ff5de42bea71d339bc6a6cc497f/multidict-6.6.3-cp311-cp311-win_amd64.whl", hash = "sha256:bc7f6fbc61b1c16050a389c630da0b32fc6d4a3d191394ab78972bf5edc568c2", size = 45942, upload-time = "2025-06-30T15:51:46.377Z" }, - { url = "https://files.pythonhosted.org/packages/16/18/23f4932019804e56d3c2413e237f866444b774b0263bcb81df2fdecaf593/multidict-6.6.3-cp311-cp311-win_arm64.whl", hash = "sha256:d4e47d8faffaae822fb5cba20937c048d4f734f43572e7079298a6c39fb172cb", size = 42880, upload-time = "2025-06-30T15:51:47.561Z" }, - { url = "https://files.pythonhosted.org/packages/0e/a0/6b57988ea102da0623ea814160ed78d45a2645e4bbb499c2896d12833a70/multidict-6.6.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:056bebbeda16b2e38642d75e9e5310c484b7c24e3841dc0fb943206a72ec89d6", size = 76514, upload-time = "2025-06-30T15:51:48.728Z" }, - { url = "https://files.pythonhosted.org/packages/07/7a/d1e92665b0850c6c0508f101f9cf0410c1afa24973e1115fe9c6a185ebf7/multidict-6.6.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e5f481cccb3c5c5e5de5d00b5141dc589c1047e60d07e85bbd7dea3d4580d63f", size = 45394, upload-time = "2025-06-30T15:51:49.986Z" }, - { url = "https://files.pythonhosted.org/packages/52/6f/dd104490e01be6ef8bf9573705d8572f8c2d2c561f06e3826b081d9e6591/multidict-6.6.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:10bea2ee839a759ee368b5a6e47787f399b41e70cf0c20d90dfaf4158dfb4e55", size = 43590, upload-time = "2025-06-30T15:51:51.331Z" }, - { url = "https://files.pythonhosted.org/packages/44/fe/06e0e01b1b0611e6581b7fd5a85b43dacc08b6cea3034f902f383b0873e5/multidict-6.6.3-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:2334cfb0fa9549d6ce2c21af2bfbcd3ac4ec3646b1b1581c88e3e2b1779ec92b", size = 237292, upload-time = "2025-06-30T15:51:52.584Z" }, - { url = "https://files.pythonhosted.org/packages/ce/71/4f0e558fb77696b89c233c1ee2d92f3e1d5459070a0e89153c9e9e804186/multidict-6.6.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b8fee016722550a2276ca2cb5bb624480e0ed2bd49125b2b73b7010b9090e888", size = 258385, upload-time = "2025-06-30T15:51:53.913Z" }, - { url = "https://files.pythonhosted.org/packages/e3/25/cca0e68228addad24903801ed1ab42e21307a1b4b6dd2cf63da5d3ae082a/multidict-6.6.3-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e5511cb35f5c50a2db21047c875eb42f308c5583edf96bd8ebf7d770a9d68f6d", size = 242328, upload-time = "2025-06-30T15:51:55.672Z" }, - { url = "https://files.pythonhosted.org/packages/6e/a3/46f2d420d86bbcb8fe660b26a10a219871a0fbf4d43cb846a4031533f3e0/multidict-6.6.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:712b348f7f449948e0a6c4564a21c7db965af900973a67db432d724619b3c680", size = 268057, upload-time = "2025-06-30T15:51:57.037Z" }, - { url = "https://files.pythonhosted.org/packages/9e/73/1c743542fe00794a2ec7466abd3f312ccb8fad8dff9f36d42e18fb1ec33e/multidict-6.6.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e4e15d2138ee2694e038e33b7c3da70e6b0ad8868b9f8094a72e1414aeda9c1a", size = 269341, upload-time = "2025-06-30T15:51:59.111Z" }, - { url = "https://files.pythonhosted.org/packages/a4/11/6ec9dcbe2264b92778eeb85407d1df18812248bf3506a5a1754bc035db0c/multidict-6.6.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8df25594989aebff8a130f7899fa03cbfcc5d2b5f4a461cf2518236fe6f15961", size = 256081, upload-time = "2025-06-30T15:52:00.533Z" }, - { url = "https://files.pythonhosted.org/packages/9b/2b/631b1e2afeb5f1696846d747d36cda075bfdc0bc7245d6ba5c319278d6c4/multidict-6.6.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:159ca68bfd284a8860f8d8112cf0521113bffd9c17568579e4d13d1f1dc76b65", size = 253581, upload-time = "2025-06-30T15:52:02.43Z" }, - { url = "https://files.pythonhosted.org/packages/bf/0e/7e3b93f79efeb6111d3bf9a1a69e555ba1d07ad1c11bceb56b7310d0d7ee/multidict-6.6.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:e098c17856a8c9ade81b4810888c5ad1914099657226283cab3062c0540b0643", size = 250750, upload-time = "2025-06-30T15:52:04.26Z" }, - { url = "https://files.pythonhosted.org/packages/ad/9e/086846c1d6601948e7de556ee464a2d4c85e33883e749f46b9547d7b0704/multidict-6.6.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:67c92ed673049dec52d7ed39f8cf9ebbadf5032c774058b4406d18c8f8fe7063", size = 251548, upload-time = "2025-06-30T15:52:06.002Z" }, - { url = "https://files.pythonhosted.org/packages/8c/7b/86ec260118e522f1a31550e87b23542294880c97cfbf6fb18cc67b044c66/multidict-6.6.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:bd0578596e3a835ef451784053cfd327d607fc39ea1a14812139339a18a0dbc3", size = 262718, upload-time = "2025-06-30T15:52:07.707Z" }, - { url = "https://files.pythonhosted.org/packages/8c/bd/22ce8f47abb0be04692c9fc4638508b8340987b18691aa7775d927b73f72/multidict-6.6.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:346055630a2df2115cd23ae271910b4cae40f4e336773550dca4889b12916e75", size = 259603, upload-time = "2025-06-30T15:52:09.58Z" }, - { url = "https://files.pythonhosted.org/packages/07/9c/91b7ac1691be95cd1f4a26e36a74b97cda6aa9820632d31aab4410f46ebd/multidict-6.6.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:555ff55a359302b79de97e0468e9ee80637b0de1fce77721639f7cd9440b3a10", size = 251351, upload-time = "2025-06-30T15:52:10.947Z" }, - { url = "https://files.pythonhosted.org/packages/6f/5c/4d7adc739884f7a9fbe00d1eac8c034023ef8bad71f2ebe12823ca2e3649/multidict-6.6.3-cp312-cp312-win32.whl", hash = "sha256:73ab034fb8d58ff85c2bcbadc470efc3fafeea8affcf8722855fb94557f14cc5", size = 41860, upload-time = "2025-06-30T15:52:12.334Z" }, - { url = "https://files.pythonhosted.org/packages/6a/a3/0fbc7afdf7cb1aa12a086b02959307848eb6bcc8f66fcb66c0cb57e2a2c1/multidict-6.6.3-cp312-cp312-win_amd64.whl", hash = "sha256:04cbcce84f63b9af41bad04a54d4cc4e60e90c35b9e6ccb130be2d75b71f8c17", size = 45982, upload-time = "2025-06-30T15:52:13.6Z" }, - { url = "https://files.pythonhosted.org/packages/b8/95/8c825bd70ff9b02462dc18d1295dd08d3e9e4eb66856d292ffa62cfe1920/multidict-6.6.3-cp312-cp312-win_arm64.whl", hash = "sha256:0f1130b896ecb52d2a1e615260f3ea2af55fa7dc3d7c3003ba0c3121a759b18b", size = 43210, upload-time = "2025-06-30T15:52:14.893Z" }, - { url = "https://files.pythonhosted.org/packages/52/1d/0bebcbbb4f000751fbd09957257903d6e002943fc668d841a4cf2fb7f872/multidict-6.6.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:540d3c06d48507357a7d57721e5094b4f7093399a0106c211f33540fdc374d55", size = 75843, upload-time = "2025-06-30T15:52:16.155Z" }, - { url = "https://files.pythonhosted.org/packages/07/8f/cbe241b0434cfe257f65c2b1bcf9e8d5fb52bc708c5061fb29b0fed22bdf/multidict-6.6.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9c19cea2a690f04247d43f366d03e4eb110a0dc4cd1bbeee4d445435428ed35b", size = 45053, upload-time = "2025-06-30T15:52:17.429Z" }, - { url = "https://files.pythonhosted.org/packages/32/d2/0b3b23f9dbad5b270b22a3ac3ea73ed0a50ef2d9a390447061178ed6bdb8/multidict-6.6.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7af039820cfd00effec86bda5d8debef711a3e86a1d3772e85bea0f243a4bd65", size = 43273, upload-time = "2025-06-30T15:52:19.346Z" }, - { url = "https://files.pythonhosted.org/packages/fd/fe/6eb68927e823999e3683bc49678eb20374ba9615097d085298fd5b386564/multidict-6.6.3-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:500b84f51654fdc3944e936f2922114349bf8fdcac77c3092b03449f0e5bc2b3", size = 237124, upload-time = "2025-06-30T15:52:20.773Z" }, - { url = "https://files.pythonhosted.org/packages/e7/ab/320d8507e7726c460cb77117848b3834ea0d59e769f36fdae495f7669929/multidict-6.6.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f3fc723ab8a5c5ed6c50418e9bfcd8e6dceba6c271cee6728a10a4ed8561520c", size = 256892, upload-time = "2025-06-30T15:52:22.242Z" }, - { url = "https://files.pythonhosted.org/packages/76/60/38ee422db515ac69834e60142a1a69111ac96026e76e8e9aa347fd2e4591/multidict-6.6.3-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:94c47ea3ade005b5976789baaed66d4de4480d0a0bf31cef6edaa41c1e7b56a6", size = 240547, upload-time = "2025-06-30T15:52:23.736Z" }, - { url = "https://files.pythonhosted.org/packages/27/fb/905224fde2dff042b030c27ad95a7ae744325cf54b890b443d30a789b80e/multidict-6.6.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:dbc7cf464cc6d67e83e136c9f55726da3a30176f020a36ead246eceed87f1cd8", size = 266223, upload-time = "2025-06-30T15:52:25.185Z" }, - { url = "https://files.pythonhosted.org/packages/76/35/dc38ab361051beae08d1a53965e3e1a418752fc5be4d3fb983c5582d8784/multidict-6.6.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:900eb9f9da25ada070f8ee4a23f884e0ee66fe4e1a38c3af644256a508ad81ca", size = 267262, upload-time = "2025-06-30T15:52:26.969Z" }, - { url = "https://files.pythonhosted.org/packages/1f/a3/0a485b7f36e422421b17e2bbb5a81c1af10eac1d4476f2ff92927c730479/multidict-6.6.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7c6df517cf177da5d47ab15407143a89cd1a23f8b335f3a28d57e8b0a3dbb884", size = 254345, upload-time = "2025-06-30T15:52:28.467Z" }, - { url = "https://files.pythonhosted.org/packages/b4/59/bcdd52c1dab7c0e0d75ff19cac751fbd5f850d1fc39172ce809a74aa9ea4/multidict-6.6.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4ef421045f13879e21c994b36e728d8e7d126c91a64b9185810ab51d474f27e7", size = 252248, upload-time = "2025-06-30T15:52:29.938Z" }, - { url = "https://files.pythonhosted.org/packages/bb/a4/2d96aaa6eae8067ce108d4acee6f45ced5728beda55c0f02ae1072c730d1/multidict-6.6.3-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:6c1e61bb4f80895c081790b6b09fa49e13566df8fbff817da3f85b3a8192e36b", size = 250115, upload-time = "2025-06-30T15:52:31.416Z" }, - { url = "https://files.pythonhosted.org/packages/25/d2/ed9f847fa5c7d0677d4f02ea2c163d5e48573de3f57bacf5670e43a5ffaa/multidict-6.6.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:e5e8523bb12d7623cd8300dbd91b9e439a46a028cd078ca695eb66ba31adee3c", size = 249649, upload-time = "2025-06-30T15:52:32.996Z" }, - { url = "https://files.pythonhosted.org/packages/1f/af/9155850372563fc550803d3f25373308aa70f59b52cff25854086ecb4a79/multidict-6.6.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:ef58340cc896219e4e653dade08fea5c55c6df41bcc68122e3be3e9d873d9a7b", size = 261203, upload-time = "2025-06-30T15:52:34.521Z" }, - { url = "https://files.pythonhosted.org/packages/36/2f/c6a728f699896252cf309769089568a33c6439626648843f78743660709d/multidict-6.6.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:fc9dc435ec8699e7b602b94fe0cd4703e69273a01cbc34409af29e7820f777f1", size = 258051, upload-time = "2025-06-30T15:52:35.999Z" }, - { url = "https://files.pythonhosted.org/packages/d0/60/689880776d6b18fa2b70f6cc74ff87dd6c6b9b47bd9cf74c16fecfaa6ad9/multidict-6.6.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9e864486ef4ab07db5e9cb997bad2b681514158d6954dd1958dfb163b83d53e6", size = 249601, upload-time = "2025-06-30T15:52:37.473Z" }, - { url = "https://files.pythonhosted.org/packages/75/5e/325b11f2222a549019cf2ef879c1f81f94a0d40ace3ef55cf529915ba6cc/multidict-6.6.3-cp313-cp313-win32.whl", hash = "sha256:5633a82fba8e841bc5c5c06b16e21529573cd654f67fd833650a215520a6210e", size = 41683, upload-time = "2025-06-30T15:52:38.927Z" }, - { url = "https://files.pythonhosted.org/packages/b1/ad/cf46e73f5d6e3c775cabd2a05976547f3f18b39bee06260369a42501f053/multidict-6.6.3-cp313-cp313-win_amd64.whl", hash = "sha256:e93089c1570a4ad54c3714a12c2cef549dc9d58e97bcded193d928649cab78e9", size = 45811, upload-time = "2025-06-30T15:52:40.207Z" }, - { url = "https://files.pythonhosted.org/packages/c5/c9/2e3fe950db28fb7c62e1a5f46e1e38759b072e2089209bc033c2798bb5ec/multidict-6.6.3-cp313-cp313-win_arm64.whl", hash = "sha256:c60b401f192e79caec61f166da9c924e9f8bc65548d4246842df91651e83d600", size = 43056, upload-time = "2025-06-30T15:52:41.575Z" }, - { url = "https://files.pythonhosted.org/packages/3a/58/aaf8114cf34966e084a8cc9517771288adb53465188843d5a19862cb6dc3/multidict-6.6.3-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:02fd8f32d403a6ff13864b0851f1f523d4c988051eea0471d4f1fd8010f11134", size = 82811, upload-time = "2025-06-30T15:52:43.281Z" }, - { url = "https://files.pythonhosted.org/packages/71/af/5402e7b58a1f5b987a07ad98f2501fdba2a4f4b4c30cf114e3ce8db64c87/multidict-6.6.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:f3aa090106b1543f3f87b2041eef3c156c8da2aed90c63a2fbed62d875c49c37", size = 48304, upload-time = "2025-06-30T15:52:45.026Z" }, - { url = "https://files.pythonhosted.org/packages/39/65/ab3c8cafe21adb45b24a50266fd747147dec7847425bc2a0f6934b3ae9ce/multidict-6.6.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e924fb978615a5e33ff644cc42e6aa241effcf4f3322c09d4f8cebde95aff5f8", size = 46775, upload-time = "2025-06-30T15:52:46.459Z" }, - { url = "https://files.pythonhosted.org/packages/49/ba/9fcc1b332f67cc0c0c8079e263bfab6660f87fe4e28a35921771ff3eea0d/multidict-6.6.3-cp313-cp313t-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:b9fe5a0e57c6dbd0e2ce81ca66272282c32cd11d31658ee9553849d91289e1c1", size = 229773, upload-time = "2025-06-30T15:52:47.88Z" }, - { url = "https://files.pythonhosted.org/packages/a4/14/0145a251f555f7c754ce2dcbcd012939bbd1f34f066fa5d28a50e722a054/multidict-6.6.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b24576f208793ebae00280c59927c3b7c2a3b1655e443a25f753c4611bc1c373", size = 250083, upload-time = "2025-06-30T15:52:49.366Z" }, - { url = "https://files.pythonhosted.org/packages/9e/d4/d5c0bd2bbb173b586c249a151a26d2fb3ec7d53c96e42091c9fef4e1f10c/multidict-6.6.3-cp313-cp313t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:135631cb6c58eac37d7ac0df380294fecdc026b28837fa07c02e459c7fb9c54e", size = 228980, upload-time = "2025-06-30T15:52:50.903Z" }, - { url = "https://files.pythonhosted.org/packages/21/32/c9a2d8444a50ec48c4733ccc67254100c10e1c8ae8e40c7a2d2183b59b97/multidict-6.6.3-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:274d416b0df887aef98f19f21578653982cfb8a05b4e187d4a17103322eeaf8f", size = 257776, upload-time = "2025-06-30T15:52:52.764Z" }, - { url = "https://files.pythonhosted.org/packages/68/d0/14fa1699f4ef629eae08ad6201c6b476098f5efb051b296f4c26be7a9fdf/multidict-6.6.3-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e252017a817fad7ce05cafbe5711ed40faeb580e63b16755a3a24e66fa1d87c0", size = 256882, upload-time = "2025-06-30T15:52:54.596Z" }, - { url = "https://files.pythonhosted.org/packages/da/88/84a27570fbe303c65607d517a5f147cd2fc046c2d1da02b84b17b9bdc2aa/multidict-6.6.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2e4cc8d848cd4fe1cdee28c13ea79ab0ed37fc2e89dd77bac86a2e7959a8c3bc", size = 247816, upload-time = "2025-06-30T15:52:56.175Z" }, - { url = "https://files.pythonhosted.org/packages/1c/60/dca352a0c999ce96a5d8b8ee0b2b9f729dcad2e0b0c195f8286269a2074c/multidict-6.6.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9e236a7094b9c4c1b7585f6b9cca34b9d833cf079f7e4c49e6a4a6ec9bfdc68f", size = 245341, upload-time = "2025-06-30T15:52:57.752Z" }, - { url = "https://files.pythonhosted.org/packages/50/ef/433fa3ed06028f03946f3993223dada70fb700f763f70c00079533c34578/multidict-6.6.3-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:e0cb0ab69915c55627c933f0b555a943d98ba71b4d1c57bc0d0a66e2567c7471", size = 235854, upload-time = "2025-06-30T15:52:59.74Z" }, - { url = "https://files.pythonhosted.org/packages/1b/1f/487612ab56fbe35715320905215a57fede20de7db40a261759690dc80471/multidict-6.6.3-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:81ef2f64593aba09c5212a3d0f8c906a0d38d710a011f2f42759704d4557d3f2", size = 243432, upload-time = "2025-06-30T15:53:01.602Z" }, - { url = "https://files.pythonhosted.org/packages/da/6f/ce8b79de16cd885c6f9052c96a3671373d00c59b3ee635ea93e6e81b8ccf/multidict-6.6.3-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:b9cbc60010de3562545fa198bfc6d3825df430ea96d2cc509c39bd71e2e7d648", size = 252731, upload-time = "2025-06-30T15:53:03.517Z" }, - { url = "https://files.pythonhosted.org/packages/bb/fe/a2514a6aba78e5abefa1624ca85ae18f542d95ac5cde2e3815a9fbf369aa/multidict-6.6.3-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:70d974eaaa37211390cd02ef93b7e938de564bbffa866f0b08d07e5e65da783d", size = 247086, upload-time = "2025-06-30T15:53:05.48Z" }, - { url = "https://files.pythonhosted.org/packages/8c/22/b788718d63bb3cce752d107a57c85fcd1a212c6c778628567c9713f9345a/multidict-6.6.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:3713303e4a6663c6d01d648a68f2848701001f3390a030edaaf3fc949c90bf7c", size = 243338, upload-time = "2025-06-30T15:53:07.522Z" }, - { url = "https://files.pythonhosted.org/packages/22/d6/fdb3d0670819f2228f3f7d9af613d5e652c15d170c83e5f1c94fbc55a25b/multidict-6.6.3-cp313-cp313t-win32.whl", hash = "sha256:639ecc9fe7cd73f2495f62c213e964843826f44505a3e5d82805aa85cac6f89e", size = 47812, upload-time = "2025-06-30T15:53:09.263Z" }, - { url = "https://files.pythonhosted.org/packages/b6/d6/a9d2c808f2c489ad199723197419207ecbfbc1776f6e155e1ecea9c883aa/multidict-6.6.3-cp313-cp313t-win_amd64.whl", hash = "sha256:9f97e181f344a0ef3881b573d31de8542cc0dbc559ec68c8f8b5ce2c2e91646d", size = 53011, upload-time = "2025-06-30T15:53:11.038Z" }, - { url = "https://files.pythonhosted.org/packages/f2/40/b68001cba8188dd267590a111f9661b6256debc327137667e832bf5d66e8/multidict-6.6.3-cp313-cp313t-win_arm64.whl", hash = "sha256:ce8b7693da41a3c4fde5871c738a81490cea5496c671d74374c8ab889e1834fb", size = 45254, upload-time = "2025-06-30T15:53:12.421Z" }, - { url = "https://files.pythonhosted.org/packages/d2/64/ba29bd6dfc895e592b2f20f92378e692ac306cf25dd0be2f8e0a0f898edb/multidict-6.6.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c8161b5a7778d3137ea2ee7ae8a08cce0010de3b00ac671c5ebddeaa17cefd22", size = 76959, upload-time = "2025-06-30T15:53:13.827Z" }, - { url = "https://files.pythonhosted.org/packages/ca/cd/872ae4c134257dacebff59834983c1615d6ec863b6e3d360f3203aad8400/multidict-6.6.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1328201ee930f069961ae707d59c6627ac92e351ed5b92397cf534d1336ce557", size = 44864, upload-time = "2025-06-30T15:53:15.658Z" }, - { url = "https://files.pythonhosted.org/packages/15/35/d417d8f62f2886784b76df60522d608aba39dfc83dd53b230ca71f2d4c53/multidict-6.6.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b1db4d2093d6b235de76932febf9d50766cf49a5692277b2c28a501c9637f616", size = 44540, upload-time = "2025-06-30T15:53:17.208Z" }, - { url = "https://files.pythonhosted.org/packages/85/59/25cddf781f12cddb2386baa29744a3fdd160eb705539b48065f0cffd86d5/multidict-6.6.3-cp39-cp39-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:53becb01dd8ebd19d1724bebe369cfa87e4e7f29abbbe5c14c98ce4c383e16cd", size = 224075, upload-time = "2025-06-30T15:53:18.705Z" }, - { url = "https://files.pythonhosted.org/packages/c4/21/4055b6a527954c572498a8068c26bd3b75f2b959080e17e12104b592273c/multidict-6.6.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41bb9d1d4c303886e2d85bade86e59885112a7f4277af5ad47ab919a2251f306", size = 240535, upload-time = "2025-06-30T15:53:20.359Z" }, - { url = "https://files.pythonhosted.org/packages/58/98/17f1f80bdba0b2fef49cf4ba59cebf8a81797f745f547abb5c9a4039df62/multidict-6.6.3-cp39-cp39-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:775b464d31dac90f23192af9c291dc9f423101857e33e9ebf0020a10bfcf4144", size = 219361, upload-time = "2025-06-30T15:53:22.371Z" }, - { url = "https://files.pythonhosted.org/packages/f8/0e/a5e595fdd0820069f0c29911d5dc9dc3a75ec755ae733ce59a4e6962ae42/multidict-6.6.3-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:d04d01f0a913202205a598246cf77826fe3baa5a63e9f6ccf1ab0601cf56eca0", size = 251207, upload-time = "2025-06-30T15:53:24.307Z" }, - { url = "https://files.pythonhosted.org/packages/66/9e/0f51e4cffea2daf24c137feabc9ec848ce50f8379c9badcbac00b41ab55e/multidict-6.6.3-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d25594d3b38a2e6cabfdcafef339f754ca6e81fbbdb6650ad773ea9775af35ab", size = 249749, upload-time = "2025-06-30T15:53:26.056Z" }, - { url = "https://files.pythonhosted.org/packages/49/a0/a7cfc13c9a71ceb8c1c55457820733af9ce01e121139271f7b13e30c29d2/multidict-6.6.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:35712f1748d409e0707b165bf49f9f17f9e28ae85470c41615778f8d4f7d9609", size = 239202, upload-time = "2025-06-30T15:53:28.096Z" }, - { url = "https://files.pythonhosted.org/packages/c7/50/7ae0d1149ac71cab6e20bb7faf2a1868435974994595dadfdb7377f7140f/multidict-6.6.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1c8082e5814b662de8589d6a06c17e77940d5539080cbab9fe6794b5241b76d9", size = 237269, upload-time = "2025-06-30T15:53:30.124Z" }, - { url = "https://files.pythonhosted.org/packages/b4/ac/2d0bf836c9c63a57360d57b773359043b371115e1c78ff648993bf19abd0/multidict-6.6.3-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:61af8a4b771f1d4d000b3168c12c3120ccf7284502a94aa58c68a81f5afac090", size = 232961, upload-time = "2025-06-30T15:53:31.766Z" }, - { url = "https://files.pythonhosted.org/packages/85/e1/68a65f069df298615591e70e48bfd379c27d4ecb252117c18bf52eebc237/multidict-6.6.3-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:448e4a9afccbf297577f2eaa586f07067441e7b63c8362a3540ba5a38dc0f14a", size = 240863, upload-time = "2025-06-30T15:53:33.488Z" }, - { url = "https://files.pythonhosted.org/packages/ae/ab/702f1baca649f88ea1dc6259fc2aa4509f4ad160ba48c8e61fbdb4a5a365/multidict-6.6.3-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:233ad16999afc2bbd3e534ad8dbe685ef8ee49a37dbc2cdc9514e57b6d589ced", size = 246800, upload-time = "2025-06-30T15:53:35.21Z" }, - { url = "https://files.pythonhosted.org/packages/5e/0b/726e690bfbf887985a8710ef2f25f1d6dd184a35bd3b36429814f810a2fc/multidict-6.6.3-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:bb933c891cd4da6bdcc9733d048e994e22e1883287ff7540c2a0f3b117605092", size = 242034, upload-time = "2025-06-30T15:53:36.913Z" }, - { url = "https://files.pythonhosted.org/packages/73/bb/839486b27bcbcc2e0d875fb9d4012b4b6aa99639137343106aa7210e047a/multidict-6.6.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:37b09ca60998e87734699e88c2363abfd457ed18cfbf88e4009a4e83788e63ed", size = 235377, upload-time = "2025-06-30T15:53:38.618Z" }, - { url = "https://files.pythonhosted.org/packages/e3/46/574d75ab7b9ae8690fe27e89f5fcd0121633112b438edfb9ed2be8be096b/multidict-6.6.3-cp39-cp39-win32.whl", hash = "sha256:f54cb79d26d0cd420637d184af38f0668558f3c4bbe22ab7ad830e67249f2e0b", size = 41420, upload-time = "2025-06-30T15:53:40.309Z" }, - { url = "https://files.pythonhosted.org/packages/78/c3/8b3bc755508b777868349f4bfa844d3d31832f075ee800a3d6f1807338c5/multidict-6.6.3-cp39-cp39-win_amd64.whl", hash = "sha256:295adc9c0551e5d5214b45cf29ca23dbc28c2d197a9c30d51aed9e037cb7c578", size = 46124, upload-time = "2025-06-30T15:53:41.984Z" }, - { url = "https://files.pythonhosted.org/packages/b2/30/5a66e7e4550e80975faee5b5dd9e9bd09194d2fd8f62363119b9e46e204b/multidict-6.6.3-cp39-cp39-win_arm64.whl", hash = "sha256:15332783596f227db50fb261c2c251a58ac3873c457f3a550a95d5c0aa3c770d", size = 42973, upload-time = "2025-06-30T15:53:43.505Z" }, - { url = "https://files.pythonhosted.org/packages/d8/30/9aec301e9772b098c1f5c0ca0279237c9766d94b97802e9888010c64b0ed/multidict-6.6.3-py3-none-any.whl", hash = "sha256:8db10f29c7541fc5da4defd8cd697e1ca429db743fa716325f236079b96f775a", size = 12313, upload-time = "2025-06-30T15:53:45.437Z" }, -] - -[[package]] -name = "nbclient" -version = "0.10.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "jupyter-client" }, - { name = "jupyter-core" }, - { name = "nbformat" }, - { name = "traitlets" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/87/66/7ffd18d58eae90d5721f9f39212327695b749e23ad44b3881744eaf4d9e8/nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193", size = 62424, upload-time = "2024-12-19T10:32:27.164Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/34/6d/e7fa07f03a4a7b221d94b4d586edb754a9b0dc3c9e2c93353e9fa4e0d117/nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d", size = 25434, upload-time = "2024-12-19T10:32:24.139Z" }, -] - -[[package]] -name = "nbconvert" -version = "7.16.6" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "beautifulsoup4" }, - { name = "bleach", extra = ["css"] }, - { name = "defusedxml" }, - { name = "importlib-metadata", marker = "python_full_version < '3.10'" }, - { name = "jinja2" }, - { name = "jupyter-core" }, - { name = "jupyterlab-pygments" }, - { name = "markupsafe" }, - { name = "mistune" }, - { name = "nbclient" }, - { name = "nbformat" }, - { name = "packaging" }, - { name = "pandocfilters" }, - { name = "pygments" }, - { name = "traitlets" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a3/59/f28e15fc47ffb73af68a8d9b47367a8630d76e97ae85ad18271b9db96fdf/nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582", size = 857715, upload-time = "2025-01-28T09:29:14.724Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/9a/cd673b2f773a12c992f41309ef81b99da1690426bd2f96957a7ade0d3ed7/nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b", size = 258525, upload-time = "2025-01-28T09:29:12.551Z" }, -] - -[[package]] -name = "nbformat" -version = "5.10.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "fastjsonschema" }, - { name = "jsonschema" }, - { name = "jupyter-core" }, - { name = "traitlets" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/6d/fd/91545e604bc3dad7dca9ed03284086039b294c6b3d75c0d2fa45f9e9caf3/nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a", size = 142749, upload-time = "2024-04-04T11:20:37.371Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b", size = 78454, upload-time = "2024-04-04T11:20:34.895Z" }, -] - [[package]] name = "ndindex" version = "1.10.0" @@ -2833,8 +1598,7 @@ source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", ] sdist = { url = "https://files.pythonhosted.org/packages/c4/80/a84676339aaae2f1cfdf9f418701dd634aef9cc76f708ef55c36ff39c3ca/networkx-3.2.1.tar.gz", hash = "sha256:9f1bb5cf3409bf324e0a722c20bdb4c20ee39bf1c30ce8ae499c8502b0b5e0c6", size = 2073928, upload-time = "2023-10-28T08:41:39.364Z" } wheels = [ @@ -2846,8 +1610,7 @@ name = "networkx" version = "3.4.2" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and sys_platform == 'darwin'", "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -2861,16 +1624,10 @@ name = "networkx" version = "3.5" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -2879,34 +1636,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl", hash = "sha256:0030d386a9a06dee3565298b4a734b68589749a544acbb6c412dc9e2489ec6ec", size = 2034406, upload-time = "2025-05-29T11:35:04.961Z" }, ] -[[package]] -name = "notebook" -version = "7.4.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "jupyter-server" }, - { name = "jupyterlab" }, - { name = "jupyterlab-server" }, - { name = "notebook-shim" }, - { name = "tornado" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b1/4e/a40b5a94eb01fc51746db7854296d88b84905ab18ee0fcef853a60d708a3/notebook-7.4.4.tar.gz", hash = "sha256:392fd501e266f2fb3466c6fcd3331163a2184968cb5c5accf90292e01dfe528c", size = 13883628, upload-time = "2025-06-30T13:04:18.099Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b3/c0/e64d2047fd752249b0b69f6aee2a7049eb94e7273e5baabc8b8ad05cc068/notebook-7.4.4-py3-none-any.whl", hash = "sha256:32840f7f777b6bff79bb101159336e9b332bdbfba1495b8739e34d1d65cbc1c0", size = 14288000, upload-time = "2025-06-30T13:04:14.584Z" }, -] - -[[package]] -name = "notebook-shim" -version = "0.2.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "jupyter-server" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/54/d2/92fa3243712b9a3e8bafaf60aac366da1cada3639ca767ff4b5b3654ec28/notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb", size = 13167, upload-time = "2024-02-14T23:35:18.353Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef", size = 13307, upload-time = "2024-02-14T23:35:16.286Z" }, -] - [[package]] name = "numexpr" version = "2.10.2" @@ -2914,8 +1643,7 @@ source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", ] dependencies = [ { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, @@ -2964,20 +1692,13 @@ name = "numexpr" version = "2.11.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and sys_platform == 'darwin'", "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -3026,8 +1747,7 @@ source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", ] sdist = { url = "https://files.pythonhosted.org/packages/a9/75/10dd1f8116a8b796cb2c737b674e02d02e80454bda953fa7e65d8c12b016/numpy-2.0.2.tar.gz", hash = "sha256:883c987dee1880e2a864ab0dc9892292582510604156762362d9326444636e78", size = 18902015, upload-time = "2024-08-26T20:19:40.945Z" } wheels = [ @@ -3082,8 +1802,7 @@ name = "numpy" version = "2.2.6" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and sys_platform == 'darwin'", "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -3150,16 +1869,10 @@ name = "numpy" version = "2.3.1" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -3218,114 +1931,22 @@ wheels = [ ] [[package]] -name = "omegaconf" -version = "2.3.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "antlr4-python3-runtime" }, - { name = "pyyaml" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/09/48/6388f1bb9da707110532cb70ec4d2822858ddfb44f1cdf1233c20a80ea4b/omegaconf-2.3.0.tar.gz", hash = "sha256:d5d4b6d29955cc50ad50c46dc269bcd92c6e00f5f90d23ab5fee7bfca4ba4cc7", size = 3298120, upload-time = "2022-12-08T20:59:22.753Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e3/94/1843518e420fa3ed6919835845df698c7e27e183cb997394e4a670973a65/omegaconf-2.3.0-py3-none-any.whl", hash = "sha256:7b4df175cdb08ba400f45cae3bdcae7ba8365db4d165fc65fd04b050ab63b46b", size = 79500, upload-time = "2022-12-08T20:59:19.686Z" }, -] - -[[package]] -name = "opencensus" -version = "0.11.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "google-api-core" }, - { name = "opencensus-context" }, - { name = "six" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/15/a7/a46dcffa1b63084f9f17fe3c8cb20724c4c8f91009fd0b2cfdb27d5d2b35/opencensus-0.11.4.tar.gz", hash = "sha256:cbef87d8b8773064ab60e5c2a1ced58bbaa38a6d052c41aec224958ce544eff2", size = 64966, upload-time = "2024-01-03T18:04:07.085Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b5/ed/9fbdeb23a09e430d87b7d72d430484b88184633dc50f6bfb792354b6f661/opencensus-0.11.4-py2.py3-none-any.whl", hash = "sha256:a18487ce68bc19900336e0ff4655c5a116daf10c1b3685ece8d971bddad6a864", size = 128225, upload-time = "2024-01-03T18:04:05.127Z" }, -] - -[[package]] -name = "opencensus-context" -version = "0.1.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/4c/96/3b6f638f6275a8abbd45e582448723bffa29c1fb426721dedb5c72f7d056/opencensus-context-0.1.3.tar.gz", hash = "sha256:a03108c3c10d8c80bb5ddf5c8a1f033161fa61972a9917f9b9b3a18517f0088c", size = 4066, upload-time = "2022-08-03T22:20:22.359Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/10/68/162c97ea78c957d68ecf78a5c5041d2e25bd5562bdf5d89a6cbf7f8429bf/opencensus_context-0.1.3-py2.py3-none-any.whl", hash = "sha256:073bb0590007af276853009fac7e4bab1d523c3f03baf4cb4511ca38967c6039", size = 5060, upload-time = "2022-08-03T22:20:20.352Z" }, -] - -[[package]] -name = "opentelemetry-api" -version = "1.35.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "importlib-metadata" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/99/c9/4509bfca6bb43220ce7f863c9f791e0d5001c2ec2b5867d48586008b3d96/opentelemetry_api-1.35.0.tar.gz", hash = "sha256:a111b959bcfa5b4d7dffc2fbd6a241aa72dd78dd8e79b5b1662bda896c5d2ffe", size = 64778, upload-time = "2025-07-11T12:23:28.804Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1d/5a/3f8d078dbf55d18442f6a2ecedf6786d81d7245844b2b20ce2b8ad6f0307/opentelemetry_api-1.35.0-py3-none-any.whl", hash = "sha256:c4ea7e258a244858daf18474625e9cc0149b8ee354f37843415771a40c25ee06", size = 65566, upload-time = "2025-07-11T12:23:07.944Z" }, -] - -[[package]] -name = "opentelemetry-exporter-prometheus" -version = "0.56b0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-api" }, - { name = "opentelemetry-sdk" }, - { name = "prometheus-client" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/bf/75/e784a56805a0bf125da3cadacdbb2d5e2519ac48852ec52eac86a9f16fa3/opentelemetry_exporter_prometheus-0.56b0.tar.gz", hash = "sha256:c783146b66400269783b773c5ccedf7d2ff140271478e2816202930a14c07c6b", size = 14905, upload-time = "2025-07-11T12:23:33.271Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/de/a4/813a192c391c252cacb8d95e606a9917036ca94b477f2a8fc6748d86692d/opentelemetry_exporter_prometheus-0.56b0-py3-none-any.whl", hash = "sha256:0a7d8952e2938f830deb5000505eecf20416ef25fdb591753b9b0cb91d9560ea", size = 12924, upload-time = "2025-07-11T12:23:14.886Z" }, -] - -[[package]] -name = "opentelemetry-proto" -version = "1.35.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "protobuf" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/dc/a2/7366e32d9a2bccbb8614942dbea2cf93c209610385ea966cb050334f8df7/opentelemetry_proto-1.35.0.tar.gz", hash = "sha256:532497341bd3e1c074def7c5b00172601b28bb83b48afc41a4b779f26eb4ee05", size = 46151, upload-time = "2025-07-11T12:23:38.797Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/00/a7/3f05de580da7e8a8b8dff041d3d07a20bf3bb62d3bcc027f8fd669a73ff4/opentelemetry_proto-1.35.0-py3-none-any.whl", hash = "sha256:98fffa803164499f562718384e703be8d7dfbe680192279a0429cb150a2f8809", size = 72536, upload-time = "2025-07-11T12:23:23.247Z" }, -] - -[[package]] -name = "opentelemetry-sdk" -version = "1.35.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "opentelemetry-api" }, - { name = "opentelemetry-semantic-conventions" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/9a/cf/1eb2ed2ce55e0a9aa95b3007f26f55c7943aeef0a783bb006bdd92b3299e/opentelemetry_sdk-1.35.0.tar.gz", hash = "sha256:2a400b415ab68aaa6f04e8a6a9f6552908fb3090ae2ff78d6ae0c597ac581954", size = 160871, upload-time = "2025-07-11T12:23:39.566Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/01/4f/8e32b757ef3b660511b638ab52d1ed9259b666bdeeceba51a082ce3aea95/opentelemetry_sdk-1.35.0-py3-none-any.whl", hash = "sha256:223d9e5f5678518f4842311bb73966e0b6db5d1e0b74e35074c052cd2487f800", size = 119379, upload-time = "2025-07-11T12:23:24.521Z" }, -] - -[[package]] -name = "opentelemetry-semantic-conventions" -version = "0.56b0" +name = "opencv-python" +version = "4.11.0.86" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "opentelemetry-api" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/32/8e/214fa817f63b9f068519463d8ab46afd5d03b98930c39394a37ae3e741d0/opentelemetry_semantic_conventions-0.56b0.tar.gz", hash = "sha256:c114c2eacc8ff6d3908cb328c811eaf64e6d68623840be9224dc829c4fd6c2ea", size = 124221, upload-time = "2025-07-11T12:23:40.71Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c7/3f/e80c1b017066a9d999efffe88d1cce66116dcf5cb7f80c41040a83b6e03b/opentelemetry_semantic_conventions-0.56b0-py3-none-any.whl", hash = "sha256:df44492868fd6b482511cc43a942e7194be64e94945f572db24df2e279a001a2", size = 201625, upload-time = "2025-07-11T12:23:25.63Z" }, + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, ] - -[[package]] -name = "overrides" -version = "7.7.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/36/86/b585f53236dec60aba864e050778b25045f857e17f6e5ea0ae95fe80edd2/overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a", size = 22812, upload-time = "2024-01-27T21:01:33.423Z" } +sdist = { url = "https://files.pythonhosted.org/packages/17/06/68c27a523103dad5837dc5b87e71285280c4f098c60e4fe8a8db6486ab09/opencv-python-4.11.0.86.tar.gz", hash = "sha256:03d60ccae62304860d232272e4a4fda93c39d595780cb40b161b310244b736a4", size = 95171956, upload-time = "2025-01-16T13:52:24.737Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/ab/fc8290c6a4c722e5514d80f62b2dc4c4df1a68a41d1364e625c35990fcf3/overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49", size = 17832, upload-time = "2024-01-27T21:01:31.393Z" }, + { url = "https://files.pythonhosted.org/packages/05/4d/53b30a2a3ac1f75f65a59eb29cf2ee7207ce64867db47036ad61743d5a23/opencv_python-4.11.0.86-cp37-abi3-macosx_13_0_arm64.whl", hash = "sha256:432f67c223f1dc2824f5e73cdfcd9db0efc8710647d4e813012195dc9122a52a", size = 37326322, upload-time = "2025-01-16T13:52:25.887Z" }, + { url = "https://files.pythonhosted.org/packages/3b/84/0a67490741867eacdfa37bc18df96e08a9d579583b419010d7f3da8ff503/opencv_python-4.11.0.86-cp37-abi3-macosx_13_0_x86_64.whl", hash = "sha256:9d05ef13d23fe97f575153558653e2d6e87103995d54e6a35db3f282fe1f9c66", size = 56723197, upload-time = "2025-01-16T13:55:21.222Z" }, + { url = "https://files.pythonhosted.org/packages/f3/bd/29c126788da65c1fb2b5fb621b7fed0ed5f9122aa22a0868c5e2c15c6d23/opencv_python-4.11.0.86-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b92ae2c8852208817e6776ba1ea0d6b1e0a1b5431e971a2a0ddd2a8cc398202", size = 42230439, upload-time = "2025-01-16T13:51:35.822Z" }, + { url = "https://files.pythonhosted.org/packages/2c/8b/90eb44a40476fa0e71e05a0283947cfd74a5d36121a11d926ad6f3193cc4/opencv_python-4.11.0.86-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b02611523803495003bd87362db3e1d2a0454a6a63025dc6658a9830570aa0d", size = 62986597, upload-time = "2025-01-16T13:52:08.836Z" }, + { url = "https://files.pythonhosted.org/packages/fb/d7/1d5941a9dde095468b288d989ff6539dd69cd429dbf1b9e839013d21b6f0/opencv_python-4.11.0.86-cp37-abi3-win32.whl", hash = "sha256:810549cb2a4aedaa84ad9a1c92fbfdfc14090e2749cedf2c1589ad8359aa169b", size = 29384337, upload-time = "2025-01-16T13:52:13.549Z" }, + { url = "https://files.pythonhosted.org/packages/a4/7d/f1c30a92854540bf789e9cd5dde7ef49bbe63f855b85a2e6b3db8135c591/opencv_python-4.11.0.86-cp37-abi3-win_amd64.whl", hash = "sha256:085ad9b77c18853ea66283e98affefe2de8cc4c1f43eda4c100cf9b2721142ec", size = 39488044, upload-time = "2025-01-16T13:52:21.928Z" }, ] [[package]] @@ -3394,15 +2015,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/fa/cb/6c32f8fadefa4314b740fbe8f74f6a02423bd1549e7c930826df35ac3c1b/pandas-2.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:b4b0de34dc8499c2db34000ef8baad684cfa4cbd836ecee05f323ebfba348c7d", size = 11357186, upload-time = "2025-07-07T19:20:01.475Z" }, ] -[[package]] -name = "pandocfilters" -version = "1.5.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/70/6f/3dd4940bbe001c06a65f88e36bad298bc7a0de5036115639926b0c5c0458/pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e", size = 8454, upload-time = "2024-01-18T20:08:13.726Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc", size = 8663, upload-time = "2024-01-18T20:08:11.28Z" }, -] - [[package]] name = "paramiko" version = "3.5.1" @@ -3560,15 +2172,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4", size = 18567, upload-time = "2025-05-07T22:47:40.376Z" }, ] -[[package]] -name = "prometheus-client" -version = "0.22.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5e/cf/40dde0a2be27cc1eb41e333d1a674a74ce8b8b0457269cc640fd42b07cf7/prometheus_client-0.22.1.tar.gz", hash = "sha256:190f1331e783cf21eb60bca559354e0a4d4378facecf78f5428c39b675d20d28", size = 69746, upload-time = "2025-06-02T14:29:01.152Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/32/ae/ec06af4fe3ee72d16973474f122541746196aaa16cea6f66d18b963c6177/prometheus_client-0.22.1-py3-none-any.whl", hash = "sha256:cca895342e308174341b2cbf99a56bef291fbc0ef7b9e5412a0f26d653ba7094", size = 58694, upload-time = "2025-06-02T14:29:00.068Z" }, -] - [[package]] name = "prompt-toolkit" version = "3.0.51" @@ -3581,139 +2184,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ce/4f/5249960887b1fbe561d9ff265496d170b55a735b76724f10ef19f9e40716/prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07", size = 387810, upload-time = "2025-04-15T09:18:44.753Z" }, ] -[[package]] -name = "propcache" -version = "0.3.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a6/16/43264e4a779dd8588c21a70f0709665ee8f611211bdd2c87d952cfa7c776/propcache-0.3.2.tar.gz", hash = "sha256:20d7d62e4e7ef05f221e0db2856b979540686342e7dd9973b815599c7057e168", size = 44139, upload-time = "2025-06-09T22:56:06.081Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ab/14/510deed325e262afeb8b360043c5d7c960da7d3ecd6d6f9496c9c56dc7f4/propcache-0.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:22d9962a358aedbb7a2e36187ff273adeaab9743373a272976d2e348d08c7770", size = 73178, upload-time = "2025-06-09T22:53:40.126Z" }, - { url = "https://files.pythonhosted.org/packages/cd/4e/ad52a7925ff01c1325653a730c7ec3175a23f948f08626a534133427dcff/propcache-0.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0d0fda578d1dc3f77b6b5a5dce3b9ad69a8250a891760a548df850a5e8da87f3", size = 43133, upload-time = "2025-06-09T22:53:41.965Z" }, - { url = "https://files.pythonhosted.org/packages/63/7c/e9399ba5da7780871db4eac178e9c2e204c23dd3e7d32df202092a1ed400/propcache-0.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3def3da3ac3ce41562d85db655d18ebac740cb3fa4367f11a52b3da9d03a5cc3", size = 43039, upload-time = "2025-06-09T22:53:43.268Z" }, - { url = "https://files.pythonhosted.org/packages/22/e1/58da211eb8fdc6fc854002387d38f415a6ca5f5c67c1315b204a5d3e9d7a/propcache-0.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9bec58347a5a6cebf239daba9bda37dffec5b8d2ce004d9fe4edef3d2815137e", size = 201903, upload-time = "2025-06-09T22:53:44.872Z" }, - { url = "https://files.pythonhosted.org/packages/c4/0a/550ea0f52aac455cb90111c8bab995208443e46d925e51e2f6ebdf869525/propcache-0.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:55ffda449a507e9fbd4aca1a7d9aa6753b07d6166140e5a18d2ac9bc49eac220", size = 213362, upload-time = "2025-06-09T22:53:46.707Z" }, - { url = "https://files.pythonhosted.org/packages/5a/af/9893b7d878deda9bb69fcf54600b247fba7317761b7db11fede6e0f28bd0/propcache-0.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:64a67fb39229a8a8491dd42f864e5e263155e729c2e7ff723d6e25f596b1e8cb", size = 210525, upload-time = "2025-06-09T22:53:48.547Z" }, - { url = "https://files.pythonhosted.org/packages/7c/bb/38fd08b278ca85cde36d848091ad2b45954bc5f15cce494bb300b9285831/propcache-0.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9da1cf97b92b51253d5b68cf5a2b9e0dafca095e36b7f2da335e27dc6172a614", size = 198283, upload-time = "2025-06-09T22:53:50.067Z" }, - { url = "https://files.pythonhosted.org/packages/78/8c/9fe55bd01d362bafb413dfe508c48753111a1e269737fa143ba85693592c/propcache-0.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5f559e127134b07425134b4065be45b166183fdcb433cb6c24c8e4149056ad50", size = 191872, upload-time = "2025-06-09T22:53:51.438Z" }, - { url = "https://files.pythonhosted.org/packages/54/14/4701c33852937a22584e08abb531d654c8bcf7948a8f87ad0a4822394147/propcache-0.3.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:aff2e4e06435d61f11a428360a932138d0ec288b0a31dd9bd78d200bd4a2b339", size = 199452, upload-time = "2025-06-09T22:53:53.229Z" }, - { url = "https://files.pythonhosted.org/packages/16/44/447f2253d859602095356007657ee535e0093215ea0b3d1d6a41d16e5201/propcache-0.3.2-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:4927842833830942a5d0a56e6f4839bc484785b8e1ce8d287359794818633ba0", size = 191567, upload-time = "2025-06-09T22:53:54.541Z" }, - { url = "https://files.pythonhosted.org/packages/f2/b3/e4756258749bb2d3b46defcff606a2f47410bab82be5824a67e84015b267/propcache-0.3.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:6107ddd08b02654a30fb8ad7a132021759d750a82578b94cd55ee2772b6ebea2", size = 193015, upload-time = "2025-06-09T22:53:56.44Z" }, - { url = "https://files.pythonhosted.org/packages/1e/df/e6d3c7574233164b6330b9fd697beeac402afd367280e6dc377bb99b43d9/propcache-0.3.2-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:70bd8b9cd6b519e12859c99f3fc9a93f375ebd22a50296c3a295028bea73b9e7", size = 204660, upload-time = "2025-06-09T22:53:57.839Z" }, - { url = "https://files.pythonhosted.org/packages/b2/53/e4d31dd5170b4a0e2e6b730f2385a96410633b4833dc25fe5dffd1f73294/propcache-0.3.2-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2183111651d710d3097338dd1893fcf09c9f54e27ff1a8795495a16a469cc90b", size = 206105, upload-time = "2025-06-09T22:53:59.638Z" }, - { url = "https://files.pythonhosted.org/packages/7f/fe/74d54cf9fbe2a20ff786e5f7afcfde446588f0cf15fb2daacfbc267b866c/propcache-0.3.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fb075ad271405dcad8e2a7ffc9a750a3bf70e533bd86e89f0603e607b93aa64c", size = 196980, upload-time = "2025-06-09T22:54:01.071Z" }, - { url = "https://files.pythonhosted.org/packages/22/ec/c469c9d59dada8a7679625e0440b544fe72e99311a4679c279562051f6fc/propcache-0.3.2-cp310-cp310-win32.whl", hash = "sha256:404d70768080d3d3bdb41d0771037da19d8340d50b08e104ca0e7f9ce55fce70", size = 37679, upload-time = "2025-06-09T22:54:03.003Z" }, - { url = "https://files.pythonhosted.org/packages/38/35/07a471371ac89d418f8d0b699c75ea6dca2041fbda360823de21f6a9ce0a/propcache-0.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:7435d766f978b4ede777002e6b3b6641dd229cd1da8d3d3106a45770365f9ad9", size = 41459, upload-time = "2025-06-09T22:54:04.134Z" }, - { url = "https://files.pythonhosted.org/packages/80/8d/e8b436717ab9c2cfc23b116d2c297305aa4cd8339172a456d61ebf5669b8/propcache-0.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0b8d2f607bd8f80ddc04088bc2a037fdd17884a6fcadc47a96e334d72f3717be", size = 74207, upload-time = "2025-06-09T22:54:05.399Z" }, - { url = "https://files.pythonhosted.org/packages/d6/29/1e34000e9766d112171764b9fa3226fa0153ab565d0c242c70e9945318a7/propcache-0.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:06766d8f34733416e2e34f46fea488ad5d60726bb9481d3cddf89a6fa2d9603f", size = 43648, upload-time = "2025-06-09T22:54:08.023Z" }, - { url = "https://files.pythonhosted.org/packages/46/92/1ad5af0df781e76988897da39b5f086c2bf0f028b7f9bd1f409bb05b6874/propcache-0.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a2dc1f4a1df4fecf4e6f68013575ff4af84ef6f478fe5344317a65d38a8e6dc9", size = 43496, upload-time = "2025-06-09T22:54:09.228Z" }, - { url = "https://files.pythonhosted.org/packages/b3/ce/e96392460f9fb68461fabab3e095cb00c8ddf901205be4eae5ce246e5b7e/propcache-0.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:be29c4f4810c5789cf10ddf6af80b041c724e629fa51e308a7a0fb19ed1ef7bf", size = 217288, upload-time = "2025-06-09T22:54:10.466Z" }, - { url = "https://files.pythonhosted.org/packages/c5/2a/866726ea345299f7ceefc861a5e782b045545ae6940851930a6adaf1fca6/propcache-0.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59d61f6970ecbd8ff2e9360304d5c8876a6abd4530cb752c06586849ac8a9dc9", size = 227456, upload-time = "2025-06-09T22:54:11.828Z" }, - { url = "https://files.pythonhosted.org/packages/de/03/07d992ccb6d930398689187e1b3c718339a1c06b8b145a8d9650e4726166/propcache-0.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:62180e0b8dbb6b004baec00a7983e4cc52f5ada9cd11f48c3528d8cfa7b96a66", size = 225429, upload-time = "2025-06-09T22:54:13.823Z" }, - { url = "https://files.pythonhosted.org/packages/5d/e6/116ba39448753b1330f48ab8ba927dcd6cf0baea8a0ccbc512dfb49ba670/propcache-0.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c144ca294a204c470f18cf4c9d78887810d04a3e2fbb30eea903575a779159df", size = 213472, upload-time = "2025-06-09T22:54:15.232Z" }, - { url = "https://files.pythonhosted.org/packages/a6/85/f01f5d97e54e428885a5497ccf7f54404cbb4f906688a1690cd51bf597dc/propcache-0.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5c2a784234c28854878d68978265617aa6dc0780e53d44b4d67f3651a17a9a2", size = 204480, upload-time = "2025-06-09T22:54:17.104Z" }, - { url = "https://files.pythonhosted.org/packages/e3/79/7bf5ab9033b8b8194cc3f7cf1aaa0e9c3256320726f64a3e1f113a812dce/propcache-0.3.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5745bc7acdafa978ca1642891b82c19238eadc78ba2aaa293c6863b304e552d7", size = 214530, upload-time = "2025-06-09T22:54:18.512Z" }, - { url = "https://files.pythonhosted.org/packages/31/0b/bd3e0c00509b609317df4a18e6b05a450ef2d9a963e1d8bc9c9415d86f30/propcache-0.3.2-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:c0075bf773d66fa8c9d41f66cc132ecc75e5bb9dd7cce3cfd14adc5ca184cb95", size = 205230, upload-time = "2025-06-09T22:54:19.947Z" }, - { url = "https://files.pythonhosted.org/packages/7a/23/fae0ff9b54b0de4e819bbe559508da132d5683c32d84d0dc2ccce3563ed4/propcache-0.3.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5f57aa0847730daceff0497f417c9de353c575d8da3579162cc74ac294c5369e", size = 206754, upload-time = "2025-06-09T22:54:21.716Z" }, - { url = "https://files.pythonhosted.org/packages/b7/7f/ad6a3c22630aaa5f618b4dc3c3598974a72abb4c18e45a50b3cdd091eb2f/propcache-0.3.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:eef914c014bf72d18efb55619447e0aecd5fb7c2e3fa7441e2e5d6099bddff7e", size = 218430, upload-time = "2025-06-09T22:54:23.17Z" }, - { url = "https://files.pythonhosted.org/packages/5b/2c/ba4f1c0e8a4b4c75910742f0d333759d441f65a1c7f34683b4a74c0ee015/propcache-0.3.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:2a4092e8549031e82facf3decdbc0883755d5bbcc62d3aea9d9e185549936dcf", size = 223884, upload-time = "2025-06-09T22:54:25.539Z" }, - { url = "https://files.pythonhosted.org/packages/88/e4/ebe30fc399e98572019eee82ad0caf512401661985cbd3da5e3140ffa1b0/propcache-0.3.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:85871b050f174bc0bfb437efbdb68aaf860611953ed12418e4361bc9c392749e", size = 211480, upload-time = "2025-06-09T22:54:26.892Z" }, - { url = "https://files.pythonhosted.org/packages/96/0a/7d5260b914e01d1d0906f7f38af101f8d8ed0dc47426219eeaf05e8ea7c2/propcache-0.3.2-cp311-cp311-win32.whl", hash = "sha256:36c8d9b673ec57900c3554264e630d45980fd302458e4ac801802a7fd2ef7897", size = 37757, upload-time = "2025-06-09T22:54:28.241Z" }, - { url = "https://files.pythonhosted.org/packages/e1/2d/89fe4489a884bc0da0c3278c552bd4ffe06a1ace559db5ef02ef24ab446b/propcache-0.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:e53af8cb6a781b02d2ea079b5b853ba9430fcbe18a8e3ce647d5982a3ff69f39", size = 41500, upload-time = "2025-06-09T22:54:29.4Z" }, - { url = "https://files.pythonhosted.org/packages/a8/42/9ca01b0a6f48e81615dca4765a8f1dd2c057e0540f6116a27dc5ee01dfb6/propcache-0.3.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:8de106b6c84506b31c27168582cd3cb3000a6412c16df14a8628e5871ff83c10", size = 73674, upload-time = "2025-06-09T22:54:30.551Z" }, - { url = "https://files.pythonhosted.org/packages/af/6e/21293133beb550f9c901bbece755d582bfaf2176bee4774000bd4dd41884/propcache-0.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:28710b0d3975117239c76600ea351934ac7b5ff56e60953474342608dbbb6154", size = 43570, upload-time = "2025-06-09T22:54:32.296Z" }, - { url = "https://files.pythonhosted.org/packages/0c/c8/0393a0a3a2b8760eb3bde3c147f62b20044f0ddac81e9d6ed7318ec0d852/propcache-0.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce26862344bdf836650ed2487c3d724b00fbfec4233a1013f597b78c1cb73615", size = 43094, upload-time = "2025-06-09T22:54:33.929Z" }, - { url = "https://files.pythonhosted.org/packages/37/2c/489afe311a690399d04a3e03b069225670c1d489eb7b044a566511c1c498/propcache-0.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bca54bd347a253af2cf4544bbec232ab982f4868de0dd684246b67a51bc6b1db", size = 226958, upload-time = "2025-06-09T22:54:35.186Z" }, - { url = "https://files.pythonhosted.org/packages/9d/ca/63b520d2f3d418c968bf596839ae26cf7f87bead026b6192d4da6a08c467/propcache-0.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:55780d5e9a2ddc59711d727226bb1ba83a22dd32f64ee15594b9392b1f544eb1", size = 234894, upload-time = "2025-06-09T22:54:36.708Z" }, - { url = "https://files.pythonhosted.org/packages/11/60/1d0ed6fff455a028d678df30cc28dcee7af77fa2b0e6962ce1df95c9a2a9/propcache-0.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:035e631be25d6975ed87ab23153db6a73426a48db688070d925aa27e996fe93c", size = 233672, upload-time = "2025-06-09T22:54:38.062Z" }, - { url = "https://files.pythonhosted.org/packages/37/7c/54fd5301ef38505ab235d98827207176a5c9b2aa61939b10a460ca53e123/propcache-0.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee6f22b6eaa39297c751d0e80c0d3a454f112f5c6481214fcf4c092074cecd67", size = 224395, upload-time = "2025-06-09T22:54:39.634Z" }, - { url = "https://files.pythonhosted.org/packages/ee/1a/89a40e0846f5de05fdc6779883bf46ba980e6df4d2ff8fb02643de126592/propcache-0.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7ca3aee1aa955438c4dba34fc20a9f390e4c79967257d830f137bd5a8a32ed3b", size = 212510, upload-time = "2025-06-09T22:54:41.565Z" }, - { url = "https://files.pythonhosted.org/packages/5e/33/ca98368586c9566a6b8d5ef66e30484f8da84c0aac3f2d9aec6d31a11bd5/propcache-0.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7a4f30862869fa2b68380d677cc1c5fcf1e0f2b9ea0cf665812895c75d0ca3b8", size = 222949, upload-time = "2025-06-09T22:54:43.038Z" }, - { url = "https://files.pythonhosted.org/packages/ba/11/ace870d0aafe443b33b2f0b7efdb872b7c3abd505bfb4890716ad7865e9d/propcache-0.3.2-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:b77ec3c257d7816d9f3700013639db7491a434644c906a2578a11daf13176251", size = 217258, upload-time = "2025-06-09T22:54:44.376Z" }, - { url = "https://files.pythonhosted.org/packages/5b/d2/86fd6f7adffcfc74b42c10a6b7db721d1d9ca1055c45d39a1a8f2a740a21/propcache-0.3.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:cab90ac9d3f14b2d5050928483d3d3b8fb6b4018893fc75710e6aa361ecb2474", size = 213036, upload-time = "2025-06-09T22:54:46.243Z" }, - { url = "https://files.pythonhosted.org/packages/07/94/2d7d1e328f45ff34a0a284cf5a2847013701e24c2a53117e7c280a4316b3/propcache-0.3.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:0b504d29f3c47cf6b9e936c1852246c83d450e8e063d50562115a6be6d3a2535", size = 227684, upload-time = "2025-06-09T22:54:47.63Z" }, - { url = "https://files.pythonhosted.org/packages/b7/05/37ae63a0087677e90b1d14710e532ff104d44bc1efa3b3970fff99b891dc/propcache-0.3.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:ce2ac2675a6aa41ddb2a0c9cbff53780a617ac3d43e620f8fd77ba1c84dcfc06", size = 234562, upload-time = "2025-06-09T22:54:48.982Z" }, - { url = "https://files.pythonhosted.org/packages/a4/7c/3f539fcae630408d0bd8bf3208b9a647ccad10976eda62402a80adf8fc34/propcache-0.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:62b4239611205294cc433845b914131b2a1f03500ff3c1ed093ed216b82621e1", size = 222142, upload-time = "2025-06-09T22:54:50.424Z" }, - { url = "https://files.pythonhosted.org/packages/7c/d2/34b9eac8c35f79f8a962546b3e97e9d4b990c420ee66ac8255d5d9611648/propcache-0.3.2-cp312-cp312-win32.whl", hash = "sha256:df4a81b9b53449ebc90cc4deefb052c1dd934ba85012aa912c7ea7b7e38b60c1", size = 37711, upload-time = "2025-06-09T22:54:52.072Z" }, - { url = "https://files.pythonhosted.org/packages/19/61/d582be5d226cf79071681d1b46b848d6cb03d7b70af7063e33a2787eaa03/propcache-0.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:7046e79b989d7fe457bb755844019e10f693752d169076138abf17f31380800c", size = 41479, upload-time = "2025-06-09T22:54:53.234Z" }, - { url = "https://files.pythonhosted.org/packages/dc/d1/8c747fafa558c603c4ca19d8e20b288aa0c7cda74e9402f50f31eb65267e/propcache-0.3.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ca592ed634a73ca002967458187109265e980422116c0a107cf93d81f95af945", size = 71286, upload-time = "2025-06-09T22:54:54.369Z" }, - { url = "https://files.pythonhosted.org/packages/61/99/d606cb7986b60d89c36de8a85d58764323b3a5ff07770a99d8e993b3fa73/propcache-0.3.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9ecb0aad4020e275652ba3975740f241bd12a61f1a784df044cf7477a02bc252", size = 42425, upload-time = "2025-06-09T22:54:55.642Z" }, - { url = "https://files.pythonhosted.org/packages/8c/96/ef98f91bbb42b79e9bb82bdd348b255eb9d65f14dbbe3b1594644c4073f7/propcache-0.3.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7f08f1cc28bd2eade7a8a3d2954ccc673bb02062e3e7da09bc75d843386b342f", size = 41846, upload-time = "2025-06-09T22:54:57.246Z" }, - { url = "https://files.pythonhosted.org/packages/5b/ad/3f0f9a705fb630d175146cd7b1d2bf5555c9beaed54e94132b21aac098a6/propcache-0.3.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1a342c834734edb4be5ecb1e9fb48cb64b1e2320fccbd8c54bf8da8f2a84c33", size = 208871, upload-time = "2025-06-09T22:54:58.975Z" }, - { url = "https://files.pythonhosted.org/packages/3a/38/2085cda93d2c8b6ec3e92af2c89489a36a5886b712a34ab25de9fbca7992/propcache-0.3.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8a544caaae1ac73f1fecfae70ded3e93728831affebd017d53449e3ac052ac1e", size = 215720, upload-time = "2025-06-09T22:55:00.471Z" }, - { url = "https://files.pythonhosted.org/packages/61/c1/d72ea2dc83ac7f2c8e182786ab0fc2c7bd123a1ff9b7975bee671866fe5f/propcache-0.3.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:310d11aa44635298397db47a3ebce7db99a4cc4b9bbdfcf6c98a60c8d5261cf1", size = 215203, upload-time = "2025-06-09T22:55:01.834Z" }, - { url = "https://files.pythonhosted.org/packages/af/81/b324c44ae60c56ef12007105f1460d5c304b0626ab0cc6b07c8f2a9aa0b8/propcache-0.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c1396592321ac83157ac03a2023aa6cc4a3cc3cfdecb71090054c09e5a7cce3", size = 206365, upload-time = "2025-06-09T22:55:03.199Z" }, - { url = "https://files.pythonhosted.org/packages/09/73/88549128bb89e66d2aff242488f62869014ae092db63ccea53c1cc75a81d/propcache-0.3.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8cabf5b5902272565e78197edb682017d21cf3b550ba0460ee473753f28d23c1", size = 196016, upload-time = "2025-06-09T22:55:04.518Z" }, - { url = "https://files.pythonhosted.org/packages/b9/3f/3bdd14e737d145114a5eb83cb172903afba7242f67c5877f9909a20d948d/propcache-0.3.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0a2f2235ac46a7aa25bdeb03a9e7060f6ecbd213b1f9101c43b3090ffb971ef6", size = 205596, upload-time = "2025-06-09T22:55:05.942Z" }, - { url = "https://files.pythonhosted.org/packages/0f/ca/2f4aa819c357d3107c3763d7ef42c03980f9ed5c48c82e01e25945d437c1/propcache-0.3.2-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:92b69e12e34869a6970fd2f3da91669899994b47c98f5d430b781c26f1d9f387", size = 200977, upload-time = "2025-06-09T22:55:07.792Z" }, - { url = "https://files.pythonhosted.org/packages/cd/4a/e65276c7477533c59085251ae88505caf6831c0e85ff8b2e31ebcbb949b1/propcache-0.3.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:54e02207c79968ebbdffc169591009f4474dde3b4679e16634d34c9363ff56b4", size = 197220, upload-time = "2025-06-09T22:55:09.173Z" }, - { url = "https://files.pythonhosted.org/packages/7c/54/fc7152e517cf5578278b242396ce4d4b36795423988ef39bb8cd5bf274c8/propcache-0.3.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4adfb44cb588001f68c5466579d3f1157ca07f7504fc91ec87862e2b8e556b88", size = 210642, upload-time = "2025-06-09T22:55:10.62Z" }, - { url = "https://files.pythonhosted.org/packages/b9/80/abeb4a896d2767bf5f1ea7b92eb7be6a5330645bd7fb844049c0e4045d9d/propcache-0.3.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:fd3e6019dc1261cd0291ee8919dd91fbab7b169bb76aeef6c716833a3f65d206", size = 212789, upload-time = "2025-06-09T22:55:12.029Z" }, - { url = "https://files.pythonhosted.org/packages/b3/db/ea12a49aa7b2b6d68a5da8293dcf50068d48d088100ac016ad92a6a780e6/propcache-0.3.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4c181cad81158d71c41a2bce88edce078458e2dd5ffee7eddd6b05da85079f43", size = 205880, upload-time = "2025-06-09T22:55:13.45Z" }, - { url = "https://files.pythonhosted.org/packages/d1/e5/9076a0bbbfb65d1198007059c65639dfd56266cf8e477a9707e4b1999ff4/propcache-0.3.2-cp313-cp313-win32.whl", hash = "sha256:8a08154613f2249519e549de2330cf8e2071c2887309a7b07fb56098f5170a02", size = 37220, upload-time = "2025-06-09T22:55:15.284Z" }, - { url = "https://files.pythonhosted.org/packages/d3/f5/b369e026b09a26cd77aa88d8fffd69141d2ae00a2abaaf5380d2603f4b7f/propcache-0.3.2-cp313-cp313-win_amd64.whl", hash = "sha256:e41671f1594fc4ab0a6dec1351864713cb3a279910ae8b58f884a88a0a632c05", size = 40678, upload-time = "2025-06-09T22:55:16.445Z" }, - { url = "https://files.pythonhosted.org/packages/a4/3a/6ece377b55544941a08d03581c7bc400a3c8cd3c2865900a68d5de79e21f/propcache-0.3.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:9a3cf035bbaf035f109987d9d55dc90e4b0e36e04bbbb95af3055ef17194057b", size = 76560, upload-time = "2025-06-09T22:55:17.598Z" }, - { url = "https://files.pythonhosted.org/packages/0c/da/64a2bb16418740fa634b0e9c3d29edff1db07f56d3546ca2d86ddf0305e1/propcache-0.3.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:156c03d07dc1323d8dacaa221fbe028c5c70d16709cdd63502778e6c3ccca1b0", size = 44676, upload-time = "2025-06-09T22:55:18.922Z" }, - { url = "https://files.pythonhosted.org/packages/36/7b/f025e06ea51cb72c52fb87e9b395cced02786610b60a3ed51da8af017170/propcache-0.3.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:74413c0ba02ba86f55cf60d18daab219f7e531620c15f1e23d95563f505efe7e", size = 44701, upload-time = "2025-06-09T22:55:20.106Z" }, - { url = "https://files.pythonhosted.org/packages/a4/00/faa1b1b7c3b74fc277f8642f32a4c72ba1d7b2de36d7cdfb676db7f4303e/propcache-0.3.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f066b437bb3fa39c58ff97ab2ca351db465157d68ed0440abecb21715eb24b28", size = 276934, upload-time = "2025-06-09T22:55:21.5Z" }, - { url = "https://files.pythonhosted.org/packages/74/ab/935beb6f1756e0476a4d5938ff44bf0d13a055fed880caf93859b4f1baf4/propcache-0.3.2-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f1304b085c83067914721e7e9d9917d41ad87696bf70f0bc7dee450e9c71ad0a", size = 278316, upload-time = "2025-06-09T22:55:22.918Z" }, - { url = "https://files.pythonhosted.org/packages/f8/9d/994a5c1ce4389610838d1caec74bdf0e98b306c70314d46dbe4fcf21a3e2/propcache-0.3.2-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ab50cef01b372763a13333b4e54021bdcb291fc9a8e2ccb9c2df98be51bcde6c", size = 282619, upload-time = "2025-06-09T22:55:24.651Z" }, - { url = "https://files.pythonhosted.org/packages/2b/00/a10afce3d1ed0287cef2e09506d3be9822513f2c1e96457ee369adb9a6cd/propcache-0.3.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fad3b2a085ec259ad2c2842666b2a0a49dea8463579c606426128925af1ed725", size = 265896, upload-time = "2025-06-09T22:55:26.049Z" }, - { url = "https://files.pythonhosted.org/packages/2e/a8/2aa6716ffa566ca57c749edb909ad27884680887d68517e4be41b02299f3/propcache-0.3.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:261fa020c1c14deafd54c76b014956e2f86991af198c51139faf41c4d5e83892", size = 252111, upload-time = "2025-06-09T22:55:27.381Z" }, - { url = "https://files.pythonhosted.org/packages/36/4f/345ca9183b85ac29c8694b0941f7484bf419c7f0fea2d1e386b4f7893eed/propcache-0.3.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:46d7f8aa79c927e5f987ee3a80205c987717d3659f035c85cf0c3680526bdb44", size = 268334, upload-time = "2025-06-09T22:55:28.747Z" }, - { url = "https://files.pythonhosted.org/packages/3e/ca/fcd54f78b59e3f97b3b9715501e3147f5340167733d27db423aa321e7148/propcache-0.3.2-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:6d8f3f0eebf73e3c0ff0e7853f68be638b4043c65a70517bb575eff54edd8dbe", size = 255026, upload-time = "2025-06-09T22:55:30.184Z" }, - { url = "https://files.pythonhosted.org/packages/8b/95/8e6a6bbbd78ac89c30c225210a5c687790e532ba4088afb8c0445b77ef37/propcache-0.3.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:03c89c1b14a5452cf15403e291c0ccd7751d5b9736ecb2c5bab977ad6c5bcd81", size = 250724, upload-time = "2025-06-09T22:55:31.646Z" }, - { url = "https://files.pythonhosted.org/packages/ee/b0/0dd03616142baba28e8b2d14ce5df6631b4673850a3d4f9c0f9dd714a404/propcache-0.3.2-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:0cc17efde71e12bbaad086d679ce575268d70bc123a5a71ea7ad76f70ba30bba", size = 268868, upload-time = "2025-06-09T22:55:33.209Z" }, - { url = "https://files.pythonhosted.org/packages/c5/98/2c12407a7e4fbacd94ddd32f3b1e3d5231e77c30ef7162b12a60e2dd5ce3/propcache-0.3.2-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:acdf05d00696bc0447e278bb53cb04ca72354e562cf88ea6f9107df8e7fd9770", size = 271322, upload-time = "2025-06-09T22:55:35.065Z" }, - { url = "https://files.pythonhosted.org/packages/35/91/9cb56efbb428b006bb85db28591e40b7736847b8331d43fe335acf95f6c8/propcache-0.3.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4445542398bd0b5d32df908031cb1b30d43ac848e20470a878b770ec2dcc6330", size = 265778, upload-time = "2025-06-09T22:55:36.45Z" }, - { url = "https://files.pythonhosted.org/packages/9a/4c/b0fe775a2bdd01e176b14b574be679d84fc83958335790f7c9a686c1f468/propcache-0.3.2-cp313-cp313t-win32.whl", hash = "sha256:f86e5d7cd03afb3a1db8e9f9f6eff15794e79e791350ac48a8c924e6f439f394", size = 41175, upload-time = "2025-06-09T22:55:38.436Z" }, - { url = "https://files.pythonhosted.org/packages/a4/ff/47f08595e3d9b5e149c150f88d9714574f1a7cbd89fe2817158a952674bf/propcache-0.3.2-cp313-cp313t-win_amd64.whl", hash = "sha256:9704bedf6e7cbe3c65eca4379a9b53ee6a83749f047808cbb5044d40d7d72198", size = 44857, upload-time = "2025-06-09T22:55:39.687Z" }, - { url = "https://files.pythonhosted.org/packages/6c/39/8ea9bcfaaff16fd0b0fc901ee522e24c9ec44b4ca0229cfffb8066a06959/propcache-0.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a7fad897f14d92086d6b03fdd2eb844777b0c4d7ec5e3bac0fbae2ab0602bbe5", size = 74678, upload-time = "2025-06-09T22:55:41.227Z" }, - { url = "https://files.pythonhosted.org/packages/d3/85/cab84c86966e1d354cf90cdc4ba52f32f99a5bca92a1529d666d957d7686/propcache-0.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1f43837d4ca000243fd7fd6301947d7cb93360d03cd08369969450cc6b2ce3b4", size = 43829, upload-time = "2025-06-09T22:55:42.417Z" }, - { url = "https://files.pythonhosted.org/packages/23/f7/9cb719749152d8b26d63801b3220ce2d3931312b2744d2b3a088b0ee9947/propcache-0.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:261df2e9474a5949c46e962065d88eb9b96ce0f2bd30e9d3136bcde84befd8f2", size = 43729, upload-time = "2025-06-09T22:55:43.651Z" }, - { url = "https://files.pythonhosted.org/packages/a2/a2/0b2b5a210ff311260002a315f6f9531b65a36064dfb804655432b2f7d3e3/propcache-0.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e514326b79e51f0a177daab1052bc164d9d9e54133797a3a58d24c9c87a3fe6d", size = 204483, upload-time = "2025-06-09T22:55:45.327Z" }, - { url = "https://files.pythonhosted.org/packages/3f/e0/7aff5de0c535f783b0c8be5bdb750c305c1961d69fbb136939926e155d98/propcache-0.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d4a996adb6904f85894570301939afeee65f072b4fd265ed7e569e8d9058e4ec", size = 217425, upload-time = "2025-06-09T22:55:46.729Z" }, - { url = "https://files.pythonhosted.org/packages/92/1d/65fa889eb3b2a7d6e4ed3c2b568a9cb8817547a1450b572de7bf24872800/propcache-0.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:76cace5d6b2a54e55b137669b30f31aa15977eeed390c7cbfb1dafa8dfe9a701", size = 214723, upload-time = "2025-06-09T22:55:48.342Z" }, - { url = "https://files.pythonhosted.org/packages/9a/e2/eecf6989870988dfd731de408a6fa366e853d361a06c2133b5878ce821ad/propcache-0.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31248e44b81d59d6addbb182c4720f90b44e1efdc19f58112a3c3a1615fb47ef", size = 200166, upload-time = "2025-06-09T22:55:49.775Z" }, - { url = "https://files.pythonhosted.org/packages/12/06/c32be4950967f18f77489268488c7cdc78cbfc65a8ba8101b15e526b83dc/propcache-0.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abb7fa19dbf88d3857363e0493b999b8011eea856b846305d8c0512dfdf8fbb1", size = 194004, upload-time = "2025-06-09T22:55:51.335Z" }, - { url = "https://files.pythonhosted.org/packages/46/6c/17b521a6b3b7cbe277a4064ff0aa9129dd8c89f425a5a9b6b4dd51cc3ff4/propcache-0.3.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:d81ac3ae39d38588ad0549e321e6f773a4e7cc68e7751524a22885d5bbadf886", size = 203075, upload-time = "2025-06-09T22:55:52.681Z" }, - { url = "https://files.pythonhosted.org/packages/62/cb/3bdba2b736b3e45bc0e40f4370f745b3e711d439ffbffe3ae416393eece9/propcache-0.3.2-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:cc2782eb0f7a16462285b6f8394bbbd0e1ee5f928034e941ffc444012224171b", size = 195407, upload-time = "2025-06-09T22:55:54.048Z" }, - { url = "https://files.pythonhosted.org/packages/29/bd/760c5c6a60a4a2c55a421bc34a25ba3919d49dee411ddb9d1493bb51d46e/propcache-0.3.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:db429c19a6c7e8a1c320e6a13c99799450f411b02251fb1b75e6217cf4a14fcb", size = 196045, upload-time = "2025-06-09T22:55:55.485Z" }, - { url = "https://files.pythonhosted.org/packages/76/58/ced2757a46f55b8c84358d6ab8de4faf57cba831c51e823654da7144b13a/propcache-0.3.2-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:21d8759141a9e00a681d35a1f160892a36fb6caa715ba0b832f7747da48fb6ea", size = 208432, upload-time = "2025-06-09T22:55:56.884Z" }, - { url = "https://files.pythonhosted.org/packages/bb/ec/d98ea8d5a4d8fe0e372033f5254eddf3254344c0c5dc6c49ab84349e4733/propcache-0.3.2-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:2ca6d378f09adb13837614ad2754fa8afaee330254f404299611bce41a8438cb", size = 210100, upload-time = "2025-06-09T22:55:58.498Z" }, - { url = "https://files.pythonhosted.org/packages/56/84/b6d8a7ecf3f62d7dd09d9d10bbf89fad6837970ef868b35b5ffa0d24d9de/propcache-0.3.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:34a624af06c048946709f4278b4176470073deda88d91342665d95f7c6270fbe", size = 200712, upload-time = "2025-06-09T22:55:59.906Z" }, - { url = "https://files.pythonhosted.org/packages/bf/32/889f4903ddfe4a9dc61da71ee58b763758cf2d608fe1decede06e6467f8d/propcache-0.3.2-cp39-cp39-win32.whl", hash = "sha256:4ba3fef1c30f306b1c274ce0b8baaa2c3cdd91f645c48f06394068f37d3837a1", size = 38187, upload-time = "2025-06-09T22:56:01.212Z" }, - { url = "https://files.pythonhosted.org/packages/67/74/d666795fb9ba1dc139d30de64f3b6fd1ff9c9d3d96ccfdb992cd715ce5d2/propcache-0.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:7a2368eed65fc69a7a7a40b27f22e85e7627b74216f0846b04ba5c116e191ec9", size = 42025, upload-time = "2025-06-09T22:56:02.875Z" }, - { url = "https://files.pythonhosted.org/packages/cc/35/cc0aaecf278bb4575b8555f2b137de5ab821595ddae9da9d3cd1da4072c7/propcache-0.3.2-py3-none-any.whl", hash = "sha256:98f1ec44fb675f5052cccc8e609c46ed23a35a1cfd18545ad4e29002d858a43f", size = 12663, upload-time = "2025-06-09T22:56:04.484Z" }, -] - -[[package]] -name = "proto-plus" -version = "1.26.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "protobuf" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/f4/ac/87285f15f7cce6d4a008f33f1757fb5a13611ea8914eb58c3d0d26243468/proto_plus-1.26.1.tar.gz", hash = "sha256:21a515a4c4c0088a773899e23c7bbade3d18f9c66c73edd4c7ee3816bc96a012", size = 56142, upload-time = "2025-03-10T15:54:38.843Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4e/6d/280c4c2ce28b1593a19ad5239c8b826871fc6ec275c21afc8e1820108039/proto_plus-1.26.1-py3-none-any.whl", hash = "sha256:13285478c2dcf2abb829db158e1047e2f1e8d63a077d94263c2b88b043c75a66", size = 50163, upload-time = "2025-03-10T15:54:37.335Z" }, -] - -[[package]] -name = "protobuf" -version = "6.31.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/52/f3/b9655a711b32c19720253f6f06326faf90580834e2e83f840472d752bc8b/protobuf-6.31.1.tar.gz", hash = "sha256:d8cac4c982f0b957a4dc73a80e2ea24fab08e679c0de9deb835f4a12d69aca9a", size = 441797, upload-time = "2025-05-28T19:25:54.947Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f3/6f/6ab8e4bf962fd5570d3deaa2d5c38f0a363f57b4501047b5ebeb83ab1125/protobuf-6.31.1-cp310-abi3-win32.whl", hash = "sha256:7fa17d5a29c2e04b7d90e5e32388b8bfd0e7107cd8e616feef7ed3fa6bdab5c9", size = 423603, upload-time = "2025-05-28T19:25:41.198Z" }, - { url = "https://files.pythonhosted.org/packages/44/3a/b15c4347dd4bf3a1b0ee882f384623e2063bb5cf9fa9d57990a4f7df2fb6/protobuf-6.31.1-cp310-abi3-win_amd64.whl", hash = "sha256:426f59d2964864a1a366254fa703b8632dcec0790d8862d30034d8245e1cd447", size = 435283, upload-time = "2025-05-28T19:25:44.275Z" }, - { url = "https://files.pythonhosted.org/packages/6a/c9/b9689a2a250264a84e66c46d8862ba788ee7a641cdca39bccf64f59284b7/protobuf-6.31.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:6f1227473dc43d44ed644425268eb7c2e488ae245d51c6866d19fe158e207402", size = 425604, upload-time = "2025-05-28T19:25:45.702Z" }, - { url = "https://files.pythonhosted.org/packages/76/a1/7a5a94032c83375e4fe7e7f56e3976ea6ac90c5e85fac8576409e25c39c3/protobuf-6.31.1-cp39-abi3-manylinux2014_aarch64.whl", hash = "sha256:a40fc12b84c154884d7d4c4ebd675d5b3b5283e155f324049ae396b95ddebc39", size = 322115, upload-time = "2025-05-28T19:25:47.128Z" }, - { url = "https://files.pythonhosted.org/packages/fa/b1/b59d405d64d31999244643d88c45c8241c58f17cc887e73bcb90602327f8/protobuf-6.31.1-cp39-abi3-manylinux2014_x86_64.whl", hash = "sha256:4ee898bf66f7a8b0bd21bce523814e6fbd8c6add948045ce958b73af7e8878c6", size = 321070, upload-time = "2025-05-28T19:25:50.036Z" }, - { url = "https://files.pythonhosted.org/packages/b1/f0/4160dbd205eee8fdf8647d154e7ceaa9d25b3a877b6311274eb6dc896b75/protobuf-6.31.1-cp39-cp39-win32.whl", hash = "sha256:0414e3aa5a5f3ff423828e1e6a6e907d6c65c1d5b7e6e975793d5590bdeecc16", size = 423626, upload-time = "2025-05-28T19:25:51.355Z" }, - { url = "https://files.pythonhosted.org/packages/09/34/13989eb9f482409ed821bfa3e34e6a3878b42607c38e7f7572b4cc825091/protobuf-6.31.1-cp39-cp39-win_amd64.whl", hash = "sha256:8764cf4587791e7564051b35524b72844f845ad0bb011704c3736cce762d8fe9", size = 435347, upload-time = "2025-05-28T19:25:52.932Z" }, - { url = "https://files.pythonhosted.org/packages/f7/af/ab3c51ab7507a7325e98ffe691d9495ee3d3aa5f589afad65ec920d39821/protobuf-6.31.1-py3-none-any.whl", hash = "sha256:720a6c7e6b77288b85063569baae8536671b39f15cc22037ec7045658d80489e", size = 168724, upload-time = "2025-05-28T19:25:53.926Z" }, -] - [[package]] name = "psutil" version = "7.0.0" @@ -3756,83 +2226,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e0/a9/023730ba63db1e494a271cb018dcd361bd2c917ba7004c3e49d5daf795a2/py_cpuinfo-9.0.0-py3-none-any.whl", hash = "sha256:859625bc251f64e21f077d099d4162689c762b5d6a4c3c97553d56241c9674d5", size = 22335, upload-time = "2022-10-25T20:38:27.636Z" }, ] -[[package]] -name = "py-spy" -version = "0.4.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7c/cd/9dacc04604dc4398ce5bed77ed59918ad0940f15165954d4aaa651cc640c/py_spy-0.4.0.tar.gz", hash = "sha256:806602ce7972782cc9c1e383f339bfc27bfb822d42485e6a3e0530ae5040e1f0", size = 253236, upload-time = "2024-11-01T19:08:51.487Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6a/7e/02ca3ee68507db47afce769504060d71b4dc1455f0f9faa8d32fc7762221/py_spy-0.4.0-py2.py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:f2cf3f7130e7d780471faa5957441d3b4e0ec39a79b2c00f4c33d494f7728428", size = 3617847, upload-time = "2024-11-01T19:08:37.44Z" }, - { url = "https://files.pythonhosted.org/packages/65/7c/d9e26cc4c8e91f96a3a65de04d2e2e4131fbcaf6830d10917d4fab9d6788/py_spy-0.4.0-py2.py3-none-macosx_11_0_arm64.whl", hash = "sha256:47cdda4c34d9b6cb01f3aaeceb2e88faf57da880207fe72ff6ff97e9bb6cc8a9", size = 1761955, upload-time = "2024-11-01T19:08:39.632Z" }, - { url = "https://files.pythonhosted.org/packages/d2/e4/8fbfd219b7f282b80e6b2e74c9197850d2c51db8555705567bb65507b060/py_spy-0.4.0-py2.py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eee3d0bde85ca5cf4f01f012d461180ca76c24835a96f7b5c4ded64eb6a008ab", size = 2059471, upload-time = "2024-11-01T19:08:41.818Z" }, - { url = "https://files.pythonhosted.org/packages/a7/1d/79a94a5ace810c13b730ce96765ca465c171b4952034f1be7402d8accbc1/py_spy-0.4.0-py2.py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c5f06ffce4c9c98b7fc9f5e67e5e7db591173f1351837633f3f23d9378b1d18a", size = 2067486, upload-time = "2024-11-01T19:08:43.673Z" }, - { url = "https://files.pythonhosted.org/packages/6d/90/fbbb038f826a83ed15ebc4ae606815d6cad6c5c6399c86c7ab96f6c60817/py_spy-0.4.0-py2.py3-none-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:87573e64dbfdfc89ba2e0f5e2f525aa84e0299c7eb6454b47ea335fde583a7a0", size = 2141433, upload-time = "2024-11-01T19:08:45.988Z" }, - { url = "https://files.pythonhosted.org/packages/c9/c1/5e012669ebb687e546dc99fcfc4861ebfcf3a337b7a41af945df23140bb5/py_spy-0.4.0-py2.py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:8bf2f3702cef367a489faa45177b41a6c31b2a3e5bd78c978d44e29340152f5a", size = 2732951, upload-time = "2024-11-01T19:08:48.109Z" }, - { url = "https://files.pythonhosted.org/packages/74/8b/dd8490660019a6b0be28d9ffd2bf1db967604b19f3f2719c0e283a16ac7f/py_spy-0.4.0-py2.py3-none-win_amd64.whl", hash = "sha256:77d8f637ade38367d944874776f45b703b7ac5938b1f7be8891f3a5876ddbb96", size = 1810770, upload-time = "2024-11-01T19:08:50.229Z" }, -] - -[[package]] -name = "pyarrow" -version = "17.0.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, - { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/27/4e/ea6d43f324169f8aec0e57569443a38bab4b398d09769ca64f7b4d467de3/pyarrow-17.0.0.tar.gz", hash = "sha256:4beca9521ed2c0921c1023e68d097d0299b62c362639ea315572a58f3f50fd28", size = 1112479, upload-time = "2024-07-17T10:41:25.092Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/39/5d/78d4b040bc5ff2fc6c3d03e80fca396b742f6c125b8af06bcf7427f931bc/pyarrow-17.0.0-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:a5c8b238d47e48812ee577ee20c9a2779e6a5904f1708ae240f53ecbee7c9f07", size = 28994846, upload-time = "2024-07-16T10:29:13.082Z" }, - { url = "https://files.pythonhosted.org/packages/3b/73/8ed168db7642e91180330e4ea9f3ff8bab404678f00d32d7df0871a4933b/pyarrow-17.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:db023dc4c6cae1015de9e198d41250688383c3f9af8f565370ab2b4cb5f62655", size = 27165908, upload-time = "2024-07-16T10:29:20.362Z" }, - { url = "https://files.pythonhosted.org/packages/81/36/e78c24be99242063f6d0590ef68c857ea07bdea470242c361e9a15bd57a4/pyarrow-17.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da1e060b3876faa11cee287839f9cc7cdc00649f475714b8680a05fd9071d545", size = 39264209, upload-time = "2024-07-16T10:29:27.621Z" }, - { url = "https://files.pythonhosted.org/packages/18/4c/3db637d7578f683b0a8fb8999b436bdbedd6e3517bd4f90c70853cf3ad20/pyarrow-17.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75c06d4624c0ad6674364bb46ef38c3132768139ddec1c56582dbac54f2663e2", size = 39862883, upload-time = "2024-07-16T10:29:34.34Z" }, - { url = "https://files.pythonhosted.org/packages/81/3c/0580626896c842614a523e66b351181ed5bb14e5dfc263cd68cea2c46d90/pyarrow-17.0.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:fa3c246cc58cb5a4a5cb407a18f193354ea47dd0648194e6265bd24177982fe8", size = 38723009, upload-time = "2024-07-16T10:29:41.123Z" }, - { url = "https://files.pythonhosted.org/packages/ee/fb/c1b47f0ada36d856a352da261a44d7344d8f22e2f7db3945f8c3b81be5dd/pyarrow-17.0.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:f7ae2de664e0b158d1607699a16a488de3d008ba99b3a7aa5de1cbc13574d047", size = 39855626, upload-time = "2024-07-16T10:29:49.004Z" }, - { url = "https://files.pythonhosted.org/packages/19/09/b0a02908180a25d57312ab5919069c39fddf30602568980419f4b02393f6/pyarrow-17.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:5984f416552eea15fd9cee03da53542bf4cddaef5afecefb9aa8d1010c335087", size = 25147242, upload-time = "2024-07-16T10:29:56.195Z" }, - { url = "https://files.pythonhosted.org/packages/f9/46/ce89f87c2936f5bb9d879473b9663ce7a4b1f4359acc2f0eb39865eaa1af/pyarrow-17.0.0-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:1c8856e2ef09eb87ecf937104aacfa0708f22dfeb039c363ec99735190ffb977", size = 29028748, upload-time = "2024-07-16T10:30:02.609Z" }, - { url = "https://files.pythonhosted.org/packages/8d/8e/ce2e9b2146de422f6638333c01903140e9ada244a2a477918a368306c64c/pyarrow-17.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2e19f569567efcbbd42084e87f948778eb371d308e137a0f97afe19bb860ccb3", size = 27190965, upload-time = "2024-07-16T10:30:10.718Z" }, - { url = "https://files.pythonhosted.org/packages/3b/c8/5675719570eb1acd809481c6d64e2136ffb340bc387f4ca62dce79516cea/pyarrow-17.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b244dc8e08a23b3e352899a006a26ae7b4d0da7bb636872fa8f5884e70acf15", size = 39269081, upload-time = "2024-07-16T10:30:18.878Z" }, - { url = "https://files.pythonhosted.org/packages/5e/78/3931194f16ab681ebb87ad252e7b8d2c8b23dad49706cadc865dff4a1dd3/pyarrow-17.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b72e87fe3e1db343995562f7fff8aee354b55ee83d13afba65400c178ab2597", size = 39864921, upload-time = "2024-07-16T10:30:27.008Z" }, - { url = "https://files.pythonhosted.org/packages/d8/81/69b6606093363f55a2a574c018901c40952d4e902e670656d18213c71ad7/pyarrow-17.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:dc5c31c37409dfbc5d014047817cb4ccd8c1ea25d19576acf1a001fe07f5b420", size = 38740798, upload-time = "2024-07-16T10:30:34.814Z" }, - { url = "https://files.pythonhosted.org/packages/4c/21/9ca93b84b92ef927814cb7ba37f0774a484c849d58f0b692b16af8eebcfb/pyarrow-17.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:e3343cb1e88bc2ea605986d4b94948716edc7a8d14afd4e2c097232f729758b4", size = 39871877, upload-time = "2024-07-16T10:30:42.672Z" }, - { url = "https://files.pythonhosted.org/packages/30/d1/63a7c248432c71c7d3ee803e706590a0b81ce1a8d2b2ae49677774b813bb/pyarrow-17.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:a27532c38f3de9eb3e90ecab63dfda948a8ca859a66e3a47f5f42d1e403c4d03", size = 25151089, upload-time = "2024-07-16T10:30:49.279Z" }, - { url = "https://files.pythonhosted.org/packages/d4/62/ce6ac1275a432b4a27c55fe96c58147f111d8ba1ad800a112d31859fae2f/pyarrow-17.0.0-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:9b8a823cea605221e61f34859dcc03207e52e409ccf6354634143e23af7c8d22", size = 29019418, upload-time = "2024-07-16T10:30:55.573Z" }, - { url = "https://files.pythonhosted.org/packages/8e/0a/dbd0c134e7a0c30bea439675cc120012337202e5fac7163ba839aa3691d2/pyarrow-17.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f1e70de6cb5790a50b01d2b686d54aaf73da01266850b05e3af2a1bc89e16053", size = 27152197, upload-time = "2024-07-16T10:31:02.036Z" }, - { url = "https://files.pythonhosted.org/packages/cb/05/3f4a16498349db79090767620d6dc23c1ec0c658a668d61d76b87706c65d/pyarrow-17.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0071ce35788c6f9077ff9ecba4858108eebe2ea5a3f7cf2cf55ebc1dbc6ee24a", size = 39263026, upload-time = "2024-07-16T10:31:10.351Z" }, - { url = "https://files.pythonhosted.org/packages/c2/0c/ea2107236740be8fa0e0d4a293a095c9f43546a2465bb7df34eee9126b09/pyarrow-17.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:757074882f844411fcca735e39aae74248a1531367a7c80799b4266390ae51cc", size = 39880798, upload-time = "2024-07-16T10:31:17.66Z" }, - { url = "https://files.pythonhosted.org/packages/f6/b0/b9164a8bc495083c10c281cc65064553ec87b7537d6f742a89d5953a2a3e/pyarrow-17.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:9ba11c4f16976e89146781a83833df7f82077cdab7dc6232c897789343f7891a", size = 38715172, upload-time = "2024-07-16T10:31:25.965Z" }, - { url = "https://files.pythonhosted.org/packages/f1/c4/9625418a1413005e486c006e56675334929fad864347c5ae7c1b2e7fe639/pyarrow-17.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b0c6ac301093b42d34410b187bba560b17c0330f64907bfa4f7f7f2444b0cf9b", size = 39874508, upload-time = "2024-07-16T10:31:33.721Z" }, - { url = "https://files.pythonhosted.org/packages/ae/49/baafe2a964f663413be3bd1cf5c45ed98c5e42e804e2328e18f4570027c1/pyarrow-17.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:392bc9feabc647338e6c89267635e111d71edad5fcffba204425a7c8d13610d7", size = 25099235, upload-time = "2024-07-16T10:31:40.893Z" }, - { url = "https://files.pythonhosted.org/packages/43/e0/a898096d35be240aa61fb2d54db58b86d664b10e1e51256f9300f47565e8/pyarrow-17.0.0-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:13d7a460b412f31e4c0efa1148e1d29bdf18ad1411eb6757d38f8fbdcc8645fb", size = 29007881, upload-time = "2024-07-17T10:40:37.927Z" }, - { url = "https://files.pythonhosted.org/packages/59/22/f7d14907ed0697b5dd488d393129f2738629fa5bcba863e00931b7975946/pyarrow-17.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9b564a51fbccfab5a04a80453e5ac6c9954a9c5ef2890d1bcf63741909c3f8df", size = 27178117, upload-time = "2024-07-17T10:40:43.964Z" }, - { url = "https://files.pythonhosted.org/packages/bf/ee/661211feac0ed48467b1d5c57298c91403809ec3ab78b1d175e1d6ad03cf/pyarrow-17.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32503827abbc5aadedfa235f5ece8c4f8f8b0a3cf01066bc8d29de7539532687", size = 39273896, upload-time = "2024-07-17T10:40:51.276Z" }, - { url = "https://files.pythonhosted.org/packages/af/61/bcd9b58e38ead6ad42b9ed00da33a3f862bc1d445e3d3164799c25550ac2/pyarrow-17.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a155acc7f154b9ffcc85497509bcd0d43efb80d6f733b0dc3bb14e281f131c8b", size = 39875438, upload-time = "2024-07-17T10:40:58.5Z" }, - { url = "https://files.pythonhosted.org/packages/75/63/29d1bfcc57af73cde3fc3baccab2f37548de512dbe0ab294b033cd203516/pyarrow-17.0.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:dec8d129254d0188a49f8a1fc99e0560dc1b85f60af729f47de4046015f9b0a5", size = 38735092, upload-time = "2024-07-17T10:41:06.034Z" }, - { url = "https://files.pythonhosted.org/packages/39/f4/90258b4de753df7cc61cefb0312f8abcf226672e96cc64996e66afce817a/pyarrow-17.0.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:a48ddf5c3c6a6c505904545c25a4ae13646ae1f8ba703c4df4a1bfe4f4006bda", size = 39867610, upload-time = "2024-07-17T10:41:13.61Z" }, - { url = "https://files.pythonhosted.org/packages/e7/f6/b75d4816c32f1618ed31a005ee635dd1d91d8164495d94f2ea092f594661/pyarrow-17.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:42bf93249a083aca230ba7e2786c5f673507fa97bbd9725a1e2754715151a204", size = 25148611, upload-time = "2024-07-17T10:41:20.698Z" }, -] - -[[package]] -name = "pyasn1" -version = "0.6.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ba/e9/01f1a64245b89f039897cb0130016d79f77d52669aae6ee7b159a6c4c018/pyasn1-0.6.1.tar.gz", hash = "sha256:6f580d2bdd84365380830acf45550f2511469f673cb4a5ae3857a3170128b034", size = 145322, upload-time = "2024-09-10T22:41:42.55Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c8/f1/d6a797abb14f6283c0ddff96bbdd46937f64122b8c925cab503dd37f8214/pyasn1-0.6.1-py3-none-any.whl", hash = "sha256:0d632f46f2ba09143da3a8afe9e33fb6f92fa2320ab7e886e2d0f7672af84629", size = 83135, upload-time = "2024-09-11T16:00:36.122Z" }, -] - -[[package]] -name = "pyasn1-modules" -version = "0.4.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyasn1" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/e9/e6/78ebbb10a8c8e4b61a59249394a4a594c1a7af95593dc933a349c8d00964/pyasn1_modules-0.4.2.tar.gz", hash = "sha256:677091de870a80aae844b1ca6134f54652fa2c8c5a52aa396440ac3106e941e6", size = 307892, upload-time = "2025-03-28T02:41:22.17Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/47/8d/d529b5d697919ba8c11ad626e835d4039be708a35b0d22de83a269a6682c/pyasn1_modules-0.4.2-py3-none-any.whl", hash = "sha256:29253a9207ce32b64c3ac6600edc75368f98473906e8fd1043bd6b5b1de2c14a", size = 181259, upload-time = "2025-03-28T02:41:19.028Z" }, -] - [[package]] name = "pycparser" version = "2.22" @@ -3842,130 +2235,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552, upload-time = "2024-03-30T13:22:20.476Z" }, ] -[[package]] -name = "pydantic" -version = "2.11.7" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "annotated-types" }, - { name = "pydantic-core" }, - { name = "typing-extensions" }, - { name = "typing-inspection" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/00/dd/4325abf92c39ba8623b5af936ddb36ffcfe0beae70405d456ab1fb2f5b8c/pydantic-2.11.7.tar.gz", hash = "sha256:d989c3c6cb79469287b1569f7447a17848c998458d49ebe294e975b9baf0f0db", size = 788350, upload-time = "2025-06-14T08:33:17.137Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6a/c0/ec2b1c8712ca690e5d61979dee872603e92b8a32f94cc1b72d53beab008a/pydantic-2.11.7-py3-none-any.whl", hash = "sha256:dde5df002701f6de26248661f6835bbe296a47bf73990135c7d07ce741b9623b", size = 444782, upload-time = "2025-06-14T08:33:14.905Z" }, -] - -[[package]] -name = "pydantic-core" -version = "2.33.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195, upload-time = "2025-04-23T18:33:52.104Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e5/92/b31726561b5dae176c2d2c2dc43a9c5bfba5d32f96f8b4c0a600dd492447/pydantic_core-2.33.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2b3d326aaef0c0399d9afffeb6367d5e26ddc24d351dbc9c636840ac355dc5d8", size = 2028817, upload-time = "2025-04-23T18:30:43.919Z" }, - { url = "https://files.pythonhosted.org/packages/a3/44/3f0b95fafdaca04a483c4e685fe437c6891001bf3ce8b2fded82b9ea3aa1/pydantic_core-2.33.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e5b2671f05ba48b94cb90ce55d8bdcaaedb8ba00cc5359f6810fc918713983d", size = 1861357, upload-time = "2025-04-23T18:30:46.372Z" }, - { url = "https://files.pythonhosted.org/packages/30/97/e8f13b55766234caae05372826e8e4b3b96e7b248be3157f53237682e43c/pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0069c9acc3f3981b9ff4cdfaf088e98d83440a4c7ea1bc07460af3d4dc22e72d", size = 1898011, upload-time = "2025-04-23T18:30:47.591Z" }, - { url = "https://files.pythonhosted.org/packages/9b/a3/99c48cf7bafc991cc3ee66fd544c0aae8dc907b752f1dad2d79b1b5a471f/pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d53b22f2032c42eaaf025f7c40c2e3b94568ae077a606f006d206a463bc69572", size = 1982730, upload-time = "2025-04-23T18:30:49.328Z" }, - { url = "https://files.pythonhosted.org/packages/de/8e/a5b882ec4307010a840fb8b58bd9bf65d1840c92eae7534c7441709bf54b/pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0405262705a123b7ce9f0b92f123334d67b70fd1f20a9372b907ce1080c7ba02", size = 2136178, upload-time = "2025-04-23T18:30:50.907Z" }, - { url = "https://files.pythonhosted.org/packages/e4/bb/71e35fc3ed05af6834e890edb75968e2802fe98778971ab5cba20a162315/pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4b25d91e288e2c4e0662b8038a28c6a07eaac3e196cfc4ff69de4ea3db992a1b", size = 2736462, upload-time = "2025-04-23T18:30:52.083Z" }, - { url = "https://files.pythonhosted.org/packages/31/0d/c8f7593e6bc7066289bbc366f2235701dcbebcd1ff0ef8e64f6f239fb47d/pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bdfe4b3789761f3bcb4b1ddf33355a71079858958e3a552f16d5af19768fef2", size = 2005652, upload-time = "2025-04-23T18:30:53.389Z" }, - { url = "https://files.pythonhosted.org/packages/d2/7a/996d8bd75f3eda405e3dd219ff5ff0a283cd8e34add39d8ef9157e722867/pydantic_core-2.33.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:efec8db3266b76ef9607c2c4c419bdb06bf335ae433b80816089ea7585816f6a", size = 2113306, upload-time = "2025-04-23T18:30:54.661Z" }, - { url = "https://files.pythonhosted.org/packages/ff/84/daf2a6fb2db40ffda6578a7e8c5a6e9c8affb251a05c233ae37098118788/pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:031c57d67ca86902726e0fae2214ce6770bbe2f710dc33063187a68744a5ecac", size = 2073720, upload-time = "2025-04-23T18:30:56.11Z" }, - { url = "https://files.pythonhosted.org/packages/77/fb/2258da019f4825128445ae79456a5499c032b55849dbd5bed78c95ccf163/pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:f8de619080e944347f5f20de29a975c2d815d9ddd8be9b9b7268e2e3ef68605a", size = 2244915, upload-time = "2025-04-23T18:30:57.501Z" }, - { url = "https://files.pythonhosted.org/packages/d8/7a/925ff73756031289468326e355b6fa8316960d0d65f8b5d6b3a3e7866de7/pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:73662edf539e72a9440129f231ed3757faab89630d291b784ca99237fb94db2b", size = 2241884, upload-time = "2025-04-23T18:30:58.867Z" }, - { url = "https://files.pythonhosted.org/packages/0b/b0/249ee6d2646f1cdadcb813805fe76265745c4010cf20a8eba7b0e639d9b2/pydantic_core-2.33.2-cp310-cp310-win32.whl", hash = "sha256:0a39979dcbb70998b0e505fb1556a1d550a0781463ce84ebf915ba293ccb7e22", size = 1910496, upload-time = "2025-04-23T18:31:00.078Z" }, - { url = "https://files.pythonhosted.org/packages/66/ff/172ba8f12a42d4b552917aa65d1f2328990d3ccfc01d5b7c943ec084299f/pydantic_core-2.33.2-cp310-cp310-win_amd64.whl", hash = "sha256:b0379a2b24882fef529ec3b4987cb5d003b9cda32256024e6fe1586ac45fc640", size = 1955019, upload-time = "2025-04-23T18:31:01.335Z" }, - { url = "https://files.pythonhosted.org/packages/3f/8d/71db63483d518cbbf290261a1fc2839d17ff89fce7089e08cad07ccfce67/pydantic_core-2.33.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:4c5b0a576fb381edd6d27f0a85915c6daf2f8138dc5c267a57c08a62900758c7", size = 2028584, upload-time = "2025-04-23T18:31:03.106Z" }, - { url = "https://files.pythonhosted.org/packages/24/2f/3cfa7244ae292dd850989f328722d2aef313f74ffc471184dc509e1e4e5a/pydantic_core-2.33.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e799c050df38a639db758c617ec771fd8fb7a5f8eaaa4b27b101f266b216a246", size = 1855071, upload-time = "2025-04-23T18:31:04.621Z" }, - { url = "https://files.pythonhosted.org/packages/b3/d3/4ae42d33f5e3f50dd467761304be2fa0a9417fbf09735bc2cce003480f2a/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc46a01bf8d62f227d5ecee74178ffc448ff4e5197c756331f71efcc66dc980f", size = 1897823, upload-time = "2025-04-23T18:31:06.377Z" }, - { url = "https://files.pythonhosted.org/packages/f4/f3/aa5976e8352b7695ff808599794b1fba2a9ae2ee954a3426855935799488/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a144d4f717285c6d9234a66778059f33a89096dfb9b39117663fd8413d582dcc", size = 1983792, upload-time = "2025-04-23T18:31:07.93Z" }, - { url = "https://files.pythonhosted.org/packages/d5/7a/cda9b5a23c552037717f2b2a5257e9b2bfe45e687386df9591eff7b46d28/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73cf6373c21bc80b2e0dc88444f41ae60b2f070ed02095754eb5a01df12256de", size = 2136338, upload-time = "2025-04-23T18:31:09.283Z" }, - { url = "https://files.pythonhosted.org/packages/2b/9f/b8f9ec8dd1417eb9da784e91e1667d58a2a4a7b7b34cf4af765ef663a7e5/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dc625f4aa79713512d1976fe9f0bc99f706a9dee21dfd1810b4bbbf228d0e8a", size = 2730998, upload-time = "2025-04-23T18:31:11.7Z" }, - { url = "https://files.pythonhosted.org/packages/47/bc/cd720e078576bdb8255d5032c5d63ee5c0bf4b7173dd955185a1d658c456/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b21b5549499972441da4758d662aeea93f1923f953e9cbaff14b8b9565aef", size = 2003200, upload-time = "2025-04-23T18:31:13.536Z" }, - { url = "https://files.pythonhosted.org/packages/ca/22/3602b895ee2cd29d11a2b349372446ae9727c32e78a94b3d588a40fdf187/pydantic_core-2.33.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bdc25f3681f7b78572699569514036afe3c243bc3059d3942624e936ec93450e", size = 2113890, upload-time = "2025-04-23T18:31:15.011Z" }, - { url = "https://files.pythonhosted.org/packages/ff/e6/e3c5908c03cf00d629eb38393a98fccc38ee0ce8ecce32f69fc7d7b558a7/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fe5b32187cbc0c862ee201ad66c30cf218e5ed468ec8dc1cf49dec66e160cc4d", size = 2073359, upload-time = "2025-04-23T18:31:16.393Z" }, - { url = "https://files.pythonhosted.org/packages/12/e7/6a36a07c59ebefc8777d1ffdaf5ae71b06b21952582e4b07eba88a421c79/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:bc7aee6f634a6f4a95676fcb5d6559a2c2a390330098dba5e5a5f28a2e4ada30", size = 2245883, upload-time = "2025-04-23T18:31:17.892Z" }, - { url = "https://files.pythonhosted.org/packages/16/3f/59b3187aaa6cc0c1e6616e8045b284de2b6a87b027cce2ffcea073adf1d2/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:235f45e5dbcccf6bd99f9f472858849f73d11120d76ea8707115415f8e5ebebf", size = 2241074, upload-time = "2025-04-23T18:31:19.205Z" }, - { url = "https://files.pythonhosted.org/packages/e0/ed/55532bb88f674d5d8f67ab121a2a13c385df382de2a1677f30ad385f7438/pydantic_core-2.33.2-cp311-cp311-win32.whl", hash = "sha256:6368900c2d3ef09b69cb0b913f9f8263b03786e5b2a387706c5afb66800efd51", size = 1910538, upload-time = "2025-04-23T18:31:20.541Z" }, - { url = "https://files.pythonhosted.org/packages/fe/1b/25b7cccd4519c0b23c2dd636ad39d381abf113085ce4f7bec2b0dc755eb1/pydantic_core-2.33.2-cp311-cp311-win_amd64.whl", hash = "sha256:1e063337ef9e9820c77acc768546325ebe04ee38b08703244c1309cccc4f1bab", size = 1952909, upload-time = "2025-04-23T18:31:22.371Z" }, - { url = "https://files.pythonhosted.org/packages/49/a9/d809358e49126438055884c4366a1f6227f0f84f635a9014e2deb9b9de54/pydantic_core-2.33.2-cp311-cp311-win_arm64.whl", hash = "sha256:6b99022f1d19bc32a4c2a0d544fc9a76e3be90f0b3f4af413f87d38749300e65", size = 1897786, upload-time = "2025-04-23T18:31:24.161Z" }, - { url = "https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", size = 2009000, upload-time = "2025-04-23T18:31:25.863Z" }, - { url = "https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", size = 1847996, upload-time = "2025-04-23T18:31:27.341Z" }, - { url = "https://files.pythonhosted.org/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", size = 1880957, upload-time = "2025-04-23T18:31:28.956Z" }, - { url = "https://files.pythonhosted.org/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", size = 1964199, upload-time = "2025-04-23T18:31:31.025Z" }, - { url = "https://files.pythonhosted.org/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", size = 2120296, upload-time = "2025-04-23T18:31:32.514Z" }, - { url = "https://files.pythonhosted.org/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", size = 2676109, upload-time = "2025-04-23T18:31:33.958Z" }, - { url = "https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", size = 2002028, upload-time = "2025-04-23T18:31:39.095Z" }, - { url = "https://files.pythonhosted.org/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", size = 2100044, upload-time = "2025-04-23T18:31:41.034Z" }, - { url = "https://files.pythonhosted.org/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", size = 2058881, upload-time = "2025-04-23T18:31:42.757Z" }, - { url = "https://files.pythonhosted.org/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", size = 2227034, upload-time = "2025-04-23T18:31:44.304Z" }, - { url = "https://files.pythonhosted.org/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", size = 2234187, upload-time = "2025-04-23T18:31:45.891Z" }, - { url = "https://files.pythonhosted.org/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", size = 1892628, upload-time = "2025-04-23T18:31:47.819Z" }, - { url = "https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", size = 1955866, upload-time = "2025-04-23T18:31:49.635Z" }, - { url = "https://files.pythonhosted.org/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", size = 1888894, upload-time = "2025-04-23T18:31:51.609Z" }, - { url = "https://files.pythonhosted.org/packages/46/8c/99040727b41f56616573a28771b1bfa08a3d3fe74d3d513f01251f79f172/pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f", size = 2015688, upload-time = "2025-04-23T18:31:53.175Z" }, - { url = "https://files.pythonhosted.org/packages/3a/cc/5999d1eb705a6cefc31f0b4a90e9f7fc400539b1a1030529700cc1b51838/pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6", size = 1844808, upload-time = "2025-04-23T18:31:54.79Z" }, - { url = "https://files.pythonhosted.org/packages/6f/5e/a0a7b8885c98889a18b6e376f344da1ef323d270b44edf8174d6bce4d622/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef", size = 1885580, upload-time = "2025-04-23T18:31:57.393Z" }, - { url = "https://files.pythonhosted.org/packages/3b/2a/953581f343c7d11a304581156618c3f592435523dd9d79865903272c256a/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a", size = 1973859, upload-time = "2025-04-23T18:31:59.065Z" }, - { url = "https://files.pythonhosted.org/packages/e6/55/f1a813904771c03a3f97f676c62cca0c0a4138654107c1b61f19c644868b/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916", size = 2120810, upload-time = "2025-04-23T18:32:00.78Z" }, - { url = "https://files.pythonhosted.org/packages/aa/c3/053389835a996e18853ba107a63caae0b9deb4a276c6b472931ea9ae6e48/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a", size = 2676498, upload-time = "2025-04-23T18:32:02.418Z" }, - { url = "https://files.pythonhosted.org/packages/eb/3c/f4abd740877a35abade05e437245b192f9d0ffb48bbbbd708df33d3cda37/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d", size = 2000611, upload-time = "2025-04-23T18:32:04.152Z" }, - { url = "https://files.pythonhosted.org/packages/59/a7/63ef2fed1837d1121a894d0ce88439fe3e3b3e48c7543b2a4479eb99c2bd/pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56", size = 2107924, upload-time = "2025-04-23T18:32:06.129Z" }, - { url = "https://files.pythonhosted.org/packages/04/8f/2551964ef045669801675f1cfc3b0d74147f4901c3ffa42be2ddb1f0efc4/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5", size = 2063196, upload-time = "2025-04-23T18:32:08.178Z" }, - { url = "https://files.pythonhosted.org/packages/26/bd/d9602777e77fc6dbb0c7db9ad356e9a985825547dce5ad1d30ee04903918/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e", size = 2236389, upload-time = "2025-04-23T18:32:10.242Z" }, - { url = "https://files.pythonhosted.org/packages/42/db/0e950daa7e2230423ab342ae918a794964b053bec24ba8af013fc7c94846/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162", size = 2239223, upload-time = "2025-04-23T18:32:12.382Z" }, - { url = "https://files.pythonhosted.org/packages/58/4d/4f937099c545a8a17eb52cb67fe0447fd9a373b348ccfa9a87f141eeb00f/pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849", size = 1900473, upload-time = "2025-04-23T18:32:14.034Z" }, - { url = "https://files.pythonhosted.org/packages/a0/75/4a0a9bac998d78d889def5e4ef2b065acba8cae8c93696906c3a91f310ca/pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9", size = 1955269, upload-time = "2025-04-23T18:32:15.783Z" }, - { url = "https://files.pythonhosted.org/packages/f9/86/1beda0576969592f1497b4ce8e7bc8cbdf614c352426271b1b10d5f0aa64/pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9", size = 1893921, upload-time = "2025-04-23T18:32:18.473Z" }, - { url = "https://files.pythonhosted.org/packages/a4/7d/e09391c2eebeab681df2b74bfe6c43422fffede8dc74187b2b0bf6fd7571/pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac", size = 1806162, upload-time = "2025-04-23T18:32:20.188Z" }, - { url = "https://files.pythonhosted.org/packages/f1/3d/847b6b1fed9f8ed3bb95a9ad04fbd0b212e832d4f0f50ff4d9ee5a9f15cf/pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5", size = 1981560, upload-time = "2025-04-23T18:32:22.354Z" }, - { url = "https://files.pythonhosted.org/packages/6f/9a/e73262f6c6656262b5fdd723ad90f518f579b7bc8622e43a942eec53c938/pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9", size = 1935777, upload-time = "2025-04-23T18:32:25.088Z" }, - { url = "https://files.pythonhosted.org/packages/53/ea/bbe9095cdd771987d13c82d104a9c8559ae9aec1e29f139e286fd2e9256e/pydantic_core-2.33.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a2b911a5b90e0374d03813674bf0a5fbbb7741570dcd4b4e85a2e48d17def29d", size = 2028677, upload-time = "2025-04-23T18:32:27.227Z" }, - { url = "https://files.pythonhosted.org/packages/49/1d/4ac5ed228078737d457a609013e8f7edc64adc37b91d619ea965758369e5/pydantic_core-2.33.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6fa6dfc3e4d1f734a34710f391ae822e0a8eb8559a85c6979e14e65ee6ba2954", size = 1864735, upload-time = "2025-04-23T18:32:29.019Z" }, - { url = "https://files.pythonhosted.org/packages/23/9a/2e70d6388d7cda488ae38f57bc2f7b03ee442fbcf0d75d848304ac7e405b/pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c54c939ee22dc8e2d545da79fc5381f1c020d6d3141d3bd747eab59164dc89fb", size = 1898467, upload-time = "2025-04-23T18:32:31.119Z" }, - { url = "https://files.pythonhosted.org/packages/ff/2e/1568934feb43370c1ffb78a77f0baaa5a8b6897513e7a91051af707ffdc4/pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:53a57d2ed685940a504248187d5685e49eb5eef0f696853647bf37c418c538f7", size = 1983041, upload-time = "2025-04-23T18:32:33.655Z" }, - { url = "https://files.pythonhosted.org/packages/01/1a/1a1118f38ab64eac2f6269eb8c120ab915be30e387bb561e3af904b12499/pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09fb9dd6571aacd023fe6aaca316bd01cf60ab27240d7eb39ebd66a3a15293b4", size = 2136503, upload-time = "2025-04-23T18:32:35.519Z" }, - { url = "https://files.pythonhosted.org/packages/5c/da/44754d1d7ae0f22d6d3ce6c6b1486fc07ac2c524ed8f6eca636e2e1ee49b/pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0e6116757f7959a712db11f3e9c0a99ade00a5bbedae83cb801985aa154f071b", size = 2736079, upload-time = "2025-04-23T18:32:37.659Z" }, - { url = "https://files.pythonhosted.org/packages/4d/98/f43cd89172220ec5aa86654967b22d862146bc4d736b1350b4c41e7c9c03/pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d55ab81c57b8ff8548c3e4947f119551253f4e3787a7bbc0b6b3ca47498a9d3", size = 2006508, upload-time = "2025-04-23T18:32:39.637Z" }, - { url = "https://files.pythonhosted.org/packages/2b/cc/f77e8e242171d2158309f830f7d5d07e0531b756106f36bc18712dc439df/pydantic_core-2.33.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c20c462aa4434b33a2661701b861604913f912254e441ab8d78d30485736115a", size = 2113693, upload-time = "2025-04-23T18:32:41.818Z" }, - { url = "https://files.pythonhosted.org/packages/54/7a/7be6a7bd43e0a47c147ba7fbf124fe8aaf1200bc587da925509641113b2d/pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:44857c3227d3fb5e753d5fe4a3420d6376fa594b07b621e220cd93703fe21782", size = 2074224, upload-time = "2025-04-23T18:32:44.033Z" }, - { url = "https://files.pythonhosted.org/packages/2a/07/31cf8fadffbb03be1cb520850e00a8490c0927ec456e8293cafda0726184/pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:eb9b459ca4df0e5c87deb59d37377461a538852765293f9e6ee834f0435a93b9", size = 2245403, upload-time = "2025-04-23T18:32:45.836Z" }, - { url = "https://files.pythonhosted.org/packages/b6/8d/bbaf4c6721b668d44f01861f297eb01c9b35f612f6b8e14173cb204e6240/pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9fcd347d2cc5c23b06de6d3b7b8275be558a0c90549495c699e379a80bf8379e", size = 2242331, upload-time = "2025-04-23T18:32:47.618Z" }, - { url = "https://files.pythonhosted.org/packages/bb/93/3cc157026bca8f5006250e74515119fcaa6d6858aceee8f67ab6dc548c16/pydantic_core-2.33.2-cp39-cp39-win32.whl", hash = "sha256:83aa99b1285bc8f038941ddf598501a86f1536789740991d7d8756e34f1e74d9", size = 1910571, upload-time = "2025-04-23T18:32:49.401Z" }, - { url = "https://files.pythonhosted.org/packages/5b/90/7edc3b2a0d9f0dda8806c04e511a67b0b7a41d2187e2003673a996fb4310/pydantic_core-2.33.2-cp39-cp39-win_amd64.whl", hash = "sha256:f481959862f57f29601ccced557cc2e817bce7533ab8e01a797a48b49c9692b3", size = 1956504, upload-time = "2025-04-23T18:32:51.287Z" }, - { url = "https://files.pythonhosted.org/packages/30/68/373d55e58b7e83ce371691f6eaa7175e3a24b956c44628eb25d7da007917/pydantic_core-2.33.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5c4aa4e82353f65e548c476b37e64189783aa5384903bfea4f41580f255fddfa", size = 2023982, upload-time = "2025-04-23T18:32:53.14Z" }, - { url = "https://files.pythonhosted.org/packages/a4/16/145f54ac08c96a63d8ed6442f9dec17b2773d19920b627b18d4f10a061ea/pydantic_core-2.33.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d946c8bf0d5c24bf4fe333af284c59a19358aa3ec18cb3dc4370080da1e8ad29", size = 1858412, upload-time = "2025-04-23T18:32:55.52Z" }, - { url = "https://files.pythonhosted.org/packages/41/b1/c6dc6c3e2de4516c0bb2c46f6a373b91b5660312342a0cf5826e38ad82fa/pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87b31b6846e361ef83fedb187bb5b4372d0da3f7e28d85415efa92d6125d6e6d", size = 1892749, upload-time = "2025-04-23T18:32:57.546Z" }, - { url = "https://files.pythonhosted.org/packages/12/73/8cd57e20afba760b21b742106f9dbdfa6697f1570b189c7457a1af4cd8a0/pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa9d91b338f2df0508606f7009fde642391425189bba6d8c653afd80fd6bb64e", size = 2067527, upload-time = "2025-04-23T18:32:59.771Z" }, - { url = "https://files.pythonhosted.org/packages/e3/d5/0bb5d988cc019b3cba4a78f2d4b3854427fc47ee8ec8e9eaabf787da239c/pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2058a32994f1fde4ca0480ab9d1e75a0e8c87c22b53a3ae66554f9af78f2fe8c", size = 2108225, upload-time = "2025-04-23T18:33:04.51Z" }, - { url = "https://files.pythonhosted.org/packages/f1/c5/00c02d1571913d496aabf146106ad8239dc132485ee22efe08085084ff7c/pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:0e03262ab796d986f978f79c943fc5f620381be7287148b8010b4097f79a39ec", size = 2069490, upload-time = "2025-04-23T18:33:06.391Z" }, - { url = "https://files.pythonhosted.org/packages/22/a8/dccc38768274d3ed3a59b5d06f59ccb845778687652daa71df0cab4040d7/pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:1a8695a8d00c73e50bff9dfda4d540b7dee29ff9b8053e38380426a85ef10052", size = 2237525, upload-time = "2025-04-23T18:33:08.44Z" }, - { url = "https://files.pythonhosted.org/packages/d4/e7/4f98c0b125dda7cf7ccd14ba936218397b44f50a56dd8c16a3091df116c3/pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:fa754d1850735a0b0e03bcffd9d4b4343eb417e47196e4485d9cca326073a42c", size = 2238446, upload-time = "2025-04-23T18:33:10.313Z" }, - { url = "https://files.pythonhosted.org/packages/ce/91/2ec36480fdb0b783cd9ef6795753c1dea13882f2e68e73bce76ae8c21e6a/pydantic_core-2.33.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a11c8d26a50bfab49002947d3d237abe4d9e4b5bdc8846a63537b6488e197808", size = 2066678, upload-time = "2025-04-23T18:33:12.224Z" }, - { url = "https://files.pythonhosted.org/packages/7b/27/d4ae6487d73948d6f20dddcd94be4ea43e74349b56eba82e9bdee2d7494c/pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:dd14041875d09cc0f9308e37a6f8b65f5585cf2598a53aa0123df8b129d481f8", size = 2025200, upload-time = "2025-04-23T18:33:14.199Z" }, - { url = "https://files.pythonhosted.org/packages/f1/b8/b3cb95375f05d33801024079b9392a5ab45267a63400bf1866e7ce0f0de4/pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d87c561733f66531dced0da6e864f44ebf89a8fba55f31407b00c2f7f9449593", size = 1859123, upload-time = "2025-04-23T18:33:16.555Z" }, - { url = "https://files.pythonhosted.org/packages/05/bc/0d0b5adeda59a261cd30a1235a445bf55c7e46ae44aea28f7bd6ed46e091/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f82865531efd18d6e07a04a17331af02cb7a651583c418df8266f17a63c6612", size = 1892852, upload-time = "2025-04-23T18:33:18.513Z" }, - { url = "https://files.pythonhosted.org/packages/3e/11/d37bdebbda2e449cb3f519f6ce950927b56d62f0b84fd9cb9e372a26a3d5/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bfb5112df54209d820d7bf9317c7a6c9025ea52e49f46b6a2060104bba37de7", size = 2067484, upload-time = "2025-04-23T18:33:20.475Z" }, - { url = "https://files.pythonhosted.org/packages/8c/55/1f95f0a05ce72ecb02a8a8a1c3be0579bbc29b1d5ab68f1378b7bebc5057/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:64632ff9d614e5eecfb495796ad51b0ed98c453e447a76bcbeeb69615079fc7e", size = 2108896, upload-time = "2025-04-23T18:33:22.501Z" }, - { url = "https://files.pythonhosted.org/packages/53/89/2b2de6c81fa131f423246a9109d7b2a375e83968ad0800d6e57d0574629b/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:f889f7a40498cc077332c7ab6b4608d296d852182211787d4f3ee377aaae66e8", size = 2069475, upload-time = "2025-04-23T18:33:24.528Z" }, - { url = "https://files.pythonhosted.org/packages/b8/e9/1f7efbe20d0b2b10f6718944b5d8ece9152390904f29a78e68d4e7961159/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:de4b83bb311557e439b9e186f733f6c645b9417c84e2eb8203f3f820a4b988bf", size = 2239013, upload-time = "2025-04-23T18:33:26.621Z" }, - { url = "https://files.pythonhosted.org/packages/3c/b2/5309c905a93811524a49b4e031e9851a6b00ff0fb668794472ea7746b448/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:82f68293f055f51b51ea42fafc74b6aad03e70e191799430b90c13d643059ebb", size = 2238715, upload-time = "2025-04-23T18:33:28.656Z" }, - { url = "https://files.pythonhosted.org/packages/32/56/8a7ca5d2cd2cda1d245d34b1c9a942920a718082ae8e54e5f3e5a58b7add/pydantic_core-2.33.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:329467cecfb529c925cf2bbd4d60d2c509bc2fb52a20c1045bf09bb70971a9c1", size = 2066757, upload-time = "2025-04-23T18:33:30.645Z" }, - { url = "https://files.pythonhosted.org/packages/08/98/dbf3fdfabaf81cda5622154fda78ea9965ac467e3239078e0dcd6df159e7/pydantic_core-2.33.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:87acbfcf8e90ca885206e98359d7dca4bcbb35abdc0ff66672a293e1d7a19101", size = 2024034, upload-time = "2025-04-23T18:33:32.843Z" }, - { url = "https://files.pythonhosted.org/packages/8d/99/7810aa9256e7f2ccd492590f86b79d370df1e9292f1f80b000b6a75bd2fb/pydantic_core-2.33.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:7f92c15cd1e97d4b12acd1cc9004fa092578acfa57b67ad5e43a197175d01a64", size = 1858578, upload-time = "2025-04-23T18:33:34.912Z" }, - { url = "https://files.pythonhosted.org/packages/d8/60/bc06fa9027c7006cc6dd21e48dbf39076dc39d9abbaf718a1604973a9670/pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3f26877a748dc4251cfcfda9dfb5f13fcb034f5308388066bcfe9031b63ae7d", size = 1892858, upload-time = "2025-04-23T18:33:36.933Z" }, - { url = "https://files.pythonhosted.org/packages/f2/40/9d03997d9518816c68b4dfccb88969756b9146031b61cd37f781c74c9b6a/pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac89aea9af8cd672fa7b510e7b8c33b0bba9a43186680550ccf23020f32d535", size = 2068498, upload-time = "2025-04-23T18:33:38.997Z" }, - { url = "https://files.pythonhosted.org/packages/d8/62/d490198d05d2d86672dc269f52579cad7261ced64c2df213d5c16e0aecb1/pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:970919794d126ba8645f3837ab6046fb4e72bbc057b3709144066204c19a455d", size = 2108428, upload-time = "2025-04-23T18:33:41.18Z" }, - { url = "https://files.pythonhosted.org/packages/9a/ec/4cd215534fd10b8549015f12ea650a1a973da20ce46430b68fc3185573e8/pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3eb3fe62804e8f859c49ed20a8451342de53ed764150cb14ca71357c765dc2a6", size = 2069854, upload-time = "2025-04-23T18:33:43.446Z" }, - { url = "https://files.pythonhosted.org/packages/1a/1a/abbd63d47e1d9b0d632fee6bb15785d0889c8a6e0a6c3b5a8e28ac1ec5d2/pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:3abcd9392a36025e3bd55f9bd38d908bd17962cc49bc6da8e7e96285336e2bca", size = 2237859, upload-time = "2025-04-23T18:33:45.56Z" }, - { url = "https://files.pythonhosted.org/packages/80/1c/fa883643429908b1c90598fd2642af8839efd1d835b65af1f75fba4d94fe/pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:3a1c81334778f9e3af2f8aeb7a960736e5cab1dfebfb26aabca09afd2906c039", size = 2239059, upload-time = "2025-04-23T18:33:47.735Z" }, - { url = "https://files.pythonhosted.org/packages/d4/29/3cade8a924a61f60ccfa10842f75eb12787e1440e2b8660ceffeb26685e7/pydantic_core-2.33.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2807668ba86cb38c6817ad9bc66215ab8584d1d304030ce4f0887336f28a5e27", size = 2066661, upload-time = "2025-04-23T18:33:49.995Z" }, -] - [[package]] name = "pygments" version = "2.19.2" @@ -4011,50 +2280,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "six" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, -] - -[[package]] -name = "python-dotenv" -version = "1.1.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f6/b0/4bc07ccd3572a2f9df7e6782f52b0c6c90dcbb803ac4a167702d7d0dfe1e/python_dotenv-1.1.1.tar.gz", hash = "sha256:a8a6399716257f45be6a007360200409fce5cda2661e3dec71d23dc15f6189ab", size = 41978, upload-time = "2025-06-24T04:21:07.341Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5f/ed/539768cf28c661b5b068d66d96a2f155c4971a5d55684a514c1a0e0dec2f/python_dotenv-1.1.1-py3-none-any.whl", hash = "sha256:31f23644fe2602f88ff55e1f5c79ba497e01224ee7737937930c448e4d0e24dc", size = 20556, upload-time = "2025-06-24T04:21:06.073Z" }, -] - -[[package]] -name = "python-json-logger" -version = "3.3.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typing-extensions", marker = "python_full_version < '3.10'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/9e/de/d3144a0bceede957f961e975f3752760fbe390d57fbe194baf709d8f1f7b/python_json_logger-3.3.0.tar.gz", hash = "sha256:12b7e74b17775e7d565129296105bbe3910842d9d0eb083fc83a6a617aa8df84", size = 16642, upload-time = "2025-03-07T07:08:27.301Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/08/20/0f2523b9e50a8052bc6a8b732dfc8568abbdc42010aef03a2d750bdab3b2/python_json_logger-3.3.0-py3-none-any.whl", hash = "sha256:dd980fae8cffb24c13caf6e158d3d61c0d6d22342f932cb6e9deedab3d35eec7", size = 15163, upload-time = "2025-03-07T07:08:25.627Z" }, -] - -[[package]] -name = "pytorch-lightning" -version = "2.5.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "fsspec", extra = ["http"] }, - { name = "lightning-utilities" }, - { name = "packaging" }, - { name = "pyyaml" }, - { name = "torch", version = "2.7.1", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version >= '3.10' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, - { name = "torch", version = "2.7.1+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64') or platform_machine == 'x86_64' or sys_platform != 'darwin'" }, - { name = "torchmetrics" }, - { name = "tqdm" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/01/3e/728fbdc671d07727ad447f9401d98a43570573965beb3cb2060f9a330b4f/pytorch_lightning-2.5.2.tar.gz", hash = "sha256:f817087d611be8d43b777dd4e543d72703e235510936677a13e6c29f7fd790e3", size = 636859, upload-time = "2025-06-20T15:58:27.062Z" } +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e2/42/47c186c8f9e956e559c89e6c764d5d5d0d0af517c04ca0ad39bd0a357d3a/pytorch_lightning-2.5.2-py3-none-any.whl", hash = "sha256:17cfdf89bd98074e389101f097cdf34c486a1f5c6d3fdcefbaf4dea7f97ff0bf", size = 825366, upload-time = "2025-06-20T15:58:25.534Z" }, + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, ] [[package]] @@ -4087,20 +2315,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/93/ff/2a8c10315ffbdee7b3883ac0d1667e267ca8b3f6f640d81d43b87a82c0c7/pywin32-310-cp39-cp39-win_amd64.whl", hash = "sha256:96867217335559ac619f00ad70e513c0fcf84b8a3af9fc2bba3b59b97da70475", size = 9602031, upload-time = "2025-03-17T00:55:44.512Z" }, ] -[[package]] -name = "pywinpty" -version = "2.0.15" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2d/7c/917f9c4681bb8d34bfbe0b79d36bbcd902651aeab48790df3d30ba0202fb/pywinpty-2.0.15.tar.gz", hash = "sha256:312cf39153a8736c617d45ce8b6ad6cd2107de121df91c455b10ce6bba7a39b2", size = 29017, upload-time = "2025-02-03T21:53:23.265Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a6/b7/855db919ae526d2628f3f2e6c281c4cdff7a9a8af51bb84659a9f07b1861/pywinpty-2.0.15-cp310-cp310-win_amd64.whl", hash = "sha256:8e7f5de756a615a38b96cd86fa3cd65f901ce54ce147a3179c45907fa11b4c4e", size = 1405161, upload-time = "2025-02-03T21:56:25.008Z" }, - { url = "https://files.pythonhosted.org/packages/5e/ac/6884dcb7108af66ad53f73ef4dad096e768c9203a6e6ce5e6b0c4a46e238/pywinpty-2.0.15-cp311-cp311-win_amd64.whl", hash = "sha256:9a6bcec2df2707aaa9d08b86071970ee32c5026e10bcc3cc5f6f391d85baf7ca", size = 1405249, upload-time = "2025-02-03T21:55:47.114Z" }, - { url = "https://files.pythonhosted.org/packages/88/e5/9714def18c3a411809771a3fbcec70bffa764b9675afb00048a620fca604/pywinpty-2.0.15-cp312-cp312-win_amd64.whl", hash = "sha256:83a8f20b430bbc5d8957249f875341a60219a4e971580f2ba694fbfb54a45ebc", size = 1405243, upload-time = "2025-02-03T21:56:52.476Z" }, - { url = "https://files.pythonhosted.org/packages/fb/16/2ab7b3b7f55f3c6929e5f629e1a68362981e4e5fed592a2ed1cb4b4914a5/pywinpty-2.0.15-cp313-cp313-win_amd64.whl", hash = "sha256:ab5920877dd632c124b4ed17bc6dd6ef3b9f86cd492b963ffdb1a67b85b0f408", size = 1405020, upload-time = "2025-02-03T21:56:04.753Z" }, - { url = "https://files.pythonhosted.org/packages/7c/16/edef3515dd2030db2795dbfbe392232c7a0f3dc41b98e92b38b42ba497c7/pywinpty-2.0.15-cp313-cp313t-win_amd64.whl", hash = "sha256:a4560ad8c01e537708d2790dbe7da7d986791de805d89dd0d3697ca59e9e4901", size = 1404151, upload-time = "2025-02-03T21:55:53.628Z" }, - { url = "https://files.pythonhosted.org/packages/47/96/90fa02f19b1eff7469ad7bf0ef8efca248025de9f1d0a0b25682d2aacf68/pywinpty-2.0.15-cp39-cp39-win_amd64.whl", hash = "sha256:d261cd88fcd358cfb48a7ca0700db3e1c088c9c10403c9ebc0d8a8b57aa6a117", size = 1405302, upload-time = "2025-02-03T21:55:40.394Z" }, -] - [[package]] name = "pyyaml" version = "6.0.2" @@ -4229,306 +2443,21 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/51/8b/619a9ee2fa4d3c724fbadde946427735ade64da03894b071bbdc3b789d83/pyzmq-27.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:096af9e133fec3a72108ddefba1e42985cb3639e9de52cfd336b6fc23aa083e9", size = 544715, upload-time = "2025-06-13T14:09:05.579Z" }, ] -[[package]] -name = "ray" -version = "2.47.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "click", version = "8.1.8", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "click", version = "8.2.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, - { name = "filelock" }, - { name = "jsonschema" }, - { name = "msgpack" }, - { name = "packaging" }, - { name = "protobuf" }, - { name = "pyyaml" }, - { name = "requests" }, -] -wheels = [ - { url = "https://files.pythonhosted.org/packages/92/fe/2f1fc21b7a321385fe34fd159c27245c06bad795aba7de71f29e7a00e741/ray-2.47.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:36a30930e8d265e708df96f37f6f1f5484f4b97090d505912f992e045a69d310", size = 66145880, upload-time = "2025-06-17T22:26:11.637Z" }, - { url = "https://files.pythonhosted.org/packages/87/4a/60b0ce7dc1ac04e9c48fc398afed557f0f0cb3fd74c07cb71b567a041157/ray-2.47.1-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:7c03a1e366d3a868a55f8c2f728f5ce35ac85ddf093ac81d0c1a35bf1c25c377", size = 68562947, upload-time = "2025-06-17T22:26:18.483Z" }, - { url = "https://files.pythonhosted.org/packages/2f/a6/bad64e886ef74bbcab7d36b617e41c378088fc4852557005c1e227669697/ray-2.47.1-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:6fc7df8657b8df684b77c2d1b643137ad745aa1c12ade34743f06cca79003df0", size = 67810643, upload-time = "2025-06-17T22:26:24.75Z" }, - { url = "https://files.pythonhosted.org/packages/6d/98/9289f360deb9b3d32cc9170168dff919c2f5192bf87682d5b72050206dca/ray-2.47.1-cp310-cp310-manylinux2014_x86_64.whl", hash = "sha256:84a96b4720175a0000521a48eb7aa915f3b419bb5cd6172d8dee005c3f23b813", size = 68760640, upload-time = "2025-06-17T22:26:30.545Z" }, - { url = "https://files.pythonhosted.org/packages/b6/6c/80690615b50e5e6f5309d5f0f9fcaaf83170e5240252c0d8bbeedc8dc9bd/ray-2.47.1-cp310-cp310-win_amd64.whl", hash = "sha256:44900a1a72cb3bfb331db160a8975737c25945a97f376c70e72ccf35adf3b744", size = 26231731, upload-time = "2025-06-17T22:26:35.84Z" }, - { url = "https://files.pythonhosted.org/packages/82/8c/f763f633a4c80d9ead6c1e9277983c42286a3a83dedccedb15363f3d4c40/ray-2.47.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a640d447e0e6cf63f85b9220c883ec02bb2b8e40a9c1d84efa012795c769ba68", size = 66106702, upload-time = "2025-06-17T22:26:40.409Z" }, - { url = "https://files.pythonhosted.org/packages/5d/10/05b70d425c46eba22bdd46a77cf7db09328eb9dcbf5952fa32e42c5c28e5/ray-2.47.1-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:feeba1e715cfd8737d3adcd2018d0cdabb7c6084fa4b093e638e6c7d42f3c956", size = 68525746, upload-time = "2025-06-17T22:26:46.284Z" }, - { url = "https://files.pythonhosted.org/packages/cd/2d/a3fe20b0830ecbe74dac1ae809c265023f713e19a9f6100870d50885f44d/ray-2.47.1-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:db5ff652e9035f03c65e1742a706b76519f6e8a6744cc005396053ac8766fc46", size = 67906931, upload-time = "2025-06-17T22:26:52.132Z" }, - { url = "https://files.pythonhosted.org/packages/5f/2b/d1395192c748b3761a43f2dbd9fa702a56f8e185fc2beee73ba25e801a46/ray-2.47.1-cp311-cp311-manylinux2014_x86_64.whl", hash = "sha256:48961229614b2b56a535be510c8abc76e99a9aa7fa195b5c949bd0c6c69af40a", size = 68851571, upload-time = "2025-06-17T22:26:57.862Z" }, - { url = "https://files.pythonhosted.org/packages/de/dd/b5dc7d3581e52683259c80014e95074835042ceaf1dea6a400185e0e1947/ray-2.47.1-cp311-cp311-win_amd64.whl", hash = "sha256:bd1cba64070db06bbf79c0e075cdc4529193e2d0b19564f4f057b4193b29e912", size = 26180204, upload-time = "2025-06-17T22:27:03.972Z" }, - { url = "https://files.pythonhosted.org/packages/96/d8/833edaf128fb5cdd53818d307bb93df75d943f32ecc5cb0d7b14981265e6/ray-2.47.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:322049c4546cf67e5efdad90c371c5508acbb193e5aaaf4038103c6c5ce1f578", size = 66091855, upload-time = "2025-06-17T22:27:08.946Z" }, - { url = "https://files.pythonhosted.org/packages/ce/fa/23640e58046c91fcc05edd04bd51dd3d6a44cd7b408faf5bb3528a24c13d/ray-2.47.1-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:e6d9c78e53ac89cabbc4056aecfec53c506c692e3132af9dae941d6180ef462f", size = 68512697, upload-time = "2025-06-17T22:27:15.109Z" }, - { url = "https://files.pythonhosted.org/packages/c5/32/6abf17053eb0ae720a2981a17e6b22797cc655782b603a707052b47f64eb/ray-2.47.1-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:cd4e7eb475487364b5209963b17cefedcb7fbd3a816fdb6def7ea533ebd72424", size = 67918881, upload-time = "2025-06-17T22:27:21.43Z" }, - { url = "https://files.pythonhosted.org/packages/5c/31/4545d03ed68eedf42b52e2a8705a584361e262640e145d6ab219ae33969c/ray-2.47.1-cp312-cp312-manylinux2014_x86_64.whl", hash = "sha256:3eaeaeec3bbe2ca6493e530c30473d84b8580a7ac3256bb9183d8c63def5a92f", size = 68888167, upload-time = "2025-06-17T22:27:27.978Z" }, - { url = "https://files.pythonhosted.org/packages/94/f6/ed91383e0057ad9e3d9c45212a0c7edc5a9d24a2e46da0d55c8233df868c/ray-2.47.1-cp312-cp312-win_amd64.whl", hash = "sha256:601f23ba89918b7b3ffebf967328f7bdb605deaf8c103aad7820dc2722fe450c", size = 26164455, upload-time = "2025-06-17T22:27:33.784Z" }, - { url = "https://files.pythonhosted.org/packages/7b/85/4dbf9a126f080a1114ec7738d9274759c256ff2a1c21662b09123311bbf0/ray-2.47.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:8cd625d469ce15391e5f1f44ddf8dd30b2380f917603fa0172661229acb0011f", size = 66082130, upload-time = "2025-06-17T22:27:38.631Z" }, - { url = "https://files.pythonhosted.org/packages/5a/8e/e893176ca3c02a310bb962b287436508f5b61fd179a7283f37610c0e0087/ray-2.47.1-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:e578929f58b3f0c59c7544a96d864e26278238b755d13cd19ae798070c848e57", size = 68507369, upload-time = "2025-06-17T22:27:44.945Z" }, - { url = "https://files.pythonhosted.org/packages/0c/97/f36e8a19885d930ab0dbcb0b7b6706e630412336b08fa3312bcaaad818b7/ray-2.47.1-cp313-cp313-manylinux2014_aarch64.whl", hash = "sha256:d6ed6d182e25d6f77179dc77bc97a749c81765b13cb671a46db3203029389663", size = 67875541, upload-time = "2025-06-17T22:27:51.191Z" }, - { url = "https://files.pythonhosted.org/packages/52/60/83430886d17526f4757e298b77268533afeedc74ed934f911d522f191ef2/ray-2.47.1-cp313-cp313-manylinux2014_x86_64.whl", hash = "sha256:252a471e8afb918b105cdbffb4cbebb0143baad75a06c8ffcde27ac317579ccb", size = 68848558, upload-time = "2025-06-17T22:27:57.97Z" }, - { url = "https://files.pythonhosted.org/packages/cf/84/055a43a9157869912b7455afbf83a7f01795def134655f82e681496378ed/ray-2.47.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c21720f283a3df360ddec002a592ddfbaf520faf4cb1b86562a7b7c196ad96a0", size = 66149938, upload-time = "2025-06-17T22:28:03.836Z" }, - { url = "https://files.pythonhosted.org/packages/98/5c/08e162bf1d83709d4bb3d7cffdd12763f6f62605c5c2ad7f3b071a66353e/ray-2.47.1-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:6c7b4abe112c4d698243e30023bcbffe2c2c9a68416b95a6a0d50f9ca5725545", size = 68568408, upload-time = "2025-06-17T22:28:09.485Z" }, - { url = "https://files.pythonhosted.org/packages/9b/0f/cec17486997fae42b00a6e82f007514635a556d32217a38204ed4a3a9530/ray-2.47.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:21f2689c1bbc688f9cd31a18bae2c9582027e91b508073849441167bb5077816", size = 67814246, upload-time = "2025-06-17T22:28:15.566Z" }, - { url = "https://files.pythonhosted.org/packages/b2/f1/734d5fd9835610c7d00ec5bbfb232a8bb4d560d0030d85f749c0eb0ee0f2/ray-2.47.1-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:106817f80087d21d24e63f6e56ea5ab7c387a25105eb65e6b783551f569534ea", size = 68763833, upload-time = "2025-06-17T22:28:22.924Z" }, - { url = "https://files.pythonhosted.org/packages/20/1d/64e6d6751b11668a634c7983dffc7a739487de4544110a6cacdf33c1da64/ray-2.47.1-cp39-cp39-win_amd64.whl", hash = "sha256:dee02ba9b8cd45c4eadc457183f6d80f1701b85f966d02cdacd5b11867cb7375", size = 26234907, upload-time = "2025-06-17T22:28:27.977Z" }, -] - -[package.optional-dependencies] -data = [ - { name = "fsspec" }, - { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, - { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, - { name = "pandas" }, - { name = "pyarrow" }, -] -serve = [ - { name = "aiohttp" }, - { name = "aiohttp-cors" }, - { name = "colorful" }, - { name = "fastapi" }, - { name = "grpcio" }, - { name = "opencensus" }, - { name = "opentelemetry-exporter-prometheus" }, - { name = "opentelemetry-proto" }, - { name = "opentelemetry-sdk" }, - { name = "prometheus-client" }, - { name = "py-spy" }, - { name = "pydantic" }, - { name = "requests" }, - { name = "smart-open" }, - { name = "starlette" }, - { name = "uvicorn", extra = ["standard"] }, - { name = "virtualenv" }, - { name = "watchfiles" }, -] -train = [ - { name = "fsspec" }, - { name = "pandas" }, - { name = "pyarrow" }, - { name = "pydantic" }, - { name = "requests" }, - { name = "tensorboardx" }, -] -tune = [ - { name = "fsspec" }, - { name = "pandas" }, - { name = "pyarrow" }, - { name = "requests" }, - { name = "tensorboardx" }, -] - -[[package]] -name = "referencing" -version = "0.36.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "attrs" }, - { name = "rpds-py" }, - { name = "typing-extensions", marker = "python_full_version < '3.13'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744, upload-time = "2025-01-25T08:48:16.138Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775, upload-time = "2025-01-25T08:48:14.241Z" }, -] - [[package]] name = "requests" version = "2.32.4" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "certifi" }, - { name = "charset-normalizer" }, - { name = "idna" }, - { name = "urllib3" }, + { name = "certifi", marker = "python_full_version >= '3.10'" }, + { name = "charset-normalizer", marker = "python_full_version >= '3.10'" }, + { name = "idna", marker = "python_full_version >= '3.10'" }, + { name = "urllib3", marker = "python_full_version >= '3.10'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/e1/0a/929373653770d8a0d7ea76c37de6e41f11eb07559b103b1c02cafb3f7cf8/requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422", size = 135258, upload-time = "2025-06-09T16:43:07.34Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/7c/e4/56027c4a6b4ae70ca9de302488c5ca95ad4a39e190093d6c1a8ace08341b/requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c", size = 64847, upload-time = "2025-06-09T16:43:05.728Z" }, ] -[[package]] -name = "rfc3339-validator" -version = "0.1.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "six" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/28/ea/a9387748e2d111c3c2b275ba970b735e04e15cdb1eb30693b6b5708c4dbd/rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b", size = 5513, upload-time = "2021-05-12T16:37:54.178Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa", size = 3490, upload-time = "2021-05-12T16:37:52.536Z" }, -] - -[[package]] -name = "rfc3986-validator" -version = "0.1.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/da/88/f270de456dd7d11dcc808abfa291ecdd3f45ff44e3b549ffa01b126464d0/rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055", size = 6760, upload-time = "2019-10-28T16:00:19.144Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9e/51/17023c0f8f1869d8806b979a2bffa3f861f26a3f1a66b094288323fba52f/rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9", size = 4242, upload-time = "2019-10-28T16:00:13.976Z" }, -] - -[[package]] -name = "rpds-py" -version = "0.26.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a5/aa/4456d84bbb54adc6a916fb10c9b374f78ac840337644e4a5eda229c81275/rpds_py-0.26.0.tar.gz", hash = "sha256:20dae58a859b0906f0685642e591056f1e787f3a8b39c8e8749a45dc7d26bdb0", size = 27385, upload-time = "2025-07-01T15:57:13.958Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b9/31/1459645f036c3dfeacef89e8e5825e430c77dde8489f3b99eaafcd4a60f5/rpds_py-0.26.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:4c70c70f9169692b36307a95f3d8c0a9fcd79f7b4a383aad5eaa0e9718b79b37", size = 372466, upload-time = "2025-07-01T15:53:40.55Z" }, - { url = "https://files.pythonhosted.org/packages/dd/ff/3d0727f35836cc8773d3eeb9a46c40cc405854e36a8d2e951f3a8391c976/rpds_py-0.26.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:777c62479d12395bfb932944e61e915741e364c843afc3196b694db3d669fcd0", size = 357825, upload-time = "2025-07-01T15:53:42.247Z" }, - { url = "https://files.pythonhosted.org/packages/bf/ce/badc5e06120a54099ae287fa96d82cbb650a5f85cf247ffe19c7b157fd1f/rpds_py-0.26.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec671691e72dff75817386aa02d81e708b5a7ec0dec6669ec05213ff6b77e1bd", size = 381530, upload-time = "2025-07-01T15:53:43.585Z" }, - { url = "https://files.pythonhosted.org/packages/1e/a5/fa5d96a66c95d06c62d7a30707b6a4cfec696ab8ae280ee7be14e961e118/rpds_py-0.26.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6a1cb5d6ce81379401bbb7f6dbe3d56de537fb8235979843f0d53bc2e9815a79", size = 396933, upload-time = "2025-07-01T15:53:45.78Z" }, - { url = "https://files.pythonhosted.org/packages/00/a7/7049d66750f18605c591a9db47d4a059e112a0c9ff8de8daf8fa0f446bba/rpds_py-0.26.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4f789e32fa1fb6a7bf890e0124e7b42d1e60d28ebff57fe806719abb75f0e9a3", size = 513973, upload-time = "2025-07-01T15:53:47.085Z" }, - { url = "https://files.pythonhosted.org/packages/0e/f1/528d02c7d6b29d29fac8fd784b354d3571cc2153f33f842599ef0cf20dd2/rpds_py-0.26.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c55b0a669976cf258afd718de3d9ad1b7d1fe0a91cd1ab36f38b03d4d4aeaaf", size = 402293, upload-time = "2025-07-01T15:53:48.117Z" }, - { url = "https://files.pythonhosted.org/packages/15/93/fde36cd6e4685df2cd08508f6c45a841e82f5bb98c8d5ecf05649522acb5/rpds_py-0.26.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c70d9ec912802ecfd6cd390dadb34a9578b04f9bcb8e863d0a7598ba5e9e7ccc", size = 383787, upload-time = "2025-07-01T15:53:50.874Z" }, - { url = "https://files.pythonhosted.org/packages/69/f2/5007553aaba1dcae5d663143683c3dfd03d9395289f495f0aebc93e90f24/rpds_py-0.26.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3021933c2cb7def39d927b9862292e0f4c75a13d7de70eb0ab06efed4c508c19", size = 416312, upload-time = "2025-07-01T15:53:52.046Z" }, - { url = "https://files.pythonhosted.org/packages/8f/a7/ce52c75c1e624a79e48a69e611f1c08844564e44c85db2b6f711d76d10ce/rpds_py-0.26.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8a7898b6ca3b7d6659e55cdac825a2e58c638cbf335cde41f4619e290dd0ad11", size = 558403, upload-time = "2025-07-01T15:53:53.192Z" }, - { url = "https://files.pythonhosted.org/packages/79/d5/e119db99341cc75b538bf4cb80504129fa22ce216672fb2c28e4a101f4d9/rpds_py-0.26.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:12bff2ad9447188377f1b2794772f91fe68bb4bbfa5a39d7941fbebdbf8c500f", size = 588323, upload-time = "2025-07-01T15:53:54.336Z" }, - { url = "https://files.pythonhosted.org/packages/93/94/d28272a0b02f5fe24c78c20e13bbcb95f03dc1451b68e7830ca040c60bd6/rpds_py-0.26.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:191aa858f7d4902e975d4cf2f2d9243816c91e9605070aeb09c0a800d187e323", size = 554541, upload-time = "2025-07-01T15:53:55.469Z" }, - { url = "https://files.pythonhosted.org/packages/93/e0/8c41166602f1b791da892d976057eba30685486d2e2c061ce234679c922b/rpds_py-0.26.0-cp310-cp310-win32.whl", hash = "sha256:b37a04d9f52cb76b6b78f35109b513f6519efb481d8ca4c321f6a3b9580b3f45", size = 220442, upload-time = "2025-07-01T15:53:56.524Z" }, - { url = "https://files.pythonhosted.org/packages/87/f0/509736bb752a7ab50fb0270c2a4134d671a7b3038030837e5536c3de0e0b/rpds_py-0.26.0-cp310-cp310-win_amd64.whl", hash = "sha256:38721d4c9edd3eb6670437d8d5e2070063f305bfa2d5aa4278c51cedcd508a84", size = 231314, upload-time = "2025-07-01T15:53:57.842Z" }, - { url = "https://files.pythonhosted.org/packages/09/4c/4ee8f7e512030ff79fda1df3243c88d70fc874634e2dbe5df13ba4210078/rpds_py-0.26.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:9e8cb77286025bdb21be2941d64ac6ca016130bfdcd228739e8ab137eb4406ed", size = 372610, upload-time = "2025-07-01T15:53:58.844Z" }, - { url = "https://files.pythonhosted.org/packages/fa/9d/3dc16be00f14fc1f03c71b1d67c8df98263ab2710a2fbd65a6193214a527/rpds_py-0.26.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5e09330b21d98adc8ccb2dbb9fc6cb434e8908d4c119aeaa772cb1caab5440a0", size = 358032, upload-time = "2025-07-01T15:53:59.985Z" }, - { url = "https://files.pythonhosted.org/packages/e7/5a/7f1bf8f045da2866324a08ae80af63e64e7bfaf83bd31f865a7b91a58601/rpds_py-0.26.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c9c1b92b774b2e68d11193dc39620d62fd8ab33f0a3c77ecdabe19c179cdbc1", size = 381525, upload-time = "2025-07-01T15:54:01.162Z" }, - { url = "https://files.pythonhosted.org/packages/45/8a/04479398c755a066ace10e3d158866beb600867cacae194c50ffa783abd0/rpds_py-0.26.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:824e6d3503ab990d7090768e4dfd9e840837bae057f212ff9f4f05ec6d1975e7", size = 397089, upload-time = "2025-07-01T15:54:02.319Z" }, - { url = "https://files.pythonhosted.org/packages/72/88/9203f47268db488a1b6d469d69c12201ede776bb728b9d9f29dbfd7df406/rpds_py-0.26.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ad7fd2258228bf288f2331f0a6148ad0186b2e3643055ed0db30990e59817a6", size = 514255, upload-time = "2025-07-01T15:54:03.38Z" }, - { url = "https://files.pythonhosted.org/packages/f5/b4/01ce5d1e853ddf81fbbd4311ab1eff0b3cf162d559288d10fd127e2588b5/rpds_py-0.26.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0dc23bbb3e06ec1ea72d515fb572c1fea59695aefbffb106501138762e1e915e", size = 402283, upload-time = "2025-07-01T15:54:04.923Z" }, - { url = "https://files.pythonhosted.org/packages/34/a2/004c99936997bfc644d590a9defd9e9c93f8286568f9c16cdaf3e14429a7/rpds_py-0.26.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d80bf832ac7b1920ee29a426cdca335f96a2b5caa839811803e999b41ba9030d", size = 383881, upload-time = "2025-07-01T15:54:06.482Z" }, - { url = "https://files.pythonhosted.org/packages/05/1b/ef5fba4a8f81ce04c427bfd96223f92f05e6cd72291ce9d7523db3b03a6c/rpds_py-0.26.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0919f38f5542c0a87e7b4afcafab6fd2c15386632d249e9a087498571250abe3", size = 415822, upload-time = "2025-07-01T15:54:07.605Z" }, - { url = "https://files.pythonhosted.org/packages/16/80/5c54195aec456b292f7bd8aa61741c8232964063fd8a75fdde9c1e982328/rpds_py-0.26.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d422b945683e409000c888e384546dbab9009bb92f7c0b456e217988cf316107", size = 558347, upload-time = "2025-07-01T15:54:08.591Z" }, - { url = "https://files.pythonhosted.org/packages/f2/1c/1845c1b1fd6d827187c43afe1841d91678d7241cbdb5420a4c6de180a538/rpds_py-0.26.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:77a7711fa562ba2da1aa757e11024ad6d93bad6ad7ede5afb9af144623e5f76a", size = 587956, upload-time = "2025-07-01T15:54:09.963Z" }, - { url = "https://files.pythonhosted.org/packages/2e/ff/9e979329dd131aa73a438c077252ddabd7df6d1a7ad7b9aacf6261f10faa/rpds_py-0.26.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:238e8c8610cb7c29460e37184f6799547f7e09e6a9bdbdab4e8edb90986a2318", size = 554363, upload-time = "2025-07-01T15:54:11.073Z" }, - { url = "https://files.pythonhosted.org/packages/00/8b/d78cfe034b71ffbe72873a136e71acc7a831a03e37771cfe59f33f6de8a2/rpds_py-0.26.0-cp311-cp311-win32.whl", hash = "sha256:893b022bfbdf26d7bedb083efeea624e8550ca6eb98bf7fea30211ce95b9201a", size = 220123, upload-time = "2025-07-01T15:54:12.382Z" }, - { url = "https://files.pythonhosted.org/packages/94/c1/3c8c94c7dd3905dbfde768381ce98778500a80db9924731d87ddcdb117e9/rpds_py-0.26.0-cp311-cp311-win_amd64.whl", hash = "sha256:87a5531de9f71aceb8af041d72fc4cab4943648d91875ed56d2e629bef6d4c03", size = 231732, upload-time = "2025-07-01T15:54:13.434Z" }, - { url = "https://files.pythonhosted.org/packages/67/93/e936fbed1b734eabf36ccb5d93c6a2e9246fbb13c1da011624b7286fae3e/rpds_py-0.26.0-cp311-cp311-win_arm64.whl", hash = "sha256:de2713f48c1ad57f89ac25b3cb7daed2156d8e822cf0eca9b96a6f990718cc41", size = 221917, upload-time = "2025-07-01T15:54:14.559Z" }, - { url = "https://files.pythonhosted.org/packages/ea/86/90eb87c6f87085868bd077c7a9938006eb1ce19ed4d06944a90d3560fce2/rpds_py-0.26.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:894514d47e012e794f1350f076c427d2347ebf82f9b958d554d12819849a369d", size = 363933, upload-time = "2025-07-01T15:54:15.734Z" }, - { url = "https://files.pythonhosted.org/packages/63/78/4469f24d34636242c924626082b9586f064ada0b5dbb1e9d096ee7a8e0c6/rpds_py-0.26.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc921b96fa95a097add244da36a1d9e4f3039160d1d30f1b35837bf108c21136", size = 350447, upload-time = "2025-07-01T15:54:16.922Z" }, - { url = "https://files.pythonhosted.org/packages/ad/91/c448ed45efdfdade82348d5e7995e15612754826ea640afc20915119734f/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e1157659470aa42a75448b6e943c895be8c70531c43cb78b9ba990778955582", size = 384711, upload-time = "2025-07-01T15:54:18.101Z" }, - { url = "https://files.pythonhosted.org/packages/ec/43/e5c86fef4be7f49828bdd4ecc8931f0287b1152c0bb0163049b3218740e7/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:521ccf56f45bb3a791182dc6b88ae5f8fa079dd705ee42138c76deb1238e554e", size = 400865, upload-time = "2025-07-01T15:54:19.295Z" }, - { url = "https://files.pythonhosted.org/packages/55/34/e00f726a4d44f22d5c5fe2e5ddd3ac3d7fd3f74a175607781fbdd06fe375/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9def736773fd56b305c0eef698be5192c77bfa30d55a0e5885f80126c4831a15", size = 517763, upload-time = "2025-07-01T15:54:20.858Z" }, - { url = "https://files.pythonhosted.org/packages/52/1c/52dc20c31b147af724b16104500fba13e60123ea0334beba7b40e33354b4/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cdad4ea3b4513b475e027be79e5a0ceac8ee1c113a1a11e5edc3c30c29f964d8", size = 406651, upload-time = "2025-07-01T15:54:22.508Z" }, - { url = "https://files.pythonhosted.org/packages/2e/77/87d7bfabfc4e821caa35481a2ff6ae0b73e6a391bb6b343db2c91c2b9844/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82b165b07f416bdccf5c84546a484cc8f15137ca38325403864bfdf2b5b72f6a", size = 386079, upload-time = "2025-07-01T15:54:23.987Z" }, - { url = "https://files.pythonhosted.org/packages/e3/d4/7f2200c2d3ee145b65b3cddc4310d51f7da6a26634f3ac87125fd789152a/rpds_py-0.26.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d04cab0a54b9dba4d278fe955a1390da3cf71f57feb78ddc7cb67cbe0bd30323", size = 421379, upload-time = "2025-07-01T15:54:25.073Z" }, - { url = "https://files.pythonhosted.org/packages/ae/13/9fdd428b9c820869924ab62236b8688b122baa22d23efdd1c566938a39ba/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:79061ba1a11b6a12743a2b0f72a46aa2758613d454aa6ba4f5a265cc48850158", size = 562033, upload-time = "2025-07-01T15:54:26.225Z" }, - { url = "https://files.pythonhosted.org/packages/f3/e1/b69686c3bcbe775abac3a4c1c30a164a2076d28df7926041f6c0eb5e8d28/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f405c93675d8d4c5ac87364bb38d06c988e11028a64b52a47158a355079661f3", size = 591639, upload-time = "2025-07-01T15:54:27.424Z" }, - { url = "https://files.pythonhosted.org/packages/5c/c9/1e3d8c8863c84a90197ac577bbc3d796a92502124c27092413426f670990/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dafd4c44b74aa4bed4b250f1aed165b8ef5de743bcca3b88fc9619b6087093d2", size = 557105, upload-time = "2025-07-01T15:54:29.93Z" }, - { url = "https://files.pythonhosted.org/packages/9f/c5/90c569649057622959f6dcc40f7b516539608a414dfd54b8d77e3b201ac0/rpds_py-0.26.0-cp312-cp312-win32.whl", hash = "sha256:3da5852aad63fa0c6f836f3359647870e21ea96cf433eb393ffa45263a170d44", size = 223272, upload-time = "2025-07-01T15:54:31.128Z" }, - { url = "https://files.pythonhosted.org/packages/7d/16/19f5d9f2a556cfed454eebe4d354c38d51c20f3db69e7b4ce6cff904905d/rpds_py-0.26.0-cp312-cp312-win_amd64.whl", hash = "sha256:cf47cfdabc2194a669dcf7a8dbba62e37a04c5041d2125fae0233b720da6f05c", size = 234995, upload-time = "2025-07-01T15:54:32.195Z" }, - { url = "https://files.pythonhosted.org/packages/83/f0/7935e40b529c0e752dfaa7880224771b51175fce08b41ab4a92eb2fbdc7f/rpds_py-0.26.0-cp312-cp312-win_arm64.whl", hash = "sha256:20ab1ae4fa534f73647aad289003f1104092890849e0266271351922ed5574f8", size = 223198, upload-time = "2025-07-01T15:54:33.271Z" }, - { url = "https://files.pythonhosted.org/packages/6a/67/bb62d0109493b12b1c6ab00de7a5566aa84c0e44217c2d94bee1bd370da9/rpds_py-0.26.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:696764a5be111b036256c0b18cd29783fab22154690fc698062fc1b0084b511d", size = 363917, upload-time = "2025-07-01T15:54:34.755Z" }, - { url = "https://files.pythonhosted.org/packages/4b/f3/34e6ae1925a5706c0f002a8d2d7f172373b855768149796af87bd65dcdb9/rpds_py-0.26.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1e6c15d2080a63aaed876e228efe4f814bc7889c63b1e112ad46fdc8b368b9e1", size = 350073, upload-time = "2025-07-01T15:54:36.292Z" }, - { url = "https://files.pythonhosted.org/packages/75/83/1953a9d4f4e4de7fd0533733e041c28135f3c21485faaef56a8aadbd96b5/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:390e3170babf42462739a93321e657444f0862c6d722a291accc46f9d21ed04e", size = 384214, upload-time = "2025-07-01T15:54:37.469Z" }, - { url = "https://files.pythonhosted.org/packages/48/0e/983ed1b792b3322ea1d065e67f4b230f3b96025f5ce3878cc40af09b7533/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7da84c2c74c0f5bc97d853d9e17bb83e2dcafcff0dc48286916001cc114379a1", size = 400113, upload-time = "2025-07-01T15:54:38.954Z" }, - { url = "https://files.pythonhosted.org/packages/69/7f/36c0925fff6f660a80be259c5b4f5e53a16851f946eb080351d057698528/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c5fe114a6dd480a510b6d3661d09d67d1622c4bf20660a474507aaee7eeeee9", size = 515189, upload-time = "2025-07-01T15:54:40.57Z" }, - { url = "https://files.pythonhosted.org/packages/13/45/cbf07fc03ba7a9b54662c9badb58294ecfb24f828b9732970bd1a431ed5c/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3100b3090269f3a7ea727b06a6080d4eb7439dca4c0e91a07c5d133bb1727ea7", size = 406998, upload-time = "2025-07-01T15:54:43.025Z" }, - { url = "https://files.pythonhosted.org/packages/6c/b0/8fa5e36e58657997873fd6a1cf621285ca822ca75b4b3434ead047daa307/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c03c9b0c64afd0320ae57de4c982801271c0c211aa2d37f3003ff5feb75bb04", size = 385903, upload-time = "2025-07-01T15:54:44.752Z" }, - { url = "https://files.pythonhosted.org/packages/4b/f7/b25437772f9f57d7a9fbd73ed86d0dcd76b4c7c6998348c070d90f23e315/rpds_py-0.26.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5963b72ccd199ade6ee493723d18a3f21ba7d5b957017607f815788cef50eaf1", size = 419785, upload-time = "2025-07-01T15:54:46.043Z" }, - { url = "https://files.pythonhosted.org/packages/a7/6b/63ffa55743dfcb4baf2e9e77a0b11f7f97ed96a54558fcb5717a4b2cd732/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9da4e873860ad5bab3291438525cae80169daecbfafe5657f7f5fb4d6b3f96b9", size = 561329, upload-time = "2025-07-01T15:54:47.64Z" }, - { url = "https://files.pythonhosted.org/packages/2f/07/1f4f5e2886c480a2346b1e6759c00278b8a69e697ae952d82ae2e6ee5db0/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:5afaddaa8e8c7f1f7b4c5c725c0070b6eed0228f705b90a1732a48e84350f4e9", size = 590875, upload-time = "2025-07-01T15:54:48.9Z" }, - { url = "https://files.pythonhosted.org/packages/cc/bc/e6639f1b91c3a55f8c41b47d73e6307051b6e246254a827ede730624c0f8/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4916dc96489616a6f9667e7526af8fa693c0fdb4f3acb0e5d9f4400eb06a47ba", size = 556636, upload-time = "2025-07-01T15:54:50.619Z" }, - { url = "https://files.pythonhosted.org/packages/05/4c/b3917c45566f9f9a209d38d9b54a1833f2bb1032a3e04c66f75726f28876/rpds_py-0.26.0-cp313-cp313-win32.whl", hash = "sha256:2a343f91b17097c546b93f7999976fd6c9d5900617aa848c81d794e062ab302b", size = 222663, upload-time = "2025-07-01T15:54:52.023Z" }, - { url = "https://files.pythonhosted.org/packages/e0/0b/0851bdd6025775aaa2365bb8de0697ee2558184c800bfef8d7aef5ccde58/rpds_py-0.26.0-cp313-cp313-win_amd64.whl", hash = "sha256:0a0b60701f2300c81b2ac88a5fb893ccfa408e1c4a555a77f908a2596eb875a5", size = 234428, upload-time = "2025-07-01T15:54:53.692Z" }, - { url = "https://files.pythonhosted.org/packages/ed/e8/a47c64ed53149c75fb581e14a237b7b7cd18217e969c30d474d335105622/rpds_py-0.26.0-cp313-cp313-win_arm64.whl", hash = "sha256:257d011919f133a4746958257f2c75238e3ff54255acd5e3e11f3ff41fd14256", size = 222571, upload-time = "2025-07-01T15:54:54.822Z" }, - { url = "https://files.pythonhosted.org/packages/89/bf/3d970ba2e2bcd17d2912cb42874107390f72873e38e79267224110de5e61/rpds_py-0.26.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:529c8156d7506fba5740e05da8795688f87119cce330c244519cf706a4a3d618", size = 360475, upload-time = "2025-07-01T15:54:56.228Z" }, - { url = "https://files.pythonhosted.org/packages/82/9f/283e7e2979fc4ec2d8ecee506d5a3675fce5ed9b4b7cb387ea5d37c2f18d/rpds_py-0.26.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f53ec51f9d24e9638a40cabb95078ade8c99251945dad8d57bf4aabe86ecee35", size = 346692, upload-time = "2025-07-01T15:54:58.561Z" }, - { url = "https://files.pythonhosted.org/packages/e3/03/7e50423c04d78daf391da3cc4330bdb97042fc192a58b186f2d5deb7befd/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab504c4d654e4a29558eaa5bb8cea5fdc1703ea60a8099ffd9c758472cf913f", size = 379415, upload-time = "2025-07-01T15:54:59.751Z" }, - { url = "https://files.pythonhosted.org/packages/57/00/d11ee60d4d3b16808432417951c63df803afb0e0fc672b5e8d07e9edaaae/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fd0641abca296bc1a00183fe44f7fced8807ed49d501f188faa642d0e4975b83", size = 391783, upload-time = "2025-07-01T15:55:00.898Z" }, - { url = "https://files.pythonhosted.org/packages/08/b3/1069c394d9c0d6d23c5b522e1f6546b65793a22950f6e0210adcc6f97c3e/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b312fecc1d017b5327afa81d4da1480f51c68810963a7336d92203dbb3d4f1", size = 512844, upload-time = "2025-07-01T15:55:02.201Z" }, - { url = "https://files.pythonhosted.org/packages/08/3b/c4fbf0926800ed70b2c245ceca99c49f066456755f5d6eb8863c2c51e6d0/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c741107203954f6fc34d3066d213d0a0c40f7bb5aafd698fb39888af277c70d8", size = 402105, upload-time = "2025-07-01T15:55:03.698Z" }, - { url = "https://files.pythonhosted.org/packages/1c/b0/db69b52ca07413e568dae9dc674627a22297abb144c4d6022c6d78f1e5cc/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc3e55a7db08dc9a6ed5fb7103019d2c1a38a349ac41901f9f66d7f95750942f", size = 383440, upload-time = "2025-07-01T15:55:05.398Z" }, - { url = "https://files.pythonhosted.org/packages/4c/e1/c65255ad5b63903e56b3bb3ff9dcc3f4f5c3badde5d08c741ee03903e951/rpds_py-0.26.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9e851920caab2dbcae311fd28f4313c6953993893eb5c1bb367ec69d9a39e7ed", size = 412759, upload-time = "2025-07-01T15:55:08.316Z" }, - { url = "https://files.pythonhosted.org/packages/e4/22/bb731077872377a93c6e93b8a9487d0406c70208985831034ccdeed39c8e/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:dfbf280da5f876d0b00c81f26bedce274e72a678c28845453885a9b3c22ae632", size = 556032, upload-time = "2025-07-01T15:55:09.52Z" }, - { url = "https://files.pythonhosted.org/packages/e0/8b/393322ce7bac5c4530fb96fc79cc9ea2f83e968ff5f6e873f905c493e1c4/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:1cc81d14ddfa53d7f3906694d35d54d9d3f850ef8e4e99ee68bc0d1e5fed9a9c", size = 585416, upload-time = "2025-07-01T15:55:11.216Z" }, - { url = "https://files.pythonhosted.org/packages/49/ae/769dc372211835bf759319a7aae70525c6eb523e3371842c65b7ef41c9c6/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dca83c498b4650a91efcf7b88d669b170256bf8017a5db6f3e06c2bf031f57e0", size = 554049, upload-time = "2025-07-01T15:55:13.004Z" }, - { url = "https://files.pythonhosted.org/packages/6b/f9/4c43f9cc203d6ba44ce3146246cdc38619d92c7bd7bad4946a3491bd5b70/rpds_py-0.26.0-cp313-cp313t-win32.whl", hash = "sha256:4d11382bcaf12f80b51d790dee295c56a159633a8e81e6323b16e55d81ae37e9", size = 218428, upload-time = "2025-07-01T15:55:14.486Z" }, - { url = "https://files.pythonhosted.org/packages/7e/8b/9286b7e822036a4a977f2f1e851c7345c20528dbd56b687bb67ed68a8ede/rpds_py-0.26.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ff110acded3c22c033e637dd8896e411c7d3a11289b2edf041f86663dbc791e9", size = 231524, upload-time = "2025-07-01T15:55:15.745Z" }, - { url = "https://files.pythonhosted.org/packages/55/07/029b7c45db910c74e182de626dfdae0ad489a949d84a468465cd0ca36355/rpds_py-0.26.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:da619979df60a940cd434084355c514c25cf8eb4cf9a508510682f6c851a4f7a", size = 364292, upload-time = "2025-07-01T15:55:17.001Z" }, - { url = "https://files.pythonhosted.org/packages/13/d1/9b3d3f986216b4d1f584878dca15ce4797aaf5d372d738974ba737bf68d6/rpds_py-0.26.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ea89a2458a1a75f87caabefe789c87539ea4e43b40f18cff526052e35bbb4fdf", size = 350334, upload-time = "2025-07-01T15:55:18.922Z" }, - { url = "https://files.pythonhosted.org/packages/18/98/16d5e7bc9ec715fa9668731d0cf97f6b032724e61696e2db3d47aeb89214/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feac1045b3327a45944e7dcbeb57530339f6b17baff154df51ef8b0da34c8c12", size = 384875, upload-time = "2025-07-01T15:55:20.399Z" }, - { url = "https://files.pythonhosted.org/packages/f9/13/aa5e2b1ec5ab0e86a5c464d53514c0467bec6ba2507027d35fc81818358e/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b818a592bd69bfe437ee8368603d4a2d928c34cffcdf77c2e761a759ffd17d20", size = 399993, upload-time = "2025-07-01T15:55:21.729Z" }, - { url = "https://files.pythonhosted.org/packages/17/03/8021810b0e97923abdbab6474c8b77c69bcb4b2c58330777df9ff69dc559/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a8b0dd8648709b62d9372fc00a57466f5fdeefed666afe3fea5a6c9539a0331", size = 516683, upload-time = "2025-07-01T15:55:22.918Z" }, - { url = "https://files.pythonhosted.org/packages/dc/b1/da8e61c87c2f3d836954239fdbbfb477bb7b54d74974d8f6fcb34342d166/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6d3498ad0df07d81112aa6ec6c95a7e7b1ae00929fb73e7ebee0f3faaeabad2f", size = 408825, upload-time = "2025-07-01T15:55:24.207Z" }, - { url = "https://files.pythonhosted.org/packages/38/bc/1fc173edaaa0e52c94b02a655db20697cb5fa954ad5a8e15a2c784c5cbdd/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24a4146ccb15be237fdef10f331c568e1b0e505f8c8c9ed5d67759dac58ac246", size = 387292, upload-time = "2025-07-01T15:55:25.554Z" }, - { url = "https://files.pythonhosted.org/packages/7c/eb/3a9bb4bd90867d21916f253caf4f0d0be7098671b6715ad1cead9fe7bab9/rpds_py-0.26.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a9a63785467b2d73635957d32a4f6e73d5e4df497a16a6392fa066b753e87387", size = 420435, upload-time = "2025-07-01T15:55:27.798Z" }, - { url = "https://files.pythonhosted.org/packages/cd/16/e066dcdb56f5632713445271a3f8d3d0b426d51ae9c0cca387799df58b02/rpds_py-0.26.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:de4ed93a8c91debfd5a047be327b7cc8b0cc6afe32a716bbbc4aedca9e2a83af", size = 562410, upload-time = "2025-07-01T15:55:29.057Z" }, - { url = "https://files.pythonhosted.org/packages/60/22/ddbdec7eb82a0dc2e455be44c97c71c232983e21349836ce9f272e8a3c29/rpds_py-0.26.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:caf51943715b12af827696ec395bfa68f090a4c1a1d2509eb4e2cb69abbbdb33", size = 590724, upload-time = "2025-07-01T15:55:30.719Z" }, - { url = "https://files.pythonhosted.org/packages/2c/b4/95744085e65b7187d83f2fcb0bef70716a1ea0a9e5d8f7f39a86e5d83424/rpds_py-0.26.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:4a59e5bc386de021f56337f757301b337d7ab58baa40174fb150accd480bc953", size = 558285, upload-time = "2025-07-01T15:55:31.981Z" }, - { url = "https://files.pythonhosted.org/packages/37/37/6309a75e464d1da2559446f9c811aa4d16343cebe3dbb73701e63f760caa/rpds_py-0.26.0-cp314-cp314-win32.whl", hash = "sha256:92c8db839367ef16a662478f0a2fe13e15f2227da3c1430a782ad0f6ee009ec9", size = 223459, upload-time = "2025-07-01T15:55:33.312Z" }, - { url = "https://files.pythonhosted.org/packages/d9/6f/8e9c11214c46098b1d1391b7e02b70bb689ab963db3b19540cba17315291/rpds_py-0.26.0-cp314-cp314-win_amd64.whl", hash = "sha256:b0afb8cdd034150d4d9f53926226ed27ad15b7f465e93d7468caaf5eafae0d37", size = 236083, upload-time = "2025-07-01T15:55:34.933Z" }, - { url = "https://files.pythonhosted.org/packages/47/af/9c4638994dd623d51c39892edd9d08e8be8220a4b7e874fa02c2d6e91955/rpds_py-0.26.0-cp314-cp314-win_arm64.whl", hash = "sha256:ca3f059f4ba485d90c8dc75cb5ca897e15325e4e609812ce57f896607c1c0867", size = 223291, upload-time = "2025-07-01T15:55:36.202Z" }, - { url = "https://files.pythonhosted.org/packages/4d/db/669a241144460474aab03e254326b32c42def83eb23458a10d163cb9b5ce/rpds_py-0.26.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:5afea17ab3a126006dc2f293b14ffc7ef3c85336cf451564a0515ed7648033da", size = 361445, upload-time = "2025-07-01T15:55:37.483Z" }, - { url = "https://files.pythonhosted.org/packages/3b/2d/133f61cc5807c6c2fd086a46df0eb8f63a23f5df8306ff9f6d0fd168fecc/rpds_py-0.26.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:69f0c0a3df7fd3a7eec50a00396104bb9a843ea6d45fcc31c2d5243446ffd7a7", size = 347206, upload-time = "2025-07-01T15:55:38.828Z" }, - { url = "https://files.pythonhosted.org/packages/05/bf/0e8fb4c05f70273469eecf82f6ccf37248558526a45321644826555db31b/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:801a71f70f9813e82d2513c9a96532551fce1e278ec0c64610992c49c04c2dad", size = 380330, upload-time = "2025-07-01T15:55:40.175Z" }, - { url = "https://files.pythonhosted.org/packages/d4/a8/060d24185d8b24d3923322f8d0ede16df4ade226a74e747b8c7c978e3dd3/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:df52098cde6d5e02fa75c1f6244f07971773adb4a26625edd5c18fee906fa84d", size = 392254, upload-time = "2025-07-01T15:55:42.015Z" }, - { url = "https://files.pythonhosted.org/packages/b9/7b/7c2e8a9ee3e6bc0bae26bf29f5219955ca2fbb761dca996a83f5d2f773fe/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9bc596b30f86dc6f0929499c9e574601679d0341a0108c25b9b358a042f51bca", size = 516094, upload-time = "2025-07-01T15:55:43.603Z" }, - { url = "https://files.pythonhosted.org/packages/75/d6/f61cafbed8ba1499b9af9f1777a2a199cd888f74a96133d8833ce5eaa9c5/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9dfbe56b299cf5875b68eb6f0ebaadc9cac520a1989cac0db0765abfb3709c19", size = 402889, upload-time = "2025-07-01T15:55:45.275Z" }, - { url = "https://files.pythonhosted.org/packages/92/19/c8ac0a8a8df2dd30cdec27f69298a5c13e9029500d6d76718130f5e5be10/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac64f4b2bdb4ea622175c9ab7cf09444e412e22c0e02e906978b3b488af5fde8", size = 384301, upload-time = "2025-07-01T15:55:47.098Z" }, - { url = "https://files.pythonhosted.org/packages/41/e1/6b1859898bc292a9ce5776016c7312b672da00e25cec74d7beced1027286/rpds_py-0.26.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:181ef9b6bbf9845a264f9aa45c31836e9f3c1f13be565d0d010e964c661d1e2b", size = 412891, upload-time = "2025-07-01T15:55:48.412Z" }, - { url = "https://files.pythonhosted.org/packages/ef/b9/ceb39af29913c07966a61367b3c08b4f71fad841e32c6b59a129d5974698/rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:49028aa684c144ea502a8e847d23aed5e4c2ef7cadfa7d5eaafcb40864844b7a", size = 557044, upload-time = "2025-07-01T15:55:49.816Z" }, - { url = "https://files.pythonhosted.org/packages/2f/27/35637b98380731a521f8ec4f3fd94e477964f04f6b2f8f7af8a2d889a4af/rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:e5d524d68a474a9688336045bbf76cb0def88549c1b2ad9dbfec1fb7cfbe9170", size = 585774, upload-time = "2025-07-01T15:55:51.192Z" }, - { url = "https://files.pythonhosted.org/packages/52/d9/3f0f105420fecd18551b678c9a6ce60bd23986098b252a56d35781b3e7e9/rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c1851f429b822831bd2edcbe0cfd12ee9ea77868f8d3daf267b189371671c80e", size = 554886, upload-time = "2025-07-01T15:55:52.541Z" }, - { url = "https://files.pythonhosted.org/packages/6b/c5/347c056a90dc8dd9bc240a08c527315008e1b5042e7a4cf4ac027be9d38a/rpds_py-0.26.0-cp314-cp314t-win32.whl", hash = "sha256:7bdb17009696214c3b66bb3590c6d62e14ac5935e53e929bcdbc5a495987a84f", size = 219027, upload-time = "2025-07-01T15:55:53.874Z" }, - { url = "https://files.pythonhosted.org/packages/75/04/5302cea1aa26d886d34cadbf2dc77d90d7737e576c0065f357b96dc7a1a6/rpds_py-0.26.0-cp314-cp314t-win_amd64.whl", hash = "sha256:f14440b9573a6f76b4ee4770c13f0b5921f71dde3b6fcb8dabbefd13b7fe05d7", size = 232821, upload-time = "2025-07-01T15:55:55.167Z" }, - { url = "https://files.pythonhosted.org/packages/fb/74/846ab687119c9d31fc21ab1346ef9233c31035ce53c0e2d43a130a0c5a5e/rpds_py-0.26.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:7a48af25d9b3c15684059d0d1fc0bc30e8eee5ca521030e2bffddcab5be40226", size = 372786, upload-time = "2025-07-01T15:55:56.512Z" }, - { url = "https://files.pythonhosted.org/packages/33/02/1f9e465cb1a6032d02b17cd117c7bd9fb6156bc5b40ffeb8053d8a2aa89c/rpds_py-0.26.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0c71c2f6bf36e61ee5c47b2b9b5d47e4d1baad6426bfed9eea3e858fc6ee8806", size = 358062, upload-time = "2025-07-01T15:55:58.084Z" }, - { url = "https://files.pythonhosted.org/packages/2a/49/81a38e3c67ac943907a9711882da3d87758c82cf26b2120b8128e45d80df/rpds_py-0.26.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d815d48b1804ed7867b539236b6dd62997850ca1c91cad187f2ddb1b7bbef19", size = 381576, upload-time = "2025-07-01T15:55:59.422Z" }, - { url = "https://files.pythonhosted.org/packages/14/37/418f030a76ef59f41e55f9dc916af8afafa3c9e3be38df744b2014851474/rpds_py-0.26.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:84cfbd4d4d2cdeb2be61a057a258d26b22877266dd905809e94172dff01a42ae", size = 397062, upload-time = "2025-07-01T15:56:00.868Z" }, - { url = "https://files.pythonhosted.org/packages/47/e3/9090817a8f4388bfe58e28136e9682fa7872a06daff2b8a2f8c78786a6e1/rpds_py-0.26.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fbaa70553ca116c77717f513e08815aec458e6b69a028d4028d403b3bc84ff37", size = 516277, upload-time = "2025-07-01T15:56:02.672Z" }, - { url = "https://files.pythonhosted.org/packages/3f/3a/1ec3dd93250fb8023f27d49b3f92e13f679141f2e59a61563f88922c2821/rpds_py-0.26.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:39bfea47c375f379d8e87ab4bb9eb2c836e4f2069f0f65731d85e55d74666387", size = 402604, upload-time = "2025-07-01T15:56:04.453Z" }, - { url = "https://files.pythonhosted.org/packages/f2/98/9133c06e42ec3ce637936263c50ac647f879b40a35cfad2f5d4ad418a439/rpds_py-0.26.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1533b7eb683fb5f38c1d68a3c78f5fdd8f1412fa6b9bf03b40f450785a0ab915", size = 383664, upload-time = "2025-07-01T15:56:05.823Z" }, - { url = "https://files.pythonhosted.org/packages/a9/10/a59ce64099cc77c81adb51f06909ac0159c19a3e2c9d9613bab171f4730f/rpds_py-0.26.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c5ab0ee51f560d179b057555b4f601b7df909ed31312d301b99f8b9fc6028284", size = 415944, upload-time = "2025-07-01T15:56:07.132Z" }, - { url = "https://files.pythonhosted.org/packages/c3/f1/ae0c60b3be9df9d5bef3527d83b8eb4b939e3619f6dd8382840e220a27df/rpds_py-0.26.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:e5162afc9e0d1f9cae3b577d9c29ddbab3505ab39012cb794d94a005825bde21", size = 558311, upload-time = "2025-07-01T15:56:08.484Z" }, - { url = "https://files.pythonhosted.org/packages/fb/2b/bf1498ebb3ddc5eff2fe3439da88963d1fc6e73d1277fa7ca0c72620d167/rpds_py-0.26.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:43f10b007033f359bc3fa9cd5e6c1e76723f056ffa9a6b5c117cc35720a80292", size = 587928, upload-time = "2025-07-01T15:56:09.946Z" }, - { url = "https://files.pythonhosted.org/packages/b6/eb/e6b949edf7af5629848c06d6e544a36c9f2781e2d8d03b906de61ada04d0/rpds_py-0.26.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e3730a48e5622e598293eee0762b09cff34dd3f271530f47b0894891281f051d", size = 554554, upload-time = "2025-07-01T15:56:11.775Z" }, - { url = "https://files.pythonhosted.org/packages/0a/1c/aa0298372ea898620d4706ad26b5b9e975550a4dd30bd042b0fe9ae72cce/rpds_py-0.26.0-cp39-cp39-win32.whl", hash = "sha256:4b1f66eb81eab2e0ff5775a3a312e5e2e16bf758f7b06be82fb0d04078c7ac51", size = 220273, upload-time = "2025-07-01T15:56:13.273Z" }, - { url = "https://files.pythonhosted.org/packages/b8/b0/8b3bef6ad0b35c172d1c87e2e5c2bb027d99e2a7bc7a16f744e66cf318f3/rpds_py-0.26.0-cp39-cp39-win_amd64.whl", hash = "sha256:519067e29f67b5c90e64fb1a6b6e9d2ec0ba28705c51956637bac23a2f4ddae1", size = 231627, upload-time = "2025-07-01T15:56:14.853Z" }, - { url = "https://files.pythonhosted.org/packages/ef/9a/1f033b0b31253d03d785b0cd905bc127e555ab496ea6b4c7c2e1f951f2fd/rpds_py-0.26.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3c0909c5234543ada2515c05dc08595b08d621ba919629e94427e8e03539c958", size = 373226, upload-time = "2025-07-01T15:56:16.578Z" }, - { url = "https://files.pythonhosted.org/packages/58/29/5f88023fd6aaaa8ca3c4a6357ebb23f6f07da6079093ccf27c99efce87db/rpds_py-0.26.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:c1fb0cda2abcc0ac62f64e2ea4b4e64c57dfd6b885e693095460c61bde7bb18e", size = 359230, upload-time = "2025-07-01T15:56:17.978Z" }, - { url = "https://files.pythonhosted.org/packages/6c/6c/13eaebd28b439da6964dde22712b52e53fe2824af0223b8e403249d10405/rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:84d142d2d6cf9b31c12aa4878d82ed3b2324226270b89b676ac62ccd7df52d08", size = 382363, upload-time = "2025-07-01T15:56:19.977Z" }, - { url = "https://files.pythonhosted.org/packages/55/fc/3bb9c486b06da19448646f96147796de23c5811ef77cbfc26f17307b6a9d/rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a547e21c5610b7e9093d870be50682a6a6cf180d6da0f42c47c306073bfdbbf6", size = 397146, upload-time = "2025-07-01T15:56:21.39Z" }, - { url = "https://files.pythonhosted.org/packages/15/18/9d1b79eb4d18e64ba8bba9e7dec6f9d6920b639f22f07ee9368ca35d4673/rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:35e9a70a0f335371275cdcd08bc5b8051ac494dd58bff3bbfb421038220dc871", size = 514804, upload-time = "2025-07-01T15:56:22.78Z" }, - { url = "https://files.pythonhosted.org/packages/4f/5a/175ad7191bdbcd28785204621b225ad70e85cdfd1e09cc414cb554633b21/rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0dfa6115c6def37905344d56fb54c03afc49104e2ca473d5dedec0f6606913b4", size = 402820, upload-time = "2025-07-01T15:56:24.584Z" }, - { url = "https://files.pythonhosted.org/packages/11/45/6a67ecf6d61c4d4aff4bc056e864eec4b2447787e11d1c2c9a0242c6e92a/rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:313cfcd6af1a55a286a3c9a25f64af6d0e46cf60bc5798f1db152d97a216ff6f", size = 384567, upload-time = "2025-07-01T15:56:26.064Z" }, - { url = "https://files.pythonhosted.org/packages/a1/ba/16589da828732b46454c61858950a78fe4c931ea4bf95f17432ffe64b241/rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f7bf2496fa563c046d05e4d232d7b7fd61346e2402052064b773e5c378bf6f73", size = 416520, upload-time = "2025-07-01T15:56:27.608Z" }, - { url = "https://files.pythonhosted.org/packages/81/4b/00092999fc7c0c266045e984d56b7314734cc400a6c6dc4d61a35f135a9d/rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:aa81873e2c8c5aa616ab8e017a481a96742fdf9313c40f14338ca7dbf50cb55f", size = 559362, upload-time = "2025-07-01T15:56:29.078Z" }, - { url = "https://files.pythonhosted.org/packages/96/0c/43737053cde1f93ac4945157f7be1428724ab943e2132a0d235a7e161d4e/rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:68ffcf982715f5b5b7686bdd349ff75d422e8f22551000c24b30eaa1b7f7ae84", size = 588113, upload-time = "2025-07-01T15:56:30.485Z" }, - { url = "https://files.pythonhosted.org/packages/46/46/8e38f6161466e60a997ed7e9951ae5de131dedc3cf778ad35994b4af823d/rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:6188de70e190847bb6db3dc3981cbadff87d27d6fe9b4f0e18726d55795cee9b", size = 555429, upload-time = "2025-07-01T15:56:31.956Z" }, - { url = "https://files.pythonhosted.org/packages/2c/ac/65da605e9f1dd643ebe615d5bbd11b6efa1d69644fc4bf623ea5ae385a82/rpds_py-0.26.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1c962145c7473723df9722ba4c058de12eb5ebedcb4e27e7d902920aa3831ee8", size = 231950, upload-time = "2025-07-01T15:56:33.337Z" }, - { url = "https://files.pythonhosted.org/packages/51/f2/b5c85b758a00c513bb0389f8fc8e61eb5423050c91c958cdd21843faa3e6/rpds_py-0.26.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f61a9326f80ca59214d1cceb0a09bb2ece5b2563d4e0cd37bfd5515c28510674", size = 373505, upload-time = "2025-07-01T15:56:34.716Z" }, - { url = "https://files.pythonhosted.org/packages/23/e0/25db45e391251118e915e541995bb5f5ac5691a3b98fb233020ba53afc9b/rpds_py-0.26.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:183f857a53bcf4b1b42ef0f57ca553ab56bdd170e49d8091e96c51c3d69ca696", size = 359468, upload-time = "2025-07-01T15:56:36.219Z" }, - { url = "https://files.pythonhosted.org/packages/0b/73/dd5ee6075bb6491be3a646b301dfd814f9486d924137a5098e61f0487e16/rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:941c1cfdf4799d623cf3aa1d326a6b4fdb7a5799ee2687f3516738216d2262fb", size = 382680, upload-time = "2025-07-01T15:56:37.644Z" }, - { url = "https://files.pythonhosted.org/packages/2f/10/84b522ff58763a5c443f5bcedc1820240e454ce4e620e88520f04589e2ea/rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72a8d9564a717ee291f554eeb4bfeafe2309d5ec0aa6c475170bdab0f9ee8e88", size = 397035, upload-time = "2025-07-01T15:56:39.241Z" }, - { url = "https://files.pythonhosted.org/packages/06/ea/8667604229a10a520fcbf78b30ccc278977dcc0627beb7ea2c96b3becef0/rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:511d15193cbe013619dd05414c35a7dedf2088fcee93c6bbb7c77859765bd4e8", size = 514922, upload-time = "2025-07-01T15:56:40.645Z" }, - { url = "https://files.pythonhosted.org/packages/24/e6/9ed5b625c0661c4882fc8cdf302bf8e96c73c40de99c31e0b95ed37d508c/rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aea1f9741b603a8d8fedb0ed5502c2bc0accbc51f43e2ad1337fe7259c2b77a5", size = 402822, upload-time = "2025-07-01T15:56:42.137Z" }, - { url = "https://files.pythonhosted.org/packages/8a/58/212c7b6fd51946047fb45d3733da27e2fa8f7384a13457c874186af691b1/rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4019a9d473c708cf2f16415688ef0b4639e07abaa569d72f74745bbeffafa2c7", size = 384336, upload-time = "2025-07-01T15:56:44.239Z" }, - { url = "https://files.pythonhosted.org/packages/aa/f5/a40ba78748ae8ebf4934d4b88e77b98497378bc2c24ba55ebe87a4e87057/rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:093d63b4b0f52d98ebae33b8c50900d3d67e0666094b1be7a12fffd7f65de74b", size = 416871, upload-time = "2025-07-01T15:56:46.284Z" }, - { url = "https://files.pythonhosted.org/packages/d5/a6/33b1fc0c9f7dcfcfc4a4353daa6308b3ece22496ceece348b3e7a7559a09/rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:2abe21d8ba64cded53a2a677e149ceb76dcf44284202d737178afe7ba540c1eb", size = 559439, upload-time = "2025-07-01T15:56:48.549Z" }, - { url = "https://files.pythonhosted.org/packages/71/2d/ceb3f9c12f8cfa56d34995097f6cd99da1325642c60d1b6680dd9df03ed8/rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:4feb7511c29f8442cbbc28149a92093d32e815a28aa2c50d333826ad2a20fdf0", size = 588380, upload-time = "2025-07-01T15:56:50.086Z" }, - { url = "https://files.pythonhosted.org/packages/c8/ed/9de62c2150ca8e2e5858acf3f4f4d0d180a38feef9fdab4078bea63d8dba/rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e99685fc95d386da368013e7fb4269dd39c30d99f812a8372d62f244f662709c", size = 555334, upload-time = "2025-07-01T15:56:51.703Z" }, - { url = "https://files.pythonhosted.org/packages/7e/78/a08e2f28e91c7e45db1150813c6d760a0fb114d5652b1373897073369e0d/rpds_py-0.26.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a90a13408a7a856b87be8a9f008fff53c5080eea4e4180f6c2e546e4a972fb5d", size = 373157, upload-time = "2025-07-01T15:56:53.291Z" }, - { url = "https://files.pythonhosted.org/packages/52/01/ddf51517497c8224fb0287e9842b820ed93748bc28ea74cab56a71e3dba4/rpds_py-0.26.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:3ac51b65e8dc76cf4949419c54c5528adb24fc721df722fd452e5fbc236f5c40", size = 358827, upload-time = "2025-07-01T15:56:54.963Z" }, - { url = "https://files.pythonhosted.org/packages/4d/f4/acaefa44b83705a4fcadd68054280127c07cdb236a44a1c08b7c5adad40b/rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59b2093224a18c6508d95cfdeba8db9cbfd6f3494e94793b58972933fcee4c6d", size = 382182, upload-time = "2025-07-01T15:56:56.474Z" }, - { url = "https://files.pythonhosted.org/packages/e9/a2/d72ac03d37d33f6ff4713ca4c704da0c3b1b3a959f0bf5eb738c0ad94ea2/rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4f01a5d6444a3258b00dc07b6ea4733e26f8072b788bef750baa37b370266137", size = 397123, upload-time = "2025-07-01T15:56:58.272Z" }, - { url = "https://files.pythonhosted.org/packages/74/58/c053e9d1da1d3724434dd7a5f506623913e6404d396ff3cf636a910c0789/rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b6e2c12160c72aeda9d1283e612f68804621f448145a210f1bf1d79151c47090", size = 516285, upload-time = "2025-07-01T15:57:00.283Z" }, - { url = "https://files.pythonhosted.org/packages/94/41/c81e97ee88b38b6d1847c75f2274dee8d67cb8d5ed7ca8c6b80442dead75/rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cb28c1f569f8d33b2b5dcd05d0e6ef7005d8639c54c2f0be824f05aedf715255", size = 402182, upload-time = "2025-07-01T15:57:02.587Z" }, - { url = "https://files.pythonhosted.org/packages/74/74/38a176b34ce5197b4223e295f36350dd90713db13cf3c3b533e8e8f7484e/rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1766b5724c3f779317d5321664a343c07773c8c5fd1532e4039e6cc7d1a815be", size = 384436, upload-time = "2025-07-01T15:57:04.125Z" }, - { url = "https://files.pythonhosted.org/packages/e4/21/f40b9a5709d7078372c87fd11335469dc4405245528b60007cd4078ed57a/rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b6d9e5a2ed9c4988c8f9b28b3bc0e3e5b1aaa10c28d210a594ff3a8c02742daf", size = 417039, upload-time = "2025-07-01T15:57:05.608Z" }, - { url = "https://files.pythonhosted.org/packages/02/ee/ed835925731c7e87306faa80a3a5e17b4d0f532083155e7e00fe1cd4e242/rpds_py-0.26.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:b5f7a446ddaf6ca0fad9a5535b56fbfc29998bf0e0b450d174bbec0d600e1d72", size = 559111, upload-time = "2025-07-01T15:57:07.371Z" }, - { url = "https://files.pythonhosted.org/packages/ce/88/d6e9e686b8ffb6139b82eb1c319ef32ae99aeb21f7e4bf45bba44a760d09/rpds_py-0.26.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:eed5ac260dd545fbc20da5f4f15e7efe36a55e0e7cf706e4ec005b491a9546a0", size = 588609, upload-time = "2025-07-01T15:57:09.319Z" }, - { url = "https://files.pythonhosted.org/packages/e5/96/09bcab08fa12a69672716b7f86c672ee7f79c5319f1890c5a79dcb8e0df2/rpds_py-0.26.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:582462833ba7cee52e968b0341b85e392ae53d44c0f9af6a5927c80e539a8b67", size = 555212, upload-time = "2025-07-01T15:57:10.905Z" }, - { url = "https://files.pythonhosted.org/packages/2c/07/c554b6ed0064b6e0350a622714298e930b3cf5a3d445a2e25c412268abcf/rpds_py-0.26.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:69a607203441e07e9a8a529cff1d5b73f6a160f22db1097211e6212a68567d11", size = 232048, upload-time = "2025-07-01T15:57:12.473Z" }, -] - -[[package]] -name = "rsa" -version = "4.9.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyasn1" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/da/8a/22b7beea3ee0d44b1916c0c1cb0ee3af23b700b6da9f04991899d0c555d4/rsa-4.9.1.tar.gz", hash = "sha256:e7bdbfdb5497da4c07dfd35530e1a902659db6ff241e39d9953cad06ebd0ae75", size = 29034, upload-time = "2025-04-16T09:51:18.218Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/64/8d/0133e4eb4beed9e425d9a98ed6e081a55d195481b7632472be1af08d2f6b/rsa-4.9.1-py3-none-any.whl", hash = "sha256:68635866661c6836b8d39430f97a996acbd61bfa49406748ea243539fe239762", size = 34696, upload-time = "2025-04-16T09:51:17.142Z" }, -] - [[package]] name = "scikit-learn" version = "1.6.1" @@ -4536,8 +2465,7 @@ source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", ] dependencies = [ { name = "joblib", marker = "python_full_version < '3.10'" }, @@ -4583,20 +2511,13 @@ name = "scikit-learn" version = "1.7.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and sys_platform == 'darwin'", "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -4643,8 +2564,7 @@ source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", ] dependencies = [ { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, @@ -4682,8 +2602,7 @@ name = "scipy" version = "1.15.3" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and sys_platform == 'darwin'", "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -4744,16 +2663,10 @@ name = "scipy" version = "1.16.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -4800,32 +2713,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/eb/c4/231cac7a8385394ebbbb4f1ca662203e9d8c332825ab4f36ffc3ead09a42/scipy-1.16.0-cp313-cp313t-win_amd64.whl", hash = "sha256:f56296fefca67ba605fd74d12f7bd23636267731a72cb3947963e76b8c0a25db", size = 38515076, upload-time = "2025-06-22T16:21:45.694Z" }, ] -[[package]] -name = "seaborn" -version = "0.13.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "matplotlib", version = "3.9.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "matplotlib", version = "3.10.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, - { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, - { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, - { name = "pandas" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/86/59/a451d7420a77ab0b98f7affa3a1d78a313d2f7281a57afb1a34bae8ab412/seaborn-0.13.2.tar.gz", hash = "sha256:93e60a40988f4d65e9f4885df477e2fdaff6b73a9ded434c1ab356dd57eefff7", size = 1457696, upload-time = "2024-01-25T13:21:52.551Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/83/11/00d3c3dfc25ad54e731d91449895a79e4bf2384dc3ac01809010ba88f6d5/seaborn-0.13.2-py3-none-any.whl", hash = "sha256:636f8336facf092165e27924f223d3c62ca560b1f2bb5dff7ab7fad265361987", size = 294914, upload-time = "2024-01-25T13:21:49.598Z" }, -] - -[[package]] -name = "send2trash" -version = "1.8.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fd/3a/aec9b02217bb79b87bbc1a21bc6abc51e3d5dcf65c30487ac96c0908c722/Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf", size = 17394, upload-time = "2024-04-07T00:01:09.267Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/40/b0/4562db6223154aa4e22f939003cb92514c79f3d4dccca3444253fd17f902/Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9", size = 18072, upload-time = "2024-04-07T00:01:07.438Z" }, -] - [[package]] name = "setuptools" version = "80.9.0" @@ -4844,36 +2731,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, ] -[[package]] -name = "smart-open" -version = "7.3.0.post1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "wrapt" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/18/2b/5e7234c68ed5bc872ad6ae77b8a421c2ed70dcb1190b44dc1abdeed5e347/smart_open-7.3.0.post1.tar.gz", hash = "sha256:ce6a3d9bc1afbf6234ad13c010b77f8cd36d24636811e3c52c3b5160f5214d1e", size = 51557, upload-time = "2025-07-03T10:06:31.271Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/08/5b/a2a3d4514c64818925f4e886d39981f1926eeb5288a4549c6b3c17ed66bb/smart_open-7.3.0.post1-py3-none-any.whl", hash = "sha256:c73661a2c24bf045c1e04e08fffc585b59af023fe783d57896f590489db66fb4", size = 61946, upload-time = "2025-07-03T10:06:29.599Z" }, -] - -[[package]] -name = "sniffio" -version = "1.3.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372, upload-time = "2024-02-25T23:20:04.057Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235, upload-time = "2024-02-25T23:20:01.196Z" }, -] - -[[package]] -name = "soupsieve" -version = "2.7" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3f/f4/4a80cd6ef364b2e8b65b15816a843c0980f7a5a2b4dc701fc574952aa19f/soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a", size = 103418, upload-time = "2025-04-20T18:50:08.518Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677, upload-time = "2025-04-20T18:50:07.196Z" }, -] - [[package]] name = "stack-data" version = "0.6.3" @@ -4888,19 +2745,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521, upload-time = "2023-09-30T13:58:03.53Z" }, ] -[[package]] -name = "starlette" -version = "0.47.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "anyio" }, - { name = "typing-extensions", marker = "python_full_version < '3.13'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/0a/69/662169fdb92fb96ec3eaee218cf540a629d629c86d7993d9651226a6789b/starlette-0.47.1.tar.gz", hash = "sha256:aef012dd2b6be325ffa16698f9dc533614fb1cebd593a906b90dc1025529a79b", size = 2583072, upload-time = "2025-06-21T04:03:17.337Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/82/95/38ef0cd7fa11eaba6a99b3c4f5ac948d8bc6ff199aabd327a29cc000840c/starlette-0.47.1-py3-none-any.whl", hash = "sha256:5e11c9f5c7c3f24959edbf2dffdc01bba860228acf657129467d8a7468591527", size = 72747, upload-time = "2025-06-21T04:03:15.705Z" }, -] - [[package]] name = "sympy" version = "1.14.0" @@ -4920,8 +2764,7 @@ source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", ] dependencies = [ { name = "blosc2", version = "2.5.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, @@ -4955,8 +2798,7 @@ name = "tables" version = "3.10.1" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and sys_platform == 'darwin'", "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -4996,16 +2838,10 @@ name = "tables" version = "3.10.2" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -5036,36 +2872,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/63/ca/eaa029a43d269bdda6985931d6cfd479e876cd8cf7c887d818bef05ef03b/tables-3.10.2-cp313-cp313-win_amd64.whl", hash = "sha256:5637fdcded5ba5426aa24e0e42d6f990926a4da7f193830df131dfcb7e842900", size = 6385562, upload-time = "2025-01-04T20:44:08.196Z" }, ] -[[package]] -name = "tensorboardx" -version = "2.6.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, - { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, - { name = "packaging" }, - { name = "protobuf" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/2b/c5/d4cc6e293fb837aaf9f76dd7745476aeba8ef7ef5146c3b3f9ee375fe7a5/tensorboardx-2.6.4.tar.gz", hash = "sha256:b163ccb7798b31100b9f5fa4d6bc22dad362d7065c2f24b51e50731adde86828", size = 4769801, upload-time = "2025-06-10T22:37:07.419Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e0/1d/b5d63f1a6b824282b57f7b581810d20b7a28ca951f2d5b59f1eb0782c12b/tensorboardx-2.6.4-py3-none-any.whl", hash = "sha256:5970cf3a1f0a6a6e8b180ccf46f3fe832b8a25a70b86e5a237048a7c0beb18e2", size = 87201, upload-time = "2025-06-10T22:37:05.44Z" }, -] - -[[package]] -name = "terminado" -version = "0.18.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "ptyprocess", marker = "os_name != 'nt'" }, - { name = "pywinpty", marker = "(python_full_version < '3.10' and os_name == 'nt' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (os_name == 'nt' and platform_machine != 'aarch64' and sys_platform == 'linux') or (os_name == 'nt' and sys_platform != 'darwin' and sys_platform != 'linux')" }, - { name = "tornado" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/8a/11/965c6fd8e5cc254f1fe142d547387da17a8ebfd75a3455f637c663fb38a0/terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e", size = 32701, upload-time = "2024-03-12T14:34:39.026Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6a/9e/2064975477fdc887e47ad42157e214526dcad8f317a948dee17e1659a62f/terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0", size = 14154, upload-time = "2024-03-12T14:34:36.569Z" }, -] - [[package]] name = "threadpoolctl" version = "3.6.0" @@ -5075,78 +2881,26 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl", hash = "sha256:43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb", size = 18638, upload-time = "2025-03-13T13:49:21.846Z" }, ] -[[package]] -name = "tinycss2" -version = "1.4.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "webencodings" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/7a/fd/7a5ee21fd08ff70d3d33a5781c255cbe779659bd03278feb98b19ee550f4/tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7", size = 87085, upload-time = "2024-10-24T14:58:29.895Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289", size = 26610, upload-time = "2024-10-24T14:58:28.029Z" }, -] - -[[package]] -name = "tomli" -version = "2.2.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff", size = 17175, upload-time = "2024-11-27T22:38:36.873Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/43/ca/75707e6efa2b37c77dadb324ae7d9571cb424e61ea73fad7c56c2d14527f/tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249", size = 131077, upload-time = "2024-11-27T22:37:54.956Z" }, - { url = "https://files.pythonhosted.org/packages/c7/16/51ae563a8615d472fdbffc43a3f3d46588c264ac4f024f63f01283becfbb/tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6", size = 123429, upload-time = "2024-11-27T22:37:56.698Z" }, - { url = "https://files.pythonhosted.org/packages/f1/dd/4f6cd1e7b160041db83c694abc78e100473c15d54620083dbd5aae7b990e/tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a", size = 226067, upload-time = "2024-11-27T22:37:57.63Z" }, - { url = "https://files.pythonhosted.org/packages/a9/6b/c54ede5dc70d648cc6361eaf429304b02f2871a345bbdd51e993d6cdf550/tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee", size = 236030, upload-time = "2024-11-27T22:37:59.344Z" }, - { url = "https://files.pythonhosted.org/packages/1f/47/999514fa49cfaf7a92c805a86c3c43f4215621855d151b61c602abb38091/tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e", size = 240898, upload-time = "2024-11-27T22:38:00.429Z" }, - { url = "https://files.pythonhosted.org/packages/73/41/0a01279a7ae09ee1573b423318e7934674ce06eb33f50936655071d81a24/tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4", size = 229894, upload-time = "2024-11-27T22:38:02.094Z" }, - { url = "https://files.pythonhosted.org/packages/55/18/5d8bc5b0a0362311ce4d18830a5d28943667599a60d20118074ea1b01bb7/tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106", size = 245319, upload-time = "2024-11-27T22:38:03.206Z" }, - { url = "https://files.pythonhosted.org/packages/92/a3/7ade0576d17f3cdf5ff44d61390d4b3febb8a9fc2b480c75c47ea048c646/tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8", size = 238273, upload-time = "2024-11-27T22:38:04.217Z" }, - { url = "https://files.pythonhosted.org/packages/72/6f/fa64ef058ac1446a1e51110c375339b3ec6be245af9d14c87c4a6412dd32/tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff", size = 98310, upload-time = "2024-11-27T22:38:05.908Z" }, - { url = "https://files.pythonhosted.org/packages/6a/1c/4a2dcde4a51b81be3530565e92eda625d94dafb46dbeb15069df4caffc34/tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b", size = 108309, upload-time = "2024-11-27T22:38:06.812Z" }, - { url = "https://files.pythonhosted.org/packages/52/e1/f8af4c2fcde17500422858155aeb0d7e93477a0d59a98e56cbfe75070fd0/tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea", size = 132762, upload-time = "2024-11-27T22:38:07.731Z" }, - { url = "https://files.pythonhosted.org/packages/03/b8/152c68bb84fc00396b83e7bbddd5ec0bd3dd409db4195e2a9b3e398ad2e3/tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8", size = 123453, upload-time = "2024-11-27T22:38:09.384Z" }, - { url = "https://files.pythonhosted.org/packages/c8/d6/fc9267af9166f79ac528ff7e8c55c8181ded34eb4b0e93daa767b8841573/tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192", size = 233486, upload-time = "2024-11-27T22:38:10.329Z" }, - { url = "https://files.pythonhosted.org/packages/5c/51/51c3f2884d7bab89af25f678447ea7d297b53b5a3b5730a7cb2ef6069f07/tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222", size = 242349, upload-time = "2024-11-27T22:38:11.443Z" }, - { url = "https://files.pythonhosted.org/packages/ab/df/bfa89627d13a5cc22402e441e8a931ef2108403db390ff3345c05253935e/tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77", size = 252159, upload-time = "2024-11-27T22:38:13.099Z" }, - { url = "https://files.pythonhosted.org/packages/9e/6e/fa2b916dced65763a5168c6ccb91066f7639bdc88b48adda990db10c8c0b/tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6", size = 237243, upload-time = "2024-11-27T22:38:14.766Z" }, - { url = "https://files.pythonhosted.org/packages/b4/04/885d3b1f650e1153cbb93a6a9782c58a972b94ea4483ae4ac5cedd5e4a09/tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd", size = 259645, upload-time = "2024-11-27T22:38:15.843Z" }, - { url = "https://files.pythonhosted.org/packages/9c/de/6b432d66e986e501586da298e28ebeefd3edc2c780f3ad73d22566034239/tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e", size = 244584, upload-time = "2024-11-27T22:38:17.645Z" }, - { url = "https://files.pythonhosted.org/packages/1c/9a/47c0449b98e6e7d1be6cbac02f93dd79003234ddc4aaab6ba07a9a7482e2/tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98", size = 98875, upload-time = "2024-11-27T22:38:19.159Z" }, - { url = "https://files.pythonhosted.org/packages/ef/60/9b9638f081c6f1261e2688bd487625cd1e660d0a85bd469e91d8db969734/tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4", size = 109418, upload-time = "2024-11-27T22:38:20.064Z" }, - { url = "https://files.pythonhosted.org/packages/04/90/2ee5f2e0362cb8a0b6499dc44f4d7d48f8fff06d28ba46e6f1eaa61a1388/tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7", size = 132708, upload-time = "2024-11-27T22:38:21.659Z" }, - { url = "https://files.pythonhosted.org/packages/c0/ec/46b4108816de6b385141f082ba99e315501ccd0a2ea23db4a100dd3990ea/tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c", size = 123582, upload-time = "2024-11-27T22:38:22.693Z" }, - { url = "https://files.pythonhosted.org/packages/a0/bd/b470466d0137b37b68d24556c38a0cc819e8febe392d5b199dcd7f578365/tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13", size = 232543, upload-time = "2024-11-27T22:38:24.367Z" }, - { url = "https://files.pythonhosted.org/packages/d9/e5/82e80ff3b751373f7cead2815bcbe2d51c895b3c990686741a8e56ec42ab/tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281", size = 241691, upload-time = "2024-11-27T22:38:26.081Z" }, - { url = "https://files.pythonhosted.org/packages/05/7e/2a110bc2713557d6a1bfb06af23dd01e7dde52b6ee7dadc589868f9abfac/tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272", size = 251170, upload-time = "2024-11-27T22:38:27.921Z" }, - { url = "https://files.pythonhosted.org/packages/64/7b/22d713946efe00e0adbcdfd6d1aa119ae03fd0b60ebed51ebb3fa9f5a2e5/tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140", size = 236530, upload-time = "2024-11-27T22:38:29.591Z" }, - { url = "https://files.pythonhosted.org/packages/38/31/3a76f67da4b0cf37b742ca76beaf819dca0ebef26d78fc794a576e08accf/tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2", size = 258666, upload-time = "2024-11-27T22:38:30.639Z" }, - { url = "https://files.pythonhosted.org/packages/07/10/5af1293da642aded87e8a988753945d0cf7e00a9452d3911dd3bb354c9e2/tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744", size = 243954, upload-time = "2024-11-27T22:38:31.702Z" }, - { url = "https://files.pythonhosted.org/packages/5b/b9/1ed31d167be802da0fc95020d04cd27b7d7065cc6fbefdd2f9186f60d7bd/tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec", size = 98724, upload-time = "2024-11-27T22:38:32.837Z" }, - { url = "https://files.pythonhosted.org/packages/c7/32/b0963458706accd9afcfeb867c0f9175a741bf7b19cd424230714d722198/tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69", size = 109383, upload-time = "2024-11-27T22:38:34.455Z" }, - { url = "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", size = 14257, upload-time = "2024-11-27T22:38:35.385Z" }, -] - [[package]] name = "torch" version = "2.7.1" source = { registry = "https://download.pytorch.org/whl/cpu" } resolution-markers = [ - "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and sys_platform == 'darwin'", "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", ] dependencies = [ - { name = "filelock", marker = "(python_full_version >= '3.10' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, - { name = "fsspec", marker = "(python_full_version >= '3.10' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, - { name = "jinja2", marker = "(python_full_version >= '3.10' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, + { name = "filelock", marker = "(python_full_version >= '3.10' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, + { name = "fsspec", marker = "(python_full_version >= '3.10' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, + { name = "jinja2", marker = "(python_full_version >= '3.10' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, { name = "networkx", version = "3.2.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'" }, - { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'" }, - { name = "networkx", version = "3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and platform_machine != 'x86_64' and sys_platform == 'darwin'" }, - { name = "setuptools", marker = "python_full_version >= '3.12' and platform_machine != 'x86_64' and sys_platform == 'darwin'" }, - { name = "sympy", marker = "(python_full_version >= '3.10' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, - { name = "typing-extensions", marker = "(python_full_version >= '3.10' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, + { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*' and sys_platform == 'darwin'" }, + { name = "networkx", version = "3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, + { name = "setuptools", marker = "python_full_version >= '3.12' and sys_platform == 'darwin'" }, + { name = "sympy", marker = "(python_full_version >= '3.10' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, + { name = "typing-extensions", marker = "(python_full_version >= '3.10' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, ] wheels = [ { url = "https://download.pytorch.org/whl/cpu/torch-2.7.1-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:f8c3bee261b0c8e090f6347490dc6ee2aebfd661eb0f3f6aeae06d992d8ed56f" }, @@ -5162,32 +2916,25 @@ name = "torch" version = "2.7.1+cpu" source = { registry = "https://download.pytorch.org/whl/cpu" } resolution-markers = [ - "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", ] dependencies = [ - { name = "filelock", marker = "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64') or platform_machine == 'x86_64' or sys_platform != 'darwin'" }, - { name = "fsspec", marker = "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64') or platform_machine == 'x86_64' or sys_platform != 'darwin'" }, - { name = "jinja2", marker = "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64') or platform_machine == 'x86_64' or sys_platform != 'darwin'" }, + { name = "filelock", marker = "(python_full_version < '3.10' and platform_machine != 'arm64') or sys_platform != 'darwin'" }, + { name = "fsspec", marker = "(python_full_version < '3.10' and platform_machine != 'arm64') or sys_platform != 'darwin'" }, + { name = "jinja2", marker = "(python_full_version < '3.10' and platform_machine != 'arm64') or sys_platform != 'darwin'" }, { name = "networkx", version = "3.2.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.10' and platform_machine != 'arm64') or (python_full_version < '3.10' and sys_platform != 'darwin')" }, - { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version == '3.10.*' and platform_machine == 'x86_64') or (python_full_version == '3.10.*' and sys_platform != 'darwin')" }, - { name = "networkx", version = "3.5", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and platform_machine == 'x86_64') or (python_full_version >= '3.11' and sys_platform != 'darwin')" }, - { name = "setuptools", marker = "(python_full_version >= '3.12' and platform_machine == 'x86_64') or (python_full_version >= '3.12' and sys_platform != 'darwin')" }, - { name = "sympy", marker = "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64') or platform_machine == 'x86_64' or sys_platform != 'darwin'" }, - { name = "typing-extensions", marker = "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64') or platform_machine == 'x86_64' or sys_platform != 'darwin'" }, + { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*' and sys_platform != 'darwin'" }, + { name = "networkx", version = "3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform != 'darwin'" }, + { name = "setuptools", marker = "python_full_version >= '3.12' and sys_platform != 'darwin'" }, + { name = "sympy", marker = "(python_full_version < '3.10' and platform_machine != 'arm64') or sys_platform != 'darwin'" }, + { name = "typing-extensions", marker = "(python_full_version < '3.10' and platform_machine != 'arm64') or sys_platform != 'darwin'" }, ] wheels = [ { url = "https://download.pytorch.org/whl/cpu/torch-2.7.1%2Bcpu-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:c0df17cee97653d09a4e84488a33d21217f9b24208583c55cf28f0045aab0766" }, @@ -5210,136 +2957,6 @@ wheels = [ { url = "https://download.pytorch.org/whl/cpu/torch-2.7.1%2Bcpu-cp39-cp39-win_amd64.whl", hash = "sha256:d25435bdc4780d3cb512aad55142aca9584ae1fe8f8691cda6d32f19faf5d58e" }, ] -[[package]] -name = "torchaudio" -version = "2.7.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "torch", version = "2.7.1", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version >= '3.10' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, - { name = "torch", version = "2.7.1+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64') or platform_machine == 'x86_64' or sys_platform != 'darwin'" }, -] -wheels = [ - { url = "https://files.pythonhosted.org/packages/da/71/bfc6d2b28ede6c4c5446901cfa4d98fa25b2606eb12e641baccec16fcde0/torchaudio-2.7.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4739af57d0eb94347d1c6a1b5668be78a7383afe826dde18a04883b9f9f263b1", size = 1842457, upload-time = "2025-06-04T17:44:12.073Z" }, - { url = "https://files.pythonhosted.org/packages/e6/8c/35eea5138ccd4abf38b163743d5ab4a8b25349bafa8bdf3d629e7f3036b9/torchaudio-2.7.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:c089dbfc14c5f47091b7bf3f6bf2bbac93b86619299d04d9c102f4ad53758990", size = 1680682, upload-time = "2025-06-04T17:44:11.056Z" }, - { url = "https://files.pythonhosted.org/packages/7d/dc/7569889c1fc95ebf18b0295bc4fdebafbbb89ba9e0018c7e9b0844bae011/torchaudio-2.7.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:6bb1e6db22fa2aad6b89b2a455ec5c6dc31df2635dbfafa213394f8b07b09516", size = 3498891, upload-time = "2025-06-04T17:43:52.161Z" }, - { url = "https://files.pythonhosted.org/packages/b3/e0/ff0ac4234798a0b6b1398fa878a2e7d22f1d06d4327feb312d9e77e079bd/torchaudio-2.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:2ba4df6e3ad35cb1e5bd162cf86b492526138f6476f5a06b10725b8880c618eb", size = 2483343, upload-time = "2025-06-04T17:43:57.779Z" }, - { url = "https://files.pythonhosted.org/packages/85/a2/52e6760d352584ae1ab139d97647bdc51d1eb7d480b688fe69c72616c956/torchaudio-2.7.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d5a62f88c629035913f506df03f710c48fc8bb9637191933f27c67088d5ca136", size = 1849254, upload-time = "2025-06-04T17:44:05.392Z" }, - { url = "https://files.pythonhosted.org/packages/df/e6/0f3835895f9d0b8900ca4a7196932b13b74156ad9ffb76e7aacfc5bb4157/torchaudio-2.7.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:53bc4ba12e7468be34a7ca2ee837ee5c8bd5755b25c12f665af9339cae37e265", size = 1686156, upload-time = "2025-06-04T17:44:09.39Z" }, - { url = "https://files.pythonhosted.org/packages/0d/c5/8ba8869ac5607bbd83ea864bda2c628f8b7b55a9200f8147687995e95a49/torchaudio-2.7.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:f8bd69354a397753b9dea9699d9e1251f8496fbbdf3028c7086a57a615bf33c3", size = 3508053, upload-time = "2025-06-04T17:43:49.398Z" }, - { url = "https://files.pythonhosted.org/packages/78/cc/11709b2cbf841eda124918523088d9aaa1509ae4400f346192037e6de6c6/torchaudio-2.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:0ae0678ad27355eebea5a9fdd9ae9bfec444f8405f9b6c60026905ba3665c43a", size = 2488974, upload-time = "2025-06-04T17:44:04.294Z" }, - { url = "https://files.pythonhosted.org/packages/0b/d1/eb8bc3b3502dddb1b789567b7b19668b1d32817266887b9f381494cfe463/torchaudio-2.7.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9306dcfc4586cebd7647a93fe9a448e791c4f83934da616b9433b75597a1f978", size = 1846897, upload-time = "2025-06-04T17:44:07.79Z" }, - { url = "https://files.pythonhosted.org/packages/62/7d/6c15f15d3edc5271abc808f70713644b50f0f7bfb85a09dba8b5735fbad3/torchaudio-2.7.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:d66bd76b226fdd4135c97650e1b7eb63fb7659b4ed0e3a778898e41dbba21b61", size = 1686680, upload-time = "2025-06-04T17:43:58.986Z" }, - { url = "https://files.pythonhosted.org/packages/48/65/0f46ba74cdc67ea9a8c37c8acfb5194d81639e481e85903c076bcd97188c/torchaudio-2.7.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:9cbcdaab77ad9a73711acffee58f4eebc8a0685289a938a3fa6f660af9489aee", size = 3506966, upload-time = "2025-06-04T17:44:06.537Z" }, - { url = "https://files.pythonhosted.org/packages/52/29/06f887baf22cbba85ae331b71b110b115bf11b3968f5914a50c17dde5ab7/torchaudio-2.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:9cfb8f6ace8e01e2b89de74eb893ba5ce936b88b415383605b0a4d974009dec7", size = 2484265, upload-time = "2025-06-04T17:44:00.277Z" }, - { url = "https://files.pythonhosted.org/packages/b6/ee/6e308868b9467e1b51da9d781cb73dd5aadca7c8b6256f88ce5d18a7fb77/torchaudio-2.7.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e5f0599a507f4683546878ed9667e1b32d7ca3c8a957e4c15c6b302378ef4dee", size = 1847208, upload-time = "2025-06-04T17:44:01.365Z" }, - { url = "https://files.pythonhosted.org/packages/3a/f9/ca0e0960526e6deaa476d168b877480a3fbae5d44668a54de963a9800097/torchaudio-2.7.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:271f717844e5c7f9e05c8328de817bf90f46d83281c791e94f54d4edea2f5817", size = 1686311, upload-time = "2025-06-04T17:44:02.785Z" }, - { url = "https://files.pythonhosted.org/packages/bb/ab/83f282ca5475ae34c58520a4a97b6d69438bc699d70d16432deb19791cda/torchaudio-2.7.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:1862b063d8d4e55cb4862bcbd63568545f549825a3c5605bd312224c3ebb1919", size = 3507174, upload-time = "2025-06-04T17:43:46.526Z" }, - { url = "https://files.pythonhosted.org/packages/12/91/dbd17a6eda4b0504d9b4f1f721a1654456e39f7178b8462344f942100865/torchaudio-2.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:edb4deaa6f95acd5522912ed643303d0b86d79a6f15914362f5a5d49baaf5d13", size = 2484503, upload-time = "2025-06-04T17:43:48.169Z" }, - { url = "https://files.pythonhosted.org/packages/73/5e/da52d2fa9f7cc89512b63dd8a88fb3e097a89815f440cc16159b216ec611/torchaudio-2.7.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:18560955b8beb2a8d39a6bfae20a442337afcefb3dfd4ee007ce82233a796799", size = 1929983, upload-time = "2025-06-04T17:43:56.659Z" }, - { url = "https://files.pythonhosted.org/packages/f7/16/9d03dc62613f276f9666eb0609164287df23986b67d20b53e78d21a3d8d8/torchaudio-2.7.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:1850475ef9101ea0b3593fe93ff6ee4e7a20598f6da6510761220b9fe56eb7fa", size = 1700436, upload-time = "2025-06-04T17:43:55.589Z" }, - { url = "https://files.pythonhosted.org/packages/83/45/57a437fe41b302fc79b4eb78fdb3e480ff42c66270e7505eedf0b000969c/torchaudio-2.7.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:98257fc14dd493ba5a3258fb6d61d27cd64a48ee79537c3964c4da26b9bf295f", size = 3521631, upload-time = "2025-06-04T17:43:50.628Z" }, - { url = "https://files.pythonhosted.org/packages/91/5e/9262a7e41e47bc87eb245c4fc485eb26ff41a05886b241c003440c9e0107/torchaudio-2.7.1-cp313-cp313t-win_amd64.whl", hash = "sha256:c802e0dcbf38669007327bb52f065573cc5cac106eaca987f6e1a32e6282263a", size = 2534956, upload-time = "2025-06-04T17:43:42.324Z" }, - { url = "https://files.pythonhosted.org/packages/3b/67/82ee183a867d5138b594a5c07be403d8efd0e010b3ea8a7e135058e965cd/torchaudio-2.7.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a07100fe2cf7af4fa69d8cb046a2b74046612621a1a548afa5af1c69e02eaf81", size = 1843193, upload-time = "2025-06-04T17:43:54.418Z" }, - { url = "https://files.pythonhosted.org/packages/a5/57/6f7c8b9c00970248498152549f004587db0a83e6caad0025c9723994ffc9/torchaudio-2.7.1-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:e8b2da11a7f7782b00b823c99e812eb00ee8b3455ad474f8fd42a0da0bc4f46a", size = 1681224, upload-time = "2025-06-04T17:43:53.36Z" }, - { url = "https://files.pythonhosted.org/packages/37/7b/0bf5da00d883b241bd4986e2d26dc1aabd16cc860c4c5d4bc9237e6350c3/torchaudio-2.7.1-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:9ce8aed225d5ce65705d30f6ef8e457d329fe6ea0b8729ad953ba99e87da264e", size = 3502377, upload-time = "2025-06-04T17:43:44.992Z" }, - { url = "https://files.pythonhosted.org/packages/26/99/00764e98c82d0b48a1e1fd059a0f10cf1bec741013a7e9c05077bd1fd481/torchaudio-2.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:30e21f043f5cc50f703c2cf0de75633e2c720227f9bf848ffc9b8b987871b3fc", size = 2477692, upload-time = "2025-06-04T17:43:43.799Z" }, -] - -[[package]] -name = "torchmetrics" -version = "1.7.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "lightning-utilities" }, - { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, - { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, - { name = "packaging" }, - { name = "torch", version = "2.7.1", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version >= '3.10' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, - { name = "torch", version = "2.7.1+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64') or platform_machine == 'x86_64' or sys_platform != 'darwin'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/96/80/bcf680d3d7de7646707884ed7ce0859c83be33380239971a97255147184f/torchmetrics-1.7.4.tar.gz", hash = "sha256:506a1a5c7c304cd77ba323ca4b009e46b814fd2be9dcf0f4ccc2e5c0f5b4b0c1", size = 567802, upload-time = "2025-07-05T12:28:42.02Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/70/19/2d8db70030d3472dad5d49136770af949f5ed597df2c1a6a509dadc5d57d/torchmetrics-1.7.4-py3-none-any.whl", hash = "sha256:9298ad0e893b0cf2956bee95b0f7eecdc65205ab84ddb4f6762eff157c240518", size = 963504, upload-time = "2025-07-05T12:28:39.827Z" }, -] - -[[package]] -name = "torchvision" -version = "0.22.1" -source = { registry = "https://download.pytorch.org/whl/cpu" } -resolution-markers = [ - "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", - "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", -] -dependencies = [ - { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux')" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux')" }, - { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version >= '3.11' and platform_machine == 'aarch64' and sys_platform == 'linux')" }, - { name = "pillow", marker = "(python_full_version >= '3.10' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin') or (platform_machine == 'aarch64' and sys_platform == 'linux')" }, - { name = "torch", version = "2.7.1", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version >= '3.10' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, - { name = "torch", version = "2.7.1+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "platform_machine == 'aarch64' and sys_platform == 'linux'" }, -] -wheels = [ - { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3b47d8369ee568c067795c0da0b4078f39a9dfea6f3bc1f3ac87530dfda1dd56" }, - { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:990de4d657a41ed71680cd8be2e98ebcab55371f30993dc9bd2e676441f7180e" }, - { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4addf626e2b57fc22fd6d329cf1346d474497672e6af8383b7b5b636fba94a53" }, - { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:8b4a53a6067d63adba0c52f2b8dd2290db649d642021674ee43c0c922f0c6a69" }, - { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:153f1790e505bd6da123e21eee6e83e2e155df05c0fe7d56347303067d8543c5" }, - { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:964414eef19459d55a10e886e2fca50677550e243586d1678f65e3f6f6bac47a" }, - { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9c3ae3319624c43cc8127020f46c14aa878406781f0899bb6283ae474afeafbf" }, - { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:4a614a6a408d2ed74208d0ea6c28a2fbb68290e9a7df206c5fef3f0b6865d307" }, - { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:043d9e35ed69c2e586aff6eb9e2887382e7863707115668ac9d140da58f42cba" }, - { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:27142bcc8a984227a6dcf560985e83f52b82a7d3f5fe9051af586a2ccc46ef26" }, - { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8be941b4d35c0aba819be70fdbbbed8ceb60401ce6996b8cfaaba1300ce62263" }, - { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:154a2bdc37a16122c2024f2f77e65f5986020b40c013515c694b5d357fac99a1" }, -] - -[[package]] -name = "torchvision" -version = "0.22.1+cpu" -source = { registry = "https://download.pytorch.org/whl/cpu" } -resolution-markers = [ - "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", - "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", -] -dependencies = [ - { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin') or (python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')" }, - { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and platform_machine == 'x86_64' and sys_platform == 'darwin') or (python_full_version >= '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.11' and sys_platform != 'darwin' and sys_platform != 'linux')" }, - { name = "pillow", marker = "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (platform_machine == 'x86_64' and sys_platform == 'darwin') or (platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" }, - { name = "torch", version = "2.7.1+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (platform_machine == 'x86_64' and sys_platform == 'darwin') or (platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" }, -] -wheels = [ - { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1%2Bcpu-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:e31f1273a8dd9760906288036ac3c8f5fef25eed393da0491db150d7be78910d" }, - { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1%2Bcpu-cp310-cp310-win_amd64.whl", hash = "sha256:445e442b94c365f7fd96596347c8a5a7fcfcbfca17a23baa8c9dcc8cb00fceee" }, - { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1%2Bcpu-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:4e0cbc165a472605d0c13da68ae22e84b17a6b815d5e600834777823e1bcb658" }, - { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1%2Bcpu-cp311-cp311-win_amd64.whl", hash = "sha256:9482adee074f60a45fd69892f7488281aadfda7836948c94b0a9b0caf55d1d67" }, - { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1%2Bcpu-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b5fa7044bd82c6358e8229351c98070cf3a7bf4a6e89ea46352ae6c65745ef94" }, - { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1%2Bcpu-cp312-cp312-win_amd64.whl", hash = "sha256:433cb4dbced7291f17064cea08ac1e5aebd02ec190e1c207d117ad62a8961f2b" }, - { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1%2Bcpu-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:a93c21f18c33a819616b3dda7655aa4de40b219682c654175b6bbeb65ecc2e5f" }, - { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1%2Bcpu-cp313-cp313-win_amd64.whl", hash = "sha256:34c914ad4728b81848ac802c5fc5eeb8de8ff4058cc59c1463a74ce4f4fbf0d8" }, - { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1%2Bcpu-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:ab7ae82529887c704c1b5d1d5198f65dc777d04fc3858b374503a6deedb82b19" }, - { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1%2Bcpu-cp313-cp313t-win_amd64.whl", hash = "sha256:b2d1c4bdbfd8e6c779dc810a6171b56224f1332fc46986810d4081bed1633804" }, - { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1%2Bcpu-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:c852e61bc903351169017e2e96389f28f6cfb52ca7c3945acceb31e7fe1b21e6" }, - { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1%2Bcpu-cp39-cp39-win_amd64.whl", hash = "sha256:99788dd0d97ac8cdf25c74481e869e298626ffd8d6532defff6711f60516c88a" }, -] - [[package]] name = "tornado" version = "6.5.1" @@ -5380,15 +2997,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359, upload-time = "2024-04-19T11:11:46.763Z" }, ] -[[package]] -name = "types-python-dateutil" -version = "2.9.0.20250708" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c9/95/6bdde7607da2e1e99ec1c1672a759d42f26644bbacf939916e086db34870/types_python_dateutil-2.9.0.20250708.tar.gz", hash = "sha256:ccdbd75dab2d6c9696c350579f34cffe2c281e4c5f27a585b2a2438dd1d5c8ab", size = 15834, upload-time = "2025-07-08T03:14:03.382Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/72/52/43e70a8e57fefb172c22a21000b03ebcc15e47e97f5cb8495b9c2832efb4/types_python_dateutil-2.9.0.20250708-py3-none-any.whl", hash = "sha256:4d6d0cc1cc4d24a2dc3816024e502564094497b713f7befda4d5bc7a8e3fd21f", size = 17724, upload-time = "2025-07-08T03:14:02.593Z" }, -] - [[package]] name = "typing-extensions" version = "4.14.1" @@ -5398,18 +3006,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b5/00/d631e67a838026495268c2f6884f3711a15a9a2a96cd244fdaea53b823fb/typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76", size = 43906, upload-time = "2025-07-04T13:28:32.743Z" }, ] -[[package]] -name = "typing-inspection" -version = "0.4.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726, upload-time = "2025-05-21T18:55:23.885Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552, upload-time = "2025-05-21T18:55:22.152Z" }, -] - [[package]] name = "tzdata" version = "2025.2" @@ -5419,15 +3015,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839, upload-time = "2025-03-23T13:54:41.845Z" }, ] -[[package]] -name = "uri-template" -version = "1.3.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/31/c7/0336f2bd0bcbada6ccef7aaa25e443c118a704f828a0620c6fa0207c1b64/uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7", size = 21678, upload-time = "2023-06-21T01:49:05.374Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363", size = 11140, upload-time = "2023-06-21T01:49:03.467Z" }, -] - [[package]] name = "urllib3" version = "2.5.0" @@ -5437,200 +3024,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795, upload-time = "2025-06-18T14:07:40.39Z" }, ] -[[package]] -name = "uvicorn" -version = "0.35.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "click", version = "8.1.8", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "click", version = "8.2.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, - { name = "h11" }, - { name = "typing-extensions", marker = "python_full_version < '3.11'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/5e/42/e0e305207bb88c6b8d3061399c6a961ffe5fbb7e2aa63c9234df7259e9cd/uvicorn-0.35.0.tar.gz", hash = "sha256:bc662f087f7cf2ce11a1d7fd70b90c9f98ef2e2831556dd078d131b96cc94a01", size = 78473, upload-time = "2025-06-28T16:15:46.058Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d2/e2/dc81b1bd1dcfe91735810265e9d26bc8ec5da45b4c0f6237e286819194c3/uvicorn-0.35.0-py3-none-any.whl", hash = "sha256:197535216b25ff9b785e29a0b79199f55222193d47f820816e7da751e9bc8d4a", size = 66406, upload-time = "2025-06-28T16:15:44.816Z" }, -] - -[package.optional-dependencies] -standard = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, - { name = "httptools" }, - { name = "python-dotenv" }, - { name = "pyyaml" }, - { name = "uvloop", marker = "platform_python_implementation != 'PyPy' and sys_platform != 'cygwin' and sys_platform != 'win32'" }, - { name = "watchfiles" }, - { name = "websockets" }, -] - -[[package]] -name = "uvloop" -version = "0.21.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/af/c0/854216d09d33c543f12a44b393c402e89a920b1a0a7dc634c42de91b9cf6/uvloop-0.21.0.tar.gz", hash = "sha256:3bf12b0fda68447806a7ad847bfa591613177275d35b6724b1ee573faa3704e3", size = 2492741, upload-time = "2024-10-14T23:38:35.489Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3d/76/44a55515e8c9505aa1420aebacf4dd82552e5e15691654894e90d0bd051a/uvloop-0.21.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ec7e6b09a6fdded42403182ab6b832b71f4edaf7f37a9a0e371a01db5f0cb45f", size = 1442019, upload-time = "2024-10-14T23:37:20.068Z" }, - { url = "https://files.pythonhosted.org/packages/35/5a/62d5800358a78cc25c8a6c72ef8b10851bdb8cca22e14d9c74167b7f86da/uvloop-0.21.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:196274f2adb9689a289ad7d65700d37df0c0930fd8e4e743fa4834e850d7719d", size = 801898, upload-time = "2024-10-14T23:37:22.663Z" }, - { url = "https://files.pythonhosted.org/packages/f3/96/63695e0ebd7da6c741ccd4489b5947394435e198a1382349c17b1146bb97/uvloop-0.21.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f38b2e090258d051d68a5b14d1da7203a3c3677321cf32a95a6f4db4dd8b6f26", size = 3827735, upload-time = "2024-10-14T23:37:25.129Z" }, - { url = "https://files.pythonhosted.org/packages/61/e0/f0f8ec84979068ffae132c58c79af1de9cceeb664076beea86d941af1a30/uvloop-0.21.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87c43e0f13022b998eb9b973b5e97200c8b90823454d4bc06ab33829e09fb9bb", size = 3825126, upload-time = "2024-10-14T23:37:27.59Z" }, - { url = "https://files.pythonhosted.org/packages/bf/fe/5e94a977d058a54a19df95f12f7161ab6e323ad49f4dabc28822eb2df7ea/uvloop-0.21.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:10d66943def5fcb6e7b37310eb6b5639fd2ccbc38df1177262b0640c3ca68c1f", size = 3705789, upload-time = "2024-10-14T23:37:29.385Z" }, - { url = "https://files.pythonhosted.org/packages/26/dd/c7179618e46092a77e036650c1f056041a028a35c4d76945089fcfc38af8/uvloop-0.21.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:67dd654b8ca23aed0a8e99010b4c34aca62f4b7fce88f39d452ed7622c94845c", size = 3800523, upload-time = "2024-10-14T23:37:32.048Z" }, - { url = "https://files.pythonhosted.org/packages/57/a7/4cf0334105c1160dd6819f3297f8700fda7fc30ab4f61fbf3e725acbc7cc/uvloop-0.21.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c0f3fa6200b3108919f8bdabb9a7f87f20e7097ea3c543754cabc7d717d95cf8", size = 1447410, upload-time = "2024-10-14T23:37:33.612Z" }, - { url = "https://files.pythonhosted.org/packages/8c/7c/1517b0bbc2dbe784b563d6ab54f2ef88c890fdad77232c98ed490aa07132/uvloop-0.21.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0878c2640cf341b269b7e128b1a5fed890adc4455513ca710d77d5e93aa6d6a0", size = 805476, upload-time = "2024-10-14T23:37:36.11Z" }, - { url = "https://files.pythonhosted.org/packages/ee/ea/0bfae1aceb82a503f358d8d2fa126ca9dbdb2ba9c7866974faec1cb5875c/uvloop-0.21.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9fb766bb57b7388745d8bcc53a359b116b8a04c83a2288069809d2b3466c37e", size = 3960855, upload-time = "2024-10-14T23:37:37.683Z" }, - { url = "https://files.pythonhosted.org/packages/8a/ca/0864176a649838b838f36d44bf31c451597ab363b60dc9e09c9630619d41/uvloop-0.21.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a375441696e2eda1c43c44ccb66e04d61ceeffcd76e4929e527b7fa401b90fb", size = 3973185, upload-time = "2024-10-14T23:37:40.226Z" }, - { url = "https://files.pythonhosted.org/packages/30/bf/08ad29979a936d63787ba47a540de2132169f140d54aa25bc8c3df3e67f4/uvloop-0.21.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:baa0e6291d91649c6ba4ed4b2f982f9fa165b5bbd50a9e203c416a2797bab3c6", size = 3820256, upload-time = "2024-10-14T23:37:42.839Z" }, - { url = "https://files.pythonhosted.org/packages/da/e2/5cf6ef37e3daf2f06e651aae5ea108ad30df3cb269102678b61ebf1fdf42/uvloop-0.21.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4509360fcc4c3bd2c70d87573ad472de40c13387f5fda8cb58350a1d7475e58d", size = 3937323, upload-time = "2024-10-14T23:37:45.337Z" }, - { url = "https://files.pythonhosted.org/packages/8c/4c/03f93178830dc7ce8b4cdee1d36770d2f5ebb6f3d37d354e061eefc73545/uvloop-0.21.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:359ec2c888397b9e592a889c4d72ba3d6befba8b2bb01743f72fffbde663b59c", size = 1471284, upload-time = "2024-10-14T23:37:47.833Z" }, - { url = "https://files.pythonhosted.org/packages/43/3e/92c03f4d05e50f09251bd8b2b2b584a2a7f8fe600008bcc4523337abe676/uvloop-0.21.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f7089d2dc73179ce5ac255bdf37c236a9f914b264825fdaacaded6990a7fb4c2", size = 821349, upload-time = "2024-10-14T23:37:50.149Z" }, - { url = "https://files.pythonhosted.org/packages/a6/ef/a02ec5da49909dbbfb1fd205a9a1ac4e88ea92dcae885e7c961847cd51e2/uvloop-0.21.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:baa4dcdbd9ae0a372f2167a207cd98c9f9a1ea1188a8a526431eef2f8116cc8d", size = 4580089, upload-time = "2024-10-14T23:37:51.703Z" }, - { url = "https://files.pythonhosted.org/packages/06/a7/b4e6a19925c900be9f98bec0a75e6e8f79bb53bdeb891916609ab3958967/uvloop-0.21.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86975dca1c773a2c9864f4c52c5a55631038e387b47eaf56210f873887b6c8dc", size = 4693770, upload-time = "2024-10-14T23:37:54.122Z" }, - { url = "https://files.pythonhosted.org/packages/ce/0c/f07435a18a4b94ce6bd0677d8319cd3de61f3a9eeb1e5f8ab4e8b5edfcb3/uvloop-0.21.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:461d9ae6660fbbafedd07559c6a2e57cd553b34b0065b6550685f6653a98c1cb", size = 4451321, upload-time = "2024-10-14T23:37:55.766Z" }, - { url = "https://files.pythonhosted.org/packages/8f/eb/f7032be105877bcf924709c97b1bf3b90255b4ec251f9340cef912559f28/uvloop-0.21.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:183aef7c8730e54c9a3ee3227464daed66e37ba13040bb3f350bc2ddc040f22f", size = 4659022, upload-time = "2024-10-14T23:37:58.195Z" }, - { url = "https://files.pythonhosted.org/packages/3f/8d/2cbef610ca21539f0f36e2b34da49302029e7c9f09acef0b1c3b5839412b/uvloop-0.21.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:bfd55dfcc2a512316e65f16e503e9e450cab148ef11df4e4e679b5e8253a5281", size = 1468123, upload-time = "2024-10-14T23:38:00.688Z" }, - { url = "https://files.pythonhosted.org/packages/93/0d/b0038d5a469f94ed8f2b2fce2434a18396d8fbfb5da85a0a9781ebbdec14/uvloop-0.21.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:787ae31ad8a2856fc4e7c095341cccc7209bd657d0e71ad0dc2ea83c4a6fa8af", size = 819325, upload-time = "2024-10-14T23:38:02.309Z" }, - { url = "https://files.pythonhosted.org/packages/50/94/0a687f39e78c4c1e02e3272c6b2ccdb4e0085fda3b8352fecd0410ccf915/uvloop-0.21.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ee4d4ef48036ff6e5cfffb09dd192c7a5027153948d85b8da7ff705065bacc6", size = 4582806, upload-time = "2024-10-14T23:38:04.711Z" }, - { url = "https://files.pythonhosted.org/packages/d2/19/f5b78616566ea68edd42aacaf645adbf71fbd83fc52281fba555dc27e3f1/uvloop-0.21.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3df876acd7ec037a3d005b3ab85a7e4110422e4d9c1571d4fc89b0fc41b6816", size = 4701068, upload-time = "2024-10-14T23:38:06.385Z" }, - { url = "https://files.pythonhosted.org/packages/47/57/66f061ee118f413cd22a656de622925097170b9380b30091b78ea0c6ea75/uvloop-0.21.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bd53ecc9a0f3d87ab847503c2e1552b690362e005ab54e8a48ba97da3924c0dc", size = 4454428, upload-time = "2024-10-14T23:38:08.416Z" }, - { url = "https://files.pythonhosted.org/packages/63/9a/0962b05b308494e3202d3f794a6e85abe471fe3cafdbcf95c2e8c713aabd/uvloop-0.21.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a5c39f217ab3c663dc699c04cbd50c13813e31d917642d459fdcec07555cc553", size = 4660018, upload-time = "2024-10-14T23:38:10.888Z" }, - { url = "https://files.pythonhosted.org/packages/3c/a4/646a9d0edff7cde25fc1734695d3dfcee0501140dd0e723e4df3f0a50acb/uvloop-0.21.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c097078b8031190c934ed0ebfee8cc5f9ba9642e6eb88322b9958b649750f72b", size = 1439646, upload-time = "2024-10-14T23:38:24.656Z" }, - { url = "https://files.pythonhosted.org/packages/01/2e/e128c66106af9728f86ebfeeb52af27ecd3cb09336f3e2f3e06053707a15/uvloop-0.21.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:46923b0b5ee7fc0020bef24afe7836cb068f5050ca04caf6b487c513dc1a20b2", size = 800931, upload-time = "2024-10-14T23:38:26.087Z" }, - { url = "https://files.pythonhosted.org/packages/2d/1a/9fbc2b1543d0df11f7aed1632f64bdf5ecc4053cf98cdc9edb91a65494f9/uvloop-0.21.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:53e420a3afe22cdcf2a0f4846e377d16e718bc70103d7088a4f7623567ba5fb0", size = 3829660, upload-time = "2024-10-14T23:38:27.905Z" }, - { url = "https://files.pythonhosted.org/packages/b8/c0/392e235e4100ae3b95b5c6dac77f82b529d2760942b1e7e0981e5d8e895d/uvloop-0.21.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88cb67cdbc0e483da00af0b2c3cdad4b7c61ceb1ee0f33fe00e09c81e3a6cb75", size = 3827185, upload-time = "2024-10-14T23:38:29.458Z" }, - { url = "https://files.pythonhosted.org/packages/e1/24/a5da6aba58f99aed5255eca87d58d1760853e8302d390820cc29058408e3/uvloop-0.21.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:221f4f2a1f46032b403bf3be628011caf75428ee3cc204a22addf96f586b19fd", size = 3705833, upload-time = "2024-10-14T23:38:31.155Z" }, - { url = "https://files.pythonhosted.org/packages/1a/5c/6ba221bb60f1e6474474102e17e38612ec7a06dc320e22b687ab563d877f/uvloop-0.21.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2d1f581393673ce119355d56da84fe1dd9d2bb8b3d13ce792524e1607139feff", size = 3804696, upload-time = "2024-10-14T23:38:33.633Z" }, -] - -[[package]] -name = "virtualenv" -version = "20.31.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "distlib" }, - { name = "filelock" }, - { name = "platformdirs" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/56/2c/444f465fb2c65f40c3a104fd0c495184c4f2336d65baf398e3c75d72ea94/virtualenv-20.31.2.tar.gz", hash = "sha256:e10c0a9d02835e592521be48b332b6caee6887f332c111aa79a09b9e79efc2af", size = 6076316, upload-time = "2025-05-08T17:58:23.811Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f3/40/b1c265d4b2b62b58576588510fc4d1fe60a86319c8de99fd8e9fec617d2c/virtualenv-20.31.2-py3-none-any.whl", hash = "sha256:36efd0d9650ee985f0cad72065001e66d49a6f24eb44d98980f630686243cf11", size = 6057982, upload-time = "2025-05-08T17:58:21.15Z" }, -] - -[[package]] -name = "watchfiles" -version = "1.1.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "anyio" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/2a/9a/d451fcc97d029f5812e898fd30a53fd8c15c7bbd058fd75cfc6beb9bd761/watchfiles-1.1.0.tar.gz", hash = "sha256:693ed7ec72cbfcee399e92c895362b6e66d63dac6b91e2c11ae03d10d503e575", size = 94406, upload-time = "2025-06-15T19:06:59.42Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b9/dd/579d1dc57f0f895426a1211c4ef3b0cb37eb9e642bb04bdcd962b5df206a/watchfiles-1.1.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:27f30e14aa1c1e91cb653f03a63445739919aef84c8d2517997a83155e7a2fcc", size = 405757, upload-time = "2025-06-15T19:04:51.058Z" }, - { url = "https://files.pythonhosted.org/packages/1c/a0/7a0318cd874393344d48c34d53b3dd419466adf59a29ba5b51c88dd18b86/watchfiles-1.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3366f56c272232860ab45c77c3ca7b74ee819c8e1f6f35a7125556b198bbc6df", size = 397511, upload-time = "2025-06-15T19:04:52.79Z" }, - { url = "https://files.pythonhosted.org/packages/06/be/503514656d0555ec2195f60d810eca29b938772e9bfb112d5cd5ad6f6a9e/watchfiles-1.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8412eacef34cae2836d891836a7fff7b754d6bcac61f6c12ba5ca9bc7e427b68", size = 450739, upload-time = "2025-06-15T19:04:54.203Z" }, - { url = "https://files.pythonhosted.org/packages/4e/0d/a05dd9e5f136cdc29751816d0890d084ab99f8c17b86f25697288ca09bc7/watchfiles-1.1.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:df670918eb7dd719642e05979fc84704af913d563fd17ed636f7c4783003fdcc", size = 458106, upload-time = "2025-06-15T19:04:55.607Z" }, - { url = "https://files.pythonhosted.org/packages/f1/fa/9cd16e4dfdb831072b7ac39e7bea986e52128526251038eb481effe9f48e/watchfiles-1.1.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d7642b9bc4827b5518ebdb3b82698ada8c14c7661ddec5fe719f3e56ccd13c97", size = 484264, upload-time = "2025-06-15T19:04:57.009Z" }, - { url = "https://files.pythonhosted.org/packages/32/04/1da8a637c7e2b70e750a0308e9c8e662ada0cca46211fa9ef24a23937e0b/watchfiles-1.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:199207b2d3eeaeb80ef4411875a6243d9ad8bc35b07fc42daa6b801cc39cc41c", size = 597612, upload-time = "2025-06-15T19:04:58.409Z" }, - { url = "https://files.pythonhosted.org/packages/30/01/109f2762e968d3e58c95731a206e5d7d2a7abaed4299dd8a94597250153c/watchfiles-1.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a479466da6db5c1e8754caee6c262cd373e6e6c363172d74394f4bff3d84d7b5", size = 477242, upload-time = "2025-06-15T19:04:59.786Z" }, - { url = "https://files.pythonhosted.org/packages/b5/b8/46f58cf4969d3b7bc3ca35a98e739fa4085b0657a1540ccc29a1a0bc016f/watchfiles-1.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:935f9edd022ec13e447e5723a7d14456c8af254544cefbc533f6dd276c9aa0d9", size = 453148, upload-time = "2025-06-15T19:05:01.103Z" }, - { url = "https://files.pythonhosted.org/packages/a5/cd/8267594263b1770f1eb76914940d7b2d03ee55eca212302329608208e061/watchfiles-1.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8076a5769d6bdf5f673a19d51da05fc79e2bbf25e9fe755c47595785c06a8c72", size = 626574, upload-time = "2025-06-15T19:05:02.582Z" }, - { url = "https://files.pythonhosted.org/packages/a1/2f/7f2722e85899bed337cba715723e19185e288ef361360718973f891805be/watchfiles-1.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:86b1e28d4c37e89220e924305cd9f82866bb0ace666943a6e4196c5df4d58dcc", size = 624378, upload-time = "2025-06-15T19:05:03.719Z" }, - { url = "https://files.pythonhosted.org/packages/bf/20/64c88ec43d90a568234d021ab4b2a6f42a5230d772b987c3f9c00cc27b8b/watchfiles-1.1.0-cp310-cp310-win32.whl", hash = "sha256:d1caf40c1c657b27858f9774d5c0e232089bca9cb8ee17ce7478c6e9264d2587", size = 279829, upload-time = "2025-06-15T19:05:04.822Z" }, - { url = "https://files.pythonhosted.org/packages/39/5c/a9c1ed33de7af80935e4eac09570de679c6e21c07070aa99f74b4431f4d6/watchfiles-1.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:a89c75a5b9bc329131115a409d0acc16e8da8dfd5867ba59f1dd66ae7ea8fa82", size = 292192, upload-time = "2025-06-15T19:05:06.348Z" }, - { url = "https://files.pythonhosted.org/packages/8b/78/7401154b78ab484ccaaeef970dc2af0cb88b5ba8a1b415383da444cdd8d3/watchfiles-1.1.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:c9649dfc57cc1f9835551deb17689e8d44666315f2e82d337b9f07bd76ae3aa2", size = 405751, upload-time = "2025-06-15T19:05:07.679Z" }, - { url = "https://files.pythonhosted.org/packages/76/63/e6c3dbc1f78d001589b75e56a288c47723de28c580ad715eb116639152b5/watchfiles-1.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:406520216186b99374cdb58bc48e34bb74535adec160c8459894884c983a149c", size = 397313, upload-time = "2025-06-15T19:05:08.764Z" }, - { url = "https://files.pythonhosted.org/packages/6c/a2/8afa359ff52e99af1632f90cbf359da46184207e893a5f179301b0c8d6df/watchfiles-1.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb45350fd1dc75cd68d3d72c47f5b513cb0578da716df5fba02fff31c69d5f2d", size = 450792, upload-time = "2025-06-15T19:05:09.869Z" }, - { url = "https://files.pythonhosted.org/packages/1d/bf/7446b401667f5c64972a57a0233be1104157fc3abf72c4ef2666c1bd09b2/watchfiles-1.1.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:11ee4444250fcbeb47459a877e5e80ed994ce8e8d20283857fc128be1715dac7", size = 458196, upload-time = "2025-06-15T19:05:11.91Z" }, - { url = "https://files.pythonhosted.org/packages/58/2f/501ddbdfa3fa874ea5597c77eeea3d413579c29af26c1091b08d0c792280/watchfiles-1.1.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bda8136e6a80bdea23e5e74e09df0362744d24ffb8cd59c4a95a6ce3d142f79c", size = 484788, upload-time = "2025-06-15T19:05:13.373Z" }, - { url = "https://files.pythonhosted.org/packages/61/1e/9c18eb2eb5c953c96bc0e5f626f0e53cfef4bd19bd50d71d1a049c63a575/watchfiles-1.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b915daeb2d8c1f5cee4b970f2e2c988ce6514aace3c9296e58dd64dc9aa5d575", size = 597879, upload-time = "2025-06-15T19:05:14.725Z" }, - { url = "https://files.pythonhosted.org/packages/8b/6c/1467402e5185d89388b4486745af1e0325007af0017c3384cc786fff0542/watchfiles-1.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ed8fc66786de8d0376f9f913c09e963c66e90ced9aa11997f93bdb30f7c872a8", size = 477447, upload-time = "2025-06-15T19:05:15.775Z" }, - { url = "https://files.pythonhosted.org/packages/2b/a1/ec0a606bde4853d6c4a578f9391eeb3684a9aea736a8eb217e3e00aa89a1/watchfiles-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe4371595edf78c41ef8ac8df20df3943e13defd0efcb732b2e393b5a8a7a71f", size = 453145, upload-time = "2025-06-15T19:05:17.17Z" }, - { url = "https://files.pythonhosted.org/packages/90/b9/ef6f0c247a6a35d689fc970dc7f6734f9257451aefb30def5d100d6246a5/watchfiles-1.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b7c5f6fe273291f4d414d55b2c80d33c457b8a42677ad14b4b47ff025d0893e4", size = 626539, upload-time = "2025-06-15T19:05:18.557Z" }, - { url = "https://files.pythonhosted.org/packages/34/44/6ffda5537085106ff5aaa762b0d130ac6c75a08015dd1621376f708c94de/watchfiles-1.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7738027989881e70e3723c75921f1efa45225084228788fc59ea8c6d732eb30d", size = 624472, upload-time = "2025-06-15T19:05:19.588Z" }, - { url = "https://files.pythonhosted.org/packages/c3/e3/71170985c48028fa3f0a50946916a14055e741db11c2e7bc2f3b61f4d0e3/watchfiles-1.1.0-cp311-cp311-win32.whl", hash = "sha256:622d6b2c06be19f6e89b1d951485a232e3b59618def88dbeda575ed8f0d8dbf2", size = 279348, upload-time = "2025-06-15T19:05:20.856Z" }, - { url = "https://files.pythonhosted.org/packages/89/1b/3e39c68b68a7a171070f81fc2561d23ce8d6859659406842a0e4bebf3bba/watchfiles-1.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:48aa25e5992b61debc908a61ab4d3f216b64f44fdaa71eb082d8b2de846b7d12", size = 292607, upload-time = "2025-06-15T19:05:21.937Z" }, - { url = "https://files.pythonhosted.org/packages/61/9f/2973b7539f2bdb6ea86d2c87f70f615a71a1fc2dba2911795cea25968aea/watchfiles-1.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:00645eb79a3faa70d9cb15c8d4187bb72970b2470e938670240c7998dad9f13a", size = 285056, upload-time = "2025-06-15T19:05:23.12Z" }, - { url = "https://files.pythonhosted.org/packages/f6/b8/858957045a38a4079203a33aaa7d23ea9269ca7761c8a074af3524fbb240/watchfiles-1.1.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9dc001c3e10de4725c749d4c2f2bdc6ae24de5a88a339c4bce32300a31ede179", size = 402339, upload-time = "2025-06-15T19:05:24.516Z" }, - { url = "https://files.pythonhosted.org/packages/80/28/98b222cca751ba68e88521fabd79a4fab64005fc5976ea49b53fa205d1fa/watchfiles-1.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d9ba68ec283153dead62cbe81872d28e053745f12335d037de9cbd14bd1877f5", size = 394409, upload-time = "2025-06-15T19:05:25.469Z" }, - { url = "https://files.pythonhosted.org/packages/86/50/dee79968566c03190677c26f7f47960aff738d32087087bdf63a5473e7df/watchfiles-1.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:130fc497b8ee68dce163e4254d9b0356411d1490e868bd8790028bc46c5cc297", size = 450939, upload-time = "2025-06-15T19:05:26.494Z" }, - { url = "https://files.pythonhosted.org/packages/40/45/a7b56fb129700f3cfe2594a01aa38d033b92a33dddce86c8dfdfc1247b72/watchfiles-1.1.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:50a51a90610d0845a5931a780d8e51d7bd7f309ebc25132ba975aca016b576a0", size = 457270, upload-time = "2025-06-15T19:05:27.466Z" }, - { url = "https://files.pythonhosted.org/packages/b5/c8/fa5ef9476b1d02dc6b5e258f515fcaaecf559037edf8b6feffcbc097c4b8/watchfiles-1.1.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dc44678a72ac0910bac46fa6a0de6af9ba1355669b3dfaf1ce5f05ca7a74364e", size = 483370, upload-time = "2025-06-15T19:05:28.548Z" }, - { url = "https://files.pythonhosted.org/packages/98/68/42cfcdd6533ec94f0a7aab83f759ec11280f70b11bfba0b0f885e298f9bd/watchfiles-1.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a543492513a93b001975ae283a51f4b67973662a375a403ae82f420d2c7205ee", size = 598654, upload-time = "2025-06-15T19:05:29.997Z" }, - { url = "https://files.pythonhosted.org/packages/d3/74/b2a1544224118cc28df7e59008a929e711f9c68ce7d554e171b2dc531352/watchfiles-1.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ac164e20d17cc285f2b94dc31c384bc3aa3dd5e7490473b3db043dd70fbccfd", size = 478667, upload-time = "2025-06-15T19:05:31.172Z" }, - { url = "https://files.pythonhosted.org/packages/8c/77/e3362fe308358dc9f8588102481e599c83e1b91c2ae843780a7ded939a35/watchfiles-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7590d5a455321e53857892ab8879dce62d1f4b04748769f5adf2e707afb9d4f", size = 452213, upload-time = "2025-06-15T19:05:32.299Z" }, - { url = "https://files.pythonhosted.org/packages/6e/17/c8f1a36540c9a1558d4faf08e909399e8133599fa359bf52ec8fcee5be6f/watchfiles-1.1.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:37d3d3f7defb13f62ece99e9be912afe9dd8a0077b7c45ee5a57c74811d581a4", size = 626718, upload-time = "2025-06-15T19:05:33.415Z" }, - { url = "https://files.pythonhosted.org/packages/26/45/fb599be38b4bd38032643783d7496a26a6f9ae05dea1a42e58229a20ac13/watchfiles-1.1.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:7080c4bb3efd70a07b1cc2df99a7aa51d98685be56be6038c3169199d0a1c69f", size = 623098, upload-time = "2025-06-15T19:05:34.534Z" }, - { url = "https://files.pythonhosted.org/packages/a1/e7/fdf40e038475498e160cd167333c946e45d8563ae4dd65caf757e9ffe6b4/watchfiles-1.1.0-cp312-cp312-win32.whl", hash = "sha256:cbcf8630ef4afb05dc30107bfa17f16c0896bb30ee48fc24bf64c1f970f3b1fd", size = 279209, upload-time = "2025-06-15T19:05:35.577Z" }, - { url = "https://files.pythonhosted.org/packages/3f/d3/3ae9d5124ec75143bdf088d436cba39812122edc47709cd2caafeac3266f/watchfiles-1.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:cbd949bdd87567b0ad183d7676feb98136cde5bb9025403794a4c0db28ed3a47", size = 292786, upload-time = "2025-06-15T19:05:36.559Z" }, - { url = "https://files.pythonhosted.org/packages/26/2f/7dd4fc8b5f2b34b545e19629b4a018bfb1de23b3a496766a2c1165ca890d/watchfiles-1.1.0-cp312-cp312-win_arm64.whl", hash = "sha256:0a7d40b77f07be87c6faa93d0951a0fcd8cbca1ddff60a1b65d741bac6f3a9f6", size = 284343, upload-time = "2025-06-15T19:05:37.5Z" }, - { url = "https://files.pythonhosted.org/packages/d3/42/fae874df96595556a9089ade83be34a2e04f0f11eb53a8dbf8a8a5e562b4/watchfiles-1.1.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:5007f860c7f1f8df471e4e04aaa8c43673429047d63205d1630880f7637bca30", size = 402004, upload-time = "2025-06-15T19:05:38.499Z" }, - { url = "https://files.pythonhosted.org/packages/fa/55/a77e533e59c3003d9803c09c44c3651224067cbe7fb5d574ddbaa31e11ca/watchfiles-1.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:20ecc8abbd957046f1fe9562757903f5eaf57c3bce70929fda6c7711bb58074a", size = 393671, upload-time = "2025-06-15T19:05:39.52Z" }, - { url = "https://files.pythonhosted.org/packages/05/68/b0afb3f79c8e832e6571022611adbdc36e35a44e14f129ba09709aa4bb7a/watchfiles-1.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2f0498b7d2a3c072766dba3274fe22a183dbea1f99d188f1c6c72209a1063dc", size = 449772, upload-time = "2025-06-15T19:05:40.897Z" }, - { url = "https://files.pythonhosted.org/packages/ff/05/46dd1f6879bc40e1e74c6c39a1b9ab9e790bf1f5a2fe6c08b463d9a807f4/watchfiles-1.1.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:239736577e848678e13b201bba14e89718f5c2133dfd6b1f7846fa1b58a8532b", size = 456789, upload-time = "2025-06-15T19:05:42.045Z" }, - { url = "https://files.pythonhosted.org/packages/8b/ca/0eeb2c06227ca7f12e50a47a3679df0cd1ba487ea19cf844a905920f8e95/watchfiles-1.1.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eff4b8d89f444f7e49136dc695599a591ff769300734446c0a86cba2eb2f9895", size = 482551, upload-time = "2025-06-15T19:05:43.781Z" }, - { url = "https://files.pythonhosted.org/packages/31/47/2cecbd8694095647406645f822781008cc524320466ea393f55fe70eed3b/watchfiles-1.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:12b0a02a91762c08f7264e2e79542f76870c3040bbc847fb67410ab81474932a", size = 597420, upload-time = "2025-06-15T19:05:45.244Z" }, - { url = "https://files.pythonhosted.org/packages/d9/7e/82abc4240e0806846548559d70f0b1a6dfdca75c1b4f9fa62b504ae9b083/watchfiles-1.1.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:29e7bc2eee15cbb339c68445959108803dc14ee0c7b4eea556400131a8de462b", size = 477950, upload-time = "2025-06-15T19:05:46.332Z" }, - { url = "https://files.pythonhosted.org/packages/25/0d/4d564798a49bf5482a4fa9416dea6b6c0733a3b5700cb8a5a503c4b15853/watchfiles-1.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d9481174d3ed982e269c090f780122fb59cee6c3796f74efe74e70f7780ed94c", size = 451706, upload-time = "2025-06-15T19:05:47.459Z" }, - { url = "https://files.pythonhosted.org/packages/81/b5/5516cf46b033192d544102ea07c65b6f770f10ed1d0a6d388f5d3874f6e4/watchfiles-1.1.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:80f811146831c8c86ab17b640801c25dc0a88c630e855e2bef3568f30434d52b", size = 625814, upload-time = "2025-06-15T19:05:48.654Z" }, - { url = "https://files.pythonhosted.org/packages/0c/dd/7c1331f902f30669ac3e754680b6edb9a0dd06dea5438e61128111fadd2c/watchfiles-1.1.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:60022527e71d1d1fda67a33150ee42869042bce3d0fcc9cc49be009a9cded3fb", size = 622820, upload-time = "2025-06-15T19:05:50.088Z" }, - { url = "https://files.pythonhosted.org/packages/1b/14/36d7a8e27cd128d7b1009e7715a7c02f6c131be9d4ce1e5c3b73d0e342d8/watchfiles-1.1.0-cp313-cp313-win32.whl", hash = "sha256:32d6d4e583593cb8576e129879ea0991660b935177c0f93c6681359b3654bfa9", size = 279194, upload-time = "2025-06-15T19:05:51.186Z" }, - { url = "https://files.pythonhosted.org/packages/25/41/2dd88054b849aa546dbeef5696019c58f8e0774f4d1c42123273304cdb2e/watchfiles-1.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:f21af781a4a6fbad54f03c598ab620e3a77032c5878f3d780448421a6e1818c7", size = 292349, upload-time = "2025-06-15T19:05:52.201Z" }, - { url = "https://files.pythonhosted.org/packages/c8/cf/421d659de88285eb13941cf11a81f875c176f76a6d99342599be88e08d03/watchfiles-1.1.0-cp313-cp313-win_arm64.whl", hash = "sha256:5366164391873ed76bfdf618818c82084c9db7fac82b64a20c44d335eec9ced5", size = 283836, upload-time = "2025-06-15T19:05:53.265Z" }, - { url = "https://files.pythonhosted.org/packages/45/10/6faf6858d527e3599cc50ec9fcae73590fbddc1420bd4fdccfebffeedbc6/watchfiles-1.1.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:17ab167cca6339c2b830b744eaf10803d2a5b6683be4d79d8475d88b4a8a4be1", size = 400343, upload-time = "2025-06-15T19:05:54.252Z" }, - { url = "https://files.pythonhosted.org/packages/03/20/5cb7d3966f5e8c718006d0e97dfe379a82f16fecd3caa7810f634412047a/watchfiles-1.1.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:328dbc9bff7205c215a7807da7c18dce37da7da718e798356212d22696404339", size = 392916, upload-time = "2025-06-15T19:05:55.264Z" }, - { url = "https://files.pythonhosted.org/packages/8c/07/d8f1176328fa9e9581b6f120b017e286d2a2d22ae3f554efd9515c8e1b49/watchfiles-1.1.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7208ab6e009c627b7557ce55c465c98967e8caa8b11833531fdf95799372633", size = 449582, upload-time = "2025-06-15T19:05:56.317Z" }, - { url = "https://files.pythonhosted.org/packages/66/e8/80a14a453cf6038e81d072a86c05276692a1826471fef91df7537dba8b46/watchfiles-1.1.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a8f6f72974a19efead54195bc9bed4d850fc047bb7aa971268fd9a8387c89011", size = 456752, upload-time = "2025-06-15T19:05:57.359Z" }, - { url = "https://files.pythonhosted.org/packages/5a/25/0853b3fe0e3c2f5af9ea60eb2e781eade939760239a72c2d38fc4cc335f6/watchfiles-1.1.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d181ef50923c29cf0450c3cd47e2f0557b62218c50b2ab8ce2ecaa02bd97e670", size = 481436, upload-time = "2025-06-15T19:05:58.447Z" }, - { url = "https://files.pythonhosted.org/packages/fe/9e/4af0056c258b861fbb29dcb36258de1e2b857be4a9509e6298abcf31e5c9/watchfiles-1.1.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:adb4167043d3a78280d5d05ce0ba22055c266cf8655ce942f2fb881262ff3cdf", size = 596016, upload-time = "2025-06-15T19:05:59.59Z" }, - { url = "https://files.pythonhosted.org/packages/c5/fa/95d604b58aa375e781daf350897aaaa089cff59d84147e9ccff2447c8294/watchfiles-1.1.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8c5701dc474b041e2934a26d31d39f90fac8a3dee2322b39f7729867f932b1d4", size = 476727, upload-time = "2025-06-15T19:06:01.086Z" }, - { url = "https://files.pythonhosted.org/packages/65/95/fe479b2664f19be4cf5ceeb21be05afd491d95f142e72d26a42f41b7c4f8/watchfiles-1.1.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b067915e3c3936966a8607f6fe5487df0c9c4afb85226613b520890049deea20", size = 451864, upload-time = "2025-06-15T19:06:02.144Z" }, - { url = "https://files.pythonhosted.org/packages/d3/8a/3c4af14b93a15ce55901cd7a92e1a4701910f1768c78fb30f61d2b79785b/watchfiles-1.1.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:9c733cda03b6d636b4219625a4acb5c6ffb10803338e437fb614fef9516825ef", size = 625626, upload-time = "2025-06-15T19:06:03.578Z" }, - { url = "https://files.pythonhosted.org/packages/da/f5/cf6aa047d4d9e128f4b7cde615236a915673775ef171ff85971d698f3c2c/watchfiles-1.1.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:cc08ef8b90d78bfac66f0def80240b0197008e4852c9f285907377b2947ffdcb", size = 622744, upload-time = "2025-06-15T19:06:05.066Z" }, - { url = "https://files.pythonhosted.org/packages/2c/00/70f75c47f05dea6fd30df90f047765f6fc2d6eb8b5a3921379b0b04defa2/watchfiles-1.1.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:9974d2f7dc561cce3bb88dfa8eb309dab64c729de85fba32e98d75cf24b66297", size = 402114, upload-time = "2025-06-15T19:06:06.186Z" }, - { url = "https://files.pythonhosted.org/packages/53/03/acd69c48db4a1ed1de26b349d94077cca2238ff98fd64393f3e97484cae6/watchfiles-1.1.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c68e9f1fcb4d43798ad8814c4c1b61547b014b667216cb754e606bfade587018", size = 393879, upload-time = "2025-06-15T19:06:07.369Z" }, - { url = "https://files.pythonhosted.org/packages/2f/c8/a9a2a6f9c8baa4eceae5887fecd421e1b7ce86802bcfc8b6a942e2add834/watchfiles-1.1.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:95ab1594377effac17110e1352989bdd7bdfca9ff0e5eeccd8c69c5389b826d0", size = 450026, upload-time = "2025-06-15T19:06:08.476Z" }, - { url = "https://files.pythonhosted.org/packages/fe/51/d572260d98388e6e2b967425c985e07d47ee6f62e6455cefb46a6e06eda5/watchfiles-1.1.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fba9b62da882c1be1280a7584ec4515d0a6006a94d6e5819730ec2eab60ffe12", size = 457917, upload-time = "2025-06-15T19:06:09.988Z" }, - { url = "https://files.pythonhosted.org/packages/c6/2d/4258e52917bf9f12909b6ec314ff9636276f3542f9d3807d143f27309104/watchfiles-1.1.0-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3434e401f3ce0ed6b42569128b3d1e3af773d7ec18751b918b89cd49c14eaafb", size = 483602, upload-time = "2025-06-15T19:06:11.088Z" }, - { url = "https://files.pythonhosted.org/packages/84/99/bee17a5f341a4345fe7b7972a475809af9e528deba056f8963d61ea49f75/watchfiles-1.1.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fa257a4d0d21fcbca5b5fcba9dca5a78011cb93c0323fb8855c6d2dfbc76eb77", size = 596758, upload-time = "2025-06-15T19:06:12.197Z" }, - { url = "https://files.pythonhosted.org/packages/40/76/e4bec1d59b25b89d2b0716b41b461ed655a9a53c60dc78ad5771fda5b3e6/watchfiles-1.1.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7fd1b3879a578a8ec2076c7961076df540b9af317123f84569f5a9ddee64ce92", size = 477601, upload-time = "2025-06-15T19:06:13.391Z" }, - { url = "https://files.pythonhosted.org/packages/1f/fa/a514292956f4a9ce3c567ec0c13cce427c158e9f272062685a8a727d08fc/watchfiles-1.1.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62cc7a30eeb0e20ecc5f4bd113cd69dcdb745a07c68c0370cea919f373f65d9e", size = 451936, upload-time = "2025-06-15T19:06:14.656Z" }, - { url = "https://files.pythonhosted.org/packages/32/5d/c3bf927ec3bbeb4566984eba8dd7a8eb69569400f5509904545576741f88/watchfiles-1.1.0-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:891c69e027748b4a73847335d208e374ce54ca3c335907d381fde4e41661b13b", size = 626243, upload-time = "2025-06-15T19:06:16.232Z" }, - { url = "https://files.pythonhosted.org/packages/e6/65/6e12c042f1a68c556802a84d54bb06d35577c81e29fba14019562479159c/watchfiles-1.1.0-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:12fe8eaffaf0faa7906895b4f8bb88264035b3f0243275e0bf24af0436b27259", size = 623073, upload-time = "2025-06-15T19:06:17.457Z" }, - { url = "https://files.pythonhosted.org/packages/89/ab/7f79d9bf57329e7cbb0a6fd4c7bd7d0cee1e4a8ef0041459f5409da3506c/watchfiles-1.1.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:bfe3c517c283e484843cb2e357dd57ba009cff351edf45fb455b5fbd1f45b15f", size = 400872, upload-time = "2025-06-15T19:06:18.57Z" }, - { url = "https://files.pythonhosted.org/packages/df/d5/3f7bf9912798e9e6c516094db6b8932df53b223660c781ee37607030b6d3/watchfiles-1.1.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:a9ccbf1f129480ed3044f540c0fdbc4ee556f7175e5ab40fe077ff6baf286d4e", size = 392877, upload-time = "2025-06-15T19:06:19.55Z" }, - { url = "https://files.pythonhosted.org/packages/0d/c5/54ec7601a2798604e01c75294770dbee8150e81c6e471445d7601610b495/watchfiles-1.1.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba0e3255b0396cac3cc7bbace76404dd72b5438bf0d8e7cefa2f79a7f3649caa", size = 449645, upload-time = "2025-06-15T19:06:20.66Z" }, - { url = "https://files.pythonhosted.org/packages/0a/04/c2f44afc3b2fce21ca0b7802cbd37ed90a29874f96069ed30a36dfe57c2b/watchfiles-1.1.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4281cd9fce9fc0a9dbf0fc1217f39bf9cf2b4d315d9626ef1d4e87b84699e7e8", size = 457424, upload-time = "2025-06-15T19:06:21.712Z" }, - { url = "https://files.pythonhosted.org/packages/9f/b0/eec32cb6c14d248095261a04f290636da3df3119d4040ef91a4a50b29fa5/watchfiles-1.1.0-cp314-cp314t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6d2404af8db1329f9a3c9b79ff63e0ae7131986446901582067d9304ae8aaf7f", size = 481584, upload-time = "2025-06-15T19:06:22.777Z" }, - { url = "https://files.pythonhosted.org/packages/d1/e2/ca4bb71c68a937d7145aa25709e4f5d68eb7698a25ce266e84b55d591bbd/watchfiles-1.1.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e78b6ed8165996013165eeabd875c5dfc19d41b54f94b40e9fff0eb3193e5e8e", size = 596675, upload-time = "2025-06-15T19:06:24.226Z" }, - { url = "https://files.pythonhosted.org/packages/a1/dd/b0e4b7fb5acf783816bc950180a6cd7c6c1d2cf7e9372c0ea634e722712b/watchfiles-1.1.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:249590eb75ccc117f488e2fabd1bfa33c580e24b96f00658ad88e38844a040bb", size = 477363, upload-time = "2025-06-15T19:06:25.42Z" }, - { url = "https://files.pythonhosted.org/packages/69/c4/088825b75489cb5b6a761a4542645718893d395d8c530b38734f19da44d2/watchfiles-1.1.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d05686b5487cfa2e2c28ff1aa370ea3e6c5accfe6435944ddea1e10d93872147", size = 452240, upload-time = "2025-06-15T19:06:26.552Z" }, - { url = "https://files.pythonhosted.org/packages/10/8c/22b074814970eeef43b7c44df98c3e9667c1f7bf5b83e0ff0201b0bd43f9/watchfiles-1.1.0-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:d0e10e6f8f6dc5762adee7dece33b722282e1f59aa6a55da5d493a97282fedd8", size = 625607, upload-time = "2025-06-15T19:06:27.606Z" }, - { url = "https://files.pythonhosted.org/packages/32/fa/a4f5c2046385492b2273213ef815bf71a0d4c1943b784fb904e184e30201/watchfiles-1.1.0-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:af06c863f152005c7592df1d6a7009c836a247c9d8adb78fef8575a5a98699db", size = 623315, upload-time = "2025-06-15T19:06:29.076Z" }, - { url = "https://files.pythonhosted.org/packages/47/8a/a45db804b9f0740f8408626ab2bca89c3136432e57c4673b50180bf85dd9/watchfiles-1.1.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:865c8e95713744cf5ae261f3067861e9da5f1370ba91fc536431e29b418676fa", size = 406400, upload-time = "2025-06-15T19:06:30.233Z" }, - { url = "https://files.pythonhosted.org/packages/64/06/a08684f628fb41addd451845aceedc2407dc3d843b4b060a7c4350ddee0c/watchfiles-1.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:42f92befc848bb7a19658f21f3e7bae80d7d005d13891c62c2cd4d4d0abb3433", size = 397920, upload-time = "2025-06-15T19:06:31.315Z" }, - { url = "https://files.pythonhosted.org/packages/79/e6/e10d5675af653b1b07d4156906858041149ca222edaf8995877f2605ba9e/watchfiles-1.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa0cc8365ab29487eb4f9979fd41b22549853389e22d5de3f134a6796e1b05a4", size = 451196, upload-time = "2025-06-15T19:06:32.435Z" }, - { url = "https://files.pythonhosted.org/packages/f6/8a/facd6988100cd0f39e89f6c550af80edb28e3a529e1ee662e750663e6b36/watchfiles-1.1.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:90ebb429e933645f3da534c89b29b665e285048973b4d2b6946526888c3eb2c7", size = 458218, upload-time = "2025-06-15T19:06:33.503Z" }, - { url = "https://files.pythonhosted.org/packages/90/26/34cbcbc4d0f2f8f9cc243007e65d741ae039f7a11ef8ec6e9cd25bee08d1/watchfiles-1.1.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c588c45da9b08ab3da81d08d7987dae6d2a3badd63acdb3e206a42dbfa7cb76f", size = 484851, upload-time = "2025-06-15T19:06:34.541Z" }, - { url = "https://files.pythonhosted.org/packages/d7/1f/f59faa9fc4b0e36dbcdd28a18c430416443b309d295d8b82e18192d120ad/watchfiles-1.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7c55b0f9f68590115c25272b06e63f0824f03d4fc7d6deed43d8ad5660cabdbf", size = 599520, upload-time = "2025-06-15T19:06:35.785Z" }, - { url = "https://files.pythonhosted.org/packages/83/72/3637abecb3bf590529f5154ca000924003e5f4bbb9619744feeaf6f0b70b/watchfiles-1.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd17a1e489f02ce9117b0de3c0b1fab1c3e2eedc82311b299ee6b6faf6c23a29", size = 477956, upload-time = "2025-06-15T19:06:36.965Z" }, - { url = "https://files.pythonhosted.org/packages/f7/f3/d14ffd9acc0c1bd4790378995e320981423263a5d70bd3929e2e0dc87fff/watchfiles-1.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da71945c9ace018d8634822f16cbc2a78323ef6c876b1d34bbf5d5222fd6a72e", size = 453196, upload-time = "2025-06-15T19:06:38.024Z" }, - { url = "https://files.pythonhosted.org/packages/7f/38/78ad77bd99e20c0fdc82262be571ef114fc0beef9b43db52adb939768c38/watchfiles-1.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:51556d5004887045dba3acdd1fdf61dddea2be0a7e18048b5e853dcd37149b86", size = 627479, upload-time = "2025-06-15T19:06:39.442Z" }, - { url = "https://files.pythonhosted.org/packages/e6/cf/549d50a22fcc83f1017c6427b1c76c053233f91b526f4ad7a45971e70c0b/watchfiles-1.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04e4ed5d1cd3eae68c89bcc1a485a109f39f2fd8de05f705e98af6b5f1861f1f", size = 624414, upload-time = "2025-06-15T19:06:40.859Z" }, - { url = "https://files.pythonhosted.org/packages/72/de/57d6e40dc9140af71c12f3a9fc2d3efc5529d93981cd4d265d484d7c9148/watchfiles-1.1.0-cp39-cp39-win32.whl", hash = "sha256:c600e85f2ffd9f1035222b1a312aff85fd11ea39baff1d705b9b047aad2ce267", size = 280020, upload-time = "2025-06-15T19:06:41.89Z" }, - { url = "https://files.pythonhosted.org/packages/88/bb/7d287fc2a762396b128a0fca2dbae29386e0a242b81d1046daf389641db3/watchfiles-1.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:3aba215958d88182e8d2acba0fdaf687745180974946609119953c0e112397dc", size = 292758, upload-time = "2025-06-15T19:06:43.251Z" }, - { url = "https://files.pythonhosted.org/packages/be/7c/a3d7c55cfa377c2f62c4ae3c6502b997186bc5e38156bafcb9b653de9a6d/watchfiles-1.1.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3a6fd40bbb50d24976eb275ccb55cd1951dfb63dbc27cae3066a6ca5f4beabd5", size = 406748, upload-time = "2025-06-15T19:06:44.2Z" }, - { url = "https://files.pythonhosted.org/packages/38/d0/c46f1b2c0ca47f3667b144de6f0515f6d1c670d72f2ca29861cac78abaa1/watchfiles-1.1.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9f811079d2f9795b5d48b55a37aa7773680a5659afe34b54cc1d86590a51507d", size = 398801, upload-time = "2025-06-15T19:06:45.774Z" }, - { url = "https://files.pythonhosted.org/packages/70/9c/9a6a42e97f92eeed77c3485a43ea96723900aefa3ac739a8c73f4bff2cd7/watchfiles-1.1.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a2726d7bfd9f76158c84c10a409b77a320426540df8c35be172444394b17f7ea", size = 451528, upload-time = "2025-06-15T19:06:46.791Z" }, - { url = "https://files.pythonhosted.org/packages/51/7b/98c7f4f7ce7ff03023cf971cd84a3ee3b790021ae7584ffffa0eb2554b96/watchfiles-1.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:df32d59cb9780f66d165a9a7a26f19df2c7d24e3bd58713108b41d0ff4f929c6", size = 454095, upload-time = "2025-06-15T19:06:48.211Z" }, - { url = "https://files.pythonhosted.org/packages/8c/6b/686dcf5d3525ad17b384fd94708e95193529b460a1b7bf40851f1328ec6e/watchfiles-1.1.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:0ece16b563b17ab26eaa2d52230c9a7ae46cf01759621f4fbbca280e438267b3", size = 406910, upload-time = "2025-06-15T19:06:49.335Z" }, - { url = "https://files.pythonhosted.org/packages/f3/d3/71c2dcf81dc1edcf8af9f4d8d63b1316fb0a2dd90cbfd427e8d9dd584a90/watchfiles-1.1.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:51b81e55d40c4b4aa8658427a3ee7ea847c591ae9e8b81ef94a90b668999353c", size = 398816, upload-time = "2025-06-15T19:06:50.433Z" }, - { url = "https://files.pythonhosted.org/packages/b8/fa/12269467b2fc006f8fce4cd6c3acfa77491dd0777d2a747415f28ccc8c60/watchfiles-1.1.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2bcdc54ea267fe72bfc7d83c041e4eb58d7d8dc6f578dfddb52f037ce62f432", size = 451584, upload-time = "2025-06-15T19:06:51.834Z" }, - { url = "https://files.pythonhosted.org/packages/bd/d3/254cea30f918f489db09d6a8435a7de7047f8cb68584477a515f160541d6/watchfiles-1.1.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:923fec6e5461c42bd7e3fd5ec37492c6f3468be0499bc0707b4bbbc16ac21792", size = 454009, upload-time = "2025-06-15T19:06:52.896Z" }, - { url = "https://files.pythonhosted.org/packages/48/93/5c96bdb65e7f88f7da40645f34c0a3c317a2931ed82161e93c91e8eddd27/watchfiles-1.1.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7b3443f4ec3ba5aa00b0e9fa90cf31d98321cbff8b925a7c7b84161619870bc9", size = 406640, upload-time = "2025-06-15T19:06:54.868Z" }, - { url = "https://files.pythonhosted.org/packages/e3/25/09204836e93e1b99cce88802ce87264a1d20610c7a8f6de24def27ad95b1/watchfiles-1.1.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:7049e52167fc75fc3cc418fc13d39a8e520cbb60ca08b47f6cedb85e181d2f2a", size = 398543, upload-time = "2025-06-15T19:06:55.95Z" }, - { url = "https://files.pythonhosted.org/packages/5e/dc/6f324a6f32c5ab73b54311b5f393a79df34c1584b8d2404cf7e6d780aa5d/watchfiles-1.1.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54062ef956807ba806559b3c3d52105ae1827a0d4ab47b621b31132b6b7e2866", size = 451787, upload-time = "2025-06-15T19:06:56.998Z" }, - { url = "https://files.pythonhosted.org/packages/45/5d/1d02ef4caa4ec02389e72d5594cdf9c67f1800a7c380baa55063c30c6598/watchfiles-1.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a7bd57a1bb02f9d5c398c0c1675384e7ab1dd39da0ca50b7f09af45fa435277", size = 454272, upload-time = "2025-06-15T19:06:58.055Z" }, -] - [[package]] name = "wcwidth" version = "0.2.13" @@ -5640,109 +3033,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", size = 34166, upload-time = "2024-01-06T02:10:55.763Z" }, ] -[[package]] -name = "webcolors" -version = "24.11.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7b/29/061ec845fb58521848f3739e466efd8250b4b7b98c1b6c5bf4d40b419b7e/webcolors-24.11.1.tar.gz", hash = "sha256:ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6", size = 45064, upload-time = "2024-11-11T07:43:24.224Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/60/e8/c0e05e4684d13459f93d312077a9a2efbe04d59c393bc2b8802248c908d4/webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9", size = 14934, upload-time = "2024-11-11T07:43:22.529Z" }, -] - -[[package]] -name = "webencodings" -version = "0.5.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923", size = 9721, upload-time = "2017-04-05T20:21:34.189Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", size = 11774, upload-time = "2017-04-05T20:21:32.581Z" }, -] - -[[package]] -name = "websocket-client" -version = "1.8.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e6/30/fba0d96b4b5fbf5948ed3f4681f7da2f9f64512e1d303f94b4cc174c24a5/websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da", size = 54648, upload-time = "2024-04-23T22:16:16.976Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526", size = 58826, upload-time = "2024-04-23T22:16:14.422Z" }, -] - -[[package]] -name = "websockets" -version = "15.0.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/21/e6/26d09fab466b7ca9c7737474c52be4f76a40301b08362eb2dbc19dcc16c1/websockets-15.0.1.tar.gz", hash = "sha256:82544de02076bafba038ce055ee6412d68da13ab47f0c60cab827346de828dee", size = 177016, upload-time = "2025-03-05T20:03:41.606Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1e/da/6462a9f510c0c49837bbc9345aca92d767a56c1fb2939e1579df1e1cdcf7/websockets-15.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d63efaa0cd96cf0c5fe4d581521d9fa87744540d4bc999ae6e08595a1014b45b", size = 175423, upload-time = "2025-03-05T20:01:35.363Z" }, - { url = "https://files.pythonhosted.org/packages/1c/9f/9d11c1a4eb046a9e106483b9ff69bce7ac880443f00e5ce64261b47b07e7/websockets-15.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ac60e3b188ec7574cb761b08d50fcedf9d77f1530352db4eef1707fe9dee7205", size = 173080, upload-time = "2025-03-05T20:01:37.304Z" }, - { url = "https://files.pythonhosted.org/packages/d5/4f/b462242432d93ea45f297b6179c7333dd0402b855a912a04e7fc61c0d71f/websockets-15.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5756779642579d902eed757b21b0164cd6fe338506a8083eb58af5c372e39d9a", size = 173329, upload-time = "2025-03-05T20:01:39.668Z" }, - { url = "https://files.pythonhosted.org/packages/6e/0c/6afa1f4644d7ed50284ac59cc70ef8abd44ccf7d45850d989ea7310538d0/websockets-15.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fdfe3e2a29e4db3659dbd5bbf04560cea53dd9610273917799f1cde46aa725e", size = 182312, upload-time = "2025-03-05T20:01:41.815Z" }, - { url = "https://files.pythonhosted.org/packages/dd/d4/ffc8bd1350b229ca7a4db2a3e1c482cf87cea1baccd0ef3e72bc720caeec/websockets-15.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c2529b320eb9e35af0fa3016c187dffb84a3ecc572bcee7c3ce302bfeba52bf", size = 181319, upload-time = "2025-03-05T20:01:43.967Z" }, - { url = "https://files.pythonhosted.org/packages/97/3a/5323a6bb94917af13bbb34009fac01e55c51dfde354f63692bf2533ffbc2/websockets-15.0.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac1e5c9054fe23226fb11e05a6e630837f074174c4c2f0fe442996112a6de4fb", size = 181631, upload-time = "2025-03-05T20:01:46.104Z" }, - { url = "https://files.pythonhosted.org/packages/a6/cc/1aeb0f7cee59ef065724041bb7ed667b6ab1eeffe5141696cccec2687b66/websockets-15.0.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:5df592cd503496351d6dc14f7cdad49f268d8e618f80dce0cd5a36b93c3fc08d", size = 182016, upload-time = "2025-03-05T20:01:47.603Z" }, - { url = "https://files.pythonhosted.org/packages/79/f9/c86f8f7af208e4161a7f7e02774e9d0a81c632ae76db2ff22549e1718a51/websockets-15.0.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0a34631031a8f05657e8e90903e656959234f3a04552259458aac0b0f9ae6fd9", size = 181426, upload-time = "2025-03-05T20:01:48.949Z" }, - { url = "https://files.pythonhosted.org/packages/c7/b9/828b0bc6753db905b91df6ae477c0b14a141090df64fb17f8a9d7e3516cf/websockets-15.0.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3d00075aa65772e7ce9e990cab3ff1de702aa09be3940d1dc88d5abf1ab8a09c", size = 181360, upload-time = "2025-03-05T20:01:50.938Z" }, - { url = "https://files.pythonhosted.org/packages/89/fb/250f5533ec468ba6327055b7d98b9df056fb1ce623b8b6aaafb30b55d02e/websockets-15.0.1-cp310-cp310-win32.whl", hash = "sha256:1234d4ef35db82f5446dca8e35a7da7964d02c127b095e172e54397fb6a6c256", size = 176388, upload-time = "2025-03-05T20:01:52.213Z" }, - { url = "https://files.pythonhosted.org/packages/1c/46/aca7082012768bb98e5608f01658ff3ac8437e563eca41cf068bd5849a5e/websockets-15.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:39c1fec2c11dc8d89bba6b2bf1556af381611a173ac2b511cf7231622058af41", size = 176830, upload-time = "2025-03-05T20:01:53.922Z" }, - { url = "https://files.pythonhosted.org/packages/9f/32/18fcd5919c293a398db67443acd33fde142f283853076049824fc58e6f75/websockets-15.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:823c248b690b2fd9303ba00c4f66cd5e2d8c3ba4aa968b2779be9532a4dad431", size = 175423, upload-time = "2025-03-05T20:01:56.276Z" }, - { url = "https://files.pythonhosted.org/packages/76/70/ba1ad96b07869275ef42e2ce21f07a5b0148936688c2baf7e4a1f60d5058/websockets-15.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678999709e68425ae2593acf2e3ebcbcf2e69885a5ee78f9eb80e6e371f1bf57", size = 173082, upload-time = "2025-03-05T20:01:57.563Z" }, - { url = "https://files.pythonhosted.org/packages/86/f2/10b55821dd40eb696ce4704a87d57774696f9451108cff0d2824c97e0f97/websockets-15.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d50fd1ee42388dcfb2b3676132c78116490976f1300da28eb629272d5d93e905", size = 173330, upload-time = "2025-03-05T20:01:59.063Z" }, - { url = "https://files.pythonhosted.org/packages/a5/90/1c37ae8b8a113d3daf1065222b6af61cc44102da95388ac0018fcb7d93d9/websockets-15.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d99e5546bf73dbad5bf3547174cd6cb8ba7273062a23808ffea025ecb1cf8562", size = 182878, upload-time = "2025-03-05T20:02:00.305Z" }, - { url = "https://files.pythonhosted.org/packages/8e/8d/96e8e288b2a41dffafb78e8904ea7367ee4f891dafc2ab8d87e2124cb3d3/websockets-15.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:66dd88c918e3287efc22409d426c8f729688d89a0c587c88971a0faa2c2f3792", size = 181883, upload-time = "2025-03-05T20:02:03.148Z" }, - { url = "https://files.pythonhosted.org/packages/93/1f/5d6dbf551766308f6f50f8baf8e9860be6182911e8106da7a7f73785f4c4/websockets-15.0.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8dd8327c795b3e3f219760fa603dcae1dcc148172290a8ab15158cf85a953413", size = 182252, upload-time = "2025-03-05T20:02:05.29Z" }, - { url = "https://files.pythonhosted.org/packages/d4/78/2d4fed9123e6620cbf1706c0de8a1632e1a28e7774d94346d7de1bba2ca3/websockets-15.0.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8fdc51055e6ff4adeb88d58a11042ec9a5eae317a0a53d12c062c8a8865909e8", size = 182521, upload-time = "2025-03-05T20:02:07.458Z" }, - { url = "https://files.pythonhosted.org/packages/e7/3b/66d4c1b444dd1a9823c4a81f50231b921bab54eee2f69e70319b4e21f1ca/websockets-15.0.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:693f0192126df6c2327cce3baa7c06f2a117575e32ab2308f7f8216c29d9e2e3", size = 181958, upload-time = "2025-03-05T20:02:09.842Z" }, - { url = "https://files.pythonhosted.org/packages/08/ff/e9eed2ee5fed6f76fdd6032ca5cd38c57ca9661430bb3d5fb2872dc8703c/websockets-15.0.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:54479983bd5fb469c38f2f5c7e3a24f9a4e70594cd68cd1fa6b9340dadaff7cf", size = 181918, upload-time = "2025-03-05T20:02:11.968Z" }, - { url = "https://files.pythonhosted.org/packages/d8/75/994634a49b7e12532be6a42103597b71098fd25900f7437d6055ed39930a/websockets-15.0.1-cp311-cp311-win32.whl", hash = "sha256:16b6c1b3e57799b9d38427dda63edcbe4926352c47cf88588c0be4ace18dac85", size = 176388, upload-time = "2025-03-05T20:02:13.32Z" }, - { url = "https://files.pythonhosted.org/packages/98/93/e36c73f78400a65f5e236cd376713c34182e6663f6889cd45a4a04d8f203/websockets-15.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:27ccee0071a0e75d22cb35849b1db43f2ecd3e161041ac1ee9d2352ddf72f065", size = 176828, upload-time = "2025-03-05T20:02:14.585Z" }, - { url = "https://files.pythonhosted.org/packages/51/6b/4545a0d843594f5d0771e86463606a3988b5a09ca5123136f8a76580dd63/websockets-15.0.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:3e90baa811a5d73f3ca0bcbf32064d663ed81318ab225ee4f427ad4e26e5aff3", size = 175437, upload-time = "2025-03-05T20:02:16.706Z" }, - { url = "https://files.pythonhosted.org/packages/f4/71/809a0f5f6a06522af902e0f2ea2757f71ead94610010cf570ab5c98e99ed/websockets-15.0.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:592f1a9fe869c778694f0aa806ba0374e97648ab57936f092fd9d87f8bc03665", size = 173096, upload-time = "2025-03-05T20:02:18.832Z" }, - { url = "https://files.pythonhosted.org/packages/3d/69/1a681dd6f02180916f116894181eab8b2e25b31e484c5d0eae637ec01f7c/websockets-15.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0701bc3cfcb9164d04a14b149fd74be7347a530ad3bbf15ab2c678a2cd3dd9a2", size = 173332, upload-time = "2025-03-05T20:02:20.187Z" }, - { url = "https://files.pythonhosted.org/packages/a6/02/0073b3952f5bce97eafbb35757f8d0d54812b6174ed8dd952aa08429bcc3/websockets-15.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8b56bdcdb4505c8078cb6c7157d9811a85790f2f2b3632c7d1462ab5783d215", size = 183152, upload-time = "2025-03-05T20:02:22.286Z" }, - { url = "https://files.pythonhosted.org/packages/74/45/c205c8480eafd114b428284840da0b1be9ffd0e4f87338dc95dc6ff961a1/websockets-15.0.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0af68c55afbd5f07986df82831c7bff04846928ea8d1fd7f30052638788bc9b5", size = 182096, upload-time = "2025-03-05T20:02:24.368Z" }, - { url = "https://files.pythonhosted.org/packages/14/8f/aa61f528fba38578ec553c145857a181384c72b98156f858ca5c8e82d9d3/websockets-15.0.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64dee438fed052b52e4f98f76c5790513235efaa1ef7f3f2192c392cd7c91b65", size = 182523, upload-time = "2025-03-05T20:02:25.669Z" }, - { url = "https://files.pythonhosted.org/packages/ec/6d/0267396610add5bc0d0d3e77f546d4cd287200804fe02323797de77dbce9/websockets-15.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d5f6b181bb38171a8ad1d6aa58a67a6aa9d4b38d0f8c5f496b9e42561dfc62fe", size = 182790, upload-time = "2025-03-05T20:02:26.99Z" }, - { url = "https://files.pythonhosted.org/packages/02/05/c68c5adbf679cf610ae2f74a9b871ae84564462955d991178f95a1ddb7dd/websockets-15.0.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5d54b09eba2bada6011aea5375542a157637b91029687eb4fdb2dab11059c1b4", size = 182165, upload-time = "2025-03-05T20:02:30.291Z" }, - { url = "https://files.pythonhosted.org/packages/29/93/bb672df7b2f5faac89761cb5fa34f5cec45a4026c383a4b5761c6cea5c16/websockets-15.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3be571a8b5afed347da347bfcf27ba12b069d9d7f42cb8c7028b5e98bbb12597", size = 182160, upload-time = "2025-03-05T20:02:31.634Z" }, - { url = "https://files.pythonhosted.org/packages/ff/83/de1f7709376dc3ca9b7eeb4b9a07b4526b14876b6d372a4dc62312bebee0/websockets-15.0.1-cp312-cp312-win32.whl", hash = "sha256:c338ffa0520bdb12fbc527265235639fb76e7bc7faafbb93f6ba80d9c06578a9", size = 176395, upload-time = "2025-03-05T20:02:33.017Z" }, - { url = "https://files.pythonhosted.org/packages/7d/71/abf2ebc3bbfa40f391ce1428c7168fb20582d0ff57019b69ea20fa698043/websockets-15.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:fcd5cf9e305d7b8338754470cf69cf81f420459dbae8a3b40cee57417f4614a7", size = 176841, upload-time = "2025-03-05T20:02:34.498Z" }, - { url = "https://files.pythonhosted.org/packages/cb/9f/51f0cf64471a9d2b4d0fc6c534f323b664e7095640c34562f5182e5a7195/websockets-15.0.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ee443ef070bb3b6ed74514f5efaa37a252af57c90eb33b956d35c8e9c10a1931", size = 175440, upload-time = "2025-03-05T20:02:36.695Z" }, - { url = "https://files.pythonhosted.org/packages/8a/05/aa116ec9943c718905997412c5989f7ed671bc0188ee2ba89520e8765d7b/websockets-15.0.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5a939de6b7b4e18ca683218320fc67ea886038265fd1ed30173f5ce3f8e85675", size = 173098, upload-time = "2025-03-05T20:02:37.985Z" }, - { url = "https://files.pythonhosted.org/packages/ff/0b/33cef55ff24f2d92924923c99926dcce78e7bd922d649467f0eda8368923/websockets-15.0.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:746ee8dba912cd6fc889a8147168991d50ed70447bf18bcda7039f7d2e3d9151", size = 173329, upload-time = "2025-03-05T20:02:39.298Z" }, - { url = "https://files.pythonhosted.org/packages/31/1d/063b25dcc01faa8fada1469bdf769de3768b7044eac9d41f734fd7b6ad6d/websockets-15.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:595b6c3969023ecf9041b2936ac3827e4623bfa3ccf007575f04c5a6aa318c22", size = 183111, upload-time = "2025-03-05T20:02:40.595Z" }, - { url = "https://files.pythonhosted.org/packages/93/53/9a87ee494a51bf63e4ec9241c1ccc4f7c2f45fff85d5bde2ff74fcb68b9e/websockets-15.0.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3c714d2fc58b5ca3e285461a4cc0c9a66bd0e24c5da9911e30158286c9b5be7f", size = 182054, upload-time = "2025-03-05T20:02:41.926Z" }, - { url = "https://files.pythonhosted.org/packages/ff/b2/83a6ddf56cdcbad4e3d841fcc55d6ba7d19aeb89c50f24dd7e859ec0805f/websockets-15.0.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f3c1e2ab208db911594ae5b4f79addeb3501604a165019dd221c0bdcabe4db8", size = 182496, upload-time = "2025-03-05T20:02:43.304Z" }, - { url = "https://files.pythonhosted.org/packages/98/41/e7038944ed0abf34c45aa4635ba28136f06052e08fc2168520bb8b25149f/websockets-15.0.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:229cf1d3ca6c1804400b0a9790dc66528e08a6a1feec0d5040e8b9eb14422375", size = 182829, upload-time = "2025-03-05T20:02:48.812Z" }, - { url = "https://files.pythonhosted.org/packages/e0/17/de15b6158680c7623c6ef0db361da965ab25d813ae54fcfeae2e5b9ef910/websockets-15.0.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:756c56e867a90fb00177d530dca4b097dd753cde348448a1012ed6c5131f8b7d", size = 182217, upload-time = "2025-03-05T20:02:50.14Z" }, - { url = "https://files.pythonhosted.org/packages/33/2b/1f168cb6041853eef0362fb9554c3824367c5560cbdaad89ac40f8c2edfc/websockets-15.0.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:558d023b3df0bffe50a04e710bc87742de35060580a293c2a984299ed83bc4e4", size = 182195, upload-time = "2025-03-05T20:02:51.561Z" }, - { url = "https://files.pythonhosted.org/packages/86/eb/20b6cdf273913d0ad05a6a14aed4b9a85591c18a987a3d47f20fa13dcc47/websockets-15.0.1-cp313-cp313-win32.whl", hash = "sha256:ba9e56e8ceeeedb2e080147ba85ffcd5cd0711b89576b83784d8605a7df455fa", size = 176393, upload-time = "2025-03-05T20:02:53.814Z" }, - { url = "https://files.pythonhosted.org/packages/1b/6c/c65773d6cab416a64d191d6ee8a8b1c68a09970ea6909d16965d26bfed1e/websockets-15.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:e09473f095a819042ecb2ab9465aee615bd9c2028e4ef7d933600a8401c79561", size = 176837, upload-time = "2025-03-05T20:02:55.237Z" }, - { url = "https://files.pythonhosted.org/packages/36/db/3fff0bcbe339a6fa6a3b9e3fbc2bfb321ec2f4cd233692272c5a8d6cf801/websockets-15.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5f4c04ead5aed67c8a1a20491d54cdfba5884507a48dd798ecaf13c74c4489f5", size = 175424, upload-time = "2025-03-05T20:02:56.505Z" }, - { url = "https://files.pythonhosted.org/packages/46/e6/519054c2f477def4165b0ec060ad664ed174e140b0d1cbb9fafa4a54f6db/websockets-15.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:abdc0c6c8c648b4805c5eacd131910d2a7f6455dfd3becab248ef108e89ab16a", size = 173077, upload-time = "2025-03-05T20:02:58.37Z" }, - { url = "https://files.pythonhosted.org/packages/1a/21/c0712e382df64c93a0d16449ecbf87b647163485ca1cc3f6cbadb36d2b03/websockets-15.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a625e06551975f4b7ea7102bc43895b90742746797e2e14b70ed61c43a90f09b", size = 173324, upload-time = "2025-03-05T20:02:59.773Z" }, - { url = "https://files.pythonhosted.org/packages/1c/cb/51ba82e59b3a664df54beed8ad95517c1b4dc1a913730e7a7db778f21291/websockets-15.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d591f8de75824cbb7acad4e05d2d710484f15f29d4a915092675ad3456f11770", size = 182094, upload-time = "2025-03-05T20:03:01.827Z" }, - { url = "https://files.pythonhosted.org/packages/fb/0f/bf3788c03fec679bcdaef787518dbe60d12fe5615a544a6d4cf82f045193/websockets-15.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:47819cea040f31d670cc8d324bb6435c6f133b8c7a19ec3d61634e62f8d8f9eb", size = 181094, upload-time = "2025-03-05T20:03:03.123Z" }, - { url = "https://files.pythonhosted.org/packages/5e/da/9fb8c21edbc719b66763a571afbaf206cb6d3736d28255a46fc2fe20f902/websockets-15.0.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac017dd64572e5c3bd01939121e4d16cf30e5d7e110a119399cf3133b63ad054", size = 181397, upload-time = "2025-03-05T20:03:04.443Z" }, - { url = "https://files.pythonhosted.org/packages/2e/65/65f379525a2719e91d9d90c38fe8b8bc62bd3c702ac651b7278609b696c4/websockets-15.0.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:4a9fac8e469d04ce6c25bb2610dc535235bd4aa14996b4e6dbebf5e007eba5ee", size = 181794, upload-time = "2025-03-05T20:03:06.708Z" }, - { url = "https://files.pythonhosted.org/packages/d9/26/31ac2d08f8e9304d81a1a7ed2851c0300f636019a57cbaa91342015c72cc/websockets-15.0.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:363c6f671b761efcb30608d24925a382497c12c506b51661883c3e22337265ed", size = 181194, upload-time = "2025-03-05T20:03:08.844Z" }, - { url = "https://files.pythonhosted.org/packages/98/72/1090de20d6c91994cd4b357c3f75a4f25ee231b63e03adea89671cc12a3f/websockets-15.0.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2034693ad3097d5355bfdacfffcbd3ef5694f9718ab7f29c29689a9eae841880", size = 181164, upload-time = "2025-03-05T20:03:10.242Z" }, - { url = "https://files.pythonhosted.org/packages/2d/37/098f2e1c103ae8ed79b0e77f08d83b0ec0b241cf4b7f2f10edd0126472e1/websockets-15.0.1-cp39-cp39-win32.whl", hash = "sha256:3b1ac0d3e594bf121308112697cf4b32be538fb1444468fb0a6ae4feebc83411", size = 176381, upload-time = "2025-03-05T20:03:12.77Z" }, - { url = "https://files.pythonhosted.org/packages/75/8b/a32978a3ab42cebb2ebdd5b05df0696a09f4d436ce69def11893afa301f0/websockets-15.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:b7643a03db5c95c799b89b31c036d5f27eeb4d259c798e878d6937d71832b1e4", size = 176841, upload-time = "2025-03-05T20:03:14.367Z" }, - { url = "https://files.pythonhosted.org/packages/02/9e/d40f779fa16f74d3468357197af8d6ad07e7c5a27ea1ca74ceb38986f77a/websockets-15.0.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0c9e74d766f2818bb95f84c25be4dea09841ac0f734d1966f415e4edfc4ef1c3", size = 173109, upload-time = "2025-03-05T20:03:17.769Z" }, - { url = "https://files.pythonhosted.org/packages/bc/cd/5b887b8585a593073fd92f7c23ecd3985cd2c3175025a91b0d69b0551372/websockets-15.0.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1009ee0c7739c08a0cd59de430d6de452a55e42d6b522de7aa15e6f67db0b8e1", size = 173343, upload-time = "2025-03-05T20:03:19.094Z" }, - { url = "https://files.pythonhosted.org/packages/fe/ae/d34f7556890341e900a95acf4886833646306269f899d58ad62f588bf410/websockets-15.0.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76d1f20b1c7a2fa82367e04982e708723ba0e7b8d43aa643d3dcd404d74f1475", size = 174599, upload-time = "2025-03-05T20:03:21.1Z" }, - { url = "https://files.pythonhosted.org/packages/71/e6/5fd43993a87db364ec60fc1d608273a1a465c0caba69176dd160e197ce42/websockets-15.0.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f29d80eb9a9263b8d109135351caf568cc3f80b9928bccde535c235de55c22d9", size = 174207, upload-time = "2025-03-05T20:03:23.221Z" }, - { url = "https://files.pythonhosted.org/packages/2b/fb/c492d6daa5ec067c2988ac80c61359ace5c4c674c532985ac5a123436cec/websockets-15.0.1-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b359ed09954d7c18bbc1680f380c7301f92c60bf924171629c5db97febb12f04", size = 174155, upload-time = "2025-03-05T20:03:25.321Z" }, - { url = "https://files.pythonhosted.org/packages/68/a1/dcb68430b1d00b698ae7a7e0194433bce4f07ded185f0ee5fb21e2a2e91e/websockets-15.0.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:cad21560da69f4ce7658ca2cb83138fb4cf695a2ba3e475e0559e05991aa8122", size = 176884, upload-time = "2025-03-05T20:03:27.934Z" }, - { url = "https://files.pythonhosted.org/packages/b7/48/4b67623bac4d79beb3a6bb27b803ba75c1bdedc06bd827e465803690a4b2/websockets-15.0.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7f493881579c90fc262d9cdbaa05a6b54b3811c2f300766748db79f098db9940", size = 173106, upload-time = "2025-03-05T20:03:29.404Z" }, - { url = "https://files.pythonhosted.org/packages/ed/f0/adb07514a49fe5728192764e04295be78859e4a537ab8fcc518a3dbb3281/websockets-15.0.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:47b099e1f4fbc95b701b6e85768e1fcdaf1630f3cbe4765fa216596f12310e2e", size = 173339, upload-time = "2025-03-05T20:03:30.755Z" }, - { url = "https://files.pythonhosted.org/packages/87/28/bd23c6344b18fb43df40d0700f6d3fffcd7cef14a6995b4f976978b52e62/websockets-15.0.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67f2b6de947f8c757db2db9c71527933ad0019737ec374a8a6be9a956786aaf9", size = 174597, upload-time = "2025-03-05T20:03:32.247Z" }, - { url = "https://files.pythonhosted.org/packages/6d/79/ca288495863d0f23a60f546f0905ae8f3ed467ad87f8b6aceb65f4c013e4/websockets-15.0.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d08eb4c2b7d6c41da6ca0600c077e93f5adcfd979cd777d747e9ee624556da4b", size = 174205, upload-time = "2025-03-05T20:03:33.731Z" }, - { url = "https://files.pythonhosted.org/packages/04/e4/120ff3180b0872b1fe6637f6f995bcb009fb5c87d597c1fc21456f50c848/websockets-15.0.1-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b826973a4a2ae47ba357e4e82fa44a463b8f168e1ca775ac64521442b19e87f", size = 174150, upload-time = "2025-03-05T20:03:35.757Z" }, - { url = "https://files.pythonhosted.org/packages/cb/c3/30e2f9c539b8da8b1d76f64012f3b19253271a63413b2d3adb94b143407f/websockets-15.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:21c1fa28a6a7e3cbdc171c694398b6df4744613ce9b36b1a498e816787e28123", size = 176877, upload-time = "2025-03-05T20:03:37.199Z" }, - { url = "https://files.pythonhosted.org/packages/fa/a8/5b41e0da817d64113292ab1f8247140aac61cbf6cfd085d6a0fa77f4984f/websockets-15.0.1-py3-none-any.whl", hash = "sha256:f7a866fbc1e97b5c617ee4116daaa09b722101d4a3c170c787450ba409f9736f", size = 169743, upload-time = "2025-03-05T20:03:39.41Z" }, -] - [[package]] name = "widgetsnbextension" version = "4.0.14" @@ -5752,197 +3042,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ca/51/5447876806d1088a0f8f71e16542bf350918128d0a69437df26047c8e46f/widgetsnbextension-4.0.14-py3-none-any.whl", hash = "sha256:4875a9eaf72fbf5079dc372a51a9f268fc38d46f767cbf85c43a36da5cb9b575", size = 2196503, upload-time = "2025-04-10T13:01:23.086Z" }, ] -[[package]] -name = "wrapt" -version = "1.17.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c3/fc/e91cc220803d7bc4db93fb02facd8461c37364151b8494762cc88b0fbcef/wrapt-1.17.2.tar.gz", hash = "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3", size = 55531, upload-time = "2025-01-14T10:35:45.465Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/d1/1daec934997e8b160040c78d7b31789f19b122110a75eca3d4e8da0049e1/wrapt-1.17.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3d57c572081fed831ad2d26fd430d565b76aa277ed1d30ff4d40670b1c0dd984", size = 53307, upload-time = "2025-01-14T10:33:13.616Z" }, - { url = "https://files.pythonhosted.org/packages/1b/7b/13369d42651b809389c1a7153baa01d9700430576c81a2f5c5e460df0ed9/wrapt-1.17.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b5e251054542ae57ac7f3fba5d10bfff615b6c2fb09abeb37d2f1463f841ae22", size = 38486, upload-time = "2025-01-14T10:33:15.947Z" }, - { url = "https://files.pythonhosted.org/packages/62/bf/e0105016f907c30b4bd9e377867c48c34dc9c6c0c104556c9c9126bd89ed/wrapt-1.17.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:80dd7db6a7cb57ffbc279c4394246414ec99537ae81ffd702443335a61dbf3a7", size = 38777, upload-time = "2025-01-14T10:33:17.462Z" }, - { url = "https://files.pythonhosted.org/packages/27/70/0f6e0679845cbf8b165e027d43402a55494779295c4b08414097b258ac87/wrapt-1.17.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a6e821770cf99cc586d33833b2ff32faebdbe886bd6322395606cf55153246c", size = 83314, upload-time = "2025-01-14T10:33:21.282Z" }, - { url = "https://files.pythonhosted.org/packages/0f/77/0576d841bf84af8579124a93d216f55d6f74374e4445264cb378a6ed33eb/wrapt-1.17.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b60fb58b90c6d63779cb0c0c54eeb38941bae3ecf7a73c764c52c88c2dcb9d72", size = 74947, upload-time = "2025-01-14T10:33:24.414Z" }, - { url = "https://files.pythonhosted.org/packages/90/ec/00759565518f268ed707dcc40f7eeec38637d46b098a1f5143bff488fe97/wrapt-1.17.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b870b5df5b71d8c3359d21be8f0d6c485fa0ebdb6477dda51a1ea54a9b558061", size = 82778, upload-time = "2025-01-14T10:33:26.152Z" }, - { url = "https://files.pythonhosted.org/packages/f8/5a/7cffd26b1c607b0b0c8a9ca9d75757ad7620c9c0a9b4a25d3f8a1480fafc/wrapt-1.17.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4011d137b9955791f9084749cba9a367c68d50ab8d11d64c50ba1688c9b457f2", size = 81716, upload-time = "2025-01-14T10:33:27.372Z" }, - { url = "https://files.pythonhosted.org/packages/7e/09/dccf68fa98e862df7e6a60a61d43d644b7d095a5fc36dbb591bbd4a1c7b2/wrapt-1.17.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:1473400e5b2733e58b396a04eb7f35f541e1fb976d0c0724d0223dd607e0f74c", size = 74548, upload-time = "2025-01-14T10:33:28.52Z" }, - { url = "https://files.pythonhosted.org/packages/b7/8e/067021fa3c8814952c5e228d916963c1115b983e21393289de15128e867e/wrapt-1.17.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3cedbfa9c940fdad3e6e941db7138e26ce8aad38ab5fe9dcfadfed9db7a54e62", size = 81334, upload-time = "2025-01-14T10:33:29.643Z" }, - { url = "https://files.pythonhosted.org/packages/4b/0d/9d4b5219ae4393f718699ca1c05f5ebc0c40d076f7e65fd48f5f693294fb/wrapt-1.17.2-cp310-cp310-win32.whl", hash = "sha256:582530701bff1dec6779efa00c516496968edd851fba224fbd86e46cc6b73563", size = 36427, upload-time = "2025-01-14T10:33:30.832Z" }, - { url = "https://files.pythonhosted.org/packages/72/6a/c5a83e8f61aec1e1aeef939807602fb880e5872371e95df2137142f5c58e/wrapt-1.17.2-cp310-cp310-win_amd64.whl", hash = "sha256:58705da316756681ad3c9c73fd15499aa4d8c69f9fd38dc8a35e06c12468582f", size = 38774, upload-time = "2025-01-14T10:33:32.897Z" }, - { url = "https://files.pythonhosted.org/packages/cd/f7/a2aab2cbc7a665efab072344a8949a71081eed1d2f451f7f7d2b966594a2/wrapt-1.17.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ff04ef6eec3eee8a5efef2401495967a916feaa353643defcc03fc74fe213b58", size = 53308, upload-time = "2025-01-14T10:33:33.992Z" }, - { url = "https://files.pythonhosted.org/packages/50/ff/149aba8365fdacef52b31a258c4dc1c57c79759c335eff0b3316a2664a64/wrapt-1.17.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db983e7bca53819efdbd64590ee96c9213894272c776966ca6306b73e4affda", size = 38488, upload-time = "2025-01-14T10:33:35.264Z" }, - { url = "https://files.pythonhosted.org/packages/65/46/5a917ce85b5c3b490d35c02bf71aedaa9f2f63f2d15d9949cc4ba56e8ba9/wrapt-1.17.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9abc77a4ce4c6f2a3168ff34b1da9b0f311a8f1cfd694ec96b0603dff1c79438", size = 38776, upload-time = "2025-01-14T10:33:38.28Z" }, - { url = "https://files.pythonhosted.org/packages/ca/74/336c918d2915a4943501c77566db41d1bd6e9f4dbc317f356b9a244dfe83/wrapt-1.17.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b929ac182f5ace000d459c59c2c9c33047e20e935f8e39371fa6e3b85d56f4a", size = 83776, upload-time = "2025-01-14T10:33:40.678Z" }, - { url = "https://files.pythonhosted.org/packages/09/99/c0c844a5ccde0fe5761d4305485297f91d67cf2a1a824c5f282e661ec7ff/wrapt-1.17.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f09b286faeff3c750a879d336fb6d8713206fc97af3adc14def0cdd349df6000", size = 75420, upload-time = "2025-01-14T10:33:41.868Z" }, - { url = "https://files.pythonhosted.org/packages/b4/b0/9fc566b0fe08b282c850063591a756057c3247b2362b9286429ec5bf1721/wrapt-1.17.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a7ed2d9d039bd41e889f6fb9364554052ca21ce823580f6a07c4ec245c1f5d6", size = 83199, upload-time = "2025-01-14T10:33:43.598Z" }, - { url = "https://files.pythonhosted.org/packages/9d/4b/71996e62d543b0a0bd95dda485219856def3347e3e9380cc0d6cf10cfb2f/wrapt-1.17.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:129a150f5c445165ff941fc02ee27df65940fcb8a22a61828b1853c98763a64b", size = 82307, upload-time = "2025-01-14T10:33:48.499Z" }, - { url = "https://files.pythonhosted.org/packages/39/35/0282c0d8789c0dc9bcc738911776c762a701f95cfe113fb8f0b40e45c2b9/wrapt-1.17.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1fb5699e4464afe5c7e65fa51d4f99e0b2eadcc176e4aa33600a3df7801d6662", size = 75025, upload-time = "2025-01-14T10:33:51.191Z" }, - { url = "https://files.pythonhosted.org/packages/4f/6d/90c9fd2c3c6fee181feecb620d95105370198b6b98a0770cba090441a828/wrapt-1.17.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9a2bce789a5ea90e51a02dfcc39e31b7f1e662bc3317979aa7e5538e3a034f72", size = 81879, upload-time = "2025-01-14T10:33:52.328Z" }, - { url = "https://files.pythonhosted.org/packages/8f/fa/9fb6e594f2ce03ef03eddbdb5f4f90acb1452221a5351116c7c4708ac865/wrapt-1.17.2-cp311-cp311-win32.whl", hash = "sha256:4afd5814270fdf6380616b321fd31435a462019d834f83c8611a0ce7484c7317", size = 36419, upload-time = "2025-01-14T10:33:53.551Z" }, - { url = "https://files.pythonhosted.org/packages/47/f8/fb1773491a253cbc123c5d5dc15c86041f746ed30416535f2a8df1f4a392/wrapt-1.17.2-cp311-cp311-win_amd64.whl", hash = "sha256:acc130bc0375999da18e3d19e5a86403667ac0c4042a094fefb7eec8ebac7cf3", size = 38773, upload-time = "2025-01-14T10:33:56.323Z" }, - { url = "https://files.pythonhosted.org/packages/a1/bd/ab55f849fd1f9a58ed7ea47f5559ff09741b25f00c191231f9f059c83949/wrapt-1.17.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d5e2439eecc762cd85e7bd37161d4714aa03a33c5ba884e26c81559817ca0925", size = 53799, upload-time = "2025-01-14T10:33:57.4Z" }, - { url = "https://files.pythonhosted.org/packages/53/18/75ddc64c3f63988f5a1d7e10fb204ffe5762bc663f8023f18ecaf31a332e/wrapt-1.17.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fc7cb4c1c744f8c05cd5f9438a3caa6ab94ce8344e952d7c45a8ed59dd88392", size = 38821, upload-time = "2025-01-14T10:33:59.334Z" }, - { url = "https://files.pythonhosted.org/packages/48/2a/97928387d6ed1c1ebbfd4efc4133a0633546bec8481a2dd5ec961313a1c7/wrapt-1.17.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fdbdb757d5390f7c675e558fd3186d590973244fab0c5fe63d373ade3e99d40", size = 38919, upload-time = "2025-01-14T10:34:04.093Z" }, - { url = "https://files.pythonhosted.org/packages/73/54/3bfe5a1febbbccb7a2f77de47b989c0b85ed3a6a41614b104204a788c20e/wrapt-1.17.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bb1d0dbf99411f3d871deb6faa9aabb9d4e744d67dcaaa05399af89d847a91d", size = 88721, upload-time = "2025-01-14T10:34:07.163Z" }, - { url = "https://files.pythonhosted.org/packages/25/cb/7262bc1b0300b4b64af50c2720ef958c2c1917525238d661c3e9a2b71b7b/wrapt-1.17.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d18a4865f46b8579d44e4fe1e2bcbc6472ad83d98e22a26c963d46e4c125ef0b", size = 80899, upload-time = "2025-01-14T10:34:09.82Z" }, - { url = "https://files.pythonhosted.org/packages/2a/5a/04cde32b07a7431d4ed0553a76fdb7a61270e78c5fd5a603e190ac389f14/wrapt-1.17.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc570b5f14a79734437cb7b0500376b6b791153314986074486e0b0fa8d71d98", size = 89222, upload-time = "2025-01-14T10:34:11.258Z" }, - { url = "https://files.pythonhosted.org/packages/09/28/2e45a4f4771fcfb109e244d5dbe54259e970362a311b67a965555ba65026/wrapt-1.17.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6d9187b01bebc3875bac9b087948a2bccefe464a7d8f627cf6e48b1bbae30f82", size = 86707, upload-time = "2025-01-14T10:34:12.49Z" }, - { url = "https://files.pythonhosted.org/packages/c6/d2/dcb56bf5f32fcd4bd9aacc77b50a539abdd5b6536872413fd3f428b21bed/wrapt-1.17.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9e8659775f1adf02eb1e6f109751268e493c73716ca5761f8acb695e52a756ae", size = 79685, upload-time = "2025-01-14T10:34:15.043Z" }, - { url = "https://files.pythonhosted.org/packages/80/4e/eb8b353e36711347893f502ce91c770b0b0929f8f0bed2670a6856e667a9/wrapt-1.17.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8b2816ebef96d83657b56306152a93909a83f23994f4b30ad4573b00bd11bb9", size = 87567, upload-time = "2025-01-14T10:34:16.563Z" }, - { url = "https://files.pythonhosted.org/packages/17/27/4fe749a54e7fae6e7146f1c7d914d28ef599dacd4416566c055564080fe2/wrapt-1.17.2-cp312-cp312-win32.whl", hash = "sha256:468090021f391fe0056ad3e807e3d9034e0fd01adcd3bdfba977b6fdf4213ea9", size = 36672, upload-time = "2025-01-14T10:34:17.727Z" }, - { url = "https://files.pythonhosted.org/packages/15/06/1dbf478ea45c03e78a6a8c4be4fdc3c3bddea5c8de8a93bc971415e47f0f/wrapt-1.17.2-cp312-cp312-win_amd64.whl", hash = "sha256:ec89ed91f2fa8e3f52ae53cd3cf640d6feff92ba90d62236a81e4e563ac0e991", size = 38865, upload-time = "2025-01-14T10:34:19.577Z" }, - { url = "https://files.pythonhosted.org/packages/ce/b9/0ffd557a92f3b11d4c5d5e0c5e4ad057bd9eb8586615cdaf901409920b14/wrapt-1.17.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6ed6ffac43aecfe6d86ec5b74b06a5be33d5bb9243d055141e8cabb12aa08125", size = 53800, upload-time = "2025-01-14T10:34:21.571Z" }, - { url = "https://files.pythonhosted.org/packages/c0/ef/8be90a0b7e73c32e550c73cfb2fa09db62234227ece47b0e80a05073b375/wrapt-1.17.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:35621ae4c00e056adb0009f8e86e28eb4a41a4bfa8f9bfa9fca7d343fe94f998", size = 38824, upload-time = "2025-01-14T10:34:22.999Z" }, - { url = "https://files.pythonhosted.org/packages/36/89/0aae34c10fe524cce30fe5fc433210376bce94cf74d05b0d68344c8ba46e/wrapt-1.17.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a604bf7a053f8362d27eb9fefd2097f82600b856d5abe996d623babd067b1ab5", size = 38920, upload-time = "2025-01-14T10:34:25.386Z" }, - { url = "https://files.pythonhosted.org/packages/3b/24/11c4510de906d77e0cfb5197f1b1445d4fec42c9a39ea853d482698ac681/wrapt-1.17.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cbabee4f083b6b4cd282f5b817a867cf0b1028c54d445b7ec7cfe6505057cf8", size = 88690, upload-time = "2025-01-14T10:34:28.058Z" }, - { url = "https://files.pythonhosted.org/packages/71/d7/cfcf842291267bf455b3e266c0c29dcb675b5540ee8b50ba1699abf3af45/wrapt-1.17.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49703ce2ddc220df165bd2962f8e03b84c89fee2d65e1c24a7defff6f988f4d6", size = 80861, upload-time = "2025-01-14T10:34:29.167Z" }, - { url = "https://files.pythonhosted.org/packages/d5/66/5d973e9f3e7370fd686fb47a9af3319418ed925c27d72ce16b791231576d/wrapt-1.17.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8112e52c5822fc4253f3901b676c55ddf288614dc7011634e2719718eaa187dc", size = 89174, upload-time = "2025-01-14T10:34:31.702Z" }, - { url = "https://files.pythonhosted.org/packages/a7/d3/8e17bb70f6ae25dabc1aaf990f86824e4fd98ee9cadf197054e068500d27/wrapt-1.17.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9fee687dce376205d9a494e9c121e27183b2a3df18037f89d69bd7b35bcf59e2", size = 86721, upload-time = "2025-01-14T10:34:32.91Z" }, - { url = "https://files.pythonhosted.org/packages/6f/54/f170dfb278fe1c30d0ff864513cff526d624ab8de3254b20abb9cffedc24/wrapt-1.17.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:18983c537e04d11cf027fbb60a1e8dfd5190e2b60cc27bc0808e653e7b218d1b", size = 79763, upload-time = "2025-01-14T10:34:34.903Z" }, - { url = "https://files.pythonhosted.org/packages/4a/98/de07243751f1c4a9b15c76019250210dd3486ce098c3d80d5f729cba029c/wrapt-1.17.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:703919b1633412ab54bcf920ab388735832fdcb9f9a00ae49387f0fe67dad504", size = 87585, upload-time = "2025-01-14T10:34:36.13Z" }, - { url = "https://files.pythonhosted.org/packages/f9/f0/13925f4bd6548013038cdeb11ee2cbd4e37c30f8bfd5db9e5a2a370d6e20/wrapt-1.17.2-cp313-cp313-win32.whl", hash = "sha256:abbb9e76177c35d4e8568e58650aa6926040d6a9f6f03435b7a522bf1c487f9a", size = 36676, upload-time = "2025-01-14T10:34:37.962Z" }, - { url = "https://files.pythonhosted.org/packages/bf/ae/743f16ef8c2e3628df3ddfd652b7d4c555d12c84b53f3d8218498f4ade9b/wrapt-1.17.2-cp313-cp313-win_amd64.whl", hash = "sha256:69606d7bb691b50a4240ce6b22ebb319c1cfb164e5f6569835058196e0f3a845", size = 38871, upload-time = "2025-01-14T10:34:39.13Z" }, - { url = "https://files.pythonhosted.org/packages/3d/bc/30f903f891a82d402ffb5fda27ec1d621cc97cb74c16fea0b6141f1d4e87/wrapt-1.17.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:4a721d3c943dae44f8e243b380cb645a709ba5bd35d3ad27bc2ed947e9c68192", size = 56312, upload-time = "2025-01-14T10:34:40.604Z" }, - { url = "https://files.pythonhosted.org/packages/8a/04/c97273eb491b5f1c918857cd26f314b74fc9b29224521f5b83f872253725/wrapt-1.17.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:766d8bbefcb9e00c3ac3b000d9acc51f1b399513f44d77dfe0eb026ad7c9a19b", size = 40062, upload-time = "2025-01-14T10:34:45.011Z" }, - { url = "https://files.pythonhosted.org/packages/4e/ca/3b7afa1eae3a9e7fefe499db9b96813f41828b9fdb016ee836c4c379dadb/wrapt-1.17.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e496a8ce2c256da1eb98bd15803a79bee00fc351f5dfb9ea82594a3f058309e0", size = 40155, upload-time = "2025-01-14T10:34:47.25Z" }, - { url = "https://files.pythonhosted.org/packages/89/be/7c1baed43290775cb9030c774bc53c860db140397047cc49aedaf0a15477/wrapt-1.17.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d615e4fe22f4ad3528448c193b218e077656ca9ccb22ce2cb20db730f8d306", size = 113471, upload-time = "2025-01-14T10:34:50.934Z" }, - { url = "https://files.pythonhosted.org/packages/32/98/4ed894cf012b6d6aae5f5cc974006bdeb92f0241775addad3f8cd6ab71c8/wrapt-1.17.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a5aaeff38654462bc4b09023918b7f21790efb807f54c000a39d41d69cf552cb", size = 101208, upload-time = "2025-01-14T10:34:52.297Z" }, - { url = "https://files.pythonhosted.org/packages/ea/fd/0c30f2301ca94e655e5e057012e83284ce8c545df7661a78d8bfca2fac7a/wrapt-1.17.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a7d15bbd2bc99e92e39f49a04653062ee6085c0e18b3b7512a4f2fe91f2d681", size = 109339, upload-time = "2025-01-14T10:34:53.489Z" }, - { url = "https://files.pythonhosted.org/packages/75/56/05d000de894c4cfcb84bcd6b1df6214297b8089a7bd324c21a4765e49b14/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:e3890b508a23299083e065f435a492b5435eba6e304a7114d2f919d400888cc6", size = 110232, upload-time = "2025-01-14T10:34:55.327Z" }, - { url = "https://files.pythonhosted.org/packages/53/f8/c3f6b2cf9b9277fb0813418e1503e68414cd036b3b099c823379c9575e6d/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:8c8b293cd65ad716d13d8dd3624e42e5a19cc2a2f1acc74b30c2c13f15cb61a6", size = 100476, upload-time = "2025-01-14T10:34:58.055Z" }, - { url = "https://files.pythonhosted.org/packages/a7/b1/0bb11e29aa5139d90b770ebbfa167267b1fc548d2302c30c8f7572851738/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4c82b8785d98cdd9fed4cac84d765d234ed3251bd6afe34cb7ac523cb93e8b4f", size = 106377, upload-time = "2025-01-14T10:34:59.3Z" }, - { url = "https://files.pythonhosted.org/packages/6a/e1/0122853035b40b3f333bbb25f1939fc1045e21dd518f7f0922b60c156f7c/wrapt-1.17.2-cp313-cp313t-win32.whl", hash = "sha256:13e6afb7fe71fe7485a4550a8844cc9ffbe263c0f1a1eea569bc7091d4898555", size = 37986, upload-time = "2025-01-14T10:35:00.498Z" }, - { url = "https://files.pythonhosted.org/packages/09/5e/1655cf481e079c1f22d0cabdd4e51733679932718dc23bf2db175f329b76/wrapt-1.17.2-cp313-cp313t-win_amd64.whl", hash = "sha256:eaf675418ed6b3b31c7a989fd007fa7c3be66ce14e5c3b27336383604c9da85c", size = 40750, upload-time = "2025-01-14T10:35:03.378Z" }, - { url = "https://files.pythonhosted.org/packages/8a/f4/6ed2b8f6f1c832933283974839b88ec7c983fd12905e01e97889dadf7559/wrapt-1.17.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:99039fa9e6306880572915728d7f6c24a86ec57b0a83f6b2491e1d8ab0235b9a", size = 53308, upload-time = "2025-01-14T10:35:24.413Z" }, - { url = "https://files.pythonhosted.org/packages/a2/a9/712a53f8f4f4545768ac532619f6e56d5d0364a87b2212531685e89aeef8/wrapt-1.17.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2696993ee1eebd20b8e4ee4356483c4cb696066ddc24bd70bcbb80fa56ff9061", size = 38489, upload-time = "2025-01-14T10:35:26.913Z" }, - { url = "https://files.pythonhosted.org/packages/fa/9b/e172c8f28a489a2888df18f953e2f6cb8d33b1a2e78c9dfc52d8bf6a5ead/wrapt-1.17.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:612dff5db80beef9e649c6d803a8d50c409082f1fedc9dbcdfde2983b2025b82", size = 38776, upload-time = "2025-01-14T10:35:28.183Z" }, - { url = "https://files.pythonhosted.org/packages/cf/cb/7a07b51762dcd59bdbe07aa97f87b3169766cadf240f48d1cbe70a1be9db/wrapt-1.17.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62c2caa1585c82b3f7a7ab56afef7b3602021d6da34fbc1cf234ff139fed3cd9", size = 83050, upload-time = "2025-01-14T10:35:30.645Z" }, - { url = "https://files.pythonhosted.org/packages/a5/51/a42757dd41032afd6d8037617aa3bc6803ba971850733b24dfb7d5c627c4/wrapt-1.17.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c958bcfd59bacc2d0249dcfe575e71da54f9dcf4a8bdf89c4cb9a68a1170d73f", size = 74718, upload-time = "2025-01-14T10:35:32.047Z" }, - { url = "https://files.pythonhosted.org/packages/bf/bb/d552bfe47db02fcfc950fc563073a33500f8108efa5f7b41db2f83a59028/wrapt-1.17.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc78a84e2dfbc27afe4b2bd7c80c8db9bca75cc5b85df52bfe634596a1da846b", size = 82590, upload-time = "2025-01-14T10:35:33.329Z" }, - { url = "https://files.pythonhosted.org/packages/77/99/77b06b3c3c410dbae411105bf22496facf03a5496bfaca8fbcf9da381889/wrapt-1.17.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:ba0f0eb61ef00ea10e00eb53a9129501f52385c44853dbd6c4ad3f403603083f", size = 81462, upload-time = "2025-01-14T10:35:34.933Z" }, - { url = "https://files.pythonhosted.org/packages/2d/21/cf0bd85ae66f92600829ea1de8e1da778e5e9f6e574ccbe74b66db0d95db/wrapt-1.17.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1e1fe0e6ab7775fd842bc39e86f6dcfc4507ab0ffe206093e76d61cde37225c8", size = 74309, upload-time = "2025-01-14T10:35:37.542Z" }, - { url = "https://files.pythonhosted.org/packages/6d/16/112d25e9092398a0dd6fec50ab7ac1b775a0c19b428f049785096067ada9/wrapt-1.17.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:c86563182421896d73858e08e1db93afdd2b947a70064b813d515d66549e15f9", size = 81081, upload-time = "2025-01-14T10:35:38.9Z" }, - { url = "https://files.pythonhosted.org/packages/2b/49/364a615a0cc0872685646c495c7172e4fc7bf1959e3b12a1807a03014e05/wrapt-1.17.2-cp39-cp39-win32.whl", hash = "sha256:f393cda562f79828f38a819f4788641ac7c4085f30f1ce1a68672baa686482bb", size = 36423, upload-time = "2025-01-14T10:35:40.177Z" }, - { url = "https://files.pythonhosted.org/packages/00/ad/5d2c1b34ba3202cd833d9221833e74d6500ce66730974993a8dc9a94fb8c/wrapt-1.17.2-cp39-cp39-win_amd64.whl", hash = "sha256:36ccae62f64235cf8ddb682073a60519426fdd4725524ae38874adf72b5f2aeb", size = 38772, upload-time = "2025-01-14T10:35:42.763Z" }, - { url = "https://files.pythonhosted.org/packages/2d/82/f56956041adef78f849db6b289b282e72b55ab8045a75abad81898c28d19/wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8", size = 23594, upload-time = "2025-01-14T10:35:44.018Z" }, -] - -[[package]] -name = "yarl" -version = "1.20.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "idna" }, - { name = "multidict" }, - { name = "propcache" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/3c/fb/efaa23fa4e45537b827620f04cf8f3cd658b76642205162e072703a5b963/yarl-1.20.1.tar.gz", hash = "sha256:d017a4997ee50c91fd5466cef416231bb82177b93b029906cefc542ce14c35ac", size = 186428, upload-time = "2025-06-10T00:46:09.923Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cb/65/7fed0d774abf47487c64be14e9223749468922817b5e8792b8a64792a1bb/yarl-1.20.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6032e6da6abd41e4acda34d75a816012717000fa6839f37124a47fcefc49bec4", size = 132910, upload-time = "2025-06-10T00:42:31.108Z" }, - { url = "https://files.pythonhosted.org/packages/8a/7b/988f55a52da99df9e56dc733b8e4e5a6ae2090081dc2754fc8fd34e60aa0/yarl-1.20.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2c7b34d804b8cf9b214f05015c4fee2ebe7ed05cf581e7192c06555c71f4446a", size = 90644, upload-time = "2025-06-10T00:42:33.851Z" }, - { url = "https://files.pythonhosted.org/packages/f7/de/30d98f03e95d30c7e3cc093759982d038c8833ec2451001d45ef4854edc1/yarl-1.20.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0c869f2651cc77465f6cd01d938d91a11d9ea5d798738c1dc077f3de0b5e5fed", size = 89322, upload-time = "2025-06-10T00:42:35.688Z" }, - { url = "https://files.pythonhosted.org/packages/e0/7a/f2f314f5ebfe9200724b0b748de2186b927acb334cf964fd312eb86fc286/yarl-1.20.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62915e6688eb4d180d93840cda4110995ad50c459bf931b8b3775b37c264af1e", size = 323786, upload-time = "2025-06-10T00:42:37.817Z" }, - { url = "https://files.pythonhosted.org/packages/15/3f/718d26f189db96d993d14b984ce91de52e76309d0fd1d4296f34039856aa/yarl-1.20.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:41ebd28167bc6af8abb97fec1a399f412eec5fd61a3ccbe2305a18b84fb4ca73", size = 319627, upload-time = "2025-06-10T00:42:39.937Z" }, - { url = "https://files.pythonhosted.org/packages/a5/76/8fcfbf5fa2369157b9898962a4a7d96764b287b085b5b3d9ffae69cdefd1/yarl-1.20.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:21242b4288a6d56f04ea193adde174b7e347ac46ce6bc84989ff7c1b1ecea84e", size = 339149, upload-time = "2025-06-10T00:42:42.627Z" }, - { url = "https://files.pythonhosted.org/packages/3c/95/d7fc301cc4661785967acc04f54a4a42d5124905e27db27bb578aac49b5c/yarl-1.20.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bea21cdae6c7eb02ba02a475f37463abfe0a01f5d7200121b03e605d6a0439f8", size = 333327, upload-time = "2025-06-10T00:42:44.842Z" }, - { url = "https://files.pythonhosted.org/packages/65/94/e21269718349582eee81efc5c1c08ee71c816bfc1585b77d0ec3f58089eb/yarl-1.20.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f8a891e4a22a89f5dde7862994485e19db246b70bb288d3ce73a34422e55b23", size = 326054, upload-time = "2025-06-10T00:42:47.149Z" }, - { url = "https://files.pythonhosted.org/packages/32/ae/8616d1f07853704523519f6131d21f092e567c5af93de7e3e94b38d7f065/yarl-1.20.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dd803820d44c8853a109a34e3660e5a61beae12970da479cf44aa2954019bf70", size = 315035, upload-time = "2025-06-10T00:42:48.852Z" }, - { url = "https://files.pythonhosted.org/packages/48/aa/0ace06280861ef055855333707db5e49c6e3a08840a7ce62682259d0a6c0/yarl-1.20.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b982fa7f74c80d5c0c7b5b38f908971e513380a10fecea528091405f519b9ebb", size = 338962, upload-time = "2025-06-10T00:42:51.024Z" }, - { url = "https://files.pythonhosted.org/packages/20/52/1e9d0e6916f45a8fb50e6844f01cb34692455f1acd548606cbda8134cd1e/yarl-1.20.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:33f29ecfe0330c570d997bcf1afd304377f2e48f61447f37e846a6058a4d33b2", size = 335399, upload-time = "2025-06-10T00:42:53.007Z" }, - { url = "https://files.pythonhosted.org/packages/f2/65/60452df742952c630e82f394cd409de10610481d9043aa14c61bf846b7b1/yarl-1.20.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:835ab2cfc74d5eb4a6a528c57f05688099da41cf4957cf08cad38647e4a83b30", size = 338649, upload-time = "2025-06-10T00:42:54.964Z" }, - { url = "https://files.pythonhosted.org/packages/7b/f5/6cd4ff38dcde57a70f23719a838665ee17079640c77087404c3d34da6727/yarl-1.20.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:46b5e0ccf1943a9a6e766b2c2b8c732c55b34e28be57d8daa2b3c1d1d4009309", size = 358563, upload-time = "2025-06-10T00:42:57.28Z" }, - { url = "https://files.pythonhosted.org/packages/d1/90/c42eefd79d0d8222cb3227bdd51b640c0c1d0aa33fe4cc86c36eccba77d3/yarl-1.20.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:df47c55f7d74127d1b11251fe6397d84afdde0d53b90bedb46a23c0e534f9d24", size = 357609, upload-time = "2025-06-10T00:42:59.055Z" }, - { url = "https://files.pythonhosted.org/packages/03/c8/cea6b232cb4617514232e0f8a718153a95b5d82b5290711b201545825532/yarl-1.20.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:76d12524d05841276b0e22573f28d5fbcb67589836772ae9244d90dd7d66aa13", size = 350224, upload-time = "2025-06-10T00:43:01.248Z" }, - { url = "https://files.pythonhosted.org/packages/ce/a3/eaa0ab9712f1f3d01faf43cf6f1f7210ce4ea4a7e9b28b489a2261ca8db9/yarl-1.20.1-cp310-cp310-win32.whl", hash = "sha256:6c4fbf6b02d70e512d7ade4b1f998f237137f1417ab07ec06358ea04f69134f8", size = 81753, upload-time = "2025-06-10T00:43:03.486Z" }, - { url = "https://files.pythonhosted.org/packages/8f/34/e4abde70a9256465fe31c88ed02c3f8502b7b5dead693a4f350a06413f28/yarl-1.20.1-cp310-cp310-win_amd64.whl", hash = "sha256:aef6c4d69554d44b7f9d923245f8ad9a707d971e6209d51279196d8e8fe1ae16", size = 86817, upload-time = "2025-06-10T00:43:05.231Z" }, - { url = "https://files.pythonhosted.org/packages/b1/18/893b50efc2350e47a874c5c2d67e55a0ea5df91186b2a6f5ac52eff887cd/yarl-1.20.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:47ee6188fea634bdfaeb2cc420f5b3b17332e6225ce88149a17c413c77ff269e", size = 133833, upload-time = "2025-06-10T00:43:07.393Z" }, - { url = "https://files.pythonhosted.org/packages/89/ed/b8773448030e6fc47fa797f099ab9eab151a43a25717f9ac043844ad5ea3/yarl-1.20.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d0f6500f69e8402d513e5eedb77a4e1818691e8f45e6b687147963514d84b44b", size = 91070, upload-time = "2025-06-10T00:43:09.538Z" }, - { url = "https://files.pythonhosted.org/packages/e3/e3/409bd17b1e42619bf69f60e4f031ce1ccb29bd7380117a55529e76933464/yarl-1.20.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7a8900a42fcdaad568de58887c7b2f602962356908eedb7628eaf6021a6e435b", size = 89818, upload-time = "2025-06-10T00:43:11.575Z" }, - { url = "https://files.pythonhosted.org/packages/f8/77/64d8431a4d77c856eb2d82aa3de2ad6741365245a29b3a9543cd598ed8c5/yarl-1.20.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bad6d131fda8ef508b36be3ece16d0902e80b88ea7200f030a0f6c11d9e508d4", size = 347003, upload-time = "2025-06-10T00:43:14.088Z" }, - { url = "https://files.pythonhosted.org/packages/8d/d2/0c7e4def093dcef0bd9fa22d4d24b023788b0a33b8d0088b51aa51e21e99/yarl-1.20.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:df018d92fe22aaebb679a7f89fe0c0f368ec497e3dda6cb81a567610f04501f1", size = 336537, upload-time = "2025-06-10T00:43:16.431Z" }, - { url = "https://files.pythonhosted.org/packages/f0/f3/fc514f4b2cf02cb59d10cbfe228691d25929ce8f72a38db07d3febc3f706/yarl-1.20.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f969afbb0a9b63c18d0feecf0db09d164b7a44a053e78a7d05f5df163e43833", size = 362358, upload-time = "2025-06-10T00:43:18.704Z" }, - { url = "https://files.pythonhosted.org/packages/ea/6d/a313ac8d8391381ff9006ac05f1d4331cee3b1efaa833a53d12253733255/yarl-1.20.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:812303eb4aa98e302886ccda58d6b099e3576b1b9276161469c25803a8db277d", size = 357362, upload-time = "2025-06-10T00:43:20.888Z" }, - { url = "https://files.pythonhosted.org/packages/00/70/8f78a95d6935a70263d46caa3dd18e1f223cf2f2ff2037baa01a22bc5b22/yarl-1.20.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98c4a7d166635147924aa0bf9bfe8d8abad6fffa6102de9c99ea04a1376f91e8", size = 348979, upload-time = "2025-06-10T00:43:23.169Z" }, - { url = "https://files.pythonhosted.org/packages/cb/05/42773027968968f4f15143553970ee36ead27038d627f457cc44bbbeecf3/yarl-1.20.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:12e768f966538e81e6e7550f9086a6236b16e26cd964cf4df35349970f3551cf", size = 337274, upload-time = "2025-06-10T00:43:27.111Z" }, - { url = "https://files.pythonhosted.org/packages/05/be/665634aa196954156741ea591d2f946f1b78ceee8bb8f28488bf28c0dd62/yarl-1.20.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:fe41919b9d899661c5c28a8b4b0acf704510b88f27f0934ac7a7bebdd8938d5e", size = 363294, upload-time = "2025-06-10T00:43:28.96Z" }, - { url = "https://files.pythonhosted.org/packages/eb/90/73448401d36fa4e210ece5579895731f190d5119c4b66b43b52182e88cd5/yarl-1.20.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:8601bc010d1d7780592f3fc1bdc6c72e2b6466ea34569778422943e1a1f3c389", size = 358169, upload-time = "2025-06-10T00:43:30.701Z" }, - { url = "https://files.pythonhosted.org/packages/c3/b0/fce922d46dc1eb43c811f1889f7daa6001b27a4005587e94878570300881/yarl-1.20.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:daadbdc1f2a9033a2399c42646fbd46da7992e868a5fe9513860122d7fe7a73f", size = 362776, upload-time = "2025-06-10T00:43:32.51Z" }, - { url = "https://files.pythonhosted.org/packages/f1/0d/b172628fce039dae8977fd22caeff3eeebffd52e86060413f5673767c427/yarl-1.20.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:03aa1e041727cb438ca762628109ef1333498b122e4c76dd858d186a37cec845", size = 381341, upload-time = "2025-06-10T00:43:34.543Z" }, - { url = "https://files.pythonhosted.org/packages/6b/9b/5b886d7671f4580209e855974fe1cecec409aa4a89ea58b8f0560dc529b1/yarl-1.20.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:642980ef5e0fa1de5fa96d905c7e00cb2c47cb468bfcac5a18c58e27dbf8d8d1", size = 379988, upload-time = "2025-06-10T00:43:36.489Z" }, - { url = "https://files.pythonhosted.org/packages/73/be/75ef5fd0fcd8f083a5d13f78fd3f009528132a1f2a1d7c925c39fa20aa79/yarl-1.20.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:86971e2795584fe8c002356d3b97ef6c61862720eeff03db2a7c86b678d85b3e", size = 371113, upload-time = "2025-06-10T00:43:38.592Z" }, - { url = "https://files.pythonhosted.org/packages/50/4f/62faab3b479dfdcb741fe9e3f0323e2a7d5cd1ab2edc73221d57ad4834b2/yarl-1.20.1-cp311-cp311-win32.whl", hash = "sha256:597f40615b8d25812f14562699e287f0dcc035d25eb74da72cae043bb884d773", size = 81485, upload-time = "2025-06-10T00:43:41.038Z" }, - { url = "https://files.pythonhosted.org/packages/f0/09/d9c7942f8f05c32ec72cd5c8e041c8b29b5807328b68b4801ff2511d4d5e/yarl-1.20.1-cp311-cp311-win_amd64.whl", hash = "sha256:26ef53a9e726e61e9cd1cda6b478f17e350fb5800b4bd1cd9fe81c4d91cfeb2e", size = 86686, upload-time = "2025-06-10T00:43:42.692Z" }, - { url = "https://files.pythonhosted.org/packages/5f/9a/cb7fad7d73c69f296eda6815e4a2c7ed53fc70c2f136479a91c8e5fbdb6d/yarl-1.20.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdcc4cd244e58593a4379fe60fdee5ac0331f8eb70320a24d591a3be197b94a9", size = 133667, upload-time = "2025-06-10T00:43:44.369Z" }, - { url = "https://files.pythonhosted.org/packages/67/38/688577a1cb1e656e3971fb66a3492501c5a5df56d99722e57c98249e5b8a/yarl-1.20.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b29a2c385a5f5b9c7d9347e5812b6f7ab267193c62d282a540b4fc528c8a9d2a", size = 91025, upload-time = "2025-06-10T00:43:46.295Z" }, - { url = "https://files.pythonhosted.org/packages/50/ec/72991ae51febeb11a42813fc259f0d4c8e0507f2b74b5514618d8b640365/yarl-1.20.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1112ae8154186dfe2de4732197f59c05a83dc814849a5ced892b708033f40dc2", size = 89709, upload-time = "2025-06-10T00:43:48.22Z" }, - { url = "https://files.pythonhosted.org/packages/99/da/4d798025490e89426e9f976702e5f9482005c548c579bdae792a4c37769e/yarl-1.20.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:90bbd29c4fe234233f7fa2b9b121fb63c321830e5d05b45153a2ca68f7d310ee", size = 352287, upload-time = "2025-06-10T00:43:49.924Z" }, - { url = "https://files.pythonhosted.org/packages/1a/26/54a15c6a567aac1c61b18aa0f4b8aa2e285a52d547d1be8bf48abe2b3991/yarl-1.20.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:680e19c7ce3710ac4cd964e90dad99bf9b5029372ba0c7cbfcd55e54d90ea819", size = 345429, upload-time = "2025-06-10T00:43:51.7Z" }, - { url = "https://files.pythonhosted.org/packages/d6/95/9dcf2386cb875b234353b93ec43e40219e14900e046bf6ac118f94b1e353/yarl-1.20.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4a979218c1fdb4246a05efc2cc23859d47c89af463a90b99b7c56094daf25a16", size = 365429, upload-time = "2025-06-10T00:43:53.494Z" }, - { url = "https://files.pythonhosted.org/packages/91/b2/33a8750f6a4bc224242a635f5f2cff6d6ad5ba651f6edcccf721992c21a0/yarl-1.20.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255b468adf57b4a7b65d8aad5b5138dce6a0752c139965711bdcb81bc370e1b6", size = 363862, upload-time = "2025-06-10T00:43:55.766Z" }, - { url = "https://files.pythonhosted.org/packages/98/28/3ab7acc5b51f4434b181b0cee8f1f4b77a65919700a355fb3617f9488874/yarl-1.20.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a97d67108e79cfe22e2b430d80d7571ae57d19f17cda8bb967057ca8a7bf5bfd", size = 355616, upload-time = "2025-06-10T00:43:58.056Z" }, - { url = "https://files.pythonhosted.org/packages/36/a3/f666894aa947a371724ec7cd2e5daa78ee8a777b21509b4252dd7bd15e29/yarl-1.20.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8570d998db4ddbfb9a590b185a0a33dbf8aafb831d07a5257b4ec9948df9cb0a", size = 339954, upload-time = "2025-06-10T00:43:59.773Z" }, - { url = "https://files.pythonhosted.org/packages/f1/81/5f466427e09773c04219d3450d7a1256138a010b6c9f0af2d48565e9ad13/yarl-1.20.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:97c75596019baae7c71ccf1d8cc4738bc08134060d0adfcbe5642f778d1dca38", size = 365575, upload-time = "2025-06-10T00:44:02.051Z" }, - { url = "https://files.pythonhosted.org/packages/2e/e3/e4b0ad8403e97e6c9972dd587388940a032f030ebec196ab81a3b8e94d31/yarl-1.20.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:1c48912653e63aef91ff988c5432832692ac5a1d8f0fb8a33091520b5bbe19ef", size = 365061, upload-time = "2025-06-10T00:44:04.196Z" }, - { url = "https://files.pythonhosted.org/packages/ac/99/b8a142e79eb86c926f9f06452eb13ecb1bb5713bd01dc0038faf5452e544/yarl-1.20.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4c3ae28f3ae1563c50f3d37f064ddb1511ecc1d5584e88c6b7c63cf7702a6d5f", size = 364142, upload-time = "2025-06-10T00:44:06.527Z" }, - { url = "https://files.pythonhosted.org/packages/34/f2/08ed34a4a506d82a1a3e5bab99ccd930a040f9b6449e9fd050320e45845c/yarl-1.20.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c5e9642f27036283550f5f57dc6156c51084b458570b9d0d96100c8bebb186a8", size = 381894, upload-time = "2025-06-10T00:44:08.379Z" }, - { url = "https://files.pythonhosted.org/packages/92/f8/9a3fbf0968eac704f681726eff595dce9b49c8a25cd92bf83df209668285/yarl-1.20.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:2c26b0c49220d5799f7b22c6838409ee9bc58ee5c95361a4d7831f03cc225b5a", size = 383378, upload-time = "2025-06-10T00:44:10.51Z" }, - { url = "https://files.pythonhosted.org/packages/af/85/9363f77bdfa1e4d690957cd39d192c4cacd1c58965df0470a4905253b54f/yarl-1.20.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:564ab3d517e3d01c408c67f2e5247aad4019dcf1969982aba3974b4093279004", size = 374069, upload-time = "2025-06-10T00:44:12.834Z" }, - { url = "https://files.pythonhosted.org/packages/35/99/9918c8739ba271dcd935400cff8b32e3cd319eaf02fcd023d5dcd487a7c8/yarl-1.20.1-cp312-cp312-win32.whl", hash = "sha256:daea0d313868da1cf2fac6b2d3a25c6e3a9e879483244be38c8e6a41f1d876a5", size = 81249, upload-time = "2025-06-10T00:44:14.731Z" }, - { url = "https://files.pythonhosted.org/packages/eb/83/5d9092950565481b413b31a23e75dd3418ff0a277d6e0abf3729d4d1ce25/yarl-1.20.1-cp312-cp312-win_amd64.whl", hash = "sha256:48ea7d7f9be0487339828a4de0360d7ce0efc06524a48e1810f945c45b813698", size = 86710, upload-time = "2025-06-10T00:44:16.716Z" }, - { url = "https://files.pythonhosted.org/packages/8a/e1/2411b6d7f769a07687acee88a062af5833cf1966b7266f3d8dfb3d3dc7d3/yarl-1.20.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:0b5ff0fbb7c9f1b1b5ab53330acbfc5247893069e7716840c8e7d5bb7355038a", size = 131811, upload-time = "2025-06-10T00:44:18.933Z" }, - { url = "https://files.pythonhosted.org/packages/b2/27/584394e1cb76fb771371770eccad35de400e7b434ce3142c2dd27392c968/yarl-1.20.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:14f326acd845c2b2e2eb38fb1346c94f7f3b01a4f5c788f8144f9b630bfff9a3", size = 90078, upload-time = "2025-06-10T00:44:20.635Z" }, - { url = "https://files.pythonhosted.org/packages/bf/9a/3246ae92d4049099f52d9b0fe3486e3b500e29b7ea872d0f152966fc209d/yarl-1.20.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f60e4ad5db23f0b96e49c018596707c3ae89f5d0bd97f0ad3684bcbad899f1e7", size = 88748, upload-time = "2025-06-10T00:44:22.34Z" }, - { url = "https://files.pythonhosted.org/packages/a3/25/35afe384e31115a1a801fbcf84012d7a066d89035befae7c5d4284df1e03/yarl-1.20.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:49bdd1b8e00ce57e68ba51916e4bb04461746e794e7c4d4bbc42ba2f18297691", size = 349595, upload-time = "2025-06-10T00:44:24.314Z" }, - { url = "https://files.pythonhosted.org/packages/28/2d/8aca6cb2cabc8f12efcb82749b9cefecbccfc7b0384e56cd71058ccee433/yarl-1.20.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:66252d780b45189975abfed839616e8fd2dbacbdc262105ad7742c6ae58f3e31", size = 342616, upload-time = "2025-06-10T00:44:26.167Z" }, - { url = "https://files.pythonhosted.org/packages/0b/e9/1312633d16b31acf0098d30440ca855e3492d66623dafb8e25b03d00c3da/yarl-1.20.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59174e7332f5d153d8f7452a102b103e2e74035ad085f404df2e40e663a22b28", size = 361324, upload-time = "2025-06-10T00:44:27.915Z" }, - { url = "https://files.pythonhosted.org/packages/bc/a0/688cc99463f12f7669eec7c8acc71ef56a1521b99eab7cd3abb75af887b0/yarl-1.20.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e3968ec7d92a0c0f9ac34d5ecfd03869ec0cab0697c91a45db3fbbd95fe1b653", size = 359676, upload-time = "2025-06-10T00:44:30.041Z" }, - { url = "https://files.pythonhosted.org/packages/af/44/46407d7f7a56e9a85a4c207724c9f2c545c060380718eea9088f222ba697/yarl-1.20.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d1a4fbb50e14396ba3d375f68bfe02215d8e7bc3ec49da8341fe3157f59d2ff5", size = 352614, upload-time = "2025-06-10T00:44:32.171Z" }, - { url = "https://files.pythonhosted.org/packages/b1/91/31163295e82b8d5485d31d9cf7754d973d41915cadce070491778d9c9825/yarl-1.20.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11a62c839c3a8eac2410e951301309426f368388ff2f33799052787035793b02", size = 336766, upload-time = "2025-06-10T00:44:34.494Z" }, - { url = "https://files.pythonhosted.org/packages/b4/8e/c41a5bc482121f51c083c4c2bcd16b9e01e1cf8729e380273a952513a21f/yarl-1.20.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:041eaa14f73ff5a8986b4388ac6bb43a77f2ea09bf1913df7a35d4646db69e53", size = 364615, upload-time = "2025-06-10T00:44:36.856Z" }, - { url = "https://files.pythonhosted.org/packages/e3/5b/61a3b054238d33d70ea06ebba7e58597891b71c699e247df35cc984ab393/yarl-1.20.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:377fae2fef158e8fd9d60b4c8751387b8d1fb121d3d0b8e9b0be07d1b41e83dc", size = 360982, upload-time = "2025-06-10T00:44:39.141Z" }, - { url = "https://files.pythonhosted.org/packages/df/a3/6a72fb83f8d478cb201d14927bc8040af901811a88e0ff2da7842dd0ed19/yarl-1.20.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:1c92f4390e407513f619d49319023664643d3339bd5e5a56a3bebe01bc67ec04", size = 369792, upload-time = "2025-06-10T00:44:40.934Z" }, - { url = "https://files.pythonhosted.org/packages/7c/af/4cc3c36dfc7c077f8dedb561eb21f69e1e9f2456b91b593882b0b18c19dc/yarl-1.20.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:d25ddcf954df1754ab0f86bb696af765c5bfaba39b74095f27eececa049ef9a4", size = 382049, upload-time = "2025-06-10T00:44:42.854Z" }, - { url = "https://files.pythonhosted.org/packages/19/3a/e54e2c4752160115183a66dc9ee75a153f81f3ab2ba4bf79c3c53b33de34/yarl-1.20.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:909313577e9619dcff8c31a0ea2aa0a2a828341d92673015456b3ae492e7317b", size = 384774, upload-time = "2025-06-10T00:44:45.275Z" }, - { url = "https://files.pythonhosted.org/packages/9c/20/200ae86dabfca89060ec6447649f219b4cbd94531e425e50d57e5f5ac330/yarl-1.20.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:793fd0580cb9664548c6b83c63b43c477212c0260891ddf86809e1c06c8b08f1", size = 374252, upload-time = "2025-06-10T00:44:47.31Z" }, - { url = "https://files.pythonhosted.org/packages/83/75/11ee332f2f516b3d094e89448da73d557687f7d137d5a0f48c40ff211487/yarl-1.20.1-cp313-cp313-win32.whl", hash = "sha256:468f6e40285de5a5b3c44981ca3a319a4b208ccc07d526b20b12aeedcfa654b7", size = 81198, upload-time = "2025-06-10T00:44:49.164Z" }, - { url = "https://files.pythonhosted.org/packages/ba/ba/39b1ecbf51620b40ab402b0fc817f0ff750f6d92712b44689c2c215be89d/yarl-1.20.1-cp313-cp313-win_amd64.whl", hash = "sha256:495b4ef2fea40596bfc0affe3837411d6aa3371abcf31aac0ccc4bdd64d4ef5c", size = 86346, upload-time = "2025-06-10T00:44:51.182Z" }, - { url = "https://files.pythonhosted.org/packages/43/c7/669c52519dca4c95153c8ad96dd123c79f354a376346b198f438e56ffeb4/yarl-1.20.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:f60233b98423aab21d249a30eb27c389c14929f47be8430efa7dbd91493a729d", size = 138826, upload-time = "2025-06-10T00:44:52.883Z" }, - { url = "https://files.pythonhosted.org/packages/6a/42/fc0053719b44f6ad04a75d7f05e0e9674d45ef62f2d9ad2c1163e5c05827/yarl-1.20.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:6f3eff4cc3f03d650d8755c6eefc844edde99d641d0dcf4da3ab27141a5f8ddf", size = 93217, upload-time = "2025-06-10T00:44:54.658Z" }, - { url = "https://files.pythonhosted.org/packages/4f/7f/fa59c4c27e2a076bba0d959386e26eba77eb52ea4a0aac48e3515c186b4c/yarl-1.20.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:69ff8439d8ba832d6bed88af2c2b3445977eba9a4588b787b32945871c2444e3", size = 92700, upload-time = "2025-06-10T00:44:56.784Z" }, - { url = "https://files.pythonhosted.org/packages/2f/d4/062b2f48e7c93481e88eff97a6312dca15ea200e959f23e96d8ab898c5b8/yarl-1.20.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3cf34efa60eb81dd2645a2e13e00bb98b76c35ab5061a3989c7a70f78c85006d", size = 347644, upload-time = "2025-06-10T00:44:59.071Z" }, - { url = "https://files.pythonhosted.org/packages/89/47/78b7f40d13c8f62b499cc702fdf69e090455518ae544c00a3bf4afc9fc77/yarl-1.20.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:8e0fe9364ad0fddab2688ce72cb7a8e61ea42eff3c7caeeb83874a5d479c896c", size = 323452, upload-time = "2025-06-10T00:45:01.605Z" }, - { url = "https://files.pythonhosted.org/packages/eb/2b/490d3b2dc66f52987d4ee0d3090a147ea67732ce6b4d61e362c1846d0d32/yarl-1.20.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f64fbf81878ba914562c672024089e3401974a39767747691c65080a67b18c1", size = 346378, upload-time = "2025-06-10T00:45:03.946Z" }, - { url = "https://files.pythonhosted.org/packages/66/ad/775da9c8a94ce925d1537f939a4f17d782efef1f973039d821cbe4bcc211/yarl-1.20.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f6342d643bf9a1de97e512e45e4b9560a043347e779a173250824f8b254bd5ce", size = 353261, upload-time = "2025-06-10T00:45:05.992Z" }, - { url = "https://files.pythonhosted.org/packages/4b/23/0ed0922b47a4f5c6eb9065d5ff1e459747226ddce5c6a4c111e728c9f701/yarl-1.20.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56dac5f452ed25eef0f6e3c6a066c6ab68971d96a9fb441791cad0efba6140d3", size = 335987, upload-time = "2025-06-10T00:45:08.227Z" }, - { url = "https://files.pythonhosted.org/packages/3e/49/bc728a7fe7d0e9336e2b78f0958a2d6b288ba89f25a1762407a222bf53c3/yarl-1.20.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7d7f497126d65e2cad8dc5f97d34c27b19199b6414a40cb36b52f41b79014be", size = 329361, upload-time = "2025-06-10T00:45:10.11Z" }, - { url = "https://files.pythonhosted.org/packages/93/8f/b811b9d1f617c83c907e7082a76e2b92b655400e61730cd61a1f67178393/yarl-1.20.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:67e708dfb8e78d8a19169818eeb5c7a80717562de9051bf2413aca8e3696bf16", size = 346460, upload-time = "2025-06-10T00:45:12.055Z" }, - { url = "https://files.pythonhosted.org/packages/70/fd/af94f04f275f95da2c3b8b5e1d49e3e79f1ed8b6ceb0f1664cbd902773ff/yarl-1.20.1-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:595c07bc79af2494365cc96ddeb772f76272364ef7c80fb892ef9d0649586513", size = 334486, upload-time = "2025-06-10T00:45:13.995Z" }, - { url = "https://files.pythonhosted.org/packages/84/65/04c62e82704e7dd0a9b3f61dbaa8447f8507655fd16c51da0637b39b2910/yarl-1.20.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:7bdd2f80f4a7df852ab9ab49484a4dee8030023aa536df41f2d922fd57bf023f", size = 342219, upload-time = "2025-06-10T00:45:16.479Z" }, - { url = "https://files.pythonhosted.org/packages/91/95/459ca62eb958381b342d94ab9a4b6aec1ddec1f7057c487e926f03c06d30/yarl-1.20.1-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:c03bfebc4ae8d862f853a9757199677ab74ec25424d0ebd68a0027e9c639a390", size = 350693, upload-time = "2025-06-10T00:45:18.399Z" }, - { url = "https://files.pythonhosted.org/packages/a6/00/d393e82dd955ad20617abc546a8f1aee40534d599ff555ea053d0ec9bf03/yarl-1.20.1-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:344d1103e9c1523f32a5ed704d576172d2cabed3122ea90b1d4e11fe17c66458", size = 355803, upload-time = "2025-06-10T00:45:20.677Z" }, - { url = "https://files.pythonhosted.org/packages/9e/ed/c5fb04869b99b717985e244fd93029c7a8e8febdfcffa06093e32d7d44e7/yarl-1.20.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:88cab98aa4e13e1ade8c141daeedd300a4603b7132819c484841bb7af3edce9e", size = 341709, upload-time = "2025-06-10T00:45:23.221Z" }, - { url = "https://files.pythonhosted.org/packages/24/fd/725b8e73ac2a50e78a4534ac43c6addf5c1c2d65380dd48a9169cc6739a9/yarl-1.20.1-cp313-cp313t-win32.whl", hash = "sha256:b121ff6a7cbd4abc28985b6028235491941b9fe8fe226e6fdc539c977ea1739d", size = 86591, upload-time = "2025-06-10T00:45:25.793Z" }, - { url = "https://files.pythonhosted.org/packages/94/c3/b2e9f38bc3e11191981d57ea08cab2166e74ea770024a646617c9cddd9f6/yarl-1.20.1-cp313-cp313t-win_amd64.whl", hash = "sha256:541d050a355bbbc27e55d906bc91cb6fe42f96c01413dd0f4ed5a5240513874f", size = 93003, upload-time = "2025-06-10T00:45:27.752Z" }, - { url = "https://files.pythonhosted.org/packages/01/75/0d37402d208d025afa6b5b8eb80e466d267d3fd1927db8e317d29a94a4cb/yarl-1.20.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e42ba79e2efb6845ebab49c7bf20306c4edf74a0b20fc6b2ccdd1a219d12fad3", size = 134259, upload-time = "2025-06-10T00:45:29.882Z" }, - { url = "https://files.pythonhosted.org/packages/73/84/1fb6c85ae0cf9901046f07d0ac9eb162f7ce6d95db541130aa542ed377e6/yarl-1.20.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:41493b9b7c312ac448b7f0a42a089dffe1d6e6e981a2d76205801a023ed26a2b", size = 91269, upload-time = "2025-06-10T00:45:32.917Z" }, - { url = "https://files.pythonhosted.org/packages/f3/9c/eae746b24c4ea29a5accba9a06c197a70fa38a49c7df244e0d3951108861/yarl-1.20.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f5a5928ff5eb13408c62a968ac90d43f8322fd56d87008b8f9dabf3c0f6ee983", size = 89995, upload-time = "2025-06-10T00:45:35.066Z" }, - { url = "https://files.pythonhosted.org/packages/fb/30/693e71003ec4bc1daf2e4cf7c478c417d0985e0a8e8f00b2230d517876fc/yarl-1.20.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30c41ad5d717b3961b2dd785593b67d386b73feca30522048d37298fee981805", size = 325253, upload-time = "2025-06-10T00:45:37.052Z" }, - { url = "https://files.pythonhosted.org/packages/0f/a2/5264dbebf90763139aeb0b0b3154763239398400f754ae19a0518b654117/yarl-1.20.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:59febc3969b0781682b469d4aca1a5cab7505a4f7b85acf6db01fa500fa3f6ba", size = 320897, upload-time = "2025-06-10T00:45:39.962Z" }, - { url = "https://files.pythonhosted.org/packages/e7/17/77c7a89b3c05856489777e922f41db79ab4faf58621886df40d812c7facd/yarl-1.20.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d2b6fb3622b7e5bf7a6e5b679a69326b4279e805ed1699d749739a61d242449e", size = 340696, upload-time = "2025-06-10T00:45:41.915Z" }, - { url = "https://files.pythonhosted.org/packages/6d/55/28409330b8ef5f2f681f5b478150496ec9cf3309b149dab7ec8ab5cfa3f0/yarl-1.20.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:749d73611db8d26a6281086f859ea7ec08f9c4c56cec864e52028c8b328db723", size = 335064, upload-time = "2025-06-10T00:45:43.893Z" }, - { url = "https://files.pythonhosted.org/packages/85/58/cb0257cbd4002828ff735f44d3c5b6966c4fd1fc8cc1cd3cd8a143fbc513/yarl-1.20.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9427925776096e664c39e131447aa20ec738bdd77c049c48ea5200db2237e000", size = 327256, upload-time = "2025-06-10T00:45:46.393Z" }, - { url = "https://files.pythonhosted.org/packages/53/f6/c77960370cfa46f6fb3d6a5a79a49d3abfdb9ef92556badc2dcd2748bc2a/yarl-1.20.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff70f32aa316393eaf8222d518ce9118148eddb8a53073c2403863b41033eed5", size = 316389, upload-time = "2025-06-10T00:45:48.358Z" }, - { url = "https://files.pythonhosted.org/packages/64/ab/be0b10b8e029553c10905b6b00c64ecad3ebc8ace44b02293a62579343f6/yarl-1.20.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:c7ddf7a09f38667aea38801da8b8d6bfe81df767d9dfc8c88eb45827b195cd1c", size = 340481, upload-time = "2025-06-10T00:45:50.663Z" }, - { url = "https://files.pythonhosted.org/packages/c5/c3/3f327bd3905a4916029bf5feb7f86dcf864c7704f099715f62155fb386b2/yarl-1.20.1-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:57edc88517d7fc62b174fcfb2e939fbc486a68315d648d7e74d07fac42cec240", size = 336941, upload-time = "2025-06-10T00:45:52.554Z" }, - { url = "https://files.pythonhosted.org/packages/d1/42/040bdd5d3b3bb02b4a6ace4ed4075e02f85df964d6e6cb321795d2a6496a/yarl-1.20.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:dab096ce479d5894d62c26ff4f699ec9072269d514b4edd630a393223f45a0ee", size = 339936, upload-time = "2025-06-10T00:45:54.919Z" }, - { url = "https://files.pythonhosted.org/packages/0d/1c/911867b8e8c7463b84dfdc275e0d99b04b66ad5132b503f184fe76be8ea4/yarl-1.20.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:14a85f3bd2d7bb255be7183e5d7d6e70add151a98edf56a770d6140f5d5f4010", size = 360163, upload-time = "2025-06-10T00:45:56.87Z" }, - { url = "https://files.pythonhosted.org/packages/e2/31/8c389f6c6ca0379b57b2da87f1f126c834777b4931c5ee8427dd65d0ff6b/yarl-1.20.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:2c89b5c792685dd9cd3fa9761c1b9f46fc240c2a3265483acc1565769996a3f8", size = 359108, upload-time = "2025-06-10T00:45:58.869Z" }, - { url = "https://files.pythonhosted.org/packages/7f/09/ae4a649fb3964324c70a3e2b61f45e566d9ffc0affd2b974cbf628957673/yarl-1.20.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:69e9b141de5511021942a6866990aea6d111c9042235de90e08f94cf972ca03d", size = 351875, upload-time = "2025-06-10T00:46:01.45Z" }, - { url = "https://files.pythonhosted.org/packages/8d/43/bbb4ed4c34d5bb62b48bf957f68cd43f736f79059d4f85225ab1ef80f4b9/yarl-1.20.1-cp39-cp39-win32.whl", hash = "sha256:b5f307337819cdfdbb40193cad84978a029f847b0a357fbe49f712063cfc4f06", size = 82293, upload-time = "2025-06-10T00:46:03.763Z" }, - { url = "https://files.pythonhosted.org/packages/d7/cd/ce185848a7dba68ea69e932674b5c1a42a1852123584bccc5443120f857c/yarl-1.20.1-cp39-cp39-win_amd64.whl", hash = "sha256:eae7bfe2069f9c1c5b05fc7fe5d612e5bbc089a39309904ee8b829e322dcad00", size = 87385, upload-time = "2025-06-10T00:46:05.655Z" }, - { url = "https://files.pythonhosted.org/packages/b4/2d/2345fce04cfd4bee161bf1e7d9cdc702e3e16109021035dbb24db654a622/yarl-1.20.1-py3-none-any.whl", hash = "sha256:83b8eb083fe4683c6115795d9fc1cfaf2cbbefb19b3a1cb68f6527460f483a77", size = 46542, upload-time = "2025-06-10T00:46:07.521Z" }, -] - [[package]] name = "zipp" version = "3.23.0" From d62ce6bc21c0c954621d6b91bae4d857ac8cb60e Mon Sep 17 00:00:00 2001 From: Peter Steiner <61472983+renierts@users.noreply.github.com> Date: Tue, 15 Jul 2025 15:48:39 -0400 Subject: [PATCH 050/103] Merged the entire model training processes into FusionAIHub. --- development_guide.md | 261 +++ .../joblib_dataset_examples.py | 657 ++++++++ .../lightning_trainer_example.py | 569 +++++++ examples/Machine_Learning/mae_example.py | 43 + .../Machine_Learning/ray_tune_examples.py | 436 +++++ src/faith/train/__init__.py | 12 + src/faith/train/blocks/__init__.py | 15 +- src/faith/train/blocks/base.py | 137 +- src/faith/train/blocks/decoder.py | 86 +- src/faith/train/blocks/encoder.py | 68 +- src/faith/train/blocks/residual.py | 54 +- .../faith/train/data/__init__.py | 0 src/faith/train/data/datasets/__init__.py | 4 + src/faith/train/data/datasets/base.py | 1411 +++++++++++++++++ src/faith/train/data/datasets/file_based.py | 1163 ++++++++++++++ src/faith/train/data/loaders/__init__.py | 0 src/faith/train/data/loaders/factory.py | 265 ++++ src/faith/train/models/__init__.py | 19 +- src/faith/train/models/autoencoder.py | 136 +- src/faith/train/models/configs.py | 51 - src/faith/train/models/utils.py | 18 +- src/faith/train/training/__init__.py | 13 + src/faith/train/training/lightning_trainer.py | 538 +++++++ src/faith/train/tuning/__init__.py | 33 + src/faith/train/tuning/ray_tuner.py | 666 ++++++++ src/faith/train/tuning/schedulers.py | 0 src/faith/train/tuning/search_spaces.py | 360 +++++ tests/test_autoencoder.py | 69 + tests/test_train_blocks_base.py | 26 + tests/test_train_blocks_decoder.py | 60 + tests/test_train_blocks_encoder.py | 46 + tests/test_train_blocks_residual.py | 20 + tests/test_train_configuration.py | 58 + 33 files changed, 6832 insertions(+), 462 deletions(-) create mode 100644 development_guide.md create mode 100644 examples/Machine_Learning/joblib_dataset_examples.py create mode 100644 examples/Machine_Learning/lightning_trainer_example.py create mode 100644 examples/Machine_Learning/mae_example.py create mode 100644 examples/Machine_Learning/ray_tune_examples.py rename tests/test_residual_block.py => src/faith/train/data/__init__.py (100%) create mode 100644 src/faith/train/data/datasets/__init__.py create mode 100644 src/faith/train/data/datasets/base.py create mode 100644 src/faith/train/data/datasets/file_based.py create mode 100644 src/faith/train/data/loaders/__init__.py create mode 100644 src/faith/train/data/loaders/factory.py create mode 100644 src/faith/train/training/__init__.py create mode 100644 src/faith/train/training/lightning_trainer.py create mode 100644 src/faith/train/tuning/__init__.py create mode 100644 src/faith/train/tuning/ray_tuner.py create mode 100644 src/faith/train/tuning/schedulers.py create mode 100644 src/faith/train/tuning/search_spaces.py create mode 100644 tests/test_autoencoder.py create mode 100644 tests/test_train_blocks_base.py create mode 100644 tests/test_train_blocks_decoder.py create mode 100644 tests/test_train_blocks_encoder.py create mode 100644 tests/test_train_blocks_residual.py create mode 100644 tests/test_train_configuration.py diff --git a/development_guide.md b/development_guide.md new file mode 100644 index 0000000..a284219 --- /dev/null +++ b/development_guide.md @@ -0,0 +1,261 @@ +# Development Guide + +This guide covers the development setup and coding standards for this Python package. + +## Code Standards + +- **Line length**: 79 characters maximum +- **Docstring format**: NumPy style +- **Linting**: Ruff +- **Function arguments**: Each argument on a new line for multi-argument functions + +## IDE Setup + +### PyCharm Setup + +#### 1. Install Ruff Plugin + +1. Go to **File → Settings** +2. Navigate to **Plugins** +3. Search for "Ruff" and install the official Ruff plugin +4. Restart PyCharm + +#### 2. Configure Code Style + +1. Go to **File → Settings → Editor → Code Style → Python** +2. Set **Hard wrap at: ** to `79` +3. In the **Wrapping and Braces** tab: + - Set **Method declaration parameters** to "Chop down if long" + - Check "New line after '('" and "')' on new line" + - Set **Function call arguments** to "Chop down if long" + +#### 3. Configure Docstring Format + +1. Go to **File → Settings → Tools → Python Integrated Tools** +2. Set **Docstring format** to "NumPy" + +#### 4. Configure Ruff + +1. Go to **File → Settings → Tools → Ruff** +2. Enable **Use Ruff** +3. Set the **Ruff executable** path (if not auto-detected) +4. Enable **Run Ruff when files are saved** + +### VSCode Setup + +#### 1. Install Extensions + +Install these extensions from the VSCode marketplace: + +- **Ruff** (charliermarsh.ruff) +- **Python** (ms-python.python) +- **Python Docstring Generator** (njpwerner.autodocstring) + +#### 2. Configure Settings + +Create or update `.vscode/settings.json` in your project root: + +```json +{ + "python.defaultInterpreterPath": "./venv/bin/python", + "editor.rulers": [79], + "editor.wordWrap": "wordWrapColumn", + "editor.wordWrapColumn": 79, + + // Ruff configuration + "ruff.enable": true, + "ruff.organizeImports": true, + "ruff.fixAll": true, + "ruff.codeAction.fixViolation": { + "enable": true + }, + + // Python formatting + "[python]": { + "editor.defaultFormatter": "charliermarsh.ruff", + "editor.formatOnSave": true, + "editor.codeActionsOnSave": { + "source.organizeImports": "explicit", + "source.fixAll": "explicit" + } + }, + + // Docstring configuration + "autoDocstring.docstringFormat": "numpy", + "autoDocstring.startOnNewLine": true, + "autoDocstring.includeExtendedSummary": true, + "autoDocstring.includeName": false, + + // Python specific settings + "python.formatting.provider": "none", + "python.linting.enabled": false, + "python.analysis.typeCheckingMode": "basic" +} +``` + +#### 3. Configure Ruff + +Create `ruff.toml` in your project root: + +```toml +line-length = 79 +target-version = "py38" + +[lint] +select = [ + "E", # pycodestyle errors + "W", # pycodestyle warnings + "F", # pyflakes + "I", # isort + "B", # flake8-bugbear + "C4", # flake8-comprehensions + "UP", # pyupgrade +] +ignore = [ + "E501", # line too long (handled by formatter) +] + +[format] +quote-style = "double" +indent-style = "space" +skip-magic-trailing-comma = false +line-ending = "auto" +``` + +--- + +## Code Examples + +### Function Definition Style + +```python +def my_function( + param1: str, + param2: int, + param3: float = 0.0, + param4: bool = True, +) -> dict: + """ + Brief description of the function. + + Longer description if needed. This can span multiple lines and + should explain what the function does in more detail. + + Parameters + ---------- + param1 : str + Description of param1. + param2 : int + Description of param2. + param3 : float, optional + Description of param3, by default 0.0. + param4 : bool, optional + Description of param4, by default True. + + Returns + ------- + dict + Description of the return value. + + Examples + -------- + >>> result = my_function("hello", 42) + >>> print(result) + {'message': 'hello', 'number': 42} + """ + return {"message": param1, "number": param2, "value": param3} +``` + +### Class Definition Style + +```python +class MyClass: + """ + Brief description of the class. + + Longer description explaining the purpose and usage of the class. + + Parameters + ---------- + name : str + The name of the instance. + value : int + The initial value. + + Attributes + ---------- + name : str + The name of the instance. + value : int + The current value. + + Examples + -------- + >>> obj = MyClass("test", 100) + >>> obj.increment() + >>> print(obj.value) + 101 + """ + + def __init__( + self, + name: str, + value: int, + ) -> None: + self.name = name + self.value = value + + def increment(self) -> None: + """Increment the value by 1.""" + self.value += 1 +``` + +--- + +## Development Workflow + +### 1. Setup Development Environment + +```bash +# Create virtual environment +python -m venv .venv +source venv/bin/activate # On Windows: venv\Scripts\activate + +# Install development dependencies +pip install -e "." +``` + +### 2. Running Tests + +```bash +# Run tests with coverage +pytest --cov=src --cov-report=html + +# Run specific test file +pytest tests/test_example.py + +# Run with verbose output +pytest -v +``` + +### 3. Code Quality Checks + +```bash +# Run ruff linting +ruff check . + +# Run ruff formatting +ruff format . + +# Fix auto-fixable issues +ruff check --fix . +``` + +--- + +## Additional Resources + +- [NumPy Docstring Guide](https://numpydoc.readthedocs.io/en/latest/format.html) +- [Ruff Documentation](https://docs.astral.sh/ruff/) +- [Python Type Hints](https://docs.python.org/3/library/typing.html) +- [pytest Documentation](https://docs.pytest.org/) \ No newline at end of file diff --git a/examples/Machine_Learning/joblib_dataset_examples.py b/examples/Machine_Learning/joblib_dataset_examples.py new file mode 100644 index 0000000..35f70ea --- /dev/null +++ b/examples/Machine_Learning/joblib_dataset_examples.py @@ -0,0 +1,657 @@ +"""Example usage of JoblibDataset with real file inspection and training.""" + +from torch.utils.data import DataLoader +import torch +from pathlib import Path + +# Assuming your package structure +from src.faith.train.data.datasets.file_based import JoblibDataset +from src.faith.train.data.loaders.factory import worker_init_fn +from src.faith.train.models.autoencoder import BlockBasedAutoencoder +from src.faith.train.training import train_model + + +def collate_fn(data: list[tuple[torch.Tensor, ...]]) \ + -> tuple[torch.Tensor, ...]: + """ + Custom collate function to remove the highest frequency bin of + spectrograms. # TODO list of dicts to dict of tensors + + Parameters + ---------- + data : list of tuples + List of tuples containing input and target tensors. + + Returns + ------- + Tuples + Processed list of tuples with the last frequency bin removed. + """ + batch_size = len(data) + if isinstance(data[0], dict): + collated = {} + for key in data[0].keys(): + values = [item[key] for item in data] + + if isinstance(values[0], torch.Tensor): + collated[key] = torch.stack(values) + else: + collated[key] = values + else: + processed_inputs = torch.stack([d[0] for d in data]) + processed_targets = torch.stack([d[1] for d in data]) + + processed_inputs = processed_inputs[:, :, :, :-1] + processed_targets = processed_targets[:, :, :, :-1] + + return processed_inputs, processed_targets + + +def inspect_joblib_file(file_path: str): + """Inspect a joblib file to understand its structure.""" + from joblib import load + + print(f"Inspecting file: {file_path}") + print("=" * 50) + + # Load file to see structure + data_dict = load(file_path, mmap_mode='r') + + print("Available keys:", list(data_dict.keys())) + print() + + # Inspect each key + for key, value in data_dict.items(): + print(f"Key: '{key}'") + if hasattr(value, 'shape'): + print(f" Type: {type(value)}") + print(f" Shape: {value.shape}") + print(f" Dtype: {value.dtype}") + else: + print(f" Type: {type(value)}") + print(f" Value: {value}") + print() + + # Store keys before cleaning up + available_keys = list(data_dict.keys()) + + # Clean up + del data_dict + + return available_keys + + +def example_basic_usage(): + """Basic usage example with a single file.""" + print("EXAMPLE 1: Basic Usage") + print("=" * 40) + + file_path = "171348_0.joblib" # Replace with your actual file + + # First, inspect the file to understand its structure + print("Step 1: Inspect file structure") + available_keys = inspect_joblib_file(file_path) + + # Create dataset with auto-detection + print("Step 2: Create dataset with auto-detection") + dataset = JoblibDataset( + file_paths=[file_path], + subseq_len=128, # Extract 128-sample subsequences + auto_detect_keys=True, # Let it figure out the keys + validate_on_init=True + ) + + print("Dataset created successfully!") + print(f"Total subsequences: {len(dataset)}") + print(f"Is autoencoder mode: {dataset.is_autoencoder_mode}") + print() + + # Test data loading without worker_init() + print("Step 3: Inspect data shapes") + input_shape, target_shape = dataset.get_sample_shape() + print(f"Input shape: {input_shape}") + print(f"Target shape: {target_shape}") + + # Get a sample for inspection + sample_input, sample_target = dataset.peek_sample() + print(f"Sample input dtype: {sample_input.dtype}") + print(f"Sample target dtype: {sample_target.dtype}") + print() + + # Create DataLoader with proper worker init function + print("Step 4: Test DataLoader") + + loader = DataLoader( + dataset, + batch_size=4, + shuffle=True, + num_workers=2, + worker_init_fn=worker_init_fn + ) + + # Test loading a batch + for batch_idx, (inputs, targets) in enumerate(loader): + print(f"Batch {batch_idx}:") + print(f" Input shape: {inputs.shape}") + print(f" Target shape: {targets.shape}") + print(f" Input dtype: {inputs.dtype}") + print(f" Target dtype: {targets.dtype}") + + if batch_idx == 0: # Only show first batch + break + + print() + return dataset + + +def example_custom_configuration(): + """Example with custom key configuration.""" + print("EXAMPLE 2: Custom Configuration") + print("=" * 40) + + file_path = "170797_0.joblib" # Replace with your actual file + + # Create dataset with specific keys (adjust based on your file) + dataset = JoblibDataset( + file_paths=[file_path], + subseq_len=256, # Longer subsequences + input_key=['co2', 'ece'], # Specify your input keys as list + target_key=None, # Autoencoder mode + chunking_strategy='sliding_window', # Overlapping chunks + overlap=64, # 64-sample overlap + validate_on_init=True + ) + + print("Dataset with custom config:") + print(f" Input key: {dataset.input_key}") + print(f" Target key: {dataset.target_key}") + print(f" Subsequence length: {dataset.subseq_len}") + print(f" Chunking strategy: {dataset.chunking_strategy}") + print(f" Is multi-input: {dataset.is_multi_input}") + print(f" Total subsequences: {len(dataset)}") + print() + + # Show dataset summary + summary = dataset.summary() + print("Dataset summary:") + for key, value in summary.items(): + if key not in ['file_metadata', 'file_paths']: # Skip verbose fields + print(f" {key}: {value}") + print() + + # Inspect multi-key data shapes + print("Data shape inspection:") + input_shapes, target_shapes = dataset.get_sample_shape() + print(f"Input shapes: {input_shapes}") + print(f"Target shapes: {target_shapes}") + + # Get sample data to inspect + sample_inputs, sample_targets = dataset.peek_sample() + print("Sample data types:") + if isinstance(sample_inputs, dict): + for key, tensor in sample_inputs.items(): + print( + f" Input '{key}': shape {tensor.shape}, dtype {tensor.dtype}") + if isinstance(sample_targets, dict): + for key, tensor in sample_targets.items(): + print(f" Target '{key}': shape {tensor.shape}, " + f"dtype {tensor.dtype}") + print() + + # Create DataLoader + loader = DataLoader( + dataset, + batch_size=4, + shuffle=True, + num_workers=1, + worker_init_fn=worker_init_fn + ) + + # Test loading a batch + for batch_idx, (inputs, targets) in enumerate(loader): + print(f"Batch {batch_idx}:") + if isinstance(inputs, dict): + print(f" Input keys: {list(inputs.keys())}") + for key, val in inputs.items(): + print(f" Input '{key}' shape: {val.shape}, " + f"dtype: {val.dtype}") + if isinstance(targets, dict): + print(f" Target keys: {list(targets.keys())}") + for key, val in targets.items(): + print(f" Target '{key}' shape: {val.shape}, " + f"dtype: {val.dtype}") + + if batch_idx == 0: # Only show first batch + break + + return dataset + + +def example_multiple_files(): + """Example with multiple files and advanced features.""" + print("EXAMPLE 3: Multiple Files with Advanced Features") + print("=" * 40) + + # Use glob pattern or directory to find multiple files + file_pattern = "./*.joblib" # Adjust to your path + + dataset = JoblibDataset( + file_paths=file_pattern, # Can be directory, glob pattern, or list + subseq_len=128, + input_key='ece', + target_key=None, # Autoencoder mode + file_pattern="*.joblib", # Pattern for file discovery + max_files=10, # Limit to 10 files + sort_files=True, # Sort files by name + balance_files=True, # Balance samples across files + chunking_strategy='non_overlapping', + validate_on_init=True + ) + + print("Multi-file dataset:") + print(f" Number of files: {dataset.num_files}") + print(f" Total subsequences: {len(dataset)}") + print(f" Balanced: {dataset.balance_files}") + print() + + # Show file statistics + print("File statistics:") + file_stats = dataset.get_file_stats() + for i, stats in enumerate(file_stats[:3]): # Show first 3 files + print(f" File {i}: {Path(stats['file_path']).name}") + print(f" Subsequences: {stats['num_subsequences']}") + print(f" Sequence length: {stats['sequence_length']}") + + if len(file_stats) > 3: + print(f" ... and {len(file_stats) - 3} more files") + print() + + # Inspect data from multiple files + print("Inspecting data from different files:") + for i in range(min(3, dataset.num_files)): + try: + input_shape, target_shape = dataset.get_sample_shape(file_idx=i) + print(f" File {i}: input {input_shape}, target {target_shape}") + except Exception as e: + print(f" File {i}: Error - {e}") + print() + + # Split dataset by files + print("Splitting dataset by files...") + train_ds, val_ds = dataset.split_by_files( + train_ratio=0.8, + val_ratio=0.2, + random_seed=42 + ) + + print("Split results:") + print(f" Train: {len(train_ds)} subsequences from {train_ds.num_files} " + f"files") + print(f" Val: {len(val_ds)} subsequences from {val_ds.num_files} files") + print() + + return train_ds, val_ds + + +def example_autoencoder_training(): + """Example: Train an autoencoder with JoblibDataset.""" + print("EXAMPLE 4: Autoencoder Training") + print("=" * 40) + + # Create dataset for autoencoder training + dataset = JoblibDataset( + file_paths="171348_0.joblib", # Adjust path + subseq_len=128, + input_key='co2', + target_key=None, # Autoencoder mode: input = target + auto_detect_keys=True, + validate_on_init=True + ) + + print(f"Autoencoder dataset: {len(dataset)} samples") + + # Get data shape for model configuration WITHOUT worker_init() + input_shape, target_shape = dataset.get_sample_shape() + print(f"Input shape: {input_shape}") + print(f"Target shape: {target_shape}") + + # Alternative: Get a full sample for inspection + sample_input, sample_target = dataset.peek_sample() + print(f"Sample input shape: {sample_input.shape}") + print(f"Sample target shape: {sample_target.shape}") + print(f"Sample input dtype: {sample_input.dtype}") + + # Get detailed sample information + sample_info = dataset.get_sample_info(0) + print(f"Sample info: {sample_info}") + print() + + # Create model based on data shape + model = BlockBasedAutoencoder( + input_channels=sample_input.shape[0], # Number of channels + hidden_dim=64, + activation='gelu' + ) + + print(f"Model created with {model.parameter_count:,} parameters") + + # Create DataLoader with proper worker init + train_loader = DataLoader( + dataset, + batch_size=16, + shuffle=True, + num_workers=4, + worker_init_fn=worker_init_fn, + collate_fn=collate_fn, + ) + + d = next(iter(train_loader)) + + # Train the model + print("Starting training...") + lightning_model, trainer = train_model( + model=model, + train_dataloader=train_loader, + val_dataloader=None, # Using same data for demo + max_epochs=5, + learning_rate=1e-4, + logger_type="tensorboard", + project_name="joblib-autoencoder" + ) + + print("Training completed!") + print("View logs with: tensorboard --logdir=./logs") + print() + + +def example_multikey_usage(): + """Example showing multi-key input/target usage.""" + print("EXAMPLE 5: Multi-Key Input/Target Usage") + print("=" * 40) + + # Create dataset with multiple input and target keys + dataset = JoblibDataset( + file_paths="171348_0.joblib", # Adjust path + subseq_len=128, + input_key=['co2', 'ece'], # Multiple input keys + target_key=['co2', 'mhr'], + # Multiple target keys (or None for autoencoder) + validate_on_init=True + ) + + print("Multi-key dataset:") + print(f" Input keys: {dataset.input_key}") + print(f" Target keys: {dataset.target_key}") + print(f" Is multi-input: {dataset.is_multi_input}") + print(f" Is multi-target: {dataset.is_multi_target}") + print(f" Total subsequences: {len(dataset)}") + print() + + # Inspect shapes for each key + print("Shape inspection:") + input_shapes, target_shapes = dataset.get_sample_shape() + print("Input shapes by key:") + for key, shape in input_shapes.items(): + print(f" '{key}': {shape}") + print("Target shapes by key:") + for key, shape in target_shapes.items(): + print(f" '{key}': {shape}") + print() + + # Get sample data + sample_inputs, sample_targets = dataset.peek_sample() + print("Sample data inspection:") + print(f"Input data keys: {list(sample_inputs.keys())}") + print(f"Target data keys: {list(sample_targets.keys())}") + + for key, tensor in sample_inputs.items(): + print(f" Input '{key}': shape {tensor.shape}, dtype {tensor.dtype}") + print(f" Min: {tensor.min().item():.4f}, " + f"Max: {tensor.max().item():.4f}") + + for key, tensor in sample_targets.items(): + print(f" Target '{key}': shape {tensor.shape}, dtype {tensor.dtype}") + print(f" Min: {tensor.min().item():.4f}, " + f"Max: {tensor.max().item():.4f}") + print() + + # Test DataLoader + loader = DataLoader(dataset, + batch_size=4, + shuffle=True, + num_workers=2, + worker_init_fn=worker_init_fn, + collate_fn=collate_fn) + + print("DataLoader test:") + for batch_idx, (inputs, targets) in enumerate(loader): + print(f"Batch {batch_idx}:") + print(f" Input batch keys: {list(inputs.keys())}") + print(f" Target batch keys: {list(targets.keys())}") + + for key, tensor in inputs.items(): + print(f" Input '{key}' batch shape: {tensor.shape}") + for key, tensor in targets.items(): + print(f" Target '{key}' batch shape: {tensor.shape}") + + if batch_idx == 0: # Only show first batch + break + + return dataset + + +def example_error_handling(): + """Example showing error handling and debugging.""" + print("EXAMPLE 6: Error Handling and Debugging") + print("=" * 40) + + # Test with mix of valid and invalid files + test_files = [ + "171348_0.joblib", # Replace with your actual valid file + "nonexistent_file.joblib", # This should fail + ] + + print("Testing error handling with mixed file list:") + for f in test_files: + exists = "✓" if Path(f).exists() else "✗" + print(f" {exists} {f}") + print() + + # First, let's validate files BEFORE creating the dataset + print("Manual file validation:") + valid_files = [] + + for file_path in test_files: + try: + # Try to inspect the file directly + from joblib import load + data_dict = load(file_path, mmap_mode='r') + available_keys = list(data_dict.keys()) + del data_dict # Clean up + + print(f" ✓ {Path(file_path).name} - Keys: {available_keys}") + valid_files.append(file_path) + + except Exception as e: + print(f" ✗ {Path(file_path).name} - Error: {e}") + print() + + if not valid_files: + print("No valid files found! Cannot proceed with dataset examples.") + return None + + # Create dataset with only valid files + print(f"Creating dataset with {len(valid_files)} valid files...") + try: + dataset = JoblibDataset( + file_paths=valid_files, # Only use valid files + subseq_len=128, + auto_detect_keys=True, + validate_on_init=True # This should work with valid files + ) + + print("✓ Dataset created successfully!") + print(f" Total subsequences: {len(dataset)}") + print(f" Number of files: {dataset.num_files}") + print(f" Input key: {dataset.input_key}") + print(f" Target key: {dataset.target_key}") + print() + + # Now test file access - this should work + print("Testing file access on valid dataset:") + for i in range(dataset.num_files): + try: + input_shape, target_shape = dataset.get_sample_shape( + file_idx=i) + print( + f" File {i}: ✓ Input {input_shape}, Target {target_shape}") + except Exception as e: + print(f" File {i}: ✗ Error - {e}") + print() + + # Test peek functionality + print("Testing peek functionality:") + try: + sample_input, sample_target = dataset.peek_sample() + print(" ✓ Peek successful!") + s = sample_input.shape \ + if not isinstance(sample_input, dict) \ + else {k: v.shape for k, v in sample_input.items()} + print(f" Input shape: {s}") + s = sample_target.shape \ + if not isinstance(sample_target, dict) \ + else {k: v.shape for k, v in sample_target.items()} + print(f" Target shape: {s}") + except Exception as e: + print(f" ✗ Peek failed: {e}") + print() + + # Show dataset info for debugging + print("Dataset summary:") + info = dataset.summary() + for key, value in info.items(): + if key not in ['file_metadata', 'file_paths']: + print(f" {key}: {value}") + print() + + return dataset + + except Exception as e: + print(f"✗ Failed to create dataset: {e}") + print(f"Error type: {type(e).__name__}") + import traceback + traceback.print_exc() + return None + + +def example_error_handling_advanced(): + """More advanced error handling example.""" + print("EXAMPLE 6B: Advanced Error Handling") + print("=" * 40) + + # Test the validate_files method on a dataset with mixed files + test_files = [ + "171348_0.joblib", # Valid file + "nonexistent_file.joblib", # Invalid file + "another_invalid_file.joblib", # Another invalid file + ] + + try: + # Create dataset without validation to test the validate_files method + dataset = JoblibDataset( + file_paths=test_files, + subseq_len=128, + auto_detect_keys=True, + validate_on_init=False # Don't validate during init + ) + + print("Testing validate_files() method:") + validation_results = dataset.validate_files() + + valid_files = [] + for file_path, is_valid, error_msg in validation_results: + status = "✓" if is_valid else "✗" + print(f" {status} {Path(file_path).name}") + if error_msg: + print(f" Error: {error_msg}") + if is_valid: + valid_files.append(file_path) + print() + + if valid_files: + print(f"Found {len(valid_files)} valid files. " + f"Creating new dataset...") + # Create a new dataset with only valid files + valid_dataset = JoblibDataset( + file_paths=valid_files, + subseq_len=128, + auto_detect_keys=True, + validate_on_init=True + ) + + print(f"✓ Valid dataset created with {len(valid_dataset)} " + f"subsequences") + + # Test this dataset + input_shape, target_shape = valid_dataset.get_sample_shape() + print(f" Input shape: {input_shape}") + print(f" Target shape: {target_shape}") + + return valid_dataset + else: + print("No valid files found!") + return None + + except Exception as e: + print(f"Error in advanced error handling: {e}") + import traceback + traceback.print_exc() + return None + + +def main(): + """Run all examples.""" + print("JoblibDataset Usage Examples") + print("=" * 60) + print() + + # Note: You'll need to replace file paths with actual files + print("NOTE: Replace file paths with your actual joblib files in each " + "example.") + print() + + try: + """ + # Basic usage + dataset1 = example_basic_usage() + + # Custom configuration + dataset2 = example_custom_configuration() + + # Multiple files (comment out if you don't have multiple files) + train_ds, val_ds = example_multiple_files() + + # Autoencoder training (comment out if you don't want to train) + example_autoencoder_training() + """ + # Multi-key usage + dataset3 = example_multikey_usage() + + # Error handling + dataset4 = example_error_handling() + dataset5 = example_error_handling_advanced() + + print("All examples completed successfully!") + + except Exception as e: + print(f"Error running examples: {e}") + print("Make sure to:") + print("1. Replace file paths with real joblib files") + print("2. Install required dependencies: joblib, torch, " + "pytorch-lightning") + print("3. Ensure your files have the expected structure") + print("4. Update the input_key and target_key based on your data") + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/examples/Machine_Learning/lightning_trainer_example.py b/examples/Machine_Learning/lightning_trainer_example.py new file mode 100644 index 0000000..427063e --- /dev/null +++ b/examples/Machine_Learning/lightning_trainer_example.py @@ -0,0 +1,569 @@ +"""Examples and tests for the Lightning trainer with autoencoder models.""" + +import torch +import torch.nn.functional as F +from torch.utils.data import DataLoader, TensorDataset +import pytorch_lightning as pl +from pytorch_lightning import Trainer +from pytorch_lightning.callbacks import ModelCheckpoint, EarlyStopping + +# Assuming your package structure +from src.faith.train.models.autoencoder import BlockBasedAutoencoder +from src.faith.train.training import ( + LightningTrainer, MultimodalLightningTrainer, train_model) + + +def create_dummy_dataset( + batch_size: int = 16, + num_samples: int = 1000, + input_shape: tuple = (80, 100, 128) +) -> tuple: + """Create dummy dataset for testing. + + Parameters + ---------- + batch_size : int, optional + Batch size, by default 16. + num_samples : int, optional + Number of samples, by default 1000. + input_shape : tuple, optional + Shape of input data (C, H, W), by default (80, 100, 128). + + Returns + ------- + tuple + Train and validation dataloaders. + """ + # Create random data + data = torch.randn(num_samples, *input_shape) + + # Split into train/val + train_size = int(0.8 * num_samples) + train_data = data[:train_size] + val_data = data[train_size:] + + # Create datasets (for autoencoders, input = target) + train_dataset = TensorDataset(train_data, train_data) + val_dataset = TensorDataset(val_data, val_data) + + # Create dataloaders + train_loader = DataLoader( + train_dataset, + batch_size=batch_size, + shuffle=True, + num_workers=2 + ) + val_loader = DataLoader( + val_dataset, + batch_size=batch_size, + shuffle=False, + num_workers=2 + ) + + return train_loader, val_loader + + +def create_multimodal_dataset( + batch_size: int = 16, + num_samples: int = 1000 +) -> tuple: + """Create dummy multimodal dataset. + + Parameters + ---------- + batch_size : int, optional + Batch size, by default 16. + num_samples : int, optional + Number of samples, by default 1000. + + Returns + ------- + tuple + Train and validation dataloaders. + """ + # Create multimodal data + audio_data = torch.randn(num_samples, 80, 100, 128) + text_data = torch.randint(0, 1000, (num_samples, 50)) # Token IDs + + # Split into train/val + train_size = int(0.8 * num_samples) + + train_audio = audio_data[:train_size] + train_text = text_data[:train_size] + val_audio = audio_data[train_size:] + val_text = text_data[train_size:] + + # Create datasets as dictionaries + train_data = [] + for i in range(len(train_audio)): + train_data.append({ + 'audio': train_audio[i], + 'text': train_text[i], + 'target_audio': train_audio[i], # Reconstruction target + 'target_text': train_text[i] + }) + + val_data = [] + for i in range(len(val_audio)): + val_data.append({ + 'audio': val_audio[i], + 'text': val_text[i], + 'target_audio': val_audio[i], + 'target_text': val_text[i] + }) + + train_loader = DataLoader(train_data, batch_size=batch_size, shuffle=True) + val_loader = DataLoader(val_data, batch_size=batch_size, shuffle=False) + + return train_loader, val_loader + + +class CustomLossAutoencoder(LightningTrainer): + """Example of custom loss computation for specific autoencoder needs.""" + + def __init__(self, model, perceptual_weight: float = 0.1, **kwargs): + """Initialize with perceptual loss component. + + Parameters + ---------- + model : torch.nn.Module + The autoencoder model. + perceptual_weight : float, optional + Weight for perceptual loss, by default 0.1. + **kwargs + Additional arguments passed to parent. + """ + super().__init__(model, **kwargs) + self.perceptual_weight = perceptual_weight + + def compute_loss(self, batch, batch_idx, prefix=""): + """Compute loss with perceptual component. + + Parameters + ---------- + batch : Any + Input batch. + batch_idx : int + Batch index. + prefix : str, optional + Logging prefix, by default "". + + Returns + ------- + Dict[str, torch.Tensor] + Loss components. + """ + inputs, targets = batch + outputs = self.model(inputs) + + if isinstance(outputs, tuple): + reconstructed, latent = outputs + else: + reconstructed = outputs + + # MSE reconstruction loss + recon_loss = F.mse_loss(reconstructed, targets) + + # Simple perceptual loss (L1 in feature space) + # In practice, you'd use a pre-trained network + with torch.no_grad(): + # Downsample for "perceptual" comparison + targets_down = F.avg_pool2d(targets, kernel_size=4, stride=4) + recon_down = F.avg_pool2d(reconstructed, kernel_size=4, stride=4) + + perceptual_loss = F.l1_loss(recon_down, targets_down) + + # Total loss + total_loss = recon_loss + self.perceptual_weight * perceptual_loss + + metrics = { + f'{prefix}loss': total_loss, + f'{prefix}recon_loss': recon_loss, + f'{prefix}perceptual_loss': perceptual_loss, + } + + return metrics + + +class MultimodalAutoencoder(torch.nn.Module): + """Example multimodal autoencoder for testing.""" + + def __init__(self, audio_channels: int = 80, text_vocab_size: int = 1000): + """Initialize multimodal autoencoder. + + Parameters + ---------- + audio_channels : int, optional + Number of audio channels, by default 80. + text_vocab_size : int, optional + Text vocabulary size, by default 1000. + """ + super().__init__() + + # Audio encoder (simplified) + self.audio_encoder = torch.nn.Sequential( + torch.nn.Conv2d(audio_channels, 64, 3, padding=1), + torch.nn.ReLU(), + torch.nn.AdaptiveAvgPool2d((8, 8)), + torch.nn.Flatten(), + torch.nn.Linear(64 * 8 * 8, 256) + ) + + # Text encoder + self.text_encoder = torch.nn.Sequential( + torch.nn.Embedding(text_vocab_size, 128), + torch.nn.LSTM(128, 128, batch_first=True), + ) + + # Shared latent space + self.fusion = torch.nn.Linear(256 + 128, 256) + + # Decoders + self.audio_decoder = torch.nn.Sequential( + torch.nn.Linear(256, 64 * 8 * 8), + torch.nn.Unflatten(1, (64, 8, 8)), + torch.nn.ConvTranspose2d(64, audio_channels, 3, padding=1) + ) + + self.text_decoder = torch.nn.Sequential( + torch.nn.Linear(256, 128), + torch.nn.LSTM(128, 128, batch_first=True), + torch.nn.Linear(128, text_vocab_size) + ) + + def forward(self, batch): + """Forward pass returning losses. + + Parameters + ---------- + batch : dict + Batch containing 'audio', 'text', 'target_audio', 'target_text'. + + Returns + ------- + dict + Dictionary containing losses and outputs. + """ + audio = batch['audio'] + text = batch['text'] + target_audio = batch['target_audio'] + target_text = batch['target_text'] + + # Encode + audio_features = self.audio_encoder(audio) + text_lstm_out, _ = self.text_encoder(text) + text_features = text_lstm_out.mean(dim=1) # Simple pooling + + # Fuse + combined = torch.cat([audio_features, text_features], dim=1) + latent = self.fusion(combined) + + # Decode + audio_reconstructed = self.audio_decoder(latent) + + # Upsample audio reconstruction to match input size + audio_reconstructed = F.interpolate( + audio_reconstructed, + size=(target_audio.shape[-2], target_audio.shape[-1]), + mode='bilinear', + align_corners=False + ) + + text_hidden = self.text_decoder[0]( + latent).unsqueeze(1).repeat(1, text.size(1), 1) + text_lstm_out, _ = self.text_decoder[1](text_hidden) + text_reconstructed = self.text_decoder[2](text_lstm_out) + + # Compute losses + audio_loss = F.mse_loss(audio_reconstructed, target_audio) + text_loss = F.cross_entropy( + text_reconstructed.reshape(-1, text_reconstructed.size(-1)), + target_text.reshape(-1) + ) + + return { + 'audio_reconstructed': audio_reconstructed, + 'text_reconstructed': text_reconstructed, + 'latent': latent, + 'audio_loss': audio_loss, + 'text_loss': text_loss, + } + + +def example_basic_training(): + """Basic training example with BlockBasedAutoencoder.""" + print("=" * 60) + print("EXAMPLE 1: Basic Autoencoder Training") + print("=" * 60) + + # Create autoencoder + autoencoder = BlockBasedAutoencoder(input_channels=80) + print(f"Created autoencoder with " + f"{autoencoder.parameter_count:,} parameters") + + # Create data + train_loader, val_loader = create_dummy_dataset( + batch_size=8, + num_samples=100, # Small for quick testing + input_shape=(80, 100, 128) + ) + print(f"Created dataset with {len(train_loader)} train batches") + + # Use convenience function with TensorBoard logging + lightning_model, trainer = train_model( + model=autoencoder, + train_dataloader=train_loader, + val_dataloader=val_loader, + max_epochs=3, + gpus=0, # CPU for testing + precision="32", + logger_type="tensorboard", # Use TensorBoard instead of wandb + project_name="test-autoencoder", + experiment_name="basic-example", + learning_rate=1e-3 + ) + + print("Training completed!") + print("Logs saved to: ./logs/test-autoencoder/basic-example/") + + # Test the trained model + test_input = torch.randn(1, 80, 100, 128) + lightning_model.eval() + with torch.no_grad(): + output = lightning_model(test_input) + print(f"Test output shape: {output.shape}") + + +def example_custom_trainer(): + """Example with custom trainer class.""" + print("\n" + "=" * 60) + print("EXAMPLE 2: Custom Trainer with Perceptual Loss") + print("=" * 60) + + # Create autoencoder + autoencoder = BlockBasedAutoencoder( + input_channels=80, + activation='gelu' + ) + + # Create custom trainer + lightning_model = CustomLossAutoencoder( + model=autoencoder, + learning_rate=1e-3, + perceptual_weight=0.1, + max_epochs=3 + ) + + # Create data + train_loader, val_loader = create_dummy_dataset( + batch_size=4, + num_samples=50, + input_shape=(80, 100, 128) + ) + + # Manual trainer setup + trainer = Trainer( + max_epochs=3, + accelerator='cpu', + devices=1, + callbacks=[ + ModelCheckpoint(monitor='val_loss', mode='min'), + EarlyStopping(monitor='val_loss', patience=2) + ], + enable_progress_bar=True, + logger=False # Disable logging for testing + ) + + # Train + trainer.fit(lightning_model, train_loader, val_loader) + print("Custom training completed!") + + +def example_multimodal_training(): + """Example with multimodal autoencoder.""" + print("\n" + "=" * 60) + print("EXAMPLE 3: Multimodal Autoencoder Training") + print("=" * 60) + + # Create multimodal model + multimodal_model = MultimodalAutoencoder( + audio_channels=80, + text_vocab_size=1000 + ) + + # Create multimodal trainer with loss weights + lightning_model = MultimodalLightningTrainer( + model=multimodal_model, + loss_weights={'audio_loss': 1.0, 'text_loss': 0.5}, + learning_rate=1e-3, + max_epochs=3 + ) + + # Create multimodal data + train_loader, val_loader = create_multimodal_dataset( + batch_size=4, + num_samples=50 + ) + + # Train + trainer = Trainer( + max_epochs=3, + accelerator='cpu', + devices=1, + enable_progress_bar=True, + logger=False + ) + + trainer.fit(lightning_model, train_loader, val_loader) + print("Multimodal training completed!") + + +def example_configuration_testing(): + """Test different autoencoder configurations.""" + print("\n" + "=" * 60) + print("EXAMPLE 4: Testing Different Configurations") + print("=" * 60) + + # Test configurations similar to your example + configs = [ + { + 'name': 'Default', + 'config': {'input_channels': 80} + }, + { + 'name': 'Custom blocks', + 'config': { + 'input_channels': 80, + 'block_configs': [ + {'out_channels': 64, 'pool_size': (1, 2), 'dropout': 0.2}, + {'out_channels': 128, 'pool_size': (1, 4), 'dropout': 0.3}, + ], + 'activation': 'gelu' + } + }, + { + 'name': 'Large model', + 'config': { + 'input_channels': 80, + 'activation': 'swish' + } + } + ] + + for config_info in configs: + print(f"\nTesting {config_info['name']} configuration:") + + # Create autoencoder + autoencoder = BlockBasedAutoencoder(**config_info['config']) + + # Test forward pass + x = torch.randn(2, 80, 100, 128) + reconstructed, latent = autoencoder(x) + + print(f" Input shape: {x.shape}") + print(f" Latent shape: {latent.shape}") + print(f" Output shape: {reconstructed.shape}") + print(f" Parameters: {autoencoder.parameter_count:,}") + + # Quick training test + lightning_model = LightningTrainer( + model=autoencoder, + learning_rate=1e-3, + max_epochs=1 + ) + + # Create minimal data + train_data = TensorDataset(x, x) + train_loader = DataLoader(train_data, batch_size=2) + + trainer = Trainer( + max_epochs=1, + accelerator='cpu', + devices=1, + enable_progress_bar=False, + logger=False + ) + + trainer.fit(lightning_model, train_loader) + print(" Training test: PASSED") + + +def example_feature_extraction(): + """Example showing feature extraction capabilities.""" + print("\n" + "=" * 60) + print("EXAMPLE 5: Feature Extraction and Analysis") + print("=" * 60) + + # Create and train a small model + autoencoder = BlockBasedAutoencoder(input_channels=80) + + lightning_model = LightningTrainer( + model=autoencoder, + learning_rate=1e-3, + max_epochs=2 + ) + + # Quick training + train_loader, _ = create_dummy_dataset( + batch_size=4, + num_samples=20, + input_shape=(80, 100, 128) + ) + + trainer = Trainer( + max_epochs=2, + accelerator='cpu', + devices=1, + enable_progress_bar=False, + logger=False + ) + + trainer.fit(lightning_model, train_loader) + + # Test feature extraction + test_input = torch.randn(1, 80, 100, 128) + + with torch.no_grad(): + # Get latent representation + latent = autoencoder.encode(test_input) + print(f"Latent representation shape: {latent.shape}") + + # Get reconstruction + reconstruction = autoencoder.decode(latent) + print(f"Reconstruction shape: {reconstruction.shape}") + + # Calculate reconstruction error + mse_error = F.mse_loss(reconstruction, test_input).item() + print(f"Reconstruction MSE: {mse_error:.6f}") + + +def run_all_examples(): + """Run all examples.""" + print("Running Lightning Trainer Examples...") + print("Note: These are minimal examples for demonstration.") + print("For real training, use larger datasets and more epochs.\n") + + try: + example_basic_training() + example_custom_trainer() + example_multimodal_training() + example_configuration_testing() + example_feature_extraction() + + print("\n" + "=" * 60) + print("ALL EXAMPLES COMPLETED SUCCESSFULLY!") + print("=" * 60) + + except Exception as e: + print(f"\nError occurred: {e}") + import traceback + traceback.print_exc() + + +if __name__ == "__main__": + # Set random seed for reproducibility + torch.manual_seed(42) + pl.seed_everything(42) + + # Run examples + run_all_examples() diff --git a/examples/Machine_Learning/mae_example.py b/examples/Machine_Learning/mae_example.py new file mode 100644 index 0000000..6219342 --- /dev/null +++ b/examples/Machine_Learning/mae_example.py @@ -0,0 +1,43 @@ +import torch +from src.faith.train.models import (MaskGenerator, BlockBasedAutoencoder, + MaskedAutoencoder, mae_loss) + +# Example usage and testing +if __name__ == "__main__": + # Test MaskGenerator + print("Testing MaskGenerator...") + mask_gen = MaskGenerator(mask_ratio=0.75) + + shape = (2, 80, 100, 128) + + # Test MaskedAutoencoder + print("\nTesting MaskedAutoencoder...") + + # Create components + autoencoder = BlockBasedAutoencoder(input_channels=80) + mae = MaskedAutoencoder(autoencoder, mask_gen) + + # Test forward pass + x = torch.randn(2, 80, 100, 128) + reconstructed, mask, masked_input = mae(x, mask_type='frequency') + + print(f"Input shape: {x.shape}") + print(f"Mask shape: {mask.shape}") + print(f"Masked input shape: {masked_input.shape}") + print(f"Reconstructed shape: {reconstructed.shape}") + + # Test MAE loss + loss = mae_loss(reconstructed, x, mask, loss_type='mse') + print(f"MAE loss: {loss.item():.6f}") + + # Test different loss types + for loss_type in ['mse', 'l1', 'smooth_l1']: + loss = mae_loss(reconstructed, x, mask, loss_type=loss_type) + print(f"{loss_type} loss: {loss.item():.6f}") + + # Test configuration serialization + config = mae.get_config() + mae_recreated = MaskedAutoencoder.from_config(config) + print(f"Config serialization successful: {mae_recreated}") + + print(f"MAE model: {mae}") diff --git a/examples/Machine_Learning/ray_tune_examples.py b/examples/Machine_Learning/ray_tune_examples.py new file mode 100644 index 0000000..dc53045 --- /dev/null +++ b/examples/Machine_Learning/ray_tune_examples.py @@ -0,0 +1,436 @@ +"""Examples demonstrating hyperparameter tuning with Ray Tune.""" + +import torch +from torch.utils.data import DataLoader, TensorDataset +from ray import tune +import os +import sys +import atexit +from pathlib import Path + +# Add src to path for imports +sys.path.append(os.path.join(os.path.dirname(__file__), '..')) + +from src.faith.train.models.autoencoder import BlockBasedAutoencoder +from src.faith.train.tuning import (RayTuner, SearchSpaces, get_search_space, + CustomSearchSpace) + +# Ensure Ray cleanup on exit +try: + from src import cleanup_ray + + + atexit.register(cleanup_ray) +except ImportError: + pass + + +def get_results_dir(name: str) -> str: + """Get absolute path for results directory. + + Parameters + ---------- + name : str + Directory name. + + Returns + ------- + str + Absolute path. + """ + results_dir = Path.cwd() / "tune_results" / name + results_dir.mkdir(parents=True, exist_ok=True) + return str(results_dir) + + +def create_dummy_dataset(num_samples: int = 1000, batch_size: int = 32): + """Create dummy dataset for tuning examples. + + Parameters + ---------- + num_samples : int, optional + Number of samples, by default 1000. + batch_size : int, optional + Batch size, by default 32. + + Returns + ------- + Dict[str, DataLoader] + Dictionary with train and val dataloaders. + """ + # Create random spectrogram-like data + data = torch.randn(num_samples, 4, 100, 128) + + # Split into train/val + train_size = int(0.8 * num_samples) + train_data = data[:train_size] + val_data = data[train_size:] + + # Create datasets (autoencoder: input = target) + train_dataset = TensorDataset(train_data, train_data) + val_dataset = TensorDataset(val_data, val_data) + + # Create dataloaders + train_loader = DataLoader( + train_dataset, batch_size=batch_size, shuffle=True) + val_loader = DataLoader( + val_dataset, batch_size=batch_size, shuffle=False) + + return {'train': train_loader, 'val': val_loader} + + +def example_basic_tuning(): + """Basic hyperparameter tuning example.""" + print("=" * 60) + print("EXAMPLE 1: Basic Hyperparameter Tuning") + print("=" * 60) + + # Create data + data_loaders = create_dummy_dataset(num_samples=200, batch_size=16) + print(f"Created dataset with {len(data_loaders['train'])} train batches") + + # Base model configuration + model_base_config = { + 'input_channels': 4, + } + + # Create tuner + tuner = RayTuner( + model_class=BlockBasedAutoencoder, + model_base_config=model_base_config, + data_loaders=data_loaders, + num_samples=5, # Small for demo + max_epochs_per_trial=5, # Increased to work with ASHA scheduler + gpus_per_trial=0.0, # CPU only for demo + scheduler_type="asha", + search_algorithm="optuna", + storage_path=get_results_dir("basic_tuning") + ) + + # Define search space + search_space = get_search_space("basic", learning_rate_range=(1e-4, 1e-2)) + + print("Search space:", search_space) + + # Run tuning + print("\nStarting hyperparameter search...") + analysis = tuner.tune(search_space, name="basic_autoencoder_tune") + + # Get best configuration + best_config = tuner.get_best_config(analysis) + print(f"\nBest configuration: {best_config}") + + # Train final model + print("\nTraining final model with best hyperparameters...") + best_model = tuner.train_best_model(analysis, max_epochs=5, + save_path="best_basic_model.pth") + print("Basic tuning completed!") + + +def example_architecture_search(): + """Architecture search example.""" + print("\n" + "=" * 60) + print("EXAMPLE 2: Architecture Search") + print("=" * 60) + + # Create data + data_loaders = create_dummy_dataset(num_samples=150, batch_size=8) + + # Base configuration + model_base_config = { + 'input_channels': 4, + } + + # Create tuner focused on architecture + tuner = RayTuner( + model_class=BlockBasedAutoencoder, + model_base_config=model_base_config, + data_loaders=data_loaders, + num_samples=4, + max_epochs_per_trial=4, # Increased for ASHA compatibility + gpus_per_trial=0.0, + scheduler_type="fifo", # Simple scheduler for architecture search + search_algorithm="random" + ) + + # Architecture-focused search space + search_space = get_search_space("architecture", + learning_rate=1e-3, # Fixed + layer_choices=[2, 3], + width_choices=[32, 64]) + + print("Architecture search space:", search_space) + + # Run tuning + analysis = tuner.tune(search_space, name="architecture_search") + + # Get results + best_config = tuner.get_best_config(analysis) + print(f"\nBest architecture: {best_config}") + + # Compare all trials + df = analysis.dataframe() + print("\nAll trial results:") + print(df[['config/num_layers', 'val_loss']].head()) + + +def example_custom_search_space(): + """Custom search space example.""" + print("\n" + "=" * 60) + print("EXAMPLE 3: Custom Search Space") + print("=" * 60) + + # Create data + data_loaders = create_dummy_dataset(num_samples=100, batch_size=16) + + # Model configuration + model_base_config = { + 'input_channels': 4, + } + + # Create custom search space using builder + custom_space = (CustomSearchSpace() + .add_continuous( + "learning_rate", 1e-5, 1e-2, log_scale=True) + .add_discrete("activation", ["relu", "gelu"]) + .add_continuous("dropout", 0.0, 0.3) + .add_fixed("weight_decay", 1e-5) + .build() + ) + + print("Custom search space:", custom_space) + + # Create tuner + tuner = RayTuner( + model_class=BlockBasedAutoencoder, + model_base_config=model_base_config, + data_loaders=data_loaders, + num_samples=3, + max_epochs_per_trial=4, # Increased for scheduler compatibility + gpus_per_trial=0.0 + ) + + # Run tuning + analysis = tuner.tune(custom_space, name="custom_search") + + # Results + best_config = tuner.get_best_config(analysis) + print(f"\nBest custom configuration: {best_config}") + + +def example_quick_parameter_test(): + """Quick single parameter testing.""" + print("\n" + "=" * 60) + print("EXAMPLE 4: Quick Parameter Testing") + print("=" * 60) + + # Create data + data_loaders = create_dummy_dataset(num_samples=80, batch_size=8) + + # Test different learning rates quickly + model_base_config = {'input_channels': 4} + + tuner = RayTuner( + model_class=BlockBasedAutoencoder, + model_base_config=model_base_config, + data_loaders=data_loaders, + num_samples=3, + max_epochs_per_trial=4, # Minimum for ASHA + gpus_per_trial=0.0 + ) + + # Quick search for learning rate only + search_space = SearchSpaces.quick_search( + param_name="learning_rate", + param_choices=[1e-4, 5e-4, 1e-3], + base_config={"weight_decay": 1e-5} + ) + + print("Quick search space:", search_space) + + # Run tuning + analysis = tuner.tune(search_space, name="quick_lr_test") + + # Show all results + print("\nLearning rate comparison:") + df = analysis.dataframe() + for _, row in df.iterrows(): + lr = row['config/learning_rate'] + val_loss = row['val_loss'] + print(f"LR: {lr:.2e} -> Val Loss: {val_loss:.4f}") + + +def example_advanced_configuration(): + """Advanced tuning configuration example.""" + print("\n" + "=" * 60) + print("EXAMPLE 5: Advanced Configuration") + print("=" * 60) + + # Create data + data_loaders = create_dummy_dataset(num_samples=120, batch_size=12) + + # Model configuration for block-based autoencoder + model_base_config = { + 'input_channels': 4, + } + + # Advanced tuner configuration + tuner = RayTuner( + model_class=BlockBasedAutoencoder, + model_base_config=model_base_config, + data_loaders=data_loaders, + num_samples=4, + max_epochs_per_trial=6, # Sufficient for PBT + gpus_per_trial=0.0, + scheduler_type="pbt", # Population Based Training + search_algorithm="optuna", + metric="val_loss", + mode="min", + storage_path=get_results_dir("advanced_tuning") + ) + + # Block-based autoencoder search space + # (parameters that actually work with the model) + search_space = { + # Training hyperparameters + "learning_rate": tune.loguniform(1e-4, 1e-2), + "weight_decay": tune.loguniform(1e-6, 1e-3), + "scheduler_type": tune.choice(["cosine", "linear", "none"]), + + # Model architecture + "activation": tune.choice(["relu", "gelu", "swish", "leaky_relu"]), + + # Skip architecture parameters that require custom block_configs + # as they are more complex to implement in this example + } + + print("Advanced search space:", search_space) + + # Run tuning with custom name + analysis = tuner.tune(search_space, + name="advanced_block_autoencoder", + resume=False) + + # Detailed analysis + best_trial = analysis.get_best_trial("val_loss", "min") + print("\nBest trial:") + print(f" Config: {best_trial.config}") + print(f" Final val_loss: {best_trial.last_result['val_loss']:.4f}") + print(f" Training time: " + f"{best_trial.last_result.get('time_total_s', 0):.1f}s") + + # Train final model with more epochs + print("\nTraining final model...") + final_model = tuner.train_best_model(analysis, + max_epochs=5, + save_path="advanced_best_model.pth") + + print("Advanced tuning completed!") + print(f"Results saved to: {tuner.storage_path}") + + +def example_model_comparison(): + """Compare different model configurations.""" + print("\n" + "=" * 60) + print("EXAMPLE 6: Model Configuration Comparison") + print("=" * 60) + + # Create data + data_loaders = create_dummy_dataset(num_samples=100, batch_size=16) + + # Test different model configurations + configs_to_test = [ + { + 'name': 'small_model', + 'config': {'input_channels': 4}, + 'search_space': {'learning_rate': 1e-3} + }, + { + 'name': 'medium_model', + 'config': {'input_channels': 4}, + 'search_space': {'learning_rate': 1e-3} + }, + { + 'name': 'large_model', + 'config': {'input_channels': 4}, + 'search_space': {'learning_rate': 5e-4} + } + ] + + results = {} + + for config_info in configs_to_test: + print(f"\nTesting {config_info['name']}...") + + tuner = RayTuner( + model_class=BlockBasedAutoencoder, + model_base_config=config_info['config'], + data_loaders=data_loaders, + num_samples=1, # Single trial per config + max_epochs_per_trial=3, + gpus_per_trial=0.0 + ) + + analysis = tuner.tune(config_info['search_space'], + name=config_info['name']) + + best_trial = analysis.get_best_trial("val_loss", "min") + results[config_info['name']] = { + 'val_loss': best_trial.last_result['val_loss'], + 'params': sum(p.numel() for p in + BlockBasedAutoencoder( + **config_info['config'] + ).parameters()) + } + + # Compare results + print("\n" + "=" * 40) + print("MODEL COMPARISON RESULTS") + print("=" * 40) + for name, result in results.items(): + print(f"{name:12} | Val Loss: {result['val_loss']:.4f} | " + f"Params: {result['params']:,}") + + # Find best model + best_model = min(results.items(), key=lambda x: x[1]['val_loss']) + print(f"\nBest model: {best_model[0]} " + f"(val_loss: {best_model[1]['val_loss']:.4f})") + + +def run_all_examples(): + """Run all tuning examples.""" + print("Running Ray Tune Examples...") + print("Note: These are minimal examples for demonstration.") + print("For real tuning, use larger datasets and more trials.\n") + + try: + example_basic_tuning() + example_architecture_search() + example_custom_search_space() + example_quick_parameter_test() + example_advanced_configuration() + example_model_comparison() + + print("\n" + "=" * 60) + print("ALL TUNING EXAMPLES COMPLETED SUCCESSFULLY!") + print("=" * 60) + print("\nCheck the following directories for results:") + print(" - ./ray_results/") + print(" - ./advanced_tune_results/") + print(" - ./final_training_logs/") + + except ImportError as e: + print(f"\nSkipping examples due to missing dependency: {e}") + print("Install Ray Tune with: pip install ray[tune] optuna hyperopt") + except Exception as e: + print(f"\nError occurred: {e}") + import traceback + traceback.print_exc() + + +if __name__ == "__main__": + # Set random seed for reproducibility + torch.manual_seed(42) + + # Run examples + run_all_examples() diff --git a/src/faith/train/__init__.py b/src/faith/train/__init__.py index e69de29..5d44886 100644 --- a/src/faith/train/__init__.py +++ b/src/faith/train/__init__.py @@ -0,0 +1,12 @@ +# Package metadata +__version__ = "0.1.0" +__author__ = "Peter Steiner" +__email__ = "peter.steiner@princeton.edu" + +# Public API - only these should be imported by users +__all__ = [ + # Metadata + "__version__", + "__author__", + "__email__", +] diff --git a/src/faith/train/blocks/__init__.py b/src/faith/train/blocks/__init__.py index 352d19b..7f06849 100644 --- a/src/faith/train/blocks/__init__.py +++ b/src/faith/train/blocks/__init__.py @@ -3,9 +3,14 @@ from .residual import ResidualBlock from .encoder import EncoderBlock, BlockBasedEncoder from .decoder import DecoderBlock, BlockBasedDecoder -from .base import BaseBlock +from .base import BaseBlock, BlockUtils -__all__ = ["ResidualBlock", - "EncoderBlock", "BlockBasedEncoder", - "DecoderBlock", "BlockBasedDecoder", - "BaseBlock"] +__all__ = [ + "ResidualBlock", + "EncoderBlock", + "BlockBasedEncoder", + "DecoderBlock", + "BlockBasedDecoder", + "BaseBlock", + "BlockUtils", +] diff --git a/src/faith/train/blocks/base.py b/src/faith/train/blocks/base.py index f20c23e..b7332ae 100644 --- a/src/faith/train/blocks/base.py +++ b/src/faith/train/blocks/base.py @@ -66,8 +66,9 @@ def __init__( self.bias = bias @staticmethod - def _normalize_kernel_size(kernel_size: Union[int, tuple[int, int]]) \ - -> tuple[int, int]: + def _normalize_kernel_size( + kernel_size: Union[int, tuple[int, int]] + ) -> tuple[int, int]: """Normalize kernel size to tuple format.""" if isinstance(kernel_size, int): return (kernel_size, kernel_size) @@ -76,8 +77,8 @@ def _normalize_kernel_size(kernel_size: Union[int, tuple[int, int]]) \ @staticmethod def _calculate_padding( kernel_size: Union[int, tuple[int, int]], - padding: Union[int, tuple[int, int], str]) \ - -> tuple[int, ...]: + padding: Union[int, tuple[int, int], str] + ) -> tuple[int, ...]: """Calculate padding based on kernel size and padding specification.""" if padding == 'auto': if isinstance(kernel_size, int): @@ -90,7 +91,10 @@ def _calculate_padding( return padding @abstractmethod - def forward(self, x: torch.Tensor) -> torch.Tensor: + def forward( + self, + x: torch.Tensor + ) -> torch.Tensor: """ Forward pass through the block. @@ -204,59 +208,14 @@ def get_config(self) -> dict[str, Any]: return config @classmethod - def from_config(cls, config: dict[str, Any]) -> 'ConfigurableBlock': + def from_config( + cls, + config: dict[str, Any] + ) -> 'ConfigurableBlock': """Create block instance from configuration dictionary.""" return cls(**config) -class BlockRegistry: - """Registry for different block types. - - This class provides a way to register and retrieve different block - implementations, making it easy to create blocks from string names - or configuration files. - """ - - _registry: dict[str, type] = {} - - @classmethod - def register(cls, name: str, block_class: type) -> None: - """Register a block class with a given name.""" - if not issubclass(block_class, BaseBlock): - raise ValueError( - f"Block class must inherit from BaseBlock, got {block_class}") - cls._registry[name] = block_class - - @classmethod - def get(cls, name: str) -> type: - """Get a block class by name.""" - if name not in cls._registry: - raise KeyError(f"Block '{name}' not found in registry. " - f"Available blocks: {list(cls._registry.keys())}") - return cls._registry[name] - - @classmethod - def create(cls, name: str, **kwargs) -> BaseBlock: - """Create a block instance by name.""" - block_class = cls.get(name) - return block_class(**kwargs) - - @classmethod - def list_blocks(cls) -> list[str]: - """List all registered block names.""" - return list(cls._registry.keys()) - - -def register_block(name: str): - """Decorator to register a block class.""" - - def decorator(block_class: type): - BlockRegistry.register(name, block_class) - return block_class - - return decorator - - class WeightInitializer: """Utilities for weight initialization in blocks.""" @@ -294,8 +253,8 @@ def calculate_output_shape( kernel_size: Union[int, tuple[int, int]], stride: Union[int, tuple[int, int]] = 1, padding: Union[int, tuple[int, int]] = 0, - dilation: Union[int, tuple[int, int]] = 1) \ - -> tuple[int, ...]: + dilation: Union[int, tuple[int, int]] = 1 + ) -> tuple[int, ...]: """Calculate output shape after convolution operation.""" if isinstance(kernel_size, int): kernel_size = (kernel_size, kernel_size) @@ -310,18 +269,21 @@ def calculate_output_shape( height, width = input_shape[2:] out_height = math.floor( - (height + 2 * padding[0] - dilation[0] * (kernel_size[0] - 1) - 1) - / stride[0] + 1 + (height + 2 * padding[0] + - dilation[0] * (kernel_size[0] - 1) - 1) / stride[0] + 1 ) out_width = math.floor( - (width + 2 * padding[1] - dilation[1] * (kernel_size[1] - 1) - 1) / - stride[1] + 1 + (width + 2 * padding[1] + - dilation[1] * (kernel_size[1] - 1) - 1) / stride[1] + 1 ) - return (batch_size, channels, out_height, out_width) + return batch_size, channels, out_height, out_width @staticmethod - def count_parameters(block: nn.Module, trainable_only: bool = True) -> int: + def count_parameters( + block: nn.Module, + trainable_only: bool = True + ) -> int: """Count parameters in a block.""" if trainable_only: return sum( @@ -330,55 +292,22 @@ def count_parameters(block: nn.Module, trainable_only: bool = True) -> int: return sum(p.numel() for p in block.parameters()) @staticmethod - def get_memory_usage(block: nn.Module, input_shape: tuple[int, ...]) \ - -> dict[str, float]: + def get_memory_usage( + block: nn.Module, + input_shape: tuple[int, ...] + ) -> dict[str, float]: """Estimate memory usage of a block.""" # This is a simplified estimation - param_memory = BlockUtils.count_parameters( - block) * 4 # 4 bytes per float32 + # 4 bytes per float32 + param_memory = BlockUtils.count_parameters(block) * 4 - # Rough estimation of activation memory + # Estimation of activation memory output_elements = math.prod(input_shape) - activation_memory = output_elements * 4 # 4 bytes per float32 + # 4 bytes per float32 + activation_memory = output_elements * 4 return { 'parameters_mb': param_memory / (1024 * 1024), 'activations_mb': activation_memory / (1024 * 1024), 'total_mb': (param_memory + activation_memory) / (1024 * 1024) } - - -# Example usage and testing -if __name__ == "__main__": - # Example of how the base classes would be used - - class ExampleBlock(BaseBlock): - """Example implementation of BaseBlock.""" - - def __init__(self, in_channels: int, out_channels: int, **kwargs): - super().__init__(in_channels, out_channels, **kwargs) - self.conv = nn.Conv2d(in_channels, out_channels, - kernel_size=self.kernel_size) - - def forward(self, x: torch.Tensor) -> torch.Tensor: - return self.conv(x) - - - # Register the block - BlockRegistry.register('example', ExampleBlock) - - # Create block from registry - block = BlockRegistry.create('example', in_channels=64, out_channels=128) - print(f"Created block: {block}") - print(f"Parameter count: {block.parameter_count}") - print(f"Config: {block.get_config()}") - - # Test utility functions - input_shape = (1, 64, 32, 32) - memory_info = BlockUtils.get_memory_usage(block, input_shape) - print(f"Memory usage: {memory_info}") - - output_shape = BlockUtils.calculate_output_shape( - input_shape, kernel_size=3, stride=1, padding=1 - ) - print(f"Output shape: {output_shape}") diff --git a/src/faith/train/blocks/decoder.py b/src/faith/train/blocks/decoder.py index dae1c76..ce9aeca 100644 --- a/src/faith/train/blocks/decoder.py +++ b/src/faith/train/blocks/decoder.py @@ -8,13 +8,11 @@ import torch import torch.nn as nn from typing import Union, Any, Optional -from .base import (SequentialBlock, ConfigurableBlock, register_block, - WeightInitializer) -from torch_training.blocks.residual import ResidualBlock -from . import EncoderBlock +from .base import SequentialBlock, ConfigurableBlock, WeightInitializer +from .residual import ResidualBlock +from .encoder import EncoderBlock -@register_block('decoder') class DecoderBlock(SequentialBlock): # TODO: ConvTranspose2d """Single decoder block: Upsample + ResidualBlock + Dropout. @@ -312,8 +310,8 @@ def __init__( # Validate inputs if output_channels <= 0: - raise ValueError( - f"output_channels must be positive, got {output_channels}") + raise ValueError(f"output_channels must be positive, " + f"got {output_channels}") if bottleneck_channels <= 0: raise ValueError(f"bottleneck_channels must be positive, " @@ -591,77 +589,3 @@ def __repr__(self) -> str: f"num_blocks={len(self.blocks)}, " f"bottleneck_channels={self.bottleneck_channels}, " f"upsampling_mode='{self.upsampling_mode}')") - - -# Example usage and testing -if __name__ == "__main__": - # Test DecoderBlock - print("Testing DecoderBlock...") - decoder_block = DecoderBlock( - in_channels=128, - out_channels=64, - upsample_factor=(1, 2), - dropout=0.3, - upsampling_mode='nearest', - activation='relu' - ) - - x = torch.randn(1, 128, 16, 8) - output = decoder_block(x) - print(f"DecoderBlock - Input: {x.shape}, Output: {output.shape}") - - # Test configuration - config = decoder_block.get_config() - new_block = DecoderBlock.from_config(config) - print(f"Config serialization successful: {new_block}") - - # Test BlockBasedDecoder with mock encoder blocks - print("\nTesting BlockBasedDecoder...") - - # Create mock encoder blocks for testing - from src import EncoderBlock - - - mock_encoder_blocks = [ - EncoderBlock(80, 128, pool_size=(1, 2)), - EncoderBlock(128, 256, pool_size=(1, 4)), - EncoderBlock(256, 128, pool_size=(1, 2)), - ] - - decoder = BlockBasedDecoder( - output_channels=80, - encoder_blocks=mock_encoder_blocks, - bottleneck_channels=64, - upsampling_mode='nearest' - ) - - # Test forward pass - latent = torch.randn(2, 64, 25, 4) - reconstructed = decoder(latent) - print(f"Decoder - Input: {latent.shape}, Output: {reconstructed.shape}") - - # Test feature map extraction - feature_maps = decoder.get_feature_maps(latent) - print(f"Feature maps shapes: {[fm.shape for fm in feature_maps]}") - - # Test from_encoder class method - decoder2 = BlockBasedDecoder.from_encoder( - encoder_blocks=mock_encoder_blocks, - bottleneck_channels=64, - output_channels=80, - upsampling_mode='bilinear' - ) - print(f"Decoder from encoder: {decoder2}") - - # Test registry - from src import BlockRegistry - - - registry_block = BlockRegistry.create( - 'decoder', - in_channels=64, - out_channels=32, - upsample_factor=(2, 2), - upsampling_mode='bilinear' - ) - print(f"Registry block: {registry_block}") diff --git a/src/faith/train/blocks/encoder.py b/src/faith/train/blocks/encoder.py index d1d6735..4dc6e8f 100644 --- a/src/faith/train/blocks/encoder.py +++ b/src/faith/train/blocks/encoder.py @@ -7,14 +7,13 @@ import torch import torch.nn as nn from typing import Union, Any, Optional -from .base import (SequentialBlock, ConfigurableBlock, register_block, - WeightInitializer) +from .base import SequentialBlock, ConfigurableBlock, WeightInitializer from .residual import ResidualBlock -@register_block('encoder') class EncoderBlock(SequentialBlock): - """Single encoder block: ResidualBlock + Dropout + MaxPool. + """ + Single encoder block: ResidualBlock + Dropout + MaxPool. This block represents the fundamental building unit of the encoder, combining feature extraction through ResidualBlock, regularization @@ -357,8 +356,8 @@ def _prepare_block_config( 'bias': config.get('bias', self.bias), 'use_batch_norm': config.get('use_batch_norm', True), 'activation': config.get('activation', 'relu'), - 'residual_init_method': config.get('residual_init_method', - 'kaiming'), + 'residual_init_method': config.get( + 'residual_init_method', 'kaiming'), } return block_config @@ -519,60 +518,3 @@ def __repr__(self) -> str: f"num_blocks={len(self.blocks)}, " f"bottleneck_channels={self.bottleneck_channels}, " f"hidden_dim={self.hidden_dim})") - - -# Example usage and testing -if __name__ == "__main__": - # Test EncoderBlock - print("Testing EncoderBlock...") - encoder_block = EncoderBlock( - in_channels=64, - out_channels=128, - pool_size=(1, 2), - dropout=0.3, - activation='relu' - ) - - x = torch.randn(1, 64, 32, 32) - output = encoder_block(x) - print(f"EncoderBlock - Input: {x.shape}, Output: {output.shape}") - - # Test configuration - config = encoder_block.get_config() - new_block = EncoderBlock.from_config(config) - print(f"Config serialization successful: {new_block}") - - # Test BlockBasedEncoder - print("\nTesting BlockBasedEncoder...") - block_configs = [ - {'out_channels': 128, 'pool_size': (1, 2), 'dropout': 0.2}, - {'out_channels': 256, 'pool_size': (1, 4), 'dropout': 0.3}, - {'out_channels': 128, 'pool_size': (1, 2), 'dropout': 0.4}, - ] - - encoder = BlockBasedEncoder( - input_channels=80, - block_configs=block_configs, - hidden_dim=16, - bottleneck_channels=64 - ) - - x = torch.randn(2, 80, 100, 128) - latent = encoder(x) - print(f"Encoder - Input: {x.shape}, Output: {latent.shape}") - - # Test feature map extraction - feature_maps = encoder.get_feature_maps(x) - print(f"Feature maps shapes: {[fm.shape for fm in feature_maps]}") - - # Test registry - from src import BlockRegistry - - - registry_block = BlockRegistry.create( - 'encoder', - in_channels=32, - out_channels=64, - activation='gelu' - ) - print(f"Registry block: {registry_block}") diff --git a/src/faith/train/blocks/residual.py b/src/faith/train/blocks/residual.py index 1c84372..ca06459 100644 --- a/src/faith/train/blocks/residual.py +++ b/src/faith/train/blocks/residual.py @@ -7,10 +7,9 @@ import torch import torch.nn as nn from typing import Union, Any -from .base import BaseBlock, register_block, WeightInitializer +from .base import BaseBlock, WeightInitializer -@register_block('residual') class ResidualBlock(BaseBlock): """Residual convolutional block with batch normalization and ReLU. @@ -127,8 +126,9 @@ def __init__( # Initialize weights self._initialize_weights() - def _normalize_stride(self, stride: Union[int, tuple[int, int]]) \ - -> tuple[int, int]: + def _normalize_stride(self, + stride: Union[int, tuple[int, int]] + ) -> tuple[int, int]: """Normalize stride to tuple format.""" if isinstance(stride, int): return (stride, stride) @@ -322,8 +322,10 @@ def has_skip_connection(self) -> bool: """Check if this block has a skip connection projection.""" return self.skip_conv is not None - def get_output_shape(self, input_shape: tuple[int, ...]) \ - -> tuple[int, ...]: + def get_output_shape( + self, + input_shape: tuple[int, ...] + ) -> tuple[int, ...]: """Calculate output shape given input shape. Parameters @@ -336,7 +338,7 @@ def get_output_shape(self, input_shape: tuple[int, ...]) \ tuple Output tensor shape. """ - from src import BlockUtils + from src.faith.train.blocks import BlockUtils # Account for stride in the first convolution temp_shape = BlockUtils.calculate_output_shape( @@ -349,41 +351,3 @@ def get_output_shape(self, input_shape: tuple[int, ...]) \ # Update channels batch_size, _, height, width = temp_shape return (batch_size, self.out_channels, height, width) - - -# Example usage and testing -if __name__ == "__main__": - # Test basic functionality - block = ResidualBlock(64, 128, stride=2) - x = torch.randn(1, 64, 32, 32) - output = block(x) - print(f"Input shape: {x.shape}") - print(f"Output shape: {output.shape}") - print(f"Block: {block}") - - # Test configuration serialization - config = block.get_config() - print(f"Config: {config}") - - # Create from config - new_block = ResidualBlock.from_config(config) - print(f"Recreated block: {new_block}") - - # Test registry functionality - from src import BlockRegistry - - - registry_block = BlockRegistry.create( - 'residual', - in_channels=32, - out_channels=64, - activation='gelu' - ) - print(f"Registry block: {registry_block}") - - # Test parameter counting - print(f"Parameter count: {block.parameter_count}") - - # Test output shape calculation - output_shape = block.get_output_shape((1, 64, 32, 32)) - print(f"Calculated output shape: {output_shape}") diff --git a/tests/test_residual_block.py b/src/faith/train/data/__init__.py similarity index 100% rename from tests/test_residual_block.py rename to src/faith/train/data/__init__.py diff --git a/src/faith/train/data/datasets/__init__.py b/src/faith/train/data/datasets/__init__.py new file mode 100644 index 0000000..d7bea1b --- /dev/null +++ b/src/faith/train/data/datasets/__init__.py @@ -0,0 +1,4 @@ +"""Dataset utilities.""" + +from .base import MultiFileDataset, SequentialDataset +from .file_based import JoblibDataset, HDF5Dataset, NumpyDataset diff --git a/src/faith/train/data/datasets/base.py b/src/faith/train/data/datasets/base.py new file mode 100644 index 0000000..9ea4dd3 --- /dev/null +++ b/src/faith/train/data/datasets/base.py @@ -0,0 +1,1411 @@ +"""Base class for datasets that defer file opening until worker processes.""" + +from __future__ import annotations + +import warnings +from abc import ABC, abstractmethod +from pathlib import Path +from typing import Any, Optional, Union + +import torch +from torch.utils.data import Dataset, get_worker_info + + +class LazyFileDataset(Dataset, ABC): + """Abstract base class for datasets that defer file opening. + + This class provides the foundation for datasets that need to: + - Defer file opening until worker processes are initialized + - Handle memory-mapped files safely across multiple workers + - Manage file handles efficiently in multiprocessing environments + + The pattern ensures that each DataLoader worker has its own file handles, + preventing issues with shared file descriptors and memory mapping. + """ + + def __init__( + self, + file_paths: Union[str, list[str]], + validate_on_init: bool = True, + max_open_files: Optional[int] = None, + ) -> None: + """Initialize the lazy file dataset. + + Parameters + ---------- + file_paths : Union[str, list[str]] + Path or list of paths to data files. + validate_on_init : bool, optional + Whether to validate file existence and basic format on + initialization, by default True. + max_open_files : Optional[int], optional + Maximum number of files to keep open simultaneously. If None, + no limit is imposed, by default None. + """ + super().__init__() + + # Normalize file paths to list + if isinstance(file_paths, str): + file_paths = [file_paths] + self.file_paths = file_paths + + # Configuration + self.validate_on_init = validate_on_init + self.max_open_files = max_open_files + + # Worker-specific state (None until worker_init is called) + self._opened_files = None + self._worker_id = None + self._is_initialized = False + + # File metadata (populated during construction) + self.file_metadata = [] + + # Initialize metadata and validate files if requested + if self.validate_on_init: + self._initialize_metadata() + + def _initialize_metadata(self) -> None: + """Initialize file metadata without opening files permanently. + + This method should inspect files to gather necessary metadata + (like shapes, sample counts, etc.) while minimizing resource usage. + """ + self.file_metadata = [] + + for file_path in self.file_paths: + try: + metadata = self._inspect_file(file_path) + self.file_metadata.append(metadata) + except Exception as e: + raise ValueError( + f"Failed to inspect file {file_path}: {e}") from e + + @abstractmethod + def _inspect_file(self, file_path: str) -> dict[str, Any]: + """Inspect a single file to extract metadata. + + This method should be implemented by subclasses to extract + necessary metadata from files without keeping them open. + The implementation should examine the actual data available + in the file and extract relevant information like shapes, + available keys, and any other format-specific metadata. + + Parameters + ---------- + file_path : str + Path to the file to inspect. + + Returns + ------- + dict[str, Any] + Dictionary containing file metadata. Should include at minimum: + - 'path': str - The file path + - 'valid': bool - Whether the file is valid + - 'available_keys': list[str] - Keys/datasets available in the file + Additional keys depend on the specific file format and available + data. + """ + pass + + @abstractmethod + def _open_file(self, file_path: str) -> Any: + """Open a file for reading. + + This method should be implemented by subclasses to open files + in the appropriate format (joblib, hdf5, etc.) with proper + memory mapping or lazy loading. + + Parameters + ---------- + file_path : str + Path to the file to open. + + Returns + ------- + Any + Opened file object or data structure. + """ + pass + + @abstractmethod + def _close_file(self, file_handle: Any) -> None: + """Close a file handle. + + This method should be implemented by subclasses to properly + close file handles and free resources. + + Parameters + ---------- + file_handle : Any + File handle to close. + """ + pass + + def worker_init(self) -> None: + """Initialize the dataset in a worker process. + + This method should be called once in each DataLoader worker process + to open files with worker-specific handles. It's typically called + from a worker_init_fn passed to DataLoader. + """ + if self._is_initialized: + warnings.warn( + "Dataset already initialized in this worker. " + "Skipping re-initialization." + ) + return + + # Get worker info if available + worker_info = get_worker_info() + self._worker_id = worker_info.id if worker_info else 0 + + # Open files in this worker + self._opened_files = [] + + try: + for file_path in self.file_paths: + file_handle = self._open_file(file_path) + self._opened_files.append(file_handle) + except Exception as e: + # Clean up any partially opened files + self._cleanup_files() + raise RuntimeError( + f"Failed to open files in worker {self._worker_id}: {e}" + ) from e + + self._is_initialized = True + + def _cleanup_files(self) -> None: + """Clean up opened file handles.""" + if self._opened_files is not None: + for file_handle in self._opened_files: + if file_handle is not None: + try: + self._close_file(file_handle) + except Exception as e: + warnings.warn(f"Failed to close file handle: {e}") + self._opened_files = None + self._is_initialized = False + + def __del__(self) -> None: + """Cleanup when dataset is garbage collected.""" + self._cleanup_files() + + def _ensure_initialized(self) -> None: + """Ensure the dataset is initialized in the current worker. + + Raises + ------ + RuntimeError + If the dataset has not been initialized in the current worker. + """ + if not self._is_initialized or self._opened_files is None: + raise RuntimeError( + f"Dataset not initialized in this worker. Ensure you call " + f"dataset.worker_init() in your worker_init_fn. " + f"Worker ID: {self._worker_id}" + ) + + def get_file_handle(self, file_index: int) -> Any: + """Get the file handle for a specific file index. + + Parameters + ---------- + file_index : int + Index of the file in self.file_paths. + + Returns + ------- + Any + Opened file handle. + + Raises + ------ + RuntimeError + If dataset not initialized or invalid file index. + """ + self._ensure_initialized() + + if not (0 <= file_index < len(self._opened_files)): + raise IndexError( + f"File index {file_index} out of range. " + f"Available files: 0-{len(self._opened_files) - 1}" + ) + + return self._opened_files[file_index] + + def get_file_metadata(self, file_index: int) -> dict[str, Any]: + """Get metadata for a specific file. + + Parameters + ---------- + file_index : int + Index of the file in self.file_paths. + + Returns + ------- + dict[str, Any] + File metadata dictionary. + """ + if not (0 <= file_index < len(self.file_metadata)): + raise IndexError( + f"File index {file_index} out of range. " + f"Available files: 0-{len(self.file_metadata) - 1}" + ) + + return self.file_metadata[file_index] + + @property + def num_files(self) -> int: + """Get the number of files in the dataset. + + Returns + ------- + int + Number of files. + """ + return len(self.file_paths) + + @property + def is_initialized(self) -> bool: + """Check if the dataset is initialized in the current worker. + + Returns + ------- + bool + True if initialized, False otherwise. + """ + return self._is_initialized + + @property + def worker_id(self) -> Optional[int]: + """Get the current worker ID. + + Returns + ------- + Optional[int] + Worker ID if in a worker process, None otherwise. + """ + return self._worker_id + + def get_sample_info(self, sample_idx: int = 0) -> dict[str, Any]: + """Get information about a sample without worker initialization. + + Parameters + ---------- + sample_idx : int, optional + Global sample index, by default 0. + + Returns + ------- + dict[str, Any] + Dictionary with sample information including shapes. + """ + if hasattr(self, "peek_sample"): + # For file-based datasets, use peek_sample + if sample_idx >= len(self): + raise IndexError(f"Sample index {sample_idx} out of range") + + # Find which file and subsequence this sample belongs to + file_idx, start_idx, end_idx = self.subseq_index[sample_idx] + + # Get shapes using peek method + try: + sample_input, sample_target = self.peek_sample( + file_idx=file_idx, subseq_idx=0 + ) + + if isinstance(sample_input, dict): + input_shape = {key: tensor.shape + for key, tensor in sample_input.items()} + else: + input_shape = sample_input.shape + + if isinstance(sample_target, dict): + target_shape = {key: tensor.shape + for key, tensor in sample_target.items()} + else: + target_shape = sample_target.shape + + return { + "sample_idx": sample_idx, + "file_idx": file_idx, + "input_shape": input_shape, + "target_shape": target_shape, + "subseq_start": start_idx, + "subseq_end": end_idx, + "is_multi_input": getattr(self, "is_multi_input", False), + "is_multi_target": getattr(self, "is_multi_target", False), + } + except Exception as e: + return {"sample_idx": sample_idx, + "error": f"Could not peek sample: {e}"} + else: + return {"sample_idx": sample_idx, + "error": "Dataset does not support peeking"} + + def validate_files(self) -> list[tuple[str, bool, Optional[str]]]: + """Validate all files in the dataset. + + Returns + ------- + list[tuple[str, bool, Optional[str]]] + List of tuples containing (file_path, is_valid, error_message). + error_message is None if the file is valid. + """ + results = [] + + for file_path in self.file_paths: + try: + metadata = self._inspect_file(file_path) + is_valid = metadata.get("valid", False) + results.append((file_path, is_valid, None)) + except Exception as e: + results.append((file_path, False, str(e))) + + return results + + def summary(self) -> dict[str, Any]: + """Get a summary of the dataset. + + Returns + ------- + dict[str, Any] + Dictionary containing dataset summary information. + """ + return { + "num_files": self.num_files, + "file_paths": self.file_paths, + "is_initialized": self.is_initialized, + "worker_id": self.worker_id, + "validate_on_init": self.validate_on_init, + "max_open_files": self.max_open_files, + "file_metadata": self.file_metadata, + } + + def __repr__(self) -> str: + """String representation of the dataset. + + Returns + ------- + str + String representation. + """ + return ( + f"{self.__class__.__name__}(" + f"num_files={self.num_files}, " + f"initialized={self.is_initialized}, " + f"worker_id={self.worker_id})" + ) + + +def create_worker_init_fn(dataset: LazyFileDataset) -> callable: + """Create a worker initialization function for a LazyFileDataset. + + This is a convenience function that creates the worker_init_fn + needed by PyTorch's DataLoader to properly initialize lazy datasets + in each worker process. + + Parameters + ---------- + dataset : LazyFileDataset + The dataset that needs worker initialization. + + Returns + ------- + callable + Worker initialization function suitable for DataLoader. + + Examples + -------- + >>> dataset = MyLazyDataset(file_paths=['file1.dat', 'file2.dat']) + >>> worker_init_fn = create_worker_init_fn(dataset) + >>> loader = DataLoader(dataset, batch_size=32, num_workers=4, + ... worker_init_fn=worker_init_fn) + """ + + def worker_init_fn(worker_id: int) -> None: + """Initialize dataset in worker process. + + Parameters + ---------- + worker_id : int + ID of the current worker process. + """ + # Get the dataset from worker info + worker_info = get_worker_info() + if worker_info is not None: + worker_dataset = worker_info.dataset + if isinstance(worker_dataset, LazyFileDataset): + worker_dataset.worker_init() + else: + warnings.warn( + f"Dataset in worker {worker_id} is not a LazyFileDataset. " + f"Got {type(worker_dataset)}." + ) + + return worker_init_fn + + +class SequentialDataset(LazyFileDataset, ABC): + """Abstract base class for sequential/time-series datasets with chunking. + + This class extends LazyFileDataset to handle sequential data that needs to + be divided into subsequences or chunks. It provides the infrastructure for: + - Building indices of available subsequences across files + - Different chunking strategies (non-overlapping, sliding window, etc.) + - Flexible subsequence length handling + - Sample indexing and retrieval + + The class maintains an index of all available subsequences without loading + the actual data, enabling efficient random access to chunks across multiple + files. + """ + + def __init__( + self, + file_paths: Union[str, list[str]], + subseq_len: int, + chunking_strategy: str = "non_overlapping", + overlap: int = 0, + min_seq_len: Optional[int] = None, + validate_on_init: bool = True, + **kwargs, + ) -> None: + """Initialize the sequential dataset. + + Parameters + ---------- + file_paths : Union[str, list[str]] + Path or list of paths to data files. + subseq_len : int + Length of subsequences to extract. Use -1 to use entire sequences. + chunking_strategy : str, optional + Strategy for creating chunks ("non_overlapping", "sliding_window", + "random_crop"), by default "non_overlapping". + overlap : int, optional + Number of samples to overlap between consecutive chunks + (for sliding_window), by default 0. + min_seq_len : Optional[int], optional + Minimum sequence length required to include a file. If None, + uses subseq_len, by default None. + validate_on_init : bool, optional + Whether to validate files and build index on initialization, + by default True. + **kwargs + Additional arguments passed to LazyFileDataset. + """ + # Store chunking parameters before calling super().__init__ + self.subseq_len = subseq_len + self.chunking_strategy = chunking_strategy + self.overlap = overlap + self.min_seq_len = min_seq_len or (subseq_len if subseq_len > 0 else 1) + + # Validate chunking parameters + self._validate_chunking_params() + + # Subsequence index: list of (file_idx, start_idx, end_idx) tuples + self.subseq_index = [] + + # Initialize parent class + super().__init__( + file_paths=file_paths, validate_on_init=validate_on_init, **kwargs + ) + + # Build subsequence index after metadata is available + if validate_on_init: + self._build_subsequence_index() + + def _validate_chunking_params(self) -> None: + """Validate chunking parameters. + + Raises + ------ + ValueError + If chunking parameters are invalid. + """ + valid_strategies = ["non_overlapping", "sliding_window", "random_crop"] + if self.chunking_strategy not in valid_strategies: + raise ValueError( + f"Invalid chunking_strategy '{self.chunking_strategy}'. " + f"Must be one of {valid_strategies}" + ) + + if self.subseq_len <= 0 and self.subseq_len != -1: + raise ValueError( + f"subseq_len must be positive or -1 (for full sequences), " + f"got {self.subseq_len}" + ) + + if self.overlap < 0: + raise ValueError(f"overlap must be non-negative, " + f"got {self.overlap}") + + if (self.chunking_strategy == "sliding_window" + and self.overlap >= self.subseq_len > 0): + raise ValueError( + f"overlap ({self.overlap}) must be less than subseq_len " + f"({self.subseq_len}) for sliding_window strategy" + ) + + @abstractmethod + def _get_sequence_length(self, file_metadata: dict[str, Any]) -> int: + """Get the sequence length from file metadata. + + This method should be implemented by subclasses to extract the + sequence length (number of time steps) from the file metadata. + The implementation should examine the actual data shapes available + in the file and infer the time dimension. + + Parameters + ---------- + file_metadata : dict[str, Any] + Metadata dictionary for a file. + + Returns + ------- + int + Number of time steps in the sequence. + """ + pass + + def _build_subsequence_index(self) -> None: + """Build an index of all available subsequences across files. + + This creates a flat index where each entry represents one subsequence + that can be accessed via __getitem__. The index contains tuples of + (file_index, start_sample, end_sample). + """ + self.subseq_index = [] + + for file_idx, metadata in enumerate(self.file_metadata): + seq_len = self._get_sequence_length(metadata) + + # Skip files that are too short + if seq_len < self.min_seq_len: + warnings.warn( + f"Skipping file {metadata.get('path', file_idx)}: " + f"sequence length {seq_len} < minimum {self.min_seq_len}" + ) + continue + + # Generate subsequences based on strategy + subsequences = self._generate_subsequences(seq_len, file_idx) + self.subseq_index.extend(subsequences) + + def _generate_subsequences(self, seq_len: int, file_idx: int) \ + -> list[tuple[int, int, int]]: + """Generate subsequence indices for a single file. + + Parameters + ---------- + seq_len : int + Total length of the sequence in the file. + file_idx : int + Index of the file. + + Returns + ------- + list[tuple[int, int, int]] + List of (file_idx, start_idx, end_idx) tuples. + """ + subsequences = [] + + # Handle full sequence case + if self.subseq_len == -1: + subsequences.append((file_idx, 0, seq_len)) + return subsequences + + # Handle different chunking strategies + if self.chunking_strategy == "non_overlapping": + subsequences = self._generate_non_overlapping(seq_len, file_idx) + elif self.chunking_strategy == "sliding_window": + subsequences = self._generate_sliding_window(seq_len, file_idx) + elif self.chunking_strategy == "random_crop": + subsequences = self._generate_random_crop(seq_len, file_idx) + + return subsequences + + def _generate_non_overlapping( + self, seq_len: int, file_idx: int + ) -> list[tuple[int, int, int]]: + """Generate non-overlapping subsequences. + + Parameters + ---------- + seq_len : int + Total sequence length. + file_idx : int + File index. + + Returns + ------- + list[tuple[int, int, int]] + List of non-overlapping subsequences. + """ + subsequences = [] + + if seq_len >= self.subseq_len: + n_chunks = seq_len // self.subseq_len + for chunk_idx in range(n_chunks): + start_idx = chunk_idx * self.subseq_len + end_idx = start_idx + self.subseq_len + subsequences.append((file_idx, start_idx, end_idx)) + + return subsequences + + def _generate_sliding_window(self, seq_len: int, file_idx: int) \ + -> list[tuple[int, int, int]]: + """Generate sliding window subsequences. + + Parameters + ---------- + seq_len : int + Total sequence length. + file_idx : int + File index. + + Returns + ------- + list[tuple[int, int, int]] + List of sliding window subsequences. + """ + subsequences = [] + + if seq_len >= self.subseq_len: + step_size = self.subseq_len - self.overlap + start_idx = 0 + + while start_idx + self.subseq_len <= seq_len: + end_idx = start_idx + self.subseq_len + subsequences.append((file_idx, start_idx, end_idx)) + start_idx += step_size + + return subsequences + + def _generate_random_crop(self, seq_len: int, file_idx: int) \ + -> list[tuple[int, int, int]]: + """Generate random crop positions (one per file for now). + + For random cropping, we typically generate crop positions at runtime, + but we still need to register that this file can provide crops. + + Parameters + ---------- + seq_len : int + Total sequence length. + file_idx : int + File index. + + Returns + ------- + list[tuple[int, int, int]] + List containing one entry representing the file's crop potential. + """ + subsequences = [] + + if seq_len >= self.subseq_len: + # For random crop, we store (file_idx, -1, seq_len) to indicate + # that this file can provide random crops + subsequences.append((file_idx, -1, seq_len)) + + return subsequences + + def __len__(self) -> int: + """Get the total number of subsequences. + + Returns + ------- + int + Total number of available subsequences across all files. + """ + return len(self.subseq_index) + + def __getitem__(self, idx: int) \ + -> tuple[ + Union[torch.Tensor, dict[str, torch.Tensor]], + Union[torch.Tensor, dict[str, torch.Tensor]], + ]: + """Get a subsequence by index. + + Parameters + ---------- + idx : int + Index of the subsequence to retrieve. + + Returns + ------- + tuple[Union[torch.Tensor, dict[str, torch.Tensor]], + Union[torch.Tensor, dict[str, torch.Tensor]]] + Tuple of (input_tensor, target_tensor). Each can be either a single + tensor or a dictionary of tensors depending on whether multiple + keys were specified. + + Raises + ------ + IndexError + If index is out of range. + RuntimeError + If dataset is not properly initialized. + """ + if not (0 <= idx < len(self.subseq_index)): + raise IndexError(f"Index {idx} out of range. Dataset has " + f"{len(self.subseq_index)} subsequences.") + + self._ensure_initialized() + + file_idx, start_idx, end_idx = self.subseq_index[idx] + + # Handle random crop case + if start_idx == -1: + start_idx, end_idx = self._generate_random_crop_indices(end_idx) + + # Get data from file + input_tensor, target_tensor = self._extract_subsequence( + file_idx, start_idx, end_idx + ) + + return input_tensor, target_tensor + + def _generate_random_crop_indices(self, seq_len: int) -> tuple[int, int]: + """Generate random crop start and end indices. + + Parameters + ---------- + seq_len : int + Total sequence length available for cropping. + + Returns + ------- + tuple[int, int] + Start and end indices for the random crop. + """ + if seq_len < self.subseq_len: + raise ValueError(f"Sequence length {seq_len} < subsequence length " + f"{self.subseq_len}") + + max_start = seq_len - self.subseq_len + start_idx = torch.randint(0, max_start + 1, (1,)).item() + end_idx = start_idx + self.subseq_len + + return start_idx, end_idx + + @abstractmethod + def _extract_subsequence(self, file_idx: int, + start_idx: int, end_idx: int) \ + -> tuple[ + Union[torch.Tensor, dict[str, torch.Tensor]], + Union[torch.Tensor, dict[str, torch.Tensor]], + ]: + """Extract a subsequence from a file. + + This method should be implemented by subclasses to extract the actual + data subsequence from the opened file. + + Parameters + ---------- + file_idx : int + Index of the file to read from. + start_idx : int + Start index of the subsequence. + end_idx : int + End index of the subsequence. + + Returns + ------- + tuple[Union[torch.Tensor, dict[str, torch.Tensor]], + Union[torch.Tensor, dict[str, torch.Tensor]]] + Tuple of (input_tensor, target_tensor). Each can be either a single + tensor or a dictionary of tensors depending on whether multiple + keys were specified. + """ + pass + + def get_subsequence_info(self, idx: int) -> dict[str, Any]: + """Get information about a specific subsequence. + + Parameters + ---------- + idx : int + Index of the subsequence. + + Returns + ------- + dict[str, Any] + Dictionary containing subsequence information. + """ + if not (0 <= idx < len(self.subseq_index)): + raise IndexError(f"Index {idx} out of range") + + file_idx, start_idx, end_idx = self.subseq_index[idx] + file_metadata = self.get_file_metadata(file_idx) + + return { + "subsequence_idx": idx, + "file_idx": file_idx, + "file_path": file_metadata.get("path", "unknown"), + "start_idx": start_idx, + "end_idx": end_idx, + "length": + end_idx - start_idx if start_idx != -1 else self.subseq_len, + "is_random_crop": start_idx == -1, + } + + def get_file_subsequences(self, file_idx: int) -> list[int]: + """Get all subsequence indices that belong to a specific file. + + Parameters + ---------- + file_idx : int + Index of the file. + + Returns + ------- + list[int] + List of subsequence indices from the specified file. + """ + return [ + idx + for idx, (f_idx, _, _) in enumerate(self.subseq_index) + if f_idx == file_idx + ] + + def summary(self) -> dict[str, Any]: + """Get a summary of the dataset. + + Returns + ------- + dict[str, Any] + Dictionary containing dataset summary information. + """ + base_summary = super().summary() + + # Add sequential-specific information + sequential_info = { + "subseq_len": self.subseq_len, + "chunking_strategy": self.chunking_strategy, + "overlap": self.overlap, + "min_seq_len": self.min_seq_len, + "total_subsequences": len(self.subseq_index), + "subsequences_per_file": [len(self.get_file_subsequences(i)) + for i in range(self.num_files) + ], + } + + base_summary.update(sequential_info) + return base_summary + + def __repr__(self) -> str: + """String representation of the dataset. + + Returns + ------- + str + String representation. + """ + return ( + f"{self.__class__.__name__}(" + f"num_files={self.num_files}, " + f"total_subsequences={len(self.subseq_index)}, " + f"subseq_len={self.subseq_len}, " + f"strategy={self.chunking_strategy})" + ) + + +class MultiFileDataset(SequentialDataset, ABC): + """ + Abstract base class for datasets spanning multiple files with advanced + management. + + This class extends SequentialDataset to provide sophisticated multi-file + handling: + - File discovery and pattern matching + - File sorting and organization + - Load balancing across files + - File filtering and selection + - Memory management for large file collections + + The class is designed to handle datasets where: + - Data is distributed across many files + - Files may have different sizes + - You want to control which files are used + - You need efficient access patterns across files + """ + + def __init__( + self, + file_paths: Union[str, list[str], Path], + subseq_len: int, + file_pattern: Optional[str] = None, + file_filter: Optional[callable] = None, + sort_files: bool = True, + max_files: Optional[int] = None, + balance_files: bool = False, + file_weights: Optional[dict[str, float]] = None, + cache_metadata: bool = True, + **kwargs, + ) -> None: + """Initialize the multi-file dataset. + + Parameters + ---------- + file_paths : Union[str, list[str], Path] + Path(s) to data files. Can be: + - Single file path + - List of file paths + - Directory path (will search for files) + - Glob pattern + subseq_len : int + Length of subsequences to extract. + file_pattern : Optional[str], optional + Glob pattern for file discovery when file_paths is a directory, + by default None (uses "*"). + file_filter : Optional[callable], optional + Function to filter files. Should take file path and return bool, + by default None. + sort_files : bool, optional + Whether to sort files by name, by default True. + max_files : Optional[int], optional + Maximum number of files to use, by default None (use all). + balance_files : bool, optional + Whether to balance subsequences across files, by default False. + file_weights : Optional[dict[str, float]], optional + Weights for sampling from different files, by default None. + cache_metadata : bool, optional + Whether to cache file metadata to disk, by default True. + **kwargs + Additional arguments passed to SequentialDataset. + """ + # Store multi-file parameters + self.file_pattern = file_pattern or "*" + self.file_filter = file_filter + self.sort_files = sort_files + self.max_files = max_files + self.balance_files = balance_files + self.file_weights = file_weights or {} + self.cache_metadata = cache_metadata + + # File management state + self.file_stats = [] + self.file_groups = {} + self.balanced_indices = None + self._metadata_cache = {} + + # Discover and process files + resolved_file_paths = self._discover_files(file_paths) + + # Initialize parent with resolved file paths + super().__init__( + file_paths=resolved_file_paths, subseq_len=subseq_len, **kwargs) + + # Build file statistics and balancing if requested + if self.validate_on_init: + self._build_file_stats() + if self.balance_files: + self._build_balanced_indices() + + def _discover_files(self, file_paths: Union[str, list[str], Path]) \ + -> list[str]: + """Discover and process file paths. + + Parameters + ---------- + file_paths : Union[str, list[str], Path] + Input file paths specification. + + Returns + ------- + list[str] + List of resolved file paths. + """ + if isinstance(file_paths, (str, Path)): + file_paths = Path(file_paths) + + if file_paths.is_dir(): + # Directory: search for files + discovered_files = list(file_paths.glob(self.file_pattern)) + resolved_paths = [ + str(f) for f in discovered_files if f.is_file()] + elif "*" in str(file_paths) or "?" in str(file_paths): + # Glob pattern + from glob import glob + + resolved_paths = glob(str(file_paths)) + else: + # Single file + resolved_paths = [str(file_paths)] + else: + # List of paths + resolved_paths = [str(p) for p in file_paths] + + # Apply file filter if provided + if self.file_filter: + resolved_paths = [f for f in resolved_paths if self.file_filter(f)] + + # Sort files if requested + if self.sort_files: + resolved_paths.sort() + + # Limit number of files + if self.max_files and len(resolved_paths) > self.max_files: + resolved_paths = resolved_paths[: self.max_files] + + if not resolved_paths: + raise ValueError( + f"No files found matching criteria. " + f"Input: {file_paths}, pattern: {self.file_pattern}" + ) + + return resolved_paths + + def _build_file_stats(self) -> None: + """Build statistics for each file.""" + self.file_stats = [] + + for file_idx, metadata in enumerate(self.file_metadata): + file_path = metadata.get("path", f"file_{file_idx}") + seq_len = self._get_sequence_length(metadata) + + # Count subsequences for this file + file_subseqs = self.get_file_subsequences(file_idx) + num_subseqs = len(file_subseqs) + + # Calculate file weight + weight = self.file_weights.get(file_path, 1.0) + + stats = { + "file_idx": file_idx, + "file_path": file_path, + "sequence_length": seq_len, + "num_subsequences": num_subseqs, + "weight": weight, + "subsequence_indices": file_subseqs, + } + + self.file_stats.append(stats) + + def _build_balanced_indices(self) -> None: + """Build balanced indices for equal representation across files. + + This creates a new indexing scheme where each file contributes + roughly the same number of samples, regardless of file size. + """ + if not self.file_stats: + return + + # Find minimum number of subsequences across files + min_subseqs = min( + stats["num_subsequences"] + for stats in self.file_stats + if stats["num_subsequences"] > 0 + ) + + if min_subseqs == 0: + warnings.warn("No files have valid subsequences for balancing") + return + + # Build balanced index + self.balanced_indices = [] + + for stats in self.file_stats: + if stats["num_subsequences"] > 0: + # Sample evenly from this file's subsequences + file_subseqs = stats["subsequence_indices"] + + if len(file_subseqs) >= min_subseqs: + # Sample min_subseqs indices evenly + step = len(file_subseqs) / min_subseqs + selected_indices = [ + file_subseqs[int(i * step)] for i in range(min_subseqs) + ] + else: + # Use all available indices + # (shouldn't happen due to min calculation) + selected_indices = file_subseqs + + self.balanced_indices.extend(selected_indices) + + def __len__(self) -> int: + """Get the total number of subsequences. + + Returns + ------- + int + Total number of subsequences (balanced or unbalanced). + """ + if self.balance_files and self.balanced_indices is not None: + return len(self.balanced_indices) + else: + return super().__len__() + + def __getitem__(self, idx: int) -> tuple[torch.Tensor, torch.Tensor]: + """Get a subsequence by index. + + Parameters + ---------- + idx : int + Index of the subsequence to retrieve. + + Returns + ------- + tuple[torch.Tensor, torch.Tensor] + Tuple of (input_tensor, target_tensor). + """ + # Handle balanced indexing + if self.balance_files and self.balanced_indices is not None: + if not (0 <= idx < len(self.balanced_indices)): + raise IndexError( + f"Balanced index {idx} out of range. Dataset has " + f"{len(self.balanced_indices)} balanced subsequences." + ) + # Map to actual subsequence index + actual_idx = self.balanced_indices[idx] + return super().__getitem__(actual_idx) + else: + return super().__getitem__(idx) + + def get_file_stats(self) -> list[dict[str, Any]]: + """Get statistics for all files. + + Returns + ------- + list[dict[str, Any]] + List of file statistics dictionaries. + """ + return self.file_stats.copy() + + def get_largest_files(self, n: int = 5) -> list[dict[str, Any]]: + """Get the n largest files by subsequence count. + + Parameters + ---------- + n : int, optional + Number of files to return, by default 5. + + Returns + ------- + list[dict[str, Any]] + List of file statistics sorted by subsequence count. + """ + sorted_files = sorted( + self.file_stats, key=lambda x: x["num_subsequences"], reverse=True + ) + return sorted_files[:n] + + def get_files_by_pattern(self, pattern: str) -> list[dict[str, Any]]: + """Get files matching a pattern. + + Parameters + ---------- + pattern : str + Pattern to match against file paths. + + Returns + ------- + list[dict[str, Any]] + List of matching file statistics. + """ + import re + + regex = re.compile(pattern) + + return [ + stats for stats in self.file_stats + if regex.search(stats["file_path"]) + ] + + def filter_files_by_size(self, min_subsequences: int = 1, + max_subsequences: Optional[int] = None) \ + -> "MultiFileDataset": + """Create a new dataset with files filtered by subsequence count. + + Parameters + ---------- + min_subsequences : int, optional + Minimum number of subsequences required, by default 1. + max_subsequences : Optional[int], optional + Maximum number of subsequences allowed, by default None. + + Returns + ------- + MultiFileDataset + New dataset with filtered files. + """ + filtered_paths = [] + + for stats in self.file_stats: + num_subseqs = stats["num_subsequences"] + if num_subseqs >= min_subsequences: + if max_subsequences is None or num_subseqs <= max_subsequences: + filtered_paths.append(stats["file_path"]) + + # Create new dataset with same parameters but filtered files + return self.__class__( + file_paths=filtered_paths, + subseq_len=self.subseq_len, + chunking_strategy=self.chunking_strategy, + overlap=self.overlap, + balance_files=self.balance_files, + file_weights=self.file_weights, + validate_on_init=self.validate_on_init, + ) + + def split_by_files( + self, + train_ratio: float = 0.8, + val_ratio: float = 0.2, + random_seed: Optional[int] = None, + ) -> tuple["MultiFileDataset", "MultiFileDataset"]: + """Split the dataset by files (not by samples). + + This ensures that samples from the same file don't appear in both + training and validation sets, which is important for proper evaluation. + + Parameters + ---------- + train_ratio : float, optional + Fraction of files for training, by default 0.8. + val_ratio : float, optional + Fraction of files for validation, by default 0.1. + random_seed : Optional[int], optional + Random seed for reproducible splits, by default None. + + Returns + ------- + tuple[MultiFileDataset, MultiFileDataset, MultiFileDataset] + Train, validation, and test datasets. + """ + if abs(train_ratio + val_ratio - 1.0) > 1e-6: + raise ValueError("Split ratios must sum to 1.0") + + # Get all file paths + all_paths = [stats["file_path"] for stats in self.file_stats] + + # Shuffle files + if random_seed is not None: + import random + + random.seed(random_seed) + random.shuffle(all_paths) + + # Calculate split points + n_files = len(all_paths) + n_train = int(n_files * train_ratio) + n_val = int(n_files - n_train) + + # Split file paths + train_paths = all_paths[:n_train] + val_paths = all_paths[n_train:] + + if n_train != len(train_paths): + raise ValueError("Training set size does not match expected " + "number of files.") + if n_val != len(val_paths): + raise ValueError("Validation set size does not match expected " + "number of files.") + + # Create split datasets + common_params = { + "subseq_len": self.subseq_len, + "chunking_strategy": self.chunking_strategy, + "overlap": self.overlap, + "balance_files": self.balance_files, + "validate_on_init": self.validate_on_init, + } + + train_dataset = self.__class__(file_paths=train_paths, **common_params) + val_dataset = self.__class__(file_paths=val_paths, **common_params) + + return train_dataset, val_dataset + + def get_memory_usage_estimate(self) -> dict[str, float]: + """Estimate memory usage for different scenarios. + + Returns + ------- + dict[str, float] + Dictionary with memory estimates in GB. + """ + total_subseqs = len(self) + + # Estimate based on first file (rough approximation) + if self.file_metadata: + # This would need to be implemented by subclasses + # based on their specific data types and sizes + try: + sample_input, sample_target = self[0] + + input_size = ( + sample_input.numel() * sample_input.element_size()) + target_size = ( + sample_target.numel() * sample_target.element_size()) + + per_sample_bytes = input_size + target_size + + return { + "per_sample_mb": per_sample_bytes / (1024 * 1024), + "total_dataset_gb": + (total_subseqs * per_sample_bytes) / (1024 ** 3), + "single_batch_mb": (32 * per_sample_bytes) / (1024 * 1024), + # Assume batch=32 + } + except Exception: + pass + + return {"error": "No data available for estimation"} + + def summary(self) -> dict[str, Any]: + """Get a comprehensive summary of the dataset. + + Returns + ------- + dict[str, Any] + Dictionary containing dataset summary information. + """ + base_summary = super().summary() + + # Add multi-file specific information + file_sizes = [stats["num_subsequences"] for stats in self.file_stats] + + multifile_info = { + "file_pattern": self.file_pattern, + "max_files": self.max_files, + "balance_files": self.balance_files, + "actual_num_files": len(self.file_stats), + "file_size_stats": { + "min_subsequences": min(file_sizes) if file_sizes else 0, + "max_subsequences": max(file_sizes) if file_sizes else 0, + "avg_subsequences": sum(file_sizes) / len(file_sizes) + if file_sizes + else 0, + "total_subsequences": sum(file_sizes), + }, + "balanced_length": len(self.balanced_indices) + if self.balanced_indices + else None, + "has_file_weights": bool(self.file_weights), + } + + base_summary.update(multifile_info) + return base_summary + + def __repr__(self) -> str: + """String representation of the dataset. + + Returns + ------- + str + String representation. + """ + balance_info = "" + if self.balance_files: + balanced = len(self.balanced_indices) \ + if self.balanced_indices else 0 + balance_info = f", balanced={balanced}" + + return ( + f"{self.__class__.__name__}(files={len(self.file_stats)}, " + f"subsequences={len(self)}{balance_info}, " + f"subseq_len={self.subseq_len})" + ) diff --git a/src/faith/train/data/datasets/file_based.py b/src/faith/train/data/datasets/file_based.py new file mode 100644 index 0000000..c7d2940 --- /dev/null +++ b/src/faith/train/data/datasets/file_based.py @@ -0,0 +1,1163 @@ +"""Concrete implementations of file-based datasets.""" + +from __future__ import annotations + +import warnings +from collections import Counter +from pathlib import Path +from typing import Any, Optional, Union + +import numpy as np +import torch + +from .base import MultiFileDataset + + +class JoblibDataset(MultiFileDataset): + """Dataset for joblib files with memory-mapped loading. + + Supports flexible key configuration for different file formats. + Can work with input-only data (autoencoders) or input-target pairs. + """ + + def __init__( + self, + file_paths: Union[str, list[str], Path], + subseq_len: int, + input_key: Optional[Union[str, list[str]]] = None, + target_key: Optional[Union[str, list[str]]] = None, + target_slice: Optional[tuple] = None, + auto_detect_keys: bool = True, + **kwargs, + ) -> None: + """Initialize joblib dataset. + + Parameters + ---------- + file_paths : Union[str, list[str], Path] + Path(s) to joblib files. + subseq_len : int + Length of subsequences to extract. + input_key : Optional[Union[str, list[str]]], optional + Key(s) for input data in joblib files. If None, will auto-detect. + If list, returns dictionary of inputs, by default None. + target_key : Optional[Union[str, list[str]]], optional + Key(s) for target data in joblib files. If None, uses input as + target (autoencoder mode). If list, returns dictionary of targets, + by default None. + target_slice : Optional[tuple], optional + Slice to apply to target tensor + (e.g., (slice(None, 48), slice(None), slice(None)) + for [:48, :, :]), by default None. + auto_detect_keys : bool, optional + Whether to automatically detect keys from first valid file, + by default True. + **kwargs + Additional arguments passed to MultiFileDataset. + """ + self.input_key = input_key + self.target_key = target_key + self.target_slice = target_slice + # Auto-detect if no input key provided + self.auto_detect_keys = auto_detect_keys or (input_key is None) + self.is_autoencoder_mode = target_key is None + + # Handle multiple keys + self.is_multi_input = isinstance(input_key, list) + self.is_multi_target = isinstance(target_key, list) + + # Store original keys for auto-detection fallback + self._original_input_key = input_key + self._original_target_key = target_key + + # Track if keys have been detected + self._keys_detected = False + + super().__init__(file_paths, subseq_len, **kwargs) + + def _detect_keys(self, data_dict: dict[str, Any], file_path: str) -> None: + """Auto-detect keys from file contents.""" + available_keys = list(data_dict.keys()) + + print(f"Auto-detecting keys from {file_path}") + print(f"Available keys: {available_keys}") + + # Skip auto-detection if keys are already provided as lists + if self.is_multi_input or self.is_multi_target: + print("Skipping auto-detection since list of keys provided") + return + + # Try to find input key + if not self.is_multi_input and self.input_key is None: + input_candidates = [ + "input", + "data", + "x", + "features", + "spectrogram", + "signal", + ] + for candidate in input_candidates: + if candidate in available_keys: + self.input_key = candidate + print(f"Detected input_key: {self.input_key}") + break + else: + # If no standard key found, use the first array-like key + for key in available_keys: + if ( + hasattr(data_dict[key], "shape") + and len(data_dict[key].shape) >= 2 + ): + self.input_key = key + print(f"Using first array key as input_key: " + f"{self.input_key}") + break + + # Try to find target key + # (only if not in autoencoder mode and not multi-target) + if (not self.is_autoencoder_mode and not self.is_multi_target + and self.target_key is None): + target_candidates = [ + "target", "label", "y", "output", "ground_truth"] + for candidate in target_candidates: + if candidate in available_keys: + self.target_key = candidate + print(f"Detected target_key: {self.target_key}") + break + else: + # If no standard target key found, + # look for second array-like key + array_keys = [ + k for k in available_keys + if hasattr(data_dict[k], "shape") + and len(data_dict[k].shape) >= 2 + ] + if len(array_keys) >= 2: + # Use second array key as target (first is input) + target_candidates_from_arrays = [ + k for k in array_keys if k != self.input_key + ] + if target_candidates_from_arrays: + self.target_key = target_candidates_from_arrays[0] + print(f"Using second array key as target_key: " + f"{self.target_key}") + + def _infer_sequence_length_from_data(self, + data_dict: dict[str, Any]) -> int: + """Infer sequence length by examining data shapes. + + Parameters + ---------- + data_dict : dict[str, Any] + Dictionary containing the loaded data. + + Returns + ------- + int + Inferred sequence length. + """ + # Handle multiple input keys + if self.is_multi_input: + sequence_lengths = [] + for key in self.input_key: + if key in data_dict: + input_data = data_dict[key] + if hasattr(input_data, "shape"): + shape = input_data.shape + # Assume time dimension is the longest dimension or + # axis 2 if >= 3D + if len(shape) >= 3: + # Conventional: (channels, features, time) + seq_len = shape[1] + elif len(shape) == 2: + # Use the larger dimension as time + seq_len = max(shape) + elif len(shape) == 1: + seq_len = shape[0] # 1D: (time,) + else: + continue # Skip scalar values + + sequence_lengths.append((key, seq_len)) + + if sequence_lengths: + # Check if all keys have the same sequence length + unique_lengths = set(length for _, length in sequence_lengths) + if len(unique_lengths) == 1: + return sequence_lengths[0][1] # All keys have same length + else: + # Different sequence lengths - use the most common one or + # smallest + length_counts = Counter( + length for _, length in sequence_lengths) + most_common_length = length_counts.most_common(1)[0][0] + + # Warn about inconsistent lengths + warnings.warn( + f"Inconsistent sequence lengths across input keys: " + f"{dict(sequence_lengths)}. Using most common length: " + f"{most_common_length}" + ) + return most_common_length + + # Handle single input key (original logic) + elif self.input_key is not None and self.input_key in data_dict: + input_data = data_dict[self.input_key] + if hasattr(input_data, "shape"): + shape = input_data.shape + # Assume time dimension is longest dimension or axis 1 if >= 3D + if len(shape) >= 3: + return shape[1] # Conventional: (channels, time, features) + elif len(shape) == 2: + # Use the larger dimension as time + return max(shape) + elif len(shape) == 1: + return shape[0] # 1D: (time,) + + # Fallback: find the largest array and use its time dimension + max_samples = 0 + for key, value in data_dict.items(): + if hasattr(value, "shape") and len(value.shape) >= 1: + shape = value.shape + # Try different conventions for time dimension + if len(shape) >= 3: + # Try axis 2 first (channels, features, time) + candidate_time = shape[2] + max_samples = max(max_samples, candidate_time) + elif len(shape) >= 2: + # Use the larger dimension as time + candidate_time = max(shape) + max_samples = max(max_samples, candidate_time) + elif len(shape) == 1: + # 1D array: assume it's all time + max_samples = max(max_samples, shape[0]) + + return max_samples + + def _validate_keys_in_file(self, + data_dict: dict[str, Any], + file_path: str) -> tuple[bool, str]: + """Validate that required keys exist in the file. + + Parameters + ---------- + data_dict : dict[str, Any] + Dictionary containing the loaded data. + file_path : str + Path to the file being validated. + + Returns + ------- + tuple[bool, str] + Tuple of (is_valid, error_message). Error_message empty if valid. + """ + available_keys = list(data_dict.keys()) + + # Validate input keys + if self.is_multi_input: + missing_input_keys = [ + key for key in self.input_key if key not in data_dict] + if missing_input_keys: + return ( + False, + f"Missing input keys {missing_input_keys}. " + f"Available keys: {available_keys}", + ) + elif self.input_key is not None and self.input_key not in data_dict: + return ( + False, + f"Missing input key '{self.input_key}'. " + f"Available keys: {available_keys}", + ) + + # Validate target keys (if not in autoencoder mode) + if not self.is_autoencoder_mode: + if self.is_multi_target: + missing_target_keys = [ + key for key in self.target_key if key not in data_dict + ] + if missing_target_keys: + return ( + False, + f"Missing target keys {missing_target_keys}. " + f"Available keys: {available_keys}", + ) + elif (self.target_key is not None + and self.target_key not in data_dict): + return ( + False, + f"Missing target key '{self.target_key}'. " + f"Available keys: {available_keys}", + ) + + return True, "" + + def _inspect_file(self, file_path: str) -> dict[str, Any]: + """Inspect joblib file to extract metadata.""" + try: + from joblib import load + except ImportError: + raise ImportError("joblib is required for JoblibDataset. " + "Install with: pip install joblib") + + try: + data_dict = load(file_path, mmap_mode="r") + + # Auto-detect keys from first file if requested + if self.auto_detect_keys and not self._keys_detected: + self._detect_keys(data_dict, file_path) + self._keys_detected = True + + # Get available keys + available_keys = list(data_dict.keys()) + + # Validate keys exist in file + is_valid, error_msg = self._validate_keys_in_file(data_dict, + file_path) + if not is_valid: + return { + "path": file_path, + "valid": False, + "error": error_msg, + "n_samples": 0, + "available_keys": available_keys, + } + + # Infer sequence length from data shapes + n_samples = self._infer_sequence_length_from_data(data_dict) + + # Get data shapes for metadata + input_shape = None + target_shape = None + + if self.is_multi_input: + input_shape = { + key: data_dict[key].shape + for key in self.input_key + if key in data_dict + } + elif self.input_key is not None and self.input_key in data_dict: + input_shape = data_dict[self.input_key].shape + + if not self.is_autoencoder_mode: + if self.is_multi_target: + target_shape = { + key: data_dict[key].shape + for key in self.target_key + if key in data_dict + } + elif (self.target_key is not None + and self.target_key in data_dict): + target_shape = data_dict[self.target_key].shape + + metadata = { + "path": file_path, + "valid": True, + "n_samples": n_samples, + "input_shape": input_shape, + "target_shape": target_shape, + "available_keys": available_keys, + "is_autoencoder_mode": self.is_autoencoder_mode, + "inferred_input_key": self.input_key, + "inferred_target_key": self.target_key, + } + + del data_dict # Close file handle + return metadata + + except Exception as e: + return { + "path": file_path, + "valid": False, + "error": str(e), + "n_samples": 0, + } + + def _get_sequence_length(self, file_metadata: dict[str, Any]) -> int: + """Get sequence length from metadata.""" + return file_metadata.get("n_samples", 0) + + def _open_file(self, file_path: str) -> Any: + """Open joblib file with memory mapping.""" + try: + from joblib import load + except ImportError: + raise ImportError("joblib is required for JoblibDataset. " + "Install with: pip install joblib") + + return load(file_path, mmap_mode="r") + + def _close_file(self, file_handle: Any) -> None: + """Close joblib file handle.""" + del file_handle # Joblib handles cleanup automatically + + def _extract_tensor_from_array(self, array, start_idx: int, end_idx: int) \ + -> torch.Tensor: + """Extract a tensor from an array with flexible shape handling. + + Parameters + ---------- + array : numpy.ndarray + Input array to extract from. + start_idx : int + Start index for extraction. + end_idx : int + End index for extraction. + + Returns + ------- + torch.Tensor + Extracted tensor. + """ + # Handle different array shapes flexibly + if len(array.shape) >= 3: + # Assume (channels, time, features) or similar + sub_array = array[:, start_idx:end_idx, :] + elif len(array.shape) == 2: + # Assume (features, time) or (time, features) + # Check which dimension is longer to determine time axis + if array.shape[0] > array.shape[1]: + # Assume (time, features) + sub_array = array[start_idx:end_idx, :] + else: + # Assume (features, time) + sub_array = array[:, start_idx:end_idx] + else: + # 1D array: (time,) + sub_array = array[start_idx:end_idx] + + return torch.from_numpy(np.array(sub_array)).float() + + def _extract_subsequence(self, file_idx: int, + start_idx: int, end_idx: int) \ + -> tuple[ + Union[torch.Tensor, dict[str, torch.Tensor]], + Union[torch.Tensor, dict[str, torch.Tensor]], + ]: + """Extract subsequence from joblib file.""" + file_handle = self.get_file_handle(file_idx) + + # Get the keys from metadata (they might have been auto-detected) + metadata = self.get_file_metadata(file_idx) + + # Extract input data + if self.is_multi_input: + input_data = {} + for key in self.input_key: + if key in file_handle: + input_data[key] = self._extract_tensor_from_array( + file_handle[key], start_idx, end_idx + ) + else: + raise ValueError(f"Input key '{key}' not found in file") + else: + input_key = metadata.get("inferred_input_key") or self.input_key + if input_key and input_key in file_handle: + input_data = self._extract_tensor_from_array( + file_handle[input_key], start_idx, end_idx + ) + else: + raise ValueError(f"Input key '{input_key}' not found in file") + + # Extract target data + if self.is_autoencoder_mode: + # Autoencoder mode: target = input + if self.is_multi_input: + target_data = {key: tensor.clone() + for key, tensor in input_data.items()} + else: + target_data = input_data.clone() + else: + # Supervised mode: use separate target + if self.is_multi_target: + target_data = {} + for key in self.target_key: + if key in file_handle: + target_data[key] = self._extract_tensor_from_array( + file_handle[key], start_idx, end_idx + ) + else: + raise ValueError( + f"Target key '{key}' not found in file") + else: + target_key = (metadata.get("inferred_target_key") + or self.target_key) + if target_key and target_key in file_handle: + target_data = self._extract_tensor_from_array( + file_handle[target_key], start_idx, end_idx + ) + else: + # Fallback to input if no target found + if self.is_multi_input: + target_data = {key: tensor.clone() + for key, tensor in input_data.items()} + else: + target_data = input_data.clone() + + # Apply target slice if specified (only for single tensor targets) + if self.target_slice is not None and not self.is_multi_target: + target_data = target_data[self.target_slice] + + return input_data, target_data + + def get_sample_shape(self, file_idx: int = 0) -> tuple[Any, Any]: + """Get sample input and target shapes without initializing workers. + + This method temporarily opens a file to inspect data shapes, then + closes it. Useful for model configuration before training. + + Parameters + ---------- + file_idx : int, optional + Index of the file to sample from, by default 0. + + Returns + ------- + tuple[Any, Any] + Tuple of (input_shape, target_shape). For multi-key scenarios, + returns dict of shapes. + """ + if file_idx >= len(self.file_paths): + raise IndexError(f"File index {file_idx} out of range") + + # Temporarily open the file + file_handle = self._open_file(self.file_paths[file_idx]) + + try: + # Get a small subsequence to determine shapes + start_idx = 0 + end_idx = min(self.subseq_len, 10) if self.subseq_len > 0 else 10 + + # Temporarily store the opened file for _extract_subsequence + original_opened_files = self._opened_files + original_initialized = self._is_initialized + + self._opened_files = [None] * len(self.file_paths) + self._opened_files[file_idx] = file_handle + self._is_initialized = True + + # Extract a sample to get shapes + sample_input, sample_target = self._extract_subsequence( + file_idx, start_idx, end_idx + ) + + # Extract shapes + if isinstance(sample_input, dict): + input_shape = { + key: tensor.shape for key, tensor in sample_input.items() + } + else: + input_shape = sample_input.shape + + if isinstance(sample_target, dict): + target_shape = { + key: tensor.shape for key, tensor in sample_target.items() + } + else: + target_shape = sample_target.shape + + return input_shape, target_shape + + finally: + # Always close the file + self._opened_files = original_opened_files + self._is_initialized = original_initialized + self._close_file(file_handle) + + def peek_sample(self, file_idx: int = 0, subseq_idx: int = 0) \ + -> tuple[ + Union[torch.Tensor, dict[str, torch.Tensor]], + Union[torch.Tensor, dict[str, torch.Tensor]], + ]: + """Peek at a sample without worker initialization. + + This method temporarily opens a file, extracts one sample, then closes + it. Useful for data inspection and debugging. + + Parameters + ---------- + file_idx : int, optional + Index of the file to sample from, by default 0. + subseq_idx : int, optional + Index of the subsequence within the file, by default 0. + + Returns + ------- + tuple[Union[torch.Tensor, dict[str, torch.Tensor]], + Union[torch.Tensor, dict[str, torch.Tensor]]] + Sample input and target data. + """ + if file_idx >= len(self.file_paths): + raise IndexError(f"File index {file_idx} out of range") + + # Get file metadata to determine valid subsequence range + file_metadata = self.get_file_metadata(file_idx) + seq_len = self._get_sequence_length(file_metadata) + + # Calculate valid subsequence bounds + if self.subseq_len == -1: + start_idx = 0 + end_idx = seq_len + else: + max_start = max(0, seq_len - self.subseq_len) + start_idx = min(subseq_idx * self.subseq_len, max_start) + end_idx = min(start_idx + self.subseq_len, seq_len) + + # Temporarily open the file + file_handle = self._open_file(self.file_paths[file_idx]) + + try: + # Temporarily store the opened file for _extract_subsequence + original_opened_files = self._opened_files + original_initialized = self._is_initialized + + self._opened_files = [None] * len(self.file_paths) + self._opened_files[file_idx] = file_handle + self._is_initialized = True + + # Extract the sample + sample_input, sample_target = self._extract_subsequence( + file_idx, start_idx, end_idx + ) + + return sample_input, sample_target + + finally: + # Restore original state + self._opened_files = original_opened_files + self._is_initialized = original_initialized + + # Close the temporary file handle + self._close_file(file_handle) + + +class HDF5Dataset(MultiFileDataset): + """Dataset for HDF5 files with configurable keys. + + Supports flexible key configuration for different file formats. + Can work with input-only data (autoencoders) or input-target pairs. + """ + + def __init__( + self, + file_paths: Union[str, list[str], Path], + subseq_len: int, + input_key: Union[str, list[str]] = "input", + target_key: Optional[Union[str, list[str]]] = None, + target_slice: Optional[tuple] = None, + auto_detect_keys: bool = False, + **kwargs) -> None: + """Initialize HDF5 dataset. + + Parameters + ---------- + file_paths : Union[str, list[str], Path] + Path(s) to HDF5 files. + subseq_len : int + Length of subsequences to extract. + input_key : Union[str, list[str]], optional + Key(s) for input data in HDF5 files. If list, returns dictionary of + inputs, by default 'input'. + target_key : Optional[Union[str, list[str]]], optional + Key(s) for target data in HDF5 files. If None, uses input as target + (autoencoder mode). If list, returns dictionary of targets, + by default None. + target_slice : Optional[tuple], optional + Slice to apply to target tensor, by default None. + auto_detect_keys : bool, optional + Whether to automatically detect keys from first valid file, + by default False. + **kwargs + Additional arguments passed to MultiFileDataset. + """ + self.input_key = input_key + self.target_key = target_key + self.target_slice = target_slice + self.auto_detect_keys = auto_detect_keys + self.is_autoencoder_mode = target_key is None + + # Handle multiple keys + self.is_multi_input = isinstance(input_key, list) + self.is_multi_target = isinstance(target_key, list) + + # Store original keys for auto-detection fallback + self._original_input_key = input_key + self._original_target_key = target_key + + # Track if keys have been detected + self._keys_detected = False + + super().__init__(file_paths, subseq_len, **kwargs) + + def _detect_keys(self, file_handle, file_path: str) -> None: + """Auto-detect keys from HDF5 file contents.""" + available_keys = list(file_handle.keys()) + + print(f"Auto-detecting keys from {file_path}") + print(f"Available keys: {available_keys}") + + # Skip auto-detection if keys are already provided as lists + if self.is_multi_input or self.is_multi_target: + print("Skipping auto-detection since list of keys provided") + return + + # Try to find input key + if not self.is_multi_input: + input_candidates = ["input", "data", "x", "features"] + for candidate in input_candidates: + if candidate in available_keys: + self.input_key = candidate + print(f"Detected input_key: {self.input_key}") + break + + # Try to find target key + # (only if not in autoencoder mode and not multi-target) + if not self.is_autoencoder_mode and not self.is_multi_target: + target_candidates = ["target", "label", "y", "output"] + for candidate in target_candidates: + if candidate in available_keys: + self.target_key = candidate + print(f"Detected target_key: {self.target_key}") + break + + def _inspect_file(self, file_path: str) -> dict[str, Any]: + """Inspect HDF5 file to extract metadata.""" + try: + import h5py + except ImportError: + raise ImportError( + "h5py is required for HDF5Dataset. Install with: pip install h5py" + ) + + try: + with (h5py.File(file_path, "r") as f): + # Auto-detect keys from first file if requested + if self.auto_detect_keys and not self._keys_detected: + self._detect_keys(f, file_path) + self._keys_detected = True + + # Validate required keys exist + if self.is_multi_input: + missing_input_keys = [ + key for key in self.input_key if key not in f] + if missing_input_keys: + available_keys = list(f.keys()) + return { + "path": file_path, + "valid": False, + "error": + f"Missing input keys {missing_input_keys}. " + f"Available keys: {available_keys}", + "n_samples": 0, + "available_keys": available_keys, + } + elif self.input_key not in f: + available_keys = list(f.keys()) + return { + "path": file_path, + "valid": False, + "error": + f"Missing input key '{self.input_key}'. " + f"Available keys: {available_keys}", + "n_samples": 0, + "available_keys": available_keys, + } + + # Check target key if not in autoencoder mode + if not self.is_autoencoder_mode: + if self.is_multi_target: + missing_target_keys = [ + key for key in self.target_key if key not in f + ] + if missing_target_keys: + available_keys = list(f.keys()) + return { + "path": file_path, + "valid": False, + "error": + f"Missing target keys " + f"{missing_target_keys}. " + f"Available keys: {available_keys}", + "n_samples": 0, + "available_keys": available_keys, + } + elif self.target_key not in f: + available_keys = list(f.keys()) + return { + "path": file_path, + "valid": False, + "error": + f"Missing target key '{self.target_key}'. " + f"Available keys: {available_keys}", + "n_samples": 0, + "available_keys": available_keys, + } + + # Get sequence length from input shape + # (assume time dimension is axis 1) + if self.is_multi_input: + # Use first input key to determine sequence length + first_key = self.input_key[0] + input_shape = f[first_key].shape + else: + input_shape = f[self.input_key].shape + n_samples = \ + input_shape[1] if len(input_shape) >= 2 else input_shape[0] + + # Get target shape if available + target_shape = None + if not self.is_autoencoder_mode: + if self.is_multi_target: + target_shape = { + key: f[key].shape + for key in self.target_key if key in f + } + elif self.target_key in f: + target_shape = f[self.target_key].shape + + metadata = { + "path": file_path, + "valid": True, + "n_samples": n_samples, + "input_shape": input_shape, + "target_shape": target_shape, + "available_keys": list(f.keys()), + "is_autoencoder_mode": self.is_autoencoder_mode, + } + + return metadata + except Exception as e: + return {"path": file_path, "valid": False, + "error": str(e), "n_samples": 0} + + def _get_sequence_length(self, file_metadata: dict[str, Any]) -> int: + """Get sequence length from metadata.""" + return file_metadata.get("n_samples", 0) + + def _open_file(self, file_path: str) -> Any: + """Open HDF5 file.""" + try: + import h5py + except ImportError: + raise ImportError("h5py is required for HDF5Dataset. " + "Install with: pip install h5py") + + return h5py.File(file_path, "r") + + def _close_file(self, file_handle: Any) -> None: + """Close HDF5 file handle.""" + file_handle.close() + + def _extract_subsequence( + self, file_idx: int, start_idx: int, end_idx: int) \ + -> tuple[ + Union[torch.Tensor, dict[str, torch.Tensor]], + Union[torch.Tensor, dict[str, torch.Tensor]], + ]: + """Extract subsequence from HDF5 file.""" + file_handle = self.get_file_handle(file_idx) + + # Extract input data + if self.is_multi_input: + input_data = {} + for key in self.input_key: + input_arr = file_handle[key][:, start_idx:end_idx, :] + input_data[key] = torch.from_numpy(input_arr).float() + else: + input_arr = file_handle[self.input_key][:, start_idx:end_idx, :] + input_data = torch.from_numpy(input_arr).float() + + # Extract target data + if self.is_autoencoder_mode: + # Autoencoder mode: target = input + if self.is_multi_input: + target_data = {key: tensor.clone() + for key, tensor in input_data.items()} + else: + target_data = input_data.clone() + else: + # Supervised mode: use separate target + if self.is_multi_target: + target_data = {} + for key in self.target_key: + target_arr = file_handle[key][:, start_idx:end_idx, :] + target_data[key] = torch.from_numpy(target_arr).float() + else: + target_arr = \ + file_handle[self.target_key][:, start_idx:end_idx, :] + target_data = torch.from_numpy(target_arr).float() + + # Apply target slice if specified (only for single tensor targets) + if self.target_slice is not None and not self.is_multi_target: + target_data = target_data[self.target_slice] + + return input_data, target_data + + +class NumpyDataset(MultiFileDataset): + """Dataset for NumPy .npz files with configurable keys. + + Supports flexible key configuration for different file formats. + Can work with input-only data (autoencoders) or input-target pairs. + """ + + def __init__( + self, + file_paths: Union[str, list[str], Path], + subseq_len: int, + input_key: Union[str, list[str]] = "input", + target_key: Optional[Union[str, list[str]]] = None, + target_slice: Optional[tuple] = None, + auto_detect_keys: bool = False, + **kwargs, + ) -> None: + """Initialize NumPy dataset. + + Parameters + ---------- + file_paths : Union[str, list[str], Path] + Path(s) to .npz files. + subseq_len : int + Length of subsequences to extract. + input_key : Union[str, list[str]], optional + Key(s) for input data in .npz files. If list, + returns dictionary of inputs, by default 'input'. + target_key : Optional[Union[str, list[str]]], optional + Key(s) for target data in .npz files. If None, uses input as target + (autoencoder mode). If list, returns dictionary of targets, + by default None. + target_slice : Optional[tuple], optional + Slice to apply to target tensor, by default None. + auto_detect_keys : bool, optional + Whether to automatically detect keys from first valid file, + by default False. + **kwargs + Additional arguments passed to MultiFileDataset. + """ + self.input_key = input_key + self.target_key = target_key + self.target_slice = target_slice + self.auto_detect_keys = auto_detect_keys + self.is_autoencoder_mode = target_key is None + + # Handle multiple keys + self.is_multi_input = isinstance(input_key, list) + self.is_multi_target = isinstance(target_key, list) + + # Store original keys for auto-detection fallback + self._original_input_key = input_key + self._original_target_key = target_key + + # Track if keys have been detected + self._keys_detected = False + + super().__init__(file_paths, subseq_len, **kwargs) + + def _detect_keys(self, data_dict: dict[str, Any], file_path: str) -> None: + """Auto-detect keys from NumPy file contents.""" + available_keys = list(data_dict.keys()) + + print(f"Auto-detecting keys from {file_path}") + print(f"Available keys: {available_keys}") + + # Skip auto-detection if keys are already provided as lists + if self.is_multi_input or self.is_multi_target: + print("Skipping auto-detection since list of keys provided") + return + + # Try to find input key + if not self.is_multi_input: + input_candidates = ["input", "data", "x", "features"] + for candidate in input_candidates: + if candidate in available_keys: + self.input_key = candidate + print(f"Detected input_key: {self.input_key}") + break + + # Try to find target key + # (only if not in autoencoder mode and not multi-target) + if not self.is_autoencoder_mode and not self.is_multi_target: + target_candidates = ["target", "label", "y", "output"] + for candidate in target_candidates: + if candidate in available_keys: + self.target_key = candidate + print(f"Detected target_key: {self.target_key}") + break + + def _inspect_file(self, file_path: str) -> dict[str, Any]: + """Inspect NumPy file to extract metadata.""" + try: + with np.load(file_path, mmap_mode="r") as data: + # Auto-detect keys from first file if requested + if self.auto_detect_keys and not self._keys_detected: + self._detect_keys(data, file_path) + self._keys_detected = True + + # Validate required keys exist + if self.is_multi_input: + missing_input_keys = [ + key for key in self.input_key if key not in data] + if missing_input_keys: + available_keys = list(data.keys()) + return { + "path": file_path, + "valid": False, + "error": + f"Missing input keys {missing_input_keys}. " + f"Available keys: {available_keys}", + "n_samples": 0, + "available_keys": available_keys, + } + elif self.input_key not in data: + available_keys = list(data.keys()) + return { + "path": file_path, + "valid": False, + "error": + f"Missing input key '{self.input_key}'. " + f"Available keys: {available_keys}", + "n_samples": 0, + "available_keys": available_keys, + } + + # Check target key if not in autoencoder mode + if not self.is_autoencoder_mode: + if self.is_multi_target: + missing_target_keys = [ + key for key in self.target_key if key not in data + ] + if missing_target_keys: + available_keys = list(data.keys()) + return { + "path": file_path, + "valid": False, + "error": + f"Missing target keys " + f"{missing_target_keys}. " + f"Available keys: {available_keys}", + "n_samples": 0, + "available_keys": available_keys, + } + elif self.target_key not in data: + available_keys = list(data.keys()) + return { + "path": file_path, + "valid": False, + "error": + f"Missing target key '{self.target_key}'. " + f"Available keys: {available_keys}", + "n_samples": 0, + "available_keys": available_keys, + } + + # Get sequence length from input shape + # (assume time dimension is axis 1) + if self.is_multi_input: + # Use first input key to determine sequence length + first_key = self.input_key[0] + input_arr = data[first_key] + else: + input_arr = data[self.input_key] + input_shape = input_arr.shape + n_samples = ( + input_shape[1] + if len(input_shape) >= 2 else input_shape[0]) + + # Get target shape if available + target_shape = None + if not self.is_autoencoder_mode: + if self.is_multi_target: + target_shape = { + key: data[key].shape + for key in self.target_key if key in data + } + elif self.target_key in data: + target_shape = data[self.target_key].shape + + metadata = { + "path": file_path, + "valid": True, + "n_samples": n_samples, + "input_shape": input_shape, + "target_shape": target_shape, + "available_keys": list(data.keys()), + "is_autoencoder_mode": self.is_autoencoder_mode, + } + + return metadata + except Exception as e: + return {"path": file_path, "valid": False, + "error": str(e), "n_samples": 0} + + def _get_sequence_length(self, file_metadata: dict[str, Any]) -> int: + """Get sequence length from metadata.""" + return file_metadata.get("n_samples", 0) + + def _open_file(self, file_path: str) -> Any: + """Open NumPy file with memory mapping.""" + return np.load(file_path, mmap_mode="r") + + def _close_file(self, file_handle: Any) -> None: + """Close NumPy file handle.""" + file_handle.close() + + def _extract_subsequence( + self, file_idx: int, start_idx: int, end_idx: int) \ + -> tuple[ + Union[torch.Tensor, dict[str, torch.Tensor]], + Union[torch.Tensor, dict[str, torch.Tensor]], + ]: + """Extract subsequence from NumPy file.""" + file_handle = self.get_file_handle(file_idx) + + # Extract input data + if self.is_multi_input: + input_data = {} + for key in self.input_key: + input_arr = file_handle[key][:, start_idx:end_idx, :] + input_data[key] = torch.from_numpy(input_arr).float() + else: + input_arr = file_handle[self.input_key][:, start_idx:end_idx, :] + input_data = torch.from_numpy(input_arr).float() + + # Extract target data + if self.is_autoencoder_mode: + # Autoencoder mode: target = input + if self.is_multi_input: + target_data = {key: tensor.clone() + for key, tensor in input_data.items()} + else: + target_data = input_data.clone() + else: + # Supervised mode: use separate target + if self.is_multi_target: + target_data = {} + for key in self.target_key: + target_arr = file_handle[key][:, start_idx:end_idx, :] + target_data[key] = torch.from_numpy(target_arr).float() + else: + target_arr = \ + file_handle[self.target_key][:, start_idx:end_idx, :] + target_data = torch.from_numpy(target_arr).float() + + # Apply target slice if specified (only for single tensor targets) + if self.target_slice is not None and not self.is_multi_target: + target_data = target_data[self.target_slice] + + return input_data, target_data + + +# Helper function for creating worker init function +def worker_init_fn(worker_id: int) -> None: + """Worker initialization function for LazyFileDataset subclasses.""" + from torch.utils.data import get_worker_info + + worker_info = get_worker_info() + if worker_info is not None: + worker_dataset = worker_info.dataset + if hasattr(worker_dataset, "worker_init"): + worker_dataset.worker_init() + else: + warnings.warn( + f"Dataset in worker {worker_id} does not have worker_init " + f"method. Got {type(worker_dataset)}.") diff --git a/src/faith/train/data/loaders/__init__.py b/src/faith/train/data/loaders/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/faith/train/data/loaders/factory.py b/src/faith/train/data/loaders/factory.py new file mode 100644 index 0000000..6be5411 --- /dev/null +++ b/src/faith/train/data/loaders/factory.py @@ -0,0 +1,265 @@ +"""DataLoader factory and worker utilities for lazy file datasets.""" + +import warnings +from torch.utils.data import DataLoader, get_worker_info + + +def worker_init_fn(worker_id: int) -> None: + """Initialize dataset in worker process. + + Parameters + ---------- + worker_id : int + ID of the current worker process. + """ + # Get the dataset from worker info + worker_info = get_worker_info() + if worker_info is not None: + worker_dataset = worker_info.dataset + + # Check if it's a lazy file dataset that needs initialization + if hasattr(worker_dataset, 'worker_init'): + try: + worker_dataset.worker_init() + except Exception as e: + warnings.warn(f"Failed to initialize dataset in worker " + f"{worker_id}: {e}") + else: + # Not a lazy dataset, no initialization needed + pass + else: + # No worker info available (single-threaded mode) + pass + + +def create_dataloader( + dataset, + batch_size: int = 32, + shuffle: bool = True, + num_workers: int = 4, + pin_memory: bool = True, + drop_last: bool = False, + **kwargs +): + """ + Create a DataLoader with automatic worker initialization for lazy datasets. + + This function automatically handles worker initialization for lazy file + datasets while providing sensible defaults for other DataLoader parameters. + + Parameters + ---------- + dataset : Dataset + PyTorch dataset to load from. + batch_size : int, optional + Number of samples per batch, by default 32. + shuffle : bool, optional + Whether to shuffle data, by default True. + num_workers : int, optional + Number of worker processes, by default 4. + pin_memory : bool, optional + Whether to pin memory for GPU transfer, by default True. + drop_last : bool, optional + Whether to drop last incomplete batch, by default False. + **kwargs + Additional arguments passed to DataLoader. + + Returns + ------- + DataLoader + Configured PyTorch DataLoader. + + Examples + -------- + >>> from src import JoblibDataset + >>> dataset = JoblibDataset(['file1.joblib'], subseq_len=128) + >>> loader = create_dataloader(dataset, batch_size=16, num_workers=2) + >>> + >>> # Use in training + >>> for batch in loader: + ... inputs, targets = batch + ... # Training code here + """ + # Determine if we need worker initialization + worker_init_fn = None + if hasattr(dataset, 'worker_init'): + worker_init_fn = create_worker_init_fn(dataset) + + # Auto-adjust num_workers based on dataset type + if hasattr(dataset, 'worker_init') and num_workers == 0: + warnings.warn( + "Using num_workers=0 with lazy file dataset. " + "Consider using num_workers>=1 for better performance." + ) + + return DataLoader( + dataset=dataset, + batch_size=batch_size, + shuffle=shuffle, + num_workers=num_workers, + pin_memory=pin_memory, + drop_last=drop_last, + worker_init_fn=worker_init_fn, + **kwargs + ) + + +def create_train_val_loaders( + train_dataset, + val_dataset, + batch_size: int = 32, + num_workers: int = 4, + pin_memory: bool = True, + **kwargs +): + """Create train and validation DataLoaders with consistent configuration. + + Parameters + ---------- + train_dataset : Dataset + Training dataset. + val_dataset : Dataset + Validation dataset. + batch_size : int, optional + Batch size for both loaders, by default 32. + num_workers : int, optional + Number of workers for both loaders, by default 4. + pin_memory : bool, optional + Whether to pin memory, by default True. + **kwargs + Additional arguments passed to both DataLoaders. + + Returns + ------- + tuple[DataLoader, DataLoader] + Train and validation DataLoaders. + + Examples + -------- + >>> train_ds = JoblibDataset(train_files, subseq_len=128) + >>> val_ds = JoblibDataset(val_files, subseq_len=128) + >>> train_loader, val_loader = create_train_val_loaders( + ... train_ds, val_ds, batch_size=64 + ... ) + """ + train_loader = create_dataloader( + train_dataset, + batch_size=batch_size, + shuffle=True, # Always shuffle training + num_workers=num_workers, + pin_memory=pin_memory, + **kwargs + ) + + val_loader = create_dataloader( + val_dataset, + batch_size=batch_size, + shuffle=False, # Never shuffle validation + num_workers=num_workers, + pin_memory=pin_memory, + drop_last=False, # Don't drop validation samples + **kwargs + ) + + return train_loader, val_loader + + +def create_dataloaders_from_config(config: dict): + """Create DataLoaders from a configuration dictionary. + + This function provides a high-level interface for creating datasets and + DataLoaders from configuration, useful for experiments and hyperparameter + tuning. + + Parameters + ---------- + config : dict + Configuration dictionary containing dataset and loader parameters. + Expected keys: + - 'dataset_type': str ('joblib', 'hdf5', 'numpy') + - 'file_paths': str or list + - 'subseq_len': int + - 'batch_size': int (optional) + - 'num_workers': int (optional) + - Other dataset-specific parameters + + Returns + ------- + DataLoader or tuple[DataLoader, DataLoader] + Single DataLoader or tuple of (train_loader, val_loader) if split is + requested. + + Examples + -------- + >>> config = { + ... 'dataset_type': 'joblib', + ... 'file_paths': '/data/*.joblib', + ... 'subseq_len': 128, + ... 'batch_size': 32, + ... 'split_by_files': True, + ... 'train_ratio': 0.8 + ... } + >>> train_loader, val_loader = create_dataloaders_from_config(config) + """ + # Import here to avoid circular imports + from ..datasets.file_based import JoblibDataset, HDF5Dataset, NumpyDataset + + # Dataset type mapping + dataset_classes = { + 'joblib': JoblibDataset, + 'hdf5': HDF5Dataset, + 'numpy': NumpyDataset + } + + # Extract configuration + dataset_type = config['dataset_type'] + file_paths = config['file_paths'] + subseq_len = config['subseq_len'] + + # DataLoader configuration + batch_size = config.get('batch_size', 32) + num_workers = config.get('num_workers', 4) + + # Dataset-specific configuration + dataset_config = {k: v for k, v in config.items() + if k not in ['dataset_type', 'batch_size', 'num_workers', + 'split_by_files', 'train_ratio', + 'val_ratio', 'test_ratio']} + + # Create dataset + if dataset_type not in dataset_classes: + raise ValueError(f"Unknown dataset type: {dataset_type}") + + dataset_class = dataset_classes[dataset_type] + dataset = dataset_class(file_paths, subseq_len, **dataset_config) + + # Handle splitting + if config.get('split_by_files', False): + train_ratio = config.get('train_ratio', 0.8) + val_ratio = config.get('val_ratio', 0.1) + test_ratio = config.get('test_ratio', 0.1) + + train_ds, val_ds, test_ds = dataset.split_by_files( + train_ratio=train_ratio, + val_ratio=val_ratio, + test_ratio=test_ratio, + random_seed=config.get('random_seed', 42) + ) + + train_loader, val_loader = create_train_val_loaders( + train_ds, val_ds, batch_size=batch_size, num_workers=num_workers + ) + + if test_ratio > 0: + test_loader = create_dataloader( + test_ds, batch_size=batch_size, shuffle=False, + num_workers=num_workers + ) + return train_loader, val_loader, test_loader + else: + return train_loader, val_loader + else: + # Single dataset + return create_dataloader( + dataset, batch_size=batch_size, num_workers=num_workers + ) diff --git a/src/faith/train/models/__init__.py b/src/faith/train/models/__init__.py index f1bffd0..0a814ee 100644 --- a/src/faith/train/models/__init__.py +++ b/src/faith/train/models/__init__.py @@ -13,8 +13,8 @@ Examples -------- Basic usage: ->>> from faith.train.models import BlockBasedAutoencoder, \ -create_block_autoencoder +>>> from faith.train.models import ( +... BlockBasedAutoencoder, create_block_autoencoder) >>> autoencoder = create_block_autoencoder('default', input_channels=80) >>> x = torch.randn(1, 80, 100, 128) >>> reconstructed, latent = autoencoder(x) @@ -44,6 +44,9 @@ get_preset_config, save_model_config, load_model_config, + list_preset_configs, + create_model_from_config_file, + create_autoencoder_from_config, ModelConfig, PRESET_CONFIGS ) @@ -53,14 +56,9 @@ create_mae_model, get_model_info, get_memory_estimate, - validate_input_shape + validate_input_shape, ) -# Package metadata -__version__ = "0.1.0" -__author__ = "Peter Steiner" -__email__ = "peter.steiner@princeton.edu" - # Public API - only these should be imported by users __all__ = [ # Core models @@ -84,9 +82,4 @@ "get_model_info", "get_memory_estimate", "validate_input_shape", - - # Metadata - "__version__", - "__author__", - "__email__", ] diff --git a/src/faith/train/models/autoencoder.py b/src/faith/train/models/autoencoder.py index ad8cea8..810e24f 100644 --- a/src/faith/train/models/autoencoder.py +++ b/src/faith/train/models/autoencoder.py @@ -66,8 +66,8 @@ class BlockBasedAutoencoder(nn.Module): >>> # Custom configuration >>> configs = [ - ... {'out_channels': 64, 'pool_size': (1, 2)}, - ... {'out_channels': 128, 'pool_size': (1, 4)}, + ... {'out_channels': 64, 'pool_size': (1, 2)}, + ... {'out_channels': 128, 'pool_size': (1, 4)}, ... ] >>> autoencoder = BlockBasedAutoencoder( ... input_channels=80, @@ -155,14 +155,19 @@ def __init__( init_method=init_method ) - def _get_default_block_configs(self) -> list[dict[str, Any]]: + def _get_default_block_configs( + self + ) -> list[dict[str, Any]]: """Get default block configuration.""" return [ {'out_channels': 32, 'pool_size': (1, 2)}, {'out_channels': 16, 'pool_size': (1, 2)}, ] - def encode(self, x: torch.Tensor) -> torch.Tensor: + def encode( + self, + x: torch.Tensor + ) -> torch.Tensor: """Encode input to latent representation. Parameters @@ -178,7 +183,10 @@ def encode(self, x: torch.Tensor) -> torch.Tensor: """ return self.encoder(x) - def decode(self, z: torch.Tensor) -> torch.Tensor: + def decode( + self, + z: torch.Tensor + ) -> torch.Tensor: """ Decode latent representation to reconstructed output. @@ -196,7 +204,10 @@ def decode(self, z: torch.Tensor) -> torch.Tensor: """ return self.decoder(z) - def forward(self, inputs: torch.Tensor) -> torch.Tensor: + def forward( + self, + inputs: torch.Tensor + ) -> torch.Tensor: """Forward pass through the complete autoencoder. Parameters @@ -213,8 +224,10 @@ def forward(self, inputs: torch.Tensor) -> torch.Tensor: reconstructed = self.decode(latent) return reconstructed - def latent_with_reconstruction(self, inputs: torch.Tensor) \ - -> tuple[torch.Tensor, torch.Tensor]: + def latent_with_reconstruction( + self, + inputs: torch.Tensor + ) -> tuple[torch.Tensor, torch.Tensor]: """Forward pass through the complete autoencoder. Parameters @@ -257,7 +270,10 @@ def get_config(self) -> dict[str, Any]: } @classmethod - def from_config(cls, config: dict[str, Any]) -> 'BlockBasedAutoencoder': + def from_config( + cls, + config: dict[str, Any] + ) -> 'BlockBasedAutoencoder': """Create BlockBasedAutoencoder instance from configuration dictionary. Parameters @@ -272,8 +288,10 @@ def from_config(cls, config: dict[str, Any]) -> 'BlockBasedAutoencoder': """ return cls(**config) - def get_output_shape(self, input_shape: tuple[int, ...]) -> tuple[ - int, ...]: + def get_output_shape( + self, + input_shape: tuple[int, ...] + ) -> tuple[int, ...]: """Calculate output shape given input shape. Parameters @@ -291,8 +309,10 @@ def get_output_shape(self, input_shape: tuple[int, ...]) -> tuple[ output_shape = self.decoder.get_output_shape(latent_shape) return output_shape - def get_latent_shape(self, input_shape: tuple[int, ...]) -> tuple[ - int, ...]: + def get_latent_shape( + self, + input_shape: tuple[int, ...] + ) -> tuple[int, ...]: """Calculate latent representation shape given input shape. Parameters @@ -307,8 +327,10 @@ def get_latent_shape(self, input_shape: tuple[int, ...]) -> tuple[ """ return self.encoder.get_output_shape(input_shape) - def get_feature_maps(self, inputs: torch.Tensor) -> dict[ - str, list[torch.Tensor]]: + def get_feature_maps( + self, + inputs: torch.Tensor + ) -> dict[str, list[torch.Tensor]]: """Get intermediate feature maps from encoder and decoder. Useful for visualization and debugging. @@ -374,79 +396,11 @@ def unfreeze_all(self) -> None: def __repr__(self) -> str: """String representation of the BlockBasedAutoencoder.""" - return (f"BlockBasedAutoencoder(" - f"input_channels={self.input_channels}, " - f"encoder_blocks={len(self.encoder.blocks)}, " - f"decoder_blocks={len(self.decoder.blocks)}, " - f"bottleneck_channels={self.encoder.bottleneck_channels}, " - f"parameters={self.parameter_count:,})") - - -# Example usage and testing -if __name__ == "__main__": - # Test basic functionality - print("Testing BlockBasedAutoencoder...") - - # Create autoencoder with default config - autoencoder = BlockBasedAutoencoder(input_channels=80) - - # Test forward pass - x = torch.randn(2, 80, 100, 128) - reconstructed = autoencoder(x) - latent = autoencoder.encode(x) - - print(f"Input shape: {x.shape}") - print(f"Latent shape: {latent.shape}") - print(f"Reconstructed shape: {reconstructed.shape}") - print(f"Autoencoder: {autoencoder}") - - # Test individual methods - latent_only = autoencoder.get_latent_representation(x) - reconstructed_only = autoencoder.reconstruct(x) - - print(f"Latent only shape: {latent_only.shape}") - print(f"Reconstructed only shape: {reconstructed_only.shape}") - - # Test configuration serialization - config = autoencoder.get_config() - print(f"Config keys: {list(config.keys())}") - - new_autoencoder = BlockBasedAutoencoder.from_config(config) - print(f"Recreated autoencoder: {new_autoencoder}") - - # Test shape calculation - output_shape = autoencoder.get_output_shape((1, 80, 100, 128)) - latent_shape = autoencoder.get_latent_shape((1, 80, 100, 128)) - print(f"Calculated output shape: {output_shape}") - print(f"Calculated latent shape: {latent_shape}") - - # Test parameter counting - print(f"Total parameters: {autoencoder.parameter_count:,}") - print(f"Encoder parameters: {autoencoder.encoder_parameter_count:,}") - print(f"Decoder parameters: {autoencoder.decoder_parameter_count:,}") - - # Test feature map extraction - feature_maps = autoencoder.get_feature_maps(x) - print(f"Encoder feature maps: {len(feature_maps['encoder'])}") - print(f"Decoder feature maps: {len(feature_maps['decoder'])}") - - # Test custom configuration - custom_configs = [ - {'out_channels': 64, 'pool_size': (1, 2), 'dropout': 0.2}, - {'out_channels': 128, 'pool_size': (1, 4), 'dropout': 0.3}, - ] - - custom_autoencoder = BlockBasedAutoencoder( - input_channels=80, - block_configs=custom_configs, - activation='gelu' - ) - - x_custom = torch.randn(1, 80, 100, 128) - reconstructed_custom, latent_custom = custom_autoencoder(x_custom) - - print(f"\nCustom autoencoder:") - print(f"Input shape: {x_custom.shape}") - print(f"Latent shape: {latent_custom.shape}") - print(f"Reconstructed shape: {reconstructed_custom.shape}") - print(f"Custom autoencoder: {custom_autoencoder}") + return ( + f"BlockBasedAutoencoder(" + f"input_channels={self.input_channels}, " + f"encoder_blocks={len(self.encoder.blocks)}, " + f"decoder_blocks={len(self.decoder.blocks)}, " + f"bottleneck_channels={self.encoder.bottleneck_channels}, " + f"parameters={self.parameter_count:,})" + ) diff --git a/src/faith/train/models/configs.py b/src/faith/train/models/configs.py index 4e9adba..704051a 100644 --- a/src/faith/train/models/configs.py +++ b/src/faith/train/models/configs.py @@ -581,54 +581,3 @@ def create_model_from_config_file(filepath: Union[str, Path]) -> Union[ return create_mae_from_config(config) else: raise ValueError(f"Unknown model_type: {config.model_type}") - - -# Example usage and testing -if __name__ == "__main__": - # Test preset configurations - print("Available presets:", list_preset_configs()) - - # Test creating models from presets - for preset_name in ['default', 'light', 'mae_default']: - print(f"\nTesting {preset_name} preset:") - - try: - model = create_block_autoencoder(preset_name, input_channels=80) - print(f"Created model: {type(model).__name__}") - - if hasattr(model, 'parameter_count'): - print(f"Parameters: {model.parameter_count:,}") - - except Exception as e: - print(f"Error creating {preset_name}: {e}") - - # Test configuration serialization - print("\nTesting configuration serialization:") - - config = get_preset_config('default') - config = config.update(input_channels=80, hidden_dim=16) - - # Save and load - config.save('test_config.yaml') - loaded_config = ModelConfig.load('test_config.yaml') - - print(f"Original: {config.input_channels}, {config.hidden_dim}") - print( - f"Loaded: {loaded_config.input_channels}, {loaded_config.hidden_dim}") - - # Test model config saving - autoencoder = create_autoencoder_from_config(config) - save_model_config(autoencoder, 'model_config.yaml') - - # Load and recreate model - recreated_model = create_model_from_config_file('model_config.yaml') - print(f"Recreated model: {type(recreated_model).__name__}") - - # Cleanup - import os - - - os.remove('test_config.yaml') - os.remove('model_config.yaml') - - print("Configuration tests completed successfully!") diff --git a/src/faith/train/models/utils.py b/src/faith/train/models/utils.py index 7677232..4e88958 100644 --- a/src/faith/train/models/utils.py +++ b/src/faith/train/models/utils.py @@ -7,8 +7,8 @@ import torch from typing import Union, Optional, Any -from torch_training.models.autoencoder import BlockBasedAutoencoder -from torch_training.models.mae import MaskedAutoencoder, MASK_TYPES +from .autoencoder import BlockBasedAutoencoder +from .mae import MaskedAutoencoder, MASK_TYPES from . import create_block_autoencoder, PRESET_CONFIGS @@ -377,7 +377,7 @@ def analyze_model_architecture( output_shape = base_model.get_output_shape(input_shape) compression_ratio = (input_shape[2] * input_shape[3]) / ( latent_shape[2] * latent_shape[3]) - except Exception as e: + except Exception: latent_shape = None output_shape = None compression_ratio = None @@ -503,7 +503,7 @@ def print_model_summary( print(f"Mask Ratio: {analysis['mask_info']['mask_ratio']:.2f}") print(f"Patch Size: {analysis['mask_info']['patch_size']}") - print(f"\nArchitecture:") + print("\nArchitecture:") print(f" Input Channels: {analysis['architecture']['input_channels']}") print(f" Bottleneck Channels: " f"{analysis['architecture']['bottleneck_channels']}") @@ -516,7 +516,7 @@ def print_model_summary( print(f" Compression Ratio: " f"{analysis['shapes']['compression_ratio']:.1f}x") - print(f"\nShapes:") + print("\nShapes:") print(f" Input: {analysis['shapes']['input']}") print(f" Latent: {analysis['shapes']['latent']}") print(f" Output: {analysis['shapes']['output']}") @@ -542,19 +542,19 @@ def print_model_summary( # Test validation valid_shape = (32, 80, 100, 128) invalid_shape = (80, 100, 128) - print(f"\nShape validation:") + print("\nShape validation:") print(f" {valid_shape}: {validate_input_shape(valid_shape)}") print(f" {invalid_shape}: {validate_input_shape(invalid_shape)}") # Test memory estimation memory = get_memory_estimate(mae, (80, 100, 128), batch_size=32) - print(f"\nMemory estimate for MAE:") + print("\nMemory estimate for MAE:") print(f" Total: {memory['total_mb']:.1f} MB") print(f" Parameters: {memory['parameters_mb']:.1f} MB") print(f" Activations: {memory['activations_mb']:.1f} MB") # Test architecture analysis - print(f"\nModel summary:") + print("\nModel summary:") print_model_summary(mae, (1, 80, 100, 128)) # Test model comparison @@ -563,7 +563,7 @@ def print_model_summary( 'autoencoder': autoencoder } comparison = compare_models(models) - print(f"\nModel comparison:") + print("\nModel comparison:") for name, params in comparison['summary']['parameter_counts'].items(): memory = comparison['summary']['memory_usage'][name] print(f" {name}: {params:,} params, {memory:.1f} MB") diff --git a/src/faith/train/training/__init__.py b/src/faith/train/training/__init__.py new file mode 100644 index 0000000..2d36c4c --- /dev/null +++ b/src/faith/train/training/__init__.py @@ -0,0 +1,13 @@ +"""Training module for autoencoder models using PyTorch Lightning.""" + +from .lightning_trainer import ( + LightningTrainer, + MultimodalLightningTrainer, + train_model +) + +__all__ = [ + 'LightningTrainer', + 'MultimodalLightningTrainer', + 'train_model' +] \ No newline at end of file diff --git a/src/faith/train/training/lightning_trainer.py b/src/faith/train/training/lightning_trainer.py new file mode 100644 index 0000000..025fc26 --- /dev/null +++ b/src/faith/train/training/lightning_trainer.py @@ -0,0 +1,538 @@ +"""PyTorch Lightning trainer for autoencoder models.""" + +import warnings +from typing import Any, Callable, Optional + +import pytorch_lightning as pl +import torch +import torch.nn.functional as F +from torch.optim import AdamW +from torch.optim.lr_scheduler import CosineAnnealingLR, LinearLR, SequentialLR + + +class LightningTrainer(pl.LightningModule): + """PyTorch Lightning wrapper for autoencoder models. + + This class provides a simple interface to train any autoencoder model + from your models/ directory with built-in best practices. + """ + + def __init__( + self, + model: torch.nn.Module, + learning_rate: float = 1e-4, + weight_decay: float = 1e-5, + warmup_epochs: int = 5, + max_epochs: int = 100, + loss_fn: Optional[Callable] = None, + scheduler_type: str = "cosine", + compile_model: bool = False, + **kwargs + ) -> None: + """Initialize the Lightning trainer. + + Parameters + ---------- + model : torch.nn.Module + The autoencoder model to train. + learning_rate : float, optional + Learning rate for optimizer, by default 1e-4. + weight_decay : float, optional + Weight decay for regularization, by default 1e-5. + warmup_epochs : int, optional + Number of warmup epochs, by default 5. + max_epochs : int, optional + Total training epochs (needed for scheduler), by default 100. + loss_fn : Optional[Callable], optional + Custom loss function (defaults to MSE), by default None. + scheduler_type : str, optional + Type of LR scheduler ('cosine', 'linear', 'none'), + by default "cosine". + compile_model : bool, optional + Whether to compile model with torch.compile (PyTorch 2.0+), + by default False. + **kwargs + Additional hyperparameters saved to hparams. + """ + super().__init__() + + # Validate scheduler configuration + self._validate_scheduler_config( + warmup_epochs, max_epochs, scheduler_type) + + # Save hyperparameters + self.save_hyperparameters(ignore=['model', 'loss_fn']) + + # Model setup + self.model = model + if compile_model: + try: + self.model = torch.compile(model) + except Exception as e: + warnings.warn(f"Model compilation failed: {e}") + + # Loss function + self.loss_fn = loss_fn or F.mse_loss + + # Store training config + self.learning_rate = learning_rate + self.weight_decay = weight_decay + self.warmup_epochs = warmup_epochs + self.max_epochs = max_epochs + self.scheduler_type = scheduler_type + + def _validate_scheduler_config( + self, + warmup_epochs: int, + max_epochs: int, + scheduler_type: str + ) -> None: + """Validate scheduler configuration to prevent runtime errors. + + Parameters + ---------- + warmup_epochs : int + Number of warmup epochs. + max_epochs : int + Total training epochs. + scheduler_type : str + Scheduler type. + + Raises + ------ + ValueError + If configuration would cause scheduler errors. + """ + if scheduler_type in ["cosine", "linear"]: + if max_epochs <= 0: + raise ValueError(f"max_epochs must be > 0, got {max_epochs}") + + if scheduler_type == "cosine" and warmup_epochs >= max_epochs: + warnings.warn( + f"warmup_epochs ({warmup_epochs}) >= max_epochs " + f"({max_epochs}). Setting warmup_epochs to " + f"{max(0, max_epochs - 1)}" + ) + # Don't modify the values here, just warn + + def forward(self, x: torch.Tensor) -> torch.Tensor: + """Forward pass through the model. + + Parameters + ---------- + x : torch.Tensor + Input tensor. + + Returns + ------- + torch.Tensor + Model output. + """ + return self.model(x) + + def compute_loss( + self, + batch: Any, + batch_idx: int, + prefix: str = "" + ) -> dict[str, torch.Tensor]: + """Compute loss for a batch. + + Override this method for custom loss computation. + + Parameters + ---------- + batch : Any + Input batch (can be tensor or dict). + batch_idx : int + Batch index. + prefix : str, optional + Prefix for logging (e.g., "train_", "val_"), by default "". + + Returns + ------- + Dict[str, torch.Tensor] + Dictionary with 'loss' key and optional additional metrics. + """ + # Handle different batch formats + if isinstance(batch, dict): + # Assume input/target are in the batch dict + inputs = batch.get('input', batch.get('x', batch.get('data'))) + targets = batch.get('target', batch.get('y', inputs)) + elif isinstance(batch, (list, tuple)) and len(batch) == 2: + inputs, targets = batch + else: + # Single tensor - autoencoder case where input = target + inputs = targets = batch + + # Forward pass + outputs = self.model(inputs) + + # Handle model outputs (could be tensor or dict) + if isinstance(outputs, dict): + reconstructed = outputs.get( + 'reconstructed', + outputs.get('output', outputs.get('x_hat')) + ) + # Extract additional outputs for logging + additional_losses = { + k: v for k, v in outputs.items() + if k.endswith('_loss') and isinstance(v, torch.Tensor) + } + else: + reconstructed = outputs + additional_losses = {} + + # Main reconstruction loss + recon_loss = self.loss_fn(reconstructed, targets) + + # Total loss (reconstruction + any additional losses) + total_loss = recon_loss + for loss_name, loss_value in additional_losses.items(): + total_loss += loss_value + + # Prepare metrics for logging + metrics = { + f'{prefix}loss': total_loss, + f'{prefix}recon_loss': recon_loss, + } + + # Add additional losses to metrics + for loss_name, loss_value in additional_losses.items(): + metrics[f'{prefix}{loss_name}'] = loss_value + + return metrics + + def training_step(self, batch: Any, batch_idx: int) -> torch.Tensor: + """Training step. + + Parameters + ---------- + batch : Any + Training batch. + batch_idx : int + Batch index. + + Returns + ------- + torch.Tensor + Training loss. + """ + metrics = self.compute_loss(batch, batch_idx, prefix="train_") + + # Log metrics + self.log_dict(metrics, on_step=True, on_epoch=True, prog_bar=True) + + return metrics['train_loss'] + + def validation_step(self, batch: Any, batch_idx: int) -> torch.Tensor: + """Validation step. + + Parameters + ---------- + batch : Any + Validation batch. + batch_idx : int + Batch index. + + Returns + ------- + torch.Tensor + Validation loss. + """ + metrics = self.compute_loss(batch, batch_idx, prefix="val_") + + # Log metrics + self.log_dict(metrics, on_step=False, on_epoch=True, prog_bar=True) + + return metrics['val_loss'] + + def test_step(self, batch: Any, batch_idx: int) -> torch.Tensor: + """Test step. + + Parameters + ---------- + batch : Any + Test batch. + batch_idx : int + Batch index. + + Returns + ------- + torch.Tensor + Test loss. + """ + metrics = self.compute_loss(batch, batch_idx, prefix="test_") + + # Log metrics + self.log_dict(metrics, on_step=False, on_epoch=True) + + return metrics['test_loss'] + + def configure_optimizers(self) -> dict[str, Any]: + """Configure optimizer and learning rate scheduler. + + Returns + ------- + Dict[str, Any] + Dictionary containing optimizer and scheduler configuration. + """ + # Optimizer + optimizer = AdamW( + self.model.parameters(), + lr=self.learning_rate, + weight_decay=self.weight_decay + ) + + if self.scheduler_type == "none": + return optimizer + + # Learning rate scheduler + if self.scheduler_type == "cosine": + # Ensure T_max is always > 0 + cosine_epochs = max(1, self.max_epochs - self.warmup_epochs) + + if self.warmup_epochs > 0: + # Cosine annealing with warmup + warmup_scheduler = LinearLR( + optimizer, + start_factor=0.1, + end_factor=1.0, + total_iters=self.warmup_epochs + ) + cosine_scheduler = CosineAnnealingLR( + optimizer, + T_max=cosine_epochs + ) + scheduler = SequentialLR( + optimizer, + schedulers=[warmup_scheduler, cosine_scheduler], + milestones=[self.warmup_epochs] + ) + else: + # Just cosine annealing without warmup + scheduler = CosineAnnealingLR( + optimizer, + T_max=max(1, self.max_epochs) # Ensure T_max > 0 + ) + elif self.scheduler_type == "linear": + scheduler = LinearLR( + optimizer, + start_factor=1.0, + end_factor=0.1, + total_iters=max(1, self.max_epochs) # Ensure total_iters > 0 + ) + else: + raise ValueError(f"Unknown scheduler type: {self.scheduler_type}") + + return { + "optimizer": optimizer, + "lr_scheduler": { + "scheduler": scheduler, + "interval": "epoch", + "frequency": 1, + }, + } + + def on_train_epoch_end(self) -> None: + """Called at the end of each training epoch.""" + # Log learning rate + current_lr = self.optimizers().param_groups[0]['lr'] + self.log('learning_rate', current_lr, on_epoch=True) + + +class MultimodalLightningTrainer(LightningTrainer): + """Extended trainer for multimodal models with multiple loss components.""" + + def __init__( + self, + model: torch.nn.Module, + loss_weights: Optional[dict[str, float]] = None, + **kwargs + ) -> None: + """Initialize multimodal trainer. + + Parameters + ---------- + model : torch.nn.Module + The multimodal model to train. + loss_weights : Optional[Dict[str, float]], optional + Dictionary of loss component weights, by default None. + **kwargs + Arguments passed to parent class. + """ + super().__init__(model, **kwargs) + self.loss_weights = loss_weights or {} + + def compute_loss( + self, + batch: Any, + batch_idx: int, + prefix: str = "" + ) -> dict[str, torch.Tensor]: + """Compute multimodal loss with weighted components. + + Parameters + ---------- + batch : Any + Input batch. + batch_idx : int + Batch index. + prefix : str, optional + Prefix for logging, by default "". + + Returns + ------- + Dict[str, torch.Tensor] + Dictionary containing loss components and total loss. + """ + # Get model outputs + outputs = self.model(batch) + + if not isinstance(outputs, dict): + # Fallback to parent implementation + return super().compute_loss(batch, batch_idx, prefix) + + # Extract losses from model outputs + total_loss = 0 + metrics = {} + + for key, value in outputs.items(): + if key.endswith('_loss') and isinstance(value, torch.Tensor): + weight = self.loss_weights.get(key, 1.0) + weighted_loss = weight * value + total_loss += weighted_loss + + # Log both weighted and unweighted losses + metrics[f'{prefix}{key}'] = value + metrics[f'{prefix}weighted_{key}'] = weighted_loss + + metrics[f'{prefix}loss'] = total_loss + return metrics + + +def train_model( + model: torch.nn.Module, + train_dataloader, + val_dataloader=None, + max_epochs: int = 100, + gpus: int = 1, + precision: str = "16-mixed", + logger_type: str = "tensorboard", + project_name: str = "autoencoder-training", + experiment_name: Optional[str] = None, + log_dir: str = "./logs", + **trainer_kwargs +): + """Convenience function to train a model with sensible defaults. + + Parameters + ---------- + model : torch.nn.Module + Model to train. + train_dataloader + Training data loader. + val_dataloader, optional + Validation data loader, by default None. + max_epochs : int, optional + Number of epochs, by default 100. + gpus : int, optional + Number of GPUs to use, by default 1. + precision : str, optional + Training precision ("32", "16-mixed", "bf16-mixed"), + by default "16-mixed". + logger_type : str, optional + Logger type ("tensorboard", "csv", "none"), + by default "tensorboard". + project_name : str, optional + Project name for logging, by default "autoencoder-training". + experiment_name : Optional[str], optional + Experiment name, by default None. + log_dir : str, optional + Directory for logs, by default "./logs". + **trainer_kwargs + Additional arguments for LightningTrainer. + + Returns + ------- + tuple + Tuple containing (lightning_model, trainer). + """ + from pytorch_lightning import Trainer + from pytorch_lightning.callbacks import ( + EarlyStopping, + LearningRateMonitor, + ModelCheckpoint + ) + + # Create Lightning module + lightning_model = LightningTrainer( + model=model, + max_epochs=max_epochs, + **trainer_kwargs + ) + + # Callbacks + callbacks = [ + ModelCheckpoint( + monitor='val_loss' if val_dataloader else 'train_loss', + mode='min', + save_top_k=1, + filename=( + 'best-{epoch}-{val_loss:.4f}' if val_dataloader + else 'best-{epoch}-{train_loss:.4f}' + ) + ), + LearningRateMonitor(logging_interval='epoch'), + ] + + if val_dataloader: + callbacks.append( + EarlyStopping(monitor='val_loss', patience=10, mode='min') + ) + + # Configure logger + logger = None + if logger_type == "tensorboard": + try: + from pytorch_lightning.loggers import TensorBoardLogger + logger = TensorBoardLogger( + save_dir=log_dir, + name=project_name, + version=experiment_name + ) + except ImportError: + warnings.warn("TensorBoard not available. " + "Install with: pip install tensorboard") + elif logger_type == "csv": + try: + from pytorch_lightning.loggers import CSVLogger + logger = CSVLogger( + save_dir=log_dir, + name=project_name, + version=experiment_name + ) + except ImportError: + warnings.warn("CSV logger not available.") + elif logger_type == "none": + logger = False + else: + warnings.warn(f"Unknown logger type: {logger_type}. Using no logger.") + logger = False + + # Trainer + trainer = Trainer( + max_epochs=max_epochs, + accelerator='gpu' if gpus > 0 else 'cpu', + devices=gpus if gpus > 0 else 1, # Use 1 CPU core when no GPU + precision=precision, + callbacks=callbacks, + logger=logger, + enable_progress_bar=True, + log_every_n_steps=50, + ) + + # Train + trainer.fit(lightning_model, train_dataloader, val_dataloader) + + return lightning_model, trainer diff --git a/src/faith/train/tuning/__init__.py b/src/faith/train/tuning/__init__.py new file mode 100644 index 0000000..9673ddb --- /dev/null +++ b/src/faith/train/tuning/__init__.py @@ -0,0 +1,33 @@ +"""Hyperparameter tuning module using Ray Tune.""" + +import warnings + +try: + from .ray_tuner import ( + RayTuner, + RayTuneReportCallback, + create_basic_search_space, + suggest_scheduler_config, + cleanup_ray + ) + from .search_spaces import (SearchSpaces, CustomSearchSpace, + get_search_space) + + + __all__ = [ + 'RayTuner', + 'RayTuneReportCallback', + 'SearchSpaces', + 'CustomSearchSpace', + 'get_search_space', + 'create_basic_search_space', + 'suggest_scheduler_config', + 'cleanup_ray' + ] + +except ImportError: + warnings.warn("Ray Tune not available. Hyperparameter tuning " + "functionality disabled. " + "Install with: pip install ray[tune] optuna hyperopt") + + __all__ = [] diff --git a/src/faith/train/tuning/ray_tuner.py b/src/faith/train/tuning/ray_tuner.py new file mode 100644 index 0000000..e9606e5 --- /dev/null +++ b/src/faith/train/tuning/ray_tuner.py @@ -0,0 +1,666 @@ +"""Ray Tune integration for hyperparameter optimization.""" + +"""Ray Tune integration for hyperparameter optimization.""" + +import warnings +from typing import Any, Optional +import tempfile +import os +from pathlib import Path + +try: + import ray + from ray import tune + from ray.tune import CLIReporter + from ray.tune.schedulers import ASHAScheduler, PopulationBasedTraining + from ray.tune.search.optuna import OptunaSearch + from ray.tune.search.hyperopt import HyperOptSearch + + + RAY_AVAILABLE = True +except ImportError: + RAY_AVAILABLE = False + warnings.warn("Ray Tune not available. " + "Install with: pip install ray[tune] optuna hyperopt") + +import torch +import pytorch_lightning as pl +from pytorch_lightning import Trainer +from pytorch_lightning.callbacks import ModelCheckpoint +from pytorch_lightning.loggers import TensorBoardLogger + +from ..training import LightningTrainer + + +def _resolve_path(path: str) -> str: + """Resolve path to absolute path for Ray Tune compatibility. + + Parameters + ---------- + path : str + Input path (relative or absolute). + + Returns + ------- + str + Absolute path. + """ + return str(Path(path).resolve()) + + +def _safe_ray_init(**kwargs): + """Safely initialize Ray with error handling. + + Parameters + ---------- + **kwargs + Arguments passed to ray.init(). + """ + if not RAY_AVAILABLE: + raise ImportError("Ray not available") + + if ray.is_initialized(): + return + + try: + # Default Ray init arguments for stability + default_args = { + 'ignore_reinit_error': True, + 'include_dashboard': False, # Disable dashboard for stability + 'configure_logging': False, # Avoid logging conflicts + } + default_args.update(kwargs) + + ray.init(**default_args) + except Exception as e: + warnings.warn( + f"Ray initialization failed: {e}. Some features may not work.") + + +def cleanup_ray(): + """Safely shutdown Ray.""" + if RAY_AVAILABLE and ray.is_initialized(): + try: + ray.shutdown() + except Exception as e: + warnings.warn(f"Ray shutdown failed: {e}") + + +class RayTuner: + """Ray Tune integration for hyperparameter optimization. + + This class provides a simple interface to tune hyperparameters of your + autoencoder models using Ray Tune's optimization algorithms. + """ + + def __init__( + self, + model_class: type, + model_base_config: dict[str, Any], + data_loaders: dict[str, Any], + num_samples: int = 20, + max_epochs_per_trial: int = 10, + gpus_per_trial: float = 0.25, + cpus_per_trial: int = 1, + scheduler_type: str = "asha", + search_algorithm: str = "optuna", + metric: str = "val_loss", + mode: str = "min", + storage_path: Optional[str] = None + ) -> None: + """Initialize Ray Tuner. + + Parameters + ---------- + model_class : type + Model class to instantiate (e.g., BlockBasedAutoencoder). + model_base_config : Dict[str, Any] + Base configuration for model instantiation. + data_loaders : Dict[str, Any] + Dictionary containing 'train' and optionally 'val' dataloaders. + num_samples : int, optional + Number of hyperparameter configurations to try, by default 20. + max_epochs_per_trial : int, optional + Maximum epochs per trial, by default 10. + gpus_per_trial : float, optional + GPU fraction per trial, by default 0.25. + cpus_per_trial : int, optional + CPU cores per trial, by default 1. + scheduler_type : str, optional + Scheduler type ("asha", "pbt", "fifo"), by default "asha". + search_algorithm : str, optional + Search algorithm ("optuna", "hyperopt", "random"), + by default "optuna". + metric : str, optional + Metric to optimize, by default "val_loss". + mode : str, optional + Optimization mode ("min" or "max"), by default "min". + storage_path : Optional[str], optional + Directory for Ray Tune results, + by default None (uses current dir + ray_results). + """ + if not RAY_AVAILABLE: + raise ImportError( + "Ray Tune is required for hyperparameter tuning. " + "Install with: pip install ray[tune] optuna hyperopt" + ) + + self.model_class = model_class + self.model_base_config = model_base_config + self.data_loaders = data_loaders + self.num_samples = num_samples + self.max_epochs_per_trial = max_epochs_per_trial + self.gpus_per_trial = gpus_per_trial + self.cpus_per_trial = cpus_per_trial + self.scheduler_type = scheduler_type + self.search_algorithm = search_algorithm + self.metric = metric + self.mode = mode + + # Resolve storage_path to absolute path + if storage_path is None: + storage_path = os.path.join(os.getcwd(), "ray_results") + self.storage_path = _resolve_path(storage_path) + + # Ensure directory exists + os.makedirs(self.storage_path, exist_ok=True) + + # Initialize Ray if not already done + _safe_ray_init() + + def _validate_scheduler_params(self) -> None: + """Validate and adjust scheduler parameters for consistency. + + Raises + ------ + ValueError + If configuration is invalid and cannot be automatically fixed. + """ + if self.scheduler_type == "asha": + if self.max_epochs_per_trial < 2: + raise ValueError( + f"ASHA scheduler requires max_epochs_per_trial >= 2, " + f"got {self.max_epochs_per_trial}. " + f"Use scheduler_type='fifo' for single epoch trials." + ) + elif self.scheduler_type == "pbt": + if self.max_epochs_per_trial < 3: + warnings.warn( + f"PBT scheduler works best with max_epochs_per_trial >= 3" + f", got {self.max_epochs_per_trial}. " + f"Consider using 'asha' or 'fifo'." + ) + if self.num_samples < 4: + warnings.warn( + f"PBT scheduler works best with num_samples >= 4, " + f"got {self.num_samples}. Consider using 'asha' scheduler." + ) + + def _create_scheduler(self): + """Create scheduler based on configuration. + + Returns + ------- + ray.tune.schedulers.TrialScheduler + Configured scheduler. + """ + # Validate parameters first + self._validate_scheduler_params() + + if self.scheduler_type == "asha": + # Ensure grace_period is not greater than max_t + grace_period = min(3, max(1, self.max_epochs_per_trial // 2)) + max_t = self.max_epochs_per_trial + + return ASHAScheduler( + metric=self.metric, + mode=self.mode, + max_t=max_t, + grace_period=grace_period, + reduction_factor=2 + ) + elif self.scheduler_type == "pbt": + # For PBT, ensure perturbation_interval is reasonable + perturbation_interval = min(2, + max(1, self.max_epochs_per_trial // 3)) + + return PopulationBasedTraining( + time_attr="training_iteration", + metric=self.metric, + mode=self.mode, + perturbation_interval=perturbation_interval, + hyperparam_mutations={ + "learning_rate": lambda: tune.loguniform(1e-5, + 1e-2).sample(), + "weight_decay": lambda: tune.loguniform(1e-6, + 1e-3).sample(), + } + ) + elif self.scheduler_type == "fifo": + return None # FIFO is default + else: + raise ValueError(f"Unknown scheduler type: {self.scheduler_type}") + + def _has_search_space(self, config: dict[str, Any]) -> bool: + """Check if config contains actual search space or just fixed values. + + Parameters + ---------- + config : Dict[str, Any] + Configuration to check. + + Returns + ------- + bool + True if config contains search space objects, + False if all fixed values. + """ + if not RAY_AVAILABLE: + return False + + for value in config.values(): + # Check if any value is a Ray Tune search space object + if hasattr(value, 'sample') or str(type(value)).startswith( + ' None: + """Training function for Ray Tune trials. + + Parameters + ---------- + config : Dict[str, Any] + Hyperparameter configuration for this trial. + """ + # Merge base config with trial config + model_config = {**self.model_base_config} + + # Extract model parameters + model_params = {} + training_params = {} + + for key, value in config.items(): + if key in ['learning_rate', 'weight_decay', 'batch_size', + 'scheduler_type', 'warmup_epochs']: + training_params[key] = value + else: + model_params[key] = value + + # Update model config + model_config.update(model_params) + + # Create model + model = self.model_class(**model_config) + + # Create Lightning trainer + lightning_model = LightningTrainer( + model=model, + max_epochs=self.max_epochs_per_trial, + **training_params + ) + + # Create temporary directory for this trial + with tempfile.TemporaryDirectory() as temp_dir: + # Setup Lightning trainer + trainer = Trainer( + max_epochs=self.max_epochs_per_trial, + accelerator='gpu' if self.gpus_per_trial > 0 else 'cpu', + devices=1, # Always use 1 device (GPU or CPU) + precision="16-mixed" if self.gpus_per_trial > 0 else "32", + default_root_dir=temp_dir, + enable_progress_bar=False, + logger=False, + enable_checkpointing=False, + callbacks=[ + RayTuneReportCallback( + metrics={ + "loss": "train_loss", + "val_loss": "val_loss", + "epoch": "epoch" + }, + on="validation_end" + ) + ] + ) + + # Train + trainer.fit( + lightning_model, + self.data_loaders['train'], + self.data_loaders.get('val', None) + ) + + def tune( + self, + search_space: dict[str, Any], + name: str = "autoencoder_tune", + resume: bool = False + ) -> Any: + """Run hyperparameter tuning. + + Parameters + ---------- + search_space : Dict[str, Any] + Search space configuration using Ray Tune syntax. + name : str, optional + Name for this tuning experiment, by default "autoencoder_tune". + resume : bool, optional + Whether to resume from previous run, by default False. + + Returns + ------- + ray.tune.ExperimentAnalysis + Results of the tuning experiment. + """ + # Check if we have a real search space + has_search_space = self._has_search_space(search_space) + + # Warn if using advanced search algorithm with fixed values + if not has_search_space and self.search_algorithm in ["optuna", + "hyperopt"]: + warnings.warn(f"Using {self.search_algorithm} with fixed values. " + f"Consider using search_algorithm='random' " + f"for fixed configurations." + ) + + # Create scheduler and search algorithm + scheduler = self._create_scheduler() + search_alg = self._create_search_algorithm(search_space) + + # Configure reporter + reporter = CLIReporter( + parameter_columns=list(search_space.keys())[:4], + # Show first 4 params + metric_columns=[self.metric, "training_iteration"] + ) + + # Run tuning + analysis = tune.run( + self._training_function, + config=search_space, + num_samples=self.num_samples, + scheduler=scheduler, + search_alg=search_alg if self.scheduler_type != 'pbt' else None, + progress_reporter=reporter, + name=name, + storage_path=self.storage_path, + resources_per_trial={ + "cpu": self.cpus_per_trial, + "gpu": self.gpus_per_trial + }, + resume=resume, + raise_on_failed_trial=False + ) + + return analysis + + def get_best_config(self, analysis: Any) -> dict[str, Any]: + """Get best configuration from tuning results. + + Parameters + ---------- + analysis : ray.tune.ExperimentAnalysis + Results from tune.run(). + + Returns + ------- + Dict[str, Any] + Best hyperparameter configuration. + """ + best_trial = analysis.get_best_trial(self.metric, self.mode) + return best_trial.config + + def train_best_model( + self, + analysis: Any, + max_epochs: int = 100, + save_path: Optional[str] = None + ) -> LightningTrainer: + """Train final model with best hyperparameters. + + Parameters + ---------- + analysis : ray.tune.ExperimentAnalysis + Results from tune.run(). + max_epochs : int, optional + Number of epochs for final training, by default 100. + save_path : Optional[str], optional + Path to save final model, by default None. + + Returns + ------- + LightningTrainer + Trained Lightning model with best configuration. + """ + best_config = self.get_best_config(analysis) + + # Separate model and training parameters + model_config = {**self.model_base_config} + training_params = {} + + for key, value in best_config.items(): + if key in ['learning_rate', 'weight_decay', 'batch_size', + 'scheduler_type', 'warmup_epochs']: + training_params[key] = value + else: + model_config[key] = value + + # Create final model + model = self.model_class(**model_config) + + # Create Lightning trainer + lightning_model = LightningTrainer( + model=model, + max_epochs=max_epochs, + **training_params + ) + + # Setup final trainer + callbacks = [ModelCheckpoint(monitor=self.metric, save_top_k=1)] + + trainer = Trainer( + max_epochs=max_epochs, + accelerator='gpu' if torch.cuda.is_available() else 'cpu', + devices=1 if torch.cuda.is_available() else None, + precision="16-mixed" if torch.cuda.is_available() else "32", + callbacks=callbacks, + logger=TensorBoardLogger("./final_training_logs", + name="best_model") + ) + + # Train final model + trainer.fit( + lightning_model, + self.data_loaders['train'], + self.data_loaders.get('val', None) + ) + + # Save model if requested + if save_path: + torch.save(model.state_dict(), save_path) + print(f"Best model saved to: {save_path}") + + return lightning_model + + +class RayTuneReportCallback(pl.Callback): + """Callback to report metrics to Ray Tune.""" + + def __init__( + self, + metrics: dict[str, str] = None, + on: str = "validation_end" + ) -> None: + """Initialize callback. + + Parameters + ---------- + metrics : Dict[str, str], optional + Mapping from Ray Tune metric names to Lightning metric names. + If None, uses default mapping. + on : str, optional + When to report ("validation_end" or "epoch_end"), + by default "validation_end". + """ + if metrics is None: + # Default metrics mapping + metrics = { + "loss": "train_loss", + "val_loss": "val_loss", + "epoch": "epoch" + } + + self.metrics = metrics + self.on = on + + def on_validation_end(self, trainer, pl_module): + """Report metrics after validation.""" + if self.on == "validation_end": + self._report_metrics(trainer, pl_module) + + def on_train_epoch_end(self, trainer, pl_module): + """Report metrics after training epoch.""" + if self.on == "epoch_end": + self._report_metrics(trainer, pl_module) + + def _report_metrics(self, trainer, pl_module): + """Report metrics to Ray Tune.""" + # Import here to avoid issues if Ray not available + try: + from ray import train + except ImportError: + return + + metrics_to_report = {} + + # Get logged metrics from trainer + logged_metrics = trainer.logged_metrics + callback_metrics = trainer.callback_metrics + + # Combine both metric sources + all_metrics = {**logged_metrics, **callback_metrics} + + for tune_name, lightning_name in self.metrics.items(): + if lightning_name in all_metrics: + value = all_metrics[lightning_name] + if isinstance(value, torch.Tensor): + value = float(value.detach().cpu()) + metrics_to_report[tune_name] = value + + # Always include epoch information + metrics_to_report["training_iteration"] = trainer.current_epoch + + # Report to Ray Tune using positional argument + if metrics_to_report: + # Use the correct Ray Train reporting format + train.report(metrics_to_report) + + +def suggest_scheduler_config( + max_epochs_per_trial: int, + num_samples: int, + training_time_per_epoch: str = "medium" +) -> dict[str, str]: + """Suggest appropriate scheduler configuration. + + Parameters + ---------- + max_epochs_per_trial : int + Maximum epochs per trial. + num_samples : int + Number of samples/trials. + training_time_per_epoch : str, optional + Expected training time ("fast", "medium", "slow"), by default "medium". + + Returns + ------- + Dict[str, str] + Suggested configuration with reasoning. + """ + suggestions = {} + + if max_epochs_per_trial < 2: + suggestions["scheduler_type"] = "fifo" + suggestions["reason"] = "FIFO recommended for single epoch trials" + elif max_epochs_per_trial < 4: + suggestions["scheduler_type"] = "fifo" + suggestions["reason"] = \ + "FIFO recommended for very short trials (< 4 epochs)" + elif max_epochs_per_trial >= 10 and num_samples >= 8: + if training_time_per_epoch in ["fast", "medium"]: + suggestions["scheduler_type"] = "asha" + suggestions["reason"] = \ + "ASHA recommended for efficient early stopping" + else: + suggestions["scheduler_type"] = "pbt" + suggestions["reason"] = \ + "PBT recommended for longer training with population evolution" + elif num_samples >= 4 and max_epochs_per_trial >= 6: + suggestions["scheduler_type"] = "pbt" + suggestions["reason"] = "PBT recommended for medium-scale experiments" + else: + suggestions["scheduler_type"] = "asha" + suggestions["reason"] = "ASHA recommended as general-purpose scheduler" + + return suggestions + + +def create_basic_search_space( + learning_rate_range: tuple = (1e-5, 1e-2), + weight_decay_range: tuple = (1e-6, 1e-3), + batch_size_choices: list = [16, 32, 64] +) -> dict[str, Any]: + """Create a basic search space for autoencoder tuning. + + Parameters + ---------- + learning_rate_range : tuple, optional + Learning rate range (min, max), by default (1e-5, 1e-2). + weight_decay_range : tuple, optional + Weight decay range (min, max), by default (1e-6, 1e-3). + batch_size_choices : list, optional + Batch size choices, by default [16, 32, 64]. + + Returns + ------- + Dict[str, Any] + Search space configuration. + """ + if not RAY_AVAILABLE: + raise ImportError("Ray Tune is required to create search spaces") + + return { + "learning_rate": tune.loguniform(*learning_rate_range), + "weight_decay": tune.loguniform(*weight_decay_range), + "batch_size": tune.choice(batch_size_choices), + "scheduler_type": tune.choice(["cosine", "linear"]), + "warmup_epochs": tune.choice([0, 3, 5]) + } diff --git a/src/faith/train/tuning/schedulers.py b/src/faith/train/tuning/schedulers.py new file mode 100644 index 0000000..e69de29 diff --git a/src/faith/train/tuning/search_spaces.py b/src/faith/train/tuning/search_spaces.py new file mode 100644 index 0000000..7319c8b --- /dev/null +++ b/src/faith/train/tuning/search_spaces.py @@ -0,0 +1,360 @@ +"""Predefined search spaces for common hyperparameter tuning scenarios.""" + +from typing import Any + + +try: + from ray import tune + + + RAY_AVAILABLE = True +except ImportError: + RAY_AVAILABLE = False + + +class SearchSpaces: + """Collection of predefined search spaces for different scenarios.""" + + @staticmethod + def basic_autoencoder( + learning_rate_range: tuple[float, float] = (1e-5, 1e-2), + weight_decay_range: tuple[float, float] = (1e-6, 1e-3), + activation_choices: list[str] = None + ) -> dict[str, Any]: + """Basic autoencoder search space. + + Parameters + ---------- + learning_rate_range : Tuple[float, float], optional + Learning rate range, by default (1e-5, 1e-2). + weight_decay_range : Tuple[float, float], optional + Weight decay range, by default (1e-6, 1e-3). + activation_choices : List[str], optional + Activation function choices, by default ["relu", "gelu", "swish"]. + + Returns + ------- + Dict[str, Any] + Search space configuration. + """ + if not RAY_AVAILABLE: + raise ImportError("Ray Tune required for search spaces") + + if activation_choices is None: + activation_choices = ["relu", "gelu", "swish"] + + return { + "learning_rate": tune.loguniform(*learning_rate_range), + "weight_decay": tune.loguniform(*weight_decay_range), + "activation": tune.choice(activation_choices), + "scheduler_type": tune.choice(["cosine", "linear"]), + "warmup_epochs": tune.choice([0, 3, 5, 10]) + } + + @staticmethod + def block_based_autoencoder( + learning_rate_range: tuple[float, float] = (1e-5, 1e-2), + dropout_range: tuple[float, float] = (0.0, 0.5), + num_blocks_range: tuple[int, int] = (2, 6) + ) -> dict[str, Any]: + """Search space for BlockBasedAutoencoder architecture. + + Parameters + ---------- + learning_rate_range : Tuple[float, float], optional + Learning rate range, by default (1e-5, 1e-2). + dropout_range : Tuple[float, float], optional + Dropout range, by default (0.0, 0.5). + num_blocks_range : Tuple[int, int], optional + Number of blocks range, by default (2, 6). + + Returns + ------- + Dict[str, Any] + Search space configuration. + """ + if not RAY_AVAILABLE: + raise ImportError("Ray Tune required for search spaces") + + return { + # Training hyperparameters + "learning_rate": tune.loguniform(*learning_rate_range), + "weight_decay": tune.loguniform(1e-6, 1e-3), + "scheduler_type": tune.choice(["cosine", "linear", "none"]), + + # Model architecture + "activation": tune.choice(["relu", "gelu", "swish", "leaky_relu"]), + "dropout": tune.uniform(*dropout_range), + + # Block configuration (for custom block_configs) + "base_channels": tune.choice([32, 64, 128]), + "channel_multiplier": tune.choice([1.5, 2.0, 2.5]), + "pool_size": tune.choice([(1, 2), (2, 2), (1, 4)]), + } + + @staticmethod + def quick_search( + param_name: str, + param_choices: list[Any], + base_config: dict[str, Any] = None + ) -> dict[str, Any]: + """Quick search space for testing single parameters. + + Parameters + ---------- + param_name : str + Name of parameter to search. + param_choices : List[Any] + Choices for the parameter. + base_config : Dict[str, Any], optional + Base configuration to extend, by default None. + + Returns + ------- + Dict[str, Any] + Search space configuration. + """ + if not RAY_AVAILABLE: + raise ImportError("Ray Tune required for search spaces") + + if base_config is None: + base_config = {"learning_rate": 1e-4} + + search_space = base_config.copy() + search_space[param_name] = tune.choice(param_choices) + + return search_space + + @staticmethod + def regularization_focused( + base_lr: float = 1e-4, + dropout_range: tuple[float, float] = (0.0, 0.5), + weight_decay_range: tuple[float, float] = (1e-6, 1e-2) + ) -> dict[str, Any]: + """Search space focused on regularization parameters. + + Parameters + ---------- + base_lr : float, optional + Fixed learning rate, by default 1e-4. + dropout_range : Tuple[float, float], optional + Dropout range, by default (0.0, 0.5). + weight_decay_range : Tuple[float, float], optional + Weight decay range, by default (1e-6, 1e-2). + + Returns + ------- + Dict[str, Any] + Search space configuration. + """ + if not RAY_AVAILABLE: + raise ImportError("Ray Tune required for search spaces") + + return { + "learning_rate": base_lr, # Fixed + "weight_decay": tune.loguniform(*weight_decay_range), + "dropout": tune.uniform(*dropout_range), + + # Regularization techniques + "label_smoothing": tune.uniform(0.0, 0.2), + "gradient_clip_val": tune.choice([0.5, 1.0, 2.0, None]), + + # Data augmentation (if applicable) + "noise_factor": tune.uniform(0.0, 0.1), + "mixup_alpha": tune.uniform(0.0, 0.4), + } + + @staticmethod + def architecture_search( + learning_rate: float = 1e-4, + layer_choices: list[int] = None, + width_choices: list[int] = None + ) -> dict[str, Any]: + """Search space focused on architecture parameters. + + Parameters + ---------- + learning_rate : float, optional + Fixed learning rate, by default 1e-4. + layer_choices : List[int], optional + Number of layers choices, by default [2, 3, 4, 5]. + width_choices : List[int], optional + Layer width choices, by default [64, 128, 256, 512]. + + Returns + ------- + Dict[str, Any] + Search space configuration. + """ + if not RAY_AVAILABLE: + raise ImportError("Ray Tune required for search spaces") + + if layer_choices is None: + layer_choices = [2, 3, 4, 5] + if width_choices is None: + width_choices = [64, 128, 256, 512] + + return { + "learning_rate": learning_rate, # Fixed + "weight_decay": 1e-5, # Fixed + + # Architecture parameters + "num_layers": tune.choice(layer_choices), + "bottleneck_dim": tune.choice([16, 32, 64, 128]), + + # Activation and normalization + "activation": tune.choice(["relu", "gelu", "swish", "leaky_relu"]), + "use_batch_norm": tune.choice([True, False]), + "use_layer_norm": tune.choice([True, False]), + + # Skip connections + "use_skip_connections": tune.choice([True, False]), + "skip_type": tune.choice(["add", "concat"]), + } + + +class CustomSearchSpace: + """Builder for custom search spaces.""" + + def __init__(self): + """Initialize custom search space builder.""" + if not RAY_AVAILABLE: + raise ImportError("Ray Tune required for custom search spaces") + + self.space = {} + + def add_continuous( + self, + name: str, + low: float, + high: float, + log_scale: bool = False + ) -> 'CustomSearchSpace': + """Add continuous parameter. + + Parameters + ---------- + name : str + Parameter name. + low : float + Lower bound. + high : float + Upper bound. + log_scale : bool, optional + Use log scale, by default False. + + Returns + ------- + CustomSearchSpace + Self for chaining. + """ + if log_scale: + self.space[name] = tune.loguniform(low, high) + else: + self.space[name] = tune.uniform(low, high) + return self + + def add_discrete(self, name: str, choices: list[Any]) \ + -> 'CustomSearchSpace': + """Add discrete parameter. + + Parameters + ---------- + name : str + Parameter name. + choices : List[Any] + List of choices. + + Returns + ------- + CustomSearchSpace + Self for chaining. + """ + self.space[name] = tune.choice(choices) + return self + + def add_integer(self, name: str, low: int, + high: int) -> 'CustomSearchSpace': + """Add integer parameter. + + Parameters + ---------- + name : str + Parameter name. + low : int + Lower bound. + high : int + Upper bound. + + Returns + ------- + CustomSearchSpace + Self for chaining. + """ + self.space[name] = tune.randint(low, high + 1) + return self + + def add_fixed(self, name: str, value: Any) -> 'CustomSearchSpace': + """Add fixed parameter. + + Parameters + ---------- + name : str + Parameter name. + value : Any + Fixed value. + + Returns + ------- + CustomSearchSpace + Self for chaining. + """ + self.space[name] = value + return self + + def build(self) -> dict[str, Any]: + """Build the search space. + + Returns + ------- + Dict[str, Any] + Complete search space configuration. + """ + return self.space.copy() + + +# Convenience function for quick access +def get_search_space(name: str, **kwargs) -> dict[str, Any]: + """Get predefined search space by name. + + Parameters + ---------- + name : str + Search space name ("basic", "block_based", "multimodal", + "regularization", "architecture"). + **kwargs + Additional parameters for the search space. + + Returns + ------- + Dict[str, Any] + Search space configuration. + + Examples + -------- + >>> space = get_search_space("basic", learning_rate_range=(1e-4, 1e-2)) + >>> space = get_search_space("architecture", layer_choices=[2, 3, 4]) + """ + spaces = { + "basic": SearchSpaces.basic_autoencoder, + "block_based": SearchSpaces.block_based_autoencoder, + "regularization": SearchSpaces.regularization_focused, + "architecture": SearchSpaces.architecture_search, + } + + if name not in spaces: + available = ", ".join(spaces.keys()) + raise ValueError( + f"Unknown search space '{name}'. Available: {available}") + + return spaces[name](**kwargs) diff --git a/tests/test_autoencoder.py b/tests/test_autoencoder.py new file mode 100644 index 0000000..2fa7aab --- /dev/null +++ b/tests/test_autoencoder.py @@ -0,0 +1,69 @@ +import torch +from src.faith.train.models import BlockBasedAutoencoder + +# Test basic functionality +print("Testing BlockBasedAutoencoder...") + +# Create autoencoder with default config +autoencoder = BlockBasedAutoencoder(input_channels=80) + +# Test forward pass +x = torch.randn(2, 80, 100, 128) +reconstructed = autoencoder(x) +latent = autoencoder.encode(x) + +print(f"Input shape: {x.shape}") +print(f"Latent shape: {latent.shape}") +print(f"Reconstructed shape: {reconstructed.shape}") +print(f"Autoencoder: {autoencoder}") + +# Test individual methods +latent_only = autoencoder.get_latent_representation(x) +reconstructed_only = autoencoder.reconstruct(x) + +print(f"Latent only shape: {latent_only.shape}") +print(f"Reconstructed only shape: {reconstructed_only.shape}") + +# Test configuration serialization +config = autoencoder.get_config() +print(f"Config keys: {list(config.keys())}") + +new_autoencoder = BlockBasedAutoencoder.from_config(config) +print(f"Recreated autoencoder: {new_autoencoder}") + +# Test shape calculation +output_shape = autoencoder.get_output_shape((1, 80, 100, 128)) +latent_shape = autoencoder.get_latent_shape((1, 80, 100, 128)) +print(f"Calculated output shape: {output_shape}") +print(f"Calculated latent shape: {latent_shape}") + +# Test parameter counting +print(f"Total parameters: {autoencoder.parameter_count:,}") +print(f"Encoder parameters: {autoencoder.encoder_parameter_count:,}") +print(f"Decoder parameters: {autoencoder.decoder_parameter_count:,}") + +# Test feature map extraction +feature_maps = autoencoder.get_feature_maps(x) +print(f"Encoder feature maps: {len(feature_maps['encoder'])}") +print(f"Decoder feature maps: {len(feature_maps['decoder'])}") + +# Test custom configuration +custom_configs = [ + {'out_channels': 64, 'pool_size': (1, 2), 'dropout': 0.2}, + {'out_channels': 128, 'pool_size': (1, 4), 'dropout': 0.3}, +] + +custom_autoencoder = BlockBasedAutoencoder( + input_channels=80, + block_configs=custom_configs, + activation='gelu' +) + +x_custom = torch.randn(1, 80, 100, 128) +reconstructed_custom, latent_custom = custom_autoencoder(x_custom) + +print("\nCustom autoencoder:") +print(f"Input shape: {x_custom.shape}") +print(f"Latent shape: {latent_custom.shape}") +print(f"Reconstructed shape: {reconstructed_custom.shape}") +print(f"Custom autoencoder: {custom_autoencoder}") diff --git a/tests/test_train_blocks_base.py b/tests/test_train_blocks_base.py new file mode 100644 index 0000000..77c9626 --- /dev/null +++ b/tests/test_train_blocks_base.py @@ -0,0 +1,26 @@ +import torch +from src.faith.train.blocks import BaseBlock, BlockUtils + + +# Example of how the base classes would be used + +class ExampleBlock(BaseBlock): + """Example implementation of BaseBlock.""" + + def __init__(self, in_channels: int, out_channels: int, **kwargs): + super().__init__(in_channels, out_channels, **kwargs) + self.conv = nn.Conv2d(in_channels, out_channels, + kernel_size=self.kernel_size) + + def forward(self, x: torch.Tensor) -> torch.Tensor: + return self.conv(x) + +# Test utility functions +input_shape = (1, 64, 32, 32) +memory_info = BlockUtils.get_memory_usage(block, input_shape) +print(f"Memory usage: {memory_info}") + +output_shape = BlockUtils.calculate_output_shape( + input_shape, kernel_size=3, stride=1, padding=1 +) +print(f"Output shape: {output_shape}") diff --git a/tests/test_train_blocks_decoder.py b/tests/test_train_blocks_decoder.py new file mode 100644 index 0000000..6040c5b --- /dev/null +++ b/tests/test_train_blocks_decoder.py @@ -0,0 +1,60 @@ +import torch +from src.faith.train.blocks import DecoderBlock, BlockBasedDecoder,EncoderBlock + + +# Example usage and testing +# Test DecoderBlock +print("Testing DecoderBlock...") +decoder_block = DecoderBlock( + in_channels=128, + out_channels=64, + upsample_factor=(1, 2), + dropout=0.3, + upsampling_mode='nearest', + activation='relu' +) + +x = torch.randn(1, 128, 16, 8) +output = decoder_block(x) +print(f"DecoderBlock - Input: {x.shape}, Output: {output.shape}") + +# Test configuration +config = decoder_block.get_config() +new_block = DecoderBlock.from_config(config) +print(f"Config serialization successful: {new_block}") + +# Test BlockBasedDecoder with mock encoder blocks +print("\nTesting BlockBasedDecoder...") + +# Create mock encoder blocks for testing + +mock_encoder_blocks = [ + EncoderBlock(80, 128, pool_size=(1, 2)), + EncoderBlock(128, 256, pool_size=(1, 4)), + EncoderBlock(256, 128, pool_size=(1, 2)), +] + +decoder = BlockBasedDecoder( + output_channels=80, + encoder_blocks=mock_encoder_blocks, + bottleneck_channels=64, + upsampling_mode='nearest' +) + +# Test forward pass +latent = torch.randn(2, 64, 25, 4) +reconstructed = decoder(latent) +print(f"Decoder - Input: {latent.shape}, Output: {reconstructed.shape}") + +# Test feature map extraction +feature_maps = decoder.get_feature_maps(latent) +print(f"Feature maps shapes: {[fm.shape for fm in feature_maps]}") + +# Test from_encoder class method +decoder2 = BlockBasedDecoder.from_encoder( + encoder_blocks=mock_encoder_blocks, + bottleneck_channels=64, + output_channels=80, + upsampling_mode='bilinear' +) +print(f"Decoder from encoder: {decoder2}") diff --git a/tests/test_train_blocks_encoder.py b/tests/test_train_blocks_encoder.py new file mode 100644 index 0000000..d3f9639 --- /dev/null +++ b/tests/test_train_blocks_encoder.py @@ -0,0 +1,46 @@ +# Example usage and testing +import torch +from src.faith.train.blocks import EncoderBlock, BlockBasedEncoder + + +# Test EncoderBlock +print("Testing EncoderBlock...") +encoder_block = EncoderBlock( + in_channels=64, + out_channels=128, + pool_size=(1, 2), + dropout=0.3, + activation='relu' +) + +x = torch.randn(1, 64, 32, 32) +output = encoder_block(x) +print(f"EncoderBlock - Input: {x.shape}, Output: {output.shape}") + +# Test configuration +config = encoder_block.get_config() +new_block = EncoderBlock.from_config(config) +print(f"Config serialization successful: {new_block}") + +# Test BlockBasedEncoder +print("\nTesting BlockBasedEncoder...") +block_configs = [ + {'out_channels': 128, 'pool_size': (1, 2), 'dropout': 0.2}, + {'out_channels': 256, 'pool_size': (1, 4), 'dropout': 0.3}, + {'out_channels': 128, 'pool_size': (1, 2), 'dropout': 0.4}, +] + +encoder = BlockBasedEncoder( + input_channels=80, + block_configs=block_configs, + hidden_dim=16, + bottleneck_channels=64 +) + +x = torch.randn(2, 80, 100, 128) +latent = encoder(x) +print(f"Encoder - Input: {x.shape}, Output: {latent.shape}") + +# Test feature map extraction +feature_maps = encoder.get_feature_maps(x) +print(f"Feature maps shapes: {[fm.shape for fm in feature_maps]}") diff --git a/tests/test_train_blocks_residual.py b/tests/test_train_blocks_residual.py new file mode 100644 index 0000000..04d6f54 --- /dev/null +++ b/tests/test_train_blocks_residual.py @@ -0,0 +1,20 @@ +import torch +from src.faith.train.blocks import ResidualBlock + + +# Example usage and testing +# Test basic functionality +block = ResidualBlock(64, 128, stride=2) +x = torch.randn(1, 64, 32, 32) +output = block(x) +print(f"Input shape: {x.shape}") +print(f"Output shape: {output.shape}") +print(f"Block: {block}") + +# Test configuration serialization +config = block.get_config() +print(f"Config: {config}") + +# Create from config +new_block = ResidualBlock.from_config(config) +print(f"Recreated block: {new_block}") diff --git a/tests/test_train_configuration.py b/tests/test_train_configuration.py new file mode 100644 index 0000000..ad6ade6 --- /dev/null +++ b/tests/test_train_configuration.py @@ -0,0 +1,58 @@ +from src.faith.train.models import ( + get_preset_config, + create_block_autoencoder, + list_preset_configs, + save_model_config, + create_model_from_config_file, + create_autoencoder_from_config, + ModelConfig, +) + +# Example usage and testing +# Test preset configurations +print("Available presets:", list_preset_configs()) + +# Test creating models from presets +for preset_name in ['default', 'light', 'mae_default']: + print(f"\nTesting {preset_name} preset:") + + try: + model = create_block_autoencoder(preset_name, input_channels=80) + print(f"Created model: {type(model).__name__}") + + if hasattr(model, 'parameter_count'): + print(f"Parameters: {model.parameter_count:,}") + + except Exception as e: + print(f"Error creating {preset_name}: {e}") + +# Test configuration serialization +print("\nTesting configuration serialization:") + +config = get_preset_config('default') +config = config.update(input_channels=80, hidden_dim=16) + +# Save and load +config.save('test_config.yaml') +loaded_config = ModelConfig.load('test_config.yaml') + +print(f"Original: {config.input_channels}, {config.hidden_dim}") +print( + f"Loaded: {loaded_config.input_channels}, {loaded_config.hidden_dim}") + +# Test model config saving +autoencoder = create_autoencoder_from_config(config) +save_model_config(autoencoder, 'model_config.yaml') + +# Load and recreate model +recreated_model = create_model_from_config_file('model_config.yaml') +print(f"Recreated model: {type(recreated_model).__name__}") + +# Cleanup +import os + + +os.remove('test_config.yaml') +os.remove('model_config.yaml') + +print("Configuration tests completed successfully!") From 732830313d0564bbaf2aded884e3b935d7030223 Mon Sep 17 00:00:00 2001 From: Peter Steiner <61472983+renierts@users.noreply.github.com> Date: Tue, 15 Jul 2025 20:29:54 -0400 Subject: [PATCH 051/103] Added tests for residual block and fixed bugs for it. --- src/faith/__init__.py | 1 - src/faith/train/blocks/__init__.py | 4 +- src/faith/train/blocks/base.py | 27 ++- src/faith/train/blocks/residual.py | 30 +-- tests/test_train_blocks_base.py | 4 +- tests/test_train_blocks_residual.py | 277 ++++++++++++++++++++++++++-- 6 files changed, 304 insertions(+), 39 deletions(-) diff --git a/src/faith/__init__.py b/src/faith/__init__.py index 83986cb..e69de29 100644 --- a/src/faith/__init__.py +++ b/src/faith/__init__.py @@ -1 +0,0 @@ -from . import core \ No newline at end of file diff --git a/src/faith/train/blocks/__init__.py b/src/faith/train/blocks/__init__.py index 7f06849..02cf1a9 100644 --- a/src/faith/train/blocks/__init__.py +++ b/src/faith/train/blocks/__init__.py @@ -3,7 +3,7 @@ from .residual import ResidualBlock from .encoder import EncoderBlock, BlockBasedEncoder from .decoder import DecoderBlock, BlockBasedDecoder -from .base import BaseBlock, BlockUtils +from .base import BaseConvBlock, BlockUtils __all__ = [ "ResidualBlock", @@ -11,6 +11,6 @@ "BlockBasedEncoder", "DecoderBlock", "BlockBasedDecoder", - "BaseBlock", + "BaseConvBlock", "BlockUtils", ] diff --git a/src/faith/train/blocks/base.py b/src/faith/train/blocks/base.py index b7332ae..b02f36a 100644 --- a/src/faith/train/blocks/base.py +++ b/src/faith/train/blocks/base.py @@ -13,8 +13,8 @@ import math -class BaseBlock(nn.Module, ABC): - """Abstract base class for all neural network blocks. +class BaseConvBlock(nn.Module, ABC): + """Abstract base class for all convolutional-based neural network blocks. This class defines the common interface that all blocks should implement, ensuring consistency across different block types in the autoencoder @@ -60,6 +60,21 @@ def __init__( raise ValueError( f"out_channels must be positive, got {out_channels}") + if not isinstance(in_channels, int): + raise TypeError( + f"in_channels must be an int, got {type(in_channels)}") + + if not isinstance(out_channels, int): + raise TypeError( + f"out_channels must be an int, got {type(out_channels)}") + + if isinstance(kernel_size, int) and kernel_size <= 0: + raise ValueError( + f"kernel_size must be positive, got {kernel_size}") + if isinstance(kernel_size, tuple) and any(k <= 0 for k in kernel_size): + raise ValueError( + f"kernel_size must be positive, got {kernel_size}") + self.in_channels = in_channels self.out_channels = out_channels self.kernel_size = self._normalize_kernel_size(kernel_size) @@ -82,11 +97,11 @@ def _calculate_padding( """Calculate padding based on kernel size and padding specification.""" if padding == 'auto': if isinstance(kernel_size, int): - return (kernel_size // 2, kernel_size // 2) + return kernel_size // 2, kernel_size // 2 else: return tuple(k // 2 for k in kernel_size) elif isinstance(padding, int): - return (padding, padding) + return padding, padding else: return padding @@ -140,7 +155,7 @@ def __repr__(self) -> str: f"bias={self.bias})") -class SequentialBlock(BaseBlock): +class SequentialBlock(BaseConvBlock): """Base class for blocks that apply operations sequentially. This class provides common functionality for blocks that consist of @@ -181,7 +196,7 @@ def add_operation(self, operation: nn.Module) -> None: self.operations.add_module(str(len(self.operations)), operation) -class ConfigurableBlock(BaseBlock): +class ConfigurableBlock(BaseConvBlock): """ Base class for blocks with extensive configuration options. diff --git a/src/faith/train/blocks/residual.py b/src/faith/train/blocks/residual.py index ca06459..44862af 100644 --- a/src/faith/train/blocks/residual.py +++ b/src/faith/train/blocks/residual.py @@ -7,10 +7,10 @@ import torch import torch.nn as nn from typing import Union, Any -from .base import BaseBlock, WeightInitializer +from .base import BaseConvBlock, WeightInitializer -class ResidualBlock(BaseBlock): +class ResidualBlock(BaseConvBlock): """Residual convolutional block with batch normalization and ReLU. This block implements a standard residual connection with two convolutional @@ -27,9 +27,6 @@ class ResidualBlock(BaseBlock): Size of the convolving kernel. stride : int or tuple of int, default=1 Stride of the convolution. - padding : int, tuple of int, or str, default='auto' - Padding added to all four sides of the input. If 'auto', padding is - calculated to maintain spatial dimensions when stride=1. bias : bool, default=True If True, adds a learnable bias to the output. use_batch_norm : bool, default=True @@ -78,7 +75,6 @@ def __init__( out_channels: int, kernel_size: Union[int, tuple[int, int]] = 3, stride: Union[int, tuple[int, int]] = 1, - padding: Union[int, tuple[int, int], str] = 'auto', bias: bool = True, use_batch_norm: bool = True, activation: str = 'relu', @@ -96,8 +92,6 @@ def __init__( Size of the convolving kernel. stride : int or tuple of int, default=1 Stride of the convolution. - padding : int, tuple of int, or str, default='auto' - Padding specification. bias : bool, default=True Whether to use bias in convolutions. use_batch_norm : bool, default=True @@ -110,9 +104,20 @@ def __init__( # Initialize base class super().__init__(in_channels, out_channels, kernel_size, bias) + if isinstance(stride, int) and stride < 1: + raise ValueError(f"Stride must be a positive integer or tuple, " + f"got {stride}") + if isinstance(stride, tuple) and any(s < 1 for s in stride): + raise ValueError(f"Stride must be a positive integer or tuple, " + f"got {stride}") + if (isinstance(stride, float) or isinstance(stride, tuple) + and any(isinstance(s, float) for s in stride)): + raise TypeError(f"Stride must be an integer or tuple, " + f"got float {stride}") + # Normalize stride and padding self.stride = self._normalize_stride(stride) - self.padding = self._calculate_padding(self.kernel_size, padding) + self.padding = self._calculate_padding(self.kernel_size, "auto") self.use_batch_norm = use_batch_norm self.activation_name = activation self.init_method = init_method @@ -239,8 +244,9 @@ def forward(self, x: torch.Tensor) -> torch.Tensor: Returns ------- torch.Tensor - Output tensor with shape (batch_size, out_channels, height', width') - where height' and width' depend on stride. + Output tensor with shape + (batch_size, out_channels, height', width') where height' + and 'width' depend on stride. """ # Store input for residual connection residual = x @@ -350,4 +356,4 @@ def get_output_shape( # Update channels batch_size, _, height, width = temp_shape - return (batch_size, self.out_channels, height, width) + return batch_size, self.out_channels, height, width diff --git a/tests/test_train_blocks_base.py b/tests/test_train_blocks_base.py index 77c9626..1e135e2 100644 --- a/tests/test_train_blocks_base.py +++ b/tests/test_train_blocks_base.py @@ -1,10 +1,10 @@ import torch -from src.faith.train.blocks import BaseBlock, BlockUtils +from src.faith.train.blocks import BaseConvBlock, BlockUtils # Example of how the base classes would be used -class ExampleBlock(BaseBlock): +class ExampleBlock(BaseConvBlock): """Example implementation of BaseBlock.""" def __init__(self, in_channels: int, out_channels: int, **kwargs): diff --git a/tests/test_train_blocks_residual.py b/tests/test_train_blocks_residual.py index 04d6f54..a0f1710 100644 --- a/tests/test_train_blocks_residual.py +++ b/tests/test_train_blocks_residual.py @@ -2,19 +2,264 @@ from src.faith.train.blocks import ResidualBlock -# Example usage and testing -# Test basic functionality -block = ResidualBlock(64, 128, stride=2) -x = torch.randn(1, 64, 32, 32) -output = block(x) -print(f"Input shape: {x.shape}") -print(f"Output shape: {output.shape}") -print(f"Block: {block}") - -# Test configuration serialization -config = block.get_config() -print(f"Config: {config}") - -# Create from config -new_block = ResidualBlock.from_config(config) -print(f"Recreated block: {new_block}") +import pytest + + +def test_kernel_size_constant_channels(): + """Test the kernel size of the ResidualBlock.""" + block = ResidualBlock(4, 4, kernel_size=3) + + # Test that the block was created successfully + assert block is not None + + # Test that the kernel size is correctly set in the convolutional layers + # Assuming ResidualBlock has conv layers with the specified kernel size + for module in block.modules(): + if isinstance(module, torch.nn.Conv2d): + assert module.kernel_size == (3, 3), ( + f"Expected kernel size (3, 3), got {module.kernel_size}" + ) + + +def test_kernel_size_changing_channels(): + """Test the kernel size of the ResidualBlock.""" + block = ResidualBlock(4, 6, kernel_size=3) + + # Test that the block was created successfully + assert block is not None + + # Test that the kernel size is correctly set in the convolutional layers + # Assuming ResidualBlock has conv layers with the specified kernel size + for module in block.modules(): + if isinstance(module, torch.nn.Conv2d): + assert (module.kernel_size == (3, 3) + or module.kernel_size == (1, 1)), ( + f"Expected kernel size (3, 3) or (1, 1), " + f"got {module.kernel_size}" + ) + + +def test_kernel_size_different_values(): + """Test ResidualBlock with different kernel sizes.""" + test_cases = [ + (1, (1, 1)), + (3, (3, 3)), + (5, (5, 5)), + (7, (7, 7)), + ] + + for kernel_size, expected in test_cases: + block = ResidualBlock(4, 8, kernel_size=kernel_size) + + # Check that conv layers have the correct kernel size + conv_layers = [ + module for module in block.modules() + if isinstance(module, torch.nn.Conv2d) + ] + + assert len(conv_layers) == 3, ("ResidualBlock should contain Conv2d " + "layers") + + for conv_layer in conv_layers: + assert (conv_layer.kernel_size == expected + or conv_layer.kernel_size == (1, 1)), ( + f"For kernel_size={kernel_size}, expected {expected}, " + f"got {conv_layer.kernel_size}" + ) + + block = ResidualBlock(4, 4, kernel_size=kernel_size) + + # Check that conv layers have the correct kernel size + conv_layers = [ + module for module in block.modules() + if isinstance(module, torch.nn.Conv2d) + ] + + assert len(conv_layers) == 2, ("ResidualBlock should contain Conv2d " + "layers") + + for conv_layer in conv_layers: + assert conv_layer.kernel_size == expected, ( + f"For kernel_size={kernel_size}, expected {expected}, " + f"got {conv_layer.kernel_size}" + ) + + +def test_kernel_size_with_forward_pass(): + """Test that different kernel sizes work in forward pass.""" + batch_size = 2 + channels = 2 + height, width = 32, 32 + + input_tensor = torch.randn(batch_size, channels, height, width) + + # Test different kernel sizes + for kernel_size in [1, 3, 5]: + block = ResidualBlock(2, 4, kernel_size=kernel_size) + block.eval() # Set to evaluation mode + + with torch.no_grad(): + output = block(input_tensor) + + # Check output shape is reasonable + output_shape = output.shape[:1] + output.shape[2:] + input_shape = input_tensor.shape[:1] + input_tensor.shape[2:] + assert output_shape == input_shape, ( + f"Input shape should be preserved, got {output.shape[0]}" + ) + assert output.shape[1] == 4, ( + f"Output channels should be 4, got {output.shape[1]}" + ) + + assert len(output.shape) == 4, ( + f"Output should be 4D tensor, got shape {output.shape}" + ) + + +def test_invalid_kernel_size(): + """Test that invalid kernel sizes raise appropriate errors.""" + with pytest.raises(ValueError): + ResidualBlock(2, 4, kernel_size=0) + + with pytest.raises(ValueError): + ResidualBlock(2, 4, kernel_size=-1) + + +def test_kernel_size_parameter_types(): + """Test that kernel_size accepts different parameter types.""" + # Test integer + block1 = ResidualBlock(2, 4, kernel_size=3) + assert block1 is not None + + # Test tuple (if supported) + block2 = ResidualBlock(2, 4, kernel_size=(3, 3)) + assert block2 is not None + + +def test_invalid_channels(): + """Test that invalid channel numbers raise appropriate errors.""" + # Test zero input channels + with pytest.raises(ValueError): + ResidualBlock(0, 2, kernel_size=3) + + # Test negative input channels + with pytest.raises(ValueError): + ResidualBlock(-64, 2, kernel_size=3) + + # Test zero output channels + with pytest.raises(ValueError): + ResidualBlock(2, 0, kernel_size=3) + + # Test negative output channels + with pytest.raises(ValueError): + ResidualBlock(2, -128, kernel_size=3) + + # Test non-integer channels + with pytest.raises(TypeError): + ResidualBlock(64.5, 128, kernel_size=3) + + with pytest.raises(TypeError): + ResidualBlock(64, 128.5, kernel_size=3) + + +def test_valid_channels(): + """Test that valid channel numbers work correctly.""" + valid_channel_pairs = [ + (1, 1), + (1, 64), + (64, 1), + (32, 64), + (64, 128), + (128, 256), + (512, 512), + ] + + for in_channels, out_channels in valid_channel_pairs: + block = ResidualBlock(in_channels, out_channels, kernel_size=3) + assert block is not None + + # Test forward pass with appropriate input + input_tensor = torch.randn(1, in_channels, 8, 8) + with torch.no_grad(): + output = block(input_tensor) + assert output.shape[1] == out_channels + + +def test_invalid_stride(): + """Test that invalid stride values raise appropriate errors.""" + # Test zero stride + with pytest.raises(ValueError): + ResidualBlock(64, 128, kernel_size=3, stride=0) + + # Test negative stride + with pytest.raises(ValueError): + ResidualBlock(64, 128, kernel_size=3, stride=-1) + + # Test non-integer stride + with pytest.raises(TypeError): + ResidualBlock(64, 128, kernel_size=3, stride=1.5) + + +def test_valid_stride(): + """Test that valid stride values work correctly.""" + valid_strides = [1, 2, 3, 4] + + for stride in valid_strides: + block = ResidualBlock(64, 128, kernel_size=3, stride=stride) + assert block is not None + + # Test that stride affects conv layers + conv_layers = [ + module for module in block.modules() + if isinstance(module, torch.nn.Conv2d) + ] + + # At least one conv layer should have the specified stride + stride_found = any( + conv.stride == (stride, stride) or conv.stride == stride + for conv in conv_layers + ) + assert stride_found, f"No conv layer found with stride {stride}" + + +def test_stride_output_shape(): + """Test that stride correctly affects output dimensions.""" + input_size = 32 + input_tensor = torch.randn(1, 2, input_size, input_size) + + for stride in [1, 2]: + block = ResidualBlock(2, 4, kernel_size=3, stride=stride) + block.eval() + + with torch.no_grad(): + output = block(input_tensor) + + # Output spatial dimensions are affected by stride + if stride == 1: + # Might be same size + assert output.shape[2] == input_size + assert output.shape[3] == input_size + elif stride == 2: + # Should be half the size + assert output.shape[2] <= input_size // stride + assert output.shape[3] <= input_size // stride + + +def test_combined_invalid_parameters(): + """Test combinations of invalid parameters.""" + invalid_combinations = [ + # (in_channels, out_channels, kernel_size, stride) + (0, 0, 0, 0), # All invalid + (-1, 128, 3, 1), # Invalid in_channels + (64, -1, 3, 1), # Invalid out_channels + (64, 128, -1, 1), # Invalid kernel_size + (64, 128, 3, -1), # Invalid stride + ] + + for in_ch, out_ch, k_size, stride in invalid_combinations: + with pytest.raises((ValueError, TypeError, RuntimeError)): + ResidualBlock( + in_ch, out_ch, + kernel_size=k_size, + stride=stride, + ) From 9ede5339ff9c11d3aba7b9fca8bc79c2c0116bd5 Mon Sep 17 00:00:00 2001 From: Nathaniel Chen <79379842+nathanchenseanwalter@users.noreply.github.com> Date: Wed, 16 Jul 2025 07:59:34 -0400 Subject: [PATCH 052/103] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f810b36..24c496f 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ This repository serves as a centralized platform for fusion-related machine lear Go to your scratch directory while you are on the HEAD node (so you need internet access, which computing nodes do not have). -We will be using Python 3.12. +We will be using Python 3.12 and uv as a package manageer. Since uv isn't on Stellar, for now we will install it via pip /scratch/gpfs/[username] From 13df06a4d7aa4570c976631d96767070f2b15657 Mon Sep 17 00:00:00 2001 From: Nathaniel Chen <79379842+nathanchenseanwalter@users.noreply.github.com> Date: Wed, 16 Jul 2025 08:04:11 -0400 Subject: [PATCH 053/103] Create python-package.yml --- .github/workflows/python-package.yml | 40 ++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 .github/workflows/python-package.yml diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml new file mode 100644 index 0000000..81088ca --- /dev/null +++ b/.github/workflows/python-package.yml @@ -0,0 +1,40 @@ +# This workflow will install Python dependencies, run tests and lint with a variety of Python versions +# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python + +name: Python package + +on: + push: + branches: [ "foundation25" ] + pull_request: + branches: [ "foundation25" ] + +jobs: + build: + + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] + + steps: + - uses: actions/checkout@v4 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v3 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python -m pip install flake8 pytest + if [ -f requirements.txt ]; then pip install -r requirements.txt; fi + - name: Lint with flake8 + run: | + # stop the build if there are Python syntax errors or undefined names + flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics + # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide + flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics + - name: Test with pytest + run: | + pytest From b244c089fd8bf94c568fee25336482e5f6115e35 Mon Sep 17 00:00:00 2001 From: Nathaniel Chen <79379842+nathanchenseanwalter@users.noreply.github.com> Date: Wed, 16 Jul 2025 08:07:02 -0400 Subject: [PATCH 054/103] Update .gitignore --- .gitignore | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 4b8399c..eb21c69 100644 --- a/.gitignore +++ b/.gitignore @@ -159,8 +159,12 @@ cython_debug/ # option (not recommended) you can uncomment the following to ignore the entire idea folder. #.idea/ +# Ruff cache +.ruff_cache/ + +# Fusion AI Hub data/ logs/ outputs/ *.pkl -*.joblib \ No newline at end of file +*.joblib From ff49f7bfd067690160d15d779901c3ccb7d4addf Mon Sep 17 00:00:00 2001 From: Nathaniel Chen <79379842+nathanchenseanwalter@users.noreply.github.com> Date: Wed, 16 Jul 2025 08:14:48 -0400 Subject: [PATCH 055/103] Update pyproject.toml --- pyproject.toml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 69ff4d7..fb6bd15 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -39,6 +39,11 @@ dependencies = [ "jupyter", ] +[dependency-groups] +dev = [ + "pytest >=8.1.1,<9" +] + [tool.uv.sources] torch = [ { index = "pytorch-cpu" }, @@ -55,6 +60,10 @@ explicit = true [tool.uv] package = true +[tool.ruff] +select = ["E", "F", "I", "B", "ANN"] +line-length = 88 # TODO + [project.urls] Homepage = "https://github.com" Documentation = "https://readthedocs.org" From 22e37fa2b4094edc7cf66ecb91f7c1bbb0476b2a Mon Sep 17 00:00:00 2001 From: Nathaniel Chen <79379842+nathanchenseanwalter@users.noreply.github.com> Date: Wed, 16 Jul 2025 08:15:08 -0400 Subject: [PATCH 056/103] Create .pre-commit-config.yaml --- .pre-commit-config.yaml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .pre-commit-config.yaml diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..78c0d57 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,7 @@ +repos: +- repo: https://github.com/astral-sh/ruff-pre-commit + rev: v0.2.0 + hooks: + - id: ruff + args: [--fix] + - id: ruff-format From 9ca5efb99e1a33883ae2e2b1e99d746b44e0a9ad Mon Sep 17 00:00:00 2001 From: Nathaniel Chen <79379842+nathanchenseanwalter@users.noreply.github.com> Date: Wed, 16 Jul 2025 08:16:06 -0400 Subject: [PATCH 057/103] Update pyproject.toml --- pyproject.toml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index fb6bd15..23ecee3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -41,7 +41,8 @@ dependencies = [ [dependency-groups] dev = [ - "pytest >=8.1.1,<9" + "pytest >=8.1.1,<9", + "pre-commit", ] [tool.uv.sources] @@ -62,7 +63,7 @@ package = true [tool.ruff] select = ["E", "F", "I", "B", "ANN"] -line-length = 88 # TODO +line-length = 79 [project.urls] Homepage = "https://github.com" From c7c461979b6557a5c1008b29954e70fcb07bd1b2 Mon Sep 17 00:00:00 2001 From: Nathaniel Chen <79379842+nathanchenseanwalter@users.noreply.github.com> Date: Wed, 16 Jul 2025 08:18:32 -0400 Subject: [PATCH 058/103] Update .pre-commit-config.yaml --- .pre-commit-config.yaml | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 78c0d57..e8e12a6 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,7 +1,12 @@ repos: -- repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.2.0 - hooks: - - id: ruff - args: [--fix] - - id: ruff-format +- repo: https://github.com/astral-sh/ruff-pre-commit + # Ruff version. + rev: v0.12.3 + hooks: + # Run the linter. + - id: ruff-check + types_or: [ python, pyi ] + args: [ --fix ] + # Run the formatter. + - id: ruff-format + types_or: [ python, pyi ] From 29a9c7aae6bd182a0f5ab7ad92dbb0f7dfa9b221 Mon Sep 17 00:00:00 2001 From: Nathaniel Chen <79379842+nathanchenseanwalter@users.noreply.github.com> Date: Wed, 16 Jul 2025 08:19:00 -0400 Subject: [PATCH 059/103] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 24c496f..f4d1758 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ This repository serves as a centralized platform for fusion-related machine lear Go to your scratch directory while you are on the HEAD node (so you need internet access, which computing nodes do not have). -We will be using Python 3.12 and uv as a package manageer. Since uv isn't on Stellar, for now we will install it via pip +We will be using Python 3.12 and uv as a package manager. Since uv isn't on Stellar, for now we will install it via pip /scratch/gpfs/[username] From 1058c64c0cbc3bcc2e1d7f1ce866c32e2b60bb7a Mon Sep 17 00:00:00 2001 From: Nathaniel Chen Date: Wed, 16 Jul 2025 09:29:57 -0400 Subject: [PATCH 060/103] Refactor project configuration and enhance linting rules - Changed project name from "Fusion Artificial InTelligence Hub" to "faith" in pyproject.toml. - Updated linting rules in the ruff configuration to include additional checks for code quality. - Expanded Python version resolution markers in uv.lock to support more specific platform and version combinations. - Added new package dependencies in uv.lock, including aiohappyeyeballs and aiohttp with their respective versions and sources. - Imported nn module from torch in the test file to support neural network operations. --- pyproject.toml | 13 +- tests/test_train_blocks_base.py | 1 + uv.lock | 3269 +++++++++++++++++++++++++++++-- 3 files changed, 3124 insertions(+), 159 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 23ecee3..68fa05b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,5 @@ [project] -name = "Fusion Artificial InTelligence Hub" +name = "faith" version = "0.0.1-alpha" authors = [ { name = "Peter Steiner", email = "peter.steiner@princeton.edu" }, @@ -62,7 +62,16 @@ explicit = true package = true [tool.ruff] -select = ["E", "F", "I", "B", "ANN"] +select = [ + "E", # pycodestyle errors + "W", # pycodestyle warnings + "F", # pyflakes + "I", # isort + "B", # flake8-bugbear + "C4", # flake8-comprehensions + "UP", # pyupgrade + "ANN", # flake8-annotations + ] line-length = 79 [project.urls] diff --git a/tests/test_train_blocks_base.py b/tests/test_train_blocks_base.py index 1e135e2..c3ddbf2 100644 --- a/tests/test_train_blocks_base.py +++ b/tests/test_train_blocks_base.py @@ -1,4 +1,5 @@ import torch +import torch.nn as nn from src.faith.train.blocks import BaseConvBlock, BlockUtils diff --git a/uv.lock b/uv.lock index b805b42..d6b9e52 100644 --- a/uv.lock +++ b/uv.lock @@ -2,18 +2,187 @@ version = 1 revision = 2 requires-python = ">=3.9" resolution-markers = [ - "python_full_version >= '3.12' and sys_platform == 'darwin'", - "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", +] + +[[package]] +name = "aiohappyeyeballs" +version = "2.6.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/26/30/f84a107a9c4331c14b2b586036f40965c128aa4fee4dda5d3d51cb14ad54/aiohappyeyeballs-2.6.1.tar.gz", hash = "sha256:c3f9d0113123803ccadfdf3f0faa505bc78e6a72d1cc4806cbd719826e943558", size = 22760, upload-time = "2025-03-12T01:42:48.764Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0f/15/5bf3b99495fb160b63f95972b81750f18f7f4e02ad051373b669d17d44f2/aiohappyeyeballs-2.6.1-py3-none-any.whl", hash = "sha256:f349ba8f4b75cb25c99c5c2d84e997e485204d2902a9597802b0371f09331fb8", size = 15265, upload-time = "2025-03-12T01:42:47.083Z" }, +] + +[[package]] +name = "aiohttp" +version = "3.12.14" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aiohappyeyeballs" }, + { name = "aiosignal" }, + { name = "async-timeout", marker = "python_full_version < '3.11'" }, + { name = "attrs" }, + { name = "frozenlist" }, + { name = "multidict" }, + { name = "propcache" }, + { name = "yarl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e6/0b/e39ad954107ebf213a2325038a3e7a506be3d98e1435e1f82086eec4cde2/aiohttp-3.12.14.tar.gz", hash = "sha256:6e06e120e34d93100de448fd941522e11dafa78ef1a893c179901b7d66aa29f2", size = 7822921, upload-time = "2025-07-10T13:05:33.968Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/88/f161f429f9de391eee6a5c2cffa54e2ecd5b7122ae99df247f7734dfefcb/aiohttp-3.12.14-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:906d5075b5ba0dd1c66fcaaf60eb09926a9fef3ca92d912d2a0bbdbecf8b1248", size = 702641, upload-time = "2025-07-10T13:02:38.98Z" }, + { url = "https://files.pythonhosted.org/packages/fe/b5/24fa382a69a25d242e2baa3e56d5ea5227d1b68784521aaf3a1a8b34c9a4/aiohttp-3.12.14-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c875bf6fc2fd1a572aba0e02ef4e7a63694778c5646cdbda346ee24e630d30fb", size = 479005, upload-time = "2025-07-10T13:02:42.714Z" }, + { url = "https://files.pythonhosted.org/packages/09/67/fda1bc34adbfaa950d98d934a23900918f9d63594928c70e55045838c943/aiohttp-3.12.14-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fbb284d15c6a45fab030740049d03c0ecd60edad9cd23b211d7e11d3be8d56fd", size = 466781, upload-time = "2025-07-10T13:02:44.639Z" }, + { url = "https://files.pythonhosted.org/packages/36/96/3ce1ea96d3cf6928b87cfb8cdd94650367f5c2f36e686a1f5568f0f13754/aiohttp-3.12.14-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38e360381e02e1a05d36b223ecab7bc4a6e7b5ab15760022dc92589ee1d4238c", size = 1648841, upload-time = "2025-07-10T13:02:46.356Z" }, + { url = "https://files.pythonhosted.org/packages/be/04/ddea06cb4bc7d8db3745cf95e2c42f310aad485ca075bd685f0e4f0f6b65/aiohttp-3.12.14-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:aaf90137b5e5d84a53632ad95ebee5c9e3e7468f0aab92ba3f608adcb914fa95", size = 1622896, upload-time = "2025-07-10T13:02:48.422Z" }, + { url = "https://files.pythonhosted.org/packages/73/66/63942f104d33ce6ca7871ac6c1e2ebab48b88f78b2b7680c37de60f5e8cd/aiohttp-3.12.14-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e532a25e4a0a2685fa295a31acf65e027fbe2bea7a4b02cdfbbba8a064577663", size = 1695302, upload-time = "2025-07-10T13:02:50.078Z" }, + { url = "https://files.pythonhosted.org/packages/20/00/aab615742b953f04b48cb378ee72ada88555b47b860b98c21c458c030a23/aiohttp-3.12.14-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eab9762c4d1b08ae04a6c77474e6136da722e34fdc0e6d6eab5ee93ac29f35d1", size = 1737617, upload-time = "2025-07-10T13:02:52.123Z" }, + { url = "https://files.pythonhosted.org/packages/d6/4f/ef6d9f77225cf27747368c37b3d69fac1f8d6f9d3d5de2d410d155639524/aiohttp-3.12.14-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abe53c3812b2899889a7fca763cdfaeee725f5be68ea89905e4275476ffd7e61", size = 1642282, upload-time = "2025-07-10T13:02:53.899Z" }, + { url = "https://files.pythonhosted.org/packages/37/e1/e98a43c15aa52e9219a842f18c59cbae8bbe2d50c08d298f17e9e8bafa38/aiohttp-3.12.14-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5760909b7080aa2ec1d320baee90d03b21745573780a072b66ce633eb77a8656", size = 1582406, upload-time = "2025-07-10T13:02:55.515Z" }, + { url = "https://files.pythonhosted.org/packages/71/5c/29c6dfb49323bcdb0239bf3fc97ffcf0eaf86d3a60426a3287ec75d67721/aiohttp-3.12.14-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:02fcd3f69051467bbaa7f84d7ec3267478c7df18d68b2e28279116e29d18d4f3", size = 1626255, upload-time = "2025-07-10T13:02:57.343Z" }, + { url = "https://files.pythonhosted.org/packages/79/60/ec90782084090c4a6b459790cfd8d17be2c5662c9c4b2d21408b2f2dc36c/aiohttp-3.12.14-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:4dcd1172cd6794884c33e504d3da3c35648b8be9bfa946942d353b939d5f1288", size = 1637041, upload-time = "2025-07-10T13:02:59.008Z" }, + { url = "https://files.pythonhosted.org/packages/22/89/205d3ad30865c32bc472ac13f94374210745b05bd0f2856996cb34d53396/aiohttp-3.12.14-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:224d0da41355b942b43ad08101b1b41ce633a654128ee07e36d75133443adcda", size = 1612494, upload-time = "2025-07-10T13:03:00.618Z" }, + { url = "https://files.pythonhosted.org/packages/48/ae/2f66edaa8bd6db2a4cba0386881eb92002cdc70834e2a93d1d5607132c7e/aiohttp-3.12.14-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:e387668724f4d734e865c1776d841ed75b300ee61059aca0b05bce67061dcacc", size = 1692081, upload-time = "2025-07-10T13:03:02.154Z" }, + { url = "https://files.pythonhosted.org/packages/08/3a/fa73bfc6e21407ea57f7906a816f0dc73663d9549da703be05dbd76d2dc3/aiohttp-3.12.14-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:dec9cde5b5a24171e0b0a4ca064b1414950904053fb77c707efd876a2da525d8", size = 1715318, upload-time = "2025-07-10T13:03:04.322Z" }, + { url = "https://files.pythonhosted.org/packages/e3/b3/751124b8ceb0831c17960d06ee31a4732cb4a6a006fdbfa1153d07c52226/aiohttp-3.12.14-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:bbad68a2af4877cc103cd94af9160e45676fc6f0c14abb88e6e092b945c2c8e3", size = 1643660, upload-time = "2025-07-10T13:03:06.406Z" }, + { url = "https://files.pythonhosted.org/packages/81/3c/72477a1d34edb8ab8ce8013086a41526d48b64f77e381c8908d24e1c18f5/aiohttp-3.12.14-cp310-cp310-win32.whl", hash = "sha256:ee580cb7c00bd857b3039ebca03c4448e84700dc1322f860cf7a500a6f62630c", size = 428289, upload-time = "2025-07-10T13:03:08.274Z" }, + { url = "https://files.pythonhosted.org/packages/a2/c4/8aec4ccf1b822ec78e7982bd5cf971113ecce5f773f04039c76a083116fc/aiohttp-3.12.14-cp310-cp310-win_amd64.whl", hash = "sha256:cf4f05b8cea571e2ccc3ca744e35ead24992d90a72ca2cf7ab7a2efbac6716db", size = 451328, upload-time = "2025-07-10T13:03:10.146Z" }, + { url = "https://files.pythonhosted.org/packages/53/e1/8029b29316971c5fa89cec170274582619a01b3d82dd1036872acc9bc7e8/aiohttp-3.12.14-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f4552ff7b18bcec18b60a90c6982049cdb9dac1dba48cf00b97934a06ce2e597", size = 709960, upload-time = "2025-07-10T13:03:11.936Z" }, + { url = "https://files.pythonhosted.org/packages/96/bd/4f204cf1e282041f7b7e8155f846583b19149e0872752711d0da5e9cc023/aiohttp-3.12.14-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8283f42181ff6ccbcf25acaae4e8ab2ff7e92b3ca4a4ced73b2c12d8cd971393", size = 482235, upload-time = "2025-07-10T13:03:14.118Z" }, + { url = "https://files.pythonhosted.org/packages/d6/0f/2a580fcdd113fe2197a3b9df30230c7e85bb10bf56f7915457c60e9addd9/aiohttp-3.12.14-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:040afa180ea514495aaff7ad34ec3d27826eaa5d19812730fe9e529b04bb2179", size = 470501, upload-time = "2025-07-10T13:03:16.153Z" }, + { url = "https://files.pythonhosted.org/packages/38/78/2c1089f6adca90c3dd74915bafed6d6d8a87df5e3da74200f6b3a8b8906f/aiohttp-3.12.14-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b413c12f14c1149f0ffd890f4141a7471ba4b41234fe4fd4a0ff82b1dc299dbb", size = 1740696, upload-time = "2025-07-10T13:03:18.4Z" }, + { url = "https://files.pythonhosted.org/packages/4a/c8/ce6c7a34d9c589f007cfe064da2d943b3dee5aabc64eaecd21faf927ab11/aiohttp-3.12.14-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:1d6f607ce2e1a93315414e3d448b831238f1874b9968e1195b06efaa5c87e245", size = 1689365, upload-time = "2025-07-10T13:03:20.629Z" }, + { url = "https://files.pythonhosted.org/packages/18/10/431cd3d089de700756a56aa896faf3ea82bee39d22f89db7ddc957580308/aiohttp-3.12.14-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:565e70d03e924333004ed101599902bba09ebb14843c8ea39d657f037115201b", size = 1788157, upload-time = "2025-07-10T13:03:22.44Z" }, + { url = "https://files.pythonhosted.org/packages/fa/b2/26f4524184e0f7ba46671c512d4b03022633bcf7d32fa0c6f1ef49d55800/aiohttp-3.12.14-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4699979560728b168d5ab63c668a093c9570af2c7a78ea24ca5212c6cdc2b641", size = 1827203, upload-time = "2025-07-10T13:03:24.628Z" }, + { url = "https://files.pythonhosted.org/packages/e0/30/aadcdf71b510a718e3d98a7bfeaea2396ac847f218b7e8edb241b09bd99a/aiohttp-3.12.14-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad5fdf6af93ec6c99bf800eba3af9a43d8bfd66dce920ac905c817ef4a712afe", size = 1729664, upload-time = "2025-07-10T13:03:26.412Z" }, + { url = "https://files.pythonhosted.org/packages/67/7f/7ccf11756ae498fdedc3d689a0c36ace8fc82f9d52d3517da24adf6e9a74/aiohttp-3.12.14-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4ac76627c0b7ee0e80e871bde0d376a057916cb008a8f3ffc889570a838f5cc7", size = 1666741, upload-time = "2025-07-10T13:03:28.167Z" }, + { url = "https://files.pythonhosted.org/packages/6b/4d/35ebc170b1856dd020c92376dbfe4297217625ef4004d56587024dc2289c/aiohttp-3.12.14-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:798204af1180885651b77bf03adc903743a86a39c7392c472891649610844635", size = 1715013, upload-time = "2025-07-10T13:03:30.018Z" }, + { url = "https://files.pythonhosted.org/packages/7b/24/46dc0380146f33e2e4aa088b92374b598f5bdcde1718c77e8d1a0094f1a4/aiohttp-3.12.14-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:4f1205f97de92c37dd71cf2d5bcfb65fdaed3c255d246172cce729a8d849b4da", size = 1710172, upload-time = "2025-07-10T13:03:31.821Z" }, + { url = "https://files.pythonhosted.org/packages/2f/0a/46599d7d19b64f4d0fe1b57bdf96a9a40b5c125f0ae0d8899bc22e91fdce/aiohttp-3.12.14-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:76ae6f1dd041f85065d9df77c6bc9c9703da9b5c018479d20262acc3df97d419", size = 1690355, upload-time = "2025-07-10T13:03:34.754Z" }, + { url = "https://files.pythonhosted.org/packages/08/86/b21b682e33d5ca317ef96bd21294984f72379454e689d7da584df1512a19/aiohttp-3.12.14-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a194ace7bc43ce765338ca2dfb5661489317db216ea7ea700b0332878b392cab", size = 1783958, upload-time = "2025-07-10T13:03:36.53Z" }, + { url = "https://files.pythonhosted.org/packages/4f/45/f639482530b1396c365f23c5e3b1ae51c9bc02ba2b2248ca0c855a730059/aiohttp-3.12.14-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:16260e8e03744a6fe3fcb05259eeab8e08342c4c33decf96a9dad9f1187275d0", size = 1804423, upload-time = "2025-07-10T13:03:38.504Z" }, + { url = "https://files.pythonhosted.org/packages/7e/e5/39635a9e06eed1d73671bd4079a3caf9cf09a49df08490686f45a710b80e/aiohttp-3.12.14-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:8c779e5ebbf0e2e15334ea404fcce54009dc069210164a244d2eac8352a44b28", size = 1717479, upload-time = "2025-07-10T13:03:40.158Z" }, + { url = "https://files.pythonhosted.org/packages/51/e1/7f1c77515d369b7419c5b501196526dad3e72800946c0099594c1f0c20b4/aiohttp-3.12.14-cp311-cp311-win32.whl", hash = "sha256:a289f50bf1bd5be227376c067927f78079a7bdeccf8daa6a9e65c38bae14324b", size = 427907, upload-time = "2025-07-10T13:03:41.801Z" }, + { url = "https://files.pythonhosted.org/packages/06/24/a6bf915c85b7a5b07beba3d42b3282936b51e4578b64a51e8e875643c276/aiohttp-3.12.14-cp311-cp311-win_amd64.whl", hash = "sha256:0b8a69acaf06b17e9c54151a6c956339cf46db4ff72b3ac28516d0f7068f4ced", size = 452334, upload-time = "2025-07-10T13:03:43.485Z" }, + { url = "https://files.pythonhosted.org/packages/c3/0d/29026524e9336e33d9767a1e593ae2b24c2b8b09af7c2bd8193762f76b3e/aiohttp-3.12.14-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:a0ecbb32fc3e69bc25efcda7d28d38e987d007096cbbeed04f14a6662d0eee22", size = 701055, upload-time = "2025-07-10T13:03:45.59Z" }, + { url = "https://files.pythonhosted.org/packages/0a/b8/a5e8e583e6c8c1056f4b012b50a03c77a669c2e9bf012b7cf33d6bc4b141/aiohttp-3.12.14-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0400f0ca9bb3e0b02f6466421f253797f6384e9845820c8b05e976398ac1d81a", size = 475670, upload-time = "2025-07-10T13:03:47.249Z" }, + { url = "https://files.pythonhosted.org/packages/29/e8/5202890c9e81a4ec2c2808dd90ffe024952e72c061729e1d49917677952f/aiohttp-3.12.14-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a56809fed4c8a830b5cae18454b7464e1529dbf66f71c4772e3cfa9cbec0a1ff", size = 468513, upload-time = "2025-07-10T13:03:49.377Z" }, + { url = "https://files.pythonhosted.org/packages/23/e5/d11db8c23d8923d3484a27468a40737d50f05b05eebbb6288bafcb467356/aiohttp-3.12.14-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:27f2e373276e4755691a963e5d11756d093e346119f0627c2d6518208483fb6d", size = 1715309, upload-time = "2025-07-10T13:03:51.556Z" }, + { url = "https://files.pythonhosted.org/packages/53/44/af6879ca0eff7a16b1b650b7ea4a827301737a350a464239e58aa7c387ef/aiohttp-3.12.14-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:ca39e433630e9a16281125ef57ece6817afd1d54c9f1bf32e901f38f16035869", size = 1697961, upload-time = "2025-07-10T13:03:53.511Z" }, + { url = "https://files.pythonhosted.org/packages/bb/94/18457f043399e1ec0e59ad8674c0372f925363059c276a45a1459e17f423/aiohttp-3.12.14-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9c748b3f8b14c77720132b2510a7d9907a03c20ba80f469e58d5dfd90c079a1c", size = 1753055, upload-time = "2025-07-10T13:03:55.368Z" }, + { url = "https://files.pythonhosted.org/packages/26/d9/1d3744dc588fafb50ff8a6226d58f484a2242b5dd93d8038882f55474d41/aiohttp-3.12.14-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f0a568abe1b15ce69d4cc37e23020720423f0728e3cb1f9bcd3f53420ec3bfe7", size = 1799211, upload-time = "2025-07-10T13:03:57.216Z" }, + { url = "https://files.pythonhosted.org/packages/73/12/2530fb2b08773f717ab2d249ca7a982ac66e32187c62d49e2c86c9bba9b4/aiohttp-3.12.14-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9888e60c2c54eaf56704b17feb558c7ed6b7439bca1e07d4818ab878f2083660", size = 1718649, upload-time = "2025-07-10T13:03:59.469Z" }, + { url = "https://files.pythonhosted.org/packages/b9/34/8d6015a729f6571341a311061b578e8b8072ea3656b3d72329fa0faa2c7c/aiohttp-3.12.14-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3006a1dc579b9156de01e7916d38c63dc1ea0679b14627a37edf6151bc530088", size = 1634452, upload-time = "2025-07-10T13:04:01.698Z" }, + { url = "https://files.pythonhosted.org/packages/ff/4b/08b83ea02595a582447aeb0c1986792d0de35fe7a22fb2125d65091cbaf3/aiohttp-3.12.14-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:aa8ec5c15ab80e5501a26719eb48a55f3c567da45c6ea5bb78c52c036b2655c7", size = 1695511, upload-time = "2025-07-10T13:04:04.165Z" }, + { url = "https://files.pythonhosted.org/packages/b5/66/9c7c31037a063eec13ecf1976185c65d1394ded4a5120dd5965e3473cb21/aiohttp-3.12.14-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:39b94e50959aa07844c7fe2206b9f75d63cc3ad1c648aaa755aa257f6f2498a9", size = 1716967, upload-time = "2025-07-10T13:04:06.132Z" }, + { url = "https://files.pythonhosted.org/packages/ba/02/84406e0ad1acb0fb61fd617651ab6de760b2d6a31700904bc0b33bd0894d/aiohttp-3.12.14-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:04c11907492f416dad9885d503fbfc5dcb6768d90cad8639a771922d584609d3", size = 1657620, upload-time = "2025-07-10T13:04:07.944Z" }, + { url = "https://files.pythonhosted.org/packages/07/53/da018f4013a7a179017b9a274b46b9a12cbeb387570f116964f498a6f211/aiohttp-3.12.14-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:88167bd9ab69bb46cee91bd9761db6dfd45b6e76a0438c7e884c3f8160ff21eb", size = 1737179, upload-time = "2025-07-10T13:04:10.182Z" }, + { url = "https://files.pythonhosted.org/packages/49/e8/ca01c5ccfeaafb026d85fa4f43ceb23eb80ea9c1385688db0ef322c751e9/aiohttp-3.12.14-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:791504763f25e8f9f251e4688195e8b455f8820274320204f7eafc467e609425", size = 1765156, upload-time = "2025-07-10T13:04:12.029Z" }, + { url = "https://files.pythonhosted.org/packages/22/32/5501ab525a47ba23c20613e568174d6c63aa09e2caa22cded5c6ea8e3ada/aiohttp-3.12.14-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2785b112346e435dd3a1a67f67713a3fe692d288542f1347ad255683f066d8e0", size = 1724766, upload-time = "2025-07-10T13:04:13.961Z" }, + { url = "https://files.pythonhosted.org/packages/06/af/28e24574801fcf1657945347ee10df3892311c2829b41232be6089e461e7/aiohttp-3.12.14-cp312-cp312-win32.whl", hash = "sha256:15f5f4792c9c999a31d8decf444e79fcfd98497bf98e94284bf390a7bb8c1729", size = 422641, upload-time = "2025-07-10T13:04:16.018Z" }, + { url = "https://files.pythonhosted.org/packages/98/d5/7ac2464aebd2eecac38dbe96148c9eb487679c512449ba5215d233755582/aiohttp-3.12.14-cp312-cp312-win_amd64.whl", hash = "sha256:3b66e1a182879f579b105a80d5c4bd448b91a57e8933564bf41665064796a338", size = 449316, upload-time = "2025-07-10T13:04:18.289Z" }, + { url = "https://files.pythonhosted.org/packages/06/48/e0d2fa8ac778008071e7b79b93ab31ef14ab88804d7ba71b5c964a7c844e/aiohttp-3.12.14-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:3143a7893d94dc82bc409f7308bc10d60285a3cd831a68faf1aa0836c5c3c767", size = 695471, upload-time = "2025-07-10T13:04:20.124Z" }, + { url = "https://files.pythonhosted.org/packages/8d/e7/f73206afa33100804f790b71092888f47df65fd9a4cd0e6800d7c6826441/aiohttp-3.12.14-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:3d62ac3d506cef54b355bd34c2a7c230eb693880001dfcda0bf88b38f5d7af7e", size = 473128, upload-time = "2025-07-10T13:04:21.928Z" }, + { url = "https://files.pythonhosted.org/packages/df/e2/4dd00180be551a6e7ee979c20fc7c32727f4889ee3fd5b0586e0d47f30e1/aiohttp-3.12.14-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:48e43e075c6a438937c4de48ec30fa8ad8e6dfef122a038847456bfe7b947b63", size = 465426, upload-time = "2025-07-10T13:04:24.071Z" }, + { url = "https://files.pythonhosted.org/packages/de/dd/525ed198a0bb674a323e93e4d928443a680860802c44fa7922d39436b48b/aiohttp-3.12.14-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:077b4488411a9724cecc436cbc8c133e0d61e694995b8de51aaf351c7578949d", size = 1704252, upload-time = "2025-07-10T13:04:26.049Z" }, + { url = "https://files.pythonhosted.org/packages/d8/b1/01e542aed560a968f692ab4fc4323286e8bc4daae83348cd63588e4f33e3/aiohttp-3.12.14-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:d8c35632575653f297dcbc9546305b2c1133391089ab925a6a3706dfa775ccab", size = 1685514, upload-time = "2025-07-10T13:04:28.186Z" }, + { url = "https://files.pythonhosted.org/packages/b3/06/93669694dc5fdabdc01338791e70452d60ce21ea0946a878715688d5a191/aiohttp-3.12.14-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6b8ce87963f0035c6834b28f061df90cf525ff7c9b6283a8ac23acee6502afd4", size = 1737586, upload-time = "2025-07-10T13:04:30.195Z" }, + { url = "https://files.pythonhosted.org/packages/a5/3a/18991048ffc1407ca51efb49ba8bcc1645961f97f563a6c480cdf0286310/aiohttp-3.12.14-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f0a2cf66e32a2563bb0766eb24eae7e9a269ac0dc48db0aae90b575dc9583026", size = 1786958, upload-time = "2025-07-10T13:04:32.482Z" }, + { url = "https://files.pythonhosted.org/packages/30/a8/81e237f89a32029f9b4a805af6dffc378f8459c7b9942712c809ff9e76e5/aiohttp-3.12.14-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdea089caf6d5cde975084a884c72d901e36ef9c2fd972c9f51efbbc64e96fbd", size = 1709287, upload-time = "2025-07-10T13:04:34.493Z" }, + { url = "https://files.pythonhosted.org/packages/8c/e3/bd67a11b0fe7fc12c6030473afd9e44223d456f500f7cf526dbaa259ae46/aiohttp-3.12.14-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8a7865f27db67d49e81d463da64a59365ebd6b826e0e4847aa111056dcb9dc88", size = 1622990, upload-time = "2025-07-10T13:04:36.433Z" }, + { url = "https://files.pythonhosted.org/packages/83/ba/e0cc8e0f0d9ce0904e3cf2d6fa41904e379e718a013c721b781d53dcbcca/aiohttp-3.12.14-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0ab5b38a6a39781d77713ad930cb5e7feea6f253de656a5f9f281a8f5931b086", size = 1676015, upload-time = "2025-07-10T13:04:38.958Z" }, + { url = "https://files.pythonhosted.org/packages/d8/b3/1e6c960520bda094c48b56de29a3d978254637ace7168dd97ddc273d0d6c/aiohttp-3.12.14-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:9b3b15acee5c17e8848d90a4ebc27853f37077ba6aec4d8cb4dbbea56d156933", size = 1707678, upload-time = "2025-07-10T13:04:41.275Z" }, + { url = "https://files.pythonhosted.org/packages/0a/19/929a3eb8c35b7f9f076a462eaa9830b32c7f27d3395397665caa5e975614/aiohttp-3.12.14-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:e4c972b0bdaac167c1e53e16a16101b17c6d0ed7eac178e653a07b9f7fad7151", size = 1650274, upload-time = "2025-07-10T13:04:43.483Z" }, + { url = "https://files.pythonhosted.org/packages/22/e5/81682a6f20dd1b18ce3d747de8eba11cbef9b270f567426ff7880b096b48/aiohttp-3.12.14-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:7442488b0039257a3bdbc55f7209587911f143fca11df9869578db6c26feeeb8", size = 1726408, upload-time = "2025-07-10T13:04:45.577Z" }, + { url = "https://files.pythonhosted.org/packages/8c/17/884938dffaa4048302985483f77dfce5ac18339aad9b04ad4aaa5e32b028/aiohttp-3.12.14-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:f68d3067eecb64c5e9bab4a26aa11bd676f4c70eea9ef6536b0a4e490639add3", size = 1759879, upload-time = "2025-07-10T13:04:47.663Z" }, + { url = "https://files.pythonhosted.org/packages/95/78/53b081980f50b5cf874359bde707a6eacd6c4be3f5f5c93937e48c9d0025/aiohttp-3.12.14-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f88d3704c8b3d598a08ad17d06006cb1ca52a1182291f04979e305c8be6c9758", size = 1708770, upload-time = "2025-07-10T13:04:49.944Z" }, + { url = "https://files.pythonhosted.org/packages/ed/91/228eeddb008ecbe3ffa6c77b440597fdf640307162f0c6488e72c5a2d112/aiohttp-3.12.14-cp313-cp313-win32.whl", hash = "sha256:a3c99ab19c7bf375c4ae3debd91ca5d394b98b6089a03231d4c580ef3c2ae4c5", size = 421688, upload-time = "2025-07-10T13:04:51.993Z" }, + { url = "https://files.pythonhosted.org/packages/66/5f/8427618903343402fdafe2850738f735fd1d9409d2a8f9bcaae5e630d3ba/aiohttp-3.12.14-cp313-cp313-win_amd64.whl", hash = "sha256:3f8aad695e12edc9d571f878c62bedc91adf30c760c8632f09663e5f564f4baa", size = 448098, upload-time = "2025-07-10T13:04:53.999Z" }, + { url = "https://files.pythonhosted.org/packages/cf/54/8a65095784f5c8b2a60a8baa2baabb15b8d507efb0911d59f94af04ba908/aiohttp-3.12.14-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b8cc6b05e94d837bcd71c6531e2344e1ff0fb87abe4ad78a9261d67ef5d83eae", size = 705553, upload-time = "2025-07-10T13:04:56.475Z" }, + { url = "https://files.pythonhosted.org/packages/d0/23/65a82d33841c790178aed8aa6b5e720e37f08bdf7256936fa3bc86f03257/aiohttp-3.12.14-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d1dcb015ac6a3b8facd3677597edd5ff39d11d937456702f0bb2b762e390a21b", size = 480529, upload-time = "2025-07-10T13:04:58.524Z" }, + { url = "https://files.pythonhosted.org/packages/10/66/9d51ec40613aca2f38d6ac527b592686a302197109aa1c0fe045040835ec/aiohttp-3.12.14-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3779ed96105cd70ee5e85ca4f457adbce3d9ff33ec3d0ebcdf6c5727f26b21b3", size = 467929, upload-time = "2025-07-10T13:05:00.815Z" }, + { url = "https://files.pythonhosted.org/packages/48/9e/2f14e4780a461351325d7821fb64e9107189315dd8f6e8a67e7afdbf875c/aiohttp-3.12.14-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:717a0680729b4ebd7569c1dcd718c46b09b360745fd8eb12317abc74b14d14d0", size = 1642894, upload-time = "2025-07-10T13:05:02.966Z" }, + { url = "https://files.pythonhosted.org/packages/b8/26/26ef03e6cc4b7fb275eaa76b33c128f72729e8833e512b6770f877560b6e/aiohttp-3.12.14-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b5dd3a2ef7c7e968dbbac8f5574ebeac4d2b813b247e8cec28174a2ba3627170", size = 1617388, upload-time = "2025-07-10T13:05:05.035Z" }, + { url = "https://files.pythonhosted.org/packages/68/cf/fffc2a9edacbd475cfb508075bad052426ce0b9100f1045536ee1b683872/aiohttp-3.12.14-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4710f77598c0092239bc12c1fcc278a444e16c7032d91babf5abbf7166463f7b", size = 1691015, upload-time = "2025-07-10T13:05:07.223Z" }, + { url = "https://files.pythonhosted.org/packages/0b/c5/bb8b29ef079d3ecb5960ec1b547b56bc52ee5ffc43c8a30ef21f9afeb67b/aiohttp-3.12.14-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f3e9f75ae842a6c22a195d4a127263dbf87cbab729829e0bd7857fb1672400b2", size = 1730330, upload-time = "2025-07-10T13:05:09.393Z" }, + { url = "https://files.pythonhosted.org/packages/09/0d/d18e2d2754497bf91b9559425e8c4286af61bdbe42d49c43d955c7269680/aiohttp-3.12.14-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f9c8d55d6802086edd188e3a7d85a77787e50d56ce3eb4757a3205fa4657922", size = 1636573, upload-time = "2025-07-10T13:05:11.796Z" }, + { url = "https://files.pythonhosted.org/packages/33/c8/2c32cd25deb9f590cb8d50ff33fb3bb2cc8d1761958989f6f64cf00ef1cb/aiohttp-3.12.14-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:79b29053ff3ad307880d94562cca80693c62062a098a5776ea8ef5ef4b28d140", size = 1571573, upload-time = "2025-07-10T13:05:14.216Z" }, + { url = "https://files.pythonhosted.org/packages/0f/36/1b36ae47b9d6afdd39072373bb7157b464996376d562d3c50950ddf6d10e/aiohttp-3.12.14-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:23e1332fff36bebd3183db0c7a547a1da9d3b4091509f6d818e098855f2f27d3", size = 1619535, upload-time = "2025-07-10T13:05:16.292Z" }, + { url = "https://files.pythonhosted.org/packages/2b/e8/6864b7812351821168e80ca102d7fa244a78fefe9690995a40e8b5c19f4b/aiohttp-3.12.14-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:a564188ce831fd110ea76bcc97085dd6c625b427db3f1dbb14ca4baa1447dcbc", size = 1629672, upload-time = "2025-07-10T13:05:18.548Z" }, + { url = "https://files.pythonhosted.org/packages/9b/55/f90e3eb25330f8a564a6e6b4d3cc15d3630bd28b0795a025e397e3279411/aiohttp-3.12.14-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:a7a1b4302f70bb3ec40ca86de82def532c97a80db49cac6a6700af0de41af5ee", size = 1606317, upload-time = "2025-07-10T13:05:20.856Z" }, + { url = "https://files.pythonhosted.org/packages/1b/f7/39c3570434bb7e81601155ba71327735b26548473cca2d5c7f5badabb140/aiohttp-3.12.14-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:1b07ccef62950a2519f9bfc1e5b294de5dd84329f444ca0b329605ea787a3de5", size = 1693913, upload-time = "2025-07-10T13:05:22.951Z" }, + { url = "https://files.pythonhosted.org/packages/46/0d/caee8733fbe511c34a54e93ee26c4b8d505e12785444d31f772a610df7ab/aiohttp-3.12.14-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:938bd3ca6259e7e48b38d84f753d548bd863e0c222ed6ee6ace3fd6752768a84", size = 1709592, upload-time = "2025-07-10T13:05:25.587Z" }, + { url = "https://files.pythonhosted.org/packages/24/f3/5d21196abf74dee66c5809e764cc27a2275e54c9355019c21be3bf77dd77/aiohttp-3.12.14-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:8bc784302b6b9f163b54c4e93d7a6f09563bd01ff2b841b29ed3ac126e5040bf", size = 1639262, upload-time = "2025-07-10T13:05:27.782Z" }, + { url = "https://files.pythonhosted.org/packages/54/bb/b4226f4fd0597d5245f284d10be48bf1ef610ab4f57d4239686fb03d1814/aiohttp-3.12.14-cp39-cp39-win32.whl", hash = "sha256:a3416f95961dd7d5393ecff99e3f41dc990fb72eda86c11f2a60308ac6dcd7a0", size = 429202, upload-time = "2025-07-10T13:05:29.78Z" }, + { url = "https://files.pythonhosted.org/packages/a0/c0/2f1cefb7b077bf5c19f01bdf0d82b89de0bf2801b441eda23ada0b8966ac/aiohttp-3.12.14-cp39-cp39-win_amd64.whl", hash = "sha256:196858b8820d7f60578f8b47e5669b3195c21d8ab261e39b1d705346458f445f", size = 452436, upload-time = "2025-07-10T13:05:31.77Z" }, +] + +[[package]] +name = "aiohttp-cors" +version = "0.8.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aiohttp" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/d89e846a5444b3d5eb8985a6ddb0daef3774928e1bfbce8e84ec97b0ffa7/aiohttp_cors-0.8.1.tar.gz", hash = "sha256:ccacf9cb84b64939ea15f859a146af1f662a6b1d68175754a07315e305fb1403", size = 38626, upload-time = "2025-03-31T14:16:20.048Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/98/3b/40a68de458904bcc143622015fff2352b6461cd92fd66d3527bf1c6f5716/aiohttp_cors-0.8.1-py3-none-any.whl", hash = "sha256:3180cf304c5c712d626b9162b195b1db7ddf976a2a25172b35bb2448b890a80d", size = 25231, upload-time = "2025-03-31T14:16:18.478Z" }, +] + +[[package]] +name = "aiosignal" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "frozenlist" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/61/62/06741b579156360248d1ec624842ad0edf697050bbaf7c3e46394e106ad1/aiosignal-1.4.0.tar.gz", hash = "sha256:f47eecd9468083c2029cc99945502cb7708b082c232f9aca65da147157b251c7", size = 25007, upload-time = "2025-07-03T22:54:43.528Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fb/76/641ae371508676492379f16e2fa48f4e2c11741bd63c48be4b12a6b09cba/aiosignal-1.4.0-py3-none-any.whl", hash = "sha256:053243f8b92b990551949e63930a839ff0cf0b0ebbe0597b0f3fb19e1a0fe82e", size = 7490, upload-time = "2025-07-03T22:54:42.156Z" }, +] + +[[package]] +name = "annotated-types" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload-time = "2024-05-20T21:33:25.928Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, +] + +[[package]] +name = "anyio" +version = "4.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, + { name = "idna" }, + { name = "sniffio" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/95/7d/4c1bd541d4dffa1b52bd83fb8527089e097a106fc90b467a7313b105f840/anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028", size = 190949, upload-time = "2025-03-17T00:02:54.77Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a1/ee/48ca1a7c89ffec8b6a0c5d02b89c305671d5ffd8d3c94acf8b8c408575bb/anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c", size = 100916, upload-time = "2025-03-17T00:02:52.713Z" }, ] [[package]] @@ -25,6 +194,52 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321, upload-time = "2024-02-06T09:43:09.663Z" }, ] +[[package]] +name = "argon2-cffi" +version = "25.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "argon2-cffi-bindings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0e/89/ce5af8a7d472a67cc819d5d998aa8c82c5d860608c4db9f46f1162d7dab9/argon2_cffi-25.1.0.tar.gz", hash = "sha256:694ae5cc8a42f4c4e2bf2ca0e64e51e23a040c6a517a85074683d3959e1346c1", size = 45706, upload-time = "2025-06-03T06:55:32.073Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4f/d3/a8b22fa575b297cd6e3e3b0155c7e25db170edf1c74783d6a31a2490b8d9/argon2_cffi-25.1.0-py3-none-any.whl", hash = "sha256:fdc8b074db390fccb6eb4a3604ae7231f219aa669a2652e0f20e16ba513d5741", size = 14657, upload-time = "2025-06-03T06:55:30.804Z" }, +] + +[[package]] +name = "argon2-cffi-bindings" +version = "21.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b9/e9/184b8ccce6683b0aa2fbb7ba5683ea4b9c5763f1356347f1312c32e3c66e/argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3", size = 1779911, upload-time = "2021-12-01T08:52:55.68Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d4/13/838ce2620025e9666aa8f686431f67a29052241692a3dd1ae9d3692a89d3/argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367", size = 29658, upload-time = "2021-12-01T09:09:17.016Z" }, + { url = "https://files.pythonhosted.org/packages/b3/02/f7f7bb6b6af6031edb11037639c697b912e1dea2db94d436e681aea2f495/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d", size = 80583, upload-time = "2021-12-01T09:09:19.546Z" }, + { url = "https://files.pythonhosted.org/packages/ec/f7/378254e6dd7ae6f31fe40c8649eea7d4832a42243acaf0f1fff9083b2bed/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae", size = 86168, upload-time = "2021-12-01T09:09:21.445Z" }, + { url = "https://files.pythonhosted.org/packages/74/f6/4a34a37a98311ed73bb80efe422fed95f2ac25a4cacc5ae1d7ae6a144505/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c", size = 82709, upload-time = "2021-12-01T09:09:18.182Z" }, + { url = "https://files.pythonhosted.org/packages/74/2b/73d767bfdaab25484f7e7901379d5f8793cccbb86c6e0cbc4c1b96f63896/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86", size = 83613, upload-time = "2021-12-01T09:09:22.741Z" }, + { url = "https://files.pythonhosted.org/packages/4f/fd/37f86deef67ff57c76f137a67181949c2d408077e2e3dd70c6c42912c9bf/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f", size = 84583, upload-time = "2021-12-01T09:09:24.177Z" }, + { url = "https://files.pythonhosted.org/packages/6f/52/5a60085a3dae8fded8327a4f564223029f5f54b0cb0455a31131b5363a01/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e", size = 88475, upload-time = "2021-12-01T09:09:26.673Z" }, + { url = "https://files.pythonhosted.org/packages/8b/95/143cd64feb24a15fa4b189a3e1e7efbaeeb00f39a51e99b26fc62fbacabd/argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082", size = 27698, upload-time = "2021-12-01T09:09:27.87Z" }, + { url = "https://files.pythonhosted.org/packages/37/2c/e34e47c7dee97ba6f01a6203e0383e15b60fb85d78ac9a15cd066f6fe28b/argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f", size = 30817, upload-time = "2021-12-01T09:09:30.267Z" }, + { url = "https://files.pythonhosted.org/packages/5a/e4/bf8034d25edaa495da3c8a3405627d2e35758e44ff6eaa7948092646fdcc/argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93", size = 53104, upload-time = "2021-12-01T09:09:31.335Z" }, +] + +[[package]] +name = "arrow" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil" }, + { name = "types-python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2e/00/0f6e8fcdb23ea632c866620cc872729ff43ed91d284c866b515c6342b173/arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85", size = 131960, upload-time = "2023-09-30T22:11:18.25Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/ed/e97229a566617f2ae958a6b13e7cc0f585470eac730a73e9e82c32a3cdd2/arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80", size = 66419, upload-time = "2023-09-30T22:11:16.072Z" }, +] + [[package]] name = "asttokens" version = "3.0.0" @@ -34,6 +249,45 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2", size = 26918, upload-time = "2024-11-30T04:30:10.946Z" }, ] +[[package]] +name = "async-lru" +version = "2.0.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b2/4d/71ec4d3939dc755264f680f6c2b4906423a304c3d18e96853f0a595dfe97/async_lru-2.0.5.tar.gz", hash = "sha256:481d52ccdd27275f42c43a928b4a50c3bfb2d67af4e78b170e3e0bb39c66e5bb", size = 10380, upload-time = "2025-03-16T17:25:36.919Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/03/49/d10027df9fce941cb8184e78a02857af36360d33e1721df81c5ed2179a1a/async_lru-2.0.5-py3-none-any.whl", hash = "sha256:ab95404d8d2605310d345932697371a5f40def0487c03d6d0ad9138de52c9943", size = 6069, upload-time = "2025-03-16T17:25:35.422Z" }, +] + +[[package]] +name = "async-timeout" +version = "5.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a5/ae/136395dfbfe00dfc94da3f3e136d0b13f394cba8f4841120e34226265780/async_timeout-5.0.1.tar.gz", hash = "sha256:d9321a7a3d5a6a5e187e824d2fa0793ce379a202935782d555d6e9d2735677d3", size = 9274, upload-time = "2024-11-06T16:41:39.6Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fe/ba/e2081de779ca30d473f21f5b30e0e737c438205440784c7dfc81efc2b029/async_timeout-5.0.1-py3-none-any.whl", hash = "sha256:39e3809566ff85354557ec2398b55e096c8364bacac9405a7a1fa429e77fe76c", size = 6233, upload-time = "2024-11-06T16:41:37.9Z" }, +] + +[[package]] +name = "attrs" +version = "25.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032, upload-time = "2025-03-13T11:10:22.779Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815, upload-time = "2025-03-13T11:10:21.14Z" }, +] + +[[package]] +name = "babel" +version = "2.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852, upload-time = "2025-02-01T15:17:41.026Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537, upload-time = "2025-02-01T15:17:37.39Z" }, +] + [[package]] name = "bcrypt" version = "4.3.0" @@ -92,6 +346,36 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/63/13/47bba97924ebe86a62ef83dc75b7c8a881d53c535f83e2c54c4bd701e05c/bcrypt-4.3.0-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:57967b7a28d855313a963aaea51bf6df89f833db4320da458e5b3c5ab6d4c938", size = 280110, upload-time = "2025-02-28T01:24:05.896Z" }, ] +[[package]] +name = "beautifulsoup4" +version = "4.13.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "soupsieve" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d8/e4/0c4c39e18fd76d6a628d4dd8da40543d136ce2d1752bd6eeeab0791f4d6b/beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195", size = 621067, upload-time = "2025-04-15T17:05:13.836Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/50/cd/30110dc0ffcf3b131156077b90e9f60ed75711223f306da4db08eff8403b/beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b", size = 187285, upload-time = "2025-04-15T17:05:12.221Z" }, +] + +[[package]] +name = "bleach" +version = "6.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "webencodings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/76/9a/0e33f5054c54d349ea62c277191c020c2d6ef1d65ab2cb1993f91ec846d1/bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f", size = 203083, upload-time = "2024-10-29T18:30:40.477Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fc/55/96142937f66150805c25c4d0f31ee4132fd33497753400734f9dfdcbdc66/bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e", size = 163406, upload-time = "2024-10-29T18:30:38.186Z" }, +] + +[package.optional-dependencies] +css = [ + { name = "tinycss2" }, +] + [[package]] name = "blosc2" version = "2.5.1" @@ -99,7 +383,8 @@ source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", ] dependencies = [ { name = "msgpack", marker = "python_full_version < '3.10'" }, @@ -144,13 +429,20 @@ name = "blosc2" version = "3.5.1" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.12' and sys_platform == 'darwin'", - "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -188,6 +480,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b1/f0/55b5090c8fb6e9a12810cf141cd59875718148a78f62a4da818045f7e4b6/blosc2-3.5.1-cp313-cp313-win_amd64.whl", hash = "sha256:9d36c4a8489c0f8719040a7543918e2701821340b8643d508c450d0d012259bf", size = 2213487, upload-time = "2025-07-02T11:47:15.297Z" }, ] +[[package]] +name = "cachetools" +version = "5.5.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/81/3747dad6b14fa2cf53fcf10548cf5aea6913e96fab41a3c198676f8948a5/cachetools-5.5.2.tar.gz", hash = "sha256:1a661caa9175d26759571b2e19580f9d6393969e5dfca11fdb1f947a23e640d4", size = 28380, upload-time = "2025-02-20T21:01:19.524Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/72/76/20fa66124dbe6be5cafeb312ece67de6b61dd91a0247d1ea13db4ebb33c2/cachetools-5.5.2-py3-none-any.whl", hash = "sha256:d26a22bcc62eb95c3beabd9f1ee5e820d3d2704fe2967cbe350e20c8ffcd3f0a", size = 10080, upload-time = "2025-02-20T21:01:16.647Z" }, +] + [[package]] name = "certifi" version = "2025.7.9" @@ -266,6 +567,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/8c/52/b08750ce0bce45c143e1b5d7357ee8c55341b52bdef4b0f081af1eb248c2/cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662", size = 181290, upload-time = "2024-09-04T20:45:20.226Z" }, ] +[[package]] +name = "cfgv" +version = "3.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/11/74/539e56497d9bd1d484fd863dd69cbbfa653cd2aa27abfe35653494d85e94/cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560", size = 7114, upload-time = "2023-08-12T20:38:17.776Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c5/55/51844dd50c4fc7a33b653bfaba4c2456f06955289ca770a5dbd5fd267374/cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9", size = 7249, upload-time = "2023-08-12T20:38:16.269Z" }, +] + [[package]] name = "charset-normalizer" version = "3.4.2" @@ -340,6 +650,54 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626, upload-time = "2025-05-02T08:34:40.053Z" }, ] +[[package]] +name = "click" +version = "8.1.8" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", + "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "colorama", marker = "python_full_version < '3.10' and sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593, upload-time = "2024-12-21T18:38:44.339Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2", size = 98188, upload-time = "2024-12-21T18:38:41.666Z" }, +] + +[[package]] +name = "click" +version = "8.2.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "colorama", marker = "python_full_version >= '3.10' and sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202", size = 286342, upload-time = "2025-05-20T23:19:49.832Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b", size = 102215, upload-time = "2025-05-20T23:19:47.796Z" }, +] + [[package]] name = "colorama" version = "0.4.6" @@ -349,6 +707,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, ] +[[package]] +name = "colorful" +version = "0.5.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0c/0c/d180ebf230b771907f46981023a80f62cf592d49673cc5f8a5993aa67bb6/colorful-0.5.7.tar.gz", hash = "sha256:c5452179b56601c178b03d468a5326cc1fe37d9be81d24d0d6bdab36c4b93ad8", size = 209487, upload-time = "2025-06-30T15:24:03.936Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e2/98/0d791b3d1eaed89d7d370b5cf9b8079b124da0545559417f394ba21b5532/colorful-0.5.7-py2.py3-none-any.whl", hash = "sha256:495dd3a23151a9568cee8a90fc1174c902ad7ef06655f50b6bddf9e80008da69", size = 201475, upload-time = "2025-06-30T15:24:02.693Z" }, +] + [[package]] name = "comm" version = "0.2.2" @@ -368,7 +738,8 @@ source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", ] dependencies = [ { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, @@ -446,13 +817,20 @@ name = "contourpy" version = "1.3.2" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.12' and sys_platform == 'darwin'", - "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -614,6 +992,24 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190, upload-time = "2025-02-24T04:41:32.565Z" }, ] +[[package]] +name = "defusedxml" +version = "0.7.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520, upload-time = "2021-03-08T10:59:26.269Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604, upload-time = "2021-03-08T10:59:24.45Z" }, +] + +[[package]] +name = "distlib" +version = "0.3.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0d/dd/1bec4c5ddb504ca60fc29472f3d27e8d4da1257a854e1d96742f15c1d02d/distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403", size = 613923, upload-time = "2024-10-09T18:35:47.551Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/91/a1/cf2472db20f7ce4a6be1253a81cfdf85ad9c7885ffbed7047fb72c24cf87/distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87", size = 468973, upload-time = "2024-10-09T18:35:44.272Z" }, +] + [[package]] name = "exceptiongroup" version = "1.3.0" @@ -635,6 +1031,102 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa", size = 26702, upload-time = "2025-01-22T15:41:25.929Z" }, ] +[[package]] +name = "faith" +version = "0.0.1a0" +source = { editable = "." } +dependencies = [ + { name = "h5py" }, + { name = "ipykernel" }, + { name = "ipywidgets" }, + { name = "jupyter" }, + { name = "lightning" }, + { name = "matplotlib", version = "3.9.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "matplotlib", version = "3.10.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "pandas" }, + { name = "paramiko" }, + { name = "pyyaml" }, + { name = "ray", extra = ["data", "serve", "train", "tune"] }, + { name = "scikit-learn", version = "1.6.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "scikit-learn", version = "1.7.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "scipy", version = "1.13.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "scipy", version = "1.16.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "seaborn" }, + { name = "tables", version = "3.9.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "tables", version = "3.10.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "tables", version = "3.10.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "torch", version = "2.7.1", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version >= '3.10' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, + { name = "torch", version = "2.7.1+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64') or platform_machine == 'x86_64' or sys_platform != 'darwin'" }, + { name = "torchaudio" }, + { name = "torchmetrics" }, + { name = "torchvision", version = "0.22.1", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version >= '3.10' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin') or (platform_machine == 'aarch64' and sys_platform == 'linux')" }, + { name = "torchvision", version = "0.22.1+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (platform_machine == 'x86_64' and sys_platform == 'darwin') or (platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "tqdm" }, +] + +[package.dev-dependencies] +dev = [ + { name = "pre-commit" }, + { name = "pytest" }, +] + +[package.metadata] +requires-dist = [ + { name = "h5py" }, + { name = "ipykernel" }, + { name = "ipywidgets" }, + { name = "jupyter" }, + { name = "lightning" }, + { name = "matplotlib" }, + { name = "numpy" }, + { name = "pandas" }, + { name = "paramiko" }, + { name = "pyyaml" }, + { name = "ray", extras = ["data", "train", "tune", "serve"] }, + { name = "scikit-learn" }, + { name = "scipy" }, + { name = "seaborn" }, + { name = "tables" }, + { name = "torch", index = "https://download.pytorch.org/whl/cpu" }, + { name = "torchaudio" }, + { name = "torchmetrics" }, + { name = "torchvision", index = "https://download.pytorch.org/whl/cpu" }, + { name = "tqdm" }, +] + +[package.metadata.requires-dev] +dev = [ + { name = "pre-commit" }, + { name = "pytest", specifier = ">=8.1.1,<9" }, +] + +[[package]] +name = "fastapi" +version = "0.116.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pydantic" }, + { name = "starlette" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/78/d7/6c8b3bfe33eeffa208183ec037fee0cce9f7f024089ab1c5d12ef04bd27c/fastapi-0.116.1.tar.gz", hash = "sha256:ed52cbf946abfd70c5a0dccb24673f0670deeb517a88b3544d03c2a6bf283143", size = 296485, upload-time = "2025-07-11T16:22:32.057Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/47/d63c60f59a59467fda0f93f46335c9d18526d7071f025cb5b89d5353ea42/fastapi-0.116.1-py3-none-any.whl", hash = "sha256:c46ac7c312df840f0c9e220f7964bada936781bc4e2e6eb71f1c4d7553786565", size = 95631, upload-time = "2025-07-11T16:22:30.485Z" }, +] + +[[package]] +name = "fastjsonschema" +version = "2.21.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8b/50/4b769ce1ac4071a1ef6d86b1a3fb56cdc3a37615e8c5519e1af96cdac366/fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4", size = 373939, upload-time = "2024-12-02T10:55:15.133Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/90/2b/0817a2b257fe88725c25589d89aec060581aabf668707a8d03b2e9e0cb2a/fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667", size = 23924, upload-time = "2024-12-02T10:55:07.599Z" }, +] + [[package]] name = "filelock" version = "3.18.0" @@ -693,6 +1185,126 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d7/d4/1d85a1996b6188cd2713230e002d79a6f3a289bb17cef600cba385848b72/fonttools-4.58.5-py3-none-any.whl", hash = "sha256:e48a487ed24d9b611c5c4b25db1e50e69e9854ca2670e39a3486ffcd98863ec4", size = 1115318, upload-time = "2025-07-03T14:04:45.378Z" }, ] +[[package]] +name = "fqdn" +version = "1.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/30/3e/a80a8c077fd798951169626cde3e239adeba7dab75deb3555716415bd9b0/fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f", size = 6015, upload-time = "2021-03-11T07:16:29.08Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cf/58/8acf1b3e91c58313ce5cb67df61001fc9dcd21be4fadb76c1a2d540e09ed/fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014", size = 9121, upload-time = "2021-03-11T07:16:28.351Z" }, +] + +[[package]] +name = "frozenlist" +version = "1.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/79/b1/b64018016eeb087db503b038296fd782586432b9c077fc5c7839e9cb6ef6/frozenlist-1.7.0.tar.gz", hash = "sha256:2e310d81923c2437ea8670467121cc3e9b0f76d3043cc1d2331d56c7fb7a3a8f", size = 45078, upload-time = "2025-06-09T23:02:35.538Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/af/36/0da0a49409f6b47cc2d060dc8c9040b897b5902a8a4e37d9bc1deb11f680/frozenlist-1.7.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cc4df77d638aa2ed703b878dd093725b72a824c3c546c076e8fdf276f78ee84a", size = 81304, upload-time = "2025-06-09T22:59:46.226Z" }, + { url = "https://files.pythonhosted.org/packages/77/f0/77c11d13d39513b298e267b22eb6cb559c103d56f155aa9a49097221f0b6/frozenlist-1.7.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:716a9973a2cc963160394f701964fe25012600f3d311f60c790400b00e568b61", size = 47735, upload-time = "2025-06-09T22:59:48.133Z" }, + { url = "https://files.pythonhosted.org/packages/37/12/9d07fa18971a44150593de56b2f2947c46604819976784bcf6ea0d5db43b/frozenlist-1.7.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a0fd1bad056a3600047fb9462cff4c5322cebc59ebf5d0a3725e0ee78955001d", size = 46775, upload-time = "2025-06-09T22:59:49.564Z" }, + { url = "https://files.pythonhosted.org/packages/70/34/f73539227e06288fcd1f8a76853e755b2b48bca6747e99e283111c18bcd4/frozenlist-1.7.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3789ebc19cb811163e70fe2bd354cea097254ce6e707ae42e56f45e31e96cb8e", size = 224644, upload-time = "2025-06-09T22:59:51.35Z" }, + { url = "https://files.pythonhosted.org/packages/fb/68/c1d9c2f4a6e438e14613bad0f2973567586610cc22dcb1e1241da71de9d3/frozenlist-1.7.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:af369aa35ee34f132fcfad5be45fbfcde0e3a5f6a1ec0712857f286b7d20cca9", size = 222125, upload-time = "2025-06-09T22:59:52.884Z" }, + { url = "https://files.pythonhosted.org/packages/b9/d0/98e8f9a515228d708344d7c6986752be3e3192d1795f748c24bcf154ad99/frozenlist-1.7.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac64b6478722eeb7a3313d494f8342ef3478dff539d17002f849101b212ef97c", size = 233455, upload-time = "2025-06-09T22:59:54.74Z" }, + { url = "https://files.pythonhosted.org/packages/79/df/8a11bcec5600557f40338407d3e5bea80376ed1c01a6c0910fcfdc4b8993/frozenlist-1.7.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f89f65d85774f1797239693cef07ad4c97fdd0639544bad9ac4b869782eb1981", size = 227339, upload-time = "2025-06-09T22:59:56.187Z" }, + { url = "https://files.pythonhosted.org/packages/50/82/41cb97d9c9a5ff94438c63cc343eb7980dac4187eb625a51bdfdb7707314/frozenlist-1.7.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1073557c941395fdfcfac13eb2456cb8aad89f9de27bae29fabca8e563b12615", size = 212969, upload-time = "2025-06-09T22:59:57.604Z" }, + { url = "https://files.pythonhosted.org/packages/13/47/f9179ee5ee4f55629e4f28c660b3fdf2775c8bfde8f9c53f2de2d93f52a9/frozenlist-1.7.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ed8d2fa095aae4bdc7fdd80351009a48d286635edffee66bf865e37a9125c50", size = 222862, upload-time = "2025-06-09T22:59:59.498Z" }, + { url = "https://files.pythonhosted.org/packages/1a/52/df81e41ec6b953902c8b7e3a83bee48b195cb0e5ec2eabae5d8330c78038/frozenlist-1.7.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:24c34bea555fe42d9f928ba0a740c553088500377448febecaa82cc3e88aa1fa", size = 222492, upload-time = "2025-06-09T23:00:01.026Z" }, + { url = "https://files.pythonhosted.org/packages/84/17/30d6ea87fa95a9408245a948604b82c1a4b8b3e153cea596421a2aef2754/frozenlist-1.7.0-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:69cac419ac6a6baad202c85aaf467b65ac860ac2e7f2ac1686dc40dbb52f6577", size = 238250, upload-time = "2025-06-09T23:00:03.401Z" }, + { url = "https://files.pythonhosted.org/packages/8f/00/ecbeb51669e3c3df76cf2ddd66ae3e48345ec213a55e3887d216eb4fbab3/frozenlist-1.7.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:960d67d0611f4c87da7e2ae2eacf7ea81a5be967861e0c63cf205215afbfac59", size = 218720, upload-time = "2025-06-09T23:00:05.282Z" }, + { url = "https://files.pythonhosted.org/packages/1a/c0/c224ce0e0eb31cc57f67742071bb470ba8246623c1823a7530be0e76164c/frozenlist-1.7.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:41be2964bd4b15bf575e5daee5a5ce7ed3115320fb3c2b71fca05582ffa4dc9e", size = 232585, upload-time = "2025-06-09T23:00:07.962Z" }, + { url = "https://files.pythonhosted.org/packages/55/3c/34cb694abf532f31f365106deebdeac9e45c19304d83cf7d51ebbb4ca4d1/frozenlist-1.7.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:46d84d49e00c9429238a7ce02dc0be8f6d7cd0cd405abd1bebdc991bf27c15bd", size = 234248, upload-time = "2025-06-09T23:00:09.428Z" }, + { url = "https://files.pythonhosted.org/packages/98/c0/2052d8b6cecda2e70bd81299e3512fa332abb6dcd2969b9c80dfcdddbf75/frozenlist-1.7.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:15900082e886edb37480335d9d518cec978afc69ccbc30bd18610b7c1b22a718", size = 221621, upload-time = "2025-06-09T23:00:11.32Z" }, + { url = "https://files.pythonhosted.org/packages/c5/bf/7dcebae315436903b1d98ffb791a09d674c88480c158aa171958a3ac07f0/frozenlist-1.7.0-cp310-cp310-win32.whl", hash = "sha256:400ddd24ab4e55014bba442d917203c73b2846391dd42ca5e38ff52bb18c3c5e", size = 39578, upload-time = "2025-06-09T23:00:13.526Z" }, + { url = "https://files.pythonhosted.org/packages/8f/5f/f69818f017fa9a3d24d1ae39763e29b7f60a59e46d5f91b9c6b21622f4cd/frozenlist-1.7.0-cp310-cp310-win_amd64.whl", hash = "sha256:6eb93efb8101ef39d32d50bce242c84bcbddb4f7e9febfa7b524532a239b4464", size = 43830, upload-time = "2025-06-09T23:00:14.98Z" }, + { url = "https://files.pythonhosted.org/packages/34/7e/803dde33760128acd393a27eb002f2020ddb8d99d30a44bfbaab31c5f08a/frozenlist-1.7.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:aa51e147a66b2d74de1e6e2cf5921890de6b0f4820b257465101d7f37b49fb5a", size = 82251, upload-time = "2025-06-09T23:00:16.279Z" }, + { url = "https://files.pythonhosted.org/packages/75/a9/9c2c5760b6ba45eae11334db454c189d43d34a4c0b489feb2175e5e64277/frozenlist-1.7.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9b35db7ce1cd71d36ba24f80f0c9e7cff73a28d7a74e91fe83e23d27c7828750", size = 48183, upload-time = "2025-06-09T23:00:17.698Z" }, + { url = "https://files.pythonhosted.org/packages/47/be/4038e2d869f8a2da165f35a6befb9158c259819be22eeaf9c9a8f6a87771/frozenlist-1.7.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:34a69a85e34ff37791e94542065c8416c1afbf820b68f720452f636d5fb990cd", size = 47107, upload-time = "2025-06-09T23:00:18.952Z" }, + { url = "https://files.pythonhosted.org/packages/79/26/85314b8a83187c76a37183ceed886381a5f992975786f883472fcb6dc5f2/frozenlist-1.7.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a646531fa8d82c87fe4bb2e596f23173caec9185bfbca5d583b4ccfb95183e2", size = 237333, upload-time = "2025-06-09T23:00:20.275Z" }, + { url = "https://files.pythonhosted.org/packages/1f/fd/e5b64f7d2c92a41639ffb2ad44a6a82f347787abc0c7df5f49057cf11770/frozenlist-1.7.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:79b2ffbba483f4ed36a0f236ccb85fbb16e670c9238313709638167670ba235f", size = 231724, upload-time = "2025-06-09T23:00:21.705Z" }, + { url = "https://files.pythonhosted.org/packages/20/fb/03395c0a43a5976af4bf7534759d214405fbbb4c114683f434dfdd3128ef/frozenlist-1.7.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a26f205c9ca5829cbf82bb2a84b5c36f7184c4316617d7ef1b271a56720d6b30", size = 245842, upload-time = "2025-06-09T23:00:23.148Z" }, + { url = "https://files.pythonhosted.org/packages/d0/15/c01c8e1dffdac5d9803507d824f27aed2ba76b6ed0026fab4d9866e82f1f/frozenlist-1.7.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bcacfad3185a623fa11ea0e0634aac7b691aa925d50a440f39b458e41c561d98", size = 239767, upload-time = "2025-06-09T23:00:25.103Z" }, + { url = "https://files.pythonhosted.org/packages/14/99/3f4c6fe882c1f5514b6848aa0a69b20cb5e5d8e8f51a339d48c0e9305ed0/frozenlist-1.7.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:72c1b0fe8fe451b34f12dce46445ddf14bd2a5bcad7e324987194dc8e3a74c86", size = 224130, upload-time = "2025-06-09T23:00:27.061Z" }, + { url = "https://files.pythonhosted.org/packages/4d/83/220a374bd7b2aeba9d0725130665afe11de347d95c3620b9b82cc2fcab97/frozenlist-1.7.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61d1a5baeaac6c0798ff6edfaeaa00e0e412d49946c53fae8d4b8e8b3566c4ae", size = 235301, upload-time = "2025-06-09T23:00:29.02Z" }, + { url = "https://files.pythonhosted.org/packages/03/3c/3e3390d75334a063181625343e8daab61b77e1b8214802cc4e8a1bb678fc/frozenlist-1.7.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7edf5c043c062462f09b6820de9854bf28cc6cc5b6714b383149745e287181a8", size = 234606, upload-time = "2025-06-09T23:00:30.514Z" }, + { url = "https://files.pythonhosted.org/packages/23/1e/58232c19608b7a549d72d9903005e2d82488f12554a32de2d5fb59b9b1ba/frozenlist-1.7.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:d50ac7627b3a1bd2dcef6f9da89a772694ec04d9a61b66cf87f7d9446b4a0c31", size = 248372, upload-time = "2025-06-09T23:00:31.966Z" }, + { url = "https://files.pythonhosted.org/packages/c0/a4/e4a567e01702a88a74ce8a324691e62a629bf47d4f8607f24bf1c7216e7f/frozenlist-1.7.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ce48b2fece5aeb45265bb7a58259f45027db0abff478e3077e12b05b17fb9da7", size = 229860, upload-time = "2025-06-09T23:00:33.375Z" }, + { url = "https://files.pythonhosted.org/packages/73/a6/63b3374f7d22268b41a9db73d68a8233afa30ed164c46107b33c4d18ecdd/frozenlist-1.7.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:fe2365ae915a1fafd982c146754e1de6ab3478def8a59c86e1f7242d794f97d5", size = 245893, upload-time = "2025-06-09T23:00:35.002Z" }, + { url = "https://files.pythonhosted.org/packages/6d/eb/d18b3f6e64799a79673c4ba0b45e4cfbe49c240edfd03a68be20002eaeaa/frozenlist-1.7.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:45a6f2fdbd10e074e8814eb98b05292f27bad7d1883afbe009d96abdcf3bc898", size = 246323, upload-time = "2025-06-09T23:00:36.468Z" }, + { url = "https://files.pythonhosted.org/packages/5a/f5/720f3812e3d06cd89a1d5db9ff6450088b8f5c449dae8ffb2971a44da506/frozenlist-1.7.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:21884e23cffabb157a9dd7e353779077bf5b8f9a58e9b262c6caad2ef5f80a56", size = 233149, upload-time = "2025-06-09T23:00:37.963Z" }, + { url = "https://files.pythonhosted.org/packages/69/68/03efbf545e217d5db8446acfd4c447c15b7c8cf4dbd4a58403111df9322d/frozenlist-1.7.0-cp311-cp311-win32.whl", hash = "sha256:284d233a8953d7b24f9159b8a3496fc1ddc00f4db99c324bd5fb5f22d8698ea7", size = 39565, upload-time = "2025-06-09T23:00:39.753Z" }, + { url = "https://files.pythonhosted.org/packages/58/17/fe61124c5c333ae87f09bb67186d65038834a47d974fc10a5fadb4cc5ae1/frozenlist-1.7.0-cp311-cp311-win_amd64.whl", hash = "sha256:387cbfdcde2f2353f19c2f66bbb52406d06ed77519ac7ee21be0232147c2592d", size = 44019, upload-time = "2025-06-09T23:00:40.988Z" }, + { url = "https://files.pythonhosted.org/packages/ef/a2/c8131383f1e66adad5f6ecfcce383d584ca94055a34d683bbb24ac5f2f1c/frozenlist-1.7.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:3dbf9952c4bb0e90e98aec1bd992b3318685005702656bc6f67c1a32b76787f2", size = 81424, upload-time = "2025-06-09T23:00:42.24Z" }, + { url = "https://files.pythonhosted.org/packages/4c/9d/02754159955088cb52567337d1113f945b9e444c4960771ea90eb73de8db/frozenlist-1.7.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:1f5906d3359300b8a9bb194239491122e6cf1444c2efb88865426f170c262cdb", size = 47952, upload-time = "2025-06-09T23:00:43.481Z" }, + { url = "https://files.pythonhosted.org/packages/01/7a/0046ef1bd6699b40acd2067ed6d6670b4db2f425c56980fa21c982c2a9db/frozenlist-1.7.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3dabd5a8f84573c8d10d8859a50ea2dec01eea372031929871368c09fa103478", size = 46688, upload-time = "2025-06-09T23:00:44.793Z" }, + { url = "https://files.pythonhosted.org/packages/d6/a2/a910bafe29c86997363fb4c02069df4ff0b5bc39d33c5198b4e9dd42d8f8/frozenlist-1.7.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa57daa5917f1738064f302bf2626281a1cb01920c32f711fbc7bc36111058a8", size = 243084, upload-time = "2025-06-09T23:00:46.125Z" }, + { url = "https://files.pythonhosted.org/packages/64/3e/5036af9d5031374c64c387469bfcc3af537fc0f5b1187d83a1cf6fab1639/frozenlist-1.7.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c193dda2b6d49f4c4398962810fa7d7c78f032bf45572b3e04dd5249dff27e08", size = 233524, upload-time = "2025-06-09T23:00:47.73Z" }, + { url = "https://files.pythonhosted.org/packages/06/39/6a17b7c107a2887e781a48ecf20ad20f1c39d94b2a548c83615b5b879f28/frozenlist-1.7.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bfe2b675cf0aaa6d61bf8fbffd3c274b3c9b7b1623beb3809df8a81399a4a9c4", size = 248493, upload-time = "2025-06-09T23:00:49.742Z" }, + { url = "https://files.pythonhosted.org/packages/be/00/711d1337c7327d88c44d91dd0f556a1c47fb99afc060ae0ef66b4d24793d/frozenlist-1.7.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8fc5d5cda37f62b262405cf9652cf0856839c4be8ee41be0afe8858f17f4c94b", size = 244116, upload-time = "2025-06-09T23:00:51.352Z" }, + { url = "https://files.pythonhosted.org/packages/24/fe/74e6ec0639c115df13d5850e75722750adabdc7de24e37e05a40527ca539/frozenlist-1.7.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b0d5ce521d1dd7d620198829b87ea002956e4319002ef0bc8d3e6d045cb4646e", size = 224557, upload-time = "2025-06-09T23:00:52.855Z" }, + { url = "https://files.pythonhosted.org/packages/8d/db/48421f62a6f77c553575201e89048e97198046b793f4a089c79a6e3268bd/frozenlist-1.7.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:488d0a7d6a0008ca0db273c542098a0fa9e7dfaa7e57f70acef43f32b3f69dca", size = 241820, upload-time = "2025-06-09T23:00:54.43Z" }, + { url = "https://files.pythonhosted.org/packages/1d/fa/cb4a76bea23047c8462976ea7b7a2bf53997a0ca171302deae9d6dd12096/frozenlist-1.7.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:15a7eaba63983d22c54d255b854e8108e7e5f3e89f647fc854bd77a237e767df", size = 236542, upload-time = "2025-06-09T23:00:56.409Z" }, + { url = "https://files.pythonhosted.org/packages/5d/32/476a4b5cfaa0ec94d3f808f193301debff2ea42288a099afe60757ef6282/frozenlist-1.7.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:1eaa7e9c6d15df825bf255649e05bd8a74b04a4d2baa1ae46d9c2d00b2ca2cb5", size = 249350, upload-time = "2025-06-09T23:00:58.468Z" }, + { url = "https://files.pythonhosted.org/packages/8d/ba/9a28042f84a6bf8ea5dbc81cfff8eaef18d78b2a1ad9d51c7bc5b029ad16/frozenlist-1.7.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e4389e06714cfa9d47ab87f784a7c5be91d3934cd6e9a7b85beef808297cc025", size = 225093, upload-time = "2025-06-09T23:01:00.015Z" }, + { url = "https://files.pythonhosted.org/packages/bc/29/3a32959e68f9cf000b04e79ba574527c17e8842e38c91d68214a37455786/frozenlist-1.7.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:73bd45e1488c40b63fe5a7df892baf9e2a4d4bb6409a2b3b78ac1c6236178e01", size = 245482, upload-time = "2025-06-09T23:01:01.474Z" }, + { url = "https://files.pythonhosted.org/packages/80/e8/edf2f9e00da553f07f5fa165325cfc302dead715cab6ac8336a5f3d0adc2/frozenlist-1.7.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:99886d98e1643269760e5fe0df31e5ae7050788dd288947f7f007209b8c33f08", size = 249590, upload-time = "2025-06-09T23:01:02.961Z" }, + { url = "https://files.pythonhosted.org/packages/1c/80/9a0eb48b944050f94cc51ee1c413eb14a39543cc4f760ed12657a5a3c45a/frozenlist-1.7.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:290a172aae5a4c278c6da8a96222e6337744cd9c77313efe33d5670b9f65fc43", size = 237785, upload-time = "2025-06-09T23:01:05.095Z" }, + { url = "https://files.pythonhosted.org/packages/f3/74/87601e0fb0369b7a2baf404ea921769c53b7ae00dee7dcfe5162c8c6dbf0/frozenlist-1.7.0-cp312-cp312-win32.whl", hash = "sha256:426c7bc70e07cfebc178bc4c2bf2d861d720c4fff172181eeb4a4c41d4ca2ad3", size = 39487, upload-time = "2025-06-09T23:01:06.54Z" }, + { url = "https://files.pythonhosted.org/packages/0b/15/c026e9a9fc17585a9d461f65d8593d281fedf55fbf7eb53f16c6df2392f9/frozenlist-1.7.0-cp312-cp312-win_amd64.whl", hash = "sha256:563b72efe5da92e02eb68c59cb37205457c977aa7a449ed1b37e6939e5c47c6a", size = 43874, upload-time = "2025-06-09T23:01:07.752Z" }, + { url = "https://files.pythonhosted.org/packages/24/90/6b2cebdabdbd50367273c20ff6b57a3dfa89bd0762de02c3a1eb42cb6462/frozenlist-1.7.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ee80eeda5e2a4e660651370ebffd1286542b67e268aa1ac8d6dbe973120ef7ee", size = 79791, upload-time = "2025-06-09T23:01:09.368Z" }, + { url = "https://files.pythonhosted.org/packages/83/2e/5b70b6a3325363293fe5fc3ae74cdcbc3e996c2a11dde2fd9f1fb0776d19/frozenlist-1.7.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d1a81c85417b914139e3a9b995d4a1c84559afc839a93cf2cb7f15e6e5f6ed2d", size = 47165, upload-time = "2025-06-09T23:01:10.653Z" }, + { url = "https://files.pythonhosted.org/packages/f4/25/a0895c99270ca6966110f4ad98e87e5662eab416a17e7fd53c364bf8b954/frozenlist-1.7.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cbb65198a9132ebc334f237d7b0df163e4de83fb4f2bdfe46c1e654bdb0c5d43", size = 45881, upload-time = "2025-06-09T23:01:12.296Z" }, + { url = "https://files.pythonhosted.org/packages/19/7c/71bb0bbe0832793c601fff68cd0cf6143753d0c667f9aec93d3c323f4b55/frozenlist-1.7.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dab46c723eeb2c255a64f9dc05b8dd601fde66d6b19cdb82b2e09cc6ff8d8b5d", size = 232409, upload-time = "2025-06-09T23:01:13.641Z" }, + { url = "https://files.pythonhosted.org/packages/c0/45/ed2798718910fe6eb3ba574082aaceff4528e6323f9a8570be0f7028d8e9/frozenlist-1.7.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:6aeac207a759d0dedd2e40745575ae32ab30926ff4fa49b1635def65806fddee", size = 225132, upload-time = "2025-06-09T23:01:15.264Z" }, + { url = "https://files.pythonhosted.org/packages/ba/e2/8417ae0f8eacb1d071d4950f32f229aa6bf68ab69aab797b72a07ea68d4f/frozenlist-1.7.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bd8c4e58ad14b4fa7802b8be49d47993182fdd4023393899632c88fd8cd994eb", size = 237638, upload-time = "2025-06-09T23:01:16.752Z" }, + { url = "https://files.pythonhosted.org/packages/f8/b7/2ace5450ce85f2af05a871b8c8719b341294775a0a6c5585d5e6170f2ce7/frozenlist-1.7.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:04fb24d104f425da3540ed83cbfc31388a586a7696142004c577fa61c6298c3f", size = 233539, upload-time = "2025-06-09T23:01:18.202Z" }, + { url = "https://files.pythonhosted.org/packages/46/b9/6989292c5539553dba63f3c83dc4598186ab2888f67c0dc1d917e6887db6/frozenlist-1.7.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6a5c505156368e4ea6b53b5ac23c92d7edc864537ff911d2fb24c140bb175e60", size = 215646, upload-time = "2025-06-09T23:01:19.649Z" }, + { url = "https://files.pythonhosted.org/packages/72/31/bc8c5c99c7818293458fe745dab4fd5730ff49697ccc82b554eb69f16a24/frozenlist-1.7.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8bd7eb96a675f18aa5c553eb7ddc24a43c8c18f22e1f9925528128c052cdbe00", size = 232233, upload-time = "2025-06-09T23:01:21.175Z" }, + { url = "https://files.pythonhosted.org/packages/59/52/460db4d7ba0811b9ccb85af996019f5d70831f2f5f255f7cc61f86199795/frozenlist-1.7.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:05579bf020096fe05a764f1f84cd104a12f78eaab68842d036772dc6d4870b4b", size = 227996, upload-time = "2025-06-09T23:01:23.098Z" }, + { url = "https://files.pythonhosted.org/packages/ba/c9/f4b39e904c03927b7ecf891804fd3b4df3db29b9e487c6418e37988d6e9d/frozenlist-1.7.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:376b6222d114e97eeec13d46c486facd41d4f43bab626b7c3f6a8b4e81a5192c", size = 242280, upload-time = "2025-06-09T23:01:24.808Z" }, + { url = "https://files.pythonhosted.org/packages/b8/33/3f8d6ced42f162d743e3517781566b8481322be321b486d9d262adf70bfb/frozenlist-1.7.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:0aa7e176ebe115379b5b1c95b4096fb1c17cce0847402e227e712c27bdb5a949", size = 217717, upload-time = "2025-06-09T23:01:26.28Z" }, + { url = "https://files.pythonhosted.org/packages/3e/e8/ad683e75da6ccef50d0ab0c2b2324b32f84fc88ceee778ed79b8e2d2fe2e/frozenlist-1.7.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:3fbba20e662b9c2130dc771e332a99eff5da078b2b2648153a40669a6d0e36ca", size = 236644, upload-time = "2025-06-09T23:01:27.887Z" }, + { url = "https://files.pythonhosted.org/packages/b2/14/8d19ccdd3799310722195a72ac94ddc677541fb4bef4091d8e7775752360/frozenlist-1.7.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:f3f4410a0a601d349dd406b5713fec59b4cee7e71678d5b17edda7f4655a940b", size = 238879, upload-time = "2025-06-09T23:01:29.524Z" }, + { url = "https://files.pythonhosted.org/packages/ce/13/c12bf657494c2fd1079a48b2db49fa4196325909249a52d8f09bc9123fd7/frozenlist-1.7.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e2cdfaaec6a2f9327bf43c933c0319a7c429058e8537c508964a133dffee412e", size = 232502, upload-time = "2025-06-09T23:01:31.287Z" }, + { url = "https://files.pythonhosted.org/packages/d7/8b/e7f9dfde869825489382bc0d512c15e96d3964180c9499efcec72e85db7e/frozenlist-1.7.0-cp313-cp313-win32.whl", hash = "sha256:5fc4df05a6591c7768459caba1b342d9ec23fa16195e744939ba5914596ae3e1", size = 39169, upload-time = "2025-06-09T23:01:35.503Z" }, + { url = "https://files.pythonhosted.org/packages/35/89/a487a98d94205d85745080a37860ff5744b9820a2c9acbcdd9440bfddf98/frozenlist-1.7.0-cp313-cp313-win_amd64.whl", hash = "sha256:52109052b9791a3e6b5d1b65f4b909703984b770694d3eb64fad124c835d7cba", size = 43219, upload-time = "2025-06-09T23:01:36.784Z" }, + { url = "https://files.pythonhosted.org/packages/56/d5/5c4cf2319a49eddd9dd7145e66c4866bdc6f3dbc67ca3d59685149c11e0d/frozenlist-1.7.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:a6f86e4193bb0e235ef6ce3dde5cbabed887e0b11f516ce8a0f4d3b33078ec2d", size = 84345, upload-time = "2025-06-09T23:01:38.295Z" }, + { url = "https://files.pythonhosted.org/packages/a4/7d/ec2c1e1dc16b85bc9d526009961953df9cec8481b6886debb36ec9107799/frozenlist-1.7.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:82d664628865abeb32d90ae497fb93df398a69bb3434463d172b80fc25b0dd7d", size = 48880, upload-time = "2025-06-09T23:01:39.887Z" }, + { url = "https://files.pythonhosted.org/packages/69/86/f9596807b03de126e11e7d42ac91e3d0b19a6599c714a1989a4e85eeefc4/frozenlist-1.7.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:912a7e8375a1c9a68325a902f3953191b7b292aa3c3fb0d71a216221deca460b", size = 48498, upload-time = "2025-06-09T23:01:41.318Z" }, + { url = "https://files.pythonhosted.org/packages/5e/cb/df6de220f5036001005f2d726b789b2c0b65f2363b104bbc16f5be8084f8/frozenlist-1.7.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9537c2777167488d539bc5de2ad262efc44388230e5118868e172dd4a552b146", size = 292296, upload-time = "2025-06-09T23:01:42.685Z" }, + { url = "https://files.pythonhosted.org/packages/83/1f/de84c642f17c8f851a2905cee2dae401e5e0daca9b5ef121e120e19aa825/frozenlist-1.7.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:f34560fb1b4c3e30ba35fa9a13894ba39e5acfc5f60f57d8accde65f46cc5e74", size = 273103, upload-time = "2025-06-09T23:01:44.166Z" }, + { url = "https://files.pythonhosted.org/packages/88/3c/c840bfa474ba3fa13c772b93070893c6e9d5c0350885760376cbe3b6c1b3/frozenlist-1.7.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:acd03d224b0175f5a850edc104ac19040d35419eddad04e7cf2d5986d98427f1", size = 292869, upload-time = "2025-06-09T23:01:45.681Z" }, + { url = "https://files.pythonhosted.org/packages/a6/1c/3efa6e7d5a39a1d5ef0abeb51c48fb657765794a46cf124e5aca2c7a592c/frozenlist-1.7.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f2038310bc582f3d6a09b3816ab01737d60bf7b1ec70f5356b09e84fb7408ab1", size = 291467, upload-time = "2025-06-09T23:01:47.234Z" }, + { url = "https://files.pythonhosted.org/packages/4f/00/d5c5e09d4922c395e2f2f6b79b9a20dab4b67daaf78ab92e7729341f61f6/frozenlist-1.7.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b8c05e4c8e5f36e5e088caa1bf78a687528f83c043706640a92cb76cd6999384", size = 266028, upload-time = "2025-06-09T23:01:48.819Z" }, + { url = "https://files.pythonhosted.org/packages/4e/27/72765be905619dfde25a7f33813ac0341eb6b076abede17a2e3fbfade0cb/frozenlist-1.7.0-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:765bb588c86e47d0b68f23c1bee323d4b703218037765dcf3f25c838c6fecceb", size = 284294, upload-time = "2025-06-09T23:01:50.394Z" }, + { url = "https://files.pythonhosted.org/packages/88/67/c94103a23001b17808eb7dd1200c156bb69fb68e63fcf0693dde4cd6228c/frozenlist-1.7.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:32dc2e08c67d86d0969714dd484fd60ff08ff81d1a1e40a77dd34a387e6ebc0c", size = 281898, upload-time = "2025-06-09T23:01:52.234Z" }, + { url = "https://files.pythonhosted.org/packages/42/34/a3e2c00c00f9e2a9db5653bca3fec306349e71aff14ae45ecc6d0951dd24/frozenlist-1.7.0-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:c0303e597eb5a5321b4de9c68e9845ac8f290d2ab3f3e2c864437d3c5a30cd65", size = 290465, upload-time = "2025-06-09T23:01:53.788Z" }, + { url = "https://files.pythonhosted.org/packages/bb/73/f89b7fbce8b0b0c095d82b008afd0590f71ccb3dee6eee41791cf8cd25fd/frozenlist-1.7.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:a47f2abb4e29b3a8d0b530f7c3598badc6b134562b1a5caee867f7c62fee51e3", size = 266385, upload-time = "2025-06-09T23:01:55.769Z" }, + { url = "https://files.pythonhosted.org/packages/cd/45/e365fdb554159462ca12df54bc59bfa7a9a273ecc21e99e72e597564d1ae/frozenlist-1.7.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:3d688126c242a6fabbd92e02633414d40f50bb6002fa4cf995a1d18051525657", size = 288771, upload-time = "2025-06-09T23:01:57.4Z" }, + { url = "https://files.pythonhosted.org/packages/00/11/47b6117002a0e904f004d70ec5194fe9144f117c33c851e3d51c765962d0/frozenlist-1.7.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:4e7e9652b3d367c7bd449a727dc79d5043f48b88d0cbfd4f9f1060cf2b414104", size = 288206, upload-time = "2025-06-09T23:01:58.936Z" }, + { url = "https://files.pythonhosted.org/packages/40/37/5f9f3c3fd7f7746082ec67bcdc204db72dad081f4f83a503d33220a92973/frozenlist-1.7.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:1a85e345b4c43db8b842cab1feb41be5cc0b10a1830e6295b69d7310f99becaf", size = 282620, upload-time = "2025-06-09T23:02:00.493Z" }, + { url = "https://files.pythonhosted.org/packages/0b/31/8fbc5af2d183bff20f21aa743b4088eac4445d2bb1cdece449ae80e4e2d1/frozenlist-1.7.0-cp313-cp313t-win32.whl", hash = "sha256:3a14027124ddb70dfcee5148979998066897e79f89f64b13328595c4bdf77c81", size = 43059, upload-time = "2025-06-09T23:02:02.072Z" }, + { url = "https://files.pythonhosted.org/packages/bb/ed/41956f52105b8dbc26e457c5705340c67c8cc2b79f394b79bffc09d0e938/frozenlist-1.7.0-cp313-cp313t-win_amd64.whl", hash = "sha256:3bf8010d71d4507775f658e9823210b7427be36625b387221642725b515dcf3e", size = 47516, upload-time = "2025-06-09T23:02:03.779Z" }, + { url = "https://files.pythonhosted.org/packages/dd/b1/ee59496f51cd244039330015d60f13ce5a54a0f2bd8d79e4a4a375ab7469/frozenlist-1.7.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:cea3dbd15aea1341ea2de490574a4a37ca080b2ae24e4b4f4b51b9057b4c3630", size = 82434, upload-time = "2025-06-09T23:02:05.195Z" }, + { url = "https://files.pythonhosted.org/packages/75/e1/d518391ce36a6279b3fa5bc14327dde80bcb646bb50d059c6ca0756b8d05/frozenlist-1.7.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7d536ee086b23fecc36c2073c371572374ff50ef4db515e4e503925361c24f71", size = 48232, upload-time = "2025-06-09T23:02:07.728Z" }, + { url = "https://files.pythonhosted.org/packages/b7/8d/a0d04f28b6e821a9685c22e67b5fb798a5a7b68752f104bfbc2dccf080c4/frozenlist-1.7.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:dfcebf56f703cb2e346315431699f00db126d158455e513bd14089d992101e44", size = 47186, upload-time = "2025-06-09T23:02:09.243Z" }, + { url = "https://files.pythonhosted.org/packages/93/3a/a5334c0535c8b7c78eeabda1579179e44fe3d644e07118e59a2276dedaf1/frozenlist-1.7.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:974c5336e61d6e7eb1ea5b929cb645e882aadab0095c5a6974a111e6479f8878", size = 226617, upload-time = "2025-06-09T23:02:10.949Z" }, + { url = "https://files.pythonhosted.org/packages/0a/67/8258d971f519dc3f278c55069a775096cda6610a267b53f6248152b72b2f/frozenlist-1.7.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c70db4a0ab5ab20878432c40563573229a7ed9241506181bba12f6b7d0dc41cb", size = 224179, upload-time = "2025-06-09T23:02:12.603Z" }, + { url = "https://files.pythonhosted.org/packages/fc/89/8225905bf889b97c6d935dd3aeb45668461e59d415cb019619383a8a7c3b/frozenlist-1.7.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1137b78384eebaf70560a36b7b229f752fb64d463d38d1304939984d5cb887b6", size = 235783, upload-time = "2025-06-09T23:02:14.678Z" }, + { url = "https://files.pythonhosted.org/packages/54/6e/ef52375aa93d4bc510d061df06205fa6dcfd94cd631dd22956b09128f0d4/frozenlist-1.7.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e793a9f01b3e8b5c0bc646fb59140ce0efcc580d22a3468d70766091beb81b35", size = 229210, upload-time = "2025-06-09T23:02:16.313Z" }, + { url = "https://files.pythonhosted.org/packages/ee/55/62c87d1a6547bfbcd645df10432c129100c5bd0fd92a384de6e3378b07c1/frozenlist-1.7.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:74739ba8e4e38221d2c5c03d90a7e542cb8ad681915f4ca8f68d04f810ee0a87", size = 215994, upload-time = "2025-06-09T23:02:17.9Z" }, + { url = "https://files.pythonhosted.org/packages/45/d2/263fea1f658b8ad648c7d94d18a87bca7e8c67bd6a1bbf5445b1bd5b158c/frozenlist-1.7.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e63344c4e929b1a01e29bc184bbb5fd82954869033765bfe8d65d09e336a677", size = 225122, upload-time = "2025-06-09T23:02:19.479Z" }, + { url = "https://files.pythonhosted.org/packages/7b/22/7145e35d12fb368d92124f679bea87309495e2e9ddf14c6533990cb69218/frozenlist-1.7.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2ea2a7369eb76de2217a842f22087913cdf75f63cf1307b9024ab82dfb525938", size = 224019, upload-time = "2025-06-09T23:02:20.969Z" }, + { url = "https://files.pythonhosted.org/packages/44/1e/7dae8c54301beb87bcafc6144b9a103bfd2c8f38078c7902984c9a0c4e5b/frozenlist-1.7.0-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:836b42f472a0e006e02499cef9352ce8097f33df43baaba3e0a28a964c26c7d2", size = 239925, upload-time = "2025-06-09T23:02:22.466Z" }, + { url = "https://files.pythonhosted.org/packages/4b/1e/99c93e54aa382e949a98976a73b9b20c3aae6d9d893f31bbe4991f64e3a8/frozenlist-1.7.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:e22b9a99741294b2571667c07d9f8cceec07cb92aae5ccda39ea1b6052ed4319", size = 220881, upload-time = "2025-06-09T23:02:24.521Z" }, + { url = "https://files.pythonhosted.org/packages/5e/9c/ca5105fa7fb5abdfa8837581be790447ae051da75d32f25c8f81082ffc45/frozenlist-1.7.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:9a19e85cc503d958abe5218953df722748d87172f71b73cf3c9257a91b999890", size = 234046, upload-time = "2025-06-09T23:02:26.206Z" }, + { url = "https://files.pythonhosted.org/packages/8d/4d/e99014756093b4ddbb67fb8f0df11fe7a415760d69ace98e2ac6d5d43402/frozenlist-1.7.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:f22dac33bb3ee8fe3e013aa7b91dc12f60d61d05b7fe32191ffa84c3aafe77bd", size = 235756, upload-time = "2025-06-09T23:02:27.79Z" }, + { url = "https://files.pythonhosted.org/packages/8b/72/a19a40bcdaa28a51add2aaa3a1a294ec357f36f27bd836a012e070c5e8a5/frozenlist-1.7.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:9ccec739a99e4ccf664ea0775149f2749b8a6418eb5b8384b4dc0a7d15d304cb", size = 222894, upload-time = "2025-06-09T23:02:29.848Z" }, + { url = "https://files.pythonhosted.org/packages/08/49/0042469993e023a758af81db68c76907cd29e847d772334d4d201cbe9a42/frozenlist-1.7.0-cp39-cp39-win32.whl", hash = "sha256:b3950f11058310008a87757f3eee16a8e1ca97979833239439586857bc25482e", size = 39848, upload-time = "2025-06-09T23:02:31.413Z" }, + { url = "https://files.pythonhosted.org/packages/5a/45/827d86ee475c877f5f766fbc23fb6acb6fada9e52f1c9720e2ba3eae32da/frozenlist-1.7.0-cp39-cp39-win_amd64.whl", hash = "sha256:43a82fce6769c70f2f5a06248b614a7d268080a9d20f7457ef10ecee5af82b63", size = 44102, upload-time = "2025-06-09T23:02:32.808Z" }, + { url = "https://files.pythonhosted.org/packages/ee/45/b82e3c16be2182bff01179db177fe144d58b5dc787a7d4492c6ed8b9317f/frozenlist-1.7.0-py3-none-any.whl", hash = "sha256:9a5af342e34f7e97caf8c995864c7a396418ae2859cc6fdf1b1073020d516a7e", size = 13106, upload-time = "2025-06-09T23:02:34.204Z" }, +] + [[package]] name = "fsspec" version = "2025.5.1" @@ -702,52 +1314,118 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/bb/61/78c7b3851add1481b048b5fdc29067397a1784e2910592bc81bb3f608635/fsspec-2025.5.1-py3-none-any.whl", hash = "sha256:24d3a2e663d5fc735ab256263c4075f374a174c3410c0b25e5bd1970bceaa462", size = 199052, upload-time = "2025-05-24T12:03:21.66Z" }, ] +[package.optional-dependencies] +http = [ + { name = "aiohttp" }, +] + [[package]] -name = "fusionaihub" -version = "0.0.1" -source = { editable = "." } +name = "google-api-core" +version = "2.25.1" +source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "h5py" }, - { name = "ipykernel" }, - { name = "ipywidgets" }, - { name = "matplotlib", version = "3.9.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "matplotlib", version = "3.10.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, - { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, - { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, - { name = "opencv-python" }, - { name = "pandas" }, - { name = "paramiko" }, - { name = "pyyaml" }, - { name = "scikit-learn", version = "1.6.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "scikit-learn", version = "1.7.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, - { name = "scipy", version = "1.13.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, - { name = "scipy", version = "1.16.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, - { name = "tables", version = "3.9.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "tables", version = "3.10.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, - { name = "tables", version = "3.10.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, - { name = "torch", version = "2.7.1", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version >= '3.10' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, - { name = "torch", version = "2.7.1+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version < '3.10' and platform_machine != 'arm64') or sys_platform != 'darwin'" }, - { name = "tqdm" }, + { name = "google-auth" }, + { name = "googleapis-common-protos" }, + { name = "proto-plus" }, + { name = "protobuf" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/dc/21/e9d043e88222317afdbdb567165fdbc3b0aad90064c7e0c9eb0ad9955ad8/google_api_core-2.25.1.tar.gz", hash = "sha256:d2aaa0b13c78c61cb3f4282c464c046e45fbd75755683c9c525e6e8f7ed0a5e8", size = 165443, upload-time = "2025-06-12T20:52:20.439Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/14/4b/ead00905132820b623732b175d66354e9d3e69fcf2a5dcdab780664e7896/google_api_core-2.25.1-py3-none-any.whl", hash = "sha256:8a2a56c1fef82987a524371f99f3bd0143702fecc670c72e600c1cda6bf8dbb7", size = 160807, upload-time = "2025-06-12T20:52:19.334Z" }, ] -[package.metadata] -requires-dist = [ - { name = "h5py" }, - { name = "ipykernel", specifier = ">=6.29.5" }, - { name = "ipywidgets", specifier = ">=8.1.7" }, - { name = "matplotlib" }, - { name = "numpy" }, - { name = "opencv-python" }, - { name = "pandas" }, - { name = "paramiko" }, - { name = "pyyaml", specifier = ">=6.0.2" }, - { name = "scikit-learn", specifier = ">=1.6.1" }, - { name = "scipy" }, - { name = "tables", specifier = ">=3.9.2" }, - { name = "torch", specifier = ">=2.7.1", index = "https://download.pytorch.org/whl/cpu" }, - { name = "tqdm" }, +[[package]] +name = "google-auth" +version = "2.40.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cachetools" }, + { name = "pyasn1-modules" }, + { name = "rsa" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9e/9b/e92ef23b84fa10a64ce4831390b7a4c2e53c0132568d99d4ae61d04c8855/google_auth-2.40.3.tar.gz", hash = "sha256:500c3a29adedeb36ea9cf24b8d10858e152f2412e3ca37829b3fa18e33d63b77", size = 281029, upload-time = "2025-06-04T18:04:57.577Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/17/63/b19553b658a1692443c62bd07e5868adaa0ad746a0751ba62c59568cd45b/google_auth-2.40.3-py2.py3-none-any.whl", hash = "sha256:1370d4593e86213563547f97a92752fc658456fe4514c809544f330fed45a7ca", size = 216137, upload-time = "2025-06-04T18:04:55.573Z" }, +] + +[[package]] +name = "googleapis-common-protos" +version = "1.70.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/39/24/33db22342cf4a2ea27c9955e6713140fedd51e8b141b5ce5260897020f1a/googleapis_common_protos-1.70.0.tar.gz", hash = "sha256:0e1b44e0ea153e6594f9f394fef15193a68aaaea2d843f83e2742717ca753257", size = 145903, upload-time = "2025-04-14T10:17:02.924Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/86/f1/62a193f0227cf15a920390abe675f386dec35f7ae3ffe6da582d3ade42c7/googleapis_common_protos-1.70.0-py3-none-any.whl", hash = "sha256:b8bfcca8c25a2bb253e0e0b0adaf8c00773e5e6af6fd92397576680b807e0fd8", size = 294530, upload-time = "2025-04-14T10:17:01.271Z" }, +] + +[[package]] +name = "grpcio" +version = "1.73.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/79/e8/b43b851537da2e2f03fa8be1aef207e5cbfb1a2e014fbb6b40d24c177cd3/grpcio-1.73.1.tar.gz", hash = "sha256:7fce2cd1c0c1116cf3850564ebfc3264fba75d3c74a7414373f1238ea365ef87", size = 12730355, upload-time = "2025-06-26T01:53:24.622Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8f/51/a5748ab2773d893d099b92653039672f7e26dd35741020972b84d604066f/grpcio-1.73.1-cp310-cp310-linux_armv7l.whl", hash = "sha256:2d70f4ddd0a823436c2624640570ed6097e40935c9194482475fe8e3d9754d55", size = 5365087, upload-time = "2025-06-26T01:51:44.541Z" }, + { url = "https://files.pythonhosted.org/packages/ae/12/c5ee1a5dfe93dbc2eaa42a219e2bf887250b52e2e2ee5c036c4695f2769c/grpcio-1.73.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:3841a8a5a66830261ab6a3c2a3dc539ed84e4ab019165f77b3eeb9f0ba621f26", size = 10608921, upload-time = "2025-06-26T01:51:48.111Z" }, + { url = "https://files.pythonhosted.org/packages/c4/6d/b0c6a8120f02b7d15c5accda6bfc43bc92be70ada3af3ba6d8e077c00374/grpcio-1.73.1-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:628c30f8e77e0258ab788750ec92059fc3d6628590fb4b7cea8c102503623ed7", size = 5803221, upload-time = "2025-06-26T01:51:50.486Z" }, + { url = "https://files.pythonhosted.org/packages/a6/7a/3c886d9f1c1e416ae81f7f9c7d1995ae72cd64712d29dab74a6bafacb2d2/grpcio-1.73.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:67a0468256c9db6d5ecb1fde4bf409d016f42cef649323f0a08a72f352d1358b", size = 6444603, upload-time = "2025-06-26T01:51:52.203Z" }, + { url = "https://files.pythonhosted.org/packages/42/07/f143a2ff534982c9caa1febcad1c1073cdec732f6ac7545d85555a900a7e/grpcio-1.73.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68b84d65bbdebd5926eb5c53b0b9ec3b3f83408a30e4c20c373c5337b4219ec5", size = 6040969, upload-time = "2025-06-26T01:51:55.028Z" }, + { url = "https://files.pythonhosted.org/packages/fb/0f/523131b7c9196d0718e7b2dac0310eb307b4117bdbfef62382e760f7e8bb/grpcio-1.73.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c54796ca22b8349cc594d18b01099e39f2b7ffb586ad83217655781a350ce4da", size = 6132201, upload-time = "2025-06-26T01:51:56.867Z" }, + { url = "https://files.pythonhosted.org/packages/ad/18/010a055410eef1d3a7a1e477ec9d93b091ac664ad93e9c5f56d6cc04bdee/grpcio-1.73.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:75fc8e543962ece2f7ecd32ada2d44c0c8570ae73ec92869f9af8b944863116d", size = 6774718, upload-time = "2025-06-26T01:51:58.338Z" }, + { url = "https://files.pythonhosted.org/packages/16/11/452bfc1ab39d8ee748837ab8ee56beeae0290861052948785c2c445fb44b/grpcio-1.73.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6a6037891cd2b1dd1406b388660522e1565ed340b1fea2955b0234bdd941a862", size = 6304362, upload-time = "2025-06-26T01:51:59.802Z" }, + { url = "https://files.pythonhosted.org/packages/1e/1c/c75ceee626465721e5cb040cf4b271eff817aa97388948660884cb7adffa/grpcio-1.73.1-cp310-cp310-win32.whl", hash = "sha256:cce7265b9617168c2d08ae570fcc2af4eaf72e84f8c710ca657cc546115263af", size = 3679036, upload-time = "2025-06-26T01:52:01.817Z" }, + { url = "https://files.pythonhosted.org/packages/62/2e/42cb31b6cbd671a7b3dbd97ef33f59088cf60e3cf2141368282e26fafe79/grpcio-1.73.1-cp310-cp310-win_amd64.whl", hash = "sha256:6a2b372e65fad38842050943f42ce8fee00c6f2e8ea4f7754ba7478d26a356ee", size = 4340208, upload-time = "2025-06-26T01:52:03.674Z" }, + { url = "https://files.pythonhosted.org/packages/e4/41/921565815e871d84043e73e2c0e748f0318dab6fa9be872cd042778f14a9/grpcio-1.73.1-cp311-cp311-linux_armv7l.whl", hash = "sha256:ba2cea9f7ae4bc21f42015f0ec98f69ae4179848ad744b210e7685112fa507a1", size = 5363853, upload-time = "2025-06-26T01:52:05.5Z" }, + { url = "https://files.pythonhosted.org/packages/b0/cc/9c51109c71d068e4d474becf5f5d43c9d63038cec1b74112978000fa72f4/grpcio-1.73.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:d74c3f4f37b79e746271aa6cdb3a1d7e4432aea38735542b23adcabaaee0c097", size = 10621476, upload-time = "2025-06-26T01:52:07.211Z" }, + { url = "https://files.pythonhosted.org/packages/8f/d3/33d738a06f6dbd4943f4d377468f8299941a7c8c6ac8a385e4cef4dd3c93/grpcio-1.73.1-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:5b9b1805a7d61c9e90541cbe8dfe0a593dfc8c5c3a43fe623701b6a01b01d710", size = 5807903, upload-time = "2025-06-26T01:52:09.466Z" }, + { url = "https://files.pythonhosted.org/packages/5d/47/36deacd3c967b74e0265f4c608983e897d8bb3254b920f8eafdf60e4ad7e/grpcio-1.73.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3215f69a0670a8cfa2ab53236d9e8026bfb7ead5d4baabe7d7dc11d30fda967", size = 6448172, upload-time = "2025-06-26T01:52:11.459Z" }, + { url = "https://files.pythonhosted.org/packages/0e/64/12d6dc446021684ee1428ea56a3f3712048a18beeadbdefa06e6f8814a6e/grpcio-1.73.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc5eccfd9577a5dc7d5612b2ba90cca4ad14c6d949216c68585fdec9848befb1", size = 6044226, upload-time = "2025-06-26T01:52:12.987Z" }, + { url = "https://files.pythonhosted.org/packages/72/4b/6bae2d88a006000f1152d2c9c10ffd41d0131ca1198e0b661101c2e30ab9/grpcio-1.73.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:dc7d7fd520614fce2e6455ba89791458020a39716951c7c07694f9dbae28e9c0", size = 6135690, upload-time = "2025-06-26T01:52:14.92Z" }, + { url = "https://files.pythonhosted.org/packages/38/64/02c83b5076510784d1305025e93e0d78f53bb6a0213c8c84cfe8a00c5c48/grpcio-1.73.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:105492124828911f85127e4825d1c1234b032cb9d238567876b5515d01151379", size = 6775867, upload-time = "2025-06-26T01:52:16.446Z" }, + { url = "https://files.pythonhosted.org/packages/42/72/a13ff7ba6c68ccffa35dacdc06373a76c0008fd75777cba84d7491956620/grpcio-1.73.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:610e19b04f452ba6f402ac9aa94eb3d21fbc94553368008af634812c4a85a99e", size = 6308380, upload-time = "2025-06-26T01:52:18.417Z" }, + { url = "https://files.pythonhosted.org/packages/65/ae/d29d948021faa0070ec33245c1ae354e2aefabd97e6a9a7b6dcf0fb8ef6b/grpcio-1.73.1-cp311-cp311-win32.whl", hash = "sha256:d60588ab6ba0ac753761ee0e5b30a29398306401bfbceffe7d68ebb21193f9d4", size = 3679139, upload-time = "2025-06-26T01:52:20.171Z" }, + { url = "https://files.pythonhosted.org/packages/af/66/e1bbb0c95ea222947f0829b3db7692c59b59bcc531df84442e413fa983d9/grpcio-1.73.1-cp311-cp311-win_amd64.whl", hash = "sha256:6957025a4608bb0a5ff42abd75bfbb2ed99eda29d5992ef31d691ab54b753643", size = 4342558, upload-time = "2025-06-26T01:52:22.137Z" }, + { url = "https://files.pythonhosted.org/packages/b8/41/456caf570c55d5ac26f4c1f2db1f2ac1467d5bf3bcd660cba3e0a25b195f/grpcio-1.73.1-cp312-cp312-linux_armv7l.whl", hash = "sha256:921b25618b084e75d424a9f8e6403bfeb7abef074bb6c3174701e0f2542debcf", size = 5334621, upload-time = "2025-06-26T01:52:23.602Z" }, + { url = "https://files.pythonhosted.org/packages/2a/c2/9a15e179e49f235bb5e63b01590658c03747a43c9775e20c4e13ca04f4c4/grpcio-1.73.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:277b426a0ed341e8447fbf6c1d6b68c952adddf585ea4685aa563de0f03df887", size = 10601131, upload-time = "2025-06-26T01:52:25.691Z" }, + { url = "https://files.pythonhosted.org/packages/0c/1d/1d39e90ef6348a0964caa7c5c4d05f3bae2c51ab429eb7d2e21198ac9b6d/grpcio-1.73.1-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:96c112333309493c10e118d92f04594f9055774757f5d101b39f8150f8c25582", size = 5759268, upload-time = "2025-06-26T01:52:27.631Z" }, + { url = "https://files.pythonhosted.org/packages/8a/2b/2dfe9ae43de75616177bc576df4c36d6401e0959833b2e5b2d58d50c1f6b/grpcio-1.73.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f48e862aed925ae987eb7084409a80985de75243389dc9d9c271dd711e589918", size = 6409791, upload-time = "2025-06-26T01:52:29.711Z" }, + { url = "https://files.pythonhosted.org/packages/6e/66/e8fe779b23b5a26d1b6949e5c70bc0a5fd08f61a6ec5ac7760d589229511/grpcio-1.73.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:83a6c2cce218e28f5040429835fa34a29319071079e3169f9543c3fbeff166d2", size = 6003728, upload-time = "2025-06-26T01:52:31.352Z" }, + { url = "https://files.pythonhosted.org/packages/a9/39/57a18fcef567784108c4fc3f5441cb9938ae5a51378505aafe81e8e15ecc/grpcio-1.73.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:65b0458a10b100d815a8426b1442bd17001fdb77ea13665b2f7dc9e8587fdc6b", size = 6103364, upload-time = "2025-06-26T01:52:33.028Z" }, + { url = "https://files.pythonhosted.org/packages/c5/46/28919d2aa038712fc399d02fa83e998abd8c1f46c2680c5689deca06d1b2/grpcio-1.73.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:0a9f3ea8dce9eae9d7cb36827200133a72b37a63896e0e61a9d5ec7d61a59ab1", size = 6749194, upload-time = "2025-06-26T01:52:34.734Z" }, + { url = "https://files.pythonhosted.org/packages/3d/56/3898526f1fad588c5d19a29ea0a3a4996fb4fa7d7c02dc1be0c9fd188b62/grpcio-1.73.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:de18769aea47f18e782bf6819a37c1c528914bfd5683b8782b9da356506190c8", size = 6283902, upload-time = "2025-06-26T01:52:36.503Z" }, + { url = "https://files.pythonhosted.org/packages/dc/64/18b77b89c5870d8ea91818feb0c3ffb5b31b48d1b0ee3e0f0d539730fea3/grpcio-1.73.1-cp312-cp312-win32.whl", hash = "sha256:24e06a5319e33041e322d32c62b1e728f18ab8c9dbc91729a3d9f9e3ed336642", size = 3668687, upload-time = "2025-06-26T01:52:38.678Z" }, + { url = "https://files.pythonhosted.org/packages/3c/52/302448ca6e52f2a77166b2e2ed75f5d08feca4f2145faf75cb768cccb25b/grpcio-1.73.1-cp312-cp312-win_amd64.whl", hash = "sha256:303c8135d8ab176f8038c14cc10d698ae1db9c480f2b2823f7a987aa2a4c5646", size = 4334887, upload-time = "2025-06-26T01:52:40.743Z" }, + { url = "https://files.pythonhosted.org/packages/37/bf/4ca20d1acbefabcaba633ab17f4244cbbe8eca877df01517207bd6655914/grpcio-1.73.1-cp313-cp313-linux_armv7l.whl", hash = "sha256:b310824ab5092cf74750ebd8a8a8981c1810cb2b363210e70d06ef37ad80d4f9", size = 5335615, upload-time = "2025-06-26T01:52:42.896Z" }, + { url = "https://files.pythonhosted.org/packages/75/ed/45c345f284abec5d4f6d77cbca9c52c39b554397eb7de7d2fcf440bcd049/grpcio-1.73.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:8f5a6df3fba31a3485096ac85b2e34b9666ffb0590df0cd044f58694e6a1f6b5", size = 10595497, upload-time = "2025-06-26T01:52:44.695Z" }, + { url = "https://files.pythonhosted.org/packages/a4/75/bff2c2728018f546d812b755455014bc718f8cdcbf5c84f1f6e5494443a8/grpcio-1.73.1-cp313-cp313-manylinux_2_17_aarch64.whl", hash = "sha256:052e28fe9c41357da42250a91926a3e2f74c046575c070b69659467ca5aa976b", size = 5765321, upload-time = "2025-06-26T01:52:46.871Z" }, + { url = "https://files.pythonhosted.org/packages/70/3b/14e43158d3b81a38251b1d231dfb45a9b492d872102a919fbf7ba4ac20cd/grpcio-1.73.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c0bf15f629b1497436596b1cbddddfa3234273490229ca29561209778ebe182", size = 6415436, upload-time = "2025-06-26T01:52:49.134Z" }, + { url = "https://files.pythonhosted.org/packages/e5/3f/81d9650ca40b54338336fd360f36773be8cb6c07c036e751d8996eb96598/grpcio-1.73.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ab860d5bfa788c5a021fba264802e2593688cd965d1374d31d2b1a34cacd854", size = 6007012, upload-time = "2025-06-26T01:52:51.076Z" }, + { url = "https://files.pythonhosted.org/packages/55/f4/59edf5af68d684d0f4f7ad9462a418ac517201c238551529098c9aa28cb0/grpcio-1.73.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:ad1d958c31cc91ab050bd8a91355480b8e0683e21176522bacea225ce51163f2", size = 6105209, upload-time = "2025-06-26T01:52:52.773Z" }, + { url = "https://files.pythonhosted.org/packages/e4/a8/700d034d5d0786a5ba14bfa9ce974ed4c976936c2748c2bd87aa50f69b36/grpcio-1.73.1-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:f43ffb3bd415c57224c7427bfb9e6c46a0b6e998754bfa0d00f408e1873dcbb5", size = 6753655, upload-time = "2025-06-26T01:52:55.064Z" }, + { url = "https://files.pythonhosted.org/packages/1f/29/efbd4ac837c23bc48e34bbaf32bd429f0dc9ad7f80721cdb4622144c118c/grpcio-1.73.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:686231cdd03a8a8055f798b2b54b19428cdf18fa1549bee92249b43607c42668", size = 6287288, upload-time = "2025-06-26T01:52:57.33Z" }, + { url = "https://files.pythonhosted.org/packages/d8/61/c6045d2ce16624bbe18b5d169c1a5ce4d6c3a47bc9d0e5c4fa6a50ed1239/grpcio-1.73.1-cp313-cp313-win32.whl", hash = "sha256:89018866a096e2ce21e05eabed1567479713ebe57b1db7cbb0f1e3b896793ba4", size = 3668151, upload-time = "2025-06-26T01:52:59.405Z" }, + { url = "https://files.pythonhosted.org/packages/c2/d7/77ac689216daee10de318db5aa1b88d159432dc76a130948a56b3aa671a2/grpcio-1.73.1-cp313-cp313-win_amd64.whl", hash = "sha256:4a68f8c9966b94dff693670a5cf2b54888a48a5011c5d9ce2295a1a1465ee84f", size = 4335747, upload-time = "2025-06-26T01:53:01.233Z" }, + { url = "https://files.pythonhosted.org/packages/58/c7/f552f0e79e7f585ff8c35b703342bd70a93a46fdf6d8b6574f33d39acb74/grpcio-1.73.1-cp39-cp39-linux_armv7l.whl", hash = "sha256:b4adc97d2d7f5c660a5498bda978ebb866066ad10097265a5da0511323ae9f50", size = 5363972, upload-time = "2025-06-26T01:53:03.185Z" }, + { url = "https://files.pythonhosted.org/packages/2c/63/226989531ea73030775ef87ac6c01460384f7c6ea7423e93383674e60a81/grpcio-1.73.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:c45a28a0cfb6ddcc7dc50a29de44ecac53d115c3388b2782404218db51cb2df3", size = 10614120, upload-time = "2025-06-26T01:53:05.643Z" }, + { url = "https://files.pythonhosted.org/packages/45/63/12027d4a09b613efa481447f5d12a52804d77287325bbfeed39d72cf29da/grpcio-1.73.1-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:10af9f2ab98a39f5b6c1896c6fc2036744b5b41d12739d48bed4c3e15b6cf900", size = 5804172, upload-time = "2025-06-26T01:53:07.828Z" }, + { url = "https://files.pythonhosted.org/packages/09/c5/a158c4fa26c0f203966664f37e52175c0c262772a8c39b78812b2e39a9e8/grpcio-1.73.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:45cf17dcce5ebdb7b4fe9e86cb338fa99d7d1bb71defc78228e1ddf8d0de8cbb", size = 6445602, upload-time = "2025-06-26T01:53:09.657Z" }, + { url = "https://files.pythonhosted.org/packages/cb/e2/d6fb85964d52d30baace1a6b2fe1be7941882239ae1f1cda2aaa80827ccd/grpcio-1.73.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c502c2e950fc7e8bf05c047e8a14522ef7babac59abbfde6dbf46b7a0d9c71e", size = 6041413, upload-time = "2025-06-26T01:53:11.591Z" }, + { url = "https://files.pythonhosted.org/packages/da/a6/8d06b3de85486ac71a49a656d7ff546974f3a5449ecb6178fd62a3251cdb/grpcio-1.73.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6abfc0f9153dc4924536f40336f88bd4fe7bd7494f028675e2e04291b8c2c62a", size = 6133190, upload-time = "2025-06-26T01:53:13.888Z" }, + { url = "https://files.pythonhosted.org/packages/5d/80/73f86bc940fd570f2486673424277bfdef8b0046309fd693856d31f1c1df/grpcio-1.73.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:ed451a0e39c8e51eb1612b78686839efd1a920666d1666c1adfdb4fd51680c0f", size = 6775225, upload-time = "2025-06-26T01:53:15.718Z" }, + { url = "https://files.pythonhosted.org/packages/23/c5/722cfa1b6b5f747a2066291eb8ba3acbcd25f02ce9dc9088eafb7f92eb6d/grpcio-1.73.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:07f08705a5505c9b5b0cbcbabafb96462b5a15b7236bbf6bbcc6b0b91e1cbd7e", size = 6305332, upload-time = "2025-06-26T01:53:18.363Z" }, + { url = "https://files.pythonhosted.org/packages/a9/d8/8ecdccf7759249a6d124c624e2b5a26176d44e91be78975c9aabbe81159b/grpcio-1.73.1-cp39-cp39-win32.whl", hash = "sha256:ad5c958cc3d98bb9d71714dc69f1c13aaf2f4b53e29d4cc3f1501ef2e4d129b2", size = 3680535, upload-time = "2025-06-26T01:53:20.266Z" }, + { url = "https://files.pythonhosted.org/packages/2c/d9/e7369ba582129094ecedb16f60e3cd250cd0fb0ea28adbdcf98002b4f80a/grpcio-1.73.1-cp39-cp39-win_amd64.whl", hash = "sha256:42f0660bce31b745eb9d23f094a332d31f210dcadd0fc8e5be7e4c62a87ce86b", size = 4342138, upload-time = "2025-06-26T01:53:22.095Z" }, +] + +[[package]] +name = "h11" +version = "0.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250, upload-time = "2025-04-24T03:35:25.427Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" }, ] [[package]] @@ -788,6 +1466,86 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b4/e4/fb8032d0e5480b1db9b419b5b50737b61bb3c7187c49d809975d62129fb0/h5py-3.14.0-cp39-cp39-win_amd64.whl", hash = "sha256:4f025cf30ae738c4c4e38c7439a761a71ccfcce04c2b87b2a2ac64e8c5171d43", size = 2877166, upload-time = "2025-06-06T14:06:13.05Z" }, ] +[[package]] +name = "httpcore" +version = "1.0.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "h11" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484, upload-time = "2025-04-24T22:06:22.219Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784, upload-time = "2025-04-24T22:06:20.566Z" }, +] + +[[package]] +name = "httptools" +version = "0.6.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a7/9a/ce5e1f7e131522e6d3426e8e7a490b3a01f39a6696602e1c4f33f9e94277/httptools-0.6.4.tar.gz", hash = "sha256:4e93eee4add6493b59a5c514da98c939b244fce4a0d8879cd3f466562f4b7d5c", size = 240639, upload-time = "2024-10-16T19:45:08.902Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3b/6f/972f8eb0ea7d98a1c6be436e2142d51ad2a64ee18e02b0e7ff1f62171ab1/httptools-0.6.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3c73ce323711a6ffb0d247dcd5a550b8babf0f757e86a52558fe5b86d6fefcc0", size = 198780, upload-time = "2024-10-16T19:44:06.882Z" }, + { url = "https://files.pythonhosted.org/packages/6a/b0/17c672b4bc5c7ba7f201eada4e96c71d0a59fbc185e60e42580093a86f21/httptools-0.6.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:345c288418f0944a6fe67be8e6afa9262b18c7626c3ef3c28adc5eabc06a68da", size = 103297, upload-time = "2024-10-16T19:44:08.129Z" }, + { url = "https://files.pythonhosted.org/packages/92/5e/b4a826fe91971a0b68e8c2bd4e7db3e7519882f5a8ccdb1194be2b3ab98f/httptools-0.6.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:deee0e3343f98ee8047e9f4c5bc7cedbf69f5734454a94c38ee829fb2d5fa3c1", size = 443130, upload-time = "2024-10-16T19:44:09.45Z" }, + { url = "https://files.pythonhosted.org/packages/b0/51/ce61e531e40289a681a463e1258fa1e05e0be54540e40d91d065a264cd8f/httptools-0.6.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca80b7485c76f768a3bc83ea58373f8db7b015551117375e4918e2aa77ea9b50", size = 442148, upload-time = "2024-10-16T19:44:11.539Z" }, + { url = "https://files.pythonhosted.org/packages/ea/9e/270b7d767849b0c96f275c695d27ca76c30671f8eb8cc1bab6ced5c5e1d0/httptools-0.6.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:90d96a385fa941283ebd231464045187a31ad932ebfa541be8edf5b3c2328959", size = 415949, upload-time = "2024-10-16T19:44:13.388Z" }, + { url = "https://files.pythonhosted.org/packages/81/86/ced96e3179c48c6f656354e106934e65c8963d48b69be78f355797f0e1b3/httptools-0.6.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:59e724f8b332319e2875efd360e61ac07f33b492889284a3e05e6d13746876f4", size = 417591, upload-time = "2024-10-16T19:44:15.258Z" }, + { url = "https://files.pythonhosted.org/packages/75/73/187a3f620ed3175364ddb56847d7a608a6fc42d551e133197098c0143eca/httptools-0.6.4-cp310-cp310-win_amd64.whl", hash = "sha256:c26f313951f6e26147833fc923f78f95604bbec812a43e5ee37f26dc9e5a686c", size = 88344, upload-time = "2024-10-16T19:44:16.54Z" }, + { url = "https://files.pythonhosted.org/packages/7b/26/bb526d4d14c2774fe07113ca1db7255737ffbb119315839af2065abfdac3/httptools-0.6.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f47f8ed67cc0ff862b84a1189831d1d33c963fb3ce1ee0c65d3b0cbe7b711069", size = 199029, upload-time = "2024-10-16T19:44:18.427Z" }, + { url = "https://files.pythonhosted.org/packages/a6/17/3e0d3e9b901c732987a45f4f94d4e2c62b89a041d93db89eafb262afd8d5/httptools-0.6.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0614154d5454c21b6410fdf5262b4a3ddb0f53f1e1721cfd59d55f32138c578a", size = 103492, upload-time = "2024-10-16T19:44:19.515Z" }, + { url = "https://files.pythonhosted.org/packages/b7/24/0fe235d7b69c42423c7698d086d4db96475f9b50b6ad26a718ef27a0bce6/httptools-0.6.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8787367fbdfccae38e35abf7641dafc5310310a5987b689f4c32cc8cc3ee975", size = 462891, upload-time = "2024-10-16T19:44:21.067Z" }, + { url = "https://files.pythonhosted.org/packages/b1/2f/205d1f2a190b72da6ffb5f41a3736c26d6fa7871101212b15e9b5cd8f61d/httptools-0.6.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40b0f7fe4fd38e6a507bdb751db0379df1e99120c65fbdc8ee6c1d044897a636", size = 459788, upload-time = "2024-10-16T19:44:22.958Z" }, + { url = "https://files.pythonhosted.org/packages/6e/4c/d09ce0eff09057a206a74575ae8f1e1e2f0364d20e2442224f9e6612c8b9/httptools-0.6.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:40a5ec98d3f49904b9fe36827dcf1aadfef3b89e2bd05b0e35e94f97c2b14721", size = 433214, upload-time = "2024-10-16T19:44:24.513Z" }, + { url = "https://files.pythonhosted.org/packages/3e/d2/84c9e23edbccc4a4c6f96a1b8d99dfd2350289e94f00e9ccc7aadde26fb5/httptools-0.6.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:dacdd3d10ea1b4ca9df97a0a303cbacafc04b5cd375fa98732678151643d4988", size = 434120, upload-time = "2024-10-16T19:44:26.295Z" }, + { url = "https://files.pythonhosted.org/packages/d0/46/4d8e7ba9581416de1c425b8264e2cadd201eb709ec1584c381f3e98f51c1/httptools-0.6.4-cp311-cp311-win_amd64.whl", hash = "sha256:288cd628406cc53f9a541cfaf06041b4c71d751856bab45e3702191f931ccd17", size = 88565, upload-time = "2024-10-16T19:44:29.188Z" }, + { url = "https://files.pythonhosted.org/packages/bb/0e/d0b71465c66b9185f90a091ab36389a7352985fe857e352801c39d6127c8/httptools-0.6.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:df017d6c780287d5c80601dafa31f17bddb170232d85c066604d8558683711a2", size = 200683, upload-time = "2024-10-16T19:44:30.175Z" }, + { url = "https://files.pythonhosted.org/packages/e2/b8/412a9bb28d0a8988de3296e01efa0bd62068b33856cdda47fe1b5e890954/httptools-0.6.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:85071a1e8c2d051b507161f6c3e26155b5c790e4e28d7f236422dbacc2a9cc44", size = 104337, upload-time = "2024-10-16T19:44:31.786Z" }, + { url = "https://files.pythonhosted.org/packages/9b/01/6fb20be3196ffdc8eeec4e653bc2a275eca7f36634c86302242c4fbb2760/httptools-0.6.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69422b7f458c5af875922cdb5bd586cc1f1033295aa9ff63ee196a87519ac8e1", size = 508796, upload-time = "2024-10-16T19:44:32.825Z" }, + { url = "https://files.pythonhosted.org/packages/f7/d8/b644c44acc1368938317d76ac991c9bba1166311880bcc0ac297cb9d6bd7/httptools-0.6.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16e603a3bff50db08cd578d54f07032ca1631450ceb972c2f834c2b860c28ea2", size = 510837, upload-time = "2024-10-16T19:44:33.974Z" }, + { url = "https://files.pythonhosted.org/packages/52/d8/254d16a31d543073a0e57f1c329ca7378d8924e7e292eda72d0064987486/httptools-0.6.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ec4f178901fa1834d4a060320d2f3abc5c9e39766953d038f1458cb885f47e81", size = 485289, upload-time = "2024-10-16T19:44:35.111Z" }, + { url = "https://files.pythonhosted.org/packages/5f/3c/4aee161b4b7a971660b8be71a92c24d6c64372c1ab3ae7f366b3680df20f/httptools-0.6.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f9eb89ecf8b290f2e293325c646a211ff1c2493222798bb80a530c5e7502494f", size = 489779, upload-time = "2024-10-16T19:44:36.253Z" }, + { url = "https://files.pythonhosted.org/packages/12/b7/5cae71a8868e555f3f67a50ee7f673ce36eac970f029c0c5e9d584352961/httptools-0.6.4-cp312-cp312-win_amd64.whl", hash = "sha256:db78cb9ca56b59b016e64b6031eda5653be0589dba2b1b43453f6e8b405a0970", size = 88634, upload-time = "2024-10-16T19:44:37.357Z" }, + { url = "https://files.pythonhosted.org/packages/94/a3/9fe9ad23fd35f7de6b91eeb60848986058bd8b5a5c1e256f5860a160cc3e/httptools-0.6.4-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ade273d7e767d5fae13fa637f4d53b6e961fb7fd93c7797562663f0171c26660", size = 197214, upload-time = "2024-10-16T19:44:38.738Z" }, + { url = "https://files.pythonhosted.org/packages/ea/d9/82d5e68bab783b632023f2fa31db20bebb4e89dfc4d2293945fd68484ee4/httptools-0.6.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:856f4bc0478ae143bad54a4242fccb1f3f86a6e1be5548fecfd4102061b3a083", size = 102431, upload-time = "2024-10-16T19:44:39.818Z" }, + { url = "https://files.pythonhosted.org/packages/96/c1/cb499655cbdbfb57b577734fde02f6fa0bbc3fe9fb4d87b742b512908dff/httptools-0.6.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:322d20ea9cdd1fa98bd6a74b77e2ec5b818abdc3d36695ab402a0de8ef2865a3", size = 473121, upload-time = "2024-10-16T19:44:41.189Z" }, + { url = "https://files.pythonhosted.org/packages/af/71/ee32fd358f8a3bb199b03261f10921716990808a675d8160b5383487a317/httptools-0.6.4-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4d87b29bd4486c0093fc64dea80231f7c7f7eb4dc70ae394d70a495ab8436071", size = 473805, upload-time = "2024-10-16T19:44:42.384Z" }, + { url = "https://files.pythonhosted.org/packages/8a/0a/0d4df132bfca1507114198b766f1737d57580c9ad1cf93c1ff673e3387be/httptools-0.6.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:342dd6946aa6bda4b8f18c734576106b8a31f2fe31492881a9a160ec84ff4bd5", size = 448858, upload-time = "2024-10-16T19:44:43.959Z" }, + { url = "https://files.pythonhosted.org/packages/1e/6a/787004fdef2cabea27bad1073bf6a33f2437b4dbd3b6fb4a9d71172b1c7c/httptools-0.6.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4b36913ba52008249223042dca46e69967985fb4051951f94357ea681e1f5dc0", size = 452042, upload-time = "2024-10-16T19:44:45.071Z" }, + { url = "https://files.pythonhosted.org/packages/4d/dc/7decab5c404d1d2cdc1bb330b1bf70e83d6af0396fd4fc76fc60c0d522bf/httptools-0.6.4-cp313-cp313-win_amd64.whl", hash = "sha256:28908df1b9bb8187393d5b5db91435ccc9c8e891657f9cbb42a2541b44c82fc8", size = 87682, upload-time = "2024-10-16T19:44:46.46Z" }, + { url = "https://files.pythonhosted.org/packages/51/b1/4fc6f52afdf93b7c4304e21f6add9e981e4f857c2fa622a55dfe21b6059e/httptools-0.6.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:85797e37e8eeaa5439d33e556662cc370e474445d5fab24dcadc65a8ffb04003", size = 201123, upload-time = "2024-10-16T19:44:59.13Z" }, + { url = "https://files.pythonhosted.org/packages/c2/01/e6ecb40ac8fdfb76607c7d3b74a41b464458d5c8710534d8f163b0c15f29/httptools-0.6.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:db353d22843cf1028f43c3651581e4bb49374d85692a85f95f7b9a130e1b2cab", size = 104507, upload-time = "2024-10-16T19:45:00.254Z" }, + { url = "https://files.pythonhosted.org/packages/dc/24/c70c34119d209bf08199d938dc9c69164f585ed3029237b4bdb90f673cb9/httptools-0.6.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1ffd262a73d7c28424252381a5b854c19d9de5f56f075445d33919a637e3547", size = 449615, upload-time = "2024-10-16T19:45:01.351Z" }, + { url = "https://files.pythonhosted.org/packages/2b/62/e7f317fed3703bd81053840cacba4e40bcf424b870e4197f94bd1cf9fe7a/httptools-0.6.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:703c346571fa50d2e9856a37d7cd9435a25e7fd15e236c397bf224afaa355fe9", size = 448819, upload-time = "2024-10-16T19:45:02.652Z" }, + { url = "https://files.pythonhosted.org/packages/2a/13/68337d3be6b023260139434c49d7aa466aaa98f9aee7ed29270ac7dde6a2/httptools-0.6.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:aafe0f1918ed07b67c1e838f950b1c1fabc683030477e60b335649b8020e1076", size = 422093, upload-time = "2024-10-16T19:45:03.765Z" }, + { url = "https://files.pythonhosted.org/packages/fc/b3/3a1bc45be03dda7a60c7858e55b6cd0489a81613c1908fb81cf21d34ae50/httptools-0.6.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0e563e54979e97b6d13f1bbc05a96109923e76b901f786a5eae36e99c01237bd", size = 423898, upload-time = "2024-10-16T19:45:05.683Z" }, + { url = "https://files.pythonhosted.org/packages/05/72/2ddc2ae5f7ace986f7e68a326215b2e7c32e32fd40e6428fa8f1d8065c7e/httptools-0.6.4-cp39-cp39-win_amd64.whl", hash = "sha256:b799de31416ecc589ad79dd85a0b2657a8fe39327944998dea368c1d4c9e55e6", size = 89552, upload-time = "2024-10-16T19:45:07.566Z" }, +] + +[[package]] +name = "httpx" +version = "0.28.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "certifi" }, + { name = "httpcore" }, + { name = "idna" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406, upload-time = "2024-12-06T15:37:23.222Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload-time = "2024-12-06T15:37:21.509Z" }, +] + +[[package]] +name = "identify" +version = "2.6.12" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/88/d193a27416618628a5eea64e3223acd800b40749a96ffb322a9b55a49ed1/identify-2.6.12.tar.gz", hash = "sha256:d8de45749f1efb108badef65ee8386f0f7bb19a7f26185f74de6367bffbaf0e6", size = 99254, upload-time = "2025-05-23T20:37:53.3Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7a/cd/18f8da995b658420625f7ef13f037be53ae04ec5ad33f9b718240dcfd48c/identify-2.6.12-py2.py3-none-any.whl", hash = "sha256:ad9672d5a72e0d2ff7c5c8809b62dfa60458626352fb0eb7b55e69bdc45334a2", size = 99145, upload-time = "2025-05-23T20:37:51.495Z" }, +] + [[package]] name = "idna" version = "3.10" @@ -802,7 +1560,7 @@ name = "importlib-metadata" version = "8.7.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "zipp", marker = "python_full_version < '3.10'" }, + { name = "zipp" }, ] sdist = { url = "https://files.pythonhosted.org/packages/76/66/650a33bd90f786193e4de4b3ad86ea60b53c89b669a5c7be931fac31cdb0/importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000", size = 56641, upload-time = "2025-04-27T15:29:01.736Z" } wheels = [ @@ -821,6 +1579,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a4/ed/1f1afb2e9e7f38a545d628f864d562a5ae64fe6f7a10e28ffb9b185b4e89/importlib_resources-6.5.2-py3-none-any.whl", hash = "sha256:789cfdc3ed28c78b67a06acb8126751ced69a3d5f79c095a98298cd8a760ccec", size = 37461, upload-time = "2025-01-03T18:51:54.306Z" }, ] +[[package]] +name = "iniconfig" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793, upload-time = "2025-03-19T20:09:59.721Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050, upload-time = "2025-03-19T20:10:01.071Z" }, +] + [[package]] name = "ipykernel" version = "6.29.5" @@ -854,7 +1621,8 @@ source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", ] dependencies = [ { name = "colorama", marker = "python_full_version < '3.10' and sys_platform == 'win32'" }, @@ -879,7 +1647,8 @@ name = "ipython" version = "8.37.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -906,10 +1675,16 @@ name = "ipython" version = "9.4.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.12' and sys_platform == 'darwin'", - "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -961,6 +1736,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/58/6a/9166369a2f092bd286d24e6307de555d63616e8ddb373ebad2b5635ca4cd/ipywidgets-8.1.7-py3-none-any.whl", hash = "sha256:764f2602d25471c213919b8a1997df04bef869251db4ca8efba1b76b1bd9f7bb", size = 139806, upload-time = "2025-05-05T12:41:56.833Z" }, ] +[[package]] +name = "isoduration" +version = "20.11.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "arrow" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7c/1a/3c8edc664e06e6bd06cce40c6b22da5f1429aa4224d0c590f3be21c91ead/isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9", size = 11649, upload-time = "2020-11-01T11:00:00.312Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/55/e5326141505c5d5e34c5e0935d2908a74e4561eca44108fbfb9c13d2911a/isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042", size = 11321, upload-time = "2020-11-01T10:59:58.02Z" }, +] + [[package]] name = "jedi" version = "0.19.2" @@ -994,6 +1781,80 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/7d/4f/1195bbac8e0c2acc5f740661631d8d750dc38d4a32b23ee5df3cde6f4e0d/joblib-1.5.1-py3-none-any.whl", hash = "sha256:4719a31f054c7d766948dcd83e9613686b27114f190f717cec7eaa2084f8a74a", size = 307746, upload-time = "2025-05-23T12:04:35.124Z" }, ] +[[package]] +name = "json5" +version = "0.12.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/12/be/c6c745ec4c4539b25a278b70e29793f10382947df0d9efba2fa09120895d/json5-0.12.0.tar.gz", hash = "sha256:0b4b6ff56801a1c7dc817b0241bca4ce474a0e6a163bfef3fc594d3fd263ff3a", size = 51907, upload-time = "2025-04-03T16:33:13.201Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/41/9f/3500910d5a98549e3098807493851eeef2b89cdd3032227558a104dfe926/json5-0.12.0-py3-none-any.whl", hash = "sha256:6d37aa6c08b0609f16e1ec5ff94697e2cbbfbad5ac112afa05794da9ab7810db", size = 36079, upload-time = "2025-04-03T16:33:11.927Z" }, +] + +[[package]] +name = "jsonpointer" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6a/0a/eebeb1fa92507ea94016a2a790b93c2ae41a7e18778f85471dc54475ed25/jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef", size = 9114, upload-time = "2024-06-10T19:24:42.462Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/71/92/5e77f98553e9e75130c78900d000368476aed74276eb8ae8796f65f00918/jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942", size = 7595, upload-time = "2024-06-10T19:24:40.698Z" }, +] + +[[package]] +name = "jsonschema" +version = "4.24.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "jsonschema-specifications" }, + { name = "referencing" }, + { name = "rpds-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bf/d3/1cf5326b923a53515d8f3a2cd442e6d7e94fcc444716e879ea70a0ce3177/jsonschema-4.24.0.tar.gz", hash = "sha256:0b4e8069eb12aedfa881333004bccaec24ecef5a8a6a4b6df142b2cc9599d196", size = 353480, upload-time = "2025-05-26T18:48:10.459Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a2/3d/023389198f69c722d039351050738d6755376c8fd343e91dc493ea485905/jsonschema-4.24.0-py3-none-any.whl", hash = "sha256:a462455f19f5faf404a7902952b6f0e3ce868f3ee09a359b05eca6673bd8412d", size = 88709, upload-time = "2025-05-26T18:48:08.417Z" }, +] + +[package.optional-dependencies] +format-nongpl = [ + { name = "fqdn" }, + { name = "idna" }, + { name = "isoduration" }, + { name = "jsonpointer" }, + { name = "rfc3339-validator" }, + { name = "rfc3986-validator" }, + { name = "uri-template" }, + { name = "webcolors" }, +] + +[[package]] +name = "jsonschema-specifications" +version = "2025.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "referencing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bf/ce/46fbd9c8119cfc3581ee5643ea49464d168028cfb5caff5fc0596d0cf914/jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608", size = 15513, upload-time = "2025-04-23T12:34:07.418Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/01/0e/b27cdbaccf30b890c40ed1da9fd4a3593a5cf94dae54fb34f8a4b74fcd3f/jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af", size = 18437, upload-time = "2025-04-23T12:34:05.422Z" }, +] + +[[package]] +name = "jupyter" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ipykernel" }, + { name = "ipywidgets" }, + { name = "jupyter-console" }, + { name = "jupyterlab" }, + { name = "nbconvert" }, + { name = "notebook" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/58/f3/af28ea964ab8bc1e472dba2e82627d36d470c51f5cd38c37502eeffaa25e/jupyter-1.1.1.tar.gz", hash = "sha256:d55467bceabdea49d7e3624af7e33d59c37fff53ed3a350e1ac957bed731de7a", size = 5714959, upload-time = "2024-08-30T07:15:48.299Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/64/285f20a31679bf547b75602702f7800e74dbabae36ef324f716c02804753/jupyter-1.1.1-py2.py3-none-any.whl", hash = "sha256:7a59533c22af65439b24bbe60373a4e95af8f16ac65a6c00820ad378e3f7cc83", size = 2657, upload-time = "2024-08-30T07:15:47.045Z" }, +] + [[package]] name = "jupyter-client" version = "8.6.3" @@ -1011,6 +1872,27 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f", size = 106105, upload-time = "2024-09-17T10:44:15.218Z" }, ] +[[package]] +name = "jupyter-console" +version = "6.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ipykernel" }, + { name = "ipython", version = "8.18.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "ipython", version = "8.37.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "ipython", version = "9.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "prompt-toolkit" }, + { name = "pygments" }, + { name = "pyzmq" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bd/2d/e2fd31e2fc41c14e2bcb6c976ab732597e907523f6b2420305f9fc7fdbdb/jupyter_console-6.6.3.tar.gz", hash = "sha256:566a4bf31c87adbfadf22cdf846e3069b59a71ed5da71d6ba4d8aaad14a53539", size = 34363, upload-time = "2023-03-06T14:13:31.02Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ca/77/71d78d58f15c22db16328a476426f7ac4a60d3a5a7ba3b9627ee2f7903d4/jupyter_console-6.6.3-py3-none-any.whl", hash = "sha256:309d33409fcc92ffdad25f0bcdf9a4a9daa61b6f341177570fdac03de5352485", size = 24510, upload-time = "2023-03-06T14:13:28.229Z" }, +] + [[package]] name = "jupyter-core" version = "5.8.1" @@ -1020,9 +1902,138 @@ dependencies = [ { name = "pywin32", marker = "platform_python_implementation != 'PyPy' and sys_platform == 'win32'" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/99/1b/72906d554acfeb588332eaaa6f61577705e9ec752ddb486f302dafa292d9/jupyter_core-5.8.1.tar.gz", hash = "sha256:0a5f9706f70e64786b75acba995988915ebd4601c8a52e534a40b51c95f59941", size = 88923, upload-time = "2025-05-27T07:38:16.655Z" } +sdist = { url = "https://files.pythonhosted.org/packages/99/1b/72906d554acfeb588332eaaa6f61577705e9ec752ddb486f302dafa292d9/jupyter_core-5.8.1.tar.gz", hash = "sha256:0a5f9706f70e64786b75acba995988915ebd4601c8a52e534a40b51c95f59941", size = 88923, upload-time = "2025-05-27T07:38:16.655Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2f/57/6bffd4b20b88da3800c5d691e0337761576ee688eb01299eae865689d2df/jupyter_core-5.8.1-py3-none-any.whl", hash = "sha256:c28d268fc90fb53f1338ded2eb410704c5449a358406e8a948b75706e24863d0", size = 28880, upload-time = "2025-05-27T07:38:15.137Z" }, +] + +[[package]] +name = "jupyter-events" +version = "0.12.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jsonschema", extra = ["format-nongpl"] }, + { name = "packaging" }, + { name = "python-json-logger" }, + { name = "pyyaml" }, + { name = "referencing" }, + { name = "rfc3339-validator" }, + { name = "rfc3986-validator" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9d/c3/306d090461e4cf3cd91eceaff84bede12a8e52cd821c2d20c9a4fd728385/jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b", size = 62196, upload-time = "2025-02-03T17:23:41.485Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e2/48/577993f1f99c552f18a0428731a755e06171f9902fa118c379eb7c04ea22/jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb", size = 19430, upload-time = "2025-02-03T17:23:38.643Z" }, +] + +[[package]] +name = "jupyter-lsp" +version = "2.2.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "importlib-metadata", marker = "python_full_version < '3.10'" }, + { name = "jupyter-server" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/85/b4/3200b0b09c12bc3b72d943d923323c398eff382d1dcc7c0dbc8b74630e40/jupyter-lsp-2.2.5.tar.gz", hash = "sha256:793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943a982cb4f545001", size = 48741, upload-time = "2024-04-09T17:59:44.918Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/e0/7bd7cff65594fd9936e2f9385701e44574fc7d721331ff676ce440b14100/jupyter_lsp-2.2.5-py3-none-any.whl", hash = "sha256:45fbddbd505f3fbfb0b6cb2f1bc5e15e83ab7c79cd6e89416b248cb3c00c11da", size = 69146, upload-time = "2024-04-09T17:59:43.388Z" }, +] + +[[package]] +name = "jupyter-server" +version = "2.16.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "argon2-cffi" }, + { name = "jinja2" }, + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "jupyter-events" }, + { name = "jupyter-server-terminals" }, + { name = "nbconvert" }, + { name = "nbformat" }, + { name = "overrides" }, + { name = "packaging" }, + { name = "prometheus-client" }, + { name = "pywinpty", marker = "(python_full_version < '3.10' and os_name == 'nt' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (os_name == 'nt' and platform_machine != 'aarch64' and sys_platform == 'linux') or (os_name == 'nt' and sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "pyzmq" }, + { name = "send2trash" }, + { name = "terminado" }, + { name = "tornado" }, + { name = "traitlets" }, + { name = "websocket-client" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/41/c8/ba2bbcd758c47f1124c4ca14061e8ce60d9c6fd537faee9534a95f83521a/jupyter_server-2.16.0.tar.gz", hash = "sha256:65d4b44fdf2dcbbdfe0aa1ace4a842d4aaf746a2b7b168134d5aaed35621b7f6", size = 728177, upload-time = "2025-05-12T16:44:46.245Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/46/1f/5ebbced977171d09a7b0c08a285ff9a20aafb9c51bde07e52349ff1ddd71/jupyter_server-2.16.0-py3-none-any.whl", hash = "sha256:3d8db5be3bc64403b1c65b400a1d7f4647a5ce743f3b20dbdefe8ddb7b55af9e", size = 386904, upload-time = "2025-05-12T16:44:43.335Z" }, +] + +[[package]] +name = "jupyter-server-terminals" +version = "0.5.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pywinpty", marker = "(python_full_version < '3.10' and os_name == 'nt' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (os_name == 'nt' and platform_machine != 'aarch64' and sys_platform == 'linux') or (os_name == 'nt' and sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "terminado" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fc/d5/562469734f476159e99a55426d697cbf8e7eb5efe89fb0e0b4f83a3d3459/jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269", size = 31430, upload-time = "2024-03-12T14:37:03.049Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/2d/2b32cdbe8d2a602f697a649798554e4f072115438e92249624e532e8aca6/jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa", size = 13656, upload-time = "2024-03-12T14:37:00.708Z" }, +] + +[[package]] +name = "jupyterlab" +version = "4.4.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "async-lru" }, + { name = "httpx" }, + { name = "importlib-metadata", marker = "python_full_version < '3.10'" }, + { name = "ipykernel" }, + { name = "jinja2" }, + { name = "jupyter-core" }, + { name = "jupyter-lsp" }, + { name = "jupyter-server" }, + { name = "jupyterlab-server" }, + { name = "notebook-shim" }, + { name = "packaging" }, + { name = "setuptools" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, + { name = "tornado" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e2/4d/7ca5b46ea56742880d71a768a9e6fb8f8482228427eb89492d55c5d0bb7d/jupyterlab-4.4.4.tar.gz", hash = "sha256:163fee1ef702e0a057f75d2eed3ed1da8a986d59eb002cbeb6f0c2779e6cd153", size = 23044296, upload-time = "2025-06-28T13:07:20.708Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/82/66910ce0995dbfdb33609f41c99fe32ce483b9624a3e7d672af14ff63b9f/jupyterlab-4.4.4-py3-none-any.whl", hash = "sha256:711611e4f59851152eb93316c3547c3ec6291f16bb455f1f4fa380d25637e0dd", size = 12296310, upload-time = "2025-06-28T13:07:15.676Z" }, +] + +[[package]] +name = "jupyterlab-pygments" +version = "0.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/90/51/9187be60d989df97f5f0aba133fa54e7300f17616e065d1ada7d7646b6d6/jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d", size = 512900, upload-time = "2023-11-23T09:26:37.44Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b1/dd/ead9d8ea85bf202d90cc513b533f9c363121c7792674f78e0d8a854b63b4/jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780", size = 15884, upload-time = "2023-11-23T09:26:34.325Z" }, +] + +[[package]] +name = "jupyterlab-server" +version = "2.27.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "babel" }, + { name = "importlib-metadata", marker = "python_full_version < '3.10'" }, + { name = "jinja2" }, + { name = "json5" }, + { name = "jsonschema" }, + { name = "jupyter-server" }, + { name = "packaging" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0a/c9/a883ce65eb27905ce77ace410d83587c82ea64dc85a48d1f7ed52bcfa68d/jupyterlab_server-2.27.3.tar.gz", hash = "sha256:eb36caca59e74471988f0ae25c77945610b887f777255aa21f8065def9e51ed4", size = 76173, upload-time = "2024-07-16T17:02:04.149Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2f/57/6bffd4b20b88da3800c5d691e0337761576ee688eb01299eae865689d2df/jupyter_core-5.8.1-py3-none-any.whl", hash = "sha256:c28d268fc90fb53f1338ded2eb410704c5449a358406e8a948b75706e24863d0", size = 28880, upload-time = "2025-05-27T07:38:15.137Z" }, + { url = "https://files.pythonhosted.org/packages/54/09/2032e7d15c544a0e3cd831c51d77a8ca57f7555b2e1b2922142eddb02a84/jupyterlab_server-2.27.3-py3-none-any.whl", hash = "sha256:e697488f66c3db49df675158a77b3b017520d772c6e1548c7d9bcc5df7944ee4", size = 59700, upload-time = "2024-07-16T17:02:01.115Z" }, ] [[package]] @@ -1041,7 +2052,8 @@ source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", ] sdist = { url = "https://files.pythonhosted.org/packages/85/4d/2255e1c76304cbd60b48cee302b66d1dde4468dc5b1160e4b7cb43778f2a/kiwisolver-1.4.7.tar.gz", hash = "sha256:9893ff81bd7107f7b685d3017cc6583daadb4fc26e4a888350df530e41980a60", size = 97286, upload-time = "2024-09-04T09:39:44.302Z" } wheels = [ @@ -1144,13 +2156,20 @@ name = "kiwisolver" version = "1.4.8" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.12' and sys_platform == 'darwin'", - "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -1237,6 +2256,41 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/3a/1d/50ad811d1c5dae091e4cf046beba925bcae0a610e79ae4c538f996f63ed5/kiwisolver-1.4.8-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:65ea09a5a3faadd59c2ce96dc7bf0f364986a315949dc6374f04396b0d60e09b", size = 71762, upload-time = "2024-12-24T18:30:48.903Z" }, ] +[[package]] +name = "lightning" +version = "2.5.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "fsspec", extra = ["http"] }, + { name = "lightning-utilities" }, + { name = "packaging" }, + { name = "pytorch-lightning" }, + { name = "pyyaml" }, + { name = "torch", version = "2.7.1", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version >= '3.10' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, + { name = "torch", version = "2.7.1+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64') or platform_machine == 'x86_64' or sys_platform != 'darwin'" }, + { name = "torchmetrics" }, + { name = "tqdm" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/3c/6a930ac7c64fb896adbe560a9141570732d9ca890a11e6d158edd5aece76/lightning-2.5.2.tar.gz", hash = "sha256:9550df613cfb22358ebf77b4a8ad45f3767cd7d26ba2d52b7f036bd3cdd701c4", size = 633391, upload-time = "2025-06-20T15:58:22.065Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/71/a9/5d39280e55dc5df9e98be074029f6b48f86fe3db4929cb9ada6401234b47/lightning-2.5.2-py3-none-any.whl", hash = "sha256:7e7f23245e214c8ec14d5d8119d3856c25cfe96f9856296fd5df4e29c2ff88a7", size = 821145, upload-time = "2025-06-20T15:58:18.609Z" }, +] + +[[package]] +name = "lightning-utilities" +version = "0.14.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, + { name = "setuptools" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0f/bb/63a6a8c9e7a96b6ba92647fa5b1595c2dbee29f8178705adb4704d82ecba/lightning_utilities-0.14.3.tar.gz", hash = "sha256:37e2f83f273890052955a44054382c211a303012ee577619efbaa5df9e65e9f5", size = 30346, upload-time = "2025-04-03T15:59:56.928Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1a/c1/31b3184cba7b257a4a3b5ca5b88b9204ccb7aa02fe3c992280899293ed54/lightning_utilities-0.14.3-py3-none-any.whl", hash = "sha256:4ab9066aa36cd7b93a05713808901909e96cc3f187ea6fd3052b2fd91313b468", size = 28894, upload-time = "2025-04-03T15:59:55.658Z" }, +] + [[package]] name = "markupsafe" version = "3.0.2" @@ -1312,7 +2366,8 @@ source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", ] dependencies = [ { name = "contourpy", version = "1.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, @@ -1375,13 +2430,20 @@ name = "matplotlib" version = "3.10.3" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.12' and sys_platform == 'darwin'", - "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -1446,6 +2508,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899, upload-time = "2024-04-15T13:44:43.265Z" }, ] +[[package]] +name = "mistune" +version = "3.1.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c4/79/bda47f7dd7c3c55770478d6d02c9960c430b0cf1773b72366ff89126ea31/mistune-3.1.3.tar.gz", hash = "sha256:a7035c21782b2becb6be62f8f25d3df81ccb4d6fa477a6525b15af06539f02a0", size = 94347, upload-time = "2025-03-19T14:27:24.955Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/01/4d/23c4e4f09da849e127e9f123241946c23c1e30f45a88366879e064211815/mistune-3.1.3-py3-none-any.whl", hash = "sha256:1a32314113cff28aa6432e99e522677c8587fd83e3d51c29b82a52409c842bd9", size = 53410, upload-time = "2025-03-19T14:27:23.451Z" }, +] + [[package]] name = "mpmath" version = "1.3.0" @@ -1513,6 +2587,182 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/20/d6/cd62cded572e5e25892747a5d27850170bcd03c855e9c69c538e024de6f9/msgpack-1.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:40eae974c873b2992fd36424a5d9407f93e97656d999f43fca9d29f820899084", size = 71700, upload-time = "2025-06-13T06:52:50.244Z" }, ] +[[package]] +name = "multidict" +version = "6.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3d/2c/5dad12e82fbdf7470f29bff2171484bf07cb3b16ada60a6589af8f376440/multidict-6.6.3.tar.gz", hash = "sha256:798a9eb12dab0a6c2e29c1de6f3468af5cb2da6053a20dfa3344907eed0937cc", size = 101006, upload-time = "2025-06-30T15:53:46.929Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/67/414933982bce2efce7cbcb3169eaaf901e0f25baec69432b4874dfb1f297/multidict-6.6.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a2be5b7b35271f7fff1397204ba6708365e3d773579fe2a30625e16c4b4ce817", size = 77017, upload-time = "2025-06-30T15:50:58.931Z" }, + { url = "https://files.pythonhosted.org/packages/8a/fe/d8a3ee1fad37dc2ef4f75488b0d9d4f25bf204aad8306cbab63d97bff64a/multidict-6.6.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:12f4581d2930840295c461764b9a65732ec01250b46c6b2c510d7ee68872b140", size = 44897, upload-time = "2025-06-30T15:51:00.999Z" }, + { url = "https://files.pythonhosted.org/packages/1f/e0/265d89af8c98240265d82b8cbcf35897f83b76cd59ee3ab3879050fd8c45/multidict-6.6.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:dd7793bab517e706c9ed9d7310b06c8672fd0aeee5781bfad612f56b8e0f7d14", size = 44574, upload-time = "2025-06-30T15:51:02.449Z" }, + { url = "https://files.pythonhosted.org/packages/e6/05/6b759379f7e8e04ccc97cfb2a5dcc5cdbd44a97f072b2272dc51281e6a40/multidict-6.6.3-cp310-cp310-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:72d8815f2cd3cf3df0f83cac3f3ef801d908b2d90409ae28102e0553af85545a", size = 225729, upload-time = "2025-06-30T15:51:03.794Z" }, + { url = "https://files.pythonhosted.org/packages/4e/f5/8d5a15488edd9a91fa4aad97228d785df208ed6298580883aa3d9def1959/multidict-6.6.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:531e331a2ee53543ab32b16334e2deb26f4e6b9b28e41f8e0c87e99a6c8e2d69", size = 242515, upload-time = "2025-06-30T15:51:05.002Z" }, + { url = "https://files.pythonhosted.org/packages/6e/b5/a8f317d47d0ac5bb746d6d8325885c8967c2a8ce0bb57be5399e3642cccb/multidict-6.6.3-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:42ca5aa9329a63be8dc49040f63817d1ac980e02eeddba763a9ae5b4027b9c9c", size = 222224, upload-time = "2025-06-30T15:51:06.148Z" }, + { url = "https://files.pythonhosted.org/packages/76/88/18b2a0d5e80515fa22716556061189c2853ecf2aa2133081ebbe85ebea38/multidict-6.6.3-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:208b9b9757060b9faa6f11ab4bc52846e4f3c2fb8b14d5680c8aac80af3dc751", size = 253124, upload-time = "2025-06-30T15:51:07.375Z" }, + { url = "https://files.pythonhosted.org/packages/62/bf/ebfcfd6b55a1b05ef16d0775ae34c0fe15e8dab570d69ca9941073b969e7/multidict-6.6.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:acf6b97bd0884891af6a8b43d0f586ab2fcf8e717cbd47ab4bdddc09e20652d8", size = 251529, upload-time = "2025-06-30T15:51:08.691Z" }, + { url = "https://files.pythonhosted.org/packages/44/11/780615a98fd3775fc309d0234d563941af69ade2df0bb82c91dda6ddaea1/multidict-6.6.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:68e9e12ed00e2089725669bdc88602b0b6f8d23c0c95e52b95f0bc69f7fe9b55", size = 241627, upload-time = "2025-06-30T15:51:10.605Z" }, + { url = "https://files.pythonhosted.org/packages/28/3d/35f33045e21034b388686213752cabc3a1b9d03e20969e6fa8f1b1d82db1/multidict-6.6.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:05db2f66c9addb10cfa226e1acb363450fab2ff8a6df73c622fefe2f5af6d4e7", size = 239351, upload-time = "2025-06-30T15:51:12.18Z" }, + { url = "https://files.pythonhosted.org/packages/6e/cc/ff84c03b95b430015d2166d9aae775a3985d757b94f6635010d0038d9241/multidict-6.6.3-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:0db58da8eafb514db832a1b44f8fa7906fdd102f7d982025f816a93ba45e3dcb", size = 233429, upload-time = "2025-06-30T15:51:13.533Z" }, + { url = "https://files.pythonhosted.org/packages/2e/f0/8cd49a0b37bdea673a4b793c2093f2f4ba8e7c9d6d7c9bd672fd6d38cd11/multidict-6.6.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:14117a41c8fdb3ee19c743b1c027da0736fdb79584d61a766da53d399b71176c", size = 243094, upload-time = "2025-06-30T15:51:14.815Z" }, + { url = "https://files.pythonhosted.org/packages/96/19/5d9a0cfdafe65d82b616a45ae950975820289069f885328e8185e64283c2/multidict-6.6.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:877443eaaabcd0b74ff32ebeed6f6176c71850feb7d6a1d2db65945256ea535c", size = 248957, upload-time = "2025-06-30T15:51:16.076Z" }, + { url = "https://files.pythonhosted.org/packages/e6/dc/c90066151da87d1e489f147b9b4327927241e65f1876702fafec6729c014/multidict-6.6.3-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:70b72e749a4f6e7ed8fb334fa8d8496384840319512746a5f42fa0aec79f4d61", size = 243590, upload-time = "2025-06-30T15:51:17.413Z" }, + { url = "https://files.pythonhosted.org/packages/ec/39/458afb0cccbb0ee9164365273be3e039efddcfcb94ef35924b7dbdb05db0/multidict-6.6.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:43571f785b86afd02b3855c5ac8e86ec921b760298d6f82ff2a61daf5a35330b", size = 237487, upload-time = "2025-06-30T15:51:19.039Z" }, + { url = "https://files.pythonhosted.org/packages/35/38/0016adac3990426610a081787011177e661875546b434f50a26319dc8372/multidict-6.6.3-cp310-cp310-win32.whl", hash = "sha256:20c5a0c3c13a15fd5ea86c42311859f970070e4e24de5a550e99d7c271d76318", size = 41390, upload-time = "2025-06-30T15:51:20.362Z" }, + { url = "https://files.pythonhosted.org/packages/f3/d2/17897a8f3f2c5363d969b4c635aa40375fe1f09168dc09a7826780bfb2a4/multidict-6.6.3-cp310-cp310-win_amd64.whl", hash = "sha256:ab0a34a007704c625e25a9116c6770b4d3617a071c8a7c30cd338dfbadfe6485", size = 45954, upload-time = "2025-06-30T15:51:21.383Z" }, + { url = "https://files.pythonhosted.org/packages/2d/5f/d4a717c1e457fe44072e33fa400d2b93eb0f2819c4d669381f925b7cba1f/multidict-6.6.3-cp310-cp310-win_arm64.whl", hash = "sha256:769841d70ca8bdd140a715746199fc6473414bd02efd678d75681d2d6a8986c5", size = 42981, upload-time = "2025-06-30T15:51:22.809Z" }, + { url = "https://files.pythonhosted.org/packages/08/f0/1a39863ced51f639c81a5463fbfa9eb4df59c20d1a8769ab9ef4ca57ae04/multidict-6.6.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:18f4eba0cbac3546b8ae31e0bbc55b02c801ae3cbaf80c247fcdd89b456ff58c", size = 76445, upload-time = "2025-06-30T15:51:24.01Z" }, + { url = "https://files.pythonhosted.org/packages/c9/0e/a7cfa451c7b0365cd844e90b41e21fab32edaa1e42fc0c9f68461ce44ed7/multidict-6.6.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef43b5dd842382329e4797c46f10748d8c2b6e0614f46b4afe4aee9ac33159df", size = 44610, upload-time = "2025-06-30T15:51:25.158Z" }, + { url = "https://files.pythonhosted.org/packages/c6/bb/a14a4efc5ee748cc1904b0748be278c31b9295ce5f4d2ef66526f410b94d/multidict-6.6.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bf9bd1fd5eec01494e0f2e8e446a74a85d5e49afb63d75a9934e4a5423dba21d", size = 44267, upload-time = "2025-06-30T15:51:26.326Z" }, + { url = "https://files.pythonhosted.org/packages/c2/f8/410677d563c2d55e063ef74fe578f9d53fe6b0a51649597a5861f83ffa15/multidict-6.6.3-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:5bd8d6f793a787153956cd35e24f60485bf0651c238e207b9a54f7458b16d539", size = 230004, upload-time = "2025-06-30T15:51:27.491Z" }, + { url = "https://files.pythonhosted.org/packages/fd/df/2b787f80059314a98e1ec6a4cc7576244986df3e56b3c755e6fc7c99e038/multidict-6.6.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1bf99b4daf908c73856bd87ee0a2499c3c9a3d19bb04b9c6025e66af3fd07462", size = 247196, upload-time = "2025-06-30T15:51:28.762Z" }, + { url = "https://files.pythonhosted.org/packages/05/f2/f9117089151b9a8ab39f9019620d10d9718eec2ac89e7ca9d30f3ec78e96/multidict-6.6.3-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:0b9e59946b49dafaf990fd9c17ceafa62976e8471a14952163d10a7a630413a9", size = 225337, upload-time = "2025-06-30T15:51:30.025Z" }, + { url = "https://files.pythonhosted.org/packages/93/2d/7115300ec5b699faa152c56799b089a53ed69e399c3c2d528251f0aeda1a/multidict-6.6.3-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e2db616467070d0533832d204c54eea6836a5e628f2cb1e6dfd8cd6ba7277cb7", size = 257079, upload-time = "2025-06-30T15:51:31.716Z" }, + { url = "https://files.pythonhosted.org/packages/15/ea/ff4bab367623e39c20d3b07637225c7688d79e4f3cc1f3b9f89867677f9a/multidict-6.6.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7394888236621f61dcdd25189b2768ae5cc280f041029a5bcf1122ac63df79f9", size = 255461, upload-time = "2025-06-30T15:51:33.029Z" }, + { url = "https://files.pythonhosted.org/packages/74/07/2c9246cda322dfe08be85f1b8739646f2c4c5113a1422d7a407763422ec4/multidict-6.6.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f114d8478733ca7388e7c7e0ab34b72547476b97009d643644ac33d4d3fe1821", size = 246611, upload-time = "2025-06-30T15:51:34.47Z" }, + { url = "https://files.pythonhosted.org/packages/a8/62/279c13d584207d5697a752a66ffc9bb19355a95f7659140cb1b3cf82180e/multidict-6.6.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cdf22e4db76d323bcdc733514bf732e9fb349707c98d341d40ebcc6e9318ef3d", size = 243102, upload-time = "2025-06-30T15:51:36.525Z" }, + { url = "https://files.pythonhosted.org/packages/69/cc/e06636f48c6d51e724a8bc8d9e1db5f136fe1df066d7cafe37ef4000f86a/multidict-6.6.3-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:e995a34c3d44ab511bfc11aa26869b9d66c2d8c799fa0e74b28a473a692532d6", size = 238693, upload-time = "2025-06-30T15:51:38.278Z" }, + { url = "https://files.pythonhosted.org/packages/89/a4/66c9d8fb9acf3b226cdd468ed009537ac65b520aebdc1703dd6908b19d33/multidict-6.6.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:766a4a5996f54361d8d5a9050140aa5362fe48ce51c755a50c0bc3706460c430", size = 246582, upload-time = "2025-06-30T15:51:39.709Z" }, + { url = "https://files.pythonhosted.org/packages/cf/01/c69e0317be556e46257826d5449feb4e6aa0d18573e567a48a2c14156f1f/multidict-6.6.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:3893a0d7d28a7fe6ca7a1f760593bc13038d1d35daf52199d431b61d2660602b", size = 253355, upload-time = "2025-06-30T15:51:41.013Z" }, + { url = "https://files.pythonhosted.org/packages/c0/da/9cc1da0299762d20e626fe0042e71b5694f9f72d7d3f9678397cbaa71b2b/multidict-6.6.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:934796c81ea996e61914ba58064920d6cad5d99140ac3167901eb932150e2e56", size = 247774, upload-time = "2025-06-30T15:51:42.291Z" }, + { url = "https://files.pythonhosted.org/packages/e6/91/b22756afec99cc31105ddd4a52f95ab32b1a4a58f4d417979c570c4a922e/multidict-6.6.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9ed948328aec2072bc00f05d961ceadfd3e9bfc2966c1319aeaf7b7c21219183", size = 242275, upload-time = "2025-06-30T15:51:43.642Z" }, + { url = "https://files.pythonhosted.org/packages/be/f1/adcc185b878036a20399d5be5228f3cbe7f823d78985d101d425af35c800/multidict-6.6.3-cp311-cp311-win32.whl", hash = "sha256:9f5b28c074c76afc3e4c610c488e3493976fe0e596dd3db6c8ddfbb0134dcac5", size = 41290, upload-time = "2025-06-30T15:51:45.264Z" }, + { url = "https://files.pythonhosted.org/packages/e0/d4/27652c1c6526ea6b4f5ddd397e93f4232ff5de42bea71d339bc6a6cc497f/multidict-6.6.3-cp311-cp311-win_amd64.whl", hash = "sha256:bc7f6fbc61b1c16050a389c630da0b32fc6d4a3d191394ab78972bf5edc568c2", size = 45942, upload-time = "2025-06-30T15:51:46.377Z" }, + { url = "https://files.pythonhosted.org/packages/16/18/23f4932019804e56d3c2413e237f866444b774b0263bcb81df2fdecaf593/multidict-6.6.3-cp311-cp311-win_arm64.whl", hash = "sha256:d4e47d8faffaae822fb5cba20937c048d4f734f43572e7079298a6c39fb172cb", size = 42880, upload-time = "2025-06-30T15:51:47.561Z" }, + { url = "https://files.pythonhosted.org/packages/0e/a0/6b57988ea102da0623ea814160ed78d45a2645e4bbb499c2896d12833a70/multidict-6.6.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:056bebbeda16b2e38642d75e9e5310c484b7c24e3841dc0fb943206a72ec89d6", size = 76514, upload-time = "2025-06-30T15:51:48.728Z" }, + { url = "https://files.pythonhosted.org/packages/07/7a/d1e92665b0850c6c0508f101f9cf0410c1afa24973e1115fe9c6a185ebf7/multidict-6.6.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e5f481cccb3c5c5e5de5d00b5141dc589c1047e60d07e85bbd7dea3d4580d63f", size = 45394, upload-time = "2025-06-30T15:51:49.986Z" }, + { url = "https://files.pythonhosted.org/packages/52/6f/dd104490e01be6ef8bf9573705d8572f8c2d2c561f06e3826b081d9e6591/multidict-6.6.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:10bea2ee839a759ee368b5a6e47787f399b41e70cf0c20d90dfaf4158dfb4e55", size = 43590, upload-time = "2025-06-30T15:51:51.331Z" }, + { url = "https://files.pythonhosted.org/packages/44/fe/06e0e01b1b0611e6581b7fd5a85b43dacc08b6cea3034f902f383b0873e5/multidict-6.6.3-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:2334cfb0fa9549d6ce2c21af2bfbcd3ac4ec3646b1b1581c88e3e2b1779ec92b", size = 237292, upload-time = "2025-06-30T15:51:52.584Z" }, + { url = "https://files.pythonhosted.org/packages/ce/71/4f0e558fb77696b89c233c1ee2d92f3e1d5459070a0e89153c9e9e804186/multidict-6.6.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b8fee016722550a2276ca2cb5bb624480e0ed2bd49125b2b73b7010b9090e888", size = 258385, upload-time = "2025-06-30T15:51:53.913Z" }, + { url = "https://files.pythonhosted.org/packages/e3/25/cca0e68228addad24903801ed1ab42e21307a1b4b6dd2cf63da5d3ae082a/multidict-6.6.3-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e5511cb35f5c50a2db21047c875eb42f308c5583edf96bd8ebf7d770a9d68f6d", size = 242328, upload-time = "2025-06-30T15:51:55.672Z" }, + { url = "https://files.pythonhosted.org/packages/6e/a3/46f2d420d86bbcb8fe660b26a10a219871a0fbf4d43cb846a4031533f3e0/multidict-6.6.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:712b348f7f449948e0a6c4564a21c7db965af900973a67db432d724619b3c680", size = 268057, upload-time = "2025-06-30T15:51:57.037Z" }, + { url = "https://files.pythonhosted.org/packages/9e/73/1c743542fe00794a2ec7466abd3f312ccb8fad8dff9f36d42e18fb1ec33e/multidict-6.6.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e4e15d2138ee2694e038e33b7c3da70e6b0ad8868b9f8094a72e1414aeda9c1a", size = 269341, upload-time = "2025-06-30T15:51:59.111Z" }, + { url = "https://files.pythonhosted.org/packages/a4/11/6ec9dcbe2264b92778eeb85407d1df18812248bf3506a5a1754bc035db0c/multidict-6.6.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8df25594989aebff8a130f7899fa03cbfcc5d2b5f4a461cf2518236fe6f15961", size = 256081, upload-time = "2025-06-30T15:52:00.533Z" }, + { url = "https://files.pythonhosted.org/packages/9b/2b/631b1e2afeb5f1696846d747d36cda075bfdc0bc7245d6ba5c319278d6c4/multidict-6.6.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:159ca68bfd284a8860f8d8112cf0521113bffd9c17568579e4d13d1f1dc76b65", size = 253581, upload-time = "2025-06-30T15:52:02.43Z" }, + { url = "https://files.pythonhosted.org/packages/bf/0e/7e3b93f79efeb6111d3bf9a1a69e555ba1d07ad1c11bceb56b7310d0d7ee/multidict-6.6.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:e098c17856a8c9ade81b4810888c5ad1914099657226283cab3062c0540b0643", size = 250750, upload-time = "2025-06-30T15:52:04.26Z" }, + { url = "https://files.pythonhosted.org/packages/ad/9e/086846c1d6601948e7de556ee464a2d4c85e33883e749f46b9547d7b0704/multidict-6.6.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:67c92ed673049dec52d7ed39f8cf9ebbadf5032c774058b4406d18c8f8fe7063", size = 251548, upload-time = "2025-06-30T15:52:06.002Z" }, + { url = "https://files.pythonhosted.org/packages/8c/7b/86ec260118e522f1a31550e87b23542294880c97cfbf6fb18cc67b044c66/multidict-6.6.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:bd0578596e3a835ef451784053cfd327d607fc39ea1a14812139339a18a0dbc3", size = 262718, upload-time = "2025-06-30T15:52:07.707Z" }, + { url = "https://files.pythonhosted.org/packages/8c/bd/22ce8f47abb0be04692c9fc4638508b8340987b18691aa7775d927b73f72/multidict-6.6.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:346055630a2df2115cd23ae271910b4cae40f4e336773550dca4889b12916e75", size = 259603, upload-time = "2025-06-30T15:52:09.58Z" }, + { url = "https://files.pythonhosted.org/packages/07/9c/91b7ac1691be95cd1f4a26e36a74b97cda6aa9820632d31aab4410f46ebd/multidict-6.6.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:555ff55a359302b79de97e0468e9ee80637b0de1fce77721639f7cd9440b3a10", size = 251351, upload-time = "2025-06-30T15:52:10.947Z" }, + { url = "https://files.pythonhosted.org/packages/6f/5c/4d7adc739884f7a9fbe00d1eac8c034023ef8bad71f2ebe12823ca2e3649/multidict-6.6.3-cp312-cp312-win32.whl", hash = "sha256:73ab034fb8d58ff85c2bcbadc470efc3fafeea8affcf8722855fb94557f14cc5", size = 41860, upload-time = "2025-06-30T15:52:12.334Z" }, + { url = "https://files.pythonhosted.org/packages/6a/a3/0fbc7afdf7cb1aa12a086b02959307848eb6bcc8f66fcb66c0cb57e2a2c1/multidict-6.6.3-cp312-cp312-win_amd64.whl", hash = "sha256:04cbcce84f63b9af41bad04a54d4cc4e60e90c35b9e6ccb130be2d75b71f8c17", size = 45982, upload-time = "2025-06-30T15:52:13.6Z" }, + { url = "https://files.pythonhosted.org/packages/b8/95/8c825bd70ff9b02462dc18d1295dd08d3e9e4eb66856d292ffa62cfe1920/multidict-6.6.3-cp312-cp312-win_arm64.whl", hash = "sha256:0f1130b896ecb52d2a1e615260f3ea2af55fa7dc3d7c3003ba0c3121a759b18b", size = 43210, upload-time = "2025-06-30T15:52:14.893Z" }, + { url = "https://files.pythonhosted.org/packages/52/1d/0bebcbbb4f000751fbd09957257903d6e002943fc668d841a4cf2fb7f872/multidict-6.6.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:540d3c06d48507357a7d57721e5094b4f7093399a0106c211f33540fdc374d55", size = 75843, upload-time = "2025-06-30T15:52:16.155Z" }, + { url = "https://files.pythonhosted.org/packages/07/8f/cbe241b0434cfe257f65c2b1bcf9e8d5fb52bc708c5061fb29b0fed22bdf/multidict-6.6.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9c19cea2a690f04247d43f366d03e4eb110a0dc4cd1bbeee4d445435428ed35b", size = 45053, upload-time = "2025-06-30T15:52:17.429Z" }, + { url = "https://files.pythonhosted.org/packages/32/d2/0b3b23f9dbad5b270b22a3ac3ea73ed0a50ef2d9a390447061178ed6bdb8/multidict-6.6.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7af039820cfd00effec86bda5d8debef711a3e86a1d3772e85bea0f243a4bd65", size = 43273, upload-time = "2025-06-30T15:52:19.346Z" }, + { url = "https://files.pythonhosted.org/packages/fd/fe/6eb68927e823999e3683bc49678eb20374ba9615097d085298fd5b386564/multidict-6.6.3-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:500b84f51654fdc3944e936f2922114349bf8fdcac77c3092b03449f0e5bc2b3", size = 237124, upload-time = "2025-06-30T15:52:20.773Z" }, + { url = "https://files.pythonhosted.org/packages/e7/ab/320d8507e7726c460cb77117848b3834ea0d59e769f36fdae495f7669929/multidict-6.6.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f3fc723ab8a5c5ed6c50418e9bfcd8e6dceba6c271cee6728a10a4ed8561520c", size = 256892, upload-time = "2025-06-30T15:52:22.242Z" }, + { url = "https://files.pythonhosted.org/packages/76/60/38ee422db515ac69834e60142a1a69111ac96026e76e8e9aa347fd2e4591/multidict-6.6.3-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:94c47ea3ade005b5976789baaed66d4de4480d0a0bf31cef6edaa41c1e7b56a6", size = 240547, upload-time = "2025-06-30T15:52:23.736Z" }, + { url = "https://files.pythonhosted.org/packages/27/fb/905224fde2dff042b030c27ad95a7ae744325cf54b890b443d30a789b80e/multidict-6.6.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:dbc7cf464cc6d67e83e136c9f55726da3a30176f020a36ead246eceed87f1cd8", size = 266223, upload-time = "2025-06-30T15:52:25.185Z" }, + { url = "https://files.pythonhosted.org/packages/76/35/dc38ab361051beae08d1a53965e3e1a418752fc5be4d3fb983c5582d8784/multidict-6.6.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:900eb9f9da25ada070f8ee4a23f884e0ee66fe4e1a38c3af644256a508ad81ca", size = 267262, upload-time = "2025-06-30T15:52:26.969Z" }, + { url = "https://files.pythonhosted.org/packages/1f/a3/0a485b7f36e422421b17e2bbb5a81c1af10eac1d4476f2ff92927c730479/multidict-6.6.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7c6df517cf177da5d47ab15407143a89cd1a23f8b335f3a28d57e8b0a3dbb884", size = 254345, upload-time = "2025-06-30T15:52:28.467Z" }, + { url = "https://files.pythonhosted.org/packages/b4/59/bcdd52c1dab7c0e0d75ff19cac751fbd5f850d1fc39172ce809a74aa9ea4/multidict-6.6.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4ef421045f13879e21c994b36e728d8e7d126c91a64b9185810ab51d474f27e7", size = 252248, upload-time = "2025-06-30T15:52:29.938Z" }, + { url = "https://files.pythonhosted.org/packages/bb/a4/2d96aaa6eae8067ce108d4acee6f45ced5728beda55c0f02ae1072c730d1/multidict-6.6.3-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:6c1e61bb4f80895c081790b6b09fa49e13566df8fbff817da3f85b3a8192e36b", size = 250115, upload-time = "2025-06-30T15:52:31.416Z" }, + { url = "https://files.pythonhosted.org/packages/25/d2/ed9f847fa5c7d0677d4f02ea2c163d5e48573de3f57bacf5670e43a5ffaa/multidict-6.6.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:e5e8523bb12d7623cd8300dbd91b9e439a46a028cd078ca695eb66ba31adee3c", size = 249649, upload-time = "2025-06-30T15:52:32.996Z" }, + { url = "https://files.pythonhosted.org/packages/1f/af/9155850372563fc550803d3f25373308aa70f59b52cff25854086ecb4a79/multidict-6.6.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:ef58340cc896219e4e653dade08fea5c55c6df41bcc68122e3be3e9d873d9a7b", size = 261203, upload-time = "2025-06-30T15:52:34.521Z" }, + { url = "https://files.pythonhosted.org/packages/36/2f/c6a728f699896252cf309769089568a33c6439626648843f78743660709d/multidict-6.6.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:fc9dc435ec8699e7b602b94fe0cd4703e69273a01cbc34409af29e7820f777f1", size = 258051, upload-time = "2025-06-30T15:52:35.999Z" }, + { url = "https://files.pythonhosted.org/packages/d0/60/689880776d6b18fa2b70f6cc74ff87dd6c6b9b47bd9cf74c16fecfaa6ad9/multidict-6.6.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9e864486ef4ab07db5e9cb997bad2b681514158d6954dd1958dfb163b83d53e6", size = 249601, upload-time = "2025-06-30T15:52:37.473Z" }, + { url = "https://files.pythonhosted.org/packages/75/5e/325b11f2222a549019cf2ef879c1f81f94a0d40ace3ef55cf529915ba6cc/multidict-6.6.3-cp313-cp313-win32.whl", hash = "sha256:5633a82fba8e841bc5c5c06b16e21529573cd654f67fd833650a215520a6210e", size = 41683, upload-time = "2025-06-30T15:52:38.927Z" }, + { url = "https://files.pythonhosted.org/packages/b1/ad/cf46e73f5d6e3c775cabd2a05976547f3f18b39bee06260369a42501f053/multidict-6.6.3-cp313-cp313-win_amd64.whl", hash = "sha256:e93089c1570a4ad54c3714a12c2cef549dc9d58e97bcded193d928649cab78e9", size = 45811, upload-time = "2025-06-30T15:52:40.207Z" }, + { url = "https://files.pythonhosted.org/packages/c5/c9/2e3fe950db28fb7c62e1a5f46e1e38759b072e2089209bc033c2798bb5ec/multidict-6.6.3-cp313-cp313-win_arm64.whl", hash = "sha256:c60b401f192e79caec61f166da9c924e9f8bc65548d4246842df91651e83d600", size = 43056, upload-time = "2025-06-30T15:52:41.575Z" }, + { url = "https://files.pythonhosted.org/packages/3a/58/aaf8114cf34966e084a8cc9517771288adb53465188843d5a19862cb6dc3/multidict-6.6.3-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:02fd8f32d403a6ff13864b0851f1f523d4c988051eea0471d4f1fd8010f11134", size = 82811, upload-time = "2025-06-30T15:52:43.281Z" }, + { url = "https://files.pythonhosted.org/packages/71/af/5402e7b58a1f5b987a07ad98f2501fdba2a4f4b4c30cf114e3ce8db64c87/multidict-6.6.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:f3aa090106b1543f3f87b2041eef3c156c8da2aed90c63a2fbed62d875c49c37", size = 48304, upload-time = "2025-06-30T15:52:45.026Z" }, + { url = "https://files.pythonhosted.org/packages/39/65/ab3c8cafe21adb45b24a50266fd747147dec7847425bc2a0f6934b3ae9ce/multidict-6.6.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e924fb978615a5e33ff644cc42e6aa241effcf4f3322c09d4f8cebde95aff5f8", size = 46775, upload-time = "2025-06-30T15:52:46.459Z" }, + { url = "https://files.pythonhosted.org/packages/49/ba/9fcc1b332f67cc0c0c8079e263bfab6660f87fe4e28a35921771ff3eea0d/multidict-6.6.3-cp313-cp313t-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:b9fe5a0e57c6dbd0e2ce81ca66272282c32cd11d31658ee9553849d91289e1c1", size = 229773, upload-time = "2025-06-30T15:52:47.88Z" }, + { url = "https://files.pythonhosted.org/packages/a4/14/0145a251f555f7c754ce2dcbcd012939bbd1f34f066fa5d28a50e722a054/multidict-6.6.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b24576f208793ebae00280c59927c3b7c2a3b1655e443a25f753c4611bc1c373", size = 250083, upload-time = "2025-06-30T15:52:49.366Z" }, + { url = "https://files.pythonhosted.org/packages/9e/d4/d5c0bd2bbb173b586c249a151a26d2fb3ec7d53c96e42091c9fef4e1f10c/multidict-6.6.3-cp313-cp313t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:135631cb6c58eac37d7ac0df380294fecdc026b28837fa07c02e459c7fb9c54e", size = 228980, upload-time = "2025-06-30T15:52:50.903Z" }, + { url = "https://files.pythonhosted.org/packages/21/32/c9a2d8444a50ec48c4733ccc67254100c10e1c8ae8e40c7a2d2183b59b97/multidict-6.6.3-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:274d416b0df887aef98f19f21578653982cfb8a05b4e187d4a17103322eeaf8f", size = 257776, upload-time = "2025-06-30T15:52:52.764Z" }, + { url = "https://files.pythonhosted.org/packages/68/d0/14fa1699f4ef629eae08ad6201c6b476098f5efb051b296f4c26be7a9fdf/multidict-6.6.3-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e252017a817fad7ce05cafbe5711ed40faeb580e63b16755a3a24e66fa1d87c0", size = 256882, upload-time = "2025-06-30T15:52:54.596Z" }, + { url = "https://files.pythonhosted.org/packages/da/88/84a27570fbe303c65607d517a5f147cd2fc046c2d1da02b84b17b9bdc2aa/multidict-6.6.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2e4cc8d848cd4fe1cdee28c13ea79ab0ed37fc2e89dd77bac86a2e7959a8c3bc", size = 247816, upload-time = "2025-06-30T15:52:56.175Z" }, + { url = "https://files.pythonhosted.org/packages/1c/60/dca352a0c999ce96a5d8b8ee0b2b9f729dcad2e0b0c195f8286269a2074c/multidict-6.6.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9e236a7094b9c4c1b7585f6b9cca34b9d833cf079f7e4c49e6a4a6ec9bfdc68f", size = 245341, upload-time = "2025-06-30T15:52:57.752Z" }, + { url = "https://files.pythonhosted.org/packages/50/ef/433fa3ed06028f03946f3993223dada70fb700f763f70c00079533c34578/multidict-6.6.3-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:e0cb0ab69915c55627c933f0b555a943d98ba71b4d1c57bc0d0a66e2567c7471", size = 235854, upload-time = "2025-06-30T15:52:59.74Z" }, + { url = "https://files.pythonhosted.org/packages/1b/1f/487612ab56fbe35715320905215a57fede20de7db40a261759690dc80471/multidict-6.6.3-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:81ef2f64593aba09c5212a3d0f8c906a0d38d710a011f2f42759704d4557d3f2", size = 243432, upload-time = "2025-06-30T15:53:01.602Z" }, + { url = "https://files.pythonhosted.org/packages/da/6f/ce8b79de16cd885c6f9052c96a3671373d00c59b3ee635ea93e6e81b8ccf/multidict-6.6.3-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:b9cbc60010de3562545fa198bfc6d3825df430ea96d2cc509c39bd71e2e7d648", size = 252731, upload-time = "2025-06-30T15:53:03.517Z" }, + { url = "https://files.pythonhosted.org/packages/bb/fe/a2514a6aba78e5abefa1624ca85ae18f542d95ac5cde2e3815a9fbf369aa/multidict-6.6.3-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:70d974eaaa37211390cd02ef93b7e938de564bbffa866f0b08d07e5e65da783d", size = 247086, upload-time = "2025-06-30T15:53:05.48Z" }, + { url = "https://files.pythonhosted.org/packages/8c/22/b788718d63bb3cce752d107a57c85fcd1a212c6c778628567c9713f9345a/multidict-6.6.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:3713303e4a6663c6d01d648a68f2848701001f3390a030edaaf3fc949c90bf7c", size = 243338, upload-time = "2025-06-30T15:53:07.522Z" }, + { url = "https://files.pythonhosted.org/packages/22/d6/fdb3d0670819f2228f3f7d9af613d5e652c15d170c83e5f1c94fbc55a25b/multidict-6.6.3-cp313-cp313t-win32.whl", hash = "sha256:639ecc9fe7cd73f2495f62c213e964843826f44505a3e5d82805aa85cac6f89e", size = 47812, upload-time = "2025-06-30T15:53:09.263Z" }, + { url = "https://files.pythonhosted.org/packages/b6/d6/a9d2c808f2c489ad199723197419207ecbfbc1776f6e155e1ecea9c883aa/multidict-6.6.3-cp313-cp313t-win_amd64.whl", hash = "sha256:9f97e181f344a0ef3881b573d31de8542cc0dbc559ec68c8f8b5ce2c2e91646d", size = 53011, upload-time = "2025-06-30T15:53:11.038Z" }, + { url = "https://files.pythonhosted.org/packages/f2/40/b68001cba8188dd267590a111f9661b6256debc327137667e832bf5d66e8/multidict-6.6.3-cp313-cp313t-win_arm64.whl", hash = "sha256:ce8b7693da41a3c4fde5871c738a81490cea5496c671d74374c8ab889e1834fb", size = 45254, upload-time = "2025-06-30T15:53:12.421Z" }, + { url = "https://files.pythonhosted.org/packages/d2/64/ba29bd6dfc895e592b2f20f92378e692ac306cf25dd0be2f8e0a0f898edb/multidict-6.6.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c8161b5a7778d3137ea2ee7ae8a08cce0010de3b00ac671c5ebddeaa17cefd22", size = 76959, upload-time = "2025-06-30T15:53:13.827Z" }, + { url = "https://files.pythonhosted.org/packages/ca/cd/872ae4c134257dacebff59834983c1615d6ec863b6e3d360f3203aad8400/multidict-6.6.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1328201ee930f069961ae707d59c6627ac92e351ed5b92397cf534d1336ce557", size = 44864, upload-time = "2025-06-30T15:53:15.658Z" }, + { url = "https://files.pythonhosted.org/packages/15/35/d417d8f62f2886784b76df60522d608aba39dfc83dd53b230ca71f2d4c53/multidict-6.6.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b1db4d2093d6b235de76932febf9d50766cf49a5692277b2c28a501c9637f616", size = 44540, upload-time = "2025-06-30T15:53:17.208Z" }, + { url = "https://files.pythonhosted.org/packages/85/59/25cddf781f12cddb2386baa29744a3fdd160eb705539b48065f0cffd86d5/multidict-6.6.3-cp39-cp39-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:53becb01dd8ebd19d1724bebe369cfa87e4e7f29abbbe5c14c98ce4c383e16cd", size = 224075, upload-time = "2025-06-30T15:53:18.705Z" }, + { url = "https://files.pythonhosted.org/packages/c4/21/4055b6a527954c572498a8068c26bd3b75f2b959080e17e12104b592273c/multidict-6.6.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41bb9d1d4c303886e2d85bade86e59885112a7f4277af5ad47ab919a2251f306", size = 240535, upload-time = "2025-06-30T15:53:20.359Z" }, + { url = "https://files.pythonhosted.org/packages/58/98/17f1f80bdba0b2fef49cf4ba59cebf8a81797f745f547abb5c9a4039df62/multidict-6.6.3-cp39-cp39-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:775b464d31dac90f23192af9c291dc9f423101857e33e9ebf0020a10bfcf4144", size = 219361, upload-time = "2025-06-30T15:53:22.371Z" }, + { url = "https://files.pythonhosted.org/packages/f8/0e/a5e595fdd0820069f0c29911d5dc9dc3a75ec755ae733ce59a4e6962ae42/multidict-6.6.3-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:d04d01f0a913202205a598246cf77826fe3baa5a63e9f6ccf1ab0601cf56eca0", size = 251207, upload-time = "2025-06-30T15:53:24.307Z" }, + { url = "https://files.pythonhosted.org/packages/66/9e/0f51e4cffea2daf24c137feabc9ec848ce50f8379c9badcbac00b41ab55e/multidict-6.6.3-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d25594d3b38a2e6cabfdcafef339f754ca6e81fbbdb6650ad773ea9775af35ab", size = 249749, upload-time = "2025-06-30T15:53:26.056Z" }, + { url = "https://files.pythonhosted.org/packages/49/a0/a7cfc13c9a71ceb8c1c55457820733af9ce01e121139271f7b13e30c29d2/multidict-6.6.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:35712f1748d409e0707b165bf49f9f17f9e28ae85470c41615778f8d4f7d9609", size = 239202, upload-time = "2025-06-30T15:53:28.096Z" }, + { url = "https://files.pythonhosted.org/packages/c7/50/7ae0d1149ac71cab6e20bb7faf2a1868435974994595dadfdb7377f7140f/multidict-6.6.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1c8082e5814b662de8589d6a06c17e77940d5539080cbab9fe6794b5241b76d9", size = 237269, upload-time = "2025-06-30T15:53:30.124Z" }, + { url = "https://files.pythonhosted.org/packages/b4/ac/2d0bf836c9c63a57360d57b773359043b371115e1c78ff648993bf19abd0/multidict-6.6.3-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:61af8a4b771f1d4d000b3168c12c3120ccf7284502a94aa58c68a81f5afac090", size = 232961, upload-time = "2025-06-30T15:53:31.766Z" }, + { url = "https://files.pythonhosted.org/packages/85/e1/68a65f069df298615591e70e48bfd379c27d4ecb252117c18bf52eebc237/multidict-6.6.3-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:448e4a9afccbf297577f2eaa586f07067441e7b63c8362a3540ba5a38dc0f14a", size = 240863, upload-time = "2025-06-30T15:53:33.488Z" }, + { url = "https://files.pythonhosted.org/packages/ae/ab/702f1baca649f88ea1dc6259fc2aa4509f4ad160ba48c8e61fbdb4a5a365/multidict-6.6.3-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:233ad16999afc2bbd3e534ad8dbe685ef8ee49a37dbc2cdc9514e57b6d589ced", size = 246800, upload-time = "2025-06-30T15:53:35.21Z" }, + { url = "https://files.pythonhosted.org/packages/5e/0b/726e690bfbf887985a8710ef2f25f1d6dd184a35bd3b36429814f810a2fc/multidict-6.6.3-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:bb933c891cd4da6bdcc9733d048e994e22e1883287ff7540c2a0f3b117605092", size = 242034, upload-time = "2025-06-30T15:53:36.913Z" }, + { url = "https://files.pythonhosted.org/packages/73/bb/839486b27bcbcc2e0d875fb9d4012b4b6aa99639137343106aa7210e047a/multidict-6.6.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:37b09ca60998e87734699e88c2363abfd457ed18cfbf88e4009a4e83788e63ed", size = 235377, upload-time = "2025-06-30T15:53:38.618Z" }, + { url = "https://files.pythonhosted.org/packages/e3/46/574d75ab7b9ae8690fe27e89f5fcd0121633112b438edfb9ed2be8be096b/multidict-6.6.3-cp39-cp39-win32.whl", hash = "sha256:f54cb79d26d0cd420637d184af38f0668558f3c4bbe22ab7ad830e67249f2e0b", size = 41420, upload-time = "2025-06-30T15:53:40.309Z" }, + { url = "https://files.pythonhosted.org/packages/78/c3/8b3bc755508b777868349f4bfa844d3d31832f075ee800a3d6f1807338c5/multidict-6.6.3-cp39-cp39-win_amd64.whl", hash = "sha256:295adc9c0551e5d5214b45cf29ca23dbc28c2d197a9c30d51aed9e037cb7c578", size = 46124, upload-time = "2025-06-30T15:53:41.984Z" }, + { url = "https://files.pythonhosted.org/packages/b2/30/5a66e7e4550e80975faee5b5dd9e9bd09194d2fd8f62363119b9e46e204b/multidict-6.6.3-cp39-cp39-win_arm64.whl", hash = "sha256:15332783596f227db50fb261c2c251a58ac3873c457f3a550a95d5c0aa3c770d", size = 42973, upload-time = "2025-06-30T15:53:43.505Z" }, + { url = "https://files.pythonhosted.org/packages/d8/30/9aec301e9772b098c1f5c0ca0279237c9766d94b97802e9888010c64b0ed/multidict-6.6.3-py3-none-any.whl", hash = "sha256:8db10f29c7541fc5da4defd8cd697e1ca429db743fa716325f236079b96f775a", size = 12313, upload-time = "2025-06-30T15:53:45.437Z" }, +] + +[[package]] +name = "nbclient" +version = "0.10.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "nbformat" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/87/66/7ffd18d58eae90d5721f9f39212327695b749e23ad44b3881744eaf4d9e8/nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193", size = 62424, upload-time = "2024-12-19T10:32:27.164Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/34/6d/e7fa07f03a4a7b221d94b4d586edb754a9b0dc3c9e2c93353e9fa4e0d117/nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d", size = 25434, upload-time = "2024-12-19T10:32:24.139Z" }, +] + +[[package]] +name = "nbconvert" +version = "7.16.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "beautifulsoup4" }, + { name = "bleach", extra = ["css"] }, + { name = "defusedxml" }, + { name = "importlib-metadata", marker = "python_full_version < '3.10'" }, + { name = "jinja2" }, + { name = "jupyter-core" }, + { name = "jupyterlab-pygments" }, + { name = "markupsafe" }, + { name = "mistune" }, + { name = "nbclient" }, + { name = "nbformat" }, + { name = "packaging" }, + { name = "pandocfilters" }, + { name = "pygments" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a3/59/f28e15fc47ffb73af68a8d9b47367a8630d76e97ae85ad18271b9db96fdf/nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582", size = 857715, upload-time = "2025-01-28T09:29:14.724Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cc/9a/cd673b2f773a12c992f41309ef81b99da1690426bd2f96957a7ade0d3ed7/nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b", size = 258525, upload-time = "2025-01-28T09:29:12.551Z" }, +] + +[[package]] +name = "nbformat" +version = "5.10.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "fastjsonschema" }, + { name = "jsonschema" }, + { name = "jupyter-core" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6d/fd/91545e604bc3dad7dca9ed03284086039b294c6b3d75c0d2fa45f9e9caf3/nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a", size = 142749, upload-time = "2024-04-04T11:20:37.371Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b", size = 78454, upload-time = "2024-04-04T11:20:34.895Z" }, +] + [[package]] name = "ndindex" version = "1.10.0" @@ -1598,7 +2848,8 @@ source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", ] sdist = { url = "https://files.pythonhosted.org/packages/c4/80/a84676339aaae2f1cfdf9f418701dd634aef9cc76f708ef55c36ff39c3ca/networkx-3.2.1.tar.gz", hash = "sha256:9f1bb5cf3409bf324e0a722c20bdb4c20ee39bf1c30ce8ae499c8502b0b5e0c6", size = 2073928, upload-time = "2023-10-28T08:41:39.364Z" } wheels = [ @@ -1610,7 +2861,8 @@ name = "networkx" version = "3.4.2" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -1624,10 +2876,16 @@ name = "networkx" version = "3.5" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.12' and sys_platform == 'darwin'", - "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -1636,6 +2894,43 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl", hash = "sha256:0030d386a9a06dee3565298b4a734b68589749a544acbb6c412dc9e2489ec6ec", size = 2034406, upload-time = "2025-05-29T11:35:04.961Z" }, ] +[[package]] +name = "nodeenv" +version = "1.9.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/16/fc88b08840de0e0a72a2f9d8c6bae36be573e475a6326ae854bcc549fc45/nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f", size = 47437, upload-time = "2024-06-04T18:44:11.171Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314, upload-time = "2024-06-04T18:44:08.352Z" }, +] + +[[package]] +name = "notebook" +version = "7.4.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-server" }, + { name = "jupyterlab" }, + { name = "jupyterlab-server" }, + { name = "notebook-shim" }, + { name = "tornado" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b1/4e/a40b5a94eb01fc51746db7854296d88b84905ab18ee0fcef853a60d708a3/notebook-7.4.4.tar.gz", hash = "sha256:392fd501e266f2fb3466c6fcd3331163a2184968cb5c5accf90292e01dfe528c", size = 13883628, upload-time = "2025-06-30T13:04:18.099Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/c0/e64d2047fd752249b0b69f6aee2a7049eb94e7273e5baabc8b8ad05cc068/notebook-7.4.4-py3-none-any.whl", hash = "sha256:32840f7f777b6bff79bb101159336e9b332bdbfba1495b8739e34d1d65cbc1c0", size = 14288000, upload-time = "2025-06-30T13:04:14.584Z" }, +] + +[[package]] +name = "notebook-shim" +version = "0.2.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-server" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/54/d2/92fa3243712b9a3e8bafaf60aac366da1cada3639ca767ff4b5b3654ec28/notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb", size = 13167, upload-time = "2024-02-14T23:35:18.353Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef", size = 13307, upload-time = "2024-02-14T23:35:16.286Z" }, +] + [[package]] name = "numexpr" version = "2.10.2" @@ -1643,7 +2938,8 @@ source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", ] dependencies = [ { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, @@ -1692,13 +2988,20 @@ name = "numexpr" version = "2.11.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.12' and sys_platform == 'darwin'", - "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -1747,7 +3050,8 @@ source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", ] sdist = { url = "https://files.pythonhosted.org/packages/a9/75/10dd1f8116a8b796cb2c737b674e02d02e80454bda953fa7e65d8c12b016/numpy-2.0.2.tar.gz", hash = "sha256:883c987dee1880e2a864ab0dc9892292582510604156762362d9326444636e78", size = 18902015, upload-time = "2024-08-26T20:19:40.945Z" } wheels = [ @@ -1802,7 +3106,8 @@ name = "numpy" version = "2.2.6" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -1869,10 +3174,16 @@ name = "numpy" version = "2.3.1" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.12' and sys_platform == 'darwin'", - "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -1931,22 +3242,101 @@ wheels = [ ] [[package]] -name = "opencv-python" -version = "4.11.0.86" +name = "opencensus" +version = "0.11.4" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, - { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "google-api-core" }, + { name = "opencensus-context" }, + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/15/a7/a46dcffa1b63084f9f17fe3c8cb20724c4c8f91009fd0b2cfdb27d5d2b35/opencensus-0.11.4.tar.gz", hash = "sha256:cbef87d8b8773064ab60e5c2a1ced58bbaa38a6d052c41aec224958ce544eff2", size = 64966, upload-time = "2024-01-03T18:04:07.085Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b5/ed/9fbdeb23a09e430d87b7d72d430484b88184633dc50f6bfb792354b6f661/opencensus-0.11.4-py2.py3-none-any.whl", hash = "sha256:a18487ce68bc19900336e0ff4655c5a116daf10c1b3685ece8d971bddad6a864", size = 128225, upload-time = "2024-01-03T18:04:05.127Z" }, +] + +[[package]] +name = "opencensus-context" +version = "0.1.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4c/96/3b6f638f6275a8abbd45e582448723bffa29c1fb426721dedb5c72f7d056/opencensus-context-0.1.3.tar.gz", hash = "sha256:a03108c3c10d8c80bb5ddf5c8a1f033161fa61972a9917f9b9b3a18517f0088c", size = 4066, upload-time = "2022-08-03T22:20:22.359Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/68/162c97ea78c957d68ecf78a5c5041d2e25bd5562bdf5d89a6cbf7f8429bf/opencensus_context-0.1.3-py2.py3-none-any.whl", hash = "sha256:073bb0590007af276853009fac7e4bab1d523c3f03baf4cb4511ca38967c6039", size = 5060, upload-time = "2022-08-03T22:20:20.352Z" }, +] + +[[package]] +name = "opentelemetry-api" +version = "1.35.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "importlib-metadata" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/99/c9/4509bfca6bb43220ce7f863c9f791e0d5001c2ec2b5867d48586008b3d96/opentelemetry_api-1.35.0.tar.gz", hash = "sha256:a111b959bcfa5b4d7dffc2fbd6a241aa72dd78dd8e79b5b1662bda896c5d2ffe", size = 64778, upload-time = "2025-07-11T12:23:28.804Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1d/5a/3f8d078dbf55d18442f6a2ecedf6786d81d7245844b2b20ce2b8ad6f0307/opentelemetry_api-1.35.0-py3-none-any.whl", hash = "sha256:c4ea7e258a244858daf18474625e9cc0149b8ee354f37843415771a40c25ee06", size = 65566, upload-time = "2025-07-11T12:23:07.944Z" }, +] + +[[package]] +name = "opentelemetry-exporter-prometheus" +version = "0.56b0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-api" }, + { name = "opentelemetry-sdk" }, + { name = "prometheus-client" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bf/75/e784a56805a0bf125da3cadacdbb2d5e2519ac48852ec52eac86a9f16fa3/opentelemetry_exporter_prometheus-0.56b0.tar.gz", hash = "sha256:c783146b66400269783b773c5ccedf7d2ff140271478e2816202930a14c07c6b", size = 14905, upload-time = "2025-07-11T12:23:33.271Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/de/a4/813a192c391c252cacb8d95e606a9917036ca94b477f2a8fc6748d86692d/opentelemetry_exporter_prometheus-0.56b0-py3-none-any.whl", hash = "sha256:0a7d8952e2938f830deb5000505eecf20416ef25fdb591753b9b0cb91d9560ea", size = 12924, upload-time = "2025-07-11T12:23:14.886Z" }, +] + +[[package]] +name = "opentelemetry-proto" +version = "1.35.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/dc/a2/7366e32d9a2bccbb8614942dbea2cf93c209610385ea966cb050334f8df7/opentelemetry_proto-1.35.0.tar.gz", hash = "sha256:532497341bd3e1c074def7c5b00172601b28bb83b48afc41a4b779f26eb4ee05", size = 46151, upload-time = "2025-07-11T12:23:38.797Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/a7/3f05de580da7e8a8b8dff041d3d07a20bf3bb62d3bcc027f8fd669a73ff4/opentelemetry_proto-1.35.0-py3-none-any.whl", hash = "sha256:98fffa803164499f562718384e703be8d7dfbe680192279a0429cb150a2f8809", size = 72536, upload-time = "2025-07-11T12:23:23.247Z" }, +] + +[[package]] +name = "opentelemetry-sdk" +version = "1.35.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-api" }, + { name = "opentelemetry-semantic-conventions" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9a/cf/1eb2ed2ce55e0a9aa95b3007f26f55c7943aeef0a783bb006bdd92b3299e/opentelemetry_sdk-1.35.0.tar.gz", hash = "sha256:2a400b415ab68aaa6f04e8a6a9f6552908fb3090ae2ff78d6ae0c597ac581954", size = 160871, upload-time = "2025-07-11T12:23:39.566Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/01/4f/8e32b757ef3b660511b638ab52d1ed9259b666bdeeceba51a082ce3aea95/opentelemetry_sdk-1.35.0-py3-none-any.whl", hash = "sha256:223d9e5f5678518f4842311bb73966e0b6db5d1e0b74e35074c052cd2487f800", size = 119379, upload-time = "2025-07-11T12:23:24.521Z" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/17/06/68c27a523103dad5837dc5b87e71285280c4f098c60e4fe8a8db6486ab09/opencv-python-4.11.0.86.tar.gz", hash = "sha256:03d60ccae62304860d232272e4a4fda93c39d595780cb40b161b310244b736a4", size = 95171956, upload-time = "2025-01-16T13:52:24.737Z" } + +[[package]] +name = "opentelemetry-semantic-conventions" +version = "0.56b0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-api" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/32/8e/214fa817f63b9f068519463d8ab46afd5d03b98930c39394a37ae3e741d0/opentelemetry_semantic_conventions-0.56b0.tar.gz", hash = "sha256:c114c2eacc8ff6d3908cb328c811eaf64e6d68623840be9224dc829c4fd6c2ea", size = 124221, upload-time = "2025-07-11T12:23:40.71Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/3f/e80c1b017066a9d999efffe88d1cce66116dcf5cb7f80c41040a83b6e03b/opentelemetry_semantic_conventions-0.56b0-py3-none-any.whl", hash = "sha256:df44492868fd6b482511cc43a942e7194be64e94945f572db24df2e279a001a2", size = 201625, upload-time = "2025-07-11T12:23:25.63Z" }, +] + +[[package]] +name = "overrides" +version = "7.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/36/86/b585f53236dec60aba864e050778b25045f857e17f6e5ea0ae95fe80edd2/overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a", size = 22812, upload-time = "2024-01-27T21:01:33.423Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/05/4d/53b30a2a3ac1f75f65a59eb29cf2ee7207ce64867db47036ad61743d5a23/opencv_python-4.11.0.86-cp37-abi3-macosx_13_0_arm64.whl", hash = "sha256:432f67c223f1dc2824f5e73cdfcd9db0efc8710647d4e813012195dc9122a52a", size = 37326322, upload-time = "2025-01-16T13:52:25.887Z" }, - { url = "https://files.pythonhosted.org/packages/3b/84/0a67490741867eacdfa37bc18df96e08a9d579583b419010d7f3da8ff503/opencv_python-4.11.0.86-cp37-abi3-macosx_13_0_x86_64.whl", hash = "sha256:9d05ef13d23fe97f575153558653e2d6e87103995d54e6a35db3f282fe1f9c66", size = 56723197, upload-time = "2025-01-16T13:55:21.222Z" }, - { url = "https://files.pythonhosted.org/packages/f3/bd/29c126788da65c1fb2b5fb621b7fed0ed5f9122aa22a0868c5e2c15c6d23/opencv_python-4.11.0.86-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b92ae2c8852208817e6776ba1ea0d6b1e0a1b5431e971a2a0ddd2a8cc398202", size = 42230439, upload-time = "2025-01-16T13:51:35.822Z" }, - { url = "https://files.pythonhosted.org/packages/2c/8b/90eb44a40476fa0e71e05a0283947cfd74a5d36121a11d926ad6f3193cc4/opencv_python-4.11.0.86-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b02611523803495003bd87362db3e1d2a0454a6a63025dc6658a9830570aa0d", size = 62986597, upload-time = "2025-01-16T13:52:08.836Z" }, - { url = "https://files.pythonhosted.org/packages/fb/d7/1d5941a9dde095468b288d989ff6539dd69cd429dbf1b9e839013d21b6f0/opencv_python-4.11.0.86-cp37-abi3-win32.whl", hash = "sha256:810549cb2a4aedaa84ad9a1c92fbfdfc14090e2749cedf2c1589ad8359aa169b", size = 29384337, upload-time = "2025-01-16T13:52:13.549Z" }, - { url = "https://files.pythonhosted.org/packages/a4/7d/f1c30a92854540bf789e9cd5dde7ef49bbe63f855b85a2e6b3db8135c591/opencv_python-4.11.0.86-cp37-abi3-win_amd64.whl", hash = "sha256:085ad9b77c18853ea66283e98affefe2de8cc4c1f43eda4c100cf9b2721142ec", size = 39488044, upload-time = "2025-01-16T13:52:21.928Z" }, + { url = "https://files.pythonhosted.org/packages/2c/ab/fc8290c6a4c722e5514d80f62b2dc4c4df1a68a41d1364e625c35990fcf3/overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49", size = 17832, upload-time = "2024-01-27T21:01:31.393Z" }, ] [[package]] @@ -2015,6 +3405,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/fa/cb/6c32f8fadefa4314b740fbe8f74f6a02423bd1549e7c930826df35ac3c1b/pandas-2.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:b4b0de34dc8499c2db34000ef8baad684cfa4cbd836ecee05f323ebfba348c7d", size = 11357186, upload-time = "2025-07-07T19:20:01.475Z" }, ] +[[package]] +name = "pandocfilters" +version = "1.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/70/6f/3dd4940bbe001c06a65f88e36bad298bc7a0de5036115639926b0c5c0458/pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e", size = 8454, upload-time = "2024-01-18T20:08:13.726Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc", size = 8663, upload-time = "2024-01-18T20:08:11.28Z" }, +] + [[package]] name = "paramiko" version = "3.5.1" @@ -2172,6 +3571,40 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4", size = 18567, upload-time = "2025-05-07T22:47:40.376Z" }, ] +[[package]] +name = "pluggy" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload-time = "2025-05-15T12:30:07.975Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, +] + +[[package]] +name = "pre-commit" +version = "4.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cfgv" }, + { name = "identify" }, + { name = "nodeenv" }, + { name = "pyyaml" }, + { name = "virtualenv" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/08/39/679ca9b26c7bb2999ff122d50faa301e49af82ca9c066ec061cfbc0c6784/pre_commit-4.2.0.tar.gz", hash = "sha256:601283b9757afd87d40c4c4a9b2b5de9637a8ea02eaff7adc2d0fb4e04841146", size = 193424, upload-time = "2025-03-18T21:35:20.987Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/74/a88bf1b1efeae488a0c0b7bdf71429c313722d1fc0f377537fbe554e6180/pre_commit-4.2.0-py2.py3-none-any.whl", hash = "sha256:a009ca7205f1eb497d10b845e52c838a98b6cdd2102a6c8e4540e94ee75c58bd", size = 220707, upload-time = "2025-03-18T21:35:19.343Z" }, +] + +[[package]] +name = "prometheus-client" +version = "0.22.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5e/cf/40dde0a2be27cc1eb41e333d1a674a74ce8b8b0457269cc640fd42b07cf7/prometheus_client-0.22.1.tar.gz", hash = "sha256:190f1331e783cf21eb60bca559354e0a4d4378facecf78f5428c39b675d20d28", size = 69746, upload-time = "2025-06-02T14:29:01.152Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/ae/ec06af4fe3ee72d16973474f122541746196aaa16cea6f66d18b963c6177/prometheus_client-0.22.1-py3-none-any.whl", hash = "sha256:cca895342e308174341b2cbf99a56bef291fbc0ef7b9e5412a0f26d653ba7094", size = 58694, upload-time = "2025-06-02T14:29:00.068Z" }, +] + [[package]] name = "prompt-toolkit" version = "3.0.51" @@ -2184,6 +3617,139 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ce/4f/5249960887b1fbe561d9ff265496d170b55a735b76724f10ef19f9e40716/prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07", size = 387810, upload-time = "2025-04-15T09:18:44.753Z" }, ] +[[package]] +name = "propcache" +version = "0.3.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a6/16/43264e4a779dd8588c21a70f0709665ee8f611211bdd2c87d952cfa7c776/propcache-0.3.2.tar.gz", hash = "sha256:20d7d62e4e7ef05f221e0db2856b979540686342e7dd9973b815599c7057e168", size = 44139, upload-time = "2025-06-09T22:56:06.081Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ab/14/510deed325e262afeb8b360043c5d7c960da7d3ecd6d6f9496c9c56dc7f4/propcache-0.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:22d9962a358aedbb7a2e36187ff273adeaab9743373a272976d2e348d08c7770", size = 73178, upload-time = "2025-06-09T22:53:40.126Z" }, + { url = "https://files.pythonhosted.org/packages/cd/4e/ad52a7925ff01c1325653a730c7ec3175a23f948f08626a534133427dcff/propcache-0.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0d0fda578d1dc3f77b6b5a5dce3b9ad69a8250a891760a548df850a5e8da87f3", size = 43133, upload-time = "2025-06-09T22:53:41.965Z" }, + { url = "https://files.pythonhosted.org/packages/63/7c/e9399ba5da7780871db4eac178e9c2e204c23dd3e7d32df202092a1ed400/propcache-0.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3def3da3ac3ce41562d85db655d18ebac740cb3fa4367f11a52b3da9d03a5cc3", size = 43039, upload-time = "2025-06-09T22:53:43.268Z" }, + { url = "https://files.pythonhosted.org/packages/22/e1/58da211eb8fdc6fc854002387d38f415a6ca5f5c67c1315b204a5d3e9d7a/propcache-0.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9bec58347a5a6cebf239daba9bda37dffec5b8d2ce004d9fe4edef3d2815137e", size = 201903, upload-time = "2025-06-09T22:53:44.872Z" }, + { url = "https://files.pythonhosted.org/packages/c4/0a/550ea0f52aac455cb90111c8bab995208443e46d925e51e2f6ebdf869525/propcache-0.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:55ffda449a507e9fbd4aca1a7d9aa6753b07d6166140e5a18d2ac9bc49eac220", size = 213362, upload-time = "2025-06-09T22:53:46.707Z" }, + { url = "https://files.pythonhosted.org/packages/5a/af/9893b7d878deda9bb69fcf54600b247fba7317761b7db11fede6e0f28bd0/propcache-0.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:64a67fb39229a8a8491dd42f864e5e263155e729c2e7ff723d6e25f596b1e8cb", size = 210525, upload-time = "2025-06-09T22:53:48.547Z" }, + { url = "https://files.pythonhosted.org/packages/7c/bb/38fd08b278ca85cde36d848091ad2b45954bc5f15cce494bb300b9285831/propcache-0.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9da1cf97b92b51253d5b68cf5a2b9e0dafca095e36b7f2da335e27dc6172a614", size = 198283, upload-time = "2025-06-09T22:53:50.067Z" }, + { url = "https://files.pythonhosted.org/packages/78/8c/9fe55bd01d362bafb413dfe508c48753111a1e269737fa143ba85693592c/propcache-0.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5f559e127134b07425134b4065be45b166183fdcb433cb6c24c8e4149056ad50", size = 191872, upload-time = "2025-06-09T22:53:51.438Z" }, + { url = "https://files.pythonhosted.org/packages/54/14/4701c33852937a22584e08abb531d654c8bcf7948a8f87ad0a4822394147/propcache-0.3.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:aff2e4e06435d61f11a428360a932138d0ec288b0a31dd9bd78d200bd4a2b339", size = 199452, upload-time = "2025-06-09T22:53:53.229Z" }, + { url = "https://files.pythonhosted.org/packages/16/44/447f2253d859602095356007657ee535e0093215ea0b3d1d6a41d16e5201/propcache-0.3.2-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:4927842833830942a5d0a56e6f4839bc484785b8e1ce8d287359794818633ba0", size = 191567, upload-time = "2025-06-09T22:53:54.541Z" }, + { url = "https://files.pythonhosted.org/packages/f2/b3/e4756258749bb2d3b46defcff606a2f47410bab82be5824a67e84015b267/propcache-0.3.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:6107ddd08b02654a30fb8ad7a132021759d750a82578b94cd55ee2772b6ebea2", size = 193015, upload-time = "2025-06-09T22:53:56.44Z" }, + { url = "https://files.pythonhosted.org/packages/1e/df/e6d3c7574233164b6330b9fd697beeac402afd367280e6dc377bb99b43d9/propcache-0.3.2-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:70bd8b9cd6b519e12859c99f3fc9a93f375ebd22a50296c3a295028bea73b9e7", size = 204660, upload-time = "2025-06-09T22:53:57.839Z" }, + { url = "https://files.pythonhosted.org/packages/b2/53/e4d31dd5170b4a0e2e6b730f2385a96410633b4833dc25fe5dffd1f73294/propcache-0.3.2-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2183111651d710d3097338dd1893fcf09c9f54e27ff1a8795495a16a469cc90b", size = 206105, upload-time = "2025-06-09T22:53:59.638Z" }, + { url = "https://files.pythonhosted.org/packages/7f/fe/74d54cf9fbe2a20ff786e5f7afcfde446588f0cf15fb2daacfbc267b866c/propcache-0.3.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fb075ad271405dcad8e2a7ffc9a750a3bf70e533bd86e89f0603e607b93aa64c", size = 196980, upload-time = "2025-06-09T22:54:01.071Z" }, + { url = "https://files.pythonhosted.org/packages/22/ec/c469c9d59dada8a7679625e0440b544fe72e99311a4679c279562051f6fc/propcache-0.3.2-cp310-cp310-win32.whl", hash = "sha256:404d70768080d3d3bdb41d0771037da19d8340d50b08e104ca0e7f9ce55fce70", size = 37679, upload-time = "2025-06-09T22:54:03.003Z" }, + { url = "https://files.pythonhosted.org/packages/38/35/07a471371ac89d418f8d0b699c75ea6dca2041fbda360823de21f6a9ce0a/propcache-0.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:7435d766f978b4ede777002e6b3b6641dd229cd1da8d3d3106a45770365f9ad9", size = 41459, upload-time = "2025-06-09T22:54:04.134Z" }, + { url = "https://files.pythonhosted.org/packages/80/8d/e8b436717ab9c2cfc23b116d2c297305aa4cd8339172a456d61ebf5669b8/propcache-0.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0b8d2f607bd8f80ddc04088bc2a037fdd17884a6fcadc47a96e334d72f3717be", size = 74207, upload-time = "2025-06-09T22:54:05.399Z" }, + { url = "https://files.pythonhosted.org/packages/d6/29/1e34000e9766d112171764b9fa3226fa0153ab565d0c242c70e9945318a7/propcache-0.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:06766d8f34733416e2e34f46fea488ad5d60726bb9481d3cddf89a6fa2d9603f", size = 43648, upload-time = "2025-06-09T22:54:08.023Z" }, + { url = "https://files.pythonhosted.org/packages/46/92/1ad5af0df781e76988897da39b5f086c2bf0f028b7f9bd1f409bb05b6874/propcache-0.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a2dc1f4a1df4fecf4e6f68013575ff4af84ef6f478fe5344317a65d38a8e6dc9", size = 43496, upload-time = "2025-06-09T22:54:09.228Z" }, + { url = "https://files.pythonhosted.org/packages/b3/ce/e96392460f9fb68461fabab3e095cb00c8ddf901205be4eae5ce246e5b7e/propcache-0.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:be29c4f4810c5789cf10ddf6af80b041c724e629fa51e308a7a0fb19ed1ef7bf", size = 217288, upload-time = "2025-06-09T22:54:10.466Z" }, + { url = "https://files.pythonhosted.org/packages/c5/2a/866726ea345299f7ceefc861a5e782b045545ae6940851930a6adaf1fca6/propcache-0.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59d61f6970ecbd8ff2e9360304d5c8876a6abd4530cb752c06586849ac8a9dc9", size = 227456, upload-time = "2025-06-09T22:54:11.828Z" }, + { url = "https://files.pythonhosted.org/packages/de/03/07d992ccb6d930398689187e1b3c718339a1c06b8b145a8d9650e4726166/propcache-0.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:62180e0b8dbb6b004baec00a7983e4cc52f5ada9cd11f48c3528d8cfa7b96a66", size = 225429, upload-time = "2025-06-09T22:54:13.823Z" }, + { url = "https://files.pythonhosted.org/packages/5d/e6/116ba39448753b1330f48ab8ba927dcd6cf0baea8a0ccbc512dfb49ba670/propcache-0.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c144ca294a204c470f18cf4c9d78887810d04a3e2fbb30eea903575a779159df", size = 213472, upload-time = "2025-06-09T22:54:15.232Z" }, + { url = "https://files.pythonhosted.org/packages/a6/85/f01f5d97e54e428885a5497ccf7f54404cbb4f906688a1690cd51bf597dc/propcache-0.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5c2a784234c28854878d68978265617aa6dc0780e53d44b4d67f3651a17a9a2", size = 204480, upload-time = "2025-06-09T22:54:17.104Z" }, + { url = "https://files.pythonhosted.org/packages/e3/79/7bf5ab9033b8b8194cc3f7cf1aaa0e9c3256320726f64a3e1f113a812dce/propcache-0.3.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5745bc7acdafa978ca1642891b82c19238eadc78ba2aaa293c6863b304e552d7", size = 214530, upload-time = "2025-06-09T22:54:18.512Z" }, + { url = "https://files.pythonhosted.org/packages/31/0b/bd3e0c00509b609317df4a18e6b05a450ef2d9a963e1d8bc9c9415d86f30/propcache-0.3.2-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:c0075bf773d66fa8c9d41f66cc132ecc75e5bb9dd7cce3cfd14adc5ca184cb95", size = 205230, upload-time = "2025-06-09T22:54:19.947Z" }, + { url = "https://files.pythonhosted.org/packages/7a/23/fae0ff9b54b0de4e819bbe559508da132d5683c32d84d0dc2ccce3563ed4/propcache-0.3.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5f57aa0847730daceff0497f417c9de353c575d8da3579162cc74ac294c5369e", size = 206754, upload-time = "2025-06-09T22:54:21.716Z" }, + { url = "https://files.pythonhosted.org/packages/b7/7f/ad6a3c22630aaa5f618b4dc3c3598974a72abb4c18e45a50b3cdd091eb2f/propcache-0.3.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:eef914c014bf72d18efb55619447e0aecd5fb7c2e3fa7441e2e5d6099bddff7e", size = 218430, upload-time = "2025-06-09T22:54:23.17Z" }, + { url = "https://files.pythonhosted.org/packages/5b/2c/ba4f1c0e8a4b4c75910742f0d333759d441f65a1c7f34683b4a74c0ee015/propcache-0.3.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:2a4092e8549031e82facf3decdbc0883755d5bbcc62d3aea9d9e185549936dcf", size = 223884, upload-time = "2025-06-09T22:54:25.539Z" }, + { url = "https://files.pythonhosted.org/packages/88/e4/ebe30fc399e98572019eee82ad0caf512401661985cbd3da5e3140ffa1b0/propcache-0.3.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:85871b050f174bc0bfb437efbdb68aaf860611953ed12418e4361bc9c392749e", size = 211480, upload-time = "2025-06-09T22:54:26.892Z" }, + { url = "https://files.pythonhosted.org/packages/96/0a/7d5260b914e01d1d0906f7f38af101f8d8ed0dc47426219eeaf05e8ea7c2/propcache-0.3.2-cp311-cp311-win32.whl", hash = "sha256:36c8d9b673ec57900c3554264e630d45980fd302458e4ac801802a7fd2ef7897", size = 37757, upload-time = "2025-06-09T22:54:28.241Z" }, + { url = "https://files.pythonhosted.org/packages/e1/2d/89fe4489a884bc0da0c3278c552bd4ffe06a1ace559db5ef02ef24ab446b/propcache-0.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:e53af8cb6a781b02d2ea079b5b853ba9430fcbe18a8e3ce647d5982a3ff69f39", size = 41500, upload-time = "2025-06-09T22:54:29.4Z" }, + { url = "https://files.pythonhosted.org/packages/a8/42/9ca01b0a6f48e81615dca4765a8f1dd2c057e0540f6116a27dc5ee01dfb6/propcache-0.3.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:8de106b6c84506b31c27168582cd3cb3000a6412c16df14a8628e5871ff83c10", size = 73674, upload-time = "2025-06-09T22:54:30.551Z" }, + { url = "https://files.pythonhosted.org/packages/af/6e/21293133beb550f9c901bbece755d582bfaf2176bee4774000bd4dd41884/propcache-0.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:28710b0d3975117239c76600ea351934ac7b5ff56e60953474342608dbbb6154", size = 43570, upload-time = "2025-06-09T22:54:32.296Z" }, + { url = "https://files.pythonhosted.org/packages/0c/c8/0393a0a3a2b8760eb3bde3c147f62b20044f0ddac81e9d6ed7318ec0d852/propcache-0.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce26862344bdf836650ed2487c3d724b00fbfec4233a1013f597b78c1cb73615", size = 43094, upload-time = "2025-06-09T22:54:33.929Z" }, + { url = "https://files.pythonhosted.org/packages/37/2c/489afe311a690399d04a3e03b069225670c1d489eb7b044a566511c1c498/propcache-0.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bca54bd347a253af2cf4544bbec232ab982f4868de0dd684246b67a51bc6b1db", size = 226958, upload-time = "2025-06-09T22:54:35.186Z" }, + { url = "https://files.pythonhosted.org/packages/9d/ca/63b520d2f3d418c968bf596839ae26cf7f87bead026b6192d4da6a08c467/propcache-0.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:55780d5e9a2ddc59711d727226bb1ba83a22dd32f64ee15594b9392b1f544eb1", size = 234894, upload-time = "2025-06-09T22:54:36.708Z" }, + { url = "https://files.pythonhosted.org/packages/11/60/1d0ed6fff455a028d678df30cc28dcee7af77fa2b0e6962ce1df95c9a2a9/propcache-0.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:035e631be25d6975ed87ab23153db6a73426a48db688070d925aa27e996fe93c", size = 233672, upload-time = "2025-06-09T22:54:38.062Z" }, + { url = "https://files.pythonhosted.org/packages/37/7c/54fd5301ef38505ab235d98827207176a5c9b2aa61939b10a460ca53e123/propcache-0.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee6f22b6eaa39297c751d0e80c0d3a454f112f5c6481214fcf4c092074cecd67", size = 224395, upload-time = "2025-06-09T22:54:39.634Z" }, + { url = "https://files.pythonhosted.org/packages/ee/1a/89a40e0846f5de05fdc6779883bf46ba980e6df4d2ff8fb02643de126592/propcache-0.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7ca3aee1aa955438c4dba34fc20a9f390e4c79967257d830f137bd5a8a32ed3b", size = 212510, upload-time = "2025-06-09T22:54:41.565Z" }, + { url = "https://files.pythonhosted.org/packages/5e/33/ca98368586c9566a6b8d5ef66e30484f8da84c0aac3f2d9aec6d31a11bd5/propcache-0.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7a4f30862869fa2b68380d677cc1c5fcf1e0f2b9ea0cf665812895c75d0ca3b8", size = 222949, upload-time = "2025-06-09T22:54:43.038Z" }, + { url = "https://files.pythonhosted.org/packages/ba/11/ace870d0aafe443b33b2f0b7efdb872b7c3abd505bfb4890716ad7865e9d/propcache-0.3.2-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:b77ec3c257d7816d9f3700013639db7491a434644c906a2578a11daf13176251", size = 217258, upload-time = "2025-06-09T22:54:44.376Z" }, + { url = "https://files.pythonhosted.org/packages/5b/d2/86fd6f7adffcfc74b42c10a6b7db721d1d9ca1055c45d39a1a8f2a740a21/propcache-0.3.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:cab90ac9d3f14b2d5050928483d3d3b8fb6b4018893fc75710e6aa361ecb2474", size = 213036, upload-time = "2025-06-09T22:54:46.243Z" }, + { url = "https://files.pythonhosted.org/packages/07/94/2d7d1e328f45ff34a0a284cf5a2847013701e24c2a53117e7c280a4316b3/propcache-0.3.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:0b504d29f3c47cf6b9e936c1852246c83d450e8e063d50562115a6be6d3a2535", size = 227684, upload-time = "2025-06-09T22:54:47.63Z" }, + { url = "https://files.pythonhosted.org/packages/b7/05/37ae63a0087677e90b1d14710e532ff104d44bc1efa3b3970fff99b891dc/propcache-0.3.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:ce2ac2675a6aa41ddb2a0c9cbff53780a617ac3d43e620f8fd77ba1c84dcfc06", size = 234562, upload-time = "2025-06-09T22:54:48.982Z" }, + { url = "https://files.pythonhosted.org/packages/a4/7c/3f539fcae630408d0bd8bf3208b9a647ccad10976eda62402a80adf8fc34/propcache-0.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:62b4239611205294cc433845b914131b2a1f03500ff3c1ed093ed216b82621e1", size = 222142, upload-time = "2025-06-09T22:54:50.424Z" }, + { url = "https://files.pythonhosted.org/packages/7c/d2/34b9eac8c35f79f8a962546b3e97e9d4b990c420ee66ac8255d5d9611648/propcache-0.3.2-cp312-cp312-win32.whl", hash = "sha256:df4a81b9b53449ebc90cc4deefb052c1dd934ba85012aa912c7ea7b7e38b60c1", size = 37711, upload-time = "2025-06-09T22:54:52.072Z" }, + { url = "https://files.pythonhosted.org/packages/19/61/d582be5d226cf79071681d1b46b848d6cb03d7b70af7063e33a2787eaa03/propcache-0.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:7046e79b989d7fe457bb755844019e10f693752d169076138abf17f31380800c", size = 41479, upload-time = "2025-06-09T22:54:53.234Z" }, + { url = "https://files.pythonhosted.org/packages/dc/d1/8c747fafa558c603c4ca19d8e20b288aa0c7cda74e9402f50f31eb65267e/propcache-0.3.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ca592ed634a73ca002967458187109265e980422116c0a107cf93d81f95af945", size = 71286, upload-time = "2025-06-09T22:54:54.369Z" }, + { url = "https://files.pythonhosted.org/packages/61/99/d606cb7986b60d89c36de8a85d58764323b3a5ff07770a99d8e993b3fa73/propcache-0.3.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9ecb0aad4020e275652ba3975740f241bd12a61f1a784df044cf7477a02bc252", size = 42425, upload-time = "2025-06-09T22:54:55.642Z" }, + { url = "https://files.pythonhosted.org/packages/8c/96/ef98f91bbb42b79e9bb82bdd348b255eb9d65f14dbbe3b1594644c4073f7/propcache-0.3.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7f08f1cc28bd2eade7a8a3d2954ccc673bb02062e3e7da09bc75d843386b342f", size = 41846, upload-time = "2025-06-09T22:54:57.246Z" }, + { url = "https://files.pythonhosted.org/packages/5b/ad/3f0f9a705fb630d175146cd7b1d2bf5555c9beaed54e94132b21aac098a6/propcache-0.3.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1a342c834734edb4be5ecb1e9fb48cb64b1e2320fccbd8c54bf8da8f2a84c33", size = 208871, upload-time = "2025-06-09T22:54:58.975Z" }, + { url = "https://files.pythonhosted.org/packages/3a/38/2085cda93d2c8b6ec3e92af2c89489a36a5886b712a34ab25de9fbca7992/propcache-0.3.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8a544caaae1ac73f1fecfae70ded3e93728831affebd017d53449e3ac052ac1e", size = 215720, upload-time = "2025-06-09T22:55:00.471Z" }, + { url = "https://files.pythonhosted.org/packages/61/c1/d72ea2dc83ac7f2c8e182786ab0fc2c7bd123a1ff9b7975bee671866fe5f/propcache-0.3.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:310d11aa44635298397db47a3ebce7db99a4cc4b9bbdfcf6c98a60c8d5261cf1", size = 215203, upload-time = "2025-06-09T22:55:01.834Z" }, + { url = "https://files.pythonhosted.org/packages/af/81/b324c44ae60c56ef12007105f1460d5c304b0626ab0cc6b07c8f2a9aa0b8/propcache-0.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c1396592321ac83157ac03a2023aa6cc4a3cc3cfdecb71090054c09e5a7cce3", size = 206365, upload-time = "2025-06-09T22:55:03.199Z" }, + { url = "https://files.pythonhosted.org/packages/09/73/88549128bb89e66d2aff242488f62869014ae092db63ccea53c1cc75a81d/propcache-0.3.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8cabf5b5902272565e78197edb682017d21cf3b550ba0460ee473753f28d23c1", size = 196016, upload-time = "2025-06-09T22:55:04.518Z" }, + { url = "https://files.pythonhosted.org/packages/b9/3f/3bdd14e737d145114a5eb83cb172903afba7242f67c5877f9909a20d948d/propcache-0.3.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0a2f2235ac46a7aa25bdeb03a9e7060f6ecbd213b1f9101c43b3090ffb971ef6", size = 205596, upload-time = "2025-06-09T22:55:05.942Z" }, + { url = "https://files.pythonhosted.org/packages/0f/ca/2f4aa819c357d3107c3763d7ef42c03980f9ed5c48c82e01e25945d437c1/propcache-0.3.2-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:92b69e12e34869a6970fd2f3da91669899994b47c98f5d430b781c26f1d9f387", size = 200977, upload-time = "2025-06-09T22:55:07.792Z" }, + { url = "https://files.pythonhosted.org/packages/cd/4a/e65276c7477533c59085251ae88505caf6831c0e85ff8b2e31ebcbb949b1/propcache-0.3.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:54e02207c79968ebbdffc169591009f4474dde3b4679e16634d34c9363ff56b4", size = 197220, upload-time = "2025-06-09T22:55:09.173Z" }, + { url = "https://files.pythonhosted.org/packages/7c/54/fc7152e517cf5578278b242396ce4d4b36795423988ef39bb8cd5bf274c8/propcache-0.3.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4adfb44cb588001f68c5466579d3f1157ca07f7504fc91ec87862e2b8e556b88", size = 210642, upload-time = "2025-06-09T22:55:10.62Z" }, + { url = "https://files.pythonhosted.org/packages/b9/80/abeb4a896d2767bf5f1ea7b92eb7be6a5330645bd7fb844049c0e4045d9d/propcache-0.3.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:fd3e6019dc1261cd0291ee8919dd91fbab7b169bb76aeef6c716833a3f65d206", size = 212789, upload-time = "2025-06-09T22:55:12.029Z" }, + { url = "https://files.pythonhosted.org/packages/b3/db/ea12a49aa7b2b6d68a5da8293dcf50068d48d088100ac016ad92a6a780e6/propcache-0.3.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4c181cad81158d71c41a2bce88edce078458e2dd5ffee7eddd6b05da85079f43", size = 205880, upload-time = "2025-06-09T22:55:13.45Z" }, + { url = "https://files.pythonhosted.org/packages/d1/e5/9076a0bbbfb65d1198007059c65639dfd56266cf8e477a9707e4b1999ff4/propcache-0.3.2-cp313-cp313-win32.whl", hash = "sha256:8a08154613f2249519e549de2330cf8e2071c2887309a7b07fb56098f5170a02", size = 37220, upload-time = "2025-06-09T22:55:15.284Z" }, + { url = "https://files.pythonhosted.org/packages/d3/f5/b369e026b09a26cd77aa88d8fffd69141d2ae00a2abaaf5380d2603f4b7f/propcache-0.3.2-cp313-cp313-win_amd64.whl", hash = "sha256:e41671f1594fc4ab0a6dec1351864713cb3a279910ae8b58f884a88a0a632c05", size = 40678, upload-time = "2025-06-09T22:55:16.445Z" }, + { url = "https://files.pythonhosted.org/packages/a4/3a/6ece377b55544941a08d03581c7bc400a3c8cd3c2865900a68d5de79e21f/propcache-0.3.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:9a3cf035bbaf035f109987d9d55dc90e4b0e36e04bbbb95af3055ef17194057b", size = 76560, upload-time = "2025-06-09T22:55:17.598Z" }, + { url = "https://files.pythonhosted.org/packages/0c/da/64a2bb16418740fa634b0e9c3d29edff1db07f56d3546ca2d86ddf0305e1/propcache-0.3.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:156c03d07dc1323d8dacaa221fbe028c5c70d16709cdd63502778e6c3ccca1b0", size = 44676, upload-time = "2025-06-09T22:55:18.922Z" }, + { url = "https://files.pythonhosted.org/packages/36/7b/f025e06ea51cb72c52fb87e9b395cced02786610b60a3ed51da8af017170/propcache-0.3.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:74413c0ba02ba86f55cf60d18daab219f7e531620c15f1e23d95563f505efe7e", size = 44701, upload-time = "2025-06-09T22:55:20.106Z" }, + { url = "https://files.pythonhosted.org/packages/a4/00/faa1b1b7c3b74fc277f8642f32a4c72ba1d7b2de36d7cdfb676db7f4303e/propcache-0.3.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f066b437bb3fa39c58ff97ab2ca351db465157d68ed0440abecb21715eb24b28", size = 276934, upload-time = "2025-06-09T22:55:21.5Z" }, + { url = "https://files.pythonhosted.org/packages/74/ab/935beb6f1756e0476a4d5938ff44bf0d13a055fed880caf93859b4f1baf4/propcache-0.3.2-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f1304b085c83067914721e7e9d9917d41ad87696bf70f0bc7dee450e9c71ad0a", size = 278316, upload-time = "2025-06-09T22:55:22.918Z" }, + { url = "https://files.pythonhosted.org/packages/f8/9d/994a5c1ce4389610838d1caec74bdf0e98b306c70314d46dbe4fcf21a3e2/propcache-0.3.2-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ab50cef01b372763a13333b4e54021bdcb291fc9a8e2ccb9c2df98be51bcde6c", size = 282619, upload-time = "2025-06-09T22:55:24.651Z" }, + { url = "https://files.pythonhosted.org/packages/2b/00/a10afce3d1ed0287cef2e09506d3be9822513f2c1e96457ee369adb9a6cd/propcache-0.3.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fad3b2a085ec259ad2c2842666b2a0a49dea8463579c606426128925af1ed725", size = 265896, upload-time = "2025-06-09T22:55:26.049Z" }, + { url = "https://files.pythonhosted.org/packages/2e/a8/2aa6716ffa566ca57c749edb909ad27884680887d68517e4be41b02299f3/propcache-0.3.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:261fa020c1c14deafd54c76b014956e2f86991af198c51139faf41c4d5e83892", size = 252111, upload-time = "2025-06-09T22:55:27.381Z" }, + { url = "https://files.pythonhosted.org/packages/36/4f/345ca9183b85ac29c8694b0941f7484bf419c7f0fea2d1e386b4f7893eed/propcache-0.3.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:46d7f8aa79c927e5f987ee3a80205c987717d3659f035c85cf0c3680526bdb44", size = 268334, upload-time = "2025-06-09T22:55:28.747Z" }, + { url = "https://files.pythonhosted.org/packages/3e/ca/fcd54f78b59e3f97b3b9715501e3147f5340167733d27db423aa321e7148/propcache-0.3.2-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:6d8f3f0eebf73e3c0ff0e7853f68be638b4043c65a70517bb575eff54edd8dbe", size = 255026, upload-time = "2025-06-09T22:55:30.184Z" }, + { url = "https://files.pythonhosted.org/packages/8b/95/8e6a6bbbd78ac89c30c225210a5c687790e532ba4088afb8c0445b77ef37/propcache-0.3.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:03c89c1b14a5452cf15403e291c0ccd7751d5b9736ecb2c5bab977ad6c5bcd81", size = 250724, upload-time = "2025-06-09T22:55:31.646Z" }, + { url = "https://files.pythonhosted.org/packages/ee/b0/0dd03616142baba28e8b2d14ce5df6631b4673850a3d4f9c0f9dd714a404/propcache-0.3.2-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:0cc17efde71e12bbaad086d679ce575268d70bc123a5a71ea7ad76f70ba30bba", size = 268868, upload-time = "2025-06-09T22:55:33.209Z" }, + { url = "https://files.pythonhosted.org/packages/c5/98/2c12407a7e4fbacd94ddd32f3b1e3d5231e77c30ef7162b12a60e2dd5ce3/propcache-0.3.2-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:acdf05d00696bc0447e278bb53cb04ca72354e562cf88ea6f9107df8e7fd9770", size = 271322, upload-time = "2025-06-09T22:55:35.065Z" }, + { url = "https://files.pythonhosted.org/packages/35/91/9cb56efbb428b006bb85db28591e40b7736847b8331d43fe335acf95f6c8/propcache-0.3.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4445542398bd0b5d32df908031cb1b30d43ac848e20470a878b770ec2dcc6330", size = 265778, upload-time = "2025-06-09T22:55:36.45Z" }, + { url = "https://files.pythonhosted.org/packages/9a/4c/b0fe775a2bdd01e176b14b574be679d84fc83958335790f7c9a686c1f468/propcache-0.3.2-cp313-cp313t-win32.whl", hash = "sha256:f86e5d7cd03afb3a1db8e9f9f6eff15794e79e791350ac48a8c924e6f439f394", size = 41175, upload-time = "2025-06-09T22:55:38.436Z" }, + { url = "https://files.pythonhosted.org/packages/a4/ff/47f08595e3d9b5e149c150f88d9714574f1a7cbd89fe2817158a952674bf/propcache-0.3.2-cp313-cp313t-win_amd64.whl", hash = "sha256:9704bedf6e7cbe3c65eca4379a9b53ee6a83749f047808cbb5044d40d7d72198", size = 44857, upload-time = "2025-06-09T22:55:39.687Z" }, + { url = "https://files.pythonhosted.org/packages/6c/39/8ea9bcfaaff16fd0b0fc901ee522e24c9ec44b4ca0229cfffb8066a06959/propcache-0.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a7fad897f14d92086d6b03fdd2eb844777b0c4d7ec5e3bac0fbae2ab0602bbe5", size = 74678, upload-time = "2025-06-09T22:55:41.227Z" }, + { url = "https://files.pythonhosted.org/packages/d3/85/cab84c86966e1d354cf90cdc4ba52f32f99a5bca92a1529d666d957d7686/propcache-0.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1f43837d4ca000243fd7fd6301947d7cb93360d03cd08369969450cc6b2ce3b4", size = 43829, upload-time = "2025-06-09T22:55:42.417Z" }, + { url = "https://files.pythonhosted.org/packages/23/f7/9cb719749152d8b26d63801b3220ce2d3931312b2744d2b3a088b0ee9947/propcache-0.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:261df2e9474a5949c46e962065d88eb9b96ce0f2bd30e9d3136bcde84befd8f2", size = 43729, upload-time = "2025-06-09T22:55:43.651Z" }, + { url = "https://files.pythonhosted.org/packages/a2/a2/0b2b5a210ff311260002a315f6f9531b65a36064dfb804655432b2f7d3e3/propcache-0.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e514326b79e51f0a177daab1052bc164d9d9e54133797a3a58d24c9c87a3fe6d", size = 204483, upload-time = "2025-06-09T22:55:45.327Z" }, + { url = "https://files.pythonhosted.org/packages/3f/e0/7aff5de0c535f783b0c8be5bdb750c305c1961d69fbb136939926e155d98/propcache-0.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d4a996adb6904f85894570301939afeee65f072b4fd265ed7e569e8d9058e4ec", size = 217425, upload-time = "2025-06-09T22:55:46.729Z" }, + { url = "https://files.pythonhosted.org/packages/92/1d/65fa889eb3b2a7d6e4ed3c2b568a9cb8817547a1450b572de7bf24872800/propcache-0.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:76cace5d6b2a54e55b137669b30f31aa15977eeed390c7cbfb1dafa8dfe9a701", size = 214723, upload-time = "2025-06-09T22:55:48.342Z" }, + { url = "https://files.pythonhosted.org/packages/9a/e2/eecf6989870988dfd731de408a6fa366e853d361a06c2133b5878ce821ad/propcache-0.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31248e44b81d59d6addbb182c4720f90b44e1efdc19f58112a3c3a1615fb47ef", size = 200166, upload-time = "2025-06-09T22:55:49.775Z" }, + { url = "https://files.pythonhosted.org/packages/12/06/c32be4950967f18f77489268488c7cdc78cbfc65a8ba8101b15e526b83dc/propcache-0.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abb7fa19dbf88d3857363e0493b999b8011eea856b846305d8c0512dfdf8fbb1", size = 194004, upload-time = "2025-06-09T22:55:51.335Z" }, + { url = "https://files.pythonhosted.org/packages/46/6c/17b521a6b3b7cbe277a4064ff0aa9129dd8c89f425a5a9b6b4dd51cc3ff4/propcache-0.3.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:d81ac3ae39d38588ad0549e321e6f773a4e7cc68e7751524a22885d5bbadf886", size = 203075, upload-time = "2025-06-09T22:55:52.681Z" }, + { url = "https://files.pythonhosted.org/packages/62/cb/3bdba2b736b3e45bc0e40f4370f745b3e711d439ffbffe3ae416393eece9/propcache-0.3.2-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:cc2782eb0f7a16462285b6f8394bbbd0e1ee5f928034e941ffc444012224171b", size = 195407, upload-time = "2025-06-09T22:55:54.048Z" }, + { url = "https://files.pythonhosted.org/packages/29/bd/760c5c6a60a4a2c55a421bc34a25ba3919d49dee411ddb9d1493bb51d46e/propcache-0.3.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:db429c19a6c7e8a1c320e6a13c99799450f411b02251fb1b75e6217cf4a14fcb", size = 196045, upload-time = "2025-06-09T22:55:55.485Z" }, + { url = "https://files.pythonhosted.org/packages/76/58/ced2757a46f55b8c84358d6ab8de4faf57cba831c51e823654da7144b13a/propcache-0.3.2-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:21d8759141a9e00a681d35a1f160892a36fb6caa715ba0b832f7747da48fb6ea", size = 208432, upload-time = "2025-06-09T22:55:56.884Z" }, + { url = "https://files.pythonhosted.org/packages/bb/ec/d98ea8d5a4d8fe0e372033f5254eddf3254344c0c5dc6c49ab84349e4733/propcache-0.3.2-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:2ca6d378f09adb13837614ad2754fa8afaee330254f404299611bce41a8438cb", size = 210100, upload-time = "2025-06-09T22:55:58.498Z" }, + { url = "https://files.pythonhosted.org/packages/56/84/b6d8a7ecf3f62d7dd09d9d10bbf89fad6837970ef868b35b5ffa0d24d9de/propcache-0.3.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:34a624af06c048946709f4278b4176470073deda88d91342665d95f7c6270fbe", size = 200712, upload-time = "2025-06-09T22:55:59.906Z" }, + { url = "https://files.pythonhosted.org/packages/bf/32/889f4903ddfe4a9dc61da71ee58b763758cf2d608fe1decede06e6467f8d/propcache-0.3.2-cp39-cp39-win32.whl", hash = "sha256:4ba3fef1c30f306b1c274ce0b8baaa2c3cdd91f645c48f06394068f37d3837a1", size = 38187, upload-time = "2025-06-09T22:56:01.212Z" }, + { url = "https://files.pythonhosted.org/packages/67/74/d666795fb9ba1dc139d30de64f3b6fd1ff9c9d3d96ccfdb992cd715ce5d2/propcache-0.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:7a2368eed65fc69a7a7a40b27f22e85e7627b74216f0846b04ba5c116e191ec9", size = 42025, upload-time = "2025-06-09T22:56:02.875Z" }, + { url = "https://files.pythonhosted.org/packages/cc/35/cc0aaecf278bb4575b8555f2b137de5ab821595ddae9da9d3cd1da4072c7/propcache-0.3.2-py3-none-any.whl", hash = "sha256:98f1ec44fb675f5052cccc8e609c46ed23a35a1cfd18545ad4e29002d858a43f", size = 12663, upload-time = "2025-06-09T22:56:04.484Z" }, +] + +[[package]] +name = "proto-plus" +version = "1.26.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f4/ac/87285f15f7cce6d4a008f33f1757fb5a13611ea8914eb58c3d0d26243468/proto_plus-1.26.1.tar.gz", hash = "sha256:21a515a4c4c0088a773899e23c7bbade3d18f9c66c73edd4c7ee3816bc96a012", size = 56142, upload-time = "2025-03-10T15:54:38.843Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4e/6d/280c4c2ce28b1593a19ad5239c8b826871fc6ec275c21afc8e1820108039/proto_plus-1.26.1-py3-none-any.whl", hash = "sha256:13285478c2dcf2abb829db158e1047e2f1e8d63a077d94263c2b88b043c75a66", size = 50163, upload-time = "2025-03-10T15:54:37.335Z" }, +] + +[[package]] +name = "protobuf" +version = "6.31.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/52/f3/b9655a711b32c19720253f6f06326faf90580834e2e83f840472d752bc8b/protobuf-6.31.1.tar.gz", hash = "sha256:d8cac4c982f0b957a4dc73a80e2ea24fab08e679c0de9deb835f4a12d69aca9a", size = 441797, upload-time = "2025-05-28T19:25:54.947Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f3/6f/6ab8e4bf962fd5570d3deaa2d5c38f0a363f57b4501047b5ebeb83ab1125/protobuf-6.31.1-cp310-abi3-win32.whl", hash = "sha256:7fa17d5a29c2e04b7d90e5e32388b8bfd0e7107cd8e616feef7ed3fa6bdab5c9", size = 423603, upload-time = "2025-05-28T19:25:41.198Z" }, + { url = "https://files.pythonhosted.org/packages/44/3a/b15c4347dd4bf3a1b0ee882f384623e2063bb5cf9fa9d57990a4f7df2fb6/protobuf-6.31.1-cp310-abi3-win_amd64.whl", hash = "sha256:426f59d2964864a1a366254fa703b8632dcec0790d8862d30034d8245e1cd447", size = 435283, upload-time = "2025-05-28T19:25:44.275Z" }, + { url = "https://files.pythonhosted.org/packages/6a/c9/b9689a2a250264a84e66c46d8862ba788ee7a641cdca39bccf64f59284b7/protobuf-6.31.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:6f1227473dc43d44ed644425268eb7c2e488ae245d51c6866d19fe158e207402", size = 425604, upload-time = "2025-05-28T19:25:45.702Z" }, + { url = "https://files.pythonhosted.org/packages/76/a1/7a5a94032c83375e4fe7e7f56e3976ea6ac90c5e85fac8576409e25c39c3/protobuf-6.31.1-cp39-abi3-manylinux2014_aarch64.whl", hash = "sha256:a40fc12b84c154884d7d4c4ebd675d5b3b5283e155f324049ae396b95ddebc39", size = 322115, upload-time = "2025-05-28T19:25:47.128Z" }, + { url = "https://files.pythonhosted.org/packages/fa/b1/b59d405d64d31999244643d88c45c8241c58f17cc887e73bcb90602327f8/protobuf-6.31.1-cp39-abi3-manylinux2014_x86_64.whl", hash = "sha256:4ee898bf66f7a8b0bd21bce523814e6fbd8c6add948045ce958b73af7e8878c6", size = 321070, upload-time = "2025-05-28T19:25:50.036Z" }, + { url = "https://files.pythonhosted.org/packages/b1/f0/4160dbd205eee8fdf8647d154e7ceaa9d25b3a877b6311274eb6dc896b75/protobuf-6.31.1-cp39-cp39-win32.whl", hash = "sha256:0414e3aa5a5f3ff423828e1e6a6e907d6c65c1d5b7e6e975793d5590bdeecc16", size = 423626, upload-time = "2025-05-28T19:25:51.355Z" }, + { url = "https://files.pythonhosted.org/packages/09/34/13989eb9f482409ed821bfa3e34e6a3878b42607c38e7f7572b4cc825091/protobuf-6.31.1-cp39-cp39-win_amd64.whl", hash = "sha256:8764cf4587791e7564051b35524b72844f845ad0bb011704c3736cce762d8fe9", size = 435347, upload-time = "2025-05-28T19:25:52.932Z" }, + { url = "https://files.pythonhosted.org/packages/f7/af/ab3c51ab7507a7325e98ffe691d9495ee3d3aa5f589afad65ec920d39821/protobuf-6.31.1-py3-none-any.whl", hash = "sha256:720a6c7e6b77288b85063569baae8536671b39f15cc22037ec7045658d80489e", size = 168724, upload-time = "2025-05-28T19:25:53.926Z" }, +] + [[package]] name = "psutil" version = "7.0.0" @@ -2226,6 +3792,83 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e0/a9/023730ba63db1e494a271cb018dcd361bd2c917ba7004c3e49d5daf795a2/py_cpuinfo-9.0.0-py3-none-any.whl", hash = "sha256:859625bc251f64e21f077d099d4162689c762b5d6a4c3c97553d56241c9674d5", size = 22335, upload-time = "2022-10-25T20:38:27.636Z" }, ] +[[package]] +name = "py-spy" +version = "0.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7c/cd/9dacc04604dc4398ce5bed77ed59918ad0940f15165954d4aaa651cc640c/py_spy-0.4.0.tar.gz", hash = "sha256:806602ce7972782cc9c1e383f339bfc27bfb822d42485e6a3e0530ae5040e1f0", size = 253236, upload-time = "2024-11-01T19:08:51.487Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/7e/02ca3ee68507db47afce769504060d71b4dc1455f0f9faa8d32fc7762221/py_spy-0.4.0-py2.py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:f2cf3f7130e7d780471faa5957441d3b4e0ec39a79b2c00f4c33d494f7728428", size = 3617847, upload-time = "2024-11-01T19:08:37.44Z" }, + { url = "https://files.pythonhosted.org/packages/65/7c/d9e26cc4c8e91f96a3a65de04d2e2e4131fbcaf6830d10917d4fab9d6788/py_spy-0.4.0-py2.py3-none-macosx_11_0_arm64.whl", hash = "sha256:47cdda4c34d9b6cb01f3aaeceb2e88faf57da880207fe72ff6ff97e9bb6cc8a9", size = 1761955, upload-time = "2024-11-01T19:08:39.632Z" }, + { url = "https://files.pythonhosted.org/packages/d2/e4/8fbfd219b7f282b80e6b2e74c9197850d2c51db8555705567bb65507b060/py_spy-0.4.0-py2.py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eee3d0bde85ca5cf4f01f012d461180ca76c24835a96f7b5c4ded64eb6a008ab", size = 2059471, upload-time = "2024-11-01T19:08:41.818Z" }, + { url = "https://files.pythonhosted.org/packages/a7/1d/79a94a5ace810c13b730ce96765ca465c171b4952034f1be7402d8accbc1/py_spy-0.4.0-py2.py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c5f06ffce4c9c98b7fc9f5e67e5e7db591173f1351837633f3f23d9378b1d18a", size = 2067486, upload-time = "2024-11-01T19:08:43.673Z" }, + { url = "https://files.pythonhosted.org/packages/6d/90/fbbb038f826a83ed15ebc4ae606815d6cad6c5c6399c86c7ab96f6c60817/py_spy-0.4.0-py2.py3-none-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:87573e64dbfdfc89ba2e0f5e2f525aa84e0299c7eb6454b47ea335fde583a7a0", size = 2141433, upload-time = "2024-11-01T19:08:45.988Z" }, + { url = "https://files.pythonhosted.org/packages/c9/c1/5e012669ebb687e546dc99fcfc4861ebfcf3a337b7a41af945df23140bb5/py_spy-0.4.0-py2.py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:8bf2f3702cef367a489faa45177b41a6c31b2a3e5bd78c978d44e29340152f5a", size = 2732951, upload-time = "2024-11-01T19:08:48.109Z" }, + { url = "https://files.pythonhosted.org/packages/74/8b/dd8490660019a6b0be28d9ffd2bf1db967604b19f3f2719c0e283a16ac7f/py_spy-0.4.0-py2.py3-none-win_amd64.whl", hash = "sha256:77d8f637ade38367d944874776f45b703b7ac5938b1f7be8891f3a5876ddbb96", size = 1810770, upload-time = "2024-11-01T19:08:50.229Z" }, +] + +[[package]] +name = "pyarrow" +version = "17.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/27/4e/ea6d43f324169f8aec0e57569443a38bab4b398d09769ca64f7b4d467de3/pyarrow-17.0.0.tar.gz", hash = "sha256:4beca9521ed2c0921c1023e68d097d0299b62c362639ea315572a58f3f50fd28", size = 1112479, upload-time = "2024-07-17T10:41:25.092Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/39/5d/78d4b040bc5ff2fc6c3d03e80fca396b742f6c125b8af06bcf7427f931bc/pyarrow-17.0.0-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:a5c8b238d47e48812ee577ee20c9a2779e6a5904f1708ae240f53ecbee7c9f07", size = 28994846, upload-time = "2024-07-16T10:29:13.082Z" }, + { url = "https://files.pythonhosted.org/packages/3b/73/8ed168db7642e91180330e4ea9f3ff8bab404678f00d32d7df0871a4933b/pyarrow-17.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:db023dc4c6cae1015de9e198d41250688383c3f9af8f565370ab2b4cb5f62655", size = 27165908, upload-time = "2024-07-16T10:29:20.362Z" }, + { url = "https://files.pythonhosted.org/packages/81/36/e78c24be99242063f6d0590ef68c857ea07bdea470242c361e9a15bd57a4/pyarrow-17.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da1e060b3876faa11cee287839f9cc7cdc00649f475714b8680a05fd9071d545", size = 39264209, upload-time = "2024-07-16T10:29:27.621Z" }, + { url = "https://files.pythonhosted.org/packages/18/4c/3db637d7578f683b0a8fb8999b436bdbedd6e3517bd4f90c70853cf3ad20/pyarrow-17.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75c06d4624c0ad6674364bb46ef38c3132768139ddec1c56582dbac54f2663e2", size = 39862883, upload-time = "2024-07-16T10:29:34.34Z" }, + { url = "https://files.pythonhosted.org/packages/81/3c/0580626896c842614a523e66b351181ed5bb14e5dfc263cd68cea2c46d90/pyarrow-17.0.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:fa3c246cc58cb5a4a5cb407a18f193354ea47dd0648194e6265bd24177982fe8", size = 38723009, upload-time = "2024-07-16T10:29:41.123Z" }, + { url = "https://files.pythonhosted.org/packages/ee/fb/c1b47f0ada36d856a352da261a44d7344d8f22e2f7db3945f8c3b81be5dd/pyarrow-17.0.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:f7ae2de664e0b158d1607699a16a488de3d008ba99b3a7aa5de1cbc13574d047", size = 39855626, upload-time = "2024-07-16T10:29:49.004Z" }, + { url = "https://files.pythonhosted.org/packages/19/09/b0a02908180a25d57312ab5919069c39fddf30602568980419f4b02393f6/pyarrow-17.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:5984f416552eea15fd9cee03da53542bf4cddaef5afecefb9aa8d1010c335087", size = 25147242, upload-time = "2024-07-16T10:29:56.195Z" }, + { url = "https://files.pythonhosted.org/packages/f9/46/ce89f87c2936f5bb9d879473b9663ce7a4b1f4359acc2f0eb39865eaa1af/pyarrow-17.0.0-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:1c8856e2ef09eb87ecf937104aacfa0708f22dfeb039c363ec99735190ffb977", size = 29028748, upload-time = "2024-07-16T10:30:02.609Z" }, + { url = "https://files.pythonhosted.org/packages/8d/8e/ce2e9b2146de422f6638333c01903140e9ada244a2a477918a368306c64c/pyarrow-17.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2e19f569567efcbbd42084e87f948778eb371d308e137a0f97afe19bb860ccb3", size = 27190965, upload-time = "2024-07-16T10:30:10.718Z" }, + { url = "https://files.pythonhosted.org/packages/3b/c8/5675719570eb1acd809481c6d64e2136ffb340bc387f4ca62dce79516cea/pyarrow-17.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b244dc8e08a23b3e352899a006a26ae7b4d0da7bb636872fa8f5884e70acf15", size = 39269081, upload-time = "2024-07-16T10:30:18.878Z" }, + { url = "https://files.pythonhosted.org/packages/5e/78/3931194f16ab681ebb87ad252e7b8d2c8b23dad49706cadc865dff4a1dd3/pyarrow-17.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b72e87fe3e1db343995562f7fff8aee354b55ee83d13afba65400c178ab2597", size = 39864921, upload-time = "2024-07-16T10:30:27.008Z" }, + { url = "https://files.pythonhosted.org/packages/d8/81/69b6606093363f55a2a574c018901c40952d4e902e670656d18213c71ad7/pyarrow-17.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:dc5c31c37409dfbc5d014047817cb4ccd8c1ea25d19576acf1a001fe07f5b420", size = 38740798, upload-time = "2024-07-16T10:30:34.814Z" }, + { url = "https://files.pythonhosted.org/packages/4c/21/9ca93b84b92ef927814cb7ba37f0774a484c849d58f0b692b16af8eebcfb/pyarrow-17.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:e3343cb1e88bc2ea605986d4b94948716edc7a8d14afd4e2c097232f729758b4", size = 39871877, upload-time = "2024-07-16T10:30:42.672Z" }, + { url = "https://files.pythonhosted.org/packages/30/d1/63a7c248432c71c7d3ee803e706590a0b81ce1a8d2b2ae49677774b813bb/pyarrow-17.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:a27532c38f3de9eb3e90ecab63dfda948a8ca859a66e3a47f5f42d1e403c4d03", size = 25151089, upload-time = "2024-07-16T10:30:49.279Z" }, + { url = "https://files.pythonhosted.org/packages/d4/62/ce6ac1275a432b4a27c55fe96c58147f111d8ba1ad800a112d31859fae2f/pyarrow-17.0.0-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:9b8a823cea605221e61f34859dcc03207e52e409ccf6354634143e23af7c8d22", size = 29019418, upload-time = "2024-07-16T10:30:55.573Z" }, + { url = "https://files.pythonhosted.org/packages/8e/0a/dbd0c134e7a0c30bea439675cc120012337202e5fac7163ba839aa3691d2/pyarrow-17.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f1e70de6cb5790a50b01d2b686d54aaf73da01266850b05e3af2a1bc89e16053", size = 27152197, upload-time = "2024-07-16T10:31:02.036Z" }, + { url = "https://files.pythonhosted.org/packages/cb/05/3f4a16498349db79090767620d6dc23c1ec0c658a668d61d76b87706c65d/pyarrow-17.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0071ce35788c6f9077ff9ecba4858108eebe2ea5a3f7cf2cf55ebc1dbc6ee24a", size = 39263026, upload-time = "2024-07-16T10:31:10.351Z" }, + { url = "https://files.pythonhosted.org/packages/c2/0c/ea2107236740be8fa0e0d4a293a095c9f43546a2465bb7df34eee9126b09/pyarrow-17.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:757074882f844411fcca735e39aae74248a1531367a7c80799b4266390ae51cc", size = 39880798, upload-time = "2024-07-16T10:31:17.66Z" }, + { url = "https://files.pythonhosted.org/packages/f6/b0/b9164a8bc495083c10c281cc65064553ec87b7537d6f742a89d5953a2a3e/pyarrow-17.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:9ba11c4f16976e89146781a83833df7f82077cdab7dc6232c897789343f7891a", size = 38715172, upload-time = "2024-07-16T10:31:25.965Z" }, + { url = "https://files.pythonhosted.org/packages/f1/c4/9625418a1413005e486c006e56675334929fad864347c5ae7c1b2e7fe639/pyarrow-17.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b0c6ac301093b42d34410b187bba560b17c0330f64907bfa4f7f7f2444b0cf9b", size = 39874508, upload-time = "2024-07-16T10:31:33.721Z" }, + { url = "https://files.pythonhosted.org/packages/ae/49/baafe2a964f663413be3bd1cf5c45ed98c5e42e804e2328e18f4570027c1/pyarrow-17.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:392bc9feabc647338e6c89267635e111d71edad5fcffba204425a7c8d13610d7", size = 25099235, upload-time = "2024-07-16T10:31:40.893Z" }, + { url = "https://files.pythonhosted.org/packages/43/e0/a898096d35be240aa61fb2d54db58b86d664b10e1e51256f9300f47565e8/pyarrow-17.0.0-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:13d7a460b412f31e4c0efa1148e1d29bdf18ad1411eb6757d38f8fbdcc8645fb", size = 29007881, upload-time = "2024-07-17T10:40:37.927Z" }, + { url = "https://files.pythonhosted.org/packages/59/22/f7d14907ed0697b5dd488d393129f2738629fa5bcba863e00931b7975946/pyarrow-17.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9b564a51fbccfab5a04a80453e5ac6c9954a9c5ef2890d1bcf63741909c3f8df", size = 27178117, upload-time = "2024-07-17T10:40:43.964Z" }, + { url = "https://files.pythonhosted.org/packages/bf/ee/661211feac0ed48467b1d5c57298c91403809ec3ab78b1d175e1d6ad03cf/pyarrow-17.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32503827abbc5aadedfa235f5ece8c4f8f8b0a3cf01066bc8d29de7539532687", size = 39273896, upload-time = "2024-07-17T10:40:51.276Z" }, + { url = "https://files.pythonhosted.org/packages/af/61/bcd9b58e38ead6ad42b9ed00da33a3f862bc1d445e3d3164799c25550ac2/pyarrow-17.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a155acc7f154b9ffcc85497509bcd0d43efb80d6f733b0dc3bb14e281f131c8b", size = 39875438, upload-time = "2024-07-17T10:40:58.5Z" }, + { url = "https://files.pythonhosted.org/packages/75/63/29d1bfcc57af73cde3fc3baccab2f37548de512dbe0ab294b033cd203516/pyarrow-17.0.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:dec8d129254d0188a49f8a1fc99e0560dc1b85f60af729f47de4046015f9b0a5", size = 38735092, upload-time = "2024-07-17T10:41:06.034Z" }, + { url = "https://files.pythonhosted.org/packages/39/f4/90258b4de753df7cc61cefb0312f8abcf226672e96cc64996e66afce817a/pyarrow-17.0.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:a48ddf5c3c6a6c505904545c25a4ae13646ae1f8ba703c4df4a1bfe4f4006bda", size = 39867610, upload-time = "2024-07-17T10:41:13.61Z" }, + { url = "https://files.pythonhosted.org/packages/e7/f6/b75d4816c32f1618ed31a005ee635dd1d91d8164495d94f2ea092f594661/pyarrow-17.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:42bf93249a083aca230ba7e2786c5f673507fa97bbd9725a1e2754715151a204", size = 25148611, upload-time = "2024-07-17T10:41:20.698Z" }, +] + +[[package]] +name = "pyasn1" +version = "0.6.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ba/e9/01f1a64245b89f039897cb0130016d79f77d52669aae6ee7b159a6c4c018/pyasn1-0.6.1.tar.gz", hash = "sha256:6f580d2bdd84365380830acf45550f2511469f673cb4a5ae3857a3170128b034", size = 145322, upload-time = "2024-09-10T22:41:42.55Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/f1/d6a797abb14f6283c0ddff96bbdd46937f64122b8c925cab503dd37f8214/pyasn1-0.6.1-py3-none-any.whl", hash = "sha256:0d632f46f2ba09143da3a8afe9e33fb6f92fa2320ab7e886e2d0f7672af84629", size = 83135, upload-time = "2024-09-11T16:00:36.122Z" }, +] + +[[package]] +name = "pyasn1-modules" +version = "0.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyasn1" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e9/e6/78ebbb10a8c8e4b61a59249394a4a594c1a7af95593dc933a349c8d00964/pyasn1_modules-0.4.2.tar.gz", hash = "sha256:677091de870a80aae844b1ca6134f54652fa2c8c5a52aa396440ac3106e941e6", size = 307892, upload-time = "2025-03-28T02:41:22.17Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/47/8d/d529b5d697919ba8c11ad626e835d4039be708a35b0d22de83a269a6682c/pyasn1_modules-0.4.2-py3-none-any.whl", hash = "sha256:29253a9207ce32b64c3ac6600edc75368f98473906e8fd1043bd6b5b1de2c14a", size = 181259, upload-time = "2025-03-28T02:41:19.028Z" }, +] + [[package]] name = "pycparser" version = "2.22" @@ -2235,6 +3878,130 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552, upload-time = "2024-03-30T13:22:20.476Z" }, ] +[[package]] +name = "pydantic" +version = "2.11.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/00/dd/4325abf92c39ba8623b5af936ddb36ffcfe0beae70405d456ab1fb2f5b8c/pydantic-2.11.7.tar.gz", hash = "sha256:d989c3c6cb79469287b1569f7447a17848c998458d49ebe294e975b9baf0f0db", size = 788350, upload-time = "2025-06-14T08:33:17.137Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/c0/ec2b1c8712ca690e5d61979dee872603e92b8a32f94cc1b72d53beab008a/pydantic-2.11.7-py3-none-any.whl", hash = "sha256:dde5df002701f6de26248661f6835bbe296a47bf73990135c7d07ce741b9623b", size = 444782, upload-time = "2025-06-14T08:33:14.905Z" }, +] + +[[package]] +name = "pydantic-core" +version = "2.33.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195, upload-time = "2025-04-23T18:33:52.104Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/92/b31726561b5dae176c2d2c2dc43a9c5bfba5d32f96f8b4c0a600dd492447/pydantic_core-2.33.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2b3d326aaef0c0399d9afffeb6367d5e26ddc24d351dbc9c636840ac355dc5d8", size = 2028817, upload-time = "2025-04-23T18:30:43.919Z" }, + { url = "https://files.pythonhosted.org/packages/a3/44/3f0b95fafdaca04a483c4e685fe437c6891001bf3ce8b2fded82b9ea3aa1/pydantic_core-2.33.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e5b2671f05ba48b94cb90ce55d8bdcaaedb8ba00cc5359f6810fc918713983d", size = 1861357, upload-time = "2025-04-23T18:30:46.372Z" }, + { url = "https://files.pythonhosted.org/packages/30/97/e8f13b55766234caae05372826e8e4b3b96e7b248be3157f53237682e43c/pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0069c9acc3f3981b9ff4cdfaf088e98d83440a4c7ea1bc07460af3d4dc22e72d", size = 1898011, upload-time = "2025-04-23T18:30:47.591Z" }, + { url = "https://files.pythonhosted.org/packages/9b/a3/99c48cf7bafc991cc3ee66fd544c0aae8dc907b752f1dad2d79b1b5a471f/pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d53b22f2032c42eaaf025f7c40c2e3b94568ae077a606f006d206a463bc69572", size = 1982730, upload-time = "2025-04-23T18:30:49.328Z" }, + { url = "https://files.pythonhosted.org/packages/de/8e/a5b882ec4307010a840fb8b58bd9bf65d1840c92eae7534c7441709bf54b/pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0405262705a123b7ce9f0b92f123334d67b70fd1f20a9372b907ce1080c7ba02", size = 2136178, upload-time = "2025-04-23T18:30:50.907Z" }, + { url = "https://files.pythonhosted.org/packages/e4/bb/71e35fc3ed05af6834e890edb75968e2802fe98778971ab5cba20a162315/pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4b25d91e288e2c4e0662b8038a28c6a07eaac3e196cfc4ff69de4ea3db992a1b", size = 2736462, upload-time = "2025-04-23T18:30:52.083Z" }, + { url = "https://files.pythonhosted.org/packages/31/0d/c8f7593e6bc7066289bbc366f2235701dcbebcd1ff0ef8e64f6f239fb47d/pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bdfe4b3789761f3bcb4b1ddf33355a71079858958e3a552f16d5af19768fef2", size = 2005652, upload-time = "2025-04-23T18:30:53.389Z" }, + { url = "https://files.pythonhosted.org/packages/d2/7a/996d8bd75f3eda405e3dd219ff5ff0a283cd8e34add39d8ef9157e722867/pydantic_core-2.33.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:efec8db3266b76ef9607c2c4c419bdb06bf335ae433b80816089ea7585816f6a", size = 2113306, upload-time = "2025-04-23T18:30:54.661Z" }, + { url = "https://files.pythonhosted.org/packages/ff/84/daf2a6fb2db40ffda6578a7e8c5a6e9c8affb251a05c233ae37098118788/pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:031c57d67ca86902726e0fae2214ce6770bbe2f710dc33063187a68744a5ecac", size = 2073720, upload-time = "2025-04-23T18:30:56.11Z" }, + { url = "https://files.pythonhosted.org/packages/77/fb/2258da019f4825128445ae79456a5499c032b55849dbd5bed78c95ccf163/pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:f8de619080e944347f5f20de29a975c2d815d9ddd8be9b9b7268e2e3ef68605a", size = 2244915, upload-time = "2025-04-23T18:30:57.501Z" }, + { url = "https://files.pythonhosted.org/packages/d8/7a/925ff73756031289468326e355b6fa8316960d0d65f8b5d6b3a3e7866de7/pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:73662edf539e72a9440129f231ed3757faab89630d291b784ca99237fb94db2b", size = 2241884, upload-time = "2025-04-23T18:30:58.867Z" }, + { url = "https://files.pythonhosted.org/packages/0b/b0/249ee6d2646f1cdadcb813805fe76265745c4010cf20a8eba7b0e639d9b2/pydantic_core-2.33.2-cp310-cp310-win32.whl", hash = "sha256:0a39979dcbb70998b0e505fb1556a1d550a0781463ce84ebf915ba293ccb7e22", size = 1910496, upload-time = "2025-04-23T18:31:00.078Z" }, + { url = "https://files.pythonhosted.org/packages/66/ff/172ba8f12a42d4b552917aa65d1f2328990d3ccfc01d5b7c943ec084299f/pydantic_core-2.33.2-cp310-cp310-win_amd64.whl", hash = "sha256:b0379a2b24882fef529ec3b4987cb5d003b9cda32256024e6fe1586ac45fc640", size = 1955019, upload-time = "2025-04-23T18:31:01.335Z" }, + { url = "https://files.pythonhosted.org/packages/3f/8d/71db63483d518cbbf290261a1fc2839d17ff89fce7089e08cad07ccfce67/pydantic_core-2.33.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:4c5b0a576fb381edd6d27f0a85915c6daf2f8138dc5c267a57c08a62900758c7", size = 2028584, upload-time = "2025-04-23T18:31:03.106Z" }, + { url = "https://files.pythonhosted.org/packages/24/2f/3cfa7244ae292dd850989f328722d2aef313f74ffc471184dc509e1e4e5a/pydantic_core-2.33.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e799c050df38a639db758c617ec771fd8fb7a5f8eaaa4b27b101f266b216a246", size = 1855071, upload-time = "2025-04-23T18:31:04.621Z" }, + { url = "https://files.pythonhosted.org/packages/b3/d3/4ae42d33f5e3f50dd467761304be2fa0a9417fbf09735bc2cce003480f2a/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc46a01bf8d62f227d5ecee74178ffc448ff4e5197c756331f71efcc66dc980f", size = 1897823, upload-time = "2025-04-23T18:31:06.377Z" }, + { url = "https://files.pythonhosted.org/packages/f4/f3/aa5976e8352b7695ff808599794b1fba2a9ae2ee954a3426855935799488/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a144d4f717285c6d9234a66778059f33a89096dfb9b39117663fd8413d582dcc", size = 1983792, upload-time = "2025-04-23T18:31:07.93Z" }, + { url = "https://files.pythonhosted.org/packages/d5/7a/cda9b5a23c552037717f2b2a5257e9b2bfe45e687386df9591eff7b46d28/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73cf6373c21bc80b2e0dc88444f41ae60b2f070ed02095754eb5a01df12256de", size = 2136338, upload-time = "2025-04-23T18:31:09.283Z" }, + { url = "https://files.pythonhosted.org/packages/2b/9f/b8f9ec8dd1417eb9da784e91e1667d58a2a4a7b7b34cf4af765ef663a7e5/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dc625f4aa79713512d1976fe9f0bc99f706a9dee21dfd1810b4bbbf228d0e8a", size = 2730998, upload-time = "2025-04-23T18:31:11.7Z" }, + { url = "https://files.pythonhosted.org/packages/47/bc/cd720e078576bdb8255d5032c5d63ee5c0bf4b7173dd955185a1d658c456/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b21b5549499972441da4758d662aeea93f1923f953e9cbaff14b8b9565aef", size = 2003200, upload-time = "2025-04-23T18:31:13.536Z" }, + { url = "https://files.pythonhosted.org/packages/ca/22/3602b895ee2cd29d11a2b349372446ae9727c32e78a94b3d588a40fdf187/pydantic_core-2.33.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bdc25f3681f7b78572699569514036afe3c243bc3059d3942624e936ec93450e", size = 2113890, upload-time = "2025-04-23T18:31:15.011Z" }, + { url = "https://files.pythonhosted.org/packages/ff/e6/e3c5908c03cf00d629eb38393a98fccc38ee0ce8ecce32f69fc7d7b558a7/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fe5b32187cbc0c862ee201ad66c30cf218e5ed468ec8dc1cf49dec66e160cc4d", size = 2073359, upload-time = "2025-04-23T18:31:16.393Z" }, + { url = "https://files.pythonhosted.org/packages/12/e7/6a36a07c59ebefc8777d1ffdaf5ae71b06b21952582e4b07eba88a421c79/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:bc7aee6f634a6f4a95676fcb5d6559a2c2a390330098dba5e5a5f28a2e4ada30", size = 2245883, upload-time = "2025-04-23T18:31:17.892Z" }, + { url = "https://files.pythonhosted.org/packages/16/3f/59b3187aaa6cc0c1e6616e8045b284de2b6a87b027cce2ffcea073adf1d2/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:235f45e5dbcccf6bd99f9f472858849f73d11120d76ea8707115415f8e5ebebf", size = 2241074, upload-time = "2025-04-23T18:31:19.205Z" }, + { url = "https://files.pythonhosted.org/packages/e0/ed/55532bb88f674d5d8f67ab121a2a13c385df382de2a1677f30ad385f7438/pydantic_core-2.33.2-cp311-cp311-win32.whl", hash = "sha256:6368900c2d3ef09b69cb0b913f9f8263b03786e5b2a387706c5afb66800efd51", size = 1910538, upload-time = "2025-04-23T18:31:20.541Z" }, + { url = "https://files.pythonhosted.org/packages/fe/1b/25b7cccd4519c0b23c2dd636ad39d381abf113085ce4f7bec2b0dc755eb1/pydantic_core-2.33.2-cp311-cp311-win_amd64.whl", hash = "sha256:1e063337ef9e9820c77acc768546325ebe04ee38b08703244c1309cccc4f1bab", size = 1952909, upload-time = "2025-04-23T18:31:22.371Z" }, + { url = "https://files.pythonhosted.org/packages/49/a9/d809358e49126438055884c4366a1f6227f0f84f635a9014e2deb9b9de54/pydantic_core-2.33.2-cp311-cp311-win_arm64.whl", hash = "sha256:6b99022f1d19bc32a4c2a0d544fc9a76e3be90f0b3f4af413f87d38749300e65", size = 1897786, upload-time = "2025-04-23T18:31:24.161Z" }, + { url = "https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", size = 2009000, upload-time = "2025-04-23T18:31:25.863Z" }, + { url = "https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", size = 1847996, upload-time = "2025-04-23T18:31:27.341Z" }, + { url = "https://files.pythonhosted.org/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", size = 1880957, upload-time = "2025-04-23T18:31:28.956Z" }, + { url = "https://files.pythonhosted.org/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", size = 1964199, upload-time = "2025-04-23T18:31:31.025Z" }, + { url = "https://files.pythonhosted.org/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", size = 2120296, upload-time = "2025-04-23T18:31:32.514Z" }, + { url = "https://files.pythonhosted.org/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", size = 2676109, upload-time = "2025-04-23T18:31:33.958Z" }, + { url = "https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", size = 2002028, upload-time = "2025-04-23T18:31:39.095Z" }, + { url = "https://files.pythonhosted.org/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", size = 2100044, upload-time = "2025-04-23T18:31:41.034Z" }, + { url = "https://files.pythonhosted.org/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", size = 2058881, upload-time = "2025-04-23T18:31:42.757Z" }, + { url = "https://files.pythonhosted.org/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", size = 2227034, upload-time = "2025-04-23T18:31:44.304Z" }, + { url = "https://files.pythonhosted.org/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", size = 2234187, upload-time = "2025-04-23T18:31:45.891Z" }, + { url = "https://files.pythonhosted.org/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", size = 1892628, upload-time = "2025-04-23T18:31:47.819Z" }, + { url = "https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", size = 1955866, upload-time = "2025-04-23T18:31:49.635Z" }, + { url = "https://files.pythonhosted.org/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", size = 1888894, upload-time = "2025-04-23T18:31:51.609Z" }, + { url = "https://files.pythonhosted.org/packages/46/8c/99040727b41f56616573a28771b1bfa08a3d3fe74d3d513f01251f79f172/pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f", size = 2015688, upload-time = "2025-04-23T18:31:53.175Z" }, + { url = "https://files.pythonhosted.org/packages/3a/cc/5999d1eb705a6cefc31f0b4a90e9f7fc400539b1a1030529700cc1b51838/pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6", size = 1844808, upload-time = "2025-04-23T18:31:54.79Z" }, + { url = "https://files.pythonhosted.org/packages/6f/5e/a0a7b8885c98889a18b6e376f344da1ef323d270b44edf8174d6bce4d622/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef", size = 1885580, upload-time = "2025-04-23T18:31:57.393Z" }, + { url = "https://files.pythonhosted.org/packages/3b/2a/953581f343c7d11a304581156618c3f592435523dd9d79865903272c256a/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a", size = 1973859, upload-time = "2025-04-23T18:31:59.065Z" }, + { url = "https://files.pythonhosted.org/packages/e6/55/f1a813904771c03a3f97f676c62cca0c0a4138654107c1b61f19c644868b/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916", size = 2120810, upload-time = "2025-04-23T18:32:00.78Z" }, + { url = "https://files.pythonhosted.org/packages/aa/c3/053389835a996e18853ba107a63caae0b9deb4a276c6b472931ea9ae6e48/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a", size = 2676498, upload-time = "2025-04-23T18:32:02.418Z" }, + { url = "https://files.pythonhosted.org/packages/eb/3c/f4abd740877a35abade05e437245b192f9d0ffb48bbbbd708df33d3cda37/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d", size = 2000611, upload-time = "2025-04-23T18:32:04.152Z" }, + { url = "https://files.pythonhosted.org/packages/59/a7/63ef2fed1837d1121a894d0ce88439fe3e3b3e48c7543b2a4479eb99c2bd/pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56", size = 2107924, upload-time = "2025-04-23T18:32:06.129Z" }, + { url = "https://files.pythonhosted.org/packages/04/8f/2551964ef045669801675f1cfc3b0d74147f4901c3ffa42be2ddb1f0efc4/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5", size = 2063196, upload-time = "2025-04-23T18:32:08.178Z" }, + { url = "https://files.pythonhosted.org/packages/26/bd/d9602777e77fc6dbb0c7db9ad356e9a985825547dce5ad1d30ee04903918/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e", size = 2236389, upload-time = "2025-04-23T18:32:10.242Z" }, + { url = "https://files.pythonhosted.org/packages/42/db/0e950daa7e2230423ab342ae918a794964b053bec24ba8af013fc7c94846/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162", size = 2239223, upload-time = "2025-04-23T18:32:12.382Z" }, + { url = "https://files.pythonhosted.org/packages/58/4d/4f937099c545a8a17eb52cb67fe0447fd9a373b348ccfa9a87f141eeb00f/pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849", size = 1900473, upload-time = "2025-04-23T18:32:14.034Z" }, + { url = "https://files.pythonhosted.org/packages/a0/75/4a0a9bac998d78d889def5e4ef2b065acba8cae8c93696906c3a91f310ca/pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9", size = 1955269, upload-time = "2025-04-23T18:32:15.783Z" }, + { url = "https://files.pythonhosted.org/packages/f9/86/1beda0576969592f1497b4ce8e7bc8cbdf614c352426271b1b10d5f0aa64/pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9", size = 1893921, upload-time = "2025-04-23T18:32:18.473Z" }, + { url = "https://files.pythonhosted.org/packages/a4/7d/e09391c2eebeab681df2b74bfe6c43422fffede8dc74187b2b0bf6fd7571/pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac", size = 1806162, upload-time = "2025-04-23T18:32:20.188Z" }, + { url = "https://files.pythonhosted.org/packages/f1/3d/847b6b1fed9f8ed3bb95a9ad04fbd0b212e832d4f0f50ff4d9ee5a9f15cf/pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5", size = 1981560, upload-time = "2025-04-23T18:32:22.354Z" }, + { url = "https://files.pythonhosted.org/packages/6f/9a/e73262f6c6656262b5fdd723ad90f518f579b7bc8622e43a942eec53c938/pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9", size = 1935777, upload-time = "2025-04-23T18:32:25.088Z" }, + { url = "https://files.pythonhosted.org/packages/53/ea/bbe9095cdd771987d13c82d104a9c8559ae9aec1e29f139e286fd2e9256e/pydantic_core-2.33.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a2b911a5b90e0374d03813674bf0a5fbbb7741570dcd4b4e85a2e48d17def29d", size = 2028677, upload-time = "2025-04-23T18:32:27.227Z" }, + { url = "https://files.pythonhosted.org/packages/49/1d/4ac5ed228078737d457a609013e8f7edc64adc37b91d619ea965758369e5/pydantic_core-2.33.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6fa6dfc3e4d1f734a34710f391ae822e0a8eb8559a85c6979e14e65ee6ba2954", size = 1864735, upload-time = "2025-04-23T18:32:29.019Z" }, + { url = "https://files.pythonhosted.org/packages/23/9a/2e70d6388d7cda488ae38f57bc2f7b03ee442fbcf0d75d848304ac7e405b/pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c54c939ee22dc8e2d545da79fc5381f1c020d6d3141d3bd747eab59164dc89fb", size = 1898467, upload-time = "2025-04-23T18:32:31.119Z" }, + { url = "https://files.pythonhosted.org/packages/ff/2e/1568934feb43370c1ffb78a77f0baaa5a8b6897513e7a91051af707ffdc4/pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:53a57d2ed685940a504248187d5685e49eb5eef0f696853647bf37c418c538f7", size = 1983041, upload-time = "2025-04-23T18:32:33.655Z" }, + { url = "https://files.pythonhosted.org/packages/01/1a/1a1118f38ab64eac2f6269eb8c120ab915be30e387bb561e3af904b12499/pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09fb9dd6571aacd023fe6aaca316bd01cf60ab27240d7eb39ebd66a3a15293b4", size = 2136503, upload-time = "2025-04-23T18:32:35.519Z" }, + { url = "https://files.pythonhosted.org/packages/5c/da/44754d1d7ae0f22d6d3ce6c6b1486fc07ac2c524ed8f6eca636e2e1ee49b/pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0e6116757f7959a712db11f3e9c0a99ade00a5bbedae83cb801985aa154f071b", size = 2736079, upload-time = "2025-04-23T18:32:37.659Z" }, + { url = "https://files.pythonhosted.org/packages/4d/98/f43cd89172220ec5aa86654967b22d862146bc4d736b1350b4c41e7c9c03/pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d55ab81c57b8ff8548c3e4947f119551253f4e3787a7bbc0b6b3ca47498a9d3", size = 2006508, upload-time = "2025-04-23T18:32:39.637Z" }, + { url = "https://files.pythonhosted.org/packages/2b/cc/f77e8e242171d2158309f830f7d5d07e0531b756106f36bc18712dc439df/pydantic_core-2.33.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c20c462aa4434b33a2661701b861604913f912254e441ab8d78d30485736115a", size = 2113693, upload-time = "2025-04-23T18:32:41.818Z" }, + { url = "https://files.pythonhosted.org/packages/54/7a/7be6a7bd43e0a47c147ba7fbf124fe8aaf1200bc587da925509641113b2d/pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:44857c3227d3fb5e753d5fe4a3420d6376fa594b07b621e220cd93703fe21782", size = 2074224, upload-time = "2025-04-23T18:32:44.033Z" }, + { url = "https://files.pythonhosted.org/packages/2a/07/31cf8fadffbb03be1cb520850e00a8490c0927ec456e8293cafda0726184/pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:eb9b459ca4df0e5c87deb59d37377461a538852765293f9e6ee834f0435a93b9", size = 2245403, upload-time = "2025-04-23T18:32:45.836Z" }, + { url = "https://files.pythonhosted.org/packages/b6/8d/bbaf4c6721b668d44f01861f297eb01c9b35f612f6b8e14173cb204e6240/pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9fcd347d2cc5c23b06de6d3b7b8275be558a0c90549495c699e379a80bf8379e", size = 2242331, upload-time = "2025-04-23T18:32:47.618Z" }, + { url = "https://files.pythonhosted.org/packages/bb/93/3cc157026bca8f5006250e74515119fcaa6d6858aceee8f67ab6dc548c16/pydantic_core-2.33.2-cp39-cp39-win32.whl", hash = "sha256:83aa99b1285bc8f038941ddf598501a86f1536789740991d7d8756e34f1e74d9", size = 1910571, upload-time = "2025-04-23T18:32:49.401Z" }, + { url = "https://files.pythonhosted.org/packages/5b/90/7edc3b2a0d9f0dda8806c04e511a67b0b7a41d2187e2003673a996fb4310/pydantic_core-2.33.2-cp39-cp39-win_amd64.whl", hash = "sha256:f481959862f57f29601ccced557cc2e817bce7533ab8e01a797a48b49c9692b3", size = 1956504, upload-time = "2025-04-23T18:32:51.287Z" }, + { url = "https://files.pythonhosted.org/packages/30/68/373d55e58b7e83ce371691f6eaa7175e3a24b956c44628eb25d7da007917/pydantic_core-2.33.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5c4aa4e82353f65e548c476b37e64189783aa5384903bfea4f41580f255fddfa", size = 2023982, upload-time = "2025-04-23T18:32:53.14Z" }, + { url = "https://files.pythonhosted.org/packages/a4/16/145f54ac08c96a63d8ed6442f9dec17b2773d19920b627b18d4f10a061ea/pydantic_core-2.33.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d946c8bf0d5c24bf4fe333af284c59a19358aa3ec18cb3dc4370080da1e8ad29", size = 1858412, upload-time = "2025-04-23T18:32:55.52Z" }, + { url = "https://files.pythonhosted.org/packages/41/b1/c6dc6c3e2de4516c0bb2c46f6a373b91b5660312342a0cf5826e38ad82fa/pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87b31b6846e361ef83fedb187bb5b4372d0da3f7e28d85415efa92d6125d6e6d", size = 1892749, upload-time = "2025-04-23T18:32:57.546Z" }, + { url = "https://files.pythonhosted.org/packages/12/73/8cd57e20afba760b21b742106f9dbdfa6697f1570b189c7457a1af4cd8a0/pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa9d91b338f2df0508606f7009fde642391425189bba6d8c653afd80fd6bb64e", size = 2067527, upload-time = "2025-04-23T18:32:59.771Z" }, + { url = "https://files.pythonhosted.org/packages/e3/d5/0bb5d988cc019b3cba4a78f2d4b3854427fc47ee8ec8e9eaabf787da239c/pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2058a32994f1fde4ca0480ab9d1e75a0e8c87c22b53a3ae66554f9af78f2fe8c", size = 2108225, upload-time = "2025-04-23T18:33:04.51Z" }, + { url = "https://files.pythonhosted.org/packages/f1/c5/00c02d1571913d496aabf146106ad8239dc132485ee22efe08085084ff7c/pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:0e03262ab796d986f978f79c943fc5f620381be7287148b8010b4097f79a39ec", size = 2069490, upload-time = "2025-04-23T18:33:06.391Z" }, + { url = "https://files.pythonhosted.org/packages/22/a8/dccc38768274d3ed3a59b5d06f59ccb845778687652daa71df0cab4040d7/pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:1a8695a8d00c73e50bff9dfda4d540b7dee29ff9b8053e38380426a85ef10052", size = 2237525, upload-time = "2025-04-23T18:33:08.44Z" }, + { url = "https://files.pythonhosted.org/packages/d4/e7/4f98c0b125dda7cf7ccd14ba936218397b44f50a56dd8c16a3091df116c3/pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:fa754d1850735a0b0e03bcffd9d4b4343eb417e47196e4485d9cca326073a42c", size = 2238446, upload-time = "2025-04-23T18:33:10.313Z" }, + { url = "https://files.pythonhosted.org/packages/ce/91/2ec36480fdb0b783cd9ef6795753c1dea13882f2e68e73bce76ae8c21e6a/pydantic_core-2.33.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a11c8d26a50bfab49002947d3d237abe4d9e4b5bdc8846a63537b6488e197808", size = 2066678, upload-time = "2025-04-23T18:33:12.224Z" }, + { url = "https://files.pythonhosted.org/packages/7b/27/d4ae6487d73948d6f20dddcd94be4ea43e74349b56eba82e9bdee2d7494c/pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:dd14041875d09cc0f9308e37a6f8b65f5585cf2598a53aa0123df8b129d481f8", size = 2025200, upload-time = "2025-04-23T18:33:14.199Z" }, + { url = "https://files.pythonhosted.org/packages/f1/b8/b3cb95375f05d33801024079b9392a5ab45267a63400bf1866e7ce0f0de4/pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d87c561733f66531dced0da6e864f44ebf89a8fba55f31407b00c2f7f9449593", size = 1859123, upload-time = "2025-04-23T18:33:16.555Z" }, + { url = "https://files.pythonhosted.org/packages/05/bc/0d0b5adeda59a261cd30a1235a445bf55c7e46ae44aea28f7bd6ed46e091/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f82865531efd18d6e07a04a17331af02cb7a651583c418df8266f17a63c6612", size = 1892852, upload-time = "2025-04-23T18:33:18.513Z" }, + { url = "https://files.pythonhosted.org/packages/3e/11/d37bdebbda2e449cb3f519f6ce950927b56d62f0b84fd9cb9e372a26a3d5/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bfb5112df54209d820d7bf9317c7a6c9025ea52e49f46b6a2060104bba37de7", size = 2067484, upload-time = "2025-04-23T18:33:20.475Z" }, + { url = "https://files.pythonhosted.org/packages/8c/55/1f95f0a05ce72ecb02a8a8a1c3be0579bbc29b1d5ab68f1378b7bebc5057/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:64632ff9d614e5eecfb495796ad51b0ed98c453e447a76bcbeeb69615079fc7e", size = 2108896, upload-time = "2025-04-23T18:33:22.501Z" }, + { url = "https://files.pythonhosted.org/packages/53/89/2b2de6c81fa131f423246a9109d7b2a375e83968ad0800d6e57d0574629b/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:f889f7a40498cc077332c7ab6b4608d296d852182211787d4f3ee377aaae66e8", size = 2069475, upload-time = "2025-04-23T18:33:24.528Z" }, + { url = "https://files.pythonhosted.org/packages/b8/e9/1f7efbe20d0b2b10f6718944b5d8ece9152390904f29a78e68d4e7961159/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:de4b83bb311557e439b9e186f733f6c645b9417c84e2eb8203f3f820a4b988bf", size = 2239013, upload-time = "2025-04-23T18:33:26.621Z" }, + { url = "https://files.pythonhosted.org/packages/3c/b2/5309c905a93811524a49b4e031e9851a6b00ff0fb668794472ea7746b448/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:82f68293f055f51b51ea42fafc74b6aad03e70e191799430b90c13d643059ebb", size = 2238715, upload-time = "2025-04-23T18:33:28.656Z" }, + { url = "https://files.pythonhosted.org/packages/32/56/8a7ca5d2cd2cda1d245d34b1c9a942920a718082ae8e54e5f3e5a58b7add/pydantic_core-2.33.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:329467cecfb529c925cf2bbd4d60d2c509bc2fb52a20c1045bf09bb70971a9c1", size = 2066757, upload-time = "2025-04-23T18:33:30.645Z" }, + { url = "https://files.pythonhosted.org/packages/08/98/dbf3fdfabaf81cda5622154fda78ea9965ac467e3239078e0dcd6df159e7/pydantic_core-2.33.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:87acbfcf8e90ca885206e98359d7dca4bcbb35abdc0ff66672a293e1d7a19101", size = 2024034, upload-time = "2025-04-23T18:33:32.843Z" }, + { url = "https://files.pythonhosted.org/packages/8d/99/7810aa9256e7f2ccd492590f86b79d370df1e9292f1f80b000b6a75bd2fb/pydantic_core-2.33.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:7f92c15cd1e97d4b12acd1cc9004fa092578acfa57b67ad5e43a197175d01a64", size = 1858578, upload-time = "2025-04-23T18:33:34.912Z" }, + { url = "https://files.pythonhosted.org/packages/d8/60/bc06fa9027c7006cc6dd21e48dbf39076dc39d9abbaf718a1604973a9670/pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3f26877a748dc4251cfcfda9dfb5f13fcb034f5308388066bcfe9031b63ae7d", size = 1892858, upload-time = "2025-04-23T18:33:36.933Z" }, + { url = "https://files.pythonhosted.org/packages/f2/40/9d03997d9518816c68b4dfccb88969756b9146031b61cd37f781c74c9b6a/pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac89aea9af8cd672fa7b510e7b8c33b0bba9a43186680550ccf23020f32d535", size = 2068498, upload-time = "2025-04-23T18:33:38.997Z" }, + { url = "https://files.pythonhosted.org/packages/d8/62/d490198d05d2d86672dc269f52579cad7261ced64c2df213d5c16e0aecb1/pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:970919794d126ba8645f3837ab6046fb4e72bbc057b3709144066204c19a455d", size = 2108428, upload-time = "2025-04-23T18:33:41.18Z" }, + { url = "https://files.pythonhosted.org/packages/9a/ec/4cd215534fd10b8549015f12ea650a1a973da20ce46430b68fc3185573e8/pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3eb3fe62804e8f859c49ed20a8451342de53ed764150cb14ca71357c765dc2a6", size = 2069854, upload-time = "2025-04-23T18:33:43.446Z" }, + { url = "https://files.pythonhosted.org/packages/1a/1a/abbd63d47e1d9b0d632fee6bb15785d0889c8a6e0a6c3b5a8e28ac1ec5d2/pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:3abcd9392a36025e3bd55f9bd38d908bd17962cc49bc6da8e7e96285336e2bca", size = 2237859, upload-time = "2025-04-23T18:33:45.56Z" }, + { url = "https://files.pythonhosted.org/packages/80/1c/fa883643429908b1c90598fd2642af8839efd1d835b65af1f75fba4d94fe/pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:3a1c81334778f9e3af2f8aeb7a960736e5cab1dfebfb26aabca09afd2906c039", size = 2239059, upload-time = "2025-04-23T18:33:47.735Z" }, + { url = "https://files.pythonhosted.org/packages/d4/29/3cade8a924a61f60ccfa10842f75eb12787e1440e2b8660ceffeb26685e7/pydantic_core-2.33.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2807668ba86cb38c6817ad9bc66215ab8584d1d304030ce4f0887336f28a5e27", size = 2066661, upload-time = "2025-04-23T18:33:49.995Z" }, +] + [[package]] name = "pygments" version = "2.19.2" @@ -2273,6 +4040,24 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/05/e7/df2285f3d08fee213f2d041540fa4fc9ca6c2d44cf36d3a035bf2a8d2bcc/pyparsing-3.2.3-py3-none-any.whl", hash = "sha256:a749938e02d6fd0b59b356ca504a24982314bb090c383e3cf201c95ef7e2bfcf", size = 111120, upload-time = "2025-03-25T05:01:24.908Z" }, ] +[[package]] +name = "pytest" +version = "8.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, + { name = "iniconfig" }, + { name = "packaging" }, + { name = "pluggy" }, + { name = "pygments" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/08/ba/45911d754e8eba3d5a841a5ce61a65a685ff1798421ac054f85aa8747dfb/pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c", size = 1517714, upload-time = "2025-06-18T05:48:06.109Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/29/16/c8a903f4c4dffe7a12843191437d7cd8e32751d5de349d45d3fe69544e87/pytest-8.4.1-py3-none-any.whl", hash = "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7", size = 365474, upload-time = "2025-06-18T05:48:03.955Z" }, +] + [[package]] name = "python-dateutil" version = "2.9.0.post0" @@ -2280,9 +4065,50 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "six" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, +] + +[[package]] +name = "python-dotenv" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f6/b0/4bc07ccd3572a2f9df7e6782f52b0c6c90dcbb803ac4a167702d7d0dfe1e/python_dotenv-1.1.1.tar.gz", hash = "sha256:a8a6399716257f45be6a007360200409fce5cda2661e3dec71d23dc15f6189ab", size = 41978, upload-time = "2025-06-24T04:21:07.341Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5f/ed/539768cf28c661b5b068d66d96a2f155c4971a5d55684a514c1a0e0dec2f/python_dotenv-1.1.1-py3-none-any.whl", hash = "sha256:31f23644fe2602f88ff55e1f5c79ba497e01224ee7737937930c448e4d0e24dc", size = 20556, upload-time = "2025-06-24T04:21:06.073Z" }, +] + +[[package]] +name = "python-json-logger" +version = "3.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9e/de/d3144a0bceede957f961e975f3752760fbe390d57fbe194baf709d8f1f7b/python_json_logger-3.3.0.tar.gz", hash = "sha256:12b7e74b17775e7d565129296105bbe3910842d9d0eb083fc83a6a617aa8df84", size = 16642, upload-time = "2025-03-07T07:08:27.301Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/08/20/0f2523b9e50a8052bc6a8b732dfc8568abbdc42010aef03a2d750bdab3b2/python_json_logger-3.3.0-py3-none-any.whl", hash = "sha256:dd980fae8cffb24c13caf6e158d3d61c0d6d22342f932cb6e9deedab3d35eec7", size = 15163, upload-time = "2025-03-07T07:08:25.627Z" }, +] + +[[package]] +name = "pytorch-lightning" +version = "2.5.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "fsspec", extra = ["http"] }, + { name = "lightning-utilities" }, + { name = "packaging" }, + { name = "pyyaml" }, + { name = "torch", version = "2.7.1", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version >= '3.10' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, + { name = "torch", version = "2.7.1+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64') or platform_machine == 'x86_64' or sys_platform != 'darwin'" }, + { name = "torchmetrics" }, + { name = "tqdm" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/01/3e/728fbdc671d07727ad447f9401d98a43570573965beb3cb2060f9a330b4f/pytorch_lightning-2.5.2.tar.gz", hash = "sha256:f817087d611be8d43b777dd4e543d72703e235510936677a13e6c29f7fd790e3", size = 636859, upload-time = "2025-06-20T15:58:27.062Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, + { url = "https://files.pythonhosted.org/packages/e2/42/47c186c8f9e956e559c89e6c764d5d5d0d0af517c04ca0ad39bd0a357d3a/pytorch_lightning-2.5.2-py3-none-any.whl", hash = "sha256:17cfdf89bd98074e389101f097cdf34c486a1f5c6d3fdcefbaf4dea7f97ff0bf", size = 825366, upload-time = "2025-06-20T15:58:25.534Z" }, ] [[package]] @@ -2315,6 +4141,20 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/93/ff/2a8c10315ffbdee7b3883ac0d1667e267ca8b3f6f640d81d43b87a82c0c7/pywin32-310-cp39-cp39-win_amd64.whl", hash = "sha256:96867217335559ac619f00ad70e513c0fcf84b8a3af9fc2bba3b59b97da70475", size = 9602031, upload-time = "2025-03-17T00:55:44.512Z" }, ] +[[package]] +name = "pywinpty" +version = "2.0.15" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2d/7c/917f9c4681bb8d34bfbe0b79d36bbcd902651aeab48790df3d30ba0202fb/pywinpty-2.0.15.tar.gz", hash = "sha256:312cf39153a8736c617d45ce8b6ad6cd2107de121df91c455b10ce6bba7a39b2", size = 29017, upload-time = "2025-02-03T21:53:23.265Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a6/b7/855db919ae526d2628f3f2e6c281c4cdff7a9a8af51bb84659a9f07b1861/pywinpty-2.0.15-cp310-cp310-win_amd64.whl", hash = "sha256:8e7f5de756a615a38b96cd86fa3cd65f901ce54ce147a3179c45907fa11b4c4e", size = 1405161, upload-time = "2025-02-03T21:56:25.008Z" }, + { url = "https://files.pythonhosted.org/packages/5e/ac/6884dcb7108af66ad53f73ef4dad096e768c9203a6e6ce5e6b0c4a46e238/pywinpty-2.0.15-cp311-cp311-win_amd64.whl", hash = "sha256:9a6bcec2df2707aaa9d08b86071970ee32c5026e10bcc3cc5f6f391d85baf7ca", size = 1405249, upload-time = "2025-02-03T21:55:47.114Z" }, + { url = "https://files.pythonhosted.org/packages/88/e5/9714def18c3a411809771a3fbcec70bffa764b9675afb00048a620fca604/pywinpty-2.0.15-cp312-cp312-win_amd64.whl", hash = "sha256:83a8f20b430bbc5d8957249f875341a60219a4e971580f2ba694fbfb54a45ebc", size = 1405243, upload-time = "2025-02-03T21:56:52.476Z" }, + { url = "https://files.pythonhosted.org/packages/fb/16/2ab7b3b7f55f3c6929e5f629e1a68362981e4e5fed592a2ed1cb4b4914a5/pywinpty-2.0.15-cp313-cp313-win_amd64.whl", hash = "sha256:ab5920877dd632c124b4ed17bc6dd6ef3b9f86cd492b963ffdb1a67b85b0f408", size = 1405020, upload-time = "2025-02-03T21:56:04.753Z" }, + { url = "https://files.pythonhosted.org/packages/7c/16/edef3515dd2030db2795dbfbe392232c7a0f3dc41b98e92b38b42ba497c7/pywinpty-2.0.15-cp313-cp313t-win_amd64.whl", hash = "sha256:a4560ad8c01e537708d2790dbe7da7d986791de805d89dd0d3697ca59e9e4901", size = 1404151, upload-time = "2025-02-03T21:55:53.628Z" }, + { url = "https://files.pythonhosted.org/packages/47/96/90fa02f19b1eff7469ad7bf0ef8efca248025de9f1d0a0b25682d2aacf68/pywinpty-2.0.15-cp39-cp39-win_amd64.whl", hash = "sha256:d261cd88fcd358cfb48a7ca0700db3e1c088c9c10403c9ebc0d8a8b57aa6a117", size = 1405302, upload-time = "2025-02-03T21:55:40.394Z" }, +] + [[package]] name = "pyyaml" version = "6.0.2" @@ -2443,21 +4283,306 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/51/8b/619a9ee2fa4d3c724fbadde946427735ade64da03894b071bbdc3b789d83/pyzmq-27.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:096af9e133fec3a72108ddefba1e42985cb3639e9de52cfd336b6fc23aa083e9", size = 544715, upload-time = "2025-06-13T14:09:05.579Z" }, ] +[[package]] +name = "ray" +version = "2.47.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click", version = "8.1.8", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "click", version = "8.2.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "filelock" }, + { name = "jsonschema" }, + { name = "msgpack" }, + { name = "packaging" }, + { name = "protobuf" }, + { name = "pyyaml" }, + { name = "requests" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/92/fe/2f1fc21b7a321385fe34fd159c27245c06bad795aba7de71f29e7a00e741/ray-2.47.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:36a30930e8d265e708df96f37f6f1f5484f4b97090d505912f992e045a69d310", size = 66145880, upload-time = "2025-06-17T22:26:11.637Z" }, + { url = "https://files.pythonhosted.org/packages/87/4a/60b0ce7dc1ac04e9c48fc398afed557f0f0cb3fd74c07cb71b567a041157/ray-2.47.1-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:7c03a1e366d3a868a55f8c2f728f5ce35ac85ddf093ac81d0c1a35bf1c25c377", size = 68562947, upload-time = "2025-06-17T22:26:18.483Z" }, + { url = "https://files.pythonhosted.org/packages/2f/a6/bad64e886ef74bbcab7d36b617e41c378088fc4852557005c1e227669697/ray-2.47.1-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:6fc7df8657b8df684b77c2d1b643137ad745aa1c12ade34743f06cca79003df0", size = 67810643, upload-time = "2025-06-17T22:26:24.75Z" }, + { url = "https://files.pythonhosted.org/packages/6d/98/9289f360deb9b3d32cc9170168dff919c2f5192bf87682d5b72050206dca/ray-2.47.1-cp310-cp310-manylinux2014_x86_64.whl", hash = "sha256:84a96b4720175a0000521a48eb7aa915f3b419bb5cd6172d8dee005c3f23b813", size = 68760640, upload-time = "2025-06-17T22:26:30.545Z" }, + { url = "https://files.pythonhosted.org/packages/b6/6c/80690615b50e5e6f5309d5f0f9fcaaf83170e5240252c0d8bbeedc8dc9bd/ray-2.47.1-cp310-cp310-win_amd64.whl", hash = "sha256:44900a1a72cb3bfb331db160a8975737c25945a97f376c70e72ccf35adf3b744", size = 26231731, upload-time = "2025-06-17T22:26:35.84Z" }, + { url = "https://files.pythonhosted.org/packages/82/8c/f763f633a4c80d9ead6c1e9277983c42286a3a83dedccedb15363f3d4c40/ray-2.47.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a640d447e0e6cf63f85b9220c883ec02bb2b8e40a9c1d84efa012795c769ba68", size = 66106702, upload-time = "2025-06-17T22:26:40.409Z" }, + { url = "https://files.pythonhosted.org/packages/5d/10/05b70d425c46eba22bdd46a77cf7db09328eb9dcbf5952fa32e42c5c28e5/ray-2.47.1-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:feeba1e715cfd8737d3adcd2018d0cdabb7c6084fa4b093e638e6c7d42f3c956", size = 68525746, upload-time = "2025-06-17T22:26:46.284Z" }, + { url = "https://files.pythonhosted.org/packages/cd/2d/a3fe20b0830ecbe74dac1ae809c265023f713e19a9f6100870d50885f44d/ray-2.47.1-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:db5ff652e9035f03c65e1742a706b76519f6e8a6744cc005396053ac8766fc46", size = 67906931, upload-time = "2025-06-17T22:26:52.132Z" }, + { url = "https://files.pythonhosted.org/packages/5f/2b/d1395192c748b3761a43f2dbd9fa702a56f8e185fc2beee73ba25e801a46/ray-2.47.1-cp311-cp311-manylinux2014_x86_64.whl", hash = "sha256:48961229614b2b56a535be510c8abc76e99a9aa7fa195b5c949bd0c6c69af40a", size = 68851571, upload-time = "2025-06-17T22:26:57.862Z" }, + { url = "https://files.pythonhosted.org/packages/de/dd/b5dc7d3581e52683259c80014e95074835042ceaf1dea6a400185e0e1947/ray-2.47.1-cp311-cp311-win_amd64.whl", hash = "sha256:bd1cba64070db06bbf79c0e075cdc4529193e2d0b19564f4f057b4193b29e912", size = 26180204, upload-time = "2025-06-17T22:27:03.972Z" }, + { url = "https://files.pythonhosted.org/packages/96/d8/833edaf128fb5cdd53818d307bb93df75d943f32ecc5cb0d7b14981265e6/ray-2.47.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:322049c4546cf67e5efdad90c371c5508acbb193e5aaaf4038103c6c5ce1f578", size = 66091855, upload-time = "2025-06-17T22:27:08.946Z" }, + { url = "https://files.pythonhosted.org/packages/ce/fa/23640e58046c91fcc05edd04bd51dd3d6a44cd7b408faf5bb3528a24c13d/ray-2.47.1-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:e6d9c78e53ac89cabbc4056aecfec53c506c692e3132af9dae941d6180ef462f", size = 68512697, upload-time = "2025-06-17T22:27:15.109Z" }, + { url = "https://files.pythonhosted.org/packages/c5/32/6abf17053eb0ae720a2981a17e6b22797cc655782b603a707052b47f64eb/ray-2.47.1-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:cd4e7eb475487364b5209963b17cefedcb7fbd3a816fdb6def7ea533ebd72424", size = 67918881, upload-time = "2025-06-17T22:27:21.43Z" }, + { url = "https://files.pythonhosted.org/packages/5c/31/4545d03ed68eedf42b52e2a8705a584361e262640e145d6ab219ae33969c/ray-2.47.1-cp312-cp312-manylinux2014_x86_64.whl", hash = "sha256:3eaeaeec3bbe2ca6493e530c30473d84b8580a7ac3256bb9183d8c63def5a92f", size = 68888167, upload-time = "2025-06-17T22:27:27.978Z" }, + { url = "https://files.pythonhosted.org/packages/94/f6/ed91383e0057ad9e3d9c45212a0c7edc5a9d24a2e46da0d55c8233df868c/ray-2.47.1-cp312-cp312-win_amd64.whl", hash = "sha256:601f23ba89918b7b3ffebf967328f7bdb605deaf8c103aad7820dc2722fe450c", size = 26164455, upload-time = "2025-06-17T22:27:33.784Z" }, + { url = "https://files.pythonhosted.org/packages/7b/85/4dbf9a126f080a1114ec7738d9274759c256ff2a1c21662b09123311bbf0/ray-2.47.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:8cd625d469ce15391e5f1f44ddf8dd30b2380f917603fa0172661229acb0011f", size = 66082130, upload-time = "2025-06-17T22:27:38.631Z" }, + { url = "https://files.pythonhosted.org/packages/5a/8e/e893176ca3c02a310bb962b287436508f5b61fd179a7283f37610c0e0087/ray-2.47.1-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:e578929f58b3f0c59c7544a96d864e26278238b755d13cd19ae798070c848e57", size = 68507369, upload-time = "2025-06-17T22:27:44.945Z" }, + { url = "https://files.pythonhosted.org/packages/0c/97/f36e8a19885d930ab0dbcb0b7b6706e630412336b08fa3312bcaaad818b7/ray-2.47.1-cp313-cp313-manylinux2014_aarch64.whl", hash = "sha256:d6ed6d182e25d6f77179dc77bc97a749c81765b13cb671a46db3203029389663", size = 67875541, upload-time = "2025-06-17T22:27:51.191Z" }, + { url = "https://files.pythonhosted.org/packages/52/60/83430886d17526f4757e298b77268533afeedc74ed934f911d522f191ef2/ray-2.47.1-cp313-cp313-manylinux2014_x86_64.whl", hash = "sha256:252a471e8afb918b105cdbffb4cbebb0143baad75a06c8ffcde27ac317579ccb", size = 68848558, upload-time = "2025-06-17T22:27:57.97Z" }, + { url = "https://files.pythonhosted.org/packages/cf/84/055a43a9157869912b7455afbf83a7f01795def134655f82e681496378ed/ray-2.47.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c21720f283a3df360ddec002a592ddfbaf520faf4cb1b86562a7b7c196ad96a0", size = 66149938, upload-time = "2025-06-17T22:28:03.836Z" }, + { url = "https://files.pythonhosted.org/packages/98/5c/08e162bf1d83709d4bb3d7cffdd12763f6f62605c5c2ad7f3b071a66353e/ray-2.47.1-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:6c7b4abe112c4d698243e30023bcbffe2c2c9a68416b95a6a0d50f9ca5725545", size = 68568408, upload-time = "2025-06-17T22:28:09.485Z" }, + { url = "https://files.pythonhosted.org/packages/9b/0f/cec17486997fae42b00a6e82f007514635a556d32217a38204ed4a3a9530/ray-2.47.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:21f2689c1bbc688f9cd31a18bae2c9582027e91b508073849441167bb5077816", size = 67814246, upload-time = "2025-06-17T22:28:15.566Z" }, + { url = "https://files.pythonhosted.org/packages/b2/f1/734d5fd9835610c7d00ec5bbfb232a8bb4d560d0030d85f749c0eb0ee0f2/ray-2.47.1-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:106817f80087d21d24e63f6e56ea5ab7c387a25105eb65e6b783551f569534ea", size = 68763833, upload-time = "2025-06-17T22:28:22.924Z" }, + { url = "https://files.pythonhosted.org/packages/20/1d/64e6d6751b11668a634c7983dffc7a739487de4544110a6cacdf33c1da64/ray-2.47.1-cp39-cp39-win_amd64.whl", hash = "sha256:dee02ba9b8cd45c4eadc457183f6d80f1701b85f966d02cdacd5b11867cb7375", size = 26234907, upload-time = "2025-06-17T22:28:27.977Z" }, +] + +[package.optional-dependencies] +data = [ + { name = "fsspec" }, + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "pandas" }, + { name = "pyarrow" }, +] +serve = [ + { name = "aiohttp" }, + { name = "aiohttp-cors" }, + { name = "colorful" }, + { name = "fastapi" }, + { name = "grpcio" }, + { name = "opencensus" }, + { name = "opentelemetry-exporter-prometheus" }, + { name = "opentelemetry-proto" }, + { name = "opentelemetry-sdk" }, + { name = "prometheus-client" }, + { name = "py-spy" }, + { name = "pydantic" }, + { name = "requests" }, + { name = "smart-open" }, + { name = "starlette" }, + { name = "uvicorn", extra = ["standard"] }, + { name = "virtualenv" }, + { name = "watchfiles" }, +] +train = [ + { name = "fsspec" }, + { name = "pandas" }, + { name = "pyarrow" }, + { name = "pydantic" }, + { name = "requests" }, + { name = "tensorboardx" }, +] +tune = [ + { name = "fsspec" }, + { name = "pandas" }, + { name = "pyarrow" }, + { name = "requests" }, + { name = "tensorboardx" }, +] + +[[package]] +name = "referencing" +version = "0.36.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "rpds-py" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744, upload-time = "2025-01-25T08:48:16.138Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775, upload-time = "2025-01-25T08:48:14.241Z" }, +] + [[package]] name = "requests" version = "2.32.4" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "certifi", marker = "python_full_version >= '3.10'" }, - { name = "charset-normalizer", marker = "python_full_version >= '3.10'" }, - { name = "idna", marker = "python_full_version >= '3.10'" }, - { name = "urllib3", marker = "python_full_version >= '3.10'" }, + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, ] sdist = { url = "https://files.pythonhosted.org/packages/e1/0a/929373653770d8a0d7ea76c37de6e41f11eb07559b103b1c02cafb3f7cf8/requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422", size = 135258, upload-time = "2025-06-09T16:43:07.34Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/7c/e4/56027c4a6b4ae70ca9de302488c5ca95ad4a39e190093d6c1a8ace08341b/requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c", size = 64847, upload-time = "2025-06-09T16:43:05.728Z" }, ] +[[package]] +name = "rfc3339-validator" +version = "0.1.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/28/ea/a9387748e2d111c3c2b275ba970b735e04e15cdb1eb30693b6b5708c4dbd/rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b", size = 5513, upload-time = "2021-05-12T16:37:54.178Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa", size = 3490, upload-time = "2021-05-12T16:37:52.536Z" }, +] + +[[package]] +name = "rfc3986-validator" +version = "0.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/da/88/f270de456dd7d11dcc808abfa291ecdd3f45ff44e3b549ffa01b126464d0/rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055", size = 6760, upload-time = "2019-10-28T16:00:19.144Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/51/17023c0f8f1869d8806b979a2bffa3f861f26a3f1a66b094288323fba52f/rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9", size = 4242, upload-time = "2019-10-28T16:00:13.976Z" }, +] + +[[package]] +name = "rpds-py" +version = "0.26.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a5/aa/4456d84bbb54adc6a916fb10c9b374f78ac840337644e4a5eda229c81275/rpds_py-0.26.0.tar.gz", hash = "sha256:20dae58a859b0906f0685642e591056f1e787f3a8b39c8e8749a45dc7d26bdb0", size = 27385, upload-time = "2025-07-01T15:57:13.958Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b9/31/1459645f036c3dfeacef89e8e5825e430c77dde8489f3b99eaafcd4a60f5/rpds_py-0.26.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:4c70c70f9169692b36307a95f3d8c0a9fcd79f7b4a383aad5eaa0e9718b79b37", size = 372466, upload-time = "2025-07-01T15:53:40.55Z" }, + { url = "https://files.pythonhosted.org/packages/dd/ff/3d0727f35836cc8773d3eeb9a46c40cc405854e36a8d2e951f3a8391c976/rpds_py-0.26.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:777c62479d12395bfb932944e61e915741e364c843afc3196b694db3d669fcd0", size = 357825, upload-time = "2025-07-01T15:53:42.247Z" }, + { url = "https://files.pythonhosted.org/packages/bf/ce/badc5e06120a54099ae287fa96d82cbb650a5f85cf247ffe19c7b157fd1f/rpds_py-0.26.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec671691e72dff75817386aa02d81e708b5a7ec0dec6669ec05213ff6b77e1bd", size = 381530, upload-time = "2025-07-01T15:53:43.585Z" }, + { url = "https://files.pythonhosted.org/packages/1e/a5/fa5d96a66c95d06c62d7a30707b6a4cfec696ab8ae280ee7be14e961e118/rpds_py-0.26.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6a1cb5d6ce81379401bbb7f6dbe3d56de537fb8235979843f0d53bc2e9815a79", size = 396933, upload-time = "2025-07-01T15:53:45.78Z" }, + { url = "https://files.pythonhosted.org/packages/00/a7/7049d66750f18605c591a9db47d4a059e112a0c9ff8de8daf8fa0f446bba/rpds_py-0.26.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4f789e32fa1fb6a7bf890e0124e7b42d1e60d28ebff57fe806719abb75f0e9a3", size = 513973, upload-time = "2025-07-01T15:53:47.085Z" }, + { url = "https://files.pythonhosted.org/packages/0e/f1/528d02c7d6b29d29fac8fd784b354d3571cc2153f33f842599ef0cf20dd2/rpds_py-0.26.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c55b0a669976cf258afd718de3d9ad1b7d1fe0a91cd1ab36f38b03d4d4aeaaf", size = 402293, upload-time = "2025-07-01T15:53:48.117Z" }, + { url = "https://files.pythonhosted.org/packages/15/93/fde36cd6e4685df2cd08508f6c45a841e82f5bb98c8d5ecf05649522acb5/rpds_py-0.26.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c70d9ec912802ecfd6cd390dadb34a9578b04f9bcb8e863d0a7598ba5e9e7ccc", size = 383787, upload-time = "2025-07-01T15:53:50.874Z" }, + { url = "https://files.pythonhosted.org/packages/69/f2/5007553aaba1dcae5d663143683c3dfd03d9395289f495f0aebc93e90f24/rpds_py-0.26.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3021933c2cb7def39d927b9862292e0f4c75a13d7de70eb0ab06efed4c508c19", size = 416312, upload-time = "2025-07-01T15:53:52.046Z" }, + { url = "https://files.pythonhosted.org/packages/8f/a7/ce52c75c1e624a79e48a69e611f1c08844564e44c85db2b6f711d76d10ce/rpds_py-0.26.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8a7898b6ca3b7d6659e55cdac825a2e58c638cbf335cde41f4619e290dd0ad11", size = 558403, upload-time = "2025-07-01T15:53:53.192Z" }, + { url = "https://files.pythonhosted.org/packages/79/d5/e119db99341cc75b538bf4cb80504129fa22ce216672fb2c28e4a101f4d9/rpds_py-0.26.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:12bff2ad9447188377f1b2794772f91fe68bb4bbfa5a39d7941fbebdbf8c500f", size = 588323, upload-time = "2025-07-01T15:53:54.336Z" }, + { url = "https://files.pythonhosted.org/packages/93/94/d28272a0b02f5fe24c78c20e13bbcb95f03dc1451b68e7830ca040c60bd6/rpds_py-0.26.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:191aa858f7d4902e975d4cf2f2d9243816c91e9605070aeb09c0a800d187e323", size = 554541, upload-time = "2025-07-01T15:53:55.469Z" }, + { url = "https://files.pythonhosted.org/packages/93/e0/8c41166602f1b791da892d976057eba30685486d2e2c061ce234679c922b/rpds_py-0.26.0-cp310-cp310-win32.whl", hash = "sha256:b37a04d9f52cb76b6b78f35109b513f6519efb481d8ca4c321f6a3b9580b3f45", size = 220442, upload-time = "2025-07-01T15:53:56.524Z" }, + { url = "https://files.pythonhosted.org/packages/87/f0/509736bb752a7ab50fb0270c2a4134d671a7b3038030837e5536c3de0e0b/rpds_py-0.26.0-cp310-cp310-win_amd64.whl", hash = "sha256:38721d4c9edd3eb6670437d8d5e2070063f305bfa2d5aa4278c51cedcd508a84", size = 231314, upload-time = "2025-07-01T15:53:57.842Z" }, + { url = "https://files.pythonhosted.org/packages/09/4c/4ee8f7e512030ff79fda1df3243c88d70fc874634e2dbe5df13ba4210078/rpds_py-0.26.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:9e8cb77286025bdb21be2941d64ac6ca016130bfdcd228739e8ab137eb4406ed", size = 372610, upload-time = "2025-07-01T15:53:58.844Z" }, + { url = "https://files.pythonhosted.org/packages/fa/9d/3dc16be00f14fc1f03c71b1d67c8df98263ab2710a2fbd65a6193214a527/rpds_py-0.26.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5e09330b21d98adc8ccb2dbb9fc6cb434e8908d4c119aeaa772cb1caab5440a0", size = 358032, upload-time = "2025-07-01T15:53:59.985Z" }, + { url = "https://files.pythonhosted.org/packages/e7/5a/7f1bf8f045da2866324a08ae80af63e64e7bfaf83bd31f865a7b91a58601/rpds_py-0.26.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c9c1b92b774b2e68d11193dc39620d62fd8ab33f0a3c77ecdabe19c179cdbc1", size = 381525, upload-time = "2025-07-01T15:54:01.162Z" }, + { url = "https://files.pythonhosted.org/packages/45/8a/04479398c755a066ace10e3d158866beb600867cacae194c50ffa783abd0/rpds_py-0.26.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:824e6d3503ab990d7090768e4dfd9e840837bae057f212ff9f4f05ec6d1975e7", size = 397089, upload-time = "2025-07-01T15:54:02.319Z" }, + { url = "https://files.pythonhosted.org/packages/72/88/9203f47268db488a1b6d469d69c12201ede776bb728b9d9f29dbfd7df406/rpds_py-0.26.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ad7fd2258228bf288f2331f0a6148ad0186b2e3643055ed0db30990e59817a6", size = 514255, upload-time = "2025-07-01T15:54:03.38Z" }, + { url = "https://files.pythonhosted.org/packages/f5/b4/01ce5d1e853ddf81fbbd4311ab1eff0b3cf162d559288d10fd127e2588b5/rpds_py-0.26.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0dc23bbb3e06ec1ea72d515fb572c1fea59695aefbffb106501138762e1e915e", size = 402283, upload-time = "2025-07-01T15:54:04.923Z" }, + { url = "https://files.pythonhosted.org/packages/34/a2/004c99936997bfc644d590a9defd9e9c93f8286568f9c16cdaf3e14429a7/rpds_py-0.26.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d80bf832ac7b1920ee29a426cdca335f96a2b5caa839811803e999b41ba9030d", size = 383881, upload-time = "2025-07-01T15:54:06.482Z" }, + { url = "https://files.pythonhosted.org/packages/05/1b/ef5fba4a8f81ce04c427bfd96223f92f05e6cd72291ce9d7523db3b03a6c/rpds_py-0.26.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0919f38f5542c0a87e7b4afcafab6fd2c15386632d249e9a087498571250abe3", size = 415822, upload-time = "2025-07-01T15:54:07.605Z" }, + { url = "https://files.pythonhosted.org/packages/16/80/5c54195aec456b292f7bd8aa61741c8232964063fd8a75fdde9c1e982328/rpds_py-0.26.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d422b945683e409000c888e384546dbab9009bb92f7c0b456e217988cf316107", size = 558347, upload-time = "2025-07-01T15:54:08.591Z" }, + { url = "https://files.pythonhosted.org/packages/f2/1c/1845c1b1fd6d827187c43afe1841d91678d7241cbdb5420a4c6de180a538/rpds_py-0.26.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:77a7711fa562ba2da1aa757e11024ad6d93bad6ad7ede5afb9af144623e5f76a", size = 587956, upload-time = "2025-07-01T15:54:09.963Z" }, + { url = "https://files.pythonhosted.org/packages/2e/ff/9e979329dd131aa73a438c077252ddabd7df6d1a7ad7b9aacf6261f10faa/rpds_py-0.26.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:238e8c8610cb7c29460e37184f6799547f7e09e6a9bdbdab4e8edb90986a2318", size = 554363, upload-time = "2025-07-01T15:54:11.073Z" }, + { url = "https://files.pythonhosted.org/packages/00/8b/d78cfe034b71ffbe72873a136e71acc7a831a03e37771cfe59f33f6de8a2/rpds_py-0.26.0-cp311-cp311-win32.whl", hash = "sha256:893b022bfbdf26d7bedb083efeea624e8550ca6eb98bf7fea30211ce95b9201a", size = 220123, upload-time = "2025-07-01T15:54:12.382Z" }, + { url = "https://files.pythonhosted.org/packages/94/c1/3c8c94c7dd3905dbfde768381ce98778500a80db9924731d87ddcdb117e9/rpds_py-0.26.0-cp311-cp311-win_amd64.whl", hash = "sha256:87a5531de9f71aceb8af041d72fc4cab4943648d91875ed56d2e629bef6d4c03", size = 231732, upload-time = "2025-07-01T15:54:13.434Z" }, + { url = "https://files.pythonhosted.org/packages/67/93/e936fbed1b734eabf36ccb5d93c6a2e9246fbb13c1da011624b7286fae3e/rpds_py-0.26.0-cp311-cp311-win_arm64.whl", hash = "sha256:de2713f48c1ad57f89ac25b3cb7daed2156d8e822cf0eca9b96a6f990718cc41", size = 221917, upload-time = "2025-07-01T15:54:14.559Z" }, + { url = "https://files.pythonhosted.org/packages/ea/86/90eb87c6f87085868bd077c7a9938006eb1ce19ed4d06944a90d3560fce2/rpds_py-0.26.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:894514d47e012e794f1350f076c427d2347ebf82f9b958d554d12819849a369d", size = 363933, upload-time = "2025-07-01T15:54:15.734Z" }, + { url = "https://files.pythonhosted.org/packages/63/78/4469f24d34636242c924626082b9586f064ada0b5dbb1e9d096ee7a8e0c6/rpds_py-0.26.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc921b96fa95a097add244da36a1d9e4f3039160d1d30f1b35837bf108c21136", size = 350447, upload-time = "2025-07-01T15:54:16.922Z" }, + { url = "https://files.pythonhosted.org/packages/ad/91/c448ed45efdfdade82348d5e7995e15612754826ea640afc20915119734f/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e1157659470aa42a75448b6e943c895be8c70531c43cb78b9ba990778955582", size = 384711, upload-time = "2025-07-01T15:54:18.101Z" }, + { url = "https://files.pythonhosted.org/packages/ec/43/e5c86fef4be7f49828bdd4ecc8931f0287b1152c0bb0163049b3218740e7/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:521ccf56f45bb3a791182dc6b88ae5f8fa079dd705ee42138c76deb1238e554e", size = 400865, upload-time = "2025-07-01T15:54:19.295Z" }, + { url = "https://files.pythonhosted.org/packages/55/34/e00f726a4d44f22d5c5fe2e5ddd3ac3d7fd3f74a175607781fbdd06fe375/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9def736773fd56b305c0eef698be5192c77bfa30d55a0e5885f80126c4831a15", size = 517763, upload-time = "2025-07-01T15:54:20.858Z" }, + { url = "https://files.pythonhosted.org/packages/52/1c/52dc20c31b147af724b16104500fba13e60123ea0334beba7b40e33354b4/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cdad4ea3b4513b475e027be79e5a0ceac8ee1c113a1a11e5edc3c30c29f964d8", size = 406651, upload-time = "2025-07-01T15:54:22.508Z" }, + { url = "https://files.pythonhosted.org/packages/2e/77/87d7bfabfc4e821caa35481a2ff6ae0b73e6a391bb6b343db2c91c2b9844/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82b165b07f416bdccf5c84546a484cc8f15137ca38325403864bfdf2b5b72f6a", size = 386079, upload-time = "2025-07-01T15:54:23.987Z" }, + { url = "https://files.pythonhosted.org/packages/e3/d4/7f2200c2d3ee145b65b3cddc4310d51f7da6a26634f3ac87125fd789152a/rpds_py-0.26.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d04cab0a54b9dba4d278fe955a1390da3cf71f57feb78ddc7cb67cbe0bd30323", size = 421379, upload-time = "2025-07-01T15:54:25.073Z" }, + { url = "https://files.pythonhosted.org/packages/ae/13/9fdd428b9c820869924ab62236b8688b122baa22d23efdd1c566938a39ba/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:79061ba1a11b6a12743a2b0f72a46aa2758613d454aa6ba4f5a265cc48850158", size = 562033, upload-time = "2025-07-01T15:54:26.225Z" }, + { url = "https://files.pythonhosted.org/packages/f3/e1/b69686c3bcbe775abac3a4c1c30a164a2076d28df7926041f6c0eb5e8d28/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f405c93675d8d4c5ac87364bb38d06c988e11028a64b52a47158a355079661f3", size = 591639, upload-time = "2025-07-01T15:54:27.424Z" }, + { url = "https://files.pythonhosted.org/packages/5c/c9/1e3d8c8863c84a90197ac577bbc3d796a92502124c27092413426f670990/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dafd4c44b74aa4bed4b250f1aed165b8ef5de743bcca3b88fc9619b6087093d2", size = 557105, upload-time = "2025-07-01T15:54:29.93Z" }, + { url = "https://files.pythonhosted.org/packages/9f/c5/90c569649057622959f6dcc40f7b516539608a414dfd54b8d77e3b201ac0/rpds_py-0.26.0-cp312-cp312-win32.whl", hash = "sha256:3da5852aad63fa0c6f836f3359647870e21ea96cf433eb393ffa45263a170d44", size = 223272, upload-time = "2025-07-01T15:54:31.128Z" }, + { url = "https://files.pythonhosted.org/packages/7d/16/19f5d9f2a556cfed454eebe4d354c38d51c20f3db69e7b4ce6cff904905d/rpds_py-0.26.0-cp312-cp312-win_amd64.whl", hash = "sha256:cf47cfdabc2194a669dcf7a8dbba62e37a04c5041d2125fae0233b720da6f05c", size = 234995, upload-time = "2025-07-01T15:54:32.195Z" }, + { url = "https://files.pythonhosted.org/packages/83/f0/7935e40b529c0e752dfaa7880224771b51175fce08b41ab4a92eb2fbdc7f/rpds_py-0.26.0-cp312-cp312-win_arm64.whl", hash = "sha256:20ab1ae4fa534f73647aad289003f1104092890849e0266271351922ed5574f8", size = 223198, upload-time = "2025-07-01T15:54:33.271Z" }, + { url = "https://files.pythonhosted.org/packages/6a/67/bb62d0109493b12b1c6ab00de7a5566aa84c0e44217c2d94bee1bd370da9/rpds_py-0.26.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:696764a5be111b036256c0b18cd29783fab22154690fc698062fc1b0084b511d", size = 363917, upload-time = "2025-07-01T15:54:34.755Z" }, + { url = "https://files.pythonhosted.org/packages/4b/f3/34e6ae1925a5706c0f002a8d2d7f172373b855768149796af87bd65dcdb9/rpds_py-0.26.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1e6c15d2080a63aaed876e228efe4f814bc7889c63b1e112ad46fdc8b368b9e1", size = 350073, upload-time = "2025-07-01T15:54:36.292Z" }, + { url = "https://files.pythonhosted.org/packages/75/83/1953a9d4f4e4de7fd0533733e041c28135f3c21485faaef56a8aadbd96b5/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:390e3170babf42462739a93321e657444f0862c6d722a291accc46f9d21ed04e", size = 384214, upload-time = "2025-07-01T15:54:37.469Z" }, + { url = "https://files.pythonhosted.org/packages/48/0e/983ed1b792b3322ea1d065e67f4b230f3b96025f5ce3878cc40af09b7533/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7da84c2c74c0f5bc97d853d9e17bb83e2dcafcff0dc48286916001cc114379a1", size = 400113, upload-time = "2025-07-01T15:54:38.954Z" }, + { url = "https://files.pythonhosted.org/packages/69/7f/36c0925fff6f660a80be259c5b4f5e53a16851f946eb080351d057698528/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c5fe114a6dd480a510b6d3661d09d67d1622c4bf20660a474507aaee7eeeee9", size = 515189, upload-time = "2025-07-01T15:54:40.57Z" }, + { url = "https://files.pythonhosted.org/packages/13/45/cbf07fc03ba7a9b54662c9badb58294ecfb24f828b9732970bd1a431ed5c/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3100b3090269f3a7ea727b06a6080d4eb7439dca4c0e91a07c5d133bb1727ea7", size = 406998, upload-time = "2025-07-01T15:54:43.025Z" }, + { url = "https://files.pythonhosted.org/packages/6c/b0/8fa5e36e58657997873fd6a1cf621285ca822ca75b4b3434ead047daa307/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c03c9b0c64afd0320ae57de4c982801271c0c211aa2d37f3003ff5feb75bb04", size = 385903, upload-time = "2025-07-01T15:54:44.752Z" }, + { url = "https://files.pythonhosted.org/packages/4b/f7/b25437772f9f57d7a9fbd73ed86d0dcd76b4c7c6998348c070d90f23e315/rpds_py-0.26.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5963b72ccd199ade6ee493723d18a3f21ba7d5b957017607f815788cef50eaf1", size = 419785, upload-time = "2025-07-01T15:54:46.043Z" }, + { url = "https://files.pythonhosted.org/packages/a7/6b/63ffa55743dfcb4baf2e9e77a0b11f7f97ed96a54558fcb5717a4b2cd732/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9da4e873860ad5bab3291438525cae80169daecbfafe5657f7f5fb4d6b3f96b9", size = 561329, upload-time = "2025-07-01T15:54:47.64Z" }, + { url = "https://files.pythonhosted.org/packages/2f/07/1f4f5e2886c480a2346b1e6759c00278b8a69e697ae952d82ae2e6ee5db0/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:5afaddaa8e8c7f1f7b4c5c725c0070b6eed0228f705b90a1732a48e84350f4e9", size = 590875, upload-time = "2025-07-01T15:54:48.9Z" }, + { url = "https://files.pythonhosted.org/packages/cc/bc/e6639f1b91c3a55f8c41b47d73e6307051b6e246254a827ede730624c0f8/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4916dc96489616a6f9667e7526af8fa693c0fdb4f3acb0e5d9f4400eb06a47ba", size = 556636, upload-time = "2025-07-01T15:54:50.619Z" }, + { url = "https://files.pythonhosted.org/packages/05/4c/b3917c45566f9f9a209d38d9b54a1833f2bb1032a3e04c66f75726f28876/rpds_py-0.26.0-cp313-cp313-win32.whl", hash = "sha256:2a343f91b17097c546b93f7999976fd6c9d5900617aa848c81d794e062ab302b", size = 222663, upload-time = "2025-07-01T15:54:52.023Z" }, + { url = "https://files.pythonhosted.org/packages/e0/0b/0851bdd6025775aaa2365bb8de0697ee2558184c800bfef8d7aef5ccde58/rpds_py-0.26.0-cp313-cp313-win_amd64.whl", hash = "sha256:0a0b60701f2300c81b2ac88a5fb893ccfa408e1c4a555a77f908a2596eb875a5", size = 234428, upload-time = "2025-07-01T15:54:53.692Z" }, + { url = "https://files.pythonhosted.org/packages/ed/e8/a47c64ed53149c75fb581e14a237b7b7cd18217e969c30d474d335105622/rpds_py-0.26.0-cp313-cp313-win_arm64.whl", hash = "sha256:257d011919f133a4746958257f2c75238e3ff54255acd5e3e11f3ff41fd14256", size = 222571, upload-time = "2025-07-01T15:54:54.822Z" }, + { url = "https://files.pythonhosted.org/packages/89/bf/3d970ba2e2bcd17d2912cb42874107390f72873e38e79267224110de5e61/rpds_py-0.26.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:529c8156d7506fba5740e05da8795688f87119cce330c244519cf706a4a3d618", size = 360475, upload-time = "2025-07-01T15:54:56.228Z" }, + { url = "https://files.pythonhosted.org/packages/82/9f/283e7e2979fc4ec2d8ecee506d5a3675fce5ed9b4b7cb387ea5d37c2f18d/rpds_py-0.26.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f53ec51f9d24e9638a40cabb95078ade8c99251945dad8d57bf4aabe86ecee35", size = 346692, upload-time = "2025-07-01T15:54:58.561Z" }, + { url = "https://files.pythonhosted.org/packages/e3/03/7e50423c04d78daf391da3cc4330bdb97042fc192a58b186f2d5deb7befd/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab504c4d654e4a29558eaa5bb8cea5fdc1703ea60a8099ffd9c758472cf913f", size = 379415, upload-time = "2025-07-01T15:54:59.751Z" }, + { url = "https://files.pythonhosted.org/packages/57/00/d11ee60d4d3b16808432417951c63df803afb0e0fc672b5e8d07e9edaaae/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fd0641abca296bc1a00183fe44f7fced8807ed49d501f188faa642d0e4975b83", size = 391783, upload-time = "2025-07-01T15:55:00.898Z" }, + { url = "https://files.pythonhosted.org/packages/08/b3/1069c394d9c0d6d23c5b522e1f6546b65793a22950f6e0210adcc6f97c3e/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b312fecc1d017b5327afa81d4da1480f51c68810963a7336d92203dbb3d4f1", size = 512844, upload-time = "2025-07-01T15:55:02.201Z" }, + { url = "https://files.pythonhosted.org/packages/08/3b/c4fbf0926800ed70b2c245ceca99c49f066456755f5d6eb8863c2c51e6d0/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c741107203954f6fc34d3066d213d0a0c40f7bb5aafd698fb39888af277c70d8", size = 402105, upload-time = "2025-07-01T15:55:03.698Z" }, + { url = "https://files.pythonhosted.org/packages/1c/b0/db69b52ca07413e568dae9dc674627a22297abb144c4d6022c6d78f1e5cc/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc3e55a7db08dc9a6ed5fb7103019d2c1a38a349ac41901f9f66d7f95750942f", size = 383440, upload-time = "2025-07-01T15:55:05.398Z" }, + { url = "https://files.pythonhosted.org/packages/4c/e1/c65255ad5b63903e56b3bb3ff9dcc3f4f5c3badde5d08c741ee03903e951/rpds_py-0.26.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9e851920caab2dbcae311fd28f4313c6953993893eb5c1bb367ec69d9a39e7ed", size = 412759, upload-time = "2025-07-01T15:55:08.316Z" }, + { url = "https://files.pythonhosted.org/packages/e4/22/bb731077872377a93c6e93b8a9487d0406c70208985831034ccdeed39c8e/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:dfbf280da5f876d0b00c81f26bedce274e72a678c28845453885a9b3c22ae632", size = 556032, upload-time = "2025-07-01T15:55:09.52Z" }, + { url = "https://files.pythonhosted.org/packages/e0/8b/393322ce7bac5c4530fb96fc79cc9ea2f83e968ff5f6e873f905c493e1c4/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:1cc81d14ddfa53d7f3906694d35d54d9d3f850ef8e4e99ee68bc0d1e5fed9a9c", size = 585416, upload-time = "2025-07-01T15:55:11.216Z" }, + { url = "https://files.pythonhosted.org/packages/49/ae/769dc372211835bf759319a7aae70525c6eb523e3371842c65b7ef41c9c6/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dca83c498b4650a91efcf7b88d669b170256bf8017a5db6f3e06c2bf031f57e0", size = 554049, upload-time = "2025-07-01T15:55:13.004Z" }, + { url = "https://files.pythonhosted.org/packages/6b/f9/4c43f9cc203d6ba44ce3146246cdc38619d92c7bd7bad4946a3491bd5b70/rpds_py-0.26.0-cp313-cp313t-win32.whl", hash = "sha256:4d11382bcaf12f80b51d790dee295c56a159633a8e81e6323b16e55d81ae37e9", size = 218428, upload-time = "2025-07-01T15:55:14.486Z" }, + { url = "https://files.pythonhosted.org/packages/7e/8b/9286b7e822036a4a977f2f1e851c7345c20528dbd56b687bb67ed68a8ede/rpds_py-0.26.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ff110acded3c22c033e637dd8896e411c7d3a11289b2edf041f86663dbc791e9", size = 231524, upload-time = "2025-07-01T15:55:15.745Z" }, + { url = "https://files.pythonhosted.org/packages/55/07/029b7c45db910c74e182de626dfdae0ad489a949d84a468465cd0ca36355/rpds_py-0.26.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:da619979df60a940cd434084355c514c25cf8eb4cf9a508510682f6c851a4f7a", size = 364292, upload-time = "2025-07-01T15:55:17.001Z" }, + { url = "https://files.pythonhosted.org/packages/13/d1/9b3d3f986216b4d1f584878dca15ce4797aaf5d372d738974ba737bf68d6/rpds_py-0.26.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ea89a2458a1a75f87caabefe789c87539ea4e43b40f18cff526052e35bbb4fdf", size = 350334, upload-time = "2025-07-01T15:55:18.922Z" }, + { url = "https://files.pythonhosted.org/packages/18/98/16d5e7bc9ec715fa9668731d0cf97f6b032724e61696e2db3d47aeb89214/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feac1045b3327a45944e7dcbeb57530339f6b17baff154df51ef8b0da34c8c12", size = 384875, upload-time = "2025-07-01T15:55:20.399Z" }, + { url = "https://files.pythonhosted.org/packages/f9/13/aa5e2b1ec5ab0e86a5c464d53514c0467bec6ba2507027d35fc81818358e/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b818a592bd69bfe437ee8368603d4a2d928c34cffcdf77c2e761a759ffd17d20", size = 399993, upload-time = "2025-07-01T15:55:21.729Z" }, + { url = "https://files.pythonhosted.org/packages/17/03/8021810b0e97923abdbab6474c8b77c69bcb4b2c58330777df9ff69dc559/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a8b0dd8648709b62d9372fc00a57466f5fdeefed666afe3fea5a6c9539a0331", size = 516683, upload-time = "2025-07-01T15:55:22.918Z" }, + { url = "https://files.pythonhosted.org/packages/dc/b1/da8e61c87c2f3d836954239fdbbfb477bb7b54d74974d8f6fcb34342d166/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6d3498ad0df07d81112aa6ec6c95a7e7b1ae00929fb73e7ebee0f3faaeabad2f", size = 408825, upload-time = "2025-07-01T15:55:24.207Z" }, + { url = "https://files.pythonhosted.org/packages/38/bc/1fc173edaaa0e52c94b02a655db20697cb5fa954ad5a8e15a2c784c5cbdd/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24a4146ccb15be237fdef10f331c568e1b0e505f8c8c9ed5d67759dac58ac246", size = 387292, upload-time = "2025-07-01T15:55:25.554Z" }, + { url = "https://files.pythonhosted.org/packages/7c/eb/3a9bb4bd90867d21916f253caf4f0d0be7098671b6715ad1cead9fe7bab9/rpds_py-0.26.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a9a63785467b2d73635957d32a4f6e73d5e4df497a16a6392fa066b753e87387", size = 420435, upload-time = "2025-07-01T15:55:27.798Z" }, + { url = "https://files.pythonhosted.org/packages/cd/16/e066dcdb56f5632713445271a3f8d3d0b426d51ae9c0cca387799df58b02/rpds_py-0.26.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:de4ed93a8c91debfd5a047be327b7cc8b0cc6afe32a716bbbc4aedca9e2a83af", size = 562410, upload-time = "2025-07-01T15:55:29.057Z" }, + { url = "https://files.pythonhosted.org/packages/60/22/ddbdec7eb82a0dc2e455be44c97c71c232983e21349836ce9f272e8a3c29/rpds_py-0.26.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:caf51943715b12af827696ec395bfa68f090a4c1a1d2509eb4e2cb69abbbdb33", size = 590724, upload-time = "2025-07-01T15:55:30.719Z" }, + { url = "https://files.pythonhosted.org/packages/2c/b4/95744085e65b7187d83f2fcb0bef70716a1ea0a9e5d8f7f39a86e5d83424/rpds_py-0.26.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:4a59e5bc386de021f56337f757301b337d7ab58baa40174fb150accd480bc953", size = 558285, upload-time = "2025-07-01T15:55:31.981Z" }, + { url = "https://files.pythonhosted.org/packages/37/37/6309a75e464d1da2559446f9c811aa4d16343cebe3dbb73701e63f760caa/rpds_py-0.26.0-cp314-cp314-win32.whl", hash = "sha256:92c8db839367ef16a662478f0a2fe13e15f2227da3c1430a782ad0f6ee009ec9", size = 223459, upload-time = "2025-07-01T15:55:33.312Z" }, + { url = "https://files.pythonhosted.org/packages/d9/6f/8e9c11214c46098b1d1391b7e02b70bb689ab963db3b19540cba17315291/rpds_py-0.26.0-cp314-cp314-win_amd64.whl", hash = "sha256:b0afb8cdd034150d4d9f53926226ed27ad15b7f465e93d7468caaf5eafae0d37", size = 236083, upload-time = "2025-07-01T15:55:34.933Z" }, + { url = "https://files.pythonhosted.org/packages/47/af/9c4638994dd623d51c39892edd9d08e8be8220a4b7e874fa02c2d6e91955/rpds_py-0.26.0-cp314-cp314-win_arm64.whl", hash = "sha256:ca3f059f4ba485d90c8dc75cb5ca897e15325e4e609812ce57f896607c1c0867", size = 223291, upload-time = "2025-07-01T15:55:36.202Z" }, + { url = "https://files.pythonhosted.org/packages/4d/db/669a241144460474aab03e254326b32c42def83eb23458a10d163cb9b5ce/rpds_py-0.26.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:5afea17ab3a126006dc2f293b14ffc7ef3c85336cf451564a0515ed7648033da", size = 361445, upload-time = "2025-07-01T15:55:37.483Z" }, + { url = "https://files.pythonhosted.org/packages/3b/2d/133f61cc5807c6c2fd086a46df0eb8f63a23f5df8306ff9f6d0fd168fecc/rpds_py-0.26.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:69f0c0a3df7fd3a7eec50a00396104bb9a843ea6d45fcc31c2d5243446ffd7a7", size = 347206, upload-time = "2025-07-01T15:55:38.828Z" }, + { url = "https://files.pythonhosted.org/packages/05/bf/0e8fb4c05f70273469eecf82f6ccf37248558526a45321644826555db31b/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:801a71f70f9813e82d2513c9a96532551fce1e278ec0c64610992c49c04c2dad", size = 380330, upload-time = "2025-07-01T15:55:40.175Z" }, + { url = "https://files.pythonhosted.org/packages/d4/a8/060d24185d8b24d3923322f8d0ede16df4ade226a74e747b8c7c978e3dd3/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:df52098cde6d5e02fa75c1f6244f07971773adb4a26625edd5c18fee906fa84d", size = 392254, upload-time = "2025-07-01T15:55:42.015Z" }, + { url = "https://files.pythonhosted.org/packages/b9/7b/7c2e8a9ee3e6bc0bae26bf29f5219955ca2fbb761dca996a83f5d2f773fe/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9bc596b30f86dc6f0929499c9e574601679d0341a0108c25b9b358a042f51bca", size = 516094, upload-time = "2025-07-01T15:55:43.603Z" }, + { url = "https://files.pythonhosted.org/packages/75/d6/f61cafbed8ba1499b9af9f1777a2a199cd888f74a96133d8833ce5eaa9c5/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9dfbe56b299cf5875b68eb6f0ebaadc9cac520a1989cac0db0765abfb3709c19", size = 402889, upload-time = "2025-07-01T15:55:45.275Z" }, + { url = "https://files.pythonhosted.org/packages/92/19/c8ac0a8a8df2dd30cdec27f69298a5c13e9029500d6d76718130f5e5be10/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac64f4b2bdb4ea622175c9ab7cf09444e412e22c0e02e906978b3b488af5fde8", size = 384301, upload-time = "2025-07-01T15:55:47.098Z" }, + { url = "https://files.pythonhosted.org/packages/41/e1/6b1859898bc292a9ce5776016c7312b672da00e25cec74d7beced1027286/rpds_py-0.26.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:181ef9b6bbf9845a264f9aa45c31836e9f3c1f13be565d0d010e964c661d1e2b", size = 412891, upload-time = "2025-07-01T15:55:48.412Z" }, + { url = "https://files.pythonhosted.org/packages/ef/b9/ceb39af29913c07966a61367b3c08b4f71fad841e32c6b59a129d5974698/rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:49028aa684c144ea502a8e847d23aed5e4c2ef7cadfa7d5eaafcb40864844b7a", size = 557044, upload-time = "2025-07-01T15:55:49.816Z" }, + { url = "https://files.pythonhosted.org/packages/2f/27/35637b98380731a521f8ec4f3fd94e477964f04f6b2f8f7af8a2d889a4af/rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:e5d524d68a474a9688336045bbf76cb0def88549c1b2ad9dbfec1fb7cfbe9170", size = 585774, upload-time = "2025-07-01T15:55:51.192Z" }, + { url = "https://files.pythonhosted.org/packages/52/d9/3f0f105420fecd18551b678c9a6ce60bd23986098b252a56d35781b3e7e9/rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c1851f429b822831bd2edcbe0cfd12ee9ea77868f8d3daf267b189371671c80e", size = 554886, upload-time = "2025-07-01T15:55:52.541Z" }, + { url = "https://files.pythonhosted.org/packages/6b/c5/347c056a90dc8dd9bc240a08c527315008e1b5042e7a4cf4ac027be9d38a/rpds_py-0.26.0-cp314-cp314t-win32.whl", hash = "sha256:7bdb17009696214c3b66bb3590c6d62e14ac5935e53e929bcdbc5a495987a84f", size = 219027, upload-time = "2025-07-01T15:55:53.874Z" }, + { url = "https://files.pythonhosted.org/packages/75/04/5302cea1aa26d886d34cadbf2dc77d90d7737e576c0065f357b96dc7a1a6/rpds_py-0.26.0-cp314-cp314t-win_amd64.whl", hash = "sha256:f14440b9573a6f76b4ee4770c13f0b5921f71dde3b6fcb8dabbefd13b7fe05d7", size = 232821, upload-time = "2025-07-01T15:55:55.167Z" }, + { url = "https://files.pythonhosted.org/packages/fb/74/846ab687119c9d31fc21ab1346ef9233c31035ce53c0e2d43a130a0c5a5e/rpds_py-0.26.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:7a48af25d9b3c15684059d0d1fc0bc30e8eee5ca521030e2bffddcab5be40226", size = 372786, upload-time = "2025-07-01T15:55:56.512Z" }, + { url = "https://files.pythonhosted.org/packages/33/02/1f9e465cb1a6032d02b17cd117c7bd9fb6156bc5b40ffeb8053d8a2aa89c/rpds_py-0.26.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0c71c2f6bf36e61ee5c47b2b9b5d47e4d1baad6426bfed9eea3e858fc6ee8806", size = 358062, upload-time = "2025-07-01T15:55:58.084Z" }, + { url = "https://files.pythonhosted.org/packages/2a/49/81a38e3c67ac943907a9711882da3d87758c82cf26b2120b8128e45d80df/rpds_py-0.26.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d815d48b1804ed7867b539236b6dd62997850ca1c91cad187f2ddb1b7bbef19", size = 381576, upload-time = "2025-07-01T15:55:59.422Z" }, + { url = "https://files.pythonhosted.org/packages/14/37/418f030a76ef59f41e55f9dc916af8afafa3c9e3be38df744b2014851474/rpds_py-0.26.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:84cfbd4d4d2cdeb2be61a057a258d26b22877266dd905809e94172dff01a42ae", size = 397062, upload-time = "2025-07-01T15:56:00.868Z" }, + { url = "https://files.pythonhosted.org/packages/47/e3/9090817a8f4388bfe58e28136e9682fa7872a06daff2b8a2f8c78786a6e1/rpds_py-0.26.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fbaa70553ca116c77717f513e08815aec458e6b69a028d4028d403b3bc84ff37", size = 516277, upload-time = "2025-07-01T15:56:02.672Z" }, + { url = "https://files.pythonhosted.org/packages/3f/3a/1ec3dd93250fb8023f27d49b3f92e13f679141f2e59a61563f88922c2821/rpds_py-0.26.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:39bfea47c375f379d8e87ab4bb9eb2c836e4f2069f0f65731d85e55d74666387", size = 402604, upload-time = "2025-07-01T15:56:04.453Z" }, + { url = "https://files.pythonhosted.org/packages/f2/98/9133c06e42ec3ce637936263c50ac647f879b40a35cfad2f5d4ad418a439/rpds_py-0.26.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1533b7eb683fb5f38c1d68a3c78f5fdd8f1412fa6b9bf03b40f450785a0ab915", size = 383664, upload-time = "2025-07-01T15:56:05.823Z" }, + { url = "https://files.pythonhosted.org/packages/a9/10/a59ce64099cc77c81adb51f06909ac0159c19a3e2c9d9613bab171f4730f/rpds_py-0.26.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c5ab0ee51f560d179b057555b4f601b7df909ed31312d301b99f8b9fc6028284", size = 415944, upload-time = "2025-07-01T15:56:07.132Z" }, + { url = "https://files.pythonhosted.org/packages/c3/f1/ae0c60b3be9df9d5bef3527d83b8eb4b939e3619f6dd8382840e220a27df/rpds_py-0.26.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:e5162afc9e0d1f9cae3b577d9c29ddbab3505ab39012cb794d94a005825bde21", size = 558311, upload-time = "2025-07-01T15:56:08.484Z" }, + { url = "https://files.pythonhosted.org/packages/fb/2b/bf1498ebb3ddc5eff2fe3439da88963d1fc6e73d1277fa7ca0c72620d167/rpds_py-0.26.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:43f10b007033f359bc3fa9cd5e6c1e76723f056ffa9a6b5c117cc35720a80292", size = 587928, upload-time = "2025-07-01T15:56:09.946Z" }, + { url = "https://files.pythonhosted.org/packages/b6/eb/e6b949edf7af5629848c06d6e544a36c9f2781e2d8d03b906de61ada04d0/rpds_py-0.26.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e3730a48e5622e598293eee0762b09cff34dd3f271530f47b0894891281f051d", size = 554554, upload-time = "2025-07-01T15:56:11.775Z" }, + { url = "https://files.pythonhosted.org/packages/0a/1c/aa0298372ea898620d4706ad26b5b9e975550a4dd30bd042b0fe9ae72cce/rpds_py-0.26.0-cp39-cp39-win32.whl", hash = "sha256:4b1f66eb81eab2e0ff5775a3a312e5e2e16bf758f7b06be82fb0d04078c7ac51", size = 220273, upload-time = "2025-07-01T15:56:13.273Z" }, + { url = "https://files.pythonhosted.org/packages/b8/b0/8b3bef6ad0b35c172d1c87e2e5c2bb027d99e2a7bc7a16f744e66cf318f3/rpds_py-0.26.0-cp39-cp39-win_amd64.whl", hash = "sha256:519067e29f67b5c90e64fb1a6b6e9d2ec0ba28705c51956637bac23a2f4ddae1", size = 231627, upload-time = "2025-07-01T15:56:14.853Z" }, + { url = "https://files.pythonhosted.org/packages/ef/9a/1f033b0b31253d03d785b0cd905bc127e555ab496ea6b4c7c2e1f951f2fd/rpds_py-0.26.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3c0909c5234543ada2515c05dc08595b08d621ba919629e94427e8e03539c958", size = 373226, upload-time = "2025-07-01T15:56:16.578Z" }, + { url = "https://files.pythonhosted.org/packages/58/29/5f88023fd6aaaa8ca3c4a6357ebb23f6f07da6079093ccf27c99efce87db/rpds_py-0.26.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:c1fb0cda2abcc0ac62f64e2ea4b4e64c57dfd6b885e693095460c61bde7bb18e", size = 359230, upload-time = "2025-07-01T15:56:17.978Z" }, + { url = "https://files.pythonhosted.org/packages/6c/6c/13eaebd28b439da6964dde22712b52e53fe2824af0223b8e403249d10405/rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:84d142d2d6cf9b31c12aa4878d82ed3b2324226270b89b676ac62ccd7df52d08", size = 382363, upload-time = "2025-07-01T15:56:19.977Z" }, + { url = "https://files.pythonhosted.org/packages/55/fc/3bb9c486b06da19448646f96147796de23c5811ef77cbfc26f17307b6a9d/rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a547e21c5610b7e9093d870be50682a6a6cf180d6da0f42c47c306073bfdbbf6", size = 397146, upload-time = "2025-07-01T15:56:21.39Z" }, + { url = "https://files.pythonhosted.org/packages/15/18/9d1b79eb4d18e64ba8bba9e7dec6f9d6920b639f22f07ee9368ca35d4673/rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:35e9a70a0f335371275cdcd08bc5b8051ac494dd58bff3bbfb421038220dc871", size = 514804, upload-time = "2025-07-01T15:56:22.78Z" }, + { url = "https://files.pythonhosted.org/packages/4f/5a/175ad7191bdbcd28785204621b225ad70e85cdfd1e09cc414cb554633b21/rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0dfa6115c6def37905344d56fb54c03afc49104e2ca473d5dedec0f6606913b4", size = 402820, upload-time = "2025-07-01T15:56:24.584Z" }, + { url = "https://files.pythonhosted.org/packages/11/45/6a67ecf6d61c4d4aff4bc056e864eec4b2447787e11d1c2c9a0242c6e92a/rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:313cfcd6af1a55a286a3c9a25f64af6d0e46cf60bc5798f1db152d97a216ff6f", size = 384567, upload-time = "2025-07-01T15:56:26.064Z" }, + { url = "https://files.pythonhosted.org/packages/a1/ba/16589da828732b46454c61858950a78fe4c931ea4bf95f17432ffe64b241/rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f7bf2496fa563c046d05e4d232d7b7fd61346e2402052064b773e5c378bf6f73", size = 416520, upload-time = "2025-07-01T15:56:27.608Z" }, + { url = "https://files.pythonhosted.org/packages/81/4b/00092999fc7c0c266045e984d56b7314734cc400a6c6dc4d61a35f135a9d/rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:aa81873e2c8c5aa616ab8e017a481a96742fdf9313c40f14338ca7dbf50cb55f", size = 559362, upload-time = "2025-07-01T15:56:29.078Z" }, + { url = "https://files.pythonhosted.org/packages/96/0c/43737053cde1f93ac4945157f7be1428724ab943e2132a0d235a7e161d4e/rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:68ffcf982715f5b5b7686bdd349ff75d422e8f22551000c24b30eaa1b7f7ae84", size = 588113, upload-time = "2025-07-01T15:56:30.485Z" }, + { url = "https://files.pythonhosted.org/packages/46/46/8e38f6161466e60a997ed7e9951ae5de131dedc3cf778ad35994b4af823d/rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:6188de70e190847bb6db3dc3981cbadff87d27d6fe9b4f0e18726d55795cee9b", size = 555429, upload-time = "2025-07-01T15:56:31.956Z" }, + { url = "https://files.pythonhosted.org/packages/2c/ac/65da605e9f1dd643ebe615d5bbd11b6efa1d69644fc4bf623ea5ae385a82/rpds_py-0.26.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1c962145c7473723df9722ba4c058de12eb5ebedcb4e27e7d902920aa3831ee8", size = 231950, upload-time = "2025-07-01T15:56:33.337Z" }, + { url = "https://files.pythonhosted.org/packages/51/f2/b5c85b758a00c513bb0389f8fc8e61eb5423050c91c958cdd21843faa3e6/rpds_py-0.26.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f61a9326f80ca59214d1cceb0a09bb2ece5b2563d4e0cd37bfd5515c28510674", size = 373505, upload-time = "2025-07-01T15:56:34.716Z" }, + { url = "https://files.pythonhosted.org/packages/23/e0/25db45e391251118e915e541995bb5f5ac5691a3b98fb233020ba53afc9b/rpds_py-0.26.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:183f857a53bcf4b1b42ef0f57ca553ab56bdd170e49d8091e96c51c3d69ca696", size = 359468, upload-time = "2025-07-01T15:56:36.219Z" }, + { url = "https://files.pythonhosted.org/packages/0b/73/dd5ee6075bb6491be3a646b301dfd814f9486d924137a5098e61f0487e16/rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:941c1cfdf4799d623cf3aa1d326a6b4fdb7a5799ee2687f3516738216d2262fb", size = 382680, upload-time = "2025-07-01T15:56:37.644Z" }, + { url = "https://files.pythonhosted.org/packages/2f/10/84b522ff58763a5c443f5bcedc1820240e454ce4e620e88520f04589e2ea/rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72a8d9564a717ee291f554eeb4bfeafe2309d5ec0aa6c475170bdab0f9ee8e88", size = 397035, upload-time = "2025-07-01T15:56:39.241Z" }, + { url = "https://files.pythonhosted.org/packages/06/ea/8667604229a10a520fcbf78b30ccc278977dcc0627beb7ea2c96b3becef0/rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:511d15193cbe013619dd05414c35a7dedf2088fcee93c6bbb7c77859765bd4e8", size = 514922, upload-time = "2025-07-01T15:56:40.645Z" }, + { url = "https://files.pythonhosted.org/packages/24/e6/9ed5b625c0661c4882fc8cdf302bf8e96c73c40de99c31e0b95ed37d508c/rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aea1f9741b603a8d8fedb0ed5502c2bc0accbc51f43e2ad1337fe7259c2b77a5", size = 402822, upload-time = "2025-07-01T15:56:42.137Z" }, + { url = "https://files.pythonhosted.org/packages/8a/58/212c7b6fd51946047fb45d3733da27e2fa8f7384a13457c874186af691b1/rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4019a9d473c708cf2f16415688ef0b4639e07abaa569d72f74745bbeffafa2c7", size = 384336, upload-time = "2025-07-01T15:56:44.239Z" }, + { url = "https://files.pythonhosted.org/packages/aa/f5/a40ba78748ae8ebf4934d4b88e77b98497378bc2c24ba55ebe87a4e87057/rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:093d63b4b0f52d98ebae33b8c50900d3d67e0666094b1be7a12fffd7f65de74b", size = 416871, upload-time = "2025-07-01T15:56:46.284Z" }, + { url = "https://files.pythonhosted.org/packages/d5/a6/33b1fc0c9f7dcfcfc4a4353daa6308b3ece22496ceece348b3e7a7559a09/rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:2abe21d8ba64cded53a2a677e149ceb76dcf44284202d737178afe7ba540c1eb", size = 559439, upload-time = "2025-07-01T15:56:48.549Z" }, + { url = "https://files.pythonhosted.org/packages/71/2d/ceb3f9c12f8cfa56d34995097f6cd99da1325642c60d1b6680dd9df03ed8/rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:4feb7511c29f8442cbbc28149a92093d32e815a28aa2c50d333826ad2a20fdf0", size = 588380, upload-time = "2025-07-01T15:56:50.086Z" }, + { url = "https://files.pythonhosted.org/packages/c8/ed/9de62c2150ca8e2e5858acf3f4f4d0d180a38feef9fdab4078bea63d8dba/rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e99685fc95d386da368013e7fb4269dd39c30d99f812a8372d62f244f662709c", size = 555334, upload-time = "2025-07-01T15:56:51.703Z" }, + { url = "https://files.pythonhosted.org/packages/7e/78/a08e2f28e91c7e45db1150813c6d760a0fb114d5652b1373897073369e0d/rpds_py-0.26.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a90a13408a7a856b87be8a9f008fff53c5080eea4e4180f6c2e546e4a972fb5d", size = 373157, upload-time = "2025-07-01T15:56:53.291Z" }, + { url = "https://files.pythonhosted.org/packages/52/01/ddf51517497c8224fb0287e9842b820ed93748bc28ea74cab56a71e3dba4/rpds_py-0.26.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:3ac51b65e8dc76cf4949419c54c5528adb24fc721df722fd452e5fbc236f5c40", size = 358827, upload-time = "2025-07-01T15:56:54.963Z" }, + { url = "https://files.pythonhosted.org/packages/4d/f4/acaefa44b83705a4fcadd68054280127c07cdb236a44a1c08b7c5adad40b/rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59b2093224a18c6508d95cfdeba8db9cbfd6f3494e94793b58972933fcee4c6d", size = 382182, upload-time = "2025-07-01T15:56:56.474Z" }, + { url = "https://files.pythonhosted.org/packages/e9/a2/d72ac03d37d33f6ff4713ca4c704da0c3b1b3a959f0bf5eb738c0ad94ea2/rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4f01a5d6444a3258b00dc07b6ea4733e26f8072b788bef750baa37b370266137", size = 397123, upload-time = "2025-07-01T15:56:58.272Z" }, + { url = "https://files.pythonhosted.org/packages/74/58/c053e9d1da1d3724434dd7a5f506623913e6404d396ff3cf636a910c0789/rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b6e2c12160c72aeda9d1283e612f68804621f448145a210f1bf1d79151c47090", size = 516285, upload-time = "2025-07-01T15:57:00.283Z" }, + { url = "https://files.pythonhosted.org/packages/94/41/c81e97ee88b38b6d1847c75f2274dee8d67cb8d5ed7ca8c6b80442dead75/rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cb28c1f569f8d33b2b5dcd05d0e6ef7005d8639c54c2f0be824f05aedf715255", size = 402182, upload-time = "2025-07-01T15:57:02.587Z" }, + { url = "https://files.pythonhosted.org/packages/74/74/38a176b34ce5197b4223e295f36350dd90713db13cf3c3b533e8e8f7484e/rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1766b5724c3f779317d5321664a343c07773c8c5fd1532e4039e6cc7d1a815be", size = 384436, upload-time = "2025-07-01T15:57:04.125Z" }, + { url = "https://files.pythonhosted.org/packages/e4/21/f40b9a5709d7078372c87fd11335469dc4405245528b60007cd4078ed57a/rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b6d9e5a2ed9c4988c8f9b28b3bc0e3e5b1aaa10c28d210a594ff3a8c02742daf", size = 417039, upload-time = "2025-07-01T15:57:05.608Z" }, + { url = "https://files.pythonhosted.org/packages/02/ee/ed835925731c7e87306faa80a3a5e17b4d0f532083155e7e00fe1cd4e242/rpds_py-0.26.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:b5f7a446ddaf6ca0fad9a5535b56fbfc29998bf0e0b450d174bbec0d600e1d72", size = 559111, upload-time = "2025-07-01T15:57:07.371Z" }, + { url = "https://files.pythonhosted.org/packages/ce/88/d6e9e686b8ffb6139b82eb1c319ef32ae99aeb21f7e4bf45bba44a760d09/rpds_py-0.26.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:eed5ac260dd545fbc20da5f4f15e7efe36a55e0e7cf706e4ec005b491a9546a0", size = 588609, upload-time = "2025-07-01T15:57:09.319Z" }, + { url = "https://files.pythonhosted.org/packages/e5/96/09bcab08fa12a69672716b7f86c672ee7f79c5319f1890c5a79dcb8e0df2/rpds_py-0.26.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:582462833ba7cee52e968b0341b85e392ae53d44c0f9af6a5927c80e539a8b67", size = 555212, upload-time = "2025-07-01T15:57:10.905Z" }, + { url = "https://files.pythonhosted.org/packages/2c/07/c554b6ed0064b6e0350a622714298e930b3cf5a3d445a2e25c412268abcf/rpds_py-0.26.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:69a607203441e07e9a8a529cff1d5b73f6a160f22db1097211e6212a68567d11", size = 232048, upload-time = "2025-07-01T15:57:12.473Z" }, +] + +[[package]] +name = "rsa" +version = "4.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyasn1" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/da/8a/22b7beea3ee0d44b1916c0c1cb0ee3af23b700b6da9f04991899d0c555d4/rsa-4.9.1.tar.gz", hash = "sha256:e7bdbfdb5497da4c07dfd35530e1a902659db6ff241e39d9953cad06ebd0ae75", size = 29034, upload-time = "2025-04-16T09:51:18.218Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/64/8d/0133e4eb4beed9e425d9a98ed6e081a55d195481b7632472be1af08d2f6b/rsa-4.9.1-py3-none-any.whl", hash = "sha256:68635866661c6836b8d39430f97a996acbd61bfa49406748ea243539fe239762", size = 34696, upload-time = "2025-04-16T09:51:17.142Z" }, +] + [[package]] name = "scikit-learn" version = "1.6.1" @@ -2465,7 +4590,8 @@ source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", ] dependencies = [ { name = "joblib", marker = "python_full_version < '3.10'" }, @@ -2511,13 +4637,20 @@ name = "scikit-learn" version = "1.7.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.12' and sys_platform == 'darwin'", - "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -2564,7 +4697,8 @@ source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", ] dependencies = [ { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, @@ -2602,7 +4736,8 @@ name = "scipy" version = "1.15.3" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -2663,10 +4798,16 @@ name = "scipy" version = "1.16.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.12' and sys_platform == 'darwin'", - "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -2713,6 +4854,32 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/eb/c4/231cac7a8385394ebbbb4f1ca662203e9d8c332825ab4f36ffc3ead09a42/scipy-1.16.0-cp313-cp313t-win_amd64.whl", hash = "sha256:f56296fefca67ba605fd74d12f7bd23636267731a72cb3947963e76b8c0a25db", size = 38515076, upload-time = "2025-06-22T16:21:45.694Z" }, ] +[[package]] +name = "seaborn" +version = "0.13.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "matplotlib", version = "3.9.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "matplotlib", version = "3.10.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "pandas" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/86/59/a451d7420a77ab0b98f7affa3a1d78a313d2f7281a57afb1a34bae8ab412/seaborn-0.13.2.tar.gz", hash = "sha256:93e60a40988f4d65e9f4885df477e2fdaff6b73a9ded434c1ab356dd57eefff7", size = 1457696, upload-time = "2024-01-25T13:21:52.551Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/83/11/00d3c3dfc25ad54e731d91449895a79e4bf2384dc3ac01809010ba88f6d5/seaborn-0.13.2-py3-none-any.whl", hash = "sha256:636f8336facf092165e27924f223d3c62ca560b1f2bb5dff7ab7fad265361987", size = 294914, upload-time = "2024-01-25T13:21:49.598Z" }, +] + +[[package]] +name = "send2trash" +version = "1.8.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fd/3a/aec9b02217bb79b87bbc1a21bc6abc51e3d5dcf65c30487ac96c0908c722/Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf", size = 17394, upload-time = "2024-04-07T00:01:09.267Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/b0/4562db6223154aa4e22f939003cb92514c79f3d4dccca3444253fd17f902/Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9", size = 18072, upload-time = "2024-04-07T00:01:07.438Z" }, +] + [[package]] name = "setuptools" version = "80.9.0" @@ -2731,6 +4898,36 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, ] +[[package]] +name = "smart-open" +version = "7.3.0.post1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wrapt" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/18/2b/5e7234c68ed5bc872ad6ae77b8a421c2ed70dcb1190b44dc1abdeed5e347/smart_open-7.3.0.post1.tar.gz", hash = "sha256:ce6a3d9bc1afbf6234ad13c010b77f8cd36d24636811e3c52c3b5160f5214d1e", size = 51557, upload-time = "2025-07-03T10:06:31.271Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/08/5b/a2a3d4514c64818925f4e886d39981f1926eeb5288a4549c6b3c17ed66bb/smart_open-7.3.0.post1-py3-none-any.whl", hash = "sha256:c73661a2c24bf045c1e04e08fffc585b59af023fe783d57896f590489db66fb4", size = 61946, upload-time = "2025-07-03T10:06:29.599Z" }, +] + +[[package]] +name = "sniffio" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372, upload-time = "2024-02-25T23:20:04.057Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235, upload-time = "2024-02-25T23:20:01.196Z" }, +] + +[[package]] +name = "soupsieve" +version = "2.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3f/f4/4a80cd6ef364b2e8b65b15816a843c0980f7a5a2b4dc701fc574952aa19f/soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a", size = 103418, upload-time = "2025-04-20T18:50:08.518Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677, upload-time = "2025-04-20T18:50:07.196Z" }, +] + [[package]] name = "stack-data" version = "0.6.3" @@ -2745,6 +4942,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521, upload-time = "2023-09-30T13:58:03.53Z" }, ] +[[package]] +name = "starlette" +version = "0.47.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0a/69/662169fdb92fb96ec3eaee218cf540a629d629c86d7993d9651226a6789b/starlette-0.47.1.tar.gz", hash = "sha256:aef012dd2b6be325ffa16698f9dc533614fb1cebd593a906b90dc1025529a79b", size = 2583072, upload-time = "2025-06-21T04:03:17.337Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/82/95/38ef0cd7fa11eaba6a99b3c4f5ac948d8bc6ff199aabd327a29cc000840c/starlette-0.47.1-py3-none-any.whl", hash = "sha256:5e11c9f5c7c3f24959edbf2dffdc01bba860228acf657129467d8a7468591527", size = 72747, upload-time = "2025-06-21T04:03:15.705Z" }, +] + [[package]] name = "sympy" version = "1.14.0" @@ -2764,7 +4974,8 @@ source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", ] dependencies = [ { name = "blosc2", version = "2.5.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, @@ -2798,7 +5009,8 @@ name = "tables" version = "3.10.1" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -2838,10 +5050,16 @@ name = "tables" version = "3.10.2" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.12' and sys_platform == 'darwin'", - "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", ] @@ -2872,6 +5090,36 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/63/ca/eaa029a43d269bdda6985931d6cfd479e876cd8cf7c887d818bef05ef03b/tables-3.10.2-cp313-cp313-win_amd64.whl", hash = "sha256:5637fdcded5ba5426aa24e0e42d6f990926a4da7f193830df131dfcb7e842900", size = 6385562, upload-time = "2025-01-04T20:44:08.196Z" }, ] +[[package]] +name = "tensorboardx" +version = "2.6.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "packaging" }, + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2b/c5/d4cc6e293fb837aaf9f76dd7745476aeba8ef7ef5146c3b3f9ee375fe7a5/tensorboardx-2.6.4.tar.gz", hash = "sha256:b163ccb7798b31100b9f5fa4d6bc22dad362d7065c2f24b51e50731adde86828", size = 4769801, upload-time = "2025-06-10T22:37:07.419Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e0/1d/b5d63f1a6b824282b57f7b581810d20b7a28ca951f2d5b59f1eb0782c12b/tensorboardx-2.6.4-py3-none-any.whl", hash = "sha256:5970cf3a1f0a6a6e8b180ccf46f3fe832b8a25a70b86e5a237048a7c0beb18e2", size = 87201, upload-time = "2025-06-10T22:37:05.44Z" }, +] + +[[package]] +name = "terminado" +version = "0.18.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ptyprocess", marker = "os_name != 'nt'" }, + { name = "pywinpty", marker = "(python_full_version < '3.10' and os_name == 'nt' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (os_name == 'nt' and platform_machine != 'aarch64' and sys_platform == 'linux') or (os_name == 'nt' and sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "tornado" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8a/11/965c6fd8e5cc254f1fe142d547387da17a8ebfd75a3455f637c663fb38a0/terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e", size = 32701, upload-time = "2024-03-12T14:34:39.026Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/9e/2064975477fdc887e47ad42157e214526dcad8f317a948dee17e1659a62f/terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0", size = 14154, upload-time = "2024-03-12T14:34:36.569Z" }, +] + [[package]] name = "threadpoolctl" version = "3.6.0" @@ -2881,26 +5129,78 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl", hash = "sha256:43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb", size = 18638, upload-time = "2025-03-13T13:49:21.846Z" }, ] +[[package]] +name = "tinycss2" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "webencodings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7a/fd/7a5ee21fd08ff70d3d33a5781c255cbe779659bd03278feb98b19ee550f4/tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7", size = 87085, upload-time = "2024-10-24T14:58:29.895Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289", size = 26610, upload-time = "2024-10-24T14:58:28.029Z" }, +] + +[[package]] +name = "tomli" +version = "2.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff", size = 17175, upload-time = "2024-11-27T22:38:36.873Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/ca/75707e6efa2b37c77dadb324ae7d9571cb424e61ea73fad7c56c2d14527f/tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249", size = 131077, upload-time = "2024-11-27T22:37:54.956Z" }, + { url = "https://files.pythonhosted.org/packages/c7/16/51ae563a8615d472fdbffc43a3f3d46588c264ac4f024f63f01283becfbb/tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6", size = 123429, upload-time = "2024-11-27T22:37:56.698Z" }, + { url = "https://files.pythonhosted.org/packages/f1/dd/4f6cd1e7b160041db83c694abc78e100473c15d54620083dbd5aae7b990e/tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a", size = 226067, upload-time = "2024-11-27T22:37:57.63Z" }, + { url = "https://files.pythonhosted.org/packages/a9/6b/c54ede5dc70d648cc6361eaf429304b02f2871a345bbdd51e993d6cdf550/tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee", size = 236030, upload-time = "2024-11-27T22:37:59.344Z" }, + { url = "https://files.pythonhosted.org/packages/1f/47/999514fa49cfaf7a92c805a86c3c43f4215621855d151b61c602abb38091/tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e", size = 240898, upload-time = "2024-11-27T22:38:00.429Z" }, + { url = "https://files.pythonhosted.org/packages/73/41/0a01279a7ae09ee1573b423318e7934674ce06eb33f50936655071d81a24/tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4", size = 229894, upload-time = "2024-11-27T22:38:02.094Z" }, + { url = "https://files.pythonhosted.org/packages/55/18/5d8bc5b0a0362311ce4d18830a5d28943667599a60d20118074ea1b01bb7/tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106", size = 245319, upload-time = "2024-11-27T22:38:03.206Z" }, + { url = "https://files.pythonhosted.org/packages/92/a3/7ade0576d17f3cdf5ff44d61390d4b3febb8a9fc2b480c75c47ea048c646/tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8", size = 238273, upload-time = "2024-11-27T22:38:04.217Z" }, + { url = "https://files.pythonhosted.org/packages/72/6f/fa64ef058ac1446a1e51110c375339b3ec6be245af9d14c87c4a6412dd32/tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff", size = 98310, upload-time = "2024-11-27T22:38:05.908Z" }, + { url = "https://files.pythonhosted.org/packages/6a/1c/4a2dcde4a51b81be3530565e92eda625d94dafb46dbeb15069df4caffc34/tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b", size = 108309, upload-time = "2024-11-27T22:38:06.812Z" }, + { url = "https://files.pythonhosted.org/packages/52/e1/f8af4c2fcde17500422858155aeb0d7e93477a0d59a98e56cbfe75070fd0/tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea", size = 132762, upload-time = "2024-11-27T22:38:07.731Z" }, + { url = "https://files.pythonhosted.org/packages/03/b8/152c68bb84fc00396b83e7bbddd5ec0bd3dd409db4195e2a9b3e398ad2e3/tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8", size = 123453, upload-time = "2024-11-27T22:38:09.384Z" }, + { url = "https://files.pythonhosted.org/packages/c8/d6/fc9267af9166f79ac528ff7e8c55c8181ded34eb4b0e93daa767b8841573/tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192", size = 233486, upload-time = "2024-11-27T22:38:10.329Z" }, + { url = "https://files.pythonhosted.org/packages/5c/51/51c3f2884d7bab89af25f678447ea7d297b53b5a3b5730a7cb2ef6069f07/tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222", size = 242349, upload-time = "2024-11-27T22:38:11.443Z" }, + { url = "https://files.pythonhosted.org/packages/ab/df/bfa89627d13a5cc22402e441e8a931ef2108403db390ff3345c05253935e/tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77", size = 252159, upload-time = "2024-11-27T22:38:13.099Z" }, + { url = "https://files.pythonhosted.org/packages/9e/6e/fa2b916dced65763a5168c6ccb91066f7639bdc88b48adda990db10c8c0b/tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6", size = 237243, upload-time = "2024-11-27T22:38:14.766Z" }, + { url = "https://files.pythonhosted.org/packages/b4/04/885d3b1f650e1153cbb93a6a9782c58a972b94ea4483ae4ac5cedd5e4a09/tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd", size = 259645, upload-time = "2024-11-27T22:38:15.843Z" }, + { url = "https://files.pythonhosted.org/packages/9c/de/6b432d66e986e501586da298e28ebeefd3edc2c780f3ad73d22566034239/tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e", size = 244584, upload-time = "2024-11-27T22:38:17.645Z" }, + { url = "https://files.pythonhosted.org/packages/1c/9a/47c0449b98e6e7d1be6cbac02f93dd79003234ddc4aaab6ba07a9a7482e2/tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98", size = 98875, upload-time = "2024-11-27T22:38:19.159Z" }, + { url = "https://files.pythonhosted.org/packages/ef/60/9b9638f081c6f1261e2688bd487625cd1e660d0a85bd469e91d8db969734/tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4", size = 109418, upload-time = "2024-11-27T22:38:20.064Z" }, + { url = "https://files.pythonhosted.org/packages/04/90/2ee5f2e0362cb8a0b6499dc44f4d7d48f8fff06d28ba46e6f1eaa61a1388/tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7", size = 132708, upload-time = "2024-11-27T22:38:21.659Z" }, + { url = "https://files.pythonhosted.org/packages/c0/ec/46b4108816de6b385141f082ba99e315501ccd0a2ea23db4a100dd3990ea/tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c", size = 123582, upload-time = "2024-11-27T22:38:22.693Z" }, + { url = "https://files.pythonhosted.org/packages/a0/bd/b470466d0137b37b68d24556c38a0cc819e8febe392d5b199dcd7f578365/tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13", size = 232543, upload-time = "2024-11-27T22:38:24.367Z" }, + { url = "https://files.pythonhosted.org/packages/d9/e5/82e80ff3b751373f7cead2815bcbe2d51c895b3c990686741a8e56ec42ab/tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281", size = 241691, upload-time = "2024-11-27T22:38:26.081Z" }, + { url = "https://files.pythonhosted.org/packages/05/7e/2a110bc2713557d6a1bfb06af23dd01e7dde52b6ee7dadc589868f9abfac/tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272", size = 251170, upload-time = "2024-11-27T22:38:27.921Z" }, + { url = "https://files.pythonhosted.org/packages/64/7b/22d713946efe00e0adbcdfd6d1aa119ae03fd0b60ebed51ebb3fa9f5a2e5/tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140", size = 236530, upload-time = "2024-11-27T22:38:29.591Z" }, + { url = "https://files.pythonhosted.org/packages/38/31/3a76f67da4b0cf37b742ca76beaf819dca0ebef26d78fc794a576e08accf/tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2", size = 258666, upload-time = "2024-11-27T22:38:30.639Z" }, + { url = "https://files.pythonhosted.org/packages/07/10/5af1293da642aded87e8a988753945d0cf7e00a9452d3911dd3bb354c9e2/tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744", size = 243954, upload-time = "2024-11-27T22:38:31.702Z" }, + { url = "https://files.pythonhosted.org/packages/5b/b9/1ed31d167be802da0fc95020d04cd27b7d7065cc6fbefdd2f9186f60d7bd/tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec", size = 98724, upload-time = "2024-11-27T22:38:32.837Z" }, + { url = "https://files.pythonhosted.org/packages/c7/32/b0963458706accd9afcfeb867c0f9175a741bf7b19cd424230714d722198/tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69", size = 109383, upload-time = "2024-11-27T22:38:34.455Z" }, + { url = "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", size = 14257, upload-time = "2024-11-27T22:38:35.385Z" }, +] + [[package]] name = "torch" version = "2.7.1" source = { registry = "https://download.pytorch.org/whl/cpu" } resolution-markers = [ - "python_full_version >= '3.12' and sys_platform == 'darwin'", - "python_full_version == '3.11.*' and sys_platform == 'darwin'", - "python_full_version == '3.10.*' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", ] dependencies = [ - { name = "filelock", marker = "(python_full_version >= '3.10' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, - { name = "fsspec", marker = "(python_full_version >= '3.10' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, - { name = "jinja2", marker = "(python_full_version >= '3.10' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, + { name = "filelock", marker = "(python_full_version >= '3.10' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, + { name = "fsspec", marker = "(python_full_version >= '3.10' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, + { name = "jinja2", marker = "(python_full_version >= '3.10' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, { name = "networkx", version = "3.2.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'" }, - { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*' and sys_platform == 'darwin'" }, - { name = "networkx", version = "3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform == 'darwin'" }, - { name = "setuptools", marker = "python_full_version >= '3.12' and sys_platform == 'darwin'" }, - { name = "sympy", marker = "(python_full_version >= '3.10' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, - { name = "typing-extensions", marker = "(python_full_version >= '3.10' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, + { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'" }, + { name = "networkx", version = "3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and platform_machine != 'x86_64' and sys_platform == 'darwin'" }, + { name = "setuptools", marker = "python_full_version >= '3.12' and platform_machine != 'x86_64' and sys_platform == 'darwin'" }, + { name = "sympy", marker = "(python_full_version >= '3.10' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, + { name = "typing-extensions", marker = "(python_full_version >= '3.10' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, ] wheels = [ { url = "https://download.pytorch.org/whl/cpu/torch-2.7.1-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:f8c3bee261b0c8e090f6347490dc6ee2aebfd661eb0f3f6aeae06d992d8ed56f" }, @@ -2916,25 +5216,32 @@ name = "torch" version = "2.7.1+cpu" source = { registry = "https://download.pytorch.org/whl/cpu" } resolution-markers = [ - "python_full_version >= '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.12' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", ] dependencies = [ - { name = "filelock", marker = "(python_full_version < '3.10' and platform_machine != 'arm64') or sys_platform != 'darwin'" }, - { name = "fsspec", marker = "(python_full_version < '3.10' and platform_machine != 'arm64') or sys_platform != 'darwin'" }, - { name = "jinja2", marker = "(python_full_version < '3.10' and platform_machine != 'arm64') or sys_platform != 'darwin'" }, + { name = "filelock", marker = "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64') or platform_machine == 'x86_64' or sys_platform != 'darwin'" }, + { name = "fsspec", marker = "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64') or platform_machine == 'x86_64' or sys_platform != 'darwin'" }, + { name = "jinja2", marker = "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64') or platform_machine == 'x86_64' or sys_platform != 'darwin'" }, { name = "networkx", version = "3.2.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.10' and platform_machine != 'arm64') or (python_full_version < '3.10' and sys_platform != 'darwin')" }, - { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*' and sys_platform != 'darwin'" }, - { name = "networkx", version = "3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and sys_platform != 'darwin'" }, - { name = "setuptools", marker = "python_full_version >= '3.12' and sys_platform != 'darwin'" }, - { name = "sympy", marker = "(python_full_version < '3.10' and platform_machine != 'arm64') or sys_platform != 'darwin'" }, - { name = "typing-extensions", marker = "(python_full_version < '3.10' and platform_machine != 'arm64') or sys_platform != 'darwin'" }, + { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version == '3.10.*' and platform_machine == 'x86_64') or (python_full_version == '3.10.*' and sys_platform != 'darwin')" }, + { name = "networkx", version = "3.5", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and platform_machine == 'x86_64') or (python_full_version >= '3.11' and sys_platform != 'darwin')" }, + { name = "setuptools", marker = "(python_full_version >= '3.12' and platform_machine == 'x86_64') or (python_full_version >= '3.12' and sys_platform != 'darwin')" }, + { name = "sympy", marker = "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64') or platform_machine == 'x86_64' or sys_platform != 'darwin'" }, + { name = "typing-extensions", marker = "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64') or platform_machine == 'x86_64' or sys_platform != 'darwin'" }, ] wheels = [ { url = "https://download.pytorch.org/whl/cpu/torch-2.7.1%2Bcpu-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:c0df17cee97653d09a4e84488a33d21217f9b24208583c55cf28f0045aab0766" }, @@ -2957,6 +5264,136 @@ wheels = [ { url = "https://download.pytorch.org/whl/cpu/torch-2.7.1%2Bcpu-cp39-cp39-win_amd64.whl", hash = "sha256:d25435bdc4780d3cb512aad55142aca9584ae1fe8f8691cda6d32f19faf5d58e" }, ] +[[package]] +name = "torchaudio" +version = "2.7.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "torch", version = "2.7.1", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version >= '3.10' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, + { name = "torch", version = "2.7.1+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64') or platform_machine == 'x86_64' or sys_platform != 'darwin'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/71/bfc6d2b28ede6c4c5446901cfa4d98fa25b2606eb12e641baccec16fcde0/torchaudio-2.7.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4739af57d0eb94347d1c6a1b5668be78a7383afe826dde18a04883b9f9f263b1", size = 1842457, upload-time = "2025-06-04T17:44:12.073Z" }, + { url = "https://files.pythonhosted.org/packages/e6/8c/35eea5138ccd4abf38b163743d5ab4a8b25349bafa8bdf3d629e7f3036b9/torchaudio-2.7.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:c089dbfc14c5f47091b7bf3f6bf2bbac93b86619299d04d9c102f4ad53758990", size = 1680682, upload-time = "2025-06-04T17:44:11.056Z" }, + { url = "https://files.pythonhosted.org/packages/7d/dc/7569889c1fc95ebf18b0295bc4fdebafbbb89ba9e0018c7e9b0844bae011/torchaudio-2.7.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:6bb1e6db22fa2aad6b89b2a455ec5c6dc31df2635dbfafa213394f8b07b09516", size = 3498891, upload-time = "2025-06-04T17:43:52.161Z" }, + { url = "https://files.pythonhosted.org/packages/b3/e0/ff0ac4234798a0b6b1398fa878a2e7d22f1d06d4327feb312d9e77e079bd/torchaudio-2.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:2ba4df6e3ad35cb1e5bd162cf86b492526138f6476f5a06b10725b8880c618eb", size = 2483343, upload-time = "2025-06-04T17:43:57.779Z" }, + { url = "https://files.pythonhosted.org/packages/85/a2/52e6760d352584ae1ab139d97647bdc51d1eb7d480b688fe69c72616c956/torchaudio-2.7.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d5a62f88c629035913f506df03f710c48fc8bb9637191933f27c67088d5ca136", size = 1849254, upload-time = "2025-06-04T17:44:05.392Z" }, + { url = "https://files.pythonhosted.org/packages/df/e6/0f3835895f9d0b8900ca4a7196932b13b74156ad9ffb76e7aacfc5bb4157/torchaudio-2.7.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:53bc4ba12e7468be34a7ca2ee837ee5c8bd5755b25c12f665af9339cae37e265", size = 1686156, upload-time = "2025-06-04T17:44:09.39Z" }, + { url = "https://files.pythonhosted.org/packages/0d/c5/8ba8869ac5607bbd83ea864bda2c628f8b7b55a9200f8147687995e95a49/torchaudio-2.7.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:f8bd69354a397753b9dea9699d9e1251f8496fbbdf3028c7086a57a615bf33c3", size = 3508053, upload-time = "2025-06-04T17:43:49.398Z" }, + { url = "https://files.pythonhosted.org/packages/78/cc/11709b2cbf841eda124918523088d9aaa1509ae4400f346192037e6de6c6/torchaudio-2.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:0ae0678ad27355eebea5a9fdd9ae9bfec444f8405f9b6c60026905ba3665c43a", size = 2488974, upload-time = "2025-06-04T17:44:04.294Z" }, + { url = "https://files.pythonhosted.org/packages/0b/d1/eb8bc3b3502dddb1b789567b7b19668b1d32817266887b9f381494cfe463/torchaudio-2.7.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9306dcfc4586cebd7647a93fe9a448e791c4f83934da616b9433b75597a1f978", size = 1846897, upload-time = "2025-06-04T17:44:07.79Z" }, + { url = "https://files.pythonhosted.org/packages/62/7d/6c15f15d3edc5271abc808f70713644b50f0f7bfb85a09dba8b5735fbad3/torchaudio-2.7.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:d66bd76b226fdd4135c97650e1b7eb63fb7659b4ed0e3a778898e41dbba21b61", size = 1686680, upload-time = "2025-06-04T17:43:58.986Z" }, + { url = "https://files.pythonhosted.org/packages/48/65/0f46ba74cdc67ea9a8c37c8acfb5194d81639e481e85903c076bcd97188c/torchaudio-2.7.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:9cbcdaab77ad9a73711acffee58f4eebc8a0685289a938a3fa6f660af9489aee", size = 3506966, upload-time = "2025-06-04T17:44:06.537Z" }, + { url = "https://files.pythonhosted.org/packages/52/29/06f887baf22cbba85ae331b71b110b115bf11b3968f5914a50c17dde5ab7/torchaudio-2.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:9cfb8f6ace8e01e2b89de74eb893ba5ce936b88b415383605b0a4d974009dec7", size = 2484265, upload-time = "2025-06-04T17:44:00.277Z" }, + { url = "https://files.pythonhosted.org/packages/b6/ee/6e308868b9467e1b51da9d781cb73dd5aadca7c8b6256f88ce5d18a7fb77/torchaudio-2.7.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e5f0599a507f4683546878ed9667e1b32d7ca3c8a957e4c15c6b302378ef4dee", size = 1847208, upload-time = "2025-06-04T17:44:01.365Z" }, + { url = "https://files.pythonhosted.org/packages/3a/f9/ca0e0960526e6deaa476d168b877480a3fbae5d44668a54de963a9800097/torchaudio-2.7.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:271f717844e5c7f9e05c8328de817bf90f46d83281c791e94f54d4edea2f5817", size = 1686311, upload-time = "2025-06-04T17:44:02.785Z" }, + { url = "https://files.pythonhosted.org/packages/bb/ab/83f282ca5475ae34c58520a4a97b6d69438bc699d70d16432deb19791cda/torchaudio-2.7.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:1862b063d8d4e55cb4862bcbd63568545f549825a3c5605bd312224c3ebb1919", size = 3507174, upload-time = "2025-06-04T17:43:46.526Z" }, + { url = "https://files.pythonhosted.org/packages/12/91/dbd17a6eda4b0504d9b4f1f721a1654456e39f7178b8462344f942100865/torchaudio-2.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:edb4deaa6f95acd5522912ed643303d0b86d79a6f15914362f5a5d49baaf5d13", size = 2484503, upload-time = "2025-06-04T17:43:48.169Z" }, + { url = "https://files.pythonhosted.org/packages/73/5e/da52d2fa9f7cc89512b63dd8a88fb3e097a89815f440cc16159b216ec611/torchaudio-2.7.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:18560955b8beb2a8d39a6bfae20a442337afcefb3dfd4ee007ce82233a796799", size = 1929983, upload-time = "2025-06-04T17:43:56.659Z" }, + { url = "https://files.pythonhosted.org/packages/f7/16/9d03dc62613f276f9666eb0609164287df23986b67d20b53e78d21a3d8d8/torchaudio-2.7.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:1850475ef9101ea0b3593fe93ff6ee4e7a20598f6da6510761220b9fe56eb7fa", size = 1700436, upload-time = "2025-06-04T17:43:55.589Z" }, + { url = "https://files.pythonhosted.org/packages/83/45/57a437fe41b302fc79b4eb78fdb3e480ff42c66270e7505eedf0b000969c/torchaudio-2.7.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:98257fc14dd493ba5a3258fb6d61d27cd64a48ee79537c3964c4da26b9bf295f", size = 3521631, upload-time = "2025-06-04T17:43:50.628Z" }, + { url = "https://files.pythonhosted.org/packages/91/5e/9262a7e41e47bc87eb245c4fc485eb26ff41a05886b241c003440c9e0107/torchaudio-2.7.1-cp313-cp313t-win_amd64.whl", hash = "sha256:c802e0dcbf38669007327bb52f065573cc5cac106eaca987f6e1a32e6282263a", size = 2534956, upload-time = "2025-06-04T17:43:42.324Z" }, + { url = "https://files.pythonhosted.org/packages/3b/67/82ee183a867d5138b594a5c07be403d8efd0e010b3ea8a7e135058e965cd/torchaudio-2.7.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a07100fe2cf7af4fa69d8cb046a2b74046612621a1a548afa5af1c69e02eaf81", size = 1843193, upload-time = "2025-06-04T17:43:54.418Z" }, + { url = "https://files.pythonhosted.org/packages/a5/57/6f7c8b9c00970248498152549f004587db0a83e6caad0025c9723994ffc9/torchaudio-2.7.1-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:e8b2da11a7f7782b00b823c99e812eb00ee8b3455ad474f8fd42a0da0bc4f46a", size = 1681224, upload-time = "2025-06-04T17:43:53.36Z" }, + { url = "https://files.pythonhosted.org/packages/37/7b/0bf5da00d883b241bd4986e2d26dc1aabd16cc860c4c5d4bc9237e6350c3/torchaudio-2.7.1-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:9ce8aed225d5ce65705d30f6ef8e457d329fe6ea0b8729ad953ba99e87da264e", size = 3502377, upload-time = "2025-06-04T17:43:44.992Z" }, + { url = "https://files.pythonhosted.org/packages/26/99/00764e98c82d0b48a1e1fd059a0f10cf1bec741013a7e9c05077bd1fd481/torchaudio-2.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:30e21f043f5cc50f703c2cf0de75633e2c720227f9bf848ffc9b8b987871b3fc", size = 2477692, upload-time = "2025-06-04T17:43:43.799Z" }, +] + +[[package]] +name = "torchmetrics" +version = "1.7.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "lightning-utilities" }, + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "packaging" }, + { name = "torch", version = "2.7.1", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version >= '3.10' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, + { name = "torch", version = "2.7.1+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64') or platform_machine == 'x86_64' or sys_platform != 'darwin'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/96/80/bcf680d3d7de7646707884ed7ce0859c83be33380239971a97255147184f/torchmetrics-1.7.4.tar.gz", hash = "sha256:506a1a5c7c304cd77ba323ca4b009e46b814fd2be9dcf0f4ccc2e5c0f5b4b0c1", size = 567802, upload-time = "2025-07-05T12:28:42.02Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/70/19/2d8db70030d3472dad5d49136770af949f5ed597df2c1a6a509dadc5d57d/torchmetrics-1.7.4-py3-none-any.whl", hash = "sha256:9298ad0e893b0cf2956bee95b0f7eecdc65205ab84ddb4f6762eff157c240518", size = 963504, upload-time = "2025-07-05T12:28:39.827Z" }, +] + +[[package]] +name = "torchvision" +version = "0.22.1" +source = { registry = "https://download.pytorch.org/whl/cpu" } +resolution-markers = [ + "python_full_version >= '3.13' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.11.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", + "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", +] +dependencies = [ + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux')" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version == '3.10.*' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux')" }, + { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version >= '3.11' and platform_machine == 'aarch64' and sys_platform == 'linux')" }, + { name = "pillow", marker = "(python_full_version >= '3.10' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin') or (platform_machine == 'aarch64' and sys_platform == 'linux')" }, + { name = "torch", version = "2.7.1", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version >= '3.10' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (platform_machine == 'arm64' and sys_platform == 'darwin')" }, + { name = "torch", version = "2.7.1+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "platform_machine == 'aarch64' and sys_platform == 'linux'" }, +] +wheels = [ + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3b47d8369ee568c067795c0da0b4078f39a9dfea6f3bc1f3ac87530dfda1dd56" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:990de4d657a41ed71680cd8be2e98ebcab55371f30993dc9bd2e676441f7180e" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4addf626e2b57fc22fd6d329cf1346d474497672e6af8383b7b5b636fba94a53" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:8b4a53a6067d63adba0c52f2b8dd2290db649d642021674ee43c0c922f0c6a69" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:153f1790e505bd6da123e21eee6e83e2e155df05c0fe7d56347303067d8543c5" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:964414eef19459d55a10e886e2fca50677550e243586d1678f65e3f6f6bac47a" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9c3ae3319624c43cc8127020f46c14aa878406781f0899bb6283ae474afeafbf" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:4a614a6a408d2ed74208d0ea6c28a2fbb68290e9a7df206c5fef3f0b6865d307" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:043d9e35ed69c2e586aff6eb9e2887382e7863707115668ac9d140da58f42cba" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:27142bcc8a984227a6dcf560985e83f52b82a7d3f5fe9051af586a2ccc46ef26" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8be941b4d35c0aba819be70fdbbbed8ceb60401ce6996b8cfaaba1300ce62263" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:154a2bdc37a16122c2024f2f77e65f5986020b40c013515c694b5d357fac99a1" }, +] + +[[package]] +name = "torchvision" +version = "0.22.1+cpu" +source = { registry = "https://download.pytorch.org/whl/cpu" } +resolution-markers = [ + "python_full_version >= '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version == '3.12.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.12.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version < '3.10' and platform_machine == 'x86_64' and sys_platform == 'darwin'", + "(python_full_version < '3.10' and platform_machine != 'arm64' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version == '3.10.*' and platform_machine == 'x86_64' and sys_platform == 'darwin') or (python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "numpy", version = "2.3.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and platform_machine == 'x86_64' and sys_platform == 'darwin') or (python_full_version >= '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.11' and sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "pillow", marker = "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (platform_machine == 'x86_64' and sys_platform == 'darwin') or (platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "torch", version = "2.7.1+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (platform_machine == 'x86_64' and sys_platform == 'darwin') or (platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" }, +] +wheels = [ + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1%2Bcpu-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:e31f1273a8dd9760906288036ac3c8f5fef25eed393da0491db150d7be78910d" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1%2Bcpu-cp310-cp310-win_amd64.whl", hash = "sha256:445e442b94c365f7fd96596347c8a5a7fcfcbfca17a23baa8c9dcc8cb00fceee" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1%2Bcpu-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:4e0cbc165a472605d0c13da68ae22e84b17a6b815d5e600834777823e1bcb658" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1%2Bcpu-cp311-cp311-win_amd64.whl", hash = "sha256:9482adee074f60a45fd69892f7488281aadfda7836948c94b0a9b0caf55d1d67" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1%2Bcpu-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b5fa7044bd82c6358e8229351c98070cf3a7bf4a6e89ea46352ae6c65745ef94" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1%2Bcpu-cp312-cp312-win_amd64.whl", hash = "sha256:433cb4dbced7291f17064cea08ac1e5aebd02ec190e1c207d117ad62a8961f2b" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1%2Bcpu-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:a93c21f18c33a819616b3dda7655aa4de40b219682c654175b6bbeb65ecc2e5f" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1%2Bcpu-cp313-cp313-win_amd64.whl", hash = "sha256:34c914ad4728b81848ac802c5fc5eeb8de8ff4058cc59c1463a74ce4f4fbf0d8" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1%2Bcpu-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:ab7ae82529887c704c1b5d1d5198f65dc777d04fc3858b374503a6deedb82b19" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1%2Bcpu-cp313-cp313t-win_amd64.whl", hash = "sha256:b2d1c4bdbfd8e6c779dc810a6171b56224f1332fc46986810d4081bed1633804" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1%2Bcpu-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:c852e61bc903351169017e2e96389f28f6cfb52ca7c3945acceb31e7fe1b21e6" }, + { url = "https://download.pytorch.org/whl/cpu/torchvision-0.22.1%2Bcpu-cp39-cp39-win_amd64.whl", hash = "sha256:99788dd0d97ac8cdf25c74481e869e298626ffd8d6532defff6711f60516c88a" }, +] + [[package]] name = "tornado" version = "6.5.1" @@ -2997,6 +5434,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359, upload-time = "2024-04-19T11:11:46.763Z" }, ] +[[package]] +name = "types-python-dateutil" +version = "2.9.0.20250708" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c9/95/6bdde7607da2e1e99ec1c1672a759d42f26644bbacf939916e086db34870/types_python_dateutil-2.9.0.20250708.tar.gz", hash = "sha256:ccdbd75dab2d6c9696c350579f34cffe2c281e4c5f27a585b2a2438dd1d5c8ab", size = 15834, upload-time = "2025-07-08T03:14:03.382Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/72/52/43e70a8e57fefb172c22a21000b03ebcc15e47e97f5cb8495b9c2832efb4/types_python_dateutil-2.9.0.20250708-py3-none-any.whl", hash = "sha256:4d6d0cc1cc4d24a2dc3816024e502564094497b713f7befda4d5bc7a8e3fd21f", size = 17724, upload-time = "2025-07-08T03:14:02.593Z" }, +] + [[package]] name = "typing-extensions" version = "4.14.1" @@ -3006,6 +5452,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b5/00/d631e67a838026495268c2f6884f3711a15a9a2a96cd244fdaea53b823fb/typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76", size = 43906, upload-time = "2025-07-04T13:28:32.743Z" }, ] +[[package]] +name = "typing-inspection" +version = "0.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726, upload-time = "2025-05-21T18:55:23.885Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552, upload-time = "2025-05-21T18:55:22.152Z" }, +] + [[package]] name = "tzdata" version = "2025.2" @@ -3015,6 +5473,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839, upload-time = "2025-03-23T13:54:41.845Z" }, ] +[[package]] +name = "uri-template" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/31/c7/0336f2bd0bcbada6ccef7aaa25e443c118a704f828a0620c6fa0207c1b64/uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7", size = 21678, upload-time = "2023-06-21T01:49:05.374Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363", size = 11140, upload-time = "2023-06-21T01:49:03.467Z" }, +] + [[package]] name = "urllib3" version = "2.5.0" @@ -3024,6 +5491,200 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795, upload-time = "2025-06-18T14:07:40.39Z" }, ] +[[package]] +name = "uvicorn" +version = "0.35.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click", version = "8.1.8", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "click", version = "8.2.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "h11" }, + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5e/42/e0e305207bb88c6b8d3061399c6a961ffe5fbb7e2aa63c9234df7259e9cd/uvicorn-0.35.0.tar.gz", hash = "sha256:bc662f087f7cf2ce11a1d7fd70b90c9f98ef2e2831556dd078d131b96cc94a01", size = 78473, upload-time = "2025-06-28T16:15:46.058Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d2/e2/dc81b1bd1dcfe91735810265e9d26bc8ec5da45b4c0f6237e286819194c3/uvicorn-0.35.0-py3-none-any.whl", hash = "sha256:197535216b25ff9b785e29a0b79199f55222193d47f820816e7da751e9bc8d4a", size = 66406, upload-time = "2025-06-28T16:15:44.816Z" }, +] + +[package.optional-dependencies] +standard = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "httptools" }, + { name = "python-dotenv" }, + { name = "pyyaml" }, + { name = "uvloop", marker = "platform_python_implementation != 'PyPy' and sys_platform != 'cygwin' and sys_platform != 'win32'" }, + { name = "watchfiles" }, + { name = "websockets" }, +] + +[[package]] +name = "uvloop" +version = "0.21.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/af/c0/854216d09d33c543f12a44b393c402e89a920b1a0a7dc634c42de91b9cf6/uvloop-0.21.0.tar.gz", hash = "sha256:3bf12b0fda68447806a7ad847bfa591613177275d35b6724b1ee573faa3704e3", size = 2492741, upload-time = "2024-10-14T23:38:35.489Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3d/76/44a55515e8c9505aa1420aebacf4dd82552e5e15691654894e90d0bd051a/uvloop-0.21.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ec7e6b09a6fdded42403182ab6b832b71f4edaf7f37a9a0e371a01db5f0cb45f", size = 1442019, upload-time = "2024-10-14T23:37:20.068Z" }, + { url = "https://files.pythonhosted.org/packages/35/5a/62d5800358a78cc25c8a6c72ef8b10851bdb8cca22e14d9c74167b7f86da/uvloop-0.21.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:196274f2adb9689a289ad7d65700d37df0c0930fd8e4e743fa4834e850d7719d", size = 801898, upload-time = "2024-10-14T23:37:22.663Z" }, + { url = "https://files.pythonhosted.org/packages/f3/96/63695e0ebd7da6c741ccd4489b5947394435e198a1382349c17b1146bb97/uvloop-0.21.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f38b2e090258d051d68a5b14d1da7203a3c3677321cf32a95a6f4db4dd8b6f26", size = 3827735, upload-time = "2024-10-14T23:37:25.129Z" }, + { url = "https://files.pythonhosted.org/packages/61/e0/f0f8ec84979068ffae132c58c79af1de9cceeb664076beea86d941af1a30/uvloop-0.21.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87c43e0f13022b998eb9b973b5e97200c8b90823454d4bc06ab33829e09fb9bb", size = 3825126, upload-time = "2024-10-14T23:37:27.59Z" }, + { url = "https://files.pythonhosted.org/packages/bf/fe/5e94a977d058a54a19df95f12f7161ab6e323ad49f4dabc28822eb2df7ea/uvloop-0.21.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:10d66943def5fcb6e7b37310eb6b5639fd2ccbc38df1177262b0640c3ca68c1f", size = 3705789, upload-time = "2024-10-14T23:37:29.385Z" }, + { url = "https://files.pythonhosted.org/packages/26/dd/c7179618e46092a77e036650c1f056041a028a35c4d76945089fcfc38af8/uvloop-0.21.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:67dd654b8ca23aed0a8e99010b4c34aca62f4b7fce88f39d452ed7622c94845c", size = 3800523, upload-time = "2024-10-14T23:37:32.048Z" }, + { url = "https://files.pythonhosted.org/packages/57/a7/4cf0334105c1160dd6819f3297f8700fda7fc30ab4f61fbf3e725acbc7cc/uvloop-0.21.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c0f3fa6200b3108919f8bdabb9a7f87f20e7097ea3c543754cabc7d717d95cf8", size = 1447410, upload-time = "2024-10-14T23:37:33.612Z" }, + { url = "https://files.pythonhosted.org/packages/8c/7c/1517b0bbc2dbe784b563d6ab54f2ef88c890fdad77232c98ed490aa07132/uvloop-0.21.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0878c2640cf341b269b7e128b1a5fed890adc4455513ca710d77d5e93aa6d6a0", size = 805476, upload-time = "2024-10-14T23:37:36.11Z" }, + { url = "https://files.pythonhosted.org/packages/ee/ea/0bfae1aceb82a503f358d8d2fa126ca9dbdb2ba9c7866974faec1cb5875c/uvloop-0.21.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9fb766bb57b7388745d8bcc53a359b116b8a04c83a2288069809d2b3466c37e", size = 3960855, upload-time = "2024-10-14T23:37:37.683Z" }, + { url = "https://files.pythonhosted.org/packages/8a/ca/0864176a649838b838f36d44bf31c451597ab363b60dc9e09c9630619d41/uvloop-0.21.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a375441696e2eda1c43c44ccb66e04d61ceeffcd76e4929e527b7fa401b90fb", size = 3973185, upload-time = "2024-10-14T23:37:40.226Z" }, + { url = "https://files.pythonhosted.org/packages/30/bf/08ad29979a936d63787ba47a540de2132169f140d54aa25bc8c3df3e67f4/uvloop-0.21.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:baa0e6291d91649c6ba4ed4b2f982f9fa165b5bbd50a9e203c416a2797bab3c6", size = 3820256, upload-time = "2024-10-14T23:37:42.839Z" }, + { url = "https://files.pythonhosted.org/packages/da/e2/5cf6ef37e3daf2f06e651aae5ea108ad30df3cb269102678b61ebf1fdf42/uvloop-0.21.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4509360fcc4c3bd2c70d87573ad472de40c13387f5fda8cb58350a1d7475e58d", size = 3937323, upload-time = "2024-10-14T23:37:45.337Z" }, + { url = "https://files.pythonhosted.org/packages/8c/4c/03f93178830dc7ce8b4cdee1d36770d2f5ebb6f3d37d354e061eefc73545/uvloop-0.21.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:359ec2c888397b9e592a889c4d72ba3d6befba8b2bb01743f72fffbde663b59c", size = 1471284, upload-time = "2024-10-14T23:37:47.833Z" }, + { url = "https://files.pythonhosted.org/packages/43/3e/92c03f4d05e50f09251bd8b2b2b584a2a7f8fe600008bcc4523337abe676/uvloop-0.21.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f7089d2dc73179ce5ac255bdf37c236a9f914b264825fdaacaded6990a7fb4c2", size = 821349, upload-time = "2024-10-14T23:37:50.149Z" }, + { url = "https://files.pythonhosted.org/packages/a6/ef/a02ec5da49909dbbfb1fd205a9a1ac4e88ea92dcae885e7c961847cd51e2/uvloop-0.21.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:baa4dcdbd9ae0a372f2167a207cd98c9f9a1ea1188a8a526431eef2f8116cc8d", size = 4580089, upload-time = "2024-10-14T23:37:51.703Z" }, + { url = "https://files.pythonhosted.org/packages/06/a7/b4e6a19925c900be9f98bec0a75e6e8f79bb53bdeb891916609ab3958967/uvloop-0.21.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86975dca1c773a2c9864f4c52c5a55631038e387b47eaf56210f873887b6c8dc", size = 4693770, upload-time = "2024-10-14T23:37:54.122Z" }, + { url = "https://files.pythonhosted.org/packages/ce/0c/f07435a18a4b94ce6bd0677d8319cd3de61f3a9eeb1e5f8ab4e8b5edfcb3/uvloop-0.21.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:461d9ae6660fbbafedd07559c6a2e57cd553b34b0065b6550685f6653a98c1cb", size = 4451321, upload-time = "2024-10-14T23:37:55.766Z" }, + { url = "https://files.pythonhosted.org/packages/8f/eb/f7032be105877bcf924709c97b1bf3b90255b4ec251f9340cef912559f28/uvloop-0.21.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:183aef7c8730e54c9a3ee3227464daed66e37ba13040bb3f350bc2ddc040f22f", size = 4659022, upload-time = "2024-10-14T23:37:58.195Z" }, + { url = "https://files.pythonhosted.org/packages/3f/8d/2cbef610ca21539f0f36e2b34da49302029e7c9f09acef0b1c3b5839412b/uvloop-0.21.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:bfd55dfcc2a512316e65f16e503e9e450cab148ef11df4e4e679b5e8253a5281", size = 1468123, upload-time = "2024-10-14T23:38:00.688Z" }, + { url = "https://files.pythonhosted.org/packages/93/0d/b0038d5a469f94ed8f2b2fce2434a18396d8fbfb5da85a0a9781ebbdec14/uvloop-0.21.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:787ae31ad8a2856fc4e7c095341cccc7209bd657d0e71ad0dc2ea83c4a6fa8af", size = 819325, upload-time = "2024-10-14T23:38:02.309Z" }, + { url = "https://files.pythonhosted.org/packages/50/94/0a687f39e78c4c1e02e3272c6b2ccdb4e0085fda3b8352fecd0410ccf915/uvloop-0.21.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ee4d4ef48036ff6e5cfffb09dd192c7a5027153948d85b8da7ff705065bacc6", size = 4582806, upload-time = "2024-10-14T23:38:04.711Z" }, + { url = "https://files.pythonhosted.org/packages/d2/19/f5b78616566ea68edd42aacaf645adbf71fbd83fc52281fba555dc27e3f1/uvloop-0.21.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3df876acd7ec037a3d005b3ab85a7e4110422e4d9c1571d4fc89b0fc41b6816", size = 4701068, upload-time = "2024-10-14T23:38:06.385Z" }, + { url = "https://files.pythonhosted.org/packages/47/57/66f061ee118f413cd22a656de622925097170b9380b30091b78ea0c6ea75/uvloop-0.21.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bd53ecc9a0f3d87ab847503c2e1552b690362e005ab54e8a48ba97da3924c0dc", size = 4454428, upload-time = "2024-10-14T23:38:08.416Z" }, + { url = "https://files.pythonhosted.org/packages/63/9a/0962b05b308494e3202d3f794a6e85abe471fe3cafdbcf95c2e8c713aabd/uvloop-0.21.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a5c39f217ab3c663dc699c04cbd50c13813e31d917642d459fdcec07555cc553", size = 4660018, upload-time = "2024-10-14T23:38:10.888Z" }, + { url = "https://files.pythonhosted.org/packages/3c/a4/646a9d0edff7cde25fc1734695d3dfcee0501140dd0e723e4df3f0a50acb/uvloop-0.21.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c097078b8031190c934ed0ebfee8cc5f9ba9642e6eb88322b9958b649750f72b", size = 1439646, upload-time = "2024-10-14T23:38:24.656Z" }, + { url = "https://files.pythonhosted.org/packages/01/2e/e128c66106af9728f86ebfeeb52af27ecd3cb09336f3e2f3e06053707a15/uvloop-0.21.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:46923b0b5ee7fc0020bef24afe7836cb068f5050ca04caf6b487c513dc1a20b2", size = 800931, upload-time = "2024-10-14T23:38:26.087Z" }, + { url = "https://files.pythonhosted.org/packages/2d/1a/9fbc2b1543d0df11f7aed1632f64bdf5ecc4053cf98cdc9edb91a65494f9/uvloop-0.21.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:53e420a3afe22cdcf2a0f4846e377d16e718bc70103d7088a4f7623567ba5fb0", size = 3829660, upload-time = "2024-10-14T23:38:27.905Z" }, + { url = "https://files.pythonhosted.org/packages/b8/c0/392e235e4100ae3b95b5c6dac77f82b529d2760942b1e7e0981e5d8e895d/uvloop-0.21.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88cb67cdbc0e483da00af0b2c3cdad4b7c61ceb1ee0f33fe00e09c81e3a6cb75", size = 3827185, upload-time = "2024-10-14T23:38:29.458Z" }, + { url = "https://files.pythonhosted.org/packages/e1/24/a5da6aba58f99aed5255eca87d58d1760853e8302d390820cc29058408e3/uvloop-0.21.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:221f4f2a1f46032b403bf3be628011caf75428ee3cc204a22addf96f586b19fd", size = 3705833, upload-time = "2024-10-14T23:38:31.155Z" }, + { url = "https://files.pythonhosted.org/packages/1a/5c/6ba221bb60f1e6474474102e17e38612ec7a06dc320e22b687ab563d877f/uvloop-0.21.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2d1f581393673ce119355d56da84fe1dd9d2bb8b3d13ce792524e1607139feff", size = 3804696, upload-time = "2024-10-14T23:38:33.633Z" }, +] + +[[package]] +name = "virtualenv" +version = "20.31.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "distlib" }, + { name = "filelock" }, + { name = "platformdirs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/56/2c/444f465fb2c65f40c3a104fd0c495184c4f2336d65baf398e3c75d72ea94/virtualenv-20.31.2.tar.gz", hash = "sha256:e10c0a9d02835e592521be48b332b6caee6887f332c111aa79a09b9e79efc2af", size = 6076316, upload-time = "2025-05-08T17:58:23.811Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f3/40/b1c265d4b2b62b58576588510fc4d1fe60a86319c8de99fd8e9fec617d2c/virtualenv-20.31.2-py3-none-any.whl", hash = "sha256:36efd0d9650ee985f0cad72065001e66d49a6f24eb44d98980f630686243cf11", size = 6057982, upload-time = "2025-05-08T17:58:21.15Z" }, +] + +[[package]] +name = "watchfiles" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2a/9a/d451fcc97d029f5812e898fd30a53fd8c15c7bbd058fd75cfc6beb9bd761/watchfiles-1.1.0.tar.gz", hash = "sha256:693ed7ec72cbfcee399e92c895362b6e66d63dac6b91e2c11ae03d10d503e575", size = 94406, upload-time = "2025-06-15T19:06:59.42Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b9/dd/579d1dc57f0f895426a1211c4ef3b0cb37eb9e642bb04bdcd962b5df206a/watchfiles-1.1.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:27f30e14aa1c1e91cb653f03a63445739919aef84c8d2517997a83155e7a2fcc", size = 405757, upload-time = "2025-06-15T19:04:51.058Z" }, + { url = "https://files.pythonhosted.org/packages/1c/a0/7a0318cd874393344d48c34d53b3dd419466adf59a29ba5b51c88dd18b86/watchfiles-1.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3366f56c272232860ab45c77c3ca7b74ee819c8e1f6f35a7125556b198bbc6df", size = 397511, upload-time = "2025-06-15T19:04:52.79Z" }, + { url = "https://files.pythonhosted.org/packages/06/be/503514656d0555ec2195f60d810eca29b938772e9bfb112d5cd5ad6f6a9e/watchfiles-1.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8412eacef34cae2836d891836a7fff7b754d6bcac61f6c12ba5ca9bc7e427b68", size = 450739, upload-time = "2025-06-15T19:04:54.203Z" }, + { url = "https://files.pythonhosted.org/packages/4e/0d/a05dd9e5f136cdc29751816d0890d084ab99f8c17b86f25697288ca09bc7/watchfiles-1.1.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:df670918eb7dd719642e05979fc84704af913d563fd17ed636f7c4783003fdcc", size = 458106, upload-time = "2025-06-15T19:04:55.607Z" }, + { url = "https://files.pythonhosted.org/packages/f1/fa/9cd16e4dfdb831072b7ac39e7bea986e52128526251038eb481effe9f48e/watchfiles-1.1.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d7642b9bc4827b5518ebdb3b82698ada8c14c7661ddec5fe719f3e56ccd13c97", size = 484264, upload-time = "2025-06-15T19:04:57.009Z" }, + { url = "https://files.pythonhosted.org/packages/32/04/1da8a637c7e2b70e750a0308e9c8e662ada0cca46211fa9ef24a23937e0b/watchfiles-1.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:199207b2d3eeaeb80ef4411875a6243d9ad8bc35b07fc42daa6b801cc39cc41c", size = 597612, upload-time = "2025-06-15T19:04:58.409Z" }, + { url = "https://files.pythonhosted.org/packages/30/01/109f2762e968d3e58c95731a206e5d7d2a7abaed4299dd8a94597250153c/watchfiles-1.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a479466da6db5c1e8754caee6c262cd373e6e6c363172d74394f4bff3d84d7b5", size = 477242, upload-time = "2025-06-15T19:04:59.786Z" }, + { url = "https://files.pythonhosted.org/packages/b5/b8/46f58cf4969d3b7bc3ca35a98e739fa4085b0657a1540ccc29a1a0bc016f/watchfiles-1.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:935f9edd022ec13e447e5723a7d14456c8af254544cefbc533f6dd276c9aa0d9", size = 453148, upload-time = "2025-06-15T19:05:01.103Z" }, + { url = "https://files.pythonhosted.org/packages/a5/cd/8267594263b1770f1eb76914940d7b2d03ee55eca212302329608208e061/watchfiles-1.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8076a5769d6bdf5f673a19d51da05fc79e2bbf25e9fe755c47595785c06a8c72", size = 626574, upload-time = "2025-06-15T19:05:02.582Z" }, + { url = "https://files.pythonhosted.org/packages/a1/2f/7f2722e85899bed337cba715723e19185e288ef361360718973f891805be/watchfiles-1.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:86b1e28d4c37e89220e924305cd9f82866bb0ace666943a6e4196c5df4d58dcc", size = 624378, upload-time = "2025-06-15T19:05:03.719Z" }, + { url = "https://files.pythonhosted.org/packages/bf/20/64c88ec43d90a568234d021ab4b2a6f42a5230d772b987c3f9c00cc27b8b/watchfiles-1.1.0-cp310-cp310-win32.whl", hash = "sha256:d1caf40c1c657b27858f9774d5c0e232089bca9cb8ee17ce7478c6e9264d2587", size = 279829, upload-time = "2025-06-15T19:05:04.822Z" }, + { url = "https://files.pythonhosted.org/packages/39/5c/a9c1ed33de7af80935e4eac09570de679c6e21c07070aa99f74b4431f4d6/watchfiles-1.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:a89c75a5b9bc329131115a409d0acc16e8da8dfd5867ba59f1dd66ae7ea8fa82", size = 292192, upload-time = "2025-06-15T19:05:06.348Z" }, + { url = "https://files.pythonhosted.org/packages/8b/78/7401154b78ab484ccaaeef970dc2af0cb88b5ba8a1b415383da444cdd8d3/watchfiles-1.1.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:c9649dfc57cc1f9835551deb17689e8d44666315f2e82d337b9f07bd76ae3aa2", size = 405751, upload-time = "2025-06-15T19:05:07.679Z" }, + { url = "https://files.pythonhosted.org/packages/76/63/e6c3dbc1f78d001589b75e56a288c47723de28c580ad715eb116639152b5/watchfiles-1.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:406520216186b99374cdb58bc48e34bb74535adec160c8459894884c983a149c", size = 397313, upload-time = "2025-06-15T19:05:08.764Z" }, + { url = "https://files.pythonhosted.org/packages/6c/a2/8afa359ff52e99af1632f90cbf359da46184207e893a5f179301b0c8d6df/watchfiles-1.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb45350fd1dc75cd68d3d72c47f5b513cb0578da716df5fba02fff31c69d5f2d", size = 450792, upload-time = "2025-06-15T19:05:09.869Z" }, + { url = "https://files.pythonhosted.org/packages/1d/bf/7446b401667f5c64972a57a0233be1104157fc3abf72c4ef2666c1bd09b2/watchfiles-1.1.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:11ee4444250fcbeb47459a877e5e80ed994ce8e8d20283857fc128be1715dac7", size = 458196, upload-time = "2025-06-15T19:05:11.91Z" }, + { url = "https://files.pythonhosted.org/packages/58/2f/501ddbdfa3fa874ea5597c77eeea3d413579c29af26c1091b08d0c792280/watchfiles-1.1.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bda8136e6a80bdea23e5e74e09df0362744d24ffb8cd59c4a95a6ce3d142f79c", size = 484788, upload-time = "2025-06-15T19:05:13.373Z" }, + { url = "https://files.pythonhosted.org/packages/61/1e/9c18eb2eb5c953c96bc0e5f626f0e53cfef4bd19bd50d71d1a049c63a575/watchfiles-1.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b915daeb2d8c1f5cee4b970f2e2c988ce6514aace3c9296e58dd64dc9aa5d575", size = 597879, upload-time = "2025-06-15T19:05:14.725Z" }, + { url = "https://files.pythonhosted.org/packages/8b/6c/1467402e5185d89388b4486745af1e0325007af0017c3384cc786fff0542/watchfiles-1.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ed8fc66786de8d0376f9f913c09e963c66e90ced9aa11997f93bdb30f7c872a8", size = 477447, upload-time = "2025-06-15T19:05:15.775Z" }, + { url = "https://files.pythonhosted.org/packages/2b/a1/ec0a606bde4853d6c4a578f9391eeb3684a9aea736a8eb217e3e00aa89a1/watchfiles-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe4371595edf78c41ef8ac8df20df3943e13defd0efcb732b2e393b5a8a7a71f", size = 453145, upload-time = "2025-06-15T19:05:17.17Z" }, + { url = "https://files.pythonhosted.org/packages/90/b9/ef6f0c247a6a35d689fc970dc7f6734f9257451aefb30def5d100d6246a5/watchfiles-1.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b7c5f6fe273291f4d414d55b2c80d33c457b8a42677ad14b4b47ff025d0893e4", size = 626539, upload-time = "2025-06-15T19:05:18.557Z" }, + { url = "https://files.pythonhosted.org/packages/34/44/6ffda5537085106ff5aaa762b0d130ac6c75a08015dd1621376f708c94de/watchfiles-1.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7738027989881e70e3723c75921f1efa45225084228788fc59ea8c6d732eb30d", size = 624472, upload-time = "2025-06-15T19:05:19.588Z" }, + { url = "https://files.pythonhosted.org/packages/c3/e3/71170985c48028fa3f0a50946916a14055e741db11c2e7bc2f3b61f4d0e3/watchfiles-1.1.0-cp311-cp311-win32.whl", hash = "sha256:622d6b2c06be19f6e89b1d951485a232e3b59618def88dbeda575ed8f0d8dbf2", size = 279348, upload-time = "2025-06-15T19:05:20.856Z" }, + { url = "https://files.pythonhosted.org/packages/89/1b/3e39c68b68a7a171070f81fc2561d23ce8d6859659406842a0e4bebf3bba/watchfiles-1.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:48aa25e5992b61debc908a61ab4d3f216b64f44fdaa71eb082d8b2de846b7d12", size = 292607, upload-time = "2025-06-15T19:05:21.937Z" }, + { url = "https://files.pythonhosted.org/packages/61/9f/2973b7539f2bdb6ea86d2c87f70f615a71a1fc2dba2911795cea25968aea/watchfiles-1.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:00645eb79a3faa70d9cb15c8d4187bb72970b2470e938670240c7998dad9f13a", size = 285056, upload-time = "2025-06-15T19:05:23.12Z" }, + { url = "https://files.pythonhosted.org/packages/f6/b8/858957045a38a4079203a33aaa7d23ea9269ca7761c8a074af3524fbb240/watchfiles-1.1.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9dc001c3e10de4725c749d4c2f2bdc6ae24de5a88a339c4bce32300a31ede179", size = 402339, upload-time = "2025-06-15T19:05:24.516Z" }, + { url = "https://files.pythonhosted.org/packages/80/28/98b222cca751ba68e88521fabd79a4fab64005fc5976ea49b53fa205d1fa/watchfiles-1.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d9ba68ec283153dead62cbe81872d28e053745f12335d037de9cbd14bd1877f5", size = 394409, upload-time = "2025-06-15T19:05:25.469Z" }, + { url = "https://files.pythonhosted.org/packages/86/50/dee79968566c03190677c26f7f47960aff738d32087087bdf63a5473e7df/watchfiles-1.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:130fc497b8ee68dce163e4254d9b0356411d1490e868bd8790028bc46c5cc297", size = 450939, upload-time = "2025-06-15T19:05:26.494Z" }, + { url = "https://files.pythonhosted.org/packages/40/45/a7b56fb129700f3cfe2594a01aa38d033b92a33dddce86c8dfdfc1247b72/watchfiles-1.1.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:50a51a90610d0845a5931a780d8e51d7bd7f309ebc25132ba975aca016b576a0", size = 457270, upload-time = "2025-06-15T19:05:27.466Z" }, + { url = "https://files.pythonhosted.org/packages/b5/c8/fa5ef9476b1d02dc6b5e258f515fcaaecf559037edf8b6feffcbc097c4b8/watchfiles-1.1.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dc44678a72ac0910bac46fa6a0de6af9ba1355669b3dfaf1ce5f05ca7a74364e", size = 483370, upload-time = "2025-06-15T19:05:28.548Z" }, + { url = "https://files.pythonhosted.org/packages/98/68/42cfcdd6533ec94f0a7aab83f759ec11280f70b11bfba0b0f885e298f9bd/watchfiles-1.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a543492513a93b001975ae283a51f4b67973662a375a403ae82f420d2c7205ee", size = 598654, upload-time = "2025-06-15T19:05:29.997Z" }, + { url = "https://files.pythonhosted.org/packages/d3/74/b2a1544224118cc28df7e59008a929e711f9c68ce7d554e171b2dc531352/watchfiles-1.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ac164e20d17cc285f2b94dc31c384bc3aa3dd5e7490473b3db043dd70fbccfd", size = 478667, upload-time = "2025-06-15T19:05:31.172Z" }, + { url = "https://files.pythonhosted.org/packages/8c/77/e3362fe308358dc9f8588102481e599c83e1b91c2ae843780a7ded939a35/watchfiles-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7590d5a455321e53857892ab8879dce62d1f4b04748769f5adf2e707afb9d4f", size = 452213, upload-time = "2025-06-15T19:05:32.299Z" }, + { url = "https://files.pythonhosted.org/packages/6e/17/c8f1a36540c9a1558d4faf08e909399e8133599fa359bf52ec8fcee5be6f/watchfiles-1.1.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:37d3d3f7defb13f62ece99e9be912afe9dd8a0077b7c45ee5a57c74811d581a4", size = 626718, upload-time = "2025-06-15T19:05:33.415Z" }, + { url = "https://files.pythonhosted.org/packages/26/45/fb599be38b4bd38032643783d7496a26a6f9ae05dea1a42e58229a20ac13/watchfiles-1.1.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:7080c4bb3efd70a07b1cc2df99a7aa51d98685be56be6038c3169199d0a1c69f", size = 623098, upload-time = "2025-06-15T19:05:34.534Z" }, + { url = "https://files.pythonhosted.org/packages/a1/e7/fdf40e038475498e160cd167333c946e45d8563ae4dd65caf757e9ffe6b4/watchfiles-1.1.0-cp312-cp312-win32.whl", hash = "sha256:cbcf8630ef4afb05dc30107bfa17f16c0896bb30ee48fc24bf64c1f970f3b1fd", size = 279209, upload-time = "2025-06-15T19:05:35.577Z" }, + { url = "https://files.pythonhosted.org/packages/3f/d3/3ae9d5124ec75143bdf088d436cba39812122edc47709cd2caafeac3266f/watchfiles-1.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:cbd949bdd87567b0ad183d7676feb98136cde5bb9025403794a4c0db28ed3a47", size = 292786, upload-time = "2025-06-15T19:05:36.559Z" }, + { url = "https://files.pythonhosted.org/packages/26/2f/7dd4fc8b5f2b34b545e19629b4a018bfb1de23b3a496766a2c1165ca890d/watchfiles-1.1.0-cp312-cp312-win_arm64.whl", hash = "sha256:0a7d40b77f07be87c6faa93d0951a0fcd8cbca1ddff60a1b65d741bac6f3a9f6", size = 284343, upload-time = "2025-06-15T19:05:37.5Z" }, + { url = "https://files.pythonhosted.org/packages/d3/42/fae874df96595556a9089ade83be34a2e04f0f11eb53a8dbf8a8a5e562b4/watchfiles-1.1.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:5007f860c7f1f8df471e4e04aaa8c43673429047d63205d1630880f7637bca30", size = 402004, upload-time = "2025-06-15T19:05:38.499Z" }, + { url = "https://files.pythonhosted.org/packages/fa/55/a77e533e59c3003d9803c09c44c3651224067cbe7fb5d574ddbaa31e11ca/watchfiles-1.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:20ecc8abbd957046f1fe9562757903f5eaf57c3bce70929fda6c7711bb58074a", size = 393671, upload-time = "2025-06-15T19:05:39.52Z" }, + { url = "https://files.pythonhosted.org/packages/05/68/b0afb3f79c8e832e6571022611adbdc36e35a44e14f129ba09709aa4bb7a/watchfiles-1.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2f0498b7d2a3c072766dba3274fe22a183dbea1f99d188f1c6c72209a1063dc", size = 449772, upload-time = "2025-06-15T19:05:40.897Z" }, + { url = "https://files.pythonhosted.org/packages/ff/05/46dd1f6879bc40e1e74c6c39a1b9ab9e790bf1f5a2fe6c08b463d9a807f4/watchfiles-1.1.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:239736577e848678e13b201bba14e89718f5c2133dfd6b1f7846fa1b58a8532b", size = 456789, upload-time = "2025-06-15T19:05:42.045Z" }, + { url = "https://files.pythonhosted.org/packages/8b/ca/0eeb2c06227ca7f12e50a47a3679df0cd1ba487ea19cf844a905920f8e95/watchfiles-1.1.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eff4b8d89f444f7e49136dc695599a591ff769300734446c0a86cba2eb2f9895", size = 482551, upload-time = "2025-06-15T19:05:43.781Z" }, + { url = "https://files.pythonhosted.org/packages/31/47/2cecbd8694095647406645f822781008cc524320466ea393f55fe70eed3b/watchfiles-1.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:12b0a02a91762c08f7264e2e79542f76870c3040bbc847fb67410ab81474932a", size = 597420, upload-time = "2025-06-15T19:05:45.244Z" }, + { url = "https://files.pythonhosted.org/packages/d9/7e/82abc4240e0806846548559d70f0b1a6dfdca75c1b4f9fa62b504ae9b083/watchfiles-1.1.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:29e7bc2eee15cbb339c68445959108803dc14ee0c7b4eea556400131a8de462b", size = 477950, upload-time = "2025-06-15T19:05:46.332Z" }, + { url = "https://files.pythonhosted.org/packages/25/0d/4d564798a49bf5482a4fa9416dea6b6c0733a3b5700cb8a5a503c4b15853/watchfiles-1.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d9481174d3ed982e269c090f780122fb59cee6c3796f74efe74e70f7780ed94c", size = 451706, upload-time = "2025-06-15T19:05:47.459Z" }, + { url = "https://files.pythonhosted.org/packages/81/b5/5516cf46b033192d544102ea07c65b6f770f10ed1d0a6d388f5d3874f6e4/watchfiles-1.1.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:80f811146831c8c86ab17b640801c25dc0a88c630e855e2bef3568f30434d52b", size = 625814, upload-time = "2025-06-15T19:05:48.654Z" }, + { url = "https://files.pythonhosted.org/packages/0c/dd/7c1331f902f30669ac3e754680b6edb9a0dd06dea5438e61128111fadd2c/watchfiles-1.1.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:60022527e71d1d1fda67a33150ee42869042bce3d0fcc9cc49be009a9cded3fb", size = 622820, upload-time = "2025-06-15T19:05:50.088Z" }, + { url = "https://files.pythonhosted.org/packages/1b/14/36d7a8e27cd128d7b1009e7715a7c02f6c131be9d4ce1e5c3b73d0e342d8/watchfiles-1.1.0-cp313-cp313-win32.whl", hash = "sha256:32d6d4e583593cb8576e129879ea0991660b935177c0f93c6681359b3654bfa9", size = 279194, upload-time = "2025-06-15T19:05:51.186Z" }, + { url = "https://files.pythonhosted.org/packages/25/41/2dd88054b849aa546dbeef5696019c58f8e0774f4d1c42123273304cdb2e/watchfiles-1.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:f21af781a4a6fbad54f03c598ab620e3a77032c5878f3d780448421a6e1818c7", size = 292349, upload-time = "2025-06-15T19:05:52.201Z" }, + { url = "https://files.pythonhosted.org/packages/c8/cf/421d659de88285eb13941cf11a81f875c176f76a6d99342599be88e08d03/watchfiles-1.1.0-cp313-cp313-win_arm64.whl", hash = "sha256:5366164391873ed76bfdf618818c82084c9db7fac82b64a20c44d335eec9ced5", size = 283836, upload-time = "2025-06-15T19:05:53.265Z" }, + { url = "https://files.pythonhosted.org/packages/45/10/6faf6858d527e3599cc50ec9fcae73590fbddc1420bd4fdccfebffeedbc6/watchfiles-1.1.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:17ab167cca6339c2b830b744eaf10803d2a5b6683be4d79d8475d88b4a8a4be1", size = 400343, upload-time = "2025-06-15T19:05:54.252Z" }, + { url = "https://files.pythonhosted.org/packages/03/20/5cb7d3966f5e8c718006d0e97dfe379a82f16fecd3caa7810f634412047a/watchfiles-1.1.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:328dbc9bff7205c215a7807da7c18dce37da7da718e798356212d22696404339", size = 392916, upload-time = "2025-06-15T19:05:55.264Z" }, + { url = "https://files.pythonhosted.org/packages/8c/07/d8f1176328fa9e9581b6f120b017e286d2a2d22ae3f554efd9515c8e1b49/watchfiles-1.1.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7208ab6e009c627b7557ce55c465c98967e8caa8b11833531fdf95799372633", size = 449582, upload-time = "2025-06-15T19:05:56.317Z" }, + { url = "https://files.pythonhosted.org/packages/66/e8/80a14a453cf6038e81d072a86c05276692a1826471fef91df7537dba8b46/watchfiles-1.1.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a8f6f72974a19efead54195bc9bed4d850fc047bb7aa971268fd9a8387c89011", size = 456752, upload-time = "2025-06-15T19:05:57.359Z" }, + { url = "https://files.pythonhosted.org/packages/5a/25/0853b3fe0e3c2f5af9ea60eb2e781eade939760239a72c2d38fc4cc335f6/watchfiles-1.1.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d181ef50923c29cf0450c3cd47e2f0557b62218c50b2ab8ce2ecaa02bd97e670", size = 481436, upload-time = "2025-06-15T19:05:58.447Z" }, + { url = "https://files.pythonhosted.org/packages/fe/9e/4af0056c258b861fbb29dcb36258de1e2b857be4a9509e6298abcf31e5c9/watchfiles-1.1.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:adb4167043d3a78280d5d05ce0ba22055c266cf8655ce942f2fb881262ff3cdf", size = 596016, upload-time = "2025-06-15T19:05:59.59Z" }, + { url = "https://files.pythonhosted.org/packages/c5/fa/95d604b58aa375e781daf350897aaaa089cff59d84147e9ccff2447c8294/watchfiles-1.1.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8c5701dc474b041e2934a26d31d39f90fac8a3dee2322b39f7729867f932b1d4", size = 476727, upload-time = "2025-06-15T19:06:01.086Z" }, + { url = "https://files.pythonhosted.org/packages/65/95/fe479b2664f19be4cf5ceeb21be05afd491d95f142e72d26a42f41b7c4f8/watchfiles-1.1.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b067915e3c3936966a8607f6fe5487df0c9c4afb85226613b520890049deea20", size = 451864, upload-time = "2025-06-15T19:06:02.144Z" }, + { url = "https://files.pythonhosted.org/packages/d3/8a/3c4af14b93a15ce55901cd7a92e1a4701910f1768c78fb30f61d2b79785b/watchfiles-1.1.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:9c733cda03b6d636b4219625a4acb5c6ffb10803338e437fb614fef9516825ef", size = 625626, upload-time = "2025-06-15T19:06:03.578Z" }, + { url = "https://files.pythonhosted.org/packages/da/f5/cf6aa047d4d9e128f4b7cde615236a915673775ef171ff85971d698f3c2c/watchfiles-1.1.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:cc08ef8b90d78bfac66f0def80240b0197008e4852c9f285907377b2947ffdcb", size = 622744, upload-time = "2025-06-15T19:06:05.066Z" }, + { url = "https://files.pythonhosted.org/packages/2c/00/70f75c47f05dea6fd30df90f047765f6fc2d6eb8b5a3921379b0b04defa2/watchfiles-1.1.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:9974d2f7dc561cce3bb88dfa8eb309dab64c729de85fba32e98d75cf24b66297", size = 402114, upload-time = "2025-06-15T19:06:06.186Z" }, + { url = "https://files.pythonhosted.org/packages/53/03/acd69c48db4a1ed1de26b349d94077cca2238ff98fd64393f3e97484cae6/watchfiles-1.1.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c68e9f1fcb4d43798ad8814c4c1b61547b014b667216cb754e606bfade587018", size = 393879, upload-time = "2025-06-15T19:06:07.369Z" }, + { url = "https://files.pythonhosted.org/packages/2f/c8/a9a2a6f9c8baa4eceae5887fecd421e1b7ce86802bcfc8b6a942e2add834/watchfiles-1.1.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:95ab1594377effac17110e1352989bdd7bdfca9ff0e5eeccd8c69c5389b826d0", size = 450026, upload-time = "2025-06-15T19:06:08.476Z" }, + { url = "https://files.pythonhosted.org/packages/fe/51/d572260d98388e6e2b967425c985e07d47ee6f62e6455cefb46a6e06eda5/watchfiles-1.1.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fba9b62da882c1be1280a7584ec4515d0a6006a94d6e5819730ec2eab60ffe12", size = 457917, upload-time = "2025-06-15T19:06:09.988Z" }, + { url = "https://files.pythonhosted.org/packages/c6/2d/4258e52917bf9f12909b6ec314ff9636276f3542f9d3807d143f27309104/watchfiles-1.1.0-cp314-cp314-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3434e401f3ce0ed6b42569128b3d1e3af773d7ec18751b918b89cd49c14eaafb", size = 483602, upload-time = "2025-06-15T19:06:11.088Z" }, + { url = "https://files.pythonhosted.org/packages/84/99/bee17a5f341a4345fe7b7972a475809af9e528deba056f8963d61ea49f75/watchfiles-1.1.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fa257a4d0d21fcbca5b5fcba9dca5a78011cb93c0323fb8855c6d2dfbc76eb77", size = 596758, upload-time = "2025-06-15T19:06:12.197Z" }, + { url = "https://files.pythonhosted.org/packages/40/76/e4bec1d59b25b89d2b0716b41b461ed655a9a53c60dc78ad5771fda5b3e6/watchfiles-1.1.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7fd1b3879a578a8ec2076c7961076df540b9af317123f84569f5a9ddee64ce92", size = 477601, upload-time = "2025-06-15T19:06:13.391Z" }, + { url = "https://files.pythonhosted.org/packages/1f/fa/a514292956f4a9ce3c567ec0c13cce427c158e9f272062685a8a727d08fc/watchfiles-1.1.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62cc7a30eeb0e20ecc5f4bd113cd69dcdb745a07c68c0370cea919f373f65d9e", size = 451936, upload-time = "2025-06-15T19:06:14.656Z" }, + { url = "https://files.pythonhosted.org/packages/32/5d/c3bf927ec3bbeb4566984eba8dd7a8eb69569400f5509904545576741f88/watchfiles-1.1.0-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:891c69e027748b4a73847335d208e374ce54ca3c335907d381fde4e41661b13b", size = 626243, upload-time = "2025-06-15T19:06:16.232Z" }, + { url = "https://files.pythonhosted.org/packages/e6/65/6e12c042f1a68c556802a84d54bb06d35577c81e29fba14019562479159c/watchfiles-1.1.0-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:12fe8eaffaf0faa7906895b4f8bb88264035b3f0243275e0bf24af0436b27259", size = 623073, upload-time = "2025-06-15T19:06:17.457Z" }, + { url = "https://files.pythonhosted.org/packages/89/ab/7f79d9bf57329e7cbb0a6fd4c7bd7d0cee1e4a8ef0041459f5409da3506c/watchfiles-1.1.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:bfe3c517c283e484843cb2e357dd57ba009cff351edf45fb455b5fbd1f45b15f", size = 400872, upload-time = "2025-06-15T19:06:18.57Z" }, + { url = "https://files.pythonhosted.org/packages/df/d5/3f7bf9912798e9e6c516094db6b8932df53b223660c781ee37607030b6d3/watchfiles-1.1.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:a9ccbf1f129480ed3044f540c0fdbc4ee556f7175e5ab40fe077ff6baf286d4e", size = 392877, upload-time = "2025-06-15T19:06:19.55Z" }, + { url = "https://files.pythonhosted.org/packages/0d/c5/54ec7601a2798604e01c75294770dbee8150e81c6e471445d7601610b495/watchfiles-1.1.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba0e3255b0396cac3cc7bbace76404dd72b5438bf0d8e7cefa2f79a7f3649caa", size = 449645, upload-time = "2025-06-15T19:06:20.66Z" }, + { url = "https://files.pythonhosted.org/packages/0a/04/c2f44afc3b2fce21ca0b7802cbd37ed90a29874f96069ed30a36dfe57c2b/watchfiles-1.1.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4281cd9fce9fc0a9dbf0fc1217f39bf9cf2b4d315d9626ef1d4e87b84699e7e8", size = 457424, upload-time = "2025-06-15T19:06:21.712Z" }, + { url = "https://files.pythonhosted.org/packages/9f/b0/eec32cb6c14d248095261a04f290636da3df3119d4040ef91a4a50b29fa5/watchfiles-1.1.0-cp314-cp314t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6d2404af8db1329f9a3c9b79ff63e0ae7131986446901582067d9304ae8aaf7f", size = 481584, upload-time = "2025-06-15T19:06:22.777Z" }, + { url = "https://files.pythonhosted.org/packages/d1/e2/ca4bb71c68a937d7145aa25709e4f5d68eb7698a25ce266e84b55d591bbd/watchfiles-1.1.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e78b6ed8165996013165eeabd875c5dfc19d41b54f94b40e9fff0eb3193e5e8e", size = 596675, upload-time = "2025-06-15T19:06:24.226Z" }, + { url = "https://files.pythonhosted.org/packages/a1/dd/b0e4b7fb5acf783816bc950180a6cd7c6c1d2cf7e9372c0ea634e722712b/watchfiles-1.1.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:249590eb75ccc117f488e2fabd1bfa33c580e24b96f00658ad88e38844a040bb", size = 477363, upload-time = "2025-06-15T19:06:25.42Z" }, + { url = "https://files.pythonhosted.org/packages/69/c4/088825b75489cb5b6a761a4542645718893d395d8c530b38734f19da44d2/watchfiles-1.1.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d05686b5487cfa2e2c28ff1aa370ea3e6c5accfe6435944ddea1e10d93872147", size = 452240, upload-time = "2025-06-15T19:06:26.552Z" }, + { url = "https://files.pythonhosted.org/packages/10/8c/22b074814970eeef43b7c44df98c3e9667c1f7bf5b83e0ff0201b0bd43f9/watchfiles-1.1.0-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:d0e10e6f8f6dc5762adee7dece33b722282e1f59aa6a55da5d493a97282fedd8", size = 625607, upload-time = "2025-06-15T19:06:27.606Z" }, + { url = "https://files.pythonhosted.org/packages/32/fa/a4f5c2046385492b2273213ef815bf71a0d4c1943b784fb904e184e30201/watchfiles-1.1.0-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:af06c863f152005c7592df1d6a7009c836a247c9d8adb78fef8575a5a98699db", size = 623315, upload-time = "2025-06-15T19:06:29.076Z" }, + { url = "https://files.pythonhosted.org/packages/47/8a/a45db804b9f0740f8408626ab2bca89c3136432e57c4673b50180bf85dd9/watchfiles-1.1.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:865c8e95713744cf5ae261f3067861e9da5f1370ba91fc536431e29b418676fa", size = 406400, upload-time = "2025-06-15T19:06:30.233Z" }, + { url = "https://files.pythonhosted.org/packages/64/06/a08684f628fb41addd451845aceedc2407dc3d843b4b060a7c4350ddee0c/watchfiles-1.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:42f92befc848bb7a19658f21f3e7bae80d7d005d13891c62c2cd4d4d0abb3433", size = 397920, upload-time = "2025-06-15T19:06:31.315Z" }, + { url = "https://files.pythonhosted.org/packages/79/e6/e10d5675af653b1b07d4156906858041149ca222edaf8995877f2605ba9e/watchfiles-1.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa0cc8365ab29487eb4f9979fd41b22549853389e22d5de3f134a6796e1b05a4", size = 451196, upload-time = "2025-06-15T19:06:32.435Z" }, + { url = "https://files.pythonhosted.org/packages/f6/8a/facd6988100cd0f39e89f6c550af80edb28e3a529e1ee662e750663e6b36/watchfiles-1.1.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:90ebb429e933645f3da534c89b29b665e285048973b4d2b6946526888c3eb2c7", size = 458218, upload-time = "2025-06-15T19:06:33.503Z" }, + { url = "https://files.pythonhosted.org/packages/90/26/34cbcbc4d0f2f8f9cc243007e65d741ae039f7a11ef8ec6e9cd25bee08d1/watchfiles-1.1.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c588c45da9b08ab3da81d08d7987dae6d2a3badd63acdb3e206a42dbfa7cb76f", size = 484851, upload-time = "2025-06-15T19:06:34.541Z" }, + { url = "https://files.pythonhosted.org/packages/d7/1f/f59faa9fc4b0e36dbcdd28a18c430416443b309d295d8b82e18192d120ad/watchfiles-1.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7c55b0f9f68590115c25272b06e63f0824f03d4fc7d6deed43d8ad5660cabdbf", size = 599520, upload-time = "2025-06-15T19:06:35.785Z" }, + { url = "https://files.pythonhosted.org/packages/83/72/3637abecb3bf590529f5154ca000924003e5f4bbb9619744feeaf6f0b70b/watchfiles-1.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd17a1e489f02ce9117b0de3c0b1fab1c3e2eedc82311b299ee6b6faf6c23a29", size = 477956, upload-time = "2025-06-15T19:06:36.965Z" }, + { url = "https://files.pythonhosted.org/packages/f7/f3/d14ffd9acc0c1bd4790378995e320981423263a5d70bd3929e2e0dc87fff/watchfiles-1.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da71945c9ace018d8634822f16cbc2a78323ef6c876b1d34bbf5d5222fd6a72e", size = 453196, upload-time = "2025-06-15T19:06:38.024Z" }, + { url = "https://files.pythonhosted.org/packages/7f/38/78ad77bd99e20c0fdc82262be571ef114fc0beef9b43db52adb939768c38/watchfiles-1.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:51556d5004887045dba3acdd1fdf61dddea2be0a7e18048b5e853dcd37149b86", size = 627479, upload-time = "2025-06-15T19:06:39.442Z" }, + { url = "https://files.pythonhosted.org/packages/e6/cf/549d50a22fcc83f1017c6427b1c76c053233f91b526f4ad7a45971e70c0b/watchfiles-1.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04e4ed5d1cd3eae68c89bcc1a485a109f39f2fd8de05f705e98af6b5f1861f1f", size = 624414, upload-time = "2025-06-15T19:06:40.859Z" }, + { url = "https://files.pythonhosted.org/packages/72/de/57d6e40dc9140af71c12f3a9fc2d3efc5529d93981cd4d265d484d7c9148/watchfiles-1.1.0-cp39-cp39-win32.whl", hash = "sha256:c600e85f2ffd9f1035222b1a312aff85fd11ea39baff1d705b9b047aad2ce267", size = 280020, upload-time = "2025-06-15T19:06:41.89Z" }, + { url = "https://files.pythonhosted.org/packages/88/bb/7d287fc2a762396b128a0fca2dbae29386e0a242b81d1046daf389641db3/watchfiles-1.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:3aba215958d88182e8d2acba0fdaf687745180974946609119953c0e112397dc", size = 292758, upload-time = "2025-06-15T19:06:43.251Z" }, + { url = "https://files.pythonhosted.org/packages/be/7c/a3d7c55cfa377c2f62c4ae3c6502b997186bc5e38156bafcb9b653de9a6d/watchfiles-1.1.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3a6fd40bbb50d24976eb275ccb55cd1951dfb63dbc27cae3066a6ca5f4beabd5", size = 406748, upload-time = "2025-06-15T19:06:44.2Z" }, + { url = "https://files.pythonhosted.org/packages/38/d0/c46f1b2c0ca47f3667b144de6f0515f6d1c670d72f2ca29861cac78abaa1/watchfiles-1.1.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9f811079d2f9795b5d48b55a37aa7773680a5659afe34b54cc1d86590a51507d", size = 398801, upload-time = "2025-06-15T19:06:45.774Z" }, + { url = "https://files.pythonhosted.org/packages/70/9c/9a6a42e97f92eeed77c3485a43ea96723900aefa3ac739a8c73f4bff2cd7/watchfiles-1.1.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a2726d7bfd9f76158c84c10a409b77a320426540df8c35be172444394b17f7ea", size = 451528, upload-time = "2025-06-15T19:06:46.791Z" }, + { url = "https://files.pythonhosted.org/packages/51/7b/98c7f4f7ce7ff03023cf971cd84a3ee3b790021ae7584ffffa0eb2554b96/watchfiles-1.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:df32d59cb9780f66d165a9a7a26f19df2c7d24e3bd58713108b41d0ff4f929c6", size = 454095, upload-time = "2025-06-15T19:06:48.211Z" }, + { url = "https://files.pythonhosted.org/packages/8c/6b/686dcf5d3525ad17b384fd94708e95193529b460a1b7bf40851f1328ec6e/watchfiles-1.1.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:0ece16b563b17ab26eaa2d52230c9a7ae46cf01759621f4fbbca280e438267b3", size = 406910, upload-time = "2025-06-15T19:06:49.335Z" }, + { url = "https://files.pythonhosted.org/packages/f3/d3/71c2dcf81dc1edcf8af9f4d8d63b1316fb0a2dd90cbfd427e8d9dd584a90/watchfiles-1.1.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:51b81e55d40c4b4aa8658427a3ee7ea847c591ae9e8b81ef94a90b668999353c", size = 398816, upload-time = "2025-06-15T19:06:50.433Z" }, + { url = "https://files.pythonhosted.org/packages/b8/fa/12269467b2fc006f8fce4cd6c3acfa77491dd0777d2a747415f28ccc8c60/watchfiles-1.1.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2bcdc54ea267fe72bfc7d83c041e4eb58d7d8dc6f578dfddb52f037ce62f432", size = 451584, upload-time = "2025-06-15T19:06:51.834Z" }, + { url = "https://files.pythonhosted.org/packages/bd/d3/254cea30f918f489db09d6a8435a7de7047f8cb68584477a515f160541d6/watchfiles-1.1.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:923fec6e5461c42bd7e3fd5ec37492c6f3468be0499bc0707b4bbbc16ac21792", size = 454009, upload-time = "2025-06-15T19:06:52.896Z" }, + { url = "https://files.pythonhosted.org/packages/48/93/5c96bdb65e7f88f7da40645f34c0a3c317a2931ed82161e93c91e8eddd27/watchfiles-1.1.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7b3443f4ec3ba5aa00b0e9fa90cf31d98321cbff8b925a7c7b84161619870bc9", size = 406640, upload-time = "2025-06-15T19:06:54.868Z" }, + { url = "https://files.pythonhosted.org/packages/e3/25/09204836e93e1b99cce88802ce87264a1d20610c7a8f6de24def27ad95b1/watchfiles-1.1.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:7049e52167fc75fc3cc418fc13d39a8e520cbb60ca08b47f6cedb85e181d2f2a", size = 398543, upload-time = "2025-06-15T19:06:55.95Z" }, + { url = "https://files.pythonhosted.org/packages/5e/dc/6f324a6f32c5ab73b54311b5f393a79df34c1584b8d2404cf7e6d780aa5d/watchfiles-1.1.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54062ef956807ba806559b3c3d52105ae1827a0d4ab47b621b31132b6b7e2866", size = 451787, upload-time = "2025-06-15T19:06:56.998Z" }, + { url = "https://files.pythonhosted.org/packages/45/5d/1d02ef4caa4ec02389e72d5594cdf9c67f1800a7c380baa55063c30c6598/watchfiles-1.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a7bd57a1bb02f9d5c398c0c1675384e7ab1dd39da0ca50b7f09af45fa435277", size = 454272, upload-time = "2025-06-15T19:06:58.055Z" }, +] + [[package]] name = "wcwidth" version = "0.2.13" @@ -3033,6 +5694,109 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", size = 34166, upload-time = "2024-01-06T02:10:55.763Z" }, ] +[[package]] +name = "webcolors" +version = "24.11.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7b/29/061ec845fb58521848f3739e466efd8250b4b7b98c1b6c5bf4d40b419b7e/webcolors-24.11.1.tar.gz", hash = "sha256:ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6", size = 45064, upload-time = "2024-11-11T07:43:24.224Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/60/e8/c0e05e4684d13459f93d312077a9a2efbe04d59c393bc2b8802248c908d4/webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9", size = 14934, upload-time = "2024-11-11T07:43:22.529Z" }, +] + +[[package]] +name = "webencodings" +version = "0.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923", size = 9721, upload-time = "2017-04-05T20:21:34.189Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", size = 11774, upload-time = "2017-04-05T20:21:32.581Z" }, +] + +[[package]] +name = "websocket-client" +version = "1.8.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e6/30/fba0d96b4b5fbf5948ed3f4681f7da2f9f64512e1d303f94b4cc174c24a5/websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da", size = 54648, upload-time = "2024-04-23T22:16:16.976Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526", size = 58826, upload-time = "2024-04-23T22:16:14.422Z" }, +] + +[[package]] +name = "websockets" +version = "15.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/21/e6/26d09fab466b7ca9c7737474c52be4f76a40301b08362eb2dbc19dcc16c1/websockets-15.0.1.tar.gz", hash = "sha256:82544de02076bafba038ce055ee6412d68da13ab47f0c60cab827346de828dee", size = 177016, upload-time = "2025-03-05T20:03:41.606Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/da/6462a9f510c0c49837bbc9345aca92d767a56c1fb2939e1579df1e1cdcf7/websockets-15.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d63efaa0cd96cf0c5fe4d581521d9fa87744540d4bc999ae6e08595a1014b45b", size = 175423, upload-time = "2025-03-05T20:01:35.363Z" }, + { url = "https://files.pythonhosted.org/packages/1c/9f/9d11c1a4eb046a9e106483b9ff69bce7ac880443f00e5ce64261b47b07e7/websockets-15.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ac60e3b188ec7574cb761b08d50fcedf9d77f1530352db4eef1707fe9dee7205", size = 173080, upload-time = "2025-03-05T20:01:37.304Z" }, + { url = "https://files.pythonhosted.org/packages/d5/4f/b462242432d93ea45f297b6179c7333dd0402b855a912a04e7fc61c0d71f/websockets-15.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5756779642579d902eed757b21b0164cd6fe338506a8083eb58af5c372e39d9a", size = 173329, upload-time = "2025-03-05T20:01:39.668Z" }, + { url = "https://files.pythonhosted.org/packages/6e/0c/6afa1f4644d7ed50284ac59cc70ef8abd44ccf7d45850d989ea7310538d0/websockets-15.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fdfe3e2a29e4db3659dbd5bbf04560cea53dd9610273917799f1cde46aa725e", size = 182312, upload-time = "2025-03-05T20:01:41.815Z" }, + { url = "https://files.pythonhosted.org/packages/dd/d4/ffc8bd1350b229ca7a4db2a3e1c482cf87cea1baccd0ef3e72bc720caeec/websockets-15.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c2529b320eb9e35af0fa3016c187dffb84a3ecc572bcee7c3ce302bfeba52bf", size = 181319, upload-time = "2025-03-05T20:01:43.967Z" }, + { url = "https://files.pythonhosted.org/packages/97/3a/5323a6bb94917af13bbb34009fac01e55c51dfde354f63692bf2533ffbc2/websockets-15.0.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac1e5c9054fe23226fb11e05a6e630837f074174c4c2f0fe442996112a6de4fb", size = 181631, upload-time = "2025-03-05T20:01:46.104Z" }, + { url = "https://files.pythonhosted.org/packages/a6/cc/1aeb0f7cee59ef065724041bb7ed667b6ab1eeffe5141696cccec2687b66/websockets-15.0.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:5df592cd503496351d6dc14f7cdad49f268d8e618f80dce0cd5a36b93c3fc08d", size = 182016, upload-time = "2025-03-05T20:01:47.603Z" }, + { url = "https://files.pythonhosted.org/packages/79/f9/c86f8f7af208e4161a7f7e02774e9d0a81c632ae76db2ff22549e1718a51/websockets-15.0.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0a34631031a8f05657e8e90903e656959234f3a04552259458aac0b0f9ae6fd9", size = 181426, upload-time = "2025-03-05T20:01:48.949Z" }, + { url = "https://files.pythonhosted.org/packages/c7/b9/828b0bc6753db905b91df6ae477c0b14a141090df64fb17f8a9d7e3516cf/websockets-15.0.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3d00075aa65772e7ce9e990cab3ff1de702aa09be3940d1dc88d5abf1ab8a09c", size = 181360, upload-time = "2025-03-05T20:01:50.938Z" }, + { url = "https://files.pythonhosted.org/packages/89/fb/250f5533ec468ba6327055b7d98b9df056fb1ce623b8b6aaafb30b55d02e/websockets-15.0.1-cp310-cp310-win32.whl", hash = "sha256:1234d4ef35db82f5446dca8e35a7da7964d02c127b095e172e54397fb6a6c256", size = 176388, upload-time = "2025-03-05T20:01:52.213Z" }, + { url = "https://files.pythonhosted.org/packages/1c/46/aca7082012768bb98e5608f01658ff3ac8437e563eca41cf068bd5849a5e/websockets-15.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:39c1fec2c11dc8d89bba6b2bf1556af381611a173ac2b511cf7231622058af41", size = 176830, upload-time = "2025-03-05T20:01:53.922Z" }, + { url = "https://files.pythonhosted.org/packages/9f/32/18fcd5919c293a398db67443acd33fde142f283853076049824fc58e6f75/websockets-15.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:823c248b690b2fd9303ba00c4f66cd5e2d8c3ba4aa968b2779be9532a4dad431", size = 175423, upload-time = "2025-03-05T20:01:56.276Z" }, + { url = "https://files.pythonhosted.org/packages/76/70/ba1ad96b07869275ef42e2ce21f07a5b0148936688c2baf7e4a1f60d5058/websockets-15.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678999709e68425ae2593acf2e3ebcbcf2e69885a5ee78f9eb80e6e371f1bf57", size = 173082, upload-time = "2025-03-05T20:01:57.563Z" }, + { url = "https://files.pythonhosted.org/packages/86/f2/10b55821dd40eb696ce4704a87d57774696f9451108cff0d2824c97e0f97/websockets-15.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d50fd1ee42388dcfb2b3676132c78116490976f1300da28eb629272d5d93e905", size = 173330, upload-time = "2025-03-05T20:01:59.063Z" }, + { url = "https://files.pythonhosted.org/packages/a5/90/1c37ae8b8a113d3daf1065222b6af61cc44102da95388ac0018fcb7d93d9/websockets-15.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d99e5546bf73dbad5bf3547174cd6cb8ba7273062a23808ffea025ecb1cf8562", size = 182878, upload-time = "2025-03-05T20:02:00.305Z" }, + { url = "https://files.pythonhosted.org/packages/8e/8d/96e8e288b2a41dffafb78e8904ea7367ee4f891dafc2ab8d87e2124cb3d3/websockets-15.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:66dd88c918e3287efc22409d426c8f729688d89a0c587c88971a0faa2c2f3792", size = 181883, upload-time = "2025-03-05T20:02:03.148Z" }, + { url = "https://files.pythonhosted.org/packages/93/1f/5d6dbf551766308f6f50f8baf8e9860be6182911e8106da7a7f73785f4c4/websockets-15.0.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8dd8327c795b3e3f219760fa603dcae1dcc148172290a8ab15158cf85a953413", size = 182252, upload-time = "2025-03-05T20:02:05.29Z" }, + { url = "https://files.pythonhosted.org/packages/d4/78/2d4fed9123e6620cbf1706c0de8a1632e1a28e7774d94346d7de1bba2ca3/websockets-15.0.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8fdc51055e6ff4adeb88d58a11042ec9a5eae317a0a53d12c062c8a8865909e8", size = 182521, upload-time = "2025-03-05T20:02:07.458Z" }, + { url = "https://files.pythonhosted.org/packages/e7/3b/66d4c1b444dd1a9823c4a81f50231b921bab54eee2f69e70319b4e21f1ca/websockets-15.0.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:693f0192126df6c2327cce3baa7c06f2a117575e32ab2308f7f8216c29d9e2e3", size = 181958, upload-time = "2025-03-05T20:02:09.842Z" }, + { url = "https://files.pythonhosted.org/packages/08/ff/e9eed2ee5fed6f76fdd6032ca5cd38c57ca9661430bb3d5fb2872dc8703c/websockets-15.0.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:54479983bd5fb469c38f2f5c7e3a24f9a4e70594cd68cd1fa6b9340dadaff7cf", size = 181918, upload-time = "2025-03-05T20:02:11.968Z" }, + { url = "https://files.pythonhosted.org/packages/d8/75/994634a49b7e12532be6a42103597b71098fd25900f7437d6055ed39930a/websockets-15.0.1-cp311-cp311-win32.whl", hash = "sha256:16b6c1b3e57799b9d38427dda63edcbe4926352c47cf88588c0be4ace18dac85", size = 176388, upload-time = "2025-03-05T20:02:13.32Z" }, + { url = "https://files.pythonhosted.org/packages/98/93/e36c73f78400a65f5e236cd376713c34182e6663f6889cd45a4a04d8f203/websockets-15.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:27ccee0071a0e75d22cb35849b1db43f2ecd3e161041ac1ee9d2352ddf72f065", size = 176828, upload-time = "2025-03-05T20:02:14.585Z" }, + { url = "https://files.pythonhosted.org/packages/51/6b/4545a0d843594f5d0771e86463606a3988b5a09ca5123136f8a76580dd63/websockets-15.0.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:3e90baa811a5d73f3ca0bcbf32064d663ed81318ab225ee4f427ad4e26e5aff3", size = 175437, upload-time = "2025-03-05T20:02:16.706Z" }, + { url = "https://files.pythonhosted.org/packages/f4/71/809a0f5f6a06522af902e0f2ea2757f71ead94610010cf570ab5c98e99ed/websockets-15.0.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:592f1a9fe869c778694f0aa806ba0374e97648ab57936f092fd9d87f8bc03665", size = 173096, upload-time = "2025-03-05T20:02:18.832Z" }, + { url = "https://files.pythonhosted.org/packages/3d/69/1a681dd6f02180916f116894181eab8b2e25b31e484c5d0eae637ec01f7c/websockets-15.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0701bc3cfcb9164d04a14b149fd74be7347a530ad3bbf15ab2c678a2cd3dd9a2", size = 173332, upload-time = "2025-03-05T20:02:20.187Z" }, + { url = "https://files.pythonhosted.org/packages/a6/02/0073b3952f5bce97eafbb35757f8d0d54812b6174ed8dd952aa08429bcc3/websockets-15.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8b56bdcdb4505c8078cb6c7157d9811a85790f2f2b3632c7d1462ab5783d215", size = 183152, upload-time = "2025-03-05T20:02:22.286Z" }, + { url = "https://files.pythonhosted.org/packages/74/45/c205c8480eafd114b428284840da0b1be9ffd0e4f87338dc95dc6ff961a1/websockets-15.0.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0af68c55afbd5f07986df82831c7bff04846928ea8d1fd7f30052638788bc9b5", size = 182096, upload-time = "2025-03-05T20:02:24.368Z" }, + { url = "https://files.pythonhosted.org/packages/14/8f/aa61f528fba38578ec553c145857a181384c72b98156f858ca5c8e82d9d3/websockets-15.0.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64dee438fed052b52e4f98f76c5790513235efaa1ef7f3f2192c392cd7c91b65", size = 182523, upload-time = "2025-03-05T20:02:25.669Z" }, + { url = "https://files.pythonhosted.org/packages/ec/6d/0267396610add5bc0d0d3e77f546d4cd287200804fe02323797de77dbce9/websockets-15.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d5f6b181bb38171a8ad1d6aa58a67a6aa9d4b38d0f8c5f496b9e42561dfc62fe", size = 182790, upload-time = "2025-03-05T20:02:26.99Z" }, + { url = "https://files.pythonhosted.org/packages/02/05/c68c5adbf679cf610ae2f74a9b871ae84564462955d991178f95a1ddb7dd/websockets-15.0.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5d54b09eba2bada6011aea5375542a157637b91029687eb4fdb2dab11059c1b4", size = 182165, upload-time = "2025-03-05T20:02:30.291Z" }, + { url = "https://files.pythonhosted.org/packages/29/93/bb672df7b2f5faac89761cb5fa34f5cec45a4026c383a4b5761c6cea5c16/websockets-15.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3be571a8b5afed347da347bfcf27ba12b069d9d7f42cb8c7028b5e98bbb12597", size = 182160, upload-time = "2025-03-05T20:02:31.634Z" }, + { url = "https://files.pythonhosted.org/packages/ff/83/de1f7709376dc3ca9b7eeb4b9a07b4526b14876b6d372a4dc62312bebee0/websockets-15.0.1-cp312-cp312-win32.whl", hash = "sha256:c338ffa0520bdb12fbc527265235639fb76e7bc7faafbb93f6ba80d9c06578a9", size = 176395, upload-time = "2025-03-05T20:02:33.017Z" }, + { url = "https://files.pythonhosted.org/packages/7d/71/abf2ebc3bbfa40f391ce1428c7168fb20582d0ff57019b69ea20fa698043/websockets-15.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:fcd5cf9e305d7b8338754470cf69cf81f420459dbae8a3b40cee57417f4614a7", size = 176841, upload-time = "2025-03-05T20:02:34.498Z" }, + { url = "https://files.pythonhosted.org/packages/cb/9f/51f0cf64471a9d2b4d0fc6c534f323b664e7095640c34562f5182e5a7195/websockets-15.0.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ee443ef070bb3b6ed74514f5efaa37a252af57c90eb33b956d35c8e9c10a1931", size = 175440, upload-time = "2025-03-05T20:02:36.695Z" }, + { url = "https://files.pythonhosted.org/packages/8a/05/aa116ec9943c718905997412c5989f7ed671bc0188ee2ba89520e8765d7b/websockets-15.0.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5a939de6b7b4e18ca683218320fc67ea886038265fd1ed30173f5ce3f8e85675", size = 173098, upload-time = "2025-03-05T20:02:37.985Z" }, + { url = "https://files.pythonhosted.org/packages/ff/0b/33cef55ff24f2d92924923c99926dcce78e7bd922d649467f0eda8368923/websockets-15.0.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:746ee8dba912cd6fc889a8147168991d50ed70447bf18bcda7039f7d2e3d9151", size = 173329, upload-time = "2025-03-05T20:02:39.298Z" }, + { url = "https://files.pythonhosted.org/packages/31/1d/063b25dcc01faa8fada1469bdf769de3768b7044eac9d41f734fd7b6ad6d/websockets-15.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:595b6c3969023ecf9041b2936ac3827e4623bfa3ccf007575f04c5a6aa318c22", size = 183111, upload-time = "2025-03-05T20:02:40.595Z" }, + { url = "https://files.pythonhosted.org/packages/93/53/9a87ee494a51bf63e4ec9241c1ccc4f7c2f45fff85d5bde2ff74fcb68b9e/websockets-15.0.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3c714d2fc58b5ca3e285461a4cc0c9a66bd0e24c5da9911e30158286c9b5be7f", size = 182054, upload-time = "2025-03-05T20:02:41.926Z" }, + { url = "https://files.pythonhosted.org/packages/ff/b2/83a6ddf56cdcbad4e3d841fcc55d6ba7d19aeb89c50f24dd7e859ec0805f/websockets-15.0.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f3c1e2ab208db911594ae5b4f79addeb3501604a165019dd221c0bdcabe4db8", size = 182496, upload-time = "2025-03-05T20:02:43.304Z" }, + { url = "https://files.pythonhosted.org/packages/98/41/e7038944ed0abf34c45aa4635ba28136f06052e08fc2168520bb8b25149f/websockets-15.0.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:229cf1d3ca6c1804400b0a9790dc66528e08a6a1feec0d5040e8b9eb14422375", size = 182829, upload-time = "2025-03-05T20:02:48.812Z" }, + { url = "https://files.pythonhosted.org/packages/e0/17/de15b6158680c7623c6ef0db361da965ab25d813ae54fcfeae2e5b9ef910/websockets-15.0.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:756c56e867a90fb00177d530dca4b097dd753cde348448a1012ed6c5131f8b7d", size = 182217, upload-time = "2025-03-05T20:02:50.14Z" }, + { url = "https://files.pythonhosted.org/packages/33/2b/1f168cb6041853eef0362fb9554c3824367c5560cbdaad89ac40f8c2edfc/websockets-15.0.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:558d023b3df0bffe50a04e710bc87742de35060580a293c2a984299ed83bc4e4", size = 182195, upload-time = "2025-03-05T20:02:51.561Z" }, + { url = "https://files.pythonhosted.org/packages/86/eb/20b6cdf273913d0ad05a6a14aed4b9a85591c18a987a3d47f20fa13dcc47/websockets-15.0.1-cp313-cp313-win32.whl", hash = "sha256:ba9e56e8ceeeedb2e080147ba85ffcd5cd0711b89576b83784d8605a7df455fa", size = 176393, upload-time = "2025-03-05T20:02:53.814Z" }, + { url = "https://files.pythonhosted.org/packages/1b/6c/c65773d6cab416a64d191d6ee8a8b1c68a09970ea6909d16965d26bfed1e/websockets-15.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:e09473f095a819042ecb2ab9465aee615bd9c2028e4ef7d933600a8401c79561", size = 176837, upload-time = "2025-03-05T20:02:55.237Z" }, + { url = "https://files.pythonhosted.org/packages/36/db/3fff0bcbe339a6fa6a3b9e3fbc2bfb321ec2f4cd233692272c5a8d6cf801/websockets-15.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5f4c04ead5aed67c8a1a20491d54cdfba5884507a48dd798ecaf13c74c4489f5", size = 175424, upload-time = "2025-03-05T20:02:56.505Z" }, + { url = "https://files.pythonhosted.org/packages/46/e6/519054c2f477def4165b0ec060ad664ed174e140b0d1cbb9fafa4a54f6db/websockets-15.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:abdc0c6c8c648b4805c5eacd131910d2a7f6455dfd3becab248ef108e89ab16a", size = 173077, upload-time = "2025-03-05T20:02:58.37Z" }, + { url = "https://files.pythonhosted.org/packages/1a/21/c0712e382df64c93a0d16449ecbf87b647163485ca1cc3f6cbadb36d2b03/websockets-15.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a625e06551975f4b7ea7102bc43895b90742746797e2e14b70ed61c43a90f09b", size = 173324, upload-time = "2025-03-05T20:02:59.773Z" }, + { url = "https://files.pythonhosted.org/packages/1c/cb/51ba82e59b3a664df54beed8ad95517c1b4dc1a913730e7a7db778f21291/websockets-15.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d591f8de75824cbb7acad4e05d2d710484f15f29d4a915092675ad3456f11770", size = 182094, upload-time = "2025-03-05T20:03:01.827Z" }, + { url = "https://files.pythonhosted.org/packages/fb/0f/bf3788c03fec679bcdaef787518dbe60d12fe5615a544a6d4cf82f045193/websockets-15.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:47819cea040f31d670cc8d324bb6435c6f133b8c7a19ec3d61634e62f8d8f9eb", size = 181094, upload-time = "2025-03-05T20:03:03.123Z" }, + { url = "https://files.pythonhosted.org/packages/5e/da/9fb8c21edbc719b66763a571afbaf206cb6d3736d28255a46fc2fe20f902/websockets-15.0.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac017dd64572e5c3bd01939121e4d16cf30e5d7e110a119399cf3133b63ad054", size = 181397, upload-time = "2025-03-05T20:03:04.443Z" }, + { url = "https://files.pythonhosted.org/packages/2e/65/65f379525a2719e91d9d90c38fe8b8bc62bd3c702ac651b7278609b696c4/websockets-15.0.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:4a9fac8e469d04ce6c25bb2610dc535235bd4aa14996b4e6dbebf5e007eba5ee", size = 181794, upload-time = "2025-03-05T20:03:06.708Z" }, + { url = "https://files.pythonhosted.org/packages/d9/26/31ac2d08f8e9304d81a1a7ed2851c0300f636019a57cbaa91342015c72cc/websockets-15.0.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:363c6f671b761efcb30608d24925a382497c12c506b51661883c3e22337265ed", size = 181194, upload-time = "2025-03-05T20:03:08.844Z" }, + { url = "https://files.pythonhosted.org/packages/98/72/1090de20d6c91994cd4b357c3f75a4f25ee231b63e03adea89671cc12a3f/websockets-15.0.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2034693ad3097d5355bfdacfffcbd3ef5694f9718ab7f29c29689a9eae841880", size = 181164, upload-time = "2025-03-05T20:03:10.242Z" }, + { url = "https://files.pythonhosted.org/packages/2d/37/098f2e1c103ae8ed79b0e77f08d83b0ec0b241cf4b7f2f10edd0126472e1/websockets-15.0.1-cp39-cp39-win32.whl", hash = "sha256:3b1ac0d3e594bf121308112697cf4b32be538fb1444468fb0a6ae4feebc83411", size = 176381, upload-time = "2025-03-05T20:03:12.77Z" }, + { url = "https://files.pythonhosted.org/packages/75/8b/a32978a3ab42cebb2ebdd5b05df0696a09f4d436ce69def11893afa301f0/websockets-15.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:b7643a03db5c95c799b89b31c036d5f27eeb4d259c798e878d6937d71832b1e4", size = 176841, upload-time = "2025-03-05T20:03:14.367Z" }, + { url = "https://files.pythonhosted.org/packages/02/9e/d40f779fa16f74d3468357197af8d6ad07e7c5a27ea1ca74ceb38986f77a/websockets-15.0.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0c9e74d766f2818bb95f84c25be4dea09841ac0f734d1966f415e4edfc4ef1c3", size = 173109, upload-time = "2025-03-05T20:03:17.769Z" }, + { url = "https://files.pythonhosted.org/packages/bc/cd/5b887b8585a593073fd92f7c23ecd3985cd2c3175025a91b0d69b0551372/websockets-15.0.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1009ee0c7739c08a0cd59de430d6de452a55e42d6b522de7aa15e6f67db0b8e1", size = 173343, upload-time = "2025-03-05T20:03:19.094Z" }, + { url = "https://files.pythonhosted.org/packages/fe/ae/d34f7556890341e900a95acf4886833646306269f899d58ad62f588bf410/websockets-15.0.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76d1f20b1c7a2fa82367e04982e708723ba0e7b8d43aa643d3dcd404d74f1475", size = 174599, upload-time = "2025-03-05T20:03:21.1Z" }, + { url = "https://files.pythonhosted.org/packages/71/e6/5fd43993a87db364ec60fc1d608273a1a465c0caba69176dd160e197ce42/websockets-15.0.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f29d80eb9a9263b8d109135351caf568cc3f80b9928bccde535c235de55c22d9", size = 174207, upload-time = "2025-03-05T20:03:23.221Z" }, + { url = "https://files.pythonhosted.org/packages/2b/fb/c492d6daa5ec067c2988ac80c61359ace5c4c674c532985ac5a123436cec/websockets-15.0.1-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b359ed09954d7c18bbc1680f380c7301f92c60bf924171629c5db97febb12f04", size = 174155, upload-time = "2025-03-05T20:03:25.321Z" }, + { url = "https://files.pythonhosted.org/packages/68/a1/dcb68430b1d00b698ae7a7e0194433bce4f07ded185f0ee5fb21e2a2e91e/websockets-15.0.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:cad21560da69f4ce7658ca2cb83138fb4cf695a2ba3e475e0559e05991aa8122", size = 176884, upload-time = "2025-03-05T20:03:27.934Z" }, + { url = "https://files.pythonhosted.org/packages/b7/48/4b67623bac4d79beb3a6bb27b803ba75c1bdedc06bd827e465803690a4b2/websockets-15.0.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7f493881579c90fc262d9cdbaa05a6b54b3811c2f300766748db79f098db9940", size = 173106, upload-time = "2025-03-05T20:03:29.404Z" }, + { url = "https://files.pythonhosted.org/packages/ed/f0/adb07514a49fe5728192764e04295be78859e4a537ab8fcc518a3dbb3281/websockets-15.0.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:47b099e1f4fbc95b701b6e85768e1fcdaf1630f3cbe4765fa216596f12310e2e", size = 173339, upload-time = "2025-03-05T20:03:30.755Z" }, + { url = "https://files.pythonhosted.org/packages/87/28/bd23c6344b18fb43df40d0700f6d3fffcd7cef14a6995b4f976978b52e62/websockets-15.0.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67f2b6de947f8c757db2db9c71527933ad0019737ec374a8a6be9a956786aaf9", size = 174597, upload-time = "2025-03-05T20:03:32.247Z" }, + { url = "https://files.pythonhosted.org/packages/6d/79/ca288495863d0f23a60f546f0905ae8f3ed467ad87f8b6aceb65f4c013e4/websockets-15.0.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d08eb4c2b7d6c41da6ca0600c077e93f5adcfd979cd777d747e9ee624556da4b", size = 174205, upload-time = "2025-03-05T20:03:33.731Z" }, + { url = "https://files.pythonhosted.org/packages/04/e4/120ff3180b0872b1fe6637f6f995bcb009fb5c87d597c1fc21456f50c848/websockets-15.0.1-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b826973a4a2ae47ba357e4e82fa44a463b8f168e1ca775ac64521442b19e87f", size = 174150, upload-time = "2025-03-05T20:03:35.757Z" }, + { url = "https://files.pythonhosted.org/packages/cb/c3/30e2f9c539b8da8b1d76f64012f3b19253271a63413b2d3adb94b143407f/websockets-15.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:21c1fa28a6a7e3cbdc171c694398b6df4744613ce9b36b1a498e816787e28123", size = 176877, upload-time = "2025-03-05T20:03:37.199Z" }, + { url = "https://files.pythonhosted.org/packages/fa/a8/5b41e0da817d64113292ab1f8247140aac61cbf6cfd085d6a0fa77f4984f/websockets-15.0.1-py3-none-any.whl", hash = "sha256:f7a866fbc1e97b5c617ee4116daaa09b722101d4a3c170c787450ba409f9736f", size = 169743, upload-time = "2025-03-05T20:03:39.41Z" }, +] + [[package]] name = "widgetsnbextension" version = "4.0.14" @@ -3042,6 +5806,197 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ca/51/5447876806d1088a0f8f71e16542bf350918128d0a69437df26047c8e46f/widgetsnbextension-4.0.14-py3-none-any.whl", hash = "sha256:4875a9eaf72fbf5079dc372a51a9f268fc38d46f767cbf85c43a36da5cb9b575", size = 2196503, upload-time = "2025-04-10T13:01:23.086Z" }, ] +[[package]] +name = "wrapt" +version = "1.17.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c3/fc/e91cc220803d7bc4db93fb02facd8461c37364151b8494762cc88b0fbcef/wrapt-1.17.2.tar.gz", hash = "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3", size = 55531, upload-time = "2025-01-14T10:35:45.465Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/d1/1daec934997e8b160040c78d7b31789f19b122110a75eca3d4e8da0049e1/wrapt-1.17.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3d57c572081fed831ad2d26fd430d565b76aa277ed1d30ff4d40670b1c0dd984", size = 53307, upload-time = "2025-01-14T10:33:13.616Z" }, + { url = "https://files.pythonhosted.org/packages/1b/7b/13369d42651b809389c1a7153baa01d9700430576c81a2f5c5e460df0ed9/wrapt-1.17.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b5e251054542ae57ac7f3fba5d10bfff615b6c2fb09abeb37d2f1463f841ae22", size = 38486, upload-time = "2025-01-14T10:33:15.947Z" }, + { url = "https://files.pythonhosted.org/packages/62/bf/e0105016f907c30b4bd9e377867c48c34dc9c6c0c104556c9c9126bd89ed/wrapt-1.17.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:80dd7db6a7cb57ffbc279c4394246414ec99537ae81ffd702443335a61dbf3a7", size = 38777, upload-time = "2025-01-14T10:33:17.462Z" }, + { url = "https://files.pythonhosted.org/packages/27/70/0f6e0679845cbf8b165e027d43402a55494779295c4b08414097b258ac87/wrapt-1.17.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a6e821770cf99cc586d33833b2ff32faebdbe886bd6322395606cf55153246c", size = 83314, upload-time = "2025-01-14T10:33:21.282Z" }, + { url = "https://files.pythonhosted.org/packages/0f/77/0576d841bf84af8579124a93d216f55d6f74374e4445264cb378a6ed33eb/wrapt-1.17.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b60fb58b90c6d63779cb0c0c54eeb38941bae3ecf7a73c764c52c88c2dcb9d72", size = 74947, upload-time = "2025-01-14T10:33:24.414Z" }, + { url = "https://files.pythonhosted.org/packages/90/ec/00759565518f268ed707dcc40f7eeec38637d46b098a1f5143bff488fe97/wrapt-1.17.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b870b5df5b71d8c3359d21be8f0d6c485fa0ebdb6477dda51a1ea54a9b558061", size = 82778, upload-time = "2025-01-14T10:33:26.152Z" }, + { url = "https://files.pythonhosted.org/packages/f8/5a/7cffd26b1c607b0b0c8a9ca9d75757ad7620c9c0a9b4a25d3f8a1480fafc/wrapt-1.17.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4011d137b9955791f9084749cba9a367c68d50ab8d11d64c50ba1688c9b457f2", size = 81716, upload-time = "2025-01-14T10:33:27.372Z" }, + { url = "https://files.pythonhosted.org/packages/7e/09/dccf68fa98e862df7e6a60a61d43d644b7d095a5fc36dbb591bbd4a1c7b2/wrapt-1.17.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:1473400e5b2733e58b396a04eb7f35f541e1fb976d0c0724d0223dd607e0f74c", size = 74548, upload-time = "2025-01-14T10:33:28.52Z" }, + { url = "https://files.pythonhosted.org/packages/b7/8e/067021fa3c8814952c5e228d916963c1115b983e21393289de15128e867e/wrapt-1.17.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3cedbfa9c940fdad3e6e941db7138e26ce8aad38ab5fe9dcfadfed9db7a54e62", size = 81334, upload-time = "2025-01-14T10:33:29.643Z" }, + { url = "https://files.pythonhosted.org/packages/4b/0d/9d4b5219ae4393f718699ca1c05f5ebc0c40d076f7e65fd48f5f693294fb/wrapt-1.17.2-cp310-cp310-win32.whl", hash = "sha256:582530701bff1dec6779efa00c516496968edd851fba224fbd86e46cc6b73563", size = 36427, upload-time = "2025-01-14T10:33:30.832Z" }, + { url = "https://files.pythonhosted.org/packages/72/6a/c5a83e8f61aec1e1aeef939807602fb880e5872371e95df2137142f5c58e/wrapt-1.17.2-cp310-cp310-win_amd64.whl", hash = "sha256:58705da316756681ad3c9c73fd15499aa4d8c69f9fd38dc8a35e06c12468582f", size = 38774, upload-time = "2025-01-14T10:33:32.897Z" }, + { url = "https://files.pythonhosted.org/packages/cd/f7/a2aab2cbc7a665efab072344a8949a71081eed1d2f451f7f7d2b966594a2/wrapt-1.17.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ff04ef6eec3eee8a5efef2401495967a916feaa353643defcc03fc74fe213b58", size = 53308, upload-time = "2025-01-14T10:33:33.992Z" }, + { url = "https://files.pythonhosted.org/packages/50/ff/149aba8365fdacef52b31a258c4dc1c57c79759c335eff0b3316a2664a64/wrapt-1.17.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db983e7bca53819efdbd64590ee96c9213894272c776966ca6306b73e4affda", size = 38488, upload-time = "2025-01-14T10:33:35.264Z" }, + { url = "https://files.pythonhosted.org/packages/65/46/5a917ce85b5c3b490d35c02bf71aedaa9f2f63f2d15d9949cc4ba56e8ba9/wrapt-1.17.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9abc77a4ce4c6f2a3168ff34b1da9b0f311a8f1cfd694ec96b0603dff1c79438", size = 38776, upload-time = "2025-01-14T10:33:38.28Z" }, + { url = "https://files.pythonhosted.org/packages/ca/74/336c918d2915a4943501c77566db41d1bd6e9f4dbc317f356b9a244dfe83/wrapt-1.17.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b929ac182f5ace000d459c59c2c9c33047e20e935f8e39371fa6e3b85d56f4a", size = 83776, upload-time = "2025-01-14T10:33:40.678Z" }, + { url = "https://files.pythonhosted.org/packages/09/99/c0c844a5ccde0fe5761d4305485297f91d67cf2a1a824c5f282e661ec7ff/wrapt-1.17.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f09b286faeff3c750a879d336fb6d8713206fc97af3adc14def0cdd349df6000", size = 75420, upload-time = "2025-01-14T10:33:41.868Z" }, + { url = "https://files.pythonhosted.org/packages/b4/b0/9fc566b0fe08b282c850063591a756057c3247b2362b9286429ec5bf1721/wrapt-1.17.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a7ed2d9d039bd41e889f6fb9364554052ca21ce823580f6a07c4ec245c1f5d6", size = 83199, upload-time = "2025-01-14T10:33:43.598Z" }, + { url = "https://files.pythonhosted.org/packages/9d/4b/71996e62d543b0a0bd95dda485219856def3347e3e9380cc0d6cf10cfb2f/wrapt-1.17.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:129a150f5c445165ff941fc02ee27df65940fcb8a22a61828b1853c98763a64b", size = 82307, upload-time = "2025-01-14T10:33:48.499Z" }, + { url = "https://files.pythonhosted.org/packages/39/35/0282c0d8789c0dc9bcc738911776c762a701f95cfe113fb8f0b40e45c2b9/wrapt-1.17.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1fb5699e4464afe5c7e65fa51d4f99e0b2eadcc176e4aa33600a3df7801d6662", size = 75025, upload-time = "2025-01-14T10:33:51.191Z" }, + { url = "https://files.pythonhosted.org/packages/4f/6d/90c9fd2c3c6fee181feecb620d95105370198b6b98a0770cba090441a828/wrapt-1.17.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9a2bce789a5ea90e51a02dfcc39e31b7f1e662bc3317979aa7e5538e3a034f72", size = 81879, upload-time = "2025-01-14T10:33:52.328Z" }, + { url = "https://files.pythonhosted.org/packages/8f/fa/9fb6e594f2ce03ef03eddbdb5f4f90acb1452221a5351116c7c4708ac865/wrapt-1.17.2-cp311-cp311-win32.whl", hash = "sha256:4afd5814270fdf6380616b321fd31435a462019d834f83c8611a0ce7484c7317", size = 36419, upload-time = "2025-01-14T10:33:53.551Z" }, + { url = "https://files.pythonhosted.org/packages/47/f8/fb1773491a253cbc123c5d5dc15c86041f746ed30416535f2a8df1f4a392/wrapt-1.17.2-cp311-cp311-win_amd64.whl", hash = "sha256:acc130bc0375999da18e3d19e5a86403667ac0c4042a094fefb7eec8ebac7cf3", size = 38773, upload-time = "2025-01-14T10:33:56.323Z" }, + { url = "https://files.pythonhosted.org/packages/a1/bd/ab55f849fd1f9a58ed7ea47f5559ff09741b25f00c191231f9f059c83949/wrapt-1.17.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d5e2439eecc762cd85e7bd37161d4714aa03a33c5ba884e26c81559817ca0925", size = 53799, upload-time = "2025-01-14T10:33:57.4Z" }, + { url = "https://files.pythonhosted.org/packages/53/18/75ddc64c3f63988f5a1d7e10fb204ffe5762bc663f8023f18ecaf31a332e/wrapt-1.17.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fc7cb4c1c744f8c05cd5f9438a3caa6ab94ce8344e952d7c45a8ed59dd88392", size = 38821, upload-time = "2025-01-14T10:33:59.334Z" }, + { url = "https://files.pythonhosted.org/packages/48/2a/97928387d6ed1c1ebbfd4efc4133a0633546bec8481a2dd5ec961313a1c7/wrapt-1.17.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fdbdb757d5390f7c675e558fd3186d590973244fab0c5fe63d373ade3e99d40", size = 38919, upload-time = "2025-01-14T10:34:04.093Z" }, + { url = "https://files.pythonhosted.org/packages/73/54/3bfe5a1febbbccb7a2f77de47b989c0b85ed3a6a41614b104204a788c20e/wrapt-1.17.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bb1d0dbf99411f3d871deb6faa9aabb9d4e744d67dcaaa05399af89d847a91d", size = 88721, upload-time = "2025-01-14T10:34:07.163Z" }, + { url = "https://files.pythonhosted.org/packages/25/cb/7262bc1b0300b4b64af50c2720ef958c2c1917525238d661c3e9a2b71b7b/wrapt-1.17.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d18a4865f46b8579d44e4fe1e2bcbc6472ad83d98e22a26c963d46e4c125ef0b", size = 80899, upload-time = "2025-01-14T10:34:09.82Z" }, + { url = "https://files.pythonhosted.org/packages/2a/5a/04cde32b07a7431d4ed0553a76fdb7a61270e78c5fd5a603e190ac389f14/wrapt-1.17.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc570b5f14a79734437cb7b0500376b6b791153314986074486e0b0fa8d71d98", size = 89222, upload-time = "2025-01-14T10:34:11.258Z" }, + { url = "https://files.pythonhosted.org/packages/09/28/2e45a4f4771fcfb109e244d5dbe54259e970362a311b67a965555ba65026/wrapt-1.17.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6d9187b01bebc3875bac9b087948a2bccefe464a7d8f627cf6e48b1bbae30f82", size = 86707, upload-time = "2025-01-14T10:34:12.49Z" }, + { url = "https://files.pythonhosted.org/packages/c6/d2/dcb56bf5f32fcd4bd9aacc77b50a539abdd5b6536872413fd3f428b21bed/wrapt-1.17.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9e8659775f1adf02eb1e6f109751268e493c73716ca5761f8acb695e52a756ae", size = 79685, upload-time = "2025-01-14T10:34:15.043Z" }, + { url = "https://files.pythonhosted.org/packages/80/4e/eb8b353e36711347893f502ce91c770b0b0929f8f0bed2670a6856e667a9/wrapt-1.17.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8b2816ebef96d83657b56306152a93909a83f23994f4b30ad4573b00bd11bb9", size = 87567, upload-time = "2025-01-14T10:34:16.563Z" }, + { url = "https://files.pythonhosted.org/packages/17/27/4fe749a54e7fae6e7146f1c7d914d28ef599dacd4416566c055564080fe2/wrapt-1.17.2-cp312-cp312-win32.whl", hash = "sha256:468090021f391fe0056ad3e807e3d9034e0fd01adcd3bdfba977b6fdf4213ea9", size = 36672, upload-time = "2025-01-14T10:34:17.727Z" }, + { url = "https://files.pythonhosted.org/packages/15/06/1dbf478ea45c03e78a6a8c4be4fdc3c3bddea5c8de8a93bc971415e47f0f/wrapt-1.17.2-cp312-cp312-win_amd64.whl", hash = "sha256:ec89ed91f2fa8e3f52ae53cd3cf640d6feff92ba90d62236a81e4e563ac0e991", size = 38865, upload-time = "2025-01-14T10:34:19.577Z" }, + { url = "https://files.pythonhosted.org/packages/ce/b9/0ffd557a92f3b11d4c5d5e0c5e4ad057bd9eb8586615cdaf901409920b14/wrapt-1.17.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6ed6ffac43aecfe6d86ec5b74b06a5be33d5bb9243d055141e8cabb12aa08125", size = 53800, upload-time = "2025-01-14T10:34:21.571Z" }, + { url = "https://files.pythonhosted.org/packages/c0/ef/8be90a0b7e73c32e550c73cfb2fa09db62234227ece47b0e80a05073b375/wrapt-1.17.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:35621ae4c00e056adb0009f8e86e28eb4a41a4bfa8f9bfa9fca7d343fe94f998", size = 38824, upload-time = "2025-01-14T10:34:22.999Z" }, + { url = "https://files.pythonhosted.org/packages/36/89/0aae34c10fe524cce30fe5fc433210376bce94cf74d05b0d68344c8ba46e/wrapt-1.17.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a604bf7a053f8362d27eb9fefd2097f82600b856d5abe996d623babd067b1ab5", size = 38920, upload-time = "2025-01-14T10:34:25.386Z" }, + { url = "https://files.pythonhosted.org/packages/3b/24/11c4510de906d77e0cfb5197f1b1445d4fec42c9a39ea853d482698ac681/wrapt-1.17.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cbabee4f083b6b4cd282f5b817a867cf0b1028c54d445b7ec7cfe6505057cf8", size = 88690, upload-time = "2025-01-14T10:34:28.058Z" }, + { url = "https://files.pythonhosted.org/packages/71/d7/cfcf842291267bf455b3e266c0c29dcb675b5540ee8b50ba1699abf3af45/wrapt-1.17.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49703ce2ddc220df165bd2962f8e03b84c89fee2d65e1c24a7defff6f988f4d6", size = 80861, upload-time = "2025-01-14T10:34:29.167Z" }, + { url = "https://files.pythonhosted.org/packages/d5/66/5d973e9f3e7370fd686fb47a9af3319418ed925c27d72ce16b791231576d/wrapt-1.17.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8112e52c5822fc4253f3901b676c55ddf288614dc7011634e2719718eaa187dc", size = 89174, upload-time = "2025-01-14T10:34:31.702Z" }, + { url = "https://files.pythonhosted.org/packages/a7/d3/8e17bb70f6ae25dabc1aaf990f86824e4fd98ee9cadf197054e068500d27/wrapt-1.17.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9fee687dce376205d9a494e9c121e27183b2a3df18037f89d69bd7b35bcf59e2", size = 86721, upload-time = "2025-01-14T10:34:32.91Z" }, + { url = "https://files.pythonhosted.org/packages/6f/54/f170dfb278fe1c30d0ff864513cff526d624ab8de3254b20abb9cffedc24/wrapt-1.17.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:18983c537e04d11cf027fbb60a1e8dfd5190e2b60cc27bc0808e653e7b218d1b", size = 79763, upload-time = "2025-01-14T10:34:34.903Z" }, + { url = "https://files.pythonhosted.org/packages/4a/98/de07243751f1c4a9b15c76019250210dd3486ce098c3d80d5f729cba029c/wrapt-1.17.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:703919b1633412ab54bcf920ab388735832fdcb9f9a00ae49387f0fe67dad504", size = 87585, upload-time = "2025-01-14T10:34:36.13Z" }, + { url = "https://files.pythonhosted.org/packages/f9/f0/13925f4bd6548013038cdeb11ee2cbd4e37c30f8bfd5db9e5a2a370d6e20/wrapt-1.17.2-cp313-cp313-win32.whl", hash = "sha256:abbb9e76177c35d4e8568e58650aa6926040d6a9f6f03435b7a522bf1c487f9a", size = 36676, upload-time = "2025-01-14T10:34:37.962Z" }, + { url = "https://files.pythonhosted.org/packages/bf/ae/743f16ef8c2e3628df3ddfd652b7d4c555d12c84b53f3d8218498f4ade9b/wrapt-1.17.2-cp313-cp313-win_amd64.whl", hash = "sha256:69606d7bb691b50a4240ce6b22ebb319c1cfb164e5f6569835058196e0f3a845", size = 38871, upload-time = "2025-01-14T10:34:39.13Z" }, + { url = "https://files.pythonhosted.org/packages/3d/bc/30f903f891a82d402ffb5fda27ec1d621cc97cb74c16fea0b6141f1d4e87/wrapt-1.17.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:4a721d3c943dae44f8e243b380cb645a709ba5bd35d3ad27bc2ed947e9c68192", size = 56312, upload-time = "2025-01-14T10:34:40.604Z" }, + { url = "https://files.pythonhosted.org/packages/8a/04/c97273eb491b5f1c918857cd26f314b74fc9b29224521f5b83f872253725/wrapt-1.17.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:766d8bbefcb9e00c3ac3b000d9acc51f1b399513f44d77dfe0eb026ad7c9a19b", size = 40062, upload-time = "2025-01-14T10:34:45.011Z" }, + { url = "https://files.pythonhosted.org/packages/4e/ca/3b7afa1eae3a9e7fefe499db9b96813f41828b9fdb016ee836c4c379dadb/wrapt-1.17.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e496a8ce2c256da1eb98bd15803a79bee00fc351f5dfb9ea82594a3f058309e0", size = 40155, upload-time = "2025-01-14T10:34:47.25Z" }, + { url = "https://files.pythonhosted.org/packages/89/be/7c1baed43290775cb9030c774bc53c860db140397047cc49aedaf0a15477/wrapt-1.17.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d615e4fe22f4ad3528448c193b218e077656ca9ccb22ce2cb20db730f8d306", size = 113471, upload-time = "2025-01-14T10:34:50.934Z" }, + { url = "https://files.pythonhosted.org/packages/32/98/4ed894cf012b6d6aae5f5cc974006bdeb92f0241775addad3f8cd6ab71c8/wrapt-1.17.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a5aaeff38654462bc4b09023918b7f21790efb807f54c000a39d41d69cf552cb", size = 101208, upload-time = "2025-01-14T10:34:52.297Z" }, + { url = "https://files.pythonhosted.org/packages/ea/fd/0c30f2301ca94e655e5e057012e83284ce8c545df7661a78d8bfca2fac7a/wrapt-1.17.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a7d15bbd2bc99e92e39f49a04653062ee6085c0e18b3b7512a4f2fe91f2d681", size = 109339, upload-time = "2025-01-14T10:34:53.489Z" }, + { url = "https://files.pythonhosted.org/packages/75/56/05d000de894c4cfcb84bcd6b1df6214297b8089a7bd324c21a4765e49b14/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:e3890b508a23299083e065f435a492b5435eba6e304a7114d2f919d400888cc6", size = 110232, upload-time = "2025-01-14T10:34:55.327Z" }, + { url = "https://files.pythonhosted.org/packages/53/f8/c3f6b2cf9b9277fb0813418e1503e68414cd036b3b099c823379c9575e6d/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:8c8b293cd65ad716d13d8dd3624e42e5a19cc2a2f1acc74b30c2c13f15cb61a6", size = 100476, upload-time = "2025-01-14T10:34:58.055Z" }, + { url = "https://files.pythonhosted.org/packages/a7/b1/0bb11e29aa5139d90b770ebbfa167267b1fc548d2302c30c8f7572851738/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4c82b8785d98cdd9fed4cac84d765d234ed3251bd6afe34cb7ac523cb93e8b4f", size = 106377, upload-time = "2025-01-14T10:34:59.3Z" }, + { url = "https://files.pythonhosted.org/packages/6a/e1/0122853035b40b3f333bbb25f1939fc1045e21dd518f7f0922b60c156f7c/wrapt-1.17.2-cp313-cp313t-win32.whl", hash = "sha256:13e6afb7fe71fe7485a4550a8844cc9ffbe263c0f1a1eea569bc7091d4898555", size = 37986, upload-time = "2025-01-14T10:35:00.498Z" }, + { url = "https://files.pythonhosted.org/packages/09/5e/1655cf481e079c1f22d0cabdd4e51733679932718dc23bf2db175f329b76/wrapt-1.17.2-cp313-cp313t-win_amd64.whl", hash = "sha256:eaf675418ed6b3b31c7a989fd007fa7c3be66ce14e5c3b27336383604c9da85c", size = 40750, upload-time = "2025-01-14T10:35:03.378Z" }, + { url = "https://files.pythonhosted.org/packages/8a/f4/6ed2b8f6f1c832933283974839b88ec7c983fd12905e01e97889dadf7559/wrapt-1.17.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:99039fa9e6306880572915728d7f6c24a86ec57b0a83f6b2491e1d8ab0235b9a", size = 53308, upload-time = "2025-01-14T10:35:24.413Z" }, + { url = "https://files.pythonhosted.org/packages/a2/a9/712a53f8f4f4545768ac532619f6e56d5d0364a87b2212531685e89aeef8/wrapt-1.17.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2696993ee1eebd20b8e4ee4356483c4cb696066ddc24bd70bcbb80fa56ff9061", size = 38489, upload-time = "2025-01-14T10:35:26.913Z" }, + { url = "https://files.pythonhosted.org/packages/fa/9b/e172c8f28a489a2888df18f953e2f6cb8d33b1a2e78c9dfc52d8bf6a5ead/wrapt-1.17.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:612dff5db80beef9e649c6d803a8d50c409082f1fedc9dbcdfde2983b2025b82", size = 38776, upload-time = "2025-01-14T10:35:28.183Z" }, + { url = "https://files.pythonhosted.org/packages/cf/cb/7a07b51762dcd59bdbe07aa97f87b3169766cadf240f48d1cbe70a1be9db/wrapt-1.17.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62c2caa1585c82b3f7a7ab56afef7b3602021d6da34fbc1cf234ff139fed3cd9", size = 83050, upload-time = "2025-01-14T10:35:30.645Z" }, + { url = "https://files.pythonhosted.org/packages/a5/51/a42757dd41032afd6d8037617aa3bc6803ba971850733b24dfb7d5c627c4/wrapt-1.17.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c958bcfd59bacc2d0249dcfe575e71da54f9dcf4a8bdf89c4cb9a68a1170d73f", size = 74718, upload-time = "2025-01-14T10:35:32.047Z" }, + { url = "https://files.pythonhosted.org/packages/bf/bb/d552bfe47db02fcfc950fc563073a33500f8108efa5f7b41db2f83a59028/wrapt-1.17.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc78a84e2dfbc27afe4b2bd7c80c8db9bca75cc5b85df52bfe634596a1da846b", size = 82590, upload-time = "2025-01-14T10:35:33.329Z" }, + { url = "https://files.pythonhosted.org/packages/77/99/77b06b3c3c410dbae411105bf22496facf03a5496bfaca8fbcf9da381889/wrapt-1.17.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:ba0f0eb61ef00ea10e00eb53a9129501f52385c44853dbd6c4ad3f403603083f", size = 81462, upload-time = "2025-01-14T10:35:34.933Z" }, + { url = "https://files.pythonhosted.org/packages/2d/21/cf0bd85ae66f92600829ea1de8e1da778e5e9f6e574ccbe74b66db0d95db/wrapt-1.17.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1e1fe0e6ab7775fd842bc39e86f6dcfc4507ab0ffe206093e76d61cde37225c8", size = 74309, upload-time = "2025-01-14T10:35:37.542Z" }, + { url = "https://files.pythonhosted.org/packages/6d/16/112d25e9092398a0dd6fec50ab7ac1b775a0c19b428f049785096067ada9/wrapt-1.17.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:c86563182421896d73858e08e1db93afdd2b947a70064b813d515d66549e15f9", size = 81081, upload-time = "2025-01-14T10:35:38.9Z" }, + { url = "https://files.pythonhosted.org/packages/2b/49/364a615a0cc0872685646c495c7172e4fc7bf1959e3b12a1807a03014e05/wrapt-1.17.2-cp39-cp39-win32.whl", hash = "sha256:f393cda562f79828f38a819f4788641ac7c4085f30f1ce1a68672baa686482bb", size = 36423, upload-time = "2025-01-14T10:35:40.177Z" }, + { url = "https://files.pythonhosted.org/packages/00/ad/5d2c1b34ba3202cd833d9221833e74d6500ce66730974993a8dc9a94fb8c/wrapt-1.17.2-cp39-cp39-win_amd64.whl", hash = "sha256:36ccae62f64235cf8ddb682073a60519426fdd4725524ae38874adf72b5f2aeb", size = 38772, upload-time = "2025-01-14T10:35:42.763Z" }, + { url = "https://files.pythonhosted.org/packages/2d/82/f56956041adef78f849db6b289b282e72b55ab8045a75abad81898c28d19/wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8", size = 23594, upload-time = "2025-01-14T10:35:44.018Z" }, +] + +[[package]] +name = "yarl" +version = "1.20.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "idna" }, + { name = "multidict" }, + { name = "propcache" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3c/fb/efaa23fa4e45537b827620f04cf8f3cd658b76642205162e072703a5b963/yarl-1.20.1.tar.gz", hash = "sha256:d017a4997ee50c91fd5466cef416231bb82177b93b029906cefc542ce14c35ac", size = 186428, upload-time = "2025-06-10T00:46:09.923Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/65/7fed0d774abf47487c64be14e9223749468922817b5e8792b8a64792a1bb/yarl-1.20.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6032e6da6abd41e4acda34d75a816012717000fa6839f37124a47fcefc49bec4", size = 132910, upload-time = "2025-06-10T00:42:31.108Z" }, + { url = "https://files.pythonhosted.org/packages/8a/7b/988f55a52da99df9e56dc733b8e4e5a6ae2090081dc2754fc8fd34e60aa0/yarl-1.20.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2c7b34d804b8cf9b214f05015c4fee2ebe7ed05cf581e7192c06555c71f4446a", size = 90644, upload-time = "2025-06-10T00:42:33.851Z" }, + { url = "https://files.pythonhosted.org/packages/f7/de/30d98f03e95d30c7e3cc093759982d038c8833ec2451001d45ef4854edc1/yarl-1.20.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0c869f2651cc77465f6cd01d938d91a11d9ea5d798738c1dc077f3de0b5e5fed", size = 89322, upload-time = "2025-06-10T00:42:35.688Z" }, + { url = "https://files.pythonhosted.org/packages/e0/7a/f2f314f5ebfe9200724b0b748de2186b927acb334cf964fd312eb86fc286/yarl-1.20.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62915e6688eb4d180d93840cda4110995ad50c459bf931b8b3775b37c264af1e", size = 323786, upload-time = "2025-06-10T00:42:37.817Z" }, + { url = "https://files.pythonhosted.org/packages/15/3f/718d26f189db96d993d14b984ce91de52e76309d0fd1d4296f34039856aa/yarl-1.20.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:41ebd28167bc6af8abb97fec1a399f412eec5fd61a3ccbe2305a18b84fb4ca73", size = 319627, upload-time = "2025-06-10T00:42:39.937Z" }, + { url = "https://files.pythonhosted.org/packages/a5/76/8fcfbf5fa2369157b9898962a4a7d96764b287b085b5b3d9ffae69cdefd1/yarl-1.20.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:21242b4288a6d56f04ea193adde174b7e347ac46ce6bc84989ff7c1b1ecea84e", size = 339149, upload-time = "2025-06-10T00:42:42.627Z" }, + { url = "https://files.pythonhosted.org/packages/3c/95/d7fc301cc4661785967acc04f54a4a42d5124905e27db27bb578aac49b5c/yarl-1.20.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bea21cdae6c7eb02ba02a475f37463abfe0a01f5d7200121b03e605d6a0439f8", size = 333327, upload-time = "2025-06-10T00:42:44.842Z" }, + { url = "https://files.pythonhosted.org/packages/65/94/e21269718349582eee81efc5c1c08ee71c816bfc1585b77d0ec3f58089eb/yarl-1.20.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f8a891e4a22a89f5dde7862994485e19db246b70bb288d3ce73a34422e55b23", size = 326054, upload-time = "2025-06-10T00:42:47.149Z" }, + { url = "https://files.pythonhosted.org/packages/32/ae/8616d1f07853704523519f6131d21f092e567c5af93de7e3e94b38d7f065/yarl-1.20.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dd803820d44c8853a109a34e3660e5a61beae12970da479cf44aa2954019bf70", size = 315035, upload-time = "2025-06-10T00:42:48.852Z" }, + { url = "https://files.pythonhosted.org/packages/48/aa/0ace06280861ef055855333707db5e49c6e3a08840a7ce62682259d0a6c0/yarl-1.20.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b982fa7f74c80d5c0c7b5b38f908971e513380a10fecea528091405f519b9ebb", size = 338962, upload-time = "2025-06-10T00:42:51.024Z" }, + { url = "https://files.pythonhosted.org/packages/20/52/1e9d0e6916f45a8fb50e6844f01cb34692455f1acd548606cbda8134cd1e/yarl-1.20.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:33f29ecfe0330c570d997bcf1afd304377f2e48f61447f37e846a6058a4d33b2", size = 335399, upload-time = "2025-06-10T00:42:53.007Z" }, + { url = "https://files.pythonhosted.org/packages/f2/65/60452df742952c630e82f394cd409de10610481d9043aa14c61bf846b7b1/yarl-1.20.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:835ab2cfc74d5eb4a6a528c57f05688099da41cf4957cf08cad38647e4a83b30", size = 338649, upload-time = "2025-06-10T00:42:54.964Z" }, + { url = "https://files.pythonhosted.org/packages/7b/f5/6cd4ff38dcde57a70f23719a838665ee17079640c77087404c3d34da6727/yarl-1.20.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:46b5e0ccf1943a9a6e766b2c2b8c732c55b34e28be57d8daa2b3c1d1d4009309", size = 358563, upload-time = "2025-06-10T00:42:57.28Z" }, + { url = "https://files.pythonhosted.org/packages/d1/90/c42eefd79d0d8222cb3227bdd51b640c0c1d0aa33fe4cc86c36eccba77d3/yarl-1.20.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:df47c55f7d74127d1b11251fe6397d84afdde0d53b90bedb46a23c0e534f9d24", size = 357609, upload-time = "2025-06-10T00:42:59.055Z" }, + { url = "https://files.pythonhosted.org/packages/03/c8/cea6b232cb4617514232e0f8a718153a95b5d82b5290711b201545825532/yarl-1.20.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:76d12524d05841276b0e22573f28d5fbcb67589836772ae9244d90dd7d66aa13", size = 350224, upload-time = "2025-06-10T00:43:01.248Z" }, + { url = "https://files.pythonhosted.org/packages/ce/a3/eaa0ab9712f1f3d01faf43cf6f1f7210ce4ea4a7e9b28b489a2261ca8db9/yarl-1.20.1-cp310-cp310-win32.whl", hash = "sha256:6c4fbf6b02d70e512d7ade4b1f998f237137f1417ab07ec06358ea04f69134f8", size = 81753, upload-time = "2025-06-10T00:43:03.486Z" }, + { url = "https://files.pythonhosted.org/packages/8f/34/e4abde70a9256465fe31c88ed02c3f8502b7b5dead693a4f350a06413f28/yarl-1.20.1-cp310-cp310-win_amd64.whl", hash = "sha256:aef6c4d69554d44b7f9d923245f8ad9a707d971e6209d51279196d8e8fe1ae16", size = 86817, upload-time = "2025-06-10T00:43:05.231Z" }, + { url = "https://files.pythonhosted.org/packages/b1/18/893b50efc2350e47a874c5c2d67e55a0ea5df91186b2a6f5ac52eff887cd/yarl-1.20.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:47ee6188fea634bdfaeb2cc420f5b3b17332e6225ce88149a17c413c77ff269e", size = 133833, upload-time = "2025-06-10T00:43:07.393Z" }, + { url = "https://files.pythonhosted.org/packages/89/ed/b8773448030e6fc47fa797f099ab9eab151a43a25717f9ac043844ad5ea3/yarl-1.20.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d0f6500f69e8402d513e5eedb77a4e1818691e8f45e6b687147963514d84b44b", size = 91070, upload-time = "2025-06-10T00:43:09.538Z" }, + { url = "https://files.pythonhosted.org/packages/e3/e3/409bd17b1e42619bf69f60e4f031ce1ccb29bd7380117a55529e76933464/yarl-1.20.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7a8900a42fcdaad568de58887c7b2f602962356908eedb7628eaf6021a6e435b", size = 89818, upload-time = "2025-06-10T00:43:11.575Z" }, + { url = "https://files.pythonhosted.org/packages/f8/77/64d8431a4d77c856eb2d82aa3de2ad6741365245a29b3a9543cd598ed8c5/yarl-1.20.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bad6d131fda8ef508b36be3ece16d0902e80b88ea7200f030a0f6c11d9e508d4", size = 347003, upload-time = "2025-06-10T00:43:14.088Z" }, + { url = "https://files.pythonhosted.org/packages/8d/d2/0c7e4def093dcef0bd9fa22d4d24b023788b0a33b8d0088b51aa51e21e99/yarl-1.20.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:df018d92fe22aaebb679a7f89fe0c0f368ec497e3dda6cb81a567610f04501f1", size = 336537, upload-time = "2025-06-10T00:43:16.431Z" }, + { url = "https://files.pythonhosted.org/packages/f0/f3/fc514f4b2cf02cb59d10cbfe228691d25929ce8f72a38db07d3febc3f706/yarl-1.20.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f969afbb0a9b63c18d0feecf0db09d164b7a44a053e78a7d05f5df163e43833", size = 362358, upload-time = "2025-06-10T00:43:18.704Z" }, + { url = "https://files.pythonhosted.org/packages/ea/6d/a313ac8d8391381ff9006ac05f1d4331cee3b1efaa833a53d12253733255/yarl-1.20.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:812303eb4aa98e302886ccda58d6b099e3576b1b9276161469c25803a8db277d", size = 357362, upload-time = "2025-06-10T00:43:20.888Z" }, + { url = "https://files.pythonhosted.org/packages/00/70/8f78a95d6935a70263d46caa3dd18e1f223cf2f2ff2037baa01a22bc5b22/yarl-1.20.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98c4a7d166635147924aa0bf9bfe8d8abad6fffa6102de9c99ea04a1376f91e8", size = 348979, upload-time = "2025-06-10T00:43:23.169Z" }, + { url = "https://files.pythonhosted.org/packages/cb/05/42773027968968f4f15143553970ee36ead27038d627f457cc44bbbeecf3/yarl-1.20.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:12e768f966538e81e6e7550f9086a6236b16e26cd964cf4df35349970f3551cf", size = 337274, upload-time = "2025-06-10T00:43:27.111Z" }, + { url = "https://files.pythonhosted.org/packages/05/be/665634aa196954156741ea591d2f946f1b78ceee8bb8f28488bf28c0dd62/yarl-1.20.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:fe41919b9d899661c5c28a8b4b0acf704510b88f27f0934ac7a7bebdd8938d5e", size = 363294, upload-time = "2025-06-10T00:43:28.96Z" }, + { url = "https://files.pythonhosted.org/packages/eb/90/73448401d36fa4e210ece5579895731f190d5119c4b66b43b52182e88cd5/yarl-1.20.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:8601bc010d1d7780592f3fc1bdc6c72e2b6466ea34569778422943e1a1f3c389", size = 358169, upload-time = "2025-06-10T00:43:30.701Z" }, + { url = "https://files.pythonhosted.org/packages/c3/b0/fce922d46dc1eb43c811f1889f7daa6001b27a4005587e94878570300881/yarl-1.20.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:daadbdc1f2a9033a2399c42646fbd46da7992e868a5fe9513860122d7fe7a73f", size = 362776, upload-time = "2025-06-10T00:43:32.51Z" }, + { url = "https://files.pythonhosted.org/packages/f1/0d/b172628fce039dae8977fd22caeff3eeebffd52e86060413f5673767c427/yarl-1.20.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:03aa1e041727cb438ca762628109ef1333498b122e4c76dd858d186a37cec845", size = 381341, upload-time = "2025-06-10T00:43:34.543Z" }, + { url = "https://files.pythonhosted.org/packages/6b/9b/5b886d7671f4580209e855974fe1cecec409aa4a89ea58b8f0560dc529b1/yarl-1.20.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:642980ef5e0fa1de5fa96d905c7e00cb2c47cb468bfcac5a18c58e27dbf8d8d1", size = 379988, upload-time = "2025-06-10T00:43:36.489Z" }, + { url = "https://files.pythonhosted.org/packages/73/be/75ef5fd0fcd8f083a5d13f78fd3f009528132a1f2a1d7c925c39fa20aa79/yarl-1.20.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:86971e2795584fe8c002356d3b97ef6c61862720eeff03db2a7c86b678d85b3e", size = 371113, upload-time = "2025-06-10T00:43:38.592Z" }, + { url = "https://files.pythonhosted.org/packages/50/4f/62faab3b479dfdcb741fe9e3f0323e2a7d5cd1ab2edc73221d57ad4834b2/yarl-1.20.1-cp311-cp311-win32.whl", hash = "sha256:597f40615b8d25812f14562699e287f0dcc035d25eb74da72cae043bb884d773", size = 81485, upload-time = "2025-06-10T00:43:41.038Z" }, + { url = "https://files.pythonhosted.org/packages/f0/09/d9c7942f8f05c32ec72cd5c8e041c8b29b5807328b68b4801ff2511d4d5e/yarl-1.20.1-cp311-cp311-win_amd64.whl", hash = "sha256:26ef53a9e726e61e9cd1cda6b478f17e350fb5800b4bd1cd9fe81c4d91cfeb2e", size = 86686, upload-time = "2025-06-10T00:43:42.692Z" }, + { url = "https://files.pythonhosted.org/packages/5f/9a/cb7fad7d73c69f296eda6815e4a2c7ed53fc70c2f136479a91c8e5fbdb6d/yarl-1.20.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdcc4cd244e58593a4379fe60fdee5ac0331f8eb70320a24d591a3be197b94a9", size = 133667, upload-time = "2025-06-10T00:43:44.369Z" }, + { url = "https://files.pythonhosted.org/packages/67/38/688577a1cb1e656e3971fb66a3492501c5a5df56d99722e57c98249e5b8a/yarl-1.20.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b29a2c385a5f5b9c7d9347e5812b6f7ab267193c62d282a540b4fc528c8a9d2a", size = 91025, upload-time = "2025-06-10T00:43:46.295Z" }, + { url = "https://files.pythonhosted.org/packages/50/ec/72991ae51febeb11a42813fc259f0d4c8e0507f2b74b5514618d8b640365/yarl-1.20.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1112ae8154186dfe2de4732197f59c05a83dc814849a5ced892b708033f40dc2", size = 89709, upload-time = "2025-06-10T00:43:48.22Z" }, + { url = "https://files.pythonhosted.org/packages/99/da/4d798025490e89426e9f976702e5f9482005c548c579bdae792a4c37769e/yarl-1.20.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:90bbd29c4fe234233f7fa2b9b121fb63c321830e5d05b45153a2ca68f7d310ee", size = 352287, upload-time = "2025-06-10T00:43:49.924Z" }, + { url = "https://files.pythonhosted.org/packages/1a/26/54a15c6a567aac1c61b18aa0f4b8aa2e285a52d547d1be8bf48abe2b3991/yarl-1.20.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:680e19c7ce3710ac4cd964e90dad99bf9b5029372ba0c7cbfcd55e54d90ea819", size = 345429, upload-time = "2025-06-10T00:43:51.7Z" }, + { url = "https://files.pythonhosted.org/packages/d6/95/9dcf2386cb875b234353b93ec43e40219e14900e046bf6ac118f94b1e353/yarl-1.20.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4a979218c1fdb4246a05efc2cc23859d47c89af463a90b99b7c56094daf25a16", size = 365429, upload-time = "2025-06-10T00:43:53.494Z" }, + { url = "https://files.pythonhosted.org/packages/91/b2/33a8750f6a4bc224242a635f5f2cff6d6ad5ba651f6edcccf721992c21a0/yarl-1.20.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255b468adf57b4a7b65d8aad5b5138dce6a0752c139965711bdcb81bc370e1b6", size = 363862, upload-time = "2025-06-10T00:43:55.766Z" }, + { url = "https://files.pythonhosted.org/packages/98/28/3ab7acc5b51f4434b181b0cee8f1f4b77a65919700a355fb3617f9488874/yarl-1.20.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a97d67108e79cfe22e2b430d80d7571ae57d19f17cda8bb967057ca8a7bf5bfd", size = 355616, upload-time = "2025-06-10T00:43:58.056Z" }, + { url = "https://files.pythonhosted.org/packages/36/a3/f666894aa947a371724ec7cd2e5daa78ee8a777b21509b4252dd7bd15e29/yarl-1.20.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8570d998db4ddbfb9a590b185a0a33dbf8aafb831d07a5257b4ec9948df9cb0a", size = 339954, upload-time = "2025-06-10T00:43:59.773Z" }, + { url = "https://files.pythonhosted.org/packages/f1/81/5f466427e09773c04219d3450d7a1256138a010b6c9f0af2d48565e9ad13/yarl-1.20.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:97c75596019baae7c71ccf1d8cc4738bc08134060d0adfcbe5642f778d1dca38", size = 365575, upload-time = "2025-06-10T00:44:02.051Z" }, + { url = "https://files.pythonhosted.org/packages/2e/e3/e4b0ad8403e97e6c9972dd587388940a032f030ebec196ab81a3b8e94d31/yarl-1.20.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:1c48912653e63aef91ff988c5432832692ac5a1d8f0fb8a33091520b5bbe19ef", size = 365061, upload-time = "2025-06-10T00:44:04.196Z" }, + { url = "https://files.pythonhosted.org/packages/ac/99/b8a142e79eb86c926f9f06452eb13ecb1bb5713bd01dc0038faf5452e544/yarl-1.20.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4c3ae28f3ae1563c50f3d37f064ddb1511ecc1d5584e88c6b7c63cf7702a6d5f", size = 364142, upload-time = "2025-06-10T00:44:06.527Z" }, + { url = "https://files.pythonhosted.org/packages/34/f2/08ed34a4a506d82a1a3e5bab99ccd930a040f9b6449e9fd050320e45845c/yarl-1.20.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c5e9642f27036283550f5f57dc6156c51084b458570b9d0d96100c8bebb186a8", size = 381894, upload-time = "2025-06-10T00:44:08.379Z" }, + { url = "https://files.pythonhosted.org/packages/92/f8/9a3fbf0968eac704f681726eff595dce9b49c8a25cd92bf83df209668285/yarl-1.20.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:2c26b0c49220d5799f7b22c6838409ee9bc58ee5c95361a4d7831f03cc225b5a", size = 383378, upload-time = "2025-06-10T00:44:10.51Z" }, + { url = "https://files.pythonhosted.org/packages/af/85/9363f77bdfa1e4d690957cd39d192c4cacd1c58965df0470a4905253b54f/yarl-1.20.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:564ab3d517e3d01c408c67f2e5247aad4019dcf1969982aba3974b4093279004", size = 374069, upload-time = "2025-06-10T00:44:12.834Z" }, + { url = "https://files.pythonhosted.org/packages/35/99/9918c8739ba271dcd935400cff8b32e3cd319eaf02fcd023d5dcd487a7c8/yarl-1.20.1-cp312-cp312-win32.whl", hash = "sha256:daea0d313868da1cf2fac6b2d3a25c6e3a9e879483244be38c8e6a41f1d876a5", size = 81249, upload-time = "2025-06-10T00:44:14.731Z" }, + { url = "https://files.pythonhosted.org/packages/eb/83/5d9092950565481b413b31a23e75dd3418ff0a277d6e0abf3729d4d1ce25/yarl-1.20.1-cp312-cp312-win_amd64.whl", hash = "sha256:48ea7d7f9be0487339828a4de0360d7ce0efc06524a48e1810f945c45b813698", size = 86710, upload-time = "2025-06-10T00:44:16.716Z" }, + { url = "https://files.pythonhosted.org/packages/8a/e1/2411b6d7f769a07687acee88a062af5833cf1966b7266f3d8dfb3d3dc7d3/yarl-1.20.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:0b5ff0fbb7c9f1b1b5ab53330acbfc5247893069e7716840c8e7d5bb7355038a", size = 131811, upload-time = "2025-06-10T00:44:18.933Z" }, + { url = "https://files.pythonhosted.org/packages/b2/27/584394e1cb76fb771371770eccad35de400e7b434ce3142c2dd27392c968/yarl-1.20.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:14f326acd845c2b2e2eb38fb1346c94f7f3b01a4f5c788f8144f9b630bfff9a3", size = 90078, upload-time = "2025-06-10T00:44:20.635Z" }, + { url = "https://files.pythonhosted.org/packages/bf/9a/3246ae92d4049099f52d9b0fe3486e3b500e29b7ea872d0f152966fc209d/yarl-1.20.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f60e4ad5db23f0b96e49c018596707c3ae89f5d0bd97f0ad3684bcbad899f1e7", size = 88748, upload-time = "2025-06-10T00:44:22.34Z" }, + { url = "https://files.pythonhosted.org/packages/a3/25/35afe384e31115a1a801fbcf84012d7a066d89035befae7c5d4284df1e03/yarl-1.20.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:49bdd1b8e00ce57e68ba51916e4bb04461746e794e7c4d4bbc42ba2f18297691", size = 349595, upload-time = "2025-06-10T00:44:24.314Z" }, + { url = "https://files.pythonhosted.org/packages/28/2d/8aca6cb2cabc8f12efcb82749b9cefecbccfc7b0384e56cd71058ccee433/yarl-1.20.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:66252d780b45189975abfed839616e8fd2dbacbdc262105ad7742c6ae58f3e31", size = 342616, upload-time = "2025-06-10T00:44:26.167Z" }, + { url = "https://files.pythonhosted.org/packages/0b/e9/1312633d16b31acf0098d30440ca855e3492d66623dafb8e25b03d00c3da/yarl-1.20.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59174e7332f5d153d8f7452a102b103e2e74035ad085f404df2e40e663a22b28", size = 361324, upload-time = "2025-06-10T00:44:27.915Z" }, + { url = "https://files.pythonhosted.org/packages/bc/a0/688cc99463f12f7669eec7c8acc71ef56a1521b99eab7cd3abb75af887b0/yarl-1.20.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e3968ec7d92a0c0f9ac34d5ecfd03869ec0cab0697c91a45db3fbbd95fe1b653", size = 359676, upload-time = "2025-06-10T00:44:30.041Z" }, + { url = "https://files.pythonhosted.org/packages/af/44/46407d7f7a56e9a85a4c207724c9f2c545c060380718eea9088f222ba697/yarl-1.20.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d1a4fbb50e14396ba3d375f68bfe02215d8e7bc3ec49da8341fe3157f59d2ff5", size = 352614, upload-time = "2025-06-10T00:44:32.171Z" }, + { url = "https://files.pythonhosted.org/packages/b1/91/31163295e82b8d5485d31d9cf7754d973d41915cadce070491778d9c9825/yarl-1.20.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11a62c839c3a8eac2410e951301309426f368388ff2f33799052787035793b02", size = 336766, upload-time = "2025-06-10T00:44:34.494Z" }, + { url = "https://files.pythonhosted.org/packages/b4/8e/c41a5bc482121f51c083c4c2bcd16b9e01e1cf8729e380273a952513a21f/yarl-1.20.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:041eaa14f73ff5a8986b4388ac6bb43a77f2ea09bf1913df7a35d4646db69e53", size = 364615, upload-time = "2025-06-10T00:44:36.856Z" }, + { url = "https://files.pythonhosted.org/packages/e3/5b/61a3b054238d33d70ea06ebba7e58597891b71c699e247df35cc984ab393/yarl-1.20.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:377fae2fef158e8fd9d60b4c8751387b8d1fb121d3d0b8e9b0be07d1b41e83dc", size = 360982, upload-time = "2025-06-10T00:44:39.141Z" }, + { url = "https://files.pythonhosted.org/packages/df/a3/6a72fb83f8d478cb201d14927bc8040af901811a88e0ff2da7842dd0ed19/yarl-1.20.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:1c92f4390e407513f619d49319023664643d3339bd5e5a56a3bebe01bc67ec04", size = 369792, upload-time = "2025-06-10T00:44:40.934Z" }, + { url = "https://files.pythonhosted.org/packages/7c/af/4cc3c36dfc7c077f8dedb561eb21f69e1e9f2456b91b593882b0b18c19dc/yarl-1.20.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:d25ddcf954df1754ab0f86bb696af765c5bfaba39b74095f27eececa049ef9a4", size = 382049, upload-time = "2025-06-10T00:44:42.854Z" }, + { url = "https://files.pythonhosted.org/packages/19/3a/e54e2c4752160115183a66dc9ee75a153f81f3ab2ba4bf79c3c53b33de34/yarl-1.20.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:909313577e9619dcff8c31a0ea2aa0a2a828341d92673015456b3ae492e7317b", size = 384774, upload-time = "2025-06-10T00:44:45.275Z" }, + { url = "https://files.pythonhosted.org/packages/9c/20/200ae86dabfca89060ec6447649f219b4cbd94531e425e50d57e5f5ac330/yarl-1.20.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:793fd0580cb9664548c6b83c63b43c477212c0260891ddf86809e1c06c8b08f1", size = 374252, upload-time = "2025-06-10T00:44:47.31Z" }, + { url = "https://files.pythonhosted.org/packages/83/75/11ee332f2f516b3d094e89448da73d557687f7d137d5a0f48c40ff211487/yarl-1.20.1-cp313-cp313-win32.whl", hash = "sha256:468f6e40285de5a5b3c44981ca3a319a4b208ccc07d526b20b12aeedcfa654b7", size = 81198, upload-time = "2025-06-10T00:44:49.164Z" }, + { url = "https://files.pythonhosted.org/packages/ba/ba/39b1ecbf51620b40ab402b0fc817f0ff750f6d92712b44689c2c215be89d/yarl-1.20.1-cp313-cp313-win_amd64.whl", hash = "sha256:495b4ef2fea40596bfc0affe3837411d6aa3371abcf31aac0ccc4bdd64d4ef5c", size = 86346, upload-time = "2025-06-10T00:44:51.182Z" }, + { url = "https://files.pythonhosted.org/packages/43/c7/669c52519dca4c95153c8ad96dd123c79f354a376346b198f438e56ffeb4/yarl-1.20.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:f60233b98423aab21d249a30eb27c389c14929f47be8430efa7dbd91493a729d", size = 138826, upload-time = "2025-06-10T00:44:52.883Z" }, + { url = "https://files.pythonhosted.org/packages/6a/42/fc0053719b44f6ad04a75d7f05e0e9674d45ef62f2d9ad2c1163e5c05827/yarl-1.20.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:6f3eff4cc3f03d650d8755c6eefc844edde99d641d0dcf4da3ab27141a5f8ddf", size = 93217, upload-time = "2025-06-10T00:44:54.658Z" }, + { url = "https://files.pythonhosted.org/packages/4f/7f/fa59c4c27e2a076bba0d959386e26eba77eb52ea4a0aac48e3515c186b4c/yarl-1.20.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:69ff8439d8ba832d6bed88af2c2b3445977eba9a4588b787b32945871c2444e3", size = 92700, upload-time = "2025-06-10T00:44:56.784Z" }, + { url = "https://files.pythonhosted.org/packages/2f/d4/062b2f48e7c93481e88eff97a6312dca15ea200e959f23e96d8ab898c5b8/yarl-1.20.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3cf34efa60eb81dd2645a2e13e00bb98b76c35ab5061a3989c7a70f78c85006d", size = 347644, upload-time = "2025-06-10T00:44:59.071Z" }, + { url = "https://files.pythonhosted.org/packages/89/47/78b7f40d13c8f62b499cc702fdf69e090455518ae544c00a3bf4afc9fc77/yarl-1.20.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:8e0fe9364ad0fddab2688ce72cb7a8e61ea42eff3c7caeeb83874a5d479c896c", size = 323452, upload-time = "2025-06-10T00:45:01.605Z" }, + { url = "https://files.pythonhosted.org/packages/eb/2b/490d3b2dc66f52987d4ee0d3090a147ea67732ce6b4d61e362c1846d0d32/yarl-1.20.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f64fbf81878ba914562c672024089e3401974a39767747691c65080a67b18c1", size = 346378, upload-time = "2025-06-10T00:45:03.946Z" }, + { url = "https://files.pythonhosted.org/packages/66/ad/775da9c8a94ce925d1537f939a4f17d782efef1f973039d821cbe4bcc211/yarl-1.20.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f6342d643bf9a1de97e512e45e4b9560a043347e779a173250824f8b254bd5ce", size = 353261, upload-time = "2025-06-10T00:45:05.992Z" }, + { url = "https://files.pythonhosted.org/packages/4b/23/0ed0922b47a4f5c6eb9065d5ff1e459747226ddce5c6a4c111e728c9f701/yarl-1.20.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56dac5f452ed25eef0f6e3c6a066c6ab68971d96a9fb441791cad0efba6140d3", size = 335987, upload-time = "2025-06-10T00:45:08.227Z" }, + { url = "https://files.pythonhosted.org/packages/3e/49/bc728a7fe7d0e9336e2b78f0958a2d6b288ba89f25a1762407a222bf53c3/yarl-1.20.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7d7f497126d65e2cad8dc5f97d34c27b19199b6414a40cb36b52f41b79014be", size = 329361, upload-time = "2025-06-10T00:45:10.11Z" }, + { url = "https://files.pythonhosted.org/packages/93/8f/b811b9d1f617c83c907e7082a76e2b92b655400e61730cd61a1f67178393/yarl-1.20.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:67e708dfb8e78d8a19169818eeb5c7a80717562de9051bf2413aca8e3696bf16", size = 346460, upload-time = "2025-06-10T00:45:12.055Z" }, + { url = "https://files.pythonhosted.org/packages/70/fd/af94f04f275f95da2c3b8b5e1d49e3e79f1ed8b6ceb0f1664cbd902773ff/yarl-1.20.1-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:595c07bc79af2494365cc96ddeb772f76272364ef7c80fb892ef9d0649586513", size = 334486, upload-time = "2025-06-10T00:45:13.995Z" }, + { url = "https://files.pythonhosted.org/packages/84/65/04c62e82704e7dd0a9b3f61dbaa8447f8507655fd16c51da0637b39b2910/yarl-1.20.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:7bdd2f80f4a7df852ab9ab49484a4dee8030023aa536df41f2d922fd57bf023f", size = 342219, upload-time = "2025-06-10T00:45:16.479Z" }, + { url = "https://files.pythonhosted.org/packages/91/95/459ca62eb958381b342d94ab9a4b6aec1ddec1f7057c487e926f03c06d30/yarl-1.20.1-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:c03bfebc4ae8d862f853a9757199677ab74ec25424d0ebd68a0027e9c639a390", size = 350693, upload-time = "2025-06-10T00:45:18.399Z" }, + { url = "https://files.pythonhosted.org/packages/a6/00/d393e82dd955ad20617abc546a8f1aee40534d599ff555ea053d0ec9bf03/yarl-1.20.1-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:344d1103e9c1523f32a5ed704d576172d2cabed3122ea90b1d4e11fe17c66458", size = 355803, upload-time = "2025-06-10T00:45:20.677Z" }, + { url = "https://files.pythonhosted.org/packages/9e/ed/c5fb04869b99b717985e244fd93029c7a8e8febdfcffa06093e32d7d44e7/yarl-1.20.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:88cab98aa4e13e1ade8c141daeedd300a4603b7132819c484841bb7af3edce9e", size = 341709, upload-time = "2025-06-10T00:45:23.221Z" }, + { url = "https://files.pythonhosted.org/packages/24/fd/725b8e73ac2a50e78a4534ac43c6addf5c1c2d65380dd48a9169cc6739a9/yarl-1.20.1-cp313-cp313t-win32.whl", hash = "sha256:b121ff6a7cbd4abc28985b6028235491941b9fe8fe226e6fdc539c977ea1739d", size = 86591, upload-time = "2025-06-10T00:45:25.793Z" }, + { url = "https://files.pythonhosted.org/packages/94/c3/b2e9f38bc3e11191981d57ea08cab2166e74ea770024a646617c9cddd9f6/yarl-1.20.1-cp313-cp313t-win_amd64.whl", hash = "sha256:541d050a355bbbc27e55d906bc91cb6fe42f96c01413dd0f4ed5a5240513874f", size = 93003, upload-time = "2025-06-10T00:45:27.752Z" }, + { url = "https://files.pythonhosted.org/packages/01/75/0d37402d208d025afa6b5b8eb80e466d267d3fd1927db8e317d29a94a4cb/yarl-1.20.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e42ba79e2efb6845ebab49c7bf20306c4edf74a0b20fc6b2ccdd1a219d12fad3", size = 134259, upload-time = "2025-06-10T00:45:29.882Z" }, + { url = "https://files.pythonhosted.org/packages/73/84/1fb6c85ae0cf9901046f07d0ac9eb162f7ce6d95db541130aa542ed377e6/yarl-1.20.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:41493b9b7c312ac448b7f0a42a089dffe1d6e6e981a2d76205801a023ed26a2b", size = 91269, upload-time = "2025-06-10T00:45:32.917Z" }, + { url = "https://files.pythonhosted.org/packages/f3/9c/eae746b24c4ea29a5accba9a06c197a70fa38a49c7df244e0d3951108861/yarl-1.20.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f5a5928ff5eb13408c62a968ac90d43f8322fd56d87008b8f9dabf3c0f6ee983", size = 89995, upload-time = "2025-06-10T00:45:35.066Z" }, + { url = "https://files.pythonhosted.org/packages/fb/30/693e71003ec4bc1daf2e4cf7c478c417d0985e0a8e8f00b2230d517876fc/yarl-1.20.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30c41ad5d717b3961b2dd785593b67d386b73feca30522048d37298fee981805", size = 325253, upload-time = "2025-06-10T00:45:37.052Z" }, + { url = "https://files.pythonhosted.org/packages/0f/a2/5264dbebf90763139aeb0b0b3154763239398400f754ae19a0518b654117/yarl-1.20.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:59febc3969b0781682b469d4aca1a5cab7505a4f7b85acf6db01fa500fa3f6ba", size = 320897, upload-time = "2025-06-10T00:45:39.962Z" }, + { url = "https://files.pythonhosted.org/packages/e7/17/77c7a89b3c05856489777e922f41db79ab4faf58621886df40d812c7facd/yarl-1.20.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d2b6fb3622b7e5bf7a6e5b679a69326b4279e805ed1699d749739a61d242449e", size = 340696, upload-time = "2025-06-10T00:45:41.915Z" }, + { url = "https://files.pythonhosted.org/packages/6d/55/28409330b8ef5f2f681f5b478150496ec9cf3309b149dab7ec8ab5cfa3f0/yarl-1.20.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:749d73611db8d26a6281086f859ea7ec08f9c4c56cec864e52028c8b328db723", size = 335064, upload-time = "2025-06-10T00:45:43.893Z" }, + { url = "https://files.pythonhosted.org/packages/85/58/cb0257cbd4002828ff735f44d3c5b6966c4fd1fc8cc1cd3cd8a143fbc513/yarl-1.20.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9427925776096e664c39e131447aa20ec738bdd77c049c48ea5200db2237e000", size = 327256, upload-time = "2025-06-10T00:45:46.393Z" }, + { url = "https://files.pythonhosted.org/packages/53/f6/c77960370cfa46f6fb3d6a5a79a49d3abfdb9ef92556badc2dcd2748bc2a/yarl-1.20.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff70f32aa316393eaf8222d518ce9118148eddb8a53073c2403863b41033eed5", size = 316389, upload-time = "2025-06-10T00:45:48.358Z" }, + { url = "https://files.pythonhosted.org/packages/64/ab/be0b10b8e029553c10905b6b00c64ecad3ebc8ace44b02293a62579343f6/yarl-1.20.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:c7ddf7a09f38667aea38801da8b8d6bfe81df767d9dfc8c88eb45827b195cd1c", size = 340481, upload-time = "2025-06-10T00:45:50.663Z" }, + { url = "https://files.pythonhosted.org/packages/c5/c3/3f327bd3905a4916029bf5feb7f86dcf864c7704f099715f62155fb386b2/yarl-1.20.1-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:57edc88517d7fc62b174fcfb2e939fbc486a68315d648d7e74d07fac42cec240", size = 336941, upload-time = "2025-06-10T00:45:52.554Z" }, + { url = "https://files.pythonhosted.org/packages/d1/42/040bdd5d3b3bb02b4a6ace4ed4075e02f85df964d6e6cb321795d2a6496a/yarl-1.20.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:dab096ce479d5894d62c26ff4f699ec9072269d514b4edd630a393223f45a0ee", size = 339936, upload-time = "2025-06-10T00:45:54.919Z" }, + { url = "https://files.pythonhosted.org/packages/0d/1c/911867b8e8c7463b84dfdc275e0d99b04b66ad5132b503f184fe76be8ea4/yarl-1.20.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:14a85f3bd2d7bb255be7183e5d7d6e70add151a98edf56a770d6140f5d5f4010", size = 360163, upload-time = "2025-06-10T00:45:56.87Z" }, + { url = "https://files.pythonhosted.org/packages/e2/31/8c389f6c6ca0379b57b2da87f1f126c834777b4931c5ee8427dd65d0ff6b/yarl-1.20.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:2c89b5c792685dd9cd3fa9761c1b9f46fc240c2a3265483acc1565769996a3f8", size = 359108, upload-time = "2025-06-10T00:45:58.869Z" }, + { url = "https://files.pythonhosted.org/packages/7f/09/ae4a649fb3964324c70a3e2b61f45e566d9ffc0affd2b974cbf628957673/yarl-1.20.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:69e9b141de5511021942a6866990aea6d111c9042235de90e08f94cf972ca03d", size = 351875, upload-time = "2025-06-10T00:46:01.45Z" }, + { url = "https://files.pythonhosted.org/packages/8d/43/bbb4ed4c34d5bb62b48bf957f68cd43f736f79059d4f85225ab1ef80f4b9/yarl-1.20.1-cp39-cp39-win32.whl", hash = "sha256:b5f307337819cdfdbb40193cad84978a029f847b0a357fbe49f712063cfc4f06", size = 82293, upload-time = "2025-06-10T00:46:03.763Z" }, + { url = "https://files.pythonhosted.org/packages/d7/cd/ce185848a7dba68ea69e932674b5c1a42a1852123584bccc5443120f857c/yarl-1.20.1-cp39-cp39-win_amd64.whl", hash = "sha256:eae7bfe2069f9c1c5b05fc7fe5d612e5bbc089a39309904ee8b829e322dcad00", size = 87385, upload-time = "2025-06-10T00:46:05.655Z" }, + { url = "https://files.pythonhosted.org/packages/b4/2d/2345fce04cfd4bee161bf1e7d9cdc702e3e16109021035dbb24db654a622/yarl-1.20.1-py3-none-any.whl", hash = "sha256:83b8eb083fe4683c6115795d9fc1cfaf2cbbefb19b3a1cb68f6527460f483a77", size = 46542, upload-time = "2025-06-10T00:46:07.521Z" }, +] + [[package]] name = "zipp" version = "3.23.0" From cfae2ef712c3cc8f7b80f01ef8ff21810d029327 Mon Sep 17 00:00:00 2001 From: Peter Steiner <61472983+renierts@users.noreply.github.com> Date: Wed, 16 Jul 2025 10:15:45 -0400 Subject: [PATCH 061/103] Added tests for encoder and fixed bugs. --- pyproject.toml | 4 +- src/faith/train/blocks/base.py | 4 +- src/faith/train/blocks/decoder.py | 10 +- src/faith/train/blocks/encoder.py | 32 +-- src/faith/train/blocks/residual.py | 9 +- tests/test_train_blocks_encoder.py | 424 ++++++++++++++++++++++++++++- 6 files changed, 444 insertions(+), 39 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 23ecee3..5a1d363 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -41,8 +41,8 @@ dependencies = [ [dependency-groups] dev = [ - "pytest >=8.1.1,<9", - "pre-commit", + "pytest >=8.1.1,<9", + "pre-commit", ] [tool.uv.sources] diff --git a/src/faith/train/blocks/base.py b/src/faith/train/blocks/base.py index b02f36a..20f5aaf 100644 --- a/src/faith/train/blocks/base.py +++ b/src/faith/train/blocks/base.py @@ -86,13 +86,13 @@ def _normalize_kernel_size( ) -> tuple[int, int]: """Normalize kernel size to tuple format.""" if isinstance(kernel_size, int): - return (kernel_size, kernel_size) + return kernel_size, kernel_size return kernel_size @staticmethod def _calculate_padding( kernel_size: Union[int, tuple[int, int]], - padding: Union[int, tuple[int, int], str] + padding: Union[int, tuple[int, int], str] = 'auto' ) -> tuple[int, ...]: """Calculate padding based on kernel size and padding specification.""" if padding == 'auto': diff --git a/src/faith/train/blocks/decoder.py b/src/faith/train/blocks/decoder.py index ce9aeca..5c1a900 100644 --- a/src/faith/train/blocks/decoder.py +++ b/src/faith/train/blocks/decoder.py @@ -34,9 +34,6 @@ class DecoderBlock(SequentialBlock): stride : int or tuple of int, default=1 Stride for convolutions in ResidualBlock. The DecoderBlock uses stride=1 and relies on Upsample for dimension changes. - padding : int, tuple of int, or str, default='auto' - Padding for convolutions in ResidualBlock. 'auto' calculates - padding to maintain spatial dimensions. dropout : float, default=0.3 Dropout probability. Must be between 0.0 and 1.0. bias : bool, default=True @@ -89,7 +86,6 @@ def __init__( upsample_factor: tuple[int, int] = (1, 2), kernel_size: Union[int, tuple[int, int]] = 3, stride: Union[int, tuple[int, int]] = 1, - padding: Union[int, tuple[int, int], str] = 'auto', dropout: float = 0.3, bias: bool = True, use_batch_norm: bool = True, @@ -124,7 +120,7 @@ def __init__( # Build the sequential operations operations = self._build_operations( - in_channels, out_channels, kernel_size, stride, padding, + in_channels, out_channels, kernel_size, stride, bias, use_batch_norm, activation, residual_init_method ) @@ -148,7 +144,6 @@ def _build_operations( out_channels: int, kernel_size: Union[int, tuple[int, int]], stride: Union[int, tuple[int, int]], - padding: Union[int, tuple[int, int], str], bias: bool, use_batch_norm: bool, activation: str, @@ -171,7 +166,6 @@ def _build_operations( out_channels=out_channels, kernel_size=kernel_size, stride=stride, - padding=padding, bias=bias, use_batch_norm=use_batch_norm, activation=activation, @@ -196,7 +190,6 @@ def get_config(self) -> dict[str, Any]: 'activation': self.activation_name, 'residual_init_method': self.residual_init_method, 'stride': getattr(self.residual_block, 'stride', 1), - 'padding': getattr(self.residual_block, 'padding', 'auto'), }) return config @@ -421,7 +414,6 @@ def _create_decoder_block_config( 'upsample_factor': encoder_block.pool_size, # Mirror the pooling 'kernel_size': self.kernel_size, 'stride': 1, # Always use stride=1 in decoder - 'padding': 'auto', 'dropout': encoder_block.dropout_prob, # Match encoder dropout 'bias': self.bias, 'use_batch_norm': self.use_batch_norm, diff --git a/src/faith/train/blocks/encoder.py b/src/faith/train/blocks/encoder.py index 4dc6e8f..97876f2 100644 --- a/src/faith/train/blocks/encoder.py +++ b/src/faith/train/blocks/encoder.py @@ -32,9 +32,6 @@ class EncoderBlock(SequentialBlock): stride : int or tuple of int, default=1 Stride for convolutions in ResidualBlock. The EncoderBlock uses stride=1 and relies on MaxPool for downsampling. - padding : int, tuple of int, or str, default='auto' - Padding for convolutions in ResidualBlock. 'auto' calculates - padding to maintain spatial dimensions. dropout : float, default=0.3 Dropout probability. Must be between 0.0 and 1.0. bias : bool, default=True @@ -81,7 +78,6 @@ def __init__( pool_size: tuple[int, int] = (1, 2), kernel_size: Union[int, tuple[int, int]] = 3, stride: Union[int, tuple[int, int]] = 1, - padding: Union[int, tuple[int, int], str] = 'auto', dropout: float = 0.3, bias: bool = True, use_batch_norm: bool = True, @@ -108,7 +104,7 @@ def __init__( # Build the sequential operations operations = self._build_operations( - in_channels, out_channels, kernel_size, stride, padding, + in_channels, out_channels, kernel_size, stride, bias, use_batch_norm, activation, residual_init_method ) @@ -132,7 +128,6 @@ def _build_operations( out_channels: int, kernel_size: Union[int, tuple[int, int]], stride: Union[int, tuple[int, int]], - padding: Union[int, tuple[int, int], str], bias: bool, use_batch_norm: bool, activation: str, @@ -148,7 +143,6 @@ def _build_operations( out_channels=out_channels, kernel_size=kernel_size, stride=stride, - padding=padding, bias=bias, use_batch_norm=use_batch_norm, activation=activation, @@ -176,7 +170,6 @@ def get_config(self) -> dict[str, Any]: 'activation': self.activation_name, 'residual_init_method': self.residual_init_method, 'stride': getattr(self.residual_block, 'stride', 1), - 'padding': getattr(self.residual_block, 'padding', 'auto'), }) return config @@ -221,7 +214,7 @@ class BlockBasedEncoder(ConfigurableBlock): Parameters ---------- - input_channels : int + in_channels : int Number of input channels in the data. block_configs : list of dict Configuration for each encoder block. Each dict should contain: @@ -262,7 +255,7 @@ class BlockBasedEncoder(ConfigurableBlock): def __init__( self, - input_channels: int, + in_channels: int, block_configs: list[dict[str, Any]], bottleneck_channels: Optional[int] = None, hidden_dim: Optional[int] = None, @@ -276,8 +269,8 @@ def __init__( # Initialize ConfigurableBlock super().__init__( - in_channels=input_channels, - out_channels=input_channels, # Will be updated after building + in_channels=in_channels, + out_channels=in_channels, # Will be updated after building kernel_size=kernel_size, bias=bias, block_configs=block_configs, @@ -292,11 +285,11 @@ def __init__( if not block_configs: raise ValueError("block_configs cannot be empty") - if input_channels <= 0: + if in_channels <= 0: raise ValueError( - f"input_channels must be positive, got {input_channels}") + f"in_channels must be positive, got {in_channels}") - self.input_channels = input_channels + self.in_channels = in_channels self.block_configs = block_configs self.hidden_dim = hidden_dim self.bottleneck_activation = bottleneck_activation @@ -316,7 +309,7 @@ def __init__( def _build_encoder_blocks(self) -> nn.ModuleList: """Build the sequence of encoder blocks.""" blocks = [] - current_channels = self.input_channels + current_channels = self.in_channels for i, config in enumerate(self.block_configs): if 'out_channels' not in config: @@ -351,7 +344,6 @@ def _prepare_block_config( 'pool_size': config.get('pool_size', (1, 2)), 'kernel_size': config.get('kernel_size', self.kernel_size), 'stride': config.get('stride', 1), - 'padding': config.get('padding', 'auto'), 'dropout': config.get('dropout', 0.3), 'bias': config.get('bias', self.bias), 'use_batch_norm': config.get('use_batch_norm', True), @@ -374,7 +366,7 @@ def _build_bottleneck( if self.blocks: current_channels = self.blocks[-1].out_channels else: - current_channels = self.input_channels + current_channels = self.in_channels # Optional adaptive pooling if self.hidden_dim is not None: @@ -450,7 +442,7 @@ def forward(self, x: torch.Tensor) -> torch.Tensor: Parameters ---------- x : torch.Tensor - Input tensor with shape (batch_size, input_channels, height, width) + Input tensor with shape (batch_size, in_channels, height, width) Returns ------- @@ -514,7 +506,7 @@ def get_output_shape( def __repr__(self) -> str: """String representation of the BlockBasedEncoder.""" return (f"BlockBasedEncoder(" - f"input_channels={self.input_channels}, " + f"in_channels={self.in_channels}, " f"num_blocks={len(self.blocks)}, " f"bottleneck_channels={self.bottleneck_channels}, " f"hidden_dim={self.hidden_dim})") diff --git a/src/faith/train/blocks/residual.py b/src/faith/train/blocks/residual.py index 44862af..d4ec436 100644 --- a/src/faith/train/blocks/residual.py +++ b/src/faith/train/blocks/residual.py @@ -4,9 +4,11 @@ following the established patterns and interfaces defined in the base module. """ +from typing import Any, Union + import torch import torch.nn as nn -from typing import Union, Any + from .base import BaseConvBlock, WeightInitializer @@ -141,7 +143,8 @@ def _normalize_stride(self, def _validate_parameters(self) -> None: """Validate input parameters.""" - valid_activations = {'relu', 'leaky_relu', 'gelu', 'swish', 'mish'} + valid_activations = {'tanh', 'sigmoid', 'relu', 'leaky_relu', 'gelu', + 'swish', 'mish'} if self.activation_name not in valid_activations: raise ValueError(f"activation must be one of {valid_activations}, " f"got {self.activation_name}") @@ -210,6 +213,8 @@ def _build_layers(self) -> None: def _create_activation(self) -> nn.Module: """Create activation function based on name.""" activations = { + 'tanh': nn.Tanh(), + 'sigmoid': nn.Sigmoid(), 'relu': nn.ReLU(inplace=True), 'leaky_relu': nn.LeakyReLU(0.1, inplace=True), 'gelu': nn.GELU(), diff --git a/tests/test_train_blocks_encoder.py b/tests/test_train_blocks_encoder.py index d3f9639..d41df8c 100644 --- a/tests/test_train_blocks_encoder.py +++ b/tests/test_train_blocks_encoder.py @@ -1,13 +1,428 @@ -# Example usage and testing +import pytest import torch -from src.faith.train.blocks import EncoderBlock, BlockBasedEncoder +import torch.nn as nn +from src.faith.train.blocks import EncoderBlock, ResidualBlock + +class TestEncoderBlockIntegration: + """Integration tests using actual ResidualBlock implementation.""" + + def test_initialization_with_residual_block(self): + """Test EncoderBlock initialization with real ResidualBlock.""" + block = EncoderBlock(in_channels=4, out_channels=8) + + # Test basic attributes + assert block.in_channels == 4 + assert block.out_channels == 8 + assert block.pool_size == (1, 2) + assert block.dropout_prob == 0.3 + assert block.use_batch_norm is True + assert block.activation_name == "relu" + assert block.residual_init_method == "kaiming" + + # Test that operations are correctly built + assert len(block.operations) == 3 + assert isinstance(block.operations[0], ResidualBlock) + assert isinstance(block.operations[1], nn.Dropout) + assert isinstance(block.operations[2], nn.MaxPool2d) + + # Test component references + assert block.residual_block is block.operations[0] + assert block.dropout is block.operations[1] + assert block.pool is block.operations[2] + + def test_custom_initialization_with_real_components(self): + """Test custom initialization parameters.""" + block = EncoderBlock( + in_channels=2, + out_channels=4, + pool_size=(2, 2), + kernel_size=5, + stride=2, + dropout=0.5, + bias=False, + use_batch_norm=False, + activation="gelu", + residual_init_method="xavier", + ) + + # Test that ResidualBlock received correct parameters + residual = block.residual_block + assert residual.in_channels == 2 + assert residual.out_channels == 4 + # Add more assertions based on your ResidualBlock's interface + + # Test other components + assert block.dropout.p == 0.5 + assert block.pool.kernel_size == (2, 2) + + def test_forward_pass_integration(self): + """Test actual forward pass with real tensors and components.""" + block = EncoderBlock(in_channels=3, out_channels=16, pool_size=(2, 2)) + + # Create real input tensor + input_tensor = torch.randn(2, 3, 32, 32) + + # Set to eval mode to make dropout deterministic + block.eval() + + # Forward pass + with torch.no_grad(): + output = block(input_tensor) + + # Check output properties + assert isinstance(output, torch.Tensor) + assert output.shape == (2, 16, 16, 16) # Pooled by (2,2) + assert not torch.isnan(output).any() + assert not torch.isinf(output).any() + + # Test that output has reasonable values + assert output.std() > 0 # Should have some variation + + def test_output_shape_calculation_integration(self): + """Test output shape calculation with real ResidualBlock.""" + block = EncoderBlock(in_channels=4, out_channels=8, pool_size=(2, 4)) + + input_shape = (1, 64, 32, 64) + output_shape = block.get_output_shape(input_shape) + + # The calculation should work with real ResidualBlock + expected_shape = (1, 8, 16, 16) # 32//2=16, 64//4=16 + assert output_shape == expected_shape + + def test_different_pool_sizes_integration(self): + """Test various pooling configurations with real components.""" + test_cases = [ + ((1, 1), (1, 2, 32, 32), (1, 4, 32, 32)), # No pooling + ((1, 2), (1, 2, 32, 32), (1, 4, 32, 16)), # Width pooling only + ((2, 1), (1, 2, 32, 32), (1, 4, 16, 32)), # Height pooling only + ((2, 2), (1, 2, 32, 32), (1, 4, 16, 16)), # Both dimensions + ((4, 4), (1, 2, 64, 64), (1, 4, 16, 16)), # Aggressive pooling + ] + + for pool_size, input_shape, expected_output in test_cases: + block = EncoderBlock(in_channels=2, out_channels=4, + pool_size=pool_size) + + output_shape = block.get_output_shape(input_shape) + assert output_shape == expected_output, \ + f"Failed for pool_size {pool_size}" + + def test_activation_functions_integration(self): + """Test different activation functions with real ResidualBlock.""" + activations = ["relu", "gelu", "tanh", "sigmoid"] + + for activation in activations: + block = EncoderBlock(in_channels=4, out_channels=8, + activation=activation) + + # Test that activation is stored correctly + assert block.activation_name == activation + + # Test forward pass works + input_tensor = torch.randn(1, 4, 8, 8) + block.eval() + + with torch.no_grad(): + output = block(input_tensor) + + assert output.shape == (1, 8, 8, 4) # Default pool_size=(1,2) + assert not torch.isnan(output).any() + + def test_batch_norm_integration(self): + """Test batch normalization configurations.""" + # With batch norm + block_bn = EncoderBlock(in_channels=32, out_channels=64, + use_batch_norm=True) + + # Without batch norm + block_no_bn = EncoderBlock( + in_channels=32, out_channels=64, use_batch_norm=False + ) + + input_tensor = torch.randn(4, 32, 16, 16) # Batch size > 1 for BN + + # Test both configurations work + with torch.no_grad(): + output_bn = block_bn(input_tensor) + output_no_bn = block_no_bn(input_tensor) + + assert output_bn.shape == output_no_bn.shape + assert not torch.isnan(output_bn).any() + assert not torch.isnan(output_no_bn).any() + + # Outputs should be different due to batch norm + assert not torch.allclose(output_bn, output_no_bn, atol=1e-6) + + def test_dropout_behavior_integration(self): + """Test dropout behavior in training vs evaluation mode.""" + block = EncoderBlock(in_channels=32, out_channels=64, dropout=0.5) + input_tensor = torch.randn(1, 32, 16, 16) + + # Training mode - dropout should introduce randomness + block.train() + outputs_train = [] + for _ in range(3): + with torch.no_grad(): + output = block(input_tensor) + outputs_train.append(output.clone()) + + # Outputs should be different due to dropout randomness + assert not torch.allclose( + outputs_train[0], outputs_train[1], atol=1e-6) + assert not torch.allclose( + outputs_train[1], outputs_train[2], atol=1e-6) + + # Evaluation mode - should be deterministic + block.eval() + outputs_eval = [] + for _ in range(3): + with torch.no_grad(): + output = block(input_tensor) + outputs_eval.append(output.clone()) + + # Outputs should be identical in eval mode + assert torch.allclose(outputs_eval[0], outputs_eval[1]) + assert torch.allclose(outputs_eval[1], outputs_eval[2]) + + def test_configuration_serialization_integration(self): + """Test configuration serialization with real components.""" + original_config = { + "in_channels": 4, + "out_channels": 8, + "pool_size": (3, 3), + "kernel_size": 5, + "stride": 2, + "dropout": 0.4, + "bias": False, + "use_batch_norm": False, + "activation": "gelu", + "residual_init_method": "xavier", + } + + # Create block + block = EncoderBlock(**original_config) + + # Get configuration + saved_config = block.get_config() + + # Verify important parameters are preserved + assert saved_config["pool_size"] == (3, 3) + assert saved_config["dropout"] == 0.4 + assert saved_config["use_batch_norm"] is False + assert saved_config["activation"] == "gelu" + assert saved_config["residual_init_method"] == "xavier" + + # Test from_config + recreated_block = EncoderBlock.from_config(saved_config) + + # Verify recreated block has same configuration + assert recreated_block.pool_size == block.pool_size + assert recreated_block.dropout_prob == block.dropout_prob + assert recreated_block.activation_name == block.activation_name + + def test_gradient_flow_integration(self): + """Test that gradients flow correctly through the block.""" + block = EncoderBlock(in_channels=6, out_channels=8) + input_tensor = torch.randn(1, 6, 8, 8, requires_grad=True) + + # Forward pass + output = block(input_tensor) + + # Create a simple loss + loss = output.sum() + + # Backward pass + loss.backward() + + # Check that input has gradients + assert input_tensor.grad is not None + assert not torch.isnan(input_tensor.grad).any() + + # Check that block parameters have gradients + for param in block.parameters(): + if param.requires_grad: + assert param.grad is not None + assert not torch.isnan(param.grad).any() + + @pytest.mark.parametrize("batch_size", [1, 4, 16]) + @pytest.mark.parametrize("spatial_size", [8, 16, 32]) + def test_various_input_sizes_integration(self, batch_size, spatial_size): + """Test with various input sizes.""" + block = EncoderBlock(in_channels=8, out_channels=16, pool_size=(2, 2)) + + input_tensor = torch.randn(batch_size, 8, spatial_size, spatial_size) + + block.eval() + with torch.no_grad(): + output = block(input_tensor) + + expected_spatial = spatial_size // 2 + expected_shape = (batch_size, 16, expected_spatial, expected_spatial) + + assert output.shape == expected_shape + assert not torch.isnan(output).any() + + @pytest.mark.parametrize("dropout_val", [0.0, 0.3, 0.7, 1.0]) + def test_dropout_values_integration(self, dropout_val): + """Test various dropout values.""" + block = EncoderBlock(in_channels=16, out_channels=32, + dropout=dropout_val) + + assert block.dropout_prob == dropout_val + assert block.dropout.p == dropout_val + + # Test forward pass works + input_tensor = torch.randn(1, 16, 8, 8) + block.eval() + + with torch.no_grad(): + output = block(input_tensor) + + assert not torch.isnan(output).any() + + # For dropout=1.0 in training mode, output should be zeros + if dropout_val == 1.0: + block.train() + with torch.no_grad(): + output_train = block(input_tensor) + # Note: with dropout=1.0, the dropout layer zeros everything + # but the residual block and pooling still contribute + + def test_memory_efficiency_integration(self): + """Test memory usage with real components.""" + import gc + + # Create block + block = EncoderBlock(in_channels=4, out_channels=8, pool_size=(4, 4)) + + # Large input tensor + large_input = torch.randn(8, 4, 64, 64) + + block.eval() + + # Forward pass + with torch.no_grad(): + output = block(large_input) + + # Check output shape + assert output.shape == (8, 8, 16, 16) + + # Clean up + del large_input, output + gc.collect() + + def test_device_compatibility_integration(self): + """Test that the block works on different devices.""" + block = EncoderBlock(in_channels=16, out_channels=32) + input_tensor = torch.randn(1, 16, 8, 8) + + # Test on CPU + block_cpu = block.to("cpu") + input_cpu = input_tensor.to("cpu") + + with torch.no_grad(): + output_cpu = block_cpu(input_cpu) + + assert output_cpu.device.type == "cpu" + assert not torch.isnan(output_cpu).any() + + # Test on GPU if available + if torch.cuda.is_available(): + block_gpu = block.to("cuda") + input_gpu = input_tensor.to("cuda") + + with torch.no_grad(): + output_gpu = block_gpu(input_gpu) + + assert output_gpu.device.type == "cuda" + assert not torch.isnan(output_gpu).any() + + +class TestEncoderBlockErrorHandling: + """Test error handling with real components.""" + + def test_invalid_parameters_real(self): + """Test parameter validation with real ResidualBlock.""" + # Test invalid dropout + with pytest.raises( + ValueError, match="Dropout must be between 0.0 and 1.0"): + EncoderBlock(in_channels=4, out_channels=8, dropout=-0.1) + + with pytest.raises( + ValueError, match="Dropout must be between 0.0 and 1.0"): + EncoderBlock(in_channels=4, out_channels=8, dropout=1.1) + + # Test invalid pool_size + with pytest.raises( + ValueError, match="pool_size must be a tuple of length 2"): + EncoderBlock(in_channels=4, out_channels=8, pool_size=(1,)) + + with pytest.raises( + ValueError, match="pool_size must be a tuple of length 2"): + EncoderBlock(in_channels=4, out_channels=8, pool_size=(1, 2, 3)) + + def test_incompatible_tensor_shapes(self): + """Test behavior with incompatible tensor shapes.""" + block = EncoderBlock(in_channels=16, out_channels=32) + + # Wrong number of channels + wrong_channels = torch.randn(1, 8, 16, 16) # 8 channels instead of 16 + + with pytest.raises(RuntimeError): + block(wrong_channels) + + # Wrong number of dimensions + wrong_dims = torch.randn(1, 16, 16) # 3D instead of 4D + + with pytest.raises((RuntimeError, IndexError)): + block(wrong_dims) + + +class TestEncoderBlockPerformance: + """Performance tests with real components.""" + + def test_inference_speed(self): + """Basic inference speed test.""" + import time + + block = EncoderBlock(in_channels=4, out_channels=8) + input_tensor = torch.randn(16, 4, 32, 32) + + block.eval() + + # Warmup + with torch.no_grad(): + for _ in range(5): + _ = block(input_tensor) + + # Time inference + start_time = time.time() + with torch.no_grad(): + for _ in range(10): + output = block(input_tensor) + end_time = time.time() + + avg_time = (end_time - start_time) / 10 + + # Should complete in reasonable time (adjust threshold as needed) + assert avg_time < 1e-2 # Less than 10 milliseconds per forward pass + assert output.shape == (16, 8, 32, 16) # Verify correctness + + +if __name__ == "__main__": + pytest.main([__file__, "-v", "--tb=short"]) + + + +######################################################################## +""" # Test EncoderBlock print("Testing EncoderBlock...") encoder_block = EncoderBlock( - in_channels=64, - out_channels=128, + in_channels=2, + out_channels=4, pool_size=(1, 2), dropout=0.3, activation='relu' @@ -44,3 +459,4 @@ # Test feature map extraction feature_maps = encoder.get_feature_maps(x) print(f"Feature maps shapes: {[fm.shape for fm in feature_maps]}") +""" From 4218067515821e5b2a7f182234e2f014743a5fe6 Mon Sep 17 00:00:00 2001 From: Peter Steiner <61472983+renierts@users.noreply.github.com> Date: Wed, 16 Jul 2025 21:25:56 -0400 Subject: [PATCH 062/103] Added tests for decoder and fixed bugs. --- pyproject.toml | 1 + src/faith/train/blocks/decoder.py | 220 +++++++++------- tests/test_train_blocks_decoder.py | 400 ++++++++++++++++++++++++++++- tests/test_train_blocks_encoder.py | 51 ---- 4 files changed, 521 insertions(+), 151 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 6e75ff3..c84fc37 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -37,6 +37,7 @@ dependencies = [ "tables", "pyyaml", "jupyter", + "typing", ] [dependency-groups] diff --git a/src/faith/train/blocks/decoder.py b/src/faith/train/blocks/decoder.py index 5c1a900..4fc7d67 100644 --- a/src/faith/train/blocks/decoder.py +++ b/src/faith/train/blocks/decoder.py @@ -5,21 +5,23 @@ The decoder creates a symmetric reconstruction path to the encoder. """ +from typing import Any, Optional, Union + import torch import torch.nn as nn -from typing import Union, Any, Optional -from .base import SequentialBlock, ConfigurableBlock, WeightInitializer -from .residual import ResidualBlock + +from .base import ConfigurableBlock, SequentialBlock, WeightInitializer from .encoder import EncoderBlock +from .residual import ResidualBlock class DecoderBlock(SequentialBlock): - # TODO: ConvTranspose2d - """Single decoder block: Upsample + ResidualBlock + Dropout. + """ + Single decoder block: ConvTranspose2d + Dropout + ResidualBlock. This block represents the fundamental building unit of the decoder, - combining spatial upsampling, feature refinement through ResidualBlock, - and regularization through Dropout. + combining spatial upsampling through ConvTranspose2d, regularization + through Dropout, and feature refinement through ResidualBlock. Parameters ---------- @@ -33,7 +35,7 @@ class DecoderBlock(SequentialBlock): Kernel size for convolutions in ResidualBlock. stride : int or tuple of int, default=1 Stride for convolutions in ResidualBlock. The DecoderBlock uses - stride=1 and relies on Upsample for dimension changes. + stride=1 and relies on ConvTranspose2d for upsampling. dropout : float, default=0.3 Dropout probability. Must be between 0.0 and 1.0. bias : bool, default=True @@ -42,26 +44,21 @@ class DecoderBlock(SequentialBlock): Whether to use batch normalization in ResidualBlock. activation : str, default='relu' Activation function for ResidualBlock. - upsampling_mode : str, default='nearest' - Upsampling algorithm. Options: 'nearest', 'linear', 'bilinear', - 'bicubic', 'trilinear', 'area'. residual_init_method : str, default='kaiming' Weight initialization method for ResidualBlock. Attributes ---------- - upsample : nn.Upsample - Upsampling layer for spatial dimension restoration. + conv_transpose : nn.ConvTranspose2d + Transposed convolution layer for spatial upsampling. + dropout_layer : nn.Dropout + Dropout layer for regularization. residual_block : ResidualBlock The residual convolutional block for feature refinement. - dropout : nn.Dropout - Dropout layer for regularization. upsample_factor : tuple of int - Stored upsampling factor. - dropout_prob : float + Stored upsampling factor for encoder symmetry. + dropout : float Stored dropout probability. - upsampling_mode : str - Stored upsampling mode. Examples -------- @@ -74,54 +71,52 @@ class DecoderBlock(SequentialBlock): >>> # Custom configuration >>> block = DecoderBlock( ... in_channels=128, out_channels=64, - ... upsample_factor=(2, 2), upsampling_mode='bilinear', - ... activation='gelu' + ... upsample_factor=(2, 2), dropout=0.5, activation='gelu' ... ) """ def __init__( - self, - in_channels: int, - out_channels: int, - upsample_factor: tuple[int, int] = (1, 2), - kernel_size: Union[int, tuple[int, int]] = 3, - stride: Union[int, tuple[int, int]] = 1, - dropout: float = 0.3, - bias: bool = True, - use_batch_norm: bool = True, - activation: str = 'relu', - upsampling_mode: str = 'nearest', - residual_init_method: str = 'kaiming' + self, + in_channels: int, + out_channels: int, + upsample_factor: tuple[int, int] = (1, 2), + kernel_size: Union[int, tuple[int, int]] = 3, + stride: Union[int, tuple[int, int]] = 1, + dropout: float = 0.3, + bias: bool = True, + use_batch_norm: bool = True, + activation: str = "relu", + residual_init_method: str = "kaiming", ) -> None: """Initialize DecoderBlock.""" # Validate parameters if not 0.0 <= dropout <= 1.0: raise ValueError( - f"Dropout must be between 0.0 and 1.0, got {dropout}") + f"Dropout must be between 0.0 and 1.0, got {dropout}" + ) if len(upsample_factor) != 2: raise ValueError(f"upsample_factor must be a tuple of length 2, " f"got {upsample_factor}") - valid_modes = { - 'nearest', 'linear', 'bilinear', 'bicubic', 'trilinear', 'area'} - if upsampling_mode not in valid_modes: - raise ValueError(f"upsampling_mode must be one of {valid_modes}, " - f"got {upsampling_mode}") - # Store configuration self.upsample_factor = upsample_factor - self.dropout_prob = dropout - self.upsampling_mode = upsampling_mode + self.dropout = dropout self.use_batch_norm = use_batch_norm self.activation_name = activation self.residual_init_method = residual_init_method # Build the sequential operations operations = self._build_operations( - in_channels, out_channels, kernel_size, stride, - bias, use_batch_norm, activation, residual_init_method + in_channels, + out_channels, + kernel_size, + stride, + bias, + use_batch_norm, + activation, + residual_init_method, ) # Initialize SequentialBlock with operations @@ -130,37 +125,52 @@ def __init__( out_channels=out_channels, operations=operations, kernel_size=kernel_size, - bias=bias + bias=bias, ) # Store individual components for introspection - self.upsample = self.operations[0] - self.residual_block = self.operations[1] - self.dropout = self.operations[2] + self.conv_transpose = self.operations[0] + self.dropout_layer = self.operations[1] + self.residual_block = self.operations[2] def _build_operations( - self, - in_channels: int, - out_channels: int, - kernel_size: Union[int, tuple[int, int]], - stride: Union[int, tuple[int, int]], - bias: bool, - use_batch_norm: bool, - activation: str, - init_method: str + self, + in_channels: int, + out_channels: int, + kernel_size: Union[int, tuple[int, int]], + stride: Union[int, tuple[int, int]], + bias: bool, + use_batch_norm: bool, + activation: str, + init_method: str, ) -> list[nn.Module]: """Build the list of operations for this decoder block.""" operations = [] - # 1. Upsample for spatial dimension restoration - upsample_layer = nn.Upsample( - scale_factor=self.upsample_factor, - mode=self.upsampling_mode + # 1. ConvTranspose2d for upsampling + # Calculate kernel size and padding based on upsample factor + # For stride=1 in any dimension, we need to handle it carefully + + # Determine kernel size and padding for each dimension + kernel_h = 3 if self.upsample_factor[0] == 1 else 4 + kernel_w = 3 if self.upsample_factor[1] == 1 else 4 + + conv_transpose_layer = nn.ConvTranspose2d( + in_channels=in_channels, + out_channels=in_channels, # Keep same channels for upsampling + kernel_size=(kernel_h, kernel_w), + stride=self.upsample_factor, + padding=(1, 1), # Use padding=1 for both cases + bias=bias, ) - operations.append(upsample_layer) + operations.append(conv_transpose_layer) + + # 2. Dropout for regularization + dropout_layer = nn.Dropout(p=self.dropout) + operations.append(dropout_layer) - # 2. ResidualBlock for feature refinement + # 3. ResidualBlock for feature refinement residual_block = ResidualBlock( in_channels=in_channels, out_channels=out_channels, @@ -169,59 +179,80 @@ def _build_operations( bias=bias, use_batch_norm=use_batch_norm, activation=activation, - init_method=init_method + init_method=init_method, ) operations.append(residual_block) - # 3. Dropout for regularization - dropout_layer = nn.Dropout(p=self.dropout_prob) - operations.append(dropout_layer) - return operations def get_config(self) -> dict[str, Any]: """Get configuration dictionary for this block.""" config = super().get_config() - config.update({ - 'upsample_factor': self.upsample_factor, - 'dropout': self.dropout_prob, - 'upsampling_mode': self.upsampling_mode, - 'use_batch_norm': self.use_batch_norm, - 'activation': self.activation_name, - 'residual_init_method': self.residual_init_method, - 'stride': getattr(self.residual_block, 'stride', 1), - }) + config.update( + { + "upsample_factor": self.upsample_factor, + "dropout": self.dropout, + "use_batch_norm": self.use_batch_norm, + "activation": self.activation_name, + "residual_init_method": self.residual_init_method, + "stride": getattr(self.residual_block, "stride", 1), + } + ) return config @classmethod - def from_config(cls, config: dict[str, Any]) -> 'DecoderBlock': + def from_config(cls, config: dict[str, Any]) -> "DecoderBlock": """Create DecoderBlock instance from configuration dictionary.""" return cls(**config) def get_output_shape( - self, - input_shape: tuple[int, ...] + self, input_shape: tuple[int, ...] ) -> tuple[int, ...]: """Calculate output shape given input shape.""" + + # Get shape after ConvTranspose2d upsampling batch_size, channels, height, width = input_shape - # Apply upsampling - upsampled_height = height * self.upsample_factor[0] - upsampled_width = width * self.upsample_factor[1] + # Calculate upsampled dimensions using ConvTranspose2d formula + # output_size = (input_size - 1) * stride - 2 * padding + kernel_size + + # Use appropriate kernel for each dimension based on upsample factor + kernel_h = 3 if self.upsample_factor[0] == 1 else 4 + kernel_w = 3 if self.upsample_factor[1] == 1 else 4 + padding = 1 # Always use padding=1 + + upsampled_height = ( + (height - 1) * self.upsample_factor[0] - 2 * padding + kernel_h + ) + upsampled_width = ( + (width - 1) * self.upsample_factor[1] - 2 * padding + kernel_w + ) + + # Shape after ConvTranspose2d (channels remain the same) + conv_transpose_output_shape = ( + batch_size, + channels, + upsampled_height, + upsampled_width, + ) + + # Apply ResidualBlock (changes channels to out_channels) + residual_output_shape = self.residual_block.get_output_shape( + conv_transpose_output_shape + ) - # ResidualBlock changes channels but maintains spatial dimensions - return (batch_size, self.out_channels, upsampled_height, - upsampled_width) + return residual_output_shape def __repr__(self) -> str: """String representation of the DecoderBlock.""" - return (f"DecoderBlock(" - f"in_channels={self.in_channels}, " - f"out_channels={self.out_channels}, " - f"upsample_factor={self.upsample_factor}, " - f"dropout={self.dropout_prob}, " - f"upsampling_mode='{self.upsampling_mode}', " - f"activation='{self.activation_name}')") + return ( + f"DecoderBlock(" + f"in_channels={self.in_channels}, " + f"out_channels={self.out_channels}, " + f"upsample_factor={self.upsample_factor}, " + f"dropout={self.dropout}, " + f"activation='{self.activation_name}')" + ) class BlockBasedDecoder(ConfigurableBlock): @@ -414,11 +445,10 @@ def _create_decoder_block_config( 'upsample_factor': encoder_block.pool_size, # Mirror the pooling 'kernel_size': self.kernel_size, 'stride': 1, # Always use stride=1 in decoder - 'dropout': encoder_block.dropout_prob, # Match encoder dropout + 'dropout': encoder_block.dropout, # Match encoder dropout 'bias': self.bias, 'use_batch_norm': self.use_batch_norm, 'activation': self.activation_name, - 'upsampling_mode': self.upsampling_mode, 'residual_init_method': self.init_method, } diff --git a/tests/test_train_blocks_decoder.py b/tests/test_train_blocks_decoder.py index 6040c5b..5052269 100644 --- a/tests/test_train_blocks_decoder.py +++ b/tests/test_train_blocks_decoder.py @@ -1,16 +1,406 @@ +import pytest import torch -from src.faith.train.blocks import DecoderBlock, BlockBasedDecoder,EncoderBlock +import torch.nn as nn +from src.faith.train.blocks import DecoderBlock, ResidualBlock + +class TestDecoderBlockInitialization: + """Test DecoderBlock initialization and parameter validation.""" + + def test_basic_initialization(self): + """Test basic DecoderBlock initialization with default parameters.""" + block = DecoderBlock(in_channels=4, out_channels=2) + + assert block.in_channels == 4 + assert block.out_channels == 2 + assert block.upsample_factor == (1, 2) + assert block.dropout == 0.3 + assert block.use_batch_norm is True + assert block.activation_name == "relu" + assert block.residual_init_method == "kaiming" + + def test_custom_initialization(self): + """Test DecoderBlock initialization with custom parameters.""" + block = DecoderBlock( + in_channels=4, + out_channels=2, + upsample_factor=(2, 2), + kernel_size=5, + stride=2, + dropout=0.5, + bias=False, + use_batch_norm=False, + activation='gelu', + residual_init_method='xavier' + ) + + assert block.in_channels == 4 + assert block.out_channels == 2 + assert block.upsample_factor == (2, 2) + assert block.kernel_size == (5, 5) + assert block.dropout == 0.5 + assert block.bias is False + assert block.use_batch_norm is False + assert block.activation_name == "gelu" + assert block.residual_init_method == "xavier" + + def test_operations_creation(self): + """Test that all operations are created correctly.""" + block = DecoderBlock(in_channels=4, out_channels=2) + + assert hasattr(block, "conv_transpose") + assert hasattr(block, "dropout") + assert hasattr(block, "residual_block") + assert len(block.operations) == 3 + + # Check types + assert isinstance(block.conv_transpose, nn.ConvTranspose2d) + assert isinstance(block.dropout_layer, nn.Dropout) + assert isinstance(block.residual_block, ResidualBlock) + + def test_conv_transpose_parameters(self): + """Test ConvTranspose2d layer parameters.""" + block = DecoderBlock( + in_channels=8, + out_channels=4, + upsample_factor=(2, 2), + bias=False, + ) + + conv_transpose = block.conv_transpose + assert conv_transpose.in_channels == 8 + assert conv_transpose.out_channels == 8 # Same as in_channels + assert conv_transpose.kernel_size == (4, 4) + assert conv_transpose.stride == (2, 2) + assert conv_transpose.padding == (1, 1) # (4-1)//2 = 1 + assert conv_transpose.bias is None # bias=False + + def test_operations_order(self): + """Test that operations are in correct order.""" + block = DecoderBlock(in_channels=8, out_channels=4) + + # Should be: ConvTranspose2d, Dropout, ResidualBlock + assert isinstance(block.operations[0], nn.ConvTranspose2d) + assert isinstance(block.operations[1], nn.Dropout) + assert isinstance(block.operations[2], ResidualBlock) + + +class TestDecoderBlockValidation: + """Test parameter validation in DecoderBlock.""" + + def test_invalid_dropout_values(self): + """Test that invalid dropout values raise ValueError.""" + with pytest.raises( + ValueError, match="Dropout must be between 0.0 and 1.0" + ): + DecoderBlock(in_channels=4, out_channels=2, dropout=-0.1) + + with pytest.raises( + ValueError, match="Dropout must be between 0.0 and 1.0" + ): + DecoderBlock(in_channels=4, out_channels=2, dropout=1.5) + + def test_invalid_upsample_factor(self): + """Test that invalid upsample_factor raises ValueError.""" + with pytest.raises( + ValueError, match="upsample_factor must be a tuple of length 2" + ): + DecoderBlock(in_channels=4, out_channels=2, upsample_factor=(2,)) + + with pytest.raises( + ValueError, match="upsample_factor must be a tuple of length 2" + ): + DecoderBlock( + in_channels=4, out_channels=2, upsample_factor=(1, 2, 3) + ) + + def test_boundary_dropout_values(self): + """Test boundary dropout values (0.0 and 1.0).""" + block1 = DecoderBlock(in_channels=4, out_channels=2, dropout=0.0) + assert block1.dropout == 0.0 + + block2 = DecoderBlock(in_channels=4, out_channels=2, dropout=1.0) + assert block2.dropout == 1.0 + + +class TestDecoderBlockForwardPass: + """Test DecoderBlock forward pass functionality.""" + + def test_forward_pass_basic(self): + """Test basic forward pass with default parameters.""" + block = DecoderBlock(in_channels=8, out_channels=4) + x = torch.randn(2, 8, 16, 8) + + output = block(x) + + assert output.shape[0] == 2 # batch size + assert output.shape[1] == 4 # out_channels from ResidualBlock + assert output.shape[2] == 16 # height should be positive + assert output.shape[3] == 16 # width should be positive + + def test_forward_pass_2x1_upsampling(self): + """Test forward pass with 2x1 upsampling.""" + + block = DecoderBlock(in_channels=8, out_channels=4, + upsample_factor=(2, 1)) + x = torch.randn(1, 8, 8, 8) + + output = block(x) + + assert output.shape[0] == 1 + assert output.shape[1] == 4 + # Should approximately double the spatial dimensions + assert output.shape[2] == 16 + assert output.shape[3] == 8 + + def test_forward_pass_no_dropout(self): + """Test forward pass with dropout disabled.""" + block = DecoderBlock(in_channels=4, out_channels=2, dropout=0.0) + x = torch.randn(2, 4, 8, 8) + + output = block(x) + assert output.shape[1] == 2 + + def test_dropout_parameters(self): + """Test that Dropout is created with correct parameters.""" + block = DecoderBlock(in_channels=4, out_channels=2, dropout=0.7) + + dropout_layer = block.dropout_layer + assert dropout_layer.p == 0.7 + + +class TestDecoderBlockConfiguration: + """Test DecoderBlock configuration methods.""" + + def test_get_config(self): + """Test get_config method returns complete configuration.""" + block = DecoderBlock( + in_channels=8, + out_channels=4, + upsample_factor=(2, 2), + dropout=0.5, + activation="gelu", + ) + + config = block.get_config() + + # Check all important parameters are in config + assert config["in_channels"] == 8 + assert config["out_channels"] == 4 + assert config["upsample_factor"] == (2, 2) + assert config["dropout"] == 0.5 + assert config["activation"] == "gelu" + + def test_from_config(self): + """Test from_config class method creates equivalent block.""" + original_block = DecoderBlock( + in_channels=8, + out_channels=4, + upsample_factor=(2, 2), + dropout=0.4, + activation="gelu", + ) + + config = original_block.get_config() + reconstructed_block = DecoderBlock.from_config(config) + + # Check key attributes match + assert reconstructed_block.in_channels == original_block.in_channels + assert reconstructed_block.out_channels == original_block.out_channels + assert ( + reconstructed_block.upsample_factor + == original_block.upsample_factor + ) + assert reconstructed_block.dropout == original_block.dropout + assert ( + reconstructed_block.activation_name + == original_block.activation_name + ) + + def test_config_roundtrip(self): + """Test that config -> block -> config roundtrip works.""" + original_config = { + "in_channels": 4, + "out_channels": 2, + "upsample_factor": (2, 2), + "dropout": 0.3, + "activation": "relu", + } + + block = DecoderBlock.from_config(original_config) + reconstructed_config = block.get_config() + + # Check that key parameters survive roundtrip + for key in original_config: + assert reconstructed_config[key] == original_config[key] + + +class TestDecoderBlockShapeCalculation: + """Test DecoderBlock shape calculation methods.""" + + def test_get_output_shape_basic(self): + """Test get_output_shape with basic parameters.""" + block = DecoderBlock(in_channels=8, out_channels=4) + + input_shape = (2, 8, 16, 8) + output_shape = block.get_output_shape(input_shape) + + assert output_shape[0] == 2 # batch size + assert output_shape[1] == 4 # out_channels from ResidualBlock + assert output_shape[2] == 16 # height should be positive + assert output_shape[3] == 16 # width should be positive + + def test_get_output_shape_2x2_upsampling(self): + """Test get_output_shape with 2x2 upsampling.""" + block = DecoderBlock( + in_channels=4, out_channels=2, upsample_factor=(2, 2) + ) + + input_shape = (1, 4, 8, 8) + output_shape = block.get_output_shape(input_shape) + + assert output_shape[0] == 1 + assert output_shape[1] == 2 + # Should approximately double both dimensions + assert output_shape[2] == 16 + assert output_shape[3] == 16 + + +class TestDecoderBlockRepresentation: + """Test DecoderBlock string representation.""" + + def test_repr_basic(self): + """Test __repr__ method with basic parameters.""" + block = DecoderBlock(in_channels=8, out_channels=4) + repr_str = repr(block) + + assert "DecoderBlock(" in repr_str + assert "in_channels=8" in repr_str + assert "out_channels=4" in repr_str + assert "upsample_factor=(1, 2)" in repr_str + assert "dropout=0.3" in repr_str + assert "activation='relu'" in repr_str + + def test_repr_custom(self): + """Test __repr__ method with custom parameters.""" + block = DecoderBlock( + in_channels=6, + out_channels=8, + upsample_factor=(2, 2), + dropout=0.5, + activation="gelu", + ) + repr_str = repr(block) + + assert "in_channels=6" in repr_str + assert "out_channels=8" in repr_str + assert "upsample_factor=(2, 2)" in repr_str + assert "dropout=0.5" in repr_str + assert "activation='gelu'" in repr_str + + +class TestDecoderBlockIntegration: + """Test DecoderBlock integration aspects.""" + + def test_sequential_block_inheritance(self): + """Test that DecoderBlock inherits from SequentialBlock correctly.""" + block = DecoderBlock(in_channels=8, out_channels=4) + + # Should have SequentialBlock attributes + assert hasattr(block, "operations") + assert hasattr(block, "in_channels") + assert hasattr(block, "out_channels") + + def test_component_access(self): + """Test that individual components can be accessed.""" + block = DecoderBlock(in_channels=8, out_channels=4) + + # Should be able to access individual components + assert hasattr(block, "conv_transpose") + assert hasattr(block, "dropout_layer") + assert hasattr(block, "residual_block") + + # Components should be the same as operations + assert block.conv_transpose is block.operations[0] + assert block.dropout_layer is block.operations[1] + assert block.residual_block is block.operations[2] + + +class TestDecoderBlockEdgeCases: + """Test edge cases and error conditions.""" + + def test_single_channel_input_output(self): + """Test with single channel input and output.""" + block = DecoderBlock(in_channels=1, out_channels=1) + x = torch.randn(1, 1, 16, 16) + + output = block(x) + assert output.shape[1] == 1 + + def test_large_upsampling_factor(self): + """Test with large upsampling factors.""" + block = DecoderBlock( + in_channels=4, out_channels=2, upsample_factor=(4, 4) + ) + x = torch.randn(1, 4, 2, 2) + + output = block(x) + assert output.shape[1] == 2 + assert output.shape[2] == 6 + assert output.shape[3] == 6 + + def test_minimal_spatial_dimensions(self): + """Test with minimal spatial dimensions.""" + block = DecoderBlock(in_channels=4, out_channels=2) + x = torch.randn(1, 4, 1, 1) + + output = block(x) + assert output.shape[1] == 2 + assert output.shape[2] == 1 + assert output.shape[3] == 2 + + +# Fixtures for common test data +@pytest.fixture +def sample_input(): + """Fixture providing sample input tensor.""" + return torch.randn(2, 128, 16, 8) + + +@pytest.fixture +def basic_decoder_block(): + """Fixture providing basic DecoderBlock instance.""" + return DecoderBlock(in_channels=8, out_channels=4) + + +@pytest.fixture +def custom_decoder_block(): + """Fixture providing custom DecoderBlock instance.""" + return DecoderBlock( + in_channels=256, + out_channels=128, + upsample_factor=(2, 2), + dropout=0.4, + activation='gelu' + ) + + +if __name__ == "__main__": + pytest.main([__file__, "-v"]) + + + +####################################################################### +""" # Example usage and testing # Test DecoderBlock print("Testing DecoderBlock...") decoder_block = DecoderBlock( - in_channels=128, - out_channels=64, + in_channels=8, + out_channels=4, upsample_factor=(1, 2), dropout=0.3, - upsampling_mode='nearest', activation='relu' ) @@ -55,6 +445,6 @@ encoder_blocks=mock_encoder_blocks, bottleneck_channels=64, output_channels=80, - upsampling_mode='bilinear' ) print(f"Decoder from encoder: {decoder2}") +""" diff --git a/tests/test_train_blocks_encoder.py b/tests/test_train_blocks_encoder.py index d41df8c..57f744d 100644 --- a/tests/test_train_blocks_encoder.py +++ b/tests/test_train_blocks_encoder.py @@ -409,54 +409,3 @@ def test_inference_speed(self): # Should complete in reasonable time (adjust threshold as needed) assert avg_time < 1e-2 # Less than 10 milliseconds per forward pass assert output.shape == (16, 8, 32, 16) # Verify correctness - - -if __name__ == "__main__": - pytest.main([__file__, "-v", "--tb=short"]) - - - -######################################################################## -""" -# Test EncoderBlock -print("Testing EncoderBlock...") -encoder_block = EncoderBlock( - in_channels=2, - out_channels=4, - pool_size=(1, 2), - dropout=0.3, - activation='relu' -) - -x = torch.randn(1, 64, 32, 32) -output = encoder_block(x) -print(f"EncoderBlock - Input: {x.shape}, Output: {output.shape}") - -# Test configuration -config = encoder_block.get_config() -new_block = EncoderBlock.from_config(config) -print(f"Config serialization successful: {new_block}") - -# Test BlockBasedEncoder -print("\nTesting BlockBasedEncoder...") -block_configs = [ - {'out_channels': 128, 'pool_size': (1, 2), 'dropout': 0.2}, - {'out_channels': 256, 'pool_size': (1, 4), 'dropout': 0.3}, - {'out_channels': 128, 'pool_size': (1, 2), 'dropout': 0.4}, -] - -encoder = BlockBasedEncoder( - input_channels=80, - block_configs=block_configs, - hidden_dim=16, - bottleneck_channels=64 -) - -x = torch.randn(2, 80, 100, 128) -latent = encoder(x) -print(f"Encoder - Input: {x.shape}, Output: {latent.shape}") - -# Test feature map extraction -feature_maps = encoder.get_feature_maps(x) -print(f"Feature maps shapes: {[fm.shape for fm in feature_maps]}") -""" From fdcc7024c3dfcefa1ca409f92389293bf4332c5e Mon Sep 17 00:00:00 2001 From: Peter Steiner <61472983+renierts@users.noreply.github.com> Date: Wed, 16 Jul 2025 22:23:08 -0400 Subject: [PATCH 063/103] Reworked on BlockBasedEncoder and BlockBasedDecoder. Still needs to be tested. --- src/faith/train/blocks/base.py | 42 +- src/faith/train/blocks/decoder.py | 543 ++++++++------- src/faith/train/blocks/encoder.py | 362 ++++------ .../test_train_blocks_block_based_decoder.py | 617 ++++++++++++++++++ .../test_train_blocks_block_based_encoder.py | 588 +++++++++++++++++ 5 files changed, 1593 insertions(+), 559 deletions(-) create mode 100644 tests/test_train_blocks_block_based_decoder.py create mode 100644 tests/test_train_blocks_block_based_encoder.py diff --git a/src/faith/train/blocks/base.py b/src/faith/train/blocks/base.py index 20f5aaf..7569be3 100644 --- a/src/faith/train/blocks/base.py +++ b/src/faith/train/blocks/base.py @@ -6,11 +6,12 @@ patterns for initialization, forward passes, and configuration. """ +import math +from abc import ABC, abstractmethod +from typing import Any, Optional, Union + import torch import torch.nn as nn -from abc import ABC, abstractmethod -from typing import Union, Any, Optional -import math class BaseConvBlock(nn.Module, ABC): @@ -196,41 +197,6 @@ def add_operation(self, operation: nn.Module) -> None: self.operations.add_module(str(len(self.operations)), operation) -class ConfigurableBlock(BaseConvBlock): - """ - Base class for blocks with extensive configuration options. - - This class provides utilities for blocks that need to handle complex - configuration dictionaries and parameter validation. - """ - - def __init__(self, **kwargs) -> None: - # Extract base parameters - in_channels = kwargs.pop('in_channels') - out_channels = kwargs.pop('out_channels') - kernel_size = kwargs.pop('kernel_size', 3) - bias = kwargs.pop('bias', True) - - super().__init__(in_channels, out_channels, kernel_size, bias) - - # Store additional configuration - self._config = kwargs - - def get_config(self) -> dict[str, Any]: - """Get full configuration including additional parameters.""" - config = super().get_config() - config.update(self._config) - return config - - @classmethod - def from_config( - cls, - config: dict[str, Any] - ) -> 'ConfigurableBlock': - """Create block instance from configuration dictionary.""" - return cls(**config) - - class WeightInitializer: """Utilities for weight initialization in blocks.""" diff --git a/src/faith/train/blocks/decoder.py b/src/faith/train/blocks/decoder.py index 4fc7d67..7128904 100644 --- a/src/faith/train/blocks/decoder.py +++ b/src/faith/train/blocks/decoder.py @@ -5,13 +5,13 @@ The decoder creates a symmetric reconstruction path to the encoder. """ -from typing import Any, Optional, Union +from typing import Any, Union import torch import torch.nn as nn -from .base import ConfigurableBlock, SequentialBlock, WeightInitializer -from .encoder import EncoderBlock +from .base import SequentialBlock +from .encoder import BlockBasedEncoder from .residual import ResidualBlock @@ -255,359 +255,336 @@ def __repr__(self) -> str: ) -class BlockBasedDecoder(ConfigurableBlock): +class BlockBasedDecoder(SequentialBlock): """Decoder architecture built from a sequence of DecoderBlocks. - This decoder mirrors the encoder architecture by using the encoder's - block configuration to create a symmetric upsampling path. Each decoding - stage consists of a DecoderBlock (Upsample + ResidualBlock + Dropout). + This decoder provides a flexible architecture where each decoding stage + consists of a DecoderBlock with configurable parameters. The blocks are + automatically chained together with matching input/output channels. Parameters ---------- - output_channels : int - Number of channels in the final output (should match encoder input). - encoder_blocks : list of EncoderBlock - List of encoder blocks to create symmetric decoder from. - bottleneck_channels : int - Number of channels from the encoder's bottleneck. - kernel_size : int or tuple of int, default=3 - Default kernel size for convolutions. - bias : bool, default=True - Default bias setting for convolutions. - upsampling_mode : str, default='nearest' - Upsampling algorithm for all decoder blocks. - use_batch_norm : bool, default=True - Whether to use batch normalization in blocks. - activation : str, default='relu' - Default activation function for blocks. - init_method : str, default='kaiming' - Weight initialization method. - reconstruction_kernel_size : int or tuple of int, optional - Kernel size for final reconstruction layer. If None, uses kernel_size. + in_channels : int + Number of input channels (typically from encoder bottleneck). + block_configs : list of dict + Configuration for each decoder block. Each dict should contain: + - 'out_channels' (int): Output channels for the block (required) + - 'upsample_factor' (tuple, optional): Upsampling factor, + default (1, 2) + - 'dropout' (float, optional): Dropout probability, default 0.3 + - 'kernel_size' (int/tuple, optional): Conv kernel size, default 3 + - 'activation' (str, optional): Activation function, default 'relu' + - 'use_batch_norm' (bool, optional): Use batch norm, default True + - 'bias' (bool, optional): Use bias in convolutions, default True Attributes ---------- - decoder_start : nn.Sequential - Initial layers to process bottleneck output. - blocks : nn.ModuleList - List of DecoderBlock modules. - reconstruction : nn.Conv2d - Final reconstruction convolution layer. - output_channels : int - Number of output channels. - upsampling_mode : str - Upsampling mode used throughout decoder. + blocks : list of DecoderBlock + List of DecoderBlock modules (accessed via self.operations). + block_configs : list of dict + Stored block configurations. + + Examples + -------- + >>> # Simple 3-block decoder (reverse of encoder) + >>> configs = [ + ... {'out_channels': 128, 'upsample_factor': (2, 2)}, + ... {'out_channels': 64, 'upsample_factor': (1, 2)}, + ... {'out_channels': 3} # Final output channels + ... ] + >>> decoder = BlockBasedDecoder(in_channels=256, block_configs=configs) + >>> z = torch.randn(1, 256, 8, 4) + >>> output = decoder(z) + + >>> # Create decoder that mirrors an encoder + >>> encoder_configs = [ + ... {'out_channels': 64}, + ... {'out_channels': 128, 'pool_size': (2, 2)}, + ... {'out_channels': 256, 'pool_size': (1, 2)} + ... ] + >>> decoder_configs = BlockBasedDecoder.reverse_encoder_configs( + ... encoder_configs, final_out_channels=3 + ... ) + >>> decoder = BlockBasedDecoder(in_channels=256, + ... block_configs=decoder_configs) """ def __init__( - self, - output_channels: int, - encoder_blocks: list[EncoderBlock], - bottleneck_channels: int, - kernel_size: Union[int, tuple[int, int]] = 3, - bias: bool = True, - upsampling_mode: str = 'nearest', - use_batch_norm: bool = True, - activation: str = 'relu', - init_method: str = 'kaiming', - reconstruction_kernel_size: - Optional[Union[int, tuple[int, int]]] = None, - **kwargs + self, + in_channels: int, + block_configs: list[dict[str, Any]], + kernel_size: Union[int, tuple[int, int]] = 3, + bias: bool = True, ) -> None: """Initialize BlockBasedDecoder.""" - # Initialize ConfigurableBlock - super().__init__( - in_channels=bottleneck_channels, - out_channels=output_channels, - kernel_size=kernel_size, - bias=bias, - encoder_blocks=encoder_blocks, - bottleneck_channels=bottleneck_channels, - upsampling_mode=upsampling_mode, - use_batch_norm=use_batch_norm, - activation=activation, - init_method=init_method, - reconstruction_kernel_size=reconstruction_kernel_size, - **kwargs - ) - # Validate inputs - if output_channels <= 0: - raise ValueError(f"output_channels must be positive, " - f"got {output_channels}") - - if bottleneck_channels <= 0: - raise ValueError(f"bottleneck_channels must be positive, " - f"got {bottleneck_channels}") - - self.output_channels = output_channels - self.encoder_blocks = encoder_blocks - self.bottleneck_channels = bottleneck_channels - self.upsampling_mode = upsampling_mode - self.use_batch_norm = use_batch_norm - self.activation_name = activation - self.init_method = init_method - - if reconstruction_kernel_size is None: - reconstruction_kernel_size = kernel_size - self.reconstruction_kernel_size = reconstruction_kernel_size - - # Build decoder components - self.decoder_start = self._build_decoder_start(kernel_size, bias) - self.blocks = self._build_decoder_blocks() - self.reconstruction = self._build_reconstruction_layer() - - # Initialize weights - self._initialize_weights() - - def _build_decoder_start( - self, - kernel_size: Union[int, tuple[int, int]], - bias: bool - ) -> nn.Sequential: - """Build the initial decoder layers to process bottleneck output.""" - # Calculate padding for convolution - if isinstance(kernel_size, int): - padding = kernel_size // 2 - else: - padding = tuple(k // 2 for k in kernel_size) - - # Determine first block channels - first_block_channels = ( - self.encoder_blocks[-1].out_channels - if self.encoder_blocks - else self.bottleneck_channels - ) + if not block_configs: + raise ValueError("block_configs cannot be empty") - layers = [ - nn.Conv2d( - self.bottleneck_channels, - first_block_channels, - kernel_size=kernel_size, - padding=padding, - bias=bias and not self.use_batch_norm + if in_channels <= 0: + raise ValueError( + f"in_channels must be positive, got {in_channels}" ) - ] - if self.use_batch_norm: - layers.append(nn.BatchNorm2d(first_block_channels)) + # Validate that all configs have out_channels + for i, config in enumerate(block_configs): + if "out_channels" not in config: + raise ValueError( + f"Block {i} missing required 'out_channels' key" + ) + if config["out_channels"] <= 0: + raise ValueError(f"out_channels must be positive, " + f"got {config['out_channels']} in block {i}") - layers.append(self._create_activation(self.activation_name)) + self.block_configs = block_configs - return nn.Sequential(*layers) + # Build decoder blocks + operations = self._build_decoder_blocks(in_channels, kernel_size, bias) - def _build_decoder_blocks(self) -> nn.ModuleList: - """Build decoder blocks by mirroring encoder blocks.""" - blocks = [] + # Get final output channels from last block + final_out_channels = block_configs[-1]["out_channels"] - # Get the output channels from decoder_start - current_channels = ( - self.encoder_blocks[-1].out_channels - if self.encoder_blocks - else self.bottleneck_channels + # Initialize SequentialBlock with operations + super().__init__( + in_channels=in_channels, + out_channels=final_out_channels, + operations=operations, + kernel_size=kernel_size, + bias=bias, ) - # Create symmetric decoder by reversing encoder blocks - for i, encoder_block in enumerate(reversed(self.encoder_blocks)): - # Determine output channels for this decoder block - if i == len(self.encoder_blocks) - 1: - # Last block outputs to final channels - out_channels = self.output_channels - else: - # Use the input channels of the corresponding encoder block - corresponding_encoder_idx = len(self.encoder_blocks) - 2 - i - out_channels = ( - self.encoder_blocks[corresponding_encoder_idx].in_channels) - - # Create decoder block configuration - block_config = self._create_decoder_block_config( - encoder_block, current_channels, out_channels - ) + def _build_decoder_blocks( + self, + in_channels: int, + default_kernel_size: Union[int, tuple[int, int]], + default_bias: bool, + ) -> list[nn.Module]: + """ + Build the sequence of decoder blocks with automatic channel chaining. + """ + blocks = [] + current_channels = in_channels + + for i, config in enumerate(self.block_configs): + # Prepare block configuration with defaults + block_config = { + "in_channels": current_channels, + "out_channels": config["out_channels"], + "upsample_factor": config.get("upsample_factor", (1, 2)), + "kernel_size": config.get("kernel_size", default_kernel_size), + "stride": config.get("stride", 1), + "dropout": config.get("dropout", 0.3), + "bias": config.get("bias", default_bias), + "use_batch_norm": config.get("use_batch_norm", True), + "activation": config.get("activation", "relu"), + "residual_init_method": config.get( + "residual_init_method", "kaiming" + ), + } # Create decoder block - decoder_block = DecoderBlock(**block_config) - blocks.append(decoder_block) - current_channels = out_channels + block = DecoderBlock(**block_config) + blocks.append(block) - return nn.ModuleList(blocks) + # Update current channels for next block + current_channels = config["out_channels"] - def _create_decoder_block_config( - self, - encoder_block: EncoderBlock, - in_channels: int, - out_channels: int - ) -> dict[str, Any]: - """Create configuration for a decoder block based on encoder block.""" - return { - 'in_channels': in_channels, - 'out_channels': out_channels, - 'upsample_factor': encoder_block.pool_size, # Mirror the pooling - 'kernel_size': self.kernel_size, - 'stride': 1, # Always use stride=1 in decoder - 'dropout': encoder_block.dropout, # Match encoder dropout - 'bias': self.bias, - 'use_batch_norm': self.use_batch_norm, - 'activation': self.activation_name, - 'residual_init_method': self.init_method, - } - - def _build_reconstruction_layer(self) -> nn.Conv2d: - """Build the final reconstruction convolution layer.""" - # Calculate padding for reconstruction layer - if isinstance(self.reconstruction_kernel_size, int): - padding = self.reconstruction_kernel_size // 2 - else: - padding = tuple(k // 2 for k in self.reconstruction_kernel_size) - - return nn.Conv2d( - self.output_channels, - self.output_channels, - kernel_size=self.reconstruction_kernel_size, - padding=padding, - bias=self.bias - ) + return blocks + + def get_feature_maps(self, x: torch.Tensor) -> list[torch.Tensor]: + """Get intermediate feature maps from each decoder block. - def _create_activation(self, activation: str) -> nn.Module: - """Create activation function based on name.""" - activations = { - 'relu': nn.ReLU(inplace=True), - 'leaky_relu': nn.LeakyReLU(0.1, inplace=True), - 'gelu': nn.GELU(), - 'swish': nn.SiLU(), - 'mish': nn.Mish(), - } - if activation not in activations: - raise ValueError(f"Unknown activation: {activation}") - return activations[activation] - - def _initialize_weights(self) -> None: - """Initialize weights according to the specified method.""" - if self.init_method == 'kaiming': - self.apply(WeightInitializer.kaiming_normal_) - elif self.init_method == 'xavier': - self.apply(WeightInitializer.xavier_uniform_) - - # Always properly initialize batch norm - if self.use_batch_norm: - self.apply(WeightInitializer.init_batch_norm_) - - def forward(self, z: torch.Tensor) -> torch.Tensor: - """Forward pass through the decoder. + Useful for visualization, debugging, and skip connections. Parameters ---------- - z : torch.Tensor - Latent representation with shape - (batch_size, bottleneck_channels, height, width). + x : torch.Tensor + Input tensor. Returns ------- - torch.Tensor - Reconstructed output with shape - (batch_size, output_channels, height', width') where height' - and width' are restored to approximate original input dimensions. + list of torch.Tensor + Feature maps after each decoder block. """ - # Process through decoder start - x = self.decoder_start(z) + feature_maps = [] - # Process through decoder blocks - for block in self.blocks: + for block in self.operations: x = block(x) + feature_maps.append(x.clone()) - # Final reconstruction - x = self.reconstruction(x) + return feature_maps - return x + def get_channel_progression(self) -> list[int]: + """Get the channel count progression through the decoder. - def get_feature_maps(self, z: torch.Tensor) -> list[torch.Tensor]: - """Get intermediate feature maps from each decoder block. + Returns + ------- + list of int + Channel counts: [in_channels, block1_out, block2_out, ...] + """ + channels = [self.in_channels] + for config in self.block_configs: + channels.append(config["out_channels"]) + return channels + + def get_config(self) -> dict[str, Any]: + """Get configuration dictionary for this decoder.""" + config = super().get_config() + config.update( + { + "block_configs": self.block_configs, + } + ) + return config + + @classmethod + def from_config(cls, config: dict[str, Any]) -> "BlockBasedDecoder": + """Create BlockBasedDecoder instance from configuration dictionary.""" + return cls(**config) + + @classmethod + def reverse_encoder_configs( + cls, + encoder_configs: list[dict[str, Any]], + final_out_channels: int + ) -> list[dict[str, Any]]: + """Create decoder configs that reverse an encoder's configuration. - Useful for visualization and debugging. + This method helps create symmetric encoder-decoder architectures by + automatically generating decoder configs that mirror the encoder. Parameters ---------- - z : torch.Tensor - Latent representation. + encoder_configs : list of dict + Encoder block configurations with 'out_channels' and optional + 'pool_size'. + final_out_channels : int + Number of output channels for the final decoder block. Returns ------- - list of torch.Tensor - Feature maps after each decoder block. + list of dict + Decoder block configurations with reversed channel progression + and mirrored upsampling factors. + + Examples + -------- + >>> encoder_configs = [ + ... {'out_channels': 64, 'pool_size': (1, 2)}, + ... {'out_channels': 128, 'pool_size': (2, 2)}, + ... {'out_channels': 256, 'pool_size': (1, 2)} + ... ] + >>> decoder_configs = BlockBasedDecoder.reverse_encoder_configs( + ... encoder_configs, final_out_channels=3 + ... ) + >>> # Result: [ + >>> # {'out_channels': 128, 'upsample_factor': (1, 2)}, + >>> # {'out_channels': 64, 'upsample_factor': (2, 2)}, + >>> # {'out_channels': 3, 'upsample_factor': (1, 2)} + >>> # ] """ - feature_maps = [] + if not encoder_configs: + raise ValueError("encoder_configs cannot be empty") - # Process through decoder start - x = self.decoder_start(z) - feature_maps.append(x.clone()) + # Get channel progression from encoder + encoder_channels = [] + for config in encoder_configs: + encoder_channels.append(config["out_channels"]) - # Process through decoder blocks - for block in self.blocks: - x = block(x) - feature_maps.append(x.clone()) + # Create reversed decoder configs + decoder_configs = [] - return feature_maps + # Reverse the encoder configs + for i, encoder_config in enumerate(reversed(encoder_configs)): + # Determine output channels for this decoder block + if i == len(encoder_configs) - 1: + # Last decoder block outputs final channels + out_channels = final_out_channels + else: + # Use the input channels from the corresponding encoder stage + # For encoder: input -> block1 -> block2 -> block3 + # For decoder: block3_out -> block2_in -> block1_in -> input + corresponding_encoder_idx = len(encoder_configs) - 2 - i + if corresponding_encoder_idx == 0: + # This would be the original input channels to the encoder + # We'll use the final_out_channels as a reasonable guess + out_channels = final_out_channels + else: + out_channels = encoder_configs[ + corresponding_encoder_idx - 1 + ]["out_channels"] + + # Create decoder config + decoder_config = { + "out_channels": out_channels, + "upsample_factor": encoder_config.get("pool_size", (1, 2)), + } - def get_output_shape( - self, - input_shape: tuple[int, ...] - ) -> tuple[int, ...]: - """Calculate output shape given input shape.""" - current_shape = input_shape - - # Apply decoder start (changes channels but not spatial dims) - batch_size, _, height, width = current_shape - first_channels = ( - self.encoder_blocks[-1].out_channels - if self.encoder_blocks - else self.bottleneck_channels - ) - current_shape = (batch_size, first_channels, height, width) + # Copy other relevant parameters + for key in [ + "dropout", + "kernel_size", + "activation", + "use_batch_norm", + "bias", + ]: + if key in encoder_config: + decoder_config[key] = encoder_config[key] - # Apply each decoder block - for block in self.blocks: - current_shape = block.get_output_shape(current_shape) + decoder_configs.append(decoder_config) - # Final reconstruction doesn't change shape - return current_shape + return decoder_configs @classmethod def from_encoder( cls, - encoder_blocks: list[EncoderBlock], - bottleneck_channels: int, - output_channels: int, + encoder: "BlockBasedEncoder", + final_out_channels: int, **kwargs - ) -> 'BlockBasedDecoder': - """Create decoder that mirrors the given encoder blocks. + ) -> "BlockBasedDecoder": + """Create decoder that mirrors a BlockBasedEncoder. Parameters ---------- - encoder_blocks : list of EncoderBlock - Encoder blocks to mirror. - bottleneck_channels : int - Number of channels from encoder bottleneck. - output_channels : int - Number of output channels. + encoder : BlockBasedEncoder + Encoder to mirror. + final_out_channels : int + Number of output channels for the decoder. **kwargs Additional arguments for decoder configuration. Returns ------- BlockBasedDecoder - Configured decoder instance. + Configured decoder instance that mirrors the encoder. + + Examples + -------- + >>> encoder = BlockBasedEncoder(in_channels=3, block_configs=[...]) + >>> decoder = BlockBasedDecoder.from_encoder(encoder, + ... final_out_channels=3) """ + # Create reversed configs from encoder + decoder_configs = cls.reverse_encoder_configs( + encoder.block_configs, final_out_channels + ) + return cls( - output_channels=output_channels, - encoder_blocks=encoder_blocks, - bottleneck_channels=bottleneck_channels, - **kwargs + in_channels=encoder.out_channels, + block_configs=decoder_configs, + **kwargs, ) + @property + def blocks(self) -> list[nn.Module]: + """Access to decoder blocks for compatibility.""" + return list(self.operations) + def __repr__(self) -> str: """String representation of the BlockBasedDecoder.""" + channel_progression = ' → '.join( + map(str, self.get_channel_progression())) return (f"BlockBasedDecoder(" - f"output_channels={self.output_channels}, " - f"num_blocks={len(self.blocks)}, " - f"bottleneck_channels={self.bottleneck_channels}, " - f"upsampling_mode='{self.upsampling_mode}')") + f"blocks={len(self.operations)}, " + f"channels={channel_progression})") diff --git a/src/faith/train/blocks/encoder.py b/src/faith/train/blocks/encoder.py index 97876f2..1374267 100644 --- a/src/faith/train/blocks/encoder.py +++ b/src/faith/train/blocks/encoder.py @@ -4,10 +4,12 @@ inherit from the base classes, following established patterns and interfaces. """ +from typing import Any, Union + import torch import torch.nn as nn -from typing import Union, Any, Optional -from .base import SequentialBlock, ConfigurableBlock, WeightInitializer + +from .base import SequentialBlock from .residual import ResidualBlock @@ -193,24 +195,26 @@ def get_output_shape(self, input_shape: tuple[int, ...]) \ pooled_height = height // self.pool_size[0] pooled_width = width // self.pool_size[1] - return (batch_size, channels, pooled_height, pooled_width) + return batch_size, channels, pooled_height, pooled_width def __repr__(self) -> str: """String representation of the EncoderBlock.""" - return (f"EncoderBlock(" - f"in_channels={self.in_channels}, " - f"out_channels={self.out_channels}, " - f"pool_size={self.pool_size}, " - f"dropout={self.dropout_prob}, " - f"activation='{self.activation_name}')") + return ( + f"EncoderBlock(" + f"in_channels={self.in_channels}, " + f"out_channels={self.out_channels}, " + f"pool_size={self.pool_size}, " + f"dropout={self.dropout_prob}, " + f"activation='{self.activation_name}')" + ) -class BlockBasedEncoder(ConfigurableBlock): +class BlockBasedEncoder(SequentialBlock): """Encoder architecture built from a sequence of EncoderBlocks. This encoder provides a flexible architecture where each encoding stage - consists of an EncoderBlock (ResidualBlock + Dropout + MaxPool) followed - by an optional bottleneck compression layer. + consists of an EncoderBlock with configurable parameters. The blocks are + automatically chained together with matching input/output channels. Parameters ---------- @@ -218,252 +222,121 @@ class BlockBasedEncoder(ConfigurableBlock): Number of input channels in the data. block_configs : list of dict Configuration for each encoder block. Each dict should contain: - - 'out_channels' (int): Output channels for the block + - 'out_channels' (int): Output channels for the block (required) - 'pool_size' (tuple, optional): MaxPool kernel size, default (1, 2) - 'dropout' (float, optional): Dropout probability, default 0.3 - 'kernel_size' (int/tuple, optional): Conv kernel size, default 3 + - 'activation' (str, optional): Activation function, default 'relu' + - 'use_batch_norm' (bool, optional): Use batch norm, default True - 'bias' (bool, optional): Use bias in convolutions, default True - - Other ResidualBlock parameters (activation, use_batch_norm, etc.) - bottleneck_channels : int, optional - Number of channels in the bottleneck layer. If None, defaults to - max(16, last_block_channels // 2). - hidden_dim : int, optional - Target frequency dimension after adaptive pooling. If None, no - adaptive pooling is applied. - kernel_size : int or tuple of int, default=3 - Default kernel size for blocks that don't specify one. - bias : bool, default=True - Default bias setting for blocks that don't specify one. - bottleneck_activation : str, default='relu' - Activation function for bottleneck layer. - bottleneck_init_method : str, default='kaiming' - Weight initialization method for bottleneck. Attributes ---------- - blocks : nn.ModuleList - List of EncoderBlock modules. - bottleneck : nn.Sequential - Bottleneck compression layers. - bottleneck_channels : int - Number of channels in the bottleneck output. + blocks : list of EncoderBlock + List of EncoderBlock modules (accessed via self.operations). block_configs : list of dict Stored block configurations. - hidden_dim : int or None - Stored target frequency dimension. + + Examples + -------- + >>> # Simple 3-block encoder + >>> configs = [ + ... {'out_channels': 64}, + ... {'out_channels': 128, 'pool_size': (2, 2)}, + ... {'out_channels': 256, 'dropout': 0.5} + ... ] + >>> encoder = BlockBasedEncoder(in_channels=3, block_configs=configs) + >>> x = torch.randn(1, 3, 32, 64) + >>> output = encoder(x) """ def __init__( - self, - in_channels: int, - block_configs: list[dict[str, Any]], - bottleneck_channels: Optional[int] = None, - hidden_dim: Optional[int] = None, - kernel_size: Union[int, tuple[int, int]] = 3, - bias: bool = True, - bottleneck_activation: str = 'relu', - bottleneck_init_method: str = 'kaiming', - **kwargs + self, + in_channels: int, + block_configs: list[dict[str, Any]], + kernel_size: Union[int, tuple[int, int]] = 3, + bias: bool = True, ) -> None: """Initialize BlockBasedEncoder.""" - # Initialize ConfigurableBlock - super().__init__( - in_channels=in_channels, - out_channels=in_channels, # Will be updated after building - kernel_size=kernel_size, - bias=bias, - block_configs=block_configs, - bottleneck_channels=bottleneck_channels, - hidden_dim=hidden_dim, - bottleneck_activation=bottleneck_activation, - bottleneck_init_method=bottleneck_init_method, - **kwargs - ) - # Validate inputs if not block_configs: raise ValueError("block_configs cannot be empty") if in_channels <= 0: raise ValueError( - f"in_channels must be positive, got {in_channels}") + f"in_channels must be positive, got {in_channels}" + ) + + # Validate that all configs have out_channels + for i, config in enumerate(block_configs): + if "out_channels" not in config: + raise ValueError( + f"Block {i} missing required 'out_channels' key" + ) + if config["out_channels"] <= 0: + raise ValueError(f"out_channels must be positive, " + f"got {config['out_channels']} in block {i}") - self.in_channels = in_channels self.block_configs = block_configs - self.hidden_dim = hidden_dim - self.bottleneck_activation = bottleneck_activation - self.bottleneck_init_method = bottleneck_init_method # Build encoder blocks - self.blocks = self._build_encoder_blocks() + operations = self._build_encoder_blocks(in_channels, kernel_size, bias) - # Build bottleneck - self.bottleneck, self.bottleneck_channels = self._build_bottleneck( - bottleneck_channels, kernel_size, bias - ) + # Get final output channels from last block + final_out_channels = block_configs[-1]["out_channels"] - # Update out_channels after building - self.out_channels = self.bottleneck_channels + # Initialize SequentialBlock with operations + super().__init__( + in_channels=in_channels, + out_channels=final_out_channels, + operations=operations, + kernel_size=kernel_size, + bias=bias, + ) - def _build_encoder_blocks(self) -> nn.ModuleList: - """Build the sequence of encoder blocks.""" + def _build_encoder_blocks( + self, + in_channels: int, + default_kernel_size: Union[int, tuple[int, int]], + default_bias: bool, + ) -> list[nn.Module]: + """ + Build the sequence of encoder blocks with automatic channel chaining. + """ blocks = [] - current_channels = self.in_channels + current_channels = in_channels for i, config in enumerate(self.block_configs): - if 'out_channels' not in config: - raise ValueError( - f"Block {i} missing required 'out_channels' key") - - # Extract config with defaults - block_config = self._prepare_block_config(config, current_channels) - - # Validate channels - out_channels = block_config['out_channels'] - if out_channels <= 0: - raise ValueError(f"out_channels must be positive, " - f"got {out_channels} in block {i}") + # Prepare block configuration with defaults + block_config = { + "in_channels": current_channels, + "out_channels": config["out_channels"], + "pool_size": config.get("pool_size", (1, 2)), + "kernel_size": config.get("kernel_size", default_kernel_size), + "stride": config.get("stride", 1), + "dropout": config.get("dropout", 0.3), + "bias": config.get("bias", default_bias), + "use_batch_norm": config.get("use_batch_norm", True), + "activation": config.get("activation", "relu"), + "residual_init_method": config.get( + "residual_init_method", "kaiming" + ), + } # Create encoder block block = EncoderBlock(**block_config) blocks.append(block) - current_channels = out_channels - return nn.ModuleList(blocks) - - def _prepare_block_config( - self, - config: dict[str, Any], - current_channels: int - ) -> dict[str, Any]: - """Prepare block configuration with defaults.""" - block_config = { - 'in_channels': current_channels, - 'out_channels': config['out_channels'], - 'pool_size': config.get('pool_size', (1, 2)), - 'kernel_size': config.get('kernel_size', self.kernel_size), - 'stride': config.get('stride', 1), - 'dropout': config.get('dropout', 0.3), - 'bias': config.get('bias', self.bias), - 'use_batch_norm': config.get('use_batch_norm', True), - 'activation': config.get('activation', 'relu'), - 'residual_init_method': config.get( - 'residual_init_method', 'kaiming'), - } - return block_config - - def _build_bottleneck( - self, - bottleneck_channels: Optional[int], - kernel_size: Union[int, tuple[int, int]], - bias: bool - ) -> tuple[nn.Sequential, int]: - """Build the bottleneck compression layers.""" - bottleneck_layers = [] - - # Get input channels from last block - if self.blocks: - current_channels = self.blocks[-1].out_channels - else: - current_channels = self.in_channels - - # Optional adaptive pooling - if self.hidden_dim is not None: - if self.hidden_dim <= 0: - raise ValueError(f"hidden_dim must be positive, " - f"got {self.hidden_dim}") - bottleneck_layers.append( - nn.AdaptiveAvgPool2d((None, self.hidden_dim))) - - # Channel compression - if bottleneck_channels is None: - bottleneck_channels = max(16, current_channels // 2) - - if bottleneck_channels <= 0: - raise ValueError(f"bottleneck_channels must be positive, " - f"got {bottleneck_channels}") - - # Calculate padding for bottleneck convolution - if isinstance(kernel_size, int): - padding = kernel_size // 2 - else: - padding = tuple(k // 2 for k in kernel_size) - - # Add compression layers - bottleneck_layers.extend([ - nn.Conv2d( - current_channels, - bottleneck_channels, - kernel_size=kernel_size, - padding=padding, - bias=bias - ), - nn.BatchNorm2d(bottleneck_channels), - self._create_activation(self.bottleneck_activation), - ]) - - bottleneck = nn.Sequential(*bottleneck_layers) - - # Initialize bottleneck weights - self._initialize_bottleneck_weights(bottleneck) - - return bottleneck, bottleneck_channels - - def _create_activation(self, activation: str) -> nn.Module: - """Create activation function based on name.""" - activations = { - 'relu': nn.ReLU(inplace=True), - 'leaky_relu': nn.LeakyReLU(0.1, inplace=True), - 'gelu': nn.GELU(), - 'swish': nn.SiLU(), - 'mish': nn.Mish(), - } - if activation not in activations: - raise ValueError(f"Unknown activation: {activation}") - return activations[activation] - - def _initialize_bottleneck_weights( - self, - bottleneck: nn.Sequential - ) -> None: - """Initialize bottleneck weights.""" - if self.bottleneck_init_method == 'kaiming': - bottleneck.apply(WeightInitializer.kaiming_normal_) - elif self.bottleneck_init_method == 'xavier': - bottleneck.apply(WeightInitializer.xavier_uniform_) + # Update current channels for next block + current_channels = config["out_channels"] - # Always properly initialize batch norm - bottleneck.apply(WeightInitializer.init_batch_norm_) - - def forward(self, x: torch.Tensor) -> torch.Tensor: - """Forward pass through the encoder. - - Parameters - ---------- - x : torch.Tensor - Input tensor with shape (batch_size, in_channels, height, width) - - Returns - ------- - torch.Tensor - Encoded latent representation with shape - (batch_size, bottleneck_channels, height', width') where height' - and width' depend on the pooling operations and hidden_dim. - """ - # Pass through encoder blocks - for block in self.blocks: - x = block(x) - - # Pass through bottleneck - x = self.bottleneck(x) - - return x + return blocks def get_feature_maps(self, x: torch.Tensor) -> list[torch.Tensor]: """Get intermediate feature maps from each encoder block. - Useful for visualization and debugging. + Useful for visualization, debugging, and skip connections. Parameters ---------- @@ -477,36 +350,49 @@ def get_feature_maps(self, x: torch.Tensor) -> list[torch.Tensor]: """ feature_maps = [] - for block in self.blocks: + for block in self.operations: x = block(x) feature_maps.append(x.clone()) return feature_maps - def get_output_shape( - self, - input_shape: tuple[int, ...] - ) -> tuple[int, ...]: - """Calculate output shape given input shape.""" - current_shape = input_shape + def get_channel_progression(self) -> list[int]: + """Get the channel count progression through the encoder. + + Returns + ------- + list of int + Channel counts: [in_channels, block1_out, block2_out, ...] + """ + channels = [self.in_channels] + for config in self.block_configs: + channels.append(config["out_channels"]) + return channels - # Apply each encoder block - for block in self.blocks: - current_shape = block.get_output_shape(current_shape) + def get_config(self) -> dict[str, Any]: + """Get configuration dictionary for this encoder.""" + config = super().get_config() + config.update( + { + "block_configs": self.block_configs, + } + ) + return config - # Apply adaptive pooling if present - if self.hidden_dim is not None: - batch_size, channels, height, _ = current_shape - current_shape = (batch_size, channels, height, self.hidden_dim) + @classmethod + def from_config(cls, config: dict[str, Any]) -> "BlockBasedEncoder": + """Create BlockBasedEncoder instance from configuration dictionary.""" + return cls(**config) - # Apply bottleneck channel reduction - batch_size, _, height, width = current_shape - return (batch_size, self.bottleneck_channels, height, width) + @property + def blocks(self) -> list[nn.Module]: + """Access to encoder blocks for compatibility.""" + return list(self.operations) def __repr__(self) -> str: """String representation of the BlockBasedEncoder.""" + channel_progression = ' → '.join( + map(str, self.get_channel_progression())) return (f"BlockBasedEncoder(" - f"in_channels={self.in_channels}, " - f"num_blocks={len(self.blocks)}, " - f"bottleneck_channels={self.bottleneck_channels}, " - f"hidden_dim={self.hidden_dim})") + f"blocks={len(self.operations)}, " + f"channels={channel_progression})") diff --git a/tests/test_train_blocks_block_based_decoder.py b/tests/test_train_blocks_block_based_decoder.py new file mode 100644 index 0000000..c1cc246 --- /dev/null +++ b/tests/test_train_blocks_block_based_decoder.py @@ -0,0 +1,617 @@ + +import pytest +import torch + +# Assuming these imports exist in your codebase +from src.faith.train.blocks import BlockBasedDecoder + + +class TestBlockBasedDecoderInitialization: + """Test BlockBasedDecoder initialization and parameter validation.""" + + def test_basic_initialization(self): + """Test basic BlockBasedDecoder initialization.""" + configs = [ + {"out_channels": 128, "upsample_factor": (2, 2)}, + {"out_channels": 64, "upsample_factor": (1, 2)}, + {"out_channels": 3}, + ] + decoder = BlockBasedDecoder(in_channels=256, block_configs=configs) + + assert decoder.in_channels == 256 + assert decoder.out_channels == 3 # Last block's out_channels + assert len(decoder.operations) == 3 + assert len(decoder.block_configs) == 3 + + def test_custom_initialization(self): + """Test BlockBasedDecoder with custom parameters.""" + configs = [ + {"out_channels": 128, "upsample_factor": (2, 2), "dropout": 0.5}, + {"out_channels": 64, "activation": "gelu"}, + {"out_channels": 32, "kernel_size": 5, "bias": False}, + ] + decoder = BlockBasedDecoder( + in_channels=256, block_configs=configs, kernel_size=7, bias=True + ) + + assert decoder.in_channels == 256 + assert decoder.out_channels == 32 + assert len(decoder.operations) == 3 + assert decoder.kernel_size == 7 + assert decoder.bias is True + + def test_single_block_decoder(self): + """Test decoder with single block.""" + configs = [{"out_channels": 3}] + decoder = BlockBasedDecoder(in_channels=128, block_configs=configs) + + assert decoder.in_channels == 128 + assert decoder.out_channels == 3 + assert len(decoder.operations) == 1 + + def test_channel_progression_setup(self): + """Test that blocks are configured with correct channel progression.""" + configs = [ + {"out_channels": 128}, + {"out_channels": 64}, + {"out_channels": 32}, + ] + decoder = BlockBasedDecoder(in_channels=256, block_configs=configs) + + # Check channel progression + progression = decoder.get_channel_progression() + assert progression == [256, 128, 64, 32] + + # Check individual block configurations + assert decoder.operations[0].in_channels == 256 + assert decoder.operations[0].out_channels == 128 + assert decoder.operations[1].in_channels == 128 + assert decoder.operations[1].out_channels == 64 + assert decoder.operations[2].in_channels == 64 + assert decoder.operations[2].out_channels == 32 + + +class TestBlockBasedDecoderValidation: + """Test parameter validation in BlockBasedDecoder.""" + + def test_empty_block_configs(self): + """Test that empty block_configs raises ValueError.""" + with pytest.raises(ValueError, match="block_configs cannot be empty"): + BlockBasedDecoder(in_channels=256, block_configs=[]) + + def test_invalid_in_channels(self): + """Test that invalid in_channels raises ValueError.""" + configs = [{"out_channels": 64}] + + with pytest.raises(ValueError, match="in_channels must be positive"): + BlockBasedDecoder(in_channels=0, block_configs=configs) + + with pytest.raises(ValueError, match="in_channels must be positive"): + BlockBasedDecoder(in_channels=-5, block_configs=configs) + + def test_missing_out_channels(self): + """Test that missing out_channels in config raises ValueError.""" + configs = [ + {"out_channels": 128}, + {"dropout": 0.5}, # Missing out_channels + {"out_channels": 32}, + ] + + with pytest.raises( + ValueError, match="Block 1 missing required 'out_channels' key" + ): + BlockBasedDecoder(in_channels=256, block_configs=configs) + + def test_invalid_out_channels(self): + """Test that invalid out_channels raises ValueError.""" + configs = [ + {"out_channels": 128}, + {"out_channels": 0}, # Invalid + {"out_channels": 32}, + ] + + with pytest.raises( + ValueError, match="out_channels must be positive, got 0 in block 1" + ): + BlockBasedDecoder(in_channels=256, block_configs=configs) + + configs = [ + {"out_channels": -64} # Invalid + ] + + with pytest.raises( + ValueError, + match="out_channels must be positive, got -64 in block 0", + ): + BlockBasedDecoder(in_channels=256, block_configs=configs) + + +class TestBlockBasedDecoderForwardPass: + """Test BlockBasedDecoder forward pass functionality.""" + + def test_forward_pass_basic(self): + """Test basic forward pass.""" + configs = [ + {"out_channels": 128, "upsample_factor": (1, 2)}, + {"out_channels": 64, "upsample_factor": (2, 1)}, + {"out_channels": 3}, + ] + decoder = BlockBasedDecoder(in_channels=256, block_configs=configs) + z = torch.randn(2, 256, 8, 4) + + output = decoder(z) + + assert output.shape[0] == 2 # batch size + assert output.shape[1] == 3 # final out_channels + # Spatial dimensions should be larger due to upsampling + + def test_forward_pass_single_block(self): + """Test forward pass with single block.""" + configs = [{"out_channels": 32}] + decoder = BlockBasedDecoder(in_channels=128, block_configs=configs) + z = torch.randn(1, 128, 8, 8) + + output = decoder(z) + + assert output.shape[0] == 1 + assert output.shape[1] == 32 + + def test_forward_pass_gradient_flow(self): + """Test that gradients flow properly through the decoder.""" + configs = [{"out_channels": 64}, {"out_channels": 32}] + decoder = BlockBasedDecoder(in_channels=128, block_configs=configs) + z = torch.randn(1, 128, 8, 8, requires_grad=True) + + output = decoder(z) + loss = output.sum() + loss.backward() + + assert z.grad is not None + assert z.grad.shape == z.shape + + +class TestBlockBasedDecoderConfiguration: + """Test BlockBasedDecoder configuration methods.""" + + def test_get_config(self): + """Test get_config method returns complete configuration.""" + configs = [ + {"out_channels": 128, "dropout": 0.4}, + {"out_channels": 64, "activation": "gelu"}, + {"out_channels": 3}, + ] + decoder = BlockBasedDecoder( + in_channels=256, block_configs=configs, kernel_size=5, bias=False + ) + + config = decoder.get_config() + + assert config["in_channels"] == 256 + assert config["out_channels"] == 3 + assert config["block_configs"] == configs + assert config["kernel_size"] == 5 + assert config["bias"] is False + + def test_from_config(self): + """Test from_config class method creates equivalent decoder.""" + original_configs = [ + {"out_channels": 128, "dropout": 0.3}, + {"out_channels": 64, "upsample_factor": (2, 2)}, + {"out_channels": 3}, + ] + original_decoder = BlockBasedDecoder( + in_channels=256, block_configs=original_configs, kernel_size=7 + ) + + config = original_decoder.get_config() + reconstructed_decoder = BlockBasedDecoder.from_config(config) + + assert ( + reconstructed_decoder.in_channels == original_decoder.in_channels + ) + assert ( + reconstructed_decoder.out_channels == original_decoder.out_channels + ) + assert ( + reconstructed_decoder.block_configs + == original_decoder.block_configs + ) + assert ( + reconstructed_decoder.kernel_size == original_decoder.kernel_size + ) + + def test_config_roundtrip(self): + """Test that config -> decoder -> config roundtrip works.""" + original_config = { + "in_channels": 128, + "block_configs": [ + {"out_channels": 64, "dropout": 0.2}, + {"out_channels": 32, "activation": "relu"}, + {"out_channels": 3}, + ], + "kernel_size": 3, + "bias": True, + } + + decoder = BlockBasedDecoder.from_config(original_config) + reconstructed_config = decoder.get_config() + + for key in original_config: + assert reconstructed_config[key] == original_config[key] + + +class TestBlockBasedDecoderChannelProgression: + """Test BlockBasedDecoder channel progression functionality.""" + + def test_get_channel_progression_basic(self): + """Test get_channel_progression with basic configuration.""" + configs = [ + {"out_channels": 128}, + {"out_channels": 64}, + {"out_channels": 32}, + ] + decoder = BlockBasedDecoder(in_channels=256, block_configs=configs) + + progression = decoder.get_channel_progression() + assert progression == [256, 128, 64, 32] + + def test_get_channel_progression_single_block(self): + """Test get_channel_progression with single block.""" + configs = [{"out_channels": 3}] + decoder = BlockBasedDecoder(in_channels=128, block_configs=configs) + + progression = decoder.get_channel_progression() + assert progression == [128, 3] + + +class TestBlockBasedDecoderReverseConfigs: + """Test BlockBasedDecoder encoder reversal functionality.""" + + def test_reverse_encoder_configs_basic(self): + """Test reverse_encoder_configs with basic encoder configuration.""" + encoder_configs = [ + {"out_channels": 64, "pool_size": (1, 2)}, + {"out_channels": 128, "pool_size": (2, 2)}, + {"out_channels": 256, "pool_size": (1, 2)}, + ] + + decoder_configs = BlockBasedDecoder.reverse_encoder_configs( + encoder_configs, final_out_channels=3 + ) + + assert len(decoder_configs) == 3 + # Should reverse the channel progression + assert decoder_configs[0]["out_channels"] == 128 # 256 -> 128 + assert decoder_configs[1]["out_channels"] == 64 # 128 -> 64 + assert decoder_configs[2]["out_channels"] == 3 # 64 -> 3 + + # Should mirror the pool sizes as upsample factors + assert decoder_configs[0]["upsample_factor"] == (1, 2) + assert decoder_configs[1]["upsample_factor"] == (2, 2) + assert decoder_configs[2]["upsample_factor"] == (1, 2) + + def test_reverse_encoder_configs_single_block(self): + """Test reverse_encoder_configs with single encoder block.""" + encoder_configs = [{"out_channels": 128, "pool_size": (2, 2)}] + + decoder_configs = BlockBasedDecoder.reverse_encoder_configs( + encoder_configs, final_out_channels=3 + ) + + assert len(decoder_configs) == 1 + assert decoder_configs[0]["out_channels"] == 3 + assert decoder_configs[0]["upsample_factor"] == (2, 2) + + def test_reverse_encoder_configs_empty_raises_error(self): + """Test that empty encoder_configs raises ValueError.""" + with pytest.raises( + ValueError, match="encoder_configs cannot be empty" + ): + BlockBasedDecoder.reverse_encoder_configs([], final_out_channels=3) + + +class TestBlockBasedDecoderFromEncoder: + """Test BlockBasedDecoder encoder mirroring functionality.""" + + def test_from_encoder_basic(self): + """Test from_encoder creates decoder that mirrors encoder.""" + + # Create a mock encoder for testing + class MockEncoder: + def __init__(self): + self.out_channels = 256 + self.block_configs = [ + {"out_channels": 64, "pool_size": (1, 2)}, + {"out_channels": 128, "pool_size": (2, 2)}, + {"out_channels": 256, "pool_size": (1, 2)}, + ] + + encoder = MockEncoder() + decoder = BlockBasedDecoder.from_encoder(encoder, final_out_channels=3) + + assert decoder.in_channels == 256 # encoder.out_channels + assert decoder.out_channels == 3 + assert len(decoder.block_configs) == 3 + + def test_from_encoder_with_kwargs(self): + """Test from_encoder with additional keyword arguments.""" + + class MockEncoder: + def __init__(self): + self.out_channels = 128 + self.block_configs = [ + {"out_channels": 64, "pool_size": (2, 2)} + ] + + encoder = MockEncoder() + decoder = BlockBasedDecoder.from_encoder( + encoder, final_out_channels=3, kernel_size=5, bias=False + ) + + assert decoder.kernel_size == 5 + assert decoder.bias is False + + +class TestBlockBasedDecoderShapeCalculation: + """Test BlockBasedDecoder shape calculation methods.""" + + def test_get_output_shape_basic(self): + """Test get_output_shape with basic configuration.""" + configs = [ + {"out_channels": 128, "upsample_factor": (1, 2)}, + {"out_channels": 64, "upsample_factor": (2, 1)}, + {"out_channels": 3}, + ] + decoder = BlockBasedDecoder(in_channels=256, block_configs=configs) + input_shape = (2, 256, 8, 4) + + output_shape = decoder.get_output_shape(input_shape) + + assert output_shape[0] == 2 # batch size + assert output_shape[1] == 3 # final out_channels + assert output_shape[2] > 0 # height should be positive + assert output_shape[3] > 0 # width should be positive + + def test_get_output_shape_matches_forward(self): + """Test that get_output_shape matches actual forward pass output.""" + configs = [ + {"out_channels": 64, "upsample_factor": (1, 2)}, + {"out_channels": 32, "upsample_factor": (2, 1)}, + {"out_channels": 3}, + ] + decoder = BlockBasedDecoder(in_channels=128, block_configs=configs) + input_shape = (1, 128, 8, 8) + + predicted_shape = decoder.get_output_shape(input_shape) + + z = torch.randn(*input_shape) + actual_output = decoder(z) + + assert predicted_shape == actual_output.shape + + +class TestBlockBasedDecoderFeatureMaps: + """Test BlockBasedDecoder feature map extraction.""" + + def test_get_feature_maps_basic(self): + """Test get_feature_maps returns correct number of maps.""" + configs = [ + {"out_channels": 128}, + {"out_channels": 64}, + {"out_channels": 32}, + ] + decoder = BlockBasedDecoder(in_channels=256, block_configs=configs) + z = torch.randn(1, 256, 8, 8) + + feature_maps = decoder.get_feature_maps(z) + + assert len(feature_maps) == 3 # One per block + assert feature_maps[0].shape[1] == 128 # First block output + assert feature_maps[1].shape[1] == 64 # Second block output + assert feature_maps[2].shape[1] == 32 # Third block output + + def test_get_feature_maps_consistency(self): + """Test that get_feature_maps gives same result as forward pass.""" + configs = [{"out_channels": 64}, {"out_channels": 32}] + decoder = BlockBasedDecoder(in_channels=128, block_configs=configs) + z = torch.randn(1, 128, 8, 8) + + feature_maps = decoder.get_feature_maps(z) + final_output = decoder(z) + + # Last feature map should match forward pass output + assert torch.allclose(feature_maps[-1], final_output, atol=1e-6) + + +class TestBlockBasedDecoderRepresentation: + """Test BlockBasedDecoder string representation.""" + + def test_repr_basic(self): + """Test __repr__ method with basic configuration.""" + configs = [ + {"out_channels": 128}, + {"out_channels": 64}, + {"out_channels": 3}, + ] + decoder = BlockBasedDecoder(in_channels=256, block_configs=configs) + repr_str = repr(decoder) + + assert "BlockBasedDecoder(" in repr_str + assert "blocks=3" in repr_str + assert "channels=256 → 128 → 64 → 3" in repr_str + + def test_repr_single_block(self): + """Test __repr__ method with single block.""" + configs = [{"out_channels": 3}] + decoder = BlockBasedDecoder(in_channels=128, block_configs=configs) + repr_str = repr(decoder) + + assert "blocks=1" in repr_str + assert "channels=128 → 3" in repr_str + + +class TestBlockBasedDecoderCompatibility: + """Test BlockBasedDecoder compatibility and integration.""" + + def test_sequential_block_inheritance(self): + """Test that BlockBasedDecoder properly inherits from SequentialBlock.""" + configs = [ + {"out_channels": 128}, + {"out_channels": 64}, + {"out_channels": 3}, + ] + decoder = BlockBasedDecoder(in_channels=256, block_configs=configs) + + # Should have SequentialBlock attributes + assert hasattr(decoder, "operations") + assert hasattr(decoder, "in_channels") + assert hasattr(decoder, "out_channels") + assert len(decoder.operations) == 3 + + def test_blocks_property(self): + """Test blocks property for backward compatibility.""" + configs = [{"out_channels": 64}, {"out_channels": 32}] + decoder = BlockBasedDecoder(in_channels=128, block_configs=configs) + + assert hasattr(decoder, "blocks") + assert len(decoder.blocks) == 2 + assert decoder.blocks[0] is decoder.operations[0] + assert decoder.blocks[1] is decoder.operations[1] + + +class TestBlockBasedDecoderEdgeCases: + """Test edge cases and boundary conditions.""" + + def test_large_channel_counts(self): + """Test with large channel counts.""" + configs = [ + {"out_channels": 512}, + {"out_channels": 256}, + {"out_channels": 3}, + ] + decoder = BlockBasedDecoder(in_channels=1024, block_configs=configs) + z = torch.randn(1, 1024, 4, 4) + + output = decoder(z) + assert output.shape[1] == 3 + + def test_single_channel_output(self): + """Test with single channel output.""" + configs = [ + {"out_channels": 32}, + {"out_channels": 16}, + {"out_channels": 1}, # Single channel output + ] + decoder = BlockBasedDecoder(in_channels=128, block_configs=configs) + z = torch.randn(1, 128, 8, 8) + + output = decoder(z) + assert output.shape[1] == 1 + + def test_no_upsampling_decoder(self): + """Test decoder with no upsampling (all factors = (1,1)).""" + configs = [ + {"out_channels": 64, "upsample_factor": (1, 1)}, + {"out_channels": 32, "upsample_factor": (1, 1)}, + {"out_channels": 3, "upsample_factor": (1, 1)}, + ] + decoder = BlockBasedDecoder(in_channels=128, block_configs=configs) + z = torch.randn(1, 128, 16, 16) + + output = decoder(z) + assert output.shape[1] == 3 + + +class TestBlockBasedDecoderIntegration: + """Test BlockBasedDecoder integration with encoders.""" + + def test_encoder_decoder_symmetry(self): + """Test that decoder can process encoder output.""" + # Create encoder + encoder_configs = [ + {"out_channels": 64, "pool_size": (1, 2)}, + {"out_channels": 128, "pool_size": (2, 2)}, + ] + + class MockEncoder: + def __init__(self): + self.out_channels = 128 + self.block_configs = encoder_configs + + encoder = MockEncoder() + + # Create symmetric decoder + decoder = BlockBasedDecoder.from_encoder(encoder, final_out_channels=3) + + # Test forward pass + z = torch.randn(1, 128, 8, 4) # Typical encoder output shape + output = decoder(z) + + assert output.shape[1] == 3 + # Output should have larger spatial dimensions due to upsampling + assert output.shape[2] >= z.shape[2] + assert output.shape[3] >= z.shape[3] + + +class TestBlockBasedDecoderErrorHandling: + """Test error handling and edge cases.""" + + def test_channel_mismatch(self): + """Test behavior with channel count mismatch.""" + configs = [{"out_channels": 32}] + decoder = BlockBasedDecoder(in_channels=128, block_configs=configs) + + # Input with wrong number of channels + z_wrong_channels = torch.randn(1, 64, 8, 8) # Should be 128 channels + + with pytest.raises(RuntimeError): + decoder(z_wrong_channels) + + +# Fixtures for common test data +@pytest.fixture +def sample_latent(): + """Fixture providing sample latent tensor.""" + return torch.randn(2, 256, 8, 4) + + +@pytest.fixture +def basic_decoder(): + """Fixture providing basic BlockBasedDecoder instance.""" + configs = [ + {"out_channels": 128, "upsample_factor": (1, 2)}, + {"out_channels": 64, "upsample_factor": (2, 1)}, + {"out_channels": 3}, + ] + return BlockBasedDecoder(in_channels=256, block_configs=configs) + + +@pytest.fixture +def complex_decoder(): + """Fixture providing complex BlockBasedDecoder instance.""" + configs = [ + {"out_channels": 128, "upsample_factor": (2, 2), "dropout": 0.2}, + {"out_channels": 64, "upsample_factor": (1, 2), "activation": "gelu"}, + {"out_channels": 32, "kernel_size": 5, "bias": False}, + {"out_channels": 3}, + ] + return BlockBasedDecoder(in_channels=256, block_configs=configs) + + +@pytest.fixture +def mock_encoder(): + """Fixture providing mock encoder for testing from_encoder method.""" + class MockEncoder: + def __init__(self): + self.out_channels = 128 + self.block_configs = [ + {'out_channels': 32, 'pool_size': (1, 2)}, + {'out_channels': 64, 'pool_size': (2, 2)}, + {'out_channels': 128, 'pool_size': (1, 2)} + ] + + return MockEncoder() + + +if __name__ == "__main__": + pytest.main([__file__, "-v"]) diff --git a/tests/test_train_blocks_block_based_encoder.py b/tests/test_train_blocks_block_based_encoder.py new file mode 100644 index 0000000..027ac37 --- /dev/null +++ b/tests/test_train_blocks_block_based_encoder.py @@ -0,0 +1,588 @@ +import pytest +import torch + +from src.faith.train.blocks import BlockBasedEncoder + + +class TestBlockBasedEncoderInitialization: + """Test BlockBasedEncoder initialization and parameter validation.""" + + def test_basic_initialization(self): + """Test basic BlockBasedEncoder initialization.""" + configs = [{"out_channels": 64}, {"out_channels": 128}] + encoder = BlockBasedEncoder(in_channels=3, block_configs=configs) + + assert encoder.in_channels == 3 + assert encoder.out_channels == 128 # Last block's out_channels + assert len(encoder.operations) == 2 + assert len(encoder.block_configs) == 2 + + def test_custom_initialization(self): + """Test BlockBasedEncoder with custom parameters.""" + configs = [ + {"out_channels": 64, "pool_size": (2, 2), "dropout": 0.5}, + {"out_channels": 128, "activation": "gelu"}, + {"out_channels": 256, "kernel_size": 5, "bias": False}, + ] + encoder = BlockBasedEncoder( + in_channels=16, block_configs=configs, kernel_size=7, bias=True + ) + + assert encoder.in_channels == 16 + assert encoder.out_channels == 256 + assert len(encoder.operations) == 3 + assert encoder.kernel_size == 7 + assert encoder.bias is True + + def test_single_block_encoder(self): + """Test encoder with single block.""" + configs = [{"out_channels": 32}] + encoder = BlockBasedEncoder(in_channels=8, block_configs=configs) + + assert encoder.in_channels == 8 + assert encoder.out_channels == 32 + assert len(encoder.operations) == 1 + + def test_channel_progression_setup(self): + """Test that blocks are configured with correct channel progression.""" + configs = [ + {"out_channels": 64}, + {"out_channels": 128}, + {"out_channels": 256}, + ] + encoder = BlockBasedEncoder(in_channels=3, block_configs=configs) + + # Check channel progression + progression = encoder.get_channel_progression() + assert progression == [3, 64, 128, 256] + + # Check individual block configurations + assert encoder.operations[0].in_channels == 3 + assert encoder.operations[0].out_channels == 64 + assert encoder.operations[1].in_channels == 64 + assert encoder.operations[1].out_channels == 128 + assert encoder.operations[2].in_channels == 128 + assert encoder.operations[2].out_channels == 256 + + +class TestBlockBasedEncoderValidation: + """Test parameter validation in BlockBasedEncoder.""" + + def test_empty_block_configs(self): + """Test that empty block_configs raises ValueError.""" + with pytest.raises(ValueError, match="block_configs cannot be empty"): + BlockBasedEncoder(in_channels=3, block_configs=[]) + + def test_invalid_in_channels(self): + """Test that invalid in_channels raises ValueError.""" + configs = [{"out_channels": 64}] + + with pytest.raises(ValueError, match="in_channels must be positive"): + BlockBasedEncoder(in_channels=0, block_configs=configs) + + with pytest.raises(ValueError, match="in_channels must be positive"): + BlockBasedEncoder(in_channels=-5, block_configs=configs) + + def test_missing_out_channels(self): + """Test that missing out_channels in config raises ValueError.""" + configs = [ + {"out_channels": 64}, + {"dropout": 0.5}, # Missing out_channels + {"out_channels": 256}, + ] + + with pytest.raises( + ValueError, match="Block 1 missing required 'out_channels' key" + ): + BlockBasedEncoder(in_channels=3, block_configs=configs) + + def test_invalid_out_channels(self): + """Test that invalid out_channels raises ValueError.""" + configs = [ + {"out_channels": 64}, + {"out_channels": 0}, # Invalid + {"out_channels": 256}, + ] + + with pytest.raises( + ValueError, match="out_channels must be positive, got 0 in block 1" + ): + BlockBasedEncoder(in_channels=3, block_configs=configs) + + configs = [ + {"out_channels": -32} # Invalid + ] + + with pytest.raises( + ValueError, + match="out_channels must be positive, got -32 in block 0", + ): + BlockBasedEncoder(in_channels=3, block_configs=configs) + + +class TestBlockBasedEncoderForwardPass: + """Test BlockBasedEncoder forward pass functionality.""" + + def test_forward_pass_basic(self): + """Test basic forward pass.""" + configs = [{"out_channels": 64}, {"out_channels": 128}] + encoder = BlockBasedEncoder(in_channels=3, block_configs=configs) + x = torch.randn(2, 3, 32, 64) + + output = encoder(x) + + assert output.shape[0] == 2 # batch size + assert output.shape[1] == 128 # final out_channels + # Spatial dimensions depend on pooling operations + + def test_forward_pass_single_block(self): + """Test forward pass with single block.""" + configs = [{"out_channels": 32}] + encoder = BlockBasedEncoder(in_channels=8, block_configs=configs) + x = torch.randn(1, 8, 16, 16) + + output = encoder(x) + + assert output.shape[0] == 1 + assert output.shape[1] == 32 + + def test_forward_pass_multiple_blocks(self): + """Test forward pass with multiple blocks.""" + configs = [ + {"out_channels": 32, "pool_size": (1, 2)}, + {"out_channels": 64, "pool_size": (2, 2)}, + {"out_channels": 128, "pool_size": (1, 1)}, + ] + encoder = BlockBasedEncoder(in_channels=16, block_configs=configs) + x = torch.randn(1, 16, 32, 32) + + output = encoder(x) + + assert output.shape[0] == 1 + assert output.shape[1] == 128 + + def test_forward_pass_different_input_sizes(self): + """Test forward pass with different input sizes.""" + configs = [{"out_channels": 64}, {"out_channels": 128}] + encoder = BlockBasedEncoder(in_channels=3, block_configs=configs) + + # Test various input sizes + for h, w in [(8, 8), (16, 32), (32, 64), (64, 128)]: + x = torch.randn(1, 3, h, w) + output = encoder(x) + + assert output.shape[0] == 1 + assert output.shape[1] == 128 + assert output.shape[2] > 0 + assert output.shape[3] > 0 + + def test_forward_pass_gradient_flow(self): + """Test that gradients flow properly through the encoder.""" + configs = [{"out_channels": 32}, {"out_channels": 64}] + encoder = BlockBasedEncoder(in_channels=8, block_configs=configs) + x = torch.randn(1, 8, 16, 16, requires_grad=True) + + output = encoder(x) + loss = output.sum() + loss.backward() + + assert x.grad is not None + assert x.grad.shape == x.shape + + def test_forward_pass_with_custom_parameters(self): + """Test forward pass with custom block parameters.""" + configs = [ + {"out_channels": 32, "dropout": 0.5, "activation": "gelu"}, + {"out_channels": 64, "pool_size": (2, 2), "kernel_size": 5}, + ] + encoder = BlockBasedEncoder(in_channels=16, block_configs=configs) + x = torch.randn(1, 16, 32, 32) + + output = encoder(x) + + assert output.shape[0] == 1 + assert output.shape[1] == 64 + + +class TestBlockBasedEncoderConfiguration: + """Test BlockBasedEncoder configuration methods.""" + + def test_get_config(self): + """Test get_config method returns complete configuration.""" + configs = [ + {"out_channels": 64, "dropout": 0.4}, + {"out_channels": 128, "activation": "gelu"}, + ] + encoder = BlockBasedEncoder( + in_channels=3, block_configs=configs, kernel_size=5, bias=False + ) + + config = encoder.get_config() + + assert config["in_channels"] == 3 + assert config["out_channels"] == 128 + assert config["block_configs"] == configs + assert config["kernel_size"] == 5 + assert config["bias"] is False + + def test_from_config(self): + """Test from_config class method creates equivalent encoder.""" + original_configs = [ + {"out_channels": 64, "dropout": 0.3}, + {"out_channels": 128, "pool_size": (2, 2)}, + ] + original_encoder = BlockBasedEncoder( + in_channels=16, block_configs=original_configs, kernel_size=7 + ) + + config = original_encoder.get_config() + reconstructed_encoder = BlockBasedEncoder.from_config(config) + + assert ( + reconstructed_encoder.in_channels == original_encoder.in_channels + ) + assert ( + reconstructed_encoder.out_channels == original_encoder.out_channels + ) + assert ( + reconstructed_encoder.block_configs + == original_encoder.block_configs + ) + assert ( + reconstructed_encoder.kernel_size == original_encoder.kernel_size + ) + + def test_config_roundtrip(self): + """Test that config -> encoder -> config roundtrip works.""" + original_config = { + "in_channels": 8, + "block_configs": [ + {"out_channels": 32, "dropout": 0.2}, + {"out_channels": 64, "activation": "relu"}, + ], + "kernel_size": 3, + "bias": True, + } + + encoder = BlockBasedEncoder.from_config(original_config) + reconstructed_config = encoder.get_config() + + for key in original_config: + assert reconstructed_config[key] == original_config[key] + + +class TestBlockBasedEncoderChannelProgression: + """Test BlockBasedEncoder channel progression functionality.""" + + def test_get_channel_progression_basic(self): + """Test get_channel_progression with basic configuration.""" + configs = [ + {"out_channels": 32}, + {"out_channels": 64}, + {"out_channels": 128}, + ] + encoder = BlockBasedEncoder(in_channels=8, block_configs=configs) + + progression = encoder.get_channel_progression() + assert progression == [8, 32, 64, 128] + + def test_get_channel_progression_single_block(self): + """Test get_channel_progression with single block.""" + configs = [{"out_channels": 64}] + encoder = BlockBasedEncoder(in_channels=16, block_configs=configs) + + progression = encoder.get_channel_progression() + assert progression == [16, 64] + + def test_get_channel_progression_complex(self): + """Test get_channel_progression with complex configuration.""" + configs = [ + {"out_channels": 128}, + {"out_channels": 64}, # Decreasing channels + {"out_channels": 256}, # Then increasing + {"out_channels": 32}, # Then decreasing again + ] + encoder = BlockBasedEncoder(in_channels=3, block_configs=configs) + + progression = encoder.get_channel_progression() + assert progression == [3, 128, 64, 256, 32] + + +class TestBlockBasedEncoderShapeCalculation: + """Test BlockBasedEncoder shape calculation methods.""" + + def test_get_output_shape_basic(self): + """Test get_output_shape with basic configuration.""" + configs = [{"out_channels": 64}, {"out_channels": 128}] + encoder = BlockBasedEncoder(in_channels=3, block_configs=configs) + input_shape = (2, 3, 32, 32) + + output_shape = encoder.get_output_shape(input_shape) + + assert output_shape[0] == 2 # batch size + assert output_shape[1] == 128 # final out_channels + assert output_shape[2] > 0 # height should be positive + assert output_shape[3] > 0 # width should be positive + + def test_get_output_shape_matches_forward(self): + """Test that get_output_shape matches actual forward pass output.""" + configs = [ + {"out_channels": 32, "pool_size": (1, 2)}, + {"out_channels": 64, "pool_size": (2, 1)}, + ] + encoder = BlockBasedEncoder(in_channels=8, block_configs=configs) + input_shape = (1, 8, 16, 16) + + predicted_shape = encoder.get_output_shape(input_shape) + + x = torch.randn(*input_shape) + actual_output = encoder(x) + + assert predicted_shape == actual_output.shape + + def test_get_output_shape_different_pool_sizes(self): + """Test get_output_shape with different pool sizes.""" + configs = [ + {"out_channels": 32, "pool_size": (2, 2)}, + {"out_channels": 64, "pool_size": (1, 4)}, + ] + encoder = BlockBasedEncoder(in_channels=16, block_configs=configs) + input_shape = (1, 16, 32, 32) + + output_shape = encoder.get_output_shape(input_shape) + + assert output_shape[0] == 1 + assert output_shape[1] == 64 + # Height should be reduced by factor of 2 from first block + # Width should be reduced by factors 2 and 4 from both blocks + + +class TestBlockBasedEncoderFeatureMaps: + """Test BlockBasedEncoder feature map extraction.""" + + def test_get_feature_maps_basic(self): + """Test get_feature_maps returns correct number of maps.""" + configs = [ + {"out_channels": 32}, + {"out_channels": 64}, + {"out_channels": 128}, + ] + encoder = BlockBasedEncoder(in_channels=8, block_configs=configs) + x = torch.randn(1, 8, 16, 16) + + feature_maps = encoder.get_feature_maps(x) + + assert len(feature_maps) == 3 # One per block + assert feature_maps[0].shape[1] == 32 # First block output + assert feature_maps[1].shape[1] == 64 # Second block output + assert feature_maps[2].shape[1] == 128 # Third block output + + def test_get_feature_maps_single_block(self): + """Test get_feature_maps with single block.""" + configs = [{"out_channels": 64}] + encoder = BlockBasedEncoder(in_channels=16, block_configs=configs) + x = torch.randn(1, 16, 32, 32) + + feature_maps = encoder.get_feature_maps(x) + + assert len(feature_maps) == 1 + assert feature_maps[0].shape[1] == 64 + + def test_get_feature_maps_consistency(self): + """Test that get_feature_maps gives same result as forward pass.""" + configs = [{"out_channels": 32}, {"out_channels": 64}] + encoder = BlockBasedEncoder(in_channels=8, block_configs=configs) + x = torch.randn(1, 8, 16, 16) + + feature_maps = encoder.get_feature_maps(x) + final_output = encoder(x) + + # Last feature map should match forward pass output + assert torch.allclose(feature_maps[-1], final_output, atol=1e-6) + + def test_get_feature_maps_independence(self): + """Test that feature maps are independent copies.""" + configs = [{"out_channels": 32}, {"out_channels": 64}] + encoder = BlockBasedEncoder(in_channels=8, block_configs=configs) + x = torch.randn(1, 8, 16, 16) + + feature_maps = encoder.get_feature_maps(x) + + # Modify one feature map + original_value = feature_maps[0][0, 0, 0, 0].item() + feature_maps[0][0, 0, 0, 0] = 999.0 + + # Get feature maps again + new_feature_maps = encoder.get_feature_maps(x) + + # Should not be affected by previous modification + assert new_feature_maps[0][0, 0, 0, 0].item() == original_value + + +class TestBlockBasedEncoderRepresentation: + """Test BlockBasedEncoder string representation.""" + + def test_repr_basic(self): + """Test __repr__ method with basic configuration.""" + configs = [{"out_channels": 64}, {"out_channels": 128}] + encoder = BlockBasedEncoder(in_channels=3, block_configs=configs) + repr_str = repr(encoder) + + assert "BlockBasedEncoder(" in repr_str + assert "blocks=2" in repr_str + assert "channels=3 → 64 → 128" in repr_str + + def test_repr_single_block(self): + """Test __repr__ method with single block.""" + configs = [{"out_channels": 32}] + encoder = BlockBasedEncoder(in_channels=8, block_configs=configs) + repr_str = repr(encoder) + + assert "blocks=1" in repr_str + assert "channels=8 → 32" in repr_str + + def test_repr_complex(self): + """Test __repr__ method with complex configuration.""" + configs = [ + {"out_channels": 16}, + {"out_channels": 32}, + {"out_channels": 64}, + {"out_channels": 128}, + ] + encoder = BlockBasedEncoder(in_channels=3, block_configs=configs) + repr_str = repr(encoder) + + assert "blocks=4" in repr_str + assert "channels=3 → 16 → 32 → 64 → 128" in repr_str + + +class TestBlockBasedEncoderCompatibility: + """Test BlockBasedEncoder compatibility and integration.""" + + def test_sequential_block_inheritance(self): + """ + Test that BlockBasedEncoder properly inherits from SequentialBlock. + """ + configs = [{"out_channels": 64}, {"out_channels": 128}] + encoder = BlockBasedEncoder(in_channels=3, block_configs=configs) + + # Should have SequentialBlock attributes + assert hasattr(encoder, "operations") + assert hasattr(encoder, "in_channels") + assert hasattr(encoder, "out_channels") + assert len(encoder.operations) == 2 + + def test_blocks_property(self): + """Test blocks property for backward compatibility.""" + configs = [{"out_channels": 32}, {"out_channels": 64}] + encoder = BlockBasedEncoder(in_channels=16, block_configs=configs) + + assert hasattr(encoder, "blocks") + assert len(encoder.blocks) == 2 + assert encoder.blocks[0] is encoder.operations[0] + assert encoder.blocks[1] is encoder.operations[1] + + def test_module_list_functionality(self): + """Test that operations work like ModuleList.""" + configs = [{"out_channels": 32}, {"out_channels": 64}] + encoder = BlockBasedEncoder(in_channels=8, block_configs=configs) + + # Should be able to iterate over operations + block_count = 0 + for block in encoder.operations: + assert hasattr(block, "forward") + block_count += 1 + assert block_count == 2 + + def test_parameter_count(self): + """Test that parameter count is reasonable.""" + configs = [{"out_channels": 32}, {"out_channels": 64}] + encoder = BlockBasedEncoder(in_channels=16, block_configs=configs) + + total_params = sum(p.numel() for p in encoder.parameters()) + trainable_params = sum( + p.numel() for p in encoder.parameters() if p.requires_grad + ) + + assert total_params > 0 + assert ( + trainable_params == total_params + ) # All parameters should be trainable + + +class TestBlockBasedEncoderEdgeCases: + """Test edge cases and boundary conditions.""" + + def test_large_channel_counts(self): + """Test with large channel counts.""" + configs = [{"out_channels": 512}, {"out_channels": 1024}] + encoder = BlockBasedEncoder(in_channels=256, block_configs=configs) + x = torch.randn(1, 256, 8, 8) + + output = encoder(x) + assert output.shape[1] == 1024 + + def test_single_channel_input(self): + """Test with single channel input.""" + configs = [{"out_channels": 16}, {"out_channels": 32}] + encoder = BlockBasedEncoder(in_channels=1, block_configs=configs) + x = torch.randn(1, 1, 32, 32) + + output = encoder(x) + assert output.shape[1] == 32 + + def test_minimal_spatial_dimensions(self): + """Test with minimal spatial dimensions.""" + configs = [{"out_channels": 64}] + encoder = BlockBasedEncoder(in_channels=32, block_configs=configs) + x = torch.randn(1, 32, 1, 1) + + output = encoder(x) + assert output.shape[1] == 64 + assert output.shape[2] > 0 + assert output.shape[3] > 0 + + def test_decreasing_channels(self): + """Test with decreasing channel progression.""" + configs = [ + {"out_channels": 128}, + {"out_channels": 64}, + {"out_channels": 32}, + ] + encoder = BlockBasedEncoder(in_channels=256, block_configs=configs) + x = torch.randn(1, 256, 16, 16) + + output = encoder(x) + assert output.shape[1] == 32 + + progression = encoder.get_channel_progression() + assert progression == [256, 128, 64, 32] + + +# Fixtures for common test data +@pytest.fixture +def sample_input(): + """Fixture providing sample input tensor.""" + return torch.randn(2, 16, 32, 32) + + +@pytest.fixture +def basic_encoder(): + """Fixture providing basic BlockBasedEncoder instance.""" + configs = [{"out_channels": 64}, {"out_channels": 128}] + return BlockBasedEncoder(in_channels=16, block_configs=configs) + + +@pytest.fixture +def complex_encoder(): + """Fixture providing complex BlockBasedEncoder instance.""" + configs = [ + {'out_channels': 32, 'pool_size': (1, 2), 'dropout': 0.2}, + {'out_channels': 64, 'pool_size': (2, 2), 'activation': 'gelu'}, + {'out_channels': 128, 'kernel_size': 5, 'bias': False} + ] + return BlockBasedEncoder(in_channels=8, block_configs=configs) + + +if __name__ == "__main__": + pytest.main([__file__, "-v"]) From 080f69eb77d20425d5d447af8a04633ccc36c815 Mon Sep 17 00:00:00 2001 From: Peter Steiner <61472983+renierts@users.noreply.github.com> Date: Thu, 17 Jul 2025 10:47:59 -0400 Subject: [PATCH 064/103] BlockBasedEncoder is tested. --- src/faith/train/blocks/encoder.py | 9 + .../test_train_blocks_block_based_encoder.py | 164 +++++++++++------- 2 files changed, 106 insertions(+), 67 deletions(-) diff --git a/src/faith/train/blocks/encoder.py b/src/faith/train/blocks/encoder.py index 1374267..2f9a024 100644 --- a/src/faith/train/blocks/encoder.py +++ b/src/faith/train/blocks/encoder.py @@ -256,6 +256,7 @@ def __init__( block_configs: list[dict[str, Any]], kernel_size: Union[int, tuple[int, int]] = 3, bias: bool = True, + **kwargs ) -> None: """Initialize BlockBasedEncoder.""" @@ -356,6 +357,14 @@ def get_feature_maps(self, x: torch.Tensor) -> list[torch.Tensor]: return feature_maps + def get_output_shape(self, input_shape: tuple[int, ...]) \ + -> tuple[int, ...]: + """Calculate output shape given input shape.""" + shape = input_shape + for block in self.operations: + shape = block.get_output_shape(shape) + return shape + def get_channel_progression(self) -> list[int]: """Get the channel count progression through the encoder. diff --git a/tests/test_train_blocks_block_based_encoder.py b/tests/test_train_blocks_block_based_encoder.py index 027ac37..e8bd991 100644 --- a/tests/test_train_blocks_block_based_encoder.py +++ b/tests/test_train_blocks_block_based_encoder.py @@ -9,29 +9,29 @@ class TestBlockBasedEncoderInitialization: def test_basic_initialization(self): """Test basic BlockBasedEncoder initialization.""" - configs = [{"out_channels": 64}, {"out_channels": 128}] + configs = [{"out_channels": 4}, {"out_channels": 8}] encoder = BlockBasedEncoder(in_channels=3, block_configs=configs) assert encoder.in_channels == 3 - assert encoder.out_channels == 128 # Last block's out_channels + assert encoder.out_channels == 8 # Last block's out_channels assert len(encoder.operations) == 2 assert len(encoder.block_configs) == 2 def test_custom_initialization(self): """Test BlockBasedEncoder with custom parameters.""" configs = [ - {"out_channels": 64, "pool_size": (2, 2), "dropout": 0.5}, - {"out_channels": 128, "activation": "gelu"}, - {"out_channels": 256, "kernel_size": 5, "bias": False}, + {"out_channels": 4, "pool_size": (2, 2), "dropout": 0.5}, + {"out_channels": 8, "activation": "gelu"}, + {"out_channels": 16, "kernel_size": 5, "bias": False}, ] encoder = BlockBasedEncoder( - in_channels=16, block_configs=configs, kernel_size=7, bias=True + in_channels=3, block_configs=configs, kernel_size=7, bias=True ) - assert encoder.in_channels == 16 - assert encoder.out_channels == 256 + assert encoder.in_channels == 3 + assert encoder.out_channels == 16 assert len(encoder.operations) == 3 - assert encoder.kernel_size == 7 + assert encoder.kernel_size == (7, 7) assert encoder.bias is True def test_single_block_encoder(self): @@ -42,27 +42,30 @@ def test_single_block_encoder(self): assert encoder.in_channels == 8 assert encoder.out_channels == 32 assert len(encoder.operations) == 1 + assert encoder.kernel_size == (3, 3) + assert encoder.bias is True + assert len(encoder.operations) == 1 def test_channel_progression_setup(self): """Test that blocks are configured with correct channel progression.""" configs = [ - {"out_channels": 64}, - {"out_channels": 128}, - {"out_channels": 256}, + {"out_channels": 4}, + {"out_channels": 8}, + {"out_channels": 16}, ] encoder = BlockBasedEncoder(in_channels=3, block_configs=configs) # Check channel progression progression = encoder.get_channel_progression() - assert progression == [3, 64, 128, 256] + assert progression == [3, 4, 8, 16] # Check individual block configurations assert encoder.operations[0].in_channels == 3 - assert encoder.operations[0].out_channels == 64 - assert encoder.operations[1].in_channels == 64 - assert encoder.operations[1].out_channels == 128 - assert encoder.operations[2].in_channels == 128 - assert encoder.operations[2].out_channels == 256 + assert encoder.operations[0].out_channels == 4 + assert encoder.operations[1].in_channels == 4 + assert encoder.operations[1].out_channels == 8 + assert encoder.operations[2].in_channels == 8 + assert encoder.operations[2].out_channels == 16 class TestBlockBasedEncoderValidation: @@ -125,15 +128,20 @@ class TestBlockBasedEncoderForwardPass: def test_forward_pass_basic(self): """Test basic forward pass.""" - configs = [{"out_channels": 64}, {"out_channels": 128}] + configs = [{"out_channels": 4}, {"out_channels": 8}] encoder = BlockBasedEncoder(in_channels=3, block_configs=configs) x = torch.randn(2, 3, 32, 64) output = encoder(x) assert output.shape[0] == 2 # batch size - assert output.shape[1] == 128 # final out_channels - # Spatial dimensions depend on pooling operations + assert output.shape[1] == 8 # final out_channels + assert output.shape[2] == 32 # Height should be preserved + assert output.shape[3] == 16 # Width pooling of 2 in every block + + progression = encoder.get_channel_progression() + assert progression == [3, 4, 8] + def test_forward_pass_single_block(self): """Test forward pass with single block.""" @@ -145,25 +153,33 @@ def test_forward_pass_single_block(self): assert output.shape[0] == 1 assert output.shape[1] == 32 + assert output.shape[2] == 16 # Height should be preserved + assert output.shape[3] == 8 # Width pooling of 2 def test_forward_pass_multiple_blocks(self): """Test forward pass with multiple blocks.""" configs = [ - {"out_channels": 32, "pool_size": (1, 2)}, - {"out_channels": 64, "pool_size": (2, 2)}, - {"out_channels": 128, "pool_size": (1, 1)}, + {"out_channels": 4, "pool_size": (1, 2)}, + {"out_channels": 8, "pool_size": (2, 2)}, + {"out_channels": 16, "pool_size": (1, 1)}, ] - encoder = BlockBasedEncoder(in_channels=16, block_configs=configs) - x = torch.randn(1, 16, 32, 32) + encoder = BlockBasedEncoder(in_channels=3, block_configs=configs) + x = torch.randn(1, 3, 32, 32) output = encoder(x) assert output.shape[0] == 1 - assert output.shape[1] == 128 + assert output.shape[1] == 16 + assert output.shape[2] == 16 + # Width pooling of 2 in first and second block + assert output.shape[3] == 8 + + progression = encoder.get_channel_progression() + assert progression == [3, 4, 8, 16] def test_forward_pass_different_input_sizes(self): """Test forward pass with different input sizes.""" - configs = [{"out_channels": 64}, {"out_channels": 128}] + configs = [{"out_channels": 4}, {"out_channels": 8}] encoder = BlockBasedEncoder(in_channels=3, block_configs=configs) # Test various input sizes @@ -172,13 +188,14 @@ def test_forward_pass_different_input_sizes(self): output = encoder(x) assert output.shape[0] == 1 - assert output.shape[1] == 128 - assert output.shape[2] > 0 - assert output.shape[3] > 0 + assert output.shape[1] == 8 + assert output.shape[2] == h + # Width pooling of 2 in every block + assert output.shape[3] == w // 4 def test_forward_pass_gradient_flow(self): """Test that gradients flow properly through the encoder.""" - configs = [{"out_channels": 32}, {"out_channels": 64}] + configs = [{"out_channels": 8}, {"out_channels": 16}] encoder = BlockBasedEncoder(in_channels=8, block_configs=configs) x = torch.randn(1, 8, 16, 16, requires_grad=True) @@ -186,22 +203,27 @@ def test_forward_pass_gradient_flow(self): loss = output.sum() loss.backward() + progression = encoder.get_channel_progression() + assert progression == [8, 8, 16] + assert x.grad is not None assert x.grad.shape == x.shape def test_forward_pass_with_custom_parameters(self): """Test forward pass with custom block parameters.""" configs = [ - {"out_channels": 32, "dropout": 0.5, "activation": "gelu"}, - {"out_channels": 64, "pool_size": (2, 2), "kernel_size": 5}, + {"out_channels": 2, "dropout": 0.5, "activation": "gelu"}, + {"out_channels": 4, "pool_size": (2, 2), "kernel_size": 5}, ] - encoder = BlockBasedEncoder(in_channels=16, block_configs=configs) - x = torch.randn(1, 16, 32, 32) + encoder = BlockBasedEncoder(in_channels=1, block_configs=configs) + x = torch.randn(1, 1, 32, 32) output = encoder(x) assert output.shape[0] == 1 - assert output.shape[1] == 64 + assert output.shape[1] == 4 + assert output.shape[2] == 16 # One height pooling of 2 in first block + assert output.shape[3] == 8 # Width pooling of 2 in every block class TestBlockBasedEncoderConfiguration: @@ -222,7 +244,7 @@ def test_get_config(self): assert config["in_channels"] == 3 assert config["out_channels"] == 128 assert config["block_configs"] == configs - assert config["kernel_size"] == 5 + assert config["kernel_size"] == (5, 5) assert config["bias"] is False def test_from_config(self): @@ -260,7 +282,7 @@ def test_config_roundtrip(self): {"out_channels": 32, "dropout": 0.2}, {"out_channels": 64, "activation": "relu"}, ], - "kernel_size": 3, + "kernel_size": (3, 3), "bias": True, } @@ -268,7 +290,8 @@ def test_config_roundtrip(self): reconstructed_config = encoder.get_config() for key in original_config: - assert reconstructed_config[key] == original_config[key] + if key != "out_channels": + assert reconstructed_config[key] == original_config[key] class TestBlockBasedEncoderChannelProgression: @@ -321,8 +344,8 @@ def test_get_output_shape_basic(self): assert output_shape[0] == 2 # batch size assert output_shape[1] == 128 # final out_channels - assert output_shape[2] > 0 # height should be positive - assert output_shape[3] > 0 # width should be positive + assert output_shape[2] == 32 # height should be positive + assert output_shape[3] == 8 # width should be positive def test_get_output_shape_matches_forward(self): """Test that get_output_shape matches actual forward pass output.""" @@ -349,12 +372,19 @@ def test_get_output_shape_different_pool_sizes(self): encoder = BlockBasedEncoder(in_channels=16, block_configs=configs) input_shape = (1, 16, 32, 32) - output_shape = encoder.get_output_shape(input_shape) + predicted_shape = encoder.get_output_shape(input_shape) - assert output_shape[0] == 1 - assert output_shape[1] == 64 + assert predicted_shape[0] == 1 + assert predicted_shape[1] == 64 # Height should be reduced by factor of 2 from first block + assert predicted_shape[2] == 16 # Width should be reduced by factors 2 and 4 from both blocks + assert predicted_shape[3] == 4 + + x = torch.randn(*input_shape) + actual_output = encoder(x) + + assert predicted_shape == actual_output.shape class TestBlockBasedEncoderFeatureMaps: @@ -373,9 +403,9 @@ def test_get_feature_maps_basic(self): feature_maps = encoder.get_feature_maps(x) assert len(feature_maps) == 3 # One per block - assert feature_maps[0].shape[1] == 32 # First block output - assert feature_maps[1].shape[1] == 64 # Second block output - assert feature_maps[2].shape[1] == 128 # Third block output + assert feature_maps[0].shape == (1, 32, 16, 8) + assert feature_maps[1].shape == (1, 64, 16, 4) + assert feature_maps[2].shape == (1, 128, 16, 2) def test_get_feature_maps_single_block(self): """Test get_feature_maps with single block.""" @@ -386,7 +416,7 @@ def test_get_feature_maps_single_block(self): feature_maps = encoder.get_feature_maps(x) assert len(feature_maps) == 1 - assert feature_maps[0].shape[1] == 64 + assert feature_maps[0].shape == (1, 64, 32, 16) def test_get_feature_maps_consistency(self): """Test that get_feature_maps gives same result as forward pass.""" @@ -394,8 +424,10 @@ def test_get_feature_maps_consistency(self): encoder = BlockBasedEncoder(in_channels=8, block_configs=configs) x = torch.randn(1, 8, 16, 16) - feature_maps = encoder.get_feature_maps(x) - final_output = encoder(x) + encoder.eval() + with torch.no_grad(): + feature_maps = encoder.get_feature_maps(x) + final_output = encoder(x) # Last feature map should match forward pass output assert torch.allclose(feature_maps[-1], final_output, atol=1e-6) @@ -404,16 +436,18 @@ def test_get_feature_maps_independence(self): """Test that feature maps are independent copies.""" configs = [{"out_channels": 32}, {"out_channels": 64}] encoder = BlockBasedEncoder(in_channels=8, block_configs=configs) + encoder.eval() x = torch.randn(1, 8, 16, 16) - feature_maps = encoder.get_feature_maps(x) + with torch.no_grad(): + feature_maps = encoder.get_feature_maps(x) - # Modify one feature map - original_value = feature_maps[0][0, 0, 0, 0].item() - feature_maps[0][0, 0, 0, 0] = 999.0 + # Modify one feature map + original_value = feature_maps[0][0, 0, 0, 0].item() + feature_maps[0][0, 0, 0, 0] = 999.0 - # Get feature maps again - new_feature_maps = encoder.get_feature_maps(x) + # Get feature maps again + new_feature_maps = encoder.get_feature_maps(x) # Should not be affected by previous modification assert new_feature_maps[0][0, 0, 0, 0].item() == original_value @@ -505,9 +539,7 @@ def test_parameter_count(self): ) assert total_params > 0 - assert ( - trainable_params == total_params - ) # All parameters should be trainable + assert trainable_params == total_params # All parameters are trainable class TestBlockBasedEncoderEdgeCases: @@ -520,7 +552,7 @@ def test_large_channel_counts(self): x = torch.randn(1, 256, 8, 8) output = encoder(x) - assert output.shape[1] == 1024 + assert output.shape == (1, 1024, 8, 2) def test_single_channel_input(self): """Test with single channel input.""" @@ -529,7 +561,7 @@ def test_single_channel_input(self): x = torch.randn(1, 1, 32, 32) output = encoder(x) - assert output.shape[1] == 32 + assert output.shape == (1, 32, 32, 8) def test_minimal_spatial_dimensions(self): """Test with minimal spatial dimensions.""" @@ -537,10 +569,8 @@ def test_minimal_spatial_dimensions(self): encoder = BlockBasedEncoder(in_channels=32, block_configs=configs) x = torch.randn(1, 32, 1, 1) - output = encoder(x) - assert output.shape[1] == 64 - assert output.shape[2] > 0 - assert output.shape[3] > 0 + with pytest.raises(ValueError): + _ = encoder(x) def test_decreasing_channels(self): """Test with decreasing channel progression.""" @@ -553,7 +583,7 @@ def test_decreasing_channels(self): x = torch.randn(1, 256, 16, 16) output = encoder(x) - assert output.shape[1] == 32 + assert output.shape == (1, 32, 16, 2) progression = encoder.get_channel_progression() assert progression == [256, 128, 64, 32] From 59ab46093e876f566009147b573d25a7c490036c Mon Sep 17 00:00:00 2001 From: Peter Steiner <61472983+renierts@users.noreply.github.com> Date: Thu, 17 Jul 2025 11:46:26 -0400 Subject: [PATCH 065/103] BlockBasedDecoder is tested. --- src/faith/train/blocks/decoder.py | 9 ++++++ .../test_train_blocks_block_based_decoder.py | 30 ++++++++----------- 2 files changed, 22 insertions(+), 17 deletions(-) diff --git a/src/faith/train/blocks/decoder.py b/src/faith/train/blocks/decoder.py index 7128904..7dcd364 100644 --- a/src/faith/train/blocks/decoder.py +++ b/src/faith/train/blocks/decoder.py @@ -315,6 +315,7 @@ def __init__( block_configs: list[dict[str, Any]], kernel_size: Union[int, tuple[int, int]] = 3, bias: bool = True, + **kwargs ) -> None: """Initialize BlockBasedDecoder.""" @@ -392,6 +393,14 @@ def _build_decoder_blocks( return blocks + def get_output_shape(self, input_shape: tuple[int, ...]) \ + -> tuple[int, ...]: + """Calculate output shape given input shape.""" + shape = input_shape + for block in self.operations: + shape = block.get_output_shape(shape) + return shape + def get_feature_maps(self, x: torch.Tensor) -> list[torch.Tensor]: """Get intermediate feature maps from each decoder block. diff --git a/tests/test_train_blocks_block_based_decoder.py b/tests/test_train_blocks_block_based_decoder.py index c1cc246..312d6f8 100644 --- a/tests/test_train_blocks_block_based_decoder.py +++ b/tests/test_train_blocks_block_based_decoder.py @@ -1,4 +1,3 @@ - import pytest import torch @@ -37,7 +36,7 @@ def test_custom_initialization(self): assert decoder.in_channels == 256 assert decoder.out_channels == 32 assert len(decoder.operations) == 3 - assert decoder.kernel_size == 7 + assert decoder.kernel_size == (7, 7) assert decoder.bias is True def test_single_block_decoder(self): @@ -141,9 +140,7 @@ def test_forward_pass_basic(self): output = decoder(z) - assert output.shape[0] == 2 # batch size - assert output.shape[1] == 3 # final out_channels - # Spatial dimensions should be larger due to upsampling + assert output.shape == (2, 3, 16, 16) def test_forward_pass_single_block(self): """Test forward pass with single block.""" @@ -153,8 +150,7 @@ def test_forward_pass_single_block(self): output = decoder(z) - assert output.shape[0] == 1 - assert output.shape[1] == 32 + assert output.shape == (1, 32, 8, 16) def test_forward_pass_gradient_flow(self): """Test that gradients flow properly through the decoder.""" @@ -189,7 +185,7 @@ def test_get_config(self): assert config["in_channels"] == 256 assert config["out_channels"] == 3 assert config["block_configs"] == configs - assert config["kernel_size"] == 5 + assert config["kernel_size"] == (5, 5) assert config["bias"] is False def test_from_config(self): @@ -229,7 +225,7 @@ def test_config_roundtrip(self): {"out_channels": 32, "activation": "relu"}, {"out_channels": 3}, ], - "kernel_size": 3, + "kernel_size": (3, 3), "bias": True, } @@ -237,7 +233,8 @@ def test_config_roundtrip(self): reconstructed_config = decoder.get_config() for key in original_config: - assert reconstructed_config[key] == original_config[key] + if key != "out_channels": + assert reconstructed_config[key] == original_config[key] class TestBlockBasedDecoderChannelProgression: @@ -348,7 +345,7 @@ def __init__(self): encoder, final_out_channels=3, kernel_size=5, bias=False ) - assert decoder.kernel_size == 5 + assert decoder.kernel_size == (5, 5) assert decoder.bias is False @@ -367,10 +364,7 @@ def test_get_output_shape_basic(self): output_shape = decoder.get_output_shape(input_shape) - assert output_shape[0] == 2 # batch size - assert output_shape[1] == 3 # final out_channels - assert output_shape[2] > 0 # height should be positive - assert output_shape[3] > 0 # width should be positive + assert output_shape == (2, 3, 16, 16) def test_get_output_shape_matches_forward(self): """Test that get_output_shape matches actual forward pass output.""" @@ -416,8 +410,10 @@ def test_get_feature_maps_consistency(self): decoder = BlockBasedDecoder(in_channels=128, block_configs=configs) z = torch.randn(1, 128, 8, 8) - feature_maps = decoder.get_feature_maps(z) - final_output = decoder(z) + decoder.eval() + with torch.no_grad(): + feature_maps = decoder.get_feature_maps(z) + final_output = decoder(z) # Last feature map should match forward pass output assert torch.allclose(feature_maps[-1], final_output, atol=1e-6) From b670085613f74c27278fd7287d22549a45378e94 Mon Sep 17 00:00:00 2001 From: Kouroche Bouchiat Date: Thu, 17 Jul 2025 13:15:48 -0400 Subject: [PATCH 066/103] Base implementations for `Residual{Encoding,Decoding}{1d,2d}` --- src/faith/train/blocks/base.py | 95 +++++++++++++++++++++++++++++++++- 1 file changed, 94 insertions(+), 1 deletion(-) diff --git a/src/faith/train/blocks/base.py b/src/faith/train/blocks/base.py index 7569be3..acbb871 100644 --- a/src/faith/train/blocks/base.py +++ b/src/faith/train/blocks/base.py @@ -8,7 +8,7 @@ import math from abc import ABC, abstractmethod -from typing import Any, Optional, Union +from typing import Any, ClassVar, Literal, Optional, Union import torch import torch.nn as nn @@ -292,3 +292,96 @@ def get_memory_usage( 'activations_mb': activation_memory / (1024 * 1024), 'total_mb': (param_memory + activation_memory) / (1024 * 1024) } + +# Kouroche's implementation. +def padding_for_conv( + size: int, mode: Literal["valid", "same", "full"] = "same" +) -> int: + if size % 2 == 0 and mode in ("same", "full"): + raise ValueError(f'Kernel size must be odd for "{mode}" convolution.') + + if mode == "valid": + return 0 + elif mode == "same": + return size // 2 + elif mode == "full": + return size - 1 + else: + raise ValueError(f'Invalid mode: "{mode}"') + +class _ResidualBlock(ABC, nn.Module): + _conv_type: ClassVar[ + type[nn.Conv1d] + | type[nn.Conv2d] + | type[nn.ConvTranspose1d] + | type[nn.ConvTranspose2d] + ] + _norm_type: ClassVar[type[nn.BatchNorm1d] | type[nn.BatchNorm2d]] + + conv_1: nn.Sequential + conv_2: nn.Sequential + downsample: nn.Sequential | None + activation: nn.ReLU + + def __init__( + self, in_channels: int, out_channels: int, kernel_size: int = 3, stride: int = 1 + ) -> None: + super().__init__() + + padding = padding_for_conv(kernel_size) + + self.conv_1 = nn.Sequential( + self._conv_type(in_channels, out_channels, kernel_size, stride, padding), + self._norm_type(out_channels), + nn.ReLU(inplace=True), + ) + self.conv_2 = nn.Sequential( + self._conv_type(out_channels, out_channels, kernel_size, padding=padding), + self._norm_type(out_channels), + ) + + if in_channels != out_channels or stride != 1: + self.downsample = nn.Sequential( + self._conv_type( + in_channels, out_channels, kernel_size=1, stride=stride + ), + self._norm_type(out_channels), + ) + else: + self.downsample = None + + self.activation = nn.ReLU(inplace=True) + + + def forward(self, input: torch.Tensor) -> torch.Tensor: + residual = input + + output = self.conv_1(input) + output = self.conv_2(output) + + if self.downsample: + residual = self.downsample(residual) + + output = output + residual + output = self.activation(output) + return output + + +class ResidualEncoding1d(_ResidualBlock): + _conv_type = nn.Conv1d + _norm_type = nn.BatchNorm1d + + +class ResidualEncoding2d(_ResidualBlock): + _conv_type = nn.Conv2d + _norm_type = nn.BatchNorm2d + + +class ResidualDecoding1d(_ResidualBlock): + _conv_type = nn.ConvTranspose1d + _norm_type = nn.BatchNorm1d + + +class ResidualDecoding2d(_ResidualBlock): + _conv_type = nn.ConvTranspose2d + _norm_type = nn.BatchNorm2d From afb8dc864b4a2c62f00f3fdcc36718d49cce44c3 Mon Sep 17 00:00:00 2001 From: Peter Steiner <61472983+renierts@users.noreply.github.com> Date: Thu, 17 Jul 2025 16:04:30 -0400 Subject: [PATCH 067/103] Started refactoring the ResidualBlock. --- src/faith/train/blocks/__init__.py | 16 +- src/faith/train/blocks/base.py | 247 ++++++++---- src/faith/train/blocks/decoder.py | 14 +- src/faith/train/blocks/encoder.py | 160 +++----- src/faith/train/blocks/residual.py | 364 ------------------ ...test_train_blocks_residual_encoding_1d.py} | 119 +++--- 6 files changed, 304 insertions(+), 616 deletions(-) delete mode 100644 src/faith/train/blocks/residual.py rename tests/{test_train_blocks_residual.py => test_train_blocks_residual_encoding_1d.py} (65%) diff --git a/src/faith/train/blocks/__init__.py b/src/faith/train/blocks/__init__.py index 02cf1a9..97dd186 100644 --- a/src/faith/train/blocks/__init__.py +++ b/src/faith/train/blocks/__init__.py @@ -1,16 +1,14 @@ -"""Neural network blocks for building autoencoders.""" +"""Neural network blocks.""" -from .residual import ResidualBlock -from .encoder import EncoderBlock, BlockBasedEncoder -from .decoder import DecoderBlock, BlockBasedDecoder -from .base import BaseConvBlock, BlockUtils +from .base import BlockUtils +from .decoder import BlockBasedDecoder, DecoderBlock +from .encoder import EncoderBlock1d, ResidualEncoding1d, ResidualEncoding2d __all__ = [ - "ResidualBlock", - "EncoderBlock", - "BlockBasedEncoder", + "ResidualEncoding1d", + "ResidualEncoding2d", + "EncoderBlock1d", "DecoderBlock", "BlockBasedDecoder", - "BaseConvBlock", "BlockUtils", ] diff --git a/src/faith/train/blocks/base.py b/src/faith/train/blocks/base.py index acbb871..07a85a7 100644 --- a/src/faith/train/blocks/base.py +++ b/src/faith/train/blocks/base.py @@ -5,10 +5,11 @@ It ensures consistency across different block types and provides common patterns for initialization, forward passes, and configuration. """ +from __future__ import annotations import math from abc import ABC, abstractmethod -from typing import Any, ClassVar, Literal, Optional, Union +from typing import Any, ClassVar, Optional, Union import torch import torch.nn as nn @@ -90,22 +91,6 @@ def _normalize_kernel_size( return kernel_size, kernel_size return kernel_size - @staticmethod - def _calculate_padding( - kernel_size: Union[int, tuple[int, int]], - padding: Union[int, tuple[int, int], str] = 'auto' - ) -> tuple[int, ...]: - """Calculate padding based on kernel size and padding specification.""" - if padding == 'auto': - if isinstance(kernel_size, int): - return kernel_size // 2, kernel_size // 2 - else: - return tuple(k // 2 for k in kernel_size) - elif isinstance(padding, int): - return padding, padding - else: - return padding - @abstractmethod def forward( self, @@ -293,95 +278,221 @@ def get_memory_usage( 'total_mb': (param_memory + activation_memory) / (1024 * 1024) } -# Kouroche's implementation. -def padding_for_conv( - size: int, mode: Literal["valid", "same", "full"] = "same" -) -> int: - if size % 2 == 0 and mode in ("same", "full"): - raise ValueError(f'Kernel size must be odd for "{mode}" convolution.') - - if mode == "valid": - return 0 - elif mode == "same": - return size // 2 - elif mode == "full": - return size - 1 - else: - raise ValueError(f'Invalid mode: "{mode}"') +class _Identity(nn.Module): + """Identity block that returns the input tensor unchanged.""" + + def __init__(self): + super().__init__() + + def forward(self, x: torch.Tensor) -> torch.Tensor: + """Identity function that returns the input tensor unchanged.""" + return x + + +def _calculate_padding( + kernel_size: int | tuple[int, int], + padding: int | tuple[int, int] | str = 'auto' +) -> int | tuple[int, int]: + """Calculate padding based on kernel size and padding specification.""" + if isinstance(kernel_size, int) and kernel_size % 2 == 0: + raise ValueError(f"Kernel size must be odd, got {kernel_size} (even).") + if isinstance(kernel_size, tuple) and any(k % 2 == 0 for k in kernel_size): + raise ValueError(f"Kernel size must be odd, got {kernel_size} (even).") + if padding == 'auto': + if isinstance(kernel_size, int): + return kernel_size // 2 + else: + return tuple(k // 2 for k in kernel_size) + return padding + + +def _create_activation(activation_name: str = "relu") -> nn.Module: + """Create activation function based on name.""" + activations = { + 'tanh': nn.Tanh(), + 'sigmoid': nn.Sigmoid(), + 'relu': nn.ReLU(inplace=True), + 'leaky_relu': nn.LeakyReLU(0.1, inplace=True), + 'gelu': nn.GELU(), + 'swish': nn.SiLU(), # SiLU is the same as Swish + 'mish': nn.Mish(), + } + return activations[activation_name] + + +# Kouroche's implementation. class _ResidualBlock(ABC, nn.Module): + """ + Abstract base class for residual blocks in neural networks. + """ _conv_type: ClassVar[ - type[nn.Conv1d] - | type[nn.Conv2d] - | type[nn.ConvTranspose1d] - | type[nn.ConvTranspose2d] - ] - _norm_type: ClassVar[type[nn.BatchNorm1d] | type[nn.BatchNorm2d]] + type[nn.Conv1d] | type[nn.Conv2d] | + type[nn.ConvTranspose1d] | type[nn.ConvTranspose2d]] + _norm_type: ClassVar[type[nn.BatchNorm1d] | type[nn.BatchNorm2d] | None] conv_1: nn.Sequential conv_2: nn.Sequential - downsample: nn.Sequential | None - activation: nn.ReLU + mixing: nn.Sequential | None def __init__( - self, in_channels: int, out_channels: int, kernel_size: int = 3, stride: int = 1 + self, + in_channels: int, + out_channels: int, + kernel_size: int | tuple[int, int] = 3, + stride: int | tuple[int, int] = 1, + bias: bool = True, + activation_name: str = "relu", + weight_init_method: str = "kaiming", ) -> None: super().__init__() - padding = padding_for_conv(kernel_size) + if isinstance(kernel_size, int) and kernel_size % 2 == 0: + raise ValueError(f"Kernel size must be odd, got {kernel_size} (even).") + if isinstance(kernel_size, tuple) and any(k % 2 == 0 for k in kernel_size): + raise ValueError(f"Kernel size must be odd, got {kernel_size} (even).") + if isinstance(kernel_size, int) and kernel_size <= 0: + raise ValueError(f"Kernel size must be positive, got {kernel_size}.") + if isinstance(kernel_size, tuple) and any(k <= 0 for k in kernel_size): + raise ValueError(f"Kernel size must be positive, got {kernel_size}.") + + if in_channels <= 0: + raise ValueError(f"in_channels must be positive, got {in_channels}.") + if out_channels <= 0: + raise ValueError(f"out_channels must be positive, got {out_channels}.") + + if not isinstance(in_channels, int): + raise TypeError(f"in_channels must be an int, got {type(in_channels)}.") + if not isinstance(out_channels, int): + raise TypeError(f"out_channels must be an int, got {type(out_channels)}.") + + if isinstance(stride, int) and stride <= 0: + raise ValueError(f"stride must be positive, got {stride}.") + if isinstance(stride, tuple) and any(s <= 0 for s in stride): + raise ValueError(f"stride must be positive, got {stride}.") + if not isinstance(stride, int) and not isinstance(stride, tuple): + raise TypeError(f"stride must be an int or tuple, got {type(stride)}.") + + self.padding = _calculate_padding(kernel_size, padding="auto") + self.kernel_size = kernel_size + self.stride = stride + self.bias = bias + self.out_channels = out_channels self.conv_1 = nn.Sequential( - self._conv_type(in_channels, out_channels, kernel_size, stride, padding), - self._norm_type(out_channels), - nn.ReLU(inplace=True), + self._conv_type( + in_channels=in_channels, out_channels=out_channels, + kernel_size=kernel_size, stride=stride, padding=self.padding, bias=bias + ), + self._norm_type(out_channels) if self._norm_type is not None \ + else _Identity(), + _create_activation(activation_name), ) self.conv_2 = nn.Sequential( - self._conv_type(out_channels, out_channels, kernel_size, padding=padding), - self._norm_type(out_channels), + self._conv_type( + in_channels=out_channels, + out_channels=out_channels, + kernel_size=kernel_size, + padding=self.padding, + bias=bias, + ), + self._norm_type(out_channels) if self._norm_type is not None \ + else _Identity(), ) if in_channels != out_channels or stride != 1: - self.downsample = nn.Sequential( + self.mixing = nn.Sequential( self._conv_type( in_channels, out_channels, kernel_size=1, stride=stride ), - self._norm_type(out_channels), + self._norm_type(out_channels) + if self._norm_type is not None + else _Identity(), ) else: - self.downsample = None - - self.activation = nn.ReLU(inplace=True) + self.mixing = None + self.final_activation = _create_activation(activation_name) + self.init_method = weight_init_method + self._initialize_weights() def forward(self, input: torch.Tensor) -> torch.Tensor: + """ + Forward pass through the residual block. + + Parameters + ---------- + input : torch.Tensor + Input tensor of shape (batch, channels, height, width). + + Returns + ------- + torch.Tensor + Output tensor after applying the residual block. + """ residual = input output = self.conv_1(input) output = self.conv_2(output) - if self.downsample: - residual = self.downsample(residual) + if self.mixing: + residual = self.mixing(residual) output = output + residual - output = self.activation(output) + output = self.final_activation(output) return output + def _initialize_weights(self) -> None: + """Initialize weights according to the specified method.""" + if self.init_method == 'kaiming': + self.apply(WeightInitializer.kaiming_normal_) + elif self.init_method == 'xavier': + self.apply(WeightInitializer.xavier_uniform_) + elif self.init_method == 'default': + pass # Use PyTorch's default initialization -class ResidualEncoding1d(_ResidualBlock): - _conv_type = nn.Conv1d - _norm_type = nn.BatchNorm1d - + # Always properly initialize batch norm + if self._norm_type is not None: + self.apply(WeightInitializer.init_batch_norm_) -class ResidualEncoding2d(_ResidualBlock): - _conv_type = nn.Conv2d - _norm_type = nn.BatchNorm2d + def __repr__(self) -> str: + """String representation of the ResidualBlock.""" + return (f"ResidualBlock(" + f"in_channels={self.in_channels}, " + f"out_channels={self.out_channels}, " + f"kernel_size={self.kernel_size}, " + f"stride={self.stride}, " + f"bias={self.bias}, " + f"activation_name='{self.activation_name}', " + f"weight_init_method={self.init_method})") + def get_output_shape( + self, + input_shape: tuple[int, ...] + ) -> tuple[int, ...]: + """ + Calculate output shape given input shape. -class ResidualDecoding1d(_ResidualBlock): - _conv_type = nn.ConvTranspose1d - _norm_type = nn.BatchNorm1d + Parameters + ---------- + input_shape : tuple + Input tensor shape (batch, channels, height, width). + Returns + ------- + tuple + Output tensor shape. + """ + from src.faith.train.blocks import BlockUtils + + # Account for stride in the first convolution + temp_shape = BlockUtils.calculate_output_shape( + input_shape, + kernel_size=self.kernel_size, + stride=self.stride, + padding=self.padding + ) -class ResidualDecoding2d(_ResidualBlock): - _conv_type = nn.ConvTranspose2d - _norm_type = nn.BatchNorm2d + # Update channels + batch_size, _, height, width = temp_shape + return batch_size, self.out_channels, height, width diff --git a/src/faith/train/blocks/decoder.py b/src/faith/train/blocks/decoder.py index 7dcd364..3f2dbb1 100644 --- a/src/faith/train/blocks/decoder.py +++ b/src/faith/train/blocks/decoder.py @@ -10,9 +10,19 @@ import torch import torch.nn as nn -from .base import SequentialBlock +from .base import SequentialBlock, _ResidualBlock from .encoder import BlockBasedEncoder -from .residual import ResidualBlock + + +class ResidualDecoding1d(_ResidualBlock): + _conv_type = nn.ConvTranspose1d + _norm_type = nn.BatchNorm1d + + +class ResidualDecoding2d(_ResidualBlock): + _conv_type = nn.ConvTranspose2d + _norm_type = nn.BatchNorm2d + class DecoderBlock(SequentialBlock): diff --git a/src/faith/train/blocks/encoder.py b/src/faith/train/blocks/encoder.py index 2f9a024..7237602 100644 --- a/src/faith/train/blocks/encoder.py +++ b/src/faith/train/blocks/encoder.py @@ -3,23 +3,32 @@ This module implements the EncoderBlock and BlockBasedEncoder classes that inherit from the base classes, following established patterns and interfaces. """ +from __future__ import annotations -from typing import Any, Union +from typing import Any import torch import torch.nn as nn -from .base import SequentialBlock -from .residual import ResidualBlock +from .base import SequentialBlock, _ResidualBlock -class EncoderBlock(SequentialBlock): +class ResidualEncoding1d(_ResidualBlock): + _conv_type = nn.Conv1d + _norm_type = nn.BatchNorm1d + + +class ResidualEncoding2d(_ResidualBlock): + _conv_type = nn.Conv2d + _norm_type = nn.BatchNorm2d + + +class EncoderBlock1d(nn.Module): """ - Single encoder block: ResidualBlock + Dropout + MaxPool. + Single encoder block with 1D convolutions: ResidualEncoding1D + Dropout + MaxPool. - This block represents the fundamental building unit of the encoder, - combining feature extraction through ResidualBlock, regularization - through Dropout, and spatial downsampling through MaxPooling. + This block combines feature extraction through ResidualEncoding1D, regularization + through Dropout, and downsampling through MaxPooling. Parameters ---------- @@ -27,23 +36,21 @@ class EncoderBlock(SequentialBlock): Number of input channels. out_channels : int Number of output channels from the ResidualBlock. - pool_size : tuple of int, default=(1, 2) - Kernel size for MaxPool2d operation. Format: (height, width). kernel_size : int or tuple of int, default=3 Kernel size for convolutions in ResidualBlock. stride : int or tuple of int, default=1 Stride for convolutions in ResidualBlock. The EncoderBlock uses stride=1 and relies on MaxPool for downsampling. - dropout : float, default=0.3 - Dropout probability. Must be between 0.0 and 1.0. bias : bool, default=True Whether to use bias in convolution layers. - use_batch_norm : bool, default=True - Whether to use batch normalization in ResidualBlock. - activation : str, default='relu' + activation_name : str, default='relu' Activation function for ResidualBlock. - residual_init_method : str, default='kaiming' + weight_init_method : str, default='kaiming' Weight initialization method for ResidualBlock. + pool_size : tuple of int, default=(1, 2) + Kernel size for MaxPool2d operation. Format: (height, width). + dropout : float, default=0.3 + Dropout probability. Must be between 0.0 and 1.0. Attributes ---------- @@ -53,21 +60,17 @@ class EncoderBlock(SequentialBlock): Dropout layer for regularization. pool : nn.MaxPool2d Max pooling layer for spatial downsampling. - pool_size : tuple of int - Stored pooling size for decoder symmetry. - dropout_prob : float - Stored dropout probability. Examples -------- - >>> block = EncoderBlock(in_channels=64, out_channels=128) + >>> block = EncoderBlock1d(in_channels=64, out_channels=128) >>> x = torch.randn(1, 64, 32, 32) >>> out = block(x) >>> print(out.shape) torch.Size([1, 128, 32, 16]) >>> # Custom configuration - >>> block = EncoderBlock( + >>> block = EncoderBlock1d( ... in_channels=64, out_channels=128, ... pool_size=(2, 2), dropout=0.5, activation='gelu' ... ) @@ -77,90 +80,36 @@ def __init__( self, in_channels: int, out_channels: int, + kernel_size: int | tuple[int, int] = 3, + stride: int | tuple[int, int] = 1, + bias: bool = True, + activation_name: str = 'relu', + weight_init_method: str = 'kaiming', pool_size: tuple[int, int] = (1, 2), - kernel_size: Union[int, tuple[int, int]] = 3, - stride: Union[int, tuple[int, int]] = 1, dropout: float = 0.3, - bias: bool = True, - use_batch_norm: bool = True, - activation: str = 'relu', - residual_init_method: str = 'kaiming' ) -> None: """Initialize EncoderBlock.""" - - # Validate parameters - if not 0.0 <= dropout <= 1.0: - raise ValueError( - f"Dropout must be between 0.0 and 1.0, got {dropout}") - - if len(pool_size) != 2: - raise ValueError( - f"pool_size must be a tuple of length 2, got {pool_size}") - - # Store configuration - self.pool_size = pool_size - self.dropout_prob = dropout - self.use_batch_norm = use_batch_norm - self.activation_name = activation - self.residual_init_method = residual_init_method - - # Build the sequential operations - operations = self._build_operations( - in_channels, out_channels, kernel_size, stride, - bias, use_batch_norm, activation, residual_init_method - ) - - # Initialize SequentialBlock with operations - super().__init__( - in_channels=in_channels, - out_channels=out_channels, - operations=operations, - kernel_size=kernel_size, - bias=bias + super().__init__() + + self.encoder_block = nn.Sequential( + ResidualEncoding1d( + in_channels=in_channels, + out_channels=out_channels, + kernel_size=kernel_size, + stride=stride, + bias=bias, + activation_name=activation_name, + weight_init_method=weight_init_method + ), + nn.Dropout(p=dropout), + nn.MaxPool1d(kernel_size=pool_size, stride=pool_size) ) # Store individual components for introspection - self.residual_block = self.operations[0] - self.dropout = self.operations[1] - self.pool = self.operations[2] - - def _build_operations( - self, - in_channels: int, - out_channels: int, - kernel_size: Union[int, tuple[int, int]], - stride: Union[int, tuple[int, int]], - bias: bool, - use_batch_norm: bool, - activation: str, - init_method: str - ) -> list[nn.Module]: - """Build the list of operations for this encoder block.""" - - operations = [] - - # 1. ResidualBlock for feature extraction - residual_block = ResidualBlock( - in_channels=in_channels, - out_channels=out_channels, - kernel_size=kernel_size, - stride=stride, - bias=bias, - use_batch_norm=use_batch_norm, - activation=activation, - init_method=init_method - ) - operations.append(residual_block) - - # 2. Dropout for regularization - dropout_layer = nn.Dropout(p=self.dropout_prob) - operations.append(dropout_layer) - - # 3. MaxPool for downsampling - pool_layer = nn.MaxPool2d(kernel_size=self.pool_size) - operations.append(pool_layer) - - return operations + self.residual_block = self.encoder_block[0] + self.dropout = self.encoder_block[1] + self.pool = self.encoder_block[2] + self.pool_size = pool_size if isinstance(pool_size, tuple) else (1, pool_size) def get_config(self) -> dict[str, Any]: """Get configuration dictionary for this block.""" @@ -175,18 +124,11 @@ def get_config(self) -> dict[str, Any]: }) return config - @classmethod - def from_config(cls, config: dict[str, Any]) -> 'EncoderBlock': - """Create EncoderBlock instance from configuration dictionary.""" - return cls(**config) - - def get_output_shape(self, input_shape: tuple[int, ...]) \ - -> tuple[int, ...]: + def get_output_shape(self, input_shape: tuple[int, ...]) -> tuple[int, ...]: """Calculate output shape given input shape.""" # Get shape after residual block - residual_output_shape = ( - self.residual_block.get_output_shape(input_shape)) + residual_output_shape = (self.residual_block.get_output_shape(input_shape)) # Apply pooling batch_size, channels, height, width = residual_output_shape @@ -389,7 +331,7 @@ def get_config(self) -> dict[str, Any]: return config @classmethod - def from_config(cls, config: dict[str, Any]) -> "BlockBasedEncoder": + def from_config(cls, config: dict[str, Any]) -> BlockBasedEncoder: """Create BlockBasedEncoder instance from configuration dictionary.""" return cls(**config) diff --git a/src/faith/train/blocks/residual.py b/src/faith/train/blocks/residual.py deleted file mode 100644 index d4ec436..0000000 --- a/src/faith/train/blocks/residual.py +++ /dev/null @@ -1,364 +0,0 @@ -"""Residual block implementation derived from base classes. - -This module implements the ResidualBlock class that inherits from BaseBlock, -following the established patterns and interfaces defined in the base module. -""" - -from typing import Any, Union - -import torch -import torch.nn as nn - -from .base import BaseConvBlock, WeightInitializer - - -class ResidualBlock(BaseConvBlock): - """Residual convolutional block with batch normalization and ReLU. - - This block implements a standard residual connection with two convolutional - layers, batch normalization, and ReLU activation. It includes an optional - projection layer for dimension matching in the skip connection. - - Parameters - ---------- - in_channels : int - Number of input channels. - out_channels : int - Number of output channels. - kernel_size : int or tuple of int, default=3 - Size of the convolving kernel. - stride : int or tuple of int, default=1 - Stride of the convolution. - bias : bool, default=True - If True, adds a learnable bias to the output. - use_batch_norm : bool, default=True - Whether to use batch normalization layers. - activation : str, default='relu' - Activation function to use ('relu', 'leaky_relu', 'gelu', etc.). - init_method : str, default='kaiming' - Weight initialization method ('kaiming', 'xavier', 'default'). - - Attributes - ---------- - conv1 : torch.nn.Conv2d - First convolutional layer. - batch_norm_1 : torch.nn.BatchNorm2d or None - First batch normalization layer. - activation_fn : torch.nn.Module - Activation function. - conv2 : torch.nn.Conv2d - Second convolutional layer. - batch_norm_2 : torch.nn.BatchNorm2d or None - Second batch normalization layer. - skip_conv : torch.nn.Conv2d or None - Optional 1x1 convolution for dimension matching. - stride : tuple of int - Stored stride values. - padding : tuple of int - Stored padding values. - - Examples - -------- - >>> block = ResidualBlock(64, 128) - >>> x = torch.randn(1, 64, 32, 32) - >>> out = block(x) - >>> print(out.shape) - torch.Size([1, 128, 32, 32]) - - >>> # Custom configuration - >>> block = ResidualBlock(64, 128, stride=2, activation='gelu') - >>> config = block.get_config() - >>> new_block = ResidualBlock.from_config(config) - """ - - def __init__( - self, - in_channels: int, - out_channels: int, - kernel_size: Union[int, tuple[int, int]] = 3, - stride: Union[int, tuple[int, int]] = 1, - bias: bool = True, - use_batch_norm: bool = True, - activation: str = 'relu', - init_method: str = 'kaiming' - ) -> None: - """Initialize ResidualBlock. - - Parameters - ---------- - in_channels : int - Number of input channels. - out_channels : int - Number of output channels. - kernel_size : int or tuple of int, default=3 - Size of the convolving kernel. - stride : int or tuple of int, default=1 - Stride of the convolution. - bias : bool, default=True - Whether to use bias in convolutions. - use_batch_norm : bool, default=True - Whether to use batch normalization. - activation : str, default='relu' - Activation function name. - init_method : str, default='kaiming' - Weight initialization method. - """ - # Initialize base class - super().__init__(in_channels, out_channels, kernel_size, bias) - - if isinstance(stride, int) and stride < 1: - raise ValueError(f"Stride must be a positive integer or tuple, " - f"got {stride}") - if isinstance(stride, tuple) and any(s < 1 for s in stride): - raise ValueError(f"Stride must be a positive integer or tuple, " - f"got {stride}") - if (isinstance(stride, float) or isinstance(stride, tuple) - and any(isinstance(s, float) for s in stride)): - raise TypeError(f"Stride must be an integer or tuple, " - f"got float {stride}") - - # Normalize stride and padding - self.stride = self._normalize_stride(stride) - self.padding = self._calculate_padding(self.kernel_size, "auto") - self.use_batch_norm = use_batch_norm - self.activation_name = activation - self.init_method = init_method - - # Validate parameters - self._validate_parameters() - - # Build the block layers - self._build_layers() - - # Initialize weights - self._initialize_weights() - - def _normalize_stride(self, - stride: Union[int, tuple[int, int]] - ) -> tuple[int, int]: - """Normalize stride to tuple format.""" - if isinstance(stride, int): - return (stride, stride) - return stride - - def _validate_parameters(self) -> None: - """Validate input parameters.""" - valid_activations = {'tanh', 'sigmoid', 'relu', 'leaky_relu', 'gelu', - 'swish', 'mish'} - if self.activation_name not in valid_activations: - raise ValueError(f"activation must be one of {valid_activations}, " - f"got {self.activation_name}") - - valid_init_methods = {'kaiming', 'xavier', 'default'} - if self.init_method not in valid_init_methods: - raise ValueError(f"init_method must be one of {valid_init_methods}" - f", got {self.init_method}") - - def _build_layers(self) -> None: - """Build the convolutional layers and other components.""" - # First convolutional layer - self.conv1 = nn.Conv2d( - self.in_channels, - self.out_channels, - kernel_size=self.kernel_size, - stride=self.stride, - padding=self.padding, - bias=self.bias and not self.use_batch_norm - # No bias if using batch norm - ) - - # First batch normalization (optional) - if self.use_batch_norm: - self.batch_norm_1 = nn.BatchNorm2d(self.out_channels) - else: - self.batch_norm_1 = None - - # Activation function - self.activation_fn = self._create_activation() - - # Second convolutional layer (always stride=1 to maintain dimensions) - self.conv2 = nn.Conv2d( - self.out_channels, - self.out_channels, - kernel_size=self.kernel_size, - stride=1, - padding=self.padding, - bias=self.bias and not self.use_batch_norm - ) - - # Second batch normalization (optional) - if self.use_batch_norm: - self.batch_norm_2 = nn.BatchNorm2d(self.out_channels) - else: - self.batch_norm_2 = None - - # Projection for skip connection if dimensions don't match - if self.in_channels != self.out_channels or self.stride != (1, 1): - self.skip_conv = nn.Conv2d( - self.in_channels, - self.out_channels, - kernel_size=1, - stride=self.stride, - padding=0, - bias=self.bias and not self.use_batch_norm - ) - if self.use_batch_norm: - self.skip_batch_norm = nn.BatchNorm2d(self.out_channels) - else: - self.skip_batch_norm = None - else: - self.skip_conv = None - self.skip_batch_norm = None - - def _create_activation(self) -> nn.Module: - """Create activation function based on name.""" - activations = { - 'tanh': nn.Tanh(), - 'sigmoid': nn.Sigmoid(), - 'relu': nn.ReLU(inplace=True), - 'leaky_relu': nn.LeakyReLU(0.1, inplace=True), - 'gelu': nn.GELU(), - 'swish': nn.SiLU(), # SiLU is the same as Swish - 'mish': nn.Mish(), - } - return activations[self.activation_name] - - def _initialize_weights(self) -> None: - """Initialize weights according to the specified method.""" - if self.init_method == 'kaiming': - self.apply(WeightInitializer.kaiming_normal_) - elif self.init_method == 'xavier': - self.apply(WeightInitializer.xavier_uniform_) - elif self.init_method == 'default': - pass # Use PyTorch's default initialization - - # Always properly initialize batch norm - if self.use_batch_norm: - self.apply(WeightInitializer.init_batch_norm_) - - def forward(self, x: torch.Tensor) -> torch.Tensor: - """Forward pass through the residual block. - - TODO: What does ResNet do for initializing the residual connections? - - Parameters - ---------- - x : torch.Tensor - Input tensor with shape (batch_size, in_channels, height, width). - - Returns - ------- - torch.Tensor - Output tensor with shape - (batch_size, out_channels, height', width') where height' - and 'width' depend on stride. - """ - # Store input for residual connection - residual = x - - # First conv block - out = self.conv1(x) - if self.batch_norm_1 is not None: - out = self.batch_norm_1(out) - out = self.activation_fn(out) - - # Second conv block - out = self.conv2(out) - if self.batch_norm_2 is not None: - out = self.batch_norm_2(out) - - # Apply skip connection with optional projection - if self.skip_conv is not None: - residual = self.skip_conv(residual) - if self.skip_batch_norm is not None: - residual = self.skip_batch_norm(residual) - - # Add residual connection - out += residual - - # Final activation - out = self.activation_fn(out) - - return out - - def get_config(self) -> dict[str, Any]: - """Get configuration dictionary for this block. - - Returns - ------- - dict - Configuration dictionary containing all parameters needed - to reconstruct this block. - """ - config = super().get_config() - config.update({ - 'stride': self.stride, - 'padding': self.padding, - 'use_batch_norm': self.use_batch_norm, - 'activation': self.activation_name, - 'init_method': self.init_method, - }) - return config - - @classmethod - def from_config(cls, config: dict[str, Any]) -> 'ResidualBlock': - """Create ResidualBlock instance from configuration dictionary. - - Parameters - ---------- - config : dict - Configuration dictionary. - - Returns - ------- - ResidualBlock - New ResidualBlock instance. - """ - return cls(**config) - - def __repr__(self) -> str: - """String representation of the ResidualBlock.""" - return (f"ResidualBlock(" - f"in_channels={self.in_channels}, " - f"out_channels={self.out_channels}, " - f"kernel_size={self.kernel_size}, " - f"stride={self.stride}, " - f"padding={self.padding}, " - f"bias={self.bias}, " - f"use_batch_norm={self.use_batch_norm}, " - f"activation='{self.activation_name}')") - - @property - def has_skip_connection(self) -> bool: - """Check if this block has a skip connection projection.""" - return self.skip_conv is not None - - def get_output_shape( - self, - input_shape: tuple[int, ...] - ) -> tuple[int, ...]: - """Calculate output shape given input shape. - - Parameters - ---------- - input_shape : tuple - Input tensor shape (batch, channels, height, width). - - Returns - ------- - tuple - Output tensor shape. - """ - from src.faith.train.blocks import BlockUtils - - # Account for stride in the first convolution - temp_shape = BlockUtils.calculate_output_shape( - input_shape, - kernel_size=self.kernel_size, - stride=self.stride, - padding=self.padding - ) - - # Update channels - batch_size, _, height, width = temp_shape - return batch_size, self.out_channels, height, width diff --git a/tests/test_train_blocks_residual.py b/tests/test_train_blocks_residual_encoding_1d.py similarity index 65% rename from tests/test_train_blocks_residual.py rename to tests/test_train_blocks_residual_encoding_1d.py index a0f1710..7c04c11 100644 --- a/tests/test_train_blocks_residual.py +++ b/tests/test_train_blocks_residual_encoding_1d.py @@ -1,13 +1,12 @@ +import pytest import torch -from src.faith.train.blocks import ResidualBlock - -import pytest +from src.faith.train.blocks import ResidualEncoding1d def test_kernel_size_constant_channels(): """Test the kernel size of the ResidualBlock.""" - block = ResidualBlock(4, 4, kernel_size=3) + block = ResidualEncoding1d(4, 4, kernel_size=3) # Test that the block was created successfully assert block is not None @@ -15,15 +14,15 @@ def test_kernel_size_constant_channels(): # Test that the kernel size is correctly set in the convolutional layers # Assuming ResidualBlock has conv layers with the specified kernel size for module in block.modules(): - if isinstance(module, torch.nn.Conv2d): - assert module.kernel_size == (3, 3), ( - f"Expected kernel size (3, 3), got {module.kernel_size}" + if isinstance(module, torch.nn.Conv1d): + assert module.kernel_size == (3, ), ( + f"Expected kernel size (3, ), got {module.kernel_size}" ) def test_kernel_size_changing_channels(): """Test the kernel size of the ResidualBlock.""" - block = ResidualBlock(4, 6, kernel_size=3) + block = ResidualEncoding1d(4, 6, kernel_size=3) # Test that the block was created successfully assert block is not None @@ -31,52 +30,47 @@ def test_kernel_size_changing_channels(): # Test that the kernel size is correctly set in the convolutional layers # Assuming ResidualBlock has conv layers with the specified kernel size for module in block.modules(): - if isinstance(module, torch.nn.Conv2d): - assert (module.kernel_size == (3, 3) - or module.kernel_size == (1, 1)), ( - f"Expected kernel size (3, 3) or (1, 1), " - f"got {module.kernel_size}" + if isinstance(module, torch.nn.Conv1d): + assert (module.kernel_size == (3, ) + or module.kernel_size == (1, )), ( + f"Expected kernel size (3, ) or (1, ), got {module.kernel_size}" ) def test_kernel_size_different_values(): """Test ResidualBlock with different kernel sizes.""" test_cases = [ - (1, (1, 1)), - (3, (3, 3)), - (5, (5, 5)), - (7, (7, 7)), + (1, (1, )), + (3, (3, )), + (5, (5, )), + (7, (7, )), ] for kernel_size, expected in test_cases: - block = ResidualBlock(4, 8, kernel_size=kernel_size) + block = ResidualEncoding1d(4, 8, kernel_size=kernel_size) # Check that conv layers have the correct kernel size conv_layers = [ - module for module in block.modules() - if isinstance(module, torch.nn.Conv2d) + module for module in block.modules()if isinstance(module, torch.nn.Conv1d) ] - assert len(conv_layers) == 3, ("ResidualBlock should contain Conv2d " - "layers") + assert len(conv_layers) == 3, "ResidualBlock should contain 3 Conv1d layers" for conv_layer in conv_layers: assert (conv_layer.kernel_size == expected - or conv_layer.kernel_size == (1, 1)), ( + or conv_layer.kernel_size == (1, )), ( f"For kernel_size={kernel_size}, expected {expected}, " f"got {conv_layer.kernel_size}" ) - block = ResidualBlock(4, 4, kernel_size=kernel_size) + block = ResidualEncoding1d(4, 4, kernel_size=kernel_size) # Check that conv layers have the correct kernel size conv_layers = [ - module for module in block.modules() - if isinstance(module, torch.nn.Conv2d) + module for module in block.modules() if isinstance(module, torch.nn.Conv1d) ] - assert len(conv_layers) == 2, ("ResidualBlock should contain Conv2d " - "layers") + assert len(conv_layers) == 2, "ResidualBlock should contain Conv1d layers" for conv_layer in conv_layers: assert conv_layer.kernel_size == expected, ( @@ -89,50 +83,49 @@ def test_kernel_size_with_forward_pass(): """Test that different kernel sizes work in forward pass.""" batch_size = 2 channels = 2 - height, width = 32, 32 + width = 32 - input_tensor = torch.randn(batch_size, channels, height, width) + input_tensor = torch.randn(batch_size, channels, width) # Test different kernel sizes for kernel_size in [1, 3, 5]: - block = ResidualBlock(2, 4, kernel_size=kernel_size) + block = ResidualEncoding1d(2, 4, kernel_size=kernel_size) block.eval() # Set to evaluation mode with torch.no_grad(): output = block(input_tensor) # Check output shape is reasonable - output_shape = output.shape[:1] + output.shape[2:] - input_shape = input_tensor.shape[:1] + input_tensor.shape[2:] - assert output_shape == input_shape, ( - f"Input shape should be preserved, got {output.shape[0]}" - ) + assert output.shape[0] == input_tensor.shape[0], ( + f"Batch size {input_tensor.shape[0]} should be preserved, got " + f"{output.shape[0]}") + assert output.shape[2] == input_tensor.shape[2], ( + f"Width {input_tensor.shape[2]} should be preserved, got " + f"{output.shape[2]}") assert output.shape[1] == 4, ( - f"Output channels should be 4, got {output.shape[1]}" - ) + f"Output channels should be 4, got {output.shape[1]}") - assert len(output.shape) == 4, ( - f"Output should be 4D tensor, got shape {output.shape}" - ) + assert len(output.shape) == 3, ( + f"Output should be 4D tensor, got shape {output.shape}") def test_invalid_kernel_size(): """Test that invalid kernel sizes raise appropriate errors.""" with pytest.raises(ValueError): - ResidualBlock(2, 4, kernel_size=0) + ResidualEncoding1d(2, 4, kernel_size=0) with pytest.raises(ValueError): - ResidualBlock(2, 4, kernel_size=-1) + ResidualEncoding1d(2, 4, kernel_size=-1) def test_kernel_size_parameter_types(): """Test that kernel_size accepts different parameter types.""" # Test integer - block1 = ResidualBlock(2, 4, kernel_size=3) + block1 = ResidualEncoding1d(2, 4, kernel_size=3) assert block1 is not None # Test tuple (if supported) - block2 = ResidualBlock(2, 4, kernel_size=(3, 3)) + block2 = ResidualEncoding1d(2, 4, kernel_size=(3, 3)) assert block2 is not None @@ -140,26 +133,26 @@ def test_invalid_channels(): """Test that invalid channel numbers raise appropriate errors.""" # Test zero input channels with pytest.raises(ValueError): - ResidualBlock(0, 2, kernel_size=3) + ResidualEncoding1d(0, 2, kernel_size=3) # Test negative input channels with pytest.raises(ValueError): - ResidualBlock(-64, 2, kernel_size=3) + ResidualEncoding1d(-64, 2, kernel_size=3) # Test zero output channels with pytest.raises(ValueError): - ResidualBlock(2, 0, kernel_size=3) + ResidualEncoding1d(2, 0, kernel_size=3) # Test negative output channels with pytest.raises(ValueError): - ResidualBlock(2, -128, kernel_size=3) + ResidualEncoding1d(2, -128, kernel_size=3) # Test non-integer channels with pytest.raises(TypeError): - ResidualBlock(64.5, 128, kernel_size=3) + ResidualEncoding1d(64.5, 128, kernel_size=3) with pytest.raises(TypeError): - ResidualBlock(64, 128.5, kernel_size=3) + ResidualEncoding1d(64, 128.5, kernel_size=3) def test_valid_channels(): @@ -175,29 +168,29 @@ def test_valid_channels(): ] for in_channels, out_channels in valid_channel_pairs: - block = ResidualBlock(in_channels, out_channels, kernel_size=3) + block = ResidualEncoding1d(in_channels, out_channels, kernel_size=3) assert block is not None # Test forward pass with appropriate input - input_tensor = torch.randn(1, in_channels, 8, 8) + input_tensor = torch.randn(1, in_channels, 8) with torch.no_grad(): output = block(input_tensor) - assert output.shape[1] == out_channels + assert output.shape == (1, out_channels, 8) def test_invalid_stride(): """Test that invalid stride values raise appropriate errors.""" # Test zero stride with pytest.raises(ValueError): - ResidualBlock(64, 128, kernel_size=3, stride=0) + ResidualEncoding1d(64, 128, kernel_size=3, stride=0) # Test negative stride with pytest.raises(ValueError): - ResidualBlock(64, 128, kernel_size=3, stride=-1) + ResidualEncoding1d(64, 128, kernel_size=3, stride=-1) # Test non-integer stride with pytest.raises(TypeError): - ResidualBlock(64, 128, kernel_size=3, stride=1.5) + ResidualEncoding1d(64, 128, kernel_size=3, stride=1.5) def test_valid_stride(): @@ -205,19 +198,17 @@ def test_valid_stride(): valid_strides = [1, 2, 3, 4] for stride in valid_strides: - block = ResidualBlock(64, 128, kernel_size=3, stride=stride) + block = ResidualEncoding1d(64, 128, kernel_size=3, stride=stride) assert block is not None # Test that stride affects conv layers conv_layers = [ - module for module in block.modules() - if isinstance(module, torch.nn.Conv2d) + module for module in block.modules() if isinstance(module, torch.nn.Conv1d) ] # At least one conv layer should have the specified stride stride_found = any( - conv.stride == (stride, stride) or conv.stride == stride - for conv in conv_layers + conv.stride == (stride, ) or conv.stride == stride for conv in conv_layers ) assert stride_found, f"No conv layer found with stride {stride}" @@ -228,7 +219,7 @@ def test_stride_output_shape(): input_tensor = torch.randn(1, 2, input_size, input_size) for stride in [1, 2]: - block = ResidualBlock(2, 4, kernel_size=3, stride=stride) + block = ResidualEncoding1d(2, 4, kernel_size=3, stride=stride) block.eval() with torch.no_grad(): @@ -258,7 +249,7 @@ def test_combined_invalid_parameters(): for in_ch, out_ch, k_size, stride in invalid_combinations: with pytest.raises((ValueError, TypeError, RuntimeError)): - ResidualBlock( + ResidualEncoding1d( in_ch, out_ch, kernel_size=k_size, stride=stride, From 0802d6bed1642fa132cab4433d5456059a70fda5 Mon Sep 17 00:00:00 2001 From: Nathaniel Chen Date: Fri, 18 Jul 2025 11:07:55 -0400 Subject: [PATCH 068/103] Enhance dataset preparation and configuration - Added `hydra-core` dependency to `pyproject.toml` and updated `uv.lock`. - Refactored `prepare_data.sh` to use the new preprocessing command. - Updated Jupyter notebook to reflect changes in data paths and execution counts. - Modified `preprocess.py` to accept Hydra configuration and improved logging. - Adjusted output directory structure in `default.yaml` and removed obsolete `raw.yaml`. - Enhanced processing pipeline to include time column and linear resampling. - Cleaned up unused code and improved dataset indexing logic. --- commands/prepare_data.sh | 4 +- notebooks/accessing_data.ipynb | 69 ++- notebooks/data_preparation_ts.ipynb | 566 ++++++++++++++++++ notebooks/output.wav | Bin 0 -> 11331542 bytes pyproject.toml | 1 + src/faith/preprocess/__main__.py | 12 +- src/faith/preprocess/config/default.yaml | 8 +- .../config/{raw.yaml => magnetics.yaml} | 36 +- src/faith/preprocess/config/signals.yaml | 63 ++ src/faith/preprocess/config/spectrogram.yaml | 65 ++ .../preprocess/pipelines/processing_v0.py | 14 +- src/faith/preprocess/preprocess.py | 105 +--- .../preprocess/transform/signal_processing.py | 29 +- uv.lock | 47 ++ 14 files changed, 889 insertions(+), 130 deletions(-) create mode 100644 notebooks/data_preparation_ts.ipynb create mode 100644 notebooks/output.wav rename src/faith/preprocess/config/{raw.yaml => magnetics.yaml} (61%) create mode 100644 src/faith/preprocess/config/signals.yaml create mode 100644 src/faith/preprocess/config/spectrogram.yaml diff --git a/commands/prepare_data.sh b/commands/prepare_data.sh index 7e69625..3335557 100644 --- a/commands/prepare_data.sh +++ b/commands/prepare_data.sh @@ -4,7 +4,7 @@ #SBATCH --ntasks=1 # total number of tasks across all nodes #SBATCH --cpus-per-task=96 # cpu-cores per task (>1 if multi-threaded tasks) #SBATCH --mem=500GB # memory per node -#SBATCH --time=010:00:00 # maximum time needed (HH:MM:SS) +#SBATCH --time=1:00:00 # maximum time needed (HH:MM:SS) #SBATCH --output=logs/%A_%a.out #SBATCH --error=logs/%A_%a.err @@ -13,4 +13,4 @@ module purge source .venv/bin/activate # Run pipeline -srun python -m fusionaihub.datasets.prepare --config config/raw.yaml --log-level DEBUG \ No newline at end of file +srun python -m faith.preprocess --config-name signals \ No newline at end of file diff --git a/notebooks/accessing_data.ipynb b/notebooks/accessing_data.ipynb index 4cd7659..82fa2dd 100644 --- a/notebooks/accessing_data.ipynb +++ b/notebooks/accessing_data.ipynb @@ -2,10 +2,19 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 29, "id": "914fa271", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The autoreload extension is already loaded. To reload it, use:\n", + " %reload_ext autoreload\n" + ] + } + ], "source": [ "%load_ext autoreload\n", "%autoreload 2" @@ -13,7 +22,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 30, "id": "836b5c67", "metadata": {}, "outputs": [], @@ -26,17 +35,18 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 32, "id": "d564239f", "metadata": {}, "outputs": [], "source": [ - "files = pd.read_csv(\"/scratch/gpfs/EKOLEMEN/hackathon/foundation25/train/index.csv\").values[:,0]" + "files = pd.read_csv(\"/scratch/gpfs/nc1514/FusionAIHub/data/debug/index.csv\").values[:,0]\n", + "# files = pd.read_csv(\"/scratch/gpfs/EKOLEMEN/hackathon/foundation25/index.csv\").values[:,0]" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 37, "id": "434b288f", "metadata": {}, "outputs": [ @@ -44,21 +54,22 @@ "name": "stdout", "output_type": "stream", "text": [ - "/scratch/gpfs/EKOLEMEN/hackathon/foundation25/train/170000_0.joblib\n", - "mhr (8, 11066, 513)\n", - "ece (48, 11066, 513)\n", - "co2 (4, 11066, 513)\n", - "gas (5, 11066, 1)\n", - "ech (11, 11066, 1)\n", - "pin (8, 11066, 1)\n", - "tin (8, 11066, 1)\n" + "../data/debug/170000_0.joblib\n", + "mhr (8, 513, 11066)\n", + "time_ms (1, 1, 11066)\n", + "ece (48, 513, 11066)\n", + "co2 (4, 513, 11066)\n", + "gas (5, 1, 11066)\n", + "ech (11, 1, 11066)\n", + "pin (8, 1, 11066)\n", + "tin (8, 1, 11066)\n" ] }, { "data": { - "image/png": "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oxluNzc38YEPfCBbn7Nnz+L666/XZ971rnchhICnPOUp+szf/M3foK5rfeYd73gHHvGIR2Dfvn1ftfmdz7C7uwvvc7FXFAVCCAD6tflagvtyLS44Xnd/Z298JfCmN72JhsMh/cEf/AHdeOON9PznP5/W19ezzL4e/t/hBS94Aa2trdFf//Vf01133aX/dnd39Zkf+ZEfocsuu4ze9a530Yc//GG6+uqr6eqrr9bvpZzGt3zLt9ANN9xAf/EXf0GHDh06ZzmNl770pfSpT32KXve61/XlNP6RYLNiifr1uT/hgx/8IJVlSb/0S79En/3sZ+mNb3wjTSYT+sM//EN95lWvehWtr6/T//pf/4s+9rGP0bd/+7efs4zDE57wBPrABz5A733ve+nhD394Vsbh7NmzdOTIEXrOc55Dn/jEJ+hNb3oTTSaTvqTGPcBzn/tcuuSSS7TcyZ/8yZ/QwYMH6WUve5k+06/NfQdbW1v0kY98hD7ykY8QAHrNa15DH/nIR+iLX/wiEd13a/F3f/d3VJYl/eqv/ip96lOfop/7uZ/ry53cl/Da176WLrvsMhoMBnTVVVfR+9///vt7SBccADjnv9e//vX6zHQ6pX//7/897du3jyaTCX3nd34n3XXXXVk7X/jCF+iZz3wmjcdjOnjwIP3ET/wE1XWdPfPud7+bHv/4x9NgMKCHPOQhWR893HvoKnb9+ty/8Na3vpUe85jH0HA4pMsvv5x+93d/N/s+hEA/+7M/S0eOHKHhcEhPf/rT6aabbsqeufvuu+n7v//7aXl5mVZXV+kHf/AHaWtrK3vmox/9KD3taU+j4XBIl1xyCb3qVa/6qs/tfIbNzU160YteRJdddhmNRiN6yEMeQj/90z+dlcLo1+a+g3e/+93nlDXPfe5ziei+XYs//uM/pq/7uq+jwWBAj370o+nP//zPv2rz/mqDIzIlt3vooYceeuihhx56OG/hvImx66GHHnrooYceeujhnqFX7HrooYceeuihhx4uEOgVux566KGHHnrooYcLBHrFroceeuihhx566OECgV6x66GHHnrooYceerhAoFfseuihhx566KGHHi4Q6BW7HnrooYceeuihhwsEesWuhx566KGHHnro4QKBXrHroYceeuihhx56uECgV+x66KGHHnrooYceLhDoFbseeuihhx566KGHCwR6xa6HHnrooYceeujhAoFeseuhhx566KGHHnq4QKBX7HrooYceeuihhx4uEOgVux566KGHHnrooYcLBHrFroceeuihhx566OECgV6x66GHHnrooYceerhAoFfseuihhx566KGHHi4Q6BW7HnrooYd7gNtuuw0///M/j6uuugr79u3DwYMH8U3f9E34v//3/37Fbd1xxx34nu/5Hqyvr2N1dRXf/u3fjptvvvmrMOoeeujhnys4IqL7exA99NBDD1+r8F/+y3/By172MnzHd3wHvuEbvgFN0+C//bf/hn/4h3/A7//+7+MHf/AH71U729vbeOITn4iNjQ38xE/8BKqqwq/92q+BiHDDDTfgwIEDX+WZ9NBDD/8coFfseuihhx7uAT75yU/iyJEjOHjwoH42n8/x+Mc/Htvb27jtttvu8f2dnR0sLS3h1a9+NX7yJ38SH/zgB/HkJz8ZAPDpT38aj3nMY/Cyl70Mv/zLv/xVnUcPPfTwzwN6V2wPPfRwwcIdd9yBH/7hH8bFF1+M4XCIBz/4wXjBC16AxWIBALj55pvx7Gc/G/v378dkMsFTn/pU/Pmf/3nWxqMf/ehMqQOA4XCIZz3rWbj99tuxtbWln//AD/wAlpeX8fnPfx7PetazsLKyguuuuw4A8Ja3vAVPfvKTVakDgMsvvxxPf/rT8cd//MdfLRT00EMP/8ygvL8H0EMPPfTw1YA777wTV111Fc6ePYvnP//5uPzyy3HHHXfgLW95C3Z3d3HmzBl8/dd/PXZ3d/FjP/ZjOHDgAN7whjfg277t2/CWt7wF3/md33mP7R87dgyTyQSTyST7vGkaXHPNNXja056GX/3VX8VkMkEIAR/72MfwQz/0Q3vaueqqq/BXf/VX2NrawsrKyj8pDnrooYd/ftArdj300MMFCS9/+ctx7NgxfOADH8CVV16pn//CL/wCiAgveclLcPz4cfzt3/4tnva0pwEAnve85+Gxj30sXvKSl+Dbv/3b4f25nRqf+9zn8Cd/8id49rOfjaIosu/m8zme/exn45WvfKV+durUKcznc1x00UV72pLP7rzzTjziEY/4f553Dz308M8beldsDz30cMFBCAF/9md/hm/91m/NlDoB5xze/va346qrrlKlDgCWl5fx/Oc/H1/4whdw4403nrPt3d1dPPvZz8Z4PMarXvWqcz7zghe8IPt7Op0C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rbb41a9+RUVR0Mc+9jFavXo1vfvd76ZWq0XXXnvtn1wGfwpsV8Tu0EMPpTPPPFM+13VNixYtonPOOWcblmrq4/777ycAdOmllxIR0fr166nVatF3vvMdueaGG24gAHTZZZcRke+w1lpat26dXPO5z32OhoeHaXx8nIiI3vGOd9C+++6bvOvlL385rVy58k9dpSmBTZs20R577EEXX3wxPfe5zxVil9tn2+Lv/u7v6IgjjnjU351ztHDhQvr4xz8u361fv546nQ594xvfICKi1atXEwD6r//6L7nmJz/5CRlj6O677yYios9+9rM0a9YsaS9+91577fXHrtKUwfHHH09nnHFG8t2LXvQiOuWUU4got822RJPYbc22eNnLXkbHH398Up7DDjuM/uIv/uKPWsethe1mKHZiYgJXXnklVqxYId9Za7FixQpcdtll27BkUx8bNmwAAMyePRsAcOWVV6LX6yVtsffee2Pp0qXSFpdddhn233//ZNPplStXYuPGjbj++uvlGv0Mvia35xPDmWeeieOPP75Phrl9ti1++MMf4uCDD8ZLX/pSzJ8/H09/+tPxxS9+UX6/7bbbsG7dukS2M2bMwGGHHZa0z8yZM3HwwQfLNStWrIC1Fr/97W/lmuc85zlot9tyzcqVK7FmzRo88sgjf+pqbpd41rOehVWrVuGmm24CAFxzzTX45S9/iWOPPRZAbpunErZmW0w1W7fdELsHH3wQdV33nU6xYMECrFu3bhuVaurDOYe3ve1tOPzww7HffvsBANatW4d2u42ZM2cm1+q2WLdu3aRtxb891jUbN27E6Ojon6I6Uwbf/OY38bvf/Q7nnHNO32+5fbYtbr31Vnzuc5/DHnvsgZ/+9Kd405vehL/6q7/CV7/6VQBRvo9ly9atW4f58+cnv5dlidmzZz+pNsxI8c53vhOveMUrsPfee6PVauHpT3863va2t+GUU04BkNvmqYSt2RaPds322lbb5EixjO0HZ555Jq677jr88pe/3NZFyQi488478da3vhUXX3wxut3uti5ORgPOORx88MH4h3/4BwDA05/+dFx33XX4/Oc/j9NOO20bl+5/Nr797W/ja1/7Gr7+9a9j3333xdVXX423ve1tWLRoUW6bjCmD7SZjN3fuXBRF0bey77777sPChQu3UammNt785jfjggsuwM9//nPsuOOO8v3ChQsxMTGB9evXJ9frtli4cOGkbcW/PdY1w8PDGBgY+GNXZ8rgyiuvxP33349nPOMZKMsSZVni0ksvxac//WmUZYkFCxbk9tmG2GGHHbBs2bLku3322Qdr164FEOX7WLZs4cKFuP/++5Pfq6rCww8//KTaMCPF29/+dsna7b///jj11FPx13/915L5zm3z1MHWbItHu2Z7bavthti1220cdNBBWLVqlXznnMOqVauwfPnybViyqQciwpvf/GZ8//vfx89+9jPssssuye8HHXQQWq1W0hZr1qzB2rVrpS2WL1+Oa6+9Nul0F198MYaHh8XpLV++PHkGX5Pb87Hx/Oc/H9deey2uvvpq+e/ggw/GKaecIv/O7bPtcPjhh/dtD3TTTTdhp512AgDssssuWLhwYSLbjRs34re//W3SPuvXr8eVV14p1/zsZz+Dcw6HHXaYXPOLX/wCvV5Prrn44oux1157YdasWX+y+m3PGBkZgbWp2yuKAs45ALltnkrYmm0x5Wzdtl698WTwzW9+kzqdDp133nm0evVqesMb3kAzZ85MVvZl/L/jTW96E82YMYMuueQSuvfee+W/kZERueaNb3wjLV26lH72s5/RFVdcQcuXL6fly5fL77ydxtFHH01XX301XXTRRTRv3rxJt9N4+9vfTjfccAOde+65eTuN/yb0qlii3D7bEpdffjmVZUkf/vCH6eabb6avfe1rNDg4SP/2b/8m13zkIx+hmTNn0g9+8AP6/e9/TyeddNKk2zg8/elPp9/+9rf0y1/+kvbYY49kG4f169fTggUL6NRTT6XrrruOvvnNb9Lg4GDeUuMxcNppp9HixYtlu5Pvfe97NHfuXHrHO94h1+S22XrYtGkTXXXVVXTVVVcRAPrEJz5BV111Fd1xxx1EtPXa4le/+hWVZUn/+I//SDfccAO9733vy9udbE185jOfoaVLl1K73aZDDz2UfvOb32zrIk05AJj0v6985StyzejoKP3lX/4lzZo1iwYHB+mFL3wh3Xvvvclzbr/9djr22GNpYGCA5s6dS3/zN39DvV4vuebnP/85Pe1pT6N2u0277rpr8o6MJ44mscvts23xox/9iPbbbz/qdDq0995707/+678mvzvn6D3veQ8tWLCAOp0OPf/5z6c1a9Yk1zz00EP0yle+kqZPn07Dw8P02te+ljZt2pRc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", + "image/png": "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3/temjdvHl100UV01VVX0c4770y77LKLXO/1erT11lvTwoUL6ZprrqHzzz+fZs6cSccff7zcc/vtt9PIyAgde+yxdNNNN9Fpp51GZVnSBRdc8IyW99mIK6+8kjbddFN66UtfSkcffbT8nttl3eDRRx+lTTbZhN797nfTFVdcQbfffjv98pe/pNtuu03uOfnkk2nq1Kl09tln03XXXUf77LMPbbbZZrRmzRq55w1veANtu+229Pvf/55++9vf0gtf+EI68MAD5fqyZcto9uzZtGjRIrrhhhvohz/8IQ0PD9M3vvGNZ7S8zxZ89rOfpRkzZtC5555Ld9xxB5111lk0efJk+vKXvyz35HZ5+nH++efTxz72MfrJT35CAOinP/1pcv2ZaoPf/e53VJYlnXLKKXTTTTfRv/7rv1Kz2aTrr7/+aa+DpxoTjtjtuOOOdOSRR8r3qqpo7ty5dNJJJ63DXE1cPPjggwSAfv3rXxMR0dKlS6nZbNJZZ50l99x8880EgC6//HIiCh25KApasmSJ3PO1r32NRkdHaXx8nIiIPvzhD9NWW22VpPX2t7+d9thjj6e7SM9qrFixgjbffHO68MIL6dWvfrUQu9wu6w4f+chHaLfddlvrde89zZkzh0499VT5benSpdRut+mHP/whERHddNNNBID+8Ic/yD2/+MUvyDlH9957LxERffWrX6UNNthA2orT3mKLLZ7qIk0I7L333vSe97wn+e0tb3kLLVq0iIhyu6wL1IndM9kGb3vb22jvvfdO8rPTTjvRP//zPz+lZXwmMKGmYjudDq6++mosXLhQfiuKAgsXLsTll1++DnM2cbFs2TIAwPTp0wEAV199NbrdbtIGW265JebPny9tcPnll2ObbbZJNpveY489sHz5ctx4441yj30H35Pb8fFx5JFHYu+99+6ru9wu6w4///nPscMOO+CAAw7ArFmzsN122+Fb3/qWXL/jjjuwZMmSpF6nTp2KnXbaKWmbadOmYYcddpB7Fi5ciKIocMUVV8g9r3rVq9BqteSePfbYA4sXL8Zjjz32dBfzWYdddtkFF110Ef785z8DAK677jpcdtll2HPPPQHkdlkf8Ey2wUTSbROK2D388MOoqqrvdIrZs2djyZIl6yhXExfeexxzzDHYddddsfXWWwMAlixZglarhWnTpiX32jZYsmTJwDbia493z/Lly7FmzZqnozjPepx55pn44x//iJNOOqnvWm6XdYfbb78dX/va17D55pvjl7/8JY444gi8//3vx3e/+10AWrePp7eWLFmCWbNmJdcbjQamT5/+N7VfhuKjH/0o3vGOd2DLLbdEs9nEdttth2OOOQaLFi0CkNtlfcAz2QZru+fZ2Ebr9ckTGes3jjzySNxwww247LLL1nVWnvO45557cPTRR+PCCy/E0NDQus5OhoH3HjvssANOPPFEAMB2222HG264AV//+tdx8MEHr+PcPXfxox/9CN///vfxgx/8AFtttRWuvfZaHHPMMZg7d25ul4xnNSaUx27mzJkoy7Jvpd8DDzyAOXPmrKNcTUwcddRROPfcc3HJJZfgec97nvw+Z84cdDodLF26NLnftsGcOXMGthFfe7x7RkdHMTw8/FQX51mPq6++Gg8++CBe/vKXo9FooNFo4Ne//jW+8pWvoNFoYPbs2bld1hE22mgjvOQlL0l+e/GLX4y7774bgNbt4+mtOXPm4MEHH0yu93o9PProo39T+2UojjvuOPHabbPNNjjooIPwgQ98QDzeuV3WPZ7JNljbPc/GNppQxK7VamH77bfHRRddJL9573HRRRdhwYIF6zBnEwdEhKOOOgo//elPcfHFF2OzzTZLrm+//fZoNptJGyxevBh33323tMGCBQtw/fXXJ53xwgsvxOjoqBjABQsWJO/ge3I7Dsbuu++O66+/Htdee63822GHHbBo0SL5nNtl3WDXXXft2xLoz3/+MzbZZBMAwGabbYY5c+Yk9bp8+XJcccUVSdssXboUV199tdxz8cUXw3uPnXbaSe75zW9+g263K/dceOGF2GKLLbDBBhs8beV7tmL16tUoitQElmUJ7z2A3C7rA57JNphQum1dr954qnHmmWdSu92mM844g2666SY6/PDDadq0aclKv4y/H0cccQRNnTqVLr30Urr//vvl3+rVq+We9773vTR//ny6+OKL6aqrrqIFCxbQggUL5Dpvq/H617+err32Wrrgggtoww03HLitxnHHHUc333wznX766Xlbjb8RdlUsUW6XdYUrr7ySGo0Gffazn6Vbb72Vvv/979PIyAh973vfk3tOPvlkmjZtGv3sZz+jP/3pT7TvvvsO3NJhu+22oyuuuIIuu+wy2nzzzZMtHZYuXUqzZ8+mgw46iG644QY688wzaWRkJG+rsRYcfPDBtPHGG8t2Jz/5yU9o5syZ9OEPf1juye3y9GPFihV0zTXX0DXXXEMA6Atf+AJdc801dNdddxHRM9cGv/vd76jRaNDnP/95uvnmm+mTn/xk3u5kfcJpp51G8+fPp1arRTvuuCP9/ve/X9dZmjAAMPDfd77zHblnzZo19L73vY822GADGhkZoTe/+c10//33J++58847ac8996Th4WGaOXMmffCDH6Rut5vcc8kll9DLXvYyarVa9PznPz9JI+OJUSd2uV3WHc455xzaeuutqd1u05Zbbknf/OY3k+vee/r4xz9Os2fPpna7TbvvvjstXrw4ueeRRx6hAw88kCZPnkyjo6N0yCGH0IoVK5J7rrvuOtptt92o3W7TxhtvTCeffPLTXrZnK5YvX05HH300zZ8/n4aGhuj5z38+fexjH0u2xMjt8vTjkksuGWhTDj74YCJ6ZtvgRz/6Eb3oRS+iVqtFW221FZ133nlPW7mfTjgis812RkZGRkZGRkbGsxYTKsYuIyMjIyMjI+O5jEzsMjIyMjIyMjImCDKxy8jIyMjIyMiYIMjELiMjIyMjIyNjgiATu4yMjIyMjIyMCYJM7DIyMjIyMjIyJggyscvIyMjIyMjImCDIxC4jIyMjIyMjY4IgE7uMjIyMjIyMjAmCTOwyMjIyMjIyMiYIMrHLyMjIyMjIyJggyMQuIyMjIyMjI2OCIBO7jIyMjIyMjIwJgkzsMjIyMjIyMjImCDKxy8jIyMjIyMiYIMjELiMjIyMjIyNjgiATu4yMjIyMjIyMCYJM7DIyMjIyMjIyJggyscvIyMj4G3HPPffghBNOwI477ogNNtgAM2fOxGte8xr893//99/8rnvvvRdve9vbMG3aNIyOjmLffffF7bff/jTkOiMj47kAR0S0rjORkZGR8WzCv//7v+PDH/4w9ttvP+y6667o9Xr4z//8T/zxj3/Et7/9bRxyyCFP6j0rV67Ey1/+cixbtgwf/OAH0Ww28cUvfhFEhGuvvRYzZsx4mkuSkZEx0ZCJXUZGRsbfiBtvvBGzZ8/GzJkz5bfx8XG87GUvw8qVK3HPPfc87vOrVq3CpEmTcMopp+AjH/kIrrzySrziFa8AANxyyy3Yeuut8eEPfxgnnnji01qOjIyMiYc8FZuRkfGcwr333otDDz0Uc+fORbvdxmabbYYjjjgCnU4HAHD77bfjgAMOwPTp0zEyMoKdd94Z5513XvKOrbbaKiF1ANBut7HXXnvhr3/9K1asWCG/v/vd78bkyZPxl7/8BXvttRemTJmCRYsWAQB+/OMf4xWveIWQOgDYcsstsfvuu+NHP/rR01UFGRkZExiNdZ2BjIyMjGcK9913H3bccUcsXboUhx9+OLbcckvce++9+PGPf4zVq1fjsccewy677ILVq1fj/e9/P2bMmIHvfve72GefffDjH/8Yb37zmx/3/UuWLMHIyAhGRkaS33u9HvbYYw/stttu+PznP4+RkRF47/GnP/0J73nPe/res+OOO+JXv/oVVqxYgSlTpjyldZCRkTGxkYldRkbGcwbHH388lixZgiuuuAI77LCD/P7pT38aRIRjjz0WDzzwAH77299it912AwAcdthheOlLX4pjjz0W++67L4pi8ETHbbfdhp/85Cc44IADUJZlcm18fBwHHHAATjrpJPnt4Ycfxvj4ODbaaKO+d/Fv9913H7bYYov/3+XOyMh47iBPxWZkZDwn4L3H2WefjTe96U0JqWM453D++edjxx13FFIHAJMnT8bhhx+OO++8EzfddNPAd69evRoHHHAAhoeHcfLJJw+854gjjki+r1mzBkCYwq1jaGgouScjIyPjySITu4yMjOcEHnroISxfvhxbb731Wu+56667BnrIXvziF8v1Oqqqwjve8Q7cdNNN+PGPf4y5c+f23dNoNPC85z0v+W14eBhA8ObVMTY2ltyTkZGR8WSRp2IzMjIy/n/gsMMOw7nnnovvf//7eO1rXzvwnna73TeFO336dLTbbdx///199/Nvg0hiRkZGxuMhE7uMjIznBDbccEOMjo7ihhtuWOs9m2yyCRYvXtz3+y233CLXLY477jh85zvfwZe+9CUceOCBf1N+iqLANttsg6uuuqrv2hVXXIHnP//5eeFERkbG34w8FZuRkfGcQFEU2G+//XDOOecMJFNEhL322gtXXnklLr/8cvl91apV+OY3v4lNN90UL3nJS+T3U089FZ///Ofxv/7X/8LRRx/9d+XprW99K/7whz8k+Vm8eDEuvvhiHHDAAX/XOzMyMp7byBsUZ2RkPGdw7733YocddsDy5ctx+OGH48UvfjHuv/9+nHXWWbjsssswPj6ObbfdFmNjY3j/+9+P6dOn47vf/S6u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hnMOxxxzjPyW22Xd4d5778U73/lOzJgxA8PDw9hmm21w1VVXyXUiwic+8QlstNFGGB4exsKFC3Hrrbcm73j00UexaNEijI6OYtq0aTj00EOxcuXK5J4//elPeOUrX4mhoSHMmzcPp5xyyjNSvmcjqqrCxz/+cWy22WYYHh7GC17wAnzmM59JzuLM7fL04ze/+Q3e9KY3Ye7cuXDO4eyzz06uP5NtcNZZZ2HLLbfE0NAQttlmG5x//vlPeXmfEdAEw5lnnkmtVou+/e1v04033kiHHXYYTZs2jR544IF1nbUJgT322IO+853v0A033EDXXnst7bXXXjR//nxauXKl3PPe976X5s2bRxdddBFdddVVtPPOO9Muu+wi13u9Hm299da0cOFCuuaaa+j888+nmTNn0vHHHy/33H777TQyMkLHHnss3XTTTXTaaadRWZZ0wQUXPKPlfTbiyiuvpE033ZRe+tKX0tFHHy2/53ZZN3j00Udpk002oXe/+910xRVX0O23306//OUv6bbbbpN7Tj75ZJo6dSqdffbZdN1119E+++xDm222Ga1Zs0buecMb3kDbbrst/f73v6ff/va39MIXvpAOPPBAub5s2TKaPXs2LVq0iG644Qb64Q9/SMPDw/SNb3zjGS3vswWf/exnacaMGXTuuefSHXfcQWeddRZNnjyZvvzlL8s9uV2efpx//vn0sY99jH7yk58QAPrpT3+aXH+m2uB3v/sdlWVJp5xyCt100030r//6r9RsNun6669/2uvgqcaEI3Y77rgjHXnkkfK9qiqaO3cunXTSSeswVxMXDz74IAGgX//610REtHTpUmo2m3TWWWfJPTfffDMBoMsvv5yIQkcuioKWLFki93zta1+j0dFRGh8fJyKiD3/4w7TVVlslab397W+nPfbY4+ku0rMaK1asoM0335wuvPBCevWrXy3ELrfLusNHPvIR2m233dZ63XtPc+bMoVNPPVV+W7p0KbXbbfrhD39IREQ33XQTAaA//OEPcs8vfvELcs7RvffeS0REX/3qV2mDDTaQtuK0t9hii6e6SBMCe++9N73nPe9JfnvLW95CixYtIqLcLusCdWL3TLbB2972Ntp7772T/Oy00070z//8z09pGZ8JTKip2E6ng6uvvhoLFy6U34qiwMKFC3H55Zevw5xNXCxbtgwAMH36dADA1VdfjW63m7TBlltuifnz50sbXH755dhmm22SU0T22GMPLF++HDfeeKPcY9/B9+R2fHwceeSR2HvvvfvqLrfLusPPf/5z7LDDDjjggAMwa9YsbLfddvjWt74l1++44w4sWbIkqdepU6dip512Stpm2rRp2GGHHeSehQsXoigKXHHFFXLPq171KrRaLblnjz32wOLFi/HYY4893cV81mGXXXbBRRddhD//+c8AgOuuuw6XXXYZ9txzTwC5XdYHPJNtMJF024Qidg8//DCqquo7dmz27NlYsmTJOsrVxIX3Hscccwx23XVXbL311gCAJUuWoNVqYdq0acm9tg2WLFkysI342uPds3z5cqxZs+bpKM6zHmeeeSb++Mc/4qSTTuq7lttl3eH222/H1772NWy++eb45S9/iSOOOALvf//78d3vfheA1u3j6a0lS5Zg1qxZyfVGo4Hp06f/Te2XofjoRz+Kd7zjHdhyyy3RbDax3Xbb4ZhjjsGiRYsA5HZZH/BMtsHa7nk2ttF6faRYxvqNI488EjfccAMuu+yydZ2V5zzuueceHH300bjwwgsxNDS0rrOTYeC9xw477IATTzwRALDddtvhhhtuwNe//nUcfPDB6zh3z1386Ec/wve//3384Ac/wFZbbYVrr70WxxxzDObOnZvbJeNZjQnlsZs5cybKsuxb6ffAAw9gzpw56yhXExNHHXUUzj33XFxyySV43vOeJ7/PmTMHnU4HS5cuTe63bTBnzpyBbcTXHu+e0dFRDA8PP9XFedbj6quvxoMPPoiXv/zlaDQaaDQa+PWvf42vfOUraDQamD17dm6XdYSNNtoIL3nJS5LfXvziF+Puu+8GoHX7eHprzpw5ePDBB5PrvV4Pjz766N/UfhmK4447Trx222yzDQ466CB84AMfEI93bpd1j2eyDdZ2z7OxjSYUsWu1Wth+++1x0UUXyW/ee1x00UVYsGDBOszZxAER4aijjsJPf/pTXHzxxdhss82S69tvvz2azWbSBosXL8bdd98tbbBgwQJcf/31SWe88MILMTo6KgZwwYIFyTv4ntyOg7H77rvj+uuvx7XXXiv/dthhByxatEg+53ZZN9h11137tgT685//jE022QQAsNlmm2HOnDlJvS5fvhxXXHFF0jZLly7F1VdfLfdcfPHF8N5jp512knt+85vfoNvtyj0XXnghtthiC2ywwQZPW/merVi9ejWKIjWBZVnCew8gt8v6gGeyDSaUblvXqzeeapx55pnUbrfpjDPOoJtuuokOP/xwmjZtWrLSL+PvxxFHHEFTp06lSy+9lO6//375t3r1arnnve99L82fP58uvvhiuuqqq2jBggW0YMECuc7barz+9a+na6+9li644ALacMMNB26rcdxxx9HNN99Mp59+et5W42+EXRVLlNtlXeHKK6+kRqNBn/3sZ+nWW2+l73//+zQyMkLf+9735J6TTz6Zpk2bRj/72c/oT3/6E+27774Dt3TYbrvt6IorrqDLLruMNt9882RLh6VLl9Ls2bPpoIMOohtuuIHOPPNMGhkZydtqrAUHH3wwbbzxxrLdyU9+8hOaOXMmffjDH5Z7crs8/VixYgVdc801dM011xAA+sIXvkDXXHMN3XXXXUT0zLXB7373O2o0GvT5z3+ebr75ZvrkJz+ZtztZn3DaaafR/PnzqdVq0Y477ki///3v13WWJgwADPz3ne98R+5Zs2YNve9976MNNtiARkZG6M1vfjPdf//9yXvuvPNO2nPPPWl4eJhmzpxJH/zgB6nb7Sb3XHLJJfSyl72MWq0WPf/5z0/SyHhi1Ildbpd1h3POOYe23nprarfbtOWWW9I3v/nN5Lr3nj7+8Y/T7Nmzqd1u0+67706LFy9O7nnkkUfowAMPpMmTJ9Po6CgdcsghtGLFiuSe6667jnbbbTdqt9u08cYb08knn/y0l+3ZiuXLl9PRRx9N8+fPp6GhIXr+859PH/vYx5ItMXK7PP245JJLBtqUgw8+mIie2Tb40Y9+RC960Yuo1WrRVlttReedd97TVu6nE47IbLOdkZGRkZGRkZHxrMWEirHLyMjIyMjIyHguIxO7jIyMjIyMjIwJgkzsMjIyMjIyMjImCDKxy8jIyMjIyMiYIMjELiMjIyMjIyNjgiATu4yMjIyMjIyMCYJM7DIyMjIyMjIyJggyscvIyMjIyMjImCDIxC4jIyMjIyMjY4IgE7uMjIyMjIyMjAmCTOwyMjIyMjIyMiYIMrHLyMjIyMjIyJggyMQuIyMjIyMjI2OCIBO7jIyMjIyMjIwJgkzsMjIyMjIyMjImCDKxy8jIyMjIyMiYIMjELiMjIyMjIyNjgiATu4yMjIy/E5tuuine/e53r+tsZGRkZAgyscvIyMjIyMjImCBwRETrOhMZGRkZz0aMj4+jKAo0m811nZWMjIwMAJnYZWRkZGRkZGRMGOSp2IyMjIwaPvWpT8E5h1tuuQVve9vbMDo6ihkzZuDoo4/G2NiY3FePsTvjjDPgnMPvfvc7HHvssdhwww0xadIkvPnNb8ZDDz20DkqSkZHxXEMmdhkZGRlrwdve9jaMjY3hpJNOwl577YWvfOUrOPzww5/wuX/5l3/Bddddh09+8pM44ogjcM455+Coo456BnKckZHxXEdjXWcgIyMjY33FZptthp/97GcAgCOPPBKjo6P46le/ig996EN46UtfutbnZsyYgV/96ldwzgEAvPf4yle+gmXLlmHq1KnPSN4zMjKem8geu4yMjIy14Mgjj0y+/8u//AsA4Pzzz3/c5w4//HAhdQDwyle+ElVV4a677nrqM5mRkZFhkIldRkZGxlqw+eabJ99f8IIXoCgK3HnnnY/73Pz585PvG2ywAQDgsccee0rzl5GRkVFHJnYZGRkZTxLWC/d4KMty4O95E4KMjIynG5nYZWRkZKwFt956a/L9tttug/cem2666brJUEZGRsYTIBO7jIyMjLXg9NNPT76fdtppAIA999xzXWQnIyMj4wmRV8VmZGRkrAV33HEH9tlnH7zhDW/A5Zdfju9973v4x3/8R2y77bbrOmsZGRkZA5E9dhkZGRlrwX/913+h3W7jox/9KM477zwcddRR+I//+I91na2MjIyMtSIfKZaRkZFRw6c+9SmccMIJeOihhzBz5sx1nZ2MjIyMJ43sscvIyMjIyMjImCDIxC4jIyMjIyMjY4IgE7uMjIyMjIyMjAmCHGOXkZGRkZGRkTFBkD12GRkZGRkZGRkTBJnYZWRkZGRkZGRMEEzYDYq997jvvvswZcqUJ32+Y0ZGRkZGRkbG+gYiwooVKzB37lwUxeP75CYssbvvvvswb968dZ2NjIyMjIyMjIynBPfccw+e97znPe49E5bYTZkyBQDwmo3eg0bRWse5yXhKQYR7990EG//sLvz1LZvgeWffg3v3mYeNf3Y37t1nPjb++d24743zMffc+Pecu/DX/TfB8/7fXbjvTZtg7jl34f43bYKNzN/79tkEc8++E/fuvyk2/tk9uO+N8zD33Htw397zMPe8e3D/3vOw0Xn6+737zMPGP69dP/du3P/G+djo3Ltx35vmY+45d+Pefedj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oQGpqan/sqwi8u98rtfx1NfXIz4+HnV1dREV3I6OcQlPjEt4YlzCE+MSvhibME2eICIiIqLLx4UdERERUYSI2IWdy+XCM888E5QpS6HHuIQnxiU8MS7hiXEJX4xNBP+OHREREdHVJmI/sSMiIiK62nBhR0RERBQhuLAjIiIiihBc2BERERFFiIhc2C1fvhx9+/aF2+1GZmYm9u7dG+omRYylS5fi+uuvR+fOnZGUlISZM2eioqIiqExLSwvmz5+Pbt26ITY2FnfeeSdqamqCylRWVmLq1KmIiYlBUlISFi9eDF3Xg8ps27YN1113HVwuF6655hqsWrXqSt9exFi2bBkURcGiRYvsfYxL6Jw8eRL33HMPunXrhujoaIwYMQL79u2zj4sInn76afTo0QPR0dHIzs7G0aNHg85x7tw55ObmIi4uDgkJCbjvvvvQ2NgYVObTTz/FTTfdBLfbjd69e+P5559vl/vriAzDwFNPPYV+/fohOjoaAwYMwO9+97ugv8XJuFx5O3bswPTp05GamgpFUfDOO+8EHW/PGKxbtw7p6elwu90YMWIE8vPzf/D7bRff80+5hq28vDxxOp3y2muvyaFDh+T++++XhIQEqampCXXTIkJOTo68/vrrUlZWJvv375cpU6ZIWlqaNDY22mUefPBB6d27txQVFcm+ffvkRz/6kdxwww32cV3XZfjw4ZKdnS2lpaWSn58viYmJsmTJErvM8ePHJSYmRh555BEpLy+XF198UTRNk4KCgna9345o79690rdvX7n22mtl4cKF9n7GJTTOnTsnffr0kZ/+9KeyZ88eOX78uGzevFmOHTtml1m2bJnEx8fLO++8IwcOHJAZM2ZIv379pLm52S4zadIkGTlypOzevVs++ugjueaaa2TOnDn28bq6OklOTpbc3FwpKyuTt956S6Kjo+Xll19u1/vtKJ577jnp1q2bbNq0SU6cOCHr1q2T2NhY+ctf/mKXYVyuvPz8fHnyySdl/fr1AkA2bNgQdLy9YrBr1y7RNE2ef/55KS8vl9/+9rcSFRUlBw8evOJ98EOLuIXd2LFjZf78+fbPhmFIamqqLF26NIStilynT58WALJ9+3YREamtrZWoqChZt26dXebw4cMCQIqLi0XEmsiqqkp1dbVdZsWKFRIXFycej0dERB577DEZNmxY0LXuuusuycnJudK3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", "text/plain": [ - "
" + "
" ] }, "metadata": {}, @@ -71,14 +82,18 @@ "data = joblib.load(file_name)\n", "for key, value in data.items():\n", " print(key, value.shape)\n", - "plt.subplot(3, 1, 1)\n", - "plt.imshow(data['mhr'][4].T, aspect='auto', origin='lower')\n", + "plt.subplot(4, 1, 1)\n", + "plt.plot(data['time_ms'][0,0,:])\n", + "plt.xlim(0, len(data['time_ms'][0,0,:]))\n", + "plt.title('time_ms')\n", + "plt.subplot(4, 1, 2)\n", + "plt.imshow(np.log(data['mhr'][4] + 1e-6), aspect='auto', origin='lower')\n", "plt.title('mhrb4')\n", - "plt.subplot(3, 1, 2)\n", - "plt.imshow(data['co2'][0].T, aspect='auto', origin='lower')\n", + "plt.subplot(4, 1, 3)\n", + "plt.imshow(np.log(data['co2'][0] + 1e-6), aspect='auto', origin='lower')\n", "plt.title('co2r0')\n", - "plt.subplot(3, 1, 3)\n", - "plt.imshow(data['pin'][:,:,0], aspect='auto', origin='lower', interpolation='none')\n", + "plt.subplot(4, 1, 4)\n", + "plt.imshow(data['pin'][:,0,:], aspect='auto', origin='lower', interpolation='none')\n", "plt.title('pin')\n", "plt.tight_layout()\n", "plt.show()" @@ -87,17 +102,15 @@ { "cell_type": "code", "execution_count": null, - "id": "7fbe52bc", + "id": "180be0ec", "metadata": {}, "outputs": [], - "source": [ - "data = joblib.load('../data/170000/170000.pkl')" - ] + "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": ".venv", "language": "python", "name": "python3" }, @@ -111,7 +124,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.4" + "version": "3.12.7" } }, "nbformat": 4, diff --git a/notebooks/data_preparation_ts.ipynb b/notebooks/data_preparation_ts.ipynb new file mode 100644 index 0000000..15473a4 --- /dev/null +++ b/notebooks/data_preparation_ts.ipynb @@ -0,0 +1,566 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "e23296a9", + "metadata": {}, + "outputs": [], + "source": [ + "%load_ext autoreload\n", + "%autoreload 2" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "1321d5df", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from pathlib import Path\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import yaml\n", + "import joblib" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "9b8f64ca", + "metadata": {}, + "outputs": [], + "source": [ + "shot_number = 170000\n", + "yaml_path = \"../src/faith/preprocess/config/default.yaml\"\n", + "with open(yaml_path, 'r') as f:\n", + " cfg = yaml.safe_load(f)\n", + "\n", + "from faith.preprocess.extract.data_extraction import (\n", + " extract_signal, \n", + " extract_running_time, \n", + " align_signal,\n", + ")\n", + "from faith.preprocess.transform.sample_processing import (\n", + " split_samples,\n", + " remove_empty_samples,\n", + " save_sample,\n", + ")\n", + "from faith.preprocess.transform.signal_processing import (\n", + " identity_transform,\n", + " stft_transform,\n", + " resample_transform,\n", + " resample_linear_transform,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "c8e825ce", + "metadata": {}, + "outputs": [], + "source": [ + "start_time, end_time = extract_running_time(\n", + " shot_number=shot_number,\n", + " directory=Path(cfg[\"raw_data_dir\"]),\n", + " ip_threshold=cfg[\"ip_threshold\"],\n", + " start_time=cfg[\"start_time\"],\n", + " end_time=cfg[\"end_time\"],\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "9d6c90be", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "12.75 , 5678.5\n" + ] + } + ], + "source": [ + "print(start_time, \",\", end_time)\n", + "# note, they are offset by 0.05ms" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "b4c3b00c", + "metadata": {}, + "outputs": [], + "source": [ + "cfg['signal'] = {'magnetics_high_resolution': cfg['signal']['magnetics_high_resolution']}" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "02b2448a", + "metadata": {}, + "outputs": [], + "source": [ + "cfg['fs_khz'] = 1000" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "a68aaa6f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "magnetics_high_resolution\n", + "{'abbr': 'mhr', 'make_stft': True, 'expected_channels': 8}\n" + ] + } + ], + "source": [ + "dfs = []\n", + "missing_signals = []\n", + "for signal in cfg['signal'].items():\n", + " print(signal[0])\n", + " print(signal[1])\n", + " try:\n", + " df = extract_signal(\n", + " shot_number=shot_number,\n", + " directory=Path(cfg[\"raw_data_dir\"]),\n", + " signal=signal[0], \n", + " start_time=start_time,\n", + " end_time=end_time,\n", + " )\n", + " df.columns = [\n", + " f\"{signal[1]['abbr']}_{col}\" if col != \"time\" else col\n", + " for col in range(len(df.columns))\n", + " ]\n", + " df = align_signal(\n", + " df=df,\n", + " start_time=start_time,\n", + " end_time=end_time,\n", + " fs=cfg[\"fs_khz\"],\n", + " )\n", + " dfs.append(df)\n", + " except Exception as e:\n", + " for channel in range(int(signal[1]['expected_channels'])):\n", + " missing_signals.append((signal[1]['abbr'], channel))" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "fe35d6ca", + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.concat(dfs, axis=1, join='inner')\n", + "for signal_abbr, channel in missing_signals:\n", + " df[f\"{signal_abbr}_{channel}\"] = np.nan\n", + " df[f\"{signal_abbr}_{channel}_state\"] = False" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "2175aa46", + "metadata": {}, + "outputs": [], + "source": [ + "import scipy.io.wavfile as wavfile" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "f642c6a8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-155.95071 133.22498\n", + "Saved WAV file with 5665749 samples at 22400 Hz\n" + ] + } + ], + "source": [ + "wav_vals = df['mhr_4'].values\n", + "wav_vals = wav_vals[~np.isnan(wav_vals)]\n", + "print(wav_vals.min(), wav_vals.max())\n", + "\n", + "wav_vals = (wav_vals - wav_vals.min()) / (wav_vals.max() - wav_vals.min())\n", + "wav_vals = wav_vals - 0.5\n", + "\n", + "wav_vals = np.int16(wav_vals * 32767)\n", + "\n", + "sample_rate = int(22400) # Convert kHz to Hz\n", + "wavfile.write('output.wav', sample_rate, wav_vals)\n", + "print(f\"Saved WAV file with {len(wav_vals)} samples at {sample_rate} Hz\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "09ff5b99", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Removed 109982 outliers, 1987169 samples remaining\n", + "Saved WAV file with 1987169 samples at 44100 Hz\n" + ] + } + ], + "source": [ + "wav_vals = df[df['mhr_4_state'] == True]['mhr_4'].values\n", + "wav_vals_mean = wav_vals.mean()\n", + "wav_vals_std = wav_vals.std()\n", + "wav_vals = (wav_vals - wav_vals_mean) / wav_vals_std\n", + "# Remove outliers using z-score method (values beyond 3 standard deviations)\n", + "z_scores = np.abs((wav_vals - wav_vals.mean()) / wav_vals.std())\n", + "outlier_mask = z_scores < 2\n", + "wav_vals = wav_vals[outlier_mask]\n", + "print(f\"Removed {np.sum(~outlier_mask)} outliers, {len(wav_vals)} samples remaining\")\n", + "\n", + "wav_vals = wav_vals - 0.5\n", + "wav_vals = np.int16(wav_vals * 32767)\n", + "\n", + "sample_rate = int(44100) # Convert kHz to Hz\n", + "wavfile.write('output.wav', sample_rate, wav_vals)\n", + "print(f\"Saved WAV file with {len(wav_vals)} samples at {sample_rate} Hz\")" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "01210a63", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(wav_vals)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "3bf95002", + "metadata": {}, + "outputs": [], + "source": [ + "# Create timedelta column\n", + "time_duration = end_time - start_time # Duration in milliseconds\n", + "df['timedelta'] = np.linspace(start_time, end_time, len(df))\n", + "# Convert timedelta to proper timedelta format\n", + "# df['timedelta'] = pd.to_timedelta(df['timedelta'], unit='ms')" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "87a1b47e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "samples = split_samples(\n", + " df=df,\n", + " shot_number=shot_number,\n", + " window_ms=cfg[\"window_ms\"],\n", + " hop_ms=cfg[\"hop_ms\"],\n", + " fs_khz=cfg[\"fs_khz\"],\n", + ")\n", + "len(samples)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "40750cb0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "samples = remove_empty_samples(samples)\n", + "len(samples)" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "id": "de25ce4f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mhr (8, 1, 3272613)\n", + "ece (48, 1, 3272613)\n", + "co2 (4, 1, 3272613)\n", + "gas (5, 1, 3272613)\n", + "ech (11, 1, 3272613)\n", + "pin (8, 1, 3272613)\n", + "tin (8, 1, 3272613)\n" + ] + } + ], + "source": [ + "for sample in samples:\n", + " transformed_samples = {}\n", + " for key, value in sample.items():\n", + " for signal in cfg['signal'].items():\n", + " abbr = signal[1]['abbr']\n", + " cols = [col for col in value.columns if abbr in col]\n", + " transformed_samples[abbr] = identity_transform(\n", + " x=value[cols].to_numpy().T)\n", + " print(abbr, transformed_samples[abbr].shape)\n", + " transformed_samples['time_ms'] = identity_transform(\n", + " x=np.array([value['timedelta'].to_numpy().T])\n", + " )\n", + " save_sample(transformed_samples, Path('../data'), key)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "bc37f8e0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(1, 5665749) (1, 513, 22132)\n" + ] + } + ], + "source": [ + "first_arr = np.array([list(samples[0].values())[0].iloc[:, 0].values])\n", + "transform_shape = stft_transform(x=first_arr).shape\n", + "print(first_arr.shape, transform_shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "f6cae5ac", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mhr (8, 513, 22132)\n", + "(1, 5665749)\n", + "(1, 513, 22132)\n", + "(5665749,)\n", + "(22132,)\n", + "(1, 5665749)\n" + ] + } + ], + "source": [ + "for sample in samples:\n", + " transformed_samples = {}\n", + " for key, value in sample.items():\n", + " for signal in cfg['signal'].items():\n", + " abbr = signal[1]['abbr']\n", + " cols = [col for col in value.columns if abbr in col]\n", + " if signal[1]['make_stft']:\n", + " transformed_samples[abbr] = stft_transform(\n", + " x=value[cols].to_numpy().T,\n", + " n_fft=cfg[\"stft\"][\"n_fft\"],\n", + " hop_length=cfg[\"stft\"][\"hop_length\"],\n", + " )\n", + " else:\n", + " transformed_samples[abbr] = resample_transform(\n", + " x=value[cols].to_numpy().T,\n", + " ref_shape=transform_shape,\n", + " )\n", + " print(abbr, transformed_samples[abbr].shape)\n", + " transformed_samples['time_ms'] = resample_linear_transform(\n", + " x=np.array([value['timedelta'].to_numpy().T]),\n", + " ref_shape=transform_shape,\n", + " )\n", + " save_sample(transformed_samples, Path('../data'), key)\n", + " break\n", + " break" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "9c4fc5c7", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "../data/170000_0.joblib\n", + "mhr (8, 513, 22132)\n", + "time_ms (1, 1, 22132)\n" + ] + }, + { + "data": { + "image/png": "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GPYzGLEzGAyG3YDp6enH/N13v/vdWLx4MV7ykpfsugIZDIYDAkbsDAbDgsUll1wC5xx+9rOf4Y//+I8xNjaG5cuX46/+6q9ARLjzzjtx2mmnYXR0FBMTE/jHf/zHec8IIeBv//Zvccghh6Db7eIFL3gBbrvttsY9v/Vbv4XjjjsON910E573vOdheHgYf/EXf9G459///d/xtKc9Dd1uF8cccww+97nP7bDMt956K973vvfhve99L8qy3HWNYTAYDggYsTMYDAsep59+OkIIuOyyy7B69Wq8+93vxvvf/3688IUvxOMe9zj8/d//PZ74xCfibW97G77yla80vnvZZZfh85//PN72trfhoosuwje/+U2ceeaZ895x33334ZRTTsHTnvY0vP/978dv//Zvy2e33norTj/9dJxyyilYv349yrLEf/kv/wXXXXfdvOe8+c1vxm//9m/jd3/3d3d9QxgMhgUP2w4aDIYFj5NOOgkf+9jHAACvf/3rccQRR+Ctb30r1q9fjwsvvBAAcMYZZ2DVqlX4+Mc/juc973ny3dnZWXzve99Du90GACxZsgRvetObcPPNN+O4446T+zZt2oSPfvSjOOecc+a9/2c/+xn+9V//FS996UsBAGeffTaOPvpoXHjhhXjhC18o91199dX493//d3z/+9/f9Y1gMBgOCJjGzmAwLHi89rWvld+LosCJJ54IIsLZZ58t18fHx3HUUUfhF7/4ReO7r3nNa4TUAcBzn/tcAJh3X6fTwWte85odvn/VqlX4gz/4A/l7dHQUr3rVq/Dd734XmzZtAgD0+3285S1vwRve8AYcc8wxj7GmBoPhQIcRO4PBsOBx2GGHNf4eGxtDt9vFsmXL5l1/4IEHHvK7S5YsAYB59z3ucY9rEECNJz7xiXDONa49+clPBgD88pe/BAC8733vw7333otLL730EdTIYDAYdgwzxRoMhgWPoige0TUAIKLHdN/Q0NBjLB2wdetWvPvd78af/umfYnJyEpOTkwBi2hMiwi9/+UsMDw9jxYoVj/kdBoPhwIARO4PBYNjNuO2220BEDa3dz372MwDxZIoHHngAU1NTeM973oP3vOc9875/5JFH4rTTTsNVV121p4psMBj2UxixMxgMht2Mu+66C5///OcleGJychL//M//jKc97WmYmJjA9PQ0Pv/5z8/73n/9r/8V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XvWqV+Guu+5qPGNHY+ayyy5r3LMv1v/h+v7Vr371vHqdfPLJjXsWat8D2OE64JzD5ZdfLvfsr30PPDJZtyfX+4XAH0ALDJ/+9Kep3W7Txz/+cfrRj35Er3vd62h8fJw2b968t4v2qLBu3Tr6xCc+QTfffDN973vfo9/93d+lww47jKampuSe5z//+fS6172ONm7cKP+2bt0qn1dVRccddxytXbuWvvvd79I111xDy5Yto4suukju+cUvfkHDw8N0wQUX0I9//GP6wAc+QEVR0LXXXrtH6zsXF198MR177LGNut1zzz3y+Rve8AY69NBD6frrr6f/+I//oGc961n0m7/5m/L5/lx3IqK77767UffrrruOANANN9xARAuv76+55hr6y7/8S/rc5z5HAOjzn/984/PLLruMxsbG6KqrrqLvf//79Pu///t05JFH0szMjNxz8skn01Of+lT65je/SV/96lfpiU98Ip1xxhny+datW2nlypV05pln0s0330yf+tSnaGhoiD72sY/JPV//+tepKAp6z3veQz/+8Y/pne98J7VaLfrhD3+41+q/ZcsWWrt2LX3mM5+hn/70p7RhwwY66aST6IQTTmg84/DDD6e//uu/bowJvV7sq/V/uL4/66yz6OSTT27U6/7772/cs1D7noga9d64cSN9/OMfJ+cc/fznP5d79te+J3pksm5PrfcLhT8sOGJ30kkn0XnnnSd/13VNq1atovXr1+/FUu087r77bgJAX/7yl+Xa85//fHrTm970oN+55ppryHtPmzZtkmsf+chHaHR0lHq9HhERveMd76Bjjz228b3TTz+d1q1bt2sr8Chx8cUX01Of+tQdfrZlyxZqtVp05ZVXyrWf/OQnBIA2bNhARPt33XeEN73pTfSEJzyBQghEtLD7fq5wCyHQxMQEXX755XJty5Yt1Ol06FOf+hQREf34xz8mAPSd73xH7vm3f/s3cs7Rf/7nfxIR0Yc//GFasmSJ1J+I6MILL6SjjjpK/n75y19Op556aqM8q1evpnPOOWeX1vGhsCPhPhff/va3CQD96le/kmuHH344ve9973vQ7+wP9X8wYnfaaac96HcOtL4/7bTT6Hd+53ca1xZC3zPmyro9ud4vFP6woEyx/X4fN910E9auXSvXvPdYu3YtNmzYsBdLtvPYunUrAGDp0qWN65/85Cex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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "file_name = f'../data/{shot_number}_0.joblib'\n", + "print(file_name)\n", + "data = joblib.load(file_name)\n", + "for key, value in data.items():\n", + " print(key, value.shape)\n", + "plt.subplot(4, 1, 1)\n", + "plt.plot(data['time_ms'][0,0,:].T)\n", + "# plt.xlim(0, len(data['time_ms'][0,0,:]))\n", + "plt.title('time_ms')\n", + "plt.subplot(4, 1, 2)\n", + "plt.imshow(np.log(data['mhr'][4] + 1e-6), aspect='auto', origin='lower')\n", + "plt.title('mhrb4')\n", + "# plt.subplot(4, 1, 3)\n", + "# plt.imshow(np.log(data['co2'][0].T + 1e-6), aspect='auto', origin='lower')\n", + "# plt.title('co2r0')\n", + "# plt.subplot(4, 1, 4)\n", + "# plt.imshow(data['pin'][:,:,0], aspect='auto', origin='lower', interpolation='none')\n", + "# plt.title('pin')\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "160156ad", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "../data/180245_0.joblib\n", + "mhr (8, 1, 3634770)\n", + "ece (48, 1, 3634770)\n", + "co2 (4, 1, 3634770)\n", + "gas (5, 1, 3634770)\n", + "ech (11, 1, 3634770)\n", + "pin (8, 1, 3634770)\n", + "tin (8, 1, 3634770)\n", + "time_ms (1, 1, 3634770)\n" + ] + } + ], + "source": [ + "file_name = f'../data/{shot_number}_0.joblib'\n", + "print(file_name)\n", + "data = joblib.load(file_name)\n", + "for key, value in data.items():\n", + " print(key, value.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "246cd261", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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FRT0UwfQ7NmzdebMGf3yl790Os60adP0zDPPmF3uJWv4KyvdbnvtjGXmFQLAbzBgF/6qTrYHmDBhgiZMmODytWXLljn9fd++feYXBAAALMuvZxsBAABciPACAAAshfACAAAshfACAAAshfACAAAshfACAAAshfACAHCJFXbhrwgvAACXPt+c4+sSAJcILwAAlw4eP+XrEgCXCC8AAMBSCC8AAMBSCC8AAJeOnyz1dQmAS4QXAABgKYQXAABgKYQXAABgKYQXAABgKYQXAABgKYQXAABgKYQXAABgKYQXAABgKYQXAABgKYQXAABgKYQXAABgKYQXAABgKYQXAABgKYQXAABgKYQXAABgKYQXAABgKYQXAABgKYQXAABgKYQXAABgKYQXAABgKYQXAABgKYQXAABgKXUSXmbNmqX4+HiFhoYqKSlJWVlZlbbdsmWLbrvtNsXHx8tms2nmzJl1USIAALAI08PLBx98oIkTJ2ratGlat26devbsqSFDhigvL89l+5MnT6p9+/aaPn26YmJizC4PAABYjOnh5eWXX9b48eM1duxYde3aVXPmzFHDhg315ptvumzfr18/vfjii7rjjjtkt9vNLg8AAFiMqeHlzJkzys7OVkpKyk8nDApSSkqKMjMzvXKOkpISFRYWOj0AAEDgMjW8HD16VGVlZYqOjnZ6Pjo6Wjk5OV45R2pqqsLDwx2PuLg4rxwXAAD4J8vPNpoyZYoKCgocjwMHDvi6JAAAYKJgMw/evHlz1atXT7m5uU7P5+bmem0wrt1uZ2wMAACXEFN7XkJCQtS3b19lZGQ4nisvL1dGRoaSk5PNPDUAAAhQpva8SNLEiRM1evRoJSYmqn///po5c6aKi4s1duxYSdI999yjVq1aKTU1VdK5Qb5bt251/PngwYPasGGDGjdurI4dO5pdLgAA8HOmh5cRI0boyJEjmjp1qnJyctSrVy+lpaU5BvHu379fQUE/dQAdOnRIvXv3dvx9xowZmjFjhq655hotW7bM7HIBAICfsxmGYfi6CG8qLCxUeHi4CgoKFBYW5utyLCN+8qe+LgGAH9o3fbivS8AlwpPvb8vPNgIAAJcWwgsAALAUwgsAALAUwgsAALAUwgsAALAUwgsAALAUwgsAALAUwgsAALAUwgsAALAUwgsAALAUwgsAALAUwgsAALAUwgsAALAUwgsA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LwAAl2w2m69LAFwivAAAAEshvAAAAEshvAAAAEshvAAAAEshvAAAXKrHNwT8FL+aAACXGoYE+7oEwCVTw0t+fr5GjRqlsLAwRUREaNy4cTpx4kSV7R9++GF17txZDRo0UJs2bfTII4+ooKDAzDIBAC4wURr+ytTwMmrUKG3ZskXp6en65JNPtGLFCt13332Vtj906JAOHTqkGTNmaPPmzXrrrbeUlpamcePGmVkmAACwEJthGIYZB962bZu6du2qNWvWKDExUZKUlpamYcOG6fvvv1dsbKxbx/nwww911113qbi4WMHB1XdhFhYWKjw8XAUFBQoLC6vVNVxK4id/6usSAPiZpHaR+uA3yb4uA5cIT76/Tet5yczMVEREhCO4SFJKSoqCgoK0evVqt49z/iIqCy4lJSUqLCx0egAAgMBlWnjJyclRixYtnJ4LDg5WZGSkcnJy3DrG0aNH9eyzz1Z5qyk1NVXh4eGOR1xcXK3qBgCc09jOgF34J4/Dy+TJk2Wz2ap8bN++vdaFFRYWavjw4erataueeeaZSttNmTJFBQUFjseBAwdqfW4AgDSiH/8YhH/yOFZPmjRJY8aMqbJN+/btFRMTo7y8PKfnz549q/z8fMXExFT5/qKiIg0dOlRNmjTRwoULVb9+/Urb2u122e12t+sHALjHXr+er0sAXPI4vERFRSkqKqradsnJyTp+/Liys7PVt29fSdKSJUtUXl6upKSkSt9XWFioIUOGyG636+OPP1ZoaKinJQIAvICp0vBXpo156dKli4YOHarx48crKytLq1at0oQJE3THHXc4ZhodPHhQCQkJysrKknQuuNxwww0qLi7WG2+8ocLCQuXk5CgnJ0dlZWVmlQoAACzE1NFY8+fP14QJEzR48GAFBQXptttu0yuvvOJ4vbS0VDt27NDJkyclSevWrXPMROrYsaPTsfbu3av4+HgzywUAABZganiJjIzUe++9V+nr8fHxqrjMzKBBg2TSsjMAACBAsLcRAACwFMILAACwFMILAMClekHMN4J/IrwAAFy6on0zX5cAuER4AQC4RM8L/BXhBQAAWArhBQAAWArhBQAAWArhBQAAWArhBQAAWArhBQAAWArhBQAAWArhBQAAWArhBQAAWArhBQAAWArhBQAAWArhBQAAWArhBQAAWArhBQBwkZt6xvq6BKBShBcAwEVs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U6eqZcuWatCggVJSUrRr1y6nNvn5+Ro1apTCwsIUERGhcePG6cSJE05tNm7cqKuvvlqhoaGKi4vTCy+8YPalXSQ1NVX9+vVTkyZN1KJFC91yyy3asWOHU5vTp0/roYceUrNmzdS4cWPddtttys3NdWqzf/9+DR8+XA0bNlSLFi30+OOP6+zZs05tli1bpj59+shut6tjx4566623zL48l2bPnq0ePXo4FqpKTk7W559/7ng90K63ounTp8tms+m3v/2t47lAut5nnnlGNpvN6ZGQkOB4PZCu9byDBw/qrrvuUrNmzdSgQQN1795da9eudbweSJ9X8fHxF/18bTabHnroIUmB+fP1OgPVWrBggRESEmK8+eabxpYtW4zx48cbERERRm5urq9Lq9Jnn31mPP3008ZHH31kSDIWLlzo9Pr06dON8PBwY9GiRcY333xj/PznPzfatWtnnDp1ytFm6NChRs+ePY2vv/7a+PLLL42OHTsaI0eOdLxeUFBgREdHG6NGjTI2b95svP/++0aDBg2Mf/zjH3V1mYZhGMaQIUOMefPmGZs3bzY2bNhgDBs2zGjTpo1x4sQJR5v777/fiIuLMzIyMoy1a9caV1xxhXHllVc6Xj979qzRrVs3IyUlxVi/fr3x2WefGc2bNzemTJniaLNnzx6jYcOGxsSJE42tW7car776qlGvXj0jLS2tTq/XMAzj448/Nj799FNj586dxo4dO4ynnnrKqF+/vrF58+aAvN7zsrKyjPj4eKNHjx7Go48+6ng+kK532rRpxuWXX24cPnzY8Thy5EhAXqthGEZ+fr7Rtm1bY8yYMcbq1auNPXv2GF988YWxe/duR5tA+rzKy8tz+tmmp6cbkoylS5cahhF4P18zEF7c0L9/f+Ohhx5y/L2srMyIjY01UlNTfViVZy4ML+Xl5UZMTIzx4osvOp47fvy4Ybfbjffff98wDMPYunWrIclYs2aNo83nn39u2Gw24+DBg4ZhGMbf//53o2nTpkZJSYmjzZNPPml07tzZ5CuqWl5eniHJWL58uWEY566tfv36xocffuhos23bNkOSkZmZaRjGubAXFBRk5OTkONrMnj3bCAsLc1zfE088YVx++eVO5xoxYoQxZMgQsy/JLU2bNjVef/31gL3eoqIio1OnTkZ6erpxzTXXOMJLoF3vtGnTjJ49e7p8LdCu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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(data['time_ms'][0,0,:].T, data['mhr'][0,0,:].T)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "51632782", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/output.wav b/notebooks/output.wav new file mode 100644 index 0000000000000000000000000000000000000000..38c26002cce591ebd8478380ab6d8184720805d0 GIT binary patch literal 11331542 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 z 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%0D9lEx|;cIyDM|d)oMVpK4c`g55%$MiN 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 z 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 <~w~c}wbD@F!^c2;z*HczaLen?egG40>u(2d($y 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

G%t6tn4Jv-X()MDO& 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

f;Bt;xoYogBgXUmd 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

GUGM>M%#96Mp_6Nodow-Ype@A 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 yaQ3WTmvPuQ(6QD~F$DhLYCsI-L-)uE5a^hxz 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 z�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

b`tVm~9aL>vOJ_ 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ыMY^qFT^ozRQWr2XEK{i zv!YQv9Nv0-n=f9(q6c`bGOT+~6?ag!WmD;=pm@R=1qZOn^X`{fhjcyrhjaUm=y5f1 zU8qJziQ!9jOmz|=jcLtr3cy1q93NRzfkcF?7Kgly@f>I^nV@I8% zn))8AV^z(&SMpGIJaGl?AEi)pVz%(*p0Llfn5q2~@pvuP2#U0Z$-n5!)QtT{0fgQ8 z#i2-4H~RuhhLbsZ$n&s&Cv-fcx>H?6{#gB{#x%uG;s_DtS4dX7Fr9P|Iav6hmRH0SG zGb>JyPdaQp$>_&RlRE!xqnV>U&WMqFj{X3jZy{IpeE@(lg- z&SI>8h%P>X)iUX64%J)uhecjwx6CwS*mv=|*-BLBc(}VwkySaOJE)eqwBu;;e~Q9d z0o8+6+64*bIy2;s)0@NhIXjBt7IeYW;{BTHV6e9-M$vP3BNfHwL{YO&9Wxluth1{w zqNg2pHiWY!>con;Zaq{RW1T^Xw1B|lVB;<*T$nx&dq-E;Lz~G{RTNdnMCf4AyS|BZwQ8lt*Mc$s#+u>W z+2*jH(5o+s$ZKM)rD^+YR%wEvZbiZyW$iuZC>78}wr?k2R_iZ3uPI-2dcgZiq4j6K11;C&Q7v zB4mu`dsiV!Uj1@RJ_iLJ`jhoU=@DGrk{bA(5~-^0Z)%-o#nni63RVnz zC$rIlVJ2H8!Je%l-)G`6t4QzSeurtMJoq|HGEV9`)TWm9=&*#H4gp*5mj{`7;#tqN zOGG{-CQ?wgpU~f*%F!OYw!j+i$=`20S;VYhW@Lm&-T-;ps4i|qA65Z{`fRLUqp7Ti zFmHHkq?+gtUEw-bmtIackO`e+-sk!we^Izq@#mW&_bUD@jor>oNvYvKo~)irc~lrLMM{lh>O?^X@Op+7h`vs*t zj5;fTHL}uZ)#TfYdRqIUSs>w9F%h-47Or|wk0(QX8Qe@4`=5QK9a$n9RyzuPa*3GX z`eav3$9mK41*zgst#Sxkv=!06L%a5|VzG0gXaF0Au76ja{!*oIn++T5Eq{V&Iruyv`%u+McC)m%@y2nC*x$^j9c6M{ zzhk%=*56{eq59%H{c<{zLeKp+MctIgv$6CyYP=-*GF^T5dV)ze%lKrm88GV#?YSw@ zZ}^%LJOj&z*-e(D^E{T`{GIa5u2TC|tWDwR3-YrT#d(95x4Tm^^?6yj_l!=?U(srM zw4-@0oCZ@F&K-k%^VISgDDiI~R!>$assk2IHaQV#CAOcWR_DO8%8CBh8K=gzfLf@$N*?BnZBmCn&BsOLSvJ>ZbyT6L;(wXK3^z@^t(KcdkA<_lp0(Dnf9igkq^xKDF`5c;ZNa~N z^fu-ukZTAnd6Y^{<97;F5b*G zx8-_t8BKvFW&ab9l>nZv|u1IvdJ1wW13Sg_pp!r4W|9v$^ zb~zp1NNHw`2UsMWEd3tb$Y~ZEx(1sda;V+X(DI==sceCnDvq0CEC&`|3r(uP+?KK zCxnykO3Ces)YegPRNnmIJngeF@*$-g6mLoTYEJSJQSW-Tg&VqfndgwHIxa zj?ddVXk&TrjJxMc^b_;y=`DwLpYz=^9uKuc=ryPJ?88|64_%ntIPnNye@<=mQhVK& z!;{(NMQC1E->9~#Y9b{0T#q+y3N#UxSH}R8+;JuS^qelq43n~=v}>pwTG28^G045h z{dnMG3iMXAlAj&kEX~D=9d${^im(in@&r6}2u}}z9!(R>{QyjQ(%rt)%}uMSj8kS~ z+~sF^^QIagd;CW=KuP&_2usYT3_G}2_#XK6$OG!kY4R-(-Tu8*mUpj*;cIhqf(sb` z?O3hYNk2E7?iEfcsKyH|J?HC*zDjs+dl%9n+S|=J?!{c}T9znbAN%Z>GpB zCvlnC-+zEs&MBUEy6!Q)347Y6xa0HG=Ro>(AP)Y4n*CjjWT9K0q&iQTXok0Z3z<*u zWy$;WW|u&$@aAy}o$9E4#~EZ%RoDN^CU4L{sc`)p?D!H?j>>^|1CK)h&K6;HN%@j1t_Q=qd73eJ{&NN$ET`- zKY|W>@mCQ_ZKMppj_JcGz6)eRE>AXF?beG{%0fYQ5GmgzPHrgWnu)aG9)9Z&2W~;S zV~O`AOHcrB=?I0H;S=n3gXVoiFJS;o?@Y~4#NU-wm~%Z*Z|s!L)%oP=L!LGCTGvN& z!Wkf&wEV@>FMQcqxL>;Z4Se9hkN zcp&U}De0fpRV(j`fxmbzH#?8PakpsRO#GHw-YnD?xF^;JiLCH#we05Q+p*)i$bE9Q zBW_+PPI}9fGkBm5WNs=huTTpuVtHd5)Oq#9$VuImUogPANIp8~C7gc=caOEkvM}pK z%DfNmuAssnXO%}OvQU3r#BrH0Ku%23oKKdk7CTceixZQ{(^T^{9h&b|(;YCtcF{Fg zrqrbjtFV54mdRnw55m}g^w!IX=Jg5G$}avh$?yGgw~EgHBFNFe(?soS3U82KhOd{@ zjBVi8;b>JDu$z)>MRSEyBa>6ToyFGgFu9jI#PH%Nxw@6o$mX8iVC5}JG@O_nha+t; z@q>`-jM}}i&f;2Ey^H}ec(N0^ISpY%d$q?xz03+YcN|=;p_kA~m0t)3?cli@e6Y&X z^>A$s@e$6}3iI2Ba(x}mTnj23gy?-`>b!*39)QC?)AuMSo(pXLWK3f z8aMSz{=mdn%;)O3=F{kZ(Xza>o63GfuJy)Q_4U*KpcX3Qj)gMkk;F8rfGh}aJ++ks zi_{hAbaA_h$}9Fdq=Az;bqSKtp>a$dbuv2N)RPbl19aV3sH9w~S?nc5+)FjV#fL?nIntX!g9(L7nxYSyu z8O|UNU)B5E9P2-r61C!&MQeDcXhK4b7O~T&3kJ{OPM=fJ>8XWLe4R@5mkQ49q1V!g zwJzB4C0B-TO*faT8!%7UkDm|cPn3mC=!~QM{e){WQ_8=YaO|Sf&*~)AWUJp`xv7YICM2ds_DV4lk2rLPhbl5f7BZ0n@Q>Wr)7gx%>SiJ-yxfu9-l4l}=8! zJR56?O;^|xxIrIdl>7<1hqJ`K6ielB+hRHT4ZRk2N)5Emu#0OV?zo`Sl3otnZvqpE zucDti(@#G@#%e4X_C2M<$XOE1ILi8Vi<0_!y1zi6Fnez&cQWw!yY_1x6@Pu{v~SHf z-Zn>{t!`W_O0v<+A5)_})Di#KOVdb2*3p$I;#>7l@5q3sD8h3P=(fxW6SVODd_|r9 zIqH@O6nI0f-iTF#md)5CW&Bt1{UOzy(mfYrn!yQ_?m^X#gch$unvEE%m;TQVGuhgB zCwv1r8Xpy_;OQ2db3RBduUFHCy_`pJ&!I?idGw0@Mkn=fTK(FwiTz_AW0HTU#tJ$T z^Ylv6xNc>l*1Q4Ji_4+6RgF1JU6!eJ8YgHcT&E~}m#eN8^Ru_qBKK(QC3*a&-Am-=urlx zmxrdAY&X+Fi1HS1@NA(>M`=8hBr+jJZ|LewywZ7av0)LkoU zZt)LI_JSIAEs}>QhODL2+GBcg3W2Se-mRaXa_WVnQb-%j(707>$HCD>Fa1veEE%Ysf zEzF9a@oy*h3U5R|NRfs&;A&v2{nYuRP~ibcREjmr!oRSmahlxOF2_63hkvU0^Wly< zA|*}@O@r8_RL0XpSZ%ubKlj{XnsCA_?ft|gtvd8LY5(L5`^o0<`ZMx1BQ5(PCRia` zGh@_L*fAp>80bzL@kjXP+#@QM-(bmNor0gO^)4i=75hu{b+p1TQ>h|~J3_Ld{B}8- z%ro?YLwij-PC=EhgJKE(dL65lGyhpfX^iEkpu2L(qMLBDHqH3C*i5dw^`T773l#>? z8Xr*H9c1}NJ>&-N`7NZ)!f)a9sEi^s18n#znnqvZb4ss?=)V{*oP56?Pi>m?`B-Yx z;4UI$7wdl&d0(I4t~mKHkvILt!v^_%p1-S5>2*|%$MHZPvHT;9ttr=fQK22^>*sZM zKEZtJ^%RR?n8!r(8n(#;FAIpTFhly=pY#=ZSty4&s-tj5T{r{oD63{>sqmh;(_iFE zeHG_-xMzd9r*V8U1}vw(n&+A}_6{#ibZa(Y$SPFZAF}ludwSdZ?!Y3kHQqYISv-%b zTEf1Ivt}K$BOlYEw|F`~{&`bO-i$U-IsU>2vBciewt7+FEceenU1^o-FJhtvkKT%#Q30*p}>RCOP$NAuItE?rm24jNGR6r(d z@Qge-$=)wpXGuGq&hX$(xR(_Qj#tkeht6NipY~#8WqcP#ewJ38E6!?pzF90;24|i2 zY{~TmGw@Jzkc*aEj7 zFCD-LcI*!oI?(|+;wve|ZgfMs*fh$m8Z^I3Yutrkg&^$=Kkr2J5mi7q9c3VOKZK5| zPq%%nb~!8B`-+g{*0?|)c9%;0n6A>pDxq-Z|18LNmEs$W>0YzWvXsM0IaFPZwO+2Z z{=c4kF&L4=o*m@f~;Zz}d{YU$5Y~C6GDn zO9{2oXqb61(VuIF)tBnD<-?EbWo%m>c#c&n*iI}F$9xr@=h6o(!C?eO0EZ=z+TE?7P>))SW9jrLO;T#dC> zQGW*o-w>bK;%h0RlCe`byEQ*YqhCZO(_t$TbMu0fcS>lqM_v7j_ZY%{qVR6+D*WG2 zl{=b3{71G9H#zL-G`7j|HiwLQN1m6XT{r3eK1T&V1OLL8JZ2_#a7<2gEt9!dIH!6m zUQMDM`tZz2ky&3ve@qj_;bbLBF`4emYcT2`3T=}9M>yLx8Fozpsqg2x_9A7vUPCs@ zJbVwTnoOjTb6eGBPtj5{cy1u=c9WK?OA{@lo5Ezdw7Zq_ zT;U|Q`fM_hg1*G(;jNX;?pQ(geBy1UZX$DqC$5B*S7ZG4P%x*u;1&c7Ur1=7COsG} zlt7mI+;I-|wu>Kz(Kx?A==8C*tkT?_{>G32A%c4AjPb5TJLsf-qq9_&(wJnWz4Z7F zvu1hz{#ZnZ-6q+fY)06S+d3bX!?ST-D)q|8I{l~h>XNK9CB3my+?CaBSf_7N9aH@w zLKcay9r7SEd>BS)?Tgms^9Y}ZDf3h(^ORCa9>M0t>HKkW;eH7JyUu0Uch=lBE8MGy zPU+heK&S_sh?P#TuPWcYsq)!_Tc4Ms6{COZT>b_xtHAWnvCCdHa%zDi%-ZH8!gR-(twS+BSrk1`? zpA}I-42A6#UG-J`kSO~Jc3$M0-c-&NRqIUa3UA63gVI^)qt|K76Va!vG96@|i76-Z zU_bTldQ-h59fx`Tb}k-20$D!NQ`r$I&F3pzl^2Tb*Y&Ihhr&+2Mk1v;mGe699mnJy z)yAdeKr(ti>_zPiL+9(IBw@rEqN5V65zct)qyjAv|5wfSypGm-w!9x7TsNVZg=2&N z9^%o1tTM^&%gXNbQT#{Twb;K^)fpK>({2|lUFAY?{pU-3m(Qx7OH7(C@?C4HW0zAW zMyOh!!me54+wnvtJ;jkQx{OJ~UO2lXGLHX_@k3TCUCa-CWM2vzryaG?Rd?zhd>RD* zE_senyWXGB`uB8v3c`xumq}u}5v_1kq*PHKyvmlXJ>B2pu9cqpTbQF$qDl^3-P88m zhUxEnayf@C!E9ZCu6S~!Cwq_&&L<{BXT)JK=8i05DVvn*LR-`6mgg{ z-1Ji_LYd`wvP0s{mJ0DN^={r|(eg4qd@=jDHCD$!;hl$YB2hT$=Xne?N0fPVcg1Tk2!IYhRG9 z+c0+@sCP!r&E)m>#aUKs9514a&@=0t;8Tqc-k|nF7oZf>Tu241!IQ1W-kE2Dtoegl-O=~_$F1G#@>mk>{5$m8j9;WvaT1D9)g9=M03OP zaI#`9J)iKaF-BkPXN5`8YceQxbf2gkZI?~>LhboTUQZcj<4=m;lazZiIn+oW=0AMi zJ5~U9{ZEV)mEB<<&pEZ$Z9G|6y*JaGq9i^KXY=NBRU2s3Tz~ft>%OR`a#W`GkTsWe z4z@wgpd8b|mw{Aq8L=`H{^eGI_E8tsk_%bm^Qqm;x+9a|`-2d@TtfSWcP1yR=ffFP zEnT$$vR8M%S9qba$-x0CAb0Ftd3RRtWx3~?9~qyB>5cfW8ddRi^gf-o^=wi*{)HTR z8at<d_>`Y50M%qBX z@#?e^@kKJPjC;*umAf!u3cJjWe4=9hma4iM38%lT)ct9vg8WZSQ{9!1Q{YGG=;2gM zrr06~8BP#S35PDR$$zr9gzoulELsh&ek{hS%DN#Csk7Q^vp=gW_kI>FjrnaGHs2@{ zw#fN%@^7VT?JYBhigp$c@orcz6QhIbl#1Rqnj;f(sVwFuD*Esq>TP*jOQbANA9kRK zzoWs^>++?I-)7aF?%u`S_UXuu5&4Da;2jwDTOQo$ewpMZ~wrEc4B&uD*^*8qW+3o#n*b}Rpj*+yCs|QcQ1-6ms)g^&cnYj`YjdLWffQW z*4M9c;jBJrdu+WKYStF@t0>yaqN_J8casVkftl{;{|<%HnIZ1qYURy57c_Ar?0GVp z-E?j`)O=8N{e|92KiT&m^j+l2Y`7~-ySvHs!m9IYs;4?^`2l8b$OdKEa)C2Ft4YFSq_;c{JDMB7vBMN<3F;;pi~gn~@TGovSL!vKNja9~ zio0L<-duR2uoRy!QHh2(BtKx6+-j1RGQBGfT7j?gCuaQn>)5CU*bWyQ{@0~0$*9vd7eZ}{0sSR(5 z&5G*!m;C$!*dV-@d5#8X#^+O@N+}-iF7M7zD-HB6s=8CmtZBaKPd1FchXS1MZ+`Bn z!o0jZ&lj@FZsP3A=vrAj)ZaY^1KZ1?rt)u+*W@ZDn~teJKG zMY;De7d}TR^r6~vSz8iBOD-E~il5lZyKsP8So?v&<-J z>mGzoZ*h#-%(G1w&-G={*;rFJyGnHa>CL~VDW30DG}T@AmuL#_7d@?tc}^|-o!aS^ zj$e5DV;Ky(W5)Qy0$od0%dWWUVBJy@*s-@O?EAk2|kRX+%Kwo!zl(ODUbK*(|HgnbTl`c@6-`1 z8*t^rGBmZPE5bGfVDBQeVG+^(l1#sBYBWks^SBvrS&H}zd7j?hvk!GO3)+iuSO%QK zLP6p7O;l?+@Ojt`^PIlX%bqRlJosA`ltt!!$l_`2>ivVq-;+Zp_@R=R31|0KgAPaS z?8=_N&E|;;Kb%=sm_6o*lyLrYW^2sK2L)Zz3Ge={LVpMc98vrBm8m1GvML?0S*_tFyV<}hK;W&^P-&3Z`B9d4!vWz<;Qr#|WvutKm`O*E zb7Tcv0cUx`J-!q5zl$yEjlGyAlXUFqH zGwe)fbyPU6(fYy&h%- zN_v4RA)E<(K=x&D_i&PR3jLh#=!b0hb)sHL*q@pLLOcnL7ON{ut3;!!`>>-p?Ec(D zrxv8c{}k6xP>DCpvL6&--FPBN)%-C(G?xvZ`T60r)IaqFruv-!W2JVAp74b+*{i@?sMF;mP$ zU!&pFvgQzei*8&)T=}(}4eI@KwNN!#I|1Ic6P;aYkQQp%(3O512W>Hr7(}DQAj^At z9-;QCY{tAqtYncz)5LU7nH2Kx40I3gK@S$w=Xw1pHS;+-rw5A;7M)Gvf7%uL5I$MK zd*xjfcB)>5E!T8?)3DMQ-JpZfT$mv>W}fA_uG?v`ULQ7S!0}M&p6=!-oOMS;e@I=; z6`$Gt$!~PaOXkbrExI8xX|gEGPGPOqhkZVFf9xxEDBvF93%DtuW>XkE-Bm~R#{zaP zlSwNQz292Yk+vZYll_CkThBy@_I`sdE|Zu(ZKHRh zw14<=Og)(MZ?vsyZ=4-%C81|{%R6-cK8D1NVM{nyzYf3EHm$nJCcjv5RSIn-w5~w| z{taJR$@cI0@I4W*TSkPv@0+79Pyv_qN_Ocx-PY-<&6=C_W{SjmvqEw;;ybMQ4Q?1N zK9}e*pHS%y5G^S^Q9T~74sF9*mvbQ85)+BaaA_~kmw~pm>5!tjJ6pwi4Xk-fBz^}k z!?}+C!HFMez+Bky8x?n7l~-w5{*#XCcYgJQXQ|>dvBqUw`=HFdWR)MON|&gMLXCLF zK9XnXfnO+za{m5EIor(cb+!rn%<9tx?X7(wu1&4Beu`DfQ-3c~ z@E>8^8Y-gk&^qdUpNT9{%!KDCPT2}E{t{=+)w20%)${gQ4rY~~sOo-D;umr7kcs6t z_&Gf#9!|3;6unNXrq*@og;CB#E5gagY11L9w;!NrL^ZXS7rN`pWu&Ud;qhV+rjDGg z>E3x*xVzdVt$Z)R7hkz1GhNmddPd^wJzYv#Vj8<-fYhs~z|#;gCA${E+cR_zi|e)g znpkTgDk)6E-xcc_DT2{#P@1|uD5{r0q`#nU7KlFrE^QRoU34_ps5UCX&cf_j!W};_ z1xZB-PNBZ<;G;KW-$c7n&PB?aTh2|?iUZ-vDGD;2Sp6uZFB{)Rf$XMRn#jJtt?%>5 z>+<${^+|5N7+@dQ37w=#GVg#sMpZf~E9F0%HA|^$_Q}47_^%<W15U@?$ugX{kPECHH(BhW#cJKGVJW2D^vTkOyJSw5C(t@6$lo8m6Vyt(#0b_j3Z zUx-u`vEQnr(o-8_RYe6L^=lBj9}JAer;3D(v0vo-P&nIy(z%dOtGTdY*ylFLm1%M2 zPN)bY+zF#UDJ3^S0l!63kMM2Rh;R@i6qP=i5%Z^!0bjV(J~3`d1ZE4s}3v`7ux3 zSJ#@pr&@>W4um&$7gA3T;)WWrSS-9r*hTJyuZhhurE4A;)$|)ju+smXBY&T1XzD5Lp6|ymu;T1;WJxp` z##$ggAEW6Wl?xeZ>*1d7s`b>8KWF{@$0P07WQOYdC@!lFKd!)uc5-G89a+gNF+Y4c zB3_3=&)IC!iWWS+1KU76`Wf~ zG;9$s_5Gc-GVT|>iIie9kLY|!#Z=T(BkYq7UrhVOmEX(1Uoph-NO&_jH8eN~Uy4)J zuha7b9)HS!k~4m^IWt9ZqLXXy>&Cfnd>?6!&p{1fE`~|dG(d=EvT0yxsgv^y$`E1CgzDd z= zWPF$2&~8!D*)FX3$b{GzJ z=DQrQb0clm2dXxwK*N5+a2jwp7a%=N81_X3We`pwZ7;iTVEA@)YaKrS%hP@W9rLUC zhtO9?vDi>?mVwS2NJVCXNAJqKV|3O>qBAqalaF0y`bkaX?4RsbUCmv~8pB&)$*u4S z-M+_V`$Rsh?Fs+lzlxOL7c_69#5BK)s1Cf@z~tLiFcmK>!AD2+h?g}3r^o@P zk_t#86Z*T?;`jm2+B9)(PV4-hj&2Gymrx*IVu$p4bZ@I$7e|}wy8J0t!fu$yM9eF? z-09*!@IzXAy8;fzqO)n2QDQpGU&178v{=b&wi8aiN>A&&j4_)*-U5_Jnb>!tDRhl* zTHR4f>6)CafNg71y>H4QXU$k=I6HNi>(0>#^Waoz7_pjnoAY27*11Zbt%K7w^~^R# zv)WI$)s!#TK7;#|=KJ&d#|uP4Z`JJ-S6qf*e~Rvpbe9fWYZv(tPE>0OC332W!km08 z>okr3%d6X2Ae?(QSCp*8d~e!a{5p(@z?NsQ^nR1KmEMJU3CBLbj&tBfZTpdqQo?_# zGpAYW3jYjWj}3~qtQgy%{w^zr&f0nSqdxZ+G;dGJC2Ra=`s|oGAq^EVk1hLSly~${ za;xjYnb1A`{H;*;3aymW6&K;rT1sgMj=l|hYDe$M@e~wtEA_`a6v-THavqv>RvYa! z5&0m#J67xEPO}kfL{Dq{iq~5 z@PBZBhZvm9e+}ry@TTZ@aI6abIu5Qh$9kj9_%4W-AKde{_^j+#Mo;%VO?OAW-Zs^$oy5;aFFhCF{rytmuI!8K8RDwiRlcq{ydCXNqp6S zO4afDIQ!r)sVZKF2I(L~m{7b*g)D{fkE!}@M62`BC>eX$UXz$CFAO(t!*Qu86BkXQ&(I)3{aG zX)R>wht;>!I=jW$3f-42G{i#tT|4pkT+vh&LM(HqBXBcJ+AGS97qQdgXhbhzdg2}O zaE9Si*x>>c?WxunO(o?pF$g`O^ROWe^bDPeF{+K)I5wlF>H&?$u*^kS&_5Qw;}+i9 zsb-&Ca%w)D)is~)nTu^Z%l~C`M0VCpnP8v>GB0ENs`b8%oi15t6IJaGa;}H$8P6se zaeUZCm>=JKrz_D}lx;L^ZN#Q4`6W;6e=;oWA57t1nPu&Ddgm`yQ8)?z6ZlY2w>W&S zw7y(@obR%zF}L|yL*&+7v0qJ3;(POu$+)(&_`VxyXSQ-&REIskN%Z>$b>`31ZYDc$ zYI$#GD6egYwzDzpZg`ZIqDaD@lU#QO&xZH9!}8y`npJMn9^F`_B6Qh+e`dm@umd2RNfu5QewEhw z9Oi{Li}S12)5f>U{ND28l0E!0Flq~UUer@w#zzMe^YtEbJ*)oM(bz+F(jG9mUZ^jB zL4S8Nd(QKGp(F8C;th!j^vBjnHhlR%G2IV$?4dr+>+_U?MvdsrMHE>}5q*ob`>7Vg zY&SdYegVRt&|3;$NLj3>)RNU}V}uQ!Z(IW7&scld`8HK#G+~dE)Z>Sd-c;wdNL7=f zgVC}$A-pYDiK;5co=IXQbjNG(+yvZT8lRuTJ}v!kYnd1rA)KUtU2m@eX52s}b=SqH zEQc=XfINivri%MJ)bwhMu#rWMi|ud@>$@h&E&ZK6i4JS{a_pC|`i?w^is^4*csN7q zdV(WM;>z%Ki;S+DgcEW>gYb>jr}%G%JtLi{t3M%W*avl87Cj6f7Gj4Vtu-C4ZJ@6G zgU=VyHM{JRd{A_4amRY`!<0ZLdM+upf;~sz@e-=VnoutX9|pv&X0mo3l8vK|!?)P` zQSb$@SJ0|`@!rq64@uG0F!K%Zxl+D|Z;QM~vDC$H_rzsc%-k!n|1FEo$!tCd-)k)3 zs!}X^e? z9B<0k)*8dtunNn&;XGbjb$L|;h4Xg9`34u^^iR4;pNPtE-au8V;-~0+*3-joleYfe z%2+`;bP`_7_jF-T%pacaKB_-_Dfm87_W#dZ3LUWbRl?n6dUG|#CwOQRwc3jke?m9@ zcmK5;Zyi^w-=nQUJ@vae%wW7+N{nq{m9(%Wd{?aqCV5{bjKqaO&3)$DaLP)G=+D$u z_!i!sNIuc91p>Y;8e^_{&mF&m)$dU+*QolW*fO3gD9-+YVaMT7G8x<&8{Ujo@N`39 z=N|p)4lt=3J#Z6GZ-Snese!>zxu!g7%oBxV(qk1pPz4Hu5Jw>vMO;v3Fvf?Qsa-oErfN^Uyl4>xN~*UsEXPhuyWM$Slf2J*+*g zUg*~*KB+12TDq~_P5MgHD}RXe5wRQkenUia11TXvo%Qu2 zCc))fkZ6xh<}f$&A@@MXc{yjNDu z*UWq@EAK6kGik+TUNQ3<#CQh!WtZpMq0b;*E(71g6eg|8rUh&pD29H-dbRMv1z*s3 z5!w!An}V|T8D0E$T=5ruGaV|eNKDa|n-dnXhJDe(x_)2jdJQq(4QHy|q3Q<2!kf5D zv2a`YTAw`&>a;C^oAcGeeb_U6GbRsJwug31@_fz3SbnQrqnZofq-ulnuDaig&Ub&w zDY2;-Ebi|)vQpAvO?QL3UTk1oUv zdByJ;I|yFpg(-Z|+nYn*TKx^m@_l|E;u+7#^j{%NM)>}O+G@85dyB40PyKc9YmmED zR0Y2e-@{n~->ccn%Go_E8O~U^773>x4wCH;=#%Y)oRwwkV!JHovrN|bTJf4M_LWSl z#F}?##%0w1kLEsc7J3_Er=$|6LWwgpX9d|BcE4@c-F<}q_(Od$n*Y+nls!DYlJ^eE zz^2xJ-45A#^mI<>GF%t``NVYbfVp9#*j~Bv0Q-mc^#4Z{-w@Zmd0?};yADj+LANv! zV;!(wEuc#Sz@I@&aA)LBOjjnZ*C9zK~2 zCzD+F2d{@yQI^PvoYAM~{+u{?hFM54)%{PHsFfK-8YuWR{c%fQd>HGU#mk}Zv0t@a z00T~(SQT;}PTsoRFph5yKe=jnmE6x>PAcgX#IQw@hRaW6+lV*Wdc zK43lGE3Rw&pZer&Rym+{c}E8$eKdS~V}&a(MCvBkc73!QeG*iETy#Fon)78*0ez3> z?7TXmFIgbEmmO!qmNoEpg6umVsYNf()Tz#cXOCIw1AI3UH(#eY!zoa6WKcDCi2U^o-{Gi;d-ihQklj?;`?>8oDuyNCA%nj0Qa9XunZBI0G2dL|`*L@4ATiMQxl z%9rrv+OTh{wjR$h{`ViqO zuS>-9B@@MPQq?3Kg(?tamySRQI6DxwgfqCpPU>1Zhbv`5T~AX+j1{tNnSes6c^D6)!1L)P7mG_m$=6mD0{xKwwG_q*r+B8Z9@#8d zP~06hQ!MNF;h#u2rTG({D~}f^snFASwwHK(ATMN!|3`BM1UyRNJ|q_|%7fkd3G>-B zBhSnh(M>4gl%8v->jwD!42(E$l`ZAMb9$Ub`T2kqUWC#2`;!l0?R{pB59+-BjniK- z$*K=qF7rqiwcdA_t1~u9Df>#})>3NraCTK?dHiEy=GNBEwHuJLtT|6*9gKCn*_R(u z={a_kuT!AWA~oW2jJY?`*$gh1zD`e-T{zb=e9^a{eEk(yKV=T`yguG#aeOJ!p}8O< zepji-McGI!6twCj&(~P4KP+4CiqdehXr|a!S5|-{VKToD>%Hc#ry|c{`V_G$>X4og zsSr!P%py7B%UGm``$c14!oA%zz;yZgJuhsuw`^CWA=LQId?B0`JOQ%T)72h=xx$yM zYqH7|TvC`N!!DIIs>DT@@092ar*Zv4AH8Sq$Ne~~ue)`DxmT>Rr^wuFCto;4>ZCr< zt8n@~cRZp_Y^1M|nU4Kdggqc8pQJomsx$V%+D5S>o}wzPnOY@#3#$JH8LmZw+MK7$ zQWb)%P;XbKIhNaP@<{w16n#oBJnRA}PqD9Nk6j|=cU`L-o@@rREvFvcOh43P#SwBS zoKU%z7Aa~@@HLO$uRC*#a#$w&O7lojDB8+@xvi_cQ=B}ndiqVBF^4KHYQJ62M31bO zzQ^Xs2sZpoT%N{UEve88xIBDY>J0wrMSIT_ogMMkhw8Vyv7@rJq}j#ykne7!wiQwlP zs_P{vd(aM_wKVhy>R~Be)Pf#7;;LR^X&w*cRg;vb;0n=IU+Y$d9sZ^4@Y*T|!W%hL zsE2T3a1V;`JM~%#Kl@f}xaay?B^vfN9E73Qcy+K97PP{>JTQ^|4tu9&Q**hgob$Q@ zbIkoa(M5A8#-#WTPxlx$_ys$4q=HvL*_EDapey%A3aAgqQ;e6QrPWIJVs&^tyUp%Q|m>RoZ1=Jt9riFHM z{d!j(9CX+4=3NI?*^dz(hK`x7?<;Trd_pr`fJ}AF*Sf*jlV+kL-KlfrQ9HxFPgL3g z8S;qs%^2$eil`Z1S7wn=Z)J495%N2CbeF3Ju}2?Wpouc?YNWrMx)U8JzyFOjRNajd z&4uG(w|xh(^*Pkq!up*e{URNGALIjT{gEH@>iK>V%?pP|>h#@^2aWJn7AkCp=qVOk zrwbImSXeIlkE$e`wY?KQ7i9mfxNe+SZVf5l@MMdz-8pg7CYCd{91lDMANR?ci`2$v zVlzo+;9)bUQ?%j-{N2iIXAvzmOO7YSKd1EXiifB59{$8~?^)+l_x2q(%ejpmo% z8>x*3o^8F1n{E1^EdDOVen&oz#>Yi5>%Xej3^YV4&)bp**0ALiJ2r0Gk=a={Z5T9) zh|1^G2jMHg@9C!%rt@ReUKalrzGE<-wyEiT%>t9Im45c`W?mh%xKaIRiLGNUjRAT2v z$~pzqc!bA`xmyqR7{+&Lyff4~c2ceKD2@v!?|&?BK9b}6@j?pEJ419;p{8=ek{|64 zxgdK+P<-PcN=^H8rr_1ED=&*W^c+;U6KSCPFvtF^T=qPK`R&Wp*E0F@rS3z)_&0Jj z7n?kI4sj-E{%G!nqem*yV8KL0aRA%z2ug zy%q~P_>}!;p~Ige{-NIFUCQS@@pK#dggZ{v0}u1H{~{kye3$H+AIj!+b!@kLgRZuz z;VUMbk=TbYAQqhx=^kmO=l6wZ4&Q4@Er$bt40o@leEow-u)e;h-@-N9+nqR z;>IH4WUYQ*9o68|tn$qNBk4}ybt=0yfP41y9CM~fN`-{V6q(8tC5k9xnInoKWC}$H znKDF?c_>2WP?^c_k|deuC}hYS^8N4g{rvLv_MLt9-uGJTTGw^0d+%-i&*Ml%IB<(G zyN2-cD`%UHF%0!@zhPk&slk?fk?_{A&T8(gozT7H*T3c&uW}fd;M^s2kOS86jLvwB z&U%_U*_F)jJK&+u>jN{ye1^_i%}$Rax?j5ZTr4pg+}jUYD5YBunUpY-C#aJ1c4 zvZvhoOpQ?+Ut=XZEnTxN#1IFB|-I6@D;1R1trVY#{Vvmsa`^)uZQ*kS4( zzCCeRCG=KFr(*pa)e{y^;=AU7CCfEG$!1BX0AmM%Z>9`}?#e9ZL*)G3Ixz3~3vzfkH+$x55sVrNX;iXdKqlzdPGq)4FVUzsct0f_ z*VlE1JyJdNy6|?)fa*)cd$iSW$-@rcov#Abmsyjt6nN0_k6|}0lAn6K2^~6`bp6c( z>1|z(W24h3^Kp9RIr#80wvmp?8V#Y-;tcOVhGOQ-zu*y_^pWN2pn{nFEKlaS&i#68 z__{=R^H}&++E>^{X$<&7lag87+C5@dN9=;%cZ*V*g%4eYDVfE;j-!5#B3|conew36 zP1X;Fy34=x$negd<5WO+*1oQlxdv5!OZHQms@Hk^l(tayth{Wf76$NCiee2vL9rtE z-!zg+3DUsG*x<(%AAiq<;0rjL!uFU$#k%9q%N7kTY+0+e3^CD1FNMC!9+hkE(~p@vTlUdS>Z#WKuJUesx%x((tiy47{3msDTSqP@d)n%eF;UvUamXv5TUnRZV!nLsX2V*l{ai2^K-<+Hz zQ<~E~mvFG+?)g_<#RT)+l+dpauD;sU=1YX{vX*q6>%{IbG&$osPe8uqRwpl?aFopa z*IX^^HEZn7Ue*8WtAsI}(^T;v)$==KdTaIT9x0_!ceQ4-JCc$BXjxe1u5z@(J!Wd-$Aj5@v!mE_rEBOIIW@3 z9>-?Oz?Iq@i~W%1mVNDCQgMak=0w@G#JRS@u}5^SgHd@d$a3{lRY%w*!x}=s@O9_G z@oe$$#V$AO3wuO&>UVS0`Gr_j+;hH(XcfIAjsDt4ms~-O6mfsUagKuVbDY(I+{nec za(L4JYVw4$sufN_3zx*8*JGK3F{%krx-jn`L?QI$mtodJDsL-I^0gyls}q=#bRi&AZIs>OWM(kdZ*%d1SZM#Mi7yBQGaD!$$wBm9r2AD*FqP;T|Yy+2eB z`E~Qx<4-`Np;%WD+G0qoyGi{TcywAvuLRe&M=zK>+(>@*{w3_MAC%5ye{VOavd6lW z$NY|1{~0PMyr2X94 zsv_nqqJ%!V-gRbiUo}*1eH`bEE_go<-5WQFtJhhvzINnH!2QCy6mk`7DT{&D7ukI8f{GGvs%lMSjVS0M|jItFV~(mz8Is)3s>?w! zyP_nTItg7DR+ zLoz;whh2%?YyE$c%_%tw)5YMr4)i5e-VDQh!xe5$9CxKf60>0DUR>n^{bm>33tHwX zWwM`AtEF${7uhK|N6X|nz+x!X;!MfwkcY#K3dHH!cUr zpcAmR5yYH_hrPz-3qDK+z4g;%Ce}igpI5Eboo$-DY^jG$giygP>MTxgxto;g=NM-6 zxQMrgDcATnfAKHhu#(g5VH{@HUOxK}2CAO$)zp@%Cm`4~yNzbRvC}f_aasO1Jzq<0 zt}vZ^K?E9E)$mN<0Q!1AYV`*`mE~8iBIG=E%GGN19WM4>Co97B%*j5}y{e!le7>%-55b}N zR`euZ+s#vi`SA1bEN{tzMq2Y znOs{hwev2P+0!}qo0z2GKu@G2!rKLxI&!UQNT+UFQH96o@_u}POv%ilxBGj=b!JGs z>wMQlyarS$grSBh%x$%hLN%4*^Zjn;Np~5Y-&KaMVRdq!6%rwr|EDHv;xn;mrfYl! z#|ht1Es51GpbDR$um{^=@wn<<4v8vpVz%fIuf|hjnU7H*54yI+cuGS^yE_)%j#ms9 z$u0+fF*Co-#px?ky7K!DSgA_<&qZorHD$0ym9FL4g{LB3G*S5x4?Af8$oY6Tf4w7gaEhtM!99O>4-0Q1=M4m?-*PK8N?ZZ5D%9b>+FHM2+RvJ7!`h)%Tm$WiwIV z%4-c@haRqe%2>^dlt##uc~LVlNI_%&=K8{u;)|eBTh+6`Bq^_)|2zJ&SeH$HKIopr z7Il$J=cx}}zr)(*($@`~ZL%xU6Fv zouH53h?R!Cy&+f&I{EK-C7obPVz+&1b9LryiKAAkJ4{&tbHZ07Hac<=Mm!M)KBE$U zGvoMx1}$q%Cc^c}*0Q11oQj3rqVC=_WjZNx>*UDa;`cAU@tMp!sB699d~ZOmK5D0c z>`b3nO>I3OPx@NVlDhwA?&}x*D&WFvvixGy84^$A+C2i#e|4>exS#V)$jZCMw%ocO zxHrN1`I7(qy?gu0D$bQ(1^iTVykeog$qoCMcaSc5`c{uV2;a>e=lHPqGFVB4S0pC@V)*xMh<-{ylHm0U7a6@ zLn-)B0e+o|YU|*SIa6Dl=tbu%D7Qw-)B+|`;oC}o!h_($G>+AE^iBICdg4h-RmcY_ zpaXUGxm+HiBe!>*Z^Ev2x@d3!j)}l5I%E!3dsY8$rpC`kPg0+|Ve`GtR8F_blGtk3 z)qb)0mO6L_#{TTC{?Y|DQcW>D{LkoBkzJ|Jy-ck>4e$Pe)8}Ml*eBFSA1rMB|4}tf zsFz=H#B@|fGjod8c=B0KEhS*`7_oa6|5}LEl%gW*T8~Zc=WdZ(6|2Q@xDo4S!Z*Ng zjAM2^m#$u%cp&La@)w{pCi<&@KULe~6wf|7ZjbJL zRc<}&u7391%6)Y8@A0m7n=VM4z`nNV#x2b^I`C(2Q?!k(-G1?!0DsoY|MmLn+h%94 zVkh@OtO>lcKN5GiBH^3I|I>?}qeI4tzzNJZ;KJ85VJ1_Op{hPF&t!$EUpfkyZ-%l>}@JH172S=I_J1{kPd( zKYa3Tn!mfN{DLZYR)74O!i~qjrKz&Rt;JTdpYMyP{Nlpdr>S)tl&nNJT^8+X0Fl|N2>3QaN%p+w2zKohsV%QcYK<=S5$p3)p489 zjjzYDo0G1#7U63>NqYK$sJ_mz-TE&|WJwBp?W@7&%<`+NC)3)H)=ZyzqX-BGF}Q*gIASTR0P|%_$hGpT0y_{lmBHW%Y-`$R#T0xT^UA zyK1Hc|sg;lYV*LD2Csw4%C*+9(d;U(Yl(`(@7Qy}DjR{yow8}jQN z#}AWZ`DD)TbmRBVRsoMGZE{&(6dGfBO--Xd#1YC;5EE4O%W&ZnO5(B#C}mZS@+D?+ zC93Hi@50KLxUy^L@BjbK@}pQua00(c&XM4k-Hp$-*M%!#AakJiGtSjO8w|0eqa{W-BIsouT!O>SGtJyDEL!B&pm6^U&ARY zQ#vUy_25(Qr*p>ZZeKw1Db{j`y?l2iI>sMXqv6TLJXZ1p?5?F=IvsW$;rzcXzq8ss zJWuZ^>^!5a|B&R4zXHEFr8=5W!+&9{C*;RW*>yQqSkw-hMzzu1Qt9+dXwxm8b?9P0 z!`H4oJW2m9UU*s_j)5fM{bK1MOL3m$mgqT5H8>gJO$fI*6QfN8FR8!(%*!WQvwSi+ zysu%UzpwEf>$`>vK_r~FBIpj%r6U+`Plb*_b6jQq%y`{Fp4#S#`90h&uR-psTGh*=x6xBKF zu-ttO6Ml&&gCL7#!f{qUrlbYDCE^a`EyDg1h>sqiYORYR-~ zL%H#e_(arC#ERk=6ZEL?4aV?IzR}QlF>TsQCpe}io^q8vbo=erKJ0>==&bXs&m$%k zTj{BZoR)6h1sqShE9u^(j7b~S+%@-hQ;w94PFaZ|)}k*)|B*B9r@&k4Y!B$%nfQ2Z zB#Fc-Pb!F=D%T=Iui zKqt8s-ah=D>fDWeK1`Xt1%FcG?Z+WPOSyk7kvVCZKJav6BTUL-LeSpNoyH7qIoD9A zu$y~QN(Yz^6Po+ZV*y$JA(Z^n`vV8U*xUF`SKR3r*j1ZD5T0tdfN_QQljnxi+tqdx z$W<3V{!UJwcBLIDg2~iW0lSrYK!8FxR|;w@Nu}qpx8N&N`@*L7r&abKeRP>T`9%d> zF)@9FL-waSemGj?&cb)R6EH07qkBfZ{i$z^ql{8I$6?3xH*KediFrf(`$NS-BZj}tMIyp$>77d-8KJr7X4kzg!DBNkeSJ6xEU)A!7@;{;X7|{ z!>wzuWoXG%x?ny}c~=n?UpuRM-NYqnsY_ zIZm(%7w-p`pV1ZT$2wse#oY7Z=zbdLM~W)US~|FkWzu&%JLy19Noz-;H4Xsxpig3P11N!wNFJ34;&9&#CK zEdwmB54}3zYdI6U?99CnPi_fKH)Bj~tjAP$7QQI(GQ z9poo=*@52^1}zi0Dv%P}_I$)|YAXxnFqaA&>pB<1gd|$^YkjeVO8pVT2v63Hz%jym zJOWRv3SYl~<#$IxHSBk9;cQ_CL|rO>xVU|$cN7-s@I*;_x$-G&-m7;?yQd3&X*WKSoqHxmh`2?3dFZ)uc(Y09lDjaB>bvaDYzA0{j zDQvb4}b_#rAp3x{{-WK{>1<#dX~T6!wG+F9!EALc!+f?Ml!xjB&iKYic} z@y=~u>loPl9p$zY7B$6VPvR<7aGJj26g-IVMvSTY&S)ro8Z%rZ0&j@h`FKTH8QwH9 z$W=y(VOZ~deB!b2^@25QqvH&+lFP8)@OHJZ?>jzcp7!Lo-uJI3g@neWG3I5!|5;uybr@YM64!Wun&~-cP`q-7` zwobtdDo#11;EOfICF?lXGivoq8vmdQ=?GhoSdp(G$!Pen+Zk`gs>z-Q>F)M8-VgQ% z)O2^f9R0Ul8{MepT(c-nh%s}}au3e&mB=?>g*uB+<;gThSv4-DXzeBKmKSF2-0BuuU+i7JYw1 z7B9i-1A{$=)3>6$Q)5d9pxzLb{i#m(rMufLCwJ2_vvv6zn9xXE?L75%2{sf~11qA6 zF#m=Kgzrqvpy3AMzh|AlgeL`;%B?%%{VfK27NYzi%PwLyb19>$BK`}#SVkUq7w-~s zCS~Fa+Ium#{XVQd>=~{vmp`+b;c3Vc>N~u}d=tGm)Sv0j_ql7lj+^%M`z}F_Fb@s0 z#x=2*yon~fW2ppPJyaiPkL4AGK3V)-S>-&bR$t?Le5uR5sN4Uf;wD>kF4cD6Y_Xf2ooBIM6Qmvr(0Xr|}QQ+PJfgdgB|8dL^;O6D!9O zNAQ|;Dlg>ovsCmC`qjbM097zSPXDBS!k0{EnOu}s%j59+n#n%bXvc)7)C!Au*7yP% zcAQ!H5o<9RTe~6Nk<9rJhbpDdEyNMa%EuH*r*P(+iLWTT0bIG;bo2u>#0qOU*4mts z)mgBCc`B!iK5$!itgM4?QsrNW_zhRkJDwjOol1{}?+zVsjYs(c}>^_10frZXF2p%)+K6X%h+hvR+K_FYN8no<_?^#3e#f&B65uJ8n= z{jcj=?ARIBagd4h0j_x`iv4~}sH?iELqQy{f8;$b-bH9$kk@#c^EyGTeuisohF>M% zc}iWPxhY?mzLr&OHPpZn_xlW|WejcpVss40=x-et#lBLfn=pn}n0;YC6L!G2$0ldf zNgqJ=tFr6GI9Cehy6lTp*+IZEHbNr@DyYC zX4>CS;a{=73({7m2gA(iWqc{T_u^T{{f7Ha*T*mFDOuw`m{GiMI(S)>!#5Z&a$U~T zI-ly_J!s}Fj;lsTpP_d?!F+dc_ur*k`tlgVH`!OXr`fJ?GX(1HO#jNQF%T$?D$Ati zy3+eC>_2!16WSpFWN2H z*-sQ#abLuqSErrC{jy#D?d<`H<1Z7Otwpl$G=$m=zS?YF%W()*9b*e$Cte3FzmXvi z^LiTj@5jv&2JlT!Q%U7aF6w#D!zz5SsM`J#>zS*Mj*(w|slP7nF-`Oa#l9^n2Je%w zyYX`5btt(+1lA|7;!@er5Nh?nXBH>3ysxZJ7TV)+wLM&J)l=PTxV^PJznCQd>vODL zj=q+}xh|T`ho^tbsk5Ijnp1qv-0^?xy_|rX|K?m{to=Dy zGQ>X#_jMQxYHGG|S_f!t?JL9Ml>X@~i^s{1Jk-rfyXNcLH9tZOE?^kpO(&&kwV&ul^aE=cASp0n&FFXyf*6K}!l7ZD9!JOJVDx;p58W$Om{CwqSu=V-GD182) z9@PnAoWNm%N|~nz^s@dx#_GYk$8ntsvbHXUy;w#D)%_hF++8jfind$z)z)KJ>^<0X zmN(f%2O1m2_!p(rOL&gy3mCG*T5abU9t;zUA4STSFWN{T8rCebywPoEVoM}ivExhUEz3d z`55?ac+&eH)5w3~b>#cJ#NI@@q&tporPEAMV{6P(?v3{O`KGZ4u$bpv?Fn;$>GHQI zKdm4iVw#NFo%q{?ur1#DhHe<%J(efhiVb$fV#3adwbuW%$ zIM4MeXRNQ8O4)b| z66L9IZc{QxULAWHc9-M2 zV2|GPlH>BYvWD($9xfTab@7=UFgs+_@49+#*LNnx#uOJ*6cF*9v8v`ySt!}jbj?6m zdevlPyVVHa0v+tmw)nlNqgk<K}APp#wq{Pm33@j6)b5)OF8Do%wV#dY1` zc+XmQzSh~o9=;j)|C=y8d_#91Mwgeny3vYs)}?1df|eZD^EgdD70o4;O<~`EOV7?! zqwmLv^vn8SCub@qm%=wdFJoD6$luTD${+3QDIhy`^ExKL{O}yvq1fZRg#=dmt$tev zAIO|kI_aULSkia0>Sz4%0_P#ToqE2hc+S|9u~IyUoiL!P>`14#-j06(=L;vbOlqF= zWYP^?@C?843LRb<&zy$GHRV~fbH+Vtr4d&41pGV2A#5vNmlNre_Tl1L67yvJ79L84 zXt`^9F?L_+PR_HV2#RkbB5YbBnSvn%n4hmxL8%9J$IJY=E!x`M~Hj;>&Efe(Kw z%I&E7YL2O$!l#xzzUKh)V+5a0~l*pEJMGn3# z#v@IozT=P2*ZBtUYtG5v`*7R#x=NT?md7LVQ5WGU)G|8e`9!LuvyOX+KeCv&yi@Mn zrO#f6pL5{-ha#58YMjTw8}j1wL(s(-(tDykkjB2mYuqC)wXNcVQP?j&+?ou`+v=NlaJ8lKI00q@8Tb#|%9e%NU( zZo+ul^jg#r`c4wv_x-u#9d^sqS6dOek2~8lT7h$q)&Wn+$nGli*Vs!qgqnxQGVdU6o#(7bj9$lhLW&tec~b{&5-o7Yke&7 zS^Pn}T?UHletl(uOdKL!>vY;irooRS@7~UBf6PMOAy>!j@Xvk-x@U5xIW_sS$FMHq88%FS+ zZ|j49^Sv{~*Wp0n%a&zeL6{lO(_`{G)6cH(R+N^L@*EtvW+kVnu!izED=u7sEA=97 zbO5)Ui_vcI=Mdg^KMr?2dXu6kr+-wV#sv05tJm#n zz9*?v(g95PjQRa6T6Z}9c1)KI@3Y*ghrRAvpTu)VaPQxOA7$*Ud@$*WWEcJ?TxSn$ zkQ24MOQfV9M>J_?MArs$GuJMF*_*NI2 zkI{~Ie|KUXb);hObg3PWvlC^Kx+i@CPj}%4DLF8&Ij*jC+$yhz+dncA+TAv*X@CL6 zsOl5(3RYu=-18W2I{&m)H;R>&o`?XZ|6vGEw?4ICZ)8;qMQ7f!OxFmR=|SKbiYq@iQrey zfp`rl_&>1xr??uO6REBJ6)tI8zvJP=IvH>he%HpvezE3l#e1l}Ig7t^AlBc#&Gbxj z+?w~L#V^Z}cl5yi`14U2n*tgPg2BC1=qQT(UFQrs|_?)f018s)4jdJc{z^{ zzDq4l%~Q8<`|{XjR~(<;f=RrrGj$b#j{aT_f4b2ADR7Xz@meCVU!87& zmDQ|CD=tH*>%yGebuz1$D-F*+hPQV&;J{trel4Vx20*y*)$Q+9%>#+=g8Kak9}-CBOM8s5L59Mt)7!;nRvpBkNcRi=IG17Q)HS zC1OeaDW(S!JGrf6yjf^ArGGkUsb^{K_rbm7(}b*OS7;Wi&sj zt(y5s&p5A2tKt;(D1>clySC}t1)X=Ay9@7ld^Voe-ov8NQFt)enhX?y4k{qCTAFAQ zo8S6BCP%{et2W8xgZ>$mn5)xY$Id^4quH(JYSFt_SKO{^=cmqU>ar6(k1<%Z^Qg8l zDxs15nj+qBazUyjzxQKy@v_|W7leMF?sz@L4d7si~a{iXUvM>T%lwDTC|eg=P7ESuxeOfjDz7yp3>KgWu3 z=Ci^2_4X@Xz}@e{=}uEY4{=cbPH+PjdYgk^54ey{lHoTFLMXNQ>xD6yEoIjE~sO)!mjUo6Pj8L!t0y z|D)=-qZNNj9V~)GM^xzBQFHy|%P0fCBuyr7ae-2>vXIrL;O1>;)-CZU4(3 z>S0$=_-63&M8TvJu5zp^E=4ET;>nJn{lh-t+mPXi$c1+uRHTi5r%Y&6__#wqJf^~T zm{7O1_hEv)7U3zJ_wa&Uj#v)4e%1xDiS`X1N>};yPkaPrcNC(GvL^Mg&y6Pb+i|$h zI3ks;$sEk70-T=c8b7wntG4^U$Zc-u-YO;4P5RfICv{>a_n`;h;I(M48OTG_NF^OB z?A5O43a{!N+4aT#iL}_+Fn2f|m;BhS(JuJbZhWjGU+x`DGDL1Yy>N&h@})d!BO^ZN z8~4F}7RjuaoUH^$@Ecb-U(~{vC^L!r)>znIyc;rq**I2&Dr$i%#ORj5=5tw>-88@}xPMpp z+>gg$@(g1S={m(}ng6hbZ>WYAqMixETLHf=M5CN-fV>)s%WsB6pL5&#a{<1!BH@{` z)evZqtNTZWh5Qv9)b?T<9iG6vBqaLhmf|-rfK@0Qmw~ARcc@o|p zdRiaYqG7+tVmAz%wVtgy34x1J0Ud0O-Cf;}HYyH6=P9C+6{cyDoB7U4|p8?V9m>^zpon`nbeeJX;H$Ku2IB0JURA^mM=tU&C3Tq7GC`jPK*o5MXYUL8{y3yW%6ldkmT zUcTi?&iz9DI7_t9QD0ced9L$&Yts}`4!4%0?dAy+%k5l&+FYMm+|2axIga?&%8!v> z9o=CImAB0f(r2N?rx0bmr?mRob<){&PB9NDnV8LG3QrK`*5|&`x!cSC=4zpzUY7y( zuEChwo5kh#(?eCl0!QcI3w}snZsB=78HL@EVLxCCoo+A%a+90hOUHW6UXm;ENBn$K zPb@4A9N5gbE#)yAgMAPenx=Xts=e@Ci?y^^9}av_v?J`?NskBhpr_uJU#aPiq7Z!? zZ?K_WzXcQOi3!bdZ@aAKyI52~D>*wJ-aRzhYJNsH=1bf*_v)-0haLSaF4ek9f2=J6 ze{ctfa(@oE%4_j)u5X~Y-KPDH__sZ9A-C(?rN*yV&G%u~CG|a!ig?1=(s)x)E_ZS< zzSLae3s1Y{a&P7M)=l_)Q>=A!T*^PD_|(YSV3$F35C zD>%dN(d(ul`=N6MS+W4G%;40X^UP`!onVrVdfrb?u}iO1>-w^3f6OaEm$(U#6JP2YN;Xw%LaxX?WBxG13({)Q+Y=zmjS(e!vqe5Q>v z&P~qEVzk^lde%g-4quz!X;u2G^Cfcm8BR}Eo!nbD?Ru<;uT6E#Xc4R=g@-}eb@Hh) zXXiG4IZ5RO2Xv#I3{7P8T9dYk{Gi@=`aqrkO@725s;M{Uv6oI)RwkZ-n4@TlPaU~O zXB~tU{DqZHj7MDf&*|^$>il&$8=f?|mq$|=Bl&~YY_Af&g9~B*=wq((N^;eOZ$~{Z zv(BsWccE+wtf33dGf#g^&zHD_M};q~^p0iKpF44PM&eR0tAx9G$W3+fl~$&_-Jn03 zcRYYiwRd+{Zhkl_=VFSo=QIG`oi1o z=gZ0>I!kzGR0*#A>G)JS?t*@Nl6wCV3O-9wd_keiH#f(V&R>DADAQF ziMqMB3Tkbd)%;Q4>Xf)@t{C3aoGLz;e!osnKj7HFf*<6ohWFk*fpLEl&j`7u;(1FG ztDUbCm#hvX%IevQM$t)(sH!*ZOx1bX@<9soP;1D^hW0sCqYF|et#Nf(tj;q!?Mw0R z&G5=Y%tEfPIfpn*5wE+?4dw^yqdM4Z3Le)7I#$}Ghm*EjojTC(C%Q6={?h?-2s`#h zig+9GyXZ>G>B@^J@n7N%+}o%4Ngtf(S+mQPRCQT%nCXz`9u+%OShn~G{3m=x{98Xi&zcO=FaL_YhASQ8Ew`ow6J}puLh11;_7P6yXsdEqE)|tu z|GKA7_43!@dcf%-GGzkv>te@6YE?5E@7|{Whwo)KghkonEA)dI^6E2~a8S&@cHCn! zWe-042bc3`ytg|Wi8r@}x5G{NLXC$nA$(%5z-Zm46aMwH^Y(#AS7TG7JoxONrh+AD z>QYH1xjgra_;213xYYct7*yVc)m)dymCX`9vIlqqE;S$4K4m9+Z|K}i1=NIKgVpZO zt}`pl+=by>ghG2Lri=JSagO4n5IC^lF@AR*QQIzCf<{XudUJ6~*&Q-LF3!?D=IX0c z;n*8G?A6!^oqTWfd~#};!_KByF7a9qjIw?%={FZ71I9(n?c;m)tMWQaZ+2t^i7rN;gM5U3{SK6W**CSL-|Ql`ZxeEU{xLpa1{!yuFIa?5(OQD9#ZHlgKP8VJHk~ zAb$He2Av(XRVCaHwP!?`sMG2g&dvCT%MO zBNgz=@I}rn*v%4qfKSkh;TfYny5uBSG~Pcc-D`M0X%Kg{sO(MHSx_l?N9Y)53(rm$ z#olJZ+0@ZIH89NGeTc#J(!bKer%^gyetM;bDtH;Oif;yB&63l+K#SpR4ZJ z6TFS_BC*_j>$E3EtLQar<85@Uld`M4wM>G19qfeoNJprm!yQr!?>S<=dbk^!)x$k= z(MQ`&K(olq_h4Bgb$5g(ctyA9j_0S4&8M*1`FQPN)f1kxe@_KH&AUm%WqV0Zu7R1W z>Fj$G^SCLg;w@!xis%}*a$IsGlB{H3757V22!@BJi#yYh+imtetLpw!uig1Q;R%wo z9KNi4k)ygu3ml*lwlP=z?1@Np6adK zjgLhAFBulTm~lze!V_Xk{M#LTW4!K@TdmBB=cVRe!QmPuzo)W0r|yLKjFnF*^zxl@ z>oGj)T^Sa^i~oPm^>B#%obGr+h0l^Hk6`*+smt$SW;6Y@0tcYGTFr;yhYsquasCX3Ujv}uoAlXE%;6s~xEv2}HZPyJZXZl_ z^>C4@IL<97rfcPce&ck!F8Ka+czY*S8XHWfV@$@Ts>rTyX}kCMQ(0m3B*-w+lL%Qj z$ho7v^vm~7sP zgFhc9_F2yraH3T_a=s(}Ou(ncK-jJ@GweN>rTU)293G-O_ERHe>~5=Re{?A>#W0%t zgqq8XqfDkHdeUb#{drs8+l^_q;v5u~6}#fEs?+aO&LrKk6#qWFkuJaeC2vQ^_2W0J zNNecOQt$bVKRYL?Mr+QZDXL?o+hp`I*<2*?y{yX@U#-(OhR;WFqTp}L!rt=8)lbbF zKh(t^5ar68!2`PF2F&W5EDv85=uI;o!t%q@2upYe2e=d+WXZ*-BHwqLsmn?;p0RMK z4Rok%XGCp${g^%d)3J*yB5+;)=XAvfG2!c&)E+LyC5(M67p#^qQjL^n>)?EA89fsc z{AcZEVnxj{fU~jBA>~zjd;W?Ny^y{Fh>8HjN?P zzxdcA6xSr`U?$gpnd&}EF|DCp8_Ta<<~-rKq35FT^`x^fVTRS;CP#A9z~6G~YRZup z+|dI4agr?SBZlMcSWeiL)t;vN);bPxonbHc8qV_vFt!E0#}yK@4EBl~!e+~O{$wYQ z^%Ae;o@7qCPQ8_i6%y@>)KV&#?G3zoTu*2E#+{`|+Rv*?Mb(wy?u~FgZDM!Dikboz zj2%glMZ{0R^C>vU=BRtTwCp&gpSI#q43wGw*%{M^OV?fpxhk(xV;M6c^FE%)1FE-( zJ(+9ea&;?t+Md@1P&oxXu^7I7i>IfJHmS~;RD9i7NvQV|4*VW`y%9AriK>bV^`<7~ z;3@CAv+$*}<+350uGm3-ykn0;Pa5qI$MaL`@wh6!NGFZ-6wfX_V5WY2i-+(c_S;fM zY=Cp$sL~FqV1`vJqPEXRWpwII_Ix+NU$-SsYXS*(-xcW|}Kc3`i^D_>6BNmNPNiZ9>B z!YU`W$;Wm$?9o_ueQ}5Vr!VRPm35msTsqIr#78Cm;tTbqH8bMq_ayZ;JuC)Ux8jt~ zMVn)fy07+l_8us*ns@xBN^2}b_EW0wn-tujT)vgV&){CaQghvOshhY#mguye__~@o z8GC~oI2Ju=Qj@`5eMy7wNF=!M=d9_!vhljw3}5LyFAH1Kat;08clhuznRC(9rIUX9 z4|nw(_iLK!3~zUzqcb0)*zVD7viN6>JPB_|TxvQ|8AHEpesaK0ihJ>ymEwKK6!9+a z2Q5VpWREX}Jvk|YwVoZ>;(BkG!Vbj}BE4u?yr??+i2i#^m31-U93D?;mL1;t{H$IU z@~XE!x=Tkr%Xj%Ps%IuW&lUDc{A*vu{Yis$-zUs!c0sH+%r~#mi~B`8ZERDD%(84B z4RTRVZn7J6HLQC`CLT)^OWNoOVG+UKyn)Shd8+J~?%I}OzkTF>VF>XH3~y%rQ>mCA zHxN_l}J3otEO78e9cr{Z5Ht{nSIc64jD7@F8s~vH( zb;EUf%WwXSFk`+CX8puT4`0V!Mjw621$mWbe;*Fl#e35vzJvzbxe{S_>|FY0JTGuQ zMK%{#Fgddaz5#Z3DBc3^Ntv__9@mHbxf4I|uV(1#IpJfzXovIkP^T9#ne(1A`q)h3 zGu$qtp4$MEc{1rb29)2A==>$zTtc6g`nNN zN$1qe5Gvpfw(=bm=^DG1;!$1ZoC@!z3cA9P6Zlphs_QLGW-*6)7@b+v&V}>wUVQXv zGP0?;-)2Ak97giHeG*~%mC;HT5wm+J*^-#d)#T^+$3U&{h1+@<*EC)2Yf(NyP3?nS z-}w7I9&R)2?nAS}YS8~X9HA+Oo=1h&gFYW)9tEPca->cyuU<1rHcxf0_v#pdrF~9; zzo@VM<4Q{>mcaFu{_BJBhS3FYB{*sy%vjx~A|%-+4%;!=#`t6>bJ%@2`GQ0)%=J_5 z)j4?kl=HQ--lO%;gH*#(p5EK)`?2U17_&CnU3e5mHj~9+$I3>>zr%%k4{Q7YZmhL> zt+2R#InQvxz*wC)W{IKK`4)t|cJdZkS$2nPVE$@z|tIn_7({$K>%h?)Z z%J<2mi5O@#EO!bGy*63bKAqSce~y!W!JI#BbV`+Wqu~}f?pUl5wy_T%Sq$$^z__Z^ z@HftvC1K|f-ntr!-bHf^QKO?cu>KEg7%wh4ToFNE$;9^JoqtdeMPsQ&4<0pja|nns6%JgwvV?PHlL0@oeEjsqQCd6 zx$w+;HXNXfUi&9(eoeP2l9W4Xl4}ib1T$gcErc&1Uy#E;sGY@JrRS-zk^1PqsFoQ) z99rFL_jR|#WUHSp@r~RmDB^dl$=w{;A6;8E>M;iWI&h%x$jV|m*%A?W%S5TM{A!2U zr%E(4Tj*@J(7R%H7~^eY74y69@Rp-NA{X8qx8IB)6*Qiv+Z0Ib!}c1%^3%9qiRdQ2 z+R0IM?Q|LD-?Pz+eQ=T(tUQY;^w8_8yT)p|;%56t&Y9+yhYZ=o;U?Vrob#Jazk68> z0-7|ZD({$qbQSCHCW~73Fr4LHm9Psfu)BnwAHKpGJk>*(Ol?=cIm+nXe#GKGz)Zfu zu^U>+A36C=MQ#dSQV@ncBwOx<&}V7)a&mkPrP2!u#YC$wR66;sg>0aESja;7ME*^D__wr&}dn*4GZpKwr z@Mo+fJP&Uu{xkVGueLBYZ_=Oeax#`yI-U`q32&C%fK!KWZtQV)Suvc!w8}%KLf`Oc z2Ev8myo`P#QJr)06{q}vbkXbl(Z3xL-qJnUZ%AbqQ9qrrg0qD$@jMA#*O_{)Q?Kjz z1Eo1-_t2W5w*Lo(!qZfnRl<>2SI*8&e4z_B;(0i<*CckPdi@xht+c{dWY-w3*W=Lw z`%1$M>T0YVw(x?!Q<-O!gsT>_mK*I3n4=yV!N3%WPiUAc`e#Aea>4zrbT`Aj z?}_fG*i*R5@RqvI@Sznd?{i4q5r4|A60&e)vq!r`Av-m9zZqB!eJ)0+Y`|W#i1ZO` z;ecALmN-h8EsWo1?%0m!6vvjsd)W@*7?n5%VDeI@MDNJ;tK=dO0r4=q%C2bHrJliMBj zbX;o;v?`wV1!mb7Tb=_`VxA2jEWZ};O{PQWAN0ruB9R%Z`76ppF}AmtyQ949q8Hq2 z-$ZJ@$rH&gXHl8?w>~u+XSj@GJc?C);HXNj=LC-Uutsx69y4!xL8MCB0d!lAb+9&HVYRJ1*>OxRErM1XvA*g0&tLq3ejLnF9EXXb@D1|LnQ&zhx3Ww8Aso1~oD5%+Xdo-YyVA%)h) zJj1&jVlL#HRFz#<_533^TX^<28!hvh{XD5@sHwc(vaatV*)>3>Wi|gDZ?#hDlW(Y> zeSUr_gkEG;b2C=KN}V$SX(4wv(jXr~=Z)E2)kncQ|6~1(Mz@FLQfHd+`cdW-a{BpY0JQpjjE5D)xoy2hZTFG>}<9IIA zOel7iP7ZsTGsUOkiZ^%)DfPVE(N7|{Gu9Y)7|qo?9le8b)Kdp__{L52^J0lLc*AM? z-d4Gnn_}=jhq?oxx2O^;!YX2v72E!!=LA z&G5FoCvoKP-pnnS*!|)+-9D6(yuc%_yi+`b+-xRW!j}LK!lN!!WH6-VhFjOZEn*A9<6>FYPebh}MZC42?&C)apL#KSi+a_KJnqm-`ZeRxz=oqw*z zKhXJ#@h84g$0tSh4Yht7Q=E^N-mObUxKcmLI=3j*m7T}%%&*NehC5q+vyJ~@6=AP^ zCyb?3v?E!a#UXEagKTM6c~)-r7QG`l++Nwa6xS@zPdsmuc3OWeB+99{B115NrXrZ# z-MzyVScRYd25s|jT=Mg`w{mX2Ho?SWM#%X;%;TDM9L)X7q#NaPmG#9YGj`q)Z%++r$I>Nl;fF=#|Fxf1|JKIPN!bD5#@{?=fwGMCWBo_=f61TBZxU z-Amu~f}9;)Z4NHXG^?<0%k{6uyB748?Nma}kydd}BJ zPe^4FKT4OoqVuHEmGg@EExLS-{OX_wPvjiT;n1xXxi|E^@FvqW@q0}smgpOI;Nab+ zU;o8km#Jl=wK~HB3^hFC{im+?Ht*)VntfReR@&(yUxsXk*$H%K429lKYbtFM3kORJrW)#Z&`R<%{B)%%?9 zBmJuqzpeq-r-SH)Z*5kFgAXUOzjJ)Va#TYJ_;*G0YC(}@?ywh@*@OZr2sy7<&Hu!1 zmip|DS@q<@hd09BB~Md8z%-S|LoS531>IkNXV?s*f47fi z6n6A_w8axz%OS~wSVvs4@av~pKD#o)HjH_O7xtW$`X!=OO}S4%r3%iuiaOjQqAxn%9XdRh2%HeHtsI~|e4~Pn89_6y zHe+2wV}x(**1*6IsE7h$o-rPer=Xa-snQ3bd`Z6{Nv>trv+tLI_2JQePs@%`cLQ{y z-u`WjxG%M9vkdmJ#?Oa$MXsYSw(!S)RPk@gl_wlIT<6K-XIoj(w*HQBB-=p#qp+^0 z&iAu^a1{#fR7+QJmWe#myVT~ocoi!-Sx*m7;P-(}Lrl}MW2)z|y|C~68-3(osGA

7~Ow3V9+SpD6T&PA8$uMIQ6l@}sQ2cgMPf>F56BJ%I1w@7ts7Sn$nw zVfa_eB&9qo+hvEsefs5(es`7VqPp8A-eJE;daR;6v>A&TCZOwP&vGY;b{gzBEtWJD zzm4Lb!}#z$?*DMP-znJi(SFBgkPG2!wka@;R`O*G##tLiZ?;Mc@U$~9xuD-4_B}V_ zr*(Cemprj?K`cIzWdm^FS@y!7j5l*^C0u8;3>p%DM)d0FdjIL_3Ano%e~*N^w1^pIp_^>bbu(Vs9p=PaeZKFF596EH8|jp@ZFrseZ1K!Vays@VG{D zGbcm}D&w{+Ylk@=#sarFayg{lXJx{hlXlY!PwN7+pnP8XsXTUjn{)NHGhTD9J`lFL z9#%qj7v-CTH}X8Envd#WYsGycebOIy-ymCZ;l*dn&1++;Z;3-$E1!->a$D@f7kAoP zuPL~31vqh$(_0CTsP9RS6V_z_^mv^9`bxc(h+1>VYw&|^#a@B>XK0huF!@6quoOHh zVwRE#pMIEwmsjo0kxkvGgynkW+wQKkPMbNJ0YUqiBo~RlidC=WL{#>tqHHPP=!Nkd z@jql!f5(n?KjAAZXLZZZ{I&)5gFVZy3jW>m)a*B^?;H4A5D)y?(_|@3IzqnWcW2k| z)aw{^q^jCMfxTGZW8ApY>gZ`xgqI=bX=-l}Cb3_3cEO5{JLU`1x(T#YT9evl)YWAg z|5Kh-cC4k5p4pdTxQ81wkK)M)&H9Q#sPoe*B7<)Bib(W=fk{|YE1f-V!a7ZdZh^U+ zHCNl@xaVl@{`TfQtiztfHvgjZ@T)z#Tevhuc29)4uR?#{ z8#3KZfyKS;I@3mr#c+UQ&Tw{iN4?_hu&QFRYq1I5U@O}%epqL0#~XQp%HP7@{|TC1 zmSLIY&aZYXKE(HVS#Nj+J8tX>E6dV1sf`IV*iL+JKdh{e2`+KunOJ_c^bQ7jB#P-C zZ>pm3rOQ^bvnn*qmDo=yhOcqVmm9UQkDMa$yR-d6-E?!E*XY?d%`ej1RZ$rZJ|~J* zbj^KqS+#g>uHz(Zydw2nO|IOnHo~smu#agp^eX52M!C+~uCWF^l{vA)Z0t6cA9gc6 zEoKRK75x416y^)EvyePodg`*?zI3wi|tVgGLx8r_)AzMg4lLn0&3PD&LZyMO^7}PsU^x#paGH z%_G=DSHBmp$eY{jI*ZAeu&@8I5x~s{U%pu(TLtcg*gRjN2M7r2EZ;2;mzNS7X_sd>Z}i01vnjd`XYV50|4; zFy8JM%%|SZw%;4z!}rl%paF(r6VEzgb8Iw@JXya!9xLK(`=h*a|3^OJNB*?ICi^rxm~E}S@zC7053esN9V z8@fMXXjeHBS7Udnh_6&`+@17^XXT>zrvVCC&HHrD-n!ThdvUsQ$AV5-%O%a}h~Vo! z2II2ZBR&%9eW?m(CGQ=nzU**eD6RCM{^bJUH1@9?A z@!yPx_o}xSjdrrFU}8NLkcXrGBgUUe)EBwNqPWZfQ-f+WTn_)=J67ha_~UfkOX9W} z_brUsy$9td>UH7i^<&iO9Op}qZ6#!Eb$l?5KG5D95yBfWyTXa8CimAcu3?b;DBWI3 z6+MO%e1lUA!X)#llA zAbjN{d{JUAWE>N3Ewd*&R}nRIJNAdnz7EeG$DUr6wc!m{OXX)?=oh{Q(h4&?;ruCua;CpE z%0bx{$3M^O(kESMD;=o4xJ|+4+whgXQ2AfDzu@5=!6nm28>pN|{D#L}@yXbS`g=+I z^8+UMR!f^r&k7`;E9{cZ zXGMQDLCXqbKA@zZh8B19+s852ve0vZE_gd?Y~FCt%pe8K&8@3clV^Wp&s}6hs`z(~ z%dZ#Rjf0#`_6%NxS1F*ulh$swipXF^YVyd#6JtNo%B6McpGCQX?D`)y^)Cf+#NDNb zabxTs`j5ZY#B+lCtZA4}-1L0O0$#`}=(E6ehPPHd@7T)_CWo%wOm8{P8GI7r^*84W zySSI~HHzq(*X(sTVm7rwrNwpUd!j$!b$B!KtNKHT;T2EZZ}v0GWXvD&)-+W&@$2c@ z8^s^iIp0&ax8+zi7E zxx>sj+#u^&T`jbPz4e{(36p~%SXyyay+q9ZaK@XE>UO1k z{+8bB0<-_5$HM!kCd!yzI#nsVkj`Le|6(!ky2fgz9lt_=fiNbo8OJEA-bwE)#SyM3 zS7u@-YbnP&>S3$hborCL;68fUn^xu*=ur(jxK3+?cV$(_NGf9_4V`@@X!hso&j{_;p@NXIyzar@SZRz2Vw=@v$O%4cm_v`D=WcS~o)n4EYN7?L6S=QUT-N(_ zrKUK=TG*5&z6*O@YAsXa=j*7XEOc^Zy}O~Oq0(a5TjBh>+@%So=J$!if7n7xTymQT zce9>b?fjVFY?qxcf&i6eQkZErHuc;WuZ@8=b8lZ^(8H54`;yh`2QPmV|6FRShN}Ho z*1Um3{~LAC|4ML(?xz4pSkY9bO&`)oCGqTUF@qbNf(~*syaP6cp7@VxW|sIPDrqK+ zD4-51ncIe4DjUThGhZi#I~jgnSgeckMWhb4inl&x1=gtuM znEmRD=+4giL@{;vn68p2hw8slY2#&MNHuEB&P*UcZu;oYQrlbyZ{B+0Rfd z6`qidXOTl()5Gi5$@^lG^s!wKrZB|*8xqgpqi?n@i`Cn^l-V|O(9+KJhP4@@avMXx z6@Ka{C;C&Uoj>sdWa=soMdDM`KqQC` zfxDiLg&9>DC|aF&dn9^_!klBqQ5YKuUjllD5?DxyW>xPkoF{yXcCu;CLOiXsGY98; zJ>@@Ic9wLWR$}n9`hAKTe_w})==3e3a96Ywy8K1m=7Uj(aM$kUcU48|eciU6T7R9d zQ5veN(HI;gkI2l+d#iJzWv19f0(eV-OXLorq zR?qs@wWett_q+~W5lU3&jI^M$2Eo94Fy%iW;D7v((ta|9`duJv-msF{AbEIl;Jmr{ z1o?7*a#f_3*Ol#RU19bx&1C*gES)8C3j+Ig$|5}%NeE%cy${dEztV>Z> zdjU`GkDsl@d5XxftK7uAYT~AN6o4+ly{;e&M^ocxM52@|OQF{`##zho2Y=$UVuT)Vd+-JNieGBSbJ{E5@AK4T zczbV8D;~Zi@gXD|CuhP}I2-Bg=f$A7&aeu?pRgw34Nq5O*bq!_5_f*Gv;AojS4=ew zk}*g8rj{!9srUliWudh{?(X*4!#J6zRhg=qqJKXQBWhdw3fRswu5_M^=|>T-_U@c{ zc))gEYX|3=+bcaU1z)TuzK*lA1yZ89D4=c^9(MLS$%w>hC1ov zxBr?xevlvZzH2Q4W%EQo*sT7x$xN^numb5$l&J~erL1F*plF^6(+DTxPK*uQ_R6W!)A zj57ne0$+0Jl)boG^(ptx;&2s?wR4>tW25Be3NwfYox3Tmawn?mHy`Bijj_|^h`Sqt z306^mzhV+`{cAsUxX8+s)t_G%?UHy)FKi}_KGleuY_Eg03EwT;XJsGcC|87JVd}gv9%Z*T1SSd{3ymeXm0( zvez)PaU8S~Rv@Dq&%+@otUI*Cd8Ueb5{7k^ru@kIg)gbTg$Y)-O5^FppQEfYu`}%Y z%l?|$v}SkpmpO3^ldr+wd?0?zPu4Xn{u2tOhft5Ijs{lvRMbSSgf~6c)6vIyQ^ofj zgI(BR4%3z8`gp|EpM?!9fK6dnZy7l8k^0N7a<9an#gSW>Oi#n#zR) zkEFW**Q(mO0L-_)k1lDXmF`ADrMpE5L8Wa32?4n%wuFL;grXoI2uLcefRrdoBP}3} zgoM)k?>hf;9=+;ipS|{)bB;0QSZlAH3p4bEYK6qVB!2#s!*GXIdQa?1!ZzqTOn|$oXx1A#j#_j_8PC^&Ciq4lRzX&O>}m4j zzB~~7Fa6O1*R7=g&+vuQamtR^mDAomi}`z3Bi_%6ECHEr&{Dyj4ZEWn>5aqL?zdxe zWLbWlT2V84G2UMHR#UEYz!0Sp+u{5ooH>ab(vhn%%-eu3s`(s#M|uh*qvwB1XR$p*N(XkwLW&K;izOM)|TT_?4QuOGv;P0dm#tl5Zz@++;h4~M<3lI}^&v1?)$ z$KrwbBr6C%%9cuW>qVLUAs4N(+M0~r7DTml)0yC3DSy4IPkqb$to8O$SDN5&+AWWt z3u>XfnGO5?>WljdBdtXDt+mqs0w(%Y1y)I_%Yl;nc-w-UEc&NNo*4Xo?j zh5BQ4TDk2H_&|0J6pI{ojy)9{jREsfPi?7?ksSJ$Db~|wv@7@J6&w-1KJ&2{md6oK zV8B{b)**Xz8``On+`n~`x6?6vOYTxCv$Dv(%e5jHQ%SRpVx&xaz-nAhJwrp>{=Sh8 z#BW#q`+GX$PjEwfYe!q{o9SoYxt;F3mo`ZpUmzZK)TNSd;Z*Gfm^bwPJ>2g%J$eHw zB=mj{)2t0KV1~qaiZ1MEtf0dw?Ox%F(wpSle`>y_>fNFOXWEZ-99~yddmrG>u>R0Q z-JXL$L!j+>-PCCeol}lpkL7jU5IG;tz7J;u=hd5*5WP zrpxwF$$6pvJZ|e|eMJ-No6W?pj*jIEyDxGjMnn3ge%8tBG|?z5b~N^=96L+7u8lbZ zj&dj%zZ6xoM)nLn*ihZ3@fP+0mHRHt>@NGm`;TF5?K;2UA&g&Db`Q5B@)7y*H?@10 z_tqJYJx5V|p>wUmkNgwgU7`wBQfDzb@>jT6SgtLTZD;I8*=R*II6dK88mo=?2Ri;6 zZt_C4ls|fxH`teYIgDSzuFslSVyB<~qGB>6h4CHozcZ=4YdG+bEPfd7wN??!vGiwL zhL)Z&zYz?EXjSyTO{~}!P!A(z*=~$jPZY;^LyHvV=NyVU zL&K%`I<=>pmq?!cJsJ9fp7ErS4spMv^@%7B_@5amI0o!%THD z%PVycZ6L!w44R&w*huB)NrW#w_oI6=(&jy6_Fc>n_6FUMZ#!Mvm7DSt?Jy7v29|hD z<%T`^HO$NivwXkR?G4mOE-RzoXqxp((Cb%UzQh8eTRpU*Y;Y>My8+ z!McGn9IeqZ?W&(}dhP`{HBs)pfLl&+T;tJB5x5`bhqEGfxo^Lu4zLRL89~Qq_FS*o znHNrcZIbw0=TTYQuj7%|Wp((%&p)zdht-k-yp%~+0(0?T!h29v@NO41*a5oLNbJ%l z-4drku)Q9}{t7-#b8T`XZw_~Yr~IaQIR;^-=p8?zwXf+yN9ZWK`i)`N`KM+ld?Df% zJRF|1Q{_Yd&HH{yYuoE-giVQx$uGjhML1$M{Wcw=wSwF=u~1)(HUTenrMLd&73Jj$ zEssA2%N|n?)kMBj;%D=cO&6HJFV9o;dt(v)ds5}5)m2o1X%)=gY-pbo?)Ep*KCZef znhSNEop>8R%h92#wT3!8YhJ7Rr?J>EqNm3uY1jyN4x}uW>IyPa_9I|cKeM_)hIG)W zT!+57=%@ZV(ZzcB4D`=d?<>}!CBqwAXRSSE(EI;vX8Pi$PjK!|s=gDQwk^p`X{Fab zs@DrA!hMH#3#o;nqF9YCe1+3h9ZqJBZ-+D0;QbJFk({4>O+8|HgodS~o0xvz)$d_2a zGp=gqMlaR(k9?_13x#*#Ue`~Im-B^_IHW$TpUefV>FWE`?-knZZ!Gc_yle+m)`>f`HrzJaQ>3TBxMMZ=pe7ii3}(BdY1o+DmQiNg)*E~_dI@5GJ4*Bw>+ zHf~CGDs3&zJf5;lhLFBb zv)1X3%hL>cf_ts5R8qT>oJZD3uiH%=s+*O$4!g`nr19e&8He$SUV;Wze( zPuH&$mnp5?_p15K&E2?#0TX=eMQ~}TI21N3U5vGzCmbHHshfz$$NTdactj`d?Ay$* zxEu@LXuKq2GA7MSKl$<;=ccJh7IVLM#QkT_KV992vxdXzDGiM{ufI>VbF>`neIKUf zQR`Fr!Wn4Tdb0E`?Q~UMPog}&!xejVS<}IEk(%2ku@Onmuvanp94h)2%MXRlE}o$1eFkiKfP*c)-<4YzP-BG>Aiwg zuy;AkEaUyc49Pdz{k9F#?Kb*y{FpQ<@G69;qQ`m%R=kT*mrx`TFYOzv5Z7VwWpB{e zqJz@X%+=vcA&%yFn&*u89WXPM%+tM;#?ziJyUy=*b#uX*Wp3A$;NE4C6f7UM! z#Ip~}?-TOn0nd95htD(4`c^OQ!{@LPLt}VtIbHb` zEmMO-(#21BC+j5tCwvp>Kf3~(Cobu`8sg8}b~*)3QqbK}@MW^df^D(%uGvU&wKvMC zG*^9&!`E`VrCQo8-@|vUe#S#R@ya&q@b6-@uf^m4)mlGeEemJzdQlI?Xw%@IP9nJ(kG`dygAI3yeL(HTS8bo4S_o z)x&X2U&3$sKp*_4x#`MRJPd2beu$<5nuEW=9XuLYykR@E(KQQ7E zo#>+YtGeAE?J8I#w@O2&6ZF9_okmZ_)*d0BRaFC(p?)WVmW z*YR@7LtQS z9*fNAB3#i~^oAtu?Q2YnzQBk5C~+S0+=Y8%Wk-8RS{k}kf#3t_gCFUxyHQ0P6x^`C zxPK`){AHlwChMk+IS&)f=wPZTyk)bQ_mCGWmZnZ7>O$U=FX_2j<@oh`xwqeP?w`@Y zl(NSmm65KLk*~RSo|BWpnG#dQXR(oFmy7FU>1K+w6;Eb5jei(()|7z{!`K+hB z?QVBt6~%6pE@ZYn6?OcnZ`EB!_)?S~{*Nwih0dfAbXrf1mcwEJJJ-q4e`9&%UKel4 zWmh*l)nE8p51+*Kv;;Fs=}Df&Tf&(XDpQx0~^ zf-W@B=Nts5uUSKE#XEYFyS>AXp$8!NKfLF@T!Ky_-i&6>7Hw8hXYuD7s&EB;|E%ZB ztX^ZH{w2j$0ou2dwew-(L-8K!ysWER>wAANKjFQ|>9X_->S;B^eu$n(rzT#(p!xI@ z6-4h@7h%CBKjWPz9;JBj`u_SWx9%>X=>>P-U#1j z=hJ_UU6S!vdSQx`>Lv33w@)0UWWuS?EfQPpx*QLK2b#~S*ypnOsidab;l(mkVqu89 zBFgVs#u{mU72i{CJ}i<2jC5Dho{Cab*E-Q?gqwo8dl6>0fUW;T?eu;hs*0QOH+3)5 zAVpV*(aRhi&`JKs7yg%5R4_V1r9Dd752KutQ#fB>`uFUB?BeQbs$qw_KA6}n*AH>l z%IZUUo6D^7G8x5o%^s>Do^-X!EspgrLc_|c=YMMHJNGM*_=zfNqAu=GKjEDFtgy6% znY|_B8ql!oWcMZLJybnaguM4~EV4n1oTB&yRe8pBooR$z?zRQy-^FMZWoc*EejnY> zTZvP#;Z*5Dyoc(t^K6~w}2y2klMWY|wPn8(v2~)&Z%Cb;{ z*=5?j+|_R>#O&^Oi(`DnmG9u)PAc#otAgP@w%f*#A2-d0DR#B1qIsV1GNwOoUYo+F z%ev(}dd&qGw1rH~>M6TnsEOjRUCl3*A$6@q&g0B9R7d5k{FD*Ll~Hc13=h&E2lQz# znw=|9H6_pZReeY}QEilY$s8?pjK5cf2A) z&r|c|xB%h1HVKTlHEG9Rak;*N#t;4Z&saA-bFRRne82>f*DJv><+-avCbd&qFPFi*ApoZ?pz`+SzZR}M< zaJN5IPM)2Xn}6fc@J?=JnLf~b{i2tAKWT0Lq|UI7_|1f;>r`(;>|4ehKq{njX5vFnC%uwK&S> zPt>CJR^ha=Vt5|~98dht9lBV1qhgOVL)UeZKg*y%6|{@#q07n!~=>Y9$LrfOYhCvtl1ay6;5{7JW*D}EAY z4xvj<%b2&UFxB;L%yg9zPA4BF6YoZKoR^eA#@temsa3@to#bP>v~9BSEh9UZq=Npy z6yrEo>uCK6p8brxX&}FELU3uKgSlX?CQ?ulrMDX2wuTien z-SH-SM8o&|X7a~&;-_}jGAr`ZDw?0(@+FLPajda53n%tKk}NdAPWPDSCsK#uWZ#LH z@Ce>o0WVr$i}2m1)ZD1~FcgJl}K|2C|=fe*c^&Bd{gv#h-ZdZ81os`)EZ2P$E%;mlZxN8GMXS19M zU14%sZM{5eZeDV`u4oeG_m5ZR&1H-46~(eNdQCs!Jm;}0B7D8Am)Xq6F(#|T$1p<(l@mFTx0y+ zbx+EgIXtpj?)5T^ECzArV9`$@=MHPw;hfUPWLxO&CP1Gvvi}u~^pu$|1%c~BtKi2i zgIkB9I7GR|Dak3XYs>CViMukUoBvuuFEUNHRm@%5LhpO|R$-6Z82TdY-Aks*!~0D4 zLZ&LZtyj58E7i%re4@paUif z9G+&X8cvM~^Xo23avr}`_xErwhMV=`kTfHOPy*WLlyALswTq*)p5-NxxM*Fg9Y=Nm zlq#S26P|aXI?rLEqVCWXY7}%;GXMObiWsE|lZ&A@{pD#kdG->XS!+l86P)90@uR%e znZ`N{?mh=i|1~eIb%p1mgpT70)znV5g>$Iqb3514m)m)k4@0hmeH!7LJ(prF+_O4| zB@OQH&zGwRQ^x9*LhU{&7K3rr6IA{HSb9o-^oA%F*ZW>EqdD=^f3bqDi}MUVmEZkn zp>f>G9@wyvEPunbYbd?@;Zy-k6Z(-`u|{}sjLHh%LQ5^H-l4v}glsFFUbZG_Urs9y z_k~NSfAIG7xnkWI&vf%DLh-ndL*CI&i?Mo} zR+K`$_%cc_g?TBZmX714O;#pz>ta8Jc}vCdeJGq4?r!s}o80kVGcy*-{-fT;$*^#; z`yMXanpj*_)m9}R$ej9cY$mPnCkG;}$j1`<>7Xa5wi9yeIaQEe9p#R8@dplJ{bq1& zj7~OLlGeYbPj9LpdEDIYwWp;Ib$Q*JT;YwZ8nQFIgRoBq+>W(z-E(*=d?RWh&ua(9 zzQ|GP?4IAt&kXilob>6Jcsq4Fo*?L2VHCBs*4$dUIFPY(I)#1k? z{|;trX(e^L75f}&x0T;eomU?hiz#+pWVCByvYN`GcbZ|{=Phnaayw~P%I`|vJsK|8 z8u0jD_LNVDcvBZDd==W`+OHSzuQdzejNA11m8N&{RQf8?f zAGsa%T!7k6L1DC(HCrKYjd&)#;g7Uy5tUospG~Ef_FI=}o`eNEcu8%jrkrZG1x?cz zir$;p2!a3hY<9%KRmY~q%}NuInWHX#(5+8&ubfynyOo&Q z5H6KDeL1O*O=(^1WwTi0M-U$WrBCvn;pnYJA&ccp2*(tC^yLz}iu&``>iY8;)JAw?{%zggG%9#Jr)(`{ znhxKO#W2-HaGe=$0x#xL6gkyEdT#zS;08t2CUMsRC>92L7hn z?odO!lU5N1>eW)~0BhsJ$>#H}-FA5r7p>vXl}F8W_+L{#9gX%L&qvNvi?7jDKkK+d zrhSZEvcjjJyVtqbNE)ZH)$aWi-G?%~ju?g$sMB%StE;9NIIS>*`pTQ-mua@Lv~xaL zu*AGnS4)%i_l4BNC20Q>clDGWF|B*PCAQbq;AoodB>$rkwbzicNu&0c@H>y`1YXmP zmc=yNtjR33_HeIAR)=j1IIO)z|9xChhSM^d19Dl$&M}Ur~0z8uiOqOJS)oWULUKaQM~+` zvig4cazVyy&=qB*y1$oavmksmYW5bFWrSI&3+vX~`|})6{W=C6Y(L)yswIy`(`KktZ<9d7e`8?MUk+Sd**G;kx`q(ZjsIr=WHL-Ro-{tp17pBGKMHj=V|Aq=vg>@svMsPJVOcx0pB1 zC;r<#w^~PE&S`tZ>TMQY@G)G!#awigEq8dNqoLEzSY7uiE&9`;(>s{y2lJ90g7$&; zVJCJ$c=!p{-s0IlR^tyFWpISj!_)8$&;RKUGV2WA;pAM5zo-VABzb$uaZ@)M;SJeY zgTtOD+QLg%Vx=RwEH4F<&v~0<9t{0iNAi|VWGE%`8=PwdC2v#PwK)ML)l!-$e6KaL z%nR?_e?teoB3>2X(Ozg@n<8x^w_E7$&U^Z)GWtyHZNBOXYrd21yf|-%UvI9>4j$A~ z;!xTOP8&1Y6cdIoa}B5Pe}W5xDfInTw8v6gi(%7Vl{hQP7H8_7iy7-l!@=vk^Ecrt`U@BF@DI=|o=;<2TGo23qY6JaGw+?ex5p^&vCla3>X) zj+@XY_O6wKL$0nRE(4;Hb}t=NMY-|O2yan;O&uP?r=9gMIpUw2m%q(noU*v=PG@5o zjNuK4U5e*%&HJ~bT=ze#2JgwU@V(0+y2|wP2`?Way%B&LAmYO zzll?7s`S>PH`STmkC~6~?tO9kbQq_jUy?_1gWejeSDNP9Jc%Rl^lJ<;0e(#}wrzUB zmoeZ-`#I}DsV!KnKJ5HU)H~@4Ci*L!@Hs7B)Qs#k#%dV;hS<1|EO}wKX zWES6Hitb{K{}PLLg_t$4YnEt4tbp%|Pmetd^?PFO&!UmK^4xOjWc&s0!>77}cAV`~ zQLT8v_zB8w885NBGMSqpGC!~ltH-wxWxZ+R4N@vQ!UofCEB#YJgZ(z?b|t_D|MbvKXal+a;a zi;d^3pr&sZ=!Is_=57%Y<3J;c$1=lZ72B^tpQ!42@C3N63d3jbF;|0cBWMe1oU>?_Besw2p+nYqm#d>mxH60CszwQvr~4mKL+>W8@SFzf;Y;fN4@3V3 z(K@sFF2%XTjC3+T_rtK=)(Hlw*FUWi^~TN_t=r`0Rm@dAD`D|d=AoR~9H#&K+ia%i z8>GQtJ4F3`Ysy>gi)rp;sg|&z7`NdoY*4L1 zo>(sI(7EB1&l_~<>vE+s{0m%4ZJ)d_K_?r zDdx>6-|JB?G2R4S{*AYgG3C|KH!8iMr(4ARs7mGR(=&VrZJ+k{1nh3(ulahvQCQ(# zIo%gC{O&ootG(bEzpJAjr)KNp%PQFUL@YIh^sP!rX`DT*ex#x}pYYQYy4-IzKNb0i zl6&9N-NCD~ypMV+meU$w;*6La&_F$O#c=zjgsrc*Ay^LHd zX=e7TrAoTR4`j6I+=?xi`OP{gQuBeq}W;-RZ%WjtfvZa7o8H>eNVWZNb zUR+PKjr($MJgkyGsB)^SqEDR*KS1qXiB+-dWUl_LHCEpb1&dKsZ}Cu%^Ct=?X26N1 z)aIwMI2m{0JuEiKb$4)jZP>UIy41(V2h7SNe1h)w(k-ENyC)Xn#Icm>OuzpZ-yk`j ztTRO&hir3W8EN@&w#nx>tctglzH`Uxen%><^inGWVSjK(aZVn6;L9MTy^pto0z7VY zpq!DUrRBacJIQFq(!9_gFz?H9>;ztXUw-D~^5xTmrQlDTrNk%lvi^-C3V$jrE2m>?_9=DLUoSM$byaw$;k%+=n3wfB%-+;gT1YsZ z#?1=%d+VzP+VK}Ka6S(syFdLYRo2-G@@!hIbG!oOKUn|O*q^OR(;bX`PKQ)7TjQd= zQFdPRMvAAqXA9pcdX5@zq^sRb#qXBWIg(~$n|v9o-awz{YfRiy`&sFK;gdS z`C8J|;mbN#MR%2o=xSHRK~c+PhOY5y8_BymrX}nQNHxS5g8M6^p|x#;c1+8uV=c1tH=88&6HR+>@b|e zw=v2K(NeifZ#?#?{YmsLUg-)Sb6S^gpg-AXSIn>OH;bp7lU^Q%$^Ou#d||yhH|*@J z1`mtm7XH1L|KgkW zo+Y8nsOX-rz_lug9rQ$7nY7!}gm=xtceldH&J&F^o$TC9iInmuF2ozsj*qDNIne1d z8uSc|sS0}+L&9P(H0+@KMBHzA!gtK*dvd-WHJH=-SP`{8*iM|M)Wlr9U`1WuTs~k! zeL!Zre7~Z7F3>S;vFD30yDVOw%hAZ?`NCIJ>*&M2kuj}#3+rWe5y*6iik}wyfUa0i zN0#SNtl`r3SMy7awjI^fT)ymeRVzws0UeN4w~~w6+GB^|a^uW`Js*K|Io11O4%UDA z;VPmqUL|d!^itRZJ2UF+s)sOVIDP*&vyz>@cngl7<73RUyCDmen@B4?>0)Z?VVIa&mKB5sPa5fP-&o%5JmO*Ma5P8wm|YT$Xo_$q z*8{ZHEgtI%{eD*2(^amofM=i4Ri|)SQR?Na-2+t;i*SBBm79V)Un$xlOOD90E28%! zv~LYx!p_;=P$BGJ?kLNi*6RblgiEPi`5oQ*|L6ARgMvG)9W{h_ldV}i z%BNXOOEyw{+vRKn>zn=jbf+iw&`L2FQ$qFMV{YG4?VVKUe13Dn{o1?N6=PnfvdZzv z--qzwjjDNc-670g*1VL8Ucj5Bq0+aq__h_2#c;l1dP9hks-~1b8@_nBTaM*d{av9>M!fol zZm%SN?oSHq70NC{;#W`nP&^>+6Z*dN(MFXpN3EBoC0^iU{=$2nOZRMZ;>)PS7AW6W zzU`pyr%}pB#H}cvtR&A4h{W~SV_4-0*cnvTORk$OL&J%apP88k)>qPqM2YxE=C8IK zX@IFu=vH&cw;G4z72aoEZJ%E_vAilg>kqBdW6mnkdiwfH*|L+S|2S3@*Ix6}MqN+jC5Dy8 zCj8mS)I_GlAhUAPti3_;9;Q1t>Z7lS!yeb)jlHg0dD2yX@O{G$nAc%aJL({jc+=gk z%d)rJFIhC&eP-(8LJYIu`wgy8c7kh57IugF(^ArvLE95+r)KxtTtZwCpv2*5wa&PwENf;yszL0o`pp*-TQL3uSo55m z3U3Fm#ta)d6l27Fd#o;mPsy2XE)Mt0uIEMmaaUKDpQpur0+#Ec9%6i=QRe0UzhcqA zQ~w4%UvyP!YsCNKfX#r|Z^QajIJb4Zye1!Ez-M+Qv@oBUY3ni6 z{9M;{vCk*$4hyHL>{WTm>5ru{Woc4&uXbe>c=mmi+N#;pb~J}@WHCN zWc;|_oy#3=yVq#dw1O8_hSFU~b=QF|SH+=(dKjY~+KA-}NL4*aD}^(Y_IU^3NBkb% z(k;)i_#ZE;fL`;UTCeH}pMw*xxb8d-Yvyim$&B#5hM{KU8}qn|zmeOOA4CZlGM>*6 zPPwRPKAz{97EkQdq1B;yHbR7M5bdTOdN+^ZAEVtWyW3*1;GLCHt54AakMPw8x$^@4 z<-NMG`MRV2@+|nxJMiTiE7XN`OTmeo7nOt&$sqK-*tV{xET1@`$BB7IC9JtO=6|FS zg_E-FH#Pqkrl2EV*|BR+r7)mg^zh> zS+UM~y-Ii+<_eCe#4~7}*vvr*PX1_f&^-E{;yD*c$FT+^q8Kd3hc7K-`8)A47HRdd z+DWhRiMXfmWHq4mQV}d1&qoc;!tN=f%aHnfY>~SCKpiHd>gGex4%V0k>rtn;-wS?< z!Lwyl&3|zIeJbgMkxsMw;Tiv21{=2LOFf*l8n!gv+IJ1ACOFb(s zu#pv!$=-&Vs^=)9hMq8A;XB)tU~XR8c%sgDzMM-g^3yO`s(3i1IW1nUgDDTGqLs1x z58^R$c`;{C}NX}HpQs+xM#W!&WQc4WU5f6!V$Uw{4z%uP-4 zhHtcftCF6FX4j(gda7siDcvAoeTrhG?x6;LZ!UhKjUjr2ar z@NGAU_76Tv;hrD)X{?K140SGYL!N{uWw{z#IblOM1$E44I7@T8^{v6Q{9S7@4_mR_ zjXRTj4|$APKIiu~RyRe>=1;Kt9ojYQ(|Q}y4_AY}x(h4Hb9qWoS|6Lyk(9)bMmYtG z>@Xi&VkPvpp$pg^drG#19ZDt5-92V;HrDJ2b>EiZ-4e5@g2VPGomMx=qESYfpe!B` z$;>KZA&(*K$sO+bn)AP=K&5MX-DNuSN8<-E!K0qB9ySZ_X`YWY^K>8i2`fN-)$D#Q zLpP_HruXLSBZ+@-^iLSDZG2{Q1V10-d)=l!cgdMTICw6c$ZSu|IcyY8sI1N_7~u&Y z#A6R*hrg&7-;u^eH_c;xcz9aIw6WiRHI6KK$Y^BMU1zj>NN zzO4H-zx-cgouUeJ!od?!F<4R!ljIhG)~>G2eR~L^WsWbAhx2r)v1owRk+*rg@2jG$ zbXQ|YF$xa;lC)Z17_*dALzk)RPvQmXf|v2p9qjizWQs(;2{+|LtXuS_*iGk@f2i8h z@gk3M(27y5OQ8S%Ji|L00hc>=*!IkP`U)Cu2HN$s5o5|0#>TtQ=<7+r{)+UVmBOUpK zF5o$ubtX*hAkXsZ#{QGbXJQq2r3dsZTl6|3q5L{|n+_6YrCP4Z(HvB3I5n~q@3fk@ z-_kcWlrcL!-FRzizge+L0Rvt%n;rRCU#h=)u=h)=ISrE(#c2F6RbP@*B*NRrOK5{1 zjByE08co+Fmx*udX)d{LxP3(7?Yr!Wb0XS`Y8?fIDvCl{@#|%Mc`bIygp=OmzofTE zWj^ha1E;)2`Mi#Kt0cWKFiL)omY*f$NnxvGi#=Z)|2<*87OTKX`i^{1qOaBL-6EgX zn=mbPlB2MERbRILT;!XYnO?qvTL;E`q;99_Snfo_Fkoq8ykI|lUOf0$ycZtJVrEvF zmnCL06FjQ{YnHfY9_wc5Jx5o$@jr1N4(A8+=CA1>!*{i&$h1A?y)1NyRPa^R`zI|^ z)4Iu|=s3l@S_Jbz(3hdo2=$be#~aqUc3Qc}4b3(svEETnSHm2)FkhLu#=ZUKrMM+E zg&n?>nJIBto;~9KIZD?KG^cfOUk7?1LHG8gGiK|nO2@N{;Bo?Qz?jl-r?a`I=Y1oEwrI1MZR6cYQ;$P^_i(mGSms59DU9qkVdFT_565%(mY* zIn-Uty_s*Vc`~jpM{9kqjwbj!C&DtMn7(YbQK7p3)xZx+0WoI}9@dSNx^F z3-78_jK2>H!`^`6vg~^7ef_|HvCp8zkCfq-sIDl~HKWyVS(wxF5VSB&I2jvMiuM`b z0JU(=b2e8|sod)K+`$D2ZSew5fwQHJj+%)^4csI6<*<#T_oCIk-7PxyjtLfkh*S>XCiJ$yU$u#sYZ zJQ4PoFVHa$fE6DmRl=572FgA>>1ciKgSyU?p8gl!#-?~zYil<+6ovVNXJEh)jNLw7 zDE<+)?1@DuM%~SBa+NjR)8$szosDRfKBBss2+rAWMlen7J_SRA6CKI5bULj4F!XI* zd`r$$_|9foBTB~yYfP6v2iL-PRPISU10~~JyKmg>U-7#gtD^qTz|+5CkEo>PDxy7A zaggF#==p|;-f9){w){&G9}Z#CyVu|9ccWRk7z_LATIxkFa6tP)q60d}W`26gw6LS) zEQQ&O&-9(jc}ope@pPH|y%y%|DdTTMh25{7+-~4Rn?Lz5&lqiQ9>6!|a~)itDZd+8 zg&6Oi_i_w#N0U_JORhV}Q`)8uZ^S<}*0xpz`ciIV^m!%Y{ZvFa@23uId(}Hodt;qM z;VNGJTPHCEbA~e?R&dYr(p+T{6U}Duc5=oiS-n4tJI|@56)GZ}df3{kY8LvT2>#qi z1GO>Ak~+I%?*Fotl39Ak=6)WMr{`UHlv1dqzIxNc`)P}kaBaJ+c?hpOh(FIz8lUKR z{b-`}Di_SZC8{Oq?D6*Ub;T}+ zt;>8OH`CFw$whOans{Ff_S*CNyt+M0%M5kzV*dVg;t-CEtN~BU7CW9J{dhB<|D)+Ijy{14W>za!A_jfGXJw8 z+ZT_|peRF6mnsqZmsS+eAnUk2=zsqyYTo%1RMlPz;aM?T#aEtaPJWi9vnbL0oQQ?0BDwf)rVmTFCcg+iXzgT%yKS?c zFqWD>V7=p@89kw&zacKAWZTW?0X5M^9G~&V#$fuO07deXwX8JpU&XkC?ktaL`X1Wn z^Usg^tAm;kt8yD;+FrOl)+$+j)&D!@pA37>tI~R6&{hqcQ4wpg?&DO$m-6PUoke{i z_a*n6=X9FSa7=nDh+pfkD|4wnH4ouEh;UxhSKOv0<~Qt7*bmpb%d2qyU`uE=LXKyV z;Y($FS&aQH9n;6iZqo-B_%R(}=x7?nc@z}oc^*|CtK;Xatv=*_;bfIr>g<53m`LU2 zu?F?A=%2PKmm40xBe$EV)Q|Aj(-iYk*ENM{4^h7_z?k#YTtD--M;s>U>B8CIn<>4a zR%9Qh{`=7gZB^2bIHH$qdj`H;=OSLfLET`?{q*)!m9$-Vmq7)$QeT<<|HJX@*CN=~ zib;793}3=J!)5$Wui3|SHK4^t`#x4CT~%GyggwLOqG4uXnz5d-PjaKN)=qqjT^ius z1v;{1){%~J-!|BP_!*s-9fOCjtbHvO`{SMENnLvTL}H&_>l&;tMv-hcGcC+!j6)K3 zFHYt3--z|oOJsvyxkdk9xR${fYjQgV!o!t(qXlsLh`*XdYgE!#x{z^l{P$QB-DNU} zaLay!ckQapMlF}2?KAk_@MVPpaxI)PQ{DQ&5dG3%GxGpu3Mcz5rG9I{==FR~6*VNX}mud*;GfKdiFp*+8L<(Jf8P8JoGYeGB&wCwac822&YZaUMc* zad<hwiT&&PtnXFg7;3L8N3C9x zGd)W`9iH!q`<1|^EmhW6RAqj6IYJd)RK2SbcU;qmT94^`r|Mv4n3o~&AuWYafUdcv zYdV1oxe8V~exT{5$?bMD&a?Xb*f_Ga(ceWiv{GkRPl%XF+gJ51)TImvv z9(Dl#lDNpJDua1f`b{ldSBFCp&Vlc2jKAp556GGiG4>B)(TU^qnCi=v*w1ANZ@pfD zJgJ=-621Y^QeLOxHg2VT|KcFjfZ1!IeO~HgksbThb*;M+zvBDzNo-bJPmx_mQ9Alf z5Bi>;DJuVUSo173vO6k>xxVI!95>dpddMe5;}(tAoZkHZ_ujI)@{XO4;mxP8ir*U_ z&y8~F>lP)g5mdrtzv{G?!HgTUbVmK>067!BHa^`h*&p01n{KAE|MEF4Qy4CUJ-oZz ztuluBoXX3o7b#<2epD6R^n_o^&u?Ox`CH)~)S-~#Nx6U63RYfM%%owvh+kvtFUN7f zANX#eIqxSL8P&#BIe${r9r%h3F@a_H|zP zR0^$!IvOsD6Y%{UD)tthz7Ms|N^l3)WwYDf}yTk*@>nBg0e5gu%R+s$-G#pKz zwH1v<6#iK8PbXXNu~%g;tl1Vdvnp}kPep#?61m+8cW=XmDQ^D!wOgZy&E~-VlY{u;wJ=rp|Sw??0R8Ldd zl`GUx_|DVaSnB9axfagND?%-{GB=fYYDL{Exen{D_=op2|3|m?mJyeDsgL2aGPq(j z|9z5*f5v>R#~(XriywGEH&n%OJFM5p(L9OQxziQmSM*Dr)!zvYK==k|_;TTX+G(cT zdE5+@hHGQ!(Yv%=<|H>@6ZbZpn|lxC{5@UyJ)C$#)X&Ch^A9tJH-wF;th`DIDHc&s zuS4D4&c|uS6VGg=V6sYG6P=2cilw$H(OPz{!d0E+TT68`LG&wP&4G!_`lcsTad_9E zEyuqj-~D6CscMqL9ZoB)W>)^DD#J;{-E~VF6X*HGZE5aT&1^mKD~}5YK$)_ta505Y z!YnnTy~BC-J#=<&>Q~-#$Gh=yi8HwAqRM)YKQIp0{Uq+mRZ=)>KRxyhXT*1$U(ZL}AlDkXZ=j=W+R;ZFQ5?)xAW z*ht153;RBrDSx+?D2V` zF^0k~r=G6UF@@oGM{D(Ajds0R*-C5Y5`~iHvIlOt#dpre2RI-73-`h~Mi z9W4iS&P2sUZxmEJWnR*$g>YtCD=eBnF+QG?2L3MU#XZ;n)50F3$6?Ov@@y5fDMsxq z_k^vI^j3ZT*gF*8bs72*{0wVlugdLbIUZkeWNN_iykawl9{GZ98bRYX7P(QJ!%wi| z0RP?%Gd&JDYtnS#WQ-qtrQy@qOjit6ohMYq7HZ^qK2@COP*~mGpeftO6IS{1#NWY7 zL;Wm`H8jdjMxEbm<%$>eTXT#4&3JfEA?zRj4r_b{wHH9$uxleYluKb@IwPJVzmvh4 zPomDSc8i{4qPZDrXGL$yy9tiC5?zvmA0+jlrK6*2XofFtZ;OTZzk??ES0A!l2T}({ z+=TjJHM5dgeUEb;VqaJMZu6!O(f2oCMG>et3od>uPLJxd9ygz@D3koUiu>HNzZL!d z6jxoS9lnzoPTW6BS?n|7Be92YZ_Rl3cxPC<#9pKBawe_^38ygRil0(_-RYiFB0gCh zUX`QQX~V&oaE*!|Pf^D0&nzWFo5{F(s$#W@4E^q#e51T#u*k~U1=aMh+3KX@yUODV z>v?;zOe@`P^2AlW^GY3bek1*qX6~$(!aEK-Xp)LBwWt~yNXwL=4L>oPZ4w(2|LU@v zK;NSnIGo?H+00Kjsy-C{6eG>+y1IJpxbb(wxWCXc%k3oJ?VQuqD&h)vAXyS>&(|mS zglMUv*|_&GFX#>Wrz@p*CVEDX{GY0*Ls=9_ULpA>T!ERCba! ztag@FC3U)s5A*|8YoFL`w8av$;t#3d@LtS0*SsrsCFSaM2!1j)m~uL5KhEsPDX}77 zRlOJHbBx1?f8fDSAyYPWu?e4Di`7m-({A1sYZvPf6@?Q|$>PW3RX7N5CT>%c?-})D z*lB?${4vSjyldA`CHLA#8HD#`bE%fAyu+DRpK9w~|4clT{FI#!|GKgbr=)!R*=U)V z<)&LXa6IRgu@;_ry?*vR8vhykpdRdffT#8x2f~-Ma8d?8=j;%A7q%sX_~AU0lcI4Y zRu&!}jQT*et32vV`m%1u7k0|mRrL#vK7+Ns56x-Ar1}kR*Bx0pSjCU82FPUb}Oe>P;@m?d{mGmnvvxl&y{T5i33yDB_;{ zsx0Fl)l1!_0dH0!IHOZN z_n{~wefXgL0AJDQk9f+WiC^{WsiD(V`u7W5co{z3jMe4J9njV1riqJD0?)YHajVcT z@?(lq+RZsv!3}5%pR#act5WIj=>|`U=0`MQRw}lgj425VkH-5_&3$=6ne^CeDVtv~ z;V>Be4ZJ82&C-8v!%B}@=iRIW`bZXj2<>NkzHsFPU1&Jjev_W}HEzHtl@m_bdzBtt zXSFA#S(+suR@!@+Q)jdY8lJRv^DNZ3PZh4C7RTwqZs`hgsr%|?@gwg{PN8JJp%B8! z;cKGQ=3$cA3Ew`Mu6r$*7^G*v=s6ZrI?v(j@P0}u>!%wq_MKQu-pPB$|GV|Y3wCET zQcKt6UFhiRL8pK9wb|*eI*@4}ITLnEe8J1@p<8;8Gg=da{SbfH^A+U%Em0l4I2Utt z?K_MroXymf_xmwb8TJR{gNqrA^J>)8tj>b^M=9=SWm^ul_zw;K0>pnAt7lQW2UXyF zf6q>nyvB3<28XAFv`6E?$NP{X3Ev#5tR~jRYv}1;fU|kvZxKINWB0)NTKc7*_#K&z zbWXgE%e`GOhiPv7Lv8>*4*4SU4479&fv%jw+mKab6#qJ86H$ z^B8Rp&#?-h>v>2x&unZ`3E_Oc9kJx_aU#}jsMb~{t-HO4Cw`WvP2F$1PT^GwxWB$* zyFXnS!(4`=TV!@)nY4y)*jG1}4Odr`W8vhaVYqMxrQS$q^Orl8qbZ9+#aUdS;FL7R z9V0}xJV#`$J6w);7mGJl!~s3xbTM*Pk?hP&kEV*&adW!bRq%(7cesrCT`$s-&%4_i zdm8urB=MUrW-k4jiZj|9A8n!yKBspN`s-(kEs?|>Z$gnA9FYxH`&x)yZmfNY)7H>i zSbO=(Ex04Qxj8HK%Juw~e=vR)8Gpv!p^tQb$5s6M?$#I*PSDY8^k46buQmteT>HB? zw4~Ht(ZPhTCsbC`zHuPC!Z!s|tKE8uaLP+BZd<*0Zn&Hi{vME>X|dr%mHT(>Q5CTi zIxUSF;gts|kw>voGjV9l8+|q&_Mc4QpH;B0aXrW4Pwv`b*mSSj>Y_`_f$_$x)$G=Z zidpBqUze8CXa~@Z8})F*lhnjvvlG7CU7fNRBLBX#s{A;$y;9|#Nm@rcBU?{f4|x|` zU$HvztQC;6?)W2gD&X$L=!1{-G_~Y)Kk6{TD_^PGAsoFMJgB$DJ{JGo47^Rn-VlMD zaAP*+JkHITWbN%OGm#GqhA-!>z!X8@jj_w8Agn(s!k?SfhgH)yYbiykif}sa@aQ2r zyDnz=gZE!jUp|~t4{wgVX-%?9e6S8;j6QHVbw3(&e(K6uQ5x&wTUp>E2{C-aHfFD@95_PJJ2(zq(1c49SVJM;uy`C@QCwl=yNTMp#n*mOhKBEu%uZ44t*iJa z_A*DV5@&dv3J7ll429Ld!~8;tX`;|E{s5)^j=b7x)qAhJ*#HyML*kz(-(>pD?eRyk zUu$>kVqOM{!x&xGO_^PXuK!iF=7YcIW8)!yAu48@x#^FUev5DBz`leR{*8Z`h$a6V zrah`_y@Rj*!e+-PyLr~L(sM|^hidI9)U-xZO+L=0w_e6BEoIte*w~EPnunz$%6=by zc*m79IjWg?+tVP-1F&lq#H@_{UW1^$ISza9P0jdm`ezvZ`XA4Bv>2{U;?7c($zWQf z08ZXwUb3m$3Z5*b{_KK$?JHkaQ0TRzo%nC6xxB!K3ulw$P`}?t55tm;w0#*XJ);u0 zaP=@p<}VbW+>Q1_qkQf zE7(VONxXCFSF^bCA-^f~g0)rpQ#$d`kGJB%PsEJMXP^E!R|0>9!HwGd8LouoT| zSoBJYZ9h-q1Z#VB=c}QhxBds$CdVu3KUQ(e>q5aF=-#wgH=M}%ir-e9!&fgbh~3E3 zT@`%d4*uy=xK<`UU4-|jzo)qy@5-18V%?2b);4MV`V)I=UPaHf+f$+Mzy#!t2;Sjmb_ zmc)4#xQ&ABja9;)zh8B%qo})Z!s30@#D7tD&(gxxnIS}!{0r4|oo+g&cEf3-9c0Tf zytxgJt=C6n!D)qI#Z>k1oW0KbAX+yFb8q4btl8(Pmh$WatlW=UX(x6|AaB?$lK}^3 zR}p#5%27zait_zH9hFXm6WMxM1IS_RI-Kru%l($&p-=rqma4$}5`W^usc`3# z?A&I2zlhydyQ)T-mB(TB1>(OO5zxoZ8vUoa6m0HKUtp z!XsFzf?NnE3Dwlkosai+62?jy6LxrqFZsMm-R_N${ubS-QAwaoWGzOc5?4sUM7@O|O@<5=M~ zmnbz1ec2k(u~=Iu(Lwy|K8)rgsrH^5%Me--WnA8GG#RK&9~R%>%}o(X56qq-JxkuuFR#rPW2<9*Kvu zMOKMM53{*PC)!=FlOz6%98T%opRiwPHY}W|1`E31v8WDBa9i~i6z?LirLCFymQ&Gz zm;EC>pPt5=;Mw|EfqvJ{oH=4xR?cREFmKwa6uzVUnO)&+-7lFnm(lUO?lwYB7qhl7 z$4L_}dcKU&Aer7B9`B02r(Vj?Ao-1P4TkRnCvM2|2E4)=(Q5r-&`9g-=4fX})kWj5OUT>D~X=J!}d&-Xe+TSR|0fn$xh--qL!?eM-#8BXPfp1`Op zu+MJn{SR-gKN}Z(1T&WU?)AxHtYEf)#xe}IM5pON1k*L6unI$ zyiLQ*H`4Nc+F+FYN$%}=dU+_-x;-l4j<@3L6Q?;i{7r=WJXN(9foKwBmdB; z&Zi3&;rJZ#dLmEzkSCn&?cPq*ZZ&A%ho-n{y(J%i`EM0bKH3W%exr8(rj(bM(Xc=N z2$!*_dg#r8nLtszr0SPJ`>*0vIYyCZJdB;Uy3;2jzgH~6_aqw7gJ~($c~Ccer{;5L z7WV#S#GrfB;8j{P10LI?YWIr5A5=y7Cf!*38ndgka1PNmn(%q?`@sC%$I+h3e?1}h ztIFbiuKFID&85$C%e+C9)&(o3!DU}#Wp{x-ydNF2k_$KnrhO1Us*dK$?9^)Frt22N z(Qsc%kh1N2-$ZBaFgzrHij8qe^W2I;5XMB8=3oy#b@ zRbpQlx~2Df`pC3guT<7bo=u*cv=HRG@62^RVD;a$|)e2K+)^h@3UMBYYKHQE?YrZmE_NmqR( z{{2M$9XPYe@BP%=gtN+WV)s^}R|H2*mP_Geg>bG(Uh~o4PiJg>3pTz+onM1U9c5Zt zNIwhq&Zb~?#~R36U*Oa$9>Nj%MQ(`Lzpsjm{gv!)SH< z*Kn42KghJl{?aktoINkM%gdS~iQVx*kmPxKJ{^DZqJBCVU!|%0KZfP==%U_|S)Zx< zo+@{!`a7;8%$peJ*_X)C1U`9!X59~C!Z~26=&u20>3lQ^Up{6Y+fit<#lM-jAC$GP zQKJ9x=vunRd7k?%82Y*UUXHy0oAyQt^E%1goGelWilopwNWKcRws2cCKj-=dr^ zx5F1bu8CtES#c$*Pqmz-E&k^jzvlLi>fF@Q~mCa+Qo|}F;Z*D z`>5HO0x!PSDTQyAgk7JT?4=rslj@t5++y)6moXRJe=DkpGdoiwy{!{$$BEezr>tcR z<;|b7B3R2$LF*@z^hy<6*MmwqA3dfj=EOTDb|%gw?$W+f=+S$v6|C1o9;6NXs)A?L z!UA~s12lYFb~nWZccV|ZuajhE_|`#f^LigIv<d8;7nVkM0F0sX|ys4c~HQ|B4> z)>PDYPT*?>#axckKBfZdsG=XJ>{YZ{9255uzr`x5f=IO#=^ODD@P3N*uiJFg1Rm*q zx{%S3yPgWp%!ivsas8x+>4J~bQabs>aE2WnH7VF`T;ik6F9gt`eIEyWW9-z()=&tEac+OmS7Q zRwkF{s>EoSWz^S~yolSHqXKXGMj$9KY*W%9@!jJcJSuc&R%Mfr;O!iGSR!8ve@|jh8WNbrWCVm{+XQ zcEBm;pxFjJ%yjI%g!A{6+U!BeZh&oPv0(VhZpLVrNIc6U9j^|<7d@V#@2l%Vy4%C| zG5)^8^L>*y9k;V;AOwwzM?uJaR$UxX^*ue~(Wo_lvV*FhPD9;qUfNJIzv{he@ZSG| zehs1h79*VJIp6iZ#YB2Be0`*VKe1R}KAO5{tLCrjMk~{#{o^-0%LsGYfroGmvMti1 z-PPCU(TVJeit}h+f~Ae!>Au8Y6j3KQS2@u+zMSfM8(TgVedQFu^m4QbT~jjpQ+KdC z8t!R6O6t=3>qXKg@8({s&D9Pp@-DS@1%5V^1*M}Et_hA7`^!KTVb4Kui*w^9y z{p|TlT37g5uBBALLqw#s8LsWgZ$xbtBD+)!)Gu!&Gi9cN-(-nLS@R9q<|o;6)rcc=VSTdcpYP%i7}dE z?mzfWGide8cD%d<^|zR>CcNfZ^hFsRU2`+?J4IVi6lUoAeubuw`!lC7el>mQk2;_> z5Mv$P{Tnr~-S2KlO}>e}FG86su`V?CIrtR5iuR*5iFYts4cg>&{$Du}Y_88PKwXaH zSRFF2>!`f>*zgDWR@YklPxN{(o?J@Tje&?AXs}Yy>TeiZ3CqkjqZL)cX5HNqn)W|^ za5&2@y!SiIzS&Q3cLpmAjc`RpuE%otlZhkO1=ghC%&emDFT;zXQ0En0!*^zMi0gi& zWgq3Ff9l%%^^?1}7yaT{<0JgJT2Qx;*;($cg+$?5zTi^cMH#<)7xeB)uT7UVh4nFO zsg6fs>33MVJkBUb5xpsj$tmEO`iddkrEIFTJRUq^g}n@Y@nT{pwQ`SD%zLd4K4YZC zRpLnZogN#(ooNHtwu#4*sF|nBizBYe>wn`-G1Ns0x`O+~xcli2KYFB=TFY5EB z-&em)?0fpkf4e5@m&nmxc;*3BRgvaDDEgrq+fztqqJFN+Z-wAhzVCd6ABE3$X4`5BNrW#wKs|G7&eD*hp)qi&&J-L zPxW9{CWa)?8-Q_UU-UmnHWK2(Lh!5_^N{U6g;{p0@0{;9U9Udag<$6Pw|2d+myvGP+Q zJI0kUnxA-I%w0+3HOsH42WRY0KC3(NpjlbyJB#t!-WE>@OHoq5Y$j!|1N)Jeis z1QSCVDl(d5G~ek9wl>x!ysP?F@*n7$Q5H_IYT+9|zrwXoplR6a^sJ}77KKykhO2D* zA#fje{8Syz3-!Brx;^6RBh~LgbGQ>?eB-VKq0SX~T$@xK9Osim_lxU_xYw6l$NJRF zKpN-axHtAR33omu1E*mb9dW-lknM!rKhLH4Oy*^yDvD!64e^XP`B>an)`f4rJuSW` z+h=iy80rmohKuoTQEo2P2y;5ye%cJFf~oo#;*qF?dH#SG5xzW7R89F9z9kbU(^bdW z!}pkm(iivg9lNXcf9M#UjHf3r+ihOk{eDSvFe*nq6F0l2q;Y28cnKYcZ3XbUpmt0?nW2sQ(X_`Nq11Q}n({+{YE#m?($o^i_$!jvkTq8+nf1D5uXM zY9|Vzs+}_9-0@@Ud;xoU(-U5TYT-PE%qsdXVy!~_B>(udokX4Bc2->IG#0lQvW*oh zLETSwpMY%NdA{I1Ht;($VZ1N%)bhEiCp8=PMjxPoo;3aom_&E;na=75*JOo!TB{~j z)RhY-yQJg2hc~o(P?qn@$U;=!PoD6Y3R4t+z7ZGN4@Z}(O|L+;1N40+-H-Klc63*H z!)YB$X@yT@aQ8U8@xKD9yoj6L&DqP&pZ&tsza=_wz1oV#fojDJdx-YIm^(O+f8+h9 zA zjXo0l5AtkR@IAs8^fsEwD#?@fQ{SF!ia&p-(mt;8R!v+>S0_=>{ievRyLd}Gxw(U| z-r+j@U1i{A3~G@PzOE8xeD|xQe zPCp&j6SzHIqW9PNTI(+NHzXd#F!E8W&GmT?@S)nNp@;0hT||$(rlO4%i@B|Q_@=`V@wUXD z@HLRoY1$S&Y;HPR{rqC3liHgP>;BoF#`?o;toKIsC7gBJM0|fMBg2UiAL@%#_k73A z%Q)AT5^JA|@69kV2W1hyHFj$>hvT&$=gtk$e&!Ekp)*h8&(&4?e<=uTg z;cVT*`p)Zt^&5 z@^y8ohTc^v)#=`71(lWH%xxE=qY~wHr^0tU!s!RIoCVGy)rV zkq6bv&gNONsiz2f3ep^m2I$r1$6Z%q!4s0nRJqg#I!2p0C~d4mBRO{`x4E*KJAvB% zj!JLisrQSs&h8mjeP8nW)Je>F5cYHe(p9AJHeeBxpyBt{@T#s)cn@j}j`?NuAXYhA z20rGBqulCyvC+RFe^L2cBc4X()`V+gde z^z?5}(W#@M{mo{wo2SZc7fUf!HGH!%vy2&l`?gV;R$KRuI7Ufs!iOUJuzZ=pama0S zv$2DW6zObETS{m79s2y78dw$@F6Tfbbb0&PbNq)Zcc~)7FxKiA!Vo9y&Xl*;plJzf zSP|D*NQw5N3wI`OP0gp)B21wYTq_?B!XsWcGxd47Px!Myywu~l#B!-L#LaB2D{-!F zN|jAr!V}NxP4EjQrLK*vb8u{taM?I7%DbiZn(RCo|uH&%XpAX@DJ!2gui?b%D zTcJ{MGM;W`rgJ-XQFcW=>w_5ha5GjZ?QDa$sk!iG$QEq2zuCDV*_JmIzQ$7BZ!cr# z;K@V|?rQjse0yV^fO`zmp?Xwwtx2v*o=x7B+Q(sg(K`^|L+0!-e;D2sP9qHO@$ZF- zAMx^iEm$|Kr|Vw8eLj#83-Rt>{Pe44Ycch+Ao`8Fy~;e^124XZHW@tKL(uYpxU76D zkmkparnPIx`69`&R<@7(g#Ka;3}$YkXPTpP8!gm9{lAN+Ilx-%u=>SiQ&X{a1>zjD zf(7HzR${dMZ3FGHIH9f_#}Te39#A_jVopP>{#|^F)yYfV@R=;GpXZNn<%9l&Bi(NW z)~C5oH4|mL)wwwFhWNb7L!1G1i*QJCisvr&R}B%Ps~}w&{ktdVkj^@H!#vmBI%;#o z+F`p%-pAjsMy2TUUVO)`{M;da$Bo!%Yd%5^xD=a>&@0?0Hb*9&@J1JFMVKX%(~zPFTg7Pm;m)Vf`+( z&Pg#gl98vTGlg&|hwEM(07# zAJyAlW;H0+KJs!F$D=;}Q`ji)SE+~EoBkeV_>i8#BtFV07`Ql5DRH}yc!?W6l8T`P@xiMPkDTgJpdAb+mNGEgibG(!n zzn;<_iUo}_=EZ4ybM{%`iqT1tGFTmaC{cmp`Xy0D#fem&?)1i7e%gk#9^MEnp}Z;) z-n5zn>F>v2_nE~l{v5_aGxDyJ@Z)2?Ty6LnzM|DxwH|E!_sHDJ;_QTdcOzx(Vm$P9 zeV@iUKUwuj>Ozq4b=P*-=tzELNxKTBi_-GA#r67BFYAciT2u>@FD>Uk;OSgV=CL9blArM8&KS?1Iuh+X z;ot6-2cH=s8@FLkOYwvJI_T4JybLg{p!p1)#(<>#@%t-qJ)G7#Q+Ffmf>?|}{V&m6 zT{^8YWu?bX#SxE7{xcW^8 zAiUdCJ2_ufsz;@#PnL@7;e;_o_-HgWkuH%QOK9b{h0}Mkb7tlkV>YOAoM*W$c}~sE zm~2M(6qnT-(%AhrN?;*(t(t6Fm#9VW?$w98L%i+aTRbQKO6wQpqhEdz3-zh5opQ9a z8QBOA*U}&t5*6KVtnr^x2S1gCttj)!>dG~{gLcwq!(?H>_)p$VeK@*OX3UX`XQ{ek z)K}9C^dIQ6xA3P&lAB;_XLC|s<$V{&ddS|myK%3*_|vym|8nAee*E&d zm=#!{Ti?q)C&uM4%IfmzJl6bhT4vm&QoMlSA4_z?C$EPG-$xD2%rn?>0;70?zc!W| zUyGLbL>I0-<$nc#?dFP_kmHy<{)g6D54WpA?Q1;8=GbIgUDPRjlUXW2H_T!H1z!Y` zPUVaDHp*MYUJn@Z9WIkyZ1lu@?!fH_%KS>|(qz?R7fsO6yi}v`Zt20`EMp6I01d z9)>ZmsuLTr({2=Ddl7nGY~_r85Y-dS<$ZYJ*AQ`_k@l5INo!tQy&kOhSB)>zK$Qq@ z+-&uP>2bUyzvK@2_^;~umblJE@ec}>QrB+)JX~)5pA|JnU`QtTRNBv$hu@i0i*GQ) zlo;Kq&Yy^$Gk=9CiHWeOxogMLbkppf=;VHd?Vx`h*Zp37m?hr6g=>!(!CT^ejdh&o ziOO)Qp0gGMtVYG;P<}$_j2sj%1;l7p>L3dp^P)FUwDBmE_#Ar+Lu~BfRFkvuFCr%jdn=p zzbl(Qho9NpX|j23E7qFGhT3qqig{gz<9}jTP*-`n25Y{AzdWmdlisTQWtUw#4(X2Q zNp&w1&!{DY*=84ZUzs?P2HA&?ZB*ApUAEReGW&DiJ2eitZH!dV;Rv_ zU8=~hTEYYQLw-LcMzcbjDQf(ivaej4wy!2?psYUAojmw+_9L~k@2#J^&ys}?#@9F$ z)zqd#Iw8ez-$T64qGmaq!T+3^HiM3wfcvh)EE?e@-Tjv4@n6>caZ!3pbQ-q^JIX?A z*HHsztMsoKQ+A{4XOx%t_hb2^DUR$w-NLQ-V_}{CjGpmdqZ}e~_K5X5Dq2Av*C1-* znqB+tMBEt6BnJ-E9ol7!w^2A{tatdf#5$RO4Hv3Njr5Ix)3_b?VKnWa*}qod zrszAJ`w^JQmk{_|)WD9M@IBqlGUF2t=Mb^lo$s+wZTb~!d7dZpoSxlmwex8e_pB;& zDACK6HLX=gN?>EMa4LQ3JrVu~joFddW%J+Yt7*ZpEB*=ywY5*RUm)g2VG5h6=9g5bFa74FIO#zQe+M7n zlE3duJP4^e8BsA>tPAEm!w%pIqGb*L@m1C04m%P$!jo1i=ro*p5WMdXwQe%UqujBv zE9=YL-;(uHSyJP8kB`Ww`JDf^)S?F|#{v4qFJXxN=;ZJfv02_r`#l;VvcBL!Jj}Jo znOf=TcBo9JFr!`=VmMXk9Win`Q895bU9&`ePR?#?-wU%UiCz5ZCl9IkE0PscH>OG_ zTe;sc|82GUTg1sL7ZVQ~-#JgXM)W*K-`p*0-o#2e%Zi5P^fE-v%qeSuTTGJ|Ekw;S zkv(4aKCISkgKsbCiM)-ibu~YBQPXK}SdZT*;2ZFZO7S{+tT=U?JKF5IN{ZH*>ULW` z=kubpglZppFi%_cerXEm{bcwmcOhf_M@;p`FtVznCtPz4x4cRBVV*laOIJ<6x^u#b z*7iRY^XHmwM-80&1DNu(Ze3qKz_B!a7to@i75O&0$2h-}QDKix1J}0DHN1-bE#r+k z)5C0@bC=j^%z{$^72ByX9Wcj#qIPyb<)%Qh(=yG{I^rL~!xJj{LC(V?)*-y39`Gi7 z6E>Go>{QpP%bhKH@8#08R#|NEG~e+h*>piYYt8vvYCeCWKhI*qS;cA_9O)ZO?`|xz z1D5@WUO^|kq=0Ha5Mw*U|L&&Z-^kyd&fy%a)36c?z60J}hw+TF8ee0imnf$DlmB_U z=uWI{plZLzoacg12ki>FfMe{2P_JSBtHu2=k$;z;(rxEDPQvxda&pV@aKFNno=^)5 zyY?2$dr;yvN@k}le%Jc+;;$7Jr;iz7WoTa!cE2cc%DD0zMm?)2 zE=pHW{I_vPTX?!-M*57k->sJB#2E8&S8uZhp&z}1C)6SNNUCe<3@!4gc-hJ$au%1! z?xgxo$0x>F&#-&0i|oC@^9@LQ^R1!1eQ%l5zr4B89kw;6*7nhVi;b(0SPL0=EpeMH z$wI>}F>B!rvI1hJ1AKZzbt}xhSnS_Dqk}WUY7`XV4a8hH6Xi=a=5_ael|mm!{oE&) zYRHM_beHcit6Qz=WsH2G^=jbCJyiBFINDaG^rfU{N7+5gY`aRr`D}Z+s~yr@=ZsvI zPP~s3G}4a{f1t=N2;qK$q*d(B{7jD`s5#&Mf}@9I(^Yubj?VAN&lv>U6S_u?Fp~Cm z1Yg5v3Pe-%9xCbeZ!s_XA=?_=yE+umIqNr`2AfOuFY|1Fi034Ya26hJN@P?mrkI!G z*!l-Xcr$JvyoA?0>0>I#PQLItUP@c}TgMy@ho$Xh?+THA33sdJ?c>+nZIYZQMH_6E zPZc~}XKcNJ%H7<|-)7wo{;E8x;u+h^`MqgRbQPy9YF<0jyd_nj0=nO` zlh;(H3##HJ|NlJYUDGa);uuRgI{gpc%pgpmy)`Lh%nkH2%c!y6;!&@~&vM28#e~8> zn7ZclJ)CqfLStI%46W+~jn zTMhdx+tF#?$J5|_3Cf}`Pv>hqrL#I(&qyoNlgp{QAN_rBVhl`d$I0Acr{%9Y4sXNG z8$8)v=A@;S$nP2R;YbT$Lo*fhH#KGjJiG#<_ClIMs?%O|yFc8{0oD4+q_ZmACK{z4 zPP$f2cr$7&!hVDk6R`Fpu8Qc<|FEu2u(pL~EJKq_HYX(^R2xX%D*lMZ`vWRHi4lF4 z$e~-fJ5krFe!wl8O#dDmvnTKwnBxadMXvI{Uu5(lfUnVQ%%(D7mVgpk(ODk)Rsvpf7PKY)_CTMkhCH9 zs;z9O>**GI)*7N`u6^M*iHsNRBAIBUr;_zjxmAg*FtKQoa~ju)w!*R8^wwsMWmfy_ zzH?13d?OF1ZL+;jRaJ^|a%fxfKO-%iTwwH#+;I+*yr=jq*HbMU@uy~x`zd}xf0ZJq>Y2k;^NcgF z+1b2{6NyZ!+Ci&w9ZsDoE@1_Gt6;agUstv8cIy6yG$vdr{y;U$ic^Gdf3~yZVhXL* zL&WU1K3DaZH&HMdJ=H^=@HEzbPqG7d{C3@+<9yj$qeamAR!F=)acAPR&URN=F+x>) zQytAMR@#`$P)ED+T6XEDgs%ZkgPz{SPu#(cuPfh&({9&bYDOw|nyc6AXQj9QWdo-7 z2HY71TmOQgx0;*Y=00oms_5=2gP$_by+lnZah%Hvl=N(cWc&!doZFKdF{6Mpb7kQ* z{GvqSeVKo!dQ%rZ^|R|Mo9=aZ8~8V!+ZLSM)p%kiPHb;AAco{*d<-?p`p%2wPU z&G8y2T3oyol#BbI_Yu!n5BmOqk+yWtES{+n4%At^%!F>o%;;14q4QLV`(@$1D$64{ zbaok1S4CUKN9u~pmJln;dDUCZY*tQwCmg7jytt(L#_?3%K*_XO`3Vbpf-=aYnl*-C zPL{AEu)d6+>#w&U&N1_Rvkv-Ka_&xhb-qtz5z$jHv76yQCp#xvd6suL7lV_9Qh6xf z9Q>{loX=%=Rd_dTl%IblTEc4?t>0S;I`*Y$kKsUTucUGCDGGfl*|ygkKBFJb+5_xLeM^Z4Y>(-^)S5eU{A?p{ggI|MZD_U#7+webCemq z6Z`rh?&eL@IJF#F)P|$gRf=pP^dmDf)wNlo`Kst~`YxP>byenHjlzi-Wq2efFyOkX zX!!2kF6&b!4kz`86Za>;?DhKfw`0)h#lR>G;UrFdo0vQrw-%xAa38WkxG5ONMpgHH zQPmZeX4OOgNQ_>S`xh~=hMqfzrwfkgLHvHAcxmEp;~~hiVzh&dh$-#R+iZ}?$A7%d z*vH`;BRM9|sDoAM-v8-}zM>w!nASnhrcbe&ZxO!da3g#vEN3&yj!0GAqmP;?a87F& zzOVQOl&Q#}xhiT~Ly_ZhyP{lJWv@*aD7Dc2N_px{(c!2b9rw2V3@71Ccz3H&nmRbD z2k<1O+MK5nzL8m5e1+43O2ET`e1y%izBj+Co@=_pn0ugF9>_mNJUoo!PB1%9xaKN6 z?8$LHrF%1+SDOz{63Dx1XUQ}8yN{81Sf{xoXpo?!=5 zetzB&YnNB7g>SCSP}Q>2b}O;26S!ziPZ-`d*^+o(#h%9fdY_Jdjk-S;eW}A(5yt{Lf8o{@ z;Ij0T?>p0a4PWrO4%(&nwpHH^V?KooQ~X&M7vPN_!nZT(ID9GV4;oP_3TJAjS94F9 zm6Oy<=>CQ8a{g%_#4lKLY4b7(3o6P7><`J`f>8IylW>FrG=0E z25#?muT@6-Q{0TJ{)_A#3tzs1UXO~Aar}cXW!?*7JG|v`h&M0?OSpl?smKM|$vG~| zL99S$zfAGICK}hOK#yS|ud9W7?3wyX#h9zhd@O2CEx%_}&pU1F`qcYy;x(~8+&s;T z-xXzdLBBF`VuXyJ2!CJZDTWhTPecu|q-I!2(d61>j#M($HaS~msVc)F`n(xrIj6UH z40{@lnOsyof5dmW$3c&TW~j+d`Qg)`;y!PET^F%z^H z%C%~v@}A^#Hl=&>;P$uk5Eq)||2*Gss`^_TfKwvv3%RjBakox*I8StCbh}Ya(AO-C z{WgP5bzQd#3lDEow3Vr0C*TRH?g$*spwfh|DDQ<$mBjG3@hiN5ZT6z<$1F<9!HT%y z@2bRjj%?V4`?LFfYKOqLytVKRr-jj-RQ)oFq8TLI?)jRy-#&Zg0tfnDTs@Q474sIO z)i`38PHW?Q-|yNRHNx(bv~}1++65vOPi{7+55S69X61AGxGml+BT@&NvA2I zZ5OG!uZx)X%IhH6V$MOrHJsIq5I+esYT}yhtlv(4 z-Zng_DRin&ZG9^%-;iV1#~+*1yz2Z(vl32A3@g}~8}JjaHdce|3V<#htozH><8dsu zah%aJeuE!WqCR@d!0>+9e|&+Yy4FRlCZuFPg z+%2m2n$e3G=94_tbeQ21I9*PK*q_XlS_-@Cavi^wOO>I`e0fn{M%{;{l~$wPgiqnj zyRNQz%IF?fAHGU{4@39MsQeJBj&X)_{qh>wayWC&IICLC7pdSXqI9#7el2?|x#QO4 zK_}Y3ki2HUYGa2Fog9P`smzi&K@eOYFB7e$1Y zf~aM^;a^ujwYq)rZ_Dqm)zI$7*$+#b$G^Br;V+>HdqVv1-JS-Jt*zCF)x{PtZ6U0v ztq0PW(mEEuYlrg&TI4G`kQa)Zne@^Fw8UXm>}8DfQw*<=D%eeQ-|6n<)$5PV;XLcV zS|uFCp?S~xHFwYY;xu1$gpvRlS@eao+FI?QKrY53w_|wtoUEcYP z@m#*_?&K$_DfWKXO`fqQ?Qc1MJWbbqCjLhn+bfAI7)fOecAiLDt4pzyn|A;oJT6Z6 z@F3R0wWYc+dAOsKjI%H1JI5;Ah52R|J?ZRx`U20ZqoU+ekM`e0=lVpH zmX^V9VwEwKR)Dt?zRq)r_jDn;pBFG5Yd+&{U8ur0{CNfCm}UGW{`6fM|;#}zbTHMO@OEzv_Bm5R?{JA5$MZIvJ#!#k)-*SpdONodpvVJM9{!U!WY#x!pm*mh_>gNkqq78(( zPo=01*BaXQ|B@J}U@g|FP2oJ<-=Ow3JYglScZXcOsvBE@R=&%8b{3=CDAqq!wZEzC z8=&Kt&^};&8$9+Fx&AJHbPzl|D!a1cc%%Kq2ejuJPIC{VkW#*m@lnczh2zzk6Y2a=Ty(z@t@2x;t18Vl*ilzZ~jImz2xfx zDbIX^Dsn}X=Er?|@PGzT*;S~fu#dY$Tn*a_UmWd5m4)*F#`2uz=>F6*;*X*lIA&+1N{R~7ejKXzdk1!>oIc+5F-IW+M(wtZX%_7iFA)a-1c_$ut~EN*_oFPd7x zmORxYmwE{I=z@y0NG|1d-_ttU$L*S$O`pA{eon`pN9-7>m`Glkj0J zw$;?m;c+VAaNV`j?)M*OZJ-+X60X%*6`ksi?RduF8$dBFxsv}-D*DY_p2ICxQk7>D zZ;H*<_G16d|0^K(T4S&KRESGfBD^_!PdvgZ-xe)a12=JT|1z7sgEzIMW&Z2^IGSe^1h9?Xc!U)Wicc!C2=Dy(gbKxLkS^;%q)^zoh#hwK5I?b zG#4L8L>rB767KuEYFI@qG~z5|;g9qc-NSiZwXETEbCTQK&X*J0UDePWg!is`>zglh zucsjQ9=z21n`!&&3R&%5dbL|%(*nO|iW)o}UaW9c@Ts#$9lh6GRBm+UShRuzQz6U= z+3*xSSd?#=oeq7?Iuya~k8ziN;`ILO=Vz)cJ*>whnONVvT;X=~!gwCAf;;Ve8JNZ_ z&Uxmitl(g7M`mnhg9><%3Jv~IJ@GkKPb>7Yuf~mK(-`^mj=c;wC;t#Hf8!6!#big3 zT)_NXRV%j0-j*WtM#`@d{M_exvL_Ei;AwhAFfwpV!Z3BDp(bY zE`c+ZAw?rj&d0Fg4fiXLZ7;%3#^X+fF})G)_q%&-fQI9E7j-b1Y;fe3_?rIY=J-=r zKCXvdSiNs8FDla@opF&5vC%zTpg*v~@a?xv9N;P<|6{&+HM3AtL?5*FQ?1>re$Q?W zL4Rt#9(?)Nsnn;_-3ei;;;(D<)dqQ&v;;3;hWc668?4LV)1%3ul+r10}=_{4PR=oPT}17;d&wKsJf?N%Wjqa13Y84oNtT6+!y`N8cfmy-;Y_06bJ3# z&H|jIA++D5Qoo7)?D1A$iDX~ddr(~}jHiE!+lQX;36*8Ox&2wsU_Q()LxU`q4^719 zhp=V>|F52G8f67XsAi4C+B5XapK#(z;$9UvoRrc#%BXf8#?YJ5gCk*n230-_jUCQ5 zE+Rr#xavl@a<{0=2VJVdfS;p$T#m{Z?hp}k#CcumQ=6dTB@Aq-n8~cCHAB8FieATH z-nUOVpV$l;Jh2ZO)y-{37@S!gyyT91 z?Ap7J@7vLdDu3e$nK=k|iJB|aa~wCp20GzENnh;DtyUkm=H)p9l`w>nDpKeVOyLu! zQcuCrj>+vjjLr5wq>EqGG25Fc4r}V;Ug4|NhwbPafXA*jtE1wN@$7*jdZhR{t_D}Y z@BfBNRq)nFu%&LgLGpx;(0{!7N^q6sEI(LrhNeN30Z z;mq(x1a}?HBfJ~$5v#!?haWyHMd;YAN{NlN`!o&0M_jYe>4HczLWnx{JJ}PdI z{9RT&oBRv+-X_*tLYX;OUVlHcpE4+i}8hjN_?gSY4s{tp5)#M~#-%H>p;VK{dsk=kA7E;GNXaJ(NTbWH0J?)8MN zjBhV?l3PaR#G?O=KE#x6h1EqpUw8eiNBMXsu;-UJ3Bz5|a9HkEcNcLwdhi{x;`_s+?Xc+%%=wS_K(dNR>p=s3iE+KE zz6@8HYw?g;)4NkCyGIjGtN5Ay^KiOuwbiTbUTefad0OPv#>J*jpE=b)xh<>@Up6ZEm0A^B71|QBx2Gw$$NY$4OY42)js~ zCPF=oxC^J!^s6XQq?FX|rQ- zjE{K_r{m|jTrFi=5pL1b>e*quxwAO^Nq@15h#wCPXR8wR)Rn^Ux&;sEndBU*^|+4S zB%}NXLl^=L56HifJp6@;CMsQCDl4}+coFmckUMfE?t+&LvxehgXi%GT%uW5oxpa@i z;i58Rf?T{)7T#k_3*`9S@;7v*im6HS#P$HnXE)YzGdJ!rqrCz_=O$uTcC|O)I#szl zM7h%nbXE!9GSYC0=w309#~!4S*heo>lg@bmP29{EJ(~#U;_R{RHO$^LsRU*c+-{5fl1}zGhm*3UjA9QxUn|I*jHScEW8Y zS^NGvX#I@pVwz{wK6yiGpNh6mK0J=2&-ZgBy}=Z|$WtDxI1gdMdqy2(;WMgrd6jG? zjCmWvgg0THQ9t`ay7L_DcexdFVbV}eb2w+>1+}U>&*CBZ_XW1yD0wuQPhHB9`okWE zyOLje!r!g^T65Qt$9yc2vsb7nyjkXWYfx$rCRUpmGSF`i*TdD)$(`YLwyt{B-JFST27K2J4?Z5N;pipTBUDZKqMSmZ2+q91Uc zYI?r#O+#O%#(R62kM~uxJ5u+g4(n-#{rlThrxXM(1G}I1T(9s_Z}%I*m!5O$o#xjy z--G!S<&1vC4Opkv50PVAae<+7sSaM4g_60$PPw=34Oy?>P(>bnD^Dk=w{OabdOVrl z>gX!{zL(>0mSj=ua66_xOn;)3F~2Nsi}2XO`Aa=Gay^r~k_}VUQ$Kp|F??O81g(4@ z*YHL8)X$xLuLN?ROE(l(pQ#G`Xixl^xQg1a03sf6K0;4D$$s3p8aQLIc${ddXaCCwpVtk3pEC@a22_wTa5|sa(thXDUIv ziRLuy0?5MYXo@Ga<#X;cUpMIv|6~Q<YhW`H{9;QuBGvj;|jm@ke>FOU=l) zYW?0sc5}Sf{c7rTPxOpc@zL=0%nd5V%W(7^wSK0UOpl5FllC^lX?U1HCVx!V+{_F4 zj>2v$TGrt)Z(uZ6IRl&cNV7fTbtQR8IA9Wc;<7 z{xkG#0Nc7Iit9?=j(@KaXLGFmyEw@zZtTkVRVRcsOiicH^5f}$h^LY6aD@l(ELM4% zCszbZ%!30LitogZ+t@RDmM2<`2XN9(?$NSogE-ru^SoJnF1LH=YPy-K#6160(q72>IUs`l{qlGS^QqMwY7%(MQxD2iXA@J*@@DELL#;V9MjDQ;@Yx`%Vc z=7_A*>hvBQZN96<`wi1!e`#*|KhZ13c~UKF?y5-`URkyGKXbZDHXSr0rQzp~a<>gk z+?gng6ZOOzb8>-3(+`=T=QnWspq#3K&wN2)?#1Lvn1#Q106&VBP2Nk{&li6lhU|?h zLiX}H1p6tiQE<2=?`fKGhPN{2%hC?C%NDVHh^9}+xvB%p`}l7U@zS?qOYPlp7`4?f zZHL`t_3@1Loj`NErSfet(oLeQ1m`ykJU(Ne>PX{Uhs|_Mp0tX+aM2F%YN}dMINl`- zt6>*AaG7xCM+1mD);^1@+?6-eb~u)!0%y?Kv*mm-Xm|^svWhWvgk!ll?_ZkH%ZV~r zbof#_R)rH5@UzcwsanA7Q+$W!o^Ld!Qr>=oBGlOd^Rm(!&Qoa~z`zFc@*b8EXK}T3 zP_Te!t8Wj(m+-AA)_e*IU9x83Ykk>WJ=2xhagysrXN*6rjN5s(I5h?{e3(O>C)r2s z9HpDoLZ`11)f?WH{+Eg4_0)-$88fLmBj>j>v1cOhc=h zPRC|ABrIo6!s%uCIS~KJg}PR61C*~0Uw+|pj7w7zcfps6YWxCuQACL2b$<|oXs29zJ*&vXo-k@`7Er|!1Y+2kS4OnA#+2i{lG{*x{`QqLJ}R(*mu z#mqr}9>RbYN3AfQ$!R>foF@#f(@PZgNH{Rbwfn8YLfZOJqL9iLzUliRy;?zDpTH?+ z#$%xTk6im%^!YE4_h(#W8BTFVFR-n(pCKD^QOtQ&-m8hvqHefd7WtM}jZdWRPPOB2 z?ZKl8(B|dhL1y3`qq;Ae?u3Glu5ARb-;pN=b%(-PH1C*;!aB;^i6OLO)&I0HLyUO z-iTYQ^kgsKgh%6hJ=X@_$O^lp{^L2d;loz*gfq=|NA;+y9Y@P#(Jp`frU!aM`l597 zWNd3o^1f7sROl4+#6^!nx%8@aD|IX{R11g}-d@U(=FyDA3di&7!<&FbJYj$JvzbT> zy_8daTbZ~Aylp~VErguCyxBPqhn-84Z`X(ZFM8Lt1NlC$@qpe->lUnn*5SQ^a86o@ zXf;MZKoz^u3WhUgTGK6Wi?H)?Au*OnuO-KMMfgS%Dc8F%KX zm4|WDRqKj4;6r}?MRopV?(H7@AWC-TqEEp%8mW2TrFBCZsSWR_!LO=SHTW7Ut@Ll4 zoEbF1a@yqq`<1?jF)Lv6J_EyFXsKpp>V zga_dK2HohjR`O4~uD8IYde-5PD0|cDFHntg;-ndQ0SBX&T$GG5r>*F`IkiJnZ!}lK z;O<6!g|pm{2DstR-qd)OYmu}LZ$s?;Q4{L@UPzx&HvObx?=jYex-R>mL01}QrkyoC z@W^qHsV5Jx5|1huJS(iXw#hEx?PhcjpQ96{br?S>9PjWfongaqQQZeN{gSv(TJ%Du1rSt*llcGbgBV1|{gh=+u?f(E2H z@8Q&le929^65n|G!7%nCReq&xAE^u7P{(do;vU`Py7c&&xEg%vkJTL)(b?@>=$Bk4 zFW0M)9sT~DW~8j0N8#H5-}rYuxrl#7@6Z|RWPOrD`J>gSE(7l}ORKH@2-RdJjeCPS zw1$eD#jAMTd_`0uRbw5(KK-y?@F_}ntlYRI*(EL#|6w=UpDMhstR`-y1h>=JPm8qC z>i)|(Kocu=EN-D9{bSu<#MIvA{`|^OstA`h@r$-lkKqeD-Fa#UW$vYDiui0RM$%jL z@z(G`G4QV41bbBKaB6#ZE3p$ddlYW(O2lv~9|m(Kx|6^6mgj4f+>y)=dl%A>;f(9x z6@P5ri_$#ZWbb$yX|c=?r^WA0Wc`Dm$HKbb0?`VRKq?d`n7>gO<(>sLR$ zmuJugTI{Fi7RmfcuwY-*9?A@Zg~w!5oz%Z(_OzWY75QnmVFz91?rPT!6WLqSxYhu= zvx$`&Pn$h%-8*`|urKEecvvGj!-J+?U)Z@h1kb)N zm60!Y99w_gj3(lNyzjdB!HXh%gtK33aYVlrZ+D8_Dtd?=)Y&t36HLVkN6V#eu-@h3 z;Wh7q9k${jsuO(5u_|_t#It%CImKcTb>z=@vNNc{Nk&6p)EJDpC)LtjoYj?o1){ay zb8TrY##zmq-0u^8{WraNP!WbUBE5k%UE&M8Xy@Daa;Y-xohg_4$fyk}XloIA zDJpKh`$ON1*vK^RJuT5GsD(9!2wmXWZV_kUor&2-JHTI?5_dtTpVg##T&b(}+c)69 z-X;5v(<4QazvE4rd3Z0m_J6#FQIz0C*OXSt-lajVM0KFkYQ5vip6diwu?>b6Ne+f~ zzhMHmo69@Zm+*e&NbLSqcfUvM&JpwN`Tcb;-lx-c8&wcJjgo6r&l9S_2vIgcKKz}o z95g(R9WM8bee9SkrC;&{kGC?{;cHpj5}J;{4ZCtgKjROL_B`Pf*0<%uIrVHWWSfDD z9*@S#^nr5!Y`j1p>o2o1UM>yi$&BY}myR~L(@y+#j6T6smHuU_q@xJj8a)BI@8R+H z6lY6h;b&Zx$?;ur*atm8ov2MkhHm#Y>wjKG<#Am)uF)}Q-$!H~*C`0^1RXHP1lj5u-&|2z3acnB4xYqGN>cPm-b%qJoXoe-E{mr;aYestSz6ZL zPfa!BIF0c3e`cEQ4(mTw7xQoR>`jcPhxINUZNn^AP;_sI-H~wdDfRj_s9R3%x0b=X zvHLyZy)(5NzO+&=`oX0X071R{W9tpVjzIeVV4ejg2#KIg05bWQ{+-pL$^l`>DZBD&pUXu@q0} z&fQ4wSHWGshc=b1#0FKky>7t|;=7C4sVm+lQ%k=mD$*r4ay?3`Yo%1RTZ2;sD<)xH zPf-QSg@n0R|LG2G+H} z^HilG&x_IFp7apLb`xA~V7`KioW?WCX17Z*41Xqsy5N4@Fx6dF;uijCHlEQwc|S_t z|CgwsKRhJ*37=V@Q+^OP`6up{{L{>om4~m{!&Xv{zECt=2Cen;CGnv>D)1eAwbk}a zW}!3xh~MCApD;J?81KtQn%iC5%KZuIdpK`rG&lVdQFDbu)(yv*4s9B#puMS{Pt~Xm zu09Lh7Q}h!mn)EVi7Tgwm#O&g0vOd_M)k8F_BGg$Ui7>Ir=C>vTN~%S$#e4gGjlW1 zRY!1``(S@=o>f6=rj;kG6}5~0iB87-Wzs_H_6}7190&VG-|!AO9KM$P9N%v}@8GbV z-hV)ViMZDmOue4{Fz?Bz_guT4tJaB*nMfbR$(p*n9p!Kz+W$x22&iE_j@UIi(~jI{ ztwwz;`J^3cm0-pwy8Z!CdON?$e96QwWyEiOdKLd5lXxjAmn-{SlcC~uG}ZN-#!;es zskkX)q-`*$tNfEqn8?GP?tVU5K~DF0=zrDR{AHKa5*T$k&JVv|xAKK}EaA=Wqarw* z8GQvdmcsPH9^>$x^Q?YLD-7v6Gg^>`)=lTNIb~22`akFYJwp4|)t}np&vG0+eD&si zGqf1Pn4(I(CTo7Oqw>b&FOadd69G?K%_@*)ftYB|^XQ@yer`T4@^8pb zzhrR>827t+cTc=l=Jm32Th;9E#LXuvem>gtT}U;NH;*vbQ zCd)g^pj?nNoBq!iFnq3>x+{83@1`Slkshxcq<)|0ecfg?zk|(d<5WCFG(TaS@7fde zjGTB`&3H)MHdWhS;d1on&H2Iu@8XH%ES%*HGc#J0hi=+tmGpqj_y|9JR>WrKm_FP1J@zM3`s-br|almBpS&Z!xH<0#=&c?VDP^=Gf_bYTP#NV>k_ePnt#;=L^<}R2Q9} zm-W)NTg4Kbz{8#{FIVSB5%-~Lcb&REn)CXC4%`^bBwezXoe1xGzDXiHyc0MkjAR?bd{qfSGI@_@c_u!7|(bF zYiJBlj_4;IG0wZ9FGSp4Pgpj3(o?<)-ZhrQu_DOuR@ke8X`$UQ;=`oM_RF1HZw0EM4NZrCO`-tNb5Mv|-9lpbu9)5qsRqBCL&&08^ z*$vp&m9x#uG#%g5>UVB2U&=Z@i5KTrH)33&nk=4){f)9B8N_M>QE`PkJqjnSo2L9i zNA)h=#!z>>MlGDfh&x(^37&1e2xtPqmx(*x7Myz#QtVexH(U9gaPdLt)!S%i@q^z} zH?peTJ*d4ec_-ym@M&VamY(=z(VR|itT3!Ag5?$!Yi+Fkzv6oi^nXKycS*Z$0yM8g zyS+z4W`l7paQ~}t^bAz}J&{dzPBhM-GhQ&RTx!hY?pcEdp96WyQVhv>sGevowP}Z3 z>S4V9Sd(`Rnvr|(gUT0?N#*0+%cjRI#zV{8$7OZFo{0LvAFK+c)W2oUvnzyUn z4ROBn9L42!d@SWio##=%%6B;r_t%=!OV~|SN}xF;`4Sf04dJq?r{Cf^ZDq&3T+A`{ z1-=yD&N~ZdBF$Dy$J^Ok2KWD-Vt5btDJj?2ah4uU!|zwrxJ|0ZJ|nIhcZY!u#Oej? ztqdJ~R8~DelVwulrg_Gv&FrH1L#R<^CQs`$n>$bCPF6|7QBSBcV>&_|2#*cC%4^s>EaHjm;JH24oA>=%^mq zzW7S=n^c$7w|Wm90|19j`EgsRS zG@mGu+>qvcXN_mlnFlGMDsui-%=0CAa!Nft8r^D43*v`m#OEsU<7V||&$`b3t-jdb zskFDrui}j36L(|Dqt&;vV)aAkc{GLp>p7Vpa8UB6W{9~R@;IExof}fk@n@kxKI4OCW));A*URC|;0`}_tq`&n9lnGz1@2FbcB%7|| z0frMh%VQg7d4t!~fRF85FQ{s~5Z@sCFUsL^`iAf5Y)`WjW}@G4G|>dw-fKi{yoJ?A zJ{E$DE4f7N)AofvsT%*Ja@56Zw?g5uV)P8`xGk+Bd}Z~Ab5ZVv{&&KTk@#j=d)hvS z8f9eFDA}+)O}U5NCHd&8KNF9uLetdoldx)!2&k62JvC29HFNT$6{?JjFA}A1aj^Db z;-&1os-!BH7u|!@#%y%+BGLR7Mm{{QCm+Yl#VSVcjyQifzRA6572K z)i4}x420ls;x--BiMbL$@DQ?xzy5FMsq*JO=fy!(mtB`AJXr zhPw?lJB^Y*xnDL4^#@MU%eqHnDBG`P@J0K)vSVh&VdZL>I7I)xJC(A|pRe%o@J*ZM z6yKk);bXk(c@Z}YyZuys{KbB~TH@hWT6DZUNsn?TTH`n!dA#k!T=+KV6Ee7sO8hfj z)LkEFwaWOcF|4o-;mcZe___bY&G}ISxgpC`s!bSi4w<-%Q`T74=9kG;J?ml2_BEUT3I06&%t52t)#NSXRoafRT13Z!Fq&L+8w$+4Dq4VFL4qJe~C6d$W ztRhr_Z{^tKH^BQb;Z&@FJfpg})C^2xM^v58?5_{B0`@;_e!>ZZD{z-n80uhilNY<~ z!R=XQW{xKcb7U4li@EMs%lb98|6(=nzFJ-!6r-1U+{3Wi-zca{iCd|-1BvjZx5|8n zkoo^a4b9B0Q1A)UE?>K&U*bc;)0-PT1G(mP=f>quX|y znW1{z`?ynCq5coivnuIH3g{r-|CCy|1!K5AIgC2JCf_pf&6?N;vkZz}R!{fir}uFW z8jG6RR=u8>zJN!E6M>5*f40l79k#Pq#5}83EJ*Yd*`NF07UFw@F8591dWt%;5p$%loyZQJ~V|VN6euH%{ z#;BiXaN+#XcIV|jq^|9tq2Glu^Z5kN@grZR)gJPvK0j=ninxg8eAe$Pu8Utd`b;Lx zqw~U9wu{V6ZIO0{HhU0neo7u}#D_i?ITdtT=6Hf?X*pOrI)%^9DRBbsea5$^QJ` z-|f@*)I4;O^Z#I(U98APPGL3bD-UHbjSjMF+^ih3t7V&PDohbCgxtf8ah-L~4du5{ zUTsv0yfVL_TxkGFPsFXQdOyzDKD~%n@V#+ZKu?s%kq9AJRD`W?0->Y z4TsyuvX8qMiMFqdw>?+855F!Gr#=C@7t#0MnU}tN$#XD2d}lYfpcS}8UGSg}%}e+e z&UMK*^oGPB`Z%rD9RhmwnV1XHn)TV=&Q6?CFi2s;HY@Rpwx-A5qC zEAICnSMpM_2tT7Ejj))it`RT9T`qD2!@iGE`X&$Q4ID|lhkI{{9`=0y#^rP?OLK_d z)&ICI^$nEzMtm0)rPZPt>il@wThQ!whZ_^QRIkdzSD;!(XmN!nxmZTj;Jq~QTNYzb zqs>e>fvK^5{6$pIFSs_F)a^oM<`*#@&gm`B9ohreCdsWgt;u!CCf4IUk=EDz)TD)% zSjT_Vr?t9?@4>a0I~R5hOiXr8_3$RgGtj9-S|who57imRFC?l%f9G}nOLkcQpSt#$ z*onL~-vQSjj$Ql@i`uWF)GEFZ<%`RSsDpSycze01Dm+uv42DzoM`5H@amn#Yd!@Ri+J4aeG{vM);p-?P^uRJJ5H=2k4!)R-u4( z2u|1xxG_pCtmxXsQ4#(_4z;(lpTFHa^~b+DaHhVtf8Y?FP{e$0qJlGt(30Y)1eEM4 z3-9vw!94gqf^&KVMrFfGKDYMGsLOdq`UECh28*i6%W5wYF01(Yv9As))30JDmpWF> zI444ytu(_uYVgBxo#+#_`hST5YTzEdp^wzje6Gt4D>p^U>_e_X|Ad-2nflu5`Ks8} zGZ~(YQVXkz(0*2bPTKy1>4^tja}C$~j@o;XrkRIZ1dOV0C4SLkyoK-98pE$eCH^kf zM#0okt`GYJn^~nB;P5Z{x?jk|a9U?BbuGAybJIMu6`rPm{^KiH!pTHV+A^FtnA3`e zbNQ?AcET6%y1RN5v?`hWR^*qB_o)t#i?>3&*GrW5)kHyg_>zcdfPc5)M;7ApKMrjM z%c`o@ezv+b4^rJ8k2Nb*p=tQi<}V!3<0{9i*!T6kuGh`}UYL=~{+}$#@YZ*6NYI|g z8PNZIBfS^HSRy0CiGdGVq44J4bJ*8>E>AJ*AEm0=*EY^?*kym!ATD=$cYNKNKgWAt z1Ka9y8FTulK5}LyTs-MLr?P&&EL>cv*V7+&$QduQ6QG~ix-lAU9aciOOyVxQ7w}`E z3x-k_nvIO}VWrt9woXbF=$onjZv4~wFyeDH z@C|&kFsGh&O`Ta8!)oI+_7=31U3ujNI*U=CB?I#{eDIM2tva(S8rFaW( zp%kHivcZrqj5K_`Anah<6OB*-2Fj^AX>tC9ZpI}1yS8flpOxG#qXxsN9`5+G|Cbcw zCtz{->hU;NmZaRDHQs4-^c-0AIJPm`sKTk@%T(dv?v!5)jW@r!FuSTcgv%ggc7Db< zj&E7jrn-nbB_W+L ztHQU&4kR9hIq#|h_u}7mD9c$~mx*xhZ5%b6qFMkK+X8))(bvWquIdVVKF2)Ts8kz8 zWNA?s&U88>pPMDa8Q9HLoErKIXLL~}>13W2t2cAuPvg`35?S=)c2l)=>4iV}L~X@t zMr&~y<5@^u9p-qwqyk)^OJ1}4s4ws4URB^>Sk+OsErD}G<0dM3p42}S-^(2F?QkQn zKFEHK_i*`<$Mu(8*N;m)+sux&`d9g3?^=<<>V6%WQ4VXl7p|X|r8TT&*l+W!HP{M? zb3xS-5Foq*amY$`qnlU3w#8hHad>Lx=CcSpR0R*Ivdv;+|Qs zzl7WkOrR5_%9dK-pU&XRv#iLs?(nCGdCH2`g~%JIu@|w|@O9@6bjri>{%te!s}VoJ zYxqX2-X;d__Gg|fI-j`HjBduOj;L~Fbb5B%$#5C7ZbwUpuOp4;qHV*xF1K=y%DVI%f0)R(6X_ z344I=gdWqZMRqfP59IzU&Y#BM>-c*CETEFT1=~f)YV7f%J^tT|g7f+r>s87(qX&2z z6Y=qme80P`$1CoXm5;W>zi&#vPld=S_2UKeQP=x+RT7OM0p_qCj?wKr;Dv+8C zs~!_?ufw{{Jj<0T#A!L1J9-V5D=u2|$j)1-kM_7~MNB8N+*_(9*LJqzHT9#nC+=sY zHDOga4`zZm>&prMHIYu`>YvEvNxzQ5DVOc&)3M95#ND9iHJtU2sH3Zf zsjU@LwNuUQEgD82ce5gAt;g5)orSki{uAffVDU|Qn->$+uny;*}DPg3JY;}IhwznLSJ&zmJdmn{=@4Jo9xe6mA)nf7?kPuhgR+th#oC<-hZ2PpPBtLG<9LO|%k! za$%-%s0v_K-_n~kWN~#nbxOdy&#X(y8TfD#B%b3yITsUr7RQ=i0P23VyF@Tx0* z)e?U^i6>RkH;CxfZ_W43D*bu)9191+>VKv_Cye-h4F5z_i?hegwsJ#<$LRz;>r5 zGQr3(D#4NHCA_SaDqcrs{Aq?8-~o%wS{@vDC7fA(B^kTp$mBH3Heit zmK$I;%XuH7IDb4R260>5lV0p)um9(q-i<0qdKGq;dbygO$N|w7i-F(l7I?%p8F;tf z$?Hb$It=@m!C?q1a-B?Wi_eAl-XxZ;(XD^rW^bi2!nc#Rq>7|QC--~4z$!Y^Jd-G_ z;481kL56!%d!jgcAEu1;l&y3N22-40VAabgw8g6I2~T*Lo3X=MKaK02Q*WNIGB-pg z#9dea{sLz(Gf%oUHC{Az%r)1<_!3VrHZJMfZ_NE0vU0Xc*H#Q1hRenH7zgb`uBUcS z^PIP;TC?p;+h&H#sRb`UkeB3C7I71Hldt6F?1y!iDZ-mXy|0MGFNwB}81F{8wNaLp zRADPvow3&AKi<|vym1?Cemj+QHZcT>H8;OMB*sT$RlD{y@ALNR?%@MgPJXICJ(*jV z&OW-cyzL=YK770IC2yy8O1vEPfE*vIF*D<4e!hn%+ytFhiy-}@c${wQn_?h}`s@2Q zpdXux!JyO5h^1AsxvxI#J-S<4?K7Gw+821jVzj^kGd~2@WKuhB}M6lge4HpJ{#Jfc;i zradPx@W_u7y=l6o>g2DY;T92fA}YaE{~^w0O=g?b(N^Ldc5s`$G#}wZ@4(1f-23C) zj+v_74XQ|8wKJ=pQa{~{(^&CRoTFrG{ilg-udB+kn#CSMI?FSv4@6?gA z{;H!wcUAEY$M?n`t6AM)+uzjnt$P23<;fzI^GxE^s5LJ(Z*npReX`iAoobOvm&%h2 z=dXTcx6z-T?{6$VlhrI{l(V4gQ+UA7@-ds$4txGa@Qo*`%eRTu!W8ofs-3S9&&77U z%Vs_Q;?vy5rwiZ9n**;4s1yg_@{RDZHfQw(_&W#$LpYEAyx7(_bmyrlEzsY zU;8sEg?*fgpTTzjr_XeeN^5U5+tD#cdDb`EQ`KGPpaPb(Q@<($uda@`nS|A4wrcbB zn=0aEhcWZbaH~2V`3iT@sRJr;J!?_{^BpZxCqc>Zb>!*Mt>)n$xcDrDyay{QqtpEy z6?~fVtuF2+^0{Y;wWsCNMB3#h6+Kjfw?uj#3U-iZY$dlwi}jb(=5rjhLUdhg_X~Ja z*&Tax^jAQSPU`X;RjX6l`{eb^W=}hszZb37%l;*5e3Y!fOW4nw`xRmx@Mn4AYiRHo z6#LaP-ov4}96y1NeMEt__2=f~XbiF{7En{Ym@k{pW1r8_1B2jCN#p#3ThKJ90IFXhi<#ajv8s)P8W9d%dbt=ENfqVAz93=BRlX(bHBxNp9WFCtQ zDKbQ;R7!)8!Y?UA5h^6}kj%4ChRlRyNXRUi-tT?>@8^8}{d#-PK6~%`UhBH9b*;7c z=C$Orrd@b86Fh;P#s1%pKdX9tTNKQPbE7$eo8u+Kr->Z_E11S#Sv>8sB4VDRK8VxX^M`VnGsiu(1INIfIw zcH93p5TsgSyxE_}DZ%2D@sD^sTeO^?+lS`*fQop{6z-4EajuFkKb(3lv67P<9Nm#3 zv8|f*2A_1)O_=pIoijx?4T=|2*-wwZN_(V9+N$r6FDYx%KlIBz@v+!=LbSv= zkK2QycF&iWX!SgDbP;4syr9;)fLkAf8c$n&GoP{LDNdz` z)AEx<@AFYi9>!IzCv=^&n^10HzNNiR&U?`I6WH1ucdSPq(U@n)fn{e-R_)fdWNv@hytAntHpQiYvSqBdsW%#S3UBGj1n3cz!pv z`lE$ATqfH#;KE{*acxTF88~&7192#pL#BM9G7aBIz6AmLTGK~h<2z8fO=7ZhEyv?; z!>JWI7QJy?P6{%uGq!ZpEpd~{75!=#Lnh9lPyj#C9KWkR zM_AjddQMAuBSr1pPgXX+e5&QF`|MIr^~H4j7<#@N;BZEJ65h}B09KvgNwVEs$W$03 zmUK_jO0)Oj-GkwqK9!)&bd}AJ=uw$5Q1`fwO0bOesi-#F7`25r$GD|$*^RN*C!W+b zF_+`DiN4AZuVa>GfJ{0cD?m4V%nev2dLD-gD{x016>m3lX3OPcPyTvy2(k!2Ucy#4 zT+y?xaWQ2cYRFu2;}OW7L+3E`!9&O6Gqr1mq}9;zHkR%dPm+sI*u&D8;~~F&N}Y64 zb`=&&6U{daq8=W_Z|lYCHu>0#nm^^b`|1U4lmnqlu~!C%cYE)_=6P_{1~Z(`(6pZ> zf4%2L=W4~(ZNQ(|>72D(>lC}u6dPW5uJDGm8Y1F5QGYYKU+(PVcs&HC!c6<87%rPh zjGpnMb}M{Ye!gr!4x<)3XLti$4S4<`t^P>xj8(@qX^xHZ_*L5R76$7@S(^>B_T_aT z&Lq!%4k;qk)It(_y6t62W!tE7t7@(_#jct4M|b){d!@yDP?es$+yJpO@B?j9KF zos;l(gcWS5ZWv4bt*51OTB8m4{CsSHtGyUilCkf5YIqkH%3Qojha$B36Y=lp&93~} zN)*+7CX^eAwv*h!4em8`OEShY!|S?`JZQ%iR;aLbDxDb0VW}PMinVcn7h+jF+ujHU z^mc~_sn*xH-sN3qKAn{>5@nLVH_3<$r+>Q(3yqG7$)^RpZq*- zCHn|D8aq zD<^SdL;C%{cmw%3#yPvk(@@9f#PiSAB21?4cb=tm)c}~@l~#X|r@KsFCgGe-;As~e zS1hqvO}~kk_#5Vp*^lorPL^o5<0t4|JSs;gCg;_3o!P+@bsI5T3&&+ktPwep82_9% zQ-*dwt=72CW!Zu`Qmf|5(f?r%Gozg7%_Vz87FXsCruHPp13CiJ@mdQ^aYclVz{jWL z@?Hp1HrZvZ2CWW5fG-l;xqc)MQOA1axakoPEc+X|v~=6%+( z8-=+#&EfGXa~r8?m6>XtF#Y>89hcTMyhQ<)!Y}J&zlh+kvU50aM<>ekR=Q$VGx!Q{U z9#4xkG9*<@x}x?dhmZ5v$=dLEi+Dca_?uMG5K6VKRenI->fP_r0LLDpzURa%@t#xb zCXS*)K7->0?Z=mXFRy((Z{IJ7x^w1g9>?S1xsTCi4Y{19%G{mxuzVDkem(>UlY=ub>q~U* zQT0ZcZG3^dHUyJ*u=5K=&VFisk99q7a-oV0*`jKD#gXT%PGMXgCS*^mJQ|q|&qg^M ziBm+nmao!&#nnhFRSu8y^)h4go)k{-%D;uIv72AJAhR?hDq-V%h!M-zvxnoWvDTQu1?se@DN@C&ATDJj>khpoffnm}9lU zl^*lgYx9Gj)AbBrJ6o(``4As>@MP0?nS7P+)Yth|IpbuQ{tw6E613{5R)|Hv=*@?o zUPJucNRC#53&Sa^$;n-ok15q}^%6d&b7pe_&(epf?B+!(Jex>ApX?iCf1a|^@}yCmpDdSb(G0rj=!pStwZVj zAt2f@FI0~0`fd0 zTK|a3=#Ax733d{vkIIhKc5;vX*^568Q^j{;4^a*0aYr9tQFu?pWu$sL!0LL=nL;k* zbcgd2#}a>Hg0<@3IxzV#u3JiV9O44zg~`*bO_*2TrpBI{>Ip^PVf35cNyOL zm)=~!Xq;G3ZUv^imHdw7TFDA>kG*V+WAllhm1>6YUgiSy!x7chVHtPR^}G$$60Y|I zud|3sHDf6Eo$Q13jB+ow8f&iD}8^DI?e9zq_3%SZ8EP=p`y!#nGl zE--1cMn;CWQ53aOS1E`$Xr--m$3;5+bgY4Me;~r|b-lsSE6m+~Q3Q-N8Soozo=6&t zvBDeKn^L=BqNIm&{$*WHs8&blEWQO1y1U1{s_PGUE6vp{PpPfzV#)Aji}4hFdOOkw zUd_X)%Vp$2Tsg|F6rwE`LiNpjgiZ1Atp91w)ox0uKcBUUcn$Bf{0O$CS3Q0w>UOBI z@~YB1Qx@Ude6t|P5qa_++?rx9Lj{sU{n6Z%e0kWPhTru!^cifG3d4kE;=Q$%eVMw> z0H-c-1747m&v9#4;ht5hx-)j;KKs9$Cc6jHy@mzdk=Lh^ z&hS9F$eG!hoUnucF=9tK#jZPxrgC{ui}ym#>Pq)7B+?xAbW&yG&Q$kX6`h@}RnYYbSok ze(HLVENvw#k5fCnvG+XBW)!1zUY8%?%jSQF*fm35&g!JHt|eXVXntu&`Fz^(-|_Tv zs_C!D=t^b-(ukfWVy=w5{DKzn+%zSy5wgy=lglve=d?>bS#{33o}fRE&{)H*P++XV zBH(9F;HQnB;!qu=G}`d>_EG^~QQJcxP)$0yq=}6GS^XKDogQ+k59QMYBjiZ@kA9wt z>xQ|n=D0b$Nv5PbyzGC!QdP89^URSQe^9-p=(FHiy-z`OP-Eq%TEe@{Ho3;vvE2ZU z#hq9$*S|o1T#V|dZhEL+?}i^4lfw5a_sfs2ur&{5Uy+9!^7p!{?c?W2EI-w96#G03 z)xxt!C1r9gk<-t96iiH)H%-OCCUN(h%5w~Den@UyjO7xAmH3Ds$&w;!*GE*?vvq5G zQ|PNz7E@(g7rVJjeEvz9g{KbB(2zORmeV=VgE@}VOrU466Yo$vXR=y5etS^E!FG zAy!=^H&fr{ryW64y;8EjN-muUuR;Z+0m2R!H@!V0(?@o^ zPyNo4S;wNe5NEXb z3B9k26nkIFE@g7p{tfkAa0E|@^2~N;nzgA-70y&I<)mIk5*I8j7UsQXI7Z-n0gv)umzw0X|S)Dvd z_09K-UW|1NnoWSLDWgS>InTfN8~RMfK!xNWpvTYgs#bP7wi`|RmZf^T@#vdUY3Z zep?x`5@z()iwfP$3VNyGJvD!uqcbt#{$5G$3)OR<^%C<;ZS8WUJ-BQIf^0NoX7=GZ3vFN#xq%|lKjM)_E$xF!jSv% zDj)Yfh%qzql+ODm$Ii53z3t>o$We+4=tSM!tKM3~F{x(~W3VVb5VhmAw-Mc$<^N+a zuN7b6d6-)t66A=#?$~K6=8~{E9{t3XdLMh#g%0=PkfZU>;rIktciUua4*2m55B7?y z3EwQJ8qHU|dOYGU~~;T<>SB zPI%sC22bfWx8N6l_dV|Q854rdD33L2$&9M!jF{kHR5o6QUg$}mb)#QrtAHBPJgIQ= zOYut(=Pmis4#!S&wXgCPmr!=;{g>~!ZG+*}RvqP=-mBDJZam3rPmg&fh}KTgw`K~9 zQmilH$7aclUeT4zlg-DYs#MVv^6{!SJ7j_Z)e}4L@>{wdcWAIL{QVNDyOZwqR~q|J zvcI!2DrY~Y>V7PO9@ni=4!HWSIGn-7{9SA{GbdaP){WOwc!JhBPuo?XUf+z;sT@bE ztbTUn96gsq6y01MzbDn`spEqj6TbfUtIBn_C(D}1ts8nLaU5Dwz8|CLn&7#T6i-!A z_q2TefKzwO{d5y8yX3?Y3L?~z`E>|Ns%NG|#a-zY2$@n9v5hjTLEX)PSlz^G_|noq zznujR?57>FiuVVj0qUi*W_E^K)x07geAPDe-5PNDuINRjIJ@ z^*!s!@5LhO7S0M^iC#lFG#BTq;6^d3DFrQ)g2u?0ID$7m)CK?3RLkr9_CEe!qdY6H zQ^g$K-QG-OSBmyypfzfkyzpZHbbZ;x-(Xx`Sd{MMOkJ?bYoPoMDs!m)KWX<1cs6W2 z{g8@}aSrcw<(=j*f6_=j*(ed5fnj{pAF#?;?0N~d*2aywqUY?w9U5YkT}g=g`|adk zkt^bzUyc{0l)twwOWk#I{={VYJU+U@!wzrrZK#TPj_O&ZdRau74TKK))UBV(s`gaC zDD~?&`11|jTFhRajoRa^aqjIpogCgn^elA#k3%#ky1!6+^8z}j`IA})GwddF7r8p|# zuPgTRSgfj5{a(#eQMGXwrppJB&v3vh^0D`**S=SSQMJc6^hc_ji(x)o~)6Y>@o89T7luK(|ImH}A1gEBZ zqOdpq`3Ya<=eahIr=uh9^4v!ja~IRB%wgFzJ-H__+&ol%Yj>ZRE?@?87OpF8lA$!r zip#DCRa(zdR&i|iAMTj}JMuxz?l@!!u7AtBs~@+6Rd^?Dtj$D~Y!0>Wt7^1kyo2EK zhVO0-lwZqTYez2S2L519Y_OIi`IaNrI`0r@a9OnW;Nzu+%}cCl0ll!Q=HM#Q%qbw) zq39XxJDUVy4QQJOCwf3gx zy5RKIs{FpHwCsr=RZ*pBw;gKEld|{~HQ_-#@DzXPP;9xKyu>+~6ZMGqN)%5j#80>< zaSr2!PVPPC;ldZ$GSfW+#QV=GwPmuhf%Tc{zmDLYUbdH4;`ebezW0rc0lbf&G4oyV z*?gfT5a*0t%o0Tq;kJsYxYd5$G(>UeT8v+NN^c=u(h}@^LtKo4AN8#3D861T&nTUt zm#*rD6sPZ>!ǽ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Π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%0A@# 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

tro(Z z+z>9lh+0g^olW)5DAU14>&f3g)5!gub338K8)u8#iv8%v{p;q3TDZCvOWk3maYuKY zMfhGGcf-feq+d)gPXA8^HHQhO`M;0qBB2^ut-h;4XPnN6!v|!JS=a*ydUz1(% z-Zr`4iGCYxgqPKubJY-a;pSL1TOV1tPi5B6Y6_c2f`x8j<#=`cCSAc|qPm&bj{CVUa5<_MDMe<*xS0DLMW@ci1+`-Vyq@` zZ841;Cog-#$?Mg6->N|0hdCFj8}9X6vv{W(wEh+zY-5=MP-eDx`4}4xR^M)glY3$R z+0?D+2~e&RUi*M|;oF zEku1cTA?)kb(@YwR%$o9_F~66@L)U3er6tjIxd2C(o;km*wK^fC@V1M!E_I|J-=Pxt@I zQ%-Af(5=SVYK+Tif|Go^N9Fw>yk4I;-+H>>+V^o-UojQ$>C~{2hu9IcqA9) za0_nV42|;eNjtjlcX=~L{#Azz&E-@pDyB6>A0717@Mo+2m$%bP)4z$i?DVr%@_=X_ zi)|CB$?V!%uEZYBd$jHTL~|$`ci4_sNfi|-iz(7Vn{*gp!s>Tf2qVL`X_*Sy==o^YGg3%KtxI<%Hp`-;k6CG$!oA4yz7 zsXR*gf0k^ZN_GxC^?lNvFX@x%BUtYgR=h2J2s$Z{e|T=$`9SXr=DPrOA1w$W{DFYBpXoqhsy4$j)0zBv^yiOpu^Ch3Z)f{?YZ zD*s*9{XKDgGDm6wjj|~*1qatjE!DHt=~ivbgkMur5AyM|`l}P|7Tm?cv+(d*9?hE? zkbKPvugW5Spf7eNh?beu&7V4RW7MY8D9;jbbvG8Bt2?w?P53R(l!VhK?2~U1*>BPg z@6wx}B&H`Os=|sx+3yp%t!x_Rs}0Ggito4dpO08c;CojyXhZ*%vwu1um9pZl_^&oS z{y7{P!q4|5s=(MbRAub?U0^4w96eQ!Wqx+{=06H;jeXSC={<1qayT$Jl}ydS+*ROO z#pE)Y;tpJVT4j0A_l>1hiEp#ZC9v-e+OfK*s03$Err(vze`Af>aK8>+aIM{r{Lngw z8Y)h})qrWS7kWKyGQ~=Z^U(D$qX?}xQ=C1JK9Odc73+^ixs z<@zCK#hjh8-xg_ix@V_C`g^%^Q|e&4eb&^}hV;bj_i|m8ojvYqsVOjsn8ksdKYg5(+zx#o#!CASpF3P$oYe?4U ztOfRA3aRd3(Lq3l!6e7&m5ZVp8c z=u*E2*ZM<*+9E$c{rEOk9-DZ`pBXCd{fRQr@=2C2K)sD%`4`y#b8CE`GL0ARMw-hd zaB`cBn`)Gb8Fl{`Rz841-mqtxSAC)P3Rs%tQsrh z{C;$yyHkYmer840S?t~q(QVxVsjAahcZ%k%Y}*Kb#69LMbe!V5t5o_GEA6OLci0Rj zvcc83;37N{BlV?Y;#MVWkSs4p#<9UlkyhEhaGT8j)XlmP4du-?tD3-WWpxr(h>SS9 zHO>r1sCnDsx$DgEN$NJb|Wke3$C> z3Nd&d-Es<7$M?(k8+!&+tcs&Y^U+T5> z^;4fZtZ&qTl-|oKnZr7!ZS14OJ)J#qnMu*OPq44j30~*Uf1mzt=4RocTK! z?^g6@V)7on$`W|{YB;rm0w}JIiGA98sPN9%yNG`5&+=tBHarJcZZxB*e0(1d^{~1} z>E-o8U*hmm$#YC6DrSMYR#ykqq{K{ zPQ)!_7qH)r;&qwGIhR%L@@KsI=n>HzH+AK=@B0w7|C0{%YtS!tGS0(zadN$q+!{l* zu9R2N;Tz*OZjccdtHcLoymcKLHB>VlH~wR4sOqY|RqEh4nOsMQA&*X79*EjO98bnq zKRbokQ}wx61$&wz7%YCLJAd&Q6@Hs+t!xK)k@@tXNVf6rIO}Q6<0*Q2zsm7oqOLXG z1&!i%f>EOND|Z|AxK7g}cFrS$^epeYM-u(E%s)yQ1t0jV7!xWG3QXiQS`Pt7%ak6+m z#7NPwv-$V8R9h%IPM_{6b@e?mtE*nuDLdnXU_nm0FK!1ODSqSYhlV=v@!DBa{PVDk z$S+67vCno2q8uwvO+Vq}!eU*rJE-8_@!{(-G+yF5i+3Uh*M85n9 zGkV#T`A+YmiI{oBdgkhgMpx*rOm}G?wRDFZOtSPEOy0$;n(EEQjj1KXQh!XgIavX+ zJk0Bb^ey_R!RE5@8ySy1YF)LV^H%6HK=#C!SgYmJ{q$@*8PY}s#*V;T<9x|q?P!zd z=(BQu?jaukBK?($>_s}e6$bi>a=2Z;xPsla&*8-!{~0PD+C$dvM(xe(8|bHt^(kJ3 zgO|wBXL#z@^q%y=^dGtiOWCKBlY+sd*R%94_L&X?>%qWm*;UZ0hMCb^p4_jZyHS@~@idQu(H1Ga88-~Opesgg4F36)RxOhgZ1nUNT026gv4&bbnbJ)Jpa z7-wkikXbLmve)>1IOeJ;-(Q#USJQrJdign??+!`(S*mBU4BhP>krra- zHP(H_d}gq5FMaL(kl=1g_EP<)m2!Osi!_8}^<`LlouA&&@I5teC8u`ccB8X)rK&-( z!C31)QS_*YY{ctdQepQ~oW-nZ33W0ClE%9LvELB)(X|(sFR=b<(HyTQzl&Y|Nj0)> z(#KeLuuUJVdKRC(>z`h#>vPt>dmkoks@rmfnbgH%9U#z1qx?t@R_Cv2lyjhS3D`Vb zh7H80ZDI9ax{mXVbFKc;KB&4>+>L=@4cI5no`h1K!CQxu=jyr6q@Ir3J+Chk9~433 zq4OyC+8}*MZ>q0RDrIc^u*|A$gt+TrXCmHIe9Oug-Yl<-CLvoc_qaoW*y7vhTZ&8eMQbPl%oSFJJ?a&Gs{`-M<-06&dk zn@|Yl#m>9N>7a|W6f)1jG40GKUd$>DG0N~;b7&p+eC4MPCQ!&b>B5Gvc_OB`gV*nd z@)yh8Pbt}E_F{JN%4EHyg0M99n~$id^SjVfXA-GisP;J3n(9VZ2iyK!87XcR@SsY9Bz^mi^Wfz zMf{1nikBaM)r(sQ3vVz^j8c}Z%dvZWJ++#@D#O&Zw0}FAaz=V{dT%3%x8?UlENR z`0O7Q@MCiD5?%AcWh3Fml{VdXIQm!Ok@((P!xIv+gMvs&lvihP}sUlledP z$IGVIKn~prNPm_s7DB+g*kv#Vyj5;IEWduy1*u0(tft1!H=9w;POM;?UF`j#nLQxO z&P(sLA2kZn$E$Yn*7;Z-zZ_c(q7CDnwD>}>ChcvaZ6bn3Oa5TnFA4zVAR{$=uIazFM{pk&0~K0eH!s@-io_z=Vv-; zai8qdelC78Ngp0h6qaGN{MF-BUA#&VH}$?iM;(RFjn!U{!jGr%{2g>+Q`Pex70d(T zxvZ6aggr-6WledjhW~W2zMIt@@8O<{d44*d6yTfYcBZFT)&FGMF!2*gA!m98e7(l$ z@a$B)7~Y?sszb9f_PO)R*qUPc30amD^L;6xFK}URvlt+H7OD%zSmQ`>c$``r3Kc6- zQm!^s6t2ele;h5BdAIvJtR}pDy7bFXE<(toyQij&_gQT)7WH;wI`s^ zyL7^h{9c)DN>g?PR0$&P~+&ZhdSilATE zCtkw6hHa|BkDl;oB+tLA15nngZnF=%gR;9${4Atfw!)zASbL^isX}o)#fBHa>5r`- zUM}g(Di_Q7V8okPI@VQO&iBU6U#qzLi04ls>qoT9H}YgU25N0a^KjEO6vsDWcaqs$ zi{WdqQhnIiPv$<4;}2l@PO?4}eHr{W-#cVqrhiYLn{`y~FH*ULivAV~-A@6RPJJz^ zN5Zh4W>uT#yZNgT^8O38N(bx{Uza9C@Ff2FK(_9at(&Yac2}=ZL%mOJmcgv+c=%DU96P&S*g_ap*ln&jme$OPS&|^K!871=@ z@qB9|^`Oe8^4V6^Q}o#4t&A1wjC!h_1y=NGdaYjLC$wG{Dl|uWGb{Gx-4dx4;%FK~ zYi?av`0obhG#)k{p@b?K={_3fUtVh?w`OHV*(SEfVYj$V>^Kf@>BPe!n(#%89Jk~2 z$3O7`+jxw$URR-s-?R|+?Szb7#qne6oHX<%ono5o?^UB3CQ@&4hGQ;Uck`z_ zTgU!$oFeRNhJUb8ecZZ0&m|wUXerw#@!He>zor`@9#8AKtd>D7W&S>#^{83ITXron z{MyIPbnK_+Rq4;vfjE(Bj*sVw=S}uXQ(1fQ$G28FP!1nszsJ;uIkEiQZvB&{xIa~2h5eTqEzg|V=_jIl z%DAg}{yw8@H=~>UTg!BAs`~A7cLeb!^n%j1G#rQL-v-;BRZB z3;k)We-pLX=T5aXXX}@-bX6FCCno$BKX1on3!TeotsAsi1v-kZiZ|SsM3mip2WH ziu+LpvRLf*m&#NLAL@=4Ra;EL9M71^)8;jm2M6mh{Y#njFwO~#H3{RimGNba5nl|q zv9i0(X`Y(5uH2ZXMmPsj%#jZpSZ4u`&7@=-tHO8DIPpf+-}vD%u{>FB_2K>I@bLz< z;Uuc=mijom@WFjnmOHh<%HCktCs?=#uQeBygIMf6 z%z6%8b%(0rPd$oOs+Otr%g3tm*UhV!TrJ`J{3_LRLpi^gUWqdWRh{QNk%(^r;%ok4 zb`C!BwMIvp;Y0Xwu9zOq^N(d}=Qs~Af$}RU>*J>5#&R{@$hgfc+B)fUFp*yexf;~( zDeoWgRZcD}JzgyC5!3yk^#giBcc=|Rx&E!I95=^aWL?{3z+8-TJq)@S-WS66C16N@ zE1j9GF|>z6>tCN{oTJ{)l}VUPWgmG0HpY9HGuxk7n%yOxI*%3awTZZ+5J|}eX;+%g0 z>#Ao)(LE`ly156srXb)r^XS0FLvZzAv&)-a3p+;H+5X$yUuDyVcqhx7f9su2+0A36 z{GDrQiJy{1M9}Rb`X4o7A2@w8#W7lJcg|?nXW6d1wZ{pSYvgEE2$XHdf1{H~Ywfn5 zPBfs59;DF1UlVavZhJD-czXmK8pqa`n9okLxz)FR#nmj6`TSBVIi;7l&R$yBr;*I< z4^dX~R(aLk)wIPHJC2ny=PZXArH2`nOYf!t?q})zI-Cn2M||)6qqALK`U2=3X9qSp zQ(i*Nc^|F)wiqg{LogZ#{i1(cTE}e&>-3|_OWTQfgXatCv`=H7me?!y>tl~^jZ-UM zIPDeZG@8&>3&h5mWP6Cd%A79a_j}~mO_^BC>kRj7D0S2sst080xh(vflU4609(O9~ zZC^3`ZU;2p6P!j_ZK0}rsQdH<|WvKgL*voZ5?4n}HnOx)C z{UR8&L6-fS$gMi-C~sb+l=AD%w#7qB=$N?czXOD>sK@ySW_r|`i^A79W8cqga>1Uh ze7;dsuhn&rJ6LMddJFJ?{UVft(qiB~FaXQQrS;Dq_yAQFq|R7}h0*0_&4&T+lW zGOr}2^86a-xX!0&r}BKlUd(Ks&nb2~^4HBg)+VEaPC~h-^eXbDKIh%~>iH~p4lR)% z%M!2q?=^`$>Zwlb^N6bBFSSA+{l)dNH9tnJ!9JaFMi#vPLe}(vLC37?AqbS$OKBhT z)Kvd@%gTO{yLCmxP`Q!c%Hqq)kFBf}&S*|WccmXH$@@Z1Gv213^Cz^AyJU~@`ICve z689x;O*{be|43x>*AO-E;bbYeI8#NrU#}s)G#$o5(=zdMmd~E@&#u(y$e>(CxUsm{0P>H5^iG|K6e-p2&vwBW4<^5U%O;Z5C)uJG)AI1?v_E_U|k z2dBNigJ|d4)w)Df4U?%GG0@F;V+`Qvj<+&st&O4 zJSVN67f0VY*O9~=*YU$wMrx#Iu`r{CZm_Dm>9aemtUN^92b~@<-#B;rtXQmzxsLJK zm*V+f3hhjys%qf@{pr^;F@2+0+$W|>WKgIxfAtkb|KYcVVzFK7A06LeaIu)v$v=yn zpPd@}#5uS;BD|gIZjNqM+yHmG{`6AW8ueyDdEY>e{i`!~MpQou5sK&xJjJ4QD2`pS z{X_9M2NSI|v%eEX#o|k`o&Kk?qYjwNgM*Q6A9mW}kSF=;=SbB(Ty--aT zH$E+ut6$3dax$zJ-kvSS&ZATAgo%eRSws2NT_rZg+S=HG+>FQW%yi)PvO@#W7$-mD z&B?IyQD@lxOOz5pGpVy9$qRVxIm+`FE4u)vUaO{xw;J=Ox6mHL<={?{I9i=iKDiFM zE`szQ$&1eug>hSd|x)fdbvsFCew2vWo3+80wmdUuQcmvjmmvLWEal~o5DSrM9@i>~gZ%64Bz#L2TXj9g<(hg|shqV%Y zxv0dZx*zf0;xJ6VNCXvCl|&@g$znRL(Qm|-!aS!>Wn7vv>_c+ z5JJ{9PNNK#E!XR=K*8V3$0wapzus!5P(ycSdW+@kaIAG|_YUf;D5bZ^x|-0Qp&Cv& z>-2wLV8-jiPqNTo$rf_sMcuZ1IDVipMytnWtIs+@rTpn7R7p!S+AIUQiQkfDloH#y z^gK(*x+{zwUz-03?|aGDPgDxk)h@TvLbtGVyewP5X|#A%>_U40uZy7;SSznF;>)_7 z8Kob$o%UBHe#S!0*kG0lH}1qOt6vp2C&!Cx2V~3RI#5GZE>-Q)#(r;n2N17_Y?om> zXtdnaV{~O_!~0Tt8gprk1pX-_manFyFM_ObQ|Vm!S6?qD?s2|}`e-H^PvQ8_MDs6L zG2R1dB8%sWi^4qnxZTJ#vc3(39*Upuz#g6H>COJhD0;dm&rgGZ!CIx96Q1!D#)^C)p zy|MGNkRzuZnFm-W?hkLx*VB1@p}Kb(_J}UkUl4zho_Y@5&Pl4wLcY}AC{tgM^&hJk zj#*bHD|Z|!;sF^OzmQ3X`N}iRJ_4$%3 z;m4QeRg)*@P}A8^uO5xJi|22UV-Je!*?40V9emIzPm0vs`sJ^y;A)HKBNX|5toRRB z?S#Yb&=>sHC=FrI6L|h?svb*sqCJMeqGr_nLD|(wy^&95%oVqd@!u}^z6s+0j(>`Z z!njv_6$O}&4w@#v)~kR@!oq9Vx0ig4?+FXyj#*f&sGZuSP_d_ypP3dIyd(bty&cC#CfHM#pFP?IsgY2(27NIMw|?*Cfh%i>$Bmah6+tO` zU4!{@wVaPP16GQ|YJ4<9uD`6`-j(;0I!nvx(aP5KH5K=8rh-0Ab-Yix{zS!uR{SGT z2nxN#U%Pdx#$xAqZDxQBov4DI&O&`e;%5|RPdvXxUD8UevD|7_!sbPZdlPdr`BekU z52hDZJ3Y`;C2$)a`zv(?zmKKPhKrty^zGxcaqQTgpmGOM9T#T4qyB-qe^u=4fQg0J zs588LOE>3AX!f@K(LA`KC2YM0LJzaD*nxgT&#ay9?KYg(0!IHzaV~&}YsJ#9)Y-8_ zobu@<13ymIk*QD1g44cXxk?n?17Evf=VUr`SwC36l{URfUgYPoU(_or6AznF#Php} zoK`$aMgL{;5{SOWnZO+4=N4LO7{Axnari|aHSYbsT)ny&Pu<`*$9ED(X`$#dtkXd` zkCh)$A?($u7|NPER6jM%=1H@;8T#A`S5xW5{#kFe+WYwHYQ5i-d|$`PugS2FFwjQc zFNU8Vko74XK2GKSE0#}EQT?o}hpeb7zqXrcAkaE~4F!~wBL7MRMGdt`ru}F>=djLw z_SG0e^!*OITK zAm6{GS)0P;wxVzfyl*9vYN=Y{_WDcIP;qMaW)(|( zA!eTxKjm@p@XV>D=XJ@Oz{iRd@G@Guto?|mGW+TA;?NdR^LnO2_&QM*atwg1bDTbp zyMvdxGxbMmDqeN#p|5zE$}mrQwM@MUYZQj9AF%XD>{FaZEaV%t+;mlW8l;I)mg@@S z((9PQU%6?!I#$z(UcJW5s>#z`5G78^{;P-mtaVk!g8AIK^OJ7Jei`zeE>1fP7HVN% zvXK)8f7$iTWj0+|=Xv-ul+EMz#8=^5b*p+hQ_&R=Kg-oBuP2`1`4#NE3nt#GC$KkJ zK%Op8Kh@^*iGF?x40;W>-l#_WR%G?Y%h?d<1=^(qe;wB&{Z2(6H*Hqbb?+>i<2CqJ zeq-F0cG8Kg5k{G4cjGzs?ng0hQlSl?Shtw>AS)<{Gm1g`y)bMiPOYz_6nAMYRIN1R zt#{0)5ZiQ=S8q}+lUceYTs@>ho2*BEnl2qDPph)dHdq#!dc=HwOPquC9}?|9=$8!< zKk-g#0};5?PWFr9FivFMOug=x854EV3)}DgkTNL6OYxG??nFu1AK!Zpu-=#HsNR&_ zb86&c>bdBT-)uHRp;*rJW~-ekhkH6NFy9zWAYywXodboAW1WKjx*L?AZPmw;UEutD z)ns)sd==}A)VF_;m2aVdez2|yD&jxvSjOF*6)DZbxbG+y`^c;|vrs3zJk8!%ZT-0s zGIa;l+L%@yXZPnmHD=|^S=nbs?&*aYsOiqT9V>;NK|}kw3|k6+UV$7(6UEg)5A%Btv$=~- z_|~3H++cVKX1-mvN3X0{dJWv@BYu7q`PZ0DS$;nN#}+{5B@pc$imIC5upo2(yC$7H zNBsN-=i|+pp0cZnb7rgPmiBzL2f924%X21IL!PG+0}|74{CjwHg{VGPzR&e<{GIGe zNqwaA(weWvV#0U$>t5OZhwQzF?v3*}?Rch}-bSoz871|Qp3-V|uAmzeUo9U^hR(cE zp2pj!y|GuER2+^4E8>qm?B75y@p+jZCl3CU6I*!dMKgNGy5jWhdHD2k+IORjzmkp5 z$oSK0%=Sim*u2g)pLfltYN~=6ZG@|rh`?v)%z1FEOX4OumP>rcja?7vlogVRH`DFK zsj+6X>TR-Xx;mk9I&Phqh)cI%@6D{7Klu?aeXh^?M&jng?exOBj8^E0b>4%|c~zJD zpy3(kDz3}yAKb26veO*5`zLkix}|>ODC4ZsE%}(n9GkdCk86s4*H^G3iEH20pSVi& zzv8EYFZ#-jF%Yqd3iSti<^~mE-0wRTs+MKvBl7%R-_pG5=YMDC4MvHKKV&~E?x$Mo z3`||IJeH07!m!%%y~~7%NZrpBMbqUJ-q>I(SvGAdj?{ z?SOFuH+XO@GWkauP@|NbkC$lns+hZCsD-*N zDRoj8IM@ZcUZLZ5+OF+fo@_z=tZ@#tt2*u^ufOQa)QJ?(m;V1&@pH9~?MnT~88pQa zdk42>^vYA}xTX3WSBU3>aJ#3QyMCqo?=VU^QRpi)tiFo1H;Sdg$wP@Dw8-vc+}j=B z%^uN-ZbCWV2f?ny^HtOZ-;16e^kKf#CmFQrKyMsVzis2~4ZaK*i&CV z+=<&Ks0W|H6^*Hu|3p;_oz2tspW;1$($v_-#Di4b0jpca(nZz3v+4OY^z&@7_JRGL zBtC6~!@7&aW;&Z`s^w9g`b26Ob{Pnfzo(Y}_TR73^Yb&6Ts!|{2JR}4D^^kn7t$y- zMc>V|{4?0%5;ffCs=LV)!cVYpG&@|L{9Mc|#HGK;tKZCLg>|+SKikA|DYIDu!4GtM7PJIAY!Q*;2TnorcqE8xXa=(ZpYPn3)C#YjEba6S7x zA{NKt1 z8~uinU)Ir#m)7EY#(OE`{^oRU@+VpKBR^G8MGeF2n^bVsDPSh!oeG(vw=tK7 zx*p2MNw?l=+_OfRhU?1X(SOCyFQV^#t4bL43RT&6bn1oT;~V=jE#&4J=Tv@k-sMv& z>IoJvr&~9HGWyNG8(+<}R6!Pm^FPpZhxBW5i>NrExIsNoUAJYHGff3$_zb6cUNXX6 z{@)N9p{9ORbPwb8mFIEJg;d5tD_SdRepKVco5(k-P~z-Eyv!1()c#3zgrzexnKcUQ z#Osz@DX|f9>!_$7jg!mUyF98V5%>8nw!%x`^(4siWwHp5zd-F4^^@(z-xxD_j%tb9 zr%vcp+?Xm)eLv%Ow#Av}P;=4e|CFcps^H@EOfNch4_^(`L)zukZdr&k-WXFvbUhvD zuc_S$dVX>HU{7{Qi@@zL^jS6O8)kDrPMp!V>86j6hEHA9lkqmo6>=+j*aM(YbGZDK zJ^dz_;vjWB$4G@BSbi1vVvO?+<$PGBQ;qIiAaddhvl%$6FztPfoSNyp)FO&*f>_R* zeivp3?!4%%MOXU;8)f)zK97oE14OKEO>x?#0$k~DKXH|;ir##@&2_67ybJ5ZD;~?) zxR!p+X4V-&`^P9#no52JBUD%~t=F5Veo%LL7Ah@T_xJi!)JpF(zG43AYr1 zlVnvDJbH}wS^-a^@0jJUazn_+?S55<-Y+?qmIb#aJ0G=LR;+Py^A$N!(=NzV$kSPu zZWWzAz;8cCFEnl^-9@3sI~)yZ_^CPwztI>yAi^@e`9e6WmGxZ>z3O1Cg6XeR8&_G? z54sjt>e8LTFMC*K3l80FU3Ib0Lo9b#f4@GZ`;CgUlt_+xG`>F=K<&nzY+HD-cPifV zSZ!UGQoC7@=V$o-DsKN!6y}j7@fFpkWL-L9Ha_^3j&EqB!77xJuwtv#-fcIxl6}wB z?9+;!FBZ>9SooBj_}$*=CG0-jiVq}f$jKwa$2Ltx&s-h4iclu@VTQovX)M%2PCR9vO(@i*SfUSK z6-#c$p&N|yCC>T9xrvhSv_Dk(GuahS#&5o-y1>$vv|v%+SOy+<)(d?YgVweS`wh0~NE__N+V`+! zL6yy$^xI3AB0AT!MdGjof;HomGn;9eGDZ1*Qxop#n~u7 zlTT(P`Ky$feJ;<7K#~8^+=Z#eN383Vb@eclPLTN)Off<=@uN6?8e?_UFI;C;T}5GA z)m7AP-%{=s#pLC9_#stNGIhQ>=x!aB=&EJ0NiAqxRSo&G*nZh;FV1B7aC0eRHpghV zH7fos_NH^nwVrw+U+K)1)Gb_Kj2t4lm3X;@&x6$q*{}FfT;4}jmP)+~1qZT4ZYpw{ zT-d?uU#YiC^IlKqZ5F}FqM5U3>#*Nns(^7;cR8$R#6Dl!104b{&fxvq`Kl_0C~i*i zCg65@C&@}3*liJPZ;{!7`$E0eL=2Bn(RRfak)7MvzXt0qkm2=sDe338!kiU6emGH5 zMun|zgZyVR@%Ik)KMvdD4x)}SJibA`Q@-!vtC|$aRjg#`O?$nf0y1ocJoA{_B7Wm#Bud}93P#PS~58Q;YIt>duYZ0@C-o-@w*e15Im zJ*acg(jLQBsFhZV;j<4mf$EbI| zloRm+>i4vJOJfYS%Q+X{bdX)S(x0lo=E%H@sIRwV#AUh-(I+n9KZoRb+*;LE^%UQE zx5Rr(bWtbzGsPax`}T4^@aJy!{#kBKQO}lugHfqBmkV3zoGh4LlJ;pNA7+c>Y<_qY zcD-*Wup-VHZ=dT?Jo6y?^b*^JoIbpfw>qkRO5pW(sN&grA3v!b-W4^kWh(TRV&hc^ z^;zaS?=HBv8-K;QhW6Iqi$8J4Wws& zqS+^;cc*J+y_&T)>$|MivbJU&%6d9$vO73(XFUc({$%Sas_YK5&Y;Bc9IxbfGRNE; zALrPWqgA3e{ap;_+(27yRYlIkHz(-R(vYie`eU=~n<|GFFNDck&A%Bxf2neuAda7K zisV_*^Bmp%s$KJ*cEM`s<$uao(bxOJ$@zu8<{2lq^2yJS<$2@OFVyxp*k0M{TJ!OZ ze)lD`&p&u@C@lS12P{tK#n=7S*yKA^=c{%-rpwR&yW2iap=76qCx1*_suC{c_vTJM zr1!9zLK!0;D!MaiRHAmWJAG1(MR(|X&PiXMb$!+;_2Xe3mLJl^vcAEC-_YGp=pEdN z*|r!bzFv+SCFjDAcz>fbEcu&qjcQ%X#IOMd3`2ADTY0p94~|ZpmPhP2SfY$et(=wFD)0Z z*C|+&7?^0BIGUqQV)@zKXWl#0>umoVcjjo6V|$Kb$vabt>?YZlWiQI|qIr&TiKcSy zARc)o(Sx*Qky211u$q%saS{29&72d0mtF7M7*u-@-&)LMZOzhQH@#c-QyXow# zaWWt~Yhk)z*5<4_+23bv6AdlpLq47F9`N)k`LI9H8djA`%@a9u?Xwkv6Qjk%3e{e` z#(gF=m7Xk|bte70FB{L#Dw4IH?zupZXBq`F!G7Yo6n+_+CGKedSS-ig5c{bA+D6<+ zrIfIv_MtvwjCE9H(;Vl;sezetvZ!79d!g1@e78_vXQU`@oG72jktmvI>4erO9jAkd z*iZUIXRp4>ZwfB{)OhQl$78fh<c2!~Ir9Y8sER{ILY5r5Zr7_{)^|;)QmIb`FyJ4 zKf1q1B zZh+mCEC-E;^LK8!Ge}hwU+cte{Q0T=?bJY9zFq@yCfKzq$}YvtCT=&0JGZkSRxdkC zE1_s{y_jX#r2tLQALm8o*@11UP#GU$#7_M5lNfy%zEz|GcIv*xN#Zkh3NH75cq1`-%^fVZcfFlFy71>!!ke6ZDqv8 zFxi+N^Os`Xt6=#RI$sHT>lM2B3cBPUigOwT+XNOCfMNfs8S=}Dj`p9H%7QYoWrBGB zlUl#d7>}xAN19I`mPy+Ie~l08vCIb)`9R*zN0t7ef{FJM8;amTGINz4RbJ~JuIl;J zjz%sl)e_f*#x9utNsaxc9zzxewj&h5y5Q_2BD7F1bozej?W;3}X75nW|Q`MAX#BFncKUMKWrM$oo_r=ap5_BRB@F#_I1MOtlfi zqxk3{V~l0(bJLq(Oe?&#n`LfcmueZs_pP4mX}bv9#oz@Z;97Zbm~QI_2_i2mipVGAilikY%3ve5GGjnD4JuCw(BFF0%T$`p$Xjo7UztNMCyf zJGV|B#ox>5n}KSFAK~6uaZ*md;$QjrBeW?h0^(Mjxyk?3FimhmeB)DIR`)elPk0kM zpmE2*x8mmN|HsmO!2eveZvgilKPn?hX%Lc1BvevDLxf55v z%c&}&l+1`l;od0h?P|23YTN}* z?xk*KqqqfKpfNlzfdQP+1x%E4SLN@odb1LAt_SUi92a>fAXh#yGXh)x2fwN*i=jq$(##hU!0(jc@l!|0J z#2hM1*qeESy;H>3Q0}U!Q4uHMrzQH|ywKraQFF@}H}RU7b(J;FFVQr*@umr0d>$G< zX)fUfx2LJ%;nubG`lQEnQzP|LAB)-4c4n^9DE^|sT%d7f7fo{^T283cQ#XE9^u54O z4Ow}(N**-!o0NyoVeCb$q`jZ}5FGzq2eKF&TZm;%fyn9gd{vA!+wQ|NSj+->m{JE5 zcE57izj_Ean#MBaMBi!1)S4Zhg)kTKw*6F-gL3=|R1fE-n&6UqqOW7Ht0=8$VZ$S$ z=V98^OQL2o3-`kHbBLP`5Hq|vm;|j3o6RVvL3U6k!%Oh}MRNEC{9T>XdYwWMR{2nV zXH%oD*+E!`(G{Y0%!d+XS*EBiCWG$xG!`*|-?NFN;ns7^Nt>KTX)KeIsS0)YyODAJ z#d7bB|7qu^7sc(#*gSmvWmd=~?yjj)YgNnZd==Gujx(2C(dR`@6DNFk>7k3ktIu`w z;Wg67V9qwy=?T>ygrYlCsUI-==jk_D6aG4)X1*#vnwrl>yD0^s-$b!?$=8YbdAzo@ z-Spp9>lOlvo_A7fJVsSn?4>Y^^LSR2t)JBi*HK{x$cAu>b&o{1nNd}!EEB$$36H8- zyIE(cxum3yj-et3=6#c0_OWm{?{_VdN1hfp(xT{EQCwVQn6BdtHyS*L+1z8FDHSB1 z2Sq>U@2gb8Zt(vLt9h1IyGAyIGpBbko6q6a)C6*sl?$WU<~0gOS@Zc)92dlul2pw; zvOAq|=F8;Iv9k=6$kRN1$*+gRaB2STjaUC0%?eR^>y|D-i^Dp_f9+nKz>j_x1NH1z z9p#Czq8Hg^ul{)ihSVS1T1gd33pbij%a=#PDYXtVa1A!_1jLKdCN5avMe6)ideZ$+ zYiUBo&Mo?~@X=9RYmifi=j2p)Equ6M{17a;&!7HT-w@8n!Yx zT6wH5eBmEsFU#>F?7y9zvtfyIRlEnG!;400P6G`0%P6lc48VhhCB z7i@Dco^>xRabkZSdwF|XV2=?X_uIX~TB zN0y#t{xXN~bzArqUR`+!_nRFJ-;{rX6VGJf7ok=-k=aO{YNMYzX^ulMv23w(uzQgF zEJROu3Vvmm6DxS^QY4Ek=^g2bsE0}v1`1gSGVvWVx zBjP8QDiz-IOoANu_+LIy!`HD)YVp@ceO!sRJrB>rcYn`Au&4bqS{-|aZ7xI6CVW+h zXYSRX%`lgU>X{mPgnO>;iKT`omEqhu-Qi>O=Tf-MNAWut+n;)f;ndeZ?P!J94FgBN zChGR;878sM8M%4CxT%SW?ty;c4E8ix74E&Mz&>?U;BcdQ=J+D~vH@h<=SzTE>SR9W zYS!@iS$5gP?>BS|HTkd$KJWo64ra}8XZM#zs3r#6@zi7SA61wFI?(fc(NP6>MfbBz z$FT$cg+0O47-hIEc_dVOiDf2Uif0baHpQsi`qEE}4E@C*jQNA{t@G?|RGYW4%9;f|$rE{MS<37ajlZ%@_jj=~R zK3Ly;$-X*8Xc?WI{7B%T(x5R026gYno|y%=sC#u3m-laJ79#ter{^jWr0&7r}*nOed0K#6Yee?O(n}r z$L$T#_u~P@q40-t;cHP-fo1wxZyDz*=Ia$2skDzp$E$Ju_&S_%U5{aBQx{q%w8&h# z^`P^n#Yaj&^$eos5z&0u*kOk%b1dX{0hskTHnB<$r;A!fY%gujwbNxfW$l0%r)3?c3Jr=-jYg3P>we?Q{wM8 zi-IyLmq-o_X%s9kOt+bjPkaJBQ|NcY?$mZ8>{L0gM@oyy$#~(z##o`gUQ*}U=%hN~ zv)yPWMdQbCn@+0W-|BN)Xq7p^0cK(WS9I`c_$=IQdr}1N*DtikJ+9MA3OnIHRm@ap z-6DK-h-KR7Y;K9&@UHliSpMHoe6?Sf&1pR?sWv_sxMLItm?#IH$Ms69a6K`AFZ_FI z3}7`cJ>sjUgDOikTx~;wPtT$9b)zeU^I)qYWufO`rzu`jSI)(1L59zqVGp-lwo#kH zeGP6Or;6RwjZGB27un%DYs~WH!V;Vh<@Rh9I- zK3(_yux|Gx%ao^zWK;`cU- zy%!5_xBnpTa*E#TaP$7?K2q13X{BRX_dfRfibum;2xW}&AwOl}rSs~^L3O6CZ+H%3 zdapz9JZk@S*fK}mA7>^Jx!y(0{l&JqR1g|9Di zVlu1b^m@oLF4D`dNn$3K^^S2~G)advCZSR1*MH4(x@m&={esuC#s3n$pXtID;R(gm z>+p)mOy|%>!vtns%FLJQ3&J;x@2Vq#i)X`V!o3Io`Di08t+_6=q><9|RM?Tv3M=Z%ub}X) z7ImMn?kKal5&OVwzLVG0sA>P|ImS>BK2@tXt0axB=sB$Q0(%?~D|`6p0w28qVV3Dq z%F=`C21<&IvJr6#k>gR=`@D^u5RZp4REM6l~V^|RPGBpg6!({{WOJev-BU%+B_}? zdaFI*wZBhzI&g=Ytor~CJE1;hy;oP`VNYAp+^n!h{!mY5s@^$|&2*;127eW&Ozo zw8@LkD2M2sYNu~94v|VO^@JSBsd5+LNNwHP1huFRY`K`|Q8L1YJnCi<5f%5-COS)+ z3POcfPEtbfF6zoXl-v%G@Fq52LBu@iC$Gkz$I7M6{B&AJnVVky1q2_@!sSHXz6A1S zQ=uz}o0p(>%J_PFwH4II4R*q6;C4CK^PI??r~<6Td!L|*gTC@zarZI=a&^cJ^OrSLY_%WB&Nqihqon~d~NB$+rWub%9n80CkVTJ$ zTb8~?DyHi1g1sf|RF5+6cm3oWiCwwvFy^qTorLkdXr7DZ2T}%nkbVzoE=0bj;C|qKC24y5e__Zz~GRre! zrz#E`p;z66i#QQw(Eb8rw8FUkBGd% zG=>in_;lO|^HimMEPUQv9%8e>&idaAJ12|x3`Quyt^tL^OGx3(*KlJ<5!%dT+51_- zODW*YIXSQe_dOMPMThgf|92x*IhQ}Z8h^O$q|Q4sy9ORn96n58_4jE8Gw3O~u)9m< z(Ji4ZwzTuV7Dk-ILSBUN3uR<69Aq53yv-(G;ql>{|8T3p0ef0MsBcFx){bWKbo7v# zG>V7*d;4XJHD$!kEArx_m~U%c(GzT24Rh{o_iC__-skUaYF2pn_@GfiTr~%zRKI-os)34Z9l3(_~yHu8X3MEzsfQbRN>+Y%|r3Tt+6z$IABP8vD=O6pZt%`z>@hqgN^kp-!p+OR%99xbqMi(NvyJ zGJY>}y-Jm7s!CplF}WdKYn{$_D()9-e2UT(cFNEBll^rUY4oCF+2&`S`q}EHuuVKs z55`kdO3TUFaJ(p7_+B=(#U3p+FK#({2bmL6}v@@(~T{&@$+yoGsPX+ zZ6Qq+5p-IO2;VCl7F*xIw(!$0Tgeev701<*V>93Ay|2inmY7WVit&4M8Kc^cFitp| zeN9aF6?sp@mci+&7||mvYl=Y_n(3mhN|N0)c1C=qWJfIIi~`MdNGL?J)dpWK}1Plb@eDsn+4lW-h(tX0`SM z8M#H(Zz_7zNB@D{vt-f=`4GM(dq`~y-#Y{~u(CR~ie*&79l0fq6^Em$DrR=Q8vTg@NM}Y#t3JN z%SFQ%g7a{hN&a&uE|LwunaD0_W4ZM+OMH9rp7oT3E(2vz7nL#}%^;{|_r-Se@|P;X zGl^4ihs@)574kt@@RbakhU1-z)=kubv(6;u=IL+c^_NzZoqfYAI+fUEr?pqcpu+y! ze3l&mrB+$hKX}!f6!8twC)uwTF8>JM)G~+8tkP3`3$Gs@76YHDCkN$X6P;(cK|EzN z^nc;Tx~wq$Ns7TFJ6^e|{A2k!Ggeo_TDoJcT`68g<9|B4)W}>?;de7-Kw%7It2h}Z zawpl@S*aV%N(C6FmZUbuSS%)mzT#W4AI^w;rbfohWIrBLjl#4;l-I&!?#RPEDr5Mf ze4~n#8eeP1e^;Z=@a0VXRT`|Llo5L1yfs<&emrKrnLHXhrRH?==WpXbOVsH7)X1OI z+3lh(Gat?JWx_o;M!1_aJ?*U`1fLvV#WIz|%j391eP@jq@?~Xw^h!YX(4 z`mf+H8;wzkkLEec^CJHQ+-;<$y~Vo!$fEu@_+ts(xPg2r2YJs~&rW_0H$-LR<&S09 zPKf!wS;)u~LE(H|_%3;gxZ9>Cr4~bt+5TcQ zoV`7u1{C9=34V2gFX0Z0lup_8Fw;D==OOlC+CYZ1DnNLbd5Q>L0>wjx4PUh1jlL)2 z!oGS|9xBTw4g6=egt9+e+&&pQ4i(-O8C&^eD9x;Uq$MU4lmn7%t8qw4xbS)Ll+bwCzDv=Xqr1Kv zE5}2#RJHNOd56ZD)_H+&=JcQwMPG~maL4ZnRdFgG?X<4P7FCCynSo1NM@*i<$vT86!a9_g%j?dMhH&LVdmY)Gz0FRC^U5HGK)TMH@s5v#}s z-!iMu587GZiotxRV_Pnp--6qZK;7f`+*DdY4g9W;%9b5oPQ;uapgGnP6~95N#qaTRT;Gq_*+tuw3 z1K>j)744uEbyr=VitQ3{|J`^VZU7o@K7T-~yK?#i7nkelWOX`x z6Ol(XI%1Ah`Dim6woucap_<)zPHNsvvGhs3Ff7p{qW2m49X!>1!M> z^je+t)#1j!Dy*AJuk{Cf8pqQM)#_C2)LgAQNkb`Pk8GxBDatnsRQff#^P%RI3GY~L zo>^7;x$Ik7M-fhko;8az`um3|AMfcA*6D?d;amYNAH;Qkw30sTGSa#VB~Hc<*PT8d zJ7gxG;~2@Yh50-*P7clI=VCCYJ?4GQzRO5#?0+ijn^56bO3shar7Ei&#TdWGC&Eh- zLwP!UCvcuuwqmPuA!c@cO${FU&Nz?C#6ddHxT^S(4C*Q3Uept0p*3v8qMlGiexoTQ! z>SivgixGBy815Cq)3)l%%URI|>&XOde-w9paLnHDAxHdg_3SMxI;h8NDxXtBxQ)8S zgKEfm45)w}qjrL$-oT>j(+h9$QEhCYgBo3kwp3a+Z)KGN*0WGth5IwZtt6Ms<}|Bh zhgUE2+z%?z+UR3uGFAp9SL5qoEh7@K+nst`1Rt9&kDgZ-$Es*`aMF~rID52;_aisDxGCPw!J>1d*e%i=^-xNkR{PW@fHZr8t#RR@B?^$ZMc zuFn4%eF?H2v~&IpH26u}&Xb4Z#9r9*i^d12-?y;7jWW6>k0j%%w7T<~2|cNn=pV^4 zxy_`3+@J3B(qnpuaIX1X5tCd6Stt)1;tI#Hq}qDSpkWTjIVOt!bwTQ;XZ%cigJ}EVOUaA@XtLBfod@-*+d@C^T{c z^O)ZAeS5Ou4#&b`wz5nN_fkG=oZfh6wpdauu%F=DIsV>Ey=ylJJ_YB!q0)!D`ukFX zAM$5|9<-hY6TWu88G90L|3d`{J!7^+pEiU~-;_s>vB_+Dkes#a9$9BUIKjvT>|m zL9r_#V)ocCY%EtFjfJn|U)0%WRz-qZu~<*D%F1p=%3z(tjq$mRo5Lb+_`6ea|M3_@ z5Apws^KXAUxAQuTxb*ftkGkA-Iy?BDM&%49woLtj|y-_POgrOa_fv?NwN!Tw54s4`36y2^_pU0CK- z^=y|NiZ4a~3h|xOT5dqw33zfH8cuupxI;ZEt^!PsrowRM$iq~ydXjoL8_w;7cTHJ0 zMf^KmbPC<#mppVw#IF*$eT>sd{D&Ju^Co(~V`tvR9p4Yx&vmw$Fdv%r@5_B+G(q@{Uzw7DEs*Q!yZc8LF) zkb8@oSQMWNr}*1YwFbzfY52>2SyUSSC&j`Ss%_NyyLPnNsYQJuLlreGxpRPnSpEhd z_mXjUVZajJY2Z7GYT{;@fTYRyFa|=i_G~R8N)YjCg3P z#|w9Z_Ggjm)TEDn6V(@cIcqL&!JS_rcO~;)@BCCIb_rjgSHLW@+ijVm4}VUlxF_0B zyk%yU*Ls9Il)>^bxtsbmDK}m)pgEBQbXvH?Jk; z!mUIH`DP@>yiJ|YB7(|^$E7sTYAR7+q;IPp;YPhFDq?ugBE3Fj2JB8@&#@C;T~w7{ zOP?DiV%A_C^NpAXa)%pkl0o>z>T^cCCA_Qho9|MO*kf*^vR zne~L7g=Dm{cT|S0(UcIVo4JH<&x^~$spirLBdo{H$>Y;7?oZX$YxILpG0O+-A5CMC z*)k}GSH5JFUOMB5(+{&Db}4@8j3;cu38zzly6Ng4fpg(YfD3+JVYa;q9~bEqyIWHW zdkf>l|0|-gvv_(FJKc-_C0Rue>zU$v$&U7PZ&8_>I5lw{4;#TQVLxoS8XxYkUnCE= z`E@6fO%`qP9aSZ@;y3DA7M*V=_4#W2FT3uQNhTN~CF2g^&>|wpD z4xRBOR*2QMZtfUQ{~Yh%^Re!4beq@IkWCo(Gcs|Nb%c9XXPHy@t}8#A3>9&YsWr>> zRT=P}4sv-gRQOD#|JXjuc6v@_xUt3#YPj2Ss|;Q%6KAmOQq?HzYrL;dJQXdhP8`IP zAD7RA&0)T7zLg4Flvc7Ghj;^|wW*`xj&3 zzK)>X_wn*hH9IBGI05q`1{H2zXpFIE6d8wLO0evF`8>tEVybgfR(Vk6tZlb4-0vJ- zzwKpBrOo6q9@+>ibIYHh^5+rC=N{4awO`*r%>|kw{Tdm9`Wo)%xqng}3q?TrHcEe8}mTi5hzYkMQYssP3eAB_2 z!pqcys z4+hmz_k05y_M&ne^V64GNpJfI&E@qm$X`s|Zs=S^4%{cGr`2_dv*O3%E1>pV9xv&f z#dc@+KBWE3P(upf+LvTadvp3$#HY1!p_JUSU>+DnapM916~vaECK(K7h*9d4P- zK4TjZw*g;!iHCNn&D~`5M0qq{%$?I&eTy${;^$Yer`4)ZDLq+zRdKT4-^TmT(Wb&n z8?XF-xA~mRJqKt1u&TWx<=@Eju&Ir%Dx+#u*ol?!@>IAZzY^8wC)r#I#)Y#3d1c2z z=oD_{e3r&{OC}yNmvGuIjd%-pfc-D}fb%-TC|O1Q%^v>#Z}H>t{Sddln)omOw{Yh3 zq%5h3bNwqyrn5*_7&q98f<7IXRqQkAHxazd*U(e4PUio61Asv`I(# z^AgQxjS-srcA>vmSq^V6L|)K`Ux?<#KbxxY*JAHO$YtJxT}4~?)~~E;%4+x*Ub~#Z zn@_9F3&dL=9%{iu6I7%Hs(eZD@&~ri1cQp<2}R6ha02CqszPZge2aCh_r*5i{#BrJ zxFP))f4jF_nr3aeFxH+tv=w`*u6J0>G6iwLf$GNsaoY^{-|L*k&(P}-+#glJJH|uFq3BX(UQeGQ$P;s4yvk$|B8`? z`i~j9hdSav-2Z(sl39*+P~}5!Hp_nL2fF9^{4#?ETl@ru*+M>L!hb%Y3EaR;K4F85 zer3>!oP)VLDRbp?RN))41N4CAe%{?!Me*O=dKN&rnK*Mv4v{sJuGPzr`mcC$ALv^FN~P3^bmOHvGOi=WokiUJjb(?o zPu8(dxGyf;`Mq6-T~gP--LCd`YU*O~JD7i3SW`Y-a7UOBb|EInnDCw7VqO}qw$8zz z&S4wx7-e2`MdG`g#&9mE({DnUmTE~8T=ijN?36{}`|ls|jr(v%a5gEZP@}1^MIryVgvPNO-ySI&^2*0;DrRPRw2_wm0d-?Peh^~6mHuoj)^R6N znEz+mpGkw^|DM9Ec=>Vpf$V_<9Dm@H)k2JG@>gpTf`4jGbpV|Bfy=(ADP~DG+xZAY<5A5bO6?NC5PuWFZ zq!PVLZ<%jraR;V+Tz^&DIDst>f?`J@=1^XJ0WySd4KKpH!;tquwI%HHt(Qk1&@v9{ zpx>9#E7Xxa-e{btUbi-z9niF%lO{W;pPypOe?jhpR&-b{-oiLai@A*|bQNR#YF9j* zqid#;d;`Hd%c9qu7?`0-mo}F_AxKS_8TOdMovq;x<4Kg|WB5mHxPAf``&?agUpia1 z<>hhmx)H|x5#{hsLU9SN$t;5~`6vRntRvjHxXgaW1-s(8*>^l8>TI+aRAS3BOG)GErHi-+^Q*(Y>Ev_`6>*Dh zu{oPmk^@`xZlCBlPpZ;Qard;*-Rj3wvC@`?G>*>?M8YeLL0bqfUXL)BjJ#4yr!>QOU3x^6!s+<(0tX6BcNVID1vR!OBl zq)Ih&GAVr9{Eb+78uqS*FX5Y;olx^=)s}>M`5xOW zfyrqp?%}?d(sr)S*fsb?O&hA$o8aGWLf!^!ewDO%e!)mk2=H%jL z*%Tc0BxNbH+>Y@guGMm;|&}zS?%Yc$t!&YqiUH!;> z$Qy28o1jWp$D>;6J;$je_o!1}LBfBdnJ7`SaH+WHeV4bt5^;_B{Q;=EK{rx5mK{56 zLg#n{Hk>w-;OQmM>VIm$XZTAv8694Tn?hI1k=PNLWldex`j&c=aBeZY_;DWZ{s5PZ z<8{-qxt~?ZMUX04^jf4e-Wc9mPYu1R`>ChcI4!IzArr$5cj@BcX4VJAT)5r-Ex3D5 z?t~6&m^vFOZFrOGafsOo-le5v^n(xQoG>YEgmMX`?>RMX6Z{IVhFqnHw1onN=`IK5 z&_W2c!d%Yk0`kbl#gzLe;QUOCEZkIF3t#vdcGniWNmPpQsz8?53F_KQyu6)h!`n;;yRW<=A_ow-#^LQ~~n9?#aCOdP2`FZ{}xZ@~6%;RrU94 zV&FYx<{`>uX)54WYShQ7K=>;Ezn9#?O}up=OeP9wE0#~Lzgi&bo}t<=mBowMxF274 zx3=&u&(~tB+m~H(vf)k)<~}jo#2CYLN8$YBL-FwK#e2@~?9)TNr1Ki9r<~YY-}%bo{ImGIE$P$w$8jW8)K_j38)=T>(J;9iQ9(qd7gj5yEly~nK642%|z~>l(9zkhK|d>u)|p;QX7MxfR+8DPIrY1 zsVEt9%p{zo8-{lubzjln@$^Xx=@oApXR%#|Ct@=pT_sgyD>NADtBc-ZraPRuMAa&Q zQ7?(6qj65veWa2><<;q$iIWtK#oaL{_3B#BKXR=M%sq`kO~V$xhYU?|_}*gfrt^Vi zW!d>?RSf%KJJDZ@wiEGvx~vJZsV)1);)9{fAM96{u6&Ybe$oMd5^2UNZFF1VRB1j@ zH&X|jpGw!2Hg>;wsmnUkb@g2-Cdt*KuByyIJDD9+*vvY$9kBAKI z#mg!?w@pOsPwL_{G1mrbP3H_nxD(|f2H6-|rivb=E4PTeClkLhMmupFzJ>l)Wjq^w zgEx2DbE+v;`luv3McoXwIyWV0o+!v}zjULOe@(rKL@$c_up_d^f5xn_jlO0vbg4=g zJ1cU-7+W!*{bFvO9;dFnx|pT&Na5Lu1>_OLH*p-kA5#6qDa^)o?%13B2x0TEbtk=VkQI z{Id-I9*-&ZPz!F!#xF40MfTikVYZjlv_mo|bOV1{TM4MMM6JIbeO%|g12-&>&5hL= zO%ZiN_&pz#TB}B9r3{CY@2^I;v1oJI^O>9sYG3H_U$vvPk(%_awQsT8`MPnMSy3aGn4V+B~;JO_|kop;jtpNr^s6@dN;|T3_7<@dHaxBpG^<+19Z3+dsSU5OVP?p zzd42JHsis+{iJRb?PB`iGu9Kn4?Cj@rK5^|>3<)My@zulJD}xr7-c#|MwiERtJzm+CZl^{tSMx` z7S+3y3^-}t??nT${jLH{){S4s;*a3o;oGIO_7TePL`rk0A{Y0@lah{$m@C*vxYyzu zL>>lVmimcR#N7??67EAj4a1M)9UquuKRv>EyV~Euw4;2T%MMy~T&$BC{gxgp9klDD zs|n}lzh#++qdQ^dDxF?Xywl3X*I;@-JT=@1v>NW_Q{USgVIbXPyNP!7X4wV$bt zhp@w@I=&*f-AP<|r>^rD+g^#hDBD-b$ERW9SS;`HLqW-5k1B}qgno`Hd`BLSM6}5s! zNpyKI!MwF|t-ep_!kP+1wh z8z<}pd;4IRTjlhFIDK*5?aws7@G3@l19F8^_zx#~@z7)C(*?{Hk#F-+I8ptwp5%{2 z2Qd@R{Eer=doj0sscp>I0PPZ2V zhc~#kCHl43@!k1q(wi#vEUfuM+^4_lI6+rF(+)*pcsEI{t_WpTV;{N2*#$NYuMW>J z!hQ;Ic5&1The-yj>f*M^>>u>BnmOWb7&cW;M&6|?{-7&AYgcZVT>992u40!{Fqt3a z)K23h*{^9KC)3!M8{wpGA-P=9EW+9B)}pvPCKS#YzU=#&MRrrFiH`$tp|?6P#6MwA zAqgjGh^?kJ-`3FKtStDBRyR%eIKde8?9xT!eVwRzi)B{O+MbPuH_hgV-+I1cEk{A@ zqE0>`l0M|cO_*~JJ$MckvZCk@?-PA1lb%U*H+4kbX*gAh4UV$KI3Df`Wrmv5TJif7 zUx&AI9#gv}*~LAi6ZlBX^`Mpo7XO}1*seZ4it~=ZsDeheL@sSMho9Vw*$on(jwF|n zo%K*>=xq)8`m8;h*RlAr_Dgcg=sQl+%)#UD;OM>eM=7JHtfo7K>q$3AR*~7wtmuHc z|GE|J)5$i2zsdaUr^HCOlcOvo&q5{ZB?q2x*F#G|crkq@Ef z?8F#fCUPJpR@Vi_EE0Kh<-tKnH#soYsz$-_f>3X_I#4Z^hBDO(R%ePXhEKz=)dBX%M`D`u*f$rvn*hOc@#ltE z2`DuV4|$w|dZGY#YAUOs>X-N}Cd9Hq}4PQXvb;ftA>E zVbywwakj9{cyp>QX6A~5qVjPgRLd@p`iq&sp3926L3RxvpjmxqO+m}-o8X!m^z^M% zfhqhGUP5?|uC&yyXt-f`3%2q;ez#Yxo+)~Vs{29xIH7AR!}9;V^fs1ev!4=KR2F?D zr{9$UFYx|qIZ!nAm-9>Q=zigh(*U`&+dRhl{UY_PhED5L^hGSCr)r&xb-$stt;FqC zSU7nFFaNK=IBp zDwT@TnG*jj`~G5_419CQI9pZx6OkunMPnE>3;)h5CXT9&|0hr`W5qh-+w2$hM&8``~#%A&>UQMik%IsXPt^^Ta?XK$dssub=a z>h2WU|KL=WglZR$Zp014IsT~lX&@fYnaeA5sY9}{iVWCdF5&j)HbyLF|8%Z-mVw_Z z;BIjoIS2Iq9ZntPy0H z^ykm}dy9-Q6z0u?!r@MkGJLd%W!_TPS5tZK!=wItF)_Rr)fm29<&0ASWpy|stv#GJxdpkG&>A|* z%2BlItt|7k=v`9^7M!$)axw2@Cyxwje zPeSw-#(CVn!U!1BTxamQZ}H0(>g#xYMQ3}c_s7>ju-8?RUv-(qXcqgeV=+z^ZnOE#82R)(-#cp+ zZgKs@8OIG~Q{D{5@X}nKE>5w&3p1L?qIHn91{+-G-$}How)l5=nRl_gen6cHuWS^= z3pR`0=U8KrNq-A&wFvYu=~GB1qe6G|EBMI2UFb^{eYk2 zZ26|%X1TwAKwgIv>$P}kzqqea`4#&~3bUYi>P@XsRddPUIHf?tWv(Fd^b55Q9ly-Fw3>oAugj=x> z@!S!7Jqy+a&FmKJTFowp`7$>iwUb4=&~`tyLsv#!8Uj1hT2Z(c=XCUS4111Bl1FFL z0!Qs6r<>AMuZhME&YM4|Uz;sop0=iGZ1EHOHq@7VDZ6_mEL@3YHd47hpf%htgZd`A zfGLU7Meo6_(@yADh-FA1%xAj3d$6gnBR0m$hVu0pC$+;pcg-MpN=#=G^&^!!{V}Zi ziH6?TzhzR@`iq1ooi6Ijr*}o$RKJGnle%IJ-Ld#4e|U z!iG=f)=g{uIF=578KMrp72PbKe>IoQ`hjKg=wKuh7CTcWy@6i`PF99p&&M++rA&HC zo3KYM`Bh(inV$btY`0#uI^{0h_tr@!wzHy{*0n<(gs=XW`{wR#{ACHon+x_%GS>72 zf|tcV{zpT64Ps7~b)Tw@7a>z0*f7G3Ho>eNk;jbDR>VA{vs*>`3pXK;w{w{;DOJ+V z_)YxmJNDfMGYiBP!ps)5_!QCAs##A~>8!4ehn-jLMb(b3qoEh!(cfsrABec|?xa5# zza@dNsn#N{DeLs}?{ie8Y#8;A5d2XV{KeU=B0MuEeky)n zQp8Aytm##H&U_wx87rG)&*@2scUIIk=j*CQo69!8W8gL5!%3RX_b?`tEb1r+mc}n) z&DUT=ck#T_ZfZsro~p`TQUh9gW3q{C`kZBIo6jcNbyof3Ty?eq3#Sxo4b5gDtlB^s zU618`u1lI}O-cB7MY~sjsrXeQ@A#*T8TB!nHAcx#OPh+Ve#tTs^Z$;g7hpk0%&Csv zAncfQ;H68>d4==UH)Zk`*b>eRhAdcVl>Au9Fmp)(M+WIBiiw!E>>A!2tZrTeqR znGfw?9>z=Gz*x7cZO3KzdNVnUt=6U!^o3Oai+(LibLgVSutxHvWJxb1-HAV$bY4!3 z!SF8OAXzY(ArKg2>@jzOnKkx7xlHFRPAW&a;;~l&?l$BZYO4tKm%1 z*b$lC8k>IxQVqkYTAERPc{Po0`>;N#y?*OatZItPE`W~>VV%>^Y8G#Qq{3a+<9tpz z>PSfdZH<;Sq*>VI=Obbj%3*8K>L@E`Qpb54c( z1p1zl+kM5%Gm(6_@8^l`BDr1pGJLq0=Fos*_Ozd0L2um)QVceyidgFg#OOS_o*rs6P0o| z^(3I)6j2jSJr#h=E$y8D9j)O6^Ql-ib$W>G-VG(93vVa zhU>`jX7D_qXC1$O)_LXRi@s`fxUV|gv>NUKZ6cxz#lxFnK{-Alhr?U656Q}K+etTQ zv7VP=@F(0Hv>N~Ym>RXydB*2;*WY4z;gn}xwthPv?lF4I*MJAGi101=aUQC#@>jG! zRTa)Gl$no+?f!PJt~*20PIny?oi^+`1je-1mp(^H`8C0SPg0|5SX203f2uW&W|bPU zyDb$YrmGD*LJ#1Cze239Af`y92kBZ1fv3${|-k3}2hgw4QI^;7jU3W4j_(Rk4X|a7_+{*NdB2RRauZ znEbk;->*oM`Hg2jiaSJiW0f#r`lkJycMFN)q@RHw%9YOsnB zzBmZCXn(Cgc*=R+mO8I9&X?7Mcz@{jub9txxt=w?TL+Ur7LARA<*)M5Uq%_m*S&G9 z!MwiTK38$O2)A*Oun!-{i5juTNQ`qb+jNJ&g+<a7YYp=q_;fzi|n=M8NH%uO8 z+t2ho2dG0uDg1xNa`N$T=(|Hs-qrJ;gvbr4G}C2wGHj$f{o+2^w2_sEVgXGty)8Q1 zqWHypo$aIalriErXry&vUclk`I*qzcm7G!0Tj*?e;L`bwvQ1V`!D*_nZg^QY1$=Ks zv-~^yp19biJ9tUg)YeGhJZ(j&Uc}Bt=rO|Gn;XPlJ>6tpn)p&2cqsf0H_?Tg9(wr_ zJDl_%svbNocgD)HBZ(2j{a~R+sS8_Yl@CExBhL3n%~DLwPp6eMBF9UdxRUO z&N!!EP0XC29yb$neT^_mh5PR`)p&Yh$=H5gdY_MyMK@bhA9?+yk!nNG#qy~dwzI;S z#7sJ;;iBeYe%b@E_OeWPN3Db&ZkC#`o2M&a@H@oFD6{CTx1FlK9Mm<18`r1c^{?vc zXUDSZM)QlBpsH`i$bZ(ke4v^iQ`HOGi)m+^c=T@;nQBdSy#Uk(_HD$k9-!C;B)=VP zfHOXw=-|#$hZe)%<@R=Z!K?6Eb*jW!l6R;w;aue|EBV~1mf=?SHy-hv*-WK-wSkZ^C=~Vpwq&Jf?cs=MSuZ6D+YuZUjZx8TWj693Hyu`;reLG2kP7RX_!qnqV*yI#> z7oGDdAZ`cHcJ?^MItP-6`zBB7`m50~7CV(#UEMy$Hgm;YbF93lDE=c-1j2`R>5oM# zikTPS%rbl6e`AYXT|6~Sc88nx?ue+;Mwy0@KN7tyvwJ|PPo0}6>)(1|M|q+6BzvPz zVDIxVqb%ymK%BFyJ%<|fkZ>RP9#Qa~4s4Q>dNo-%g`XeJ&V{=wN5Yxgk(X8CLA+g( z9&(B9RTqYDq2yhOCrcW|-{H*UD$MAI*em#JN3*$vGi-q0EA*w~pzk({_!DBO4R(+r zQ7Hq1O-VufNagOQPkB==C6`Sf;WO(YY)#d6v!C9>s#?g)#gH%HZviKfF3(e&VJf!dZ^+a_tfoGrU*vrm8hUUz(QEHk_f-Q&}+ zW*FSuATvj>%oJYB3Tf&QN0(!G(XZqPX}Qg^eUdkIBeE_Iyi5-o<2pfa|+(&j(q5Fr>(i(@jad zI$9C0S)?k|R2Rx)!b>o$m!a@1cwI_HT{6lrC_G#?^f9NO@aekFF7~xUlmWVJlnafZ zOFJIg5??E?YEo&Asp{oo_rzxTlgXS}8_q-DI8#z7@>1k2UoS3^4dLt3g|H@zeUJlm zn&<7Gv``fmI?uGtXdj5`U9^E5xaTx=`#P@-g;wvuh=N{Tt8L63ER`Pm{Xo-rN1rg( z{#!x3YAF<+L#yxM3xFJ$S{oL=rOtiIj^Uf0A=IK`xY6U0Jdtde;}AIdGTfT(98nFH z$%X3;GLQ4TwOM7TDvqw=Oz+Y4rdU&UIJ1*?+9viS%c#3$v9-?hl{aMVO8M}Coyomw zcSVS`PCorXM;Il;i`x@ijtjoTI^E%Uc}RSdnzvD2k7uWY7* zMeR>|xg9i#HPGT4xq4Hj>#k2&sml*1vj4{JXS2yjaW_UppO95Wbw1%9`p;M<3T;+E z@L%QldUaum2&w=>k3gJnX@sLyqMXqi_6sJM$2Vf;d)-EIGpw(B-A@M_gTW?QK}Wj} z=Ty4Yu&Ws~F2&UV_0Xk{(Zb zIO#g;yf3FF@ppQP<#2T*Q}hTFpG}LHtF~N-#BuCO@?aN6-O*Y5OnmYgX0_alk-3wK zCFM`LC+SZt>usIx5S4BV4p4)IC*XTy#Z51Dt}DNX6FlLq#hG|)^Ta9J=k@#p%;ygk zYLAt56h+VIEj#NXVzIC%@}fF&%r3%DiRfD;UXsynN@2qbAXWw0lpM$E#y826l9Dnf z74Xkl`OpEgS%hhnqK|ZNO6&!r3{2d@{Snj)H%~4Qd99#p_;!3!>}?fyy}x&oR{3($ zGa@*WGy#I1bE57?S$WZZb4g#tT)=5ssV#57(0cHyzgWEOEX9=QBQ)QYcyKA1y*HjF z=?$-p{)uO`$7>#dG{M`e=`jz|uy)IVCNleTmg&sWtJwGz)%ys&C*ajm{_ZMf&Z=-z zAm|#bx{lobO_%VH3bhcAC%~l# zq&!JGu!({?pIdepbIPdttQ%9kx5~x(u>3`@PIlz8Bpy#EZZ1Z{D+&d~>tGmhGM>s? zyC>vA55B&m(`_MU*7Nmkb>vTeZUV(WR25p9%g^%SPaWN8%F*NWm=Ton;$mi_adu&| zt1!^c{+9#t{$Xca!`mdq^zPw(lckCMk>K|6PEn;@DHrOnN=m=Nh z*I(ITUrEn=ieNpaA~>g*`9b8Ri!Nf{&t!COzkfrw94@!(yLIIpJ)#KCaU#|phA+`q{vJP#+nj`= zKeG6FXGFr6KF38(8y-m(9YO`@2k*iSi-(<&Dvse#r$*esN1EV#$<3#+s2$JFi>)v0 z(`=#%ccrSW<N_@ZI*$uyYFq>yB~K>(RnDL+^>=-($~+*q*A=21v8RjOOYb z!uh;*`oi6+QyJ>W0eoZ?WSA-PI+)RKw2|;?&_+C>2=2IbNHrZ zJtg7g*ed>fl5MihG#Yz_O2U(4=;s%1Iz>B7(BRPnDcfOjB7 zYg$cA?fy=!OlIe4m|SQLYx>KB@UCY89q?S$zW_GYMfdZPzgb<}_JW(g@KGUZL|3~J zujs;7;O5UqFN?Fq_{V(QegqpWGoSxOUdIlOV#5_EDU0dlWhk$|&;dH&S+7Ee+_GsP zFCJHY-k>~9=j9rF-N^6nz=(QSzz!!xa?$KoM^pIXWF&qc6wCgy@+4+6N6oDuD^EES z^OU+WQ6}VJm2fh8vJCi+h2K>(*XUbX@X{=^`8V1DqP(a>{xq?tH(r%nAZE(M5Bh4L zhz{!h*j|YBcr=`)7~?#|QonaqtJX#`u*^)Idj!`AuY5o1Oj11_T1(s5i%s;lsyHO? zukVgy5g+S|Z_1&mRyIZ#6uwLeCn__l6}|ZB4Jh0NuS+XR7UNg*V9j*1X(eV(V+VPS zvJW$_1||L#F~dY~V{4ks*7y20B)kzZT31+K&K#xgHK9o?mEjv?_d=d}L)1()mlUyZ z((fHV^#TUcN8jF1wOtN%l8fILb<7h~+^m@DAYJN{GJ1I;vk%x08^vpBcW1HtViY42coxun0d{9&pzCs5(GWq zCzeR?&rvX<=ChC87S0Nvy0J+w8!o!`pVoYWn#&MA8mH!!gyiG(?oZgOS*j~} zE*kEynd0XM6*t_3ebBz#Cvv2o{QkqKtAP~ML-fXU@^Ky1`iFfh!*dPjOG5FSSICJ!O z9ax7*Zn<4u#H`cz4m7tUSaUoYr|Ev?Ja8VI`m`Qw9e+(y$(P|-k@!2#p!c)-sygHA zy!?)F!YvI;RH+eA`EsNY7WgX%bwxX_RF!8RJG@$ z=h<~U%o{)_2`|aCQDv5@3BO|0xtz4VPn?yey|(xF?@Nj$&4Yp^oqD}N7w!Tt(q4zw-NSyQufY28q@K zd^22^JBnq$rO8f_U5`6&G=z=Q%BN|uqhIqo=r-N;csV`;_<_>q>VG}2l2Y+ z>MD#VFB@C2N;eF-JxOrN( z87poZ=m}e?PkSS2t*D&p6<)D^0FzqEHW{&i@Lk_D(bE%CdY*Q)n3s}c09{mthoU=R zUQ^vh3B0<85tm?n;ndQqXf{aFoC>AS z9?Yr$ZNiz4vk>d6=t_0&&BUu7Phdo?u=+LX$^!jrb9+8lsMOzK=9|o=lruHq?9>Re zsh_A(Eui^#^ttnqkNEHay?b=xCddl%GJNs14U-**?-don!)Vxg}hkNJNiPJif}m|D@N*PW!B$P-(u$jh={}fmChqkU}DNvK%;|Ye=J- zHx#`uIQMif8@vRYdQ+ZK&_z~aTN#}#3pe}?bYfw?2;Q0S@z%^iQ|$2dx1!PJvCPg!>ZC(z?prjCt|BUBY&Ik>Y6oDOD)0@Zr@i=XW>w80-~IZB z?Ygj+SaBuR(SVk_UKR`&dv!75dMfS&SalIcm`U5aC)$}3S4Yf@mEj%b)JSNaUNv5( zuAjz?ro~=XN5bB6xN&yA>aqkQzF|G}p;bPoYG&xU*YR{KwQYt@VG1s>kjKLwz+oo| z9`N(pVbhOMr5mYGzpAzq65Rfzy`UNL_0d@PTBS7AvwecebX5};$%KjW@?_){s2X#^ z?<0uRmL=0zQ}|A0fV|3yhg^`W?P9r|3~t80AL)x9jD}lk>QlPgK%C*~?;`$wSGRoA z37;--U}EAt;y3d82<)6HCo@941;#0*f0}OhH(NBE#tj`^BO{Dexz9rJ+K?=q{`<(@ z#UK3rK323paq{{klvvBwEp@uP@Qdmy+(taLS~R>?(m{P2Oz$agyuS8Y9;Y(=5ZxQi zOd0ws_PYAoQ0FsM#l2*_!MJ{M+EX(~{)lxoq()qWG)q;>1>!io%6K_aL^WuKUEPho z>wMF_{IdcJxv7&o9Dgq9p`@!SLQz$66uqLPo%fOUnZlcr;YGWx7*@D-{{bTm!>@u~ zSr8NZHC8@82CrW%EAPtdRk%?TICD{j`%twVqaJ+gl*l1|YOd#Qr^5Yrr|E%6b=}j0 zxasq;LiR7-7r%jt>{n|i%BRk-G+lhQ6=id>p@%iSU{%`^QPoNC|B zNZoWAlhl`P{yo2)qsp=W$=&JxY)iAbg3Zj5)2sE#y|9rpkwR8(Co}kgCqu0%#+lTj=hQzYU>Io{- z&%9kX>FcC|Nu$kVlGvWE{=Xf&j=kr=iuPkvL#%3_75&CGX`D7Mt>b<|jT;9~uBlHW z;LLHka8pjqhvluHa#yO{8aj4QR;-}Y=w#0*kBmG3HIv&bxy;H1ou)elXy`FF_SL37Kdm7HFHPu+5_kSiRU`mkc}$5PpxdNKgdDh z2|Mq5SY?sEdyq9abT0uvdoHnoPqO|0)W+dKu!7e>?RomT0d@`;-7 z_-BpEyT*L-J9oL0CR&_gd6G8tGCl2-ZhZm{(#||q;UPD5xHZgl4n-rp-oDrA^a^-H zKfT~`R_Q?(3ty2nqMD?~UY9_WV$peiemJu<2{Y`OTA3UQ)aLIv9iu6f zSR-aO@%cNr(H=PSl-Ny>l#(Q(tYjtHs;^Qgn}kHAVMVf& zky&PB@132HJ+iYm5lRSU{GZq7|9f~ezTez$*LALQUgvdQ=e)1?V5jl0dhiQ7c@Lt$ zk2jWL=LL~8G^6Q${bahKb?hFynBdGmOKK7u*r=Xa%>g{2FLfYK>@%IuMZEtM)oOvL zN*l?-{|Z5f@A%{xDDj;6h&xR>RpNKQiOePT)DqK+dCq0L|Ae*V_NGXFyzzG#pa=FE zZYw?XoA+gl^AZ8D&<|k9WbYdh-7nG4e1E|J|R}-Ffe~o9-CiT2`(t zXV!){_w%Qkg|&_NYWO18Hd%75oEh$l zyo6spBDzPx;HQ)C-QFF)BquZyi;L}Px_`c`e%Z>tMfEI~LEyif%5WL(ebbSz;nY8i zip*+;7bqS#qs5@!_ZU_Ywhdn)TAkFwhKTc)IM*H-w}C2Sw2sU}80;Aq8Sji- zn?F<LEGk1u(SED;+rS^Wlht)K&j=?PQk|ClN+k2v$$a>__m+@C75C-C5Ki)IbJH;W?D6@#d$&s~lR zyGXs=l~xQuo+;KYddyE`j9!A3eItp;=9G&m zU%{AgNBizbjMZ*Mo6%^lLYn;Q+mR~eSrnT3{5hZ6>6(7!A^1>}9YfAOgbkI|9jvBi z8j1UzPDaN4IMylbey&PuH}3g@C-kMl&ak!{toyPl&Hr>ys$=By*`bS{?9J<5fqnJm z@VGoY8Ojf!DBX)Oexk+>_xqNWl`h5$C2A%%;8@cj@VHocS?*UB$QljbK3NR0KG8*3 z0*7xCVLd2dcRI};{H`MW{TmP2;)E_yuhJ$K@!_D#^^^ajCO$gIa#0K`cwAd2v=Q3e zfaI0g{!}!F-}gtX5T4nA|E`MX(GT9Q^6wz`ze)cY$)~bX8r$Gk*`rHYW`MtXU}>TL zU!h|Zz65s^3vMLCm4bEK&wK!5GGOH$@Zf=P;(IxF9n4AZ zq=!0z@a@2E$$7+jd~cOsquHk&nc3es}`W?!IZg5LJ*vF3k_Rdo- zZ#C?WmXl4tF>Ra`LQPjCU!?qZ5?OD$E8wto7N*c_V40GXv{gy{V6fG!6CqV zoJm7L2)QXARqr=Dx+$9effCB*(mULUK$y1PZ=6Nz{AVDlz27xs+Idg;m6dFXJEqxdedsG zbA@yIIr8`MEMjG5AI|?^d zoK^P^l$oyMZD$ zZLmK7eOSfwj;P$K8f=T9eJ>lVb>2svSZ@e;ks8%GmQHOtH<=GkQ7Y%)n>(C$UpqP% zsce;}DT7UA$rRnVxm5OMi5C(L6CDyY5+xEF`ArJP3^T04nyF4zCA@-bD-I*qH znv)n#%jlGwFWrhH)}}7Q>F!L7^iI#%v~AKhP4{4Gme{!K$8NTbJ(7Az1<))qS3Kvl znvBtpB0X-bxPI5o4AH03^oTxmbJ30Cx1NrL`x;NA)J>Tk?H^wU^WCN$TNm$=Ca;&i z7Q`Nj7f#$tq^AByqj@NrUMJ+4$gq^BZuPra>1K&r6L0OfbcG@rQir8Jllpk-U5RJ2jQ2=vnSrE>Dw^_T@A`^5d*@pW`uK+l=KiS1>|8&c=^=tDsLs z(^55J(Y&5rJ#soFOQdeBRO;VphNQk6ts8kh<#=M=ooO?Uy0hSI8`B(%_lZ86vMXf< zjb%w>|IL(Jzo(Rr?M;0!ZN@ai6Zfd_M#MX$7EM%8gOy9HivJajt8UxJC(F94<27Ra zVeq^07t*XsvoKAg4BPLz|BlBq98CLf+LzLuOMN0X=T`L_1#c9;`Q**-Z)Uo={AR^l z_oWn&%ZEf#@Pl2^q4Bzjfr*#J<5X``U5;&tw@Oq@Jm}ZFcxATk%VKY*PD~t4e3+P% zxI6X!#9VmLJ9c|)X!JohFg2mEx1!k&;8pkiRi^L z!of&u{r+a6>;SJTD5{_1`_ECAewLwH>SO$w$dvkvYNd0cU~2W$orzKL=bXm!*r#Hn zQ@jj&SE7=BsbXt^y}hZ|G1l99bM&@PsV_=E%D1iNwA|m?|Jou)JfemUJ=`p2YCAbo>jjWSsg{#$w+m2T6TZto$85JCW7L!X00TP-fg|_V7HU~Sw(Q* zTk>MKB|W?yG!bhoj!E1jR@V9xR#S7!P&}rZRZm9`{~tYNs`tspc}55CX_RHh#kA*= z(e3`+z+H1-MwudcX{Y%h=+o|r4S8m}n)z*vR z_`g&2^EG@biEXXL{=%Kw-{48Z%o1FO$BnJ`hOXrxdkD8LzRJeoF4O_^y*4t#S)Alk ztRxqGZa&m)uO<^7!J{G+~nUCl8H+xm?%v4-;4fFIEy zt@kRQt%Kc^u&)#u_?)b;FOq74BYY3@dpY&6`m&ykza&}fexmOA#S^yr`y4B30Y7)k zdDU>XgEWkmrZfLmubhrV=?cNZ}I;?fv zo%D)2-Q=Z#4OS-{zz3r0j%66~*Vyq* zHwaDAJdGC_v-yjq8m2Wx5+1?@0UfxO!h@S@PN63CZZ>++M=(B&gj&8<0nUP+MASxdvMaA zLH=p>rWX8N;9M$GW-nqk=bZjBw%!T1o{T<+$1hjK+(*A0DEh0g$E+d2&;l;XEAWF%|oC3g&%wGLVXNTHo+K@9a)+ zX3ygmr+8^|D>^FYw(xT&AlZ5u`4qqYi=O(9lb=otEs94^gk))O(3b4Go0@dc(quZJNW^4;vs5tA3e_u&TB3^AAzo^WtTv3(3 zC)00c zX&Y+We)g$pUz_p1I@S};>j3;&gf(x*{VTwOWioU{s`EHpwzL!bMx6egtcoIuBO36(`xh{)lgQ=bLGq39i^%LzEFx^`+*-1Xs zjt=stUPc2wg3EsIc$O}X!G{}KF7WKrB0n94pq;ZnVpgWHyL@)3vZ|{9eo!9;W&bDK zt{J4g;(eTO!+BQ9{2*~(8Sgqx1Ki2l$Lz5bOnIMvvJ-YzSJ|wFr;jElwK`F+N3i$+ z>v>Z}yoPdIKX#8QbSA6TfI|mG`y$+MEk<`jtyV@&JwCcQTG^TOG&B3K%BH(4yFveC zi&}Ojo?4m@?cp8aw%voYpGHu&FdR#b&XA)|Ir|KlYM3Qjo$M9#kYU5uz1~!J{s7Mw zc-mOctpH<}ijDHI^!hrpMM7Qk7)4b35lH)=I4dY#Ys;!@`ShbIp>Qw$|DV|Ym34lh zxcIIU`!ELAL&|5 z@Qk1;c7cpVo&GY_%M-C<&a67S=7}DKt>LDu@Rh~Qs>rO)ttTJLq^6o_k|#5T^J7u5 z+?uxX%Y~}jhR#0`Uu8|jVnwX!d%jmx#<)XOx`_vz5ND6r*>~!{JS;RHx4B==87@B7 z@S|PMZJ>C44TeYKN9D%*j^2gcE z>nNYT4EHDCYkBN#oLDO<))uN@+rp3vX6_1$lFWSk308Yg?L5i6R5=`a11!pg-*1qC zE?~~l#5(`>v3z@x$`QUgahV=JmTK`jRLkM#b3oYql=qN5esKC%^rPQbBOi)|TeU~< z#9Qj73vyA=$=krW%XVHT_7FVUET*2NlHbjXPSX5;cV<~BslAhLuiT8jN{b9{J%w)@ zhVH`^`C|`Vd7OOml1|SqEaxr#*L^bD%XSmiV)F^ByH}$n2_4OO+yO@=IlPKq59wbe5qT{U?t9SC!nuHlD=alnv*I>{EXLcMuK8lZ&!UlS&Eg#e`8!j?0 z#)|Np_U!bnvu_QF9&mfgHd!j%BKJp<$G$7l^5YN7;A6NM??@zKXT_l1Ci4~di>2Xi zGkRJ^?I>SQry~S~x|tqOX1s5Zo#%rh=XgtP?C=3<=LOm9C{;PF2zgp2`qn)x#Z*C4 zC>x>r?gh~f(!yrK+?xC`LLvDYi_40qt;M6N!;z;{@>%4vdqvBGaQ0n3Gzx!>;a6Yt zxv0sUk5pV+pzH}*X+H!Q?euf#k#yllsj$BzYghL3dBjN$`d$tw@;M*f>{m2a!RZf) z#r)|tu)Q99d!r1wQ;r+UQZ>z6u7P{6i2vQ5R2u&LfiIpA8!2}798~+xYR|&Qno#y1 z{`kJEF-N6)&g{q@d~Jb|}pWanQ&x14mB6?V}O+TVxOToJE1#7a|&z;b^5v|KaX znT2V65(ugM`xtYoieJ($RZ)ttkW!k48VQrS#WPh@j;+i0-w@|&{Gt2iD|4V&nOUoFu~ zDgbR}o0teQRqxY6chO6(LVz&Myqb@sn#3VK-of4;jW59tU(zSo;rr^{6deCb zO>|VX{2V^=pIW94Eg{@IlgB$DIo0Q<`9m*$5$@U_54rR4?;Wh&#ja|4PL^b*eH*g% zz(>xSs4EF~rpQQT;O%fRaz>6kPqSTVx3BA49F^1i#2%B~7U4)?I;5GWl%aXuWo<8t zlh0J1yX~$L)LE}Ll-wC^JXBWPG*Ad!oz_#vF?R|);jc|ekaFdUmehzP=uapCt(!CDJJs-*ed6F|^2Vm{( zu%Ihny2?i3y_v}Y_En0_j;tmOD;z4 zgS|QA-#VgqO*F2b-(3Fs9pcvGIkO?#ar|bQD&k8|IxX|Hp(mf?jZLhiFbn+&w|`L) zABd!Ne$`>sLWrB-OJ9h%-(rukNiDV+V`o!5X%NqTDt=4tUtfKcF4olv6^!1bLhLlJ zI!71bfLs#ZK^!Df^6R9J_mm>MrbW_|4q4H4UND_6bu}@UMP`~rXAIrSaZoXrHKo$} zHseWWs4FkRfw?k3L8$bzce&HqS!X}JUsZG3uS0z5OBpw#YIL06Q$-&kOx#z6BjGl? zTe9|T_;MC@`;6weH+lyyF;-8x3$R<1doa?5J|!2-5Jlb#}{Fg7tx-BOOlCpw|3em-;@ zQ?QCOSX>coegbRfQq?brrPXT+vy}_gBY%10=qlE=(Tcj`Di&&Dyu{i^A?-9cS%MEH ztS39Z^osNUjFNLfb^MB&<7cz(uZoI+nBN{xh{2@)tf>_QI4|3D(HZ{R+|~e|{kYs+ zL>9Q$^XkcxQ&g${h>?ae_m4a&yFA^WUoS{z?|(gQC!hKRJ4uO8S09F(Fn7qg4dF)x zR=x)=g(<9_p7Xc$yl-cl;ABB+*!yg}gO!fLwSCFCjT)FqjDG&5EEsORo5yS3vA1lP zasj)`4Jlh-h6gD=fs-7jYBYcz>r}Q^<5~0sVu>5Fz#u1i5B+!zzbziS!h`2Rw-02I z!p`eSJ``q=+pzZGXlCdCm2UMvx{n{jq1ilWPy9do+m5}}f&hQ8^$_QuN<~~RvWAM@ zx_SSqO7{_3i67DDpIaoPv`Cy_q!oS^=$fN^c)A=RMLRyOLd_gsdO zQJoJwW>t@40;8S5f2{qHSlS8Mnn3^WB`8J^Cx{u!?-UiauMy?k3=E*Y&WY-W$85ew!l?R5WQA`jN%dw_8|bpz{hh zXWUJ1d4?xcb^hJqNEW{%+&CV-IUQ8&*-m~7A6jCcy+m?0I@@eK@lh++K{zjF5AdxTex0M}miY-(VM<7z(*a-?)FP>N! zLf*}*|1wpQL(SAh?9Jgzw=k~oz2}=evXTtBQiSZ}mE$1WDE^+_b7tth{iUPzg)9=@ ze>_QL`_+`}CEUHZ=<7>;&Wb5DkOx=C;%eL1oZRP_-%Rn_4Puw}9?(?lshK>pq5t<* zM;;h^P=%a9#O35wZ(}znqIdHCL6obQ`OTpGwUZskLEYBkqbLtr0%d|$yOsyP=;R;3 zw~x@S=Oh)0D^RQ)v{!e+*0Zi!?_U^<7M%i0e6~XJOt!lTf*F9DlCfZi;?*F1s!@w03fKu2^7p$v0PSVNzP3ia!D)(2;>=IA>l>a;o z(T=FK!wn}VBLzIA8|=SAMS52Dn*?hwI<=Q^{wC^&_B{H1lf7kF={o-Ot-O9$Y?Z32 zG^D=9J{x4*P)+7z>xS6&CiB)+pu{i=czSWw&)$af$^k6iPM74a_-3~Ll*97b&z>P>3yImw{(EIlT8`Ae1%D}CI?8L==&a!ufuKmuc0RAL z(p6`7h|Y2&61oPBL}17ydFdbHSUWBs)fDYhMQr%$%xSBd>-?S+wey|avnq)t_*Qc@ ze+6sGYBm2xVlcOcliQ3%lvGQGZ>v8f{;RTgxI1;c=gq)Ro)ya{?feaYT0|{5kS~>o z9WhngehT0 z7P{LGZ`fU^DBhvwtcZrHqz6Uq8uhQfS&gpjvq~MXSZ-?NB#Tlv_Bh#wnC%fv|2_Ij zaTt3{l%0+|VRfzG??f~AWz7y9QbGDxoYPK^FjHTg9<`eGI; zD5ssLwJp&@x*WM*#B`8FmW%#;vEn>#J}a%ayEvVsnw(pQogaw*7dt8EePR;emg=mL zpGvDMHq8vc2Fy0xK3!ZcspeVJRRH%=qkHRr{2j}N>6L>+A9zk>3dsQ+Y@qcPkdc4I z78=8zaPLi+s$EDWJse4oYgd8&pW_p(&x>z#166#D1q&iHUFALjWDCfgYvg&QH?#Ik?WrKqJZx{6QN zg|gubc&$C9lQr#!ArJ8C_vl)GMhnByuT?dNC`qa8{5fRo!>2n@gYrX=h4OGQ+-Nzk zdt60y6Y~G)+`{dP6JgtRI?#KNHi7$B$Nn~8$l>0Pc5rQhSnX_WWoZ!?A zIliDwcEowjH-9n9?v6%MMemDFZNBp_N+s-}V!Mah`aeAO3uyhh%v37=r+4Fe;179e zh|6XChpcCdDr=9(2s5`+Wq_zkpqUKwizgN2*&A591hj81#=`fW`ofetdKy8otz!R& zAb)L)cn3?5HW%H(oNJizUnthX9ob7wPd?1EzlYj)U_vk0R~@HT&pu1Yjz3|2C7gcv zw#MsxD2<-zXwzq(JG-y_eV$l(6aoZfyBvKs*<*|I#1Am`KJsHD`K=}%n#Lr21%0~B zctR~GeTju-@b-n_kq_L zV{>_3ZuVJeW~`;Pe5MoGO|Cs3d6+iQ5iS&g{6nG9g;*Y}sw?DgEvGf(*{L+`FIf6t zOryU)GiP*zuKG95>>cxT-AyX2GC`SBebin(awYnL7#PQkvWSm2=myj5t^?106vA%h zk1hD)aY}SY2>XEialph(_##&L^6&(fj>;=P=#7XK^UF6>#EA4!@uuu-C)KP3qcWRBDePN6y z-0lCm?!f{+9Td^Ey84}x?*cW8^bu>z#oa^dk%2l_fD#J-k% zi)VmL6~RI$$w4p4hQErgt&wmK_+yrb$=_G>^WI* z#|d<*fFZ|ZkEf~5_j$MI4|7sOo!CxscDst?6;<{WlMAmov32VH45kh~_KbO$!^aq3 zB^}6pSZF2FAfxe(`{c0ThxJTcwdF@st!bT1`y{5jS5C`}ue4Uxgg416s}^2osao*% z83^)=&Pguy=OXref`x{g%NWcyZJqo_CKnfskxM)Z#-jh~BvpG<0rbz881FVkZm!aA_|5MQiX+ER$4|D1kRfQtq z-s&%5e=!}Ft}OjbEOTs`*e*mfS}gnYHmmfB_qdy2qrb`7k3zMPZqs-QI!=*I)0;kg zPkg+|FYlAl3i<1#8YN_+!+6vn^-C7<5mvLv6ZczF_~u0poN_7TzXM{;#)=73N+1sIz)Hd(yY(nO1IWM!gN(4>RU>VHAxiT34elsxfC;Q+^S9 zhU)(-G@2~86{VJ(k*`DNc#K&4P_>^ zMIGhG4)}IimOASVxW3qIP@ul_CqEHAEN;UcXzRu9JQ%k_guDYA7qa$UW_c!rF6^6J@>O{&(VcG-h)LZt=bhGlydHB97RH zrB<4|+a(xBUS1T~!w64m5Bggje^H}%Fw&qY2I(|4&1zSM`l zH>n=<@$)@J$uw~r>gyep#m~fT`s6gjaJzU$Mmmm*c9PvzsUS0|OA2EmTcVGtuoqJO zvdi?Ho&5}z!)#S{EqU!h4B}h4A&cky0RQj7AycArL`jI;@HYO>5H}r;(t&1jyJ%|Q z_h;2B3R5T_>-Bu1ck@&{d_{1iY9~o?YIP&d|(0l0`03>1M&mFy9|;=6~B;7;k&WB}{#%;qg5v z>>2fQKKJ{N!nViYVz{@sv8X*^_U~u*dC3gh5mi)IURQz_pO)7q*;xk}pdCgsSEW^0 zOwW@^-c^kq!f5YxRuj}RgIK)+MLdn!{K@Q>EjGu_UUEL^qO*BYS9zqJ3A;}6%6R|# zyehJw6<@$3MyY6{BCLm#|5cqm$I~jQCr(*Y;8}C=tn4EF2#+3NEg!(_*3f@Fdxvio zje!1-(c!yc{r9m@$gw|o(ppUGODr&w?9`RAyIFX|-PHc!*3p@@n>o2**xEmse`%`H zc0HExCGBPSQB@K9B{cf~chPskB#ZON*^u}Jtac+$3b!HO^wY~A$N*exirO!~EZkNd znmu-(X_d{Y$CsUXXDd2RL)fEx(AJX*>#+3KtKVzw;f|9V>@l5%{>RE6VxrS8hHSiXECu2(Z@okkH`S0mVM(6&c6_~@Cw;{uGe^T5;~U;ieqO|tk+;8= zF~g1WFH=WCO*7EMXnxtXzB3C`e&Hs#FWKpi_#b>b+$6W%2^UrmFM?+s+4>Wf8YlyV zn<7i_qdw3m>PbVf#Rnnw7tU>NGP}JeV)Dlis{7uciEo!7YgkiOeT+%i+Iu`{94z<^ z)`mNgyQ>QKP}v5{7gwBrIngm%7HJ_)3d**p)Tb>xCrfOGyjI2Dw(`KqZVvbel6(kB zy7KM7N{Yx!QKz;Di?{>&e?X(zFH25yf(=w}w{W?qW81LkujRsr-Iz6Yp-Cnwfb>r{mjH1)Lj`7~|}QN51vU zaNE;XIPyIuFQD2SU6EqWtRF=?%>0~|{oBjC74!`j%l5-tiXsvrOzf4XS~2zB78wlR`i2 zjMZGHj)qyS_hg3|CSfbcsB6u|m4ro0#q2Kcb&auYB^)Fu$fzX_xcK2|VdFw%(!!tBN14#z(5jY5(%$A6dE^ zJQ@W_rea>1?RvesKTNS^PM2puRZn!YUQ;b`u){OH^V41M z(Yf@M6Eb!Ks|{*qEml}+MHOY)33R@2kM1U()D9atpcbhlt9`F-xeC!H$oSo1$P=(6 zydS>W=@o!f-OT(vL)F=*;x8lvjiO`yXm6wW(<}a;wRZiKe7zXXmQ`^k@R~9B!#LRX zt?Fo|O1ZKXE!3xp=~8_wVvFIiz3e932`~%7^^p6|vvVWtc!1w~XA<|vK*l;^?Gp^S z3pFB4MOL@#a3956=H8CQGSjYWi;6yez0VI?@#;{Cew|#=64mBIp0rq0glzq#+GYh@ z+MrXDPre=jiJqk#@1%*Az|r5gqgBwhtM~}t581=RTHwYrRV|N1!}lIXi_@Ye#!IS> zyWz-USF?0?>^K93z6}fg!;go0clS$w zz0CurTj3>{@ojs%NL%e^2X{mHn#oh|AmU5JZ@6=9liJ};oPQ6T2z5~od1!`He;-;0 z9?}i2?N%ifmKD~DvqqR&S`qb$Y(3ue!DPPpC1oSRtHE}61;adj(rI+4HZgKWGTR#8^JMx|O{yq<)y$#RyLh^F({513kUu>RfPale~ntZ5+ zC<$L<*aIJHs%Otf^IFjasCGH_h4oCQ&<7OhYkf~bqA&})U%bAr3z{yv%2_p%8Jpl( z_3?-0YW^@$KS6xliS-YXK@u`iGw3)228Aw7L%eu34JQW$;wN=lEt7DI?dAh-V^oaf z#~-R$-}lfU)t}NIIuDvGp_2)zObwCUCDdnmuWy-#BwQ5`AHVd5Dho34`JhCk=xzM zT*#XG@y=T!q=ULB0|fcj>4!JB8$-vTa$0rI3tutVZfAwW{YW-=!IQSL>_U3cU@Pj% zgMNk|52{QC!`L*UW1t;8#wOt{+&1F2t%xfNhZf1MPtfT0(R1EYr(J^YD`_F&D{0}| zSI6*}vQDgr3M4(gKQ5LI1Fml^W1+`pJ-#u1)$`o&M$S`M(Na?Zk30Lbcw)F^Vj}y7 zJCI&fPY$*3Fu&5$>gPk8zfBC)678RQ#+PiAi)J`qsWVLB!pjwoHsP75Dov-1pV!^YHv||HTSX6||?XpleXV(_7=y zkY$|eBLi)IF!j2CvmRnsy=Ch$Fr+nGpMykS>669r*sdz#FeMu5>P|Rg$Q$2LGOk3* z%JvJ{s2UFnclOj*HH;GRtCFm$8Wrh38ggsw_2 z*GM+I%b(X=H?=r6{4UGv^lKXB;A`F#Zo2PIzdfYqFh+dj_cI5@XXsyS<3KMKjV zVnZ)sAB$wyyYca^CNh5Uly*+*B@tVOwGSngr&H9?CZ9Rry!S)M-L&g1bf?O& z?p$)>xU;-*fu&oUGP!9!B+Ph!3O%yv%dC_+ZbHw`u!hR^b)C+)8E2T1R2?Eby%6N> zK;Z~?myJ?+=E1DmTSq_Vww0|u7QYc+nt6{_bX?8Ui4t~%b^5^7&t>V)p~x&4kXF7N zfmi2oCcQ*QM(>vmf%T*Ds_C-Od!BQ5{D@swj$Jjo(?b=ORdlR@^SwlD9kyPGp`|*t zcBVdZi^qj}AlGoc#`ZQ`-+L^te4cjolib=$l!fmTR)<1ooqD+W@iQ5*E=~1oPx>=b zP2O!KyIzmJBZHpBh6{R58`0lcZtY|ma+_E!Pjk#8D~@A{bkT8;eh5??VrS2~2jWd! z=1?R>2HK44Ju33QgJ|_(<2EP%qe|~fb#-T`wheM-!_7xwXrb=h1$&xVQB!AY!mEQdj2B~RoYw(7p|dA_ETi@1T@3q+XVDVkewYSjk|OY`FjSOeAZx zp{jj^4E+S{YBe7!1&8YJ>v=GLX|lIh!u-@KUEhart6323+32sH(aybJjb!{r?nVo@ zWnGHY#VI!O#ya@i9hmtb5w-whTnHCO@q`*Qhw$C;YDtCXI~C_0(Zdk7ZxW{m^TzPa zjR!Ed_SkR~uj&Oo(y8d1$Qsj~{+Iq4=0xs_Pq*u0v5VM8U%54vay3u(7z)Rx^Mf6c zO1SNt^v3V7m}lgf1LD36*7<=`{}HpADGR-a4_%f$8so6LRB`V+wQC|ZaN$Yve7NCv zfz0tFOnbwhl-A0B5Fgvc*-$yCEuZWlgG`43`>CwG_~RY1g%prt;`Kg=Ryo<13Ex)z zQ64%UsYsZo;`8f^6ks89gUVTxM}<-{Kv;F{)PL zqmEcf51mTTch+Kzugf08MQjW|{~YIhNscUSUw>lTqx{#*uzEI_efP$A?P?nygm}$WJlpv-73j@ z@kd(IDk||KaB8+`>@wEBAyx=lcfehTd&&SitY}4lQ;PM1qs=*e!8U5ewep-=E34dfu+y3$V% zfUzTF>@zgN5~6<*Z){^{XEDaYkTKLkOXzzWp#S@-vmMs@gpS-|u~b?l+)UP;gT>l9 zIc<}Cl%4JRQsndc^TL}35qQ>L)UPu?m6{0O${A~iCE)%r({q_AU~O3Fq}t;rtC`Nb zd*L8Qomg?Z-bVq;2^*)YgG(ekawFuADR|NM*49*I{-4a)QXk$lU;>7 zQ^UP`yWnid9_wi!#r%mYoLMe07Bc=sdR%kJR5X4~^o^nGXN*PQY%8`d$F8B5d&Rp` zS3M*2MKCz=+n#AblbBn_^@a{B39sW2@d>b?6n|FFGSmr^)(j zFq&H!z(a8V9V}!Umfl31EmS?-V;$dkT8P{lGTK%3Uq=I%9hUWc1PA49U-nJ3#5t@g4lpT?ugiHe6;J+<%Kg{);nvTURH{-whKP;gl|E{D>-n7~_qnyK;79A#9}_+EIbOX+wtg0mT`M=%#%Dqo<)8=&>~k?D zdM9KV%NOsr>fTU4tyox@)IP4pf2Z!9k&&8H4k9vICl<f-mo-$S%hq0^UZU(J%by8H{f(T_LJh1rUXXO zjHL(h#ay(_{;JNb@HtF8EXF}MsfrHsfDhrwF+N{~t>^IF!Xh>oe>?^impZ{T`XTkj z%|v-IDr0r0rR>ss3Ey$=FXHFPvAyi9PO{T9fpQfWvp+eTvbb7KyGbA2EJvTm9Kt)? z8?n>P>id?Ii{Fwnn2(5xprua7WxBw$j7eRl2|lwFgRX|zg^7h&bQSd9!xM}1(RZNG z&S)lFrJK_a)_zfpy~h_n_pAYOT0!wKfe*a~Wy6;N!<#Pm!;qy;zn_Yz4>UQZYN(8L z|0F)@nlRZyk$a7$Kfxe=bao@`tUTpA;wHXY&g>*ju0PLyFnW%a$MT=n@>%#AdQf)r zIkkau^`lg-O|nq<=Im@W-eR6K+}g^T3)_%fQ5x~u4(8laA8wR~meM{J;11{XVe{DA z3|N#0LQG|&>`v%)UbvJ`&ak3-GVK|Ck58d~N~{ZH%p}r=iLW>4G4F_u*06et=zrO2 zevg)Q_G943Wtd+?25A95y0i1MG@5emZ#cxmD$r5S$uzB5`wt%Uqv#j~9lJySwKRtY zs=QlzLvO2kVi2q~8_%<|m7@PsPt4^xGm;f-dbx27i{8U)u0q+Z@^yP_>LF%tMiSU^ zbJ^w3=p&fXdi|l2GHbXmp^to>pMAo-+t>8ry?S0fopU*s{*&^3U2GiZMZZTf;O$RA z>mOOVs?KnK@o~3&F<#yX{A!nfju!ndP?{I2OtYI;8KA0uJQ_L!+o9TOHb14Zdc^Zb z$u4VD=Z*c|8`P9;Nfx^UJ{}e)!)Y@i#~zSn!`o*t4?hV5c++yQ&U$3q;%V-UvI-k80>KX5`W9y$P_#Z3*|gpFdq-SvaUm3$C|5rt6NcJjmmb5<{@Gt%YoO1x(TbxKjH*eFcmE-L>4>+gyJ+T5`tgSO}olpPDdK2aRV*K%;*zG1n*5G!- z)MM-Ao~tl1JsXdcS&zk@bjJUad!~xhG5A7zQC~z3+6i61p%pB^&V$N0+CA5~BRf-$ zr5sGj75OjaR?41~y!hJb$h%@Eii137s$nrd%55)YRQvP2SyI_Mq5pGl_0!%j3g5tT z+qmBqGyU{0k6G&7qTf|AJ@sSvM_N+i(_vsIFr%rg6lOurL9mvd`MHe0lE+<2M)Q8mMREZ8`j)2*OGVS55PzYC|UmnjkH@>P&x=^& z?^MaVquby{FS_}YdW+ACkWG=-tztOL%pJ=|Jr7^Us|&@h#h*)bPkfRXocJiwKJk{f zT}MLQtN7a>`pmOdHWyx(lsyX381EBzADSrmotFEe)t`~=*FcMYxbVGLUS`pCcOtN> z2jf%Sm-CQ!1nS9C_hH3Z`QE2+`m6|9p~v(eE;Azw<4O60N@SaKXVqYg!C~-=) zSU`n8+0Pfo^Bz<$Hikeu#OZjb`bOkfO4pPW)!A>@NZ@LBm{GY+?&vIgtg-&LRpxtj z&W6fn{q^3%&6N{y%1mnWZelEj@_j|WHM3I>cal7+CjVUha-6~(-jv^@;s|%zd_(sh zB`=0MQ(uhlqp>uQ>u!rpl0%=w%$JJHcGQ6nAnQbXn`HJTRA-BHJaYS;T~#kp7$4>U zd;0Ybw*Qj8N$3SPqO+xn)YfbpSoInxy&n5GP65jn&5M(Kq1RaiG7J(QYm#%x;XS!Y zF!l!w`$gK$PSxKR)|4|g1%thksytsOZdRiuL-~;SmwF0pI*lUi~x4U_0OpF&bH6KGw(Ha;VB0 zs$c8DkAgIUzg0%F@rnO=$~c{+RGD>_sqZP`qQ0I-eHLHs+^$9H;BLpo#%p|KtxCE% z#bK`-61HLun^c}-q3f%r!2)p+|6*N3^x8{JMBQtI8j;s{tbZODa>~9;-|fUBP0)Te~R`=vCMfZjpJ@ z6WTiW@hm(HI{zs@H?#A!H2CK5Jf}RrjTgd z)DZ{%|KHQN3U}AjS4-k%b47PGtTWv5Jx)zNMeayTm(69JJ@psXVKL?GY@9E2LF4 zV^yJNI?m3@vC?@fYD#Hb$NL&nm=B1GNjzXEOCNxV`Jv@kFtHNG^pyy^7JGvCgfCjJ z@b?cyS$H#MCtH7MJ^%8=Y0kGSYyX+l7j z1;_la7gT1Gpxul7dbgUOF4V~c5iglUeGJrmNeO!Car z+0}3C{E@1DITi5}devdPzO~A(IqkH#uVYlFfCTM39q!k~blV-cMfhUU%T(MZ>=P!* z8nah4zR8oi@YS}auQUF_5b z+hYZLTfoKzaf((fdqGru$v!nq6XbO}@C%+8)P~%iHWuqBgq=+htp!-9F%+6Yv8tzL zErgXXkT;&QrfryDJyrB!Yw73bd#k0|(yJ$m`xMMQ=PId4P!jv=tVOq>EwOvEi?_VOLyqM1uUB_?w^Pj-ZZosp^8iER!K?Hq>Gyg^#%q!L#Q1sq~ zNO@GOq1I?>HRt_#;mg_oQ;jowbnX9P+HAc1c3s6O(O>ks!o7#b^_Cjo9lbETEwb54 zSu7~1*C2HVU95|+<_jlN+`dkUkmcCkQrgE#yrBfG;d>JRzegKVPETSn4g73)Gy9a7 zUFh_~l;u>Y`36S*li&R;?AVahn8Md}R`|E@wafc;gSKK+WpUn_YR%jjeP0L;rPa_RqkEYEk6 z4_nHuPs{fgS+11|@u;4AJ6`>eogGW6OhLE$Rj$9C-8!+~A=OVU*?hCy`my{zOD0CYE7fRmciQ#)5B89|S`VnY z5TjZr7uAQaSFw_o;^UIF*TWcd^Sy#>VYM-! zG2(3||E^-1ID9>@QSAQMdgxw^AD$GivtY;~{xcjh{wcdY$vy`$w94x3r8-NG;C0K* z*8OcoM^wM7#7S*@aXXe%5vC1QJr$M*H}HVN;&zkg?V>V-J1q99rC#K>qfL&!49BLk za^PkMMQn3C=DzqzUQ~nDkP;i^&n;w4tCN+`GAjx_vwSL$w`A~;hg!hcFsn7fWbIk^ z&RtZ)tip_XdCp3i`UUFHTK@K~Y9$SYAiQ-p2~satujVv$TSM$@Q`NOq-&~0O4<1fp z=i3waB*L9~i&?#a4$QA&r-akrq$66)1PCG({SWWh?^!AOr)l&qJ`u6kt*N2hv6DB} zR!=Q;@+WBn(^S==627SRt%_T%qyD|5)`&#+*x6jqIYh(1fe+PC2_J|CZF#9F#7rjG zR{3>A)L)4om(6~JwKe$Ta@G19dP^HsDUX`VyWzw)+1oENNtpFbC!6)BRy|G29ml6% z#;QUt+s)GRq3Z~KT@Pnm!hTiNyvsydBl$SJ^AB%Be(&VNJ59GD&xz%Uu;_fW1#W&E zH*YM;!nDOPvznh#h%1ZWmH1m(6R0Dw*ut{MMUl1AQ>LmwX0!U;JhXtdZjTm#Sd-P8 z1>n%?_&@G0ylQ6$piu{J4%`qQ^~~4q;<-=3!7ZKhO+u{ z`>O6ad&NhX(fkIF4R6GZ!?g~2+ivV4iY-kkC=%aWpCjP=#NFh<4MN2o(F}j7S)TbM}ylXuf8ExufplJ zY&_dqPQd(Q6q6t9^Ddldpp%cQH{Z6NpVU8}m^yzfQpA^}D&RC@Wstat{aVJ)MHOGE z?#M(F4)Y_wvC>}l-lH0Njh4R-etd?dg<5eAi@#1MxCO}$%ktSEK_B)xfyFjb53H2w zAG5b=&c24sQBK}J1}%H|Gwz7}L^%uJwA{yU8k=Lw6Uk^b&qDkGbp0$i;Afa@30!wU zEZpkamTvN!j5fg&OVOBOBBQHF4eu?7w?*!!SBz%qfk`FzbN;vzGUoJWd>H-J48U77 zsjIQtGS4&`{$Cg-SV6^uxGqAO}3UEqBVT^yAzg^8tVzQGOK`QnL7MJjI~#D&ZflvYx=Z@SiOXI z21{S^K3%ZzbWwT~`xq}i##moPI%N+CoYUmScA7v}r+mV`HnRFp*wrG4luMT08O%<6hu}L!EZ`K0q`&kWN}Ck~4BGC0isK$wobW!My)0 z(?EHleyVK$2TP9iZ0LyJhz$e}M;$O?uJ>8K|673)%HEdGj<3t&Ms9BlE2HS9j<3wez0= z^$SDZMS3Q+A>VpcRSl=!Q%och+vJY%VkO*rvjFElBmXp!$xcDlF%+G^fomnte+!OQ z-OesVUsl<#qrJW)pKfwqf0$p7%4IuQ{S9l{jpOw4tgPk$TCv8%Fn^ad^`r}aoy6+L zapZ2Q``q+|1>QNStiGGz=l_-)yJK19bY7-lUD+|lajLJgGFUG>r~n(~5NTy0?7LLY z{^B+V8&1GLYMMSc$i@xqYysS#A+t`xuLD+h5*u#0=X0f!?=J09N3FmXx5z$c)Ie{k zJiioU_o*s}$HKig!?2IPsOD)C+0_ea6UXJVlB&gUYeD|lMD_0(C-f%UR8mjn<3q3F zXp4E~P46$Xpf%sE^7zrIU+})bV=Ae(s-bo~I)e$_QR;=)RrnWV&>B{B+FHJ+pmfo_ z?*jwEyXFC5f7UN4mE^;}nI)*0%&*g+>yI?KMwrZbr`e2Jd6x=iG$vD5)ewW&zseaq zbtc0N8gJ;B{26U3M`v|93)J*!6OT|{yCeoAI{5~{HG3_E%Pheti+c-lx;Ks=fQf;B zgxhMzI<--9*}wWP1yo#_{CVMC=v%QDsW3~hqHr7MFuw4#8m~V+=3y0HZ@85zw@${( zHbapgv6!bYm~UWNX8yd+YC6+yzfK%WP>(DD)qM1nZEh3oXu9jkX?Ff zzl(>`Zd-rCRMQ%HbvMtviO*ESx&~mTeQD{LMbsR)a~$^PRt05OCr+e>7L4VgE%p^< z>7$eRak|K^lwVT5PWdLKa7vYw7gPGAj88d3)89hN7$U#CL*H5NNl)V)q5s=YB|MI; z&x*gE5cmnz*{A-@cX?e6thKz=rNM@V6@o(#C6&0H zcu8Yg!&kCQQr(ux2Iz7;5}B5AI^}?MRMP9{3r(KpLFbctZuk~aH9Wc(M4K!>Hj&l( zVAWeZDSvD<_2VQfFW@_6BiZ#5-tcd)iv6W}1KC7h3;F&Lwax^!eYjb8jkqtO6BOQD zZQ|52inQnPs(GVe8p8umxOw|jjipPd8!A-=| zHbBZx)l~cCm8W3!E;#*s^bplzn3^nbhCz7V8ddpIPGYeduRN{cM68rpUnwWXec$6R z?EGi-!XsvOR>8BH;??&q=x0lGq^g>zjzQ|9DMiiM%`nwm3Qn(~5=^58WX2NadP-hT zIj2^fDtFYR3SU%BzY;4#f&IZ`!*kTHQ&8xT*qD~oK9@r5Jffz*zW(`WU8nX(>>(9> zdp>lQ$k0&;^{185W1I`^9=^*=Gvov5{vNk#n1fz)i`zd@c`)IJ5pD zV-;Q$nAQ8L^mFu<5BC2Dt7GtEH%rvV8}h2oA7uBa%pLyM{oSVxEG+eTw2&y%hE*d6m9u@Rq$Dg+}lv?up0D!=<;v0 zmmKtxE@I)tXlpv2xR$sx^`6vez9tdw2QK9;vGp=Th1fn-YEOA$Db7C$%BNCTZa0In zDi*5mSu(|0J)n7s1&QAhQ~mQ`Vr}BIEd6(UwM^%GRs27EW3dvine6KwrBeQvvMyyx zO5I4ml--f5DLduaS3Ns?xBlPg`&5Ozv6j&x<}+S{VUNcCj5dTEH6ul%gHx_Vx}>}o zc_!sV%65IgdXX(DUHo)I8cmofEv<6-C-ye0^kmVN{=OI254SgVcLr%7bbV|$qlkP) zWK9?AzocwR>7MdbN{f`*DGgJ;OZh#eDzEIpJ5!zOuIOWQ#+!ODzfgrj=D$P@TOxy> z{h;as+K%El??H;ud%(7tbI_P z>p<(j(_3#nlG^rTl$3S&!)6F{0Bek5$F(v4OVF&dDb_RI3xCF5dQ)TuP#M3*)g%08 z9u#_j4m%PGl@P7xafR?5((mNyIehsad?*KdkHrGRjcF^f^Kchjco%03gzl%_D5Cts#6*f2g`Y_4#SK}eG)Y0J{ z;L&<%byO~6O|BHMi(`5wf$1&OrC5dupO7_rvEP;GLvZ+0di_2a+bnrj-E;)sV4?Er zsWWQGf+oJYV}%vf9jVdTxLGk@Bq@$l4W%+=QbAT_y%L z(R=oG3$k|cChAqX#96txVD$aS#gxZr=lR5KSK0nkYkiE5<+qj^@?c?zI*5(CVGLVU z~@x(P2~=EFO1j!JrB3DiMAo4=VY`ck2@q%3yF&`QyKK8 z10tj@U&uyjYG=*^sBOYC~ndHp0`j}s?rRU8*0ud&-&h+k2akShPZO+ER8W|1EA z%%#J*K= z)Bg|=nUB++DQLILse?IXkZZ9I z<5d&86FE~Grv8|kCC#I0N~cMaW>;#p)XRyJi7|<_P$01VhDo;8j}}~#{<(@r9)fA- zX=zva(giHNjfy&xGoEKZ~zjgjr#T#R;-*NNn>*H_TjGhVkG4^eIWTJZF zhj^952Z<4>Wm2C`gbBhr@s5f0iJ|f0-a!}{rIp4qMBDMFHTZQA(=KZx&Gds8N2{2t z=o)_{u~;U_nRqC5Uh3S`2UAz-#fPs?HB>o{*HfPi#|D_oDyLF^Ir_KAo3Em-s$$!b zG9qQJzb2$CO1Yl$2zL8Ci`B(P=jaxMH$!X1zJo(Y#p!>d^@pUY(^%JRj2gD1`ePl1 zaDB8OznvMoTNY}owmTHBpZL=Er(R7I=1r}6Rx@1t4wy6sHws_3x(1i_I-PetyPA`4 zrW3LRgFA-HR8TW-iakZu9RS%T(3}2L?VVH4w8Pe;YU*!Q)HzID?15v?VMHlTuYlOd zL>0LOXFJHihau9v(EZogTdIXHZP8M!j^vTOAzcREIE>Feug|?r-g;d=Euf}~vD9NS zN=dw9mgu+^tweXZg-Nx-r;lPq#Y{HjPvlFS_rDfU(Th_-mdms0Vk>!c4NSZoUXzJ_ z7A8HP;9alFExjqM1-&~t4K}7wtlEgu@2u*R5yS&5ogr2dIlCt$<82NLu zVMTdk5Pj%OG|ns9Ly&9ExB*1W3OzC>4#^(F)b~$AkBMd|&fC$4*yc$U;xrY*t4@6^ zFZhKA<#ui@J!=cbSXJc}Zk4!4TvmasZ#nHO^7KY1{vw^=f_k8-=-OtMWwf^z8mg?m zpf`1eB)4#o`&fG+R`d=X{%5_Pm;L+)vd}a;YwC%2xe4a16@AQmGQ|e+nj*MbJbFWq zJR6G_(`(4C_cll^ok^5;q1WHZS8B;Z-Q~pat>qWw*RyiLOlNgESw}xbe?JPFg9bNK z1{q>+^XRY-@Wu&x_h~VnR(SqS9frni{jpOkWHq@k>y`eDmT>wnnDrGzjYW^k@S%QL zB})H{WL5bUf-WQ3I-|4w2=_^_Obyj)kK}pPP`hMNm2JTVD$>7JP|#kH@3+gX>--w& z^tZ@~+37lOsa|&LOn>N4U1Gk!i2T|HH>>Mcd%G+|xB7|gN?|gaS)l~Y`w*nqVn?0D z>~7Dy5h+FU9IR8CR_+*px!!`+jl@P*9IZFT&~W^dy~#bdF{&g>KX`WE(jKxW+` zH?H^ho00OeNpGvYjXpZW6jHeLv6}ekVrOmCQkCS%|IB7~5nqL47qO65Si)H+y&oGM zr{bJ1SD%U8PS@$nehGD858ShWowQfijpx%nS?YPr;UCpR8x_!B7;H}-oSzqM<%{d| z-xfQufwYY8JwS-LFlkYTk_N`d!0!`xwh@Vlt*#~OpkxQ@36dOJ1 zr1(mUM`X9J&!PXGXgYbKZSsxTytsXB?D`q2c|g}~ohjHi%xv5c&+T!~!W4$txJPfS zI((ygCtdhqnR_=aH>YzS21n1a^y8GT-r_#oY4;3I%osn&pPRt-|5VDKdD7i{cpnQ- z_q?-s@MFAZ2n@?6U-s2a%;@I^iinN!>K|01Yp}7QIQdKOb27xv;EmTQknbftA%ni+ zIUUo>Y?DUy&=_)zSD)p@P`~l}FU9T`sm0VlHIjR~;yr_2_-%TTF_;Zrwyz5^^CH+2 zCWU{orr_ImnqM5nLYHyahA`_kjJ2RhZ7RdJgk<;9R5n;`6O8*`HDP!7^C({o-+P~} z{tfT+{1Zv2(rfde1?FtZiRka>F?ZmeC0M$lUDjjiLe#U3p7cWOb|^nycBrh@Ju0$( z6=&hAyrq&@Hcy;pfIjsgYq-n2sJ{JY{J0uls!Lyfgx_tpXR7EO7sVDY z$`u*JLp3&=3Y~+BUx%WzFBa6Baw4p&9c`mEO?GZCn)o?H<^583>JlxXCp66g7q6;V zjyt!!dhbnTlAl=THLB=$rt>aP2b!o5SE^OR*Xt&!sos@;?u7TfL`Npfd>AyY!6Gku zT2cMLJhE49)(^MzmDb0Y$_I<`zJZ={0e1=C)YwO38tmlmjc>D}%6QsQC;uiZ@8-*E zb;*`uioehpvxtqJY_~cZzV*}(yGxOW!z5dMy^_lQ{oZ)EUFmdb^= zBSq>Uo*2HY5Z-otgXO}~a8E!}_}vh#bMbi{cz@KeWB z&H=+dRkhBQfmVw92jr8n7T-N}>@d8g^nxzeah~#(x_&?Y zJjc%ZTh(Xs*)kqbSC-tUmmIV92K+G{J)j*d?8L@j!HuUN{cLM}3%5TkRx2j?Q=BRs zG=lLm;cBs(jqN_**ZZPRTFnBixP%i5)2rcoL0i>|HAPt@z6}4nJ6Vr6l$*m`R=9UA zbd%Ql_xt3+*Pz)dHxlG>D!ui`AAms3@Rpf=4HvVo%d5XRv*%)o*mycyWr)0(w*8Hc zTXVMAO6SaBjWyu+Tsh+jy{Q$VEPPSpRlM%FKF1l=_&mI!8Q!~&FMg=fzQBh%LfB8_ zj@*6~b%tNC+8$?B3Hl5%hrNWAgBIKxS6HipTISy~#jjx^|Bt2nfcv>>{{Zec6cI{F zWF?7~ky%zK5{ZI{lXNm7ayd zZGZi-&gJq@Wu5==c0TSz!z@1^Zm&IrX|9Cw|2z3{oL3j5IL`J-PpKO^>dXHZ%L?VI z8S5i?KAh-32D#hNLbEv0FdmCf84Z2)C6wjx4DU{P?1l(?4ZB+lr&D0|&H3C-zE~d0 zzRRnN7$p)v#X`;b&x5h0di&+EptVj8jP%uu!ac-zYoK*_&*++Hggq>V+VR8D z;=YZnTE&^9`{T9N2V)?=I5$?&KJ2o#!Z80UewR%4 zdX<&Ruu-^EH>!4;i61AA{UGKm(y8Kj&=xVe$EbJUMm~9Lq`VQ{T2z@9bwanTmfdOv zW9O)%rm9~)h4Gxe`-~Eemk9^9PYl34)eI*Z!QC^ zv~#tr@PYURG2aT>A5eoghC)wMVZseW;bi4BkrCd=7M=%tS@w8XChLw1osLEE@Q-=& zI5AsUe=K$U51#dD>}kqyOCEF$bN*2d8*e@>)EWP~m$85d3+m#9Xb#+Lq#6CESJD9E z{90c8626v#uxI>DIIA(wIIoD-rE-S3&nN0Co z7C+CAPU}nc_9rjP(d%TD`(sn=O?{jt+*)+nj?IUR$FZ2VSvs6#%8KQ+rgv_0qvka` z7oL{61Wms370%%QN)IZd)``#-M)IDr&RArl1ib7CoU(Mm1+4TGmbZv6=77cftt=_O zDaFc#69|1(E*UIVlf=HmIoe?M_rs2PqIHOTIEt0F@TI))z8Unm6fL33-s|LHQC`?d zmYxEuhZ`*)z7S3@=8Z)XyrVhRl0vnU#(3vh{ca>JFOmbYjg#QYsDHkOowYluG4I_UTPppL5kHUwB z;#Wb_kH$CRZ4I2S2xm@v;~d${WC?HnA(6-aFsq`hzd8DV9%^0O>m&?%+j{!&!r7{p z5qvV-t}=rjSVZNs5u!U&s$K~`mDdHNSe#e(dcD69_|S3%#XgpVvbJWtt<}?@0Pd+ucP)boXvY*MqKZVcuxE7xnmKY8yaTD zfzminbz0B7lQWQOA#^y$xdY#LOHZ?q_jZ@o0V?cW+3j%ryA-pMGUE{_R8EC>)H%Nr z_Nbe<2zQJpvG3EM{bRaOpQu#R7-^6k*2E~Kb^bd=`t#{)k?=<8nQ~ZG*ct9nd`P4= zvS`F`%B*u|ek2gTlF5uKp9_eBMci1#FW`WjLEQ_Ke>Q zHwSbzui~o1wCaP-l*ZI7J&N~+^Qz&-sutAyc}5ye8Mv45!xdumQF|4h2PuGQj5Lom z>Wrlnp$}w^%lKUv?C&R)b2IZfl~97Zh|-C2*{TG)t0*HKFq`lOuVk3iAS0ZOKjZyP zDU<%Ao47}WRK{Vyqkk8ql!Z6=b{6*)Ddv@Ngcl)mA^$zo$&-_;T!+fvO^#3H^UF|w z-!Nt=`1Px~bc$ufeY?wGztF}9z?)2w!%5C1xt!z?=X74-0aID~YUE{pF^L}*#k<0L z6aTWl6x8}ml)sA@e_KlXcA2+L;_USI@OhwYSl<}cW$2DL`QKE$CUD~lefA4=TL%26 zBgJlmtQ<}-g?rs@h~Iv(=c#Q2tmXyLwVqu@!uX#49o}|v+HSRtZeitDRiYi?XmWlW zy3pZikT0P}S!)Y%@gB}GU&Z_YO>_?b{le;+n$_31^g5Y7Ki)W3tS1+Nt5mz;PQVVv z*n+c$yZjnhS(5l9z5WcU%df1zq>;|Ze53huSK}`l32(|>3431Ck2{9fWyGRt z@#;!yjc|J9y!8&CuP(!XYSI+$B^01OcIiXUU9@EFzSee07HY{OQsckj_L3;9sDU30 zPk3Mp7<(RuwZIX6;maA+7du2kC#QNU7@-~YZoDcyv-+;3KHfOl56 ztklvdS>nIYKR#mT5bNQ&;ryzn)YkR~E8UVwZ$w^lGH?^suDqFtr>aZi7(F5BkwjOAZRjwacy}>YQ%(7*m zR|Q!AJYNpaW_Qm1!?Oscu3LJskV7O_0Bqdce?WPT7o3^&QI=8NGJPFkojPK2hk8(&cAkMic4ye2#k z8E!o4&Qhs$4Zl(|+>=K;z_080+)6BJCQi7UZNe=WIrWmpMfW65@pe|7UUd$lElnYG zFHhU`nY`dWOe{R#eM0r{7Q_lHbrjF*BI^uinaw(D*>Ldbs^wDh{|H`kCiW_ebTw8t zyk&$4t(b_4Q9M0+?6~|^9#@GO>su?D&N?$xUQZam7d7fuv^uogC`QAr72!R!^J)D3 zt+2SPIu*XRrjjh9t-q%dJs~E-b2c*}MswB)ET{q=6W$p=43B#qZ(5@-_gd0+Nh^6$ zyojFRMcJnnR=B~*u;M!Wi|lQ2HUDKb#X{UN+{bcO_RAuxFSc7x$S6H{$>X9R+*{BP zr+YnqlWM<29*U^DhVYym(bZ@?toqx2155HHizf~jdP;hhh;;CeWL z8SbMT$Q#qB;pS5Q-bwI-V$uJ2OEY7ng39Uf%)*#YPl{3jk-mhT!*c`&bwaDz^O^eS z3-GWBvgk|L!4RWlg7EEd_2jbXY|L_zS+(MYBU$;6NO9;sPPTbow%MAsWoD;{`#s@24kEv)r-5}|26t*4l zYjWved@R%zGeyKzDA$pikVAcPn-_23H%IZ@Ymry*#O~~WIGSCJd|N&r3X2bkg=9&u zQKWu#8n^;qULr51f$l@;y{V%&6Ok~1@9ednUnAk3v|+U1Kd`Ux_Ogqy>}=7&$;;ca z)?D~L8g4wPdi%y{)53{$y~6)asz}B|o^S&6kcfDQeFxz?=bUQ^XPqwb<97e=f8V;h zt)qP}tCm;|FY@7FtJD*(U;A8w{?|*>*2=F+1556 zEBFit+oM<83X}QElWM(TU3%kOv{!4@B*#VjH8}bd#bkj@Qy*UZB=?nI*RQaYy|QR` z^Qj~kpA!?W>FKXm$7GHkhgSof3i$wfH4vpcjFn%mAL!)OU3%7dYE4{T_y)3{pw=Wy zdSB8bSWj(hdqhNxm91YCU+2Y8O+Iv=%yTF58r*6J)do?I!s*s(JU=|&`7YkRT!skm zJ*&vV=Tu7{%fq|P`xUjwZpu+B=g>1bM|@Fl^C{V@DJva}6qJdML zC7$ve`;N7)TomVSl;KR#%@mP#X41%fKK1<_O)3jZ4^tx*#IJU#BdV$SR*8hilm6@c z-hBU68=Kp&uk!>2GxSVfvPWmJzuvgPA|8D}PR|QT=SS~XiHCDQmtv*G=T|)VxNi3y z@$hYPt_t{#lyXm{dsd8 z?Dku%Ba?larW(&5{Rg|P8+pJv%|DY|N)nGeY-MY3uwwjSHtWl^dQ5(*E{FaD^`*rL$U?@{%mo_XsOzt}tdBmPKmOY>GsiEtd9IvTiWi#wmxNGzw z`+Y#A_A0$#J!bJCRXLpSoPd1|Vcq4B>rc_pM5VJd8iy1EFrAz7%qQ&H3{UmivEg?ggcyD$>Oz))YyORP+h$bjl!)TZ+i0K*I3AReZ|6h_4z62-bo(MB*LF` zwqhc6C=>fGw97TDraH{20l^mWniL|fl|26^g{QY1b2V0+=hYLNebo?oq45T&_zsjf zZns~TeM29yof}MEx1tYxH5cQDv4OVg*wd=LK^W;-UF~ev^1gAxyRq(xk#4aPveY@T z@S1VX%HES?-|4)$l&6BasL_r_o`PpnC~+-mooD8*Vblr*hb*!_rd*?fkSc zmULdt+RBVtv2D2Z;a470i|T%o$ILQD4tZ`VzdHfV*TB9e>X?5LC&bE&%AcKL_zY9e z9NiDex8WmysK#$ZlJKRMttY%KGTcjhf1*YVPbUQXUeQbHFN0r}Neil~zF?b7*mZbs zK>x&irul!zWrt@(Yh7nd&qXuZ(Qfwoc@h1!I_4~Pvr|lzgTzZ{vNzV`| z`p8eA_E=6Gs3LbCk3OybpXa`SN9D)9Mw+SuYGc<+V*%T6;tVXao5oOs%5_~v3U4j! z%{skd-wNoNLiV0b^LW61E>QWFk>$F;tNC>4mUg}j+#5snE)m;Iv47J{*8BVc_`^In z+)rHZmUSzz{V4nNww!yw8Jc=fYPX%ffe&AXTEpd*|DbAT`rTDlEFx>qO{{1b#dR!v z*o0&MBAV*+sr0(#J?&BkS*;t?ypB!mW9jxz4TOCfq;s@QR2GSbn|#7J{SxaMVO}e7 z;@5fJJxG&Dt+PbdEn|nbI92$QI0(;*mzHNzL7HNC%^)1Hu>Jm-HAai0-q3H3jP;^A zV!5pRpU6J1a(Pp&a7R`4Hy*p)%KEVK)4IjsY*Dh<9-3HVk$so{en&f*&N@F?PYgPQ zTP9wR4TjN6!dpe>JCpj0`gx1J>R?5S_+9bX{kot%q7C$8Vu@8P5d}v?=mME4Lfe^3 z3CgI#>8T>PpMCr2eeYC*A7SS)l%SVYnzJ#9o9fJP&gnt1w3=OeL90I2b`XaMJ-#2K zsc6TOY4jP?r_)4II9Y#HbbgOx1)XfUJetFbTJ!fCR`M=3QWTDd6aN!%^#~^TrT*{- z5bvThMRl>6`Lx4xRy7Nss0*)F;8)MQcN0~@Z_#`h z#P(P@zQ4{aQaTYIp7t1Tj|%GWRH5RhFT9I^7U06+@?k_yAp{PFR z>_u}H9V&kMt9U<>p91DlfBA~EN%zD0CUM07Y z=buwQeFN)S$pd?I!E4ib4^mS~!Kwd5&Q|dg>fF`ll#ZhP1=jhuI=2hflT7S&<1PE` z&pJE)tvz~Mzk3NR%pObWM0EqK{vyUP*S>tju02)WJ0fZA|5Uor-?C(LeWc5=stHEa z*YAIc!M;ObyJp{dsB(8gh9*{&G8#^9d`-{jXq0fDNjiVJ0KT8XtUAl@w{$A1vB*$1 znZ)Pn;EGqF;2Zj8%W#lz8^v9DC}7i6aXnc)u90QSVmV*oRRyU&-{_bmnmn zmsxJ9w|nUsg;ON$`AaeicsNtn0ox4P?s|2>16WLDpRzp~-a0-{hR;NKA7B{i=i#+CQu|1L3%oCRn@w=}ug4}RwrgI2y!nct!<7WAB0kmr@8ve#A zD%k0t>{0dT-}?SjaF;nM(&O&*{hcjWA8~GEk8H4j5|uW- zl=mj3ge{j%Gm7kkG@gm}c{;AQBoRr?5>KVI5s80OX~N0bwKT%BPF3wtBe%82jIg(j zy5OkX)mpWE!EY|$cLQa(aJNsmBj#h7JgL6ZQ2FR#*|0fJIS0Xa;txYaQc0%}78~Wg zSi0BUGm_7mrg$FUEz0C!%=c5sdrEe^pf9z?i0$mxRk^CF zZqgN%U`w8tHu|S1n8}CtK&aHtGu5(#^L3?)@bgt>Q-O{a-`J3%`$n^v4myJ;Iq~>b_1N$_dw9yQ%a0VZ zJhaOF32ko#%pGBjy>yIx#-GlA)9~`eP$p?&j71P)k$n#LT|MpzkoBsiyt2s@s8%)_ z7~%v~PIsQXmG3?%k{ZgfhapuXPY_*F@z;ahOQ1}+?{|T?N*~{02dlx}oiI8d#r2@i z4|lrEhYvx)ity;Vu=ltVYxVVbevuz5@z@pY8@|JnQB~~HTG(3-zuQAU4R4U&?01*T zN9)y)cbx$)CO3vBwZdJdq2CwYNWNB%K7|MUswNm9&sO1iM~su#S&G^ES_MS*ukaPy2|Cev=at5(-4?3o!&#;9{QQ32J6h%S znK}KXGy4Gy-()t~RcBLagD)m(Yz zdCZ>=<#$IY8MVd1u~^V$+KI~#Fy73t_fN|7WC-*(FaHAbf6y*%W0$$2F+}805w%M^ zH4#rCN0zsua8F}PoN6Lu=xH_?G4ORNuJZEi2E6P=%0qakOiwUhz~av1K0i3Z29yFS!s*){9w07L7QzDVpch_mEOP~ z(HCWcAD!X}Z$uwJgPS7XF171bG0k83WEmM{FB~r`CL=s}pAFn(xSv z6y~}%lSGVQRd)g#}l~UcazB4rYJ^1)rWY>1(CP6Uusxjl%w&`q*xmJ5 zWw`y3nG8_Rj@AKvBz_JXcn4B#=ArfN(Ie62cDRdiR)J8sO3Wr-lhh@C3 z3Z?247E=kr9E7>^Bi(pQU}xb@guu%t;oy03@Nsmiw5rgc&~L_`=gZvr*yV^mZbf?b z3Cizl(O)st3F?Y)UT~_tnk3^MOZZ(s{Q4<-^tr5`!XCARxqWfxP@iX`T+CpZB0Odr z94SG4I|j8c^50pIcNujdY522*8$mR;tE?0fQcZ@zn;KEF*IrI$hKCoDTnM29!sm2mcYk~1|aj53yf`6Lz-YNX!u z`69foubnz38ap|YbuwBUE}m2ohg0sOe654t9mK-pMrpcs@^pCDz*wGJi6&WI zH9894+-gnXe#4+^HkQ|J#bR{8Zblg=*1;~Nm6evU%MGK1)2YA9Md1$G+7#9viJs0+ zm`pl(X1QKzP3+^W3a1ie2zum7K3tRcCZRr8k3En$rCNzbbw}klNxq+BH6tV8jB_{z zUP%T%PPb?y^E|;zM#}&jYOWhr6P`jD z5&Z|Zo2sTrZAU(H&iXLD;fkEJ-L5wlkGuFwajbWy^8xqtA!o>Foy7DMXI4%{a*M5c zGTxzRHhRJsJUf#L_+yN21*?R6;lo=KlE=eam%@phMKWv__02l*JV8{4x2B9vRDStc ziI&Yya{~R`i`vZr4M?j z*@Mt~BvgA5?)Q<4eo$|PC&N2Jy z^cwr_S3g|E?JCPirNne$HE6iuqL^paX5tq$irX@4Ww$ z_H&Bv$*X*=w>qGwxm4Flyez)Dz|3PZY{Ten`DmO7XhFX&5Gm=7=}tyEFFTHcFb~MZ z>r|o7SxtCP+mG0Mcn3s&>lqFg9*!O66BS_HQP>^cYBUn_n2s}qHw!$+>I;q0T22pd zK`Ox(-|)JB^!kTGtI!=?$RqPm9FF5%wW6VS_zjy(5|u09!msq_^meWp@u{h>`v#ngLY;jF7m`_YBtuR`6CNYWubl{O|qc=ojcqix$SXYGaH;295@Wf0M(S0g} zV({`Ol|XHLJrX@4{#NjqWsv-YjGY+^2v0kmqgvF04HIO?Y^?E)ahg&O4^vf#(DNVU zaRYFMT+rp1T@GhX$J^^Q@bY1b;LB>8*GeG7{z%Cl`Bo`DV`Oc94^crBl*j0>nZM3_fpn39A$IdV zTsNFDZLTiwi5m_xrvqy0H=I3Q&+D?|7E=>9NWTs-!evt*P$kDY`a*OqM-?0zj4yGcQR8U11!@BZ1K-VaXgJE|-x^Gz}oVJ+= z7s7eWX>esN%OqE2*Rh^IqaEPW4o_)3V=cp}19Mfwld#@WYLaE@CNkA%JU2CS2$tNLB*1p?%!P%aL|d8)-v=YTINpC_z^!|NpY=d)BNZQqmZ^c~nT%IWKrl*s8K@fM2=!o((H zsvXtA;R%P;RO{!&*xl%RcKINL%7rn!gSU*MuCB78hw#+;Iyc2*|3ZaIdaAqFWUdiL zSx;b5;byt#RsBDRp{91?unIQx`({zNHv8vjRY^v*!~pCwC%c5FmLHGq@!9LJ!?hUd zKWv*!j;m;gQu(amJpD}UNxY+(+&orR3vc1*t8#n5tp;7#C6#9_!VO;!MYrnC&EmOJ zAl(&gAs=O`zE8OBJY5%-xsQ*ul0QC{V?UN_U*~t9^i}1BYJZ?U_w87sS(XG!yoq{@1>)EB7NGfHwQ$&AelU)?Z z)GDTm>VvJcimaI1DyQ<^#Cy77P{WPYf&V=RrB=$(d7T{k8uP9QTdvWm53ANTs&9^1 zQ7Sy5FYF0#gXjdg|B6)W6o>5jpP%oEyuRHv@4G-sw>H?k|NoPi9u>Wj4B_g)! zTI&&WDd;4?W*oIRbegDtxeM0~O2cb%T)D?A<_B z@}tz|@6}gzYijz?`^#d_=;{`a@s96BvI_3dUtmfO(} zMcW+wCyzDNhAs2p!chPGR3)o5h(YgDRFh+JV|o@Z!7`(q`*^|H zw^KacV&5KC6TW6p8bX%d0ZFT>0rpX9vfAhHrmz(db0fUHg8#q3Z`aTSpVtkUEuTf@ zv2da*+*mn5MNyjP{;4`>DvH+F>0*5Bl-OAhcSDb2F|11^E7Y^kXQ(EP%_Tg&ke59h z(>W^3j!#4XP1KZjJn{w{TgY=O%Vvcz_`P`UUa{~yT`MPV9z;_;p=;g?7F~$FAdbSj ze2d^Pe^}!{h#sEWJ}nnDlF`#emtoAIs#z-@!(CCS&9J>w4TT`oXsj@`lOpXzV%X=Y zR`nXTa8jqY7tFoSY0^$&Hv@mWqbfgbP2udxNtJZq%lomPt~mD|tnewm+FG}yN1_sW zi&d8DE)~*QTjcy#T{=)Sx}P=Xn8#(Y7|v|gputb2CFP+d&Geb~u!TyPOVIq@$EVWE z^LucP_uyqxYF!^b_XyAZO$Iu_TOPDKWzDdsED|)fa0AZf#3`Y|nA7JFrj0pejUSh@ z+sLhtiN(=!PWk9vJG7fV5Kb~*z@hG^1D1qcyL6WeK)SP7R95>^-!6BA3EAw>cKcI= zV)6%u+KS#6jfQ7z!;R=$WYy#9s(kRgE7txfzYTY1omY3Jqm$I~)zMBBf-I}~ek05! zolJksKG!kMNi#VD_xBj*Av1Z$34n{{WAu zCvqRhbd#&He&Z?O$%~jQRG$8}TW8{Z>|`2+?KuimC(Pwd(NhSo+^>(-%9*f`heoM# z^FiB_{B8%S>aQPmC0Z?U%IK#Aw|v!H28-)j_{XohCv}_<%*^8^!?-*u z>G|r2ZoaF^1CwQv<23K)&}DD*aXWDUUOtN>^yF_}P)(+=PA>h^rlLK&zR#y>kpk9o zjkg|5)UNYk_f04Ht3ZX#=2FR7kMHPfnfZKBZ-$D+XK4$!MDql_qonNet?DY=19gv| z?BXp)aphZ)>a5Zg<2a2iRJHzP?2?@4w&k_q3AFGuWOy?~b#pmoCmWkdVBCN4+ZD3n z82EC8mio4@?{Velpu$R-s7#{Hn=XI!la1Q*+`ABG5I&b8wjY1&&EM0|DSq|a+pO#k z&&|sh`%;;1sEdl~xUch+R!)jSQ5mQ(#LJ^5x{PzQXWN6;6Q1a=B=4kS;qW%Y2YF6y zs%CdRwIndPERPsUF-(F@J|_knQR%`{qqlIP{?5qVfhMZFPw_Vq&s)Qnts3);^Hbl>yCjf z+5Oy?u;rFo?_qoNf}M&dBB+o1Q67)|hU1QeEa_CP;ceC7*5pn0=pK(N0p+@x=>yg? z+DWq0G>Z1J>H*5wLD{SmONZ`AxSf7K9yS)A3-8a~$8W>!(&5J09pdRZ6@7TSXCdhE zp`F-+qgFN2Fi6?nsvb{tmFr_JY3+1lb59oi4oChT%58!SOJT!-NG`1Xf9F=)+35k! z5bRJxRDs*wVaxCM_Grk}Q>|0f+x=SMKC{?#D~oL9b$^S-&Acw9?7sw?YwRZ%<51yg zy!UaAAMo68TXrec$O+uC5u6M6;FT9ehoJUs?0qPXI|l#wEAk{RGDY5fm{)xwhun@8 zh1Kt=uELX{+t^^GV5tN(k|m%GK)M=t}h0B!Pk@G`HWL5&)^23 zSJPg_`JSCFsRGywFKXc}hxkij-f>4>o?}JF+JM>9(SoqDOp8xd?ld@T)-7t$j_5i;m2S? zZ&+8%sjH(_+RPpul_{!P(eF@l15_D`Z~uhXrQo~M?a|ASdotTTDVlp@3A1tB@5Ewj zv6O_O)rCfJ9R3#;HK9xNy*wXk;LSYul6s~QpW7mz^-w`ymF3IRm&1D%rklqXqN%2c z-bUvuta4p|xxK2sx(;s-ihvmQkzD^h+|+)B=T@?lzn`3EE}>5|oaVC1E{(OC53#xX>4k5b%Wla1 z9)#M-TTa`fMXYk1R#MI=WAM%=@qu3ODGHM+s^z=j8$)rqaO3WN2vtP|vB_z{pq7VT z&m{goPKDN0B>kdO+0t5*ir2b+_K5797uNPRMtHwe51w1n4(-urdkz0N$FmwZ_5Y|$ ze}U)D7t`}uIhCx?hkdU{%VDy+)ggIAad*u07>}93`;N=~tMmt+$9^XA^q76!i^&a> z>pxWmx8}p)9?3Bju?%`{;mO7qdF%$>k}m0CmYGBIYbYM?i_bL9qfUx6m20LW?h_8Gp?n=?^@A>To&}mJg zzxWC6e=Ax90xeRt<`TyXRK2I%I6lRG*T*lf!<^5lKNscThg1%Kv*$WiXMTNr!n?vSZc^dSExS^ zL9XE}6W(w&2{!%{YsGIT+nw-?ZabX)XTDfX#P6~X+4;&W455;fY;~M`X-v5ccQt0f zi#DmCTgmbFC<3ijiQ#^|l%9kg$~Fb{ot8t(JkG21_KE4DKd8jNqAWM_#6T_kyv{y1 zQ~~~kZ&VaRyLfJMxokEqcN&jrNE7}SgC5EIGg{FI3@WCcUuB%|28M}p(GnJVSiLn? z)%qk=WtmF+k__^(J^sl~&r^l}r^0VT5q>2Wi7ixZJRJQ+72lBFQpZ`eMrJghwZn7N z;ijdFIMnzApS#Zt28+Y+?%Q`|$g|jDcUnofL#Pg4xdLg!`_Q`SqXix6XBG4->hN`X zlto!3+|%_8WNFQF4_eg%-tuPrw$9~OI6z9+vJ@+bB=U1oEBj9k@`ss(bES=~Co4|a zT`&4+8Geb{c_Zb2G^L~l?7xW5w1eCKtB5kIT$0kFRzvM?MAKzis5C8e6TbZnRe7qP z{#z{*RKmXaMkn=M0jER4djfmKiqU?y;3&_^8Gq4Peie<=L{PX(KD<|aG-jC`GjD;n zhy45~7FSJe74CO?ONQRdUav#kaJxlsO6=n}R1%e9xLND86=fFXV=$;k`0X(IWM=62 zk^DZFRhC%MK>nYP!qJ+R8;MPZ@h>H~(?VRX2alO<$M>kD9~W00)iZxZ%Uk<&8earM ze#CbXnKfux7oGiWCEg!|2@~*>7kFJtsC!fe{WE|2-CU}$%NFaY#wy`lbT-!gP%YC& z1a(Lt?t}3&PU_djmVcuKHi;f*ll4$L+*P+!9PJZ96>zK1@b*+9vA3FIms&ilE=F;f z@~n*bj|iGY;W&Y>O~mG&iiVS%)t%?)rDpAEMN{n7Kat9OV85#M-Gn}U&?v8)MJs#s z29MjEP;-YSxaBHdk%~U|hp+prX&rP~<;+WAh_hR_DLY-cJVrOz4&|5M!yC(r;y(ZI z<+XgVk2>U_-Fc0l9JGd@w;zCX$EZg|#pgsbiTVBRxWd+04)st!QTRQt9dCy!>m;8O zUGF**eM%kI99PH9}%=8EI*?N2!4{k#|*qy~SA0=I~2nVOGH(W3OY-d8I#*++w|>(jgHhs=YwgT!P>d44UclrWQU z8*O9xBPO5i+kbBJokYd<@@@D^h?zziF2i>BYTtOewU%&;Qg!kejc2?IX)O}-D@nLU3Y?@Eu_mJJAZA5nyT|2 z$9!h+xvaY0JMGaPJ&0nmYa{HXwCsFOg})n{>wqa-VVTY{>&NPj0%AH3 z-Vxra-df&XZyq1_#*t}3jgdzjVJ)=qUQ4= z_7v{Qs*G{3q}LadZDz@dC+Tx&#x{k7(k5zug&Zdgy4{1N^ShuiRK8YRr9lq_;9=`&BaH;`IHf2p}g}yVU$|2Wa_G4RIQ)j%5n9~Mm5Y6Y?1?Jy{ebB z++3a&Mc?tcP(ifBk*AtVKQjq>B%T{zt95T3o8gS+g<#Hy+w{+8w6 zRuNrxiXu1LHes6vVkwXOmXu{i%OEM}+d<1}$4O@Mmo?4P zvpVHDa=!DAvs-oc<@?^pr?9o{c8EA)cVm~u*iPtFq zi=6qd4PTQ*0}J~W-d=)r8E~k_MdVO=`+LxTwOa8{mdQ*}E`cpXba&3Oc}eW(8n5~S z%PAqB1zq7&>-idU8N>HNFXL+%l@vBNQ=MKjLO%Oa5;~Q}GgBLBH*Bflgw_FUYc_73 znI;f!$34y>yZy5uEq67J`;eb$p<)lW!ZnAG{b>q)Q~=ZMP-(0qyp8DrqYTBYlj-e5 z;lf^=yFK=@82c%N0nF#Q=fz?hk(djwY_8|k-#Ls$@ss@bt@uXq6`o`{qEc*Wmy=>+ z;eNwqIMft)cPH{TygWeTc#Lgls9SEua$`_q;N|oLOU)#zlQ=6dL3I$`LS5eoS;f#z z5xoVn9LL!Uv-c2lxg9NzTb^?|r6xZa%h$r$o&GZ0yXJORrmHHB^2fH~b3s{4$-;Ya zpYVR7b-2rO^8Y}3V{RVT4+0#clo!R5>p||%agY1ukPV`!yO@r}!c)REL`{tEUX&XH zV+gm-=f{A*re+;??y@7q{6|a|WSP%Y&#hQC8GPBqDkZ4XKf}vH)^pJu_VL|Sa5KD_ z?osjCmVH;toH=oVb#^)nk1cGsU&Sqp(&?VX#n$tsB<%8&Pb_bw^UiB-H_l=R{wE%l z#{53SmczTi%J7%9#JPmpvdRuE#toO@R97O6 zo#j}opOJ!MI}9@Xi5s?H<8T8`EqQS-yNnV=C)E9KL#V(^H`5j-sfxPu;4x6M0Nh<6 z(!SaV!vyhJ}AF5`vz>`7nQu%L9&Rgr#fcxhxN$6!l$eVcF1 zWfL9sUEXz@R$j$QlIstJI{?qf%^%w5$8fPF)*hZHcmYQ}2DSg z)rPHSpk)zjX(oz3qP#yL7T00`17)>zIxFEm-5l`c0k|93?poTy?MNjyze(J3A6_o$cD&=s> zCkH+_Ufp^^cX6VQMk!szNmPO7pvw-mRYma_o_`HzqJD`)%&aUmvyZbADSg&B`MHp+ zI!3*^0CV4DjJfi>In;=0M85k!OrrNlml@Uns-3*2=Bf%qA#E zTk*@`^1xd(o3rApnJ(N4X9A1S=8meMC-9i>MA4s-m*nWWW_e6@Z6$*qp-mUIH@(?q zp={Psb<~J`kEr#-P0l05^NaTRS9vU8emIvE-mLX3Ry12JUly+(Nm+ReQ?DbZ^)#EV zG_m4(U%TbZOk!v*-_NbeTPKPK@{;MWcO?t|=G0DR4D&GM=6M`{1>a9E%ZIlMH)Gcq zu%DAg|Jb?kGmvZ$D;AFai>rszpWi^aaC6{K(DOxm6jXr}RK72a66%@Pb*@TK9&cl< zM`1-hEO!fB>8XZz2tx?>qlYK3mYd0ck(6Tm6KmS9_H8Mae~CRU2Q}22Zv$;VXP+GW zf3A4W5&OXowd8Mqsqhx6H7AL|a2sdPTdJ7lZZpZNg8Bx>tz-_(aj|!Je|TfWJwCJ& zUOc7toy+5D$&CXY@Py@Q#n|@f!Al>7M^v`l?r0^_4 z8f@-2-K5ccw6-2+b~_U|?%7B-dmm23o|ai#VangDtYY|AXL}R$?HX|ZH(jEybwmpD z{gw8)ftY&(&ZUw`GV4(0F^gF;_im>F(^~frdJsVi2+#6%^3_3gRgk~^COSK@N>+@! zkM%!+``q9y=lNSw{e&v;An3Rys4}yuB-vSYAXWN+69P-I|B)~=w^JqG%XHxx(KUX) zqM2lt8UGSP$;8rgqWOK*$+qYd^vK5cc)wFJkI3%f9WS-4s3fGjZYJHKPUubkik;WO z-NL)t_hWRAnMWz!(?K16CR*AE+o&0NdD_>a=e$#&`>8*D)Mt6=Sxfm`dDyZl5kr~q z<71eAIFpqYQoSoT1%A36pDP37CyK@EG_l6;t-f3q?)OiYs9PKH|C{2Z9UMu+DhH_> z;}f3pEpNGBk29PIe;}3%%AMjF1tC%ymThg9UQtgRutP2Mnl{+Wx=`ed_}dIqmg%N! zRm(gts}3^DY$BvLM2v{#UMjP20wbI!Y0cK*ZPY)(+v2RU0WyEUD)*e42)*NQZ(}C8 zx*!|BjV(@tEpNfYMeZg^B@4bSreBs9|581MT=t5Yo`L<1*z-1ZC7ixn%=^QgzguO2 zG;H%d#&KLPyD^NqEwfhVF>e~B6r8*y#>1(H1SX8x6Y6*Hf*qA3IZG}v5H>A(%eO&S^{Cd+R&gPaN73~$oH-sAD&k2 zCU=~J{Kd?mp-2o*GTa|O%wBoqv3>mE1Nig`&XSDRC$UTS!|q(vppK$qixJA|vxYZ; zRN!Oby^*Ip-@hB)erQJV_(Chq5j$_rwd}`z(I4Q!e0s|+3d3pI&+F{Ej~1NAIG9_4G?Cxtj4kC4#pSUizJfh}q>2rc6E{KK*Tnh4Xi~hs5Qei= zGI&Z89mfh`xuH$L{& z1pdE*bMKX%E3iu%BXz@*?iYUxDJ7eYbHG0TDJvG&;hDrPX=RYPV(1C`R2PHlAP$T0 z{_C*6i}mKkx4(t*&)DVDGSO+f6wdNpfc;O>J3@En9xm6+`ghAaX(*nR>~J!=%K@j) zrcxr)sfWg473F;DX{!m(<@e;bKiccdk>}|I{aB@2VsXD}=0Shf8o#|JlZ8FLBn#ESv-QHkzY>%Gnp%I7ZgMDdDVxBOq4}V z{Fhyh^0(AHzn8k|duN36(0&e!p^EI$5Gx!ZJ5Q5C-e=psFd;JMBzhXoh4;$*>x|6pNLE-A-aNZc zeOH+JuoP1$lBhF3#tVZw{U)T$W|UznqG!|~v$2-EqHs6VUm`PydtQz?Pngph8;hZf z(HseM`Byij1kA3@Tf+Nb3duz4&7`tU>oxn+5nATAKiAA7oTA=qr&IEuX&7Ndo_X2Y zchhS=hE6->qW9rJ3OZd%OnI6ycGFr4V3h^UO4 zZKf*w9?lgoLJA{11S#k8+l;Y2BB-qqUZv@UdpFma&0Sw9{Yj{Y`m4~x8-C~V^az#a zW$bp8zG68V;cx1g@CNqu&}WCwEMj-U?KwZoVXMT_9E|K7hM5Jr%t-XqKZ7ird0i&i zqo17EUOZ*Mf0ifucn`<6*@?oq=^<8K%ep^NvX+YIa7OrD(VoO-g*W}}=Kq-!9g$hI z+}3>Md9~(N%5^77VaC`6t8XU*23_o$)!d^srjW1e_!_ALl#O2XC0?1d0JbT8BSYfi{I3j_=a|r zjS4#m-*||+H$-JN)Or8<&i#*(?@vRk+IHwP?(?qbU!$@r#_t-NO)=}arM3?pt0Z{B z4thXSIFiLo&OoPM<<)R{`YFiWFi{g-H=CmBr_qT@v6TGL(TeJd@W1%WC|Tq&S!67) ztBrHt;BVi^&f)ptaK}q>TJsxLHI?!i&TIaRE9bOF&5YB?7+J0G4~Q{AHUD7j8=RmK z@4c;RooAfz1ln%nJP3*3gn%cbITJkhL2SRiS@bYYu<ZjR8s<~O%|r$LeyE_|lTmiF%mhkSS!bT7vCFg0yq(3J zmZ-uz%SC&6Ug#SIt?)ABp3eK1VPbEJqAnO=N1l@>{tx}IE0lXO(TC`qV9OU&&U1~h zUS166%*yfH|0yL|c=<|da1nm?f_-iWrK-zjGwe}WD3^tGzoZ;J0#i1K#tjf*ot@gm z!oNpy%SPMqpP&fOpdS^pn(=tl2rR0%SPbW>XYjcyPV%k8+G?q+V$eV6N1>At-rt$u zTIWOEl9<9_YFJUeKNv=>_q_mz?_!^#@eN`+r#gHi-~EuMW?NwAvz_u*Ys@97Q!d-^mY!74AK5kuq$wlPhw4W? zr{3rVU+&0`WmV8M?9;pQezy1(yr`i*#5H-OJ%lZ(stGrj{tI0$QWmn%$R>!R<9Z_H z_{3*0W*N2{VxX8=q{9C*!@BR-r6P_xL=@$MN|*TEAwJWa=iQDxDi`&@bZ@Xq6MjC~ z&!5!Kt7tA?s2EGprc)Sczgd1v{S5c+4NcVZzw(wPSlwhOF~o@B1l@Ak@g@4f5V4pY zE{wt~fA-ICPWU}5+OC>UA3Mx0?X5qPislDsxgUCOln0LUoL5CyZ}xrIPxg|JGs&>+ zu+xt6bbFS0N)0^@Yy97v??bOBr7Zm?hI<<#+@~JS2`j=ABHJ*!CwclwTr8YB9cwP( z4(J(nDfAH@XPZuH`m5^p_w4jhD$$pH-$nWQ(L z`&@p@1v5A6^c9Pp)`$DVdX6VhVHjKp40Ew;^c=ll56>-UH8ZfTiad7$|6e7`HiDZU z+pGVmTwO4RKWHv1uD+BJb&5Uk{=^OHNOAKp2_Wmwp_*G35o>(8LgD_bg+)k$^ z7Qd`|>+F2W9f%oDX4UciusnO4zIRHc__`JoO zS@rAFxZzHH_kywRtQxfXZzE%^WTt<93w6UtZ{aRSqFIeH!_QvDgMPK!pTW#o>=W)( zUymJ?)CG;v7aEJ8gS>t%{$C7Z9%8>wi^g`en^U^KW96N@s*xvT`cK#++<)I0?j9G3 z{pd)A`P`^PB>rYLJ9%6;zPnK6cw7A%p6**hwGW-58;Mi@)x^+eu%SC|$)L&$9keH6 z*Q1A6_Fae>?$W*u5yI^a8&r#>@wzs0{eE2P9sVEAur{-nwh(FpYzXgwxkQQSu8uzI zvpU(GaI?m4E9r=L|Hyam+2`;k#jn{VC5>VOwd67T+Y9d==DUq}3U2|~Kry*L)=xcG z9$H>f3oUalv4S_je-#-_sdza05yj;k&7~T)G=o*%(}pg8En|!{LQk{#J7SkJ?2yE*1 z>et-RF&KNk6?s}_sVD-{$TxeOt;sDHegZGI$N!CAgAHr-7xTr}`Gjx=dsw2^G}%0w zI9J%#JdV(pqp&=u*f=1g4ZwaLvmIY;UnntoY{n14*nIv;e7mT zwwdF5HQR=#5Ei?krW&q$z$ke{(Qv-Mgl#`(<$C&g+hE2=_WC#Mx&{3Im)~x($K5^S z_qy8y2a2TZ`aiSiW;ddZv9Xlmd7sts#$b~9afY+-HoSMH zl9dgOd||(zz&*n~SS94Xb^6es&~&#O4MpO+^_s66sQy3u&l{`f!tf4fE;LrL*7BJ%}GB zkf98m3HR+6g$-NuXsW2{zn7uQ^15)-^b}V41d~aL?M^q(WJVdljz=MOb6Q7kcMuk{ z*YEM23wTGss7!WxBcuz@9)AFFgL+w!zI#?hQ(q3b0u870-504h*WvXBC^ug=IPbs0 zz4RZzx;yl!t~xr|jPbcKX1lW?u)4QlR`U3dSYvhFuh}p+U|lr2zzz@9S?|o}mfE3z z*r3lFmWjt_Aln>wL)KPHe=MtYR3FWQ-<>dl zr|_{KJyX}5O@8x6@6t)jB>g9zD(MpWv4$Bf%O_3ebhb*9p9#8qT~K^Q-`+uChyI^+-57eZh*plpUwZB?n=5eHG78 z%%d!<+u}Kd`s^{2_bwHS1J%^8@R#j0pk!*JMwGSi?7$&w7!19aU@rgg;`{X0yHePG z<1ruO%%Ns%ib2g!+=+Y6d9Qwy-9P+IBe{Mkj1EskgttqF8@RuKP(O`hcl0)e%4egM z@RPL|<{QwVF}w^X;fCMt{HqcJ3h>2I^|%XT`v zp|86c{0kXgOd3y`A?anzEc6HOK$v%8|BBk~G@sxlQ&_bY-<@Smr+8g>-&IfQCdOH)nkXr*chQk1+vj=s&`s)8QJDF)h)pire~0g%Y|+L>=+u;uF}>?a1po+d25e z-dIVW-A83q-<-P2j)QsOXbfwo9^-aDRa4yw)Svx zzn)Ao+G^%nRRj6430oJ|J!*qBY@_To$G%g_K{w>sm24C4489d9CPVCw-luK}PXKJy z9SLvr*zO69P)&R)o8(s6%;ryd^mB%&J;KwNNuq~D#{IvtC|$8+WO$ zCaEv3-(r_zs=+t#n4`vdPZV6`Z{M25I2mP&{d$NORY>S$;pV`pw5h{%zlLzG2X6_z zwS4OG-S}r)k$qI{(G-fGl#}`;@NPDwxy*yp*}Zw}`+~maR(T+oTCsxPUO;hfg9kmQ zB0jIWZOeb7FuYTu(~>M2-ij3Zo+DuJczh(h39BvjDhoW?BqA$8m+(%TA9(Hr^GZX7 zSxn{3ojCE;4+CkhItg|82@2Oay4_K@S(0bZp*3XVThsNA8uOKK6WlgE?iun)1NG-t z7Aq3l=hI5l>;A+vN695aoe>P2DkIA_g5c*=u~qTroocKnU_(v5JJO6kv9>(AmKU+A z{Lpt2{XJcDt^KL*om@HH4-jy3G{#woW#-cwlEJ*$uqr$SKSo>*WS4%v^FrV4=F-rb zwo}`4ilpuQCA`6-xZGBk-|fYy-k?HWjy7lAs65b49PO0fPQ=fN?S=^rKD=W$jnf_B z#MhJ2UA#7EWF7fSd#rP+YX1qg8ex}mv*AG%Xl=7tW0WKK&?GTgGagP9g?{}eULNk3 zIp()!x&>&7Cvy52Yoo7l3s7Gw!DT0KR*LF|es`|#Z`pSqMpHlp%%LFM_A_LYn(SuHHf+;BAGx?17er1ex z3B+uV2c^aJ+v`}~!4bnv*=yK!pFHxjHNC6Hca?3^^Ojbk+ye{Cqvg^oCHDryD055zCA>`m)xu4{OVuQb3szUB`PP=cmGm1;OcsFKE8*#gH!|kq2_9wsDzBRL8m1-C1^A) zG`xMG9=~fY2J74Nj@a%bK2VfpFH)b1!?z3g%P1BeOgkT8#E7ijPApf3lsoNl3*L53 zVsvNw^2}44j^zrf((3pN@o6ePiXi6Fj9pbh<&S4ksO_sz`Dq z{WpFCc6Uv5k4BiuMoL|{L+cRlsK;a5;!;PTb~=CBO?~xGG@SREqz-;T9_(k7g?eH? z$o4g0|8MZK0?si~{wSlCm}(`}?ehS;eOo2*LIRgkIiEQjzq}i(roTSS7&9SDI6d|f zuKOpvnZ>s0ot)_>3k7w!sXH@YR;M+#L&-(we0oWJc(RqI^?~?X1829z?}?t-_NJ2a z9e12!c@>-6XN-mvIg$p4`B?tSD!%&CZJvf6@6&%mccmljFN^W)r9pP03Y@^%+o@Vo zMHh*;M(kPLe75Ol)Wg@qyVNGwmkSiJ>SAs(MQn(CI*i9BS8dLQj!m$G?|FONmZb>qG{*aK_`}gV zqWB7=Jr2_zP~CjVQxC~IvtU3mYiP|!CgJM)?D9x{`#7wxN)1>7i_=DzsX5vus)ni7 zG91DlWs!1Ji?hz`G?nM>ir!A*f0p0hV3f(mEUx?23#MJwQ~v-;--U$zX^owD{Sy0H z5WY;LOy{!yU1gnnvHCErgGzHc2Dpq>da_A)p1P4*bphKI(%o6jJ4!|#g|9VeuuDa6 zVR&}cJlq!Eb4s$A>g6(g z4tFbrw?us=+K$=Z4Pvh)uAPjh)`~qM-_*qNkIGrov7;`~tfT7ksNH#;W)wPJC1i@t z_9mw|3ra+9Ue?cg%IaX8pwvG~N%%0K7p;}4YSW8y!1=azX%=ryC!(jp@BFHS?4ss+fq}DLnZRtYUY1%&hXn3KeBX=n>x99o}c3i!K;CwfmxZ=;AkFb655DBsPsg)$20x zFxlsC5!ES{Ja!6Fyao|}Rtt_2d%LJB>GS}L%cwyus+hQg<2R#x0tsi?-*6v7b2}Ao ziuhP3CiD?2>GOWa9$nySJJI)vuLbJwY7jmZ<}w_c-la+|!OI4#5LV-lU3A@Ebe3=* z)P0$sO%yjJXyD;#gBg5&pj^BX#y>9mE}>4(X+RMS_o{{GOVa9=wbG}&8V&D2oTKL)u{SkE&S<(yc)qu!D&uR>8=gU( zt~PiJj_kvO!%cJHx!Uh(zv+!Wnu7ciE-{;C^{A}S#4384MR)3L6+A7xpDHN)8xp5; zu425$_||tY`DDT^9-4h7~x{pPpeb9nx!pjqq`2LoVka?$&W&%7#M z_E9mlq5QVSYr;JospW`;^#6D9_Nh8TRmA-)wZRGzI9k0^3JW+uhkA*U7jBR*L90p? zoo_Bv$;*+qSZfEp_I(;gKf3xW;&v2&51pKXwB%cM{!`tpe>`dYzc=y?gd#1C z@}V7G3ytQfC7V#h4mm5)U%i;oCqIwVgqxQ-sI$M&3EzyNw{Ze)rPb6FH|u4HQsS-; zo7BZfHsN|NtG+K_HJ|##pXiAni{1Hh-AH@%y8IoX){co~$0X{Bn$RT+H-BuhH*Imw zu~w5!zFMFXEpC5TIk6F*o6CWjHDj0g_BtB>5+>$`@tYGTfh$rk4qDB}aBY}phJOD) zmhJ<7=j#0*_~%|9v&fF@ovg@ABqNa|D@~G+_Mk{+c6J$&N}^;ZBiU5=+IwWrC?m7- zf1dmIf7}m!eepT>IoG+a*Y&zy*Lj~eZ8WW2dsXHQn!_-BK4y2r+YT4NfdyDvXI9w< zN3!AotDL{7VvmDP`-ypsRWY5kH~Dq87RY+d=uoSiO3T8UU#Mk2wY%Z12R)#56*v%1 zk38gL!T_l8aP+#q+8Rn^crQfI4m!(O8=}{BLSM(`FRLt`5_vyT^!JJ3FL_)Cy!973 zyq;ZNN_THaA3bZIr}2}Cy!H;KNxI_2NBPMYyfv##*~Sc}$$GO?eq-6CsrBr2`s%oh zGEK&RSpGePx%T6)?V!;fx#k&Y6lJ$6w21?FKrb2Zth*)V+2zT!l+o&>y~(O#r|9bl zMN5dkRC5VWM(&E_V9{=B>Ytns%I4p7u{ZbNitphgry$ac_O~O}SCMwt$2rIdovVn* z`707`pg*QodkV(?8hub#>}~#jGuDtDhrrZdSY;ke8e<-NX%HPKy$AW^tI_)O z!W=T_4`MmIJ3fI8_k{u%s5l?O`CCpAw719e+2uT@_nG*sMu}V|i$A35n?oZgj^}Na zC059z(=mZ-6!e#{grA}bCwB%z^S_cB`b)+bC1ySrgZ)*s`S8VAYT?ko{{jjYV3+Tb zh!jpVhr5PrvhC_*$K?aPo7?mx+QYQf*0P+(P2~RtsqyRdHEXM6*F%GPYPORyZ-~16 zw4fY(zMnB-5VQ-8C5_%-D|+fE*?csQ`$`V3Enh6c74lQt7Fc~{8RJj>`aP6g!t=we zW#P%n(X`BCo|bEmv2VkW(%`?jc}y05b^u!(<8P`tFFT*g@-mKAD7r;=W07B*Bh{QC zXo9C5RF{M^{ezRXE$lSfOHl0t8SGyNLk;I--C)CV%s zIcjJdYR6T#q141oo>u{f=j85-|AUpBXYqlmr0YDhhKv*NXt!NiXor@;+l9R4DLsx; za`_ZltG?Z+N6R0C5lrH(Z&NBtsrUxS1h>bg%TJHRH0RkjmGiH zkL}_aHTl!l^Q`s!MhhBcw^HoRMSGVsc8$mOgQaIgad_H#B4j(o%HcF-Uva$28IR&} z#$0c}JmYzz^3GG#u{WLkx1Jo@8=BvRV@v&!R;nL=D3QBa60W-xyXTFK}y^VE0gRlGe+7&E1oLPU53L2B2X5dtR z>2N$Fk^|PaQRNqo|4EH%PvI{~OB!k>`JCptD0+AMtmG-z`C2pR8=jGCB+o5@)P-=X z_9AD5XnxNieogVZpaazcGObck-@wT8o6kc| z1l<dTSz1bbIuF*6?idy%95=b2=a+)(ngicWesXE;z~d2ycIhuZ@;52FW}* zt>}Hcub?XU8;q?&beWy$g(da$>5luYz{(5b!o#BJ<>G<3@R{Uuj8Cv=JviOMskS|O zSg*nI)w0H*Xd@a!OdKzjc{UmCnC?ggs=PCrjP0a@H6N$! ztE%6JJGO#Jv+#lNKKRDEdyk37rS>|5Ck|HW(?nQro`}08bMzNI!6MDAt%2UiY<#+z ztiOc?)9EDalD)dEyMKsU62CeW9wpjF9THu$QxOyCLi#(+r-TStofo5N@H7T;u|4kJ-fV(FSPcFVHdM-lkcGZ zF}x{vvSw;dGrO+N=nqeh#UA4u(`cW|pyYPD++Jm!NsS-w(T&AEX4^{q_E&z=SnPCx zaVJ=}1e_eiCinA|pCHqXSaosSMihp3GS$Xq{}Roe**+1Qf=lF~H0;C4!)d&a`0j4l zR9oFXljmoLvx~*fS&Ht<*ki!_cj3yT&UZ)D_)~G6;y6Y>{JEe#$_@MPkeS!=nk)JT zy`o!nik?ylbQUMq*!EjCd0F-J0=&I}KQ7VJ>P>T;0t>5&pglZo7&U1VP3bo|BnPw_ zruHfz+bu}4oqM6maC6yA>3dxa6r^ZPphi{_g_~3q8KeKF6?VhQr(sSf@#;l*LUUQU zDaB&5IL@In)KnDTmdKvSo7l!S4dcHj$0&do|0{QNpvCs3-L&HU7hrWcjPMa1y*~Ug zAniQQs6OG_%gdq##NSZfAKpQ?0iVhl3s0#wW7oa%*Nf_eNaQZ>A{fjrSFq71A;KJy zTG{^GBZm(6nZozKqM>{so8IBvQI`So%Z}s1i=-{^ZkDUSCavdDz%rVi}d?<*7PW z4??y%JZ)$ED9v!1N+Fv)n(sV(-q;B&qoei5qw~z7JJs=JmRW`07RDvV(Urp+rZ&YY zz_mFPx{GT4h|c(4dR={^tixx+dk8w=0x_Qd39OzhZ-l3E{-eZx22(;W@G1FjgHF?1 z5M^zAj}GT@ymqF#p`xzJgjk7KN^Bv||4-}Y)y+Qn9N=5lBD1MtnVFf68HdYr# zuA$X0z>deNa=(X{FXDtPvGXgk>GQtx9?ZCB(dc;3dyFsfk>$TmVZ zd{we~`dkF<(-Yqy0#4urJPP_NI~3%t6b(UrJ&9u&Mb_N z=SbXI>Aqn=o>xU4E2BD!Of$fXZZ*>YKL!B{>j_|Gx# zw`JL^iT(OZ?}~t)Mhv&fU4UBIVz07ZloGSZUUb)a`y%C?ls8f;nalR*6gBN3%v+dm`wYBnvwAeAF?y@-mx$mc>Wy%QW37I12Yl?jQz`59 z(7W5yqKO>NnZ**v)o=}UBFD%k|MIb?A?h$S{_7Nv_PV^iaGY0FEE#nYUV$XbsY-1{ z`?=T<`+3N|{21 zhwE8f*MXUoWJ>Q*%F5!8d&3EF%UhkC#6qk0A*PfXKWO7QzIfa@GS+;HMM^~e#~KgOEQ;9c3w&do$onJWjp`8O8SM9Uj5Cw@ zzd^HjEOB3AHJ;VaGm7nHyjpT*-slc-cPwRa%A%A%Q+l#SXV#cT?|Vd-=1jD;(<5)- z0VnNDN7Y3-XB3+HT}AcIzq$p>aDa9)%`W~m)E$&%;8|nnToh_Qf-85Y74*Y|H^KNH z;;Fo>Cj=@fbDnl;;$!OPdEXa_hI=C)_46&{z4|bEyBr?ge|Z4+4DXVSs;d8|XOS_n z70;?EkN%?yyW%8wKb7e7(GzmqH}>YH+>$>!#@-yZo@eN}2cyrZrY}+IzY<$+xQ;)S zSdn-)Q6y0|{;OP91d}K#uFvzb89ek-%B_^P(0I4J7jChiNOhkdAsIMSgf^!gzcnoKotjfAbcvc-O8@kbQSW^6;`n(V{espY>4cs06+> zPWr?qS#J+)Y#=`jz!7Mp&H^t~A(h6%Q|)gZ?DI!D!{ta*e5s95?qvOyINE7GA5MA) zCf{2IzYDUzNgG`Y3oG!li{dt0WKBvIE2^OXctCwJOz-ke=Pyq3(eqTxk7VsL;{FG? z{=Hmx2D|#r>5N0szP#){Oni9cw#cTGzxir=Xz~ND__|S6Mso&jMYene27l+LkH|L7 zRi6b#&0IC^R!Uxe>Ogqk@i5$BJTEB&nIC7@0@m?Uw4zg+Gw`{1@(jKs49J%_7)iQOJ?zMBv0f@N)x*q-u8OKC!31&L0yd;I9^j(ZJc`KLp*V)6`iub z*%DJ_t{uE&u54M9MGC8tMydyHkL*mjOHXHr{E(0V|ECfz4h_%5xl@3B%jaB7XO20cc0U(ODTcRU_^)D z&mjs_xGD029WEjkwnqQNr)tP|`=MVrr*fYjP)!voa)j#b`5oyBR9xml^uYo8QQL;ml(N2y)Ed6~U>dVb?kFp^?TIZiFGm z_&1W5e%YJ;aV`3^isM^j6cDkc)#8o(sxAs|;?W=T^|L%+u(+$B;@szFH~aMm)is=+ z`_$k42UDMidCOF(#jT*Xd5n}Fx|`F(nER*DxkhZKen3w@QIuwr>U8YSc=EwWxVyhL zRbhnHq^NG+)fxOn?b=H99NxUr6~Y#a9~J*~_30|Ea1s# z8S2tRczO>kYr#_=Rx^iNSz5EpojBEEk+o`1Wc-UL&#Y3{jPl&|lR1Iy7F5xWpbCcj>s}NuZ}9c*>X7iZ zqnM{&o{Zh)ne~q;cj=-l*s_OTA7Y!+bqX@mK6~?@^Qz|Opvdl;@p^JT6y_vyQ<$t}lNN&ka;&*(IJ~tCrM@(n7NKP@si<4R`HS&}Z0>`90y3 zO=q#cNwm%JvrX`jvb^M5U8#TY%yE>(40N8!P&GU^HUyU%#wPD!M-^e>5T`2dj|By~ zurZdhXDvD60p}k+55(oN>MS>%8vGiYAfTH;^+AO2$-@E>k3b_&Y|OU#GLPpZs1?ftNpv; zXgOiXT2H6cOfr!f@>DLioEX0mzbBD1u}`LX2A4TU=O`oFjWj~Ihw_|!9o``x-m6}p zg4aVN+=@1^j*GEyZ$-H4bf(IGrM~4QYVAwb6NxY9@8R_Mm(b!h9{&^7xi6cJFiuX| zQ!BW7FnSwCv?q3-^;E+%uVN9q)kbZt?P+J^mgA}wVsSPZk2jZvBjFCp^)%7@m5~xs<=`Qdi2^w{pnc6xOY3qNjMtQ7Ynp_9gtcmYli9Nr8O2 z2SaeDEl~9-8R8o?z^546B=)F<;Vjd6D9KA!so%pJCJ$ol%PGd|d1+43A5Q+Z(j^I) zTur2GVvXxoQwD3kj%T)K({29#amvg(vGFK9GCapR&^e3=_I8e}If^~9(YD)RENMl{ z$MK_{y1N}OTL)doTg@Y?nQ!1_?$|L%RMpzN1bq zc30m`^|N6;E1iA#QVeH_e~K-w_e9p;7|?b+d7`KZU4eyoQC432vQr*;S$>qAscZdJ zWvg0dGzhPnBl_yH$ZYu1m}d5s)x0d*9F?O^^Ylw%t_H5P0veWUIus(pGqtUiGP!!X9K(VY-+JRGlJgywd1SNvWY z!dClK!=5KtwK$geiA*pVllvB$x3-F=Vs;Sbxk#lt8vYcZukDsw?vroxB%Vk-nmCk* zrIt@^lh}~ho?1Qen>zHFSQc6M`S@&m*hN%cjXj?DCNU^=NSf!<3{5*UZMVc{DSabf zMH|Npq~4#%AI~3~5bYBi9mhCQ9!nV)nIGH!->vIuZ^W)HzjXad%bPFVJpXU)f7|^x zJ32VB{8odM;?cgb7e!IY*r@o~#I(dAJJcN0I~9E>Hb`&&ShQU{YeMfk<*P{0yv9dI z&?D}O4q)LsqUU1GNCdk|~lu<<*pWkv~()(|M}euN#r((M)o|OYzEyw^L`PR!LovD4P0Z>Q8CjO|w1q z^TczB*AkB;@+UITM@zRQdsOviq?^%5>7nKiaj7|?@#Pae5{MGR}@xsV&GMb zZ=KI*=O|jm@5Zm5#e4hfessmsUR4<_3rsIsK_$73M|fARQ_#cXnNlB0Gb3%sbUV`} z((X;IowjJ&CsU`y;e);Ika*6VHkwsO9DA^n6yco@u~-vGwFp;^m}AT6Cy~Emf5ca% z&QCp?sF|i)y0K}VOzoXoGjRmx{T{PAXq}$wvEzGFN~&L$#41CG_5Qq@J7nIc_biW; zmaBG9*iJ^jkBv->O0Ax{OqIDN{%E3L>g%b8=sw=6f<3g4&X2vW_8Scae~Nmpswjak z)Rc$%%ONHB_&R#sH8_|d(ScfaGWKvhlbzh{oZe1a#^G3bYU>xW_flHHiD*H;n*mA3 zV98bWoG-%V+3J}Fl=UXD^!Vr#&@V5QDuIFDsivw!g$r+>zB9hqGldbE^JA!14lfE% zhpd(@eo|G8#2Kf+`-q-TVW$v>`s`9^-HbMJ>&A3Fq<*xSMwIGZ@=QA;-0NTN@pFOS zjq&Mi2wnbcagKRZW;t8Y=BE=iC-LGy8#j zcb_Uatr-+hm){9n9+jPE>9kyqmcaKK$PE2dTdQFIYPsxFm3+VCx-OXQa&=v2O#CRD zOv5}wowZOFyG8$c#OS+e#MyY|313qU~^58<2pm^pVYAF#mq|(V4=J*0BRPZ9c{$vpM|xB)m-1f}yZ++1^r|PI?RBtzg?Z;)0Y@Qvf$EU*C`JZw7mBxGApA_K*U$WafcvoIeZ=b?Q zCbLH~vC~sF=_@m>$LsGmn<-9(>FRvu2CzKw5;r4!zTN1gW#uVE|y8fg@^RsK4K6z#p*k(S^k%wnx>2PxU zVSba%h=u&FA-o<6HLj}AN5Qx2V(~HS86#7N`*faDU;kmR=3{5Au->dt{tq$pyU1B9 zMu++79vIwI-1;bWtfu*_#ai;}ST0iu9>T;fi~n#cu#`;wlbx!q{<$flNBijk_NS>x zYQ)x0Q!@s#{RRLXk#M>KSYKlNFw z_73Oi!kbYC%C-N*8t}fExccANc1};_CKAV}s_!NlNJ{)`wPOc**goFVjwXG({>5~h z{V1+mgAa_3#-ZrcQ2N?s(HrPttOt=yu+Lh zQ_Hg$Gdz`hDViDPE>YQ)V4GL1=FepRZw6)M4Qka~m1++wI>3`Z#OO-1a&=Mh7aYFR zn(E+0Z}Wz$SmN_)=08MeL%o$PnDfo}EnG1~dIOc>=SeMbrTVP7itr)hWL4GOos9IZ zkZZo~?u}?Ip8B!e7~VEk);P22qL)+ydyO+obY+RpP>qCVx!Xd{n^dCpKHDO3qlI_! z_B799(fh0^yt8SO6Z?RGJ0D>XjcMVws)`Y-~=0%HEf063QpY7VE3Y}R+W$%B4Wg;vtHUMd>eSW)rV3GuxsiJsw|dEvBBJvk=4 zw_~uXBCWHd&%@Gf&ci&0e=jt~V!k(zA3vjuwL&D^t4BIjY}XLi_p)+s96Tc~o<>|X zCojNS zU7c>rA%i@Gi7nDUs!!K=MJxrSbA=kV3mvFD&1C^iryz}SjGZZOMJGl0F5LdAZc8|= zzC?ZTh`csjrm4U>LH7ywk%gZ8FuU~%3!T9bI?JwGtt#yIelhty)n&Z8YY|l|i}M0K zXg}#=r9|jF^>8@9*bc7uFhWo9-O=fx@Fs*AJT%;Jxk>JS-&onBM?};PN=JB4bwO3o zCou4@=(8ecw(7hDEN^cf196in zttY(5WY)9w8B5B+L*<6>B;9EGOBMVnJd64k%)aV0&n{Vbr1-4DLLoc+qsx%Xn9W4z zV$b8`lh41hs@!~dIGhOY!Q6l;uduoX@hc)O+^zaI|L7vGROZJSAnJuklulkz)!&@; z=V0gIjql@O`#-V5aPSrRbFsB`VWoDSUk*I5jtYCZJlUA{=!!J-K_IImBt>bLnC}(HY?w4HHSs|CHo$3NiL5Y43{CY z(@1;RkD%ndLtk45k&mhoHo%H;aQ;E+{|UI?-noQx^r?^Kn7Ez4;@nZx@9s9sDR@^d zD#=)RHWz>E$ubv=a!zb*wz{5try9O9$+^@nxIsqja)!+H4h(w$nil6bb>#EOR<#H2 z1RuP^KKF*mcj$9f(vgWJep8)(z%#Rpu9=joYATrRyyQdquQD7>p;zB&KGh+{APgfX zjy4i{RpvEoC?L5K)e@zgskp2MI8B$S0F790Q2cH3uctco+K-0XSRQ-`@9l!u{s>Rg z!vAo4^9FTjE#5cXZl@&DCi3a3?(qL!qj=4hVGG61i=nS%y^@#K{G)F6McCWT{#3B@|LWUir*71OUgNRB zD}1MpKJkxOTme4U6AphTo6n1%P+x>MM>M76UE}Tjbw{@H#PGJli2Vxhhe|JIo8pCw z%%-l+`Fb}smBAo8Qvt$L$YIx)^P-uszP?Pn#kw2uvSY0Cj4tVK;yv8y65bq_-?*Kv z_j2?J_#TwNCn+PN{QP1y{TgafA5n6jEP4$#_kg?Mq}38}`Z(5=o^G^}A08KBm011< zc_JrGVrMKXUkNwctuV$8Sh&Ut+vA7nb&Wp7Z;SE5)sXXTNK=QEO0aVtI!zU*`jJk~ zO8m47t`?(Y4D~G3KIdrui|4~sHi?Wnc73L7Q&9E`&u7*W>t#e~cF~bRtXJmUt*Cqp z@zau&p)bW&dHX&R<36YEJ(i4(@J`^DFy=LMvVtEHfJQ47z#G{qUh&9?R6#yIdfsbv+&lCTH>oT&kmJj9y^KK(i_%xL<+No<=i;Ah#tn0XP z8@XvO^r;O)r?Sp1o%R3dN+;vjU{E*#9NzjdObw7J_OovfPhQ@|r%SQ$bI@o8?w*R@ zf9$MmI+>xBDl6Raa(m+L#AAt?iCoy_awET}##!ZGH4>*gR3I;yPf3^)>ZAeU;Wrg~ zQL_m(zfMqOU-+l0Fg~$l^e1`X-U$Udq{JWBDbet#lgkPb%^PmU~{9vg(TF$;t zhN`9P%p~(UYq!H2TX)*KaadU)neYcZq!pHW9HxE=Ra>yjV`8M4{TeD){2~M9^)E*8 z!?Uq_)J5T@xPSQHO_8zNeELI^EAnhlXqZkF`Ibn^#A|M<`|_AibGG_QZJ9yu_6<2_ zWm5lto^@tGjcvyGRaPDZMIQ28${x|zM1`~8UOk5U#GGsT6N>#CX>9Mih_72>y_bKr zTP0f3&b+K<8)uJZiS+(_rzI;N5nDazrfKbZc%MQ|@t%`j6>ik|FVYqo^|xpFeN%Wh zb#~v}ntdjUi=Uz4*KoNq#&QUMYG+kxt!kcZ+T4Bz>_{uSXMsT#{7FAvevR7PNp=eN z(RWTV?{L2PIA0!TU60Zcj+t?-*k8^aeSuBZlOwVl=WeGQvf>L5>+jDID*+83Vxujw zVwCO$?rkKwLJKWq)@6^A)paXwUeh=?x?;}$m)FHVKPaVk@ zFX0-Gsg33vWxAbPY}C7{Md6L)Z^g>R4$BKq!s0(M%W${-Ikn0CVs zBRq+6zj5BSq5)1Pz99=`XWi6x4-mAmrzy?swE%9S$0M%@c8x4 zH5B8|qu6+X6;0sRL-C(Bu&_}47un(|pR}=Xhx#;#(T;TjLnumFDTDhA5iNP?ChwTf zy;O|vMZ*zMenqvkNha%OT_>^6m&I0Gwphv%fn`3!ms{|Fk45bSRl))I9METnlOJWw zAiPWYIP|$GzlSHq`dMWp{vC|JPj3I2FE@h7mv!||s3>km>hOVAVc}M|@sN|m1I1S^ z73_03^EWdH4&%3Vgxe@DzK&_rE_8TWB)T37B$>s(1Dky=h|GMx`zkB;)Ma`^6d zMP>?}^PWU$CpqJZQTXQlqGB&Cqmq8oZ?fr3RaXlr*vLqYdEotK^PUdRWlH+T&gdj$ z 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

iBWz?J(XLHI=-uwL-r}@s51B^fUF4 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

  • 2{7?7vq6E=3UPPrC`rS480ZSWMASu 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�DHU^N?P|+jeBe=w|zHf}c0M$IaA)J9KuwwPL&U z_}_+DIs~VK2jtZ+OxPXQkvQzFc1fft0=3rWi^Nis>b%cV$pTzSos|QO;kRjz1eXRW}7M-Y>hp z2z`FQ)4w%c>0d1N9~NH~%_f$lHx2Qece}GA(NX4VTFN|+s~0zk*pG1j-JbP1yyuF3 z+~Zb%cD#hSw#W6)dcoBH+1JCIoYKJAKBc_Ti7DL1up)= z`cG3SyU+}l>M8Be(Z6c#Dkj!b6!TKR!dcEiu_CcgaGI=`@N_x9A=cl?)xMt@h|ip$Hpq4MaQ3ZN%R52EyI}0hd|EHy!R_eOuSE;N1DoZ;e)9G6?r$Vi z7NhkqgxFt!Rr*-7HngvMAhLOw>mhTv>%51q;%tM7l9Q@@75J`BOwX7Su}Fq(U~ajh zDZW=0zJ`1`2J{bpe8IlLj@m?T{p$%&iXqFQPG~~2%2D* zzi%(a;m&bRYbYev>e%W1+*y6ke>K{P_il-I`7m_dOeR|^S6}ree^BYVo6?vjGUnqE zht!cjC_&BCx2@1q82gV=T3=M1E<>K}<)0e#!l!uK@=$2ETmKjA$5pO0OEVcy-&Q2GvE6g#xzb9Z(}O=Uaq_FD`9{5CQo~)Vurl2 z3;t|L30fs)V|IBde)*@c>CPBy%$(X#>)ze3W_J4Q$St06U-UuMGAE>dJw7;{Lo|b( z=K2|}o;Q^FLmhs8Jg>>X9!?`TC(DHWfhE>_j9f9mY7M2{-lnT}o293O1+vT>d8?2@J`*DZo#jR-3mRiJh7AZcs#nm{Z#f-)U;tAd1#kRRv#XIoHkNL z*Q}Us<0q83_7sB)w3dCae`B4-W&9#htA9s)qCU+s=q5A8V4f$dPU)&BI>urEIc46p zH2r5_yRh@qH`oddH&ux~RCT{mU)}i)kE^`1aLY?L$N=xK zjh)oe`|J(3WW|WH^Tl0^wZ$&sB&g>_*V-w^?w5PsRz-H>{e^-L;HU6xmkU^5G`f+# zHN-uYGMSW9Eg1z-6;R<)n9biY-!-K8?g(m$&(Ew^!bI75aXS(pF~t}Bpu?D=uQkN) zUxUwAVGf-7Z}GuP&|?^?s@dvx0~1XD~E ze5_mfCxx1~B0<$|f#%hdlu7{5Y^(=p4F zIPX3)AT?F-yK#}1=nmWc`C-;+h%1i6$ZvP0gFK?|IR)S){eVY;{rGP9j7R02J9s94 zb(fE-Z=>nj7pNwYct3A)k}gMX%w`Lm-&wC>k}7|2i?=zwsv6IGEoeW7yx&Kx zo=?>G<+D>zPq#!YF^ga79F?QK?%n;dx&B-U>gi9i^+>3{3$*@MnlCaP+ z(K?-)I+&W;+j*tAt=Mws8pe_-{-%W#mKv(%Xzbx**>$R1eFd-Vp~8hjb{49<_n@t8jj2(#iTY=x-l}`g3((Vml_o_7br-t0GTB!w+&dz2;1uu(w;uMENSn zBK%^=2e?C4YRf@9{52iVF}%{<;MbP^^f3ABDjoGt`9JjfzDC@rn2a zUFT4*Yyzw7m38L0tI4WS($$wyLMrgIXHy}rb8(%gHVhD9C7ljl#TjVVq5clK*emIH zyS>SCu?OfXlk`e2q$B>;>GiD_*87u8J%XpBGTp5v&Hg64?<>8IP^&y|-LCL*Ew@Jt zy4E14U5%%GuJx3^>JwFm?^cM1USf8PyW8zthl09-d9dqavCekV6Txpmeb{0{dRHfs z+=h?0fbago56cAKLq2zyO)U~z%a0Id*pDET7h$QFEPbk`pJ{kxgNqTb(*l+WmbVxtT%|PNuGl zmBiYc(AIL`ejkdio031f();eLLgIT}sLjRHC*xS^Y1V_!&LZRk|<*f)TDZQ{Ut$y|fyv@;-+2B9&&m z-0_ik%LS{QR7c*4?TfH&f#5COgfDo%kE=;JA*gpC zo~C+DHROzbJpNJ2*$lJOl|1Les!}zTw-gLD%eBs$#@pXN2|w^Lknl7H@?l*B?D!t=HVh8hg<|BO3F+}U1wO*m<>k~e3$Ot4e0 zDLZ|)F;o!Zi&k*dgAhwUD|R4qzdmkKkM1AY|M&QFDsLNl+kA-shLa4os&cKx{~|kc zlU`(AIpg-&*XrWU)@+(8+0)hT^R(~KGK%A`>oC=CsGf^4)!{)VT7O^bAG)o+^1PjN zhc=iDEx;vlySLdIR(yeHE9|!pv0go$PE%Xm9F5)A(&e~Smd(pyc|q1V7u2Bu9+Az8 z%Vrnc*$5u@dAxWFO&%RECv+2c`{Uw&qh0hkG**k|_Ke*4xoT3IL%0}s-_7vIzwwDw z$_jG+W~+bL&n|DEobG&2D&?Gb1*f;XBxk(OnRW%D4x_e|IIE)uza>NFhZipDBg`BYzUdc)EX$=?5rW4Fmc@Fyf8(^1H-A_qRd7t-L z*InL-)YLEeJ-R;jd#r<*o;GGG#=-<%j z${D9iHt?)(L7>mM+N(4S-!N0>cH>Insp!L;VwOmrb#I?pu~u+@Cs}rjEW4bhxYE0< zL<^biPrrcS)Nr-ORlAr>JC?3@C;!nHJ@1M1p8H{^^{&=9S<8IEkD@FiFXT90p@qB* zZ|RnVYRF~R8sof%;?7#Q&s{aPJDt9(o@6q88GeJRCA7Lfcvz=(soM05cd!|jDxhLI z+l5Z>4@`CkZc{q?EnX9z|My#Je`=qTowB&Y74-1-yqY!n`r3HPCRkhnO4g?`_I0tb z6UQuW8lVr?(N4|-a|4j)NN%35tWx-;(Ckjjs0T4F(3z`@-QuT?F&P_67G$URU zk}8Oee1|1vbc$7&%lheb{K+G9OYoA;c}LMdnb&rW8gjc6Z+4nLUz6JEbo5&G(+22s zQ?w+XTW6JNGPU^;yYdWWtC=%O?noXIzjts!hNm5NNx#~yoW&i)#WdgPyjvYeX%}WiM$iH+P9}j2ZKeqb4sUZ6k#YII5>mAP}dtAk;Y}(;@lbQ8p*?my) zbGX%8l_aaZduXPi{QJ43TWMejRwvV3aH4|Mf)YFvB$xHa65HLdrj zcGDNsmH(-lbv$M0w!OhOl$#RX36>509@q4u=X!^;u<6y}^)|ZtW*(zqu|KW<&zvn& zaHTf#>T*|EkeJBdQk8bS8Y{V7_okNke}LvW-98VWbEWm~Emr&BnkOT9-0ucYIXZSZ z)(tCZ8T@Wmr@0+4)AQ}rBdG^3t}*i*4@SAKE!;zY>Mjp5o6=D(1f6m6pIt8{+UC$x>%jjb)Zg%{(VJD1TVvCy*B7ZX z<5ZE(5W;l5y_@B-;ry{p?4>T;v6X@^sd#nNrCkI18g$=MjyoeuJca<;!ScAlp*4hK(w?$RR1one^O zDL`Z3Sz}ZyUDOrOBM4zDDRN-;i`z*o$hUy75p1t-|jS#Jl5=K9p9ev;ykfm z!MRd3t^Nt;`oHX2_2Im{kl>%OK63U;{3j)>`f2#$vM3u5*LF@O zMe3^gjY_oQu2|tRku=2KrZdc_NgXMCWj|m zB{La8R8F#Xm%DB7d?W76vSts&2EYcb)wy!^)T92rqMWhC z)!uM#AIIx({2mQD;&TOc?_(_C09N1cNNb$6CMv`ZD3C1PjdzdI>hfAXv6<9R41W3=SFTqEn0cl!4= zCo|WfO%1?;YjZwi*FQTTn;q4Q`#tDuQfqv2ptHH!`?B^v^`J4oPDfqx8SwvnUVtA| z?J9Wr6j-sM)qh##e9JpH5b3AiSX0^2{Bca+>V=DCGH)Ywdu3%BZ9}D4*M7kLjv9%bc_0UYs`~TbJ@S z|M8@K<;t0yL~qMKe{ncfO-G;y3UnfJ zr(QrQyR4i})jnOXfe=e2h%u-8%I8W;`NHm@+GI#{qt$QMFMWXmaa*i2y=J#vor+wA ze+FBvx9B1@x%>t=0r6vc_~rPk-s960q<&6A?&BK`kGjKSqU2st)}B`?^eFVBJdcCt zhRR`C;q|b>-6hkGu*bji<)Qr$#%$-*E*kX6mQj=&lr1MS1KRec)(zHZ|V#y-VS;oX2!GH9o**sybVokZycVPC-WQu8# z20HH>)qo86)=~ z|Gs+V?_wcO(9NQp4=s3OcGJwBf>$c2I%lAtZFuxVxiCD5rULw5A=yvfj`Ac;hg;sJ zPKBM{iS&$dqF@;$b&u08pK*VCtX@ne|1tU^_u+r=&r#i_y^uku*^GvQcEbo|#Kr#f zIrbsW`47K8+k`*o6_I*1bv1R&cWdURzE7p4GyRP!U1#sKIZywsCP_ZDqw1PbS`EEK z`Bvu3JeBx)zt+h;LqWO8(}gF1td_x^#h|;`MQg2Bd0aI!W%@wuE;F%D@@f``5PxfC$)?uoM+#guT%xBr!13{@Gn86buO)K!&Gz{Zda7|%<&rA$sLWqj z=HD&%9I=-snA|I87Y@_I+2#$baP2a*hY4J%8@WxYxz?k)(UbJh(sUmG{~Oq!Qi}_6 zvxF1fQ(Ws2YE7A7sVJ)nZGH}AXQJeN=NipMvIf)Qb>Nk*c=>*arDQbx>fB6S zd?%;V#GAQRUYhKI*t6<*BW(2!8TChXEi-nR0b2hC4=4<;KWpykE!y+6^bYd-s%$m* zXR}`6bdHsqT{%2O;D+wm;aHLQ9``krzH&u|?Pkq?fs8NFiyOl#&-t498JbBm=Wq9P z!r5~$@we3L>{cx^-7@qT6jj}B(nHAQjeo^~ejk_fX{hX7s34=dJ2Ty%uujjTYj9S5 zD~&Cc#8wB3ftn^V-k^)j#ZIe!Qv39^4^M}G)f;U@ zDSHGS_*svaNoLCu6Due3Lc&zEv5! zd%i3EzZx<~=lGPqd1bzp@PwIVaL+|kC$%{Z4|~S0_~mpcy#T+?e*XH9jkGWgQ&(-v zK(k&%4PT2ZZPn#yquV~0`{-}_bq;scLEMGv~xM)TG~xozvY zRzsO855;JvoESiy=VaM&iSpK~1(Y%}ou@vFb4`;CszkRzIm>CCd(^eO92j$>asBQe zIhhv5^U3?)1^M~f_S=zJk{8|GN4l#?`q2oh)d{maoQ^D}$oSc!tGvHA+|??X>zufs zmwpb+TpgDWaPh&^qr1Jgsp$yiocz^=dVN^O{6XmT<#>3y`#sdVHX?PCYc!`5G*>$| zh=@Wk)eokJrb5-@;&;=V<96~#uvkTG_atWdy-K%R{1&3b)`Fb|$`MEC=W$xp6zHif zt!iU^*BdAAz?f)IBdxsO|*2M4nsSn6EkIAa@@zXhQ z_?;@z47g-aIyRiT`aXLhgeY9+| z)2=@9SQ2e8%v-rLG?x4`Zh0_(J;Cw?bG+-0hF6Kq~6u@#z& znkFq0-^ky5QHHn`&-y04BioYNIa=j72b~P2nTDPJr|8VJ)YH)SwTUX39g@o+r*_nt z{hulAG<>puIQ?iZms2tQ&kFnvZ`(ilcoOE>*E}jOHPd@3+6}_5#*a|a zgzNsGi;Q)cmU~!i9iY*-<~#aC<-I26uc%hJVsA&Q%E(jPQP}qkzngL>5~vzuA?cT7 zi0V|A`X-)=it&wfwjX5q-}RJM=`pO!<(l(HvIeYw_@pg7~X$tcW`}uz7|Kv{o4HbrdocHuT*F(}jW7Zr0kEA<+-l^=`0RD{U z{DowSqL8U1W1(ayMCKF?hRD#Y%*jl~NFhUMBtmE)Lj#dWN~okFB!yIZNs{M$zvurg z>wSCIw?0qj+~>aczV>xpd*9;Ljh<_^y*||b8e#W;tM_A|K9XwwU2!botIpzU@=txb z;B3FQ*(q8~$0!O9_E!0g5Kos{`KNJ`dE&c0(?E4c7k@^|9Yw|Fsj|j%Dvw7!*D#gG z4Jwa?&_pqHM>6=#Qx;5bx4VwxMr!(sm*YN0iGf)Z@r0VFHfPBcmB*>rO-|5R-IP({ zsbnfOpH`N=*)jv+msG`MAb<(t%_bSMtX*Fa!(7HYcBVVbv+hkHudG+1gERRpTryd| zax1-*t*Mo_$r;)C71@Y-8FX`4MD3oArC)=Xj(Nwcu_&!ok&oeuzE%m{1%I{X5^Cv- zZiY)fFn8{Ld2s}vbw?Pkrrr6XcMLsMwj<>M{*5;|VE5V)m+>~#P5k5E-w^Y+(r%vt ze~sir%dS@+6G<9SePVRrKrA?&YDBeOXGa{PVyyRsgGH`o@XdP6?8!tQs{a}&;zznb zcJ_bv&iM&`YcD=>B5YYtHF~YHSR1$eZ)&8!|1}@ZUpS{%<=e~fM2%D1v0+tIkazl} zJ92T-6cyj~bej8|?8o4U0^;l{6DLPwu$Jnw<(%SFT91jzZ$eU$V6QLQKK+l=SOHSH zj2c);M^+Q7m91;5sS%3j>NJnowzLjb?wcJk8@2ZT%Tl%)dCSzs13O?bM%m zjmnD=`MEb5c&@g-;>$91MNE7pb#i0hV1T!5jwPzgeSe4Od_Tp%4rOKsbW_w6tsTZn$><$EI);ytbP9oZ(Ln*r~*dn3Ovk(&fKql zYX{}%Voy~qI4hTRgGfGvEH~;em~NlG%uli#H*_6NE#cSB$5af2BhJR|7q=U7O*g@* zb;fCy5(Ph{b!I1ZpC4?Zl{JuK`|2keE;?_fX?>f!=RbsxM#~xHt^dum@NMGYI1Zc} z?bA`vb6@=2#m?dnFw$l8fnV&h+v%pO@m70ya(CI$2SvMxHaSUkP+Ij^0iV+u%J~F> z`;3!qvYK|jPQ)*8bN%JkeBQ1ae?$;$hkx_p4ckKzyq@~O3v&i_<5hi8t#PwDw260p zP{jGwbG^s~vLtt(7Qs!Ig#R{KtqeqR0VJO7i#dZgFPNGSagCL$w_t4xt6LuTJe56H zEjr*MnDe?g`2XU=sk!%HGq2@WssuHE<{TEJ8GWUmYKhN(S0%VaeE69Dy$@&dyZ6bm znU!LHL?un#&)#3VH+CT}&7t_vL}4+oLh2=_XCQ~(SrekK_8ouA^`id@)m6>)Q7ys0 zuZEewa0>6S6N*sUF7qAB*rjjDW}|tlAGGp!m~q<&s;pyg?va0XVIjX&?`7}c(Epe1 z<4HUWL-ZHrv+G{dt#_xQ!%-CdW5)Bne(M4ZKqj7@y=S(A*nFWVxQx3czq+g`F7pHL z=vighx9rn*#nZQG-+znpEk(bg?p`|*-Qe`R7&{WXRy|clw@FR@~LXX(Lj%hbi`np1S$4p%A8 z)jzVE-{5<@^nN_(^&()HJH3B8ovo65QA$Nz-NfmVs+^czy42qK9)kE5MrtiCFIGjp zW)i?YHTo~2@8$8e5N;#d$wl@48LHw04#bNq~&pr-gx4I?x}jgb)_R#Hf3V+h?w;fx$hHI!X<$~^fn zz1iN(?9D-IJl7&|`Fm>LetWUJ-?|5?so_?KEA0IxVpe_1b=o&RrNX#~Uwp4Ux=gkx z$scxc@T=dPEBA!yAu{!AX0>ePf8H!=?UkFKlY1_M9y;0kdvbNdUHI&e6J=DVMJako zy%FoMElu1$)WB^c$zVASv`Cs?p0ZwDWG>4E^k6(tj}5^8cko*ei41%7wmqjNx}H0! zt$IJJfYpVNzDs9y={}HdpdaZXXsUka(7z#f;0Dm`D%`L^q{$`(U!$;h%Ci?{1`a~7=7G3(Fe3*zo zEAQ0hR=CDF>@326rcb3EKJSLaW@m@$X=hzZ`+6rA%SU$ow{pkT>92EVT=u}eb+%SL z<>`0iuM6D#olm4W5e1muSy+f0)cZF>TUFg=Js|ZzPc_vp$f$g-Q(vr82Nlro*h6l; z0gv4e`_@yX@~-GtQ3lK7Uh)D?;$!OmOI3FV)fk86>0)@Euj#8VL#8#{MO8F7>MV}c zpS4+@UaRIjOhsGoxsKaScZo8UD10Sy{Y@{x%vEU8HO+3Q&l7NcZhbxpUy~o}SyyiT z&3Syn-daK}T$HQL7=PwI)p7ao zrl2;2^fUFPtEklnBR)?2d)>6n$1viD)jb_OS9z=7%=>-Lk9Rlp(A>R1SJ^pNV#_Yg z_4bv49g0}3Gb*1f&$5Ms^bpVOUVKG{8c|f{8R5-J@ts_0f3>IjmccG<(|vY;e`SZ= z@T*GY73lVi+h@w#?{SsgDD~I~IAl6!$4h$qhx=A1I3^}KITgj4sv^Zgieo}AXX(U9 zXL`CmwhmbT7Py~mB)ud!Y+uZAqW^N%8>Qai9?E9?^{UiGVpe@o^h|WpJq!h%paB^B zJ26RBOu4CMCfHqktu@pG+hnjxqC>_nPNz4XR0o@lu10(wD>4hB`NGL7=a#I0MEIgm zO(#$GYpfdoZgmc+i*Y|4boG~1k!Sk_@_D~(FV!Hb_G%T>e!R#xaOq+7^f7PO)SJa( zd*rYvs*h_~3Qe}-skx8Sym#(B0Q=$65Ac-5VYUl{Z|wKx>dn`%#B+VYXZdp;bDm#u zativT|GZ(+3F@OF{)2M1nWuPGqM2`4!TO%E@?WUV&#HuvLc62w_h-eK#mRcf41tW?OZ|5Zf7+|?cF`1uy- zdHq7gV=`3ySAVyf(|o?$t%^e6_dvVrJk{H@*{^iG?oT#JaUsC)zd|&n)hU0f5JzKl zx59tFtMcsZFx%p2g@Neh2v;F?D%3=oQ=V@-5=goPTiE$etCKT}XGSK%= zc0<~%7%M6V1}s7U*w6J;55IZM`KI;3G4o&^IY2+)z5ViOv7|$yUhwh1KFu{#qjur zRD<8jUQON6SybgTpS$eM^j}obGrpaRBHKcd z{p_jH_^}>v22Y;n~tSfVj9LWoYq!VbZhbDgx`rEoZ@>^sbD$P988NYL-H=LBK zxy{Y(8Qhn++x;L7QnON*Ly%c+>?iT~Wh~33^!d9uRBn}R?oS-WESJH;w}q*Wx;t+( zkKAw3wRndgV!cJZTg*t()tnruU#b~2yNgCym)dh_u)&H4>EXHe_g;gEztP^TO?T?1 zUivfo#Z9?;oSECyn%giw_m~^@W8yl`bQ5%Sr@i^JIk`36K2s#f`qQiG@)(`krL*;r zzW!KZq?qu!7*LsWZ?E6^-Mz_EoW1rc=vI2M?@8w8^E#7iX=P5kL$+nm7HS{k6z5I9 zl#J(431U*FJesbx6WR@2@otg^^)elAl%iWSY zG`KVP+dj{i?rlCzA8&Up+|fk6^rVPz9)$djH_R(HPoPXTpbs>~cEKmfq43^NRqDxf zTla+y4@T43jzE2>^b1bR6C4(Uc%SaaMb4IAA}ZE)x7e)ZzwE4jief!!cJsK>7wE{C zV>BlR@vvWbOV}~2999c=1?__Y>EFfrJ^T=T6Q7Fbr$v&aTbLe;+C{aa zR#CC2T+}0aF{-EIZHDJ+AOns|R<);o#?6dYjVuy3A6DJucZQ3k9^+D-=G)Ekc8`iq zZ$>Smw$Z7~=}aQJCwjvTzHP+3JM~+&5Qlp~3msCQsRzgUo#*WLDk{_!+)nG0wM>jF zg-tFSpNT!Wl&5h>G(4IRO^jB!iLHnlF1eiyTFScbj8=0z4fQ*>+2vg^etogYl^~Axd`ZLIV$`2M z@^*J3jT52f;)eg>j~V2b##`A{vhV>;()xD#mu}-e6Fn%q*M%oLTJe=C@F@8RzVB~Z z--uvE@V$G*$^;Xkv(tE#)6|;MnCWX01E~R{AcH|pUp;y185rmnT38z{*N;V&tjA+d z>Ne3kt@du|hPu^u)a7#fgSfEnsTbw-3AypN9;J4g({{5jc+lbana)2d~;qYt*L8l4VVMD4ZCa%YwZQOZ^pn=hpH@7@}rS-sSk( zYvhC|v5vbtuiB~stz)uxy9*vZ%p3Eccs!d%vCB$+D*nFh%Nqxa?Fi{yu` zFy1ok_S!@Xohn&x&5gN{u5NHkFo`dqGS;> z#Jt_^sI+L%3LEeZVkTugMj3M0@QE*rsD(}jQWUJmhF%*5!Y zj_j|WA##WGubjmfIXmNMMBnMot*E1F6z6&mc%?s$<2{atcB+t29{x<1&oA`L=P}XS zpr1(HP$j-x>@F&Aw(`{;R?$4*nFdm;W+l?eSIl|;i8pX#`o>^TForj0tbb0DJr{CE zjn%QY(H`#s`#h|=tqL6sf~hBpR4e?i4|Tr&6Mre!^Fnimr>=L@&4{G7pS4SKVEa2gdxr6^-axs&Ss zC*bHK_GEV)du49!wPM_(iGzur@ai^9&^YmSl^p!0j5*M+O&7x_W0iU(&+@F^ETX)G zqd$S~tS4S(9Z+j2>NQpVe?uvU5?SQ*oF}RbD@})@vuHJ|+H}WWkK-hn4W$(3GQBv_ zh5x1~H|HRjw}R(d=Pg(9k^d2Y%33#udoSVAD3tDj%UBJg1i?z2XPtBjZpnrabjWv> z)hIvE`EaM-de3S%@*5{bq;>%sC;xC-q zpu6cdzLwp*9rvkQy2}CAi@UGTw?3pqydeviLu7#3Tlt$K8x_O)W%N$>e$ zo!sW}jk}1e!vg8#s~Eh~nA_4$?ME2&o^bOt^;tzIe-7SsDi`#4eG~n4H05#97UC3- zL38sd1!uSr#^LYA;Y|lQZ|}e-|6oEEsKVN+hkJOpL)7@yI&6C<@=>%mCU3XaCE%04 z(xt?->^$%nX?DB3?Qd$ti*W|cxj#E||9@ePJBj@x_{EpNOW()3a4}Y)8a=8{H;(K3 zSohb{ej}@??9stG$LXlS!?-fpCh0CrJt1Y|%dF63Q_v3TWS#EWR&rk5%_;RVUq)Ao zQB8bs)<>~8T?h-+L)_mYUe{0$tiz5ihLqY;xmQ|~ws`mw;>PdMfv9?}j&&RZeh9e(0IrpPGU7+?u>L`3JV8R^nUhF_CJ$4_i5hw*QS& zJsfv%KlIzqiC#xb%sMOg1lxmu;IZxy%W$1SbyIa|J+H^>Kt0#TK8S9Me#^X*8JgLb zIg=UBr?w#WbF3p?@m|cxMo4pgDmzW>F7A~dIFsIY1}|2Xz0GSrB=NP~dO>_0uI~5f z&8SmUSN{AmDkpF4kKMv=wMl2tAo*aaH+k27zt`NS{5ZCvsaL$k6z`EwHP#fz);)GE zdK*%`mNR@6M)^_IQ-x#=>~Gazad0ST5xy6`AMOla59^0DgZgUBX7KlEGs*Vp^xiB2 zRL4SI1-bWwC;y4*=CQl3wa?39i8{l|89Y&T8p>?Zt%$uiU3bi>MPO-c_la&3>q+JE~%QjBruIXBm?#G2gOvCr+>vteCLZENlfz`t02&!!7>%(E6{awd1EM?yg+PiNkPhXsK+T=kEr{O zMlZuJ8{OPIP<7l2=lMAGXhpJ2s(`#)KImpGX2aG~gJ-z(CqoRWR4-U4otSU+KEo&e z5{*!!J&YlVqHK&V!OL>F35T219c`Sk|5QV5gV%zOg75sd>W`Ln#O$KgPV3)t*LxU< zSeQ!pX9p_xEx{MT=^$^oDAK9MzE}uHmkF5l8x_89vY1t4XMLf(rIwsP|LY{66~qa+Su7$(s{n z)c601I&C57_o7A7Bq;T1k*pH#@Qez$lG#0Pq=w=fO4EAFsGe#CSK?;+sD3-C4||(3 zl`k~ zke%5%(G->b-eh!CHfkQd6P3u-8aKfzHDT~WiJcU^0-k+_KT*16@MO>%^H?eU6o$4V z@4#AZWbBkZQbGpq6(6A=_C0-f_vvo9p5i<+h=QWw>zJ7NzD$sQ zLuPms%ln-ObR4TY)p@(g?~IOajAlp8X^Y>)M?*OEaSM4do%7N?c%J_Xjs-J(mnT%= zBcYS!CT*O-@4lqAs;b*@y;|f%^g1-z876&L{JKh?*LR7s+-0Mk-1!`%?x(h6>jWE} zx+|RBM`6-oJUcBDPsY#CEoNiEE4tBry3WM>xh{dFa&8{}vwg{asj3v8OYHLxf@z*4 zdxuqTddLX5@>-{6KL^uE`MxUea0}~sFXY}`mbnnS(SdHX978!fbpZ4B5(c2Hyzpl5 z5_iCDGVbFvl~Kw0n9ghIYwNs8eGE`ud|4iP)=>J>5L)C0IqsZysRW;u!%V&&Y~qu? zBwVOo>zV$Kj=umi`5uqs1D@hntleGFGtt6mM|7KrK7_NZFGl~vFe-WNjmJ~J;j!+=6Krzg zP6xlsPpxp8Yw(a=Q}-tyN-X54+!p&GdLX(xx-Y68HBi_6tx{MTTc}I@NMeRK_FJk? zmcJl+P@Myj8S$}SJmDBa`9RWVxyeksRK z$?V&^js1{l`ZF|DFx@59#vKg35@&HR3osquVui{@^}NTQ_<-MHL!Gi`5_RD2drTk6 zq@M`3TFGCzj^5ei*Oyy=$7Im$p9rXyt z`!y?AFg)cc9`qjf;YwEUVpPVSrxQ2JYptF3oucSITxU$4AQ55?H=*r0;G>KA-3jFCSYP-5f2?)X!``*Xmr(xy#N? zJ69@mBr`a=g_3$G{z+m@@>P0zD~N9z|3TrPgIrW0HBBGlRt#;OcxQQJBG$2wlQlSc zBKp+VoT>|MRs0@N;*;cu*pDm3hU>$3^gkR9-wM;=K>nXA)6YSV1(Q?sCEe(RU&oj6 z4PGw+uPmqd424yGN_;_iIGJ)YR#? zqMNw=kS@uOqI<=OPEpV3r)YpWazVTaKk7X^DIcd6nVT~ySP+yBuMVq(`*5y5a$4M> z2rW?oIAYO-OePK5@df1#kGRMwp+; zxPyGDdN`4)So>D-Nf^j65ZCjxjTO;Y*)T=VITBx`lV}5!@)m#7EkO{r2y?<0gNEMY zFYI5L^Z{I7e!SY7X54>3@h%sg&D<8f8|A|souiTrh)s&0PVj`Jet;iSw2`aB!{L)* z-mtq|c)uFsBiZobM8Oln^ z&R!Gz5nK>n8I}r%@QGAcHU5B)*sSwqC7!ruY@RPV45Qw`uMDL@?TS65vw6Cngjs6o zia4f0!O@_2cvAe_5p-02wlHtwB!~S0T@nLnti$cm=c6i7iKrr_U@eW{QMGJGZk57R z(Z0_6WV%c%u{#Ja3HRC^}oQyo01FYf%r_3<}F@U-<<>wC1N54=FbT7`%CPiIy^ zx$s5#^q9yqT0iJV!8yP4ntWO?UDVW@Ir@%gC*Gnq1rSadewh=|c)6%Wv?*E=drQ~N z>_j0t=&e?DLwbO{@ed5!EBv0aQ!iK#8@wG=qh+Y;a#nRV+4C^eSmJs{7|?6+$T$ z)8#mmF+64m=|at%{o8_fWt0M8EF1%ij-*(=U^;2R|4|+BNBJT`^EN& z!`peDYhQ*qhN!ZGMZzQhYLXRFB90{`JF3bc&A> zfu{NU-LTJjVTA$el?VASI&%{KoLHQEl$YZZjKWLm`I8XSTO#6DJh?yXh8uzpI|(Ch z6N5f?RvKZSYl&q2oc?OMIA-xC{E&D6%ey5t3wC_Ma}*1Uh2M#b`GXfR3)f>pf54ip zP@xP}S3DIpj4r}oSN2S2tm>DrTfsz3rtZqOK8F6d6soTm77G6hM){4I_@{w%kYsWI zpVZ_&j*q zL^BgMo&Kas=fXrfzRdS{&*{B2w!yi1BlCI`>e-r&?`@vd<5J(GXXVZo`CZn%4EER@ ztir)xDVEKZr^+Te#2=8|j_@t)$Bqn&Zg=XssOsNWr5sWDElqw+KP?>mk4xZ*;HGd> zI6zDtuVy<$3+tTfmb^}``x|n77IyngUEh?(cs9Bnvv&zkLmPN_it6#jR9{hbvVB@C z{K`M8QepS#tQwb^<%X8B7^BfT0P4i1*&%IY{vEKxHQ3WHVo&MCIUlpw%nqpo`#cf+ zYfaY#b8>a>KV|LysVS<*ew4SdqH6irAr<-f+}|h-We>qHJnzJOghQ)BS$VIlRx~6mO!!*-KYmtiD*xsc<#U=m~ZG9C`cq2oI=J9_P$@Q|7LZ8#v4p^DfqAs7$-td+fEx=287FR;P5LXpT-C#+JOtC6U6! z{SaIf<_~WRJ5jaE1`nC1(#Dkdi;|raQ_TvvR*on{8=nw0b87yImhm+_kUJCSV4|RY zx!YyC^F^~daAmFV0jKUgns(WA^VB7B?rz%ti1>ar;|)%2AMx}O*g)9YnJ;{ShS7kPo&FR`49&r>d;GUCpswCD}`C{wuaN zemD1BA$r+vN+o>>5R7qNe+2f8I@GK;j|hQ^+RrxvK|pM|&I z;=ep&{$me*$xZ3@>W!ae?F*pP{i5oNbiL=@QqY3t^@aGm0ZUq5J^Z_~`wRuO1Q&a4 z^CfyE&Z(wf&|CCj`re>W*g1UM*{>At5l2qwkC;VcXqkK*&rx39Eg0LOVi+sSw3P7{ zL{;FS;WFl23{*|*_jb{6m3$cwj|6|`?y}|hrzTwRHzqf5zx>4Oe3!lTy9TTeLw>9Z$LC%^@?;zQ@>%#bDKq zy^9xY3O)1`4ZGN{AxGY_cyB7n4r;)CqT$^bl0!jB>lzEM=fdwqMeLS(7m_KSsKF_7 zNo-BDH0mw3*ORyVVUE7%otp@8H?Y%BraGz>nnH)Q)Pn!X;MrdCw>WfHyE)~!4AU;& zz-ikJKRhnm&C4Y1lI~QJKWJmOCLS{B<^qgQdzn8THgjt44_^wm1wYy66{rO9)P>1| ze5O?~aVM~FcX*16u@!l-NdLyxd5SV_u4t0#rRRKm5QZPiEVaVf;hJ!LP%k}?cGs47 zd_8vZG%WXN)Ko-GMt5aeXX-_p<%W~AlKJuTlCN3Mhbc2Z`X2Rj8s>}&pOT+`#{vI} zNxLn1S>hIsky5m$zoV0x?wQHH$eyS?rn5R$(7bs1e)g8f&KSWa;c)n+zCZu+eXWJ+ z-g5S9B!AP%Fc%^#C%4p%)@5GH?8!{S;xDJxJWb=9l_-=-tBWV;R67~;SDU_~vRr{F z=qS%kPraFZE%6X#FnfbREY>U9p4nhEZ}V0uPLEv_xmr&BEv8URfngd$FEhg5!Uw_~ z7|N`tv1qz*s%Wx1zwOxgY^%9BnlB1o6MdTbU*>I@ass_N6Kj@u4Er@TwJWtT{eCbh zoDlv2g{%s`#>d@{HF`ueo@6RRXKS%gHP{CCw2q&nx*h+1bTam@h+f1k4i$N^>dFXB zOij4Mc}FRi!K{)iaut&q#rO~d;A)cW2&g<1t_h?PDG4@IP+e91jt52%6 zvsDjjxZ5v$>D#`C^Ie|)j52azaw4s?Rs4C}QxJWbIh?shT{$#bB4fWFn@E?wAorf) z&QAPUh_Y+gD11I#qK?|3*Dim$n!IvVa=g5<-fFJI9rboj>NssR<)~8P#weNg%fvw6 zwIy^qO$4m&O-==u!a&ytPf!%|r#id&qITkLYf&8Q(#>krhbse-cw2N04yqg8bc9U`N3otLOqcfSp)?%ob+JU}tDE=;` z=?`x4iRmFuN%`=0e}<@|Ua+1A)GqH+bLY4j?j3IWEzu08bZ_Q2Yg#yZEh;N}7l<#4 zFHfwd1;o^$$J52aWntl*cdTp0aFmL_O}av=7Mwm;jvW%)9-S90&5W}@muKFUovz>m ztP7itioYexPE3telkN^44=4JSH^XPVOEr#&D(P1}M}K#j4dZkUM7@79$1}|#xr8^m z*fWgaN4ZxF-Q;$F!cNwtuw~ALIX8zr!V}>hYx+OV-C<6B%VeMUSWbh-buBy?J)0Ss zX&4Qnx*eC@X2eD%YV(90Ox9Jo3=Z4oyegZ_$FVlec{4nWh59l%1LN>$;s)RK7&fo9 z9o|JvStYvCPStS=>EDq!57*q-oTx|asFu#zTE9iX-o(exbab<1Sf4 z)orW7t{s(EGknZHHwni5HuhJ18`b+&PL4Oy3xe~p1Y7*h?O_d(YYG3{K5x;&iJ#5$ zb_%x7Pr2(8{hZmBxgR_Emi$_j_c33xH1_`;3`NJ_R4|BkH!}Q7<$31+aS`6-{Krc>PR3pNI2!ckm-Yw;fYxSTFbUz%#7 zE}o3J@1jb$*VlYIvomu6w&84a2Ly9Ac0J9kFdV)<^?Lf3V177DK3b*=d6xiQRGA}sXbQ(0$2MiY#BBD%>`jl-;>Nt#g!prm((`z=)}-DIM%dNO zxxHqDJ98@KR1V!Nm|EcW&pRoI6S$F z^{sqsmBSyyL{9H;d2l1oNGm&h9M-!~;?j6We92DL{jp59%!o{mo%NlQT3KDa3TJXX z4_tYUgA?g_ro8+V&ap4H2S=duR_V*2&^zJKZt-Fm!AnKI^_hy9rQ&ya_$RINxiL@e z&#Ikj>8WN0wG8G3$HQGYr&Vut{O_JYkY1jQLo>aw9o=I`e#1njd|!x zrISl2eix@+PTd*YnbR_7d{~s@G@dg*d?T3cHZE#lsyeUf^Vs|B^xitLkKmLyGsir~ z2e3{b4xE%J#b;9o%%Qpnvv4xJGiOB3O*zkm|Il@d@f<&$>T5>mPB?ZMMs6Vuq(Jm& zW>BUk6{4K|(JHnoo7$6H=CzJdOA9Ugm|C8t8IoNSBmgELI zVr^zsrUV`1WoYLbC}RiL>|d!DMDRPDvFYI>;aKP7ny?*D_ht^2Uf9KsSdLP$C785d zGcz-PX8PidD(a8cjqh)uhkj#ue#oCb%`6y zcqtT*$D&Nd=&EQ-=H<+&%p9w+j6;2$?^;5)WJxOQ@9EXSEjavFpy`Q_Xs6&wU*t|X zagG|ND_45K*dWi*If~gECo@x{^L(Lsv2om^#bCz(>-;#Lw?`QI9-G6p;R>1YU21~c z%XwPXK}+r|h?S1=K;k{4u9SqCxP`iWHs|6u(WWlrym&BZfFGF_R?d0XDJdZGJsp_z zZ+G7AU7E$8v>Ol8l}bhVaZf$`Qr~C@x7Zj{KsG0)QMTKuEU&+V~le#*2l0$m{?s_ez=42*?yXxl)AEJ>B)zPqq%cmWtc3C>WTh|EhlT*J82Z!$l z*U&|pryoh(MJ>#es20D7<9G+=x@lD0b6iL1zga#jZgxl&v9lnZu{Rd(9yzsA&ch=3 zonhVZ!r-i!c!Yl=ov23%-VS-5PZ?PT;cRhEp5{3JM&wH+6K48dh#j7*x@sTZ6Rv|C zH#zN{1GjOT&wj*IfeUmH?ZVsdfeDsI$7P{!vF~dreSJ7;7U}mno?5^$*HR@=B`h3H zv?neI+C!d=^-|mdVYJr&+86g-3sM=0nQQ{lZ;X0U*&g9eyV*G#p85$2o=)eQ7R;rv zm!yv0sIs{~{ivJi$|mpS1)Izb6N^t#)#Udl;GaHd8o~E!-<2}^?S5e*41JNm_d@Uk zyfy(RIhQm1N`A1PxP!W@T6@94Uvl&ekl*|3VtN*KEggRaix*NXb|o+5lB}JchgDoo zT^T8wPn64wq;FHTmUXM(*E&G=tBtPKrTif;%Q^f?U%Xd$p1mKrD(1xYB(~!c*6Y|@ zmR=Kl686qn1gG3jrQg8y^lk7%&e=S5!kVco6W7Hrjm?g?OTI#nzcLYzHHiK>S2t=F zFOeP)E=z5URdx>VNtD0~luBj&7Ve4Sp52}Z! zA-X?$J$_YcDNd;o*ZQ4w{DV-4wb2nwa z%j}89!6pOwp(~4;Gw zq&POmWlqGJt&jfVf*EUy(1Aqdcvo4rdwjimv5#NvB62hfJ`0!TY{)qYhwi3}SH^F) zpg|VG$-f%J(lbqM+krP+#BY_P=x@;T za7plos;v}tW{!N4z1jC|jMYy1@&B^UW~}BMd9jFEu|4lbyZD9Xtp7RTv6jE|MJv%xW~wc>b&^R=QU8|M?GM1h&7tgL@#n42Q^||XJXi+> zF2wa*XnMg$=j{&4$fG(7dU}@`<^&GsHR|KM?&8o{#N$)aFMdLw*%$AQ)oe&3&qvuf zow|){YZj0Ci%$LdCWthGLwn$7Z^F^khI{Hcb93yH{#d*-V(|vN)iT}gL%4VEHzVyT z9;q}ncoZi{Z%=WVj>=m2_i?J6&voSOH~Ap1{-PDuVXFV^gJK(Dn_K84Xn_aJ%cb#6 zs*E+*=A>rli?`)=nqV5^`}`l6}qI<-$aja-6+?GgsdR{eQlqc@7)!fqs!DSl;~lJT7q? zSTVC7^4h8AbHUR9f)8;=1%n0j#An5(C(W3fgzH_+qnnQ_3vec@p|q`%p%U+JXZ zs?YL!zjDm1loRmSXjR)Q^qRZmiDmSWwYu_Wz@}^5alc&sw%+uE;cA!cPI()@F~-eD zo%b?K#o`N7&YryJ$5;~MZKxU-1=saT?yCz-$>afSc1 z@`cu`JErJSd7YuD*6()I~WBG)AdnB2?ORc_XWrcE`v3X+O z!TcFLAd7N)if&A7u=DrIKnV`zkLkJZ@LC^^^UujkZ-<2kY3#5)Y&Ts$DYwHBAQ+i7FmCK^#^vNt$< zOQ)%1zdfi2>8|+C`20Mkz?VyXqBm~04*JoQ*8Se4w|MXtJ#TpGQxW!qM2W=1dQa}x zZ~HS=Z=pD!!zX(P=W#0j1kd4P$y!|c!{z%HxZdOZR7+&hW7hLiUFs{a*Y~N>Grnp; zmHuabCA3FItAdWl`r%$C(G~K!_e9@Qda}1T=}$78&UMk@?k4cCq7#wdQpeST3T-%j{3q@U>sHBEwxAW;0>z8D>C~av+ybNa}yQgdY%^KCyQy9~3Nu7Uhpd5hEB zeR<`;40rHNqE1t_M`fqpwa9@9;(cqn1D9Y_!0l z-RfqkJ5)dmOkjFFw@da-yLvShuZBq681B71H8oj)H|-n!RlnI0mDSiOXRMtpbxC|_ zyqw;%JI%a$00w+mht^2(>SNm5tMW=Z=#}1Q9p>u?c-K^p`%LPa2Q{2$cVFmhJR`%6 zbm!TViN-YdZqA0AOwzS;&-sVG=EL&-1YGg*)L$ynAN9=~f<5-xi?zw(IFu@#PbBXvRQ1?OuNypWw3@T0Dm_Vz>zj)tAw zOE2IU-p6+AGy5ZHR@k}pVBh12eRWu-u0gZw%&%D0ZybjR;^ux|Bz`{$Db%LRcG6Fn z?VqVCi}Z&1C&ZTc8i!<*Z2H`SEuw4d2kU_>R&kbB2=HDPv>#H{VtjSEt&S7X9bNlH3F- z9+|7{t^qixX)r<$C!|(bE-Z+}>P{1Go;G)kBliNQJu>H{5*>4@?0k!eg{kE4|4eO| zG;OoCdaSece8hVs!b`)lVa6WGM~yw8BPo--0TQgO)4CfadX9hpZQ{+H_V{rz=ht|D zeUnUPS}AAk~%r*qc9PNIZulD?5?A1@!c;zORRQ zb^2f%mU@ow?ea~!5425*i-TJ1IW}=oZQ#`#j%oOhwtNJdtR1XK*QOp`nCfp$vv-b-#ec8$JqCE2$5bo{ zb=?8}`NAf))lI#}MfFFzTkshlR-5oLp1+rUmrw2VMKZ|~?lJACzxPggH9NDqQSN-T zsU~2yPzm1aR*Vrk7GLKY+G~fsf<3>9QkBNmUV+KV@=$+sFXg4!XQw!SLg(x0q+Os| z7>!wM1YNgQf8CqRPW!lm^WZjnlYGQAaKis8A8gjYI2)p!;EsZa?Td zWI808-RZRxe`}vQysVVF{S+^_T+#L(+zqG-oasv_AXCzUsUIl zyUm(z!nH0?DKA%RAC=SSzYs!YC+;gg%1?ado8*I@P}kk5Pm&GQPc;&&@O!&_kvsfO z4?fxLCNXRYI$n4M<0LoD5)zw5B?@RuFl zLk!B^w(~Itqc`{aB9;0?JxOmvDy!_WcW7pL@bQUo7;RuDMr12D)=FsQHTA|cb?Il^ zhPUc&c$}7cI(E1GT2GgTDvjg$PjB-tRJ~ko%jfI9#o>0+jK%{xo93DJxXH||HKu>B z^BdjZo^Ei$M%wgpacrr#nU0T|WlHL{^!46mC8TkL+is5eYgu(9`)wYD6`Jtb_Eu32 zH%+3Nj)aH3&tEE*-Sn01iLUUI4!9r%+7R15}X(WrqkZrmgck8$RPEWwn#0glw zwl1qjtVbs&=XJA~YsO!cA$G?nx>Ii`+l4SdY|b2!Fhj zm%T}Co_Kt%ee#I9^h>9Ak9y@dzQI35_R2bfipdH4{YJ{kn~zQ3^Tzo7&b2#_WOZsqTs*OiO9G}Y%FN#EYgJ<2U@dO5Bh$^9P zqCA9ujjuCO1gNJreZm~NOU$JypmHi>E>}NF;Nx7Kv#rVbqS0y5;7+s52FlvEQu10j zeRqrR14WW`VrmwFwG&q_P)+SI-LN@la zog^ww#5EM^1QzhIfwl>yB(=VCC8PrnQUdH49DR;>py&qHT*w^{GW|}tt zuHE)RB1zFJW2dZy(m z<}i5{v-Bbj{}p}3J9t|Ms(2ppYrk+IELUT{Pr-ja*+87Xk%Ck}wKLB?dx^L5dKkcc z^J>y#c%dzco^-dyaM@gSMkjq6gP`;yrcCS-Pj+I*S10S>mDA=-?Da-H?Ut#|U$tPJ zn&ksC9X>U+WFPKf9{ysFUl{}G-)BwU^emI~<2BQNQQrKFT6$>fr{9K0ny5C0P&h9Q ze!!dk=hyS39+LU`%D^v+N(V5@_o!IzgO4_vvHB>EYlz&Jz3-!4Y6o6ufOy}4Gvj8y z-A^%zccyokZu`5+*8dk&vk1o9iSK*JFFcNsStC9^rO#;$H`AlorLn1_`il;_ndx>& zcZAIMCl=v6vEY1jq3i1gxzwEFie`EAftYJR%r}da+s&uwA1^GXl%q$LRsj`(SAXWd zyB3d99YZu%4fQk6%b8>^EY%2;Q=Zn(kyL@)XScP)>%1yw+$7FkW=3^m9ap!hKW>9q zi(8L{@cRUq_pF|}@=o&k5LPKWzY0aDJJ-lg-+8oXJB|PE1~~70tVCYSL!s=q^qps> z(-g66&tolW(rireyZYgdnZWa#PTI5PV_pTf@^t!@nVjkcVT2#!w>v-CxmS&Kl2dLpi3~`MmUeRm5ChS=R*qVvswLvkuF-CR{x0*9uV-Vu^C%K{M>%rOt9O zc<-p4dy8LcO*8!#D^e)EQXOE{q!?MtDeSL9K08ZfhI~GQuQI`rf6z^IZe=z9<*L+* zR4LtSM|g3DImLI##W{SQ=izm#nxtDTInNiGuOIdwQEi2FnJ@Qzg)e(eEieeXI}l#G zOYe6bDnw!L(#vjXWunP4Xzd3xHooS!_)|VUDk7FPt8AGSdCWVlg_F9Qah2_8Na{ts z)cCvX^L%^o=c z)gPtt?1FX%*}3Q2FRgH+fAB}Q!hQFJ$RAIh!UbR93^js<=cpNn`tOhJzH6PK;%<67 z1!ZhcR`rdFickmDO4;7nhV=1e_W!T6u>YArTG(9S|5SG^V3q7V^hK)Hg>ri~W+zSC zb-O$yS}HYz#yv!gO2|Ehb?`hdPP+2|3VjDs`5Maj!`>(Wc}VrMu$*TE{g z6CE+uRn3w6C)LxFRD%2Nu`1=|_GxO*ANVylC)@IIJW351ZW`($>-w1J@{pKt8t1&$ zd44ug(f&V|93m>*hO7D|U6Ib8&y6-KxvwuYgRDX73%L64#3N>h-OodI+9{j_6%VxU zeuA48a~2Ne3x3GD-0lQ)&?8&Kvpg8|u)c?}y-hIj=2?jS+Y^0x&iL(i_i$<`e0?5f^=c>akQ%=S1lK3E)6E?fD8*NC)RuOh$6J-V za08E9-}hqm<10;hds=oLiRl?4 zs}nTLv)qTjUZdBlneL*-5ams#gw;?lJfti2M_Hth*s@)Os^MA2sNf!g^IuT4EX3no zpr2)`GtdoESYeJ!QS8~z@pd?Z?96~}l&`CFrT&txC4c-ULQH_1j+(#mSMnY;#}qp2 zXQKZeQRNm$zcOZWgc(IC?$47te>d87-|4j9E<ML&1LZAxB~ zbsLJg&%`goqz_OTKVa8nZ_>LoKHjN*K+VuzM!OC}nx9g$Q8xOA0{spJsakpi1hxf} zzC~SIfE)dUn)D8=Vqg~b`Iw7gc1#O3cK*b?L{+}`I@GM3Y&C3F$|*e3R=jOF>`^_t zyY)P|uK@>C-r4z%`gER?v|n7fS`F10 z^W1^{JPl)AAjjX4^+~n)|A1_n!A4-S5P(CPoy$n!< z@_RnDqgZmFFa4ejy~Dm8)Bna|{Zo2QSe7J2c%j z{XNEae{!e{J;<|sg27%5aonqZxz3jwkI^cnc0NMy*eyzJ(-pl178{rA<*q2+9h6lb zudT{nuEdz|WzV3$v@wx42jvbWhy^_|-~17&F@ zyG-sWk{+D;k6INbpU^8fPNrXDuT{exSMrsvw{w1ob#Ri(IMo%BZu&@lp1Rpud@I%k zFtW~KJ0?djm&ptITfU^4Y{eBG5^+2E(%0Y*`ih%>=4Sg=?oT^UWmZ*}U1fXsUs0;6 zZi*OR=z?@blb>stu~OO$X?JkLryHQt*5=k`HU6eh*)sWlI)3SKyv!6xY7BjOB;Rgn z(IxxmAJ0;f+n|nL>6QEyGkDy62Swzg;r2@{tax1r^Z(h5uj1p>tB<&|eX@@6{*=!O zGFoSjg%~E<{AcU?Gc_^dmCj>wbPyk4w_V^_Vi>bJ@a}GrYMtKPZ3(x7XW5y&A@z}& zF>lG!mr-9zVF1@*0xsg2`VD?5o*WA6zQ_&tipUUon*#PsHxXu^n&yLe4LayOI@Nls zM_O6Y-$j>exxcQ0neP+rdSNu5g~&Fm@?JIF`zO)Awf$SlsqSl{#u~j$i`CHYiVbV< zJ>Tg?+(dV{%CijiO9g_D>D&jP!*ww8JEq^gOMP4k|Jqm%3VJ9_NsWQCKbz>v9a7Sc8SPi9*uU3!rV+VQxL<)`R&W(> zOm^Z@X_#J$;i#|6WUM?}23tK=Hfe97(_m4v2^I5t9+NqqqMZFw)~`LQ_vS|G!PVT) zRpgTTo~5P!_JI0<&DElQi5RWLQi`u5Z3Ig^86E9~+F)X-6u9B*~6=5;Az zYQkQeOS3MBh1-kY%Qny_+mc(>VzvU+OD8<|I{ivfJ4)Z_*)# z!@M0;5h8YClOz2P4jbTeZpUL zDyn7geUH8Qj#`!QEIr(=Hb%ex|F3UDirH6usadRgFxi#**UNdVEoMG!>f7a}DQwh* zRzjwH9tYIH`gTwJfkiH;v$(k$;y+Abub{DSbV$XN*Lh5u2wP0u_?vI^I~3HxyZr1) zw$aWSS*6{&#^2-``i3|E5Zx-~?;TE8fv2v7!B3`NN*C8TS{-*&*~E{Ei4l~qcf{?B ztjlq|QZZ3xOzg859u&{8HPM4=J<+f5{OR3z2-a+6?&{O&o5YxA`e_EiFx3*;xX)eMWvdP?ZK5z3hC2pv>ALm5$1{nT2dTR3WH2!4w zp2soPNxVDXX{v9(tQPOO@Qt{U0ZaFT4Ec@d@N&9pa1$n~7wr5i2TDykS}7b|$>d$S zYG&CnOQ436xs&Wl;XQ`s#+a8Ohouz3o$|n;R9EOD>zbWGhp(&Zdxe_6jT*Pj6f$g{ z30cMC^Q`Hm{LqK2OEvp$13qas-1~mwQn)NTgYs$oXG`a3DMq&=Ec1`7e~dzZBst7? zy3@|<693lM?EneIWRr$gDSK1X0@-?U;sUd7vgf)c)O#AEdz)JJMl(pJx+(Be@osIh zop@J59eYjuptq=Q=jD?lZ-80f@Qq$k4@~haX7c9ta{Q8RPJKQJ%{<*T*UP>$qzEO3Y0Dr(38YS3rXLa+kB+j6-3otaOgw z^9ZJHk6TG!wYuBofxO%>5xukk^!uDDzrMP^8N}KdL;Zxa^thF2s*+u*vTm-f=xZ1g^Qml?(sZV(2(E}fZCdC%aPJPC&!_d*Z%?TDBkskVpdt(oZOk+d-<$e({xg~T){GPfL6n$vxQNn?<<)tZ+x!ps-qY zBuq8b46z4Pk2mmeJ&5NXA|DmCGH1D9OV~ZH#7gjXU0|lw&3>gbr%)dXYC~`HG99-w zht9{%o;lZ#_BiiLv_RFoXY91crk99C7#jFM9IAm{W$=>w#Dz5{S^o$A#D`Rmo7EFFX~A2fuk7Du95Vk>{&L{E>dEzDgMEq->OzZM zfqz^I5oJ_4Tc|2|Fx6j}47ki>z_0yEdF%TR98&}?nx+SO4jeO`va&*MdxJW&4HCN3 zzI(vc*;P3OP^l_Mt~k3^s*_H3Oi5mpWAeax@u$Ux5*)Ula6FvW!#s=Up%b^k^YZLYJu62! zea>OkXJcp}(4-)z<`r2IKRowWuIFUb#z2DP{O49*G zn6HcK$$#UQN3zJ96 zxfRkqUz`syvE^lcfwj&+DIW5g>CYgu`N^N5j}7K=eebL6(k=Ul-ra@1c46n?sHqJ5 z;;Uu0e_`jMoLD;`@ILyZ4%smiWrF)S7q0dzNhja~H&+gj8DHU8Zlg0`B+p(zAss9a zd>>z)xGk9<3)2spT0+yjh2!{EYTzWC&QKFf@}+KcSJY8j(O*tAA|XPUZMqVr6#rtFQTw~g>^e5%l7ajzsl1+?f${E?$^D|gBfB!($0N;*j7o+GAc}&9k3JN=+yXj4xQDe<@ z`Ih>=!q@pa?p|?juGhGR&*~sKOG{{^hvlMhm9zAP4EvaG{1uo+t4V<@}u4G7Yh8k6Dou`n@jJRlQPv9px0>%#Zn{zU(%-I|qmchxAsB z^OfJ^aH)nbxK35-hC43*m(C>vK+ueUO-GtF?=~2$zZs%r)QbY!by1r z2Ua0-?0V=%yxJ_Q+8oXQi^kL8-{b2nr0bxU@4JlJ`?+0G%v7#pR^$v0=nWCSwNB*h zU7=YuBhq!>RBv@xe|mYJ8`bpn_2#_bMxZJjWzX;eEDSDm?rMg4bPU|CwyLS-+#;5= zQ$746uNR3ut24Z}zO!Z~F>UiU>vf#|8h-{_`760tBq>G@`8>EhtY^2L^?N0P$1ojj zQX^&dVsz_$Fx>b4{f)g(Q4Z}P;_O|qZ+UM@;9RDNup!icmB?DeWQNvu+ZHk90JO4= zuk#K*y1K5(b zkoFJG-e}d`<+^yA>-W4$_trg5;dv0)CQ+bxVqaotvR*2~VP0R(xgvbjlUzYR8wr0k zGEF>fWtU=eud(NE)Ll4NA4g|XVy45C7pbSO)O|mUp0P~_e;a(`t==a)tt@H3-p|qe zIE>Mld*+lH@i|z%Bh0l~m-k(|IR^4p@6*L_(8QWNiB~xOe&&*^&HK`u7a*jMer2Cj z4L)#N!PBX&@bQBxp>D8Fqu6RYzMro7HsrjNgr$apOF20r(~>C1A=>); zBlvmlm;Yvn^8-^qVffZ0Zp8$YR0Y*DQDB!ZGhcMusrTqfYce16`Fr9O$hd5Ji5h4m z-(N;d*$qt|<>vX4!)iJn_W@N9HXFkK&2D?pgq2R_MC~)_Wl^lDDIDD~P}yk!|3FKB zr@QiSEi2@8S9_LFx^$*zgx^29Ikih%~XHb zuP6WTT9IIaC;1biT}#WFsWW)6iEd@%uflzs?9^WRHaq%0)8xKeA(YA3)9({gp`3r^ z(4thCjoeA6#FTz2)-fh2-;q+SC7bZPSHnm&h5TNZLx=d%AL%^r!pGJqzSmuZM-u~+ z*QCCs97pM1d{$Y{*Z>vKQ#6QP&`D|YxBlUB*dTN55#^t@?+3`lZ$MpROpI8f8vD)! zuFGZfDNtxlxbFus_5fZY!8MkX?#w?IS4AB#fp(fbyUp3Fpj)t(_t_d<4l7;kNropn z(eW0gx?=~2IXfM6J9nUj&&N&7r!_UC1)kLbG}qjjma_S3F}j049Zg8c!A+EcX3MDy zyCyG6{gRsO>r623Xfq9SB9 z?3t0hv$DRGJu)I>gp}-&O)^s1Q4tEI?2%AJRz_u~rIb~2pYwa(_wVt2^!@KX&iQ=a z@7K7l>vg??U%6zYx9l`2n7h~tZ z_P&J2y#?_fMEiRSaCo9B@i}!b_ zEAqs4V)5ohPN&c4{-T1|L}|L!d|GuLSaA_ib!a{nXtro=kvhsZ>V4U(yZAUg*-G}y4^c3Bqe)?odcnMQ=C{mCQ&iCA>%nbxzg!*pfPWG%f)LN{*svG<^Fp7%gs3=?8 zEq*szk&-xI>aMlf&fM{tn82#`zJ%!|XN8X7fIfC&&$xe2xIJ;_e!gC=33O(fDko`+ z`$)d*+r;|-{Z>Do33cM9bSt~mTRkH0;R}k<8U3M`EG@PzQ*RC7c5;O?&@BCWT8Dfl zw2EgFCx89uJeA{kt{hcqxZ10g?CUTA^Auh5S6I;%(8N7z@#-ey^Exl{O^HsF1J48( z!=ck0{i@<3dx}W;oVIKOF$%#Mp0mt<+97Q*m|le9tDI(5(-0 z12qPFw;MAv>&*+&{Q|D~KJbX=?Glc&0eo^U1e8X3A#@FI}KhL(CZ?cG6$`Y!_ zziE6*si&tqvA?M7_fb4$5KY!o_}qrJ>X{=G!+&xA`~;Ud37WWGENQD+s_7klHZGMJAat9?9UnS88v8Gb!Me&#m9_Tn1S+W3r{61I{xZyXQ$jqrOiAM&KhorRk{M(|4+r&${g{f#JNN% z=k9Yg*M~IpMMB5@p8L%cP~*xKr|E=l`c)J84E52aSI}kLG^6n@1aGfdIZvfH zufxqerdNpfTU3yx^(ybs_}uhiQPG|BLCzmm~j#+e3}l(L61M zmTgqkcjcROuN(A=dA25jeK?o^54f(f@z0RjTuw@U@uZ_uyH^i*kQQu|^OjH6*rIQm zj!jx357+fgGOKFefIAEg1XO=Rp-Wf7A9%7?qN8*wX|;JhTD>>a<}cC-6^JYj|CU}Y zB?2Q=C<{H4dd_TWqN&a}r*~WuD*sAolIXUW9$-&&kcpABSbe7$S(%Re{%BPyt{mYu zeotlZC!5-QiZ_$fi7TkqIl$fF$H0`}f5F|M5mYFDt5NQv9yy?r{h3lvO-fmR1e(({ z{2i}=?HKq)x}J?H`@G4lrh12_JJYQ9WKY1B%Dc%Q!u2mjpE3O&;cA&BzC*vVPtEnQ zEZBsP_zmi~>(Iv^RTYiYvUSDD87jB`=_V&bX*Y!W+ije-Pc@s$acjEj_gg4nUJ?J# zNM|P{&XI119&WWshm{<7%gJDU{jL*Y^&u1VfAS6~70$^ubr2@$W%=t@-{mjeZ8w!c zdpJx=q>Bw*H>h&bwkd7%4ay|{PGm@CQ8OKbYQCdhx*S}Cm%TS)<2r6^wT>lwyhc2) zTR1}As1SXPgHjpFsV#JElf;x&?r}lW9(ojRG0&4dAMF5V zyDGkAaR;Y~Dc#h>xgm(3>UxIYKr1^bGrXBnep6$S_G>ZnyTGe7C|jJ_+>`*#MJ6ba z{`gO~=o!6!Gd)~P=d?z}RY$+l5cZMgpVrh2`Ed6*yC@S;Tkg@>K0v`Zf#&Hw2zoc) z<*-V0DZXR5*@d1e{K{_6DHD$$z%AZz^FpTb12Rx!m30x-Z0}(9&?URP+PXalV4;^| z^|@nqpoTsNT|MT!&4Hlj(@*|{EjfsBxuzC=);B4w&fg518VlpyV3NEdJaiK^&9!J> ziorWnTo3t0>tN24qu=A#CaY40m_5i690`B?*hzU+ztTnq+7EYlo7#OVcdB9-!x`}1 zwHWiy)ED_FnLmKf{s0f%PaoGxRu6=p$LY>-e?AbSyF2yE^gTtru>f^jd6@M&69|u) zA$``(DI%{|aZ>hR`;OrRX6ZKSs!|GvYSChjGEuTg{@dddF3ExeaKrsge|==LO=0YP zU+R@@@U6-e;tilvyTp{G(Vu9l-;)QQr2PK{uXa_093)zomX}|~E>v)j7n({vCC)x7 zgAIs2h*e8dy8bLaj-e;mNM+Y4vd!L~LFRm`L6+*OxyI-PYl|wQIov&jJIqh-@q%4| zC&F``wqwzeu*bq8N)=ve3*EuF@SMjm!&hbG4}&#=FNw2q<+2oJ)-bjhqEkEaV)zH%VdF6^eRNLao!EQio{DP8J)TLL z66{cLmR$OG_=GJBVKv`-a{6_B&o|EOS+&6&%KI*6J5K8-=iwywd#=x_hx_R(56gnX zY1@9MqI;@c;ROZ)wf?jqbI@jkPR zwh1PCFa1`2DD&7zHTr=b`pNI*!EHLhEN0sCMmw0H%E#9_1SvbIi+cbsx5axN55vre zJ=y^&`y$wjF6fTPT8z(E(UN+=xN5e)I&`G!?@7}`CHa14fcssB4lhtcZdWa(Ra|eY zzEX5O8@PP`7yQttJb+{QNHse{dAxC_katF&vajKCuw3vxUEJqt(B__M zBj4sMyn7Xt>rillc#~RkH)<`iRfckhk*9XFZX8ZeKh-8%BQ`~oIB1;4VFe_&;*>M>5qH_?W0-RrTc>gvPZa3Izf%YH3fTYa)Vm^Qt6 zO_VO+v?dc-xzv7apWkda+410f{q-aI{H`>=bLE`Ix{LciD1S)#+~;j)DPN3C@k z(*KteR!qLgB6VmLoV- z_cmMCRhbJ{MlQr%@FI`ExjRyo9t4Cxz_V;FVY7#RNqWhOPA*(lh>VT%1bBCZP$hkQ;Tab zM9Z*uo8116{IhC$zl(JFt7P))u;mIe-xrZp>a3aGY!*>5Lwq@v?F<^*?(q7PX6;5| z-_rJ@eB@-5mWLa7wukljYt27qH)}#WLM^t}d;K@oI6j&Sdjpwb5FK1O?tz=bnZmWx zYnyIro1J3fME9i|eEPI{?*<&TOeiXXyr~jM5q%z1>-F?K0`Yg$z)wQjzr-+=ffpX5 zOgyK9?d-i4)GhTB1#WSoxl32rE>uXhcR>F*NUnM+{y}^tpO7bHiHxxU(F1t5g7jve zKrY9_Ki`sLdU>i-VgCOnJLzN}7eBUR_S^X-??or+g`bVT%D<(8?xGhD!&=d%YQ1py zo=_Y3z;h;h=ldSLWQTWQpD8+ZQ+#UZ-$L)e#r}?*_Fm68pF{PrCF2{R46jBn+gH{B zpL2#|)FP+rZSl0cXIhjC;s~tf%W`IyU{QVFYvBT>DECL_y79&16ZxOkk1v9>4}}%h z)la`?@;e%Q!;H%o{XlL=M_NCy4QkmkPyoU(+Eo0e@DBBJZ76^7_#h6b6XM^ca|W|z z?+lRw;ofd+X}SBjtk6YNkMck-C2KxO9n&9%bXL|KO671WI@%ep&a>%B2+%4$-<#3n zScm6yuo**7(c|87H!AzP%Za0jZ{66c?td7I^1K+Ky5jj_(d!AEZWUZXZN7iea#AITA^h_yIG;XKOb!q>%|)1F1dlbs;*kHhM&FvDJeLTGd39o5tyZu~foOC#dF z;um8zMA5S*<;sMgfx3R7Vm|JUrB$h|)gK>0Zi--(?$SrRZX)D-czgP1d=#q)Az93C zsetHHRb}@rUHx-@OFZ<9Ii1J2k_{J$v&&Ae>U?X_;r0r~`B^+CieA&nx5p)g-S;Lw zAuWn#jMedGFThLt;!dK$-XifL*`SSYQVMc(EZN0PnG&o7@p(fhk|HzJS1s2OMO&-h zGsdSw)}M&Z(BtJYE4*7~>ZfDf;GQ&1_y1c2aeao)V-~EY77fjOSioay%lqSvoQ`g4 zseg3OJ7}akMiz>JWkmB+RGsIc2+yd;O3Di(b-ho?ZmZnbKRAM|(97h|eOL1=$MM-| zz#q3QrXdh*ri(vEEA@o$5dKul7;pMx3uO2dk;^ z=k&a*sDhR{VH`<$#btz|W!Lj&)DJCk+TYiI1f2Y>YW5xJIrgNfzm8PMBVi+zMbhTj z!VNUvqhR3`X&8<|;+~UL{*_l-i-2`Rv9&Oonkun7DDqo}9>LEIfRmmxjd?_MTG6Lu z)A5$&D|V1q@HeL6hlTp_8ZHCr8S2fp@@Affq+Lm_!AE~e<99Liw*9sb!_acbvbVh5 zGAhgGumj`8jxKtK2;OtKuB?%W-ba>AO=K6*2V*;0!T_3L3b*-;Zdm$_CP+F!5K70( zW0989@GPVlD2Atqhr96wxuR~_D=XYBClvQg#*66Vc-AeaATDE)Yg(i%6nv^1S52-j zWp3~z2*9%R>9$Q6hTi75I_QMz$W62T^&FVUH_3)7xfdZ3`$8|LV?4{%3rAsR^_}!e z_}A4s%*A^5N*KNjs-Fw$+um~ZLD6rXPdKR#YYxY2uL}Dz^rY%`gt~M!ZegXKJFmIY zL)h2vAc~)egD-@)QQ*HskM|&--HF0P(eyt$(wV2xHHJ#xlGt?!iveWqJyZx3D zder%p0^?|IZqtGO7|IrUQ4RJWMDa~$y)%^c1>9>roc0}5-@|AFzX{KZ)YV%K(YN0Z zS9u=V^o{;yx$38$`;seMH?+~@@@ul>34MPLxnYQ`kcoQzPWW42HTGBG**fkM(cbRu z;P@;Ns31ghaxBz4Tp@B9qMt)O zdq+GOD=0fHz$A|sfpSFZsjx55moK7BoZ(4ScEZvsmvwXkzo|NMiq{pxt31;`WtYp* z!A@B;epR=e0gv3nd#M;1qyM?7Q(mjP4q}pTsGAGZa+eKSy8J z-`4O%OTyk-!$O{dYK9^&m?*zLR9(kjmalAYcP<}a*~g$~8`JyBNn%hkbPASV&z*Y( z0$9>*si20*7Viq_4M$t(Id0HC?>8&595R{^izka=lOce2K%7fLoENA`?}ti4U% z4iiy}@-lr{zP%uhZBS#+qF=p4LG`A7qc*I$Ofr$kXD|ALqT+G5>erN5xoAD7g& z-7lyowF5_;o?k@1H@=NBvNTV?mg4%w(8GKMmr&UK;Y>WlQ*f#3VGO1;O%s;Qr0&=H z^k!6LV{LD#q>37^i~AerS|@hH9NXiOk`!2Z@xEDtH3IY1KxYz9;EzYUyMu8OhXebt zG}Yr+Q>K{YPD9@(sS2mbaB`=&@nd)RugEiS&ws*SM)IdTm@=Q6-p1H_5nEGeje13pCp4K^ zLni_i{O$LNYC47~Fx}$ZptFargxZJGcI8cp-pNPwl?+od^vG~C@Ey!fPT+RS$Ea z+<(#+bdzHaz)yXq}k(Y z{%4%kMPg!cxvrV%#N#&h4)$*E2{oiTe?l}|tI8fMWA@NRH8F`-7b^7;E~5g6!CTS! z;zytO^!T@W%7&iHW9F}ar|y|Y{ks>=y?}1`H=W?i{?}7ARlvmM?m%tot)oz!fvU^u zu>-N{oKOI0R`!_|h zR;tTm>04cI#((8m+t_cZr5DQ>Ef{$;BRco(X&u z9OKpn^>a(%%4hg0f5oNsBYjYr_yS6a9vI25DGjTc{wR>HdE6z(O`)av3`W;aRrezP z;Z7XW06N1M->bBJ8Xu^YJBuG@srvU)1Qa)Kaol^EM+Q<_>wF&8JB+~_K36o2Ml(xocmyC7~bGvyFKd2l|LmO(qYa~ zQ4Pd4{}9|Cde<|}W}49(N~k2nAm;Cf>GpR~K<|%cjy_}7^knGKP&=&Zy;z|Ex~Lp5t!Gq3 zn`DQNAqJ&F`Ak$!<6)HnTir-BeoYsY7xvLs*3K1eu43OWTc$Dig;lxzMD`nrN4UE8 zgeJ9Dp{|0y=H;X{50;!;c6->39jk-MV1raX73yb^v`v%asYMD<(A*Jt*BR|9_B4=P zzEf>~MJ1J&SHU~sM$oyV(bq(u#_ZJF$0tPfOAn& zoqLw|-jAL{ib;wWxCs6gc?09IN^M%lbNET0Uo_T}1}LAcPm^JLIS=u7)@3D z8zAak)eMtOmu$q6*P{TMAFTjA{t0$cf`mB)WeRr)N*aZQ<^RD3@?-uy5;{s-@4AsQL-Y%XvE_{^yqV$!BS_<0U*X?ueIbHhv6O>!eq z#OXefti}gmG}npSp`X zK^iN5;@Gh3+hnA+kw;AIzwM586hC{)(96AzkXgQw=Vs^f z8CkK9X%tiE;bIho3!pAXaN?cfkHMZ-_=NdT(yTOHD=~w4Z57EJSO}->=UH?RJCB>B zS_E4>suQgRA$T|PnkoCOR4GklkqYqMUKAy@cn_u_=qb>nQ4r%{B19g@U{#;7Ud1$8 zuW}0SRGxnKAQr8PPsk(UHCIF474J<=Qa8GkMxbE0v&#Ia&VIeWER?)1;G@*xFEg}5!aK1mV}tLTtr#O0o=ALQV?*5e z{yq5$ca>{;ziQ#^=E=s>I;5c-xv@Og_4j#Ad)zH%uI488V(4?-ZPKx z^M&Lv3h}MMjwa$Cjbt*n+gNY#0KB@Tletp|dQ=W-BnO?5gPy`y6?U?lVR{eQu<}o$ ziBIch5@E7u`Bb<}{d671?Uoy8OG*J=9YCm<8$^;s=waxUS|_o#rU;i)o&D~G!1UaR9n`pSa$yB!U% z=y%{Z3&_Uf_^SOA{)tZaL8wTCin_Q?{2y3r##r;{I1E5pSkFHEZU>pTyl;`VtL9Pa zgm)n%EA4yFBkq50?xrf_y+6FDp8M4a>z1Z~nFe!uT)($fS25Jd%$kn!Mr`r81g{>$ z%Xvs37iH16p(S+o*)UWCXszn%u?D-R|IxJNi?!ogax>h-T;FAS$BF8a)>Iys5;yEg zDC3tDqr4ml39LkucOmjNeC1kffqf4bZMGfmbiYg~Rb1R2hYO9#qq|hDA3Be>{e4c) zV=R@_%Y0Zqr^0EY2frR!rhoofE}knFx520`F%j~#cY4mVm<2n_hB>?gV>b$}*%h9! zR3>i0-(Wg~=e0UxcX*-)0xx_oDnlSt6OjCNE*^y7OO#ZX--*%gWd5M9rez?={FOJ zf^IC8d!Q884}umz%4-qB?4xu7?;$5%_E3!^FD8 z>BQrz&imz$o<8II(0EP{)hQ)kiXD$V=~;AlHom0c882$qjZ8Nu+%VMJ^SmX4mh?`q zcpnw@z}J(ny6F)W_ym*Ozw%noM7w<}mZnWC3*~7*S6G)y>$G??T+Mo3#9Aw2MQz7g zl6W(b$(_wiy*&=&_jBlM_;Wl)NM(~3I`e$Iz2C9Lx0qqBGfjr{3y$JlR?5;#uBj z266M0Cz{K9%|Tz>C|FYkp9_vKB3*%(6O*#cTdfDVZwAdgslq;F{63I`6CYQZ>+d|1CoF zRa;%N7x!M;p9?hbpDbkz;U zH=l5idr}nAe4O@fzo%KmzS2Q-W({fb*Th<=HFw2V$GdtKlVH2UsqfBFyk*7of2!hL zB-%xiyAv_WpOI?b|DU_46beAQ=5oNPh&^biznkiLREnqVRewL4$5yH5O+4+@yEijs zG@NGWR$^J=aN>TwSymllL!H@0+~+Ggv$O6<1oOER&(<-XPXsSuCT%B{EKm4JnEf&H zg3I)|7ZNiP^YBww6aRzTPoW!X61p5ZhQsItfqV|G`!jvZzdXmDR=YRn3Y5yR;B6ix zkEu-lqXLP!BReo{cf%pC+JRKr{K)apem(oM5b9k}nK3Ykne;6`>tw#v**&AO*i4hs z3SW4CV48cnF0s=cIY^N;-NfJ*_8>ej<~$*4{SxivcQn?4^wZa6#=!m)Z4!N3P7j20 zhq_{fat6kmg89#mnm-aHaKUezj$Rh1s!}|OJslW%-t5;Z>ccc&@TXR^Y4X=dEdn1bK%Ej!=Iz$u)ssS(fLkBW}Oq=n9qM|HSW+PUaW!Q+Bi56Mq`s zUq)xSgc9r+H{trUaiwJR5kBFK#Aj-YclALJ%0o9p8RYcyI+$wy`ks{gQsODw-4MH& zWc98Xy6yC6j|Ug0YZUHCZua*JJc%Nz_*S@&Yr!p{&1SWFn=AZ2*2%d%fXiO#o$N7% z^LX?XpYW0GFwtN``l4$3!4rvX_T>C0Zq6}#_NfVg7NI&~#ogw6=h$%goQ-QA>(-k< z#~zL~u*rL3cs4%$5EW;dQuny$_-nC0Me~54(EjHNQ8}as z%}174E&7C><_Q-CzoTz@#y5C7(bG1--ifyo*As8S*1xn5qz9&Xnk1?uUiK^-LZymP@}vgi;Vdx5VdCY|SS>L( zkaASTd)(Yj0b1kX9Q)^Bee=oYm-P(`5-k!>C%Vc&=MoigS<3=%1Sf?C(k0~fBv+}f zw%KuZPNi5R{yGl4VYI$E)7GZ{F3{HR5@&x;%unnUss2b*)(w{BrSl6UYreg8t)kUp z7gZGN{fh5=Laz84r}{CqYC+8NU}*Yd>3Wr)JjDa*tFTIK8YFuYgrKQu*9T2Ce;Qqa z^Xa2XoaIDjiub4E%Rwo!RGeC8(%?R7!U0q_R}%k1=K5D>|BAmmt76|NdzEscG6g=efjkGNjt@)-Wa8lS zE)`&J+e^0l4uxTh`Q_ndksqDOdtsbIO~s5*rS5>Xrb5$a>xj3|BMipFoj3861ZO!6UFaN&vgVFp`=W;tR+cftB;pMatYx=Lxa?THp(cjrz zhvn|(WG7-G4Z}%z`G?TEqBiq(RPBGPp4y||`BC2eA@P8!|Gd*sgz9me>6=I0%uk@h z89jsf?$rdC`$=lDucQB{kzW?=cdCVI;)WU~zs684@+1pEd@j;0Rfe!U0PngHS&b>X zE^odeT2Ivpo^Yb(M}INNUNqbR?*ElZu}`68r~HnUiC?fXohZRZ;g&Oo{<7(OiJX* z-&9ght7Wo!7X@G}7b5L&v6JBncLeLg%W}vVs}gf$|Gb{WZF`O%59Y(xeHfmo>$!ks z-(eP`jQ4qWd?{_;XVIHxI{MmGx{FU<+Gg`Y_Nl$8PG2n2Ju36w&pBj`Q&~U!l-}zA z4mCwJ_^c>Z!ny2Xx+@uZ))d8hT96EspV@5hD&~#u(r;vj-+kw8P!y>ZYs&v1R6}qNOxX<$Dw^`)M^7gb*^703~jI(5Q%=vOrK|I8no~$=m2gvqy^C>H~5F1Vzqi2o?`?-lCP75bfWCQ{yk^cSTHPMf_* ziRaOc|Du{J$l+$4DV zvS%i5^ilec|Dtov|E?5e{#2EYfC;>2XZ>^$|C+3qRvD*o=J;Erdy@C(U6Hv|f%Xom zDzAxlGvR&*`D*7?<9{2z$8^qIeeeJt9KB#PN$6!m-1=Oqz^Q@i6gBHZJKfNriT5=3 z`^&N0P?G7K1pY7`_JdiLrY1|j&?O9k@(gsUqI#XEc=3Xssb`?5S@j*}EpkIxMo`jq zhiRPVYP{VX*q_mnZg>fN*srj|I{2STRB+FG7S)}MjkHG?3;Tk^V`BDxi{|Kd2JKWwnlRbxEe|I>U z>pahm^te0FIgxhpG z=*}i@^9@<&S56}5@FjcFbwNG(@pRMgq;W1Ucq?g}vhraFnm7}4bUSO+GBr58^miWe z%HS2?RVQVU3%pU*+JTeUFM!zSD1IbQcQK;3UMV zYTm_0-SFSh*WHg-%tHjkn)lM@0*{!=xM7$3*J{%O5Sp{HPoChX>F#Oo;(hkv7Kc*= zJw{8N=BL$K+^GKiBd1=xvu^yPD&T6eu9=KlCQLqt27fMYuj2apxl{3( zcokBkFQ{gtK{+PGqsCISAMBxJ|9gRr_1j$xZO9)dIOqs(l5Mm~EOW zv#PRb{6hROI}4kp6u`iDjmz$_)^w)pO|k#W_he0=m>JrQ;>~u5TYesP`GS*ZT{nl8 z(}=a9Z%CbwOh!r%;C=eV?xz3gp^Lr_zZ?tKex6Eg3l&r-xm+)v2W!(@ZMG+PAao#{ zj2wyn7uyzJm~uR&REAG8jLOhEL!Fd&;%`xAl#Q;3Yn%;Tq(eA@?P{(%YT}lDmF#Y2 zy+LrNPQG9`Km}4Gx=>A$m6GCnnWIqbsvG-`nX=p_9?sKJJrj5)xiv8>kvB0twPET@ zsh_3h*2$*rbN?S7$uXf7_I(e)UQNON7l1RhjgOXp9x#`70`FfsloEVM_WD!*`*Ui` z)Pbp)Qs<`L0T=iv*;FpRJCubR#~$aputt6L+QB-n&inmW=m*0R~Zp0D1>%ATmHGYx>hdY4o9=n9`#n$&?gyFqOXkRJCN3B~OOe_ow2HItP8`qE z$?p=Q-~lV}n_!={Yv)gWr&cPX<2VB9g|)zOUnG5j#&^vsCxk2*>_x>|2p;AXWZ4TxJuKCpGy^ z)%G5?Bu>kIozqlQfe@{7uh8Q#jk6S7RlLnhxUcGd!xeXHt*P{4>B@;mL!I$=H_~_} zxXKR@%fAwJ)cQs6Bs+p1P{nkMRE(}L`FQ}-G7sum1H)dBZu^Y+#Nqs6f20oX9as#p z{8hIxE-{Is{y{4A&gO|u1(#z<%0y1;{(6XUxu79sVF{n`)LS0ii=(fAqd%(mn}`?a ztlv192zr}u(HON4WXJWqp%Sr2FS3#v|E!MX1xnbG^6yjp@(V_*=>5Lo^wt1Fk~8p* zS}Z#@Hz{k?rI{!McU@$vpeJM~ZC-7uUob1a2G{eEzH2kIv4e~;lb_2^6ez>=Z5@;Q zMV061wYDbms{{T>u6L`-=^o4SWcm*}bxZFz0>;(Zxts<|XhwNHz~t&hce|??`C0lz zz;9U0OuoYs3ix5V@GfRF-Zke@Kx8WeMYxA*Y-v0eF9zLuHS!kruYfH=cZ&||y@%5_ zavw-kG*Mht4Kac9&>Nu~l$MtwhunyB^sn#G1?H1fnt}nd%gL zrw&?}7?gO70=*9`Vgq&K9#v&koLOzpvAg=Zik$Z`Zv9<|%&u_Eg!OLx;{pB26YAPQ ziHeDO&U6=_&{;)SCG-e)+l6}1(Xq#zf=zTd2av-FLHlApSd z&n6lr%Hl@ew!`&gV5H|bhO)Y-tovnbR6J)&iIl8%n`e!Wp*A~#h25n(zfZ^Z1T5pc zZ{JzJ^k1PPI`GFL|3r4vnze^<-jniZ%GcP(O|c)N59;8@P^;z*-5o3* zSn6-eCATD|Cx#{dP7Kk*H>TA%7`z18>PxMbjP8%M@*dxW;1AR_b}(!69X|U>T90Rf zqdAGD^(cE2V-pkLob|=1e2}fl5W+|8ZPj^0xKo5BWF4aE%Axx>B$aaS2wpi%N z;5P0=OE5#{J%!_mhtyypxw4DOJahPNzu*Fmdu}l;nvyH!FMMAmsC8Im8tg_MrM165 z*o?BEaB@MSSE3r6aidH*f!@B0*xJrqc}jFgbUKFY1M1RqBK#ZiqvG>eTI#+0A@YPC z)vIlAqi_5D)e@DR$9;)GCVj34HraOkE+%_AefyqRTlnOiDH-WGTf}$s;OQ9cf;nBM zs{fC_3l9{TYB?_EV4|>I?ICk{L(JDa1?z1=!E{W1I-+*EBjuQBq1*c2M%deB;bUrr zSTLKuqK=OBgzOlF>nx#d_$n~f1V)!|C#+N=y4$?wI?o^x|K9Y~Ra*a@xW*f1IPUQT z2EfcK2~O9I2J96aeXCzGM+0XU&;+p;R;P_8+_?cxXz+@ znAdpQRus|ZsWpCr`mZ!)c_nbdeB^BSXf-JBud&(jJSkmMhN+jfsu;@0y7OV#7fv-L z-3?}6H@PyAG4W68`qYn852j{xBZ_h{%507v)!oMB-eCFoRMp1AzW+OX zhk~JIYPP@hxeL9)M-tf*)kS7VNODu)ONzMe;SMwvFM5OTdjmC6s-)yh84F4JOHZ?f zD(?{Xr4Q!&B~g7*qPD+o2Vs3oJw71N%r=xbAKG8c1+0$sPsiGK##g8`y2Q5V1f0ws-KZKH#F8_)jDd>4X)0 z8v@i4N?j;9J@EtvXm6sK8lx2CWVK#>q1yQ^ii}#==B9GvCJ66slcH5suJ1>-!-p%o zi9IlBc_3-?5)Bgl67OKKzH$cgVbboST%947T#ufKbxudgw^Guj#H+;yM?VtHs`>@P zgWDl5OOi(t6%s`gr4wz%)W>C&;`Uga3mq{R`WC&_chqZ}ouG{rxND(5&D_Fw((#Ip z=I!<6{{3F=Pz%4|pTr1U_0hmv+-trJ|A29SkfQL4u0-OnRd7hGEV7Pjy6s7x2 zH|Lwg?!;><#nC$KhmyZ0*9P8$Q#64^rbfQvNA!`Yjy@Qp0TB9b`midrS_8~a?lP_1 zJTQuS@Q}Z(?+ksC*qdxi5%X5?^U#IxkNU_{u<@=`3p?U})9qr>u(C`c3yzutyEYc=L?C#Tio*rM)mo{Uuf z8Fd?-pk^^x(K;J2S8;01$~)}Qa4fQ%-uRZy+Xc)9z0K3NxNLr%^5kpof8#NSHO<4^ zk^J2ITjak_5=RrmpbGDCa;hBKqYIvAT49Wyk}P98Kq{aW|ScPuuHyEgGfO7$_5VG?82<+|(1?N;mnE zJG@IDz5;KT3fJFb9xo9%$vvhymBW00{a*AQSl2{IRXMuv_qkEE^$9vf#oJvC&408)Ks6Dep%-^*5-w9g=0o9o$I3%E0vw& zj2N@3R31-LSPa9IZK8RxH3aVYU9>Yr)o!TH94G2fw1hhph?Lc3%!MM1772#IJTJrI zABHfkqJGb2e(yNuHBV#>B;p8Ms6A)0gFa=XOgv7{I9{Lfb0`)1I~-y;*;^>?TQpVW z&eyx249w+`elgTbRd!YH+e)AHH>B=M%*> z4!=iJb}l#*--6l`6jHG{_Gp|Ai@4qRxwX z2hW-hdrv01FY+2)!~r*Pf9zj)=UN!ug=k+WMjN`*k9dDSf&5p`cCXbX9irEqj2+s_+qW9T^?iT$i5mSBMkNEp zwXw|tS3}ojlG4#V`qf>r`!Q^t#j+1EWWDsv?R6L#!WBa`X%X_lADVfJX_F!A%nMf$ zOF9K>hw}0a`p#tiolw?&vC^Di>dQqFV!>DqxIrxPw6{1DD|1)iJ<;?b99JF8_ZOI@ z^WMSza_M*B)heO{z35D?9{J+|NYLBn*{7*z>QSd}=BQCHIN9vNc6!sP7`_EM_6AgW zmC}`gV#^9DE%cvRp;q%YQG>+Ha=*{V>qg zH~7#TXiJki8Dg)1h+XE4#Ln~6G?Z7qor}30jK#zD$SXu+6q!) zkK=$*SQMEI`)IE_Ii#+rW+E+Dtg3G?3DSE`MbQHnQeQsZDi$7AjjYq*{1*5O>QEPY zzh6GO3zC(pDtSy@|ASe2+zN*8pqlOx6+tLCfiLm_-@S^@neQClX@X&gZutvZjFpjz zCSnTumkXsln=&)y{giGgzogei>z$=Dn95S2(dxQZ;%Rr>-VQpY6MBQ~l*3DDcJGYL z;|AUi`*9U=e;R}ES?r=tIV1e4Dy(^;?|;Yy?2n0>iT_fk`rkcr`ge)Odew|@!6i_r z%2b8LqvIeCsW8sZqn)FlL~=&BwbH{sfI~Tqd-*)kP&HLSRqzp>^nXx`qpHH!M3W`q z5|Q`eU`NEmLa{3_=l@alzZm%f6Vwvw@-fDI8aC>1Vq&7dir`G5rOA;MCg012BH=me z;tJluC|Kstd@WCi1imA|`3*98KNN1%+}!IgRI&@i<5{Yr4kE!R#2DxefTMgwW~7Xv!3ECH~DE1VWfL>FWvPnY$b8IFgtQ-D-*hKj2RmWzqqAc*bEGG^ya{~rgwd^{u1MvuZ< z+R_=nW6HgyNyKj{=Fa18E@CUT*(>rrW!TsFz*9Qpxyg6viN^8J+z{$RNs}8g-VRE$ z)g*Icilq6F%+b+bBXx8(Hz9a0`h;xsa_y1@qGd{ zumx4?M~_p)psiO{$uj^p|t#H*2fw zp2zHV&=*d`u{YBhRtx0{=7SKF;J$WE3^)vret}-$L|}!Q?lrEtG5eO%T)3~&r`=8Y zGR_W%y3wgN)E(yj@Ft|DguW~xf^O4yIogP+TQFZ!$Lp5O&FS$myvcIxKe=(K;N8#xmBB|1?i?$3uKKL^yh z?m%y<`;M5d6s-Q33C612fv9vZA(px`_XS##;YHyPkr94BZkh64EOi5V8{335|&dp{Ag>%p2&aUwv+)A zIhUV;l8(Sp9Zu||IbH7EbvBRFA2#s=U0`45|8L%gi)ci4`W}rrO?343w!xlTg{lR+ znH3larTbM+|A2hH#@Ra+n1ca+D*R`7e`E-}wUOMp!*^H#E&bBn-4?mR#bhFGDU`10 z9;J@B=H}&9QT&@+sGliHNqro?)yK)3;^gM%XrDqo*2(R!gh}6ofxg$j-p7pT5*5rN zRPE)l5czPXPrLhDLZemlh13v(RX~NDySw6-R8tMqK{x3to}h7gRUP<9V3NG|8_n0% z#J`DEa>rtbMsXV{ehMFji9D_jP1Vmfq`$kRnn;1_yl5I~FJH*(oOPD?<@+E?MO9(z z{qoI$HkgCb_`&1;`Y+FIw;JrC3TTl^cnN=vF}6=d!sXOZXE3d^<*lc60;RmSJDs@_ zlupOFC)PFl`~_9W2eCWhl1tUV#bOz#wOXj;KZobc!Z_cCLN%fhx(JK7ni#JFOrfLP z6B8talp#k!+oYawmB~+UxXP@VC%|G~*X} z0+xoQOo2qrjQ{R?e5&ZP$J8%dhmru4C0^6;tZdnlcEm%wKUzE4O$FX_w zrYT!eI;C8QpP_!d#c3sNCZRj^!DSKC?j3u+(zdg&rmb#)V?P%9HJp&?Pe$*B%V$qH zlA(Wwy&1-5cp<|*8P2B^O6iiaF!pJrdw4~tH9hXcK%6=(l&F+Qq*hKXkos)ucc}{! zugiNI@EyJQf2}YRG1>m9PBsOXrw?BedP&uN$}PQ5_qQl(u8{JEV?GZAdqH z)>Ly-`q2&HebE9G8#SP)7vS5~+}CZfyC9Jl-K8SoyF&j23MF5K9!*oReVh8#?ZdZ+ zB-+T9?Xj`h!>1#OSUe?^5;Oa-CY~Cvn$lIi>45+HAac~V_{>Dgn^akE%2faA{_jfm zO!T9+zZrPPhK`xx`*0K0)$C7ETh56uqW2sedsEFgJDdzI367#|JC^JPJNOqGeGAt# zCD9>}&s;?&j(72Jz34Q0yeT4Mhu97}qKB|dU2Hxp5&bJ1HU)Ax*erNoU=RGSuC6x- z5$%fIH%li7&&=1iQfG8g;hi=mwpz3t>(>wBt#LhE37bEPtLFE5owPT94nKA(QO%B@zf8Gh zw-x*o-+u)i*n89nZ+mBVK;oaIz)J8XyMwBsYN#pRxEh`4Al2fXdX}mDCx^)pzjDQ$ zFULh~ys0S0<`5_D$5gIW_y1s?X-wq1aNcl^P{rUdZgWRfY31nh`$B(LanqOpg|Do} zO5oNq>NoGEn;xK2{vEe7O_napEn!jkkPQTRf-O|Zqp?DD;9p&^#xv+sjtA$3hKD=D z3%)fAHJ_8m5mm|v-Qq@=%|eJtO>9#sMn^Z_CTx)Je`pa*b%~zaOp)|$vPQe0{@%!8G&w1ExxappKep{MGtB+5@ zP8WOf$DFq|`sF#%0xE=K;goP=`qs7lH{KHIa>0)qsrCP`<>n{a^>LJh#VKRXMc-5# zm5v8Rt2^bqK4S`J<|OF&=YdhIKB3tq4y&naH0GZ19LQ%!iAxd zX+R8?vpbV(z!`jG7jY>|uxcP@vOCPXlG*li@_Q8%;n`u{n|UYIq%><}_BbcKTy0Y^ zNlKcW?oH;%O@CjE4)g=+kB5@);D7STasR2zY+Vlyq7nO(I{E|MO$Kr1W7%<}TzyS- zaW}-XjNktX#OzfQ`k5%S^CoAiZ}Q6TD+7gjU3^I4eIcBg$LVf5v#8GEd6A=V{HEFb zn0c$;^x4mavINHj7SN3L4Ae|^#pza~J1OiJeWFu;oZi182Kr^_+Ro^v*ereiCu*az zdhFwohM1Fnp&GE3r%dMW7Il`vizE8Ow@kjR2$totAD1WhQcjK)s}6Yrg>eo`VD2?- z?fA*rt3=r~5YjVHT@#1e2A$u#(JCx7r;qAFljtfj-N`eks4i07e2$p+tcAi z@?0UD_+ykJd-)rUqwfy$%!`_Vd;ynyG(1IZ_OW^Ew>W}q5xKg^)um`p3z{?-39IU; zy8atd^R*d?L;A`GcyBJJGfXkFR}#(d*^l-C6jrC)h7$b( zEzha5TWYGen7dz}CO(P191N)&>ia)VHTWx~M zZ%!sYfK%2FZV4vUXb)lzn_(-8#g0S=s2loF#bx55Hp1k8ZoUqy>29aNxQ@XT_Uo%U z%66xdeQ^b!&?f$kgMJA2dCmlB3#zI5dV;#K)4Zw*MJGr83^(VCd$&(WwaYog8F#;0 z?HgU)D$aTVyTr4Yte&qn{tZ4-nrf@J`SJ>Cw7P1vIrQ|+!b31Vb@b+sdxBHN-aoNz z?fB|F$m?St-t#JKpb$6Qr{SA5p#m?$SqhpOx?+=DMHtt9+r@4KCQ~~-0P}A`i@pFh zuqg0-U_8$7QIT_^tX0MB6RlzNDU`OuqtEGU9;d^*92(~KmkoBt*UX2nEpz(1)0j5k zyLJa0|FSCcDJbPR4(z}9uZ0M*fYLS-{o5<>=Jzpfql4e;Vt=wHXNC&5IMvrI_1f>M z`$s+O z0#(JHF;MDBGSmqZ)y>7vYG%^gL8^yFlaPrC;T@rtGyuJw{<)^~UzIt3Hmfv&BS%*i z_F68Wdv!*6MgDA1*2O03cH2)=7u!{bSHUBZKAao=;kUBc^LvmA@OOIaA80~TI7bW( zMZ>Q-{ekE#XRia4dpUGvoAdv8Y=GD`T5r`ayb8kC2LJw~S5ZeD4=b)l;ysMrJE- zhHPcvP_uyd-Mcg``&DiE%`>LhqLzuGX9CW6mE5(<{i(0Fe1eYUFUZWGzOn{%u_t}|{CbpIV$YMAgdtec=thd2gD( z(qcz;U2#E5z1Ka1-jq>g!v**<^$%8~pj=|s_he$Y$oGQXCX3C&KLpjd-;U&8bXa*+ zJjEfTJH@a6iN9%cq2oNi^SX>X#E&n<-i$Ku@#I8R@QB$6$_4^jK88jKRIQT#3e=5#A8%(9SEc_OxuO-g^d79u?s4saPy0;&5gPP#> zCizwrr`o?nr`I?%C|K9iFBcdf^AvY_a`MWnz-gvm@Q?|wquAb6k=Zc%y)sU3sKhz% zA_^I8N#|ENoIjLm1LQiVH)Eh!au`%(p!xZt!CE?na`^J$k-KE+rgBGJHS-qt{}Wkj z2&Qk28T=RNCgzz_?hzR6+aFFecYk-_YKPN=ndPQ4>|;;u#K=06i@*Brt7+PPau4&y zszeK$gAw~E6@RCvI;>)Oi-XkTDvlO7j+NXLrt5CUM6SS8+PXJKocyIa+?jIEcDZ*P zfAW_6tZaIh`wGLz|CVDQJ>^Pw97%87#IKNzfw1*8vi@%Mc7t#O z^J&-2d3*+)Uyf&+g=47e7gQBZK86XsKn3->s1Il!<-9NwN2j$Rttk7m=&KyZaJMa<4jMyouxykl_<{PrL>d zJE3BIO615Xhv$RoObLzE>vYAi^^4vu?tP{1SnUkWmj%X{ta~W(lDmIY)m0X%)eRDu zPq$G6!}gq5y1_Q9!Xp0yHP;$-<4|vYj@VHg$9Tf?>_<~rDZJa1LjK^RHX@Ai33J81 zmt?UQWWL-oNBwY)$ZfsWEmhxe+)O2Emm0X0A!_b0T=^H9YdU%QA9Hwn!NkdOGilvL zz7v7_?TfEQ`@D_=;VO4!tH^Ok&vFvK);N0BPO6D&?jE7aYQ6^a-?voi+Y^%$cgZ_( z>b?i<0+^%XE~n<3VWZN5=oa2RMKI*^d4%tW^Hzw|2^Th_F_-fC32KiD$u;=d=ViX1 zxYP_awHv}MWr~_Afv9Ds4>=dBNG)7Lzi~p=o2S=m7V2kyDvTj)sap7jV(1BKA6rcV zGild`QroOo^X{NC7^>f!>gIiG@@1sTp%R_QOQL31ezeVK85`mDI`h|SZ07hUn$QZi zs5}%o%!~FtekRM{LP;^dX{-(pk2Pwpau9~)p-d)3&O$V&K*YO1^3M9VSJ?j*hX8zK z68#v*)2s00g|O)1>V^P)LTS!=>#?RYzlqox&GCJi=%!!Us$x4R@3f=+`#YEwsxgI9 z=!xi;)J8w(IbNlk@8IU#g*OQ|6kh$?il*RiJEA)xkf<@$_Eula7t#yx1 zj*fb7w;Ox zABp4VVTsk#tEIJYsa_ObtD%|iak$8x#;uy~`psM4fswt+$)`7Ow-i|>A0Ds~_kuSl zHq#v0Hqk;)<^*(~>Ff)MJ@BZ)T&m`&l-~=y4Tr5x$2^=?@dA8gF&^NIQ`;I2e9j#0 z8jA3GcC7!zF?cB_`&k&gL$-)Dm3zuj#T+wTR>j?H=FEPf%P1K?l0K<0mb=GGG^;yd znIqwON96e=1p7NReg!(o#v<1Df%9%$;qct>1N5R(ARHCk)WR^uv(c5Z?WD-^@OKoi zGj;e2VJkI~t0+kuEre*6=@9$6IqUZ&3m-NdS?)beb06bDipC?v*2T$KxQuJ54mS6lpiB&1;z) z`bd@;qeHx4hHI1=uGOODsAw6?(H-#_`kP~RZboAxsQTJ_>k*2cJA&B*{nS|ZxO02G zwV%Yh@|>IMbGgdM{*8&nof~cbO@tt3$5k5cY_MOAkX~C2e`6I z_b&IfL3kkq{Xx+tuPnEOBTa78#yOq23TC%{3RjdRx0|GY4DZ!OjqxPC@_OB69yoHs z1VSs*N-yEB|5G8ncs>saZ&3T@IVcu%1z56OW74pEKr{P_* z%0@j+4-CdTy{$If=l{FXvSifXod`ciPdATh{vS`RC}id?d1iT{wh6k!`nwf6v@kW< z4c=J`qf4T5)d{`QRXj%`St3ir^Jiql?=o8Q=eB_qPF*zi2}2Y3So)27O>~)m%vZK3mCV2YSRMInQ(!g zaG5cpRfX6+vAq&%4z9ykt*0-4CGwv9R@<+xtvc)o zN3I%sSXVX3-n0qfXJMfo@tqlXi#NcX{FoR8(~9wh+ss?IHTSkh^y5qQG=(4%%W$Q` z`HE!H*X1$^bQkqaMo99zdg{u_88n<}apF;bT@n^MnODr~x`<}{H|jVs7u~zpJoVP_ ztfwQH!+9wH@1=pN78qhiV4-O9S3+;fE&7+h43V}^_?bwW?&CZ}aX375wEP@YoxJSt zOGZ|kIvGGaQxxM|+ze4xDxeqOP_Od5y&hT!OFQhgY>K8Ki6tS}W5md!dZJExqHf%- zQ-f3B894%VlEdkU&n1d@^M!OL5DH!**=+UM4pG~U?;EI-$xgFW86HrM;v`QbFU3kL zj;ck|EAm*fGrxw*i49yg&jm^a--D&K4?iEd1Wmc5E}gD2=xVC2H6*MS&gs0#)mysR z{py(K+}F6bRzf}ef=Km`NI8f0a#18Alg<+<*HRj+!Se4@)%K765oxU(egzg)mtWmo zfj9MnE!D%P>~LBO2fGp+!HqQ}!-VvY`{cOJVth6z+8$U=su`7<{`KmiO;Ec+P~aZ? z(MIWqKBL#UOeOI)&DIaL{tbkq^@YL=^4u4TaxG#zv80>K-S)-u9@PtX#PB~0f6n2~ zKH*#3V_V;hU=7cHw3_y7dYjZ}16ks3o$O_^c^#rBaqJDo%p_JNqtl;-#+BGe+nBJ8;L}Us0lxmU7O$!(wxqpmYqN58MRg? zd?h%9mrYgg{qg8*_qCOJ=2bOW7AWjw-r$4ya-J1shuK(|&xB5IINBQMciKLa-ofhh z0TaTRBj31hH=-@^qtnFcosg97Vnq)~%wQf#_lN887B2(|2+|nLGVlBd=Ic95Ri4m| z(Eo9CCr~$*T^NARJDl@n3YmwJNKrB*^OOduP>589LMTI&$dE`XC6qE23BNhBWJt4+ z3<*ifR0t_E`Tpxz-)jA<^>@yB-{;xS-uJ%uz4y~ADjZM5Vs;f5*JES$$wEGMdXMVH zd{HJ;3mX0qqHLpXP#-Q@&(AlY^*RI@6b(l?Zxzgm>H+<~X6LVmhS$M|XK*VGp`th{ zPIbIh7wK6Q;v4z9cF;j5Q)5ce2!*oP`)Sp3z@q^aoR6RQFL`weqm*n;y}>vaK*cjNEJ_^yrAMV)zz-!i|! zTjvjkn7=UBq?{u@J(4b=hPb-d^q*~%MIGskUsbD{5w5?y>tpG;uEu^3f~KoE=e@&k z!=B;U@RsXYQnXN)EA8-v4+I1;tDoDyOo3t9sKvm)b%WyS;ht zaIIM+<~z9ycN{DI6MNA$^#i}NFkU1+yl;+HFPf+!>hi}UX1zj)KYQ12EO`Ya)!@et?#D-Of!U++6sk@q7WU5d$~?`Vo8d)nc-#{`x8+e zkzooQz_+-&ovAQm0u=v?+bc_(F|f}pv2D~uu?%RgvpQK^9VzeagY!Bc7NW@e9NU)5 zDK9}0&?Vyw%<~6Sg$<$6vpC1ODyfTQi@(q^?YvYBqUoQ=9TW{(U|c6hOT2f=Z}p}T zFRRAcGS!WmY>>*~7qDD&SnOT@<)1kEdtvF?Jk)d(%ublNF(N$RR+;T_acHEf+^MAA zhA&f1MD=ej$EMOalY2zQ#ipTu=E>Xod}U|tsYJ!#dAitb7_VX2>W9SiD(YivaGkfo zbDJ@)OUxtfbXmz&h7M^Cwxd1HBXrs)WWJB+5fk)p|r_!0y=F{rB3 z?OGk6W$5?bhkswAqdiZ3^O99B=v3v#$)Dw)o}itq!rHsQLZ4%Pr&Gh1fC)Z;e?Mby zk2`I3%<}FmU&o!Y^~F(tD?cf@$-b5H=hv6X9hT9)UYTfMKFvIx z@pna^$~pgu|AeHbvaz>uq&eu;`qDwHgEQ*r2ALaHq#V5-3d_JYT!I6?qPc4qycR6L z4?o7YH%T@U3yNT=hC%-sseNvyctWf^L3K6&H}@K5zL2`?la~so)fAZ*DLz-JP4sZ< zQ8v})-Dlv&`j2QP=ixVdnhJWz zp5@Wky3ySh$8n=^swakJZ#)~8DQMo)BE0rkGlE_)U+)4X!%V#Vs}x%kf_dQr4AFXM zVzh|Z13S0@o;ahr*#P=(!b?mvLHS-PkftgU^X&N`>}-Da)`PvRqLsT}O{WVK@Q6?D zhNkY9H=Kd$@+9-bO`;{{pS>vWS$KJ_&jm`qo9z7G^p4HUaGM4Vl#8du_lt-h(sDFc z56qUDLMeEN*WGGDVNTYb-zpWOoBmUWZx6jolVO>XY8uB?bDvUsT8k?|y4^wnM!j}_B;QLV2^{vqeSMhD-(?pwXD&uzw;|-`PwMlLf5A_cVDDNo-Bx(5B2d^N8qze;9vmAE|=B!d#6X>X&TiRQd>cUkH!&RSLzXWmqat$-)!MWgsAjcq0Bo7;nH z5-oX%nUF{|* zWj=PQrKtKw=JLcYb+ljQ+H0fv@pQ<$znD_Oo;?Wt&rj}ik3(HGbQUO2yb(59gg`E%jhBzgaiKto-woZdaMm{~YgrpG>)v5(LeExo;E)$^G$Lho%to4WX*Ug<@I7+GdaWIxS{9u4j)qe$VtV~ z!X%J_l%4%(+{Z+nSlsdC1iF=Zm%Ut4SNTI~L2pBl|G|M}bSm_qFQ1|klb70mPv)M) zm0`DVh`%S?JCRMk(loV&f4<6$f}N>h_=R^cOLxim;_wYskG}ZOPfTi9_}_{Du7lkt zCBD_g+$Q)d90B*sHDwQHliBq3w@P(PzVG}N)bBRNJhf9|Xg3xgBp$@D3uQcctz17i>JDt`v!;Gj zHv#1uy7V=C;|~-&*QTmDZ4=Znu7TWtj0U<1AXivMr&2xGzal)fRG-yy)w}UH!5>xc zKH#HTV3u|y$EEJlWmTIZcBBks2wncGcbom$Q9&T2DID-eDZgN+3daW%c z@BfNjS(PltPD?szx#S()@z||Q9eJ3SOV2T_LGkp49JwxzVxVmEgxXuSaF*HsU7WMW zlh3PNmt^a|ics6|iGl8r-c&n-!v>Jh{ca3C?~@^J=XTY@{aCT$!7IVcFo^fW7o7FF zxU4O@BkoU4by7Zp2v(bo_zD)fw4Q?3S=<$wd$7R2Q$vq%S{h=-+UhfX-AQlA$Bn~e zPos!^$~XKc(v^h2hnaTLU1V)hAlH|C_FYlE zJlnmSwXcY>n&!}tf3B2R$2*p=Yh|&DKVH7!dx-kOIdSy~bAYPxtcR`LS;*ik*y>h2 zrl+ZiKM5}dcj`{cBkSnnoQ|i)KLw9Od|dy_Cv}L3xQkw=hc%nx=^vG|bx<|#6@N?T z*wM`E?5a2S^HeL;Ot^unQjRg?TxCGO(5?bP;f{5OuFip(pC09y`?X!cy545cHmWhhor7o zDOLg1gYW_Do{1GZ=#I?r*daJ$s#a=t`vG0i!wQz$Yz55-0Kex%Sr`%dL9gf{AU)@Msnwy8872F+8p@5eY z(q?{*)%yTHlnGHiL)_&;pv*1^S)DGc42mN2cP<* z+@m(;dks8W9tyuTS=wB?CQ(S=cvnz@%3`ur8!NW{4NDeE++&*0N2*Tk#q}H1#;f2n zZ@_W%Rd21u+Z@M6_Kxzxv0up^j`-!Wm#wymZy3XJmSH&NK{N}aSL4ADcz^uRH*`)j zt^1?&RV`t`=CX&`Fv&o=*q5P#BwVoBnaS_WePqf-clElFI;vT!bJi0twv*Q41-PmM zF1Np0cfqJFG?~6Jz7mDoO4X-D?u%NLc-M)Wj#t}j<+CMUm1Ta5-B}G8?SO{f)5TXG ze}8xQYOvB>ara}i%HY5Y%az;6KsM;8udI*oDKX+V6H}&P;ZLghEmP%Ok{l{quR}%t zmP+S|pcP&!eRo!F+4j})n1IK-DX8MJ|Hv7O#@}Nz`-w2+^)Egvdw3P6c@q}-MVRJ1 zg}?%s>V6pXMJ)C@J$!9M#`N9gZ&Jn1gQeEO!40hY2>ODmIGV?FK6If={oPG9(}T18 z!wD#OAgf!7nW`vr`URqzul|t7z71C|9F1EW4j0{>T0mR11k3QVd^Jg#x8IG=M=7fs znO@!>hrKUzy*oDVHp{qXB#==iN!-)B`O8bp=Dye2YKqid^-;xpG(yxojbJAF;iX#K{?8t8F8n$q-_0VcfkE&=HU?N;$}6^4bIC~ zi5>ctreZn1h$hBWowf-)%pY+4o$}qP^qgg7T_r{KVfr4gR`2?n&EKPIZ-A$Nn4We5 zEpw<_=`Nn?L6%k>g1(6=>u*p0fY@9f_kWry>qC=)E{$k~tyxCsPeo zShK3mpNMt~R`;(`5+VqV#Grw1Fx<9rlB%dPRkjHLTX_$(NETYMdJ~`lMPVchDytrVqR$I%Y!T zY6$2*TC_uY%r0H}C^6lyT`uYBKLUCzL`fk^MGUw~{s2-%d zI^WQ7FdZwlFWCeBeV2N3BrNw(YBwHr8%4vD(J0BsVuBD^5 z5WU-S)sEZLS3hyuE{biH_}5~3O}47ZPY$-bSLqcoZLN4%7spfp{?7$VeH<-Sot+-{ z#X#R^%@*KET0yddk{{s%*G4@}x%d(HUY7!>2_&3_e=RDaJ`-G_C#{*Yvd?6_DLCuS z-gyx2|K3z|`OU}22b|ROt;zY-cB`=W_w~9wPcJ?MhuoW9eJ?ih8H(u^eAJCRL@kx7 zLOg6+6_ZLjiW|$DmO&%sy!m3*a+GSinKu|mclKfMSa>}ADq3h7s$EXDknN514cSxM zz58`;Z0;ell!GJFH}Z~G?Rf)F&@oY8t@KB|S;xYUqdBS;gX5w4T&_y3$KSWXOQml$ zX#>I5yj*qo)Sg`f{qHnWWCLqmE`O*IRB)TsWcAJ8qRjX}^1jql>|}ZJRT%u~RF>o- zO2lm{pNB-2;#RA^$hMP?<-1EyP;oR4ItLBpPMB8g`2n7$Ig4v4vfY?^LB{o`K8bTy zeS?a8HM`ctl%msgLwRK$)3D#Uuv#@#_&zetzAM$nQqdueM{=cFib-?n7*~qOH;3JW z+VZa35~HB70~BX}@Nsu1eoA~PUo0jrWyqHAOuj4*e=grzN&ohm%%hx}JM&U96bqkF zX}U7elvmzqCeU?movY9KVR{|N8)e%?@ztAf_to@%cH=AO@j8bv40UwSK4m6kc3RC- zFvtSddW$OCrOZQ#j_UDsDV5Jh|G6PzwCd_6^Y{;AI}RqV_2zr%2nU<-SyFW}Cr&V- zM1j3Lqlp7}+|e{!Kg8duN!2tLXAQ+yFDz_F?{PqExjJqn=h_vFbKIP-jg-X8@)U1x=1%- zfM;U_FY5grANJ-WTB@v8k#W|LCtfXUI)fE$MD13WLOs-<(c!X}xJ%YGnHJ+$=X`l0 zyPot%!lsz_N3p$yVbAVx_b=A$ThVb#ax4AFqjIKY&dL?e`Cxu|pgzpTsx>)bvVGJy zKZJXuEb$#O%Nvu|>Ixg=oV0AX@@dD#1V|p9k4Wv zos&v*Hq|`)?-10}yyFy}I(w>2@}KDXXdQgrp8h05ZS4*0Mk7qecC+Db#Q^^;9-F!y z4@+LMUf0TS|4g=pX8wg8dquBBZ?U*{WoxTx7fP8Ad+1V0N`wJo+FV^RyXA|cqr4Q7 z578Li;;h~W%bZYcn-C9(A5!N!?hc9=a(-X7yASeCPc^SWnS8xo$SvkzFT`r?^cOm# zry#*&B4ZJicy(Sq_ZP$a;m4b49Gkc??GXx+^c2;h>}41fbp>7gaP{Pua5FJYYHO9r zn!H@uJCBais)p3ua6C;bL}2C3jb_c*nVCVBI^B1&=7_-^3e#_3M@ zOjpEidhx^9ks{&4H2uBs*JJpoS8yvGWx9{4QvF8P`8* z^wYcm=vn zQTt;zo(t+h6D1OLDfBw1Q<*)5;rcRB#9dtP#GB$lW>|Gd-hthC1@^mNo@IIvUTFo@ zj-C}2x>V3F@u=VJNCPkrOVmR=F9LTtbwX{0RSxs) zkMoabO=+0noX*t+x7n_}6!bB>=@uQ3r&PL%ib+3UNB(9tD>3&KlcVB^rW)4?H{!2e z#ftp~g&Z+EZBAkcja!Cj-Vgfgfms<2YhQ;U_>wCBZ1Q?@@cUvSx8Ol@gav|+DA3E% z^FNJ^{E$YlpJ~Rws1n^xmzkdXK`KAQJ_({-Y>wY5I{a76@l2!N z7VeO_TK8j~pp**EAlSEnh}@4F`#%%lKTlRr>xoj+WcU5d4a=ot_-$(H^bFytu*hbN z{~(OkV))UWOHh9gZw}w{s$bIBH58Se(&hcTJaM{sJc`AX44dj8Y$cjj#tm&SUE>`! zgEhJ!y7BFm{Bkv1%rsfrj8r?U_gGBgQ*ym@w)74y^gtc*w^5Z2q&@jip16@>$o(h! z+k5JsJP!dLa@t-LlhZd-bkXy=R3`8;n=40ebe(#~EFLl4<=!4ckdYY7zrIZ86_~9s zlD=j~vN50hA+1$s>e7E9@J!uj@6eQ<)5GvD8##f|Sxos+kYdPvwWgbNzzy`F63dK_ zv$k}1_h3q^BQRVY-m#|st51D?AO*s0Dn)(JUD1Z@fkZMc>uzZGg_R z^n|17{O#tb7S?`d@D0wilFp-+W`$*uZ%h-*-?eLlbuWyJbF2RTg#o^X+GV2Nh2Lcw zr}(UsdbG#OHOd6n>%Hib`R%2mR&J~w#8Gn0vq9CUX}nu*U4U2rS+1}O_AL)Le~b?r zYR+EOXl%GpJX@&mYa0%AC|0081d}(IM_pEpPUs7D$?SN63Y2-TxH~b;Xw-o_kC-Mh z(wa4OgUCOy%QT&i>!99E?pfL%e9fy@FuipIyk5lFJjG^ym2Z@kpI1z_qhvjZ<9vu; z-)5%IbAI(IS?)fcKbcw8jXb@gzW$1;@igO=nyaLKVk$%db&@j}#3#g)zPx(z;0E5| zeYrwQ5osw-VJ3~zmFAGNl+~||i__^8vgWt*sTcUUTQJtQJ0m~piT~Qv*0J7tH;=qR zW*V@ZV?1N}uB;xqefH~j_{E(7dHLl^KK;EcWqq8*Jy)A>{SOBdW%X}SSEcVPc?XKQ z9b^7wFk2+cP91THf4IQ6l!BG7O8v>h9#c)-88yTHjf1=D@k-xN6CS^`$5g*x%<~F@ zH>j)b#lCGZ?ezw4`y35vANlw!k$j|h)9#Wa%Bp(H;|dT&bzDYq=%czFTcoCW_R@zmn6+hhzxnM?z4J0V zeI=gvj#MMvq1{tkF#$8IWXHI1)I4aeA8L7eT1_IES%Qx7X?lmZ)mL-EAC*M0R&FDI zA^t3xRd4Td9(^7T_<)>xwfRqNoXu9|cwg|;hjb}CpvJJ->3lVK(-gD&osa5xk9G2d z+tt1gv$Mr=+Qqo)-ccE!AFl47(A#zszjlPy{ZnhURu}*9@I$xEoTHSV%_p^XLT2Io zHYPJX%Q*3Ak(nWfoTM9_u;Q4E9Qce?-eGT|vb}E0Mt9)tX2!E%uGZq;i#+K-yh4Fw z`d;;4!s@CMIx)o1WiZ!BoZ${U!ZekcOX_*OVeywue;5QImJ`MPrYT!39}diXO3(iK zKFq2v^g536bLf5m&BD88xmV}O9}VB7e9h+e-lf>qF=|6A@uquKRt{P1Kcm4>Y13-v zdG5F5buD@F*IDYN%;AX&!F0PdM?U?vidsc_uJJzqGu-!kQjdw~-^7X+jb5P9e+W<9 z$eMrUlx%TB!Z^rxBz4a`w*q8~M^hYhrJUctFRkva z&PT`K2U@Tj-RViU=s=)-2djZtb z$)|7Uy9Ypu%~H3fKEk*C9KWNUbiI2i_L@QbC)6+=QhW{WaA#QJPpZr8rYlwEO@DVv zhT7?qDxf(arlzusdvsM?a+Bb2)1i)0jXp`CF%d&q+QgDPR=k7QdD3n5o7M5kLpbSb z`v{eZy~!J~K<6o+@6-Q#FlZvqeE@4-pcA-~e((h-b0vj$Z`^u&O0KjLthD`FtP5;6 zWdCCFf{bVbgk4Ve@2224C##NVZ|24@M%+zTj z`t1si>Jh&PCyl~!j#p2Zmgr4~H9hRe7w4zKDl2<_K}W$#II|;;vpd~k53KmzQFrRO zuSD(lon3JY|gcX0*TYs&ZQ7842{mz!G62BJR7CFIo>8&s~4=)7-P3t1-D)DlH2QRdh0o6r@w>sXwIAd zrr-5(RiN(T_GWqLFx+Y>O1Wd|Fwe>5+VV@^;pi^vy;%SoHx+}-@}Nn7kDBN%Z(bD7 zcFGAW6#gQcx{BX!qC4u)61i!TPN8={4*?U)#+oYmD_enphsJaVt`- zcvf6c#jQF%xt#jNY+mJAm8&vtaXn1)vLCBkf*vK44yc;_8VH?^;8)t2Z80XwM|(CA zPt_syqTOzy4)QCG>_azf4c3Ejo7qpRoy|Fz;Mc^Dr8tY>B3NLOXce5pWPNUXM83DI z_dEEW9&BYWq;s=1OV5OE5IlvEP4{=F^QfFA8}!GReD3pe>A`=4&Ss0$Iel(DYblv} z-zpS?87Q2nJfEP=og{}XocRGI&~W)kFSjx5P3WC8^Qw>ce%xG)`WeTl3ucSpE!pXb z_?0ND6`w-=wcXUZn3CuU$lSnjJsdfrso249;?~ecZz}Y0)_giO`-0SYEY9B~`lrg` zb}g#j)|qRm|2y%h9qFe!iJkYGBXe*3CspyIsoH!(F?HtItmPSuK?#2RxGHZ$6M)b2 zB@?j?wdKEC_|oE{@lz%Oq$B6`c%e3wSDWb)9>!_*!m-_*tVLn@Jq^(pG(;bn0F#3k zp8_S`XZqvMiLz=JJKdvF9>)5b3MW1J=6Q4JZ^-yihuUlA8BA7zon=~LN4IBA zLzNMIE9eE!8h&nu%xQO-RuKUn#?wrK$a~>c@1%h5qH1%a$w7NnUGkb_G1FgXh-Dt; zVWU}9-SC9Ea=Mya?(5qCEo~OJ%hRE>GcR`}{`{Cu)cU-_BAV7k&c|jdm}WAl+ELn* z=J3l^@XwF3(|&X?^JRWBaSf+wmkz1+G@_d-&L3d^ytId7{IW$tM8Ud?39!-PE7n$~bkt+3f`Co1) zyPc_OxhSyPtEWE~JmK!8FCg+R_UkK5YDdh}1EOEQ@N;v`?&Ehiiay0NZp;`&8+m|7 zTVozxZ!=HcG;95q-~`oBA9+B^Ng2UbDni7I!~Le!{~lQ#>vkVRKhAX0nW?eKU-`%* z*r|H*Z4z(UKHPOh`-#4!A3!7~SZ{@xo*$XL<@% zfc}JWudJ?|2Zy>!KUKwOK$JraI4tg-kTd>e-CL(#!AM=He{oTCK^NUU!85$r3DwX8 zdVT|#T(63Z_t9WbI92ra@5jxo z#cS=CtM5~5q0o@$*B5mM>M#-!yihdy47%GUVz#FI&Py$|D078s>=~2f zriRtyqI}9GcGA)PZ%rxdYU*Ko8)o>(gp*I;oN;!0sq-;Y{Mw|Gqe6?mD&>JDRcT^4~CR?}U)V)p7t{^%}~H}_FKn=*uj++q6L3-o2(WDw;c ztO=sP&8j4CL5I!ET-=V2>dc!yr>mup=vN9`e@-XWF8oHmu&C$$mPgy+ozL+q&$)d) zOU5Iq^xfFQyb>ig|KsQT{l*&?Fu7_3Yu{Ot@;pc}nKLsJFz z^JWcM=~mcquzKW7-0kZ$4`+j<8wc-+mt#)vhAcaZJTI$mRaJRkrUPq&Zkjp4ajK%N zR_s4&>pXnQLG#;YCl=vGI@0L$QlUt|(b?3)CbH62G;tNFKu6iHgLKFJgRlMatE%oV z+O63v?rG@m5VpM}mHo}KfO!-HZ7HTliaxVxh03d(pN;OMZ_44VGPSn4`Bshl~{ zPnvZ7G)-Fq>ol20;Yo8vqm05Cn|OzEIErWF5^0tD`*y2J&<&^a1$;FJe^}0q5ow!0d?>%y{l%Z=&-IpyhVoz8>i{@kDs<-cH3*jJ{!IL;}{y@*Y^-d`E`@O=pF z4K>WSOoc8c(>@2w|G~aC@}^6noS~}DH|kcq5Pm0y6mpK6!qL~Hj$=0NHML>~mBKqT zK{a&X6qdJrBw}}Fp}nA`llslt=)#{KPK$2EXdlBC?-l(v&}vLo%c@KhbWubtD1xk_ zLz@pnw}2~u#GrN4SyDUro+4>)I4-I!W{msxPlHOx#<`BYy>-ZPZhG z9=oxOy5m8rX zo{9!yYj3bq+jz9)yxF_H>kpGY)neq^E;{eVxi+x*!o#^d+{elVG?nabz z@hE$J%*xfaZofJqIbq^`=HF~p85oWqf6K3a%T5mSW-n7$_j105h1W!1;qaERmdbof zAKjdtptEGs9f7J?J>-37G0G2{e0`Nnf zzFJZ4jZrIKpgVE?Wo^k(Rm%aorB2cu)|N}uqt0#{pR{Y!MX~&;tq|@=TIqGvINfzX z54U5D@#`(HD?>384^VaYph$UC?Qn!O`^9tjhI7vHDMwk|1b%!4205nsd(%vz2{76d zZswXG_I?4&KS=%c1cmV;`s7V!ihUj5ix)`i+K)J&V`1dH$+pmZT})W<@V(#+OQ|IX zTcBQBjV5G|CgTp7N_k! zH-AhEUhvyhb*PMXn`aH&<=@UqN$lTbxq5DX?I$>CyxPF0=BUiG)7N27ACNnrpyWSq zf@f)rRYv@I{Gt;*oL_u|B4xi0_J3fne|1-6!9LCpo-rrlWv8n!ueuxixKj`A3ozb? z^zdIoY7^;$Ys$KM;Q}8P^D9EOx#8k-vaGAj)S0W&S;(~im&NZoc7B5HyoNCSIhCZB z<3DIEU&TlrwRgSc%vIRh_3_uy(`G?!$GH71e#TVgW3i@%*bA+4kiPGuCgnzV>zj{H zIVAr)Pi<-TBxS~S^|O|$NX6AXf5G<_prY9XZ>+cDyP?w$C@qWNUrNNQ%yAkg=Uao* z*`+G6k?jtRk3|(#CSH{j?BNk_qAXob`Sz*X;P+80jt*8*Kz%A-FUK$BqpCQj?)nEc z{M9_nFg4d%P*H6XJmF#zgv-U84BU65JUWGrc zjriWp!ZV!j1jXQ5KDiQJ?wA_?9n>(z@t5N;osV0$wEn8B+bL$*J6br=sE;>4r7!U( z{=6Ut@@G-3IHkfW-9}#qFTy-?MeyU!=m>Ev2b^{Rb9@iX^F6M88jj^r49hk2Tdk>K z61e&VFPYN>r6}B}=6Q&JI7U-)f>&O^!{neuFO~cW9!bQ_qHXl4!=1BX6skw9+xM5} zp%0_Wn1i8-FK3_YbYE`3`d)KcqpDYn?R`ZjIU&lBweJ_pKGge?&F822{8@XR_D=sm z0C$+(H8ZZwyIf3$>ZQ3;$7EsmCnw_aevIz&eRZAkGO?m?;Y4<3kGtkUac8erpe|2O~R=aQ{8wl z{#V|95$+lb+xNxKdR!G+pSw4-$3% zd+p+a%-q583s0QxasI1|buwQLztT0;Q2#wcH7OTr)72G_>o3YUq0=dPh(A>eY$daLSSI~8 zZSXQYVZqen*s7}TZtWeVbQAn997<1d6Lor@@ME*iuBB%DCQ6wZGa_E1PL!7hsSW#^ zDY_59fUl$F8>sfZ#?#h`VmNdpKrYI&grupZ&iQA z^8T$$_XRrJ(@@7V-hZL}x|&kCpKkCU)DQZoVIMGYZ=N2Q0kj@Q|Q?K&^2{QR+mec(Wj?3B4z0`;ORpGCWUs2zDLN)d;IpYQY+Z?W1;FN5P zI^pvd%2o4=^P8c&H-jng`$_XbI)q<_DXP?k(R?VTgevZ0c>G?7bf~NioEYIGmTBiDZ*BNjEj2mJ`mO_-_>75WFh5M6mO1N(|9e_$#paJ^F%nc zZSbH<fx3>?AL8ny26nYeAb{17@gh%9 zL4EC4QU4>I#;?a4`J~&S-0>plJ3MW^Yprh8P7mVzflQ13ojOddOE1w&WUs#*|C>-q1>>iCuZ7ykTea z=&GuZWut4=@2O9JKyo35btOdb3N|4twyeGy@&{&weJc;F2SfhgM84(Mw?KZSowM)4 zQuNl>+Q~)og|?pmQ>xkpPGp;8NGmZSzB}G^S!ua9>|!1NR1f^f%z)W&=OM`Tc@qJz zlILxsF?rNm?}=}*1GQn0vTSKSA61LSbOOHcZ*OvknO7TvVN`-Wb>4npO)i+cy$p}j z*E$r^Yw)i9+$(R&L&N{0e`_Syn#bQ)RAcN!)wCiQdIRiFZWF^u_unh(+ zTl_4%eZbke9saIDukjbYpf6_q6DP6|UZk@wwVk|hZ)^B~GvOWxw;nVKmpj*8MCn`X z=5|Wi3Uns-=&>p#>zZOW3S(tPI@4#=XbU(~gXqw2_xra7b@})WR$_E`gz{qo&#IP- zDOl}$uH@4;vyPYS&}mcP2H|Et(+~WBPPtG0EehT@pW+L9(OeF&&7_O>uoN}YccRCkei4Zka#vW8LneBA9R1MDKbWT>oe9S4@rV?3~^0^rO z>Os+Js`vN-i&e>uKX1}5pTt6@bwCfRKtHSUdeltX*PYIKW_yDixw}1|EWpN5H0(%hCiT$JH1Io>WZU$ z+?{rFCFZCQn;Hw(6b^soA?NTh%RJ4c;4Umg7XD``|IpAkEQ(LiLb<)zU;gA#doq%z z-pi9eC0fnL7~aSx-gdfPu$!ZU#khb5;Y#PT8rwfYk32U1PBr@iW<58R#u@Re2Q+q! zO+DxtHhJE1YA~Dpem7P%C-@HQb}#>XK^6TQ=exT~#`hG!cVP?f_Y~!lhvKhP_OGXv zoM<(+*im;xvFb;i(CW_VJx=*%Jr^xKMVXm4?tf~>!H=q&2D30_vAO|Z4mB4-Dk&wH)Kn=JZloTAJ<4FxRl7S;H<58@Dv%=>Pu`xBRe=6g8S1M+v>cI*CAI%^!@<;Es3q@ zBL05CUyozgjW1jGa9+2R__-O5=&S!G2es#0u*4E8@+Zq&>)#rx7HqqWAO4Ur)S%3m z8w_ze%85RWoRq~u(rV7r>-Kas6N;{i=lVnx{6Rjr&ffH9nJ0Ow4!T-@g8{4YnCoDm zw|vVhtaBaPEbru{ZF9Gdw`NYpKh!ui@Ez6p+-rHvS0SAIPS|6td%78kHN)-pU^LFE zkG%bTQMkISVhO(IZS~_j;Qk-%Vh(4tIXu?las(g6He)*b&gRA~3%h!b1CZ!i&%a0v zqFKc8&7nOW#NS<_T3g|K7PX%_MV?}C)GFPrHQlYX6kaPtao3Sv|CDn%nN4+Np_ABm zw(!Alyj-BYTp*XZhEv3zi~*|4 zdOQ0W<7216L|4Hetwo;>BI#|OW3asF2!B=`r?5n{s}TO~l)h(0hXtR}S{8zcR@;#- z6e~C3O}?|26~*B@Wj0S>_WxiTJyjdOfT^;Zf7ncJv%{}H!M2~F%UwawRomNri$i-M z`ZcQNxxeEnQanv9d_*o4m7b8m(P*8O2q4o5DvuY$y%|>GMSD7%l^qXi;uil6TZp4K z#9c(6@9=>4dWKG-={dGF4o3ei8mr&>J5O9PT%ZMe6-@xS;rIf}ZZ6O=`*x(#f-#ySji+WW{eme3(q;<^8nUzt|u*A|GR zIoV}HoX}HjtFlb(1<`y1k5gH9T|cP&gcCNCpSVjTe1?S|2}lZa>$G#oauAEAvW*xJxS^y!5Hvc-4;9;wKKojgmbuObaQ& z-tacJB$q>6r(m}-^7Yo2vDK?$an+!jI6BHn-9{(!Ff8XCg&w%G( znU}C#^`c`=QaSs%29_A%8=ixV)_IF|;Wv;`CsRA>t6uGlZ?ldw@Lp*(_!Baq@16Z? zVZ;h@*Vp0XDEvr=con4jJZtD+H@@R3YB(FGO%fQ#(+sncH}jXPF^4N<&+j|wXK;x%VCCWP z*(|wo0U66|9(N>U)YF=LEMuq@ZV&UwN={%c)6=P1;P#Kndp4_sb#+FT+v8kL`OWU@ z_{dG1sc;9)>|H@wr|T*H%AI;**k7>Gn&?`wA|+#OtLC}ccZ_CNO-1EC5c^IQh^+1m z$rf(KfV2-P>as8Fdn)?2E8*~M-eWD^wm)xoGsf$n9?Yz?b#L)FdwHvx@%K>;`#BsB zvBeIyQavsiTuM~oapvJ*hF}Pa!d6Lli|m5$o>m9_j7@xrpL&vhXCD4@Gt^&+*BugG z7fz=n&4bIyr9-^FJ^92re+G;4jEZ0fykkKXhEaCooYhz%7p)`}i=5A9xS$8+I@j>pA5g-sGz(@i3%e@$8J6HMM&qhz4v%s{{CdPh z$cp&flDx%asG@;5SV{g=f`2_KehpId*r%&8PVJPDS4r;1Qe1@->m?H&t8Vj&XD`BE z=Amz`>}@9V5(7*txI--09VHS!;ZiF9tk-r;+*P87topdTGL|8<2>ivd% z_-PZq-%$xjd;X5%S6#a}-FsxEgWA zwes}C{PwD-AY61hz6Y!IrMVCPn*6-QjwF(^by2PNlxOKt%h`{~&Sn*BQPQqFBz6=F z>-vU=uv__H#5_FhG}f?Fy>~X1Q3Go^g1=kurqK&H@Y|e?vB90z;#U0+?Rm`iJi}mJ z(T|Dc`Nf(5tMD~${3NT&qJH=W-+9zp<~RMJ2!6JfYUT2$KBw^SoC@Shtwf z-p%jtR8Ja*TgYl1vZoH%joZb+{-XIRm}8%NpRNu!@>LJ2E0tm69dR7rnpd)fO$_8Q zpN45lI1|$^dzy3ZM_GbhI3)_!jlYA?PKB>HVL$LOH`s|RY%9C(_{jW<&L*o?(Yu*L z1l`YLwv*Q%QT0Bl&*yW|BaLO7ORnUjkey^8X{H6xG zO5AAUP1dRho_0Ro7Ds=iHw)Z0a1*AiHoxsI5}yy8jx)4{UFG%#Rj&_)k9dztn7#t0 zWKN~){8u%03eL6^T+>wq`gf>VWwR24HjKFIIl)?ZBR!nTT5Lz%YF>A5RFv`RLPj<1=3WPJSkfcPZ?7-sk(9VlMK?F0#^leT6X`z@84N zY-Ud_#(I@fpM1!SgJBr6h4RrOR-(22NU(=nyhRr)kriwFJKJ6J zy4aQp(C!i(Lqa7bt5g0w-(T8l)OA89;|?3)Ij(Yszw`~0WKa+BG+CUClBx8J?&Uns zcPzFnPm#Ves4cHO%J~d*nx5jX?iLMq>w#Yo7UJ16FW0ad@Y~15pE~qq=?S(&@HRio zf(}J5Mmxhka>4OFSCqbQHwH5s3!5zt4pfo2?J`U8I^nUE&U1y~kzr92zwiSZRgY$V% zH1Fd*PN{#cPK?y$oU|I_WgtDngZldZh@R*3O7pv4S7>*nJJ8#=p|a`A zwoMoF1nFw#vcw-E*>oBDhjNEBi&sGo^fyh=7&X*ZHBdZ!AU=< zIz$D= z>C^Jds777ZsEyM-(O(8rhizrR0p_CU;yWWEP86SWsBjmKNBNE~@UnYU2lAWMH^&^@ zk=8T;zfbWdZTPLW@O`Ct1OJ=8U+hxk9chbze8DJsh!+J~44_O#1-e&Fv@s*>t( z{LevU>fy2?X4beKlzfq5&%I`L&i{Ff(Rkt_a-p8MhKZC^V@;&miiay^cA(yBIH=&n#i5hQ@?!>wJ zabDD2ayRdFmy>ca&MnjLhbwOBO*V^BSLw083ggj_4}TwXl-pegYfP}7X=cs2#Eow4 z`b4k$WRt}vc$4YQNlmM;Kt40mdAUhEdk|`U)oP3n|B^pFE|Tq{zD-{2A zkP?y3ggs1LZH*VaR*pYcTs_QtErQ0gCqK~jFbSu(m8vgm_?kW0W?B%1ukZL-AJ}6e z(u4e87P-a|(-hO$ZC5^HkZ6>iJXDA#u(5N}3nTZsj^sJsB%3)CFVjLkuO>Q=AH7p- z%{0Y6m)$P{#UB@)JF<*rYI;4{*t)3lC1i>w#DXMQoQinI16w6==^r@jdcPx_v(6L~1?f6@(@ z#$0ov>*Z!gAg1=_Zj8{^b~Vnpw`lUc9Cj}o%*24Tv9G_VEcc|;?9X@P$+DuP#FLmix*!KsjA1la0i(#OdlOeN6l7 zdigud3yWKNi+5Q18@Qkgp6r(Rpc`}c^TWB#E4-VXZ`GUd2s`cQhN%m(yus#SJ%)Lx zWj$^b=YLXX%x`{4duy5vYI{zV)m!o!)t&i|y?Ye=kEK80ZH9_YS3(O*q4Bxl4Jsn1 zqZT~a)x6K+-sXAH`n(fd-OdiY%)pm09rg*)V6La=Y0ghid$U?a;sqQ^L#$ot=ri%4 zw^(?SliFKWFo=C!trF0XeLaI;9HAfgW4YONYW44%zu3~w4&i-DsV7`1dtAvnW?;Z) z(F)YzJ12;2Q(4IE&Pp>#qdQ+d8G8JX|38`d%vrhD?GAV9^4yuY3Vz#YXLs;mV|1+a zR0}8t=X8|O45mlbV?tQXz=yr&%)Q4(t9!dSV(d$-V}$B$4`<~D z=YBN>^HDkHcvoiplV0?PvS6bGwl^IK7dHf3uY#o6J(G1{2Ja_@stdkjJY zdfx9~(Ir;3yA!vLm*1jt`Z>gsEqp;nqHC1zX=yzdu(f)SPtug6G{3eU?)gCG-I1netJcRyTS4U8l7s-}5ka`=&%ryyyO)i45a*D_Re0dJAO#oh;`! zYm(+uex)loYBehPj+|~%F32*5>hHYIo7A9gnV%?z&kpFfi?Z_CScDQH$|;@PHOY#@Q7u#VQ8l{nEUEAL zpF`M)zp(A;ld@gbe$k$^gEuOBllDBwe~EW>^sl7t+@ZR$G42Klm+=HInr3-T>I=J4 zB{@dk*@xeF)tT>q*=s!RJ08%R(aN42Nwg01V>zvTagM8b&@Zt%&$}gMtgg_Wa-EeJ z#2?gq7W07vp#_ReQJ^bTadv$JSJS8NPE_PgDq#~IFt_Y+IFi22j@&Nas+9T*e!4@J z(U8)iY&0bN&&uW2qtekj2rb>xR?tA{i)b&Tj$M0d$p}ygVu(g@O5372aZ<#Dk0aKmQ{jjGfXOc`A z_$?K+3jdW0{H`CNE)8lzXJB6Y^12w^hK+Yu?H^ zuQu?OTIkC%)`cvpq3*(Sl&llvTt#{E)4}BMJ`t%01bB~JZ7uzAx9|Ta(OlE@Hkut(Q#`l{`_%!n@t*40rT8t3UwWGOY|8&<@R!@f>8)b) zWO+_M6D-=$rM=0zf7gwa?vt#e_iv%7^t*`+Rbh>1R0q1qvx=E_dzUGm2c4O6cD2A| zA3Re$nj#*3#=^^4%^f?=sUB~RGnl+0J7 zcr(0+>BWivEj*)}uHZUuRnO=Ac`6waRQW`0@EUe!x`MT6SX;M!@||^!e>XlCkmmcr*oZU$Ym6=;$bzS|LOEm8$1+ zRlsi{zp3U7jT22T>8beJj^uIA)g~SN-@z%dx#wkJrDoJwP5AKfeE4HHvk7v(Zu*z1 ztJY)>9~RA?H!*6b84k^LN`Ga-*c2BsP z%wZ>tU0E}6YMRFPz3*6|Hzd3KylTDs5we^N;8BUN^@t%`v-Uy1D(^S=D{4`!(#&gYom2OSN0` zH)fivxAbyP?2Gyp|8vUUl_AYAPw7Osg5Ql{-x55;aCX_yB#QYIEeqtE3(OR351rgi zabHgy+-h>xH0zkb>ueI$4+PJKS*fGO#E;@Z?$;T6(oG*5y~|PhzrTIMdOov^`N*Y% zPekFYx^sTk)$~v16DA~7R8_1ccV8s?|A95+cOus7ng2;YSo_pP2=sUQkKR;CRr#t@ ztneS5$Se5mZ$zP+Sm=(#KrF<;@CE2*OZ*ZxzK1!(2ip|kN1R_0fA$hY0FSO+q> zH~5H`EN(Y{XVup@Su6RvudG5TTy$?Wk|8+ck?vo<QX23piHDda%F6qu{`7~1|tZD znO%0&K6ck5w#jVEO^F9Y(UIQb4?R2W-7@&0>9K#CbNCT$d{I88N^&Tku6DFIyn=?c zKrqKMoYArKlbxsvUu{m@3mZK{pH&4qdt1e=m0sOrscSNl8Q*w{PvnPhVt||D^#7Ax zu7_tXx;+mM@KZ+LTs;IMW zf{?E+qUU+8F7elO!K`BsAIM`?1cSp{;E~7Tzw8D~rnkPZDJy+dWWQCXnTHQ*5w#0{ zRPpPm(`>QZFq)XXk-jl=k2$49s1+Wjts2WF_s5+fqOtB&D3I|BPgk9VTsR-6|84vL?)XiXaMonnsh215rMsVtyGwnW zidkD|q_KIvpP5nmnkV=II%|%X>Koh{=EM;WqnR8p>h*Jr%YOGuEQJ!c;BMPHSLN}g zKT;Mf5H$ywD0ID<6!lGVT4S=%g~ThAgQcRK(f9D>5%GJj*(1B1i$$q+sdW?}qwqjA zOdr{UZJlNI$%p1<6);V@xv79PFt4LjL3L8{E~Rl;ojmpB|Py?Mk*Xeew@C%>8CsL3^j7eDW2! zb%rjoo$}~4muGPG^Xm=V;PkX`zv}Ap!vOvb8{&Hn3;N!Ma%@_CocFSCej9W8uWE^%fzrnZO z=|-Dz;qScklWx=LVE#&O)6e#q^xKV1Hq}@4wt013)co#|ue_1EIpaxPB?B@l>0K$B zY9VH3kE=uvsb(yO2Lt_sFPVBXKp)`Go?wzbg?DKuuf%g?Q}=w`?Nj|tQkk7`e@2io zCbgC}>)N=J`SI)V)lZApZ@O2cDq9?A7fzTlxG~WS@3S+U3q{=pPY!fD%H8f0I-~Un1kU zm>Y{TKhsCNr=FiX>=Aqg%Z{;vJIz#Ca;cbE1i2x>fpoO_X-zii;4EZv!pT&rjEWiA zGv>(tn&K0y<7d~XgER}ikQIzEc_@cH_~%jyGfEDd=-D!esWulz%j2#lsn1E}Wrxk( z5BYVfn;9dCWLMvihX1egPEde8mpMV#nI_0X1tBTEEX_~*&d1ew7#=4Isb>8IRJ zxrJ~1!RMRcB(_5fw~0{tM(x2AGk9kCOLx%jy==$x!^N%Kt^S8 zDo?6Ta>C^pcXilG9jL4u2wrw4Q&%%mo`z)a#P61)@K~hBy_<8e-VXk22OhQpE8w?% zJkor1=d)B#W8`_I_2#$Cydg7X2h-D3OZogm*q!y^J5l5KaQsEGu9==kQgt$}$=Coz z{-WMG5g*b-=KUEh$4oPE{!h}K$K6si%@Cga(8ZN)g4r-|xQPpHI*G`)A*KU*~n6YaQ!2j{Xs;H*~J-Xns~|z-j&!av&_+@lP4%4{Nj=DA$ zZcN{q%xw*qst&0@Cd^HVK0?ua-xK^Vo{Exs# ztGvg?V)<}!s35$Wm&(#F@=&xauJ%Lw_%m;?oZBbUVAlFFbN*OIc=Zx3^EG`XqamcZ z&d|g5!dtoqTi|Xc;{~(RhDUMaY=^kF$f+Ut@ze82O zV5r)>zWaM7JI$H(mwXg7;rr<5hKJ&I($Cnq0`W=SLL1Yxx6%=w2p>`R-AunDp}7+^ z#T119+;vt|ExHiPTUIn#8mkAH+>$7hC?_7z$B%YZyJQGztKcTu2cy;DC;Ww`vT_Bp zG54oE0&(}HVP?g`EfbI1iDq5&f38lI@`Rmu z%FL+k;^AMq(+BW-=aCcp#BUW1CnX+Bn!b22PDHdJd8iy2f&PkCP+6hRc|jwa@AoNIRDN zH2J-lw%jD78=)=XNm#E+bor$s;+LXHu0+*Dro^83ASkn3tQ)6X5N)Jl_!u{{TtvM! z?X%>uUS9q!xPIGa${|-uf zzzUW(YjlFTr-Ap-7CW;ovOy)^6|+5EL}~~ZGX_J`GRf0xCptT@Rt&h*!1?+B**$F*HlCpgDpuGJ80ZJ6sdSuAcUD z@_h0?=w_%Vm>GJAQ*SyYy(B$toYT|^Hp-Ux4a$8k{;#U(44=km6Mbt%2J2bP>~_z) z(!Nj5G+!xzO#U?&zje4Q7wadg*SoMfUE;^oJC(eJYfe)h*yNt5A$nAF}(r3SYXxd#xT*S@j_JETuHas47%X)3O^+&bz6+M*C!4_9JHpg0prfQ8L z-oQQn^%Ilgw3p)c@)v%=WFDw1vFGC%?ZHZk+ueoy3ht7NCO8po8EuD=`Pf*oQY%J;+4?H;(D!UKHiLVPUAP8poJ$WlK8_;@`(i8m@2@Y_dQ!FJ>on zGq>mhjQx3N0LSF|$T&OczhJg%=hgK5dN}@xS?fQ?o`Mc8M_W)Aw$R~5S%c+Jat-^r zp~&==xp{wx2MIO&+qA2q^q$%(jIXTZQAo2z{4f>%LsJu4(G*X>7xP7waXy z-lzKQVP?gZ$kOOo-H*#mE_ekp*hyQc8~+g-^BsgT5W|-tQk$w;RdyTz9Y1UppOvM~ zq>WR#u5}A}#b_>?RcA9n2f7dKqEr1Z9^#+aEA;=T&AZyl{ae_bMYrNnra9An{GBifTfT+UF2@?;P-dDF_Ml(TM@-a@4`n5}r;lSG-jdZCtCj}%8^=7s zyZF{GDOO>seIMs(DGp$SNnu;f*{m8rgp>LX)45IeWyMHqr{S*93iW1nJF%1V9HZ9U z#RvA7&;J>H&F5#R*qWMZy55a^!|~wTx!IPfy$3swnel4d)2Eg7@*B#+nR8T}%R?Pa zI$J~~Duih*A-~>bFYPopY@PG?8+A8@5Jq4*8%CZJ*}LOFX4^@5+*Dk^`#5XRZNIMM%pD#JJBqnJ)v z`7-iR^fBz>Tr9=_b#o|v7Qr*-@|82&Xd$Jm68-WLHu0EK_?YPaq}u&w?_rpV@omg^ zZXL~U20d}s?V#Q4iJJbxR#O7Lvlrjwt%*jnS;ZMtj1Qpo7G|CH!uRG;ZDpV%R5s;>&n2MsY@#jlPKk$rT>#zO=^b)j7%cP18tC+M8~gSI)?L zk$utX97+puYA<*PM@3DksRc0K|))^{B zA1n!@jPTs;PY0ouQxebOe%(T$p@@M*&Dujnnq?S1e=^lp1&5ms+ro97Y9i!@Z4U)lt zSWKn)k$Hv16JMIC(j>l4)i{Y~qmI4!Kl7yTF@G+9+L`1gvtOHIst1PZ>fCuX(vPxs zBB$RCkAin$ck@hSuu-lmawdBzVS5nEg)kJ9zd>;Wr_S3=qcikY+b` zYyMy&>UqzQ&spRJ)a#vXbBM!XkV9^%^{ro<#e>%&7ZALs1j3cRe3*n>Z) zz0>T5`c4uj4ve#3|JM`h_ROKD(-Q6{D5`3D+pNlo`ofRlmha|97!#xg3&iA+qR9?e zdj}5eJa5GzeJ)$vJ6Iy}boc;9bdhshQD$gLc`1VD?4mdWJQ=N3wIl2gMHp9p+j@@Dx zFM?CcMA~7-kI4lW?ZH2xn}t-(`P>-4n@H4`r{pa4ZD*{$cfTdR&pfD#_}CusQAgeA zv1kW1TdpuPAsdx;Pu90qaE+7vLFi@NPgZlw-WJc3u>O}OP~L>lX7K;Nkna8G5R0~T zlV3dCk5V%hZxV5q>);W8N_#p~8>9RM?xBU6@ltFpoLx9kR=tu3O3fMPs^y@#i!%H% zR{T+sWIVLrO>XQUlKq-CCRBtMtz+bN{M%N1^0gSoC0-sgzglij#9PL8K^9fu^vUp5 zNwK&aTyhTc^kmv1DI8w`W_Z>L#GU5K| zwN4^!fAZ^O4)s2-Pe%r6V&P%P zv|?H{t60rj%nl=WQz=AwqMr>)Q!nqLz`p0#?||<95sSazA=$w3(3j`+Zj5-?Eag@v z&HkOdl)PI`>dzIpAv{XA*R|;TnBW8WlX>>+0X6$!uJ(cU@W}9Dn#yZX*{S4pn5dLUo`=V(fk?bI zGTJHrFVJb?41Nz2#S@>qkK$6SDh~RL$wtMnS3|7-qwWyhnA`^q+zXp#p>VYem(b(3 zhBqS4C;YD+FjGE%&%~sL;&3ZbB&&*lvTT}NF5DstZcR>3&T~_CGqb^73*FBJekpQ1 zx;hw+za1xw)J+slR54}gU0qeLiemSwvkuDVMMRNXL(3rJqw2iBk}cKjE%1LAXz176Gg^%j z@mXvv?yrU@oW~jb3VYU*FLtLBkgC<2$>fik27bs1Je#a2pXCsR+vy5eL-&4&|8rIB zF?;79wQ4Gg){U>Ve->~G=8EQ$MMkQyUQElF_F?k9x9c!C$PD}=E{`pv`{(ib#ik!FcK(XVfp22qZoo1*^kBUYiG*-gGoi^Z-4R}jhVr*; z_=p@(4jTKMPqI?vF0W zRJ<75tu}hb?pY*)xAyMyr-i-2-;%egO@1?JyDjhjKeF&x&i_ARv)t};%5+X><6V5r6X~D%*jVtV9I+ zdzk;QVDG=GxvYYLm!SvFqTzG3u39o^@UgPG1?T~0C+;dV*Q9Rzq z?~kY{dWc`S!UHI2FRII``)q2udS^=iV81`BKJrO;&$VvFS^$X^fJDC&|89>Dk%4Xv z@$3t)P3FOj8_^#-836hqp?BrqNf^sd!sEHbN~_8GsVbkveBX@U4hJsd#`%XXJX_~nEgJtq z)7@uM_;)xp&Bd@OZn}IKKe0ePRFTVUEKk%ol<6Vz|8CK@H@7c{+MQ)GhselK>|3gke3;aU4*h1`m@o0Pc(?tx& zNfF~k^~fwCzdnTG+1t`Qocx2HE9#h zvaQ}+SNzIHKEGCfz(4Bp7jQ(EaYWag{>jeX?=oN``L~Y_mh!=y&Tcl$eVS~SNBmw* zySpuY!f+M{tfAficXVUW-7NxN#TzHqCaPs9oFSTFh8Q#{euVzf77l-wm;QGSmxp*} z4#Lpy@iBFy%QwOIPK-40{#SDCTr%~17Yy?W<)x9_S&sITW~Sq7@KZsWeE!fnzrMHM zU)vh|n6@c2OD%XYGALS@dgq>R=WmVZpE+?vZCpOSf{&_au!@(fky@_2y1ugrvWdSU zE8mOrpkrmeIlUbrf*~Y-r}LE&0q12zMDzZuRG1*ZUcioo1VR| ztH_(`)w>$mj3vAlgyD|%Cbmy^{@YW~n$oapIDvinD;7o~kvz`NAAA+(Ag{k=&Vz2Z zT@xB-2mH(vSDH&Z%sHQzN3or|kUoJuw(;_QW%sv?jOGUjLjB~fAKXH*PbHRJP2Nq{ zVj{8=29N2NJ?9yI=Q(;v+%6{bJ|c5Hj%O_q?Wq>78c%>rc;OAYGw^PY5+%m)**$!MOXEDSJ?Y%vi!N>jn z-72^saa0cIX77D%He+YFt43sp)nBd#y&u#3zH0mo?zIAOzy1g(c#MKA5kz^}p!N73J_BKr`$U&B-J9Ptez|{|AS18k;lA%*usU z;D7S=56<3EKFDF=sW`#ra&8$ru(tpGRO~OHL-cgyef8^Yy7xL@!#))KpVZN~Q0=vV zle2ELx1P6(w4VE&oF~&cknv*YN||RK<-U>*t3`a6=Ysyuep{^ILbcN%edNnTp20j~ zm-MFg!w9xFd;eYMZa{kdej0L~E_P%x@1iFU=1I}#q`PZIi=X|t)pAqI&O!d8aLbL= zPBGrxA{?<<-SpQ|)IJZhE><}$<+Kay#2;k!hKYMC#hicVD5^JkMSABC6;!i*#M(btn{UPryips!sh#YX5g?rA@HrB}(;P)y4?A&{iJNmYBPpp1qX!K8ik> z7ux*Osc##1lbs3iU&AY{sr5JE{gv3);wp}Nk?$ep zv%CoteR?CNf<}igo5e$TBKlb{los{0I=P#F#pAc(s!CveZ$=xNvmST*-k+S4S9#yR z#J3jLi@AHT>3t7(Hoi>p+$ zjr_c&tz1i*%jetygVe`obdLXO$G*njkv%e)vmoUMUWxY~E!S*QA&m%?E#O1mniMtGN7aFHzkU-)}kbQkWJx3HAW zM46dT_ET8e!L;n&e4B+Kr0IC#XWVD{tm^Pj)qQzSky}sRd*NO>t|Gy&K}YVSR-)`i zXMT;-`UmCe6Wl^AF8x{IOsd<9p8HAPU&s2rmv#@Qe|sLiWs!j}!i8Y6`sxMT#*d!< zD@^@i@9p*AGwc43C^=P}830#hP@fFI5!F+f&JySLiBxxS@3v6e-s@Ad?bqF^n-jW` z7n)8r*+i#kqymn4tIF!HWdG#z$&YbUU#3lVA4D|_?*%Hj864`0Qk(#tpvnt&%}xE~ z{|mmC;ftwEx7ss{DA1+k=NxXhxs-NPoPG#4J`p`aWB5I`I^7Xd9y(fSX8GD!##onN zX>_yiZV-N5hs0#cYY7bLP$wogy{raq(~KtAE<&Fx$5Hd2x+oWwVHJGRJ@%>d@?>njh%wpt>TSfVO>DHe|vwc{4y)^lP- z7h~lMTKUc*)de->*P(ePi-pWydM9Xr(d(|Fy~C%ktB7kl>)B$B@kzTQw?y)VA9veG zBlF6)CO@Psyo{AT8=9u3xhr}LJl+)_IoK~hB`;I8{bJMy6N`Tt?C8A!i~fX-z8HI0Exq1Ze-{(_7mYPcD__kwav7RV`N&?x!REvUwGint>Y%8J zM@umgZ}9Z~8GBMrPH`CvM95!c^&KX&b~Je`Y`5ws3ccggCES12Tt#;|Z3gGh&G6~S z9B$a}>AN35^bb32J^XLZ_=md2rt6!{p^l%y=U&%Mgte^QO?A+NqI@m2#7=d5O_<~m z7Waf1BOS$v{`%kYnQGJk9&4kH&n~YH)rr{HdwU8C*FcQ@NYBFz{RZL4PdLyPLD|?Y z9P}W$Wiu9{Z+euuj6?cRH&1svE_=8K&&^1xVi~``wP@Get$s)8vQ4SmAHy^IX)$Bz z0G~VQ?c|r0Tn0UwFs|)g%8;8)kK=%9Of16nehU?RUj;ZO%CsXK0(hxS& z@{Z~gEM00#N?EP6N}p~9r@c&p>nRh*W2`WSyzMe3A~ zJ_nQhsO#u=E7rC{m+9~#0ltyjO5j1Pw<2k2OD!kKX~TrT_$?`!Ht`Ir5T{p!b^ zbnLq$-{@~_YR<-+*vCihx{rPHYcfPmRoq{?jn+l)liPpOwTkP*p6tXNe59A)y-+Fh zdq+@C{>{&}l{#P|;jDPxnIuR1E>9>5t1u>7! z#hdx6kmY#yt}38WaLr)c-51oGtMs$a@fQB6Z7e3X$%z_xtz-3*p*3 zVUw;j_|`t3DO#TYUk42RagyR{I#quNBkAeS!9}l&Ij?fVl-9A=TEy)rODC{Sb^O3loS=|y)bB8Nedu<-VczeKt%wznWk<)q5cg;5!91oO*+)5Si9>L6i<+Rn zdg_edaM0U(lwWy)xm0I3mMb`W&Gi4Dg|S|iuNu>=KEeQOHcwy*e_$BS*r^T;V~!?@ zJSp8ZzBJAB1AF(D*ozp5OwksRscMQ>{rWi^t_9@FzIspE>g2DX zH|`y-_skq&55`8@KlSbW9-{tV`r3+$9NB^we7|`>s?oW)@0;FTlme6TS`XosJ|1a} zzd8inUgE_{-NCd11Mmurea(Ex5_~|@ObH!q8e~>(<>EXf8`E$7Dr~C5kK9;=@IQ6v zuDxj2Rd6p{3!HpVBkX6vE7F@14{mA2|8_)0y|*upkpdl~g6O#IAoa?*(`% zFXK*2iMbD3fok&3Eb~@J@iFC&4mU^meO;>?`F3jR?z>+-SHvuv2TXA&Vs`GM_@h$( z!glQYdHUacUbKJo`WFehM%Ow$ox?}{-XCP!TKLQE@bz_>Cv37=8Bba*t_fzncm&8u!#m*0~v4hhhrRqo-a9UL z)K?kak2lYX|J@L|lX81P&-DGOlpNfJJ$?IqCLfl-EqOi%L-q+zk{c28e#@uRK?KEouA-PUda#C49E zUs4Bm0c(&g(!(5~=iC%~M8Cy#to^&*;L-5x$Y3?b5S3v!GfgUrz3pJ9$He}e}B)=E`F zH8E^U+5~Lc`fxol_)fE=Ccywn6R8?FiTCk#FTm%Viaw`jC5N8Yw%n9Y+CSguC%wb3 zpNfSXA%Avv0!{>L%?}t&_3WFNm&lyqP~uJc#W)${3)*F>b0}vdFE8a~oXW}M{$%~+ zGB&dNwR^TDQxVs2W7*X!v0&*%+QqCDOi?Q3FaMpeUkt6z{yejrzJ zNsij?w9_Z_dqkt}Q2x&bCY`7|QV3`x1iDieN!|axA^0X*C0d`0?+@x_5%D8L!x$!p z6oEfVt2W*FZPMO1K~Cs77a!h6l~++Ueoa;SbW{9_MVsh1x#Hw!fF2)$A?}t5pQpRO z2)z#HkiXlUk4J;w>90eaz?yOq>2v42UIWRy~n-Y-7zdh%siej z>_65i7)Li5WA81M$sQ5QFZ(s?O&iT?3ho41@NK7fx9GFa3YJp0y(I@P!LXdg#=a~M zyvj-06F2u)>_M#D2b9O{`gyCWI)`DCA5V9vmw^AT^IYULIcA2*kTb&P?Sk(ki?|1N zi(!RgQ{dQJ^lp9t5iBulc_k0tEqcEm^cFA6AOAuxhj0axI9HBxVSekLrNy#9z2Ivx z_ywQNNVi;xOC2bu*3)Zpr(Tc0OtXKD4|9ukZ{i$G$Iz|k;5!sr8SWan(+r=YW^DBf zu8JeS#d3-Qxy@=B4g;7W5bZ>TscWjoeHe=nE`GjukXJnU+8O%E3HXtYbU6B=Sub_P zop($D`bQNyUF~x)Sgu#)dEI-%B0rdjbighM!|(?<5DVi5FYzE|pkFpneU4CnO%%U3 z>r^<)UA@W-_EIrZ5KKyq$|Jvq@5L_;c4ukADnwz>k3t#E5W3S29&fg1cm9u8V81!A zT<&-%e$bm7%iG>o1@gEqhXOp&hvA;SqG;TIBiu`O%><3xO+tFi`Dv^>y<~b8yBI6t z(^E{1$f3vo9w@4m3gkQm^t_XM7aj6T{MtjIS$w#CoWFyS$~ye}20zIIJF((XaX1SM z|AjbI+7pB*$UmDC`MnkRf#&{_`9syIP;+!+Ptzmv8XUdX47WA>Q;$HN8*sFzcnM}X z%irm(KNRg}mRuKF%%l3YK9onhz_T-)-v>m-u<4QanPAxhj=R^4u?5iMYIt;*@BY_p zxw1~sBivWnO+C9C4thimx#kqq*7x!;C-Q!*dM>wc-VtnaiXV-Q_vyv<{y2=!EwT5w z;+KmetEs@VeSRmN=P9SSE(hy>yemt?Md6r|=I>_-mg<15Yr@2g^#9&f)6|bea8B7c z0K>SG!zMhQw1Tzmz^ispd5Xe$8t`v?`G+C{-S*K=CcoX}xpuL>*6v}vNtX1E_6cgx zcOY4JSIdJF#qV<5?VU~H%x5ZH0dwC)&CfQ zB&&zdI0KE$Oe$_Kt`Y-=*~5K!7^dr~U#ml-m3^~I7TzJAH8!DVOE3l&>dL?MC_i@_ zO7y!I!2)iD$3L33fb526nQ>#?PIMB#pZL2D5x7cBB19kVPfncFl&V=D# zL;Fz+emP}KL=Alkp!Fr_> z)j#>SzTm$~O^Kfq-4e{^WL|9V9gBSi$>ok0iaj5^AG`!jZ{fh{WQtlfNcbWZ|EIK` za{5gE!|MEN2XUS!sUu=DKS9tbR(9Zd8;sgR?hWOAKlt2mP#;C`4Vj+k}l` zriI=j3+8ZR(G^cW&${msfrokiLLxw696)Y*VsR`+2QlCoSUSH*_=Npi+LV#IBHvp3 zU!uG8PmjSPe5W2c>M7=`q0i}%I--)$ePc@VRF%|9SSY377Z!dyOnHo^oiixps5<_OAg3f zoKM+JCz%h0j0&#kEZP=%%GB{H;h(s`3tIh{r+>mZsA;apfJj{QYAOS_cJj8^IbTBn zAHZ^%p{Tvs?imo!IyKy97?_Myj=6Zt-*A7who0nKTCNKG0}9XL%w1H$=CkX*w1eAI zM{>&jC(TA#?A(7$m8%VdEU@>N!=Urr6Mj5AGg2mcJlff*?W_K613A2pJ-scymG@|x zn{jGFu)DmYlX7Q!cdJ*GKf9Vrnz|pcTx5Ub4d`Pw?6CxDcoOsS91g2J@6C8!AjAFo ztkBO(&P*e`=N|t~V#@25 z=MR{oaY)7<%RlgW+AwVQYZQ*_`0DyjS2M`1zsk42%JU)oOQHA!u_uF%qT`}tR4<$G zc2jZ8O+p`0Qx~XxE`%m#cyHLb*+_HL1|MsTt z!(Clg_f?R&_J+#w>-MGN9*-^x>Z_Q_VQd!Bv}Quhx5nq=J#wlY$GOeuh8%w{m18{} z`6tMy65gb8cnimOe&^+l-~sRYJ{8AOpX^2__*NAVxIJ|--Xc$=b9foQ-Eo}PU`phb zv>v897Br)CWTZOQXOXI5b*u(Ga1EUzHCreHw`9)PQ0jeMm2;}@n?x578LpHECIY#huo=QJ95l=@zWvh)(R?=ioAqIzknb^FG= zjz)CUMVwkkxHi^sF0AzYMeVmVoWmTm~|lzGkkqwq|SiQ^%-sQeA6f=t-6Qjm3OUZ9`ezP_Q~((aOxJ(t@-6Zk^DH z#QS*CpJmu#Dy%&e)Z27Qox!a&qDxf96@92q-6l5#CUj5GW0E!YF2BKW9KmYN)K)s? z`iSfoX*&1OvtGr}41vq9=p}E1U%#ER{wWpyX+2602e&|_k5ll#6%-C-2o~vWQJn43hJsz@r(V`M!UV~@zGAWy*0c&>-62`=SiE7BYPh!|AJ@!)edjwWIu{k z{uaA4hg+Z|UiMz6s})xLYhAY$RECS`t~C;mCkpENEy4|d%`AmR(Wa4ZVHJpPJd|9_ zU2;76u+LY8XSV8Q=obyUt*yO0G>{f@5FbC3D`>gubY!rDvnE5NE-&Iu`#O`)e?7qz=%pGx!9xEzXxXkB?bR1!x2R{iCn5AHDVy8vDQclP@HT^A{AQ{~WYlC4BmH@SNPW6a%$X zBrA$Rt%!yAR_#(j1l|mBPDqQU%}owUzLwm^`@bknC17?-|Hv@+?cEJ;&5qxaXlcb> z(BJ&Km~vDF@dEAYQluXK;1Bg{egFE4{$EgukKj*RraL+Y#PU#WPVrFPm$>0%R>0m@ z$A2CW{fk8Ehz9F0r%RH3k_GWE4U)ZeKYWeK<-g$=hE?*O^|Jo!<2p-6GZRu*|!1{}jFK zoW8ei_DF5q&vB8Us=Ry6C+`XW8@?JzY3n1!f@AU0i7|=&iM@&4e*JQ|t3<4kNgFTg z`Pu_1ZsvcwTffOLSo7b|F*~GI^gbD{tS4@r=;$`-WFnN|xQR16dhI z-fW#bb@Ps!&)v*&v-8c7H|yy<%VtvG8U`c`L#SWLctuqE9BL3iUTR>nT3LfjIihu?b?}?YieTI$s0v1Px>LgDM#E1Jt>? zI@bqyTfZe2BzGt4VJY4VwNcqzi0q;QOY4=65vHs_Pugco`R zGj_sUqb>ZkL(@vBZ9|bA_`UYQjbLN!9*XKpXKNjl^Ps+@9uJrH1xlOPr9NLA~n?jTS z7$?>Tvy^g$-+|S5Sw(*wx)~!^FLA1G_pX|Y-5d0?l!){S|E3CD&gs-iH$^)YMIH#F zjcV#d`aG$-JaZ$e%2A%5i&m^xe2>a>g$SB4T0PPSGOEpQ)LFJ_k5AdkPruW-u4>-j zW;^sw*rqHkbscUym9My9Alk0_tFNdehhTF$a`VsTwpj!poHB#vC{D0eYLW=SJ-$JJ*>N_<7au5Ryf!1%9AZ2lx=DEdg@kG{C^?`qEpo0FF~Vsh+k77qpp~c zVz|VNoZwf?-)S2jNr!yH6W5b7-qOYROIjN|;vnbxbo4eJfd7K;c!7&0o`j1UaM14y zUh$^);%JuB;OB(aQUM!#&y}!QIjsK^dcq5&>i3`=_IDos;vz12mkzE>iFdJ3?nyV7 z_OI~V@FKPTVY7c$C)*|8N|u7Du7u7|(R#YEr$F>B3}$t!^&$NypZet-cjd>b`Ds}A z;nw@KYP+KDjnTUQ0$R#O{`ZTa17`MAjQ;Fo-w7i$mnkps4?L;!qdyjR2mb3R`frkc zbKdNxT$~>tnICt_%%gYHCquY-jq78ZoOeu~Kg-h>No=757K~4b{fGTq9Q`zM)pU#z zPWCdcjYg2ocN|jdb*=3T&%wQ&(fLr0>QDv(el6YaQaSzx-egK}CVGFgGX%cZ?6=i+ zcM&eyTJ)c~xSvdzzon**mBiUSMY(^(+nQ^Kr`Z1{IEU&Y%6`u6`RVxm8=Peo=;#@{ z?Iy2H9d*+-6SHdLO;_>Ctnkb^^(@5_!{R}_4P14Ja#2ggxm~rr3Cd`PeeUdC*TI?G z@AiVP(tAcefr3+xx(Xa852s_J;jqye73a|C zU(xeWbO}*#o?QQdvt1;tEld<;D&F}Hk&i6y{ zjri7gyzBd-Pvd!i5=*~26Z7LS0@y#w&x6Bcn3PD$O(x*LEjCR8h>`PzqXF1Yx z`u0b4E0o0%Z}!V;@+QqTL*^r~_+4l0s8xI1RIa?{zbwRTjnSqT|@!Q@V?bM~lPJd#rgG&%IF1R7W%)$zO9h zbTYi3!d_ogx)$7zOKPohNp*HkQsKWATdjI%Cu^tX-~5Od{hw%9#x$zha%VLtt)@42 zzrMt_a_^#8C3~eSb*qynFQ{tz6)*G(W<47${l0yki@r6)v-gLFABON|ggZvuW)dAq zAKYdNQ%$ann%;H^(YR);UvN6wKH3u}`#UCQlUMzWg{r1a{M#6bV+c5@8lz{o{D_d`F#ESB1S8BA&#@7k9?S=?K55Bk_iHD=XvQZkN9$|Md+% z(~;lRZG1Jju`cUJuVSvj?Pl3+4yux0uAu1oB>CfW`xE%h5p4}n%6Slpgl6YQ3emH)&TA+kgD<5>DLnOluO~I?i z|M&_uzKy!=r}TMKJ@7%hBK@(5KLuT|pk=MsJelBOOj=4$EgVdU{)uD zDe@jC$ibiu{h}HbZ?%6t@kz_^r>lY_r|&}VtP&5_9em2K*)zQ$i0m+8Z8JnC+v!*I z&{g$o|It&?1irl>GtAWew;?#`j?z<+j_yH@hQ~m9;~F3jT`x9*xt#@1s4I z)JyRn58Fg8h&5*NraBTH(?@eK?2bX&(=^P+u4HDNT(daID%)|XKAfCx5leZ6x2p70 z_j$a`_m{)OzrD2IV)&R2&3~pZ~HlK{SXbls1BGW zDuUPK;8k>+XU$$H#H*W%Oao-^Ln@&rp(C(M@9@iJGF8-j*APDYAKm94d7(0__llF! zLB)F}^0;$05q_8{y6yMrNxBmH(Y~Q@E!J#{5;@vEf!KYWi<+|F)|#^2KIzBJ_#Xj)J^aa&9gAgcdYqzz3ta*aB3^4t+;G90Jd+dlFNYMnD3n}=NY+}-m{hq z+WvswbG|!zzB0k6VNeW1{fnw(v0Ac^Z_lf5sTaRzRj!E-xCY*&^>n56eGVUgNiTgy z1vl^mxtb#M+ZBnhp@)i+!;F0x>v>)gu_GS(tNo7x_I{;CM_)0 zZM!Ctfnt0oChaf2v8+(rSmsV#gsq5u{MEEpdi;uf=;#u%P~r~+t2#_YGN+C z*=b?IxH@Ix)V{Q9U3O-UJOp+0E z&=@|`cXVrPw`uHIc#O}{xLS!Z7tNB~CyVXWIdc-eZ=(LKU`E9A?tdSt7oxOJe~7Eu zL}Mw*-CSLtWkz`Om`=w$DvTb~W6*ZF=Z+>ud;LX7|*WSEGJvx-zuO{YoDo_9W>gd72X3m`4R_k|t zzg^A8serj`s#~is{7~1Vr--ON0NZhv#&JIM3U%^lDB?C=*b~82yS1%6I#eDFoYG77 z%ThhEpUDdEI@ckQb%lPhCGI8|<+HUsbsrwHDJp~v;?q)ly|=&6lv80b=5=h47JUik zd=c+ZM_pEr!cft~wv|>e2emE5P5q=cx@tDUUpgU{!!FO-v!~^VCj6!4?AHJA^xb%~ zQ_6NuS*?Oy+ghjDV@~;;NCm7f6$WNKCnvRsbqnM2Mmgn6#JALamDzQe9;YZ*lG6@R z#_F04R9b||649=yKsk3Z;U<@Tnfh7t(DYd*q~8JqDfsPJ17N@IquxB5JSW~m= z3I`Ru>lXYJ{jq8-RW=jsx2L%ZM$+W|<7<6eWX&iam(yQ49Qw;DrWbRsZ^g(S{J{?2 zem!^v7kb_EAGTv(g1t@z4QVS880I5WP!Cf$?&9n@%o90!ONnsV?{<%{2=qtxk^ z)w-)lOPXht2@*)%_j=4X=i&?ff}4Dlv)T^xd<*WQg{pEgF13X`^oDQ!PF|eK&C@aX zl$ZR6bSFcz@D_+U69(;ajFT6c)Ihv?Sb zMD@zz%j0;2kM(3;#JaphlPclH#B$iCw{;f|2xh^59r)6g$&7!cv>GVl#poSW*mLe+ z`o&Jmf(1UwPj^NyeShr7b}Vo_IznC9Q!Z}L0TJcG86}gKQIoEr0e3f>zlM7O2byQ~ zhG?-H*Axnk5vMwZ*O|hz+#Nfug5T7%i?~Qe(9kQ<0<*MYD2G}Sq?$PAsSFi=&I zwY02S&wG0}^k-;(c(cg-rmoD+X3{P9)*7pZ&&zF7c@o31A$a5)G}Lb>;Dz;Sb@JPH z$cX>XH(jHqZRG)Z)mzI5uNQ@wGf;KjGF|c^iq;xkk;5R*(&jUk4FAuLDet|N(G$5d zRMBp&6gefXf5%1GLKupH(ZySmhv#%pdfd~z1*q$<6e40KRpanc&M|BF*U>M z&GKJm=I?v*(rx1L{bExCr?en8_K+R(uUNTQHg3zk@`5;i#LAz=An$Ou&`vJg+>y^C zWzC`Ms*8Lg?@?YnKrg5}6rTz~?d4rq1Ow%lO*7JOH>x*sr*~Es)VI=%^J1Q<&!0p~ z1oKr%EiwPaV8=UjC3e9&E$99}#k;ap|9|S%z+v`SCnvnW+;~v;`yvj?-(Vnf-sIw@ zRMV|~^C{}si@YQ2#fXj3VyfcOdWNoZ4rNl|9p+yyC^Ig$TT>n2yS($7;`*~{@-L{* zA7JffiL6OCylsm!ZRElmfMevyK{!o0ZYt;_$ zeO+{Vnx{|H>@73>Cz@yV&24C6qeQr}o?s2{e{RmPSJUTyM0xes(8iKZ>#y=@CeyA9 zaXegz)QOzp{k+Jnw@+ob*|hQO=ALEq%Zte8jd;&Lp(JMV&U(_NN{O#qQ%F)iJrKP+ zn(Dp3%%gG_4d95_meHP_>h^_=&e>tQSVr!k(wNxE>hi0xT99Y{_-N#Lu}M9bB7$cC$xrl^l6T-7lL)p_|N#C-lEKO`+T3M<0eYlaW)-|Q=RKJ zPRbY(kzX#Xwp>haxsB$z$#`0!|`*eFu!=xOvSMQP2 z>N?}&c$Kb2cgTjnsB;GEPWuCsGFx^UAhJKII>khC8-%F{rD@L_Wb$cP{QLM+R_Y|p z;TF|iW@iq792de*k;E?1xuR-kB*i~lkO{9`ncuj%)xPALM`FG9L+tfUU>%G{87wax zGU??}70SDKuV=-Vl-qB#UXx4F(mX1!sZFQRo==PFTind^FvNX#c#>|+*X7gO_}!cG z_gst>r*8F9AtvH8V#h_du_DY2ohm)UpO|$wTQ=K8z3AnJyZW+eDOqK_T4M{<{6(iE zRV{Q-rR|4f4)D0mH7VgS{+b`WuT)fS2Ezo8WifwbS>>2*3GnkF3xpmN47zq#CK44vT*B za64?{GVbUPV4wof%sexw6CCDa_1ApE6|~u28=*g?u6lk{?C)S^P*3k}n!9QT*((*) zI8S@(dvHL7V5!FD-FC-ZO_NKfV4wPnE;+@AKjoJCvEs3byd|wvwI4#R<{7yX#+gxGQBNRtyw`8)(}%_ z7jp!C2eXzF3k%9*E#Q1Nt2I^oHE~wbMN=eV)m9>h;Uv`^B|s*xfIozK>$1ys!Og zv$y24kGVV6LagI45uwPlZc>g z4{;Hq`Hi3Z1l;uyrn9$f@{@1=3`aUdW!Tgtn@N${qC>r4Wl&fY-r`QW`EW!feN+S8 z7TtvdE_Y-A&FOjh`&&Nv!=~U|NgFOAcU2vBHnn~d=4v^uZMGXdlRBclfxzoR8^69_0K~b9yxO;~Yojy>jqZ+;j87 zcfc;SMYW-n`?2PC)eoIX7J>NUDP`hI6a# zsh8R*S>(`h>a%*>b16RFJ+Qc^c6zW%*(>)!=_R4`62U=S{+p0;hHxPq#0cH_Z{XZo z>p{F-*X+UYbk4=TDxBA_;+OcZ`r${{st+c}!I@*tO-}0>*=t`k=cu_g)XS9k>&f0Y z?HhU@r<&;Sq))$z6W@&COJ)BOYNO{wrY5mFgO};SpF{bpRm8W1y3?Ir;kg{*R@lM3 zV7GHwv{lEyDW=VIHeaN*^@r21`&;+MI&nID6lv{*4THE!Q)NFDlYVeNz{fJtJ-+)c zndEHr7{<(uIWh5yQl2Ap@UFyEkbt;p;)wcgQ+w0ts(3SF20mHfh!`fROI>Y&us${1`9&o`FydT_jGoa7hV=6ruEcki&zaz*BG3!jg!mI13!R8N?g z`Y!Llk8r>hdEmL|96P)=ypzQqTS}Q6>c0frzi16Aw@F>OBbW{3b3m4vKL3m5)Co^DR@Ajd#MXX>cW2%}ZSxO_?b-ywr#j;Chp)ptkZ0=}sV_~i29$r$fx zyAHWeKD5C8% zSFwo66ET|2V|M7D_DKOdbi63MR28=`7~{sY_UhkVbjjXyms07SL91Ym%%S%~)zoo& z_;LGigukmd?j2e4IgxM<*TGmg<)3K9=)>lj-VD7#3H}>9_J-cJ&(rz)Td3!cawBix z1IjEOn0lfbCvO&*rny%=r(wGryKG{M!%4= z9+j(0>f${p0!E##_d?mjZ)318M84yZs3p6ewq6fet8UnifwD&1;6}8r$@+8EeN%80 zCm_OSsTON|{)pL!o3OB(&CbkbUyq|*zfY5U0*Cy)%zLM44;@U7t!*C8Kn|q)P2b!u z=08ubkA}y)2YMkDwww6XTdi6UKQj_KDL~8YArjo}W`@H$m*(T+QoWl~p@aRhRSDSg z7n34#s$Y6S2y25fSo=bdWJ|lGpt|i56+m-+-#2mJDPHX{pC0Qsk5hp}eD?^|$MML+ z(d;l#KHBAB*(&aNzrw9#k4={AW<{^7^FP5ox1wcE^w}Z)_i$QEY~ZT!+k8*oITibO z5kH7MV7*F;UMn%jH&p)b$?#7__UYNe_F%0>lMI-A&FQ=U`>1%;%ZJJ35$CF>BJ*wCE!Dwe5|9_(&2j^nju(z+o ze~GCS3A3+_tjj!&K^S?^2`X7JVei6TNqsHsjo+cOoU#ire!kUU>m0XJ3WSV@mLG=cSYp5(&nh#%Ki8r1@pB1_6#=Z5M*#Q z+*_Tv37*;~<_^T@JPgV8a8tkxjBN*wyd`>i9?^%Qz{U#EGV{WVjiR1O2S(fz#jor$;kN$SvK zew1Htn97$K7CIYE@s4Lj`-T3k=3?xwI_?_#PQ)GzOBIWh2~YQiTe};euzzFJN-vu% zmS0_cR1_$Kd#NRIWi_WL6}^hfQdwgCaoiWEaL?LZXGGkF>V;-@=L(LcKSMiAat@rw zMYNm~GTR^?*Mk(uV)0gZyMHjXk?8%AE`0R=Va+=0=5MDqensrtha;bbYuwFR zZxivqGKVp5Fp1Kf>VJuc+i~y@q`z%YmtXOwD)4eV3+%MDd)dQuvRHWSZT%k@vp=#NACKsD}F)Ny$0nxi2`G$MpWbAFZY9=U=^l z?{krF_RS^LSUYqMt-w!Da?4V2lSg%`;-i0nzPi|9I_ug_e8t< z6Sw6(&6C`YL+l#w8 zj=HYtqHz8hQ78^O#km5W5W~j$<#DKWshN*kM3Tm)RqwDv7jxZoS6dAU9aGP?_q+Gu z>Sl9tyzZCZkGq%-OL2AJNo&!!W1Jj4!egPJ+|XYkb;?b3N_{(Y8YLrP@?1OG*KJN^ zgyuERxtJ*mZNrq`79=A@Ii-4WKzg_Q)G7aBDY&s4EK`YoR1sJApgs0&tc9~tRFC8) z_3Rjkw;_MnDoCba*klUtYPCqx)^m@A;NH+Je-nFA$}Q75Rl{{~T?OTf)38Yq>T(kr zZBG-5x2T0b5zU~2Xp9Q-YwT+?5}%M?ACWl@iJu$2tsYdX*0}gP z!xbTe-;y_zqwyYhg`d`;e>yxC3fswJo1f>gIOO>fZF)QIEIbzTk(sw_DyC{PKi@ueT|RYLar#RIj-Rj9@CzePV|DB3bSUYKO?EOL!i#1N zcMZR3kSc1_{{ zmPOjAD9b>-*)d#~;fsE7Te=7_zGb;%UZ z$m8_9%BnnE^F_2K<)ylNnkqn%-MIb96l%n$x}PHO<_(&!n^x8P+GhbszDZM7|7p z5@y>(d-H}|4Zon4dk)X`aB|9xmH*cKuX1uk=$GK047X-^J=1{T(#3_6i_QbI~#+&02@g<^LFn`yg`(?2?6+FE(rjl-kuz<0t&sk5ge zyP>mndT(>$;aBS8`bu9CztV!Z>#=RK}XV|Bf@1^U#r7Y4#Ph&=zta|htOk^`EO%}Ona(b8OIZF0x@xh7W z8S-Y>oS}BctNw3!_YW0KT!h8Hr*LM7-fMC~&hSn3%4PS`-IDf!o{hC>D?+pFn2*(Y z_p0-b@y&i4WW_l>A$ym?Cl8KIa9_m9Xk0~KEt(-RLC0P)bRoQ(Uhyy7KQ3574K5LX zPTg=%VqJWF>=wN#HFy}C)AZZvnCowschT>?A(X>S1AUTOXa7LK3lZ890qT932gd3XfH_5L&5q<=^Nklu)lB)+-O^H~o zCL1U+<$$mLik0>22U3fAaDMKLnihd;ZWbM?hpRl6aVXxYzuB3~WRTf(q`IQobG%`< zLjJ|$ZA`iPgohi6$&+OMZ!mNxX&$fOo8~&Hd11UXf9aKIIeOI_ zI)%r^63+Q~TGxSKJU2oEcSiO0@1aO>zkUt%e;&>48NG`|@J$bxR`Y)(-3i!@W!FCN zz3+PudJ&oDj44BjB4sAZEK`P%u@Z?4WhfalB}$0MkW6JNsR&V~R8k?SL<1@cQS9gY z?dLljz2EUaj{ko4zOVbb);iaDo@-qt%=CQ;&$lR6A6|M+&M(eO*f9PZRd|XH<;V4l ze4u{sLE$W?LVOw0nH=4NZ~8T86K>++>>is6V>S{ECsE3FVDp>f_)5ec7u&uM(jCIH zb?r^nW4#s+y+MEQN1RI2;k;*cD_+LJ?4e*Zfjtfx!w6?dw>GswZzdQ#;e+hJZ%3S$X7{5a6**WPZ@71KTM)akHc%Mv|ksh;x6h)It1xmr_=t;Xx`vW+|?|ppxtcV{@YIN zWwmkhFq;TF*b458_Tg|Wi8&o+^-2W~2j2(PMCAfsf6ps_wK^_A7ogt6`|@zKyS-vR^+y zHfy3C7xc3n+?#`rD*83if&7B! zocezwMWXHGsASOJ-5MRmz4Tm#*Y$4Q;hUS;LFqm8im3!eV6rJ;`S34mbrZ#TWwgHR z+!XimyxIOYIQ!?};E&B0>L+THw(hOPtO3^GDzEH#9mH82c%@!SH{gS$9vqf_{ zNxTERsXuyxRpIq`;8$b6h+CC-h;H=#?>o~KXmO*Q-(4ceow(o`Vn_q4cau343(QyR z#NTjZIES04ZERcYf7Y$B-8;#2sk}U*Yhzuk;GnQNRQsrWx6^aq!t3yreuHed^pSR9 z3wx*_X0))UeO(`I7GA@~cK-zq>#@H764csWr^&PS|BC1U&wm|OIg0t~BY))yI*B3e zy}>$}EOvT2(hPO$D7EUBp1v=y$9Lo37x5$|@zGVolg@uVnR6ztAvdH}NE~{IYM#R2FAwsXo^drCY6XA9 zEw>VdyYgiJt?zQ89eiAb&Jk{twZGw+d(68}pMerOhGs;+;Z>c6fqN;F$KMpYstci! z=v%`Ier88i!f`wqW~Bji3Qqd}-^uCAqf@lBNLD-Z6gCQm!fublC1vcvOWr^|`=_^6 z_{;m~M`s!v-U_7-*8%wdI$0k5C#Sdv%bQubl7{e*&cz$enQIYS#SvD|(@$}V8pIF8 zmQpW{dbaX9Yr6#JtX@<8%j^95!v3|g8+XZn6X`Y&%Dn9%r<~kW{qbrKi6Wu?i3YK6 z!x2P}Ags%Pg zpBtRuuEBq@&P1^@ujfzlEOfJj|HNOeRmZ-FJDsJ5Dk%oc;gy($bI2b*YyHb`%-+NU z`V7>y+o|o&(O2HyxnFJbar7FV)wuWbyI;Rr2I$D$yg}u@${wuAaq+0W&9yS{HzLKQ z=o`*lA@f;|MUK#9Yl}Fh4maB2U;nfQeX%v8;pqcDf7x5g5&UJk zNl}V=N)G-ZQb07=jH5b%sXDi2c!F&VZ>=Pzh@AOwjI|KWj;1jg3Yj~vYvi}!2KhA~<8+vPkRM9ifTP zd)*auSA{(7yx;CK{WJH^3M^Z@_-THdWAbk$@pm#8?s~ERlBq@sIrLt8;cdM69XvB5 z?A|86zofG_5O#Rgzo%iascxnk71q;9Ka4i>X0&ot-wapVYVoTvReUGzr?M>8-fgvy zVP#v``+dEEed_D9PwHDP;_Y_NwqOXa`cAmxXW8Q&ocp;*d+xH+)_)@I{aL5?tyt39 zeWb46k4xD_x9F)_e%9`*9?l4=*gd?y-0lk_4`OoOwFXaORvXFTdBS0s#$mGmbX-by z%+C)HST7OeH~arL`Fk()^LF$BZ!W7@k3Un@zrvVJ#DdR)pyq}tv#mZCIcC$QZo=Ut zsmu+m-bgbRH;SHL@;iMFZDxyZF;8d;-^({J_Y2WVoEX*BGdII;-$8#PXwBDR9INU2 zn#Z+0HTI|cS=#e=FyE~e^f(i%@dz*Ia#M*K=udoF^qxv1{|53|3i}n;$$a!CA@;3j>avWACeD(~QbsbKWPWJyW zHR6MGra92_9Orh2y5lw9{{iIx2n4kR!E7 zhkN{8DFr}Z*)+L{SP`V8C$8VW<&fgEbnY?wK1G_`<>n8dVvQ(j-#Qz?oRAPe%i*o$RCKj zy}0bU1bPtQj*+zIW%1mZ+Ta8Va*@PY(fc=b&v89H=YqbFTT8$F1I$|wb<=3v<5PD2 zTlj+FYLq6J^{UqVW4y%cwCmsH?|)U$r{KE0yaIngo7we4Ju_PE!TyiXr;q`Zh5ILMQ-TF&{`s(<0l?dSb&=eG}_KCghe-lM_< z{6nA7V0K}A@8PZ-q}QOMn0*`H*4b!p@p_ACV7-0+T>4;c2)sb>G-vE#?twGVJs z?icY6$QQeGVoeSLYF|#QZx?^zW4V1uoeA$`>SEa*p66dJlY)`iX-j38xvn~ z0$s%dej4@QTO9f4kutDP`cCFf>W%4q>n~EUs&bxpx8Hsg^>gYu zOi$Fkz}Fd}5Cj}lbt8rK_g3YnJ>tBb=aaai)1eqfr5*oM8E>qO-t(fk$j7jO&0^n& zEyK@)b}F69oPskw^&qpbI{Eysk!RHm4~y1g#f$Yg{tez;1^Ps7=jB7l`vcyT)#06L zy*xo580&qJrY+}NJA39RZ{`8H@-&vef(p5^2wNOmK8erb4!^#edTkKSy1z+O#e)e@ z#+$m>ZlIR_O`jO<-IW(F3kN@X`qTKgR=z!tU*DI{q-5eKmG*ypYw_4(-h-OKN*HGy zZlaC8>Ib=)c2Lu&(hb+b3hN=|OSp+&C={)%{9Wb^EQgo=RImLe*8QZ`*l6c`L)Y!4 zgS`ch>mD5oFGTM(!>ztK^iAOWDclRA^s>zqEhZpnX?|v!|a-Jx4CKAz zJPZeUG(#9IX0`Y7pbzxvdZNv4c_U~11+`|nM`t*1(K37Q2QhYr9dJsf7>sWl9{g;U zbPUQX0vnysmDN9U8f>M+VSn#SNIMp*CsUP^XIp#vkFERA$V<9>N?^#%FR?rmJ^fg9YA-&~l`zgs=%OPPb4BJP^)F$@ zKRx|L81^chu~UVR^6RI+nqHoSVOc{^l3Hid$M>?d$vYuKHbmJ5EaCm2IMXZ`Uo8R~ME)V$JSf}rGIK8&j%j@$h7#R0N<{X1Ew8&MIs=E^Z!C5!ZuJdsjT=479sR?UA z__HY-Y&UYrkfkIpvz;S)99yE=Ziy21Ae?|!!Z_lvbG5TES^)4pLqF}k2a`p?tv z(7Q0l)8C5g_&ItPoYK+!yU{SxE1tfWc)ikZC{H155WfiHZdYaRa&kZNwtlwfM~OVk zV2rHt?yFeww2S|WnEQ9^DSNM+nD-(tOVz{%C?%~LeUcfs3YcJ7Ec%6g+flX}YZjRs zIpx}CcyRW3`m1g|2}QhDO&(fc{i2CQ_Rek?{arQoi$OJ?FRKG$vbfQ~FL)cu7;Jjq zqgek}bwHfsL(FU6Etjvhh+UOAmzv5~HDl{_uDlGP?|^W>&+Mt2AGr!64v}w0(f~S$ z_zPn-X*Xr9+!{>!R2gS4to*h6uh+r}lYCeE3J6(QUvnQuOanDx4Ix6r%)15bB_OYSg! z=p(iLyXwL(Wr_~Iy{|Wy6-vqyj0pZUL$9WNKSacMjCwmBTl^x-YEezZ)XCV9bcBJ<7FF4ZAi{ZBSdbf8N=tMVELw{-f&tblBCmw+%j_AC-%~ z1LHg<=YK-qy@j9YuHbF%*S~3wm~h{{gZ`E!`GdF>x_jeaPSWjS*5hVM^vldQBO$~` z#f}d#WX(*AX)R_h=T}M3C`&>)dwD@OyBn-lVh4_82Xs9w`~olZ3h&xG_FW?yZ5^w( zS07bsZ8DLM`LVBg@# z`T@G0?#Z`^xi=-Ys;fWq>1kmZRdtdc5_o?lwQ4wtmUQA) zqD9)l(V5cyZ2TYDdKXq{otkzoCgmmbo)d2J+dwnCPIY+5Y`Hs3AsiPr6mwqJ7dpU` z&#-%IS-G0=l~CdYe(xSQ&8o2VKu9Ou1N|TWNf%h>LE8STAba=*mAe$zO)*u$3{TL? z^uj+UQ@=!Iw44ig4KGJVtgm<1$hu9SXJx2V zF4#9;;G~{WkKY`9O}Ek?yby=2U2~E5SMDr-7g|_~6PxY(pHdOuEMH!B0-o^g6S+Cs z;FN1}z~tkGE5W7zE+_G4w6GC&-iw%Zsw_@pXzT`W{#rdi&%()#On4a0N%9O%ucb5F zD)Z@w>a85hA=-|gWRF<~pW^oOdUsEVIa_4g=hcOc_#!H*2|uS^zirnp^y{bLV;@tI zrn}wNa9+R0;d+h_`QON*XlJU*>*}&VHE~)eP8#FZQ5Q|eNeztsXxDu}$=Zs++bLGo z)<=}^_8XfxT?SICAZ9$Py7&pgJ`=AG;XR@zzLTeSfXe0uneJa|z|Xj_GuVK+D&ore z)@JE4yp_6=6C-@TzWX7u>($_H>g3*@VBeH<=32)WV>Akd&tamQQG(iYyr*vq$t7lO zRv)-S1}px0P?Rg=X>9tk`0a@&<%`KOeKl{MzM`rt2&1L%I%;P+?^|4-Y3EYH?w=O9 zORnqAA2CKx%JJCa>hWgs+?#Mp!^~N;8)Lmeq4^D%bGFkjQi(>LyJ)+O28n;(l$ zJEzZ}ips3ET$RhpJq)F$pzT)b;RZC&9PV`c0sHcv4#l^udtGxyUN>{-8Ef}H@4b^< zGb`4H22@BN&;akfq-Zw*o6}3IZj1@78;p}@p5$KI=(msLA^Omy--$kdj*IdsE5FO^ zo?M!}sDrMh{!NgRICt#DM zW}bd6>fJ3~RMVmHad;`HAN1oOugu-I%9Fp$rS}mxP+Qe$Uw)kTF-du_$PeIQYC#w) z{DP)XLPKub(sa1Z@J%xwh5WkqNAc4b zJklKBUNmeb(q5JywsS(}bkp#C9Hf=h7q>*0LYUd900U!x#k%0%(i2@u^QL@76S~fM z&*Pq+9O2zouB4SK#Rb}pTHb&s=f8|ak$QYcYgAU9)TEQ?cj*lOhGgCCiIwBjWo1m7 zID>&%VKVqd{a=ghygh06EFQjRw2D}C&WE~sqqxTlCUH(O+oT6r1vxes=l@92vJ(btC3G?w1K$<0{9jNtI*$)^k{MfZ zvy)nKkJZAVkDvg2@5#HucGDo+0*S^@LO;`)uc*q-@Y`+m-WoVB=XkJw_sw}sU5fMd z9N^$T8Cl2mc0*V`_P#9fmss(py9s7FZCB~A*Ycjd4Ob45-K$3DKy}B=k{M~5&2*DG zn&A_kq4}Q(_Q17y@ugW3kBT*e)O95iFX1uz;E&GI*mmMTp3j`B{2BM{N?m_ZRqbcG zYk!Ka$GsMe?bTWPuPC_+f3?Gj&5~GccOe_x}-hfGYlIp!N zd_abqsSoTn?|rzcrnK&!2Jwxi;jFb|yX#3h!jJzBA8r9otoxkTEGnaJx8sh75 zcVnM{4{lD((@QWDk5OAa@D@z>lH7X9=l9ByA#A&bf9(+7w4r{-M_}@eJY;><1nsTd zaU5zn?wCU|%wX@WSahIHgir0Y8NNNq{q_!b(2H>CPMmig8D z!Bm>_jbVMU;&i))9`MH%GwNy2g7jHO4ugoG*Zm3Zx9dOSJ#PD!H|4ksi7*PQamO zbl*)e(PpgKZY41HW$>u?2DNnmjf4!++*@-VovHZZ6xAnpe5m(U1FrdwIyXU_x~OmD zWovgBs_G0GJji3Rj4SEa@VU&ctoz014Jwk!IGCO4*u@ZKNl|h%-mU+Oy4X2~ z-KO?hqyoOXb5KNXZG|mQ&t&b6zj;%fPw$$6^uF}3ze*?Rul~P>dwd*c)JWO!4%xk$ zw?15#(Yf&5*nMVVmw{?}+p*~=yPMv(KUR)Q^di zr-OCS^ft2#zETHvvuhg5j)$P(pE;aPhIfbWa#{4!gVNlupU4~BScG57O}&*jt`hET zlUq1S`}VSS%Sx5ZGPpEn;sLnC{TTeYM{z~-ytlJ3!6rAiviQyZfV`z(hGzO9gbj{HHrC zU4`ZoC8yD8r&+mi>WDnSqw2p)zPY~$U0aTc;T=mvKaFlzf#%2jw8S1kqSOqgDuE*`C9l9Ol)%4we??bY~>H5XZPWV-XKd#%M zhto1wlo^gGKdir_5JWN|mS6YK$#?^7VL$Kfe|~$ec-Po@TW?qfA%**S}*rkbc70OjEz)3)=*}t$A^u9bupM@fVg^wWlKg zqf*|*(YIE2TVYz-*>= z6HbnV>+SSY@rfpeeqxUMb9m~tVoVR;9fZ~O4eYdAp0Zc|$NiWT<2LafUXFYneK{CL zl?l19s#~vbDN4WVZ>yg;ZPv*<<~DE|VhJlmhv))&Q(wyUGUGimYgzH}A-_C7Kg<|8 z_4#-S=<}#&-w2cZj3wPkQF_`W^-DYiFNuzQ^#W$iIN@gD`yis8_@1-TZTR(0Dwp&e zqWSh(f#hFKT2ims`_6bhJvIHKABhj&Iv+#j!{^LxD5iE#d-!_5{@VLzJHh1 zV~GawS8+VK<0r8dQQDOP_4ci zGu?rQ;GF3L!+2G@s?*lE*)=_7btlL0&d7L9&?1>{yQe+AJ5f6MRI;a;{ij66{oD*a zF{|T(%~-j6Gv_~+aYI%$NTQ33)($s)HTts^e;AJV2&a7}abvPsvVQVBc6)35xX4r} z>}t~Wm!`42>uqJE3hT}JKsV!be$TZge7Baz569+X81^K7bHm;Vzu^hlaH!anB~~-M zC+Or|$IWf7Zff-T)XjEE8hO4LeS{?OSVk*&%ArPP@*a>yqDXAmeRT( zfFABMw=&_z@h;BS^>Aa&Xc=>xH-wAr6SJC3m3=ZfJ^6@<|8HOjs>bWb8izfDdeO)A znzb>BeV2d#q#8m`&8*l8it(hd7^l(_yJQj6bwje0exfz%^JV6Xl-KjxC1@TUu5aMJ zjIUD5Qg5aHObwI8zQL(H!mW2T{3y0>5POJTxl=UkYL8Sf z_kOGi^i$m2{j&QM@5gC$#z?fpBu(|6>)GA+de35$Pd~?}^Bsp+duOYn9^r@FZcs!P z>uFX*8<=gss{F%naO_#R>$^mGp8HYBGRdRj*?Zpet+8bIkJ@U0{*cPv)F0l{|8yqK zca!IuNFNy}Jr8ABY)rf!{xheEaNXQe@RMD>TWwe#_@LPPKQQZ`^V&~?wD!cm1|MTSTB<<@i+%q~=1+bDnMM;` zaO7J!s4ieRJDA4WKn)p+!2R?HH;e3w4AIqcA$Y|E_eW60tnHyE&*YuqmluO#eswlcXarUCp7@y9%Nz)~ zgGSLuFipiXmZm0)yOZ3iz9eI?wZ1pFCv3oZ@=v^{KJGh{cZ(udMa~c0j?+JuzS-a? z$Jzju^Jq~sr`dU}taLHzKrekA--`pCWA~aL)>+iMK6!uUndoTZPb7Y`C{jh${t|Yv zg_?Q0I~76|pc7i%_n~t< zN?%3={ou1B&%xo)hw? zO)95sSq)>bH~LX^)wy%T%B#x_^d<0j?PE z*(Y?3y`lcd6MSWQ`}9~hoa}hWAdBw~k}I9Y7vrDC&Z&KJn{(VABU;a#;Scq=T}>5L z1(j3nkESEF=C!?syLuP}r?Z${$1Yi{f_P5tbOc9}HMq&Ahh_Y23hAS%IjNs?J9@RmS2~- zMfz3QA|w8y`&o*LA?X_|Cd2;O&EOcO>pm6z#q5uH8Kp9QaI4HuVptnpg%3v>aaf%Q zj+$ZqWIP{MDU1D8+a8$@ht8!u{?GjaP2{-g)~luI9Y;j3W2vfoF#`yAE*`xwcj$*= z-{trM87@qIpZH34zut-+;?67+-UP|j!UbMV%}70#n(Ow_`f~FSvl)tso5#h?F7cR3 zr7k*A_oz71cUI0aUEvN0^0a5Z8+JRO-{*6cYJIMv z(&E>r{Lm$X;dqtr#ejpU7v#9b-t!l5SYwX91on7E>^Z!`(}|D7zjNxm@#@4E<3G7+ zZjQ;!--&*8pqauMYkhKc>QJhl3VXeX-wErVJ$B5Bm5><|$#Tgs`L`@tQm^kJUf|o^ zrPC++iK#r#S+U)zENYG!c#+;*0s)owWg2Y_cqDxn&flWgpLmt@tq9rdk{Ns{IfCNR zmLf?5vGXVd*v7q2b!CfRqu;WUonV<1bqE&Km@gVXThG+slcLn(-TjW!jt1&=K}rqpmI! z<7BF&`8H?p8DE>Q(ALTLTE2LWr=ykqaol=;h7~EUHoan2>{_3`F1VGdp03cwsVwhM zBaVh!t@jFTVMf%-b_Mn^JQtReK@+tGu%@ z%%|OChDliNT#QiRoz{V{**BNPz0KzvD-KCjakes2Q5BxMO<~>yFUP|08Eo(Act;UCHHaw8fF1gPBiT zxjS%Ye{qgI7ao=;t3;oc-5-%PeoXzS(s)Xr@LQ3gJo6>EP=1Wvfdi>Ri#(OM3fHud z+sD(g+r*xr?97H|a_jLeU=s8myX3q{4J9H!MmCzT+fBX-IGk_K+~4U;x6PB^n^=Xn zE3P}RG2Uy2+G-qr{6y+ps=7Rx8?G3{fpa<7synT#zNkTV*}st7E>+=QIwF75H#F2O zc6ow(bav%8(WjpXUe_C6WMcZCk&p3SRrx=Dj17lM+NcLF@*18OliDW^QWyGRp3Yz^ z?=soV{ZMAL-{>}m2kgsg7gLraD^AH`6UF2U!eJS3LT&kO0R{M9%KH=*<#;>fKDGEb z(^IBJ?r{^tN!`tT)Cr3r*VUr$QM$lK80xrr90zn)boaKtfqX~tX}yBCY40!07X{Zu z22*4H2wuYv=Tcd7Ji@V(RVNRXAc z@*%E+E%BPzo~-cpAy~g+VlmX*IX0V9szNXXPk1M`Ylst4%P&vgNbp}|r96F`%4`bu zVJ1KBM7r~>>6{N{eGFH+^rm20oUDHePX%+J(qx8h8m zkax0(W!q_pJX7&)6#J9#MdN5+nEN5f_f98kfO#|ZIjzP-AAt5h4|}PEUlB=LQ9v5cT0X51IUWe7@Mm2V}{>E#zhEEE5?pNr4v)p|VH685(>_JjT^Fev5qBEJ7?l}TS z_mr4WB%EvBWKKEnL+f2I<3g&q)BQenb!}tKt^-^IJjw_EvZUZQ3EL%BXgYwk%eeTO4#tT;MO z?7kUiG?UUlOI>%&$!vpLT!0VG#~tueCKo@L`nJ`YO|;@IxWBik~df^+2|9QNvXVk*K(>52&SZB@2{>-f#qoJ~6rrCDKJtSnk z^c20joUWH?AG564(Rf>x^f6q|)7$~4A;SG4VLOqqC){5cI~R+-AAP}^<&Aw4o5%ZG zg&$@rB-zG#52BMc)vt4!H{f-wVn^KGL$Y3V`SvZk(`)95l;8oK8+M>nj>6Xr5EYh- zOZBnAGq4^#;hR5#vQF15F}#O*^jq=&I@Q*Xrl^>Ws~&y`hW?61`<`F^m|AO`?@rk{ zB~>gZalwzfbK@ZO;2=)1nn>IfAM2(VD(UY~%Hv@TJ@gZ~UvKcH+Nw7$J1v!I4@s_s zqss_=5o$@PfFW!O?f! zpU_AA{w4KastV;NgD2rSy^0%g*mrU)_jEGri(^y0@m8EPD^*&fbs1cs&kl;dBkzrn zZ7-$1OXYXUHkto&y*`(@+}gM3kQg1$kNKDc;k+Sx?Bo4AuE%nTxmm5bDgNQUdfjC6 zyWz7YW-iR7j=W!e_Zbnm9lX%pjS(#%oKK1{70J;v5Zf+B6jTqce8Avhwp(A(t7y$%$rxc>Zx0#pQ!_Yi9?rpX7%O{9P4aCq#XeC8`wq5)i zSa?eKH+`$Gr@k?Bp6O%a%KK`Er@8g^;^vx#|BJmI>u#z?1$k$Y4A9$NNzb0yNmuNv z#{8Vmu7lcRjBoAWyBC@IHJGlrI{GZ7Bgz^6Ae8fvOuy5A<4o@QF{9xz#9g$}mG_~-JNqQ|`PdK|Kq^?;w%!97O*TL5W9 z%tz`iZ$0mHl;ARLr+h7*;F5cue_?d&pnaB}hL@sq{ETPn zi~D)Sq>45$W!fS618(n;SXt_A;Y1_(ehA*W5@xT1F5JUd@A#n zj~qDnTsoK@3v%*V_2X<^VG2u0du)>TeIIo8GNjRl2LBa@T`#`M#x%h-&c-+uW*L5; z4*FLYnJ97)V}GA%|Bdaim(^V({r(R*oxYAWip`{PkZ)p-PagB!4|5r%?_0RQr_)&ucq)EWH0zUK2WdgFmY?pUzS_-~|Zl4)-0N zfbKrwA2yoTkdL}2yovmIG7v7HmU+DLem>?634~w z7WVjbp2DKK@yVu8%3kViQVvK*q!%e-b##2(>Y2x5Lb~F-s$qgV z>XUlQY=p18uX1_|4?1BroUII6>?87hUG>K=L4(YGlMhYZ|JS_7@9dPCc6c!ybZ@<} zU-D@b(+`;!PU+>pq2k%MK7ENNYo@$eQD@mD&fT1L%7?W6v|C`T{?1wYMGmNbO2yu` zW>;w5i`0tC?Us5N$_%>b9}w0f`VI2n1`5&=-@>{dcD|m240otCOPP^bkCU!ed?CD$ zTMW-*Ho_)K-fyuxp}W1oHNoR*h?0@nc!6B-S#y($ig4dg(P>lAJVJK=+9h$f2f(BqxMg-TiWx_K8@{5-$q(qe^q}q-y_iQYyLtD zQRNAasvGRm@5S+9RIT>vh_}42XFU5ANF^5CsD3FHexQCSq>9LzXuxy4#;TP_Y&VT- zxJaCzlDCRuxH6vdc9^mv#4y=xzUTRl|BbGKHE!a%eL{~)O(%1iv)xI?e<^<6Y>lRmDf=Q}x}$<#7vsw4EDdt^{vFD!<~dj##yBuu5O&d zYp5M3v2NGN*?(~B-Y0LimqBjf>sTNU+$MW1#*jXs#y%Nj3!aF+p$_=R`RDP2T{Dc@t?*eiS;>8a9OBs|8iI+-11fiGaY?O5UR zT-F=Klr9wC?l_4Ins2t`Qc>{>pPs>;ze;bwZPqM+r(65wgG^W|t7dEBcfaBW);KG5k$0RBH@QEP2kG z{uDN>jCV`Ki#&~#JiY_#1y(%HU; zPE*V`kE8L#>8?5$%9^IJrTKrfpF#b;o;ai?%sEyv$yynrrR$;q6f9* zX_e{*Jz&GQ=Jtq!l_Bb;CR_F4D-X?!zwB)NiB}%T`?b#ut*ps0vd>69nC1GV`|9|7 zmD*B`iuk16{gAV{RrYyGN5yje2vcN_oLJ>w)jk9L@=u)2KA4<3W=hY7Dl2gdW{>ul zt-Es;youH5!WsQjwc%>s(Q0zVjE;P*UYtkl z0<)@Cmr|z=MBc=a&ctYB$EI{kyhnL0ko*<1`vin^yUJ%OZ|r4v?(NLH$?VV6LafB8 z)O7sn$M}%CSol1ukA8fD9lYni6M1l~`I4hld`07TyQg!j=g{R_)Z)o{SN7rX(`Vzj3imix_-m?M^UO~_BA(nH{u93K z-ji}rcu6|qy|jl9z3CX+_ihn|bJj?svfp`Cs7*zyk(N9l1x(`lBepO8W};DYb#ia= zNOBw93|Z(b2vxcrk1WBi!UUt0u=Km%AH2 zOY#+&r=&>Ko*$u=&wk}Q|E9Gp$D<5$EAlevKc`5t1fy`5?!?hp!mKp?pH$byGySA> zGrK*`!~QuUcV{f4wG8*)XQ@YckpGMnbn`_%u9vxX*KTK`2R{0W7nJq^a7Q2Wj8}nyx8Tbb=%wvpl55xGlH~Yg>*OWzAd$H0&atoUj@=^2Os=ZAl7qO}gcAcU@$0lGck` z55~qh!6~Zvv&q+z)BNt$w6tivoSo4is2}Y`3;TnT_H^oTJFBWyZpDXoI{F1)e|wd} z1q#bPry(yr{uAu=MygVpH}C5tOvC`(nlZ;c@-f-Q$H&tO*12b*bo5#0x0&<1kW%{=#^wv&zwS8T3Ur++R(U2r(F=a@8&>O# znz9w7-U4gU+x+PRG?D*kw2M-EQ#r(tT^Uo%N5~5e{K?_FKHdpq-k8f|L^4luF8@Jw zHxJCyIWz$eIt82fq&GB1)VS8)sSx=jvLHGp7#=pmWNyG4JOcIofiYPCy*)>Z>fsG7 z3YK7M{uOb;jLlZ-LaGCtzCaZ_18dMPcDE@Ytwp)BiAu>FcH>OFCpYj!pEmXXI-J8x zTn~*ic6r(<6u4{Twd+-6HSl8B$Fjo6{V?t2JZaiNH3tvd$x6)>q0g%grciV4J*t#G>KWT=FCJD%v3oyQ;iRI@a`v~HAT5x89T+-yl~GBx?LeX z(K*fDc#*byr&X#&32!Vb{EqLw%pEz@O!X3B32|A>m>Z8CdtEHn3YGbmoD;;q8r`IcnDHz=`0NJ$wOFN=8QYy4K1KB?)0sDIqORE!@S9BeHf25Pq%#n3pPsqQ!w%*HTgj5 zXL`b9YTMz+_UPMAV0S8CJ}Y(D?>!|_Zg%c>(`36^tA*--^3mD4fS&h$TT{y#n*I0~ zE@-8xDqm6R9u?OcQ=Cq65Y44mmGQmT#B0ZzhqtSeSE_ra(J;lYLnJ3Xac$iLB87tjc<Ze0;-_k8%PI z)|-7hx4|p2CO^DUP*1I zxXL)Q8J2pDE95>k z`3!32e9nq_dWhS}DBF{zv-HZ+CQIQg1K`O^CS~Q-PdP|UeVh+`PDTy*xegV$L1a^8 zkBC(-oE^@`-4~P>qRHQ2v+~KGRcZXi@td6f>im+8`DZ?WeRHL5P1SXWaYfGmM3D%Pz?l}p7_2d~ymb=QY_OuaIf zU+HGG&YbwQ-tv5>Xc+8#2v_w@*pFZGD8JG5Dy(S`+3D1DneY)DLL0oxHQ}`;jEsR& zrkM15ZI(S*DqNGeCV!Sctldcw;J8@XjnnBBT+tKu$E4Ke)b*;;_2z^O;ou&tOQfk; zdS9wbi{USpU~Q`FJGMRgP*K)CFk(HcpHlG zg~YYc#t|I+-|?Ot)Z4`Ob1JObRF)N~W}dhSmsBx4*_V+FJ#b|(7yrcHPTZUPEm<^6 znB@oPJ1^Hz&P0XywXqxQ%ZKEZ1(4a-P|ilqga$DGI(=k~gC=1+9P;+~gQCU_oOJa# z(rUwm2|0KM&i<$9|Dr`Ak7S(VkJ=7P78m6|h57SANyWl1!qujd=($UNkUX7yK6#x_ z-;90OBhEe*e#|po&Rd>{wfH{uDc{ao3jI|5EcctayCSxby0XC2j!a%OUAa?oJU3g5 z_=7OVGuW{#(Rvi$DjDyl+N2&#jfaKj*_qEr%IRX-3pe~6TOk|PRvkSHvp>Q6-B!iW zh|6i6D7{@*L^5M)>ZVk-)N`q`JW_9DJQ?X9?Mcz9AOh@`4KF5|nnyhdVp)&1|3YU* z;aE(=_I_l|A+8)hwx|&f-}21m9_bPC4^NKQe7IBa^M~BFfe_gJfv@S4!G=b=@s6>HBW2 zScAp96Kd%u!gn&w!CY^wL-yF8IJt<9wJlhl^_16ciSOixaqd(3jWg?7^~NGGt2p1w zsZ>pw?Rdrr-9ratmnZPINnOa-XRh%He_^0^yp+4@F+1c-uGTBK@>V>H8)c?*sj|FT z1u^Caqpxz;H^VROh&K}_FT+|N;}rAI$7^ATPEja|^6N}8r@axB7MGuT+gmLnKS%aO z7jj(phWuk#np=|(iPOzs|0i*g>-jVr+asUg%X{buzQ%gDb|RuHC{9HyMzk0ISh|Tq>y`W=h ztB!&xe)%K}ZWb7?1pKhso4Q>T*d|9jk2lEXe!Tnnn>v`fafHr$zh0{iT)@BEn`>ap zU$IlYX>bF$4s$~g@6l>osg(-COoK$-0a&rTk$sUTVd-<6sco&-rg$-mrAz8ZD*2{fYm~u7-UZJ2Vzg5`l^Tjy>oOg%u_c zXM;aJg=Z_+UAH(HNmF_n@lgC3d?G7Wi!agN^`M$?0q4p@8u6#5lpHimZ?rjlWrG$v z^UmX3>(Rgl$}a<9wT$RyywvTnld8i@TyW2b)#Gue`P3~ps%PU+(*!Pv0`#+A<(3=7 zk&~%1etSMj)R<^(y=CjeC%vh6Fvh*Ccly5bf{Dj)zBl^b?dC=gb9ciXn5p49l%`>- zuQdVs7&WJ=u9HoWd>zc`c=_!-r{ylsp4Xc)6E{{kd;m(^@9vtV_T^Fh%ysIXI34Qd z=C`lPq-6AD zbQcw=sgCJs@ya-@eVjH|)m_u9_LKT&3uA|Nm@9G*G=Ic5X7%r9SaBu(@@nKe-LGB3 zT(RByNp_i&2RIM2>Jsrp}!vp9nzzgLg_CZ5AG z*6M$vbrG0rDJSpt_&!rN8)G2fjfT;Ob;B*yhxer3rjK+y>j#az&Rg1&Qo7Rwul)sQNMvpr?0rGV-AaG}N#DH}+QiHoy8JZmI&$^=CMqwcc}; z*j$Q6cIbFDRr^53v($`Xp8KK>^O|n2Ib&zfpqgEczsi+bp7Xhxj)47Q_Gtc~3=`XG znE~?;opUdhbd)+~xpVQDnK1o1$$rFYRTW2;(lcIHvzJVO!DY?yN#;*O=j%eXNR5SyjufJ^yjELLsOWHy{yaM^JOZZ82DGl zYF!MCf|_{GUjp z&@9L|vDTZ~<+BC3?oRm)S4{|>Yhuu4I!YHEkJ)fcH|fu*CDSaV&+0wZYxd*`-}cU4r{$$aR?FGo}J=N?eD<_zeSD zGBL$!pD{D#UabCc>gYkrQ4_N#+ETQu@Mk^_6$BLNnKb+m)+~YrY@6&QQ>}vCTE|<8 z_>=flwpp*K*n|Webt{&9HxIyjK3&ojfFq{841`tRP;1@}8RX(2ew6>MdweA4!(Q*| zv`G;&#DUXX)0*b^`W~hj&I4Q>XY`hLHQ%{vp1dy^CYQhkP3)3wGSv^!%F!`8i#q$=-{~m0 zlp11x&W4oB@{0c%ejJ;PA=_YY-HdO#LmV2e6TA-8xg|Vr5@0p=(w*dZYa@boS9cb6 zyF|h0dpO&!yvwhdkMlA1XPIcSmEWU12XQ^8Y8NFVmumMxapX>`{Wf2IdC?$ef_K=g`}y@b0Iyw(90={2c6X z_iRV=WcsVIPf|g0CXe%q6oERo(1h>NK|Yu7t*kj0=OCfi)KfpGElS|2S8>-VYVQV_y;c&B#y|d2r6zupM zh@@y@xNp8kwmBr*+^AG5=*!xFrm(K3>tZD#16o`n%T%r*T5Z~sm_Qgcf5FtOxYoJd7{*=D-vKG~uW z9M`~JD@cLQVvoInJ1%AN*vj~=R%^d^{gqyb4vC$n59PP`&FsM3$ z_f%9l5;JwYJjE@s!uOVnKBOaSDAm3qO}7yx`a8~=I5*N2Z5fKnSS+jpKETtXX{^k-VR;NHE>H<0D_#TDw`r2oDc&)QnKnrv-njLqBS@_xNm9JjMG^Y`SWH&iz6ib#{Icy+u4Z z4Ovuyo4ey>PG`JDKkw+a+-qaoWvuH&{*uXR7~TBziCYsdm@1l2hF>ZQ-VOz};ay&1 zUvE{DU2DGM&6!ii@|oeg!l^Xf3JUua7yS*~e-lh}%JlbsnAwZbr#O0s;@=Kh>4-PC ziHB;iDENYIhVOM!+zdD04$r(OiuFvK;{7@iYs|O&s%ezT=o7s4eN=Vj#gjgqOpWBb z7N+LB&og~LSB)t@V&H?gtR@h~Ic|#^68B;a7xBVg6BLd1i|p{Oe$gl1#)?(v8kpp5 zl~W&edvqY=u^eL3F1}F4}p00X&EZ;X1p>-zX zFhVq%3sa4^$2OUlR1O=}MZUYuFJH}Z-IX8crpTk-_1;X4@=7gxNuYZBv}tx@#8OZwPuwnuZq2u*c_oy6^o)EPQLJ^Gc(?iuK$3U22yJruPt zmQ66>Jykh>Qw^HK7c=o_X|8j$lNF<~l*B6MF^{sF{<}Tg!;7%HU&ikf56;(EeNA^jj*e^E%wO z@P0jsm0rTBcR>vO3ND(ix3q|U*!wva;=z}6?DkOAT8M15h!9I2#SzcvG91T+TbA1R zib;HboA2~AerUOz^=7IzEvuzicDwnTpWxD)K$0V!t%4ZO{P5r#yint5!q>$*`1Fxz zF|N@193~TR51nOzV;PfFhDBwqU&19koz+Frvrtv}K0E35$Cr7(&R}W=`U{hsPt&r+vi4N)Z8|vO(PsK6x?%y(q;k_} zw?GN|sg*gL%-1L_59=N|oamoiMZcSYtqGGmIVG2H>uuv>TF5Q;2UklYZldb`?;G4H zTiqgCCy3%M8^$)8I-0(*x0AKL4R`Py?(qea&>jlMn^wCXlixFAed?Z6?o@Gcp)~Gt z3>L8^cIrxa3YNSaA1el*r{e9CzY1|K7p28L&u3mJXr>3bE`R(z?r}|uhljB(W1`)# z@wx5p{_!}3aC7n{O6jBerbqME-xi<3gL{D{T@kKIcfwWCRl6mVf$T|hc|nJ17abrM z+?d(d#LV7w_|;-jL0!{7@V76-)Ep9nXXY)lbq)*U5N)h{EZ~++RdL4SL913r$E) z=bllrv0d6+!v@s@eFP7=^aJiiOB2~O7 zH77Ck4-dR_*PR|mT?a>%s8df{D)M;K0A^zN*6|xpt#983vihK#arMob8}nt zqWS#ez0LIG6}+$SgMvY8s?906vXrW2XvPmt#~~VI?x2Vj|B05++*y7%Q5pZ)DtUsk z_Bqw&eiil2VK4c5qJ28mJgVR2yTN?k%XlLva?8DeHU6*N_9h?GVoY^a9cinA9nmQN zRT=X_I^!@NTetV_&(!ad_~x3057c8G}_z+2oIA zd?M|rMi-)AVv8Q)8e5~%8f-E^aZLBZMApOv?E>oXjjL z^1{(I(WA86yRjd=p`#3XQtlQ|9|Jn5d4(V4e5W`{8<`{tQ?M{4VDZAj-% zhW~{>#hy`9f67Y`P5uIF%$Gk_n=4SnJcG1C_o^P%Ef}gn*x&Sozkf|fsUB=K;jgut z`eD2tkB9eM8>e_)_Nl^+`ist$8~pN{<-FH;ayF(0r@HFv{W^6oh3_QR=2i1xkA!P= z&2->et502g6b@b&e-g?l%BNQm>pYlaq+FyEb)ZtJ3MWKC4BeCTj77ARTAVd^!J$Kw zpVB3+&9XcBj-5Kr9O(vnTp!oj^;YyoIAb>kVz7u-14CE=R=69tXSO)*cy8=f(|8KP zCXeENW8(K&QK1uG&Ta^0v~P|;cF)+OZEz@uyy>^i@@XLB{t}kMHT9(%WyhYJP}dh$ z7ypCjDiqe{RQb?-u5&$gIj3_lWLC)xt%A{`(dj04{|FzA)vdWvt<*5toz_+=ImNfv zhwHvm=l$+xr`nNK-qTt8dm97~jZ?kG(o#y(2#%V}QVyCt1J~`$^xIvNxG(-X@axZ*FE@;+5wW$fHz`q5@W{~h`C{x)U! z1B}rTc_T;0Mc$si-uBB-c=q7i;FN4Vga6|unPCvES!+UxTYEE#vl6d0dEX_1!I~v9ma^mU1kAB8H`? z1N3BbIU~Vf82nF_+VJ=`3T1wgWQ^~xpjWe$Q@II>KI|>O4gIH?)EMR_Czn8OsBU$1 z9JkwH-@JpvXMvi24oAgQKJ6QM3+~~SIqSBe<2o5Gn8#3F4_#rH?wDSiy}DcT1!L^b z-J}7APoLL<$FwghJHaOGE^qr4#x>lLCy90tAfq8CbhfQ=RYi<+LAB}Y| zAz%xPawt&(?_5#NJYoVxZYtv``2A93q=<0VzHD!;ZnfWvMZS$3!CS8j#&c=+QfJIo zVg7-|xD^AOm&agX?8k68w(5P%&HEg%OP%Po8I8q)x>mm@p8qUu^cBo?6LYGv)9Krb zfYa@-9q~RgPc~Z6Msp0C@nkf^W85XvHgu|r;$C|346oKt_D}dp>}6GAd0PE+$Yuz| z?sunZEnoa2;kRxTn5&1cIZW8xn;wx_v-}nr2A8EPo-aj{o4luoRJJ>C8S5#!pI}4d zeAefK3Hayn9R0hj*MF&6c=z1yFuA0Mq7e4^dX?Ih_*Ob}b=A&Zn*DJ-VUfh^`b=Nt zG1{mbc{S!IJN|VF9RIx@kQ>~=l10bLIq3adtc+fQJ-kApxh~a{BgN3H@#$hwQC-vv zX^mGfO*dlPAAxYT=<|7k7JV*yOL(grUjB!RU4@_9BC6akiq_S~a8eJ&FYTG9lRCycujsFc#n6`ACEIp4$DTaIAgc0bd(`L9xR-1S26vs~uJ?q!v zoQ9<;r*_kIx578~=y_}u#$&T%RdF}Ht@U!aXs*@!%rqKvcX2lbR6PCMsW}WfI3Uk| zOVvG^@g^*qKUghul$R@C6;J-)H0q8u>S6ZAc9^g%<*t<&`Wo%Nv1v=o)ho-P@5gbP zCEXkxxQnlgeR3tX9=7^RpHMS;!M%K>-P|^RDE!sL%K5rPJ3%OQO&I7wGyEnsTR+%A zPL}SvFNWj3|50UDmhl#1GP>EHh2YqIvCcTYxAmMTaW7G{1 z975aVu4MKsSCadA0M6@??ci+w9+n8>T$vMaWwjxU3mDa`TvkKn`u^r)?bgB97MHPE z&*Xn1|3G{~ZS_`P8Sk#x!zR$J(~aDmHe3r&7k4^lXEG@NM80%724Y3Gi{C{&Z>i+V z$qmVk^wMjSA5b1k$6NC|%}^=6qZ6%5Mrr7MfKHz}{47_a`P~k5nK}}Y=T0W>ORh~8 z&(f4G{U01W-5oZSL^q+3Ps0g-ok2H)k7JQ-i9lJ94qG~sgm zf@`UYc@lkNRYP~+i3qoIhu=wm%aYL_25+u+v7|nP!SKzydi`s>FeNvG# zr361st7sx}vl$qJoQ(@tGp^R44QOh!ph`3Cs=t|=wFCcd4(R_ojP4ECo9bf14m+hIW_6sWzX%Dp#A83K zyLNbHAKfpyQ*Yr9-xYb7Yw+o-n4^>5qb!}LGwjhBxPrkEBp_imPs$6TBM zr#W!%OqEaFM-#)^*=NnwnOR|sb#~c#K7^B;CP8w8?DvE|quIRir*(X74i*Mg&9`Z6 z>iKPA+E-3>N}p$iaH+Xml{o6o#FxrGws;q~uCQXN6kCR)tCwqu2CvduBA)JUC@)qpAQlct#0R3o}h+Q<{(^(CyYRWP4U><6Nf~F|6#oj z(3z+6^!*&%Vm`u5uAWzLW-+(>9yse($YB_br=VXvH`a?M|9Qy294}!kZN1*yuk?Dp zii6olXD+I?zKElH0ix@u?$~1*>Lo6y)f_S{W7nOO+`7R|^8(*OA({*uHj#4=h6TLs zneNvenCyOPO)i#>%uTah^DtGRnM)Wys-5Q@C17EGdGX9mJPCY}x z-0E$8r<0+Yj^a1v-Eoxt`B2J4ow@aOnI6c{eDB~p{X*|v9y8*%>c4n0x;8plBz_=P zN(B4PDb0-a{|l3JSZ{M)Ubzn_HN|*~D(dsOBzI)t4sJrVc!sJrmAk$Vy(P6NFzTuO zs?NNqC+wtqI#~>#429no_71k{gWF)=Q(ELZ-+dHYw^#@F=bm_OJ#-U!vCK==b=X?= zIExn_j^R9R?#WC!yNPPAnV#ZW&iO7;@IEMdn|kXQS8|&$h`s2S5B0tMFsrFn}{^UQ{Il_oNm_EZku;9#}~!R`Rqnj+ia|IZD%Fb zG5NX)ITbNTEk(pfVV#rM(T5|i>gs(idPdf5D4u<)K3*%9cg4j255jt#LiIj};VKg` z?+S-;yvL&*Oe);zU45$RDQ6QwTb_n>oGW%Hnu~UV!+$mQ>O4=xJm39sJRgjeZo6cE z-(AKm&@MczC-oghY?0W40s4!>xJyPaT51~7EO8;q>30n-{+b``5)I*Xj-8!u_k8bc zyXRF)Z*f!e*m6bd;%t+4lBcFP{lw@0y7zn+ug_3XX|HqonohQyVJU8kx3LjZaik}q zq|?bpl$)sOj<1>wbj7^h(y^aK^7ZjY+|W_@;p}OVw3nfs<)+!bhgqIzu0%fW*_P?= zaaO&k%i#Oucu{SIUejl6z1fT@eV29JRa9#7C>g%mcX?jTI^t*VJCTo95 zBikf%zYWu$kF1Wq29Z~dm32Zk^Bk6hr9Y5$^SWV|!V(m+#rUgv@cR+nvBPEiPTu)! zljv6RzogjsX57Y;+_9=y!u4{|85-k2sPv~WJ!6k|FWrNE+|a2UM=PE2+|dQ*)m9Hy z>0bFRT&XuVN;6Iq%YO9v!;ofU-Rrx;(q`!W&By+uDaSb=^2Od*0b4iDV5KVrhxj=< z!{gujzM?9DdGOsJ6--2>`ZYGbKZZ7sIg5Y$?jqdXGpN?5WsuYGT`BCSs zr=wig?aXJpC02@?ZX&;PHJsrfy#p^m)b;%3?ag<1DmbXyXsxp{(eox4 zrdaVbd%Xx?+!5_5T@n6> z31ZSvZ+ng$vYZQMEjP=LSdk7U)^rbVihV;1I3K@J#aKpM+3ua+5pNvp1#OhXiQMa) zUsc1D;12s$&;E1jsDZY!b%q#9#-8UGNO5l^D6vz-rKczXZ<+daKCBfs#?jWNEq?87 zHAz2WV&jG6s`NMg-MNE>c)OG@J|VW`)Wdx|KGk_2N4=hd|0;?Twg`Lni}>8Z%3!tFW%T}_^^UHWCN$?uej3b>c+Rjs`}}U>OdUA!?T}%XM=8w z(*Ew<*v=$=;VG)qAUgEM_(YS=e(=8YCU#M&Nab8YaZzZ+-VAI{@v2#Ve-aMoyUDm6~>tn#M5%<9LGVk6Yt6I3kNR zHLc}>nKv8#3*Xu|@F*wXeshmb1SNtx`j0lc9k-jyv7VC9RxTW(XJfxl@8C-rZW>iq z48cA8tslunGi-j|6dR90n`73&S59UH(X^xZFwh&XM9tl+i*PJmwN{u7Zb;3w=!qpr z%@}Hs_$_0W_E+Jz^s0BFF>Gt`$fs14ekL|n!D1Z|m$C#C^=*8m`=X)_ib}YVX*Bd2 zI!!)t(iX?A;O^cEezaM6E|14{N^q(NB6H*&dsWuBpO=EE{93C$vsIM;f$nur2yv(E zTQjsQq0_Z7g?qMm+y+YAsgq(k zY+8w*aTEO{mpucyO&oX#57v<%x|PUsx4(KkW~4}B0VmKX^TVs+#;-)5!>m86e=D`u zBUSIxk@So<#i6CeJ~kP7rnnGyH(KZ=&nx$}649FKz)BAa(f%*n(pS?RnGGjSOTWzH zk;8ua>axhc;s5vsPV&@z2+zL-AwMjSt%xUe&zB2d;@^ zMGm>DH1xOJ?87+uRs2ieb3-=A9QKVbHATA~%rKCK-VOJ)j~nK!SU4C*&=FfYCb)|N zG78R`sgt7>RJ>UA*INc^5dTtKctovzG}@7K^iSER56&?)U!on)!Hbx~PlLKX{R&p+ z3l8DR6o@Q|t1{<;cyTqohriRpM`R%Gut@lgI%ca+@0YbxlcZ`p zV|95y+sV5%seCgb)5^5}^`iGP82Q)TuTha?WSh#Zq`Gm6x3xj_HQ1+nIiV{ln+Igw z2BxXL0a@PXX-$;5>N%ye%@LV`L!01T9SEkF8&*-|J*@xiS=pV*oh75Zn{Kkdce#4>rdi4OUK8U43WSsZ^Y>INNf_z_F}Pt~*FPd6H6f15ZpLTga8i3Tvu4bK%1i;N2g#@L`#*-2xeePom&2pDsYV;kUFqr5 zO`MV8*nv}SMsG2A10>&s!=pXjKRYk@OqE;8l~_XV+3bYADRUI#@YtvJ`q`UagHbB1 zx8g~+qlW3Amtw8O{(ZWsZJdO{CyQcnD)x?K0p8Webt#;Vp60vX4<$5GqhHf)P|fVy zE{Qp~yJ}`o{T9T6+|hE8X6du^6_-v{N%r7YyV-C5NdMcf=6E~{0WacpIG~p-Pug)+ z{_`9M731?EvrGCTzNRmYYUu_m)`B~ZRqcQ)6?7R zzi*1>P2*W(EyeFuDu)kXgmUghY5(^N(I0~Lu@mvstlbuA^)fZj{6Xd|nR{iLWbJwOX?JHy%d$SxkC}#M%9r&>mU!mEnQqee(J$@8 zv}9UCSo!Y62Hjvsu+cLz70I#&>R+dB7!luxrQG9RE~$^Mgbw%%_Fq4#UqV+5SJCO{ z-6kU5L=8SC9@TQMe+(aRqW0ndPpP2#$5xt1v@x6!e&hsy;D7hAle)ua3k0vxT%xAH zjKC~UUZb_atYC7mMGsy% z?!NW1yk0Q;SvIG-gLyai#Ph&(_qo^meZC}QS6Xk&s-VA~>D6lMc*?hDqjc7=5k&Yb zx5OSfH)22Er{Ow`SRsr?_SjYEeqGo>f5}vz+aH}6y^F`?6FH}b4u}suhql2|wNLwS zq?wt!=%dB(M|a!2b#rV#ZtQV*a!$|w3q zZzwOPKzHY+u|BV};ezln&+IVWcC?vH<*|5cqEn({?etyj-{2Zbbi)dT3w1CT!5cjrGleyF z4vRQ9*2+|(ndaOqqeh(ddKh7SHu%Ksd*~OL!)=hj$oJ`UVLG?&pgg<~Th8UURb*Y||6Cw*{cCH>v*DdG zXA5^^xNehA>~&l$)3@->n!toL!nZkVO2uBKAnoTdKf<^1gH!vGd-9X#*4^K}ENBB6 zPQ;`g=L8x{ZM%qN-h*4%Z9dRsH9!Twd1-77_VXBD|Id_>m-Sp6bOuW~G3$daK|MX| z<7kGL)R_r;h2NlOyo?8%=$Sp@9iQ;oQZR5*?YP#PukDx5#o*=1cy^8T7mk*V_EA=6 zbAR1rqw4KWQ(ounx{jvxZrOtv5wk(!x!?u!sr>ar!))R5pm*?ytqAW&d)o%_12p@$ zxH35UnZJGw$KE$`$(KAygSl^yb7Xyr9m*Qt78{{=d_h>7$~xS$4=FlNM2kmHsvoYI z`tS-q>T&a^+J_e~9EUh`Cabo;h7DgAD;LK)#kPfg!yCyqwrG8X2ea|eU0-28;ty_1K^~tG7_8jRdw$$=+30;X zs%|!^Zj8F~b$g^!b11XwSzD|x>vQO-uGwWny!qF-T_y%)ctqbav-(k+v|B{)vHyFR zY13JPhyD7S!#DZ+pH*?+jlJDTEBF!rJbh66Q zJt|TR!Ti>9zRa)k#%|RsGsq;aKJkG2;&B>Ui*S?vxi7uzQYK1nz+PU(a1?ik-qySF zf~}<0-1K5%Y#uY6w(t}bNgTn<4S^xv@C4osv%{MI__YacBY`xJ~?RVvgQ@ws%07tJC2Qk4HC>}qmcMZGgMF+?kLo}4rp>Y?ZssH?l^pEG>b zyDuyfFN@{y{ez+U#j;*Av#H)UP3F9=*8iOQWVE|~;VRDfPn|EVY=$W7%^e5|hcAZb zu$hC!nICoX)r&u(0uM2J^Leu>`s-_RDpfc2pn=|>xsjPBUY~G!Fiyc-C#RQNQ`X+L zRnC1A@2st=xtZR^Z zx#=fyY;}D0PMK++$n_|Vexqo1As7ZdH1PC(;{HqRU%zfH{Ap9t51CGJQfBWP+hV5^ z7mT{Ok^f#5ZwJTj;Tc^hgKP_`aV$N{OFkRF(^eh&CB*xgE}V6IQWIpOu43F(@4md7 zd$*|xzxr#sz%Top%sb3_c_KI|#^&S+pDku>;;HCFH6G;C6J`ItB6I=jNGn|#Ej)vp zXs@ryHVKT&W7M%-GGas@(ajvUV{KIW5IdL0T?%Bd`!deXNO2>t@2#mK%O2R!*frtCh5BfIGT1s<3G z>%$0ZgXZ4CMPVW_1)^x1GB+s!B6(P=ZoRxl(mwGeN`73L>>TT|R zW3k6ZJ&xr?fjw{TUmy9Z3%>AEeA(9=g99*EOML&7uq-Fjjbh(K=%OFq?=gObrQZEd zCRn{AXZGWwsu-Ij-Wp!7qsORpU9EamC9L;v*=;*Ivb5QsfTQoZuUBm?!F+9 zv(JU~DZ?jl6BEV$-6G#o&+@_eWn0{Tw^8jk{PY$MrW~@?VQ8a-U$9l()+6{s@9}(| zkKUq3PLXG-w>Q%i$_28>J~ICE%d9kzW-H~`jOb{P|rk}`zcPcq0u``j94uG#XQB&%v@NhAAd*~#`?tGx5KYa z{1tI?C64&>_{;v53*zxWs>BEt_gK~bKt7+JQwk@~M;V<3C-fi}4p(^g)5VS&BF7M) z-^$@S#SOZJ{xzS2?wswpr7*U6gVE03241eoBIwyjr|3q#bl0isSHqXYy}MNtqp>U7 z=pi4A;br1GF-5nEKX38dd=V6G?OhS86QAaH|LE5rjKAp~ zo`ReHv*o>y^E)f359$6d`XbD;-_4x`Gupuw&FW^>#eH_90JY-G-2gdU_5`P?EPin# zO3M9@iQS(-mX+P#*PPu85dKE-tB|b%$8k%4nUj^v_ZOFS&AH(lI_?fU&nr3y+Wtc9 z{y7*g_9dXkA)a6^dy=n5vb#fXdjp*~BKn##GBWm4tSvvq5p2yy=iqtIZ>epo^TSMX z*Q5Mp>)^D<-P;>6ds+R@m)zdWvdS^L_48~MK zC2-dxa#&;d?H#c!h5=Xr=}!`UxdOmK(rQTq}^EWU|UJ)!$?8oq4^J8-duQ`1;z?|3R&X@4V z&FOj7+>T$vrcnA3vkN9-RZn?`=czOk-JuwzCs%9|^tN35pYQ%AZ~)7lp9;=Wc6DRs zaGLx3eC(9_H%`?2+a$0nbj9u7rp*%cfLyViZopn|aHVfO$2+=2?$055|I3+}*{}OE z90GH{z*Bji-|i9W*meKXW3;s&Oa_gbB+y6>YA^r4Df66i16DghsR;I@==Vxk$WzKI z_x&8djmx=%e!p|#PwkBRUoN)8L7JcdW_f(5%H@g1HbjqF(|d*fu{NfU%Got@_Z?7QtLqWAm zKHk)OI371dK9zwUluHlWa`-Ei??-IdQt!XF=<~JMcSZJ|BbL?Wl3$^A_>k6zRiPEu zmHAh|PP0vcs0@8q@b|ZbT_cHZoVpx@G)-2cnxg0dz z^mFL>AKK3+^3Mjf_Sa#1RZ}tfej|r!0q=g399Bc_d=7qF7WQ&_K89bugSPmnMs5%{Ps*Ozqdjy% z-W0sS<2o%YCeNi@VMX{Q`y{&JF;99Ix!m1+v5%Y{w_N2nSPyAYocFm%U9N~%qu)i# ziN5E8j-Fr__qVaQUkl4!j~28W4!GUKlzR3L)S#B;4aQ?f@|$4vSL8PFtE=pr1B3E@ zM%@@y@n=&led+w!lj+r|qwM*iIwsUBU2<$0Gr{Whj!qM4YT z;hx{%o->}}HnF?7*#TW)pRTa~^WJ@HQ@@{y)T1c1k^Qfmyp%$|SAs=q-t8FR1!7N0 zN`Cz_85m%M0**6SB&=-|O_;2L~LD_I3AadiRgmJ=a^Vs!JVug^t(A=~-gd`}Ei!Sc}i#=Dup~ z?O3u!ZtjstC1>XhcimE2$(wNVOz-|_xZ`F~voR-Tl?<&UtLImUw=kuPJ@3rFNA>K< zTd+^upCD?#C~vnG_aAZcO2B&;XuZYMVQk<|Ovyhq_PUV=D3Zf@?D|pK zH*&w;Dm&N(1MkpM8Tf9Xx#BJ2D@_b4Cx zUI+A1D%Sumzy9>ZBu;q;u5^xybAx*G5`S4+TGbU#t*jGpzxwL{7i)?WJ|0feYxxZ) z>N*aG6DEed!2A25H`gKdRak~^Iae?{T1CV->AfFNG1OHvd}^1_iySen)SEM7_lkM< z$=7o@{aTA0GhoJ7^g(pMwv?tT=8JAtZ)}ZBjD)^>1g@zRrYcwXMwlDRmj~X+>c)0X zv~y|`e3cbNyyEiJ@4>CQ(XQ$0x}T4>2EO6Dh%MgY{SyAfd9=OPsC)gOlu~~8(=v9P z`uwOf-&3{KOSX9+=;*2U)qS4eR_Nl~w=*ffGk?W^@OG?dCDA4~rM(G_tTLy;XVA;v zZgLrD?=Mx^MEu?|s_0pLn*VYNER9ryb|$GbzcN2PuN$5QC8YLAlyG0x>V-&ETDkCK zcYAVIMd!cVm&Z+fyct6~5$2nO4?m`_w?yoh*g!bBia1@<6aQP}Y8gL-nKsJ=)*eZv zn+4^UHqqikx$;A|zIAk)N^=K~VhqFdiVYqwbA)cA4^H>5Y@|x8$8ro0_Xll*Ll8~{ zd2(swb+K-o4%alOD}wpVs>*KZywmBap?myiwU~2Jr2jp3zdRQWTiG?HDv+P+i?Wl{ zC?(8 z%PbFka)1x1rC!t8{A($MbCEl#q)w1Bp87FS?k^E0!l`&nPx3gt_B+_2y(S4a6J`3z zN`*`)7~#Z~@agVi%wT`{5HWJ7X@~ayB2o zJoBZr@C}&7m+9|=!tdegX&8-YbOu&#xPFQ^+?b-W{aGmpcH~I$qgJ;76u}{_YAHZd~p^DtROsP-rlbe=P z>z?Jx2}~3!YJP}N)r`31b7{cD_Shw#}Q zF|&z=``5o1P6TQ3sz@L6_G-Y|KBZ(vQ^Ck@yH(@m7X+nVXj>cnY4a z!mTleqo_H5=5Cu?;^O18l#J`{X*o>V-@Le~9XmgZ?Adhq7Qy5f%y7QF;Ei?k`6K$3 zw(>C7a%!_su)0$Bmo+gFd3pPv6E|qv`?cyKDwLf6dj<+ z=Vi6YoRX(-ozs zQ%;5lo8-Ykk-VG}A2=&#OuHE>FSf#dcEkTaMH~HG{X9)*pOuP!bQ;w(B3{oW#~ejmQ1W`Ei&l-r~4+W7vT zzQDmeQR|%c$&uS>AJ1U!f5*I)cftyCY@{}qb%vno^0}OaUlwA!EAu6BeCt~6%#*a) zB+nX9Xi0lv#{}g>^%)S?Zo zjiom&!kV4oTu<%Di@@AHIEq`Ux_a_NRmC@)Fu}i;$aJ1xrJQG0L4WodQ*-P^f!p^` zi*Ag4;f_sFZ&!o7@^jU`#bxTh5Klrr#{&-QEy+R?U9V)P$L| ziiHsWU@nuloR&u3Sr>do1DL%e_xEY+`W(GHsaa{I^bu8c=DMqz59t>}hr^=@06o~cFO<6!6P$b$`f5lYqsyJ`#3=X4rR1RxJwuk7m7u?VQR-WjM z4ThXPkq0MGDsFLB7T|c^a7Vt^;WpQA{xQ9-n(Ia}{a&%8%dmre`H-jTHybQQY~}@?DkgvKnQsq9sxyzp#=_doe13v{mPYF3{_f~Q zqUvU`rI@{&$2kq}H#?`Be~Lvfj!S1VA1do=UvKAUb>F?*T#-&9%i;KgV(}N|+x_EjuVil7Srz7I;qBCcRnc0U zdw1%m|H6q`$Z2`IIh*) zM}m3bR35ma@zn0iEjlb#d*V5uy|VG4u~RgqIeb}dGNvbtl1U0U<9+x`@29J-HEG0ZoO6UPP#=jVPdQDy}fmWUY95nw$4|v$WD0(mChivEt!;x1y~+2Ep##+B?|e`_wH&@a zt4psDr)R2{v%P6r$N5q!La19ft^P>5oIIq$0Ym7Wmis8lu~4w7WS-J^H0LJtORoe>@kTZu0yU-NHpoftim*t*?)B zJM|<>@VI`;>TdM}{?50|f87ji4df!;5*=qlKmvQ8n)bHE2#~!1- z4OYu!le5R_M(M-vo|A%cT_4J$JZPy6kayzE+lk-1O#!%O_RVNGufBM68NMtO6plU^ z8K94InZCg9l3hiz;iB-JK}o9Bw%7>Rav-l`(xmzx(K2t;|fj z%g(aDljZrJBiP?r(N#L!o{W{%Tiuk4H@|6zMsoOj;Q~hVLz+j(JW0On0*?N9k_s0cZSR zBf@?T;&ahGvUMGHSPx8J*DceBpUR0vVV}V+M4yf#P*5h`gV4kw$|IW zi~%b4Q&{TkV%U%7sQij4&XgF4E1Dcj_3AcO2V~U|vCgN@`SeQDk(Tl==i~1vfTdgz ztB2hmBL37g=O>o7(2Sr#+$mwK4uR?uXmL+aii^f5M#H4N(qFGknF@UQ9(zAgsTQ}bq1zmH|pS%~c>rR`!tnLbf61<&D-NOqeNquHsLQnJS_eU1c_TJ!nJL^5|;#!{PHm=rh zdyi~Y%{#6kYOjYTvqO_3-KI}$`S?0n%EseSPFLgLF1=;{#N1o?^%x)SR`up1&Q@o$ z6N|^nhEM87_}2~i&-XoSt3qBb;tTxN^<}ERgRjC>u@=zhVDC7ONg~yC{PY%oE<^C0 zoUH|>OWdnl=RwoA%4c|;I7M@dQ zUQjVD_pP;Tad<`axlyIv+oYR_Elv|~3p?U1bfum1&40+TFH?hFqotkWFzgsS1_}NL z1#UN$eXjW>ef67Oh-~(>28B;^AiNhhui8CI?f0A{OC8AAHd!Y&QiYr?xXa|&WjbBA zCZ9AfG86RO1sfQ5k58MsGL-uAoEZs!ia?7!tv#F=-^KofU?0S2S5QQLv)a?#ZLNcZqz%`464Y% z!I8jX_Q~iF+8monHGAI;&Y58@|~Dr;*8B$>wfj8@T&y z^gysxmrX-@RdZ8`k7jI+nnL}U!+FvMZ+)KMqalCzYPo!&X#p?TBVms@2JTw)OmNPu zmyYhk^St4wF<2kNe;1v~eKgO$91Az8vc~9Lc+MQXt>y#oH6!6ev+ujAb8d&geu@oH zE4&Fy+?`g!=JQwK?rs#{Wt={V;6Za=Gud8|)5OKArggo`<^8eF!$5WSQP^5W|A}9D zo8OyHhFYgi+eNK>l&ifZrg=dmZu4JRr!otl_7?M6HsF8m#rl1PbxZx#O`MCOrsV!9 z4)nlRw~Wu@v^XZGX43;O(mkAOgVX13<3bpy8m|5JFyLo-Eu%vDM7;gVje0^xoRQi|R>#DvlIF3u$5dC0_ch7x z6WVGuy;Q%$YF6p_Oqrsw8ytykRx7#@aK3(H|e4N(^QIvka}5@G3#P&o-^m`7q#Ty z5XhQjY5PQPqcEH>LGKCN#g*8r^2?)g`9#=fDi-5}&hxLin#SuF{F4?~+5U=ClLdcdZUClWh&Ix6dWcn9vfge&@7WpJY{P=(Y+ z`*n@q;yxS?Hqpb{sC=h-&iAL)6FpM%V$X0jHHFao1}i-0vU)=sLq5;SsEc9j6`piv zy?)c(;=AF12Vkb-iCbi*BY6E2)U=kmiF!e)Bh5*C(CpKZBETwJDE8{TZbS=iXrjaV z*l>JB3#WOJ?#4M{-i?WcPFAWrv#4AAhUsGG^PYyWnSPRwL#8AON`0?+@D=f7&XWp7nlqB-^R^GhvjMMBmPsn|A|rTL|`;>66PLj}GdYu3VdC zWYf<%Ju}0%b0EEI$%AGWwN^pCA9*|aGQ4#!)$Xl$an-~(qE;SLu2zVbYh~j0HvO%0 zrXPwoywLRx(CA9CUYH*clCr<`sPg;a{ej_~C` zJ#zKv>}SHIRLYdXI1ftO>}-zXb68~l5bu#EU7tVZ1fAks`U03~y!t06KJm8b7rLhE zhWTQ9&Gh;f-~TlPa9!-`B|lW4Q4S8@4d(jfU3QGrGhL;OeE5Z1xEyDG1C8t5upU?I z@OTcK?GmSJxf-fb;;2mgSu9iRHc#t~=q5b-F!|xMnOdzqucvTfHwFI$yX-~E&Q((a zQcLMesh*59NGrdNf~+de7yRDB5Woybez^*!L~0rWZ@`agz9C!@i#Zd$#lVP zl%O$WH=pEBn7D(kr(dx9U&~C@Jg>*qA2l&yQ?QTs;;Ijbcz?xT6XCD=#V6p1o1m=^ zaT7sU*QuOfip>)Dw;bHl*Dt;m*Zvq!!aMww|Aarss^PH;%7de2r;aM8?&`%SV)NvO z6r(Z(${P(K9x@fTv6}B)^Fd1b#f!r3>VV-~I7PgjJ1~bw@t*h7b^69Og;~N{l+?v0 z7|$}TVx{@qe~n>W_OA*L)W~<_nxg&7iX#rziBB zHite+nf&%Y@AwO>L}A?uujxCz6KmMUUE1PK%)&%P60h>$U810Og^6eCzMQQ-zT3Ha zS|4H?y3PPSt2gq_zU{AG7|-YajnFeSMx@PUo^H-~Tl)P)-~1x=|%7NjYK~gtr1nCweu0$KRJi*BR^i?Tgc%m%#zQ2ECM}jQJIhQ zjzd1>^1ks4_;9AXbhlhuOjq_EuB`?^8;-jN^tv`SIj4b+snr=Lvpet39w($ajQEka z)I}fRVo|e0;u5}juW4K*!#GPxQ&w3i-xru6VgbAc%S2>A5^=^ zB(b+lUHgo3x`^kpluoP1MLm1pO*y@60zetJ>P1-me3TcI;~?eMxTv?dsk4#rtK>}ZVpz_Jx?ghXzhA~FamZ(vKn~~CYr8zJp}eAHVvmQtgE6Kh zl!nG@LLUFBUD~NW`eMz7MW5HTc?+$#Bh9b0nx%*Ld^h&StX6Y9wo~~ZhV$lOM{CN( zQ_RLLEoR=%Yj`aBtuFNTGDI7`xcu0*hCcTvJ)|Rt`Y=5WRo%tan27Rvd($uxo0C~! zfeY#DBlGcmH>ndp%s|CeRK&|=@fUsbUQ-(8QAw{rYMngkG@BgnH;V(bQnRtmaWPey#KJBTRFBW-5^{^xPU-Ei#nLCl0v*o8?joTE7 zFUI<`mK(nGygSIIOCYBAOyO!nJGsEi^q6}bQ?31LX8cktL^izW3ash??8i^)tx4YR zQ5Eicx*zx9li#OLX7;p3N9j}8)FIf9k+`4pI_a|Ln;FCpbts&VqgxBD^>ZV>7k?UI zKc0`DwgIA<&rULpBTeLLh?gwn4L`5CeJOIUU%b}@^qzb?GiAjm{NfMcraB_fLUS$N z2+w%(!mIr3@H1Rf5BlEw)a0tMuJGkoD%)1_ z=?tg3jF~l^aNzBz+3%<@8-`iKfQdWm zq26pSQ$32qDm|tvVh>^7k7Pvatk~;m^2^(D(@+x(Pw*OkCW6eu&2^U}eoybjIkXY_ zXs6q35Wn;k%y}bu{57tfl-|)KzCiS-h=-jM-EU&=SJ;D^?(lSz0IR8rJLpu|L2anO zui74lNa27kZbM#-U@PzF7yUi8;P?|J15H+6{%guvihE9)QeTZ*G{rr4QYFrk*(!L( zsb2e{&UB0TE?)DoD(Vwl%FpQ-@2e*^E-TK*9bbsdiB2%?O^W$W*Y$dz?q;v@-_F(E$S4)lCN<)He(wTLs=UhKX*aPoZ2FYy zqYCzR34c;OY+yzE#@<#f{R2xMj-9}n;Vvpq&3eZT?&W#?BTk>@uz3O- z_%Y7pc38Z<>B_&!h{JsTf05^ONBk;I-{M*I_cwRK=8ead|4tPufmQ1jJ4l198MJqY z?{+$Rsa~zKbS)UJR&D{^?sYUMXz|fNxz`AuIc7-@h-lQA86#e&GPx&T$^v5jrutH zDm33A`VsV6#WKZT^PUb+dJaO4eOmm=|QqFuw_X=k#uGg(nR{cAF}`>@!KpdFDXaW!|+i8tYh@_SOlsRCV~ zynVbNU#I}GhRswSBi)3`Ch5GF+?TuoLzM&f@K&@Rp7<6wu(BIi7RS4g`>l>_x(r_W z&O3VCF4rHUhoGeqD&kMf$Neig*Zk33oNo!Fm1X`%HzTsqQ>TUJ-qq`we)r>%zvuzxB1n6H;1O8X=r)W z;f*27x^Dk>l*Z3YaVx`bH$|6MVe$C^v3)KqKAeK|H${G{PMeD1Lr}*ix&K*Hkbg}6 zEC;`9(sy?A2ma@i&A6ne$5S2cgWZJ2;?*gU{W1^4HeCjtgO+NvLXp96<=^(!K8+P0 zZ(eF{O4||qUqfow5$tq3>PZE0Zh%j|5L@pVHw=2H8w#4CUqx4VF%fo>NlSYo{kcx^ z>FImNXV3cHy6#>Jr(zdx^0ZhM8#P9{edqZ-4m!uLVn`O7M^c@`w-sGm&)shoVCvSn?O}a3%pgmXaHC@IHc`@U3y+?6| z@x(-~_H!Khi)Es2a^U;!z?1fpePaTB330svciKPEfAKsp2PtDKRNtk8hp@9>`p)ZE&g;oR z?%l68$G&58bJ>jecGi2H?ADDEY5w+WgZP8)`7HgHT1o4J1DY7Pe(u0!=2T9f<;_gFM6-XFbyv{i%-d2g>g_l zV1zR!Z)|}cpYY!|oZ@>$r+yT?{m@Ac9?{lRj{CR_@9`J!mVL^{yE;$*nx!`=`acR> zOZzo1h-?pw=5_U!ZHmsoGSv55+l%6NIKkaHhYG7~-h`R^(t}cS-6rV<%N?ngegf*v z=Ju^f?{AynJ)Aomut=F?+x_t>uvBYV^LKUOW!|;l_*W)S3W8|!$OhAFo^%>tr>{4W zeKtkk2&%euOWd8^xS&?>?vu_$BvF?;?jKmYCqKX*zLPJVg|=#{FSr?MV;K1qX+aM` zQyVybRyq~!%-`!nMS54pTuga;z_z04{8?4pfTv{2-uUBN%$L6iiac4al&ag@Ap6Fn+^9JEG^0cxJh+57+T?+j(WG@JAJmz915(g=@ptsKRUGw{l-@Q(1fh5#5m3gaLXgHh}-& zGYUax{+Kgt$wFhO?E#^32!0a z6~tU$qT*~cMY;&4{pVma9;Uj}|F;S09p$=Puw6Ty#QkF8d^&d3pnG(xd-pP~yn@s8 zF^A1w_5FmP8AsIDu_=`QiP)PX@XRaX_-`1^ez8S*#LjVRE^_`;Oj}1)!G7m(cjPX) zV-+?uYiyfIT4%kTVfeDSp7bA_9y>8sCE)r&n89N-keYHM5nGrb29O4?jHE(Pe#p)9k_B(QHYV&w* zzPA$Co7wu=iU(C;>*G#Db(P3%u-`PNcz(G_;yiZqWD%KF`2_MODtPhIA{P9 z9K$2rf!WV#p3|X>%yB%r8JkdvlP0x=vkxZWN6g?8@bM|mjA?48%&Ns^wlHn?sT4E+ z4J9Lltj|QR1V5_EJ7GYZ`jw}-3%eq&gb0y~ofrwX>{eKSsT!^oYv zD&i{oE#VqWY+DYX$Thg&z4@^K$G z#9^LtqAYXk;b$uCokeYGT5-R8#|0I?k)}bOyr$IJ#XIrUwazUDNRm4Xli@1bu$MkO1 zQIG@s_nKdN5`R!SF@y`Rl6^2eR6M66PtnC@!32}V#9L^YSInp?5`1q9PM6s2`Y%h1 z|KH-655N_TY0R;BAv|w>&-e{Db^=UX9CNVT{)3MrHN=T&I@s%qFq2ddwN=9Noc|$m zR*JRQ#l_YH7I|IY`+oQQh%>R=&hL3{d!7vJG}g9?@14bEDy2JR*n){D3{xxqlN@Uf zM%bOwyP0dElk9vYnHQQVr~7O>W@((B_dM}Yp3-PH@2HqMRsApv+8Y4J=L;*icSk(q zgHA;;6~GvC{@#pKN4pQ$F7|3%fJUjje?zDX;e5DN?k-g}n$9+@HQXdC2COM|j`*>ozH+&*)pc zPz9&>98J6_p0$?e`w?zEAmgxb`tkf(hesZsL%rF`f8dOXVThs>0nTTys__muL}4u473q&jppqv3Vcdro!MCQjM|s`s(Z;arSE z=ENxe!Zon?Z9x-iXYR;bPqA(t2adH7Eo>J?x+V|ry7)~H<_@ZKG;NVvzbAfk zyqYu71vj%7&#}`pehKH7@?3qS7X2ss6~tCKb}=?LUI+@ADmwMd$n2|R%6ZuA^3L(= zJkKZShX3Nw|E18{gkqvYB|6DQJXSoOnt0h%1W)baCDPV`l|-)UdiMj5)WIi1BRQhjmo&+thM zrF5K+t`BC09d)wo;rLx?r)Lf>oJmgeig+TP(=+bQ+p$+SLn>0#aeq3dtK&F&Mw-BE$>0r9F=3PJG3Bv5|7j) z91q9uaM$}dO_{{DyWqBbdWY_gUW9>0s@iXWY`epHIc%^yqXI9P7|&If3p3geE*PU@ z<9Su#KXzTWFps;DDG|%ufR41}1F@+h+l#W~QO|jh>S309w>tKK-H-$M6#kKUhS-Vl zmM!SnyxW=_Fhzn)W;cDOo{Xsm=ZY{fx@vbfZ=4Ek9L7F7Eoln=I%2zbYI|~^?n&jW zu~@=Kee31eK1{)E`1CTq{#&>25>9m-$4?d;D8^woT49l17A;;^dtb9U=?;^_VgvEd3p!-e*`vEiomFW1Wt|Rfq44!{~Y-Bu}-@2YV z;-EOw5eqyt{*}G9cRCZpq0GPh!aTH%Usc}o<;tje2rE=sjbzIA zz&`!T6Z^axU@WiT?df;J#bvmd-_t{x$9&yIu`$lmJW(PO*UVaf@n7&$D|*{^^tR&B z5qOa;(9c*7fz*!a5&BvVMu*YNu7yX%;%v^sVKe!!(vg~Sf)$P5QO?FYcY%OP zdq30Rf-WkL&1&{`YW8I|!5nb!hWPXZ?xccr+%ob1nUIw`Y)Xmgf(tET$LV=k*RS!?d)2X?chfOJH6$HM=bfgn z6W94TeiJD&CA!e)VzDFoKvFwdKcS(fxp%i=3x2aDqM}&*jT+#MSTeR;Z|NMLJ?2ae zg&7lxlppgLT_6nVN83SO=WSGK#?x>l*-PD0*Igf|AE3P2d7QVJ+H031ZM$EbJ<%L0 zxI6Y7{-~5Y`?1W^MArJkCu^&DrgHQb3ySKm`!6q zSzr+E>Jwf2J@Gj2VYo|i*Bs{EukK9bp;rCDn^zg~O7VgPFe)wdJGAh8E~?zusk08o ztJtiz+swvX7}Um|aVJrxsn5Sp!(0tdG^Ylv)aOx0>`irRj-<&Ah1s@q&u`-y?M*BC zP1T++Qa625@(CM9X3`Shqsl$1N2G*Gb`@-UF8+`>I!$gKif0=c&tg{nc(<-CH$jq1 z_G520i|OePLj_~qx-{4}H6tJ!yi^jRSf;*v-><^)x?4JcI!6kIh!WSm6zKG;Ms13WA2LH z7hDQ9hR^Xo%!^lmVvhRH1`)N3UV$6pE&bN1vhy;NR~tZGOCYw}yrF;6S44*5)U)B^ zr&3M7@U1VXpy%R@Z^h8n(VbeFhjAQiyBY#&gk}B~8+jw`v!lQFc2DVYxPj+tJBFg3 zXWJRaaM(1BKh*56hF5jce;U2aDZc|M$cN2r0LfR?&9a)F_6lzM&iLy1y{i2=qRT=# z0QYTgL-%hIVBIdA-p=_7KGw-07qZPv9pZ|)}R4evxY#Pq?1=)Fk{695q{}S zI>ahROX#}U63+Fl+2QFEiF_viUy_|mc{^)V5BG&ntL^UK)X1yi*{7iU{!m%Ij|9kfdRMfzjUxX#4}T`_v zSQ0;dRL9~bZ{#j`?|m`t75&XSFrXFbtK)g`v50Q#9B(zXEB;$2Vpwdh{+bK!c}2Qx zJ-ZK68^_*MCk>s{^qr<~2vGc{rW(?*|B`A20k9HVBU9-pj|y za#lnfp-ZHJO6MuaXSFBw1wAX}-P>n|Ln|8Rm%6YYrg7fsy`E2&!a!w?yiYyrNNFr& ze#UENN-s#1<~3}}f44&Z7|vn68~Vw@f!_~5z0j?BU4^v=k3Ub&`91ojD)x3W5|?u+ z%<*jhP27;S*S``;v{e-@;=bJlhaaOqm!`7ZfGt~%$1f&Fjtx4gu#VU!^fyE>T+Nc^ z4EJ+)-c#-0O+9!%=)x6#6b9+)1Rr|Yw0~svGMt7V=z_PvL&Xsjj+oTOnTkXF!(mul<4VSM*saDo=gMLht z&8L5a3+G|Hh7-=ix%uG(V z)3`i8SA$3yGuDp;U-B1J#^L{=>aK&^s7nD@kDXYmn{zz&^oF1$7Jni~#E9h3J94siC974HEa^R=eO3%m?1r1M_w3tj6-pT0Q+~XNNE51x}??$P; zKjgz$qW80hPLOqYr&}S+$0**FWXUMj>5ib1?t(RHl^UYTHGL}))$d_9wtAvje0FSW z_$N<7XPdxQL$rmU;U_Q?DYtzNedX(T68^T`qBsOUKBFF7gPVJXhx>ot=|`q0H?%1z zm_58hk4;IsSe$Fz!u z6yTKV{1~U~@bI44?%2He+QbYSeDBGWKhqi8;$F2SwL_wYC^3k)upqtr0@SlmzL}S7 zh-aI~C9^oH>o_cno4OExB|Zp3yZ|BAPXszWAB`1@)i;-Q7KGRolE{(%X7Xtc@NC}B zS9t9@!Oaw`)m#vNnpDvY8!}4NFOjGduWuh<7jrE`_w7BE`lXDnq~Ew~?LaZv^l{4Z zpZ3IMb!(nTTamUZ?OU6go7)jOgC4sR2ER49ZoW2JU1 zYkUs9q89!o<#0KuBk2P(A&;Bt)!A0OhGOu2>F*{BB%iuI>H4f>PJN~IV7&QZ2mF08 zs^S$)@qh8B;M%r{fp)g1rnxodRsGF8@J7kUk`>+blId%bt+{janQ&0b+>|V0L}|DD z{6_xI%;8qPcM*lPgrmQ%cmOjS`OeSaIU{cfE`t!#%!u?;8=g#V6xX9_A zC2cg%R%g1w&$#ro;GEkwQ@wBx&h&ipanYp-o_8t)em4Y?j}y5iFTq(oBR_B==1FwW z5tQIxN_l$E*&Z>H3wgZ%j7pwMexzm?r`G66(=2ITQdbdeFYLZl+%E=2JgAC{#7c=v zuToc5I`bQo6Mb@TvKH;Pgc&BKbVOcLe-?sdPwHZNh|~O_oVAjE^_bdqn22_a@2Ov^ zqXskgpzgwd(kHv;g@RvfAetK+7q7xWSk#`{RNebR;=J0mjlQc_IAcGg`wkF+|M0g~ z##a5pC2}sZlRM?HFc;j@+&QcU%Z}yrx*yi+BBG_)l`#yre2_P-Aw}~II>#xM>*e$X z&hKE|;T=uJe!i#(oHvApBu$L_Ff1F>+KH**b^9Uas$5%sg!XmRNy_3k;F?BAuPejcw4 z;k_Zp<>gEr0pVR!DV!3!>(HQH_xHxkMp=nPEUO1-xb1v>?Bji1uh!=xX@nC$5$ghz zo>P-eR;lmu%{kR7#knjuo7MdQH`}S$0y@P=tXkl$KCF{(DCO&CC?c!sbD(aT>KR?l zBOr)%xaH=NNVF@xVS!l>b=4XRXava*9#QR|*TBHrM4Y99Nd;lumZuVvm&hjNV-kWsCW{&h%Yd@_X>%#Td3?|)6 zN17eGH@*b3))>C~-7{|QFU}f&5^kRgx%`VSo$dKvH1mHQ{L$5{gXXfvY%a;_9NNRE zi*v-5+qiy074H-Jkney5w&)tTIoet+*UhtS2AR%J&&s{?I5+zi(>%u7J+e*QU#C-Q z0o*h)gY}8JIcsFd#=#>xVYaF8Pb4F99iKLyb|r>)4V|Je7QJIet}32(+-ZDV)@ZGN z?Rt+AFO}y@@Y21JxAFchWw}4Y&sEDGa}f-1XBP2k+{2ZU)wG;3o^QIz zY%gM|?!$|H&7)XV-f5yYV~oDiwmP3foG0Au1cxy6H{Q<|I#Ta3|KoS8+BG{>SBVkD zajmUnn}Q}SRkbzbD*x*Mioqcc#d)4@s3J?bSpVP%`;2S1ntFMN-v0e+n>)C{Dq@9zn39rT6Ty$fPnTOC{?V9S@`IqjSjCI%5l`XuNPBBxj(F9!UUtC$uu=j)Yx7Rj- z;wZ%Q1nsJ(*mM$KbP1bXI+5zyN%`ON`{Zm~-eO3&j;H)0jis)7c_bftF;3x+eQOy} z@R0bD2g5rP(^Lf(SYiTpYV%-A%1UqfyaKJRzY{SbQX5Nk4!zQNi%OP>DMmtlm|n2>!6qQs?UbLwK-7hZXtACb_F8@SV?_(6)p-|A|PY%+5qRAJ)`9Bc3l@s8y&ie@%&$ZaN_SA_skiZqpMt!w%m5gsq zbqIbcs}FR7&nELx2dkLGzaaV+o#7F8ZUx?cd*V*KseB7sQ-Q&Rkwe}_7Rt_d8Br?X$aU6&RuTMexUZ+eZ zy82Sc`&(zR9K0388^-$Chd#r^-n%0y-_9vKQ|dX5OD`(IydgG~#UK6*l^&-)ZGZ^A zQ*D={c@>P;H3@4i?&T+Mbp<{;E;~1&RFvRAc!sKSM34WFSd1g9r1<-S_c~d{yVlIX zv2IRrz0hy)cwCY*4y&nV;UmVVQ?76k%;xZDLb=_C1%J&{~>TTrP35qySI z@s4w4@K95(k_D6e1lT<(r%@Q_^Uw}rx zPepTGq^*h|yIOh?B;)VYlcL0KoJwoorfBSttbQ}}<+MuVkZ3!ZjTs~Af2cBj%#8Yd@lPSNmDHtgbE>-J&5n2Gd56@>)C>5dQ=xO= zS=izSV}(Vvihk)grZswaOFzd;a(viLFZVPwZkOq{rFLo!U#E#aJ6~vP2sao ziv9OH3+$}DIvv`1KKz>rz_z^UmqG=4=yH}oN}q#mt;MlDMn^xHv+5Zv=6l{zakWc3 z2-N^e_-)vU&hVbURRgCXJ{`sGx4ogu@zLJzvsl5jtN1tJO_WiO$v0;pR5P~9;^vhfP(@VHZ4Bjn# zrDq)_cdV3K%UBOfP0!@VYaDjZ7qS$3+hDtkLPMa*x#0DqVmS6m=Q;65W>^vb#y*Z`m(jn6_VnYRv?5-YU)E}hs$+a^AEwzam3ch1nVv+CWS2LC zVJA(o&ZQmRO*=WvDxNOu+^(Bzr`o!Q+tn&Q#aGO9_BUlP!#UtfsG^Q%&gRSTC?CIE z(5duZecl~Ew3a%GO0}Ra=O{wnF@bVj_%R&ulk#dQnRy^|YM{BObK#{XZt8i~0r9-B zldW>quOjIwwLmutusM;_;hVzGiD*xH!&QCRC0YI#)pS*>`J=o_bFd}e+{#Zn={-kq z#GO-=D36=x9!JHyRE}E=nR*2}yN+sLS*Q+2vhO2(^sO6Wqbac-^ou{hsMIk})lJ5@ z3BEd(BIF0t$?2Jw9{#?QH5TCm>&fT!DXjnXq&Z}p6{6Bk^NAhJC(NX~yw{Y^YVK5r z?DD?wh-I?l1sawDkhoLfkO{%BRS<>z?-!YTFBN21QRS_|?@W)?#c6!ajkOLRnJ?7< zE##}k_?tbU-rb6U5& zLFJMmW7Ll3j(rsCE-OC_>m1>EZ!>ArBL0Jpw?VX5WQbK*)YMryNJfSTyagJOhkwNT zk&bkt->ZW^(Wm5=8Lw5Py=f(FaBjhC@V{Kx+QFu&>*&SyLbqDelDuWFHldRKFM0?D zl3jiEzAX2NXD$kHzer6uO*Stquf74-eOm3ZB^CI#(_uE*s4mw;mfGc2<3B<&7Gqnt zL$asA4xfe#EQQSGid-8m&#kQ)^yC*cW!J1ZnT>e4Mv?2Iv$H%tF2x@ax!;uE`qDp+ z!Qa;wl@?eJ2YHswfpgaI*IBPnn+IoC?ho6nr3chJ1LJ40Rc-C^x{#tZ=7P?MXlcA> zvpjXh``zv=+|~4tFHuwdB|^-M^n)^my`zKidg_2VD)*Q5W6zl?t{NMl#&?yw#>dcEkZPcf@G)R9jP|_Ih<5MR}m$?qM6*Ke)u%> z6d#n8P_c(;Y1i7TV_^eVVN^S5CpVg&>?uO5#)f2gOOtT4+fox%Y3EaoRZQDLukl!I z&z~o!PAHq~IL$9!tqOTem(n9kZ%{tkf>vifhmHHyA6HX1(t0+rmX3*q6CnzBLFyk- zL42gU-)Yx9L|xHU7Z{6Gqq(1Jx1Nw~&Zw5wr1I;lDpL8xBC8|&DLNj-5sVP?cSAvz zi~G3~rA3Ij(F)OGbR=J!l9{Wjyb*%^xC|M_XuoX&y1edwH*HZAV!m8vz3AVq67%9` z`I_C!r=}xjtt{o&1QDsV%n`zQ-Ney#Fs3#YT|?zon#yL4o+^pY`@s5d3@81;UGMa5 z28#P_@U;0b|F^5(TbL2Z4FABJvyy&n01vvm#Ft0ma3!pWr>NX+qOE&ZpOGzGI`l;5 z3d-z{@p9EwTHUC(o{gl>>0Lo{d?B8mq*z5Y{|+2_2WEK`-PcBED$H|jdpKUt%v>`1 zfr0^i3k({r?kcD@&0iSv0}t+bOS<3@4xL7DZ>@Kh_JwT|jjF=7zp zaEpqku_t{;jCfAuPwUsKh8vhSxuPEJK>2kl)erMi-^nP)BLA8%dsjW$!;1J7jxk!F zu@GnQ2JP0(Dwh%F5(oPvQN0L+o#+)t|wOa)gd|1s?HD&w5b=e?&Ky;1H87m}(uii7&tf{v|S< z;5oX-o2?^ycNJZ#@fjYCm8*cwz8D(=5!jt*7rX(BTNMn%>Aj>Py#}M#j6X~jt7)su zSWx|4N(Hh6-;`baUY9lB9p;3+L-c>xp1B&IuS3}#d(}F;K&5jJ1>zQ0O-MCKJ!3@` zfn;o=n3?AHb}`NVuiyKz81aF9*O&8VFZrfa>^7RbKf@*IPc~V@M>)(LPgV0}pO@vT z(Awk@T{gt0B<>5I52gk`1g~N~NBKTy==t)PgzqRa-Rj!WR9_45=xwaR@53FP6qlij zm>BPDr`;Ajh+FO$oR?pxsGt8f$9jb}E=kLmT_pWMW<8neU~=S5_-u~IRS4iv)2ODg zWvQ9s)1$cI_NvO7e1j%L2En!Vx^h{n7ssLbaL2Fcch7`!Mvg!L=i?D;c)}fOfwC&g zNh0`oii}FGeTS>mPf*AD7}GmbwOpSI-#UZi$oxnrEc)iyt761E@UV+=dfI_2gIo9* zKIu18IE<%oh~W`$QoGdijvA=%7VCCDHRI9*`Y}-r{1E1{5#Il8xXVqrpVmAM218CR z^4vH8aqnqS!v5w|oktT&zh;uYpF*`@RaL-313WC@ejOmH+<=j)XdD* z;^^=Akb7zTON!k;BnAbet^L&)rz63*;DqU?t5EEwlq*x=Y18bvCsM6bL)3V!%&P3t zD|d!Pcjpng8hhD5rS=$x?0Y%mJsiOp9AY(G;Ahlg_hin+kJU~!Ra?%pD(=8mor(mp z(>nCJYRck4tDp&vYp%X|IyB;%*h7$_Wmd&~?ps(?yGFme$n@T3*|k01e?(U7?<2m1 zg6hEqS-rB=6vQ7<`Ajo4*npG7Ko!gdHDyz3j-M$~zj5+c(dbEeqYC_Q7=_Lb*z7m@ zn}WX0ThYHU_c`!#qj6QUQ!~Yvci|_G^BImixn!35@JYNzulP=!c3X9Db=_{7t7_!^ zF0h8zyW4%f>qoSQYq>GZ(^cI?SCIi>T@ia;OyfIa->eVT1amy`28hoSxbV(+g7$vz z99Tq~RKZjZ?A*XqP2aX0^e{pnz19rgR}kfH;(tfqg}Cj*>2IyOLf8lsN-=?SO$Pc-MeWd!n!I~OG=Xu zt%RCR3sRTXteN=zK%xc&&gV#c%UzMx&WzL6Vtam2TKc>8aS#@b=cT8k<^=(SP1`ef~I#Is6`Qk~D&CzentdFLmdP`04iGF#v zY0%v9?p*!P(P@4ielR@99+>NIv#ErSpklwm@#^!97zPzS8mIr@GnymVtm3)>`}sFM z^*$=iLhhQ6=iRL|Gl9P@dVmN#t~HPKi;;HR0n+njKk)~-K-t8R#V^hod(PQ4+rtHP z+CQpHbI}bvqDCyjtGqII_V(s{bI>#O71_Fqi|^n!IwcNx+7B^;`SqWjpiD(V-Km2H z)69&A`0U91kW&9>cxPmq`TQ29yhgZgtGpEsK2*maiH}$5Rft_Hy0sFaw(D9Cq+%4q z^DqT*+|iE^+EL!p5AseaUIwS)i{fJ;mha-FA2qudao4>ZFGoNR-=@HADmLb!#F_%h zZXc-#8Ov`4zoY{BSY1$p#^*s=n{2%9rs)MMnO@om#i*@&{T;Va*L!|iC32n*${J3J zl}#4hk5O6UH&6D4ogZPM^DpN!J*=ZE0cUyvvT&y^X|@P61%IC_axzQ1o`5_)gJa9@ z`|R^|N+y3j};IZu%cw%z?~Kp_*Abk^%ah8|Au!a(ZVOr!L%PncDi_*eKtp zA|*)^9?KyUW-n1lbkq%&(7*m3UaZ4^E>;A3ezUwfTfcEqA6ZEM+FukeEmEx4Im~lD z1dXIQq`}ric74u|G=z8I(*KK%!orVMf&XVNxj-;eRa+=tnLpkFZa}wE78QlrUoS2$ zOr6WBoCbupI^p>xbSNlZnKki~H#|pnelJ)Nv<)Uh(s#q{3+vTC@oj7H<*5=nDY{%y=e*O;C3zBSBViM5yZ8^K9d!<-%8QQ&sJCXA2I`F4u3%Pofcj^&&a7NeCHNWJ5Kg?G zrBzErW9ChkQ54;1Rlr;2x-sz6I37yX9pj%KiD5g5SHke|9uNSph70mV~ z+Vu^-%k}z>m-QXbWH#b`FxWW^C;6N|3;A)zNY;044&fRNr;70bobA+%CJ^+zp^BON zX(am6X`V7)`GEQHqv$Mq`0XlI`uGZl2;A%GRCSFmBd82XJ5H4 z2c&AGN~RDuoVJPkbiU{O>W54Rn*`Dw1Y=Cw^!%MTfeEpr`U7Px$7R9u}0L< z@5j?~Xmy1bXC2>H#pEY zRBRXEh1fqAl-#mf8%bysgtGj&|kS0{uBK<_KJ#aiLW{!n5pWT z6EqG+!iOi|MxLZrn@wRfU+(x=EUkfQ`wMGZmY}ROwf$L`Y1Q}}@ZsM2t8Yb%wekFr z%imxGy|6K3WUQ17+n8qZ1Px0^5%T&_t?=5&PW;hr)X~Ra6I&7w1W!Bly-d(4aoRiX z2&etSi8q(kl^M{GdU(*oncs!hn}%-Wo-@@>@5P5C8V1)SZ%p2rJQOSmvL&X&0=IMT zDH1srs%f@<7lf;<9q^!TvXANYQlX;o%ah*J+if>sfgR=8W>Yt(Z>y4p~ znIlu#QztX(rQU)Rd;}-RWwIa#$FiyVP>%0-vcI$3l8?x?-$9+mV>q_LFN@HWtd!|W z>Gx;qe)~btOFCunLaYS#^V8sLaBK3@qv*a4E*wsbjW<$FB;hx|oBDW^b63K2KtXl!WwR##rP@M7 zMwulo;FQizG&=)$&c6u(DsKHRRELkt%ImMu0{%fIwAxC2nZ)Wvq~z$m{!SZ^4P*RHq(~{bIuSBQtn4#F=NrEkEkIH1i=|Qu9so6rt*Fpep%UJreSs3Q-*YW+HTyuKj2Fv1fU29#uPi z2ow1`dLLitO7`7sdAShIVK(*fJMLN%F1^!gTB;@zDCPTnOx>f3et| z%!O-|rDdsT&wi6N>E23Y`wJKJw7z{JRd?Di@HS}ppJMEd@xE}fywN)RLf_YCHS?@D z*|Yt59Cn4lAJDVU<)9r?`BW19d#gk`$N`vr%=qo9w$CHKVsxIP8-Cbbf59Tvf(Z8J z>v9)$bt-z2GP|;h;CWY0*7L8DC0~vmik8Ar?|{KS0G}8P5xiN=_YiNhJ1IjJ%kD4A zviYf-YU3Lg(cGt<%_edjX#&OBYCYXeJ#)fNuj@Hqv3K&*@8)t^=dJkdZ=I^r84}rA z4RcVncUU)i%C1|C_1YaN&Jmz9q->F|G7?&LP=;P(Mg3_-b)Z&0Ppi)n9dh)8PHQlI z-e?@^XCl;Du2<*m_uo`rIWqrF-I2wu9L5?%<>$=kDJr|uD)|recMWv`ouPA+IX2|Q z$>)zArWCD5FY&T#UrPWlv+gNHH3n_!qNDML<1pHZWJ3-4;L zw*3l^^cXe3^D^{{Sz4B_B3-Sgdbo--uedIelLl;+yT42=)R&^_V7NY%tr!%jo-2pq zWy*@K<>}^Mz!>kxQ@;vf+oYnn2L3ZjKiXTjGstZI0GQQ~&=0Qr+j9;~wNNd#!nl2I zhPARDpp1O?9Sv_=Xu&U-hx_T33*%qY^TjVm8iZe>RsLIq>7@65#QfiDT@X#n;D{GJV<+!HiN{Mrq=)7lzd~Wc!??0V$j~Sf-DXREgU)*Ix0ThV_M~C?6@d% zB~c})5acu?`~>CjwekCKi$hgjD`5C5?7G}C`-xP08nPat5_Bbtyr=tdGmGM#yrta1 z0l&EgCBO}w6kmlF{EQ#03>#Sp5BY)?a(w1SIK#fsI#;%e7LKj-eNM-ppc8Ezbamfx z;?#roY#P~KMeq5DzVaRKs;*yKB=jLf@dc{mvyp?*E$Y*xC;T~4F?cGtEhwZ0DwpUO zf1ko>60YM5mDB&^tI;^D3#n0dUHR~$@bh}KXCbyVXcm5z*(*>7)>V5Y6T?KA&RGsn z`630v54idxzxN^BWQvF4caY+ee3Z|{3YpyNAKVp`*F(QV|Nf88#mSYF-L38SUS?H( zupYKz^52yUisIZZh08^IMqiIUikS=r7lT^K*Mk-6g9qLFr9{d246C>^CHfLo^(8yD z16=QIXE;se;?&e`-@(};5uXyTASPy$*ZX?bQ}D>f`q5c*()+?O{vR_igeeS5cT;#} zLZd_fs54ur7|-Zs-%)>+)ERDqd7ZXvk3)PrIJ@FJw;VEtj^JPY_lsiNNA}%vC}=M$%D9_no#EeMIgN)>PlT~`w31HS`zf_p$5`p; z&*8F8xtb1>xizzVDjN)GC?(8e9JW`7N<^AOKZ9I7XWl8|4SyOeSKl7gq0Ng8k980& zT19>fy=8{uztp|HZjQ|F^}$;+13BQXXb^jsYGPq;lu2lXSp_(h7Ue%V*P_i_pD6W0n^gP*BM2>&_|x0=F7eq+h`^Jb zDA$;%I7>rZkfY~=;Y;BX(M0T@*cUS81W~+#7?mMop2DZTVai}150C~tKq3_09d%5% zVoc`3U;lAtL<3doNr*vR81+Ai8g^cL{ARPnAlU8QYVt25KZWz?N6*sFbl1(MRiFJS zYddg2|IPHs>%1)%!>Jd;)ziM*i)6pe+`Vd;rhAKq{vYT4jipLFVLesCmOK#p9d_F{ zQUkZSG&WGS+)dN+hzjVujC)CKunV4986VY^x7U7MPf=Y@OdU2+OudQzA&4$=Jz&ay{f9Vzv#aV z(maR4aCdxoe23H5(tZz#NOe;R#c(Dyt;c`u_dZUZ`IWEUhq(PmC^ojz;q0LlxnAz+ zir=gU9ef$aotHz`o38v!2a(SNl(UVL;qyXVJZMmc9fma{IVLcVs%v<+dJPf(nu zQpIp5q0o06PhP>I?Slq2)dSoEm6=W%@FsO*BvBjdmm}7RD(3n~B3#qX%_}Cawr@|T z-f`Yr$a$3OB9pk6H!%g(UcWWOI(|^adRlGpH70mZa!!T}*%IN<))H=gs#->7??9Kg76v zfpOUuTP4!`?hTE`HP)xg?d2S%)m)F;sOcA)?s>rbZ458F16ndqb@2#1bf5Y0v9X%` zr;3VFZ$Qqbc~dt+=7&R9Zi`ejq1l6yejP=^eRL*;^p;(CgH?{K;*B>ai(B1qo@0|$ zwNzC7i|=RwywuF-2J?7tQPS7PqfLfaFZPW-rFLo%-XESPuKoiNtpu%WYfXIR7yqfw zE~KKr%?Sc4ROS7sOmbx|gy^@``~PB=yCALi-{I|%_vN4T`QXPec-NU-BwEac2;7AQet)>4@+Pf80jmN?X9MNJrliI#&Jh*88yp;Go{;*!SD0j$tk(1$j zAjju)TNll4&2WZ56%#C7&39Ibhk~IDK=d-qmzRo zv!x#7ZExygcpIeec1*;dkd7~5W`}5FI`WlnV(-nOv)WI8QA}hk3;UXGJ}8_2$~9tR zKebRj`p+00TXU$_TzblnRIKF^Kbk+BK;5<7(-u}8%*9}&)E0B0lb=u*R1FtV(QlFo zYFWpP#q!-0Jq!I8@^UWu*BOijV`C{lhM5UD1DStOw>F43Od0%Y3sd@SaP>Lj*LX`) zt%zJ^u+FRL59vW(jIF~$f0)%tG*xeoQj@e)V}Iw%juDa5j%LZ&66kLTmU?~g1O#in zUSyZI+*uv9z%*+u-P*_e44!~@*Mdl;728jU$ZteSL=Qzj^^W@_D(Ne`s^9MRi|5M( z!(tz+ReRz{i^CSb#B+9lHjMS2-sUy&uX&QUq8;>kKgGNIs^?AMp7+b^>Zt$V?p`!n zH!=XOb7QE3dmf>dYHm8?IcxDBQ+ZF}%>!DtR}x2j*Ys&ibL^jU;_3nV(dVOYP#0{o zXS=IbPo)l~Znf{~gibd9QIIidEe^?cB$eni;Uf!SJDA)HO^(f$fr{GY zf6}x)q2Ib-YQG*P`acuH_rmK&+VQtIJFI2uVf{qJH>!ol`!PI6G_R|d9>Mu4zlnnv z#MBdNlp+-BC9+grJHk2jri)D1w^rqiujt_M=<6l6WSwKmYOOE|LQBy~7+TJ^% zOH7|OP~X(qyRe-HvL-{0>$<|C+#mSP%3O-e+O@}G=^Ve3?k|0c%`ETfGc!AfOl3a- zcT0Qr&hc(%Y+ZX3*ore5q}^yjy_?Lm|Pwk(L^*Z z4G&sFshD;zd5r3{aBLe@eFeGp2qfwX#QY^Xu`lDf;tiZ8@e8#4#&EsR6ssv|X04Vl ze7o;+7=Jh!a&V8?$HxA&m&4QbPjo6nt@tV+sU(JSuBi%&D!?=iCp0~Q0hl-wd zi)wX3bhH&!LZ4SmC(*^+PJ!SvNKG08uA}ez&WX0gIlCsQB%66p6Lcco^-iDaVxFQ_ zJZnug6yLJz2hLi{r4#+R%M^t7O`;^N79PcmGaXr9@XuIm#?vaeIe4a<=+l1Ci(F^t zoU-qe!N>TQ&mg0%&8p~~(8Dana<&5l_f0vWwIwnL45yO{isU9{Ex zZ%Qnn7I=<=bqROlVrpyr<;vaU_lfId{iA#QQf$XgV``)I`ya`nzc4l!;PUGi0v zn7i%z(s;!F`1hqMlZ~7hw(Bx~Qq$Z^$G3`JU|8%HSarI(*kJ#CO5JlJ{yJ4fi&)y* zwG`~`byMu6p#USPn$Njc$dUAbV2{Wsj2JVbBMDv<+s^Aj)Iw^UR4BLgv9 z6-`{E`^A`wYOEZTURgCL6>`(d^rfMiihcP{NAkIj{3|-_JI!sbjTF>XAIBGk%}tC{ zpR838b@jZT!}v>5`+iB|lS}41?Rl@#^0k!xYH-vUs;&tlH`{;LgvN^(FN?}6vgWMI zh10#}ozY_a*xtjWr?Wv5_3l|n#4U;8GWK?U>_zo5A5cp^YE>Pl?d%DsY$M7|lS?W_ zFXL)Em=SDD(=?lQ>kIjQqwM#c$ofD^2uC;3l|tVv~`6MA?Aw^2AeUoAG;onv}~%Id#QvBOOu0Rw0k zD`u_dZQ(n(qg~Vo71wY6l-efeKd!f!WRjsR9wtxhuh{$0yP>+ib+Sok-saWgBg|~< zGEq=YRNraW=2KOj;|AT^%4(;!`6K+g445O9))*DFk`I_i_}2fu9m|{>Pw)^uU{5;b zzeJ6tbT?DvqMK#jCqiM`vCVM97h?I;3b%@mTg9D&Fqa3Rj`zX;WnVAqq*&LDrsN`B)Z0+-8E~y~X3|>ek#pjo`kP~3 z$FcYYD>{#=C?EXe5!lvzmE>G*5~rdCOg#5-EMQ0px_vEp z_710mR571W#A8QMHrP0c+ApZTJ-^^M##*z=}O#{CGB+Sr`IQm&V2%=A%R`t|NS zPOY*b)F<4|sw|BopDgn)w-bs6Dfyu@1pgVh&jtFb@{rG?y033Vs~i04!fKW8>4*zb z;=Bh%NuL>NHpX3dLlRf$tO|Hni^RJJqaDmBM8oZ%kSkTd6IB~29o0r?;I$F{dNNCP zJb77nPOpvwaE&{~th}cB(~cqELe`4Y5;xYj-e66yp!FM|KRL+L^mTK5=VD*+VEu|_ zskW0&595EgLE^`oM>-Ej`PZ!2IJm-QDywrC(Is@#MZ#MsuAjkv?UqTi`!*j!y1MHi z|BMfT{XAr<=v<^U-Sl_}W?A|0S2*uuS-bE$x{I}3-rj~U|BLBctrnf{OTDWCew~u1 znLWIX-tQ?o+0t1K)2(FTukECtXqc-~53RP7(wdD|RFv5v3u_^C>CW|NtU;`w=iSSz zZ4eA5jkrDt+n#7WkEWJ71$7<5H!}rKzt0XjYh_&<%*I;mi5J%`%)$U1!6-dvC-ujTUdozv*ovpWglAtI`!{;06H!*v#U7q#_GJ_v_b)T46TInVn1>2FoK2B?WyA5bkrgvPpQ3tQ(&NU*^ zjX%YGYTyCxoZxIRUk`c?UiY4p;1AId-DC1AKi&2XyqBj!Cd!$tUP{k!B|J5&c6dO1 zUzxbe9!@*Ew1AT}jvsOEaLMS!@HOFkC>a*ug!;mq>SJmSh|%3B`7dFh>&LdkHL}aU zJJgkPO%mQo<5dn%zf0v%(>bG^Rs9p3jQCILek{aYp|@}?yTb<~>*?EDm`&;pA=suv z$`}r&b?$-l>OUD zE?YSo3~}cZesxEueWl=n%T!t=sJCx1L9;@?ui_On7u$9x*-0v zuk#&*Vm#bzHl@v*aIbju7I%J8W+|V!N#!wyF0Py>9^i?)@yI)X0qLcZ9zzk4&-Yzs zRc?X>&4_)6DQ)6>v(@&}YdZdq)ZufX&Q83C!=4Ktz+)^_qvdtKb2O7RI5K<;mux7b z?TZ%13#T1C^UC4o!tr7&xn8tYTP~+a>hHYZ`#BBlj1N}rRHY8B8XUp!elLd?H{0@J zv@NFUxle`nI4t!u*OpKL{1E#<*S|0k;FxZN87#^=S#2^@b7SN`97sV9 zAE%*hqv>AOrS6tpKA~tmm4!_X$D&_WOOL`B{U#Fh5w#wLO{P`ZB_fTXQ0u*|^%U9T zO@Fq6YOeN`p5v$%$PR;HxSwZnO}k(mE$ycEbZ&i*PxO^amVi zi-ikX(>wUMeTt`gS0*j&iAx5n5_jnEW^uu)txFqb`Y4b2fHvZ6sjS+=sqLZ3YRkd; z=sW1fmclAF>N{?7?QtFLG|G&Eu@;mWuQ}o5lsWtynH#LEjMSYXb(HT{Eqb+8&Q^V% zrs*Qh{UJ=^pY$XztHqnaHm5}+&b}$5n%;naF9wS}XFq(Y!~6gF^xH6G%c){7#fL+{ zQg%fVtXv-Y-<`3Blzr)%=M3Cnj$gb@{5Y0MPhxEGo729UDIUiy=%hPZl_7eL@8r`1 zaJP>j2Th^_;ju@|wtuc}_*QRu4Bxal^NmoU@GoX_Mn}8(%?IfT|FkamiJ864O?^ot zaa3J;BSx>M4q&|AGA|Y69~=bIPaO4yckvUtL(enS=|uY|V|!7o?WAw*53zU{Hd@Z= z>J6cJ(FD^^@co(eFD>ytCqs9tYAZ)ea4XvouL%KOmxb>93)Q_n(UyPRWvF*eC}m-5 z`Y$JqcEI(%lG>k|LCIUz{PjK)P@Po7YvQA1#IiE+I@5|pA!zGqB_4_PiF`>ZSB&PT zDvidwsXw7Rlep<-gI%vNulSrAuaNpM1Kx3`xOYH?`^9X;<4~nJyq*eh1U(3qt%74a zqkEX?E5}24>aQ;4A2sZNA>|oCQ z+Sqa(VlnmEe)CAhyy;gVVV(8j`=Ys`dA+Tt=&EkW?4Pj!$Rn{igdAm@)#V7``WL)X3{Rnj!b0({B`bcroubyQ44 zRUWnU9{0$`bzD4)^PDwr&e^9OiFk9d&RP-CofG3U{C4%bl!RD^iW z(wnZ<**=6#J*kSxop{c7Dill4I`@#-j;VKUff{&ce2U{`jz;D{X`5tKYdfsX-7tt= zl)59i95s%8$jL9wF)lZi)h_d*XuDh#D5qa*VfOei{q`HYbYikZE32z=P)Woc?dl1- zh#FkJTGQ{%@V2^fF!>TEG!^#o5SG5Gth&dHNi*GEw)hI`YnN4$-7`NAg@2mY#T0v@ z5WQ_zS)wt$?NQx)S)EAO8hPF<*^$T;Sb76~U2SE?|NQQiaGOG$$xd^4e+z|AVS+;PG47sU}b9s#jxGH<{y^3`r>N ziAQj+y*pCGeW#kT`rUW_SWmsd-$3j^VfD*ur!_r=rMzf5ajjbKTKln{zJ3=SYZ+?P zqw4u_CV7g$#m*(#=$q=A6sc#9{&K8vtUQI;Xzx0r2T6I$ABve#-1m)qqdyCeHvwAL zZd|FaUYoeV(?)|YAZ%ZnVZO%<^Dz3S&7A2+>c^wd&kWODpV^PU=|XBnLecq7JFjg| z-DWrJ_slC)^l4r7P%6ufkqfGbDp01IGq-r!AD|yy+;^|K`ZhBzTTCup8=uUJf1-@K zQPtFp?(kZw$5pawi^y~*#H@C=hJgwfxk(S1D4tCEHL5biSGfY$I1gc?&CQ(OM zP~WEcmR!)w>qUcE+zdzCjiJbz$Z~6|3zga!jD0WNK*eAw?DShJ^ExM74fDhYWaPJ0 zn2Sv-uJ@}y!ji5C4d)bcgY)6Wt3r0DtkbTKm-V;zJC&Eb;iuy(R@OU=Lm(O{8N1V7eo6k;~b1A0=ss|6eoxjO5^yJrK zwicPLuWohJ)5F}Zre6&69fz?=#)4=SmD8{0UD79i)>I?6&U{S=G{tucJ1hAEx$&C# zM(g@_ecQj-qCJV`y84sqh;HhL<-ClpQ%BU&x2;h7+%M0(Yx-(6Z>;f7gn3G>*cILr zr^YH9goBwdpD*=KN9ZTptB=1>TQ`IjuM;;9szR!pTwGv3^@Apq@|9k<7aIhxnS!bm z{H_`pZATRm`Pz#DlU+L+_aCQ{2;0f0GY30cx^(0}IK~kbOcgu19MXiup!^dDe7Ned@qN~ix&rGb6XQB>oG>p+KmPHA@rA@ zHYLgg!~E(B!92TSc>H%+`KD;8Na679ymb$IQ(aY>BOuO?LNoS;{(zGG7+s3Pd|EaS zaV34;u1E&=`%XtGx@z===ft`~p80F6z(rBBBR;+wUSNawl@FGh#@KrCl&oo8r(&n$17J-b1^a_T!DrUU z!&cXH`1;Do9C@O=Q&Vo!ov-JGb2HqkjBh*|vacef#JoeCzCV~8EDqK}6>bb($74=| zf|xJhM;X&2{{&xqIn~XaUkzCII4awxpmX)r))n9w{en|L^<+jcgVy#vvkQmd&53CK z$c^EKrWr3#s}4-H*SqD(oD4&4t(zDOf5`(OTa;)XY!1$tQ+-d(Hv-Fjol}eJn7+S9 z%$y~YFR-SEWI3tbqN@KrbU7T2#xW=xImWF?R1dxng5;9mfxrx?`yS&l^B6R8kh=U& z^U}pqH<@ugpXv_FXbU$g%ZKXa*w^uq;{20AACoB)g3iHJ6R%IlYf%mzqVnj)`RzAR zpqgsnbq>n+(Z~NqgD?RO+KnndGyX%O2UULl%UK9k@e z^YJg&;BIB+MB$#p#Po2e;sw$AHxq*SovU^m@1PET^Ho``ftkiv^|>$e zL@P?wvI)-pUe+XK2YK-y74l`VpgV-^x_CQ29bc&F_xi$p)d3US_2*PoHFkbJVK1u$ z>hkzF6q`nMv`Ah|xq6pM;A*@I7ySMz>v<~c>>>Yq`yuU-`i*L_E>`h#uC6_C89nhJ zm0Z~&_$2ro{*v}6TaP8H94l`6=V3YZ2N8ZZCFr-_bS3K7YMg%O@ONrV2X`&hcnIY7 zc2jpbgYWe~OGMkN(FW0bOgfE(>^-HzJ*rB*9~QwENH>w4Yu8E+lXW;CHc`Fg6nPfu zg>ofcq0!m}tE!Aa?ShM_=;ZLR>X%cg>(l`cgsuzk4e!KN_2i$Gq(7*LeQAUx|5lWL z!Mw+&Xk~e=5}bRYihM}w!PIl=+Y~MJeR{qH+ynYq)AfAeSN-PyR1y2|-Iw^>ELHjZ zj=60>VX_xGS6ps7sOEZ=W_O|tQ3N`F2?p|t_q^Atd{m`(RYkv&FJ?;`$FH18y$?e6 z7WQ?B9O`PT4`@EH~TIKK4db%|wYn(wE}oT#d9348g}wV#K7w+qL*a-?1O zp-B^ZEi89cyxx__WnKwC@@o1wQHP6ddu-DjT}WRn=uvt68WXRN$>QXB=SHMx?|=aGe38&IGbs1 zX|kT41GyRM1;N{5W&OmvYWWScRuNusZ|YxqsEbcnRWX>=#VlW|6EN~Clx1(kAF})J zRZ%z8@2#U2`NEsd9?QpJz8t>jC)N02)z%Er<5%jxau|hE+_aXOp^nBU!kTh=Q{#h? zLB61yYk!B3{SQvHK#y8H^k8Q1RM}LyR3q~U&G0X$LYq`fot?$f({C;wylcMk$Dn7h z->RH$_NW&0WFDMqwP}$@#md(x^aolW17xL@p;cMys&A}^TKrI=Tku`5D;R@A9c6Vy z;w79E)g8mc^R6Bqcx^|?;|53;{6yb+qv+theTSVA+^!v}WZGI-Hb@d0L< z7n;KULtc5nMBCuh-KmBg&;Ce#2CFKi=h|iNV?3w%LUwR9*EZMF?@c_x=Xj%xR?;qP zOFywfg?3EeGsw!k8JSn|};y*2ZFS-3Gy zu#ZY>yUbD`c+M~GYc?%IUKtB9J_DOS6E4n6-D#PbAEn+`cYLL%AB%qp+e=#`YoqHa zEnBM6ngw5pvmHd9hoSSoP;SJWFx>-kn?BF}oQimWFLfj}LN&fFw4GbTCLP2#>a0?J z?~-5>pYi&^V7Od?cy%bmf8j>BxoGGi>+-mrwAzGQANrcEW_u=!JBMSLs>3kW=F8wh zuv=Ap)C5&^(?*YO#zj+>upFFpc^ypC^o4oG#8*nfJp=ioJO1v}mMb5jxV zz}b@YCJS)YA5wMSO)HigJ2ygwxSKxox6IGf4vneBis9x8>!{msshH`FRm60+$8;^j z`=)23tEe4**EbY$bsu{P=Y`q7i%RVcC$_c6zT{Phe-```ETX?E8VpEmP?!D&n~#V9 z6M1zG6?=B4w)n!0xFq&)qEaHOV_F>hBt9Y0Smm(A^`FQP@58Ci@ewI0;x(s&DCi7? zq9z|_!vp)$0`~Tmu8CZL7PW^KT}$El7H8=%eB=Mr)2B>GSLWK*j(Twt6rrJs`Oi}Q zQ;(*G)8Vdj4&clDuv_Ddug3my=R@k!|H%($Fc}v(7PizEPl0e9vWwe_c%Q0iN9)!a zz_{KCwO47~X##7%ns$VY)P~0Z9t<~^4>y=oTd3>#Sr74$u6nRI zy~TvwBwB{sG0ylcwN4$JzzmGS4_JYRAjW@~1u3c4T4dt#EjSI6`;d_A}7;S&>(kLzr|g{}{> zww|)K>T_HC&FMYqX{t%#zd}z^e)LyCB%l``(|z^MI!WpssP8K{l)vH&IInaTYrE9!g|<&`fWGHgDu-H4PHpNFW$H^}6_;4;pr(;kr3%3!P)M=#-DhFDugY3wTd-G9R&U#Gv^(1 z6Z|2wB)PC4EwXar<1niKVy#pGJ!p!?)Bm^Bjjs^p7l}U)o4TGG+UadwjAn~}OZidG z)9wjk$se-%rH$gpEm`>1AK{!%7Wov`^0&;iDOHfN@Mf{+3}ySblmR0sT{6tpj@6rv z(m`~GUzAB?qi$as%@&=3-@g`C^dWD+zbN9TSy{K^6n97NkM)Lb9g8oOn_@cgpDFDs zi2(WHIb#2*;k6 zb~6&m6yx9XjV3@JI?IUzt&S_1*Fn`LzycG2Z6H4}Uw(IwFZYrHO+h@OV6 z*Q5KaL4UDMH9pdA%Bg?2F{E$g(OqAqmea0}sVwW;M?+QO&+u&e7=F2ka`O^oiYH-; zxI~{fEM>wm^EER^%XLg&IVZfgwe_Bk=Ypp#0wLOGwyGn&$$YAy?3@XYraGFYOrH;! zQ}01zAG+$w0UY_aU|(8@(w%Td>p6w2#9~ax-Ch&D%o)Fm4&Xxw4MtBUFGvISE++FX z`1Uwm?XymUD_{qHVr`73gKEPGda1glX!IyuPetmSE^^wk)PJcVxP<(iH~PYtvh!6Q z9Ip$LuBG#6Yd<^^jHk$d+IoH$u725`VJho^bk0rZ4jA)XJ3lr4jESjF;K zs>9y%ebIjA0A{G+pLBIdlr1G2FTu^94E+>-C$faU!@XQ5Uzd}HaZ4L7N^exfccRUE zf+x{%?vZ=FsdGGJHpr$IQqOx=KSGDbz{T59ZI||CA9QUOz5f~UHhr$!6+KI3ePv5* zadphvcwP9vdjB7=r+2{8HtShdVSFo#bWc6UETDq^vt^-is*VJfJGJmo2I;oQ$wS#u)XRn54 zQc#UE3H?QUkonPuaN2UdQQDCr>{OuZS5NIhu}y<%1E4eyAQh8f-jsi-5yU6cGxJzCkyIEbUp728co zR27FvSq`6hIdz9;zF9Uo3hB7r{=4X$wsY}>O!SAoaH)J!Ef^sRRDgqBrEk5&yQ7)9 zEa?R9llH;AsFw^M$?2#v`xj=gJSd*LFPS$vEC>bHC)(p5OGHaX;ymF0HcRt9FTP(ha#L-u z;-*nPywhsl6TR7*`Ul>)B)BD+FBwVJ5hrI*16GVRiWZ2J4(G;tUdhs^orMdPvJ)!e z@vft9FA&Q`4fqV?f46nWr#-(za02EtuYSb!Xqj z_|};JKF@t*mhQh72Jw>lp>1&Rz4*T;_1~MF&9y0GUPeuMtgBAvme83{6|B^i*iZ3+ zV%3`9?&L1MB^Pyv%}fwIf&uIWH3-3H7G<7+?9{S4s;JG{>pAv?E{414H|jZMWdU6H z1-0OIGCW zG6SaEGx55a&KEGARk;-P;as05^<~D}8J}ca>%L{2i?=>>ESw#pTp1g-E%A!pESy{e zC)teCTCD^B71A*sqFjqMHkvssRouP%sKKXU0Mp9afN%Z>@vDjHR#oNX=gEG2TDDR3 z-9m%#Tx^UdE*&l%YM%KIwdeb)!tQW`wwSnGoQ}qte|?D`$G*hhLBHgZ(T$|7zWaNeJuxeNe#+~r8^}ZL-p`Ha~F4U(b)%^t)ily&B zp%R&8QY$hxWIQ8ASC)c;^Sh43WL)5mX$T#8nRZ}p9H2it>g$rqBbQJJiK95 zs!r;+jPV(}Ga86KlX$>ggKJHQmZeR-7YQy0A0)p^c1nIJd*7c}j(NO@WBJkgC@kLP z&g{kmXnw~3R4gCRUj7u?6|ScyEC9PJ4lT%@T$ap84otou+?sd**E&dccr5a_Iik(7 z*;E)@DD_`Px74oG#>^9;)8Ru-f;bqDOS^}p6zXA zq#j6Z%NU)}Ib%sidC0>p&IEr-pYyzP{ql%C^<hq?wNWozKB$#=$>~Mo^bGIPspg0N-=ywe zuaBPV%7uFHpF%&-YvjjT-YPGpqx^{E(BuutnUstZ{_!je+!l58F}coc1@Y zb&%?PeP~Pgm&mHrRfNRW}{RRC?Ss^8O+n0AbR4lWv%Duixl@X~u zTzK<_7E|Z0iv;+;s3LI>h8Y7=sceGzKU|DnlFAVGL2LP zb{K zBiCk2woNuqHnFlFz~?XJ9eiF55RdGn^r%Z2Q#+LpO50i8@;nFZM!eGUMSm1=S3^5m z2LHM~75oM#+M;r~Hl8hZDl*GiXN8<~mdo01FXk;wRiq~R6G}5Tyo4$z9qE5fjOEtR zFZp^he{!5|xL@Km@#nheFFN6BI?@w%#eW%%WT(6N^q55!`HIWsd!zYHUwsXk>Z6DM zPAs{sntsApo?#;Jq^tMJ<6C8>ChpxGds#v@-)I7(AEu=rRI3~%(T{4Eir#e(U-@o0 z{#%&Z?&i&2qmV0N;9Xumw89Nc1n`Q*bgHBlXPnB|?K@q|#j-YL|CP*d!e8;dF9<1#=J+kw-?^@2Ul;6)SJiHS8AKQkZnhf3pwMtAI^O`=eq2#WGkL561>T;_vh$aFyEn(i4cqlp*5lB_;7y4 zFa6!{Ls*FVPUyV=g)9wM4osY_j4k39y(c0}B}joe22S`y+sLybQYtN5)BY&1{(w2Npf z7|2|@q(2~grDE%_A(c!iEvCn8!Cj*YPH|bZh+g*>_ng=wTcOf&J`TmvwY z&qSlqm$({^ryv_c!+Om3T}d0%)?CK3;a_3hw|M5JvF~DcQiSulFg4T*4m8Wm-%qh? zpj|ngbdnQ8Sf3VStY>deL%PxQY&+)$zvbkRk)}dF=5#X%5OxPm!3?u|wM=$(qJn>z z+NM0mv&tsJp?PMO7lkJ9skzQN{l)yvuUPtxe)|O3dN{pue);NI>e&w|PjAax}Ib0-dL;n7@S>wm3}+=r0u%yd3N?_4j9j4 z&T5Bugu3umS!<7Ma9+>^vt^TAzlO3iC4a2JCH;mye=Knqe)9MDC-9u6W{+#>&MMj? zx9~hK2|XKbwsZ*(@SV{5V=&}8PBCexr|eH%llliuuzTHrDMoYSzTRC@J3Eu~6 zY^WNZr3Zcw-&Y_1m3Fn7ha;}uh^uHv>p0uQMQgrdcc^EdmQn7F?u^{!EUSDR zHM(JkGM$}OGc+z#GCYJA`QLOQ(b$Kv^w|MNMfx7Rce-G9&hwl*OQ{FkyG|A$Zi=Yfq>3Xk<(H5zbEY zLhbMt<*Z+4ds29P7j8*uHB)T0xb^ru(OT0sTQLMHZkWx+xx)En{FQwaX zPyU$Q{{i%~aQHLG_;hPO75$Od#&dMGH~BAg_w}mKsl99h^&J`NmFV8cbNI+HW)08U z@4cPj^9`@sE1Xnzz^h7d`Dkc%wr7033jZN*U<7vUl9|17bYHnKC=nB3DQo>MzhH3a zd2@6P{E7u4&yaA=$PZLSdsJ_MNs1phN;IO@uMM65$TaB~$YOuH@4ZM--cOC4DzZqg zyHNGB)78B=7Ty+_i?u%B`jhm{KgCPBvZTLL@sVQBXn4#ti1)I{lMt*o#l8%9#$u5t zBUCLsh`RX+Cw7feDGa19>K9+AcC91wbb{i}k2i#Q_obPsO+)_(-n_9DuqE_WsIU0- zb=C~cRR4une1oa5hIdStHsgJs%RA_hxRu7R5A^y=Pw=WY*pgpqN3NK&)lzN5k4}C? z>F{*^k^{J%4v!X(jp3y>Ail|bdU4NiJxq2y2c7=9x~|UtY8qJ<=Gqw=Ch|Ni_BR)~ zFF6rwy%U9Inbz78eI~XC=J=J`y_!{A&HcaPc{0aT?PM`vInSZtR?r?b$q-1-Ah_&t z9px$~f9#3$=Js%Z>`&UR*|4|*IP6FK0w=JVB*Zb z!AaYg7JUZO*)(=I)+qjl4)I0`?;7goC^wL%y0ogINCi=#n`wY!QZy9K$ne`pAX-| z`&Q6QcM5B}Jf~R5|yn(KE(ls=(XE4S?%mppvUO6Y)+C0<)kt5-^!vkn!PeBn^ScjRR z`%Rs7jr@zx-zp9qG66D~;wz@JJrc;{rbVtn#ndWxI{LWjlb0hIzE_`cG5U|sL$CRg z>nM?ChO0;BaFLj*TYWWllQ@FQ7Xy#S=kr>xEQ$_{?H8qDqG%3ZV5GAsmRpBCR4m_^ z=j?Zcy?rRuwj zqS#<~_XxGeBz4+wtaE2R7$r?*=1Hux8t$SxX&#GV2KPr^P=74oZ&cd}5o<%ExQQPV z#Xr_*&yDoQI(Lcfk5!LO5dP* z_-p4h%z}&_an9OBdb=ewx3yIucld?_#Gv=oA5(N<^Dz`_adbZ(DR1N>)5lk7BP#gr zhiGp%m@yq||IdiWvDZuF&cW2xLm)fvs(UKBzOwi+UhT9Y{0zo!hPaW?AKgP$eGSB~ zR&YZ6`jpbB4BT(G>GZLx+-c%fAszHd8iSXdgxyEnn{76|EFYg?v?QPFjqcYs-|&AN zon>4VO%#W>1G`%k0~HkmySuvsvFo+FySuwv#1=ciE>tivu)ACI&hGnMety1k@9xZ* zbN)3b=yfy-C$tQpE8*0fRdNzI>_9#ni&8KPt4?AnY09Z_oS8d6TBETjE4I^=Xd+3`6lM%BN<$fY{KJK4#?9*YWNE@JJ8)hoxlpkWR z|3`j(6160qW@#ppQ6&BUpx-FV+s-O4C*kRzvPbR8DtiTU{s1Iv3jflX5!`8$R$qo{ zrwDrTFLHCV6;n7Xv(l}k=V=-8Y}njatda`2rB&&;h^ z@7Y~n=r8NRD;1>M=|q(q$NjJIWHq#*M_h=u`Ud)_F(8#W!ASp7V>_aOFQCpMS#%gZ z&J4VKe|XZ>$kF~lQgbq9k&bE>e2bg)b|~Ni!0hV4RJ7+im!Px%sMhBl|CC#>E9Rp6 zdqPgbH~7s{uvpLKeoP~;@sw1iF3*Rt$c?Jn#y=RuOcBMCZU7Ih!8ttSPB9Cg`3F3$ z_35vxf@=&@eANg#(*T}yCluku@hWseEwqvDEG_KnPW6eBn^WaGzw!rq?1ku!UxOpP zrz)o6PJ|w6QGW4!Qhh%gqhTqBvAzycnFioGda71}U5(>Jij*pFL(@7mS$lD{_L82$ z=?3ETo=jiqkB;q#(GbM%1k6D-6tw^JoXmbJ=m{z^%gAyK5*xPlwq zGGH9-Kt*EV!~)G_CZJ*b`!^!1?HLt+2s zqeq*~o34ffC{8Vgr*0>2YaHo12k=dfBlGDwDq0u(tRcBPk)+dgK%sfoXajTc3XGr@ zZU=+J(0=rwf_2h?Q@0s=c@ApnF8Hn`-gP!utqF8s$4R8DNB-Gq_~8lgGNv9%{bndpE(2PQ#@MB5L^o; ziR7EO3+5)jdN{d~JMnx@kn*z5`Y7JK_#4_jcx_+aS2S9@L#WzjFzsg`kz@;JeqlO} z^VI8C{O-17RXl@1*oUv~sN9)4c0;|QO~4hCp4EMaw|xSy#%l1526WD+!HDa?on}XY zkeNH{4=`~XO#9Kemwqs}1yd7}GPA5lT{azM%3Ic26PO|kwDqv|n0}|VvRc-`x05B@ z*13|DowW3=dE|X?Q~|0FxYhx9=G6S|k0^*Pz#Hwr|FjyFh_BXyl-Hzi&3EY5Gm+(R z58ZQ7X)0&dLb(DR<2rR1O0SHl(`uvjjAf4uhm8z2=Ax;|3sZGKNv9O2@|RBVA?!@3 zNu8xX(n?Z|;!zTeX5L7S=d%@jQ&#H(@2xzT(m%Zd8S-K5k^pu|1nA5Qes?G;;(zED ze=@O}iuYE@vi$Nd@St_z1Af9pM6k!s8*lXvBtP!v%qt5QdWw_w7ryaj)P_6U+_062 z^*L&h{vZYaw67q=9n6>TMwMaM`=YAszZbpmPffF+qDUQo=P@Uxtl!{U$`pE#E z+e#d>l{xA68lCv=Z%oD7fQNm#@rSxLfc%R;N-dOq?@1a;2U5P9dYpoD=r^5uX=b&l z%sI*Ek2e}!xSJyryuep<>!*3=?U|J>s)2m>&1C+Jg^4*0wzLBkg~7?61a7e_ocB-l zymkt_I5B%H4u{SyP|%;u%;WVJ)R*Q|8Mj%s5VXV8b$KRpBK8AkNBS$bP&&Lgw zn@k0=Hq9K?Z}Sw&6OzYB++3_hv&$QEgWYQ?OmcJ}$Jl2FNWq!Hto#6kr~*#V9DMiX za91~Afj*$|ZA@xF8qWMJoCgKe>C8xhRG37lgtzn7pHUfGfs*ebB`pn8@;hw}jwpri z{1VRY7(GJ_%CW)di+x}>*Wr%LkEhdz>NbykdYc>jf+d~ar#J}FV!DkiAgBr_?`=4h zA87sSn0-;rM}xz5MC*SX|Jnfb+?%LvePL&>@!gL}C8#mmImzlI)Td8Icb-{(*sGh| z8F(5Db`Y5MN8HLem3HLJyPRUd__zk}=8};$O6MdGP;$}Rp4N_&H3}<%{>8A)z=Qq4 z8$OZUl1OXEFOQQefF)KTBlR4t`%TX8nds)PaF*r54Ie{NOEr9%b@z)!-HA3+K`(fj6LAkJoRdr@O<8eK?DW|@h*CsU!uLTY!3@I8|-{@9hZMqlV@SP|XSYdM46BWOICybD}cI zguZ1}!hT5uwvvnT9$}HLcp7%$g6F+8I}m2(lYRni+ZeP{3&;j|&t$NYdA<-iUB|&w>cg)mq8sRk z26-DbHW#Q+Dftj5n-AXFPlX9ukJC5TqHn$inpRUe3V+ZO?dX0^n7vfG{GbWx!8^UvmGhGiOu;f#}TX7|q}J-m_R4cM#~BG9M(T zAemCJIHF|wsAK2^qENhgojSAVh*E1+SvR4~bVHeLBGH_$;;-9ua{g4hir^?0Nk<6Q zog5Y6_e9Q^qtyYWZLTk~5j)$}H-YP!|J@qYitUqh^ zAa6d@EXnEm7c6fdTwo&j*lys^)k)&(hiA46PyZes<#@6O+k(RErFZY52QaVn;(Yx` ztqn%=Hv&!eFD*oyq&{HXwUN(o!d<7r&qSl}iL-qV9_MR3`}Aaa-R9f3#Sz|%zx|ME zUlPYq22vvTYXTHuC>Vl2o?(mBf>E3^t9keN*|R<5wD163;3|`X!iE}E>16+Kw%?4DzI=K&8u&Tzy6@-+douMTgMk=_0&pn~+>@LWc~Coi zq$gX=RGkZD%3M;6YLR8X2rt`2rk-b{zFh(Zd@pZg-8O^aOM=g;B708oKkTNnS;+(u z00tAzZFHKF9!FdXyb_I=n=115zoOnxDX#$!C`h%8M>W;Mh&N`SA-u=BpMsmV3kcpl zI?4{X7Q)~V%HvKOL4ry%6mn~remZkX9>ew2RLzglT4U7@K(kfYs$-?IHsN|`iyH70 zGhY?8In4DF(1aZc87gJi_czE;c?OG8m&BPrcpkPfIlZH+yTknQlD+pA9RHy1Qt!rs z!M_B72?NQv&#&*u+P%k{p8$%!OYW_dBAeqA83qGc^~+(x^P&}5ibA~$NXj`doYHC| z_`qGc+#&j6HLW&N@ycMlV1?I1^%#B+)r}J^j{$kh6<<0#9w=65KW8F>0 z7i{n^E$>dEue`;5mn)C=4$cAvmx{;_taZn!*zNJ;llG8ck>Sg5JoRyORPf_7A5N zlk;sRg1p?ua~^$vP5AXato!urwq^YGg60&wGOhI;oHQQJxf1k+KiTWW_aYjjw0t<`=aWYjgFbmVeu!8!U{CR^G@#QE z?sIBZOQnsP31`Aq68m2pt=aW^K$YU??bkf%!8asC_XWcSf z)!*g6N;IeZMtbsdxT+fB*eyV=LT#|aSWx@ARLfmdJ53smo@|FRn~b>EPI;7fIxDXM z%3ZIA^%=VC&g{BT?6-kTGI4N#s}oY*T%{=0@;v9%TJo@7<9*A(d)r6FiXdB|x{@8# z{|=~BZ;}<};DDP)&Hj$F+Uo@=!(9@+QQqGIZQO?1P%U6v{}MwPoGp5Ozr?DRTn0L@-Q9I%)dMN z{4%hyt7sysktOQQ#*&l(yzr+{4SnUg9Y+68CL#9#+$L?MrBYlqG#$otBtH5EJhk4O zGTY%xD)ZJ4!ndXbb67$~Ok**6bknu@-HS<_3&$lg4JF`8sR{SfAbTc1_Kx z)a86U$l3Ukzq^y){oHAQwrw4Gcd6(P?lAwx>f2HD?*(yq!TDav+`u%EUT>szp-!!Y z8Iid4F$({3e?00p*l#mAVLy{LvkiT1I3A+Os9bNM229H7S_4G#1FO9gNKqK<%K%`ka0-Dq2OX+Qi7!|_6- zpfByf*`AE-mj~$79_TN5Wh<2PVJtexPoOP+Y5}DR=i&w4_<6qhNR)05NUJ!3 zGx&=XheQ89w~`*ycTgiPnN_VI>nWPTn{YdRB-oYWeyS#*sd0Sz5PJF6eD^SN4#%L! zd4#WMI;!{0+F^YYC&Mw&z2w$g_DdYhQVVwZI+ElLpaJsW(Rq*mx&un=86>z2VG@c% zn>-UL*{@VMh~vb&TYkWuKUANEQRBEj%w-;SZ*F}cmIWgygcf_!BmL=5SP8uZ1&kq zKHV2Z0Jm3w&ZR{?x&$nED1Peu^fO+EUpnUASQ2Dj;xFpKUb#bl-&Q)Z%-oU{i~n3r z=qTEokImw!Pj7<;hoTGd=l+_~Jhx70uFj+6jKsU{{j~SFEe9byFGb7Y%s~6K4R~Lw z;4sQ<^#*BLj9Z|Zu^ugX7!%Clgfn#|9?)CtlQ6s_K}_FmKpozZVs%qJg+F-;NY6w3 z5xyWrGw8)yf&6cPP1~Yeh5<|lZXb_xejsY&GfrX7)FSXK-*KYE;3Ge-x5go{&Mc6y zTIs3KB}~`Pz=VE)pK(Fo$D+($h9qhvoF8>uhWqk=qVnlD6$zM$&;9$P#XjJ?isDU z_@sitYEEmr)WfW|SIp}*aNsPZI!@rzubkST4oA7=yQf0FDgK=zWI=QU&rL@f%{Ehm z>6u6eeqJ4>^yE|sqZ61&B1|SHC+qzRx6k1)2b)}^Y*G)A-7%cnxZnI|rnmmk!+tjE zk~p#h20N6g@ie=%m3tB8Zx%G|Iq*EZBcY`d+*mH^Q+=%kb7N9GnNLx*-=z;LY@#(p zhv8AXatC7*cKI(7tuCX}E5vgjPU2%#kl9dN4@>a=Mrmg_Pb*Scv-8Y@P#qg)I@||i zxjFbhr5B#`Q`E+z{OYD?hsRQ5@=+h>bB9oGWwg4A?td@{*LAa#HPWh$D!vX5v1Q~C z9w#$;t9%%BVL6`LEPQD}Jol9-wYP&wf0EA8#l2RAmfd&?&lH=`e>+r(E6g76L0Zz` z(stnh2XWiPC>&Rr(86vYyJQK|!(Ztm>-8!LWcT$I{Pi6mivc(ZI&h+9;xr$HyS%qD z2aG5V7w#c;X$kgvPx4ldp;7b!YtcE;5;O6>K*jr<1fhz&wFRVYHzGqQhAib*N)+q0 zF`a~uyN(rC66f+Z5=~Fxe+ZG=qcfbr{T|DW{G1EERx6xH*I6+u$UgW5@BNjj$)FDz zNauP4m0~@9{XrDhi*aiQGxK(2X6y(m+RFTGw!ux%(kg|IDTcH<4>cw^Ng@IcbRO#X zZ9KX0oGUSoFNjA8X5O!4`~6Z~dZ-8JUw`w?|KjLv3~%!U*Hgn@WS_c{WsAt&zG5N4)jREY7Dgdnm@!IR2DxJWY_ z-;EuncS^5jeP!ZV&WZYtSuY9QKnw1=KSVas65Kvj`Q=0K-7E)-|4n|)F_6L2?9{c! zQ1)pxoJI|)Q|Zh>oDET6*~h`rBVnsjk&RN#xhGxHe0 z!JAX8mgIIsb1JSQ!(tEkL|WdP#(E#aQ)@vQl@AEnco3Qkdmp7xqkfM?a8>Gj*R?)EZ&U$7y9* z{mfNh3@4eFZm?G`(oJN;?^uy3?8|I}%KG9-P}UaJ~Alq$kW;RGCVA_pWG@ zQyckl4p&esD>+G;ABN{C7@vZ}io;b0x)=f$A3z6L3Vg$(t90$Zap9DOH#-D6)XebS z?08kZsa#}gkfd__^0Ii3{)w`r4m4)Pevp21|KA(cB4_Ol*omqLcA#gwQ;LK{0 zr&o|^={uco5l1G=XB6{Z2&`W?o|xrI82Lk&^rQ5z2K~fLy2xDCTy|?_?o+5qVq;b% zyPTE2{}dTOPsJ|baNGPDXA(C+G@=VE$9;=s@F3kHpYD#SQsr*J)7}7|$iwY1-I&%E zaUaq>dV+r4r9QH$JsY_=)S|_81Mv8_L9^ zlUDni6R{D`t`3eyuOp`|JVJUt-1nmXYIdb1EB*!< z-_JOYC-9e7lO?bl9wHGO$U7wwionvwFJmk3ypuJG{k9W#ej6hg4q`fNBnidD^)q|bh-&)9;*Q_4&f%nMfNUr@+{FJv+8Ey|w$6Iek zoe5&YLkDFowhmj-R$eQdM5H@#HwRIIhSR&dU;~Rto=Slqvjgc7 zBbb=pOBb0Nu8`DulnUF5={_4PwjsTLKXW`8VdoRDiAN~tY|ivstn;$Cb!#)R1+m`V z(D^@9xOGNT!LnwX69tn2cmY3RHXi3 zI%`RQIRNi6n+iFJ@7|e-s}Y#cQM$kbRLEPhB?scH{L5;s%R4JYp2`V$VhGv*}{pw zkX(}(vkZH@3THzbdZEj3w2xsqU!cCeM-RA#r}kdxByY9GO&ad*0exRaFSD6>X$k2f zG4S#w=?6}Or454fIgS6|2Kw!HsH?iUTX|kWyceHDH)ix6+&fqjw(ma_d~4C5RAjYP zvYO%hJ%f(qKXSJYa;|Ju)`8;vK#35`dF1PS;+uB^k?IHA=uZ+|GTwM?GGuC-?|E)* zt-5sndCZC^{vQ{D>W&sRTzEyT4f_{!8rJuX83*^S*xrv z);(B@4y@F1+DvqKeehV1AbYpGb4lD1H(6~1na}-L=da}tiVtVnBR!mblFDk&`|iLq zZ%*pK4yM#dP>mJxY`V|W^sUiir&ujwMMp9N|G00ZWJ(S-Kx?hn#uXaQv{DN%d@5@e zQ)V${h6dc%M32WVnLzhB0B_|lp|VGhJC(oyU-Gw2TnoKH(Aw~>ms>xqN1VpzafSvN zrFBjFh+g~#{{29=pOYKk-FLjrr;E75Fa*{9SbWFJs7(JQoJW(b7S>DrnLEfiy1=a* z!$4EK2{wC~(!#|h5h^a?#aF3|-aD=$l+S7k(C%Nx1t#l(R(Cq~+e}*Z>6-h4ri7q; z8A*0mEK~V!p4TT4fVU|riFUV{PhTp9v`Y9S^1_jfWwxEcSvZ!&gwOgSF>&ykS{U)WriB%Uwq6KUGzS)AmJrWP_$b`2Q4T`i1PIU&X-W&Es zG0w77JoS0_yx+P9q$TnU_@!O+UMJ|cU2_g6S$}qCD{~VyF%*^j7&y^j676nr20auD z#6ebhE3o<(q%0kw9{&IZ`l(+gf50_cBOS@0dDZ3FaWAxs(pa(1Z`PTCAkq*zLN zfiK;9d+Kq1I^JRA2K6V+rZBzFRO-q&9OiRK)60b4?=Q^KTiKR>gSD=po_!Lp#V`7Y zO-?y5q#Cf=2DF%~5dM0y~ ze9TfH{JrUSk82XTwhdH;UDkGM06Y5!>g3em0sgA3{35|Cnfsq}6Swtzu}vhRqItWv z<)ApLcxIn98x>--Imvos{p5{Ru%=U!_Htv*7*Lqn%vYn`{XFj@Vlth2R{Ead?CXNy zM^!+82I~vJ5+0c~tp(OHE1$KH`6{jP2enQL^@@BKN98+$o73F(3 zAhY2Bs*!0_qz`5@dZrQ<_?bBXlz1J_doG^Xp5Xc~m}bw5arjyzL~5|&(IDKFaPpo; zbMjMv1`5&vZ~SR`)p%H$F|cuy(bVPTZTWHE@-e#XC%9>&L<%ZWV({_asMEH9|CqWA zhx^F<&w6UT;|%*q7EmYhOPgp#)L&q3$3YQlJFmq;F;g67XK!-`!=VSFMbC|9g;&Pl$>U$!$h4Y1deOjc)wJpO3Zs1n?b96h6U{c1KZE>rnu_gNy zSZ8s1+!1+v{{Cy; zS5r_cf9}1DM^*d?{>+;c6@zp6hiK0%{Mpv#C5@rahuC~1E z0*W8CaI|{^^uT0iHRRNeriS~Vr^A(oHfcO)*&ef>^~uU@XR$X~S*`S@pHW!Ps6AI6 zf#&Z85%1;v6k#MG+!BT1z?QlrNXZ@nb9X^|p+^~u%#w6ikF5h%9&3WR6|L zMat{Wpu4&v4sm9t1LMt&)**wOM5zhaJfF^VhgpI>9nCY(g9`90x8Oa7#h41qzBFN9 zw|1V3P2wxhJ2xmoYm!u}qlBA4H9M|9H7=W@dDkzjNcQ#uIFtyyK8vZsrMN+&H$815 zCy^5>P6-pN%m>A5B>kDf9X2)4au8vI!|KljJRN^@bF~-hhH6q#cOX5= zHg?x6p7;<>fQ(XMxjCoadg|y&c4jtk)f424G`C*B1mrc!=qX9*{DX?@8gHvJD?3tL zWq)Mh{NOG=)L_j(Or~lV^=RXwS<0G>%Y6zpd@U^Xb-2cba8?shLLG+P{f{U9ktbG? zp8ljW50<;U+zp2Okd}h{MtFHvie%rms)E<7VipKx0vxA|r-sjGjdtV&Na`q{O$*?8 zec|Udr80B-5EPf&Id=|Prv1X&!u;6{b#r(6jN+h!K4dD{?r?VXMlnO|Anj+P(~vBu zp(H@A!H*lNpE6dX`}>bI-kQE}4<~@Xkwwo5VxcK7$>~hw7Ii*||EMXuMR7X20q)3z zWPzJ%Qt;f8<}YgS4(pP&j;?ebs)*y9J-y&vLgXPNPsY$kKj+kYKn3p$XSLMrj$ZVj zBBPxv53hWID!i6;G6B_OF*B#(qyNTH`;7X3fQ0ZMW`Oe|T*QmEq-F-Qw;qG-)nSd^ z(0x#OPO@%OkzR9l*;Z=P$A~7$VKq6QW6=XdvO@cadZG#MYXx}0XZNCXLcT;QOHnYM zKAf1|GjEL*g5t3i+P58OIkIr-eMDuwmw+3 zsKK+C)oYU@UqkoNzT;r)C6y!v;+6;zjYVmG_c_tbDb0D?kV*XleOWnBv7hED%eG6~ z-@r&#aq`R}qogtTcRKky$Wke1um})^L@RM$%w=zQlm2|+RA*?LU>4Wmu)o0?yUr8a zPp*q@e9=zP!4HwkkzzBC?>tykp%zV~M_Ek&Us{?YKT-;l_|+3;ua%Y7u4bpP z$H7EQT$eQoWzLx5)c%NdDvt-9&+X#LCGh+u6HGNcjmr_83HJ zKAP6VQcAY~DMd-dB~P5E0$tfP=Q(+BWzhRX()r&vuA7tTYpU7V?Za@QMakdFrN@zu zGF2`k1-N;f#X=Q-JZVLHI*hUKJPV|2auWPId*}sEn#(PJyP@6D{>{E<%G8lw|As1a zAX8qDJBA%Kj0BtxbT_v-@AAOQHRRsIgS@9c#$I>=+pb~f=UI29m)wqu*_WiUi>UR7 zk*e}eOclN8Yo>|cVgxHYkgT$9{^VE}`^;w4bv?3~@%L+*gpr!-Zi!$H2fqjegodf1Wx`P`i2AV0~$?bYg_uEbQ zi07U%^fo!*hCaK+=%->}7%J0?Ju`P&>Fs3n27dH`n~WK7$7NJmxx<8ZhEr~YC@e~` zLbifj-g54_52TX#!?$bkx`AeSt5wCWWd8*{Jj;1;4W<5cHNWzWImd7tID17KQD2Ov zBdP_Xb;OMVbu0;L7{LW&^M-ccCnr(h?62E`L#F5?7k|0QU+;D;BQ`< zp;mQ!D*v+E{a`FRf$;fghw0tgN%iTU&WTFmpC^;3Nu3{0reg`_*d@wiH3NFV9-PRr zRyLlqZnvhF7)HmM6*N2w=gE8!i&UHt{(OEU6WvUw8Mx?rYF2jo)ww9PvVtYQr2@=` z2`Itr?#tiJroN`f4}9cvKt> zNDBYVjmO97Ro`;|#2PVH3=!*uE4I*sR6|j|4Rk7iu5F?@#;R(E*+=ab_C<6US4ojQ zjoYz}@)!493=H2qk(}=wz~8UO4B83}#c@;&`8g3sf`h)dI@tAXAA1feiU=bLmw7!f zIUo58{NP{FTs-ld^eF6y6wC(Mz`yq}4<)1O)PPZrvWnWp>}@m69^w42QB571)2LNPNHjHD!tMRVr; z%q0EvqyN}RQkjB-;3z#nc3e7lbZ*-)H*zL*puY~KJ9mu7^=P{h%57|Pu zJx||dTs1p#vZSy-F?-%Z1)ASTsXJt=%_oZ~Jtz66wUg|qaHJ-O!K=jjU)bv>bXSWjx!by1i3YcaR*^(Ig9ty)8$gubM>b=gYC zx{L+w{m&eUPQHegn3?k>{Utg5oTPofJOq)Yo_HL*+ZtVc1g zhJnp5C9kW$QV(0}*oEug zNCy2VFvH56;dE!rFP-Q*d|@x=fI^*-pDG!(?)oev99+W3&S+=0=cCm1GteA1dq1Z`Kd^<>q%@3EKj5Y~ z$N8^16NN7Bcv69O)?{MLK_+{DDo+M-Z3033_OmW4+KKJ;)*WW-JM<1~nA#f3^`z>o zkBg!mm9{ZFP#PGlb(|01U=D3?pk>AZCePai}F@P;Wnzcqq%#@p1(v1%11wVaa_%(2cMc7(=z zIwhK-V6t&$hA;(OW^TGmwasfy2SM6Ro!*Ob>n@n~TIRi0bRIr#EhmzG=c^|jgqD*=v9bbUVElQk|Vd2_axJqcI1=2#AWdxy@$aG zQG+y~Bic=Bz%wS~SnAJJy6K+g8iN~CIGN(P!{!0_(Pt`kD)ERju{ZtnODE3#E!m{$ z^g%MvkdB@wgKleKaI7_WPi>tkB0o>-o~JAm$Rwvf$*{|~nT7mi zR@VeGCx17uUEY33LSsX7Ayuyhe_7zVcmxU)=qwR=L}gK)%2gF!zcF0f5E$0|T1s3O zPpMon;3(0c@hiY^cA>#;rIt|A$nRX)t-}hbO6Ss-cbyJp=_+@z^oly)oP4gAMy$D- ze6N|Lds%jMaN++zkFqfLTthdsh~NBCtPwr={2@_*6y8|(Jt(}68gv?~Ydsj_=Y$n< z1Px0tJlh%=fTAc!9>Qs#r>|`GxxNjzbwe~;d+LMob2Rx?rSL}uDY|@AN{xSgWfcaJ%=Q>XY8nw zW_2Tl9*v)`om`yM{V?Y{m{nKNpPu-;nCJAyu@ELdR?=`vbO-zC%*-_0-exyq{`ibq z>Li?S5cMaH%&UToh?{aB%1eJaRiNl3B5sxs{Pq7~2(5Ytx>VDLa zl;8ocxG89?^9Xb@m>QHG)y+uG#hLJmGPhXtHGH|D;3~B`oBbFreFH4haQN6-s+W^| zL=DMC25&EV+v&`D#Zj!kaZ&N$rW=E&>X305wCp}_>JKYBxs}T-4`=aJJx!`uXQ`SS z>|A3<6cuq!^gvC=0w zEBIhPy`@o%^Q}LBb&EBNb=?vkbS~At3ApAjoG8iJk9(NtyMdLdFz4&IEpffP8^u66 zwBdEY$u3)E?WQCa9^q8ZZB}MBPNGGU1vQrL*vpD}QREjQ707!<+%S)&KXQIthg;ao zH+WB7?fvZLJa&I;HTM>V!{_P zSY+;jS?m`boQ$YFW2iudsrC!$Q-`1>+6T@xiQV`e)TR>e zDFyeHTmgw4z;qmy(3i(^I-V25oZ{RLlO4wR7`vhjJ1QfmTPiy9rzlH8xohc|J{)YX zit-xAOj5Uz6U~zz$~jS(UZMwhQAxQKc;*T1s{Yo9Gly7-?6jOS6?w-;@J<{@t2q?s zy)WH$H;~L1?57K&v-6ZZ?sD81uX8VMY0ju=+(+@tT*IEY0sgTT$IK;I@=)$ON-hgj zZyB8)OxBVJq7Mo}hxEw(B&9-O+7{NdEq&W{vkMr=AlQ{n<~43g$)M|+sa`@uw8~xY zqy#gs#i_mlRwyYqh~5KBNJi3FEz(&#u&zh)t)KJxD%MccTk|>J@^M$9fFUnJCn7-h zc7Xm4L`QQK{Zc0w^5ZBpzv*vKUUdaiyhqoVfwQrPF`B&fVrc#TQm;Rg-TQ-N*JC11 zltKsIn^UG7&bkq581AZQ*r;+~){*?(yv(=<67-#iQL(fpkF=k=0q!mwq&`gi6I;n2 zFU88N3o>^S)cU9~4Lsoz)hjX6bxzL4BY1R1YYo+MsDEyAQnUuk+y<6#pZST~DM*;! z#tqjWsG8-_y1j#0xyN5V3g0@D{FGUAxqb06R+O_y+1)mdO9Hs>t0YX!BdHs@+QYJ@}b3A`=EV06-v zUeX&C#Y&WJe^F)z8y#^DH^8-=n)LF5ZUyGPwqT&6NQhm`t>8^bn;8KnPz23R8q|Gl z==rXKHQ81>?&2D%k0Hyh5qCW5QXWu&+e{OKSs(Akey0}*YDM(&%SpC&QNl*RVqLJF z!!QI{Vcbfyh&+o)JgpySKeDxAGmbvwjI622!RYJZ6pk_bvJ=npys~k+4IqVM61upW zN?!Q~D*J()%9H5YCc<{MLFM$yO+s2s9Zsl;I7;S%la1twtwzHT4VUu^HvcZD@d9}i zc;q2YWiL-U804osN};vx8fgpqsK=;;QlQ9tO%HT5;cr)hw>yhkW&>R3B6_bv%&RS6 z7P>P<73E!(!QGGpK4lF|=Uq($WxoaowTExLl^r#iKIFW93&wC6isvCxTQDchSuF;# zzLtpUPCD0hbMdWPk!*bu-t8*gKs=Q%vEAGHiJyejEIqw;hl;x|;U18lPGa`dN9w?2 zPB-Lz_(VNQQZmxUP;ra!YacO3UE)k0Wp;#t>I(x^LAi#0;S-vqNT$w7?8uuU+-U^n zR0ePLDfK35<ITMqd;RHjfm8E@~#{+d`B8JwW#pql+S^ z2;Qt0^*TTJes7qR0U#lf=#ASO&2h2hQ7vU3TI1c$SFoz0OuLQ5aWTi~PJg|Y9>&)G zXoc}}Cx$_~2QGOJobL}B9og7`r~PlR zG;<=HvSuf>H-JhE0x9>?&-0c;Nv2#6Z|2p=M379aqWpXYW>ty109T-^kK|t5C&oL@ zw`*We6PQ?AvAzc5-07hx)2QS za%L%?Tf~w4_5ifiIheGM;@H_LpHzOLefz23GuE0tseI4aS4pkmXv&u*)caJ5O-_9s zZhI{V3x5K{s}M}z6q3Mea7tApp?Q+N#u$fpVhp{=S-6FZq(#KzzBoW{e;9Ujox6w1 z83KY_knYPBkv5-495wF-CKE##v^}*|lca&^+*P@e`(_(~nlE)Ppj$KGf>Pjes)`c3u3VUB zJrd9CK(f%@(5Xri6CF|F=XgmLV>=KZ2tA`T^Q)Itjzh;paQJyj%XIz%JVs=w(!|- zqaQugICe%iPUaGHP$%I9G?z>zFBqazf_CgLx9I#YZ_c{Z|R@su~BX z`ol^JPq>4O{cd1x%k^!z#JMR6zeHO!RJIdAzWpyT4M*5IdhGua^gv!O+fFL4i-#{G zs741^)%z$!&f#uf!b#H$gdmP}U5=iy80#zz-ph;b7CMTgY6;ZeW6|+;wJfl{tS~aC zVWR87ZWPmgGyiQx1)K&PDFdfuG<&%*EYd;rZbz8Z6Kl`47|@(4razO#A+)eAe%-sI zgQWmQ4es_E_*?F3 zpHTx{0>4_|PDRaG9t0{Gd(ssroDJMLIge@kocdI=49B>JYU~8q*<|iwDQ&idiJk;v z*A5mcEmdfSbC+LTkC}P4$j1u14iBA4DT?EA6le21c*ZYQ9vG}=C>-a*GtQ*HZ;xsq zll+Uj4Eob6Z)d9bAnN0K`~(X91YE=q{OS;upcJQE9B14qrpU|SNQMy)|Fs5xuOt>$+5-70iz_IU_UR0-I$F2D59yIhBLE!F|oSWN7@up*s`M zishauo*W`O{@$Z#ulm4ZSEl|=B0J@kkpc#Mh3#+GM@iHYPf#-BDwBRmCW}~ZBJSdj zW8zNd49A(01SfwWISRWKU((F{QM!9Qrk#0W7p(hCkE20?cF{%MK_B=YUr8_LmDnSm z@t((nPNZg6tf7}_O}tsH)FNXNI*GSk4jfr-ZzGKw3m0)owvLZEsqJ}w}|9}>geSDfS_NdN6&^vy)fPYJn-y_q?(2U zsS*yJ{hT$?e0nI_5YjvK+NAZRgQXlv!mmj zNtb?$+Fggwed8j z-sgD8kAh<#VQt<(L;6(uhofLB-QNzBm}yYwMQ65{Q>vJF33s2D3ACG26iv!vSP}uJTng3fdviLSau`0lC+vy7oEBB+(gS&3 zF4+?8oU35|!$3(tz&L6!j-_$y@5kAgj&#&pW)G^@X^Lq&MXA-GOf!zuZI2nT5?(Q1XmR%mW*R`pj3} zRFD8POB$I=1^LC};Qelz!YF~4vLwEV9N=b&q%3%EYqCOeJ5@l<0!c>L#I2?gJn295 z_gkp;GS8_K+Khv&jxxqbeGqRco05SpyOVo@S>0lN`%N~jR?k{lBxcOpk3Ehj}VpBsb|vo5%_oXQL8yZ(%e2crdMddea)KDgZ>A1>K1)?=tjk|djijaR! ze|#yAVO9E~7TO8^+>+GZdZ?KPaBHQ>8}f(S$OC&GWcD&9>r+ue_d>1N4Q}=ks^B|x zJ&DoV`;Y=K2cB{tGT&ILBA=X8VC=><1aR z>KukGyn&a78&tUe<1K3{BcE)?bUvSVn;PU=#S`+DL{uH^UrjK+flTLLU~|%w29^pZ zc~kntM(Efo;WeB=%^6Fj>klKdhZL}`bcsdroONgBOH5aOQCK)+4er<-j%siT*w20~ z8ePV4cHeBUuJYjJFS*Sqj!c>TB-bthll*~(O#w%F4ZC>&-ChYM^R^^`Z-;lE2}0*j zef@xrWiaa^o%tA7>~-=rI*_Cj1cq{k6SO=y#tT@p(YUBj$zK(Vy_b9O;(eTb zufX-SR`NP&-r!TC)U*5x>&rXg^68t9}QJUXQP#P`;H_m4NqmQ3suI1csO2S`K z#e)+zo_+U~I&)Cm;LfS{PBd=*;9N`~4 zFT?2Vet7&q1cE^nv%yU^#Vd42GwAK!pw>xh+c1RP(BPiOr!*fOY$v|)OK{9gPFL8B z()7}QMXYn&{VG*ZhN{a^y}hD;ugTwxXD%KM)3%Xm=?uxG<@w}K6#Z3E)i;6tX%608 zkKY=E*QUBM2F^;unH9jPn;osrWfCQ7qPA&)^QAZ~E z<{+RRW~I)kXG1`#JK0lUH7COTY=nsofHzt!59a*p1YcEx$+S5tlui@;18bLQ@sMu9Lba` z+=?ZC;snUybmmE=fD`ocuK{iba;W^2kvRT->hZ=`)60GY+IKlc`jZ6J6Hm3S-p3t# zjXQwr(y>otf0VDKHv!pV#lO6h-z? z=15g!LyNAF@N(8oM1Is-^}hB=PXfNY0nLdYQ^o@88M9F|X*v^0O{mMh`-vi{8(rKd zPZqGLKjMJ%f}VMZat&2c3!@r!Vi`(^jP^DBonxuSTl7t&FZt6QtV0*{nR)J^Cld8$ zIr{ZvFdr%9iOiuza2qVfA*gVhRzLJip>+D+nPSI+!ucrY$!d7V32+3}S2wx?i%Kzz zQ+lsl5QWWA{TBGj7OR21$sTNbK!&!M$Kd7zG(|l|DoGc7Q&Bu$2~9yI&Yu6dh`7vIv4k(iM(kUN>d)Nh26U^K^7roh2Ex+L! z4&C2p(9VZUk!P5uE}&*!j88yiO+BHH*#klmLWO!S)}qxPNk4N#G3eixk_*w;`pzuY z7FK=}_2Q)w2RbrLElY?02&BNzStWc?=cVLXw{S|*9gL-84WKvJW1KPjTPabS_C&e4 z7i{=GoY-{qHBCu3_)Aw&8Vsx>7}yl?Rzz|8)g-vyTS^{ynzhvOV3@c-_Q4B!sf92P zlR(nHDzRX@Bi$W%!#XkP=i~FC=r%Hg`({4HVbQVXu9R_Om4aIskYb9)LlLUR; zPLidT(SbQ=FRSr}ccQ=k3>q{@+QIL2(e>#0L!4Z-0Z$Xwyo$!7(_YEBPzjv5ze-=LT3iki4QXZ#7g0Ue}{U=vrF@pG}Z z+KMM)v{Q$?_#q$+i@-=La?fHAxLILpoQf844cOTVIO06&J@~MG2{`yBKA9K2*){%d zIl8|t_*LWZv^Bs55{M7uFWTI1%&k|$wn&XI&7xv)U{Di}BCA z#;+Z~8~zF=Q`anHWYlk?V{9dtr4Q>1^3@2%xK{)DK%51oye=hzWjTbF=#}vtwMRxf zi2eJGx75K5G>V}nz6=W9TxyNFwg=kF2+t!=e&)9&+%La^x=|fYd>sneW+4BlA3@;f zQ8y%*>D2mVR3_ax6RP5kiUP$JXfJ!=keZLmjeGc*@H=WFQOHe2HSxx(jLIaD-QDWK z6xCeMuL-mdpvf_{V^ zJwVOHv>S_uE-{*~44f!+aWe!u|D3;WZSr__Q`?h}I`9gXR=4B%-o5zjCvFnhOU_0Q zoD62!JVX{M%1CT4Y12aC?bdDNO2%+?~5o$?@N z&N1i*Itq*Gv6wf!8HTt!3d%>+yGrC4wgZWY1Ftiv9BrtS&0w|DYqv>XT8={gBr3PZ z%(~q`DK$`u{&1~RVey@qp!+FuhE?O;1C#N2)de|a64X|NEQC_Y>7yQ}zgThxSJQ3>w@3UMPqChmKpZ>cJ4VAP?}fa$i0sO~F(9hwil-wc{WY>r-~q zLEdo|QW6%>GaO`X)wM^mE(_3G?KMY|s8?F6rYgz_&cb_6Tl&{YR+o!;*9|e#0j^Df-h1>}AV(qx0+EBOQEFvou-`zMWKnrT^Au50$+)hDKX!@f@ zoI%YSibnnbo#Y{AjLqo!F5?8|1`8z@2?f4PVGlX`>%uPo6{{1pQ!_}lFu1j>D4tf= z+<{uGJvxuaOugel7K-UFVYR#C8Trdw>dP*E=!y4~W^Jy5T|R>*a5P=gDQ>g;XkLJ^ ztYoYNF{1ThbSv!F^GjI-M8YRU;DQm*ae!Mh_fKzw-nP=RTNM zZKD*rt8-|I>!SFY$Ug2aetI-Ci5uXQ@^T`Mhs`>qzN2ryPX*}*vUm{G-yz3iA=3?6 zjNH0z%HPOdsldt{0S~qhhW8T=iuBx#*cNxrOFaeZ%Xn+9E%~JNxnSqFyI94{f8;q_ z16^!@;;R~G#1|N)&S>Ojb4G;F31`Q1H($9$&e02I$Y(e(QgFV!W%Aue|J_0_rM&@p zI>6-W?PgnxETG5}(DW?Dlhgx${S!2S_2KbE%lTx(>~yCqRm|5gI|Io|^p*2-+#@LEaN}tDeZ`44S*cF}O@2;YQEW`6!2#z|R z753g!1LkrblXFVRB5kI;Iz+pMYHJkrx-%G1ASmAhvUG=P{lO+P$ye!^?utwz&a=$3 z+w%rhU?nn3%1T|qukWjA&@LCs*#kc`LXrZvY7@)_)t+-EvW#cFdDX$G%B-K(JYddI!z^~7aQGfxUn zWzTufU{QnfZ72zkGTrHDT>U+HV%<~%v0!~ON6J8dbRdA50OdRo%S zUqz+TOsYo*^FcMJx&lllIrvj{bVO;;A9TRmTK3wn==QzLKm3X{KefX=SY93M7B*Kw*-7rYfkjkbZtLL6qpJVHbUNt z0wFD^sta5|A+{M`V!{N-pxGHds7YOg?bdJaY?7YO!SPc5*DIrOM0rCr>EE}=U; z!P`0ljyl9y36FopGt#pNo_CDsN)}U;R2^n}5<34zbQ5>b z+TO4hp>pfa+!V^~K=@2aaq0p$(~Eg62i=6p^po6K;j|+~G%;9VN3__noKik8JE`pC zc304u!Aw5`@xWGRb@u?XNa>CwKj9jRvoWywFHzc-CmC@T^Jy%+&O$tm^JEXtl* zj>2vr&X(w4;64larM>eEKqq>aHNsg;7Aoqns#;S|pO& zGahrJ?MS%?PNCE2E_T9M-e8)@59ZMob>3t0+KO>3H4CO)Q9m@w9Co}Tm~U@$uaOc zBkAm~p)P*zd~_?Ig$!29pmE7){4r!|$P$!&so@Kzf^;s>R;!hiJe*UpFrB^ek=^w~ zd;IBiXW(BuMow&6rt6)kv8Pb)=b<;dfZn4l-T5>0M8{BFELO-)#xcAHR;esCv^ieR ze9}>{*$8fo(DnOzR@kT;^aKO#x%5!Y&{H=-nd~7Yt3RsKVbuE%oUYG33q1EdeBd8r$U}Z@kmg1fOGA*Jb7pl;^^W-0&T!*Z2R^$N7Jmb?W-$7zb)p~rW?2}x z@=88#mifh5)0cIfA3sMHdoZ~PJ&d(r$|W}xukCdgHcwf7rbE_fVc?xnee-J%EZT?90m1vOR@p@u1 zh;vgxBJ4$|Yzrr(6}8igY6a+4?{oW5i3A4j0F|o;da)q-fic_{KZLiGo%#BJRmeVN z`}_3v*^Gl_AnJq3Jn1lUA~M0gb)jO9166AUCY^&`b+sFTP9zQ$Q>b%+_1 zDNk*rO3holP3@jGwNu-+ZQDAvnG~sQyG`vTOW%`@Z`^VJ?AbeOziYm8{xrYp(MBhb zj7cbb56~qK&|UJz^W&UJfJdn@uB=dSrgn61vq3ID`!j_#uu1p1W8#w(@#CM%K<(lIMQFj}*YmeI7n&C>+*pv4mWZsxuCS>kMUzQU1K@j^+uP69VG2&MjIH7T1ELU;p1@x7+j2e4JMih5S= z{MQ*-m_8K_n(pZpZ=s4lw(SUAU;^sHnLf?klAqqGF^Yv6sBvacX>-y=%m;(tPp_AW?l=j$&6A|HO+rCb)EkY1 zBn$7+aZuCrq*DGA(ntmHB}C!4eW9-fdHDnG8cKgG>sLwcTEUa*%>IMcAUE;()=@mE zF?`>HeB-$!c{XBy!E^01j_M|KAepQT)=5zD``pGY)TW9<3Ta0=wrpOUYI881({8kN z9m!?c-q>(*mO#&&OHAM-!&Zl&vg_BW5^hY;BM&5 zJ={{Aq{Zk8okt9B?@1=FBKTg%pz~TT<-_;Z+aHG__%`b4lT4{^y;a;RMM$B%Os#u? zcdaT31(VQAHR3)Cg`v!^UIB+#jOKd)y6tl)zE3;n!A-ZKkB#-t`4&u6Z~CQTFxYYE zNe3qD*YwqE^@O+?lG0Vrl~Bu|M%j$J=qmY3FWt>J8M?u`&EYgYfuD>Id+i!i=}qV0 zm_LZh>oHp5#!6Yz3Em6W(6LNoN?niF?li3X7P25(u_L1dJMv1>U5-cXv;+UeZgQW> zfPSP_Kalbo0V6aYMaFYbwR_HK=Y!Le*Qwt(nj@%CUJ^anhC7DRsyS)xdudUJnrI` z+$ZV9=b-q7VLQr$n>MDdx1!g{%bXaBrlSjU(@*UYm8uL(ZYkp^&*=|pqq_7A1x1D1 z_Zc`(GpC@_oOx}k+aA4TfXTQQ&+4_(L%WHxewy(=umBmXXtGh8spmV|)B<=_+Ja#E zUKO{vlOL|+oM*AOtcP$KhKB4}yZ{k@lW^vkRjf+ZRI?$f+I{ds@8!y*@6{7NfkBLk z)1;y_iU+E&nNIwK)Pp2OB4~itGjbDc6&4flnRg21`zt<2(19 z5zcG6(lq=Rn!)tvff+i*Cs!fWGy<$B3HT-18DOp>Q5ej_JCPrRIhmKloy+Yx$H~dN z+Z<=lT3l2E*aMi1y`GKXXEvEfI2*Ohm8kNUXkFDDpyJE;Vf5 zb?yM_&}Sg|_00BWRr8`z*eC=Ve~mu4CdoZM>~n~>2%I+|_t6wm%rc@ssfN4n0EwJM zQP36o%MGyQ zF{{)7gDh(vLzgO&NiY*tR!h!C65+e2d!^h5%xAZq|IwKZ29bLwWI;hP0sgH56+Obp z!ep2V>5oN&!_t;49{@ID<*Zt()_tyDm=&h>5d#9#XD9$w8mQJ*{ znbHge7t5#pP}ad1%JgNQ;Y)hE-<^xj54?TfdH3g_0Dglfnx zxIdd}In~$jXr=L7_~;pCz|!pDUx(1aF9#RDP0CSq^yT-|7yL$x(3CcUAG(8XuQ7dD zZB#Fb>}gVrZyJ=7eDKC zfYW;9%>p6H%O3BNq>8*ELn|RY;K3el?xNq1OWD|`KW2B-4pcrl@h*r$5x*b)%Umdox^WNIg**I5 zP}mB&f|R%T+Gp*w-VcPS99Vv3V;-90gJeg(WS>V39J-HT(y1GYrK!l|(ynxm!fmDI&Ji)wU zZs3U>h2!0)t)|AemeWcfFdFtDnUg^A zGV3|DSbD-P%%b1X3^(E)?E#X%ik@&B89il%X7DwKRL#>=w=*O(_9o0ZMjA7=Zl$i=Y89v+2HZz-RC5R6!yBTEJOi?w1a|od9ZLo9);?hQo9X$dD*uzS)AJ{% zN;mLkgT-f{VveK-K7$Hu8m@(w3RstLZ%aXyIZ)<+w-04ffC>4 zJBOkiI6-ad0H}P>rhz4?o5-_%&f2%J;4swX>-(!N-FsPsqB5hOJ8uFb>4{LFrNiM zEq{{B)=D~xHv1P{)?3uVU%*Rmqgj|uo?HjD4o@pLol-1`z2T^_pkl8!-({ zaFXzJLxTieU;`^nOg?H<@M!GpVih2KaN?Gc}py z@{#zFpK8Hqqf?tdz~R!PCWvOgb$o8dHu&tHlV3N1?7TB{F4IBrGJ}^k6c&>plR)W@ zOaBEaQk{+QW)Ul=mE25h90S`y*~%$dPd-_&(8l|R+=|yuO{P=N?FTb>xa9h@<@OsP{&5Mn<`t+;wy!Gnm#Y!vcJhJ@#qb zKo!u3elL{Y>KLxiT)Lw^V~hGu_?`>wxxL^$0)s1y4(U2`fW|Joft;`>_$P~~i?nv& z4iV^F;%e?lTpqIi5%#r-Ea0rW0sBz_#YhQQs#=`TFcdP;+!XKd_ErFC?Lu}%T{LFz zs3q-<%jhKUgFH;YH(o+~;|Gxhw;V;!6}oa6q&6cNMSuM4XeidhG*!YS8^kRB683g3 z`BlyFsP)3(Ul0D_H~hsB>Sir^ffLLjtx<;W^|tuCg!g=MeSYUHY*sFb^6)0ruOk~! z66*mv&0vK+M)=(i^1btV<470@f`?dyLpPtFM#v2txlay)A4?DBxr%ox1ZM4DrmjQU ze|WA&(me&^_Ns~NK%;-EO|Q8G*VS!Mt?}r#ZjnhGLSA?#u+~Z7TCtqZFKjE7@vIxl zSvK#DNBMuwD+5M61SWGMh|4~5cN&m}8H##$8(sZP-i!jwKsMM%4^*iiwVU`3*02Gj z6YpemSQilvwgFwx0GN}dFngWwtInV!xQtTG=f0>;lJaEU$Omk3s}9QB8^)&@7;zbR z<9^hVX*{jCv_PEmDAhiYaTY5jCS9!x`s{D|U~0ia?$#w>wNc`cU>0btN~WE^3*y`ajG;ZP`{B013>42IQz$j*j&R?`07f z+@(0DTB2L&FYi*`sqaa_DTWKuq=R~jsv%Bi8n-oN%-?K-lyGbc#vM<$oYpFG@o4I2B>`2XlqDU*$To{6@PF`u-;#E_L-=HW#C?Ng7`i{ zF)C0^I)QTS1o2HumpdOOp$2o~Os3A!Xp{QDl8phWibALNoW5W$U1uleid+J22KHP2 zqF0_qPg0z7VlnN$0#kg!F6JGubIr*BO)UNcpP3)WR~gXlLi7f$aMe8Z&kFI$qgkZv zCnMzv)ACOANkdSAeP!akhUb10DYti}qv8~HAk_2vGM6OA!@2G+`*M~OKAcDnqD;((HvW%S9sXF6qR|sqQ7@n| zSj7AoAS>-C|CPKXM3vAUDx=Blmbl})_|MU7dw5%Rk_fR4A13D>95h%iOh+^xrT9uF zqNbn=mq~Tl3P!$$9SFg4G@B=OQvJKbN9-qw;xxX(uik!t3JFnjQ7O4-XEgQ;R=_u( z6ZR$2NMSSrM}2}%j#Er0#|~SR0xkGoRT%e*oRyvUTSk#TeMSC?I^r=batD0#$53XJ zr=zlQ+3jP}?=MvnoAPV#Lbo%FnoI#_2-_9n`oUwR?zmV|a37^H%q(Cp{v-{!>oJZm}6B3BqDDp~bD^+;j zCGl|$+G1K_E%NF8~>q!5Z5DL#6VL3DHXVX*6>zT2&B#Vt}4|NM70 z{E56D*FbVYxa-@({=CIsbA=4)U;Ng2aJ!9$Lsr3XYlARWrR!dy9pw#a2eSE{)DatA zVg!A2LZ*cUOp?LqlQW5<@K!%nqG3gMgMUS${dc~R`KnG0 z7x6?60GAnoFX%DOo^osf_@i%vExUz2E4@)q4~Ms^$1|%hB|}9M249wgzk4$d`afht zbYiDtL1wzFpl9JEtarp)IFY+&BHZW}^m_@&mH#FS@^bM%_Bp=h?m5csF`U1-9DLa+ zTnYa%)!kqhWj;J-2XG{9gbXp%UR;Os6y=l_dpbb)O5I=D_A zq4fVED{Kf6^{ILS&R2WtkxT!a5#>-YNmH3g;;1T&V{1cgT(@^YqDxc5hr=W%X2ae) zJiqDKyCAX0C@ubvRxpeaY~#rXmX%VmNSL`MyzooVyBC3HI6yrrg5&opZzg*Uq&O{J zf3>w%hg#Sh-|bL*@WaS%JWBe=VRof;Bgw1@=|`8~bK3D+y+jL>hu!q|$f>$7wWN3N z2nRI)&q_I1#_IHR-EhMD%2Ott6Ji4Hy(m9~q=vX8#B5+g^}UjGlds6h+=SBM3nxWl zi%>Qu+4@v+6aKsv-lEbpNaBlegdAP^lYK7#C*Dyl!|yLW~5YEX1I?{=pl`kkB-f~|r;x?ivbM3Y=n+Wuet8q!SuGI3{p{A-!<)U3PI@w_RfUA|^cgKknuq{x zKA_L0hp)&?|BafqNuTyNQKTK89gNqy6#cBn(;7q-E=JncWRxxAz)ug6So1^uP9Hvk znI}12fl2X~Tn!g)+%A^5*?JFu z^LKn+)!{HhIA<;{%WJqhd!YcmLJfY-FMZ34~2L4fT3jL-aEyuIhvF9O%G>JXq;1Qtvnp1 z$RO~!<6bt<%sDVOH{7P2(8r{6tQ7~5?!F%v?|1Dz%B#D~nOlr1MptsMd*A|WD7UAU zl_bq}H8a;4{^dFR!%I>5XBPfpe{(W&ud0*%TaGz%Jy@8cM$|5)=W5{GXPJ+vQ)KiO5tKGmgmWy{QF2AZDJa;*qgc2J*UB4XDUJ@#J zTnH-#|08IG#h&rzfAcxAlSHSQ@#x{pGc!%sW^?DYlv{y!{e%B&7|hih{$&hzRB37mLV+JjoNAMS^Dou?=qA11Oo|5WYclqhahwIz#Hi zOQ!mNl$5yJ>yoz9i?clmEcFgs&QqdAQpg#*%|5IjerC|rdwlCbXwcu1L6s98CkYjJ zBw0N>VMMR;$tlfXc*y~%svn`h*n(!P3-vn)=6MKx(Js1-m2MPg?6r3uhx${dpkj|zN^4KNQ;jqGEpZx71%!d=A%m{8uUCF~TrO+ARG zAEtl53vzUxUwSj|RXjSBi{Q9>QQQs%TTI7$)r;GD3t0j?KyPj{=_TXNszkO?Z@TwY z+_oP$p9bmj>FLT`If4A0T5^@1EFH|(T)OXmbpE5^z0%!8=DlIe*(_u=~V9t{93hf8r)|$(;d;3vaq|iDOz$J{`UwyMpMpb zd{DZ_${!s4gW0{?22a*;rpv^5<_e)sD32E`GwEuR*asS;IA}+1fF^9@Ur(ebtEG1! z6E`i{9&hkR%;r~q39cx+H_;>Yqo=zMbDfgy1EW9_KBzXBXj>{tG<|FsEYKfVv$Jdv zXi5dl$}QcBXI-Dq4d$E_2KT<{KPTs>3;AfW7LTpDn_=6_;5C?IIC?rgA>PExRFXdA zt&cz%MCvCuZ3C)z67Mh>2F*Y<57NVyh8GFP!@QhHD;Z~`h%pRRLr1cUEo#A2rk&sP z&Xf6#3xR5~?}s#i{6cGzeDBMZVJC`^2GEjBr8k^Uc1>_o9tKGm#j~!$R9u|N^gLCh zG%lD|ZZ9tze#*))-}7;G_^eZv_8% zMF*Rf^n^I}Iv;5!bJVlsk(A*nAK+;h1eH9^xxN6GvyQy4Ib@tE;3v0vn{R?i&S6S2 z*i3zoB;Oo3!p6V^rQ)86LOEX@A6j~PenowOZ|8`(5N8G(#OWf(QuE)tZM+QZ?m8=+ z;+;r>&$bRJ1W%c#dy_up=nc>m#;Pe$t@0zVf8e8E5N%*e*x=J}R~^7F?s2M*;?ezu z2CEXeG1cfOo>7D9fea=meK?5p78_mBcW}j0bo@m?Vsqh>82vZ(?*J_FCT6?KIQ~BH z7gyn(=*2FN1>EaNm<#`~!SOPhYE{U~-JBcLM)k^bKbB#u(M{nd9MT=w37gF;E!d)% zmgz`@%N@gfw1-WvQRsu;3-Q3}ui@(W#SPUKl)skmq3t^bvvCon&S#v4)AcNLBIEe~ ze$o#L)3^Q)-%bV+B|rPwa7X6wPPm8BM05ca>_HDU9PjpglCMVLpJ}LH$9QekNljy-}{A4{u`Lw z=XCg6IgzXIRb^p&bz!NMyoO%)4*bzzJSY`F+5gAJgN9m9yxS$nO5TZfYr7ZBuXBw1 zbQpD`Io6vez6|QNwBT(cK8+G?5;0Kgn_3Im1!ZxQr+` z4D%FPmz?@{^qT*XrYMPbz(vw~!%>-asztJ9B2>+YMb?`D3GUtB%Ok7 zDo0lNJLL#>U{U6_`*@jGf+Quy;~V9sW&>Mlv{ya3KQAb$v|tpIAB{$6Y(CLtb;0pg zoqOmOxq#`Z$+f^@8o+=S2i5q2OK%6cT4&G%O#&TGOX}@CqcLieyyiX--lDod-tL;e zx6o_Q!d%{5lw#$m<|*0Hw2qnUftVhR+66Tk+Kb2d8RweeFdwOnU_F`klFWm)D02ki zA&7K;kgJk##+Oj!C1p!)Qn3;@P;wB`2=3fiqaDw;8XnB+_%{pV_KtHhoE?dV;oXJ@-d;c5r0^ zNq8yeAW3TpjO#En21ig|p70rJ@n(`}e!!>2O*(D8iA@Z7Hl+<{(%L%E-*B!?bj&N4uFzNC)L*t&G0ABpA+#N-_##|SL zvqiQx@}%COY-^}KrDIQse(*duWw5)!8S9KAePFCR$m;+GkWlJN1rH+)R55p&xvh%U zE0p13prLob`&D^7{zoPnH{gakAz}#>o7;Bf(ffg4_C+Z%n{ZP^D@l# z4gDwy-LY~Qj_uRDaX0u??>iH5x0`fgYsjF9M^ExnZcIf>WVAw=-P7u7{RX+{WrXPG z)f&n-o^TcZRvq;~gtHx`R#twUVdxeX3k6ZNsi@jE>50ww)+}qfRo1$JR%;8W^I;_k z_|h7>sIqKBxrV2t59nro7e35+m_nDl zp3lt8zwE+kdVp4PtA9!;fC_dnvs4Bu_e=Aa`NW)wD#bKrY6o#!JK|?jdbaSsg*)jS z*A90Iz)Sam5wV4FY+%TQZs?~T;3S1vEv^0NtP&Zw=+5`Ug69);A;Np>{^uYdbXq!( zoK>j(6W}+xfi6T~XUse}fn8=_t2lnP>}E;hiMA9BZW9@YYspd>=uUO&I@O)pXtGn& zUl&H(^+v2F&&MOMOn+{?FxyydtjE-}Iz~MGIls$xk|^H5B)s7C4s_Z&h0$ilI1%nA zFF7vlV^SV6>Lt{MdCd=|Zk;jPnp0q4Vql#L$}ixci!=2#bO?s0-7NH`1IR2N24~WOIWdFz z+w5))MgiW*?92DPt#(6mGfDg(=RT>InKRhT33s+R>6p2`l7iNV?KWBPVi|O_b<9|^ zzg63MiI(&s8*S^5P+CyB1eQDpj4#5e?-))tXDYf%!>huLk)3?fPHZF0h2}-FMp)~u z239ybrb6_`e5xSNXP%ew6}4e^z!NgeERdsGsMbe-8Wl%xla_vV4K+!%>R5)g38(TJ zJPEhRR{lo+kOu|nzwS0C%n3zro0SRkER5Vt@i&$5vYLajB?aH9paM z*zyFDmE%(Co}=^K>w^<3N$aC`m%JFOliD@_y&V$>I#rX+RLH$kd6u>nfk4YsObSV-Y z)jGUpE#U?dqOePBog!l(nem3seT~vUzAn}izM=ydheoCdX+jrp1-y1!kS_N^+`{x7 zs~qPWC&yJYlubzuKoLE%3(s;UijcRMfE=P@?n);W>fSVT!aqm}`0ULSYLl1oi;T&V z;GO~Nh;_!w&fi)amCHCV+d=YL9BRM4f59zJa3kmE&8vVzr3BgaHNg*4aGri@UvTrx zFq2!Esfb@e(#H7#gIXG3L2Hsz38lUu5vOaQH2+y3r5)}iOFK?FNG9o~u!Gv)7q966XAvi{1MllGu=ONjBQUr}N^uy<7~`|q-YQ`Q zSqo56??9h>4L?qDc#s|bXx@NQytC0xekO)SIG=ix$N89j-y>1gWCMrVVy3i`SdsJs z(fTbmhPCD!FX9`2B+q0b`pNjzs1oj7>e>UI@fk5A-?#!3XgIp<4`zMp=_)d3_QHbn zVoI4y#u{2$Zr83L@-mQg;pX+7K>*hfm>uc%s;1cv^YK)wka~u$> z`&-@7PJ3st^ML*(vy;hL=q~o#qL4i(jgXtDQTkqUw3XXx3xkmkr+o!uq&8AnMXtyz zp|l|SrCr-@V!yJ3nUSWW7%S?DLPe>e(pnX@C+J1Tn>VdrRtu{!y-#s^L|^GgGVUCq zhM&@_=nivgI>VfOPI_>L3Lq4>g_>mDBvEVNdK_XbHCtM>tox{Q^BX1gblNWZkO;9n zGV!n6S*x6!&NKUy-QEdj{_PL@y-EzniO>dCafUIGcc6lG3D%|pYV+jUAti;phJ4vx zy&oN;J6au-4~&9j}bc4bu~f7a{!0RS96{f6qsg>N2y+ue!7S{fexsma1Z|X zKlh~5+ljRA+gqHToaRlu^||3fGr`QQ*1sBx^~JhG7xb^W>aRwkrn(obu!C>`&(v?` z9NS)G=Ww#ahVDc6{o0=;o{~?YkC+#i-EO|H$_Fl4C(K!-DBRR0qpqJSJ!3c0X6E!K z=mZWp-MBNu-59TokV?GG^w3)wq~$TzaZC5IYFP2D?RWw*8%wmK?4RGk6uO&yo=7y? zjk)1(@-AGYR~!h!S(*gS;_6_O6#?_7xyia|b+-ParpM?9+1h!IT?n&LM$GXp!W*yP zX?4Ztxfag*rLW=y`j6*4k?A+esA-<0vt7p|ThS;5*0&qi#ue0$wV8JYy3^=qN;@5$ z<4#LXRX7gOEX>Yj)Dv0}^kJg4&H7+PT1Bn@nFWni%&|Xk0Qzi4TM2TXh<{y^IUvHR z%jT{0=yK1Cxp5*S)@Jh_EjN2v+pY0d4AXaZ<1>@tJ9H5aX(s!;Q#f%4QmLl%Z=1nR zWkL(s4nJ*bWiC8R38s%D=08?2&pEf5$an$r^+#R+avy^#7oRp0aHMn8iTC$Bccri1 zB>GZEP{I(@;-l#1!{{&4TMf@&sa z%dIV01K6!tNv}ixrYHB6?vMy}3}wJ5rqY0O%`VE5uIZgeXBCbQ@P<4a967&U5Jzl) zIpmT#nM#>KH#M+FDX$pit5oRRRFCOS0^Z|Xcs|Pc1O0EfiM~l2m73a1*oGaviS@1I zR*0FDy}xO}2{$mq%wXSVS-kE2d7Gv=xttF8T<`>=#akmr(0yJ|OOSL`geP6lQmjGv z+b+-thO5WfLG_CFVHP@yAonhl(@wg%FcOnn{;km~xb>sRJpQC>oR5T@tY&6;_(yUz z+0@gQgw=1nhlky?+(|YYKMR99q=PRIgv0zw+12(;rz4r!EUULQ)QV>n!4qKVd%=>n zfdp4ZFFu@44&_}80zF8G0^~S7&NMpw;^-~!YmT1Nd~G(iQdqq~9t5`7jziD37@Q=Z zp!>m08jXw*uBY=M$DlP`cJqIVg zpZpfx*kWi&TUdi-A`3BCs%4Mn#&9=&8fwwWaJgS~3p-XrPF z(t*CMK*jvW7n#TFC`r})nq)jM2U}&R&?&%%W|DHzosH6y$fc|&1o>O&^LueKymHpi zo3)1fs{#HzgMD3RlwI0vV-`OC9ZX;&>3_H3R4J*>=UlxMa*~>m!dv7_wA0u-?Z?h3 zaIm-BEz^Vx(mTavt6D`g+gHsQ_@yK0uh`-M*7AyU$vR?HA&Gy19yFtqhMr?3?Ar;Z zsW$#xaXBbW8TF`IN$2jhhFM2Yd*>y`q?~?|dY70tI6E4IeIB{^&Oy5b^V>yG)hi@z z?G>8Ko7HF-zp7{kmz#&JN934vHA;|He3;$#<>b!%Ms;Am&cSJX=93lP;`&|)sT%vm zoYGKvg?dCUY8uvE&PHw)kH-S40nOQU7@zCZUkpg62TrFvEA$-d7MaBlyC0r$oW@Rr1v2{@qYqmf(>K9o^erWOIo zooRkH%YnD#w$|cOsjq(^yX~Mfmc83u(Jgdw7x1Z@=*}K-1E+)^?GA=K2L;z)SlPLt z5Ou9I)Wwkq0i`3*=reVs+>XqgW z%mz0Ym%9CpJ>3o1s#6euXiv8Ly)sU63#~C@UP8<)+7Qg%ME=?|Ffb#~`L1CX zSXYp#{%UP~0Tp>R&a#F4suxLC*hP+4Vc3`U?338wEv6#>@`N%}3%~*{L-#R>JzVv` zAZn{8(R2OBlif=uD}H-hpb}?63%!+@zL8%;%#IJWHW+0)aD+Bsl$*?y#wM*a)!{B^ zOFA(vGsROX0vV-FDQA+?klg3H!U8d&^bfelRc*cz$)?31)U<2ih*qOusHRMp-U_ZC zMuOFMrl%r~Z?AWb()ASk=mrnx4DrJ4-cKZT8z8^OFgjAC$@fnKY!pxVE&UL1yEA9&qHwLQT z7Z_aw4X6(G zmCfp56=9~mg|_bj4yt&{TInZhmZ4}U>yo@Q#@T`ETch6g5LV#Ip9Oz#S5E_q-;nuE zu{z^X$)q2~pR$C!@i^!8d7kKYKJSOqoPW0or9gnas(I-R(~@Le-^{|?kQI#Y7z)fj zyv>c|<7AwF!ZlS1?5ZX>T^~@H03M{~WUm%ya_@{DyMP(bYQ;CbV7>vhJ&AfInr#-R z$X-nAm2+3qrwC34XPJ|i8a)-S=RA@*cc_J!36F!>UInMfV>w{Voq0BOP-2JRieJL* zo7eemU**g-rnAcrSC@(%8fCZ_4(XN5TGlb^r8UI5Lh8^+*x!~Ua5Mw)s)?(kqvP3+ z><9L5y9g-g0XIk(T(7GAUBMP-lO8&PNiK^s-mYnHv%`3@XSw~- zqX26n=fN)7j)sAX~B~ zZuHc6bX>iQJm&cd8> zTh8ndOT4n8K5*u$;Hy+X}w}-V_)5i$HFQQjg#qTev>mo1?eiPhhSxl_Qc3) zO{8C)1Nzw*b@>8)45;ZVF;=Jr;@Z-C@5I=rnv;W(eUA$&~HZZi{7v^@MOoL02uFIg^f8!HHg$2kd{%K$*ZST8U9E& zFX(qkjY%S9WD7~CpUpevEVLWhiJa2-?W?o(N@RL!P8!-u*qBtz^QElA)-J2Qb>Hy8 z1G18-Tvj?jFY_CG>5n~z`R6>y=PzfDH$oyFyGSRJPKHP={Dpf~UJXq=oSjN#f` zWf|JZZ-2MFY;fkt>%HIfhaJ!6{N=Ppp&^k zulUw)21+!Gzty%gG0~rOX1Pzjmh7tPLIPSb9M}WR;hgxrAWX8=3Y4~$76I}R#lFo_ z{&&}KYr-A1bT&8wbHF>VKKJxPrtwW`J3ZFOPyNaqNDx>H%XX7D?FuTor97oW;2sP9 zazHsa`{%jgyW&Q9C$uJc{inKIPip4p=`IXh4s;C+w9=V3d1Df&E##Hr8PJwBxa+4n zS)5b6Em6)__lI|y1QoJX*uFMSA7vCIy{L)R(fU9y(+xkzRwavk6g*nx`zCZpI7ysf z5Z<#+88>sa+w`UT)=MUIL@D@0 zKBn6GEHj5SiMRZNb;|P0QO05I7aDO9RnscJgcs~)bAH+f?PoSDvlGniy#YMB35ix` z$f&qw{A;G=B;K`BSy!12FOsj_4^ASSU$(2e1^vhDI{HbHzyvid zHOa8LnUBo#Rz*<9gk~RYI$JI+p7MC1p*N7bbOc>|dOm%DUELY#4L~Ef5dBI!i;-XcToNis$heyBWT@ob~VS;wT64&0$K+5v$?&iKkDrM>oAp9z|@5|s1- zijp}n9B0_)|r9>|t%A=fE_CsN+`in6!${-F34)dk{QN502Wv_j*|o5Wzjm-W$I20q168bHAP$4s z+|`P%E}Tr9fNy%msBT^1Bu_ay-T5wj+A%@~X_#DajZd$1**a|<<@Tsxj?pWt zqvS!%67z+Uei!$T-NHU^H)jU_7so?=v_f@Jl9R5kHDD(F34UHSus+~hwaxV~Q1Q?Z zl$YNLd%clxgQGx#;ybdP*6!{6%lv#Te#K<{JeqHBv3NY*2-y?F?yg)uA}ad z7m6FW-4m1KGYq8ToBh^4@1*b+`t{N1B?ANNqju91kkC|wzB1Y>8Q1_%{)0*AGPq7p z?vahY4MTXEw;%50k%lmwjK2l_P3;w*GB3Cs-*0xdXGogtC~Tu^x=GfZUeO zbT7!vE@zqT#@?aBECfTcfXSwXZ-^D-_-Y3dQ>McXfmc#&)zp;F-lk$RDXK?vy){la@yxZ{)T51(pS-T0hBWe5RMx`>XBc+q{9B zy;|M?w~AATcQC?^aaN;}nhQcYTU>&#BNwdbDWjBCJ1{;F1E>1I_&_RmFZ$_d{D>LB zz`CK{QJl&4LUbaf*)w*Z9eOpyco1Fp1@=J)RM5kE7catGxBui`+2?M z?!LdgOdamsMRcAMy&$p@X0t75Ka;L+gmNR)Ln{)+&HdF#p(o|8Z!EnM_X(-}5pG*% zqy^4Pv`#}|c2;>E1Wk&NQpoL;6WRpsuv6A(_`U~lSqZFbx}oluL@8PvA>Q-HxM%F{ zHZ>NXR~e?QP`4h>*<E-~vo_0fx&#h8QjOV9A@yCuYH-mFBR1;#aLmI;Ie0#-v~1N$Dbu^nTbG)>q@bq^(Lv<{Q7#%&to^hG06 zKvbp8Ae|Yta>jNrkma1MB`BDVqX^Q$vEP&Ka0zy0AiJI~aXtcQi8?w&SHOXV;x|1d z)j?-FlZrQwjOeje6g}Mna=_B+o5^`T3nKOqX66-`%}{QJ3h0o0=e2vni`#26OG>LO zR!fp)xgC`BUu&k-%sR);mM>I~M#>p!B--G)>@Y~{T1;IP!8KaYBPr+{=L%(D{Zw`d zOw?~1$IOx3q1I#2&%*$e0gTah;~l5bszWUKx> z>4d0krdc!0rC^q;aiHvFm-u)RwKk$gy2lLv#Lf@CQ5<(d0yc9u25YkADCN2OR)1>F zwp42*ZtP{`2zA$UsiW~yi_%3>QYH7Yo!E(wcmAF813s$1cT(stRhDw%iRh@cGxx!a z)S+r-fS=iKZsTm#0<9Q~>ZO(c1r=!~c)uIWVEbUtRamSJxP3a40r*(!0CH5nKe*O^v(TmNvg zjKszL7ROE+B~+RYf8G(C>xmQ38N&ONi%-r-#k>w0w4YSjIf{sK{H<|_S*$TVOE0`H z^GVfOuKdC?zZO+!!28VnXE}+TYW&KtoTV@aX;GU+N$b&+w$Xc|HcM}v1A#E$gf^3B z(VyJm)lx~S&m!>b1t9;O_%FFhY%Z-sjAG=2kHH zJjxL=b@sANAc40VTxTT}ehQf>#ZW{w5pqfm^zNl;2S8L~}c~G4807 zK`>**9_TbpZ<6!KZcV2&i-~2q)6Ol4&cTvL$-BYQJO^rKdWprah_~Zd7lp?{1{!!Af89N!? z@8Momx2_XqU$hsa@f?bCr87AJH^sGbY4Qmgqwhb@1Ur)%$zuc9Bb*>UQx z@+LDS?Qzb!#o=4uqT9(QbR?y$Q=5-sraK(`s;*X@*o=E8()fY=LRg?G#pAxz~Sz(SN0oDj7s7I)Cw0#n5+th zGR?ke_n`g+@Q7v-db0OnG+LJ4aGedzoG@Wstfz2ruW>f~PyNXIR7A8%z*y*Bce;cA zZFS!ACQo)J@jLYqw}DQ?D7{fE)Z<)a2E{Y1Axz#4^yMgO8?g!OyReZguuwG>%e%)J z%D=6^{nQ0?H9(p}F>+ES!PG>NBpS@Q9%ro3E|8y*1105JVUJga#Nsl%7aiRh{Ou{- zAof#_7AKJ7Tbo|~4l}?n^#0N2E9*X)I>XRlc2e>y>Eu{pyC*PfMYvC>_G6t`dxNvU z>&oZe#IN2}o~l03{}`btO{>E_dU4u)qm%Yc*+NcyI2mS>yykEwO?X}n_@#2uqUy;BBBZF0)tT+_Tx9XH0}ATKRCPTLK>jF z+f0X=hG}?)KF)|RKUqftGXfJV*_4g+dQt5sc_pFnL=U`WUORGPe=$o8L20p?o~u57 zu8wR2AA)Ln0=u7*k;J_Vw&x_j@?JI(ypkJ|bW%WQh%c(1JDll1Kfm)QCqRbA8Lt%C zxXI-&@_UriCQqv)nEM2hfNmLwa7Il~D#$%}9|!qGyw-ec5tUV2RB7{_>uzqmp|eRf z7%PuJw-=Wd(hHSh2=o6Ev{HlrZcD5p|DfaB$;r-3dPQQ?I4hW^2a+(|n!k94R1KBZ zSgj;ybH91oOhfYOSMxJn`Brr(e!(iz6H?3)dSUKIPSz{Br{id~wzvnqqQVI@(Am(Z zmnYY6ftkW;&;57`7fZmXJK zAAlA=p*7HIVx_aTlI%AN58FukN8($$Kh5ra@~qnxr8y_8h*dp{j=(C&OQ^ zwg>ZVE3+xOmILTIPvelxCrGGYyK_sOL2aHM?{X;Wzus)=$;~$J#p)-mqtTs7GcPl0 z(ZCFnvB#kr|D{e=K1##HYRpd!yg{&fXW@@>fdq8NxjY*!b$c`b=}En44|*Y@rg8X- zQJUcS*?{lig*XcCGdp}>Tj#ZXovQmkrkTlZcXVElggPjj6VQnyBL&r<{tP1(c$2x9 z#MuwHa1+W0(NmLLh_mD;dxtx6K3<_+8i0P*6I#M;e^wfT$=)<>nk0FnTI^u%rc)iE z6;fA|$-jj?U6V+Eh=G4th(;tmJmxI0@=au2u9AaM@@&$t(R&rO#=v2GXMXywM`{z< z#q{*AGbIQHt0(mBsK#Lm=h{%!_EQdhk9y!SPp5eNI+WL-8s1 z%mq}T9i4>qxmB198gpOFLr>EhFIh%)qZW_fsR{`8LHeKfRFR{4J1S5oln?)r=-riy z{S$S55k5NwUc)w=kYwlxijihI9FO;R)G5vA&f8fZI9r3Y%y_LYz)C&DWu1(4JvN!Z zEv&OUQhz>s`(S%s3q#ovrr;DAN&d}zzI7=yHNB}nVI)o#=56%F19<0tgC{w&PIX>tVi;DN0r{9tEYG?NH-99qp1q=ans z($G6?!4v-i)>uGE`+-iREh@1P^oN%Ii3%div+#VBX3zWwlFx6!kn6Z=7LjFqh#RU4 zo8ot=r!i_%{ch_;jW3Hc1=0YkoNDr81F1cxOA6;b6>s0hd zqd`m~LGu!WJ}PkC6*yb1xS`U>_rz7qseD62*UQpu~JJ~puo50q7xljD1;vVTRe!*Jm4gCgn z>n(2hq;Pu4tlGwUb(ri+w?RRM3vE%w!vBzp14wboH%p!989)q?hrQ7okPr-${*gNaKaY{JGn^{pE-E3Af(@RQoCn=2O0NdGZ7+vZJB{zA0bLi5e$4daEULs14{p?z8RE zlSi?wApxlz4ZJbT^&i1`zdDEEbMBD*%6?zcNZ+W7K|dpnM4+`vt>>gkP16&QZfElg zU1B?D8hV%IOfN0LnHr%GedJB_o1%+pE!+4aTG3-FX!ul=E!9xO71oo|8LyIq*pAbL zx9}+^(%@;G16fM|{!xO>tLsr{PecLO42{-Hvp6b!WSOtF64vQ)&dx8Rr;pgSNSq_D%PVH`KL;W{ba0 zKV5Ar9}-333ke%#(dgf^huR=dsc zZzucm0JlauFor4gfV-UB-0sI=0&}AZX$2FQk3Q-twL9GEVMgIiiARcKQTZ6GL}Tu$ zaI%r>x~b8-f8d$4pbPpawN_5U7#(4f%5P;vP4L0kqnCnd`XzTn6pnXzn zb(rzn@&k2)Mg<)V@`E-8*;d@Fc3ZkG)ba1RX`FVkDPoTODH+p0_JV!GdE@@;7Zg{@ z;o1ba<1v9pLBrzpi+41rWniVb5d5K!TwA>4iSA81sogC0P0ZbxTCtIKJ9j7fbtR=0 zN{C+3JZEhTbPpO7FK_&)cLzsDrj$mQhr8@9GhBLfr?2dL&QtjRdqN7S4o>E6+DD@T{KUk- zmO%EvPJ9i|xSg;6WsuH*K`%hfG2$=MSDS>Pj%=h{D~^y&a-ilIDXcDmZ-IA#%z@@i zk4cO|T8ykq5B*VIM`rX0JFk5`Hp*TC%2*r~S!>jrhtxcJY4EaCf$BjsgQ5d7nV~+g zYw(A%L;9c4-Wy1FI}io**Vv=65A7~)YCi*sjrpYV%5|+WYL#fKcwlP44ZI2*ur3;H zwVcW>P|4y#NADnv)3?}`u<(Q6K-1$VPQdS;LTLwoQ^qi@u7ThnDJXs*w-rq?#78!C zXU2zl0pHOnM|P&!o9sKh4{gY9UCb7g71A(el2(y)|Ey>mZU<5XpArn`e_Qu!S3Syq;M7A)OK< z*~&G@TZaN<1kC>tn5Mn#+uTg|P(W$Mem;|olW=Q);8vha-~tLFi9Woh(m`6usksH> z5^XQH=b)|Wz}>Wv39%s#`q`vVbi{{q25(9Bz+E&%o8U~#>n+rg@-?w7nU1P=*Ewm2 z+5`Ev!|DE8^SMQZa@U2$f41_~d&KEUZ?z3P4zys-8Sqz!yGvam@8MRe?$vi&{vStY9TvqJh4Jaw z1x)P3R_w%%tBBo&fh~$+ccNI>-5uE7-Q9{^*e$l~&dmMc<8$wS!0yZ!=e*|)<~&td z1=TzPRb?qyeT@aL_*K55_Qzq`pH&d!uD}{FT(L%aaNaGf*A|@lldVeLm7d9-IKF35 z>iz_4mlH<~t5{hq%+Z)4SFg?@2uwLJml2VIn)E6m#9WVEJ#E)KiBH=#=A@5Z6PT6=Oy9?t72!*cRnkxyg$a-CV9W3h;pcLCBdN*iSkd+fA-l9e z-leS5;*BS+Fn2g?ip{Q7u3hGIeJF^~SLq8~$|Fq`$YNl@9m*2`ES&s`KCwjdzuB z_j5nuzd+Y8V5xsLSSjSB%>W zgQE`TPY!bxT+5-#cxfq#d+))Y3wamwK3jQg&t30tI)mv#X;^_%K{m;QbyacC1H;MZ zo`m*fy}lCldOhijFwn`!-n`}s^$hc@_UO!#s^Co=A^bu~l}Z)hSq`Lc8|DskS9Kq9 z6*i0O71YHj&@+e)oKDt7PoO6af3b>3^>p=2_tryMbU_@4BS(2{zcJcX)E($H-NoF6 z-Su4!jdx7GmeJRjVGS+uHuaSD^zoeb%<>EZ&;4sXcYfmlnit&quO8uA=)UM~&a=Jg z3W7y+kG}r5)Si_Phk`MJ@9FDtvvPlfl+8pX-2~_SdrS#4!N5>mncV~VuGc|hhZyg) zCh89P3C_BBVZnVo>B->vl;|+0Z%WlU#!kiO-6Kb+x$)V~;%e#s>y~_ma()dk@gUWH z!@6CEhVd$$#A9!D&Z4Bb#sP0HZuQJmJ1yiQ_~MQ-ewlB$heo*l-A7z6%nHUJts4kN zH}Snw!%l4_GPN%3`IDI4GoF<{68(B*&;U^xr#97}8X1|;?{}YbyWRJg!@OfPBv-C-rbLm;4fC{~k(@+RuHn2s>tG_fZf!&6C9dAk(y%e%yF!UUJQMr{?)?c8xU?^oHn5@8OIwkGzTw zRw(?ga-L{UK{~~(_~nmrg2443DxEY(?`EE7{YEo^9f>mL5D26n$=9#MEJ8W<%tr5A zH0WfPpg%8aa;*+icL8!{SyxGT;rSl^SG3HqSA z2=T;vnp?ftr{%>R;!wGV76k4%-CTfveU`hcJIb`R;-p94#Ot`N(85m1y!bHBbre&s ziQXaBEjtAMZe<(@-@|}t2&(j)neSTm_>u~XgnpV%NMBhyMtP!LrHWM zd?yvG@i$Ct>T5^zeMT%3u9MXGp=JT&Ayb4rtfUiEmksQh_$6ArnR=dg95aFLl&B2UBn+d}ALo8QqquwvrRk5X{AyxqvkX-Frql_XO`AYpmVKxeSN9 zlUxornfyiw?4v_WKeM_=yAttPISRk4t(;vt3Y+pR%$9-7db*;B`^DM28lROQ&K8mU--`#yYh7Rkd9QftfWA!uH<;>G?P4%Yc1VTfDar>e z#M}oqdln@@X}X1S<~8l3a!Dp@7<}cH-I40(AfNclR9{^20X!{8ryJ=>{t(!mnBOy?E=`#eTIq=xE^aan2Wn&MvN zwq1KkTi?6tH%zj&qtnR1)bb7tuTtQW%&uk~_XC}M=N&;3-#XG7R*Ti;j_N>kY;Qqko4A90vip2- zmBkO?uJ#O<7GLQEj#cGRYTWR)_CzNh_Vi+A&0 zBe)K#!8qKQmhyJG!nA5<&7l8#;EDI#r>HOVkvp*&U}=^M-ObZRTHY^_GHx2CfnAmv{8s-0Oc_4e5N(gXlgW$s<_pN}`tK zd;?c4Y=uxYg~CnW%$!uWr-5%CL2X!4t)vC%myC`sKX-9=dw40oaTn{OomciqexMz< z@a`!AZ!f_kg9X1~qO`zjiPotjmD(?O8ZY$irUBP`Eh>}kW+}6o5d&hk8_s`noR#jv z9N0)LJCl=qDwX$6kex%QI=j+)T~Zh6jo>>y;NJjvzLs$wpQHB5c{=rL_@6xDl*-Ca zpZ0vAnrKbpKu(@j0bB-(s~yPyD+05use7n=7y>8Q)~^MG?qE~T%r`QfV^GNt7x;7K#+`JCUG7M18+09CF@vQi@de} zsk`P2id2`s`<=StD%C+ZIBlz8@pl1P%FHRZpU=FWjK&^tOD=GpcY=4Al~b;pU6~#D zLd5Fu)T+^9RJU5dw*}YEsM_TqmaWcerFn24@+;0asaH2PwDS8d3hR_y< z$5&kMC!x&nqJ-OO?lwE&EttZPQFUrevpbVW+06M!g>VvQ8wn*zE?5VzZ7*t&hA_uf zes%$h;ma`E26M`lgb&l5T$@QK(!P*6Iu*rmJ$zqUGOJAT7HmcpuL*(tY+?BsYbyia z*klIZm=otM8Rk*O101Tifc~Twmyi%O0iS}a?4q&gE7Mvj>;$Tz5@J2p)^~2*_sl4s zaR)YVdCXB}O_0?s)I)oung2YRE^z;i0$J@&r;`QD@E8*vQLMnv{#3%XR^$~Y7#HCI zjfEdl)i7{cnn{-JMEo-2d0IZ!G589f(ObOquEu+^xTBIBl0hCoUH%o#VJNEqc>Zof zRKK^;+!R;G%LU2ftA=K{n4OisZF7f>VNN*%567zFRXpG-D*f?}TxrBJk&ZVn;zJZ? zwlHR)fx08_!EGs?d!Z$$_d)Kzt8_1EQ3#|#J=K*@y%XlrRx(Ss7$v|ROW<^{9+uZl z?WWpK$tq7q5f_UZ-SW=l9%}Lo${VK zo~)m-MDX*+ z)Ma&@{&o#ZhsS%%8-PlC0P5}mj#qdqmVvExULAwlq^o%grygIpe2vkJY$W+ZWznKJ5Kf5mnK<@`2eg@lthz=Py)SNFFM?jz$Mup4oD0)C2XbAWnq3 z;OlKsv;DFoNg9gCT+LEj(;9r-$ zHCW$6Y?GXpYT{7%Ef16&un$HtxzL!DrUlb4jAz1U^$PybjyPP%MJ?fBrF@_k*aXL< zh&_VLxw6!?4dpUQ2erRel4@@b9y~kDUg#q4Ffo}#ve!ZBF^N14IS=yUR3!4O|AH;~ z!LADsuF_!*f-^c)YpfR`CpxRE6lhp#*FBtUKWXF9#f`(SI1?%YhUTpA``oSVtwG%C zA8;UO4!`a?*}S1Rn8z}~2%yfa1yY35Gc%&@>Mr~mE(`DQJ{V;+;S}@ten*iK#iU>$ zxI`PNkz7pqs(e<<8=uYM`0(5{1L=9nna%ZQJnw^YG`gQ2PFWN~pfI>#&Bc-GjCG#b zLQ<;tD`^ToF@ND)WMW3NntM{Ai)d`T!o%Ez_0m zlFyJ@yF))@3}@mn2!{Sj&ZD<_0{N2#QO5Xyuo+A%7NPZ+!bJb8_dXqX3nv-x%TM|w zk5)gSeXB=qbRC#qgK#mJMuyUMtr9cWO44o=&8J~vrn45o_Q=P{Qi0wy1(UT6VlC48 zjw>7RB1nh7|9H;+4Xyy!Xv1V*|59Aa7}NpT9nn5(9bk>GqnDYAD}d%Kb4(l*&cIvu z*GlRq@FUsFE#HOuK*o)vJgE6Bc=9>fG`|}o^_yhD4wf597loY86?})&Ss&RUW$B|fa#Lp_G5e}8hP0Fw z>Pr}0Uzix@<)?qaZ3N$jnb=jSfge#Kt|Glz;pzFlS*>7LhA@R~L(s&5eD8B;O&2h~ zTF7iqhXtyk1X<7DE&@&yDVIPe_5x3ml~z(Z>Uyf*7?jlwsj1#LON6dcyxalSn?Js` zrI_kZbhR_%^a%VtN@-mcH=p~RGmK=M305t*oLRkNafh2}jb={XN*D&aC$r+G>Zm|t zISW5fopd&PnCH-B4#6pQk93xF)sb*05@7k+o{4x~yu-o1^R9~yOH;=&RRLE5u%8Y#ySu1JC z2_Hx&ILpjQ4fLIL~SyBDp&L-c@ALM@(nL)>~UQ3F4tPI<<^ zVD8Ryu#37XXXNxK&mKGBu;ANLgEp}|=(sYWL|IGTNHF=ZoG}k;%&MfHFTjL_1EL9TJ{ymb03!vpXa%~ftgeAL z1+9h!;-E~QLM@w=SUM6H!XS7J<+$$?`PS>mEdC@Gmm|q{%!8`A1)fX+c)0yG+nT-b zgSfz?KD&HRY>SsfW7sDRP)$DKe z11yq)(k+s8TsT=wVt-!tCL?LRuYH0Ws3u)UCb^LEQAyz59Rj;y1SiW{{u^w3*UpoK zcS{~2J;t{ul8SaK)yf+*z)S%-S6;x^IWKl3X}vXGR8{q>I2x8_hknAxeTlw8E2#xC zr7R|e;DhnpE(t$szBeD<5-u1!O>p^Zjbo4?KL&Gaqow0an_%{&cZe_r^BMfilIS>p zN)yl#mvl;!;1SI8ZbE(c0{z?xyf8jEIlvd&k}@zu+evQn8nY!D+dz=BKh%at)$N>0 zyWlu%f>i+vj=TE?UPm9i^~p`nDV7mWqPDKCv|3W z$pSuk4Lk z_sw2Q#V~}oUC3LHp4cR%Adj;Tm(8P64^rm)X{Gf~%;sO1jyc7AO`3%Qa481TC`n~F65Y*5|`VWW|D)@Wcc0%lpyZDAaINb?yphaI&{dp zE!m!IzeIZ#Bz2byE3Y|Ke(PUx^J;3IF#_<39)`LupISi~M#h=H*pi-aFV5R(?PAtG zuZb7mMW?N>7Jt(RFw6ea9*~86Q_p990h#NIBV|Ui51(qcaiUKq{&qGxx^te6u{7-Z zj^MOias8h`Qp^ibQ!jl)O5WBrc%Fyg0Vk4I;KQ7vJm}{RbU}Y$Q>Sl;Ut-}7twy@h2xchx-tNF zfC&73BgN}dMP<1fNtSw7Cd5x*7?1EFYfY`v)VxNfaaQ{Cu6PXe1ChvpmUuW7byq61L|8p%`R4;} z+Yi=cIuzpgRH5Fyh@(nX9B`l02_#pi%DBe(^$ zf-$}Tmtcb~^CCRLGO(ETWlBQ6wrq6l=t0|S%Ee(K&(iwn z9}HiZ$VEtF9!?I^HF(=GxKA9V-#pIeUckOS!kO~Lo5H?fPqceF&xEwHq|8*t(|LuM zE8vU&2Y%#B*LGElQ12^klmIG?k4#Q-lXVbAmpu^%K`&HmzRqrEr8pT+5KaB0E=1uz zgI(E~b#e#S_?lo(B8ahBCV@zR}6HvM$Cy?!Bo0|!e|S( z{Q_LN^Pr+$t9>EA-XyKDijc)Qh@(hzD%uO61JR^?=ceVi@npLR?vM`e>BO464QgoZ2IY(c5XW%gOiPL`pjL%t0BV1k<;bnHwykcHA zYv4%eLW6xvnS|o}qR@}}XfJ5UX}qg9(m6%oV_FJKW2m@M%BIYumX^pI+>57qZcwk= zFxK4qK5A(nd5TzyPhG&S58He#97c&=w-h;g*O?gAmNvq6E2Rw~iK8AYNZqy548%XR z58g(8pidd4OJvdAMs1VJ8c5$&nRO;ou{7s9FNZ_Djm~EzO5aF&%{8pBOKA2C@b(Al zSY-!}SGji1T-6kP=ondRi7!svmMVuV(ZJkNG;-B;nl_zf1Mj+5dAs)V+Z zjB+I{Q?kAAYS+VcpO1<>!Rm(`~YcgBbnlOn0Jlhj_pS^c#fpq#bBxpI6E^j|2z+??HuR8bZ>HW zpvCN~b`Tkjv!wqxwKt;V3gu^)@{_sA)Le*1e_`Ao+mOX!k(|`jih-FwhR)iD$Na~+rglJ8a#_}wl@+12SE^IHEES$xWbP)R~0>o<_ z8lMaDR^^+znAD|vMrZRI9-Bchq*mbl)*43LZ!szPE(;Zr0ynEB$W2dlAD^7;+^#$6 z$6s>hKGCZi9gO3~NVK;8dTy%65Ap@c7BAzWI>GJ&iqVUjeW3NqYC)#hTIY+<0)Ng} z%a58hBK8M_B}Xto#Ktgag$#cTvBUX`3jJLFo89^fk|&oJnN@|$bD88 z$l)mD3XoOeXOH4OY0f7t!)`yo&$;0(3F?0CV6U-?dg&SWN>vJJvP}dvG ze9F?prRQ6^P=}m!boQGMItxn+hp(K%l^L}|VY48o`6N)!6{svCK}Y(5xOU|{p9Sk^ zE=e%0Sn(dI7y0(XP~^|RX~ALT?IP1O87{gV;QekTxqLK#tuW{CIg~$P{5^k?TxN;& zagwga&z&@enjg3Y(wQ3C)@vraRxAH*(mEI^xT7^ zJb`CY8je#dI?QXlgMHF?@YTWW>ks@ydg|b2IElq@U)}tdJJ1mf-H)^P2deb7RPNtU zcJ@*;C^x0~;xFd`o@Ev%L3hr-ZK#YokZN{Z2*xLPu$qNk)r~WECb-WgaDW~9f10i? zz;QQJFr3xaShymMJ$7QaC%5-MZpa+eBP--iYBijC%eV@`rMb=IT1M{|sCQS7;Biw6 z_Mo5j)blhkG%+}FWnzS9DO}8Tcrh-QW7Iu*KQqx)-zS4_M&ErtJ={;3wAa+K;>ZvO z($m;m$dfB^)!$BkU;h1^xQ;V#2%mJF^hW8cuQT()eVFSr-sibbE1yE{mgW^LP{}Q& zhLcy%O6R?v`0a1|zpliro>wS+%aAp&LLQ)g&{Mi{`-pzF-zVSQepUUN`nT= zk~lk*ZN;XT;;VuRpm|@JzGY{T}5!m-156`;Wc*Q*=)CD|PY=>HPiu zvKiNt{qbL#{Cln}6`V>3OXbPkDphm&y#?j`PyCMx3Cfq?gl69xe_isU?%yN7C;TmH z@4%sV5je$qeVJxy>G1S=tew|RXqoi^x~eZ?C*PM>%1sqpO|PYdf4c+Jtr;HaKg_}U z480!sv_FYM>CI6_SABwhT3etgS^(=HTHZ<(SWzoN;!|h6n{m5aHj3>M!CLxl;#PvMpDhm@dBVmaL7-k}+)solWM=0AG* zo#r0YczFz4`>V=o7v-3oN?stfhV59G%%CR10AUxktCtkHL9(wBp_EpO;orT4`%;9b zXzS_mqji%uyB~j-rf{OakQ()lom7__w|1Hd!^v}8jhE$d(%&kfa`a;-AEwUkj52&Nsfb;IF0T$C6oUW!Yulr)`!UH;``W1fVDsc*HXqqkB8_`g`#>KTV6M=7n11^sbzw+vz?j(rY zycYdtD^U52+FqX01gWoBQuuCXu?Jd(P*YZ?+pG*r=O=Z5C8m>eD7jT%v|oN?HqJ)f z<4@X23Hrt7%5L(@R*M&fL(WsXFcs!u>mJ_}4_i{M%8AvbD)Ka?kvd1)45O(TwfJS` zPD?r2M`?{owJszVl1iep`45laZ)9Tl*#D7!*vn}zR3L+_HdRDryiKd05G z)G?~*L0VO+%R+JiDU+C8s7;1pHFBr2z&!DDE;uXcAg+KQ-BvEEKKd6ug?W(aiRp?l zccZ_W%GJ=)Z0`zN)^A*ggA$u;`{y|#gBw-@mb&NcbNpMRN`8qSr?M;6jX9R!^ zpTZ$7>Hgb>^HdbxsA=FSgyT7H+B59BBoO+D{*nUgF;K0`2@z(bX4=%78?X^fwXXP* zhbSR%sWdUcDZ?z_8~E%ETu~Y`QaNxxMUjzM!ZhKfG(wI`K0Z za|OxPH2KaI!A}B6bY24@yh_?9-@!@dJ`R47{OospRU4y!>8XWN4>!iYVjMoqeaWX! zj~06~xQ}G7qBbqWiJDu=EGOkbr_dCAEeYJS$R8ZcbS=Fua_gsutr;qHVupOdkx^lW zkO|!yKcz98ih*JlDU0lbV*WnZPiwGZIXAqwH9F5ryd*yA{hC)r!6;LbYd zg`U)Y73HeRZzWER;l8{NW|anKf?OzS8j@DqT8@%p#0MyiLQt$#C#APCZz-K~hfiG| zhCz8b0fy2|)<;uaBI$feQb(-k#C4~VTJ+!38j9QMc_%&ZxC5!JBkiAdA5j0~oUQ(H z3hvLJc$zQJi_*g%GvPCER=0 zkiFg5XhBD?n2Eu2^|f+O_UEVTfkJhr7$(=R!1Wvwv;5~a#>DCe-GdbQ4Cv%MYpY{yIX_xLc z@)^FkZqEi;jKc|DhcO!<_7rY9MV(!ooU`o1qylZg6DE*U!bC|>E;Ex0(^P%1o{V(P za3d8M+aB)l=gJS+l3Y?|)D>|~2RLoV?M1Az8vO0H-2a*+$ak3j?!)6CyS`iZHG;{y zm6=1HV2z$tUg1VpfC_7Y@S3@t4(2u0j%6lR$9W9{r@k0WI*Ob6VVYV(+XW`OnTg3v zI^9;t3 zq{d_OqIO07#Qyli{-{7LaNa2if-{EmB+7oyXE%iND2gUa-B7R=RR5rziPYcYA=I53 zWG_5{05aZ6DcR&;X6{qTT90sScE~}dLj{~Q=t$FxH(~H}kZUN#)OW14&fKt-jWX=) zY3M=yv@B{6`)eRKjv>|&jyWZqpY~2ZcTUz?3gI|4UQ3u-9FVZ_mTRKET2CZ5_mt=~cNGohdXN+k?Ax!-Nw~A18p{AUN$v;GTg0nM=CI%{2^c^^bZK2ensv52H8d z_!GU7K3tor?odwR+*TCE!3c1-!A=67{V2$PUcP%t`hly=Oj^tNluuO1(VC_&<8*ni zFJ;oxl?)EEBu-gYr_X(E-9-=id6q1M)9eKvfH zmZS!Mpko>e%i{v4qa}rKpX?;3HOdL3I(q{Cm6Mop5VK0(q!lD%k5+SQ$@LxN z0EZX_aW@8A*2a(=^G?o$%f?*sj8Kf;ro593+`#P=a5lktvti~;l*-Aum8ll)v7TQ&!Y+alWsVFQHYcO6?L$6>!$>Mt1#n+iQ1m@(P!PSpI%V*(1MW*Ue|; zeJ4+NpphLOR|an5#_9+r>2IVIXk5+~Px*9V{GTz7A8wD$L8hk@tPELh7iInXq=P&2n8Mu}8IP1viqKCD3dNb$=%W_UH z;`?`|aw=gQ(%sZQz0_5lcOI!S?zNYNf~>vfPHuijbMkqMGPzny1(ZzwB%g)_7pfJ| zuTjUGB<;GrA%X38!L{tAk{Og8pLteK3Sk)N?^8}J#cAWbf=T;?^qmOqbyfMG+~8gh z<)kl#^LwBX%f7F!^{a&Fn$q*Mv+is!cP?Kw~ zwaIW1_8SMO!%~72j01&zqj=;hB)TsUzY6(;ElwrYZyx@?pHt@sdndQ#WhOrsAB<6? zaQz{F^aIYCTbM#kM2&e%eXnFh58Yat&AHWBIKtj9!Eb2e4ClPw$KTH_UB*FZG^ti2 zv^>;d;r#Va#zw>BuG*?;T57d2z3MV)muL$WnS}-N1RjB>g_9mM5Z5+ATFTV2jN+qa z)-Gtnb%V7xlIn8{&%ZA<n9%;9%EVzf6^q61G*Sycp-H)ZEt>*h7^#eVhJ!gENKNq9pAC9S#8t z3D9(I>wMrD^Y|^_IRR#Ar*VNx#pJd#JNS?w3B4S026zI`xb;SnaBv8}+ghx_UufXZ zlK|BTRc$Qae;Fs>QMg_i;DF9muAu=5lxm6NVd6yc{a-PeD(%e2pL&K+T~wqa(i*uJ z4Ad~KjQ$92#u2{3BnX9W97e9HUGoVK{+PV5IPwwNrzNKADrBpAX{ZZOK$Ho`jRx z$|$vymK!E&Cu0PkAefrGmfo3)egkZr=j?*~VmIN8(}=oZsl9+Y@f-X2E;UO=@d2ms zcDWntxQF(c`q+lKmeP30&rhOa`iV12BW~Y0tbwe!9=b^xxK7pL#r5|kDVdq69rj2) zImcRoNEPM=Da_qH-zbgiSS~)nY;`v4@S~KRgo3rgS7$6MAb~kXTHe7Wr<>p>t|h}a zH&xRsn1 z?F9#4!aAx?)pmr0@^GdM1xVm~3qxfHC*dynCby_ePV)@ML&Z0cyJRA@Q!wrcvsnk3 z(c`S-CK$p~%*RSfx=FGd@AN!4w%z0{rUDUZMjyCLctY*<)*eomu#9`W0`+n$!C!m_ zKPQZ5Pzqjv}n%jz%?boou)?EKx5hl0pYZB{Q5(sVvFJ6M2rC?5F6` ze>jtcWa2Y%EErf*C5RK{qqYWK+8%1DCdL^(FR67~slFw}lmnTb%w#tWpptuIzn~r| z=p1!Igg7!s3Q3P~iI`93dwr^zBLfHhkQl)B<5o+oaH$_1$($n zciPf{V;gs~zq5^#b%)T99TAU<=~ia;)wKZX$@;v9ZAN`EzzcJ?Z3IC|r=$e+>JDa> zQkd-Ib3Rg&`q0zt1z|Wy{&Ikn0F!l_G8wG6m`;|9v6AYbr{UGZ>7-7;VY1}Z+%EY^ zl|2Dl;)vbT4(BO6`L`N+3#NFBId(Kkh)!xlyp(^CRCSA|Fr1F20cYbTb)WK4hn;DCw|97ZWqsCjur?C7h)^|IhbqYprc!^odI>w z$#B$I4UL86^zY~C=0kqnUK2+p_GR4Lo36Cd$5R>2z_E94bFfsQR>S1eK^SkoDeg*Z#A<_-AF5p-B9 z$l1LqAD1qR_l56H5I0OOaH@iQkH_Gj4?rS=d7H^Vs$MBiU?1+H(z*xRREB9(hg$!c zCTOY1xhTeZsE-4{ZYt$iyD7Eya8_kqs=coG@4XV=N^j*K%zqy+k6VB)t|^?&yVM-> z_4{CSZxydxUoMFcRutz`H7eyD^z|$0wJJG}@Mo*R^x>qmULK(gRmbBa+Jw8l2&to4 z&3@dr+jtijsFwtIC^Bg3SckRDt{P3Z^8lpo49w3`;&X1Atza4p-~+bfNnSSm@$X83 zyW9gko$ia@qZ_SB1-QchF;fto88`_x0%@GZ&X|p}L?CBe0{8W4e4f^8gY@j|iIhxT z{PBo;%t<|zgqr!hjaWLCg~BIp+3ofqyBrATRQr`3?c{+2+Ec6p23AJtf^+;JP^=Fy zIpKPlJ@ExHV3&7C?-E76*EQaT2uf-=XQ(-1!5Q*6tLZoo3ZY^dDHBzPre6bD zhLKqi-auNTk>2DVW2_o|M|Jv!%{+&(^vdD9&Hc9F%z(3SQ&=UAAOj?wl3Z1pUnQsJ zDonOmCsQ*!8|%2WXR4d<%^x8RrE;GP8rH)0w= zKrT-hc~P(hnMXP6HlTiaqds9xJ(V7banz1wz_yFyh5N(G1rq583R!{7r6;gqf8*_5 zp6a(e{!^<_cfL03k_vKDf33Zu{!O5N`yhT03NZ~xL@O9>_eHBYl`6bDUg#j+eU8)nfpTv_>$K2(M-3dnos(Y;;NCp}>Y(Gjr8AZ43>rCy`Xh+ip$j$ab#Ve} zyutJk<3UkFP)H0zk20Cx(9jsC57Ro}xL%k{yPMRnK2Bed<3sSLZ^QnWfFH(3XQ?nw zY$t`2B|VfLYOX$!^)Qcb(i1+h2^YE!D`Es#Y$R!%?cmoY@aglSDRfX+tfU5-f_ID| zzC|znMOM^2)DF1~53}kmW(=Ika#ZrsIDn17du*>X9TfQich)J;!A^E`bW*Bd8kBxNiW4m-~fS4zC2{ry(L+u zE$3x3CM@Tu=Ql}9WzJOfB5LT-Mp{GAehEsO;51=>``GW9 z4vBEg*V#=uEvItM7}7JQ@CopF{PY+4Hsc4UL}8NB{JAx%YV|;KvXe2ah!RSl0eIK# zwN_YftlXTrRh`RJAz49Wj`17fxP5QXl@_HEduF^erc+Z_(0g&-Zc$dq+og@Xja{UT z7GPcPvvykNtxUYz3XV=y9VLz=t8g@I>qU5A*5>B@&8fc{JS>u1V>_tt13L5XqJRT= zXNNRL7%v%7vNUIZrT>S~rx1UzJ1QylVCk&ZTcMR|isC1M{`@$d1y(ZjmX@SRD%zde zV9t4AN$!QQU4qpehf{oh!9)J`A?8Q(lzDKfmg_a?OKx*}4K%KU?X=LkpkQu^>w7R+ zQyrbDo7q?#@;}rjT8t?ToAm7nUQCG>U zq-EkNs@mV+Dk)*NUSxMvrJg9^oFk2XjMxp<;Y?+Qx))q-5ZzHAnF7(&rRDMS>`q?n zdi)E|;G1~Hv6&Y9#7lS@v#2+4@E)QADkOXo5}8?FfXCs|vd|%&VqI2)Q?`O9@k2AY zdHmsk<4P;sp{^bcGk7ag&a<2}F;u6qPCYt=S7Iz3N-PS)X;cy=N%&OQ8%uBqo&?fz z9Hi#7ycq|$X`B*UY`4AM8jiQ{8B`v9xJA$70as1TM|Ip*i2!2@*1yu>9O8LK!b>j4 z{Cf`d&@=gw6vyO3U|kL6Z7hQcK8m?#K_(Fabj-V9u}mbR_znsi5oES2GXxi`s}59_ z`$3!j(CY>;SIdT~sWQ1a`Rq8>)de^yHNmz6nFx;K4lE{BmTM}_)Cpv>j%9z;VQs%a z1JFyKr>#^Mz)BiK23Ri=((ZCvA7@=gpgV(>l&8o!L} z@Nss+b*`*8qvMQ#Rn;8Sr?gOtOk6h}`7Pl}k0C*{rTqzh%_M4?Y&bTT`{OIOPa!?N$3c)4{%5wO0Em-AM&6flo^#-p3zyM{lP6i(xbMrQ^p#Z22oL(4pMK6O~zHNRLC!xdsHYA!^VKtj&3xyiZonTeFO~;A z@60VYR_o8nosu)NI?VO?sEF30&p6L6UBaZMH z$r?{!vi?B3$)|{ip^<_+tOOpk-Lz)R6N|}3Vb8najkdB+z?e#IWydKoDNExiXle_g zfYyBPdEvpa zk!cJk))4Bmrg)JzMcv;VOzR?i{;_a(uNvvdY_F+RWDfmAI)=jNJY9Hk6cpvH;#L)_ z55HqLHJSyN;|azrGOW?1XQy(rSe+ ztv9TLyqw;{P&JoAeI7;4e+CtJqArlU`4x3>G#ZXjqZleDOL7)33qz z7>tH75Y6ij_WEOcGv3vM@i%{ts@qS?4?26>=x3foB{qcXC11JvpkEYO!S6<3hZY}u9I5y#h3#t`4MmAEJ*KPCM<_>0h=nd z6Z`T`kD+i_O}bhIzQ+X1%lTc2NyQ~WU}imBS;*vgo!*@kqA}(TK8Xu8e+w|CByPbS zZlMvvBGlR$$pFiQVxWRGmJ_Fsor~|`6+Vl9V9mAyX&kE8;pCmdJDE(?-3P_?CC;p^ zD4(k`Gyle_sEk9jVqJoj{RwA|Jyxh)%n1}Kh+U*ZXmLZC5|yGZSp%>8GH&AW^kF4+ zxAsnnm)C)ISLXa5fct5COSQhEP-%j8tr0lIH#}}qF|U};wBtCAR9Emnh7b-{xde%U zVKCeBL4$iL9cER`qDsuby2@*n=1I&!;Xe@`%s1BNb68QS6@RrdC{ZJ$8tUoFxJ}=n z11ZE^mQjmS=E?b`wD=QzWp%GY{bryA$j^P2%D#-!bC57i+%7$lUDO2aU`(fh-I@un z+il#*MX0g*Q0JvqPDxwEjc`Y=+Opk+B#Ho(cm=Ja+{(p3&mZwLbAlA@BOTNi1>bz$ z=O^^)yA{l^JjMrywN1VHM}$)XU4Mw+F4*5gcAm!x8?5PkN-f zRlBTjHtN%Td_x)63s&nL&YSy8eD}Z&s6sy(3e(202eZ!$u(DQKo%kM;;Y38i54;@WQ3HE7T@UOABkKaWr zR*>22G!l9y!3NxdKI1ff=^*f)aT+cGN@h7LnX-@Y)DA|O7z{V6FwES2R&qE_9l1l6 zkvHv;Tc{z-F``kZ-$FHDkXiB4C`3~IH)a7baz$K-lU8?kI~EUwIQ(@pu}?p7>h)&! zU0>`80{T`dt<`4g9DttmJ^!Nl4ONX%%p!}cI@SMvRPyWLvb?bRvmz|?Zl$alD6kIV z?7d1j4APO6>ZTV8g5i7*80Ij5Dw;d+Ydx;51A%NN`$>O<_w;fBR5x|lWnaBH*y)MZ zD!V9*i4Q_`DG1)dH{89-kpaAxZ*raU<}ylvN6eB>E34r=R1hoTj#LSjd1@4c+t7UE zpjLBm%s$SuxG(xJ6X?zjatYt-Qh1Z!;QUT!ZX^-*JZMQMNp=#t_ft$$M7u6pu!U&P zNv>plPvBOs0ty&~-&`O&WH^{pM%)=*!>k^Pf;^K^1`qs#>PM=qX`Gv_oi5x#zX|f7UM8+8T`jm^dOf|kqn2YU6RZe52r;2^cWxMLPp3v(7L84f3QDY zOkY-2D&9&@_?L4*mb0O>tu8eu3G*?ods(?lkC-kpXLeFuY+*{ah907+l1#o!Cp64i z52vv+Z{rHj)5a&qvUb37nk}4ThvZ~N*n?gwh79S$B)1<$J9?bz+pE2$o0*U=s|MB~<(o-B`$U2GvOf(KWYp0Edd>>ZxLnb4YL2Qvvqm68h1c^pr3 zjL;uG+DDX#X|21YH&mwjEe7tgicfKYyRd>11+(%1J~CbK69~XlsVVI2!}>mLsahXi zS{!S0H5kDUt2J!*9k}NxR!6$3;h+UoVF6BsCH7HC#p&IMeYzR-?+=*h&p5psqB2jT zUWEZW1MOEGr#1@QocxBts7c3qvswGCa5PvwsNWZ}F6uC^o2O4D^W!?q(mN=F_Tt;| zfqB<_r58$dFNnz}*lppk(qE%HONlz?met12!OZ$Peq$BEz#j5OQlW=Eiq<93yk?fc zE2TMnwfyR9c|NFY3GR^k_6km{T_|OCp=oVq{Upa{44i|d;#1y8J1~b2a%bN}Ho@t=v#z_#yH2DkBpeFapp8LuhQDK%o#bK-(I95`n77f$# zo~kha|IMwQ0)_EoRyf)0pzX10EZmpE)LHS)eex0elS;7FJMG^)=>}$y_>YPEU92Y0 zVt!Q?j#e%>=RSB{+`@Z42(Pg~O;oReDR$+pWzF2qs>`I^xx&ULkIk`n6(5;OC zc__(Sjbv?ol$)!INih6^_g@~@fAE5La`FYiWqyhGQ4D-FLp%**^)D5t2j`864bw%ovA2{QbgZJ8%-!X@|bYc8y?n?30YEj^`N$FhgP&uB! z%`Y2zuqk$!Qy=e;#nL;Jz%g(^6Y&w8fTR9xS3_JK4#AwOr#*wQSBZUg)!7UKwFb(+ zC8Vxg_7+8T-kkYENg*d^&QAKFtXc)`5eLVZSJdAZ%qr#pcKdLxBixV=@GEBs+rj+b zqV#`=5_ua+(JJ5{vv{5h;1_6UJ;|)6N(wbg;_AB$-D{X|*cuw=c=OY2}(rX4hx5vZIZ@x`B>mH)m%- zF`e+ru8B`{D|SgB|Btl_GXtmtkIx^LMF;q3uc^P&8iKhOhrv$Nd*k57zJ?vOON|EK ze8t&07)QBS?$ebx2XyhC^40}cgRkLCgR!m3rP0to(XQ){jHNKWlXDZbHTN-RN8qGw z0j~~`N{bJim*hG1=j?ohdgmGXyvtNMwRj&PtgN~C-{jZYkVP|q)3+RHe7ne^DQ*;D zuisG?ff%I1tL+DqhsCV#Bjo2C<-}P+#rTk0`65ZJ$><}dsZU9W)wtJF;gsQYd@ZAy+A(>qX!r-tPpSFnOITn%}i|=r|)5I)KBcS zmqu~WsJ7ZCWgUEKn@P}l`wctfIDU(r&{p0<^W570W{Y4^LDF<`UL1U7N*G>aDr&(a zDEnVA#c0I*;0u%Li!i;ygep#Dv{oAKUORE!c!u`)H62k8QdIkjd!;}s#?{;bn~agB zgwpW}oc%abkamE;6k?CXlZ`POWzsF~pZlafo#RP_p=p~A%2^NQMmSEQpSTa}f&#+|R5&Gxhs<{1`)U3mk?=&O9)fKF)CbltSsrlEJ%( zL<4Q$6&U7{T{I$a=@!4IFbyh2_lr`?iUXeTSP13NV-+oT2hu2j?~%}{vV zSIWU28Ofb|lpCN0E+kXU86@#_;Ct+)+fOTA0d4+52eFN0mAX8Q?cPElS{v+BP8Kl? zOs=xJU9&i^&fp8xi*q8IYbe=tq%4z0Q-Jpo%^OWka$+bhakJ69*5+Q=FAOmyf z*{sao$^*4A>a;T^8G^3uI0?qVKYyd|;-pBXT)^8hOep45u-o9(Foti@kWfyH};gLBD{Jx21v%@k;*YQ?vhU)i#HwRjo?6?Py zN87pEI{nXSZy{Y>YPAtnR+6LG7g8^MNfN1MW`?_;LVKzlA`zsd_!nHz*RI2w7{Zf? z;vUKfs#e~vh*MQGm~}mR{Xbe=JVu(~NqPm}JI72*&do&_Wf_#S)M=m5mcF77y2s5C ziKmR06E8oL!aL4pyh4(JZzkpSCFp;R!~YyolJeMOGre&NPG3$s%i%b79OHc!;C;3r zSG=%yBz_?$tf}^JvfxgjL5@}|vSW%E891>+T|?0)&f(PE4Bk+ed5$fu6pIUm*r8E; zhKXb|7bBtMJvU)#di|;}wjHSj>F+wTHG#hJKim$hxlYoN2`C)rF@4WKn#)XT-ZdyE zij%Q;g<5eHXMcBkOUX$`I%E(Y^eN$jtRdlf4E1VBS9%v(YO;b}YO7FZ{h~i^Mo$>b znVS~>s*WTcE<}|)7d=pI*n!plt%xs56)gg!cp#@;C$ji*;Jrl+O-{;bWh9m28}$19 zsF~lern7nT;<>t%uI!%m2@l>tu?PMNwlW;u>s4;zHuy-za7v5=7aXm()Bb=J58!>i zWqOcwf6eB1lqM5+K6TnWYq34Y*(=0>6^AOYvbkZ4ch8ji|qaRKY`^a(5 zL0a~GD$N7-L+Y|8^ihlOH7pG-Scg?vlZ3ymQhMs$1Dc8#;~m!2B3Cr7^~F(^l+Ynw#&5`mBWr}W0@}_c^rrW%cbxlGcpJy@)t-&FRbKYi6xVLoE*II`Od-O+ zia#oAxB^x_LFXXJ7)GTw0NkJOJE=glUrEv{Ft zcUI%t`P;OI==9}dYa@OLeWyG;U)m|b!EFu6kwI`m*%=%(Ow zH5|=(h*=r`iL*G`DDpNGUz3X*L+t5HFsgwgc}FNbxM2L%acgb{jZ^7597pib5bNF1iZ6s)&x1-%uCzh zLUoqZ>rtGygSY|Tf>v}iI?)d%C`-YPKEPX@!xY7$3MfU!MJc+m45Wgcr>40g_%cI3 zprnIsHJ(Y1+m+-*lHD~L<@N*W?dl*V%h7h^6h7M?@SaErL9Aj-Su!h(pm`lA! zqh1Fb?FAWh7M>OdHQ>7ej>^=IVf_)->GP`ZE#AgU`k)cKLVCeU$E0%H60X3ep9IP$5p@ z{_0H9;bXeNaJrYrIDk$BQ7lfayb6b^l+>7aVJt1-X^P@Tkht7r4t}R|Ig8uIL^}Ly z_Dwqc17dR6YhBc{+I`$nu9;CdfNypcaxF7s;iwElmG~0=+X$vPuj~Xo=uY50(b?OF z>MD{N^Q-;Cd5>N^FU+kQoOd~yGREUb7K-=LJM$0Im{j^Rrsy^0w9*tIm{WHYb?z{4 zFl(YMZ)CJp#TG#}L&QjCm3i^2U5ba^N~)Tc+~m9$X4oz8SFn|*_y*J@1=W`mZyYI= zNq67^eDoSJ(OH9gz)HM!{h6a&R7=CNX>4Xewb~C?iMu%F)`iFrs}A7A+XTO)w$s^O zP6pyZ*3>>KtGwvaqEXPaWYTztr`Zlv@(Ft80pM_<^kI9=oMvmf+Pa#oz97LqpZJ=I zsbN>AgPOy-n#wM%zz*q69^wSBxQuYSXVBrNfF*OxEKJvsNR4;{w#{C+c!S7*yw0cS zM;CUL-eny(=|uXM>P&#A!_qE`@9$FSwwwiIa}lb^p5{~T!H-O19F$X;^&2D`4wO6M zIkObh<{WkEI-X`ve#bp}k89L5J!J7G()I+bc5c*$1Y$29!Bk}8UL+`Nv`y%d$|$di>*YC1S3S@9~WPXF_ks(-z) zNbe1|GBrASE{df}#9s#1&U?ofrpg9x5I0(ZKFkiva8^W8 z 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

    LY60U}QOOmxX%AJ@#cZrWPF$uVW`nb=s=RBJ+FU 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%0D_a7 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 (?X;5 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 z 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⁣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 z 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�x6gxxl2W%jfXXi>$ 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 z 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

    $S8#>ZS^ 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ð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%0AAsp~ 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 -B8YEuv<+h7nsFgp*DHg=8-y1$UCb3 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ϠnDUC>z|-4B-n|BYeqp_fP<$VYK2*27C*v+tC;tb@ zp7(vW;1jCg3p>GS?RDSO3P)fs2U_dtn3mp7)D|eBlV_>N&DIb$S`xM8#v3Jet};(@ zr}}4{9UM!(319sWx=&Yc{^G6L1(k0SVdi6g<~frW%=lSO2|COv9j6uLiO-GyYog>= zra`_9^ZkPFd&ZgS#c?%+dn%^mWT1+Y4#_(5$_{Mm5=!`IP})}WFrswd1}0+< zO`tB8ubaIa_bgKrrEp^R>N(46&uoM4XQ@yZiM>tvt{=foB)J#P$Cd`2WP^R!quiVh z1t|*itk7JQ*poEKWr_PREjME5ehn+D-V?zmqSbZE;m0!6?^e2_Sx|S-!F!0DPebK1 z%}$wxljtoMtiuDmAp0MO?T^wRyPBX>8MBc;Xm712S)ZPw=bIT*k9Vk_4(X+>tbV!= z=iLZ*o=c7#uX2A_ZaSY>ipP&Q>Mzk%)77y87|^CxdxBMJ<5Z4>r)#QxD{)QFpcbdZ z|Bt2nj@!9>{|A0w>%Ow0P#GUIkUc6}l3lVB${v~7BReCRWm7Vw^4 zI?NOC)_bFP)iYD%{7No(S_jjH(aCT*sT%;qsH zY;O5af!cuvxY)_^bsK$FqkP>0s+UU%L!8M@T=B!X;%7OL^JK|%&~#Rn%0D9KYTtLW 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%0DX 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


    *>!gq5RSa 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

    g(-)l|B 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%0AT_pd9t%PH_ht_E6lp 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