From e00fa9f6f7980579e1dc36002a94a4fab7d88078 Mon Sep 17 00:00:00 2001 From: atqy <95724753+atqy@users.noreply.github.com> Date: Wed, 18 May 2022 15:05:04 -0700 Subject: [PATCH] delete aws_sagemaker_studio/sagemaker_debugger/mnist_tensor_analysis (#3413) --- .../mnist_tensor_analysis/images/example.gif | Bin 68887 -> 0 bytes .../mnist_tensor_analysis.ipynb | 2487 ----------------- .../mnist_tensor_analysis/src/mnist.py | 90 - .../mnist_tensor_analysis/utils.py | 171 -- 4 files changed, 2748 deletions(-) delete mode 100644 aws_sagemaker_studio/sagemaker_debugger/mnist_tensor_analysis/images/example.gif delete mode 100644 aws_sagemaker_studio/sagemaker_debugger/mnist_tensor_analysis/mnist_tensor_analysis.ipynb delete mode 100644 aws_sagemaker_studio/sagemaker_debugger/mnist_tensor_analysis/src/mnist.py delete mode 100644 aws_sagemaker_studio/sagemaker_debugger/mnist_tensor_analysis/utils.py diff --git a/aws_sagemaker_studio/sagemaker_debugger/mnist_tensor_analysis/images/example.gif b/aws_sagemaker_studio/sagemaker_debugger/mnist_tensor_analysis/images/example.gif deleted file mode 100644 index e6c6a712016556cef18e9107e1b6d5cc03b072e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68887 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%0DUiC1?f%Bt6};i4 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 DTTX!p diff --git a/aws_sagemaker_studio/sagemaker_debugger/mnist_tensor_analysis/mnist_tensor_analysis.ipynb b/aws_sagemaker_studio/sagemaker_debugger/mnist_tensor_analysis/mnist_tensor_analysis.ipynb deleted file mode 100644 index 99eb89f7b2..0000000000 --- a/aws_sagemaker_studio/sagemaker_debugger/mnist_tensor_analysis/mnist_tensor_analysis.ipynb +++ /dev/null @@ -1,2487 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Tensor analysis using Amazon SageMaker Debugger\n", - "\n", - "Looking at the distributions of activation inputs/outputs, gradients and weights per layer can give useful insights. For instance, it helps to understand whether the model runs into problems like neuron saturation, whether there are layers in your model that are not learning at all or whether the network consists of too many layers etc. \n", - "\n", - "The following animation shows the distribution of gradients of a convolutional layer from an example application as the training progresses. We can see that it starts as Gaussian distribution but then becomes more and more narrow. We can also see that the range of gradients starts very small (order of $1e-5$) and becomes even tinier as training progresses. If tiny gradients are observed from the start of training, it is an indication that we should check the hyperparameters of our model. \n", - "\n", - "![](images/example.gif)\n", - "\n", - "In this notebook we will train a poorly configured neural network and use Amazon SageMaker Debugger with custom rules to aggregate and analyse specific tensors. Before we proceed let us install the smdebug binary which allows us to perform interactive analysis in this notebook. After installing it, please restart the kernel, and when you come back skip this cell.\n", - "\n", - "### Installing smdebug" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Collecting smdebug\n", - " Downloading smdebug-0.7.2-py2.py3-none-any.whl (162 kB)\n", - "\u001b[K |████████████████████████████████| 162 kB 2.8 MB/s eta 0:00:01\n", - "\u001b[?25hRequirement already satisfied: protobuf>=3.6.0 in /opt/conda/lib/python3.7/site-packages (from smdebug) (3.11.3)\n", - "Requirement already satisfied: packaging in /opt/conda/lib/python3.7/site-packages (from smdebug) (20.1)\n", - "Requirement already satisfied: numpy<2.0.0,>1.16.0 in /opt/conda/lib/python3.7/site-packages (from smdebug) (1.18.1)\n", - "Requirement already satisfied: boto3>=1.10.32 in /opt/conda/lib/python3.7/site-packages (from smdebug) (1.12.45)\n", - "Requirement already satisfied: six>=1.9 in /opt/conda/lib/python3.7/site-packages (from protobuf>=3.6.0->smdebug) (1.14.0)\n", - "Requirement already satisfied: setuptools in /opt/conda/lib/python3.7/site-packages (from protobuf>=3.6.0->smdebug) (45.2.0.post20200210)\n", - "Requirement already satisfied: pyparsing>=2.0.2 in /opt/conda/lib/python3.7/site-packages (from packaging->smdebug) (2.4.6)\n", - "Requirement already satisfied: jmespath<1.0.0,>=0.7.1 in /opt/conda/lib/python3.7/site-packages (from boto3>=1.10.32->smdebug) (0.9.5)\n", - "Requirement already satisfied: botocore<1.16.0,>=1.15.45 in /opt/conda/lib/python3.7/site-packages (from boto3>=1.10.32->smdebug) (1.15.45)\n", - "Requirement already satisfied: s3transfer<0.4.0,>=0.3.0 in /opt/conda/lib/python3.7/site-packages (from boto3>=1.10.32->smdebug) (0.3.3)\n", - "Requirement already satisfied: python-dateutil<3.0.0,>=2.1 in /opt/conda/lib/python3.7/site-packages (from botocore<1.16.0,>=1.15.45->boto3>=1.10.32->smdebug) (2.8.1)\n", - "Requirement already satisfied: docutils<0.16,>=0.10 in /opt/conda/lib/python3.7/site-packages (from botocore<1.16.0,>=1.15.45->boto3>=1.10.32->smdebug) (0.15.2)\n", - "Requirement already satisfied: urllib3<1.26,>=1.20; python_version != \"3.4\" in /opt/conda/lib/python3.7/site-packages (from botocore<1.16.0,>=1.15.45->boto3>=1.10.32->smdebug) (1.25.8)\n", - "Installing collected packages: smdebug\n", - "Successfully installed smdebug-0.7.2\n" - ] - } - ], - "source": [ - "! python -m pip install smdebug" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Configuring the inputs for the training job\n", - "\n", - "Now we'll call the Sagemaker MXNet Estimator to kick off a training job . The `entry_point_script` points to the MXNet training script. The users can create a custom *SessionHook* in their training script. If they chose not to create such hook in the training script (similar to the one we will be using in this example) Amazon SageMaker Debugger will create the appropriate *SessionHook* based on specified *DebugHookConfig* parameters.\n", - "\n", - "The `hyperparameters` are the parameters that will be passed to the training script. We choose `Uniform(1)` as initializer and learning rate of `0.001`. This leads to the model not training well because the model is poorly initialized.\n", - "\n", - "The goal of a good intialization is \n", - "- to break the symmetry such that parameters do not receive same gradients and updates\n", - "- to keep variance similar across layers\n", - "\n", - "A bad intialization may lead to vanishing or exploiding gradients and the model not training at all. Once the training is finished we will look at the distirbutions of activation inputs/outputs, gradients and weights across the training to see how these hyperparameters influenced the training.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "entry_point_script = \"mnist.py\"\n", - "bad_hyperparameters = {\"initializer\": 2, \"lr\": 0.001}" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "import sagemaker\n", - "from sagemaker.mxnet import MXNet\n", - "from sagemaker.debugger import DebuggerHookConfig, CollectionConfig\n", - "import boto3\n", - "import os\n", - "\n", - "sagemaker_session = sagemaker.Session()\n", - "BUCKET_NAME = sagemaker_session.default_bucket()\n", - "LOCATION_IN_BUCKET = \"smdebug-mnist-tensor-analysis\"\n", - "\n", - "s3_bucket_for_tensors = \"s3://{BUCKET_NAME}/{LOCATION_IN_BUCKET}\".format(\n", - " BUCKET_NAME=BUCKET_NAME, LOCATION_IN_BUCKET=LOCATION_IN_BUCKET\n", - ")\n", - "estimator = MXNet(\n", - " role=sagemaker.get_execution_role(),\n", - " base_job_name=\"mxnet\",\n", - " train_instance_count=1,\n", - " train_instance_type=\"ml.m5.xlarge\",\n", - " train_volume_size=400,\n", - " source_dir=\"src\",\n", - " entry_point=entry_point_script,\n", - " hyperparameters=bad_hyperparameters,\n", - " framework_version=\"1.6.0\",\n", - " py_version=\"py3\",\n", - " debugger_hook_config=DebuggerHookConfig(\n", - " s3_output_path=s3_bucket_for_tensors,\n", - " collection_configs=[\n", - " CollectionConfig(name=\"all\", parameters={\"include_regex\": \".*\", \"save_interval\": \"100\"})\n", - " ],\n", - " ),\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Start the training job" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "estimator.fit(wait=False)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Get S3 location of tensors\n", - "\n", - "We can get information related to the training job:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'TrainingJobName': 'mxnet-2020-04-27-21-37-10-765',\n", - " 'TrainingJobArn': 'arn:aws:sagemaker:us-east-2:441510144314:training-job/mxnet-2020-04-27-21-37-10-765',\n", - " 'ModelArtifacts': {'S3ModelArtifacts': 's3://sagemaker-us-east-2-441510144314/mxnet-2020-04-27-21-37-10-765/output/model.tar.gz'},\n", - " 'TrainingJobStatus': 'Completed',\n", - " 'SecondaryStatus': 'Completed',\n", - " 'HyperParameters': {'initializer': '2',\n", - " 'lr': '0.001',\n", - " 'sagemaker_container_log_level': '20',\n", - " 'sagemaker_enable_cloudwatch_metrics': 'false',\n", - " 'sagemaker_job_name': '\"mxnet-2020-04-27-21-37-10-765\"',\n", - " 'sagemaker_program': '\"mnist.py\"',\n", - " 'sagemaker_region': '\"us-east-2\"',\n", - " 'sagemaker_submit_directory': '\"s3://sagemaker-us-east-2-441510144314/mxnet-2020-04-27-21-37-10-765/source/sourcedir.tar.gz\"'},\n", - " 'AlgorithmSpecification': {'TrainingImage': '763104351884.dkr.ecr.us-east-2.amazonaws.com/mxnet-training:1.6.0-cpu-py3',\n", - " 'TrainingInputMode': 'File',\n", - " 'EnableSageMakerMetricsTimeSeries': True},\n", - " 'RoleArn': 'arn:aws:iam::441510144314:role/service-role/AmazonSageMaker-ExecutionRole-20200110T121244',\n", - " 'InputDataConfig': [],\n", - " 'OutputDataConfig': {'KmsKeyId': '',\n", - " 'S3OutputPath': 's3://sagemaker-us-east-2-441510144314/'},\n", - " 'ResourceConfig': {'InstanceType': 'ml.m5.xlarge',\n", - " 'InstanceCount': 1,\n", - " 'VolumeSizeInGB': 400},\n", - " 'StoppingCondition': {'MaxRuntimeInSeconds': 86400},\n", - " 'CreationTime': datetime.datetime(2020, 4, 27, 21, 37, 11, 114000, tzinfo=tzlocal()),\n", - " 'TrainingStartTime': datetime.datetime(2020, 4, 27, 21, 38, 59, 637000, tzinfo=tzlocal()),\n", - " 'TrainingEndTime': datetime.datetime(2020, 4, 27, 21, 40, 25, 536000, tzinfo=tzlocal()),\n", - " 'LastModifiedTime': datetime.datetime(2020, 4, 27, 21, 40, 25, 536000, tzinfo=tzlocal()),\n", - " 'SecondaryStatusTransitions': [{'Status': 'Starting',\n", - " 'StartTime': datetime.datetime(2020, 4, 27, 21, 37, 11, 114000, tzinfo=tzlocal()),\n", - " 'EndTime': datetime.datetime(2020, 4, 27, 21, 38, 59, 637000, tzinfo=tzlocal()),\n", - " 'StatusMessage': 'Preparing the instances for training'},\n", - " {'Status': 'Downloading',\n", - " 'StartTime': datetime.datetime(2020, 4, 27, 21, 38, 59, 637000, tzinfo=tzlocal()),\n", - " 'EndTime': datetime.datetime(2020, 4, 27, 21, 39, 17, 668000, tzinfo=tzlocal()),\n", - " 'StatusMessage': 'Downloading input data'},\n", - " {'Status': 'Training',\n", - " 'StartTime': datetime.datetime(2020, 4, 27, 21, 39, 17, 668000, tzinfo=tzlocal()),\n", - " 'EndTime': datetime.datetime(2020, 4, 27, 21, 40, 18, 275000, tzinfo=tzlocal()),\n", - " 'StatusMessage': 'Training image download completed. Training in progress.'},\n", - " {'Status': 'Uploading',\n", - " 'StartTime': datetime.datetime(2020, 4, 27, 21, 40, 18, 275000, tzinfo=tzlocal()),\n", - " 'EndTime': datetime.datetime(2020, 4, 27, 21, 40, 25, 536000, tzinfo=tzlocal()),\n", - " 'StatusMessage': 'Uploading generated training model'},\n", - " {'Status': 'Completed',\n", - " 'StartTime': datetime.datetime(2020, 4, 27, 21, 40, 25, 536000, tzinfo=tzlocal()),\n", - " 'EndTime': datetime.datetime(2020, 4, 27, 21, 40, 25, 536000, tzinfo=tzlocal()),\n", - " 'StatusMessage': 'Training job completed'}],\n", - " 'EnableNetworkIsolation': False,\n", - " 'EnableInterContainerTrafficEncryption': False,\n", - " 'EnableManagedSpotTraining': False,\n", - " 'TrainingTimeInSeconds': 86,\n", - " 'BillableTimeInSeconds': 86,\n", - " 'DebugHookConfig': {'S3OutputPath': 's3://sagemaker-us-east-2-441510144314/smdebug-mnist-tensor-analysis',\n", - " 'CollectionConfigurations': [{'CollectionName': 'all',\n", - " 'CollectionParameters': {'include_regex': '.*', 'save_interval': '100'}}]},\n", - " 'ResponseMetadata': {'RequestId': '55f450b8-eb76-42a3-ac13-3f63dcf37c8a',\n", - " 'HTTPStatusCode': 200,\n", - " 'HTTPHeaders': {'x-amzn-requestid': '55f450b8-eb76-42a3-ac13-3f63dcf37c8a',\n", - " 'content-type': 'application/x-amz-json-1.1',\n", - " 'content-length': '2666',\n", - " 'date': 'Mon, 27 Apr 2020 21:43:35 GMT'},\n", - " 'RetryAttempts': 0}}" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "job_name = estimator.latest_training_job.name\n", - "client = estimator.sagemaker_session.sagemaker_client\n", - "description = client.describe_training_job(TrainingJobName=job_name)\n", - "description" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can retrieve the S3 location of the tensors:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Tensors are stored in: s3://sagemaker-us-east-2-441510144314/smdebug-mnist-tensor-analysis/mxnet-2020-04-27-21-37-10-765/debug-output\n" - ] - } - ], - "source": [ - "path = estimator.latest_job_debugger_artifacts_path()\n", - "print(\"Tensors are stored in: \", path)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Download tensors from S3\n", - "\n", - "Now we will download the tensors from S3, so that we can visualize them in our notebook." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Downloading tensors into folder: /tmp/debug-output\n" - ] - } - ], - "source": [ - "folder_name = \"/tmp/{}\".format(path.split(\"/\")[-1])\n", - "os.system(\"aws s3 cp --recursive {} {}\".format(path, folder_name))\n", - "print(\"Downloading tensors into folder: \", folder_name)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now that we have obtained the tensors from our training job, it is time to plot the distribution of different layers. \n", - "In the following sections we will use Amazon SageMaker Debugger and custom rules to retrieve certain tensors. Typically, rules are supposed to return True or False. However in this notebook we will use custom rules to return dictionaries of aggregated tensors per layer and step, which we then plot afterwards.\n", - "\n", - "### Activation outputs\n", - "This rule will use Amazon SageMaker Debugger to retrieve tensors from the ReLU output layers. It sums the activations across batch and steps. If there is a large fraction of ReLUs outputing 0 across many steps it means that the neuron is dying." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "from smdebug.trials import create_trial\n", - "from smdebug.rules.rule_invoker import invoke_rule\n", - "from smdebug.exceptions import NoMoreData\n", - "from smdebug.rules.rule import Rule\n", - "import numpy as np\n", - "import utils\n", - "import collections\n", - "import os\n", - "from IPython.display import Image" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[2020-04-27 22:20:52.397 f8455ab5c5ab:17 INFO local_trial.py:35] Loading trial debug-output at path /tmp/debug-output\n", - "[2020-04-27 22:20:52.414 f8455ab5c5ab:17 INFO rule_invoker.py:15] Started execution of rule ActivationOutputs at step 0\n", - "[2020-04-27 22:20:52.416 f8455ab5c5ab:17 INFO trial.py:198] Training has ended, will refresh one final time in 1 sec.\n", - "[2020-04-27 22:20:53.418 f8455ab5c5ab:17 INFO trial.py:210] Loaded all steps\n", - "[2020-04-27 22:20:53.432 f8455ab5c5ab:17 INFO :17] Step 0 tensor conv0_relu_output_0 has 48.82066514756944% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.438 f8455ab5c5ab:17 INFO :17] Step 0 tensor conv1_relu_output_0 has 51.22558593749999% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.440 f8455ab5c5ab:17 INFO :17] Step 0 tensor dense0_relu_output_0 has 53.001302083333336% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.441 f8455ab5c5ab:17 INFO :17] Step 0 tensor dense1_relu_output_0 has 51.58110119047619% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.455 f8455ab5c5ab:17 INFO :17] Step 100 tensor conv0_relu_output_0 has 54.463930483217595% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.461 f8455ab5c5ab:17 INFO :17] Step 100 tensor conv1_relu_output_0 has 94.9755859375% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.463 f8455ab5c5ab:17 INFO :17] Step 100 tensor dense0_relu_output_0 has 54.19270833333333% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.464 f8455ab5c5ab:17 INFO :17] Step 100 tensor dense1_relu_output_0 has 62.034970238095234% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.477 f8455ab5c5ab:17 INFO :17] Step 200 tensor conv0_relu_output_0 has 51.88417787905093% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.484 f8455ab5c5ab:17 INFO :17] Step 200 tensor conv1_relu_output_0 has 99.99072265625% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.486 f8455ab5c5ab:17 INFO :17] Step 200 tensor dense0_relu_output_0 has 72.10286458333334% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.487 f8455ab5c5ab:17 INFO :17] Step 200 tensor dense1_relu_output_0 has 71.08444940476191% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.503 f8455ab5c5ab:17 INFO :17] Step 300 tensor conv0_relu_output_0 has 54.520670572916664% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.509 f8455ab5c5ab:17 INFO :17] Step 300 tensor conv1_relu_output_0 has 99.998046875% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.511 f8455ab5c5ab:17 INFO :17] Step 300 tensor dense0_relu_output_0 has 74.36848958333333% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.512 f8455ab5c5ab:17 INFO :17] Step 300 tensor dense1_relu_output_0 has 74.39546130952381% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.524 f8455ab5c5ab:17 INFO :17] Step 400 tensor conv0_relu_output_0 has 53.19756401909722% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.531 f8455ab5c5ab:17 INFO :17] Step 400 tensor conv1_relu_output_0 has 99.99853515625% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.533 f8455ab5c5ab:17 INFO :17] Step 400 tensor dense0_relu_output_0 has 74.61588541666667% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.535 f8455ab5c5ab:17 INFO :17] Step 400 tensor dense1_relu_output_0 has 74.75818452380952% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.550 f8455ab5c5ab:17 INFO :17] Step 500 tensor conv0_relu_output_0 has 51.72277379918982% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.556 f8455ab5c5ab:17 INFO :17] Step 500 tensor conv1_relu_output_0 has 99.9970703125% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.559 f8455ab5c5ab:17 INFO :17] Step 500 tensor dense0_relu_output_0 has 73.34635416666667% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.560 f8455ab5c5ab:17 INFO :17] Step 500 tensor dense1_relu_output_0 has 73.32589285714286% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.574 f8455ab5c5ab:17 INFO :17] Step 600 tensor conv0_relu_output_0 has 51.398157190393526% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.581 f8455ab5c5ab:17 INFO :17] Step 600 tensor conv1_relu_output_0 has 99.99951171875% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.583 f8455ab5c5ab:17 INFO :17] Step 600 tensor dense0_relu_output_0 has 75.72916666666667% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.585 f8455ab5c5ab:17 INFO :17] Step 600 tensor dense1_relu_output_0 has 74.93489583333334% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.599 f8455ab5c5ab:17 INFO :17] Step 700 tensor conv0_relu_output_0 has 52.541097005208336% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.606 f8455ab5c5ab:17 INFO :17] Step 700 tensor conv1_relu_output_0 has 99.99951171875% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.609 f8455ab5c5ab:17 INFO :17] Step 700 tensor dense0_relu_output_0 has 76.49088541666667% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.610 f8455ab5c5ab:17 INFO :17] Step 700 tensor dense1_relu_output_0 has 72.49813988095238% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.624 f8455ab5c5ab:17 INFO :17] Step 800 tensor conv0_relu_output_0 has 51.32310655381944% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.631 f8455ab5c5ab:17 INFO :17] Step 800 tensor conv1_relu_output_0 has 99.99951171875% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.633 f8455ab5c5ab:17 INFO :17] Step 800 tensor dense0_relu_output_0 has 74.81119791666667% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.635 f8455ab5c5ab:17 INFO :17] Step 800 tensor dense1_relu_output_0 has 72.50744047619048% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.649 f8455ab5c5ab:17 INFO :17] Step 900 tensor conv0_relu_output_0 has 51.25800238715278% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.655 f8455ab5c5ab:17 INFO :17] Step 900 tensor conv1_relu_output_0 has 99.998046875% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.658 f8455ab5c5ab:17 INFO :17] Step 900 tensor dense0_relu_output_0 has 73.3984375% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.659 f8455ab5c5ab:17 INFO :17] Step 900 tensor dense1_relu_output_0 has 74.44196428571429% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.674 f8455ab5c5ab:17 INFO :17] Step 1000 tensor conv0_relu_output_0 has 53.025083188657405% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.681 f8455ab5c5ab:17 INFO :17] Step 1000 tensor conv1_relu_output_0 has 99.9990234375% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.683 f8455ab5c5ab:17 INFO :17] Step 1000 tensor dense0_relu_output_0 has 75.59895833333333% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.685 f8455ab5c5ab:17 INFO :17] Step 1000 tensor dense1_relu_output_0 has 74.63727678571429% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.699 f8455ab5c5ab:17 INFO :17] Step 1100 tensor conv0_relu_output_0 has 51.27111364293982% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.706 f8455ab5c5ab:17 INFO :17] Step 1100 tensor conv1_relu_output_0 has 99.99853515625% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.708 f8455ab5c5ab:17 INFO :17] Step 1100 tensor dense0_relu_output_0 has 76.95963541666667% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.710 f8455ab5c5ab:17 INFO :17] Step 1100 tensor dense1_relu_output_0 has 74.70238095238095% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.724 f8455ab5c5ab:17 INFO :17] Step 1200 tensor conv0_relu_output_0 has 51.57109013310185% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.731 f8455ab5c5ab:17 INFO :17] Step 1200 tensor conv1_relu_output_0 has 99.99951171875% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.734 f8455ab5c5ab:17 INFO :17] Step 1200 tensor dense0_relu_output_0 has 75.61848958333334% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.735 f8455ab5c5ab:17 INFO :17] Step 1200 tensor dense1_relu_output_0 has 74.93489583333334% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.750 f8455ab5c5ab:17 INFO :17] Step 1300 tensor conv0_relu_output_0 has 51.947021484375% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.757 f8455ab5c5ab:17 INFO :17] Step 1300 tensor conv1_relu_output_0 has 99.99951171875% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.759 f8455ab5c5ab:17 INFO :17] Step 1300 tensor dense0_relu_output_0 has 76.46484375% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.760 f8455ab5c5ab:17 INFO :17] Step 1300 tensor dense1_relu_output_0 has 78.40401785714286% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.775 f8455ab5c5ab:17 INFO :17] Step 1400 tensor conv0_relu_output_0 has 52.25129304108796% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.782 f8455ab5c5ab:17 INFO :17] Step 1400 tensor conv1_relu_output_0 has 99.9990234375% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.784 f8455ab5c5ab:17 INFO :17] Step 1400 tensor dense0_relu_output_0 has 77.0703125% activation outputs which are smaller than 0 \n", - "[2020-04-27 22:20:53.785 f8455ab5c5ab:17 INFO :17] Step 1400 tensor dense1_relu_output_0 has 72.51674107142857% activation outputs which are smaller than 0 \n", - "The training has ended and there is no more data to be analyzed. This is expected behavior.\n" - ] - } - ], - "source": [ - "class ActivationOutputs(Rule):\n", - " def __init__(self, base_trial):\n", - " super().__init__(base_trial)\n", - " self.tensors = collections.OrderedDict()\n", - "\n", - " def invoke_at_step(self, step):\n", - " for tname in self.base_trial.tensor_names(regex=\".*relu_output\"):\n", - " if \"gradients\" not in tname:\n", - " try:\n", - " tensor = self.base_trial.tensor(tname).value(step)\n", - " if tname not in self.tensors:\n", - " self.tensors[tname] = collections.OrderedDict()\n", - " if step not in self.tensors[tname]:\n", - " self.tensors[tname][step] = 0\n", - " neg_values = np.where(tensor <= 0)[0]\n", - " if len(neg_values) > 0:\n", - " self.logger.info(\n", - " f\" Step {step} tensor {tname} has {len(neg_values)/tensor.size*100}% activation outputs which are smaller than 0 \"\n", - " )\n", - " batch_over_sum = np.sum(tensor, axis=0) / tensor.shape[0]\n", - " self.tensors[tname][step] += batch_over_sum\n", - " except:\n", - " self.logger.warning(f\"Can not fetch tensor {tname}\")\n", - " return False\n", - "\n", - "\n", - "trial = create_trial(folder_name)\n", - "rule = ActivationOutputs(trial)\n", - "try:\n", - " invoke_rule(rule)\n", - "except NoMoreData:\n", - " print(\n", - " \"The training has ended and there is no more data to be analyzed. This is expected behavior.\"\n", - " )" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Plot the histograms" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "utils.create_interactive_matplotlib_histogram(\n", - " rule.tensors, filename=\"images/activation_outputs.gif\"\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Image(url=\"images/activation_outputs.gif\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Activation Inputs\n", - "In this rule we look at the inputs into activation function, rather than the output. This can be helpful to understand if there are extreme negative or positive values that saturate the activation functions. " - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[2020-04-27 22:22:24.752 f8455ab5c5ab:17 INFO local_trial.py:35] Loading trial debug-output at path /tmp/debug-output\n", - "[2020-04-27 22:22:24.767 f8455ab5c5ab:17 INFO rule_invoker.py:15] Started execution of rule ActivationInputs at step 0\n", - "[2020-04-27 22:22:24.768 f8455ab5c5ab:17 INFO trial.py:198] Training has ended, will refresh one final time in 1 sec.\n", - "[2020-04-27 22:22:25.770 f8455ab5c5ab:17 INFO trial.py:210] Loaded all steps\n", - "[2020-04-27 22:22:25.778 f8455ab5c5ab:17 INFO :17] Tensor conv0_relu_input_0 has 48.82066514756944% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.783 f8455ab5c5ab:17 INFO :17] Tensor conv1_relu_input_0 has 51.22558593749999% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.785 f8455ab5c5ab:17 INFO :17] Tensor dense0_relu_input_0 has 53.001302083333336% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.786 f8455ab5c5ab:17 INFO :17] Tensor dense1_relu_input_0 has 51.58110119047619% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.796 f8455ab5c5ab:17 INFO :17] Tensor conv0_relu_input_0 has 54.463930483217595% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.801 f8455ab5c5ab:17 INFO :17] Tensor conv1_relu_input_0 has 94.9755859375% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.803 f8455ab5c5ab:17 INFO :17] Tensor dense0_relu_input_0 has 54.19270833333333% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.804 f8455ab5c5ab:17 INFO :17] Tensor dense1_relu_input_0 has 62.034970238095234% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.814 f8455ab5c5ab:17 INFO :17] Tensor conv0_relu_input_0 has 51.88417787905093% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.819 f8455ab5c5ab:17 INFO :17] Tensor conv1_relu_input_0 has 99.99072265625% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.820 f8455ab5c5ab:17 INFO :17] Tensor dense0_relu_input_0 has 72.10286458333334% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.822 f8455ab5c5ab:17 INFO :17] Tensor dense1_relu_input_0 has 71.08444940476191% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.831 f8455ab5c5ab:17 INFO :17] Tensor conv0_relu_input_0 has 54.520670572916664% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.837 f8455ab5c5ab:17 INFO :17] Tensor conv1_relu_input_0 has 99.998046875% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.838 f8455ab5c5ab:17 INFO :17] Tensor dense0_relu_input_0 has 74.36848958333333% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.839 f8455ab5c5ab:17 INFO :17] Tensor dense1_relu_input_0 has 74.39546130952381% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.849 f8455ab5c5ab:17 INFO :17] Tensor conv0_relu_input_0 has 53.19756401909722% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.854 f8455ab5c5ab:17 INFO :17] Tensor conv1_relu_input_0 has 99.99853515625% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.856 f8455ab5c5ab:17 INFO :17] Tensor dense0_relu_input_0 has 74.61588541666667% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.857 f8455ab5c5ab:17 INFO :17] Tensor dense1_relu_input_0 has 74.75818452380952% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.868 f8455ab5c5ab:17 INFO :17] Tensor conv0_relu_input_0 has 51.72277379918982% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.873 f8455ab5c5ab:17 INFO :17] Tensor conv1_relu_input_0 has 99.9970703125% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.875 f8455ab5c5ab:17 INFO :17] Tensor dense0_relu_input_0 has 73.34635416666667% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.876 f8455ab5c5ab:17 INFO :17] Tensor dense1_relu_input_0 has 73.32589285714286% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.886 f8455ab5c5ab:17 INFO :17] Tensor conv0_relu_input_0 has 51.398157190393526% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.892 f8455ab5c5ab:17 INFO :17] Tensor conv1_relu_input_0 has 99.99951171875% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.893 f8455ab5c5ab:17 INFO :17] Tensor dense0_relu_input_0 has 75.72916666666667% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.894 f8455ab5c5ab:17 INFO :17] Tensor dense1_relu_input_0 has 74.93489583333334% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.905 f8455ab5c5ab:17 INFO :17] Tensor conv0_relu_input_0 has 52.541097005208336% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.910 f8455ab5c5ab:17 INFO :17] Tensor conv1_relu_input_0 has 99.99951171875% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.911 f8455ab5c5ab:17 INFO :17] Tensor dense0_relu_input_0 has 76.49088541666667% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.913 f8455ab5c5ab:17 INFO :17] Tensor dense1_relu_input_0 has 72.49813988095238% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.923 f8455ab5c5ab:17 INFO :17] Tensor conv0_relu_input_0 has 51.32310655381944% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.929 f8455ab5c5ab:17 INFO :17] Tensor conv1_relu_input_0 has 99.99951171875% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.931 f8455ab5c5ab:17 INFO :17] Tensor dense0_relu_input_0 has 74.81119791666667% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.934 f8455ab5c5ab:17 INFO :17] Tensor dense1_relu_input_0 has 72.50744047619048% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.944 f8455ab5c5ab:17 INFO :17] Tensor conv0_relu_input_0 has 51.25800238715278% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.949 f8455ab5c5ab:17 INFO :17] Tensor conv1_relu_input_0 has 99.998046875% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.951 f8455ab5c5ab:17 INFO :17] Tensor dense0_relu_input_0 has 73.3984375% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.952 f8455ab5c5ab:17 INFO :17] Tensor dense1_relu_input_0 has 74.44196428571429% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.963 f8455ab5c5ab:17 INFO :17] Tensor conv0_relu_input_0 has 53.025083188657405% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.968 f8455ab5c5ab:17 INFO :17] Tensor conv1_relu_input_0 has 99.9990234375% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.969 f8455ab5c5ab:17 INFO :17] Tensor dense0_relu_input_0 has 75.59895833333333% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.971 f8455ab5c5ab:17 INFO :17] Tensor dense1_relu_input_0 has 74.63727678571429% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.981 f8455ab5c5ab:17 INFO :17] Tensor conv0_relu_input_0 has 51.27111364293982% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.986 f8455ab5c5ab:17 INFO :17] Tensor conv1_relu_input_0 has 99.99853515625% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.988 f8455ab5c5ab:17 INFO :17] Tensor dense0_relu_input_0 has 76.95963541666667% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.989 f8455ab5c5ab:17 INFO :17] Tensor dense1_relu_input_0 has 74.70238095238095% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:25.999 f8455ab5c5ab:17 INFO :17] Tensor conv0_relu_input_0 has 51.57109013310185% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:26.005 f8455ab5c5ab:17 INFO :17] Tensor conv1_relu_input_0 has 99.99951171875% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:26.006 f8455ab5c5ab:17 INFO :17] Tensor dense0_relu_input_0 has 75.61848958333334% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:26.008 f8455ab5c5ab:17 INFO :17] Tensor dense1_relu_input_0 has 74.93489583333334% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:26.018 f8455ab5c5ab:17 INFO :17] Tensor conv0_relu_input_0 has 51.947021484375% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:26.024 f8455ab5c5ab:17 INFO :17] Tensor conv1_relu_input_0 has 99.99951171875% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:26.025 f8455ab5c5ab:17 INFO :17] Tensor dense0_relu_input_0 has 76.46484375% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:26.026 f8455ab5c5ab:17 INFO :17] Tensor dense1_relu_input_0 has 78.40401785714286% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:26.037 f8455ab5c5ab:17 INFO :17] Tensor conv0_relu_input_0 has 52.25129304108796% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:26.042 f8455ab5c5ab:17 INFO :17] Tensor conv1_relu_input_0 has 99.9990234375% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:26.044 f8455ab5c5ab:17 INFO :17] Tensor dense0_relu_input_0 has 77.0703125% activation inputs which are smaller than 0 \n", - "[2020-04-27 22:22:26.045 f8455ab5c5ab:17 INFO :17] Tensor dense1_relu_input_0 has 72.51674107142857% activation inputs which are smaller than 0 \n", - "The training has ended and there is no more data to be analyzed. This is expected behavior.\n" - ] - } - ], - "source": [ - "class ActivationInputs(Rule):\n", - " def __init__(self, base_trial):\n", - " super().__init__(base_trial)\n", - " self.tensors = collections.OrderedDict()\n", - "\n", - " def invoke_at_step(self, step):\n", - " for tname in self.base_trial.tensor_names(regex=\".*relu_input\"):\n", - " if \"gradients\" not in tname:\n", - " try:\n", - " tensor = self.base_trial.tensor(tname).value(step)\n", - " if tname not in self.tensors:\n", - " self.tensors[tname] = {}\n", - " if step not in self.tensors[tname]:\n", - " self.tensors[tname][step] = 0\n", - " neg_values = np.where(tensor <= 0)[0]\n", - " if len(neg_values) > 0:\n", - " self.logger.info(\n", - " f\" Tensor {tname} has {len(neg_values)/tensor.size*100}% activation inputs which are smaller than 0 \"\n", - " )\n", - " batch_over_sum = np.sum(tensor, axis=0) / tensor.shape[0]\n", - " self.tensors[tname][step] += batch_over_sum\n", - " except:\n", - " self.logger.warning(f\"Can not fetch tensor {tname}\")\n", - " return False\n", - "\n", - "\n", - "trial = create_trial(folder_name)\n", - "rule = ActivationInputs(trial)\n", - "try:\n", - " invoke_rule(rule)\n", - "except NoMoreData:\n", - " print(\n", - " \"The training has ended and there is no more data to be analyzed. This is expected behavior.\"\n", - " )" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Plot the histograms" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "utils.create_interactive_matplotlib_histogram(rule.tensors, filename=\"images/activation_inputs.gif\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can see that second convolutional layer `conv1_relu_input_0` receives only negative input values, which means that all ReLUs in this layer output 0." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Image(url=\"images/activation_inputs.gif\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Gradients\n", - "The following code retrieves the gradients and plots their distribution. If variance is tiny, that means that the model parameters do not get updated effectively with each training step or that the training has converged to a minimum." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[2020-04-27 22:25:51.768 f8455ab5c5ab:17 INFO local_trial.py:35] Loading trial debug-output at path /tmp/debug-output\n", - "[2020-04-27 22:25:51.781 f8455ab5c5ab:17 INFO rule_invoker.py:15] Started execution of rule GradientsLayer at step 0\n", - "[2020-04-27 22:25:51.782 f8455ab5c5ab:17 INFO trial.py:198] Training has ended, will refresh one final time in 1 sec.\n", - "[2020-04-27 22:25:52.784 f8455ab5c5ab:17 INFO trial.py:210] Loaded all steps\n", - "[2020-04-27 22:25:52.786 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv0_bias has gradients range: -5149.84033203125 31646.48828125 \n", - "[2020-04-27 22:25:52.787 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv0_weight has gradients range: -13980.2021484375 39929.21484375 \n", - "[2020-04-27 22:25:52.788 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv1_bias has gradients range: -1813.0926513671875 10602.732421875 \n", - "[2020-04-27 22:25:52.789 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv1_weight has gradients range: -6368.1806640625 38688.0 \n", - "[2020-04-27 22:25:52.790 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense0_bias has gradients range: -179.64866638183594 347.4178466796875 \n", - "[2020-04-27 22:25:52.792 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense0_weight has gradients range: -5038.26171875 9037.4365234375 \n", - "[2020-04-27 22:25:52.793 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense1_bias has gradients range: -82.91046905517578 76.00481414794922 \n", - "[2020-04-27 22:25:52.794 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense1_weight has gradients range: -18866.3359375 17484.91015625 \n", - "[2020-04-27 22:25:52.795 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense2_bias has gradients range: -17.0 57.0 \n", - "[2020-04-27 22:25:52.796 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense2_weight has gradients range: -20504.265625 61322.046875 \n", - "[2020-04-27 22:25:52.800 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv0_bias has gradients range: -1617.0311279296875 727.3082885742188 \n", - "[2020-04-27 22:25:52.801 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv0_weight has gradients range: -1517.2711181640625 1360.6627197265625 \n", - "[2020-04-27 22:25:52.802 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv1_bias has gradients range: -277.4026184082031 278.95660400390625 \n", - "[2020-04-27 22:25:52.803 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv1_weight has gradients range: -1220.47412109375 1047.916748046875 \n", - "[2020-04-27 22:25:52.804 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense0_bias has gradients range: -59.79769515991211 67.69261932373047 \n", - "[2020-04-27 22:25:52.806 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense0_weight has gradients range: -75.69705963134766 105.90653228759766 \n", - "[2020-04-27 22:25:52.807 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense1_bias has gradients range: -8.260823249816895 15.506786346435547 \n", - "[2020-04-27 22:25:52.808 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense1_weight has gradients range: -112.7426986694336 113.8670654296875 \n", - "[2020-04-27 22:25:52.809 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense2_bias has gradients range: -6.345627784729004 8.66802978515625 \n", - "[2020-04-27 22:25:52.810 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense2_weight has gradients range: -245.2377471923828 379.2154235839844 \n", - "[2020-04-27 22:25:52.814 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv0_bias has gradients range: -101.66511535644531 11.746068954467773 \n", - "[2020-04-27 22:25:52.815 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv0_weight has gradients range: -65.13233947753906 111.70040130615234 \n", - "[2020-04-27 22:25:52.816 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv1_bias has gradients range: -8.534814834594727 25.94390296936035 \n", - "[2020-04-27 22:25:52.817 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv1_weight has gradients range: -40.51245880126953 116.62594604492188 \n", - "[2020-04-27 22:25:52.818 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense0_bias has gradients range: -25.741046905517578 42.52741241455078 \n", - "[2020-04-27 22:25:52.820 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense0_weight has gradients range: -4.424605369567871 4.874677658081055 \n", - "[2020-04-27 22:25:52.821 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense1_bias has gradients range: -12.612415313720703 9.365806579589844 \n", - "[2020-04-27 22:25:52.822 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense1_weight has gradients range: -2.4334120750427246 2.1119964122772217 \n", - "[2020-04-27 22:25:52.823 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense2_bias has gradients range: -6.060829162597656 6.018675327301025 \n", - "[2020-04-27 22:25:52.824 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense2_weight has gradients range: -5.438522815704346 4.632100582122803 \n", - "[2020-04-27 22:25:52.828 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv0_bias has gradients range: -31.52714729309082 28.255945205688477 \n", - "[2020-04-27 22:25:52.829 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv0_weight has gradients range: -52.1895866394043 69.72014617919922 \n", - "[2020-04-27 22:25:52.830 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv1_bias has gradients range: 0.0 18.45484733581543 \n", - "[2020-04-27 22:25:52.831 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv1_weight has gradients range: -8.653250694274902 127.38655090332031 \n", - "[2020-04-27 22:25:52.832 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense0_bias has gradients range: -36.64728546142578 42.69761276245117 \n", - "[2020-04-27 22:25:52.834 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense0_weight has gradients range: -7.016548156738281 10.46964168548584 \n", - "[2020-04-27 22:25:52.835 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense1_bias has gradients range: -10.914785385131836 17.35120391845703 \n", - "[2020-04-27 22:25:52.836 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense1_weight has gradients range: -1.5331487655639648 2.1940650939941406 \n", - "[2020-04-27 22:25:52.837 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense2_bias has gradients range: -7.36464262008667 7.412864685058594 \n", - "[2020-04-27 22:25:52.838 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense2_weight has gradients range: -7.040934085845947 7.418706893920898 \n", - "[2020-04-27 22:25:52.841 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv0_bias has gradients range: -64.73793029785156 27.20878028869629 \n", - "[2020-04-27 22:25:52.842 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv0_weight has gradients range: -45.57298278808594 47.520347595214844 \n", - "[2020-04-27 22:25:52.844 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv1_bias has gradients range: 0.0 16.196287155151367 \n", - "[2020-04-27 22:25:52.845 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv1_weight has gradients range: 0.0 82.97894287109375 \n", - "[2020-04-27 22:25:52.846 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense0_bias has gradients range: -22.91037368774414 20.32585906982422 \n", - "[2020-04-27 22:25:52.847 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense0_weight has gradients range: -2.707063674926758 2.870230197906494 \n", - "[2020-04-27 22:25:52.848 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense1_bias has gradients range: -6.570956230163574 9.99987506866455 \n", - "[2020-04-27 22:25:52.849 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense1_weight has gradients range: -0.6772371530532837 0.8163791298866272 \n", - "[2020-04-27 22:25:52.850 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense2_bias has gradients range: -3.027226448059082 4.121616840362549 \n", - "[2020-04-27 22:25:52.852 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense2_weight has gradients range: -2.004786968231201 1.9083017110824585 \n", - "[2020-04-27 22:25:52.855 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv0_bias has gradients range: -95.70741271972656 17.63048553466797 \n", - "[2020-04-27 22:25:52.856 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv0_weight has gradients range: -165.47361755371094 82.15006256103516 \n", - "[2020-04-27 22:25:52.857 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv1_bias has gradients range: -3.5999011993408203 38.76963424682617 \n", - "[2020-04-27 22:25:52.858 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv1_weight has gradients range: -17.21964454650879 162.36268615722656 \n", - "[2020-04-27 22:25:52.860 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense0_bias has gradients range: -25.76466178894043 23.140644073486328 \n", - "[2020-04-27 22:25:52.861 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense0_weight has gradients range: -4.461329460144043 5.040010452270508 \n", - "[2020-04-27 22:25:52.862 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense1_bias has gradients range: -6.486667156219482 10.687053680419922 \n", - "[2020-04-27 22:25:52.863 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense1_weight has gradients range: -1.6570074558258057 2.758233070373535 \n", - "[2020-04-27 22:25:52.864 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense2_bias has gradients range: -5.014965534210205 5.386890888214111 \n", - "[2020-04-27 22:25:52.865 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense2_weight has gradients range: -7.363559722900391 7.27754545211792 \n", - "[2020-04-27 22:25:52.869 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv0_bias has gradients range: -2.41868257522583 13.387530326843262 \n", - "[2020-04-27 22:25:52.870 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv0_weight has gradients range: -9.894062042236328 11.664155006408691 \n", - "[2020-04-27 22:25:52.871 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv1_bias has gradients range: -6.718662261962891 0.0 \n", - "[2020-04-27 22:25:52.872 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv1_weight has gradients range: -24.936752319335938 0.0 \n", - "[2020-04-27 22:25:52.873 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense0_bias has gradients range: -31.229568481445312 32.75321578979492 \n", - "[2020-04-27 22:25:52.875 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense0_weight has gradients range: -0.08978071808815002 0.11575950682163239 \n", - "[2020-04-27 22:25:52.876 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense1_bias has gradients range: -6.885076999664307 11.950864791870117 \n", - "[2020-04-27 22:25:52.877 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense1_weight has gradients range: -0.1465906947851181 0.2634112238883972 \n", - "[2020-04-27 22:25:52.878 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense2_bias has gradients range: -3.868048906326294 6.423059940338135 \n", - "[2020-04-27 22:25:52.879 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense2_weight has gradients range: -0.22638662159442902 0.3604522943496704 \n", - "[2020-04-27 22:25:52.883 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv0_bias has gradients range: -4.006610870361328 4.26582670211792 \n", - "[2020-04-27 22:25:52.884 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv0_weight has gradients range: -8.007227897644043 7.861775875091553 \n", - "[2020-04-27 22:25:52.885 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv1_bias has gradients range: 0.0 3.4121253490448 \n", - "[2020-04-27 22:25:52.886 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv1_weight has gradients range: 0.0 22.860107421875 \n", - "[2020-04-27 22:25:52.887 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense0_bias has gradients range: -27.923139572143555 29.385908126831055 \n", - "[2020-04-27 22:25:52.889 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense0_weight has gradients range: -0.4813162684440613 0.6209366917610168 \n", - "[2020-04-27 22:25:52.890 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense1_bias has gradients range: -11.290090560913086 11.552780151367188 \n", - "[2020-04-27 22:25:52.891 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense1_weight has gradients range: -0.23507824540138245 0.2357713282108307 \n", - "[2020-04-27 22:25:52.892 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense2_bias has gradients range: -6.617587566375732 5.22601318359375 \n", - "[2020-04-27 22:25:52.893 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense2_weight has gradients range: -0.4557512700557709 0.2950083017349243 \n", - "[2020-04-27 22:25:52.897 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv0_bias has gradients range: -30.382892608642578 4.175470352172852 \n", - "[2020-04-27 22:25:52.898 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv0_weight has gradients range: -34.21318054199219 26.863500595092773 \n", - "[2020-04-27 22:25:52.899 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv1_bias has gradients range: 0.0 9.502142906188965 \n", - "[2020-04-27 22:25:52.900 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv1_weight has gradients range: 0.0 36.42455291748047 \n", - "[2020-04-27 22:25:52.901 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense0_bias has gradients range: -45.90071487426758 43.033145904541016 \n", - "[2020-04-27 22:25:52.902 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense0_weight has gradients range: -3.6235783100128174 3.4359898567199707 \n", - "[2020-04-27 22:25:52.904 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense1_bias has gradients range: -5.5072021484375 17.035451889038086 \n", - "[2020-04-27 22:25:52.905 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense1_weight has gradients range: -0.8212846517562866 0.6541135311126709 \n", - "[2020-04-27 22:25:52.906 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense2_bias has gradients range: -6.26908016204834 7.63941764831543 \n", - "[2020-04-27 22:25:52.907 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense2_weight has gradients range: -4.426249027252197 2.9874744415283203 \n", - "[2020-04-27 22:25:52.910 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv0_bias has gradients range: -16.208253860473633 18.61284637451172 \n", - "[2020-04-27 22:25:52.911 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv0_weight has gradients range: -27.896995544433594 41.30409622192383 \n", - "[2020-04-27 22:25:52.913 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv1_bias has gradients range: -7.884207725524902 7.240376949310303 \n", - "[2020-04-27 22:25:52.914 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv1_weight has gradients range: -39.63383483886719 28.860776901245117 \n", - "[2020-04-27 22:25:52.916 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense0_bias has gradients range: -28.69450569152832 47.52030563354492 \n", - "[2020-04-27 22:25:52.918 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense0_weight has gradients range: -4.688067436218262 4.360113143920898 \n", - "[2020-04-27 22:25:52.919 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense1_bias has gradients range: -12.74375057220459 8.661504745483398 \n", - "[2020-04-27 22:25:52.920 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense1_weight has gradients range: -1.205727458000183 1.3138247728347778 \n", - "[2020-04-27 22:25:52.921 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense2_bias has gradients range: -5.553890705108643 3.744802951812744 \n", - "[2020-04-27 22:25:52.923 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense2_weight has gradients range: -5.305088520050049 2.020052671432495 \n", - "[2020-04-27 22:25:52.926 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv0_bias has gradients range: -9.36766242980957 8.030630111694336 \n", - "[2020-04-27 22:25:52.927 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv0_weight has gradients range: -16.960205078125 13.7196626663208 \n", - "[2020-04-27 22:25:52.928 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv1_bias has gradients range: -0.18103402853012085 5.486399173736572 \n", - "[2020-04-27 22:25:52.930 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv1_weight has gradients range: -0.6137489080429077 36.34244155883789 \n", - "[2020-04-27 22:25:52.931 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense0_bias has gradients range: -18.87697982788086 30.843612670898438 \n", - "[2020-04-27 22:25:52.932 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense0_weight has gradients range: -0.39189717173576355 0.3830419182777405 \n", - "[2020-04-27 22:25:52.933 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense1_bias has gradients range: -10.17051887512207 12.880867004394531 \n", - "[2020-04-27 22:25:52.935 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense1_weight has gradients range: -0.2679915726184845 0.3036436140537262 \n", - "[2020-04-27 22:25:52.936 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense2_bias has gradients range: -5.262083053588867 5.559200763702393 \n", - "[2020-04-27 22:25:52.937 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense2_weight has gradients range: -0.5808815360069275 0.2632489502429962 \n", - "[2020-04-27 22:25:52.941 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv0_bias has gradients range: -6.194462299346924 2.2857325077056885 \n", - "[2020-04-27 22:25:52.942 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv0_weight has gradients range: -4.452066421508789 4.230159759521484 \n", - "[2020-04-27 22:25:52.943 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv1_bias has gradients range: -0.032487671822309494 1.5249730348587036 \n", - "[2020-04-27 22:25:52.944 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv1_weight has gradients range: -0.13874106109142303 4.512594223022461 \n", - "[2020-04-27 22:25:52.945 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense0_bias has gradients range: -50.828277587890625 39.78963088989258 \n", - "[2020-04-27 22:25:52.947 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense0_weight has gradients range: -3.774961233139038 3.3157076835632324 \n", - "[2020-04-27 22:25:52.952 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense1_bias has gradients range: -10.937799453735352 14.700889587402344 \n", - "[2020-04-27 22:25:52.953 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense1_weight has gradients range: -0.7937904596328735 0.9154173731803894 \n", - "[2020-04-27 22:25:52.954 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense2_bias has gradients range: -9.970462799072266 6.8490800857543945 \n", - "[2020-04-27 22:25:52.955 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense2_weight has gradients range: -2.8608531951904297 2.6764142513275146 \n", - "[2020-04-27 22:25:52.959 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv0_bias has gradients range: -1.2990520000457764 0.2271302342414856 \n", - "[2020-04-27 22:25:52.960 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv0_weight has gradients range: -2.055903196334839 1.3293263912200928 \n", - "[2020-04-27 22:25:52.961 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv1_bias has gradients range: 0.0 0.7663621306419373 \n", - "[2020-04-27 22:25:52.962 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv1_weight has gradients range: 0.0 2.149507522583008 \n", - "[2020-04-27 22:25:52.963 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense0_bias has gradients range: -20.742401123046875 21.405094146728516 \n", - "[2020-04-27 22:25:52.965 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense0_weight has gradients range: -1.1737643480300903 1.0772308111190796 \n", - "[2020-04-27 22:25:52.966 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense1_bias has gradients range: -10.518623352050781 12.878310203552246 \n", - "[2020-04-27 22:25:52.967 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense1_weight has gradients range: -0.29439577460289 0.3287479281425476 \n", - "[2020-04-27 22:25:52.968 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense2_bias has gradients range: -7.216102123260498 6.097813606262207 \n", - "[2020-04-27 22:25:52.970 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense2_weight has gradients range: -1.519209861755371 0.5045807361602783 \n", - "[2020-04-27 22:25:52.973 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv0_bias has gradients range: -4.244566917419434 0.36177772283554077 \n", - "[2020-04-27 22:25:52.974 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv0_weight has gradients range: -7.24577522277832 8.068381309509277 \n", - "[2020-04-27 22:25:52.975 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv1_bias has gradients range: 0.0 2.1815106868743896 \n", - "[2020-04-27 22:25:52.977 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv1_weight has gradients range: 0.0 11.20015811920166 \n", - "[2020-04-27 22:25:52.978 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense0_bias has gradients range: -22.95243263244629 27.935787200927734 \n", - "[2020-04-27 22:25:52.979 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense0_weight has gradients range: -4.544219970703125 6.162412166595459 \n", - "[2020-04-27 22:25:52.980 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense1_bias has gradients range: -8.209747314453125 7.804721355438232 \n", - "[2020-04-27 22:25:52.981 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense1_weight has gradients range: -1.062230110168457 0.9078865051269531 \n", - "[2020-04-27 22:25:52.982 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense2_bias has gradients range: -4.590793609619141 5.132489204406738 \n", - "[2020-04-27 22:25:52.984 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense2_weight has gradients range: -5.097039699554443 2.7630226612091064 \n", - "[2020-04-27 22:25:52.987 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv0_bias has gradients range: -38.07282638549805 16.622339248657227 \n", - "[2020-04-27 22:25:52.988 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv0_weight has gradients range: -37.36157989501953 54.26838302612305 \n", - "[2020-04-27 22:25:52.989 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv1_bias has gradients range: 0.0 13.919588088989258 \n", - "[2020-04-27 22:25:52.991 f8455ab5c5ab:17 INFO :13] Tensor gradient/conv1_weight has gradients range: 0.0 58.94915771484375 \n", - "[2020-04-27 22:25:52.992 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense0_bias has gradients range: -15.17860221862793 24.616369247436523 \n", - "[2020-04-27 22:25:52.993 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense0_weight has gradients range: -3.867265462875366 4.611002445220947 \n", - "[2020-04-27 22:25:52.994 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense1_bias has gradients range: -5.959875106811523 7.464860439300537 \n", - "[2020-04-27 22:25:52.996 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense1_weight has gradients range: -0.8550781011581421 0.8905887007713318 \n", - "[2020-04-27 22:25:52.997 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense2_bias has gradients range: -5.588850975036621 3.3401448726654053 \n", - "[2020-04-27 22:25:52.998 f8455ab5c5ab:17 INFO :13] Tensor gradient/dense2_weight has gradients range: -4.332571506500244 3.0080392360687256 \n", - "The training has ended and there is no more data to be analyzed. This is expected behavior.\n" - ] - } - ], - "source": [ - "class GradientsLayer(Rule):\n", - " def __init__(self, base_trial):\n", - " super().__init__(base_trial)\n", - " self.tensors = collections.OrderedDict()\n", - "\n", - " def invoke_at_step(self, step):\n", - " for tname in self.base_trial.tensor_names(regex=\".*gradient\"):\n", - " try:\n", - " tensor = self.base_trial.tensor(tname).value(step)\n", - " if tname not in self.tensors:\n", - " self.tensors[tname] = {}\n", - "\n", - " self.logger.info(\n", - " f\" Tensor {tname} has gradients range: {np.min(tensor)} {np.max(tensor)} \"\n", - " )\n", - " self.tensors[tname][step] = tensor\n", - " except:\n", - " self.logger.warning(f\"Can not fetch tensor {tname}\")\n", - " return False\n", - "\n", - "\n", - "trial = create_trial(folder_name)\n", - "rule = GradientsLayer(trial)\n", - "try:\n", - " invoke_rule(rule)\n", - "except NoMoreData:\n", - " print(\n", - " \"The training has ended and there is no more data to be analyzed. This is expected behavior.\"\n", - " )" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Plot the histograms" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "utils.create_interactive_matplotlib_histogram(rule.tensors, filename=\"images/gradients.gif\")" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Image(url=\"images/gradients.gif\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Check variance across layers\n", - "The rule retrieves gradients, but this time we compare variance of gradient distribution across layers. We want to identify if there is a large difference between the min and max variance per training step. For instance, very deep neural networks may suffer from vanishing gradients the deeper we go. By checking this ratio we can determine if we run into such a situation." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[2020-04-27 22:26:25.950 f8455ab5c5ab:17 INFO local_trial.py:35] Loading trial debug-output at path /tmp/debug-output\n", - "[2020-04-27 22:26:25.966 f8455ab5c5ab:17 INFO rule_invoker.py:15] Started execution of rule GradientsAcrossLayers at step 0\n", - "[2020-04-27 22:26:25.967 f8455ab5c5ab:17 INFO trial.py:198] Training has ended, will refresh one final time in 1 sec.\n", - "[2020-04-27 22:26:26.969 f8455ab5c5ab:17 INFO trial.py:210] Loaded all steps\n", - "[2020-04-27 22:26:26.971 f8455ab5c5ab:17 INFO :17] Step 0 current ratio: 135150592.0 0 Ratio: 0.0\n", - "[2020-04-27 22:26:26.972 f8455ab5c5ab:17 INFO :17] Step 0 current ratio: 135150592.0 159276240.0 Ratio: 1.1785093545913696\n", - "[2020-04-27 22:26:26.973 f8455ab5c5ab:17 INFO :17] Step 0 current ratio: 8339952.0 159276240.0 Ratio: 19.097980499267578\n", - "[2020-04-27 22:26:26.974 f8455ab5c5ab:17 INFO :17] Step 0 current ratio: 8339952.0 159276240.0 Ratio: 19.097980499267578\n", - "[2020-04-27 22:26:26.975 f8455ab5c5ab:17 INFO :17] Step 0 current ratio: 8522.7109375 159276240.0 Ratio: 18688.447265625\n", - "[2020-04-27 22:26:26.977 f8455ab5c5ab:17 INFO :17] Step 0 current ratio: 8522.7109375 159276240.0 Ratio: 18688.447265625\n", - "[2020-04-27 22:26:26.978 f8455ab5c5ab:17 INFO :17] Step 0 current ratio: 816.9637451171875 159276240.0 Ratio: 194961.203125\n", - "[2020-04-27 22:26:26.979 f8455ab5c5ab:17 INFO :17] Step 0 current ratio: 816.9637451171875 159276240.0 Ratio: 194961.203125\n", - "[2020-04-27 22:26:26.981 f8455ab5c5ab:17 INFO :17] Step 0 current ratio: 554.4755859375 159276240.0 Ratio: 287255.65625\n", - "[2020-04-27 22:26:26.982 f8455ab5c5ab:17 INFO :17] Step 0 current ratio: 554.4755859375 159276240.0 Ratio: 287255.65625\n", - "[2020-04-27 22:26:26.985 f8455ab5c5ab:17 INFO :17] Step 100 current ratio: 542837.3125 0 Ratio: 0.0\n", - "[2020-04-27 22:26:26.986 f8455ab5c5ab:17 INFO :17] Step 100 current ratio: 233198.3125 0 Ratio: 0.0\n", - "[2020-04-27 22:26:26.988 f8455ab5c5ab:17 INFO :17] Step 100 current ratio: 17263.08984375 0 Ratio: 0.0\n", - "[2020-04-27 22:26:26.989 f8455ab5c5ab:17 INFO :17] Step 100 current ratio: 17263.08984375 27421.759765625 Ratio: 1.5884618759155273\n", - "[2020-04-27 22:26:26.990 f8455ab5c5ab:17 INFO :17] Step 100 current ratio: 346.3892517089844 27421.759765625 Ratio: 79.16458129882812\n", - "[2020-04-27 22:26:26.991 f8455ab5c5ab:17 INFO :17] Step 100 current ratio: 50.84667205810547 27421.759765625 Ratio: 539.3029174804688\n", - "[2020-04-27 22:26:26.993 f8455ab5c5ab:17 INFO :17] Step 100 current ratio: 21.27505111694336 27421.759765625 Ratio: 1288.916259765625\n", - "[2020-04-27 22:26:26.994 f8455ab5c5ab:17 INFO :17] Step 100 current ratio: 21.27505111694336 27421.759765625 Ratio: 1288.916259765625\n", - "[2020-04-27 22:26:26.995 f8455ab5c5ab:17 INFO :17] Step 100 current ratio: 21.27505111694336 27421.759765625 Ratio: 1288.916259765625\n", - "[2020-04-27 22:26:26.996 f8455ab5c5ab:17 INFO :17] Step 100 current ratio: 21.27505111694336 27421.759765625 Ratio: 1288.916259765625\n", - "[2020-04-27 22:26:27.000 f8455ab5c5ab:17 INFO :17] Step 200 current ratio: 1186.0352783203125 0 Ratio: 0.0\n", - "[2020-04-27 22:26:27.001 f8455ab5c5ab:17 INFO :17] Step 200 current ratio: 1103.24267578125 0 Ratio: 0.0\n", - "[2020-04-27 22:26:27.002 f8455ab5c5ab:17 INFO :17] Step 200 current ratio: 67.06768798828125 0 Ratio: 0.0\n", - "[2020-04-27 22:26:27.003 f8455ab5c5ab:17 INFO :17] Step 200 current ratio: 67.06768798828125 159.85687255859375 Ratio: 2.3835155963897705\n", - "[2020-04-27 22:26:27.004 f8455ab5c5ab:17 INFO :17] Step 200 current ratio: 67.06768798828125 159.85687255859375 Ratio: 2.3835155963897705\n", - "[2020-04-27 22:26:27.006 f8455ab5c5ab:17 INFO :17] Step 200 current ratio: 0.023273566737771034 159.85687255859375 Ratio: 6868.60205078125\n", - "[2020-04-27 22:26:27.007 f8455ab5c5ab:17 INFO :17] Step 200 current ratio: 0.023273566737771034 159.85687255859375 Ratio: 6868.60205078125\n", - "[2020-04-27 22:26:27.008 f8455ab5c5ab:17 INFO :17] Step 200 current ratio: 0.023273566737771034 159.85687255859375 Ratio: 6868.60205078125\n", - "[2020-04-27 22:26:27.010 f8455ab5c5ab:17 INFO :17] Step 200 current ratio: 0.023273566737771034 159.85687255859375 Ratio: 6868.60205078125\n", - "[2020-04-27 22:26:27.011 f8455ab5c5ab:17 INFO :17] Step 200 current ratio: 0.023273566737771034 159.85687255859375 Ratio: 6868.60205078125\n", - "[2020-04-27 22:26:27.014 f8455ab5c5ab:17 INFO :17] Step 300 current ratio: 515.3092041015625 0 Ratio: 0.0\n", - "[2020-04-27 22:26:27.016 f8455ab5c5ab:17 INFO :17] Step 300 current ratio: 515.3092041015625 673.0396728515625 Ratio: 1.306088924407959\n", - "[2020-04-27 22:26:27.017 f8455ab5c5ab:17 INFO :17] Step 300 current ratio: 19.87226104736328 673.0396728515625 Ratio: 33.8682975769043\n", - "[2020-04-27 22:26:27.020 f8455ab5c5ab:17 INFO :17] Step 300 current ratio: 19.87226104736328 673.0396728515625 Ratio: 33.8682975769043\n", - "[2020-04-27 22:26:27.021 f8455ab5c5ab:17 INFO :17] Step 300 current ratio: 19.87226104736328 673.0396728515625 Ratio: 33.8682975769043\n", - "[2020-04-27 22:26:27.023 f8455ab5c5ab:17 INFO :17] Step 300 current ratio: 0.01733490452170372 673.0396728515625 Ratio: 38825.69140625\n", - "[2020-04-27 22:26:27.024 f8455ab5c5ab:17 INFO :17] Step 300 current ratio: 0.01733490452170372 673.0396728515625 Ratio: 38825.69140625\n", - "[2020-04-27 22:26:27.025 f8455ab5c5ab:17 INFO :17] Step 300 current ratio: 0.01733490452170372 673.0396728515625 Ratio: 38825.69140625\n", - "[2020-04-27 22:26:27.026 f8455ab5c5ab:17 INFO :17] Step 300 current ratio: 0.01733490452170372 673.0396728515625 Ratio: 38825.69140625\n", - "[2020-04-27 22:26:27.028 f8455ab5c5ab:17 INFO :17] Step 300 current ratio: 0.01733490452170372 673.0396728515625 Ratio: 38825.69140625\n", - "[2020-04-27 22:26:27.031 f8455ab5c5ab:17 INFO :17] Step 400 current ratio: 928.9985961914062 0 Ratio: 0.0\n", - "[2020-04-27 22:26:27.032 f8455ab5c5ab:17 INFO :17] Step 400 current ratio: 297.640625 0 Ratio: 0.0\n", - "[2020-04-27 22:26:27.033 f8455ab5c5ab:17 INFO :17] Step 400 current ratio: 15.993744850158691 0 Ratio: 0.0\n", - "[2020-04-27 22:26:27.035 f8455ab5c5ab:17 INFO :17] Step 400 current ratio: 15.993744850158691 29.116140365600586 Ratio: 1.8204704523086548\n", - "[2020-04-27 22:26:27.036 f8455ab5c5ab:17 INFO :17] Step 400 current ratio: 15.993744850158691 34.61952590942383 Ratio: 2.1645665168762207\n", - "[2020-04-27 22:26:27.037 f8455ab5c5ab:17 INFO :17] Step 400 current ratio: 0.002362065715715289 34.61952590942383 Ratio: 14656.4619140625\n", - "[2020-04-27 22:26:27.038 f8455ab5c5ab:17 INFO :17] Step 400 current ratio: 0.002362065715715289 34.61952590942383 Ratio: 14656.4619140625\n", - "[2020-04-27 22:26:27.040 f8455ab5c5ab:17 INFO :17] Step 400 current ratio: 0.002362065715715289 34.61952590942383 Ratio: 14656.4619140625\n", - "[2020-04-27 22:26:27.041 f8455ab5c5ab:17 INFO :17] Step 400 current ratio: 0.002362065715715289 34.61952590942383 Ratio: 14656.4619140625\n", - "[2020-04-27 22:26:27.042 f8455ab5c5ab:17 INFO :17] Step 400 current ratio: 0.002362065715715289 34.61952590942383 Ratio: 14656.4619140625\n", - "[2020-04-27 22:26:27.046 f8455ab5c5ab:17 INFO :17] Step 500 current ratio: 1612.4898681640625 0 Ratio: 0.0\n", - "[2020-04-27 22:26:27.047 f8455ab5c5ab:17 INFO :17] Step 500 current ratio: 1429.26123046875 0 Ratio: 0.0\n", - "[2020-04-27 22:26:27.048 f8455ab5c5ab:17 INFO :17] Step 500 current ratio: 89.83195495605469 0 Ratio: 0.0\n", - "[2020-04-27 22:26:27.049 f8455ab5c5ab:17 INFO :17] Step 500 current ratio: 89.83195495605469 234.8433380126953 Ratio: 2.6142516136169434\n", - "[2020-04-27 22:26:27.050 f8455ab5c5ab:17 INFO :17] Step 500 current ratio: 43.61869812011719 234.8433380126953 Ratio: 5.384006023406982\n", - "[2020-04-27 22:26:27.052 f8455ab5c5ab:17 INFO :17] Step 500 current ratio: 0.011688556522130966 234.8433380126953 Ratio: 20091.73046875\n", - "[2020-04-27 22:26:27.053 f8455ab5c5ab:17 INFO :17] Step 500 current ratio: 0.011688556522130966 234.8433380126953 Ratio: 20091.73046875\n", - "[2020-04-27 22:26:27.054 f8455ab5c5ab:17 INFO :17] Step 500 current ratio: 0.011688556522130966 234.8433380126953 Ratio: 20091.73046875\n", - "[2020-04-27 22:26:27.055 f8455ab5c5ab:17 INFO :17] Step 500 current ratio: 0.011688556522130966 234.8433380126953 Ratio: 20091.73046875\n", - "[2020-04-27 22:26:27.057 f8455ab5c5ab:17 INFO :17] Step 500 current ratio: 0.011688556522130966 234.8433380126953 Ratio: 20091.73046875\n", - "[2020-04-27 22:26:27.060 f8455ab5c5ab:17 INFO :17] Step 600 current ratio: 31.90549659729004 0 Ratio: 0.0\n", - "[2020-04-27 22:26:27.062 f8455ab5c5ab:17 INFO :17] Step 600 current ratio: 14.34399700164795 0 Ratio: 0.0\n", - "[2020-04-27 22:26:27.063 f8455ab5c5ab:17 INFO :17] Step 600 current ratio: 2.644946813583374 0 Ratio: 0.0\n", - "[2020-04-27 22:26:27.064 f8455ab5c5ab:17 INFO :17] Step 600 current ratio: 2.644946813583374 2.99973464012146 Ratio: 1.1341379880905151\n", - "[2020-04-27 22:26:27.065 f8455ab5c5ab:17 INFO :17] Step 600 current ratio: 2.644946813583374 40.85332107543945 Ratio: 15.44580078125\n", - "[2020-04-27 22:26:27.066 f8455ab5c5ab:17 INFO :17] Step 600 current ratio: 1.8411362816550536e-06 40.85332107543945 Ratio: 22189190.0\n", - "[2020-04-27 22:26:27.068 f8455ab5c5ab:17 INFO :17] Step 600 current ratio: 1.8411362816550536e-06 40.85332107543945 Ratio: 22189190.0\n", - "[2020-04-27 22:26:27.069 f8455ab5c5ab:17 INFO :17] Step 600 current ratio: 1.8411362816550536e-06 40.85332107543945 Ratio: 22189190.0\n", - "[2020-04-27 22:26:27.070 f8455ab5c5ab:17 INFO :17] Step 600 current ratio: 1.8411362816550536e-06 40.85332107543945 Ratio: 22189190.0\n", - "[2020-04-27 22:26:27.071 f8455ab5c5ab:17 INFO :17] Step 600 current ratio: 1.8411362816550536e-06 40.85332107543945 Ratio: 22189190.0\n", - "[2020-04-27 22:26:27.075 f8455ab5c5ab:17 INFO :17] Step 700 current ratio: 6.120075702667236 0 Ratio: 0.0\n", - "[2020-04-27 22:26:27.076 f8455ab5c5ab:17 INFO :17] Step 700 current ratio: 6.120075702667236 12.20245361328125 Ratio: 1.9938403367996216\n", - "[2020-04-27 22:26:27.077 f8455ab5c5ab:17 INFO :17] Step 700 current ratio: 0.682183563709259 12.20245361328125 Ratio: 17.887346267700195\n", - "[2020-04-27 22:26:27.078 f8455ab5c5ab:17 INFO :17] Step 700 current ratio: 0.682183563709259 12.20245361328125 Ratio: 17.887346267700195\n", - "[2020-04-27 22:26:27.079 f8455ab5c5ab:17 INFO :17] Step 700 current ratio: 0.682183563709259 42.211490631103516 Ratio: 61.87702560424805\n", - "[2020-04-27 22:26:27.081 f8455ab5c5ab:17 INFO :17] Step 700 current ratio: 6.691928138025105e-05 42.211490631103516 Ratio: 630782.1875\n", - "[2020-04-27 22:26:27.082 f8455ab5c5ab:17 INFO :17] Step 700 current ratio: 6.691928138025105e-05 42.211490631103516 Ratio: 630782.1875\n", - "[2020-04-27 22:26:27.083 f8455ab5c5ab:17 INFO :17] Step 700 current ratio: 6.691928138025105e-05 42.211490631103516 Ratio: 630782.1875\n", - "[2020-04-27 22:26:27.084 f8455ab5c5ab:17 INFO :17] Step 700 current ratio: 6.691928138025105e-05 42.211490631103516 Ratio: 630782.1875\n", - "[2020-04-27 22:26:27.086 f8455ab5c5ab:17 INFO :17] Step 700 current ratio: 6.691928138025105e-05 42.211490631103516 Ratio: 630782.1875\n", - "[2020-04-27 22:26:27.089 f8455ab5c5ab:17 INFO :17] Step 800 current ratio: 127.13235473632812 0 Ratio: 0.0\n", - "[2020-04-27 22:26:27.090 f8455ab5c5ab:17 INFO :17] Step 800 current ratio: 127.13235473632812 133.708251953125 Ratio: 1.0517247915267944\n", - "[2020-04-27 22:26:27.091 f8455ab5c5ab:17 INFO :17] Step 800 current ratio: 5.290472507476807 133.708251953125 Ratio: 25.273405075073242\n", - "[2020-04-27 22:26:27.093 f8455ab5c5ab:17 INFO :17] Step 800 current ratio: 5.290472507476807 133.708251953125 Ratio: 25.273405075073242\n", - "[2020-04-27 22:26:27.094 f8455ab5c5ab:17 INFO :17] Step 800 current ratio: 5.290472507476807 133.708251953125 Ratio: 25.273405075073242\n", - "[2020-04-27 22:26:27.095 f8455ab5c5ab:17 INFO :17] Step 800 current ratio: 0.0025186585262417793 133.708251953125 Ratio: 53087.08984375\n", - "[2020-04-27 22:26:27.096 f8455ab5c5ab:17 INFO :17] Step 800 current ratio: 0.0025186585262417793 133.708251953125 Ratio: 53087.08984375\n", - "[2020-04-27 22:26:27.097 f8455ab5c5ab:17 INFO :17] Step 800 current ratio: 0.0025186585262417793 133.708251953125 Ratio: 53087.08984375\n", - "[2020-04-27 22:26:27.099 f8455ab5c5ab:17 INFO :17] Step 800 current ratio: 0.0025186585262417793 133.708251953125 Ratio: 53087.08984375\n", - "[2020-04-27 22:26:27.100 f8455ab5c5ab:17 INFO :17] Step 800 current ratio: 0.0025186585262417793 133.708251953125 Ratio: 53087.08984375\n", - "[2020-04-27 22:26:27.104 f8455ab5c5ab:17 INFO :17] Step 900 current ratio: 133.9089813232422 0 Ratio: 0.0\n", - "[2020-04-27 22:26:27.105 f8455ab5c5ab:17 INFO :17] Step 900 current ratio: 120.24006652832031 0 Ratio: 0.0\n", - "[2020-04-27 22:26:27.106 f8455ab5c5ab:17 INFO :17] Step 900 current ratio: 7.1951093673706055 0 Ratio: 0.0\n", - "[2020-04-27 22:26:27.108 f8455ab5c5ab:17 INFO :17] Step 900 current ratio: 7.1951093673706055 17.802467346191406 Ratio: 2.474245548248291\n", - "[2020-04-27 22:26:27.109 f8455ab5c5ab:17 INFO :17] Step 900 current ratio: 7.1951093673706055 72.29354858398438 Ratio: 10.047595977783203\n", - "[2020-04-27 22:26:27.110 f8455ab5c5ab:17 INFO :17] Step 900 current ratio: 0.004477491602301598 72.29354858398438 Ratio: 16145.9931640625\n", - "[2020-04-27 22:26:27.112 f8455ab5c5ab:17 INFO :17] Step 900 current ratio: 0.004477491602301598 72.29354858398438 Ratio: 16145.9931640625\n", - "[2020-04-27 22:26:27.113 f8455ab5c5ab:17 INFO :17] Step 900 current ratio: 0.004477491602301598 72.29354858398438 Ratio: 16145.9931640625\n", - "[2020-04-27 22:26:27.114 f8455ab5c5ab:17 INFO :17] Step 900 current ratio: 0.004477491602301598 72.29354858398438 Ratio: 16145.9931640625\n", - "[2020-04-27 22:26:27.115 f8455ab5c5ab:17 INFO :17] Step 900 current ratio: 0.004477491602301598 72.29354858398438 Ratio: 16145.9931640625\n", - "[2020-04-27 22:26:27.119 f8455ab5c5ab:17 INFO :17] Step 1000 current ratio: 30.299272537231445 0 Ratio: 0.0\n", - "[2020-04-27 22:26:27.120 f8455ab5c5ab:17 INFO :17] Step 1000 current ratio: 30.299272537231445 39.399986267089844 Ratio: 1.3003607988357544\n", - "[2020-04-27 22:26:27.121 f8455ab5c5ab:17 INFO :17] Step 1000 current ratio: 1.7733855247497559 39.399986267089844 Ratio: 22.217384338378906\n", - "[2020-04-27 22:26:27.122 f8455ab5c5ab:17 INFO :17] Step 1000 current ratio: 1.7733855247497559 39.399986267089844 Ratio: 22.217384338378906\n", - "[2020-04-27 22:26:27.124 f8455ab5c5ab:17 INFO :17] Step 1000 current ratio: 1.7733855247497559 39.86183166503906 Ratio: 22.477815628051758\n", - "[2020-04-27 22:26:27.125 f8455ab5c5ab:17 INFO :17] Step 1000 current ratio: 5.755776510341093e-05 39.86183166503906 Ratio: 692553.5\n", - "[2020-04-27 22:26:27.126 f8455ab5c5ab:17 INFO :17] Step 1000 current ratio: 5.755776510341093e-05 39.86183166503906 Ratio: 692553.5\n", - "[2020-04-27 22:26:27.128 f8455ab5c5ab:17 INFO :17] Step 1000 current ratio: 5.755776510341093e-05 39.86183166503906 Ratio: 692553.5\n", - "[2020-04-27 22:26:27.129 f8455ab5c5ab:17 INFO :17] Step 1000 current ratio: 5.755776510341093e-05 39.86183166503906 Ratio: 692553.5\n", - "[2020-04-27 22:26:27.130 f8455ab5c5ab:17 INFO :17] Step 1000 current ratio: 5.755776510341093e-05 39.86183166503906 Ratio: 692553.5\n", - "[2020-04-27 22:26:27.134 f8455ab5c5ab:17 INFO :17] Step 1100 current ratio: 11.354304313659668 0 Ratio: 0.0\n", - "[2020-04-27 22:26:27.135 f8455ab5c5ab:17 INFO :17] Step 1100 current ratio: 2.6843271255493164 0 Ratio: 0.0\n", - "[2020-04-27 22:26:27.136 f8455ab5c5ab:17 INFO :17] Step 1100 current ratio: 0.22761689126491547 0 Ratio: 0.0\n", - "[2020-04-27 22:26:27.137 f8455ab5c5ab:17 INFO :17] Step 1100 current ratio: 0.22761689126491547 0.3647533059120178 Ratio: 1.6024879217147827\n", - "[2020-04-27 22:26:27.138 f8455ab5c5ab:17 INFO :17] Step 1100 current ratio: 0.22761689126491547 77.35369110107422 Ratio: 339.84161376953125\n", - "[2020-04-27 22:26:27.140 f8455ab5c5ab:17 INFO :17] Step 1100 current ratio: 0.001992658944800496 77.35369110107422 Ratio: 38819.33203125\n", - "[2020-04-27 22:26:27.141 f8455ab5c5ab:17 INFO :17] Step 1100 current ratio: 0.001992658944800496 77.35369110107422 Ratio: 38819.33203125\n", - "[2020-04-27 22:26:27.142 f8455ab5c5ab:17 INFO :17] Step 1100 current ratio: 0.001992658944800496 77.35369110107422 Ratio: 38819.33203125\n", - "[2020-04-27 22:26:27.143 f8455ab5c5ab:17 INFO :17] Step 1100 current ratio: 0.001992658944800496 77.35369110107422 Ratio: 38819.33203125\n", - "[2020-04-27 22:26:27.145 f8455ab5c5ab:17 INFO :17] Step 1100 current ratio: 0.001992658944800496 77.35369110107422 Ratio: 38819.33203125\n", - "[2020-04-27 22:26:27.148 f8455ab5c5ab:17 INFO :17] Step 1200 current ratio: 0.2086801379919052 0 Ratio: 0.0\n", - "[2020-04-27 22:26:27.149 f8455ab5c5ab:17 INFO :17] Step 1200 current ratio: 0.2086801379919052 0.21724243462085724 Ratio: 1.041030764579773\n", - "[2020-04-27 22:26:27.150 f8455ab5c5ab:17 INFO :17] Step 1200 current ratio: 0.034412749111652374 0.21724243462085724 Ratio: 6.31284761428833\n", - "[2020-04-27 22:26:27.151 f8455ab5c5ab:17 INFO :17] Step 1200 current ratio: 0.025111373513936996 0.21724243462085724 Ratio: 8.65115737915039\n", - "[2020-04-27 22:26:27.153 f8455ab5c5ab:17 INFO :17] Step 1200 current ratio: 0.025111373513936996 29.94378662109375 Ratio: 1192.439208984375\n", - "[2020-04-27 22:26:27.154 f8455ab5c5ab:17 INFO :17] Step 1200 current ratio: 0.00032806280069053173 29.94378662109375 Ratio: 91274.5546875\n", - "[2020-04-27 22:26:27.155 f8455ab5c5ab:17 INFO :17] Step 1200 current ratio: 0.00032806280069053173 29.94378662109375 Ratio: 91274.5546875\n", - "[2020-04-27 22:26:27.157 f8455ab5c5ab:17 INFO :17] Step 1200 current ratio: 0.00032806280069053173 29.94378662109375 Ratio: 91274.5546875\n", - "[2020-04-27 22:26:27.158 f8455ab5c5ab:17 INFO :17] Step 1200 current ratio: 0.00032806280069053173 29.94378662109375 Ratio: 91274.5546875\n", - "[2020-04-27 22:26:27.159 f8455ab5c5ab:17 INFO :17] Step 1200 current ratio: 0.00032806280069053173 29.94378662109375 Ratio: 91274.5546875\n", - "[2020-04-27 22:26:27.163 f8455ab5c5ab:17 INFO :17] Step 1300 current ratio: 2.924529790878296 0 Ratio: 0.0\n", - "[2020-04-27 22:26:27.164 f8455ab5c5ab:17 INFO :17] Step 1300 current ratio: 2.924529790878296 6.251096725463867 Ratio: 2.1374707221984863\n", - "[2020-04-27 22:26:27.165 f8455ab5c5ab:17 INFO :17] Step 1300 current ratio: 0.27884700894355774 6.251096725463867 Ratio: 22.41765785217285\n", - "[2020-04-27 22:26:27.166 f8455ab5c5ab:17 INFO :17] Step 1300 current ratio: 0.27884700894355774 6.251096725463867 Ratio: 22.41765785217285\n", - "[2020-04-27 22:26:27.167 f8455ab5c5ab:17 INFO :17] Step 1300 current ratio: 0.27884700894355774 35.37714767456055 Ratio: 126.869384765625\n", - "[2020-04-27 22:26:27.169 f8455ab5c5ab:17 INFO :17] Step 1300 current ratio: 0.006202871911227703 35.37714767456055 Ratio: 5703.349609375\n", - "[2020-04-27 22:26:27.170 f8455ab5c5ab:17 INFO :17] Step 1300 current ratio: 0.006202871911227703 35.37714767456055 Ratio: 5703.349609375\n", - "[2020-04-27 22:26:27.172 f8455ab5c5ab:17 INFO :17] Step 1300 current ratio: 0.006202871911227703 35.37714767456055 Ratio: 5703.349609375\n", - "[2020-04-27 22:26:27.173 f8455ab5c5ab:17 INFO :17] Step 1300 current ratio: 0.006202871911227703 35.37714767456055 Ratio: 5703.349609375\n", - "[2020-04-27 22:26:27.174 f8455ab5c5ab:17 INFO :17] Step 1300 current ratio: 0.006202871911227703 35.37714767456055 Ratio: 5703.349609375\n", - "[2020-04-27 22:26:27.178 f8455ab5c5ab:17 INFO :17] Step 1400 current ratio: 440.8072509765625 0 Ratio: 0.0\n", - "[2020-04-27 22:26:27.179 f8455ab5c5ab:17 INFO :17] Step 1400 current ratio: 248.11984252929688 0 Ratio: 0.0\n", - "[2020-04-27 22:26:27.180 f8455ab5c5ab:17 INFO :17] Step 1400 current ratio: 11.648333549499512 0 Ratio: 0.0\n", - "[2020-04-27 22:26:27.182 f8455ab5c5ab:17 INFO :17] Step 1400 current ratio: 11.648333549499512 32.488555908203125 Ratio: 2.789116144180298\n", - "[2020-04-27 22:26:27.183 f8455ab5c5ab:17 INFO :17] Step 1400 current ratio: 11.648333549499512 32.488555908203125 Ratio: 2.789116144180298\n", - "[2020-04-27 22:26:27.185 f8455ab5c5ab:17 INFO :17] Step 1400 current ratio: 0.0029379758052527905 32.488555908203125 Ratio: 11058.142578125\n", - "[2020-04-27 22:26:27.186 f8455ab5c5ab:17 INFO :17] Step 1400 current ratio: 0.0029379758052527905 32.488555908203125 Ratio: 11058.142578125\n", - "[2020-04-27 22:26:27.187 f8455ab5c5ab:17 INFO :17] Step 1400 current ratio: 0.0029379758052527905 32.488555908203125 Ratio: 11058.142578125\n", - "[2020-04-27 22:26:27.188 f8455ab5c5ab:17 INFO :17] Step 1400 current ratio: 0.0029379758052527905 32.488555908203125 Ratio: 11058.142578125\n", - "[2020-04-27 22:26:27.190 f8455ab5c5ab:17 INFO :17] Step 1400 current ratio: 0.0029379758052527905 32.488555908203125 Ratio: 11058.142578125\n", - "The training has ended and there is no more data to be analyzed. This is expected behavior.\n" - ] - } - ], - "source": [ - "class GradientsAcrossLayers(Rule):\n", - " def __init__(\n", - " self,\n", - " base_trial,\n", - " ):\n", - " super().__init__(base_trial)\n", - " self.tensors = collections.OrderedDict()\n", - "\n", - " def invoke_at_step(self, step):\n", - " for tname in self.base_trial.tensor_names(regex=\".*gradient\"):\n", - " try:\n", - " tensor = self.base_trial.tensor(tname).value(step)\n", - " if step not in self.tensors:\n", - " self.tensors[step] = [np.inf, 0]\n", - " variance = np.var(tensor.flatten())\n", - " if variance < self.tensors[step][0]:\n", - " self.tensors[step][0] = variance\n", - " elif variance > self.tensors[step][1]:\n", - " self.tensors[step][1] = variance\n", - " self.logger.info(\n", - " f\" Step {step} current ratio: {self.tensors[step][0]} {self.tensors[step][1]} Ratio: {self.tensors[step][1] / self.tensors[step][0]}\"\n", - " )\n", - " except:\n", - " self.logger.warning(f\"Can not fetch tensor {tname}\")\n", - " return False\n", - "\n", - "\n", - "trial = create_trial(folder_name)\n", - "rule = GradientsAcrossLayers(trial)\n", - "try:\n", - " invoke_rule(rule)\n", - "except NoMoreData:\n", - " print(\n", - " \"The training has ended and there is no more data to be analyzed. This is expected behavior.\"\n", - " )" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's check min and max values of the gradients across layers:" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Step 0 variance of gradients: 554.4756 to 159276240.0\n", - "Step 100 variance of gradients: 21.275051 to 27421.76\n", - "Step 200 variance of gradients: 0.023273567 to 159.85687\n", - "Step 300 variance of gradients: 0.017334905 to 673.0397\n", - "Step 400 variance of gradients: 0.0023620657 to 34.619526\n", - "Step 500 variance of gradients: 0.0116885565 to 234.84334\n", - "Step 600 variance of gradients: 1.8411363e-06 to 40.85332\n", - "Step 700 variance of gradients: 6.691928e-05 to 42.21149\n", - "Step 800 variance of gradients: 0.0025186585 to 133.70825\n", - "Step 900 variance of gradients: 0.0044774916 to 72.29355\n", - "Step 1000 variance of gradients: 5.7557765e-05 to 39.86183\n", - "Step 1100 variance of gradients: 0.001992659 to 77.35369\n", - "Step 1200 variance of gradients: 0.0003280628 to 29.943787\n", - "Step 1300 variance of gradients: 0.006202872 to 35.377148\n", - "Step 1400 variance of gradients: 0.0029379758 to 32.488556\n" - ] - } - ], - "source": [ - "for step in rule.tensors:\n", - " print(\n", - " \"Step\",\n", - " step,\n", - " \"variance of gradients: \",\n", - " rule.tensors[step][0],\n", - " \" to \",\n", - " rule.tensors[step][1],\n", - " )" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Distribution of weights\n", - "This rule retrieves the weight tensors and checks the variance. If the distribution does not change much across steps it may indicate that the learning rate is too low, that gradients are too small or that the training has converged to a minimum." - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[2020-04-27 22:26:27.303 f8455ab5c5ab:17 INFO local_trial.py:35] Loading trial debug-output at path /tmp/debug-output\n", - "[2020-04-27 22:26:27.321 f8455ab5c5ab:17 INFO rule_invoker.py:15] Started execution of rule WeightRatio at step 0\n", - "[2020-04-27 22:26:27.323 f8455ab5c5ab:17 INFO trial.py:198] Training has ended, will refresh one final time in 1 sec.\n", - "[2020-04-27 22:26:28.326 f8455ab5c5ab:17 INFO trial.py:210] Loaded all steps\n", - "[2020-04-27 22:26:28.327 f8455ab5c5ab:17 INFO :14] Tensor conv0_weight has weights with variance: 0.2814779281616211 \n", - "[2020-04-27 22:26:28.331 f8455ab5c5ab:17 INFO :14] Tensor conv1_weight has weights with variance: 0.3394239842891693 \n", - "[2020-04-27 22:26:28.332 f8455ab5c5ab:17 INFO :14] Tensor dense0_weight has weights with variance: 0.3329920768737793 \n", - "[2020-04-27 22:26:28.334 f8455ab5c5ab:17 INFO :14] Tensor dense1_weight has weights with variance: 0.3357633054256439 \n", - "[2020-04-27 22:26:28.335 f8455ab5c5ab:17 INFO :14] Tensor dense2_weight has weights with variance: 0.33459386229515076 \n", - "[2020-04-27 22:26:28.339 f8455ab5c5ab:17 INFO :14] Tensor conv0_weight has weights with variance: 0.18824437260627747 \n", - "[2020-04-27 22:26:28.340 f8455ab5c5ab:17 INFO :14] Tensor conv1_weight has weights with variance: 0.31524181365966797 \n", - "[2020-04-27 22:26:28.341 f8455ab5c5ab:17 INFO :14] Tensor dense0_weight has weights with variance: 0.33269569277763367 \n", - "[2020-04-27 22:26:28.343 f8455ab5c5ab:17 INFO :14] Tensor dense1_weight has weights with variance: 0.33430221676826477 \n", - "[2020-04-27 22:26:28.344 f8455ab5c5ab:17 INFO :14] Tensor dense2_weight has weights with variance: 0.3178540766239166 \n", - "[2020-04-27 22:26:28.348 f8455ab5c5ab:17 INFO :14] Tensor conv0_weight has weights with variance: 0.17195990681648254 \n", - "[2020-04-27 22:26:28.349 f8455ab5c5ab:17 INFO :14] Tensor conv1_weight has weights with variance: 0.3088184595108032 \n", - "[2020-04-27 22:26:28.350 f8455ab5c5ab:17 INFO :14] Tensor dense0_weight has weights with variance: 0.3326626121997833 \n", - "[2020-04-27 22:26:28.352 f8455ab5c5ab:17 INFO :14] Tensor dense1_weight has weights with variance: 0.33413469791412354 \n", - "[2020-04-27 22:26:28.353 f8455ab5c5ab:17 INFO :14] Tensor dense2_weight has weights with variance: 0.3159906268119812 \n", - "[2020-04-27 22:26:28.357 f8455ab5c5ab:17 INFO :14] Tensor conv0_weight has weights with variance: 0.17003734409809113 \n", - "[2020-04-27 22:26:28.358 f8455ab5c5ab:17 INFO :14] Tensor conv1_weight has weights with variance: 0.3079167902469635 \n", - "[2020-04-27 22:26:28.359 f8455ab5c5ab:17 INFO :14] Tensor dense0_weight has weights with variance: 0.3326609432697296 \n", - "[2020-04-27 22:26:28.361 f8455ab5c5ab:17 INFO :14] Tensor dense1_weight has weights with variance: 0.33412644267082214 \n", - "[2020-04-27 22:26:28.362 f8455ab5c5ab:17 INFO :14] Tensor dense2_weight has weights with variance: 0.3158993721008301 \n", - "[2020-04-27 22:26:28.365 f8455ab5c5ab:17 INFO :14] Tensor conv0_weight has weights with variance: 0.16902482509613037 \n", - "[2020-04-27 22:26:28.366 f8455ab5c5ab:17 INFO :14] Tensor conv1_weight has weights with variance: 0.3074690103530884 \n", - "[2020-04-27 22:26:28.368 f8455ab5c5ab:17 INFO :14] Tensor dense0_weight has weights with variance: 0.33266007900238037 \n", - "[2020-04-27 22:26:28.369 f8455ab5c5ab:17 INFO :14] Tensor dense1_weight has weights with variance: 0.33412203192710876 \n", - "[2020-04-27 22:26:28.370 f8455ab5c5ab:17 INFO :14] Tensor dense2_weight has weights with variance: 0.3158499598503113 \n", - "[2020-04-27 22:26:28.374 f8455ab5c5ab:17 INFO :14] Tensor conv0_weight has weights with variance: 0.16830061376094818 \n", - "[2020-04-27 22:26:28.375 f8455ab5c5ab:17 INFO :14] Tensor conv1_weight has weights with variance: 0.3071542978286743 \n", - "[2020-04-27 22:26:28.376 f8455ab5c5ab:17 INFO :14] Tensor dense0_weight has weights with variance: 0.332659512758255 \n", - "[2020-04-27 22:26:28.378 f8455ab5c5ab:17 INFO :14] Tensor dense1_weight has weights with variance: 0.33411905169487 \n", - "[2020-04-27 22:26:28.379 f8455ab5c5ab:17 INFO :14] Tensor dense2_weight has weights with variance: 0.3158169090747833 \n", - "[2020-04-27 22:26:28.382 f8455ab5c5ab:17 INFO :14] Tensor conv0_weight has weights with variance: 0.1678180992603302 \n", - "[2020-04-27 22:26:28.384 f8455ab5c5ab:17 INFO :14] Tensor conv1_weight has weights with variance: 0.30694863200187683 \n", - "[2020-04-27 22:26:28.385 f8455ab5c5ab:17 INFO :14] Tensor dense0_weight has weights with variance: 0.33265912532806396 \n", - "[2020-04-27 22:26:28.386 f8455ab5c5ab:17 INFO :14] Tensor dense1_weight has weights with variance: 0.33411726355552673 \n", - "[2020-04-27 22:26:28.387 f8455ab5c5ab:17 INFO :14] Tensor dense2_weight has weights with variance: 0.31579694151878357 \n", - "[2020-04-27 22:26:28.391 f8455ab5c5ab:17 INFO :14] Tensor conv0_weight has weights with variance: 0.167400062084198 \n", - "[2020-04-27 22:26:28.392 f8455ab5c5ab:17 INFO :14] Tensor conv1_weight has weights with variance: 0.30677223205566406 \n", - "[2020-04-27 22:26:28.394 f8455ab5c5ab:17 INFO :14] Tensor dense0_weight has weights with variance: 0.3326588273048401 \n", - "[2020-04-27 22:26:28.395 f8455ab5c5ab:17 INFO :14] Tensor dense1_weight has weights with variance: 0.3341156840324402 \n", - "[2020-04-27 22:26:28.396 f8455ab5c5ab:17 INFO :14] Tensor dense2_weight has weights with variance: 0.31577932834625244 \n", - "[2020-04-27 22:26:28.400 f8455ab5c5ab:17 INFO :14] Tensor conv0_weight has weights with variance: 0.16703404486179352 \n", - "[2020-04-27 22:26:28.401 f8455ab5c5ab:17 INFO :14] Tensor conv1_weight has weights with variance: 0.30660226941108704 \n", - "[2020-04-27 22:26:28.402 f8455ab5c5ab:17 INFO :14] Tensor dense0_weight has weights with variance: 0.3326585292816162 \n", - "[2020-04-27 22:26:28.404 f8455ab5c5ab:17 INFO :14] Tensor dense1_weight has weights with variance: 0.3341141939163208 \n", - "[2020-04-27 22:26:28.405 f8455ab5c5ab:17 INFO :14] Tensor dense2_weight has weights with variance: 0.31576237082481384 \n", - "[2020-04-27 22:26:28.408 f8455ab5c5ab:17 INFO :14] Tensor conv0_weight has weights with variance: 0.16684456169605255 \n", - "[2020-04-27 22:26:28.409 f8455ab5c5ab:17 INFO :14] Tensor conv1_weight has weights with variance: 0.3065086007118225 \n", - "[2020-04-27 22:26:28.411 f8455ab5c5ab:17 INFO :14] Tensor dense0_weight has weights with variance: 0.3326583206653595 \n", - "[2020-04-27 22:26:28.412 f8455ab5c5ab:17 INFO :14] Tensor dense1_weight has weights with variance: 0.3341132402420044 \n", - "[2020-04-27 22:26:28.413 f8455ab5c5ab:17 INFO :14] Tensor dense2_weight has weights with variance: 0.3157515525817871 \n", - "[2020-04-27 22:26:28.416 f8455ab5c5ab:17 INFO :14] Tensor conv0_weight has weights with variance: 0.16657119989395142 \n", - "[2020-04-27 22:26:28.418 f8455ab5c5ab:17 INFO :14] Tensor conv1_weight has weights with variance: 0.306401789188385 \n", - "[2020-04-27 22:26:28.419 f8455ab5c5ab:17 INFO :14] Tensor dense0_weight has weights with variance: 0.33265814185142517 \n", - "[2020-04-27 22:26:28.420 f8455ab5c5ab:17 INFO :14] Tensor dense1_weight has weights with variance: 0.3341123163700104 \n", - "[2020-04-27 22:26:28.422 f8455ab5c5ab:17 INFO :14] Tensor dense2_weight has weights with variance: 0.3157411217689514 \n", - "[2020-04-27 22:26:28.425 f8455ab5c5ab:17 INFO :14] Tensor conv0_weight has weights with variance: 0.16639144718647003 \n", - "[2020-04-27 22:26:28.426 f8455ab5c5ab:17 INFO :14] Tensor conv1_weight has weights with variance: 0.30630478262901306 \n", - "[2020-04-27 22:26:28.428 f8455ab5c5ab:17 INFO :14] Tensor dense0_weight has weights with variance: 0.33265799283981323 \n", - "[2020-04-27 22:26:28.429 f8455ab5c5ab:17 INFO :14] Tensor dense1_weight has weights with variance: 0.33411142230033875 \n", - "[2020-04-27 22:26:28.430 f8455ab5c5ab:17 INFO :14] Tensor dense2_weight has weights with variance: 0.3157315254211426 \n", - "[2020-04-27 22:26:28.434 f8455ab5c5ab:17 INFO :14] Tensor conv0_weight has weights with variance: 0.1662261188030243 \n", - "[2020-04-27 22:26:28.435 f8455ab5c5ab:17 INFO :14] Tensor conv1_weight has weights with variance: 0.306240439414978 \n", - "[2020-04-27 22:26:28.436 f8455ab5c5ab:17 INFO :14] Tensor dense0_weight has weights with variance: 0.3326578736305237 \n", - "[2020-04-27 22:26:28.438 f8455ab5c5ab:17 INFO :14] Tensor dense1_weight has weights with variance: 0.33411091566085815 \n", - "[2020-04-27 22:26:28.439 f8455ab5c5ab:17 INFO :14] Tensor dense2_weight has weights with variance: 0.315725713968277 \n", - "[2020-04-27 22:26:28.443 f8455ab5c5ab:17 INFO :14] Tensor conv0_weight has weights with variance: 0.16605880856513977 \n", - "[2020-04-27 22:26:28.444 f8455ab5c5ab:17 INFO :14] Tensor conv1_weight has weights with variance: 0.30617889761924744 \n", - "[2020-04-27 22:26:28.445 f8455ab5c5ab:17 INFO :14] Tensor dense0_weight has weights with variance: 0.33265775442123413 \n", - "[2020-04-27 22:26:28.447 f8455ab5c5ab:17 INFO :14] Tensor dense1_weight has weights with variance: 0.3341103196144104 \n", - "[2020-04-27 22:26:28.448 f8455ab5c5ab:17 INFO :14] Tensor dense2_weight has weights with variance: 0.3157185912132263 \n", - "[2020-04-27 22:26:28.451 f8455ab5c5ab:17 INFO :14] Tensor conv0_weight has weights with variance: 0.16584762930870056 \n", - "[2020-04-27 22:26:28.452 f8455ab5c5ab:17 INFO :14] Tensor conv1_weight has weights with variance: 0.3061014711856842 \n", - "[2020-04-27 22:26:28.454 f8455ab5c5ab:17 INFO :14] Tensor dense0_weight has weights with variance: 0.3326576054096222 \n", - "[2020-04-27 22:26:28.455 f8455ab5c5ab:17 INFO :14] Tensor dense1_weight has weights with variance: 0.3341095745563507 \n", - "[2020-04-27 22:26:28.456 f8455ab5c5ab:17 INFO :14] Tensor dense2_weight has weights with variance: 0.31571054458618164 \n", - "The training has ended and there is no more data to be analyzed. This is expected behavior.\n" - ] - } - ], - "source": [ - "class WeightRatio(Rule):\n", - " def __init__(\n", - " self,\n", - " base_trial,\n", - " ):\n", - " super().__init__(base_trial)\n", - " self.tensors = collections.OrderedDict()\n", - "\n", - " def invoke_at_step(self, step):\n", - " for tname in self.base_trial.tensor_names(regex=\".*weight\"):\n", - " if \"gradient\" not in tname:\n", - " try:\n", - " tensor = self.base_trial.tensor(tname).value(step)\n", - " if tname not in self.tensors:\n", - " self.tensors[tname] = {}\n", - "\n", - " self.logger.info(\n", - " f\" Tensor {tname} has weights with variance: {np.var(tensor.flatten())} \"\n", - " )\n", - " self.tensors[tname][step] = tensor\n", - " except:\n", - " self.logger.warning(f\"Can not fetch tensor {tname}\")\n", - " return False\n", - "\n", - "\n", - "trial = create_trial(folder_name)\n", - "rule = WeightRatio(trial)\n", - "try:\n", - " invoke_rule(rule)\n", - "except NoMoreData:\n", - " print(\n", - " \"The training has ended and there is no more data to be analyzed. This is expected behavior.\"\n", - " )" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Plot the histograms" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [], - "source": [ - "utils.create_interactive_matplotlib_histogram(rule.tensors, filename=\"images/weights.gif\")" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Image(url=\"images/weights.gif\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Inputs\n", - "\n", - "This rule retrieves layer inputs excluding activation inputs." - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[2020-04-27 22:32:04.465 f8455ab5c5ab:17 INFO local_trial.py:35] Loading trial debug-output at path /tmp/debug-output\n", - "[2020-04-27 22:32:04.478 f8455ab5c5ab:17 INFO rule_invoker.py:15] Started execution of rule Inputs at step 0\n", - "[2020-04-27 22:32:04.479 f8455ab5c5ab:17 INFO trial.py:198] Training has ended, will refresh one final time in 1 sec.\n", - "[2020-04-27 22:32:05.481 f8455ab5c5ab:17 INFO trial.py:210] Loaded all steps\n", - "[2020-04-27 22:32:05.484 f8455ab5c5ab:17 INFO :14] Tensor conv0_input_0 has inputs with variance: 1.0022085905075073 \n", - "[2020-04-27 22:32:05.486 f8455ab5c5ab:17 INFO :14] Tensor conv1_input_0 has inputs with variance: 4.837328910827637 \n", - "[2020-04-27 22:32:05.487 f8455ab5c5ab:17 INFO :14] Tensor dense0_input_0 has inputs with variance: 61.04131317138672 \n", - "[2020-04-27 22:32:05.489 f8455ab5c5ab:17 INFO :14] Tensor dense1_input_0 has inputs with variance: 4858.85498046875 \n", - "[2020-04-27 22:32:05.490 f8455ab5c5ab:17 INFO :14] Tensor dense2_input_0 has inputs with variance: 101189.0859375 \n", - "[2020-04-27 22:32:05.492 f8455ab5c5ab:17 INFO :14] Tensor flatten0_input_0 has inputs with variance: 61.04131317138672 \n", - "[2020-04-27 22:32:05.494 f8455ab5c5ab:17 INFO :14] Tensor hybridsequential0_input_0 has inputs with variance: 1.0022085905075073 \n", - "[2020-04-27 22:32:05.498 f8455ab5c5ab:17 INFO :14] Tensor pool0_input_0 has inputs with variance: 3.8557262420654297 \n", - "[2020-04-27 22:32:05.501 f8455ab5c5ab:17 INFO :14] Tensor pool1_input_0 has inputs with variance: 45.9383430480957 \n", - "[2020-04-27 22:32:05.502 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_input_0 has inputs with variance: 4755455.5 \n", - "[2020-04-27 22:32:05.503 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_input_1 has inputs with variance: 6.94427490234375 \n", - "[2020-04-27 22:32:05.507 f8455ab5c5ab:17 INFO :14] Tensor conv0_input_0 has inputs with variance: 1.0382660627365112 \n", - "[2020-04-27 22:32:05.509 f8455ab5c5ab:17 INFO :14] Tensor conv1_input_0 has inputs with variance: 0.9459593892097473 \n", - "[2020-04-27 22:32:05.511 f8455ab5c5ab:17 INFO :14] Tensor dense0_input_0 has inputs with variance: 0.17505891621112823 \n", - "[2020-04-27 22:32:05.512 f8455ab5c5ab:17 INFO :14] Tensor dense1_input_0 has inputs with variance: 7.910542964935303 \n", - "[2020-04-27 22:32:05.514 f8455ab5c5ab:17 INFO :14] Tensor dense2_input_0 has inputs with variance: 86.47700500488281 \n", - "[2020-04-27 22:32:05.515 f8455ab5c5ab:17 INFO :14] Tensor flatten0_input_0 has inputs with variance: 0.17505891621112823 \n", - "[2020-04-27 22:32:05.517 f8455ab5c5ab:17 INFO :14] Tensor hybridsequential0_input_0 has inputs with variance: 1.0382660627365112 \n", - "[2020-04-27 22:32:05.521 f8455ab5c5ab:17 INFO :14] Tensor pool0_input_0 has inputs with variance: 0.6746492981910706 \n", - "[2020-04-27 22:32:05.524 f8455ab5c5ab:17 INFO :14] Tensor pool1_input_0 has inputs with variance: 0.05903790891170502 \n", - "[2020-04-27 22:32:05.525 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_input_0 has inputs with variance: 2002.4222412109375 \n", - "[2020-04-27 22:32:05.527 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_input_1 has inputs with variance: 8.425537109375 \n", - "[2020-04-27 22:32:05.531 f8455ab5c5ab:17 INFO :14] Tensor conv0_input_0 has inputs with variance: 1.0198570489883423 \n", - "[2020-04-27 22:32:05.533 f8455ab5c5ab:17 INFO :14] Tensor conv1_input_0 has inputs with variance: 1.1717904806137085 \n", - "[2020-04-27 22:32:05.534 f8455ab5c5ab:17 INFO :14] Tensor dense0_input_0 has inputs with variance: 0.0001082921153283678 \n", - "[2020-04-27 22:32:05.536 f8455ab5c5ab:17 INFO :14] Tensor dense1_input_0 has inputs with variance: 0.006595073267817497 \n", - "[2020-04-27 22:32:05.537 f8455ab5c5ab:17 INFO :14] Tensor dense2_input_0 has inputs with variance: 0.08806044608354568 \n", - "[2020-04-27 22:32:05.539 f8455ab5c5ab:17 INFO :14] Tensor flatten0_input_0 has inputs with variance: 0.0001082921153283678 \n", - "[2020-04-27 22:32:05.541 f8455ab5c5ab:17 INFO :14] Tensor hybridsequential0_input_0 has inputs with variance: 1.0198570489883423 \n", - "[2020-04-27 22:32:05.545 f8455ab5c5ab:17 INFO :14] Tensor pool0_input_0 has inputs with variance: 0.9156947731971741 \n", - "[2020-04-27 22:32:05.547 f8455ab5c5ab:17 INFO :14] Tensor pool1_input_0 has inputs with variance: 2.707789644773584e-05 \n", - "[2020-04-27 22:32:05.548 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_input_0 has inputs with variance: 2.1487646102905273 \n", - "[2020-04-27 22:32:05.550 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_input_1 has inputs with variance: 9.058349609375 \n", - "[2020-04-27 22:32:05.554 f8455ab5c5ab:17 INFO :14] Tensor conv0_input_0 has inputs with variance: 1.0281227827072144 \n", - "[2020-04-27 22:32:05.556 f8455ab5c5ab:17 INFO :14] Tensor conv1_input_0 has inputs with variance: 1.253706932067871 \n", - "[2020-04-27 22:32:05.557 f8455ab5c5ab:17 INFO :14] Tensor dense0_input_0 has inputs with variance: 3.753396595129743e-05 \n", - "[2020-04-27 22:32:05.559 f8455ab5c5ab:17 INFO :14] Tensor dense1_input_0 has inputs with variance: 0.0021490983199328184 \n", - "[2020-04-27 22:32:05.560 f8455ab5c5ab:17 INFO :14] Tensor dense2_input_0 has inputs with variance: 0.044917792081832886 \n", - "[2020-04-27 22:32:05.562 f8455ab5c5ab:17 INFO :14] Tensor flatten0_input_0 has inputs with variance: 3.753396595129743e-05 \n", - "[2020-04-27 22:32:05.563 f8455ab5c5ab:17 INFO :14] Tensor hybridsequential0_input_0 has inputs with variance: 1.0281227827072144 \n", - "[2020-04-27 22:32:05.568 f8455ab5c5ab:17 INFO :14] Tensor pool0_input_0 has inputs with variance: 0.9761512875556946 \n", - "[2020-04-27 22:32:05.570 f8455ab5c5ab:17 INFO :14] Tensor pool1_input_0 has inputs with variance: 9.383727956446819e-06 \n", - "[2020-04-27 22:32:05.572 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_input_0 has inputs with variance: 0.8199729919433594 \n", - "[2020-04-27 22:32:05.573 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_input_1 has inputs with variance: 8.21331787109375 \n", - "[2020-04-27 22:32:05.577 f8455ab5c5ab:17 INFO :14] Tensor conv0_input_0 has inputs with variance: 0.9971755743026733 \n", - "[2020-04-27 22:32:05.579 f8455ab5c5ab:17 INFO :14] Tensor conv1_input_0 has inputs with variance: 1.2787492275238037 \n", - "[2020-04-27 22:32:05.581 f8455ab5c5ab:17 INFO :14] Tensor dense0_input_0 has inputs with variance: 6.2718777371628676e-06 \n", - "[2020-04-27 22:32:05.582 f8455ab5c5ab:17 INFO :14] Tensor dense1_input_0 has inputs with variance: 0.0003672760212793946 \n", - "[2020-04-27 22:32:05.584 f8455ab5c5ab:17 INFO :14] Tensor dense2_input_0 has inputs with variance: 0.0041027916595339775 \n", - "[2020-04-27 22:32:05.585 f8455ab5c5ab:17 INFO :14] Tensor flatten0_input_0 has inputs with variance: 6.2718777371628676e-06 \n", - "[2020-04-27 22:32:05.587 f8455ab5c5ab:17 INFO :14] Tensor hybridsequential0_input_0 has inputs with variance: 0.9971755743026733 \n", - "[2020-04-27 22:32:05.591 f8455ab5c5ab:17 INFO :14] Tensor pool0_input_0 has inputs with variance: 0.9919278025627136 \n", - "[2020-04-27 22:32:05.594 f8455ab5c5ab:17 INFO :14] Tensor pool1_input_0 has inputs with variance: 1.5680340084145428e-06 \n", - "[2020-04-27 22:32:05.595 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_input_0 has inputs with variance: 0.06334616988897324 \n", - "[2020-04-27 22:32:05.597 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_input_1 has inputs with variance: 7.45159912109375 \n", - "[2020-04-27 22:32:05.601 f8455ab5c5ab:17 INFO :14] Tensor conv0_input_0 has inputs with variance: 0.9978470206260681 \n", - "[2020-04-27 22:32:05.603 f8455ab5c5ab:17 INFO :14] Tensor conv1_input_0 has inputs with variance: 1.3073381185531616 \n", - "[2020-04-27 22:32:05.604 f8455ab5c5ab:17 INFO :14] Tensor dense0_input_0 has inputs with variance: 0.00012139216414652765 \n", - "[2020-04-27 22:32:05.606 f8455ab5c5ab:17 INFO :14] Tensor dense1_input_0 has inputs with variance: 0.007483721245080233 \n", - "[2020-04-27 22:32:05.607 f8455ab5c5ab:17 INFO :14] Tensor dense2_input_0 has inputs with variance: 0.12912829220294952 \n", - "[2020-04-27 22:32:05.609 f8455ab5c5ab:17 INFO :14] Tensor flatten0_input_0 has inputs with variance: 0.00012139216414652765 \n", - "[2020-04-27 22:32:05.611 f8455ab5c5ab:17 INFO :14] Tensor hybridsequential0_input_0 has inputs with variance: 0.9978470206260681 \n", - "[2020-04-27 22:32:05.615 f8455ab5c5ab:17 INFO :14] Tensor pool0_input_0 has inputs with variance: 1.028836965560913 \n", - "[2020-04-27 22:32:05.617 f8455ab5c5ab:17 INFO :14] Tensor pool1_input_0 has inputs with variance: 3.0349472581292503e-05 \n", - "[2020-04-27 22:32:05.619 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_input_0 has inputs with variance: 1.7704318761825562 \n", - "[2020-04-27 22:32:05.620 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_input_1 has inputs with variance: 7.39056396484375 \n", - "[2020-04-27 22:32:05.624 f8455ab5c5ab:17 INFO :14] Tensor conv0_input_0 has inputs with variance: 1.008055567741394 \n", - "[2020-04-27 22:32:05.626 f8455ab5c5ab:17 INFO :14] Tensor conv1_input_0 has inputs with variance: 1.3306946754455566 \n", - "[2020-04-27 22:32:05.628 f8455ab5c5ab:17 INFO :14] Tensor dense0_input_0 has inputs with variance: 3.252170444056901e-08 \n", - "[2020-04-27 22:32:05.629 f8455ab5c5ab:17 INFO :14] Tensor dense1_input_0 has inputs with variance: 2.365610998822376e-05 \n", - "[2020-04-27 22:32:05.630 f8455ab5c5ab:17 INFO :14] Tensor dense2_input_0 has inputs with variance: 0.00015047297347337008 \n", - "[2020-04-27 22:32:05.632 f8455ab5c5ab:17 INFO :14] Tensor flatten0_input_0 has inputs with variance: 3.252170444056901e-08 \n", - "[2020-04-27 22:32:05.634 f8455ab5c5ab:17 INFO :14] Tensor hybridsequential0_input_0 has inputs with variance: 1.008055567741394 \n", - "[2020-04-27 22:32:05.638 f8455ab5c5ab:17 INFO :14] Tensor pool0_input_0 has inputs with variance: 1.0411734580993652 \n", - "[2020-04-27 22:32:05.640 f8455ab5c5ab:17 INFO :14] Tensor pool1_input_0 has inputs with variance: 8.130546014228912e-09 \n", - "[2020-04-27 22:32:05.642 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_input_0 has inputs with variance: 0.002294825157150626 \n", - "[2020-04-27 22:32:05.643 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_input_1 has inputs with variance: 9.003662109375 \n", - "[2020-04-27 22:32:05.648 f8455ab5c5ab:17 INFO :14] Tensor conv0_input_0 has inputs with variance: 1.0232324600219727 \n", - "[2020-04-27 22:32:05.650 f8455ab5c5ab:17 INFO :14] Tensor conv1_input_0 has inputs with variance: 1.3793084621429443 \n", - "[2020-04-27 22:32:05.651 f8455ab5c5ab:17 INFO :14] Tensor dense0_input_0 has inputs with variance: 4.94571509079833e-07 \n", - "[2020-04-27 22:32:05.653 f8455ab5c5ab:17 INFO :14] Tensor dense1_input_0 has inputs with variance: 4.7780114982742816e-05 \n", - "[2020-04-27 22:32:05.654 f8455ab5c5ab:17 INFO :14] Tensor dense2_input_0 has inputs with variance: 0.00031508668325841427 \n", - "[2020-04-27 22:32:05.656 f8455ab5c5ab:17 INFO :14] Tensor flatten0_input_0 has inputs with variance: 4.94571509079833e-07 \n", - "[2020-04-27 22:32:05.660 f8455ab5c5ab:17 INFO :14] Tensor hybridsequential0_input_0 has inputs with variance: 1.0232324600219727 \n", - "[2020-04-27 22:32:05.664 f8455ab5c5ab:17 INFO :14] Tensor pool0_input_0 has inputs with variance: 1.0787978172302246 \n", - "[2020-04-27 22:32:05.667 f8455ab5c5ab:17 INFO :14] Tensor pool1_input_0 has inputs with variance: 1.2364471047021652e-07 \n", - "[2020-04-27 22:32:05.668 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_input_0 has inputs with variance: 0.0036758738569915295 \n", - "[2020-04-27 22:32:05.669 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_input_1 has inputs with variance: 8.27044677734375 \n", - "[2020-04-27 22:32:05.674 f8455ab5c5ab:17 INFO :14] Tensor conv0_input_0 has inputs with variance: 0.9817230105400085 \n", - "[2020-04-27 22:32:05.676 f8455ab5c5ab:17 INFO :14] Tensor conv1_input_0 has inputs with variance: 1.331855058670044 \n", - "[2020-04-27 22:32:05.677 f8455ab5c5ab:17 INFO :14] Tensor dense0_input_0 has inputs with variance: 8.019285814953037e-06 \n", - "[2020-04-27 22:32:05.679 f8455ab5c5ab:17 INFO :14] Tensor dense1_input_0 has inputs with variance: 0.0005264292121864855 \n", - "[2020-04-27 22:32:05.680 f8455ab5c5ab:17 INFO :14] Tensor dense2_input_0 has inputs with variance: 0.006017645820975304 \n", - "[2020-04-27 22:32:05.682 f8455ab5c5ab:17 INFO :14] Tensor flatten0_input_0 has inputs with variance: 8.019285814953037e-06 \n", - "[2020-04-27 22:32:05.684 f8455ab5c5ab:17 INFO :14] Tensor hybridsequential0_input_0 has inputs with variance: 0.9817230105400085 \n", - "[2020-04-27 22:32:05.688 f8455ab5c5ab:17 INFO :14] Tensor pool0_input_0 has inputs with variance: 1.0465368032455444 \n", - "[2020-04-27 22:32:05.691 f8455ab5c5ab:17 INFO :14] Tensor pool1_input_0 has inputs with variance: 2.004851694437093e-06 \n", - "[2020-04-27 22:32:05.693 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_input_0 has inputs with variance: 0.04721779003739357 \n", - "[2020-04-27 22:32:05.694 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_input_1 has inputs with variance: 8.9287109375 \n", - "[2020-04-27 22:32:05.698 f8455ab5c5ab:17 INFO :14] Tensor conv0_input_0 has inputs with variance: 1.0242054462432861 \n", - "[2020-04-27 22:32:05.700 f8455ab5c5ab:17 INFO :14] Tensor conv1_input_0 has inputs with variance: 1.378627061843872 \n", - "[2020-04-27 22:32:05.702 f8455ab5c5ab:17 INFO :14] Tensor dense0_input_0 has inputs with variance: 2.1695792383980006e-05 \n", - "[2020-04-27 22:32:05.703 f8455ab5c5ab:17 INFO :14] Tensor dense1_input_0 has inputs with variance: 0.001327343052253127 \n", - "[2020-04-27 22:32:05.705 f8455ab5c5ab:17 INFO :14] Tensor dense2_input_0 has inputs with variance: 0.018383827060461044 \n", - "[2020-04-27 22:32:05.706 f8455ab5c5ab:17 INFO :14] Tensor flatten0_input_0 has inputs with variance: 2.1695792383980006e-05 \n", - "[2020-04-27 22:32:05.708 f8455ab5c5ab:17 INFO :14] Tensor hybridsequential0_input_0 has inputs with variance: 1.0242054462432861 \n", - "[2020-04-27 22:32:05.713 f8455ab5c5ab:17 INFO :14] Tensor pool0_input_0 has inputs with variance: 1.0938211679458618 \n", - "[2020-04-27 22:32:05.715 f8455ab5c5ab:17 INFO :14] Tensor pool1_input_0 has inputs with variance: 5.424161372502567e-06 \n", - "[2020-04-27 22:32:05.717 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_input_0 has inputs with variance: 0.31357529759407043 \n", - "[2020-04-27 22:32:05.718 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_input_1 has inputs with variance: 7.96673583984375 \n", - "[2020-04-27 22:32:05.722 f8455ab5c5ab:17 INFO :14] Tensor conv0_input_0 has inputs with variance: 0.9887260794639587 \n", - "[2020-04-27 22:32:05.724 f8455ab5c5ab:17 INFO :14] Tensor conv1_input_0 has inputs with variance: 1.371474266052246 \n", - "[2020-04-27 22:32:05.726 f8455ab5c5ab:17 INFO :14] Tensor dense0_input_0 has inputs with variance: 1.5929039363982156e-05 \n", - "[2020-04-27 22:32:05.728 f8455ab5c5ab:17 INFO :14] Tensor dense1_input_0 has inputs with variance: 0.0008869253215380013 \n", - "[2020-04-27 22:32:05.729 f8455ab5c5ab:17 INFO :14] Tensor dense2_input_0 has inputs with variance: 0.016046544536948204 \n", - "[2020-04-27 22:32:05.731 f8455ab5c5ab:17 INFO :14] Tensor flatten0_input_0 has inputs with variance: 1.5929039363982156e-05 \n", - "[2020-04-27 22:32:05.733 f8455ab5c5ab:17 INFO :14] Tensor hybridsequential0_input_0 has inputs with variance: 0.9887260794639587 \n", - "[2020-04-27 22:32:05.737 f8455ab5c5ab:17 INFO :14] Tensor pool0_input_0 has inputs with variance: 1.0736607313156128 \n", - "[2020-04-27 22:32:05.740 f8455ab5c5ab:17 INFO :14] Tensor pool1_input_0 has inputs with variance: 3.982330781582277e-06 \n", - "[2020-04-27 22:32:05.741 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_input_0 has inputs with variance: 0.4613666534423828 \n", - "[2020-04-27 22:32:05.743 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_input_1 has inputs with variance: 7.71478271484375 \n", - "[2020-04-27 22:32:05.747 f8455ab5c5ab:17 INFO :14] Tensor conv0_input_0 has inputs with variance: 1.044722557067871 \n", - "[2020-04-27 22:32:05.749 f8455ab5c5ab:17 INFO :14] Tensor conv1_input_0 has inputs with variance: 1.4431350231170654 \n", - "[2020-04-27 22:32:05.751 f8455ab5c5ab:17 INFO :14] Tensor dense0_input_0 has inputs with variance: 3.6252138670533895e-05 \n", - "[2020-04-27 22:32:05.752 f8455ab5c5ab:17 INFO :14] Tensor dense1_input_0 has inputs with variance: 0.002536121755838394 \n", - "[2020-04-27 22:32:05.754 f8455ab5c5ab:17 INFO :14] Tensor dense2_input_0 has inputs with variance: 0.03773382306098938 \n", - "[2020-04-27 22:32:05.755 f8455ab5c5ab:17 INFO :14] Tensor flatten0_input_0 has inputs with variance: 3.6252138670533895e-05 \n", - "[2020-04-27 22:32:05.757 f8455ab5c5ab:17 INFO :14] Tensor hybridsequential0_input_0 has inputs with variance: 1.044722557067871 \n", - "[2020-04-27 22:32:05.764 f8455ab5c5ab:17 INFO :14] Tensor pool0_input_0 has inputs with variance: 1.1411879062652588 \n", - "[2020-04-27 22:32:05.767 f8455ab5c5ab:17 INFO :14] Tensor pool1_input_0 has inputs with variance: 9.063288416655269e-06 \n", - "[2020-04-27 22:32:05.769 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_input_0 has inputs with variance: 0.8734733462333679 \n", - "[2020-04-27 22:32:05.770 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_input_1 has inputs with variance: 9.15234375 \n", - "[2020-04-27 22:32:05.775 f8455ab5c5ab:17 INFO :14] Tensor conv0_input_0 has inputs with variance: 1.0004746913909912 \n", - "[2020-04-27 22:32:05.777 f8455ab5c5ab:17 INFO :14] Tensor conv1_input_0 has inputs with variance: 1.396453857421875 \n", - "[2020-04-27 22:32:05.778 f8455ab5c5ab:17 INFO :14] Tensor dense0_input_0 has inputs with variance: 2.1215093966020504e-06 \n", - "[2020-04-27 22:32:05.780 f8455ab5c5ab:17 INFO :14] Tensor dense1_input_0 has inputs with variance: 0.00013638548261951655 \n", - "[2020-04-27 22:32:05.781 f8455ab5c5ab:17 INFO :14] Tensor dense2_input_0 has inputs with variance: 0.0017073529306799173 \n", - "[2020-04-27 22:32:05.783 f8455ab5c5ab:17 INFO :14] Tensor flatten0_input_0 has inputs with variance: 2.1215093966020504e-06 \n", - "[2020-04-27 22:32:05.785 f8455ab5c5ab:17 INFO :14] Tensor hybridsequential0_input_0 has inputs with variance: 1.0004746913909912 \n", - "[2020-04-27 22:32:05.792 f8455ab5c5ab:17 INFO :14] Tensor pool0_input_0 has inputs with variance: 1.0999025106430054 \n", - "[2020-04-27 22:32:05.795 f8455ab5c5ab:17 INFO :14] Tensor pool1_input_0 has inputs with variance: 5.303852503857343e-07 \n", - "[2020-04-27 22:32:05.797 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_input_0 has inputs with variance: 0.018587639555335045 \n", - "[2020-04-27 22:32:05.798 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_input_1 has inputs with variance: 7.761474609375 \n", - "[2020-04-27 22:32:05.806 f8455ab5c5ab:17 INFO :14] Tensor conv0_input_0 has inputs with variance: 1.033023476600647 \n", - "[2020-04-27 22:32:05.808 f8455ab5c5ab:17 INFO :14] Tensor conv1_input_0 has inputs with variance: 1.4274266958236694 \n", - "[2020-04-27 22:32:05.810 f8455ab5c5ab:17 INFO :14] Tensor dense0_input_0 has inputs with variance: 1.6721925931051373e-05 \n", - "[2020-04-27 22:32:05.811 f8455ab5c5ab:17 INFO :14] Tensor dense1_input_0 has inputs with variance: 0.0012562214396893978 \n", - "[2020-04-27 22:32:05.813 f8455ab5c5ab:17 INFO :14] Tensor dense2_input_0 has inputs with variance: 0.015492375008761883 \n", - "[2020-04-27 22:32:05.814 f8455ab5c5ab:17 INFO :14] Tensor flatten0_input_0 has inputs with variance: 1.6721925931051373e-05 \n", - "[2020-04-27 22:32:05.816 f8455ab5c5ab:17 INFO :14] Tensor hybridsequential0_input_0 has inputs with variance: 1.033023476600647 \n", - "[2020-04-27 22:32:05.824 f8455ab5c5ab:17 INFO :14] Tensor pool0_input_0 has inputs with variance: 1.1269475221633911 \n", - "[2020-04-27 22:32:05.826 f8455ab5c5ab:17 INFO :14] Tensor pool1_input_0 has inputs with variance: 4.180543328402564e-06 \n", - "[2020-04-27 22:32:05.828 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_input_0 has inputs with variance: 0.15919239819049835 \n", - "[2020-04-27 22:32:05.829 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_input_1 has inputs with variance: 8.51171875 \n", - "[2020-04-27 22:32:05.834 f8455ab5c5ab:17 INFO :14] Tensor conv0_input_0 has inputs with variance: 1.0635137557983398 \n", - "[2020-04-27 22:32:05.836 f8455ab5c5ab:17 INFO :14] Tensor conv1_input_0 has inputs with variance: 1.4563753604888916 \n", - "[2020-04-27 22:32:05.838 f8455ab5c5ab:17 INFO :14] Tensor dense0_input_0 has inputs with variance: 8.708776476851199e-06 \n", - "[2020-04-27 22:32:05.839 f8455ab5c5ab:17 INFO :14] Tensor dense1_input_0 has inputs with variance: 0.0006208218983374536 \n", - "[2020-04-27 22:32:05.841 f8455ab5c5ab:17 INFO :14] Tensor dense2_input_0 has inputs with variance: 0.007469493895769119 \n", - "[2020-04-27 22:32:05.842 f8455ab5c5ab:17 INFO :14] Tensor flatten0_input_0 has inputs with variance: 8.708776476851199e-06 \n", - "[2020-04-27 22:32:05.844 f8455ab5c5ab:17 INFO :14] Tensor hybridsequential0_input_0 has inputs with variance: 1.0635137557983398 \n", - "[2020-04-27 22:32:05.851 f8455ab5c5ab:17 INFO :14] Tensor pool0_input_0 has inputs with variance: 1.1511449813842773 \n", - "[2020-04-27 22:32:05.853 f8455ab5c5ab:17 INFO :14] Tensor pool1_input_0 has inputs with variance: 2.177228680011467e-06 \n", - "[2020-04-27 22:32:05.855 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_input_0 has inputs with variance: 0.1533646434545517 \n", - "[2020-04-27 22:32:05.856 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_input_1 has inputs with variance: 7.86468505859375 \n", - "The training has ended and there is no more data to be analyzed. This is expected behavior.\n" - ] - } - ], - "source": [ - "class Inputs(Rule):\n", - " def __init__(\n", - " self,\n", - " base_trial,\n", - " ):\n", - " super().__init__(base_trial)\n", - " self.tensors = collections.OrderedDict()\n", - "\n", - " def invoke_at_step(self, step):\n", - " for tname in self.base_trial.tensor_names(regex=\".*input\"):\n", - " if \"relu\" not in tname:\n", - " try:\n", - " tensor = self.base_trial.tensor(tname).value(step)\n", - " if tname not in self.tensors:\n", - " self.tensors[tname] = {}\n", - "\n", - " self.logger.info(\n", - " f\" Tensor {tname} has inputs with variance: {np.var(tensor.flatten())} \"\n", - " )\n", - " self.tensors[tname][step] = tensor\n", - " except:\n", - " self.logger.warning(f\"Can not fetch tensor {tname}\")\n", - " return False\n", - "\n", - "\n", - "trial = create_trial(folder_name)\n", - "rule = Inputs(trial)\n", - "try:\n", - " invoke_rule(rule)\n", - "except NoMoreData:\n", - " print(\n", - " \"The training has ended and there is no more data to be analyzed. This is expected behavior.\"\n", - " )" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Plot the histograms" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [], - "source": [ - "utils.create_interactive_matplotlib_histogram(rule.tensors, filename=\"images/layer_inputs.gif\")" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Image(url=\"images/layer_inputs.gif\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Layer outputs\n", - "This rule retrieves outputs of layers excluding activation outputs." - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[2020-04-27 22:32:42.983 f8455ab5c5ab:17 INFO local_trial.py:35] Loading trial debug-output at path /tmp/debug-output\n", - "[2020-04-27 22:32:42.998 f8455ab5c5ab:17 INFO rule_invoker.py:15] Started execution of rule Outputs at step 0\n", - "[2020-04-27 22:32:43.002 f8455ab5c5ab:17 INFO trial.py:198] Training has ended, will refresh one final time in 1 sec.\n", - "[2020-04-27 22:32:44.004 f8455ab5c5ab:17 INFO trial.py:210] Loaded all steps\n", - "[2020-04-27 22:32:44.009 f8455ab5c5ab:17 INFO :14] Tensor conv0_output_0 has inputs with variance: 3.8557262420654297 \n", - "[2020-04-27 22:32:44.012 f8455ab5c5ab:17 INFO :14] Tensor conv1_output_0 has inputs with variance: 45.9383430480957 \n", - "[2020-04-27 22:32:44.013 f8455ab5c5ab:17 INFO :14] Tensor dense0_output_0 has inputs with variance: 4858.85498046875 \n", - "[2020-04-27 22:32:44.014 f8455ab5c5ab:17 INFO :14] Tensor dense1_output_0 has inputs with variance: 101189.0859375 \n", - "[2020-04-27 22:32:44.015 f8455ab5c5ab:17 INFO :14] Tensor dense2_output_0 has inputs with variance: 4755455.5 \n", - "[2020-04-27 22:32:44.017 f8455ab5c5ab:17 INFO :14] Tensor flatten0_output_0 has inputs with variance: 61.04131317138672 \n", - "[2020-04-27 22:32:44.018 f8455ab5c5ab:17 INFO :14] Tensor hybridsequential0_output_0 has inputs with variance: 4755455.5 \n", - "[2020-04-27 22:32:44.019 f8455ab5c5ab:17 INFO :14] Tensor pool0_output_0 has inputs with variance: 4.837328910827637 \n", - "[2020-04-27 22:32:44.021 f8455ab5c5ab:17 INFO :14] Tensor pool1_output_0 has inputs with variance: 61.04131317138672 \n", - "[2020-04-27 22:32:44.022 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_output_0 has inputs with variance: 5444150.0 \n", - "[2020-04-27 22:32:44.028 f8455ab5c5ab:17 INFO :14] Tensor conv0_output_0 has inputs with variance: 0.6746492981910706 \n", - "[2020-04-27 22:32:44.030 f8455ab5c5ab:17 INFO :14] Tensor conv1_output_0 has inputs with variance: 0.05903790891170502 \n", - "[2020-04-27 22:32:44.031 f8455ab5c5ab:17 INFO :14] Tensor dense0_output_0 has inputs with variance: 7.910542964935303 \n", - "[2020-04-27 22:32:44.033 f8455ab5c5ab:17 INFO :14] Tensor dense1_output_0 has inputs with variance: 86.47700500488281 \n", - "[2020-04-27 22:32:44.034 f8455ab5c5ab:17 INFO :14] Tensor dense2_output_0 has inputs with variance: 2002.4222412109375 \n", - "[2020-04-27 22:32:44.035 f8455ab5c5ab:17 INFO :14] Tensor flatten0_output_0 has inputs with variance: 0.17505891621112823 \n", - "[2020-04-27 22:32:44.036 f8455ab5c5ab:17 INFO :14] Tensor hybridsequential0_output_0 has inputs with variance: 2002.4222412109375 \n", - "[2020-04-27 22:32:44.038 f8455ab5c5ab:17 INFO :14] Tensor pool0_output_0 has inputs with variance: 0.9459593892097473 \n", - "[2020-04-27 22:32:44.039 f8455ab5c5ab:17 INFO :14] Tensor pool1_output_0 has inputs with variance: 0.17505891621112823 \n", - "[2020-04-27 22:32:44.040 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_output_0 has inputs with variance: 1036.709228515625 \n", - "[2020-04-27 22:32:44.046 f8455ab5c5ab:17 INFO :14] Tensor conv0_output_0 has inputs with variance: 0.9156947731971741 \n", - "[2020-04-27 22:32:44.048 f8455ab5c5ab:17 INFO :14] Tensor conv1_output_0 has inputs with variance: 2.707789644773584e-05 \n", - "[2020-04-27 22:32:44.050 f8455ab5c5ab:17 INFO :14] Tensor dense0_output_0 has inputs with variance: 0.006595073267817497 \n", - "[2020-04-27 22:32:44.051 f8455ab5c5ab:17 INFO :14] Tensor dense1_output_0 has inputs with variance: 0.08806044608354568 \n", - "[2020-04-27 22:32:44.052 f8455ab5c5ab:17 INFO :14] Tensor dense2_output_0 has inputs with variance: 2.1487646102905273 \n", - "[2020-04-27 22:32:44.053 f8455ab5c5ab:17 INFO :14] Tensor flatten0_output_0 has inputs with variance: 0.0001082921153283678 \n", - "[2020-04-27 22:32:44.055 f8455ab5c5ab:17 INFO :14] Tensor hybridsequential0_output_0 has inputs with variance: 2.1487646102905273 \n", - "[2020-04-27 22:32:44.056 f8455ab5c5ab:17 INFO :14] Tensor pool0_output_0 has inputs with variance: 1.1717904806137085 \n", - "[2020-04-27 22:32:44.058 f8455ab5c5ab:17 INFO :14] Tensor pool1_output_0 has inputs with variance: 0.0001082921153283678 \n", - "[2020-04-27 22:32:44.059 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_output_0 has inputs with variance: 2.7193961143493652 \n", - "[2020-04-27 22:32:44.064 f8455ab5c5ab:17 INFO :14] Tensor conv0_output_0 has inputs with variance: 0.9761512875556946 \n", - "[2020-04-27 22:32:44.067 f8455ab5c5ab:17 INFO :14] Tensor conv1_output_0 has inputs with variance: 9.383727956446819e-06 \n", - "[2020-04-27 22:32:44.068 f8455ab5c5ab:17 INFO :14] Tensor dense0_output_0 has inputs with variance: 0.0021490983199328184 \n", - "[2020-04-27 22:32:44.069 f8455ab5c5ab:17 INFO :14] Tensor dense1_output_0 has inputs with variance: 0.044917792081832886 \n", - "[2020-04-27 22:32:44.071 f8455ab5c5ab:17 INFO :14] Tensor dense2_output_0 has inputs with variance: 0.8199729919433594 \n", - "[2020-04-27 22:32:44.072 f8455ab5c5ab:17 INFO :14] Tensor flatten0_output_0 has inputs with variance: 3.753396595129743e-05 \n", - "[2020-04-27 22:32:44.073 f8455ab5c5ab:17 INFO :14] Tensor hybridsequential0_output_0 has inputs with variance: 0.8199729919433594 \n", - "[2020-04-27 22:32:44.075 f8455ab5c5ab:17 INFO :14] Tensor pool0_output_0 has inputs with variance: 1.253706932067871 \n", - "[2020-04-27 22:32:44.076 f8455ab5c5ab:17 INFO :14] Tensor pool1_output_0 has inputs with variance: 3.753396595129743e-05 \n", - "[2020-04-27 22:32:44.077 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_output_0 has inputs with variance: 3.8310861587524414 \n", - "[2020-04-27 22:32:44.084 f8455ab5c5ab:17 INFO :14] Tensor conv0_output_0 has inputs with variance: 0.9919278025627136 \n", - "[2020-04-27 22:32:44.086 f8455ab5c5ab:17 INFO :14] Tensor conv1_output_0 has inputs with variance: 1.5680340084145428e-06 \n", - "[2020-04-27 22:32:44.087 f8455ab5c5ab:17 INFO :14] Tensor dense0_output_0 has inputs with variance: 0.0003672760212793946 \n", - "[2020-04-27 22:32:44.092 f8455ab5c5ab:17 INFO :14] Tensor dense1_output_0 has inputs with variance: 0.0041027916595339775 \n", - "[2020-04-27 22:32:44.093 f8455ab5c5ab:17 INFO :14] Tensor dense2_output_0 has inputs with variance: 0.06334616988897324 \n", - "[2020-04-27 22:32:44.094 f8455ab5c5ab:17 INFO :14] Tensor flatten0_output_0 has inputs with variance: 6.2718777371628676e-06 \n", - "[2020-04-27 22:32:44.096 f8455ab5c5ab:17 INFO :14] Tensor hybridsequential0_output_0 has inputs with variance: 0.06334616988897324 \n", - "[2020-04-27 22:32:44.097 f8455ab5c5ab:17 INFO :14] Tensor pool0_output_0 has inputs with variance: 1.2787492275238037 \n", - "[2020-04-27 22:32:44.099 f8455ab5c5ab:17 INFO :14] Tensor pool1_output_0 has inputs with variance: 6.2718777371628676e-06 \n", - "[2020-04-27 22:32:44.100 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_output_0 has inputs with variance: 0.08870527893304825 \n", - "[2020-04-27 22:32:44.106 f8455ab5c5ab:17 INFO :14] Tensor conv0_output_0 has inputs with variance: 1.028836965560913 \n", - "[2020-04-27 22:32:44.109 f8455ab5c5ab:17 INFO :14] Tensor conv1_output_0 has inputs with variance: 3.0349472581292503e-05 \n", - "[2020-04-27 22:32:44.110 f8455ab5c5ab:17 INFO :14] Tensor dense0_output_0 has inputs with variance: 0.007483721245080233 \n", - "[2020-04-27 22:32:44.111 f8455ab5c5ab:17 INFO :14] Tensor dense1_output_0 has inputs with variance: 0.12912829220294952 \n", - "[2020-04-27 22:32:44.112 f8455ab5c5ab:17 INFO :14] Tensor dense2_output_0 has inputs with variance: 1.7704318761825562 \n", - "[2020-04-27 22:32:44.114 f8455ab5c5ab:17 INFO :14] Tensor flatten0_output_0 has inputs with variance: 0.00012139216414652765 \n", - "[2020-04-27 22:32:44.115 f8455ab5c5ab:17 INFO :14] Tensor hybridsequential0_output_0 has inputs with variance: 1.7704318761825562 \n", - "[2020-04-27 22:32:44.116 f8455ab5c5ab:17 INFO :14] Tensor pool0_output_0 has inputs with variance: 1.3073381185531616 \n", - "[2020-04-27 22:32:44.118 f8455ab5c5ab:17 INFO :14] Tensor pool1_output_0 has inputs with variance: 0.00012139216414652765 \n", - "[2020-04-27 22:32:44.119 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_output_0 has inputs with variance: 1.3741402626037598 \n", - "[2020-04-27 22:32:44.125 f8455ab5c5ab:17 INFO :14] Tensor conv0_output_0 has inputs with variance: 1.0411734580993652 \n", - "[2020-04-27 22:32:44.128 f8455ab5c5ab:17 INFO :14] Tensor conv1_output_0 has inputs with variance: 8.130546014228912e-09 \n", - "[2020-04-27 22:32:44.129 f8455ab5c5ab:17 INFO :14] Tensor dense0_output_0 has inputs with variance: 2.365610998822376e-05 \n", - "[2020-04-27 22:32:44.130 f8455ab5c5ab:17 INFO :14] Tensor dense1_output_0 has inputs with variance: 0.00015047297347337008 \n", - "[2020-04-27 22:32:44.132 f8455ab5c5ab:17 INFO :14] Tensor dense2_output_0 has inputs with variance: 0.002294825157150626 \n", - "[2020-04-27 22:32:44.133 f8455ab5c5ab:17 INFO :14] Tensor flatten0_output_0 has inputs with variance: 3.252170444056901e-08 \n", - "[2020-04-27 22:32:44.134 f8455ab5c5ab:17 INFO :14] Tensor hybridsequential0_output_0 has inputs with variance: 0.002294825157150626 \n", - "[2020-04-27 22:32:44.136 f8455ab5c5ab:17 INFO :14] Tensor pool0_output_0 has inputs with variance: 1.3306946754455566 \n", - "[2020-04-27 22:32:44.137 f8455ab5c5ab:17 INFO :14] Tensor pool1_output_0 has inputs with variance: 3.252170444056901e-08 \n", - "[2020-04-27 22:32:44.138 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_output_0 has inputs with variance: 0.002003903966397047 \n", - "[2020-04-27 22:32:44.144 f8455ab5c5ab:17 INFO :14] Tensor conv0_output_0 has inputs with variance: 1.0787978172302246 \n", - "[2020-04-27 22:32:44.147 f8455ab5c5ab:17 INFO :14] Tensor conv1_output_0 has inputs with variance: 1.2364471047021652e-07 \n", - "[2020-04-27 22:32:44.148 f8455ab5c5ab:17 INFO :14] Tensor dense0_output_0 has inputs with variance: 4.7780114982742816e-05 \n", - "[2020-04-27 22:32:44.150 f8455ab5c5ab:17 INFO :14] Tensor dense1_output_0 has inputs with variance: 0.00031508668325841427 \n", - "[2020-04-27 22:32:44.151 f8455ab5c5ab:17 INFO :14] Tensor dense2_output_0 has inputs with variance: 0.0036758738569915295 \n", - "[2020-04-27 22:32:44.152 f8455ab5c5ab:17 INFO :14] Tensor flatten0_output_0 has inputs with variance: 4.94571509079833e-07 \n", - "[2020-04-27 22:32:44.153 f8455ab5c5ab:17 INFO :14] Tensor hybridsequential0_output_0 has inputs with variance: 0.0036758738569915295 \n", - "[2020-04-27 22:32:44.155 f8455ab5c5ab:17 INFO :14] Tensor pool0_output_0 has inputs with variance: 1.3793084621429443 \n", - "[2020-04-27 22:32:44.157 f8455ab5c5ab:17 INFO :14] Tensor pool1_output_0 has inputs with variance: 4.94571509079833e-07 \n", - "[2020-04-27 22:32:44.158 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_output_0 has inputs with variance: 0.001982209738343954 \n", - "[2020-04-27 22:32:44.164 f8455ab5c5ab:17 INFO :14] Tensor conv0_output_0 has inputs with variance: 1.0465368032455444 \n", - "[2020-04-27 22:32:44.167 f8455ab5c5ab:17 INFO :14] Tensor conv1_output_0 has inputs with variance: 2.004851694437093e-06 \n", - "[2020-04-27 22:32:44.168 f8455ab5c5ab:17 INFO :14] Tensor dense0_output_0 has inputs with variance: 0.0005264292121864855 \n", - "[2020-04-27 22:32:44.169 f8455ab5c5ab:17 INFO :14] Tensor dense1_output_0 has inputs with variance: 0.006017645820975304 \n", - "[2020-04-27 22:32:44.170 f8455ab5c5ab:17 INFO :14] Tensor dense2_output_0 has inputs with variance: 0.04721779003739357 \n", - "[2020-04-27 22:32:44.172 f8455ab5c5ab:17 INFO :14] Tensor flatten0_output_0 has inputs with variance: 8.019285814953037e-06 \n", - "[2020-04-27 22:32:44.173 f8455ab5c5ab:17 INFO :14] Tensor hybridsequential0_output_0 has inputs with variance: 0.04721779003739357 \n", - "[2020-04-27 22:32:44.177 f8455ab5c5ab:17 INFO :14] Tensor pool0_output_0 has inputs with variance: 1.331855058670044 \n", - "[2020-04-27 22:32:44.178 f8455ab5c5ab:17 INFO :14] Tensor pool1_output_0 has inputs with variance: 8.019285814953037e-06 \n", - "[2020-04-27 22:32:44.179 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_output_0 has inputs with variance: 0.1639312207698822 \n", - "[2020-04-27 22:32:44.186 f8455ab5c5ab:17 INFO :14] Tensor conv0_output_0 has inputs with variance: 1.0938211679458618 \n", - "[2020-04-27 22:32:44.188 f8455ab5c5ab:17 INFO :14] Tensor conv1_output_0 has inputs with variance: 5.424161372502567e-06 \n", - "[2020-04-27 22:32:44.190 f8455ab5c5ab:17 INFO :14] Tensor dense0_output_0 has inputs with variance: 0.001327343052253127 \n", - "[2020-04-27 22:32:44.191 f8455ab5c5ab:17 INFO :14] Tensor dense1_output_0 has inputs with variance: 0.018383827060461044 \n", - "[2020-04-27 22:32:44.192 f8455ab5c5ab:17 INFO :14] Tensor dense2_output_0 has inputs with variance: 0.31357529759407043 \n", - "[2020-04-27 22:32:44.193 f8455ab5c5ab:17 INFO :14] Tensor flatten0_output_0 has inputs with variance: 2.1695792383980006e-05 \n", - "[2020-04-27 22:32:44.195 f8455ab5c5ab:17 INFO :14] Tensor hybridsequential0_output_0 has inputs with variance: 0.31357529759407043 \n", - "[2020-04-27 22:32:44.196 f8455ab5c5ab:17 INFO :14] Tensor pool0_output_0 has inputs with variance: 1.378627061843872 \n", - "[2020-04-27 22:32:44.198 f8455ab5c5ab:17 INFO :14] Tensor pool1_output_0 has inputs with variance: 2.1695792383980006e-05 \n", - "[2020-04-27 22:32:44.199 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_output_0 has inputs with variance: 0.30675774812698364 \n", - "[2020-04-27 22:32:44.205 f8455ab5c5ab:17 INFO :14] Tensor conv0_output_0 has inputs with variance: 1.0736607313156128 \n", - "[2020-04-27 22:32:44.208 f8455ab5c5ab:17 INFO :14] Tensor conv1_output_0 has inputs with variance: 3.982330781582277e-06 \n", - "[2020-04-27 22:32:44.209 f8455ab5c5ab:17 INFO :14] Tensor dense0_output_0 has inputs with variance: 0.0008869253215380013 \n", - "[2020-04-27 22:32:44.210 f8455ab5c5ab:17 INFO :14] Tensor dense1_output_0 has inputs with variance: 0.016046544536948204 \n", - "[2020-04-27 22:32:44.212 f8455ab5c5ab:17 INFO :14] Tensor dense2_output_0 has inputs with variance: 0.4613666534423828 \n", - "[2020-04-27 22:32:44.213 f8455ab5c5ab:17 INFO :14] Tensor flatten0_output_0 has inputs with variance: 1.5929039363982156e-05 \n", - "[2020-04-27 22:32:44.214 f8455ab5c5ab:17 INFO :14] Tensor hybridsequential0_output_0 has inputs with variance: 0.4613666534423828 \n", - "[2020-04-27 22:32:44.216 f8455ab5c5ab:17 INFO :14] Tensor pool0_output_0 has inputs with variance: 1.371474266052246 \n", - "[2020-04-27 22:32:44.218 f8455ab5c5ab:17 INFO :14] Tensor pool1_output_0 has inputs with variance: 1.5929039363982156e-05 \n", - "[2020-04-27 22:32:44.219 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_output_0 has inputs with variance: 0.04083283618092537 \n", - "[2020-04-27 22:32:44.225 f8455ab5c5ab:17 INFO :14] Tensor conv0_output_0 has inputs with variance: 1.1411879062652588 \n", - "[2020-04-27 22:32:44.228 f8455ab5c5ab:17 INFO :14] Tensor conv1_output_0 has inputs with variance: 9.063288416655269e-06 \n", - "[2020-04-27 22:32:44.229 f8455ab5c5ab:17 INFO :14] Tensor dense0_output_0 has inputs with variance: 0.002536121755838394 \n", - "[2020-04-27 22:32:44.230 f8455ab5c5ab:17 INFO :14] Tensor dense1_output_0 has inputs with variance: 0.03773382306098938 \n", - "[2020-04-27 22:32:44.231 f8455ab5c5ab:17 INFO :14] Tensor dense2_output_0 has inputs with variance: 0.8734733462333679 \n", - "[2020-04-27 22:32:44.233 f8455ab5c5ab:17 INFO :14] Tensor flatten0_output_0 has inputs with variance: 3.6252138670533895e-05 \n", - "[2020-04-27 22:32:44.234 f8455ab5c5ab:17 INFO :14] Tensor hybridsequential0_output_0 has inputs with variance: 0.8734733462333679 \n", - "[2020-04-27 22:32:44.236 f8455ab5c5ab:17 INFO :14] Tensor pool0_output_0 has inputs with variance: 1.4431350231170654 \n", - "[2020-04-27 22:32:44.237 f8455ab5c5ab:17 INFO :14] Tensor pool1_output_0 has inputs with variance: 3.6252138670533895e-05 \n", - "[2020-04-27 22:32:44.238 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_output_0 has inputs with variance: 0.043457046151161194 \n", - "[2020-04-27 22:32:44.245 f8455ab5c5ab:17 INFO :14] Tensor conv0_output_0 has inputs with variance: 1.0999025106430054 \n", - "[2020-04-27 22:32:44.247 f8455ab5c5ab:17 INFO :14] Tensor conv1_output_0 has inputs with variance: 5.303852503857343e-07 \n", - "[2020-04-27 22:32:44.249 f8455ab5c5ab:17 INFO :14] Tensor dense0_output_0 has inputs with variance: 0.00013638548261951655 \n", - "[2020-04-27 22:32:44.250 f8455ab5c5ab:17 INFO :14] Tensor dense1_output_0 has inputs with variance: 0.0017073529306799173 \n", - "[2020-04-27 22:32:44.251 f8455ab5c5ab:17 INFO :14] Tensor dense2_output_0 has inputs with variance: 0.018587639555335045 \n", - "[2020-04-27 22:32:44.253 f8455ab5c5ab:17 INFO :14] Tensor flatten0_output_0 has inputs with variance: 2.1215093966020504e-06 \n", - "[2020-04-27 22:32:44.254 f8455ab5c5ab:17 INFO :14] Tensor hybridsequential0_output_0 has inputs with variance: 0.018587639555335045 \n", - "[2020-04-27 22:32:44.256 f8455ab5c5ab:17 INFO :14] Tensor pool0_output_0 has inputs with variance: 1.396453857421875 \n", - "[2020-04-27 22:32:44.257 f8455ab5c5ab:17 INFO :14] Tensor pool1_output_0 has inputs with variance: 2.1215093966020504e-06 \n", - "[2020-04-27 22:32:44.258 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_output_0 has inputs with variance: 0.0009186549577862024 \n", - "[2020-04-27 22:32:44.265 f8455ab5c5ab:17 INFO :14] Tensor conv0_output_0 has inputs with variance: 1.1269475221633911 \n", - "[2020-04-27 22:32:44.267 f8455ab5c5ab:17 INFO :14] Tensor conv1_output_0 has inputs with variance: 4.180543328402564e-06 \n", - "[2020-04-27 22:32:44.269 f8455ab5c5ab:17 INFO :14] Tensor dense0_output_0 has inputs with variance: 0.0012562214396893978 \n", - "[2020-04-27 22:32:44.270 f8455ab5c5ab:17 INFO :14] Tensor dense1_output_0 has inputs with variance: 0.015492375008761883 \n", - "[2020-04-27 22:32:44.271 f8455ab5c5ab:17 INFO :14] Tensor dense2_output_0 has inputs with variance: 0.15919239819049835 \n", - "[2020-04-27 22:32:44.273 f8455ab5c5ab:17 INFO :14] Tensor flatten0_output_0 has inputs with variance: 1.6721925931051373e-05 \n", - "[2020-04-27 22:32:44.274 f8455ab5c5ab:17 INFO :14] Tensor hybridsequential0_output_0 has inputs with variance: 0.15919239819049835 \n", - "[2020-04-27 22:32:44.276 f8455ab5c5ab:17 INFO :14] Tensor pool0_output_0 has inputs with variance: 1.4274266958236694 \n", - "[2020-04-27 22:32:44.277 f8455ab5c5ab:17 INFO :14] Tensor pool1_output_0 has inputs with variance: 1.6721925931051373e-05 \n", - "[2020-04-27 22:32:44.278 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_output_0 has inputs with variance: 0.0026462958194315434 \n", - "[2020-04-27 22:32:44.285 f8455ab5c5ab:17 INFO :14] Tensor conv0_output_0 has inputs with variance: 1.1511449813842773 \n", - "[2020-04-27 22:32:44.287 f8455ab5c5ab:17 INFO :14] Tensor conv1_output_0 has inputs with variance: 2.177228680011467e-06 \n", - "[2020-04-27 22:32:44.289 f8455ab5c5ab:17 INFO :14] Tensor dense0_output_0 has inputs with variance: 0.0006208218983374536 \n", - "[2020-04-27 22:32:44.290 f8455ab5c5ab:17 INFO :14] Tensor dense1_output_0 has inputs with variance: 0.007469493895769119 \n", - "[2020-04-27 22:32:44.291 f8455ab5c5ab:17 INFO :14] Tensor dense2_output_0 has inputs with variance: 0.1533646434545517 \n", - "[2020-04-27 22:32:44.292 f8455ab5c5ab:17 INFO :14] Tensor flatten0_output_0 has inputs with variance: 8.708776476851199e-06 \n", - "[2020-04-27 22:32:44.294 f8455ab5c5ab:17 INFO :14] Tensor hybridsequential0_output_0 has inputs with variance: 0.1533646434545517 \n", - "[2020-04-27 22:32:44.295 f8455ab5c5ab:17 INFO :14] Tensor pool0_output_0 has inputs with variance: 1.4563753604888916 \n", - "[2020-04-27 22:32:44.297 f8455ab5c5ab:17 INFO :14] Tensor pool1_output_0 has inputs with variance: 8.708776476851199e-06 \n", - "[2020-04-27 22:32:44.298 f8455ab5c5ab:17 INFO :14] Tensor softmaxcrossentropyloss0_output_0 has inputs with variance: 0.38224971294403076 \n", - "The training has ended and there is no more data to be analyzed. This is expected behavior.\n" - ] - } - ], - "source": [ - "class Outputs(Rule):\n", - " def __init__(\n", - " self,\n", - " base_trial,\n", - " ):\n", - " super().__init__(base_trial)\n", - " self.tensors = collections.OrderedDict()\n", - "\n", - " def invoke_at_step(self, step):\n", - " for tname in self.base_trial.tensor_names(regex=\".*output\"):\n", - " if \"relu\" not in tname:\n", - " try:\n", - " tensor = self.base_trial.tensor(tname).value(step)\n", - " if tname not in self.tensors:\n", - " self.tensors[tname] = {}\n", - "\n", - " self.logger.info(\n", - " f\" Tensor {tname} has inputs with variance: {np.var(tensor.flatten())} \"\n", - " )\n", - " self.tensors[tname][step] = tensor\n", - " except:\n", - " self.logger.warning(f\"Can not fetch tensor {tname}\")\n", - " return False\n", - "\n", - "\n", - "trial = create_trial(folder_name)\n", - "rule = Outputs(trial)\n", - "try:\n", - " invoke_rule(rule)\n", - "except NoMoreData:\n", - " print(\n", - " \"The training has ended and there is no more data to be analyzed. This is expected behavior.\"\n", - " )" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Plot the histograms" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [], - "source": [ - "utils.create_interactive_matplotlib_histogram(rule.tensors, filename=\"images/layer_outputs.gif\")" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Image(url=\"images/layer_outputs.gif\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Comparison \n", - "In the previous section we have looked at the distribution of gradients, activation outputs and weights of a model that has not trained well due to poor initialization. Now we will compare some of these distributions with a model that has been well intialized." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "entry_point_script = \"mnist.py\"\n", - "hyperparameters = {\"lr\": 0.01}" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "estimator = MXNet(\n", - " role=sagemaker.get_execution_role(),\n", - " base_job_name=\"mxnet\",\n", - " train_instance_count=1,\n", - " train_instance_type=\"ml.m5.xlarge\",\n", - " train_volume_size=400,\n", - " source_dir=\"src\",\n", - " entry_point=entry_point_script,\n", - " hyperparameters=hyperparameters,\n", - " framework_version=\"1.6.0\",\n", - " py_version=\"py3\",\n", - " debugger_hook_config=DebuggerHookConfig(\n", - " s3_output_path=s3_bucket_for_tensors,\n", - " collection_configs=[\n", - " CollectionConfig(name=\"all\", parameters={\"include_regex\": \".*\", \"save_interval\": \"100\"})\n", - " ],\n", - " ),\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Start the training job" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "estimator.fit(wait=False)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Get S3 path where tensors have been stored" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Tensors are stored in: s3://sagemaker-us-east-2-441510144314/smdebug-mnist-tensor-analysis/mxnet-2020-04-27-23-22-21-264/debug-output\n" - ] - } - ], - "source": [ - "job_name = estimator.latest_training_job.name\n", - "client = estimator.sagemaker_session.sagemaker_client\n", - "description = client.describe_training_job(TrainingJobName=job_name)\n", - "path = description[\"DebugHookConfig\"][\"S3OutputPath\"] + \"/\" + job_name + \"/debug-output\"\n", - "print(\"Tensors are stored in: \", path)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Download tensors from S3" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Downloading tensors into folder: /tmp/debug-output_2\n" - ] - } - ], - "source": [ - "folder_name2 = \"/tmp/{}_2\".format(path.split(\"/\")[-1])\n", - "os.system(\"aws s3 cp --recursive {} {}\".format(path, folder_name2))\n", - "print(\"Downloading tensors into folder: \", folder_name2)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Gradients\n", - "\n", - "Lets compare distribution of gradients of the convolutional layers of both trials." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'create_trial' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mtrial\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcreate_trial\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfolder_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mrule\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mGradientsLayer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtrial\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0minvoke_rule\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrule\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mNoMoreData\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mNameError\u001b[0m: name 'create_trial' is not defined" - ] - } - ], - "source": [ - "trial = create_trial(folder_name)\n", - "rule = GradientsLayer(trial)\n", - "try:\n", - " invoke_rule(rule)\n", - "except NoMoreData:\n", - " print(\n", - " \"The training has ended and there is no more data to be analyzed. This is expected behavior.\"\n", - " )" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'rule' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mdict_gradients\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mdict_gradients\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'gradient/conv0_weight_bad_hyperparameters'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrule\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtensors\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'gradient/conv0_weight'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0mdict_gradients\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'gradient/conv1_weight_bad_hyperparameters'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrule\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtensors\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'gradient/conv1_weight'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mNameError\u001b[0m: name 'rule' is not defined" - ] - } - ], - "source": [ - "dict_gradients = {}\n", - "dict_gradients[\"gradient/conv0_weight_bad_hyperparameters\"] = rule.tensors[\"gradient/conv0_weight\"]\n", - "dict_gradients[\"gradient/conv1_weight_bad_hyperparameters\"] = rule.tensors[\"gradient/conv1_weight\"]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Second trial:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[2020-04-27 23:02:30.733 f8455ab5c5ab:17 INFO local_trial.py:35] Loading trial debug-output_2 at path /tmp/debug-output_2\n", - "[2020-04-27 23:02:50.754 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:02:52.757 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:02:54.760 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:02:56.763 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:02:58.766 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:03:00.769 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:03:02.772 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:03:04.775 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:03:06.778 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:03:08.781 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:03:10.784 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:03:12.787 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:03:14.790 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:03:16.793 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:03:18.796 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:03:20.799 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:03:22.802 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:03:24.804 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:03:26.807 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:03:28.810 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:03:30.813 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:03:32.816 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:03:34.819 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:03:36.822 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:03:38.825 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:03:40.828 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:03:42.831 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:03:44.834 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:03:46.837 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:03:48.840 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:03:50.843 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:03:52.844 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:03:54.846 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:03:56.848 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:03:58.849 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:04:00.851 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:04:02.854 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:04:04.856 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:04:06.859 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:04:08.862 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:04:10.865 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:04:12.868 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:04:14.871 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:04:16.876 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:04:18.878 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:04:20.879 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:04:22.882 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:04:24.886 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:04:26.888 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:04:28.892 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:04:30.895 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:04:32.898 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:04:34.901 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:04:36.903 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:04:38.906 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:04:40.909 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:04:42.912 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:04:44.915 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:04:46.918 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:04:48.921 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:04:50.924 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:04:52.927 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:04:54.930 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:04:56.932 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:04:58.934 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:05:00.937 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:05:02.940 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:05:04.943 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:05:06.946 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:05:08.951 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:05:10.954 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:05:12.957 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:05:14.960 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:05:16.962 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:05:18.965 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:05:20.968 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:05:22.972 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:05:24.974 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:05:26.977 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:05:28.978 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:05:30.979 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:05:32.981 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:05:34.982 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:05:36.983 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:05:38.985 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:05:40.987 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:05:42.990 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:05:44.994 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:05:46.996 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:05:48.999 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:05:51.002 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:05:53.006 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:05:55.008 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:05:57.011 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:05:59.014 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:06:01.017 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:06:03.019 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:06:05.023 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:06:07.026 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:06:09.029 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:06:11.031 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:06:13.034 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:06:15.036 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:06:17.039 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:06:19.042 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:06:21.044 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:06:23.047 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:06:25.050 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:06:27.053 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:06:29.056 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:06:31.059 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:06:33.062 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:06:35.064 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:06:37.068 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:06:39.070 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:06:41.073 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:06:43.076 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:06:45.079 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:06:47.082 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:06:49.084 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:06:51.087 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:06:53.090 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:06:55.093 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:06:57.096 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:06:59.099 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:07:01.102 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:07:03.105 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:07:05.108 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:07:07.109 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:07:09.111 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:07:11.114 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:07:13.117 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:07:15.120 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:07:17.123 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:07:19.126 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:07:21.129 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:07:23.132 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:07:25.135 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:07:27.138 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:07:29.141 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:07:31.144 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:07:33.147 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:07:35.150 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:07:37.153 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:07:39.156 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:07:41.159 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:07:43.162 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:07:45.165 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:07:47.168 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:07:49.171 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:07:51.174 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:07:53.177 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:07:55.180 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:07:57.183 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:07:59.186 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:08:01.189 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:08:03.192 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:08:05.195 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:08:07.198 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:08:09.201 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:08:11.204 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:08:13.207 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:08:15.210 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:08:17.211 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:08:19.215 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:08:21.218 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:08:23.221 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:08:25.223 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:08:27.226 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:08:29.230 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:08:31.231 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:08:33.237 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:08:35.240 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:08:37.243 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:08:39.246 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:08:41.247 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:08:43.250 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:08:45.253 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:08:47.256 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:08:49.258 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:08:51.261 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:08:53.264 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:08:55.267 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:08:57.270 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:08:59.271 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:09:01.273 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:09:03.276 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:09:05.279 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:09:07.282 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:09:09.285 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:09:11.288 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:09:13.291 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:09:15.294 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:09:17.297 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:09:19.300 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:09:21.303 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:09:23.306 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:09:25.307 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:09:27.310 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:09:29.313 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:09:31.316 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:09:33.319 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:09:35.322 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:09:37.325 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:09:39.328 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:09:41.331 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:09:43.334 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:09:45.336 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:09:47.338 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:09:49.342 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:09:51.343 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:09:53.346 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:09:55.348 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:09:57.350 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:09:59.353 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:10:01.356 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:10:03.359 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:10:05.362 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:10:07.365 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:10:09.368 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:10:11.371 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:10:13.374 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:10:15.377 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:10:17.380 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:10:19.382 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:10:21.385 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:10:23.387 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:10:25.390 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:10:27.393 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:10:29.396 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:10:31.399 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:10:33.403 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:10:35.406 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:10:37.409 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:10:39.410 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:10:41.412 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:10:43.413 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:10:45.414 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:10:47.417 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:10:49.420 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:10:51.423 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:10:53.426 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:10:55.429 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:10:57.432 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:10:59.435 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:11:01.438 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:11:03.441 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:11:05.444 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:11:07.447 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:11:09.450 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:11:11.453 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:11:13.454 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:11:15.457 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:11:17.460 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:11:19.463 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:11:21.466 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:11:23.469 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:11:25.472 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:11:27.475 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:11:29.478 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:11:31.481 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:11:33.484 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:11:35.486 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:11:37.489 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:11:39.491 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:11:41.493 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:11:43.496 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:11:45.499 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:11:47.502 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:11:49.505 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:11:51.507 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:11:53.510 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:11:55.511 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n", - "[2020-04-27 23:11:57.514 f8455ab5c5ab:17 WARNING trial.py:148] Waiting to read collections files generated by the training job,from /tmp/debug-output_2. If this has been a while, you might want to check that the trial is pointed at the right path.\n" - ] - } - ], - "source": [ - "trial = create_trial(folder_name2)\n", - "rule = GradientsLayer(trial)\n", - "try:\n", - " invoke_rule(rule)\n", - "except NoMoreData:\n", - " print(\n", - " \"The training has ended and there is no more data to be analyzed. This is expected behavior.\"\n", - " )" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "dict_gradients[\"gradient/conv0_weight_good_hyperparameters\"] = rule.tensors[\"gradient/conv0_weight\"]\n", - "dict_gradients[\"gradient/conv1_weight_good_hyperparameters\"] = rule.tensors[\"gradient/conv1_weight\"]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Plot the histograms" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "utils.create_interactive_matplotlib_histogram(\n", - " dict_gradients, filename=\"images/gradients_comparison.gif\"\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In the case of the poorly initalized model, gradients are fluctuating a lot leading to very high variance. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "Image(url=\"images/gradients_comparison.gif\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Activation inputs\n", - "\n", - "Lets compare distribution of activation inputs of both trials." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "trial = create_trial(folder_name)\n", - "rule = ActivationInputs(trial)\n", - "try:\n", - " invoke_rule(rule)\n", - "except NoMoreData:\n", - " print(\n", - " \"The training has ended and there is no more data to be analyzed. This is expected behavior.\"\n", - " )" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "dict_activation_inputs = {}\n", - "dict_activation_inputs[\"conv0_relu_input_0_bad_hyperparameters\"] = rule.tensors[\n", - " \"conv0_relu_input_0\"\n", - "]\n", - "dict_activation_inputs[\"conv1_relu_input_0_bad_hyperparameters\"] = rule.tensors[\n", - " \"conv1_relu_input_0\"\n", - "]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Second trial" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "trial = create_trial(folder_name2)\n", - "rule = ActivationInputs(trial)\n", - "try:\n", - " invoke_rule(rule)\n", - "except NoMoreData:\n", - " print(\n", - " \"The training has ended and there is no more data to be analyzed. This is expected behavior.\"\n", - " )" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "dict_activation_inputs[\"conv0_relu_input_0_good_hyperparameters\"] = rule.tensors[\n", - " \"conv0_relu_input_0\"\n", - "]\n", - "dict_activation_inputs[\"conv1_relu_input_0_good_hyperparameters\"] = rule.tensors[\n", - " \"conv1_relu_input_0\"\n", - "]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Plot the histograms" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "utils.create_interactive_matplotlib_histogram(\n", - " dict_activation_inputs, filename=\"images/activation_inputs_comparison.gif\"\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The distribution of activation inputs into first activation layer `conv0_relu_input_0` look quite similar in both trials. However in the case of the second layer they drastically differ. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "Image(url=\"images/activation_inputs_comparison.gif\")" - ] - } - ], - "metadata": { - "instance_type": "ml.t3.medium", - "kernelspec": { - "display_name": "Python 3 (Data Science)", - "language": "python", - "name": "python3__SAGEMAKER_INTERNAL__arn:aws:sagemaker:us-east-2:429704687514:image/datascience-1.0" - }, - "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.7.6" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/aws_sagemaker_studio/sagemaker_debugger/mnist_tensor_analysis/src/mnist.py b/aws_sagemaker_studio/sagemaker_debugger/mnist_tensor_analysis/src/mnist.py deleted file mode 100644 index bffbcce401..0000000000 --- a/aws_sagemaker_studio/sagemaker_debugger/mnist_tensor_analysis/src/mnist.py +++ /dev/null @@ -1,90 +0,0 @@ -# Standard Library -import argparse -import os -import time - -# Third Party -import mxnet as mx -import numpy as np -from mxnet import autograd, gluon, init -from mxnet.gluon import nn -from mxnet.gluon.data.vision import datasets, transforms - - -def parse_args(): - parser = argparse.ArgumentParser(description="Train a mxnet gluon model") - parser.add_argument( - "--output-s3-uri", - type=str, - default=None, - help="S3 URI of the bucket where tensor data will be stored.", - ) - parser.add_argument( - "--smdebug_path", - type=str, - default=None, - help="S3 URI of the bucket where tensor data will be stored.", - ) - parser.add_argument("--initializer", type=int, default=1, help="Variable to change intializer") - parser.add_argument("--lr", type=float, default=0.001, help="Variable to change learning rate") - opt = parser.parse_args() - return opt - - -def create_gluon_model(initializer): - net = nn.HybridSequential() - net.add( - nn.Conv2D(channels=6, kernel_size=5, activation="relu"), - nn.MaxPool2D(pool_size=2, strides=2), - nn.Conv2D(channels=16, kernel_size=3, activation="relu"), - nn.MaxPool2D(pool_size=2, strides=2), - nn.Flatten(), - nn.Dense(120, activation="relu"), - nn.Dense(84, activation="relu"), - nn.Dense(10), - ) - if initializer == 1: - net.initialize(init=init.Xavier(), ctx=mx.cpu()) - elif initializer == 2: - # variance will not remain the same across layers - net.initialize(init=init.Uniform(1), ctx=mx.cpu()) - else: - # does not break symmetry,so gradients will not differ much - net.initialize(init=init.Uniform(0.0001), ctx=mx.cpu()) - return net - - -def train_model(batch_size, net, train_data, lr): - softmax_cross_entropy = gluon.loss.SoftmaxCrossEntropyLoss() - trainer = gluon.Trainer(net.collect_params(), "sgd", {"learning_rate": lr}) - for epoch in range(3): - for data, label in train_data: - data = data.as_in_context(mx.cpu(0)) - with autograd.record(): - output = net(data) - loss = softmax_cross_entropy(output, label) - loss.backward() - trainer.step(batch_size) - print(np.mean(loss.asnumpy())) - - -def prepare_data(batch_size): - mnist_train = datasets.FashionMNIST(train=True) - transformer = transforms.Compose([transforms.ToTensor(), transforms.Normalize(0.286, 0.352)]) - mnist_train = mnist_train.transform_first(transformer) - train_data = gluon.data.DataLoader( - mnist_train, batch_size=batch_size, shuffle=True, num_workers=4 - ) - - return train_data - - -def main(): - opt = parse_args() - net = create_gluon_model(opt.initializer) - train_data = prepare_data(128) - train_model(128, net, train_data, opt.lr) - - -if __name__ == "__main__": - main() diff --git a/aws_sagemaker_studio/sagemaker_debugger/mnist_tensor_analysis/utils.py b/aws_sagemaker_studio/sagemaker_debugger/mnist_tensor_analysis/utils.py deleted file mode 100644 index adf661beec..0000000000 --- a/aws_sagemaker_studio/sagemaker_debugger/mnist_tensor_analysis/utils.py +++ /dev/null @@ -1,171 +0,0 @@ -import math - -import matplotlib.pyplot as plt -import numpy as np -from matplotlib.animation import FuncAnimation - -plt.rcParams.update({"font.size": 8}) - -# create slider and updatemenues for each training step -def create_slider(steps): - updatemenus = [ - dict( - type="buttons", - direction="left", - pad=dict(r=10, t=85), - showactive=True, - x=0.1, - y=0, - xanchor="right", - yanchor="top", - buttons=[ - dict( - label="Play", - method="animate", - args=[ - [f"{k}" for k in range(steps)], - dict( - frame=dict(duration=100, redraw=True), - transition=dict(duration=300), - easing="linear", - fromcurrent=True, - mode="immediate", - ), - ], - ) - ], - ) - ] - - sliders = [ - { - "yanchor": "top", - "xanchor": "left", - "currentvalue": { - "font": {"size": 16}, - "prefix": "Step: ", - "visible": True, - "xanchor": "right", - }, - "transition": {"duration": 500.0, "easing": "linear"}, - "pad": {"b": 10, "t": 50}, - "len": 0.9, - "x": 0.1, - "y": 0, - "steps": [ - { - "args": [ - [k], - { - "frame": {"duration": 500.0, "easing": "linear", "redraw": True}, - "transition": {"duration": 0, "easing": "linear"}, - }, - ], - "label": k, - "method": "animate", - } - for k in range(steps) - ], - } - ] - - return updatemenus, sliders - - -# create animated histograms with plotly -def create_interactive_plotly_histogram(tensors): - import plotly.graph_objects as go - from plotly.subplots import make_subplots - - tname = list(tensors.keys())[0] - steps = list(tensors[tname].keys()) - nrows = math.ceil(len(tensors.keys()) / 2) - - # create plot for each layer in the neural network - fig = make_subplots( - rows=nrows, - cols=2, - horizontal_spacing=0.05, - vertical_spacing=0.1, - subplot_titles=(list(tensors.keys())), - ) - - # plot histograms for training step 0 - row, col = 1, 1 - for tname in tensors: - x = tensors[tname][steps[0]].flatten() - - fig.add_trace(go.Histogram(x=x, nbinsx=100), row, col) - if col >= 2: - row += 1 - col = 0 - col += 1 - - # Set frames for each training step - frames = [] - for idx, step in enumerate(steps): - frame = {"data": [], "name": str(idx), "traces": np.arange(len(tensors.keys()))} - for tname in tensors: - x = tensors[tname][step].flatten() - print( - np.min(x), - np.max(x), - ) - frame["data"].append(go.Histogram(x=x, nbinsx=100)) - frames.append(frame) - - # create slider and updatemenue - updatemenus, sliders = create_slider(len(steps)) - - # set frames and update layout - fig.update(frames=frames) - fig.update_layout( - width=1000, - height=nrows * 400, - showlegend=False, - plot_bgcolor="rgba(0,0,0,0)", - updatemenus=updatemenus, - sliders=sliders, - ) - - return fig.show(renderer="iframe") - - -# create animated histograms with matplotlib -def create_interactive_matplotlib_histogram(tensors, filename="data/animation.gif"): - nrows = math.ceil(len(tensors.keys()) / 2) - if nrows == 1: - nrows = 2 - fig, axes = plt.subplots(nrows, 2, figsize=(15, nrows * 5)) - plt.subplots_adjust(wspace=0.5, hspace=0.3) - tname = list(tensors.keys())[0] - steps = list(tensors[tname].keys()) - - # function that defines the data for the different frames - def animate(frame): - row, col = 0, 0 - for tname in tensors: - - # get new data for histogram - z = tensors[tname][steps[frame]] - neg_values = np.where(z <= 0)[0] - if col > 1: - row += 1 - col = 0 - - # clear previous histogram data - axes[row, col].clear() - - # set title and new histogram data - axes[row, col].set_title( - "{} \n Step {} : {:.0f}% of values below 0 - variance : {:.2f}".format( - tname, steps[frame], (len(neg_values) / z.size) * 100, np.var(z) - ) - ) - axes[row, col].hist(z.flatten(), bins=100) - col += 1 - - simulation = FuncAnimation(fig, animate, frames=len(steps), interval=1, repeat=False) - simulation.save(filename, writer="pillow", fps=5) - fig.tight_layout() - plt.close()