296 lines
89 KiB
Plaintext
296 lines
89 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# 206 Optimizers\n",
|
|
"\n",
|
|
"View more, visit my tutorial page: https://mofanpy.com/tutorials/\n",
|
|
"My Youtube Channel: https://www.youtube.com/user/MorvanZhou\n",
|
|
"\n",
|
|
"Dependencies:\n",
|
|
"* torch: 0.1.11\n",
|
|
"* matplotlib"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"metadata": {
|
|
"collapsed": true
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import torch\n",
|
|
"import torch.utils.data as Data\n",
|
|
"import torch.nn.functional as F\n",
|
|
"from torch.autograd import Variable\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"%matplotlib inline"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"<torch._C.Generator at 0x7f502d43b930>"
|
|
]
|
|
},
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"torch.manual_seed(1) # reproducible"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"metadata": {
|
|
"collapsed": true
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"LR = 0.01\n",
|
|
"BATCH_SIZE = 32\n",
|
|
"EPOCH = 12"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Generate some fake data"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<matplotlib.figure.Figure at 0x7f4ffd5388d0>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"# fake dataset\n",
|
|
"x = torch.unsqueeze(torch.linspace(-1, 1, 1000), dim=1)\n",
|
|
"y = x.pow(2) + 0.1*torch.normal(torch.zeros(*x.size()))\n",
|
|
"\n",
|
|
"# plot dataset\n",
|
|
"plt.scatter(x.numpy(), y.numpy())\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Put dataset into torch dataset"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"metadata": {
|
|
"collapsed": true
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"torch_dataset = Data.TensorDataset(data_tensor=x, target_tensor=y)\n",
|
|
"loader = Data.DataLoader(\n",
|
|
" dataset=torch_dataset, \n",
|
|
" batch_size=BATCH_SIZE, \n",
|
|
" shuffle=True, num_workers=2,)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Default network"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"metadata": {
|
|
"collapsed": true
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"class Net(torch.nn.Module):\n",
|
|
" def __init__(self):\n",
|
|
" super(Net, self).__init__()\n",
|
|
" self.hidden = torch.nn.Linear(1, 20) # hidden layer\n",
|
|
" self.predict = torch.nn.Linear(20, 1) # output layer\n",
|
|
"\n",
|
|
" def forward(self, x):\n",
|
|
" x = F.relu(self.hidden(x)) # activation function for hidden layer\n",
|
|
" x = self.predict(x) # linear output\n",
|
|
" return x"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Different nets"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"metadata": {
|
|
"collapsed": true
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"net_SGD = Net()\n",
|
|
"net_Momentum = Net()\n",
|
|
"net_RMSprop = Net()\n",
|
|
"net_Adam = Net()\n",
|
|
"nets = [net_SGD, net_Momentum, net_RMSprop, net_Adam]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Different optimizers"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 8,
|
|
"metadata": {
|
|
"collapsed": true
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"opt_SGD = torch.optim.SGD(net_SGD.parameters(), lr=LR)\n",
|
|
"opt_Momentum = torch.optim.SGD(net_Momentum.parameters(), lr=LR, momentum=0.8)\n",
|
|
"opt_RMSprop = torch.optim.RMSprop(net_RMSprop.parameters(), lr=LR, alpha=0.9)\n",
|
|
"opt_Adam = torch.optim.Adam(net_Adam.parameters(), lr=LR, betas=(0.9, 0.99))\n",
|
|
"optimizers = [opt_SGD, opt_Momentum, opt_RMSprop, opt_Adam]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 9,
|
|
"metadata": {
|
|
"collapsed": true
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"loss_func = torch.nn.MSELoss()\n",
|
|
"losses_his = [[], [], [], []] # record loss"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 10,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Epoch: 0\n",
|
|
"Epoch: 1\n",
|
|
"Epoch: 2\n",
|
|
"Epoch: 3\n",
|
|
"Epoch: 4\n",
|
|
"Epoch: 5\n",
|
|
"Epoch: 6\n",
|
|
"Epoch: 7\n",
|
|
"Epoch: 8\n",
|
|
"Epoch: 9\n",
|
|
"Epoch: 10\n",
|
|
"Epoch: 11\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<matplotlib.figure.Figure at 0x7f4ffb683470>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"# training\n",
|
|
"for epoch in range(EPOCH):\n",
|
|
" print('Epoch: ', epoch)\n",
|
|
" for step, (batch_x, batch_y) in enumerate(loader): # for each training step\n",
|
|
" b_x = Variable(batch_x)\n",
|
|
" b_y = Variable(batch_y)\n",
|
|
"\n",
|
|
" for net, opt, l_his in zip(nets, optimizers, losses_his):\n",
|
|
" output = net(b_x) # get output for every net\n",
|
|
" loss = loss_func(output, b_y) # compute loss for every net\n",
|
|
" opt.zero_grad() # clear gradients for next train\n",
|
|
" loss.backward() # backpropagation, compute gradients\n",
|
|
" opt.step() # apply gradients\n",
|
|
" l_his.append(loss.item()) # loss recoder\n",
|
|
"\n",
|
|
"labels = ['SGD', 'Momentum', 'RMSprop', 'Adam']\n",
|
|
"for i, l_his in enumerate(losses_his):\n",
|
|
" plt.plot(l_his, label=labels[i])\n",
|
|
"plt.legend(loc='best')\n",
|
|
"plt.xlabel('Steps')\n",
|
|
"plt.ylabel('Loss')\n",
|
|
"plt.ylim((0, 0.2))\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"collapsed": true
|
|
},
|
|
"outputs": [],
|
|
"source": []
|
|
}
|
|
],
|
|
"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.5.2"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 2
|
|
}
|