Skip to content

Instantly share code, notes, and snippets.

@Alescontrela
Created April 23, 2024 21:17
Show Gist options
  • Save Alescontrela/a97ae89929b8589f7a81e0c6cbb7a7a1 to your computer and use it in GitHub Desktop.
Save Alescontrela/a97ae89929b8589f7a81e0c6cbb7a7a1 to your computer and use it in GitHub Desktop.
MPO Notebook
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"2023-11-17 07:22:39.615782: E tensorflow/compiler/xla/stream_executor/cuda/cuda_dnn.cc:9342] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered\n",
"2023-11-17 07:22:39.615847: E tensorflow/compiler/xla/stream_executor/cuda/cuda_fft.cc:609] Unable to register cuFFT factory: Attempting to register factory for plugin cuFFT when one has already been registered\n",
"2023-11-17 07:22:39.615868: E tensorflow/compiler/xla/stream_executor/cuda/cuda_blas.cc:1518] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered\n",
"2023-11-17 07:22:40.371174: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT\n"
]
}
],
"source": [
"import optax\n",
"import jax\n",
"import jax.numpy as jnp\n",
"import os\n",
"import numpy as np\n",
"os.environ['CUDA_VISIBLE_DEVICES'] = '5'\n",
"\n",
"from tensorflow_probability.substrates import jax as tfp\n",
"tfd = tfp.distributions\n"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"3.9337807\n",
"3.9337807\n",
"[[0.11920292 0.11920292]\n",
" [0.8807971 0.8807971 ]]\n"
]
}
],
"source": [
"def logsumexp1(a):\n",
" return jnp.mean(jax.scipy.special.logsumexp(a, axis=0) - jnp.log(a.shape[0]))\n",
"\n",
"def logsumexp2(b):\n",
" return jnp.mean(jnp.log(jnp.mean(jnp.exp(b), axis=0)))\n",
"\n",
"a = jnp.array([[1., 4.], [3., 6.]])\n",
"\n",
"print(logsumexp1(a))\n",
"print(logsumexp2(a))\n",
"print(jax.nn.softmax(a, axis=0))"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"ename": "TracerBoolConversionError",
"evalue": "Attempted boolean conversion of traced array with shape bool[]..\nThe error occurred while tracing the function loss_fn at /tmp/ipykernel_2045319/1889768006.py:7 for jit. This concrete value was not available in Python because it depends on the value of the argument params['mean'].\nSee https://jax.readthedocs.io/en/latest/errors.html#jax.errors.TracerBoolConversionError",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mTracerBoolConversionError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m/home/ale/awake/embodied/agents/mpo/test_kl.ipynb Cell 2\u001b[0m line \u001b[0;36m8\n\u001b[1;32m <a href='vscode-notebook-cell://ssh-remote%2Bdgx5/home/ale/awake/embodied/agents/mpo/test_kl.ipynb#W1sdnNjb2RlLXJlbW90ZQ%3D%3D?line=82'>83</a>\u001b[0m opt_state \u001b[39m=\u001b[39m optimizer\u001b[39m.\u001b[39minit(params)\n\u001b[1;32m <a href='vscode-notebook-cell://ssh-remote%2Bdgx5/home/ale/awake/embodied/agents/mpo/test_kl.ipynb#W1sdnNjb2RlLXJlbW90ZQ%3D%3D?line=84'>85</a>\u001b[0m \u001b[39mfor\u001b[39;00m i \u001b[39min\u001b[39;00m \u001b[39mrange\u001b[39m(\u001b[39m1000\u001b[39m):\n\u001b[0;32m---> <a href='vscode-notebook-cell://ssh-remote%2Bdgx5/home/ale/awake/embodied/agents/mpo/test_kl.ipynb#W1sdnNjb2RlLXJlbW90ZQ%3D%3D?line=85'>86</a>\u001b[0m (loss, metrics), grads \u001b[39m=\u001b[39m jax\u001b[39m.\u001b[39;49mvalue_and_grad(loss_fn, has_aux\u001b[39m=\u001b[39;49m\u001b[39mTrue\u001b[39;49;00m)(params, key)\n\u001b[1;32m <a href='vscode-notebook-cell://ssh-remote%2Bdgx5/home/ale/awake/embodied/agents/mpo/test_kl.ipynb#W1sdnNjb2RlLXJlbW90ZQ%3D%3D?line=86'>87</a>\u001b[0m updates, opt_state \u001b[39m=\u001b[39m optimizer\u001b[39m.\u001b[39mupdate(grads, opt_state)\n\u001b[1;32m <a href='vscode-notebook-cell://ssh-remote%2Bdgx5/home/ale/awake/embodied/agents/mpo/test_kl.ipynb#W1sdnNjb2RlLXJlbW90ZQ%3D%3D?line=87'>88</a>\u001b[0m params \u001b[39m=\u001b[39m optax\u001b[39m.\u001b[39mapply_updates(params, updates)\n",
" \u001b[0;31m[... skipping hidden 20 frame]\u001b[0m\n",
"\u001b[1;32m/home/ale/awake/embodied/agents/mpo/test_kl.ipynb Cell 2\u001b[0m line \u001b[0;36m1\n\u001b[1;32m <a href='vscode-notebook-cell://ssh-remote%2Bdgx5/home/ale/awake/embodied/agents/mpo/test_kl.ipynb#W1sdnNjb2RlLXJlbW90ZQ%3D%3D?line=10'>11</a>\u001b[0m temperature \u001b[39m=\u001b[39m jax\u001b[39m.\u001b[39mnn\u001b[39m.\u001b[39msoftplus(params[\u001b[39m'\u001b[39m\u001b[39mlog_temperature\u001b[39m\u001b[39m'\u001b[39m] \u001b[39m+\u001b[39m \u001b[39m1e-8\u001b[39m)\n\u001b[1;32m <a href='vscode-notebook-cell://ssh-remote%2Bdgx5/home/ale/awake/embodied/agents/mpo/test_kl.ipynb#W1sdnNjb2RlLXJlbW90ZQ%3D%3D?line=11'>12</a>\u001b[0m penalty_temperature \u001b[39m=\u001b[39m jax\u001b[39m.\u001b[39mnn\u001b[39m.\u001b[39msoftplus(params[\u001b[39m'\u001b[39m\u001b[39mlog_penalty_temperature\u001b[39m\u001b[39m'\u001b[39m] \u001b[39m+\u001b[39m \u001b[39m1e-8\u001b[39m)\n\u001b[0;32m---> <a href='vscode-notebook-cell://ssh-remote%2Bdgx5/home/ale/awake/embodied/agents/mpo/test_kl.ipynb#W1sdnNjb2RlLXJlbW90ZQ%3D%3D?line=12'>13</a>\u001b[0m \u001b[39massert\u001b[39;00m \u001b[39mnot\u001b[39;00m jnp\u001b[39m.\u001b[39misnan(mean)\u001b[39m.\u001b[39many(), mean\n\u001b[1;32m <a href='vscode-notebook-cell://ssh-remote%2Bdgx5/home/ale/awake/embodied/agents/mpo/test_kl.ipynb#W1sdnNjb2RlLXJlbW90ZQ%3D%3D?line=13'>14</a>\u001b[0m \u001b[39massert\u001b[39;00m \u001b[39mnot\u001b[39;00m jnp\u001b[39m.\u001b[39misnan(temperature)\u001b[39m.\u001b[39many(), temperature\n\u001b[1;32m <a href='vscode-notebook-cell://ssh-remote%2Bdgx5/home/ale/awake/embodied/agents/mpo/test_kl.ipynb#W1sdnNjb2RlLXJlbW90ZQ%3D%3D?line=14'>15</a>\u001b[0m \u001b[39massert\u001b[39;00m \u001b[39mnot\u001b[39;00m jnp\u001b[39m.\u001b[39misnan(penalty_temperature)\u001b[39m.\u001b[39many(), penalty_temperature\n",
" \u001b[0;31m[... skipping hidden 1 frame]\u001b[0m\n",
"File \u001b[0;32m~/miniconda3/envs/awake/lib/python3.10/site-packages/jax/_src/core.py:1443\u001b[0m, in \u001b[0;36mconcretization_function_error.<locals>.error\u001b[0;34m(self, arg)\u001b[0m\n\u001b[1;32m 1442\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39merror\u001b[39m(\u001b[39mself\u001b[39m, arg):\n\u001b[0;32m-> 1443\u001b[0m \u001b[39mraise\u001b[39;00m TracerBoolConversionError(arg)\n",
"\u001b[0;31mTracerBoolConversionError\u001b[0m: Attempted boolean conversion of traced array with shape bool[]..\nThe error occurred while tracing the function loss_fn at /tmp/ipykernel_2045319/1889768006.py:7 for jit. This concrete value was not available in Python because it depends on the value of the argument params['mean'].\nSee https://jax.readthedocs.io/en/latest/errors.html#jax.errors.TracerBoolConversionError"
]
}
],
"source": [
"optimizer = optax.adam(1e-4)\n",
"key = jax.random.PRNGKey(42)\n",
"\n",
"def network(params):\n",
" return tfd.Independent(tfd.Normal(params, jnp.ones_like(params)), 1)\n",
"\n",
"@jax.jit\n",
"def loss_fn(params, key):\n",
" metrics = {}\n",
" mean = params['mean']\n",
" temperature = jax.nn.softplus(params['log_temperature'] + 1e-8)\n",
" penalty_temperature = jax.nn.softplus(params['log_penalty_temperature'] + 1e-8)\n",
" assert not jnp.isnan(mean).any(), mean\n",
" assert not jnp.isnan(temperature).any(), temperature\n",
" assert not jnp.isnan(penalty_temperature).any(), penalty_temperature\n",
"\n",
"\n",
" dist = network(mean)\n",
" a_improvement = dist.sample(20, key)\n",
" q_improvement = jax.lax.stop_gradient(jnp.sum(jnp.exp(-10 * (a_improvement - 0.75)**2), -1))\n",
" assert jnp.isfinite(q_improvement).all(), q_improvement\n",
"\n",
" # print('a_improvement', a_improvement.shape)\n",
" # print('q_improvement', q_improvement.shape)\n",
"\n",
" def compute_weights_and_temperature_loss(q_values, epsilon, temperature):\n",
" tempered_q_values = jax.lax.stop_gradient(q_values) / temperature\n",
" assert not jnp.isnan(tempered_q_values).any(), tempered_q_values\n",
" q_logsumexp = jnp.mean(jnp.log(jnp.mean(jnp.exp(tempered_q_values), axis=0)))\n",
" assert not jnp.isnan(q_logsumexp).any(), tempered_q_values\n",
" loss_temperature = jnp.mean(temperature * epsilon + temperature * q_logsumexp)\n",
" normalized_weights = jax.lax.stop_gradient(jax.nn.softmax(tempered_q_values, axis=0))\n",
" return normalized_weights, loss_temperature\n",
"\n",
" def compute_nonparametric_kl_from_normalized_weights(normalized_weights):\n",
" num_action_samples = normalized_weights.shape[0] / 1.\n",
" integrand = jnp.log(num_action_samples * normalized_weights + 1e-8)\n",
" non_parametric_kl = jnp.sum(normalized_weights * integrand, axis=0)\n",
" return non_parametric_kl\n",
"\n",
" normalized_weights, loss_temperature = compute_weights_and_temperature_loss(q_improvement, 0.1, temperature)\n",
" metrics['loss_temperature'] = loss_temperature\n",
" metrics['non_parametric_kl'] = compute_nonparametric_kl_from_normalized_weights(normalized_weights)\n",
"\n",
" assert not jnp.isnan(normalized_weights).any(), q_improvement\n",
" assert not jnp.isnan(loss_temperature).any(), temperature\n",
"\n",
" # print('normalized_weights', normalized_weights.shape)\n",
" # print('loss_temperature', loss_temperature.shape)\n",
"\n",
" cost_out_of_bound = -jnp.linalg.norm(a_improvement - jnp.clip(a_improvement, -1.0, 1.0), axis=-1)\n",
" penalty_normalized_weights, loss_penalty_temperature = compute_weights_and_temperature_loss(cost_out_of_bound, 0.001, penalty_temperature)\n",
" metrics['loss_penalty_temperature'] = loss_penalty_temperature\n",
" metrics['penalty_non_parametric_kl'] = compute_nonparametric_kl_from_normalized_weights(penalty_normalized_weights)\n",
"\n",
" assert not jnp.isnan(cost_out_of_bound).any(), q_improvement\n",
" assert not jnp.isnan(penalty_normalized_weights).any(), temperature\n",
" assert not jnp.isnan(loss_penalty_temperature).any(), temperature\n",
"\n",
" # print('cost_out_of_bound', cost_out_of_bound.shape)\n",
" # print('penalty_normalized_weights', penalty_normalized_weights.shape)\n",
" # print('loss_penalty_temperature', loss_penalty_temperature.shape)\n",
"\n",
" loss_temperature += loss_penalty_temperature\n",
" normalized_weights += penalty_normalized_weights\n",
"\n",
" logpi = dist.log_prob(jax.lax.stop_gradient(a_improvement))\n",
" loss_dist = jnp.mean(-jnp.sum(normalized_weights * logpi, axis=0))\n",
" metrics['loss_dist'] = loss_dist\n",
" assert not jnp.isnan(logpi).any(), temperature\n",
" assert not jnp.isnan(loss_dist).any(), temperature\n",
" # print('logpi', logpi.shape)\n",
" # print('loss_dist', loss_dist.shape)\n",
"\n",
" return loss_temperature + loss_dist, metrics\n",
"\n",
"key = jax.random.PRNGKey(41)\n",
"\n",
"params = {\n",
" 'mean': jnp.array([0.0]),\n",
" 'log_temperature': jnp.array([10.]),\n",
" 'log_penalty_temperature': jnp.array([10.])}\n",
"opt_state = optimizer.init(params)\n",
"\n",
"for i in range(1000):\n",
" (loss, metrics), grads = jax.value_and_grad(loss_fn, has_aux=True)(params, key)\n",
" updates, opt_state = optimizer.update(grads, opt_state)\n",
" params = optax.apply_updates(params, updates)\n",
" if i % 50 == 0:\n",
" print(f'Iteration {i}')\n",
" print(f'\\t Loss: {loss}')\n",
" print(f'\\t Params: {params}')\n",
" print(f'\\t Metrics: {metrics}')\n",
" print(f'\\t Updates: {updates}')\n",
" print(f'\\t Grad: {grads}')"
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 0\n",
"\t Loss: -12.357587814331055\n",
"\t Params: {'log_penalty_temperature': Array([9.999944], dtype=float32), 'log_temperature': Array([10.], dtype=float32), 'mean': Array([ 9.96949 , 10.024852], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.36426342, dtype=float32), 'loss_penalty_temperature': Array(-12.721851, dtype=float32), 'loss_temperature': Array(1.0000046, dtype=float32), 'non_parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00043857, dtype=float32)}\n",
"\t Updates: {'log_penalty_temperature': Array([-5.614034e-05], dtype=float32), 'log_temperature': Array([-0.], dtype=float32), 'mean': Array([-0.03050957, 0.02485199], dtype=float32)}\n",
"\t Grad: {'log_penalty_temperature': Array([0.0005614], dtype=float32), 'log_temperature': Array([0.], dtype=float32), 'mean': Array([ 0.30509564, -0.24851994], dtype=float32)}\n"
]
},
{
"ename": "KeyboardInterrupt",
"evalue": "",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m/home/ale/awake/embodied/agents/mpo/test_kl.ipynb Cell 3\u001b[0m line \u001b[0;36m8\n\u001b[1;32m <a href='vscode-notebook-cell://ssh-remote%2Bdgx5/home/ale/awake/embodied/agents/mpo/test_kl.ipynb#W2sdnNjb2RlLXJlbW90ZQ%3D%3D?line=86'>87</a>\u001b[0m slowdist \u001b[39m=\u001b[39m tfd\u001b[39m.\u001b[39mIndependent(tfd\u001b[39m.\u001b[39mNormal(params[\u001b[39m'\u001b[39m\u001b[39mmean\u001b[39m\u001b[39m'\u001b[39m], jax\u001b[39m.\u001b[39mlax\u001b[39m.\u001b[39mstop_gradient(std \u001b[39m*\u001b[39m jnp\u001b[39m.\u001b[39mones_like(params[\u001b[39m'\u001b[39m\u001b[39mmean\u001b[39m\u001b[39m'\u001b[39m]))), \u001b[39m1\u001b[39m)\n\u001b[1;32m <a href='vscode-notebook-cell://ssh-remote%2Bdgx5/home/ale/awake/embodied/agents/mpo/test_kl.ipynb#W2sdnNjb2RlLXJlbW90ZQ%3D%3D?line=87'>88</a>\u001b[0m _, key \u001b[39m=\u001b[39m jax\u001b[39m.\u001b[39mrandom\u001b[39m.\u001b[39msplit(key)\n\u001b[0;32m---> <a href='vscode-notebook-cell://ssh-remote%2Bdgx5/home/ale/awake/embodied/agents/mpo/test_kl.ipynb#W2sdnNjb2RlLXJlbW90ZQ%3D%3D?line=88'>89</a>\u001b[0m (loss, metrics), grads \u001b[39m=\u001b[39m jax\u001b[39m.\u001b[39;49mvalue_and_grad(loss_fn, has_aux\u001b[39m=\u001b[39;49m\u001b[39mTrue\u001b[39;49;00m)(params, key, slowdist)\n\u001b[1;32m <a href='vscode-notebook-cell://ssh-remote%2Bdgx5/home/ale/awake/embodied/agents/mpo/test_kl.ipynb#W2sdnNjb2RlLXJlbW90ZQ%3D%3D?line=89'>90</a>\u001b[0m updates, opt_state \u001b[39m=\u001b[39m optimizer\u001b[39m.\u001b[39mupdate(grads, opt_state)\n\u001b[1;32m <a href='vscode-notebook-cell://ssh-remote%2Bdgx5/home/ale/awake/embodied/agents/mpo/test_kl.ipynb#W2sdnNjb2RlLXJlbW90ZQ%3D%3D?line=90'>91</a>\u001b[0m params \u001b[39m=\u001b[39m optax\u001b[39m.\u001b[39mapply_updates(params, updates)\n",
" \u001b[0;31m[... skipping hidden 1 frame]\u001b[0m\n",
"File \u001b[0;32m~/miniconda3/envs/awake/lib/python3.10/site-packages/jax/_src/api.py:734\u001b[0m, in \u001b[0;36mvalue_and_grad.<locals>.value_and_grad_f\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 732\u001b[0m ans, vjp_py \u001b[39m=\u001b[39m _vjp(f_partial, \u001b[39m*\u001b[39mdyn_args, reduce_axes\u001b[39m=\u001b[39mreduce_axes)\n\u001b[1;32m 733\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[0;32m--> 734\u001b[0m ans, vjp_py, aux \u001b[39m=\u001b[39m _vjp(\n\u001b[1;32m 735\u001b[0m f_partial, \u001b[39m*\u001b[39;49mdyn_args, has_aux\u001b[39m=\u001b[39;49m\u001b[39mTrue\u001b[39;49;00m, reduce_axes\u001b[39m=\u001b[39;49mreduce_axes)\n\u001b[1;32m 736\u001b[0m _check_scalar(ans)\n\u001b[1;32m 737\u001b[0m tree_map(partial(_check_output_dtype_grad, holomorphic), ans)\n",
"File \u001b[0;32m~/miniconda3/envs/awake/lib/python3.10/site-packages/jax/_src/api.py:2243\u001b[0m, in \u001b[0;36m_vjp\u001b[0;34m(fun, has_aux, reduce_axes, *primals)\u001b[0m\n\u001b[1;32m 2241\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[1;32m 2242\u001b[0m flat_fun, out_aux_trees \u001b[39m=\u001b[39m flatten_fun_nokwargs2(fun, in_tree)\n\u001b[0;32m-> 2243\u001b[0m out_primal, out_vjp, aux \u001b[39m=\u001b[39m ad\u001b[39m.\u001b[39;49mvjp(\n\u001b[1;32m 2244\u001b[0m flat_fun, primals_flat, has_aux\u001b[39m=\u001b[39;49m\u001b[39mTrue\u001b[39;49;00m, reduce_axes\u001b[39m=\u001b[39;49mreduce_axes)\n\u001b[1;32m 2245\u001b[0m out_tree, aux_tree \u001b[39m=\u001b[39m out_aux_trees()\n\u001b[1;32m 2246\u001b[0m out_primal_py \u001b[39m=\u001b[39m tree_unflatten(out_tree, out_primal)\n",
"File \u001b[0;32m~/miniconda3/envs/awake/lib/python3.10/site-packages/jax/_src/interpreters/ad.py:142\u001b[0m, in \u001b[0;36mvjp\u001b[0;34m(traceable, primals, has_aux, reduce_axes)\u001b[0m\n\u001b[1;32m 140\u001b[0m out_primals, pvals, jaxpr, consts \u001b[39m=\u001b[39m linearize(traceable, \u001b[39m*\u001b[39mprimals)\n\u001b[1;32m 141\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[0;32m--> 142\u001b[0m out_primals, pvals, jaxpr, consts, aux \u001b[39m=\u001b[39m linearize(traceable, \u001b[39m*\u001b[39;49mprimals, has_aux\u001b[39m=\u001b[39;49m\u001b[39mTrue\u001b[39;49;00m)\n\u001b[1;32m 144\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39munbound_vjp\u001b[39m(pvals, jaxpr, consts, \u001b[39m*\u001b[39mcts):\n\u001b[1;32m 145\u001b[0m cts \u001b[39m=\u001b[39m \u001b[39mtuple\u001b[39m(ct \u001b[39mfor\u001b[39;00m ct, pval \u001b[39min\u001b[39;00m \u001b[39mzip\u001b[39m(cts, pvals) \u001b[39mif\u001b[39;00m \u001b[39mnot\u001b[39;00m pval\u001b[39m.\u001b[39mis_known())\n",
"File \u001b[0;32m~/miniconda3/envs/awake/lib/python3.10/site-packages/jax/_src/interpreters/ad.py:129\u001b[0m, in \u001b[0;36mlinearize\u001b[0;34m(traceable, *primals, **kwargs)\u001b[0m\n\u001b[1;32m 127\u001b[0m _, in_tree \u001b[39m=\u001b[39m tree_flatten(((primals, primals), {}))\n\u001b[1;32m 128\u001b[0m jvpfun_flat, out_tree \u001b[39m=\u001b[39m flatten_fun(jvpfun, in_tree)\n\u001b[0;32m--> 129\u001b[0m jaxpr, out_pvals, consts \u001b[39m=\u001b[39m pe\u001b[39m.\u001b[39;49mtrace_to_jaxpr_nounits(jvpfun_flat, in_pvals)\n\u001b[1;32m 130\u001b[0m out_primals_pvals, out_tangents_pvals \u001b[39m=\u001b[39m tree_unflatten(out_tree(), out_pvals)\n\u001b[1;32m 131\u001b[0m \u001b[39massert\u001b[39;00m \u001b[39mall\u001b[39m(out_primal_pval\u001b[39m.\u001b[39mis_known() \u001b[39mfor\u001b[39;00m out_primal_pval \u001b[39min\u001b[39;00m out_primals_pvals)\n",
"File \u001b[0;32m~/miniconda3/envs/awake/lib/python3.10/site-packages/jax/_src/profiler.py:340\u001b[0m, in \u001b[0;36mannotate_function.<locals>.wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 337\u001b[0m \u001b[39m@wraps\u001b[39m(func)\n\u001b[1;32m 338\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mwrapper\u001b[39m(\u001b[39m*\u001b[39margs, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs):\n\u001b[1;32m 339\u001b[0m \u001b[39mwith\u001b[39;00m TraceAnnotation(name, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mdecorator_kwargs):\n\u001b[0;32m--> 340\u001b[0m \u001b[39mreturn\u001b[39;00m func(\u001b[39m*\u001b[39;49margs, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n\u001b[1;32m 341\u001b[0m \u001b[39mreturn\u001b[39;00m wrapper\n",
"File \u001b[0;32m~/miniconda3/envs/awake/lib/python3.10/site-packages/jax/_src/interpreters/partial_eval.py:774\u001b[0m, in \u001b[0;36mtrace_to_jaxpr_nounits\u001b[0;34m(fun, pvals, instantiate)\u001b[0m\n\u001b[1;32m 772\u001b[0m \u001b[39mwith\u001b[39;00m core\u001b[39m.\u001b[39mnew_main(JaxprTrace, name_stack\u001b[39m=\u001b[39mcurrent_name_stack) \u001b[39mas\u001b[39;00m main:\n\u001b[1;32m 773\u001b[0m fun \u001b[39m=\u001b[39m trace_to_subjaxpr_nounits(fun, main, instantiate)\n\u001b[0;32m--> 774\u001b[0m jaxpr, (out_pvals, consts, env) \u001b[39m=\u001b[39m fun\u001b[39m.\u001b[39;49mcall_wrapped(pvals)\n\u001b[1;32m 775\u001b[0m \u001b[39massert\u001b[39;00m \u001b[39mnot\u001b[39;00m env\n\u001b[1;32m 776\u001b[0m \u001b[39mdel\u001b[39;00m main, fun, env\n",
"File \u001b[0;32m~/miniconda3/envs/awake/lib/python3.10/site-packages/jax/_src/linear_util.py:191\u001b[0m, in \u001b[0;36mWrappedFun.call_wrapped\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 188\u001b[0m gen \u001b[39m=\u001b[39m gen_static_args \u001b[39m=\u001b[39m out_store \u001b[39m=\u001b[39m \u001b[39mNone\u001b[39;00m\n\u001b[1;32m 190\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[0;32m--> 191\u001b[0m ans \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mf(\u001b[39m*\u001b[39;49margs, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49m\u001b[39mdict\u001b[39;49m(\u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mparams, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs))\n\u001b[1;32m 192\u001b[0m \u001b[39mexcept\u001b[39;00m:\n\u001b[1;32m 193\u001b[0m \u001b[39m# Some transformations yield from inside context managers, so we have to\u001b[39;00m\n\u001b[1;32m 194\u001b[0m \u001b[39m# interrupt them before reraising the exception. Otherwise they will only\u001b[39;00m\n\u001b[1;32m 195\u001b[0m \u001b[39m# get garbage-collected at some later time, running their cleanup tasks\u001b[39;00m\n\u001b[1;32m 196\u001b[0m \u001b[39m# only after this exception is handled, which can corrupt the global\u001b[39;00m\n\u001b[1;32m 197\u001b[0m \u001b[39m# state.\u001b[39;00m\n\u001b[1;32m 198\u001b[0m \u001b[39mwhile\u001b[39;00m stack:\n",
"\u001b[1;32m/home/ale/awake/embodied/agents/mpo/test_kl.ipynb Cell 3\u001b[0m line \u001b[0;36m4\n\u001b[1;32m <a href='vscode-notebook-cell://ssh-remote%2Bdgx5/home/ale/awake/embodied/agents/mpo/test_kl.ipynb#W2sdnNjb2RlLXJlbW90ZQ%3D%3D?line=41'>42</a>\u001b[0m diff_out_of_bound \u001b[39m=\u001b[39m a_improvement \u001b[39m-\u001b[39m jnp\u001b[39m.\u001b[39mclip(a_improvement, \u001b[39m-\u001b[39m\u001b[39m1.0\u001b[39m, \u001b[39m1.0\u001b[39m)\n\u001b[1;32m <a href='vscode-notebook-cell://ssh-remote%2Bdgx5/home/ale/awake/embodied/agents/mpo/test_kl.ipynb#W2sdnNjb2RlLXJlbW90ZQ%3D%3D?line=42'>43</a>\u001b[0m cost_out_of_bound \u001b[39m=\u001b[39m \u001b[39m-\u001b[39mjnp\u001b[39m.\u001b[39mlinalg\u001b[39m.\u001b[39mnorm(diff_out_of_bound, axis\u001b[39m=\u001b[39m\u001b[39m-\u001b[39m\u001b[39m1\u001b[39m)\n\u001b[0;32m---> <a href='vscode-notebook-cell://ssh-remote%2Bdgx5/home/ale/awake/embodied/agents/mpo/test_kl.ipynb#W2sdnNjb2RlLXJlbW90ZQ%3D%3D?line=43'>44</a>\u001b[0m penalty_normalized_weights, loss_penalty_temperature, penalty_non_parametric_kl \u001b[39m=\u001b[39m compute_weights_and_temperature_loss(cost_out_of_bound, \u001b[39m0.001\u001b[39;49m, penalty_temperature)\n\u001b[1;32m <a href='vscode-notebook-cell://ssh-remote%2Bdgx5/home/ale/awake/embodied/agents/mpo/test_kl.ipynb#W2sdnNjb2RlLXJlbW90ZQ%3D%3D?line=44'>45</a>\u001b[0m metrics[\u001b[39m'\u001b[39m\u001b[39mloss_penalty_temperature\u001b[39m\u001b[39m'\u001b[39m] \u001b[39m=\u001b[39m loss_penalty_temperature\n\u001b[1;32m <a href='vscode-notebook-cell://ssh-remote%2Bdgx5/home/ale/awake/embodied/agents/mpo/test_kl.ipynb#W2sdnNjb2RlLXJlbW90ZQ%3D%3D?line=45'>46</a>\u001b[0m metrics[\u001b[39m'\u001b[39m\u001b[39mpenalty_non_parametric_kl\u001b[39m\u001b[39m'\u001b[39m] \u001b[39m=\u001b[39m penalty_non_parametric_kl\n",
"\u001b[1;32m/home/ale/awake/embodied/agents/mpo/test_kl.ipynb Cell 3\u001b[0m line \u001b[0;36m2\n\u001b[1;32m <a href='vscode-notebook-cell://ssh-remote%2Bdgx5/home/ale/awake/embodied/agents/mpo/test_kl.ipynb#W2sdnNjb2RlLXJlbW90ZQ%3D%3D?line=25'>26</a>\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mcompute_weights_and_temperature_loss\u001b[39m(q_values, epsilon, temperature):\n\u001b[1;32m <a href='vscode-notebook-cell://ssh-remote%2Bdgx5/home/ale/awake/embodied/agents/mpo/test_kl.ipynb#W2sdnNjb2RlLXJlbW90ZQ%3D%3D?line=26'>27</a>\u001b[0m tempered_q_values \u001b[39m=\u001b[39m jax\u001b[39m.\u001b[39mlax\u001b[39m.\u001b[39mstop_gradient(q_values) \u001b[39m/\u001b[39m temperature\n\u001b[0;32m---> <a href='vscode-notebook-cell://ssh-remote%2Bdgx5/home/ale/awake/embodied/agents/mpo/test_kl.ipynb#W2sdnNjb2RlLXJlbW90ZQ%3D%3D?line=27'>28</a>\u001b[0m \u001b[39massert\u001b[39;00m \u001b[39mnot\u001b[39;00m jnp\u001b[39m.\u001b[39;49misnan(tempered_q_values)\u001b[39m.\u001b[39;49many(), tempered_q_values\n\u001b[1;32m <a href='vscode-notebook-cell://ssh-remote%2Bdgx5/home/ale/awake/embodied/agents/mpo/test_kl.ipynb#W2sdnNjb2RlLXJlbW90ZQ%3D%3D?line=28'>29</a>\u001b[0m q_logsumexp \u001b[39m=\u001b[39m jnp\u001b[39m.\u001b[39mmean(jnp\u001b[39m.\u001b[39mlog(jnp\u001b[39m.\u001b[39mmean(jnp\u001b[39m.\u001b[39mexp(tempered_q_values), axis\u001b[39m=\u001b[39m\u001b[39m0\u001b[39m)))\n\u001b[1;32m <a href='vscode-notebook-cell://ssh-remote%2Bdgx5/home/ale/awake/embodied/agents/mpo/test_kl.ipynb#W2sdnNjb2RlLXJlbW90ZQ%3D%3D?line=29'>30</a>\u001b[0m \u001b[39massert\u001b[39;00m \u001b[39mnot\u001b[39;00m jnp\u001b[39m.\u001b[39misnan(q_logsumexp)\u001b[39m.\u001b[39many(), tempered_q_values\n",
"File \u001b[0;32m~/miniconda3/envs/awake/lib/python3.10/site-packages/jax/_src/numpy/reductions.py:296\u001b[0m, in \u001b[0;36many\u001b[0;34m(a, axis, out, keepdims, where)\u001b[0m\n\u001b[1;32m 293\u001b[0m \u001b[39m@_wraps\u001b[39m(np\u001b[39m.\u001b[39many, skip_params\u001b[39m=\u001b[39m[\u001b[39m'\u001b[39m\u001b[39mout\u001b[39m\u001b[39m'\u001b[39m])\n\u001b[1;32m 294\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39many\u001b[39m(a: ArrayLike, axis: Axis \u001b[39m=\u001b[39m \u001b[39mNone\u001b[39;00m, out: \u001b[39mNone\u001b[39;00m \u001b[39m=\u001b[39m \u001b[39mNone\u001b[39;00m,\n\u001b[1;32m 295\u001b[0m keepdims: \u001b[39mbool\u001b[39m \u001b[39m=\u001b[39m \u001b[39mFalse\u001b[39;00m, \u001b[39m*\u001b[39m, where: Optional[ArrayLike] \u001b[39m=\u001b[39m \u001b[39mNone\u001b[39;00m) \u001b[39m-\u001b[39m\u001b[39m>\u001b[39m Array:\n\u001b[0;32m--> 296\u001b[0m \u001b[39mreturn\u001b[39;00m _reduce_any(a, axis\u001b[39m=\u001b[39;49m_ensure_optional_axes(axis), out\u001b[39m=\u001b[39;49mout,\n\u001b[1;32m 297\u001b[0m keepdims\u001b[39m=\u001b[39;49mkeepdims, where\u001b[39m=\u001b[39;49mwhere)\n",
"\u001b[0;31mKeyboardInterrupt\u001b[0m: "
]
}
],
"source": [
"optimizer = optax.sgd(1e-1)\n",
"key = jax.random.PRNGKey(41)\n",
"target = -0.75\n",
"n_act_samples = 100\n",
"std = 0.3\n",
"slowdist_update_freq = 1e9\n",
"use_objective_constraint = False\n",
"\n",
"\n",
"def loss_fn(params, key, slowdist):\n",
" metrics = {}\n",
" mean = params['mean']\n",
" temperature = jax.nn.softplus(params['log_temperature']) + 1e-8\n",
" penalty_temperature = jax.nn.softplus(params['log_penalty_temperature']) + 1e-8\n",
" assert not jnp.isnan(mean).any(), mean\n",
" assert not jnp.isnan(temperature).any(), temperature\n",
" assert not jnp.isnan(penalty_temperature).any(), penalty_temperature\n",
"\n",
" dist = tfd.Independent(tfd.Normal(mean, jax.lax.stop_gradient(std * jnp.ones_like(mean))), reinterpreted_batch_ndims=1)\n",
" a_improvement = dist.sample(n_act_samples, seed=key)\n",
" assert a_improvement.shape == (n_act_samples,) + mean.shape, a_improvement.shape\n",
" q_improvement = jax.lax.stop_gradient(jnp.sum(jnp.exp(-30 * (a_improvement - target)**2), -1))\n",
"\n",
" assert jnp.isfinite(q_improvement).all(), q_improvement\n",
"\n",
" def compute_weights_and_temperature_loss(q_values, epsilon, temperature):\n",
" tempered_q_values = jax.lax.stop_gradient(q_values) / temperature\n",
" assert not jnp.isnan(tempered_q_values).any(), tempered_q_values\n",
" q_logsumexp = jnp.mean(jnp.log(jnp.mean(jnp.exp(tempered_q_values), axis=0)))\n",
" assert not jnp.isnan(q_logsumexp).any(), tempered_q_values\n",
" loss_temperature = jnp.mean(temperature * epsilon + temperature * q_logsumexp)\n",
" normalized_weights = jax.lax.stop_gradient(jax.nn.softmax(tempered_q_values, axis=0))\n",
" num_action_samples = normalized_weights.shape[0]\n",
" integrand = jnp.log(num_action_samples * normalized_weights + 1e-8)\n",
" non_parametric_kl = jnp.sum(normalized_weights * integrand, axis=0)\n",
" return normalized_weights, loss_temperature, non_parametric_kl\n",
"\n",
" normalized_weights, loss_temperature, non_parametric_kl = compute_weights_and_temperature_loss(q_improvement, 0.1, temperature)\n",
" metrics['loss_temperature'] = loss_temperature\n",
" metrics['non_parametric_kl'] = non_parametric_kl\n",
"\n",
" diff_out_of_bound = a_improvement - jnp.clip(a_improvement, -1.0, 1.0)\n",
" cost_out_of_bound = -jnp.linalg.norm(diff_out_of_bound, axis=-1)\n",
" penalty_normalized_weights, loss_penalty_temperature, penalty_non_parametric_kl = compute_weights_and_temperature_loss(cost_out_of_bound, 0.001, penalty_temperature)\n",
" metrics['loss_penalty_temperature'] = loss_penalty_temperature\n",
" metrics['penalty_non_parametric_kl'] = penalty_non_parametric_kl\n",
"\n",
" # print('SAMPLED ITEMS')\n",
" # print('actions: ', a_improvement)\n",
" # print('costs:', cost_out_of_bound)\n",
" # print('penalties: ', penalty_normalized_weights)\n",
"\n",
" assert not jnp.isnan(cost_out_of_bound).any(), q_improvement\n",
" assert not jnp.isnan(penalty_normalized_weights).any(), temperature\n",
" assert not jnp.isnan(loss_penalty_temperature).any(), temperature\n",
"\n",
" # print('cost_out_of_bound', cost_out_of_bound.shape)\n",
" # print('penalty_normalized_weights', penalty_normalized_weights.shape)\n",
" # print('loss_penalty_temperature', loss_penalty_temperature.shape)\n",
" if use_objective_constraint:\n",
" loss_temperature += loss_penalty_temperature\n",
" normalized_weights += penalty_normalized_weights\n",
" else:\n",
" loss_temperature = loss_penalty_temperature\n",
" normalized_weights = penalty_normalized_weights\n",
"\n",
" logpi = dist.log_prob(jax.lax.stop_gradient(a_improvement))\n",
" loss_dist = jnp.mean(-jnp.sum(normalized_weights * logpi, axis=0))\n",
" metrics['loss_dist'] = loss_dist\n",
" assert not jnp.isnan(logpi).any(), temperature\n",
" assert not jnp.isnan(loss_dist).any(), temperature\n",
" loss = loss_dist + loss_temperature\n",
"\n",
" return loss, metrics\n",
"\n",
"\n",
"params = {\n",
" 'mean': jnp.array([10.0, 10.0]),\n",
" 'log_temperature': jnp.array([10.]),\n",
" 'log_penalty_temperature': jnp.array([10.]),\n",
" 'log_alpha': jnp.array([10., 10.]),}\n",
"opt_state = optimizer.init(params)\n",
"slowdist = tfd.Independent(tfd.Normal(params['mean'], jax.lax.stop_gradient(std * jnp.ones_like(params['mean']))), 1)\n",
"\n",
"means = []\n",
"for i in range(3000):\n",
" if i % slowdist_update_freq == 0:\n",
" slowdist = tfd.Independent(tfd.Normal(params['mean'], jax.lax.stop_gradient(std * jnp.ones_like(params['mean']))), 1)\n",
" _, key = jax.random.split(key)\n",
" (loss, metrics), grads = jax.value_and_grad(loss_fn, has_aux=True)(params, key, slowdist)\n",
" updates, opt_state = optimizer.update(grads, opt_state)\n",
" params = optax.apply_updates(params, updates)\n",
" means.append(params['mean'])\n",
" if i % 50 == 0:\n",
" print(f'Iteration {i}')\n",
" print(f'\\t Loss: {loss}')\n",
" print(f'\\t Params: {params}')\n",
" print(f'\\t Metrics: {metrics}')\n",
" print(f'\\t Updates: {updates}')\n",
" print(f'\\t Grad: {grads}')"
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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Pkdz8Dmag8/RHHyO5rDiczzdiMcxLDgFAAC2InwAAABbET6CTHR0tBYuXKjo6GinSwlpfI7m4HM0B5+jOfgczREMn2PQLTgFAADhjZEPAABgK8IHAACwFeEDAADYivABAABsRfgIIk888YT69u2rmJgYjRo1SoWFhU6XFFLy8vI0YsQIJSQkqGfPnrryyiv12WefOV1WyHvooYfkcrk0Z84cp0sJOV999ZWuv/56JScnKzY2VkOGDNFHH33kdFkhxe/3a8GCBcrKylJsbKz69++vBx54oE3nh3Rla9as0dSpU5WRkSGXy6VXXnmlxc8Nw9C9996r9PR0xcbGatKkSdq+fbtt9RE+gsTf//53zZ07VwsXLlRRUZGGDh2qyZMnq6KiwunSQsZ7772nWbNmaf369Vq1apWampp0ySWXqLa21unSQtaGDRu0dOlS5ebmOl1KyDlw4IDGjRunyMhIvfXWWyopKdFvf/tbde/e3enSQsrDDz+sJ598Uo8//rg+/fRTPfzww3rkkUf0hz/8wenSglptba2GDh2qJ554otWfP/LII3rssce0ZMkSffjhh4qPj9fkyZNVX19vT4EGgsLIkSONWbNmNX/v9/uNjIwMIy8vz8GqQltFRYUhyXjvvfecLiUk1dTUGAMHDjRWrVplXHjhhcYdd9zhdEkh5a677jIuuOACp8sIeZdffrlx4403trh21VVXGdOmTXOootAjyXj55Zebvw8EAkZaWprx61//uvnawYMHjejoaOO5556zpSZGPoJAY2OjNm7cqEmTJjVfc7vdmjRpkgoKChysLLRVV1dLkpKSkhyuJDTNmjVLl19+eYu/l2i71157TcOHD9c111yjnj176rzzztNTTz3ldFkhZ+zYsVq9erW2bdsmSfr444+1du1aXXbZZQ5XFrpKS0tVXl7e4t9tr9erUaNG2fbMCbqD5bqiyspK+f1+paamtriempqqf/3rXw5VFdoCgYDmzJmjcePGKScnx+lyQs7zzz+voqIibdiwwelSQtauXbv05JNPau7cufrFL36hDRs26Pbbb1dUVJSmT5/udHkhY968efL5fBo0aJA8Ho/8fr8WLVqkadOmOV1ayCovL5ekVp85x35mNcIHwtKsWbNUXFystWvXOl1KyNmzZ4/uuOMOrVq1SjExMU6XE7ICgYCGDx+uBx98UJJ03nnnqbi4WEuWLCF8tMMLL7ygv/3tb1qxYoUGDx6szZs3a86cOcrIyOBzDGFMuwSBlJQUeTwe7du3r8X1ffv2KS0tzaGqQtfs2bP1xhtv6N1331WvXr2cLifkbNy4URUVFRo2bJgiIiIUERGh9957T4899pgiIiLk9/udLjEkpKenKzs7u8W1c845R1988YVDFYWmn/3sZ5o3b56uu+46DRkyRDfccIPuvPNO5eXlOV1ayDr2XHHymUP4CAJRUVE6//zztXr16uZrgUBAq1ev1pgxYxysLLQYhqHZs2fr5Zdf1jvvvKOsrCynSwpJEydO1NatW7V58+bmr+HDh2vatGnavHmzPB6P0yWGhHHjxp3wqve2bdvUp08fhyoKTXV1dXK7Wz6qPB6PAoGAQxWFvqysLKWlpbV45vh8Pn344Ye2PXOYdgkSc+fO1fTp0zV8+HCNHDlSixcvVm1trWbMmOF0aSFj1qxZWrFihV599VUlJCQ0z116vV7FxsY6XF3oSEhIOGGdTHx8vJKTk1k/0w533nmnxo4dqwcffFDXXnutCgsLtWzZMi1btszp0kLK1KlTtWjRIvXu3VuDBw/Wpk2b9Oijj+rGG290urSgdujQIe3YsaP5+9LSUm3evFlJSUnq3bu35syZo1/96lcaOHCgsrKytGDBAmVkZOjKK6+0p0Bb3qlBm/zhD38wevfubURFRRkjR4401q9f73RJIUVSq1/PPPOM06WFPF617ZjXX3/dyMnJMaKjo41BgwYZy5Ytc7qkkOPz+Yw77rjD6N27txETE2P069fPuPvuu42GhganSwtq7777bqv/PZw+fbphGEdft12wYIGRmppqREdHGxMnTjQ+++wz2+pzGQbbxAEAAPuw5gMAANiK8AEAAGxF+AAAALYifAAAAFsRPgAAgK0IHwAAwFaEDwAAYCvCBwAAsBXhAwAA2IrwAQAAbEX4AAAAtiJ8AAAAW/3/9GqkMFaugKQAAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"a = np.array(means)\n",
"plt.scatter(a[:, 0], a[:, 1])\n",
"plt.scatter(a[0, 0], a[0, 1], color='g')\n",
"# plt.scatter(target, target, color='r')\n",
"plt.plot([-1, 1], [1, 1], color='r')\n",
"plt.plot([-1, 1], [-1, -1], color='r')\n",
"plt.plot([-1, -1], [-1, 1], color='r')\n",
"plt.plot([1, 1], [-1, 1], color='r')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"plt.plot(means)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 0\n",
"\t Loss: 0.48589494824409485\n",
"\t Params: {'log_alpha': Array([9.99, 9.99], dtype=float32), 'log_penalty_temperature': Array([9.99], dtype=float32), 'log_temperature': Array([9.99], dtype=float32), 'mean': Array([1.99, 2.01], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.7199209, dtype=float32), 'loss_penalty_temperature': Array(-1.4340315, dtype=float32), 'loss_temperature': Array(1.0000046, dtype=float32), 'non_parametric_kl': Array(0., dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00042423, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00999992, -0.00999992], dtype=float32), 'log_penalty_temperature': Array([-0.00999976], dtype=float32), 'log_temperature': Array([-0.00999993], dtype=float32), 'mean': Array([-0.00999993, 0.00999993], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00999954, 0.00999954], dtype=float32), 'log_penalty_temperature': Array([0.00057578], dtype=float32), 'log_temperature': Array([0.09999543], dtype=float32), 'mean': Array([ 0.5403554, -0.5681403], dtype=float32)}\n",
"\t Slowdist: (Array([2., 2.], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 100\n",
"\t Loss: 0.38626179099082947\n",
"\t Params: {'log_alpha': Array([8.992878, 8.990478], dtype=float32), 'log_penalty_temperature': Array([9.024538], dtype=float32), 'log_temperature': Array([8.990006], dtype=float32), 'mean': Array([1.9993048, 2.0023365], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.7204943, dtype=float32), 'loss_penalty_temperature': Array(-1.4142807, dtype=float32), 'loss_temperature': Array(0.9000129, dtype=float32), 'non_parametric_kl': Array(0., dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00057536, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.01000603, -0.00991931], dtype=float32), 'log_penalty_temperature': Array([-0.00877801], dtype=float32), 'log_temperature': Array([-0.00999959], dtype=float32), 'mean': Array([-0.0025167 , 0.00116931], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00999877, 0.00999877], dtype=float32), 'log_penalty_temperature': Array([0.00042453], dtype=float32), 'log_temperature': Array([0.0999877], dtype=float32), 'mean': Array([ 0.7919506 , -0.19585393], dtype=float32)}\n",
"\t Slowdist: (Array([2.0018215, 2.0011673], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 200\n",
"\t Loss: 0.5832449197769165\n",
"\t Params: {'log_alpha': Array([7.9902987, 7.9908733], dtype=float32), 'log_penalty_temperature': Array([8.1854515], dtype=float32), 'log_temperature': Array([7.990103], dtype=float32), 'mean': Array([2.009327 , 2.0057862], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(1.0127838, dtype=float32), 'loss_penalty_temperature': Array(-1.3896015, dtype=float32), 'loss_temperature': Array(0.8000437, dtype=float32), 'non_parametric_kl': Array(0., dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00076604, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.01007875, -0.0099753 ], dtype=float32), 'log_penalty_temperature': Array([-0.0070219], dtype=float32), 'log_temperature': Array([-0.00999835], dtype=float32), 'mean': Array([-0.0023564 , 0.00095438], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00999664, 0.00999665], dtype=float32), 'log_penalty_temperature': Array([0.00023387], dtype=float32), 'log_temperature': Array([0.09996644], dtype=float32), 'mean': Array([0.96598744, 0.9090329 ], dtype=float32)}\n",
"\t Slowdist: (Array([2.0116832, 2.0048318], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 300\n",
"\t Loss: 0.05826491117477417\n",
"\t Params: {'log_alpha': Array([6.987654 , 6.9963055], dtype=float32), 'log_penalty_temperature': Array([7.508599], dtype=float32), 'log_temperature': Array([6.9904213], dtype=float32), 'mean': Array([2.0133703, 2.021823 ], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.6574119, dtype=float32), 'loss_penalty_temperature': Array(-1.4393355, dtype=float32), 'loss_temperature': Array(0.7001327, dtype=float32), 'non_parametric_kl': Array(0., dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00084413, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00999312, -0.009806 ], dtype=float32), 'log_penalty_temperature': Array([-0.00515563], dtype=float32), 'log_temperature': Array([-0.00999465], dtype=float32), 'mean': Array([ 0.00258124, -0.00360387], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00999087, 0.00999094], dtype=float32), 'log_penalty_temperature': Array([0.00015579], dtype=float32), 'log_temperature': Array([0.09990893], dtype=float32), 'mean': Array([-0.58560795, 1.0779083 ], dtype=float32)}\n",
"\t Slowdist: (Array([2.010789 , 2.0254269], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 400\n",
"\t Loss: 0.30656659603118896\n",
"\t Params: {'log_alpha': Array([5.989863, 5.999579], dtype=float32), 'log_penalty_temperature': Array([7.0235324], dtype=float32), 'log_temperature': Array([5.991402], dtype=float32), 'mean': Array([2.0024784, 2.01043 ], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(1.0522367, dtype=float32), 'loss_penalty_temperature': Array(-1.4661998, dtype=float32), 'loss_temperature': Array(0.60038584, dtype=float32), 'non_parametric_kl': Array(0., dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00114513, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00992742, -0.01008575], dtype=float32), 'log_penalty_temperature': Array([-0.00274716], dtype=float32), 'log_temperature': Array([-0.00998401], dtype=float32), 'mean': Array([ 0.00230019, -0.00075393], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00997527, 0.00997551], dtype=float32), 'log_penalty_temperature': Array([-0.00014494], dtype=float32), 'log_temperature': Array([0.09975307], dtype=float32), 'mean': Array([-0.43430525, -0.2679104 ], dtype=float32)}\n",
"\t Slowdist: (Array([2.000178, 2.011184], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 500\n",
"\t Loss: -0.056698769330978394\n",
"\t Params: {'log_alpha': Array([5.024377 , 5.0177097], dtype=float32), 'log_penalty_temperature': Array([6.7465873], dtype=float32), 'log_temperature': Array([4.9942617], dtype=float32), 'mean': Array([2.0223832, 2.0226328], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.7662944, dtype=float32), 'loss_penalty_temperature': Array(-1.424832, dtype=float32), 'loss_temperature': Array(0.5010903, dtype=float32), 'non_parametric_kl': Array(0., dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00099728, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.01003663, -0.00970492], dtype=float32), 'log_penalty_temperature': Array([-0.00167181], dtype=float32), 'log_temperature': Array([-0.00995409], dtype=float32), 'mean': Array([-0.00199603, 0.00121003], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00993532, 0.00993487], dtype=float32), 'log_penalty_temperature': Array([2.6026719e-06], dtype=float32), 'log_temperature': Array([0.09933352], dtype=float32), 'mean': Array([ 1.3728685 , -0.03071524], dtype=float32)}\n",
"\t Slowdist: (Array([2.0243793, 2.0214229], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 600\n",
"\t Loss: -0.37505072355270386\n",
"\t Params: {'log_alpha': Array([4.0242906, 4.0203586], dtype=float32), 'log_penalty_temperature': Array([6.687692], dtype=float32), 'log_temperature': Array([4.0023184], dtype=float32), 'mean': Array([2.0034206, 2.006138 ], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.5969576, dtype=float32), 'loss_penalty_temperature': Array(-1.4560175, dtype=float32), 'loss_temperature': Array(0.40301228, dtype=float32), 'non_parametric_kl': Array(0., dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00088668, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00988557, -0.00999509], dtype=float32), 'log_penalty_temperature': Array([-0.00236257], dtype=float32), 'log_temperature': Array([-0.00987229], dtype=float32), 'mean': Array([-0.00310783, 0.00024052], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00982608, 0.00982542], dtype=float32), 'log_penalty_temperature': Array([0.00011326], dtype=float32), 'log_temperature': Array([0.09822278], dtype=float32), 'mean': Array([ 0.03735625, -0.45226246], dtype=float32)}\n",
"\t Slowdist: (Array([2.0065284, 2.0058975], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 700\n",
"\t Loss: -0.4723517894744873\n",
"\t Params: {'log_alpha': Array([3.0500345, 3.0384471], dtype=float32), 'log_penalty_temperature': Array([6.555307], dtype=float32), 'log_temperature': Array([3.024243], dtype=float32), 'mean': Array([1.9649576, 1.9900335], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.53500116, dtype=float32), 'loss_penalty_temperature': Array(-1.3774451, dtype=float32), 'loss_temperature': Array(0.30809072, dtype=float32), 'non_parametric_kl': Array(0., dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00083905, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00975942, -0.00971999], dtype=float32), 'log_penalty_temperature': Array([-0.00033438], dtype=float32), 'log_temperature': Array([-0.00965884], dtype=float32), 'mean': Array([-0.00261138, 0.00052281], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00955203, 0.00954703], dtype=float32), 'log_penalty_temperature': Array([0.00016078], dtype=float32), 'log_temperature': Array([0.09540825], dtype=float32), 'mean': Array([0.55228657, 0.34433275], dtype=float32)}\n",
"\t Slowdist: (Array([1.967569 , 1.9895107], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 800\n",
"\t Loss: -0.37934017181396484\n",
"\t Params: {'log_alpha': Array([2.1406171, 2.1088328], dtype=float32), 'log_penalty_temperature': Array([6.643746], dtype=float32), 'log_temperature': Array([2.0805252], dtype=float32), 'mean': Array([1.9487295, 1.975047 ], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.7039587, dtype=float32), 'loss_penalty_temperature': Array(-1.3488435, dtype=float32), 'loss_temperature': Array(0.22063307, dtype=float32), 'non_parametric_kl': Array(0., dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00098052, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00868134, -0.0092011 ], dtype=float32), 'log_penalty_temperature': Array([0.00221696], dtype=float32), 'log_temperature': Array([-0.00915507], dtype=float32), 'mean': Array([ 0.00253179, -0.00010385], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00895603, 0.00892644], dtype=float32), 'log_penalty_temperature': Array([1.9493105e-05], dtype=float32), 'log_temperature': Array([0.08898961], dtype=float32), 'mean': Array([0.60005254, 0.42159754], dtype=float32)}\n",
"\t Slowdist: (Array([1.9461977, 1.9751508], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 900\n",
"\t Loss: -0.47689417004585266\n",
"\t Params: {'log_alpha': Array([1.2941847, 1.2398111], dtype=float32), 'log_penalty_temperature': Array([6.6119533], dtype=float32), 'log_temperature': Array([1.209866], dtype=float32), 'mean': Array([1.9591954, 1.969928 ], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.672686, dtype=float32), 'loss_penalty_temperature': Array(-1.327716, dtype=float32), 'loss_temperature': Array(0.14771825, dtype=float32), 'non_parametric_kl': Array(0., dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00099787, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00623151, -0.00824273], dtype=float32), 'log_penalty_temperature': Array([0.00071753], dtype=float32), 'log_temperature': Array([-0.00818303], dtype=float32), 'mean': Array([-0.00096734, -0.00164841], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00785905, 0.00776963], dtype=float32), 'log_penalty_temperature': Array([2.1111462e-06], dtype=float32), 'log_temperature': Array([0.077172], dtype=float32), 'mean': Array([1.0913274 , 0.76623327], dtype=float32)}\n",
"\t Slowdist: (Array([1.9601628, 1.9715765], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 1000\n",
"\t Loss: -0.43849456310272217\n",
"\t Params: {'log_alpha': Array([0.5829749 , 0.55818796], dtype=float32), 'log_penalty_temperature': Array([6.5943894], dtype=float32), 'log_temperature': Array([0.45890638], dtype=float32), 'mean': Array([1.8935105, 1.9568812], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.7864419, dtype=float32), 'loss_penalty_temperature': Array(-1.3406776, dtype=float32), 'loss_temperature': Array(0.09528756, dtype=float32), 'non_parametric_kl': Array(0., dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00095006, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00684806, -0.00586833], dtype=float32), 'log_penalty_temperature': Array([-0.00050934], dtype=float32), 'log_temperature': Array([-0.00681043], dtype=float32), 'mean': Array([-3.3961865e-04, 1.9497038e-05], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00643325, 0.00637391], dtype=float32), 'log_penalty_temperature': Array([4.9923146e-05], dtype=float32), 'log_temperature': Array([0.06143695], dtype=float32), 'mean': Array([ 0.02882566, -0.14189371], dtype=float32)}\n",
"\t Slowdist: (Array([1.8938501, 1.9568616], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 1100\n",
"\t Loss: -0.7183690071105957\n",
"\t Params: {'log_alpha': Array([ 0.07190983, -0.06525106], dtype=float32), 'log_penalty_temperature': Array([6.5413065], dtype=float32), 'log_temperature': Array([-0.15040292], dtype=float32), 'mean': Array([1.8542974, 1.9351246], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.47202608, dtype=float32), 'loss_penalty_temperature': Array(-1.2666891, dtype=float32), 'loss_temperature': Array(0.06232807, dtype=float32), 'non_parametric_kl': Array(0., dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00064767, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00587423, -0.00565061], dtype=float32), 'log_penalty_temperature': Array([-0.00246504], dtype=float32), 'log_temperature': Array([-0.00541953], dtype=float32), 'mean': Array([ 0.00384338, -0.00052311], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00519436, 0.00485104], dtype=float32), 'log_penalty_temperature': Array([0.0003519], dtype=float32), 'log_temperature': Array([0.04638175], dtype=float32), 'mean': Array([0.16494276, 0.64638025], dtype=float32)}\n",
"\t Slowdist: (Array([1.850454 , 1.9356477], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 1200\n",
"\t Loss: -0.33883675932884216\n",
"\t Params: {'log_alpha': Array([-0.30658388, -0.4717605 ], dtype=float32), 'log_penalty_temperature': Array([6.5475793], dtype=float32), 'log_temperature': Array([-0.6330766], dtype=float32), 'mean': Array([1.7614677, 1.9047223], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.7931469, dtype=float32), 'loss_penalty_temperature': Array(-1.185104, dtype=float32), 'loss_temperature': Array(0.04273852, dtype=float32), 'non_parametric_kl': Array(0., dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00108359, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00244294, -0.00195345], dtype=float32), 'log_penalty_temperature': Array([0.00066953], dtype=float32), 'log_temperature': Array([-0.00429875], dtype=float32), 'mean': Array([ 0.00024119, -0.00117829], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00424546, 0.00384662], dtype=float32), 'log_penalty_temperature': Array([-8.349264e-05], dtype=float32), 'log_temperature': Array([0.03477877], dtype=float32), 'mean': Array([0.18388186, 0.5941939 ], dtype=float32)}\n",
"\t Slowdist: (Array([1.7612265, 1.9059006], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 1300\n",
"\t Loss: -0.07564980536699295\n",
"\t Params: {'log_alpha': Array([-0.71924096, -0.81395394], dtype=float32), 'log_penalty_temperature': Array([6.591468], dtype=float32), 'log_temperature': Array([-1.0193971], dtype=float32), 'mean': Array([1.6711799, 1.8684354], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(1.0575967, dtype=float32), 'loss_penalty_temperature': Array(-1.1717963, dtype=float32), 'loss_temperature': Array(0.03090061, dtype=float32), 'non_parametric_kl': Array(0., dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00096734, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00243512, -0.00158517], dtype=float32), 'log_penalty_temperature': Array([1.16039855e-05], dtype=float32), 'log_temperature': Array([-0.00348137], dtype=float32), 'mean': Array([-0.00124618, -0.00151607], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00328097, 0.00307386], dtype=float32), 'log_penalty_temperature': Array([3.264638e-05], dtype=float32), 'log_temperature': Array([0.02658238], dtype=float32), 'mean': Array([-0.88345385, -0.17027438], dtype=float32)}\n",
"\t Slowdist: (Array([1.6724261, 1.8699515], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 1400\n",
"\t Loss: -0.08950022608041763\n",
"\t Params: {'log_alpha': Array([-1.0005636, -1.031226 ], dtype=float32), 'log_penalty_temperature': Array([6.509834], dtype=float32), 'log_temperature': Array([-1.3363887], dtype=float32), 'mean': Array([1.6164894, 1.7372513], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.88053566, dtype=float32), 'loss_penalty_temperature': Array(-0.99962384, dtype=float32), 'loss_temperature': Array(0.02339294, dtype=float32), 'non_parametric_kl': Array(0., dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00096601, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00263337, -0.00275709], dtype=float32), 'log_penalty_temperature': Array([0.00052862], dtype=float32), 'log_temperature': Array([-0.00289643], dtype=float32), 'mean': Array([-0.00088033, 0.00037097], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00269349, 0.00263381], dtype=float32), 'log_penalty_temperature': Array([3.3951907e-05], dtype=float32), 'log_temperature': Array([0.02085823], dtype=float32), 'mean': Array([0.01975106, 0.16146824], dtype=float32)}\n",
"\t Slowdist: (Array([1.6173698, 1.7368803], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 1500\n",
"\t Loss: 0.10572590678930283\n",
"\t Params: {'log_alpha': Array([-1.1550199, -1.2760484], dtype=float32), 'log_penalty_temperature': Array([6.415121], dtype=float32), 'log_temperature': Array([-1.6034839], dtype=float32), 'mean': Array([1.4417028, 1.6181877], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.87069184, dtype=float32), 'loss_penalty_temperature': Array(-0.78855175, dtype=float32), 'loss_temperature': Array(0.01837307, dtype=float32), 'non_parametric_kl': Array(0., dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00109604, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.0031911 , -0.00204667], dtype=float32), 'log_penalty_temperature': Array([0.0003904], dtype=float32), 'log_temperature': Array([-0.00247143], dtype=float32), 'mean': Array([-0.00176061, 0.00140082], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00240155, 0.00218573], dtype=float32), 'log_penalty_temperature': Array([-9.5972224e-05], dtype=float32), 'log_temperature': Array([0.01678402], dtype=float32), 'mean': Array([0.7196689 , 0.06541317], dtype=float32)}\n",
"\t Slowdist: (Array([1.4434634, 1.6167868], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 1600\n",
"\t Loss: 0.3289426267147064\n",
"\t Params: {'log_alpha': Array([-1.3779562, -1.5385824], dtype=float32), 'log_penalty_temperature': Array([6.3686275], dtype=float32), 'log_temperature': Array([-1.8338917], dtype=float32), 'mean': Array([1.2830744, 1.5767502], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.9890636, dtype=float32), 'loss_penalty_temperature': Array(-0.6791763, dtype=float32), 'loss_temperature': Array(0.01485365, dtype=float32), 'non_parametric_kl': Array(0., dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00090256, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00278836, -0.00169048], dtype=float32), 'log_penalty_temperature': Array([-0.00243795], dtype=float32), 'log_temperature': Array([-0.00215465], dtype=float32), 'mean': Array([-0.00366673, 0.00028807], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00201786, 0.00176988], dtype=float32), 'log_penalty_temperature': Array([9.730752e-05], dtype=float32), 'log_temperature': Array([0.01380315], dtype=float32), 'mean': Array([0.6677026 , 0.62343144], dtype=float32)}\n",
"\t Slowdist: (Array([1.2867411, 1.576462 ], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 1700\n",
"\t Loss: 0.26487991213798523\n",
"\t Params: {'log_alpha': Array([-1.6104323, -1.6123283], dtype=float32), 'log_penalty_temperature': Array([6.2255354], dtype=float32), 'log_temperature': Array([-2.0365977], dtype=float32), 'mean': Array([1.2099762, 1.3736261], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.80858874, dtype=float32), 'loss_penalty_temperature': Array(-0.55962497, dtype=float32), 'loss_temperature': Array(0.0122856, dtype=float32), 'non_parametric_kl': Array(0., dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00099774, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00012469, 0.00579932], dtype=float32), 'log_penalty_temperature': Array([-0.0016098], dtype=float32), 'log_temperature': Array([-0.00191217], dtype=float32), 'mean': Array([ 0.00558323, -0.00102937], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00166546, 0.00165463], dtype=float32), 'log_penalty_temperature': Array([2.2808442e-06], dtype=float32), 'log_temperature': Array([0.0115609], dtype=float32), 'mean': Array([-0.9892728, -0.9986051], dtype=float32)}\n",
"\t Slowdist: (Array([1.2043929, 1.3746555], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 1800\n",
"\t Loss: 0.71905118227005\n",
"\t Params: {'log_alpha': Array([-1.813717 , -1.7590309], dtype=float32), 'log_penalty_temperature': Array([5.8305917], dtype=float32), 'log_temperature': Array([-2.2178447], dtype=float32), 'mean': Array([1.173601 , 1.2468069], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(1.1764243, dtype=float32), 'loss_penalty_temperature': Array(-0.47082826, dtype=float32), 'loss_temperature': Array(0.01034867, dtype=float32), 'non_parametric_kl': Array(0., dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00119055, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00244736, -0.00255123], dtype=float32), 'log_penalty_temperature': Array([-0.00272762], dtype=float32), 'log_temperature': Array([-0.00172199], dtype=float32), 'mean': Array([-0.00032456, 0.00107128], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00140485, 0.00147232], dtype=float32), 'log_penalty_temperature': Array([-0.00018994], dtype=float32), 'log_temperature': Array([0.0098312], dtype=float32), 'mean': Array([-0.06363957, -1.4840741 ], dtype=float32)}\n",
"\t Slowdist: (Array([1.1739256, 1.2457355], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 1900\n",
"\t Loss: 0.2700989544391632\n",
"\t Params: {'log_alpha': Array([-1.9843779, -1.984129 ], dtype=float32), 'log_penalty_temperature': Array([5.828775], dtype=float32), 'log_temperature': Array([-2.3820794], dtype=float32), 'mean': Array([1.2608198, 1.2127216], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.7113207, dtype=float32), 'loss_penalty_temperature': Array(-0.45264933, dtype=float32), 'loss_temperature': Array(0.00884718, dtype=float32), 'non_parametric_kl': Array(0., dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00095067, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00210317, -0.00122771], dtype=float32), 'log_penalty_temperature': Array([-0.00220548], dtype=float32), 'log_temperature': Array([-0.00156959], dtype=float32), 'mean': Array([0.0010757 , 0.00107636], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00121077, 0.0012101 ], dtype=float32), 'log_penalty_temperature': Array([4.9154223e-05], dtype=float32), 'log_temperature': Array([0.00846711], dtype=float32), 'mean': Array([-0.3552358 , -0.26324248], dtype=float32)}\n",
"\t Slowdist: (Array([1.259744 , 1.2116452], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 2000\n",
"\t Loss: 0.5639240741729736\n",
"\t Params: {'log_alpha': Array([-2.1136417, -2.142192 ], dtype=float32), 'log_penalty_temperature': Array([5.539783], dtype=float32), 'log_temperature': Array([-2.5325553], dtype=float32), 'mean': Array([1.0863805, 1.1239536], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.83131915, dtype=float32), 'loss_penalty_temperature': Array(-0.27730554, dtype=float32), 'loss_temperature': Array(0.00765634, dtype=float32), 'non_parametric_kl': Array(0., dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00088018, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00166906, -0.00181505], dtype=float32), 'log_penalty_temperature': Array([-0.00603382], dtype=float32), 'log_temperature': Array([-0.00144518], dtype=float32), 'mean': Array([-0.00394974, 0.00316915], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00107939, 0.00105234], dtype=float32), 'log_penalty_temperature': Array([0.00011934], dtype=float32), 'log_temperature': Array([0.00737058], dtype=float32), 'mean': Array([0.75778717, 0.56609565], dtype=float32)}\n",
"\t Slowdist: (Array([1.0903302, 1.1207844], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 2100\n",
"\t Loss: 0.386263906955719\n",
"\t Params: {'log_alpha': Array([-2.2742171, -2.2462347], dtype=float32), 'log_penalty_temperature': Array([4.995144], dtype=float32), 'log_temperature': Array([-2.6717086], dtype=float32), 'mean': Array([0.99336016, 1.0540836 ], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.59873176, dtype=float32), 'loss_penalty_temperature': Array(-0.22115001, dtype=float32), 'loss_temperature': Array(0.00669358, dtype=float32), 'non_parametric_kl': Array(0., dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00090916, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00192246, -0.00198969], dtype=float32), 'log_penalty_temperature': Array([-0.00678547], dtype=float32), 'log_temperature': Array([-0.00134198], dtype=float32), 'mean': Array([-0.00134176, 0.00108523], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00093444, 0.00095847], dtype=float32), 'log_penalty_temperature': Array([9.023982e-05], dtype=float32), 'log_temperature': Array([0.00647448], dtype=float32), 'mean': Array([ 0.48044458, -1.0177667 ], dtype=float32)}\n",
"\t Slowdist: (Array([0.9947019, 1.0529983], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 2200\n",
"\t Loss: 0.1849360316991806\n",
"\t Params: {'log_alpha': Array([-2.4002688, -2.4197261], dtype=float32), 'log_penalty_temperature': Array([4.5854897], dtype=float32), 'log_temperature': Array([-2.8014035], dtype=float32), 'mean': Array([0.85853904, 1.0204238 ], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.32170644, dtype=float32), 'loss_penalty_temperature': Array(-0.14439498, dtype=float32), 'loss_temperature': Array(0.00590243, dtype=float32), 'non_parametric_kl': Array(0., dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00076417, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00060121, -0.00170178], dtype=float32), 'log_penalty_temperature': Array([-0.00588559], dtype=float32), 'log_temperature': Array([-0.00125519], dtype=float32), 'mean': Array([-0.0001468, -0.0040167], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00083198, 0.00081809], dtype=float32), 'log_penalty_temperature': Array([0.00023342], dtype=float32), 'log_temperature': Array([0.00573162], dtype=float32), 'mean': Array([-0.55491453, 0.0286716 ], dtype=float32)}\n",
"\t Slowdist: (Array([0.85868585, 1.0244405 ], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 2300\n",
"\t Loss: 0.4473106265068054\n",
"\t Params: {'log_alpha': Array([-2.540007, -2.483013], dtype=float32), 'log_penalty_temperature': Array([3.792916], dtype=float32), 'log_temperature': Array([-2.9230971], dtype=float32), 'mean': Array([0.8336165 , 0.88097906], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.5349268, dtype=float32), 'loss_penalty_temperature': Array(-0.09442136, dtype=float32), 'loss_temperature': Array(0.00524316, dtype=float32), 'non_parametric_kl': Array(0., dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00076899, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([ 0.0002761 , -0.00165652], dtype=float32), 'log_penalty_temperature': Array([-0.00691665], dtype=float32), 'log_temperature': Array([-0.00118132], dtype=float32), 'mean': Array([0.00037895, 0.0003383 ], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00073082, 0.00077176], dtype=float32), 'log_penalty_temperature': Array([0.00022585], dtype=float32), 'log_temperature': Array([0.00510808], dtype=float32), 'mean': Array([ 0.5534362, -0.8750114], dtype=float32)}\n",
"\t Slowdist: (Array([0.8332375 , 0.88064075], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 2400\n",
"\t Loss: 0.807602047920227\n",
"\t Params: {'log_alpha': Array([-2.6507826, -2.0357647], dtype=float32), 'log_penalty_temperature': Array([2.1145923], dtype=float32), 'log_temperature': Array([-2.9402852], dtype=float32), 'mean': Array([0.7194834 , 0.47410864], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.831452, dtype=float32), 'loss_penalty_temperature': Array(-0.03116937, dtype=float32), 'loss_temperature': Array(0.00540864, dtype=float32), 'non_parametric_kl': Array(0.00102571, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.0007985, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00033454, -0.00092696], dtype=float32), 'log_penalty_temperature': Array([-0.01689054], dtype=float32), 'log_temperature': Array([-0.0010934], dtype=float32), 'mean': Array([-0.001219 , 0.00106522], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00065961, 0.00115593], dtype=float32), 'log_penalty_temperature': Array([0.00018012], dtype=float32), 'log_temperature': Array([0.00497344], dtype=float32), 'mean': Array([-0.7813669 , 0.48359105], dtype=float32)}\n",
"\t Slowdist: (Array([0.72070235, 0.4730434 ], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 2500\n",
"\t Loss: 1.0776270627975464\n",
"\t Params: {'log_alpha': Array([-2.7716837, -0.1247569], dtype=float32), 'log_penalty_temperature': Array([1.5945727], dtype=float32), 'log_temperature': Array([-1.2691258], dtype=float32), 'mean': Array([ 0.66727597, -0.7238604 ], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.44543827, dtype=float32), 'loss_penalty_temperature': Array(-0.0440731, dtype=float32), 'loss_temperature': Array(0.6693616, dtype=float32), 'non_parametric_kl': Array(0.6907245, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00164663, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00145355, 0.00735338], dtype=float32), 'log_penalty_temperature': Array([0.0164979], dtype=float32), 'log_temperature': Array([0.02427382], dtype=float32), 'mean': Array([0.00040383, 0.00175113], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00058954, 0.0046702 ], dtype=float32), 'log_penalty_temperature': Array([-0.00053604], dtype=float32), 'log_temperature': Array([-0.12717003], dtype=float32), 'mean': Array([-0.8134592, 0.3306723], dtype=float32)}\n",
"\t Slowdist: (Array([ 0.66687214, -0.7256115 ], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 2600\n",
"\t Loss: 1.1849126815795898\n",
"\t Params: {'log_alpha': Array([-2.90543 , -0.13347557], dtype=float32), 'log_penalty_temperature': Array([2.2388756], dtype=float32), 'log_temperature': Array([-0.01948936], dtype=float32), 'mean': Array([ 0.6704495, -0.7375241], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.6538851, dtype=float32), 'loss_penalty_temperature': Array(-0.05011825, dtype=float32), 'loss_temperature': Array(0.57432216, dtype=float32), 'non_parametric_kl': Array(0.14861362, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00107078, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00138012, -0.00082077], dtype=float32), 'log_penalty_temperature': Array([-0.00057357], dtype=float32), 'log_temperature': Array([0.00458906], dtype=float32), 'mean': Array([-0.00421568, 0.00028569], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00051954, 0.00466885], dtype=float32), 'log_penalty_temperature': Array([-6.403944e-05], dtype=float32), 'log_temperature': Array([-0.02401413], dtype=float32), 'mean': Array([1.4939733, 0.9184401], dtype=float32)}\n",
"\t Slowdist: (Array([ 0.67466515, -0.7378098 ], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 2700\n",
"\t Loss: 1.0896447896957397\n",
"\t Params: {'log_alpha': Array([-2.9969327 , -0.21730313], dtype=float32), 'log_penalty_temperature': Array([1.9763631], dtype=float32), 'log_temperature': Array([0.19751509], dtype=float32), 'mean': Array([ 0.58097744, -0.72799224], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.4862138, dtype=float32), 'loss_penalty_temperature': Array(-0.03220581, dtype=float32), 'loss_temperature': Array(0.6292412, dtype=float32), 'non_parametric_kl': Array(0.11710127, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00095759, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00135964, -0.00084123], dtype=float32), 'log_penalty_temperature': Array([0.00265772], dtype=float32), 'log_temperature': Array([0.00117455], dtype=float32), 'mean': Array([0.0028756 , 0.00068726], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00047626, 0.00446095], dtype=float32), 'log_penalty_temperature': Array([3.7217927e-05], dtype=float32), 'log_temperature': Array([-0.00938742], dtype=float32), 'mean': Array([-0.42442703, 0.02910042], dtype=float32)}\n",
"\t Slowdist: (Array([ 0.5781018, -0.7286795], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 2800\n",
"\t Loss: 1.1050753593444824\n",
"\t Params: {'log_alpha': Array([-3.050156 , -0.3000981], dtype=float32), 'log_penalty_temperature': Array([2.2251701], dtype=float32), 'log_temperature': Array([0.24977182], dtype=float32), 'mean': Array([ 0.6046459 , -0.74899316], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.5832055, dtype=float32), 'loss_penalty_temperature': Array(-0.04146791, dtype=float32), 'loss_temperature': Array(0.557328, dtype=float32), 'non_parametric_kl': Array(0.09781045, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00091025, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00085679, -0.00084522], dtype=float32), 'log_penalty_temperature': Array([-0.0023049], dtype=float32), 'log_temperature': Array([-5.6389345e-05], dtype=float32), 'mean': Array([-0.00302355, -0.00158246], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00045248, 0.0042574 ], dtype=float32), 'log_penalty_temperature': Array([8.102108e-05], dtype=float32), 'log_temperature': Array([0.00123086], dtype=float32), 'mean': Array([1.0552318, 1.2339742], dtype=float32)}\n",
"\t Slowdist: (Array([ 0.6076695, -0.7474107], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 2900\n",
"\t Loss: 1.1336313486099243\n",
"\t Params: {'log_alpha': Array([-3.1656106, -0.3838625], dtype=float32), 'log_penalty_temperature': Array([1.9065849], dtype=float32), 'log_temperature': Array([0.26086798], dtype=float32), 'mean': Array([ 0.55069506, -0.7249758 ], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.49479327, dtype=float32), 'loss_penalty_temperature': Array(-0.02007033, dtype=float32), 'loss_temperature': Array(0.65329623, dtype=float32), 'non_parametric_kl': Array(0.09038533, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00061032, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00113085, -0.00079649], dtype=float32), 'log_penalty_temperature': Array([-0.00456058], dtype=float32), 'log_temperature': Array([0.00012203], dtype=float32), 'mean': Array([-2.933957e-03, 8.031288e-05], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00040525, 0.00405388], dtype=float32), 'log_penalty_temperature': Array([0.00033952], dtype=float32), 'log_temperature': Array([0.00543056], dtype=float32), 'mean': Array([ 1.3653088 , -0.13983467], dtype=float32)}\n",
"\t Slowdist: (Array([ 0.55362904, -0.7250561 ], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 3000\n",
"\t Loss: 1.3241337537765503\n",
"\t Params: {'log_alpha': Array([-3.2374494 , -0.46905267], dtype=float32), 'log_penalty_temperature': Array([1.7561283], dtype=float32), 'log_temperature': Array([0.27198327], dtype=float32), 'mean': Array([ 0.4894797 , -0.72456414], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.8379046, dtype=float32), 'loss_penalty_temperature': Array(-0.04172703, dtype=float32), 'loss_temperature': Array(0.5227087, dtype=float32), 'non_parametric_kl': Array(0.1108341, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00112506, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.0011386 , -0.00082004], dtype=float32), 'log_penalty_temperature': Array([-0.00068704], dtype=float32), 'log_temperature': Array([-0.00011344], dtype=float32), 'mean': Array([-0.00121486, -0.00156431], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00037822, 0.00385035], dtype=float32), 'log_penalty_temperature': Array([-0.00010664], dtype=float32), 'log_temperature': Array([-0.0061495], dtype=float32), 'mean': Array([0.31977478, 0.7613824 ], dtype=float32)}\n",
"\t Slowdist: (Array([ 0.49069455, -0.7229998 ], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 3100\n",
"\t Loss: 1.0049031972885132\n",
"\t Params: {'log_alpha': Array([-3.3247452, -0.5532442], dtype=float32), 'log_penalty_temperature': Array([1.9008057], dtype=float32), 'log_temperature': Array([0.25763676], dtype=float32), 'mean': Array([ 0.61811864, -0.71893704], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.43998265, dtype=float32), 'loss_penalty_temperature': Array(-0.01837213, dtype=float32), 'loss_temperature': Array(0.57839257, dtype=float32), 'non_parametric_kl': Array(0.09526702, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00046313, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00112125, -0.00085481], dtype=float32), 'log_penalty_temperature': Array([0.00314032], dtype=float32), 'log_temperature': Array([-4.903485e-05], dtype=float32), 'mean': Array([0.00244115, 0.00095713], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.0003477, 0.0036531], dtype=float32), 'log_penalty_temperature': Array([0.00046684], dtype=float32), 'log_temperature': Array([0.0026697], dtype=float32), 'mean': Array([ 0.47684246, -0.9267983 ], dtype=float32)}\n",
"\t Slowdist: (Array([ 0.6156775, -0.7198942], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 3200\n",
"\t Loss: 1.0701980590820312\n",
"\t Params: {'log_alpha': Array([-3.4265258, -0.6381286], dtype=float32), 'log_penalty_temperature': Array([1.8629454], dtype=float32), 'log_temperature': Array([0.2606489], dtype=float32), 'mean': Array([ 0.52374595, -0.7276362 ], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.5222799, dtype=float32), 'loss_penalty_temperature': Array(-0.03600911, dtype=float32), 'loss_temperature': Array(0.5793633, dtype=float32), 'non_parametric_kl': Array(0.10843924, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00137433, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([ 0.00030086, -0.0008235 ], dtype=float32), 'log_penalty_temperature': Array([-0.00200374], dtype=float32), 'log_temperature': Array([0.00020241], dtype=float32), 'mean': Array([ 0.00032308, -0.00079445], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00031468, 0.00345856], dtype=float32), 'log_penalty_temperature': Array([-0.00032414], dtype=float32), 'log_temperature': Array([-0.00476607], dtype=float32), 'mean': Array([-1.5116683 , 0.48110563], dtype=float32)}\n",
"\t Slowdist: (Array([ 0.5234229 , -0.72684175], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 3300\n",
"\t Loss: 1.2888963222503662\n",
"\t Params: {'log_alpha': Array([-3.4827292, -0.723467 ], dtype=float32), 'log_penalty_temperature': Array([1.841365], dtype=float32), 'log_temperature': Array([0.26143354], dtype=float32), 'mean': Array([ 0.58266836, -0.7255762 ], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.7518214, dtype=float32), 'loss_penalty_temperature': Array(-0.0330327, dtype=float32), 'loss_temperature': Array(0.56584734, dtype=float32), 'non_parametric_kl': Array(0.11011819, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00085835, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00112124, -0.0008573 ], dtype=float32), 'log_penalty_temperature': Array([-0.00145335], dtype=float32), 'log_temperature': Array([5.8486923e-05], dtype=float32), 'mean': Array([-0.00024395, -0.00027 ], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.0002984 , 0.00326819], dtype=float32), 'log_penalty_temperature': Array([0.00012231], dtype=float32), 'log_temperature': Array([-0.00571653], dtype=float32), 'mean': Array([-0.061869 , -0.0683924], dtype=float32)}\n",
"\t Slowdist: (Array([ 0.5829123, -0.7253062], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 3400\n",
"\t Loss: 1.181031346321106\n",
"\t Params: {'log_alpha': Array([-3.5839734, -0.8049648], dtype=float32), 'log_penalty_temperature': Array([1.7659545], dtype=float32), 'log_temperature': Array([0.2601185], dtype=float32), 'mean': Array([ 0.46356493, -0.7305318 ], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.5776532, dtype=float32), 'loss_penalty_temperature': Array(-0.02271618, dtype=float32), 'loss_temperature': Array(0.62212217, dtype=float32), 'non_parametric_kl': Array(0.10688792, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00092324, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00034355, -0.00084434], dtype=float32), 'log_penalty_temperature': Array([-0.00100898], dtype=float32), 'log_temperature': Array([0.00043917], dtype=float32), 'mean': Array([-0.00444987, 0.00079763], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00027024, 0.00309145], dtype=float32), 'log_penalty_temperature': Array([6.551496e-05], dtype=float32), 'log_temperature': Array([-0.00388864], dtype=float32), 'mean': Array([ 0.25994802, -0.5126397 ], dtype=float32)}\n",
"\t Slowdist: (Array([ 0.4680148 , -0.73132944], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 3500\n",
"\t Loss: 1.2093379497528076\n",
"\t Params: {'log_alpha': Array([-3.6777506 , -0.88798785], dtype=float32), 'log_penalty_temperature': Array([1.8160655], dtype=float32), 'log_temperature': Array([0.25180104], dtype=float32), 'mean': Array([ 0.44064492, -0.7212805 ], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.73009145, dtype=float32), 'loss_penalty_temperature': Array(-0.02735094, dtype=float32), 'loss_temperature': Array(0.5028988, dtype=float32), 'non_parametric_kl': Array(0.10871886, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00071977, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00059779, -0.00083397], dtype=float32), 'log_penalty_temperature': Array([-0.00296857], dtype=float32), 'log_temperature': Array([-8.2723756e-07], dtype=float32), 'mean': Array([-0.00175002, 0.00113147], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00024671, 0.00291698], dtype=float32), 'log_penalty_temperature': Array([0.00024108], dtype=float32), 'log_temperature': Array([-0.00490544], dtype=float32), 'mean': Array([-0.8181232 , -0.34866244], dtype=float32)}\n",
"\t Slowdist: (Array([ 0.44239494, -0.722412 ], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 3600\n",
"\t Loss: 1.2618625164031982\n",
"\t Params: {'log_alpha': Array([-3.7612443 , -0.97024506], dtype=float32), 'log_penalty_temperature': Array([1.5728055], dtype=float32), 'log_temperature': Array([0.2610512], dtype=float32), 'mean': Array([ 0.42576486, -0.69376504], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.7618042, dtype=float32), 'loss_penalty_temperature': Array(-0.03891052, dtype=float32), 'loss_temperature': Array(0.5355232, dtype=float32), 'non_parametric_kl': Array(0.09681669, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00134723, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00063297, -0.00074933], dtype=float32), 'log_penalty_temperature': Array([-0.00064625], dtype=float32), 'log_temperature': Array([5.994808e-05], dtype=float32), 'mean': Array([0.00238505, 0.00096242], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.0002274 , 0.00274981], dtype=float32), 'log_penalty_temperature': Array([-0.00028766], dtype=float32), 'log_temperature': Array([0.00179814], dtype=float32), 'mean': Array([-0.00766396, 1.1881571 ], dtype=float32)}\n",
"\t Slowdist: (Array([ 0.4233798, -0.6947275], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 3700\n",
"\t Loss: 1.1228140592575073\n",
"\t Params: {'log_alpha': Array([-3.851477 , -1.0469788], dtype=float32), 'log_penalty_temperature': Array([1.5722681], dtype=float32), 'log_temperature': Array([0.26480272], dtype=float32), 'mean': Array([ 0.4433347 , -0.70881426], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.52717745, dtype=float32), 'loss_penalty_temperature': Array(-0.02492876, dtype=float32), 'loss_temperature': Array(0.61734444, dtype=float32), 'non_parametric_kl': Array(0.10197209, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00100559, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00076744, -0.00081917], dtype=float32), 'log_penalty_temperature': Array([0.00473213], dtype=float32), 'log_temperature': Array([-0.00014354], dtype=float32), 'mean': Array([-0.00025343, -0.00068419], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00020822, 0.00259963], dtype=float32), 'log_penalty_temperature': Array([-4.641458e-06], dtype=float32), 'log_temperature': Array([-0.00111585], dtype=float32), 'mean': Array([0.1140548 , 0.01734571], dtype=float32)}\n",
"\t Slowdist: (Array([ 0.44358814, -0.70813006], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 3800\n",
"\t Loss: 0.9663702845573425\n",
"\t Params: {'log_alpha': Array([-3.9443755, -1.1271405], dtype=float32), 'log_penalty_temperature': Array([1.6506819], dtype=float32), 'log_temperature': Array([0.26421005], dtype=float32), 'mean': Array([ 0.46401244, -0.7176855 ], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.47267574, dtype=float32), 'loss_penalty_temperature': Array(-0.02276553, dtype=float32), 'loss_temperature': Array(0.5134599, dtype=float32), 'non_parametric_kl': Array(0.10405714, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00056215, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00085301, -0.00079027], dtype=float32), 'log_penalty_temperature': Array([-0.00293026], dtype=float32), 'log_temperature': Array([0.00012505], dtype=float32), 'mean': Array([ 0.00014212, -0.00105504], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00019011, 0.00244835], dtype=float32), 'log_penalty_temperature': Array([0.0003675], dtype=float32), 'log_temperature': Array([-0.00229491], dtype=float32), 'mean': Array([-0.5024124 , -0.08042979], dtype=float32)}\n",
"\t Slowdist: (Array([ 0.46387032, -0.71663046], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 3900\n",
"\t Loss: 1.122465968132019\n",
"\t Params: {'log_alpha': Array([-4.027606 , -1.1944473], dtype=float32), 'log_penalty_temperature': Array([1.9318701], dtype=float32), 'log_temperature': Array([0.26118097], dtype=float32), 'mean': Array([ 0.53312 , -0.7526177], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.57634616, dtype=float32), 'loss_penalty_temperature': Array(-0.02874156, dtype=float32), 'loss_temperature': Array(0.5720372, dtype=float32), 'non_parametric_kl': Array(0.09460305, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00073378, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00050246, -0.00078448], dtype=float32), 'log_penalty_temperature': Array([-0.00052318], dtype=float32), 'log_temperature': Array([0.00029714], dtype=float32), 'mean': Array([-0.0016112 , 0.00095536], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00017514, 0.00232604], dtype=float32), 'log_penalty_temperature': Array([0.00023249], dtype=float32), 'log_temperature': Array([0.00304851], dtype=float32), 'mean': Array([-0.03702972, -0.34394398], dtype=float32)}\n",
"\t Slowdist: (Array([ 0.53473115, -0.75357306], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 4000\n",
"\t Loss: 1.2240368127822876\n",
"\t Params: {'log_alpha': Array([-4.0519753, -1.2736094], dtype=float32), 'log_penalty_temperature': Array([1.6932304], dtype=float32), 'log_temperature': Array([0.27610442], dtype=float32), 'mean': Array([ 0.41210034, -0.7141145 ], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.7755399, dtype=float32), 'loss_penalty_temperature': Array(-0.04049371, dtype=float32), 'loss_temperature': Array(0.48634902, dtype=float32), 'non_parametric_kl': Array(0.09594899, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00150162, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00086878, -0.00081985], dtype=float32), 'log_penalty_temperature': Array([-0.00319381], dtype=float32), 'log_temperature': Array([0.0001152], dtype=float32), 'mean': Array([ 0.00258497, -0.00011732], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00017105, 0.0021878 ], dtype=float32), 'log_penalty_temperature': Array([-0.00042386], dtype=float32), 'log_temperature': Array([0.00230322], dtype=float32), 'mean': Array([-0.76216596, 0.6284508 ], dtype=float32)}\n",
"\t Slowdist: (Array([ 0.40951538, -0.7139972 ], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 4100\n",
"\t Loss: 1.1584421396255493\n",
"\t Params: {'log_alpha': Array([-4.1143885, -1.3473631], dtype=float32), 'log_penalty_temperature': Array([1.8222681], dtype=float32), 'log_temperature': Array([0.26632312], dtype=float32), 'mean': Array([ 0.32905233, -0.7514241 ], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.5818955, dtype=float32), 'loss_penalty_temperature': Array(-0.03542287, dtype=float32), 'loss_temperature': Array(0.6094952, dtype=float32), 'non_parametric_kl': Array(0.0970925, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00091967, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00080697, -0.00079886], dtype=float32), 'log_penalty_temperature': Array([-0.00224021], dtype=float32), 'log_temperature': Array([-0.00015753], dtype=float32), 'mean': Array([-0.00361085, 0.00064184], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00016086, 0.00206433], dtype=float32), 'log_penalty_temperature': Array([6.915838e-05], dtype=float32), 'log_temperature': Array([0.00164631], dtype=float32), 'mean': Array([-0.13039285, 0.53584063], dtype=float32)}\n",
"\t Slowdist: (Array([ 0.33266318, -0.7520659 ], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 4200\n",
"\t Loss: 1.2270063161849976\n",
"\t Params: {'log_alpha': Array([-4.185161 , -1.4265808], dtype=float32), 'log_penalty_temperature': Array([1.710859], dtype=float32), 'log_temperature': Array([0.27631286], dtype=float32), 'mean': Array([ 0.16631529, -0.7396459 ], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.6433314, dtype=float32), 'loss_penalty_temperature': Array(-0.0273851, dtype=float32), 'loss_temperature': Array(0.6087552, dtype=float32), 'non_parametric_kl': Array(0.10068294, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.0010332, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00069026, -0.00080192], dtype=float32), 'log_penalty_temperature': Array([0.00342814], dtype=float32), 'log_temperature': Array([0.00097706], dtype=float32), 'mean': Array([-0.00059863, -0.00081224], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00015002, 0.00193757], dtype=float32), 'log_penalty_temperature': Array([-2.8080945e-05], dtype=float32), 'log_temperature': Array([-0.0003881], dtype=float32), 'mean': Array([-0.22788152, -0.28456947], dtype=float32)}\n",
"\t Slowdist: (Array([ 0.16691391, -0.73883367], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 4300\n",
"\t Loss: 1.6039652824401855\n",
"\t Params: {'log_alpha': Array([-4.2492313, -1.5023878], dtype=float32), 'log_penalty_temperature': Array([1.6711892], dtype=float32), 'log_temperature': Array([0.33737296], dtype=float32), 'mean': Array([-0.02048574, -0.72920686], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(1.0335717, dtype=float32), 'loss_penalty_temperature': Array(-0.02639404, dtype=float32), 'loss_temperature': Array(0.5946347, dtype=float32), 'non_parametric_kl': Array(0.09536084, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00127711, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([ 0.00034723, -0.00077427], dtype=float32), 'log_penalty_temperature': Array([0.00069473], dtype=float32), 'log_temperature': Array([0.00202298], dtype=float32), 'mean': Array([-0.00384609, 0.00053002], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00014069, 0.00182185], dtype=float32), 'log_penalty_temperature': Array([-0.00023326], dtype=float32), 'log_temperature': Array([0.00270486], dtype=float32), 'mean': Array([0.42479032, 0.11346817], dtype=float32)}\n",
"\t Slowdist: (Array([-0.01663966, -0.72973686], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 4400\n",
"\t Loss: 1.514448642730713\n",
"\t Params: {'log_alpha': Array([-3.5384283, -1.5791984], dtype=float32), 'log_penalty_temperature': Array([2.0800655], dtype=float32), 'log_temperature': Array([0.8126696], dtype=float32), 'mean': Array([-0.744469 , -0.7174425], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.50046575, dtype=float32), 'loss_penalty_temperature': Array(-0.04429352, dtype=float32), 'loss_temperature': Array(1.0561153, dtype=float32), 'non_parametric_kl': Array(0.11013103, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00080171, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([ 0.00274924, -0.000682 ], dtype=float32), 'log_penalty_temperature': Array([0.00855682], dtype=float32), 'log_temperature': Array([0.00104446], dtype=float32), 'mean': Array([0.00032547, 0.00299666], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00028163, 0.00171006], dtype=float32), 'log_penalty_temperature': Array([0.00017609], dtype=float32), 'log_temperature': Array([-0.00701553], dtype=float32), 'mean': Array([-0.19172704, -0.80204546], dtype=float32)}\n",
"\t Slowdist: (Array([-0.7447944, -0.7204392], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 4500\n",
"\t Loss: 1.663645625114441\n",
"\t Params: {'log_alpha': Array([-3.6635332, -1.6502742], dtype=float32), 'log_penalty_temperature': Array([2.4568334], dtype=float32), 'log_temperature': Array([0.8212998], dtype=float32), 'mean': Array([-0.75720745, -0.71485555], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.68455225, dtype=float32), 'loss_penalty_temperature': Array(-0.06745453, dtype=float32), 'loss_temperature': Array(1.0445368, dtype=float32), 'non_parametric_kl': Array(0.09013426, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00132168, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00140537, -0.00076152], dtype=float32), 'log_penalty_temperature': Array([0.00207205], dtype=float32), 'log_temperature': Array([0.00068202], dtype=float32), 'mean': Array([ 0.00146965, -0.00067934], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00025035, 0.00161175], dtype=float32), 'log_penalty_temperature': Array([-0.00029617], dtype=float32), 'log_temperature': Array([0.00685032], dtype=float32), 'mean': Array([-0.10970869, 0.36649236], dtype=float32)}\n",
"\t Slowdist: (Array([-0.7586771 , -0.71417624], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 4600\n",
"\t Loss: 1.4971905946731567\n",
"\t Params: {'log_alpha': Array([-3.8013675, -1.7223854], dtype=float32), 'log_penalty_temperature': Array([2.5233548], dtype=float32), 'log_temperature': Array([0.8108527], dtype=float32), 'mean': Array([-0.71630305, -0.7579638 ], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.5321878, dtype=float32), 'loss_penalty_temperature': Array(-0.0625668, dtype=float32), 'loss_temperature': Array(1.0257037, dtype=float32), 'non_parametric_kl': Array(0.10401039, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00092551, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00133337, -0.00073467], dtype=float32), 'log_penalty_temperature': Array([-0.00116487], dtype=float32), 'log_temperature': Array([-0.00098486], dtype=float32), 'mean': Array([-0.00130582, 0.0013094 ], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00021881, 0.00151659], dtype=float32), 'log_penalty_temperature': Array([6.891848e-05], dtype=float32), 'log_temperature': Array([-0.00277725], dtype=float32), 'mean': Array([ 0.70091206, -0.88403124], dtype=float32)}\n",
"\t Slowdist: (Array([-0.71499723, -0.7592732 ], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 4700\n",
"\t Loss: 1.3900542259216309\n",
"\t Params: {'log_alpha': Array([-3.9257853, -1.7923344], dtype=float32), 'log_penalty_temperature': Array([2.3465612], dtype=float32), 'log_temperature': Array([0.81377214], dtype=float32), 'mean': Array([-0.6836508 , -0.72696185], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.32857886, dtype=float32), 'loss_penalty_temperature': Array(-0.03074341, dtype=float32), 'loss_temperature': Array(1.0904816, dtype=float32), 'non_parametric_kl': Array(0.10139387, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00064895, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00121205, -0.00057959], dtype=float32), 'log_penalty_temperature': Array([-0.00482991], dtype=float32), 'log_temperature': Array([0.00014371], dtype=float32), 'mean': Array([0.00015078, 0.00077108], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00019368, 0.00142858], dtype=float32), 'log_penalty_temperature': Array([0.00032046], dtype=float32), 'log_temperature': Array([-0.00096583], dtype=float32), 'mean': Array([0.3600305 , 0.02879279], dtype=float32)}\n",
"\t Slowdist: (Array([-0.6838016 , -0.72773296], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 4800\n",
"\t Loss: 1.6036906242370605\n",
"\t Params: {'log_alpha': Array([-4.0530195, -1.8539323], dtype=float32), 'log_penalty_temperature': Array([2.226617], dtype=float32), 'log_temperature': Array([0.79812455], dtype=float32), 'mean': Array([-0.66787577, -0.7554579 ], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.7102695, dtype=float32), 'loss_penalty_temperature': Array(-0.04689189, dtype=float32), 'loss_temperature': Array(0.9386847, dtype=float32), 'non_parametric_kl': Array(0.09693679, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00102954, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00130544, -0.00058217], dtype=float32), 'log_penalty_temperature': Array([0.00228509], dtype=float32), 'log_temperature': Array([-0.00092893], dtype=float32), 'mean': Array([-0.00117062, 0.00081603], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00017095, 0.0013548 ], dtype=float32), 'log_penalty_temperature': Array([-2.6652073e-05], dtype=float32), 'log_temperature': Array([0.00211281], dtype=float32), 'mean': Array([ 0.0345919, -1.0083373], dtype=float32)}\n",
"\t Slowdist: (Array([-0.66670513, -0.7562739 ], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 4900\n",
"\t Loss: 1.4418822526931763\n",
"\t Params: {'log_alpha': Array([-4.1483197, -1.9198583], dtype=float32), 'log_penalty_temperature': Array([2.4031074], dtype=float32), 'log_temperature': Array([0.83371115], dtype=float32), 'mean': Array([-0.7210007, -0.7459882], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.48020983, dtype=float32), 'loss_penalty_temperature': Array(-0.04381658, dtype=float32), 'loss_temperature': Array(1.0039631, dtype=float32), 'non_parametric_kl': Array(0.13607621, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00060268, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00087584, -0.00061502], dtype=float32), 'log_penalty_temperature': Array([0.0010249], dtype=float32), 'log_temperature': Array([0.00166394], dtype=float32), 'mean': Array([-0.00055742, -0.00239924], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00015559, 0.00127946], dtype=float32), 'log_penalty_temperature': Array([0.00036428], dtype=float32), 'log_temperature': Array([-0.02513746], dtype=float32), 'mean': Array([-1.0582699, -0.5433248], dtype=float32)}\n",
"\t Slowdist: (Array([-0.72044325, -0.7435889 ], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 5000\n",
"\t Loss: 1.992458701133728\n",
"\t Params: {'log_alpha': Array([-4.2593904, -1.9901031], dtype=float32), 'log_penalty_temperature': Array([2.3384607], dtype=float32), 'log_temperature': Array([0.7984999], dtype=float32), 'mean': Array([-0.6703219, -0.7522469], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(1.0373766, dtype=float32), 'loss_penalty_temperature': Array(-0.058481, dtype=float32), 'loss_temperature': Array(1.0121406, dtype=float32), 'non_parametric_kl': Array(0.09948082, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00133776, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00111993, -0.00062169], dtype=float32), 'log_penalty_temperature': Array([-0.00160528], dtype=float32), 'log_temperature': Array([-0.00055077], dtype=float32), 'mean': Array([0.00032455, 0.00179996], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00013949, 0.00120312], dtype=float32), 'log_penalty_temperature': Array([-0.00030819], dtype=float32), 'log_temperature': Array([0.00035829], dtype=float32), 'mean': Array([-0.22516556, -0.7188325 ], dtype=float32)}\n",
"\t Slowdist: (Array([-0.6706464 , -0.75404686], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 5100\n",
"\t Loss: 1.5075807571411133\n",
"\t Params: {'log_alpha': Array([-4.3565655, -2.051661 ], dtype=float32), 'log_penalty_temperature': Array([2.3581972], dtype=float32), 'log_temperature': Array([0.8143744], dtype=float32), 'mean': Array([-0.7160674, -0.7574166], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.5423977, dtype=float32), 'loss_penalty_temperature': Array(-0.04958641, dtype=float32), 'loss_temperature': Array(1.0134321, dtype=float32), 'non_parametric_kl': Array(0.11238277, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00099535, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.0010489 , -0.00056574], dtype=float32), 'log_penalty_temperature': Array([0.00451593], dtype=float32), 'log_temperature': Array([0.00028257], dtype=float32), 'mean': Array([0.00164637, 0.00042726], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00012673, 0.00113942], dtype=float32), 'log_penalty_temperature': Array([4.2677448e-06], dtype=float32), 'log_temperature': Array([-0.00858098], dtype=float32), 'mean': Array([ 0.4793455, -0.9757123], dtype=float32)}\n",
"\t Slowdist: (Array([-0.7177137 , -0.75784385], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 5200\n",
"\t Loss: 1.4910800457000732\n",
"\t Params: {'log_alpha': Array([-4.4529047, -2.1006014], dtype=float32), 'log_penalty_temperature': Array([2.5718637], dtype=float32), 'log_temperature': Array([0.77714586], dtype=float32), 'mean': Array([-0.77477914, -0.72820705], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.5282289, dtype=float32), 'loss_penalty_temperature': Array(-0.06596357, dtype=float32), 'loss_temperature': Array(1.0275443, dtype=float32), 'non_parametric_kl': Array(0.11360885, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00126331, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-1.0189972e-03, -6.5966335e-05], dtype=float32), 'log_penalty_temperature': Array([0.00589109], dtype=float32), 'log_temperature': Array([0.00041908], dtype=float32), 'mean': Array([0.00042323, 0.00072901], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00011522, 0.00109045], dtype=float32), 'log_penalty_temperature': Array([-0.00024456], dtype=float32), 'log_temperature': Array([-0.00932162], dtype=float32), 'mean': Array([-0.5734161 , 0.34144628], dtype=float32)}\n",
"\t Slowdist: (Array([-0.7752024, -0.7289361], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 5300\n",
"\t Loss: 1.397669792175293\n",
"\t Params: {'log_alpha': Array([-4.52204 , -2.1656787], dtype=float32), 'log_penalty_temperature': Array([2.5261047], dtype=float32), 'log_temperature': Array([0.80765057], dtype=float32), 'mean': Array([-0.7709242, -0.7483599], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.37832153, dtype=float32), 'loss_penalty_temperature': Array(-0.05737764, dtype=float32), 'loss_temperature': Array(1.0755315, dtype=float32), 'non_parametric_kl': Array(0.11095591, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00090638, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.0009581 , -0.00067912], dtype=float32), 'log_penalty_temperature': Array([-0.00161199], dtype=float32), 'log_temperature': Array([0.00060382], dtype=float32), 'mean': Array([-0.00117635, 0.00168947], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.0001076 , 0.00102938], dtype=float32), 'log_penalty_temperature': Array([8.662219e-05], dtype=float32), 'log_temperature': Array([-0.00757578], dtype=float32), 'mean': Array([-0.39065963, 0.43338344], dtype=float32)}\n",
"\t Slowdist: (Array([-0.76974785, -0.7500494 ], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 5400\n",
"\t Loss: 1.4973490238189697\n",
"\t Params: {'log_alpha': Array([-4.561755, -2.230867], dtype=float32), 'log_penalty_temperature': Array([2.5668833], dtype=float32), 'log_temperature': Array([0.83121216], dtype=float32), 'mean': Array([-0.7163919, -0.791718 ], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.5576599, dtype=float32), 'loss_penalty_temperature': Array(-0.05525138, dtype=float32), 'loss_temperature': Array(0.99381566, dtype=float32), 'non_parametric_kl': Array(0.07585713, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00093813, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00055809, -0.00048323], dtype=float32), 'log_penalty_temperature': Array([0.00245225], dtype=float32), 'log_temperature': Array([-0.00095753], dtype=float32), 'mean': Array([-0.00405033, 0.00187152], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([0.00010341, 0.00097055], dtype=float32), 'log_penalty_temperature': Array([5.748617e-05], dtype=float32), 'log_temperature': Array([0.0168231], dtype=float32), 'mean': Array([ 0.03209221, -0.4703173 ], dtype=float32)}\n",
"\t Slowdist: (Array([-0.7123416 , -0.79358953], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 5500\n",
"\t Loss: 1.6289585828781128\n",
"\t Params: {'log_alpha': Array([-4.646823 , -2.2834606], dtype=float32), 'log_penalty_temperature': Array([2.2707133], dtype=float32), 'log_temperature': Array([0.80119723], dtype=float32), 'mean': Array([-0.6585817 , -0.71197295], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.8141037, dtype=float32), 'loss_penalty_temperature': Array(-0.04315935, dtype=float32), 'loss_temperature': Array(0.85694736, dtype=float32), 'non_parametric_kl': Array(0.10766677, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00050616, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00099945, -0.00064157], dtype=float32), 'log_penalty_temperature': Array([-0.00820792], dtype=float32), 'log_temperature': Array([-4.615907e-05], dtype=float32), 'mean': Array([ 0.00433721, -0.00091894], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([9.510305e-05, 9.255590e-04], dtype=float32), 'log_penalty_temperature': Array([0.00044795], dtype=float32), 'log_temperature': Array([-0.00529201], dtype=float32), 'mean': Array([-0.11834199, -0.06881957], dtype=float32)}\n",
"\t Slowdist: (Array([-0.66291887, -0.711054 ], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 5600\n",
"\t Loss: 1.5513050556182861\n",
"\t Params: {'log_alpha': Array([-4.725406, -2.350718], dtype=float32), 'log_penalty_temperature': Array([2.3009677], dtype=float32), 'log_temperature': Array([0.8199756], dtype=float32), 'mean': Array([-0.71398175, -0.7267592 ], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.6017201, dtype=float32), 'loss_penalty_temperature': Array(-0.04678169, dtype=float32), 'loss_temperature': Array(0.9953675, dtype=float32), 'non_parametric_kl': Array(0.08396924, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00093122, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00097224, -0.00067798], dtype=float32), 'log_penalty_temperature': Array([-0.00128396], dtype=float32), 'log_temperature': Array([0.00043655], dtype=float32), 'mean': Array([ 0.00112236, -0.00028689], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([8.797650e-05, 8.706258e-04], dtype=float32), 'log_penalty_temperature': Array([6.256764e-05], dtype=float32), 'log_temperature': Array([0.01112761], dtype=float32), 'mean': Array([0.12944141, 0.39194772], dtype=float32)}\n",
"\t Slowdist: (Array([-0.7151041, -0.7264723], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 5700\n",
"\t Loss: 1.6376146078109741\n",
"\t Params: {'log_alpha': Array([-4.8011346, -2.4208188], dtype=float32), 'log_penalty_temperature': Array([2.315311], dtype=float32), 'log_temperature': Array([0.82437986], dtype=float32), 'mean': Array([-0.73218954, -0.7532774 ], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.6772865, dtype=float32), 'loss_penalty_temperature': Array(-0.04239136, dtype=float32), 'loss_temperature': Array(1.0017858, dtype=float32), 'non_parametric_kl': Array(0.10089241, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00108327, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00091519, -0.0006933 ], dtype=float32), 'log_penalty_temperature': Array([0.00335649], dtype=float32), 'log_temperature': Array([0.00030294], dtype=float32), 'mean': Array([-0.0016165 , -0.00150966], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([8.1607934e-05, 8.1650843e-04], dtype=float32), 'log_penalty_temperature': Array([-7.5738506e-05], dtype=float32), 'log_temperature': Array([-0.0006202], dtype=float32), 'mean': Array([-0.6882034, -1.2417636], dtype=float32)}\n",
"\t Slowdist: (Array([-0.73057306, -0.75176775], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 5800\n",
"\t Loss: 1.4127711057662964\n",
"\t Params: {'log_alpha': Array([-4.8933125, -2.4785693], dtype=float32), 'log_penalty_temperature': Array([2.164899], dtype=float32), 'log_temperature': Array([0.8422208], dtype=float32), 'mean': Array([-0.7134674, -0.7060472], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.38953352, dtype=float32), 'loss_penalty_temperature': Array(-0.03604721, dtype=float32), 'loss_temperature': Array(1.0584044, dtype=float32), 'non_parametric_kl': Array(0.08749542, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00094301, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00085003, -0.00036482], dtype=float32), 'log_penalty_temperature': Array([-0.00282112], dtype=float32), 'log_temperature': Array([-0.00114578], dtype=float32), 'mean': Array([-0.00070368, 0.00081293], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([7.447051e-05, 7.740031e-04], dtype=float32), 'log_penalty_temperature': Array([5.106544e-05], dtype=float32), 'log_temperature': Array([0.00874277], dtype=float32), 'mean': Array([-0.77185684, -0.13196912], dtype=float32)}\n",
"\t Slowdist: (Array([-0.7127637, -0.7068601], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 5900\n",
"\t Loss: 1.7246118783950806\n",
"\t Params: {'log_alpha': Array([-4.9671917, -2.531075 ], dtype=float32), 'log_penalty_temperature': Array([2.3730574], dtype=float32), 'log_temperature': Array([0.8114506], dtype=float32), 'mean': Array([-0.68693644, -0.76676583], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.8280809, dtype=float32), 'loss_penalty_temperature': Array(-0.05687259, dtype=float32), 'loss_temperature': Array(0.95256853, dtype=float32), 'non_parametric_kl': Array(0.07427502, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00107894, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-5.6609587e-04, 3.2759810e-05], dtype=float32), 'log_penalty_temperature': Array([0.0019888], dtype=float32), 'log_temperature': Array([-3.1137653e-05], dtype=float32), 'mean': Array([-0.00120044, -0.00079479], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([6.9184192e-05, 7.3705986e-04], dtype=float32), 'log_penalty_temperature': Array([-7.2231254e-05], dtype=float32), 'log_temperature': Array([0.01781254], dtype=float32), 'mean': Array([ 0.47884762, -0.70597494], dtype=float32)}\n",
"\t Slowdist: (Array([-0.685736 , -0.76597106], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 6000\n",
"\t Loss: 1.4522042274475098\n",
"\t Params: {'log_alpha': Array([-5.030831 , -2.5920703], dtype=float32), 'log_penalty_temperature': Array([2.59474], dtype=float32), 'log_temperature': Array([0.82794267], dtype=float32), 'mean': Array([-0.72349656, -0.7665398 ], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.473536, dtype=float32), 'loss_penalty_temperature': Array(-0.06532797, dtype=float32), 'loss_temperature': Array(1.0432086, dtype=float32), 'non_parametric_kl': Array(0.11018831, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00099226, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00079899, -0.00069149], dtype=float32), 'log_penalty_temperature': Array([-0.00152503], dtype=float32), 'log_temperature': Array([0.00015817], dtype=float32), 'mean': Array([0.00100298, 0.00153505], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([6.4961270e-05, 6.9695315e-04], dtype=float32), 'log_penalty_temperature': Array([7.1814343e-06], dtype=float32), 'log_temperature': Array([-0.00708994], dtype=float32), 'mean': Array([-0.1582019 , 0.36184973], dtype=float32)}\n",
"\t Slowdist: (Array([-0.7244995 , -0.76807487], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 6100\n",
"\t Loss: 1.5414754152297974\n",
"\t Params: {'log_alpha': Array([-5.115249 , -2.6540563], dtype=float32), 'log_penalty_temperature': Array([2.399818], dtype=float32), 'log_temperature': Array([0.82553184], dtype=float32), 'mean': Array([-0.717288 , -0.70560765], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.5505403, dtype=float32), 'loss_penalty_temperature': Array(-0.05953708, dtype=float32), 'loss_temperature': Array(1.0497319, dtype=float32), 'non_parametric_kl': Array(0.10117817, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00102248, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00071428, -0.00062646], dtype=float32), 'log_penalty_temperature': Array([-0.00776665], dtype=float32), 'log_temperature': Array([-0.00152547], dtype=float32), 'mean': Array([-0.00120432, 0.00052491], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([5.9728813e-05, 6.5777934e-04], dtype=float32), 'log_penalty_temperature': Array([-2.0638969e-05], dtype=float32), 'log_temperature': Array([-0.00081977], dtype=float32), 'mean': Array([0.91253436, 0.5149258 ], dtype=float32)}\n",
"\t Slowdist: (Array([-0.7160837, -0.7061326], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 6200\n",
"\t Loss: 1.4947232007980347\n",
"\t Params: {'log_alpha': Array([-5.1797123, -2.7059019], dtype=float32), 'log_penalty_temperature': Array([2.4292734], dtype=float32), 'log_temperature': Array([0.8072793], dtype=float32), 'mean': Array([-0.6718716 , -0.75143576], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.59869784, dtype=float32), 'loss_penalty_temperature': Array(-0.05138786, dtype=float32), 'loss_temperature': Array(0.9467101, dtype=float32), 'non_parametric_kl': Array(0.10077566, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00082121, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([ 0.00090725, -0.0005337 ], dtype=float32), 'log_penalty_temperature': Array([-0.00340258], dtype=float32), 'log_temperature': Array([-0.00182506], dtype=float32), 'mean': Array([9.4521209e-05, 3.2980572e-03], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([5.5930621e-05, 6.2657334e-04], dtype=float32), 'log_penalty_temperature': Array([0.00016435], dtype=float32), 'log_temperature': Array([-0.00053657], dtype=float32), 'mean': Array([-0.12532917, -0.41670966], dtype=float32)}\n",
"\t Slowdist: (Array([-0.67196614, -0.7547338 ], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 6300\n",
"\t Loss: 1.7887980937957764\n",
"\t Params: {'log_alpha': Array([-5.2318544, -2.754501 ], dtype=float32), 'log_penalty_temperature': Array([2.418831], dtype=float32), 'log_temperature': Array([0.82517815], dtype=float32), 'mean': Array([-0.7146755 , -0.74177164], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.8406153, dtype=float32), 'loss_penalty_temperature': Array(-0.07553318, dtype=float32), 'loss_temperature': Array(1.0230454, dtype=float32), 'non_parametric_kl': Array(0.10837192, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00162973, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00038077, -0.00040543], dtype=float32), 'log_penalty_temperature': Array([0.00409673], dtype=float32), 'log_temperature': Array([-5.9474285e-05], dtype=float32), 'mean': Array([ 0.00034368, -0.00094506], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([5.3172185e-05, 5.9855747e-04], dtype=float32), 'log_penalty_temperature': Array([-0.00057807], dtype=float32), 'log_temperature': Array([-0.00582134], dtype=float32), 'mean': Array([ 0.82165694, -0.30313882], dtype=float32)}\n",
"\t Slowdist: (Array([-0.71501917, -0.7408266 ], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 6400\n",
"\t Loss: 1.5726470947265625\n",
"\t Params: {'log_alpha': Array([-5.293041 , -2.8149495], dtype=float32), 'log_penalty_temperature': Array([2.1844049], dtype=float32), 'log_temperature': Array([0.8231935], dtype=float32), 'mean': Array([-0.74631095, -0.72318393], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.5626811, dtype=float32), 'loss_penalty_temperature': Array(-0.06305401, dtype=float32), 'loss_temperature': Array(1.0723878, dtype=float32), 'non_parametric_kl': Array(0.10864969, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00144622, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00069913, -0.00037087], dtype=float32), 'log_penalty_temperature': Array([0.00574723], dtype=float32), 'log_temperature': Array([0.00051897], dtype=float32), 'mean': Array([ 0.00128449, -0.00431655], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([5.004792e-05, 5.654145e-04], dtype=float32), 'log_penalty_temperature': Array([-0.00040085], dtype=float32), 'log_temperature': Array([-0.00600978], dtype=float32), 'mean': Array([-0.23612581, 0.21673661], dtype=float32)}\n",
"\t Slowdist: (Array([-0.7475954 , -0.71886736], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 6500\n",
"\t Loss: 1.9008150100708008\n",
"\t Params: {'log_alpha': Array([-5.373104 , -2.8409452], dtype=float32), 'log_penalty_temperature': Array([2.4360569], dtype=float32), 'log_temperature': Array([0.7942898], dtype=float32), 'mean': Array([-0.73636377, -0.75631654], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.93575263, dtype=float32), 'loss_penalty_temperature': Array(-0.06932205, dtype=float32), 'loss_temperature': Array(1.0337708, dtype=float32), 'non_parametric_kl': Array(0.10582413, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.0014547, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-8.1922248e-04, -4.4011304e-05], dtype=float32), 'log_penalty_temperature': Array([0.00447164], dtype=float32), 'log_temperature': Array([-0.0005567], dtype=float32), 'mean': Array([4.9123345e-03, 8.7719927e-05], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([4.622046e-05, 5.515356e-04], dtype=float32), 'log_penalty_temperature': Array([-0.000418], dtype=float32), 'log_temperature': Array([-0.00401206], dtype=float32), 'mean': Array([ 0.30898118, -0.79522663], dtype=float32)}\n",
"\t Slowdist: (Array([-0.7412761, -0.7564043], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 6600\n",
"\t Loss: 1.2803170680999756\n",
"\t Params: {'log_alpha': Array([-5.4262877, -2.8977537], dtype=float32), 'log_penalty_temperature': Array([2.1486056], dtype=float32), 'log_temperature': Array([0.79630524], dtype=float32), 'mean': Array([-0.7131171 , -0.70363945], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.2419528, dtype=float32), 'loss_penalty_temperature': Array(-0.04085723, dtype=float32), 'loss_temperature': Array(1.0786403, dtype=float32), 'non_parametric_kl': Array(0.10055591, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00085673, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00042227, -0.00070987], dtype=float32), 'log_penalty_temperature': Array([-0.00171244], dtype=float32), 'log_temperature': Array([0.00195025], dtype=float32), 'mean': Array([ 0.0047164 , -0.00214306], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([4.3819698e-05, 5.2299886e-04], dtype=float32), 'log_penalty_temperature': Array([0.00012836], dtype=float32), 'log_temperature': Array([-0.000383], dtype=float32), 'mean': Array([-0.39836013, 0.24646443], dtype=float32)}\n",
"\t Slowdist: (Array([-0.7178335 , -0.70149636], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 6700\n",
"\t Loss: 1.885292887687683\n",
"\t Params: {'log_alpha': Array([-5.412683 , -2.9501443], dtype=float32), 'log_penalty_temperature': Array([2.4990628], dtype=float32), 'log_temperature': Array([0.8147697], dtype=float32), 'mean': Array([-0.77054447, -0.7011013 ], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(1.0145726, dtype=float32), 'loss_penalty_temperature': Array(-0.05257157, dtype=float32), 'loss_temperature': Array(0.922737, dtype=float32), 'non_parametric_kl': Array(0.1110039, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00086312, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00011892, -0.00066721], dtype=float32), 'log_penalty_temperature': Array([0.00081695], dtype=float32), 'log_temperature': Array([0.00279186], dtype=float32), 'mean': Array([ 0.0024785 , -0.00246928], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([4.4403831e-05, 4.9761217e-04], dtype=float32), 'log_penalty_temperature': Array([0.00012647], dtype=float32), 'log_temperature': Array([-0.0076206], dtype=float32), 'mean': Array([-0.3887855 , 0.05873239], dtype=float32)}\n",
"\t Slowdist: (Array([-0.77302295, -0.698632 ], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 6800\n",
"\t Loss: 1.774002194404602\n",
"\t Params: {'log_alpha': Array([-5.472293 , -3.0107193], dtype=float32), 'log_penalty_temperature': Array([2.4360096], dtype=float32), 'log_temperature': Array([0.8167053], dtype=float32), 'mean': Array([-0.7025588, -0.7106018], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.8440896, dtype=float32), 'loss_penalty_temperature': Array(-0.04578009, dtype=float32), 'loss_temperature': Array(0.97516954, dtype=float32), 'non_parametric_kl': Array(0.08995473, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00145567, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00081878, -0.00054951], dtype=float32), 'log_penalty_temperature': Array([-0.00454108], dtype=float32), 'log_temperature': Array([0.00081586], dtype=float32), 'mean': Array([0.0054805 , 0.00058803], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([4.1874209e-05, 4.6968547e-04], dtype=float32), 'log_penalty_temperature': Array([-0.00041913], dtype=float32), 'log_temperature': Array([0.00696489], dtype=float32), 'mean': Array([-1.0759147 , -0.04977847], dtype=float32)}\n",
"\t Slowdist: (Array([-0.70803934, -0.71118987], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 6900\n",
"\t Loss: 1.4898117780685425\n",
"\t Params: {'log_alpha': Array([-5.527492 , -3.0549557], dtype=float32), 'log_penalty_temperature': Array([2.3860369], dtype=float32), 'log_temperature': Array([0.80851775], dtype=float32), 'mean': Array([-0.71726584, -0.6667529 ], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.39969558, dtype=float32), 'loss_penalty_temperature': Array(-0.03352553, dtype=float32), 'loss_temperature': Array(1.1231413, dtype=float32), 'non_parametric_kl': Array(0.11114654, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00067346, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00084291, -0.00015198], dtype=float32), 'log_penalty_temperature': Array([-0.00464068], dtype=float32), 'log_temperature': Array([0.00063373], dtype=float32), 'mean': Array([ 0.00038174, -0.00111737], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([3.9635284e-05, 4.5010526e-04], dtype=float32), 'log_penalty_temperature': Array([0.00029911], dtype=float32), 'log_temperature': Array([-0.00770966], dtype=float32), 'mean': Array([ 0.03825758, -0.06415118], dtype=float32)}\n",
"\t Slowdist: (Array([-0.7176476, -0.6656355], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 7000\n",
"\t Loss: 1.5742888450622559\n",
"\t Params: {'log_alpha': Array([-5.608014 , -3.1067548], dtype=float32), 'log_penalty_temperature': Array([2.4144409], dtype=float32), 'log_temperature': Array([0.80083054], dtype=float32), 'mean': Array([-0.7206037 , -0.71691245], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.5358858, dtype=float32), 'loss_penalty_temperature': Array(-0.04637678, dtype=float32), 'loss_temperature': Array(1.0843052, dtype=float32), 'non_parametric_kl': Array(0.11614688, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00083358, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00082606, -0.00065523], dtype=float32), 'log_penalty_temperature': Array([-0.000774], dtype=float32), 'log_temperature': Array([-0.00017836], dtype=float32), 'mean': Array([-0.00070183, -0.0015928 ], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([3.6579488e-05, 4.2856351e-04], dtype=float32), 'log_penalty_temperature': Array([0.00015272], dtype=float32), 'log_temperature': Array([-0.01114445], dtype=float32), 'mean': Array([ 0.44936985, -0.05540894], dtype=float32)}\n",
"\t Slowdist: (Array([-0.71990186, -0.71531963], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 7100\n",
"\t Loss: 1.2916717529296875\n",
"\t Params: {'log_alpha': Array([-5.6660357, -3.1634235], dtype=float32), 'log_penalty_temperature': Array([2.2946563], dtype=float32), 'log_temperature': Array([0.8255672], dtype=float32), 'mean': Array([-0.7197243 , -0.75529563], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.22477275, dtype=float32), 'loss_penalty_temperature': Array(-0.04810765, dtype=float32), 'loss_temperature': Array(1.1145579, dtype=float32), 'non_parametric_kl': Array(0.09680487, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00099747, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-7.1631995e-04, 7.2794501e-05], dtype=float32), 'log_penalty_temperature': Array([0.00103345], dtype=float32), 'log_temperature': Array([0.0007332], dtype=float32), 'mean': Array([0.00087061, 0.0021115 ], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([3.4520828e-05, 4.0562774e-04], dtype=float32), 'log_penalty_temperature': Array([2.275539e-06], dtype=float32), 'log_temperature': Array([0.00222142], dtype=float32), 'mean': Array([ 0.7630573 , -0.10629168], dtype=float32)}\n",
"\t Slowdist: (Array([-0.7205949, -0.7574071], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 7200\n",
"\t Loss: 1.4580386877059937\n",
"\t Params: {'log_alpha': Array([-5.7441382, -3.2218566], dtype=float32), 'log_penalty_temperature': Array([2.378932], dtype=float32), 'log_temperature': Array([0.8189237], dtype=float32), 'mean': Array([-0.74434465, -0.7059956 ], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.40997934, dtype=float32), 'loss_penalty_temperature': Array(-0.05854732, dtype=float32), 'loss_temperature': Array(1.1061833, dtype=float32), 'non_parametric_kl': Array(0.11112963, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00123919, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00065327, -0.00061406], dtype=float32), 'log_penalty_temperature': Array([0.00316541], dtype=float32), 'log_temperature': Array([0.00170328], dtype=float32), 'mean': Array([0.00033279, 0.0007527 ], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([3.1933534e-05, 3.8374111e-04], dtype=float32), 'log_penalty_temperature': Array([-0.00021884], dtype=float32), 'log_temperature': Array([-0.00772007], dtype=float32), 'mean': Array([ 0.55960935, -0.00594892], dtype=float32)}\n",
"\t Slowdist: (Array([-0.7446774, -0.7067483], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 7300\n",
"\t Loss: 1.7015234231948853\n",
"\t Params: {'log_alpha': Array([-5.820042 , -3.2830253], dtype=float32), 'log_penalty_temperature': Array([2.315686], dtype=float32), 'log_temperature': Array([0.79167086], dtype=float32), 'mean': Array([-0.72285116, -0.7428225 ], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.87371314, dtype=float32), 'loss_penalty_temperature': Array(-0.0577099, dtype=float32), 'loss_temperature': Array(0.8851221, dtype=float32), 'non_parametric_kl': Array(0.10770912, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00092204, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00074769, -0.00033324], dtype=float32), 'log_penalty_temperature': Array([-0.00100749], dtype=float32), 'log_temperature': Array([0.00062979], dtype=float32), 'mean': Array([ 0.00030688, -0.00122391], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([2.960906e-05, 3.616975e-04], dtype=float32), 'log_penalty_temperature': Array([7.094697e-05], dtype=float32), 'log_temperature': Array([-0.00530425], dtype=float32), 'mean': Array([-0.5663503 , 0.27656466], dtype=float32)}\n",
"\t Slowdist: (Array([-0.72315806, -0.7415986 ], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 7400\n",
"\t Loss: 1.4999785423278809\n",
"\t Params: {'log_alpha': Array([-5.8894825, -3.3467524], dtype=float32), 'log_penalty_temperature': Array([2.36722], dtype=float32), 'log_temperature': Array([0.78515303], dtype=float32), 'mean': Array([-0.7589408, -0.7282177], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.5838524, dtype=float32), 'loss_penalty_temperature': Array(-0.06453513, dtype=float32), 'loss_temperature': Array(0.9802874, dtype=float32), 'non_parametric_kl': Array(0.08415233, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.0010719, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00057271, -0.000639 ], dtype=float32), 'log_penalty_temperature': Array([0.00255206], dtype=float32), 'log_temperature': Array([-0.00216116], dtype=float32), 'mean': Array([-0.00060648, -0.00396204], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([2.7623431e-05, 3.4022666e-04], dtype=float32), 'log_penalty_temperature': Array([-6.56774e-05], dtype=float32), 'log_temperature': Array([0.01089142], dtype=float32), 'mean': Array([0.38201004, 0.12144436], dtype=float32)}\n",
"\t Slowdist: (Array([-0.75833434, -0.7242557 ], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 7500\n",
"\t Loss: 1.6470222473144531\n",
"\t Params: {'log_alpha': Array([-5.95131 , -3.408117], dtype=float32), 'log_penalty_temperature': Array([2.4131064], dtype=float32), 'log_temperature': Array([0.79759973], dtype=float32), 'mean': Array([-0.73524773, -0.73994106], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.69751465, dtype=float32), 'loss_penalty_temperature': Array(-0.05956492, dtype=float32), 'loss_temperature': Array(1.0087206, dtype=float32), 'non_parametric_kl': Array(0.09130882, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00122495, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00020236, -0.00064364], dtype=float32), 'log_penalty_temperature': Array([0.00385431], dtype=float32), 'log_temperature': Array([0.00114514], dtype=float32), 'mean': Array([ 0.00292068, -0.00322262], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([2.5961965e-05, 3.2062715e-04], dtype=float32), 'log_penalty_temperature': Array([-0.0002064], dtype=float32), 'log_temperature': Array([0.00598997], dtype=float32), 'mean': Array([-0.83658046, 0.537142 ], dtype=float32)}\n",
"\t Slowdist: (Array([-0.7381684, -0.7367184], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 7600\n",
"\t Loss: 1.5584962368011475\n",
"\t Params: {'log_alpha': Array([-6.002321 , -3.4677868], dtype=float32), 'log_penalty_temperature': Array([2.6072166], dtype=float32), 'log_temperature': Array([0.7951684], dtype=float32), 'mean': Array([-0.7426274, -0.7121231], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.6421064, dtype=float32), 'loss_penalty_temperature': Array(-0.0568133, dtype=float32), 'loss_temperature': Array(0.9728711, dtype=float32), 'non_parametric_kl': Array(0.09805866, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.0008807, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00020589, -0.00066594], dtype=float32), 'log_penalty_temperature': Array([-0.00529108], dtype=float32), 'log_temperature': Array([-0.00270376], dtype=float32), 'mean': Array([-0.00066319, -0.00048837], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([2.4674124e-05, 3.0262361e-04], dtype=float32), 'log_penalty_temperature': Array([0.00011117], dtype=float32), 'log_temperature': Array([0.00133848], dtype=float32), 'mean': Array([ 0.05725333, -0.09692129], dtype=float32)}\n",
"\t Slowdist: (Array([-0.7419642 , -0.71163476], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 7700\n",
"\t Loss: 1.3200829029083252\n",
"\t Params: {'log_alpha': Array([-6.0511866, -3.5227795], dtype=float32), 'log_penalty_temperature': Array([2.4565923], dtype=float32), 'log_temperature': Array([0.8192495], dtype=float32), 'mean': Array([-0.7530316 , -0.74138355], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.3371985, dtype=float32), 'loss_penalty_temperature': Array(-0.04056432, dtype=float32), 'loss_temperature': Array(1.0231342, dtype=float32), 'non_parametric_kl': Array(0.1112653, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.0006512, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00068625, -0.00026595], dtype=float32), 'log_penalty_temperature': Array([0.001006], dtype=float32), 'log_temperature': Array([-5.9259506e-05], dtype=float32), 'mean': Array([-0.00053252, 0.00055882], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([2.3511408e-05, 2.8678396e-04], dtype=float32), 'log_penalty_temperature': Array([0.00032121], dtype=float32), 'log_temperature': Array([-0.00781917], dtype=float32), 'mean': Array([-0.33585253, 0.2465067 ], dtype=float32)}\n",
"\t Slowdist: (Array([-0.7524991 , -0.74194235], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 7800\n",
"\t Loss: 1.6880261898040771\n",
"\t Params: {'log_alpha': Array([-6.1111546, -3.5863762], dtype=float32), 'log_penalty_temperature': Array([2.320816], dtype=float32), 'log_temperature': Array([0.76445913], dtype=float32), 'mean': Array([-0.69202816, -0.7455122 ], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.74765646, dtype=float32), 'loss_penalty_temperature': Array(-0.05571369, dtype=float32), 'loss_temperature': Array(0.9957879, dtype=float32), 'non_parametric_kl': Array(0.0934229, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00144247, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00073979, -0.0006664 ], dtype=float32), 'log_penalty_temperature': Array([-0.00052497], dtype=float32), 'log_temperature': Array([0.00075781], dtype=float32), 'mean': Array([ 0.00323151, -0.00155978], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([2.2147135e-05, 2.6969472e-04], dtype=float32), 'log_penalty_temperature': Array([-0.00040296], dtype=float32), 'log_temperature': Array([0.0044867], dtype=float32), 'mean': Array([ 0.12955846, -0.8622572 ], dtype=float32)}\n",
"\t Slowdist: (Array([-0.6952597, -0.7439524], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 7900\n",
"\t Loss: 1.4556248188018799\n",
"\t Params: {'log_alpha': Array([-6.159354 , -3.6268108], dtype=float32), 'log_penalty_temperature': Array([2.467892], dtype=float32), 'log_temperature': Array([0.79820114], dtype=float32), 'mean': Array([-0.7193236 , -0.71182907], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.48453546, dtype=float32), 'loss_penalty_temperature': Array(-0.02973436, dtype=float32), 'loss_temperature': Array(1.00054, dtype=float32), 'non_parametric_kl': Array(0.091179, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00043385, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00032238, -0.00016136], dtype=float32), 'log_penalty_temperature': Array([-0.00497566], dtype=float32), 'log_temperature': Array([-0.00061293], dtype=float32), 'mean': Array([-0.0038064 , 0.00056156], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([2.1098389e-05, 2.5915683e-04], dtype=float32), 'log_penalty_temperature': Array([0.00052208], dtype=float32), 'log_temperature': Array([0.00608398], dtype=float32), 'mean': Array([-0.31335032, -0.5311105 ], dtype=float32)}\n",
"\t Slowdist: (Array([-0.71551716, -0.7123906 ], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 8000\n",
"\t Loss: 1.5466573238372803\n",
"\t Params: {'log_alpha': Array([-6.1846824, -3.6833465], dtype=float32), 'log_penalty_temperature': Array([2.5652742], dtype=float32), 'log_temperature': Array([0.8040289], dtype=float32), 'mean': Array([-0.74597037, -0.731411 ], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.64265656, dtype=float32), 'loss_penalty_temperature': Array(-0.06187137, dtype=float32), 'loss_temperature': Array(0.96560305, dtype=float32), 'non_parametric_kl': Array(0.09311168, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00100413, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00074139, -0.00052663], dtype=float32), 'log_penalty_temperature': Array([-0.00073997], dtype=float32), 'log_temperature': Array([-0.00019906], dtype=float32), 'mean': Array([-0.00014919, 0.00407315], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([2.0580408e-05, 2.4534852e-04], dtype=float32), 'log_penalty_temperature': Array([-3.803786e-06], dtype=float32), 'log_temperature': Array([0.0047589], dtype=float32), 'mean': Array([ 0.52774394, -0.63905 ], dtype=float32)}\n",
"\t Slowdist: (Array([-0.7458212, -0.7354841], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 8100\n",
"\t Loss: 1.644338607788086\n",
"\t Params: {'log_alpha': Array([-6.2502975, -3.7198524], dtype=float32), 'log_penalty_temperature': Array([2.2109387], dtype=float32), 'log_temperature': Array([0.8192656], dtype=float32), 'mean': Array([-0.68971604, -0.6859378 ], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.6432339, dtype=float32), 'loss_penalty_temperature': Array(-0.04584932, dtype=float32), 'loss_temperature': Array(1.0466952, dtype=float32), 'non_parametric_kl': Array(0.08531148, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00097228, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00045646, -0.00013141], dtype=float32), 'log_penalty_temperature': Array([-0.0033054], dtype=float32), 'log_temperature': Array([-0.00387483], dtype=float32), 'mean': Array([ 0.00022475, -0.00320961], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([1.9270403e-05, 2.3667022e-04], dtype=float32), 'log_penalty_temperature': Array([2.5036983e-05], dtype=float32), 'log_temperature': Array([0.01020714], dtype=float32), 'mean': Array([-0.36887613, 1.0903556 ], dtype=float32)}\n",
"\t Slowdist: (Array([-0.6899408 , -0.68272823], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 8200\n",
"\t Loss: 1.300633430480957\n",
"\t Params: {'log_alpha': Array([-6.3125577, -3.7704895], dtype=float32), 'log_penalty_temperature': Array([2.450081], dtype=float32), 'log_temperature': Array([0.798194], dtype=float32), 'mean': Array([-0.7118782, -0.7154638], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.21955222, dtype=float32), 'loss_penalty_temperature': Array(-0.04146672, dtype=float32), 'loss_temperature': Array(1.1223019, dtype=float32), 'non_parametric_kl': Array(0.08510669, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00086119, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00055155, -0.00062886], dtype=float32), 'log_penalty_temperature': Array([-0.00031714], dtype=float32), 'log_temperature': Array([-0.00106349], dtype=float32), 'mean': Array([0.00166994, 0.00176997], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([1.8111035e-05, 2.2535711e-04], dtype=float32), 'log_penalty_temperature': Array([0.00012774], dtype=float32), 'log_temperature': Array([0.01027361], dtype=float32), 'mean': Array([-0.09802828, 0.33917537], dtype=float32)}\n",
"\t Slowdist: (Array([-0.7135481, -0.7172338], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 8300\n",
"\t Loss: 1.254336953163147\n",
"\t Params: {'log_alpha': Array([-6.379435 , -3.8354983], dtype=float32), 'log_penalty_temperature': Array([2.3861678], dtype=float32), 'log_temperature': Array([0.8108102], dtype=float32), 'mean': Array([-0.71847415, -0.74447507], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.19845597, dtype=float32), 'loss_penalty_temperature': Array(-0.04984281, dtype=float32), 'loss_temperature': Array(1.1054932, dtype=float32), 'non_parametric_kl': Array(0.10232684, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00064966, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00072232, -0.00055457], dtype=float32), 'log_penalty_temperature': Array([0.00263169], dtype=float32), 'log_temperature': Array([0.00010165], dtype=float32), 'mean': Array([-0.00150492, 0.00121062], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([1.6944308e-05, 2.1145749e-04], dtype=float32), 'log_penalty_temperature': Array([0.00032075], dtype=float32), 'log_temperature': Array([-0.00161076], dtype=float32), 'mean': Array([0.6706293 , 0.93226856], dtype=float32)}\n",
"\t Slowdist: (Array([-0.71696925, -0.7456857 ], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 8400\n",
"\t Loss: 1.2810614109039307\n",
"\t Params: {'log_alpha': Array([-6.4338875, -3.8944588], dtype=float32), 'log_penalty_temperature': Array([2.6201413], dtype=float32), 'log_temperature': Array([0.8239335], dtype=float32), 'mean': Array([-0.7290428, -0.7640125], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.29151118, dtype=float32), 'loss_penalty_temperature': Array(-0.05286044, dtype=float32), 'loss_temperature': Array(1.0421929, dtype=float32), 'non_parametric_kl': Array(0.09448501, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00068635, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00070484, -0.00041329], dtype=float32), 'log_penalty_temperature': Array([0.00101875], dtype=float32), 'log_temperature': Array([0.00160235], dtype=float32), 'mean': Array([-0.00269167, 0.00605734], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([1.6047477e-05, 1.9956430e-04], dtype=float32), 'log_penalty_temperature': Array([0.00029227], dtype=float32), 'log_temperature': Array([0.00383141], dtype=float32), 'mean': Array([ 0.7376607, -0.5320484], dtype=float32)}\n",
"\t Slowdist: (Array([-0.72635114, -0.77006984], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 8500\n",
"\t Loss: 1.6595110893249512\n",
"\t Params: {'log_alpha': Array([-6.4932213, -3.9302938], dtype=float32), 'log_penalty_temperature': Array([2.4312696], dtype=float32), 'log_temperature': Array([0.82035613], dtype=float32), 'mean': Array([-0.7693642, -0.7397693], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.7792685, dtype=float32), 'loss_penalty_temperature': Array(-0.09173838, dtype=float32), 'loss_temperature': Array(0.9717713, dtype=float32), 'non_parametric_kl': Array(0.11363997, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00168656, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00048964, -0.00061394], dtype=float32), 'log_penalty_temperature': Array([0.00164156], dtype=float32), 'log_temperature': Array([0.00329888], dtype=float32), 'mean': Array([-0.00210921, -0.00257132], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([1.5121163e-05, 1.9271280e-04], dtype=float32), 'log_penalty_temperature': Array([-0.00063107], dtype=float32), 'log_temperature': Array([-0.00946086], dtype=float32), 'mean': Array([0.98418653, 0.1411263 ], dtype=float32)}\n",
"\t Slowdist: (Array([-0.76725495, -0.73719794], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 8600\n",
"\t Loss: 1.5099983215332031\n",
"\t Params: {'log_alpha': Array([-6.554261 , -3.9837031], dtype=float32), 'log_penalty_temperature': Array([2.2152743], dtype=float32), 'log_temperature': Array([0.7840993], dtype=float32), 'mean': Array([-0.6889753, -0.7551133], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.6030709, dtype=float32), 'loss_penalty_temperature': Array(-0.05998194, dtype=float32), 'loss_temperature': Array(0.9667107, dtype=float32), 'non_parametric_kl': Array(0.10491432, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00129076, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00061927, 0.00028182], dtype=float32), 'log_penalty_temperature': Array([0.00506928], dtype=float32), 'log_temperature': Array([-0.00349134], dtype=float32), 'mean': Array([-3.7626694e-05, -7.2202884e-04], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([1.42288945e-05, 1.82712727e-04], dtype=float32), 'log_penalty_temperature': Array([-0.00026203], dtype=float32), 'log_temperature': Array([-0.00337763], dtype=float32), 'mean': Array([ 0.5339562 , -0.12747228], dtype=float32)}\n",
"\t Slowdist: (Array([-0.68893766, -0.75439125], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 8700\n",
"\t Loss: 1.4586509466171265\n",
"\t Params: {'log_alpha': Array([-6.617687 , -4.0380116], dtype=float32), 'log_penalty_temperature': Array([2.127689], dtype=float32), 'log_temperature': Array([0.8533487], dtype=float32), 'mean': Array([-0.71496135, -0.6908974 ], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.45254654, dtype=float32), 'loss_penalty_temperature': Array(-0.05147193, dtype=float32), 'loss_temperature': Array(1.0573881, dtype=float32), 'non_parametric_kl': Array(0.09699976, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00108881, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00064497, -0.00046514], dtype=float32), 'log_penalty_temperature': Array([-0.00190995], dtype=float32), 'log_temperature': Array([-3.0729962e-06], dtype=float32), 'mean': Array([-0.00364351, 0.00065743], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([1.3355947e-05, 1.7334895e-04], dtype=float32), 'log_penalty_temperature': Array([-7.932965e-05], dtype=float32), 'log_temperature': Array([0.00210389], dtype=float32), 'mean': Array([0.77573216, 0.07999189], dtype=float32)}\n",
"\t Slowdist: (Array([-0.71131784, -0.69155484], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 8800\n",
"\t Loss: 1.4709903001785278\n",
"\t Params: {'log_alpha': Array([-6.6710796, -4.0624623], dtype=float32), 'log_penalty_temperature': Array([2.3390172], dtype=float32), 'log_temperature': Array([0.8178568], dtype=float32), 'mean': Array([-0.764758 , -0.71136576], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.49314305, dtype=float32), 'loss_penalty_temperature': Array(-0.05631953, dtype=float32), 'loss_temperature': Array(1.0339835, dtype=float32), 'non_parametric_kl': Array(0.08741156, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00107289, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00048483, -0.00026265], dtype=float32), 'log_penalty_temperature': Array([0.00889829], dtype=float32), 'log_temperature': Array([-0.0020625], dtype=float32), 'mean': Array([0.00157168, 0.00189556], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([1.2660396e-05, 1.6919912e-04], dtype=float32), 'log_penalty_temperature': Array([-6.6409884e-05], dtype=float32), 'log_temperature': Array([0.00873916], dtype=float32), 'mean': Array([0.14637814, 0.28775752], dtype=float32)}\n",
"\t Slowdist: (Array([-0.76632965, -0.7132613 ], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 8900\n",
"\t Loss: 1.2123603820800781\n",
"\t Params: {'log_alpha': Array([-6.7245197, -4.1150274], dtype=float32), 'log_penalty_temperature': Array([2.7688088], dtype=float32), 'log_temperature': Array([0.86401665], dtype=float32), 'mean': Array([-0.75205326, -0.8043602 ], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.14530157, dtype=float32), 'loss_penalty_temperature': Array(-0.05932507, dtype=float32), 'loss_temperature': Array(1.1262099, dtype=float32), 'non_parametric_kl': Array(0.10742441, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00073932, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00053743, -0.00065636], dtype=float32), 'log_penalty_temperature': Array([0.00403645], dtype=float32), 'log_temperature': Array([0.00468077], dtype=float32), 'mean': Array([ 0.00177497, -0.00227435], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([1.2003004e-05, 1.6073624e-04], dtype=float32), 'log_penalty_temperature': Array([0.00024523], dtype=float32), 'log_temperature': Array([-0.00521575], dtype=float32), 'mean': Array([ 0.4103798 , -0.09376205], dtype=float32)}\n",
"\t Slowdist: (Array([-0.7538282, -0.8020859], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 9000\n",
"\t Loss: 1.483298659324646\n",
"\t Params: {'log_alpha': Array([-6.7871213, -4.1761928], dtype=float32), 'log_penalty_temperature': Array([2.4074605], dtype=float32), 'log_temperature': Array([0.8349451], dtype=float32), 'mean': Array([-0.7180599 , -0.71657795], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.48389745, dtype=float32), 'loss_penalty_temperature': Array(-0.05548671, dtype=float32), 'loss_temperature': Array(1.0547241, dtype=float32), 'non_parametric_kl': Array(0.09472062, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00132106, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00066804, -0.00059751], dtype=float32), 'log_penalty_temperature': Array([-0.00075442], dtype=float32), 'log_temperature': Array([0.00024593], dtype=float32), 'mean': Array([ 0.00082538, -0.00127481], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([1.12769285e-05, 1.51334985e-04], dtype=float32), 'log_penalty_temperature': Array([-0.00029448], dtype=float32), 'log_temperature': Array([0.00368149], dtype=float32), 'mean': Array([0.30883592, 0.963312 ], dtype=float32)}\n",
"\t Slowdist: (Array([-0.7188853, -0.7153031], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 9100\n",
"\t Loss: 1.64036226272583\n",
"\t Params: {'log_alpha': Array([-6.8548226, -4.2269287], dtype=float32), 'log_penalty_temperature': Array([2.4021707], dtype=float32), 'log_temperature': Array([0.82061005], dtype=float32), 'mean': Array([-0.7761994 , -0.73832256], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.6803206, dtype=float32), 'loss_penalty_temperature': Array(-0.07083843, dtype=float32), 'loss_temperature': Array(1.0307246, dtype=float32), 'non_parametric_kl': Array(0.09436078, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00114683, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00053639, -0.00029089], dtype=float32), 'log_penalty_temperature': Array([0.00376842], dtype=float32), 'log_temperature': Array([-0.00066724], dtype=float32), 'mean': Array([-0.00276359, 0.00121997], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([1.0538128e-05, 1.4391266e-04], dtype=float32), 'log_penalty_temperature': Array([-0.0001346], dtype=float32), 'log_temperature': Array([0.00391645], dtype=float32), 'mean': Array([-0.21734789, -0.14037757], dtype=float32)}\n",
"\t Slowdist: (Array([-0.77343583, -0.73954254], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 9200\n",
"\t Loss: 1.680344581604004\n",
"\t Params: {'log_alpha': Array([-6.9165134, -4.2848186], dtype=float32), 'log_penalty_temperature': Array([2.5083637], dtype=float32), 'log_temperature': Array([0.79925704], dtype=float32), 'mean': Array([-0.7059717, -0.7303236], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.72053707, dtype=float32), 'loss_penalty_temperature': Array(-0.06434027, dtype=float32), 'loss_temperature': Array(1.0240009, dtype=float32), 'non_parametric_kl': Array(0.08820509, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00110975, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00044127, -0.00067208], dtype=float32), 'log_penalty_temperature': Array([-0.00335366], dtype=float32), 'log_temperature': Array([6.118088e-05], dtype=float32), 'mean': Array([ 0.00081079, -0.00225375], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([9.9073468e-06, 1.3597924e-04], dtype=float32), 'log_penalty_temperature': Array([-0.00010161], dtype=float32), 'log_temperature': Array([0.00813611], dtype=float32), 'mean': Array([0.3065004, 0.5817537], dtype=float32)}\n",
"\t Slowdist: (Array([-0.7067825 , -0.72806984], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 9300\n",
"\t Loss: 1.5738105773925781\n",
"\t Params: {'log_alpha': Array([-6.9432836, -4.3294597], dtype=float32), 'log_penalty_temperature': Array([2.685096], dtype=float32), 'log_temperature': Array([0.84594053], dtype=float32), 'mean': Array([-0.72987694, -0.7659529 ], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.61415696, dtype=float32), 'loss_penalty_temperature': Array(-0.05943195, dtype=float32), 'loss_temperature': Array(1.018945, dtype=float32), 'non_parametric_kl': Array(0.10570996, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00088945, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-2.8309138e-05, -6.3326216e-04], dtype=float32), 'log_penalty_temperature': Array([0.00182869], dtype=float32), 'log_temperature': Array([8.4106614e-05], dtype=float32), 'mean': Array([ 0.00406933, -0.00077955], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([9.641921e-06, 1.301148e-04], dtype=float32), 'log_penalty_temperature': Array([0.00010346], dtype=float32), 'log_temperature': Array([-0.00399533], dtype=float32), 'mean': Array([-0.63308007, -0.43187022], dtype=float32)}\n",
"\t Slowdist: (Array([-0.73394626, -0.7651733 ], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 9400\n",
"\t Loss: 1.6582413911819458\n",
"\t Params: {'log_alpha': Array([-6.990595 , -4.3923073], dtype=float32), 'log_penalty_temperature': Array([2.31352], dtype=float32), 'log_temperature': Array([0.8361588], dtype=float32), 'mean': Array([-0.7415044 , -0.71169466], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.72477657, dtype=float32), 'loss_penalty_temperature': Array(-0.06234156, dtype=float32), 'loss_temperature': Array(0.9956742, dtype=float32), 'non_parametric_kl': Array(0.10696869, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00124795, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([ 5.6374956e-05, -5.9616478e-04], dtype=float32), 'log_penalty_temperature': Array([0.00147561], dtype=float32), 'log_temperature': Array([0.00157764], dtype=float32), 'mean': Array([0.00012554, 0.0024677 ], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([9.196007e-06, 1.222815e-04], dtype=float32), 'log_penalty_temperature': Array([-0.00022555], dtype=float32), 'log_temperature': Array([-0.00485927], dtype=float32), 'mean': Array([-0.20784478, 0.15205158], dtype=float32)}\n",
"\t Slowdist: (Array([-0.7416299 , -0.71416235], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 9500\n",
"\t Loss: 1.720261573791504\n",
"\t Params: {'log_alpha': Array([-7.0277452, -4.4534626], dtype=float32), 'log_penalty_temperature': Array([2.1224782], dtype=float32), 'log_temperature': Array([0.8692089], dtype=float32), 'mean': Array([-0.68217087, -0.70849115], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.80494493, dtype=float32), 'loss_penalty_temperature': Array(-0.04521666, dtype=float32), 'loss_temperature': Array(0.96040857, dtype=float32), 'non_parametric_kl': Array(0.08130201, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00141234, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00062856, -0.00059432], dtype=float32), 'log_penalty_temperature': Array([-0.0038217], dtype=float32), 'log_temperature': Array([0.00059405], dtype=float32), 'mean': Array([0.00095991, 0.00050033], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([8.8670013e-06, 1.1511071e-04], dtype=float32), 'log_penalty_temperature': Array([-0.00036836], dtype=float32), 'log_temperature': Array([0.01317204], dtype=float32), 'mean': Array([ 0.6974995, -1.1129929], dtype=float32)}\n",
"\t Slowdist: (Array([-0.6831308 , -0.70899147], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 9600\n",
"\t Loss: 1.580576777458191\n",
"\t Params: {'log_alpha': Array([-7.088562, -4.509091], dtype=float32), 'log_penalty_temperature': Array([2.1785932], dtype=float32), 'log_temperature': Array([0.81321967], dtype=float32), 'mean': Array([-0.7486918, -0.7011437], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.67268807, dtype=float32), 'loss_penalty_temperature': Array(-0.053737, dtype=float32), 'loss_temperature': Array(0.96150774, dtype=float32), 'non_parametric_kl': Array(0.10017306, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00128587, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00017818, -0.00062461], dtype=float32), 'log_penalty_temperature': Array([0.00729288], dtype=float32), 'log_temperature': Array([-0.00034926], dtype=float32), 'mean': Array([-0.00025096, 0.00026857], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([8.3404921e-06, 1.0895324e-04], dtype=float32), 'log_penalty_temperature': Array([-0.00025661], dtype=float32), 'log_temperature': Array([-0.00011995], dtype=float32), 'mean': Array([0.0833376 , 0.19689672], dtype=float32)}\n",
"\t Slowdist: (Array([-0.74844086, -0.70141226], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 9700\n",
"\t Loss: 1.4982753992080688\n",
"\t Params: {'log_alpha': Array([-7.139118 , -4.5500464], dtype=float32), 'log_penalty_temperature': Array([2.3934414], dtype=float32), 'log_temperature': Array([0.846815], dtype=float32), 'mean': Array([-0.7449248, -0.6933736], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.6094734, dtype=float32), 'loss_penalty_temperature': Array(-0.05294891, dtype=float32), 'loss_temperature': Array(0.9416378, dtype=float32), 'non_parametric_kl': Array(0.08784834, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00100351, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00058205, -0.00041577], dtype=float32), 'log_penalty_temperature': Array([-0.00045694], dtype=float32), 'log_temperature': Array([-0.00081286], dtype=float32), 'mean': Array([-0.00161129, -0.00199378], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([7.9328393e-06, 1.0460527e-04], dtype=float32), 'log_penalty_temperature': Array([-3.183391e-06], dtype=float32), 'log_temperature': Array([0.00850711], dtype=float32), 'mean': Array([0.800719 , 0.7054167], dtype=float32)}\n",
"\t Slowdist: (Array([-0.7433135 , -0.69137985], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 9800\n",
"\t Loss: 1.5339332818984985\n",
"\t Params: {'log_alpha': Array([-7.2016044, -4.6013446], dtype=float32), 'log_penalty_temperature': Array([2.3364275], dtype=float32), 'log_temperature': Array([0.8454283], dtype=float32), 'mean': Array([-0.74793625, -0.71818143], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.6751684, dtype=float32), 'loss_penalty_temperature': Array(-0.05625369, dtype=float32), 'loss_temperature': Array(0.9149112, dtype=float32), 'non_parametric_kl': Array(0.09596737, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00088895, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00059528, -0.00055599], dtype=float32), 'log_penalty_temperature': Array([-0.00021562], dtype=float32), 'log_temperature': Array([-0.00226789], dtype=float32), 'mean': Array([-0.00236039, -0.00492804], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([7.4527666e-06, 9.9440324e-05], dtype=float32), 'log_penalty_temperature': Array([0.0001012], dtype=float32), 'log_temperature': Array([0.00282315], dtype=float32), 'mean': Array([-0.6523447 , 0.70174015], dtype=float32)}\n",
"\t Slowdist: (Array([-0.74557585, -0.7132534 ], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 9900\n",
"\t Loss: 1.5415018796920776\n",
"\t Params: {'log_alpha': Array([-7.2537313, -4.6229324], dtype=float32), 'log_penalty_temperature': Array([2.4425437], dtype=float32), 'log_temperature': Array([0.7956085], dtype=float32), 'mean': Array([-0.6918645 , -0.77884036], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.56718874, dtype=float32), 'loss_penalty_temperature': Array(-0.05842334, dtype=float32), 'loss_temperature': Array(1.0326318, dtype=float32), 'non_parametric_kl': Array(0.10385121, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.0010557, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([ 4.584762e-05, -6.738090e-05], dtype=float32), 'log_penalty_temperature': Array([-0.00258085], dtype=float32), 'log_temperature': Array([0.00067314], dtype=float32), 'mean': Array([ 0.00150003, -0.00339614], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([7.069970e-06, 9.729022e-05], dtype=float32), 'log_penalty_temperature': Array([-5.126626e-05], dtype=float32), 'log_temperature': Array([-0.00265305], dtype=float32), 'mean': Array([0.08787138, 0.15549716], dtype=float32)}\n",
"\t Slowdist: (Array([-0.6933645, -0.7754442], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 10000\n",
"\t Loss: 1.5770025253295898\n",
"\t Params: {'log_alpha': Array([-7.306034, -4.682281], dtype=float32), 'log_penalty_temperature': Array([2.5138862], dtype=float32), 'log_temperature': Array([0.79651], dtype=float32), 'mean': Array([-0.7482572 , -0.74499685], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.66734385, dtype=float32), 'loss_penalty_temperature': Array(-0.05808659, dtype=float32), 'loss_temperature': Array(0.96764624, dtype=float32), 'non_parametric_kl': Array(0.09782319, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00061442, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.0004379 , -0.00063469], dtype=float32), 'log_penalty_temperature': Array([0.00521892], dtype=float32), 'log_temperature': Array([-0.00043414], dtype=float32), 'mean': Array([-0.00049985, 0.003014 ], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([6.713179e-06, 9.178720e-05], dtype=float32), 'log_penalty_temperature': Array([0.0003565], dtype=float32), 'log_temperature': Array([0.00150051], dtype=float32), 'mean': Array([ 0.01789659, -0.36625358], dtype=float32)}\n",
"\t Slowdist: (Array([-0.7477574, -0.7480109], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 10100\n",
"\t Loss: 1.7157970666885376\n",
"\t Params: {'log_alpha': Array([-7.369187, -4.743017], dtype=float32), 'log_penalty_temperature': Array([2.5081284], dtype=float32), 'log_temperature': Array([0.7924902], dtype=float32), 'mean': Array([-0.7613999, -0.7031672], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.79663074, dtype=float32), 'loss_penalty_temperature': Array(-0.05210591, dtype=float32), 'loss_temperature': Array(0.97117907, dtype=float32), 'non_parametric_kl': Array(0.09005186, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00101173, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00067674, -0.0006044 ], dtype=float32), 'log_penalty_temperature': Array([-0.00119803], dtype=float32), 'log_temperature': Array([-0.00182492], dtype=float32), 'mean': Array([-0.00061225, 0.00356821], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([6.3040975e-06, 8.6422486e-05], dtype=float32), 'log_penalty_temperature': Array([-1.0841908e-05], dtype=float32), 'log_temperature': Array([0.00685192], dtype=float32), 'mean': Array([ 0.23789835, -1.3190596 ], dtype=float32)}\n",
"\t Slowdist: (Array([-0.76078767, -0.70673543], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 10200\n",
"\t Loss: 1.4849193096160889\n",
"\t Params: {'log_alpha': Array([-7.431063, -4.797586], dtype=float32), 'log_penalty_temperature': Array([2.2638736], dtype=float32), 'log_temperature': Array([0.8208819], dtype=float32), 'mean': Array([-0.7335963, -0.6946234], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.49297315, dtype=float32), 'loss_penalty_temperature': Array(-0.0382915, dtype=float32), 'loss_temperature': Array(1.0301496, dtype=float32), 'non_parametric_kl': Array(0.09462324, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00094949, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00065 , -0.00045567], dtype=float32), 'log_penalty_temperature': Array([0.000584], dtype=float32), 'log_temperature': Array([-0.00317616], dtype=float32), 'mean': Array([ 0.00021808, -0.00106485], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([5.925911e-06, 8.185837e-05], dtype=float32), 'log_penalty_temperature': Array([4.574404e-05], dtype=float32), 'log_temperature': Array([0.00373735], dtype=float32), 'mean': Array([ 0.09377901, -0.61949587], dtype=float32)}\n",
"\t Slowdist: (Array([-0.7338144, -0.6935586], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 10300\n",
"\t Loss: 1.3528486490249634\n",
"\t Params: {'log_alpha': Array([-7.490832, -4.854326], dtype=float32), 'log_penalty_temperature': Array([2.4796612], dtype=float32), 'log_temperature': Array([0.78640085], dtype=float32), 'mean': Array([-0.7115039 , -0.73749083], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.351404, dtype=float32), 'loss_penalty_temperature': Array(-0.03735584, dtype=float32), 'loss_temperature': Array(1.038717, dtype=float32), 'non_parametric_kl': Array(0.08400993, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00069372, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00058072, -0.00066128], dtype=float32), 'log_penalty_temperature': Array([-0.00259684], dtype=float32), 'log_temperature': Array([0.00199654], dtype=float32), 'mean': Array([-0.00015173, -0.00148585], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([5.5819096e-06, 7.7393772e-05], dtype=float32), 'log_penalty_temperature': Array([0.00028269], dtype=float32), 'log_temperature': Array([0.01097923], dtype=float32), 'mean': Array([-0.04627372, -0.5642295 ], dtype=float32)}\n",
"\t Slowdist: (Array([-0.71135217, -0.736005 ], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 10400\n",
"\t Loss: 1.7393016815185547\n",
"\t Params: {'log_alpha': Array([-7.549619 , -4.8887577], dtype=float32), 'log_penalty_temperature': Array([2.255406], dtype=float32), 'log_temperature': Array([0.8318192], dtype=float32), 'mean': Array([-0.7179575 , -0.69254744], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.8620701, dtype=float32), 'loss_penalty_temperature': Array(-0.04583537, dtype=float32), 'loss_temperature': Array(0.9229867, dtype=float32), 'non_parametric_kl': Array(0.09209978, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.0009287, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00056696, -0.00024879], dtype=float32), 'log_penalty_temperature': Array([-0.00392635], dtype=float32), 'log_temperature': Array([-0.00030222], dtype=float32), 'mean': Array([-0.00167185, 0.00267832], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([5.2633181e-06, 7.4763295e-05], dtype=float32), 'log_penalty_temperature': Array([6.452342e-05], dtype=float32), 'log_temperature': Array([0.00550494], dtype=float32), 'mean': Array([ 0.38253748, -0.31613526], dtype=float32)}\n",
"\t Slowdist: (Array([-0.71628565, -0.6952258 ], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 10500\n",
"\t Loss: 1.3801509141921997\n",
"\t Params: {'log_alpha': Array([-7.5987926, -4.9345603], dtype=float32), 'log_penalty_temperature': Array([2.3930993], dtype=float32), 'log_temperature': Array([0.76199573], dtype=float32), 'mean': Array([-0.7192682 , -0.71724427], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.3493977, dtype=float32), 'loss_penalty_temperature': Array(-0.04379991, dtype=float32), 'loss_temperature': Array(1.0744764, dtype=float32), 'non_parametric_kl': Array(0.11628091, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00083258, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00055628, -0.00056655], dtype=float32), 'log_penalty_temperature': Array([-0.0055849], dtype=float32), 'log_temperature': Array([0.00127752], dtype=float32), 'mean': Array([0.00212015, 0.00129195], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([5.0108379e-06, 7.1462615e-05], dtype=float32), 'log_penalty_temperature': Array([0.0001535], dtype=float32), 'log_temperature': Array([-0.01109564], dtype=float32), 'mean': Array([ 0.4212528, -0.1260084], dtype=float32)}\n",
"\t Slowdist: (Array([-0.72138834, -0.7185362 ], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 10600\n",
"\t Loss: 1.560949444770813\n",
"\t Params: {'log_alpha': Array([-7.657649 , -4.9954553], dtype=float32), 'log_penalty_temperature': Array([2.396031], dtype=float32), 'log_temperature': Array([0.8156956], dtype=float32), 'mean': Array([-0.74921477, -0.7529623 ], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.5505645, dtype=float32), 'loss_penalty_temperature': Array(-0.05090782, dtype=float32), 'loss_temperature': Array(1.0612205, dtype=float32), 'non_parametric_kl': Array(0.09356704, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00096626, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00055292, -0.0006371 ], dtype=float32), 'log_penalty_temperature': Array([0.0037451], dtype=float32), 'log_temperature': Array([0.00182007], dtype=float32), 'mean': Array([-4.9280301e-05, 2.1102752e-03], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([4.724548e-06, 6.727388e-05], dtype=float32), 'log_penalty_temperature': Array([3.0840307e-05], dtype=float32), 'log_temperature': Array([0.00445748], dtype=float32), 'mean': Array([-0.40488228, -0.5921927 ], dtype=float32)}\n",
"\t Slowdist: (Array([-0.7491655, -0.7550726], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 10700\n",
"\t Loss: 1.5048987865447998\n",
"\t Params: {'log_alpha': Array([-7.7113504, -5.0450945], dtype=float32), 'log_penalty_temperature': Array([2.5073202], dtype=float32), 'log_temperature': Array([0.81161827], dtype=float32), 'mean': Array([-0.76921177, -0.6990257 ], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.5496546, dtype=float32), 'loss_penalty_temperature': Array(-0.06646447, dtype=float32), 'loss_temperature': Array(1.02164, dtype=float32), 'non_parametric_kl': Array(0.1086131, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00115493, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00045965, -0.00041754], dtype=float32), 'log_penalty_temperature': Array([0.00015245], dtype=float32), 'log_temperature': Array([-0.00054931], dtype=float32), 'mean': Array([-0.0041294 , -0.00115229], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([4.4772178e-06, 6.4022883e-05], dtype=float32), 'log_penalty_temperature': Array([-0.00014329], dtype=float32), 'log_temperature': Array([-0.00596508], dtype=float32), 'mean': Array([ 0.3311998 , -0.13006158], dtype=float32)}\n",
"\t Slowdist: (Array([-0.76508236, -0.6978734 ], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 10800\n",
"\t Loss: 1.4716602563858032\n",
"\t Params: {'log_alpha': Array([-7.769665, -5.103329], dtype=float32), 'log_penalty_temperature': Array([2.4047067], dtype=float32), 'log_temperature': Array([0.81402534], dtype=float32), 'mean': Array([-0.6878359, -0.7346125], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.5118525, dtype=float32), 'loss_penalty_temperature': Array(-0.04776013, dtype=float32), 'loss_temperature': Array(1.007503, dtype=float32), 'non_parametric_kl': Array(0.09733938, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00073205, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00058256, -0.00056586], dtype=float32), 'log_penalty_temperature': Array([-0.00229245], dtype=float32), 'log_temperature': Array([-0.001663], dtype=float32), 'mean': Array([ 0.00640505, -0.00275819], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([4.2242250e-06, 6.0431812e-05], dtype=float32), 'log_penalty_temperature': Array([0.00024579], dtype=float32), 'log_temperature': Array([0.00184474], dtype=float32), 'mean': Array([-0.13967359, 1.0706575 ], dtype=float32)}\n",
"\t Slowdist: (Array([-0.6942409, -0.7318543], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 10900\n",
"\t Loss: 1.683466911315918\n",
"\t Params: {'log_alpha': Array([-7.816053, -5.161979], dtype=float32), 'log_penalty_temperature': Array([2.5315092], dtype=float32), 'log_temperature': Array([0.83415514], dtype=float32), 'mean': Array([-0.79112667, -0.7410353 ], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.8108499, dtype=float32), 'loss_penalty_temperature': Array(-0.07805103, dtype=float32), 'loss_temperature': Array(0.9506069, dtype=float32), 'non_parametric_kl': Array(0.1100352, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.0013178, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00052684, -0.00064512], dtype=float32), 'log_penalty_temperature': Array([0.00641698], dtype=float32), 'log_temperature': Array([0.0013347], dtype=float32), 'mean': Array([-0.00061232, -0.00372636], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([4.0325986e-06, 5.7013527e-05], dtype=float32), 'log_penalty_temperature': Array([-0.00029423], dtype=float32), 'log_temperature': Array([-0.00699415], dtype=float32), 'mean': Array([0.35537305, 0.43576503], dtype=float32)}\n",
"\t Slowdist: (Array([-0.79051435, -0.7373089 ], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 11000\n",
"\t Loss: 1.549668550491333\n",
"\t Params: {'log_alpha': Array([-7.8696923, -5.2213755], dtype=float32), 'log_penalty_temperature': Array([2.6399543], dtype=float32), 'log_temperature': Array([0.8591374], dtype=float32), 'mean': Array([-0.6902345 , -0.74372137], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.62358207, dtype=float32), 'loss_penalty_temperature': Array(-0.0544759, dtype=float32), 'loss_temperature': Array(0.98050463, dtype=float32), 'non_parametric_kl': Array(0.10318165, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00083214, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00039959, -0.00022339], dtype=float32), 'log_penalty_temperature': Array([-0.00267324], dtype=float32), 'log_temperature': Array([0.00010929], dtype=float32), 'mean': Array([0.00111121, 0.00036142], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([3.8215844e-06, 5.3720880e-05], dtype=float32), 'log_penalty_temperature': Array([0.00015671], dtype=float32), 'log_temperature': Array([-0.00223494], dtype=float32), 'mean': Array([-0.30036518, 0.5787225 ], dtype=float32)}\n",
"\t Slowdist: (Array([-0.6913457, -0.7440828], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 11100\n",
"\t Loss: 1.4529552459716797\n",
"\t Params: {'log_alpha': Array([-7.919013, -5.27219 ], dtype=float32), 'log_penalty_temperature': Array([2.4066203], dtype=float32), 'log_temperature': Array([0.818809], dtype=float32), 'mean': Array([-0.7377936, -0.7118941], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.5474588, dtype=float32), 'loss_penalty_temperature': Array(-0.052452, dtype=float32), 'loss_temperature': Array(0.9578936, dtype=float32), 'non_parametric_kl': Array(0.08880925, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00089152, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.0004337 , -0.00057554], dtype=float32), 'log_penalty_temperature': Array([-0.00010892], dtype=float32), 'log_temperature': Array([0.00235944], dtype=float32), 'mean': Array([ 0.00046856, -0.00016646], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([3.6378665e-06, 5.1090759e-05], dtype=float32), 'log_penalty_temperature': Array([9.947565e-05], dtype=float32), 'log_temperature': Array([0.00776063], dtype=float32), 'mean': Array([ 0.6748087, -0.9661611], dtype=float32)}\n",
"\t Slowdist: (Array([-0.7382622, -0.7117276], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 11200\n",
"\t Loss: 1.5104057788848877\n",
"\t Params: {'log_alpha': Array([-7.97489 , -5.3144364], dtype=float32), 'log_penalty_temperature': Array([2.4928787], dtype=float32), 'log_temperature': Array([0.78362966], dtype=float32), 'mean': Array([-0.76717985, -0.721031 ], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.64846045, dtype=float32), 'loss_penalty_temperature': Array(-0.05228491, dtype=float32), 'loss_temperature': Array(0.91417766, dtype=float32), 'non_parametric_kl': Array(0.095369, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00062228, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00054886, -0.0005598 ], dtype=float32), 'log_penalty_temperature': Array([-0.00298592], dtype=float32), 'log_temperature': Array([0.00060433], dtype=float32), 'mean': Array([-0.00153177, -0.00085559], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([3.4406305e-06, 4.8986894e-05], dtype=float32), 'log_penalty_temperature': Array([0.00034901], dtype=float32), 'log_temperature': Array([0.0031785], dtype=float32), 'mean': Array([-0.36911818, 0.10186333], dtype=float32)}\n",
"\t Slowdist: (Array([-0.76564807, -0.72017545], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 11300\n",
"\t Loss: 1.339586615562439\n",
"\t Params: {'log_alpha': Array([-8.004655, -5.353729], dtype=float32), 'log_penalty_temperature': Array([2.4383707], dtype=float32), 'log_temperature': Array([0.815633], dtype=float32), 'mean': Array([-0.72353786, -0.74400485], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.35903665, dtype=float32), 'loss_penalty_temperature': Array(-0.0507497, dtype=float32), 'loss_temperature': Array(1.0312492, dtype=float32), 'non_parametric_kl': Array(0.08305493, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00104102, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.0004072, -0.0005657], dtype=float32), 'log_penalty_temperature': Array([0.00242156], dtype=float32), 'log_temperature': Array([0.000774], dtype=float32), 'mean': Array([0.00206211, 0.00146392], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([3.3392926e-06, 4.7108573e-05], dtype=float32), 'log_penalty_temperature': Array([-3.7716665e-05], dtype=float32), 'log_temperature': Array([0.01174544], dtype=float32), 'mean': Array([0.1380593 , 0.08598936], dtype=float32)}\n",
"\t Slowdist: (Array([-0.72559994, -0.7454688 ], dtype=float32), Array([0.3, 0.3], dtype=float32))\n",
"Iteration 11400\n",
"\t Loss: 1.4412344694137573\n",
"\t Params: {'log_alpha': Array([-8.064666 , -5.4154315], dtype=float32), 'log_penalty_temperature': Array([2.4510052], dtype=float32), 'log_temperature': Array([0.8200129], dtype=float32), 'mean': Array([-0.71201926, -0.72406536], dtype=float32)}\n",
"\t Metrics: {'loss_dist': Array(0.4710958, dtype=float32), 'loss_penalty_temperature': Array(-0.04272904, dtype=float32), 'loss_temperature': Array(1.0128201, dtype=float32), 'non_parametric_kl': Array(0.10607076, dtype=float32), 'parametric_kl': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00061154, dtype=float32)}\n",
"\t Updates: {'log_alpha': Array([-0.00042624, -0.00060642], dtype=float32), 'log_penalty_temperature': Array([-0.00530804], dtype=float32), 'log_temperature': Array([-0.0014828], dtype=float32), 'mean': Array([ 0.0025397 , -0.00143018], dtype=float32)}\n",
"\t Grad: {'log_alpha': Array([3.1449126e-06, 4.4304001e-05], dtype=float32), 'log_penalty_temperature': Array([0.00035781], dtype=float32), 'log_temperature': Array([-0.00421638], dtype=float32), 'mean': Array([ 0.0235918, -0.4316637], dtype=float32)}\n",
"\t Slowdist: (Array([-0.71455896, -0.7226352 ], dtype=float32), Array([0.3, 0.3], dtype=float32))\n"
]
},
{
"ename": "KeyboardInterrupt",
"evalue": "",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m/home/ale/awake/embodied/agents/mpo/test_kl.ipynb Cell 6\u001b[0m line \u001b[0;36m1\n\u001b[1;32m <a href='vscode-notebook-cell://ssh-remote%2Bdgx5/home/ale/awake/embodied/agents/mpo/test_kl.ipynb#W5sdnNjb2RlLXJlbW90ZQ%3D%3D?line=109'>110</a>\u001b[0m (loss, metrics), grads \u001b[39m=\u001b[39m jax\u001b[39m.\u001b[39mvalue_and_grad(loss_fn, has_aux\u001b[39m=\u001b[39m\u001b[39mTrue\u001b[39;00m)(params, key, slowdist)\n\u001b[1;32m <a href='vscode-notebook-cell://ssh-remote%2Bdgx5/home/ale/awake/embodied/agents/mpo/test_kl.ipynb#W5sdnNjb2RlLXJlbW90ZQ%3D%3D?line=110'>111</a>\u001b[0m updates, opt_state \u001b[39m=\u001b[39m optimizer\u001b[39m.\u001b[39mupdate(grads, opt_state)\n\u001b[0;32m--> <a href='vscode-notebook-cell://ssh-remote%2Bdgx5/home/ale/awake/embodied/agents/mpo/test_kl.ipynb#W5sdnNjb2RlLXJlbW90ZQ%3D%3D?line=111'>112</a>\u001b[0m params \u001b[39m=\u001b[39m optax\u001b[39m.\u001b[39;49mapply_updates(params, updates)\n\u001b[1;32m <a href='vscode-notebook-cell://ssh-remote%2Bdgx5/home/ale/awake/embodied/agents/mpo/test_kl.ipynb#W5sdnNjb2RlLXJlbW90ZQ%3D%3D?line=112'>113</a>\u001b[0m means\u001b[39m.\u001b[39mappend(params[\u001b[39m'\u001b[39m\u001b[39mmean\u001b[39m\u001b[39m'\u001b[39m])\n\u001b[1;32m <a href='vscode-notebook-cell://ssh-remote%2Bdgx5/home/ale/awake/embodied/agents/mpo/test_kl.ipynb#W5sdnNjb2RlLXJlbW90ZQ%3D%3D?line=113'>114</a>\u001b[0m \u001b[39mif\u001b[39;00m i \u001b[39m%\u001b[39m \u001b[39m100\u001b[39m \u001b[39m==\u001b[39m \u001b[39m0\u001b[39m:\n",
"File \u001b[0;32m~/miniconda3/envs/awake/lib/python3.10/site-packages/optax/_src/update.py:42\u001b[0m, in \u001b[0;36mapply_updates\u001b[0;34m(params, updates)\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mapply_updates\u001b[39m(params: base\u001b[39m.\u001b[39mParams, updates: base\u001b[39m.\u001b[39mUpdates) \u001b[39m-\u001b[39m\u001b[39m>\u001b[39m base\u001b[39m.\u001b[39mParams:\n\u001b[1;32m 25\u001b[0m \u001b[39m \u001b[39m\u001b[39m\"\"\"Applies an update to the corresponding parameters.\u001b[39;00m\n\u001b[1;32m 26\u001b[0m \n\u001b[1;32m 27\u001b[0m \u001b[39m This is a utility functions that applies an update to a set of parameters, and\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 40\u001b[0m \u001b[39m Updated parameters, with same structure, shape and type as `params`.\u001b[39;00m\n\u001b[1;32m 41\u001b[0m \u001b[39m \"\"\"\u001b[39;00m\n\u001b[0;32m---> 42\u001b[0m \u001b[39mreturn\u001b[39;00m jax\u001b[39m.\u001b[39;49mtree_util\u001b[39m.\u001b[39;49mtree_map(\n\u001b[1;32m 43\u001b[0m \u001b[39mlambda\u001b[39;49;00m p, u: jnp\u001b[39m.\u001b[39;49masarray(p \u001b[39m+\u001b[39;49m u)\u001b[39m.\u001b[39;49mastype(jnp\u001b[39m.\u001b[39;49masarray(p)\u001b[39m.\u001b[39;49mdtype),\n\u001b[1;32m 44\u001b[0m params, updates)\n",
"File \u001b[0;32m~/miniconda3/envs/awake/lib/python3.10/site-packages/jax/_src/tree_util.py:244\u001b[0m, in \u001b[0;36mtree_map\u001b[0;34m(f, tree, is_leaf, *rest)\u001b[0m\n\u001b[1;32m 242\u001b[0m leaves, treedef \u001b[39m=\u001b[39m tree_flatten(tree, is_leaf)\n\u001b[1;32m 243\u001b[0m all_leaves \u001b[39m=\u001b[39m [leaves] \u001b[39m+\u001b[39m [treedef\u001b[39m.\u001b[39mflatten_up_to(r) \u001b[39mfor\u001b[39;00m r \u001b[39min\u001b[39;00m rest]\n\u001b[0;32m--> 244\u001b[0m \u001b[39mreturn\u001b[39;00m treedef\u001b[39m.\u001b[39;49munflatten(f(\u001b[39m*\u001b[39;49mxs) \u001b[39mfor\u001b[39;49;00m xs \u001b[39min\u001b[39;49;00m \u001b[39mzip\u001b[39;49m(\u001b[39m*\u001b[39;49mall_leaves))\n",
"File \u001b[0;32m~/miniconda3/envs/awake/lib/python3.10/site-packages/jax/_src/tree_util.py:244\u001b[0m, in \u001b[0;36m<genexpr>\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 242\u001b[0m leaves, treedef \u001b[39m=\u001b[39m tree_flatten(tree, is_leaf)\n\u001b[1;32m 243\u001b[0m all_leaves \u001b[39m=\u001b[39m [leaves] \u001b[39m+\u001b[39m [treedef\u001b[39m.\u001b[39mflatten_up_to(r) \u001b[39mfor\u001b[39;00m r \u001b[39min\u001b[39;00m rest]\n\u001b[0;32m--> 244\u001b[0m \u001b[39mreturn\u001b[39;00m treedef\u001b[39m.\u001b[39munflatten(f(\u001b[39m*\u001b[39;49mxs) \u001b[39mfor\u001b[39;00m xs \u001b[39min\u001b[39;00m \u001b[39mzip\u001b[39m(\u001b[39m*\u001b[39mall_leaves))\n",
"File \u001b[0;32m~/miniconda3/envs/awake/lib/python3.10/site-packages/optax/_src/update.py:43\u001b[0m, in \u001b[0;36mapply_updates.<locals>.<lambda>\u001b[0;34m(p, u)\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mapply_updates\u001b[39m(params: base\u001b[39m.\u001b[39mParams, updates: base\u001b[39m.\u001b[39mUpdates) \u001b[39m-\u001b[39m\u001b[39m>\u001b[39m base\u001b[39m.\u001b[39mParams:\n\u001b[1;32m 25\u001b[0m \u001b[39m \u001b[39m\u001b[39m\"\"\"Applies an update to the corresponding parameters.\u001b[39;00m\n\u001b[1;32m 26\u001b[0m \n\u001b[1;32m 27\u001b[0m \u001b[39m This is a utility functions that applies an update to a set of parameters, and\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 40\u001b[0m \u001b[39m Updated parameters, with same structure, shape and type as `params`.\u001b[39;00m\n\u001b[1;32m 41\u001b[0m \u001b[39m \"\"\"\u001b[39;00m\n\u001b[1;32m 42\u001b[0m \u001b[39mreturn\u001b[39;00m jax\u001b[39m.\u001b[39mtree_util\u001b[39m.\u001b[39mtree_map(\n\u001b[0;32m---> 43\u001b[0m \u001b[39mlambda\u001b[39;00m p, u: jnp\u001b[39m.\u001b[39masarray(p \u001b[39m+\u001b[39;49m u)\u001b[39m.\u001b[39mastype(jnp\u001b[39m.\u001b[39masarray(p)\u001b[39m.\u001b[39mdtype),\n\u001b[1;32m 44\u001b[0m params, updates)\n",
"File \u001b[0;32m~/miniconda3/envs/awake/lib/python3.10/site-packages/jax/_src/numpy/array_methods.py:256\u001b[0m, in \u001b[0;36m_defer_to_unrecognized_arg.<locals>.deferring_binary_op\u001b[0;34m(self, other)\u001b[0m\n\u001b[1;32m 254\u001b[0m args \u001b[39m=\u001b[39m (other, \u001b[39mself\u001b[39m) \u001b[39mif\u001b[39;00m swap \u001b[39melse\u001b[39;00m (\u001b[39mself\u001b[39m, other)\n\u001b[1;32m 255\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39misinstance\u001b[39m(other, _accepted_binop_types):\n\u001b[0;32m--> 256\u001b[0m \u001b[39mreturn\u001b[39;00m binary_op(\u001b[39m*\u001b[39;49margs)\n\u001b[1;32m 257\u001b[0m \u001b[39m# Note: don't use isinstance here, because we don't want to raise for\u001b[39;00m\n\u001b[1;32m 258\u001b[0m \u001b[39m# subclasses, e.g. NamedTuple objects that may override operators.\u001b[39;00m\n\u001b[1;32m 259\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mtype\u001b[39m(other) \u001b[39min\u001b[39;00m _rejected_binop_types:\n",
"\u001b[0;31mKeyboardInterrupt\u001b[0m: "
]
}
],
"source": [
"optimizer = optax.adam(1e-2)\n",
"key = jax.random.PRNGKey(41)\n",
"target = -0.75\n",
"n_act_samples = 100\n",
"std = 0.3\n",
"slowdist_update_freq = 25\n",
"use_objective_constraint = True\n",
"use_slowdist_loss = True\n",
"\n",
"@jax.jit\n",
"def loss_fn(params, key, slowdist):\n",
" metrics = {}\n",
" mean = params['mean']\n",
" temperature = jax.nn.softplus(params['log_temperature']) + 1e-8\n",
" penalty_temperature = jax.nn.softplus(params['log_penalty_temperature']) + 1e-8\n",
" alpha = jax.nn.softplus(params['log_alpha']) + 1e-8\n",
" # assert not jnp.isnan(mean).any(), mean\n",
" # assert not jnp.isnan(temperature).any(), temperature\n",
" # assert not jnp.isnan(penalty_temperature).any(), penalty_temperature\n",
" # assert not jnp.isnan(alpha).any(), alpha\n",
"\n",
" dist = tfd.Independent(tfd.Normal(mean, jax.lax.stop_gradient(std * jnp.ones_like(mean))), reinterpreted_batch_ndims=1)\n",
" a_improvement = dist.sample(n_act_samples, seed=key)\n",
" # assert a_improvement.shape == (n_act_samples,) + mean.shape, a_improvement.shape\n",
" q_improvement = jax.lax.stop_gradient(jnp.sum(jnp.exp(-30 * (a_improvement - target)**2), -1))\n",
"\n",
" # assert jnp.isfinite(q_improvement).all(), q_improvement\n",
"\n",
" def compute_weights_and_temperature_loss(q_values, epsilon, temperature):\n",
" tempered_q_values = jax.lax.stop_gradient(q_values) / temperature\n",
" # assert not jnp.isnan(tempered_q_values).any(), tempered_q_values\n",
" q_logsumexp = jnp.mean(jnp.log(jnp.mean(jnp.exp(tempered_q_values), axis=0)))\n",
" # assert not jnp.isnan(q_logsumexp).any(), tempered_q_values\n",
" loss_temperature = jnp.mean(temperature * epsilon + temperature * q_logsumexp)\n",
" normalized_weights = jax.lax.stop_gradient(jax.nn.softmax(tempered_q_values, axis=0))\n",
" num_action_samples = normalized_weights.shape[0]\n",
" integrand = jnp.log(num_action_samples * normalized_weights + 1e-8)\n",
" non_parametric_kl = jnp.sum(normalized_weights * integrand, axis=0)\n",
" return normalized_weights, loss_temperature, non_parametric_kl\n",
"\n",
" normalized_weights, loss_temperature, non_parametric_kl = compute_weights_and_temperature_loss(q_improvement, 0.1, temperature)\n",
" metrics['loss_temperature'] = loss_temperature\n",
" metrics['non_parametric_kl'] = non_parametric_kl\n",
"\n",
" diff_out_of_bound = a_improvement - jnp.clip(a_improvement, -1.0, 1.0)\n",
" cost_out_of_bound = -jnp.linalg.norm(diff_out_of_bound, axis=-1)\n",
" penalty_normalized_weights, loss_penalty_temperature, penalty_non_parametric_kl = compute_weights_and_temperature_loss(cost_out_of_bound, 0.001, penalty_temperature)\n",
" metrics['loss_penalty_temperature'] = loss_penalty_temperature\n",
" metrics['penalty_non_parametric_kl'] = penalty_non_parametric_kl\n",
"\n",
" # print('SAMPLED ITEMS')\n",
" # print('actions: ', a_improvement)\n",
" # print('costs:', cost_out_of_bound)\n",
" # print('penalties: ', penalty_normalized_weights)\n",
"\n",
" # assert not jnp.isnan(cost_out_of_bound).any(), q_improvement\n",
" # assert not jnp.isnan(penalty_normalized_weights).any(), temperature\n",
" # assert not jnp.isnan(loss_penalty_temperature).any(), temperature\n",
"\n",
" # print('cost_out_of_bound', cost_out_of_bound.shape)\n",
" # print('penalty_normalized_weights', penalty_normalized_weights.shape)\n",
" # print('loss_penalty_temperature', loss_penalty_temperature.shape)\n",
" if use_objective_constraint:\n",
" loss_temperature += loss_penalty_temperature\n",
" normalized_weights += penalty_normalized_weights\n",
" else:\n",
" loss_temperature = loss_penalty_temperature\n",
" normalized_weights = penalty_normalized_weights\n",
"\n",
" def compute_parametric_kl_penalty_and_dual_loss(kl, alpha, epsilon):\n",
" loss_kl = jnp.sum(jax.lax.stop_gradient(alpha) * kl, -1)\n",
" loss_alpha = jnp.sum(alpha * (epsilon - jax.lax.stop_gradient(kl)), -1)\n",
" return loss_kl, loss_alpha\n",
" \n",
"\n",
" kl = slowdist.distribution.kl_divergence(dist.distribution)\n",
" loss_kl, loss_alpha = compute_parametric_kl_penalty_and_dual_loss(kl, alpha, 0.01)\n",
" metrics['parametric_kl'] = jnp.mean(kl)\n",
"\n",
" logpi = dist.log_prob(jax.lax.stop_gradient(a_improvement))\n",
" loss_dist = jnp.mean(-jnp.sum(normalized_weights * logpi, axis=0))\n",
" metrics['loss_dist'] = loss_dist\n",
" # assert not jnp.isnan(logpi).any(), temperature\n",
" # assert not jnp.isnan(loss_dist).any(), temperature\n",
" loss = loss_dist + loss_temperature\n",
" if use_slowdist_loss:\n",
" loss += loss_kl\n",
" loss += loss_alpha\n",
"\n",
" return loss, metrics\n",
"\n",
"\n",
"params = {\n",
" 'mean': jnp.array([2.0, 2.0]),\n",
" 'log_temperature': jnp.array([10.]),\n",
" 'log_penalty_temperature': jnp.array([10.]),\n",
" 'log_alpha': jnp.array([10., 10.]),}\n",
"opt_state = optimizer.init(params)\n",
"slowdist = tfd.Independent(tfd.Normal(\n",
" jax.lax.stop_gradient(params['mean']),\n",
" jax.lax.stop_gradient(std * jnp.ones_like(params['mean']))), 1)\n",
"\n",
"means = []\n",
"for i in range(20000):\n",
" if i % slowdist_update_freq == 0:\n",
" slowdist = tfd.Independent(tfd.Normal(\n",
" jax.lax.stop_gradient(params['mean']),\n",
" jax.lax.stop_gradient(std * jnp.ones_like(params['mean']))), 1)\n",
" _, key = jax.random.split(key)\n",
" (loss, metrics), grads = jax.value_and_grad(loss_fn, has_aux=True)(params, key, slowdist)\n",
" updates, opt_state = optimizer.update(grads, opt_state)\n",
" params = optax.apply_updates(params, updates)\n",
" means.append(params['mean'])\n",
" if i % 100 == 0:\n",
" print(f'Iteration {i}')\n",
" print(f'\\t Loss: {loss}')\n",
" print(f'\\t Params: {params}')\n",
" print(f'\\t Metrics: {metrics}')\n",
" print(f'\\t Updates: {updates}')\n",
" print(f'\\t Grad: {grads}')\n",
" print(f'\\t Slowdist: {slowdist.mean(), slowdist.stddev()}')"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAi8AAAGdCAYAAADaPpOnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAABAxElEQVR4nO3deXxU1f3/8fdMlklCSEII2SRCQGTfFQyooKBsLvT7/fZr0YpaCtWKlS/+tGAtihvVqrUqFnds1bq0ihYpiqDsiywRWUwBw07CEsmQkHXm/v5AIpEsd5K5s76ej0ceZibnnPlkHGbeufecc22GYRgCAAAIEnZ/FwAAAOAJwgsAAAgqhBcAABBUCC8AACCoEF4AAEBQIbwAAICgQngBAABBhfACAACCSqS/C/A2t9utgwcPqmXLlrLZbP4uBwAAmGAYhk6cOKHMzEzZ7Q0fWwm58HLw4EFlZWX5uwwAANAE+/btU9u2bRtsE3LhpWXLlpJO/fIJCQl+rgYAAJjhdDqVlZVV8znekJALL6dPFSUkJBBeAAAIMmamfDBhFwAABBXCCwAACCqEFwAAEFQILwAAIKgQXgAAQFAhvAAAgKBCeAEAAEGF8AIAAIJKyG1SBwAAvMvlNrTm22NaveuYJEM5HVJ0UcfWirD75xqChBcAAFCLy21o1Y6jem3FDi3Z8d1ZP3/u811qGROpP/5PL43skeHz+ggvAACgxr++Oqip7+Sqym002O5EebVufWOj5vy8n88DDOEFAIAwUnyySje9slp5h0sVabdpVM8Mzbymh2KjIzTxr19q0bbDMuRShX2rXLbvFGG0ksPdXTZF1DnerW9s1K5HR/v0FBLhBQCAMDHkj0u051hZrfveXb9f767fX3P7pH2ViqJelMt+tOa+CHeKkqsmKc49qM5xP9hwQP9zYVtriq6DpauNZs2apQsvvFAtW7ZUamqqxo4dq7y8vEb7vffee+rSpYtiYmLUs2dPLViwwMoyAQAIKSXl1Zr4+pca8fQyTXz9S5WUV9cZXH7spH2VjkQ/KpftaK37XbajOhL9qE7aV9XZ7+5/fuW12s2wNLwsXbpUt99+u9asWaNFixapqqpKV155pUpLS+vts2rVKo0bN04TJkzQpk2bNHbsWI0dO1ZbtmyxslQAAELCNc8tV48HPtGi7YeVV3BCi7YfVo8HPmk0uBhyqSjqxVM3fnwG6PvbRVEvypCrjr6nJvn6is0wDJ892pEjR5SamqqlS5fq0ksvrbPNddddp9LSUs2fP7/mvosuukh9+vTRnDlzGn0Mp9OpxMREFRcXKyEhwWu1AwAQ6K55brk273c2qW+5fbMKHfc22i6t4lHFuHuddf/fbhmgSzq3adJjS559fvt0k7ri4mJJUnJycr1tVq9ereHDh9e6b8SIEVq9enWd7SsqKuR0Omt9AQAQbkrKq5scXCTJZTt7SbQn7f65aX+d91vBZxN23W63pkyZosGDB6tHjx71tisoKFBaWlqt+9LS0lRQUFBn+1mzZmnmzJlerRUAgGDgchtaseOI5izdpfW7i5o1VoTRqlntTlaefTrJKj4LL7fffru2bNmiFStWeHXc6dOna+rUqTW3nU6nsrKyvPoYAAAEkrJKlya+/qVW7DrmtTEd7u6KcKecmqxb16pnQ4owUuRwd6+z/4Xt6z+r4m0+CS+TJ0/W/PnztWzZMrVt2/BSqvT0dBUWFta6r7CwUOnp6XW2dzgccjgcXqsVAABfOL2L7T837deJskp9V1at2KgIdWjTQveO7qbY6Lr3VTm9F4u32RSh5KpJOhL96KkZuGcGmO9nxyZXTap3v5ebBrX3ek31sTS8GIahO+64Qx988IG++OILZWdnN9onJydHixcv1pQpU2ruW7RokXJyciysFAAA3yirdOkXc9dq9bd1zx1ZueuY/rZmr67olqqXxl9Y62dWBZfT4tyD1Kby3lP7vJyxXDrCaHifl19dmq3oSN9No7U0vNx+++1666239OGHH6ply5Y181YSExMVGxsrSRo/frzOOecczZo1S5J05513asiQIXryySc1ZswYvf3221q/fr1efPFFK0sFAMBynoSPRdsOa+Jfv6wJMGWVLkuDy2lx7kGKrRhoeofdX12aremju1le15ksDS9/+ctfJElDhw6tdf9rr72mm2++WZK0d+9e2e0/pLVBgwbprbfe0n333ad7771XnTp10rx58xqc5AsAQKBrylGTRdsOq6zSpdjoCM34aLNFlZ3Npog6l0OfKcoubX1wlE+PuJzm031efIF9XgAAgaas0qWuMxY2qW+Sw6YN949S3wf+LWdlYHxk35TTTjOv9e5BBU8+v7m2EQAAFnt0wbYm9z1eYajjvf69TI5NUqvYCN1ySbZ+dWkn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lSv9XY7PFRcXS5KSk5PrbRMor6mQuzCjv50+R5qWllbr/rS0tJA9f1pQUHDW4dXIyEglJyc3+Dtff/31ateunTIzM7V582b99re/VV5ent5//32rS/aJo0ePyuVy1fla+Oabb+rsU1BQEFavHalpz1Pnzp316quvqlevXiouLtYTTzyhQYMGaevWrZZfmDWY1Pd6cjqdKisrU2xsrJ8qCywZGRmaM2eOLrjgAlVUVOjll1/W0KFDtXbtWvXr18/f5fmE2+3WlClTNHjwYPXo0aPedoHyHhWW4WXatGl67LHHGmyzfft2denSxUcVBSazz1NTnTknpmfPnsrIyNCwYcO0a9cudezYscnjIvTl5OQoJyen5vagQYPUtWtXvfDCC3rooYf8WBmCUefOndW5c+ea24MGDdKuXbv0pz/9SX/729/8WJnv3H777dqyZYtWrFjh71JMCcvwctddd+nmm29usE2HDh2aNHZ6erokqbCwUBkZGTX3FxYWqk+fPk0a01/MPk/p6elnTaysrq5WUVFRzfNhxsCBAyVJO3fuDInwkpKSooiICBUWFta6v7CwsN7nJT093aP2oaApz9OPRUVFqW/fvtq5c6cVJQat+l5PCQkJHHVpxIABA4Lmg7y5Jk+eXLPQorEjl4HyHhWWc17atGmjLl26NPgVHR3dpLGzs7OVnp6uxYsX19zndDq1du3aWn8pBgOzz1NOTo6OHz+uDRs21PRdsmSJ3G53TSAxIzc3V5Jqhb5gFh0drf79+9d6Lbjdbi1evLje10JOTk6t9pK0aNGioHvteKIpz9OPuVwuff311yHz2vGWcHw9eUtubm7Iv54Mw9DkyZP1wQcfaMmSJcrOzm60T8C8pnw6PTgI7dmzx9i0aZMxc+ZMIz4+3ti0aZOxadMm48SJEzVtOnfubLz//vs1t//whz8YSUlJxocffmhs3rzZuPbaa43s7GyjrKzMH7+CT4wcOdLo27evsXbtWmPFihVGp06djHHjxtX8fP/+/Ubnzp2NtWvXGoZhGDt37jQefPBBY/369UZ+fr7x4YcfGh06dDAuvfRSf/0Klnj77bcNh8NhzJ0719i2bZsxadIkIykpySgoKDAMwzBuvPFGY9q0aTXtV65caURGRhpPPPGEsX37duP+++83oqKijK+//tpfv4JPePo8zZw50/jkk0+MXbt2GRs2bDB+9rOfGTExMcbWrVv99Sv4xIkTJ2regyQZTz31lLFp0yZjz549hmEYxrRp04wbb7yxpv23335rxMXFGXfffbexfft2Y/bs2UZERISxcOFCf/0KPuHp8/SnP/3JmDdvnrFjxw7j66+/Nu68807Dbrcbn332mb9+BZ+47bbbjMTEROOLL74wDh06VPN18uTJmjaB+h5FeGnETTfdZEg66+vzzz+vaSPJeO2112puu91u4/e//72RlpZmOBwOY9iwYUZeXp7vi/ehY8eOGePGjTPi4+ONhIQE45ZbbqkV8PLz82s9b3v37jUuvfRSIzk52XA4HMZ5551n3H333UZxcbGffgPrPPvss8a5555rREdHGwMGDDDWrFlT87MhQ4YYN910U6327777rnH++ecb0dHRRvfu3Y2PP/7YxxX7hyfP05QpU2rapqWlGaNHjzY2btzoh6p96/SS3h9/nX5ubrrpJmPIkCFn9enTp48RHR1tdOjQodZ7Vajy9Hl67LHHjI4dOxoxMTFGcnKyMXToUGPJkiX+Kd6H6nqOfvx5FqjvUTbDMAyfHeYBAABoprCc8wIAAIIX4QUAAAQVwgsAAAgqhBcAABBUCC8AACCoEF4AAEBQIbwAAICgQngBAABBhfACAACCCuEFAAAEFcILAAAIKoQXAAAQVP4/LBcE+m8qSK4AAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"a = np.array(means)\n",
"plt.scatter(a[:, 0], a[:, 1])\n",
"plt.scatter(a[0, 0], a[0, 1], color='g')\n",
"plt.scatter(target, target, color='r')\n",
"plt.plot([-1, 1], [1, 1], color='r')\n",
"plt.plot([-1, 1], [-1, -1], color='r')\n",
"plt.plot([-1, -1], [-1, 1], color='r')\n",
"plt.plot([1, 1], [-1, 1], color='r')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 0\n",
"\t Loss: 10.634836196899414\n",
"\t Params: {'log_alpha_mean': Array([9.99, 9.99], dtype=float32), 'log_alpha_scale': Array([9.99, 9.99], dtype=float32), 'log_penalty_temperature': Array([10.01], dtype=float32), 'log_temperature': Array([9.99], dtype=float32), 'mean': Array([1.99, 2.01], dtype=float32), 'std': Array([0.99000007, 0.99000007], dtype=float32)}\n",
"\t Metrics: {'loss_dist_mean': Array(5.5347853, dtype=float32), 'loss_dist_scale': Array(5.5347853, dtype=float32), 'loss_penalty_temperature': Array(-1.6811458, dtype=float32), 'loss_temperature': Array(1.0264105, dtype=float32), 'non_parametric_kl': Array(0.00011204, dtype=float32), 'parametric_kl_mean': Array(0., dtype=float32), 'parametric_kl_scale': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00380463, dtype=float32)}\n",
"\t Updates: {'log_alpha_mean': Array([-0.00999992, -0.00999992], dtype=float32), 'log_alpha_scale': Array([-0.00999983, -0.00999983], dtype=float32), 'log_penalty_temperature': Array([0.0099999], dtype=float32), 'log_temperature': Array([-0.00999993], dtype=float32), 'mean': Array([-0.00999993, 0.00999993], dtype=float32), 'std': Array([-0.00999993, -0.00999993], dtype=float32)}\n",
"\t Grad: {'log_alpha_mean': Array([0.00999954, 0.00999954], dtype=float32), 'log_alpha_scale': Array([0.00099995, 0.00099995], dtype=float32), 'log_penalty_temperature': Array([-0.00280459], dtype=float32), 'log_temperature': Array([0.09988341], dtype=float32), 'mean': Array([ 0.19940747, -0.12546885], dtype=float32), 'std': Array([0.17432547, 0.10761261], dtype=float32)}\n",
"\t Slowdist: (Array([2., 2.], dtype=float32), Array([1., 1.], dtype=float32))\n",
"Iteration 100\n",
"\t Loss: 10.501836776733398\n",
"\t Params: {'log_alpha_mean': Array([8.9898405, 8.990711 ], dtype=float32), 'log_alpha_scale': Array([8.972935, 9.004888], dtype=float32), 'log_penalty_temperature': Array([10.947263], dtype=float32), 'log_temperature': Array([8.990028], dtype=float32), 'mean': Array([2.0018919, 1.9789495], dtype=float32), 'std': Array([0.98237216, 1.003999 ], dtype=float32)}\n",
"\t Metrics: {'loss_dist_mean': Array(5.4963284, dtype=float32), 'loss_dist_scale': Array(5.4963284, dtype=float32), 'loss_penalty_temperature': Array(-1.5888923, dtype=float32), 'loss_temperature': Array(0.9000655, dtype=float32), 'non_parametric_kl': Array(7.0234364e-08, dtype=float32), 'parametric_kl_mean': Array(0., dtype=float32), 'parametric_kl_scale': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00356952, dtype=float32)}\n",
"\t Updates: {'log_alpha_mean': Array([-0.01003395, -0.00994753], dtype=float32), 'log_alpha_scale': Array([-0.01016829, -0.01042152], dtype=float32), 'log_penalty_temperature': Array([0.00926764], dtype=float32), 'log_temperature': Array([-0.00999924], dtype=float32), 'mean': Array([-0.00264046, 0.00381722], dtype=float32), 'std': Array([-5.8914506e-05, -5.2382553e-04], dtype=float32)}\n",
"\t Grad: {'log_alpha_mean': Array([0.00999877, 0.00999877], dtype=float32), 'log_alpha_scale': Array([0.00099987, 0.00099988], dtype=float32), 'log_penalty_temperature': Array([-0.00256951], dtype=float32), 'log_temperature': Array([0.09998763], dtype=float32), 'mean': Array([ 0.27481824, -0.02431485], dtype=float32), 'std': Array([0.0091095 , 0.29571533], dtype=float32)}\n",
"\t Slowdist: (Array([2.0045323, 1.9751323], dtype=float32), Array([0.98243105, 1.0045228 ], dtype=float32))\n",
"Iteration 200\n",
"\t Loss: 11.171329498291016\n",
"\t Params: {'log_alpha_mean': Array([7.9893394, 7.9916687], dtype=float32), 'log_alpha_scale': Array([7.9633045, 7.9910583], dtype=float32), 'log_penalty_temperature': Array([11.798137], dtype=float32), 'log_temperature': Array([7.990184], dtype=float32), 'mean': Array([2.0077944, 1.9766798], dtype=float32), 'std': Array([1.0159093, 1.0044231], dtype=float32)}\n",
"\t Metrics: {'loss_dist_mean': Array(5.8615475, dtype=float32), 'loss_dist_scale': Array(5.8615475, dtype=float32), 'loss_penalty_temperature': Array(-1.5463716, dtype=float32), 'loss_temperature': Array(0.8186146, dtype=float32), 'non_parametric_kl': Array(0.00012675, dtype=float32), 'parametric_kl_mean': Array(0., dtype=float32), 'parametric_kl_scale': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00307883, dtype=float32)}\n",
"\t Updates: {'log_alpha_mean': Array([-0.00997329, -0.00996955], dtype=float32), 'log_alpha_scale': Array([-0.01004053, -0.00998015], dtype=float32), 'log_penalty_temperature': Array([0.00844316], dtype=float32), 'log_temperature': Array([-0.00999664], dtype=float32), 'mean': Array([-0.00138968, 0.00061454], dtype=float32), 'std': Array([-0.00033521, 0.00300407], dtype=float32)}\n",
"\t Grad: {'log_alpha_mean': Array([0.00999664, 0.00999665], dtype=float32), 'log_alpha_scale': Array([0.00099966, 0.00099967], dtype=float32), 'log_penalty_temperature': Array([-0.00207885], dtype=float32), 'log_temperature': Array([0.09983971], dtype=float32), 'mean': Array([0.31438398, 0.30233333], dtype=float32), 'std': Array([-0.21620178, -0.08162832], dtype=float32)}\n",
"\t Slowdist: (Array([2.0091841, 1.9760653], dtype=float32), Array([1.0162445, 1.0014191], dtype=float32))\n",
"Iteration 300\n",
"\t Loss: 10.307255744934082\n",
"\t Params: {'log_alpha_mean': Array([6.988981, 6.993453], dtype=float32), 'log_alpha_scale': Array([6.9325366, 6.979272 ], dtype=float32), 'log_penalty_temperature': Array([12.571055], dtype=float32), 'log_temperature': Array([6.9905663], dtype=float32), 'mean': Array([1.9995255, 1.9818168], dtype=float32), 'std': Array([1.0207626, 1.0161766], dtype=float32)}\n",
"\t Metrics: {'loss_dist_mean': Array(5.5323844, dtype=float32), 'loss_dist_scale': Array(5.5323844, dtype=float32), 'loss_penalty_temperature': Array(-1.611834, dtype=float32), 'loss_temperature': Array(0.70034486, dtype=float32), 'non_parametric_kl': Array(-3.1834134e-08, dtype=float32), 'parametric_kl_mean': Array(0., dtype=float32), 'parametric_kl_scale': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00261007, dtype=float32)}\n",
"\t Updates: {'log_alpha_mean': Array([-0.01001551, -0.0099756 ], dtype=float32), 'log_alpha_scale': Array([-0.01025955, -0.01043388], dtype=float32), 'log_penalty_temperature': Array([0.00763704], dtype=float32), 'log_temperature': Array([-0.00999331], dtype=float32), 'mean': Array([0.00203451, 0.00038188], dtype=float32), 'std': Array([0.00180397, 0.00023839], dtype=float32)}\n",
"\t Grad: {'log_alpha_mean': Array([0.00999088, 0.00999092], dtype=float32), 'log_alpha_scale': Array([0.00099904, 0.00099908], dtype=float32), 'log_penalty_temperature': Array([-0.00161011], dtype=float32), 'log_temperature': Array([0.099909], dtype=float32), 'mean': Array([-0.15064903, 0.33702782], dtype=float32), 'std': Array([0.30689788, 0.11063433], dtype=float32)}\n",
"\t Slowdist: (Array([1.997491, 1.981435], dtype=float32), Array([1.0189586, 1.0159382], dtype=float32))\n",
"Iteration 400\n",
"\t Loss: 10.843290328979492\n",
"\t Params: {'log_alpha_mean': Array([5.9895415, 5.9943943], dtype=float32), 'log_alpha_scale': Array([5.943256 , 5.9878726], dtype=float32), 'log_penalty_temperature': Array([13.255847], dtype=float32), 'log_temperature': Array([5.9917774], dtype=float32), 'mean': Array([1.9738094, 1.9214609], dtype=float32), 'std': Array([1.0271099, 1.0046875], dtype=float32)}\n",
"\t Metrics: {'loss_dist_mean': Array(5.905237, dtype=float32), 'loss_dist_scale': Array(5.905237, dtype=float32), 'loss_penalty_temperature': Array(-1.7025176, dtype=float32), 'loss_temperature': Array(0.60328835, dtype=float32), 'non_parametric_kl': Array(1.1017386e-05, dtype=float32), 'parametric_kl_mean': Array(0., dtype=float32), 'parametric_kl_scale': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00299899, dtype=float32)}\n",
"\t Updates: {'log_alpha_mean': Array([-0.01000584, -0.01003526], dtype=float32), 'log_alpha_scale': Array([-0.00982182, -0.01015128], dtype=float32), 'log_penalty_temperature': Array([0.00677194], dtype=float32), 'log_temperature': Array([-0.00998274], dtype=float32), 'mean': Array([ 0.00045743, -0.00172322], dtype=float32), 'std': Array([ 4.3866476e-03, -1.1541058e-05], dtype=float32)}\n",
"\t Grad: {'log_alpha_mean': Array([0.00997526, 0.00997538], dtype=float32), 'log_alpha_scale': Array([0.00099741, 0.00099752], dtype=float32), 'log_penalty_temperature': Array([-0.00199902], dtype=float32), 'log_temperature': Array([0.09974231], dtype=float32), 'mean': Array([-0.10582384, -0.05908114], dtype=float32), 'std': Array([-0.41858244, 0.07739139], dtype=float32)}\n",
"\t Slowdist: (Array([1.973352, 1.923184], dtype=float32), Array([1.0227232, 1.0046991], dtype=float32))\n",
"Iteration 500\n",
"\t Loss: 10.395594596862793\n",
"\t Params: {'log_alpha_mean': Array([4.9947243, 5.000006 ], dtype=float32), 'log_alpha_scale': Array([4.9454246, 5.0715246], dtype=float32), 'log_penalty_temperature': Array([13.882815], dtype=float32), 'log_temperature': Array([4.995106], dtype=float32), 'mean': Array([1.9434159, 1.8974422], dtype=float32), 'std': Array([1.0186335, 1.0160666], dtype=float32)}\n",
"\t Metrics: {'loss_dist_mean': Array(5.629676, dtype=float32), 'loss_dist_scale': Array(5.629676, dtype=float32), 'loss_penalty_temperature': Array(-1.4755543, dtype=float32), 'loss_temperature': Array(0.50146896, dtype=float32), 'non_parametric_kl': Array(5.776201e-08, dtype=float32), 'parametric_kl_mean': Array(0., dtype=float32), 'parametric_kl_scale': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00210682, dtype=float32)}\n",
"\t Updates: {'log_alpha_mean': Array([-0.00996913, -0.00976018], dtype=float32), 'log_alpha_scale': Array([-0.01021249, -0.00995974], dtype=float32), 'log_penalty_temperature': Array([0.00581957], dtype=float32), 'log_temperature': Array([-0.00995071], dtype=float32), 'mean': Array([-0.00067231, 0.0018401 ], dtype=float32), 'std': Array([0.00267545, 0.00258026], dtype=float32)}\n",
"\t Grad: {'log_alpha_mean': Array([0.00993338, 0.00993372], dtype=float32), 'log_alpha_scale': Array([0.00099301, 0.00099383], dtype=float32), 'log_penalty_temperature': Array([-0.00110682], dtype=float32), 'log_temperature': Array([0.09933402], dtype=float32), 'mean': Array([0.41739544, 0.00244189], dtype=float32), 'std': Array([-0.00261962, 0.20891345], dtype=float32)}\n",
"\t Slowdist: (Array([1.9440882, 1.8956021], dtype=float32), Array([1.0159581, 1.0134863], dtype=float32))\n",
"Iteration 600\n",
"\t Loss: 9.812423706054688\n",
"\t Params: {'log_alpha_mean': Array([4.0005674, 4.0051894], dtype=float32), 'log_alpha_scale': Array([3.9680495, 4.037309 ], dtype=float32), 'log_penalty_temperature': Array([14.470889], dtype=float32), 'log_temperature': Array([4.004064], dtype=float32), 'mean': Array([1.9193609, 1.8731921], dtype=float32), 'std': Array([1.0311558, 0.9853905], dtype=float32)}\n",
"\t Metrics: {'loss_dist_mean': Array(5.4563446, dtype=float32), 'loss_dist_scale': Array(5.4563446, dtype=float32), 'loss_penalty_temperature': Array(-1.6040164, dtype=float32), 'loss_temperature': Array(0.4150761, dtype=float32), 'non_parametric_kl': Array(0.00024706, dtype=float32), 'parametric_kl_mean': Array(0., dtype=float32), 'parametric_kl_scale': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00168489, dtype=float32)}\n",
"\t Updates: {'log_alpha_mean': Array([-0.00989726, -0.00993025], dtype=float32), 'log_alpha_scale': Array([-0.00884643, -0.0102415 ], dtype=float32), 'log_penalty_temperature': Array([0.00505015], dtype=float32), 'log_temperature': Array([-0.00986623], dtype=float32), 'mean': Array([-0.00374791, -0.00048407], dtype=float32), 'std': Array([-0.00455066, -0.00316194], dtype=float32)}\n",
"\t Grad: {'log_alpha_mean': Array([0.00982198, 0.00982279], dtype=float32), 'log_alpha_scale': Array([0.0009816 , 0.00098283], dtype=float32), 'log_penalty_temperature': Array([-0.00068493], dtype=float32), 'log_temperature': Array([0.09798305], dtype=float32), 'mean': Array([ 0.02225181, -0.12331976], dtype=float32), 'std': Array([0.39881384, 0.12143445], dtype=float32)}\n",
"\t Slowdist: (Array([1.9231088, 1.8736762], dtype=float32), Array([1.0357065, 0.9885524], dtype=float32))\n",
"Iteration 700\n",
"\t Loss: 9.773394584655762\n",
"\t Params: {'log_alpha_mean': Array([3.0240288, 3.0242302], dtype=float32), 'log_alpha_scale': Array([3.0639296, 3.1058667], dtype=float32), 'log_penalty_temperature': Array([14.951046], dtype=float32), 'log_temperature': Array([3.0276752], dtype=float32), 'mean': Array([1.855441 , 1.8280596], dtype=float32), 'std': Array([1.0362141, 0.9911518], dtype=float32)}\n",
"\t Metrics: {'loss_dist_mean': Array(5.4080253, dtype=float32), 'loss_dist_scale': Array(5.4080253, dtype=float32), 'loss_penalty_temperature': Array(-1.4297508, dtype=float32), 'loss_temperature': Array(0.31920096, dtype=float32), 'non_parametric_kl': Array(0.00024687, dtype=float32), 'parametric_kl_mean': Array(0., dtype=float32), 'parametric_kl_scale': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00129923, dtype=float32)}\n",
"\t Updates: {'log_alpha_mean': Array([-0.00965122, -0.00967342], dtype=float32), 'log_alpha_scale': Array([-0.00959231, -0.01005476], dtype=float32), 'log_penalty_temperature': Array([0.00442179], dtype=float32), 'log_temperature': Array([-0.00962961], dtype=float32), 'mean': Array([-0.00245786, 0.00038475], dtype=float32), 'std': Array([-0.00392805, 0.00177201], dtype=float32)}\n",
"\t Grad: {'log_alpha_mean': Array([0.00954073, 0.00954082], dtype=float32), 'log_alpha_scale': Array([0.00095579, 0.00095754], dtype=float32), 'log_penalty_temperature': Array([-0.00029927], dtype=float32), 'log_temperature': Array([0.09518743], dtype=float32), 'mean': Array([0.17081639, 0.11142206], dtype=float32), 'std': Array([0.45378053, 0.18009579], dtype=float32)}\n",
"\t Slowdist: (Array([1.8578988, 1.8276747], dtype=float32), Array([1.0401422, 0.9893798], dtype=float32))\n",
"Iteration 800\n",
"\t Loss: 10.055827140808105\n",
"\t Params: {'log_alpha_mean': Array([2.0888386, 2.0819914], dtype=float32), 'log_alpha_scale': Array([2.1432326, 2.1323292], dtype=float32), 'log_penalty_temperature': Array([15.426739], dtype=float32), 'log_temperature': Array([2.0883243], dtype=float32), 'mean': Array([1.7852235, 1.7838103], dtype=float32), 'std': Array([1.0529678 , 0.97169656], dtype=float32)}\n",
"\t Metrics: {'loss_dist_mean': Array(5.56331, dtype=float32), 'loss_dist_scale': Array(5.56331, dtype=float32), 'loss_penalty_temperature': Array(-1.346628, dtype=float32), 'loss_temperature': Array(0.22710684, dtype=float32), 'non_parametric_kl': Array(0.00018226, dtype=float32), 'parametric_kl_mean': Array(0., dtype=float32), 'parametric_kl_scale': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00164119, dtype=float32)}\n",
"\t Updates: {'log_alpha_mean': Array([-0.00909793, -0.00911971], dtype=float32), 'log_alpha_scale': Array([-0.00960647, -0.00892896], dtype=float32), 'log_penalty_temperature': Array([0.00495098], dtype=float32), 'log_temperature': Array([-0.00909024], dtype=float32), 'mean': Array([0.00113627, 0.00039891], dtype=float32), 'std': Array([-0.00063927, -0.00023052], dtype=float32)}\n",
"\t Grad: {'log_alpha_mean': Array([0.00890702, 0.00890036], dtype=float32), 'log_alpha_scale': Array([0.00089593, 0.00089485], dtype=float32), 'log_penalty_temperature': Array([-0.00064125], dtype=float32), 'log_temperature': Array([0.0889027], dtype=float32), 'mean': Array([0.1821757 , 0.13760634], dtype=float32), 'std': Array([0.05844939, 0.265746 ], dtype=float32)}\n",
"\t Slowdist: (Array([1.7840872, 1.7834114], dtype=float32), Array([1.0536071 , 0.97192705], dtype=float32))\n",
"Iteration 900\n",
"\t Loss: 10.414846420288086\n",
"\t Params: {'log_alpha_mean': Array([1.2190869, 1.2119188], dtype=float32), 'log_alpha_scale': Array([1.3263105, 1.3453943], dtype=float32), 'log_penalty_temperature': Array([15.860594], dtype=float32), 'log_temperature': Array([1.2309864], dtype=float32), 'mean': Array([1.7702087, 1.7440857], dtype=float32), 'std': Array([1.0903659, 1.0317504], dtype=float32)}\n",
"\t Metrics: {'loss_dist_mean': Array(5.7435527, dtype=float32), 'loss_dist_scale': Array(5.7435527, dtype=float32), 'loss_penalty_temperature': Array(-1.268894, dtype=float32), 'loss_temperature': Array(0.16385984, dtype=float32), 'non_parametric_kl': Array(0.00283572, dtype=float32), 'parametric_kl_mean': Array(0., dtype=float32), 'parametric_kl_scale': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00157666, dtype=float32)}\n",
"\t Updates: {'log_alpha_mean': Array([-0.00810354, -0.00821495], dtype=float32), 'log_alpha_scale': Array([-0.00761957, -0.00028315], dtype=float32), 'log_penalty_temperature': Array([0.00437291], dtype=float32), 'log_temperature': Array([-0.00797245], dtype=float32), 'mean': Array([-0.00025294, -0.00126575], dtype=float32), 'std': Array([ 0.00027253, -0.00415462], dtype=float32)}\n",
"\t Grad: {'log_alpha_mean': Array([0.00773326, 0.00772087], dtype=float32), 'log_alpha_scale': Array([0.00079149, 0.00079342], dtype=float32), 'log_penalty_temperature': Array([-0.00057664], dtype=float32), 'log_temperature': Array([0.07533956], dtype=float32), 'mean': Array([0.32433525, 0.23652917], dtype=float32), 'std': Array([-0.1077466, 0.4517902], dtype=float32)}\n",
"\t Slowdist: (Array([1.7704617, 1.7453514], dtype=float32), Array([1.0900934, 1.0359051], dtype=float32))\n",
"Iteration 1000\n",
"\t Loss: 10.428284645080566\n",
"\t Params: {'log_alpha_mean': Array([0.47500676, 0.46594504], dtype=float32), 'log_alpha_scale': Array([0.56197387, 0.76214904], dtype=float32), 'log_penalty_temperature': Array([16.298033], dtype=float32), 'log_temperature': Array([0.50975794], dtype=float32), 'mean': Array([1.6426165, 1.6870136], dtype=float32), 'std': Array([1.065806 , 1.0490845], dtype=float32)}\n",
"\t Metrics: {'loss_dist_mean': Array(5.843442, dtype=float32), 'loss_dist_scale': Array(5.843442, dtype=float32), 'loss_penalty_temperature': Array(-1.3940485, dtype=float32), 'loss_temperature': Array(0.11408404, dtype=float32), 'non_parametric_kl': Array(0.00438417, dtype=float32), 'parametric_kl_mean': Array(0., dtype=float32), 'parametric_kl_scale': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00147438, dtype=float32)}\n",
"\t Updates: {'log_alpha_mean': Array([-0.0067487 , -0.00663688], dtype=float32), 'log_alpha_scale': Array([-0.00682014, -0.0060323 ], dtype=float32), 'log_penalty_temperature': Array([0.00372928], dtype=float32), 'log_temperature': Array([-0.00640762], dtype=float32), 'mean': Array([-0.00056 , -0.0004898], dtype=float32), 'std': Array([ 0.0005746 , -0.00354638], dtype=float32)}\n",
"\t Grad: {'log_alpha_mean': Array([0.00618162, 0.00615995], dtype=float32), 'log_alpha_scale': Array([0.00063848, 0.00068313], dtype=float32), 'log_penalty_temperature': Array([-0.00047437], dtype=float32), 'log_temperature': Array([0.05987953], dtype=float32), 'mean': Array([ 0.03570448, -0.02145896], dtype=float32), 'std': Array([ 0.16139364, -0.04688966], dtype=float32)}\n",
"\t Slowdist: (Array([1.6431766, 1.6875035], dtype=float32), Array([1.0652314, 1.0526309], dtype=float32))\n",
"Iteration 1100\n",
"\t Loss: 10.393377304077148\n",
"\t Params: {'log_alpha_mean': Array([-0.11661696, -0.14229466], dtype=float32), 'log_alpha_scale': Array([-0.04756668, 0.36868355], dtype=float32), 'log_penalty_temperature': Array([16.647552], dtype=float32), 'log_temperature': Array([-0.01090434], dtype=float32), 'mean': Array([1.5070807, 1.5932615], dtype=float32), 'std': Array([1.1037533, 1.0480413], dtype=float32)}\n",
"\t Metrics: {'loss_dist_mean': Array(5.703573, dtype=float32), 'loss_dist_scale': Array(5.703573, dtype=float32), 'loss_penalty_temperature': Array(-1.1448295, dtype=float32), 'loss_temperature': Array(0.11682957, dtype=float32), 'non_parametric_kl': Array(0.0506217, dtype=float32), 'parametric_kl_mean': Array(0., dtype=float32), 'parametric_kl_scale': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00107339, dtype=float32)}\n",
"\t Updates: {'log_alpha_mean': Array([-0.0054071 , -0.00539334], dtype=float32), 'log_alpha_scale': Array([-0.0037757, -0.0066846], dtype=float32), 'log_penalty_temperature': Array([0.00297134], dtype=float32), 'log_temperature': Array([-0.00356754], dtype=float32), 'mean': Array([ 0.00225757, -0.00110431], dtype=float32), 'std': Array([-0.00127008, 0.0013447 ], dtype=float32)}\n",
"\t Grad: {'log_alpha_mean': Array([0.00472226, 0.00465828], dtype=float32), 'log_alpha_scale': Array([0.00048905, 0.00059276], dtype=float32), 'log_penalty_temperature': Array([-7.34051e-05], dtype=float32), 'log_temperature': Array([0.02459866], dtype=float32), 'mean': Array([0.0935921, 0.2123504], dtype=float32), 'std': Array([0.21292293, 0.27811265], dtype=float32)}\n",
"\t Slowdist: (Array([1.5048231, 1.5943658], dtype=float32), Array([1.1050234, 1.0466967], dtype=float32))\n",
"Iteration 1200\n",
"\t Loss: 11.944158554077148\n",
"\t Params: {'log_alpha_mean': Array([-0.5763378, -0.6066979], dtype=float32), 'log_alpha_scale': Array([-0.51761127, -0.07573829], dtype=float32), 'log_penalty_temperature': Array([16.980047], dtype=float32), 'log_temperature': Array([-0.21937615], dtype=float32), 'mean': Array([1.2289373, 1.4086984], dtype=float32), 'std': Array([1.1992322, 1.1608555], dtype=float32)}\n",
"\t Metrics: {'loss_dist_mean': Array(6.3966117, dtype=float32), 'loss_dist_scale': Array(6.3966117, dtype=float32), 'loss_penalty_temperature': Array(-1.0252453, dtype=float32), 'loss_temperature': Array(0.16621596, dtype=float32), 'non_parametric_kl': Array(0.12052727, dtype=float32), 'parametric_kl_mean': Array(0., dtype=float32), 'parametric_kl_scale': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00136078, dtype=float32)}\n",
"\t Updates: {'log_alpha_mean': Array([-0.00339909, -0.00437006], dtype=float32), 'log_alpha_scale': Array([-0.00374575, -0.00377474], dtype=float32), 'log_penalty_temperature': Array([0.00335167], dtype=float32), 'log_temperature': Array([-0.00056251], dtype=float32), 'mean': Array([-0.00148898, -0.00209857], dtype=float32), 'std': Array([ 0.00148613, -0.00135106], dtype=float32)}\n",
"\t Grad: {'log_alpha_mean': Array([0.00360559, 0.00353811], dtype=float32), 'log_alpha_scale': Array([0.00037429, 0.00048202], dtype=float32), 'log_penalty_temperature': Array([-0.0003608], dtype=float32), 'log_temperature': Array([-0.00914509], dtype=float32), 'mean': Array([0.20790292, 0.18558462], dtype=float32), 'std': Array([-0.08903313, -0.0103488 ], dtype=float32)}\n",
"\t Slowdist: (Array([1.2304262, 1.410797 ], dtype=float32), Array([1.197746 , 1.1622066], dtype=float32))\n",
"Iteration 1300\n",
"\t Loss: 13.061481475830078\n",
"\t Params: {'log_alpha_mean': Array([-0.9459383, -0.9843066], dtype=float32), 'log_alpha_scale': Array([-0.8510949 , -0.48921522], dtype=float32), 'log_penalty_temperature': Array([17.347765], dtype=float32), 'log_temperature': Array([-0.13230795], dtype=float32), 'mean': Array([0.8780919, 1.152789 ], dtype=float32), 'std': Array([1.3100417, 1.3071972], dtype=float32)}\n",
"\t Metrics: {'loss_dist_mean': Array(6.99171, dtype=float32), 'loss_dist_scale': Array(6.99171, dtype=float32), 'loss_penalty_temperature': Array(-1.1008959, dtype=float32), 'loss_temperature': Array(0.17164816, dtype=float32), 'non_parametric_kl': Array(0.07910566, dtype=float32), 'parametric_kl_mean': Array(0., dtype=float32), 'parametric_kl_scale': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00157741, dtype=float32)}\n",
"\t Updates: {'log_alpha_mean': Array([-0.00322689, -0.00307982], dtype=float32), 'log_alpha_scale': Array([-0.0026935 , -0.00232858], dtype=float32), 'log_penalty_temperature': Array([0.00347433], dtype=float32), 'log_temperature': Array([0.00197124], dtype=float32), 'mean': Array([-0.00393439, -0.00330106], dtype=float32), 'std': Array([-0.0012877 , 0.00077658], dtype=float32)}\n",
"\t Grad: {'log_alpha_mean': Array([0.00280353, 0.00272648], dtype=float32), 'log_alpha_scale': Array([0.00029977, 0.00038063], dtype=float32), 'log_penalty_temperature': Array([-0.00057742], dtype=float32), 'log_temperature': Array([0.00974678], dtype=float32), 'mean': Array([-0.13022321, -0.00566802], dtype=float32), 'std': Array([ 0.09032083, -0.45699072], dtype=float32)}\n",
"\t Slowdist: (Array([0.88202626, 1.15609 ], dtype=float32), Array([1.3113294, 1.3064207], dtype=float32))\n",
"Iteration 1400\n",
"\t Loss: 13.246981620788574\n",
"\t Params: {'log_alpha_mean': Array([-1.2637354, -1.2861173], dtype=float32), 'log_alpha_scale': Array([-1.163773 , -0.8891531], dtype=float32), 'log_penalty_temperature': Array([17.625298], dtype=float32), 'log_temperature': Array([0.06646895], dtype=float32), 'mean': Array([0.58107066, 0.83711004], dtype=float32), 'std': Array([1.3478258, 1.3444604], dtype=float32)}\n",
"\t Metrics: {'loss_dist_mean': Array(6.893543, dtype=float32), 'loss_dist_scale': Array(6.893543, dtype=float32), 'loss_penalty_temperature': Array(-0.8154192, dtype=float32), 'loss_temperature': Array(0.26975632, dtype=float32), 'non_parametric_kl': Array(0.11344148, dtype=float32), 'parametric_kl_mean': Array(0., dtype=float32), 'parametric_kl_scale': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.0012234, dtype=float32)}\n",
"\t Updates: {'log_alpha_mean': Array([-0.00272009, -0.00278943], dtype=float32), 'log_alpha_scale': Array([-0.00329222, -0.00427353], dtype=float32), 'log_penalty_temperature': Array([0.00218693], dtype=float32), 'log_temperature': Array([0.00140221], dtype=float32), 'mean': Array([-0.00216168, -0.00104239], dtype=float32), 'std': Array([0.00111423, 0.00174302], dtype=float32)}\n",
"\t Grad: {'log_alpha_mean': Array([0.00220799, 0.00216984], dtype=float32), 'log_alpha_scale': Array([0.00023858, 0.00029217], dtype=float32), 'log_penalty_temperature': Array([-0.0002234], dtype=float32), 'log_temperature': Array([-0.00693923], dtype=float32), 'mean': Array([0.07961895, 0.06169013], dtype=float32), 'std': Array([-0.05584896, 0.00676262], dtype=float32)}\n",
"\t Slowdist: (Array([0.58323234, 0.8381524 ], dtype=float32), Array([1.3467115, 1.3427174], dtype=float32))\n",
"Iteration 1500\n",
"\t Loss: 13.0104341506958\n",
"\t Params: {'log_alpha_mean': Array([-1.5256542, -1.5527204], dtype=float32), 'log_alpha_scale': Array([-1.4252537, -1.2386018], dtype=float32), 'log_penalty_temperature': Array([17.651665], dtype=float32), 'log_temperature': Array([0.20024928], dtype=float32), 'mean': Array([0.23097302, 0.5666039 ], dtype=float32), 'std': Array([1.2613862, 1.3232708], dtype=float32)}\n",
"\t Metrics: {'loss_dist_mean': Array(6.639682, dtype=float32), 'loss_dist_scale': Array(6.639682, dtype=float32), 'loss_penalty_temperature': Array(-0.6181773, dtype=float32), 'loss_temperature': Array(0.34488016, dtype=float32), 'non_parametric_kl': Array(0.12784487, dtype=float32), 'parametric_kl_mean': Array(0., dtype=float32), 'parametric_kl_scale': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00081711, dtype=float32)}\n",
"\t Updates: {'log_alpha_mean': Array([-0.00253495, -0.00240613], dtype=float32), 'log_alpha_scale': Array([-0.00233881, -0.00278399], dtype=float32), 'log_penalty_temperature': Array([-0.00117721], dtype=float32), 'log_temperature': Array([0.00049501], dtype=float32), 'mean': Array([-0.0031742 , -0.00022893], dtype=float32), 'std': Array([-0.00060993, -0.00232036], dtype=float32)}\n",
"\t Grad: {'log_alpha_mean': Array([0.00179003, 0.00175041], dtype=float32), 'log_alpha_scale': Array([0.00019421, 0.00022516], dtype=float32), 'log_penalty_temperature': Array([0.00018289], dtype=float32), 'log_temperature': Array([-0.01530839], dtype=float32), 'mean': Array([0.24209608, 0.10759301], dtype=float32), 'std': Array([-0.18880594, 0.27808654], dtype=float32)}\n",
"\t Slowdist: (Array([0.23414722, 0.56683284], dtype=float32), Array([1.261996 , 1.3255912], dtype=float32))\n",
"Iteration 1600\n",
"\t Loss: 12.547872543334961\n",
"\t Params: {'log_alpha_mean': Array([-1.7588459, -1.7869983], dtype=float32), 'log_alpha_scale': Array([-1.6077781, -1.5071139], dtype=float32), 'log_penalty_temperature': Array([17.392824], dtype=float32), 'log_temperature': Array([0.3215012], dtype=float32), 'mean': Array([-0.05936042, 0.36424693], dtype=float32), 'std': Array([1.1156728, 1.2697328], dtype=float32)}\n",
"\t Metrics: {'loss_dist_mean': Array(6.3736124, dtype=float32), 'loss_dist_scale': Array(6.3736124, dtype=float32), 'loss_penalty_temperature': Array(-0.5237775, dtype=float32), 'loss_temperature': Array(0.32089895, dtype=float32), 'non_parametric_kl': Array(0.13612637, dtype=float32), 'parametric_kl_mean': Array(0., dtype=float32), 'parametric_kl_scale': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00071063, dtype=float32)}\n",
"\t Updates: {'log_alpha_mean': Array([-0.00222026, -0.00225564], dtype=float32), 'log_alpha_scale': Array([ 0.00164221, -0.00285414], dtype=float32), 'log_penalty_temperature': Array([-0.00352807], dtype=float32), 'log_temperature': Array([0.00084911], dtype=float32), 'mean': Array([-0.00507259, -0.00177004], dtype=float32), 'std': Array([ 0.00315816, -0.00362787], dtype=float32)}\n",
"\t Grad: {'log_alpha_mean': Array([0.00147213, 0.00143719], dtype=float32), 'log_alpha_scale': Array([0.00016667, 0.00018179], dtype=float32), 'log_penalty_temperature': Array([0.00028939], dtype=float32), 'log_temperature': Array([-0.02093469], dtype=float32), 'mean': Array([0.24120304, 0.19993056], dtype=float32), 'std': Array([-0.02220583, 0.01736975], dtype=float32)}\n",
"\t Slowdist: (Array([-0.05428784, 0.36601698], dtype=float32), Array([1.1125146, 1.2733607], dtype=float32))\n",
"Iteration 1700\n",
"\t Loss: 11.571065902709961\n",
"\t Params: {'log_alpha_mean': Array([-1.9648342, -1.9892168], dtype=float32), 'log_alpha_scale': Array([-1.6330125, -1.7388906], dtype=float32), 'log_penalty_temperature': Array([16.921747], dtype=float32), 'log_temperature': Array([0.40935376], dtype=float32), 'mean': Array([-0.2143139 , 0.09657985], dtype=float32), 'std': Array([0.9693599, 1.1729561], dtype=float32)}\n",
"\t Metrics: {'loss_dist_mean': Array(5.7141495, dtype=float32), 'loss_dist_scale': Array(5.7141495, dtype=float32), 'loss_penalty_temperature': Array(-0.3204788, dtype=float32), 'loss_temperature': Array(0.460307, dtype=float32), 'non_parametric_kl': Array(0.16240694, dtype=float32), 'parametric_kl_mean': Array(0., dtype=float32), 'parametric_kl_scale': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00040189, dtype=float32)}\n",
"\t Updates: {'log_alpha_mean': Array([-0.0017972 , -0.00163566], dtype=float32), 'log_alpha_scale': Array([-0.00116086, -0.00246525], dtype=float32), 'log_penalty_temperature': Array([-0.00602292], dtype=float32), 'log_temperature': Array([0.00095901], dtype=float32), 'mean': Array([ 0.00613796, -0.00044421], dtype=float32), 'std': Array([-7.146979e-05, -4.319504e-03], dtype=float32)}\n",
"\t Grad: {'log_alpha_mean': Array([0.00123139, 0.00120513], dtype=float32), 'log_alpha_scale': Array([0.00016358, 0.00014977], dtype=float32), 'log_penalty_temperature': Array([0.00059809], dtype=float32), 'log_temperature': Array([-0.03748804], dtype=float32), 'mean': Array([-0.09718732, -0.15199846], dtype=float32), 'std': Array([-0.06344247, 0.4360422 ], dtype=float32)}\n",
"\t Slowdist: (Array([-0.22045186, 0.09702406], dtype=float32), Array([0.96943134, 1.1772757 ], dtype=float32))\n",
"Iteration 1800\n",
"\t Loss: 10.886012077331543\n",
"\t Params: {'log_alpha_mean': Array([-2.150007 , -2.1710804], dtype=float32), 'log_alpha_scale': Array([-1.5323162, -1.7766854], dtype=float32), 'log_penalty_temperature': Array([16.2125], dtype=float32), 'log_temperature': Array([0.5223798], dtype=float32), 'mean': Array([-0.3659829 , -0.11126229], dtype=float32), 'std': Array([0.7850756, 0.9995463], dtype=float32)}\n",
"\t Metrics: {'loss_dist_mean': Array(5.3692656, dtype=float32), 'loss_dist_scale': Array(5.3692656, dtype=float32), 'loss_penalty_temperature': Array(-0.2714685, dtype=float32), 'loss_temperature': Array(0.41641247, dtype=float32), 'non_parametric_kl': Array(0.08041066, dtype=float32), 'parametric_kl_mean': Array(0., dtype=float32), 'parametric_kl_scale': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00032137, dtype=float32)}\n",
"\t Updates: {'log_alpha_mean': Array([-0.00180764, -0.00178288], dtype=float32), 'log_alpha_scale': Array([0.00374182, 0.00242694], dtype=float32), 'log_penalty_temperature': Array([-0.00792233], dtype=float32), 'log_temperature': Array([0.00024397], dtype=float32), 'mean': Array([-0.00089479, 0.00077892], dtype=float32), 'std': Array([0.00186791, 0.00145471], dtype=float32)}\n",
"\t Grad: {'log_alpha_mean': Array([0.001045 , 0.00102542], dtype=float32), 'log_alpha_scale': Array([0.00017711, 0.00014441], dtype=float32), 'log_penalty_temperature': Array([0.0006786], dtype=float32), 'log_temperature': Array([0.01229519], dtype=float32), 'mean': Array([ 0.04270515, -0.3861392 ], dtype=float32), 'std': Array([-0.11069083, -0.28594434], dtype=float32)}\n",
"\t Slowdist: (Array([-0.3650881 , -0.11204121], dtype=float32), Array([0.7832077, 0.9980916], dtype=float32))\n",
"Iteration 1900\n",
"\t Loss: 9.107159614562988\n",
"\t Params: {'log_alpha_mean': Array([-2.3197582, -2.3397439], dtype=float32), 'log_alpha_scale': Array([-1.4396453, -1.8691139], dtype=float32), 'log_penalty_temperature': Array([15.370003], dtype=float32), 'log_temperature': Array([0.59381837], dtype=float32), 'mean': Array([-0.42314735, -0.22344188], dtype=float32), 'std': Array([0.64479566, 0.91510457], dtype=float32)}\n",
"\t Metrics: {'loss_dist_mean': Array(4.4020996, dtype=float32), 'loss_dist_scale': Array(4.4020996, dtype=float32), 'loss_penalty_temperature': Array(-0.16732755, dtype=float32), 'loss_temperature': Array(0.46807468, dtype=float32), 'non_parametric_kl': Array(0.09569712, dtype=float32), 'parametric_kl_mean': Array(0., dtype=float32), 'parametric_kl_scale': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00019419, dtype=float32)}\n",
"\t Updates: {'log_alpha_mean': Array([-0.00166317, -0.00149785], dtype=float32), 'log_alpha_scale': Array([0.01352011, 0.00115625], dtype=float32), 'log_penalty_temperature': Array([-0.00894727], dtype=float32), 'log_temperature': Array([5.8931255e-05], dtype=float32), 'mean': Array([-0.00137651, 0.00207637], dtype=float32), 'std': Array([-0.00076207, 0.0026572 ], dtype=float32)}\n",
"\t Grad: {'log_alpha_mean': Array([0.00089635, 0.00088005], dtype=float32), 'log_alpha_scale': Array([0.00018951, 0.00013351], dtype=float32), 'log_penalty_temperature': Array([0.00080575], dtype=float32), 'log_temperature': Array([0.00277202], dtype=float32), 'mean': Array([-0.03199971, -0.00045451], dtype=float32), 'std': Array([ 0.70049524, -0.02407002], dtype=float32)}\n",
"\t Slowdist: (Array([-0.42177084, -0.22551826], dtype=float32), Array([0.6455577, 0.9124474], dtype=float32))\n",
"Iteration 2000\n",
"\t Loss: 8.340788841247559\n",
"\t Params: {'log_alpha_mean': Array([-2.456947 , -2.4883978], dtype=float32), 'log_alpha_scale': Array([-0.83445656, -1.9364644 ], dtype=float32), 'log_penalty_temperature': Array([14.427636], dtype=float32), 'log_temperature': Array([0.68290627], dtype=float32), 'mean': Array([-0.5906134 , -0.36252683], dtype=float32), 'std': Array([0.59498936, 0.797119 ], dtype=float32)}\n",
"\t Metrics: {'loss_dist_mean': Array(3.9837809, dtype=float32), 'loss_dist_scale': Array(3.9837809, dtype=float32), 'loss_penalty_temperature': Array(-0.16984057, dtype=float32), 'loss_temperature': Array(0.54095536, dtype=float32), 'non_parametric_kl': Array(0.08146161, dtype=float32), 'parametric_kl_mean': Array(0., dtype=float32), 'parametric_kl_scale': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00020885, dtype=float32)}\n",
"\t Updates: {'log_alpha_mean': Array([-0.00147673, -0.00149742], dtype=float32), 'log_alpha_scale': Array([ 0.0188882 , -0.00165148], dtype=float32), 'log_penalty_temperature': Array([-0.00956709], dtype=float32), 'log_temperature': Array([-9.4544586e-05], dtype=float32), 'mean': Array([-0.00633501, 0.00218428], dtype=float32), 'std': Array([ 0.00682069, -0.00095406], dtype=float32)}\n",
"\t Grad: {'log_alpha_mean': Array([0.00079039, 0.00076782], dtype=float32), 'log_alpha_scale': Array([0.00029873, 0.00012622], dtype=float32), 'log_penalty_temperature': Array([0.00079113], dtype=float32), 'log_temperature': Array([0.01231694], dtype=float32), 'mean': Array([0.36718503, 0.2499914 ], dtype=float32), 'std': Array([-0.17570448, 0.5790248 ], dtype=float32)}\n",
"\t Slowdist: (Array([-0.5842784, -0.3647111], dtype=float32), Array([0.5881687 , 0.79807305], dtype=float32))\n",
"Iteration 2100\n",
"\t Loss: 6.896862506866455\n",
"\t Params: {'log_alpha_mean': Array([-2.5990117, -2.625048 ], dtype=float32), 'log_alpha_scale': Array([ 0.5877083, -1.9314023], dtype=float32), 'log_penalty_temperature': Array([13.457586], dtype=float32), 'log_temperature': Array([0.7340979], dtype=float32), 'mean': Array([-0.6412752, -0.4639231], dtype=float32), 'std': Array([0.5442644 , 0.64757186], dtype=float32)}\n",
"\t Metrics: {'loss_dist_mean': Array(3.2003965, dtype=float32), 'loss_dist_scale': Array(3.2003965, dtype=float32), 'loss_penalty_temperature': Array(-0.11266573, dtype=float32), 'loss_temperature': Array(0.6061672, dtype=float32), 'non_parametric_kl': Array(0.078012, dtype=float32), 'parametric_kl_mean': Array(0., dtype=float32), 'parametric_kl_scale': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00014412, dtype=float32)}\n",
"\t Updates: {'log_alpha_mean': Array([-0.00139315, -0.00136317], dtype=float32), 'log_alpha_scale': Array([0.02413624, 0.00151237], dtype=float32), 'log_penalty_temperature': Array([-0.00997739], dtype=float32), 'log_temperature': Array([-3.4192726e-05], dtype=float32), 'mean': Array([9.4851508e-05, 2.1299592e-03], dtype=float32), 'std': Array([ 0.0016123 , -0.00591179], dtype=float32)}\n",
"\t Grad: {'log_alpha_mean': Array([0.00069292, 0.0006763 ], dtype=float32), 'log_alpha_scale': Array([0.00063728, 0.00012643], dtype=float32), 'log_penalty_temperature': Array([0.00085584], dtype=float32), 'log_temperature': Array([0.01485759], dtype=float32), 'mean': Array([ 0.27730727, -0.39022574], dtype=float32), 'std': Array([0.6570852, 0.6844051], dtype=float32)}\n",
"\t Slowdist: (Array([-0.64137006, -0.46605307], dtype=float32), Array([0.5426521, 0.6534836], dtype=float32))\n",
"Iteration 2200\n",
"\t Loss: 5.311196804046631\n",
"\t Params: {'log_alpha_mean': Array([-2.7324965, -2.7575915], dtype=float32), 'log_alpha_scale': Array([ 1.4546008, -1.3423479], dtype=float32), 'log_penalty_temperature': Array([12.440416], dtype=float32), 'log_temperature': Array([0.76946247], dtype=float32), 'mean': Array([-0.6691051, -0.5819451], dtype=float32), 'std': Array([0.46756318, 0.5527357 ], dtype=float32)}\n",
"\t Metrics: {'loss_dist_mean': Array(2.276059, dtype=float32), 'loss_dist_scale': Array(2.276059, dtype=float32), 'loss_penalty_temperature': Array(-0.06675544, dtype=float32), 'loss_temperature': Array(0.8226953, dtype=float32), 'non_parametric_kl': Array(0.11348477, dtype=float32), 'parametric_kl_mean': Array(0., dtype=float32), 'parametric_kl_scale': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(9.156967e-05, dtype=float32)}\n",
"\t Updates: {'log_alpha_mean': Array([-0.00129202, -0.00121036], dtype=float32), 'log_alpha_scale': Array([0.00484031, 0.00192277], dtype=float32), 'log_penalty_temperature': Array([-0.01026074], dtype=float32), 'log_temperature': Array([0.00106293], dtype=float32), 'mean': Array([ 0.00045585, -0.00377636], dtype=float32), 'std': Array([-0.00517121, -0.00102045], dtype=float32)}\n",
"\t Grad: {'log_alpha_mean': Array([0.00061157, 0.00059727], dtype=float32), 'log_alpha_scale': Array([0.00080996, 0.00020681], dtype=float32), 'log_penalty_temperature': Array([0.00090843], dtype=float32), 'log_temperature': Array([-0.00921247], dtype=float32), 'mean': Array([-0.18599452, 0.12220959], dtype=float32), 'std': Array([1.3813591, 1.4182489], dtype=float32)}\n",
"\t Slowdist: (Array([-0.66956097, -0.57816875], dtype=float32), Array([0.4727344, 0.5537561], dtype=float32))\n",
"Iteration 2300\n",
"\t Loss: 4.692106246948242\n",
"\t Params: {'log_alpha_mean': Array([-2.8534713, -2.8690355], dtype=float32), 'log_alpha_scale': Array([2.0471725 , 0.13146144], dtype=float32), 'log_penalty_temperature': Array([11.408697], dtype=float32), 'log_temperature': Array([0.8000543], dtype=float32), 'mean': Array([-0.6372059 , -0.64016896], dtype=float32), 'std': Array([0.37509105, 0.5431576 ], dtype=float32)}\n",
"\t Metrics: {'loss_dist_mean': Array(2.0379157, dtype=float32), 'loss_dist_scale': Array(2.0379157, dtype=float32), 'loss_penalty_temperature': Array(-0.07064232, dtype=float32), 'loss_temperature': Array(0.6828854, dtype=float32), 'non_parametric_kl': Array(0.07788844, dtype=float32), 'parametric_kl_mean': Array(0., dtype=float32), 'parametric_kl_scale': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00010004, dtype=float32)}\n",
"\t Updates: {'log_alpha_mean': Array([-0.00106187, -0.0012204 ], dtype=float32), 'log_alpha_scale': Array([0.01081586, 0.00433503], dtype=float32), 'log_penalty_temperature': Array([-0.0103283], dtype=float32), 'log_temperature': Array([-0.00019934], dtype=float32), 'mean': Array([0.00196795, 0.00243106], dtype=float32), 'std': Array([-0.00032353, -0.00163485], dtype=float32)}\n",
"\t Grad: {'log_alpha_mean': Array([0.00054557, 0.00053768], dtype=float32), 'log_alpha_scale': Array([0.00088456, 0.00053174], dtype=float32), 'log_penalty_temperature': Array([0.00089996], dtype=float32), 'log_temperature': Array([0.01525766], dtype=float32), 'mean': Array([ 0.53430986, -0.4800687 ], dtype=float32), 'std': Array([1.5927801, 0.6046827], dtype=float32)}\n",
"\t Slowdist: (Array([-0.63917387, -0.6426 ], dtype=float32), Array([0.37541458, 0.5447924 ], dtype=float32))\n",
"Iteration 2400\n",
"\t Loss: 4.198826313018799\n",
"\t Params: {'log_alpha_mean': Array([-2.9525423, -2.980736 ], dtype=float32), 'log_alpha_scale': Array([2.4084244 , 0.80146295], dtype=float32), 'log_penalty_temperature': Array([10.396122], dtype=float32), 'log_temperature': Array([0.8096197], dtype=float32), 'mean': Array([-0.6637495 , -0.69964975], dtype=float32), 'std': Array([0.33132267, 0.4892195 ], dtype=float32)}\n",
"\t Metrics: {'loss_dist_mean': Array(1.7508824, dtype=float32), 'loss_dist_scale': Array(1.7508824, dtype=float32), 'loss_penalty_temperature': Array(-0.08890528, dtype=float32), 'loss_temperature': Array(0.78130347, dtype=float32), 'non_parametric_kl': Array(0.11710778, dtype=float32), 'parametric_kl_mean': Array(0., dtype=float32), 'parametric_kl_scale': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00016188, dtype=float32)}\n",
"\t Updates: {'log_alpha_mean': Array([-0.00107273, -0.00108827], dtype=float32), 'log_alpha_scale': Array([0.00585714, 0.00444589], dtype=float32), 'log_penalty_temperature': Array([-0.0101672], dtype=float32), 'log_temperature': Array([6.6331086e-06], dtype=float32), 'mean': Array([-0.00210207, -0.00128249], dtype=float32), 'std': Array([-0.00226152, -0.00476074], dtype=float32)}\n",
"\t Grad: {'log_alpha_mean': Array([0.00049667, 0.00048354], dtype=float32), 'log_alpha_scale': Array([0.00091702, 0.00068934], dtype=float32), 'log_penalty_temperature': Array([0.00083809], dtype=float32), 'log_temperature': Array([-0.01183898], dtype=float32), 'mean': Array([-0.45073563, 0.2154806 ], dtype=float32), 'std': Array([0.71651936, 0.80619526], dtype=float32)}\n",
"\t Slowdist: (Array([-0.66164744, -0.69836724], dtype=float32), Array([0.3335842 , 0.49398023], dtype=float32))\n",
"Iteration 2500\n",
"\t Loss: 3.302090883255005\n",
"\t Params: {'log_alpha_mean': Array([-3.0564716, -3.092617 ], dtype=float32), 'log_alpha_scale': Array([2.786175 , 1.3331501], dtype=float32), 'log_penalty_temperature': Array([9.360169], dtype=float32), 'log_temperature': Array([0.80660987], dtype=float32), 'mean': Array([-0.66668504, -0.6842781 ], dtype=float32), 'std': Array([0.2908691, 0.4426876], dtype=float32)}\n",
"\t Metrics: {'loss_dist_mean': Array(1.2415444, dtype=float32), 'loss_dist_scale': Array(1.2415444, dtype=float32), 'loss_penalty_temperature': Array(-0.06395072, dtype=float32), 'loss_temperature': Array(0.8776398, dtype=float32), 'non_parametric_kl': Array(0.09520049, dtype=float32), 'parametric_kl_mean': Array(0., dtype=float32), 'parametric_kl_scale': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00011058, dtype=float32)}\n",
"\t Updates: {'log_alpha_mean': Array([-0.00091714, -0.00101344], dtype=float32), 'log_alpha_scale': Array([0.00414436, 0.00073057], dtype=float32), 'log_penalty_temperature': Array([-0.01050976], dtype=float32), 'log_temperature': Array([-0.00016694], dtype=float32), 'mean': Array([-0.00357646, 0.00386907], dtype=float32), 'std': Array([ 7.3645823e-04, -5.2013595e-05], dtype=float32)}\n",
"\t Grad: {'log_alpha_mean': Array([0.00044978, 0.00043455], dtype=float32), 'log_alpha_scale': Array([0.0009417 , 0.00079124], dtype=float32), 'log_penalty_temperature': Array([0.00088935], dtype=float32), 'log_temperature': Array([0.0033185], dtype=float32), 'mean': Array([-0.04133159, 0.34382966], dtype=float32), 'std': Array([0.34080172, 1.266612 ], dtype=float32)}\n",
"\t Slowdist: (Array([-0.6631086, -0.6881471], dtype=float32), Array([0.29013264, 0.4427396 ], dtype=float32))\n",
"Iteration 2600\n",
"\t Loss: 2.4357240200042725\n",
"\t Params: {'log_alpha_mean': Array([-3.1564276, -3.1977131], dtype=float32), 'log_alpha_scale': Array([3.1509507, 1.7455796], dtype=float32), 'log_penalty_temperature': Array([8.325622], dtype=float32), 'log_temperature': Array([0.7955268], dtype=float32), 'mean': Array([-0.70309126, -0.6842369 ], dtype=float32), 'std': Array([0.25166315, 0.37185827], dtype=float32)}\n",
"\t Metrics: {'loss_dist_mean': Array(0.71509874, dtype=float32), 'loss_dist_scale': Array(0.71509874, dtype=float32), 'loss_penalty_temperature': Array(-0.06664184, dtype=float32), 'loss_temperature': Array(1.0662508, dtype=float32), 'non_parametric_kl': Array(0.11403795, dtype=float32), 'parametric_kl_mean': Array(0., dtype=float32), 'parametric_kl_scale': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00012324, dtype=float32)}\n",
"\t Updates: {'log_alpha_mean': Array([-0.00098323, -0.00098954], dtype=float32), 'log_alpha_scale': Array([ 0.0023826 , -0.00260392], dtype=float32), 'log_penalty_temperature': Array([-0.0104158], dtype=float32), 'log_temperature': Array([0.00047265], dtype=float32), 'mean': Array([-0.00741834, -0.00101 ], dtype=float32), 'std': Array([-0.00091901, -0.00624351], dtype=float32)}\n",
"\t Grad: {'log_alpha_mean': Array([0.00040877, 0.00039289], dtype=float32), 'log_alpha_scale': Array([0.00095885, 0.00085172], dtype=float32), 'log_penalty_temperature': Array([0.00087653], dtype=float32), 'log_temperature': Array([-0.00967095], dtype=float32), 'mean': Array([1.5016037, 0.9584311], dtype=float32), 'std': Array([0.4960642, 1.0620732], dtype=float32)}\n",
"\t Slowdist: (Array([-0.6956729, -0.6832269], dtype=float32), Array([0.25258216, 0.37810177], dtype=float32))\n",
"Iteration 2700\n",
"\t Loss: 1.2465910911560059\n",
"\t Params: {'log_alpha_mean': Array([-3.2478104, -3.297833 ], dtype=float32), 'log_alpha_scale': Array([3.3466885, 2.1322896], dtype=float32), 'log_penalty_temperature': Array([7.2462516], dtype=float32), 'log_temperature': Array([0.7884901], dtype=float32), 'mean': Array([-0.73617065, -0.69644904], dtype=float32), 'std': Array([0.23319091, 0.31601974], dtype=float32)}\n",
"\t Metrics: {'loss_dist_mean': Array(0.06008823, dtype=float32), 'loss_dist_scale': Array(0.06008823, dtype=float32), 'loss_penalty_temperature': Array(-0.02687555, dtype=float32), 'loss_temperature': Array(1.146919, dtype=float32), 'non_parametric_kl': Array(0.09441743, dtype=float32), 'parametric_kl_mean': Array(0., dtype=float32), 'parametric_kl_scale': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(8.500862e-05, dtype=float32)}\n",
"\t Updates: {'log_alpha_mean': Array([-0.00103505, -0.00099401], dtype=float32), 'log_alpha_scale': Array([-0.00123729, 0.00064391], dtype=float32), 'log_penalty_temperature': Array([-0.01070267], dtype=float32), 'log_temperature': Array([0.0001058], dtype=float32), 'mean': Array([0.00441471, 0.00168713], dtype=float32), 'std': Array([-0.00428923, -0.00169005], dtype=float32)}\n",
"\t Grad: {'log_alpha_mean': Array([0.00037443, 0.0003568 ], dtype=float32), 'log_alpha_scale': Array([0.00096604, 0.00089394], dtype=float32), 'log_penalty_temperature': Array([0.00091434], dtype=float32), 'log_temperature': Array([0.00383787], dtype=float32), 'mean': Array([-0.4347672 , 0.06996777], dtype=float32), 'std': Array([1.3900118, 1.7754488], dtype=float32)}\n",
"\t Slowdist: (Array([-0.7405854 , -0.69813615], dtype=float32), Array([0.23748013, 0.3177098 ], dtype=float32))\n",
"Iteration 2800\n",
"\t Loss: 0.8522613644599915\n",
"\t Params: {'log_alpha_mean': Array([-3.333727 , -3.3931324], dtype=float32), 'log_alpha_scale': Array([3.7861686, 2.6131463], dtype=float32), 'log_penalty_temperature': Array([6.194662], dtype=float32), 'log_temperature': Array([0.78711265], dtype=float32), 'mean': Array([-0.7609844, -0.745074 ], dtype=float32), 'std': Array([0.23116761, 0.2870624 ], dtype=float32)}\n",
"\t Metrics: {'loss_dist_mean': Array(-0.11281026, dtype=float32), 'loss_dist_scale': Array(-0.11281026, dtype=float32), 'loss_penalty_temperature': Array(-0.05427381, dtype=float32), 'loss_temperature': Array(1.1249924, dtype=float32), 'non_parametric_kl': Array(0.10725211, dtype=float32), 'parametric_kl_mean': Array(0., dtype=float32), 'parametric_kl_scale': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(0.00014902, dtype=float32)}\n",
"\t Updates: {'log_alpha_mean': Array([-0.00102781, -0.00092125], dtype=float32), 'log_alpha_scale': Array([0.00924895, 0.0017472 ], dtype=float32), 'log_penalty_temperature': Array([-0.01039724], dtype=float32), 'log_temperature': Array([-0.00022391], dtype=float32), 'mean': Array([-0.00220119, -0.00133538], dtype=float32), 'std': Array([ 0.00100698, -0.00305621], dtype=float32)}\n",
"\t Grad: {'log_alpha_mean': Array([0.00034466, 0.0003254 ], dtype=float32), 'log_alpha_scale': Array([0.00097762, 0.00093159], dtype=float32), 'log_penalty_temperature': Array([0.00084926], dtype=float32), 'log_temperature': Array([-0.00498392], dtype=float32), 'mean': Array([0.9991412, 1.3850368], dtype=float32), 'std': Array([0.75854874, 1.988039 ], dtype=float32)}\n",
"\t Slowdist: (Array([-0.7587832, -0.7437386], dtype=float32), Array([0.23016064, 0.2901186 ], dtype=float32))\n",
"Iteration 2900\n",
"\t Loss: -0.18246911466121674\n",
"\t Params: {'log_alpha_mean': Array([-3.4260716, -3.4798765], dtype=float32), 'log_alpha_scale': Array([4.249098 , 3.2621253], dtype=float32), 'log_penalty_temperature': Array([5.1533737], dtype=float32), 'log_temperature': Array([0.7354052], dtype=float32), 'mean': Array([-0.80483425, -0.75524163], dtype=float32), 'std': Array([0.20568475, 0.24975947], dtype=float32)}\n",
"\t Metrics: {'loss_dist_mean': Array(-0.69869435, dtype=float32), 'loss_dist_scale': Array(-0.69869435, dtype=float32), 'loss_penalty_temperature': Array(-0.02461838, dtype=float32), 'loss_temperature': Array(1.2313594, dtype=float32), 'non_parametric_kl': Array(0.08800526, dtype=float32), 'parametric_kl_mean': Array(0., dtype=float32), 'parametric_kl_scale': Array(0., dtype=float32), 'penalty_non_parametric_kl': Array(8.6738524e-05, dtype=float32)}\n",
"\t Updates: {'log_alpha_mean': Array([-0.00092478, -0.00081869], dtype=float32), 'log_alpha_scale': Array([0.00459711, 0.00396084], dtype=float32), 'log_penalty_temperature': Array([-0.01030952], dtype=float32), 'log_temperature': Array([-0.00095799], dtype=float32), 'mean': Array([-0.00298282, 0.00087718], dtype=float32), 'std': Array([ 0.00244214, -0.00095704], dtype=float32)}\n",
"\t Grad: {'log_alpha_mean': Array([0.00031519, 0.00029914], dtype=float32), 'log_alpha_scale': Array([0.00098586, 0.00096297], dtype=float32), 'log_penalty_temperature': Array([0.000908], dtype=float32), 'log_temperature': Array([0.00811102], dtype=float32), 'mean': Array([ 1.2864131 , -0.31208917], dtype=float32), 'std': Array([1.6993513, 1.9797974], dtype=float32)}\n",
"\t Slowdist: (Array([-0.80185145, -0.75611883], dtype=float32), Array([0.20324261, 0.2507165 ], dtype=float32))\n"
]
}
],
"source": [
"\n",
"optimizer = optax.adam(1e-2)\n",
"key = jax.random.PRNGKey(41)\n",
"target = jnp.array([-0.75, -0.75])\n",
"n_act_samples = 100\n",
"std = 0.3\n",
"slowdist_update_freq = 25\n",
"objective_multiplier = 1.\n",
"objective_constraint = True\n",
"slowdist_constraint = True\n",
"penalty_constraint = True\n",
"\n",
"@jax.jit\n",
"def loss_fn(params, key, slowdist):\n",
" metrics = {}\n",
" mean = params['mean']\n",
" std = params['std']\n",
" temperature = jax.nn.softplus(params['log_temperature']) + 1e-8\n",
" penalty_temperature = jax.nn.softplus(params['log_penalty_temperature']) + 1e-8\n",
" alpha_mean = jax.nn.softplus(params['log_alpha_mean']) + 1e-8\n",
" alpha_scale = jax.nn.softplus(params['log_alpha_scale']) + 1e-8\n",
"\n",
" dist = tfd.Independent(tfd.Normal(mean, std), reinterpreted_batch_ndims=1)\n",
" a_improvement = slowdist.sample(n_act_samples, seed=key)\n",
" q_improvement = jax.lax.stop_gradient(objective_multiplier * jnp.sum(jnp.exp(-30 * (a_improvement - target)**2), -1))\n",
"\n",
"\n",
" def compute_weights_and_temperature_loss(q_values, epsilon, temperature):\n",
" tempered_q_values = jax.lax.stop_gradient(q_values) / temperature\n",
" q_logsumexp = jnp.mean(jnp.log(jnp.mean(jnp.exp(tempered_q_values), axis=0)))\n",
" loss_temperature = jnp.mean(temperature * epsilon + temperature * q_logsumexp)\n",
" normalized_weights = jax.lax.stop_gradient(jax.nn.softmax(tempered_q_values, axis=0))\n",
" num_action_samples = normalized_weights.shape[0]\n",
" integrand = jnp.log(num_action_samples * normalized_weights + 1e-8)\n",
" non_parametric_kl = jnp.sum(normalized_weights * integrand, axis=0)\n",
" return normalized_weights, loss_temperature, non_parametric_kl\n",
"\n",
" objective_normalized_weights, objective_loss_temperature, objective_non_parametric_kl = compute_weights_and_temperature_loss(q_improvement, 0.1, temperature)\n",
" metrics['loss_temperature'] = objective_loss_temperature\n",
" metrics['non_parametric_kl'] = objective_non_parametric_kl\n",
"\n",
" diff_out_of_bound = a_improvement - jnp.clip(a_improvement, -1.0, 1.0)\n",
" cost_out_of_bound = -jnp.linalg.norm(diff_out_of_bound, axis=-1)\n",
" penalty_normalized_weights, loss_penalty_temperature, penalty_non_parametric_kl = compute_weights_and_temperature_loss(cost_out_of_bound, 0.001, penalty_temperature)\n",
" metrics['loss_penalty_temperature'] = loss_penalty_temperature\n",
" metrics['penalty_non_parametric_kl'] = penalty_non_parametric_kl\n",
"\n",
" normalized_weights = jnp.zeros_like(q_improvement)\n",
" loss_temperature = 0.\n",
" if objective_constraint:\n",
" loss_temperature += objective_loss_temperature\n",
" normalized_weights += objective_normalized_weights\n",
" if penalty_constraint:\n",
" loss_temperature += loss_penalty_temperature\n",
" normalized_weights += penalty_normalized_weights\n",
"\n",
" dist_fixed_scale = tfd.Independent(tfd.Normal(\n",
" loc=dist.distribution.mean(),\n",
" scale=jax.lax.stop_gradient(slowdist.distribution.stddev())), 1)\n",
" dist_fixed_mean = tfd.Independent(tfd.Normal(\n",
" loc=jax.lax.stop_gradient(slowdist.distribution.mean()),\n",
" scale=dist.distribution.stddev()), 1)\n",
"\n",
" def compute_parametric_kl_penalty_and_dual_loss(kl, alpha, epsilon):\n",
" loss_kl = jnp.sum(jax.lax.stop_gradient(alpha) * kl, -1)\n",
" loss_alpha = jnp.sum(alpha * (epsilon - jax.lax.stop_gradient(kl)), -1)\n",
" return loss_kl, loss_alpha\n",
"\n",
" kl_mean = slowdist.distribution.kl_divergence(dist_fixed_scale.distribution)\n",
" loss_kl_mean, loss_alpha_mean= compute_parametric_kl_penalty_and_dual_loss(kl_mean, alpha_mean, 0.01)\n",
" metrics['parametric_kl_mean'] = jnp.mean(kl_mean)\n",
" kl_scale = slowdist.distribution.kl_divergence(dist_fixed_mean.distribution)\n",
" loss_kl_scale, loss_alpha_scale = compute_parametric_kl_penalty_and_dual_loss(kl_scale, alpha_scale, 0.001)\n",
" metrics['parametric_kl_scale'] = jnp.mean(kl_scale)\n",
"\n",
" def compute_cross_entropy_loss(distribution, sampled_actions, normalized_weights):\n",
" logpi = distribution.log_prob(jax.lax.stop_gradient(sampled_actions))\n",
" return jnp.mean(-jnp.sum(normalized_weights * logpi, axis=0))\n",
"\n",
" loss_dist_mean = compute_cross_entropy_loss(dist_fixed_scale, a_improvement, normalized_weights)\n",
" metrics['loss_dist_mean'] = loss_dist_mean\n",
" loss_dist_scale = compute_cross_entropy_loss(dist_fixed_mean, a_improvement, normalized_weights)\n",
" metrics['loss_dist_scale'] = loss_dist_scale\n",
"\n",
" loss_dist = loss_dist_mean + loss_dist_scale\n",
" loss = loss_dist + loss_temperature\n",
" if slowdist_constraint:\n",
" loss += loss_kl_mean + loss_kl_scale\n",
" loss += loss_alpha_mean + loss_alpha_scale\n",
"\n",
" return loss, metrics\n",
"\n",
"\n",
"params = {\n",
" 'mean': jnp.array([2.0, 2.0]),\n",
" 'std': jnp.array([1.0, 1.0]),\n",
" 'log_temperature': jnp.array([10.]),\n",
" 'log_penalty_temperature': jnp.array([10.]),\n",
" 'log_alpha_mean': jnp.array([10., 10.]),\n",
" 'log_alpha_scale': jnp.array([10., 10.]),}\n",
"opt_state = optimizer.init(params)\n",
"slowdist = tfd.Independent(tfd.Normal(\n",
" jax.lax.stop_gradient(params['mean']),\n",
" jax.lax.stop_gradient(std * jnp.ones_like(params['mean']))), 1)\n",
"\n",
"means = []\n",
"stds = []\n",
"log_temperatures = []\n",
"for i in range(3000):\n",
" if i % slowdist_update_freq == 0:\n",
" slowdist = tfd.Independent(tfd.Normal(\n",
" jax.lax.stop_gradient(params['mean']),\n",
" jax.lax.stop_gradient(params['std'])), 1)\n",
" _, key = jax.random.split(key)\n",
" (loss, metrics), grads = jax.value_and_grad(loss_fn, has_aux=True)(params, key, slowdist)\n",
" updates, opt_state = optimizer.update(grads, opt_state)\n",
" params = optax.apply_updates(params, updates)\n",
" means.append(params['mean'])\n",
" stds.append(params['std'])\n",
" log_temperatures.append(params['log_temperature'])\n",
" if i % 100 == 0:\n",
" print(f'Iteration {i}')\n",
" print(f'\\t Loss: {loss}')\n",
" print(f'\\t Params: {params}')\n",
" print(f'\\t Metrics: {metrics}')\n",
" print(f'\\t Updates: {updates}')\n",
" print(f'\\t Grad: {grads}')\n",
" print(f'\\t Slowdist: {slowdist.mean(), slowdist.stddev()}')"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"from matplotlib import patches\n",
"a = np.array(means)\n",
"plt.scatter(a[:, 0], a[:, 1])\n",
"plt.scatter(a[0, 0], a[0, 1], color='r')\n",
"\n",
"if objective_constraint:\n",
" plt.scatter(target[0], target[1], color='#39FF14')\n",
"\n",
"if penalty_constraint:\n",
" plt.plot([-1, 1], [1, 1], color='r')\n",
" plt.plot([-1, 1], [-1, -1], color='r')\n",
" plt.plot([-1, -1], [-1, 1], color='r')\n",
" plt.plot([1, 1], [-1, 1], color='r')\n",
"\n",
"for i in range(0, len(means), 300):\n",
" curr_mean = means[i]\n",
" curr_std = stds[i]\n",
" ell = patches.Ellipse(curr_mean, curr_std[0], curr_std[1], color='r', fill=False)\n",
" plt.gca().add_patch(ell)\n",
"\n",
"plt.gca().set_aspect('equal', adjustable='box')\n",
"plt.title(f'{len(means)} iterations')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7f99580df970>,\n",
" <matplotlib.lines.Line2D at 0x7f993849cc70>]"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(stds)"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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5rbbbjNz5swxGzduND/88IPp0aOHad26tSkpKal8jvqyrq677joTFRVlZs6cWeXw0KKiospl/PH/bt8hkbfffrtZuXKlmThxYsAdPnqodbVu3TrzyCOPmPnz55uNGzeaL774wrRo0cIcf/zxlc9RX9aVMcbcdddd5scffzQbN240S5YsMXfddZexLMt89913xpja/3tVL8qHMcZMmDDBNG3a1LjdbtOnTx/z66+/2h2pxp133nkmKSnJuN1u07hxY3PeeeeZdevWVd5fXFxsrr/+ehMTE2PCwsLMGWecYbZv317lOTZt2mSGDRtmQkNDTVxcnLn11ltNeXl5Tf8ofjdjxgwD/OUyevRoY4zvcNv777/fJCQkmODgYDNw4ECzevXqKs+xa9cuc8EFF5gGDRqYyMhIc9lll5n8/PwqyyxevNgce+yxJjg42DRu3Ng8/vjjNfUj+s3B1lVRUZEZPHiwadSokXG5XKZZs2bmqquu+kvRry/ran/rCTBvvvlm5TL++n83Y8YM061bN+N2u02LFi2qvEYgONS62rJlizn++ONNbGysCQ4ONq1atTK33357lXk+jKkf68oYYy6//HLTrFkz43a7TaNGjczAgQMri4cxtf/3yjLGmKPffiIiIiJyeOr8mA8RERGpXVQ+REREpEapfIiIiEiNUvkQERGRGqXyISIiIjVK5UNERERqlMqHiIiI1CiVDxEREalRKh8iIiJSo1Q+REREpEapfIiIiEiNUvkQERGRGvX/aRrOH6Rifa0AAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(jax.nn.softplus(jnp.array(log_temperatures_10)), label='10')\n",
"plt.plot(jax.nn.softplus(jnp.array(log_temperatures_1)), label='1')\n",
"plt.plot(jax.nn.softplus(jnp.array(log_temperatures_0p1)), label='0.1')\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "awake",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.12"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment