Skip to content

Instantly share code, notes, and snippets.

@RodrigoPrior
Last active January 27, 2016 17:00
Show Gist options
  • Save RodrigoPrior/b2bd08ca88793f9703b3 to your computer and use it in GitHub Desktop.
Save RodrigoPrior/b2bd08ca88793f9703b3 to your computer and use it in GitHub Desktop.
pybrain_digitos_example
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": "",
"signature": "sha256:12119041db79925533ceb8e4f9af967e674ead3dc798e6913200cff9b70f9500"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "code",
"collapsed": false,
"input": [
"%pylab inline\n",
"import numpy as np\n",
"import pandas as pd\n",
"from pybrain.tools.shortcuts import buildNetwork\n",
"from pybrain.structure import *\n",
"from pybrain.datasets import SupervisedDataSet\n",
"from pybrain.supervised.trainers import BackpropTrainer\n",
"from pybrain.tools.validation import Validator\n",
"from pybrain.tools.xml.networkwriter import NetworkWriter\n",
"np.set_printoptions(precision=3, suppress=True)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Populating the interactive namespace from numpy and matplotlib\n"
]
}
],
"prompt_number": 23
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Types: TanhLayer, SigmoidLayer, LinearLayer\n",
"net = buildNetwork(20, 40, 10, hiddenclass=SigmoidLayer, outclass=SigmoidLayer)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 24
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print net['in']\n",
"print net['hidden0']\n",
"print net['out']"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"<LinearLayer 'in'>\n",
"<SigmoidLayer 'hidden0'>\n",
"<SigmoidLayer 'out'>\n"
]
}
],
"prompt_number": 25
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"ds = SupervisedDataSet(20,10)\n",
"ds.addSample((0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0),(0, 0, 0, 0, 0, 0, 0, 0, 0, 1))\n",
"ds.addSample((0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0),(1, 0, 0, 0, 0, 0, 0, 0, 0, 0))\n",
"ds.addSample((0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1),(0, 1, 0, 0, 0, 0, 0, 0, 0, 0))\n",
"ds.addSample((1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1),(0, 0, 1, 0, 0, 0, 0, 0, 0, 0))\n",
"ds.addSample((1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0),(0, 0, 0, 1, 0, 0, 0, 0, 0, 0))\n",
"ds.addSample((1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0),(0, 0, 0, 0, 1, 0, 0, 0, 0, 0))\n",
"ds.addSample((0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0),(0, 0, 0, 0, 0, 1, 0, 0, 0, 0))\n",
"ds.addSample((1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0),(0, 0, 0, 0, 0, 0, 1, 0, 0, 0))\n",
"ds.addSample((0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0),(0, 0, 0, 0, 0, 0, 0, 1, 0, 0))\n",
"ds.addSample((0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1),(0, 0, 0, 0, 0, 0, 0, 0, 1, 0))\n",
"# more samples with noise\n",
"ds.addSample((0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0),(0, 0, 0, 0, 0, 0, 0, 0, 0, 1))\n",
"ds.addSample((0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0),(1, 0, 0, 0, 0, 0, 0, 0, 0, 0))\n",
"ds.addSample((0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1),(0, 1, 0, 0, 0, 0, 0, 0, 0, 0))\n",
"ds.addSample((1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1),(0, 0, 1, 0, 0, 0, 0, 0, 0, 0))\n",
"ds.addSample((1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0),(0, 0, 0, 1, 0, 0, 0, 0, 0, 0))\n",
"ds.addSample((1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0),(0, 0, 0, 0, 1, 0, 0, 0, 0, 0))\n",
"ds.addSample((0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0),(0, 0, 0, 0, 0, 1, 0, 0, 0, 0))\n",
"ds.addSample((1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0),(0, 0, 0, 0, 0, 0, 1, 0, 0, 0))\n",
"ds.addSample((0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0),(0, 0, 0, 0, 0, 0, 0, 1, 0, 0))\n",
"ds.addSample((0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1),(0, 0, 0, 0, 0, 0, 0, 0, 1, 0))"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 26
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Options: learningrate = 0.04, momentum = 0.96, weightdecay = 0.02, verbose = True\n",
"trainer = BackpropTrainer(net, ds, learningrate = 0.4)\n",
"NetworkWriter.writeToFile(net, 'init_pybrain_digitos.xml')"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 27
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# train a full epoch\n",
"# trainer.train()\n",
"\n",
"# or \n",
"\n",
"# train until convergence\n",
"# Options: maxEpochs=1000, continueEpochs=20, validationProportion=0.25\n",
"result = trainer.trainUntilConvergence(maxEpochs=1000, validationProportion=0.7)\n",
"len(result[0])"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 28,
"text": [
"160"
]
}
],
"prompt_number": 28
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Teste\n",
"# 1 as training, expected [1, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n",
"net.activate([0, 1, 0, 0, \n",
" 1, 1, 0, 0, \n",
" 0, 1, 0, 0, \n",
" 0, 1, 0, 0, \n",
" 1, 1, 1, 0])"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 29,
"text": [
"array([ 1. , 0.235, 0.025, 0.001, 0.017, 0.011, 0.823, 0.217,\n",
" 0.016, 0.02 ])"
]
}
],
"prompt_number": 29
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Teste\n",
"# 1 with 1 px noise, expected [1, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n",
"net.activate([0, 1, 0, 0, \n",
" 1, 1, 0, 1, \n",
" 0, 1, 0, 0, \n",
" 0, 1, 0, 0, \n",
" 1, 1, 1, 0])"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 30,
"text": [
"array([ 1. , 0.178, 0.023, 0. , 0.013, 0.017, 0.709, 0.494,\n",
" 0.019, 0.02 ])"
]
}
],
"prompt_number": 30
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"df = pd.DataFrame({'train': result[0], 'test': result[1]})\n",
"df.plot()\n",
"plt.ylabel('error rate')\n",
"plt.xlabel('number of epochs');"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\nGGOMqfb/ATyyn2clC+CuAAAAAElFTkSuQmCC\n",
"text": [
"<matplotlib.figure.Figure at 0x7fe02f96e7d0>"
]
}
],
"prompt_number": 31
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"NetworkWriter.writeToFile(net, 'trained_pybrain_digitos.xml')"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 32
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 32
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment