{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import os\n", "import sys\n", "sys.path.append(os.path.abspath(os.path.join('..')))\n", "from ch07_autograd.utils import Scalar, draw_graph" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "def scalar_sum(nums):\n", " \"\"\"\n", " 为了作图美观,定义基于Scalar的求和运算\n", " \"\"\"\n", " value = 0.0\n", " requires_grad = False\n", " wrt = {}\n", " for item in nums:\n", " value += item.value\n", " wrt[item] = 1.0\n", " requires_grad = requires_grad or item.requires_grad\n", " output = Scalar(value, nums, 'sum')\n", " output.requires_grad=requires_grad\n", " output.grad_wrt = wrt\n", " return output" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ "\n", "\n", "\n", "\n", "\n", "\n", "%3\n", "\n", "\n", "4463805968forward\n", "\n", "x1= 1.10\n", "\n", "\n", "4463806160forward\n", "\n", "grad=None\n", "\n", "value= 1.10\n", "\n", "*\n", "\n", "\n", "4463805968forward->4463806160forward\n", "\n", "\n", "\n", "\n", "4463806016forward\n", "\n", "x2= 2.10\n", "\n", "\n", "4463806304forward\n", "\n", "grad=None\n", "\n", "value= 4.20\n", "\n", "*\n", "\n", "\n", "4463806016forward->4463806304forward\n", "\n", "\n", "\n", "\n", "4463806064forward\n", "\n", "x3= 3.10\n", "\n", "\n", "4463806400forward\n", "\n", "grad=None\n", "\n", "value= 9.30\n", "\n", "*\n", "\n", "\n", "4463806064forward->4463806400forward\n", "\n", "\n", "\n", "\n", "4463806448forward\n", "\n", "grad=None\n", "\n", "value= 18.60\n", "\n", "sum\n", "\n", "\n", "4463806160forward->4463806448forward\n", "\n", "\n", "\n", "\n", "4463805680forward\n", "\n", "grad=None\n", "\n", "value= 2.00\n", "\n", "w2\n", "\n", "\n", "4463805680forward->4463806304forward\n", "\n", "\n", "\n", "\n", "4463805728forward\n", "\n", "grad=None\n", "\n", "value= 4.00\n", "\n", "b\n", "\n", "\n", "4463805728forward->4463806448forward\n", "\n", "\n", "\n", "\n", "4463806256forward\n", "\n", "grad=None\n", "\n", "value= 1.00\n", "\n", "sigmoid\n", "\n", "\n", "4463806304forward->4463806448forward\n", "\n", "\n", "\n", "\n", "4463805824forward\n", "\n", "grad=None\n", "\n", "value= 1.00\n", "\n", "w1\n", "\n", "\n", "4463805824forward->4463806160forward\n", "\n", "\n", "\n", "\n", "4463806400forward->4463806448forward\n", "\n", "\n", "\n", "\n", "4463805920forward\n", "\n", "grad=None\n", "\n", "value= 3.00\n", "\n", "w3\n", "\n", "\n", "4463805920forward->4463806400forward\n", "\n", "\n", "\n", "\n", "4463806448forward->4463806256forward\n", "\n", "\n", "\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "w1 = Scalar(1.0, label='w1')\n", "w2 = Scalar(2.0, label='w2')\n", "w3 = Scalar(3.0, label='w3')\n", "b = Scalar(4.0, label='b')\n", "x1 = Scalar(1.1, label='x1', requires_grad=False)\n", "x2 = Scalar(2.1, label='x2', requires_grad=False)\n", "x3 = Scalar(3.1, label='x3', requires_grad=False)\n", "h = scalar_sum([w1 * x1, w2 * x2, w3 * x3, b])\n", "y = h.sigmoid()\n", "draw_graph(y)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5" } }, "nbformat": 4, "nbformat_minor": 4 }