-
Notifications
You must be signed in to change notification settings - Fork 0
/
1
153 lines (153 loc) · 32.6 KB
/
1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"provenance": [],
"toc_visible": true,
"authorship_tag": "ABX9TyOxhl4eeWwNdnhr5NFVRkIp",
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/github/yloveati/somelittledog/blob/master/1\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "code",
"source": [
"import numpy,torch,matplotlib"
],
"metadata": {
"id": "CEojeC4x6GBX"
},
"execution_count": 7,
"outputs": []
},
{
"cell_type": "code",
"source": [
"def numerical_lim(f, x, h):\n",
" return (f(x + h) - f(x)) / h\n",
"\n",
"\n",
"def set_figsize(figsize=(3.5, 2.5)):\n",
" matplotlib.pyplot.rcParams['figure.figsize'] = figsize\n",
" matplotlib.pyplot.savefig(\"test.svg\")\n",
"def set_axes(axes, xlabel, ylabel, xlim, ylim, xscale, yscale, legend):\n",
" axes.set_xlabel(xlabel)\n",
" axes.set_ylabel(ylabel)\n",
" axes.set_xscale(xscale)\n",
" axes.set_yscale(yscale)\n",
" axes.set_xlim(xlim)\n",
" axes.set_ylim(ylim)\n",
" if legend:\n",
" axes.legend(legend)\n",
" axes.grid()\n",
"\n",
"\n",
"\n",
"def plot(X, Y=None, xlabel=None, ylabel=None, legend=None, xlim=None,\n",
" ylim=None, xscale='linear', yscale='linear',\n",
" fmts=('-', 'm--', 'g-.', 'r:'), figsize=(3.5, 2.5), axes=None):\n",
" if legend is None:\n",
" legend = []\n",
" set_figsize(figsize)\n",
" axes = axes if axes else matplotlib.pyplot.gca()\n",
" def has_one_axis(X):\n",
" return (hasattr(X, \"ndim\") and X.ndim == 1 or isinstance(X, list)\n",
" and not hasattr(X[0], \"__len__\"))\n",
" if has_one_axis(X):\n",
" X = [X]\n",
" if Y is None:\n",
" X, Y = [[]] * len(X), X\n",
" elif has_one_axis(Y):\n",
" Y = [Y]\n",
" if len(X) != len(Y):\n",
" X = X * len(Y)\n",
" axes.cla()\n",
" for x, y, fmt in zip(X, Y, fmts):\n",
" if len(x):\n",
" axes.plot(x, y, fmt)\n",
" else:\n",
" axes.plot(y, fmt)\n",
" set_axes(axes, xlabel, ylabel, xlim, ylim, xscale, yscale, legend)\n"
],
"metadata": {
"id": "ofGgB4WU6Kv1"
},
"execution_count": 23,
"outputs": []
},
{
"cell_type": "code",
"source": [
"def f(x):\n",
" return x**2\n",
"\n",
"h = 0.1\n",
"for i in range(5):\n",
" print(f'h={h:.5f}, numerical limit={numerical_lim(f, 1, h):.5f}')\n",
" h *= 0.1\n",
"\n",
"x = numpy.arange(0, 3, 0.1)\n",
"plot(x, [f(x), 2 * x -1], 'x', 'f(x)', legend=['f(x)', 'Tangent line (x=1)'])"
],
"metadata": {
"id": "SZXfAkiD8ABf"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"x = torch.linspace(0, 3*numpy.pi, 128)\n",
"x.requires_grad_(True)\n",
"y = torch.sin(x) # y = sin(x)\n",
"\n",
"y.sum().backward()\n",
"\n",
"matplotlib.pyplot.plot(x.detach(), y.detach(), label='y=sin(x)')\n",
"matplotlib.pyplot.plot(x.detach(), x.grad, label='∂y/∂x=cos(x)') # dy/dx = cos(x)\n",
"matplotlib.pyplot.legend(loc='upper right')\n",
"matplotlib.pyplot.show()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 253
},
"id": "eo9rBNWpBZzk",
"outputId": "ec9017e7-a31e-461f-ffce-034c12210b04"
},
"execution_count": 31,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 350x250 with 1 Axes>"
],
"image/png": "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\n"
},
"metadata": {}
}
]
}
]
}