diff --git a/examples/train.ipynb b/examples/train.ipynb index 05e4e42..67d7c2d 100644 --- a/examples/train.ipynb +++ b/examples/train.ipynb @@ -26,523 +26,2003 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor([3.3399136066436768,], device=\"cpu\", requires_grad=True)\n", - "tensor([inf,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n", - "tensor([nan,], device=\"cpu\", requires_grad=True)\n" + "loss_antes tensor([3.3399136066436768,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6715301871299744,],\n", + "[-0.13446585834026337,],\n", + "[0.5245601534843445,],\n", + "[-0.9957879185676575,],\n", + "[-0.10922560840845108,],\n", + "[0.4430800676345825,],\n", + "[-0.5424755811691284,],\n", + "[0.8905413746833801,],\n", + "[0.8028548955917358,],\n", + "[-0.9388200044631958,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[0.7763990759849548,],\n", + "[-0.07534197717905045,],\n", + "[-0.7497915625572205,],\n", + "[0.1710733026266098,],\n", + "[-0.05041608214378357,],\n", + "[-0.020194964483380318,],\n", + "[-0.14156067371368408,],\n", + "[-0.1368660032749176,],\n", + "[-0.027204060927033424,],\n", + "[-0.0021885898895561695,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.5338311195373535,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-3.655086040496826,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6707537770271301,],\n", + "[-0.13439051806926727,],\n", + "[0.5253099203109741,],\n", + "[-0.9959589838981628,],\n", + "[-0.1091751903295517,],\n", + "[0.4431002736091614,],\n", + "[-0.5423340201377869,],\n", + "[0.8906782269477844,],\n", + "[0.8028820753097534,],\n", + "[-0.9388177990913391,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.530176043510437,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([3.549180507659912,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6707537770271301,],\n", + "[-0.13439051806926727,],\n", + "[0.5253099203109741,],\n", + "[-0.9959589838981628,],\n", + "[-0.1091751903295517,],\n", + "[0.4431002736091614,],\n", + "[-0.5423340201377869,],\n", + "[0.8906782269477844,],\n", + "[0.8028820753097534,],\n", + "[-0.9388177990913391,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[0.8605965375900269,],\n", + "[-0.0792151615023613,],\n", + "[-0.7264857888221741,],\n", + "[0.1592811942100525,],\n", + "[-0.034485332667827606,],\n", + "[-0.014619439840316772,],\n", + "[-0.09272521734237671,],\n", + "[-0.16714394092559814,],\n", + "[-0.01336900144815445,],\n", + "[-0.0027314303442835808,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.530176043510437,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-3.7678537368774414,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.669893205165863,],\n", + "[-0.13431130349636078,],\n", + "[0.5260363817214966,],\n", + "[-0.9961182475090027,],\n", + "[-0.10914070159196854,],\n", + "[0.44311490654945374,],\n", + "[-0.5422412753105164,],\n", + "[0.8908453583717346,],\n", + "[0.8028954267501831,],\n", + "[-0.9388150572776794,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.5264081954956055,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([4.6171770095825195,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.669893205165863,],\n", + "[-0.13431130349636078,],\n", + "[0.5260363817214966,],\n", + "[-0.9961182475090027,],\n", + "[-0.10914070159196854,],\n", + "[0.44311490654945374,],\n", + "[-0.5422412753105164,],\n", + "[0.8908453583717346,],\n", + "[0.8028954267501831,],\n", + "[-0.9388150572776794,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[1.01288902759552,],\n", + "[-0.08897353708744049,],\n", + "[-0.7638412714004517,],\n", + "[0.16191577911376953,],\n", + "[0.039845600724220276,],\n", + "[0.006034668534994125,],\n", + "[0.047490328550338745,],\n", + "[-0.1645362675189972,],\n", + "[0.008131217211484909,],\n", + "[-0.002857489977031946,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.5264081954956055,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-4.297523498535156,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6688803434371948,],\n", + "[-0.13422232866287231,],\n", + "[0.5268002152442932,],\n", + "[-0.9962801337242126,],\n", + "[-0.10918054729700089,],\n", + "[0.4431088864803314,],\n", + "[-0.5422887802124023,],\n", + "[0.8910098671913147,],\n", + "[0.8028873205184937,],\n", + "[-0.9388121962547302,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.5221107006072998,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([5.7759575843811035,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6688803434371948,],\n", + "[-0.13422232866287231,],\n", + "[0.5268002152442932,],\n", + "[-0.9962801337242126,],\n", + "[-0.10918054729700089,],\n", + "[0.4431088864803314,],\n", + "[-0.5422887802124023,],\n", + "[0.8910098671913147,],\n", + "[0.8028873205184937,],\n", + "[-0.9388121962547302,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[1.119826316833496,],\n", + "[-0.09500840306282043,],\n", + "[-0.7736542820930481,],\n", + "[0.15942737460136414,],\n", + "[0.11072525382041931,],\n", + "[0.025451697409152985,],\n", + "[0.17995193600654602,],\n", + "[-0.17571325600147247,],\n", + "[0.022571314126253128,],\n", + "[-0.003071666695177555,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.5221107006072998,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-4.806644439697266,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6677604913711548,],\n", + "[-0.13412731885910034,],\n", + "[0.5275738835334778,],\n", + "[-0.9964395761489868,],\n", + "[-0.10929127037525177,],\n", + "[0.44308343529701233,],\n", + "[-0.5424687266349792,],\n", + "[0.8911855816841125,],\n", + "[0.8028647303581238,],\n", + "[-0.9388090968132019,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.5173040628433228,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([5.934185981750488,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6677604913711548,],\n", + "[-0.13412731885910034,],\n", + "[0.5275738835334778,],\n", + "[-0.9964395761489868,],\n", + "[-0.10929127037525177,],\n", + "[0.44308343529701233,],\n", + "[-0.5424687266349792,],\n", + "[0.8911855816841125,],\n", + "[0.8028647303581238,],\n", + "[-0.9388090968132019,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[1.074658751487732,],\n", + "[-0.08936237543821335,],\n", + "[-0.6985772252082825,],\n", + "[0.140721395611763,],\n", + "[0.11916199326515198,],\n", + "[0.02836146578192711,],\n", + "[0.20278266072273254,],\n", + "[-0.22442427277565002,],\n", + "[0.016736526042222977,],\n", + "[-0.0034379507414996624,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.5173040628433228,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-4.872036933898926,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6666858196258545,],\n", + "[-0.13403795659542084,],\n", + "[0.5282724499702454,],\n", + "[-0.9965803027153015,],\n", + "[-0.10941043496131897,],\n", + "[0.44305506348609924,],\n", + "[-0.5426715016365051,],\n", + "[0.8914099931716919,],\n", + "[0.8028479814529419,],\n", + "[-0.9388056397438049,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.5124320387840271,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([4.719274044036865,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6666858196258545,],\n", + "[-0.13403795659542084,],\n", + "[0.5282724499702454,],\n", + "[-0.9965803027153015,],\n", + "[-0.10941043496131897,],\n", + "[0.44305506348609924,],\n", + "[-0.5426715016365051,],\n", + "[0.8914099931716919,],\n", + "[0.8028479814529419,],\n", + "[-0.9388056397438049,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[0.8705567717552185,],\n", + "[-0.07186676561832428,],\n", + "[-0.5466199517250061,],\n", + "[0.10827980190515518,],\n", + "[0.04532705247402191,],\n", + "[0.010129459202289581,],\n", + "[0.07962468266487122,],\n", + "[-0.30150455236434937,],\n", + "[-0.008896466344594955,],\n", + "[-0.0038197385147213936,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.5124320387840271,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-4.344778060913086,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6658152341842651,],\n", + "[-0.1339660882949829,],\n", + "[0.5288190841674805,],\n", + "[-0.9966886043548584,],\n", + "[-0.10945576429367065,],\n", + "[0.4430449306964874,],\n", + "[-0.542751133441925,],\n", + "[0.8917114734649658,],\n", + "[0.8028568625450134,],\n", + "[-0.9388018250465393,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.5080872774124146,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([2.9647133350372314,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6658152341842651,],\n", + "[-0.1339660882949829,],\n", + "[0.5288190841674805,],\n", + "[-0.9966886043548584,],\n", + "[-0.10945576429367065,],\n", + "[0.4430449306964874,],\n", + "[-0.542751133441925,],\n", + "[0.8917114734649658,],\n", + "[0.8028568625450134,],\n", + "[-0.9388018250465393,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[0.6034455895423889,],\n", + "[-0.0498625822365284,],\n", + "[-0.3749368190765381,],\n", + "[0.07348791509866714,],\n", + "[-0.07949754595756531,],\n", + "[-0.020759649574756622,],\n", + "[-0.1351551115512848,],\n", + "[-0.3795509338378906,],\n", + "[-0.04138007014989853,],\n", + "[-0.004105208907276392,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.5080872774124146,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-3.443668842315674,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6652117967605591,],\n", + "[-0.1339162290096283,],\n", + "[0.5291939973831177,],\n", + "[-0.9967620968818665,],\n", + "[-0.10937626659870148,],\n", + "[0.44306570291519165,],\n", + "[-0.5426159501075745,],\n", + "[0.8920910358428955,],\n", + "[0.8028982281684875,],\n", + "[-0.9387977123260498,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.5046436190605164,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([1.7221571207046509,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6652117967605591,],\n", + "[-0.1339162290096283,],\n", + "[0.5291939973831177,],\n", + "[-0.9967620968818665,],\n", + "[-0.10937626659870148,],\n", + "[0.44306570291519165,],\n", + "[-0.5426159501075745,],\n", + "[0.8920910358428955,],\n", + "[0.8028982281684875,],\n", + "[-0.9387977123260498,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[0.38911673426628113,],\n", + "[-0.0323101170361042,],\n", + "[-0.24431711435317993,],\n", + "[0.047654714435338974,],\n", + "[-0.19218149781227112,],\n", + "[-0.048304274678230286,],\n", + "[-0.33135807514190674,],\n", + "[-0.4348369240760803,],\n", + "[-0.06675009429454803,],\n", + "[-0.0042629726231098175,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.5046436190605164,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-2.624619960784912,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6648226976394653,],\n", + "[-0.13388392329216003,],\n", + "[0.529438316822052,],\n", + "[-0.9968097805976868,],\n", + "[-0.10918408632278442,],\n", + "[0.4431140124797821,],\n", + "[-0.5422846078872681,],\n", + "[0.892525851726532,],\n", + "[0.802964985370636,],\n", + "[-0.938793420791626,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.5020189881324768,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([1.3282623291015625,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6648226976394653,],\n", + "[-0.13388392329216003,],\n", + "[0.529438316822052,],\n", + "[-0.9968097805976868,],\n", + "[-0.10918408632278442,],\n", + "[0.4431140124797821,],\n", + "[-0.5422846078872681,],\n", + "[0.892525851726532,],\n", + "[0.802964985370636,],\n", + "[-0.938793420791626,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[0.2811588644981384,],\n", + "[-0.02352893352508545,],\n", + "[-0.18157480657100677,],\n", + "[0.03541348874568939,],\n", + "[-0.23582345247268677,],\n", + "[-0.05850478261709213,],\n", + "[-0.41329389810562134,],\n", + "[-0.46008923649787903,],\n", + "[-0.07939890772104263,],\n", + "[-0.004317682236433029,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.5020189881324768,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-2.3050053119659424,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6645415425300598,],\n", + "[-0.13386039435863495,],\n", + "[0.5296198725700378,],\n", + "[-0.9968451857566833,],\n", + "[-0.10894826054573059,],\n", + "[0.44317251443862915,],\n", + "[-0.5418713092803955,],\n", + "[0.8929859399795532,],\n", + "[0.8030443787574768,],\n", + "[-0.9387891292572021,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.4997139871120453,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([1.7036319971084595,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6645415425300598,],\n", + "[-0.13386039435863495,],\n", + "[0.5296198725700378,],\n", + "[-0.9968451857566833,],\n", + "[-0.10894826054573059,],\n", + "[0.44317251443862915,],\n", + "[-0.5418713092803955,],\n", + "[0.8929859399795532,],\n", + "[0.8030443787574768,],\n", + "[-0.9387891292572021,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[0.2559458911418915,],\n", + "[-0.021709883585572243,],\n", + "[-0.17255055904388428,],\n", + "[0.033771101385354996,],\n", + "[-0.19383782148361206,],\n", + "[-0.04744270443916321,],\n", + "[-0.35895103216171265,],\n", + "[-0.46357548236846924,],\n", + "[-0.08267522603273392,],\n", + "[-0.00431686220690608,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.4997139871120453,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-2.6104650497436523,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6642856001853943,],\n", + "[-0.1338386833667755,],\n", + "[0.5297924280166626,],\n", + "[-0.996878981590271,],\n", + "[-0.10875442624092102,],\n", + "[0.44321995973587036,],\n", + "[-0.5415123701095581,],\n", + "[0.8934495449066162,],\n", + "[0.8031270503997803,],\n", + "[-0.9387848377227783,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.4971035122871399,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([2.7193281650543213,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6642856001853943,],\n", + "[-0.1338386833667755,],\n", + "[0.5297924280166626,],\n", + "[-0.996878981590271,],\n", + "[-0.10875442624092102,],\n", + "[0.44321995973587036,],\n", + "[-0.5415123701095581,],\n", + "[0.8934495449066162,],\n", + "[0.8031270503997803,],\n", + "[-0.9387848377227783,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[0.2549161911010742,],\n", + "[-0.022135019302368164,],\n", + "[-0.1816510409116745,],\n", + "[0.03576912730932236,],\n", + "[-0.10002899914979935,],\n", + "[-0.023694587871432304,],\n", + "[-0.230293869972229,],\n", + "[-0.45979392528533936,],\n", + "[-0.08331713825464249,],\n", + "[-0.004302922170609236,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.4971035122871399,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-3.298077344894409,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6640306711196899,],\n", + "[-0.13381655514240265,],\n", + "[0.529974102973938,],\n", + "[-0.9969147443771362,],\n", + "[-0.10865439474582672,],\n", + "[0.4432436525821686,],\n", + "[-0.541282057762146,],\n", + "[0.8939093351364136,],\n", + "[0.8032103776931763,],\n", + "[-0.9387805461883545,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.4938054382801056,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([3.807875871658325,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6640306711196899,],\n", + "[-0.13381655514240265,],\n", + "[0.529974102973938,],\n", + "[-0.9969147443771362,],\n", + "[-0.10865439474582672,],\n", + "[0.4432436525821686,],\n", + "[-0.541282057762146,],\n", + "[0.8939093351364136,],\n", + "[0.8032103776931763,],\n", + "[-0.9387805461883545,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[0.23403728008270264,],\n", + "[-0.021054290235042572,],\n", + "[-0.1780746877193451,],\n", + "[0.03534826263785362,],\n", + "[-0.018274232745170593,],\n", + "[-0.0032432936131954193,],\n", + "[-0.12982642650604248,],\n", + "[-0.45986711978912354,],\n", + "[-0.08593392372131348,],\n", + "[-0.004297991748899221,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.4938054382801056,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-3.9027557373046875,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6637966632843018,],\n", + "[-0.13379549980163574,],\n", + "[0.5301522016525269,],\n", + "[-0.996950089931488,],\n", + "[-0.10863611847162247,],\n", + "[0.44324690103530884,],\n", + "[-0.5411522388458252,],\n", + "[0.8943691849708557,],\n", + "[0.8032963275909424,],\n", + "[-0.9387762546539307,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.48990267515182495,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([4.036541938781738,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6637966632843018,],\n", + "[-0.13379549980163574,],\n", + "[0.5301522016525269,],\n", + "[-0.996950089931488,],\n", + "[-0.10863611847162247,],\n", + "[0.44324690103530884,],\n", + "[-0.5411522388458252,],\n", + "[0.8943691849708557,],\n", + "[0.8032963275909424,],\n", + "[-0.9387762546539307,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[0.18463999032974243,],\n", + "[-0.017372921109199524,],\n", + "[-0.1511504054069519,],\n", + "[0.030296552926301956,],\n", + "[-0.0036210864782333374,],\n", + "[0.0004928670823574066,],\n", + "[-0.1348465234041214,],\n", + "[-0.46710795164108276,],\n", + "[-0.09121057391166687,],\n", + "[-0.004304955247789621,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.48990267515182495,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-4.0182294845581055,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6636120080947876,],\n", + "[-0.13377812504768372,],\n", + "[0.5303033590316772,],\n", + "[-0.9969803690910339,],\n", + "[-0.10863249748945236,],\n", + "[0.44324639439582825,],\n", + "[-0.5410174131393433,],\n", + "[0.8948363065719604,],\n", + "[0.8033875226974487,],\n", + "[-0.9387719631195068,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.4858844578266144,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([3.136807918548584,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6636120080947876,],\n", + "[-0.13377812504768372,],\n", + "[0.5303033590316772,],\n", + "[-0.9969803690910339,],\n", + "[-0.10863249748945236,],\n", + "[0.44324639439582825,],\n", + "[-0.5410174131393433,],\n", + "[0.8948363065719604,],\n", + "[0.8033875226974487,],\n", + "[-0.9387719631195068,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[0.12360509485006332,],\n", + "[-0.012205632403492928,],\n", + "[-0.10940354317426682,],\n", + "[0.022177211940288544,],\n", + "[-0.06886429339647293,],\n", + "[-0.015093699097633362,],\n", + "[-0.25298362970352173,],\n", + "[-0.47847220301628113,],\n", + "[-0.09734726697206497,],\n", + "[-0.004317260347306728,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.4858844578266144,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-3.5422072410583496,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6634883880615234,],\n", + "[-0.13376592099666595,],\n", + "[0.5304127335548401,],\n", + "[-0.9970025420188904,],\n", + "[-0.108563631772995,],\n", + "[0.4432614743709564,],\n", + "[-0.5407644510269165,],\n", + "[0.8953147530555725,],\n", + "[0.8034848570823669,],\n", + "[-0.938767671585083,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.4823422431945801,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([1.8728151321411133,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6634883880615234,],\n", + "[-0.13376592099666595,],\n", + "[0.5304127335548401,],\n", + "[-0.9970025420188904,],\n", + "[-0.108563631772995,],\n", + "[0.4432614743709564,],\n", + "[-0.5407644510269165,],\n", + "[0.8953147530555725,],\n", + "[0.8034848570823669,],\n", + "[-0.938767671585083,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[0.07208667695522308,],\n", + "[-0.007449393626302481,],\n", + "[-0.06917522847652435,],\n", + "[0.014202376827597618,],\n", + "[-0.1775367110967636,],\n", + "[-0.04076655954122543,],\n", + "[-0.42342108488082886,],\n", + "[-0.48892438411712646,],\n", + "[-0.1023271381855011,],\n", + "[-0.004327966365963221,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.4823422431945801,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-2.7370166778564453,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.66341632604599,],\n", + "[-0.13375847041606903,],\n", + "[0.5304819345474243,],\n", + "[-0.9970167279243469,],\n", + "[-0.1083860918879509,],\n", + "[0.4433022439479828,],\n", + "[-0.5403410196304321,],\n", + "[0.895803689956665,],\n", + "[0.8035871982574463,],\n", + "[-0.9387633204460144,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.47960522770881653,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([1.0701744556427002,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.66341632604599,],\n", + "[-0.13375847041606903,],\n", + "[0.5304819345474243,],\n", + "[-0.9970167279243469,],\n", + "[-0.1083860918879509,],\n", + "[0.4433022439479828,],\n", + "[-0.5403410196304321,],\n", + "[0.895803689956665,],\n", + "[0.8035871982574463,],\n", + "[-0.9387633204460144,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[0.04095809906721115,],\n", + "[-0.004402738530188799,],\n", + "[-0.04267047345638275,],\n", + "[0.008884895592927933,],\n", + "[-0.26698610186576843,],\n", + "[-0.061598122119903564,],\n", + "[-0.5584473609924316,],\n", + "[-0.4951053261756897,],\n", + "[-0.10524972528219223,],\n", + "[-0.00433389050886035,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.47960522770881653,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-2.0689847469329834,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6633753776550293,],\n", + "[-0.13375407457351685,],\n", + "[0.5305246114730835,],\n", + "[-0.9970256090164185,],\n", + "[-0.10811910778284073,],\n", + "[0.44336384534835815,],\n", + "[-0.5397825837135315,],\n", + "[0.8962987661361694,],\n", + "[0.8036924600601196,],\n", + "[-0.9387589693069458,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.47753623127937317,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([0.9255756139755249,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6633753776550293,],\n", + "[-0.13375407457351685,],\n", + "[0.5305246114730835,],\n", + "[-0.9970256090164185,],\n", + "[-0.10811910778284073,],\n", + "[0.44336384534835815,],\n", + "[-0.5397825837135315,],\n", + "[0.8962987661361694,],\n", + "[0.8036924600601196,],\n", + "[-0.9387589693069458,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[0.028540857136249542,],\n", + "[-0.0031756071839481592,],\n", + "[-0.03230834752321243,],\n", + "[0.006829733494669199,],\n", + "[-0.28655558824539185,],\n", + "[-0.06592711061239243,],\n", + "[-0.598193347454071,],\n", + "[-0.49654722213745117,],\n", + "[-0.10640368610620499,],\n", + "[-0.004335499834269285,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.47753623127937317,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-1.9241368770599365,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6633468270301819,],\n", + "[-0.13375090062618256,],\n", + "[0.5305569171905518,],\n", + "[-0.9970324635505676,],\n", + "[-0.10783255100250244,],\n", + "[0.44342976808547974,],\n", + "[-0.5391843914985657,],\n", + "[0.8967953324317932,],\n", + "[0.8037988543510437,],\n", + "[-0.9387546181678772,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.4756121039390564,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([1.4076058864593506,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6633468270301819,],\n", + "[-0.13375090062618256,],\n", + "[0.5305569171905518,],\n", + "[-0.9970324635505676,],\n", + "[-0.10783255100250244,],\n", + "[0.44342976808547974,],\n", + "[-0.5391843914985657,],\n", + "[0.8967953324317932,],\n", + "[0.8037988543510437,],\n", + "[-0.9387546181678772,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[0.026303380727767944,],\n", + "[-0.003027313854545355,],\n", + "[-0.032382525503635406,],\n", + "[0.006953757721930742,],\n", + "[-0.22800634801387787,],\n", + "[-0.05212089419364929,],\n", + "[-0.544280469417572,],\n", + "[-0.4948328137397766,],\n", + "[-0.10663937777280807,],\n", + "[-0.0043349056504666805,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.4756121039390564,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-2.3728513717651367,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6633205413818359,],\n", + "[-0.1337478756904602,],\n", + "[0.5305892825126648,],\n", + "[-0.9970394372940063,],\n", + "[-0.10760454833507538,],\n", + "[0.4434818923473358,],\n", + "[-0.5386400818824768,],\n", + "[0.8972901701927185,],\n", + "[0.8039054870605469,],\n", + "[-0.9387502670288086,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.4732392430305481,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([2.4435479640960693,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6633205413818359,],\n", + "[-0.1337478756904602,],\n", + "[0.5305892825126648,],\n", + "[-0.9970394372940063,],\n", + "[-0.10760454833507538,],\n", + "[0.4434818923473358,],\n", + "[-0.5386400818824768,],\n", + "[0.8972901701927185,],\n", + "[0.8039054870605469,],\n", + "[-0.9387502670288086,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[0.02584111876785755,],\n", + "[-0.0030884500592947006,],\n", + "[-0.03463677689433098,],\n", + "[0.007556402590125799,],\n", + "[-0.13057145476341248,],\n", + "[-0.02953137457370758,],\n", + "[-0.452243834733963,],\n", + "[-0.49202901124954224,],\n", + "[-0.10671739280223846,],\n", + "[-0.004334022756665945,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.4732392430305481,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-3.126370668411255,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6632946729660034,],\n", + "[-0.13374479115009308,],\n", + "[0.5306239128112793,],\n", + "[-0.9970470070838928,],\n", + "[-0.10747397691011429,],\n", + "[0.443511426448822,],\n", + "[-0.5381878614425659,],\n", + "[0.8977822065353394,],\n", + "[0.8040121793746948,],\n", + "[-0.93874591588974,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.4701128602027893,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([3.4438509941101074,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6632946729660034,],\n", + "[-0.13374479115009308,],\n", + "[0.5306239128112793,],\n", + "[-0.9970470070838928,],\n", + "[-0.10747397691011429,],\n", + "[0.443511426448822,],\n", + "[-0.5381878614425659,],\n", + "[0.8977822065353394,],\n", + "[0.8040121793746948,],\n", + "[-0.93874591588974,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[0.022833500057458878,],\n", + "[-0.0028506112284958363,],\n", + "[-0.03335754573345184,],\n", + "[0.007391867693513632,],\n", + "[-0.057143040001392365,],\n", + "[-0.012724379077553749,],\n", + "[-0.39252525568008423,],\n", + "[-0.4895278811454773,],\n", + "[-0.10699693858623505,],\n", + "[-0.0043337587267160416,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.4701128602027893,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-3.7115235328674316,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6632718443870544,],\n", + "[-0.13374194502830505,],\n", + "[0.5306572914123535,],\n", + "[-0.997054398059845,],\n", + "[-0.10741683095693588,],\n", + "[0.44352415204048157,],\n", + "[-0.53779536485672,],\n", + "[0.8982717394828796,],\n", + "[0.8041191697120667,],\n", + "[-0.9387415647506714,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.4664013385772705,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([3.5297656059265137,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6632718443870544,],\n", + "[-0.13374194502830505,],\n", + "[0.5306572914123535,],\n", + "[-0.997054398059845,],\n", + "[-0.10741683095693588,],\n", + "[0.44352415204048157,],\n", + "[-0.53779536485672,],\n", + "[0.8982717394828796,],\n", + "[0.8041191697120667,],\n", + "[-0.9387415647506714,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[0.017184482887387276,],\n", + "[-0.0022500779014080763,],\n", + "[-0.027381807565689087,],\n", + "[0.0061619337648153305,],\n", + "[-0.05533846467733383,],\n", + "[-0.012297499924898148,],\n", + "[-0.4088391959667206,],\n", + "[-0.4877457022666931,],\n", + "[-0.10747168958187103,],\n", + "[-0.004334122408181429,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.4664013385772705,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-3.7575340270996094,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6632546782493591,],\n", + "[-0.13373969495296478,],\n", + "[0.5306846499443054,],\n", + "[-0.9970605373382568,],\n", + "[-0.10736149549484253,],\n", + "[0.4435364603996277,],\n", + "[-0.5373865365982056,],\n", + "[0.8987594842910767,],\n", + "[0.8042266368865967,],\n", + "[-0.9387372136116028,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.4626438021659851,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([2.593369245529175,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6632546782493591,],\n", + "[-0.13373969495296478,],\n", + "[0.5306846499443054,],\n", + "[-0.9970605373382568,],\n", + "[-0.10736149549484253,],\n", + "[0.4435364603996277,],\n", + "[-0.5373865365982056,],\n", + "[0.8987594842910767,],\n", + "[0.8042266368865967,],\n", + "[-0.9387372136116028,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[0.010942069813609123,],\n", + "[-0.0015021947911009192,],\n", + "[-0.019018465653061867,],\n", + "[0.004346743691712618,],\n", + "[-0.1281527876853943,],\n", + "[-0.028471527621150017,],\n", + "[-0.4968017339706421,],\n", + "[-0.4864799976348877,],\n", + "[-0.10797170549631119,],\n", + "[-0.004334734287112951,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.4626438021659851,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-3.2207882404327393,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6632437109947205,],\n", + "[-0.1337381899356842,],\n", + "[0.5307036638259888,],\n", + "[-0.9970648884773254,],\n", + "[-0.10723334550857544,],\n", + "[0.44356492161750793,],\n", + "[-0.5368897318840027,],\n", + "[0.8992459774017334,],\n", + "[0.8043345808982849,],\n", + "[-0.9387328624725342,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.4594230055809021,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([1.4533612728118896,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6632437109947205,],\n", + "[-0.1337381899356842,],\n", + "[0.5307036638259888,],\n", + "[-0.9970648884773254,],\n", + "[-0.10723334550857544,],\n", + "[0.44356492161750793,],\n", + "[-0.5368897318840027,],\n", + "[0.8992459774017334,],\n", + "[0.8043345808982849,],\n", + "[-0.9387328624725342,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[0.006082791369408369,],\n", + "[-0.0008716879528947175,],\n", + "[-0.011527320370078087,],\n", + "[0.0026770427357405424,],\n", + "[-0.2334199994802475,],\n", + "[-0.05158990994095802,],\n", + "[-0.6104713082313538,],\n", + "[-0.4853925108909607,],\n", + "[-0.10834759473800659,],\n", + "[-0.0043352399952709675,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.4594230055809021,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-2.4111087322235107,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6632376313209534,],\n", + "[-0.13373732566833496,],\n", + "[0.5307151675224304,],\n", + "[-0.9970675706863403,],\n", + "[-0.10699992626905441,],\n", + "[0.44361650943756104,],\n", + "[-0.5362792611122131,],\n", + "[0.8997313976287842,],\n", + "[0.8044429421424866,],\n", + "[-0.9387285113334656,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.4570119082927704,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([0.8132335543632507,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6632376313209534,],\n", + "[-0.13373732566833496,],\n", + "[0.5307151675224304,],\n", + "[-0.9970675706863403,],\n", + "[-0.10699992626905441,],\n", + "[0.44361650943756104,],\n", + "[-0.5362792611122131,],\n", + "[0.8997313976287842,],\n", + "[0.8044429421424866,],\n", + "[-0.9387285113334656,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[0.003378207329660654,],\n", + "[-0.0005022759432904422,],\n", + "[-0.00697502912953496,],\n", + "[0.0016470388509333134,],\n", + "[-0.31112340092658997,],\n", + "[-0.06845957040786743,],\n", + "[-0.6921502351760864,],\n", + "[-0.4842437505722046,],\n", + "[-0.10855133831501007,],\n", + "[-0.004335499368607998,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.4570119082927704,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-1.8035893440246582,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6632342338562012,],\n", + "[-0.13373681902885437,],\n", + "[0.5307221412658691,],\n", + "[-0.997069239616394,],\n", + "[-0.10668880492448807,],\n", + "[0.44368496537208557,],\n", + "[-0.5355871319770813,],\n", + "[0.9002156257629395,],\n", + "[0.8045514822006226,],\n", + "[-0.938724160194397,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.45520833134651184,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([0.7657988667488098,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6632342338562012,],\n", + "[-0.13373681902885437,],\n", + "[0.5307221412658691,],\n", + "[-0.997069239616394,],\n", + "[-0.10668880492448807,],\n", + "[0.44368496537208557,],\n", + "[-0.5355871319770813,],\n", + "[0.9002156257629395,],\n", + "[0.8045514822006226,],\n", + "[-0.938724160194397,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[0.002433427842333913,],\n", + "[-0.00037373980740085244,],\n", + "[-0.0054710120894014835,],\n", + "[0.0013142635580152273,],\n", + "[-0.3197174668312073,],\n", + "[-0.07017246633768082,],\n", + "[-0.7081764936447144,],\n", + "[-0.4828653335571289,],\n", + "[-0.10862217843532562,],\n", + "[-0.004335553850978613,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.45520833134651184,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-1.7501987218856812,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6632317900657654,],\n", + "[-0.13373644649982452,],\n", + "[0.5307276248931885,],\n", + "[-0.9970705509185791,],\n", + "[-0.10636908560991287,],\n", + "[0.4437551498413086,],\n", + "[-0.5348789691925049,],\n", + "[0.9006984829902649,],\n", + "[0.8046600818634033,],\n", + "[-0.9387198090553284,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.45345813035964966,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([1.2838889360427856,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6632317900657654,],\n", + "[-0.13373644649982452,],\n", + "[0.5307276248931885,],\n", + "[-0.9970705509185791,],\n", + "[-0.10636908560991287,],\n", + "[0.4437551498413086,],\n", + "[-0.5348789691925049,],\n", + "[0.9006984829902649,],\n", + "[0.8046600818634033,],\n", + "[-0.9387198090553284,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[0.00233837659470737,],\n", + "[-0.00037080622860230505,],\n", + "[-0.0057242088951170444,],\n", + "[0.0013989957515150309,],\n", + "[-0.2602483332157135,],\n", + "[-0.05713380128145218,],\n", + "[-0.6667792797088623,],\n", + "[-0.4810810983181,],\n", + "[-0.1086316630244255,],\n", + "[-0.004335513338446617,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.45345813035964966,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-2.266176462173462,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6632294654846191,],\n", + "[-0.13373607397079468,],\n", + "[0.5307333469390869,],\n", + "[-0.9970719218254089,],\n", + "[-0.10610883682966232,],\n", + "[0.4438122808933258,],\n", + "[-0.5342121720314026,],\n", + "[0.9011795520782471,],\n", + "[0.8047687411308289,],\n", + "[-0.9387154579162598,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.4511919617652893,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([2.281325340270996,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6632294654846191,],\n", + "[-0.13373607397079468,],\n", + "[0.5307333469390869,],\n", + "[-0.9970719218254089,],\n", + "[-0.10610883682966232,],\n", + "[0.4438122808933258,],\n", + "[-0.5342121720314026,],\n", + "[0.9011795520782471,],\n", + "[0.8047687411308289,],\n", + "[-0.9387154579162598,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[0.002312807599082589,],\n", + "[-0.00037990478449501097,],\n", + "[-0.006166975945234299,],\n", + "[0.0015327550936490297,],\n", + "[-0.17550796270370483,],\n", + "[-0.03864316642284393,],\n", + "[-0.6074409484863281,],\n", + "[-0.4787381887435913,],\n", + "[-0.10863614827394485,],\n", + "[-0.004335468169301748,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.4511919617652893,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-3.0208113193511963,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6632271409034729,],\n", + "[-0.13373570144176483,],\n", + "[0.5307394862174988,],\n", + "[-0.9970734715461731,],\n", + "[-0.10593333095312119,],\n", + "[0.44385093450546265,],\n", + "[-0.5336047410964966,],\n", + "[0.901658296585083,],\n", + "[0.8048774003982544,],\n", + "[-0.9387111067771912,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.44817113876342773,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([3.129655122756958,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6632271409034729,],\n", + "[-0.13373570144176483,],\n", + "[0.5307394862174988,],\n", + "[-0.9970734715461731,],\n", + "[-0.10593333095312119,],\n", + "[0.44385093450546265,],\n", + "[-0.5336047410964966,],\n", + "[0.901658296585083,],\n", + "[0.8048774003982544,],\n", + "[-0.9387111067771912,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[0.002009616931900382,],\n", + "[-0.000343533989507705,],\n", + "[-0.00584056880325079,],\n", + "[0.001475243829190731,],\n", + "[-0.12349772453308105,],\n", + "[-0.027017254382371902,],\n", + "[-0.5739820003509521,],\n", + "[-0.4758336544036865,],\n", + "[-0.10865852981805801,],\n", + "[-0.004335459321737289,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.44817113876342773,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-3.5381662845611572,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6632251143455505,],\n", + "[-0.13373535871505737,],\n", + "[0.5307453274726868,],\n", + "[-0.9970749616622925,],\n", + "[-0.10580983012914658,],\n", + "[0.4438779652118683,],\n", + "[-0.5330307483673096,],\n", + "[0.902134120464325,],\n", + "[0.8049860596656799,],\n", + "[-0.9387067556381226,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.44463297724723816,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([3.037909984588623,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6632251143455505,],\n", + "[-0.13373535871505737,],\n", + "[0.5307453274726868,],\n", + "[-0.9970749616622925,],\n", + "[-0.10580983012914658,],\n", + "[0.4438779652118683,],\n", + "[-0.5330307483673096,],\n", + "[0.902134120464325,],\n", + "[0.8049860596656799,],\n", + "[-0.9387067556381226,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[0.0014686842914670706,],\n", + "[-0.0002620296145323664,],\n", + "[-0.004654414486140013,],\n", + "[0.001194190583191812,],\n", + "[-0.14022156596183777,],\n", + "[-0.029818542301654816,],\n", + "[-0.590398907661438,],\n", + "[-0.47261136770248413,],\n", + "[-0.10869503021240234,],\n", + "[-0.00433548167347908,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.44463297724723816,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-3.4859201908111572,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6632236242294312,],\n", + "[-0.13373509049415588,],\n", + "[0.5307499766349792,],\n", + "[-0.997076153755188,],\n", + "[-0.10566961020231247,],\n", + "[0.44390779733657837,],\n", + "[-0.5324403643608093,],\n", + "[0.902606725692749,],\n", + "[0.8050947785377502,],\n", + "[-0.938702404499054,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.4411470592021942,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([2.069284200668335,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6632236242294312,],\n", + "[-0.13373509049415588,],\n", + "[0.5307499766349792,],\n", + "[-0.997076153755188,],\n", + "[-0.10566961020231247,],\n", + "[0.44390779733657837,],\n", + "[-0.5324403643608093,],\n", + "[0.902606725692749,],\n", + "[0.8050947785377502,],\n", + "[-0.938702404499054,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[0.0008991045760922134,],\n", + "[-0.0001672774087637663,],\n", + "[-0.0031067486852407455,],\n", + "[0.0008097040699794888,],\n", + "[-0.21756145358085632,],\n", + "[-0.04547252506017685,],\n", + "[-0.6499848961830139,],\n", + "[-0.46950939297676086,],\n", + "[-0.10873179882764816,],\n", + "[-0.004335511475801468,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.4411470592021942,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-2.8770015239715576,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6632227301597595,],\n", + "[-0.13373492658138275,],\n", + "[0.5307530760765076,],\n", + "[-0.9970769882202148,],\n", + "[-0.1054520457983017,],\n", + "[0.443953275680542,],\n", + "[-0.5317903757095337,],\n", + "[0.9030762314796448,],\n", + "[0.8052034974098206,],\n", + "[-0.9386980533599854,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.43827006220817566,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([1.0626496076583862,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6632227301597595,],\n", + "[-0.13373492658138275,],\n", + "[0.5307530760765076,],\n", + "[-0.9970769882202148,],\n", + "[-0.1054520457983017,],\n", + "[0.443953275680542,],\n", + "[-0.5317903757095337,],\n", + "[0.9030762314796448,],\n", + "[0.8052034974098206,],\n", + "[-0.9386980533599854,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[0.0004779190931003541,],\n", + "[-9.233965101884678e-05,],\n", + "[-0.0017994967056438327,],\n", + "[0.0004766720230691135,],\n", + "[-0.3117518723011017,],\n", + "[-0.06493335962295532,],\n", + "[-0.7210543751716614,],\n", + "[-0.46694326400756836,],\n", + "[-0.10875803977251053,],\n", + "[-0.004335535690188408,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.43827006220817566,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-2.0616979598999023,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6632222533226013,],\n", + "[-0.1337348371744156,],\n", + "[0.5307548642158508,],\n", + "[-0.997077465057373,],\n", + "[-0.10514029115438461,],\n", + "[0.4440182149410248,],\n", + "[-0.5310693383216858,],\n", + "[0.9035431742668152,],\n", + "[0.8053122758865356,],\n", + "[-0.9386937022209167,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.4362083673477173,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([0.5739572048187256,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6632222533226013,],\n", + "[-0.1337348371744156,],\n", + "[0.5307548642158508,],\n", + "[-0.997077465057373,],\n", + "[-0.10514029115438461,],\n", + "[0.4440182149410248,],\n", + "[-0.5310693383216858,],\n", + "[0.9035431742668152,],\n", + "[0.8053122758865356,],\n", + "[-0.9386937022209167,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[0.000260532513493672,],\n", + "[-5.200725354370661e-05,],\n", + "[-0.001068109180778265,],\n", + "[0.0002877784427255392,],\n", + "[-0.37277156114578247,],\n", + "[-0.07756895571947098,],\n", + "[-0.767205536365509,],\n", + "[-0.46505141258239746,],\n", + "[-0.10877126455307007,],\n", + "[-0.004335546866059303,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.4362083673477173,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-1.5151994228363037,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6632220149040222,],\n", + "[-0.133734792470932,],\n", + "[0.5307559370994568,],\n", + "[-0.9970777630805969,],\n", + "[-0.10476751625537872,],\n", + "[0.44409579038619995,],\n", + "[-0.530302107334137,],\n", + "[0.9040082097053528,],\n", + "[0.8054210543632507,],\n", + "[-0.9386893510818481,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.4346931576728821,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([0.6002265810966492,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6632220149040222,],\n", + "[-0.133734792470932,],\n", + "[0.5307559370994568,],\n", + "[-0.9970777630805969,],\n", + "[-0.10476751625537872,],\n", + "[0.44409579038619995,],\n", + "[-0.530302107334137,],\n", + "[0.9040082097053528,],\n", + "[0.8054210543632507,],\n", + "[-0.9386893510818481,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[0.00019762390002142638,],\n", + "[-4.062050356878899e-05,],\n", + "[-0.000881690182723105,],\n", + "[0.00024174268764909357,],\n", + "[-0.3731463551521301,],\n", + "[-0.07734758406877518,],\n", + "[-0.7702389359474182,],\n", + "[-0.46358126401901245,],\n", + "[-0.10877510905265808,],\n", + "[-0.0043355487287044525,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.4346931576728821,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-1.5494858026504517,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6632218360900879,],\n", + "[-0.13373474776744843,],\n", + "[0.5307568311691284,],\n", + "[-0.997078001499176,],\n", + "[-0.10439436882734299,],\n", + "[0.444173127412796,],\n", + "[-0.5295318961143494,],\n", + "[0.9044718146324158,],\n", + "[0.8055298328399658,],\n", + "[-0.9386849999427795,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.433143675327301,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([1.1280887126922607,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6632218360900879,],\n", + "[-0.13373474776744843,],\n", + "[0.5307568311691284,],\n", + "[-0.997078001499176,],\n", + "[-0.10439436882734299,],\n", + "[0.444173127412796,],\n", + "[-0.5295318961143494,],\n", + "[0.9044718146324158,],\n", + "[0.8055298328399658,],\n", + "[-0.9386849999427795,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[0.00020095807849429548,],\n", + "[-4.25368853029795e-05,],\n", + "[-0.0009756854269653559,],\n", + "[0.0002722226199693978,],\n", + "[-0.32227733731269836,],\n", + "[-0.0660870224237442,],\n", + "[-0.7391701936721802,],\n", + "[-0.4620158076286316,],\n", + "[-0.10877511650323868,],\n", + "[-0.004335545469075441,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.433143675327301,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-2.12423038482666,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6632216572761536,],\n", + "[-0.13373470306396484,],\n", + "[0.5307577848434448,],\n", + "[-0.9970782995223999,],\n", + "[-0.10407209396362305,],\n", + "[0.44423922896385193,],\n", + "[-0.5287927389144897,],\n", + "[0.9049338102340698,],\n", + "[0.8056386113166809,],\n", + "[-0.9386806488037109,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.43101945519447327,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([2.0611908435821533,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6632216572761536,],\n", + "[-0.13373470306396484,],\n", + "[0.5307577848434448,],\n", + "[-0.9970782995223999,],\n", + "[-0.10407209396362305,],\n", + "[0.44423922896385193,],\n", + "[-0.5287927389144897,],\n", + "[0.9049338102340698,],\n", + "[0.8056386113166809,],\n", + "[-0.9386806488037109,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[0.0002014815981965512,],\n", + "[-4.4060874643037096e-05,],\n", + "[-0.0010651235934346914,],\n", + "[0.000302235217532143,],\n", + "[-0.2603999376296997,],\n", + "[-0.05211338773369789,],\n", + "[-0.7007260322570801,],\n", + "[-0.4598775804042816,],\n", + "[-0.10877527296543121,],\n", + "[-0.00433554220944643,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.43101945519447327,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-2.8713698387145996,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6632214784622192,],\n", + "[-0.13373465836048126,],\n", + "[0.5307588577270508,],\n", + "[-0.9970785975456238,],\n", + "[-0.10381169617176056,],\n", + "[0.444291353225708,],\n", + "[-0.5280920267105103,],\n", + "[0.905393660068512,],\n", + "[0.805747389793396,],\n", + "[-0.9386762976646423,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.428148090839386,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([2.7530932426452637,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6632214784622192,],\n", + "[-0.13373465836048126,],\n", + "[0.5307588577270508,],\n", + "[-0.9970785975456238,],\n", + "[-0.10381169617176056,],\n", + "[0.444291353225708,],\n", + "[-0.5280920267105103,],\n", + "[0.905393660068512,],\n", + "[0.805747389793396,],\n", + "[-0.9386762976646423,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[0.00017271195247303694,],\n", + "[-3.9180675230454654e-05,],\n", + "[-0.0009948447113856673,],\n", + "[0.00028688638121820986,],\n", + "[-0.23283472657203674,],\n", + "[-0.044941551983356476,],\n", + "[-0.6817824840545654,],\n", + "[-0.4570259153842926,],\n", + "[-0.10877696424722672,],\n", + "[-0.0043355440720915794,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.428148090839386,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-3.3184895515441895,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6632212996482849,],\n", + "[-0.13373461365699768,],\n", + "[0.530759871006012,],\n", + "[-0.9970788955688477,],\n", + "[-0.10357885807752609,],\n", + "[0.44433629512786865,],\n", + "[-0.5274102687835693,],\n", + "[0.9058507084846497,],\n", + "[0.8058561682701111,],\n", + "[-0.9386719465255737,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.4248296022415161,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([2.5207862854003906,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6632212996482849,],\n", + "[-0.13373461365699768,],\n", + "[0.530759871006012,],\n", + "[-0.9970788955688477,],\n", + "[-0.10357885807752609,],\n", + "[0.44433629512786865,],\n", + "[-0.5274102687835693,],\n", + "[0.9058507084846497,],\n", + "[0.8058561682701111,],\n", + "[-0.9386719465255737,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[0.00012257778143975884,],\n", + "[-2.8910602850373834e-05,],\n", + "[-0.0007696571992710233,],\n", + "[0.00022545919637195766,],\n", + "[-0.259912371635437,],\n", + "[-0.049322932958602905,],\n", + "[-0.695215106010437,],\n", + "[-0.4537573456764221,],\n", + "[-0.10877971351146698,],\n", + "[-0.0043355440720915794,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.4248296022415161,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-3.1753969192504883,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6632211804389954,],\n", + "[-0.1337345838546753,],\n", + "[0.530760645866394,],\n", + "[-0.9970791339874268,],\n", + "[-0.1033189445734024,],\n", + "[0.4443856179714203,],\n", + "[-0.5267150402069092,],\n", + "[0.9063044786453247,],\n", + "[0.8059649467468262,],\n", + "[-0.9386675953865051,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.42165419459342957,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([1.5749989748001099,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6632211804389954,],\n", + "[-0.1337345838546753,],\n", + "[0.530760645866394,],\n", + "[-0.9970791339874268,],\n", + "[-0.1033189445734024,],\n", + "[0.4443856179714203,],\n", + "[-0.5267150402069092,],\n", + "[0.9063044786453247,],\n", + "[0.8059649467468262,],\n", + "[-0.9386675953865051,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[7.186472066678107e-05,],\n", + "[-1.760224040481262e-05,],\n", + "[-0.0004918009508401155,],\n", + "[0.0001463637308916077,],\n", + "[-0.32627710700035095,],\n", + "[-0.0627223402261734,],\n", + "[-0.7342636585235596,],\n", + "[-0.45063966512680054,],\n", + "[-0.1087823361158371,],\n", + "[-0.004335545003414154,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.42165419459342957,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-2.509979248046875,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6632211208343506,],\n", + "[-0.1337345689535141,],\n", + "[0.5307611227035522,],\n", + "[-0.9970792531967163,],\n", + "[-0.10299266874790192,],\n", + "[0.4444483518600464,],\n", + "[-0.5259807705879211,],\n", + "[0.9067550897598267,],\n", + "[0.8060737252235413,],\n", + "[-0.9386632442474365,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.4191442131996155,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([0.7283971309661865,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6632211208343506,],\n", + "[-0.1337345689535141,],\n", + "[0.5307611227035522,],\n", + "[-0.9970792531967163,],\n", + "[-0.10299266874790192,],\n", + "[0.4444483518600464,],\n", + "[-0.5259807705879211,],\n", + "[0.9067550897598267,],\n", + "[0.8060737252235413,],\n", + "[-0.9386632442474365,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[3.624881719588302e-05,],\n", + "[-9.184748705592938e-06,],\n", + "[-0.0002701894845813513,],\n", + "[8.174658432835713e-05,],\n", + "[-0.39565861225128174,],\n", + "[-0.07754066586494446,],\n", + "[-0.7773778438568115,],\n", + "[-0.44817399978637695,],\n", + "[-0.10878413170576096,],\n", + "[-0.004335546400398016,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.4191442131996155,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-1.7069237232208252,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6632210612297058,],\n", + "[-0.1337345540523529,],\n", + "[0.5307614207267761,],\n", + "[-0.9970793128013611,],\n", + "[-0.10259701311588287,],\n", + "[0.44452589750289917,],\n", + "[-0.5252034068107605,],\n", + "[0.9072032570838928,],\n", + "[0.8061825037002563,],\n", + "[-0.9386588931083679,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.41743728518486023,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([0.38103076815605164,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6632210612297058,],\n", + "[-0.1337345540523529,],\n", + "[0.5307614207267761,],\n", + "[-0.9970793128013611,],\n", + "[-0.10259701311588287,],\n", + "[0.44452589750289917,],\n", + "[-0.5252034068107605,],\n", + "[0.9072032570838928,],\n", + "[0.8061825037002563,],\n", + "[-0.9386588931083679,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[1.9445760699454695e-05,],\n", + "[-5.074367436463945e-06,],\n", + "[-0.0001577447255840525,],\n", + "[4.855751831200905e-05,],\n", + "[-0.4345645308494568,],\n", + "[-0.08597981184720993,],\n", + "[-0.8020811676979065,],\n", + "[-0.4464889466762543,],\n", + "[-0.10878493636846542,],\n", + "[-0.004335548263043165,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.41743728518486023,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-1.2345538139343262,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6632210612297058,],\n", + "[-0.1337345540523529,],\n", + "[0.5307615995407104,],\n", + "[-0.9970793724060059,],\n", + "[-0.1021624505519867,],\n", + "[0.44461187720298767,],\n", + "[-0.5244013071060181,],\n", + "[0.9076497554779053,],\n", + "[0.8062912821769714,],\n", + "[-0.9386545419692993,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.41620272397994995,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([0.46308961510658264,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6632210612297058,],\n", + "[-0.1337345540523529,],\n", + "[0.5307615995407104,],\n", + "[-0.9970793724060059,],\n", + "[-0.1021624505519867,],\n", + "[0.44461187720298767,],\n", + "[-0.5244013071060181,],\n", + "[0.9076497554779053,],\n", + "[0.8062912821769714,],\n", + "[-0.9386545419692993,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[1.5900583093753085e-05,],\n", + "[-4.262175025360193e-06,],\n", + "[-0.00014031199680175632,],\n", + "[4.396402800921351e-05,],\n", + "[-0.4293730854988098,],\n", + "[-0.08445803821086884,],\n", + "[-0.7991432547569275,],\n", + "[-0.44525817036628723,],\n", + "[-0.10878511518239975,],\n", + "[-0.004335548263043165,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.41620272397994995,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-1.3610137701034546,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6632210612297058,],\n", + "[-0.1337345540523529,],\n", + "[0.53076171875,],\n", + "[-0.9970794320106506,],\n", + "[-0.10173308104276657,],\n", + "[0.4446963369846344,],\n", + "[-0.5236021876335144,],\n", + "[0.9080950021743774,],\n", + "[0.8064000606536865,],\n", + "[-0.9386501908302307,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.4148417115211487,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([0.9917470216751099,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6632210612297058,],\n", + "[-0.1337345540523529,],\n", + "[0.53076171875,],\n", + "[-0.9970794320106506,],\n", + "[-0.10173308104276657,],\n", + "[0.4446963369846344,],\n", + "[-0.5236021876335144,],\n", + "[0.9080950021743774,],\n", + "[0.8064000606536865,],\n", + "[-0.9386501908302307,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[1.725900983728934e-05,],\n", + "[-4.755161626235349e-06,],\n", + "[-0.0001656918175285682,],\n", + "[5.283833161229268e-05,],\n", + "[-0.39227035641670227,],\n", + "[-0.07540077716112137,],\n", + "[-0.7764900326728821,],\n", + "[-0.4438931941986084,],\n", + "[-0.10878507047891617,],\n", + "[-0.004335548263043165,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.4148417115211487,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-1.9917298555374146,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6632210612297058,],\n", + "[-0.1337345540523529,],\n", + "[0.5307618975639343,],\n", + "[-0.9970794916152954,],\n", + "[-0.10134080797433853,],\n", + "[0.44477173686027527,],\n", + "[-0.5228257179260254,],\n", + "[0.9085388779640198,],\n", + "[0.8065088391304016,],\n", + "[-0.9386458396911621,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.4128499925136566,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([1.8588377237319946,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6632210612297058,],\n", + "[-0.1337345540523529,],\n", + "[0.5307618975639343,],\n", + "[-0.9970794916152954,],\n", + "[-0.10134080797433853,],\n", + "[0.44477173686027527,],\n", + "[-0.5228257179260254,],\n", + "[0.9085388779640198,],\n", + "[0.8065088391304016,],\n", + "[-0.9386458396911621,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[1.7525486327940598e-05,],\n", + "[-4.979164714313811e-06,],\n", + "[-0.0001831587724154815,],\n", + "[5.9408426750451326e-05,],\n", + "[-0.3537100553512573,],\n", + "[-0.0655350610613823,],\n", + "[-0.7517706751823425,],\n", + "[-0.44189900159835815,],\n", + "[-0.10878506302833557,],\n", + "[-0.004335548263043165,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.4128499925136566,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-2.7267839908599854,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6632210612297058,],\n", + "[-0.1337345540523529,],\n", + "[0.5307620763778687,],\n", + "[-0.9970795512199402,],\n", + "[-0.10098709911108017,],\n", + "[0.4448372721672058,],\n", + "[-0.5220739245414734,],\n", + "[0.9089807868003845,],\n", + "[0.8066176176071167,],\n", + "[-0.9386414885520935,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.41012319922447205,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([2.4078986644744873,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6632210612297058,],\n", + "[-0.1337345540523529,],\n", + "[0.5307620763778687,],\n", + "[-0.9970795512199402,],\n", + "[-0.10098709911108017,],\n", + "[0.4448372721672058,],\n", + "[-0.5220739245414734,],\n", + "[0.9089807868003845,],\n", + "[0.8066176176071167,],\n", + "[-0.9386414885520935,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[1.4794508388149552e-05,],\n", + "[-4.3502986954990774e-06,],\n", + "[-0.0001684400049271062,],\n", + "[5.552908987738192e-05,],\n", + "[-0.34249699115753174,],\n", + "[-0.06158159673213959,],\n", + "[-0.741202175617218,],\n", + "[-0.4391755759716034,],\n", + "[-0.10878520458936691,],\n", + "[-0.004335548263043165,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.41012319922447205,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-3.1034812927246094,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6632210612297058,],\n", + "[-0.1337345540523529,],\n", + "[0.530762255191803,],\n", + "[-0.997079610824585,],\n", + "[-0.10064460337162018,],\n", + "[0.4448988437652588,],\n", + "[-0.5213327407836914,],\n", + "[0.9094199538230896,],\n", + "[0.8067263960838318,],\n", + "[-0.9386371374130249,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.407019704580307,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([2.069084405899048,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6632210612297058,],\n", + "[-0.1337345540523529,],\n", + "[0.530762255191803,],\n", + "[-0.997079610824585,],\n", + "[-0.10064460337162018,],\n", + "[0.4448988437652588,],\n", + "[-0.5213327407836914,],\n", + "[0.9094199538230896,],\n", + "[0.8067263960838318,],\n", + "[-0.9386371374130249,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[1.0171942449233029e-05,],\n", + "[-3.1009558369987644e-06,],\n", + "[-0.00012620999768842012,],\n", + "[4.227289537084289e-05,],\n", + "[-0.36690032482147217,],\n", + "[-0.06612859666347504,],\n", + "[-0.7512801885604858,],\n", + "[-0.4360799193382263,],\n", + "[-0.10878542065620422,],\n", + "[-0.004335548263043165,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.407019704580307,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-2.8768625259399414,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6632210612297058,],\n", + "[-0.1337345540523529,],\n", + "[0.5307623744010925,],\n", + "[-0.9970796704292297,],\n", + "[-0.10027769953012466,],\n", + "[0.4449649751186371,],\n", + "[-0.5205814838409424,],\n", + "[0.9098560214042664,],\n", + "[0.8068351745605469,],\n", + "[-0.9386327862739563,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.4041428565979004,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([1.1751409769058228,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6632210612297058,],\n", + "[-0.1337345540523529,],\n", + "[0.5307623744010925,],\n", + "[-0.9970796704292297,],\n", + "[-0.10027769953012466,],\n", + "[0.4449649751186371,],\n", + "[-0.5205814838409424,],\n", + "[0.9098560214042664,],\n", + "[0.8068351745605469,],\n", + "[-0.9386327862739563,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[5.6858157222450245e-06,],\n", + "[-1.794572881408385e-06,],\n", + "[-7.686503522563726e-05,],\n", + "[2.6163063012063503e-05,],\n", + "[-0.41251328587532043,],\n", + "[-0.07647360116243362,],\n", + "[-0.776080846786499,],\n", + "[-0.4332115948200226,],\n", + "[-0.10878559947013855,],\n", + "[-0.004335548263043165,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.4041428565979004,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-2.1680784225463867,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6632210612297058,],\n", + "[-0.1337345540523529,],\n", + "[0.5307624340057373,],\n", + "[-0.9970796704292297,],\n", + "[-0.09986518323421478,],\n", + "[0.4450414478778839,],\n", + "[-0.5198054313659668,],\n", + "[0.9102892279624939,],\n", + "[0.806943953037262,],\n", + "[-0.9386284351348877,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.40197476744651794,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([0.483631432056427,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6632210612297058,],\n", + "[-0.1337345540523529,],\n", + "[0.5307624340057373,],\n", + "[-0.9970796704292297,],\n", + "[-0.09986518323421478,],\n", + "[0.4450414478778839,],\n", + "[-0.5198054313659668,],\n", + "[0.9102892279624939,],\n", + "[0.806943953037262,],\n", + "[-0.9386284351348877,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[2.705442284423043e-06,],\n", + "[-8.808051461528521e-07,],\n", + "[-3.982111957157031e-05,],\n", + "[1.3783894246444106e-05,],\n", + "[-0.45520567893981934,],\n", + "[-0.0868092030286789,],\n", + "[-0.8013222813606262,],\n", + "[-0.43104979395866394,],\n", + "[-0.1087857112288475,],\n", + "[-0.004335548263043165,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.40197476744651794,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-1.3908722400665283,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6632210612297058,],\n", + "[-0.1337345540523529,],\n", + "[0.5307624936103821,],\n", + "[-0.9970796704292297,],\n", + "[-0.09940997511148453,],\n", + "[0.44512826204299927,],\n", + "[-0.5190041065216064,],\n", + "[0.9107202887535095,],\n", + "[0.807052731513977,],\n", + "[-0.9386240839958191,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.4005838930606842,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([0.25040537118911743,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6632210612297058,],\n", + "[-0.1337345540523529,],\n", + "[0.5307624936103821,],\n", + "[-0.9970796704292297,],\n", + "[-0.09940997511148453,],\n", + "[0.44512826204299927,],\n", + "[-0.5190041065216064,],\n", + "[0.9107202887535095,],\n", + "[0.807052731513977,],\n", + "[-0.9386240839958191,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[1.443897417630069e-06,],\n", + "[-4.830071702599525e-07,],\n", + "[-2.312150172656402e-05,],\n", + "[8.1453090388095e-06,],\n", + "[-0.47574329376220703,],\n", + "[-0.09185812622308731,],\n", + "[-0.8136283159255981,],\n", + "[-0.4296617805957794,],\n", + "[-0.10878578573465347,],\n", + "[-0.004335548263043165,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.4005838930606842,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-1.0008103847503662,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6632210612297058,],\n", + "[-0.1337345540523529,],\n", + "[0.5307624936103821,],\n", + "[-0.9970796704292297,],\n", + "[-0.09893423318862915,],\n", + "[0.44522011280059814,],\n", + "[-0.5181905031204224,],\n", + "[0.9111499786376953,],\n", + "[0.8071615099906921,],\n", + "[-0.9386197328567505,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.3995830714702606,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([0.3715560734272003,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6632210612297058,],\n", + "[-0.1337345540523529,],\n", + "[0.5307624936103821,],\n", + "[-0.9970796704292297,],\n", + "[-0.09893423318862915,],\n", + "[0.44522011280059814,],\n", + "[-0.5181905031204224,],\n", + "[0.9111499786376953,],\n", + "[0.8071615099906921,],\n", + "[-0.9386197328567505,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[1.304548277403228e-06,],\n", + "[-4.4751604377779586e-07,],\n", + "[-2.2718259060638957e-05,],\n", + "[8.14833038020879e-06,],\n", + "[-0.4686702489852905,],\n", + "[-0.08977428823709488,],\n", + "[-0.8087867498397827,],\n", + "[-0.4286609888076782,],\n", + "[-0.10878578573465347,],\n", + "[-0.004335548263043165,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.3995830714702606,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-1.219107985496521,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6632210612297058,],\n", + "[-0.1337345540523529,],\n", + "[0.5307624936103821,],\n", + "[-0.9970796704292297,],\n", + "[-0.09846556186676025,],\n", + "[0.4453098773956299,],\n", + "[-0.5173817276954651,],\n", + "[0.9115786552429199,],\n", + "[0.8072702884674072,],\n", + "[-0.9386153817176819,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.39836397767066956,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([0.9010469317436218,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6632210612297058,],\n", + "[-0.1337345540523529,],\n", + "[0.5307624936103821,],\n", + "[-0.9970796704292297,],\n", + "[-0.09846556186676025,],\n", + "[0.4453098773956299,],\n", + "[-0.5173817276954651,],\n", + "[0.9115786552429199,],\n", + "[0.8072702884674072,],\n", + "[-0.9386153817176819,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[1.5068005723151146e-06,],\n", + "[-5.306197863319539e-07,],\n", + "[-2.8542974177980796e-05,],\n", + "[1.0420772923680488e-05,],\n", + "[-0.44426774978637695,],\n", + "[-0.08295752108097076,],\n", + "[-0.792965829372406,],\n", + "[-0.42744114995002747,],\n", + "[-0.10878578573465347,],\n", + "[-0.004335548263043165,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.39836397767066956,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-1.8984699249267578,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6632210612297058,],\n", + "[-0.1337345540523529,],\n", + "[0.5307624936103821,],\n", + "[-0.9970796704292297,],\n", + "[-0.09802129119634628,],\n", + "[0.4453928470611572,],\n", + "[-0.5165887475013733,],\n", + "[0.9120060801506042,],\n", + "[0.8073790669441223,],\n", + "[-0.9386110305786133,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.3964655101299286,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "loss_antes tensor([1.7061519622802734,], device=\"cpu\", requires_grad=True)\n", + "f1 antes tensor([[0.6632210612297058,],\n", + "[-0.1337345540523529,],\n", + "[0.5307624936103821,],\n", + "[-0.9970796704292297,],\n", + "[-0.09802129119634628,],\n", + "[0.4453928470611572,],\n", + "[-0.5165887475013733,],\n", + "[0.9120060801506042,],\n", + "[0.8073790669441223,],\n", + "[-0.9386110305786133,]], device=\"cpu\", requires_grad=True)\n", + "f1 grad_antes tensor([[1.5378873285953887e-06,],\n", + "[-5.577430783887394e-07,],\n", + "[-3.1709354516351596e-05,],\n", + "[1.1776156497944612e-05,],\n", + "[-0.4221835136413574,],\n", + "[-0.07640326768159866,],\n", + "[-0.7774246335029602,],\n", + "[-0.4255422353744507,],\n", + "[-0.10878578573465347,],\n", + "[-0.004335548263043165,]], device=\"cpu\", requires_grad=True)\n", + "f2 antes tensor([[-0.3964655101299286,]], device=\"cpu\", requires_grad=True)\n", + "f2 grad_antes tensor([[-2.6123950481414795,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "f1 depois tensor([[0.6632210612297058,],\n", + "[-0.1337345540523529,],\n", + "[0.5307625532150269,],\n", + "[-0.9970796704292297,],\n", + "[-0.0975991040468216,],\n", + "[0.4454692602157593,],\n", + "[-0.5158113241195679,],\n", + "[0.9124315977096558,],\n", + "[0.8074878454208374,],\n", + "[-0.9386066794395447,]], device=\"cpu\", requires_grad=True)\n", + "f2 depois tensor([[-0.3938531279563904,]], device=\"cpu\", requires_grad=True)\n", + "\n", + "\n", + "\n", + "Epoch [1/1], Loss: 1.7062\n" ] } ], @@ -570,7 +2050,7 @@ " return out\n", "\n", "device = \"cpu\"\n", - "epochs = 10\n", + "epochs = 1\n", "\n", "model = MyModel().to(device)\n", "criterion = nn.MSELoss()\n", @@ -587,11 +2067,11 @@ "for x in x_values:\n", " y_true.append(math.pow(math.sin(x), 2))\n", "\n", - "batch_size = 2\n", + "batch_size = 1000\n", "\n", "\n", "for epoch in range(epochs):\n", - " for x, target in zip(x_values, y_true):\n", + " for i, (x, target) in enumerate(zip(x_values, y_true)):\n", " x = norch.Tensor([[x] for _ in range(batch_size)]).T\n", " target = norch.Tensor([[target] for _ in range(batch_size)]).T\n", "\n", @@ -604,7 +2084,19 @@ " \n", " optimizer.zero_grad()\n", " loss.backward()\n", + " print('loss_antes', loss)\n", + "\n", + " print('f1 antes', model.fc1.bias)\n", + " print('f1 grad_antes', model.fc1.bias.grad)\n", + " print('f2 antes', model.fc2.bias)\n", + " print('f2 grad_antes', model.fc2.bias.grad)\n", + "\n", " optimizer.step()\n", + " print('\\n')\n", + "\n", + " print('f1 depois', model.fc1.bias)\n", + " print('f2 depois', model.fc2.bias)\n", + " print('\\n\\n')\n", "\n", " print(f'Epoch [{epoch + 1}/{epochs}], Loss: {loss[0]:.4f}')\n", " loss_list.append(loss[0])" @@ -612,16 +2104,16 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan]" + "[1.7061519622802734]" ] }, - "execution_count": 15, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -632,28 +2124,46 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "MyModel(\n", - " (fc1): Linear(input_dim=1, output_dim=10, bias=True)\n", - " (sigmoid): Sigmoid()\n", - " (fc2): Linear(input_dim=10, output_dim=1, bias=True)\n", - ")" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" + "ename": "NameError", + "evalue": "name 'model' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[2], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mmodel\u001b[49m\n", + "\u001b[0;31mNameError\u001b[0m: name 'model' is not defined" + ] } ], "source": [ "model" ] }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor([[-1.4443700313568115,]], device=\"cpu\", requires_grad=True)\n", + "0.1516466453264173\n" + ] + } + ], + "source": [ + "x = 0.4\n", + "input = norch.Tensor([[x]]).T\n", + "print(model(input))\n", + "print(math.pow(math.sin(x), 2))" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -663,12 +2173,12 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 5, "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA2sAAAHWCAYAAADpfhESAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA3S0lEQVR4nO3deVxV9b7/8fdGZIPKoKgMhqJo4jymonXsBic0K1Eq5VricI6nHNKsTmpOaWXWtcEszU5pFg5paeZ1CKlskFJxOGpK2qAkAZkCiokcWL8/+rlvO1AGsf0lXs/HYz+Ktdfa+7NWVLxcey1slmVZAgAAAAAYxc3VAwAAAAAAiiPWAAAAAMBAxBoAAAAAGIhYAwAAAAADEWsAAAAAYCBiDQAAAAAMRKwBAAAAgIGINQAAAAAwELEGAAAAAAYi1gAAFTZs2DCFhoZWaNuZM2fKZrNV7kB/MqGhobr11ltdPYZLff/997LZbPqf//kfV48CAH84Yg0A/oRsNluZHh9//LGrR3WJYcOGqU6dOq4ewwgXY+hSj6eeesrVIwJAteXu6gEAAJXvzTffdPp62bJlSkxMLLa8VatWV/Q+r776qoqKiiq07dSpUzVp0qQren9Unri4ON1yyy3Flnfq1MkF0wAAJGINAP6U7r77bqevv/jiCyUmJhZb/nvnzp1TrVq1yvw+NWvWrNB8kuTu7i53d/43ZIrOnTuX+v0BAPhj8TFIAKimbrzxRrVt21YpKSn6y1/+olq1amnKlCmSpPfee0/9+vVTcHCw7Ha7wsLCNHv2bBUWFjq9xu+vWfvt9UWLFy9WWFiY7Ha7rrvuOu3cudNp25KuWbPZbBo7dqzWrVuntm3bym63q02bNtq8eXOx+T/++GN17dpVnp6eCgsL0yuvvFLp18GtXr1aXbp0kZeXl+rXr6+7775bJ06ccFonIyNDw4cP1zXXXCO73a6goCD1799f33//vWOdXbt2KTo6WvXr15eXl5eaNm2qESNGlHmODz74QB07dpSnp6dat26td9991/Hct99+K5vNpueee67Ydtu3b5fNZtOKFSvKv/MluHgN3eXm+e1cd955p+rVq6datWqpR48e+t///d9i650/f14zZ87UtddeK09PTwUFBWngwIH65ptviq1b2vcUAPzZ8EeaAFCN/fzzz+rbt68GDx6su+++WwEBAZKkpUuXqk6dOpo4caLq1KmjDz/8UNOnT1dubq6eeeaZUl93+fLlOnPmjP7xj3/IZrPp6aef1sCBA/Xtt9+Wejbus88+07vvvqvRo0fL29tb8+fPV2xsrI4fPy5/f39J0p49e9SnTx8FBQXpscceU2FhoWbNmqUGDRpc+UH5/5YuXarhw4fruuuu05w5c5SZmakXXnhBn3/+ufbs2SM/Pz9JUmxsrA4ePKhx48YpNDRUWVlZSkxM1PHjxx1f33zzzWrQoIEmTZokPz8/ff/99yUGTkmOHDmiQYMG6d5771V8fLyWLFmiO++8U5s3b9Zf//pXNWvWTL169VJCQoIeeOABp20TEhLk7e2t/v37l/o+586d08mTJ4st9/PzczoDWto8kpSZmamePXvq3Llzuv/+++Xv76833nhDt99+u9asWaMBAwZIkgoLC3XrrbcqKSlJgwcP1vjx43XmzBklJibqwIEDCgsLc7zvlXxPAUCVZQEA/vTGjBlj/f4/+b1797YkWYsWLSq2/rlz54ot+8c//mHVqlXLOn/+vGNZfHy81aRJE8fX3333nSXJ8vf3t06dOuVY/t5771mSrPfff9+xbMaMGcVmkmR5eHhYR48edSzbt2+fJcl68cUXHctuu+02q1atWtaJEyccy44cOWK5u7sXe82SxMfHW7Vr177k8xcuXLAaNmxotW3b1vrll18cyzds2GBJsqZPn25ZlmWdPn3akmQ988wzl3yttWvXWpKsnTt3ljrX7zVp0sSSZL3zzjuOZTk5OVZQUJDVqVMnx7JXXnnFkmQdOnTIaR/q169vxcfHX/Y9Lv4zu9QjOTm53PNMmDDBkmR9+umnjmVnzpyxmjZtaoWGhlqFhYWWZVnW66+/bkmynn322WJzFRUVOc1Xlu8pAPiz4WOQAFCN2e12DR8+vNhyLy8vx9+fOXNGJ0+e1A033KBz587p8OHDpb7uoEGDVLduXcfXN9xwg6RfPxpXmqioKKczKu3bt5ePj49j28LCQm3dulUxMTEKDg52rNe8eXP17du31Ncvi127dikrK0ujR4+Wp6enY3m/fv0UHh7u+Difl5eXPDw89PHHH+v06dMlvtbFM3AbNmxQQUFBuWcJDg52nImSJB8fHw0dOlR79uxRRkaGJOmuu+6Sp6enEhISHOtt2bJFJ0+eLPN1aKNGjVJiYmKxR+vWrcs9z8aNG9WtWzddf/31jvXq1KmjUaNG6fvvv9dXX30lSXrnnXdUv359jRs3rtg8v/8465V8TwFAVUWsAUA11qhRI3l4eBRbfvDgQQ0YMEC+vr7y8fFRgwYNHD/05+TklPq6jRs3dvr64g/Zlwqay217cfuL22ZlZemXX35R8+bNi61X0rKKOHbsmCSpZcuWxZ4LDw93PG+32zV37lxt2rRJAQEB+stf/qKnn37aES2S1Lt3b8XGxuqxxx5T/fr11b9/fy1ZskT5+fllmqV58+bFwuXaa6+VJMd1cX5+frrtttu0fPlyxzoJCQlq1KiRbrrppjK9T4sWLRQVFVXs4ePjU+55jh07VuKxu3j30YvH75tvvlHLli3LdKOZK/meAoCqilgDgGrst2fQLsrOzlbv3r21b98+zZo1S++//74SExM1d+5cSSrTrfpr1KhR4nLLsq7qtq4wYcIEff3115ozZ448PT01bdo0tWrVSnv27JH06xmiNWvWKDk5WWPHjtWJEyc0YsQIdenSRWfPnq20OYYOHapvv/1W27dv15kzZ7R+/XrFxcXJze3P8b/6qvZ9AQCV4c/xX3AAQKX5+OOP9fPPP2vp0qUaP368br31VkVFRTl9BM2VGjZsKE9PTx09erTYcyUtq4gmTZpIklJTU4s9l5qa6nj+orCwMD344IP64IMPdODAAV24cEHz5s1zWqdHjx564okntGvXLiUkJOjgwYNauXJlqbMcPXq0WJB8/fXXkuR0J84+ffqoQYMGSkhI0Nq1a3Xu3Dndc889Zdrf8ijLPE2aNCnx2F38CO3F4xcWFqbU1NQKfTwUAKoDYg0A4OTiGYzf/kB+4cIFvfzyy64ayUmNGjUUFRWldevWKT093bH86NGj2rRpU6W8R9euXdWwYUMtWrTI6eOKmzZt0qFDh9SvXz9Jv95B8fz5807bhoWFydvb27Hd6dOni8VNx44dJalMH4VMT0/X2rVrHV/n5uZq2bJl6tixowIDAx3L3d3dFRcXp7fffltLly5Vu3bt1L59+/LteBmUZZ5bbrlFO3bsUHJysmO9vLw8LV68WKGhoY7r4GJjY3Xy5EktWLCg2PtwxgwAuHU/AOB3evbsqbp16yo+Pl7333+/bDab3nzzTaN+eJ45c6Y++OAD9erVS/fdd58KCwu1YMECtW3bVnv37i3TaxQUFOjxxx8vtrxevXoaPXq05s6dq+HDh6t3796Ki4tz3Lo/NDTUcYv8r7/+WpGRkbrrrrvUunVrubu7a+3atcrMzNTgwYMlSW+88YZefvllDRgwQGFhYTpz5oxeffVV+fj46JZbbil1zmuvvVYjR47Uzp07FRAQoNdff12ZmZlasmRJsXWHDh2q+fPn66OPPnJ8bLWsdu/erbfeeqvY8rCwMEVERJRrnkmTJmnFihXq27ev7r//ftWrV09vvPGGvvvuO73zzjuOj2YOHTpUy5Yt08SJE7Vjxw7dcMMNysvL09atWzV69Ogy/coBAPgzI9YAAE78/f21YcMGPfjgg5o6darq1q2ru+++W5GRkYqOjnb1eJKkLl26aNOmTXrooYc0bdo0hYSEaNasWTp06FCZ7lYp/Xq2cNq0acWWh4WFafTo0Ro2bJhq1aqlp556So888ohq166tAQMGaO7cuY47PIaEhCguLk5JSUl688035e7urvDwcL399tuKjY2V9OsNRnbs2KGVK1cqMzNTvr6+6tatmxISEtS0adNS52zRooVefPFFPfzww0pNTVXTpk21atWqEv9ZdOnSRW3atNGhQ4c0ZMiQMh2Hi1asWFHiL8+Oj493irWyzBMQEKDt27frkUce0Ysvvqjz58+rffv2ev/99x1nJaVfz5Ju3LhRTzzxhJYvX6533nlH/v7+uv7669WuXbtyzQ8Af0Y2y6Q/KgUA4ArExMTo4MGDOnLkiKtHcZlOnTqpXr16SkpKqvTXDg0NVdu2bbVhw4ZKf20AQHFcswYAqJJ++eUXp6+PHDmijRs36sYbb3TNQAbYtWuX9u7dq6FDh7p6FABAJeBjkACAKqlZs2YaNmyYmjVrpmPHjmnhwoXy8PDQP//5T1eP9oc7cOCAUlJSNG/ePAUFBWnQoEGuHgkAUAmINQBAldSnTx+tWLFCGRkZstvtioiI0JNPPqkWLVq4erQ/3Jo1azRr1iy1bNlSK1askKenp6tHAgBUAq5ZAwAAAAADcc0aAAAAABiIWAMAAAAAA3HNWiUoKipSenq6vL29ZbPZXD0OAAAAABexLEtnzpxRcHCw3Nyu7NwYsVYJ0tPTFRIS4uoxAAAAABgiLS1N11xzzRW9BrFWCby9vSX9+g/Ex8fHxdMAAAAAcJXc3FyFhIQ4GuFKEGuV4OJHH318fIg1AAAAAJVyeRQ3GAEAAAAAAxFrAAAAAGAgYg0AAAAADESsAQAAAICBiDUAAAAAMBCxBgAAAAAGItYAAAAAwEDEGgAAAAAYiFgDAAAAAAMRawAAAABgIGINAAAAAAxErAEAAACAgYg1AAAAADAQsQYAAAAABiLWAAAAAMBAxBoAAAAAGIhYAwAAAAADEWsAAAAAYCBiDQAAAAAMRKwBAAAAgIGINQAAAAAwELEGAAAAAAYi1gAAAADAQMQaAAAAABiIWAMAAAAAAxFrAAAAAGAgYg0AAAAADESsAQAAAICBiDUAAAAAMBCxBgAAAAAGItYAAAAAwEDEGgAAAAAYiFgDAAAAAAMRawAAAABgIGINAAAAAAxErAEAAACAgYg1AAAAADAQsQYAAAAABiLWAAAAAMBAxBoAAAAAGIhYAwAAAAADEWsAAAAAYCBiDQAAAAAMRKwBAAAAgIGINQAAAAAwUJWLtZdeekmhoaHy9PRU9+7dtWPHjsuuv3r1aoWHh8vT01Pt2rXTxo0bL7nuvffeK5vNpueff76SpwYAAACA8qlSsbZq1SpNnDhRM2bM0O7du9WhQwdFR0crKyurxPW3b9+uuLg4jRw5Unv27FFMTIxiYmJ04MCBYuuuXbtWX3zxhYKDg6/2bgAAAABAqapUrD377LP6+9//ruHDh6t169ZatGiRatWqpddff73E9V944QX16dNHDz/8sFq1aqXZs2erc+fOWrBggdN6J06c0Lhx45SQkKCaNWv+EbsCAAAAAJdVZWLtwoULSklJUVRUlGOZm5uboqKilJycXOI2ycnJTutLUnR0tNP6RUVFuueee/Twww+rTZs2ZZolPz9fubm5Tg8AAAAAqExVJtZOnjypwsJCBQQEOC0PCAhQRkZGidtkZGSUuv7cuXPl7u6u+++/v8yzzJkzR76+vo5HSEhIOfYEAAAAAEpXZWLtakhJSdELL7ygpUuXymazlXm7yZMnKycnx/FIS0u7ilMCAAAAqI6qTKzVr19fNWrUUGZmptPyzMxMBQYGlrhNYGDgZdf/9NNPlZWVpcaNG8vd3V3u7u46duyYHnzwQYWGhl5yFrvdLh8fH6cHAAAAAFSmKhNrHh4e6tKli5KSkhzLioqKlJSUpIiIiBK3iYiIcFpfkhITEx3r33PPPfr3v/+tvXv3Oh7BwcF6+OGHtWXLlqu3MwAAAABQCndXD1AeEydOVHx8vLp27apu3brp+eefV15enoYPHy5JGjp0qBo1aqQ5c+ZIksaPH6/evXtr3rx56tevn1auXKldu3Zp8eLFkiR/f3/5+/s7vUfNmjUVGBioli1b/rE7BwAAAAC/UaVibdCgQfrpp580ffp0ZWRkqGPHjtq8ebPjJiLHjx+Xm9v/nSzs2bOnli9frqlTp2rKlClq0aKF1q1bp7Zt27pqFwAAAACgTGyWZVmuHqKqy83Nla+vr3Jycrh+DQAAAKjGKrMNqsw1awAAAABQnRBrAAAAAGAgYg0AAAAADESsAQAAAICBiDUAAAAAMBCxBgAAAAAGItYAAAAAwEDEGgAAAAAYiFgDAAAAAAMRawAAAABgIGINAAAAAAxErAEAAACAgYg1AAAAADAQsQYAAAAABiLWAAAAAMBAxBoAAAAAGIhYAwAAAAADEWsAAAAAYCBiDQAAAAAMRKwBAAAAgIGINQAAAAAwELEGAAAAAAYi1gAAAADAQMQaAAAAABiIWAMAAAAAAxFrAAAAAGAgYg0AAAAADESsAQAAAICBiDUAAAAAMBCxBgAAAAAGItYAAAAAwEDEGgAAAAAYiFgDAAAAAAMRawAAAABgIGINAAAAAAxErAEAAACAgYg1AAAAADAQsQYAAAAABiLWAAAAAMBAxBoAAAAAGIhYAwAAAAADEWsAAAAAYCBiDQAAAAAMRKwBAAAAgIGINQAAAAAwELEGAAAAAAYi1gAAAADAQMQaAAAAABiIWAMAAAAAAxFrAAAAAGAgYg0AAAAADESsAQAAAICBiDUAAAAAMBCxBgAAAAAGItYAAAAAwEDEGgAAAAAYiFgDAAAAAAMRawAAAABgIGINAAAAAAxU5WLtpZdeUmhoqDw9PdW9e3ft2LHjsuuvXr1a4eHh8vT0VLt27bRx40bHcwUFBXrkkUfUrl071a5dW8HBwRo6dKjS09Ov9m4AAAAAwGVVqVhbtWqVJk6cqBkzZmj37t3q0KGDoqOjlZWVVeL627dvV1xcnEaOHKk9e/YoJiZGMTExOnDggCTp3Llz2r17t6ZNm6bdu3fr3XffVWpqqm6//fY/crcAAAAAoBibZVmWq4coq+7du+u6667TggULJElFRUUKCQnRuHHjNGnSpGLrDxo0SHl5edqwYYNjWY8ePdSxY0ctWrSoxPfYuXOnunXrpmPHjqlx48Zlmis3N1e+vr7KycmRj49PBfYMAAAAwJ9BZbZBlTmzduHCBaWkpCgqKsqxzM3NTVFRUUpOTi5xm+TkZKf1JSk6OvqS60tSTk6ObDab/Pz8LrlOfn6+cnNznR4AAAAAUJmqTKydPHlShYWFCggIcFoeEBCgjIyMErfJyMgo1/rnz5/XI488ori4uMtW8Jw5c+Tr6+t4hISElHNvAAAAAODyqkysXW0FBQW66667ZFmWFi5ceNl1J0+erJycHMcjLS3tD5oSAAAAQHXh7uoByqp+/fqqUaOGMjMznZZnZmYqMDCwxG0CAwPLtP7FUDt27Jg+/PDDUj9barfbZbfbK7AXAAAAAFA2VebMmoeHh7p06aKkpCTHsqKiIiUlJSkiIqLEbSIiIpzWl6TExESn9S+G2pEjR7R161b5+/tfnR0AAAAAgHKoMmfWJGnixImKj49X165d1a1bNz3//PPKy8vT8OHDJUlDhw5Vo0aNNGfOHEnS+PHj1bt3b82bN0/9+vXTypUrtWvXLi1evFjSr6F2xx13aPfu3dqwYYMKCwsd17PVq1dPHh4ertlRAAAAANVelYq1QYMG6aefftL06dOVkZGhjh07avPmzY6biBw/flxubv93srBnz55avny5pk6dqilTpqhFixZat26d2rZtK0k6ceKE1q9fL0nq2LGj03t99NFHuvHGG/+Q/QIAAACA36tSv2fNVPyeNQAAAABSNf09awAAAABQnRBrAAAAAGAgYg0AAAAADESsAQAAAICBiDUAAAAAMBCxBgAAAAAGItYAAAAAwEDEGgAAAAAYiFgDAAAAAAMRawAAAABgIGINAAAAAAxErAEAAACAgYg1AAAAADAQsQYAAAAABiLWAAAAAMBAxBoAAAAAGIhYAwAAAAADEWsAAAAAYCBiDQAAAAAMRKwBAAAAgIGINQAAAAAwELEGAAAAAAYi1gAAAADAQMQaAAAAABiIWAMAAAAAAxFrAAAAAGAgYg0AAAAADESsAQAAAICBiDUAAAAAMBCxBgAAAAAGItYAAAAAwEDEGgAAAAAYiFgDAAAAAAMRawAAAABgIGINAAAAAAxErAEAAACAgYg1AAAAADAQsQYAAAAABiLWAAAAAMBAxBoAAAAAGIhYAwAAAAADEWsAAAAAYCBiDQAAAAAMRKwBAAAAgIGINQAAAAAwELEGAAAAAAYi1gAAAADAQMQaAAAAABiIWAMAAAAAAxFrAAAAAGAgYg0AAAAADESsAQAAAICBKhRraWlp+uGHHxxf79ixQxMmTNDixYsrbTAAAAAAqM4qFGv//d//rY8++kiSlJGRob/+9a/asWOHHn30Uc2aNatSBwQAAACA6qhCsXbgwAF169ZNkvT222+rbdu22r59uxISErR06dLKnA8AAAAAqqUKxVpBQYHsdrskaevWrbr99tslSeHh4frxxx8rbzoAAAAAqKYqFGtt2rTRokWL9OmnnyoxMVF9+vSRJKWnp8vf379SBwQAAACA6qhCsTZ37ly98soruvHGGxUXF6cOHTpIktavX+/4eCQAAAAAoOJslmVZFdmwsLBQubm5qlu3rmPZ999/r1q1aqlhw4aVNmBVkJubK19fX+Xk5MjHx8fV4wAAAABwkcpsgwqdWfvll1+Un5/vCLVjx47p+eefV2pq6lUPtZdeekmhoaHy9PRU9+7dtWPHjsuuv3r1aoWHh8vT01Pt2rXTxo0bnZ63LEvTp09XUFCQvLy8FBUVpSNHjlzNXQAAAACAUlUo1vr3769ly5ZJkrKzs9W9e3fNmzdPMTExWrhwYaUO+FurVq3SxIkTNWPGDO3evVsdOnRQdHS0srKySlx/+/btiouL08iRI7Vnzx7FxMQoJiZGBw4ccKzz9NNPa/78+Vq0aJG+/PJL1a5dW9HR0Tp//vxV2w8AAAAAKE2FPgZZv359bdu2TW3atNG//vUvvfjii9qzZ4/eeecdTZ8+XYcOHboas6p79+667rrrtGDBAklSUVGRQkJCNG7cOE2aNKnY+oMGDVJeXp42bNjgWNajRw917NhRixYtkmVZCg4O1oMPPqiHHnpIkpSTk6OAgAAtXbpUgwcPLtNcfAwSAAAAgGTAxyDPnTsnb29vSdIHH3yggQMHys3NTT169NCxY8euaKBLuXDhglJSUhQVFeVY5ubmpqioKCUnJ5e4TXJystP6khQdHe1Y/7vvvlNGRobTOr6+vurevfslX1OS8vPzlZub6/QAAAAAgMpUoVhr3ry51q1bp7S0NG3ZskU333yzJCkrK+uqnVk6efKkCgsLFRAQ4LQ8ICBAGRkZJW6TkZFx2fUv/rU8rylJc+bMka+vr+MREhJS7v0BAAAAgMupUKxNnz5dDz30kEJDQ9WtWzdFRERI+vUsW6dOnSp1QBNNnjxZOTk5jkdaWpqrRwIAAADwJ+NekY3uuOMOXX/99frxxx8dv2NNkiIjIzVgwIBKG+636tevrxo1aigzM9NpeWZmpgIDA0vcJjAw8LLrX/xrZmamgoKCnNbp2LHjJWex2+2y2+0V2Q0AAAAAKJMKnVmTfg2dTp06KT09XT/88IMkqVu3bgoPD6+04X7Lw8NDXbp0UVJSkmNZUVGRkpKSHGf2fi8iIsJpfUlKTEx0rN+0aVMFBgY6rZObm6svv/zykq8JAAAAAH+ECsVaUVGRZs2aJV9fXzVp0kRNmjSRn5+fZs+eraKiosqe0WHixIl69dVX9cYbb+jQoUO67777lJeXp+HDh0uShg4dqsmTJzvWHz9+vDZv3qx58+bp8OHDmjlzpnbt2qWxY8dKkmw2myZMmKDHH39c69ev1/79+zV06FAFBwcrJibmqu0HAAAAAJSmQh+DfPTRR/Xaa6/pqaeeUq9evSRJn332mWbOnKnz58/riSeeqNQhLxo0aJB++uknTZ8+XRkZGerYsaM2b97suEHI8ePH5eb2f/3Zs2dPLV++XFOnTtWUKVPUokULrVu3Tm3btnWs889//lN5eXkaNWqUsrOzdf3112vz5s3y9PS8KvsAAAAAAGVRod+zFhwcrEWLFun22293Wv7ee+9p9OjROnHiRKUNWBXwe9YAAAAASAb8nrVTp06VeG1aeHi4Tp06dUUDAQAAAAAqGGsdOnTQggULii1fsGCB2rdvf8VDAQAAAEB1V6Fr1p5++mn169dPW7duddw1MTk5WWlpadq4cWOlDggAAAAA1VGFzqz17t1bX3/9tQYMGKDs7GxlZ2dr4MCBOnjwoN58883KnhEAAAAAqp0K3WDkUvbt26fOnTursLCwsl6ySuAGIwAAAAAkA24wAgAAAAC4uog1AAAAADAQsQYAAAAABirX3SAHDhx42eezs7OvZBYAAAAAwP9Xrljz9fUt9fmhQ4de0UAAAAAAgHLG2pIlS67WHAAAAACA3+CaNQAAAAAwELEGAAAAAAYi1gAAAADAQMQaAAAAABiIWAMAAAAAAxFrAAAAAGAgYg0AAAAADESsAQAAAICBiDUAAAAAMBCxBgAAAAAGItYAAAAAwEDEGgAAAAAYiFgDAAAAAAMRawAAAABgIGINAAAAAAxErAEAAACAgYg1AAAAADAQsQYAAAAABiLWAAAAAMBAxBoAAAAAGIhYAwAAAAADEWsAAAAAYCBiDQAAAAAMRKwBAAAAgIGINQAAAAAwELEGAAAAAAYi1gAAAADAQMQaAAAAABiIWAMAAAAAAxFrAAAAAGAgYg0AAAAADESsAQAAAICBiDUAAAAAMBCxBgAAAAAGItYAAAAAwEDEGgAAAAAYiFgDAAAAAAMRawAAAABgIGINAAAAAAxErAEAAACAgYg1AAAAADAQsQYAAAAABiLWAAAAAMBAxBoAAAAAGIhYAwAAAAADEWsAAAAAYCBiDQAAAAAMRKwBAAAAgIGqTKydOnVKQ4YMkY+Pj/z8/DRy5EidPXv2stucP39eY8aMkb+/v+rUqaPY2FhlZmY6nt+3b5/i4uIUEhIiLy8vtWrVSi+88MLV3hUAAAAAKFWVibUhQ4bo4MGDSkxM1IYNG/TJJ59o1KhRl93mgQce0Pvvv6/Vq1dr27ZtSk9P18CBAx3Pp6SkqGHDhnrrrbd08OBBPfroo5o8ebIWLFhwtXcHAAAAAC7LZlmW5eohSnPo0CG1bt1aO3fuVNeuXSVJmzdv1i233KIffvhBwcHBxbbJyclRgwYNtHz5ct1xxx2SpMOHD6tVq1ZKTk5Wjx49SnyvMWPG6NChQ/rwww/LPF9ubq58fX2Vk5MjHx+fCuwhAAAAgD+DymyDKnFmLTk5WX5+fo5Qk6SoqCi5ubnpyy+/LHGblJQUFRQUKCoqyrEsPDxcjRs3VnJy8iXfKycnR/Xq1bvsPPn5+crNzXV6AAAAAEBlqhKxlpGRoYYNGzotc3d3V7169ZSRkXHJbTw8POTn5+e0PCAg4JLbbN++XatWrSr145Vz5syRr6+v4xESElL2nQEAAACAMnBprE2aNEk2m+2yj8OHD/8hsxw4cED9+/fXjBkzdPPNN1923cmTJysnJ8fxSEtL+0NmBAAAAFB9uLvyzR988EENGzbssus0a9ZMgYGBysrKclr+n//8R6dOnVJgYGCJ2wUGBurChQvKzs52OruWmZlZbJuvvvpKkZGRGjVqlKZOnVrq3Ha7XXa7vdT1AAAAAKCiXBprDRo0UIMGDUpdLyIiQtnZ2UpJSVGXLl0kSR9++KGKiorUvXv3Erfp0qWLatasqaSkJMXGxkqSUlNTdfz4cUVERDjWO3jwoG666SbFx8friSeeqIS9AgAAAIArVyXuBilJffv2VWZmphYtWqSCggINHz5cXbt21fLlyyVJJ06cUGRkpJYtW6Zu3bpJku677z5t3LhRS5culY+Pj8aNGyfp12vTpF8/+njTTTcpOjpazzzzjOO9atSoUaaIvIi7QQIAAACQKrcNXHpmrTwSEhI0duxYRUZGys3NTbGxsZo/f77j+YKCAqWmpurcuXOOZc8995xj3fz8fEVHR+vll192PL9mzRr99NNPeuutt/TWW285ljdp0kTff//9H7JfAAAAAFCSKnNmzWScWQMAAAAgVcPfswYAAAAA1Q2xBgAAAAAGItYAAAAAwEDEGgAAAAAYiFgDAAAAAAMRawAAAABgIGINAAAAAAxErAEAAACAgYg1AAAAADAQsQYAAAAABiLWAAAAAMBAxBoAAAAAGIhYAwAAAAADEWsAAAAAYCBiDQAAAAAMRKwBAAAAgIGINQAAAAAwELEGAAAAAAYi1gAAAADAQMQaAAAAABiIWAMAAAAAAxFrAAAAAGAgYg0AAAAADESsAQAAAICBiDUAAAAAMBCxBgAAAAAGItYAAAAAwEDEGgAAAAAYiFgDAAAAAAMRawAAAABgIGINAAAAAAxErAEAAACAgYg1AAAAADAQsQYAAAAABiLWAAAAAMBAxBoAAAAAGIhYAwAAAAADEWsAAAAAYCBiDQAAAAAMRKwBAAAAgIGINQAAAAAwELEGAAAAAAYi1gAAAADAQMQaAAAAABiIWAMAAAAAAxFrAAAAAGAgYg0AAAAADESsAQAAAICBiDUAAAAAMBCxBgAAAAAGItYAAAAAwEDEGgAAAAAYiFgDAAAAAAMRawAAAABgIGINAAAAAAxErAEAAACAgYg1AAAAADAQsQYAAAAABiLWAAAAAMBAVSbWTp06pSFDhsjHx0d+fn4aOXKkzp49e9ltzp8/rzFjxsjf31916tRRbGysMjMzS1z3559/1jXXXCObzabs7OyrsAcAAAAAUHZVJtaGDBmigwcPKjExURs2bNAnn3yiUaNGXXabBx54QO+//75Wr16tbdu2KT09XQMHDixx3ZEjR6p9+/ZXY3QAAAAAKDebZVmWq4cozaFDh9S6dWvt3LlTXbt2lSRt3rxZt9xyi3744QcFBwcX2yYnJ0cNGjTQ8uXLdccdd0iSDh8+rFatWik5OVk9evRwrLtw4UKtWrVK06dPV2RkpE6fPi0/P78yz5ebmytfX1/l5OTIx8fnynYWAAAAQJVVmW1QJc6sJScny8/PzxFqkhQVFSU3Nzd9+eWXJW6TkpKigoICRUVFOZaFh4ercePGSk5Odiz76quvNGvWLC1btkxubmU7HPn5+crNzXV6AAAAAEBlqhKxlpGRoYYNGzotc3d3V7169ZSRkXHJbTw8PIqdIQsICHBsk5+fr7i4OD3zzDNq3LhxmeeZM2eOfH19HY+QkJDy7RAAAAAAlMKlsTZp0iTZbLbLPg4fPnzV3n/y5Mlq1aqV7r777nJvl5OT43ikpaVdpQkBAAAAVFfurnzzBx98UMOGDbvsOs2aNVNgYKCysrKclv/nP//RqVOnFBgYWOJ2gYGBunDhgrKzs53OrmVmZjq2+fDDD7V//36tWbNGknTx8r369evr0Ucf1WOPPVbia9vtdtnt9rLsIgAAAABUiEtjrUGDBmrQoEGp60VERCg7O1spKSnq0qWLpF9Dq6ioSN27dy9xmy5duqhmzZpKSkpSbGysJCk1NVXHjx9XRESEJOmdd97RL7/84thm586dGjFihD799FOFhYVd6e4BAAAAQIW5NNbKqlWrVurTp4/+/ve/a9GiRSooKNDYsWM1ePBgx50gT5w4ocjISC1btkzdunWTr6+vRo4cqYkTJ6pevXry8fHRuHHjFBER4bgT5O+D7OTJk473K8/dIAEAAACgslWJWJOkhIQEjR07VpGRkXJzc1NsbKzmz5/veL6goECpqak6d+6cY9lzzz3nWDc/P1/R0dF6+eWXXTE+AAAAAJRLlfg9a6bj96wBAAAAkKrh71kDAAAAgOqGWAMAAAAAAxFrAAAAAGAgYg0AAAAADESsAQAAAICBiDUAAAAAMBCxBgAAAAAGItYAAAAAwEDEGgAAAAAYiFgDAAAAAAMRawAAAABgIGINAAAAAAxErAEAAACAgYg1AAAAADAQsQYAAAAABiLWAAAAAMBAxBoAAAAAGIhYAwAAAAADEWsAAAAAYCBiDQAAAAAMRKwBAAAAgIGINQAAAAAwELEGAAAAAAYi1gAAAADAQMQaAAAAABiIWAMAAAAAAxFrAAAAAGAgYg0AAAAADESsAQAAAICBiDUAAAAAMBCxBgAAAAAGItYAAAAAwEDEGgAAAAAYiFgDAAAAAAMRawAAAABgIGINAAAAAAxErAEAAACAgYg1AAAAADAQsQYAAAAABiLWAAAAAMBAxBoAAAAAGIhYAwAAAAADEWsAAAAAYCBiDQAAAAAMRKwBAAAAgIHcXT3An4FlWZKk3NxcF08CAAAAwJUuNsHFRrgSxFolOHPmjCQpJCTExZMAAAAAMMHPP/8sX1/fK3oNm1UZyVfNFRUVKT09Xd7e3rLZbK4ep0rKzc1VSEiI0tLS5OPj4+pxqgSOWflxzMqPY1Z+HLPy45iVH8es/Dhm5ccxq5icnBw1btxYp0+flp+f3xW9FmfWKoGbm5uuueYaV4/xp+Dj48N/DMqJY1Z+HLPy45iVH8es/Dhm5ccxKz+OWflxzCrGze3Kbw/CDUYAAAAAwEDEGgAAAAAYiFiDEex2u2bMmCG73e7qUaoMjln5cczKj2NWfhyz8uOYlR/HrPw4ZuXHMauYyjxu3GAEAAAAAAzEmTUAAAAAMBCxBgAAAAAGItYAAAAAwEDEGgAAAAAYiFiDS33yySe67bbbFBwcLJvNpnXr1rl6JOPNmTNH1113nby9vdWwYUPFxMQoNTXV1WMZbeHChWrfvr3jl3pGRERo06ZNrh6rynjqqadks9k0YcIEV49itJkzZ8pmszk9wsPDXT2W8U6cOKG7775b/v7+8vLyUrt27bRr1y5Xj2Ws0NDQYt9nNptNY8aMcfVoxiosLNS0adPUtGlTeXl5KSwsTLNnzxb32Lu8M2fOaMKECWrSpIm8vLzUs2dP7dy509VjGaO0n2Ety9L06dMVFBQkLy8vRUVF6ciRI+V+H2INLpWXl6cOHTropZdecvUoVca2bds0ZswYffHFF0pMTFRBQYFuvvlm5eXluXo0Y11zzTV66qmnlJKSol27dummm25S//79dfDgQVePZrydO3fqlVdeUfv27V09SpXQpk0b/fjjj47HZ5995uqRjHb69Gn16tVLNWvW1KZNm/TVV19p3rx5qlu3rqtHM9bOnTudvscSExMlSXfeeaeLJzPX3LlztXDhQi1YsECHDh3S3Llz9fTTT+vFF1909WhG+9vf/qbExES9+eab2r9/v26++WZFRUXpxIkTrh7NCKX9DPv0009r/vz5WrRokb788kvVrl1b0dHROn/+fPneyAIMIclau3atq8eocrKysixJ1rZt21w9SpVSt25d61//+perxzDamTNnrBYtWliJiYlW7969rfHjx7t6JKPNmDHD6tChg6vHqFIeeeQR6/rrr3f1GFXa+PHjrbCwMKuoqMjVoxirX79+1ogRI5yWDRw40BoyZIiLJjLfuXPnrBo1algbNmxwWt65c2fr0UcfddFU5vr9z7BFRUVWYGCg9cwzzziWZWdnW3a73VqxYkW5Xpsza0AVl5OTI0mqV6+eiyepGgoLC7Vy5Url5eUpIiLC1eMYbcyYMerXr5+ioqJcPUqVceTIEQUHB6tZs2YaMmSIjh8/7uqRjLZ+/Xp17dpVd955pxo2bKhOnTrp1VdfdfVYVcaFCxf01ltvacSIEbLZbK4ex1g9e/ZUUlKSvv76a0nSvn379Nlnn6lv374unsxc//nPf1RYWChPT0+n5V5eXnxioAy+++47ZWRkOP3/09fXV927d1dycnK5Xsu9socD8McpKirShAkT1KtXL7Vt29bV4xht//79ioiI0Pnz51WnTh2tXbtWrVu3dvVYxlq5cqV2797N9Qnl0L17dy1dulQtW7bUjz/+qMcee0w33HCDDhw4IG9vb1ePZ6Rvv/1WCxcu1MSJEzVlyhTt3LlT999/vzw8PBQfH+/q8Yy3bt06ZWdna9iwYa4exWiTJk1Sbm6uwsPDVaNGDRUWFuqJJ57QkCFDXD2asby9vRUREaHZs2erVatWCggI0IoVK5ScnKzmzZu7ejzjZWRkSJICAgKclgcEBDieKytiDajCxowZowMHDvCnXGXQsmVL7d27Vzk5OVqzZo3i4+O1bds2gq0EaWlpGj9+vBITE4v9qSou7bd/St++fXt1795dTZo00dtvv62RI0e6cDJzFRUVqWvXrnryySclSZ06ddKBAwe0aNEiYq0MXnvtNfXt21fBwcGuHsVob7/9thISErR8+XK1adNGe/fu1YQJExQcHMz32WW8+eabGjFihBo1aqQaNWqoc+fOiouLU0pKiqtHq1b4GCRQRY0dO1YbNmzQRx99pGuuucbV4xjPw8NDzZs3V5cuXTRnzhx16NBBL7zwgqvHMlJKSoqysrLUuXNnubu7y93dXdu2bdP8+fPl7u6uwsJCV49YJfj5+enaa6/V0aNHXT2KsYKCgor9gUmrVq34+GgZHDt2TFu3btXf/vY3V49ivIcffliTJk3S4MGD1a5dO91zzz164IEHNGfOHFePZrSwsDBt27ZNZ8+eVVpamnbs2KGCggI1a9bM1aMZLzAwUJKUmZnptDwzM9PxXFkRa0AVY1mWxo4dq7Vr1+rDDz9U06ZNXT1SlVRUVKT8/HxXj2GkyMhI7d+/X3v37nU8unbtqiFDhmjv3r2qUaOGq0esEs6ePatvvvlGQUFBrh7FWL169Sr2q0e+/vprNWnSxEUTVR1LlixRw4YN1a9fP1ePYrxz587Jzc35R94aNWqoqKjIRRNVLbVr11ZQUJBOnz6tLVu2qH///q4eyXhNmzZVYGCgkpKSHMtyc3P15Zdflvt6eT4GCZc6e/as0586f/fdd9q7d6/q1aunxo0bu3Ayc40ZM0bLly/Xe++9J29vb8dnn319feXl5eXi6cw0efJk9e3bV40bN9aZM2e0fPlyffzxx9qyZYurRzOSt7d3sWsga9euLX9/f66NvIyHHnpIt912m5o0aaL09HTNmDFDNWrUUFxcnKtHM9YDDzygnj176sknn9Rdd92lHTt2aPHixVq8eLGrRzNaUVGRlixZovj4eLm786NcaW677TY98cQTaty4sdq0aaM9e/bo2Wef1YgRI1w9mtG2bNkiy7LUsmVLHT16VA8//LDCw8M1fPhwV49mhNJ+hp0wYYIef/xxtWjRQk2bNtW0adMUHBysmJiY8r1R5dywEqiYjz76yJJU7BEfH+/q0YxV0vGSZC1ZssTVoxlrxIgRVpMmTSwPDw+rQYMGVmRkpPXBBx+4eqwqhVv3l27QoEFWUFCQ5eHhYTVq1MgaNGiQdfToUVePZbz333/fatu2rWW3263w8HBr8eLFrh7JeFu2bLEkWampqa4epUrIzc21xo8fbzVu3Njy9PS0mjVrZj366KNWfn6+q0cz2qpVq6xmzZpZHh4eVmBgoDVmzBgrOzvb1WMZo7SfYYuKiqxp06ZZAQEBlt1utyIjIyv076zNsvj17QAAAABgGq5ZAwAAAAADEWsAAAAAYCBiDQAAAAAMRKwBAAAAgIGINQAAAAAwELEGAAAAAAYi1gAAAADAQMQaAAAAABiIWAMAwIVsNpvWrVvn6jEAAAYi1gAA1dawYcNks9mKPfr06ePq0QAAkLurBwAAwJX69OmjJUuWOC2z2+0umgYAgP/DmTUAQLVmt9sVGBjo9Khbt66kXz+iuHDhQvXt21deXl5q1qyZ1qxZ47T9/v37ddNNN8nLy0v+/v4aNWqUzp4967TO66+/rjZt2shutysoKEhjx451ev7kyZMaMGCAatWqpRYtWmj9+vVXd6cBAFUCsQYAwGVMmzZNsbGx2rdvn4YMGaLBgwfr0KFDkqS8vDxFR0erbt262rlzp1avXq2tW7c6xdjChQs1ZswYjRo1Svv379f69evVvHlzp/d47LHHdNddd+nf//63brnlFg0ZMkSnTp36Q/cTAGAem2VZlquHAADAFYYNG6a33npLnp6eTsunTJmiKVOmyGaz6d5779XChQsdz/Xo0UOdO3fWyy+/rFdffVWPPPKI0tLSVLt2bUnSxo0bddtttyk9PV0BAQFq1KiRhg8frscff7zEGWw2m6ZOnarZs2dL+jUA69Spo02bNnHtHABUc1yzBgCo1v7rv/7LKcYkqV69eo6/j4iIcHouIiJCe/fulSQdOnRIHTp0cISaJPXq1UtFRUVKTU2VzWZTenq6IiMjLztD+/btHX9fu3Zt+fj4KCsrq6K7BAD4kyDWAADVWu3atYt9LLGyeHl5lWm9mjVrOn1ts9lUVFR0NUYCAFQhXLMGAMBlfPHFF8W+btWqlSSpVatW2rdvn/Ly8hzPf/7553Jzc1PLli3l7e2t0NBQJSUl/aEzAwD+HDizBgCo1vLz85WRkeG0zN3dXfXr15ckrV69Wl27dtX111+vhIQE7dixQ6+99pokaciQIZoxY4bi4+M1c+ZM/fTTTxo3bpzuueceBQQESJJmzpype++9Vw0bNlTfvn115swZff755xo3btwfu6MAgCqHWAMAVGubN29WUFCQ07KWLVvq8OHDkn69U+PKlSs1evRoBQUFacWKFWrdurUkqVatWtqyZYvGjx+v6667TrVq1VJsbKyeffZZx2vFx8fr/Pnzeu655/TQQw+pfv36uuOOO/64HQQAVFncDRIAgEuw2Wxau3atYmJiXD0KAKAa4po1AAAAADAQsQYAAAAABuKaNQAALoErBQAArsSZNQAAAAAwELEGAAAAAAYi1gAAAADAQMQaAAAAABiIWAMAAAAAAxFrAAAAAGAgYg0AAAAADESsAQAAAICB/h9x+idSlLmpdgAAAABJRU5ErkJggg==", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0kAAAHWCAYAAACi1sL/AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABLhUlEQVR4nO3deVxV1cLG8ecAMohATiAqOZA5pmlqOV0rveWQqWiZOVvXHNO6dbNBG7TMeu2amjhUTjlkpqbmkFmaluWQetUcc4gcsxRwQoP9/rEDIVAQgbXP4ff9fPbnbPYZeNgv743HtfbaLsuyLAEAAAAAJElepgMAAAAAgJNQkgAAAAAgFUoSAAAAAKRCSQIAAACAVChJAAAAAJAKJQkAAAAAUqEkAQAAAEAqlCQAAAAASIWSBAAAAACpUJIAwEN1795dZcuWzdZ7X3nlFblcrpwN5GHKli2rBx54wHQMow4dOiSXy6X/+7//Mx0FAHIUJQkA8pjL5crStnr1atNRjejevbsKFSpkOoYjJJeQq21vvvmm6YgA4JF8TAcAgPxmxowZab6ePn26Vq5cme545cqVb+j7TJ48WUlJSdl670svvaTBgwff0PdHzunYsaNatGiR7njNmjUNpAEAz0dJAoA81rlz5zRff//991q5cmW64393/vx5FSxYMMvfp0CBAtnKJ0k+Pj7y8eE/EU5Rq1atTH8/AAA5h+l2AOBAd999t6pVq6bNmzfrH//4hwoWLKgXXnhBkvTZZ5+pZcuWKlmypPz8/BQZGalhw4YpMTExzWf8/Zqk1NePTJo0SZGRkfLz81OdOnW0cePGNO/N6Jokl8ul/v37a+HChapWrZr8/PxUtWpVLV++PF3+1atXq3bt2vL391dkZKQmTpyY49c5ffLJJ7rjjjsUEBCgYsWKqXPnzjpy5Eia1xw/flw9evRQ6dKl5efnp/DwcLVu3VqHDh1Kec2mTZt0//33q1ixYgoICFC5cuXUs2fPLOf44osvdPvtt8vf319VqlTR/PnzU547cOCAXC6X/vvf/6Z733fffSeXy6XZs2df/w+fgeRrpK6VJ3Wuhx56SEWKFFHBggV111136fPPP0/3uosXL+qVV17RrbfeKn9/f4WHhysqKko///xzutdm9jsFAO6EfyYEAIf6/fff1bx5cz3yyCPq3LmzwsLCJElTp05VoUKF9PTTT6tQoUL66quvNHToUMXFxentt9/O9HNnzZql+Ph4PfHEE3K5XHrrrbcUFRWlAwcOZDr6tG7dOs2fP199+/ZVUFCQxowZo3bt2umXX35R0aJFJUlbtmxRs2bNFB4erldffVWJiYl67bXXVLx48Rs/KX+ZOnWqevTooTp16mjEiBE6ceKE3n33XX377bfasmWLbrrpJklSu3bttHPnTg0YMEBly5bVyZMntXLlSv3yyy8pX993330qXry4Bg8erJtuukmHDh3KsFhkZN++ferQoYN69+6tbt26acqUKXrooYe0fPly/fOf/1T58uXVoEEDzZw5U0899VSa986cOVNBQUFq3bp1pt/n/PnzOnXqVLrjN910U5oRv8zySNKJEydUv359nT9/Xk8++aSKFi2qadOm6cEHH9S8efPUtm1bSVJiYqIeeOABrVq1So888ogGDhyo+Ph4rVy5Ujt27FBkZGTK972R3ykAcCQLAGBUv379rL//z3Hjxo0tSdaECRPSvf78+fPpjj3xxBNWwYIFrYsXL6Yc69atm1WmTJmUrw8ePGhJsooWLWr98ccfKcc/++wzS5K1ePHilGMvv/xyukySLF9fX2v//v0px7Zt22ZJssaOHZtyrFWrVlbBggWtI0eOpBzbt2+f5ePjk+4zM9KtWzcrMDDwqs9funTJCg0NtapVq2ZduHAh5fiSJUssSdbQoUMty7Ks06dPW5Kst99++6qftWDBAkuStXHjxkxz/V2ZMmUsSdann36aciw2NtYKDw+3atasmXJs4sSJliRr165daX6GYsWKWd26dbvm90j+v9nVtvXr1193nkGDBlmSrLVr16Yci4+Pt8qVK2eVLVvWSkxMtCzLsj788ENLkvXOO++ky5WUlJQmX1Z+pwDAnTDdDgAcys/PTz169Eh3PCAgIGU/Pj5ep06dUqNGjXT+/Hnt3r0708/t0KGDChcunPJ1o0aNJNlTsDLTtGnTNCMI1atXV3BwcMp7ExMT9eWXX6pNmzYqWbJkyutuueUWNW/ePNPPz4pNmzbp5MmT6tu3r/z9/VOOt2zZUpUqVUqZNhYQECBfX1+tXr1ap0+fzvCzkkeclixZosuXL193lpIlS6aMvEhScHCwunbtqi1btuj48eOSpIcfflj+/v6aOXNmyutWrFihU6dOZfk6o169emnlypXptipVqlx3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", "text/plain": [ "
" ] diff --git a/norch/autograd/__pycache__/functions.cpython-38.pyc b/norch/autograd/__pycache__/functions.cpython-38.pyc index 7a8db4b..d56a797 100644 Binary files a/norch/autograd/__pycache__/functions.cpython-38.pyc and b/norch/autograd/__pycache__/functions.cpython-38.pyc differ diff --git a/norch/autograd/functions.py b/norch/autograd/functions.py index fe31be9..74594fe 100644 --- a/norch/autograd/functions.py +++ b/norch/autograd/functions.py @@ -132,7 +132,7 @@ class SumBackward: self.keepdim = keepdim def backward(self, gradient): - input_shape = self.input[0].shape + input_shape = self.input[0].shape.copy() if self.axis == -1: # If axis is None, sum reduces the tensor to a scalar. grad_output = float(gradient.tensor.contents.data[0]) * self.input[0].ones_like() diff --git a/norch/nn/modules/__pycache__/linear.cpython-38.pyc b/norch/nn/modules/__pycache__/linear.cpython-38.pyc index 15ee462..583d8b6 100644 Binary files a/norch/nn/modules/__pycache__/linear.cpython-38.pyc and b/norch/nn/modules/__pycache__/linear.cpython-38.pyc differ diff --git a/norch/nn/modules/linear.py b/norch/nn/modules/linear.py index 2d61023..b90d845 100644 --- a/norch/nn/modules/linear.py +++ b/norch/nn/modules/linear.py @@ -2,15 +2,23 @@ from ..module import Module from ..parameter import Parameter class Linear(Module): - def __init__(self, input_dim, output_dim): + def __init__(self, input_dim, output_dim, bias=True): super().__init__() self.input_dim = input_dim self.output_dim = output_dim self.weight = Parameter(shape=[self.output_dim, self.input_dim]) - self.bias = Parameter(shape=[self.output_dim, 1]) + + if bias: + self.bias = Parameter(shape=[self.output_dim, 1]) + else: + self.bias = None def forward(self, x): - z = self.weight @ x + self.bias + if self.bias: + z = self.weight @ x + self.bias + else: + z = self.weight @ x + return z def inner_repr(self):